Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

Kenne zwar keinen C++ Builder aber scheint zu sein, dass im Destruktor von TCustomForm irgendwas mit einem Pointer gemacht wird, der nicht mehr gültig ist oder die Sache die mit dem Pointer gemacht wird ist nicht gültig.

Frank

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:

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

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.