Klar, würde ein FillChar mit 0 wieder ein leeres Array bereitstellen.
Aber wer weiß was bei dir wirklich vor dem Move/FillChar drin stand.
Am Ende hast'e im glücklichsten Fall bloß ein Speicherleck, weil DU die automatische Speicherverwaltung der dynamischen Arrays böswillig zerstört hast, ohne zu wissen wie Diese intern funktioniert.
(ich verrate besser mal nicht, dass es in System Records für die Verwaltungsdaten von LongStrings und dynamischen Arrays gibt, aber da Diese nicht öffentlich sind, sich Emba behaarlich weigert sie zu veröffentlichen und sie zuletzt auch auf unvorhersehbare Weise diese Arrays veränderten, ist es nicht einfach damit mit einer Kopie davon arbeiten zu wollen)
Zitat:
Delphi-Quellcode:
x := integer(@x); // irgendeine Adresse
move(x, R, 8);
lx := length(R.x); // zufällige Zahl, hier ziemlich groß
Das "irgendeine" sagt es schon,
denn "zufällige Zahl, hier ziemlich groß" kann auch schnell irgendwas Anders sein, z.B. eine Zugriffsverlertzunh, wenn es an der Stelle keinen resservierten Speicher gibt.
Und wenn du jetzt auch noch irgendwas mit diesem Array machst, dann viel Spaß, wenn dieses "zufällige Zahl, hier ziemlich groß" irgendwas Wichtiges war, was du dabei eventuell überschreibst/zerstörst, ähnlich einem Bufferoverrun.