首页 > 解决方案 > 使用项目相对路径和宏启动 Delphi 主机应用程序

问题描述

背景

我使用运行时(插件)BPL 和主机应用程序。无论出于何种原因,我有时需要在不切换到主机应用程序的情况下调试我的 bpl,因此我可以在调试选项中设置“主机应用程序”。

我的项目有多个版本(例如维护和主干),我想使用相对路径,甚至最好使用 de 输出路径。所以我将我的主机应用程序(用于运行/调试 bpl)设置为$PATH($EXENAME)\HostApp.exe. 但似乎 RS10.3 在尝试启动主机应用程序时无法解析这些宏。(AFAIK 旧版本也不这样做)。

它似乎同样适用于命令行参数,尽管在命令行上$(SomeEnvVar)扩展了类似的东西%SomeEnvVar%

问题

在 RS10.3 IDE 中,如何在不使用二进制文件的绝对路径的情况下启动我的(主机)应用程序?

在 embarcadero网站上创建了一个问题。请在那里投票以改变现状:)

我创建了一个测试应用程序,但只测试 cmdline 参数。以下是设置和结果:

调试器设置

结果

源代码很少相关且非常基本,但为了完整性而添加。

procedure TfrmMain.DoShow;
VAR i:integer;
begin
  inherited;
  Memo1.Clear;
  for i:=0 to ParamCount-1 do
    Memo1.Lines.Add(ParamStr(i));
end;

标签: delphidebuggingmacros

解决方案


参数行无法识别任何宏。您可以使用环境变量(您可以在同一对话框的环境块中找到)。

因此,如果您输入$(BDS)$(APPDATA)您将获得解析的环境变量,例如在我的情况下:

c:\embarcadero\studio\20.0
C:\Users\Rudy\AppData\Roaming

这也是$(EXENAME)解析为%EXENAME%的原因:它无法解析为环境变量的值。

但不幸的是,你不能在这里使用像$PATH($EXENAME)这样的宏。它们似乎只适用于工具 | 配置工具对话框。

如果它们也可以在调试器的参数中使用,那就太好了。您可以在 Quality Portal 中提出建议。


推荐阅读