比如搜索'AA.dat'是否有:11 22 33 ff dd 如果找到将内容替换成dd ff 33 22 11,这是一个16进制的文件格式! 
请大侠们帮帮忙,本人在此跪求了!

解决方案 »

  1.   

    把AA。DAT装入数组,用循环每次取5个字节,如果值是11 22 33 ff dd,那么先把“11”这个字节前边的写到磁盘,然后把dd ff 33 22 11追加到后边,最后把开始查找结果的“dd”那个字节后边的数据追加到最后。
      

  2.   


    var:
       MS:TMemoryStream;
       i,iPos:integer;
       buffer,buffer1:array[0..5] of byte ;
    begin
       MS:=TMemoryStream.create;
       MS.loadfromfile('aa.dat');
       MS.Postion:=0;
       buffer1[4]=$11;
       buffer1[3]=$22;
       buffer1[2]=$33 ;
       buffer1[1]=$ff;
       buffer1[0]=$dd;
       iPos:=0;
       while iPos<MS.size do 
    begin
       MS.seek(iPos,0);
       MS.readbuffer(Buffer,5)
       if buffer[0]=$11 and buffer[1]=$22 and buffer[2]=$33 and buffer[3]=$ff and buffer[4]=$dd then 
    begin
        MS.seek(iPos,0);
        MS.writebuffer(buffer1,5);
        iPos:=iPos+5;
    end
    else
       inc(iPos);   
    end;
      

  3.   

    最后,MS.SaveToFile();
    freeandnil(MS);