delphi - 使用项目相对路径和宏启动 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;
解决方案
参数行无法识别任何宏。您可以使用环境变量(您可以在同一对话框的环境块中找到)。
因此,如果您输入$(BDS)或$(APPDATA)您将获得解析的环境变量,例如在我的情况下:
c:\embarcadero\studio\20.0
C:\Users\Rudy\AppData\Roaming
这也是$(EXENAME)解析为%EXENAME%的原因:它无法解析为环境变量的值。
但不幸的是,你不能在这里使用像$PATH($EXENAME)这样的宏。它们似乎只适用于工具 | 配置工具对话框。
如果它们也可以在调试器的参数中使用,那就太好了。您可以在 Quality Portal 中提出建议。
推荐阅读
- oracle - Oracle - DBMS_PARALLEL_EXECUTE 失败,没有错误
- r - ggplot2 填充/分组导致不需要的线条在 geom_ribbon 中连接
- python - 我将如何做到这一点,以便我可以输入我想在上下大写中使用的内容?示例 - sin/SIN、tan/TAN
- javascript - 如何使用 Vue 显示锚定在光标上的工具提示?
- scala - 使用所需的键和值更新 Map 类型的 Spark 数据框的列
- hibernate - 原生删除子实体后的二级缓存父实体,删除集为空
- java - 当一个子类调用另一个子类时,哪种面向对象设计更好?
- r - R根据包括日期差异在内的多个标准的逻辑索引汇总数据
- rake - 如何设置 rake 来编译 mruby gem?
- arrays - 有没有办法将工作表中的数据值读取到索引为 1 而不是 0 的数组中?