Lib_resloader - Экономная загрузка ресурсов
Вложений: 3
Представьте, что перед вами стоит банальная задача: загрузить какой-то текст из файла и отобразить его на экране.
Нет, не надо ломать голову. Я знаю как вы поступите, готовая программа будет выглядеть примерно так: PHP код:
Я сделал простой тест. Загрузил файл размером 1024 байта (1 Кб) с 32 строками русского текста. После запуска эмулятор WTK 2.5.2 мне выдал такой график: Поясню график. Я запускал программу 2 раза. В первом случае до запуска программы памяти занято было 67500 байт, после запуска - 595124 байт, разница - 527624 байт. Во втором случае до запуска было 73256 байт, а после запуска - 540752 байт, разница - 467496 байт. То есть выходит, что на чтение файла размером 1Кб уходит до 515Кб памяти (!!!), а не каждый телефон может себе такое позволить. При тестировании на реальных телефонах (слабенькие Nokia, типа n7390 и проч.) вылетала ошибка Out of memory. Что и понятно. Естественно, такое положение дел меня возмутило и я создал небольшую библиотеку для загрузки текста из файла. Исходный код теперь заметно упростился: PHP код:
После теста имеем такие показатели: В цифрах это выглядит так: Первый запуск: 88420 - 67520 = 20900 байт. Второй запуск: 90056 - 75448 = 14608 байт. Разница очевидна. В первом примере тратилось до 515Кб памяти, а во втором менее 20Кб. Библиотека имеет команды сходные со стандартными: Код:
OpenRes(f: string) - Открыть текстовый ресурс (символ "/" к имени добавлять не надо) |
Ответ: Lib_resloader - Экономная загрузка ресурсов
А можно добавить загрузку с произвольной строки и загружать определенное количество строк ? Например загрузить 100 строк начиная с 50. Было бы вообще идеально.
|
Ответ: Lib_resloader - Экономная загрузка ресурсов
А если файл не найден что будет?
|
Ответ: Lib_resloader - Экономная загрузка ресурсов
Вложений: 1
Добавил функцию чтения произвольного количества строк.
Синтаксис новой функции такой: string ReadLinesBlock(fn: string; start: integer; len: integer; enc: integer) Читает из файла блок строк. fn - имя файла (символ "/" в начале имени добавлять не надо) start - строка с которой нужно начать считывать (счёт идёт с 0, т.е. самая первая строчка в тексте имеет номер 0) len - количество строк которое нужно считывать enc - надо ли делать перекодировку из cp1251 --> UTF-8; 1 - надо перекодировать, 0 - не надо Пример использования в программе: PHP код:
|
Ответ: Lib_resloader - Экономная загрузка ресурсов
PHP код:
error, character '(' expected, ';' found error, indentifier 'closeRes' is not constant, function or variable name Что я сделал не так? |
Ответ: Lib_resloader - Экономная загрузка ресурсов
Дай кода больше, что до этого у тебя?
|
Ответ: Lib_resloader - Экономная загрузка ресурсов
До этого begin. Ошибка возникла только когда начал читать строку с помощью библиотеки.
var mas1: array[1..60] of string; |
Ответ: Lib_resloader - Экономная загрузка ресурсов
OpenRes('123.txt');
for i:=1 to 10 do mas2[i]:=resloader.ReadLine; closeRes; |
Ответ: Lib_resloader - Экономная загрузка ресурсов
Спасибо. Работает.
|
Ответ: Lib_resloader - Экономная загрузка ресурсов
Подскажите, плиз, почему не работает ни "неправильный вариант" в 1 пункте, ни Эта либа. Русский текст показывает только с такой функцией:
Код:
function ansi(str : string) : string; |
Ответ: Lib_resloader - Экономная загрузка ресурсов
Получается, Readline не перекодирует строку. Только loadtext и readlineblocks. A readline надо дополнительно перекодировать функцией. Какой из способов чтения строк тогда будет быстрее?
|
Ответ: Lib_resloader - Экономная загрузка ресурсов
Вложений: 1
Цитата:
Подробности - в файлике с описанием библиотеки |
Добрый день, а у меня такая проблемма
вот код PHP код:
все вроди норм заработало, правда в чем была ошибка так и не понял Цитата:
|
Ответ: Lib_resloader - Экономная загрузка ресурсов
Хм, win2utf конвертит этот символ ~ в квадратик, остальные не проверял.
Odd, сделай плиз, чтобы можно было обращаться к разным ресурсам по ID. И замени ReadLine на ReadStr, ато она совпадает со стандартной командой - неудобно. Типа так: PHP код:
|
Ответ: Lib_resloader - Экономная загрузка ресурсов
Почему при запуске сразу-же выкидывает?
Код:
Program wiki; |
Часовой пояс GMT +4, время: 12:49. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot