Поиск по блогу

вторник, 24 августа 2010 г.

RSSAdder: обновление конфига

Приветствую всех, кто пользуется утилитой RSSAdder для полуавтоматического добавления RSS-лент в RSS-агрегаторы.

Выкладываю новый конфиг. Этот конфиг "увидел свет" благодаря Никите, который прислал свои исправления (из списка удалено 2 неработающих агрегатора) и добавления (добавлено аж 27 новых агрегаторов!), за что ему огромное спасибо :)

Сама я новый список еще не тестировала, но, наверное, вскоре пройдусь по нему.

Ссылка для скачивания: новый конфиг для RSSAdder-а (82 агрегатора).

Надеюсь, всем пригодится :)

понедельник, 16 августа 2010 г.

Delphi: работа с RegExp в dll

Как работать с RegExp в библиотеках? Дело в том, что библиотека VBScript_RegExp_55_TLB — майкрософтская, без проблем тут не обошлось.

Вроде экземпляр объекта TRegExp создается, но при попытке с ним поработать вылазит ошибка:

Не был произведен вызов CoInitialize.


Если честно, столкнулась с этим впервые, пошла в интернет искать. Пришлось подключать ActiveX и использовать CoInitialize/CoUninitialize.

Нашла статью про подобную проблему. Попробовала так:

var
...
RE : TRegExp;
NeedToUninitialize : Boolean;
begin
NeedToUninitialize := Succeeded(CoInitialize(nil));
try
RE := TRegExp.Create(nil);
RE.IgnoreCase := true;
RE.Multiline := true;
RE.Global := true;
...

finally
RE.Free;
if NeedToUninitialize then CoUninitialize;
end;
...
end;


Но и тут не заладилось: если CoUninitialize писать без try...except, то на нем вываливается. И что-то мне эта ситуация совсем не понравилась, как-то мутно: коинициализируется — а потом что? Не будет ли проблем, если работать с библиотекой в несколько потоков и т.д.? Даже если CoInitialize/CoUninitialize делать не в функции, а при регистрации либы.

Кто-нибудь из читателей блога сталкивался с чем-нибудь подобным? Как решали?
___

Чтобы быть в курсе обновлений блога, можно подписаться на RSS.

Поделиться