* Manchmal * erhalten einen Fehler beim Zuweisen einer Konstante in Delphi

8

Ich verwende Delphi 2007 mit allen Patches und Updates.

Ich habe eine Datei, die von zwei verschiedenen Projekten verwendet wird. In dieser Datei ist eine Prozedur, die ich wie folgt vereinfachen werde:

%Vor%

Der Inc () - Befehl sollte fehlschlagen, weil Sie keine Konstante zuweisen können. In einem Projekt bekomme ich einen Fehler in diesem Sinne (ich nenne das Projekt "Accurate"). In dem anderen Projekt bekomme ich keine Fehler (ich nenne es "Bogus"). Ich bekomme auch keine Warnungen. Ich kann nicht herausfinden, warum der Compiler diesen falschen Code durchlässt.

Folgendes habe ich im Projekt Bogus ausprobiert:

1 - Führen Sie einen offensichtlichen Fehler ein, indem Sie beispielsweise "slkdjflskdjf" in die Mitte einer Zeile schreiben

Ergebnis: Ich bekomme einen Fehler, was beweist, dass es wirklich versucht, diese Datei zu kompilieren.

2 - Löschen Sie die .DCU und erstellen Sie das Projekt neu

Ergebnis: Die .DCU wird erneut generiert, was wiederum beweist, dass das Projekt diesen fehlerhaften Code wirklich kompiliert.

Hat jemand Gedanken darüber, warum dieses Verhalten auftreten würde? Und genauer, warum würde es in einem Projekt vorkommen, aber nicht in einem anderen? Gibt es eine obskure Compiler-Option, um die Zuweisung zu Konstanten zuzulassen?

Eine letzte Anmerkung: Beide Projekte werden aus Delphi 5 konvertiert. Unter Delphi 5 mit ähnlichem Code kompilieren beide gut.

Bearbeiten: Vielen Dank für Ihre Hilfe. Nachdem ich die zuweisbare Konstanten-Direktive geändert habe, kann ich konsistentes Verhalten in beiden Projekten bekommen. Ich habe heute etwas Neues gelernt ...

    
JosephStyons 24.04.2009, 15:43
quelle

4 Antworten

13

In Compiler-Optionen gibt es dafür eine Option namens "Zuweisbare typisierte Konstanten". Es kann auch mit "{$ J +}" in Ihrem Code aktiviert werden.

    
Ville Krumlinde 24.04.2009, 15:53
quelle
5

Könnte es sein, dass sich diese Projekte in der Einstellung der $ J-Compiler-Direktive unterscheiden?

    
mghie 24.04.2009 15:52
quelle
3

Wie andere schon gesagt haben, ist es fast sicher die {$J+} -Richtlinie.

Wenn Sie ein Diff-Tool haben, können Sie die Projektdateien vergleichen, um zu sehen, wie sie sich unterscheiden - sie sind nur Textdateien - um ähnliche Probleme in der Zukunft zu lösen.

    
Mark Pim 24.04.2009 15:55
quelle
3

Ich würde vorschlagen, die Projektoptionen zu überprüfen, Abschnitt Compiler und sehen, ob Sie Unterschiede erkennen können. Vielleicht haben Sie die Option Zuweisbare typisierte Konstanten im Bogus-Projekt aktiviert.

    
Diego 24.04.2009 15:58
quelle

Tags und Links