■スレッドリストへ戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 最新50

monazilla

209 :turbo type D@monazilla :2001/02/16(金) 12:39
//////////////////
//2chのHTMLソース(http://salad.2ch.net/bbstable.html)
//からTreeViewのItemを設定するソース
procedure TMonaplorerForm.GetTreeViewItem(HtmlSource: String);
var
 i: Integer;
 CategoryDataStart, CategoryDataEnd: Integer;
 CategoryTitleStart, CategoryTitleEnd: Integer;
 BoardCount, BoardDataStart, BoardDataEnd: Integer;
 BoardTitleStart, BoardTitleEnd: Integer;
 BoardURLStart, BoardURLEnd: Integer;
 S, CategoryData, CategoryTitle, BoardData, BoardTitle, BoardURL: String;
 NiChanCategory: TNichCategory;
 NiChanBoard: TNichBoard;
 BaseTreeNode: TTreeNode;
 CategoryTreeNode, BoardTreeNode: TTreeNode;
begin
 //板一覧を表示させるベースとなるTTreeNodeを指定
 BaseTreeNode := BoardListTree.Items.Item[1];

 S := HtmlSource;

 while true do
 begin
  if S = '' then break;

  //CategoryDataを取得する
  CategoryDataStart := AnsiPos('<B>', AnsiUpperCase(S));
  if CategoryDataStart = 0 then break;
  CategoryDataEnd := AnsiPos('<B>', Copy(S, CategoryDataStart+1, Length(S)));
  CategoryDataEnd := CategoryDataStart + CategoryDataEnd;
  if CategoryDataEnd = CategoryDataStart then
   CategoryDataEnd := Length(S)
  else
   Dec(CategoryDataEnd);

  CategoryData := Copy(S, CategoryDataStart, CategoryDataEnd - CategoryDataStart + 1);
  if CategoryData = '' then Assert(false, '鰓');
  Delete(S, CategoryDataStart, CategoryDataEnd - CategoryDataStart + 1);

  //CategoryTitleを取得する
  CategoryTitleStart := AnsiPos('<B>', CategoryData);
  if CategoryDataStart = 0 then Assert(false, '鰓');
  CategoryTitleEnd := AnsiPos('</B>', CategoryData);
  if CategoryDataEnd = 0 then Assert(false, '鰓');
  CategoryTitle := Copy(CategoryData, CategoryTitleStart,
             CategoryTitleEnd+3 - CategoryTitleStart + 1);
   //<B>...</B>からBタグを除去
  CategoryTitle := Copy(CategoryTitle, 4, Length(CategoryTitle)-4 - 4 + 1);
  if CategoryTitle = '' then Assert(false, '鰓');

317KB
新着レスの表示

スレッドリストへ戻る 全部 前100 次100 最新50

0ch BBS 2004-10-30