Форум программистов, компьютерный форум, киберфорум
krapotkin
Войти
Регистрация
Восстановить пароль
Блог. Двадцать пять лет Делфи-практики

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

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

Начав с Делфи-2 двадцать пять лет назад, я прошел все версии, испробовал массу технологий, включая работу с БД, с графикой DirectX, связью с серверами и интернетом, разработку на Андроид и IOS, и многое, многое другое.
________________________________________ ________________________________________ ____
P.S. все, о чем здесь написано, всего лишь измышления из головы.
совпадения с реальными людьми и фактами случайны.
Старый
Создание Single Page Application на фреймах
Запись от krapotkin размещена 16.11.2025 в 20:20
Показов 12086 Комментарии 3
Метки delphi, spa

Статья исключительно для начинающих. Подходы оригинальностью не блещут.

В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну главную форму, на которой меняем "начинку".
Разница с "классическим"...
Аватар для krapotkin
Старый
Рейтинг: 5.00. Голосов: 1.
Реализуем вызовы HTTP API
Запись от krapotkin размещена 01.10.2023 в 12:54
Показов 3971 Комментарии 0
Метки delphi, http, rest api, web api

Мотивация

В настоящее время на смену родному для делфи клиент-серверному приложению, подключенному намертво к базе данных,
пришли те, что получают данные через HTTP запросы к какому-то API.
В современных версиях делфи есть библиотека REST API, но к ней иногда возникают вопросики...
Аватар для krapotkin
Старый
How To Store Cross Platform App Settings In JSON
Запись от krapotkin размещена 19.12.2022 в 11:33
Показов 1870 Комментарии 0
Метки delphi, json

написал вот статейку
https://blogs.embarcadero.com/... gs-in-json
Аватар для krapotkin
Старый
Про "таски"
Запись от krapotkin размещена 03.03.2021 в 08:37
Показов 4666 Комментарии 0
Метки delphi

Про TThread стало понятнее. Давайте про TTask поговорим.

Обычно все начинают с чтения этого блога. Там все написано хорошо, но иногда остаются вопросы.

Про таски надо размышлять так:
видали в полицейских боевиках брифинг перед операцией?
вот это то же самое
мы проводим брифинг, раздаем каждому...
Аватар для krapotkin
Старый
Рейтинг: 5.00. Голосов: 1.
Учет ТМЦ
Запись от krapotkin размещена 13.06.2019 в 09:44
Показов 4945 Комментарии 4
Метки delphi

Очень часто встречаются темы "как перенести товары из одной таблицы в другую", "как при продаже обновить остатки", "как перед продажей проверить количество на складе"
И все эти темы относятся к классическому XYZ.
Не нужно так делать.

Золотой пули конечно нет, но общий подход при любой работе с ценностями - товарами, деньгами, информацией - таков:
ничего не стоит редактировать и удалять, нужно вести регистрацию событий.
...
Аватар для krapotkin
Старый
Рейтинг: 5.00. Голосов: 2.
Резюмешечка)
Запись от krapotkin размещена 16.04.2019 в 10:07
Показов 3898 Комментарии 7
Метки delphi

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

Первая моя работа - на делфи 2 - я писал распознавание диаграммных лент.
В то время, да и сейчас, работа со сканером - это нифига не общий момент. Пришлось...
Аватар для krapotkin
Старый
Рейтинг: 4.00. Голосов: 1.
Что не так с Form1.Caption
Запись от krapotkin размещена 18.09.2018 в 22:19
Показов 5241 Комментарии 3
Метки delphi

Очень распространенная ошибка новичков это обращение в методах класса к переменным этого же класса
Почему это распространено - да потому что Delphi с доисторических времен при создании формы создает не только класс, ее описывающий, но и переменную этого класса, и даже автоматически создает объект и хранит его в этой переменной
Delphi
1
2
3
4
5
6
TForm1=class(TForm)
...
end;
 
