Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit einer Zugriffsverletzung (https://www.delphipraxis.net/110199-problem-mit-einer-zugriffsverletzung.html)

5etH 14. Mär 2008 15:31


Problem mit einer Zugriffsverletzung
 
Hallo zusammen,

ich hab ein Programm geschrieben was eine Zahl entschlüsseln soll Bzw. umcodieren soll. Leider bekomme ich die Fehlermeldung das eine Zugriffsverletzung eingetreten ist weis aber nicht wie sie zustande kommt, vielleicht könnt ihr mir ja weiter helfen.

Da ihr keine Kristallkugel habt, hier einmal der Code

Delphi-Quellcode:
var eingabe : String;
    ausgabe : array of integer;
    i      : Integer;
    test   : String;

begin
  eingabe := edit1.text;
  for I := 1 to length(eingabe) - 1 do
    begin
      ausgabe[i] := StrToint(Eingabe[i]) mod 2; //der Fehler tritt hier auf

    end;
    for I := 1 to length(eingabe) - 1 do
      begin
        test := Inttostr(ausgabe[i]);
      end;

    edit2.text := (test);
end;

Bernhard Geyer 14. Mär 2008 15:34

Re: Problem mit einer Zugriffsverletzung
 
Da fehlt ein
Delphi-Quellcode:
SetLength(ausgabe, length(eingabe))
Ansonsten hat ausgabe die größe/länge 0!

Fussball-Robby 14. Mär 2008 15:35

Re: Problem mit einer Zugriffsverletzung
 
Du musst die Länge des Array mit Hilfe von Setlength setzen.
Delphi-Quellcode:
SetLength(ausgabe,length(eingabe));
Mfg

[Edit]Na toll zu langsam :-D [/Edit]

DeddyH 14. Mär 2008 15:35

Re: Problem mit einer Zugriffsverletzung
 
Delphi-Quellcode:
var eingabe : String;
    ausgabe : array of integer;
    i      : Integer;
    test   : String;

begin
  eingabe := edit1.text;
  SetLength(ausgabe, Length(eingabe)); //erstmal Speicher reservieren
  for I := 1 to length(eingabe) - 1 do //wieso -1?
    begin
      ausgabe[i] := StrToint(Eingabe[i]) mod 2; //der Fehler tritt hier auf

    end;
    for I := 1 to length(eingabe) - 1 do
      begin
        test := Inttostr(ausgabe[i]);
      end;

    edit2.text := (test);
end;

5etH 14. Mär 2008 15:50

Re: Problem mit einer Zugriffsverletzung
 
jetz ist mir aufgefallen das ich einen logischen Fehler habe. In edit2.text wird nur eine zahl ausgegen und nicht der ganze satz, woran kann das liegen? und schonmal vielen dank für eure hilfe ;)

Fussball-Robby 14. Mär 2008 15:52

Re: Problem mit einer Zugriffsverletzung
 
dazu müsste es heißen:[delphi]
for I := 1 to length(eingabe) - 1 do
begin
test := test+Inttostr(ausgabe[i]);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:08 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