Поиск по этому блогу

четверг, 23 июня 2011 г.

Обмен информацией между процессами vs WM_COPYDATA

Реализация IPC vs  WM_COPYDATA

Немного теории.
Сообщения WM_COPYDATA дают возможность обмениваться информацией между процессами. Обмен происходит через ядро (kernel). В принимающем процессе выделяется память (space) и удерживается для скопированных ядром данных. Отправитель обязан передать указатель на структуру с данными (COPYDATASTRUCT).
WM_COPYDATA
wParam = (WPARAM) (HWND) hwnd;   // дескриптор передающего окна
lParam = (LPARAM) (PCOPYDATASTRUCT) pcds;   // pointer COPYDATASTRUCT  - указатель на структуру с данными
Результат true - если принимающая программа обработала сообщение, false - нет.
Реализация.

Fix SOAPHTTPTrans.pas (D7)


Фикс D7 для корректного отображения progress'а загрузки от  Deepak Shenoy 2.2.2004
SOAPHTTPTransp.pas

среда, 22 июня 2011 г.

Delphi. Web службы SOAP

В этой статье.
Небольшая схема работы веб сервисов
Практическая реализация простого приложения
Передача файла с progress bar'ом

Сервисы - это модульные приложения, которые могут быть вызваны и опубликованы в инете.
Работа с ними ведется с помощью протокола SOAP - стандарт легковесного протокола обмена информацией (simple object protocol). Это протокол использует XML для кодирования удаленных вызовов процедур и использует коммуникационный протокол HTTP.

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

CGI на Lazarus с использованием fcl-web

CGI на Lazarus с использованием fcl-web
Lazarus 0.9.30 FPC 2.4.2 fcl-web (ставила только weblaz.lpk rev.15359)
грузим отсюда http://code.google.com/p/qxpascal/downloads/list свежую библиотеку

понедельник, 20 июня 2011 г.

Delphi 2007 CGI приложение. Отправляем поток в формате utf-8

Этот код:
1. Кодирует обычную строку в utf-8
2. Помещает эту строчку в поток (stream)
3. И пишет этот поток в ответ (Response)
В результате клиент в браузере получает строчку Это данные из потока ...

вторник, 12 апреля 2011 г.

Регулярные выражения в Delphi

Задача. Выделить параметры из SQL запроса.
INSERT INTO DB2ADMIN.LHEADER(IDH, KEYW, VERNUMB, REGNUM, REGNAME, DESCR)
VALUES(:IDH, :KEYW, :VERNUMB, :REGNUM, :REGNAME, :DESCR);

понедельник, 14 марта 2011 г.

Преобразование даты из одного формата в другой, без использования TDateTime.

Задача. Получить дату в виде строки (из txt файла), преобразовать ее в формат понятный для БД. В дальнейшем преобразованная дата может быть залита в базу или в CSV файл (файл с разделителями)
Необходимо учесть, что разделители могут отсутствовать вовсе, и не совпадать с системными.
To-do Функции проверки даты ...

среда, 19 января 2011 г.

CGI на Lazarus

CGI на Lazarus. Минимальное приложение. POST & GET запросы
Windows / Lazarus 0.9.28.2 beta / fpc 2.2.4
Механизм взаимодействия cgi

1. При получении запроса обозревателя к cgi сервер запускает приложение, передает ему данные из командной строки запроса
2. cgi формирует ответ и помещает его в выходной поток
3. сервер посылает ответ, используя http протокол обратно обозревателю

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

DB2 запросы к blob полям

Задача. В блобе содержится javaArray с полными именами файлов, включая директории (windows). Необходимо вытащить все имена файлов (без директорий) одной строкой и одним sql запросом.