Mega Code Archive

 
Categories / Delphi / Files
 

Saving several controls to one single file

Title: saving several controls to one single file? { - Question: How can I store some TRichEdit components and TEdit Components in a single file? - Answer: Use a filestream and a reader or writer object. These ease the tasks of writing strings to a binary stream and reading them back. } { - Frage: Wie kann ich den Inhalt einiger TRichEdit und TEdit Komponenten in einer einzigen Datei speichern? - Antwort: Verwende einen FileStraem und ein Reader/Writer Objekt. Damit kann man leicht strings in einen bin ren Stream speichern und zur cklesen. } // Save routine // Speichern Routine procedure SaveEditcontrols(const FileName: string; const Controls: array of TCustomEdit); var fs: TFilestream; writer: TWriter; i: Integer; ss: TStringstream; begin fs := TFilestream.Create(FileName, fmCreate); try writer := TWriter.Create(fs, 4096); try for i := Low(Controls) to High(Controls) do if Controls[i] is TCustomRichedit then begin ss := TStringstream.Create(EmptyStr); try with TRichedit(Controls[i]) do begin Plaintext := False; Lines.SaveToStream(ss); end; writer.WriteString(ss.Datastring); finally ss.Free; end; end else writer.WriteString(Controls[i].Text); finally writer.Free; end; finally fs.Free; end; end; // Load routine // Lade Routine procedure LoadEditcontrols(const FileName: string; const Controls: array of TCustomEdit); var fs: TFilestream; reader: Treader; i: Integer; ss: TStringstream; begin fs := TFilestream.Create(FileName, fmOpenread or fmShareDenyWrite); try reader := Treader.Create(fs, 4096); try for i := Low(Controls) to High(Controls) do if Controls[i] is TCustomRichedit then begin ss := TStringstream.Create(reader.ReadString); try with TRichedit(Controls[i]) do begin Plaintext := False; Lines.LoadfromStream(ss); end; finally ss.Free; end; end else Controls[i].Text := reader.ReadString; finally reader.Free; end; finally fs.Free; end; end; // Example to store 2 TRichEdits and 3 Edit Controls to one file // Beispiel, um 3 TRichEdits und 3 TEdit Controls in einer Datei zu speichern procedure TForm1.Button1Click(Sender: TObject); begin SaveEditControls('C:\temp\temp.dat', [richedit1, richedit2, edit1, edit2, edit3]); end;