Q&A

  • 델파이에서 이진파일 생성하여 쓰는 방법좀 가르켜 주세요
안녕하세요...

고수님들의 많은 도움을 받고 있습니다.

제가 이진파일을 생성하여 데이터를 읽고 쓰기를 하고 싶은데...

델파이 책을 보구 그대로 코딩 했는데 다음과 같은 에러가 나오네요...



데이터는 integer 형 두개 하고 string 형 두개를 레코드 형태로 입력 받아 파일에 저장하여 읽고 쓸수 있게 하는 건데... 고수님들의 가르침을 받고 싶습니다.



책에 나온데로 쓴것은...

type

TMyRecord = record

ID : Integer;

Name : String;

end;



var

Form1: TForm1;

MyFile : File of TMyRecord;



implementation



{$R *.DFM}



procedure TForm1.Button1Click(Sender: TObject);

begin

AssignFile(MyFile, 'MyFile.dat');

if FileExists('MyFile.dat') then Reset(MyFile) else Rewrite(MyFile);

end;





이것이고 에러내용은

[Error]Unit1.pas[27]:Type 'TMyRecord' needs finalization - not allowed in file type

입니다.



4  COMMENTS
  • Profile
    kylix 2001.04.13 00:37
    type

    {$H-}

    TMyRecord = record

    ID : Integer;

    Name : String;

    end;

    {$H+}



    var

    Form1: TForm1;

    MyFile : File of TMyRecord;



    implementation



    {$R *.DFM}



    procedure TForm1.Button1Click(Sender: TObject);

    begin

    AssignFile(MyFile, 'MyFile.dat');

    if FileExists('MyFile.dat') then Reset(MyFile) else Rewrite(MyFile);

    end;



    loke7777 wrote:

    > 안녕하세요...

    > 고수님들의 많은 도움을 받고 있습니다.

    > 제가 이진파일을 생성하여 데이터를 읽고 쓰기를 하고 싶은데...

    > 델파이 책을 보구 그대로 코딩 했는데 다음과 같은 에러가 나오네요...

    >

    > 데이터는 integer 형 두개 하고 string 형 두개를 레코드 형태로 입력 받아 파일에 저장하여 읽고 쓸수 있게 하는 건데... 고수님들의 가르침을 받고 싶습니다.

    >

    > 책에 나온데로 쓴것은...

    > type

    > TMyRecord = record

    > ID : Integer;

    > Name : String;

    > end;

    >

    > var

    > Form1: TForm1;

    > MyFile : File of TMyRecord;

    >

    > implementation

    >

    > {$R *.DFM}

    >

    > procedure TForm1.Button1Click(Sender: TObject);

    > begin

    > AssignFile(MyFile, 'MyFile.dat');

    > if FileExists('MyFile.dat') then Reset(MyFile) else Rewrite(MyFile);

    > end;

    >

    >

    > 이것이고 에러내용은

    > [Error]Unit1.pas[27]:Type 'TMyRecord' needs finalization - not allowed in file type

    > 입니다.

    >

  • Profile
    loke7777 2001.04.13 01:46
    답변 감사합니다.

    그런데... write 할려고 하는데.... 다음과 같은 I/O 에러가 나오네요 흑흑 해결좀 해주세요.



    Project test.exe raised exception class EInOutError with message 'I/O error 6'. Process stoped~





    TMyRecord.Id := 123;

    TMyRecord.Name := '홍길동';



    Write(MyFile , TMyRecord);



    이렇게 썼는데...



    지발 부탁합니다.







  • Profile
    나그네 2001.04.13 02:02
    TMyRecord.Name의 변수형 String을 ShortString형태로 지정해 보세요



    loke7777 wrote:

    > 답변 감사합니다.

    > 그런데... write 할려고 하는데.... 다음과 같은 I/O 에러가 나오네요 흑흑 해결좀 해주세요.

    >

    > Project test.exe raised exception class EInOutError with message 'I/O error 6'. Process stoped~

    >

    >

    > TMyRecord.Id := 123;

    > TMyRecord.Name := '홍길동';

    >

    > Write(MyFile , TMyRecord);

    >

    > 이렇게 썼는데...

    >

    > 지발 부탁합니다.

    >

    >

    >

  • Profile
    loke 2001.04.13 03:33
    1