Hallo
zudem was Luckie gesagt hat: hier sind noch einige Fehler drin:
beim laden/Speichern:
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TForm1.saveClick(Sender: TObject); begin SaveDialog1.Execute; Zahlenliste.Items.SaveToFile (SaveDialog1.FileName); end; |
heißt besser:
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TForm1.saveClick(Sender: TObject); begin if SaveDialog1.Execute then Zahlenliste.Items.SaveToFile (SaveDialog1.FileName); end; |
du würdest
immer laden und speichern, egal ob der user auf abbrechen oder ok geklickt hat. Gugg dir die Sachen, die du verwendest, in der Onlinehilfe an, zu vielen ist ein Beispiel hinterlegt.
dein Fehler sollte hier entstehen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.Button1Click(Sender: TObject); var i,j,k : integer; begin k:= Zahlenliste.Items.Count; SetLength (zahl,k); for i:=1 to Zahlenliste.Items.Count do begin zahl[i]:= StrToInt (Zahlenliste.Items[i-1]); end; |
setlenght(zahl,k): auch ein dynamisches array beginnt bei 0 zu zählen, da du von 1 beginnst zu zählen, bis du mit dem letztem Eintrag außerhalb des gültigen Bereichs. Beim Schreiben mags noch gehen, beim auslesen kracht es dann spätestens. In der tutorial-sparte ist auch ein Eintrag von Peter Lustig zum Thema array, lies dir das mal durch.
probier das mal so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| k:= Zahlenliste.Items.Count-1; SetLength (zahl,Zahlenliste.Items.Count); for i:=0 to k do begin zahl[i]:= StrToInt (Zahlenliste.Items[i]); end; ... |
und fang bei den anderen immer bei 0 an zu zählen, wie es Luckie gesagt hat
Mfg Frank
Moderiert von
Peter Lustig: Code- durch Delphi-Tags ersetzt