首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

savedialog保存出现runtime error异常

2012-02-16 
savedialog保存出现runtime error错误今天做了一段小程序,当点击保存的时候出现了runtime error 错误,按钮

savedialog保存出现runtime error错误
今天做了一段小程序,当点击保存的时候出现了runtime error 错误,按钮代码如下(本人另一个程序中有完全相同的代码,运行的时候没有出错)
procedure TForm3.BitBtn2Click(Sender: TObject);
var
  i,j,row:integer;
begin
  if SaveDialog1.Execute then
  begin
  ExcelApplication1.Connect;
  ExcelApplication1.Workbooks.Add(Null,0);
  ExcelWorkBook1.ConnectTo(ExcelApplication1.Workbooks[1]);
  ExcelWorkSheet1.ConnectTo(ExcelWorkBook1.Sheets[1] as _WorkSheet);
  row:=stringgrid1.RowCount;
  for i:=1 to 13 do
  for j:=1 to row do
  ExcelWorkSheet1.Cells.Item[j,i]:=stringgrid1.Cells[i,j-1];
  ExcelWorkBook1.SaveCopyAs(SaveDialog1.FileName+'.xls');
  ExcelWorkBook1.Close(false);
  ExcelApplication1.Disconnect;
  Screen.Cursor:=crDefault;
  showmessage('成功导出数据');
  end;
end;
提示错误信息 :Access violation at address 00000000,read of address 00000000
当关闭调试窗体时出现提示 : Runtime error 216 at 00467104
当我把代码改成如下时就不会出现错误:
procedure TForm3.BitBtn2Click(Sender: TObject);
var
  i,j,row:integer;
begin
// if SaveDialog1.Execute then
// begin
  ExcelApplication1.Connect;
  ExcelApplication1.Workbooks.Add(Null,0);
  ExcelWorkBook1.ConnectTo(ExcelApplication1.Workbooks[1]);
  ExcelWorkSheet1.ConnectTo(ExcelWorkBook1.Sheets[1] as _WorkSheet);
  row:=stringgrid1.RowCount;
  for i:=1 to 13 do
  for j:=1 to row do
  ExcelWorkSheet1.Cells.Item[j,i]:=stringgrid1.Cells[i,j-1];
// ExcelWorkBook1.SaveCopyAs(SaveDialog1.FileName+'.xls');
  ExcelWorkBook1.SaveCopyAs('C:\dad.xls');
  ExcelWorkBook1.Close(false);
  ExcelApplication1.Disconnect;
  Screen.Cursor:=crDefault;
  showmessage('成功导出数据');
// end;
end;
即注销掉Savedialod,但是这样做的话保存的路径就固定了,很不方便。请教高手如何解决这个问题。

[解决办法]
8成估计是你的SaveDialog1没有创建,动态定义的,还是设计期放在界面上的呢?
[解决办法]
看看是不是路径有问题,把路径写成一样试试
[解决办法]
是否输任何路径都有问题呢?我没记错的话就算路径错也不该报地址冲突的。
[解决办法]
你的程序,如果换用别的dialog,例如OPEN的,会不会出同样的错误呢?其它弹出窗口之类是否有异常问题呢?
[解决办法]
调时的时候检查一下对象 SaveDialog1 相关属性,比如检查其对象是否是nil等,或许可以找出程序是否哪里潜在问题,另外,可以把你的发布程序放置在其他电脑上运行一下看是否出现此问题,可以找出是否是你操作系统有问题?

热点排行