Кроссплатформенное программирование для Linux

МОРДОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМЕНИ Н.П. ОГАРЕВА

Факультет светотехнический

Кафедра светотехники

















КУРСОВАЯ РАБОТА

КРОССПЛАТФОРМЕННОЕ ПРОГРАММИРОВАНИЕ ДЛЯ LINUX







Автор курсовой работы А.В. Богданов

Специальность 100101 сервис

Обозначение курсовой работы КР-02069964-100101-05-08

Руководитель работы С.Д. Шибайкин















Саранск 2008


МОРДОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМЕНИ Н.П. ОГАРЕВА

Факультет светотехнический

Кафедра светотехники



ЗАДАНИЕ НА КУРСОВУЮ РАБОТУ (ПРОЕКТ)

Студент ______________________________________________________

1 Тема _______________________________________________________

2 Срок представления работы (проекта) к защите___________________

3 Исходные данные для научного исследования (проектирования) __________________________________________________________________

4 Содержание курсовой работы (проекта)

4.1 _________________________________________________________

4.2 _________________________________________________________

4.3 _________________________________________________________

4.4 _________________________________________________________

Руководитель работы (проекта) _______________________________

подпись, дата, инициалы, фамилия

Задание принял к исполнению _________________________________

дата, подпись




Реферат



Дипломная работа содержит 26 страниц, 1 таблицу, 20 использованных источников, 2 приложения.

ПРОГРАММИРОВАНИЕ, LINUX, DELPHI, KYLIX, CLX, ПРИЛОЖЕНИЕ.

Объектом исследования является способ создания приложений для Linux в среде Delphi.

Цель работы – проанализировать принцип создания приложений для Linux на уровне пользователя и среды Delphi с целью выявления основных сходств и различий его c программированием для Windows.

Задачи: изучить состав стандартного проекта CLX и кроссплатформенные элементы Репозитория, иерархию классов CLX, общие свойства и методы компонентов, их отличия от компонентов VCL; особенности кроссплатформенного программирования, дополнительные возможности кроссплатформенных приложений.

Степень внедрения – частичная.






Содержание



Введение

1 Проект CLX

1.1 Общие сведения

1.2 Объектная концепция кроссплатформенного программирования

1.3 Библиотека компонентов CLX

1.4 Сходства и различия визуальных компонентов CLX и VCL

2 Особенности программирования для Linux

2.1 Общие сведения

2.2 Приложения баз данных для Linux

2.3 Internet-приложения для Linux

Заключение

Список использованных источников

Приложение А

Приложение Б








Введение



Времена безраздельного господства операционных систем Windows для домашних компьютеров и корпоративных рабочих станций подходят к концу. Все большее число рядовых компьютеров работает под управлением других операционных систем. Среди них по праву выделяется операционная система Linux, сочетающая в себе открытость и хорошие возможности настройки.

В этих условиях, когда бывает необходимо разрабатывать программное обеспечение с одними функциями сразу для нескольких операционных систем, программистам была бы весьма полезна среда разработки, позволяющая делать это по возможности с наименьшими затратами.

Существует вполне самостоятельный программный продукт Kylix, который и предназначен для разработки программ для Linux. Delphi и Kylix очень схожи, но каждый из них работает в своей операционной системе и о переносе программ не может быть и речи.

Однако, Delphi 7 действительно позволяет писать программы для Linux.

Теперь разработчик, использующий Delphi 7, может создавать приложения, исходный код которых будет компилироваться без каких-либо дополнительных усилий не только в Delphi для Windows, но и в Kylix для Linux.

Для этого необходимо выбрать в Delphi соответствующий тип проекта и затем написать приложение. При этом разработчику будут доступны многие компоненты Палитры компонентов и соответственно возможности визуального программирования в Delphi.

Несомненное преимущество кроссплатформенного программирования в Delphi заключается в том, что для совместного использования доступны не только обычные конструкции и операторы языка программирования, но и множество высокоуровневых компонентов для визуального программирования.

Кроссплатформенная разработка приложений в Delphi стала возможной благодаря созданию специального варианта библиотеки VCL, которая называется Component Library for Cross Platform (CLX). В основе CLX лежит иерархия специально созданных базовых классов, обеспечивающих работоспособность визуальных компонентов – потомков сразу в двух операционных системах. Конечно, набор компонентов CLX не столь богат по сравнению с нынешним разнообразием VCL, однако вполне сравним с Палитрой компонентов Delphi или Delphi 2.

