首页 > 解决方案 > 在 Delphi 中改变路径

问题描述

我正在做一个项目,我需要在 Delphi 中播放文件中的视频。我经常在家和学校工作,我的问题是在家里,我的 USB 是驱动器'J',而在学校我的 USB 是驱动器'D'。

我每次都手动去更改它。Delphi 有没有办法自动从任何地方获取视频?

每个扇区都有一个覆盖在其上的图像组件,用于选择扇区。

*注意,我知道我可以在 Delphi 中搜索特定文件的位置,但我有超过 24 个不同的地方需要播放不同的视频,所以搜索可能是我最后的手段,除非我使用一个程序并为每个位置设置常量部门来区分它们。

当前代码如下所示:

procedure TtForm.imgSector1Click(Sender: TObject);
begin
  
    //Variables,this is for initializing them when I create them later.                                                                                                                                             

  //Procedures                                                                                                   
      SectorDeselect; //Procedure to turn all sector borders white                                            

  // Video                                                                                                       
  WindowsMediaPlayer1.Controls.stop;                                                                        
  WindowsMediaPlayer1.URL := 'J:\IT\PAT\phase 2\Videos\Footage1.mp4'; //Where my problem lies             
  WindowsMediaPlayer1.Controls.Play;

  // Sector Info. The memos and Rich edits                                                                                                                                                                       
  redSectorInfo.Lines.Clear;                                                                                                                                                                              
  redSectorInfo.Lines.Add('');                                                                                                                                                             

  // Sector. Highlighting the sector borders surrounding the sector                                                                                                   
  SectorBordr1.Brush.Color := clGreen;                                                                          
  SectorBorder10.Brush.Color := clGreen;                                                                                                                                                                                                               
end;

标签: delphisearchvideo

解决方案


我建议在您的应用程序的 UI 中添加一个 TEdit 控件,以便您为应用程序当前运行的机器上的文件指定基本驱动器/路径。然后,您的代码可以在运行时构造相对于该基本路径的单个文件路径。不要在代码中使用硬编码路径。

然后,您可以将该基本路径保存到您创建的新密钥中的 Windows 注册表中,即HKEY_CURRENT_USER\Software\MyApp. 或者,您可以将路径保存在 Windows 用户配置文件的子文件夹中创建的配置文件(INI、XML、JSON 等)中,例如%APPDATA%\MyApp. 然后,您的代码可以在每次运行应用程序时读取该基本路径。

如果文件存储在 USB 驱动器上,另一种解决方案是在运行时简单地枚举可用驱动器,例如使用GetLogicalDriveStrings(). 对于每个驱动器,将给定文件的相对路径附加到其末尾,然后检查该文件是否存在,例如使用FileExists(). 如果是这样,您现在知道在下次运行应用程序之前要为所有文件使用哪个驱动器(您可以保存运行之间的驱动器路径,如上所述)。如果找不到该文件,请转到下一个驱动器。


推荐阅读