record FileWrite FileRead string 请大虾,高手都来帮帮我这个菜鸟吧! 我已经三天没睡觉了,5555~~~~ Help me pl

W

wlmmlw

Unregistered / Unconfirmed
GUEST, unregistred user!
record FileWrite FileRead string 请大虾,高手都来帮帮我这个菜鸟吧! 我已经三天没睡觉了,5555~~~~ Help me please !!!!!! (10分)<br />有记录如下
Tmyrecord = record
num1: integer;
num2: TDateTime;
num3: Cardinal;
num4: String[25];
end;
请问如何才可以比较简便的把这个记录写入文件或是从文件中读取出来?
(文件不是记录型文件)
FileHandle = FileCreate(FileName);
FileWrite(FileHandle, ...);
FileRead(FileHandle, ...);
 
用pascal的文件类型

var
f: File of TMyRecord;
OneRec: TMyRec;
begin
assignFile(f, FileName);
//写文件
Rewrite(f);
//追加
//Append(f);
Write(f, OnRec);
//或者是读文件
//Reset(f);
//Read(f, OnRec)
CloseFile(f);
end;

不过在一次assignfile 和 closefile 之间只能进行 rewrite append reset 三种操作中的任何一种
不能同时进行
 
真的很感谢您能来看我的贴子,不过我的文件并不是
f: File of TMyRecord;的,能不能说一说用FileCreate所创建的文件的?
 
procedure TForm1.Button1Click(Sender: TObject);
var
rec: TMyRecord;
FHandle: integer;
begin
rec.num1 := 1;
rec.num2 := now;
rec.num3 := 3;
rec.num4 := '123';
FHandle := FileCreate('c:/test');
FileWrite(FHandle,rec,SizeOf(TMyRecord));
FileClose(FHandle);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
rec: TMyRecord;
FHandle: integer;
begin
FHandle := FileOpen('c:/test',fmOpenRead);
FileRead(FHandle,rec,SizeOf(TMyRecord));
memo1.Lines.Add(DateTimeToStr(rec.num2)+#13#10+rec.num4);
FileClose(FHandle);
end;
 
> FHandle := FileOpen('c:/test',fmOpenRead);
> FileRead(FHandle,rec,SizeOf(TMyRecord));
> memo1.Lines.Add(DateTimeToStr(rec.num2)+#13#10+rec.num4);
> FileClose(FHandle);

好象不行啊,读出来的记录乱七八糟。
 
读写记录数组

type
TMyRec = record
Field1 : integer ;
Field2 : string ;
end ;
TMyRecArray = array [0..9] of TMyRec ;
var
MyArray : TMyRecArray ;
MyRec : TMyRec ;
RecFile : file of TMyRec ;
begin
{...some code that intializes MyArray goes here...}
AssignFile( RecFile, 'MYREC.FIL' ) ;
ReWrite( RecFile ) ;
for i := 0 to 9 do
begin
Write( RecFile, MyRec ) ;
end ;
CloseFile( RecFile ) ;
end;

还可以用Read来读记录,用Seek来定位记录(起始记录为0)
 
请注意我的文件不是RecFile : file of TMyRec ;
请高手帮帮忙吧。
 
多人接受答案了。
 
以上两种用法到底哪种最好最合理?
 
顶部