Delphi

Основы delphi – Изучаем Delphi — Основы программирования в Дельфи

Изучаем Delphi - Основы программирования в Дельфи

Часть I.

Содержание 1-й части:


  • О программировании и о Delphi
    • Что такое программирование
    • Что такое Delphi
    • Delphi и другие
    • Процедурное программирование и алгоритмы
    • Пару слов об объектно-ориентированном программировании
    • Визуальное программирование и Delphi
    • Версии Delphi и их отличия
  • Среда Delphi и простейшее приложение
    • Из чего состоит Delphi
    • Интегрированная среда разработки
    • Проекты в Delphi
    • Типы проектов
    • Прочие средства IDE
    • Создание приложения командной строки
  • Введение в Object Pascal
    • Алфавит языка
    • Зарезервированные слова
    • Структура программы
    • Данные и значения
    • Типы данных
    • Переменные и константы
    • Операции и их типы
    • Выражения
    • Приоритет операций
  • Операторы Object Pascal
    • Операторы и управляющие структуры
    • Оператор if
    • Оператор case
    • Оператор цикла while
    • Оператор цикла repeat
    • Оператор цикла for
    • Процедуры break и continue
  • Структурные типы данных
    • Пользовательские типы данных
    • Перечисления
    • Массивы
    • Строки
    • Множества
    • Записи
    • Вариантные данные
    • Совместимость и преобразование типов
    • Оператор as
  • Процедуры и функции
    • О подпрограммах в Object Pascal
    • Процедуры
    • Функции
    • Использование аргументов
    • Видимость переменных
    • Некоторые стандартные функции
    • Рекурсия
    • Директивы

« Изучаем Delphi | Часть II. »

www.snkey.net

Delphi. Основы языка программирования | >Digital-flame


Delphi – современный язык программирования высокого уровня с более, чем 20 летней эволюцией.

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

