Простые типы данных
Введение
В предыдущих уроках мы между делом знакомились с типами данных. Всё это время речь шла о простых типах. Сегодня мы обобщим пройденное ранее, а также познакомимся с новым материалом, который необходимо знать в рамках темы «Простые типы данных». Осмысленно подходить к выбору типов данных для используемых в программах переменных необходимо по разным причинам. Во-первых, имея под рукой многообразие доступных типов и умело ими распоряжаясь, можно сократить объём памяти, требуемый программе для работы. Экономию в 1-2 байта никто не заметит, но если речь идёт о больших объёмах данных, эти байты могут вылиться во вполне реальные мегабайты. Во-вторых, разумный выбор типов данных позволяет избежать некоторых ошибок, причём как со стороны программиста (на этапе создания программы), так со стороны пользователя (во время использования программы).
Простые типы данных — общее представление
Простые типы данных названы простыми, потому что они не содержат внутри себя никаких других типов. Кроме того, простые типы данных обеспечивают хранение в памяти только одного значения. К простым типам данных относят следующие:
- целочисленные;
- вещественные;
- логические;
- строковые (символьные).
Следует отметить, что все эти типы за исключением вещественного, упорядочены. Что это значит? А это значит, что в рамках данного типа значения расположены не в произвольном порядке, а в порядке возрастания. Зная об этом, в некоторых случаях можно исключить в своей программе лишний код. Поясню на примере, как именно упорядочены значения в этих типах данных:
Целочисленный тип — содержит числовые значения, целые числа. Числа упорядочены по возрастанию: . -2, -1, 0, 1, 2, 3, .
Логический тип — содержит всего 2 значения — True, False, которые тоже упорядочены: False, True (следует из соответствия False — 0, True — 1).
Символьный тип — символы кодовой таблицы. Поскольку каждому символу соответствует свой код, то символы расположены в порядке увеличения кода. К примеру, буквы латинского алфавита A, B, C, D, . идут в кодовой таблице именно так, т.к. чем дальше от начала алфавита, тем больший код имеет буква. То же самое касается и арабских чисел в кодовой таблице — они идут по порядку: 0, 1, 2, . 8, 9. Это позволяет делать такие сравнения, как, например ‘A’ Pred() — функция возвращает предыдущее значение для выражения, указанного в качестве единственного аргумента.
Примеры: Pred(5) = 4, Pred(‘E’) = ‘D’, Pred(True) = False.
Succ() — функция, обратная для Pred() — возвращает следующее значение.
Примеры: Succ(5) = 6, Succ(‘E’) = ‘F’, Succ(False) = True.
Ord() — возвращает порядковый номер значения в списке значений типа данных. С этой функцией мы уже встречались при работе со строками — с её помощью мы узнавали код символа.
Примеры: Ord(‘A’) = 65, Ord(True) = 1.
Low() — возвращает минимальное значение указанного типа данных.
Примеры: Low(Byte) = 0, Low(Boolean) = False, Low(Char) = #0 (символ с кодом 0).
High() — возвращает максимальное значение указанного типа данных.
Примеры: High(Byte) = 255, High(Boolean) = True, High(Char) = #255 (в русской локали это символ «я»).
Ну и ещё две процедуры, с которыми мы уже знакомы:
Dec() — уменьшает значение на единицу.
Inc() — увеличивает значение на единицу.
Не забывайте о втором необязательном параметре этих процедур.
Пользовательские типы данных
На основе порядковых типов данных программист может создать свои собственные типы — перечислимые и интервальные. Они будут рассмотрены ниже.
Целочисленные типы
Как следует из названия, целочисленные типы позволяют хранить целые числа. Среди них есть типы, которые хранят числа со знаком (т.е. положительные или отрицательные), а есть и такие, которые хранят только положительные. Чем большее количество значений может содержать тип, тем больше памяти он занимает. Рассмотрим целочисленные типы данных.
Сначала рассмотрим беззнаковые типы, т.е. те, которые позволяют хранить только положительные числа и ноль:
Byte — значения 0..255 — занимает в памяти 1 байт.
Word — значения 0..65535 — 2 байта.
LongWord — значения 0..4294967295 — 4 байта.
Теперь типы со знаком (отрицательные числа записываются со знаком минус «-» впереди, неотрицательные могут записываться как со знаком «+», так и без него):
ShortInt — значения -128..127 — 1 байт.
SmallInt — значения -32768..32767 — 2 байта.
LongInt — значения -2147483648..2147483647 — 4 байта.
Int64 — значения -2 ^53 ..2 ^53 -1 — 8 байт.
Существуют также 2 общих типа, которые находят своё отражение в вышеперечисленных. Рекомендуется использовать именно эти типы, т.к. компилятор «заточен» под них и создаёт более быстрый и эффективный код:
Integer — значения -2147483648..2147483647 — 4 байта.
Cardinal — значения 0..4294967295 — 4 байта.
Следует отметить, что целые числа могут быть представлены не только в десятичной, но и в шестнадцатеричной системе счисления, т.е. в виде $xxxxxxxx, где x — один из символов 0, 1, . 8, 9, A, B, . E, F. К примеру, все цвета (точнее, их коды) представляются именно в виде шестнадцатеричных чисел.
Логические типы
С логическими выражениями и с логическим типом данных мы уже знакомы — это тип Boolean , принимающий значения True и False. Помимо Boolean существуют следующие логические типы: ByteBool , WordBool и LongBool . Однако последние введены лишь для обспечения совместимости с другими языками и системами программирования. Использовать рекомендуется только тип Boolean. Логическое значение в памяти занимает 1 байт. На самом деле, конечно, достаточно и одного бита, но оперировать ячейками меньше байта, мы, к сожалению, не можем.
Символьные типы
Символьные типы обеспечивают хранение отдельных символов. Основной тип данных — Char , который содержит символы с кодами 0..255. Существуют ещё типы AnsiChar и WideChar . Тип AnsiChar эквивалентен типу Char, т.е. по сути это один и тот же тип. Занимает в памяти 1 байт. Для кодирования символов используется код ANSI (American National Standards Institute). Тип WideChar кодируется международным кодом Unicode и занимает в памяти 2 байта. Таблица Unicode включает символы практически всех языков мира.
Вещественные типы
Из названия следует, что эти типы используются для хранения вещественных, т.е. действительных чисел. Отличаются они границами допустимых значений и точностью, т.е. числом цифр после запятой. Вот эти типы:
Real (он же Double ) — значения от 5.0×10 ^-324 до 1.7×10 ^308 , точность — 15-16 цифр, занимает в памяти 8 байт.
Real48 — значения от 2.9×10 ^-39 до 1.7×10 ^38 , точность — 11-12 цифр, 6 байт памяти.
Single — значения от 1.7×10 ^-45 до 3.4×10 ^38 , точность — 7-8 цифр, 4 байта.
Extended — от 3.6×10 ^-4951 до 1.1×10 ^4932 , точность — 19-20 цифр, 10 байт памяти.
Comp — от -2×10 ^63 +1 до 2×10 ^63 -1, точность — 19-20 цифр, 8 байт.
Currency — от -922337203685477.5808 до 922337203685477.5807, точность — 19-20 цифр, в памяти занимает 8 байт.
Как и в случае с целыми числами, перед вещественными числами может стоять знак «+» или «-«.
Существует 2 формы записи вещественных чисел — с фиксированной точкой и с плавающей.
Запись с фиксированной точкой представляет собой обычную запись, в которой целая и дробная части отделены друг от друга точкой/запятой.
Запись с плавающей точкой подразумевает запись порядка числа, который отделяется от самого числа буквой «E» (запись «e» тоже допустима). Например, запись 1.5e2 означает число 1.5 с порядком +2, т.е. это 1.5×10 ^2 = 150.
Типы Comp и Currency были введены специально для произведения точных денежных расчётов. При этом, тип Comp, как видно из значений границ диапазона, хранит целые числа, поэтому при задании чисел с дробной частью они автоматически преобразуются в ближайшее целое число.
Перечислимые типы данных
От рассмотрения готовых типов данных перейдём к типам, которые могут быть созданы самим программистом. Один из вариантов, как было отмечено выше, — это перечислимый тип.
Смысл перечислимого типа в том, что мы явным образом указываем (перечисляем) все возможные значения. Преимущества в том, что кроме заданных значений переменные этого типа не смогут принимать больше никаких значений. Кроме того, значения можно задавать вполне осмысленные — например слова. Это упростит понимание кода и написание программы.
Значения типа данных перечисляются через запятую, а весь этот набор заключается в круглые скобки. Описание типа должно производиться в специальном разделе раздела описаний — разделе описания типов. Этот раздел предваряется ключевым словом type . Т.е. запись идёт приблизительно так же, как и описание переменных или констант, только вместо var и const пишется type. Сам тип описывается следующим образом: название типа, далее знак равенства и далее само значение. В случае с перечислимым типом это будет набор возможных значений.
Примечание: практически все типы данных в Object Pascal принято называть с буквы «T» (сокращённо от «Type»). Это не закон языка — просто одно из правил хорошего тона. Зная, что «T***» — это тип, вы никогда не ошибётесь, в противном же случае название можно спутать, например, с названием переменной.
Допустим, мы хотии задать тип данных, определяющий один из месяцев года. Мы можем описать его так:
Обратите внимание, что после описания перечислимого типа в программе не может быть переменных, название которых совпадает с названием значений объявленного типа. В нашем примере не может быть переменных «Jan», «Feb» и т.д. При попытке присвоения переменной перечислимого типа значение, не указанное в списке, компилятор выдаст ошибку, поэтому ошибиться не представляется возможным.
Раздел type существует как в модуле всей формы (в этом разделе изначально описана сама форма: TForm1 = class(TForm) . ), так и в любой подпрограмме. Область действия типа, соответственно, определяется местом в программе, в котором он описан.
Интервальные типы данных
Интервальные типы данных (также их называют ограниченными) получаются из имеющихся типов путём ограничения диапазона значений. Интервал задаётся двумя константами — начальной и конечной границей. При каждом присвоении значения переменной выполняется проверка соответствия нового значения указанному диапазону. Если значение не попадает в диапазон, выдаётся сообщение об ошибке. Во время выполнения программы задание недопустимого значения к ошибке не приводит, зато значение переменной может стать неверным.
Ограниченный тип данных можно создать только на основе простого упорядоченного типа. Значение второй константы (т.е. правой границы) должно быть больше значения первой (левой границы).
Ограниченные типы данных также описывают в разделе type. Формат записи похожий, только между константами-границами ставятся две точки.
Например, мы хотим в программе работать с датами. Можно создать ограниченные типы данных для значений дня, месяца и года (диапазон для значения года следует задать в зависимости от контекста задачи):
Помните, что использование ограниченного типа данных не уменьшит объём занимаемой памяти. Это следует из того, что задание интервала — это всего лишь условное задание возможных значений из общего набора значений данного типа.
Заключение
Сегодня мы рассмотрели простые типы данных — целочисленные, вещественные, символьные и логические, а также научились создавать перечислимые и интервальные типы данных в своих программах. Как было отмечено в начале, все эти типы позволяют хранить только одно значение и не содержат внутри себя других типов. В дальнейшем мы перейдём к рассмотрению структурных типов данных, где дело обстоит иначе.
Автор: Ерёмин А.А.
Статья добавлена: 12 июня 2008
Зарегистрируйтесь/авторизируйтесь,
чтобы оценивать статьи.
Статьи, похожие по тематике
Для вставки ссылки на данную статью на другом сайте используйте следующий HTML-код:
Ссылка для форумов (BBCode):
Быстрая вставка ссылки на статью в сообщениях на сайте:
<
<<статья:122>> — полноценная HTML-ссылка на статью (текст ссылки — название статьи).
Поделитесь ссылкой в социальных сетях:
Комментарии читателей к данной статье
Репутация: +40 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Репутация: нет | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Репутация: +1 |
Было было. где-то в первых ‘уроках’. Кстати чё-то в паскале не помню инта64, как впрочем и реала48. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Репутация: +40 |
При использовании Delphi 2009 — да, там есть поддержка Юникода. А вам нужны греческие и японские? И они на клавиатуре у вас есть? > в одном из предыдущих уроков Вы говорили, что рассскажете про этот момент |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Репутация: -1 |
В качестве параметра все буквы русского, латинского, греческого, японского. и всех остальных языков, а так же все существующие служебные символы. в одном из предыдущих уроков Вы говорили, что рассскажете про этот момент, отсюда собственно и возник вопрос. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Репутация: +40 |
Кажется, вопрос не по теме урока. А как сделать — обработать событие OnKeyDown или OnKeyPress. У второго в качестве параметра введённый символ. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Репутация: -1 |
Оставлять комментарии к статьям могут только зарегистрированные пользователи. Типы данных в Delphi Обучающий материалВ delphi, при разработке приложений для их быстродействия и максимальной производительности в работе с оперативной памятью используются типы данных. Без указания типа невозможно себе представить, какое количество байт будет выделено для хранения значения переменной в оперативной памяти. Только обязательное назначение типа переменной обеспечит эффективную работу приложения с минимальной нагрузкой на компьютерную систему. Язык delphi оперирует достаточно большим набором типов данных: целочисленный тип, вещественный, символьный, строчный и логический тип. К тому же представленные, обобщенные типы в зависимости от объема выделенной памяти под хранение имеют конкретное разделение на типы. Целочисленный тип данных в Delphi представлен:
Следует заметить, что последние 3 типа называются беззнаковыми так, как имеют в своем числовом интервале только положительные числа( нет отрицательных значений). К тому же можно использовать и тип “Integer”, который соответствует “Longint”. К тому же следует знать, что значения в типах имеют строгий порядок. Такое положение позволяет использовать по отношению к значениям различные процедуры и функции. Не относится к вещественному типу данных в Delphi(не упорядочен). Числа с плавающей точкой (дробные) представлены в delphi вещественным типом. Вещественный тип данных делится на 6 типов, которые отличаются числовым диапазоном, количеством значащих цифр и занимаемой памятью.
Currency – этот вещественный тип данных называют еще денежным. С его помощью осуществляется реализация различных приложений финансовой тематики. Имеет 53 бита точности и поддержку 4 десятичных мест. Текстовую информацию(переменные) представляют строковые типы данных в Delphi. Различают 3 типа:
В delphi строковые типы данных допускается обозначать типом string, который аналогичен shortstring. Синтаксис указания типа переменной в delphi довольно просто. Ряд примеров подтверждает это утверждение: Язык Delphi является производным от низкоуровневого языка Object Pascal, что позволяет разрабатывать с использованием совместимых компиляторов программы под Linux. Такое положение обеспечивает написание программ, разработку графических интерфейсов, приложений, способных облегчить администрирование linux, насытить систему новым и удобным функционалом. Структурированные типы данныхЛюбой из структурированных типов (а их в делфи 4: массивы, запписи, множества и файлы) характеризуются множественностью образующих этот тип элементов. Как следует понимать в этом предложении слово «множественность»? Слово packed перед описанием компилятора предписывает компилятору по возможности экономить память, отводимую под объекты структурированного типа. Как понимать эту фразу? Компилятор же не обладает интеллектом, как он может «экономить»?? Как понимать описание: Как понимать такое описание: В чём смысл фразы: В памяти ПК элементы массива следуют друг за другом так, что при переходе от младших индексов к старшим наиболее быстро меняется самый правый индекс массива. ? Как распределяется память в динамическом массиве? Что такое вообще память? Что значит инициализи ровать массив? Зачем использовать функцию Finalize? Чем принципиально отличается динамический массив от статического? Только тем, что статический формируется на стадии компиляции, а динамический в процессе работы программы? Что от этого меняется?? |
07.06.2012, 09:08 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Структурированные типы данных Структурированные типы данных Структурированные типы данных (двухмерные массивы) Структурированные типы данных. Одномерные и двумерные массивы Структурированные типы данных. файлы. работа с текстовыми файлами. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
07.06.2012, 14:35 | 2 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
21.06.2012, 01:07 [ТС] | 3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Большое спасибо, я понял, что означает слов packed. Хотелось бы теперь понять назначение динамической памяти. Также с тех пор накопилось очень много вопросов: |
21.06.2012, 01:07 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Типы данных Типы данных Числовые типы данных Borland delphi 4 0 для начинающих типы данных указательные типыПри описании переменной следует указать ее тип. Знание типа переменной необ- ); Классификация типов данных в Delphi. Типы с плавающей точкой (Double, Single, Real, Extended)Типы бывают: 1)Простые/Порядковые (целый, логический, символьный, перечисляемый, диапазон (интервальный тип)); 2)Вещественный; 3)Структурированные(массивы, записи, файлы, классы, интерфейсы); 4)Строки; 5)Указатели; 6)Вариант; 7)Процедурный тип. Типы с плавающей точкой:
S-e-m Здесь m – знаковый разряд числа; e – экспоненциальная часть (содержит двоичный порядок); m – мантисса числа. Мантисса m имеет длину от 23 (для Single) до 63 (для Extended) двоичных разрядов, что и обеспечивает точность 7-8 для Single и 19-20 для Extended десятичных цифр. Десятичная точка(запятая) подразумевается перед левым (старшим) разрядом мантиссы, но при действиях с числом она сдвигается влево и вправо в соответствии с двоичным порядком числа, хранящимся в экспоненциальной части, поэтому действия над вещественными числами называют арифметикой с плавающей точкой(запятой). К порядковым типам относятся целые типы, логический и символьный типы, а так же перечисления и тип-диапазон(пользовательский тип). К любому из них применима функция ORD(X) , которая возвращает порядковый номер значения выражения X. Для целых типов ORD(X) возвращает само значение X. Применение к логическому, символьному и к перечислениям дает «+» целое число в диапазоне 0-1(лог. тип), 0-255 (символьный), 0-65535 (перечисление). У типа-диапазон результат применения ord(x) зависит от свойств базового порядкового типа. SUCC(X)– возвращает следующее значение порядкового типа( ord(succ(x)) = ord(x)+1).
К типам применимы следующие функции : Abs(x)–возвращает модуль X Chr(x)–возвращает символ по его коду Dec(x)–уменьшает значение на 1 Inc(x)–увеличивает значение на 1 Mod–дробная часть деления Sqr(x)–возвращает квадрат X А так же операции *,/,+,—. 12.Порядковые типы. Символьный тип. Таблица символов. Тип ANSIChar представляет собой так называемые Ansi-символы. Это символы, которые используются в операционных системах семейства Windows(размером 1 байт). Тип WideChar предназначен для хранения так называемых Unicode-символов, которые в отличие от Ansi-симвояов занимают два байта. Это позволяет кодировать символы числами от 0 до 65535 и используется для представления различных азиатских алфавитов. Первые 256 символов в стандарте Unicode совпадают с символами Аnsi.Тип Char в Delphi 7 эквивалентен типу AnsiChar и обеспечивает наибольшую производительность. Для отображения множества символов в подмножество натуральных чисел и обратно имеются следующие две стандартные функции: ord(c) — дает порядковый номер символа с; 14.Порядковые типы. Перечисляемый тип.(пользовательский тип) Описание переменных : var snd:TSound; 15.Тип массив(статический) : описание, ввод, вывод. Форматный вывод.
16.Тип запись : описание, ввод, вывод, Оператор With. Запись с вариантами.
S2:=[‘2’,’3’,’1’]; 18.Текстовый файл : описание файловой переменной, основные операции. Использование параметров программы для передачи программе имен файлов. Основные операторы для работы с текстовыми файлами: Операторы ввода-вывода: Все параметры трактуются как отдельные строки (string). Параметры пользователя нумеруются, начиная с единицы. В нулевом параметре ParamStr(0) ОС передает программе полное имя запускаемого приложения (например, D:\Гречкина\Project1.exe). Этот (нулевой) параметр не входит в общее число параметров, которое можно узнать с помощью функции ParamCount: function ParamCount: word. procedure имя процедуры (формальные параметры); раздел описаний процедурыbegin исполняемая часть процедурыend; … function имя функции (формальные параметры):тип результата; раздел описаний функции begin Формальный параметр-значение обрабатывается, как локальная по отношению к процедуре или функции переменная, за исключением того, что он получает свое начальное значение из соответствующего фактического параметра при активизации процедуры или функции. Изменения, которые претерпевает формальный параметр-значение, не влияют на значение фактического параметра. implementation begin end. При восходящем подходе программа собирается и тестируется снизу вверх. Только модули самого нижнего уровня (модули, не вызывающие других модулей) тестируются независимо, автономно. После того как тестирование этих модулей завершено, вызов их должен быть так же надежен, как вызов встроенной функции языка или оператор присваивания. Затем тестируются модули, непосредственно вызывающие уже проверенные. Эти модули более высокого уровня тестируются не автономно, а вместе с уже проверенными модулями более низкого уровня. Процесс повторяется до тех пор, пока не будет достигнута вершина. Здесь завершаются и тестирование модулей, и тестирование сопряжений программы. Для каждого модуля необходимо написать небольшую ведущую программу. Встроенные типы данныхВстроенные типы данных К числовым типам языка Object Pascal относятся целочисленные и типы чисел с плавающей запятой (табл. Д.1). Таблица Д.1. Числовые типы данных языка Object Pascal
Похожие главы из других книгТипы данныхВстроенные типы данных CTSВстроенные типы данных CTS Еще одной особенностью CTS, о которой следует знать, является то, что спецификации CTS определяют четкий набор базовых типов данных. Хотя каждый язык обычно предлагает свое уникальное ключевое слово, используемое для объявления конкретного Глава 2 Ввод данных. Типы, или форматы, данныхГлава 2 Ввод данных. Типы, или форматы, данных Работа с документами Excel сопряжена с вводом и обработкой различных данных, то есть ин формации, которая может быть текстовой, числовой, финансовой, статистической и т. д. МУЛЬТИМЕДИЙНЫЙ КУРС Методы ввода и обработки данных Типы данныхТипы данных Один из этапов проектирования базы данных заключается в объявлении типа каждого поля, что позволяет процессору базы данных эффективно сохранять и извлекать данные. В SQL Server предусмотрено использование 21 типа данных, которые перечислены в табл. 1.1.Таблица 1.1. 12.2. Типы баз данных12.2. Типы баз данных Группу связанных между собой элементов данных называют обычно записью. Известны три основных типа организации данных и связей между ними: иерархический (в виде дерева), сетевой и реляционный.Иерархическая БДВ иерархической БД существует Типы данныхТипы данных В JScript поддерживаются шесть типов данных, главными из которых являются числа, строки, объекты и логические данные. Оставшиеся два типа — это null (пустой тип) и undefined (неопределенный Типы данныхТипы данных Приведенные в этой главе таблицы взяты непосредственно из оперативной справочной системы и представляют единую модель данных Windows (Windows Uniform Data Model). Определения типов можно найти в заголовочном файле BASETSD.H, входящем в состав интегрированной среды разработки 14.5.1 Типы данных14.5.1 Типы данных Файл может содержать текст ASCII, EBCDIC или двоичный образ данных (существует еще тип, называемый локальным или логическим байтом и применяемый для компьютеров с размером байта в 11 бит). Текстовый файл может содержать обычный текст или текст, форматированный 20.10.3 Типы данных MIB20.10.3 Типы данных MIB Причиной широкого распространения SNMP стало то, что проектировщики придерживались правила «Будь проще!»? Все данные MIB состоят из простых скалярных переменных, хотя отдельные части MIB могут быть логически организованы в таблицы.? Только небольшое число Типы данныхТипы данных Многие языки программирования при объявлении переменной требуют указывать, какой тип данных будет ей присваиваться. Например, в языке Java кодint i = 15;объявит переменную целого типа int с именем i и присвоит ей значение 15. В этом случае тип данных ставится в 5.2.4. Типы данных5.2.4. Типы данных Мы можем вводить в ячейки следующие данные: текст, числа, даты, также приложение Numbers предоставляет возможность добавлять флажки, ползунки и другие элементы управления. Аналогично MS Excel для выравнивания чисел, дат и текстовых данных в Numbers существуют ТИПЫ ДАННЫХ В ЯЗЫКЕ СИТИПЫ ДАННЫХ В ЯЗЫКЕ СИ Давайте теперь рассмотрим некоторые специфические особенности основных типов данных, используемых в языке Си. Для каждого типа мы покажем, как описать переменную, как представить константу и как лучше всего использовать данные этого типа. В Типы данныхТипы данных Несмотря на то, что типы данных подробно описаны в документации (см. [1, гл. 4]), необходимо рассмотреть ряд понятий, которые будут часто использоваться в последующих главах книги. Помимо изложения сведений общего характера будут рассмотрены также примеры Borland delphi 4 0 для начинающих типы данных указательные типыОт Delphi 4 к Delphi 5 Во многих задачах используются переменные, которые создаются и уничтожаются во время выполнения программы. С этой целью в Object Pascal организована поддержка указателей, для которых введен специальный тип Pointer. Указатель является величиной, указывающей на некоторый адрес в памяти, где хранятся какие-то данные. Если вы имеете дело с массивом или другим структурным типом, то указатель содержит адрес первого элемента в структуре. Переменные, которые содержат адреса других переменных, принято называть указателями . Указатели объявляются точно так же, как обычные переменные: P: Pointer; <объявление переменной указателя > K: Integer; <объявление переменной целого типа > Переменная P занимает четыре байта и может содержать адрес любого участка памяти, указывая на байты памяти со значениями любых типов данных. Для инициализации переменной, присвоим ей адрес переменной K. P := Addr(К); <инициализация переменной с помощью функции Addr> Инициализацию можно провести вторым способом: P^ :=@K; <инициализация с помощью оператора @> Обычно используется более краткий и удобный второй способ. Таким образом, если некоторая переменная Р содержит адрес другой переменной К, то говорят, что Р указывает на К (рисунок 1) . Вы можете изменить значение переменной К, не прибегая к идентификатору K. Можно изменить значение содержимого указателя, например, вместо предварительно определенного значения в Р адреса К, присвоим значение 10. Если вы запишете: то это будет ошибкой. Из-за сильной типизации языка Object Pascal перед присваиванием, необходимо преобразовать выражение P^ к целому типу Integer. Объявим указатель P следующим образом: Такая запись говорит о том, что переменная P по-прежнему является указателем, но теперь ей можно присваивать адреса только целых переменных. В данном случае указатель P называют типизированным , в отличие от переменных типа Pointer, которые называют не типизированными указателями. При использовании типизированных указателей лучше предварительно вводить соответствующий указательный тип, а переменные указатели просто объявлять с этим типом. Модифицируем предыдущий пример (рисунок 2): Значение PInteger — указательный тип данных. Чтобы отличить указательные типы от других, лучше назначать им идентификаторы, начинающиеся с буквы P. Объявление указательного типа является единственным способом введения указателей на структурированные переменные, такие как массивы, записи, множества и другие. Рассмотрим объявление типа для указателя на некоторую запись: Переменная Р типа PScreen является указателем и может содержать адрес любой переменной типа TScreen. Чаще всего указатели используются для работы с объектами в динамически распределяемой области памяти, особенно при работе с записями. После объявления в секции var указатель содержит неопределенное значение. Переменные-указатели, как и обычные переменные, перед использованием нужно инициализировать. Использование неинициализированных переменных приводит к неправильным результатам, а использование неинициализированных указателей приводит к ошибке Acces violation (доступ к неверному адресу памяти) и принудительному завершению приложения. Один из способов инициализации указателя состоит в присваивании ему адреса некоторой переменной соответствующего типа, этот способ рассмотрен выше. Второй способ состоит в динамическом выделении участка памяти под переменную соответствующего типа и присваивании указателю его адреса. Основное назначение указателей — работа с динамическими переменными. Размещение динамических переменных производится в специальной области памяти, которая называется Heap (куча). Размер кучи равен размеру свободной памяти компьютера (рис 2.) Для размещения динамической переменной (рисунок 3) вызывается стандартная процедура: New(var P: Pointer); Эта процедура выделяет требуемый по размеру участок памяти и заносит его адрес в переменную-указатель Р. List, P: PListEntry; P^.Text := ‘Hello world’; Новая процедура создает новую динамическую переменную и устанавливает переменную указателя, чтобы указать на это. P является переменной любого типа указателя. Размер размещенного блока памяти соответствует размеру типа, на который P указывает. Вновь созданная переменная может ссылаться на P^. Если там недостаточно памяти пригодной для размещения динамической переменной, то генерируется исключение EOutOfMemory . Когда приложение закончено, вы должны освободить память, распределенную для переменной, используя стандартную процедуру Dispose . P^ := ‘Мой любимый язык Delphi. ‘; После выполнения процедуры Dispose указатель P перестает быть связан с конкретным адресом памяти. В нем будет случайное значение, как и до обращения к процедуре New. Не стоит делать попытки присвоить значение переменной Р, в противном случае это может привести к нарушению нормальной работы программы. Поэтому необходимо четко придерживаться последовательности работы с динамическими переменными: создание динамической переменной; выполнение с переменной необходимых действий; разрушение динамической переменной. Рассмотрим пример, показывающий работу указателей . 2 X, Y: Integer; // X и Y переменные целого типа 3 P: ^Integer; // P указатель на данные целого типа 5 X := 17; // присвоение значения 17 для X 6 P := @X; // определение адреса X в P 7 Y := P^; /разыменование Р; помещение результата в Y Строка 2 объявляет X и Y как переменные целого типа. Строка 3 объявляет P как указатель данных целого типа; это означает, что P может указать на позицию X или Y. Строка 5 определяет величину X, и строка 6 назначает адрес X (обозначается @X) в P. Наконец, строка 7 извлекает величину в позиции, указанной на P (обозначается ^P), и присваивает это значение Y. После того, как выполнится программный код, X и Y будут иметь одну и ту же величину 17. Если вы добавите на форму два компонента Edit1, Edit2 и напишете следующий код то вы можете убедиться, что значения X и Y одинаковы и равны 17. @ оператор, который используется здесь, чтобы взять адрес переменной, также используется в функциях и процедурах. Символ ^ имеет две цели, которые иллюстрируются в рассмотренном примере. Когда символ устанавливается перед типом ^typeName, он обозначает тип, который представляет указатели в переменных типа typeName . Когда символ устанавливается после указателя pointer^, он разыменовывает этот указатель и возвращает величину, сохраненную по адресу памяти, содержащемуся в указателе. Наш пример может показаться подобным тому, что мы окольным путем копировали целую величину одной переменной, присвоили это значение другой величине, в то время когда это можно произвести обычным оператором присваивания. Но указатели полезны по различным причинам. Вначале, поняв назначение указателя, вы можете лучше понимать язык программирования Object Pascal . Любой тип данных, который требует большие объемы, динамически распределяемой памяти, использует указатели. Кроме того, некоторые программы требуют обязательного использования указателей. Наконец, указатели являются иногда единственным путем, чтобы обойти в Object Pascal строгую типизацию данных. Ссылаясь на переменную с универсальным указателем, и затем разыменовывая его, вы можете обратиться с данными, загруженными в любую переменную, как если бы он принадлежал любому типу. Например, следующий код показывает, как данные, загруженные в реальную переменную, переименовываются в переменную целого типа. Конечно, реальные и целые загружаются в другие форматы. Этот пример просто копирует сырые двоичные данные из R на I, не преобразовывая их. Дополнительно к определению результата с помощью символа @ вы можете использовать стандартные программы, чтобы определить величину указателя. В Object Pascal имеется ряд предопределенных типов указателей. Это, прежде всего, типы указателей на строки: PAnsiChar и PWideChar , представляющие собой соответственно указатели на значения AnsiChar и WideCha r. Имеется также родовой тип PChar , определяющий указатель на Char (т.е. пока указывающий на AnsiChar ). Эти указатели используются при работе со строками с нулевым символом в конце. PAnsiString, Pstring — типы переменной, на которую указывает указатель AnsiString. PByteArray тип переменной, на которую указывает указатель ByteArray (объявлен в модуле SysUtils ). Используется для доступа к динамически размещаемым массивам. PCurrency тип переменной, на которую указывает указатель Currency. PExtended тип переменной, на которую указывает указатель Extended. POleVariant тип переменной, на которую указывает указатель OleVariant. PShortString тип переменной, на которую указывает указатель ShortString. PTextBuf тип переменной, на которую указывает указатель TextBuf (объявлен в модуле SysUtils ). Внутренний тип буфера в записи файлов TTextRec . PVarRec тип переменной, на которую указывает указатель TVarRec (объявлен в модуле System). PVariant тип переменной, на которую указывает указатель Variant. PWideString тип переменной, на которую указывает указатель WideString. PWordArray т ип переменной, на которую указывает указатель TWordArray (объявлен в модуле SysUtils ). Используется для доступа к динамически размещаемым массивам 2-байтных величин. Объявление своего типизированного указателя на любой тип имеет вид: Имеется предопределенная константа nil , которая обычно присваивается указателям, в данный момент ни на что не указывающим. Чтобы получить доступ к данным, на которые указывает типизированный указатель, надо применить операцию его разыменования. Она записывается с помощью символа ^ , помещаемого после указателя. Операция разыменования не применима к указателям типа pointer. Чтобы провести разыменование указателя pointer, надо сначала привести его к другому типу указателя. Указатели PChar и PWideChar. При работе со строками с нулевым символом в конце часто используют специальные типы указателей: PChar и PWideChar, которые являются указателями соответственно на массивы с элементами типов Char и WideChar с нулевым символом в конце. Переменные этих типов часто требуется передавать в различные функции и процедуры в качестве параметров. К тому же, типы Char и WideChar существенно упрощают коды. Дело в том, что эти типы совместимы со строковыми константами. Например, объявление и использование переменной типа PChar может иметь вид Это эквивалентно операторам const SHello: array[0…7] of Char = ‘Привет!’#0; согласитесь, первая запись гораздо короче. Совместимость указателей типов PChar и PWideChar со строковыми константами позволяет в вызовах функций и процедур с параметрами соответствующих типов использовать просто строки символов. Например, если некоторая процедура F требует параметр типа PChar, то обратиться к ней можно так: Указатели типов PChar и PWideChar могут индексироваться точно так же, как строки и массивы символов. Например, P[0] — это первый символ строки, на которую указывает P. В выражениях, операторах присваивания и при передаче параметров в функции и процедуры можно смешивать длинные строки (AnsiString) и строки с нулевым символом в конце типа PChar. Но иногда требуется явное приведение типа PChar к типу длинной строки. Например, операция склеивания (конкатенации) строк требует, чтобы хотя бы один ее операнд был типа строки. Если же требуется склеить два объекта типа PChar, то это надо сделать с помощью приведения типа: S := string(P1) + string(P2); Когда вы объявляете константу указатель, вы должны проинициализировать эту величину. Есть три пути, чтобы сделать это: с @ оператором, с нулем и (если константа будет типом PChar) с литералом строки. Например, имеется глобальная переменная целого типа, вы можете объявить константу следующим образом: const PI: ^Integer = @I; Компилятор может решить эту проблему, поскольку глобальные переменные являются частью кодового сегмента. Так, функции и глобальные константы объявляются следующим образом: const PF: Pointer = @MyFunction; Поскольку литералы строки определены как глобальные константы, вы можете проинициализировать PChar константу с литералом строки: const WarningStr: PChar = ‘Warning!’; Процедуры GetMem и FreeMem. GetMem(var P: Pointer [;Size: Integer]) — создает в динамической памяти новую динамическую переменную с заданным размером Size и присваивает ее адрес указателю P. Переменная указателя P может указывать на данные любого типа. FreeMem(var P: Pointer [; Size: Integer]) — освобождает динамическую переменную. Если в программе используется этот способ распределения памяти, то вызовы GetMem и FreeMem должны соответствовать друг другу. GetMem(P4, SizeOf(ShortString)); <выделить блок памяти для P4> FreeMem(P4); <освободить блок памяти > С помощью процедуры GetMem одной переменной-указателю можно выделить разное количество памяти в зависимости от потребностей, в этом состоит ее основное отличие от процедуры New. В данном случае для указателя P4 выделяется меньше памяти, чем может уместиться в переменной типа ShortString, и программист сам должен предотвратить выход строки за пределы выделенного участка. В некоторых случаях возникает необходимость перевыделения динамической памяти, например, для того, чтобы разместить в динамической области больше данных. Для этого предназначена следующая процедура: ReallocMem(var P: Pointer; Size: Integer) — освобождает блок памяти по значению указателя Р и выделяет для указателя новый блок памяти заданного размера Size. Указатель P может иметь значение nil, а параметр Size — значение 0, что влияет на работу процедуры: если P = nil и Size = 0, процедура ничего не делает; если P = nil и Size <> 0, процедура выделяет новый блок памяти заданного размера, что соответствует вызову процедуры GetMem; если P <> nil и Size = 0, процедура освобождает блок памяти, адресуемый указателем P, и устанавливает указатель в значение nil; это соответствует вызову процедуры FreeMem, с той лишь разницей, что FreeMem не очищает указатель; если P <> nil и Size <> 0, процедура переопределяет память для указателя P; размер нового блока определяется значением Size. Данные из прежнего блока копируются в новый блок; если новый блок больше прежнего, то приращенный участок остается неинициализированным и содержит случайные данные. Создадим приложение, в котором можно осуществлять поиск изображений и просматривать их. Для Delphi 4 необходимо проделать следующие действия.
procedure TForm1.BitBtn1Click(Sender: TObject); if OpenDialog1.Execute then Image1.Top:= Form1.ClientRect.Top + (Form1.ClientHeight — Image1.Height) Image1.Left:= Form1.ClientRect.Left + (Form1.ClientWidth — Image1.Width) Если у вас установлена версия Delphi 5, то на странице палитры компонентов Dialogs имеется компонент OpenPictureDialog, который вызывает окно открытия и предварительного просмотра изображений. Если вы посмотрите свойство Filter этого компонента (рисунок 7), то вы увидите, что за вас поработали и определили, какие файлы вы можете просматривать. Добавьте на форму компонент Image и Button и напишите следующий программный код: procedure TForm1.Button1Click(Sender: TObject); if OpenPictureDialog1.Execute then Осуществляя поиск необходимого изображения, в Delphi 5 диалоговое окно открытия файлов содержит окно предварительного просмотра изображений. Для компонента Image определено событие OnProgress, с помощью данного обработчика можно получить дополнительную информацию во время выполнения длительной по времени операции загрузки большого по объему изображения. procedure TForm1.Image1Progress(Sender: TObject; Stage: TProgressStage; PercentDone: Byte; RedrawNow: Boolean; const R: TRect; const Msg: String); Параметр Stage содержит состояние процесса загрузки (psStarting — начало, psRunning — идет загрузка, psEnding — процесс завершен ). Параметр PercentDone приблизительно указывает процент выполненной работы. С помощью параметра RedrawNow Windows сообщает, нужно ли сейчас выполнить прорисовку части изображения. Этот параметр имеет смысл, только если свойство IncrementalDisplay компонента содержит True. Параметр R – прямоугольник, нуждающийся в прорисовке. Параметр Msg содержит одно или более слов, уточняющих состояние процесса. Обычно в обработчике события по сигналу psStarting создается индикатор процесса типа TProgressBar, по сигналам psRunning изменяется позиция индикатора, а в момент psEnding индикатор уничтожается. Событие OnProgress создается только при загрузке некоторых типов изображений, например, подготовленных в формате JPEG (Joint Photographic Except Group — объединенная группа фотографических экспертов). Пример использования события OnProgress вы можете найти в папке Borland \ Delphi \ Help \ Examples \ JEPG. На рисунке 8 представлен результат демонстрационной работы программы Ipegproi.
ООО «Попурри» 1997 г. Иллюстрированный самоучитель по Delphi 7 для начинающихЯзык программирования Delphi. Типы данных.В среде программирования Delphi для записи программ используется язык программирования Delphi. Программа на Delphi представляет собой последовательность инструкций, которые довольно часто называют операторами. Одна инструкция от другой отделяется точкой с запятой. Каждая инструкция состоит из идентификаторов. Идентификатор может обозначать:
Программа может оперировать данными различных типов: целыми и дробными числами, символами, строками символов, логическими величинами. Целый типЯзык Delphi поддерживает семь целых типов данных: shortint, smailint, Longint, Int64, Byte, word и Longword, описание которых приведено в табл. 1.1. Таблица 1.1. Целые типы.
Object Pascal поддерживает и наиболее универсальный целый тип – Integer, который Эквивалентен Longint. Типы данных Delphi и работа с нимиК встроенным типам данных в языке Delphi относятся типы целые, действительные, символы, строки, указатели, булевы. Порядковые типы. Порядковыми (ordinal) типами называются те, в которых значения упорядочены, и для каждого из них можно указать предшествующее и последующее значения. Структурные типы. К структурным типам относятся множества, массивы, записи, файлы, классы, интерфейсы. Целые типы данных. В переменных целых типов информация представляется в виде целых чисел, т.е. чисел не имеющих дробной части. Таблица 1 Операции над порядковыми типами Минимальное значение порядкового типа Т Максимальное значение порядкового типа Т Порядковый номер значения выражения порядкового типа. Для целого выражения — просто его значение. Для остальных порядковых типов Ord возвращает физическое представление результата выражения, трактуемое как целое число. Возвращаемое значение всегда принадлежит одному из целых типов Предыдущее по порядку значение. Для целых выражений эквивалентно Х-1 Следующее по порядку значение. Для целых выражений эквивалентно Х+1 Уменьшает значение переменной на 1. Эквивалентно V := Pred(V) Увеличивает значение переменной на 1. Эквивалентно V := Succ(V) 8 битов, беззнаковый 16 битов, беззнаковый 32 бита, беззнаковый Также существует такой тип, как Integer, который эквивалентен типу LongInt. Его диапазон от -2147483648 до 21474836478. Занимает 4 байта в пямяти. Основными являются Integer и Cardinal, так что в большинстве случаев желательно использовать эти типы. Над целыми данными выполняются все операции, определенные для порядковых типов. Операции над целыми типами: Возвращает абсолютное целое значение Х Возвращает целую часть частного деления Х на Y Возвращает остаток частного деления Х на Y Возвращает булево True (истина), если Х — нечетное целое, и False (ложь) — в противном случае Действительные типы данных. В переменных действительных типов содержатся числа, состоящие из целой и дробной частей. Количество значащих цифр Основным, обеспечивающим максимальную производительность, является тип Real, который в настоящий момент эквивалентен типу Double. Таблица 5 Функции действительных типов Абсолютная величина х Косинус х (х выражается в радианах, а не в градусах) Экспоненциальная функция от х Дробная часть х Целая часть х. Несмотря на название, возвращает действительное значение (с плавающей запятой), т.е. просто устанавливает нуль в дробной части Натуральный логарифм от х Ближайшее к х целое значение. Возвращает значение целого типа. Условие «ближайшее к х» не работает, если верхнее и нижнее значения оказываются равноудаленными (например, если дробная часть точно равна 0,5). В этих случаях Delphi перекладывает решение на операционную систему. Обычно процессоры Intel решают эту задачу в соответствии с рекомендацией IEEE округлять в сторону ближайшего четного целого числа. Иногда такой подход называют «банкирским округлением» Квадрат х, т.е. X*X Квадратный корень от х Целая часть х. В отличие от Int, возвращающей Символьные типы данных. Символьные типы предназначены для хранения одного символа. Однобайтовые символы, упорядоченные в соответствии с расширенным набором символов ANSI Символы объемом в слово, упорядоченные в соответствии с международным набором символов UNICODE. Первые 256 символов совпадают с символами ANSI Булевы типы данных. Переменные булевых типов данных представляют логические значения, например, true (истина) и false (ложь). Таблица 7 Размеры переменных булевых типов 2 байт (объем Word) 4 байт (объем Longint) Массив — это структура данных, представляющая собой набор переменных одинакового типа, имеющих общее имя. Массивы удобно использовать для хранения однородной по своей природе информации, например, таблиц и списков. Массив, как и любая переменная программы, перед использованием должен быть объявлен в разделе объявления переменных. В общем виде инструкция объявления массива выгладит следующим образом: Имя: [нижний_индекс..верхний_индекс] of тип где: имя — имя массива; array — зарезервированное слово языка Delphi, обозначающее, что объявляемое имя является именем массива; нижний_индекс и верхний_индекс — целые константы, определяющие диапазон изменения индекса элементов массива и, неявно, количество элементов (размер) массива; Введение. Назначение Delphi и его особенностиСБОРНИК МетодическиХ указаниЙ ПО выполнению лабораторных работ ИНФОРМАТИКА Уровень профессионального образования: высшее образование – бакалавриат Направление подготовки:15.03.01 «Машиностроение» Профиль подготовки: «Оборудование и технология сварочного производства» Квалификация выпускника: Академический бакалавр Методические указания по выполнению лабораторных работ составлены доцентом А. В. Масленниковым и обсуждены на заседании кафедры СЛиТКМПолитехнического института Протокол № 1 от « 29 » августа 2014 г. Зав. кафедрой ______________________А.А. Протопопов Методические указания по выполнению лабораторных работ пересмотрены и утверждены на заседании кафедры СЛиТКМ Политехнического института протокол №___ от « » августа 20____ г. Зав. кафедрой ______________________А.А. Протопопов Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Тульский государственный университет» Кафедра «Сварка, литье и технология конструкционных материалов» МетодическиЕ указаниЯ ПО выполнению лабораторнОЙ работЫ №1 ИНФОРМАТИКА Основы работы в среде Borland Delphi Уровень профессионального образования: высшее образование – бакалавриат Направление подготовки:150700 «Машиностроение» Профиль подготовки: «Машины и технология литейного производства» Квалификация выпускника: 62, бакалавр 1. ЦЕЛЬ И ЗАДАЧИ РАБОТЫ Изучить назначение и базовые возможности приложения Borland Delphi. 2. ТЕОРЕТИЧЕСКИЕ ПОЛОЖЕНИЯ Введение. Назначение Delphi и его особенности В последнее время резко возрос интерес к программированию. Это связано с развитием и внедрением в повседневную жизнь информационно-коммуникационных технологий. Если человек имеет дело с компьютером, то рано или поздно у него возникает желание, а иногда и необходимость, программировать. Среди пользователей персональных компьютеров в настоящее время наиболее популярно семейство операционных систем Windows и, естественно, что тот, кто собирается программировать, стремится писать программы, которые будут работать в этих системах. Несколько лет назад рядовому программисту оставалось только мечтать о создании собственных программ, работающих в среде Windows, т. к. единственным средством разработки был Borland C++ for Windows, явно ориентированный на профессионалов, обладающих серьезными знаниями и опытом. Бурное развитие вычислительной техники, потребность в эффективных средствах разработки программного обеспечения привели к появлению систем программирования, ориентированных на так называемую «быструю разработку», среди которых можно выделить Borland Delphi и Microsoft Visual Basic. В основе систем быстрой разработки (RAD-систем, Rapid Application Development — среда быстрой разработки приложений) лежит технология визуального проектирования и событийного программирования, суть которой заключается в том, что среда разработки берет на себя большую часть рутинной работы, оставляя программисту работу по конструированию диалоговых окон и функций обработки событий. Производительность программиста при использовании RAD-систем -фантастическая! Delphi (произносится «Делфàй») – среда программирования для Windows, разработанная компанией Borland International. Название происходит от древнегреческого города Дельфы – того самого, где жил дельфийский оракул. Поэтому на значке системы Delphi изображена греческая колонна. Delphi соединяет в себе компилятор языка программирования Object Pascal, интегрированную среду разработки (IDE), библиотеку визуальных компонентов VCL, средства для работы с базами данных (BDE) и многое другое. При помощи Delphi можно решить практически любую программистскую задачу, включая работу с базами данных, написание приложений для Интернета, экранных заставок, системных утилит и пр. Delphi — это среда быстрой разработки, в которой в качестве языка программирования используется язык Delphi. Язык Delphi — строго типизированный объектно-ориентированный язык, в основе которого лежит хорошо знакомый программистам Object Pascal. Delphi – близкий родственник обычного языка Pascal, что обеспечило ему широкую популярность. В настоящее время Delphi стал основным инструментом разработки программного обеспечения во всем мире. Существует и версия Builder, в которой можно совместно использовать процедуры, написанные на языках C и Pascal. Система Delphi постоянно развивается. По состоянию на 2003 г. наиболее стабильной и отработанной являлась версия 6.0. Версия 7.0 заявлена разработчиком как переходная к 8.0 и не рекомендуется для широкого использования. В то же время почти все рассматриваемые далее примеры будут работать практически в любой версии Delphi, начиная с 3.0. Содержательные различия между версиями 3.0 … 7.0 незначительны, и для самостоятельной работы можно использовать литературу, описывающую любую из этих версий. Borland Delphi 7 Studio позволяет создавать самые различные программы: от простейших однооконных приложений до программ управления распределенными базами. В состав пакета включены разнообразные утилиты, обеспечивающие работу с базами данных, XML-документами, создание справочной системы, решение других задач. Отличительной особенностью седьмой версии является поддержка технологии .NET. Borland Delphi 7 Studio может работать в среде операционных систем от Windows 98 до Windows XP и выше. Особых требований, по современным меркам, к ресурсам компьютера пакет не предъявляет: процессор должен быть типа Pentium или Celeron с тактовой частотой не ниже 166 МГц (рекомендуется Pentium II 400 МГц), оперативной памяти — 128 Мбайт (рекомендуется 256 Мбайт), достаточное количество свободного дискового пространства (для полной установки версии Enterprise необходимо приблизительно 475 Мбайт). Официально бесплатной версией Delphi является Lazarus, примерно соответствующий по своим возможностям Delphi 5.0. Русской версии Delphi не существует. Все так называемые «русские версии» – продукция криворуких пиратов, работающая нестабильно. Всегда устанавливайте только исходную английскую версию. Не нашли то, что искали? Воспользуйтесь поиском: |