Kaynağa Gözat

* [TutlReadBufferStream] added OwnsStream

* [TutlSettings] only use vfs when $USE_VFS is defined
master
Bergmann89 9 yıl önce
ebeveyn
işleme
f1889daab6
2 değiştirilmiş dosya ile 43 ekleme ve 4 silme
  1. +36
    -1
      uutlSettings.pas
  2. +7
    -3
      uutlStreamHelper.pas

+ 36
- 1
uutlSettings.pas Dosyayı Görüntüle

@@ -78,7 +78,7 @@ var
implementation

uses
uutlExceptions, Forms, uvfsManager, uutlMessages, syncobjs;
uutlExceptions, Forms{$IFDEF USE_VFS}, uvfsManager{$ENDIF}, uutlMessages, syncobjs;

const
SETTINGS_MSG_WAIT_TIME = 1000; //ms
@@ -317,6 +317,7 @@ begin
fBlocks.ValueAt[i].Instance.SaveToConfig(aMcf.Section(fBlocks.Keys[i]));
end;

{$IFDEF USE_VFS}
procedure TutlSettings.LoadFromFile(const aFile: string);
var
sh: IStreamHandle;
@@ -331,7 +332,24 @@ begin
end;
end;
end;
{$ELSE}
procedure TutlSettings.LoadFromFile(const aFile: string);
var
fs: TFileStream;
mcf: TutlMCFFile;
begin
fs := TFileStream.Create(aFile, fmOpenRead);
mcf := TutlMCFFile.Create(nil);
try
mcf.LoadFromStream(fs);
LoadFromConfig(mcf);
finally
FreeAndNil(fs);
end;
end;
{$ENDIF}

{$IFDEF USE_VFS}
procedure TutlSettings.SaveToFile(const aFile: string);
var
sh: IStreamHandle;
@@ -347,6 +365,23 @@ begin
end;
end;
end;
{$ELSE}
procedure TutlSettings.SaveToFile(const aFile: string);
var
fs: TFileStream;
mcf: TutlMCFFile;
begin
fs := TFileStream.Create(aFile, fmCreate);
mcf := TutlMCFFile.Create(nil);
try
SaveToConfig(mcf);
mcf.SaveToStream(fs);
finally
FreeAndNil(mcf);
FreeAndNil(fs);
end;
end;
{$ENDIF}

constructor TutlSettings.Create;
begin


+ 7
- 3
uutlStreamHelper.pas Dosyayı Görüntüle

@@ -81,11 +81,12 @@ type
FBufferValid: boolean;
FBufferStart, FBufferLen, FBufferAvail: Int64;
FPosition: int64;
FOwnsStream: Boolean;
protected
function GetSize: Int64; override;
procedure SetSize(const NewSize: Int64); override;
public
constructor Create(const BaseStream: TStream; const BufferSize: Cardinal);
constructor Create(const BaseStream: TStream; const BufferSize: Cardinal; const aOwnsStream: Boolean = false);
destructor Destroy; override;
function Read(var Buffer; Count: Integer): Integer; override;
function Write(const Buffer; Count: Integer): Integer; override;
@@ -379,19 +380,22 @@ end;

{ TutlReadBufferStream }

constructor TutlReadBufferStream.Create(const BaseStream: TStream; const BufferSize: Cardinal);
constructor TutlReadBufferStream.Create(const BaseStream: TStream; const BufferSize: Cardinal;
const aOwnsStream: Boolean);
begin
inherited Create;
FBaseStream:= BaseStream;
FBufferLen:= BufferSize;
FBuffer:= GetMemory(FBufferLen);
FOwnsStream := aOwnsStream;
FPosition:= 0;
end;

destructor TutlReadBufferStream.Destroy;
begin
FBufferValid:= false;
//FBaseStream.Free;
if (FOwnsStream) then
FBaseStream.Free;
FreeMemory(FBuffer);
inherited;
end;


Yükleniyor…
İptal
Kaydet