标题中有这样的东西吗?我试图在转换API结构的过程中做到这一点,并遇到以前没有遇到的事情:
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;
Run Code Online (Sandbox Code Playgroud)
知道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;
Run Code Online (Sandbox Code Playgroud)
实际上,您可以var通过(按值)指针参数清楚地获取参数.并且PReaderModeInfo之前没有问题TReaderModeInfo.