OK, der Fehler ist mir zwar noch unbekannt, aber ich werd' mir das nochmal genauer ansehen, allerdings denke ich im Moment noch nicht, daß es an meinen Funktionen liegt.
Kannst du eventuell mal etwas Code aus deinem Programm zur verfügung stellen (notfalls auch per PN), damit ich mir dieses auch nochmal direkt an deinem Beispiel ansehen zu können?
TFlushFunc(TFileRec(F).FlushFunc)(F);
Schau mal bitte nach, auf was der Pointer TFileRec(F).FlushFunc zeigt.
Dieses "Zugriffsverletzung an Adresse 00000000" verleitet mich irgendwie zu der Annahme, daß dieser eventuell auf NIL steht.
War schon drauf und drann eine Prüfung einzubauen, aber dann fiehl mir wieder ein, daß dieses eigentlich niemals auf nil stehen sollte, selbst wenn keine Flush-Funktion vorhanden ist, sollte zumindestens eine Dummy-Funktion darin zu finden sein.
PS: Hast du auch die
Unit aus Beitrag #2 verwendet?
Die in #1 hatte leider noch ein/zwei kleine Fehlerchen drin.
Zitat:
recNum := recNum * TFileRec(F).RecSize;
Dieses resultiert daraus, daß bei typisierten Dateien die Position nicht in Byte, sondern Records angebeben wird.
Also bei einer Recordgröße von z.B. 16 Byte wird z.B. nicht Position = 160 (Byte), sonder Position = 10 an-/ausgegeben.