0

有一个过程如下所示:

procedure blabla;
var buffer: array of byte;
begin
  Setlength(buffer, 10);
  Setlength(buffer, someinteger);
end

两次通话后缓冲区仍然为零<-这是我的问题

我通常认为自己是一位经验丰富的程序员,我在其他各种场合都使用这种基本方法。这让我发疯了。

你们中有人过去有过类似的问题吗?如果是这样,问题是什么?

我的代码有点意大利面,因为我更改了任何看起来可疑的行,但这里是完整的代码:

完整程序

@编辑:

我在同一个项目的另一部分有这个代码:

procedure interleaveVertexes;
var
  interleavedArray: array of TVec3Coord2; 
begin
  SetLength(interleavedArray, vertexcount);  
end;

它有效..就像它应该的那样

4

1 回答 1

0

我正在使用 gdb 和 lazarus ide 进行调试,显然..

他们俩都不喜欢称为“缓冲区”或“数据”的变量。我知道lazarus ide内部无论如何都在使用gdb。

即使一个变量只是命名为 'h' 也不会让自己被正确检查。我刚刚将它们重命名为“buffa”和“howdy”,现在它似乎正在工作。

通过进行老式的打印调试并将我的数组的指针存储在一个基数变量中到达那里。他们在那里很好。(除了数组的实际内容)

好笑

于 2013-05-31T21:34:33.830 回答