Problem mit dem Debugger
-
Hallo,
ich analysiere gerade ein Teil meines Programms.
Dabei existiert eine Klasse die natürlich auch Variablen besitzt.
innerhalb der Berarbeitung einer Funktion dieser Klasse möchte ich den aktuellen Inhalt aus meiner Variable erhalten und diesen Inhalt in eine neue Variable sichern. Leider bekomme ich beim Debuggen nur ausgeworfen unter Borland Developer Studio 2006, "Die Variable wurde optimiert und ist deshalb nicht verfügbar."
??????
Bedeutet was für mich. Wie kann ich das ändern.
-
Schalt doch mal alle Optimierungen aus

die Meldung ist doch ganz klar - wenn der Compiler feststellt, daß eine Variable unnötig ist, kann er sie weglassen, z.B.:
void f(int p) { int i=p; printf("Hallo, ich bin %d",p); }hier ist i unnötig, also erspart der Compiler sich (und dir) den Aufwand, die Variable anzulegen und sofort wieder zu vernichten.
-
Hallo,
das ähnliche Problem habe ich auch. Bei mir wird das Gleiche angezeigt. Wiess nicht warum. Dabei handelt es sich auch um Klassenvariablen. Ich poste mal den Auszug aus dem Quelltext.PrintFormular.h
class PrintFormular { private: // Variablen int PrintPage; int PrintXLeft; int PrintXRight; int PrintYOffset; int PrintYPos; int PrintLineHeight; int PrintLinesPerPage; // Anzahl der Seiten pro Blatt int PrintLine; // Aktuelle Zeile TPrinter * ThePrinter; // Zeiger Druckobjekt TDateTime PrintTime; // Zeitvariable TFontStyles FontStyles; // Fontstyle // Funktionen void PrintHeader(bool NewPage); // Druck Seitenlayouts void PrintInfoText(); // Druck vom Informationstext void PrintPassword(); // Druck der Passwörtert public: // Konstruktor PrintFormular(); // Destruktor ~PrintFormular(){ } }; extern AnsiString searchXMLFile(AnsiString Id, AnsiString language , AnsiString returnXMLValue, AnsiString Prefix, AnsiString FilePath);Auszug aus PrintFormular.cpp
... void PrintFormular::PrintInfoText() { AnsiString Temp = searchXMLFile("InfoText0", "deu" , "No XML file", "PrinterText", ExtractFilePath(Application->ExeName)+"PrinterText.xml") ; PrintYPos += PrintLineHeight; // Y-Position für nächste Zeile PrintLine--; int y = PrintYPos; ThePrinter->Canvas->TextOutA(PrintXLeft ,PrintYPos , Temp ); PrintYPos += PrintLineHeight; // Y-Position für nächste Zeile PrintLine--; } ...Das Problem sind hier PrintYPos und PrintXLeft. Bei mir wird einmal nicht die Variable beim Debuggen dargestellt sondern ich erhalte auch nur deine Aussage. Hinzu kommt, dass ich auch den Text nicht ausgedruckt bekomme. Denke es liegt an den Variablen.
-
Habe auch mal die Optimierungen deaktiviert. Leider hat sich zumindest an meinem Druckproblem nichts gelöst. Aber ich kann zumindest die Variable im Debuggermodus untersuchen. Danke
-
@CStoll Danke dir. habe die Optimierungen deaktiviert und es klappte natürlcih. Hätte ich ja auch selber drauf kommen müssen.
-
Das andere Problem habe ich auch gerade gelöst. Lag an der Reihenfolge der Aufruffe von den Funktionen.
-
Na dann. Schön das es geklappt hat. Ein Teil aus deinem Queltext werde ich mir mal borgen. Das ist interessant.