Programm läuft unter unterschiedlichen Projekt Einstellung anders. :(
-
Hi.
Erstmal frage ich mich was nun defekt ist.
Wenn man ja ein neues Projekt anfängt sind die Optionen:
- Built with runtime-package
- Use dynamic RTL
ja angehackt.
So, das Programmläuft dann auch, ohne irgendwie einen absturz zu haben. ^^Wenn ich ja das Programm weitergeben möchte, muß ich die beiden Option ausschalten.
Und habe zusätzlich unter der Kartei: "Compiler" Auf "Release" noch gedrückt.Das Programm kompiliert.
Gestartet und schon bekomm ich eine Meldung von "Invaild Pointer". Wenn ich die option "Use Dynamic RTL" wieder aktiviere, ist der Fehler weg.
Habe auch herrausgefunden wo der Maulwurf drin steckt.
int iData_Section_ID = -1; AnsiString strData_Section = ""; AnsiString strData_KeyName = ""; AnsiString strData_Value = ""; for(int iIndex = 0; iIndex < FormMain->ComponentCount; iIndex++) { if(FormMain->Components[iIndex]->ClassNameIs("TLabeledEdit")) { iData_Section_ID = dynamic_cast<TLabeledEdit*>(FormMain->Components[iIndex])->Tag; strData_Section = this->pIniSections[iData_Section_ID].strSection; strData_KeyName = dynamic_cast<TLabeledEdit*>(FormMain->Components[iIndex])->Name; strData_Value = this->pIniFile->Read(strData_Section,strData_KeyName,AnsiString("")); dynamic_cast<TLabeledEdit*>(FormMain->Components[iIndex])->Text = strData_Value; } else if(FormMain->Components[iIndex]->ClassNameIs("TEdit")) { iData_Section_ID = dynamic_cast<TEdit*>(FormMain->Components[iIndex])->Tag; strData_Section = this->pIniSections[iData_Section_ID].strSection; strData_KeyName = dynamic_cast<TEdit*>(FormMain->Components[iIndex])->Name; strData_Value = this->pIniFile->Read(strData_Section,strData_KeyName,AnsiString("")); dynamic_cast<TEdit*>(FormMain->Components[iIndex])->Text = strData_Value; } Application->ProcessMessages(); }Innerhalb der "if" und "else if" Klause passiert der Fehler.
Wenn ich das
strData_Value = this->pIniFile->Read(strData_Section,strData_KeyName,AnsiString("")); dynamic_cast<TLabeledEdit*>(FormMain->Components[iIndex])->Text = strData_Value;und das
strData_Value = this->pIniFile->Read(strData_Section,strData_KeyName,AnsiString("")); dynamic_cast<TEdit*>(FormMain->Components[iIndex])->Text = strData_Value;auskommentiere kommt der Fehler nicht.
Was ist an dem Code falsch?
Weil auf die Kompo's ohne Namen zuzugreifen macht man das ja s, habe ich in der FAQ gelesen.Ich find den Maulwurf net.

Warum ist das Release da empfindlich!!! Und nicht das Debug Teil empfindlicher!!!
Gruß
DJ BlackEagle.
-
Für die Nutzung von dynamic_cast müssen Laufzeitinformationen (RTTI) verfügbar gemacht werden.
-
Können es aber auch andere Nutzer die kein BCB installiert haben es dann auch ohne weiteres nutzen?
-
Hallo
ja, RTTI ist nur eine zusätzliche Funktion innerhalb des Programms. Wenn es kompiliert ist, brauch es keine weiteren externen Dateien.
bis bald
akari