刪除一條記錄的基本思路是
for i:=CurrentRec+
begin
seek(MethodFile
read(MethodFile
seek(MethodFile
Write(MethodFile
end;
Truncate(MethodFile)
為避免誤刪除
Count := Count
ChangeGrid;
完整的程序如下
procedure TRecFileForm
var
NewFile: MethodFileType;
MethodRec: TMethod;
NewFileName: String;
i: Integer;
begin
if FileOpened = False then Exit;
CurrentRec := StringGrid
if CurrentRec <
if MessageDlg(
[mbYes
begin
HazAttr
for I := CurrentRec+
begin
seek(MethodFile
read(MethodFile
seek(MethodFile
Write(MethodFile
end;
Truncate(MethodFile)
Count := Count
ChangeGrid;
end;
end;
這裡所顯示的刪除操作簡單明了
這種思想的核心是創建一個新文件保存更新後的內容
procedure TRecFileForm
var
NewFile: MethodFileType;
MethodRec: TMethod;
NewFileName: String;
i: Integer;
begin
if FileOpened = False then Exit;
CurrentRec := StringGrid
if CurrentRec <
if MessageDlg(
[mbYes
begin
HazAttr
NewFileName := ChangeFileExt(FileName
try
AssignFile(NewFile
ReWrite(NewFile)
Except
On EInOutError do
begin
Rename(MethodFile
Exit;
end;
end;
for i :=
if I <> CurrentRec+
begin
MethodRec := GridToRec(i)
Write(NewFile
end;
closeFile(MethodFile)
try
AssignFile(MethodFile
Reset(MethodFile)
except
on EInOutError do
begin
DeleteFile(FileName)
AssignFile(MethodFile
Reset(MethodFile)
Rename(MethodFile
Exit;
end;
DeleteFile(NewFileName)
Count:=Count
ChangeGrid;
end;
end;
對於記錄插入
對不同方法的評估結果
為保證結果顯示的正確性
當用戶單擊
在VB中我做過同樣的工作
procedure Val(Str: String;var V; var Code: Integer)
V是由Str轉換成的整型或實型數
如果轉換後的數超出了我們的范圍
我們把輸入檢查放在對話框的OnCloseQuery事件處理過程中
[
From:http://tw.wingwit.com/Article/program/Delphi/201311/25236.html