Навигация
Главная »  Delphi 

1 [ 2 ] 3 4

  Cмешение цветов с помощью Delphi
Источник: welikeitМороз Олег Привет всем. Сегодня мы будем писать програмку, которая может размыть картинку. Бросай на форму Timage и Tbutton имена оставь по умолчанию, создавай событие button1.click вот его код: procedure TForm1.button1Click(Sender: TObject);     var x, y: integer;     i, j,h:integer;    r,g,b,r1,g1,b1,r2,g2,b2,r3,r4,g3,g4,b3,b4,r5,r6,r7,r8,g5,g6,g7,g8,b5,b6,b7,b8:byte;    c,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10:tcolor; begin  application.ProcessMessages;  for y := 1 to image1.picture.height-1 do begin   application.ProcessMessages;   for x := 1 to image1.picture.width-1 do begin    c1 := (image1.Canvas.Pixels[x-1,y+1]);    c2 := (image1.Canvas.Pixels[x-1,y-1]);    c3 := (image1.Canvas.Pixels[x+1,y+1]);    c4 := (image1.Canvas.Pixels[x+1,y-1]);    c5 := (image1.Canvas.Pixels[x,y-1]);    c6 := (image1.Canvas.Pixels[x,y+1]);    c7 := (image1.Canvas.Pixels[x-1,y]);    c8 := (image1.Canvas.Pixels[x+1,y]);    c9:=(image1.Canvas.Pixels[x,y]);////по 9-ий пиксель    ///////получение значений красного синего    r:=getrvalue(c7); g:=getgvalue(c7); b:=getbvalue(c7);    r1:=getrvalue(c8); g1:=getgvalue(c8); b1:=getbvalue(c8);    r2:=getrvalue(c9); g2:=getgvalue(c9); b2:=getbvalue(c9);   r3:=getrvalue(c6); g3:=getgvalue(c6); b3:=getbvalue(c6);    r4:=getrvalue(c5); g4:=getgvalue(c5); b4:=getbvalue(c5);    r5:=getrvalue(c4); g5:=getgvalue(c4); b5:=getbvalue(c4);    r6:=getrvalue(c3); g6:=getgvalue(c3); b6:=getbvalue(c3);    r7:=getrvalue(c2); g7:=getgvalue(c2); b7:=getbvalue(c2);   r8:=getrvalue(c1); g8:=getgvalue(c1); b8:=getbvalue(c1);    r:=round((r+r1+r2+r3+r4+r5+r6+r7+r8)/9);   g:=round((g+g1+g2+g3+g4+g5+g6+g7+g8)/9);    b:=round((b+b1+b2+b3+b4+b5+b6+b7+b8)/9);   c10 :=rgb(r,g,b);    ControlStyle := ControlStyle + [ csOpaque ];    image1.Canvas.Pixels[x,y] := c10;   end;  end; end; Вот и все упростите код, введите массивы и т.д..

  Выпущен релиз FastReport FMX
Источник: FastReportitshop Выпущен релиз FastReport FMX Генератор отчетов FastReport FMX - первое кросс-платформенное решение для внедрения Business Intelligence в программное обеспечение на базе среды разработки Embarcadero FireMonkey (Delphi для MS Windows и Apple Mac OS X).Совместим с Embarcadero RAD Studio XE2 (FireMonkey) и XE3 (FireMonkey2). Всё это - уже сейчас в ваших руках для написания бизнес-приложений для Mac. Сравнительная таблица возможностей FastReport VCL и FastReport FMX:     FastReport FMX   FastReport VCL   Fast Report features   WIN   OSX         Bands   +   +   +     Internal ADO datasets   +   -   +     Internal BDE datasets   -   -   +     Internal IBX datasets   +   +   +     Internal DBX datasets   +   +   +     Internal DBX datasets   +   +   +     Shape objects   +   +   +     Text object   +   +   +     Subbreport object   +   +   +     Picture object   +   +   +     System text object   +   +   +     Chart object   +   +   +     Barcode object   +   +   +     2D Barcode object   +   +   -     OLE Object   -   -   +     Rich Text object   -   -   +     Gradient object   +   +   +     Crosstab object   +   +   +     Checkbox object   +   +   +     WEB components   -   -   +     Advanced printing modes   -   -   +     Report inheritence   +   +   +     Drill downs   +   +   +     HTML tags in text object   +   +   +     Preview component   +   +   +     Preview window   +   +   +     Designer (end user)   +   +   +     Designer (developer)   +   +   +     Dialogs   +   +   +     Script   +   +   +     Export to PDF   -   - (native from OS print dialog)   +     Export to PNG/GIF/TIFF/JPEG/BMP   +   +   +     Export to RTF   +   +   +     Export to XLS (OLE)   -   -   +     Export to XLS (XML)   -   -   +     Export to XLS (BIFF)   -   -   +     Email export   -   -   +     Export to CSV   +   +   +     Export to TXT   +   +   +     Export to ODS   +   +   +     Export to ODT   +   +   +   FASTREPORT FMX - генератор отчётов для FIREMONKEY Кроссплатформенный генератор отчетов с широчайшими возможностями для Apple Mac OS X и Microsoft Windows. Совместим с Embarcadero RAD Studio XE2. Генератор отчетов FastReport FMX - первое кросс-платформенное решение для внедрения Business Intelligence в программное обеспечение на базе среды разработки Embarcadero FireMonkey (Delphi для MS Windows и Apple Mac OS X). Теперь вы можете создать бизнес-приложения и для пользователей Apple Mac OS! Вы получаете мощное средство для ваших бизнес-приложений, которое позволяет формировать документы и выводить их на печать под  популярными коммерческими операционными системами для PC/Apple! Полный список всех возможностей FastReport FMX: Данные для отчётов Любые базы данных. FastReport работает со всеми базами данных, доступными в FireMonkey, включая Oracle.

  Доступ к переменным Thread local storage (TLS) любого треда
Источник: habrahabrDCa Данная статья иллюстрирует, как получить доступ к переменным из блока Thread Local Storage в Delphi. Однако принципы нахождения "чужого" блока TLS одинаковы для всех компиляторов Windows и применимы для любых языков программирования, поддерживающих TLS в том виде, как это определяет Windows. В Delphi, в отличии от глобальных переменных, переменные, объявленные в блоке threadvar, создаются для каждого потока (thread) с возможностью хранить независимые значения. Каждый поток читает и записывает свою копию значений.Но иногда необходимо прочесть или даже изменить переменные, соответствующие другому треду.Конечно, лучше изменить алгоритм, чтобы избежать такой необходимости, но решение этой задачи есть.Все блоки данных (Thread local storage, TLS) находятся в памяти одновременно, но по разным адресам, каждый тред хранит указатель на свою область памяти, поэтому есть возможность найти блок переменных и конкретное значение, принадлежащее любому треду, созданному в пределах текущего процесса.Область Thread local storage, в которой хранятся значения, определяется по значению из блока данных TEB. Адрес массива находится по смещению tlsArray (объявлено в модуле SysInit.pas).При каждом обращении к переменной, объявленной как threadvar, происходит неявный вызов функции _GetTls, которая возвращает указатель на область данных текущего треда. Добавив смещение переменной, можно получить ее адрес. Чтобы получить адрес переменной из другого треда, нужно вычесть адрес текущего блока и добавить адрес блока целевого треда.Просто вызвать служебную функцию _GetTls невозможно, нужно вызывать ее из ассемблерного кода, добавив символ @ перед именем и название модуля System.

  Бесконечные генераторы значений на Delphi + Ассемблер
Источник: habrahabrDCa В функциональных языках программирования есть возможность генерировать бесконечные последовательности значений (как правило чисел) и оперировать этими последовательностями. Реализуется это функцией, которая, не прерывая свою работу, генерирует значения одно за другим на основе своего внутреннего состояния.Но, к сожалению, в обычных языках нет возможности "вернуть" значения в место вызова не выходя из функции. Один вызов - один результат.Генераторы удобно было бы использовать совместно с возможностью Delphi по перечислению значений (GetEnumerator/MoveNext/GetCurrent). В этой статье мы создадим функцию-генератор (может даже бесконечную) и будем использовать ее с таким объектом для перечисления, чтобы всё работало прозрачно без необходимости вникать в реализацию.Причина невозможности вернуть значение без полного выхода из функции в том, что вызываемая функция использует тот же стек, что вызывающая. То есть, если вызванная функция сгенерирует очередное значение, то нужно найти способ вернуть управление программе для обработки. Главное, чтобы локальные данные вызванной функции не повреждались, и, когда потребуется, мы могли запустить ее с того же места, на котором прервали. Начнем с того, что для функции нужен отдельный стек.

  Построение графиков
Источник: welikeit Что делать, если ваше приложение должно строить графики? Можно все сделать самостоятельно, а можно воспользоваться готовыми решениями (сторонними компонентами). Сегодня поговорим о компоненте gl.ocx, который является частью пакета MathCad. Этот компонент обладает большим количеством настроек: освещение, туман, внешний вид, перспектива и т.д., и способен украсить любую вашу программу. Если MathCad у вас установлен, запускаем Delphi, заходим в Component -> Import ActiveX Control и выбираем Mathsoft 3-D Plot module (Version x.x), где x.x - версия компонента (у меня 8.6). Если MathCad′а у вас нет, то скачиваем этот компонент из интернета. В этом случае вам еще понадобятся библиотеки EfiUtils.dll, UIUtil.dll, VSFC90.dll. Переписываем эти файлы в отдельный каталог, заходим в Component -> Import ActiveX Control и нажимаем кнопку "Add...".

  Из Delphi в FreePascal под Mac OSX
