Форум
Написать нам
Страница 1 из 212»
Модератор форума: Peter 
Форум MMB » Всё о программе Neo Book » Вопросы и ответы по NB » Сохранить Как...
Сохранить Как...
mishemДата: Суббота, 04 Апрель 2009, 20:41 | Сообщение # 1
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
При команде
Code
FileSaveBox "Сохранить базу как...." "Database Files(*.dbf)|*.dbf|CSV (разделители - запятые) (*.csv)|*.csv" "[LastDir]" "[FileName]"
Как сделать что бы файл сохранялся с тем расширением, которое было выбрано?

Я люблю думать что умею рисовать
 
PeterДата: Суббота, 04 Апрель 2009, 21:08 | Сообщение # 2
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
Code
If "[FileName]" "<>" ""
   ExtractFileExt "[FileName]""[Ext]"
EndIf

Добавлено (04 Апрель 2009, 21:08)
---------------------------------------------
Проще:

Quote
NeoBook 5 Version History

5.6.2 - November 24, 2008

Enhancements
....

Fixes

.........
The FileSaveBox action now correctly appends the appropriate file extension if the user selects one of the supplied file masks.



Чем дорожу... Чем рискую на свете я....
Мигом одним! Только мигом одним!...

WHITESNAKE St.Petersburg - 11.12.2008
 
mishemДата: Суббота, 04 Апрель 2009, 22:05 | Сообщение # 3
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
Все равно не пойму. Если файл новый без разрешения, то эта команда не сможет извлечь разрешение. Японимаю так, мне нужно понять какая переменная отвечает за
Code
Database Files(*.dbf)|*.dbf
или
Code
CSV (разделители - запятые) (*.csv)|*.csv
И
Code

If "[FileName]" "<>" ""
      If "Переменная которую не могу понять  <img src="http://s2.ucoz.net/sm/15/smile.gif" border="0" align="absmiddle" alt="smile"> " "=" "Database Files(*.dbf)|*.dbf"  
И выполнить команду на сохранение или  
If "[FileName]" "<>" ""
      If "Переменная которую не могу понять  <img src="http://s2.ucoz.net/sm/15/smile.gif" border="0" align="absmiddle" alt="smile"> " "=" "CSV (разделители - запятые) (*.csv)|*.csv"  
И выполнить команду на импорт.

Или я не в том направлении иду?

Добавлено (04 Апрель 2009, 21:26)
---------------------------------------------
Блин зря смайлик вставил в код, только путаница получилась.[code]
If "[FileName]" "<>" ""
If "Переменная которую не могу понять " "=" "Database Files(*.dbf)|*.dbf"
И выполнить команду на сохранение или
If "[FileName]" "<>" ""
If "Переменная которую не могу понять " "=" "CSV (разделители - запятые) (*.csv)|*.csv"
И выполнить команду на импорт.

Добавлено (04 Апрель 2009, 21:29)
---------------------------------------------

Code
NeoBook 5 Version History  
5.6.2 - November 24, 2008  

Enhancements  
....  

Fixes  

.........  
 The FileSaveBox action now correctly appends the appropriate file extension if the user selects one of the supplied file masks.

Это вообще не понял happy

Добавлено (04 Апрель 2009, 22:05)
---------------------------------------------

Code
The FileSaveBox action now correctly appends the appropriate file extension if the user selects one of the supplied file masks.

Если правильно понял перевод, нужно выбирать одну маску, а не несколько?

Я люблю думать что умею рисовать
 
PeterДата: Суббота, 04 Апрель 2009, 23:35 | Сообщение # 4
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
Команда FileSaveBox сама по себе ничего не сохраняет, а только позволяет выбрать имя сохраняемого файла.
После того, как вы выберите файл в диалоговом окне FileSaveBox, в переменной [FileName] у вас окажется ПОЛНОЕ (с путем) имя файла, а НЕ расширение.
Вот из него надо будет извлечь расширение:
Code
ExtractFileExt "[FileName]""[Ext]"

и добавить его ( [Ext] ) к имени сохраняемого файла, или заменить расширение.
Все это для случая если вы сохраняете файл, например, посредством FileCopy.
Если же вы создаете новый файл (например даже текстовой), то расширение подставится автоматически то, которое было у выбранного в диалоге файла .
Quote (mishem)
И выполнить команду на импорт.

wacko
ЧТО вы выбираете в диалоге: базу В которую идет импорт, или файл, ИЗ которого импортируется информация?
Вы же тут НЕ сохраняете новый файл!
Вообще-то для этого сгодится просто FileOpenBox..
SaveBox не нужен, но можно и его... Только геморра больше...
Quote (mishem)
Это вообще не понял

