游戏自动欧陆风云4读档错误时是按照dat文件修改时间的先后顺序来欧陆风云4读档错误吗?

关于读取.dat文件的方法,大牛们帮忙~ - QTCN开发网 - Powered by phpwind
查看完整版本: [--
关于读取.dat文件的方法,大牛们帮忙~
读取一个二进制的data文件,文件大小4M,我用如下代码读:QByteA&&QFile file(&D:/data/.dat&);&&file.open(QIODevice::ReadOnly);&&QDataStream in(&file);&&in&&&&qDebug()&&编译能通过,但是控制台弹出后就出错?这是由于所读文件太大了么?出错提示::: error: cannot open output file debug\duquwenjian.exe: Permission denied:: error: collect2: ld returned 1 exit status其实这个文件我想用如下代码读,我想把数据读到pDATA中,但是4M的数据我只想读前1M,在VC中我用readHuge(pDATA,0x10000)可以读取这个.dat文件的前1M,不知道Qt中如何实现,这个是我仿照C++中的方式编写的:unsigned char *pDATA=new unsigned char[0x100000]; QFile file(&D:/data/.dat&);
file.open(QIODevice::ReadOnly);&&QDataStream in(&file); in&&pDATA;qDebug()&&pDATA;依然不能用。下面是我要打开dat文件的一部分截图,这个是我用ultraEdit打开的。
[attachment=6374] 我是Qt菜鸟,正在努力学习,呵呵,希望牛人不吝赐教~我希望能在控制台查看这个数据的输出,只查看前十位就行,确定数据是否读取正确。
你想太多了,就是一个简单的链接错误! 关掉正在运行的duquwenjian.exe,然后再编译链接!!
谢谢楼上回答,果然是这样,呵呵,但是我在控制台看到的全是乱码][attachment=6375]何解?完全崩溃了,弄了两天了我,论坛所有关于文件操作的帖子我几乎都看了一遍。我想读前1M数据,不知道各位有什么方法?
1. 二进制,你当作纯文本解释,不乱码才怪。2. 最好不要使用 QDataStream,如果你这个文件不是QDataStream生成的话。3. 不用搜论坛,去看QFile和QByteArray的manual对你解决问题会更有效。
mark一下,谢谢dbzhang800的回答,我晚上有时间我再试试,今天晚上回报成果
呵呵,比较好啊!
那个dat中的数据究竟是什么东西?如果只是你需要的bytearray中的具体数据的话,那么直接用QFile的readAll函数,如果你用stream的流操作的话,会把里面的数据当做一个QByteArray类来处理的
汇报刚才成果,呵呵,多谢dbzhang800和roywillow提供的建议,我看了manual之后,发现manual太好了,非常详细,假如我英语如果好点的话,应该更容易些,下面是我读取的.dat文件代码,贴出来,请大家指正:#include &QtCore/QCoreApplication&#include &QFile&#include &QDebug&int main(int argc, char *argv[]){&&&&QCoreApplication a(argc, argv);&&&&QByteA&&&&QFile file(&D:/data/.dat&);&&&&file.open(QIODevice::ReadOnly);&&&&data = file.readAll();&&&&qDebug()&&data.toHex()&&'\t'&&data.capacity();&&&&return a.exec();}这段代码运行情况如下:[attachment=6378]输出了data的值以后,显示个数为4194304,即4M(0x400000);在控制台可以看到.dat文件的十六进制输出。但是假如输出代码改成qDebug()&&data;也就是去掉toHex();就出现了乱码。由于刚接触qt不长时间,对QByteArray了解不够深刻,我不知道问题出在哪里。我认为,既然是byte array,假如不加.toHex()应该也能输出二进制代码,但是出现的是乱码,而加上.Hex() 则能和ultraEdit里看到的数据一样。求解~以后我得好好研究一下manual了~下一步就是对data里的数据进行处理了,主要用c,谢谢大家帮忙。
说实话,manual不能解决你的这种问题,你可能需要随便找本C或C++的教材,重新看看前3章搞清楚&&'0',0x0, ‘\x0’, '\0' , 0x30, '\x30' 等等到底是什么东西
其实QByteArray从某种意义上讲是一种字符串,所以输出默认都会当做字符串一样处理,要通过toHex来获得其中内容的hex形式文档上注意一下的话你会发现有这么一句:Inherited by: Q3CString
谢谢roywillow 的回答,这个数据是从硬件读出来的,我只不过要进行后续的处理,抱歉不能上传和大家分享。今天对QByteArray的理解有了质的飞跃,谢谢大家!
mark一下!
查看完整版本: [--
Powered by
Gzip disabled&& 查看话题
Fortran读取dat文件求助
各位虫友好,我利用软件得到了一个dat文件,想把其中的数据读出,要求得到两个变量,比如a、b。a代表第一列,b代表第二列,而且要相互对应。由于变成水平有限,希望广大虫友多多指点。谢谢!dat文件顺带上传。
你这个dat文件里的数据到底怎么排列的? 请说清楚些,别人才好帮忙:shuai: 没有写程序的必要!
你按我写的做:
1.把文件的后缀名改为txt
2.先打开excel,然后用excel打开这个txt文件,记得分隔符那里选Tab和空格,接着点“完成”即可 用origin
File/Import/Single ASCII 一般地说,读取数据是为了下一步运用 这些数据,进行 计算什么的。楼主只说读取数据,所以有人直接建议用 EXCEL就解决问题了。
我也不知道你最后派什么用场,只好写几句程序,作为样例供你参考。
你自己根据你的需求,再改造程序。
你的问题说得越清楚,越是能帮到点子上。
楼主再仔细想想清楚。如果有需要,再联系我。
integer a(5000)
real*8 b(5000)
character* 20 ch
open(7,file='NodalTemperaturet.DAT')
read(7,*) ch
read(7,*) ch
read(7,*) ch
do i=1,4783
read(7,*) a(i),b(i)
var cpro_id = 'u1216994';
欢迎监督和反馈:本帖内容由
提供,小木虫仅提供交流平台,不对该内容负责。欢迎协助我们监督管理,共同维护互联网健康,如果您对该内容有异议,请立即发邮件到
联系通知管理员,也可以通过QQ周知,我们的QQ号为:8835100
我们保证在1个工作日内给予处理和答复,谢谢您的监督。
小木虫,学术科研第一站,为中国学术科研研究提供免费动力
广告投放请联系QQ: &
违规贴举报删除请联系邮箱: 或者 QQ:8835100
Copyright &
eMuch.net, All Rights Reserved. 小木虫 版权所有}

我要回帖

更多关于 欧陆风云4读档错误 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信