уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Это вторая часть постов, посвященных работе с Windows RSS Platform – API для управления подписками пользователя.

1 часть – “Windows RSS Platform в Delphi. Интерфейс IFeedsManager.

Сегодня рассмотрим работу с ещё одним интерфейсом, входящим в состав Windows RSS Platform – IFeedFolder.

Интерфейс IFeedFolder используется для управления папками и создания новых подписок на RSS-каналы.

Так как это вторая часть, то будем считать, что Вы уже импортировали заголовочный модуль с описанием всех интерфейсов API и приступим сразу к рассмотрению методов и свойств IFeedFolder.

Метод CreateFeed.

function CreateFeed(const feedName: WideString; const feedUrl: WideString): IDispatch;

Создает новую подписку на канал. Для нового канала необходимо задать feedName – название канала и feedUrl – URL канала. При этом следует учитывать, что имя не должно содержать символа ‘\’ т.к. этот символ зарезервирован системой для указания разделителя пути, а URL фида должен быть абсолютным, т.е. содержать название протокола – http:// или https:// (другие протоколы не поддерживаются).

После создания новой подписки метод возвращает ссылку на интерфейс IDispatch только что созданного фида (IFeed или IFeed2).

Пример использования метода:

var Folder: IFeedFolder;
    FeedManager: IFeedsManager;
begin
  FeedManager:=CoFeedsManager.Create;
//получили ссылку на корневую папку
  Folder:=FeedManager.RootFolder as IFeedFolder;
//создали новую подписку
  Folder.CreateFeed('WebDelphi','http://feeds.feedburner.com/myDelphi');

Метод CreateSubfolder

function CreateSubfolder(const folderName: WideString): IDispatch;

Создает новую поддиректорию в текущей.

folderName – имя новой папки.

Результат выполнения функции – ссылка на интерфейс новой поддиректории.

Пример. Создадим в корневой директории папку с названием “Delphi” и в этой папке ещё одну с названием “Блоги”:

var Folder: IFeedFolder;
    FeedManager: IFeedsManager;
begin
  FeedManager:=CoFeedsManager.Create;
  Folder:=FeedManager.RootFolder as IFeedFolder;
  Folder:=Folder.CreateSubfolder('Delphi') as IFeedFolder;
  Folder.CreateSubfolder('Блоги');
end;

Метод Delete

procedure Delete;

Удаляет текущую директорию из списка.

Метод ExistsFeed

function ExistsFeed(const feedName: WideString): WordBool;

Возвращает True, если канал с названием feedName найден в папке. Имя, заданное в параметре feedName не чувствительно к регистру. Например, проверим существование канала WebDelphi в корневой папке:

FeedManager:=CoFeedsManager.Create;
Folder:=FeedManager.RootFolder as IFeedFolder;
if Folder.ExistsFeed('webdelphi') then
  ShowMessage('Канал найден');

Метод ExistsSubfolder

function ExistsSubfolder(const folderName: WideString): WordBool;

Аналогично предыдущему методу проверяет наличие поддиректории с именем folderName и возвращает True, если поддиректория найдена.

Метод GetSubfolder

function GetSubfolder(const folderName: WideString): IDispatch;

Аналогично предыдущему методу возвращает ссылку на интерфейс поддиректории с именем folderName. Также, как и в предыдущем примере, рекомендуется перед использованием метода проверять наличие поддиректории методом ExistsSubfolder.

Метод Move

procedure Move(const newParentPath: WideString);

Перемещает директорию и помещает её по пути newParentPath. При использовании метода следует учитывать, что путь newParentPath должен существовать ДО вызова метода, не должен содержать пустых строк. Так, например, можно перенести директорию «Блоги» из директории «Delphi» и расположить её по новому пути «Программирование/Блоги»:

//получили ссылку на родителя
Folder:=Folder.GetSubfolder('Delphi')as IFeedFolder;
//проверили существование папки
  if Folder.ExistsSubfolder('Блоги') then
    begin
//получили ссылку на интерфейс
      Folder:=Folder.GetSubfolder('Блоги')as IFeedFolder;
//переместили папку. Папка "Программирование" была уже добавлена ранее
      Folder.Move('Программирование');
      ShowMessage(Folder.Path);
    end;

Метод Rename

procedure Rename(const folderName: WideString);

Переименовывает директорию, присваивая её имя folderName.

Пример — переименование директории «Блоги» в «Блогосфера»:

Folder:=FeedManager.RootFolder as IFeedFolder;
Folder:=Folder.GetSubfolder('Программирование')as IFeedFolder;
if Folder.ExistsSubfolder('Блоги') then
  begin
    Folder:=Folder.GetSubfolder('Блоги')as IFeedFolder;
    Folder.Rename('Блогосфера');
    ShowMessage(Folder.Path);
  end;

