![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2010
Сообщений: 12
|
в кадре только dataGrid
написан такой код: 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; } }; Добавлено через 1 минуту извиняюсь, тему не в ту ветку написала |
|
|||||
|
listener
|
Вам нужно загружать файлы либо разными лоадерами (объектами XML), либо одним, но по принципу эстафеты: загрузка следующего файла не стартует, пока не закончится загрузка предыдущего, о чем сигнализирует событие onLoad().
Загрузка файла во флеше асинхронная. Потому в вашем коде цикл выполняется мгновенно. Соответственно, срабатывает onLoad() для последнего файла. Можете попробовать грузить файл методом mdm.FileSystem.loadFile() . Он должен синхронно работать. Т.е. возвратит вам просто строку-содержание файла, сразу, без всяких onLoad(). Ее и отдадите XML(). Последний раз редактировалось alexcon314; 05.06.2011 в 00:13. |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 12
|
список вывела, уже хорошо!только еще одна проблема - вместо русских букв - квадратики.
xml-файлики создаю с помощью того же цинка mdm.FileSystem.saveFileUnicode(mdm.Application.path+"\\zakaz\\"+_global.numz+".xml", str); то есть сохраняю в utf-8 (покрайней мере так написано в хелпе в цинку) значит проблема в чтении??ее можно как-то обойти или исправить? |
|
|||||
|
listener
|
Хм. Помнится, здесь кто-то успешно пользовался mdm.FileSystem.saveFileUnicode(), была тема на эту "тему"... попробуйте поискать.
Да вот: http://www.flasher.ru/forum/showthread.php?t=118517 http://www.flasher.ru/forum/showthre...=117341&page=2 Проверьте все еще раз. Посмотрите на форуме mdm. Если не работает - значит баг. |
|
|||||
|
Регистрация: 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 Кб загрузились нормально только не совсем понятно, буфер переполняется при загрузке файла или при выполнении парсинга? Мой код 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); |
|
|||||
|
listener
|
Что значит "для некоторых выдает ошибку при компиляции"? При какой такой компиляции? Во флеше, в цинке? Или эта ошибка вылезает во время исполнения вашей программы все-таки? Как вы ее увидели?
Попытался воспроизвести как мог вашу проблему: (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");
}
Валидный ли xml вы формируете и потом грузите? |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 12
|
1. В цинке запускаю "Build project", стоит галочка - запустить проект по завершении, проект запускается и вылазит данная ошибка
2. если ставлю другой файлик из имеющихся на загрузку, то все работает как надо и правильно подгружает инфу на русском все файлы создаются одинаково командой mdm.FileSystem.saveFileUnicode, единственное различие в количестве дочерних узлов (структура:корневой узел <win></win> и дочерние <OBJ></OBJ>). Вобщем загрузила исходник и два xml-файла. Файл 3289.xml у меня подгружается и все красиво выводится на русском, а при загрузке 89.xml вылазит ошибка. Попробуйте проверить программу, если есть время, может сможете понять в чем проблема? |
|
|||||
|
listener
|
Ок. Посмотрел ваш исходник.
1. Если запускать как есть - ничего не выводит в DataGrid. 2. Если добавить в первый кадр , выводит две идентичные по содержанию строчки, да, с русскими буквами все хорошо. Как при загрузке 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 В качестве эксперимента попробуйте грузить так: т.е без mdm.Application.path. Последний раз редактировалось alexcon314; 08.06.2011 в 11:21. |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 12
|
я тоже склоняюсь к версии о баге цинка, спасибо за помощь!!
|
![]() |
![]() |
Часовой пояс GMT +4, время: 23:34. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|