PDA

Просмотр полной версии : Достать переменные из файла


prokopoffmusic
11.05.2010, 19:13
в файле лежат пременные в таком виде:
time=15:10&name=Иван&id=123

нужно вывести в поле mbox переменные в формате time - name (id)

пишу
var mbox = time - name (id);
во флешке пишет "undefined"

подскажите, как задать значение переменной?
если можно поподробней, я программирую всего неделю)

mooncar
11.05.2010, 19:24
Как вы загружаете данные из файла?
Откройте хелп и посмотрите примеры для класса LoadVars.

Потом, когда разберетесь с этим, у вас должно получиться нечто следующее:
var lv:LoadVars = new LoadVars();

lv.onLoad = function (success:Boolean)
{
if (success)
{
trace('Данные загружены');
var vtime:String = this.vtime;
var vname:String = this.vname;
var id:String = this.id;
mbox.text = vtime + '-' + vname + '(' + id + ')';
}
}
lv.load('file.txt'); //если файл лежит рядом

Настоятельно рекомендую поменять имена time и name на другие, как это сделал я, это служебные слова, могут быть неприятности.
vtime=15:10&vname=Иван&id=123

Если сразу не получится, потрейсите внутри обработчика:
trace(this.vtime)
и т.д, чтобы понять, происходит вообще загрузка и разбор данных или нет.

prokopoffmusic
11.05.2010, 19:31
Загружаю вот так:

setInterval(function () {
loadVariables("base.txt", _root);
},200);

верно?

Добавлено через 5 минут
Всё, разобрался! Спасибо!

mooncar
11.05.2010, 19:40
Нет, не верно. Я же написал как делается.
Никаких loadVariables и тем более с setInterval ! Это бред.
Такая конструкция имела право на жизнь лет 6-7 назад, если не больше.

prokopoffmusic
11.05.2010, 19:41
а как тогда без setInterval сделать чтобы иформация в поле mbox обновлялась?

mooncar
11.05.2010, 19:45
а как тогда без setInterval сделать чтобы иформация в поле mbox обновлялась?
Про обновление вы ничего не писали. Я писал, что бредово использовать связку устаревшего и непригодного loadVariables и вполне себе рабочей лошадки setInterval.

Тогда так:
var lv:LoadVars = new LoadVars();

lv.onLoad = function (success:Boolean)
{
if (success)
{
trace('Данные загружены');
var vtime:String = this.vtime;
var vname:String = this.vname;
var id:String = this.id;
mbox.text = vtime + '-' + vname + '(' + id + ')';
}
}

function loadFile ()
{
lv.load('base.txt');
}

var lf:Number = setInterval(loadFile, 200);

PS. Еще вот что. Сохраняйте ваш base.txt в кодировке UTF-8 во избежание граблей, на которые многие встают.

prokopoffmusic
11.05.2010, 20:05
Сохраняйте ваш base.txt в кодировке UTF-8
Никак иначе! :)

что-то обновление не происходит...

mooncar
11.05.2010, 20:12
Вы на сайте тестите или в среде разработки?

Добавлено через 3 минуты
Если на сайте, то пишите так:
lv.load('base.txt?' + Math.random());
— этим избегается кэширование base.txt браузером.

prokopoffmusic
11.05.2010, 20:23
нет, не на сайте, локально запускаю swf-ку, меняю содержимое файла base.txt, а обновление не происходит.
причем таким вот образом всё работало
messageURL = "base.txt";
setInterval(function () {
loadVariables(messageURL, _root);
},100);
но так переменные не вытащить

mooncar
11.05.2010, 20:30
Все нормально работает.

prokopoffmusic
11.05.2010, 20:51
Странно, у меня всё также было и не работало.
Сейчас всё работает! Спасибо!