Конечно же, серьезное кроссплатформенное программирование, включающее, например, взаимодействие с памятью, обработку процессов с учетом их приоритетов и т. д., потребует скрупулезной и вдумчивой работы. Но это неизбежно – совмещение возможностей двух операционных систем в одной программе – дело нелегкое, и проблема здесь не столько в недостатках среды разработки, сколько в сложности самой задачи. Delphi берет на себя все заботы по созданию интерфейса кроссплатформенной программы.

В моей работе рассматриваются следующие вопросы:

состав стандартного проекта CLX и кроссплатформенные элементы Репозитория;

CLX – библиотека компонентов кроссплатформенного программирования;

иерархия классов CLX, общие свойства и методы компонентов, их отличия от компонентов VCL;

особенности кроссплатформенного программирования Windows – Linux;

дополнительные возможности кроссплатформенных приложений.




1 Проект CLX



1.1 Основные сведения



Создание кроссплатформенного приложения в Delphi требует выполнения абсолютно стандартных действий. Достаточно создать новый проект, выбрав для этого в Репозитории пункт CLX Application.

На первый взгляд новый проект ничем не отличается от обычного, но это не так. Среда разработки тоже претерпела некоторые изменения. В Палитре компонентов теперь представлены компоненты из библиотеки CLX, той самой, которую использует Kylix. Другие немногочисленные изменения в составе проекта также связаны с необходимостью совмещения с Kylix.

Проект CLX отличается от обычного типом файла, содержащего информацию о форме. Если в обычном проекте файл формы имеет расширение *.dfm, то в проекте CLX это файл с расширением *.xfm, одинаково понятный и для Delphi, и для Kylix, так как и те и другие файлы являются обычными текстовыми файлами и сведения о форме представлены в них в текстовом виде. Примерно то же самое мы увидим, просматривая форму в текстовом представлении в окне Редактора Delphi (команда View as Text из всплывающего меню формы) [1].

Форма и модуль CLX связываются при помощи директивы {$R *.xfm}.

Кроме этого, в проектах Delphi и Kylix различаются расширения файла опций проекта (в Delphi – *.dof, в Kylix – *.kof). Однако это не принципиальная проблема и при отсутствии такого файла среда разработки создаст новый с настройками по умолчанию. Таким образом, всегда можно придумать как минимум несколько способов перенести текстовое содержимое файла настроек проекта.

По синтаксису и основным элементам исходный код не отличается от стандартного. Файл проекта содержит список модулей и секцию begin, end. Файл модуля также обычен, за исключением списка используемых модулей в секции uses. Модули с непривычными названиями QControis, QForms и др. содержат базовые классы библиотеки CLX.

В остальном проект CLX подобен стандартному проекту Delphi и в нем можно использовать весь инструментарий среды разработки и приемы визуального программирования.

В подтверждение этого при помощи нескольких изменений в проекте VCL можно легко преобразовать проект VCL в CLX и обратно. Для этого понадобится любой текстовый редактор. И конечно проект не должен содержать компонентов, которые не входят в состав библиотеки CLX.

В файле проекта в секции uses сылка на модуль Forms заменяется на QForms.

В файлах модулей заменяются ссылки на модули VCL на модули CLX. Например, секция uses может выглядеть так:

uses SysUtils, Types, Classes, QGraphics, QControls, QForms;

В файлах модулей заменяется директива {$R *.dfm} на {$R *.xfm}.

В файлах форм меняется расширение с dfm на xfm.

Сохранив сделанные изменения и открыв проект в среде разработки, можно убедиться, что Delphi приняла его за проект CLX, изменила соответствующим образом Палитру компонентов и с готовностью компилирует его.

При необходимости разработчик может добавлять к проекту новые шаблоны, используя для этого Репозиторий. При этом в Репозитории доступны только те шаблоны, которые можно использовать в проекте CLX (например, форма, модуль или модуль данных). Отсутствуют шаблоны, использование которых в Linux невозможно или поддержку которых не обеспечивает библиотека CLX (например, шаблон однодокументного приложения или шаблоны печатных форм Quick Report).






1.2 Объектная концепция кроссплатформенного программирования



