前几天玩系统玩大了,崩溃了就顺势换了WIN8,结果VC6每次调试,一单步就出错

解决方案 »

  1.   

    file.Read(pText, nTextLen);
    sText.ReleaseBuffer();
    m_reText.SetWindowText(sText); 
    是不是pText里的数据没有赋给sText,也许VS2012并没有把pText的值传给sText,你单步执行看看这两个变量的值是不是一样,要确定pText读的数据没问题
      

  2.   

    你的文件是用什么编码的?
    Windows内核和MFC的Unicode是UTF-16 little endian,而文本文件一般多是UTF-8或者ANSI编码(比如GBK+ASCII)的。
    对付文本的话CStdioFile或C++的Stream、C的fopen文本一般会好一些。
    不建议用CString来读文件,因为它受工程编码的影响。最好指明用CStringW或者CStringA。
    然后再把它赋值给CString。比如CString sText = (CStringA) rText;
    CString会自动转换编码,这时是适合SetWindowText的。
      

  3.   

    用UTF-16勉强能读出一行,用ANSI和UTF-8就全文乱码,只能换其他方式了
      

  4.   

    换了WIN8就用VS2012啊,怎么还用VC6
      

  5.   

    文件就是工程目录里的Readme,用typeBinary的话unicode是对的,但ANSI和UTF-8都乱码,用typeText的话,ANSI只有中文乱码,unicode因为是16位遇到第一个英文、数字就断了,难道只能为每种编码写不同的代码吗
      

  6.   

    VC6不能单步才用VS2012的,VS2012太臃肿了,很多功能我这种非专业人士都用不到
      

  7.   

    哎呀,凑合用吧。总比VC6一堆BUG强
      

  8.   

    跟你说了,请一行一行的读,有的时候不能保证换行符被正确转换了。
    最好用CStdioFile,如果你要读的文件是ANSI的,请务必设置Locale,像这样
    http://st251256589.blog.163.com/blog/static/16487644920115803313153/
    这样CStdioFile才能将ANSI正确转换为UTF-16。
    另外你用的是不是英文版的系统或者英文版的VC?
    你在控制面板里最好设置区域设置为“China”,而且非Unicode程序编码设置为中文