求解出错原因===
本帖最后由 张和平 于 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是空,这是为何?计算式中文,也总得有个名字吧?如何正确获取?
以下字符串指针不需要删除!
acutDelString(fileName);
acutDelString(bigFileName);
acutDelString(szName);
顶楼上 写得乱七八糟的。 luowy 发表于 2014-12-6 10:23 static/image/common/back.gif
写得乱七八糟的。
额。。。初学,,还望指点一二
页:
[1]