Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ein Array in einer TStringList als Object ablegen (https://www.delphipraxis.net/84326-ein-array-einer-tstringlist-als-object-ablegen.html)

Kostas 15. Jan 2007 13:51


Ein Array in einer TStringList als Object ablegen
 
Hallo Zusammen,

wie kann ich bitte ein Array in jeder enzelne TStringList.Item als Object ablegen?
Wenn ich nur ein item in der Liste anlege funkt es einwandfrei. Sobald ein weiteres
Item angelegt wird, sind die Arrays aller Items zerstört. Vermutlich wird nur ein
Pointer in der Liste als Object abgelegt und nicht das komplette Array.

Wenn ich eine Klasse erzeuge und daraus einzelne AdressObjekte inzanzieren würde,
würde es vermutlich gehen. Die Frage ist, kann ich es auch mit einem Array?

Hat jemand eine Idee wie das zu meistern ist?
Gruß Kostas.

Mein code vereinfach sieht so aus:

Delphi-Quellcode:
type TAdresse = Record
                  Namen:String;
                  TelefonNr:String;
                end;
type TAdressenAraay = Array of TAdresse;

var
  AdressenAraay: TAdressenAraay;
begin

  AdressListe:= TStringList.Create;

  //In einer Schleife das array befüllen und alle Items anlegen
  AdressListe.AddObject( Titel, TObject(AdressenAraay));

  //Zum Auslesen des Arrays aus dem item, casten auf dem Ursprungstyp
  AdressenAraay := TAdressenAraay(AdressListe.Items.Objects[n]);

sirius 15. Jan 2007 14:01

Re: Ein Array in einer TStringList als Object ablegen
 
Wieso nimmst du eine TStringlist?

Bau dir doch aus TList eine neue Klasse zusammen!

arbu man 15. Jan 2007 14:05

Re: Ein Array in einer TStringList als Object ablegen
 
Oder mach dir ein array-Object

Delphi-Quellcode:
type
  TArrayedObject = class
  public
    A: TAdressenAraay;
  end;

IngoD7 15. Jan 2007 14:39

Re: Ein Array in einer TStringList als Object ablegen
 
Nur ein paar schnelle Anmerkungen:

TStringList hat keine Eigenschaft Items.

Kann man überhaupt ein Array unfallfrei zum Object casten???

Kostas 15. Jan 2007 14:45

Re: Ein Array in einer TStringList als Object ablegen
 
Zitat:

Zitat von arbu man
Oder mach dir ein array-Object

Delphi-Quellcode:
type
  TArrayedObject = class
  public
    A: TAdressenAraay;
  end;

Besten Dank für die schnelle Hilfe.

So habe ich es jetzt gemacht, und es funkt einwandfrei.
Ich erzeuge jedes mal eine neue Instanz aus der Klasse, übergebe der neuen Instanz das Array, und
übergebe danach die Instanz als Object in der TListBox.

Die Frage ist jetzt noch, wenn ich TListBox.Items.Clear anwende, werde alle Texte und dessen Objekte
laut Doku gelöscht. Gild das auch in meinem Fall! ich habe ja mehrere instanzen der Klasse per Create angelegt.
Muss ich jetzt also nicht mehr die Items durchgehen und alle Objekte auf nil setzen?

Gruß Kostas

Udontknow 15. Jan 2007 15:10

Re: Ein Array in einer TStringList als Object ablegen
 
Hallo!

Da du ja nun ein Objekt ablegst: Warum verwendest du nicht einen Nachfahren von TList anstelle des Arrays, um dann einfacher zusätzliche Funktionalitäten implementieren zu können?

Cu,
Udontknow

Luckie 15. Jan 2007 16:08

Re: Ein Array in einer TStringList als Object ablegen
 
Siehe hier: http://www.delphipraxis.net/internal...=664683#664683

Kostas 15. Jan 2007 16:12

Re: Ein Array in einer TStringList als Object ablegen
 
Zitat:

Zitat von Udontknow
Hallo!

Da du ja nun ein Objekt ablegst: Warum verwendest du nicht einen Nachfahren von TList anstelle des Arrays, um dann einfacher zusätzliche Funktionalitäten implementieren zu können?

Cu,
Udontknow

Eine berechtigte Frage.
Ich habe bis jetzt noch nie TList verwendet. Auch mit eigene Klassen war ich sehr sparsam.
Aus Gewohnheit verwende ich Arrays und Records.
Aber meine Gewohnheiten werde ich gleich mal ändern b.z.w erweitern. :-)
Danke für den Hinweis. :-)

Gruß Kostas


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:27 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