Einzelnen Beitrag anzeigen

bono_82

Registriert seit: 11. Dez 2005
17 Beiträge
 
#1

Probleme mit filestream.seek und int64

  Alt 27. Mär 2007, 08:25
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
  Mit Zitat antworten Zitat