Q&A

  • TLIist를 이용하여 코딩중에 아이템 넣다 빼었다가 잘안되요
menuHideClick 에서 리치에디터에 있는 값을 TList에 추가하고
menuShowClick에서 리스트에 있는값을 얻을려고 하는데
포인터를 잘못 사용해서 그런지 안되네요......

델파이 초짜예요....

도와주세요...

그리고 어디 포인터에 관한 자세한 내용 없읍니까?  =+=
===========================================================
procedure TMainForm.menuHideClick(Sender: TObject);
var
  gItem : pointer;   // getItem
  str : string;
begin
  str := rEdit.SelText;
  CodeList.Add(@str);
  ShowMessage(IntToStr(CodeList.Count));

  gItem := CodeList.First;
  ShowMessage('add: '+String(gItem^));  /// ==> 정상적으로 출력됨
end;
================================================================
procedure TMainForm.menuShowClick(Sender: TObject);
var
  gItem : pointer;   // getItem
begin
  gItem := CodeList.First;
  ShowMessage('pop: '+String(gItem^));         /// ===> 아무런 내용이 출력 되지않음
  ShowMessage(IntToStr(CodeList.Count));
end;
1  COMMENTS
  • Profile
    최용일 2002.11.16 01:46
    안녕하세요. 최용일입니다.

    님이 하신코드가 이론상으론 맞는데.... string형을 쓰신게 잘못됬네요...

    string형은 개비지콜렉션을 이용하기 때문에 범위를 벗어나면 자동으로 할당받은 메모리를 헤제합니다...

    그래서 범위내에 있을때(menuHideClick)에서는 제대로 출력되지만 범위를 벋어났을때(menuShowClick)에는 출력이 안되는 겁니다...

    string말고 다른 자료형을 쓰세요...
    PChar나 배열을 써서 메모리할당받아서 리스트에 넣으시면 될겁니다...

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