Чтение из файла на сервере и парсинг
|
|
YURIY | Дата: Понедельник, 15 Июня 2009, 15:42 | Сообщение # 31 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Quote (Nova) Список обновляется лишь однократно Вам нужно обновлять список через определённый промежуток времени? Смотрите команду ScriptTimer в справке.
Вечная память Андрею Сергееву!
|
|
| |
Nova | Дата: Понедельник, 15 Июня 2009, 18:35 | Сообщение # 32 |
Любопытный
Группа: Проверенные
Сообщений: 31
Репутация: 0
Награды: 0
Статус: Offline
| Нет! У меня же есть кнопка "Кто онлайн". По нажатии на нее все показывается, это отлично. А по нажатии второй раз показываются старые данные!
|
|
| |
YURIY | Дата: Понедельник, 15 Июня 2009, 18:50 | Сообщение # 33 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Quote (Nova) А по нажатии второй раз показываются старые данные! Можно только догадываться, что не так... Предоставьте сценарий этой кнопки - посмотрю.
Вечная память Андрею Сергееву!
|
|
| |
Nova | Дата: Понедельник, 15 Июня 2009, 18:52 | Сообщение # 34 |
Любопытный
Группа: Проверенные
Сообщений: 31
Репутация: 0
Награды: 0
Статус: Offline
| Code Refresh("") ged$='Загружается обновление...' DisplayValue("Text","ged$") Pause("200") Hide("Info") Hide("Info_list") Show("online_box") Show("online_list") FromLin e1=17 FromLine2=18 FromLine3=19 FromLine4=20 URL$='http://80.251.126.41/index.html' PluginSet("Internet","URL$") PluginRun("Internet","URL") Dest$ = 'C:\online.txt' PluginSet("Internet","Dest$") PluginRun("Internet","Download") For Runner1=1 To 50 text$='C:\online.txt' NumOfLines=1 RetString$=StrFromFile(text$,FromLine1,NumOfLines) a$=RetString$ a$=StrDel(a$,1,1) a=POS(>,a$)+1 b=POS(<,a$) c=b-a a$=StrCopy(a$,a,c) string$=a$ FromString$='<' ToString$='<' a$=StrChange(string$,FromString$,ToString$) string$=a $ FromString$='>' ToString$='>' a$=StrChange(string$,FromString$,ToString$) If (a$='/TABLE>') Then a$='' End If (a$='TD CLASS=name></TD>') Then a$='' End onliner$[all1+1]=a$ all1=all1+1 runner1=runner1+1 FromLine1=FromLine1+6 Next Runner1 For Runner2=1 To 50 text$='C:\online.txt' NumOfLines=1 RetString$=StrFromFile(text$,FromLine2,NumOfLines) a$=RetString$ a$=StrDel(a$,1,1) a=POS(>,a$)+1 b=POS(<,a$) c=b-a a$=StrCopy(a$,a,c) If (a$='/BODY>') Then a$='' End lvler$[all2+1]=a$ all2=all2+1 runner2=runner2+1 FromLine2=FromLine2+6 Next Runner2 For Runner3=1 To 50 text$='C:\online.txt' NumOfLines=1 RetString$=StrFromFile(text$,FromLine3,NumOfLines) a$=RetString$ a$=StrDel(a$,1,1) a=POS(>,a$)+1 b=POS(<,a$) c=b-a a$=StrCopy(a$,a,c) If (a$='/HTML>') Then a$='' End locker$[all3+1]=a$ all3=all3+1 runner3=runner3+1 FromLine3=FromLine3+6 Next Runner3 For Runner4=1 To 50 text$='C:\online.txt' NumOfLines=1 RetString$=StrFromFile(text$,FromLine4,NumOfLines) a$=RetString$ a$=StrDel(a$,1,1) a=POS(>,a$)+1 b=POS(<,a$) c=b-a a$=StrCopy(a$,a,c) shiper$[all4+1]=a$ all4=all4+1 runner4=runner4+1 FromLine4=FromLine4+6 Next Runner4 For z=1 To 50 If (onliner$[z]='') Then lol$=lol$+'' If (onliner$[1]='') Then lol$='На сервере сейчас нет игроков.' End Else lol$=lol$+CHAR(z)+') '+onliner$[z]+', уровень: '+lvler$[z]+', система: '+locker$[z]+', корабль: '+shiper$[z]+CHR(13)+CHR(10) End z=z+1 Next z DisplayValue("online_list","lol$") red$='Готово' DisplayValue("Text","red$") Refresh("")
|
|
| |
YURIY | Дата: Понедельник, 15 Июня 2009, 18:52 | Сообщение # 35 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| о-ё-ё... P. S. опять?
Вечная память Андрею Сергееву!
|
|
| |
Nova | Дата: Понедельник, 15 Июня 2009, 18:57 | Сообщение # 36 |
Любопытный
Группа: Проверенные
Сообщений: 31
Репутация: 0
Награды: 0
Статус: Offline
| В скрипте все нормально, это юкоз в пост пробелы добавляет.
|
|
| |
YURIY | Дата: Понедельник, 15 Июня 2009, 19:04 | Сообщение # 37 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Впрочем, такое присваивание в MMB работает. Не смотрел пока скрипт, есть маленький вопрос. На html страничке выше написано: Quote 20 players online, updated 15.06.2009 18:58:21 - Generated by IONCROSS Freelancer Server Operator mk.V.1 -- JoeBoomz Сейчас время - 19:03. Разве удивительно, что при повторном нажатии вашей кнопки данные прежние? Список-то обновляется раз в 5 минут, чтобы не повесить сервер!
Вечная память Андрею Сергееву!
|
|
| |
Nova | Дата: Понедельник, 15 Июня 2009, 19:15 | Сообщение # 38 |
Любопытный
Группа: Проверенные
Сообщений: 31
Репутация: 0
Награды: 0
Статус: Offline
| Quote (YURIY) Сейчас время - 19:03. Разве удивительно, что при повторном нажатии вашей кнопки данные прежние? Список-то обновляется раз в 5 минут, чтобы не повесить сервер! Когда он меняется там, в программе ничего не меняется. Я, разумеется, дожидался обновления списка на той странице. Я даже удалял файл online.txt, он не качает новый, а создает со старыми данными! Обновляется все только при первом нажатии на "Кто онлайн", приходится перезапускать прогу.
Сообщение отредактировал Nova - Понедельник, 15 Июня 2009, 19:15 |
|
| |
YURIY | Дата: Понедельник, 15 Июня 2009, 19:38 | Сообщение # 39 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Проблема в плагине. Сейчас покопаем...
Вечная память Андрею Сергееву!
|
|
| |
Nova | Дата: Понедельник, 15 Июня 2009, 19:41 | Сообщение # 40 |
Любопытный
Группа: Проверенные
Сообщений: 31
Репутация: 0
Награды: 0
Статус: Offline
| Я еще пробовал генерацию случайных имен файла, тоже безрезультатно..
|
|
| |
YURIY | Дата: Понедельник, 15 Июня 2009, 20:21 | Сообщение # 41 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| В общем, пока не нашёл альтернативного решения. Хотел попробовать без плагинов получить код страницы - пока не получается. Скачал этот плагин и понял, что есть другой способ получения кода: Code URL$ = 'http://80.251.126.41/index.html' PluginSet("Internet","URL$") PluginRun("Internet","Codice") PluginGet("Internet","Result$") a=StrToFile('C:\online.txt', Result$,0,0) Зря время убивал.
Вечная память Андрею Сергееву!
|
|
| |
Nova | Дата: Понедельник, 15 Июня 2009, 20:29 | Сообщение # 42 |
Любопытный
Группа: Проверенные
Сообщений: 31
Репутация: 0
Награды: 0
Статус: Offline
| И как оно, работает? Сча проверю Добавлено (15 Июнь 2009, 20:29) --------------------------------------------- Нет =( Только перезапуск.
|
|
| |
YURIY | Дата: Понедельник, 15 Июня 2009, 20:34 | Сообщение # 43 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Не может быть. У меня реально вот первый способ получения кода выдавал всегда старые данные, а этот обновляется.
Вечная память Андрею Сергееву!
|
|
| |
Nova | Дата: Понедельник, 15 Июня 2009, 20:36 | Сообщение # 44 |
Любопытный
Группа: Проверенные
Сообщений: 31
Репутация: 0
Награды: 0
Статус: Offline
| Может скомпилировать надо, а не фпячить. Одну минуту.
|
|
| |
YURIY | Дата: Понедельник, 15 Июня 2009, 20:38 | Сообщение # 45 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Quote (Nova) Может скомпилировать надо, а не фпячить. Одну минуту. Дело не в этом. У меня работает и так, и так. Что-то у вас не так в коде, видимо. Ну попробуйте, мало ли.
Вечная память Андрею Сергееву!
|
|
| |
Nova | Дата: Понедельник, 15 Июня 2009, 20:55 | Сообщение # 46 |
Любопытный
Группа: Проверенные
Сообщений: 31
Репутация: 0
Награды: 0
Статус: Offline
| Блин. Не выходит. Прикрепил проект. Всякое > Кто онлайн.
Сообщение отредактировал Nova - Понедельник, 15 Июня 2009, 20:57 |
|
| |
YURIY | Дата: Понедельник, 15 Июня 2009, 21:33 | Сообщение # 47 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Quote (Nova) DisplayValue("online_list","lol$") Не используйте эту команду для вывода текста в Параграф. Она не предназначена для данного объекта: Quote (Display Value Help) Display integer value of variable in the text object. Select the Text object, EditBox or Text button and in the Variable parameter write the variable name
Вечная память Андрею Сергееву!
|
|
| |
Nova | Дата: Понедельник, 15 Июня 2009, 21:42 | Сообщение # 48 |
Любопытный
Группа: Проверенные
Сообщений: 31
Репутация: 0
Награды: 0
Статус: Offline
| А какую тогда?
|
|
| |
YURIY | Дата: Понедельник, 15 Июня 2009, 21:45 | Сообщение # 49 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Quote (Nova) А какую тогда? гм... Странный вопрос. Неужели негде подсмотреть? LoadText
Вечная память Андрею Сергееву!
|
|
| |
Nova | Дата: Понедельник, 15 Июня 2009, 21:54 | Сообщение # 50 |
Любопытный
Группа: Проверенные
Сообщений: 31
Репутация: 0
Награды: 0
Статус: Offline
| Безрезультатно. Проблема осталась.
|
|
| |
YURIY | Дата: Понедельник, 15 Июня 2009, 22:31 | Сообщение # 51 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Да, всё нормально, только у вас там в коде что-то напутано - потому так. Я лучше с нуля напишу парсер
Вечная память Андрею Сергееву!
|
|
| |
Nova | Дата: Понедельник, 15 Июня 2009, 23:04 | Сообщение # 52 |
Любопытный
Группа: Проверенные
Сообщений: 31
Репутация: 0
Награды: 0
Статус: Offline
| А мне то как быть =(
|
|
| |
Alex3A | Дата: Понедельник, 15 Июня 2009, 23:05 | Сообщение # 53 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| В объектной модели документа имеются свойства позволяющие спомощью ява скрипта получить текст почти из любого тега,по его номеру или имени. Однако это не так просто, придется повозится. innertext, outerhtml. А если у тебя есть доступ к сценарию на сервере, можеш сформировать нужные данные и передать их в качестве переменной на странице. Теги можно убрать еще на сервере, strip_tags, StripHTML, а сцерий сделать с учетом использований браузера и проекта ммв, передавая в запросе переменную, определяющую какой тип страницы нужен.
|
|
| |
YURIY | Дата: Понедельник, 15 Июня 2009, 23:08 | Сообщение # 54 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Quote (Nova) А мне то как быть =( Я же говорю - сейчас с нуля напишу. Quote (Alex3A) А если у тебя есть доступ к сценарию на сервере Сомневаюсь, что у него есть доступ. А html код чужой страницы через JS украсть нельзя - это политика безопасности.
Вечная память Андрею Сергееву!
|
|
| |
Alex3A | Дата: Понедельник, 15 Июня 2009, 23:25 | Сообщение # 55 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Quote (YURIY) Сомневаюсь, что у него есть доступ. этож не я писал! Quote (Nova) К примеру, на сервере я буду создавать файл, в котором все описывается, и в дальнейшем буду вносить изменения. Необходимо научить мой проект считывать информацию с этого файла! Quote (YURIY) А html код чужой страницы через JS украсть нельзя - это политика безопасности. Есть много способов его украсть... Code Свойство InnerHtml возвращает весь HTML-код, содержащийся в текущем элементе, исключая окружающие теги, а свойство OuterHtml включает тег текущего элемента, а также HTML-код, содержащийся в этом теге Добавлено (15 Июнь 2009, 23:25) --------------------------------------------- Как превратить чужой хтмл текст в свой? Вопрос для любознательных.
|
|
| |
Nova | Дата: Понедельник, 15 Июня 2009, 23:50 | Сообщение # 56 |
Любопытный
Группа: Проверенные
Сообщений: 31
Репутация: 0
Награды: 0
Статус: Offline
| Quote (Nova) К примеру, на сервере я буду создавать файл, в котором все описывается, и в дальнейшем буду вносить изменения. Необходимо научить мой проект считывать информацию с этого файла! Это да, но это не к функции "Кто онлайн". Помимо "Кто онлайн" есть еще список оборудования, список кораблей, карта, новости сервера. Я попросил админа подвесить на серв текстовые файлы, в которых он будет добавлять обновления. НО сейчас не об этом, и теперь я знаю как разобраться с этим. Сложно будет лишь с картой, но, опять же, поздже.
|
|
| |
YURIY | Дата: Вторник, 16 Июня 2009, 00:22 | Сообщение # 57 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Nova, написал. Хотелось сделать как можно универсальнее и правильнее, убил много времени... Не удивлюсь, если кто-то скажет, что можно было сделать намного проще - это само собой. Монстр собственной персоной: Code ** Инициализируем переменные b$='' k=0 count=0 ** Считаем с файла все строки с 16 a$=StrFromFile(c:\online.txt,16,-1) ** Уберём из текста всё лишнее a$=StrChange(a$,</TD>,'') a$=StrChange(a$,<TD CLASS=name>,'') a$=StrChange(a$,<TD CLASS=rank>,'') a$=StrChange(a$,<TD CLASS=system>,'') a$=StrChange(a$,<TD CLASS=ship>,'') a$=StrChange(a$,<TR>,'') a$=StrChange(a$,</TR>,'') a$=StrChange(a$,& lt;,<) <-- убрать пробел после & a$=StrChange(a$,& gt;,>) <-- убрать пробел после & delim$=CHR(10) del$=CHR(13) ** Количество строк в файле num=GetArrayNum(a$,delim$) For i=1 To (num-6) k=k+1 ** Получаем каждую строку s$=GetArrayItem(a$,delim$,i) ** Убираем из неё перенос строки s$=StrChange(s$,del$,'') ** И формируем будущий выводимый текст If (s$<>'') Then If (k=2) Then count=count+1 b$=b$+CHAR(count)+') '+s$ End If (k=3) Then b$=b$+', уровень: '+s$ End If (k=4) Then b$=b$+', система: '+s$ End If (k=5) Then b$=b$+', корабль: '+s$ End End ** Первого игрока разобрали - следующий... If (k=6) Then b$=b$+CHR(13)+CHR(10) k=0 End Next i If (count>0) Then LoadText("online_list","b$") Message("Найдено игроков:","count") Else LoadText("online_list","Игроков в он-лайн: 0") End
Вечная память Андрею Сергееву!
|
|
| |
Nova | Дата: Вторник, 16 Июня 2009, 00:40 | Сообщение # 58 |
Любопытный
Группа: Проверенные
Сообщений: 31
Репутация: 0
Награды: 0
Статус: Offline
| ААААА!!! СПАСИБО ОГРОМНОЕ!!!! Даж не знаю как отблагодарить, супер! Все отлично работает!Добавлено (16 Июнь 2009, 00:40) --------------------------------------------- Темку только не закрывайте, самое трудное еще впереди...
|
|
| |
Alex3A | Дата: Вторник, 16 Июня 2009, 00:45 | Сообщение # 59 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Ну че, частичное решение тоже выход Но ААААА!!! может вскорости иное случится, стоит поменять хтмл.
|
|
| |
Nova | Дата: Вторник, 16 Июня 2009, 00:54 | Сообщение # 60 |
Любопытный
Группа: Проверенные
Сообщений: 31
Репутация: 0
Награды: 0
Статус: Offline
| Quote (Alex3A) Но ААААА!!! может вскорости иное случится, стоит поменять хтмл. Не поменяется. Он генерируется программой-оператором сервера.
|
|
| |