Q&A

  • 델파이 초보 입니다. FileRead에 관한 질문입니다.
안녕하세요...

<!--CodeS-->
var
   FileName : string;
   F : Integer;
   CharBuf : Array [0..99] of Char;
   StrBuf : string;
begin
     PF := FileOpen(FileName, fmOpenReadWrite);
     FileRead(PF,CharBuf,100);
  
     //이곳에 들어갈 로직을 모르겠습니다.

     FileClose(PF);
end;
<!--CodeE-->

읽어드린 CharBuf의 내용을 StrBuf(문자열)로 옮기려고 하는데
포인터도 써보고 여러가지 방법을 찾아봐도
워낙 기본적인 이해가 부족하여 해결을 못했습니다.

고수분들은 쉽게 할수 있을거 같은데 도와주세요.


2  COMMENTS
  • Profile
    최용일 2005.08.02 21:51
    안녕하세요. 최용일입니다.

    그냥 대입하시면 됩니다.

        StrBuf := CharBuf;

    다만 CharBuf가 널종료문자열 형태라서... 중간에 널값(#0)이 들어가면 StrBuf에 값이 제대로 안들어갑니다.
    아래와 같이 하시면 CharBuf 중간에 널종료문자가 있더라도 확실히 들어가긴 합니다.

        SetLength(StrBuf, SizeOf(CharBuf));
        Move(CharBuf[0], StrBuf[1], SizeOf(CharBuf));


    ^^ 항상 즐코하세요...

  • Profile
    허강우 2005.08.04 01:13
    원하시는게 이런것인지는 모르지만 읽은것을 간단하게 string으로 저장해 보시려고 한다면
    이렇게 하셔도 좋을것 같군요.
    아래는 샘플입니다.

    procedure TMainForm.Button1Click(Sender: TObject);
    var
      ACName : Array [0..20] of char;
      ASName: string;
    begin
      ACName[0] := 'a';
      ACName[1] := 'b';
      ACName[2] := 'c';
      ACName[3] := 'd';
      ACName[4] := Chr($00);
      ACName[5] := Chr($00);
      ACName[6] := Chr($01);
      ACName[7] := Chr($02);
      ACName[8] := 'e';
      ACName[9] := 'f';

      ASName := PChar(@ACName[0]);
      Debug(ASName);

    end;

    출력 : abcd

    pchar은 C 스타일의 문자열을 리턴하므로 널문자를 종료 문자로 인식하여
    string에 넘겨 줍니다.

    다들 휴가 가고...혼자 지키는 회사가 그리 심심하지는 않네요..ㅋㅋ