Help — коллекция статей, исходников, книг, ответов на вопросы программирования на языке программирования Delphi и Pascal.
— это среда быстрой разработки, в которой в качестве языка программирования используется язык Delphi. Язык Delphi — строго типизированный объектно-ориентированный язык, в основе которого лежит хорошо знакомый программистам Object Pascal.
На сайте Delphi-Help вы можете скачать книги по Delphi, для дальнейшего изучения этого удивительного языка программирования. Также в файловом архиве доступны компоненты, исходники, программы для облегчения разработки своих собственных приложений. Все материалы и файлы на сайте бесплатны.
Это необходимо знать каждому программисту:
- Работа с ADO в Delphi
- Цикл с постусловием (REPEAT-UNTIL)
- Цикл с параметром (FOR)
- Цикл с предусловием (WHILE-DO)
- Циклические алгоритмы. Цикл с предусловием.
- Хранимые процедуры
- Создание и изменение базы данных в InterBase/Firebird
- Использование TWebBrowser (статья)
- Одномерные массивы. Формирование массива и вывод его элементов
- Руководство по TDbf
- Копирование и восстановление базы данных в InterBase / Firebird
- Алгоритм 3. Сортировка шейкером
- Работа с BLOB-полями в клиентских приложениях InterBase и Firebird на основе компонентов FIBPlus
- SQL-запросы в Delphi
- Учетные записи пользователя в InterBase/Firebird
- Ограничения базы данных
- TADOConnection
- Индексы
- Компонент Chart
- Типизированные файлы
- Список ошибок BDE
- QuickReport руководство
- Алгоритм 2. Пузырьковая сортировка
- Задача 579 на Pascal — Шифр Цезаря
- FIBPlus: Обработка ошибок базы данных
- Нетипизированные файлы
- Решение уравнения методом хорд, методом касательных (метод Ньютона), методом половинного деления, методом простых итераций
- Дипломная работа: Разработка базы данных для информатизации деятельности предприятия малого бизнеса Delphi
- Количество вхождений подстроки в строку
- Использование текстовых файлов для импорта и экспорта
- Сумма прописью (хорошая функция)
- Создание собственной кнопки в Delphi
- Firebird взаимодействие с NULL
- Как посчитать факториал?
- Как узнать номер недели данного дня в году?
- Devrace FIBPlus: Оптимизация сетевого трафика в приложениях на Delphi и C++ Builder
- Счетчик посещений на Delphi
- Cпроектировать и написать программу «Интерпретатор» на Pascal
- Перевод чисел из одной системы исчисления в другую
- Rave Reports-руководство разработчика
Общение
Авторизация
Логин
Пароль
Запомнить меня
- Забыли пароль?
- Забыли логин?
- Типизированные файлы
Типизированные файлы Тип файлов, для которого нет поддержки в OS…
- Задача 579 на Pascal — Шифр Цезаря
Задача 579 на Pascal — Шифр Цезаря Шифр Цезаря. Этот…
- Нетипизированные файлы
Нетипизированные файлы Третий тип файлов Паскаля, это нетипизированные файлы, этот…
- Использование текстовых файлов для импорта и экспорта
Использование текстовых файлов для импорта и экспорта Текстовые файлы являются…
- Как изменить дату создания файла?
Как изменить дату создания файла? function SetFileDateTime( const FileName: string;…
- Как изменить атрибуты файла?
Как изменить атрибуты файла? r — ReadOnly h — Hidden…
Счетчики
Файловый архив — популярное
FastReport full source v5. 2.12 | 25996 |
Базы данных в Delphi | 22078 |
Практикум по Delphi для решения прикладных задач | 19095 |
Delphi. Учимся на примерах | 16267 |
Delphi 7 для профессионалов | 14424 |
Программирование в Delphi 7 | 7107 |
Delphi. Профессиональное программирование | 6690 |
Основы Delphi. Профессиональный подход | 5219 |
Assembler. Учебный курс | 4084 |
Графика в проектах Delphi | 4082 |
Розница ИП v1.3 | 2769 |
Delphi 7 | 2509 |
DevExpress VCL Component | 2454 |
TXLSFile 4.0 | 2078 |
AlphaControls package | 2034 |
Последние статьи
- Рисуем на рабочем столе
Вы можете использовать поверхность рабочего стола для вывода любой графики. Этот способ может понадобится для написания различных напоминалок, показ праздников. Вы можете поселить на рабочем столе забавного персонажа из комикса…
- Работа с потоками в Delphi
Нередко встречал на форумах мнения, что потоки не нужны вообще, любую программу можно написать так, что она будет замечательно работать и без них. Конечно, если не делать ничего серьёзней…
- Перестановка чисел без третей переменой
Перестановка чисел без третей переменной. В данной статье рассмотрим способ, как поменять местами значения двух переменных без использования третей. Для этого нам понадобится, скажем, два edit и одна кнопка. Разместите…
Последние комментарии
Delphi-программирование: блог Delphi-программиста
Andrey Опубликовано: 12 Сентябрь 2016
Приветствую всех читателей блога. Совсем недавно делал мини-программу по получению информации из фтп-сервера, то есть. Другими словами простенький фтп-клиент. Я не буду здесь рассказывать, как сделать полноценный фтп-клиент, я расскажу, как использовать компонент TListView для отображения информации фтп-сервера. Причем информация будет отображаться с иконками, ассоциируемые в Вашей системе Windows.
Скажу сразу, тот пример, который будем рассматривать мы в данной статье, основан на компоненте TidFTP из вкладки Indy Clients, но смысл остается тем же, если Вы будете использовать компонент, например библиотеки Synapse.
На форме у меня компонент TListView, в свойстве ViewStyle у меня выставлен vsReport, либо же можно vsIcon. У меня рабочий проект выглядит следующим образом (свойство ViewStyle=vsReport):
ФТП-клиент Delphi
Читать полностью »
Метки: ftp, idFTP, Indy, Indy Clients, ListView, TListView, иконки, ФТП
Другое, Мои работы Комментарии (0) »
Andrey Опубликовано: 26 Январь 2016
Приветствую всех. Продолжу я Вам рассказывать про некоторые задачи, которые было мне интересно рассматривать и соответственно как-то реализовывать.
Хочу рассказать о том, как мне пришлось организовать прием и отправку писем на своем сервере, на предприятии. Я уже рассказывал, что у нас на предприятии установлен свой собственный Microsoft Exchange. Весь прием и отправку я организовал через него, но, я поставил промежуточный собственный почтовый сервер, который выполнял всю грязную работу: обработка ошибок при отправке почты, при приеме почты, автоматическая отправка писем в заданное время, проверка почты в заданной время и так далее.
Данная статья будет разбита на серию, наверное, из трех. В сегодняшней статье я хотел бы рассказать, как установить и настроить промежуточный свой собственный почтовый сервер, который очень удобный, по моему мнению. Вторая статья будет содержать информацию о том, как читать и получать письма, а третья статья будет посвящена отправке писем.
Если честно, почему я пошел на такую схему? Не знаю, мне показалось это более удобным, чем постоянно администраторов просить посмотреть, почему сервер мои подключения отклоняет частые, либо почему сервер почтовый недоступен. Использую промежуточный сервер, я письмо отправил, если сервер Microsoft Exchange не доступен, ничего страшного, письмо будет лежать в папке для отправки, как только сервер оклемается, сразу же произойдет его доставка. То же самое касается и приема писем. Я ни о чем не беспокоюсь. Мне достаточно лишь организовать прием и отправку писем в автоматическом режиме.
Читать полностью »
Метки: Courier Mail Server, idMessage, Mail Server, SMTP
Сеть и интернет Комментарии (0) »
Andrey Опубликовано: 12 Январь 2016
Доброго времени суток дорогие читатели блога. Хочу поздравить Вас с прошедшими праздниками, пожелать в Новом Году всего самого наилучшего, выполнению всех желаний, чтобы у Вас было все, как Вы задумали. Теперь давайте вернемся непосредственно к самой статье.
Давайте продолжим нашу тему по работе с checkboxes в TDBGrid с использованием вычисляемого поля (предлагаю вспомнить первую часть статьи). В данной статье мы рассмотрим, как можно вообще работать с отмеченными записями подобным образом. То есть, когда у нас значение поля checkboxes хранилось в поле таблицы (True или False, 1 или 0), можно было циклом или запросом выбрать нужные нам записи, здесь ситуация почти похожая.
В данной статье мы рассмотрим следующие нюансы:
- Поиск нужного значения (отмечаем запись checkboxes)
- Удаление отмеченных записей
- Выборка отмеченных записей
- Отметка всех записей отображенных в TDBGrid
- Снятие отметки всех записей отображенных в TDBGrid
На самом деле, подобным образом с отмеченными записями можно производить любые операции. Это связано с тем, что идентификатор этих записей у нас хранятся в универсальном списке TList. А если у нас есть идентификатор записи, то можно его и удалить с таблицы и найти и так далее.
Давайте начнем с того, что нам необходимо поместить идентификаторы отмеченных записей в сам список TList (у меня переменная списка – ListSelect). Тут необходимо определиться, по какому событию мы будем добавлять в наш список идентификаторы записей. Обычно это делается, когда пользователь нажимает на сам checkboxes, но у меня еще сделано таким образом, что выделять (отмечать) запись можно и клавишей пробел (Space) с переходом на последующую строку. Поэтому, отмечать записи можно по любому событию, как будет удобно.
Читать полностью »
Метки: checkboxes, DBGrid, dbgrideh, ehlib
Базы данных Комментарии (5) »
Andrey Опубликовано: 28 Декабрь 2015
Приветствую читателей блога. Сегодняшняя статья будет посвящена работе с DBF-файлами, без использования ADO, BDE и компонентов доступа к данным. Я уже рассказывал про работу с DBF-файлами, это описано в этой статье.
Многим не нравится работа с ADO, BDE, так как для работы программы, которая была написана с использованием данной технологии, необходимо наличие установленных драйверов поставщика данных, BDE, dll-библиотеки и так далее.
В данной статье я расскажу как можно быстро и очень просто создавать DBF-таблицы, заполнять их данными и производить другие манипуляции с данными. Все это будет осуществляться при помощи бесплатного компонента TDBF. Я про него тоже мельком рассказывал уже, но всего лишь пару слов. Но очень часто им пользуюсь, когда необходимо осуществить доступ к DBF-таблицам.
Поначалу у меня были проблемы с использованием данного компонента, в частности с кодировками таблицами, но в итоге все разрешилось. Теперь он в моей коллекции, тем более является совершенно бесплатным. Скачать сам компонент можно по этой ссылке, там же есть и пример работы, а также инструкция с описанием методов, свойств компонента. Я Вам расскажу быстро самое основное, то есть, как открыть таблицу, как добавить данные или как создать новую DBF-таблицу.
Читать полностью »
Метки: Ado, BDE, DBF, TDBF
Базы данных Комментарии (3) »
Andrey Опубликовано: 15 Декабрь 2015
Доброго времени суток всем. В этой статье я хотел бы поговорить о том, как можно сделать checkboxes в ячейках для любой базы данных в нужном для Вас гриде (Grid). Я уже писал подобную статью и рассказывал, как в ячейках грида отображать checkboxes, но здесь речь пойдет совсем о другом способе, на мой взгляд, более правильным и лучшим.
Способ, что я рассказывал в прошлой статье тоже рабочий, но может получиться такая ситуация, когда одновременно могут работать с одним набором данных несколько пользователей, отмечая галочками нужные записи. При обновлении данных каждый пользователь увидит не только отмеченные свои записи, но и еще другого пользователя. В данной статье речь пойдет о таком отображении checkboxes и использовании их, когда пользователи не будут видеть отмеченные записи других пользователей, соответственно и не будут друг другу мешать при обновлении данных.
Сегодня я расскажу только Вам, как отобразить checkboxes в ячейках, а в другой статье уже речь пойдет о том, как перемещаться по данному набору данных, отмечать все ячейки, снимать выделение всех ячеек (checkboxes), работать только с отмеченными данным и так далее. Таким образом, данная статья будет состоять из двух частей.
Читать полностью »
Метки: checkboxes, DBGrid, dbgrideh, ehlib
Базы данных Комментарии (6) »
Страница 1 из 4112345…102030…»Последняя »
Delphi/ADO: Какие компоненты? TADODataSet и TADOCommand или TADOQuery?
спросил
Изменено 2 года, 4 месяца назад
Просмотрено 8к раз
Согласно http://www.delphigroups.info/2/3/181838.html (архив)
Предпочтительный подход с ADO компоненты должны использовать TADODataSet и ТАДОКоманда. TADOQuery (и TADOTable и TADOStoredProc) предназначены для совместимость.
Использовать TADODataSet для SQL, который возвращает наборы результатов и TADOCommand для SQL это не.
Я невежественный n00b, который собирается написать много кода ADO. Верно ли приведенное выше утверждение?
шт. Есть ли хорошая программа для Windows с открытым исходным кодом, которая позволит мне визуализировать и исследовать содержимое моих баз данных?
Какие компоненты следует использовать для чего-то, что возвращает/не возвращает результат?
- Делфи
- Адо
1
Это утверждение верно. TADODataset и TADOCommand являются прямыми интерфейсами к собственным объектам ADO и могут выполнять все задачи, выполняемые тремя другими, которые существуют для облегчения переноса приложения, написанного для BDE (Borland Database Engine), реализуя аналогичный интерфейс — они в конечном итоге вызывают первые два.
2
А я пойду полупротивоположно! 😉
В некоторых случаях TADOQuery прекрасно подходит для и заданий.
Если ваш запрос приведет к использованию данных TADOQuery.Acvite := True
,
Если вам нужно выполнить обновление\вставку\удаление, используйте TADOQuery.ExecSQL.
Например, вы можете написать запрос на UPDATE\INSERT и SELECT запись и сделать это в одном компоненте вместо двух.
DECLARE @ID int, @Mode int, @SomeValue varchar(20) УСТАНОВИТЬ @ID = :ID УСТАНОВИТЕ @Mode = :Mode УСТАНОВИТЬ @SomeValue = :SomeValue ЕСЛИ (@Mode = 1) //ВСТАВИТЬ НАЧИНАТЬ ВСТАВЬТЕ В dbo.YourTable(ID, SomeColumn) VALUES(@ID, @SomeValue) КОНЕЦ ЕЩЕ ЕСЛИ (@Mode = 2) // ОБНОВЛЕНИЕ НАЧИНАТЬ ОБНОВЛЕНИЕ dbo.YourTable SET SomeValue = @SomeValue WHERE ID = @ID КОНЕЦ ЕЩЕ ЕСЛИ (@Mode = 3) //УДАЛИТЬ НАЧИНАТЬ УДАЛИТЬ ИЗ dbo.YourTable, ГДЕ ID = @ID КОНЕЦ ЕЩЕ ЕСЛИ (@Mode = 4) //ВЫБОР НАЧИНАТЬ ЕСЛИ (@ID = -1) // ВЫБРАТЬ ВСЕ НАЧИНАТЬ ВЫБЕРИТЕ * ИЗ dbo. YourTable КОНЕЦ ЕЩЕ НАЧИНАТЬ ВЫБЕРИТЕ * ИЗ dbo.YourTable, ГДЕ ID = @ID КОНЕЦ КОНЕЦ
Просто пример, написанный сейчас. Надеюсь, вы уловили идею.
Какую базу данных вы используете. SqlBuddy — это IDE с открытым исходным кодом для изучения базы данных.
1
У вас есть 2 различных классификации здесь либо в зависимости от характера объекта SQL (TADOTable, TADOQuery и TADOStoredProc) , либо действия/результата (TADODataSet и TADOCommand) .
Исторический подход Delphi больше похож на первый, тогда как ADO по своей природе больше похож на второй.
Оба могут быть полезны в зависимости от того, что вы хотите сделать.
Я рекомендую вам прочитать справку Delphi по компонентам ADO.
Например, вы найдете полезные заметки, такие как:
«ADOdb.TADODataSet и SQLExpr.TSQLDataSet имеют свойство CommandType, которое позволяет указать, представляют ли они таблицу, запрос или хранимую процедуру. Имена свойств и методов наиболее похожи на наборы данных типа запроса, хотя TADODataSet позволяет указать индекс, подобный набор данных табличного типа».
Если вы уверены, что придерживается ADO и вам никогда не потребуется изменять и портировать на другие уровни данных, тогда выберите «маршрут ADO» с TADODataSet и TADOCommand .
С ним вы получите максимальную отдачу от ADO, и вам будет проще использовать документы и примеры MS.
4
Операторы SELECT
Для выдачи операторов DQL, которые возвращают набор данных (например, SELECT)
TADOQuery
qry.Sql.Text: = 'SELECT * FROM Users WHERE Name = :username'; qry.Parameters.ParamByName('имя пользователя').Value := 'ian'; запрос.Открыть;
Набор данных ТАДО
ds.CommandText := 'SELECT * FROM Users WHERE Name = :username'; ds. Parameters.ParamByName('имя пользователя').Value := 'ian'; дс.Открыть;
ТАДОКомманд
cmd.CommandText: = 'SELECT * FROM Users WHERE Name = :username'; cmd.Parameters.ParamByName('имя пользователя').Value := 'ian'; рс: _Recordset; rs := cmd.Execute;
ADOCommand вернет собственный IRecordset ADO. Вы можете использовать интерфейс
Recordset
напрямую (это не так сложно) или вы можете обернуть его в дружественный класс-оболочку Delphi:ds.Recordset := rs;
или
qry.Recordset := rs;
Операторы INSERT, UPDATE, DELETE
Для выполнения операторов DML, которые не возвращают набор данных (например, INSERT, UPDATE, DELETE)
TADOQuery
qry.Sql.Text: = 'УДАЛИТЬ ОТ пользователей, ГДЕ Имя =: имя пользователя'; qry.Parameters.ParamByName('имя пользователя').Value := 'ian'; qry.ExecuteOptions: = [eoExecuteNoRecords]; qry. ExecSql;
ТАДОКомманд
cmd.CommandText: = 'УДАЛИТЬ ОТ пользователей, ГДЕ Имя =: имя пользователя'; cmd.Parameters.ParamByName('имя пользователя').Value := 'ian'; cmd.ExecuteOptions: = [eoExecuteNoRecords]; cmd.Выполнить;
TADODataSet : Невозможно. TADODataSet выдаст исключение, если оператор не вернет набор данных
ds.CommandText := 'УДАЛИТЬ ОТ Пользователей, ГДЕ Имя = :имя пользователя'; ds.Parameters.ParamByName('имя пользователя').Value := 'ian'; ds.ExecuteOptions: = [eoExecuteNoRecords]; дс.Открыть; // <-- Исключение: "CommandText не возвращает результирующий набор"
Форма диаграммы
| Компонент | Выдать команду | Вернуть строки | |-------------|----------------|-------------| | набор данных ТАДО | Нет | Да | | ТАДОКоманда | Да | Да¹ | | ТАДОЗапрос | Да | Да | ¹ Интерфейс набора записей
Иерархия наследования
- TComponent
- TADOCommand (рядом с собственным доступом к ADO)
- TDataSet (базовая модель набора данных Delphi)
- TCustomADODataSet (предоставление ADO как DataSet)
- TADODataSet (не может выдавать DML)
- TADOQuery (может выдавать DML и DQL)
- Ткустомклиентдатасет (представление таблиц в памяти как набора данных)
- TBDEDataSet (предоставление BDE как DataSet)
- TCustomSQLDataSet (предоставление dbExpress как DataSet)
- TCustomADODataSet (предоставление ADO как DataSet)
TADOCommand ближе всего к металлу для выдачи необработанных запросов.
TADODataSet и TADOQuery используют существующую объектную модель базы данных Delphi для предоставления источников данных ADO
TADODataSet может использоваться только для представления наборов данных
TADOQuery — мастер на все руки, который может все.
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя электронную почту и пароль
Опубликовать как гость
Электронная почта
Обязательно, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Набор данных— Delphi ADO Query
спросил
Изменено 8 лет, 7 месяцев назад
Просмотрено 25 тысяч раз
Есть ли более быстрый способ перебора набора данных ADO, чем
, в то время как (не ADOQuery1. Eof) делать начинать /* Сделай что-нибудь */ ADOQuery1.Далее; конец;
Мне нужно просканировать набор данных, содержащий около 9000 элементов, и извлечь только те записи, которые соответствуют предварительно определенному набору номеров ветвей.
- delphi
- набор данных
- ado
Обязательно используйте DisableControls/EnableControls, если нет необходимости тратить время на обновление видимых элементов управления, связанных с DataSet.
попробовать ADOQuery1.DisableControls; в то время как (не ADOQuery1.Eof) делать начинать /* Сделай что-нибудь */ ADOQuery1.Далее; конец; в конце концов ADOQuery1.EnableControls; конец;
С уважением.
1
@Pieter, два варианта
1) вы можете изменить свое предложение sql перед выполнением, добавив условие where, которое соответствует предварительно определенному набору номеров ветвей.
2) используя свойство Filter TAdoQuery.
AdoQuery1.close; AdoQuery1.filter := 'здесь будет ваше условие'; AdoQuery1.filtered := true; АдоЗапрос1.Открыть;
2
Гораздо быстрее использовать ADORecordset для таких задач:
, а не ADOQuery1.Recordset.EOF начинать ADOQuery1.Recordset.MoveNext; // получить значение SomeVar := ADOQuery1.Recordset.Fields['FieldName'].Value; конец;
6
Дополнительный прирост производительности можно получить, избегая любых сравнений строк как можно позже (когда все остальное совпадает). Если у вас есть большое количество повторяющихся строк в базе данных, рассмотрите возможность размещения ваших строк в отдельной таблице, связанной с первой таблицей целым числом.
Вы можете изменить запрос, включив в него предложение SQL where, что-то вроде
Выбрать любые поля Из любой таблицы где номер ветки в ( выберите номер ветки из любой таблицы, где branchid=xxz )
Я также настоятельно рекомендую обратить внимание на курсоры только вперед и только для чтения, чтобы обеспечить максимальное увеличение скорости.