![]() |
Record mit StringList
Hallo,
ich hab grad eine Krise :-) Folgende Vorraussetzungen: Ich lese eine Ini-Datei aus und speichere die einzelnen Daten (Strings, Integers, etc.) in einem Record. Soweit so gut - nur muss ich jetzt eine Section als Liste auslesen. Diese Liste würde ich auch gerne in dem Record speichern. Also bräuchte ich so was ähnliches wie eine StringList in einem Record. Meine Überlegung war auch schon, aus dem Record eine Klasse zu machen und dort die Variablen, als auch die StringList als public-Variablen zu definieren (vielleicht auch als property) Oder gibt es vielleicht eine andere Möglichkeit? - Vielleicht auch eine um bei dem Record bleiben zu können? |
AW: Record mit StringList
Zitat:
Bei der Gelegenheit kannst du auch gleich das Laden und Speichern in die Klasse verlegen:
Delphi-Quellcode:
TAppSetting = class(TObject)
private FDieSection : TStrings; public constructor Create; destructor Destroy;override; procedure LoadFromIni(ini:TCustomIniFile); procedure SaveToIni(ini:TCustomIniFile); property DieSection:TStrings; end; |
AW: Record mit StringList
Man sollte das laden/speichern in einer separaten Klasse erledigen, denn der Datenklasse ist es ziemlich egal, ob sie aus einer INI-Datei kommt.
|
AW: Record mit StringList
Zitat:
Zitat:
|
AW: Record mit StringList
Nja, wenn das Lesen/Speichern unbedingt mit drinnen sein soll ... Records kennen auch Methoden. (seit D2006/TDE)
Beim Record wäre ein dynamisches Array besser, also wenn der Record/Delphi weiterhin seinen Speicher selber automatisch verwalten soll. Sobald ein Objekt (z.B. TList oder TStringList) ins spiel kommt, dann würde ich vom Record abraten und auf ein Datenobjekt umsteigen. |
AW: Record mit StringList
Zitat:
für diese Lösung hab ich mich nun auch entschieden. |
AW: Record mit StringList
Zitat:
Falls geplant ist, die Daten später aus einer Datenbank, XML- oder JSON-Datei zu laden, sind eigene Persistenzklassen natürlich vorteilhaft. Andererseits gibt es dann zwei Klassen wo vorher nur ein Record erwünscht war. Man muss auch bedenken, dass Delphi keine Garbage-Collection hat, so dass man deutlich mehr Code für die Datenklasse und die Persistenzklasse braucht. Es hat alles seine Vor- und Nachteile. Ich würde so beginnen, wie ich es oben vorgeschlagen habe. Sollte es dann notwendig werden die Daten aus einer anderen Quelle (XML,..) zu laden, sollte man je eine weitere Klasse für jede Art der Datenhaltung erstellen. |
AW: Record mit StringList
Daten als Record, Listen darin als dynamisches Array und das Laden/Speichern in je einen Record-Helper (da Records leider keine Vererbung kennen).
CommaText: Falls Kommas in den Texten vorkommen, oder man gernen einen anderen Separator hätte, dann Delimiter und DelimitedText. PS: StrictDelimiter nicht vergessen. |
AW: Record mit StringList
Zitat:
|
AW: Record mit StringList
Zitat:
|
AW: Record mit StringList
Zitat:
Zitat:
Delphi-Quellcode:
Das erklär - wenigstens mir - mal etwas genauer ...
TMyRecord = record
InfoList : TStringList; end; |
AW: Record mit StringList
Delphi-Quellcode:
Das erklär - wenigstens mir - mal etwas genauer ...[/QUOTE]
TMyRecord = record
InfoList : TStringList; end; Ja, das oben ist eine professionelle Lösung, CommaText eher Trick 17. Das Problem mit TStringList in Record ist aber, dass es erst erstellt und dann wieder freigegeben werden muß. Nein, keine große Arbeit, andererseits keine Ahnung was er macht. Und wenn er dann mit Arrays anfängt und die dynamsich verwaltet, dann ist es zwar immer noch keine große Arbeit, aber schon etwas komplexer. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:57 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