- •Символьный и строковой типы.
- •Операции над символами и строками
- •Преобразование строк
- •Строки в Delphi
- •Множества и операции с ними
- •Модули в Delphi
- •Событийно – ориентированное программирование
- •Объективно-ориентирование программирование
- •Классы и объекты
- •Объявление класса
- •Абстрактные методы
- •Перегружаемые методы
- •Структура проекта Делфи
- •Визуальное программирование
- •Реакция на события.
- •Компоненты Делфи
- •Фокус ввода
- •Общие свойства объектов
- •Модуль Math
- •Класс tLabel
- •Панели и их назначение
- •Обработка исключительных ситуаций
- •Класс tExeption
- •Создание нового класса исключения
- •Компоненты страницы Dialogs
- •Компоненты tOpenDilog, tSaveDialog
- •Графика в Делфи
- •Класс tCanvas
- •Метод класса tCanvas
- •Класс Tpen
- •Класс tFont
- •Класс tBrush
- •Класс tGraphics Tpicture
- •Класс TpaintBox
- •Класс tBitMap
- •Методы BitMap
- •Класс tImage
- •Подрограмма формирования преобразования строк.
- •Класс tForm
- •Печать из программы
- •Работа с файлами
- •Работа с файловой системой Windows.
Подрограмма формирования преобразования строк.
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 можно поместить:
Целое или вещественное число
Логическое значение
Строка
Время дата
OLE объект (4 байтовая ссылка)
Динамический массив (ссылка на данные)
Содержащие элементы одного из перечисленных выше типов.
Под переменную variant 16 байт. В них содержится код типа, а так же значение переменной или ссылка на значение.
Для variant переменной в паскале предопределены 2 стандартных значение:
Unassigned – переменная не присвоено пока значение какого-либо типа. Таким значением инициализируют.
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;