Browse Source

* load/save stream support

peter 26 years ago
parent
commit
1c1ec9afc9
1 changed files with 48 additions and 3 deletions
  1. 48 3
      fcl/inc/inifiles.pp

+ 48 - 3
fcl/inc/inifiles.pp

@@ -13,7 +13,7 @@
 
 unit IniFiles;
 
-{$mode delphi}
+{$mode objfpc}
 {$H+}
 
 interface
@@ -26,7 +26,8 @@ type
 
    TIniFile = class(TObject)
    private
-     FFileName : string;
+     FFileName   : string;
+     FStream     : TStream;
      FFileBuffer : TStringList;
      function GetName(const line : string) : string;
      function GetValue(const line, name : string) : string;
@@ -34,10 +35,15 @@ type
      function IsSection(const line : string) : boolean;
      function GetSectionIndex(const section : string) : integer;
    protected
+     procedure SetFileName(const fn:string);
+     procedure SetStream(s:TStream);
      procedure LoadFromFile;
      procedure SaveToFile;
+     procedure LoadFromStream;
+     procedure SaveToStream;
    public
      constructor Create(const theFileName : string);
+     constructor Create(s:TStream);
      destructor Destroy; override;
      procedure DeleteKey(const section, ident : string);
      procedure EraseSection(const section : string);
@@ -69,12 +75,22 @@ const
 constructor TIniFile.Create(const theFileName : string);
 begin
    FFileName := theFileName;
+   FStream:=nil;
    FFileBuffer := TStringList.Create;
 
    if FileExists(fileName) then
       LoadFromFile;
 end;
 
+constructor TIniFile.Create(s:TStream);
+begin
+   FFileName := '';
+   FStream:=s;
+   FFileBuffer := TStringList.Create;
+
+   LoadFromStream;
+end;
+
 destructor TIniFile.Destroy;
 begin
    FFileBuffer.Free;
@@ -141,16 +157,42 @@ begin
    result := FFileBuffer.IndexOf(brackets[0] + section + brackets[1]);
 end;
 
+{ Load/Save }
+
+procedure TIniFile.SetFileName(const fn:string);
+begin
+  FFileName:=fn;
+end;
+
+procedure TIniFile.SetStream(s:TStream);
+begin
+  FStream:=s;
+end;
+
 procedure TIniFile.LoadFromFile;
 begin
+  if FFileName<>'' then
    FFileBuffer.LoadFromFile(FFileName);
 end;
 
 procedure TIniFile.SaveToFile;
 begin
+  if FFileName<>'' then
    FFileBuffer.SaveToFile(FFileName);
 end;
 
+procedure TIniFile.LoadFromStream;
+begin
+  if assigned(FStream) then
+   FFileBuffer.LoadFromStream(FStream);
+end;
+
+procedure TIniFile.SaveToStream;
+begin
+  if assigned(FStream) then
+   FFileBuffer.SaveToStream(FStream);
+end;
+
 { Read all Names of one Section }
 
 procedure TIniFile.ReadSection(const section : string; strings : TStrings);
@@ -439,7 +481,10 @@ end.
 
 {
   $Log$
-  Revision 1.4  1999-11-08 15:01:38  peter
+  Revision 1.5  1999-11-23 09:50:51  peter
+    * load/save stream support
+
+  Revision 1.4  1999/11/08 15:01:38  peter
     * fpcmake support
 
   Revision 1.3  1999/11/02 23:58:37  peter