AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler: Ungültige Zeigeroption

Ein Thema von 5etH · begonnen am 1. Apr 2008 · letzter Beitrag vom 1. Apr 2008
Antwort Antwort
Benutzerbild von 5etH
5etH

Registriert seit: 4. Mär 2008
Ort: Giessen
217 Beiträge
 
Delphi 2007 Professional
 
#1

Fehler: Ungültige Zeigeroption

  Alt 1. Apr 2008, 10:37
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
Manuel
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#2

Re: Fehler: Ungültige Zeigeroption

  Alt 1. Apr 2008, 10:41
mit SetLength() wird nur von 0..n-1 deklariert, dein Zugriff erfolgt aber bis zum Index n
Ralph
  Mit Zitat antworten Zitat
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: Fehler: Ungültige Zeigeroption

  Alt 1. Apr 2008, 10:43
ich vermute hier
Delphi-Quellcode:
schluessel1 := IntToStr(key11);
SetLength(KeyA, Length(schluessel1));
Randomize;
for I := 1 to length(schluessel1) do // <-- hier
begin
Array sind Null-basierend.

so sollte es richtig sein:
for I := 0 to length(schluessel1) -1 do
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Fehler: Ungültige Zeigeroption

  Alt 1. Apr 2008, 10:43
Schau mal im Debugger, wo der Fehler genau auftritt.

Zitat von gmc616:
Array sind Null-basierend.
Strings aber nicht
Markus Kinzler
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#5

Re: Fehler: Ungültige Zeigeroption

  Alt 1. Apr 2008, 10:47
??? Der Fehler wird auch im Array KEYxx vermutet - nicht im String. Der Zugriff auf den String muss natürlich angepasst werden (oder vice versa)
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Fehler: Ungültige Zeigeroption

  Alt 1. Apr 2008, 10:49
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]);
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: Fehler: Ungültige Zeigeroption

  Alt 1. Apr 2008, 13:45
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz