Zum Inhalt springen

Borland Exception


Hoppo

Empfohlene Beiträge

Hallo Leute.

Ich hab ein Problem mit den Borland C++ Builder 6.

Also ich hab mir ein Programm programmiert. Aber immer

wenn ich es beenden will, schreit Borland auf:

Project Text.exe raised exception class EInvalidPointer with message 'Invalid pointer operation'.

und dann landet er beim Destruktor des MainForms.

Bei der Zeile:

/* TCustomForm.Destroy */ inline __fastcall virtual ~TForm(void) { }

Könnt Ihr mir helfen??

Vielen Dank

hoppo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Keine Ahnung, ich finde den Destruktor nicht :confused:

Aber der Fehler tritt nur auf wenn ich eine bestimmte Funktion aufrufe:

TForm1::LoadVars()

{

        bool exist = false;

        TStrings *Values = new TStringList();

        String pw;

        char * temp;


        TRegistry *Reg = new TRegistry(KEY_READ);

        Reg->RootKey = HKEY_CURRENT_USER;

        Reg->OpenKey("Software\\ArenaLogin",1);


        Reg->GetValueNames(Values);

        if(Values->Count < 4)

        {       Reg->CloseKey();

                Reg->Access = KEY_READ | KEY_WRITE;

                Reg->OpenKey("Software\\ArenaLogin",1);

        }

        for(int i=0; i<Values->Count; i++)

                if(Values->operator [](i) == "Account")

                {exist = true; break; }

        if(!exist)

                 Reg->WriteString("Account","");


        exist = false;

        for(int i=0; i<Values->Count; i++)

                if(Values->operator [](i) == "Login")

                {exist = true; break; }

        if(!exist)

                 Reg->WriteString("Login","");


        exist = false;

        for(int i=0; i<Values->Count; i++)

                if(Values->operator [](i) == "Logout")

                {exist = true; break; }

        if(!exist)

                Reg->WriteInteger("Logout",20);


        exist = false;

        for(int i=0; i<Values->Count; i++)

                if(Values->operator [](i) == "Password")

                {exist = true; break; }

        if(!exist)

                Reg->WriteString("Password","");


        EAccount->Text = Reg->ReadString("Account");

        ELogoutTime->Text = Reg->ReadInteger("Logout");

        pw = Reg->ReadString("Password");

        temp = new char[pw.Length()];

        ELoginTime->Text = Reg->ReadString("Login");

        for(int i=0; i<pw.Length(); i++)

        {

                temp[i] = pw.operator [](i+1);

                temp[i]+= 47-i*i;

        }

        temp[pw.Length()] = 0;

        EPassword->Text = temp;


        delete Values;

        delete Reg;

        delete temp;

}

Wenn ich diese Funktion aufrufe klappt ja alles wunderbar, aber sobald ich

versuche, das Programm zu beenden, erscheint die Fehlermeldung mit dem Pointer und er landet im Quellcode an der Stelle des Destruktors (an der Deklaration)

Könnt ihr weiter helfen:confused: :confused: :confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by Hoppo

Keine Ahnung, ich finde den Destruktor nicht :confused:

Aber der Fehler tritt nur auf wenn ich eine bestimmte Funktion aufrufe:

TForm1::LoadVars()

{

bool exist = false;

Wenn ich diese Funktion aufrufe klappt ja alles wunderbar, aber sobald ich

versuche, das Programm zu beenden, erscheint die Fehlermeldung mit dem Pointer und er landet im Quellcode an der Stelle des Destruktors (an der Deklaration)

Könnt ihr weiter helfen:confused: :confused: :confused: [/b]

Das ist ja auch nicht der Destruktor.

Und der wird eben aufgerufen wenn Instanzen von Klassen zerstört werden.

Vorschlag: Lies doch mal ein Buch das dir die Grundzüge von C++ erklärt und vesuch nicht zu fliegen ohne laufen zu können.

Gibt es in deinem Quellcode was , was aussieht wie eine Methode aber ein ~ im Namen hat ??

Frank

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...