При вводе числовой информации в рабочую программу с клавиатуры, как правило используют строчный редактор Edit. Свойство компонента Edit - Text, описано как TCaption.
В свою очередь TCaption в Дельфи описако как TCaption = type string;
Следовательно, в свойстве Edit1.Text имеет символьный тип string.
При различных вычислениях, ЭВМ оперирует с числовыми данными - целочисленными или вещественными. Следовательно, при вводе числовой информации с клавиатуры и при выводе числовой информации на экран, в компоненты потомков класса TStrings (StringList, memo.Lines, Listbox1.Items...), необходимо предусматривать преобразование соответствующей информации к нужному типу данных:
Ø в символьный - для вывода данных в соответствующий компонент для их визуализации;
Ø в вещественный или целочисленный - для дальнейшей работы с ними.
Для этого в Дельфи имеется достаточно разнообразный набор процедур и функций для выполнения этих задач.
Паскалевские процедуры.
Val (S, A, cod) - процедура, преобразующая строку S в переменную A. Переменная А может иметь целочисленный или вещественный тип. В переменную cod - имеет целочисленный тип - integer, передается код ошибки преобразования. Если переменная cod = 0 (равна нулю) - преобразование прошло успешно. Если cod < > 0 -произошла ошибка преобразования строки S в переменную A.
Данная процедура не отслеживает ошибку преобразования. Рекомендуется выполнить проверку переменной cod.
Пример:
Var
x: real;
n: integer;
..................
..................
val (edit1.text,x,n);
if n <> 0 then begin
showmessage('Ошибка преобразования X');
exit;
end;
В данном примере, в качестве строки S выступает компонент Edit1.Text. Свойство Text - потомок TString, т.е. строка. Данная строка преобразуется в переменную X, описанную в разделе объявлений Var, как real. Код преобразования получила переменная n, описаная в разделе объявлений Var, как integer.
Далее выполняем проверку корректности преобразования -
if n <> 0 then begin
showmessage('Ошибка преобразования X');
exit;
end;
Если n не равно нулю (произошла ошибка) то выдаем сообщение на экран:
showmessage('Ошибка преобразования X');
и безболезненно покидаем процедуру ввода и преобразования данных - exit, после чего, сможем выполнить ввод данных повторно.
STR (X: i: j, S) - процедура, преобразующая переменную X (вещественного или целочисленного типа) в переменную S символьного типа. Параметры i и j задают формат преобразования: i - общее число символов, j - число знаков после запятой. При преобразовании целочисленной переменной X значерие j должно быть ноль (j=0).
Пример:
var
ss,ss1: string;
x: real;
n: integer;
.....................
.....................
STR(x:10:3,ss);//преобразовали вещественный Х в строку SS
STR(n:6:0,ss1);// преобразовали целочисленное n в строку SS1
Функции преобразования Delphi.
StrToFloat - функция, конвертирует числовую строку типа string, например '123.456', в значение с плавающей точкой с типом Extended.
Она поддерживает целый формат, формат с плавающей точкой и научный (экспоненциальный) формат.
Пример
var
ss: string='123.456';
x: Extended.
......................
......................
X:= strtofloat(ss);// преобразовали строку SS в переменную X
FloatToStrF - Функция, конвертирует значение переменной вещественного типа в строку (String), с большим управлением по форматированию через значения: Format, n - общее количество символов и m - количество знаков дробной части.
<переменная типа string>:= floattostr (<переменная вещественноготипа >, <формат>, <n>,<m>)
Параметр Format определен в TFloatFormat (SysUtils) типом:
ffCurrency: $2,345.60 // денежный формат
ffExponent: 2.3456E+04 // научный формат
ffFixed : 2345.60 // число с фиксированной точкой
ffGeneral: 2345.6 // число с фиксированной точкой 1
ffNumber: 2,345.6 // число с фиксированной точкой 2
Примеры преобразований:
var
x: Extended = 1234.567;
SS: string;
......................................................
......................................................
Btgin
// денежный формат:
ss:=Floattostr(x,ffCurrency, 8, 4)
// ss получит значение = $ 1,234.5670
ss:=Floattostr(x,ffCurrency, 4, 4)
// ss получит значение = $ 1,234.0000
ss:=Floattostr(x,ffCurrency, 4, 2)
// ss получит значение = $ 1,234.00
ss:=Floattostr(x,ffCurrency, 2, 4)
// ss получит значение = 1,2e+0003
// научный формат
ss:=Floattostr(x, ffExponent, 8, 4)
// ss получит значение = 1.2345670E+0003
ss:=Floattostr(x, ffExponent, 4, 4)
// ss получит значение = 1.235E+0003
ss:=Floattostr(x, ffExponent, 4, 2)
// ss получит значение = 1.235E+03
ss:=Floattostr(x, ffExponent, 2, 4)
// ss получит значение = 1.2E+0003
// формат с фиксированной точкой
ss:=Floattostr(x, ffFixed, 8, 4)
// ss получит значение = 1234.5670
ss:=Floattostr(x, ffFixed, 4, 4)
// ss получит значение = 1234.0000
ss:=Floattostr(x, ffFixed, 4, 2)
// ss получит значение = 1234.00
ss:=Floattostr(x, ffFixed, 2, 4)
// ss получит значение = 1.2E+0003
......................................................
......................................................
end;
FloatToStr -Функция, конвертирует значение переменной вещественного типа в строку (String) без форматирования. Если с числом производились какие либо математические действия, то в качестве дробной части данная функция выдаст 15 знаков.
IntToStr - функция, преобразует целое число Integer или Int64 в строку.
Пример:
var
x: integer = 1234;
SS: string;
......................................................
......................................................
Begin
ss:=inttostr(x);//ss получит значение '1234'
end;
StrToInt -функция, преобразует строку Integer или Int64 в целое число.
Пример:
var
x: integer;
SS: string =’1234’;
......................................................
......................................................
Begin
x:=strtoint(ss);//x получит значение = 1234
end;






