Image1->Picture->Bitmap = NULL löst Exception aus...



  • Hallo zusammen,

    ich habe ein Problem mit folgendem Code:

    Graphics::TBitmap *temp_bitmap;
    	bool substitute_bitmap = false;
    	if (Image1->Picture->Bitmap != NULL) {
    		 temp_bitmap = new Graphics::TBitmap;
    		 temp_bitmap = Image1->Picture->Bitmap;
    		 delete Image1->Picture->Bitmap;
    		 Image1->Picture->Bitmap = NULL;
    		 substitute_bitmap = true;
    	}
    	Image1->AutoSize = !CBAutoScale->Checked;
    	Image1->Proportional = CBAutoScale->Checked;
    	if (substitute_bitmap) {
    		 Image1->Picture->Bitmap = temp_bitmap;
    		 delete temp_bitmap;
    	}
    

    wenn die Zeile

    Image1->Picture->Bitmap = NULL;
    

    erreicht wird, erhalte ich die Exception

    Erste Gelegenheit für Exception bei $7C81EB33. Exception-Klasse EAccessViolation mit Meldung 'Zugriffsverletzung bei Adresse 7C928FEA in Modul 'ntdll.dll'. Schreiben von Adresse 00000010'. Prozess OfflineSystem.exe (2860)

    Hintergrund ist, dass ich mit Hilfe einer CheckBox (ob sie gesetzt ist) entscheiden möchte, ob ein Image die Eigenschaften AutoSize und Proportional haben soll. Da Proportional laut Hilfe nur gesetzt werden kann, wenn die Eigenschaft Picture kein Bitmap enthält, wollte ich das Bitmap in temp_bitmap zwischenspeichern, dann die Eigenschaft NULL setzen, dann Proportinal ändern und dann wieder das Bild laden. Was muss ich anders machen?

    Gruss Lodo2609



  • Das Ywischenspeichern des Bildes mach besser mit Assign(...) des TBitmap.

    Das leeren des Bitmap im Image geht besser mit:

    Image1->Picture->Assign(0);

    Gruss
    Frank



  • Hallo Frank,

    das funktioniert leider nicht. Es scheint auch nach

    Image1->Picture->Assign(0);
    

    noch ein Bitmap in Picture geladen zu sein, da

    Image1->AutoSize = false;
    Image1->Proportional = true;
    

    keine Wirkung hat. Wenn ich vor dem ersten Laden eines Bildes in Picture die Checkbox betätige, ist alles, ok, es wird auf Proportional umgeschaltet....

    Gruss
    Lodo2609



  • siehe FAQ Thema "Grafik - Bild von TImage löschen"


Log in to reply