Delphi-PRAXiS
Seite 2 von 4     12 34      

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 11:28

Re: Dateien erstellen
 
http://www.coax.de/wissen/einheite.asp

Meflin 3. Sep 2003 11:30

Re: Dateien erstellen
 
ok, thx damit wäre die frage beantwortet!

Wormid 3. Sep 2003 13:04

Re: Dateien erstellen
 
Obwohl die Frage eigentlich beantwortet ist: Warum so umständlich mit Streams und Konsorten?

Delphi-Quellcode:
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;
Und *zack*... in 45 Sekunden ist ein Gigabyte weniger frei auf Laufwerk C:!

Gruß

Wormid

Chewie 3. Sep 2003 13:11

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.

Lillebrohr 3. Sep 2003 13:13

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

Wormid 3. Sep 2003 13:19

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:

Chewie 3. Sep 2003 13:24

Re: Dateien erstellen
 
Zitat:

Zitat von Wormid
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:

Bingo :wink: Oder falls doch ... mach schon mal den Kaffee warm :mrgreen:

Chewie 3. Sep 2003 13:28

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.

Meflin 3. Sep 2003 13:34

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*

kasi 3. Sep 2003 19:31

Re: Dateien erstellen
 
Das ist schneller
Code:
procedure DoCreateFile(Filename: string; Size: LongInt);
var
  FS: TFileStream;

begin
FS := TFileStream.Create(Filename, fmCreate);
try
  FS.Size := Size;
finally
  FS.Free;
end;
end;
kasi


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:53 Uhr.
Seite 2 von 4     12 34      

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