昨天装了win7,到老陈开服的五职业版去玩了一会,显示人数1,只有我一人?玩了大概半个小时,觉得索然无味。
学习这代码,也是没有什么爱好了,或者说想爱好的那钱支持不起。
procedure TDrawScreen.AddChatBoardString (str: string; fcolor, bcolor: integer);
var
i, len, aline: integer;
dline, temp: string;
const
BOXWIDTH = (SCREENWIDTH div 2 - 214) * 2{374};
begin
len := Length (str);
temp := '';
i := 1;
while TRUE do begin
if i > len then break;
if byte (str[i]) >= 128 then begin
temp := temp + str[i];
Inc (i);
if i <= len then temp := temp + str[i]
else break;
end else
temp := temp + str[i];
aline := FrmMain.Canvas.TextWidth (temp);
if aline > BOXWIDTH then begin
ChatStrs.AddObject (temp, TObject(fcolor));
ChatBks.Add (Pointer(bcolor));
str := Copy (str, i+1, Len-i);
temp := '';
break;
end;
Inc (i);
end;
if temp <> '' then begin
ChatStrs.AddObject (temp, TObject(fcolor));
ChatBks.Add (Pointer(bcolor));
str := '';
end;
if ChatStrs.Count > 200 then begin
ChatStrs.Delete (0);
ChatBks.Delete (0);
if ChatStrs.Count - ChatBoardTop < VIEWCHATLINE then Dec(ChatBoardTop);
end else if (ChatStrs.Count-ChatBoardTop) > VIEWCHATLINE then begin
Inc (ChatBoardTop);
end;
if str <> '' then
AddChatBoardString (' ' + str, fcolor, bcolor);
end;
这个方法功能大概是将字符串按照聊天板的宽度切段显示,
字符串哦,大概就是小128的为英文字符,一次切1个,大128的为汉字字符,一次切2个。
网上查了不少资料,搞明白了,这个是ANIS字符串,不是ufi-8。 |