Guten Tag,<br>ich habe ein Problem mit der winsock.pas. Mit folgenden Funktionen frage ich die IP-Adresse und den Hostname ab:
<pre>
function TFormPW.GetLocalIPAddress: string;
var
WSAData: TWSAData;
SockAddrIn: TSockAddrIn;
Host: PHostEnt;
MachineName: string;
begin
Result := '';
MachineName := GetLocalMachineName;
if WSAStartup($101, WSAData) = 0 then
begin
Host := GetHostByName(PChar(MachineName));
if Host<>nil then
begin
SockAddrIn.sin_addr.S_addr:= longint(plongint(Host^.h_addr_list^)^);
Result := inet_ntoa(SockAddrIn.sin_addr);
end;
WSACleanUp;
end;
end;
function TFormPW.GetLocalMachineName: string;
var
Size: DWord;
MachineName: string;
begin
Size := MAX_COMPUTERNAME_LENGTH+1;
SetLength(MachineName, Size);
GetComputerName(@MachineName[1], Size);
{Lose the final #0 and the spaces}
SetLength(MachineName, Size);
Result := MachineName;
end;
</pre>
<br>Ich verwende D4 Pro Sp3. Meine Anwendung nutzen z.Z. ca 300 Leute. Bei allen funktioniert es, nur bei einem nicht. Dort erscheint eine ESockError Exception. Weiß jemand zufällig, was eine ESockError Exception auslöst? ESockError ist nicht zu verwechseln mit ESocketError.<br>:-) Jens Schumann
<pre>
function TFormPW.GetLocalIPAddress: string;
var
WSAData: TWSAData;
SockAddrIn: TSockAddrIn;
Host: PHostEnt;
MachineName: string;
begin
Result := '';
MachineName := GetLocalMachineName;
if WSAStartup($101, WSAData) = 0 then
begin
Host := GetHostByName(PChar(MachineName));
if Host<>nil then
begin
SockAddrIn.sin_addr.S_addr:= longint(plongint(Host^.h_addr_list^)^);
Result := inet_ntoa(SockAddrIn.sin_addr);
end;
WSACleanUp;
end;
end;
function TFormPW.GetLocalMachineName: string;
var
Size: DWord;
MachineName: string;
begin
Size := MAX_COMPUTERNAME_LENGTH+1;
SetLength(MachineName, Size);
GetComputerName(@MachineName[1], Size);
{Lose the final #0 and the spaces}
SetLength(MachineName, Size);
Result := MachineName;
end;
</pre>
<br>Ich verwende D4 Pro Sp3. Meine Anwendung nutzen z.Z. ca 300 Leute. Bei allen funktioniert es, nur bei einem nicht. Dort erscheint eine ESockError Exception. Weiß jemand zufällig, was eine ESockError Exception auslöst? ESockError ist nicht zu verwechseln mit ESocketError.<br>:-) Jens Schumann
Comment