Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Record-Struktur zur Laufzeit ändern? (https://www.delphipraxis.net/29670-record-struktur-zur-laufzeit-aendern.html)

alcaeus 12. Sep 2004 23:16


Record-Struktur zur Laufzeit ändern?
 
Hi!

Eine Frage: Kann man die Struktur eines Records zur Laufzeit ändern?
Wenn ja, wie ist dies möglich?

Thanx and Greetz
alcaeus

Luckie 12. Sep 2004 23:40

Re: Record-Struktur zur Laufzeit ändern?
 
Hast du mich nicht das eben im ICQ gefragt?

Nein, geht nicht. Das einzigeste wäre ein variant Record, aber da sind geht es nur mit den Datentypen.

alcaeus 12. Sep 2004 23:55

Re: Record-Struktur zur Laufzeit ändern?
 
Hi Luckie,

nein, ich habe die Frage nicht im ICQ gestellt.
Danke für deine Antwort.

Greetz
alcaeus

Christian Seehase 12. Sep 2004 23:56

Re: Record-Struktur zur Laufzeit ändern?
 
Moin alcaeus,

was hast Du denn vor?

alcaeus 13. Sep 2004 00:00

Re: Record-Struktur zur Laufzeit ändern?
 
Hi Christian,

zum Beispiel Variablen hinzufügen, entfernen, typen ändern etc.
Gibts vielleicht eine Möglichkeit, dies mit einem Array unbestimmten Typs zu lösen?

Greetz
alcaeus

Luckie 13. Sep 2004 00:33

Re: Record-Struktur zur Laufzeit ändern?
 
Mit einem Variant Array innerhalb des Records könnte man es mal versuchen. Ist aber mehr so ein Schuss ins Blaue von mir. Aber für "sauber" würde ich das nicht halten, das sagt mir jetzt so mein Gefühl. Records sind nun mal statische Datentypen und man sollte sie nicht vergewalltigen.

himitsu 13. Sep 2004 06:56

Re: Record-Struktur zur Laufzeit ändern?
 
Zitat:

Zitat von alcaeus
... zum Beispiel Variablen hinzufügen, entfernen, typen ändern ...

Wie soll'n das gehn?
Es ist doch dann eigentlich unmöglich darauf uzugreifen.

Du kannst dir wohl höchstens ein bissl Arbeitsspeicher reservieren und dann mit Pointern arbeiten, wellche du z.B. in 'nen Array of Pointer verwaltest, oder so ...

Zitat:

Zitat von alcaeus
... typen ändern ...

Da könntest du mit Variant's was machen - als Datantyp Variant nehmen und den Zugriff so, wie du ihn dann benötigst.

Luckie 13. Sep 2004 07:00

Re: Record-Struktur zur Laufzeit ändern?
 
Ein Grund warum es eigentlich nicht gehen kann: Es wird Speicher für den Record alloziiert. Nur, wie viel soll alloziiert werden, wenn die Größe des Records nicht konstant ist?

HeinerGrimm 13. Sep 2004 15:37

Re: Record-Struktur zur Laufzeit ändern?
 
Das stimmt nur teilweise. Ein Record kann durchaus eine nicht definierte Datensatzgröße haben, z.B. wenn er normale Strings enthält. In diesem Fall enthält der Record-Datensatz einen Pointer auf den String an Stelle der String-Characters.

Eine Art Record, der zur Laufzeit geändert werden kann, ist das TIniFile (noch besser TMemIniFile). Wenn Rechenzeit nicht das Riesenproblem ist, dann kann man ein TMemIniFile ungefähr wie einen variablen Record verwenden (Vorteil: Wenn UpdateFile; bei Programmende ausgeführt wird, ist die aktuelle "Record"struktur (und die Werte) sogar automatisch speicherresident.

Gruß Heiner

himitsu 13. Sep 2004 15:49

Re: Record-Struktur zur Laufzeit ändern?
 
Zitat:

Zitat von HeinerGrimm
Das stimmt nur teilweise. Ein Record kann durchaus eine nicht definierte Datensatzgröße haben, z.B. wenn er normale Strings enthält. In diesem Fall enthält der Record-Datensatz einen Pointer auf den String an Stelle der String-Characters.

Dann hat der Record aber dennoch eine feste Größe, da nur die Pointer (zu den Strings) zum Record gehören und die haben nunmal immer 4 Byte (bei 'ner 32Bit-Umgebung)


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:44 Uhr.
Seite 1 von 2  1 2      

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