檢查時看到一個數據庫(SQL Anywhere的)被解僱了,並準備接收到一個日誌請求我輸出數據庫信息窗口(文本)文件,然後試圖打開LoadStringFromFile失敗請使用LoadStringFromFile
來閱讀本文,然後使用Pos
來搜索特定的文本。問題是這個失敗(我假設),因爲該文件正在使用中。Inno Setup的時候文件是在另一個進程
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中的請求。 –
我upvoted其他答案來彌補。謝謝。 –