Программирование в Delphi подразумевает использование тех или иных классов, будь то формы, невизуальные компоненты или списки. Концепция кроссплатформенного программирования в рамках одной среды разработки имеет в виду наличие общего ядра, обеспечивающего функционирование зависимой от операционной системы программной надстройки. В Delphi таким ядром стала библиотека времени выполнения (RunTime Library – RTL), с использованием классов которой созданы библиотеки компонентов VCL и CLX.

В соответствии с этим для обеспечения кроссплатформенной разработки в исходные коды базовых классов Delphi были внесены изменения. Общим ядром библиотек компонентов VCL и CLX является иерархия классов TObject – TFersistent – TComponent, которые входят в состав RTL. Это позволяет среде разработки легко интегрировать кроссплатформенные проекты и работать со стандартными проектами для Windows.

Расхождения двух ветвей начинаются с класса TControl, который обеспечивает функциональность всех визуальных компонентов. Начиная с этого класса и далее, библиотеки компонентов имеют собственные исходные коды. Многие модули CLX имеют названия, аналогичные модулям VCL, но с добавлением первой буквы Q, например QControls.pas.

В библиотеке VCL классы TControl и Twincontrol являются предками всех компонентов, которые должны уметь отображать себя на экране при помощи графических средств операционной системы. В библиотеке CLX аналогичную задачу выполняют классы TControl и TWidgetControl. Они обеспечивают работоспособность компонентов-потомков в качестве экранных объектов widget.

Большинство свойств и методов классов Twincontrol и TWidgetControl совпадают. Однако есть и различия, вызванные особенностями графических интерфейсов операционных систем Windows и Linux.

Для обеспечения работоспособности кроссплатформенных классов CLX применяется динамическая библиотека Qt. Для использования ее методов в классах CLX в составе Delphi имеется заголовочный файл Qt.pas. При создании объекта CLX конструктором create в исходном коде или переносом компонента на форму автоматически создается специальный объект – widget. Widget связан с объектом CLX, обеспечивает взаимодействие объекта CLX с операционной системой и уничтожается вместе с ним.

Widget может быть создан и напрямую. Такая ситуация может возникнуть, к примеру, при создании собственных компонентов. Для этого применяется функция QWidget_Create динамической библиотеки Qt. В этом случае widget не привязан к объекту CLX и, соответственно, не уничтожается вместе с ним [2].



1.3 Библиотека компонентов CLX



Библиотека компонентов CLX более бедна по сравнению с VCL. Тем не менее, ее компоненты позволяют создавать полноценные приложения. В целом состав компонентов CLX напоминает Палитру компонентов ранних версий Delphi. Библиотека CLX загружается в Палитру компонентов при открытии существующего или создании нового проекта CLX.

Все компоненты CLX, имеющие аналоги в VCL, а таких большинство, имеют те же имена, что и компоненты VCL. Так как при переносе компонентов из Палитры компонентов на форму соответствующие модули подключаются в проект автоматически.

Исходные модули библиотеки CLX содержатся в папке \Delphi7\Source \С1х [3].

Первые три страницы Палитры компонентов (Standard, Additional, Common Controls), а также страница Dialogs содержат визуальные и невизуальные компоненты для конструирования пользовательского интерфейса приложения.

Из-за некоторых различий стандартов пользовательского интерфейса Windows и Linux часть визуальных компонентов CLX имеют несвойственные для Windows дополнительные функции.

Большинство компонентов на этих страницах хорошо знакомы разработчикам (правда, некоторые из них перекочевали из других страниц VCL – например TTimer и TSpinEdit). Однако существуют некоторые новинки. Это компоненты TLCDNumber, TTextviewer и TTextBrowser. Их краткая аннотация представлена в таблице 1.



Таблица 1 – Уникальные визуальные компоненты CLX 

Компонент

Страница палитры компонентов

Описание

TLCDNumber

Additional

Компонент отображает совокупность символов (букв и цифр), которые можно представить в режиме цифрового дисплея. Соответственно, не все буквы можно показать в этом компоненте. Например, буквы J, Q, Z и т. д. Строка символов содержится в свойстве Value

TTextviewer

Common Controls

Компонент является аналогом компонента VCL TRichEdit. Предназначен для редактирования текстов

TTextBrowser

Common Controls

Компонент развивает возможности компонента TTextviewer, предоставляя функции гипертекстовой разметки



