Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как быть с большим большим текстом? (http://www.flasher.ru/forum/showthread.php?t=193960)

Awesomni 05.02.2013 13:55

Как быть с большим большим текстом?
 
Добрый день, знатоки.
Гружу данные (текст) URLLoader-ом.
Из этого текста мне нужно вырвать кусочек.
Но беда в том, что текст слишком большой и не умещается в String (который, как я выгуглил не может быть более 64Кб).

Как мне поступить в такой ситуации?
Код на всякий случай прилагаю.
Код AS3:

package 
{
 
        import flash.display.MovieClip;
        import flash.net.*;
        import flash.events.Event;
 
 
        public class Main extends MovieClip
        {
 
                private var _params:URLVariables = new URLVariables();
                private var _urlLoader:URLLoader;
                private var _urlRequest:URLRequest = new URLRequest();
 
 
                public function Main()
                {
                        _urlRequest.url = 'тут ссылка на огромный текстовый файл';
                        _urlRequest.method = URLRequestMethod.GET;
                        _urlLoader = new URLLoader(_urlRequest);
                        _urlLoader.addEventListener(Event.COMPLETE, traceResult);
                        _urlLoader.load(_urlRequest);
                }
                private function traceResult(e:Event):void
                {
                        trace(_urlLoader.data);
                }
        }
}


caseyryan 05.02.2013 14:10

Цитата:

Но беда в том, что текст слишком большой и не умещается в String (который, как я выгуглил не может быть более 64Кб).
Размер строки:
Цитата:

-String size: 1,073,741,823 bytes (2^30 - 1)
а 64 килобайта это то, что можно передать POST запросом (кстати замените у себя GET на POST).

Может есть возможность загрузить текст как отдельный txt файл?

Awesomni 05.02.2013 14:20

Гм... а как же быть тогда? Как его загрузить отдельным файлом?

caseyryan 05.02.2013 14:26

Просто ссылку на файл указать в URLRequest и так же URLLoader'ом скачать
ну или, если его нет, то на стороне сервера сформировать текстовый файл и передать его флешке

iflamberg 05.02.2013 14:41

2caseyryan: а он, извени, сейчас что делает? Он зачем-то у URLRequest выставил метод GET, но никаких данных этим методом не передает. А на получаемые данные не влияет выставленный .method. Т.е. он просто грузит текстовый файл в URLLoader по ссылке, вот и все.

Как уже сказали -String size: 1,073,741,823 bytes (2^30 - 1)
Около 64кб - максимальный текст в TextField. Но вы им не пользуетесь.
А данные передаваемые URI методом GET не ограничиваются протоколом HTTP, но ограничиваются бразуерами и всякими проксями. В современных браузерах это 2-8кб, но я бы не стал отсылать этим методом больше 256 байт. Но в любом случае, я не вижу, чтобы вы метод GET использовали вообще.

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

Awesomni 05.02.2013 15:03

Когда я вывожу текст через trace я получаю в середине его такую строку [... text truncated].
Метод, я полагаю, никак не влияет на получаемый результат. Может забудем про него?
Браузер никак влиять не может, ибо я это выполняю в Flash CS6.

iflamberg 05.02.2013 15:26

ну, так может это trace просто обрезает свой вывод, чтобы не кидать в буфер мегабайты? Сделайте скажем trace (str.substr(str.length-40)); - это соответсвует концу файла? Вообще str.length соответствует длине файла?

Awesomni 05.02.2013 16:17

Да, e.target.data.length возвращает верную длину. Операции со строками работают на отлично. Проблема была, действительно, в trace. Спасибо за помощь. Теперь всё хорошо, дальше справлюсь сам :)


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

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