Develop and Download Open Source Software

Browse CVS Repository

Diff of /gikonavigoeson/gikonavi/HTMLCreate.pas

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.35.6.7 by h677, Sun May 13 17:38:44 2007 UTC revision 1.44 by h677, Mon Oct 5 14:23:13 2009 UTC
# Line 32  type Line 32  type
32                  //! 何行までためるかのサイズ                  //! 何行までためるかのサイズ
33                  FBuffSize: Integer;                  FBuffSize: Integer;
34                  //! ブラウザのIHTMLDocument2インタフェースを保持する openからcloseの間で                  //! ブラウザのIHTMLDocument2インタフェースを保持する openからcloseの間で
35                  FBrowserDoc: Variant;                  FBrowserDoc: OleVariant;
36          public          public
37                  constructor Create(Browser: TWebBrowser; BuffSize: Integer);                  constructor Create(Browser: TWebBrowser; BuffSize: Integer);
38                  destructor Destory;                  destructor Destory;
# Line 600  const Line 600  const
600          _END: string = '&END=';          _END: string = '&END=';
601  var  var
602          i, j, k: Integer;          i, j, k: Integer;
603        hpos, qpos : Integer;
604          tmp: string;          tmp: string;
605          res: string;          res: string;
606  begin  begin
# Line 627  begin Line 628  begin
628                  end else begin                  end else begin
629                          k := LastDelimiter('/', tmp);                          k := LastDelimiter('/', tmp);
630                          Delete(tmp, 1, k);                          Delete(tmp, 1, k);
631                          if AnsiPos('-', tmp) < AnsiPos('"', tmp) then              hpos := AnsiPos('-', tmp);
632                                  Delete(tmp, AnsiPos('-', tmp), Length(tmp))              qpos := AnsiPos('"', tmp);
633                          else              if ( (hpos > 0) and (qpos > 0) ) then begin
634                                  Delete(tmp, AnsiPos('"', tmp), Length(tmp));                  if ( qpos < hpos ) then begin
635                        Delete(tmp, qpos, Length(tmp));
636                    end else begin
637                        Delete(tmp, hpos, Length(tmp));
638                    end;
639                end else begin
640                    if ( qpos > 0 ) then begin
641                        Delete(tmp, qpos, Length(tmp));
642                    end else if ( qpos > 0 ) then begin
643                        Delete(tmp, hpos, Length(tmp));
644                    end;
645                end;
646    
647                          PRes.FBody := PRes.FBody + '<a href="#' + tmp + '">';                          PRes.FBody := PRes.FBody + '<a href="#' + tmp + '">';
648                  end;                  end;
# Line 937  var Line 949  var
949  begin  begin
950      No := IntToStr(index + 1);      No := IntToStr(index + 1);
951      DivideStrLine(Line, @Res);      DivideStrLine(Line, @Res);
952        Res.FBody := DeleteLink(Res.FBody);
953      AddAnchorTag(@Res);      AddAnchorTag(@Res);
954      ConvRes(@Res, PResLink);      ConvRes(@Res, PResLink);
955      Res.FDateTime := AddBeProfileLink(Res.FDateTime, index + 1);      Res.FDateTime := AddBeProfileLink(Res.FDateTime, index + 1);
# Line 1458  begin Line 1471  begin
1471                  Line := CustomStringReplace(Line, '@`', ',');                  Line := CustomStringReplace(Line, '@`', ',');
1472          end;          end;
1473          //Trimしてはいけない気がする byもじゅ          //Trimしてはいけない気がする byもじゅ
1474          PRes.FName := RemoveToken(Line, delimiter);          PRes.FName := MojuUtils.RemoveToken(Line, delimiter);
1475          PRes.FMailTo := RemoveToken(Line, delimiter);          PRes.FMailTo := MojuUtils.RemoveToken(Line, delimiter);
1476          PRes.FDateTime := RemoveToken(Line, delimiter);          PRes.FDateTime := MojuUtils.RemoveToken(Line, delimiter);
1477          PRes.FBody := RemoveToken(Line, delimiter);          PRes.FBody := MojuUtils.RemoveToken(Line, delimiter);
1478          //2ちゃんねるとかだと、本文の先頭に1つ半角空白が入っているので削除する          //2ちゃんねるとかだと、本文の先頭に1つ半角空白が入っているので削除する
1479          //他の掲示板で、レス自体の空白かもしれないけどそれは諦める          //他の掲示板で、レス自体の空白かもしれないけどそれは諦める
1480          PRes.FBody := TrimLeft(PRes.FBody);          PRes.FBody := TrimLeft(PRes.FBody);
# Line 1469  begin Line 1482  begin
1482          if PRes.FBody = '' then          if PRes.FBody = '' then
1483                  PRes.FBody := '&nbsp;';                  PRes.FBody := '&nbsp;';
1484    
1485          PRes.FTitle := RemoveToken(Line, delimiter);          PRes.FTitle := MojuUtils.RemoveToken(Line, delimiter);
1486  end;  end;
1487    
1488  {!  {!
# Line 1480  end; Line 1493  end;
1493  class function THTMLCreate.DeleteLink(const s: string): string;  class function THTMLCreate.DeleteLink(const s: string): string;
1494  var  var
1495          s1: string;          s1: string;
1496          s2: string;      mark: string;
1497          idx: Integer;          idx: Integer;
         i: Integer;  
1498  begin  begin
1499          i := 0;      mark := '<a href="';
1500          Result := '';      Result := '';
1501          while True do begin      s1 := s;
1502                  s1 := GikoSys.GetTokenIndex(s, '<a href="', i);      idx := AnsiPos(mark, s1);
1503                  s2 := GikoSys.GetTokenIndex(s, '<a href="', i + 1);      while idx <> 0 do begin
1504            Result := Result + Copy(s1, 1, idx - 1);
1505                  idx := Pos('">', s1);          Delete(s1, 1, idx);
1506                  if idx <> 0 then          // タグのエンドを探す
1507                          Delete(s1, 1, idx + 1);          idx := AnsiPos('">', s1);
1508                  idx := Pos('">', s2);          if idx <> 0 then begin
1509                  if idx <> 0 then              Delete(s1, 1, idx + 1);
1510                          Delete(s2, 1, idx + 1);          end;
1511            // </a> まで
1512                  Result := Result + s1 + s2;          idx := AnsiPos('</a>', s1);
1513            if idx <> 0 then begin
1514                  if s2 = '' then              Result := Result + Copy(s1, 1, idx - 1);
1515                          Break;              Delete(s1, 1, idx + 3);
1516            end;
1517            idx := AnsiPos(mark, s1);
1518        end;
1519    
1520                  inc(i, 2);      Result := Result + s1;
         end;  
1521  end;  end;
1522  {  {
1523  \brief  HTML化のための置換  \brief  HTML化のための置換
# Line 1611  begin Line 1625  begin
1625  end;  end;
1626  procedure TBufferedWebBrowser.Open;  procedure TBufferedWebBrowser.Open;
1627  begin  begin
1628          FBrowserDoc := Idispatch( olevariant(FBrowser.ControlInterface).Document);          FBrowserDoc := FBrowser.ControlInterface.Document;
1629          FBrowserDoc.open;          FBrowserDoc.open;
1630          FBrowserDoc.charset := 'Shift_JIS';          FBrowserDoc.charset := 'Shift_JIS';
1631  end;  end;
# Line 1666  initialization Line 1680  initialization
1680    
1681  finalization  finalization
1682          if HTMLCreater <> nil then begin          if HTMLCreater <> nil then begin
1683                  HTMLCreater.Free;                  FreeAndNil(HTMLCreater);
                 HTMLCreater := nil;  
1684          end;          end;
1685    
1686  end.  end.

Legend:
Removed from v.1.35.6.7  
changed lines
  Added in v.1.44

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26