【问题标题】:What is the difference between "Byte" and "byte"?“字节”和“字节”有什么区别?
【发布时间】:2018-09-28 02:41:52
【问题描述】:

我可以使用以下方法定义一个字节:

a:  byte; 

也可以定义如下:

a:  Byte; 

编译器会通过以上两种情况,但是byteByte有什么区别?

【问题讨论】:

标签: delphi pascal lazarus


【解决方案1】:

绝对没有区别。所有版本的 Pascal(包括 Delphi 和 Free Pascal)都不区分大小写(极少数例外 - 见下文),因此您可以使用以下任何版本 - 它们都是完全相同的。

a: byte;
a: Byte;
a: bYTe;
A: bytE;
A: BYTe;

Delphi 区分大小写的地方很少,H2365 Override method %s.%s should match case of ancestor %s.%s 的文档中描述了这些特定的例外情况:

以下是 Delphi 区分大小写的一些情况:

单元引用和使用子句

在单元声明和使用子句中,单元名称必须与文件名匹配以防万一。在其他上下文中(例如限定标识符),单位名称不区分大小写。为避免单元引用出现问题,请明确参考单元源文件:

uses MyUnit in "myunit.pas";

注册组件

当你编写自己的组件并想注册它们时,你声明的注册函数必须这样写:

procedure Register;  <<-- Leading capital required.  

Register 过程的名称对于设计时包是区分大小写的。如果您声明了一个注册过程(小写),并且即使没有发出提示 H2365,您也不会得到预期的结果;您的组件未注册。有关详细信息,请参阅使用 RegisterComponents 过程。

导入外部函数

导入外部函数时,必须保留 DLL 中使用的确切大小写。

【讨论】:

  • Free Pascal Wiki about StringChar 中,它使用stringchar 来定义变量,有时使用StringChar 来定义变量,这让我很困惑,有没有定义变量的一些规则?
  • @lok​​i 这不可能是错误,可能是警告或提示?我也看到了这条消息,通常是对 C++Builder 的某种引用。与 Delphi/Pascal 相比,C(++) 非常区分大小写(我不喜欢它的一件事。)
  • H2365 在覆盖方法时指出了大小写的差异。见stackoverflow.com/a/7755124/587106
  • @dima: [dcc32 Hint] Main.pas(924): H2365 Override method TMainForm.destroy 应该匹配祖先 TCustomForm.Destroy 的大小写
  • @lok​​i:你错了。 Delphi 只有几个地方区分大小写,其中一个是procedure Register 用于将组件注册调用到 VCL 中,并且它只区分大小写,以便组件正确安装到 C++Builder 中。 destructor Destroydestructor destroy 在 Delphi 中是完全一样的。您在destructor destroy; override; 中看到的是提示,而不是编译器错误。提示是建议。谷歌定义提示。我怀疑该提示是为 C++Builder 兼容性而生成的(再次),但这不是错误。
猜你喜欢
  • 2011-12-06
  • 2021-02-14
  • 1970-01-01
  • 1970-01-01
  • 2015-12-14
  • 2019-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多