Q&A

  • sendmessage 하면 이상하게 에러가 나네요
다음의 코드를 실행하면
다 정상적으로 처리하고 나서 끝에 이상하게 에러가 납니다.
즉 Procedure내에서는 에러가 않나고,결과도 정상적으로 내는데
이상하게 마지막에 에러사인이 뜹니다.

왠지 모르겠네요 .....

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    procedure process(var pp:tmessage); message wm_user+400 ;
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.process(var pp:tmessage) ;
var
a:pchar ;
b:string ;
begin
getmem(a,pp.LParam+1)  ;
move( (@pp.wparam)^ ,a,pp.LParam  ) ;
try
memo1.lines.add(strpas(a)) ;
except
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
a:pchar;
k:integer;
begin
getmem(a,7) ;
a:='sdfsdf' ;
k:=integer(a) ;
SendMessage( self.handle,wm_user+400,k,length(a)) ;
end;
1  COMMENTS
  • Profile
    최용일 2002.01.22 03:12
    안녕하세요. 최용일입니다.

    포인터 계산이 잘못되었네요.. 그리고 메모리 누수도 생기는 군요... getmem으로 할당받은 메모리를 해제해주는 곳이 없네요. 두군데 모두다... 다 쓴뒤에는 FreeMem을 이용해서 메모리 해제해주세요...

        move( (@pp.wparam)^ ,a,pp.LParam  ) ;
    =============>
        move( PChar(pp.wparam)^ , a^, pp.LParam  ) ;

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