forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Полезные функции (http://forum.boolean.name/forumdisplay.php?f=17)
-   -   Строчка из банка (http://forum.boolean.name/showthread.php?t=13340)

DeeJex 13.09.2010 22:37

Строчка из банка
 
Срочно нужна была такая функция, вот накарябал быстренько, может кому и понадобится
Код:

Global Bank_ReadLine_EndPos

;sample

bank = CreateBank(16)
PokeByte bank,0,Asc("L")
PokeByte bank,1,Asc("O")
PokeByte bank,2,Asc("L")
PokeByte bank,3,Asc("!")
PokeByte bank,4,13
PokeByte bank,5,10
PokeByte bank,6,Asc("O")
PokeByte bank,7,Asc("L")
PokeByte bank,8,Asc("O")
PokeByte bank,9,Asc("L")
PokeByte bank,10,Asc("O")
PokeByte bank,11,13
PokeByte bank,12,Asc("D")
PokeByte bank,13,Asc("I")
PokeByte bank,14,Asc("C")
PokeByte bank,15,Asc("K")


Print Bank_ReadLine(bank,0)
Print Bank_ReadLine(bank,Bank_ReadLine_EndPos)
Print Bank_ReadLine(bank,Bank_ReadLine_EndPos)
WaitKey
End

;/sample

Function Bank_ReadLine$(bank,start)
Local tmp_r$,tmp_s
Bank_ReadLine_EndPos = start

While 666

If Bank_ReadLine_EndPos > BankSize(bank)-1 Then Exit

        tmp_s = PeekByte(bank,Bank_ReadLine_EndPos)
        If tmp_s = 13 Then
                If PeekByte(bank,Bank_ReadLine_EndPos+1) = 10 Then Bank_ReadLine_EndPos = Bank_ReadLine_EndPos + 1
                Exit
        End If

        tmp_r = tmp_r + Chr(tmp_s)
        Bank_ReadLine_EndPos = Bank_ReadLine_EndPos + 1

Wend

Bank_ReadLine_EndPos = Bank_ReadLine_EndPos + 1

Return tmp_r

End Function


Crayzi 14.09.2010 23:33

Ответ: Строчка из банка
 
Цитата:

Сообщение от DeeJex (Сообщение 161955)
Срочно нужна была такая функция, вот накарябал быстренько, может кому и понадобится

Можно чуть по проще сделать...

...10 минут спустя...
Код:

;Создаем банк "test" c текстом "Hello World!"
test=Bank_SaveLine("Hello World!")
;Извлекаем из банка "test" записанный текст и печатаем его
Print Bank_ReadLine(test)
;Ждем нажатия клавиши перед выключением программы (чтобы успеть прочесть результат)
WaitKey

;Функция записи текста в банк
Function Bank_SaveLine(Save_Text$)
        Local TextLen=Len(Save_Text$)
       
        bank = CreateBank(TextLen)
        For t=0 To (TextLen-1)
                PokeByte bank,t,Asc(Mid(Save_Text$,t+1,1))
        Next

        Return bank
End Function

;Функция чтения текста из банка
Function Bank_ReadLine$(bank)
        Local BankScale=BankSize(bank),t,ReadText$

        For t=1 To BankScale
                ReadText$=ReadText$+Chr(PeekByte(bank,t-1))
        Next
Return ReadText$
End Function

Терь можно и у ся в игрухе юзать)

Ganociy 14.09.2010 23:37

Ответ: Строчка из банка
 
а для чего это?

Crayzi 15.09.2010 15:20

Ответ: Строчка из банка
 
Цитата:

Сообщение от Ganociy (Сообщение 162123)
а для чего это?

То что сделал я, просто для записи/чтения текста в банке, я просто сам не сразу понял что делает функция DeeJex`а, и попытался перевести ее на свой лад, но потом вроде разобрался. Поидее его функция позволяет извлекать из банка записанный туда текст построчно, похоже на чтение пакетов UPD, можно попробовать использовать при создании собственного Input(ввода текста).

П.с. Если я не так понял, тогда сорь.


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot