【问题标题】:Read pascal record from another language从另一种语言读取帕斯卡记录
【发布时间】:2020-05-06 18:07:16
【问题描述】:

我有一个旧程序将一些帕斯卡记录写入文件:

type
  Character = Record
    Name : String[50];
    Age : integer;
  end;

begin
  // [..] data contain a Character record
  AssignFile(f, data); // example
  Write(f, data); // example
  CloseFile(f) // example
end.

是否可以打开此文件并从 C、C++、Go 等其他语言读取记录?

谢谢。

【问题讨论】:

  • 是的,有可能。
  • 有可能;但是,您需要知道 integer 的大小对于您的 Pascal 编译器(可能是 Delphi,根据您给出问题的标签)。
  • 您有一些关键字可以帮助我进行研究吗?
  • Delphi Integer 的大小是 32 位。 (IIRC,自 1996 年发布的 Delphi 2 以来一直如此。在 32 位和 64 位应用程序中,大小均为 32 位。)
  • 然后是打包。第一个字段是 51 字节,所以第二个 2 字节字段将在一个奇数地址上,没有填充。

标签: delphi pascal


【解决方案1】:

是的。

您只需得到一个包含字符和整数的文件。使用几乎任何主流编程语言都可以轻松阅读此文件。

当然,具体的代码会因语言而异。

理论上,我可以在 100 种最常见的编程语言中添加读取此类文件的示例代码,但这样答案会变得太长。

【讨论】:

  • 如果你有golang的小例子,请不要犹豫。
  • 如果你谷歌“golang 读取二进制文件”你会发现几个例子,例如stackoverflow.com/questions/14514201/…。您还需要知道the binary format of Delphi short strings。但是如何将它放入一个好的 golang 数据结构中纯粹是一个 golang 问题,我不知道足够的 golang 来回答这个问题。但是,如果您的尝试不适合您,并且您找不到已经问过的 Q,您可以将其作为一个新问题(在 golang 标记中)提出。
猜你喜欢
  • 1970-01-01
  • 2014-08-07
  • 1970-01-01
  • 2015-03-19
  • 1970-01-01
  • 1970-01-01
  • 2012-07-13
相关资源
最近更新 更多