Не смертельно...
По-русски:
Версия 5.6.2
Исправления:
Команда FileSaveBox теперь правильно добавляет присвоенное расширение файла, если пользователь выбрал одно из доступных по маске расширений.

Просто раньше не всегда работало, если в маске было несколько расширений.

Добавлено (04 Апрель 2009, 22:52)
---------------------------------------------

Quote (mishem)
Если правильно понял перевод, нужно выбирать одну маску, а не несколько?

См. выше

Добавлено (04 Апрель 2009, 23:35)
---------------------------------------------
Сейчас чуть больше подумал вот над этим:

Quote (mishem)
If "[FileName]" "<>" ""
If "Переменная которую не могу понять " "=" "Database Files(*.dbf)|*.dbf"
И выполнить команду на сохранение или
If "[FileName]" "<>" ""
If "Переменная которую не могу понять " "=" "CSV (разделители - запятые) (*.csv)|*.csv"
И выполнить команду на импорт.

Как-то очень хитрО выглядит: на одном и том же "контроле", в зависмости от типа выбраннго файла, выполняются две совершенно разные(!) по сути операции... wacko
Впрочем, почему бы и нет?
Вам виднее...

Чем дорожу... Чем рискую на свете я....
Мигом одним! Только мигом одним!...

WHITESNAKE St.Petersburg - 11.12.2008
 
mishemДата: Воскресенье, 05 Апрель 2009, 00:58 | Сообщение # 5
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
Уже поспал пару часов happy , а то сидел засыпал. думал по этому ни чего не понимаю happy Неее. Все равно. happy Или я не правильно объясняю, или все же чего то не догоняю. happy Начну сначала. Кпримеру. Открываю файл с расширением dbf. Поработал, и автоматом его закрываю. Программа спрашивает, Сохранить? Жму ОК. Она копирует файл и все хорошо. Но я через экспорт допустим опять же. открываю файл csv. Произвожу те же действия, то есть пороботал. автоматом жму закрыть. Она видит что файл изменен и спрашивает Сохранить? Жму ОК, и она мне его сохраняет . но в формате dbf. А мне нужно чтобы она скопировала его опять в тот же csv файл. Можно создать команды Изавлечь путь, извлечь расширение и импортировать назад в тот же файл. При экспорте он же привратился уже в файл базы, по этому мы опять должны его импортировать. Все это хорошо когда есть имя файла с расширением. Но когда создан новый файл, и проделаны действия описанные выше , тут как раз и открывается окно Сохранить Как... Я вписываю имя, ниже выбираю расширение (что бы его не писать вручную) и сохранюя. Или же, порработал с форматом dbf , но сохранить мне его нужно уже в csv не вписываю вручную расширение, а просто выбором формата. Вот я и не могу понять, как программе дать понять какое расширение я выбрал?
Code
Как-то очень хитрО выглядит: на одном и том же "контроле", в зависмости от типа выбраннго файла, выполняются две совершенно разные(!) по сути операции...

Наверно не посильная задача получается. Хочу например как в exele, там же идет конвертация файла при выборе типа файла. И на одном и том же "контроле", несколько преобразований форматов.

Добавлено (05 Апрель 2009, 00:58)
---------------------------------------------

Code
DefineVar "[FileName]" "String" "" "Local" ""
FileSaveBox "Сохранить базу как...." "Database Files(*.dbf)|*.dbf|CSV (разделители - запятые) (*.csv)|*.csv" "[LastDir]" "[FileName]"
If "[FileName]" "=" ""
    Return
EndIf
If "[FileName]" "<>" ""
   FileCopy "BASES" "[FileName]"
   ExtractFileExt "[FileName]" "[Ext]"
      If "[Ext]" "=" ".DBF"
          ChangeFileExt "[FileName]" ".dbf" "[FileName]"
          FileCopy "BASES" "[FileName]"
          FileCopy "[PubDir]BASES_DYBL" "[PubDir]BASE_DYBL"
     EndIf
         If "[Ext]" "=" ".CSV"
          GoSub "EXPORT"
         EndIf
EndIf
Return
Вот, что то типа этого делаю. Может что то просто не дописываю. До этог были другие варианты happy По всякому пробовал happy

Я люблю думать что умею рисовать
 
PeterДата: Воскресенье, 05 Апрель 2009, 02:41 | Сообщение # 6
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
Quote (mishem)
она мне его сохраняет . но в формате dbf. А мне нужно чтобы она скопировала его опять в тот же csv файл.

Какой формат ВЫ сами укажете, в том и будет сохранено!!!
Quote (mishem)
При экспорте он же привратился уже в файл базы,

wacko wacko .. wacko

ЧУДЕСА ! biggrin

Quote (mishem)
Вот я и не могу понять, как программе дать понять какое расширение я выбрал?

Сохранить КАК....
А вот уж КАК вы будете определять/выбирать расширение - на ВАШЕ усмотрение!

