找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 412|回复: 2

[求助]:VC++2005读取.dxf问题

[复制链接]
发表于 2006-5-19 22:53:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
各位大侠,小弟最近用VC++2005 +ObjextARX2007 进行CAD的二次开发,需要读取 dxf 文件,在网上了解了关于 dxf 文件的格式,想实现的就是读取 dxf 的实体信息,看了一个例子,然后用VC++2005的一些标准进行了修改,其中:

FILE* fp;
int  code;
TCHAR value[64];              //   VC++2005里都用TCHAR代替char
fp=fopen( _T("data.dxf"), _T("r"));  // VC++2005 里所有" "都用作_T(" ")
do {
       fscanf (fp, _T("%d"), &code);
       fscanf (fp, _T("%s"), value);
}while(_tcscmp(value, _T("ENTITIES")));  // VC++2005里用_tcscmp代替strcmp

编译的时候总是出错:
error C2664: 'fopen' : cannot convert parameter 1 from 'const wchar_t [9]' to 'const char *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
error C2664: 'fscanf' : cannot convert parameter 2 from 'const wchar_t [3]' to 'const char *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

请教各位大侠,这个问题如何解决啊!是不是VC++2005已经不再支持 fopen 和 fscanf 函数啊?那可以用什么函数来实现相应的目的呢?谢谢了,先!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-5-20 11:22:32 | 显示全部楼层
你的问题是fopen 是要求char * 类型的参数 , 请写成 fopen("data.dxf","r") fscanf 也是同样的问题!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-20 21:17:56 | 显示全部楼层
谢谢cutechun指教,原来也不是所有的 " " 都要用_T(" ")代替啊,谢谢了!!!



再次谢谢2楼的,按照你的说法,fscanf和fopen都通过了,但我想在CAD里用一个对话框的形式调用打开对话框,然后选中dxf文件,单击确定后,再读取dxf的信息,保存所读信息为txt文件,这时就又有问题了:

FILE* fp;
int code;
char* value;
TCHAR OpenDXFFileName[80];
CString m_strOpenDXF;
struct resbuf* result = acutNewRb(RTSTR);
        if (acedGetFileD(_T("打开DXF文件"), NULL, _T("dxf"), 128, result) != RTNORM)
        {
                acutRelRb(result);
                return;
        }
        StrCpy(OpenDXFFileName, result->resval.rstring);  // 问题1处
        acutRelRb(result);
        m_strOpenDXF = OpenDXFFileName;   // 问题2处
        UpdateData(FALSE);
        UpdateWindow();
fp = fopen(m_strOpenDXF, "r");    // 问题3处
        do{
                fscanf(fpRead,"%d",&code);
                fscanf(fpRead,"%s",value);
        }while(strcmp(value,"ENTITIES"));

问题1处的OpenDXFFileName只能是TCHAR型,否则StrCpy不能通过
问题2处m_strOpenDXF为CString才能通过
那么满足了以上两个条件
问题3就通不过了,fopen要求m_strOpenDXF为char*

如果将m_strOpenDXF改为char*,问题3不存在了
问题2就来了,TCHAR型的OpenDXFFileName不能转换为char*型的m_strOpenDXF

如果不要问题2语句,OpenDXFFileName改为char*型,问题3处直接用fp = fopen(OpenDXFFileName, "r");此时问题1处又通不过

这三处的问题我调试了很久,满足其中两处,就满足不了第三处,困惑了我好久
请教大侠,我该怎样处理,才能调试好呢?
万分感谢啊!!!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 04:34 , Processed in 0.455336 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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