Das ist aber auch nur Zufall, wenn es hier zufällig geht.
FRecordDef muß vorher leer sein, also es darf wirklich nichts in [0] stehen
und in dem SetupRecord müssen "echte" String-Konstanten (RefCount = -1) drin stecken.
Aber seit diesen komischen mobilen Compilern sollte man dem Braten nicht mehr so einfach trauen.
(die haben schon unsere schöne Delphi-1 geschrottet ... wer weiß was die sonst noch machen)
Nja, und wer weiß wo er sonst noch solchen Code verwendet?
Am Ende ist es doch so, daß man später wieder irgendwo sowas braucht, dann copy&pastet man es und schwup, an der Stelle war das dann natürlich zufällig falsch.
InitializeRecord, FinalizeRecord und CopyRecord, bzw. XxxxxxArray mit Anzahl 1 und schon nutzt man die richtigen Methoden, (siehe
Unit System)
wenn man ungedingt manuell Kopieren machen will.
Oder man weist direkt die Records via
:=
und überläßt es dem Compiler. Es ist ja nicht so, daß der native Code hier sooooooooooooo lahm wäre.
Hey, nun, wo man endlich Record-Helper auch nativen Typen zuweisen kann, wäre ein
Delphi-Quellcode:
type
TRecordDefHelper = record helper for TRecordDef
procedure Assign(const Values: array of TMyRecordDef); // Code siehe InitializeRecordDef in #3
//procedure Add(...
//procedure Delete(...
//...
end;
FRecordDef.Assign(SetupRecord);
doch ganz nett? (geht aber erst seit XE4 oder so
)