现在的位置: 首页 > 综合 > 正文

打开、保存对话框execute时,莫名其妙的报内存读取错误,哪位大侠给解决一下,万分感谢

2012年10月27日 ⁄ 综合 ⁄ 共 1645字 ⁄ 字号 评论关闭
打开、保存对话框execute时,莫名其妙的报内存读取错误,哪位大侠给解决一下,万分感谢 VCL组件开发及应用
http://www.delphi2007.net/DelphiVCL/html/delphi_20061225115259132.html
打开、保存对话框execute时,莫名其妙的报内存读取错误,就是打开对话框后,没有进行任何操作的时候就报错,哪位大侠给解决一下,万分感谢  
  错误提示为:  
  Access   violation   at   address   00404170   in   module   'SysManager.exe'.Read   of   address   000034F6  
  程序开发过程中都是用的delphi自带控件,没有使用任何第三方控件,并且机子上没有安装vclskin,使用的操作系统为XP

贴出源码  
 

是不是和你其它程序有冲突啊,你单独建个工程试试...

with   TOpenDialog.create(nil)   do  
  begin  
      try  
      if   execute   then  
      begin  
          showmessage(filename);  
      end;  
      finally  
          Free;  
      end;    
  end;    
  就这句代码

这段代码没有错误,显然错误在此之前就产生了。  
 

调试跟踪  
 

就是这里出现的,在弹出了对话框后,跟踪调试到汇编,看不懂,太晕,呵呵,苦恼中,原来好像听说过这个问题,哪位大侠给解决一下

肯定不是因为这段代码才出错

没有人碰到过吗?  
 

你传的参数filename名称是否合法   不要带有非法字符,如:/。

不用动态方式,改为静态元件试一试。

如果你只是这么写  
  procedure   TForm1.Button4Click(Sender:   TObject);  
  begin  
      with   TOpenDialog.Create(nil)   do  
      begin  
      try  
          if   Execute   then  
              ShowMessage(FileName);  
      finally  
          Free;  
      end;  
      end;  
  end;  
   
  那么没问题,  
   
  如果有问题,可能是with   的问题,看看是不是有同名的方法调用,例如你的这段代码不是像我这样单独写在一个函数或过程中的。。  
   
   
  你定义一个变量,试试  
  procedure   TForm1.Button3Click(Sender:   TObject);  
  var  
      dialog   :   TOpenDialog;  
  begin  
      dialog   :=   TOpenDialog.Create(nil);  
      try  
          if   dialog.Execute   then  
              ShowMessage(dialog.FileName);  
      finally  
          dialog.Free;  
      end;  
  end;  
 

我碰到过类似问题,lz看看showmodal是不是也会出错呢?  
   
  目前我也不知道怎么解决.

建议使用一个TFileDialog变量,可能是你的uses   unit中包含了execute函数的其他单元,调用时跑到别的同名函数上了

Harryfin(Harry)   ,你好,我用showmodal没有出错  
  另外上面的兄弟,我试了直接拖控件和dialog.Execute   这两种方式,照样出错,极度郁闷中,呵呵,以前没有碰到过

with   TOpenDialog.Create(nil)   do//避免用nil,改为Application或者其它组件名称试试。。。  
      begin  
      try  
          if   Execute   then  
              ShowMessage(FileName);  
      finally  
          Free;  
      end;  
      end;  
 

问题仍未解决,放弃,哈哈,放分  
 

GS

抱歉!评论已关闭.