Ich habe nach langem suchen einen Fehler gefunden, der nur bei Verwenden des Optimizers auftritt.
Es ist sehr seltsam:
Ich habe einen Record als Datenstruktur wie folgt definiert:
Recdatarec = record
Flightno: byte;
GOffSet : integer;
PPAD, PMIN: longword;
BtempPad: int64;
preflightpages, CurPage, Startpage, Endpage, recswritten, dpp: word;
end;
Ich habe eine Function:
function AnalyzeFlightdata(fn: byte; var pmin: float; var myppad: longword): byte;
var MYRD: Recdatarec;
test: Longword;
begin
// MYRD aus Flashlesen
PageToBuffer(0, 0);
ReadFromBuffer(0, @MYRD, 0, Sizeof(MYRD));
......
......
myppad:=myrec.ppad;
......
......
end;
Wenn ich ohne Optimizer arbeite klappt das problemlos.
Schalte ich den Optimizer ein werden die Felder myrd.pmin und myrd.ppad des Datensatzes mit Müll überschrieben. Ich konnte es eingrenzen auf die Zuweisung von "myppad:=myrd.ppad;"
Ersetze ich ppad durch eine lokale Variable "test" klappt es auch,
test:=myrd.ppad; läuft ohne Fehler!
Nur wenn ich die als VAR definierte Variable myppad nehme kommt der Fehler.
Wo ist der Fehler?
Viele Grüße,
Louis
Es ist sehr seltsam:
Ich habe einen Record als Datenstruktur wie folgt definiert:
Recdatarec = record
Flightno: byte;
GOffSet : integer;
PPAD, PMIN: longword;
BtempPad: int64;
preflightpages, CurPage, Startpage, Endpage, recswritten, dpp: word;
end;
Ich habe eine Function:
function AnalyzeFlightdata(fn: byte; var pmin: float; var myppad: longword): byte;
var MYRD: Recdatarec;
test: Longword;
begin
// MYRD aus Flashlesen
PageToBuffer(0, 0);
ReadFromBuffer(0, @MYRD, 0, Sizeof(MYRD));
......
......
myppad:=myrec.ppad;
......
......
end;
Wenn ich ohne Optimizer arbeite klappt das problemlos.
Schalte ich den Optimizer ein werden die Felder myrd.pmin und myrd.ppad des Datensatzes mit Müll überschrieben. Ich konnte es eingrenzen auf die Zuweisung von "myppad:=myrd.ppad;"
Ersetze ich ppad durch eine lokale Variable "test" klappt es auch,
test:=myrd.ppad; läuft ohne Fehler!
Nur wenn ich die als VAR definierte Variable myppad nehme kommt der Fehler.
Wo ist der Fehler?
Viele Grüße,
Louis