gpt4 book ai didi

interface - 在 Lazarus/freepascal 中编译缓冲文件流单元时出错

转载 作者:行者123 更新时间:2023-12-02 10:46:38 25 4
gpt4 key购买 nike

我从 David Heffernan 那里看到了这个不错的代码,但我无法在 Lazarus 中编译它。

Buffered files (for faster disk access)

我收到 2 条不同的错误消息:

第 72 和 104 行:重复标识符 CacheSize
--> 我刚刚重命名了它并且:CacheSize:=aCacheSize

第 53 和 78 行:接口(interface)方法 QueryInterface 没有匹配的实现 ...

我不知道如何修复它。我试图简单地调用原始函数来创建新的接口(interface)函数,但它不起作用。

请帮忙!

最佳答案

第一个可以通过启用 delphi 模式(界面行后的 {$mode delphi}、命令行上的 -Sd 或 Lazarus 属性中的相关标记来修复。

第二个需要修改。 QueryInterface 中的“const”必须改为 constref

{$ifdef fpc}
function TBaseCachedFileStream.QueryInterface(constref IID: TGUID; out Obj): HResult;
{$else}
function TBaseCachedFileStream.QueryInterface(const IID: TGUID; out Obj): HResult;
{$endif}

无论是实现还是接口(interface)。进行此更改是因为在 Intel const 通常通过引用暗示,而在其他 CPU 上则不会,并且强制所有 CONST 在内部 constref 会导致这些处理器上的代码变慢。

关于interface - 在 Lazarus/freepascal 中编译缓冲文件流单元时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36302982/

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