Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Dateien > 2GB auslesen (https://www.delphipraxis.net/1505-dateien-2gb-auslesen.html)

Hendrik 4. Dez 2002 08:44


Dateien > 2GB auslesen
 
Hallo,

ich habe vor etwas längerer Zeit mal ein Konvertierprogramm für Datenbanken geschrieben und muss jetzt mit diesem eine ca. 4 GB grosse Datei auslesen, bekomme ab einer bestimmten Position (schätze mal 2 GB) E/A-Fehler.

Ich habe die Seek, BlockRead, BlockWrite Funktionen benutzt, welche aber als Paramter (speziell Seek) nur Int-Werte zulassen.

Und da ich nicht soo bewandert in Delphi bin:

Wie kann ich das ganze möglichst einfach umstellen ? Bekomme ich das mit o.a. Funktionen hin, oder welche Funktionen empfehlt ihr ? FileSeek / FileRead (die Borland Hilfe rät davon ab...) ?

Gruss,

Hendrik

Luckie 4. Dez 2002 08:57

Dann les sie doch häppchenweise eine. Es dürfte, so denke ich, etwas problematisch werden sie komplett zu lesen, da müßtets du ja 4 GB im Speicher halten. Und ich meine, ich hätte mal gehört Windows weißt einer Anwendung immer nur maximal 2 GB Speicher zu. Eventuell liegt da dein Problem begraben.

Hendrik 4. Dez 2002 09:19

Das mach' ich schon, ich lese und schreibe immer in Blöcken, muss aber relativ oft an ganz bestimmte Stellen positionieren, was dann mit dem Befehl "Seek" fehlschlägt, sobald's halt über die 2 GB Grenze geht...

Luckie 4. Dez 2002 09:23

Und wenn du die Positionierungsvariable als Cardinal deklarierst?. Negativ kann sie ja nicht werden.

sakura 4. Dez 2002 12:13

Zitat:

Zitat von Luckie
Und wenn du die Positionierungsvariable als Cardinal deklarierst?. Negativ kann sie ja nicht werden.

Wird sie aber, da Seek den Parameter als LongInt erwartet.

@Hendrik

Du musst das TFileStream Objekt nutzen, damit kannst Du Dateien mit bis zu 2^63 Bytes (Int64-Parameter) Größe handlen, Seek kann nur 2^31.

Dass sollte eine Weile reichen.

...:cat:...


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz