Hallo,
ich will über TFileStream auf eine ca. 3-4 GB große Datei (Image einer Speicherkarte) zugreifen.
Logisch ist die Datei wie die Speicherkarte in Sektoren a 512 Byte eingeteilt. Hier mal der Problemausschnitt:
Delphi-Quellcode:
...
i:=StartSector;
while (i<EndSector_SD+1) and not terminated do
begin
if flag_filemode = true then
begin
//Datei scannen
SourceFile.Seek(int64(i) * int64(512), soFromBeginning);
SourceFile.Read(buffer,512); //buffer ist ein array[0..511] of byte;
end;
...
Es werden immer 512 Byte aus dem Stream entnommen und in ein Buffer geschoben. Das funktioniert auch alles prima, nur wenn für den StartSector eine Wert größer ab ca. 4190000 (ergibt mit 512 multipliziert die Grenze von integer)eingegeben wird, geht seek wieder an den Dateianfang. Wie gesagt, wenn ich bei Werten kleiner ca. 4190000 anfange zu scannen klappt alles bis zum gewünschten EndSector (ca. 6000000) wunderbar. Ist das vielleicht ein Delphi-Bug? Ich benutze Delphi 2005 Prof..
Hat jemand diesbezüglich eine Idee? Grüße