Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Dateien erstellen (https://www.delphipraxis.net/8371-dateien-erstellen.html)

Matze 3. Sep 2003 19:41

Re: Dateien erstellen
 
Wie groß kann man die datei dann machen? Irgendwann kommt:

Zitat:

[Fehler] Unit1.pas(41): Überlauf bei Konvertierung oder arithmetischer Operation

kasi 3. Sep 2003 20:24

Re: Dateien erstellen
 
LongInt ist 32 Bit mit Vorzeichen also 2 GB

Wenn größer sein muß
Code:
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;
So ist THandleStream.setSize auch implementiert

Aufruf (10 GB )
Code:
DoCreateFile2(Application.ExeName+'.test', Int64(1024*1024*1024)*10);
KASI

Matze 3. Sep 2003 20:29

Re: Dateien erstellen
 
Cool!
Danke, wie groß werden sie dort maximal. :mrgreen:

kasi 3. Sep 2003 20:38

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

Chewie 3. Sep 2003 21:26

Re: Dateien erstellen
 
Hmmm... einfach die Size zu setzen :wall:

Ist auch ne Idee :nerd:

Luckie 3. Sep 2003 21:29

Re: Dateien erstellen
 
Die Dateigröäße steht nicht im Header der Datei. Wenn dann muß der Eintrag im Dateisystem manipuliert werden.

Matze 4. Sep 2003 06:25

Re: Dateien erstellen
 
OK! Vielen Dank. :thumb:

Dannyboy 4. Sep 2003 12:54

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!

Meflin 4. Sep 2003 12:59

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!

Chewie 4. Sep 2003 15:58

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 18:52 Uhr.
Seite 3 von 4     123 4      

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