// DXPConfig { FPC Globals for DXPExpert.

Licensed under MPL (http://www.mozilla.org/MPL/) Copyright 2003 - Eric Grange } unit DXPConfig; interface uses Classes; type // TDXPConfig // TDXPConfig = class (TObject) protected { Protected Declarations } procedure WriteString(aStream : TStream; const aString : String); function ReadString(aStream : TStream) : String; public { Public Declarations } constructor Create; virtual; procedure SaveToStream(aStream : TStream); virtual; abstract; procedure LoadFromStream(aStream : TStream); virtual; abstract; procedure SaveToFile(const fileName : String); procedure LoadFromFile(const fileName : String); end; // ----------------------------------------------------------------- // ----------------------------------------------------------------- // ----------------------------------------------------------------- implementation // ----------------------------------------------------------------- // ----------------------------------------------------------------- // ----------------------------------------------------------------- uses SysUtils; // Create // constructor TDXPConfig.Create; begin inherited Create; end; // SaveToFile // procedure TDXPConfig.SaveToFile(const fileName : String); var fs : TFileStream; begin fs:=TFileStream.Create(fileName, fmCreate); try WriteString(fs, '#'); WriteString(fs, '# DXP Config File'); WriteString(fs, '#'); WriteString(fs, ''); SaveToStream(fs); finally fs.Free; end; end; // LoadFromFile // procedure TDXPConfig.LoadFromFile(const fileName : String); var fs : TFileStream; begin fs:=TFileStream.Create(fileName, fmOpenRead+fmShareDenyWrite); try ReadString(fs); ReadString(fs); ReadString(fs); ReadString(fs); LoadFromStream(fs); finally fs.Free; end; end; // WriteString // procedure TDXPConfig.WriteString(aStream : TStream; const aString : String); const cCRLF : array [0..1] of Byte = ($0D, $0A); begin if aString<>'' then aStream.Write(aString[1], Length(aString)); aStream.Write(cCRLF, 2); end; // ReadString // function TDXPConfig.ReadString(aStream : TStream) : String; var buf : Char; begin // ugly, I know, feel free to improve Result:=''; while aStream.Position