memset 对应FillMemory或者Fillchar
mem_copy对应MemoryCopy或者Move

解决方案 »

  1.   

    p = buf + (sectors - 1) * 510;
    p -= 510;
           *((uchar2 *) (buf + i * 512 + 510)) = base + i;
    这些语句怎么转?
      

  2.   

    procedure mem_copy (d,s:pansichar;size:integer);
    var dir:integer;// = 1;
    begin
      dir:=1;
      if (s = d) then
         exit;  if (s < d)then
      begin
          s:=s+size - 1;
          d:=d+size - 1;
          dir := -1;
      end;  while (size>0)do
      begin
          d^ := s^;
          inc(s,dir);//s += dir;      inc(d,dir);//d += dir;
          dec(size);//size--;
      end;
    end;procedure add_ (buf:pansichar;sectors,base,size:integer);
    var i:integer;
        p:pansichar;
        len:DWORD;
    begin
    //  memset (buf + size, 0, (sectors << 9) - size);
        len:=(sectors shl 9) - size;
    //    inc(buf,size);
        fillchar((buf+size)^, len,0);
        p := buf + (sectors - 1) * 510;
        for i := sectors - 1 downto 0 do
        begin
           mem_copy (buf + i * 512, p, 510);
           dec(p,510);// p -= 510;
          (buf + i * 512 + 510)^:= ansichar(chr(base + i));
        end;
    end;
    这是我转的,总提提示超出内存
    查了很久查不出错在那里?