В Delphi вложили душу специалисты мирового уровня, такие как Aндерс Хэйлсберг (создатель C# и TypeScript)

На Delphi можно написать:

  • Веб-приложение (под браузер и мобильный браузер)
  • Мобильное приложение ( под iOS, Android)
  • Desktop приложение (под Wnidows, Maс OS)

DLL

Как создать и использовать DLL библиотеки?

Delphi и JavaScript

VCL+JavaScript

IDE

Поиск имени свойства в объектном инспекторе

JSON

Json объекты. Простой пример

Json. Сохранение в строку и чтение из строки

Парсинг сложных объектов с System.JSON

SuperObject для json формата

Получение всей структуры ключей-значений

REST

Как получить произвольный TJSonObject в качестве ответа сервера

Делаем красивый URL

Декодирование ответа сервера или превращаем \U0422\U0430\U043A… в нормальный русский текст

WinAPI

Messages. Первые наивные пробы

Пример отправки сообщения из одного потока в другой

Получение дескриптора безопасности файла

CheckFileAccess – проверка прав файла

Архитектура приложения

Передаем ссылку на Owner через (Self.Owner as TOwnerType) а не через UnitVar

Архитектура приложения. Видимость объектов

Базы данных и компоненты доступа

DBGrid

DBGrid. Как пробежаться и собрать значения определенного поля выделенных записей?

Ручное управление транзакциями

Библиотеки

Linq или сахар Spring4D

Первый опыт работы с библиотекой Marshmallow в реальном проекте

Mock FrameWork

OmniThreads

DBExpress

TRichView

Битовые операции

Битовые операции и фильтр Блума. Вступление

Представление положительных и отрицательных чисел в памяти компьютера. Прямой и дополнительный код числа

Некоторые функции для работы с битами

Время

Простейший способ измерить время

Как правильно сложить дату и время?

Несколько способов засечь время выполнения кода

Графика, изображения

Простой способ пропорционального уменьшения картинки

Уменьшение изображения. Обобщение и нюансы

Читаем ориентацию из Exif для Jpg файлов и ориентируем правильно

Деревья. Иерархические данные.

DBTreeView. Разработка компонента, Первая волна.

DbTreeView. Разработка компонента. Результат. Вторая волна

DBTreeView своими руками. Третья волна

DBTreeView. Четвертая волна

Отражение папок файловой директории в базе данных

Рекурсивное отражение файловой директории в базе данных


   VirtualStringView

Базовые операции

Документирование

Краткий обзор DocumentInsight

Документируем с PasDoc. Небольшая заметка

Интерфейсы

Интерфейсы в простых примерах

ARC. Основные моменты по книге DelphiMM

Классические алгоритмы

Все классические алгоритмы, реализованные в Delphi, смотрите на отдельной странице

Компоненты

      VCL компоненты

   TListView   

Как добавить элементы в виртуальном режиме (OwnerData:=true)?

Сортировка  в обычном и virtual режимах

Установка и использование написанных компонентов

Создание своих компонентов

Группировка свойств

Геттеры и Сеттеры при создании компонентов

MP3 на TMediaPlayer

MP3 плеер на bass.dll

Mp3 плеер на WindowsMediaPlayer

Делаем TVideoPanelWMP

       Создание компонентов, нюанс с прописыванием путей.

Массивы

Работа с вариантными массивами

Обработка исключений

Как обработать исключение из потока?

Память

Измерение оперативной памяти

Класс GarbageCollector

Garbage Collector For Delphi Objects and Components

Memory Management. Book

SmartPointers – меньше кода больше дела

Поиск

Инкрементальный поиск на примере TListView

Регистрозависимость поиска и поиск вхождений через MySQL

Реализуем поиск вхождений, регистрозависимый поиск, поиск точной фразы через MySQL.

Потоки (TStream)

Сохранение строки в TStream и чтение строки из TStream

Потоки (TThread)

  Управление потоками внутри одного приложения

 Самый простой пример на потоки

 Потоки (TThread). Создание и синхронизация. Метод WaitFor.

 Потоки через WinAPI

 Критические секции

 События (очень удобный инструмент регулирования потоков)

        Как обработать исключение из потока?

Как правильно остановить поток, работающий с idHTTP?

Пример отправки сообщения из одного потока в другой

Отправка строки из одного потока в другой

Запуск анонимного потока

Потоки по книге Мартина Харви. Конспект

   Управление потоками между приложениями, процессами

Мьютексы

Семафоры

IsSingleInstance

Регулярные выражения

Регулярные выражения.Теория

Регулярные выражения. Практика

Хранение параметров в имени файла

Реестр Windows

Простейший пример чтения / записи значений реестра

Риббон

Первые простые примеры

Пример программного добавления вкладки

RTTI – RunTimeTypeLibrary

RTTI Atributes

Overloaded methods

Свойства объектов

Свойства объектов – основы

Когда использовать read / write а когда get set ?

Делаем template на свойства

Списки

Как правильно удалять несколько элементов из TStringList, TObjectList и вообще из списков?

Простой пример функции компаратора для списка

События Delphi

Как сделать своё самое простое событие?

Добавляем пользовательские события на примере отправки файла чанками

Сортировка

TStringList.CustomSort – сортировка строк, integer, tdatetime в ascending и descending порядках

Строки

Split и Join методы для строки при переименовывания файла

Как сделать транслит в имени файла и заменить пробелы на тире?

Как узнать адрес в памяти строковой переменной?

Статистика, Математика

Descriptive statistics. Intro

Pearson criteria for testing normal distribution

Типы данных

Работа с указателями

Hex метаморфозы с байтовой строкой или функции для перевода в Hex и Hex представление и обратно

Соответствие типов С и Delphi

Текстовый редактор на TRichView

Делаем текстовый редактор на TRichView

Тестирование приложений

Тестирование приложения через DUnitX. Простой пример

Автоматизированное тестирование приложений в DUnitX

Трэй

Убираем программу в трэй

Файлы и папки

Как открыть папку и узнать об ошибке в случае чего?

Существует и доступен ли файл и доступен ли он для чтения?

Хранение параметров в имени файла

Как создать уникальное имя файла, используя GUID и сохранив часть старого имени?

Рекурсивный обход каталога файлов Windows при помощи SYSTEM.IOUTILS

Фильтры

VCL и не только. Делаем фильтр. Почти быстро и просто

Функции / процедуры

Delphi class function / procedure – вызов без создания экземпляра класса

Передача параметров по ссылке и по значению

CallBack функции / процедуры

Циклы

Delphi. C#. PHP. JS Циклы на 4 языках на примере факториала

СМС

Отправляем смс через шлюз или как классно когда все сделано за Вас)

Эксель (Excel)

Экспорт из базы в Excel через Ole

Импорт данных в базу из Excel. Пример из проекта

ZIP

System.ZIP Simple Examples

digital-flame.ru

Язык программирования Delphi. Структура кода Delphi. Часть 2 - Основы программирования на Delphi - Основы Delphi

В уроке Язык программирования Delphi. Структура кода Delphi. Часть 1 мы уже ознакомились с кодом Delphi, который генерируется при создании нового проекта. Теперь давайте разберем структуру этого кода. В самом начале стоит имя модуля (в нашем случае это Unit1). Это имя такое же как и имя файла, только без учета его расширения. Имя модуля можно изменять, но делать это вручную крайне не желательно. Если все же мы хотим изменить имя модуля вручную то, прежде всего, нужно сохранить модуль со старым именем (меню File | SaveAs), а затем уже изменять его вручную.

Далее следует раздел interface. В этом разделе описываются интерфейсы модуля, которые мы будем реализовывать. Ключевое слово implementation обозначает конец раздела interface. Весь код, который прописан в разделе interface, будет доступен всем модулям, которые будут подключать данный. А это означает, что все объявленные здесь переменные будут доступны и в других формах. Здесь могут быть следующие подразделы

