试一下吧,不知行不行。
function DecodeChinese(InputStr:string):string;
var
Buf:Array[0..299] of WideChar;
i:integer;
begin
While(i<Length(InputStr)-1) do
begin
Buf[round(i/4)]:=WideChar(StrToInt('0x'+Copy(InputStr,i+1,4)));
inc(i,4);
end;
Buf[round(Length(InputStr)/4)]:=WideChar(0);
Result:=WideCharToString(Buf);
end;
function DecodeChinese(InputStr:string):string;
var
Buf:Array[0..299] of WideChar;
i:integer;
begin
While(i<Length(InputStr)-1) do
begin
Buf[round(i/4)]:=WideChar(StrToInt('0x'+Copy(InputStr,i+1,4)));
inc(i,4);
end;
Buf[round(Length(InputStr)/4)]:=WideChar(0);
Result:=WideCharToString(Buf);
end;
解决方案 »
- 自己做个通信软件,可以向手机发送短信的
- 在QLQuery1数据集控件,在不移动记录(next 等操作)的情况下获取当前字段以外的内容
- 关于SQL备份问题,此码何处有问题!?
- 如何在DELPHI应用项目中的空闲事件中写脚本?在线等。。。
- 在线等候:怎样让MEMO控件的滑块随文字的增多自动滚屏?
- 有关指定窗体上面的控件的句柄?
- Rave for D7 的问题
- 一个考勤时间问题,紧急求助!
- Delphi操作Access的简单问题,盼!
- 请问对于像FOXMAIL这样的使用自己做的数据库的,怎么做个自己的数据库?
- 怎 样 将 d b g r i d 设 为 每 一 行 不 同 的 颜 色 ? 求 加 密 、 解 密 算 法
- 请问在delphi中如何实现超级链结的功能,比如一点label1框就弹出ie转向www.sohu.com
胡乱的翻译了一把
仅供参考
敬请高人指点
function DecodeChinese(InputStr: String): String;
var
Buf: array[0..299] of WideChar;
i : Integer;
iLen : Integer;
begin
iLen := Length(InputStr);
i := 1;
while i < iLen + 1 do
begin
Buf[i div 4] := WideChar(Chr(StrToInt('$' + Copy(InputStr, i, 4))));
i := i + 4;
end;
Buf[iLen + 1] := #0;
Result := WideCharToString(Buf);
end;如果不对,给出一个可以测试的例子,我在改
然后把输入字符串的每4个字符加上‘0X’,并转换成整数写入buffer中,
Buf[InputStr.Length()/4]=0;这一句不懂,然后WideCharToString返回结果
var
buf: array [0..299] of WideChar;
P,TempP:PWideChar;
i:Integer;
L:Integer;
begin
L:=Length(InputStr);
i:=0;
while i< L do
begin
P:=@Buf[i div 4];
P:=StringToWideChar(IntToStr(StrToInt('$'+copy(InputStr,i+1,4))),TempP,4);
i:=i+4;
end;
Buf[L div 4]:='0';
P:=Buf;
result:= P;
end;
这个函数是用来进行编码变换,大体过程跟cobi说的差不多,
我也不太清楚具体的算法,所以请大家看看根据这段CB程序,能不能找到什么规律
下面是它的反算函数,即将GB2312的中文编码的函数转化为CP936的Unicode编码,
希望对大家能有帮助
function EncodeChinese(var s:WideString):String;
var
i,len:Integer;
cur:Integer;
t:String;
begin
Result:='';
len:=Length(s);
i:=1;
while i<=len do
begin
cur:=ord(s[i]);
//BCD转换
FmtStr(t,'%4.4x',[cur]);
Result:=Result+t;
inc(i);
end;
end;
var
i:integer;
begin
Result := '';
While(i<Length(InputStr)-1) do
begin
Result := Result +
WideCharToString(WideChar(StrToInt('$'+Copy(InputStr,i+1,4))));
inc(i,4);
end;
end;
现在写出来与各位共享。
函数如下
function DecodeChinese(InputStr: string): string;
var
Buf:Array[0..299] of WideChar;
i:integer;
begin
i:=0 ;
while(i<Length(InputStr))do
begin
Buf[(i div 4)]:=WideChar(StrToInt('0x'+Copy(InputStr,i+1,4)));
inc(i,4);
end;
Buf[Length(InputStr)div 4]:=WideChar(0);
result:=WideCharToString(Buf);
end;该函数可能还不太强健,仅供参考。我现在正在做中文短信息方面的东西,
如果有同行的朋友,可以留下联系方法,大家交流:
我的信箱: [email protected]
现在写出来与各位共享。
函数如下
function DecodeChinese(InputStr: string): string;
var
Buf:Array[0..299] of WideChar;
i:integer;
begin
i:=0 ;
while(i<Length(InputStr))do
begin
Buf[(i div 4)]:=WideChar(StrToInt('0x'+Copy(InputStr,i+1,4)));
inc(i,4);
end;
Buf[Length(InputStr)div 4]:=WideChar(0);
result:=WideCharToString(Buf);
end;该函数可能还不太强健,仅供参考。我现在正在做中文短信息方面的东西,
如果有同行或感兴趣的朋友,可以留下联系方法,大家交流:
我的信箱: [email protected]