Autor Beitrag
soisseteben
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 111

Win XP
D7
BeitragVerfasst: Sa 28.10.06 13:30 
Hallo erstmal,
Ich erzeuge in meinem Program ein TBitmap-Objekt und weise das das einem Menueintrag als Bitmap zu. Danach geb ich das BitmapObjekt wieder frei:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
Bm := TBitmap.Create;
try
  {...}
  MainMenu1.Items[1].Bitmap := Bm;
finally Bm.Free; end;


Da in "MainMenu1.Items[1].Bitmap" doch nur eine Referenz auf Bm darstellt (oder?) dürfte das doch nicht mehr funktionieren, wenn der Speicherplatz für das Bitmap freigegeben würde.
Oder ist Bm nur ein Zeiger bzw. wird bei Bm.Free nur die Zeigervariable freigegeben?
Oder zeigt "MainMenu1.Items[1].Bitmap" auf freigegebenen Speicher und es funktioniert nur deshalb, weil er noch nicht überschriebn wurde?

Fragen über Fragen, habt ihr vllt. eine Antwort?

Danke

_________________
„Wer nur nach dem Zweck der Dinge fragt, wird ihre Schönheit nie entdecken.“ - (Halldór Laxness)
Phantom1
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 390



BeitragVerfasst: Sa 28.10.06 13:59 
ausblenden Delphi-Quelltext
1:
  MainMenu1.Items[1].Bitmap := Bm;					

Es wird keine Referenz gespeichert, das bild wird bei diesem Aufruf kopiert!

Hier der beweis (Bitmap ist ein property mit einer Setter-Methode):

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TMenuItem.SetBitmap(Value: TBitmap);
begin
  if FBitmap = nil then FBitmap := TBitmap.Create;
  FBitmap.Assign(Value); // Bild wird kopiert!
  MenuChanged(True);
end;


mfg
soisseteben Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 111

Win XP
D7
BeitragVerfasst: Sa 28.10.06 14:05 
Danke, das beruhigt mich ungemein. Wo bekommt man denn solchen Delphi-internen Quellcode her?

_________________
„Wer nur nach dem Zweck der Dinge fragt, wird ihre Schönheit nie entdecken.“ - (Halldór Laxness)
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Sa 28.10.06 14:09 
user profile iconsoisseteben hat folgendes geschrieben:
Wo bekommt man denn solchen Delphi-internen Quellcode her?
Bei den Professional-Versionen ist der Quellcode dabei, ebenso bei Turbo-Delphi. Sollte dazu mehr Informationsbedarf bestehen: Bitte einen neuen Thread aufmachen ;-)

_________________
We are, we were and will not be.
soisseteben Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 111

Win XP
D7
BeitragVerfasst: Sa 28.10.06 14:11 
Ne, das passt schon. Danke nochmal.

_________________
„Wer nur nach dem Zweck der Dinge fragt, wird ihre Schönheit nie entdecken.“ - (Halldór Laxness)