So, das Programm compilert erstmal - schonmal nicht schlecht.
Wenn ich einen Eintrag hinzufüge, und zwar so:
Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
var jahr, monat, tag, std, min, sec, msec:word;
jahrstr, monatstr, tagstr, stdstr, minstr, secstr:string;
begin
setlength(daten,500);
i:=i+1;
daten[i].CDname.interpret:=interpret_edit.Text;
daten[i].CDname.album:=album_edit.Text;
daten[i].genre:=genre_combobox.Text;
daten[i].jahr:=jahr_spinedit.Value;
daten[i].preis:=strtofloat(preis_edit.text);
cd_listbox.Items.Add(daten[i].CDname.interpret+#9+daten[i].CDname.album+
#9+daten[i].genre+#9+inttostr(daten[i].jahr)+#9+floattostrf(daten[i].preis,fffixed,8,2));
eintrag_hinzufuegen(daten[i]);
anzahl_edit.text:=IntTostr(cd_listbox.Items.Count);
DecodeTime(Time,std,min,sec,msec);
stdstr := IntToStr(std);
if length(stdstr)<2 then stdstr := '0'+stdstr;
minstr := IntToStr(min);
if length(minstr)<2 then minstr := '0'+minstr;
secstr := IntToStr(sec);
if length(secstr)<2 then secstr := '0'+secstr;
uhr_edit.Text:=(stdstr+':'+minstr+':'+secstr);
DecodeDate(Date,jahr,monat,tag);
jahrstr := IntToStr(Jahr);
Case length(jahrstr) of
1:jahrstr := '000'+jahrstr;
2:jahrstr := '00'+jahrstr;
3:jahrstr := '0'+jahrstr;
end;
monatstr := IntToStr(monat);
if length(monatstr) < 2 then monatstr := '0' + monatstr;
tagstr := IntToStr(tag);
if length(tagstr) < 2 then tagstr := '0' + tagstr;
datum_edit.text:=(tagstr+'.'+monatstr+'.'+jahrstr);
end;
...dann steht der Eintrag in der Listbox. Wenn ich diesen aber löschen will:
Delphi-Quellcode:
procedure TForm1.lschen1Click(Sender: TObject);
begin
cd_Listbox.Items.Delete(cd_Listbox.ItemIndex);
eintrag_loeschen(cd_Listbox.ItemIndex);
end;
Delphi-Quellcode:
procedure eintrag_loeschen(
Index : Integer);
var i:Integer;
begin
if (
Index >= 0)
and (
Index < Length(daten))
then begin
for i:=Index+1
to High(daten)
do
daten[i-1]:=daten[i];
// umkopieren
SetLength(daten,Length(daten)-1);
// anschließend Array verkleinern - fertig.
end
else
raise Exception.Create('
Ungültiger Index!'#13#10+
'
Minimum = 0'#13#10+
'
Maximum = '+InTtoStr(High(daten))+#13#10+
'
Fehlerhafter Wert = '+IntToStr(
Index)+'
!');
end;
dann kommt dieser Fehler:
"Im Projekt...ist eine
Exception der Klasse
Exception aufgetreten. Meldung: Ungültiger Index. Minimum=0 Maximum=5 Fehlerhafter Wert=-1 Prozess wurde angehalten"
Was kann man da machen?
Danke für deine Geduld mit mir... ich hoffe, ich hab's bis heute Abend kapiert...