Du hast die lokale Variable
aString nicht initialisiert. Versuche
aString:= '';
oder
Initialize(aString);
Erklärung: Zu einem String werden die Stringdaten selbst, ein Längenwert (Nein, nicht im
Byte[0], dann wären ja nur 255 Zeichen möglich) und ein Referenzzähler abgespeichert. Der Ort, wo diese Daten zu finden sind, wird als "Pointer" in der Variable
aString abgelegt. Wenn Du Code in der Form
anotherString:= aString;
schreibst, wird tatsächlich nur dieser "Pointer" kopiert und der Referenzzähler des Strings inkrementiert.
In Deinem Fall "zeigte"
aString an eine zufällige Stelle, so dass die dort vorhanden Werte interpretiert und verändert worden sind (sehr gefährtlich
).
Edit:
Habe mir gerade den
ASM-Code angesehen: Strings scheinen immer initialisiert zu werden, auch das Kopieren wird in solchen Fällen korrekt abgefangen...