char 和widechar之间怎么转换?

xiaokun111 2008-11-05 02:11:01
char(97) = widechar(97)
char(213) <> widechar(213)

widechar(???) ,???怎么写能够和char(213)相等?
...全文
544 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tjg5202 2008-11-05
  • 打赏
  • 举报
回复
学习。。。。。。。
fangsp 2008-11-05
  • 打赏
  • 举报
回复
char(128)以后 为不见字符
xiaokun111 2008-11-05
  • 打赏
  • 举报
回复
I= 109 m
I= 110 n
I= 111 o
I= 112 p
I= 113 q
I= 114 r
I= 115 s
I= 116 t
I= 117 u
I= 118 v
I= 119 w
I= 120 x
I= 121 y
I= 122 z
I= 123 {
I= 124 |
I= 125 }
I= 126 ~
I= 127 
I= 128 €
I= 129 
I= 130 ‚
I= 131 ƒ
I= 132 „
I= 133 …
I= 134 †
I= 135 ‡
I= 136 ˆ
I= 137 ‰
在widechar(128)以后都为奇怪字符 ,而char(128)以后都为空值,我们假设char(135)这个值是正确的,widechar(135) <> char(135)就认为不正确
因为关系到加密算法,2009 和 2006编译同一段代码后运行结果不一样,但2006编译为正确的,这个问题怎么解决? 返回值为string,不能更改
function _Encrypt(const S: string): string;
var I: byte; Key: Word;
begin
Key := cKey;
SetLength(result, length(s));
for I := 1 to Length(S) do
begin
Result[I] := Char(byte(S[I]) xor (Key shr 8));
try Key := (byte(Result[I]) + Key) * cKey1 + cKey2; except end;
end;
end;
fangsp 2008-11-05
  • 打赏
  • 举报
回复
首先
WideChar占两个字节
Char占一个字节
在ASC码值小于128的情况下
Char(i) = WideChar(i)
但是当ASC值大于128的时候
Char(i) <> WideChar(i)
僵哥 2008-11-05
  • 打赏
  • 举报
回复
WideChar和Char(AnsiChar)都是字符.关键要看你是需要在字符的内码相等还是字符相同?

如果要内码相等的话,都强制转成WORD之类的就可以比较了,否则就需要都转成为widechar,当然不是使用WideChar(Char)这样的强制转换.而是通过编码映射.在众多情况下可以使用:
var
wc,wc1: WideChar;
ac: AnsiChar;//Char
begin
ac := #97;
wc := 'a';//这里就不写内码了,其实也是97,多字节字符则会不一样
wc1 := ac;
ShowMessage(BoolToStr( wc1 = wc,true));
end;
swayi21 2008-11-05
  • 打赏
  • 举报
回复
StringToWideChar

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