![]() |
Re: Dateien erstellen
Wie groß kann man die datei dann machen? Irgendwann kommt:
Zitat:
|
Re: Dateien erstellen
LongInt ist 32 Bit mit Vorzeichen also 2 GB
Wenn größer sein muß
Code:
So ist THandleStream.setSize auch implementiert
procedure DoCreateFile2(Filename: string; Size: Int64);
var FS: TFileStream; begin FS := TFileStream.Create(Filename, fmCreate); try FileSeek(FS.Handle, Size, 0); Win32Check(SetEndOfFile(FS.Handle)); finally FS.Free; end; end; Aufruf (10 GB )
Code:
KASI
DoCreateFile2(Application.ExeName+'.test', Int64(1024*1024*1024)*10);
|
Re: Dateien erstellen
Cool!
Danke, wie groß werden sie dort maximal. :mrgreen: |
Re: Dateien erstellen
9.223.372.036.854.775.808 Byte
also ca. 9000 Terabyte-Platten :) Werde es in 100 Jahren mal testen :mrgreen: KASI |
Re: Dateien erstellen
Hmmm... einfach die Size zu setzen :wall:
Ist auch ne Idee :nerd: |
Re: Dateien erstellen
Die Dateigröäße steht nicht im Header der Datei. Wenn dann muß der Eintrag im Dateisystem manipuliert werden.
|
Re: Dateien erstellen
OK! Vielen Dank. :thumb:
|
Re: Dateien erstellen
Ich denke, die Größe einer Datei wird berechnet. Das erklärt auch, warum
man zuschauen kann, wie die Anzeige der Größe steigt, wenn man einen Ordner > 10 GB (z.B.) rechts klickt und auf Eigenschaften geht. Sie steht nicht im Header! Ich wollte auch mal sehen, wie schnell ich meine Platte zumüllen kann, dazu habe ich die Funktionen BlockRead und Blockwrite verwendet. Das ging sehr schnell, weil ich 5 Mio Byte per Block in die Datei geschrieben habe. Probier's einfach mal aus. 8) Denk daran, dass Du einen Runtime-Error kriegst, sollte Deine Datei die 4GB überschreiten. Da haut Dir Windows ganz gewaltig auf die Finger! |
Re: Dateien erstellen
chewies methode arbeitet zuverlässig und schnell, da so große dateien nicht erstellt werden müssen (die dateien werden wohl selten größer als 1mb). deshalb werde ich auch bei dieser methode bleiben!
|
Re: Dateien erstellen
Die Geschwindigkeit und die Speicherauslastung kannst du ja über die Konstante BytesPerBlock regulieren..
Außerdem: NTFS (zumindest die Version ab 2000, wies bei NT ist, weiß ich nicht) unterstützen Dateien > 4 GB. Einige API-Funktionen zum Dateeihandling nehmen für die Position des Dateizeigers 2 32Bit-Werte. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:33 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 by Thomas Breitkreuz