Q&A

  • 텍스트파일생성저장에서 에러가 생기네요
안녕하세요 꾸벅~!

function TForm1.FileExists(FileName: string): Boolean;

var

F: TextFile;

begin

{$I-}

AssignFile(F, FileName);

FileMode := 0;

Reset(F);

CloseFile(F);

{$I+}

FileExists := (IOResult = 0) and (FileName <> '');

end;



procedure TForm1.Button1Click(Sender: TObject);

var

F: TextFile;

Password: String;

begin

if FileExists('D:worksky.txt') then

begin

AssignFile(F, 'D:worksky.txt');

Reset(F);

Read(F);

Edit1.Text := Password;

end;

end;



procedure TForm1.Button2Click(Sender: TObject);

var

F: TextFile;

Password: Pchar;

Len: DWord;

begin

Len := Length(Edit1.Text);

Password := StrAlloc(1 + Len);

if Length(Edit1.Text) <> 0 then

begin

if FileExists('D:worksky.txt') = False then

FileCreate('D:worksky.txt');

AssignFile(F, 'D:worksky.txt');

Rewrite(F);

Write(F, Password);

end;

end;

이렇게 했을때 Write(F, Password)에서 IO에러가 생김니다 저의 의도는

간단한 텍스트 파일 생성후 Stirng의 저장과 읽기입니다. 너무 초보라서

위에것도 도움말보고 열심히 해보긴 했는데 여기서부터는 모르겠습니다.

자세한 답변 부탁드립니다. 꾸벅~! 새해 복 많이 받으세요

2  COMMENTS
  • Profile
    배불뚝 2000.02.08 01:29
    송수현 wrote:

    > 안녕하세요 꾸벅~!

    > function TForm1.FileExists(FileName: string): Boolean;

    > var

    > F: TextFile;

    > begin

    > {$I-}

    > AssignFile(F, FileName);

    > FileMode := 0;

    > Reset(F);

    > CloseFile(F);

    > {$I+}

    > FileExists := (IOResult = 0) and (FileName <> '');

    > end;

    >

    > procedure TForm1.Button1Click(Sender: TObject);

    > var

    > F: TextFile;

    > Password: String;

    > begin

    > if FileExists('D:worksky.txt') then

    > begin

    > AssignFile(F, 'D:worksky.txt');

    > Reset(F);

    > Read(F);

    > Edit1.Text := Password;

    > end;

    > end;

    >

    > procedure TForm1.Button2Click(Sender: TObject);

    > var

    > F: TextFile;

    > Password: Pchar;

    > Len: DWord;

    > begin

    > Len := Length(Edit1.Text);

    > Password := StrAlloc(1 + Len);

    > if Length(Edit1.Text) <> 0 then

    > begin

    > if FileExists('D:worksky.txt') = False then

    > FileCreate('D:worksky.txt');

    > AssignFile(F, 'D:worksky.txt');

    > Rewrite(F);

    > Write(F, Password);

    > end;

    > end;

    > 이렇게 했을때 Write(F, Password)에서 IO에러가 생김니다 저의 의도는

    > 간단한 텍스트 파일 생성후 Stirng의 저장과 읽기입니다. 너무 초보라서

    > 위에것도 도움말보고 열심히 해보긴 했는데 여기서부터는 모르겠습니다.

    > 자세한 답변 부탁드립니다. 꾸벅~! 새해 복 많이 받으세요





    안녕하세요..

    답변이 될지는 모르지만, button1click event에서 file을 열고 read한 후에 closefile하지 않으셔서 생기는 오류가 아닌가 합니다. 제가 볼 때 button1을 클릭한 후에 edit1에서 입력하고 나서 ,button2를 클릭하는것 같은데, close하지 않은 동일한 file(..sky.text).을 다시 assignfile하면 에러가 발생합니다. 물론 button2를 클릭한 후에도 꼭 closefile하시기 바랍니다.

    그리고, button2 클릭시 password를 edit1.text에서 받아오려고 하시는 것 같은데, 저의 짧은 소견은, 바로 password := Pchar(edit1.text);하셔야 제대로 들어갈 것 같습니다.

    아는 것도 없으면서 괜히 헷갈리게 한 건 아닌지 걱정이네요.

    그럼 좋은 오후되세요. 새해 복 많이 받으시고...

  • Profile
    양병규 2000.02.05 23:15
    TStringList라는 놈이 있슴다. 이놈을 이용하면 비교적 간편하게 텍스트파일을 다룰 수 있습니다.



    //텍스트 파일의 첫번째라인을 Edit에 보여주기



    const

    FileName = 'C:File.txt';



    procedure TForm1.Button1ClickI(Sender: TObject);

    begin

    if FileExists( FileName ) then

    with TStringList.Create do

    try

    LoadFromFile( FileName );

    if Count > 0 then Edit1.Text := Strings[ 0 ];

    finally

    Free;

    end;

    end;



    //Edit1.Text를 텍스트파일로 쓰기



    procedure TForm1.Button2Click(Sender: TObject);

    begin

    with TStringList.Create do

    try

    Add( Edit1.Text );

    SaveToFile( FileName );

    finally

    Free;

    end;

    end;



    FileExists는 SysUtils.pas에 있습니다.



    그럼

    평안하시길~