Jestertales Geschrieben 30. August 2001 Geschrieben 30. August 2001 Hallo, Ich versuche mit dem C++ Builder ein Programm zu schreiben, mit dem ich Bilder im *.jpg Format abspeichern kann. Aber der folgende Programmteil produziert immer wieder einen Fehler (Unerlaubter Speicherzugriff): #include <jpeg.hpp> void __fastcall TForm1::Button6Click(TObject *Sender) { TJPEGImage *jpg = new TJPEGImage(); if (SaveDialog1->Execute()) { if (FileExists(SaveDialog1->FileName)) { int i = Application -> MessageBox ("Datei existiert bereits", "Warnung", MB_YESNOCANCEL); // if ( i==6 ) // DBImage1->Picture->SaveToFile(SaveDialog1- // >FileName); } else jpg = (TJPEGImage *)DBImage1->Picture; jpg -> SaveToFile(SaveDialog1->FileName); } delete jpg; } Kann mir jemand sagen, warum das so ist und mir helfen, damit das nicht mehr passiert? Zitieren
MadMatrix Geschrieben 30. August 2001 Geschrieben 30. August 2001 Vielleicht liegt's ja daran: Du erstellst am Anfang ein TJPEGImage-Objekt per TJPEGImage *jpg = new TJPEGImage(); (*)Dann setzt du die Varibale jpg auf einen neuen Wert: jpg = (TJPEGImage *)DBImage1->Picture; Von nun an hast du keine Kontrolle mehr über das eben erstellt TJPEGImage-Objekt. Schließlich gibst du das Objekt wieder frei: delete jpg; Nach der Zuweisung bei (*) gibt du aber so ein TJPEGImage-Objekt an der Speicheradresse von DBImage1->Picture frei!!! Zitieren
Empfohlene Beiträge
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.