Архив рубрики «Программирование»

Методика создания клиента в Delphi

а) Для взаимодействия с СОМ-сервером целесообразно создать:
♦ Проект, например, с именем ComTest.Dpr.
♦ Блок с описанием интерфейса. Он может быть полностью аналогичен файлу, созданному при проектировании сервера и просто скопирован.
♦ Блок с экранной формой, например, с именем ComForm. В этом блоке следует подключить блок с интерфейсом IntfCom и включить константу с GUID класса Class_Sum:

Unit ComForm;
Uses.., ComObj, IntfCom; Const
Class_Sum:TGUID=’{EODBF9F4-2C63-HD6-8E8F-00608C93D419}’;

Прочитать остальную часть записи »

CGI (Common Gateway Interface)

1) Общие сведения о CGI
С 1993 года CGI является очень часто используемой технологией создания трехзвенных клиент/серверных приложений в Интернет. CGI-приложение совместно с Web-сервером выполняют роль сервера приложений в трехзвенной архитектура клиент/сервер. CGI – набор правил (спецификация), согласно которым пользовательские программы, запускаемые на Web-сервера, могут возвращать данные клиенту в виду HTML-документа. CGI – это консольное приложение, загружаемое в ответ на запрос клиента на выборку или обновление данных, функционирующее как отдельный однопоточный процесс под управлением Web-сервера и выгружаемое сразу после завершения работы. WinCGI – Windows реализация CGI.
Прочитать остальную часть записи »

Функции для создания (активизации) СОМ объектов в Delphi

Способы активизации СОМ-объектов клиентом

В Delphi предусмотрено несколько способов для активизации СОМ-объекта клиентом:
• Для создания одного экземпляра объекта можно использовать функцию API CoCreatelnstance:
OIeCheck(CoCreateInstance(Clsid, // CLSID объекта требуемого класса
Nil, // Нужно для агрегирования (не используем)
I, // Тип сервера (1, 4, 16 удаленный)
IID, // Идентификатор требуемого интерфейса
рСоm)); // Указатель на запрашиваемый интерфейс
Прочитать остальную часть записи »

Особенности работы СУБД в WEB

Возможность доступа к БД с помощью Web существенно изменила стратегии доступа к данным из-за того, что:
• Количество пользователей может не только существенно варьироваться, но и изменяться без предупреждения. В обычных клиент/серверных приложениях администраторы могут контролировать число пользователей и возможность их доступа к данным.
Прочитать остальную часть записи »

Интерфейс фабрики классов и его методы в Delphi

Фабрики классов используются для создания экземпляров объектов СОМ-объекты не порождаются приложением-клиентом. Вместо этого в СОМ используется механизм, названный генератором классов. Генераторы классов – это объекты, чье главное предназначение – создавать другие объекты. В Delphi фабрики классов для СОМ-объектов создаются автоматически.
Прочитать остальную часть записи »

Объявление пакета в SQL, понятие уровней строгости

1. Понятие пакета
В СУБД Oracle, начиная с 7 версии, предусмотрена возможность создания пакетов, представляющих по существу коллекцию функций, процедур, констант, пользовательских типов данных, переменных, курсоров, исключительных ситуаций. Пакет включает спецификацию пакета и его тело. Объекты, объявленные в спецификации, являются общедоступными. Тело пакета включает реализацию общедоступных объектов, а также объявление и реализацию приватных объектов. Пакет можно сделать невыгружаемым из памяти. Помещая в пакет наиболее часто используемые процедуры и функции, можно существенно повысить быстродействие системы.
Прочитать остальную часть записи »

Типовой механизм создания СОМ-объектов, серверы объектов СОМ

1) Первоначально клиент вызывает функцию библиотеки СОМ – СоCreatelnstance, передавая ей CLSID нужного объекта, а также IID интерфейса, поддерживаемого объектом. Кроме того, можно указать тип сервера: «в процессе» – 1 или локальный – 4. Допускается не указывать тип сервера.

OIeCheck(CoCreateInstance(Clsid, // CLSID объекта требуемого класса
Nil, // Нужно для агрегирования (не используем)
I, // Тип сервера (1, 4, 16 удаленный)
IID, // Идентификатор требуемого интерфейса
рСоm)); // Указатель на запрашиваемый интерфейс

