Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.08.2010, 15:41
e15r вне форума Посмотреть профиль Отправить личное сообщение для e15r Найти все сообщения от e15r
  № 1  
Ответить с цитированием
e15r

Регистрация: Oct 2007
Сообщений: 21
По умолчанию получение данных из txt

сразу приношу свои извинения, если тема уже поднималась, искал тут и вообще гуглил не первый день. много всего понял, но довести до ума не получается.

есть текстовый файл, он постоянно обновляется.
в этом текстовом файле отображаются "состояния" выглядит примерно так:

NAME1 OK
NAME2 NO
NAME3 OK
NAME4 OK

ит.д.

задача: вытащить оттуда все те строки которые заканчиваются на NO

далее, будет писаться: NAME2 6:24(тут будет тикать таймер вниз потом будет БУМ)

таймер и проигрывания звука по истечении оного сделал без проблем, загрузить во флеш файл тоже получилось.

Код AS1/AS2:
pointstatus = new XML();
pointstatus.load("здесь путь к файлу");
pointstatus.onLoad = function() {
trace(pointstatus)
}
а вот как оттуда отобрать нужные строки, не пойму, примеров хоть и мало, но нашел, но вот все они больно громозкие, а-ля мп3 плееры и прочее...

если не затруднит, подскажите как вытащить определенную строку.

Старый 02.08.2010, 16:14
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 2  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Код AS1/AS2:
pointstatus = new XML();
pointstatus.load("здесь путь к файлу");
pointstatus.onLoad = function() {
trace(this.pointstatus)
}
так пашет ?
__________________
Дети не должны знать о своих родителях

Старый 02.08.2010, 16:18
KirAmp вне форума Посмотреть профиль Найти все сообщения от KirAmp
  № 3  
Ответить с цитированием
KirAmp
Banned
[+4 10.07.10]
[+1.4 10.08.10]
[+1 20.08.10]

Регистрация: Jul 2009
Адрес: Саратов
Сообщений: 229
Отправить сообщение для KirAmp с помощью ICQ
2 пути решения, в txt файл записывать переменные в XML разметке, и тогда проблем не будет.
Код:
<myVars>
<p name="name1">OK</p>
<p name="name2">NO</p>
</myVars>
Если же не нравится такой вариант, то можно сделать по симбольный разбор pointstatus.toString();
Возможно есть еще варианты....

Старый 02.08.2010, 21:23
e15r вне форума Посмотреть профиль Отправить личное сообщение для e15r Найти все сообщения от e15r
  № 4  
Ответить с цитированием
e15r

Регистрация: Oct 2007
Сообщений: 21
2 Tails
да вроде пашет... а что не так?

2 KirAmp
нет изменять txt файл не вариант.
насчет pointstatus.toString();
можно чуть по конкретнее, если не затруднит?.. а то ничего конкретного нагуглить на удалось

спасибо

Старый 02.08.2010, 21:35
KirAmp вне форума Посмотреть профиль Найти все сообщения от KirAmp
  № 5  
Ответить с цитированием
KirAmp
Banned
[+4 10.07.10]
[+1.4 10.08.10]
[+1 20.08.10]

Регистрация: Jul 2009
Адрес: Саратов
Сообщений: 229
Отправить сообщение для KirAmp с помощью ICQ
e15r
сначала превращяете ваш полученный XML в String при помощи .toString();

Потом эту строчку начинаете разбирать в цикле, скажем с такой логикой:
пока не пробел набивается переменная:String, как "пробел", создается переменная с названием как у той переменной. потом, пока не "\n" заполняется содержимое этой новой переменной... и т.д

Старый 03.08.2010, 03:01
NoCD вне форума Посмотреть профиль Отправить личное сообщение для NoCD Найти все сообщения от NoCD
  № 6  
Ответить с цитированием
NoCD
 
Аватар для NoCD

Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
лучше вариант с XML,
а если делать разбор строки, то это муторно. Делается при помощи text.substring()

Старый 03.08.2010, 10:34
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 7  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Этот код правильный, он отлично будет грузить переменные из текстовика. Допустим если у вас есть в текстовике переменная "myVar=5", то после загрузки во флеш, обращаться к ней нужно:
Код AS1/AS2:
this.myVar;
все переменные в текстовике должны разделяться символом &
__________________
Дети не должны знать о своих родителях

Старый 03.08.2010, 20:13
e15r вне форума Посмотреть профиль Отправить личное сообщение для e15r Найти все сообщения от e15r
  № 8  
Ответить с цитированием
e15r

Регистрация: Oct 2007
Сообщений: 21
изменить текстовый документ варианта нет.

Старый 03.08.2010, 20:18
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 9  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Раз формат тестового файла менять никак, используйте обработчик onData для получения всего текста как есть, и пишите парсер (синтаксический анализатор), например, как KirAmp предложил.
Либо в "Вакансии", если сами не справитесь с парсером - работа небольшая.

Код AS1/AS2:
var lv:LoadVars = new LoadVars();
 
lv.onData = function(src:String) 
{
	if (src)
	{
		//код парсера
	}
};
 
lv.load('здесь путь к файлу');
Это решение.


Последний раз редактировалось mooncar; 03.08.2010 в 20:39.
Старый 03.08.2010, 23:07
e15r вне форума Посмотреть профиль Отправить личное сообщение для e15r Найти все сообщения от e15r
  № 10  
Ответить с цитированием
e15r

Регистрация: Oct 2007
Сообщений: 21
оказывается есть такая команда как lastIndexOf которая ищет в обратном направлении...
короче показываю итоговый код, с периодическим обновлением информации и его расфасовкой по массиву и ит.д.


Код AS1/AS2:
setInterval(loadtxt, 5000);
function loadtxt() 
{
alarmArray = new Array ();
pointalarm = new XML();
pointalarm.load("test.txt");
pointalarm.onLoad = function() {
	var b:Number=0
 
pointalarm = pointalarm.toString();
 
 
 
while (b < 10){
 
 
pointalarm = pointalarm.slice(pointst+2);
trace("pointalarm: " +pointalarm);
 
pointst = pointalarm.indexOf('NO');
trace("pointst: " +pointst);
pointlast = pointalarm.lastIndexOf('\n',pointst)+1;
trace("pointlast: " +pointlast);
point = pointalarm.substring(pointlast,pointst);
trace("point: " +point)
alarmArray.push(point);
 
b++
};
 
 
alarmArray=alarmArray.slice(0,alarmArray.length)
trace ("массив: " +alarmArray.toString ());
 
AAlength=alarmArray.length
trace("длина массива: " +AAlength)
 
var pole:Number = 0;
 
point0.text = alarmArray[0]
point1.text = alarmArray[1]
point2.text = alarmArray[2]
point3.text = alarmArray[3]
point4.text = alarmArray[4]
point5.text = alarmArray[5]
point6.text = alarmArray[6]
point7.text = alarmArray[7]
point8.text = alarmArray[8]
point9.text = alarmArray[9]
 
trace("КОНЕЦ")
 
 };
};
Добавлено через 21 час 14 минут
всем спасибо что помогали


Последний раз редактировалось e15r; 04.08.2010 в 20:44.
Создать новую тему Ответ Часовой пояс GMT +4, время: 19:37.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 19:37.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.