下面是C++的一段代码: 
                  inf.seekg(-1*int(sizeof(double)),ios::end);
//上面这句什么意思?Delphi的等同语句是? double lfTemp;
inf.read((BYTE*)(&lfTemp),sizeof(double));
//(BYTE*)(&lfTemp),什么意思阿? outf<<"#  采样持续时间:  "<<lfTemp<<"  秒"<<endl;
inf.seekg(0,ios::beg);
BYTE btTemp;
inf.read(&btTemp,1);
outf<<"#  通道数:        "<<int(btTemp)<<endl;
inf.read(&btTemp,1);
outf<<"#  A/D板位数:     "<<int(btTemp)<<endl;
float fTemp; inf.read((BYTE*)(&fTemp),sizeof(float));
outf<<"#  最大电压:      "<<fTemp<<"   最小电压:   ";
inf.read((BYTE*)(&fTemp),sizeof(float));
outf<<fTemp<<endl;

inf.read((BYTE*)(&m_nReadStart),sizeof(int));
inf.seekg(m_nReadStart,ios::beg);另外,startPos=inf.tellg()什么意思呢?
inf.seekg(0,ios::beg)呢?小弟对C++一点也不了解,希望各位高手不吝赐教,谢了。

解决方案 »

  1.   

    因为小弟对于这个无类型文件的结构一点也不了解,所以比较麻烦。另外是,我用BlockRead(DataFile,RealBuffer,SizeOf(RealBuffer)*10,bytesRead);读出四个字节的内容以后,怎样把这个实数显示出来?
    realbuffer的定义如下:RealBuffer: array[0..3] of byte;
    这样对么?谢谢了。如果觉得分数太低,小弟可以加分。
      

  2.   

    感觉用TFileStream比较方便
    with TFileStream.Create(DataFile, fmOpenRead) do
    try
      Seek((-1*int(sizeof(double)), soFromEnd);
      double lfTemp;
      read(lfTemp, sizeof(double));
      ..
    finally
    end;
    另外inf.tellg()好像就是当前的文件指针位置
    TFileStream.Position就可
      

  3.   

    如果用BlockRead,
    还有Seek,FilePos这些函数
    可以试试
      

  4.   

    这是一段C++操作文件的代码
    inf 的类型应该为 ifstream / fstream吧.. 你最好把其定义给写出来 因为在定义的时候 就有不同的构造方式 比如从文件最开始 
    inf.seekg(-1*int(sizeof(double)),ios::end);
    //上面这句什么意思?Delphi的等同语句是?
    // 表示从文件的末尾开始读取数据  double lfTemp;
    inf.read((BYTE*)(&lfTemp),sizeof(double));
    //(BYTE*)(&lfTemp),什么意思阿?
    // 他的意思就是类型转换 
    // 因为函数 read的原形为 istream& read( unsigned char* puch, int nCount );
    // 为 unsined char* 表示 无符号的char 而BYTE*恰好也是无符号的 且表示范围相同. 这样表示一次读4个BYTE的值到 lfTemp中去.另外,startPos=inf.tellg()什么意思呢?// 获得现在文件读取的位置
    inf.seekg(0,ios::beg)呢?// 表示从文件开始读取.无文件类型的就以二进制读取 就是。。不过你要明白他里面的内容是什么