Прочитать остальную часть записи »

Триггеры, объявление и назначения триггеров в SQL

Понятие триггера

Триггер – это подпрограмма, похожая на процедуру БД, автоматически вызываемая СУБД при изменении, удалении или добавлении записи в таблице. К триггерам невозможно обратиться из программы, передать им параметры или получить от них результат. Наиболее часто триггеры применяются для поддержания ссылочной целостности и каскадных операций в БД. Ссылочные спецификации, определяющие каскадные действия при удалении и обновлении и создаваемые при объявлении таблиц, также реализуются через триггеры, однако текст этих триггеров не редактируется.
Прочитать остальную часть записи »

Обзор технологий СОМ, серверы и объекты СОМ, библиотеки

Модель COM (Component Object Model) представляет собой независимую от языка программирования спецификацию, базирующуюся на объектах. Эта спецификация определяет требования к созданию составных объектов (Component Objects) и механизм предоставления доступа к составным объектам, т.е. обеспечивает поддержку средств, разрешающих реализовывать объекты, которые могут вызываться между различными процессами и, даже, компьютерами. По определению СОМ является реализацией OLE.
Прочитать остальную часть записи »

Табличные функции в SQL

Понятие табличных функций
В SQL:2003 специфицированы табличные функции, т.е. функции, вызываемые из SQL и возвращающих результат «таблицу». Поскольку в SQL нет типа таблица, то фактически результатом табличной функции является мультимножество (типом элементов которого является анонимный строчный тип). Однако к результату табличной функции можно адресовать запросы таким же образом, как и к таблица. В синтаксических конструкциях для определения и вызова табличных функций предусмотрено ключевое слово TABLE.
Прочитать остальную часть записи »

Интерфейсы автоматизации, диспинтерфейсы

В блоке System Delphi объявлен также и IDispatch интерфейс, предназначенный для поддержки объектов автоматизации (Automation). Таким образом, любое приложение, предоставляющее свои внутренние методы другим приложениям, может осуществлять это через этот интерфейс.
Прочитать остальную часть записи »

Внешние функции в SQL

1) Понятие внешней функции
SQL/PSM разрешает для определения тела подпрограммы использовать код, написанный на широко известных HOST-языках программирования. Под внешней функцией понимается функция, написанная на одном из HOST-языков программирования и специальным образом подключенная к БД.
Прочитать остальную часть записи »

Делегирование полномочий интерфейсов, свойство классов типа интерфейс

С помощью команды Implements можно делегировать полномочия одного или нескольких интерфейсов свойству в классе реализации интерфейса. Фактически делегирование означает, что класс-контейнер включает ссылку на другой класс, который реализует один или несколько интерфейсов.
Прочитать остальную часть записи »

Встроенные и хранимые функции в SQL

Встроенные (системные) функции

1) Список стандартных функций

Функция Возвращаемый результат
Bit_Length(< строка>) Количество битов в < строке>
Cast(< значение> As < тип данных>) < значение>, преобразованное в указанный < тип данных>
Char[acter]_Length(< строка>) Длина < строки> символов
Convert(< строка> using < функция>) < строка>, преобразованная в соответствии с указанной < функцией>
Current_Date Текущая дата
Current_Time(< точность>) Текущее время с указанной < точностью>
Current_TimeStamp(< точность>) Текущая дата и время с указанной < точностью>
Extract(< часть> from < значение>) Указанная < часть> (Day, Hour и т.п.) из < значения> даты
Lower(< строка>) < строка>, преобразованная к нижнему регистру
Octet_Length(< строка>) Число байтов в < строке>
Position(< строка1> in < строка2>) Позиция, с которой < строка1> входит в < строку2>
Substring(< строка> from for < длина>) Часть < строки>, начинающаяся с позиции и имеющая указанную < длину>
Trim(Leading|Trailing|Both < символ> from < строка>) < строка>, у которой удалены ведущие | концевые | с обоих сторон < символы>
Upper(< строка>) < строка>, преобразованная к верхнему регистру
User Определяет идентификатор пользователя


