![]() |
Objekt als Parameter; Fehler
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:
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.
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; Mein Frage ist, ist mir da was entgangen oder ist das ein Fehler vom Compiler? |
AW: Objekt als Parameter; Fehler
Der Zeiger wird doch verändert, also benötigst Du ein call by reference.
Wenn Du anstelle der Zuweisung z.B. 'B.AssignTo(Bmp)' geschrieben hättest, bräuchtest Du kein 'var'. Zitat:
|
AW: Objekt als Parameter; Fehler
Stimmt, du hast Recht. Hab vor lauter Bäume wieder den Wald nicht gesehen.
|
AW: Objekt als Parameter; Fehler
Welcher Wald? ;-)
|
AW: Objekt als Parameter; Fehler
War nur ein Beispiel. Das eigentlich Programm ist der Regenwald.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz