AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dateien erstellen

Ein Thema von Meflin · begonnen am 3. Sep 2003 · letzter Beitrag vom 11. Sep 2003
Antwort Antwort
Seite 4 von 4   « Erste     234   
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#31

Re: Dateien erstellen

  Alt 4. Sep 2003, 17:11
Ich hab XP und NTFS, da hab ich eine 5 GB-Datei in weniger als einer Sek.

So ein unsinniges Programm
Für meine Zwecke jedenfalls.
  Mit Zitat antworten Zitat
Benutzerbild von Duffy
Duffy

Registriert seit: 19. Mär 2003
Ort: Wuppertal
835 Beiträge
 
Delphi 3 Standard
 
#32

Re: Dateien erstellen

  Alt 4. Sep 2003, 19:27
Hallo alle zusammen,
so gehts auch ...
Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
const
  OpenFlags: array[Boolean] of Integer = (fmCreate or fmShareExclusive, fmOpenReadWrite or fmShareExclusive);
var
  FileStream: TFileStream;
begin
  FileStream := TFileStream.Create('C:\BigBigWorld.txt', OpenFlags[FileExists('C:\BigBigWorld.txt')]);
  FileStream.Size := 1024*1024*1024;
  FileStream.Free;
end;
byr
Angehängte Dateien
Dateityp: zip gross.zip (205,0 KB, 6x aufgerufen)
Künftige Generationen wollen ihre Fehler selber machen.
Jedes Programm wird nie das können, was Du wirklich brauchst.
Das Gegenteil von gut ist gut gemeint
-----
  Mit Zitat antworten Zitat
wb32

Registriert seit: 4. Jul 2003
143 Beiträge
 
#33

Re: Dateien erstellen

  Alt 11. Sep 2003, 15:00
Fragen über Fragen, als Kommentare im Source
Wäre nett wenn mir das jemand erklären könnte.
Wenn ich damit Dateien erstelle ist die mit irgendwelchen Werten gefüllt, wo kommen die her ?


Code:

var
 F: TFileStream;
 wrBytes, Size: LongWord;
 buf: Byte;
const
 BytesPerBlock = 1024;
begin
 F := TFileStream.Create('c:\test.txt', fmCreate or fmShareExclusive);
 try
  buf := 0;
  Size := 1024 * 1024;
  wrBytes := 0;
 while wrBytes + BytesPerBlock <= Size do begin
  F.Write(buf, BytesPerBlock); // hier wird in die datei geschreiben ??? 
  Inc(wrBytes, BytesPerBlock); // was wird hier gemacht ??? 
 end;
if wrBytes + BytesPerBlock < Size then F.Write(buf, Size - wrBytes); // und was wird dann hier gemacht ??? 
 finally
  F.Free;
 end;
end;
danke ...
  Mit Zitat antworten Zitat
Benutzerbild von Wormid
Wormid

Registriert seit: 26. Aug 2003
Ort: Steinfurt
292 Beiträge
 
Delphi XE2 Professional
 
#34

Re: Dateien erstellen

  Alt 11. Sep 2003, 15:30
Zitat:
F.Write(buf, BytesPerBlock); // hier wird in die datei geschreiben ???
Jau, da wird in die Datei gschrieben... Und zwar der Inhalt von "buf" mit der Länge "BytesPerBlock".

Zitat:
Inc(wrBytes, BytesPerBlock); // was wird hier gemacht ???
Hier wird die Variable "wrBytes" um "BytesPerBlock" erhöht (incrementiert). Alternativ könnte man schreiben "wrBytes := wrBytes + BytesPerBlock". Inc ist aber eleganter und der Assemblercode dahinter ist angeblich auch besser optimiert... Die Variable wrBytes hält also fest, wieviele Bytes bisher in die Datei geschrieben wurden.

Zitat:
if wrBytes + BytesPerBlock < Size then F.Write(buf, Size - wrBytes); // und was wird dann hier gemacht ???
Ich denke, die Zeile soll dafür gut sein, den Rest in die Datei zu schreiben, bis sie die Größe "Size" erreicht hat, falls das innerhalb der Schleife nicht glatt aufging. Allerdings bin ich mir so in der Form nicht sicher, ob das korrekt ist... Müsste es nicht "if wrBytes + BytesPerBlock > Size then ..." heißen?

Gruß

Wormid
Debuggers don't remove Bugs, they only show them in Slow-Motion.
  Mit Zitat antworten Zitat
wb32

Registriert seit: 4. Jul 2003
143 Beiträge
 
#35

Re: Dateien erstellen

  Alt 11. Sep 2003, 15:41
hmm aber

buf := 0;

woher kommt denn da der buchstaben salat in den dateien ?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#36

Re: Dateien erstellen

  Alt 11. Sep 2003, 16:30
Moin wb,

buf ist als Byte deklariert, hat also die Länge 1.
Je Durchgang werden aber BytesPerBlock (hat den Wert 1024) Bytes geschrieben.
In der Datei landet also eine Null und die 1023 Zeichen die im Speicher auf die Null folgen. Was auch immer da stehen mag.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
wb32

Registriert seit: 4. Jul 2003
143 Beiträge
 
#37

Re: Dateien erstellen

  Alt 11. Sep 2003, 16:36
ok verstanden danke
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:48 Uhr.
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