记录类型的问题(50)

  • 主题发起人 主题发起人
  • 开始时间 开始时间

Unregistered / Unconfirmed
GUEST, unregistred user!
PInformationDataRec = ^TInformationDataRec;TInformationDataRec = packed record Brith_Date: TDateTime; Sex,Name,Adress,Phonenumber: string; end;有一个TXT文本文件,里面记录了人事资料(生日,性别,姓名,地址,电话号码)想把TXT文件里的数据装入PInformationDataRec纪录里面应该怎样写语句
 
能举个例吗.什么是package 关键字的我不是专业的.不明白.
 
TInformationDataRec = packed record Brith_Date: TDateTime; Sex:String[2]. Name:String[20]; Adress:String[100]; Phonenumber: String[30]; end;用FileWrite可以将数据写入文件,FileRead可以从文件中读出数据。
 
对于字节对齐(用了 packed 关键字的) 可以把相应结构存成二进制文件, 读取时就可以一整块读取到相应结构中了;如查写成文本的话, 得逐行读取到字符串, 然后按照你的写入规则进行解析出每一个字段, 再赋到结构中~----------------错啦,不好意思, 是 packed ~, 字节对齐,
 
TInformationDataRec = packed record Brith_Date: TDateTime; Sex:String[2]. Name:String[20]; Adress:String[100]; Phonenumber: String[30]; end;用FileWrite可以将数据写入文件,FileRead可以从文件中读出数据。最关键的没写出来.怎么用FileWrite可以将数据写入文件怎么用FileRead可以从文件中读出数据。怎样把FileWrite函数和TInformationDataRec = packed record记录关连起来.谢谢你的帮忙.
 
procedure TForm1.Button2Click(Sender: TObject); type TInformationDataRec = record Name,Phonenumber: string; end;var ptr, ptr2 : ^integer; i : integer; pp:^tInformationDataRec;begin GetMem(ptr, sizeof(integer) * 20); GetMem(pp,sizeof(TInformationDataRec) * 20); ptr2 := ptr; //保留原始指针位置 for i := 2 to 19 do begin ptr^ := i; Inc(ptr); end;//ptr:= @ptr^; dec(ptr) ; dec(ptr); for i := 2 to 19 do begin pp^.Name := inttostr(i); Inc(pp); end;dec(pp);dec(pp);//edit9.Text:=inttostr(Integer(ptr)); //指针的内存地址//edit9.Text:=inttostr(ptr^) ; //指针的内容edit9.Text:=inttostr(Integer(pp)); //指针的内存地址edit9.Text:=(pp^.Name) ;FreeMem(ptr2); // FreeMem(pp); end;自己解决了.
 
{$I-} // 注意要写哦typeTInformationDataRec = packed record Brith_Date: TDateTime; Sex:String[2]. Name:String[20]; Adress:String[100]; Phonenumber: String[30]; end;var tfl:textfile; lfl:file; onerec:TInformationDataRec; tms:string;begin assignfile(tfl,'你的txt文件'); assignfile(lfl,'准备输出的文件,例如ok.bin'); reset(tfl); rewrite(lfl,1); while (true) do begin readln(tfl,tms); //读例如生日,姓名等 if ioresult<>0 then break; // 自己在这儿得到实际的例如生日,姓名等。至于如何得到,你知道txt文件的内容哦 onerec.Brith_Date:=trim(tms); readln(tfl,tms); //读例如生日,姓名等 if ioresult<>0 then break; // 自己在这儿得到实际的例如生日,姓名等。至于如何得到,你知道txt文件的内容哦 onerec.Sex:=trim(tms); // 得到了txt文件中一个完整的所有的信息后 blockwrite(lfl,onerec,sizeof(onerec)); if ioresult<>0 then break; end; closefile(tfl); closefile(lfl);// 搞定,呵呵!end;
 
不要用string,用字符数组。
 
记录里面,String不制定长度时候默认为255字节,所以制定长度后更是可以用,呵呵
 
to 楼上>记录里面,String不制定长度时候默认为255字节,所以制定长度后更是可以用,呵呵好象不是这样吧?除非是ShortString。
 
反转过来,如果想把PInformationDataRec纪录的数据装入TXT文件或者内存流里面应该怎样写语句
 
帮你顶,接个分
 
分数不够还可以加
 

Similar threads

后退
顶部