Вторник, 28.01.2025, 06:00
Системы автоматизированного проектирования в радиоэлектронике
В начало | Регистрация | Вход Приветствую Вас Гость | RSS
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Delphi имеет более мощный объектный синтаксис, чем Pascal, но поддерживает и старый (compile).
Delphi (как и Pascal) является языком строгой типизации. Это значит, что переменным, объявленным с конкретным типом, должны присваиваться значения того же типа.
Типы данных:
  -Integer
  -Real
  -Boolean
  -Char
  -String
  -Pointer
  -PChar

Integer – служит для обозначения порядковой численной величины (целые числа). Имеет длину 2 байта. Диапазон значений -2 147 483 648…+2 147 483 647.
Другие целочисленные типы:
-ShortInt: -128…+127 (1 байт)
-SmallInt: -32 768…+32 767 (2 байта)
-LongInt: -2 147 483 648…+2 147 483 647 (4 байта)
-Int64: -263... +263-1 (8 байт)
-Byte: 0…255 (1 байт)
-Word: 0…65 535 (2 байта)
-LongWord: 0…+4 294 967 295 (4 байта).

Real – хранит вещественные, действительные числа (числа должны иметь определенную точность: 1,844).
-Real48: -2,9*10-39…1,7*1038 (6 байт)
-Single: -1,5*10-45…3,4*1038 (4 байта)
-Double: -5*10-324…1,7*10308 (8 байт)
-Extended: -3,4*10-4932…1,1*104932 (10 байт)
-Comp: -263+1…263-1 (8 байт)
-Currency: финансовый.

Boolean – 0 или 1 (ложь или истина) – 1 байт.
-ByteBool – (1 байт) - хранит значения со знаком (не обязательно 1 или 0).
-WordBool – (2 байта) - хранит значения со знаком (не обязательно 1 или 0).
-LongBool – (4 байта) - хранит значения со знаком (не обязательно 1 или 0).
При несоответствии типов булевых переменных в случае взаимодействия с другими приложениями можно попытаться увеличить размер логической переменной. 
Char – одиночные символы ‘A’.

String – текст ‘текст’.
-ShortString – по 255 символов (память выделяется автоматически).
-AnsiString – 231 символов (2 Гбайта).
  Пустая строка – ‘’.
PChar - cтроки с нулём в конце. Введены для совместимости с Windows и кодом ,написанным на С/С++.
Строки фиксированной длинны – string[50].

Типы могут автоматически преобразовываться (но не всегда).

Var
  ival: longint;
  pval: pointer;
begin
  ival:=pval; → ошибка
end;

Var
  ival: longint;
  pval: pointer;
begin
  ival:=longint (pval);
end;
Переменная типа ‘pointer’ привязана к типу longint.

Приведение типов может привести к нежелательному округлению и даже к потере данных:
Var
  bval: byte;
begin
  bval:=byte (255+1); 
end;
Без приведения типов, компиляция будет давать ошибку. С приведением, программа компилируется, но значение bval = Ø, т.к. данные предполагается разместить в одном байте, поэтому значимый бит теряется.
Приведение типа может осуществляться как для переменной, так и для значения (результата).

Собственные типы данных.
Для описания нового типа данных:
 type название_типа = описание_типа;

 Типы:
  -Перечисляемый.
Описывается взятой в круглые скобки последовательностью значений этого типа:
 type САПР = (ACAD, OrCAD, SolidWorks, PCAD); 

  -Поддиапазоны.
Наименьшее значение .. наибольшее значение.
  type Distance = 0..100;
  Var length: Distance;
  Begin
  Length:= 5; - Ok
  Length:= 101; - Ошибка
Кроме числовых диапазонов можно использовать символьные, а также поддиапазоны уже определённых перечисленных типов:
type Str = ‘a’ .. ‘n’;
type SAPR = ACAD..SolidWorks;

-Структурные типы данных.
 Массивы.
Доступ к элементам осуществляется по номеру (индексу). Элементы массива одного типа, индекс может вычисляться.
  type имя_типа_пользователя = array[диапазон] of тип_элемента;
  type TPoz = array[1..10] of integer
Переменную можно декларировать явно как массив:
  Var TPoz: array[1..10] of integer;
Но тогда при внешнем одинаковом описании переменных они будут считаться разного типа. В этом случае: 
  Var T1: array[1..10] of integer;
  T2: array[1..10] of integer;
  Begin 
  T1:= T2 → неправильно.

  Type Ttype = array[1..10] of integer;
  Var T1: Ttype;
  T2: Ttype;
  Begin
  T1:= T2; → правильно.

Записи.
Запись – это структура данных, доступ к элементам которой осуществляется по имени (названию) элемента. Элементы записи могут иметь разный тип:
  type название_типа_записи =
  record
  название_элемента: тип_элемента;
  …………………….
  end;

Пример:
  type PriborRecord =
  record
  Naimen: String;
  Ves: Real;
  God: 1950..2003;
  end;
Для обращения к элементу записи сначала указывается имя переменной, затем точка и название элемента:
  Var Prib: ProborRecord;
  begin
  Prib.ves:= 1.65;
  Prib.God:= 1998;
  …………….
Чтоьы не упоминать каждый раз имя переменной (основное внимание - всё равно элементу) – используется ключевое слово with:
  with Prib do
  begin  
  Ves:= 1.65;
  God:= 1998;
  end;

Множества.
Множество напоминает перечисленный тип, но элементы в нем не упорядочены.
Описание:
type тип_множества = set of диапазон_значений_множества
Число элементов множества - не более 256.
type MySet – set of 0..255;
type MySet – set of Byte;
Конкретные значения множества задаются перечислением списка значений:
MySet:= [1,2,5,18,21..48];
Над множествами производятся операции:
+ (объединение): [1,2,3] + [3,4,5] равно [1,2,3,4,5]
– (разность): [1,2,3] – [3,4,5] равно [1,2]
* (пересечение): [1,2,3] * [3,4,5] равно [3]
 
Указатели.
Служат для повышения эффективности программ. В переменной указателя храниться не значение конкретного типа, а адрес памяти, по которому храниться это значение.
Var BytePtr: ^byte; т.е. переменная BytePtr хранит не данные, а указатель.
Чтобы присвоить ей адрес конкретного места памяти, используется операция @:
Var BytePtr: ^byte;
  ByteVal: byte;
  begin
  ByteVal:= 255;
  BytePtr:= @ByteVal;
Чтобы получить содержимое нужной ячейки памяти:
  N:= BytePtr^; ^ - после  
  BytePtr^:= 50;
С указателями можно производить операции, результатом которых будет сдвиг адреса памяти.

Варианты.
Тип Variant применяется для поддержки межпрограммного обмена данными, которые организованы по-разному в различных приложениях.
 Var V: Variant;
 begin
 V:= 1;
 V:= 2.3;
 V:= true;
 V:= ‘строка’
 
  или:
  Var R: real;
  V: variant;
  begin
  V:= ‘9,55’;
  R:= V*1.14

Данные типов Pointer и Variant надо применять только там, где без этого не обойтись (обращение к внешним программам, запущенным в сети).
Возможно описание сложных структур данных на основе произвольного комбинирования существующих структур данных и создание новых типов на основе определенных ранее.

Поиск
Друзья сайта
Copyright MyCorp © 2025
Конструктор сайтов - uCoz