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

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

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

Основной форум Сюда все проблемы связанные с программированием.

Ответ
 
Опции темы
Старый 23.11.2010, 13:58   #1
Rameron
Оператор ЭВМ
 
Регистрация: 04.11.2010
Сообщений: 38
Написано одно полезное сообщение
font32 - побуквенный вывод текста...

Задача состоит в том, чтобы в помощью библиотеки font32 побуквенно выводить на экран небольшие отрывки текста. Но проблема заключается вот в чем:
При каждом использовании Format, текст заново форматируется, по этому получается что-то вроде:
|Сюжет разворачивается во вр|
|время шторма, когда на ферме|
|главных персонажей Тома и Дж|
|Джиллиан появляется... |
вместо:
|Сюжет разворачивается во |
|время шторма, когда на ферме|
|главных персонажей Тома и |
|Джиллиан появляется... |

//strDraw - побуквенно выводимый на дисплей текст
//strAlLoaded - текст, что выведен ранее на дисплей и отрисовывается сразу

rc.init(5); //текст выводится с поворотом на 90'
TextWindow(textBorder,textBorder,getWidth-textBorder,getHeight-textBorder); //TextBorder - зазор
for i:=0 to Length(strDraw) do
  
begin
    keyClicked
:=getKeyClicked;
    
//если нажато 5, вывести весь текст и не мучать юзера
    
if keyClicked=KE_KEY5 then
      begin
        s
:=Format(strAlLoaded copy(strDraw,0,Length(strDraw)),0);
        
DrawTextWindow;
        
rc.repaint;
        break;
      
end;
    
//отрисовать уже выведенный ранее текст (если дисплей без него, то переменная strAlLoaded='') и дорисовывать по букве нового
    
s:=Format(strAlLoaded copy(strDraw,0,i),0);
    
DrawTextWindow;
    
rc.repaint;
    
delay(10);
  
end
Просьба помочь с алгоритмом...
P.S. Пословно уже делал - такой способ не подходит.

Последний раз редактировалось Rameron, 23.11.2010 в 15:48.
(Offline)
 
Ответить с цитированием
Старый 24.11.2010, 01:58   #2
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: font32 - побуквенный вывод текста...

Так ведь функция format может работать и в режиме добавления текста. Просто вместо 0 поставь 1 и добавляй текст побуквенно или пословно. Да и экран после вывода каждой буквы нужно будет снова очищать.
(Offline)
 
Ответить с цитированием
Старый 24.11.2010, 02:02   #3
Rameron
Оператор ЭВМ
 
Регистрация: 04.11.2010
Сообщений: 38
Написано одно полезное сообщение
Ответ: font32 - побуквенный вывод текста...

Сообщение от odd Посмотреть сообщение
Так ведь функция format может работать и в режиме добавления текста. Просто вместо 0 поставь 1. Да и экран после вывода каждой буквы нужно будет снова очищать.
Отпадает, поскольку сам процесс побуквенного вывода довольно ресурсо-емкий, да и текст рисуется не на чистом экране, а на картинке. Если её при выводе каждой буквы перерисовывать, то это вызовет тормоза, что в моем случае недопустимо.
(Offline)
 
Ответить с цитированием
Старый 24.11.2010, 02:13   #4
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: font32 - побуквенный вывод текста...

Тогда скорее всего придется вам писать собственный алгоритм разбиения строк и выводить потом текст побуквенно используя DrawString.
(Offline)
 
Ответить с цитированием
Старый 24.11.2010, 02:22   #5
Rameron
Оператор ЭВМ
 
Регистрация: 04.11.2010
Сообщений: 38
Написано одно полезное сообщение
Ответ: font32 - побуквенный вывод текста...

Сообщение от odd Посмотреть сообщение
Тогда скорее всего придется вам писать собственный алгоритм разбиения строк и выводить потом текст побуквенно используя DrawString.
Я уже так и подумал. Кстати, у меня такой еще вопрос - в font32 строки разбивались ориентировано используя пробелы между словами?
(Offline)
 
Ответить с цитированием
Старый 24.11.2010, 03:16   #6
Trazzy
Разработчик
 
Аватар для Trazzy
 
Регистрация: 24.11.2008
Адрес: UA
Сообщений: 504
Написано 110 полезных сообщений
(для 225 пользователей)
Ответ: font32 - побуквенный вывод текста...

Я конечно не в курсе, но вроде еще какими-то специальными символами..
__________________
Уважай собеседника, а лучше подари ему +
(Offline)
 
Ответить с цитированием
Старый 24.11.2010, 19:02   #7
Rameron
Оператор ЭВМ
 
Регистрация: 04.11.2010
Сообщений: 38
Написано одно полезное сообщение
Ответ: font32 - побуквенный вывод текста...

Сообщение от 2Fake Посмотреть сообщение
Я конечно не в курсе, но вроде еще какими-то специальными символами..
Ну насчет chr(32) + chr(13) я в курсе, я имел ввиду во время разбора строки.
(Offline)
 
Ответить с цитированием
Старый 26.11.2010, 01:20   #8
Trazzy
Разработчик
 
Аватар для Trazzy
 
Регистрация: 24.11.2008
Адрес: UA
Сообщений: 504
Написано 110 полезных сообщений
(для 225 пользователей)
Ответ: font32 - побуквенный вывод текста...

Хз, надо будет декомпилировать и посмотреть ))
__________________
Уважай собеседника, а лучше подари ему +
(Offline)
 
Ответить с цитированием
Старый 26.11.2010, 10:59   #9
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: font32 - побуквенный вывод текста...

Во время разбора строки алгоритм разбиения строк старается вывести в одну строку как можно больше слов ориентируясь по пробелам. Если какое-то слово уже не влезает в строку, то его переносят на следующую строку. Таким образом, алгоритм выводит текст по словам, а не по буквам и старается не разбивать слова на 2 куска. Исключение составляют только те случаи когда слово очень длинное и явно не влезает по ширине в строку даже если его одного выводить, в этом случае слово приходится разбивать на части и переносить.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо odd за это полезное сообщение:
GRAY_WOLF (26.11.2010), Rameron (27.11.2010)
Старый 27.11.2010, 03:39   #10
Rameron
Оператор ЭВМ
 
Регистрация: 04.11.2010
Сообщений: 38
Написано одно полезное сообщение
Ответ: font32 - побуквенный вывод текста...

Сообщение от odd Посмотреть сообщение
Во время разбора строки алгоритм разбиения строк старается вывести в одну строку как можно больше слов ориентируясь по пробелам. Если какое-то слово уже не влезает в строку, то его переносят на следующую строку. Таким образом, алгоритм выводит текст по словам, а не по буквам и старается не разбивать слова на 2 куска. Исключение составляют только те случаи когда слово очень длинное и явно не влезает по ширине в строку даже если его одного выводить, в этом случае слово приходится разбивать на части и переносить.
Спасибо за разъяснение алгоритма.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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