Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / Программирование!!!.docx
Скачиваний:
18
Добавлен:
04.04.2018
Размер:
219.34 Кб
Скачать

Подрограмма формирования преобразования строк.

Procedure Str(x[:width[:Decimal]]; var st:string); – может присутствовать, может отсутствовать. х – вещественного или целого типа в строку st. Width,Decimal – по правилу паскаля. function Floattostr (value:extender; Format:TFloatFormat; Precision,Digits:Integer):string;

Преборазует вещественное число value в стоку символов с учетом формата и параметров procesion ,digits. Format – перечислимый тип в котором возможный формат: ffExponent в виде монтисы порядка. Procesion - Количество десятичных чисел монтиры , Digit - значение порядка.

ffFixed с фиксированной точной.P- Общее количество знаков,D количество знаков в этом числе после запятой.

FFGenerar наиболее универсальная форма для вещественного числа. Формат равер ffFixed если количество в целой части меньше или равно P а само число больше или равно 10-5 иначе это формат FFExponent.

FFNumber – отчичается от ffFixed использованием разделителем тысяч пробелом.

FfCurrency – соответствует number, но в конце строки ставится символ денежной единицы.

Пример edit1.Text:=floattostr(I,FFfixed,10,5);

Класс tForm

Любая программа должна содержать хотя бы одну связанную с ней форму, которая называется главная. Это форма появляется на экране в момент старта программы, программа может иметь сколько угодно форм, но главная должна быть, остальные могут подгружаться динамически, когда необходимо для решения некоторых локальных задач.

Разновидность форм.

Разновидности определяются значением своства FormStyle. Кроме того разнообразия форм заготовок хранящихся в репозитории делфи.

Тип Variant

Разработано для тех случаев, когда на этапе компиляции программы не может сказать какого типа будут исполнители.

Дополнительные 2 байта, которые помещается информации. Информация позволяет компилятору создать код, который будет осуществлен приобретением типов на этапе прогона программы.

Переменную variant можно поместить:

  1. Целое или вещественное число

  2. Логическое значение

  3. Строка

  4. Время дата

  5. OLE объект (4 байтовая ссылка)

  6. Динамический массив (ссылка на данные)

Содержащие элементы одного из перечисленных выше типов.

Под переменную variant 16 байт. В них содержится код типа, а так же значение переменной или ссылка на значение.

Для variant переменной в паскале предопределены 2 стандартных значение:

  1. Unassigned – переменная не присвоено пока значение какого-либо типа. Таким значением инициализируют.

  2. Null – вариант переменной содержит данные неизвестного типа.

Для получения информации о типах данных хранимых в вариант есть специальная функция varType. Существует таблица кодов возвращаемых данной функции. Но на каждый код смысловой есть код числовой.

Код типа

Значение

Комментарий

Var Empty

$0000

Признак отсутсвия данных соответствует unasiign

Var Null

$0001

Тип отсуствует

Var SmallInt

$0002

Smallint

(паскалевские типы)….

Var String

$0100

String

Var array

$2000

Вариантный массив

Var byRef

$4000

Указатель на данные

Структура вариантного типа описывается как запись с вариантами.

TVarData=packed record

Поля

VType:word; Reserved1; Reserved2; reserved3: word; case integer of var smollInt:(VSmallInt:smallnt); var integer:(VInteger:integer); ….. var Array:(Varray:?var array); var byref:(Vpointer:Pointer); end.

В поле VType в момент создания варианта компилятор поместит признак отсутсвия данных. В работающей программе значение этого поля изменится в соответсвие текущем типом данных размещенных в вариантой части. Программа не имеет прямого доступа к полям вариантой части. Получить тип var данных можно с помощью функции var type , а изменить тип путем присваивания нового значения. Вариантные данные можно использовать в выражениях при условия корректности типов. Если варианты выражения одного типа, то к этому типу выполняется операция и тд. Если разные данные, то …

VarType

Var V1,V2,V3:Variant; begin V1:=10; V2:=20; v3:=’30’; writeln (V1+V2+V3);

Будет 60 (акси код числа равен самому числу)

Другое пример.

VarType Begin V1:=’10’; /V1+V2=1020 V2:=’20’: V3:=30; /1020+V3=1050

Если один апперант в выражении развен null то все выражение примет null. А если один апперант равен unassigned ?. С вариантами работают с помощью подпрограмм.

Function VarType (const V:variant):integer; возвращается в виде кода, хранящихся в варианте данных.

Function VarAsType (const V:variant; VarType:Integer); преобразует данные варианты V к типу определенному пораметром VatType.

Procedure VarCost (var Dest:Variant; Const Source:Variant; VarType:integer);

Процедура преобразует данные варианта соурс в тип вартайп и помещает вариант в дест

Procedure VarClear (var V:variant); освбождает динамическую память если она была связана с варинатом. Заполняет значение Var Empty

Procedure VarCopy(var Dest:variant; sourcr:variant); копирует соурс в дест.

Вариантный массивы. Когда значением варианта является массив, то имеем вариантный массив. Значение эелментов вариантного массива могут быть любые элементы, в том числе и варианты. В таком массиве могут хранится одновременно значение разных типов. Действия с вариантными массивами осуществляется с помощью процедур и функций. Например чтобы создать нужно через процедуру или функция.

Function VarArrayCreate (const Bounds:array of integer; VarType: integer):variant; функция создает вариантный массив из элемента типа ВарТайп с границами заданными параметрами Боундс. …. var V,A:variant A:=VarArrayCreate([0,9], varDouble); создает массив из 10 вещественных элементов)

V:=VarrArrayCreate([0,3], varVariant); V[0]:=1; V[1]:='Hello'; V[2]:=5.37; V[4]:=True;