Eine andere Typinterprtetation.
Was meine ich damit:
Einerseits ist eine strenge Typprüfung wichtig, andererseits kann die aber auch das Leben schwer machen.
Ich habe aktuell das Problem, daß wenn ich mehrere Units eingebunden habe, in denen ein Datentyp jeweils separat definiert ist, sei es durch Neuimplementation des Typs oder auch nur durch mitgeführte Include Dateien, in denen der Typ definiert ist,
das dann der Typ nicht akzeptiert wird. Dann kommt eine Compilermeldung der Art:
Error: Incompatible types, Got unit1.Tpoint, expected unit2.Tpoint.
Wobei doch der Compiler sich die beiden Typdefinitionen anschauen kann und wenn die Datengroße stimmt, einen der beiden Typen auswählen könnte. Klar könnte ich uni1.TPoint mit:
und unit2.TPoint mit:
definieren, dann stimmt ja die Datengröße, ich hatte aber auch das hier definieren können:
in unit1:
in unit2:
Dann stimmen die Datengrößen natürlich nicht. Dann muss der Compiler ALarm schlagen.
Es sei in allen Fällen entweder record oder packed record in allen Units vorausgesetzt.
Im zweiten Fall ist die strenge Typprüfung gerechtfertigt, im ersten Fall nicht.
Deshalb wünsche ich mir einen Compilerschalter, mit dem ich selber Unitweise festlegen kann, ob ich strenge Typprüfung brauche oder ob die Anerkennung der korrekten Datengröße ausreicht.
Schön wäre auch bei Konstanten, wenn die Compilermeldung Doppelter Bezeichner dann entfallen würde, wenn der Konstantenwert jeweils gleich ist. Nur wenn ich zwei mal desnselben Konstantenbezeichner mit unterschiedlichem Wert belegt habe, ist die Fehlermeldung berechtigt.
Beispiel:
unit2:
Hier hat der doppelte Konstantenbezeichner den gleichen Wert, die Compilermeldung kann entfallen und der Compiler kann eine der Kontanten einfach einkompilieren.
Zweites Beispiel:
unit1:
unit2:
Hier muss der Compiler den doppelten const Bezeichner anmeckern.