Дополнительные возможности по созданию кроссплатформенных приложений баз данных дают компоненты на страницах Data Access, DataControIs, DBExpress, InterBase. Безусловно, механизмы доступа к данным, используемые такими приложениями, в значительной степени зависят от операционной системы. Поэтому выбор способов доступа к данным сравнительно невелик.


1.4 Сходства и различия визуальных компонентов CLX и VCL



Большинство свойств и методов компонентов VCL и CLX идентичны. А существующие различия вызваны необходимостью использования специальных объектов – widget и особенностями представления визуальных элементов в Linux.

Базовые классы CLX – TControl и Twidgetcontrol для обеспечения прорисовки обращаются к динамической библиотеке Qt через заголовочный файл Qt.pas.

Таким образом, разработчик избавлен от необходимости работы с графическим интерфейсом Linux на низком уровне.

Для компонента CLX существует свойство property Handle: QWidgetH; которое является указателем на связанный объект widget и позволяет вызывать его методы напрямую.

Если экземпляр widget не создан, метод procedure CreateHandle; virtual;не только создает и инициализирует widget, но и устанавливает указатель Handle, создает объекты-перехватчики (см. ниже) и задает настройки по умолчанию для этого визуального компонента. При необходимости в классах-потомках метод CreateHandle перекрывается и в него добавляется новая функциональность.

Уничтожение созданного widget осуществляется методом procedure DestroyHandle; который уничтожает все дочерние widget и объекты-перехватчики, а также обнуляет свойства Handle И Hooks.

При необходимости для простого создания и инициализации widget можно использовать метод procedure CreateWidget; virtual; который сделает это, вызвав внешнюю функцию Qwidget_Create, и метод procedure InitWidget; virtual;который определяет визуальные параметры widget.

Также в классах CLX доступен указатель на родительский widget за счет использования свойства property ParentWidget: QWidgetH;

Если это свойство не определено, можно использовать свойство property ChildHandle: QWidgetH; родительского класса, например, таким образом:

if Not Assigned(ParentWidget) then if Assigned(Parent) then

Result := Parent.ChildHandle;

В классах CLX иначе реализована обработка событий. В Linux все события делятся на два вида – системные и события widget. Системные события обрабатываются процедурой – аналогом процедуры wndProc для компонентов VCL.

События, генерируемые widget, перехватываются и обрабатываются специальными объектами, взаимодействующими с объектом widget. Затем они передаются связанному объекту CLX, который вызывает необходимые обработчики событий.

Объекты-перехватчики создаются при вызове метода

procedure HookEvents; virtual;

а непосредственно для создания перехватчиков используется библиотечная функция Qwidget_hook_create. Метод HookEvents вызывается автоматически при создании widget.

Доступ к объекту-перехватчику возможен при помощи свойства

property Hooks: QWidget_hookH;

которое объявлено в секции protected и может быть использовано только при создании новых компонентов.

Классы CLX имеют очень интересное и важное свойство

property Style: TWidgetStyle;

которое позволяет управлять внешним видом и процессом отрисовки компонента.

Свойство

type TDefaultStyle = (dsWindows, dsMotif, dsMotifPlus, dsCDE, dsQtSGI, dsPlatinum, dsSystemDefault); property DefaultStyle: TDefaultStyle;

класса TWidgetStyle определяет стиль визуального компонента, задающий его внешний вид по умолчанию. Естественно, операционная система должна поддерживать выбранный стиль.

Кроме того, класс Twidgetstyle определяет некоторые наиболее общие параметры визуальных компонентов и обладает огромным числом обработчиков событий, которые вызываются при отрисовке всех возможных компонентов и экранных элементов.

Таким образом, свойство style является прекрасным инструментом для создания собственных компонентов с нестандартной функциональностью.

Для использования в Linux модернизирована система контекстной помощи для компонентов CLX. Теперь статья подсказки для визуального компонента может быть вызвана двумя способами.

Традиционно, путем определения уникального номера статьи в свойстве

property HelpContext: THelpContext;

и дополнительно, путем определения ключевого слова подсказки в свойстве

property HelpKeyword: String;

Способ вызова помощи определяется свойством

type THelpType = (htKeyword, htContext);

property HelpType: THelpType;

