监测系统是简体还是繁体
case GetOEMCP() of
936:
begin
showmessage('简体')
end;
950:
begin
showmessage('繁体')
end;
end;
------------------------------------------------------
//简体转换为繁体的函数
function GB2312ToBIG5(GB2312Str: string): AnsiString;
var
iLen: Integer;
PGBCHSStr: PChar; //GB编码的简体字符
PGBCHTStr: PChar; //GB编码的繁体字符
PUnicodeChar: PWideChar; //Unicode编码的字符
PBIG5Str: PChar; //BIG5编码的字符
begin
PGBCHSStr:=PChar(GB2312Str);
iLen:=MultiByteToWideChar(936,0,PGBCHSStr,-1,nil,0); //计算转换的字符数
GetMem(PGBCHTStr,iLen*2+1); //分配内存
LCMapString($0804,LCMAP_TRADITIONAL_CHINESE,PGBCHSStr,-1,PGBCHTStr,iLen*2); //转换GB码简体到GB码繁体
GetMem(PUnicodeChar,iLen*2); //分配内存
MultiByteToWideChar(936,0,PGBCHTStr,-1,PUnicodeChar,iLen); //转换GB码到Unicode码
iLen:=WideCharToMultiByte(950,0,PUnicodeChar,-1,nil,0,nil,nil);
GetMem(PBIG5Str,iLen);
WideCharToMultiByte(950,0,PUnicodeChar,-1,PBIG5Str,iLen,nil,nil);
// Result:=string(PBIG5Str);
Result:=string(PGBCHTStr);
FreeMem(PBIG5Str);
FreeMem(PUnicodeChar);
FreeMem(PGBCHTStr);
end;
---------------------------------------------------------------
简繁体互换
function UnicodeEncode(Str:string;CodePage:integer):WideString;
var
Len:integer;
begin
Len:=Length(Str)+1;
SetLength(Result,Len);
Len:=MultiByteToWideChar(CodePage,0,PChar(Str),-1,PWideChar(Result),Len);
SetLength(Result,Len-1); //end is #0
end;
function UnicodeDecode(Str:WideString;CodePage:integer):string;
var
Len:integer;
begin
Len:=Length(Str)*2+1; //one for #0
SetLength(Result,Len);
Len:=WideCharToMultiByte(CodePage,0,PWideChar(Str),-1,PChar(Result),Len,nil,nil);
SetLength(Result,Len-1);
end;
function Gb2Big5(Str:string):string;
begin
SetLength(Result,Length(Str));
LCMapString(GetUserDefaultLCID,LCMAP_TRADITIONAL_CHINESE,
PChar(Str),Length(Str),
PChar(Result),Length(Result));
Result:=UnicodeDecode(UnicodeEncode(Result,936),950);
end;
function Big52Gb(Str:string):string;
begin
Str:=UnicodeDecode(UnicodeEncode(Str,950),936);
SetLength(Result,Length(Str));
LCMapString(GetUserDefaultLCID,LCMAP_SIMPLIFIED_CHINESE,
PChar(Str),Length(Str),
PChar(Result),Length(Result));
end;