2009-04-24 5 views
8

Używam Delphi 2007 z wszystkimi poprawkami i aktualizacjami.* Czasami * pojawia się błąd podczas przypisywania stałej do Delphi

Mam plik, który jest używany przez dwa różne projekty. W tym pliku jest zabiegiem, który będę uprościć następująco:

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

Komenda

Inc() nie uda, ponieważ nie można przypisać stałą. W jednym projekcie dostaję błąd w tym zakresie (nazwę ten projekt "Dokładnie"). W drugim projekcie nie dostaję żadnych błędów (nazwałem to "Bogus"). Nie otrzymuję też żadnych ostrzeżeń. Nie mogę zrozumieć, dlaczego kompilator dopuszcza ten niepoprawny kod.

Oto co próbowałem w projekcie Bogus:

1 - Wprowadzenie oczywisty błąd, jak wpisanie „slkdjflskdjf” w środku linii

Rezultat: pojawia się błąd, co dowodzi, że naprawdę próbuje skompilować ten plik.

2 - Usuń .dcu i Odbuduj projekt

Wynik: .dcu jest ponownie generowany ponownie udowadniając, że projekt jest naprawdę przygotowanie tego błędnego kodu.

Czy ktoś myśli o tym, dlaczego to zachowanie wystąpi? A dokładniej, dlaczego miałoby to nastąpić w jednym projekcie, a nie innym? Czy istnieje pewna niejasna opcja kompilatora, która pozwala na przypisywanie stałych?

Ostatnia uwaga: oba projekty są konwertowane z Delphi 5. Obydwie wersje Delphi 5 mają podobny kod, więc obydwa kompilują dobrze.

Edytuj: Dziękujemy za pomoc. Po zmianie przypisywanej dyrektywy stałej ciągłej mogę uzyskać spójne zachowanie w obu projektach. Nauczyłem się czegoś nowego dzisiaj ...

Odpowiedz

13

Istnieje opcja dla tego o nazwie "Przypisywanych stałych" w Opcjach kompilatora. Można go również włączyć za pomocą "{$ J +}" w kodzie.

5

Czy to możliwe, że te projekty różnią się ustawieniem dyrektywy kompilatora $ J?

3

Jak inni mówili, prawie na pewno jest to dyrektywa {$J+}.

Jeśli masz narzędzie do porównywania, możesz porównać pliki projektu, aby zobaczyć, jak się różnią - to tylko pliki tekstowe - aby rozwiązać podobne problemy w przyszłości.

3

Proponuję sprawdzić Opcje projektu, sekcja Kompilator i sprawdzić, czy można zauważyć różnice. Może masz opcję Przypisywanych stałych stałych włączone w projekcie Bogus.