Просмотр полной версии : хз как это вбить в поиск)
supernewbie
11.05.2010, 01:18
Как можно в l2phx сделать так, чтобы он читал текст в юникоде и узнавал его размер? Чтобы потом отступить это значение...
PS в основном это понадобится при чтении userinfo, при разных никах и титулах.
я думаю вам надо это
procedure UserInfo;
var
i, CubicsSize, tmpCharObjectId: integer;
tmpMyName, tmpMyTitle: string;
begin
tmpCharObjectId:=ReadD(18);
if CharObjectId=0 then CharObjectId:=tmpCharObjectId;
case tmpCharObjectId of
CharObjectId:
begin
MyCorX:=ReadD(2);
MyCorY:=ReadD(6);
MyCorZ:=ReadD(10);
i:=22;
tmpMyName:=ReadS(i);
i:=i+48;
MaxHP:=ReadD(i);
CurHP:=ReadD(i);
MaxMP:=ReadD(i);
CurMP:=ReadD(i);
i:= 552 + length(tmpMyName) * 2;
tmpMyTitle:=ReadS(i);
i:= i + 31;
CubicsSize:= ReadH(i);
i:= i + 28 + (CubicsSize * 2);
MaxCP:=ReadD(i);
CurCP:=ReadD(i);
end;
end;
end;
автор Vilson
PS: если я не ошибаюсь то текст в ANSI, а не в юникоде
supernewbie
11.05.2010, 01:38
блин) чуть-чуть понял) было бы лучше если бы было с комментами там чтоли, с описанием...
Добавлено через 1 минуту
length(tmpMyName) это как бы длинна имени, я правельно понял?
Функция Length возвращает число элементов в массиве или строке. Возвращает или число символов в SourceString, или число элементов в SourceArray. Массивы, по умолчанию, начинаются с индекса = 0. Так что длина такого массива на 1 меньше чем самый высокий индекс.
supernewbie
11.05.2010, 01:50
по-русски пож(
Ну на примере покажу.
s:string;
s:='12345'
Length(s) = 5 //пять символов
s:='01234'
Length(s) = 5 //опять пять символов
s:='фыва'
Length(s) = 4 //четыре символа
supernewbie
11.05.2010, 10:01
короче чтобы узнать кол-во бит пользуюсь этим...
MyName:=ReadS(22);
MyNameLength:=(length(MyName) * 2 + 1 * 2);
Добавлено через 2 минуты
спс за помощь)
короче чтобы узнать кол-во бит пользуюсь этим...
MyName:=ReadS(22);
MyNameLength:=(length(MyName) * 2 + 1 * 2);
Добавлено через 2 минуты
спс за помощь)
Для количества бит еще и на 8 надо умножить ;)
А вообще длинна Unicode_cтроки = длина_ANSI_строки * 2 + 2 байта
Prixmegently
11.05.2010, 13:52
Юникод строка = анси строка * 2, ибо анси нуль терминированная строка тоже имеет нуль символ в конце.
supernewbie
11.05.2010, 15:41
Для количества бит еще и на 8 надо умножить ;)
ну значит байт)
vBulletin® v3.6.11, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot