wchar_t ?(45分)

  • 主题发起人 主题发起人 ine
  • 开始时间 开始时间
I

ine

Unregistered / Unconfirmed
GUEST, unregistred user!
BCB中有一个函数,其参数为
Func1(wchar_t *s,int i,int i)
{...
}
我试过以下的调用方法:
1.Func1("String1",1,1);
2.
char s[20];
strcpy (s,"String1");
Func1(s,1,1);

效果不佳
请各位帮忙看看;
究竟wchar_t //据说是与unsigned short可转换的数据类型.
怎样可以赋给他一个字符串?
 
call it by L"String1"
 
是否试过WideChar/WideString?
 
wchar_t is Wide Char type,即16bit的字符,比如Unicode,GBK等
Delphi中String通常是AnsiString,8Bit的变长字符串,C语言的字符数组
只能用短字符串表示,但短字符串只能是AnsiChar的定长数组,
所以,可以这样定义:

type
TWideCharLStr = Array[1..20] of Widechar;
function (const str: String): TWideCharLStr;
var
i: integer;
begin
for i := Low(str) to Min(High(str), High(TWideCharLStr) -1)do
result := str;
result[Min(High(TWideCharLStr), Length(str) + 1)] := #0;
end;
...
begin
Func1(AnsiStr2WideLStr('String1'),1,1);
end;

不过你应该把Func1说明为:
function Func1(var s: TWideCharLStr;
....);
 
多人接受答案了。
 
后退
顶部