![]() |
Falscher Typecast wie finden
Hallo, habe da ne Frage
Ich habe vor kurzem mal einige Zeit nen Fehler gesucht und den dann in folgendem Code gefunden
Delphi-Quellcode:
Da ich den Type des Objektes nicht überprüft habe, habe ich auch bei einem TDataObject auf ein Feld zugegriffen, das nicht existiert, und dadurch dann an einer anderen Stelle eine AV (oder manchmal auch einen anderen Fehler) verursacht.
type
TDataObject = class end; TDataObject1 = class(TDataObject) private fDatum : integer; fBetrag : Extended; end; .... function TDataList.Sort; var Item : TDataObject; begin if Item is TDataObject1 then begin TDataObject1(Item).fBetrag := 12; end TDataObject1(Item).fDatum := now; // <<< Fehler end; Meine Frage ist nun, gibt es ein Toll oder Einstellung, mit dem solche Fehler gefunden werden. Da die Fehler immer an einer anderen Stelle auftreten ist der Fehler extrem schwer zu finden. Und den ganzen Sourcecode zu durchforsten, ob sich noch wo solch ein Fehler versteckt ..... |
Re: Falscher Typecast wie finden
Ich weis, jetzt hilft es dir nichts mehr, aber beim nächsten mal einfach
Delphi-Quellcode:
nehmen, das gibt dann einen Fehler wenn der Typnicht stimmt ...
(Item as TDataObject1).fDatum := now;
(Du könntest jetzt alle " TDataObject1(" suchen und durch as-Typecasts ersetzen, aber ob das so toll ist :gruebel: ) |
Re: Falscher Typecast wie finden
Hallo,
Zitat:
Der Hinweis mit as ist nicht schlecht, benötigt aber natürlich etwas Zeit für die Typprüfung. Das sollte aber heutzutage egal sein. (Ich verwende eigentlich nie as, sondern nur eine Abfrage mittels is mit anschliessendem TypeCast, falls in der Prozedur überhaupt verschiedene Objekte vorkommen können, genauso wir Du da machst.) Gruß xaromz |
Re: Falscher Typecast wie finden
Zitat:
Nach Brain 1.0 brauche ich jetzt nicht zu suchen oder :gruebel: Das mit dem as, statt dem is wäre ne option, aber nachträglich überall einbauen .... wird sehr zeitaufwendig für Zukunftige Sources, wo ich mehere abgeleitete Klassen habe, sicher interessant. Und suchen nach dem TDataObject wird unmöglich, ich habe sicher 1000 verschiedene Klassentypen in dem Programm drinnen, |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 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