Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование на Delphi с нуля #8


Программирование на Delphi с нуля :: Выпуск восьмой
Работа со строками

Прочитать выпуск на сайте
От автора

Дорогие читатели!
1. Приглашайте Ваших друзей, родственников, коллег подписаться на рассылку "Программирование на Delphi с нуля"!
2. На форуме появились новые интересные темы. Заходите, смотрите: Forum.TheDelphi.Ru
3. Предлагаю Вам подписаться на следующие рассылки:
Рассылки@Mail.ru
AMI BIOS и AWARD BIOS различие, секреты, настройки, мониторинг, разгон.
Статьи по Delphi в каждой рассылке
Internet-Провайдеры Москвы и Петербурга
Реестр - "Сердце и душа" Windows XP

Действия со строками.

1. Присваивание значения:
Код Delphi / Pascal:
s := 'Hello!';

2. Конкатенация (склеивание/объединение):
Код Delphi / Pascal:
s := '123'
s2 := 'abc'
s := s1 + s2; 
// s = '123abc'

3. Сравнение:
Код Delphi / Pascal:
var a : boolean; 
begin 
  a := 'A' > 'B'
  // a = false 
end;

Строки сравниваются посимвольно. Все символы записаны в таблице символов ASCII и сравниваются по ней. Символ считается большим, если его номер в таблице больше номера второго символа.
Номер символа можно получить функцией ord():
Код Delphi / Pascal:
номер_символа := ord(символ);

Символ из его номера можно получить функцией chr():
Код Delphi / Pascal:
символ := chr(номер_символа);

Порядок следования символов в таблице ASCII:
1. цифры (123...)
2. Большие латинские буквы (ABCD...)
3. Маленькие латинские буквы (abcd...)
Внимание: большая буква имеет значение меньшее, чем маленькая!
4. Большие русские буквы.
5. Маленькие русские буквы.
Где-то между группами символов находятся специальные символы.


Пример программы, выписывающей все коды и символы:
На форме есть компонент TMemo. Свойство Scrollbars установлено в ssVertical. Свойство Align в alClient.
Создаёте обработчик события OnCreate у формы и туда пишете следующий код:
Код Delphi / Pascal:
procedure TForm1.FormCreate(Sender: TObject); 
var i : integer; 
begin 
  for i := 1 to 255 do 
      Memo1.Lines.Add(IntToStr(i) + ' = ' + chr(i)); 
end;


Продолжу рассказывать про сравнение строк.
Строки, в которых больше одного символа сравниваются посимвольно:
1. Сравниваются первые символы, если они равны, то сравниваются следующие символы и т.д.
2. Меньшей считается строка, в которой сравниваемый символ меньше.
Пример: 'ABCD' < 'ABCDA'; '1050' < '106'; '1050' > ' 106';

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

Кроме функций StrToFloat, FloatToStr, IntToStr, StrToInt также есть функции и процедуры для работы непосредственно со строками.
1. new_string := copy(string, first, len); - возвращает подстроку string длиной len, начиная с символа first.
Пример: copy('Привет',3,2) = 'ив'.
Если first больше длины строки, то будет возвращена пустая строка.
Если len больше количества оставшихся символов, то будет возвращена часть до конца строки.
2. position := pos(substring, string); - возвращает позицию первого вхождения в строку string подстроки substring. Если подстрока suibstring ни разу не входит, будет возвращён ноль.

Код Delphi / Pascal:
k := pos('ив''Пр<u>ив</u>ет'); 
// k = 3 
k := pos('о','молоко'); 
// k = 2 
k := pos('a','молоко'); 
// k = 0 

3. len := length(string); - возвращает длину строки string. length('Привет!') = 7.


4. delete(str,first,count); - удалаяет из строки str count символов, начиная с символа first. Результат сохраняет в переменную str.
Код Delphi / Pascal:
s := 'Привет!'
delete(s,2,2); 
// s = 'Пвет!'

5. insert(substr,str,k); - вставляет в строку str подстроку substr перед k-ым символом. Если k больше длины строки, то подстрока добавляется в конец строки.
Код Delphi / Pascal:
s := '12345'
insert('abc',s,5); 
// s = 'a123abc5'

6. Процедура val() - процедура перевода строки в число.
val(str,x,code); Типы переменных: x - real или integer; str - string; code - integer.
x - переменная, в которую процедура пытается перевести строку str. Тип выбирается в зависимости от типа переменной х. В случае успешного перевода в переменную code будет записан 0. В случае ошибки в code записывается номер символа, на преобразовании которого произошла ошибка.
Для процедуры val() дробная часть всегда отделяется от целой точкой! val('3.2',x,code); // x = 3.2
val('3,2',x,code); // code = 2;
При попытке перевода пустой строки также будет ошибка.
7. str(x,s) - переводит числов строку.
Перевод целого числа: str(5,s); // s = '5'
Перевод вещественного числа: str(5.3,s); // s = 5.30000...E+000
Это не красиво и не всегда нужно.
Форматированный перевод чисел:
a) целые: str(5,3,s); // s = ' 5'
б) вещественные:
  str(число:всего символов в строке:кол-во символов после точки, s);
  str(5.3:6:2,s); // s = ' 5.30'
  str(1000.3:6:2,s); // s = '1000.30' - Delphi не обрезает строку, а увеличивает длину выводимой строки.

Заключение.

На сегодня всё.
Обсудить и оценить выпуск можно на форуме: обсудить.
До скорой встречи! Удачи в программировании!

Задание.

Сейчас я не даю никакого задания. Ответ на квадратное уравнение опубликую в следующем выпуске, поэтому можете присылать Ваши решения!


Если Вы нашли ошибку (орфографическую или ещё какую-нибудь), убедительная просьба сообщить об этом.
Прочитать выпуск на сайте
©Бударагин Николай, 2006. При использовании материалов ссылка на http://TheDelphi.Ru обязательна!

В избранное