【问题标题】:'GetCalcFields' not found in base class Error在基类错误中找不到“GetCalcFields”
【发布时间】:2022-01-09 17:02:20
【问题描述】:
type
TCDSWithRecalc = class(TClientDataset)
public
procedure GetCalcFields(Buffer: PChar); override;
end;
procedure TCDSWithRecalc.GetCalcFields(Buffer :PChar);
begin
inherited GetCalcFields(Buffer);
end;
E2137 Method 'GetCalcFields' not found in base class.
我不明白这个错误是什么。你能帮忙吗?
【问题讨论】:
标签:
class
delphi
tclientdataset
【解决方案1】:
您没有说您使用的是哪个 Delphi 版本,但在现代 (Unicode) 版本中,Buffer 参数的类型声明已从原始(D7 及之前)PChar 更改为 TRecBuf。因此,您需要更改 TCDSWithRecalc 的声明
到
type
TCDSWithRecalc = class(TCustomClientDataset)
public
procedure GetCalcFields(Buffer: TRecBuf); override;
end;
[...]
procedure TCDSWithRecalc.GetCalcFields(Buffer : TRecBuf);
begin
inherited GetCalcFields(Buffer);
end;
在 Delphi 10.4.2 中,编译器报告您的声明版本的附加错误
[dcc32 Error] cds1u.pas(41): E2250 There is no overloaded version of 'GetCalcFields' that can be called with these arguments
这是真的。