zlibfileserviceimpl.~pas
来自「Delphi开发webservice的一套例子」· ~PAS 代码 · 共 112 行
~PAS
112 行
unit ZlibFileServiceImpl;
interface
uses
ZlibFileServiceIntf, InvokeRegistry, Classes, SysUtils;
type
TZlibFileService = class(TInterfacedObject, IZlibFileService)
public
function GetFile(const sFileName : String) : String; stdcall;
function GetCompressedFile(const sFileName : String) : String; stdcall;
function GetFileSize(const sFileName : String) : Integer; stdcall;
function GetCompressedSize(const sFileName : String) : Integer; stdcall;
end;
implementation
uses uSoapPacketComUnCompressor;
procedure ZlibFileServiceFactory(out Obj: TObject);
begin
Obj := TZlibFileService.Create;
end;
{ TZlibFileService }
function TZlibFileService.GetCompressedSize(const sFileName : String) : Integer;
var
aDataStream : TStringStream;
aMS : TMemoryStream;
begin
Result := 0;
if (FileExists(sFileName)) then
begin
aMS := TMemoryStream.Create;
aDataStream := TStringStream.Create('');
try
aMS.LoadFromFile(sFileName);
aMS.SaveToStream(aDataStream);
Result := XTCompressedSize(aDataStream.DataString);
finally // wrap up
aDataStream.Free;
aMS.Free;
end; // try/finally
end;
end;
function TZlibFileService.GetCompressedFile(const sFileName: String): String;
var
aDataStream : TStringStream;
aMS : TMemoryStream;
begin
Result := '';
if (FileExists(sFileName)) then
begin
aMS := TMemoryStream.Create;
aDataStream := TStringStream.Create('');
try
aMS.LoadFromFile(sFileName);
aMS.SaveToStream(aDataStream);
Result := XTToCompressSoapPacket(aDataStream.DataString);
finally // wrap up
aDataStream.Free;
aMS.Free;
end; // try/finally
end;
end;
function TZlibFileService.GetFileSize(const sFileName : String) : Integer;
var
aMS : TMemoryStream;
begin
Result := 0;
if (FileExists(sFileName)) then
begin
aMS := TMemoryStream.Create;
try
aMS.LoadFromFile(sFileName);
Result := aMS.Size;
finally // wrap up
aMS.Free;
end; // try/finally
end;
end;
function TZlibFileService.GetFile(const sFileName: String): String;
var
aDataStream : TStringStream;
aMS : TMemoryStream;
begin
Result := '';
if (FileExists(sFileName)) then
begin
aMS := TMemoryStream.Create;
aDataStream := TStringStream.Create('');
try
aMS.LoadFromFile(sFileName);
aMS.SaveToStream(aDataStream);
Result := aDataStream.DataString;
finally // wrap up
aDataStream.Free;
aMS.Free;
end; // try/finally
end;
end;
initialization
InvRegistry.RegisterInvokableClass(TZlibFileService, @ZlibFileServiceFactory);
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?