s:='#20013#22269#20013#22269#20013#22269#20013#22269#20013#22269#20013#22269#20013#22269#20013' for i:=0 to length(s)/5 begin sn:=strtoint(copy(s,i*6+1,5)) c1:=char(int(sn/256)) c2:=char(sn-c1*256) //c1+c2就是‘中‘ end老汉不会认真写passcal,看懂算法就行了,:)
function WideAscToStr(mWideAsc: string): string; var I: Integer; T: string; begin Result := ''; for I := Length(mWideAsc) downto 1 do if mWideAsc[I] = '#' then begin Result := WideChar(StrToIntDef(T, 0)) + Result; T := ''; end else T := mWideAsc[I] + T; end; { WideAscToStr }procedure TForm1.Button1Click(Sender: TObject); begin Caption := WideAscToStr('#20013#22269'); end;
var pw_test:pWideChar; begin pw_test:=new(pwidechar); pw_test^:=#20013; showmessage(widechartostring(pw_test)); end; 对每一组UNICODE进行处理即可得到每一个汉字。 我已经在NT4+D5测试通过!
chr()即可
如果是unicode
则用api函数转换一下
for i:=0 to length(s)/5
begin
sn:=strtoint(copy(s,i*6+1,5))
c1:=char(int(sn/256))
c2:=char(sn-c1*256)
//c1+c2就是‘中‘
end老汉不会认真写passcal,看懂算法就行了,:)
label1.Caption = ChrW(20013) & ChrW(22269)
label1.Caption = AscW("中") & AscW("国")
试试是不是能满足你的要求??
var
I: Integer;
T: string;
begin
Result := '';
for I := Length(mWideAsc) downto 1 do
if mWideAsc[I] = '#' then begin
Result := WideChar(StrToIntDef(T, 0)) + Result;
T := '';
end else T := mWideAsc[I] + T;
end; { WideAscToStr }procedure TForm1.Button1Click(Sender: TObject);
begin
Caption := WideAscToStr('#20013#22269');
end;
begin
pw_test:=new(pwidechar);
pw_test^:=#20013;
showmessage(widechartostring(pw_test));
end;
对每一组UNICODE进行处理即可得到每一个汉字。
我已经在NT4+D5测试通过!
procedure ObjectBinaryToText(Input, Output: TStream);
procedure ObjectTextToBinary(Input, Output: TStream);
如果要得到dfm的内容,可以用一下这几个函数。
帮助中带有例子