AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Record, Array, Class und Schreiben in das Array

Record, Array, Class und Schreiben in das Array

Ein Thema von matashen · begonnen am 9. Jul 2024 · letzter Beitrag vom 11. Jul 2024
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.340 Beiträge
 
Delphi 12 Athens
 
#11

AW: Record, Array, Class und Schreiben in das Array

  Alt 11. Jul 2024, 09:59
Was passiert?
Delphi-Quellcode:
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.

Geändert von haentschman (11. Jul 2024 um 10:06 Uhr)
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
471 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#12

AW: Record, Array, Class und Schreiben in das Array

  Alt 11. Jul 2024, 10:34
Zitat:
PS: Müßte eine Zugriffsverletzung geben beim "Free" der Liste, weil der Poiner in der Liste schon freigegeben ist.
ja, hab das mit den Pointer vermutet

mir hilft aber dann auch kein

progrelease.items[0]:=myitem, 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


Zitat:
PS: Dein Code ist schwierig zu lesen wegen der ungewöhnlichen Einrückung und der ungewöhnlichen Groß/Kleinschreibung.
Für die Profis unter euch brauchts halt ein Handicap das es nicht zu luschi ist

Danke für die Erklärung.
Matthias
Das Leben ist eines der härtesten.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.340 Beiträge
 
Delphi 12 Athens
 
#13

AW: Record, Array, Class und Schreiben in das Array

  Alt 11. Jul 2024, 10:37
Lass das myItem.Free weg.
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;

Geändert von haentschman (11. Jul 2024 um 10:56 Uhr)
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
471 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#14

AW: Record, Array, Class und Schreiben in das Array

  Alt 11. Jul 2024, 10:42
Das heist beim Freigeben der gesamten Liste wirds dann automatisch mit weggeballert??
Matthias
Das Leben ist eines der härtesten.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.340 Beiträge
 
Delphi 12 Athens
 
#15

AW: Record, Array, Class und Schreiben in das Array

  Alt 11. Jul 2024, 10:55
Zitat:
Das heist beim Freigeben der gesamten Liste wirds dann automatisch mit weggeballert?
...ja wenn der Owner des Objektes die Liste ist. Beim Erzeugen der Liste gibst du das an. http://docwiki.embarcadero.com/Libra...ectList.Create
Delphi-Quellcode:
Releasesteps := TProgreleaseClass.Create(True); // True = Liste ist Owner
...
PS: Bei einer TObjectlist<> ist der Owner standardmäßig immer True. Deshalb reicht auch Releasesteps := TProgreleaseClass.Create;

Geändert von haentschman (12. Jul 2024 um 05:30 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 03:26 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