【发布时间】:2016-05-20 16:11:03
【问题描述】:
我想使用 Gabriel Corneanu 的 jpegex,它是 jpeg.TJPEGImage 的类助手。 阅读this 和this 我了解到,除了Delphi Seattle,您不能再像jpegex 那样访问私有字段(下例中的FData)。像 David Heffernan 提议的那样探索 VMT 远远超出了我的范围。有没有更简单的方法来完成这项工作?
type
// helper to access TJPEGData fields
TJPEGDataHelper = class helper for TJPEGData
function Data: TCustomMemoryStream; inline;
procedure SetData(D: TCustomMemoryStream);
procedure SetSize(W,H: integer);
end;
// TJPEGDataHelper
function TJPEGDataHelper.Data: TCustomMemoryStream;
begin
Result := self.FData;
end;
【问题讨论】:
-
你知道答案是否定的。没有魔法。
-
documentation 明确表示从 10.1 Berlin 开始这是不可能的。 你不能再这样做了的哪一部分不清楚?
-
你是说加布里埃尔·科尼努吗?
-
@Ken White:David 的评论“为什么不修改 VMT?”似乎表明这并非完全不可能。
-
FWIW,您始终可以使用 RTTI。不是那么方便,但有可能。我个人认为你也不应该使用 RTTI,并尝试一种完全不同的方法,不需要你访问私有数据。
标签: delphi class-helpers delphi-10.1-berlin