| @@ -0,0 +1,69 @@ | |||
| unit uutlSerialization; | |||
| {$mode objfpc}{$H+} | |||
| interface | |||
| uses | |||
| Classes, SysUtils; | |||
| type | |||
| //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | |||
| IutlFileReader = interface | |||
| ['{3A9C3AE3-CAEE-44C9-85BE-0BCAA5C1BE7A}'] | |||
| function LoadStream(const aFilename: String; const aStream: TStream): Boolean; | |||
| end; | |||
| IutlFileWriter = interface | |||
| ['{3DF84644-9FC4-4A8A-88C2-73F13E72B1ED}'] | |||
| procedure SaveStream(const aFilename: String; const aStream: TStream); | |||
| end; | |||
| //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | |||
| TutlSimpleFileReader = class(TInterfacedObject, IutlFileReader) | |||
| public | |||
| function LoadStream(const aFilename: String; const aStream: TStream): Boolean; | |||
| end; | |||
| TutlSimpleFileWriter = class(TInterfacedObject, IutlFileWriter) | |||
| public | |||
| procedure SaveStream(const aFilename: String; const aStream: TStream); | |||
| end; | |||
| implementation | |||
| //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | |||
| //TutlSimpleFileWriter////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | |||
| //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | |||
| procedure TutlSimpleFileWriter.SaveStream(const aFilename: String; const aStream: TStream); | |||
| var | |||
| fs: TFileStream; | |||
| begin | |||
| fs := TFileStream.Create(aFilename, fmCreate); | |||
| try | |||
| fs.CopyFrom(aStream, aStream.Size - aStream.Position); | |||
| finally | |||
| FreeAndNil(fs); | |||
| end; | |||
| end; | |||
| //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | |||
| //TutlSimpleFileReader////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | |||
| //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | |||
| function TutlSimpleFileReader.LoadStream(const aFilename: String; const aStream: TStream): Boolean; | |||
| var | |||
| fs: TFileStream; | |||
| begin | |||
| result := FileExists(aFilename); | |||
| if result then begin | |||
| fs := TFileStream.Create(aFilename, fmOpenRead); | |||
| try | |||
| aStream.CopyFrom(fs, fs.Size - fs.Position); | |||
| finally | |||
| FreeAndNil(fs); | |||
| end; | |||
| end; | |||
| end; | |||
| end. | |||