Hi!
Ich ziehe die Probleme mal wieder magisch an...
Neuerdings kommt schon vor der ersten Zeile meines Programmes eine
Exception, und zwar beim Initialisieren der Units (
Unit System, Prozedur InitUnits, siehe unten).
Ich habe in all meinen Units mit 'initialization' einen Haltpunkt in die erste Zeile nach selbingen gesetzt, aber die
Exception kommt noch bevor der erste Haltpunkt erreicht wird. Ggf. also eine
Exception in einer Fremdunit. Die Frage ist nun: welche
Unit verursacht das Problem? Insgesamt (laut der Variable "Count", s.u.) werden ~486 Units geprüft, ob sie initialisiert werden müssen.
Erschwerend kommt hinzu, dass Delphi (weil ich es wohl mal aus versehen angehakt habe) bis eben nicht bei einer AccessViolation angehalten hat; somit kann ich weder sagen, seit wann ich das Problem tatsächlich habe (bisher wurde ja einfach nur keine Fehlermeldung angezeigt), noch welche
Unit in diesem Zeitraum neu dazu gekommen sein könnte.
Kann man von dem Pointer auf die
Unit auf den Unitnamen schließen? Was kann ich tun? *help*
Zitat:
---------------------------
Benachrichtigung über Debugger-
Exception
---------------------------
Im Projekt bla.exe ist eine
Exception der Klasse EAccessViolation mit der Meldung '
Access violation at address 00520424 in module 'bla.exe'. Read of address 0000E3BD' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------
Delphi-Quellcode:
procedure InitUnits;
unit System;
// ...
var
Count, I: Integer;
Table: PUnitEntryTable;
P: Pointer;
begin
if InitContext.InitTable =
nil then
exit;
Count := InitContext.InitTable^.UnitCount;
I := 0;
Table := InitContext.InitTable^.UnitInfo;
{$IFDEF LINUX}
Inc(Cardinal(Table), InitContext.Module^.GOT);
{$ENDIF}
try
while I < Count
do
begin // <-- hier Exception ----------------------------
P := Table^[I].Init;
Inc(I);
InitContext.InitCount := I;
if Assigned(P)
then
begin
{$IFDEF LINUX}
CallProc(P, InitContext.Module^.GOT);
{$ENDIF}
{$IFDEF MSWINDOWS}
TProc(P)();
{$ENDIF}
end;
end;
except
FinalizeUnits;
raise;
end;
end;