【问题标题】:Running rsvars.bat with TRichView components使用 TRichView 组件运行 rsvars.bat
【发布时间】:2017-08-09 12:24:27
【问题描述】:

我正在尝试使用 Delphi 提供的 rsvars.bat 文件通过命令行构建我的 Delphi 文件(我使用的是 Delphi XE2)。大多数事情似乎都很好,但TRichView 出现了一些错误。 TRichView 提供了一个名为 RVStyle.pas 的文件,它定义了变量 TRVTag,如下所示:

  {$IFNDEF RVOLDTAGS}
  TRVTag = type String;
  {$ELSE}
  TRVTag = Integer;
  {$ENDIF}

这似乎是为了向后兼容,TRVTags 基于此线程已从 Integer 更改为 String。 http://www.trichview.com/forums/viewtopic.php?f=2&t=6377

在我们的一个自定义控件中,我们将 Integer ItemIndex 传递给请求 TRVTag 的 GetItemTag。

   Result := GetItemTag(ItemIndex);

这在通过 Delphi 构建文件时工作正常,但在通过命令行构建文件时我收到“无法比较的类型”错误。具体错误是:

Incompatible types: 'Integer' and 'TRVTag'

这似乎发生在我们的自定义控件的一些地方,有时它说不兼容的类型“整数”和“TRVTag”,有时它说不兼容的类型“字符串”和“整数”。

在我看来,当通过命令行构建时,构建不知何故没有采用 RVStyle.pas 或

中定义的 TRVTag 的定义

我的构建批处理文件如下所示:

cd c:\frontend\v10
call rsvars.bat
MSBuild del12\del12.dproj
PAUSE

我可以在批处理文件中添加什么东西,这样我就能够像通过 XE2 本身构建这些文件那样构建这些文件而不会出现不兼容的类型错误?

【问题讨论】:

  • 听起来RVOLDTAGS 有时会被定义,而不是其他人。您的项目是否使用构建配置?您没有在命令行上指定任何配置。也许在 IDE 中构建项目时,您正在编译一种配置,但在命令行中构建时,您正在编译另一种配置。
  • 这似乎就是我想要的。一旦我将标志“/t:Build /p:Configuration=Debug”添加到 MSBUILD 命令的末尾,一切正常。
  • 这是错误的解决方案。您需要做的是在正确的位置定义条件。它仅在调试配置中定义。您需要在根配置中定义它。

标签: windows delphi batch-file delphi-xe2


【解决方案1】:

您的代码假定已定义 RVOLDTAGS。您已在调试配置中定义它,但未在其他配置中定义。配置使用继承。这允许属性被派生配置继承,或者只为某些配置定义属性,或者为某些配置覆盖属性。

在您的情况下,您的代码要求为所有配置定义RVOLDTAGS。因此,您应该在继承所有其他配置的根配置中定义它。从调试配置中删除定义并在根配置中重新引入它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 2013-04-15
    • 2019-11-09
    • 1970-01-01
    • 1970-01-01
    • 2019-06-19
    相关资源
    最近更新 更多