私のアプリケーションをDelphi 2007からDelphi XEにアップグレードしています。私は個人的に書かれたSocketコンポーネントを持っています。新しい環境(XE)では、正しく動作しません。同じコードはここに私のコードの断片ですデルファイ2007Delphi XEとWinsock
で動作します:
uses WinSock;
procedure TForm1.GetProtocolClick(Sender: TObject);
var
ProtoEnt: PProtoEnt;
FProtocol: Integer;
begin
FProtocol := IPPROTO_TCP;
ProtoEnt := getprotobynumber(FProtocol);
if Assigned(ProtoEnt)
then ShowMessage(ProtoEnt.p_name);
end;
var
WSAData: TWSAData;
procedure Startup;
begin
if WSAStartup($0101, WSAData) <> 0
then raise Exception.Create('WSAStartup');
end;
procedure Cleanup;
begin
if WSACleanup <> 0
then raise Exception.Create('WSACleanup');
end;
initialization
Startup;
finalization
Cleanup;
end.
ProtoEntが常に割り当てられていない(すなわち=ゼロ)!!!!!
なぜですか?
私はこの問題を解決するために狂ったつもりです... おかげ
エンツォ
あなたの質問を更新してください。そのままでは、あなたが投稿したコードでは問題は再現されません。あなたの質問を更新し、修正してください。 –