gpt4 book ai didi

delphi - 记录类型的前向声明

转载 作者:行者123 更新时间:2023-12-03 15:07:36 26 4
gpt4 key购买 nike

有没有如标题所示的内容?我正在尝试在转换 an API structure 的过程中执行此操作,并遇到了一些我以前没有遇到过的事情:

PFNReaderTranslatedDispatch = function(var msg: TMsg): BOOL; stdcall;
PFNReaderScroll = function(var prmi: TReaderModeInfo; dx, dy: integer): BOOL; stdcall;
TReaderModeInfo = record
cbSize: DWord;
hWnd: THandle;
fFlags: DWord;
prc: PRect;
pfnScroll: PFNReaderScroll;
fFlags2: PFNReaderTranslatedDispatch;
lParam: DWord;
end;
PReaderModeInfo = ^TReaderModeInfo;

了解 Delphi 的人都会看到这个明显的问题。您将如何解决这个问题?

最佳答案

我认为这是最简单的解决方案:

PFNReaderTranslatedDispatch = function(var msg: TMsg): BOOL; stdcall;
PReaderModeInfo = ^TReaderModeInfo;
PFNReaderScroll = function(prmi: PReaderModeInfo; dx, dy: integer): BOOL; stdcall;
TReaderModeInfo = record
cbSize: DWord;
hWnd: THandle;
fFlags: DWord;
prc: PRect;
pfnScroll: PFNReaderScroll;
fFlags2: PFNReaderTranslatedDispatch;
lParam: DWord;
end;

事实上,您可以通过(按值)指针参数清楚地重新获取 var 参数。在 TReaderModeInfo 之前声明 PReaderModeInfo 没有问题。

关于delphi - 记录类型的前向声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16344358/

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