Преобразование типов данных

При вводе числовой информации в рабочую программу с клавиатуры, как правило используют строчный редактор 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;






double arrow
Сейчас читают про: