Чтобы проверить, когда запущена база данных (SQL Anywhere) и готова к отправке запросов, я выводил окно сообщения базы данных в файл журнала (текста), а затем пытаюсь чтобы прочитать это, используя LoadStringFromFile
, и затем я ищу конкретный текст, используя Pos
. Проблема в том, что это не удается (я полагаю), поскольку файл используется.Inno Setup LoadStringFromFile не работает, когда файл открыт в другом процессе
Exec(strInstallPath + '\Bin32\dbeng17.exe', '-n ' + strEngineName + ' "' + strInstallPath + '\Database\Olympus.db" -n ' + strDatabaseName + ' -gdall -xtcpip -ti0 -c25p -ot "' + strTempPath + '\dbeng.log"', '', SW_HIDE,
ewNoWait, intResultCode);
if not LoadStringFromFile(strTempPath + '\dbeng.log', astrDatabaseEngineLog) then
begin
Log('Loading string from file failed.');
end;
Я также попытался скопировать файл журнала с помощью FileCopy
и попытаться прочитать из копии файла, но FileCopy
также терпит неудачу.
if not FileCopy(strTempPath + '\dbeng.log', strTempPath + '\dbengcopy.log', False) then
begin
Log('File copy failed.');
end;
Есть ли способ прочитать из файла, который используется, или другим способом сделать это?
Я принимаю это как ответ, так как он напрямую отвечает на вопрос, который я задал. Однако в этом случае ответ Graeme Perrow на самом деле гораздо более изящный и простой способ сказать, когда база данных запускается и принимает запросы в SQL Anywhere. –
Я поддержал другой ответ, чтобы компенсировать. Благодарю. –