为何在使用Byte(Pointer(Longint.当里面的值上千时内存报错

为什么在使用Byte(Pointer(Longint..当里面的值上千时内存报错?在运行Byte(Pointer(Longint(SpecBuf) + X

为什么在使用Byte(Pointer(Longint..当里面的值上千时内存报错?
在运行Byte(Pointer(Longint(SpecBuf) + X * SPECWIDTH + SpecPos)^) := 255;时,当SPECWIDTH上1000时,报内存出错,为什么啊,超过内出地址了吗?怎么办啊!
[解决办法]
for X := 0 to SPECHEIGHT do
你把修改为: for X := 0 to SPECHEIGHT - 1 do 看看,
那个byte(Pointer(Longint(SpecBuf) + X * SPECWIDTH + SpecPos)^) := 255 不用修改的!

[解决办法]

引用:
// move marker onto next position
  SPECWIDTH:=5000;
  SpecPos := (SpecPos + 1) mod SPECWIDTH;
  for X := 0 to SPECHEIGHT do
      Word(Pointer(Longint(SpecBuf) + X * SPECWIDTH + SpecPos)^) := 255;  //Byte


试下将for X := 0 to SPECHEIGHT do 改为 for X := 0 to SPECHEIGHT - 1 do