Свойства контекстной подсказки являются новыми в Delphi 7 и имеются у компонентов CLX и VCL.

Кроме того, отдельные компоненты CLX имеют дополнительные свойства и методы, определяющие их дополнительную функциональность в Linux.

В то же время некоторые привычные для программирования в Windows свойства компонентов отсутствуют в компонентах CLX. Это свойства обрамления компонента (BevelEdges, Bevellnner, BevelKind, BevelOuter); возможность двунаправленной печати текстов (свойство BioiMode); свойства для обратной совместимости с Windows 3.x (Ctl3D и ParentCtl3D); механизм присоединения и свойства Drag-and-Drop, хотя сам механизм Drag-and-Drop остался (свойства DockSite, DragKind, DragCursor). [4]




2 Особенности программирования для Linux



2.1 Общие сведения



Операционные системы Windows и Linux имеют достаточно серьезных различий, чтобы сделать кроссплатформенную разработку делом сложным и кропотливым. В первую очередь необходимо хорошо знать обе операционные системы и иметь опыт работы с ними.

Создание исходного кода для кроссплатформенных приложений – это трудоемкий процесс, который усложняется по мере использования специфических возможностей операционных систем. Простейшим путем в данном случае будет применение только стандартных свойств и методов компонентов CLX. Но такой путь возможен для сравнительно несложных приложений.

Большинство приложений имеют функции для работы с файлами. Файловые системы Windows и Linux отличаются настолько, что кроссплатформенная реализация любых сложных операций с файлами требует серьезного внимания и усилий.

Linux чувствительна к регистру символов в именах файлов и путях, поэтому не стоит использовать в исходном коде имена файлов напрямую, а при необходимости делать это нужно аккуратно. Во многих компонентах для решения проблемы заглавных и строчных букв можно использовать свойство

property CaseSensitive: Boolean;

После присвоения свойству значения True компонент производит все строковые операции с учетом регистра символов.

Для формирования полного пути файла используются константы из модуля SysUtils. Это PathDelim (символ разделителя каталогов в пути файла), DriveDelim (символ логического диска), pathsep (символ разделителя между несколькими путями файлов в одной строке).

При работе с текстовыми файлами необходимо помнить о различии управляющих символов в Windows и Linux. Для обозначения конца строки в Windows используются символы CR/LF, а в Linux – только символ LF. В Windows окончание текста определяется символом Ctrl-Z, а в Linux – просто концом файла [4].

Так как в Linux отсутствует системный реестр, то для сохранения настроек приложения используется класс TMeminiFile, обеспечивающий сохранение переменных среды в INI-файле.

При создании кроссплатформенных приложений необходимо использовать только свойства и методы классов CLX. В библиотеке CLX также доступны для применения такие важные для написания бизнес-логики приложения классы, как TList, TStringList, TCollection, TAction и др.

Если это ограничение является слишком жестким, и в программе требуется использовать функции системных API, применяются директивы условного перехода:

{$IFDEF MSWINDOWS}

{код для Windows}

{$ENDIF}

{$IFDEF LINUX}

{код для Linux}

{$ENDIF} 



2.2 Приложения баз данных для Linux



Главной составной частью любого приложения баз данных является механизм доступа к данным. Для традиционных приложений баз данных, создаваемых в Delphi, выбор способов доступа к данным достаточно широк. Однако про кроссплатформенные приложения этого сказать нельзя. По существу, разработчик может выбрать только набор компонентов dbExpress.

К сожалению, компоненты dbExpress ограничены по своим функциональным возможностям, обеспечивая однонаправленное перемещение курсора и просмотр данных в режиме «только для чтения».

Преимуществом этого способа доступа к данным является простота и отсутствие многомегабайтных вспомогательных библиотек. В частности, для каждого из четырех поддерживаемых dbExpress серверов баз данных необходима лишь одна динамическая библиотека Windows и только один разделяемый объект (shared object) Linux [5].



2.3 Internet-приложения для Linux



Для Internet-приложений вполне обычной является ситуация, когда клиентская часть должна работать на компьютерах с различными операционными системами, например Windows и Linux. В этом случае кроссплатформенное программирование клиентской части становится весьма привлекательным способом уменьшения затрат на процесс разработки.

