首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

C#代码 转 Delphi,该怎么处理

2013-04-21 
C#代码 转 Delphipublic static class SoundInfo{[DllImport(winmm.dll)]private static extern uint mc

C#代码 转 Delphi

    public static class SoundInfo
    {
        [DllImport("winmm.dll")]
        private static extern uint mciSendString(
            string command,
            StringBuilder returnValue,
            int returnLength,
            IntPtr winHandle);

        public static int GetSoundLength(string fileName)
        {
            StringBuilder lengthBuf = new StringBuilder(32);

            mciSendString(string.Format("open "{0}" type waveaudio alias wave", fileName), null, 0, IntPtr.Zero);
            mciSendString("status wave length", lengthBuf, lengthBuf.Capacity, IntPtr.Zero);
            mciSendString("close wave", null, 0, IntPtr.Zero);

            int length = 0;
            int.TryParse(lengthBuf.ToString(), out length);

            return length;
        }
    }


上段代码帮忙转成Delphi,谢谢!
[解决办法]
1.uses加上mmsystem
2.
type
  SoundInfo = class
  public
    function GetSoundLength(fileName:string): Integer;
  end;

3.
function SoundInfo.GetSoundLength(fileName: string): Integer;
var
  lengthBuf:Array[0..31] of Char;
begin
  MCISendString(PChar('open "'+fileName+'" type waveaudio alias wave'),nil,0,0);
  MCISendString('status wave length',lengthBuf,Length(lengthBuf),0);
  MCISendString('close wave',nil,0,0);

  Result:=StrToInt(lengthBuf);
end;


[解决办法]

uses MMSystem;

type
  TSoundInfo = class
    class function GetSoundLength(fileName: PChar): Integer;
  end;

class function TSoundInfo.GetSoundLength(fileName: PChar): Integer;
var
  lenthBuf: array of Char;
begin
  SetLength(lenthBuf, 32);
  mciSendString(PChar(Format('open ''%s'' type waveaudio alias wave',
    [fileName])), '', 0, 0);
  mciSendString('status wave length', @lenthbuf[0], Length(lenthBuf), 0);
  mciSendString('close wave', '', 0, 0);
  Result := 0;
  TryStrToInt(lenthbuf[0], Result);


end;

// 调用
procedure TForm1.btn1Click(Sender: TObject);
var
 count: integer;
begin
  count:= TSoundInfo.GetSoundLength('c:\111.vai'));
end;

热点排行