![]() |
Record dynamisch erzeugen
hi,
nachdem in nun schon sehr lange hier im forum gesucht habe und trotzdem noch keine richtige antwort auf die frage gefunden habe muss ich jetz (noch-)mal fragen: myRec=record name: string; id: integer; end; wie kann ich zur laufzeit nun den record so verändern das der an ende so strukturiert ist??? myRec=record name: string; id: integer; neueID: integer; //neuer Eintrag end; kann mir dabei jemand helfen??? *fastverzweifelt* Apollo13 |
Re: Record dynamisch erzeugen
Du könntest dir ein dynamisches Array aus einer Semi-Struktur zusammenstellen, in etwa so:
Delphi-Quellcode:
Wobei DataType angibt, was genau Data^ enthält.
type
TSemiRec = record Data: Pointer; DataType: TDataType; end; Du könntest aber auch Variant-Arrays benutzen.. Aber zu deiner anderen Frage: Die Möglichkeit der Änderung eines Typs zur Laufzeit besteht nicht. |
Re: Record dynamisch erzeugen
hm, ok...ich dachte mir das schon... da muss ich das irendwie anders lösen!!!
thx Apollo13 |
Re: Record dynamisch erzeugen
Spricht denn was dagegen, immer alle Felder im Record zu haben und nur bei bedarf zu füllen?
|
Re: Record dynamisch erzeugen
Ein Alternative zum Record wäre ein Memory-Dataset; also eine Tabelle, die im Hauptspeicher liegt.
Damit kannst du zur Laufzeit Felder hinzufügen. Ausserdem hast du nützliche Zusatzfunktionen wie z.B. Suchen mit Locate und Sortieren nach best. Feldern. Ein Nachteil ist natürlich der Overhead, den ein Memory-Dataset mitbringt. ![]() Empfehlenswert ist TkbmMem Table. Bei sehr grossen Datenmengen kann obige Komponente sogar weniger Speicher benötigen (wg. eingebauter Komprimierung) und wesentlicher schneller Datensätze finden als ein Array of Records. |
Re: Record dynamisch erzeugen
Hai,
kleine Anmerkung: Beim ![]() |
Re: Record dynamisch erzeugen
Hallo Apollo13, Hallo shmia,
Zitat:
![]() |
Re: Record dynamisch erzeugen
danke für die antworten. direkt schon den record im speicher lassen und bei bedarf füllen ist nicht sinn und zweck der sache. ich habe das zwar auch schon überlegt, jedoch sind die verschiedenen tabellen sehr unterschiedlich und somit fällt diese variante auch weg. die idee mit dem memory-dataset finde ich dagegen sehr interessant da sie dem problem am ehesten entgegen kommt. ich werds damit mal probieren!!! großes dankeschön nochmal!!!
:-D Apollo13 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 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