S
siaosa
Unregistered / Unconfirmed
GUEST, unregistred user!
有没有使程序界面自动简繁转换的控件?
在繁体系统程序显示繁体字,在简体系统显示简体字
我用GBToBig5函数转换Edit1.Text能够正常将体转换成繁体,但转换Label1.Caption乱码,转换过程如下
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:=GBToBig5(Edit1.Text); //在繁体系统中正常显示繁体字
Label1.Caption:=GBToBig5(Label1.Caption); //在繁体系统中乱码
end;
这是为什么?
找不到控件自己找了个简体转换繁体函数
function GBToBig5(GBStr : String): AnsiString;
{进行GB转BIG5内码}
var
Len: Integer;
pGBCHTChar: PChar;
pGBCHSChar: PChar;
pUniCodeChar: PWideChar;
pBIG5Char: PChar;
begin
pGBCHSChar := PChar(GBStr);
Len := MultiByteToWideChar(936,0,pGBCHSChar,-1,nil,0);
GetMem(pGBCHTChar,Len*2+1);
ZeroMemory(pGBCHTChar,Len*2+1);
//GB CHS -> GB CHT
LCMapString($804,LCMAP_TRADITIONAL_CHINESE,pGBCHSChar,-1,pGBCHTChar,Len*2);
GetMem(pUniCodeChar,Len*2);
ZeroMemory(pUniCodeChar,Len*2);
//GB CHT -> UniCode
MultiByteToWideChar(936,0,pGBCHTChar,-1,pUniCodeChar,Len*2);
Len := WideCharToMultiByte(950,0,pUniCodeChar,-1,nil,0,nil,nil);
GetMem(pBIG5Char,Len);
ZeroMemory(pBIG5Char,Len);
//UniCode -> Big5
WideCharToMultiByte(950,0,pUniCodeChar,-1,pBIG5Char,Len,nil,nil);
Result := String(pBIG5Char);
FreeMem(pBIG5Char);
FreeMem(pGBCHTChar);
FreeMem(pUniCodeChar);
end;
在繁体系统程序显示繁体字,在简体系统显示简体字
我用GBToBig5函数转换Edit1.Text能够正常将体转换成繁体,但转换Label1.Caption乱码,转换过程如下
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:=GBToBig5(Edit1.Text); //在繁体系统中正常显示繁体字
Label1.Caption:=GBToBig5(Label1.Caption); //在繁体系统中乱码
end;
这是为什么?
找不到控件自己找了个简体转换繁体函数
function GBToBig5(GBStr : String): AnsiString;
{进行GB转BIG5内码}
var
Len: Integer;
pGBCHTChar: PChar;
pGBCHSChar: PChar;
pUniCodeChar: PWideChar;
pBIG5Char: PChar;
begin
pGBCHSChar := PChar(GBStr);
Len := MultiByteToWideChar(936,0,pGBCHSChar,-1,nil,0);
GetMem(pGBCHTChar,Len*2+1);
ZeroMemory(pGBCHTChar,Len*2+1);
//GB CHS -> GB CHT
LCMapString($804,LCMAP_TRADITIONAL_CHINESE,pGBCHSChar,-1,pGBCHTChar,Len*2);
GetMem(pUniCodeChar,Len*2);
ZeroMemory(pUniCodeChar,Len*2);
//GB CHT -> UniCode
MultiByteToWideChar(936,0,pGBCHTChar,-1,pUniCodeChar,Len*2);
Len := WideCharToMultiByte(950,0,pUniCodeChar,-1,nil,0,nil,nil);
GetMem(pBIG5Char,Len);
ZeroMemory(pBIG5Char,Len);
//UniCode -> Big5
WideCharToMultiByte(950,0,pUniCodeChar,-1,pBIG5Char,Len,nil,nil);
Result := String(pBIG5Char);
FreeMem(pBIG5Char);
FreeMem(pGBCHTChar);
FreeMem(pUniCodeChar);
end;