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

Откуда: Одесса
Сообщений: 360
Есть такой блок.
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

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


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

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

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

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

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


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

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

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

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

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

Откуда: От верблюда
Сообщений: 2114
В свежей версии прицепи на событие 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]     Ответить | Цитировать Сообщить модератору
Все форумы / IBExpert Ответить