![]() |
Re: Streams: welche BufSize?
man kann allerdings so einen TWriter auch zum blockorientierten Schreiben und Lesen von Dateien benutzen.
Und das geht um Welten schneller als TFilestream ohne TWriter und TReader. Mal ein Beispiel wo records in ein File geschrieben werden
Delphi-Quellcode:
procedure Tzigzag.SaveZZToFile(const FileName : String);
var schenkel : TPSchenkel; stream : TFileStream; writer : TWriter; i : Integer; size : Integer; begin if Filename = '' then exit; size := SizeOf(TSchenkel); stream := TFileStream.Create(FileName,fmCreate or fmShareDenyWrite); try writer := TWriter.Create(stream,BufferSize); try for i := 0 to flist.Count - 1 do begin schenkel := Flist[i]; writer.Write(schenkel^, size); end; finally writer.Free; end; finally stream.Free; end; end; // SaveToFile (Tzigzag) |
Re: Streams: welche BufSize?
ich finde, dieses geniale Beispiel sollte nicht einfach so untergehen :-)
vor allen Dingen diese tolle Verwendung von Entwurfsmustern ... hier nochmal der richtige Platz, um es zu würdigen :-) von hier ![]() Verions 1.7 ![]()
Delphi-Quellcode:
uses
..., AdBuffer; var fs: TFileStream; begin fs := TFileStream.Create('C:\test.mp3', fmCreate); QueryBufferedStream(fs); //Gebuffert auf den Stream zugreifen... FreeBufferedStream(fs); fs.Free; end; |
Re: Streams: welche BufSize?
Auch wenn wir hier kurz vor einem Glaubenskrieg stehen:
ich kenne meine Daten (Buffer) wenn ich sie in eine Datei schreiben will, dann mach ich das mit
Delphi-Quellcode:
und gleiches gilt auch für .read.
MyFilestream.write(buffer,sizeof(Daten))
oder MyFilestream.write(buffer,sizeof(Buffer)) der buffer sollte nach Möglichkeit n*Cluster/Sektorgröße sein um unnötigen Traffic zu vermeiden. Warum sollte der TReader/TWriter schneller sein als die oben aufgezeigte Möglichkeit? Wenn er mit Typen/Klassen umgehen kann, ist das ja manchmal hilfreich, aber wenn es "nur" darum geht Daten zu schaufeln eigentlich überflüssig!? Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:38 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-2025 by Thomas Breitkreuz