You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi勾选标准手势时报rtl270.bpl访问违规错误问题咨询

问题概述

Delphi开发过程中无法正常选择标准手势,执行相关操作会触发固定报错,所有标准手势功能均无法使用,报错信息如下:

Error reading TGestureStreamData.Control: Access violation at address 500C3A53 in module 'rtl270.bpl'. Read of address 00000008

复现步骤

  • 新建项目
  • 添加退出按钮
  • 添加TabControl控件并创建若干TabItem
  • 添加ActionList控件,创建关联TabControl的nexttab、previewstab动作
  • 添加GestureManager控件
  • 为TabControl指定上述GestureManager实例
  • 尝试勾选左、右方向的标准手势时弹出前述报错
故障原因

该报错是Delphi 10.4 Sydney(对应rtl270.bpl版本)的已知设计期缺陷,本质是空指针访问错误:读取地址00000008是对空指针做0x8偏移量属性读取的典型特征。
触发逻辑为:当TabControl先绑定了ActionList中的分页切换动作,再绑定GestureManager并勾选手势时,设计期序列化模块读取TGestureStreamData.Control属性的流程先于手势关联控件的引用初始化流程执行,拿到空对象引用后直接访问属性触发访问冲突。

修复方案
  • 顺序调整规避:调整控件配置顺序绕开bug触发逻辑。配置顺序调整为:新建项目→添加退出按钮、TabControl及对应TabItem→添加GestureManager→为TabControl绑定GestureManager,提前勾选需要的左、右方向标准手势,确认无报错后→再添加ActionList,创建关联TabControl的nexttab、previewstab动作,最后完成手势和动作的映射绑定即可。
  • 补丁修复:安装Delphi 10.4 Sydney的官方后续补丁,补丁已补全手势流数据读取逻辑的空指针校验,从根源解决该设计期报错。
  • 缓存清理:如果调整顺序后仍触发报错,先删除当前窗体上的GestureManager控件,保存全部项目文件后重启IDE清空设计期缓存,再按照调整后的顺序重新配置控件即可。

内容的提问来源于stack exchange,提问作者Iakovos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.12 16:15:51