张和平 发表于 2014-11-30 19:33:58

求解出错原因===

本帖最后由 张和平 于 2014-11-30 20:17 编辑

函数如下:void CTextStyleUtil::ChangeFont(const TCHAR* fontFileName, const TCHAR* bigFontFileName)
{
AcDbTextStyleTable *pTextStyleTbl = NULL;
acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pTextStyleTbl, AcDb::kForWrite);
AcDbTextStyleTableIterator *pIt = NULL;
pTextStyleTbl->newIterator(pIt);

for (pIt->start(); !pIt->done(); pIt->step())
{
    AcDbTextStyleTableRecord *pRcd = NULL;
    if (pIt->getRecord(pRcd, AcDb::kForWrite) == Acad::eOk)
    {
      TCHAR *szName = NULL;
      pRcd->getName(szName);
      if (_tcslen(szName) > 0)
      {
      acutPrintf(TEXT("\n*** ÕyÔú′|àíÎÄ×ÖÑùê½ "));
      acutPrintf(szName);
      TCHAR *fileName = NULL;
      if (pRcd->fileName(fileName) == Acad::eOk)
      {
          //pRcd->setFileName(fontFileName);
          acutPrintf(TEXT("\n   ó¢ÎÄ×Öìåóé "));
          acutPrintf(fileName);
          acutPrintf(TEXT(" ¸Ä3éáË "));
          acutPrintf(fontFileName);
      }
      acutDelString(fileName);

      TCHAR *bigFileName = NULL;
      if (pRcd->bigFontFileName(bigFileName) == Acad::eOk)
      {
          //pRcd->setBigFontFileName(bigFontFileName);
          acutPrintf(TEXT("\n   ′ó×Öìåóé "));
          acutPrintf(bigFileName);
          acutPrintf(TEXT(" ¸Ä3éáË "));
          acutPrintf(bigFontFileName);
      }
      acutDelString(bigFileName);
      }
      acutDelString(szName);
      pRcd->close();
    }
}
delete pIt;
pTextStyleTbl->close();
}调用如下:CTextStyleUtil::ChangeFont(TEXT("txt.shx"), TEXT("hztxt.shx"));出错如下:



请问何解?


后续1:从输出反馈来看,应该是当未成功取到bigFileName时出的错,于是加个判断_tcslen(bigFileName) > 0,然后就能正常了。然后,就又发现一个问题了:当文字样式用,设置有中文字体时,如下图所示,获取到的fileName是空,这是为何?计算式中文,也总得有个名字吧?如何正确获取?

Gu_xl 发表于 2014-12-1 13:02:48

以下字符串指针不需要删除!
acutDelString(fileName);
acutDelString(bigFileName);
acutDelString(szName);

koxter 发表于 2014-12-3 10:45:19

顶楼上

luowy 发表于 2014-12-6 10:23:11

写得乱七八糟的。

张和平 发表于 2014-12-11 19:54:42

luowy 发表于 2014-12-6 10:23 static/image/common/back.gif
写得乱七八糟的。

额。。。初学,,还望指点一二
页: [1]
查看完整版本: 求解出错原因===