Zitat von
alzaimar:
Insbesondere eine Erklärung der Skiplists ist nicht einfach.
Hallo alzaimar,
ich denke, ich habe einen Fehler entdeckt:
Delphi-Quellcode:
TcsStringSkipList = Class
...
Public
..
Function Find (aKey : String; Var aInfo : Pointer) : Boolean;
Procedure CurrentData (Var aKey : String; aInfo : Pointer); // aInfo ist nicht als var deklariert
..
End;
Damit kann man beim Iterieren keinen Pointer zurückbekommen. Beispiel:
Delphi-Quellcode:
// setze auf 1. satz
FSDBObjectList.First;
// schleife bis ende der liste erreicht
while (not (FSDBObjectList.EndOfList)) do begin
// nimm aktuellen versicherten
versicherter := nil;
aPointer := nil;
testStr := '';
FSDBObjectList.CurrentData(testStr, aPointer); // ohne das var ist aPointer immer nil
if (aPointer <> nil) then begin
versicherter := TVersicherter(aPointer);
..
end;
FSDBObjectList.Next;
end;
mit
Delphi-Quellcode:
..
Function Find (aKey : String; Var aInfo : Pointer) : Boolean;
Procedure CurrentData (Var aKey : String; var aInfo : Pointer); // analog zu Find()
..
funktioniert das Ganze.
Liege ich mit meiner Vermutung richtig?
Gruß,
Christoph