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等,或许可以找出程序是否哪里潜在问题,另外,可以把你的发布程序放置在其他电脑上运行一下看是否出现此问题,可以找出是否是你操作系统有问题?