печать на ручках запорожье | shaden отзывы, ул. | Смотри здесь подключить цифровое телевидение. | На http://www.silver-gym.ru фитнес в одинцово. | Отсыпка участка грунтом| watch The Flash Season 1 Episode 17: Tricksters free

Примеры создания приложений баз данных


Примеры создания приложений баз данных
Примеры создания приложений баз данныхВ Kylix нет стандартных компонентов для создания многих локальных баз данных. Связано это с тем, что такие форматы данных являются отмирающими, тем более что...
Окно New Items
Рисунок 18.1. Окно New Items...
Пиктограмма Data Module окна New Items
Рисунок 18.2. Пиктограмма Data Module окна New Items...
Компонент Clients в окне модуля данных
Рисунок 18.3. Компонент Clients в окне модуля данныхСоздадим поля первым способом. Для этого дважды щелкнем на свойстве FieldDefs компоненту Clients. При этом откроется диалоговое окно добавления...
Диалоговое окно добавления новых полей Добавим определения полей представленные в табл 18 1
Рисунок 18.4. Диалоговое окно добавления новых полей Добавим определения полей, представленные в табл. 18.1....
Таблица 18 1 Определения полей
Таблица 18.1. Определения полейИмя поляОписаниеТип данныхРазмерIDсчетчикftAutoInc0Nameимя клиентаFtString50...
Установка свойств поля ID в окне Object Inspector
Рисунок 18.5. Установка свойств поля ID в окне Object Inspector...
Установка свойств поля Name в окне Object Inspector
Рисунок 18.6. Установка свойств поля Name в окне Object Inspector...
Поля ID и Name
Рисунок 18.7. Поля ID и NameПравой кнопкой мыши щелкнем на компоненте Clients и выберем в выпадающем меню пункт CreateDataSet, а затем — пункт Save To MyBase Xml UTF-8 table. В появившемся диалого...
Диалоговое окно сохранения файла таблицы
Рисунок 18.8. Диалоговое окно сохранения файла таблицыТеперь определим поля явно на основе FieldDefs. Дважды щелкнем на компоненте Clients, в появившемся диалоговом окне щелчком правой кнопкой мыш...
Поля компонента Clients
Рисунок 18.9. Поля компонента ClientsРазместим в модуле данных компонент DataSource, установим его свойство Name в ds_Clients и свяжем его с компонентом Clients (свойство DataSet компонента ds_Cli...
Модуль данных
Рисунок 18.10. Модуль данных...
Листинг 18 1 Содержание типичного файла базы данных
Листинг 18.1. Содержание типичного файла базы данных<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><DATAPACKET Version="2.0"><METADA...
Таблица 18 2 Поля определяемые в свойстве ChlidDefs
Таблица 18.2. Поля, определяемые в свойстве ChlidDefsИмя поляОписаниеТип данныхРазмерIDсчетчикFtAutoInс0OrderNameописание заказаFtString20Priceцена заказаFtCurrency0Осталось только на основе описа...
Листинг 18 2 Содержимое файла базы данных
Листинг 18.2. Содержимое файла базы данных<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>- <DATAPACKET Version="2.0">- <METADATA>...
Введение в создание компонентов
Введение в создание компонентов Данная глава посвящена творческому процессу создания собственных компонентов. Мы рассмотрим различные способы создания новых компонентов, а именно — как создават...
Выбор предка компонента
Выбор предка компонента Итак, вы уже знаете основные классы, имеющиеся в CLX Kylix. Ранее мы рассмотрели базовые классы, которые могут являться предками вашего компонента (см. главу 7). Эти кла...
Таблица 19 1 Базовые классы CLX
Таблица 19.1. Базовые классы CLX Класс Возможности класса TObject Классы, предком которых является данный клас...
Таблица 19 1 (окончание)
Таблица 19.1 (окончание) Класс Возможности класса TCustomClassName Библиотека визуальных компонентов содержит...
Создание заготовки компонента
Создание заготовки компонента Итак, вы выбрали класс-предок для вашего компонента. Теперь можно приступать к созданию модуля вашего компонента. Создание модуля (заготовки) для нового компонента...
Рисунок 19 1 Окно эксперта компонентов
Рисунок 19.1. Окно эксперта компонентов...
Рисунок 19 2 Заполненное окно эксперта компонентов
Рисунок 19.2. Заполненное окно эксперта компонентов После заполнения полей данного окна нажимаем кнопку ОК, и Kylix автоматически создаст заготовку модуля вашего компонента. Модуль заготовки...
Листинг 19 1 Модуль заготовки нового класса
Листинг 19.1.Модуль заготовки нового класса unit QMyButton; interfaceuses SysUtils, Types, Classes, QGraphics, QControls, QForms, QDialogs, QStdCtrls;type TMyButton = class(TButton) pri...
Статические методы
Статические методы Статические методы аналогичны обычным функциям или процедурам Kylix. Адрес такого метода известен среде Kylix на стадии компиляции, поэтому Kylix производит статический вызов...
Виртуальные методы
Виртуальные методы Виртуальные методы, в отличие от статических, поддерживают перегрузку, поэтому вызов таких методов для среды Kylix намного сложнее (заранее неизвестен адрес конкретного вызыв...
Динамические методы
Динамические методы Динамические методы похожи на виртуальные, они также могут быть перегружены. Основная разница между виртуальными и динамическими методами — в способе их вызова. Если для вир...
Замещенные методы
Замещенные методы Замещение методов предполагает передачу и изменение методов от компонента (класса) предка компоненту (классу) наследнику. Как мы уже отметили, только виртуальные или динамичес...
Абстрактные методы
Абстрактные методы Абстрактными методами называются такие методы, которые описаны внутри определения класса или компонента, но не содержат никаких действий и никогда не вызываются. Абстрактными...
Построение компонентов
Построение компонентовТеперь дополним модуль — заготовку нового компонента всем необходимым: свойствами, событиями и методами. Создадим работоспособный компонент и зарегистрируем его в среде Kylix...
Листинг 19 2 Пример создания свойств нового компонента
Листинг 19.2. Пример создания свойств нового компонента MyButton = class(TButton) private { Private declarations } FMyCount: Integer; FStirngOfText: String; protected { Protected declarations }...
Листинг 19 3 Создание свойств перечиляемого типа
Листинг 19.3.Создание свойств перечиляемого типаunit QMyButton; interfaceuses SysUtils, Types, Classes, QGraphics, QControls, QForms, QDialogs, QStdCtrls;type TMyEnumType = (eFirst, eSecond, eThi...
Перечисляемое свойство MyEnumProp в новом компоненте TMyButton
Рисунок 19.3. Перечисляемое свойство MyEnumProp в новом компоненте TMyButtonСоздание свойств-множеств в компонентеТип множества часто использовался в Object Pascal, и некоторые свойства компоненто...
Листинг 19 4 Создание свойствамножества unit QMyButton;
Листинг 19.4. Создание свойства-множества unit QMyButton;interfaceuses SysUtils, Types, Classes, QGraphics, QControls, QForms, QDialogs, QStdCtrls;type TMyEnumType = (eFirst, eSecond, eThird); T...
Свойствомножество MyOptions в новом компоненте TMyButton
Рисунок 19.4. Свойство-множество MyOptions в новом компоненте TMyButtonСоздание свойства-объекта в компонентеКаждый компонент может содержать в себе свойство-объект. В качестве свойства-объекта мо...
Листинг 19 5 Создание потомка TPersistenttype
Листинг 19.5. Создание потомка TPersistenttype TMyObject = class (TPersistent) private { Private declarations } FProperty1:Real; FProperty2:Char; protected { Protected declarations } public { P...
Листинг 19 6 Добавление свойстваобъекта в компонент TMyButtontype
Листинг 19.6. Добавление свойства-объекта в компонент TMyButtontype TMyButton = class(TButton) private { Private declarations } FMyObject:TMyObject; procedure SetMyObject (Value: TMyObject); pro...
Листинг 19 7 Полный листинг для нового компонента
Листинг 19.7. Полный листинг для нового компонентаunit QMyButton;interfaceuses SysUtils, Types, Classes, QGraphics, QControls, QForms, QDialogs, QStdCtrls;type TMyObject = class (TPersistent) pr...
Свойствообъект MyObject в новом компоненте TMyButton
Рисунок 19.5. Свойство-объект MyObject в новом компоненте TMyButtonОбратите внимание на реализацию метода TMyObject. Assign. Здесь сначала выполняется проверка на то, правильный ли передается экзе...
Листинг 19 8 Пример компонента TWeek
Листинг 19.8.Пример компонента TWeekunit Week; interfaceuses SysUtils, Types, Classes, QGraphics, QControls, QForms, QDialogs;type TWeek = class(TComponent) private { Private declarations } funct...
Результат работы компонента TWeek
Рисунок 19.6. Результат работы компонента TWeekСоздание собственных редакторов свойствПеред тем как создавать собственный редактор свойств компонента, рассмотрим сначала имеющиеся в Kylix редактор...
Листинг 19 9 Определение базового
Листинг 19.9. Определение базового класса TPropertyEditorTPropertyEditor = class(TBasePropertyEditor, IProperty) private FDesigner: IDesigner; FPropList: PInstPropList; FPropCount: Integer; functi...
Листинг 19 10 показывает как создать
Листинг 19.10 показывает, как создать новый редактор свойств THintProperty. В качестве класса-предка для данного редактора свойств выберем редактор TStringproperty....
Листинг 19 10 Создание нового редактора свойств
Листинг 19.10.Создание нового редактора свойствTHintProperty = class(TStringProperty) public function GetAttributes: TPropertyAttributes; override; function GetValue : String; override; procedure...
Листинг 19 11 Процедура регистрации нового редактора свойствprocedure Register; begin
Листинг 19.11. Процедура регистрации нового редактора свойствprocedure Register; begin RegisterPropertyEditor (TypeInfо(String), TControl, 'Hint', THintProperty); end;Данная процедура позволяет пр...
Создание событий компонента
Создание событий компонента Стандартные события компонентов CLX Kylix мы с вами уже рассматривали в предыдущих главах. В настоящий момент нам предстоит дать четкое определение событию, а также...
Листинг 19 12 Метод диспетчеризации события TControl = class (TComponent) private
Листинг 19.12. Метод диспетчеризации событияTControl = class (TComponent) private FOnClick: TNotifyEvent; protected procedure Click; dynamic; property OnClick: TNotifyEvent read FOnClick write...
Листинг 19 13 Пример обработки события нажатия кнопки мыши
Листинг 19.13.Пример обработки события нажатия кнопки мыши procedure TForm1. FormMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Canvas.TextOut(X,...
Наглядно демонстрирует результат работы вышеприведенной программы
Рисунок 19.7 наглядно демонстрирует результат работы вышеприведенной программы....
Рисунок 19 7 Результат обработки события OnMouseDown
Рисунок 19.7. Результат обработки события OnMouseDown Пример создания нового события компонента Попробуем теперь создать собственное событие. Для этого нужно сначала убедиться, что такого с...
Листинг 19 14 Пример создания нового события unit halfmin; interface
Листинг 19.14.Пример создания нового событияunit halfmin; interfaceuses SysUtils, Types, Classes, QGraphics, QControls, QForms, QDialogs;type TTimeEvent - procedure (Sender: TObject; TheTime:...
Листинг 19 15 Обработчик нового события procedure TForm1 HalfMinutelHalfMinute(Sender TObject;
Листинг 19.15.Обработчик нового события procedure TForm1.HalfMinutelHalfMinute(Sender: TObject; TheTime: TDateTime); begin Edit1.Text:=('Время '+TimeToStr(TheTime)); Edit1.Refresh; end; В ре...
Создание методов компонента
Создание методов компонента Добавление методов в новый компонент — операция несложная. Однако нужно обратить внимание на некоторые особенности, которые в дальнейшем облегчат взаимодействие поль...
Таблица 19 2 Размещение методов компонента в различных секциях
Таблица 19.2. Размещение методов компонента в различных секциях Секция Размещаемые методы Private В данной секции...
Регистрация компонента в среде Kylix
Регистрация компонента в среде Kylix Регистрация компонента необходима для размещения компонента в палитре компонентов. При использовании эксперта компонентов для создания нового компонента...
Рисунок 19 8 Результат регистрации компонента
Рисунок 19.8. Результат регистрации компонента Обратите внимание на значок, которым обозначается новый компонент. Его можно поменять на другой. Для создания собственного значка можно использ...
Пакеты компонентов
Пакеты компонентов Пакеты — это специальные динамически присоединяемые компоненты (аналоги файлов so — разделяемых объектов, Shared Objects). По своему использованию пакеты делятся на: пакеты...
Для чего используются пакеты
Для чего используются пакеты Как мы уже говорили выше, пакеты разработки предназначены для упрощения задачи распределения и установки компонентов, созданных разработчиком. Программирование с по...
Таблица 20 1 Типы файлов пакетов
Таблица 20.1. Типы файлов пакетов Расширение файла Содержание файла dpk Исходный файл пакета, содержащий список мод...
Использование пакетов в приложениях
Использование пакетов в приложениях Для того чтобы приложение, которое использует пакеты, благополучно запустилось, должны присутствовать в наличии все необходимые приложению файлы. Файлы so до...
Рисунок 20 1 Вкладка Packages диалогового окна Project Options
Рисунок 20.1. Вкладка Packages диалогового окна Project Options...
Рисунок 20 2 Окно добавления пакета в проект
Рисунок 20.2. Окно добавления пакета в проект Примечание При изменении пути поиска (Search path) в диалоговом окне добавления пакета (см. Рисунок 20.2) вы измените глобальные настройки...
Динамическая загрузка пакетов
Динамическая загрузка пакетов Иногда требуется загружать необходимый пакет во время работы приложения. Для этой цели служит функция LoadPackage. Данная функция находится в модуле Kylix SysUtils...
Таблица 20 2 Основные runtime пакеты Kylix
Таблица 20.2. Основные runtime пакеты Kylix Имя файла пакета Модули, входящие в пакет bplclx.so.6 Classes, Con...
Таблица 20 3 Основные designtime пакеты Kylix
Таблица 20.3. Основные design-time пакеты Kylix Имя файла пакета Вкладки палитры компонентов dclstd Standard, Addit...
Установка пакетов компонентов
Установка пакетов компонентов Для того чтобы установить собственные пакеты или пакеты, созданные другими разработчиками, вам необходимо выполнить следующие шаги: 1. В случае, когда вы устанавл...
Рисунок 20 3 Окно просмотра компонентов входящих в пакет
Рисунок 20.3. Окно просмотра компонентов, входящих в пакет...
Создание и редактирование пакетов
Создание и редактирование пакетов Процесс создания пакета включает в себя: задание названия пакета; указание списка других пакетов, связанных с новым пакетом или требуемых для его работы;...
Рисунок 20 4 Пиктограмма Package диалогового окна New Items
Рисунок 20.4. Пиктограмма Package диалогового окна New Items Редактор пакета включает в себя два раздела: содержания (Contains) и требований (Requires). Для добавления нового модуля в раздел...
Рисунок 20 5 Редактор пакета
Рисунок 20.5. Редактор пакета...
Рисунок 20 6 Вкладка Add Unit диалогового окна Add
Рисунок 20.6. Вкладка Add Unit диалогового окна Add На вкладке Add Unit диалогового окна Add запишите в поле имени файла модуля имя файла pas, который вы хотите включить в пакет, либо воспол...
Рисунок 20 7 Диалоговое окно Add
Рисунок 20.7. Диалоговое окно Add 4. В появившемся диалоговом окне (Рисунок 20.7) в поле имени пакета (Package name) введите имя файла пакета (dcp), требуемого для работы вашего пакета. Вы т...
Рисунок 20 8 Диалоговое окно Project Options
Рисунок 20.8. Диалоговое окно Project Options Редактировать уже существующий файл пакета можно по-разному: выбрать пункт главного меню Kylix File/Open и в нем уже — файл пакета, который н...
Структура пакета
Структура пакета Вспомним все, что мы уже знаем о пакетах, и нам нетрудно будет понять, из чего состоит пакет. Пакет состоит из: имени, раздела Requires и раздела Contains. Package имя пакет...
Компиляция пакета
Компиляция пакета Как откомпилировать пакет, мы с вами уже знаем, осталось только рассмотреть некоторые особенности компиляции. Для начала рассмотрим директивы компилятора, которые могут включ...
Таблица 20 4 Директивы компилятора пакетов
Таблица 20.4. Директивы компилятора пакетов Директива Применение {$IMPLICITBUILD OFF} Служит для предотвращения...
Использование компилятора командной строки
Использование компилятора командной строки Если вы компилируете пакет из командной строки (без загруженной графической оболочки Linux), вы можете воспользоваться ключами, приведенными в табл. 2...
Таблица 20 5 Ключи для компиляции пакета из командной строки
Таблица 20.5. Ключи для компиляции пакета из командной строки Ключ Назначение -$G- Отключает создание ссылок на имп...
Простые типы данных
Простые типы данных...
Таблица 2 1 Целочисленные типы данных
Таблица 2.1. Целочисленные типы данных Тип данных Диапазон значений Формат чисел в памяти Integer...
Таблица 2 2 Вещественные типы данных
Таблица 2.2. Вещественные типы данных Тип данных Диапазон значений Точность (знаков) Количество байт...
Таблица 2 3 Отличия результатов операций над логическими типами
Таблица 2.3. Отличия результатов операций над логическими типами Тип данных Boolean Типы данных ByteBool, WordBool,LongBool False < Tru...
Таблица 2 3 (окончание)
Таблица 2.3 (окончание) Тип данных Boolean Типы данных ByteBool, WordBool, LongBool Ord(True) = 1 Ord(True)...
Структурные типы данных
Структурные типы данных Структурные типы данных — это такие типы, которые состоят из данных других типов, в том числе из данных структурного типа. К числу таких данных относятся: строки; м...
Таблица 2 4 Строковые типы данных
Таблица 2.4. Строковые типы данных Тип данных Максимальная длина Занимаемая память Используется для:...
Таблица 2 5 Операции допустимые над множествами
Таблица 2.5. Операции, допустимые над множествами Обозначение Название Тип результата Результат Пример...
Таблица 2 5 (окончание)
Таблица 2.5 (окончание) Обозначение Название Тип результата Результат Пример =...
Рисунок 2 1 Одномерный массив на десять переменных
Рисунок 2.1. Одномерный массив на десять переменных Статический одномерный массив: var MyArray: array[1..100] of Char; Данная запись задает одномерный массив с именем MyArray, который буд...
Рисунок 2 2 Двумерный массив А на двадцать элементов Задание статического двумерного массива
Рисунок 2.2. Двумерный массив А на двадцать элементов Задание статического двумерного массива: var MyMatrix: array[1..10, 1..50] of Real; Многомерные массивы называют еще и массивами массив...
Листинг 2 1 Использование вариантной записи
Листинг 2.1. Использование вариантной записи var Person = recordR> FirstName, LastName: string[40]; BirthDate: TDate; case Citizen: Boolean of True: (Birthplace: string [40]);...
Указатели процедурные и вариантные типы данных
Указатели, процедурные и вариантные типы данных Кроме рассмотренных выше простых и структурных типов данных, в языке Object Pascal имеется еще несколько типов данных, не относящихся ни к тем, н...
Листинг 2 2 Пример использований указателей
Листинг 2.2. Пример использований указателей var X, Y: Integer; / / объявление целых переменных X и Y Р: ^Integer; / / Р - указатель целого типа begin X := 17; / / присваиваем значение пере...
Листинг 2 3 Описание процедурных указателей
Листинг 2.3. Описание процедурных указателей type TIntegerFunction = function: Integer; TProcedure = procedure; TStrProc = procedure(const S: string); TMathFunc = function (X: Double): Do...
Листинг 2 4 Использование данных вариантного типа
Листинг 2.4. Использование данных вариантного типа var V1, V2, V3, V4, V5: Variant; I: Integer; D: Double; S: string; begin V1 := 1; / / целое значение V2 := 1234.5678; / / действител...
Проблемы переноса приложений
Проблемы переноса приложений Kylix предоставляет возможность разработки так называемых кроссплат-форменных (межплатформенных) 32-разрядных приложений, которые могут работать как в среде Linux,...
Перенос Windowsприложений в cреду Linux
Перенос Windows-приложений в cреду Linux Сложность переноса приложений из одной среды в другую зависит от сложности самого приложения. Если в приложении используются специфичные вызовы функций...
Листинг 21 1 Использование директивы $IFDEF
Листинг 21.1.Использование директивы $IFDEF // Если среда - Windows [$IFDEF MSWINDOWS] IniFile.LoadfromFile('с:\x.txt'); [$ENDIF] // Если среда - Kylix [$IFDEF LINUX] IniFile.LoadfromFile('/home/...
CLX как версия VCL
CLX как версия VCL Kylix использует библиотеку компонентов Borland для создания кроссплат-форменных приложений (Borland Component Library for Cross Platform, CLX) вместо библиотеки визуальных к...
Таблица 21 1 Части в которые сгруппированы компоненты CLX
Таблица 21.1. Части, в которые сгруппированы компоненты CLX Часть Описание VisualCLX Межплатформенные графические к...
Отличия CLX от VCL
Отличия CLX от VCL Хотя многое в CLX и VCL выполнено одинаково, они имеют некоторые отличия. Рассмотрим их. Визуальная среда Linux выглядит несколько иначе, чем Windows. Внешний вид диалогов...
Команды компоненты и другие элементы перенос которых невозможен
Команды, компоненты и другие элементы, перенос которых невозможен Некоторые специфичные для Windows возможности не могут быть перенесены напрямую в среду Kylix. Такие элементы, как COM, ActiveX...
Таблица 21 2 Различие возможностей Delphi и Kytix
Таблица 21.2. Различие возможностей Delphi и Kytix Delphi/Windows возможность Kylix/Llnux возможность Вызовы Windows API...
Совместимости модулей Kylix и Delphi
Совместимости модулей Kylix и DelphiВсе компоненты и объекты VCL и CLX определены в файлах модулей (pas). Например, вы можете найти описание объекта TObject в модуле System.pas, а описание базовог...
Таблица 21 3 Совместимые модули Delphi и Kylix
Таблица 21.3. Совместимые модули Delphi и KylixМодуль DelphiМодуль KylixActnListQactnListButtonsQbuttonsCheckLstQcheckLstClassesClassesClipbrdQclipbrdComCtrlsQcomCtrlsConstsConsts, QConsts и RTLCo...
Таблица 21 3 (окончание)
Таблица 21.3 (окончание)Модуль DelphiМодуль KylixGridsQgridsHelpIntfsHelpIntfsImgListQimgListIniFilesIniFilesMaskQmaskMaskUtilsMaskUtilsMasksMasksMathMathMenusQmenusMidasMidasMidConstMidConstPrint...
Таблица 21 4 Модули VCL не поддерживаемые средой Kylix
Таблица 21.4. Модули VCL, не поддерживаемые средой KylixМодуль VCLПричина, по которой он не поддерживается в KylixADOConstНет ADOADODBНет ADOAppEvntsНет объекта TapplicationEventAxCtrlsНет СОМBdeC...
Таблица 21 4 (окончание)
Таблица 21.4 (окончание)Модуль VCLПричина, по которой он не поддерживается в KylixMtxНет COMmxConstsНет COMObjBrkrМожет появиться в более поздних версияхOleConstMayНет СОМOleCtnrsНет СОМOleCtrlsНе...
Непереносимые возможности
Непереносимые возможности При создании объекта CLX с помощью палитры компонентов или написания кода, использующего метод Create, компилятор создает экземпляр widget. Этот экземпляр принадлежит...
Совместное использование файлов ресурсов Linux и Windows
Совместное использование файлов ресурсов Linux и Windows Если вы хотите, чтобы ваше приложение успешно функционировало и в Windows и в Linux, вы можете распространять ваше приложение с ресурсны...
Различие сред Linux и Windows
Различие сред Linux и Windows В табл. 21.5 приводится список отличий сред Linux и Windows....
Таблица 21 5 Отличия Linux и Windows
Таблица 21.5. Отличия Linux и Windows Отличие Описание Чувствительность к регистру букв в именах файлов В Linux заг...
Таблица 21 5 (продолжение)
Таблица 21.5 (продолжение) Отличие Описание Пакетные файлы и файлы скриптов оболочки Эквивалентом пакетны...
Таблица 21 5 (окончание)
Таблица 21.5 (окончание) Отличие Описание Расширения имен файлов Linux не использует расширения имен файлов дл...
Написание переносимого кода
Написание переносимого кода Для создания кроссплатформенного приложения следуйте приведенным ниже советам: сократите вызов специфичных функций API Win32 или Linux или откажитесь от него совс...
Листинг 21 2 Код для среды Windows
Листинг 21.2.Код для среды Windows while p^ <> #0 do begin if р^ in LeadBytes then inc (p) ; inc(p); end; Этот код можно преобразовать в платформонезависимый, как показано в листинге...
Листинг 21 3 Платформонезависимый код
Листинг 21.3. Платформонезависимый код while р^ <> #0 do begin if р^ in LeadBytes then p := StrNextChar(p) else inc(p); end; Если использование функций библиотек не приводит к работающе...
Использование специальных директив
Использование специальных директив Использование директивы компилятора $IFDEF является достаточно разумным путем для разделения кода Windows и Linux в вашем межплатформенном приложении. Тем не...
Листинг 21 4 Неправильная работа директивы $IFDEF
Листинг 21.4.Неправильная работа директивы $IFDEF {$IFDEF WIN32} {32-битный код Windows размещаем здесь} {$ELSE} {16-битный код Windows находится здесь} //!! По ошибке Linux может // попробова...
Вывод сообщений
Вывод сообщений Директива компилятора $MESSAGE позволяет вашему приложению выводить подсказки сообщения и ошибки таким образом, как это делает компилятор: {$MESSAGE HINT|WARN | ERROR | FATAL...
Перенос кода ассемблера в Linux
Перенос кода ассемблера в Linux Если ваше Windows-приложение содержит код на языке ассемблера, вы, скорее всего, не сможете использовать этот же самый код в Linux, т. к. среда Linux требует нез...
Сообщения и системные события
Сообщения и системные события Сообщения и события в Linux работают иначе, чем в Windows. Этот факт в первую очередь влияет на процесс создания своих компонентов. Несмотря на это, большинство ко...
Таблица 21 6 Методы для подмены системных сообщений Windows
Таблица 21.6. Методы для подмены системных сообщений Windows Метод Описание ChangeBounds Используется, когда компон...
Переносимые приложения баз данных
Переносимые приложения баз данных В Windows среда Delphi обеспечивает программисту три пути для доступа к информации, содержащейся в базах данных; ActiveX Data Objects (ADO); Borland Datab...
Таблица 21 7 Соответствие компонентов доступа к данным
Таблица 21.7. Соответствие компонентов доступа к данным Компоненты InterBase Express Компоненты BDE Компоненты ADO Ком...
Листинг 21 5 Обработчик события
Листинг 21.5.Обработчик события AfterPost procedure TForm1.ClientDataSetlAfterPost(DataSet: TDataSet); begin with DataSet as TClientDataSet do ApplyUpdates(1); end;...
Кроссплатформенные Интернетприложения
Кроссплатформенные Интернет-приложения Интернет-приложения — это приложения типа клиент-сервер, которые используют стандартные Интернет-протоколы для обеспечения связи между клиентом и сервером...
Выражения и операторы
Выражения и операторы В этой главе мы рассмотрим такие конструкции языка Object Pascal, как выражения и операторы. Вы узнаете об арифметических, логических и строковых выражениях языка Object...
Арифметические выражения
Арифметические выраженияАрифметические операции выполняются над целыми и действительными числами. Результатом выполнения арифметического выражения является также целое или действительное число.В я...
Таблица 3 1 Арифметические операции над двумя операндами
Таблица 3.1. Арифметические операции над двумя операндамиЗнак операцииОперацияТипы операндовТип результатаПример+СложениеInteger, realInteger, realX+Y-ВычитаниеInteger, realInteger, realX-Y*Умноже...
Таблица 3 2 Арифметические операции над одним операндом
Таблица 3.2. Арифметические операции над одним операндомЗнак операцииОперацияТип операндаТип результатаПример+Сохранение знака числаInteger, realInteger, real+7-Отрицание знака числаInteger, realI...
Листинг 3 1 Примеры использования арифметических операций
Листинг 3.1. Примеры использования арифметических операций var а, b, с, d: Integer; // Объявляем четыре целочисленных переменныхbegin a:=7; b:=5; c:=-10; // Присваиваем трем из них начальные значе...
Таблица 3 3 Поразрядные арифметические операции
Таблица 3.3. Поразрядные арифметические операцииЗнак операцииОперацияТипы операндовТип результатаПримерnotПоразрядное отрицаниеIntegerIntegernot XandПоразрядное умножениеIntegerIntegerX and YorПор...
Таблица 3 4 Результаты выполнения поразрядных арифметических операций
Таблица 3.4. Результаты выполнения поразрядных арифметических операцийЗнак операцииОперацияБит1Бит 2Результирующий битnotПоразрядное отрицание0110andПоразрядное умножение000010...
Таблица 3 4 (окончание)
Таблица 3.4 (окончание)Знак операцииОперация Бит1Бит 2Результирующий бит100111orПоразрядное сложение000011101111хоr Поразрядное исключающее ИЛИ000011101110Приведем примеры использования побитовых...
Листинг 3 2 Примеры использования побитовых операций
Листинг 3.2. Примеры использования побитовых операций var a,b,с: Integer; // Объявляем три целочисленные переменные begin а =175; b:=77; // Двум из них присваиваем начальные значения с =not a; //...
Таблица 3 5 Логические операции языка Object Pascal
Таблица 3.5. Логические операции языка Object PascalЗнак операцииОперацияТипы операндовТип результатаПримерnotОтрицаниеBooleanBooleannot (С in MySet)...
Таблица 3 5 (окончание)
Таблица 3.5 (окончание)Знак операцииОперацияТипы операндовТип результатаПримерandКонъюнкция (логическое И)BooleanBooleanA and ВorДизъюнкция (логическое ИЛИ)BooleanBooleanA or ВxorИсключающая дизъю...
Таблица 3 6 Результаты выполнения логических операций
Таблица 3.6. Результаты выполнения логических операцийЗнак операцииОперацияОперанд 1Операнд 2РезультатnotОтрицаниеFalseTrueTrueFalseandКонъюнкция (логическое И)FalseFalseFalseFalseTrueFalseTrueFal...
Простые операторы
Простые операторы Для выполнения каких-либо действий в программе на языке Object Pascal применяются операторы. Операторы — это команды компилятору языка на выполнение определенных действий. Как...
Листинг 3 3 Пример работы с оператором with
Листинг 3.3 Пример работы с оператором with type TDate = record // Объявляем новый тип - запись с тремя полями Day: Integer; // Поле День Month: Integer; // Поле Месяц Year: Integer; // Поле...
Структурированные операторы
Структурированные операторы Напомним, что структурированные операторы — это операторы, которые изменяют ход выполнения команд программы. К числу структурированных операторов можно отнести: о...
Листинг 3 4 Пример использования оператора case
Листинг 3.4. Пример использования оператора case case I of // В зависимости от значения переменной I 1..5: С := 'До пяти'; // Если оно от 1 до 5, то переменная С='До пяти' 6..9: С := 'Выше...
Листинг 3 5 Пример использования оператора условия
Листинг 3.5. Пример использования оператора условия if I in [1..5] then С := 'До пяти' else if I in [6..10] then С := 'Выше пяти' else if (I = 0) or (I in [10..99]) then С := 'Вне о...
Листинг 3 6 Примеры циклов с параметрами
Листинг 3.6. Примеры циклов с параметрами for i:=l to 20 do // Начало циклаbegin // Начало составного оператора s:=s+i; // Тело цикла a:=a*i;end; // Конец цикла. Значение i у...
Листинг 3 7 Пример цикла с предусловием
Листинг 3.7, Пример цикла с предусловием while I > 0 do // Начало циклаbegin // Начало составного оператора S : = S+I; // Тело цикла I := I - 1; // Изменяем переменную i самостоят...
Листинг 3 8 Пример цикла с постусловием
Листинг 3.8. Пример цикла с постусловием repeat // Начало цикла К : = I mod J; // Тело цикла I : = J; J : = К; until J = 0; // Условие цикла...
Подпрограммы и модули
Подпрограммы и модули В этой главе мы расскажем о принципах описания функций и процедур языка Object Pascal. Вы узнаете, чем отличается параметр подпрограммы от аргумента и научитесь сами созд...
Функции
Функции Функции — это подпрограммы, которые могут возвращать под своим именем результирующее значение. Типичным примером функции может быть функция Sin (х). Запись: A:=Sin(x); позволяет вызват...
Листинг 4 1 Описание функции Mах
Листинг 4.1. Описание функции Mах function Max(A: array of Real; N: Integer): Real; var X: Real; I: Integer; begin X := A[0]; for I := 1 to N - 1 do if X < A[I] then X : = A[ I ];...
Процедуры
Процедуры Процедура — это обыкновенная подпрограмма, которая не возвращает никакого значения под своим именем. Описание процедуры также состоит из двух частей: заголовка и блока. Заголовок про...
Листинг 4 2 Описание процедуры NumString
Листинг 4.2. Описание процедуры NumString procedure NumString(N: Integer; var S: string); var V: Integer; begin V := Abs(N) ; S : = " ; repeat S := Chr(V mod 10 + Ord('0')) + S;...


- Начало -