使用项目相对路径和宏启动Delphi主机应用程序

时间:2019-01-30 15:15:29

标签: delphi debugging macros

背景

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

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

尽管在命令行上将$(SomeEnvVar)扩展为%SomeEnvVar%,但似乎适用于命令行参数。

问题

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

我已经创建了一个issue on the embarcadero网站。请在那里投票以解决问题:)

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

Debugger settings

Results

源代码无关紧要,非常基础,但是为了完整起见而添加了

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

1 个答案:

答案 0 :(得分:1)

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

因此,如果输入 $(BDS) $(APPDATA),您将获得解析的环境变量,例如就我而言:

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

这也是为什么 $(EXENAME)解析为%EXENAME%:它不能被解析为环境变量的值

但是不幸的是,您不能在此处使用任何 $ PATH($ EXENAME)之类的宏。他们似乎只在工具工作|配置工具的对话框。

如果它们也可以在调试器的 Parameters 中使用,那就太好了。你可以在质量门户建议它。