![]() |
Warnung/Hint bei signed/unsigned Zuweisung erzwingen
Hallo,
kann man den Delphi-Compiler erzwingen, eine Warnung bei Zuweisung von signed/unsigned Variablen auszulösen? z.B. im folgenden Fall: procedure f1(); var li : longint; lw : longword; begin li := -1; lw := li; // ==> hier findet eine Bereichsüberschreitung statt. ... end; In diesem Fall gibt Delphi keine Warnung aus. Die Anweisung ist aber gefährlich, da zur Laufzeit eine Exception ausgelöst werden kann! Wann man dagegen "li := li + lw" schreibt, dann wird folgende Warnung erzeugt: "W1024: Combining signed and unsigned types - widened both operands" Auch im ersten Fall hätte ganz gerne die Warnung W1024 oder eine alternatibe Warnung. Ich kenne PC-Lint für C - man wird bei solchen Zuweisungen hingewiesen! Ich habe den CodeHealer und den Peganza Pascal Analyzer ausprobiert, diese lösen keine Warnung aus! |
AW: Warnung/Hint bei signed/unsigned Zuweisung erzwingen
Zitat:
Delphi-Quellcode:
Hier würde aber ein Compiler-Fehler ausgelöst.
lw := -1;
(läßt sich nicht kompilieren) Ansonsten wüßte ich keine Möglichkeit das andere Melden zu lassen. |
AW: Warnung/Hint bei signed/unsigned Zuweisung erzwingen
Zitat:
Delphi-Quellcode:
Hier würde aber ein Compiler-Fehler ausgelöst.
lw := -1;
(läßt sich nicht kompilieren) Ansonsten wüßte ich keine Möglichkeit das andere Melden zu lassen. |
AW: Warnung/Hint bei signed/unsigned Zuweisung erzwingen
Warum gibts hier zwei mal den gleichen Beitrag von himitsu? :gruebel:
|
AW: Warnung/Hint bei signed/unsigned Zuweisung erzwingen
Eventuell könnten die QA Audits da weiterhelfen. Habs nicht ausprobiert.
|
AW: Warnung/Hint bei signed/unsigned Zuweisung erzwingen
Stimmt, der Compiler meckert da nix an. Und bei aktivierte Bereichspruefung kommt erst zur Laufzeit eine Exeception.
Ich vermute, dass das Thema bei der Analyse bisher stiefmuetterlich behandelt wurde, weil eigentlich ergibt es Sinn darauf schon beim Kompilieren zu testen (= Warnung). Da wirst du wohl im Moment um ene Audit nicht herumkommen, falls du keine Runtime-Tests mit aktivierter Bereichspruefung machen kannst. Ansonsten kann man vllt. den von dir benutzten Pascal-Tester erweitern (kenn ich leider nicht)? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 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