Guten Morgen,
habe momentan ein Problem mit TFileStream. Ich will records vom Typ TFilterItem laden und per TList.Add in einer TList abspeichern.
Der erste record wird gelesen, aber beim zweiten (von vier) rocords erhalte ich eine Access violation. Vermutlich hat es wohl was mit dem ersten Parameter von Read zu tun (buffer), aber ich weiß nicht, wie ich es am elegantesten mache. Einlesen in ein Bytearray funktioniert, aber dann muß ich ja aus dem Bytearray wieder händisch die record-Elemente einzeln in den record kopieren. Das möchte ich vermeiden.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| var myIndex : Integer; myFileStream : TFileStream; myFilterItem : ^TFilterItem; begin try for myIndex := 0 to (Integer(myFileStream.Size) Div Integer(sizeof(TFilterItem))) - 1 do begin New(myFilterItem); if Assigned(myFilterItem) then begin myFileStream.ReadBuffer(myFilterItem, sizeof(TFilterItem)); gFilterList.Add(myFilterItem); end; end; except Dispose(myFilterItem); [ Im Fehlerfall letztes New() rückgängig machen } |
hat jemand eine Idee?
Thanx, Arne