var
  Form1: TForm1;
и новичкам кажется что это такое специальное...
Аватар для krapotkin
Старый
Рейтинг: 5.00. Голосов: 1.
Delphi Community Edition
Запись от krapotkin размещена 29.07.2018 в 16:48
Показов 17242 Комментарии 12
Метки delphi

Свершилось чудо.
Июль 2018 !
Делфи получила бесплатную версию. Community Edition
Про Starter не напоминайте. Она урезана по самое не хочу.

Это практически полная версия Delphi Professional. Не забываем, что недавно в Professional поместили еще и Mobile Pack!!!
Можно писать для Win32, Win64, Andriod....
Аватар для krapotkin
Старый
Индикатор загрузки
Запись от krapotkin размещена 24.06.2018 в 09:08
Показов 5081 Комментарии 4
Метки delphi

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

При проектировании интерфейса нужно запомнить одно
Сама операция должна быть вынесена в отдельный поток. А индикатор должен крутиться в главном.

Общая идея
1. Стартовать индикатор...
Аватар для krapotkin
Старый
Использование Firebird вместо ADO
Запись от krapotkin размещена 12.06.2018 в 09:16
Показов 3856 Комментарии 3
Метки db, delphi, firebird

Итак, после статьи Что не так с ADO нужно предложить альтернативу страдающим школьникам на древней как фекалии мамонта D7.

Начиная с Delphi 7 есть прекрасный альтернативный вариант - бесплатная (а не пиратский Access !) БД Firebird и компоненты IBX
с чудной документацией https://www.ibase.ru/ibx/
Для управления этой БД так же лицензионно-халявно идет IBExpert - прекрасное средство управления БД Firebird/Interbase
http://www.ibexpert.com/rus/ibe_sfx.exe
...
Аватар для krapotkin
Старый
Рейтинг: 5.00. Голосов: 1.
Что не так с ADO
Запись от krapotkin размещена 12.06.2018 в 08:54
Показов 3921 Комментарии 5
Метки db, delphi

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

Как правильно подключаться к БД
Ваша программа и БД только во время разработки будет лежать в определенном вами месте. Как только...
Аватар для krapotkin
Старый
Пишем тест. Уровень Beginner. Урок 1
Запись от krapotkin размещена 19.05.2018 в 18:28
Показов 5577 Комментарии 20
Метки delphi

Давайте еще раз. Напишем очередной тест

Раз пошла такая пьянка, делаем полный разбор, начиная с проектирования
Что нам нужно знать о программе
Хранение данных.
Первое что надо обдумать. Сейчас думать не будем вообще, потому что уровень Beginner.
Пусть у нас есть текстовый файл, который содержит две строки в начале
первая...
Аватар для krapotkin
Старый
Что нужно знать о датасетах и DB-компонентах
Запись от krapotkin размещена 16.05.2018 в 09:10
Показов 6730 Комментарии 18
Метки db, delphi

Ахтунг! Аттеншн! Внимание!
1. Все DB-компоненты ОТОБРАЖАЮТ текущую запись и поле датасета, к которому они подключены. НЕ ХРАНЯТ!!!
Они являются элементами ИНТЕРФЕЙСА - т.е. штуками для работы пользователя! Не программиста!!!
Нет смысла брать текст из DBEdit, его надо брать из поля датасета, к которому этот DBEdit подключен.
И наоборот, писать туда значение - такая же...
Аватар для krapotkin
Старый
Рейтинг: 5.00. Голосов: 2.
SQL запросы и параметры
Запись от krapotkin размещена 11.05.2018 в 10:37
Показов 27569 Комментарии 0

ВВЕДЕНИЕ. ЛИКБЕЗ
Как всегда, в тот момент, когда несколько подзадолбало отвечать на одни и те же вопросы, садишься и пишешь статью, чтобы потом не разжевывать самые азы, а эффектно пулять ссылкой)

Итак. Работа с БД - это то, из-за чего Делфи, как минимум, на десятилетие, стала...
Аватар для krapotkin
Старый
Рейтинг: 5.00. Голосов: 2.
ProcessMessages
Запись от krapotkin размещена 30.08.2017 в 06:54
Показов 13661 Комментарии 9
Метки delphi

Как только я вижу в чьем-то коде Application.ProcessMessages, я сразу вспоминаю -
несчастные случаи на стройке

Поясню:
Вся программа на делфи выглядит примерно так
Delphi
1
2
3
Application.Initialize;
Application.CreateForm(Form1,TForm1);
Application.Run;
вот если посмотреть код в Application.Run, мы увидим (весьма примерно)
Delphi
1
2
while not Application.Terminated do
  Application.ProcessMessages;
итого. пока приложению...
Аватар для krapotkin
Старый
Рейтинг: 5.00. Голосов: 2.
Процесс инициализации программы, с настройками и подключением к БД
Запись от krapotkin размещена 20.08.2017 в 20:01
Показов 8471 Комментарии 2
Метки db, delphi

Пока не началось
Все шаги по разбору на старте приложения я стараюсь выполнять в переопределенном конструкторе главной формы.
Это не догма, просто так удобнее.
Мы можем делать это и в событии OnCreate, но тогда если мы решили выйти из приложения, то сначала все равно создастся и криво покажется форма и после этого сразу мигнет и пойдет на выход.
Чтобы исключить эти спецэффекты пишем в классе формы переопределение конструктора
Delphi
1
2
TMainForm=class(TForm)
...
...
Аватар для krapotkin
Старый
Программа и ее настройки
Запись от krapotkin размещена 20.08.2017 в 17:55
Показов 9453 Комментарии 5
Метки delphi

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

Ответ очевиден. Думать об этом стоит ДО создания самой лучшей программы.

Итак, для хранения настроек программы нам понадобятся
1. Класс
Delphi
1
TMySettings = class ... end;
2. Класс или запись
Delphi
1
2
TDBSettings = record
  server:string;
...
Аватар для krapotkin
Старый
Рейтинг: 3.67. Голосов: 6.
Про потоки
Запись от krapotkin размещена 13.08.2017 в 10:03
Показов 32966 Комментарии 59
Метки delphi

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

Сама концепция потоков проста. Вы можете мыслить их как корабль, отправляющийся...
Аватар для krapotkin
Старый
Рейтинг: 1.00. Голосов: 1.
Как правильно сделать форму логина
Запись от krapotkin размещена 13.08.2017 в 08:46
Показов 15180 Комментарии 30
Метки delphi

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

Итак, сначала должен быть сценарий. Вот он.
Стартует...
Аватар для krapotkin
Старый
Рейтинг: 3.67. Голосов: 3.
Создание и использование форм
Запись от krapotkin размещена 13.08.2017 в 08:09
Показов 15089 Комментарии 23
Метки delphi

Формы это то что придумано для взаимодействия вашей модели данных с пользователем.
Совсем НЕ для хранения глобальных переменных, настроек и прочей требухи.
Они должны создаваться в тот момент, когда понадобились, и уничтожаться после использования.
Поэтому первое,...
Аватар для krapotkin
Старый
Рейтинг: 2.83. Голосов: 6.
Как писать игры
Запись от krapotkin размещена 07.06.2017 в 12:27
Показов 7154 Комментарии 2
Метки delphi

Без сомнения, первое, что нужно делать при разработке новой игры - это, конечно, рисовать заставку.
Но второе - вы, вероятно, удивитесь, но это проектирование, а не попытка накидать компонентов на форму и бегом на форум писать вопрос "У меня не работает, что делать".

Вы должны создать МОДЕЛЬ ДАННЫХ - придумать все объекты, которые будут принимать участие в вашей игре, и перечислить, хотя бы...
Аватар для krapotkin
Новые блоги и статьи
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru