안녕하세요.
지금 이틀째 막히고 있는 문제인데요. 제가 초보인지라 한번도 해본적이 없어서
질문글을 올려봅니다.
하나의 레코드형태로 레코드 배열을 만들었는데...이것을 파일로 저장하려 합니다.
배열이 아닌 레코드 자체는 파일로 저장할수 있었는데(이곳 게시판의 글을 통해)
해당 레코드를 배열로 선언한후 하나의 파일로 저장하는 방법을 알수가 없더군요.
물로 이것을 다시 불러 읽어 오는것도 제 실력으론 안되는것같습니다(워낙 초짜라..)
아래는 레코드 하나만을 저장하고 오픈하는 소스 입니다.
// record
type
DrawAction = record
StartX:integer;
StartY:integer;
EndX:integer;
EndY:integer;
PenSize:integer;
Color:integer;
Time:integer;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
SAct,TAct:DrawAction;
RecList: file of DrawAction;
begin
//init
SAct.StartX := 100;
SAct.StartY := 100;
SAct.EndX := 300;
SAct.EndY := 300;
SAct.PenSize := 3;
SAct.Color := 1;
SAct.Time := 1000;
// save
AssignFile(RecList,'test.dat');
FileMode := 1; // write only
if FileExists('test.dgp') then
Reset(RecList)
else
Rewrite(RecList);
Seek(RecList,FileSize(RecList));
Write(RecList,SAct);
CloseFile(RecList);
// open
AssignFile(RecList,'test.dat');
FileMode := 0; // read only
Reset(RecList);
while not Eof(RecList) do
begin
Read(RecList,TAct);
end;
CloseFile(RecList);
end;
그냥 루프문써서 배열의 크기만큼 읽고 쓰세요...
// Write
var
SAct,TAct: array[0..100] of DrawAction;
Index: Integer;
begin
......
for Index := 0 to 100 do
Write(RecList, SAct[Index]);
......
end;
// Read
var
SAct,TAct: array[0..100] of DrawAction;
Index: Integer;
begin
......
Index := 0;
while not Eof(RecList) do
begin
if Index > 100 then
Break;
Read(RecList, SAct[Index]);
Inc(Index);
end;
......
end;
^^ 항상 즐코하세요...