Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使Delphi XE项目能够在早期版本中运行-使用命名&;项目选择_Delphi - Fatal编程技术网

使Delphi XE项目能够在早期版本中运行-使用命名&;项目选择

使Delphi XE项目能够在早期版本中运行-使用命名&;项目选择,delphi,Delphi,有没有人能提醒我,允许早期版本的Delphi(例如2010)接受使用类似domain.sub-domain命名系统的更高版本编写的单元的诀窍是什么 // Delphi XE2 & later version (comment out for 2010 & earlier): uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,system.Classes,

有没有人能提醒我,允许早期版本的Delphi(例如2010)接受使用类似domain.sub-domain命名系统的更高版本编写的单元的诀窍是什么

    // Delphi XE2 & later version (comment out for 2010 & earlier):
      uses
        Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,system.Classes, Vcl.Graphics,
        Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons,
        Vcl.ExtCtrls, Vcl.ComCtrls, System.Math;
与D2010及更早的公约相反

    // Delphi 2010 & earlier version (comment out for XE2 & later):
      uses
        Windows, Messages, SysUtils, Variants, Classes, Graphics,
        Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, Math;

我知道你可以在project>options中做一些事情,但是找不到&也找不到关于这个主题的早期论坛帖子。

你不能这样做。在单元作用域名称之前的Delphi版本无法理解它们。为跨越单元范围名称更改的Delphi版本编写单个源代码的标准机制是使用条件编译


可用的是另一个方向的兼容性工具。名称空间别名功能允许较新版本理解省略单元作用域名称的uses子句。

您不能这样做。在单元作用域名称之前的Delphi版本无法理解它们。为跨越单元范围名称更改的Delphi版本编写单个源代码的标准机制是使用条件编译


可用的是另一个方向的兼容性工具。名称空间别名功能允许较新版本理解省略单元作用域名称的uses子句。

要使代码兼容,应避免使用
丑陋的.unit.Naming
,并为较新的编译器配置
-NS
选项。@FreeConsulting在一定程度上有效。如果您的代码需要来自具有冲突单元名称的名称空间的单元,那么您就有麻烦了。例如,您编写了一个使用两个VCL单元的FMX项目。我知道这样做很不寻常,但并非闻所未闻。强制使用
-NS
将责任推给了库的消费者,使他们更难简单地吸收代码。因此,我认为大多数第三方供应商使用条件编译。有用的是本地名称空间别名,它可以应用于代码中,只影响它们出现的单位。@DavidHeffernan,混合使用FMX和VCL已经意味着麻烦,除此之外,任何事情都不简单。要使代码兼容,应避免在较新的编译器中使用
丑陋的.Unit.Naming
和配置
-NS
选项。@免费咨询在一定程度上是可行的。如果您的代码需要来自具有冲突单元名称的名称空间的单元,那么您就有麻烦了。例如,您编写了一个使用两个VCL单元的FMX项目。我知道这样做很不寻常,但并非闻所未闻。强制使用
-NS
将责任推给了库的消费者,使他们更难简单地吸收代码。因此,我认为大多数第三方供应商使用条件编译。有用的是本地名称空间别名,它可以应用于代码中,只影响它们出现的单位。@DavidHeffernan,混合使用FMX和VCL已经意味着麻烦,没有什么事情比这更简单了。David,一如既往地快速详细地回答!假设您不需要任何编码工作吗?@DavidHeffernan您能给出一个在这种情况下使用条件编译的示例吗?David在评论中给出的一行代码示例似乎不起作用。这是JCL{$IFDEF HAS_UNITSCOPE}System.Types、Winapi.Windows、System.SysUtils、Vcl.Graphics、{$ELSE~ HAS_UNITSCOPE}Types、Windows、SysUtils、Graphics、{$ENDIF~ HAS_UNITSCOPE}@DavidHeffernan I get[dcc64 Error]dx_RTTI.pas(10):需要E2029标识符,但找到文件结尾。(Win64/Delphi 10和Win32/XE7)没有太多错误..,甚至尝试使用已知的编译器定义(排除自定义定义):{$IFDEF DEBUG}Vcl.{$ENDIF}StdCtrlsDavid,一如既往地快速详细地回答!假设您不需要任何编码工作吗?@DavidHeffernan您能给出一个在这种情况下使用条件编译的示例吗?David在评论中给出的一行代码示例似乎不起作用。这是JCL{$IFDEF HAS_UNITSCOPE}System.Types、Winapi.Windows、System.SysUtils、Vcl.Graphics、{$ELSE~ HAS_UNITSCOPE}Types、Windows、SysUtils、Graphics、{$ENDIF~ HAS_UNITSCOPE}@DavidHeffernan I get[dcc64 Error]dx_RTTI.pas(10):需要E2029标识符,但找到文件结尾。(Win64/Delphi 10和Win32/XE7)没有太多错误..,甚至尝试使用已知的编译器定义(以排除自定义定义):{$IFDEF DEBUG}Vcl.{$ENDIF}StdCtrls