Если честно, то я никак не могу понять в ЧЕМ проблема? wacko
Ну вот хоть какой-то код появился наконец.
Давайте по-порядку...

Quote (mishem)
DefineVar "[FileName]" "String" "" "Local" ""
FileSaveBox "Сохранить базу как...." "Database Files(*.dbf)|*.dbf|CSV (разделители - запятые) (*.csv)|*.csv" "[LastDir]" "[FileName]"

тут все более-менее ясно...
Дальше...
Quote (mishem)
If "[FileName]" "=" ""
Return
EndIf

Это - совершенно лишнее! Можно (и нужно!) убрать.
Дальше..
Quote (mishem)
If "[FileName]" "<>" ""
FileCopy "BASES" "[FileName]"
ExtractFileExt "[FileName]" "[Ext]"

Во-первых, что такое BASES ?
Команде FileCopy требуется имя файла, или переменная, содержащая полное (с путем) имя.
Во-вторых, вы выполняете эту команду один раз, затем извлекаете расширение файла, затем
Quote (mishem)
If "[Ext]" "=" ".DBF"
ChangeFileExt "[FileName]" ".dbf" "[FileName]"

меняете расширение файла САМО на СЕБЯ ( wacko ), и:
Quote (mishem)
FileCopy "BASES" "[FileName]"

ПОВТОРНО копируете базу !
Зачем? ..
Я кое-что подправил в логике:
Code
DefineVar "[FileName]" "String" "" "Local" ""
FileSaveBox "Сохранить базу как...." "Database Files(*.dbf)|*.dbf|CSV (разделители - запятые) (*.csv)|*.csv" "[LastDir]" "[FileName]"
.If "[FileName]" "=" ""
.    Return
.EndIf
If "[FileName]" "<>" ""
              .FileCopy "BASES" "[FileName]"
              ExtractFileExt "[FileName]" "[Ext]"
              If "[Ext]" "=" ".DBF"
                 .ChangeFileExt "[FileName]" ".dbf" "[FileName]"
                 FileCopy "BASES" "[FileName]"
                 FileCopy "[PubDir]BASES_DYBL" "[PubDir]BASE_DYBL"
              EndIf
              If "[Ext]" "=" ".CSV"
                 GoSub "EXPORT"
              EndIf
EndIf
Return

Ненужные вещи просто закомментировал.
Но это еще не все, т.к. до сих пор непонятно ЧТО и КАК должно открываться, импортироваться и копироваться-сохраняться?...

Уточнение: Для FileCopy расширение извлекать-дополнять не надо, если вы сохраняете (копируете) файл под ТЕМ ЖЕ именем, какое выбрали.
В этом случае расширение подставится автоматически вместе с именем файла.
Диалоги FileOpenBox и FileSaveBox работают совершенно одинаково, за одним исключением: FileSaveBox запросит подтверждение на перезапись, если выбран существующий на диске файл.

Добавлено (05 Апрель 2009, 02:27)
---------------------------------------------

Quote (mishem)
Наверно не посильная задача получается. Хочу например как в exele, там же идет конвертация файла при выборе типа файла. И на одном и том же "контроле", несколько преобразований форматов.

К своему великому стыду(?) должен признаться в том, что Excel я ВООБЩЕ не знаю, и никогда НЕ ЗНАЛ!
И изучать его (по крайней мере в обозримом будущем) НЕ намерен!
Он мне просто НЕ НУЖЕН !
Но, ничего непосильного в вашей задаче "автоматической конвертации" нет!
В том коде, о котором я упоминал, никакой "конвертации" мне узреть не удалось: сохранение базы и импорт - совершенно разные вещи.
Может вы имели ввиду "экспорт"?
Тогда это уже "теплее"....

Чем дорожу... Чем рискую на свете я....
Мигом одним! Только мигом одним!...

WHITESNAKE St.Petersburg - 11.12.2008
 
mishemДата: Воскресенье, 05 Апрель 2009, 04:13 | Сообщение # 7
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
Quote (Peter)
При экспорте он же привратился уже в файл базы,

..


Выразился не правильно. Ну.... Вы меня поняли happy
Quote (Peter)
If "[FileName]" "=" ""
Return
EndIf

Это - совершенно лишнее! Можно (и нужно!) убрать.


В моем случае не лишние. У меня открывается два файла BASES и BASES_DYBL. BASES это файл. в который копируется файл при открытии. Мы с Вами эту тему как то обсуждали. Содержимое файла копируется в BASES , производятся изменения . После из BASES копируем обратно в файл, а файл BASES по мере надобности удаляется что бы очистить содержимое. BASES_DYBL это файл который содержит всю информацию которая находится в файлах ранее созданных и сохраненных по отдельности. Так вот если при открытии файла нажимается Отменить, и стоит эта команда что бы файл BASES_DYBL не открывался. BASES и BASES_DYBL. работают синхронно. Если в BASES добавляется или удаляется информация, она так же добовляетс или удаляется в BASES_DYBL.
Надеюсь понятно объяснил, хотя если б мне так объяснили бы, не понял happy
Quote (Peter)
меняете расширение файла САМО на СЕБЯ

