PDA

Просмотр полной версии : Как найти число?)


dyh9l
01.12.2010, 13:24
Нужно найти число в дальнейшем вывести его в Edit
сам пакет:
0F A5 65 10 48 3C 00 68 00 74 00 6D 00 6C 00 3E 00 3C 00 62 00 6F 00 64 00 79 00 3E 00 3C 00 62 00 72 00 3E 00 54 00 68 00 65 00 72 00 65 00 20 00 61 00 72 00 65 00 20 00 31 00 38 00 20 00 47 00 72 00 61 00 6E 00 64 00 20 00 4F 00 6C 00 79 00 6D 00 70 00 69 00 61 00 64 00 20 00 70 00 6F 00 69 00 6E 00 74 00 73 00 20 00 67 00 72 00 61 00 6E 00 74 00 65 00 64 00 20 00 66 00 6F 00 72 00 20 00 74 00 68 00 69 00 73 00 20 00 65 00 76 00 65 00 6E 00 74 00 2E 00 3C 00 62 00 72 00 3E 00 3C 00 61 00 20 00 61 00 63 00 74 00 69 00 6F 00 6E 00 3D 00 22 00 62 00 79 00 70 00 61 00 73 00 73 00 20 00 2D 00 68 00 20 00 6D 00 65 00 6E 00 75 00 5F 00 73 00 65 00 6C 00 65 00 63 00 74 00 3F 00 61 00 73 00 6B 00 3D 00 2D 00 35 00 31 00 26 00 72 00 65 00 70 00 6C 00 79 00 3D 00 30 00 22 00 3E 00 52 00 65 00 74 00 75 00 72 00 6E 00 3C 00 2F 00 61 00 3E 00 3C 00 2F 00 62 00 6F 00 64 00 79 00 3E 00 3C 00 2F 00 68 00 74 00 6D 00 6C 00 3E 00 0D 00 0A 00 00 00 00 00 00 00
расшифровка:
Tèï: 0x0F (NpcHtmlMessage)
Pàçìåð: 319+2
Âðåìÿ ïðèõîäà: 12:12:27:125
0002 d MessageID: 1209034149 (0x481065A5)
0006 s HTML: <html><body><br>There are 18 Grand Olympiad points granted for this event.<br><a action="bypass -h menu_select?ask=-51&reply=0">Return</a></body></html>

013C d d: 0 (0x00000000)
Нужно найти число 18 после There are.
Я пробывал переводить 18 в стринг получилось 31 38, но в пакете я такого не вижу)

Добавлено через 3 минуты
А, во, я его нашел) 31 00 38, тока как теперь из 31 00 38 сделать 18 скриптом?) и вывести результат?) Есть функция?

J-Fobos
01.12.2010, 14:35
Edit1.text:=IntToStr(ReadD(*));

dyh9l
01.12.2010, 14:40
хм.., это мысль, но та стока ненужного текста, я бы хотел оставить только кол-во очков.

kolr
01.12.2010, 14:49
может сделать масив и выпивать от конца There are до начала Grand Olympiad

J-Fobos
01.12.2010, 14:59
var
s:string;
//................
s:=ReadS(*);
Edit1.text:=copy(s,*,*);

dyh9l
01.12.2010, 15:29
var
s:string;
//................
s:=ReadS(*);
Edit1.text:=copy(s,*,*);
хм ну первую звездочку я понимаю что s:=ReadS(6); а другие две?

Добавлено через 24 минуты
up)

RangerX
01.12.2010, 16:03
хм ну первую звездочку я понимаю что s:=ReadS(6); а другие две?


Вероятно
s := copy(s,11,5);
т.е. получить текст, начиная с 11 позиции в строке s (после There are) длиной 5 символов (а сколько максимум очков могут дать? если больше 99999, то надо поставить 6 или более).
s := Copy(s, 1, Pos(' ', s) - 1);
а тут получаем из строки типа 18 Grand только число 18 (т.е. подстроку до первого пробела)
Ну и в итоге:
Edit1.Text := s;

dyh9l
01.12.2010, 16:06
Вероятно
s := copy(s,11,5);
т.е. получить текст, начиная с 11 позиции в строке s (после There are) длиной 5 символов (а сколько максимум очков могут дать? если больше 99999, то надо поставить 6 или более).
s := Copy(s, 1, Pos(' ', s) - 1);
а тут получаем из строки типа 18 Grand только число 18 (т.е. подстроку до первого пробела)
Ну и в итоге:
Edit1.Text := s;
звучит убеждающий) надо раз 15-20 перечитать чтоб понять тока )

RangerX
01.12.2010, 16:11
ну в итоге код принимает вид:
var
s:string;
//................
s := ReadS(6);
s := copy(s,11,5);
s := Copy(s, 1, Pos(' ', s) - 1);
Edit1.Text := s;

dyh9l
01.12.2010, 18:11
ну в итоге код принимает вид:
var
s:string;
//................
s := ReadS(6);
s := copy(s,11,5);
s := Copy(s, 1, Pos(' ', s) - 1);
Edit1.Text := s;
у тебя есть аська?)

Добавлено через 1 час 56 минут
оп-оп, немного пошоманил заработало