Библиотека работы со строками String

mikroPascal PRO для ARM включает библиотеку, которая автоматизирует задачи, связанные с строкой.

Функции библиотеки

memchr

Прототип

function memchr(p : ^byte; ch : byte; n : word) : dword;

Описание

Функция находит первое вхождение байта ch в начальных n словах области памяти, начиная с адреса p. Функция возвращает смещение этого события из адреса памяти p или 0xFFFFFFFF, если ch не был найден.

Для параметра p вы можете использовать либо числовое значение (литерал / переменная / константа), указывающее адрес памяти, либо разыменованное значение объекта, для примера @mystring или @GPIO_PORTB.

Пример
txt := 'mikroElektronika';

res := memchr(@txt, 'e', 16);  // Пример locates first occurrence of the letter 'e' in the string 'txt' in the first 16 characters of the string

memcmp

Прототип

function memcmp(p1, p2 : ^byte; n : word) : integer;

Описание

Функция возвращает положительное, отрицательное или нулевое значение, указывающее связь первых n слов областей памяти, начиная с адресов p1 и p2.

Эта функция сравнивает две области памяти, начиная с адресов p1 и p2, для n слов и возвращает значение, указывающее их соотношение следующим образом:

Величина     значение
< 0       s1 "меньше, чем" s2
= 0       s1 "равно" s2
> 0       s1 "больше чем" s2

Значение, возвращаемое функцией, определяется разницей между значениями первой пары слов, которые различаются в сравнении строк.

Для параметров p1 и p2 вы можете использовать либо числовое значение (literal / variable / constant), указывающее адрес памяти, либо разыменованное значение объекта, для примера @mystring или @GPIO_PORTB.

Пример
txt := 'mikroElektronika';
txt_sub := 'mikro';

res := memcmp(@txt, @txt_sub, 16);  // returns 69, which is ASCII code of the first differing character - letter 'E'

memcpy

Прототип

procedure memcpy(p1, p2 : ^byte; nn : word);

Описание

Функция копирует nn слов из области памяти, начиная с адреса p2, в область памяти, начиная с p1. Если эти буферы памяти перекрываются, функция memcpy не может гарантировать копирование слов перед их перезаписью. Если эти буферы перекрываются, используйте функцию memmove.

Для параметров p1 и p2 вы можете использовать либо числовое значение (literal / variable / constant), указывающее адрес памяти, либо разыменованное значение объекта, для примера @mystring или @GPIO_PORTB.

Пример
txt := 'mikroElektronika';
txt_sub := 'mikr';

memcpy(@txt+4, @txt_sub, 4);  // string 'txt' will be populated with the first 4 characters of the 'txt_sub' string, beginning from the 4th character

memmove

Прототип

procedure memmove(p1, p2 : ^byte; nn : word);

Описание

Функция копирует nn слов из области памяти, начиная с адреса p2, в область памяти, начиная с p1. Если эти буферы памяти перекрываются, функция Memmove гарантирует, что слова в p2 будут скопированы на p1 перед перезаписью.

Для параметров p1 и p2 вы можете использовать либо числовое значение (literal / variable / constant), указывающее адрес памяти, либо разыменованное значение объекта, для примера @mystring или @GPIO_PORTB.

Пример
txt := 'mikroElektronika';
txt_sub := 'mikr';

memmove(@txt+7, @txt_sub, 4);  // string 'txt' will be populated with first 4 characters of the 'txt_sub' string, beginning from the 7th character

memset

Прототип

procedure memset(p : ^byte; character : byte; n : word);

Описание

Функция заполняет первые n байтов в области памяти, начиная с адреса p со значением символа слова.

Для параметра p вы можете использовать либо числовое значение (литерал / переменная / константу), указывающее адрес памяти, либо разыменованное значение объекта, для примера @mystring или @GPIO_PORTBs.

Пример
txt := 'mikroElektronika';

memset(@txt, 'a', 2);  // routine will copy the character 'a' into each of the first 'n' characters of the string 'txt', 

strcat

Прототип

