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

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

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

Ответ
 
Опции темы
Старый 20.09.2008, 16:46   #106
Skythrone
ПроЭктировщик
 
Регистрация: 02.07.2008
Сообщений: 105
Написано 7 полезных сообщений
(для 14 пользователей)
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.

Если это возможно, хорошо бы иметь библиотеки для быстрого преобразования кодировок строк. На форуме описано несколько (примерно одинаковых) решений для перекодирования win1251->UTF8, но это не очень удобно. Самое главное - что данные алгоритмы работают медленно. Приходится посимвольно считывать строку, брать Ord символа, потом делать Chr.
На реальных телефонах подобная обработка текста размером 5-10 кб уже ощутимо тормозит. Да и память жрёт.

Вопрос - есть ли на J2ME возможность быстрой (встроенной или низкоуровневой) конвертации кодировки строки?
(Offline)
 
Ответить с цитированием
Старый 21.09.2008, 08:01   #107
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.

Сообщение от Skythrone Посмотреть сообщение
Если это возможно, хорошо бы иметь библиотеки для быстрого преобразования кодировок строк. На форуме описано несколько (примерно одинаковых) решений для перекодирования win1251->UTF8, но это не очень удобно. Самое главное - что данные алгоритмы работают медленно. Приходится посимвольно считывать строку, брать Ord символа, потом делать Chr.
На реальных телефонах подобная обработка текста размером 5-10 кб уже ощутимо тормозит. Да и память жрёт.

Вопрос - есть ли на J2ME возможность быстрой (встроенной или низкоуровневой) конвертации кодировки строки?
Действительно, в Java есть встроенный конвертер строк с одной кодировки в другую. Но я что-то стремаюсь его использовать. Может оказаться так, что на одном телефоне будет нормально работать, а другой какой-нибудь "серый" телефон может и не знать таких кодировок. Короче, такую библиотеку можно написать и довольно легко, но я тебя предупредил.
Всё же легче создать собственный алгоритм. Пусть медленно, зато надежно. Я могу добавить функции переконвертации строк, например в библиотеку Lib_str.
(Offline)
 
Ответить с цитированием
Старый 21.09.2008, 08:59   #108
Skythrone
ПроЭктировщик
 
Регистрация: 02.07.2008
Сообщений: 105
Написано 7 полезных сообщений
(для 14 пользователей)
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.

Ну, тогда в этом случае серый телефон всё равно не сможет отобразить символы на экране.

В общем, я буду тебе благодарен за либу.

И если есть возможность ускорить загрузку строк из тестовых ресурсов, будет тоже здорово.
(Offline)
 
Ответить с цитированием
Старый 21.09.2008, 10:13   #109
Romanzes
Разработчик
 
Аватар для Romanzes
 
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений
(для 637 пользователей)
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.

Может кто-нить сделать либу для загрузки ресурса в виде строки?
(Offline)
 
Ответить с цитированием
Старый 21.09.2008, 16:44   #110
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.

Я наверно смогу =) Как либу назвать?
(Offline)
 
Ответить с цитированием
Старый 21.09.2008, 17:12   #111
Romanzes
Разработчик
 
Аватар для Romanzes
 
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений
(для 637 пользователей)
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.

Гы. Самое сложное в написании библотеки - придумать название . Lib_res2str. Или можно Lib_res, на случай, если кто добавит функции для нормальной работы с ресурсами.
(Offline)
 
Ответить с цитированием
Старый 21.09.2008, 17:51   #112
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.

Офигеть... Правильно мне сегодня друг сказал... По воскресениям телепатические способности усиливаются. Уже сделал =) И назвал именно Lib_res2str =) Вот: http://wc.webhop.net:8080/res2str.zip Считывает ресурс в строку в ASCII, могу попробовать сделать дополнительный параметр функции, который бы давал понять функции в какой кодировке читать ресурс - ASCII или UTF-8 =) Пока либу не выкладываю, так как на самом деле она слишком маленькая. Может ещё чего-то сделать и добавить?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Romanzes (21.09.2008)
Старый 21.09.2008, 18:46   #113
Skythrone
ПроЭктировщик
 
Регистрация: 02.07.2008
Сообщений: 105
Написано 7 полезных сообщений
(для 14 пользователей)
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.

Ага, сделай, пожалуйста, конвертилку в UTF8.
(Offline)
 
Ответить с цитированием
Старый 21.09.2008, 21:34   #114
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.

Так. На счёт utf-8 погорячился. Не знаю пока как сделать. Сделал чтение в ansi (windows-1251). Теперь русские буквы отображаются нормально. У меня мысль появилась, может сделать чтение в различных кодировках? Или не стоит заморачиваться? Сейчас может читать в ascii и ansi. Если из ресурса читаем текст, то читаем как ansi, а если читаем бинарные данные, то читаем как ascii. Это если я правильно всё понимаю. =) В общем вот, ссылка та же самая: http://wc.webhop.net:8080/res2str.zip
(Offline)
 
Ответить с цитированием
Старый 21.09.2008, 21:40   #115
Romanzes
Разработчик
 
Аватар для Romanzes
 
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений
(для 637 пользователей)
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.

Phantom_wc, спасибо! Вроде маленькая либа, а облегчает жизнь. Может сделаешь, чтоб можно было нормально (без зависания мидлета) работать с ресурсами? А то ReadLine, как известно, не айс.
Да, телепатия усиливается! Только это не от воскресенья, а от большого адронного коллайдера, там вчера что-то навернулось
(Offline)
 
Ответить с цитированием
Старый 21.09.2008, 21:47   #116
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.

