在Memo中选定一段文字可以参见Delphi的Demo程序TextEdit.dpr, 在此不多谈. 我只说一下怎样从一个字符串里面提取出汉字并且得到汉字德国标码.
假设选定的文字为SS, 我们先将他转换成一个WideString WS, 然后把WS当成一个从
1开始的数组长度为Length(WS);
做一个循环, 一次取出WS数组的一个元素作为一个
字符串S, 如果Length(S)>1, 则S为一个汉字, 用后面给出的GBCode函数可以得出其
国标码.
var
GBCodeArray: array [0..255] of UINT;
GBCodeArrayLength: word;
function GBCode(value:string): UINT;
begin
if Length(value)=1 then
Result:=Ord(Value[1])
else
if Length(value) > 1 then
begin
if Value[1] in LeadBytes then
Result := (Ord(Value[1]) shl 8 ) or Ord(Value[2])
else
begin
Raise(Exception.Create(value+'不是合法的中西文字符!'));
Exit;
end;
end;
end;
procedure GetGBCodes(SS: String);
var
WS: WideString;
S: String;
i: integer;
begin
WS := SS;
for i:=1 to Length(WS)do
begin
S:=WS;
if Length(S)=1 then
GBCodeArray[i-1]:=Ord(Char(S[1]))
else
GBCOdeArray[i-1]:=GBCode(S);
end;
GBCodeArrayLength := Length(WS);
end;
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
memo1.Clear;
GetGBCOdes(edit1.text);
for i:= 0 to GBCodeArrayLength-1do
memo1.Lines.Add(IntToStr(GBCodeArray));
end;