fclientmain.pas

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

PAS
113
字号
unit fClientMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, MPlayer, StdCtrls, ExtCtrls, Buttons, Rio, SoapHTTPClient;

type
  TForm2 = class(TForm)
    Panel1: TPanel;
    MediaPlayer1: TMediaPlayer;
    bbtnGetWavs: TBitBtn;
    bbtnPlayWav: TBitBtn;
    HTTPRIO1: THTTPRIO;
    lbWavs: TListBox;
    procedure bbtnGetWavsClick(Sender: TObject);
    procedure bbtnPlayWavClick(Sender: TObject);
  private
    procedure ParseWavsFiles(const sWavs: String);
    function GetWavFileName(const sWavFile: String): String;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

uses WavsServiceIntf, rjMime;

{$R *.dfm}

procedure TForm2.ParseWavsFiles(const sWavs : String);
var
  sData : String;
  iPos : Integer;
begin
  sData := sWavs;
  while (True) do
  begin
    iPos := Pos(';', sData);
    if (iPos <> 0) then
    begin
      lbWavs.Items.Add(Copy(sData, 1, iPos - 1));
      Delete(sData, 1, iPos);
    end
    else
    begin
      if (Length(sData) > 0) then
      begin
        lbWavs.Items.Add(sData);
        Break;
      end;
    end;
  end;    // while
end;    //

procedure TForm2.bbtnGetWavsClick(Sender: TObject);
var
  aIntf : IWavsService;
  sWavs : String;
begin
  aIntf := HTTPRIO1 as IWavsService;
  try
    sWavs := aIntf.GetWavsList;
    ParseWavsFiles(sWavs);
  finally // wrap up
    aIntf := nil;
  end;    // try/finally
end;

function TForm2.GetWavFileName(const sWavFile : String) : String;
var
  iPos : Integer;
begin
  iPos := 1;
  while (sWavFile[iPos] <> ' ') do
    Inc(iPos);
  Result := Copy(sWavFile, 1, iPos - 1);
end;

procedure TForm2.bbtnPlayWavClick(Sender: TObject);
var
  aIntf : IWavsService;
  ass : TStringStream;
  ams : TMemoryStream;
  sWav : String;
  sFileName : String;
begin
  aIntf := HTTPRIO1 as IWavsService;
  try
    sFileName := lbWavs.Items[lbWavs.ItemIndex];
    sFileName := GetWavFileName(sFileName);
    sWav := aIntf.GetWavFile(sFileName);
    ams := TMemoryStream.Create;
    ass := TStringStream.Create(sWav);
    MimeDecodeStream(ass, ams);
    ams.SaveToFile(sFileName);
    Self.MediaPlayer1.FileName := sFileName;
    Self.MediaPlayer1.Open;
    Self.MediaPlayer1.Play;
  finally // wrap up
    ass.Free;
    ams.Free;
    aIntf := nil;
  end;    // try/finally
end;

end.

⌨️ 快捷键说明

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