Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Библиотеки

Ответ
 
Опции темы
Старый 09.11.2008, 00:39   #1
Skythrone
ПроЭктировщик
 
Регистрация: 02.07.2008
Сообщений: 105
Написано 7 полезных сообщений
(для 14 пользователей)
Сообщение Чтение произвольной строки из ресурса

Вот такая штука.

Есть прога, которая читает текстовую информацию из ресурса. Несколько сотен строк.
Это у меня сделано так - создаю строчный массив, потом через Lib_res загружаю в него данные построчно, потом выдаю на экран тот или иной элемент данного массива.

Но есть существенные минусы:
- мидлет долго запускается
- массив жрёт память, а пользы от него мало. В процессе работы мидлета пользователю выдаются не все записи, а только лишь некоторые.
Соответственно, КПД такой схемы довольно низкий.

Я тут подумал. А можно ли читать из текстового ресурса произвольную строчку?
Я бы тогда просто открыл ресурс при старте мидлета, а потом просто запрашивал нужную строчку.
(Offline)
 
Ответить с цитированием
Старый 09.11.2008, 01:01   #2
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: Чтение произвольной строки из ресурса

Нельзя. Как же мидлет заранее узнает где начинается новая строка? Вот если у тебя заранее известен индекс каждой строчки в файле или если длинна всех строк одинакова, тогда наверно можно прочитать ресурс с определённого байта (не сначала, как обычно, а с любого места файла).
(Offline)
 
Ответить с цитированием
Старый 09.11.2008, 08:48   #3
Cliffe Snake
Нуждающийся
 
Аватар для Cliffe Snake
 
Регистрация: 22.09.2008
Сообщений: 74
Написано 8 полезных сообщений
(для 12 пользователей)
Ответ: Чтение произвольной строки из ресурса

Skythrone, а кто тебе мешает организовать свою схему считывания ресурсного файла на чистом МП? Использование библиотек не всегда лучший способ.
В некоторых случаях лучше использовать стандартные средства МП.
(Offline)
 
Ответить с цитированием
Старый 10.11.2008, 02:57   #4
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: Чтение произвольной строки из ресурса

Кстати, так можно или нет считать ресурс не сначала, а с определённого места? Если можно, то как?
(Offline)
 
Ответить с цитированием
Старый 10.11.2008, 11:34   #5
Dr.SanX
AnyKey`щик
 
Регистрация: 01.10.2008
Сообщений: 8
Написано одно полезное сообщение
(для 2 участников)
Ответ: Чтение произвольной строки из ресурса

Пример чтения нужной строки из Text.txt
Вложения
Тип файла: zip Skythrone.zip (42.3 Кб, 9586 просмотров)
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Dr.SanX за это полезное сообщение:
KeipL (01.12.2008), Phantom (10.11.2008)
Старый 11.11.2008, 12:25   #6
Skythrone
ПроЭктировщик
 
Регистрация: 02.07.2008
Сообщений: 105
Написано 7 полезных сообщений
(для 14 пользователей)
Сообщение от Phantom_wc Посмотреть сообщение
Нельзя. Как же мидлет заранее узнает где начинается новая строка? Вот если у тебя заранее известен индекс каждой строчки в файле или если длинна всех строк одинакова, тогда наверно можно прочитать ресурс с определённого байта (не сначала, как обычно, а с любого места файла).
В принципе, я могу подсчитать такой индекс, так что прога будет знать, где начинается нужная строка.
А как мне прочитать данные, начиная с нужного оффсета? Какой функцией?

Сообщение от Cliffe Snake Посмотреть сообщение
Skythrone, а кто тебе мешает организовать свою схему считывания ресурсного файла на чистом МП? Использование библиотек не всегда лучший способ.
В некоторых случаях лучше использовать стандартные средства МП.
Во-первых, библиотека полезна тем, что она весьма быстро читать строки в win-1251 и на лету преобразует их в UTF.

Во-вторых, я не нашёл встроенных средств в MP для чтения данных из ресурса, начиная с заданного места (оффсет).

Сообщение от Dr.SanX Посмотреть сообщение
Пример чтения нужной строки из Text.txt
Дык это ж зверски торомозно!

У меня всё упирается в скорость работы на телефоне. В ресурсном txt-файле более 1000 строк. Каждая строка - определённое сообщение интерфейса.

Подобный перебор всех строк последовательно будеть занимать по 5-10 секунд на SE K-700, что не есть good.

Последний раз редактировалось ViNT, 11.11.2008 в 13:05.
(Offline)
 
Ответить с цитированием
Старый 11.11.2008, 14:32   #7
Dr.SanX
AnyKey`щик
 
Регистрация: 01.10.2008
Сообщений: 8
Написано одно полезное сообщение
(для 2 участников)
Ответ: Чтение произвольной строки из ресурса

Дык это ж зверски торомозно!
Ну что поделаешь.
В ресурсном txt-файле более 1000 строк.
есть и другой способ создай для каждой строки свой файл ))
(Offline)
 
Ответить с цитированием
Старый 11.11.2008, 23:05   #8
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: Чтение произвольной строки из ресурса

