![]() |
Große Dateien in den Speicher laden
Ich stehe vor einem kleinen Problem:
Ich möchte eine Datei (1-2 GB) in teilweise in den Speicherladen, sodass ich jeweils immer mit einem Block arbeiten kann. Leider gelingt mir das nicht so. Die Blöcke sollen die Größe 9.728.000 Bytes haben. Leider will mein Delphi keine Arrays von dieser Größe erstellen (EStackOverflow). Gibt es eine andere Möglichkeit, diesen Block in den Speicher zu bekommen? Welche Arten von Buffern können diese Mengen an Daten aufnehmen? |
Re: Große Dateien in den Speicher laden
Ein TMemoryStream muesste das auf jeden Fall können, aber was willst du denn mit den daten machen bzw. wie sehen die Daten denn aus?
Gruß Daniel |
Re: Große Dateien in den Speicher laden
Also die Daten sind ganz normale Dateien (binär). Ich möchte daraus dann einzelne Blöcke auslesen und hashen.
Kannst du das mit dem MemoryStream mal etwas genauer benennen? |
Re: Große Dateien in den Speicher laden
warum willst du die gesammte Datei in den Memory laden? Für diesen Zweck gibt es MemoryMapped files oder so ähnlich.
|
Re: Große Dateien in den Speicher laden
Nur so mal als kleines Beispiel:
Delphi-Quellcode:
var fs : TFileStream;
ms : TMemoryStream; anz : Integer; begin fs := TFileStream.Create(ExtractFilePath(Application.ExeName)+'XXX.zip',fmOpenRead); ms := TMemoryStream.Create; try while fs.Size > fs.Position do begin if (fs.Size - fs.Position) > 9728000 then anz := 9728000 else anz := (fs.Size - fs.Position); ms.Clear; ms.CopyFrom(fs,anz); // Hier kannst du jetzt mit den Daten im Speicher etwas machen .... end; finally ms.Free; fs.Free; end; Gruß Daniel |
Re: Große Dateien in den Speicher laden
Definitiv MMFs benutzen und jeweils den View verschieben!
Zitat:
|
Re: Große Dateien in den Speicher laden
Gut, ich werde mir mal die Memory Mapped Files ansehen. Außerdem werde ich mal schauen, inwieweit ich die Blöckgröße weiter aufspalten kann.
Danke. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:36 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