我正在做一個應用程序(XE6,Firemonkey)來同步共享文件夾和計算機之間的文件。此應用程序會每x個小時檢查一次是否有新文件需要同步,並在Windows啓動時啓動。啓動時應用程序無法訪問文件
我可以做所有事情,我的應用程序開始啓動,並且它執行同步,只要我是一個啓動它的人。當應用程序在啓動時自動啓動,它給了我一個例外「EINOUTERROR」 - 文件訪問被拒絕。 在啓動應用程序時會讀取一個小的.txt文件來設置它自身(共享文件夾位置,同步速率等),我的猜測是,由於它啓動應用程序的窗口運行時沒有讀取.txt的權限,但是甚至在將.txt權限更改爲對所有人完全控制之後,它會給出相同的錯誤。
文件打開代碼:
procedure TSyncM.RunOnStartup(const sCmdLine: string; bRunOnce: boolean; Remove: Boolean) ;
var sKey: string;
Section: string;
const ApplicationTitle = 'GEN4Sync';
begin
if (bRunOnce) then
sKey := 'Once'
else
sKey := '';
Section := 'Software\Microsoft\Windows\CurrentVersion\Run' + sKey + #0;
with TRegIniFile.Create('') do
try
RootKey := HKEY_CURRENT_USER;
if Remove then
DeleteKey(Section, ApplicationTitle)
else
WriteString(Section, ApplicationTitle, sCmdLine) ;
finally
Free;
end;
end;
如果我評論的一段代碼調用的是閱讀的.txt我的應用程序啓動和:
AssignFile(myFile,'Dados.txt');
if FileExists('Dados.txt') then
Append(myFile)
else
Rewrite(myFile);
FileMode := fmOpenRead;
Reset(myFile);
放置在啓動程序應用程序的代碼執行得很好,但我不想每次都設置它。 在此先感謝
是的,使用完整路徑解決了問題。謝謝。 通過說更現代的I/O技術,你有什麼建議? (不要求代碼,只是爲了我搜索和學習:)) 我是Firemonkey和Delphi的新手,而古老的Pascal I/O是第一個出現在谷歌上的東西。 – 2015-03-19 12:07:29
該文件的內容是什麼? – 2015-03-19 12:09:28
純文本。 那麼,我有一套共享文件夾,我需要確保一些計算機保持這些共享文件夾的最新副本。我有一個存儲這些信息的類,起初我想序列化這個類並將它存儲在一個文件中,就像在java中一樣,但是我在delphi中發現它很困難。由於這是我的一個小項目,我試圖保持簡單和小型的時間消耗。所以我寫了一個讀取類並將其寫入txt的過程,然後我在應用程序啓動時對其進行解釋。 – 2015-03-19 12:17:00