在delphi中用函数播放MP3文件问题!!

beginfilename:='temp.mp3';res:=Tresourcestream.create(0,'music1',pchar('file'));res.s... begin
filename:='temp.mp3';
res:=Tresourcestream.create(0,'music1',pchar ('file'));
res.savetofile(filename);
MCISendstring(pchar('open'+filename+'type mpegvideo alias ww'),nil,0,0);
MCISendstring('play ww ',nil,0,0);
res.free;
运行程序在播放MP3文件'music1'时,在程序文件夹中会崩出一个带有realplayer音乐文件图标的“temp”文件,退出程序时该“temp”文件即消失。单独打开这个exe文件,也是这样。后把这个exe文件打包成setup,打开运行时在我的windowsxp桌面同样如此。
请问高手是怎么回事,怎样来消除??非内行无扰!!!
原因当然很清楚了,关键是想在实现相同功能的前提下怎样解决?TBASSPlayer v1.3 (文件流播放)应是第三方控件吧,面对一大堆.PAS和其它东西不知怎样安装,况且又是编辑器:Delphi5的。总之对于我这个业余菜鸟而言困难重重啊。恳请高手能操刀一次解析解析,给个满意答复!再加100,不成敬意......
---------------------------------------------------------
如果能用函数播放MP3资源文件而不用那个TEMP,那就更好了。有没有更好的办法......
展开
 我来答
yueyun889
2008-03-07 · TA获得超过725个赞
知道小有建树答主
回答量:539
采纳率:0%
帮助的人:767万
展开全部
temp文件应该是你调用资源文件时产生的临时文件.
单用MCISendstring函数播放影音文件并不会出现.

我记得你前面有关这个播放问题有提过问题:
http://zhidao.baidu.com/question/44595991.html?si=1
在其中你标志:
res.savetofile(filename);//建立临时文件
那个文件就是这样产生的.

如果你非要产生临时文件,但是又不想让他它显示出来,那只要将文件设置为隐藏了.
而且你的代码不是很完善,如果多次点击按钮或者在目录下MP3文件已经存在,则会报错.我修改了下你的代码,你可以参考参考:
procedure TForm1.Button4Click(Sender: TObject);
var res:TResourcestream;
filename:string;
begin
filename:='temp.mp3';
res:=TResourcestream.Create(0,'MUSIC1',Pchar('FILE1'));
if FileExists('temp.mp3') = false then
res.SaveToFile(filename);
setfileattributes(pchar(ExtractFilePath(Application.ExeName) + 'temp.mp3'),FILE_ATTRIBUTE_hidden);
//上面的为设置文件属性为隐藏.程式关闭时文件也能自动删除.
MCIsendstring(Pchar('open '+filename+' type mpegvideo alias ww'),nil,0,0);
MCIsendstring('play ww',nil,0,0);
res.Free ;
deletefile(filename);
end;

===============================
不知道你说的'不要temp就好了'是什么意思.

如果你不savetofile,就不会产生temp文件了.
如果你不需要调用资源文件,也不会产生其他文件,并且3句话就搞定了.
如果你需要调用资源文件,又非要产生temp文件,并不想让它显示出来,把它的属性设置成隐藏就好了.

你可以发消息给我,或者进我的空间,针对你这个问题,我在博客里转载了一遍文章.
夜绿看遍野Y
2008-03-04 · TA获得超过136个赞
知道小有建树答主
回答量:179
采纳率:0%
帮助的人:96.1万
展开全部
不知道对你有没用。
procedure TForm1.Button1Click(Sender: TObject);
begin
MediaPlayer1.Close;
MediaPlayer1.FileName := 'c:\music\test.mp3';
MediaPlayer1.Open;
MediaPlayer1.Play;
end;

MediaPlayer1.FileName := ExtractFileDir(Application.ExeName) + '\test.mp3';
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友25af051b8
2008-03-04 · 超过24用户采纳过TA的回答
知道答主
回答量:92
采纳率:0%
帮助的人:64万
展开全部
那个和前面一差不多.只不过你要安装一下插件.要不然会出错地. realone和MediaPlayer都很好用.也有很多例子,很好找的.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dos62
2008-03-04 · TA获得超过1660个赞
知道大有可为答主
回答量:1410
采纳率:0%
帮助的人:2159万
展开全部
搜索"DELPHI播放流",应该有解决的例子.比如这里:
http://www.21tx.com/dev/2005/05/06/12710.html
似乎是从盒子上"盗"来的.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式