起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 832|回复: 29

【结贴】文档数据集打开的问题

[复制链接]
发表于 2009-8-18 15:32:12 | 显示全部楼层 |阅读模式
在一个功能里面引用了 文档关联信息,功能里面放了一个数据集代理指向了 文档关联表 ,只要代码打开这个数据集就出现这个提示:

在计算表达式的时候产生异常,类型:“EAccessViolation”,内容:
Access violation at address 01C0DC35 in module 'rtdbg.dll'. Read of address 00000004。

出错的地方在  业务模型/协同系统/文档/文档信息 的这句上面。
  if FFileExtNameAndImageIndexList.IndexOfName(AExtName) >= 0 then
回复

使用道具 举报

发表于 2009-8-18 15:36:18 | 显示全部楼层
是直接调试运行的功能还是从初始化运行 的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-8-18 15:37:24 | 显示全部楼层
初始化运行的
回复 支持 反对

使用道具 举报

发表于 2009-8-18 16:37:51 | 显示全部楼层
调试跟踪一下,FFileExtNameAndImageIndexList这个对象是否为空?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-8-18 17:27:51 | 显示全部楼层
下图所示:

未命名.jpg

59.48 KB, 下载次数: 254

回复 支持 反对

使用道具 举报

发表于 2009-8-18 18:40:10 | 显示全部楼层
楼主,给我看下这个函数的完整定义。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-8-18 18:50:27 | 显示全部楼层
这个是你们系统库的函数:
function TDocImageListProvider.GetImageIndexByExtName(const AExtName: string): Integer;
var
  lIndex: Integer;
  lSmallIcon, lLargeIcon: TIcon;
begin
  if FFileExtNameAndImageIndexList.IndexOfName(AExtName) >= 0 then
    Result := SysUtils.StrToInt(FFileExtNameAndImageIndexList.Values[AExtName])
  else
  begin
    lLargeIcon := TIcon.Create;
    lSmallIcon := TIcon.Create;
    try
      jsGraph.GetFileIcon(AExtName, lLargeIcon, lSmallIcon);

      lIndex := 0;
      if FLargeImageList <> nil then
      begin
        lIndex := FLargeImageList.AddIcon(lLargeIcon);
        FLargeImageList.AddIcon(lLargeIcon);
      end;
      if FSmallImageList <> nil then
      begin
        lIndex := FSmallImageList.AddIcon(lSmallIcon);
        FSmallImageList.AddIcon(lSmallIcon);
      end;
      Assert(lIndex <> 0, '');
      FFileExtNameAndImageIndexList.Add(SysUtils.Format('%s=%d', [AExtName, lIndex]));
      Result := lIndex;
    finally
      lSmallIcon.Free;
      lLargeIcon.Free;
    end;
  end;
end;
回复 支持 反对

使用道具 举报

发表于 2009-8-19 08:45:56 | 显示全部楼层
TDocImageListProvider是个空对象
看看你出错时的调用栈。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-8-19 09:06:22 | 显示全部楼层
完整的调用栈信息如下:
TDocImageListProvider::GetImageIndexByExtName
TDocImageListProvider::GetImageIndex
TRelevancyGrid::AddFileImageToColumn
TRelevancyGrid::dsbRelevancyCalcFields
TRelevancyGrid::.ctor
TSWBD::.ctor
TMAINFORM::BizFormCreate
TFuncManager::InternalRunFunc
TFuncManager::RunTasks
TFuncManager::RunTasks
TFuncManager::RunTask
TWSRWZM:oTask
TWSRWZM::TreeList1DblClick

但是实际上运行到下图所示位置(文档关联网格的这个函数AddFileImageToColumn),就出现空对象了

未命名.jpg

95.19 KB, 下载次数: 247

回复 支持 反对

使用道具 举报

发表于 2009-8-19 09:18:39 | 显示全部楼层
在procedure TRelevancyGrid.FormDocCreate(Sender: TObject); 中设置断点,看看FDocImageListProvider的创建代码有没有被正常执行。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-14 15:58 , Processed in 0.046871 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表