Forum: Object-Pascal / Delphi-Language
Delphi
by gammatester,
11. Jun 2008
Wahrscheinlich wegen der Compilermagic und dem Verwischen von Pointern mit arrays/strings. Es wird wahrscheinlich der Pointer in den Record eintragen, aber die eigentliche Länge der Strings/Arrays ist zum Zeitpunkt des Kompilierens nicht bekannt.
Das ist anders, wenn man string o.ä. nimmt, dann werden zB 201 chars reserviert.
Gammtester
Forum: Object-Pascal / Delphi-Language
Delphi
by gammatester,
11. Jun 2008
OK, was dazu gelernt. Allerdings ist das Dynamische bei Kommunikation über Records in der Regel doch wohl eher die Ausnahme, bzw. würde über spezielle Prozeduren laufen, die Pointer und Länge verwerten.
(Wenn man in seine Records string durch string ersetzt, wird's compiliert)
Gruß Gammatester
Forum: Object-Pascal / Delphi-Language
Delphi
by gammatester,
11. Jun 2008
Warum willst Du denn Finalization im varianten Record machen? (Was immer das bedeuten soll, geht das bei den 'neuen' extended Records)
Selbstverständlich kann man Teile eines varianten Records im Finalizationteil ansprechen (zumindest bei D3 bis D10):
type
vr = record
fix: integer;
case integer of
1: (v1: integer);
2: (v2: boolean);
Forum: Object-Pascal / Delphi-Language
Delphi
by gammatester,
10. Jun 2008
Da hat der Compiler doch wohl auch recht :) Zumindestest hast Du uns die Deklaration auch nicht verraten.
Du kannst mal unter Variant parts in records in der Hilfe nachsehen und prüfen, ob Dir diese weiterhelfen.
Gruß Gammatester