有一个程序看起来像这样:
procedure blabla;
var buffer: array of byte;
begin
Setlength(buffer, 10);
Setlength(buffer, someinteger);
end
两次调用缓冲后仍然 nil < - 这是我的问题
我通常认为自己是一位经验丰富的程序员,我在其他各种场合使用这种基本方法。这让我疯了。
过去有没有人遇到过类似的问题? 如果是这样,那问题是什么?
我的代码有点意外,因为我改变了任何似乎可疑的行,但这里是完整的代码:
@Edit:
我将此代码放在同一项目的另一部分中:
procedure interleaveVertexes;
var
interleavedArray: array of TVec3Coord2;
begin
SetLength(interleavedArray, vertexcount);
end;
它的工作原理......就像它应该
答案 0 :(得分:0)
我正在使用gdb和lazarus ide进行调试,显然......
他们两个都不喜欢称为'缓冲'或'数据'的变量。 我理解lazarus ide内部正在使用gdb。
即使是一个名为'h'的变量也不会让自己被正确检查。 我只是将它们重命名为'buffa'和'howdy',现在它似乎正在起作用。
通过执行老式的打印调试并将我的数组的指针存储在基数变量中。他们很好。 (除了数组的实际内容)
令人讨厌的搞笑