Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » FAQ по Bascom AVR и МК » Операторы работы со строками


Операторы работы со строками

Сообщений 1 страница 6 из 6

1

За основу взята информация отсюда: http://avr.ru/beginer/bascom/article4
Добавлено, доработано, исправлены ошибки.

Строка – это переменная, которая заключает в себе последовательность символов.
Она используется для ввода-вывода значений в текстовом формате.

Пример объявления строки:
Dim Mes as String * 10

Из этого примера мы видим, что переменная Mes может доходить до десяти символов. Каждый символ занимает один байт. Bascom автоматически добавляет дополнительный байт, обозначающий конец строки. Максимальная длина строки составляет  254  символа (+ дополнительный байт).

Переменные типа String позволяют сэкономить пространство оперативной памяти, где хранятся переменные, поскольку они (строки) работают с блоками данных , которые расположены в программной памяти.

Операторы, позволяющие работать со строками:

Bin – переводит число в его двоичное представление.
Dim Portstate As String * 8
PortD = 152
Portstate = Bin (PortD)
‘результат  Рortstate = 10011000

Str – преобразует число в строковое значение.
Dim Pstring As String * 10
Dim Varval As Integer
Varval = 15436
Pstring = Str (Varval)
‘ результат  Pstring = “15436”

Asc – преобразует  символ  в  значение  ASCII.
Dim Pstring As String*1
Dim Varval As Byte
Pstring = “A” ‘ (lat)
Varval = Asc(Pstring)
‘ результат  Varval = 65 (dec)

Hex – переводит  число  в  его  шестнадцатеричное   значение.
Dim Hval As Integer
Hval = 12345
Pstring = Hex (Hval)
‘ результат  Pstring = “3039”

Hexval – переводит  строку  с  шестнадцатеричным  числом  в  десятичное.
Dim Dval As Integer
Dim Instring As String * 2
Instring = “10”
Dval = Hexval (Instring)
‘ результат  Dval = 16

Space – создаёт  строку, состоящую  из  пробелов, что  весьма  удобно  при  форматировании  текста  и  организации  бегущей  строки  на  ЖК  дисплее.
Dim Pstring As String * 10
Dim Nval As Integer
Nval = 4
Pstring = Space (Nval)
‘ результат  Pstring =  “    “

String – возвращает  строку  из  нескольких  символов  указанного  ASCII  кода.
Dim Pstring As String * 10
Dim Nchar As Integer
Dim Charcode As Byte
Nchar = 6
Charcode = 88
Pstring = String (Nchar, Charcode)
‘ результат  Pstring = “XXХXXX”

Format – форматирует  входную  строку,  согласно  определённому  формату.
Dim Vxod As String * 6
Dim Vyxod As String * 8
Vxod  = “38.869”
Vyxod = Format (Vxod,  “+000.00”)
‘  результат  Vyxod  = “+038.86”

Fusing – форматирует переменную типа Single согласно формату строки, также может выполнять округление.
Dim Xval As Single
Dim Pstring As String * 4
Xval = 16.379
Pstring = Fusing (Xval, “маска”)
‘ результат  Pstring = “16.4”

Маска - это строковая константа, которая всегда должна начинаться с #.
После десятичной точки вы можете указать количество цифр, которое требуется для строки:
#. ### даст результат, например, 123.456.
Округление используется, когда вы используете знак #.
Таким образом, 123.4567 будет преобразовано в 123.457
Если округление не должно выполняться, вы можете использовать знак & вместо знака #. Но только после точки.
#. &&& приведет к 123.456, когда переменная имеет значение 123.4567

Instr – возвращает  положение  подстроки  в  строке.
Dim Complstring As String * 13
Dim Substring As Sring * 6
Dim Pval As Integer
Complstring = “Bascom cоurse”
Substring = “cоurse”
Pval = Instr (Complsring, Substring)
‘ результат  Pval = 8

Lcase – обращает  все  символы  строки  в  нижний  регистр.
Dim Instring As String * 13
Dim Lowstring As String * 13
Instring = “Bascom  Course”
Lowstring  = Lcase (Instring)
‘результат  Lowstring = “bascom  cоurse”

Ucase – обращает  все  символы  строки  в  верхний  регистр.
Dim Instring As String * 13
Dim Higtstring As String * 13
Instring = “Bascom Course”
Higtstring  = Ucase (Instring)
‘результат  Higtstring = “BASCOM COURSE”

Len – возвращает  длину  строки.
Dim Instring As String * 20
Dim Lval As Integer
Instring = “Bascom tasks”
Lval = Len (Instring)
‘ результат   Lval = 12