procedure strcat(var s1, s2 : string);

Описание

Функция добавляет значение строки s2 в строку s1 и завершает s1 с нулевым символом.

Пример
txt := 'mikroElektronika';

txt[3] := 0;
strcat(txt, '_test');  // routine will append the '_test' at the place of the first null character, adding terminating null character to the result

strcat2

Прототип

procedure strcat2(var l1, s1, s2 : string);

Описание

Процедура присоединяет строку s2 в конце строки s1 или к первому нулевому символу s1 и помещает результирующую строку в строку l.

Пример
txt := 'mikroElektronika';
txt_sub := '_Test';
l1 := string[21];

strcat2(l1, txt, txt_sub);  // routine will adjoin strings txt and txt_sub and place the result into l; l = mikroElektronika_Test

strchr

Прототип

function strchr(var s : string; ch : byte) : dword;

Описание

Функция ищет строку s для первого появления символа ch. Нулевой символ, завершающий s, не входит в поиск.

Функция возвращает позицию (индекс) первого символа ch, найденного в s; если совпадающий символ не найден, функция возвращает 0xFFFFFFFF.

Пример
txt := 'mikroElektronika';

res := strchr(txt, 'E');  // routine will locate the character 'E' in the 'txt' string, and return the position of the character

strcmp

Прототип

function strcmp(var s1, s2 : string) : integer;

Описание

Функция лексикографически сравнивает содержимое строк s1 и s2 и возвращает значение, указывающее их взаимосвязь:

Величина     значение
< 0       s1 "меньше, чем" s2
= 0       s1 "равно" s2
> 0       s1 "больше чем" s2

Значение, возвращаемое функцией, определяется разницей между значениями первой пары слов, которые различаются в сравнении строк.

Пример
txt := 'mikroElektronika';
txt_sub := 'mikr';

res := strcmp(txt,txt_sub);  // compares strings 'txt' and 'txt_sub' and returns returns a difference between the first differing characters, in this case 69 

strcpy

Прототип

procedure strcpy(var s1, s2 : string);

Описание

Функция копирует значение строки s2 в строку s1 и добавляет нулевой символ в конец s1.

Пример
txt := 'mikroElektronika';
txt_sub := 'mikr';

strcpy(txt,txt_sub);  // copies string 'txt_sub' to 'txt'

strlen

Прототип

function strlen(var s : string) : dword;

Описание

Функция возвращает длину в словах строки s. Длина не включает нулевой завершающий символ.

Пример
txt := 'mikroElektronika';

res = strlen(txt);  // calculates the length of the 'txt' string, result = 16

strncat

Прототип

procedure strncat(var s1, s2 : string; size : word);

Описание

Функция добавляет символы большого размера из строки s2 в строку s1 и завершает s1 с нулевым символом. Если s2 короче символов размера, s2 копируется до и включает нулевой завершающий символ.

Пример
txt := 'mikroElektronika';
txt_sub := 'mikr';
txt[5] := 0;

strncat(txt,txt_sub,4);  // routine appends first 4 characters from the string 'txt_sub' at the place of first null character in the 'txt' string

strncpy

Прототип

procedure strncpy(var s1, s2 : string; size : word);

Описание

Функция копирует символы большинства размеров из строки s2 в строку s1. Если s2 содержит меньше символов, чем размер, s1 заполняется нулевыми символами до общей длины символов размера.

Пример
txt := 'mikroElektronika';
txt_sub := 'mikr';

strncpy(txt,txt_sub,4);  // copies first 4 characters form the string 'txt_sub' to 'txt'

strspn

Прототип

function strspn(var s1, s2 : string) : dword;

Описание

Функция ищет строку s1 для символов, не найденных в строке s2.

Функция возвращает индекс первого символа, расположенного в s1, который не соответствует символу в s2. Если первый символ в s1 не соответствует символу в s2, возвращается значение 0. Если все символы в s1 найдены в s2, возвращается длина s1 (не включая завершающий нулевой символ).

Пример
txt := 'mikroElektronika';
txt_sub := 'mikr';

