Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#1

Objekt als Parameter; Fehler

  Alt 17. Mai 2012, 06:44
Zuerst ein kleines Beispiel, es macht nichts besonderes, es hängt nur eine Bitmap als Objekt am ListBox bei Button1Click und greift über Test in Button2Click wieder drauf zu:

Delphi-Quellcode:
procedure Test(ListBox: TListBox; Bmp: TBitmap);
var
  B: TBitmap;
begin
  B := TBitmap(ListBox.Items.Objects[0]);
  Bmp := B; //wird ignoriert
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Bmp: TBitmap;
begin
  Bmp := TBitmap.Create;
  ListBox1.Items.AddObject('Blablabla', Bmp);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  Bmp: TBitmap;
begin
  Test(ListBox1, Bmp);

  Bmp.Width := 100;
  Bmp.Height := 50;
  Bmp.Canvas.Rectangle(Bmp.Canvas.ClipRect);
  Canvas.Draw(0, 0, Bmp);

  //... das Free lasse ich hier mal weg
end;
Sonderbarerdweise funktioniert die Prozedur "Test" nicht wie ich es mir vorstelle. Parameter "Bmp" ist TBitmap, ein Zeiger, kein Wert, ein "var" für Rückgabe ist ja somit nicht nötig. Das problem ist aber, dass ohne "var" die letzte Zeile vom Compiler entfernt/ignoriert wird.

Mein Frage ist, ist mir da was entgangen oder ist das ein Fehler vom Compiler?
  Mit Zitat antworten Zitat