powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Текущая папка для ibec_getfiles
12 сообщений из 12, страница 1 из 1
Текущая папка для ibec_getfiles
    #39521923
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такой блок.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
execute ibeblock as
begin
  if (ibec_getfiles(fl, '', '*.sql', __gfFullName + __gfSort) > 0) then
  begin
    i = 0;
    while (i <= ibec_high(fl)) do
    begin
      f = fl[i];
      c = 'execute ibeblock (d variant) as begin s = d; if (s is not null) then ibec_Progress('''||ibec_ExtractFileName(f)||': '' + s); end';
      ibec_ExecSQLScript(ibec_GetDefaultConnection(), f, 'StopOnError=FALSE', c);
      f2 = replace(f, '.sql', '.old');
      ibec_RenameFile(f, f2);
      i = i + 1;
    end
  end
end;

Он из текущей папки ищет sql-файлы, выполняет их, и переименовывает в *.old
Для того чтобы не указывать путь к файлам (2-й параметр в ibec_getfiles) я загружал файл этим блоком из папки с sql-файлами.
Ранее текущая папка соответствовала месту откуда я загрузил в окно редактора. Сейчас текущая папка не меняется при загрузке файла.
Это бага или фича?
...
Рейтинг: 0 / 0
Текущая папка для ibec_getfiles
    #39521957
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шавлюк ЕвгенийРанее текущая папка соответствовала месту откуда я загрузил в окно редактора. Сейчас текущая папка не меняется при загрузке файла.
Это бага или фича?

Вопрос в том, как должно быть правильно. Должна ли меняться текущая директория при открытии файла в каком-то из многочисленных редакторов. Я вот не знаю.
...
Рейтинг: 0 / 0
Текущая папка для ibec_getfiles
    #39522027
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpertДолжна ли меняться текущая директория при открытии файла в каком-то из многочисленных редакторов. Я вот не знаю.
А нельзя ли для каждого окна держать свою Текущую папку?
Раз есть загрузка файла то логично что текущая папка относительно файла.
Хотя конечно вопрос спорный
...
Рейтинг: 0 / 0
Текущая папка для ibec_getfiles
    #39522825
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно, спорный. Гораздо правильнее не закладываться на какое-то определенное поведение программ.
Тем более, что IBExpert и IBEScript могут обрабатывать скрипт как-то по-разному.
Правильнее предусматривать хранение настроек, их загрузку и обработку самими скриптом, переход в нужные каталоги или формирование полного имени файлов тоже осуществлять явно.
...
Рейтинг: 0 / 0
Текущая папка для ibec_getfiles
    #39523328
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шавлюк ЕвгенийА нельзя ли для каждого окна держать свою Текущую папку?


Для целей загрузки/сохранения через диалог "текущая" папка и так запоминается.
Только у процесса единственная текущая папка, и переключать ее тихой сапой при переключении окна явно неправильно.
...
Рейтинг: 0 / 0
Текущая папка для ibec_getfiles
    #39525358
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert,

Есть ли какой-либо способ получить папку откуда файл загружен?
ibec_GetCurrentDir() - дает всегда папку с IBExpert
В окне редактора скриптов отображается имя загруженного файла (название окна на панели окон)
Можно ли получить имя текущего выполняемого файла?
Это было бы полезно и для ibescript (протоколирование выполненных скриптов)

