![]() |
Delphi-Version: 2010
W1022 Der Vergleich ergibt immer True
Hi,
Ich habe folgende Funktion:
Delphi-Quellcode:
Unter Delphi2010 kommt die Meldung W1022 Der Vergleich ergibt immer True, unter Delphi2007 kommt sie nicht. Wenn ich INADDR_NONE durch -1 ersetze, verschwindet die Meldung.
function IsValidIP (const aIP: string): Boolean;
begin Result := ((aIP <> '') and (inet_addr(PansiChar(ansistring(aIP))) <> INADDR_NONE)); end; Kann mir jemand sagen woran das liegt? |
AW: W1022 Der Vergleich ergibt immer True
Delphi-Quellcode:
Da war mal wieder irgend ein Idiot (oder doofes Übersetzungscript) am Werk:
const INADDR_NONE = DWORD($FFFFFFFF);
type u_long = Longint; function inet_addr(cp: PAnsiChar): u_long; stdcall; 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:
oder
function IsValidIP(const aIP: AnsiString): Boolean;
begin Result := (aIP <> '') and (LongWord(inet_addr(PAnsiChar(aIP))) <> INADDR_NONE); end;
Delphi-Quellcode:
function IsValidIP(const aIP: AnsiString): Boolean;
begin Result := (aIP <> '') and (inet_addr(PAnsiChar(aIP)) <> LongInt(INADDR_NONE)); end; |
AW: W1022 Der Vergleich ergibt immer True
super Danke :wink: :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz