用了一個Tsavedialog控制元件。匯出文本后系統回傳錯誤the specified file was not found,但是如果文本不存在的話,文本還是能生成的。如果文本已經存在了,那么這次的文本就會加入到原來的文本里面。沒辦法只能做了一個錯誤提示,防止重復寫入一個文本。怎么改都還是要報錯,求教要怎么改?是否思路要換過?
Procedure TMOText.ConVert(const Dir:String);
var
i,v:Integer;
A:TextFile;
s:String;
begin
AssignFile(A,Dir);
try
append(A);
except
Rewrite(A);
end;
begin
Writeln(A,'start');
end;
s:='';
For i:=0 to adodsCustomer1.RecordCount-1 do
begin
For v:=0 to adodsCustomer1.Fields.Count-1 do
begin
S:=S+adodsCustomer1.Fields.Fields[v].AsString;
if v < adodsCustomer1.Fields.Count-1 then
S:=S+'|';
end;
adodsCustomer1.Next;
Writeln(A,s);
S:='';
end;
begin
Writeln(A,'END');
end;
CloseFile(A);
end;
procedure TMOText.Button3click(Sender: TObject);
var
A:TextFile;
begin
if SaveDia.Execute then
begin
if fileexists(SaveDia.FileName) then
begin
showmessage ('檔案已存在');
end else
ConVert(SaveDia.FileName);
end;
end;
uj5u.com熱心網友回復:
沒看懂你究竟想干嘛。是想保存一個檔案,如果檔案已存在則不保存? 還是想如果檔案已存在就追加內容進這個檔案?
uj5u.com熱心網友回復:
只想把資料庫里面的東西,按照固定的格式匯出文本,匯出的時候碰到問題了。本來想沒有檔案就新建一個,有的話就替換掉。結果出錯了uj5u.com熱心網友回復:
如果檔案已存在則替換掉它的話那就很簡單啊,怎么給弄得那么復雜?
var
f: TextFile;
fname: string;
begin
fname := 'c:\1.txt';
DeleteFile(fname); // 不管是否存在都先執行洗掉
AssignFile(f, fname);
try
Rewrite(f);
// 寫內容
finally
CloseFile(f);
end;
uj5u.com熱心網友回復:
如果檔案洗掉不掉,檢查下是否被其他行程打開了該檔案還未關閉。
var
f: TextFile;
fname: string;
begin
fname := 'c:\1.txt';
if DeleteFile(fname) then
begin
AssignFile(f, fname);
try
Rewrite(f);
// 寫內容
finally
CloseFile(f);
end;
end
else
raise Exception.CreateFmt('檔案 %s 洗掉失敗', [fname]);
end;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/137935.html
標籤:數據庫相關
上一篇:Delphi訊息機制
