将记录类型保存到文件....

边缘998 2008-10-10 01:16:22
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type //定义文件结构
PMyData=^TMyData;//声明结构指针
TMyData=Record
Name:String;
Age:Integer;
Birthday:TDateTime;
end;
TMyDataFile=file of TMyData;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
SaveDialog1: TSaveDialog;
OpenDialog1: TOpenDialog;
ReadMemo: TMemo;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
function SaveToFileMath1(FileName:String;Data:TMyData):Boolean;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation



上面代码在DELPHI7中运行时提示红色部分出错.
错误如下:
[Error] Unit1.pas(16): Type 'TMyData' needs finalization - not allowed in file type

我记是记录类型文件是这样定义的,可今天试了下不行,为什么?哪里少了?
...全文
93 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuqianyi1974 2008-10-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 fengsh998 的回复:]
如果是这样的话,哪我此不是不能用STRING型了?对吧,
[/Quote]
可以用,1楼的用法对,我就这么用的好用
边缘998 2008-10-10
  • 打赏
  • 举报
回复
如果是这样的话,哪我此不是不能用STRING型了?对吧,
fangsp 2008-10-10
  • 打赏
  • 举报
回复
纠正一下错误:
记录型中的string不需要指定长度,系统默认就是255
4楼的正解
边缘998 2008-10-10
  • 打赏
  • 举报
回复
哦,好,试试。谢谢大家。。。
手指风 2008-10-10
  • 打赏
  • 举报
回复
String只是个指针.你需要的是保存字符到文件里.
type
PFileData = ^TFileData;
TFileData = record
FTime :TDateTime;
FSendPhone :array [0..31] of Char;
FRecPhone :array [0..31] of Char;
FContent :array [0..1023] of Char;
end;
DataFile = File of TFileData;
gwhdaxia 2008-10-10
  • 打赏
  • 举报
回复
如果没有长度,sizeof(TMyData)出来的长度也不是实际长度,String只是4,所以保存的东西也有问题
yuqianyi1974 2008-10-10
  • 打赏
  • 举报
回复
同意楼上。
string需要长度
kernelj 2008-10-10
  • 打赏
  • 举报
回复

TMyData=Record
Name:String[255];
Age:Integer;
Birthday:TDateTime;
end;


string 需要定长,大概是分配内存的需要。

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