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

Вернуться   Форум Flasher.ru > Flash > Flash Приложения: AIR, Zinc и тд.

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

Регистрация: Apr 2010
Сообщений: 12
По умолчанию XML + dataGrid

в кадре только dataGrid
написан такой код:
Код AS1/AS2:
stop();
onEnterFrame = function () {
	var path:String = mdm.Application.path;
	if (path == undefined) {
		path = "";
	}
	var myFiles:Array = mdm.FileSystem.getFileList(mdm.Application.path+"\\zakaz\\", "*.xml");
	var myDP:Array = new Array();
	var temp1:XML = new XML();
	temp1.ignoreWhite = true;
	for (i=0; i<myFiles.length; i++) {
		var path1:String = myFiles[i].toString();
		temp1.load(path+"\\zakaz\\"+path1);
		temp1.onLoad = function(success) {
			str1 = temp1.childNodes[0].childNodes[0].firstChild.nodeValue.toString();
			str2 = temp1.childNodes[0].childNodes[1].firstChild.nodeValue.toString();
			str3 = temp1.childNodes[0].childNodes[2].firstChild.nodeValue.toString();
			str4 = temp1.childNodes[0].childNodes[3].firstChild.nodeValue.toString();
		};
		myDP.addItem({id:str1, name:str2, price:str3});
		aDg.dataProvider = myDP;
	}
};
Предполагается, что сначала в массив заносятся имена всех файлов, содержащихся в папке. Затем в цикле поочередно загружается каждый файл и из него считываются необходимые значения узлов. Все это заносится в dataGrid. Но у меня вся таблица заполняется данными только из последнего файла. В чем проблема и как это исправить?

Добавлено через 1 минуту
извиняюсь, тему не в ту ветку написала

Старый 05.06.2011, 00:09
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 2  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Вам нужно загружать файлы либо разными лоадерами (объектами XML), либо одним, но по принципу эстафеты: загрузка следующего файла не стартует, пока не закончится загрузка предыдущего, о чем сигнализирует событие onLoad().
Загрузка файла во флеше асинхронная. Потому в вашем коде цикл выполняется мгновенно. Соответственно, срабатывает onLoad() для последнего файла.
Можете попробовать грузить файл методом mdm.FileSystem.loadFile() . Он должен синхронно работать. Т.е. возвратит вам просто строку-содержание файла, сразу, без всяких onLoad(). Ее и отдадите XML().


Последний раз редактировалось alexcon314; 05.06.2011 в 00:13.
Старый 05.06.2011, 00:49
Avroraoff вне форума Посмотреть профиль Отправить личное сообщение для Avroraoff Найти все сообщения от Avroraoff
  № 3  
Ответить с цитированием
Avroraoff

Регистрация: Apr 2010
Сообщений: 12
список вывела, уже хорошо!только еще одна проблема - вместо русских букв - квадратики.
xml-файлики создаю с помощью того же цинка
mdm.FileSystem.saveFileUnicode(mdm.Application.path+"\\zakaz\\"+_global.numz+".xml", str);
то есть сохраняю в utf-8 (покрайней мере так написано в хелпе в цинку)
значит проблема в чтении??ее можно как-то обойти или исправить?

Старый 06.06.2011, 00:55
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 4  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Хм. Помнится, здесь кто-то успешно пользовался mdm.FileSystem.saveFileUnicode(), была тема на эту "тему"... попробуйте поискать.
Да вот:
http://www.flasher.ru/forum/showthread.php?t=118517
http://www.flasher.ru/forum/showthre...=117341&page=2
Проверьте все еще раз. Посмотрите на форуме mdm.
Если не работает - значит баг.

Старый 07.06.2011, 16:24
Avroraoff вне форума Посмотреть профиль Отправить личное сообщение для Avroraoff Найти все сообщения от Avroraoff
  № 5  
Ответить с цитированием
Avroraoff

