Hallo,
hier die Funktion bei Zeile 535:
Delphi-Quellcode:
Function TIntegerDictionary.FindHash(aKey : TDictIntType; Out h: Cardinal): Pointer;
Begin
h := HashFromInt(aKey) Mod fHashMod;
Result := fHashList[h];
While PIntHashEntry(Result) <> Nil Do
With PIntHashEntry(Result)^ Do
If heKey = aKey Then
Exit
Else
Result := heNext;
End;
Der Wert NIL wird abgefangen.
Was eventuell helfen könnte, ein paar unnötige Begin/end einzubauen, damit das with sich auch garantiert auf den else-Teil erstreckt, aber diese Zeiten sind doch wohl lange vorbei...
Delphi-Quellcode:
Function TIntegerDictionary.FindHash(aKey : TDictIntType; Out h: Cardinal): Pointer;
Begin
h := HashFromInt(aKey) Mod fHashMod;
Result := fHashList[h];
While PIntHashEntry(Result) <> Nil Do
Begin
With PIntHashEntry(Result)^ Do
Begin
If heKey = aKey Then
Exit
Else
Result := heNext;
end;
end;
End;
Man kann ja in der Zeile " If heKey = aKey Then" mit F9 einen Breakpoint setzen und dann mal laufen lassen.
Gruß Horst