Форум
Написать нам
  • Страница 2 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Модератор форума: as-master  
Чтение из файла на сервере и парсинг
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.

Quote
string$=a $

опять?



Вечная память Андрею Сергееву!
 
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
Блин. Не выходит. Прикрепил проект.
Всякое > Кто онлайн.
Прикрепления: viewer.rar (1.64 Mb)


Сообщение отредактировал 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
Quote (Nova)
ААААА!!!

Ну че, частичное решение тоже выход :D
Но ААААА!!! может вскорости иное случится, стоит поменять хтмл.
 
NovaДата: Вторник, 16 Июня 2009, 00:54 | Сообщение # 60
Любопытный
Группа: Проверенные
Сообщений: 31
Репутация: 0
Награды: 0
Статус: Offline
Quote (Alex3A)
Но ААААА!!! может вскорости иное случится, стоит поменять хтмл.

Не поменяется. Он генерируется программой-оператором сервера.
 
  • Страница 2 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Поиск: