这是 Tiva 图形库版本2.1.3.156中 GrStringGet 的错误报告;我已经找到了一个解决方案。
我使用的 CSV 文件包含转换后的字符串。 它被转换为未压缩的字符串表,并带有"mkstringtable -u..."。 在文件的一行中、我具有与等效的内容
"1234567890abcd"、"12345678"、...
第二个字符串是通过引用第一个字符串(其中第一个字符串是前八个字符)通过 mkstringtable 进行编码的。 当使用 GrStringGet ()请求第二个字符串时,我得到了正确的八个字符,之后是两个随机更改的字符(可能是栈上剩余的内容)。 此外,发生这种情况时,GrStringGet()返回的是0,而不是8 (正确的字符串长度)或10 (strlen()报告的返回字符串的实际长度)。
有问题的字符串正由 GrStringGet ()中的第二个位置处理,注释为“将字符串的这一部分复制到输出缓冲区”。 大多数其他字符串(工作正常)由以下情况处理、注释为"现在复制字符串的最后一部分"。 后一个(工作)案例以以下代码结尾:
//如果我们在遇到本例之前没有复制任何字符,
//初始化输出指针(这会将代码保留在末尾
//返回长度快乐的函数)。 这将是
//假设我们使用未压缩的字符串表。
//
if (!pui8BufferOut)
{
pui8BufferOut =(uint8_t *) pcData +(i32Idx + i32Buf);
}
我认为将该代码添加到有问题的部分可以解决该问题、但我在不添加代码的情况下也完成了同样的操作、方法是重新排列如何嵌套"if"语句、使这两种情况都执行该代码。 我看不到附加文件的方法; 如果找不到文件、我将至少跟踪代码的一个片段。
Steve