德尔福:如何设置声音/图像位置?

时间:2015-12-27 22:30:14

标签: delphi

如何有效地设置声音/图像位置,例如:

procedure TForm1.Button1Click(Sender: TObject); begin
begin
  PlaySound('C:\Users\username\Desktop\project\sfx\Sounds\ding.wav', 0, SND_ASYNC);
end;

类似于:

procedure TForm1.Button1Click(Sender: TObject); begin
begin
  PlaySound('ding.wav', 0, SND_ASYNC);
end; 

每次我移动包含项目的文件夹声音似乎不再起作用,因为目录更改。

2 个答案:

答案 0 :(得分:4)

您应该设置/陈述相对于项目文件的位置。例如:

var lApplicationExecutablePath: String;
lApplicationExecutablePath := ExtractFilePath(ParamStr(0));
...
var lSoundFile: String;
lSoundFile := TPath.Combine(FolderName, 'sfx\ding.wav'); 

这样,无论应用程序安装在何处,您都可以并排获取所有需要的文件。

答案 1 :(得分:2)

如果提供相对路径,则将其解释为相对于流程工作目录。作为一般规则,在GUI应用程序中,您应始终提供绝对路径,因为进程工作目录可能定义不明确。

您不需要对文件名进行硬编码。如果您知道文件的名称及其所在的文件夹,则只需将文件夹的名称与文件名相结合,即可获得该文件的完整路径。将其传递给PlaySound

uses
  IOUtils;
....
PlaySound(PChar(TPath.Combine(FolderName, FileName)), 0, SND_ASYNC);