В том то и дело, что расширения пока ни какого нет sad
Quote (Peter)
должен признаться в том, что Excel я ВООБЩЕ не знаю, и никогда НЕ ЗНАЛ!

Ну это просто как пример взял. Возьмите любое другое приложение, где есть возможность сохранения одного и того же файла в разных форматах.
Quote (Peter)
Может вы имели ввиду "экспорт"?

Ну наверно Да happy Я с Русским то особо не дружу, а уж с языком програмирования и с иностранными подавно. happy

Я люблю думать что умею рисовать
 
PeterДата: Воскресенье, 05 Апрель 2009, 06:18 | Сообщение # 8
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
Quote (mishem)
Выразился не правильно. Ну.... Вы меня поняли

Гм..
С трудом-с... С трудом-с... biggrin
Со мной-то такая манера "объяснений" ещё кое-как прокатит, а вот с NeoBook.... biggrin
Quote (mishem)
В моем случае не лишние. У меня открывается два файла BASES и BASES_DYBL. BASES

Гм...
Это не имеет значения для того скрипта, который вы мне продемонстрировали.
Вообще-то, этот момент - принципиальный!
Смотрите:
Code
If "[FileName]" "=" ""    
       Return    
EndIf

Здесь, если переменная [FileName] равна "пустоте", происхожит прерывание хода скрипта, и ВСЕ, что идет после Return выполнено НЕ будет.
Проще говоря, если [FileName] будет пустой, то НИЧЕГО не будет выполнено ВООБЩЕ, т.к. скрипт прервется, не дойдя до конца.
Хорошо... Понятно....
Далее:
Code
If "[FileName]" "<>" ""    
.......
EndIf

Т.е., если [FileName] НЕ равна "пустоте", то будет выполнено все до EndIf.
Тоже красиво!... biggrin
Но, оно ТОЖЕ НЕ будет выполнено, если [FileName] окажется ПУСТОЙ!
В ОБОИХ случаях (условиях) НИЧЕГО НЕ БУДЕТ ВЫПОЛНЕНО, если [FileName] окажется пустой!
Но, во втором случае в условие заложена "полезная работа", а первое - "пустышка"!
Зачем тогда вставлять лишнее (первое) условие?
wacko wacko wacko .. wacko
Quote (mishem)
В том то и дело, что расширения пока ни какого нет

Верно!
Я почему-то держал в уме предыдущий скрипт, а там [FileName] прилетает (С РАСШИРЕНИЕМ) из FileSaveBox... wacko
Тогда тем-более: такой скрипт В ПРИНЦИПЕ алогичен!
Code
ExtractFileExt "[FileName]" "[Ext]"    
           If "[Ext]" "=" ".DBF"

Получается, что вы пытаетесь получить расширение оттуда, где его по-просту НЕТ? wacko
Еще раз:
Откуда берется переменная [FileName] ?

Чем дорожу... Чем рискую на свете я....
Мигом одним! Только мигом одним!...

WHITESNAKE St.Petersburg - 11.12.2008
 
mishemДата: Воскресенье, 05 Апрель 2009, 13:48 | Сообщение # 9
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
Quote (Peter)
Т.е., если [FileName] НЕ равна "пустоте", то будет выполнено все до EndIf.
Тоже красиво!...
Но, оно ТОЖЕ НЕ будет выполнено, если [FileName] окажется ПУСТОЙ!

Все правильно. [FileName] может оказаться пустой в том случае если человек передумал сохранять, а решил продолжить работать дальше .Но это сейчас не столь важно. В данный момент я вставил Ваш исправленный код без этой строки. И все равно тишина.
Quote (Peter)
Я почему-то держал в уме предыдущий скрипт, а там [FileName] прилетает (С РАСШИРЕНИЕМ) из FileSaveBox...

Верно. Но не прилетает. Имя файла есть, а расширения нет. sad Ни какого
.
Quote (Peter)
Еще раз:
Откуда берется переменная [FileName] ?

Из FileSaveBox... Но, какое бы я расширение не выбрал, оно не сохраняется с именем файла в [FileName] А вот почему ? Я как раз и не пойму.

Quote (Peter)
После того, как вы выберите файл в диалоговом окне FileSaveBox, в переменной [FileName] у вас окажется ПОЛНОЕ (с путем) имя файла, а НЕ расширение

