1

我正在为具有一系列定义为 c 结构的消息的服务器在 Delphi 中编写一个 tcp 客户端。以下是其中一条消息的转换示例:

struct {
    int32     Reserved;
    cstring   Name;
    int32     flags;
}

msg1 = record
  Reserved : integer;
  Name : cstring???;
  flags : integer;
end

谷歌搜索类型告诉我 cstring 与我希望在这种情况下传递的标准 char 数组不同,但我似乎无法找出 cstring 的内部表示。

我将如何在记录中表示 cstring 以传递给服务器?

4

2 回答 2

0

该规范显然使用术语 cstring 来表示一个 char 数组,后跟一个空终止符,而不是实际的 CString 类型。显然只是规范中术语的令人讨厌的混淆。

于 2010-03-29T15:35:46.250 回答
0

没有真正的区别。“C 字符串”是指向以 null 结尾的字符数组的指针,仅此而已。C 中没有像 Delphi 那样真正的“字符串类型”。Delphi 用 PChar 类型表示它。(请注意,在 D2009 及更高版本中,您必须知道 PAnsiChar 和 PWideChar 之间的区别。)

但是要小心,如果文档将数组本身称为 C 字符串,而不是指向数组的指针,那么这是一个潜在的陷阱。您必须在记录中使用一个数组,并且您必须确切知道它应该是多长时间。

于 2010-03-29T15:53:42.653 回答