- •Глава 4. Компоненты 30
- •Глава 5. Основы программирования 37
- •Часть I. Delphi и работа в Интегрированной Среде
- •Глава 1. Объектно-ориентированное программирование
- •1.1. Основные понятия и определения
- •1.2. Визуальное программирование интерфейса
- •1.3. Общие вопросы построения программ
- •Глава 2. Проекты Delphi
- •2.1.Файлы проекта
- •2.2.Структура файла головной программы
- •2.3. Окно Интегрированной Среды Разработки Delphi
- •2.4. Панель главного меню и всплывающие меню
- •2.5. Форма и компоненты
- •2.5.1.Окно формы
- •2.5.2. Окно Редактора Кода
- •2.5.3. Инспектор Объектов
- •2.6. Структура модуля приложения
- •Глава 3. Элементы языка Delphi
- •3.1.Типы данных
- •3.1.1. Целый тип
- •3.1.2.Вещественный тип
- •3.1.3. Символьный тип
- •3.1.4. Строковый тип
- •3.1.5. Логический тип
- •3.2. Переменная
- •3.3. Константы
- •3.3.1.Числовые константы
- •3.3.2. Строковые и символьные константы
- •3.3.3. Логические и именованные константы
- •3.4. Инструкция присваивания
- •3.5. Стандартные функции
- •3.5.1.Математические функции
- •Глава 4. Компоненты
- •4.1. Форма и компоненты на форме
- •4.2. Событие и процедура обработки событий
- •Глава 5. Основы программирования
- •5.1. Сохранение проекта, его повторное открывание
- •5.2. Стиль программирования
- •5.3. Порядок разработки проекта
- •5.4. Управляющие структуры языка Delphi
- •5.4.1. Инструкция if
- •5.4.2. Инструкция case
- •5.5. Циклы
- •5.5.1. Инструкция for
- •5.5.2. Инструкция while
- •5.5.3. Инструкция repeat
- •5.5.4. Инструкция goto
- •5.6. Процедуры и функции
- •5.6.1. Структура функции
- •5.6.2. Структура процедуры
- •5.6.3. Ввод и вывод данных в диалоговых окнах
- •5.6.4. Запись инструкций программы
- •5.6.5. Отладка программы
- •5.7. Операции со строками
- •5.7.1. Стандартные функции и процедуры работы со строками
- •5.7.2. Использование операций со строками
- •5.8. Массивы
- •5.8.1. Объявление массива
- •5.8.2. Операции с массивами
- •5.8.3. Стандартные функции обработки массивов
- •5.8.4. Многомерные массивы
5.7. Операции со строками
В языке Delphi есть несколько полезных при работе со строками функций и процедур. Некоторые из них уже описывались ранее в обработчике событий KeyPress.
5.7.1. Стандартные функции и процедуры работы со строками
Функция length
Функция length возвращает длину строки. У этой функции один параметр – выражение строкового типа. Значением функции length (целое число) является количество символов, из которых состоит строка.
Например, в результате выполнения инструкций
n:=length('Иванов');
m:=length (' Невский проспект ');
значение переменных n и m будет равно 6 и 20.
Процедура delete
Процедура delete позволяет удалить часть строки. В общем виде обращение к этой процедуре выглядит так:
delete(Строка, р, п)
где:
Строка – переменная или константа строкового типа;
p – номер символа, с которого начинается удаляемая подстрока;
п – длина удаляемой подстроки.
Например, в результате выполнения инструкций
s: ='Город Санкт-Петербург';
delete(s,7,6) ;
значением переменной s будет строка 'Город Петербург'.
Функция pos
Функция pos позволяет определить положение подстроки в строке. В общем виде обращение к функции выглядит так:
pos (Подстрока, Строка) ;
где подстрока – строковая константа или переменная, которую надо найти в строковой константе или переменной Строка.
Например, в результате выполнения инструкции
p:= pos('Пе','Санкт-Петербург');
значение переменной р будет равно 7. Если в строке нет искомой подстроки, то значение функции pos будет равно нулю.
Ниже приведена инструкция while, в результате выполнения которой удаляются начальные пробелы из строки st.
while(pos(' ',st) = 1) and(length(st) > 0) do
delete (st,1,1);
Пробелы удаляет инструкция delete (st,l,l), которая выполняется в цикле до тех пор, пока первым символом строки является пробел. В этом случае значение
pos(' ',st) равно единице. Необходимость проверки условия length (st) > 0 объясняется возможностью того, что введенная строка состоит только из пробелов.
Функция сору
Функция сору позволяет выделить фрагмент строки. В общем виде обращение к функции сору выглядит так:
сору(Строка ,р,n)
где:
Строка – выражение строкового типа, содержащее строку, фрагмент которой надо получить;
P– номер первого символа, с которого начинается выделяемая подстрока;
n – длина выделяемой подстроки.
Например, в результате выполнения инструкций
st:= 'Инженер Иванов';
fam:=copy(st, 9,6);
значением переменной fam будет строка 'Иванов'.
5.7.2. Использование операций со строками
В качестве примеров использования операций со строками можно привести примеры функций проверки допустимости ввода символов.
Функция isint проверяет, является ли символ, соответствующий клавише нажатой во время ввода целого числа в поле редактирования, допустимым. Предполагается, что допустимыми являются цифры, клавиши <Enter> и <Backspace>.
// проверяет, является ли символ допустимым
// во время ввода целого числа
function IsInt(ch : char) : Boolean;
begin
if (ch >= '0') and (ch <= '9') // цифры
or (ch = #13) // клавиша <Enter>
or (ch = #8) // клавиша <Back Space>
then
IsInt := True; // символ верный
Else IsInt:= False; // недопустимый символ
end;
Функция isFloat решает аналогичную задачу, но для дробного числа. У функции isFloat два параметра: код нажатой клавиши и строка символов, которая уже введена в поле редактирования.
// проверяет, является ли символ допустимым
// во время ввода дробного числа
Function IsFloat (ch:char; st: string): boolean ;
begin
if (ch>='0') and (ch<='9')// цифры
or (ch=#13) // клавиша <Enter>
or (ch = #8) // клавиша <Back Space>
then
begin
IsFloat:=true;// символ верный
exit; //выход из функции
end;
case ch of
'-': if Length(st) = 0 then IsFloat:= True
else IsFloat:= False;
',': if (Pos(',',st)=0)and (st[Length(st)]>='0')and (st[Length(st)]<='9')
then IsFloat := True;//разделитель можно ввести только
//после цифры и если он ещё не введён
else IsFloat:= False;//остальные символы запрещены
end;
end;
Обращение к функции
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if KEY=Char(VK_Return) then
Edit2.SetFocus
else if not ISFLoat(Key,Edit1.Text) then Key:=Chr(0);
end;