uses, type, var и const. После implementation начинается второй раздел, в котором реализуются интерфейсы. Этот раздел заканчивается словом end с точкой на конце.

В подразделе uses осуществляется подключение глобальных модулей. Все процедуры, функции и константы описаны в определенном модуле, и прежде чем их использовать, нужно подключить этот модуль. Это делается для того, чтобы компилятор знал, где именно описана эта функция. Например, нам нужно превратить число в строку. Для этого в Delphi уже есть функция IntToStr. Она описана в модуле SysUtils. Если мы хотим воспользоваться этой функцией, нам нужно для начала подключить этот модуль к своему модулю формы (в разделе uses пишем название подключаемого модуля SysUtils) и только после этого используем функцию IntToStr. В таком случае нам не нужно писать свой вариант преобразования чисел в строку.

Так как весь код, который мы пишем, должен относиться к какому-нибудь типу, то после ключевого слова type их и описывают.

СтрокаTForm1 = class (TForm) говорит о том, что создается новый класс с именемTForm1, который будет происходить от объекта TForm. Таким образом, TForm1 будет обладать всеми возможностями TForm, а также дополнительными свойствами и возможностями, которые мы определим для него в будущем.

TForm— это стандартный объект-форма, который входит в библиотеку VCL и CLX. Все окна в Delphi относятся к этому объекту.

Итак, чтобы объявить какой-то объект, необходимо, в общем случае для раздела type, написать следующий код:

Код


Имя объекта = class
//Свойства, методы и события объекта
end;


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

Код


Имя объекта = class(Имя предка)
//Свойства, методы и события объекта
end;


Таким образом, запись в шаблоне нашей формы TForm1 = class(TForm) создает новый класс TForm1, который является производным (потомком) от объекта TForm.

После того как был объявлен объект идет описание его свойств, методов и событий, которые заканчиваются ключевым словом end с точкой с запятой. Объявления делятся на три части: private, protected и public. По умолчанию Delphi не создает раздел protected, но при необходимости его можно написать самим.

До слова private, то есть до начала описания разделов идет описание компонентов, входящих в состав класса и событий класса. Здесь писать вручную не желательно, так как это делается самим Delphi. А вот внутри разделов private, protected и public можно описывать любые переменные, процедуры и функции.

Существует четыре типа разделов.

Private - свойства и методы из этого раздела доступны только этому объекту. Другие объекты не могут вызывать эти методы и читать/записывать свойства;

Protected - эти свойства и методы доступны только этому объекту и потомкам (объектам, которые происходят от нашего и наследуют его свойства). Сторонние объекты не могут получить доступ к хранящимся здесь свойствам и методам;

Public - все, что описано здесь, доступно всем;

Published - когда будут описываться собственные компоненты приложения, в этом разделе мы будем описывать свойства и события, которые должны быть отображены в объектном инспекторе. Эти свойства доступны всем.

Следует отметить, что если два объекта объявлены в одном и том же модуле, они считаются дружественными и видят абсолютно все методы и свойства, даже если объявление произведено в разделе private.

После объявления объекта и его составляющих идет описание глобальных переменных. Оно начинается после ключевого слова var и чаще всего идет после объявления типов. Чаще всего не значит, что это обязательно.

Глобальные переменные — это такие переменные, которые хранятся в стеке. Они создаются при запуске программы и уничтожаются при выходе из программы. Это означает, что они доступны всегда и везде, пока запущена программа. Но с другой стороны, такие переменные не будут инициализироваться автоматически, если не считать простых типов (числа, строки), не являющихся указателями. Пример:


Код


var //Объявление глобальных переменных
Form1: TForm1; //Это описана переменная Forml типа объекта TForml

В этом примере объявлена переменная Form1 типа класса TForml. Когда будет создан объект TForml, то его указатель будет записан в переменную Forml. Данная переменная глобальная и существует до тех пор, пока программа выполняется. А это означает, что к этой переменной всегда можно получить доступ.

Далее следует раздел implementation, где должна быть реализация. Пока мы ничего не реализовываем, но если мы добавим классу TForm1 какие-то методы (процедуры или функции), то код этих процедур должен быть записан именно в этом разделе.

Последнее, что осталось рассмотреть в этой главе,— ключ {$R *.dfm}. В фигурных скобках могут быть не только комментарии, но и ключи для компилятора. Они отличаются тем, что выглядят как {$Буква параметр}. Буква указывает на тип ключа. В нашем случае используется буква R. Этот ключ указывает на то, что надо подключить файл ресурсов, в данном случае .dfm файл (файл с данными о визуальных объектах) с тем же именем, что и имя модуля. К примеру, если имя модуля DelphiUnit, то можно изменить этот ключ на {$R DelphiUnit.dfm}.

Любой программный код в Delphi заключается между begin и end. Соответственно begin это начало кода, a end это конец кода. Например, когда вы пишете процедуру, то сначала нужно написать ее имя, а потом заключить ее код между операторными скобками - begin и end.

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

delphischool.3dn.ru

