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

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

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > Полезные функции

Полезные функции Выкладываем полезные функции, чтоб не изобретать велосипед заново...

Ответ
 
Опции темы
Старый 21.06.2007, 21:58   #1
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Нарезка большой строки по разделителю (перенос по словам))

[blitz]
Data "'В теме (ссылка) было удалено мое сообщение, следующее за сообщением номер ##. Я же "
Data "считаю, что мое сообщение было конкретным ответом по теме, и модератор не имел "
Data "оснований для его удаления, ибо сообщение не противоречило ни одному из правил "
Data "форума.' Если Ваш вопрос будет похож на пример 1, то не ждите, что на него ответят. В "
Data "вопросе должна ОБЯЗАТЕЛЬНО присутствовать ссылка на тему с проблемой. "
Data "Абстрактные проблемы типа: 'ну что-то у вас модеры совсем разбаловались, чистят все "
Data "подряд.' рассматриваться НЕ будут. НЕ стоит в качестве мотивации своей правоты "
Data "приводить случаи с другими пользователями или намекать на какие-либо другие "
Data "проблемы. Ибо речь идет не о тех проблемах, и описание других проблем будет флудом, "
Data "который просто-напросто удалят."
;===========================
;формирование строки
Local InputString$=""
temp$=""
For i=1 To 10
Read temp
InputString$=InputString$+temp
Next
DebugLog InputString$
;============================
Local SEPARATOR$=" ";<= разделитель
Local MAXLEN%=40;<= длина нарезки
LNINSTR%=Len(InputString$)
Dim MAP$(LNINSTR%);<= ресивер
Local ST%=1
Local LINDX%=1
Local CINDX%=1
Local MapPtr%=0;<=индекс заполнения ресивера
While True
CINDX=Instr(InputString$,SEPARATOR$,LINDX)
If CINDX=0
CINDX=LNINSTR
If CINDX-ST>MAXLEN
MAP(MapPtr)=Mid(InputString$,ST,LINDX-ST-1)
MapPtr=MapPtr+1
ST=LINDX
EndIf
MAP(MapPtr)=Mid(InputString$,ST,CINDX-ST)
MapPtr=MapPtr+1
Exit
EndIf
If CINDX-ST>MAXLEN
MAP(MapPtr)=Mid(InputString$,ST,LINDX-ST-1)
MapPtr=MapPtr+1
ST=LINDX
EndIf
LINDX=CINDX+1
Wend
;======================
;вывод
DebugLog ""
For i=0 To MapPtr
DebugLog MAP(i)
Next
WaitKey()
End
[/blitz]
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 22.06.2007, 02:18   #2
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: Нарезка большой строки по разделителю (перенос по словам))

[blitz]
Data "'В теме (ссылка) было удалено мое сообщение, следующее за сообщением номер ##. Я же "
Data "считаю, что мое сообщение было конкретным ответом по теме, и модератор не имел "
Data "оснований для его удаления, ибо сообщение не противоречило ни одному из правил "
Data "форума.' Если Ваш вопрос будет похож на пример 1, то не ждите, что на него ответят. В "
Data "вопросе должна ОБЯЗАТЕЛЬНО присутствовать ссылка на тему с проблемой. "
Data "Абстрактные проблемы типа: 'ну что-то у вас модеры совсем разбаловались, чистят все "
Data "подряд.' рассматриваться НЕ будут. НЕ стоит в качестве мотивации своей правоты "
Data "приводить случаи с другими пользователями или намекать на какие-либо другие "
Data "проблемы. Ибо речь идет не о тех проблемах, и описание других проблем будет флудом, "
Data "который просто-напросто удалят."
;===========================
Graphics 800,600,32,2
SetBuffer BackBuffer()
font=LoadFont("Arial cyr",20)
SetFont font
;формирование строки
Local InputString$=""
temp$=""
For i=1 To 10
Read temp
InputString$=InputString$+temp
Next
DebugLog InputString$
;============================
Local SEPARATOR$=" ";<= разделитель
Local MAXLENPIX%=400+FontWidth();<= длина нарезки
LNINSTR%=Len(InputString$)
Dim MAP$(LNINSTR%);<= ресивер
Local ST%=1
Local LINDX%=1
Local CINDX%=1
Local MapPtr%=0;<=индекс заполнения ресивера

While True
CINDX=Instr(InputString$,SEPARATOR$,LINDX)
If CINDX=0
CINDX=LNINSTR
temp=Mid(InputString$,ST,CINDX-ST-1)
If StringWidth(temp)>MAXLENPIX
MAP(MapPtr)=Mid(InputString$,ST,LINDX-ST-1)
MapPtr=MapPtr+1
ST=LINDX
EndIf
MAP(MapPtr)=Mid(InputString$,ST,CINDX-ST)
MapPtr=MapPtr+1
Exit
EndIf
temp=Mid(InputString$,ST,CINDX-ST-1)
If StringWidth(temp)>MAXLENPIX
MAP(MapPtr)=Mid(InputString$,ST,LINDX-ST-1)
MapPtr=MapPtr+1
ST=LINDX
EndIf
LINDX=CINDX+1
Wend
;======================
;вывод
Line MAXLENPIX,0,MAXLENPIX,GraphicsHeight()
For i=0 To MapPtr
Text 0,i*FontHeight(),MAP(i)
Next
Flip
WaitKey()
End
[/blitz]
ограничение в пикселях ( а не в байтах)
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 22.06.2007, 02:19   #3
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: Нарезка большой строки по разделителю (перенос по словам))

Варианты не особо шустрые - но дают представление о принципе
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 22.06.2007, 02:38   #4
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Нарезка большой строки по разделителю (перенос по словам))

интересный пример.
ЗЫ. Ну Импер, mod 1 заюзает для получения дробной части, DebugLog для вывода, респект вобщем.
(Offline)
 
Ответить с цитированием
Старый 25.12.2007, 16:40   #5
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: Нарезка большой строки по разделителю (перенос по словам))

см. также http://forum.boolean.name/showthread.php?t=5428
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос истории Opera ViNT Болтовня 7 14.10.2009 12:43
Перенос с Blitz3D на другой движок G.A.D Болтовня 16 05.06.2009 22:28
Ищу функцию для разбивки строки по разделителю Aceton C++ 3 26.03.2009 22:52
перенос текста, вИходящего за предел экрана temned Основной форум 13 22.12.2008 22:25


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


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