,MFC中写了个类

求助,MFC中写了个类
头文件readcom.h
cpp文件readcom.cpp
功能是读一个路径默认的文件,文件内容为
CMDNAME1,00 00 00 00 00 00 00 00 00 00 00 00
CMDNAME2,00 00 00 00 00 00 00 00 00 00 00 00
DEBUG通过,运行可以能跳出运行运行界面,程序运行过程中直至关闭程序都没错误,类的使用可以完美实现

但是在打开MFC生成的EXE程序时出现报错
报错内容:
Debug Assertion Failed!
Program:
File:f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\filetxt.cpp
Line 207

代码如下
C/C++ code

//readcom.h
#pragma once
#include "stdafx.h"

class readcom:public CDialog
{
public:
    [color=#FF0000]readcom(void);[/color]
    ~readcom(void);
    //com's name
    CString comName;
    // 存放COM内容
    readcom* OpenComTxt(CString FileName,int &count);
    BYTE comRes[12];
    CString strcomRes[12];
    BYTE readcom::CStringToByte(CString Str);
};


C/C++ code

//readcom.cpp
#include "stdafx.h"
#include "readcom.h"

readcom::readcom(void)
: comName(_T(""))
{
}

readcom::~readcom(void)
{
}

readcom* readcom::OpenComTxt(CString FileName,int &count )
{
    int line = 0;
    readcom* m_com = new readcom[50];
    CStdioFile file;
    file.Open(FileName,CFile::modeRead);
    char* buf = new char [50];
    char  seps[] = " ,";
    char *token;
    
    while(file.ReadString((LPTSTR)buf,100))
    {
        token = strtok(buf,seps);
        int i =0;
        if ( token != NULL && i == 0)
        {
            m_com[line].comName = token;
            token = strtok(NULL , seps);            
        }
        i++;
        while ( token != NULL &&  i < 13)
        {
            m_com[line].strcomRes[i-1] = (LPCTSTR)(LPTSTR) token;
            token = strtok(NULL , seps);
            i++;
        }        
        line++;
    }
    count = line;
    int j = 0,n = 0;
    while (j < count )
    {
        while ( n < 12)
        {
            m_com[j].comRes[n] = CStringToByte(m_com[j].strcomRes[n]);
            n++;
        }
        j++;
    }
    file.Close();
    return m_com;
}

BYTE readcom::CStringToByte(CString Str)
{
    CString StrHex;
    BYTE bdata = 0x00;
    int idata = 0x00;

    StrHex = Str.Mid(0,2);
    sscanf_s(StrHex,"%02x",&idata);//将StrHex中的值按16进制的格式解释,放入idata中
    bdata = (BYTE)idata;

    return bdata;

}



在对话框调用该类的部分,声明没给出
C/C++ code

         [color=#FF0000]readcom m_read;[/color]
    count = 0;
    m_com = m_read.OpenComTxt("BD.txt",count);
    int num_name = 0;
    
    while (num_name<count)
    {
        BD_CM.AddString(m_com[num_name].comName);    
        num_name++;
    }

    readcom m_read_red;
    count_red = 0;
    m_red_com = m_read.OpenComTxt("RED.txt",count_red);
    int num_name_red = 0;

    while (num_name_red<count_red)
    {
        RD_CM.AddString(m_red_com[num_name_red].comName);    
        num_name_red++;
    }



经调试是在DLG里定义类变量时候就会出错,是否类有什么错误?

------解决方案--------------------
文件路径的问题
你是在debug文件夹下运行的吧
那个目录下是不是没有BD.txt、RED.txt这些文件
------解决方案--------------------
char* buf = new char [50];
char seps[] = " ,";
char *token;

while(file.ReadString((LPTSTR)buf,100))

-->
分配的buf是char [5];
读文件的时候ReadString(LPTSTR)buf, 100))???

你可以用CString类对象
CString buf(_T(""));
...
while(file.ReadString(buf))
{
 ....
}