Прочитать остальную часть записи »

Иерархия классов Delphi, поддерживающих технологию COM и OLE

Общая иерархия классов Delphi, поддерживающих СОМ технологию имеет следующий вид.

TInterfacedObject – Определен в модуле System. Реализует интерфейс
IUnknown. Используется для реализации объектов внутри приложений.
Прочитать остальную часть записи »

Особенности промышленных серверов при работе с процедурами SQL

InterBase/Firebird

1) Процедуры действия

CREATE PROCEDURE < имя процедуры> [(< имя параметра>< тип данных>[(< размер>)],…)] [RETURNS (< имя параметра>< тип данных>[(< размер>)],…)] AS [DECLARE VARIABLE < имя переменной>< тип данных>[(< размер>)];]
BEGIN
<SQL-операторы>
END

Прочитать остальную часть записи »

Особенности ООП Delphi for DotNet

Чтобы подстроится под DotNet, внесены изменения в ООП Delphi:
1. Производный класс не TObject, а System.Object.( TObject переименованный System.Object).

2. Запрещены нетипизированные указатели и другие типы данных, которые напрямую обращаются к памяти.
Прочитать остальную часть записи »

Видимость компонентов класса, особенности разделов класса

Одно из больших преимуществ ООП – это инкапсуляция и ее поддержка для скрытия данных. Если работать с полями напрямую или просто показывать их, в результате детали реализации становятся известными и могут не всегда корректно взаимодействовать с внешним миром. Гораздо лучше написать методы для доступа к полям объекта, что позволит добиться настоящей инкапсуляции и исключит возможность некорректной модификации данных объектов. Вместо прямого доступа к полям вызываются соответствующие методы.
Прочитать остальную часть записи »

Понятие интерфейса и его назначение в Delphi

Объектный интерфейс или просто интерфейс – определяет методы, которые могут быть реализованы классом. Интерфейсы объявляются подобно классам, но не могут использоваться непосредственно и не имеют собственных реализаций методов, поскольку это обязанность любого класса, который поддерживает интерфейс – обеспечить реализации методов интерфейса. Интерфейс, подобно классу, также наследует методы всех своих предков. Переменная типа интерфейс может ссылаться на объекты, которые определяют этот интерфейс, однако, используя эту переменную, можно вызывать только методы, объявленные в этом интерфейсе.
Прочитать остальную часть записи »

Работа с процедурами SQL в Delphi

1) Основные свойства компонента TStoredProc
StoredProcName :Strings – позволяет с помощью встроенного компонента ComboBox указать имя хранимой процедуры.
Params :TParams – позволяет указать типы и значения входных и выходных параметров, если таковые есть.
Прочитать остальную часть записи »

Подготовка сообщений при исключениях

Использование ресурсных файлов
Одним из видов ресурсов Delphi являются таблицы строк. Ресурсы очень эффективно управляются системой и облегчают перевод программы на другой язык сообщений. В репозитории Delphi предусмотрен мастер для работы с ресурсами. Рассмотрим возможности использования ресурсов в виде таблицы строк для хранения текста сообщений об ошибках.
Прочитать остальную часть записи »

Особенности процедур – преимущества и трудности при работе с ними

1) Повышение скорости работы БД

➔ Процедуры хранятся в скомпилированном виде, а значит, СУБД не тратит время на компиляцию запроса при каждом его исполнении.
➔ Команда для вызова хранимой процедуры значительно короче, чем запрос, содержащийся в коде приложения, поэтому требуется меньше времени и трафика на передачу операторов на сервер БД.
➔ Быстродействие хранимых процедур обусловлено еще и тем, что после вызова они загружаются в память и выгружаются из нее с учетом алгоритма вытеснения по давности использования. В Oracle размер памяти для КЭШа хранимых процедур оказывается в файле Init.Ora.
➔ С помощью автоматической или ручной перекомпиляции изменяют плана выполнения из-за изменения индексов и т.п. В СУБД SQL Server при создании процедуры предусмотрена опция WITH RECOMPILE, используемая как при создании, так и при вызове процедур.
Прочитать остальную часть записи »

Хотите улучшить Fact? для разработчиков и программистов на Python