HelloDelphi. Создаем свое первое приложение на Delphi - Основы программирования на Delphi - Основы Delphi

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

В компьютерной литературе принято писать первое приложение, которое выводит на экран надпись “HelloWord”, мы же несколько переиначим и создадим свое первое приложение, которое будет выводить надпись “HelloDelphi”.

Понятное дело, для начала нам нужно запустить сам Delphi. После того как перед нами открылось окно оболочки – создаем новый проект File | New | VCL Forms Application – Delphi.

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

Рисунок. Менеджер проекта, создаваемого приложения

В менеджере проектов появилось целое дерево. Давайте рассмотрим каждый пункт этого дерева.

ProjectGroup1 (Заголовок дерева) - имя группы проектов. В одной группе проектов может быть несколько приложений. В нашем случае мы создали одно новое приложение, поэтому в группе будет только оно. Если вы нажмете кнопку New (Новый) в окне менеджера проектов и создадите новое приложение, то оно будет добавлено в существующую группу проектов.

Project1.exe - имя проекта (приложения). Когда мы создаем новое приложение, Delphi дает ему имя Project плюс порядковый номер.

Unit1.pas - модуль. Проект состоит из модулей. Каждое окно программы хранится в отдельном модуле, а мы видим на экране, что у нашего приложения есть окно, и именно оно находится в нем. Файлы с расширением pas содержат исходный код модуля. Имя файла такое же, как и у модуля.

Unit1.dfm - это визуальная форма. Она сохраняется в файле с таким же именем, как у и модуля, но с расширением dfm.

Когда у нас в проекте несколько приложений, то только одно из них является активным, и именно его мы можем выполнять и отлаживать в среде оболочки Delphi. Имя активного приложения написано жирным шрифтом. Чтобы изменить активное приложение, достаточно дважды щелкнуть по его имени левой кнопкой мыши или щелкнуть правой по имени нужного проекта и из контекстного меню выбрать Activate (Активировать).

Но сейчас мы будем работать только с одним приложением, поэтому если вы создали два, то второе надо удалить. Для этого выделяем имя приложения и нажимаем на клавиатуре кнопку Delete. Перед нами появляется окно с подтверждением на удаление. Если нажать Yes (Да), то приложение будет удалено из группы проектов.

Следует отметить, что реально файлы с диска не удаляются. Они остаются на месте, но не отображаются в нашем проекте. Поэтому если мы сохранили проект и файлы нам больше не нужны, то можно найти эти файлы и удалить вручную. Если мы не успели сохранить файлы, то, естественно, их на диске и не будет.

Давайте сохраним наше новое приложение. Для этого выберем из главного меню File | SaveAll. Перед нами откроется стандартное окно сохранения файла. Для начала Delphi запросит ввести имя модуля. По умолчанию указано текущее имя - Unit1.pas. Давайте изменим его на MainUnit и нажмем кнопку Save (Сохранить).

Здесь следует отметить, что нельзя вводить имена с пробелами или на русском языке. Если вы попытаетесь ввести нечто подобное, то произойдет ошибка, ваш файл не будет сохранен и придется заново повторять процедуру сохранения. Не забудьте выбрать папку, куда вы хотите сохранить модуль и проекты. Желательно, чтобы все файлы одного проекта хранились в одной папке, по крайней мере на начальном этапе, пока вы не наберетесь опыта.

После того как мы сохранили MainUnit, Delphi запросит у нас имя будущего проекта. Поскольку мы решили писать новое приложение под названием HelloDelphi, то здесь давайте и введем HelloDelphi. Имя проекта также как и имя модуля должно вводиться без пробелов и только латиницей. После того как ввели имя проекта, можем нажимать кнопку Save (Сохранить). Проект сохранится в файле под именем HelloDelphi.dpr. Когда мы захотим вновь открыть этот проект, то нам нужно открывать именно этот файл. Не нужно открывать файлы с расширением pas, потому что это всего лишь составляющая часть проекта. Открывать нужно файлы с расширением dpr.

Старайтесь выбирать имена, наиболее точно отображающие содержимое модуля, чтобы потом легче было разобраться, для чего предназначены файлы в больших проектах. К тому же желательно помнить, что имя проекта задает имя будущего исполняемого программного файла проекта. Если вы оставите имя Project 1, то и имя исполняемого файла будет Project1.exe.

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

Давайте теперь посмотрим, как изменился наш менеджер проектов. Как видите, имя проекта изменилось на HelloDelphi, а имя модуля на MainUnit.

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

1. HelloDelphi.cfg - файлы с расширением cfg, содержат конфигурацию проекта.

2. HelloDelphi.dof - файлы с расширением dof, содержат опции проекта.

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

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

5. MainUnit.pas - файлы с расширением pas, содержат исходный код модулей.

6. MainUnit.dfm - файлы с расширением dfm, содержат визуальную информацию о форме.

