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

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

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

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

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

В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну главную форму, на которой меняем "начинку".
Разница с "классическим"...
Аватар для krapotkin
Старый
Рейтинг: 5.00. Голосов: 1.
Реализуем вызовы HTTP API
Запись от krapotkin размещена 01.10.2023 в 12:54
Показов 3240 Комментарии 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
Показов 1578 Комментарии 0
Метки delphi, json

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

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

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

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

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

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

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

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

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

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

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

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

Общая идея
1. Стартовать индикатор...
Аватар для krapotkin
Старый
Использование Firebird вместо ADO
Запись от krapotkin размещена 12.06.2018 в 09:16
Показов 3413 Комментарии 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
Показов 3615 Комментарии 5
Метки db, delphi

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вы должны создать МОДЕЛЬ ДАННЫХ - придумать все объекты, которые будут принимать участие в вашей игре, и перечислить, хотя бы...
Аватар для krapotkin
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru