wavsserviceimpl.pas

来自「Delphi开发webservice的一套例子」· PAS 代码 · 共 72 行

PAS
72
字号
unit WavsServiceImpl;

interface

uses
  WavsServiceIntf, InvokeRegistry, Classes, SysUtils, Forms;

type
  TWavsService = class(TInterfacedObject, IWavsService)
  private
    sAppPath : String;
  public
    Constructor Create;
    function GetWavsList : String; stdcall;
    function GetWavFile(const sFileName : String) : String; stdcall;
  end;

implementation

uses rjMime;

procedure WavsServiceFactory(out Obj: TObject);
begin
  Obj := TWavsService.Create;
end;

{ TWavsService }

constructor TWavsService.Create;
begin
  inherited Create;
  sAppPath := ExtractFilePath(Application.ExeName);
end;

function TWavsService.GetWavFile(const sFileName: String): String;
var
  ams : TMemoryStream;
  ass : TStringStream;
begin
  Result := '';
  if (FileExists(sAppPath + 'wavs\' + sFileName)) then
  begin
    ams := TMemoryStream.Create;
    ams.LoadFromFile(sAppPath + 'wavs\' + sFileName);
    ass := TStringStream.Create('');
    try
      MimeEncodeStream(ams, ass);
      Result := ass.DataString;
    finally
      ass.Free;
      ams.Free;
    end;
  end;
end;

function TWavsService.GetWavsList: String;
var
  sr: TSearchRec;
  FileAttrs: Integer;
  sFileName : String;
  sSearchString : String;
  iEncodeSize : Integer;
begin
  Result := '';
  sSearchString := sAppPath + 'wavs\' + '*.wav';
  if FindFirst(sSearchString, FileAttrs, sr) = 0 then
  begin
    repeat
      sFileName := sr.Name;
      iEncodeSize := MimeEncodedSize(sr.Size);
      sFileName := sFileName +
                   ' 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?