打开、保存对话框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