7. MainUnit.ddp - файлы с расширением ddp, определяют вспомогательные файлы модуля, например, диаграммы. Если вы не используете диаграммы, то можете удалять эти файлы, хотя они все равно будут генерироваться.

8. MainUnit.dcu - файл с расширением dcu, представляет откомпилированный модуль проекта в промежуточном формате. Когда компилируется программа, все модули компилируются в файлы формата DCU, а потом собираются в один и получается один исполняемый файл. Если модуль не изменялся с последней компиляции, то Delphi пропустит его, а во время сборки будет использовать существующий файл формата DCU, чтобы увеличить скорость компиляции. У вас пока не может быть этого файла, потому что вы еще не компилировали свой проект.

Файлы исходных кодов (с расширением pas) — это текстовые файлы, которые мы будем редактировать в редакторе кода. Файлы визуальных форм (с расширением dfm) создаются автоматически, и в них будет храниться информация о том, что находится на форме, а также настройки самой формы. Я открыл этот файл с помощью Блокнота, и вот что я там увидел:

Код

object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
ClientHeight = 213
ClientWidth = 455
  Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
End

Первая строка идентифицирует объект, его имя и тип. Потом идет перечисление свойств объекта и значения, которые им присвоены. Описание свойств компонента заканчивается ключевым словом end.

Если у вас возникла проблема с открытием формы, вы можете открыть файл визуальной формы в текстовом редакторе и подправить необходимое свойство. Это может потребоваться, когда на форме есть компонент, который соединяется с базой данных. Если соединение активно и база недоступна, то при открытии формы Delphi будет пытаться соединиться с базой данных, и при неудачном соединении форма может не отобразиться. В этом случае нужно открыть такой файл в текстовом редакторе и отредактировать свойства соединения с базой. Можно отключить соединение или подправить путь к другой базе данных (о самих базах данных мы будем говорить позже).

А теперь давайте вернемся к нашей программе HelloDelphi, которую мы должны написать. Сначала посмотрим, что у нас уже есть. В принципе, мы ничего особого не сделали, но у нас уже есть готовое окно, которое можно превратить в программу. Для этого нужно скомпилировать проект. Чтобы скомпилировать проект, выбираем из меню пункт Project | Compile HelloDelphi, или нажимаем Ctrl+F9. Если мы ничего не меняли в настройках Delphi, то у нас должно появится окно состояния компиляции.

Рисунок. Окно состояния компиляции в Delphi

Давайте разберемся, что показывает нам это окно.

В этом окне довольно хорошо отображается состояние компиляции. Интерес представляют три значения.

Hints - сообщения. Это простые сообщения, которые указывают на места, где можно улучшить код. Например, вы объявили переменную, но не пользовались ею. В этом случае появится соответствующее сообщение. Это, конечно же, не ошибка, и программа все же будет скомпилирована. Но благодаря этим сообщениям вы сможете увидеть, где была объявлена лишняя переменная или, возможно, просто что-то было забыто.

Warning - предупреждения. На них нужно обращать более пристальное внимание. Например, вы объявили переменную, затем попытались ее использовать, не присвоив начальное значение. В этом случае появится предупреждение. Это опять же не ошибка, и программа будет скомпилирована, но Delphi предупреждает вас о возможной ошибке. Такие предупреждения нужно проверять, потому что вы действительно могли забыть что-то сделать, и это уже может привести к фатальной ошибке выполнения программы.

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

Как видим, никаких сообщений, предупреждений или ошибок у нас нет. И это понятно, ведь мы еще ничего не делали и не успели испортить созданную для нас заготовку. Программа скомпилирована. Просто нажимаем кнопку ОК, и это окно закрывается. Можно сделать так, чтобы окно автоматически исчезало по завершении компиляции, для этого нужно поставить галочку в Automatically close on successful compile (Автоматически закрывать после удачной компиляции), но я не рекомендую этого делать.

Теперь давайте вернемся в папку, где мы сохранили проект и посмотрим, что у нас изменилось. В этой папке появился исполняемый файл HelloDelphi.exe. Запустим его, и мы увидим пустое окно.

Давайте изменим заголовок нашей формы на HelloDelphi. Как известно, в Delphi все объекты, а значит, и окно программы тоже объект. Заголовок окна - это скорей всего свойство окна. Для того чтобы изменить это свойство, нужно перейти в объектный инспектор (вкладка Properties (Свойства)), найти свойство Caption (Заголовок) и ввести в его поле ввода слово HelloDelphi (сейчас у нас там написано Form1 и при запуске HelloDelphi.exe у нас появляется форма с заголовком Form1). После этого можно нажать Enter или просто перейти на другую строку с другим свойством.

После всего этого давайте запустим нашу программу. Для этого можно вновь скомпилировать ее и запустить файл. Однако на этот раз мы будем действовать иначе. Выбираем из меню Run (Выполнить) пункт Run (или нажимаем на клавиатуре клавишу F9). Delphi сразу откомпилирует и запустит готовую программу. Как видим, программирование не настолько страшно, как кажется на первый взгляд.

