delphi 如何读取二进制文件到一个TList中去,急,
谢谢各位高手
最好给我一点源代码
在线等

解决方案 »

  1.   

    为什么要读文件到到TList,你知道TList是干什么的呀
      

  2.   

    不是啊,给了一个文件二进制格式的,我要把其中的数据以字节的形式读出来,通过一个计算公式,得到数据值,放到Tlist中.
    我现在用二进制读取
        assignfile(f1, opendialog1.filename);
        reset(f1,1);
        setlength(strsongname,1);
        blockread(f1, strsongname,sizeof(strsongname),bytesread);
    读不出来.请教什么问题?
      

  3.   

    具体需求是什么
    用TFileStream读二进制文件,可以按照字节来读
      

  4.   

    二进制文件
    文件第1字节无效,第二字节开始是有效数据
    每个字节是一个数据点,数据值=字节*625/256
    我对流不是很熟悉
    谢谢 cll007(gazo)
      

  5.   

    二进制文件
    文件第1字节无效,第二字节开始是有效数据
    每个字节是一个数据点,数据值=字节*625/256
    我对流不是很熟悉
    谢谢 cll007(gazo)
      

  6.   

    var
      FileStream:TFileStream;
      StringList:TStringList;
      Buffer,aResult:string;
    begin
      FileStream:=TFileStream.Create('F:\1.txt',fmOpenRead);
      StringList:=TStringList.Create;
      try
        FileStream.Position:=0;
        //可以一次读多个字节
        FileStream.Read(buffer,1);//将第一个字节读到buffer中
        {
        处理第一个字节
        }    //将第二个字节读到buffer中
        FileStream.Position:=0+1;
        FileStream.Read(buffer,2);    // 处理第二个字节 ,用循环可连续处理多个字节
        aResult:=FloatToStr(strtofloat(buffer)*625/256);
        StringList.Add(aResult);  finally
        StringList.Free;
        FileStream.Free;
      end;
      

  7.   

    procedure ........
    var
      FileStream: TFileStream;
      st:TStringStream;
    begin
            FileStream := TFileStream.Create(filepath,fmOpenRead);
            FileStream.Position:=0;
            st := tstringstream.create('');
            st.CopyFrom(FileStream,FileStream.Size);
    end;
      

  8.   

    随手写个,你看看吧type
      pabc=^tabc;
      tabc=record
        i:integer;
        s:string[100];
      end;var
      lists:tlist;
    //添加
      procedure add(r:tabc);
      var
        p:pabc;
      begin
        new(p);
        p^:=r;
        lists.Add(p);
      end;
    //保存
      procedure save();
      var
        i:integer;
      begin
        with tfilestream.Create('1.dat',fmOpenWrite) do
        begin
          for i:=0 to lists.Count-1 do
            write((lists[i])^,sizeof(tabc));
          free;
        end;
      end;
    //装入
      procedure load();
      var
        p:pabc;
        t:tabc;
      begin
        with tfilestream.Create('1.dat',fmOpenRead) do
        begin
          while read(t,sizeof(t))=sizeof(t) do
          begin
            new(p);
            p^:=t;
          end;
          free;
        end;
      end;
      

  9.   

    不好意思,昨天写的有问题FileStream.Read(buffer,1);//不对
    应该是FileStream.Read(buffer,sizeof(byte));//一个字节长度
    或者FileStream.Read(buffer,8);//一个字节长度