Project A.exe raised exception class EAccessViolation 项目引发异常类EAccessViolation,“模块‘ 地址访问违规”的纠错

本文主要是介绍Project A.exe raised exception class EAccessViolation 项目引发异常类EAccessViolation,“模块‘ 地址访问违规”的纠错,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

     一、问题表现

      1、打开二个主副关联数据表,由副表打印带图像表格后,点击主表(打开副表),出现下列错误:

      Project Best.exe raised exception class EAccessViolation with message 'Access violation at address 00402492 in module 'best.exe'.

      即:

      项目Best.exe引发异常类EAccessViolation,消息为“模块' Best.exe '中地址00402492的访问违 规”。

      二、检查代码

      1、出错代码行

  sName:=ClientDataSet1.FieldByName('姓名').AsString;

       2、打印代码

procedure TCertificate_Old_Frm.GridppReport8Initialize(Sender: TObject);
var S,FileName: string;
beginGridppReport8.LoadFromFile( ReportPath+'资格证书_身份证.grf' );with ClientDataSet2 dobeginFileName:=DBEdit1.text;if FileName<>'' thenbeginGridppReport8.ControlByName('Photo1').AsPictureBox.LoadFromFile(FileName);end;FileName:=DBEdit2.text;if FileName<>'' thenbeginGridppReport8.ControlByName('Photo2').AsPictureBox.LoadFromFile(FileName);end;S:=FieldByName('姓名').AsString+'(居民身份证),'+FieldByName('证书编码').AsString+',与原件一致。';GR1:=GridppReport8.AddParameter('说明1',grptString);GridppReport8.ParameterByName('说明1').AsString:=S;end;
end;

      三、分析原因

      1、从原代码看。原则上是无错误的。都能单独执行,无错误;

      2、执行打印代码,再执行读取 sName:=ClientDataSet1.FieldByName('姓名').AsString;

      3、地址的冲突,主要是引用时,地址的紊乱,造成这个结果的一个主要原因,就是VCL参数相同,引起的,如设置局部变量FileName,但是在VCL是,往往多个子参数是FileName,因此,顺着这个思路,在出现错误代码开始,向前推,检查代码。试着变化代码,测试是否出错。

      将打印代码中的局部变量FileName,改成要sFileMane。问题解决。

     四、思考

     在使用参数时,不要和Delphi的VCL使用的参数、变量、属性名称一致,在使用与VCL常用的参数、变量、属性名称相似时,要通过添加前缀或后缀的方法,改变名称,如: sFileName 或 FileName_1。养成良好习惯,可以避免一些,不必要的麻烦和出错。

      这里,关键是参数地址的冲突,在Delphi中,自身使用的一些参数名称上的冲突,时常出现。这些,往往是Delphi编译时的不严谨造成的,但作为编程者,应当规避。

这篇关于Project A.exe raised exception class EAccessViolation 项目引发异常类EAccessViolation,“模块‘ 地址访问违规”的纠错的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/796499

相关文章

Java.lang.InterruptedException被中止异常的原因及解决方案

《Java.lang.InterruptedException被中止异常的原因及解决方案》Java.lang.InterruptedException是线程被中断时抛出的异常,用于协作停止执行,常见于... 目录报错问题报错原因解决方法Java.lang.InterruptedException 是 Jav

Spring Boot 中的默认异常处理机制及执行流程

《SpringBoot中的默认异常处理机制及执行流程》SpringBoot内置BasicErrorController,自动处理异常并生成HTML/JSON响应,支持自定义错误路径、配置及扩展,如... 目录Spring Boot 异常处理机制详解默认错误页面功能自动异常转换机制错误属性配置选项默认错误处理

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

WinForm跨线程访问UI及UI卡死的解决方案

《WinForm跨线程访问UI及UI卡死的解决方案》在WinForm开发过程中,跨线程访问UI控件和界面卡死是常见的技术难题,由于Windows窗体应用程序的UI控件默认只能在主线程(UI线程)上操作... 目录前言正文案例1:直接线程操作(无UI访问)案例2:BeginInvoke访问UI(错误用法)案例

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1