2Pascal-新时代的Pascal

 找回密码
 立即注册
搜索
热搜: fastreport
查看: 933|回复: 2
打印 上一主题 下一主题

一段D7可以编译通过的代码在delphi 10.2.3上编译不通过,求...

[复制链接]

5

主题

15

帖子

74

积分

注册会员

Rank: 2

积分
74
跳转到指定楼层
楼主
发表于 2018-10-23 06:56:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
京东购书支持本站
部分代码:
procedure TFileWatchThread.Execute;
var
  numBytes: DWORD;
  CompletionKey: DWORD;

  begin
  while not Terminated do
  begin
    GetQueuedCompletionStatus( FPCompletionPort^, numBytes, CompletionKey, FPOverlapped, INFINITE);

    if CompletionKey <> 0 then
    begin
      Synchronize(HandleEvent);
      FBytesWritten := 0;
      ZeroMemory(@FNotificationBuffer, SizeOf(FNotificationBuffer));
      ReadDirectoryChanges(FPDirectoryHandle^, @FNotificationBuffer,
        SizeOf(FNotificationBuffer), WatchSubTree, FNotifyFilter,
        @FBytesWritten, @FOverlapped, nil);
    end
    else
      Terminate;
  end;
end;

完整代码见附件,代码部分有点儿长,就没有全部贴出来。
~~~~~~~~~~
出错提示: [dcc32 Error] Unit1.pas(185): E2033 Types of actual and formal var parameters must be identical
用D7可直接编译没有问题,换成delphi 10.2.3编译就不行了。求大神带路。~
出错点就在 GetQueuedCompletionStatus( FPCompletionPort^, numBytes, CompletionKey, FPOverlapped, INFINITE); 这一句。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

5

主题

15

帖子

74

积分

注册会员

Rank: 2

积分
74
沙发
 楼主| 发表于 2018-10-23 07:38:03 | 只看该作者
京东数码购物支持本站
找到原因了,delphi 10.2.3 修改了这个函数定义:
function GetQueuedCompletionStatus(CompletionPort: THandle;
  var lpNumberOfBytesTransferred: DWORD; var lpCompletionKey: ULONG_PTR;
  var lpOverlapped: POverlapped; dwMilliseconds: DWORD): BOOL; stdcall;

所以出错的位置这样子修改:
GetQueuedCompletionStatus( FPCompletionPort^, numBytes, ULONG_PTR(CompletionKey), FPOverlapped, INFINITE);
就可以编译通过了。。
回复 支持 反对

使用道具 举报

0

主题

2

帖子

3

积分

新手上路

Rank: 1

积分
3
板凳
发表于 2019-12-2 04:51:41 | 只看该作者
京东数码购物支持本站
谢谢提示,记下了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|新时代Pascal论坛

GMT+8, 2024-4-29 02:41 , Processed in 0.063938 second(s), 24 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表