請問如何知道檔案正被開啟? |
尚未結案
|
shihchin
一般會員 發表:10 回覆:12 積分:4 註冊:2002-12-18 發送簡訊給我 |
|
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
|
shihchin
一般會員 發表:10 回覆:12 積分:4 註冊:2002-12-18 發送簡訊給我 |
|
Miles
尊榮會員 發表:27 回覆:662 積分:622 註冊:2002-07-12 發送簡訊給我 |
|
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
|
shihchin
一般會員 發表:10 回覆:12 積分:4 註冊:2002-12-18 發送簡訊給我 |
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
|
ghyghost
一般會員 發表:3 回覆:8 積分:2 註冊:2003-03-16 發送簡訊給我 |
function IsFileInUse(FileName: TFileName): Boolean;
var
HFileRes: HFILE;
begin
Result := False;
if not FileExists(FileName) then Exit;
HFileRes := CreateFile(PChar(FileName),
GENERIC_READ or GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
Result := (HFileRes = INVALID_HANDLE_value);
if not Result then
CloseHandle(HFileRes);
end; procedure TForm1.Button1Click(Sender: TObject);
var
InUse: Boolean;
begin
// ...
repeat
InUse := IsFileInUse('C:\xx.txt');
Application.ProcessMessages;
Sleep(300); // 休息一下
until Not InUse;
// ...
end;
|
Miles
尊榮會員 發表:27 回覆:662 積分:622 註冊:2002-07-12 發送簡訊給我 |
引言: 可是這樣不是也會有同時使用的問題嗎?引言: Hi shihchin您好: 可以在INI裡多設一個識別值, 當有人使用使設為1, 計算完回填時再設為0, 所以需使用此INI時就可直接讀此值來作判斷 我不是高手, 高手是正在銀幕前微笑的人. >>< face="Verdana, Arial, Helvetica">舉個例子:var IniF : TIniFIle; begin INIF := TINIFile.Create(ExtractFilePath(Application.ExeName) 'MyIni.INI'); if IniF.ReadInteger('個人設定','執行中', 0) = 1 then 被開啟 exit else begin 未被開啟 IniF.WriteInteger('個人設定','執行中', 1); ...開始自己的計算, 計算完後再回寫... end; INIF.Free; end;一開始就先判斷並回寫, 這時間非常短 我不是高手, 高手是正在銀幕前微笑的人.
------
我不是高手, 高手是正在銀幕前微笑的人. |
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
|
AB
高階會員 發表:166 回覆:262 積分:125 註冊:2003-08-21 發送簡訊給我 |
|
shihchin
一般會員 發表:10 回覆:12 積分:4 註冊:2002-12-18 發送簡訊給我 |
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
|
anpino
版主 發表:31 回覆:477 積分:231 註冊:2003-01-02 發送簡訊給我 |
HANDLE hFile; HANDLE hAppend; DWORD dwBytesRead, dwBytesWritten, dwPos; char buff[4096]; do { if (ReadFile(hFile, buff, 4096, &dwBytesRead, NULL)) { dwPos = SetFilePointer(hAppend, 0, NULL, FILE_END); LockFile(hAppend, dwPos, 0, dwBytesRead, 0); WriteFile(hAppend, buff, dwBytesRead, &dwBytesWritten, NULL); UnlockFile(hAppend, dwPos, 0, dwBytesRead, 0); } } while (dwBytesRead == 4096); // Close both files. CloseHandle(hFile); CloseHandle(hAppend);數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D [url="http://anpino.begin.8d8d.com"]Programmers Guide[/url] 發表人 - anpino 於 2003/11/20 09:42:55 發表人 - anpino 於 2003/11/20 09:45:44 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |