Merhaba arkadaşlar aşağıdaki kod la bilgisayarın ip sini çekebiliyorum fakat 192.168.2.2 olarak çekiyor, ben bunu 192.168.002.002 olarak çekmesini istiyorum yani 3'lü bloklar halinde otomatik tamamlasın istiyorum ne yapmam gerekiyor acaba? teşekkürler.
function DetectHostIP(var IP: string): Boolean;
var
wsdata : TWSAData;
hostName : array [0..255] of char;
hostEnt : PHostEnt;
addr : PChar;
begin
WSAStartup ($0101, wsdata);
try
gethostname (hostName, sizeof (hostName));
hostEnt := gethostbyname (hostName);
if Assigned (hostEnt) then
if Assigned (hostEnt^.h_addr_list) then begin
addr := hostEnt^.h_addr_list^;
if Assigned (addr) then begin
IP := Format ('%d.%d.%d.%d', [byte (addr [0]),
byte (addr [1]), byte (addr [2]), byte (addr [3])]);
Result := True;
end
else
Result := False;
end
else
Result := False
else begin
Result := False;
end;
finally
WSACleanup;
end
end;
procedure TForm1.FormShow(Sender: TObject);
var
IPAdres: string;
begin
if DetectHostIP(IPAdres) then
begin
Edit12.Text := IpAdres;
end else
begin
Edit12.Text := 'Ip Adresi alinamadi';
end;
end;
Birşey daha sorucam üstadım edit.text 'in OnExit eventında yazılan ip yi konrtol etiroyurum ve XXX.XXX.XXX.XXX formatında değilse hata veriyor program duruyor, ben oraya şöyle bir şey yapamazmıyım örneğin text'e 192.168.2.2 girildiğinde textten çıkıldığı an girilen yazıyı xxx.xxx.xxx.xxx formatına çevirsin?
Function IP_Duzelt( strIp : String ): String;
Var
i, iDeger : Integer;
slListe : TStringList;
begin
Result := '';
slListe := TStringList.Create;
slListe.Delimiter := '.'; // Ayracımız...
slListe.DelimitedText := strIp; // Ayrılacak IP içeriği
// Her IP bloğunu 3 haneye tamamlıyoruz. Zaten 3 hane ise dokunmaz...
for i := 0 to slListe.Count - 1 do
begin
Try iDeger := StrToInt(slListe[i]); Except iDeger := 0; End;
slListe[i] := Format('%.3d', [iDeger]);
if Result = '' then Result := slListe[i]
else Result := Result + '.' + slListe[i];
end;
// Eksik girilmişse sona tamamlıyoruz...
if slListe.Count <= 3 then for i := slListe.Count to 3 do
begin
Result := Result + '.' + '000';
end;
slListe.Free;
end;