• 3550阅读
  • 10回复

求助QFile [复制链接]

上一主题 下一主题
离线wujken
 

只看楼主 倒序阅读 楼主  发表于: 2013-04-12

bool CPictureEx::LoadFile(char *pFileName)
{
    if(pFileName == NULL) return FALSE;
    bool bRet = TRUE;
    m_bLoadFlag = FALSE;


    // 打开文件
    QFile file(QString::fromLocal8Bit(pFileName));
    if(!file.open(QIODevice::ReadOnly)) return FALSE;
}
请问,这样有什么问题?为什么QFile file(QString::fromLocal8Bit(pFileName));时候出错
换成QFile file(“aaa.txt”);也出错,会是何原因,请各位指教。
离线jdwx

只看该作者 1楼 发表于: 2013-04-12
回 楼主(wujken) 的帖子
QFile file(QString::fromLocal8Bit(pFileName));
qDebug()<< file.fileName();//输出文件名。
    if(!file.open(QIODevice::ReadOnly)) return FALSE;
先试一下。

为什么QFile file(“aaa.txt”);也会出错?
如果没有aaa.txt这个文件,当然会出错。


建议全部用QString处理字符串。不要用char*。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线wujken

只看该作者 2楼 发表于: 2013-04-12
QFile file(QString::fromLocal8Bit(pFileName));运行到这里是已经死了,根本不能qdebug()
离线jdwx

只看该作者 3楼 发表于: 2013-04-12
回 2楼(wujken) 的帖子
设置断点,单步运行,调试。看看pFileName的内容。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线wujken

只看该作者 4楼 发表于: 2013-04-12
pFileName内容“D:\Rsys\qt4\ipower_zh\resource\image\jlfh2.png”这个都没问题,可是运行到
QFile file(QString::fromLocal8Bit(pFileName));内存就被采了,就出错了
我用QString aa = QString::fromLocal8Bit(pFileName);看了,结果运行完这句
aa提示错误指针,pFileName被置空了,头都大了
离线jdwx

只看该作者 5楼 发表于: 2013-04-12
回 4楼(wujken) 的帖子
D:\Rsys\qt4\ipower_zh\resource\image\jlfh2.png 这个文件名是怎么来的?
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线wujken

只看该作者 6楼 发表于: 2013-04-12
iRet = fread_s(pszStr,sizeof(pszStr),m_stImageAttr.m_iFileNameLen,1,fp);
离线wujken

只看该作者 7楼 发表于: 2013-04-12
文件里面取出来的
离线wujken

只看该作者 8楼 发表于: 2013-04-12
iRet = fread_s(pszStr,sizeof(pszStr),m_stImageAttr.m_iFileNameLen,1,fp);
sprintf(strName,"\\resource\\image\\%s",pszStr);
MakeFullWorkPath(strName);
整个过程就是这样的
离线jdwx

只看该作者 9楼 发表于: 2013-04-12
回 8楼(wujken) 的帖子
如果直接放进QString,输出是:D:Rsysqt4ipower_zhesourceimagejlfh2.png 这个样子。
\被当作转义符号。
用C写一个字符串替换的函数把“\”,替换为"\\"或“/"再给QString。

如果不费劲,建议用Qt重写这一部分。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线wujken

只看该作者 10楼 发表于: 2013-04-12
万分感谢,我试试
快速回复
限100 字节
 
上一个 下一个