虚
虚心实腹
Unregistered / Unconfirmed
GUEST, unregistred user!
这段代码是把string 的短信内容先转换为unicode的,然后再高低位互换,
但是运行后,先是可以转换,但当内容有变化时,比如:测试, 变为:测试1,再改为:测试1ds,就会报错,程序会被系统关闭. 一直查不出问题所在,请各位大侠指点....! 谢谢
Function str2Ucs2(const pSrcchar
pDstchar;nSrcLength:integer) :integer;
var
nDstLength,i:integer;
wchartemp: array [0..69] of widechar ;
begin
fillchar(wchartemp,140,0);
nDstLength :=MultiByteToWideChar(CP_ACP, 0, pSrc, nSrcLength, wchartemp, 70);
for i :=0 to nDstLength-1 do
begin
pDst[2*i]:=char(hi(ord(wchartemp)))
// 先输出高位字节
pDst[2*i+1]:=char(lo(ord(wchartemp)))
// 后输出低位字节
end;
result:=nDstLength*2;
end;
但是运行后,先是可以转换,但当内容有变化时,比如:测试, 变为:测试1,再改为:测试1ds,就会报错,程序会被系统关闭. 一直查不出问题所在,请各位大侠指点....! 谢谢
Function str2Ucs2(const pSrcchar
pDstchar;nSrcLength:integer) :integer;
var
nDstLength,i:integer;
wchartemp: array [0..69] of widechar ;
begin
fillchar(wchartemp,140,0);
nDstLength :=MultiByteToWideChar(CP_ACP, 0, pSrc, nSrcLength, wchartemp, 70);
for i :=0 to nDstLength-1 do
begin
pDst[2*i]:=char(hi(ord(wchartemp)))
// 先输出高位字节
pDst[2*i+1]:=char(lo(ord(wchartemp)))
// 后输出低位字节
end;
result:=nDstLength*2;
end;