İnternet ip adresinizi öğrenme (Hazır kod)

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
seci20

İnternet ip adresinizi öğrenme (Hazır kod)

Mesaj gönderen seci20 »

formunuza idhttp ekledikten sonra sorunsuz çalışacaktır.

Kod: Tümünü seç

function ipöğren ():string;
var
ip:string;
bas,son,uzunluk:integer;
begin
form1.IdHTTP1.Disconnect;
ip:=form1.idhttp1.get('http://checkip.dyndns.org/');
bas:=Pos('Address:', ip);
son:=system.Pos('</body>', ip);
uzunluk:=son-(bas+8);
result:=trim(copy(ip, bas+8,uzunluk));
end;
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: İnternet ip adresinizi öğrenme (Hazır kod)

Mesaj gönderen ertank »

Güzel bir paylaşım.

Aşağıdaki alternatif fonksiyon form üzerinde bileşen ihtiyacı olmadan bağımsız çalışır şekilde bir ünite içinde kullanılabilir. İnternet bağlantısı vbhata oluşması durumunda boş değer çevirecektir.

Kod: Tümünü seç

uses
  IdBaseComponent,
  IdComponent,
  IdTCPConnection,
  IdTCPClient,
  IdHTTP;

function GetInternetIp(): string;
var
  IdHTTP: TIdHTTP;
  Position: Integer;
begin
  IdHTTP := TIdHTTP.Create(nil);
  try
    try
      Result := IdHTTP.Get('http://checkip.dyndns.org/');
    except
      Result := EmptyStr;
      Exit();
    end;

    Position := Pos(': ', Result);
    if Position > 0 then
    begin
      Result := Copy(Result, Position + 2, MaxInt);
      Position := Pos('<', Result);
      if Position = 0 then Exit();
      SetLength(Result, Position - 1);
    end
    else
    begin
      Result := EmptyStr;
    end;
  finally
    IdHTTP.Free();
  end;
end;
seci20

Re: İnternet ip adresinizi öğrenme (Hazır kod)

Mesaj gönderen seci20 »

ertank yazdı: 06 Kas 2017 02:44 Güzel bir paylaşım.

Aşağıdaki alternatif fonksiyon form üzerinde bileşen ihtiyacı olmadan bağımsız çalışır şekilde bir ünite içinde kullanılabilir. İnternet bağlantısı vbhata oluşması durumunda boş değer çevirecektir.

Kod: Tümünü seç

uses
  IdBaseComponent,
  IdComponent,
  IdTCPConnection,
  IdTCPClient,
  IdHTTP;

function GetInternetIp(): string;
var
  IdHTTP: TIdHTTP;
  Position: Integer;
begin
  IdHTTP := TIdHTTP.Create(nil);
  try
    try
      Result := IdHTTP.Get('http://checkip.dyndns.org/');
    except
      Result := EmptyStr;
      Exit();
    end;

    Position := Pos(': ', Result);
    if Position > 0 then
    begin
      Result := Copy(Result, Position + 2, MaxInt);
      Position := Pos('<', Result);
      if Position = 0 then Exit();
      SetLength(Result, Position - 1);
    end
    else
    begin
      Result := EmptyStr;
    end;
  finally
    IdHTTP.Free();
  end;
end;
hocam tabikide bu sizin farkınız :)
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: İnternet ip adresinizi öğrenme (Hazır kod)

Mesaj gönderen SimaWB »

Alternatif: TPublicIP
En son SimaWB tarafından 07 Kas 2017 02:59 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
There's no place like 127.0.0.1
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: İnternet ip adresinizi öğrenme (Hazır kod)

Mesaj gönderen ertank »

SimaWB yazdı: 06 Kas 2017 03:57 Aternatif: TPublicIP
Merhaba, Bileşen içinde standart TTimer kullanmayıp thread ile çalışmanızın belli bir sebebi var mı?
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: İnternet ip adresinizi öğrenme (Hazır kod)

Mesaj gönderen SimaWB »

ertank yazdı: 07 Kas 2017 12:18 Merhaba, Bileşen içinde standart TTimer kullanmayıp thread ile çalışmanızın belli bir sebebi var mı?
TTimer'ın "thread safe" olmamasından sebep. Ama sayenizde farkettim synchronize'yi unutmuşum, teşekkürler :)
There's no place like 127.0.0.1
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: İnternet ip adresinizi öğrenme (Hazır kod)

Mesaj gönderen ertank »

SimaWB yazdı: 07 Kas 2017 02:46 TTimer'ın "thread safe" olmamasından sebep. Ama sayenizde farkettim synchronize'yi unutmuşum, teşekkürler :)
Soruyu farklı şekilde sorayım. Yanlış anlaşılmaya sebep veriyor. Hiç thread kullanmadan bileşen içinde TTimer create ederek Interval ayarlasanız ve gerektiği zaman çalıştırsanız olmaz mıydı acaba?
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: İnternet ip adresinizi öğrenme (Hazır kod)

Mesaj gönderen SimaWB »

Elbette olurdu.Ben TTimer'ı genelde kullanmam. Yukarıda bahsettiğim sebepten.
There's no place like 127.0.0.1
Cevapla