2006-09-18

wsprintf和wvsprintf的区别

最近写点东西,由于不想使用Delphi自带的Format函数(该函数会增加程序负担),所以采用标准API方式格式化字符串,但Delphi的Windows单元有很多问题,wsprintf就是其中有问题的一个。

不晓得Delphi怎么搞的,wsprintf的参数都不给全,Windows定义的为:
int wsprintf(
LPTSTR lpOut, // 输出缓冲区地址
LPCTSTR lpFmt, // 格式化串地址
... // 变量列表

Delphi居然直接把变量列表省略了。汗 - -!
如果只有一个变量需要转换都必须使用wvsprintf,而wvsprintf本来就是wsprintf的升级版,何必多次一举呢?

所以我重新定义了一下:
function winsprintf(Output: PChar; Format: PChar; Data: PChar): Integer; stdcall;
external user32 name 'wsprintfA';

这样就没问题了,另外关于标题的答案为:
前者为单一变量使用,后者为多变量使用,传递的是该引用地址的指针而已。

That's all

1 条评论:

匿名 说...

that's so good.