const str optimization

This commit is contained in:
2018-06-01 21:07:34 +03:00
parent 6dad5b98a2
commit 258dfbff07
7 changed files with 187 additions and 171 deletions

View File

@@ -5,50 +5,53 @@ unit TestCase1;
interface
uses
Classes, SysUtils, fpcunit, testutils, testregistry, AG.Logs{$IFDEF MSWINDOWS},Windows{$ENDIF};
Classes, SysUtils, fpcunit, testutils, testregistry,
AG.Logs{$IFDEF MSWINDOWS}, Windows{$ENDIF};
type
TTestCase1= class(TTestCase)
TTestCase1 = class(TTestCase)
published
procedure TestHookUp;
end;
implementation
procedure Test(s:string);
procedure Test(s: string);
begin
Write(s);
end;
procedure TTestCase1.TestHookUp;
var
MultiLog:TAGLog;
Stream:TStream;
s:TBytes;
MultiLog: TAGLog;
Stream: TStream;
s: TBytes;
begin
MultiLog:=TAGMultiLog.Create(nil);
(MultiLog as TAGMultiLog).Logs.Add(TAGNullLog.Create());
(MultiLog as TAGMultiLog).Logs.Add(TAGDiskLog.Create('test.log'));
(MultiLog as TAGMultiLog).Logs.Add(TAGRamLog.Create());
{$IFDEF MSWINDOWS}(MultiLog as TAGMultiLog).Logs.Add(TAGCommandLineLog.Create(GetStdHandle(STD_OUTPUT_HANDLE))){$ENDIF};
Stream:=nil;
try
Stream:=TFileStream.Create('test2.log',fmOpenRead+fmShareDenyNone);
SetLength(s,Stream.Size);
Stream.Read(s[0],Stream.Size);
except
SetLength(s,0);
end;
FreeAndNil(Stream);
Stream:=TFileStream.Create('test2.log',fmCreate+fmOpenReadWrite+fmShareDenyWrite);
Stream.Write(s[0],Length(s));
(MultiLog as TAGMultiLog).Logs.Add(TAGStreamLog.Create(Stream));
SetLength(s,0);
(MultiLog as TAGMultiLog).Logs.Add(TAGCallBackLog.Create(@Test));
MultiLog.Write('Str Test');
MultiLog.Write('Str+Object Test',self);
FreeAndNil(MultiLog);
MultiLog := TAGMultiLog.Create(nil);
(MultiLog as TAGMultiLog).Logs.Add(TAGNullLog.Create());
(MultiLog as TAGMultiLog).Logs.Add(TAGDiskLog.Create('test.log'));
(MultiLog as TAGMultiLog).Logs.Add(TAGRamLog.Create());
{$IFDEF MSWINDOWS}
(MultiLog as TAGMultiLog).Logs.Add(TAGCommandLineLog.Create(GetStdHandle(STD_OUTPUT_HANDLE)));
{$ENDIF}
Stream := nil;
try
Stream := TFileStream.Create('test2.log', fmOpenRead + fmShareDenyNone);
SetLength(s, Stream.Size);
Stream.Read(s[0], Stream.Size);
except
SetLength(s, 0);
end;
FreeAndNil(Stream);
Stream := TFileStream.Create('test2.log', fmCreate + fmOpenReadWrite +
fmShareDenyWrite);
Stream.Write(s[0], Length(s));
(MultiLog as TAGMultiLog).Logs.Add(TAGStreamLog.Create(Stream));
SetLength(s, 0);
(MultiLog as TAGMultiLog).Logs.Add(TAGCallBackLog.Create(@Test));
MultiLog.Write('Str Test');
MultiLog.Write('Str+Object Test', self);
FreeAndNil(MultiLog);
end;
@@ -57,4 +60,3 @@ initialization
RegisterTest(TTestCase1);
end.