Forum: Programmieren allgemein
Delphi
by Uwe Raabe,
27. Jan 2014
Du kannst natürlich auch die Konstanten direkt in das TRecordDef.Create verlagern. Solange das Konstanten-Array nur dafür benutzt wird daraus dynamische Arrays zu machen, wäre das immerhin auch ein Ansatz.
Procedure InitializeRecordDef(Var recordDef: TRecordDef);
Begin
recordDef := TRecordDef.Create(
(Feldname: 'Magic'; Feldtype: sqKeyText),
(Feldname:...
Forum: Programmieren allgemein
Delphi
by Uwe Raabe,
27. Jan 2014
Das stimmt eben genau in diesem Fall nicht!
Stringkonstanten haben einen Referenzzähler von -1, der auch nicht verändert wird. Mit dem Move-Befehl wird ja auch nicht der String kopiert, sondern nur der Zeiger darauf. Für den weiteren Programmablauf verhält sich das Stringfeld im Record genauso als ob man die Konstante direkt zugewiesen hätte. Für nicht-konstante Strings hättest du natürlich...
Forum: Programmieren allgemein
Delphi
by Uwe Raabe,
26. Jan 2014
Dachte ich auch erst, aber die Strings sind ja faktisch Konstanten. Konstante Strings haben aber als RefCount immer -1 und der wird auch nicht verändert.
Normalerweise ist der Move-Befehl bei Records mit ref-counted Feldern ein No-Go. Deshalb würde ich ihn auch in diesem speziellen Fall nicht verwenden.
BTW - Man kann es auch so machen:
Procedure InitializeRecordDef(Var recordDef:...