Источник: delphidocument.write('.');franticDelphi Zen Но сначала немного о самом приложении: оно предназначено для безопасной и быстрой передачи файлов через интернет. Сам того не осознавая, в начале работы над ним я принял несколько решений, которые в итоге сильно упростили процесс переноса на другую платформу: Четко разделил приложения на части, каждая из которых имела свой максимально простой интерфейс (IInterface) и одну реализацию (пример далее).Ограничил использование сторонних компонентов, а те, которые использовались, выделил в отдельные интерфейсы по принципу №1. Использовал DUnit для тестирования реализации основных компонентов. Поигравшись с Lazarus на Mac, я понял что графическую часть приложения я буду писать на родном для OSX ObjectiveC/Cocoa, а всю логику подключу через Dylib (аналог DLL). А все из-за того, что формочки в Lazarus хоть и есть, но выглядят они очень убого (там старый Carbon widgetset, который навсегда останется 32-битным) + хочется теснее интегрироваться в систему, а абстрагированный от платформы код FreePascal этого не позволит в полной мере (нет, позволит, конечно, но с огромным количеством костылей) Лирическое отступление №1. Мыслить в терминах интерфейсов - очень удобно. Вот, к примеру, у меня был интерфейс, инкапсулирующий работу с HTTP: type  IHttpClient = interface    ['{CBE784BC-8732-4CE0-868F-00AE659F11AA}']    procedure Post(URL: string; PostData, ResultData: TStrings);  end;var  HttpClient: IHttpClient = nil; Здесь 2 важных пункта: во-первых, интерфейс максимально простой; во-вторых, регистрация реализации интерфейса делается вот так: HttpClient := TIndyHttpClient.Create; Очень просто.

  Как научить программу общаться
Источник: welikeit ПредисловиеВ этой статье я расскажу о том, как мне пришлось решать достаточно простую, но вместе с тем интересную задачу. Смысл её заключался в том, чтобы обеспечить передачу файла по локальной сети на несколько машин по списку. При этом на всех компьютерах файл может располагаться в различных каталогах и пользователь компьютера, принимающего файл, не должен никоим образом участвовать в процессе. Практически стояла задача обеспечить автоматизированную рассылку обновления софта и антивирусных баз. Решать задачу пришлось в спешке, поэтому был избран самый простой путь - использовать "троянообразный" сервер на машинах пользователей и клиент с простенькой базой данных, который по очереди соединяется с серверами и выполняет необходимые действия. Результатом работы стало реальное клиент-серверное приложение, программа "Админ-рассылка". В качестве платформы для разработки был использован Borland Delphi 7, база данных - локальная с использованием библиотеки firebird - gds32.dll.

  Мировой рынок систем электронного документооборота
Источник: "ITeam - технологии корпоративного управления"Александр Глинских (к.т.н.) СОДЕРЖАНИЕ Введение Основные понятия о системах электронного документооборота Назначение СЭД Основные свойства СЭД Общая классификация СЭД Преимущества от использования СЭД Анализ современного состояния мирового рынка СЭД Общий обзор Основные тенденции развития мирового рынка СЭД Российский рынок СЭД Общий обзор Основные тенденции развития российского рынка СЭД Примеры применения CЭД в мире СЭД в здравоохранении СЭД в фармацевтике CЭД в сфере выдачи займов СЭД в сфере коммунальных услуг CЭД в сфере патен. Например, по оценке журнала ASAP, в мире ежегодно появляется около 6 млрд. новых документов. По данным же Delphi Consulting Group, в настоящее время только в США ежедневно создается более 1 млрд. страниц документов, а в архивах хранится уже более 1.3 трлн. различных документов. Следует отметить, что потоки корпоративной информации чрезвычайно разнообразны по источникам и формам ее представления.

  День открытых файлов
Источник: codingclub Сегодня я расскажу вам о такой важной особенности языка программирования, как работа с файлами. Мы будем копировать, вставлять, вырезать, удалять файлы и все это на Delphi. Функции работы с файлами там почти аналогичны Паскалевским, различия я буду указывать по ходу. Прежде всего, нам нужна переменная для работы с файлами. Например, объявим переменную f1типа file of char. Можно также взять file of byte или file of integer. Для Паскаля это может быть просто text (текстовый файл).

  Аналитика: Рынок средств разработки в 2006 году
