delphi - 在 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;
解决方案
我建议在您的应用程序的 UI 中添加一个 TEdit 控件,以便您为应用程序当前运行的机器上的文件指定基本驱动器/路径。然后,您的代码可以在运行时构造相对于该基本路径的单个文件路径。不要在代码中使用硬编码路径。
然后,您可以将该基本路径保存到您创建的新密钥中的 Windows 注册表中,即HKEY_CURRENT_USER\Software\MyApp
. 或者,您可以将路径保存在 Windows 用户配置文件的子文件夹中创建的配置文件(INI、XML、JSON 等)中,例如%APPDATA%\MyApp
. 然后,您的代码可以在每次运行应用程序时读取该基本路径。
如果文件存储在 USB 驱动器上,另一种解决方案是在运行时简单地枚举可用驱动器,例如使用GetLogicalDriveStrings()
. 对于每个驱动器,将给定文件的相对路径附加到其末尾,然后检查该文件是否存在,例如使用FileExists()
. 如果是这样,您现在知道在下次运行应用程序之前要为所有文件使用哪个驱动器(您可以保存运行之间的驱动器路径,如上所述)。如果找不到该文件,请转到下一个驱动器。
推荐阅读
- python - Python:使用openCV保存(cv2.imwrite)和读取(cv2.imread)过程中的隐写问题
- html - 为什么我的表单标签没有在左边对齐,不管我在我的 css 文件中输入了什么?
- c# - 如何使用“索引”以外的东西作为 ASP.NET Core MVC 中的默认控制器视图?
- postgresql - pgAdmin 不在 Process Watcher 上显示消息错误
- python - for 循环读取图像并返回方括号中的整数列表。但是,它的格式不正确
- python - 用于词云的 NLP 文字处理和数据框 unpivot
- python - 可以直接用mobsf分析dex文件吗?
- python-3.x - 将某人静音 3 分钟 Discord.py
- python - 有大量可用 RAM 时内核被杀死
- typescript - 打字稿:覆盖泛型类的静态方法