Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Compilerwarnungen eliminieren (https://www.delphipraxis.net/196027-compilerwarnungen-eliminieren.html)

günni0 16. Apr 2018 18:56

Compilerwarnungen eliminieren
 
Folgende Funktion generiert eine Compilerwarnung
Delphi-Quellcode:
function GetNodeByIndex(iIndex: Integer): PVirtualNode;
begin
 Result := VSTTestForm.VST.GetFirst(True);
 while Assigned(Result) and (VSTTestForm.VST.AbsoluteIndex(Result) <> iIndex) do
  Result := VSTTestForm.VST.GetNext(Result, True);
end;
[dcc32 Warnung] VST_Code.pas(20): W1023 Vorzeichenbehaftete und -lose Typen werden verglichen - beide Operanden werden erweitert

Kann ich iIndex gefahrlos als Cardinal deklarieren? Was wenn der Funktion durch einen Fehler doch mal unbeabsichtigt ein Wert im Bereich <0 übergeben werden sollte?

Zacherl 16. Apr 2018 18:59

AW: Compilerwarnungen eliminieren
 
Ich würde deinen Typ bei Integer belassen, eine Assertion einbauen und danach vor der Übergabe in Cardinal hard-casten.

günni0 16. Apr 2018 19:03

AW: Compilerwarnungen eliminieren
 
Einfach so? Wenn ja dann bleibt die Meldung noch
Delphi-Quellcode:
iIndex := Cardinal(iIndex);

Zacherl 16. Apr 2018 19:05

AW: Compilerwarnungen eliminieren
 
Delphi-Quellcode:
VSTTestForm.VST.AbsoluteIndex(Result) <> Cardinal(iIndex)

günni0 16. Apr 2018 19:19

AW: Compilerwarnungen eliminieren
 
Das Assert wäre nur für mich oder und kommt nicht ins Release?

Zacherl 16. Apr 2018 19:29

AW: Compilerwarnungen eliminieren
 
Zitat:

Zitat von günni0 (Beitrag 1399433)
Das Assert wäre nur für mich oder und kommt nicht ins Release?

Jap, das ist immer so bei Asserts :P

Stevie 17. Apr 2018 09:54

AW: Compilerwarnungen eliminieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Zacherl (Beitrag 1399435)
Zitat:

Zitat von günni0 (Beitrag 1399433)
Das Assert wäre nur für mich oder und kommt nicht ins Release?

Jap, das ist immer so bei Asserts :P

Obacht! Die Standard Release Konfiguration bei Delphi hat Asserts immer noch angeschaltet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz