Раздел посвящен программированию с использованием Power Basic.
-
Dark Machine
-
- Продвинутый пользователь
-
-
- Сообщения: 126
- Зарегистрирован: 26.05.2004 (Ср) 13:12
Dark Machine » 17.06.2009 (Ср) 13:17
- Код: Выделить всё
FUNCTION WordBreakString (szIn AS ASCIIZ * 256, szOut AS ASCIIZ * 512, BYVAL MaxLineLength AS LONG) AS LONG
' breaks up szIn into LF =terminated strings not larger than maxLineLength
' returns: # of LF-terminated strings szOut
LOCAL Stat AS LONG, I AS LONG, J AS LONG
LOCAL inLEn AS LONG
LOCAL LenSzOut AS LONG
LOCAL pIN AS STRING PTR * 1, pOut AS STRING PTR * 1
LOCAL LineBReak AS LONG, LineLength AS LONG
pIn = VARPTR (szIn)
pOut = VARPTR (szOut)
inLEn = LEN (szIn)
I = 0
J = 0 ' characters this line
LOCAL forward AS LONG, backward AS LONG, Direction AS LONG
Forward = 1
Backward = -1
DECR pIn
DECR pOut
LineBreak = 0
Direction = Forward
LineLength = MaxLineLength
Stat = 0
WHILE I <= InLen
pIn = pIn + Direction
pOut = pOut + Direction
@Pout = @pin
J = J + Direction
I = I + direction
IF J = LineLength THEN
SELECT CASE @pin
CASE ",", " ",")","!","?" ' character OK to break on
LineBreak = -1
CASE ELSE
' go back to first qualifying break character and accept a smaller linelenght
Direction = Backward
DECR LineLength
END SELECT
ELSEIF I = InLen THEN
LineBreak = -1
END IF
IF LineBreak THEN
INCR pOut
@pOut = $LF
INCR Stat
Direction = Forward
LineLength = MaxLineLength
LineBreak = 0
J = 0
END IF
WEND
FUNCTION = Stat
END FUNCTION
-
jangle
-
- Википедик
-
-
- Сообщения: 3013
- Зарегистрирован: 03.06.2005 (Пт) 12:02
- Откуда: Нидерланды
jangle » 28.07.2009 (Вт) 15:04
Интересный код, спасибо!
-
Kumpel
-
- Начинающий
-
-
- Сообщения: 15
- Зарегистрирован: 02.01.2009 (Пт) 0:24
- Откуда: Украина, Львов
Kumpel » 31.07.2009 (Пт) 22:35
Действительно полезный код, но я использую его для динамических строк
- Код: Выделить всё
Function WordBreakString (szIn As String, szOut As String, ByVal MaxLineLength As Long) As Long
' breaks up szIn into LF =terminated strings not larger than maxLineLength
' returns: # of LF-terminated strings szOut
Local Stat As Long, I As Long, J As Long
Local inLEn As Long
Local LenSzOut As Long
Local pIN As String Ptr * 1, pOut As String Ptr * 1
Local LineBReak As Long, LineLength As Long
'!!! pIn = VarPtr (szIn)
pIn = StrPtr (szIn)
'!!!pOut = VarPtr (szOut)
pOut = StrPtr (szOut)
inLEn = Len (szIn)
'!!! Буфер на длинну исходной строки + *прогнозируемое кол-во "$LF"
szOut = Space$(inLEn + inLEn \ MaxLineLength)
'!!!
... дальше без изменений
Вернуться в Power Basic
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18