Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TFileStream: Später nochmal auf unveränderte Datei zugreifen (https://www.delphipraxis.net/98811-tfilestream-spaeter-nochmal-auf-unveraenderte-datei-zugreifen.html)

FAlter 2. Sep 2007 15:11

Re: TFileStream: Später nochmal auf unveränderte Datei zugre
 
Hi,

auch, wenn es nicht das eigentliche Problem betrifft, jedoch:

Zitat:

Zitat von Martin K
Eine Datei wird zum Lesen geöffnet, etwa so:
Delphi-Quellcode:
TFileStream.Create(FileName, fmOpenRead, fmShareDenyWrite)
Also natürlich soll die Datei während dem Lesen nicht geändert werden, deswegen fmShareDenyWrite.

Das muss richtig heißen:
Delphi-Quellcode:
TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite)
Zumindest sagt meine OH, dass der zweite Parameter nur unter Linux funktioniert und für die Rechte steht (womit aber das gemeint ist, was sich per chmod ändern lässt). Unter Windows wird er ignoriert.

Mfg
FAlter

Martin K 2. Sep 2007 15:14

Re: TFileStream: Später nochmal auf unveränderte Datei zugre
 
Zitat:

Zitat von Olli
Zitat:

Zitat von Martin K
Was ist MMF?

Memory Mapped Files

Zitat:

Zitat von Martin K
Vielleicht doch wieder TMemoryStream verwenden?

Ja

Oh, das war aber ne kurze Erklärung :stupid:

Also angenommen ich lade eine 4 GB große Datei in einen TMemoryStream und habe einen RAM von 1 GB.
Passt das dann noch irgendwie in die Auslagerungsdatei (wobei andere Anwendungen ja auch noch RAM verbrauchen), oder was macht TMemoryStream dann?
Gibts dann ne Exception, wenn das zu groß wird für einen MemoryStream?

Olli 2. Sep 2007 15:19

Re: TFileStream: Später nochmal auf unveränderte Datei zugre
 
Zitat:

Zitat von Martin K
Also angenommen ich lade eine 4 GB große Datei in einen TMemoryStream und habe einen RAM von 1 GB.
Passt das dann noch irgendwie in die Auslagerungsdatei (wobei andere Anwendungen ja auch noch RAM verbrauchen), oder was macht TMemoryStream dann?
Gibts dann ne Exception, wenn das zu groß wird für einen MemoryStream?

Weiß nicht wie der das handhabt. Aber man kann auch bestimmte Abschnitte einer MMF anfordern. Wenn es also gut gekapselt ist, sollte es kein Problem sein.

Relevant ist, wie gesagt, die Größe des RAMs und der Auslagerungsdatei zusammen, minus das was vom OS selber und anderen Anwendungen gebraucht wird.

Martin K 2. Sep 2007 15:24

Re: TFileStream: Später nochmal auf unveränderte Datei zugre
 
Zitat:

Zitat von Olli
Relevant ist, wie gesagt, die Größe des RAMs und der Auslagerungsdatei zusammen, minus das was vom OS selber und anderen Anwendungen gebraucht wird.

Ja, das ist schon klar, aber das ist eben die Frage, ob das bei (sehr) großen Dateien nicht ein wenig end wird und was dann passiert...

@FAlter: also ehrlich gesagt bin ich da überfragt :pale:
Aber ich seh auch grad, dass in der Hilfe steht, dass man es mit or verknüpfen soll.
Wobei es bei TFileStream diese beiden Konstruktoren gibt :gruebel:
Delphi-Quellcode:
constructor Create(const AFileName: string; Mode: Word); overload;
constructor Create(const AFileName: string; Mode: Word; Rights: Cardinal); overload;


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:16 Uhr.
Seite 3 von 3     123   

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