Thema: Delphi Pointer als Parameter?

Einzelnen Beitrag anzeigen

bttb930

Registriert seit: 6. Okt 2003
372 Beiträge
 
#8

Re: Pointer als Parameter?

  Alt 15. Nov 2005, 14:31
noch ein kleines Demo:

Delphi-Quellcode:
type
  TBla = class
  private
    FFeld: string;
  public
    property Feld: string read FFeld write FFeld;
  end;

procedure Change(const aBla: TBla);
begin
  aBla.Feld := 'Hallo';
end;

...

var
  bla: TBla;
begin
  bla := TBla.Create;
  bla.Feld := 'Blub';
  Change(bla);
  ShowMessage(bla.Feld);
  bla.Free;
end;
Ausgegeben wird Hallo und nicht Blub. Denn übergeben wird an Change nur der Zeiger der auf den Inhalt von bla zeigt. Der wird als const übergeben. Die Zeile aBla.Feld := 'Hallo'; ändert aber nicht den Wert von aBla (also die Adresse auf die der Zeiger zeigt), sondern nur den Inhalt von aBla.Feld.

Würde nicht ein Zeiger übergeben werden, sondern der komplette Inhalt von bla, dann wäre in Change das Ändern von Feld nicht möglich, da aBla als const deklariert ist.
  Mit Zitat antworten Zitat