레코드 선언부는 다음과 같습니다.
type
DrawFile = record
Drawing:array of DrawAction;
ActNum:integer;
WStream:TMemoryStream;
end;
var
SourceStream:TMemoryStream;
TotalNum:integer;
----------------------------------------------
procedure TForm1.Button2Click(Sender: TObject);
var
DrawFile1:DrawFile;
SaveFile:TFileStream;
i:integer;
begin
SaveFile := TFileStream('c:test.dat',fmCreate);
SetLength(DrawFile.Drawing,TotalNum);
for i:=0 to TotalNum-1 do
begin
DrawFile.Drawing[i].x := 100+i;
DrawFile.Drawing[i].y := 200+i;
end;
DrawFile.ActNum := TotalNum;
DrawFile.WaveStream := TMemoryStream.Create;
DrawFile.WaveStream := SourceStream;
SaveFile.write(DrawFile,sizeof(DrawFile));
SaveFile.Free;
end;
DrawAction은 또다른 레코드 형입니다.
DrawFil이 DrawAction이라는 레코드를 동적 배열로 포함하고 있으며
메모리스트림 변수역시 가지고 있습니다.
SourceStream은 다른 프로시저에서 가공된 스트림 변수이며
TotalNum 역시 다른 프로시저에서 가공괸 integer형 변수입니다.
레코드 데이터를 넣을때에는 배열은 setlength() 함수를 통하여
그 크기를 동적으로 지정합니다.(정적 배열 사용불가)
이런 레코드형을 파일로 저장하려면 어떻게 해야하나요.
TFilestream.write 로 저장하려고 하였는데 write() 함수의 2번째 인자가
저장할 변수의 사이즈를 넣어야하더군요. 해당 레코드를 sizeof로
구하여도 제대로된 크기가 안나오고.. 어떻게 파일로 저장할수있는지....
궁금합니다. 답변좀 부탁드립니다.