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.


Anmelden zum Antworten