Желающим развивать Fact

Взгляд с высоты птичьего полёта

Fact написан на Python 2.4 (так же успешно протестирован на 2.5 и 2.6a0).

Программа обрабатывается в три шага:

token_list = TokenSeq() # 1. разбиение на токены
token_list = load(text) # и отсечение комментариев
code=Prog() # 2. компиляция во внутреннее
code=load(token_list) # представление (последовательность
# классов операций)
code.execute(context) # 3. выполнение программы в заданном
# контексте

Метод load класса TokenSeq осуществляет синтаксический разбор. Метод load класса Prog — лексический.
Прочитать остальную часть записи »

Архитектурные ошибки при разработке Perl/mod_perl ОО-приложений

Подходы
Речь пойдёт о двух вариантах организации объектно-ориентированного кода. Оба подхода приводят к решению и оба встречаются в реальной жизни.

Итак, выражаясь формально, нам надо получить из данных a данные b=f(a). (Собственно, всё программирование сводится к преобразованию одних данных в другие.)
Подход — программирование на объектах
Прочитать остальную часть записи »

Perl vs PHP: perl против PHP

Основная разница между Perl и PHP
Сама природа Perl и PHP различна. Perl — это язык программирования — универсальный инструмент для решения очень широкого круга задач. Perl не разрабатывался специально для Web-программирования.

PHP изначально предназначался для разработки Web-приложений. Он пытается сочетать мощь полноценного языка и преимущества узкоспециального средства. В поисках компромисса, PHP приобретает целый ряд спорных качеств.
Ядро языка
Прочитать остальную часть записи »

Python vs Perl – продолжение

Доисторические времена
Perl появился в 1988 году (строго говоря, в декабре 1987-го).
Какие основные идеи легли в основу Perl?

Основная объективная идея состояла в объединении возможностей различных средств для манипулирования текстовыми файлами: sh, awk, sed, tr. На тот момент такого единого средства не существовало, а необходимость в нём была.
Прочитать остальную часть записи »

Python vs Perl: Python против Perl

Читатель спросит: «Зачем сравнивать два таких несравнимых языка?» Отвечу. Perl и Python, будучи очень разными языками, всё же имеют много общего. Они универсальны (в отличии от, скажем, PHP), очень развиты (в отличии от shell, awk и подобных) и они оба являются скриптовыми языками (в отличии от не менее мощных C/C++, Pascal и других). Таким образом, они часто соперничают на одной территории и сравнивать их приходится.
Прочитать остальную часть записи »

О пользе рекурсии: примеры использования рекурсии

Эту заметку о пользе рекурсии я написал после прочтения соответствующей части книги С. Макконнелла «Совершенный код». Книга прекрасная, но, на мой взгляд, автор совершенно напрасно обещает уволить сотрудника, использующего рекурсию. Мне рекурсия помогала много раз, и я видел множество превосходных примеров её использования.
Прочитать остальную часть записи »

C++: Памятка C++, конструкторы, копирование, присвоение, деструкторы

Очень долго собирался написать памятку по разным приёмам программирования на C++. Но никак не мог выбрать достаточно компактный способ изложения. Получалось либо непонятно, либо очень длинно. В конце концов, я решил написать небольшой пример, снабжённый комментариями. Здесь, конечно, представлено далеко не всё, что стоило бы включить в памятку, но за-то то, что есть, изложено очень сжато, компактно и, мне кажется, что понятно. Я не планирую останавливаться на этом примере, для других аспектов программирования на C++ я постараюсь придумать другие примеры. Пока же, жду замечаний, предложений и критики этой первой заметки.
Прочитать остальную часть записи »

Кодировка в MySQL 4.1 : русские кодировки koi8r, windows 1251

Несколько слов о кодировках в MySQL 4.1 (но не 4.0).

Самое приятное в версии 4.1 то, что кодировки в которых работают клиент и сервер можно указывать отдельно. Поэтому для смены кодировки пересобирать сервер совсем не обязательно.
Настройка клиентов через my.cnf
Прочитать остальную часть записи »


Закажи работу СЕЙЧАС



Статистика

Рейтинг@Mail.ru