当前位置:主页>销售管理软件> 列表

调用资源文件*.res后,怎样释放内存

仓库管理软件版1楼: 调用资源文件*.res后,我想从内存中释放已没再被使用的那部分资源(音乐自动播放)
比如:
  一个资源文件为:music.res 它是由music.rc生成的, music.rc 里面包含:
  music01 mp3 "当爱在靠近.mp3"
music02 mp3 "爱海滔滔.mp3"
music03 mp3 "听,是谁在唱歌.mp3"

现在已经播放了music01首音乐,进入播放music02首音乐时,我想把music01从内存中释放。
有哪位能手帮帮忙!!!
急着用,请高手快快来啊!!!!!

2楼: 不是吧,高手都跑哪去了? 如excel进销存记账本

3楼: 没人会吗?
大富翁呢

4楼: 你读取到什么地方就释放什么就可以了

5楼: delphilxh 那该怎么释放?
能把相关的代码附上去么?

6楼: 你把你的代码贴上来,我才能知道你到底要怎么释放呀

仓库管理软件版7楼: unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, MPlayer, StdCtrls, CheckLst, ExtCtrls;

type
TForm1 = class(TForm)
Play: TButton;


MediaPlayer1: TMediaPlayer;
CheckListBox1: TCheckListBox;
Next: TButton;
Timer1: TTimer;
procedure Resource;
procedure PlayClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormCreate(Sender: TObject);
procedure NextClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
{$R lsf.res}

procedure TForm1.PlayClick(Sender: TObject);
begin
MediaPlayer1.Close;
DeleteFile(''c:\temp.mp3'');
Resource;
MediaPlayer1.FileName:=''c:\temp.mp3'';
MediaPlayer1.open;
MediaPlayer1.Play;
Timer1.Enabled :=true;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
MediaPlayer1.Close;
DeleteFile(''c:\temp.mp3'');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Checklistbox1.ItemIndex := 0;
end;

procedure TForm1.NextClick(Sender: TObject); //下一首
begin
if Checklistbox1.ItemIndex =Checklistbox1.Count-1 then
Checklistbox1.ItemIndex :=0
else
Checklistbox1.ItemIndex :=Checklistbox1.ItemIndex+1;
Form1.PlayClick(sender);
end;

//主要在下面这段 如:当前Checklistbox1.Items.Strings[Checklistbox1.ItemIndex]:=music01
现在 Checklistbox1.ItemIndex:=Checklistbox1.ItemIndex+1 ---->music02
要删除内存中music01所占的内存资源,该如何?

procedure TForm1.Resource;  //读取资源、释放已经没用的资源(未实现)
var
R: TResourceStream;
begin
r:=TResourceStream.Create(HInstance, Checklistbox1.Items.Strings[Checklistbox1.ItemIndex] , ''mp3'');
r.SaveToFile(''c:\temp.mp3'');
r.Free;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if MediaPlayer1.Position >=MediaPlayer1.Length then

begin
if Checklistbox1.ItemIndex =Checklistbox1.Count-1 then
Checklistbox1.ItemIndex :=0
else
Checklistbox1.ItemIndex :=Checklistbox1.ItemIndex+1;
Form1.PlayClick(sender);
end;
end;

end.