WSAStartUP总错误. ( 积分: 10 )

  • 主题发起人 主题发起人 Yohoho999
  • 开始时间 开始时间
Y

Yohoho999

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.BitBtn2Click(Sender: TObject);
var
WSAData:TWSAData;
Err,ipaddress:dword;
hos:phostent;
begin
try
WSAStartup($101,WSAData);//单步执行到此出错
except
Err:=WSAGetLastError;
ShowMessage(IntToStr(Err));
WSACleanup;
end;
ipaddress:=inet_addr(PChar(PingEdit.text));
hos:=gethostbyaddr(@ipaddress,sizeof(ipaddress),PF_INET);
Label3.Caption:=hos.h_name;
WSACleanup;
end;

wVersionRequested:=MakeWord(1,1);
nSockErr:=WSAStartup(wVersionRequested,WSAData);//);//单步执行到此也要报错.

---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00000000. Read of address 00000000'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
我的系统环境:delphi6+Winxp sp2
 
找到解决办法了,与大家共享.
在之前加一句LoadWinsock;

虽解决了,但不知为什么.
为什么其他人的代码都没这句啊.
 
不应该是这样的,是不是你版本有问题?
 
我觉得也有些问题.但运行LoadWinsock;就能解决啊.
可能是什么版本问题呢?
 
你好象是用的第三方的 Winsock pas 文件吧
 
没有,除了用D版,没用其它.
 
就我知道,有些第三方的 pas 是动态引用 DLL 的,
它定义很多变量,也给出一个导入函数,需要用户在使用之前,手动 Load 一下

LoadWinsock;
 
后退
顶部