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项目swing转javafx语法规则以及示例代码

《JAVA项目swing转javafx语法规则以及示例代码》:本文主要介绍JAVA项目swing转javafx语法规则以及示例代码的相关资料,文中详细讲解了主类继承、窗口创建、布局管理、控件替换、... 目录最常用的“一行换一行”速查表(直接全局替换)实际转换示例(JFramejs → JavaFX)迁移建

Go异常处理、泛型和文件操作实例代码

《Go异常处理、泛型和文件操作实例代码》Go语言的异常处理机制与传统的面向对象语言(如Java、C#)所使用的try-catch结构有所不同,它采用了自己独特的设计理念和方法,:本文主要介绍Go异... 目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

解决idea启动项目报错java: OutOfMemoryError: insufficient memory

《解决idea启动项目报错java:OutOfMemoryError:insufficientmemory》:本文主要介绍解决idea启动项目报错java:OutOfMemoryError... 目录原因:解决:总结 原因:在Java中遇到OutOfMemoryError: insufficient me

maven异常Invalid bound statement(not found)的问题解决

《maven异常Invalidboundstatement(notfound)的问题解决》本文详细介绍了Maven项目中常见的Invalidboundstatement异常及其解决方案,文中通过... 目录Maven异常:Invalid bound statement (not found) 详解问题描述可

python项目环境切换的几种实现方式

《python项目环境切换的几种实现方式》本文主要介绍了python项目环境切换的几种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 如何在不同python项目中,安装不同的依赖2. 如何切换到不同项目的工作空间3.创建项目

SpringBoot项目整合Netty启动失败的常见错误总结

《SpringBoot项目整合Netty启动失败的常见错误总结》本文总结了SpringBoot集成Netty时常见的8类问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、端口冲突问题1. Tomcat与Netty端口冲突二、主线程被阻塞问题1. Netty启动阻

python项目打包成docker容器镜像的两种方法实现

《python项目打包成docker容器镜像的两种方法实现》本文介绍两种将Python项目打包为Docker镜像的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录简单版:(一次成功,后续下载对应的软件依赖)第一步:肯定是构建dockerfile,如下:第二步

Python + Streamlit项目部署方案超详细教程(非Docker版)

《Python+Streamlit项目部署方案超详细教程(非Docker版)》Streamlit是一款强大的Python框架,专为机器学习及数据可视化打造,:本文主要介绍Python+St... 目录一、针对 Alibaba Cloud linux/Centos 系统的完整部署方案1. 服务器基础配置(阿里

在SpringBoot+MyBatis项目中实现MySQL读写分离的实战指南

《在SpringBoot+MyBatis项目中实现MySQL读写分离的实战指南》在SpringBoot和MyBatis项目中实现MySQL读写分离,主要有两种思路:一种是在应用层通过代码和配置手动控制... 目录如何选择实现方案核心实现:应用层手动分离实施中的关键问题与解决方案总结在Spring Boot和