Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.196 Beiträge
 
Delphi 12 Athens
 
#5

Re: Einfacher Verschlüsselungs-Algorythmus // Fehler

  Alt 15. Sep 2009, 20:52
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
MSDN sagt zu StrCopy
StrCopy führt keine Überprüfung der Länge durch. Der Zielpuffer muss daher mindestens Platz für StrLen(Source)+1 Zeichen bieten.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat