VC中没有边界检查,
delphi 中把Project->options中check range out 去掉也不会报错,
但是,这样写是疯了:)你的程序会莫名其妙的崩溃.

解决方案 »

  1.   

    为什么VC中就一点没事呢?
    上述的结构是WINDOWS内部的结构,VC中付了256次值怎么就不会崩溃?
      

  2.   

    var
      bmpinfo:PBitmapInfo;
      infosize:integer;
      i:Integer;
    begin
      infosize:=SizeOf(TBitmapInfoHeader)+SizeOf(TRGBQuad)*256;//对256色来说
      getmem(bmpinfo,infosize);
      for i:=0 to 255 do
      begin
        bmpinfo^.bmiColors[i].rgbBlue := k;
        bmpinfo^.bmiColors[i].rgbred := k;
        .....
      end;
      .....
      freemem(bmpinfo);
    end;
    其实,c++可以那样写是因为它支持动态数列,
    而pascal必须事先分配内存,这点来说pascal很讨厌:(
    分都给我吧,大家别和我抢