В составе библиотеки CLX имеется достаточно большой набор компонентов для разработки Internet-приложений. Однако в Linux можно использовать только сервер Apache или CGI. Это накладывает существенные ограничения на вновь создаваемые кроссплатформенные приложения и требует серьезных усилий при переделке приложений Windows, использующих ISAPI или NSAPI.




Заключение



Кроссплатформенное программирование стало доступно в Delphi 7 благодаря использованию библиотеки компонентов CLX. Имея общее с библиотекой компонентов VCL ядро базовых компонентов, библиотека CLX обеспечивает совместимость приложений Delphi для Windows и Kylix для Linux.

При неизбежных для кроссплатформенного программирования трудностях реализации сложного кода, использующего системные вызовы и технологии удаленного доступа, в Delphi решена задача быстрого визуального проектирования пользовательского интерфейса и создания бизнес – логики приложения. Для этого применяется набор специальных компонентов, имеющих практически идентичную функциональность и схожий программный интерфейс, но их количество значительно отличается от стандартного набора компонентов.

Рассмотрены следующие вопросы:

состав стандартного проекта CLX и кроссплатформенные элементы Репозитория;

CLX – библиотека компонентов кроссплатформенного программирования;

иерархия классов CLX, общие свойства и методы компонентов, их отличия от компонентов VCL;

особенности кроссплатформенного программирования Windows – Linux;

дополнительные возможности кроссплатформенных приложений.








Список использованных источников



Шупрута, В.В. Delphi 2005. Учимся программировать: NT Press. – М., 2005.

Дарахвелидзе, И.В. Программирование в Delphi 7: BHV-СПб. – Санкт-Петербург, 2003.

Культин, С.Д. Delphi в задачах и примерах: BHV-СПб. – Санкт-Петербург, 2008.

Осипов, О.И. Delphi. Профессиональное программирование: Символ-Плюс. – М., 2006.

Фаронов В.В. Delphi4. Учебный курс. – М.: Нолидж, 1999.

Возневич Э. «Освой самостоятельно Delphi: Полное руководство для самостоятельного обучения. /Под ред. В. Тимофеева. – М.: Бином, 1996.

Гофман В.Э./ Хомоненко А.Д. Delphi 6. – СПБ.: БХВ, 1996.

Дарахвелидзе П.Г. Марков Е.П. Delphi – средства визуального программирования. – СПБ.: BHV – С-Петербург, 1996.

Конопка Р. Создание оригинальных компонент в среде Delphi: Пер. с англ. – Киев: DiaSoftLtd, 1996.

Сван Том. Основы программирования Delphi для Windows 95. Киев: Диалектика, 1996.

Зуев В. А.. Turbo Pascal 6.0, 7.0. М.: Веста; Радио и связь, 1998.

Коцюбинский А.О., Грошев С.В. Язык программирования Delphi 5 – М.: «Издательство Триумф», 1999.

Леонтьев В. Delphi 5 – М.: Москва «Олма-Пресс», 1999.

Немнюгин С.А. Программирование – М.: Питер, 2000.

Программирование под ред. В.В.Старлова – М: Питер, 1999

Ремизов Н. Delphi – М.: Питер, 2000.

Справочная система Delphi 5.0 Help.

Т.А. Ильина. Программирование на Delphi 6 – М.: Питер, 2000.

Фаронов В. В. Delphi 4. Учебный курс. М.: Нолидж, 1999.

Федоров А. Г. Создание Windows-приложений в среде Delphi. М.: ТОО «Компьютер Пресс», 1999.

Хендерсон К. Руководство разработчика баз данных в Delphi 2. Киев: Диалектика, 1998.

Ч. Куписевич. Программирования на Delphi. – М: Киев, 1986

Шапошников И. Delphi 5 – М.: Санкт-Петербург, 2001.






Приложение А

Программа «База данных Games»










Приложение Б

Исходный код программы «База данных Games»



unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DBTables, DB, Grids, DBGrids, StdCtrls;

type

TForm1 = class(TForm)

DataSource1: TDataSource;

Table1: TTable;

DBGrid1: TDBGrid;

Label1: TLabel;

GroupBox1: TGroupBox;

Button1: TButton;

Edit1: TEdit;

Label2: TLabel;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

if Table1.Locate('Game', Edit1.Text,[loCaseInsensitive, loPartialKey])

then Form1.Label2.Caption:=''

else Form1.Label2.Caption:='ничего не найдено.'

end;

end.