Einzelnen Beitrag anzeigen

Mike_

Registriert seit: 26. Mär 2008
98 Beiträge
 
Delphi 2007 Professional
 
#8

AW: Ip Auslesen oder ganze Ipconfig

  Alt 19. Jan 2011, 22:57
Es scheint einfacher zu sein, ist aber eher unsauber. Du holst dir ziemlich viel Overhead in dein Programm, nur um die IP-Adresse auszulesen?
Wenn man es so genau nimmt hast du natürlich Recht, dass man sich eine große Unit dadurch einbindet welche man nicht im vollen Funktionsumfang ausschöpft.

Dann gibt es die Methode sich einfach aus der Unit die Function zu ziehen bzw "abzuschreiben", so dass diese auch außerhalb der Unit funktioniert (In diesem Falle die Sockets Unit) oder man schreibt es gleich selbst.

Durch die Unit hätte man aber gleich seinen "Anhaltspunkt, wie was funktioniert".

Als Beispiel für diesen Fall:


Delphi-Quellcode:
function TIpSocket.LocalHostAddr: TSocketHost;
begin
  Result := LookupHostAddr(LocalHostName);
end;

Wobei wir dann zu folgendem kommen

Delphi-Quellcode:
function TIpSocket.LookupHostAddr(const hn: string): TSocketHost;
var
  h: PHostEnt;
begin
  Result := '';
  if hn <> 'then
  begin
    if hn[1] in ['0'..'9'] then
    begin
      if inet_addr(pchar(hn)) <> INADDR_NONE then
        Result := hn;
    end
    else
    begin
      h := gethostbyname(pchar(hn));
      if h <> nil then
        with h^ do
        Result := format('%d.%d.%d.%d', [ord(h_addr^[0]), ord(h_addr^[1]),
              ord(h_addr^[2]), ord(h_addr^[3])]);
    end;
  end
  else Result := '0.0.0.0';
end;
Ich finde es ist eine wunderbare Methode um sich Funktionen zu stibitzen ohne viel Aufwand
(Selbst wenn man nicht die ganze Unit einbinden will aus deinen o.g. Gründen)

Hat mir im "täglichem Betrieb" oft geholfen.
  Mit Zitat antworten Zitat