Типы данных Delphi. Простые типы (целый, вещественный, символьный, строковый, логический). Объявление констант и переменных в разделе описания.
Переменная — это область памяти, в которой находятся данные, которыми оперирует программа. Когда программа манипулирует с данными, она, фактически, оперирует содержимым ячеек памяти, т. е. переменными. В языке Delphi каждая переменная перед использованием должна быть объявлена. С помощью объявления устанавливается не только факт существования переменной, но и задается ее тип, чем указывается и диапазон допустимых значений.
В общем виде инструкция объявления переменной выглядит так:
Имя : тип;
□ имя — имя переменной;
□ тип — тип данных, для хранения которых предназначена переменная. Пример:
а : Real; b : Real; i : Integer;
В приведенных примерах объявлены две переменные типа real и одна пе ременная типа integer.
В
тексте программы объявление каждой
переменной, как правило, помещают на
отдельной строке.
Если в программе имеется несколько переменных, относящихся к одному типу, то имена этих переменных можно перечислить в одной строке через запятую, а тип переменных указать после имени последней переменной через двоеточие, например:
a,b,c : Real; xl,x2 : Real;
Именованная константа, как и переменная, перед использованием должна быть объявлена. В общем виде инструкция объявления именованной константы выглядит следующим образом:
константа = значение;
□ константа — имя константы;
□ значение — значение константы.
Именованные константы объявляются в программе в разделе объявления констант, который начинается словом const. Ниже приведен пример объявления именованных констант (целой, строковой и дробной).
const
Bound = 10;
Title = ‘Скорость бега’; pi = 3.1415926;
После объявления именованной константы в программе вместо самой константы можно использовать ее имя.
В
отличие от переменной, при объявлении
константы тип явно не указывают.
□ 12 5 — константа целого типа;
□ о.о — константа вещественного типа;
□ ‘Выполнить’ —строковая константа;
□ ‘ \ ‘ — символьная константа.
Оператор присваивания Delphi. Арифметические (регулярные) выражения. Основные математические и логические функции, их приоритет.
Инструкция присваивания выполняется следующим образом:
1. Сначала вычисляется значение выражения, которое находится справа от символа инструкции присваивания.
2. Затем вычисленное значение записывается в переменную, имя которой стоит слева от символа инструкции присваивания.
Например, в результате выполнения инструкций:
□ i: =о; — значение переменной i становится равным нулю;
□ а: =ь+с; — значением переменной а будет число, равное сумме значений переменных ь и с;
□ j: = j+1; — значение переменной j увеличивается на единицу.
Инструкция
присваивания считается верной, если
тип выражения соответствует или может
быть приведен к типу переменной,
получающей значение.
Например, переменной типа real можно присвоить значение выражения,
ТИП которого real ИЛИ integer, а Переменной ТИПа integer МОЖНО ПРИСВОИТЬ значение выражения только типа integer.
Так, например, если переменные i и п имеют тип integer, а переменная
d — ТИП real, ТО ИНСТРУКЦИИ
i:=п/10; i:=1.0;
неправильные, а инструкция
d:=i+l;
правильная.
Во время компиляции выполняется проверка соответствия типа выражения типу переменной. Если тип выражения не соответствует типу переменной, то компилятор выводит сообщение об ошибке:
Incompatible types … and …
где вместо многоточий указывается тип выражения и переменной. Например, если переменная п целого типа, то инструкция n: = т/2 неверная, поэтому во время компиляции будет выведено сообщение :
Incompatible types ‘Integer’ and ‘Extended’.
Математические функции
Функция | Значение |
Abs (п) | Абсолютное значение n |
Sqrt(п) | Квадратный корень из п |
Sqr (п) | Квадрат п |
Sin (п) | Синус п |
Cos (п) | Косинус п |
Arctan(n) | Арктангенс п |
Exp (n) | Экспонента п |
Ln (n) | Натуральный логарифм г: |
Rardom. | Случайное целое число в диапазоне от 0 до п-1 |
Порядковые типы данных в Delphi. Основные функции для работы с ними.
Не то вот ,что надо http://borlpasc.narod.ru/refer/2/tip.htm
http://www.tspu.tula.ru/ivt/old_site/umr/delphi/delphi_help/D5ophlp2_web/33.html
Определение собственных типов данных
Зачем нужны новые типы
При создании практически любой серьезной программы обойтись без дополни-
тельных, более сложных, чем числа и строки, типов данных бывает довольно трудно.
Гораздо удобнее работать, например, с типом данных Цвет и его значениями: крас-
ный, желтый, зеленый. — нежели просто с числами 1,2,3. Программа при этом полу-
чается значительно нагляднее, а это залог ее качества.
Описание нового типа
Чтобы описать (ввести в программу) новый тип данных, в Паскале имеется специ-
альное ключевое слово type:
typeназвание-типа = описание-типа;
Название типа — это произвольный идентификатор Паскаля. Описание типа может
представлять собой описание перечислимого типа, описание сложного типа, опи-
сание массива и так далее.
Перечислимые типы
Помимо обычных числовых и строковых типов Паскаль позволяет создавать типы,
диапазон значений которых — просто набор идентификаторов. Это удобно в тех
случаях, когда в решаемой задаче имеется понятие, значения которого нагляднее
описывать не числами, а словами.
ЗАМЕЧАНИЕХотя такие же значения можно создать с помощью констант, пере-
числимый тип представляет собой именно тип данных, с помощью
которого можно описывать переменные и выполнять над ними раз-
личные операции.
Перечислимый тип записывается взятой в круглые скобки последовательностью
идентификаторов — значений этого типа, перечисляемых через запятую. Первые
элементы типа считаются младшими по сравнению с идущими следом.
Например, тип, описывающий названия футбольных команд, может быть сфор-
мирован так:
typeTFootballTeam =
(Spartak, CSKA, Dynamo, Locomotive, Torpedo};
varTeam: TFootballTeam;
,b egi. n
Team := Locomotive;
Определение собственных типов данных 39
Б Паскале под перечислимыми типами обычно понимаются не только типы, пред-
ставляющие собой списки идентификаторов, но и другие базовые типы, для кото-
рых можно формально определить последовательность значений и их старшинство.
К таковым относятся(знать диапазоны!)
О все целочисленные типы (Integer, Byte и так далее), для которых всегда можно
сказать, какое следующее число будет следовать за числом N;
О символьные типы (Char): за символом ‘а’ всегда следует символ Ъ’, за символом
‘О’ — символ Т и так далее;
О логические типы — тип Boolean представляет собой не что иное, как пере-
числимый тип (False, True).__
Основныестандартные функции
для работы с типами
В дальнейшей работе с Паскалем не обойтись без базового набора стандартных
функций и процедур (табл. 1.7 и 1.8).
Таблица 1.7. Стандартные функции
Имя функции Возвращаемое значение
Ord Порядковый номер элемента для перечислимых типов, код ASCII для типа Char
Chr Символ (тип Char), преобразованный из числового аргумента
Pred Предыдущее по порядку значение данного типа. Например, значение Pred(5)
равно 4
Succ Следующее по порядку значение данного типа. Например, значение Succ(5)
равно 6
Length Длина строки или число элементов е массиве
High Максимально допустимое значение (для типа). Например, значение High(Byte)
равно 255. Верхняя граница (для массива). Для динамических массивов это
значение всегда равно LengthQ — 1
Low Минимально допустимое значение (для типа). Например, значение Low(Byte)
равно 0. Нижняя граница (для массива). Для динамических массивов это
значение всегда равно О
SizeOf Размер элемента данных указанного типа в байтах. Например, значение
SizeOf(Byte) равно 1, значение SizeOf (Integer) равно 4.
Таблица 1.8. Стандартные процедуры
Имя процедуры Назначение
Операции над порядковыми типами
Операция | Описание |
Low (T) | Минимальное значение порядкового типа Т |
High(T) | Максимальное значение порядкового типа Т |
Ord(X) | Порядковый номер значения выражения порядкового типа.![]() |
Pred(X) | Предыдущее по порядку значение. Для целых выражений эквивалентно Х-1 |
Succ(X) | Следующее по порядку значение. Для целых выражений эквивалентно Х+1 |
Dec(V) | Уменьшает значение переменной на 1. Эквивалентно V := Pred(V) |
Inc(V) | Увеличивает значение переменной на 1. Эквивалентно V := Succ(V) |
5. Символьные и строковые типы данных. Размещение в памяти, основные функции для работы с ними. Способы задания литералов.
Символы
Помимо чисел, в Паскале разрешается обрабатывать данные в виде одиночных сим-
волов и их последовательностей (строк). Символы имеют тип Char и записываются
в виде знака, взятого в одиночные кавычки:
‘ 5 ‘
Иногда требуется обрабатывать символы, имеющие значения, которые невозможно
отобразить на экране. В таких случаях символ записывается в виде числа, перед
которым стоит знак # (в соответствии с кодами символов в кодировке ANSF).
Например:
#0
#40
Полным аналогом типа Char является тип AnsiChar. Допустимый диапазон его зна-
чений (при записи с помощью чисел) — от #0 до #255. В Паскале имеется еще тип
WideChar, соответствующий шрифтовой кодировке UNICODE (первые 256 симво-
лов этого типа соответствуют кодировке ANSI).
Строки
Строка – это последовательность символов ASCII. При использовании в выражениях строка заключается в апострофы. Количество символов в строке (длина строки) может динамически изменяться в пределах от 0 до 255. Для определения данных строкового типа используется идентификатор string, за которым следует заключенное в квадратные скобки значение максимально допустимой длины строки данного типа. Если это значение не указывается, то по умолчанию длина строки принимается равной 255 байтам.
Последовательность символов, заключенная в одиночные кавычки, называется
строкой (тип String — зарезервированное слово). Например:
‘это текстовая строка Паскаля’
Если требуется поместить сам символ одиночной кавычки внутрь строки, его надо
повторить дважды:
‘это » — символ одиночной кавычки1
Некоторые символы могут иметь значения, которые невозможно непосредственно
отобразить на экране (символы, не соответствующие стандарту ANSI). В этом случае
коды соответствующих символов можно прямо (без разделяющих пробелов) вклю-
чать в состав строки.
‘в этой строке’#10#13’ имеются непечатные символы’#0
Строки в Паскале могут быть различной максимальной длины. Строка типа
ShortString содержит до 255 символов (этот тип введен для совместимости со ста-
рыми версиями), строка типа AnsiString — 231 (2 Гбайт) символов, относящихся к
типу AnsiChar (данный строковый тип совпадает со стандартным типом string),
строка типа WideString — 230 символов типа WideChar.
Строка может быть пустой, не содержащей ни одного символа. Тогда она записы-
вается как две идущие подряд одиночные кавычки — «.
Типы параметров для подпрограмм и структур Delphi
Применимо к TestComplete 15.45, последнее изменение 17 ноября 2022 г.
В этом разделе показано, как указать типы параметров и элементов для подпрограмм и структур Delphi при вызове функций DLL из тестов TestComplete. Полное объяснение указания типов включено в описание IDefineDLL.DefineProc
.
Важные примечания
Типы параметров
Важные примечания
При указании параметров и типов элементов для подпрограмм и структур Delphi, расположенных в библиотеках DLL, имейте в виду следующие особенности:
Компилятор Delphi может выравнивать элементы структуры по определенным границам: по байтам, словам, двойным словам и т. д. Например, приложения часто используют выравнивание по двойным словам. В этом случае адрес каждого члена кратен 4.
Таким образом, если структура имеет булев член, вы должны указать его тип как
vt_b4
вместоvt_b1
.По умолчанию компилятор использует выравнивание для тех структур, которые определены по умолчанию, то есть без использования оператора
упакованной записи
. Итак, при создании типа данных для структур «по умолчанию» в скриптах обратите внимание на размер членов структуры.Убедитесь, что вы правильно указали типы параметров. Неправильное определение типов параметров может привести к закрытию TestComplete (это происходит потому, что ошибочные определения приводят к неправильной обработке стека).
Для пользователей JavaScript, JScript, Python, C#Script и C++Script : Эти языки сценариев не поддерживают передачу переменных по ссылкам через параметры вызываемой функции. Следовательно, вы не можете передать переменную обычного типа данных (например, целое число, логическое значение и т.
д.) по ссылке на процедуру DLL и получить значение, измененное процедурой в вашем JavaScript, JScript, Python, C#Script или C+. +Script (это ограничение распространяется также на C#Script и C++Script, поскольку эти языки основаны на JScript и используют движок JScript). В этом случае значение переменной, переданное в подпрограмму DLL из вашего теста JavaScript, JScript, Python, C#Script или C++Script, фактически остается прежним после завершения выполнения подпрограммы, поскольку подпрограмма работает с копией переменная.
Однако объекты передаются через параметры подпрограммы по ссылкам на этих языках, и если вызываемая подпрограмма изменяет некоторые элементы объекта, переданного через ее параметры, вызывающая подпрограмма может получить доступ к обновленному объекту. Таким образом, если вы передаете пользовательскую структуру, массив или строковое значение, созданное методом
DLL.New
илиIDLLAccessProcess.New
(см. Использование пользовательских структур данных в вызовах функций DLL, Использование массивов в вызовах функций DLL и Использование строковых параметров в Вызовы функций DLL) из вашего теста JavaScript, JScript, Python, C#Script или C++Script в подпрограмму DLL, вы можете затем получить доступ к измененной структуре, массиву или строке после завершения выполнения подпрограммы.Дело в том, что такие структуры, массивы и строки создаются
Новые методы
в качестве объектов-оболочек и такие объекты, переданные в подпрограмму DLL, могут быть изменены и возвращены из подпрограммы, в которую они передаются по ссылкам.В Python все константы пишутся с заглавной буквы. Итак, вы пишете VT_BYREF, VT_R4 и так далее.
Типы параметров
В следующей таблице показаны соответствия между типами данных Delphi и специальными константами, используемыми в TestComplete при вызове IDefineDLL.DefineProc
, DLL.DefineType
и IDLLAccessProcess.DefineType
методы для указания типов данных параметров функций DLL или членов структур, определенных в DLL.
Ансичар | vt_ui1 |
AnsiString | vt_lpstr Этот тип поддерживается только для параметров функции. ![]() AnsiString не поддерживаются. |
Булево значение | vt_b1 |
БСТР | vt_bstr |
Байт | vt_ui1 |
Байтбул | vt_b1 |
Кардинал | vt_ui4 |
Символ | vt_i1 |
Валюта | vt_cy |
Двойной | vt_r8 |
DWord | vt_ui4 |
HРезультат | vt_ui4 (HRESULT не является Variant-совместимым типом, поэтому для того, чтобы вы могли работать с данными HRESULT, объявите их как vt_ui4 , а не как vt_hresult .) |
HWND | vt_ui4 (для 32-разрядных DLL) — или — vt_ui8 (для 64-разрядных DLL) |
IDispatch | vt_dispatch (см.![]() |
Целое число | vt_i4 — или — vt_int |
Целое64 | vt_i8 |
ЛонгБул | vt_b4 |
Лонгинт | vt_i4 — или — vt_int |
Длинное слово | vt_ui4 |
ОлеВариант | vt_variant |
Пбайт | vt_byref | vt_ui1 |
PChar | vt_lpstr — или — vt_byref | vt_i1 Этот тип поддерживается только для параметров функции. Значения результатов PChar не поддерживаются. |
PWChar | vt_lpwstr |
Целое число | vt_byref | vt_int |
Вариант | vt_byref | vt_variant |
Действительный (8-байтовый Действительный, не Действительный48) | vt_r8 |
Одноместный | vt_r4 |
Малый | vt_i2 |
строка | 9Строка 0006 Тип не поддерживается.![]()
|
TDateTime | vt_date |
Вариант | vt_variant |
VARIANT_BOOL | vt_bool |
Широкоугольный | vt_ui2 |
Широкая строка | vt_bstr |
Ворд | vt_ui2 |
WordBool | vt_b2 |
См. также
Вызов функций DLL из тестов
Вызов функций DLL из тестов — обзор
Вызов функций DLL из тестов — учебное пособие
Возврат ссылок интерфейса из функций DLL
Типы данных Delphi для интеграции API
Типы данных Delphi для интеграции API
Иногда нам может понадобиться интегрировать API, написанные на других языках, в наше приложение Delphi, или нам может понадобиться вызывать API-интерфейсы Windows при работе со сложными структурами данных, или нам может понадобиться взаимодействовать с компонентами ActiveX OLE. В таких случаях основной проблемой является несоответствие типа данных. Таким образом, для лучшей совместимости Delphi предоставляет следующие типы данных Pointer, которые можно использовать для отправки и получения данных в другие приложения и из них в приложения Delphi.
Целочисленные типы данных
Тип | Описание | Указатель |
8-битный целое число без знака | ||
Короткий интервал | 8-битный целое число со знаком | Пшортинт |
16-битный целое число без знака | ||
Малый Целый | 16-битный целое число со знаком | PSmallInt |
Кардинал | 32-битный целое число без знака | ПК Кардинал |
Лонгворд | 32-битное целое число без знака 64-битное целое число без знака | PLongWord |
ФиксированныйUInt | 32-битный целое число без знака | PFixedUInt |
Целое число | 32-битный целое число со знаком | PЦелое число |
LongInt | 32-битное целое число со знаком | PLongint |
Фиксированное целое | 32-битный целое число со знаком | Пфиксединт |
UInt64 | 64-битный целое число без знака | PUInt64 |
64-битный целое число со знаком | PInt64 | |
Нативуинт | 64-битный или 32-битное целое число без знака, зависящее от платформы, | PNativeUInt |
НативИнт | 64-битный или 32-битное целое число со знаком , зависящее от платформы | PNativeInt |
Типы данных с плавающей запятой
Тип | Описание | Указатель |
Одноместный | Одинокий точность с плавающей запятой (4 байта) | PS одиночный |
Двойная | Двойной точность с плавающей запятой (8 байт) | PДвойной |
Расширенный | Расширенный точность с плавающей запятой | PРасширенный |
Строковые и символьные типы данных
Тип | Описание | Указатель |
Ансичар | ANSI персонаж | ПАнсиЧар |
Широкий символ (16 бит) | ||
WideChar | 16-битный персонаж | PWideChar |
AnsiString | Представляет собой
динамически размещаемая строка ANSI, максимальная длина которой ограничена только
доступная память. | PAnsiString |
RawByteString | Использовать как параметр, не зависящий от кодовой страницы, для метода или функции, или как тип переменной для хранения данных BLOB. | PRawByteString |
UnicodeString | Юникод строка | PUnicodeString |
Строка | Псевдоним для UnicodeString | PString |
Короткая строка | А строка не более 255 символов | PShortString |
Широкая строка | А строка 16-битных символов | Пвайдестринг |
Логические типы данных
Тип | Описание | Указатель |
Булево значение | Представляет собой
логическое значение (истина или ложь). | PBoolean |
Байтбул | Представляет собой 8-битное логическое значение. | |
WordBool | Представляет собой 16-битное логическое значение. | PWordBool |
ЛонгБул | Представляет собой 32-битное логическое значение. | PLongBool |
Другие типы данных
Тип | Описание | Указатель |
Вариант | Представляет собой
значения, которые могут изменять тип во время выполнения. | Вариант |
Указатель | Представляет собой указатель на данные любого типа. | PPointer |
Валюта | фиксированная точка тип данных, используемый для хранения денежных значений. | Валюта |
Популярные посты из этого блога
ShellExecute в Delphi
ShellExecute в Delphi — запуск внешних приложений. ShellExecute — это функция Delphi Windows API, которая в основном используется для запуска внешних приложений из нашего приложения Delphi. Эта функция связана с функцией Windows API ShellExecute. Функция возвращает целое число, соответствующее коду ошибки, что очень полезно, когда нам нужно показать некоторый статус, сработала функция или нет. С помощью ShellExecute мы также можем выполнять следующие операции…. Можно печатать документы из моей программы, не запуская явным образом приложение, создавшее документ, например: печатать документ Word, не запуская Word. Может открыть браузер с локальной HTML -страницей CAN CAN SURF на сайт, то есть открыть внешнюю ссылку URL -адреса из приложения Delphi может отправить почту Shellexecute Shellexecute Paints (_in_opt_ hwnd hwnd, _in_opt_ lpctstr lpoperes
Читать далее
Рисование фигур в Delphi
Поверьте мне, рисовать фигуры в Delphi очень просто. Для разработки программного обеспечения, такого как САПР, Paint, CorelDraw, Delphi предоставляет большое количество классов и элементов, поддерживающих рисование фигур в форме или графическом элементе управления. В Delphi мы рисуем фигуры на холсте формы или графических элементов управления. Холст — это область формы, где мы можем рисовать фигуры, линии и заполнять фигуры цветами. В Delphi у каждой формы или графического элемента управления есть свойство Canvas, которое предоставляет объект TCanvas, который можно использовать для рисования фигур. Объект TPen используется для рисования линий, и мы можем установить размер и цвет линий. Объект TBrush используется для установки цвета и стиля заливки фигур. Наиболее часто используемые классы для рисования фигур – TCanvas , TBitmap, TGraphics, TPen, TBrush. TCanvas Используйте TCanvas в качестве поверхности для рисования объектов, рисующих собственное изображение. , и рисовать), а также хранить изображения в памяти и в виде файлов на диске. TGraphics TGr
Читать далее
Автоматизация MS Excel в Delphi
В этом блоге я опишу, как читать и записывать данные из файла Excel и в него. Иногда в нашем приложении мы используем Excel для целей отчетности, для целей импорта/экспорта данных и для других работ.