![]() |
RichEdit.txt als Stream speichern
Hallo,
folgender Code funktioniert so weit um einen Text zu speichern - nur: Ist er auch damit richtig? Vielleicht kann ein Profi mal einen Blick drauf werfen? Danke und Grüsse, moperswings
Delphi-Quellcode:
var
Stream: TFileStream; procedure TForm1.open1Click(Sender: TObject); begin try If OpenDialog1.Execute then begin Stream := TFileStream.Create(OpenDialog1.FileName, fmOpenRead); RichEdit1.Lines.LoadFromStream(Stream); Stream.Free; Stream := nil; end; except Form1.Close; end; end; procedure TForm1.save1Click(Sender: TObject); begin try if SaveDialog1.Execute then begin Stream := TFileStream.Create(SaveDialog1.FileName, fmCreate); RichEdit1.Lines.SaveToStream(Stream); Stream.Free; Stream := nil; end; except Form1.Close; end; end; |
Re: RichEdit.txt als Stream speichern
Hey, im Prinzip ist der Code so richtig, aber es gibt natürlich (fast immer) Kleinigkeiten die man anmerken kann.
Fangen ich doch einfach mal an: Als erstes stellt sich für mich die Frage warum du extra einen Stream benutzt, ich denke RichEdit1.Lines.LoadFromFile(OpenDialog1.Filename) ; sollte es auch tun. Eine andere Sache die mir noch aufgefallen ist, ist dein etwas drastisches Abfangen von Fehlern. Immerhin ist das schließen des Forms doch ein wenig hart, nur weil ein Fehler aufgetreten ist. Ansonsten würde ich dir zu einem try ... finally Block um den Stream raten, damit der immer freigegeben wird. Zudem solltest du die Restriktionen des Streams noch etwas erweitern
Delphi-Quellcode:
[/quote]
procedure TForm1.open1Click(Sender: TObject);
var Stream: TFileStream; begin try if OpenDialog1.Execute then begin try Stream := TFileStream.Create(OpenDialog1.FileName, fmOpenRead or fmShareDenyWrite); RichEdit1.Lines.LoadFromStream(Stream); finally Stream.Free; Stream := nil; end; end; except Form1.Close; end; end; procedure TForm1.save1Click(Sender: TObject); var Stream: TFileStream; begin try if SaveDialog1.Execute then begin try Stream := TFileStream.Create(SaveDialog1.FileName, fmCreate or fmShareExclusive); RichEdit1.Lines.SaveToStream(Stream); finally Stream.Free; Stream := nil; end; end; except Form1.Close; end; end; Ja, zudem kann man (hier auch gemacht) die Variable weniger global setzen. Ist zwar "mehr arbeit" aber auch sauberer. Der eigentliche Vorteil liegt jedoch darin, dass lokale Variablen immer stärker gebunden werden, also Namenskonflikte sind eher auszuschließen. Gruß Der Unwissende |
Re: RichEdit.txt als Stream speichern
Danke schön, ich werde Deine Vorschläge bei mir einbauen!
Viele Grüsse moperswings |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 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