使用WSAAsyncGetHostByName时出现错误‘missing operator or semicolon',但是无论如何也看不出错误:
procedure TForm1.FormCreate(Sender: TObject);
var
  wsadata:TWSAData;
begin
  if(wsaStartup(makeword(2,0),wsadata)<>0) then
  raise Exception.Create('winsock version error');
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  wsaCleanup;
end;procedure TForm1.wsaasyncGetHostByNameClick(Sender: TObject);
begin
  hAsyncTaskhandle:=WSAAsyncGetHostByName(Handle,WM_RESOLVED,pchar(edit1.Text),pchar(@buf),MAXGETHOSTSTRUCT);
end;
错误就显示在上一行,望各位为我这样的苯鸟指点一下。

解决方案 »

  1.   

    Handle是一个结构啊,能直接用在这吗?
      

  2.   

    var
      Form1: TForm1;
      hAsyncTaskhandle:Thandle;
      buf:hostent;
      

  3.   

    pchar(@buf),我想是这里出的问题。去掉 @ 看看。
      

  4.   

    你可以这样试试看;
    buf:hostent;
    WSAAsyncGetHostByName(Handle,wm_paint,pchar(edit1.Text),@buf,sizeof(buf));
    or
    WSAAsyncGetHostByName(Handle,wm_paint,pchar(edit1.Text),@buf,MAXGETHOSTSTRUCT);
    另外WM_RESOLVED是个什么事件啊?学习一下。
      

  5.   

    把wm_paint换成WM_RESOLVED,忘记换了。