AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Objekt als Parameter; Fehler

Ein Thema von Popov · begonnen am 17. Mai 2012 · letzter Beitrag vom 17. Mai 2012
Antwort Antwort
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
Furtbichler
(Gast)

n/a Beiträge
 
#2

AW: Objekt als Parameter; Fehler

  Alt 17. Mai 2012, 06:49
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'.
...oder ist das ein Fehler vom Compiler?
Nicht bei solch banalen Sachen.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#3

AW: Objekt als Parameter; Fehler

  Alt 17. Mai 2012, 07:02
Stimmt, du hast Recht. Hab vor lauter Bäume wieder den Wald nicht gesehen.
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#4

AW: Objekt als Parameter; Fehler

  Alt 17. Mai 2012, 07:04
Welcher Wald?
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#5

AW: Objekt als Parameter; Fehler

  Alt 17. Mai 2012, 07:11
War nur ein Beispiel. Das eigentlich Programm ist der Regenwald.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz