Re: 10 Richedit in eine Datei speichern und wieder auslesen
Hi,
Also ich weiß nicht ob das so einfacher ist als meine Variante... ich schau mal ob ich auf den Fehler bei Variante finde und wenn nicht probier ich deine aus. |
Re: 10 Richedit in eine Datei speichern und wieder auslesen
Moin Ferby,
das könnte so aussehen, wenn Du nur den Text haben willst:
Delphi-Quellcode:
Nachdem Du den Wert ausgelesen/geschrieben hast, steht der FileStream auf der Länge des nächsten Eintrages.
// schreiben
var iLen : integer; fs : TFileStream; begin fs := TFileStream.Create(....); try iLen := length(RichEdit1.Lines.Text); fsWrite(iLen,4); fs.Write(RichEdit1.Lines.Text[1],iLen); finally FreeAndNil(fs); end; end; // lesen var iLen : integer; fs : TFileStream; sBuf : string; begin fs := TFileStream.Create(...,fmOpenRead); try fs.Read(iLen,4); SetLength(sBuf,iLen); fs.Read(sBuf[1],iLen); RichEdit1.Lines.Text := sBuf; finally FreeAndNil(fs); end; end; Du kannst also das, was zwischen try/finally steht der Reihe nach für alle RichEdits ausführen. Sollen auch die Formatierungen gespeichert werden wird's etwas komplizierter:
Delphi-Quellcode:
// schreiben
var iLen : integer; fs : TFileStream; ms : TMemoryStream; begin ms := TMemoryStream.Create; fs := TFileStream.Create(....,fmCreate); try ms.Clear; RichEdit1.Lines.SaveToStream(ms); iLen := ms.Position; fs.Write(iLen,4); fs.CopyFrom(ms,0); finally FreeAndNil(fs); FreeAndNil(ms); end; end; // lesen var iLen : integer; fs : TFileStream; ms : TMemoryStream; begin ms := TMemoryStream.Create; fs := TFileStream.Create('c:\temp\riform.txt',fmOpenRead); try fs.Read(iLen,4); ms.Clear; ms.CopyFrom(fs,iLen); ms.Position := 0; RichEdit1.Lines.LoadFromStream(ms); finally FreeAndNil(fs); FreeAndNil(ms); end; end; |
Re: 10 Richedit in eine Datei speichern und wieder auslesen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
Das ist mir viel zu kompliziert, ich möchte nur Befehle verwenden die ich auch verstehe.... Ich habe jetzt alles nochmal geschrieben und zwar nach einen anderen prinizp. Kann sich das wer mal anschauen, es funktioniert auch, nur Zeilenumbrüche werden gelöscht... warum???? Das Programm ist ganz kelein, es nimmt euch nur ganz wenig von eurer kostbaren Zeit weg :-) |
Re: 10 Richedit in eine Datei speichern und wieder auslesen
Ein Zeilenumbruch ist #13#10 unter Windows. #01 ist das Steuerzeichen für "Start of Header".
Btw. sieht mir dein Quellcode reichlich kompliziert aus. |
Re: 10 Richedit in eine Datei speichern und wieder auslesen
Hallo,
Das weiß ich, wo muss ich das #10 einfügen damit es geht, ich habe es auf verschiedenen stellen ausproiert nur dan funktionieren auf einmal andere dinge nicht mehr......... |
Re: 10 Richedit in eine Datei speichern und wieder auslesen
Warte ich schreibe es dir gerade.
|
Re: 10 Richedit in eine Datei speichern und wieder auslesen
So in etwa:
Delphi-Quellcode:
var
Form1 : TForm1; RichEditArray: array[0..2] of TRichedit; implementation {$R *.dfm} procedure SaveRichtEdit(RichEdit: TRichEdit; const Filename: string); var sl : TStringList; begin sl := TStringList.Create; try if FileExists(Filename) then sl.LoadFromFile(Filename); sl.Add(RichEdit.Text); sl.SaveToFile(Filename); finally FreeAndNil(sl); end; end; procedure LoadRichEdits; var Filename : string; sl : TStringList; i : Integer; begin Filename := ExtractFilePath(ParamStr(0)) + 'test.txt'; if FileExists(Filename) then begin sl := TStringList.Create; try sl.LoadFromFile(Filename); for i := 0 to Min(length(RichEditArray), sl.Count) - 1 do begin RichEditArray[i].Text := sl.Strings[i]; end; finally FreeAndNil(sl); end end; for i := 0 to length(RichEditArray) - 1 do RichEditArray[i].Visible := True; end; procedure TForm1.FormCreate(Sender: TObject); var i : integer; begin for i := 0 to length(RichEditArray) - 1 do begin RichEditArray[i] := TRichedit.Create(Self); RichEditArray[i].Parent := Self; RichEditArray[i].SetBounds(100, 10, 550, 250); RichEditArray[i].Visible := False; end; end; procedure TForm1.speichernClick(Sender: TObject); var Filename : string; i : Integer; begin Filename := ExtractFilePath(ParamStr(0)) + 'test.txt'; if FileExists(Filename) then begin if not DeleteFile(Filename) then ShowMessage(SysErrorMessage(GetLastError)) else for i := 0 to length(RichEditArray) - 1 do SaveRichtEdit(RichEditArray[i], Filename); end; end; procedure TForm1.waserwillmenueClick(Sender: TObject); var i : Integer; begin for i := 0 to length(RichEditArray) - 1 do RichEditArray[i].Visible := False; RichEditArray[waserwillmenue.ItemIndex].Visible := True; end; procedure TForm1.ladenClick(Sender: TObject); var i : Integer; begin speichern.Visible := True; LoadRichEdits; for i := 0 to length(RichEditArray) - 1 do RichEditArray[i].Visible := True; end; |
Re: 10 Richedit in eine Datei speichern und wieder auslesen
Hallo,
Danke werde ich später ausprobieren habe jetzt leider keine Zeit mehr.... das Christkind kommt muss gucken gehen :shock: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:28 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