Hallo zusammen,
ich bin neu hier und Delphi- Greenhorn. Ich bekomme immer einen Stack Überlauf und weiß nicht warum. Habe eine Procedure zum Löschen eines Datensatzes aus einer typisierten Datei.
Es muss wohl am Array liegen, aber ich weiß nicht was ich anders machen soll. In einem anderen Fall habe ich das genau so gelöst....nur hier klappt es nicht...HILFE
Hier der Code:
Delphi-Quellcode:
const
BufferSize = 300;
procedure TForm51.SpeedButton3Click(Sender: TObject);
var
Buffer : array[0..BufferSize -1] of Sdatensatz;
i, StartRecord, EndRecord, Max: Integer;
begin
if MessageDlg('Möchten Sie wirklich das Strategiegespräch "' + edit1.Text + '" löschen?',
mtWarning, [mbYes, mbNo], 0) = mrYes
then begin
//Datenzeiger wird vor den akt. Datensatz gesetzt
seek (file3, Filepos(file3)-1);
//starten mit dem ersten Datensatz hinter dem zu löschenden
StartRecord := Filepos(file3)+1;
EndRecord := Filesize(file3);
//max. Buffersize Datensätze lesen
Max := BufferSize;
if Max > EndRecord - StartRecord then
Max := EndRecord - StartRecord;
seek (file3, StartRecord);
for i := 0 to Max -1 do
read(file3, Buffer[i]);
//Datensätze zurückschreiben
seek (file3, StartRecord -1);
for i := 0 to Max -1 do
write(file3, Buffer[i]);
// Datei ab hier abschneiden
Truncate(file3);
positionieren(StartRecord-1);
//Edits leeren
edit1.text := '';
end;
speedbutton3.Enabled := false;
label17.Visible := true;
label17.caption := 'Strategiegespräch '+ inttostr(filepos(file3))+ ' von ' +
inttostr(filesize(file3));
end;
end.