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