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.
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;
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.
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;
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?