小弟是菜鸟类一员,最近在搞一个自创式小玩意,需要用到读写文件,看了很多实例,都没有提到如何读写二进制文件,请高手们用实例指点。

解决方案 »

  1.   

    Var
     aStream:TMemoryStream;
    begin
      aStream:=TMemoryStream.Create;//创建对象
      aStream.LoadFromFile('C:\我的文件.exe');//从文件读取内容。
      //做一些事情。
      aStream.Free;//释放对象
    end;
      

  2.   

    procedure TfrmMain.ReadImage(s,d:string); // 转化图像源文件转化为十六进制可读文件
    var
      sfile,dfile: file of byte;
      ch:byte;
      i,j:integer;
      str:string;
    begin
      Assignfile(sfile,s);
      Assignfile(dfile,d);
      Reset(sfile);
      ReWrite(dfile);
      j:=0;
      while not Eof(sfile) do
      begin
         read(sfile,ch);
         str:=FormatHexToString(ch);
         for i:=1 to length(str) do
         begin
           ch:=ord(str[i]);
           write(dfile,ch);
         end;
         inc(j);         // 换行
         if j>15 then
         begin
           ch:=10;
           write(dfile,ch);
           ch:=13;
           write(dfile,ch);
           j:=0;
         end;
      end;
      closefile(dfile);
      closefile(sfile);
    end;大家见笑了,希望对你有帮助
      

  3.   

    使用MemoryStream或者FileStream都不错。而且MemoryStream还提供一个内存指针,这使得你可以像操作一个字节数组一样的使用你的文件。
      

  4.   

    文本从本质上说不就是二进制数据吗?l := Length(s);
    MyStream.Write(l, SizeOf(l));
    MyStream.Write(s[1], l);
      

  5.   

    MemoryStream或者FileStream 取出来都是二进制流吗?我最近也有类似问题。我想把一个图片取出来然后写到一个INI中。代码如下:
    var
       ms : TMemoryStream ;
       ts : Tstream ;
       fs : TFileStream ;
    begin
      ts := TMemoryStream.Create ;
      ms := TStream.Create ;
      fs := TFileStream ;
      fname := 'C:\test' ;
      ini := TIniFile.Create(fname+'\abcd.ini');
      image1.Picture.Bitmap.SaveToStream(ts); ///如果是TS在这句就报抽象错(abstract error)
      image1.Picture.Bitmap.SaveToStream(ms);
      image1.Picture.Bitmap.SaveToStream(fs);  ms.Position := 0 ;
      fs.Position := 0 ;
      ts.Position := 0 ;  ini.WriteBinaryStream('Image','ImgContenMS',ms);///写不进INI文件,是空值
      ini.WriteBinaryStream('Image','ImgContenFS',fs);///写不进INI文件,是空值
      ini.WriteBinaryStream('Image','ImgContenTS',ts);
    end;
    大家看看,该怎么办哦?
    关键是我只能写流。因为下次还要用这张图片。如果是读成STRING后写我就完成了