AGB  ·  Datenschutz  ·  Impressum  







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

Container(Listen) für Records?

Ein Thema von Bloodfire · begonnen am 19. Mai 2006 · letzter Beitrag vom 19. Mai 2006
Antwort Antwort
Bloodfire

Registriert seit: 17. Jun 2004
38 Beiträge
 
#1

Container(Listen) für Records?

  Alt 19. Mai 2006, 21:50
Hi!

Gibt es keine Container(-liste) für Records?
(so wie TObjectlist)

Müsste ich, wenn ich mir dann eine Klasse, die nur aus String & Integer Eigenschaften besteht, per .Create-Aufruf erzeugen?

Danke!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#2

Re: Container(Listen) für Records?

  Alt 19. Mai 2006, 22:10
Wenn du den Speicher für deine Records selber reservierst (nicht über eine Variable), dann kannst du den Pointer zu diesem Record auch locker in sowas wie TObjectList speichern,

denn die TObjetctList ist ja auch nichts anderes, als eine Liste mit Pointern auf den Speicher der enthaltenen Objekte.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Container(Listen) für Records?

  Alt 19. Mai 2006, 22:23
Zitat von himitsu:
Wenn du den Speicher für deine Records selber reservierst (nicht über eine Variable), dann kannst du den Pointer zu diesem Record auch locker in sowas wie TObjectList speichern,

denn die TObjetctList ist ja auch nichts anderes, als eine Liste mit Pointern auf den Speicher der enthaltenen Objekte.
Dann aber die TObjectList über

List := TObjectList.Create(False); erzeugen, sonst gibt's üble Probleme bei der Freigabe der Liste Besser wäre vielleicht eine TList.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Bloodfire

Registriert seit: 17. Jun 2004
38 Beiträge
 
#4

Re: Container(Listen) für Records?

  Alt 19. Mai 2006, 22:29
Danke für die schnellen Antworten!

Ich glaube, ich werde aber eh eher eine Klasse erstellen und diese über eine TObjectList verwalten.
Wozu hat man denn auch eine objektorientierte Sprache?

Aber hierzu nochmal der Verweis zu meiner vorigen Frage:
Muss man nun eine Variable einer Klasse createn, wenn die Klasse wie folgt aussieht:

Code:
TFormat = class(TObject)
    Name: String;
    FontName: String;
    FontSize: Integer;
    FontStyle: TFontStyle;
    FontColor: TColor;
    FontAlign: TAlignment;
    NextFormat: String;
  public
    constructor Create; //?? wird das benötigt?
    destructor Destroy; //?? wird das benötigt?

    procedure WriteFormat(fName, fFontName: String; fFontSize: Integer;
      fFontStyle: TFontstyle; fFontColor: TColor; fFontAlign: TAlignment;
      fNext: String);
    procedure SaveToFile(fFileName: String);
    procedure LoadFromFile(fFileName: String);
  end;
Oder reicht auch eine einfache Deklaration?

Code:
var
  format: tformat;
begin
  format.name:='test';
end;
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Container(Listen) für Records?

  Alt 19. Mai 2006, 22:34
Hallo,

die einfache Deklaration reicht nicht aus, da es sich um dynamische Datenstrukturen handelt. Du mußt die Objekte erzeugen und auch wieder freigeben:

Delphi-Quellcode:
Format := TFormat.Create;
:
Format.Free;
Gruß Hawkeye
  Mit Zitat antworten Zitat
Bloodfire

Registriert seit: 17. Jun 2004
38 Beiträge
 
#6

Re: Container(Listen) für Records?

  Alt 19. Mai 2006, 22:42
Ok, passt.

Das .Free übernimmt in meinem Fall dann aber die ObjectList per ObjectList.Delete(index), oder?
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Container(Listen) für Records?

  Alt 19. Mai 2006, 22:52
Ja, wenn Delphi-Referenz durchsuchenTObjectList.OwnsObjects auf True steht. Beim Aufruf des TObjectList-Constructors ohne Parameter wird das so gesetzt.
  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 00:46 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