![]() |
"Ungültige Zeigeroperation"
Hallo,
ich bekomme die Fehlermeldung "Ungültige Zeigeroperation" beim Aufruf der folgenden Funktion:
Delphi-Quellcode:
Der Fehler kann nicht in der Funktion "self.charToAlphabetInteger()" liegen, das habe ich geprüft!
function TSort.sortStrings(strings:TStrArray;order:String):TStrArray;
var i, i2, i3: Integer; var sortedArray:TStrArray; var tempArray:TTwoDimIntArray; var c, merke:String; begin for i:=0 to length(strings)-1 do begin setLength(tempArray, length(tempArray)+1); i3 := 1; setLength(tempArray[i], 1); for i2:=1 to length(strings[i]) do begin c := strings[i][i2]; if ((length(IntToStr(tempArray[i][i3]))) + (length(IntToStr(self.charToAlphabetInteger(c)))) > 9) then begin i3 := i3 + 1; setLength(tempArray[i], length(tempArray[i])+1); end; tempArray[i][i3] := self.charToAlphabetInteger(c); end; end; setLength(sortedArray, length(strings)); for i:=0 to length(strings)-1 do begin for i2:=0 to i+1 do begin if ((tempArray[i+1][1] < tempArray[i2][1]) AND (order = 'ASC')) OR ((tempArray[i+1][1] > tempArray[i2][1]) AND (order = 'DESC')) then begin merke := strings[i2]; strings[i2] := strings[i+1]; strings[i+1] := merke; end; end; end; for i:=0 to length(strings)-1 do begin sortedArray[i] := strings[i]; end; Result := sortedArray; end; Kann mir jemand helfen? Ich habe nämlich meines Erachtens nach alle Array-Längen richtig gesetzt usw. Danke schonmal! Johannes |
Re: "Ungültige Zeigeroperation"
Setz mal Breakpoints und grenze das genauer ein. Der Evaluator kann da auch helfen.
|
Re: "Ungültige Zeigeroperation"
Hallo Johannes,
ein Versuch: tempArray besitzt die Länge von strings, in den Zeilen 32 und 33 greifst du wahrscheinlich auf Elemente außerhalb beider Arrays zu. Ich habe den Quelltext nicht vollständig geprüft, aber vielleicht genügt es, in der Schleife ab Zeile 30 auf den letzten Durchlauf zu verzichten. Gruß Hawkeye |
Re: "Ungültige Zeigeroperation"
Übrigens lässt sich sowas viel leichter mit aktivierten Rangechecks ({$R+}) finden.
|
Re: "Ungültige Zeigeroperation"
Guten Morgen Johannes,
weil du nicht beschreibst, wozu dein Code benötigt wird, fehlt mir zum Verständnis die Methode CharToAlphabetInteger(). Kannst du auch davon den Quelltext veröffentlichen? Grüße vom marabu |
Re: "Ungültige Zeigeroperation"
Zitat:
|
Re: "Ungültige Zeigeroperation"
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz