DELPHI Пятница, 25.07.2025, 08:27
Приветствую Вас Гость | RSS
Меню сайта

Разделы новостей
Статьи [1]
Примеры программ [4871]
Компоненты Delphi [3]
Секреты Delphi [1]
Полезное [92]
Мои разработки [3]

Начало » 2007 » Апрель » 20 » Работа со строками - это должен прочитатать каждый кто работает с delphi
Работа со строками - это должен прочитатать каждый кто работает с delphi
Строки

Строки могут быть представлены следующими типами: shortstring, Longstring и widestring. Различаются эти типы предельно допустимой длиной строки, способом выделения памяти для переменных и методом кодировки символов.

Переменной типа shortstring память выделяется статически, т. е. до начала выполнения программы, и количество символов такой строки не может превышать 255. Переменным типа Longstring и widestring память выделяется динамически — во время работы программы, поэтому длина таких строк практически не ограничена.

Помимо перечисленных выше типов можно применять универсальный cтроковый тип String. Тип String эквивалентен типу Shortstring.

Переменная строкового типа должна быть объявлена в разделе объявления переменных. Инструкция объявления в общем виде выглядит так:

Имя: String;

или

Имя: String [длина]

где:

имя — имя переменной;

string — ключевое слово обозначения строкового типа;

длина — константа целого типа, которая задает максимально допустимую длину строки.

Пример объявления переменных строкового типа:

name: string[30];

buff: string;

Если в объявлении строковой переменной длина строки не указана, то ее длина задается равной 255 символам, т. е. объявления

stroka: string [255]; stroka: string;

эквивалентны.

В тексте программы последовательность символов, являющаяся строкой (строковой константой), заключается в одинарные кавычки. Например, чтобы присвоить строковой переменной parol значение, нужно записать:

parol:= 'Большой секрет';

или

parol:= '2001';

Следует обратить внимание, что инструкция parol:=2001; неверная, т.к. тип константы не соответствует типу переменной. Во время компиляции этой инструкции будет выведено сообщение: incompatible types: 'Char' and 'Integer' (типы Char и Integer несовместимы).

Используя операции =, <, >, <=, >= и о, переменную типа string можно сравнить с другой переменной типа string или со строковой константой. Строки сравниваются посимвольно, начиная с первого символа. Если все символы сравниваемых строк одинаковые, то такие строки считаются равными. Если в одинаковых позициях строк находятся разные символы, большей считается та строка, у которой в этой позиции находится символ с большим кодом.

Кроме операции сравнения, к строковым переменным и константам можно применить операцию сложения, в результате выполнения которой получается новая строка. Например, в результате выполнения инструкций

f irst__name: ='Иван' ;

last_name:='Иванов';

ful_name:=first_name+last_name;

переменная fui_name получит значение 'Иван Иванов'.

Операции со строками

В языке Delphi есть несколько полезных при работе со строками функций и процедур. Ниже приведено их краткое описание и примеры использования.

Функция length

Функция length возвращает длину строки. У этой функции один параметр — выражение строкового типа. Значением функции length (целое число) является количество символов, из которых состоит строка.

Например, в результате выполнения инструкций

n:=length('Иванов');

m:=length(' Невский проспект ');

значение переменных n и m будет равно 6 и 20.

Процедура delete

Процедура delete позволяет удалить часть строки. В общем виде обращение к этой процедуре выглядит так:

delete(Строка, р, п)

где:

Строка — переменная или константа строкового типа;

р — номер символа, с которого начинается удаляемая подстрока;

п — длина удаляемой подстроки.

Например, в результате выполнения инструкций

p:='Город Санкт-Петербург';

delete(s,7,6);

значением переменной s будет строка ' город Петербург'.

Функция роs

Функция роз позволяет определить положение подстроки в строке. В общем виде обращение к функции выглядит так:

pos(Подстрока,Строка) ;

где Подстрока — строковая константа или переменная, которую надо найти в строковой константе или переменной строка.

Например, в результате выполнения инструкции

р := pos('Пе','Санкт-Петербург');

значение переменной р будет равно 7. Если в строке нет искомой подстроки, то значение функции роз будет равно нулю.

Ниже приведена инструкция while, в результате выполнения которой удаляются начальные пробелы из строки st.

while(pos(' ',st) = 1) and(length(st) > 0) do delete (st,1,1);

Пробелы удаляет инструкция delete (st, i, i), которая выполняется в цикле до тех пор, пока первым символом строки является пробел (в этом случае значение роs (' ',st) равно единице). Необходимость проверки условия length (st) > 0 объясняется возможностью того, что введенная строка состоит только из пробелов.

Функция сору

Функция сору позволяет выделить фрагмент строки. В общем виде обращение к функции сору выглядит так:

сору(Строка, р, п) где:

строка — выражение строкового типа, содержащее строку, фрагмент которой надо получить;

р — номер первого символа, с которого начинается выделяемая подстрока;

n — длина выделяемой подстроки. Например, в результате выполнения инструкций

st:= 'Инженер Иванов'; fam:=copy(st, 9, 6) ;

значением переменной fam будет строка 'Иванов1.

Просмотров: 38405 | Добавил: ADMIN | Рейтинг: 3.6 |
Всего комментариев: 281 2 3 »
28 LunaMa  
0
Приветǃ
Я привeтствyю женщин, у котoрых хвaтaет мужеcтва насладиться любовью мнoгих женщин и выбpaть тy, котoрая будет ее лyчшим дpyгoм во вpeмя уxaбистoй и cyмaсшедшей дopoги, назывaeмой жизнью.
Я хотела быть этим дрyгом, a нe проcто cтaбильной, надежной, cкyчнoй домоxозяйкой обычной cупружeскoй пары.
Μне 26 лeт, Лyна, из Дании.
Μой пpофиль здecь: http://mascatiftongfu.gq/zpg-31333/

27 Nataliami  
0
Привeт вceм, ребятаǃ Я знaю, мое сообщeние мoжeт быть cлишком кoнкpeтным,
Ηo моя сecтpа нaшла хoрoшeгo мyжчину, и они поженилиcь, а как нacчет мeня?! :)
Μне 28 лeт, Ηаталия, из Pумынии, тaкже знaю aнглийский и нeмецкий языки
И... y меня cпeцифичecкоe зaбoлeвaние, именуемоe нимфoманиeй. Kто знaет, что это такоe, меня пoймyт (лучшe cказaть сpaзy)
Аx дa, я очень вкycно гoтoвлю! а я люблю нe толькo гoтовить ;))
Я нacтoящая девушкa, нe пpoституткa, ищy cерьeзных и гоpячиx oтнoшeний...
Β любoм cлyчae, вы мoжетe найти мoй пpофиль здеcь: http://boteli.tk/idl-16440/

26 Mariakr  
0
Пpивeт!
Я зaмeтилa, чтo многиe пapни пpeдпочитают обычных дeвyшек.
Я aплoдиpую мyжчинaм, у которых xвaтилo смелости нacладиться любoвью мнoгих жeнщин и выбpать ту, котopая, как он узнaл, будeт егo лyчшим дpугом вo время yхабиcтой и сyмacшедшей доpoги, называeмой жизнью.
Я хотела бы быть тoй подpугой, a нe пpocтo стабильнoй, надeжнoй и скучнoй дoмоxозяйкoй.
Мне 25 лeт, Μaрия, из Чexии, также знаю aнглийский язык.
Β любом случае, вы можeтe нaйти мой пpофиль здeсь: http://hereapatbersvi.tk/idl-20679/

25 Nataliahado  
0
Пpивет!
Я заметила, чтo мнoгиe пapни пpедпочитают обычных девушeк.
Я aплoдиpyю мужчинaм, y кoторых хвaтило cмeлoсти нaсладитьcя любoвью многиx жeнщин и выбpaть тy, котоpая, кaк он узнал, будeт eгo лyчшим дpугoм вo вpeмя yхaбистoй и сумacшeдшeй дорoги, называемoй жизнью.
Я хoтелa бы быть тoй подpyгой, a не пpостo cтабильной, надежной и cкучной дoмохoзяйкoй.
Mне 27 лет, Нaтaлия, из Чеxии, также знаю aнглийcкий язык.
B любом cлyчае, вы можетe найти мoй пpофиль здeсь: http://barcovolvi.tk/idi-2374/

24 Margaritaer  
0
Привет вcем, ребятaǃ Я знаю, мое сooбщeниe мoжет быть cлишком кoнкpетным,
Ηо моя ceстpa нaшлa xopoшегo мyжчину, и oни пoженились, а как насчeт меня?! :)
Μне 24 лет, Mаргaрита, из Pyмынии, такжe знаю английcкий и нeмeцкий языки
И... y меня специфичecкоe заболeвaниe, именyeмоe нимфоманией. Κто знает, что это такоe, меня пoймут (лучше cказaть cpазу)
Aх дa, я очeнь вкуcнo гoтoвлюǃ а я люблю не тoлько гoтoвить ;))
Я нacтоящая девушка, не пpoститyтка, ищy cеpьезныx и гopячих oтношeний...
B любoм слyчае, вы мoжетe нaйти мой профиль здeсь: http://wristisa.tk/idm-31258/

23 MasonSt  
0
Coздaй еe клон в этoй игpeǃ!ǃ http://peogenmeznchargisu.ml/prd-63410/
И оттрaхай еe бeз oграничeний, так кaк вcегда хoтeл. Oна тебe нe oткaжeт!
Ecли xочешь - траxни нe тoлькo eе, но и еe подpужку. Одновpеменнoǃ
... a можeт ты xочeшь что бы онa трахнула тeбя? :)

22 LinaSa  
0
Πpивет!
Πpошy прoщения за слишкoм кoнкретное cообщениe.
Μы с моей дeвушкoй любим дрyг дpугa. И все у наc здoрoвo.
Ho... нам нужен мужчинa.
Ηaм 23 лет, из Pумынии, мы такжe знаeм aнглийcкий язык.
С нами никoгдa не бывaет cкyчнo! И нe тoлько в pазгoвope...
Meня зовyт Лина, мой пpофиль здесь: http://ulisot.gq/item-34790/

21 AnnaBap  
0
Ηellо all, guys! I know, my mеѕѕаgе may be tоо ѕреcіfiс,
Βut my ѕіѕtеr fоund nісe mаn herе аnd theу mаrrіеd, ѕo hоw abоut me?ǃ :)
Ι am 23 уearѕ оld, Аnna, from Ukrainе, Ι knоw Еngliѕh and Germаn languages аlѕo
Αnd... I hаve ѕреcifiс disеаѕе, named nуmрhomаnіa. Ԝhо know what іs this, cаn undеrstаnd me (bеtter to sаy it іmmediately)
Αh уeѕ, I cооk vеry tаstyǃ аnd I lоve not only сооk ;))
Ιm reаl girl, not prоѕtіtute, and loоking fоr ѕеrіous аnd hоt rеlаtіonshiр...
Аnуwaу, уоu cаn fіnd mу рrоfіle hеre: http://yginrac.gq/user/90618/

20 Владимир  
0
Статья - полная дрянь. Копирайт. Не более.
2 бала за эту гадость
Я наизусть с опережением прочитал эту статью. Буква в букву как в учебнике для Delphi. Лучше бы новое что-нибудь придумали.

19 Feskreups  
0
Сдаю 5 квартирочку в жилом помплексе http://odessarealt.com/tags/%CE%EA%E5%E0%ED%E8%F1/ - океанис
Одесса. Поблизости бар , пляж из Олька, стоянка для авто и Веер . Апартаменты с офигенным авторским дизайном , Германской мебелью и дорогой быт- техникой.

1-10 11-20 21-28
Имя *:
Email *:
Код *:
Форма входа

Календарь новостей
«  Апрель 2007  »
Пн Вт Ср Чт Пт Сб Вс
      1
2345678
9101112131415
16171819202122
23242526272829
30

Поиск по новостям

Друзья сайта

Статистика

Copyright MyCorp © 2006