Только вот я чего не понимаю. Чтобы русские буквы читать, делаем:
(char)((b>=0xc0&&b<=0xFF)?b+0x350:b)
В принципе всё понятно, конвертируем в юникод. Видел такие примеры на нескольких сайтов. И это работает. Но ведь в юникоде каждый символ занимает от 1 до 4 байт (так-то я говорю про utf-8, а не про юникод, или это одно и то же?), в частности символы русского языка - два байта. Поэтому такой вопрос. Как мы можем загнать в тип char русский символ в два байта, если он занимает в памяти один байт? О_о или я чего-то жёстко не понимаю?
(Offline)
 
Ответить с цитированием
Старый 21.09.2008, 21:50   #117
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.

Romanzes, так. А какие именно функции сделать?
(Offline)
 
Ответить с цитированием
Старый 21.09.2008, 22:11   #118
Romanzes
Разработчик
 
Аватар для Romanzes
 
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений
(для 637 пользователей)
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.

Ну, там ReadLine нормальную. Больше не могу придумать
(Offline)
 
Ответить с цитированием
Старый 22.09.2008, 10:09   #119
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.

Вот: http://wc.webhop.net:8080/res.zip
Там ридми лежит в архиве. Возможно лишнего наворотил заумного, но сделал это только чтобы либа весила меньше и не было почти одинаковых кусков кода в ней. И назвал Lib_res. Если одобрите, создам тему и выложу как полагается =)
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Romanzes (22.09.2008)
Старый 22.09.2008, 14:17   #120
Cliffe Snake
Нуждающийся
 
Аватар для Cliffe Snake
 
Регистрация: 22.09.2008
Сообщений: 74
Написано 8 полезных сообщений
(для 12 пользователей)
Печаль Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.

У меня на теле в JVM нет ввода русских букв.
Сделайте плиз либу, чтобы был програмнный ввод символов.
Я на MP программку писал, может чем поможет.

Вот код:
program Programniy_vvod_russkimi_bukvami;
var 
ok:command
      
n,k,nl,kl,nn,kn,tim,np:integer
      
rd,ru,ed,eu,td,tu,txt,s:string
      
upc,lng:string;
  
begin 
    ok
:=createcommand('OK',CM_OK,2);
    
addcommand(ok);
    
rd:='.,?!0: _1=+-абвг2 деёжз3ийкл4 мно5  прс6  туфх7 цчшщъ8ыьэюя9';
    
ru:='.,?!0: _1=+-АБВГ2 ДЕЁЖЗ3ИЙКЛ4 МНО5  ПРС6  ТУФХ7 ЦЧШЩЪ8ЫЬЭЮЯ9';
    
ed:='.,?!0: _1=+-abc2  def3  ghi4  jkl5  mno6  pqrs7 tuv8  wxyz9 ';
    
eu:='.,?!0: _1=+-ABC2  DEF3  GHI4  JKL5  MNO6  PQRS7 TUV8  WXYZ9 ';
    
tu:=ru;td:=rd;
    
upc:='UPCASE';
    
lng:='rus';
    
repeat
      
     k
:=getkeyclicked;
     if (
k<>0then kl:=k
     
      
if (kl=42then begin 
        
if (upc='UPCASE'then upc:='downcase' else upc:='UPCASE';
        
kl:=0;
      
end;
      
      if (
kl=-7then begin 
        
if (lng='rus'then lng:='eng' else lng:='rus';
        
kl:=0;
      
end;
     
      if (
kl>47) and (nl>47then if (nl=klthen nn:=nn+1;
     
      if (
nn>6then nn:=1;
      if (
nl>42) and (kl<>nl) and (nn>0) and (kl<>0)then begin
        kn
:=nn+(nl-48)*6+4;
        
nn:=0;
       
end;
         
      if (
nn>=1then kl:=else nl:=kl;
      
      if (
lng='rus'then 
        begin
          td
:=rd;
          
tu:=ru;
        
end 
      
else
        
begin
          td
:=ed;
          
tu:=eu;
        
end
       if (
np<>nnthen tim:=0
       if (
tim>30then begin kn:=nn+(nl-48)*6+4tim:=0nn:=0end;
        
np:=nn;
        
tim:=tim+1;
      
      if (
kn>4then
      begin
        
if upc='UPCASE' then 
          txt
:=txt+getchar(tu,kn-5
         else
          
txt:=txt+getchar(td,kn-5);
        
kn:=0;
      
end
      
      
if (kl=-8) and (length(txt)>0then begin 
        txt
:=copy(txt0length(txt)-1);
        
kl:=0;
      
end;
      
     
kn:=nn+(nl-48)*6+4;
     if 
upc='UPCASE' then 
          s
:=getchar(tu,kn-5
         else
          
s:=getchar(td,kn-5);
     
kn:=0;
      
     
setColor(200255255);
     
fillrect(0,0,240,320);
     
setColor(000);
     
drawtext(''+nl,10,10);
     
setColor(02550);
     
drawtext(s,10,30);
     
drawtext(upc,50,50);
     
drawtext(lng,10,50);
     
setColor(00255);
     
drawtext(txt,10,70);
     
drawtext(''+tim,10,90);
     
repaint;
     
until (kl=-) or (getclickedcommand=ok);
  
end

Последний раз редактировалось ViNT, 22.09.2008 в 21:59. Причина: Используйте теги для экономии места и улучшения понятности кода
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ну хоть здесь мне подскажут Miha Библиотеки 5 14.12.2007 12:50
Написание ActiveX на PB - миф или реальность? Maxus PureBasic 4 19.06.2007 10:41
Написание игры на С++ Leito C++ 16 13.06.2007 13:07
Post-запросы Роман Основной форум 20 31.03.2006 22:53


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


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