- uses Winsock;
-
- function GetIPFromHost
- (var HostName, IPaddr, WSAErr: string): Boolean;
- type
- Name = array[0..100] of Char;
- PName = ^Name;
- var
- HEnt: pHostEnt;
- HName: PName;
- WSAData: TWSAData;
- i: Integer;
- begin
- Result := False;
- if WSAStartup($0101, WSAData) <> 0 then begin
- WSAErr := 'Winsock is not responding."';
- Exit;
- end;
- IPaddr := '';
- New(HName);
- if GetHostName(HName^, SizeOf(Name)) = 0 then
- begin
- HostName := StrPas(HName^);
- HEnt := GetHostByName(HName^);
- for i := 0 to HEnt^.h_length - 1 do
- IPaddr :=
- Concat(IPaddr,
- IntToStr(Ord(HEnt^.h_addr_list^[i])) + '.');
- SetLength(IPaddr, Length(IPaddr) - 1);
- Result := True;
- end
- else begin
- case WSAGetLastError of
- WSANOTINITIALISED:WSAErr:='WSANotInitialised';
- WSAENETDOWN :WSAErr:='WSAENetDown';
- WSAEINPROGRESS :WSAErr:='WSAEInProgress';
- end;
- end;
- Dispose(HName);
- WSACleanup;
- end;
-
-
-
- procedure TForm1.Button1Click(Sender: TObject);
- var
- Host, IP, Err: string;
- begin
- if GetIPFromHost(Host, IP, Err) then begin
- Edit1.Text := Host;
- Edit2.Text := IP;
- end
- else
- MessageDlg(Err, mtError, [mbOk], 0);
- end;
-
uses Winsock;
function GetIPFromHost
(var HostName, IPaddr, WSAErr: string): Boolean;
type
Name = array[0..100] of Char;
PName = ^Name;
var
HEnt: pHostEnt;
HName: PName;
WSAData: TWSAData;
i: Integer;
begin
Result := False;
if WSAStartup($0101, WSAData) <> 0 then begin
WSAErr := 'Winsock is not responding."';
Exit;
end;
IPaddr := '';
New(HName);
if GetHostName(HName^, SizeOf(Name)) = 0 then
begin
HostName := StrPas(HName^);
HEnt := GetHostByName(HName^);
for i := 0 to HEnt^.h_length - 1 do
IPaddr :=
Concat(IPaddr,
IntToStr(Ord(HEnt^.h_addr_list^[i])) + '.');
SetLength(IPaddr, Length(IPaddr) - 1);
Result := True;
end
else begin
case WSAGetLastError of
WSANOTINITIALISED:WSAErr:='WSANotInitialised';
WSAENETDOWN :WSAErr:='WSAENetDown';
WSAEINPROGRESS :WSAErr:='WSAEInProgress';
end;
end;
Dispose(HName);
WSACleanup;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Host, IP, Err: string;
begin
if GetIPFromHost(Host, IP, Err) then begin
Edit1.Text := Host;
Edit2.Text := IP;
end
else
MessageDlg(Err, mtError, [mbOk], 0);
end;