vb里的ascw函数,delphi怎么实现,或者delphi能调用vb的dll吗?(100分)

盛利

Unregistered / Unconfirmed
GUEST, unregistred user!
vb有个ascw函数是取得 Unicode 字符代码,在在 DBCS 系统下,则为 -32768 – 32767
function TForm1.AnsiToUnicode(Ansi: string): string;
var
s: string;
i: integer;
j, k: string[2];
a: array[1..1000] of char;
begin
s := '';
StringToWideChar(Ansi, @(a[1]), 500);
i := 1;
while ((a <> #0) or (a[i + 1] <> #0)) do
begin
j := IntToHex(Integer(a), 2);
k := IntToHex(Integer(a[i + 1]), 2);
s := s + k + j;
i := i + 2;
end;
Result := s;
end;
在网上找的上面这段代码,很多汉字转变到Unicode 字符代码是正确的,但我发现Unicode 字符
代码为负的都转变错误,有谁能有办法,或者帮我修改,对于这个我是一点都不会阿!
还有vb编的dll能被delphi调用吗?
 
可以举个转换错误的例子吗?
 
'酒'字错误
应该是-28334
 
原因在于一个是16进制显示的,一个是十进制显示的。那个函数其实是以十六进制显示的。
format('%x',[WORD(-28334)]);
正是$9152
 
Smallint($9152) = -28334
 
接受答案了.
 
顶部