Quote
окажется ПОЛНОЕ (с путем) имя файла
есть, но без расширения happy Отсюда все остальные команды не выполняются.
Quote (Peter)
Code
ExtractFileExt "[FileName]" "[Ext]"
If "[Ext]" "=" ".DBF"

Получается, что вы пытаетесь получить расширение оттуда, где его по-просту НЕТ?


Получается. Но почему его там нет? Я ввел имя файла, выбрал маску расширения. Имя есть, расширения нет. happy Мистика ! happy

Добавлено (05 Апрель 2009, 13:48)
---------------------------------------------
Peter, Вопрс решен. Версия 5.5.4 не добавляет расширение. В 5.6 все пошло. Столько времени потерял. sad Эх, кто б перевел 5.6 happy
Вернусь теперь к этому вопросу.

Quote (Peter)
Quote (mishem)
В моем случае не лишние. У меня открывается два файла BASES и BASES_DYBL. BASES

Гм...
Это не имеет значения для того скрипта, который вы мне продемонстрировали.


Вы правы.Просто по мере продолжения, у меня происходит много изменений. Когда вставлял эту команду, она тогда зачем то нужна была. Потом при изменениях циклюсь на другом вопросе, а на нее не обращаю внимания. Вроде не мешает. happy Чем дальше иду, тем больше начинаю запутываться. Особенно когда сталкиваешься с таким вопросом, где вроде бы все правильно делаешь, а почему то не работает.Начинаешь пробывать другие варианты, и забываешь, где и что зачем писал. happy Вы в какойто теме написали, что пробывали заняться переводом 5.6, и как бы не взначай спросили нужно ли это. НУЖНО. happy Эх, кто б перевел 5.6 happy happy

Я люблю думать что умею рисовать
 
PeterДата: Воскресенье, 05 Апрель 2009, 21:04 | Сообщение # 10
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
Quote (mishem)
Версия 5.5.4 не добавляет расширение.

А у меня ДОБАВЛЯЕТ... wacko
Ну, видимо не зря иальчишки из NeoSoft написАли в истории версий к 5.6.2 об исправлении это глюка.
В конце-концов, вместо SaveBox можно использовать и OpenBox, т.к. в обоих случаях возращается просто имя файла. wink
Quote (mishem)
НУЖНО

Эхе-хе...
Тут потребуется делать русификатор "с нуля", т.к. предыдущие переводы не подойдут (даже в качестве основы) в принципе - очень разные экзешники у версий!
А это работы - "выше крыши"!
Да и по-правде говоря, у меня полно более интересных (лично мне) идей-проектов!
Надо будет подумать...

Чем дорожу... Чем рискую на свете я....
Мигом одним! Только мигом одним!...

WHITESNAKE St.Petersburg - 11.12.2008
 
mishemДата: Воскресенье, 05 Апрель 2009, 21:24 | Сообщение # 11
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
Quote (Peter)
А это работы - "выше крыши"!

Я бы предложил свою помощь, но даже не знаю чем бы мог быть полезен sad

Добавлено (05 Апрель 2009, 21:24)
---------------------------------------------
У меня вот еще какой вопрос. Между делом вспоминаю про него, но ни как не могу придумать как это делается. Как то раз получилось, думал потом к нему вернусь, и забыл как делал:( happy
Короче нужно чтобы при открытии FileSaveBox в строке Имя файла было сразу уже вбито имя из переменной.


Я люблю думать что умею рисовать
 
PeterДата: Воскресенье, 05 Апрель 2009, 21:58 | Сообщение # 12
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
Quote (mishem)
нужно чтобы при открытии FileSaveBox в строке Имя файла было сразу уже вбито имя из переменной.

К сожалению, не получится! cry
Я уже и сам как-то пробвал...
Разработчики NB явно модернизировали стандартные дэлфийские диалоги, и, возможно, поставили "на автомат" очистку поля в момент открытия диалога, и если файл НЕ выбран, то переменная, в которой раньше было имя файла, очищается. Не замечали?..
Но, с другой стороны, это даже лучше, т.к. пользователю придется ОБЯЗАТЕЛЬНО выбрать файл прежде, чем нажать "Сохранить".
Своего рода, защита от дурака!
А может это и глюк какой, т.к. например, в Дэлфи это поле при открытии диалога НЕ очищается...
Quote (mishem)
Я бы предложил свою помощь

Спасибо, но...
Подобные дела пишутся в исключительно в одиночку...
Если только какие советы по переводу, но в этом необходимости тоже нет...
Может и соберусь я с силами. Кто знает...

Чем дорожу... Чем рискую на свете я....
Мигом одним! Только мигом одним!...

WHITESNAKE St.Petersburg - 11.12.2008
 
mishemДата: Воскресенье, 05 Апрель 2009, 22:08 | Сообщение # 13
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
Quote (Peter)
К сожалению, не получится!

Но у меня как то получилось. Но не из переменной, это точно. То есть я в какой то команде, где то, что то вписал. happy И при открытии вот тоже не помню, то ли Open, то ли SaveBox имя уже было вписано.

Я люблю думать что умею рисовать
 
PeterДата: Воскресенье, 05 Апрель 2009, 23:22 | Сообщение # 14
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
Quote (mishem)
Но у меня как то получилось.

Уверены?...
Тогда зачем спрашивать?... wacko
А получилось у вас видмио, не с OpenFileBox или SaveFileBox, а с FolderBox.
Там это действительно работает.
Впрочем, если вы так уверены, то... попробуйте самостоятельно найти ответ.
Потом, надеюсь, поделитесь результатами?... wink

Чем дорожу... Чем рискую на свете я....
Мигом одним! Только мигом одним!...

WHITESNAKE St.Petersburg - 11.12.2008
 
mishemДата: Воскресенье, 05 Апрель 2009, 23:34 | Сообщение # 15
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
Quote (Peter)
А получилось у вас видмио, не с OpenFileBox или SaveFileBox, а с FolderBox.

Уверен что с FolderBox не работал ни разу smile В остальном не очень happy

Я люблю думать что умею рисовать
 
mishemДата: Воскресенье, 05 Апрель 2009, 23:47 | Сообщение # 16
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
Похоже нашел, почему вставлял команду
Code
If "[FileName]" "=" ""  
     Return  
EndIf

Опять глюк, или у меня не правильно?
Code
If "[GOROD][DATA][PRODAVEC]" "<>" ""
      GoSub "SAVE_ALL"
EndIf
If "[FileName]" "<>" ""
               dbfStrReplace "[PubDir]BASES" "GOROD" "[GOROD2]" "[GOROD]"
               dbfStrReplace "[PubDir]BASES" "DATA" "[DATA2]" "[DATA]"
               dbfStrReplace "[PubDir]BASES" "PRODAVEC" "[PRODAVEC2]" "[PRODAVEC]"
               StrIns "[BASES.DATA]" "" "" "[DATA1]"
               StrIns "[BASES.GOROD]" "" "" "[GOROD1]"
               StrIns "[BASES.PRODAVEC]" "" "" "[PRODAVEC1]"
EndIf
         CloseCustomWindow "Container23"
Прикрепления: 8105829.gif(11Kb)


Я люблю думать что умею рисовать
 
PeterДата: Воскресенье, 05 Апрель 2009, 23:47 | Сообщение # 17
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
Quote (mishem)
Уверен что с FolderBox не работал ни разу

Это дело поправимое...
Ещё поработаете и не раз!... biggrin
Quote (mishem)
В остальном не очень

Ну, вот и есть повод развеять свои сомнения.
Ждем-с результат изысканий...
Серьезно!

Чем дорожу... Чем рискую на свете я....
Мигом одним! Только мигом одним!...

WHITESNAKE St.Petersburg - 11.12.2008
 
mishemДата: Воскресенье, 05 Апрель 2009, 23:52 | Сообщение # 18
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
Quote (Peter)
Ждем-с результат изысканий...
Серьезно!

Я и не собираюсь сдаваться happy
Просто в версии 5.4 стал сомневаться. Толком то всего еще не понимаю, а тут теперь не знаешь, ни то сам не прав , ни то программа sad

Я люблю думать что умею рисовать
 
PeterДата: Понедельник, 06 Апрель 2009, 00:03 | Сообщение # 19
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
Quote (mishem)
Опять глюк, или у меня не правильно?

Гм...
Если вы полагаете , что я - телепат, то жестоко ошибаетесь, т.к. я, поверьте на слово, не столь одарен природой! biggrin
Чтобы что-то оценить нужно знать: ЧТО и ДЛЯ ЧЕГО?
Здесь вы мне показывате уже совершенно иной скрипт, отличный от предыдущего и оторванный от отсталных частей программы!
А вот это:
Code
If "[FileName]" "=" ""   
      Return   
EndIf

у вас находилось ранее совершенно в другом месте!
К тому же, сейчас ситуация иная, т.к. перед:
Code
If "[FileName]" "<>" ""  

есть вот это:
Code
If "[GOROD][DATA][PRODAVEC]" "<>" ""  
       GoSub "SAVE_ALL"  
EndIf

Не находите?

Чем дорожу... Чем рискую на свете я....
Мигом одним! Только мигом одним!...

WHITESNAKE St.Petersburg - 11.12.2008
 
mishemДата: Понедельник, 06 Апрель 2009, 00:13 | Сообщение # 20
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
Вы прикрепление видели? Я извиняюсь, думал там понятно. GoSub "SAVE_ALL" сдесь срабатывает If "[FileName]" "<>" "" , а дальше все команды выполняются, хоть и переменная [FileName] пустая. Почему? Из за этого я и ставил
Code

If "[FileName]" "=" ""    
       Return    
EndIf


Я люблю думать что умею рисовать
 
PeterДата: Понедельник, 06 Апрель 2009, 00:19 | Сообщение # 21
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
Quote (mishem)
Я и не собираюсь сдаваться

Правильно - "Наши" НЕ СДАЮТСЯ!
Только считаю своим наипервейшим долгом и святой обязанностью заранее вас предупредить: на "Звезду Героя" особо расчитывать не стОит!...
biggrin

Добавлено (06 Апрель 2009, 00:19)
---------------------------------------------

Quote (mishem)
Вы прикрепление видели?

Пардон! Проглядел... redface
Сейчас посмотрю..

Чем дорожу... Чем рискую на свете я....
Мигом одним! Только мигом одним!...

WHITESNAKE St.Petersburg - 11.12.2008
 
mishemДата: Понедельник, 06 Апрель 2009, 00:21 | Сообщение # 22
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
Quote (Peter)

Правильно - "Наши" НЕ СДАЮТСЯ!
Только считаю своим наипервейшим долгом и святой обязанностью заранее вас предупредить: на "Звезду Героя" особо расчитывать не стОит!...

happy

Я люблю думать что умею рисовать
 
PeterДата: Понедельник, 06 Апрель 2009, 00:30 | Сообщение # 23
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
Это - лог отладчика!
Нужен сам код!

Добавлено (06 Апрель 2009, 00:24)
---------------------------------------------
ОК!
Попробую вникнуть в лог...

Добавлено (06 Апрель 2009, 00:30)
---------------------------------------------
Нет!
Давайте ВЕСЬ код ПОСЛЕДОВАТЕЛЬНО, начиная с PushButton35> LeftClick плюс Subroutine SAVE_ALL !
Чего-то там не хватает, судя по отладчику!


Чем дорожу... Чем рискую на свете я....
Мигом одним! Только мигом одним!...

WHITESNAKE St.Petersburg - 11.12.2008
 
mishemДата: Понедельник, 06 Апрель 2009, 00:38 | Сообщение # 24
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
Quote (Peter)
Давайте ВЕСЬ код ПОСЛЕДОВАТЕЛЬНО, начиная с PushButton35> LeftClick плюс Subroutine SAVE_ALL

Code

:SAVE_ALL
DefineVar "[FileName]" "String" "" "Local" ""
FileOpenBox "Сохранить базу как...." "Database Files(*.dbf)|*.dbf|CSV (разделители - запятые) (*.csv)|*.csv" "[LastDir]" "[FileName]" ""
EndIf
If "[FileName]" "<>" ""
          ExtractFilePath "[FileName]" "[Result]"
          FileList "[Result]*.DBF" "Files+Folders" "[TableList]"
          ChangeFileExt "[FileName]" ".dbf" "[FileName]"
          FileCopy "BASES" "[FileName]"
          FileCopy "[PubDir]BASES_DYBL" "[PubDir]BASE_DYBL"
EndIf
Return

Quote (mishem)
If "[GOROD][DATA][PRODAVEC]" "<>" ""
GoSub "SAVE_ALL"
EndIf
If "[FileName]" "<>" ""
dbfStrReplace "[PubDir]BASES" "GOROD" "[GOROD2]" "[GOROD]"
dbfStrReplace "[PubDir]BASES" "DATA" "[DATA2]" "[DATA]"
dbfStrReplace "[PubDir]BASES" "PRODAVEC" "[PRODAVEC2]" "[PRODAVEC]"
StrIns "[BASES.DATA]" "" "" "[DATA1]"
StrIns "[BASES.GOROD]" "" "" "[GOROD1]"
StrIns "[BASES.PRODAVEC]" "" "" "[PRODAVEC1]"
EndIf
CloseCustomWindow "Container23"

Я сдесь не ставил
Code
If "[FileName]" "=" ""     
        Return     
EndIf

А так , поставил бы после строки
Code
If "[GOROD][DATA][PRODAVEC]" "<>" ""


Я люблю думать что умею рисовать
 
PeterДата: Понедельник, 06 Апрель 2009, 00:40 | Сообщение # 25
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
Сейчас гляну, но для начала посмотрите прикрепления.

Прикрепления: 8321225.gif(11Kb)


Чем дорожу... Чем рискую на свете я....
Мигом одним! Только мигом одним!...

WHITESNAKE St.Petersburg - 11.12.2008
 
mishemДата: Понедельник, 06 Апрель 2009, 00:46 | Сообщение # 26
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
Первоначально было так
Code

If "[GOROD][DATA][PRODAVEC]" "<>" ""
      GoSub "SAVE_ALL"
           If "[FileName]" "<>" ""
               dbfStrReplace "[PubDir]BASES" "GOROD" "[GOROD2]" "[GOROD]"
               dbfStrReplace "[PubDir]BASES" "DATA" "[DATA2]" "[DATA]"
               dbfStrReplace "[PubDir]BASES" "PRODAVEC" "[PRODAVEC2]" "[PRODAVEC]"
               StrIns "[BASES.DATA]" "" "" "[DATA1]"
               StrIns "[BASES.GOROD]" "" "" "[GOROD1]"
               StrIns "[BASES.PRODAVEC]" "" "" "[PRODAVEC1]"
            EndIf
CloseCustomWindow "Container23"
EndIf

Это я уже потом эксперементировал. Разницы ни какой

Я люблю думать что умею рисовать
 
PeterДата: Понедельник, 06 Апрель 2009, 00:55 | Сообщение # 27
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
Quote (mishem)
А так , поставил бы после строки

Смысл? wacko

ЧТО предполагается иметь в переменной [FileName] ДО нажатия на кнопку, т.е. ДО

Code
If "[GOROD][DATA][PRODAVEC]" "<>" ""

Добавлено (06 Апрель 2009, 00:52)
---------------------------------------------

Quote (mishem)
Это я уже потом эксперементировал.

Эксперементы нужно не забывать "откатывать"!
А иначе, они могут превратиться в экскрименты!... biggrin

Добавлено (06 Апрель 2009, 00:55)
---------------------------------------------

Quote (mishem)
Первоначально было так

Кстати, я вам указал на косяк в СОВЕРШЕННО ином участке кода, т.е в подпрограмме, а вы мне сейчас показываете код кнопки!

Чем дорожу... Чем рискую на свете я....
Мигом одним! Только мигом одним!...

WHITESNAKE St.Petersburg - 11.12.2008
 
mishemДата: Понедельник, 06 Апрель 2009, 01:08 | Сообщение # 28
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
Quote (Peter)
ЧТО предполагается иметь в переменной [FileName] ДО нажатия на кноп

Полный путь открываемого файла.
Но переменная очищается после команды
Code
DefineVar "[FileName]" "String" "" "Local" ""

и до последнего действия остается пустой.

Добавлено (06 Апрель 2009, 01:00)
---------------------------------------------
Я переменную "[FileName]" продублировал в окне Надпись/Текст. Что б видеть все изменения

Добавлено (06 Апрель 2009, 01:04)
---------------------------------------------

Quote (Peter)
Кстати, я вам указал на косяк в СОВЕРШЕННО ином участке кода, т.е в подпрограмме, а вы мне сейчас показываете код кнопки!

Проглядел. smile Уже убрал

Добавлено (06 Апрель 2009, 01:08)
---------------------------------------------

Quote (Peter)
Смысл?

Убираются тогда несколько получающихся лишних команд
Code
If "[FileName]" "<>" ""  


Я люблю думать что умею рисовать
 
PeterДата: Понедельник, 06 Апрель 2009, 01:14 | Сообщение # 29
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
Quote (mishem)
Но переменная очищается после команды

Естесственно!
Это же ВЫ САМИ её и очищаете этой самой командой!
Вы несколько неправильно трактовали смысл DefineVar в том моем примере, который я раньше показал.
Я объявляю локальной строковую переменную [FileName] только для того, чтобы потом (после выполнения скрипта) она автоматически удалялась даже будучи не пустой! Это просто правила "хорошего тона", что ли, т.к. зачем хранить в памяти то, что больше не нужно?
Поэтому команда DefineVar вовсе НЕ ОБЯЗАТЕЛЬНА перед диалогом открытия файла!
Причем, эту переменную можно было бы "уничтожить" и другим способом, просто я предпочел этот.
К тому же, следует ещё иметь ввиду, что если в этой переменной что-то было ДО открытия диалога, а в диалоге ничего НЕ выбрано, то эта переменная тоже "обнулится", т.е будет уничтожена!

Чем дорожу... Чем рискую на свете я....
Мигом одним! Только мигом одним!...

WHITESNAKE St.Petersburg - 11.12.2008
 
mishemДата: Понедельник, 06 Апрель 2009, 01:24 | Сообщение # 30
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
Тоесть если я допустим напишу без объявления не [FileName] а [NameX] и она еще ни где не будет создана, написана и т.д. То программа будет ее видеть в любом случае? Получается можно не создавать несколько разных переменных, а использовать одну в разных местах? Правильно я понял?

Я люблю думать что умею рисовать
 
Форум MMB » Всё о программе Neo Book » Вопросы и ответы по NB » Сохранить Как...
Страница 1 из 212»
Поиск: