![]() |
Fehler: Ungültige Zeigeroption
Hallo Zusammen,
ich habe ein Programm geschrieben und bekommen diese Fehlermeldung: Em Projekt ... ist eine Exception der Klasse EInvalidPointer mit der Meldung 'Ungültige Zeigeroption' aufgetreten. Woher kommt dieser Fehler und wie kann ich ihn beheben? Das ganze kommt, wenn ich auf einen Button drücke... Hier einmal der dazugehörige Quelltext.
Delphi-Quellcode:
var schluessel1, schluessel2, schluessel3 : String; i : Integer; KeyA, KeyB, KeyC : array of Integer; zwisch1, zwisch2, zwisch3 : array[0..7] of integer; const bin0: array[0..3] of Integer = (2,4,6,8); const bin1: array[0..3] of Integer = (3,5,7,9); begin keyx := ''; keyy := ''; keyz := ''; schluessel1 := IntToStr(key11); SetLength(KeyA, Length(schluessel1)); Randomize; for I := 1 to length(schluessel1) do begin zwisch1[i] := StrToInt(schluessel1[i]); case StrToInt(Schluessel1[i]) of 0: keyA[i] := (bin0[random(3)]); 1: keyA[i] := (bin1[random(3)]); end; end; for I := 1 to length(schluessel1) do begin keyX := keyX + IntToStr(keyA[i]); end; edit8.text := keyX; Schluessel2 := IntToStr(key12); SetLength(keyB, Length(Schluessel2)); Randomize; for I := 1 to length(Schluessel2) do begin zwisch2[i] := StrToInt(Schluessel2[i]); case StrToInt(Schluessel2[i]) of 0: keyB[i] := (bin0[random(3)]); 1: keyB[i] := (bin1[random(3)]); end; end; for I := 1 to length(Schluessel2) do begin keyY := keyY + IntToStr(keyB[i]); end; edit9.text := keyY; schluessel3 := IntToStr(key13); SetLength(KeyC, Length(schluessel3)); Randomize; for I := 1 to length(schluessel3) do begin zwisch3[i] := StrToInt(schluessel3[i]); case StrToInt(schluessel3[i]) of 0: KeyC[i] := (bin0[random(3)]); 1: KeyC[i] := (bin1[random(3)]); end; end; for I := 1 to length(schluessel3) do begin keyZ := keyZ + IntToStr(KeyC[i]); end; edit10.text := keyZ; schonmal vielen dank für eure Hilfe Euer Manu |
Re: Fehler: Ungültige Zeigeroption
mit SetLength() wird nur von 0..n-1 deklariert, dein Zugriff erfolgt aber bis zum Index n
|
Re: Fehler: Ungültige Zeigeroption
ich vermute hier
Delphi-Quellcode:
Array sind Null-basierend.
schluessel1 := IntToStr(key11);
SetLength(KeyA, Length(schluessel1)); Randomize; for I := 1 to length(schluessel1) do // <-- hier begin so sollte es richtig sein:
Delphi-Quellcode:
for I := 0 to length(schluessel1) -1 do
|
Re: Fehler: Ungültige Zeigeroption
Schau mal im Debugger, wo der Fehler genau auftritt.
Zitat:
|
Re: Fehler: Ungültige Zeigeroption
??? Der Fehler wird auch im Array KEYxx vermutet - nicht im String. Der Zugriff auf den String muss natürlich angepasst werden (oder vice versa)
|
Re: Fehler: Ungültige Zeigeroption
Eben da ist der Haken. Es muss so in der Art lauten:
Delphi-Quellcode:
for i := 1 to Length(StringVar) do
array[i - 1] := StrToInt(StringVar[i]); |
Re: Fehler: Ungültige Zeigeroption
Auch hier kann ich grundsätzlich nur dazu raten während der Entwicklung unbedingt die Bereichs- und Überlaufprüfung in den Projektoptionen -> Compiler zu aktivieren und danach das gesamte Projekt neu erstellen zu lassen (nicht nur compilieren). Danach einfach weiter arbeiten/testen, dann wären alle bisher hier aufgezählten Fehler schon aufgezeigt worden von Delphi
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 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