Adresse 000000xx deutet meißt darauf hin, daß irgendwo kein speicher reserviert wurde (NIL-Pointer) ... z.B. leerer String oder fehlendes Objekt/Array
in diesem Fall gibt es 2 Fehlerstellen
1.] was glaubst du passiert, wenn EingabeString nicht mindestens 25 Zeichen hat?
= genau, man versucht irgendwann außerhalb des Strings etwas zu lesen
Du solltest also entweder nur maximal soviele Zeichen verarbeiten, wie im String sind
oder den String vorher auf die passende Länge bringen
2.] du hast keinen Speicher für Ausgabestring reserviert
= SetLength(StringAusgabe, 25); sollte reichen (also vor der Schleife
)
und es macht sich nicht so gut, wenn du globale Variablen nutzt, obwohl nur Prozedur-lokale nötig sind
PS: ArrayAusgabe macht sich als Konstante auch nicht schlecht
Und wozu strcopy, wo du doch vermutlich nur je ein Zeichen kopieren willst?
Dieses sord dann auch nochmal, daß du dir a) schon übertragene Zeichen überschreibst und leicht mal den Speicherbereich von StringAusgabe überscheitest, so daß im Extremfall besser für StringAusgabe mindestens Length(StringEingabe)+24 Zeichen reservert werden müßten und nicht nur 25
StrCopy führt keine Überprüfung der Länge durch. Der Zielpuffer muss daher mindestens Platz für StrLen(Source)+1 Zeichen bieten.