diff --git a/uutlSerialization.pas b/uutlSerialization.pas new file mode 100644 index 0000000..bd70ca9 --- /dev/null +++ b/uutlSerialization.pas @@ -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. +