logo
Методичка лаб по ООП с ИИТ

2.7. Ввод и вывод данных. Функции преобразования типов данных

Для ввода данных часто используются окно редактирования Edit, позволяющее вводить одиночные текстовые ли числовые (после преобразования) данные (свойство Text).

Например, Fam := Edit1.Text;

Для ввода массивов данных удобно использовать таблицу StringGrid. Элементы таблицы нумеруются по столбцам и строкам, начиная с 0. Доступ к ячейкам производится через свойство Cells[col, row]. Таблица StringGrid по умолчанию содержит фиксированные строки и столбцы (свойство FixedCols и FixedRows), которые не перемещаются при использовании полосы прокрутки. При использовании для ввода массива их следует убрать - назначить свойствам FixedCols и FixedRows значение 0, а также разрешить редактирование данных в ячейках: назначить True свойству Option.goEditing. Нумерация строк и столбцов по умолчанию ведется с 0, поэтому первая ячейка таблицы: Cells[0,0].

Например, для ввода массива из 10 фамилий можно использовать следующий цикл:

For i:=1 to 10 do

Fam[i] :=StringGrid1.Cells[i-1,0];

Для ввода данных также используется функция InputBox(), выводящая заголовок, текстовое сообщение, поле ввода с указанным значением по умолчанию и кнопку ОК. Синтаксис:

InputBox( ACaption: String, APromt: String , ADefalt: String);

Где AСaption - заголовок окна, AProm - текстовое сообщение выводимое в окно, а ADefalt - значение по умолчанию, выводимое в поле ввода.

Пример:

Name:=InputBox('Окно ввода данных',' Введите имя', ' ' );

Переменной строкового типа Name присваивается значение, введенное пользователем в поле ввода (по умолчанию поле ввода пустое).

Или целой переменной b присваивается числовое значение, введенное в поле ввода диалогового окна:

b := StrToInt (InputBox('Окно ввода данных', ' Введите значение переменной b ', ' ' ));

Текст, вводимый пользователем в окно редактирования Edit, таблицу StringGrid, поле Memo, диалоговое окно InputBox и др. объекты представляет собой текстовую стро­ку типа string. Поэтому при вводе в них чисел, над которыми предполагается выполнение арифметических операций, этот текст следует преобразовать к нужному числовому типу.

Для преобразования строки в числа используются функции:

StrToFloat() - преобразует тип данных String в действительное число;

StrToInt() - преобразует тип данных String в целое число;

Например, выражение StrToFloat(Edit1.Text) возвращает действительное число, получение в результате преобразования текста в окне Edit1.

Далее эти числа можно использовать в любых математических выражениях.

Для отображения результатов расчета часто используется функция ShowMessage(), отображающая диалоговое окно с текстовым сообщением. В качестве аргумента этой функции используется строка или совокупность строк соединенных знаком "+" типа String, поэтому числовые данные перед выводом их в окно следует преобразовать к строковому типу данных.

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

Итак, в эти элементы можно выводить только текст (данные типа String), поэтому все числа следует перевести в строковый тип данных, для чего используются функции:

FloatToStr() - переводит действительное число в строку

IntToStr() - переводит целое число в строку.

Например, вывод данных в диалоговое окно:

ShowMessage(' Дискриминант равен ' + FloatToStr(D));

Или в метку Label1, заранее созданную на форме:

Label1.Caption:= ' Дискриминант= ' + FloatToStr(D);

Для вывода надписи, используемой для вывода данных пользователем в несколько строк используется код клавиши Enter (13), осуществляющей переход на новую строку, следующим образом:

Label1.Caption:= ' Дискриминант= ' + FloatToStr(D) + #13 + 'Первый корень=' + FloatToStr(х1) + #13 + 'Второй корень=' + FloatToStr(х2) ;

Для формирования надписи Label на форме в несколько строк достаточно включить (поменять на True) свойство WordWrap метки. Выравнивание текста определяется свойством Alignment (например, по центру - taCenter)

Пример процедуры, вычисляющей при щелчке на кнопке Button1 произведение чисел a и b, вводимых пользователем в поля ввода Edit1 и Edit2 и использующей преобразование типов данных:

procedure TForm1.Button1Click(Sender: TObject);

var а, b, c: real;

begin

a := StrToFloat(Edit1.Text); // Первое число

b := StrToFloat(Edit2.Text); // Второе число

c := a* b; // Произведение

ShowMessage('Произведение чисел a*b = ' + FloatToStr(c));

Label1.Caption:='Произведение чисел a*b = ' + FloatToStr(c);

end;