Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TFileStream.Memory? (https://www.delphipraxis.net/113093-tfilestream-memory.html)

Neutral General 2. Mai 2008 14:38


TFileStream.Memory?
 
Hi,

Mir ist aufgefallen, dass alle von THandleStream abgeleitete Klassen(Streams) die property "Memory" nicht besitzen.. Ist das irgendwie nachrüstbar, oder geht das aufgrund der Tatsache, das die Daten eben nicht im Speicher liegen nicht?

Gruß
Neutral General

Apollonius 2. Mai 2008 14:41

Re: TFileStream.Memory?
 
THandleStream arbeitet eben mit File-Handles und nicht mit MMFs. Du könntest entweder einen eigenen MMF-Stream schreiben oder die Methode LoadFromFile eines Memorystreams verwenden.

Neutral General 2. Mai 2008 14:46

Re: TFileStream.Memory?
 
Hi,

Ja irgendwie wusste ichs ja :| :mrgreen:
Also ich benutze eigentlich fast immer MemoryStreams aber in diesem Fall fänd ichs schon ganz nett, wenn die Dateien auf der Festplatte bleiben und nicht in den Speicher geladen werden würden.

Mit MMFs könnte ich beides haben oder? Dann muss ich mir wohl mal MMFs anschauen ;)
Ist zwar theoretisch nicht sooo dringend aber kann ja auch nicht schaden sich sowas mal anzuschauen, vorallem falls ich die Dinger auch bei meinem 4-Byte-Folgen-Statistik Teil benutzen will/muss..

SirThornberry 2. Mai 2008 14:54

Re: TFileStream.Memory?
 
Wenn du dich auf die Methoden von TStream beschränkst kannst du die Klasse jederzeit austauschen ohne viele Änderungen.

himitsu 2. Mai 2008 15:37

Re: TFileStream.Memory?
 
Zitat:

aber kann ja auch nicht schaden sich sowas mal anzuschauen
http://www.delphipraxis.net/internal...=879295#879295
im Anhang sind einige Streams drin (samt Einem mit MMF)

und auch wenn sie auf Record's aufbauen, lassen sie sich bestimmt leicht in Objekte umwandeln (falls nötig) :stupid:

oder Bei Google suchenmemory mapped stream [google]*memorymappedstream[/google]
http://www.vclcomponents.com/Delphi/...eams-info.html




PS: Ein Problem bei MMFs ist, daß man die Position der Datei nicht frei im RAM positionieren kann.
Genauer, man kann nicht jede beliebige Dateiposition an den Anfang des gemappten Speichersblocks legen,
drum verschiebt sich die MapPosition abhängig zur Dateiposition im RAM und auch die MAP-Größe paßt sich dynamisch an.
Zitat:

MSDN-Library durchsuchenMapViewOfFile
The combination of the high and low offsets must specify an offset within the file mapping. They must also match the memory allocation granularity of the system. That is, the offset must be a multiple of the allocation granularity. To obtain the memory allocation granularity of the system, use the GetSystemInfo function, which fills in the members of a SYSTEM_INFO structure.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 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