![]() |
Re: Dateien erstellen
|
Re: Dateien erstellen
ok, thx damit wäre die frage beantwortet!
|
Re: Dateien erstellen
Obwohl die Frage eigentlich beantwortet ist: Warum so umständlich mit Streams und Konsorten?
Delphi-Quellcode:
Und *zack*... in 45 Sekunden ist ein Gigabyte weniger frei auf Laufwerk C:!
procedure TForm1.Button1Click(Sender: TObject);
var F: TextFile; S: String; i: Integer; begin AssignFile(F, 'C:\test.txt'); Rewrite(F); // Man kann da auch mit andern Werten spielen... Aber // allzugroß sollte man das nicht machen, sonst fängt Windows // an das auszulagern... Und dann wird es langsam... ;-) SetLength(S, 1024 * 1024); for i := 1 to 1024 do Write(F, S); CloseFile(F); end; Gruß Wormid |
Re: Dateien erstellen
Deine und meine Methode sind sehr ähnnlich. Du benutzt Pascal-Files, ich einen TFilestream. Meine Variante kann aber ohne Modifikation (außer bei den Konstanten und bei Size) belieig großee Dateien schreiben, während du auf deine Array-Größe mal x beschränkt bist.
|
Re: Dateien erstellen
Guten Tag,
erm, steht die Größe der Datei nicht im Datei-Header drinn ? Könnte man da nicht irgendwas regeln ? Sozusagen auslesen und umschreiben ? Bis denne MfG LB |
Re: Dateien erstellen
@Chewie: Stimmt sogar... das mit der beliebigen Größe war mir nicht bewußt. Allergings könte man ja auch SetLength mit der endgültigen Größe des Strings füttern und den dann nur einmal wegschreiben. Ist aber nicht empfehlenswert bei einer gewünschten Länge von über 10 MB oder so. :freak:
|
Re: Dateien erstellen
Zitat:
|
Re: Dateien erstellen
:oops:
Ich hab gerade gemerkt, dass ich einen Denkfehler drin hatte. In der while-Schleife muss auf kleiner/gleich geprüft werden. |
Re: Dateien erstellen
ja das is mir auch schon aufgefallen, weil allle dateien im test (zb bei 10 kb nur 9kb)kleiner wurden als sie sein sollten! *G*
|
Re: Dateien erstellen
Das ist schneller
Code:
kasi
procedure DoCreateFile(Filename: string; Size: LongInt);
var FS: TFileStream; begin FS := TFileStream.Create(Filename, fmCreate); try FS.Size := Size; finally FS.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 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