Mid – возвращает  часть  из  середины  строки.
Dim Instring As String * 13
Dim Pstring As String * 3
Dim Sval As Integer
Dim Nval As Integer
Instring = “Bascom Course”
Sval = 4
Nval =3
Pstring = Mid (Instring, Sval, Nval)
‘результат  Pstring = “com”

Mid – также  можно  использовать  для  замещения  части  строки  другой  строкой.
Dim Instring As String * 13
Dim Pstring As  String * 3
Instring = “Bascom is not easy”
Pstring = “very”
Sval = 10
Nval =4
Mid (Pstring, Sval, Nval) = Instring
‘результат  Instring = “Bascom is very easy”

Left – возвращает  несколько  символов  с  начала  строки.
Dim Instring As String * 13
Dim Leftstring As  tring * 3
Dim Pval As Integer
Instring  = “Bascom Course”
Pval = 3
Leftstring = Left (Instring, Pval)‘ результат  Leftstring = “Bas”

Right – возвращает  несколько  символов  с  конца  строки.
Dim Instring As String * 13
Dim Rightstring As String * 3
Dim Pval As Integer
Instring = “Bascom Course”
Pval = 3
Rightstring = Right (Instring, Pval)
‘результат  Rightstring = “rse”

Ltrim – удаляет  пробелы  в  начале  статьи.
Dim Instring As String * 10
Dim Pstring As String * 10
Insring = “    course”
Pstring = Ltrim (Instring)
‘ результат   Pstring = “course”

Rtrim – удаляет  пробелы  в  конце  строки.
Dim Instring As String * 10
Dim Pstring As String * 10
Instring  = “  course  “
Pstring  =  Rtrim (Pstring)
‘результат  Pstring = “  course”

Trim -  удаляет  пробелы  в  начале  и  конце  строки.
Dim Instring As String * 10
Dim Pstring As String * 10
Instring = “  course  “
Pstring = Trim (Instring)
‘ результат  Pstring = “course”

Split - разбивает строку на элементы массива.
Dim Instring As  String * 15
Dim Ar(5) As Byte
Dim count As Byte
Instring = “11,22,33,44,55“
count = Split( Instring , Ar(1) , ",")  ‘ результат:
        count = 5
        Ar(1) = 11
        Ar(2) = 22
        Ar(3) = 33
        Ar(4) = 44
        Ar(5) = 55
Предыдущее содержимое массива будет перезаписано.
Количество элементов массива должно быть не меньше искомого количества значений в строке, «излишки» будут проигнорированы.
При обнаружении пустых данных будет создан пустой элемент. Таким образом, "11,22,33,,55" позволит создать 5 элементов. Элемент 4 будет пустым.

Отредактировано Nord (2019-05-09 21:40:11)

+4

2

А ещё есть:
pos = CHARPOS(string , search [,start [,SAFE]])
DELCHAR string, pos
DELCHARS string, value
INSERTCHAR string, pos, char

Отредактировано sla174 (2019-05-10 07:10:19)

+1

3

Str2digits - переводит строку состоящую из чисел в числа

dim s as string * 6, ar(6) as byte

s="12345"
str2digits s,ar(1)                     'ar(1) = 5 ar(2) = 5 ar(3) = 4 ar(4) = 3 ar(5) = 2 ar(6) = 1

первый байт указывает на количество чисел.

Пример:
Имеем число 1258 . Нужно раскидать по числам для вывода на 7 сег. индикатор

a =1258
s=str(a)
str2digits s,ar(1)

всё!. выводим на индикатор с ar(2)

Отредактировано kip (2019-05-09 21:15:16)

+1

4

Insertchar  -  крайне полезная функция, чтобы не использовать очень прожорливую Fusing

  Insertchar "1234" , 4 , "."

  получаем  -  "123.4"

+1

5

Согласен с "очепятками"... ;)
Исправлено.
Биг сорри...  :blush:

Отредактировано Nord (2019-05-09 21:40:37)

0

6

Забыли про VAL.
Конвертирует строку в число.
https://avrhelp.mcselec.com/index.html?val.htm

Код:
$regfile = "m48def.dat"                                   ' specify the used micro
$crystal = 8000000                                         ' used crystal frequency
$baud = 19200                                               ' use baud rate
$hwstack = 32                                               ' default use 32 for the hardware stack
$swstack = 10                                               ' default use 10 for the SW stack
$framesize = 40                                             ' default use 40 for the frame space
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0

Dim A As Byte , S As String * 10

S = "123"
A = Val(s)                                                 'convert string
Print A                                                      '123

+1


Вы здесь » Программирование ATMEL в BASCOM. » FAQ по Bascom AVR и МК » Операторы работы со строками