| Сохранить Как... |
| 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. Это вообще не понял  Добавлено (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) И выполнить команду на импорт. ЧТО вы выбираете в диалоге: базу В которую идет импорт, или файл, ИЗ которого импортируется информация? Вы же тут НЕ сохраняете новый файл! Вообще-то для этого сгодится просто 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" И выполнить команду на импорт. Как-то очень хитрО выглядит: на одном и том же "контроле", в зависмости от типа выбраннго файла, выполняются две совершенно разные(!) по сути операции... Впрочем, почему бы и нет? Вам виднее...
Чем дорожу... Чем рискую на свете я.... Мигом одним! Только мигом одним!... WHITESNAKE St.Petersburg - 11.12.2008
|
| |
| |
|
| mishem | Дата: Воскресенье, 05 Апрель 2009, 00:58 | Сообщение # 5 |
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
| Уже поспал пару часов , а то сидел засыпал. думал по этому ни чего не понимаю Неее. Все равно. Или я не правильно объясняю, или все же чего то не догоняю. Начну сначала. Кпримеру. Открываю файл с расширением 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 Вот, что то типа этого делаю. Может что то просто не дописываю. До этог были другие варианты По всякому пробовал
Я люблю думать что умею рисовать
|
| |
| |
|
| Peter | Дата: Воскресенье, 05 Апрель 2009, 02:41 | Сообщение # 6 |
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
| Quote (mishem) она мне его сохраняет . но в формате dbf. А мне нужно чтобы она скопировала его опять в тот же csv файл. Какой формат ВЫ сами укажете, в том и будет сохранено!!! Quote (mishem) При экспорте он же привратился уже в файл базы, .. ЧУДЕСА ! Quote (mishem) Вот я и не могу понять, как программе дать понять какое расширение я выбрал? Сохранить КАК.... А вот уж КАК вы будете определять/выбирать расширение - на ВАШЕ усмотрение! Если честно, то я никак не могу понять в ЧЕМ проблема? Ну вот хоть какой-то код появился наконец. Давайте по-порядку... 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]" меняете расширение файла САМО на СЕБЯ ( ), и: 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) При экспорте он же привратился уже в файл базы, .. Выразился не правильно. Ну.... Вы меня поняли Quote (Peter) If "[FileName]" "=" "" Return EndIf Это - совершенно лишнее! Можно (и нужно!) убрать. В моем случае не лишние. У меня открывается два файла BASES и BASES_DYBL. BASES это файл. в который копируется файл при открытии. Мы с Вами эту тему как то обсуждали. Содержимое файла копируется в BASES , производятся изменения . После из BASES копируем обратно в файл, а файл BASES по мере надобности удаляется что бы очистить содержимое. BASES_DYBL это файл который содержит всю информацию которая находится в файлах ранее созданных и сохраненных по отдельности. Так вот если при открытии файла нажимается Отменить, и стоит эта команда что бы файл BASES_DYBL не открывался. BASES и BASES_DYBL. работают синхронно. Если в BASES добавляется или удаляется информация, она так же добовляетс или удаляется в BASES_DYBL. Надеюсь понятно объяснил, хотя если б мне так объяснили бы, не понял Quote (Peter) меняете расширение файла САМО на СЕБЯ В том то и дело, что расширения пока ни какого нет Quote (Peter) должен признаться в том, что Excel я ВООБЩЕ не знаю, и никогда НЕ ЗНАЛ! Ну это просто как пример взял. Возьмите любое другое приложение, где есть возможность сохранения одного и того же файла в разных форматах. Quote (Peter) Может вы имели ввиду "экспорт"? Ну наверно Да Я с Русским то особо не дружу, а уж с языком програмирования и с иностранными подавно.
Я люблю думать что умею рисовать
|
| |
| |
|
| Peter | Дата: Воскресенье, 05 Апрель 2009, 06:18 | Сообщение # 8 |
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
| Quote (mishem) Выразился не правильно. Ну.... Вы меня поняли Гм.. С трудом-с... С трудом-с... Со мной-то такая манера "объяснений" ещё кое-как прокатит, а вот с NeoBook.... Quote (mishem) В моем случае не лишние. У меня открывается два файла BASES и BASES_DYBL. BASES Гм... Это не имеет значения для того скрипта, который вы мне продемонстрировали. Вообще-то, этот момент - принципиальный! Смотрите: Code If "[FileName]" "=" "" Return EndIf Здесь, если переменная [FileName] равна "пустоте", происхожит прерывание хода скрипта, и ВСЕ, что идет после Return выполнено НЕ будет. Проще говоря, если [FileName] будет пустой, то НИЧЕГО не будет выполнено ВООБЩЕ, т.к. скрипт прервется, не дойдя до конца. Хорошо... Понятно.... Далее: Code If "[FileName]" "<>" "" ....... EndIf Т.е., если [FileName] НЕ равна "пустоте", то будет выполнено все до EndIf. Тоже красиво!... Но, оно ТОЖЕ НЕ будет выполнено, если [FileName] окажется ПУСТОЙ! В ОБОИХ случаях (условиях) НИЧЕГО НЕ БУДЕТ ВЫПОЛНЕНО, если [FileName] окажется пустой! Но, во втором случае в условие заложена "полезная работа", а первое - "пустышка"! Зачем тогда вставлять лишнее (первое) условие? .. Quote (mishem) В том то и дело, что расширения пока ни какого нет Верно! Я почему-то держал в уме предыдущий скрипт, а там [FileName] прилетает (С РАСШИРЕНИЕМ) из FileSaveBox... Тогда тем-более: такой скрипт В ПРИНЦИПЕ алогичен! Code ExtractFileExt "[FileName]" "[Ext]" If "[Ext]" "=" ".DBF" Получается, что вы пытаетесь получить расширение оттуда, где его по-просту НЕТ? Еще раз: Откуда берется переменная [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... Верно. Но не прилетает. Имя файла есть, а расширения нет. Ни какого .Quote (Peter) Еще раз: Откуда берется переменная [FileName] ? Из FileSaveBox... Но, какое бы я расширение не выбрал, оно не сохраняется с именем файла в [FileName] А вот почему ? Я как раз и не пойму. Quote (Peter) После того, как вы выберите файл в диалоговом окне FileSaveBox, в переменной [FileName] у вас окажется ПОЛНОЕ (с путем) имя файла, а НЕ расширение Quote окажется ПОЛНОЕ (с путем) имя файла есть, но без расширения Отсюда все остальные команды не выполняются. Quote (Peter) Code ExtractFileExt "[FileName]" "[Ext]" If "[Ext]" "=" ".DBF" Получается, что вы пытаетесь получить расширение оттуда, где его по-просту НЕТ? Получается. Но почему его там нет? Я ввел имя файла, выбрал маску расширения. Имя есть, расширения нет. Мистика !  Добавлено (05 Апрель 2009, 13:48) --------------------------------------------- Peter, Вопрс решен. Версия 5.5.4 не добавляет расширение. В 5.6 все пошло. Столько времени потерял. Эх, кто б перевел 5.6 Вернусь теперь к этому вопросу. Quote (Peter) Quote (mishem) В моем случае не лишние. У меня открывается два файла BASES и BASES_DYBL. BASES Гм... Это не имеет значения для того скрипта, который вы мне продемонстрировали. Вы правы.Просто по мере продолжения, у меня происходит много изменений. Когда вставлял эту команду, она тогда зачем то нужна была. Потом при изменениях циклюсь на другом вопросе, а на нее не обращаю внимания. Вроде не мешает. Чем дальше иду, тем больше начинаю запутываться. Особенно когда сталкиваешься с таким вопросом, где вроде бы все правильно делаешь, а почему то не работает.Начинаешь пробывать другие варианты, и забываешь, где и что зачем писал. Вы в какойто теме написали, что пробывали заняться переводом 5.6, и как бы не взначай спросили нужно ли это. НУЖНО. Эх, кто б перевел 5.6
Я люблю думать что умею рисовать
|
| |
| |
|
| Peter | Дата: Воскресенье, 05 Апрель 2009, 21:04 | Сообщение # 10 |
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
| Quote (mishem) Версия 5.5.4 не добавляет расширение. А у меня ДОБАВЛЯЕТ... Ну, видимо не зря иальчишки из NeoSoft написАли в истории версий к 5.6.2 об исправлении это глюка. В конце-концов, вместо SaveBox можно использовать и OpenBox, т.к. в обоих случаях возращается просто имя файла. Эхе-хе... Тут потребуется делать русификатор "с нуля", т.к. предыдущие переводы не подойдут (даже в качестве основы) в принципе - очень разные экзешники у версий! А это работы - "выше крыши"! Да и по-правде говоря, у меня полно более интересных (лично мне) идей-проектов! Надо будет подумать...
Чем дорожу... Чем рискую на свете я.... Мигом одним! Только мигом одним!... WHITESNAKE St.Petersburg - 11.12.2008
|
| |
| |
|
| mishem | Дата: Воскресенье, 05 Апрель 2009, 21:24 | Сообщение # 11 |
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
| Quote (Peter) А это работы - "выше крыши"! Я бы предложил свою помощь, но даже не знаю чем бы мог быть полезен  Добавлено (05 Апрель 2009, 21:24) --------------------------------------------- У меня вот еще какой вопрос. Между делом вспоминаю про него, но ни как не могу придумать как это делается. Как то раз получилось, думал потом к нему вернусь, и забыл как делал:( Короче нужно чтобы при открытии FileSaveBox в строке Имя файла было сразу уже вбито имя из переменной.
Я люблю думать что умею рисовать
|
| |
| |
|
| Peter | Дата: Воскресенье, 05 Апрель 2009, 21:58 | Сообщение # 12 |
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
| Quote (mishem) нужно чтобы при открытии FileSaveBox в строке Имя файла было сразу уже вбито имя из переменной. К сожалению, не получится! Я уже и сам как-то пробвал... Разработчики NB явно модернизировали стандартные дэлфийские диалоги, и, возможно, поставили "на автомат" очистку поля в момент открытия диалога, и если файл НЕ выбран, то переменная, в которой раньше было имя файла, очищается. Не замечали?.. Но, с другой стороны, это даже лучше, т.к. пользователю придется ОБЯЗАТЕЛЬНО выбрать файл прежде, чем нажать "Сохранить". Своего рода, защита от дурака! А может это и глюк какой, т.к. например, в Дэлфи это поле при открытии диалога НЕ очищается... Quote (mishem) Я бы предложил свою помощь Спасибо, но... Подобные дела пишутся в исключительно в одиночку... Если только какие советы по переводу, но в этом необходимости тоже нет... Может и соберусь я с силами. Кто знает...
Чем дорожу... Чем рискую на свете я.... Мигом одним! Только мигом одним!... WHITESNAKE St.Petersburg - 11.12.2008
|
| |
| |
|
| mishem | Дата: Воскресенье, 05 Апрель 2009, 22:08 | Сообщение # 13 |
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
| Quote (Peter) К сожалению, не получится! Но у меня как то получилось. Но не из переменной, это точно. То есть я в какой то команде, где то, что то вписал. И при открытии вот тоже не помню, то ли Open, то ли SaveBox имя уже было вписано.
Я люблю думать что умею рисовать
|
| |
| |
|
| Peter | Дата: Воскресенье, 05 Апрель 2009, 23:22 | Сообщение # 14 |
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
| Quote (mishem) Но у меня как то получилось. Уверены?... Тогда зачем спрашивать?... А получилось у вас видмио, не с OpenFileBox или SaveFileBox, а с FolderBox. Там это действительно работает. Впрочем, если вы так уверены, то... попробуйте самостоятельно найти ответ. Потом, надеюсь, поделитесь результатами?...
Чем дорожу... Чем рискую на свете я.... Мигом одним! Только мигом одним!... WHITESNAKE St.Petersburg - 11.12.2008
|
| |
| |
|
| mishem | Дата: Воскресенье, 05 Апрель 2009, 23:34 | Сообщение # 15 |
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
| Quote (Peter) А получилось у вас видмио, не с OpenFileBox или SaveFileBox, а с FolderBox. Уверен что с FolderBox не работал ни разу В остальном не очень
Я люблю думать что умею рисовать
|
| |
| |
|
| 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"
Я люблю думать что умею рисовать
|
| |
| |
|
| Peter | Дата: Воскресенье, 05 Апрель 2009, 23:47 | Сообщение # 17 |
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
| Quote (mishem) Уверен что с FolderBox не работал ни разу Это дело поправимое... Ещё поработаете и не раз!... Quote (mishem) В остальном не очень Ну, вот и есть повод развеять свои сомнения. Ждем-с результат изысканий... Серьезно!
Чем дорожу... Чем рискую на свете я.... Мигом одним! Только мигом одним!... WHITESNAKE St.Petersburg - 11.12.2008
|
| |
| |
|
| mishem | Дата: Воскресенье, 05 Апрель 2009, 23:52 | Сообщение # 18 |
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
| Quote (Peter) Ждем-с результат изысканий... Серьезно! Я и не собираюсь сдаваться Просто в версии 5.4 стал сомневаться. Толком то всего еще не понимаю, а тут теперь не знаешь, ни то сам не прав , ни то программа
Я люблю думать что умею рисовать
|
| |
| |
|
| Peter | Дата: Понедельник, 06 Апрель 2009, 00:03 | Сообщение # 19 |
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
| Quote (mishem) Опять глюк, или у меня не правильно? Гм... Если вы полагаете , что я - телепат, то жестоко ошибаетесь, т.к. я, поверьте на слово, не столь одарен природой! Чтобы что-то оценить нужно знать: ЧТО и ДЛЯ ЧЕГО? Здесь вы мне показывате уже совершенно иной скрипт, отличный от предыдущего и оторванный от отсталных частей программы! А вот это: 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) Я и не собираюсь сдаваться Правильно - "Наши" НЕ СДАЮТСЯ! Только считаю своим наипервейшим долгом и святой обязанностью заранее вас предупредить: на "Звезду Героя" особо расчитывать не стОит!...  Добавлено (06 Апрель 2009, 00:19) ---------------------------------------------
Quote (mishem) Вы прикрепление видели? Пардон! Проглядел... Сейчас посмотрю..
Чем дорожу... Чем рискую на свете я.... Мигом одним! Только мигом одним!... WHITESNAKE St.Petersburg - 11.12.2008
|
| |
| |
|
| mishem | Дата: Понедельник, 06 Апрель 2009, 00:21 | Сообщение # 22 |
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
| Quote (Peter) Правильно - "Наши" НЕ СДАЮТСЯ! Только считаю своим наипервейшим долгом и святой обязанностью заранее вас предупредить: на "Звезду Героя" особо расчитывать не стОит!...
Я люблю думать что умею рисовать
|
| |
| |
|
| 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
| Сейчас гляну, но для начала посмотрите прикрепления.
Чем дорожу... Чем рискую на свете я.... Мигом одним! Только мигом одним!... 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) А так , поставил бы после строки Смысл? ЧТО предполагается иметь в переменной [FileName] ДО нажатия на кнопку, т.е. ДО Code If "[GOROD][DATA][PRODAVEC]" "<>" "" Добавлено (06 Апрель 2009, 00:52) ---------------------------------------------
Quote (mishem) Это я уже потом эксперементировал. Эксперементы нужно не забывать "откатывать"! А иначе, они могут превратиться в экскрименты!...  Добавлено (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) Кстати, я вам указал на косяк в СОВЕРШЕННО ином участке кода, т.е в подпрограмме, а вы мне сейчас показываете код кнопки! Проглядел. Уже убралДобавлено (06 Апрель 2009, 01:08) ---------------------------------------------
Убираются тогда несколько получающихся лишних команд 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] и она еще ни где не будет создана, написана и т.д. То программа будет ее видеть в любом случае? Получается можно не создавать несколько разных переменных, а использовать одну в разных местах? Правильно я понял?
Я люблю думать что умею рисовать
|
| |
| |