Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Warnung/Hint bei signed/unsigned Zuweisung erzwingen (https://www.delphipraxis.net/152078-warnung-hint-bei-signed-unsigned-zuweisung-erzwingen.html)

hellion 10. Jun 2010 11:14

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!

himitsu 10. Jun 2010 11:18

AW: Warnung/Hint bei signed/unsigned Zuweisung erzwingen
 
Zitat:

Delphi-Quellcode:
li := -1;

Ist doch OK so?

Delphi-Quellcode:
lw := -1;
Hier würde aber ein Compiler-Fehler ausgelöst.
(läßt sich nicht kompilieren)

Ansonsten wüßte ich keine Möglichkeit das andere Melden zu lassen.

himitsu 10. Jun 2010 11:29

AW: Warnung/Hint bei signed/unsigned Zuweisung erzwingen
 
Zitat:

Delphi-Quellcode:
li := -1;

Ist doch OK so?

Delphi-Quellcode:
lw := -1;
Hier würde aber ein Compiler-Fehler ausgelöst.
(läßt sich nicht kompilieren)

Ansonsten wüßte ich keine Möglichkeit das andere Melden zu lassen.

s.h.a.r.k 10. Jun 2010 12:13

AW: Warnung/Hint bei signed/unsigned Zuweisung erzwingen
 
Warum gibts hier zwei mal den gleichen Beitrag von himitsu? :gruebel:

ele 10. Jun 2010 16:45

AW: Warnung/Hint bei signed/unsigned Zuweisung erzwingen
 
Eventuell könnten die QA Audits da weiterhelfen. Habs nicht ausprobiert.

H4ndy 10. Jun 2010 18:47

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