res := strspn(txt,txt_sub);  // routne returns 4

strncmp

Прототип

function strncmp(var s1, s2 : string; len : word) : integer;

Описание

Функция лексикографически сравнивает первые len-символы строк s1 и s2 и возвращает значение, указывающее их взаимосвязь:

Величина     значение
< 0       s1 "меньше, чем" s2
= 0       s1 "равно" s2
> 0       s1 "больше чем" s2

Значение, возвращаемое функцией, определяется разницей между значениями первой пары слов, которые различаются в сравнении строк (в первых словах len).

Пример
txt := 'mikroElektronika';
txt_sub := 'mikr';

res := strncmp(txt_sub,txt,3);  // compares the first 3 characters from the string 'txt' with the sting 'txt_sub' and returns a difference

strstr

Прототип

function strstr(var s1, s2 : string) : dword;

Описание

Функция находит первое вхождение строки s2 в строке s1 (исключая оканчивающийся нулевой символ).

Функция возвращает число, указывающее положение первого вхождения s2 в s1; если строка не найдена, функция возвращает 0xFFFFFFFF. Если s2 является пустой строкой, функция возвращает 0xFFFFFFFF.

Пример
txt := 'mikroElektronika';
txt_sub := 'mikr';

res := strstr(txt, txt_sub);

strcspn

Прототип

function strcspn(var s1, s2 : string) : dword;

Описание

Функция ищет строку s1 для любого из символов в строке s2.

Функция возвращает индекс первого символа, расположенного в s1, который соответствует любому символу в s2. Если первый символ в s1 соответствует символу в s2, возвращается значение 0. Если в s1 нет совпадающих символов, возвращается длина строки (не включая завершающий нулевой символ).

Пример
txt := 'mikroElektronika';
txt_sub := 'mikr';

res := strcspn(txt_sub,txt);

strpbrk

Прототип

function strpbrk(var s1, s2 : string) : dword;

Описание

Функция ищет s1 для первого вхождения любого символа из строки s2. Нулевой ограничитель не включен в поиск. Функция возвращает индекс совпадающего символа в s1. Если s1 не содержит символов из s2, функция возвращает 0xFFFFFFFF.

Пример
txt := 'mikroElektronika';
txt_sub := 'mikr';

res := strpbrk(txt_sub,txt);

strrchr

Прототип

function strrchr(var s : string; ch : byte) : dword;

Описание

Функция ищет строку s для последнего вхождения символа ch. Нулевой символ, завершающий s, не входит в поиск. Функция возвращает индекс последнего ch, найденного в s; если совпадающий символ не найден, функция возвращает 0xFFFFFFFF.

Пример
txt := 'mikroElektronika';

res = strrchr(txt,'k');  // returns the index of the 'k' character of the 'txt' string

ltrim

Прототип

procedure ltrim(var astring : string);

Описание

Процедура обрезает ведущие пространства строки.

Пример
txt := '  mikroE';

ltrim(txt);  // trims the leading 2 spaces of the 'txt' string

rtrim

Прототип

procedure rtrim(var astring : string);

Описание

Процедура обрезает конечные пробелы строки.

Пример
txt := 'mikroE  ';

rtrim(txt);  // trims the trailing 2 spaces of the 'txt' string and adds terminating null character to the result

strappendpre

Прототип

procedure strappendpre(letter: char; var s1 : string);

Описание

Процедура добавляет символ в начале строки.

Пример
txt := 'ikroE';

strappendpre('m',txt);  // adds letter 'm' at the beginning of the 'txt' string

strappendsuf

Прототип

procedure strappendsuf(var s1 : string; letter : char);

Описание

Процедура добавляет символ в конец строки.

Пример
txt := 'mikro';

strappendsuf('E',txt);  // adds letter 'E' at the end of the 'txt' string

length

Прототип

function length(var s: string) : dword;

Описание

Функция возвращает длину переданной строки.

Пример
txt := 'mikroE';

res = length(txt);  // calculates and returns the length of the 'txt' string