Свойство Feeds

property Feeds: IDispatch;

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

  FeedManager:=CoFeedsManager.Create;
  Folder:=FeedManager.RootFolder as IFeedFolder;
//получили ссылку на коллекцию
  FeedList:=Folder.Feeds as IFeedsEnum;
//перечислили имена элементов
  for i := 0 to FeedList.Count-1 do
     showMessage((FeedList.Item(i) as IFeed).Name);

Метод GetFeed

function GetFeed(const feedName: WideString): IDispatch;

Возвращает ссылку на интерфейс канала с названием feedName. Перед использованием метода рекомендуется проверить наличие канала, используя метод ExistsFeed, например так:

if Folder.ExistsFeed('webdelphi') then
 begin
   Feed:=Folder.GetFeed('webdelphi') as IFeed;
   ShowMessage(Feed.Description);
 end;

Свойство IsRoot

property IsRoot: WordBool read Get_IsRoot;

Содержит True, если директория является корневой (не имеет родителя)

Свойство Name

property Name: WideString read Get_Name;

Возвращает имя директории

Свойство Parent

property Parent: IDispatch read Get_Parent;

Содержит ссылку на родительский объект.

Cвойство Path

property Path: WideString read Get_Path;

Содержит полный путь до директории. включая её имя. Для корневой директории (см. RootFolder) путь — пустая строка.

Свойство Subfolders

property Subfolders: IDispatch read Get_Subfolders;

Аналогично свойству Feeds (см. выше) содержит ссылку на интерфейс IFeedsEnum для перечисления всех поддиректорий.

Свойство TotalItemCount

property TotalItemCount: Integer read Get_TotalItemCount;

Содержит общее количество элементов всех RSS-каналов, находящихся в заданной директории. Для демонстрации работы этого свойства добавим в директорию «Блогосфера» канал моего блога, затем проверим значение свойства ДО и ПОСЛЕ выполнения метода Download для канала:

Folder:=Folder.GetSubfolder('Программирование')as IFeedFolder;
  if Folder.ExistsSubfolder('Блогосфера') then
    begin
      Folder:=Folder.GetSubfolder('Блогосфера')as IFeedFolder;
      Feed:=Folder.CreateFeed('WebDelphi','http://feeds.feedburner.com/myDelphi')as IFeed;
      ShowMessage(IntToStr(Folder.TotalItemCount));//вернет 0
      Feed.Download;
      ShowMessage(IntToStr(Folder.TotalItemCount));//вернет 10
    end;

Свойство TotalUnreadItemCount

property TotalUnreadItemCount: Integer read Get_TotalUnreadItemCount;

Свойство возвращает количество непрочитанных элементов всех каналов, находящихся в заданной директории. Для демонстрации работы свойства можно воспользоваться предыдущим примером, заменив в нем TotalItemCount на TotalUnreadItemCount — результат при первом вызове будет тот же. Если же вы откроете IE и отметите несколько постов прочитанными, то значение свойства TotalUnreadItemCount станет меньше.

Вот те свойства и методы интерфейса IFeedFolder, которые мы можем без проблем использовать при работе с RSS-каналами и директориями подписок в Delphi.

Следите за новостями блога в FaceBook — следующая часть будет касаться работы с интерфейсом RSS-канала. Кстати, раз уж речь зашла о соц. сети, то скажу, что ВКонтакте мне нравится меньше, чем FaceBook. Недавно ломал голову над тем как самому удалить страницу ВКонтакте, пока не наткнулся на приведенный линк. Воспользовался одним из предложенных методов…посмотрим удалят ли.

Книжная полка

Описание: Рассмотрены практические вопросы по разработке клиент-серверных приложений в среде Delphi 7 и Delphi 2005 с использованием СУБД MS SQL Server 2000, InterBase и Firebird. Приведена информация о теории построения реляционных баз данных и языке SQL. Освещены вопросы эксплуатации и администрирования СУБД.
купить книгу delphi на ЛитРес
Описание: Рассмотрены малоосвещенные вопросы программирования в Delphi. Описаны методы интеграции VCL и API. Показаны внутренние механизмы VCL и приведены примеры вмешательства в эти механизмы. Рассмотрено использование сокетов в Delphi: различные режимы их работы, особенности для протоколов TCP и UDP и др.
купить книгу delphi на ЛитРес
0 0 голоса
Рейтинг статьи
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Подписаться
Уведомить о
1 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
Kellie
Kellie
08/03/2013 02:39

Heya! I’m at work browsing your blog from my new apple iphone! Just wanted to say I love reading through your blog and look forward to all your posts! Keep up the excellent work!