Источник: pcweek Рынок средств разработки ПО в общем-то уже давно не представляет большого интереса для широкой ИТ-общественности, да и для ИТ-аналитиков тоже. Публикации о рейтингах, объемах продаж встречаются все реже, и уж во всяком случае их популярность не идет ни в какое сравнение с вниманием, уделяемым ERP-решениям, средствам управления документами, операционным системам… Еще два-три десятка лет назад слово "программист" было почти что синонимом понятия "пользователь компьютера". Сегодня же программисты составляют лишь единицы процентов от общего числа пользователей. И тем не менее их значение для развития ИТ-рынка за это время не только не уменьшилось, но, скорее всего, даже возросло (думаю, что этот тезис не требует особых пояснений и доказательств). Уникальность положения разработчиков ПО заключается еще и в том, что, будучи поставщиками решений для потребителей, они и сами входят в число пользователей с самой длинной по времени историей и самых первых в плане освоения появляющихся новинок. Да, сегмент инструментальных средств по объему не очень велик. Но помимо его важности для развития рынка в целом отметим, что он является старейшим в истории вычислительной техники и сам по себе хорошо отражает процессы, происходящие на ИТ-рынке в целом.

  SQL-запросы в Delphi (исходники, документация)
Источник: codingclub Компоненты Delphi для работы с базами данных были созданы в расчете на работу с SQL и архитектурой клиент/сервер. При работе с ними вы можете воспользоваться характеристиками расширенной поддержки удаленных серверов. Delphi осуществляет эту поддержку двумя способами. Во-первых, непосредственные команды из Delphi позволяют разработчику управлять таблицами, устанавливать пределы, удалять, вставлять и редактировать существующие записи. Второй способ заключается в использовании запросов на языке SQL, где строка запроса передается на сервер для ее разбора, оптимизации, выполнения и передачи обратно результатов. Примечание: Данный документ представляет собой коллективный труд нескольких авторов, которые индивидуально несут ответственность за качество предоставленной здесь информации. Borland не предоставлял, и не может предоставить никакой гарантии относительно содержимого данного документа.

  Создание визуальных компонентов в Delphi (документация, исходники)
Источник: articlesМихаил Продан При первом знакомстве с delphi несомненно удивляешься великому множеству разных визуальных компонентов. Кнопочки, панельки, надписи и многое другое. Но после нескольких месяцев пользования этой средой разработки появляется желание написать что-то свое. Именно эту задачу мы и попытаемся решить используя инвентарь delphi, который есть в у нас в наличии и, естественно, свое воображение. Постановка задачи Для начала определимся, что и как мы будем делать. В этом вопросе большую роль играет ваше воображение, эстетические предпочтения и т.д. Я же в силу своей распущенности предложу Вам в качестве примерного варианта создать кнопку нестандартной формы, а именно - овальной.

  KOL - кодоэкономичная объектная библиотека для Delphi
Источник: codingclub Цель данной статьи - убедить читателя (я надеюсь, этот текст попадет в руки программиста), привыкшего к большим размерам современных программ (о, нет, приложений, программы-то как раз были еще не очень большими) в том, что его бессовестно надувают. Когда утверждают, что программа для среды Windows, если она что-то полезное умеет делать, никак не может быть меньше... ну, скажем, трехсот килобайт. А если это очень "умная" программа, содержащая очень много полезных возможностей, хороший интерфейс, отлично взаимодействующая с пользователем, поддерживает различные форматы данных, современные клиент-серверные технологии, то без полсотни мегабайт ну никак не обойтись. Чушь несусветная. Нас обманывают! На самом деле, объектное программирование позволяет создавать очень экономичный по размеру код. Причем, достаточно эффективный.

  Проектирование информационных систем. Часть 4. Этапы разработки проекта: заключительные стадии проектирования, специфика
Источник: КомпьютерПресс, № 1'2002Лилия Козленко Часть 3 Оглавление Обработка иерархии функций Управление исходным кодом Размещение логики обработки Трехуровневая архитектура Метрики генерации модулей Мегамодули Макеты Описание Обработка ошибок В настоящей статье мы рассмотрим вопросы проектирования модулей кода, поскольку база данных не много стоит, если не обеспечить к ней доступ. Как правило, процесс проектирования модулей кода ведется параллельно с проектированием схемы базы данных. Дело в том, что немногие проектные решения схемы можно принять без согласования с проектными решениями модулей. Редко проектирование модулей состоит из единственного этапа, в большинстве случаев это процесс итерационный с постоянным уточнением тех или иных моментов. Обработка иерархии функций На этапе анализа была создана иерархия функций, которая дополняется диаграммами потока данных и изменения состояний. Как проще всего проверить, является ли функция в иерархии атомарной? Ответьте на вопрос: имеет ли смысл выполнение только части этой функции. Поскольку мы имеем дело с иерархией, вероятно наличие одной и той же функции в нескольких местах иерархии.

  Работа с динамическими массивами в Delphi (исходники, документация)
