能力值:
( LV9,RANK:170 )
|
-
-
2 楼
未找到合适的函数,只好用语句自己来完成了.
A:widestring;
B:AnsiString;
i:integer;
begin
b:=ansistring(A); //完成WideString到AnsiString的转换.
i:=ord(B[1])*256+ord(B[2]);
i:=i-65536;
end;
//中间尝试过多个函数,都不好用,本想用integer直接进行数据类型转换.
//可是生成的结果总是不对.原因未找到.
//ole.varadd中,出现的是movsx esi,[**],
//这样到Esi中的值就变成了FFFF****了,我很疑惑,(因为我菜,呵呵),为什么
//转换出来的数据就变了呢,数据类型试过不少,包括SmallInt,都无法完成
//正确的转换结果.
//此种做法的稳定性,我还要明天进行细致的测试才知道是否可靠.如果
//还有问题,我会发上来.如果兄弟们也遇到此类问题,仅供参考吧.
//VB中用的多是wideString类的字符,文字,英文字符,进行转换计算时和
//Delphi的对应不好,因为没有办法.只好自己动手了.
|
能力值:
( LV12,RANK:650 )
|
-
-
3 楼
WideCharToString不行吗?
我没用过,是翻system.pas看到的。
|
能力值:
( LV9,RANK:170 )
|
-
-
4 楼
我试过的,整个为这种转换花了近一天的时间,最后只好自己写程序来完成,另外,在VB中用vbaAnsiValueBstr 来进行转换.
但用上述的方法,搞定了,而且从测试的情况看,效果不错.
支持中文+英文混.
但在用时要求一个区别,英文ansiString之后一个字长,中文是2个字长.
|
能力值:
( LV9,RANK:250 )
|
-
-
5 楼
最初由 nig 发布 在看一个软件时发现: Var1 D001 整型 Var2 1 长整 执行VB的VarAdd 返回 FFFFD002 ........
VarAdd 变体变量相加
VB中的整数是用16位来表示的,因此看返回结果时取低16位就可以了。
高位可能是符号扩展。
|
|
|