![]() |
AW: Record, Array, Class und Schreiben in das Array
Was passiert?
Delphi-Quellcode:
:zwinker:
Releasesteps:=TProgreleaseClass.Create(true); //True = Liste ist Eigentümer der Items
myitem:=TProgreleaseitemClass.create; // erzeugen Item releasesteps.add(myitem); // Item in Liste myitem.Free; // Item wegwerfen ... auch auch aus der Liste. Die hällt nur dem Pointer auf das Objekt. PS: Müßte eine Zugriffsverletzung geben beim "Free" der Liste, weil der Poiner in der Liste schon freigegeben ist. PS: Dein Code ist schwierig zu lesen wegen der ungewöhnlichen Einrückung und der ungewöhnlichen Groß/Kleinschreibung. :zwinker: |
AW: Record, Array, Class und Schreiben in das Array
Zitat:
mir hilft aber dann auch kein
Delphi-Quellcode:
denn dann wird ja auch nur der Pointer verschoben wenn ich das richtig verstehe. also doch im add die Werte in das Item schreiben - schade hatte gehofft es geht einfacher
progrelease.items[0]:=myitem,
Zitat:
Danke für die Erklärung. |
AW: Record, Array, Class und Schreiben in das Array
Lass das myItem.Free weg.:wink:
Delphi-Quellcode:
type
TProgReleaseclass = class(TObjectlist<TProgreleaseItemClass>) //private // FSelectedItem:Integer; //public // property ItemIndex:Integer read FSelectedItem write FSelectedItem; // nicht nötig weil die Liste das kennt end; var ReleaseSteps: TProgreleaseClass; myItem: TProgreleaseitemClass; myObject: TProgreleaseitemClass; // anderes Objekt ... Releasesteps := TProgreleaseClass.Create(True); try myItem := TProgreleaseitemClass.Create; myItem.ProductID := 1234; myItem.MachineTypeName := 'Wunschkiste'; myItem.ProgfieldName := 'Test'; Releasesteps.Add(myItem); myObject := Releasesteps[0]; // Index aus der Liste myObject.MachineTypeName := 'Bla'; // [B]myItem[/B] ist das gleiche wie [B]myObject[/B] weil der gleiche Pointer aus der Liste finally Releasesteps.Free; // Alle Items werden feigegeben end; |
AW: Record, Array, Class und Schreiben in das Array
Das heist beim Freigeben der gesamten Liste wirds dann automatisch mit weggeballert??
|
AW: Record, Array, Class und Schreiben in das Array
Zitat:
![]()
Delphi-Quellcode:
PS: Bei einer TObjectlist<> ist der Owner standardmäßig immer True. Deshalb reicht auch
Releasesteps := TProgreleaseClass.Create(True); // True = Liste ist Owner
...
Delphi-Quellcode:
Releasesteps := TProgreleaseClass.Create;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:40 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