我目前正在将C头转换为delphi。 delphi中有没有可以替代C语言的vsnprintf的函数?或者它是否存在于任何常见的DLL中?
int vsnprintf(char *str, size_t size, const char *format, va_list ap);
答案 0 :(得分:2)
答案 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
不保证结果的空终止。