О_о Рано я спасибку поставил =) Я думал, что там как раз считывается с определённого места, не посмотрел сразу.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Dr.SanX (12.11.2008)
Старый 14.11.2008, 04:36   #9
Cliffe Snake
Нуждающийся
 
Аватар для Cliffe Snake
 
Регистрация: 22.09.2008
Сообщений: 74
Написано 8 полезных сообщений
(для 12 пользователей)
Ответ: Чтение произвольной строки из ресурса

Skythrone, мой тебе совет: раздели все свои интерфейсные команды на группы, а каждую группу храни в отдельном файле.
(Offline)
 
Ответить с цитированием
Старый 20.11.2008, 00:42   #10
Rosetau
AnyKey`щик
 
Регистрация: 06.11.2008
Сообщений: 10
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Чтение произвольной строки из ресурса

потом через Lib_res загружаю в него данные построчно
не могли бы вы ее выложить тут, не смог найти
(Offline)
 
Ответить с цитированием
Старый 20.11.2008, 16:36   #11
Skythrone
ПроЭктировщик
 
Регистрация: 02.07.2008
Сообщений: 105
Написано 7 полезных сообщений
(для 14 пользователей)
Ответ: Чтение произвольной строки из ресурса

Господа гуру, не могли бы вы реализовать возможность чтения из ресурса с произвольной позиции (оффсета) и заданной длины?

2Rosetau: старую версию либы я выложу завтра, сейчас я в командировке
(Offline)
 
Ответить с цитированием
Старый 28.11.2008, 04:02   #12
Shara
AnyKey`щик
 
Регистрация: 27.11.2008
Сообщений: 3
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Чтение произвольной строки из ресурса

Доброго времени суток форумчанам.
Как тут не однократно говорили - стандартными средствами - тормозит, а библиотеку сделать не выйдет.

сейчас использую вот такую функцию для чтения нужной строки:
function textread(a:integer; data:string): string;
var 
loopIndex:integer;
begin 
 text:=openResource('/'+data);
     for loopIndex := 0 to a do 
    begin 
      textread:=readLine(text);
    end;   
  closeResource(text);
end;
конечно же каждый раз перебирать весь файл - бред собачий. Но максимально что получилось вытянуть - использовать файлы с небольшим количеством строк и при загрузке загонять в массив строк, однако чтение ~ 70 строчного файла на SE500 занимает ~6-10секунд! Так ладно - загрузили и забыли, но при переключении на другой файл во время работы приложения это недопустимо.

Вот вы говорите что нельзя такую либу написать. Но меня тогда гложет любопытство, каким образом работают java книги? (я буду ставить в пример Tequila cat book reader) Мощная читалка и держит файлы ЛЮБОГО размера (свыше 6000 строк точно), использует графические шрифты, моментально грузит файл (до 5ти сек, а то и меньше на SE500) и никаких тормозов и подгрузок. абсолютно никаких. во время использования нет.

Я взял скомпилированный мидлет и попытался распаковать самый "выпяченный" класс (BookReaderMidlet.class) - результат довольно интересен (см вложение). Если даже чтение определённых строк не реализуемо, то "быстрое" чтение реализуемо вполне. Вопрос как. Прошу поделиться вашими соображениями на этот счёт и надеюсь на помощь.


ADD.
Похоже используется вот этот метод, но на первый взгляд мало чем отличается. тот же перебор.
import java.io.*;
import java.awt.*;
import java.applet.*;

public class Read extends Applet {

  TextArea ta = new TextArea();

  public void init() {
    setLayout(new BorderLayout());
    add(ta, BorderLayout.CENTER);
    try {
      InputStream in = 
        getClass().getResourceAsStream("read.txt"); 
      InputStreamReader isr = 
        new InputStreamReader(in);
      BufferedReader br = 
        new BufferedReader(isr);
      StringWriter sw = new StringWriter();
      PrintWriter pw = new PrintWriter(sw);
      String line;
       while ((line = br.readLine()) != null) {
        pw.println(line);
      }
      ta.setText(sw.toString());
    } catch (IOException io) {
      ta.setText("Ooops");
    }
  }
}
Вложения
Тип файла: txt bck.txt (10.8 Кб, 986 просмотров)

Последний раз редактировалось Shara, 28.11.2008 в 04:19. Причина: добавил листинг
(Offline)
 
Ответить с цитированием
Старый 02.12.2008, 14:57   #13
Shara
AnyKey`щик
 
Регистрация: 27.11.2008
Сообщений: 3
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Чтение произвольной строки из ресурса

оптимизировал всё что только смог. теперь 2 сек 50строк. на сейчас пойдёт, но вообще - не дело это...
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
чтение ресурса TXT Aziz Основной форум 12 26.02.2014 16:57
Формулу вращения вокруг произвольной оси Atomikc C++ 3 31.10.2008 09:02
русский текст из .txt ресурса beZ_probleM Основной форум 7 18.10.2008 01:37
Развитие ресурса... johnk Наш форум 14 05.03.2007 18:56


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com