如何将BYTE转换成中文?急急急!!!!1

Paul_Ni 2003-12-11 12:20:51
我在DELPHI中将中文拆成ARRAY OF BYTE,再想将它转换回去,就出现问题了。
希望高手指点我如何将ARRAY OF BYTE再转换成中文,在线等,谢谢!!!
以下是代码:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TByteArr = array of byte;
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Memo1: TMemo;

procedure Button1Click(Sender: TObject);
private


public


end;

var
Form1: TForm1;


implementation

{$R *.dfm}

function ArrOfByte(AStr: String): TByteArr;
var
i: integer;
begin
SetLength( Result, Length(AStr));
for i := 0 to Length(AStr) - 1 do begin
Result[i] := ord(AStr[i+1]) ;
end;

end;


procedure TForm1.Button1Click(Sender: TObject);
var
arrTest : TByteArr;
i, j : integer;
charTest :array of char;
ss, s : string;
begin
edit1.Text:='';
arrTest := ArrOfByte(edit2.text);
for i:=0 to length(arrTest)-1 do begin
Edit1.text := Edit1.text + inttostr(arrTest[i])+' ';
end;

edit4.text := inttostr(length(arrTest));

Setlength(charTest,length(arrTest));
for i:=1 to length(arrTest) do begin
//charTest[i] := chr(arrTest[i]);
//memo1.lines.add(Chr(dec(0D)) + Chr(dec(2A)));
s := chr(arrTest[2*(i-1)])+chr(arrTest[2*(i-1)-1]);
//memo1.lines.add(chr(arrTest[2*i])+chr(arrTest[2*i-1]));
memo1.lines.add(s);
{charTest[i] := arrTest[i];}
end;

for i:=0 to length(arrTest)-1 do begin
edit3.Text := edit3.Text + charTest[i];
end;


end;

end.
...全文
129 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyforlove 2003-12-11
  • 打赏
  • 举报
回复
用ord拆开,用chr合并,有什么问题?
如果出现中英文混排,或者半角符号的话,还需要判断。
zsjzwj 2003-12-11
  • 打赏
  • 举报
回复
不会,BYTE是数值型,要转为中文! GZ
delphipan 2003-12-11
  • 打赏
  • 举报
回复
同上
bluz 2003-12-11
  • 打赏
  • 举报
回复
程序写错了,把button事件改一下
需要说明的是,如果是中英文混排文字,还是会出错,因为长度是奇数,下面代码没有考虑这种情况
procedure TForm1.Button1Click(Sender: TObject);
var
arrTest : TByteArr;
i, j : integer;
charTest :array of char;
ss, s : string;
begin
edit1.Text:='';
arrTest := ArrOfByte(edit2.text);
for i:=0 to length(arrTest)-1 do begin
Edit1.text := Edit1.text + inttostr(arrTest[i])+' ';
end;

edit4.text := inttostr(length(arrTest));

Setlength(charTest,length(arrTest));
for i:=1 to (length(arrTest) div 2) do begin
//charTest[i] := chr(arrTest[i]);
//memo1.lines.add(Chr(dec(0D)) + Chr(dec(2A)));
s := chr(arrTest[2*(i-1)])+chr(arrTest[2*(i-1)+1]);
//memo1.lines.add(chr(arrTest[2*i])+chr(arrTest[2*i-1]));
memo1.lines.add(s);
{charTest[i] := arrTest[i];}
end;

for i:=0 to length(arrTest)-1 do begin
edit3.Text := edit3.Text + charTest[i];
end;

end;
Paul_Ni 2003-12-11
  • 打赏
  • 举报
回复
合并出来的字符和原来的中文字符不一样了
你能不能给个例子来说明如何使用ORD拆开,CHR合并

5,387

社区成员

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

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