Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: W1022 Der Vergleich ergibt immer True

  Alt 22. Jul 2010, 17:22
Delphi-Quellcode:
const INADDR_NONE = DWORD($FFFFFFFF);

type u_long = Longint;
function inet_addr(cp: PAnsiChar): u_long; stdcall;
Da war mal wieder irgend ein Idiot (oder doofes Übersetzungscript) am Werk:
u_long = unsigned Long = LongWord

DWORD(-1), also 4.294.967.295 kann niemals in LongInt reinpassen, und demnach ist ein Vergleich auf <> immer true.

Aber sowas hätte man auch selber schnell rausbekommen können, wenn man sich die Typen mal ansieht.

Delphi-Quellcode:
function IsValidIP(const aIP: AnsiString): Boolean;
begin
  Result := (aIP <> '') and (LongWord(inet_addr(PAnsiChar(aIP))) <> INADDR_NONE);
end;
oder
Delphi-Quellcode:
function IsValidIP(const aIP: AnsiString): Boolean;
begin
  Result := (aIP <> '') and (inet_addr(PAnsiChar(aIP)) <> LongInt(INADDR_NONE));
end;
$2B or not $2B

Geändert von himitsu (22. Jul 2010 um 17:25 Uhr)
  Mit Zitat antworten Zitat