fastMM war eine gute Empfehlung. Da ist prompt eine Schusseligkeit in einer alten
Unit hochgekommen, aber der Fehler bleibt.
Ich hab es mal mit
Delphi-Quellcode:
for i:=0 to maxint do
stringgrid1.cells[0,i]:=inttohex(i,8);
versucht.
Das läuft, wie zu erwarten, vor die Speicherwand. Es sieht so aus, als würde der Fehler durch eine bestimmte Kombination aus Daten/Satznummer verursacht.
Mal weiter testen, vielleicht finde ich noch etwas.
Edith:
Jetzt ist der Cursor zum ersten Mal im Sourcecode zu sehen gewesen. Könnt Ihr mit dieser Routine etwas anfangen?
Delphi-Quellcode:
unit Grids
function TSparsePointerArray.MakeAt(
Index: Integer): PPointer;
var
dirP: PSecDir;
p: Pointer;
byteP: PChar;
secIndex: Word;
begin
{ Expand Section Directory if necessary. }
secIndex :=
Index shr secShift;
{ Unsigned shift }
if secIndex >= slotsInDir
then
dirP := expandDir(secDir, slotsInDir, secIndex + 1)
else
dirP := secDir;
{ Index into Section Directory using high order part of
index. Get pointer to Section. If null, create new
Section. Index into Section using low order part of index. }
secDir := dirP;
p := dirP^[secIndex];
{------------------------------ hier stet der Cursor !!!!!
if p = nil then begin
p := makeSec(secIndex, FSectionSize);
dirP^[secIndex] := p
end;
byteP := p;
Inc(byteP, (Index and indexMask) * SizeOf(Pointer));
if Index > FHighBound then
FHighBound := Index;
Result := PPointer(byteP);
cachedIndex := -1
end;
Gruß
K-H