Q&A

  • [re] [질문] TStringList Object ...
흠.. 소스가 좀 부족하게 올라 와서 그랬나요.....
아래 소스를 보시면..

slValue : TStringList ;


procedure TForm1.btn1Click(Sender: TObject);
var

  nListCnt : Integer ;
  szFileName , szTmp : string ;

begin

    if LocalOpen.Execute then
    begin

      for nListCnt := 0 to LocalOpen.Files.Count - 1 do
      begin

        szFileName := LocalOpen.Files.Strings[ nListCnt ] ;
        szTmp := GetNameHash( szFileName ) ;
        slValue.AddObject( szFileName , TObject( szTmp ) ) ;

      end ;

    end ;

end;

procedure TForm1.btn2Click(Sender: TObject);
var
  nListCnt  : Integer ;
  szTmp : String ;
begin
      for nListCnt := 0 to slValue.Count - 1 do
      begin
        //mmo1.Lines.Add( string( slValue.Objects[ nListCnt ] ) ) ; --> Out of memory
        //szTmp := string( slValue.Objects[ nListCnt ]  ) ; --> Invalid pointer operation
        //ShowMessage( string( slValue.Objects[ nListCnt ] ) ) ; --> 아무 이상없음
      end ;

end ;

이상이 테스트 코드의 전부 입니다.












>안녕하세요.
>
>왜 그런지 모르겠는데요.
>
>아래 코드에서  오브젝트 값을 메모장 이나 변수에 넣으려고 하면 예외가 생기네요..
>헌데... 메시지 박스로 뿌리면 예외 없이 잘 되어 지구요..  
>흠....
>무슨 차이 일까요?
>
>procedure TForm1.btn2Click(Sender: TObject);
>var
>  nListCnt  : Integer ;
>  szTmp : String ;
>begin
>      for nListCnt := 0 to slValue.Count - 1 do
>      begin
>        //mmo1.Lines.Add( string( slValue.Objects[ nListCnt ] ) ) ; --> Out of memory
>        //szTmp := string( slValue.Objects[ nListCnt ]  ) ; --> Invalid pointer operation
>        //ShowMessage( string( slValue.Objects[ nListCnt ] ) ) ; --> 아무 이상없음
>      end ;
>
>end;
>
>날이 많이 쌀쌀해 졌네요.
>
>다들 감기 조심하세요.
>
1  COMMENTS
  • Profile
    구창민 2009.12.03 02:42
    아..어떤 문자열의 번지를 대입하셨다면..

    PChar 로 치환하시면 될거예요..

    이를테면..

    mmo1.Lines.Add( PChar( slValue.Objects[ nListCnt ] ) ) ;

    그럼..즐거운 프로그래밍 하시구요~