gpt4 book ai didi

delphi - 利用编译器错误是一种好习惯吗?

转载 作者:行者123 更新时间:2023-12-03 18:00:53 28 4
gpt4 key购买 nike

最近我发现了一些(对我来说)看起来很奇怪的 Delphi 代码,我将它隔离到一个单独的小项目中。这是我的发现。 Unit1 编译没有错误。 Unit2(我提供用于比较)没有。区别在于类的使用方式

unit Unit1;

interface

uses Classes; // difference here

type TThread = class(Classes.TThread)
public
property Terminated;
end;

implementation

end.

单元 2 无法编译。产生各种错误。

unit Unit2;

interface

uses System.Classes; // difference here

type TThread = class(Classes.TThread)
public
property Terminated;
end;

implementation

end.

[dcc32 Error] Unit1.pas(7): E2003 Undeclared identifier: 'Classes'
[dcc32 Error] Unit1.pas(7): E2029 ',' or ':' expected but ')' found
[dcc32 Error] Unit1.pas(9): E2147 Property 'Terminated' does not exist in base class

所以我担心的是这个项目正在利用编译器错误来实现其目标。编译器错误可能会在以后的版本中得到修复,然后代码将不再有效。

最佳答案

没有使 Unit1 编译的编译器错误。它编译是因为在项目设置中,Unit Scope Names 条目至少包含项目 System,用于解析对全名 中的 Classes 的引用系统类。由于使用包含 Classes,因此对 Classes.TThread 的引用也成功。

在第 2 单元中,使用包含 System.Classes。因此,无法再解析引用 Classes.TThread。将其更改为 System.Classes.TThread 即可。

关于delphi - 利用编译器错误是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48862649/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com