Источник: codingclubТрофим Роцкий Что такое динамический массив? Динамический массив есть контейнер, содержащий определенное число данных, которые могут быть записаны либо извлечены для каких-нибудь с ними действий. Проще говоря, это лимитированный список различных значений одной переменной (Integer, String и т.д.), каждый из которых можно затребовать простым указанием порядкового номера. Зачем он нужен? как с ним работать? - читайте далее и всё поймете. Прежде всего, надо продекларировать наш массив (то бишь записать его название). Название массива имеет такой вид: : Array[] of Идентификаторы Array и of постоянны, так что их нужно указывать в любом случае. Имя массива зависит только от вашей фантазии. Область определения имеет вид [X..Y], где первая величина - наименьшее значение числа определяемых параметров, вторая - наибольшее.

  Шифрование в Delphi (исходники)
Источник: codingclubТрофим Роцкий Borland предоставил нам несколько занятных функций для работы со строками, о которых не все знают. Сосредоточены они в модуле StrUtils.pas. Такие функции, как RightStr, LeftStr совмещают стандартные команды Copy и Delete: так, LeftStr возвращает значение левой части строки до указанной вами позиции (что вытворяет RightStr, догадайся сам), а функция ReverseString и вовсе делает зеркальное отображение данной строки: 321 вместо 123. Используем ее в особенности, чтобы осложнить жизнь хитрому дешифровщику. Алгоритм шифрования будет прост, как Win 3.1. С каждым символом кодируемого документа проделаем следующее: Преобразуем символ в число командой Ord. Преобразуем каждый символ пользовательского пароля в число и сумму этих чисел прибавим к полученному в пункте 1.

  Компания Borland анонсировала новейшие версии приложений StarTeam и CaliberRM
Компания Borland Software Corporation анонсировала новейшие версии приложений StarTeam и CaliberRM, предназначенных для помощи клиентам в поддержке, автоматизации и улучшении управления изменениями ПО, а также в процессах определения потребностей и управления ими. Новые версии продукта включают ряд улучшений, предназначенных для повышения удобства использования, расширенную поддержку широкого набора платформ и инструментария разработки, а также улучшенную трассируемость, от бизнес-потребностей до ресурсов разработки на протяжении всего жизненного цикла приложений. Приложение StarTeam компании Borland, предназначенное для управления изменениями и версиями программного обеспечения, и приложение CaliberRM компании Borland для корпоративного управления требованиями представляют собой центральные компоненты решений компании Change Management и Requirements Definition & Management. При объединении с лучшими методиками процессов компании Borland приложения StarTeam и CaliberRM помогут автоматизировать и координировать потребности, ресурсы, операции и цифровые активы, которые непрерывно изменяются в процессе доставки программного обеспечения. "Обмен данными и управление изменениями - одна из самых больших проблем, с которыми сталкиваются компании-разработчики ПО в своем стремлении поставлять более ценные программные продукты и быстрее адаптироваться к потребностям бизнеса, - заявил Марк Браун (Marc Brown), старший директор по товарному маркетингу компании Borland. - Наша цель - дать клиентам возможность более быстрого отклика на изменяющиеся бизнес-требования, независимо от местоположения групп разработчиков или числа платформ или приложений, с которым они работают. Новые улучшения, внесенные в приложения StarTeam и CaliberRM, прямо отражают данную цель".

  GUPTA SQLBase 8.5
СУБД SQLBase - основной продукт компании Gupta, который позволяет управлять данными вдали от информационного центра предприятия требует администрирования и мощных ресурсов и существенно сокращает затраты на разработку и развёртывание удаленных приложений со встроенной базой данных. Новая версия SQLBase 8.5 значительно упрощает развертывание приложений, позволяя запускать множество серверов на одном компьютере, и минимизирует функции управления при помощи консоли управления SQLBase. SQLBase 8.5 обеспечивает высокий уровень безопасности, используя тройное DES-шифрование при передаче данных по сети или копировании на локальный носитель. Одним из наиболее ожидаемых свойств новой версии SQLBase 8.5 стала поддержка синтаксиса ANSI Join. Плавный переход к SQLBase 8.5 В SQLBase 8.5 Gupta сделала еще один шаг к минимизации усилий, затрачиваемых заказчиками на переход к новой версии базы данных. Этот шаг является одним из важнейших факторов, обусловливающих чрезвычайно низкую совокупную стоимость владения SQLBase. За два месяца до выхода SQLBase 8.5 компания Gupta предоставила для загрузки со своего Web-сайта инструмент проверки ключевых слов.

  Embarcadero объявляет о выходе FireDAC
Источник: Embarcadero Компания Embarcadero Technologies, лидирующий производитель средств разработки приложений и баз данных, сегодня объявила о начале поставок FireDAC, библиотеки для доступа к данным масштаба предприятия с различных устройств под управлением Windows, Mac и мобильных платформ. Библиотека FireDAC полностью совместима с решениями Embarcadero в области разработки приложений для различных устройств Delphi, C++Builder и RAD Studio. Выход FireDAC последовал за недавним приобретением компанией Embarcadero технологии доступа к данным AnyDAC у компании DASoft. "Корпорации уже сталкивались с задачей поддержки различных платформ баз данных при разработке приложений, но, в последнее время число таких задач резко возросло в связи с ростом разнообразия настольных и мобильных систем, поддержка которых стала жизненно важной", - заявил Michael Swindell, старший вице-президент Embarcadero по продуктам. "FireDAC упрощает реализацию доступа к данным масштаба предприятия в создаваемых приложениях в широком диапазоне платформ и устройств на основе единых исходных кодов". FireDAC обеспечивает разработчикам поддержку самого широкого спектра платформ баз данных, включая Oracle, Microsoft SQL Server, IBM DB2, SAP, DataSnap, Sybase SQL Anywhere, InterBase, Advantage Database, PostgreSQL, SQLite, MySQL, Firebird и Microsoft Access. FireDAC будет включен в продукты для средств разработки для различных устройств редакции Enterprise и старше, а также будет поставляться как отдельный продукт.

  Интерполяция изображений в Delphi (исходники)
Источник: welikeit Этот алгоритм увеличивает изображение в произвольное количество раз при помощи билинейной интерполяции. При создании нового изображения каждой его точке с целыми координатами (x,y) сопоставляется точка исходного изображения с дробными координатами (xo, yo), xo=x/dx, yo=y/dy (dx и dy - коэффициенты увеличения). Далее нужно провести поверхность через точки, лежащие вокруг (xo, yo). Цвет здесь рассматривается как третье измерение. На поверхности ищется точка с координатами (xo, yo) и ее цвет понимается за цвет точки (x,y) получаемого изображения. Этот алгоритм хорошо работает при целых или больших коэффициентах увеличения. Но резкие границы размываются.

  Аналог FreeAndNil с проверкой типа
Источник: habrahabrvpbar Для борьбы с проблемой "висячих" ссылок на освобожденные объекты в Delphi обычно используется процедура SysUtils.FreeAndNil. Процедура FreeAndNil освобождает объект и устанавливает переменную в nil.Но мне всегда не нравилось то, что в этой процедуре не типизированный параметр. И туда можно передать не только объект, но и строку, число и любую переменную. Естественно при вызове с таким некорректным параметром будут проблемы. Что самое неприятное проблемы могут вылезти совсем в другом месте.Мне хотелось бы чтобы компилятор меня контролировал, желательно на этапе компиляции. Но увы найти решение при котором компилятор ругался на попытку вызвать процедуру освобождающую и обнуляющую, с параметром не совместимым с TObject мне не удалось. Зато я нашел метод при котором такая попытка обнаруживалась на этапе выполнения при первом вызове.

  Сравнение ООП языков: Java, C++, Object Pascal (документация)
Источник: articlesdocument.write('.');orgАвтор: marco cantu, wintech italia srl Перевод: Виктор Карев ВведениеЯва - популярный в Интернете язык, c++, возможно, всё ещё самый распространённый язык ООП, а object pascal - язык, используемый фирмой inprise (бывшей borland) внутри delphi. Хотя это и не очевидно, но эти три языка имеют много общего. Цель данной работы - исследовать и сравнить технические аспекты этих трех языков. Я не собираюсь выяснять, какой из языков лучше, потому что это в значительной степени зависит от того, для чего вы хотите его использовать. Для понимания данной статьи требуется минимальное знание об одном из ОО языков или, по крайней мере, базовые знания о концепции ООП в целом. Я буду описывать, почему определённая языковая особенность важна, а затем перейду к её сравнению в упомянутых трёх языках. Я не собираюсь показывать вам, как использовать эти языковые особенности в конкретных примерах.

  Компоненты Indy, применяемые в Delphi 6 (документация)
