有很多不同型別的type,用 結構檔案 存成.bat檔案,例如下面的
type
a=packed record
a1:integer;
a2:integer;
end;
type
b=packed record
b1:double;
b2:integer;
end;
type
c=packed record
c1:char;
c2:double;
end;
var
af:file of a;
bf:file of b;
cf:file of c;
能不能把用一個函式或者程序把上面不同的型別都存到檔案中去,即把af,bf,cf當變數傳遞。
要是沒有的話需要寫好多重復代碼。
uj5u.com熱心網友回復:
可以寫成ini檔案讀取結構體也可以當做引數傳遞的
uj5u.com熱心網友回復:
ini查找檔案太慢,怎么把af:file of a;當變數傳遞。
求大神。
uj5u.com熱心網友回復:
//處理同一結構體寫入同一檔案
type
a=packed record
a1:integer;
a2:integer;
end;
type
b=packed record
b1:double;
b2:integer;
end;
type
c=packed record
c1:char;
c2:double;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure WriteData(AStream:TStream;AValue:Pointer;ASize:Integer);
begin
AStream.WriteBuffer(AValue^,ASize);
end;
procedure TForm1.btnWriteAClick(Sender: TObject);
var
i:Integer;
aa:a;
fs:TFileStream;
mode:Word;
begin
mode:=fmCreate;
if FileExists('c:\a.dat') then mode:=fmOpenWrite;
fs:=TFileStream.Create('c:\a.dat',mode);
try
fs.Seek(0,soEnd);
for i:=1 to 9 do
begin
aa.a1:=i;
aa.a2:=i*10+i;
WriteData(fs,@aa,sizeof(aa));
end;
finally
fs.Free;
end;
end;
procedure TForm1.btnReadAClick(Sender: TObject);
var
fs:TFileStream;
aa:a;
i,iC:Integer;
begin
fs:=TFileStream.Create('c:\a.dat',fmOpenRead);
try
iC:=fs.Size div sizeof(aa);
for i:=1 to iC do
begin
fs.ReadBuffer(aa,sizeof(aa));
showmessage(inttostr(aa.a1)+','+inttostr(aa.a2));
end;
finally
fs.Free;
end;
end;
procedure TForm1.btnWriteBClick(Sender: TObject);
var
i:Integer;
bb:b;
fs:TFileStream;
mode:Word;
begin
mode:=fmCreate;
if FileExists('c:\b.dat') then mode:=fmOpenWrite;
fs:=TFileStream.Create('c:\b.dat',mode);
try
fs.Seek(0,soEnd);
for i:=1 to 10 do
begin
bb.b1:=i;
bb.b2:=i*10+i;
WriteData(fs,@bb,sizeof(bb));
end;
finally
fs.Free;
end;
end;
uj5u.com熱心網友回復:
http://www.json.orguj5u.com熱心網友回復:
你這種功能方法可以存盤,但是匯出資料時不好處理
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/50820.html
標籤:語言基礎/算法/系統設計
上一篇:QRP檔案如何轉成TXT檔案
