AGB  ·  Datenschutz  ·  Impressum  







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

RichEdit.txt als Stream speichern

Ein Thema von moperswings · begonnen am 10. Nov 2005 · letzter Beitrag vom 10. Nov 2005
Antwort Antwort
moperswings

Registriert seit: 27. Mai 2004
Ort: Bad Sooden-Allendorf
240 Beiträge
 
Delphi 6 Professional
 
#1

RichEdit.txt als Stream speichern

  Alt 10. Nov 2005, 07:58
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;
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: RichEdit.txt als Stream speichern

  Alt 10. Nov 2005, 08:26
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:
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;
[/quote]

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
  Mit Zitat antworten Zitat
moperswings

Registriert seit: 27. Mai 2004
Ort: Bad Sooden-Allendorf
240 Beiträge
 
Delphi 6 Professional
 
#3

Re: RichEdit.txt als Stream speichern

  Alt 10. Nov 2005, 09:16
Danke schön, ich werde Deine Vorschläge bei mir einbauen!

Viele Grüsse

moperswings
  Mit Zitat antworten Zitat
Antwort Antwort


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:20 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