Hallo,
ich verzweifele momentan an der Portierung von Bibliotheken von Delphi 2007 nach 2009:
Unsere Packages werden über Build-Konfigurationen jeweils für Debug und Release getrennt compiliert.
Unter Debug ist $D+ eingeschaltet und "DEBUG" definiert, unter Release nicht ($D-) und "RELEASE" definiert.
Folgender Code steht zur Kontrolle am Anfang der in jeder
Unit includeten Projektoptionsdatei:
Delphi-Quellcode:
{$ifdef DEBUG}
{$IFOPT D+}
{$Message Hint 'Debug ist EINGESCHALTET'}
{$else}
{$Message Fatal 'Fehler: Debugschalter im Debugmodus aus!'}
{$endif}
{$else}
{$ifndef RELEASE}
{$Message Fatal 'Fehler: weder DEBUG noch RELEASE angegeben!'}
{$endif}
{$endif}
{$ifdef RELEASE}
{$IFOPT D+}
{$Message Fatal 'Fehler: Debugschalter im Release an!'}
{$else}
{$Message Hint 'Code wird ohne Debuginformation compiliert'}
{$endif}
{$endif}
Wird dieser Code in einem EXE-Projekt verwendet, funktioniert das einwandfrei.
Bei einer Bibliothek dagegen wird anscheinend nur der unter Build-Konfiguration "Basis" angegebene Wert für "Debuggen - Debug Informationen" verwendet. (Vorgabe: True)
Die Überschreibung in "RELESE" wird anscheinend ignoriert.
Obiger Code bleibt dann mit Meldung 'Fehler: Debugschalter im Release an!' stehen.
d.H. egal. was man unter DEBUG oder RELEASE angibt, es wird immer der Wert von BASIS verwendet. Das gleiche gilt für "Lokale Symbole" ($L).
Die anderen Projektoptionen scheinen zu funktionieren - Symbolreferenzinfo macht noch mucken und speichert als seinen Wert nicht; das war aber auch unter D2007 schon so.
Nochmal: dieses seltsame Verhaltet tritt bei uns nur bei Packages auf. (auch, wenn man die Projektdatei komplett neu erstellt)
- Kann dies einer nachvollziehen?
- gibt es einen Patch?
Wenn das so stimmt, bedeutet das, daß alle mit Delphi 2009 erzeugten Komponentenbibliotheken Debug-Informationen beinhalten (außer der Standard unter BASIS wurde geändert)