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

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
seci20
Üye
Mesajlar: 222
Kayıt: 25 May 2015 04:39

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

Mesaj gönderen seci20 » 06 Kas 2017 01:29

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
Üye
Mesajlar: 1171
Kayıt: 11 Eyl 2015 11:45

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

Mesaj gönderen ertank » 06 Kas 2017 01: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;

seci20
Üye
Mesajlar: 222
Kayıt: 25 May 2015 04:39

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

Mesaj gönderen seci20 » 06 Kas 2017 01:46

ertank yazdı:
06 Kas 2017 01: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: 1301
Kayıt: 07 May 2009 09:42
Konum: İstanbul
İletişim:

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

Mesaj gönderen SimaWB » 06 Kas 2017 02:57

Alternatif: TPublicIP
En son SimaWB tarafından 07 Kas 2017 01:59 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
There's no place like 127.0.0.1

ertank
Üye
Mesajlar: 1171
Kayıt: 11 Eyl 2015 11:45

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

Mesaj gönderen ertank » 07 Kas 2017 11:18

SimaWB yazdı:
06 Kas 2017 02: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: 1301
Kayıt: 07 May 2009 09:42
Konum: İstanbul
İletişim:

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

Mesaj gönderen SimaWB » 07 Kas 2017 01:46

ertank yazdı:
07 Kas 2017 11: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
Üye
Mesajlar: 1171
Kayıt: 11 Eyl 2015 11:45

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

Mesaj gönderen ertank » 07 Kas 2017 04:12

SimaWB yazdı:
07 Kas 2017 01: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: 1301
Kayıt: 07 May 2009 09:42
Konum: İstanbul
İletişim:

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

Mesaj gönderen SimaWB » 08 Kas 2017 08:14

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

Cevapla