我做了一个网络监听程序,可是在我退出时提示出错,一下是错误内容
project ipsearch.exe raised execption class ESocketError with message 'WSACleanup',process stopped, use step or run to continue.
点击OK后,提示如下弹出一个error对话框:runtime error 217 at 00475B2F.
请各位大侠指点一下,小弟实在解决不了
我的部分代码如下:
procedure TForm1.N7Click(Sender: TObject);  //退出Button
begin
  close;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    closesocket(MySocket);
    WSACleanup();
end;

解决方案 »

  1.   

    可是关键是我不知道GetLastError()应该放在哪里,因为我用debug调试时发现是执行到
    program IPSearch;
    uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1},
      Unit2 in 'Unit2.pas' {AboutBox: TFrame},
      Unit3 in 'Unit3.pas';
    {$R *.res}
    begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
      GetLastError();
    end.--------------->这句时出现的错误
    不知道是什么原因!
      

  2.   

    而且我在Form1里如果把FormClose去掉的话,就不会出现错误了
      

  3.   

    把wsacleanup放在你的.pas的finalization部分, 其他代码里不需要调用. finalization部分是整个程序退出时自动调用的.