Рисунок. Объектный инспектор. Изменение свойства Caption

К уроку (статье) HelloDelphi. Создаем свое первое приложение на Delphi прилагается исходник, посмотрев который, вы можете ознакомиться с полным исходным кодом программы и посмотреть как работает созданная программа. Исходный код сопровождается комментариями, благодаря чему вы сможете легко в нем разобраться. Но я настоятельно рекомендую делать все самостоятельно. Так вы лучше и быстрее усвоите то, о чем говорилось в этом уроке

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

delphischool.3dn.ru

Книга "Основы программирования в Delphi 7"

Добавить
  • Читаю
  • Хочу прочитать
  • Прочитал

Жанр: Учебная литература

ISBN: 978-5-9775-0310-5

Год издания: 2009

Серия: Самоучитель (BHV)

Издательство: БХВ-Петербург

Фрагмент книги

Оцените книгу

Скачать книгу

451 скачивание

Читать онлайн

О книге "Основы программирования в Delphi 7"

Книга является руководством по программированию в среде Delphi 7. Описывается весь процесс разработки программы: от создания диалогового окна до организации справочной системы и создания установочного компакт-диска. Материал включает ряд тем, которые, как правило, остаются за рамками книг, адресованных начинающим – обработка символьной информации, использование динамических структур, работа с файлами. Рассматриваются вопросы программирования графики, мультимедиа и работа с базами данных. Приведено описание процесса создания справочной системы при помощи программы Microsoft HTML Help Workshop, установочного компакт-диска в InstallShield Express. Книга отличается доступностью изложения, большим количеством наглядных примеров. Во втором издании обновлены примеры и описана работа с базами данных Access на основе ADO. Для начинающих программистов. (Компат-диск прилагается только к печатному изданию.)

На нашем сайте вы можете скачать книгу "Основы программирования в Delphi 7" Культин Никита Борисович бесплатно и без регистрации в формате fb2, rtf, epub, pdf, txt, читать книгу онлайн или купить книгу в интернет-магазине.

Мнение читателей

Мой первый учебник по Delphi =)На собственном опыте убедился что синтаксис языка Pascal совпадает с языком Delphi + добавляется очень много визуализации и сопроводительного кода к ней

4/5iovomod

Отзывы читателей

Подборки книг

Похожие книги

Другие книги автора

Информация обновлена:

avidreaders.ru

Язык программирования Delphi. Структура кода Delphi. Часть 1 - Основы программирования на Delphi - Основы Delphi

Язык программирования Delphi достаточно прост в изучении, но при этом этот язык программирования очень эффективен и достаточно мощный. Первое, с чем стоит ознакомиться при изучении Делфи — это комментарии, так как в последующем, именно с помощью комментариев будут описываться и разъясняться приведенные примеры кода Делфи.
Комментарии — это любой текст, который абсолютно никак не влияет на код программы. Этот текст никогда не компилируется и не вставляется в исполняемый файл. Комментарии используются только для пояснения кода. Существует несколько способов оформления комментариев:

1. Все, что идет после двойного слеша, воспринимается как комментарий. Здесь следует отметить, что таким способом можно оформить только одну строку. Таким образом, все что написано до двойного слеша воспринимается как код программы, а все что после – как комментарий к коду. Например: // комментарий;

2. Все, что заключено в фигурные кавычки является комментарием. Например: { текст комментария }. Здесь следует отметить, что таким способом можно оформить как комментарий несколько строк.

3. Все что заключено в фигурные скобки со звездочкой также воспринимается как комментарий. Например: (*текст комментария*)

Давайте теперь рассмотрим на примере оформление комментария к коду Delphi

Листинг. Пример оформления комментария в Delphi.

Код

Это не комментарий
// А это уже комментарий к коду программы
Это уже не комментарий
Это не комментарий // а вот это уже комментарий
{Это комментарий
И это комментарий
И вновь комментарий
Все это комментарий}
(*Текст комментария
И это текст комментария
Это тоже комментарий*)

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

Итак, давайте посмотрим сам код программы создаваемой в Делфи. Для этого, либо создаем новый проект (как это делать описывалось в предыдущих статьях), либо открываем ранее созданный нами проект “Hello Delphi”.

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

Давайте теперь подробнее посмотрим, что же там написано и что означает этот код.

Листинг. Шаблон кода сгенерированный Delphi

Код

unit Unit1; // это имя модуля
// начало объявления интерфейсов
interface
uses // после этого слова перечисляются подключенные модули
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;
Type // после этого слова идет объявление типов
  TForm1 = class(TForm)
// здесь идет описание компонентов и событий
Private // после этого слова можно описывать закрытые данные объекта
    { Privatedeclarations } // это подсказка которую сгенерировал сам Delphi
{Здесь можно описывать переменные и методы, доступные только для объекта TForml}
public // После этого слова можно описывать открытые данные объекта
    { Publicdeclarations }это подсказка которую сгенерировал сам Delphi
{Здесь можно описывать переменные и методы, доступные из любого другого модуля}
end;
var // здесь объявляются глобальные переменные
  Form1: TForm1; //Это описана переменная Form1 типа объекта TForm1
