请各位帮忙!!(急!!) (80分)

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

hug

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手,我定义的如下结构:
type
myrec=record
dos1:integer;
gra:word;
end;
myarr=array of myrec;
var
Myarray:myarr;
请问各位高手,怎么存到一个文件中,以后,我想通过选择已存的dos1,
和通过点击一位图获得的灰度值,保存到文件中,鼠标点击一次,
保存(加入)一个记录,小弟刚来,分不多,先谢谢了!
最好有源码或例子(解决后另加50分)!
 
delphi有例子的,有两种文件textfile,用于操作ascii文件
还有一种,操作二进制的
你看帮助,关键字textfile,查看相关的说明和例子就可以了
 
可以用记录型文件。
 
说白了,就是将动态数组放到文件当中,
以后读写时,不覆盖以前的纪录,谁有代码和例子,
各位大侠,帮帮忙吧!
谢谢了!
 
随手写的,你自己调试一下吧:
procedure SaveRecs(FileName: string; MyArray: myarr);
var
s: TMemoryStream;
i, len: Integer;
begin
s := TMemoryStream.Create;
if FileExists(FileName) then
s.LoadFromFile(FileName);
s.Position := s.Size;
len := SizeOf(myrec);
for i := Low(MyArray) to High(MyArray) do
s.Write(MyArray, len);
s.SaveToFile(FileName);
s.Free;
end;

procedure LoadRecs(FileName: string; MyArray: myarr);
var
s: TMemoryStream;
i, len, Count: Integer;
begin
s := TMemoryStream.Create;
s.LoadFromFile(FileName);
len := SizeOf(myrec);
Count := s.Size div len;
SetLength(MyArray, Count);
for i := 1 to Count do
s.Read(MyArray[i - 1], len);
s.Free;
end;
 
首先谢谢大家,据我所知,动态数组的记录不能
写入类型文件,我想实现这样的功能 ,例如第一次写入时:
MyArray[0].doe1:=strtoint(Edit1.Text);
MyArray[0].gra:=grayvalue;(其中grayvalue是已计算出的值).
下一次运行该代码,写入的是
MyArray[1].doe1:=strtoint(Edit1.Text);
MyArray[1].doe1:=grayvalue;
通过循环实现。这时文件中的数据为:
MyArray[0]和MyArray[1];怎样实现?
我是这样存的:但下次写时把前一次的冲掉了
请问怎么办?
DoseFileName:='123';
FileHandle := FileCreate(DoseFileName);
showmessage(inttostr(filehandle));
if FileHandle>=0 then
begin
Setlength(myarray,3);
Myarray[0].dosevalue:=strtoint(ComboBox1.Text);
Myarray[0].grayvalue:=round(gray);

begin
for i:=0 to 2 do
Filewrite(Filehandle,Myarray,sizeof(Myarray));
end;

FileClose(filehandle);
end;
请大家帮我修改一下!谢谢了。
 
email地址!
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
875
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
802
DelphiTeacher的专栏
D
D
回复
0
查看
827
DelphiTeacher的专栏
D
后退
顶部