Регистрация: Apr 2010
Сообщений: 12
использовала функцию mdm.FileSystem.saveFileUnicode(), получилось еще веселее...
у меня есть набор xml-файликов размером ~1 - 5 килобайт. так вот эта функция выборочно читает некоторые файлы, а для некоторых выдает ошибку при компиляции
"Byffer overrun detected!
A buffer overrun has been detected which has corrupted the programs internal state. The programm cannot safely continue execution and must now be terminated."
как я понимаю, переполняется буфер, причем при загрузке различных файлов, некоторые по 5 Кб загрузились нормально
только не совсем понятно, буфер переполняется при загрузке файла или при выполнении парсинга?
Мой код
Код AS1/AS2:
var path:String = mdm.Application.path;
if (path == undefined) {
	path = "";
}
var myFiles:Array = mdm.FileSystem.getFileList(mdm.Application.path+"\\zakaz\\", "*.xml");
var myDP:Array = new Array();
var temp1:XML = new XML();
temp1.ignoreWhite = true;
path1 = myFiles[4].toString();
//var dt:String = mdm.FileSystem.loadFileUnicode(mdm.Application.path+"\\zakaz\\"+path1);
var dt:String = mdm.FileSystem.loadFileUnicode(mdm.Application.path+"\\zakaz\\89.xml");
temp1.parseXML(dt);
str1 = temp1.childNodes[0].childNodes[0].firstChild.nodeValue.toString();
str2 = temp1.childNodes[0].childNodes[1].firstChild.nodeValue.toString();
str3 = temp1.childNodes[0].childNodes[2].firstChild.nodeValue.toString();
str4 = temp1.childNodes[0].childNodes[3].firstChild.nodeValue.toString();
str5 = temp1.childNodes[0].childNodes[4].firstChild.nodeValue.toString();
myDP.addItem({Номер:Number(str1), Дата:String(str2), Заказчик:String(str3), Заказ:String(str4), Тип:String(str5)});
aDg.dataProvider = myDP;
aDg.sortItemsBy("Номер", Array.NUMERIC);
aDg.setStyle("hGridLines", true);

Старый 07.06.2011, 18:22
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 6  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Что значит "для некоторых выдает ошибку при компиляции"? При какой такой компиляции? Во флеше, в цинке? Или эта ошибка вылезает во время исполнения вашей программы все-таки? Как вы ее увидели?
Попытался воспроизвести как мог вашу проблему: (Flash 8, Zinc 2.5.0.34, AS2, Windows XP SP3)
Код:
save.onRelease = function()
{
	mdm.FileSystem.saveFileUnicode(mdm.Application.path+"file.xml","<node>вывыв</node>");
}
load.onRelease = function()
{
	out.text = mdm.FileSystem.loadFileUnicode(mdm.Application.path+"file.xml");
}
Все работает как надо. Строка сохраняется в utf-8, потом корректно загружается и отображается, никаких квадратиков.
Валидный ли xml вы формируете и потом грузите?

Старый 07.06.2011, 19:13
Avroraoff вне форума Посмотреть профиль Отправить личное сообщение для Avroraoff Найти все сообщения от Avroraoff
  № 7  
Ответить с цитированием
Avroraoff

Регистрация: Apr 2010
Сообщений: 12
1. В цинке запускаю "Build project", стоит галочка - запустить проект по завершении, проект запускается и вылазит данная ошибка
2. если ставлю другой файлик из имеющихся на загрузку, то все работает как надо и правильно подгружает инфу на русском
все файлы создаются одинаково командой mdm.FileSystem.saveFileUnicode, единственное различие в количестве дочерних узлов (структура:корневой узел <win></win> и дочерние <OBJ></OBJ>).
Вобщем загрузила исходник и два xml-файла. Файл 3289.xml у меня подгружается и все красиво выводится на русском, а при загрузке 89.xml вылазит ошибка. Попробуйте проверить программу, если есть время, может сможете понять в чем проблема?
Вложения
Тип файла: rar 1.rar (116.5 Кб, 309 просмотров)

Старый 08.06.2011, 11:12
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 8  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Ок. Посмотрел ваш исходник.
1. Если запускать как есть - ничего не выводит в DataGrid.
2. Если добавить в первый кадр
Код:
var myDP:Array = new Array();
,
выводит две идентичные по содержанию строчки, да, с русскими буквами все хорошо. Как при загрузке 89.xml, так и при загрузке 3289.xml.
3.Назанчение кода во втором кадре не понял.
Т.е. оба файла у меня грузятся, никаких ошибок не вылазит. Все нормально.
Повторю конфигурацию: Flash 8, Zinc 2.5.0.34, AS2, Windows XP SP3 (32 bit).
Вот все что могу сказать.
Я больше склоняюсь к мысли о баге самого цинка. И дело совсем не в файлах xml. Посмотрите вот эту информацию
http://www.flasher.ru/forum/showthre...=104606&page=2
В качестве эксперимента попробуйте грузить так:
Код:
var dt:String = mdm.FileSystem.loadFileUnicode("zakaz\\3289.xml");
т.е без mdm.Application.path.


Последний раз редактировалось alexcon314; 08.06.2011 в 11:21.
Старый 08.06.2011, 16:34
Avroraoff вне форума Посмотреть профиль Отправить личное сообщение для Avroraoff Найти все сообщения от Avroraoff
  № 9  
Ответить с цитированием
Avroraoff

Регистрация: Apr 2010
Сообщений: 12
я тоже склоняюсь к версии о баге цинка, спасибо за помощь!!

Создать новую тему Ответ Часовой пояс GMT +4, время: 22:24.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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