Сейчас скрипты содержащие INPUT <filename> через IBExpert выполнять сложно.
Старое поведение для ibec_GetCurrentDir IMHO было более логичным
...
Рейтинг: 0 / 0
Текущая папка для ibec_getfiles
    #39525381
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Могу сделать обработку блока события "После загрузки файла в редактор" и функцию ibec_SetCurrentDir.
Соответственно, в блоке события можно будет изменить текущую директорию со всеми вытекающими.
...
Рейтинг: 0 / 0
Текущая папка для ibec_getfiles
    #39525928
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В свежей версии прицепи на событие Code Editor events / After load from file следующий блок:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
execute ibeblock (
  DatabaseID variant comment     'Internal ID (within IBExpert) of the database associated to the Code Editor
                                  (can be NULL or 0 if not assigned)',
  CodeEditor variant comment     'Code Editor object (pointer), reserved for future use',
  ObjectEditor variant comment   'Object Editor object(pointer), parent form of the Code Editor',
  SourceDir variant comment      'Source file directory',
  SourceFileName variant comment 'Source file name (includes directory)',
  LoadEncoding integer comment   'Encoding of source file. Possible values are __feANSI, __feUTF8, __feUTF8_BOM, __feUTF16, __feUTF16_BOM',
  IsQuickLoad boolean comment    'Indicates if there is Quick Load action performed',
  Flags variant comment          'Some additional flags which are represented as set of chars')
as
begin
  iObjType = ibec_ibe_GetObjectEditorProp(ObjectEditor, 'ObjectType');
  if (iObjType = __dboSQLScript) then -- Script Executive
  begin
    ibec_SetCurrentDir(SourceDir);
  end;
end
...
Рейтинг: 0 / 0
Текущая папка для ibec_getfiles
    #39671828
RazBoyNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ощутил отсутствие относительных путей на собственной шкуре...
Пишу разного рода мини програмки экспорта данных в CSV, XML и т.д.
Для подключения к базе и настроек использую .ini Понятное дело, лежат они под ногами IBEScript.
В IBExpert загрузил скрипт и работаешь с ним, видит эти ini. Но понадобились новые функции, обновился и...
Искал как заставить "эксперт" видеть путь к скрипту(заодно и .ini), но...
Копировал файл с настройками в каталог эксперта, пока не увидел этой темы:
http://www.sql.ru/forum/1288237/ibescript-ini
Теперь в скриптах пишу значения по умолчанию, аля:
Код: sql
1.
OKPO = IBEC_INI_READSTRING(INI_FILE, 'data', 'OKPO', '1231231231')


Данные подключения IBEScript читает сам, а експерт использует текущее подключение.

Все ж иногда полезная штука, знать путь скрипта. Для отладки и есть не мои скрипты, которые используют "..\"
Если можно, расскажите более детально куда "прицепить блок" из предыдущего сообщения. И будет ли он действовать на SQL Editor?

P.S. Попутно (если нужно открою отдельную тему), можно ли заставить "Format query text(Alt+F)" форматировать ibeBlock? Удаляю префикс ibe, чтоб отформатировало в стиле "execute block".
...
Рейтинг: 0 / 0
Текущая папка для ibec_getfiles
    #39671944
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RazBoyNikЕсли можно, расскажите более детально куда "прицепить блок" из предыдущего сообщения. И будет ли он действовать на SQL Editor?


Закладка ฺBlocks в DB Explorer, в контекстном меню дерева блоков есть "Create\Edit event block".

RazBoyNikP.S. Попутно (если нужно открою отдельную тему), можно ли заставить "Format query text(Alt+F)" форматировать ibeBlock? Удаляю префикс ibe, чтоб отформатировало в стиле "execute block".

Форматтер не знает про синтаксис IBEBlock, обучать его этому пока не планируется.
...
Рейтинг: 0 / 0
Текущая папка для ibec_getfiles
    #39672111
RazBoyNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В "SQL Editor" не работает. Как вариант можно загрузить через "Script Executive" и дальше в "SQL Editor" работать.
Свои скрипты адаптировал под стандартное поведение, чужие буду через "Script Executive".

Огромное спасибо и успехов!
...
Рейтинг: 0 / 0
Текущая папка для ibec_getfiles
    #39672118
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RazBoyNikВ "SQL Editor" не работает.

Если ты блок выше без модификации используешь, то конечно не будет работать.
В блоке ibec_SetCurrentDir(SourceDir) выполняется только для Script Executive.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Текущая папка для ibec_getfiles
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]