Guten Abend DPler,
langsam glaube ich, dass mich Delphi trollen will.
Innerhalb einer Schleife kommt es regelmäßig zu einer
AV. Jedoch ist das komische, dass sie immer an einer anderen Stelle auftritt. Mal nach der 10.000 Iteration, mal "erst" nach der 14.000
Mit einigen try-except-Blöcken konnte ich nun nachvollziehen, dass es *scheinbar* an dem Constructor eines Objekts liegt.
Delphi-Quellcode:
type
FeldArray1D = Array of TFeld;
var
folgeZustand, Zustand: TStack;
aArray: FeldArray1D
Feld: TFeld;
begin
for y:=0 to High( aArray ) do
try
folgeZustand.push( TZustand.create( without(aArray, y), Feld, TZustand( Zustand.top ) ) );
except
showmessage('Fehler bei Zustand.create'); // Wird ausgelöst
end;
end;
Nur das (für mich) Komische ist, dass der try-except-Block in dem constructor
nicht ausgelöst wird
Delphi-Quellcode:
constructor TZustand.create(const pBrennt: FeldArray1D; const pGeloescht: TFeld;
const pVorgaenger: TZustand);
begin
try
lVerbrannt := pBrennt;
fGeloescht := pGeloescht;
zVorgaenger := pVorgaenger;
except
showmessage('Fehler in create'); // Keine Reaktion
end;
end;
Kann es evtl. sein, dass nur eine begrenzte Anzahl an Objekten erstellt werden kann ? Das ganze wird wie gesagt mehrere Tausend Mal aufgerufen.
Oder gibt es einen ganz simplen Trick, mit dem ich per debugger an das Problem herangehen kann ? Denn wenn das ganze mal wieder crashed, kommt nur die
AV-Meldung und das CPU-Fenster öffnet sich - nicht die gecrashte Quellcodezeile