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;
}
}
type
SoundInfo = class
public
function GetSoundLength(fileName:string): Integer;
end;
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;