Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Fehler bei Programm (https://www.delphipraxis.net/122300-fehler-bei-programm.html)

Xaaroth 13. Okt 2008 14:49


Fehler bei Programm
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich bin am verzweifen.Das Programm hat wunderbar funktioniert, aber seit ich ein normales Array gegen ein dynacmishes ausgetauscht habe tauchen lauter Fwhler auf. Das Programm scheint aber, wenn man die Fehler wegklickt weiterzulaufen.
Fehler im Anhang

Fehler beim starten:

http://img262.imageshack.us/my.php?image=fehler1pq2.png

Fehler beim beenden:
http://img352.imageshack.us/img352/7655/fehler2bu2.png

Woran könnte das liegen?

Delphi-Quellcode:
[...]
[b] Feld,Feld2: array of array of boolean;[/b]
  a,b,Menge,Feldmase:integer;
  Num,Save:TstringList;
  sMenge:string;
implementation

{$R *.dfm}

    procedure TForm1.ConfigField();
    begin
    Tabelle.DefaultColWidth:=round(513/Feldmase);
    Tabelle.DefaultRowHeight:=round(513/Feldmase);
    Tabelle.RowCount:=Feldmase;
    Tabelle.ColCount:=Feldmase;
    end;
   [..]
procedure TForm1.ShowData;
var x,y,z,S1:integer;
begin
 for x:=0 to 15 do begin
  for y:=0 to 15 do begin
  If Feld[x+1,y+1]=false then begin
    Tabelle.Cells[x+1,y+1]:=''
    end;
      If Feld[x+1,y+1]=true then begin
    Tabelle.Cells[x+1,y+1]:='X'
    end;
  end;
 end;
 for S1:=0 to 14 do begin
Tabelle.Cells[S1,0]:='X';
Tabelle.Cells[S1,14]:='X';
Tabelle.Cells[0,S1]:='X';
Tabelle.Cells[14,S1]:='X';
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var S1,S2:integer;
begin
[b]Feldmase:=16;
SetLength(Feld,Feldmase,Feldmase);
SetLength(Feld2,Feldmase,Feldmase);
ConfigField();[/b]

procedure TForm1.Button9Click(Sender: TObject);
var check:boolean;
temp:integer;
begin
check:=false;
try
temp:=round(Strtoint(Edit4.Text));
If temp<10 then begin
check:=true;
end;
If temp>40 then begin
check:=true;
end;
If check=true then begin
ShowMessage('Ungültiger Wert');
end;
If check=false then begin
Feldmase:=temp;
end;
except
ShowMessage('Bitte nur Zahlen eingeben');
end;
ConfigField();
end;

end.
Natürlich würde es so noch nicht funktionierren( also das machen was es soll).
Aber woran kann dieser Fehler leigen?

Die neuen Stellen sind fett

EDIT: Ein wenig eingekürtz an den Stellen, wo ich cnihts verändert hatte

Medium 13. Okt 2008 14:55

Re: Fehler bei Programm
 
Himmel Ar*** und Zwirn :shock:. Bei der Länge an Source zum "mal drüber schauen" wäre es denke ich schon angebracht, das ganze in eine zumindest einigermaßen lesbare (=styleguidekonforme) Form zu bringen.

Luckie 13. Okt 2008 14:56

Re: Fehler bei Programm
 
Zwei Dinge:
Bitte gib deinem Thread einen aussagekräftigen Titel und
poste bitte nur die wirklich relevanten Codeteile.

@Medium: So einen Code habe ich hie rneulich schon mal gesehen. Mir wurde dann erklärt, dass sie das so in der Schule lernen würden. :?

DeddyH 13. Okt 2008 14:56

Re: Fehler bei Programm
 
Hab lange gesucht, bin dann aber auf
Zitat:

Delphi-Quellcode:
for a:=0 to 16 do begin

gestoßen. Hier versuchst Du, auf das 17. Element eines 16 Elemente großen Arrays zuzugreifen. Ändere hier mal die 16 in 15 (an allen Stellen) und versuch es dann noch einmal.

Xaaroth 13. Okt 2008 15:02

Re: Fehler bei Programm
 
Das ist es! Super vielen dank. Wieder mal ganz banal xD

DeddyH 13. Okt 2008 15:27

Re: Fehler bei Programm
 
Kleiner Tipp für die Zukunft: bei dynamischen Arrays nicht mit Konstanten arbeiten, sondern die Funktionen High() und Low() benutzen, dann kann Dir dieser Fehler nicht passieren.
Delphi-Quellcode:
for i := Low(Array) to High(Array) do


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