Also der Stacküberlauf kommt direkt beim Aufrufen der Button-Prozedur:
Delphi-Quellcode:
procedure TfrmDatalogGUI.btnLadenClick(Sender: TObject);
var
I: Integer;
xlsFile : TXLSFile;
template:string;
sprache:Integer;
Datensaetze: array[0..8192] of TDatensatz;
Datum:TDate;
Uhrzeit:TTime;
Expo:Smallint;
O2Einheit:string;
EndOfDataRead:Integer;
error:integer;
begin // <------------------ Hier knallts dann sofort (nachdem die Variablen deklariert worden sind)
// SetLength(Datensaetze,8192);
Aber mit dem dynamischen Array nicht:
Delphi-Quellcode:
procedure TfrmDatalogGUI.btnLadenClick(Sender: TObject);
var
I: Integer;
xlsFile : TXLSFile;
template:string;
sprache:Integer;
Datensaetze: array of TDatensatz;
Datum:TDate;
Uhrzeit:TTime;
Expo:Smallint;
O2Einheit:string;
EndOfDataRead:Integer;
error:integer;
begin
SetLength(Datensaetze,8192);
Ihr habt recht mit dem Shortstring belegt also wirklich 256 Byte:
Zitat:
Ein ShortString hat eine Länge von 0 bis 255 Zeichen. Obwohl sich seine Länge dynamisch ändern kann, beträgt die statische Speicherplatzzuweisung immer 256 Bytes. Im ersten Byte wird die Länge des Strings gespeichert, die restlichen 255 Byte stehen für die Zeichen zur Verfügung