【问题标题】:"Classes" unit implementation“类”单元实现
【发布时间】:2013-04-06 20:40:02
【问题描述】:

也许我是个盲人,但我在类的 Free Pascal 源文件实现中找不到像 System.大多数情况下,但不仅是,我对TObjectTPersistentTControl 代码感兴趣。我在 SourceForge 上的 Lazarus 和 FP 站点中都进行了搜索。我的问题是文件列表很大。由于robots.txt,Google 拒绝搜索。

有一个 lclclasses.pas 单元,但它不是我要找的 - 在 uses 块中它指的是类,但没有文件(我的意思是我找不到它)喜欢“classes.pas”。

Here 我找到了TControl 的实现,但它在层次结构中太远了。

this page 上有一条信息,TPersistent 在“classesh.inc”中定义,我下载了源代码,它确实在 rtl\objpas\classes\classesh.inc 中,但是,似乎这个文件只是interface 单元的一部分。

我也将这个问题标记为“delphi”,因为实际上如果有一些 Delphi 的开源代码,我也可以接受。如果这个基类TObjectTPersistent 的实现是某种内置功能(我认为System 单元是),我还可以看看C(或任何其他语言)源。

谁能帮我找到类单元的实现和那里定义的对象?

【问题讨论】:

  • 它们可以在 .inc 文件中找到
  • 我明白了。这些文件是按类别而不是单位划分的。谢谢@DavidHeffernan
  • 我建议你们俩:@DavidHeffernan 将该评论转换为答案,Voitcus 接受它。对于那些从 Lazarus 开始的人来说不是那么明显。
  • 是的@DavidHeffernan,如果您将其作为答案发布,我会接受。

标签: delphi freepascal


【解决方案1】:

因为FPC支持的平台这么多,RTL代码的结构有些复杂。

但是 RTL 代码中与平台无关的部分,也就是您感兴趣的部分,可以在 source\rtl\objpas 目录下找到。

  • Classes 的代码在 source\rtl\objpas\classes 的包含文件中。相关文件为classesh.incclasses.inc。前者包含接口部分的代码,后者包含实现部分的代码。
  • System 单元高度特定于平台。在source\rtl 下查找您的平台。
  • 对于SysUtils,请查看source\rtl\objpas\sysutils

【讨论】:

  • 请注意,我什至不是 FPC 专家。我写这个答案主要是因为我被要求这样做。如果我有任何错误,我将不胜感激。
  • 您不必成为专家也能回答这个特定问题 :) 再次感谢。
猜你喜欢
  • 2011-10-17
  • 2017-04-30
  • 2012-03-09
  • 2015-12-25
  • 1970-01-01
  • 1970-01-01
  • 2016-01-26
  • 1970-01-01
相关资源
最近更新 更多