2009-04-24 5 views
8

Ich benutze Delphi 2007 mit allen Patches und Updates.* Manchmal * erhalten einen Fehler beim Zuweisen einer Konstante in Delphi

Ich habe eine Datei, die von zwei verschiedenen Projekten verwendet wird. In dieser Datei ist ein Verfahren, das ich vereinfacht wie folgt:

procedure MyProcedure; 
const 
    UniqueValue: integer = 0; 
begin 
    //some code 
    Inc(UniqueValue); 
    //some more code 
end; 

Der Inc() Befehl fehl, weil Sie nicht auf eine 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.

Hier ist, was ich in dem Projekt Bogus versucht habe:

1 - einen offensichtlichen Fehler einführen, wie „slkdjflskdjf“ in der Mitte einer Zeile

Ergebnis eingeben: Ich erhalte eine Fehlermeldung, die das beweist Es versucht wirklich, diese Datei zu kompilieren.

2 - Löschen den DCU und wieder aufzubauen, das Projekt

Ergebnis: Die DCU wird neu generiert, wieder zu beweisen, dass das Projekt wirklich diesen fehlerhaften Code 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 zu erlauben?

Eine letzte Anmerkung: Beide Projekte werden aus Delphi 5 konvertiert. Unter Delphi 5 mit ähnlichem Code, kompilieren sie 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 ...

Antwort

13

Es gibt eine Option für diese als "Zuweisbare typisierte Konstanten" in Compiler-Optionen. Es kann auch mit "{$ J +}" in Ihrem Code aktiviert werden.

5

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

3

Wie andere 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.

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.

Verwandte Themen