![]() |
Delphi-Version: 5
Array Property Frage
Hallo,
ich hab eine Klasse mit einer array property. Das array enthält records. Hier mal das ganze vereinfacht. Wieso kann ich den record-Werten nichts zuweisen?
Delphi-Quellcode:
type
TRecA = record number1, number2: integer; end; TTest = class private FArray1: array [0 .. 10] of TRecA; function Get(index: integer): TRecA; procedure Put(index: integer; const value: TRecA); public property Array1[index: integer]: TRecA read Get write Put; default; end; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private public { Public-Deklarationen } end; var Form1: TForm1; test: TTest; implementation {$R *.dfm} function TTest.Get(index: integer): TRecA; begin Result:= FArray1[index]; end; procedure TTest.Put(index: integer; const value: TRecA); begin FArray1[index]:= value; end; procedure TForm1.Button1Click(Sender: TObject); begin if test = nil then test:= TTest.Create; test.Array1[0].number1:= 10; // kann nicht zugewiesen werden end; |
AW: Array Property Frage
Das Problem ist der Record, nicht das Array. Von der Property bekommst du eine Kopie des Records zurück, keine Referenz auf den im Array tatsächlich bestehenden. Du musst also entweder dem Array-Element einen ganzen neuen Record am Stück zuweisen, oder auf eine Klasse umsteigen. (Bei einer Klasse würde eine Referenz von der Property geliefert, und es ginge so wie du es hier vor hast.)
|
AW: Array Property Frage
Danke, alles klar.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:49 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