Источник: articlesdocument.write('.');orgЮрий Зачесов Помимо базовых служб и протоколов Интернет существует широкий набор дополнительных сервисов, возможности которых часто используются Интернет-разработчиками. К тому же далеко не всегда возможность отображения информации с помощью браузера является приемлемым решением для Интернет-приложений. В этом случае разумно использовать Интернет-инфраструктуру для обмена данными, а отображение информации обеспечить за счет более сложных клиентских приложений, разработанных, предположим, на delphi. Допустим, требуется реализовать специализированную серверную логику, которая не заложена в стандартные web-серверы. Для решения такого класса задач в состав delphi включена библиотека internet direct (indy) компании nevrona designs (http://www.nevrona.com/indy/). Данная библиотека, разработанная специально для borland delphi, насчитывает уже восемь версий, последняя из которых вошла в состав новой версии delphi. Набор компонентов разделен на три группы: клиентские (indy client), серверные (indy servers) и вспомогательные (indy misc).

  Немного об окнах и процессах (исходники)
Источник: articles Все окна приложений управляются различными функциями winapi через свои дескрипторы. Поэтому неплохо бы знать как их получать.Рассмотрим функцию findwindow. findwindow(cn,wn:pchar): hwnd;cn - имя класса.wn - имя окна(caption), если = nil, то ищется любое окно этого класса. Функция возвращает дескриптор окна или 'nil' при неудачном поиске. - (с.8) Для определения имени класса чужого приложения воспользуйтесь,поставляемой с delphi, программой winsight 32 через spyfind window. Лучше иметь только нужное окно в этот момент. Для, всем известного калькулятора, получение дескриптора его окнабудет выглядеть так : var h : hwnd;beginh:=findwindow('scicalc','Калькулятор');end; Есть еще одна функция позволяющая определять дескриптор окна.

  Структура программ Delphi
Источник: codingclubПрограммист Любая программа в Delphi состоит из файла проекта (файл с расширением dpr) и одного или нескольких модулей (файлы с расширениями pas). Каждый из таких файлов описывает программную единицу Object Pascal. Структура проекта Файл проекта представляет собой программу, написанную на языке Object Pascal и предназначенную для обработки компилятором. Эта программа автоматически создается Delphi и содержит лишь несколько строк. Чтобы увидеть их, запустите Delphi и щелкните по опции Project / View Source главного меню [ В предыдущих версиях Delphi для просмотра кода проекта используйте опцию View / project Source. ]. Delphi покажет окно кода с закладкой Project1, содержащее такой текст: program Projecti; uses Forms, Unit1 in 'Unit1.pas' {fmExample}; {$R *.RES} begin Application.Initialize; Application.CreateForm(TfmExample, fmExample); Application.Run; end.

  Математика и Delphi (исходники)
Источник: articlesdocument.write('.');orgТрофим Роцкий Редкая программа обходится без простейших алгебраических действий: "плюс", "минус", "разделить", "умножить" - их delphi понимает и заботливо выделяет синим цветом. Но позже начинаются трудности. Стоит вам прописать что-то вроде edit1.text:= 'Координаты окна: ' + form1.left, + ', ' + form1.top, как компилятор выдает сообщение: "incompatible types: string and integer". Что же это за типы и почему они несовместимы? Информация может быть различной: текстовой, графической, цифровой, в десяти,- восьми,- шестнадцатеричной и т.п. системах. Чтобы корректно воспринимать ее, в delphi, да и во всех других языках, введены переменные, или типы (types). В примере выше мы столкнулись с двумя из них, наиболее распространенными.

  Маятник. Исходник на DELPHI. (исходники)
Источник: articlesdocument.write('.');org Попробуем смоделировать движение физического маятника, т.е. будем решать численными методами уравнения движения.Что имеем:- груз массой m в условиях действия гравитационного поля подвешен на нерастяжимом безинерционном стержне длиной l и отклонен от нормали на угол a0;- во время движения под действием силы тяжести на груз действуют тормозящие силы:- аэродинамическая fa = cx * vt^2;- кулоновская сила трения в оси качения fk- в момент времени t=0 груз приобретает свободу движения, ограниченную силой реакции стержня. На груз действуют:- тангенциальная составляющая сила тяжести ft = p * sin(a);- аэродинамическая сила fa = cx * vt^2;- кулоновская сила трения fk;Итого:fs = ft - sgn(vt) * fa - sgn(vt) * fksgn = 1 при vt > 0 sgn = -1 при vt < 0sgn = 0 при vt = 0 В начальный момент времени:vt = 0a = a0x = l * sin(a)y = l*cos(a) Начало моделирования с шагом по времени dt.//*****************************Груз приобретает ускорение at = fs / mСкорость vt = vt + at * dtЭлементарный путь ds = vt * dtЭлементарный угол da = ds / lПолный угол a = a + daКоординатыx = x + l * sin(a)y = y + l * cos(a)//***************************** Все вместе это называется численное интегрирование дифференциального уравнения движения физического маятника в условиях действия диссипативных сил сопротивления. dt = дискретность по времени, можно константойfs - суммарная сила, действующая на груз --------------------------------------------------------------------------------slymro unit unit1; interface useswindows, sysutils, classes, graphics, forms,stdctrls, extctrls, actnlist, controls, menus, appevnts; typetform1 = class(tform)groupbox1: tgroupbox;label1: tlabel;u_edit: tedit;label2: tlabel;l_edit: tedit;label3: tlabel;g_edit: tedit;image: timage;button1: tbutton;button2: tbutton;label4: tlabel;t_edit: tedit;image1: timage;timer1: ttimer;actionlist1: tactionlist;startacnt: taction;stopacnt: taction;log: tmemo;procedure startacntexecute(sender: tobject);procedure startacntupdate(sender: tobject);procedure stopacntexecute(sender: tobject);procedure stopacntupdate(sender: tobject);procedure timer1timer(sender: tobject);privateu,l,g,t,a:extended;dt0:dword;public{ public declarations }end; varform1: tform1; implementationuses sysconst;{$r *.dfm} procedure tform1.startacntexecute(sender: tobject);beginu:=strtofloat(u_edit.text);l:=strtofloat(l_edit.text);g:=strtofloat(g_edit.text);a:=l*sin(u*pi/180);t:=2*pi*sqrt(l/g);dt0:=gettickcount;t_edit.text:=format('%f',[t]);doublebuffered:=true;timer1.enabled:=true;end; procedure tform1.startacntupdate(sender: tobject);begintaction(sender).enabled:=not timer1.enabled;end; procedure tform1.stopacntexecute(sender: tobject);begintimer1.enabled:=false;end; procedure tform1.stopacntupdate(sender: tobject);begintaction(sender).enabled:=timer1.enabled;end; procedure tform1.timer1timer(sender: tobject);const pr:integer=7;vardt,x,y,k:extended;px,py,cx,cy:integer;beginif not timer1.enabled then exit;//Математика маятникаdt:=(gettickcount-dt0)/1000;x:=a*cos(dt/t*2*pi);y:=sqrt(l*l-x*x); log.lines[0]:='x/y: '+format('%f',[x])+'/'+format('%f',[y]); //Перевод в координаты отрисовкиk:=trunc(image.height*0.9);cx:=image.width div 2;cy:=20;px:=trunc(x*k/l)+cx;py:=trunc(y*k/l)+cy; //Отрисовкаwith image.canvas dobeginbrush.color:=rgb(0,0,0);pen.color:=rgb(255,255,255);fillrect(cliprect);moveto(cx,cy);lineto(px,py);brush.color:=pen.color;ellipse(px-pr,py-pr,px+pr,py+pr);end;end; end.

  FireMonkey HD + 3D, часть 1
Источник: blogsdocument.write('.');embarcaderoVsevolod Leonov Демо решает всё когда речь заходит о новых возможностях, и FireMonkey в Delphi XE2/C++Builder XE2/RAD Studio XE2 здесь не исключение. Ничто так не вдохновляет, как вид работающего приложения. Ничто так не будоражит фантазию, как мысли на тему "а я бы сделал это по-другому и гораздо лучше". Ничто так не бодрит, как ощущение собственного понимания и готовности к действию. Видео-ролик сделан и представлен вашему вниманию. Предыдущий опыт (на грани научно-популярной лекции и шутейного микро-фильма) показал, что данный формат является востребованным. Современные тренды развития коммуникаций ярко демонстрируют, что мир изменяется.

  Borland Delphi 2006
Delphi 2006 - Новая редакция мощной высокопродуктивной среды быстрой разработки приложений для Windows и .NET. Новые функциональные возможности и усовершенствования, реализованные в Delphi 2006, помогут сократить время и затраты, связанные с созданием, управлением и сопровождением приложений как для Windows, так и .NET. В числе новых возможностей - поддержка нескольких языков программирования в единой среде (Delphi для .NET, Delphi для Win32, C++, С#), новая система шаблонов кода, расширенные средства рефакторинга, обновленная библиотека визуальных компонент, Enterprise Core Object III (ECO III), а также тесная интеграция с решениями Borland управления жизненным циклом программного обеспечения (ПО) - StarTeam (для управления конфигурациями и изменениями), CaliberRM (для управления требованиями), Together (для визуального моделирования с использованием технологии LiveSource). Borland Delphi 2006 поставляется в трех вариантах редакций: Delphi Professional, Delphi Enterprise, Delphi Architect. Основные характеристики редакций: Delphi 2006 Professional. Полнофункциональная среда разработки приложений для визуального проектирования, компиляции и отладки на языках Delphi и C#. Обеспечивает разработку для Win32 и .NET, используя единую базу исходных текстов.

  Грузим формы из базы данных или Как зарегистрировать класс по его имени (исходники, документация)
Источник: codingclub Идея хранения ресурсов формы - файлов dfm - в базе данных не нова. При правильном использовании этого метода, можно сделать достаточно легко настраиваемое под требования пользователя, в плане интерфейса, ядро для приложений (для этого нужно иметь редактор форм). Виденные мной реализации загрузки форм из базы данных имели одно слабое место: реализация регистрации классов. Для правильной загрузки формы должны быть зарегистрированы все классы, используемые в этой форме. Ранее регистрация проходила "напрямую", то есть создавалась процедура, в которой при помощи процедуры RegisterClass, производилась регистрация всех требуемых классов. В данной статье предлагается другой способ регистрации классов: получаем имена требуемых классов из ресурса форма и регистрируем их по имени. База данных В данной статье используется база данных MS Access, содержащей только одну таблицу FRM с полями: CLSNME (текстовое поле) - для имени класса формы, FRMDFM (поле MEMO) - для хранения ресурса формы.



1 [ 2 ] 3 4

Главная »  Delphi 

© 2017 Team.Furia.Ru.
Частичное копирование материалов разрешено.