![]() |
Delphi-Version: 5
Datei zu gross für reset(file)?
Hallo Forum,
ich versuche (Windows 7,64 Delphi 2009) eine Datei der Größe 165MByte zu öffnen. Beim Öffnen
Code:
kommt der Fehler
Assignfile(f,Opendialog1.FileName);
Reset(f,1); --------------------------- Benachrichtigung über Debugger-Exception --------------------------- Im Projekt test.exe ist eine Exception der Klasse EInOutError mit der Meldung 'Dateizugriff verweigert' aufgetreten. --------------------------- Anhalten Fortsetzen Hilfe --------------------------- Ist die Datei zu gross für diese Funktion? Vielen Dank, mcmichael |
AW: Datei zu gross für reset(file)?
Reset läd, glaube ich, die gesamte Datei in den Speicher. Und wenn da nicht mehr genug Platz am Stück ist, scheint das nicht zu klappen.
|
AW: Datei zu gross für reset(file)?
Zitat:
Ich hätte noch folgende Möglichkeiten anzubieten: - die Datei ist von einer anderen Anwendung exklusiv geöffnet. - durch die UAC-Umleitung wird die Datei an anderer Stelle gefunden als gedacht. - die Rechte im Verzeichnis sind so, daß man die Datei zwar findet, aber nicht lesen kann. |
AW: Datei zu gross für reset(file)?
Reset läd nichts in den Speicher und schon garnicht cachen diese alten Pascal-APIs die ganze Datei einfach so, von sich aus.
Eigentlich kann man fast alles mit großen Dateien verwenden. Append und Seek hat da schonmal so seine Problemchen und sicherheitshalber sollte man ab 2 GB eher langsam mal den Schlußstrich ziehen. Aber 165 MB liegt noch nichtmal annähernd an der Problemgrenze. PS: Ich hatte vor langem mal einige 64-Bit-Ersatzfunktionen für Seek und Co. hier irgendwo veröffentlicht. Allerdings würde ich, falls möglich, eher zu Streams raten. (die direkte WinAPI kann man gerne vernachlässigen und selbst bestimmte Sonderfälle lassen sich über einen HandledStream und Dergleichen sehr praktisch abdecken) |
AW: Datei zu gross für reset(file)?
Setz Filemode auf 0 und es sollte klappen.
Gruß K-H |
AW: Datei zu gross für reset(file)?
Hallo,
Danke für die Hinweise. habe noch folgende weitere Erfahrungen gesammelt: - eine kleine Datei (100byte) wird (ohne Veränderung des Codes) ohne Probleme eingelesen. - Filestream lädt die 160MByte Datei auch ohne Probleme - eine Verlegung der Datei in einen rechtemäßig unkritischen Bereich führt auch zum Fehler - Filemode ändert nix - kein anderes Programm hat diese Datei geöffnet Reset lädt noch keine Datei, erst Blockread. Aber dazu kommt es ja gar nicht. Der Fehler wird bei Reset generiert. Ich versteh das nicht, aber Filestream kann ich ersatzweise benutzen. Ciao, MC |
AW: Datei zu gross für reset(file)?
Eine FileStream wäre sogar die bessere Lösung
|
AW: Datei zu gross für reset(file)?
Zitat:
|
AW: Datei zu gross für reset(file)?
Zitat:
Code:
fehlt.
CloseFile
Wer mit den "alten" Pascal-Routinen arbeiten will, muß da schon etwas Diziplin mitbringen. Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz