Achtung: Es funktioniert aber nur mit kleinen Dateien
Wenn Du eine z.B. 100 MB Datei öffnest wird die komplett in der Arbeitsspeicher geladen.
Wenn es darum geht auf die einzelnen Bytes zuzugreifen ist 1. ziemlich langsam und 2. Arbeitsspeicherverschwenderei erster Extraklasse. Das Array wird dann ebenfalls 100 MB groß sein.
Wenn Du auf die einzelnen Bytes zugreifen möchtest bis Du mit Seek besser bedient.
Verwende lieber folgende Methoden
Delphi-Quellcode:
function ReadByteFromStream(aStream: TStream; aIndex: Int64): Byte;
begin
aStream.Seek(aIndex,soFromBeginning);
aStream.Read(Result,SizeOf(Byte));
end;
procedure WriteByteToStream(aStream: TStream; aIndex: Int64; aByte : Byte);
begin
aStream.Seek(aIndex,soFromBeginning);
aStream.Write(aByte,SizeOf(Byte));
end;
aIndex entspricht dann dem ArrayIndex.