在Delphi中vsnprintf等效?

时间:2011-01-20 06:01:47

标签: c delphi gcc header-files

我目前正在将C头转换为delphi。 delphi中有没有可以替代C语言的vsnprintf的函数?或者它是否存在于任何常见的DLL中?

int vsnprintf(char *str, size_t size, const char *format, va_list ap);

5 个答案:

答案 0 :(得分:2)

您的问题几乎在Delphi "array of const" to "varargs"

处回答

答案 1 :(得分:2)

最接近的等价函数存在于Delphi中,它是FormatStr。原型是:

  

function Format ( Const Formatting : string; Const Data : array of const ) : string;
  function Format ( Const Formatting : string; Const Data : array of const; FormatSettings : TFormatSettings ) : string;

它采用格式控制字符串,格式化值列表,并返回格式化字符串。

答案 2 :(得分:0)

vsnprintf()在C编译器的运行时库实现中实现。它不存在于DLL中。 Delphi中没有等效的东西。无论你翻译什么,都必须重新编写才能使用Delphi自己的功能。请说明你要翻译的内容。

答案 3 :(得分:0)

您可以链接msvcrt.dll以获取C运行时功能。这是一个Windows组件,不是Visual Studio运行时的一部分。因此可以依赖它存在。

如果您这样做,请注意使用执行堆分配的函数。如果您需要这样做,那么您将需要使用相同的内存管理器释放该内存。一个技巧是使用msvcrt.dll中的malloc替换Delphi内存管理器。

我不是说这是解决当前问题的最佳方法。从长远来看,当Delphi支持Windows以外的平台时,使用本机Delphi解决方案可能会更好。

答案 4 :(得分:0)

Windows提供wvnsprintf。它是一个API函数,而不是C运行时函数。该文档促使您使用"safe" string functions之一,例如StringCbVPrintf; wvsnprintf不保证结果的空终止。

相关问题