// начало реализации
implementation
{$R *.dfm} //Подключение .dfm файла (это файл с данными о визуальных объектах)
end. // Если после end стоит точка, значит это конец модуля

Как вы видите, почти все строчи кода заканчиваются точкой с запятой (“;”). Этот знак означает конец оператора. Точка с запятой ставится только после операторов и никогда не ставится после ключевых слов, таких как: uses, type, begin, implementation, private, public и т. д. Эти ключевые слова в основном выделяются жирным шрифтом. В самом конце кода мы видим, что после слова end стоит точка. Это означает окончание модуля.

Понятное дело, что пока нам ничего не понятно в этом коде. Но приступив к практике программирования и начав писать собственный код, мы все подробно разберем и со временем разберемся что к чему и для чего.

delphischool.3dn.ru

Работа с Excel в Delphi. Основы основ. — Delphi в Internet

Видимо любители экономить килобайты оперативной памяти могут меня закидать помидорами или ещё чем по-хуже, но все-таки я скажу, что интеграция приложений (мегабайты оперативы) — это большой плюс нынешней разработки приложений.
Как ни крути, а время DOS и килобайтов оперативной памяти прошло. Вряд ли кто-то всерьез сейчас задумывается над тем куда это с винчестера пропал мегабайт? Да и использование в своих приложениях функциональности программ, которых ты не писал, но которые выполняют что-то лучше — это всё-таки больший прогресс, нежели корпеть год-два над программой, а потом узнать, что время-то прошло.

План статьи:

  1. Как проверить установлен ли Excel на компьютере пользователя?
  2. Определяем запущен ли Excel
  3. Как запустить Excel?
  4. Создаем пустую рабочую книгу Excel
  5. Сохраняем рабочую книгу и закрываем Excel

Итак, цель сегодняшней статьи — поделиться с Вами опытом работы с Microsoft Excel в приложениях, написанных на Delphi.
Вспомнился сейчас один случай. Когда я только начинал работать по своей специальности, пригласили меня написать программу-расчётник для экологов нашего нефтезавода. В принципе ничего серьёзного — программа считает выброс от нагревательной печи и выдает табличку результатов, которую необходимо распечатать и уложить в толстую папку с отчётами. Естественно, что в области разработки подобных приложения я далеко не пионер, поэтому дали взглянуть на аналог будущей программы, который работал ещё под DOS и печатались отчёты на дико скрипящем матричном принтере с 12-ю иголками. Ну посмотрел, элементарная таблица, расчёт немного запутан, но жить можно — начал по-тихоньку писать. И попалась мне тогда на глаза статейка про работу с Excel в Delphi. Вот я и решил попробовать выдавать отчёт не только на форму приложения, а ещё и скидывать весь ход расчёта с формулами и прочим делом в Excel…Надо сказать более сильно детской радости начальника отдела я не видел до сих пор :). Люди, всю жизнь проработавшие в DOS увидели как тот же самый расчёт может выглядеть в современных условиях. Вот теперь при определении технических заданий на каждую новую программу, обязательно присутствует пункт, гласящий, что программа должна передавать данные либо в MS Word либо в MS Excel.Соответственно и цена на разработку возрастает, иногда значительно.

Отсюда можно сделать простой и однозначный вывод — заказчики готовы пожертвовать лишними деньгами только для того, чтобы всё в программе было красиво. Excel может дать вашему приложению ту самую красоту и удобство.

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

1. Как проверить установлен ли Excel на компьютере пользователя?

Создаем новый модуль (unit) и подключаем в uses следующие модули:

uses ComObj, ActiveX, Variants, Windows, Messages, SysUtils, Classes;

теперь объявляем глобальную переменную:

Одну константу (для удобства):

const ExcelApp = 'Excel.Application';

И пишем простенькую функцию:

function CheckExcelInstall:boolean;
var
  ClassID: TCLSID;
  Rez : HRESULT;
begin
// Ищем CLSID OLE-объекта
  Rez := CLSIDFromProgID(PWideChar(WideString(ExcelApp)), ClassID);
  if Rez = S_OK then  // Объект найден
    Result := true
  else
    Result := false;
end;

Или ещё короче:

function CheckExcelInstall: boolean;
var
  ClassID: TCLSID;
begin
  Result:=CLSIDFromProgID(PWideChar(WideString(ExcelApp)), ClassID) = S_OK;
end;

Если функция CLSIDFromProgID находит CLSID OLE-объекта, то, соответственно — Excel установлен.

