Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBExpert Новый топик    Ответить
 Текущая папка для ibec_getfiles  [new]
Шавлюк Евгений
Member

Откуда: Одесса
Сообщений: 421
Есть такой блок.
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-файлами.
Ранее текущая папка соответствовала месту откуда я загрузил в окно редактора. Сейчас текущая папка не меняется при загрузке файла.
Это бага или фича?
15 сен 17, 15:27    [20799203]     Ответить | Цитировать Сообщить модератору
 Re: Текущая папка для ibec_getfiles  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 2349
Шавлюк Евгений
Ранее текущая папка соответствовала месту откуда я загрузил в окно редактора. Сейчас текущая папка не меняется при загрузке файла.
Это бага или фича?


Вопрос в том, как должно быть правильно. Должна ли меняться текущая директория при открытии файла в каком-то из многочисленных редакторов. Я вот не знаю.
15 сен 17, 16:16    [20799377]     Ответить | Цитировать Сообщить модератору
 Re: Текущая папка для ibec_getfiles  [new]
Шавлюк Евгений
Member

Откуда: Одесса
Сообщений: 421
IBExpert
Должна ли меняться текущая директория при открытии файла в каком-то из многочисленных редакторов. Я вот не знаю.

А нельзя ли для каждого окна держать свою Текущую папку?
Раз есть загрузка файла то логично что текущая папка относительно файла.
Хотя конечно вопрос спорный
15 сен 17, 18:16    [20799744]     Ответить | Цитировать Сообщить модератору
 Re: Текущая папка для ibec_getfiles  [new]
o_v_a
Member

Откуда: Тула
Сообщений: 963
Конечно, спорный. Гораздо правильнее не закладываться на какое-то определенное поведение программ.
Тем более, что IBExpert и IBEScript могут обрабатывать скрипт как-то по-разному.
Правильнее предусматривать хранение настроек, их загрузку и обработку самими скриптом, переход в нужные каталоги или формирование полного имени файлов тоже осуществлять явно.
18 сен 17, 15:59    [20803919]     Ответить | Цитировать Сообщить модератору
 Re: Текущая папка для ibec_getfiles  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 2349
Шавлюк Евгений
А нельзя ли для каждого окна держать свою Текущую папку?


Для целей загрузки/сохранения через диалог "текущая" папка и так запоминается.
Только у процесса единственная текущая папка, и переключать ее тихой сапой при переключении окна явно неправильно.
19 сен 17, 14:59    [20806278]     Ответить | Цитировать Сообщить модератору
 Re: Текущая папка для ibec_getfiles  [new]
Шавлюк Евгений
Member

Откуда: Одесса
Сообщений: 421
IBExpert,

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

Сейчас скрипты содержащие INPUT <filename> через IBExpert выполнять сложно.
Старое поведение для ibec_GetCurrentDir IMHO было более логичным
23 сен 17, 23:58    [20818574]     Ответить | Цитировать Сообщить модератору
 Re: Текущая папка для ibec_getfiles  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 2349
Могу сделать обработку блока события "После загрузки файла в редактор" и функцию ibec_SetCurrentDir.
Соответственно, в блоке события можно будет изменить текущую директорию со всеми вытекающими.
24 сен 17, 05:21    [20818650]     Ответить | Цитировать Сообщить модератору
 Re: Текущая папка для ibec_getfiles  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 2349
В свежей версии прицепи на событие Code Editor events / After load from file следующий блок:

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
25 сен 17, 17:25    [20821446]     Ответить | Цитировать Сообщить модератору
 Re: Текущая папка для ibec_getfiles  [new]
RazBoyNik
Member

Откуда: Україна,Київ
Сообщений: 33
Ощутил отсутствие относительных путей на собственной шкуре...
Пишу разного рода мини програмки экспорта данных в CSV, XML и т.д.
Для подключения к базе и настроек использую .ini Понятное дело, лежат они под ногами IBEScript.
В IBExpert загрузил скрипт и работаешь с ним, видит эти ini. Но понадобились новые функции, обновился и...
Искал как заставить "эксперт" видеть путь к скрипту(заодно и .ini), но...
Копировал файл с настройками в каталог эксперта, пока не увидел этой темы:
http://www.sql.ru/forum/1288237/ibescript-ini
Теперь в скриптах пишу значения по умолчанию, аля:
OKPO = IBEC_INI_READSTRING(INI_FILE, 'data', 'OKPO', '1231231231')

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

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

P.S. Попутно (если нужно открою отдельную тему), можно ли заставить "Format query text(Alt+F)" форматировать ibeBlock? Удаляю префикс ibe, чтоб отформатировало в стиле "execute block".
9 июл 18, 21:46    [21557796]     Ответить | Цитировать Сообщить модератору
 Re: Текущая папка для ibec_getfiles  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 2349
RazBoyNik
Если можно, расскажите более детально куда "прицепить блок" из предыдущего сообщения. И будет ли он действовать на SQL Editor?


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

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


Форматтер не знает про синтаксис IBEBlock, обучать его этому пока не планируется.
10 июл 18, 11:03    [21558586]     Ответить | Цитировать Сообщить модератору
 Re: Текущая папка для ibec_getfiles  [new]
RazBoyNik
Member

Откуда: Україна,Київ
Сообщений: 33
В "SQL Editor" не работает. Как вариант можно загрузить через "Script Executive" и дальше в "SQL Editor" работать.
Свои скрипты адаптировал под стандартное поведение, чужие буду через "Script Executive".

Огромное спасибо и успехов!
10 июл 18, 14:45    [21559567]     Ответить | Цитировать Сообщить модератору
 Re: Текущая папка для ibec_getfiles  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 2349
RazBoyNik
В "SQL Editor" не работает.


Если ты блок выше без модификации используешь, то конечно не будет работать.
В блоке ibec_SetCurrentDir(SourceDir) выполняется только для Script Executive.
10 июл 18, 14:56    [21559619]     Ответить | Цитировать Сообщить модератору
Все форумы / IBExpert Ответить