AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dateien > 2GB auslesen

Ein Thema von Hendrik · begonnen am 4. Dez 2002 · letzter Beitrag vom 4. Dez 2002
Antwort Antwort
Hendrik
(Gast)

n/a Beiträge
 
#1

Dateien > 2GB auslesen

  Alt 4. Dez 2002, 09:44
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2
  Alt 4. Dez 2002, 09: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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Hendrik
(Gast)

n/a Beiträge
 
#3
  Alt 4. Dez 2002, 10: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...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4
  Alt 4. Dez 2002, 10:23
Und wenn du die Positionierungsvariable als Cardinal deklarierst?. Negativ kann sie ja nicht werden.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#5
  Alt 4. Dez 2002, 13:13
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.

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:42 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