Но проверка на наличие установленного Excel — это только часть необходимых операций перед началом работы. Другой немаловажной проверкой является проверка на наличие уже запущенного экземпляра Excel. Если этого не делать, то может случиться такая нехорошая ситуация, когда в системе будет зарегистрировано …дцать процессов Excel и все оперативная память волшебным образом утекает «в трубу» — за такое могут и по ушам надавать. Но мы-то свои уши бережем. Пишем вторую функцию проверки.

2. Определяем запущен ли Excel

function CheckExcelRun: boolean;
begin
  try
    MyExcel:=GetActiveOleObject(ExcelApp);
    Result:=True;
  except
    Result:=false;
  end;
end;

Думаю тут лишних объяснений не потребуется? Всё предельно просто — если есть активный процесс Excel, то мы просто получаем на него ссылку и можем использовать Excel для своих корыстных целей. Главное — не забыть проверить — может кто-то этот самый Excel забыл закрыть, но это другой момент. Будем считать, что Excel в нашем полном распоряжении.

3. Как запустить Excel?

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

function RunExcel(DisableAlerts:boolean=true; Visible: boolean=false): boolean;
begin
  try
{проверяем установлен ли Excel}
    if CheckExcelInstall then
      begin
        MyExcel:=CreateOleObject(ExcelApp);
//показывать/не показывать системные сообщения Excel (лучше не показывать)
        MyExcel.Application.EnableEvents:=DisableAlerts;
        MyExcel.Visible:=Visible;
        Result:=true;
      end
    else
      begin
        MessageBox(0,'Приложение MS Excel не установлено на этом компьютере','Ошибка',MB_OK+MB_ICONERROR);
        Result:=false;
      end;
  except
    Result:=false;
  end;
end;

Здесь мы в начале проверяем, установлен ли Excel в принципе и, если он все же установлен, запускам. При этом мы можем сразу показать окно Excel пользователю — для этого необходимо выставить параметр Visible в значение True.

Также рекомендую всегда отключать системные сообщения Excel, иначе, когда программа начнет говорить голосом Excel — пользователь может занервничать.

Переходим к следующему этапу работы — созданию рабочей книги.

4. Создаем пустую рабочую книгу Excel

Для создания пустой рабочей книги я обычно использую вот такую функцию:

function AddWorkBook(AutoRun:boolean=true):boolean;
begin
  if CheckExcelRun then
    begin
      MyExcel.WorkBooks.Add;
      Result:=true;
    end
  else
   if AutoRun then
     begin
       RunExcel;
       MyExcel.WorkBooks.Add;
       Result:=true;
     end
   else
     Result:=false;
end;

Второй вариант (более лаконичный):

function AddWorkBook(AutoRun: boolean = true): boolean;
begin
  Result := CheckExcelRun;
  if (not Result) and (AutoRun) then
  begin
    RunExcel;
    Result := CheckExcelRun;
  end;
  if Result then
    MyExcel.WorkBooks.Add;
end;

То есть сразу проверяю запущен ли Excel и, если он не запущен, то либо запускаю и добавляю книгу, либо просто выхожу — всё зависит от ситуации.

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

function GetAllWorkBooks:TStringList;
var i:integer;
begin
  try
    Result:=TStringList.Create;
    for i:=1 to MyExcel.WorkBooks.Count do
      Result.Add(MyExcel.WorkBooks.Item[i].FullName)
  except
    MessageBox(0,'Ошибка перечисления открытых книг','Ошибка',MB_OK+MB_ICONERROR);
  end;
end;

Функция возвращает список TStringList всех рабочих книг Excel открытых в данный момент. Обратите внимание, что в отличие от Delphi Excel присваивает первой книге индекс 1, а не 0 как это обычно делается в Delphi при работе, например, с теми же индексами в ComboBox’ах.

Ну, и наконец, после того, как поработали с книгами — их требуется закрыть. Точнее сохранить, а потом уж закрыть.

5. Сохраняем рабочую книгу и закрываем Excel

Для того, чтобы сохранить рабочую книгу, я использовал такую функцию:

function SaveWorkBook(FileName:TFileName; WBIndex:integer):boolean;
begin
  try
    MyExcel.WorkBooks.Item[WBIndex].SaveAs(FileName);
    if MyExcel.WorkBooks.Item[WBIndex].Saved then
      Result:=true
    else
      Result:=false;
  except
    Result:=false;
  end;
end;

Если у Вас открыто 10 книг — просто вызываете функцию 10 раз, меняя значение параметра WBIndex и имени файла и дело в шляпе.

А закрывается Excel вот так:

function StopExcel:boolean;
begin
  try
    if MyExcel.Visible then MyExcel.Visible:=false;
    MyExcel.Quit;
    MyExcel:=Unassigned;
    Result:=True;
  except
    Result:=false;
  end;
end;

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


Книжная полка

Автор: Юрий Магда

Название:Разработка приложений Microsoft Office 2007 в Delphi

Описание Описаны общие подходы к программированию приложений MS Office. Даны программные методы реализации функций MS Excel, MS Word, MS Access и MS Outlook в среде Delphi.

www.webdelphi.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *