Einzelnen Beitrag anzeigen

rumba

Registriert seit: 19. Feb 2013
4 Beiträge
 
#1

Stack Überlauf...aber warum???

  Alt 27. Mai 2013, 10:10
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.

Geändert von TBx (27. Mai 2013 um 11:43 Uhr) Grund: Code-Tags in Delphi-Tags geändert
  Mit Zitat antworten Zitat