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.4 by h677, Thu Aug 25 16:11:02 2005 UTC revision 1.4.2.2 by h677, Sun Oct 30 16:29:51 2005 UTC
# Line 4  interface Line 4  interface
4    
5  uses  uses
6          Windows, Messages, SysUtils, Classes, {Graphics,} Controls, {Forms,}          Windows, Messages, SysUtils, Classes, {Graphics,} Controls, {Forms,}
7          ComCtrls, IniFiles, ShellAPI, Math, GikoSystem,          ComCtrls, IniFiles, ShellAPI, Math, GikoSystem, ActiveX,
8  {$IF Defined(DELPRO) }  {$IF Defined(DELPRO) }
9          SHDocVw,          SHDocVw,
10          MSHTML,          MSHTML,
# Line 31  type Line 31  type
31                  constructor Create;                  constructor Create;
32    
33                  function AddBeProfileLink(AID : string; ANum: Integer):string ;                  function AddBeProfileLink(AID : string; ANum: Integer):string ;
34                  procedure CreateUsePluginHTML(doc: Variant; ThreadItem: TThreadItem; var sTitle: string);                  procedure CreateUsePluginHTML(html: TStringList; ThreadItem: TThreadItem; var sTitle: string);
35                  procedure CreateUseSKINHTML(doc: Variant; ThreadItem: TThreadItem; ReadList: TStringList);                  procedure CreateUseSKINHTML(html: TStringList; ThreadItem: TThreadItem; ReadList: TStringList);
36                  procedure CreateUseCSSHTML(doc: Variant; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );                  procedure CreateUseCSSHTML(html: TStringList; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );
37                  procedure CreateDefaultHTML (doc: Variant; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );                  procedure CreateDefaultHTML (html: TStringList; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );
38                  function ConvertResAnchor(res: string): string;                  function ConvertResAnchor(res: string): string;
39          public          public
40                  { Public 宣言 }                  { Public 宣言 }
# Line 43  type Line 43  type
43                  function SkinedRes(skin: string; Res: TResRec; No: string): string;                  function SkinedRes(skin: string; Res: TResRec; No: string): string;
44                  function ConvRes(const Body, Bbs, Key,  ParamBBS, ParamKey, ParamStart, ParamTo, ParamNoFirst, ParamTrue : string; DatToHTML: boolean = false): string; overload;                  function ConvRes(const Body, Bbs, Key,  ParamBBS, ParamKey, ParamStart, ParamTo, ParamNoFirst, ParamTrue : string; DatToHTML: boolean = false): string; overload;
45                  function ConvRes(const Body, Bbs, Key,  ParamBBS, ParamKey, ParamStart, ParamTo, ParamNoFirst, ParamTrue, FullURL : string): string; overload;                  function ConvRes(const Body, Bbs, Key,  ParamBBS, ParamKey, ParamStart, ParamTo, ParamNoFirst, ParamTrue, FullURL : string): string; overload;
46                  procedure CreateHTML2(doc: Variant; ThreadItem: TThreadItem; var sTitle: string);                  procedure CreateHTML2(doc: IDispatch; ThreadItem: TThreadItem; var sTitle: string);
47                  procedure CreateHTML3(var html: TStringList; ThreadItem: TThreadItem; var sTitle: string);                  procedure CreateHTML3(var html: TStringList; ThreadItem: TThreadItem; var sTitle: string);
48          end;          end;
49    
# Line 118  begin Line 118  begin
118                          CustomStringReplace( Skin, '<SIZEKB/>', IntToStr( Floor( SizeByte / 1024 ) ));                          CustomStringReplace( Skin, '<SIZEKB/>', IntToStr( Floor( SizeByte / 1024 ) ));
119                          CustomStringReplace( Skin, '<SIZE/>', IntToStr( SizeByte ));                          CustomStringReplace( Skin, '<SIZE/>', IntToStr( SizeByte ));
120    
121    
122                          //----- とりあえずかちゅ〜しゃ互換用。コメントアウトしてもよし                          //----- とりあえずかちゅ〜しゃ互換用。コメントアウトしてもよし
123                          // やりかたが苦しいけど、オプションダイアログのプレビュー用 try                          if GikoSys.Setting.UseKatjushaType then begin
124                          try                                  // やりかたが苦しいけど、オプションダイアログのプレビュー用 try
125                                  if ThreadItem.ParentBoard <> nil then                                  try
126                                          if ThreadItem.ParentBoard.ParentCategory <> nil then                                          if ThreadItem.ParentBoard <> nil then
127                                                  CustomStringReplace( Skin, '&BBSNAME', ThreadItem.ParentBoard.ParentCategory.ParenTBBS.Title);                                                  if ThreadItem.ParentBoard.ParentCategory <> nil then
128                                          CustomStringReplace( Skin, '&THREADURL', ThreadItem.URL);                                                          CustomStringReplace( Skin, '&BBSNAME', ThreadItem.ParentBoard.ParentCategory.ParenTBBS.Title);
129                          except end;                                                  CustomStringReplace( Skin, '&THREADURL', ThreadItem.URL);
130                          CustomStringReplace( Skin, '&BOARDNAME', ThreadItem.ParentBoard.Title);                                  except end;
131                          CustomStringReplace( Skin, '&BOARDURL', ThreadItem.ParentBoard.URL);                                  CustomStringReplace( Skin, '&BOARDNAME', ThreadItem.ParentBoard.Title);
132                          CustomStringReplace( Skin, '&THREADNAME', ThreadItem.Title);                                  CustomStringReplace( Skin, '&BOARDURL', ThreadItem.ParentBoard.URL);
133                          CustomStringReplace( Skin, '&SKINPATH', GikoSys.Setting.CSSFileName);                                  CustomStringReplace( Skin, '&THREADNAME', ThreadItem.Title);
134                          CustomStringReplace( Skin, '&GETRESCOUNT', IntToStr( ThreadItem.NewReceive - 1 ));                                  CustomStringReplace( Skin, '&SKINPATH', GikoSys.Setting.CSSFileName);
135                          CustomStringReplace( Skin, '&NEWRESCOUNT', IntToStr( ThreadItem.NewResCount ));                                  CustomStringReplace( Skin, '&GETRESCOUNT', IntToStr( ThreadItem.NewReceive - 1 ));
136                          CustomStringReplace( Skin, '&ALLRESCOUNT', IntToStr( ThreadItem.AllResCount ));                                  CustomStringReplace( Skin, '&NEWRESCOUNT', IntToStr( ThreadItem.NewResCount ));
137                                    CustomStringReplace( Skin, '&ALLRESCOUNT', IntToStr( ThreadItem.AllResCount ));
138                          CustomStringReplace( Skin, '&NEWDATE', FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate));  
139                          CustomStringReplace( Skin, '&SIZEKB', IntToStr( Floor( SizeByte / 1024 ) ));                                  CustomStringReplace( Skin, '&NEWDATE', FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate));
140                          CustomStringReplace( Skin, '&SIZE', IntToStr( SizeByte ));                                  CustomStringReplace( Skin, '&SIZEKB', IntToStr( Floor( SizeByte / 1024 ) ));
141                          //----- ここまで                                  CustomStringReplace( Skin, '&SIZE', IntToStr( SizeByte ));
142                                    //----- ここまで
143                            end;
144                  end;                  end;
145                  Result := Skin.Text;                  Result := Skin.Text;
146          finally          finally
# Line 174  begin Line 177  begin
177                  Skin := CustomStringReplace( Skin, '<NONSPAMMINESS/>', FloatToStr( 100 - spamminess ) );                  Skin := CustomStringReplace( Skin, '<NONSPAMMINESS/>', FloatToStr( 100 - spamminess ) );
178    
179                  //----- かちゅ〜しゃ互換用。コメントアウトしてもよし                  //----- かちゅ〜しゃ互換用。コメントアウトしてもよし
180                  Skin := CustomStringReplace( Skin, '&NUMBER',                  if GikoSys.Setting.UseKatjushaType then begin
181                          '<a href="menu:' + No + '" name="' + No + '">' + No + '</a>');                          Skin := CustomStringReplace( Skin, '&NUMBER',
182                  Skin := CustomStringReplace( Skin, '&PLAINNUMBER', No);                                  '<a href="menu:' + No + '" name="' + No + '">' + No + '</a>');
183                  Skin := CustomStringReplace( Skin, '&NAME', '<b>' + Res.FName + '</b>');                          Skin := CustomStringReplace( Skin, '&PLAINNUMBER', No);
184                  Skin := CustomStringReplace( Skin, '&MAILNAME',                          Skin := CustomStringReplace( Skin, '&NAME', '<b>' + Res.FName + '</b>');
185                          '<a href="mailto:' + Res.FMailTo + '"><b>' + Res.FName + '</b></a>');                          Skin := CustomStringReplace( Skin, '&MAILNAME',
186                  Skin := CustomStringReplace( Skin, '&MAIL', Res.FMailTo);                                  '<a href="mailto:' + Res.FMailTo + '"><b>' + Res.FName + '</b></a>');
187                  Skin := CustomStringReplace( Skin, '&DATE', Res.FDateTime);                          Skin := CustomStringReplace( Skin, '&MAIL', Res.FMailTo);
188                  Skin := CustomStringReplace( Skin, '&MESSAGE', Res.FBody);                          Skin := CustomStringReplace( Skin, '&DATE', Res.FDateTime);
189                  Skin := CustomStringReplace( Skin, '&SPAMMINESS', FloatToStr( spamminess ) );                          Skin := CustomStringReplace( Skin, '&MESSAGE', Res.FBody);
190                  Skin := CustomStringReplace( Skin, '&NONSPAMMINESS', FloatToStr( 100 - spamminess ) );                          Skin := CustomStringReplace( Skin, '&SPAMMINESS', FloatToStr( spamminess ) );
191                            Skin := CustomStringReplace( Skin, '&NONSPAMMINESS', FloatToStr( 100 - spamminess ) );
192            end;
193                  //----- ここまで                  //----- ここまで
194    
195                  Result := Skin;                  Result := Skin;
# Line 511  const Line 516  const
516          ZN      = '0123456789−';          ZN      = '0123456789−';
517  var  var
518          i : integer;          i : integer;
519          s,r : string;          s : string;
520          b : TMbcsByteType;          b : TMbcsByteType;
521          sw: boolean;          sw: boolean;
522          sp: integer;          sp: integer;
# Line 548  var Line 553  var
553  begin  begin
554          { v1.0 b2 - 03 }          { v1.0 b2 - 03 }
555          s        :=     Body;          s        :=     Body;
556          r        :=     Body;          Result   :=     Body;
557          i        :=     1;          i        :=     1;
558          sw      :=      False;          sw      :=      False;
559          No      :=      '';          No      :=      '';
# Line 559  begin Line 564  begin
564          al      :=      False;          al      :=      False;
565          while true      do      begin          while true      do      begin
566                  b :=    ByteType(s, i);                  b :=    ByteType(s, i);
567                  case    b of                  case b of
568                          mbSingleByte    : begin                          mbSingleByte    : begin
569                                  if      (not sw) and (Copy(s,i,8) = GT + GT) then       begin                                  if      (not sw) and (Copy(s,i,8) = GT + GT) then       begin
570                                          if      (AnsiPos('<A HREF', AnsiUpperCase(oc)) = 0) then        begin                                          if      (Pos('<A HREF', AnsiUpperCase(oc)) = 0) then    begin
571                                                  sw      :=      True;                                                  sw      :=      True;
572                                                  sp      :=      i;                                                  sp      :=      i;
573                                                  i :=    i + 7;                                                  i :=    i + 7;
# Line 571  begin Line 576  begin
576                                          end;                                          end;
577                                  end else                                  end else
578                                  if      (not sw) and (Copy(s,i,8) = GT + GT) then       begin                                  if      (not sw) and (Copy(s,i,8) = GT + GT) then       begin
579                                          if      (AnsiPos('<A HREF', AnsiUpperCase(oc)) = 1) then        begin                                          if      (Pos('<A HREF', AnsiUpperCase(oc)) = 1) then    begin
580                                                  i :=    i + 7;                                                  i :=    i + 7;
581                                                  oc:='';                                                  oc:='';
582                                                  chk :=  True;                                                  chk :=  True;
583                                          end;                                          end;
584                                  end else                                  end else
585                                  if      (not sw) and (Copy(s,i,4) = GT) then    begin                                  if      (not sw) and (Copy(s,i,4) = GT) then    begin
586                                          if      (AnsiPos('<A HREF', AnsiUpperCase(oc)) = 0) then        begin                                          if      (Pos('<A HREF', AnsiUpperCase(oc)) = 0) then    begin
587                                                  sw      :=      True;                                                  sw      :=      True;
588                                                  sp      :=      i;                                                  sp      :=      i;
589                                                  i :=    i + 3;                                                  i :=    i + 3;
# Line 600  begin Line 605  begin
605                                  end else                                  end else
606                                  if      (sw) then begin                                  if      (sw) then begin
607                                          sx      :=      Copy(s,i,1);                                          sx      :=      Copy(s,i,1);
608                                          if      (AnsiPos(sx, SN) > 0)   then    begin                                          if      (Pos(sx, SN) > 0)       then    begin
609                                                  No      :=      No      + sx;                                                  No      :=      No      + sx;
610                                          end else begin                                          end else begin
611                                                  if      (No <> '') and (No <> '-')       then   begin                                                  if      (No <> '') and (No <> '-')       then   begin
# Line 663  begin Line 668  begin
668                  end;                  end;
669          end;          end;
670          for i :=        List.Count - 1  downto  0 do    begin          for i :=        List.Count - 1  downto  0 do    begin
                 //plName := Copy(PluginName, LastDelimiter('\',PluginName) + 1, Length(PluginName) - LastDelimiter('/',PluginName) -1 );  
671                  if      (AnsiPos('-', PIndex(List[i]).FNo) > 0) then    begin                  if      (AnsiPos('-', PIndex(List[i]).FNo) > 0) then    begin
672                          st      :=      ChooseString(PIndex(List[i]).FNo, '-', 0);                          st      :=      ChooseString(PIndex(List[i]).FNo, '-', 0);
673                          et      :=      ChooseString(PIndex(List[i]).FNo, '-', 1);                          et      :=      ChooseString(PIndex(List[i]).FNo, '-', 1);
# Line 671  begin Line 675  begin
675                          st      :=      PIndex(List[i]).FNo;                          st      :=      PIndex(List[i]).FNo;
676                          et      :=      PIndex(List[i]).FNo;                          et      :=      PIndex(List[i]).FNo;
677                  end;                  end;
678                  r :=    Copy(r,0, PIndex(List[i]).FIndexFrom - 1) +                  Result :=       Copy(Result,0, PIndex(List[i]).FIndexFrom - 1) +
679                                          Format('<a href="%s&%s=%s&%s=%s&%s=%s" target="_blank">',                                          Format('<a href="%s&%s=%s&%s=%s&%s=%s" target="_blank">',
680                                                                  [FullURL, ParamStart, st, ParamTo, et, ParamNoFirst, ParamTrue]) +                                                                  [FullURL, ParamStart, st, ParamTo, et, ParamNoFirst, ParamTrue]) +
681                                          Copy(r,PIndex(List[i]).FIndexFrom, PIndex(List[i]).FIndexTo - PIndex(List[i]).FIndexFrom) + '</A>' +                                          Copy(Result,PIndex(List[i]).FIndexFrom, PIndex(List[i]).FIndexTo - PIndex(List[i]).FIndexFrom) + '</A>' +
682                                          Copy(r,PIndex(List[i]).FIndexTo,Length(r));                                          Copy(Result,PIndex(List[i]).FIndexTo,Length(Result));
683                  Dispose(PIndex(List[i]));                  Dispose(PIndex(List[i]));
684          end;          end;
685          List.Free;          List.Free;
         Result  :=      r;  
686  end;  end;
687    
688  function THTMLCreate.ConvertResAnchor(res: string): string;  function THTMLCreate.ConvertResAnchor(res: string): string;
# Line 731  begin Line 734  begin
734  end;  end;
735    
736  //Pluginを利用するBoardのスレッドのHTMLを作成してdocに書き込む  //Pluginを利用するBoardのスレッドのHTMLを作成してdocに書き込む
737  procedure THTMLCreate.CreateUsePluginHTML(doc: Variant; ThreadItem: TThreadItem; var sTitle: string);  procedure THTMLCreate.CreateUsePluginHTML(html: TStringList; ThreadItem: TThreadItem; var sTitle: string);
738  var  var
739          i: integer;          i: integer;
740          NewReceiveNo: Integer;          NewReceiveNo: Integer;
# Line 745  begin Line 748  begin
748                          NewReceiveNo    := ThreadItem.NewReceive;                          NewReceiveNo    := ThreadItem.NewReceive;
749                          // フォントやサイズの設定                          // フォントやサイズの設定
750                          UserOptionalStyle := GikoSys.SetUserOptionalStyle;                          UserOptionalStyle := GikoSys.SetUserOptionalStyle;
751                            html.BeginUpdate;
752                          try                          try
753                                  doc.open;                                  //doc.open;
754                                  // ヘッダ                                  // ヘッダ
755                                  doc.Write( boardPlugIn.GetHeader( DWORD( threadItem ),                                  //doc.Write( boardPlugIn.GetHeader( DWORD( threadItem ),
756                                          '<style type="text/css">body {' + UserOptionalStyle + '}</style>' ) + #13#10 );                                  html.Append( boardPlugIn.GetHeader( DWORD( threadItem ),
757                                  doc.Write('<p id="idSearch"></p>' + #13#10 );                                          '<style type="text/css">body {' + UserOptionalStyle + '}</style>' ));
758                                    //      '<style type="text/css">body {' + UserOptionalStyle + '}</style>' ) + #13#10 );
759                                    //doc.Write('<p id="idSearch"></p>' + #13#10 );
760                                    html.Add('<p id="idSearch"></p>');
761                                  for i := 0 to threadItem.Count - 1 do begin                                  for i := 0 to threadItem.Count - 1 do begin
762                                          // 1 は必ず表示                                          // 1 は必ず表示
763                                          if i <> 0 then begin                                          if i <> 0 then begin
# Line 774  begin Line 780  begin
780                                                  try                                                  try
781                                                          if GikoSys.Setting.UseSkin then begin                                                          if GikoSys.Setting.UseSkin then begin
782                                                                  if FileExists( GikoSys.GetSkinNewmarkFileName ) then                                                                  if FileExists( GikoSys.GetSkinNewmarkFileName ) then
783                                                                          doc.Write( LoadFromSkin( GikoSys.GetSkinNewmarkFileName, ThreadItem, ThreadItem.Size ) + #13#10 )                                                                          //doc.Write( LoadFromSkin( GikoSys.GetSkinNewmarkFileName, ThreadItem, ThreadItem.Size ) + #13#10 )
784                                                                            html.Append( LoadFromSkin( GikoSys.GetSkinNewmarkFileName, ThreadItem, ThreadItem.Size ))
785                                                                  else                                                                  else
786                                                                          doc.Write( '<a name="new"></a>' + #13#10 );                                                                          //doc.Write( '<a name="new"></a>' + #13#10 );
787                                                                            html.Append( '<a name="new"></a>' );
788                                                          end else if GikoSys.Setting.UseCSS then begin                                                          end else if GikoSys.Setting.UseCSS then begin
789                                                                  doc.Write('<a name="new"></a><div class="new">新着レス <span class="newdate">' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</span></div>' + #13#10);                                                                  //doc.Write('<a name="new"></a><div class="new">新着レス <span class="newdate">' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</span></div>' + #13#10);
790                                                                    html.Append('<a name="new"></a><div class="new">新着レス <span class="newdate">' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</span></div>');
791                                                          end else begin                                                          end else begin
792                                                                  doc.Write('</dl>');                                                                  //doc.Write('</dl>');
793                                                                  doc.Write('<a name="new"></a>');                                                                  html.Append('</dl>');
794                                                                  doc.Write('<table width="100%" bgcolor="#3333CC" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#6666FF" valign="middle"><font size="-1" color="#ffffff"><b>新着レス ' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</b></font></td></tr></table>');                                                                  //doc.Write('<a name="new"></a>');
795                                                                  doc.Write('<dl> + #13#10');                                                                  html.Append('<a name="new"></a>');
796                                                                    //doc.Write('<table width="100%" bgcolor="#3333CC" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#6666FF" valign="middle"><font size="-1" color="#ffffff"><b>新着レス ' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</b></font></td></tr></table>');
797                                                                    html.Append('<table width="100%" bgcolor="#3333CC" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#6666FF" valign="middle"><font size="-1" color="#ffffff"><b>新着レス ' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</b></font></td></tr></table>');
798                                                                    //doc.Write('<dl> + #13#10');
799                                                                    html.Append('<dl>');
800                                                          end;                                                          end;
801                                                  except                                                  except
802                                                          doc.Write( '<a name="new"></a>' + #13#10);                                                          //doc.Write( '<a name="new"></a>' + #13#10);
803                                                            html.Append( '<a name="new"></a>');
804                                                  end;                                                  end;
805                                          end;                                          end;
806    
807                                          // レス                                          // レス
808                                          doc.Write( boardPlugIn.GetRes( DWORD( threadItem ), i + 1 ) + #13#10 );                                          //doc.Write( boardPlugIn.GetRes( DWORD( threadItem ), i + 1 ) + #13#10 );
809                                            html.Append( boardPlugIn.GetRes( DWORD( threadItem ), i + 1 ) );
810    
811                                          if ThreadItem.Kokomade = (i + 1) then begin                                          if ThreadItem.Kokomade = (i + 1) then begin
812                                                  // ここまで読んだ                                                  // ここまで読んだ
813                                                  try                                                  try
814                                                          if GikoSys.Setting.UseSkin then begin                                                          if GikoSys.Setting.UseSkin then begin
815                                                                  if FileExists( GikoSys.GetSkinBookmarkFileName ) then                                                                  if FileExists( GikoSys.GetSkinBookmarkFileName ) then
816                                                                          doc.Write( LoadFromSkin( GikoSys.GetSkinBookmarkFileName, ThreadItem, ThreadItem.Size ) + #13#10 )                                                                          //doc.Write( LoadFromSkin( GikoSys.GetSkinBookmarkFileName, ThreadItem, ThreadItem.Size ) + #13#10 )
817                                                                            html.Append( LoadFromSkin( GikoSys.GetSkinBookmarkFileName, ThreadItem, ThreadItem.Size ) )
818                                                                  else                                                                  else
819                                                                          doc.Write( '<a name="koko"></a>' + #13#10 );                                                                          //doc.Write( '<a name="koko"></a>' + #13#10 );
820                                                                            html.Append( '<a name="koko"></a>' );
821                                                          end else if GikoSys.Setting.UseCSS then begin                                                          end else if GikoSys.Setting.UseCSS then begin
822                                                                  doc.Write('<a name="koko"></a><div class="koko">ココまで読んだ</div>' + #13#10 );                                                                  //doc.Write('<a name="koko"></a><div class="koko">ココまで読んだ</div>' + #13#10 );
823                                                                    html.Append('<a name="koko"></a><div class="koko">ココまで読んだ</div>' );
824                                                          end else begin                                                          end else begin
825                                                                  doc.Write('</dl>');                                                                  //doc.Write('</dl>');
826                                                                  doc.Write('<a name="koko"></a><table width="100%" bgcolor="#55AA55" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#77CC77" valign="middle"><font size="-1" color="#ffffff"><b>ココまで読んだ</b></font></td></tr></table>');                                                                  html.Append('</dl>');
827                                                                  doc.Write('<dl>' + #13#10 );                                                                  //doc.Write('<a name="koko"></a><table width="100%" bgcolor="#55AA55" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#77CC77" valign="middle"><font size="-1" color="#ffffff"><b>ココまで読んだ</b></font></td></tr></table>');
828                                                                    html.Append('<a name="koko"></a><table width="100%" bgcolor="#55AA55" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#77CC77" valign="middle"><font size="-1" color="#ffffff"><b>ココまで読んだ</b></font></td></tr></table>');
829                                                                    //doc.Write('<dl>' + #13#10 );
830                                                                    html.Append('<dl>' );
831                                                          end;                                                          end;
832                                                  except                                                  except
833                                                          doc.Write( '<a name="koko"></a>' + #13#10 );                                                          //doc.Write( '<a name="koko"></a>' + #13#10 );
834                                                            html.Append( '<a name="koko"></a>' );
835                                                  end;                                                  end;
836                                          end;                                          end;
837                                  end;                                  end;
838    
839    
840                                  // スキン(フッタ)                                  // スキン(フッタ)
841                                  doc.Write( boardPlugIn.GetFooter( DWORD( threadItem ), '<a name="bottom"></a>' ) + #13#10 );                                  //doc.Write( boardPlugIn.GetFooter( DWORD( threadItem ), '<a name="bottom"></a>' ) + #13#10 );
842                                    html.Append( boardPlugIn.GetFooter( DWORD( threadItem ), '<a name="bottom"></a>' ) );
843                          finally                          finally
844                                  doc.Close;                                  //doc.Close;
845                                    html.EndUpdate;
846                          end;                          end;
847    
848                  end;                  end;
# Line 826  begin Line 850  begin
850  end;  end;
851    
852    
853  procedure THTMLCreate.CreateUseSKINHTML(doc: Variant; ThreadItem: TThreadItem; ReadList: TStringList);  procedure THTMLCreate.CreateUseSKINHTML(html : TStringList; ThreadItem: TThreadItem; ReadList: TStringList);
854  var  var
855          i: integer;          i: integer;
856          No: string;          No: string;
# Line 850  begin Line 874  begin
874                          // フォントやサイズの設定                          // フォントやサイズの設定
875                          UserOptionalStyle := GikoSys.SetUserOptionalStyle;                          UserOptionalStyle := GikoSys.SetUserOptionalStyle;
876                          CSSFileName := GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName;                          CSSFileName := GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName;
877                          doc.open;                          //doc.open;
878                            html.BeginUpdate;
879                          try                          try
880                                  doc.charset := 'Shift_JIS';                                  //doc.charset := 'Shift_JIS';
881    
882                                  // スキンの設定                                  // スキンの設定
883                                  try                                  try
# Line 860  begin Line 885  begin
885                                          if Length( UserOptionalStyle ) > 0 then                                          if Length( UserOptionalStyle ) > 0 then
886                                                  SkinHeader := CustomStringReplace( SkinHeader, '</head>',                                                  SkinHeader := CustomStringReplace( SkinHeader, '</head>',
887                                                          '<style type="text/css">body {' + UserOptionalStyle + '}</style></head>');                                                          '<style type="text/css">body {' + UserOptionalStyle + '}</style></head>');
888                                          doc.Write( SkinHeader + #13#10);                                          //doc.Write( SkinHeader + #13#10);
889                                            html.Append( SkinHeader);
890                                  except                                  except
891                                  end;                                  end;
892    
# Line 874  begin Line 900  begin
900                                  except                                  except
901                                  end;                                  end;
902    
903                                  doc.Write('<p id="idSearch"></p>' + #13#10);                                  //doc.Write('<p id="idSearch"></p>' + #13#10);
904                                  doc.Write('<a name="top"></a>' + #13#10);                                  html.Append('<p id="idSearch"></p>');
905                                    //doc.Write('<a name="top"></a>' + #13#10);
906                                    html.Append('<a name="top"></a>');
907    
908                                  for i := 0 to ReadList.Count - 1 do begin                                  for i := 0 to ReadList.Count - 1 do begin
909                                          // 1 は必ず表示                                          // 1 は必ず表示
# Line 898  begin Line 926  begin
926                                          if (NewReceiveNo = i + 1) or ((NewReceiveNo = 0) and (i = 0)) then begin                                          if (NewReceiveNo = i + 1) or ((NewReceiveNo = 0) and (i = 0)) then begin
927                                                  try                                                  try
928                                                          if FileExists( GikoSys.GetSkinNewmarkFileName ) then                                                          if FileExists( GikoSys.GetSkinNewmarkFileName ) then
929                                                                  doc.Write( LoadFromSkin( GikoSys.GetSkinNewmarkFileName, ThreadItem, ThreadItem.Size )  + #13#10)                                                                  //doc.Write( LoadFromSkin( GikoSys.GetSkinNewmarkFileName, ThreadItem, ThreadItem.Size )  + #13#10)
930                                                                    html.Append( LoadFromSkin( GikoSys.GetSkinNewmarkFileName, ThreadItem, ThreadItem.Size ) )
931                                                          else                                                          else
932                                                                  doc.Write( '<a name="new"></a>' + #13#10 );                                                                  //doc.Write( '<a name="new"></a>' + #13#10 );
933                                                                    html.Append( '<a name="new"></a>' );
934                                                  except                                                  except
935                                                          doc.Write( '<a name="new"></a>' + #13#10 );                                                          //doc.Write( '<a name="new"></a>' + #13#10 );
936                                                            html.Append( '<a name="new"></a>' );
937                                                  end;                                                  end;
938                                          end;                                          end;
939    
# Line 921  begin Line 952  begin
952                                                                  // 通常のレス                                                                  // 通常のレス
953                                                                  strTmp := ReplaceRes( SkinRes );                                                                  strTmp := ReplaceRes( SkinRes );
954    
955                                                          doc.Write( strTmp + #13#10 );                                                          //doc.Write( strTmp + #13#10 );
956                                                            html.Append( strTmp );
957                                                  except                                                  except
958                                                  end;                                                  end;
959                                          end;                                          end;
# Line 930  begin Line 962  begin
962                                                  // ここまで読んだ                                                  // ここまで読んだ
963                                                  try                                                  try
964                                                          if FileExists( GikoSys.GetSkinBookmarkFileName ) then                                                          if FileExists( GikoSys.GetSkinBookmarkFileName ) then
965                                                                  doc.Write( LoadFromSkin( GikoSys.GetSkinBookmarkFileName, ThreadItem, ThreadItem.Size ) + #13#10 )                                                                  //doc.Write( LoadFromSkin( GikoSys.GetSkinBookmarkFileName, ThreadItem, ThreadItem.Size ) + #13#10 )
966                                                                    html.Append( LoadFromSkin( GikoSys.GetSkinBookmarkFileName, ThreadItem, ThreadItem.Size ) )
967                                                          else                                                          else
968                                                                  doc.Write( '<a name="koko"></a>' + #13#10 );                                                                  //doc.Write( '<a name="koko"></a>' + #13#10 );
969                                                                    html.Append( '<a name="koko"></a>' );
970                                                  except                                                  except
971                                                          doc.Write( '<a name="koko"></a>' + #13#10 );                                                          //doc.Write( '<a name="koko"></a>' + #13#10 );
972                                                            html.Append( '<a name="koko"></a>' );
973                                                  end;                                                  end;
974                                          end;                                          end;
975                                  end;                                  end;
976    
977                                  doc.Write('<a name="bottom"></a>' + #13#10);                                  //doc.Write('<a name="bottom"></a>' + #13#10);
978                                    html.Append('<a name="bottom"></a>' );
979                                  // スキン(フッタ)                                  // スキン(フッタ)
980                                  try                                  try
981                                          doc.Write( LoadFromSkin( GikoSys.GetSkinFooterFileName, ThreadItem, ThreadItem.Size ) + #13#10 );                                          //doc.Write( LoadFromSkin( GikoSys.GetSkinFooterFileName, ThreadItem, ThreadItem.Size ) + #13#10 );
982                                            html.Append( LoadFromSkin( GikoSys.GetSkinFooterFileName, ThreadItem, ThreadItem.Size ) );
983                                  except                                  except
984                                  end;                                  end;
985                          finally                          finally
986                                  doc.close;                                  //doc.close;
987                                    html.EndUpdate;
988                          end;                          end;
989                  end;                  end;
990          end;          end;
991  end;  end;
992    
993  procedure THTMLCreate.CreateUseCSSHTML(doc: Variant; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );  procedure THTMLCreate.CreateUseCSSHTML(html: TStringList; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );
994  var  var
995          i: integer;          i: integer;
996          No: string;          No: string;
# Line 962  var Line 1000  var
1000          UserOptionalStyle: string;          UserOptionalStyle: string;
1001  begin  begin
1002          if ThreadItem <> nil then begin          if ThreadItem <> nil then begin
1003                  doc.open;                  //doc.open;
1004                    html.BeginUpdate;
1005                  try                  try
1006                          doc.charset := 'Shift_JIS';                          //doc.charset := 'Shift_JIS';
1007                          NewReceiveNo := ThreadItem.NewReceive;                          NewReceiveNo := ThreadItem.NewReceive;
1008                          // フォントやサイズの設定                          // フォントやサイズの設定
1009                          UserOptionalStyle := GikoSys.SetUserOptionalStyle;                          UserOptionalStyle := GikoSys.SetUserOptionalStyle;
1010                          CSSFileName := GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName;                          CSSFileName := GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName;
1011                          if GikoSys.Setting.UseCSS and FileExists(CSSFileName) then begin                          if GikoSys.Setting.UseCSS and FileExists(CSSFileName) then begin
1012                                  //CSS使用                                  //CSS使用
1013                                  doc.Write('<html><head>' + #13#10);                                  html.Append('<html><head>');
1014                                  doc.Write('<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">' + #13#10);                                  html.Append('<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">');
1015                                  doc.Write('<title>' + sTitle + '</title>' + #13#10);                                  html.Append('<title>' + sTitle + '</title>');
1016                                  doc.Write('<link rel="stylesheet" href="'+CSSFileName+'" type="text/css">' + #13#10);                                  html.Append('<link rel="stylesheet" href="'+CSSFileName+'" type="text/css">');
1017                                  if Length( UserOptionalStyle ) > 0 then                                  if Length( UserOptionalStyle ) > 0 then
1018                                          doc.Write('<style type="text/css">body {' + UserOptionalStyle + '}</style>' + #13#10);                                          html.Append('<style type="text/css">body {' + UserOptionalStyle + '}</style>');
1019                                  doc.Write('</head>' + #13#10);                                  html.Append('</head>');
1020                                  doc.Write('<body>' + #13#10);                                  html.Append('<body>');
1021                                  doc.Write('<a name="top"></a>' + #13#10);                                  html.Append('<a name="top"></a>');
1022                                  doc.Write('<p id="idSearch"></p>' + #13#10);                                  html.Append('<p id="idSearch"></p>');
1023                                  doc.Write('<div class="title">' + sTitle + '</div>' + #13#10);                                  html.Append('<div class="title">' + sTitle + '</div>');
1024                                  for i := 0 to ReadList.Count - 1 do begin                                  for i := 0 to ReadList.Count - 1 do begin
1025                                          // 1 は必ず表示                                          // 1 は必ず表示
1026                                          if i <> 0 then begin                                          if i <> 0 then begin
# Line 1000  begin Line 1039  begin
1039                                          end;                                          end;
1040    
1041                                          if (NewReceiveNo = (i + 1)) or ((NewReceiveNo = 0) and (i = 0)) then begin                                          if (NewReceiveNo = (i + 1)) or ((NewReceiveNo = 0) and (i = 0)) then begin
1042                                                  doc.Write('<a name="new"></a><div class="new">新着レス <span class="newdate">' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</span></div>' + #13#10);                                                  html.Append('<a name="new"></a><div class="new">新着レス <span class="newdate">' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</span></div>');
1043                                          end;                                          end;
1044    
1045                                          if (Trim(ReadList[i]) <> '') then begin                                          if (Trim(ReadList[i]) <> '') then begin
# Line 1009  begin Line 1048  begin
1048                                                  Res.FBody := ConvRes(AddAnchorTag(Res.FBody), ThreadItem.ParentBoard.BBSID, ChangeFileExt(ThreadItem.FileName, ''), 'bbs', 'key', 'st', 'to', 'nofirst', 'true');                                                  Res.FBody := ConvRes(AddAnchorTag(Res.FBody), ThreadItem.ParentBoard.BBSID, ChangeFileExt(ThreadItem.FileName, ''), 'bbs', 'key', 'st', 'to', 'nofirst', 'true');
1049                                                  Res.FDateTime := AddBeProfileLink(Res.FDateTime, i + 1);                                                  Res.FDateTime := AddBeProfileLink(Res.FDateTime, i + 1);
1050                                                  if Res.FMailTo = '' then                                                  if Res.FMailTo = '' then
1051                                                          doc.Write('<a name="' + No + '"></a>'                                                          html.Append('<a name="' + No + '"></a>'
1052                                                                                  + '<div class="header"><span class="no"><a href="menu:' + No + '">' + No + '</a></span> '                                                                                  + '<div class="header"><span class="no"><a href="menu:' + No + '">' + No + '</a></span> '
1053                                                                                  + '<span class="name_label">名前:</span> '                                                                                  + '<span class="name_label">名前:</span> '
1054                                                                                  + '<span class="name"><b>' + Res.FName + '</b></span> '                                                                                  + '<span class="name"><b>' + Res.FName + '</b></span> '
1055                                                                                  + '<span class="date_label">投稿日:</span> '                                                                                  + '<span class="date_label">投稿日:</span> '
1056                                                                                  + '<span class="date">' + Res.FDateTime+ '</span></div>'                                                                                  + '<span class="date">' + Res.FDateTime+ '</span></div>'
1057                                                                                  + '<div class="mes">' + Res.FBody + ' </div>' + #13#10)                                                                                  + '<div class="mes">' + Res.FBody + ' </div>')
1058                                                  else if GikoSys.Setting.ShowMail then                                                  else if GikoSys.Setting.ShowMail then
1059                                                          doc.Write('<a name="' + No + '"></a>'                                                          html.Append('<a name="' + No + '"></a>'
1060                                                                                  + '<div class="header"><span class="no"><a href="menu:' + No + '">' + No + '</a></span>'                                                                                  + '<div class="header"><span class="no"><a href="menu:' + No + '">' + No + '</a></span>'
1061                                                                                  + '<span class="name_label"> 名前: </span>'                                                                                  + '<span class="name_label"> 名前: </span>'
1062                                                                                  + '<a class="name_mail" href="mailto:' + Res.FMailTo + '">'                                                                                  + '<a class="name_mail" href="mailto:' + Res.FMailTo + '">'
1063                                                                                  + '<b>' + Res.FName + '</b></a><span class="mail"> [' + Res.FMailTo + ']</span>'                                                                                  + '<b>' + Res.FName + '</b></a><span class="mail"> [' + Res.FMailTo + ']</span>'
1064                                                                                  + '<span class="date_label"> 投稿日:</span>'                                                                                  + '<span class="date_label"> 投稿日:</span>'
1065                                                                                  + '<span class="date"> ' + Res.FDateTime+ '</span></div>'                                                                                  + '<span class="date"> ' + Res.FDateTime+ '</span></div>'
1066                                                                                  + '<div class="mes">' + Res.FBody + ' </div>' + #13#10)                                                                                  + '<div class="mes">' + Res.FBody + ' </div>')
1067                                                  else                                                  else
1068                                                          doc.Write('<a name="' + No + '"></a>'                                                          html.Append('<a name="' + No + '"></a>'
1069                                                                                  + '<div class="header"><span class="no"><a href="menu:' + No + '">' + No + '</a></span>'                                                                                  + '<div class="header"><span class="no"><a href="menu:' + No + '">' + No + '</a></span>'
1070                                                                                  + '<span class="name_label"> 名前: </span>'                                                                                  + '<span class="name_label"> 名前: </span>'
1071                                                                                  + '<a class="name_mail" href="mailto:' + Res.FMailTo + '">'                                                                                  + '<a class="name_mail" href="mailto:' + Res.FMailTo + '">'
1072                                                                                  + '<b>' + Res.FName + '</b></a>'                                                                                  + '<b>' + Res.FName + '</b></a>'
1073                                                                                  + '<span class="date_label"> 投稿日:</span>'                                                                                  + '<span class="date_label"> 投稿日:</span>'
1074                                                                                  + '<span class="date"> ' + Res.FDateTime+ '</span></div>'                                                                                  + '<span class="date"> ' + Res.FDateTime+ '</span></div>'
1075                                                                                  + '<div class="mes">' + Res.FBody + ' </div>' + #13#10);                                                                                  + '<div class="mes">' + Res.FBody + ' </div>');
1076                                          end;                                          end;
1077    
1078                                          if ThreadItem.Kokomade = (i + 1) then begin                                          if ThreadItem.Kokomade = (i + 1) then begin
1079                                                  doc.Write('<a name="koko"></a><div class="koko">ココまで読んだ</div>' + #13#10);                                                  html.Append('<a name="koko"></a><div class="koko">ココまで読んだ</div>');
1080                                          end;                                          end;
1081    
1082                                  end;                                  end;
1083    
1084                                  doc.Write('<a name="bottom"></a>' + #13#10);                                  html.Append('<a name="bottom"></a>');
1085                                  doc.Write('<a name="last"></a>' + #13#10);                                  html.Append('<a name="last"></a>');
1086                                  doc.Write('</body></html>' + #13#10);                                  html.Append('</body></html>');
1087                          end;                          end;
1088                  finally                  finally
1089                          doc.Close;                          html.EndUpdate;
1090                            //doc.Close;
1091                  end;                  end;
1092          end;          end;
1093  end;  end;
1094    
1095  procedure THTMLCreate.CreateDefaultHTML (doc: Variant; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );  procedure THTMLCreate.CreateDefaultHTML (html: TStringList; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );
1096  var  var
1097          i: integer;          i: integer;
1098          No: string;          No: string;
# Line 1060  var Line 1100  var
1100          Res: TResRec;          Res: TResRec;
1101  begin  begin
1102          if ThreadItem <> nil then begin          if ThreadItem <> nil then begin
1103                  doc.open;                  //doc.open;
1104                    html.BeginUpdate;
1105                  try                  try
1106                          doc.charset := 'Shift_JIS';                          //doc.charset := 'Shift_JIS';
1107                          NewReceiveNo := ThreadItem.NewReceive;                          NewReceiveNo := ThreadItem.NewReceive;
1108                          doc.Write('<html><head>' + #13#10);                          html.Append('<html><head>');
1109                          doc.Write('<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">' + #13#10);                          html.Append('<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">');
1110                          doc.Write('<title>' + sTitle + '</title></head>' + #13#10);                          html.Append('<title>' + sTitle + '</title></head>');
1111                          doc.Write('<body TEXT="#000000" BGCOLOR="#EFEFEF" link="#0000FF" alink="#FF0000" vlink="#660099">' + #13#10);                          html.Append('<body TEXT="#000000" BGCOLOR="#EFEFEF" link="#0000FF" alink="#FF0000" vlink="#660099">');
1112                          doc.Write('<a name="top"></a>' + #13#10);                          html.Append('<a name="top"></a>');
1113                          doc.Write('<font size=+1 color="#FF0000">' + sTitle + '</font>' + #13#10);                          html.Append('<font size=+1 color="#FF0000">' + sTitle + '</font>');
1114                          doc.Write('<dl>' + #13#10);                          html.Append('<dl>');
1115                          doc.Write('<p id="idSearch"></p>' + #13#10);                          html.Append('<p id="idSearch"></p>');
1116                          for i := 0 to ReadList.Count - 1 do begin                          for i := 0 to ReadList.Count - 1 do begin
1117                                  // 1 は必ず表示                                  // 1 は必ず表示
1118                                  if i <> 0 then begin                                  if i <> 0 then begin
# Line 1090  begin Line 1131  begin
1131                                  end;                                  end;
1132    
1133                                  if (NewReceiveNo = (i + 1)) or ((NewReceiveNo = 0) and (i = 0)) then begin                                  if (NewReceiveNo = (i + 1)) or ((NewReceiveNo = 0) and (i = 0)) then begin
1134                                          doc.Write('</dl>' + #13#10);                                          html.Append('</dl>');
1135                                          doc.Write('<a name="new"></a>' + #13#10);                                          html.Append('<a name="new"></a>');
1136                                          doc.Write('<table width="100%" bgcolor="#3333CC" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#6666FF" valign="middle"><font size="-1" color="#ffffff"><b>新着レス ' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</b></font></td></tr></table>' + #13#10);                                          html.Append('<table width="100%" bgcolor="#3333CC" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#6666FF" valign="middle"><font size="-1" color="#ffffff"><b>新着レス ' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</b></font></td></tr></table>');
1137                                          doc.Write('<dl>' + #13#10);                                          html.Append('<dl>');
1138                                  end;                                  end;
1139    
1140                                  if (Trim(ReadList[i]) <> '') then begin                                  if (Trim(ReadList[i]) <> '') then begin
# Line 1102  begin Line 1143  begin
1143                                          Res.FBody := ConvRes(AddAnchorTag(Res.FBody), ThreadItem.ParentBoard.BBSID, ChangeFileExt(ThreadItem.FileName, ''), 'bbs', 'key', 'st', 'to', 'nofirst', 'true');                                          Res.FBody := ConvRes(AddAnchorTag(Res.FBody), ThreadItem.ParentBoard.BBSID, ChangeFileExt(ThreadItem.FileName, ''), 'bbs', 'key', 'st', 'to', 'nofirst', 'true');
1144                                          Res.FDateTime := AddBeProfileLink(Res.FDateTime, i + 1);                                          Res.FDateTime := AddBeProfileLink(Res.FDateTime, i + 1);
1145                                          if Res.FMailTo = '' then                                          if Res.FMailTo = '' then
1146                                                  doc.Write('<a name="' + No + '"></a><dt><a href="menu:' + No + '">' + No + '</a> 名前:<font color="forestgreen"><b> ' + Res.FName + ' </b></font> 投稿日: <span class="date">' + Res.FDateTime+ '</span><br><dd>' + Res.Fbody + ' <br><br><br>' + #13#10)                                                  html.Append('<a name="' + No + '"></a><dt><a href="menu:' + No + '">' + No + '</a> 名前:<font color="forestgreen"><b> ' + Res.FName + ' </b></font> 投稿日: <span class="date">' + Res.FDateTime+ '</span><br><dd>' + Res.Fbody + ' <br><br><br>')
1147                                          else if GikoSys.Setting.ShowMail then                                          else if GikoSys.Setting.ShowMail then
1148                                                  doc.Write('<a name="' + No + '"></a><dt><a href="menu:' + No + '">' + No + '</a> 名前:<a href="mailto:' + Res.FMailTo + '"><b> ' + Res.FName + ' </B></a> [' + Res.FMailTo + '] 投稿日: <span class="date">' + Res.FDateTime+ '</span><br><dd>' + Res.Fbody + ' <br><br><br>' + #13#10)                                                  html.Append('<a name="' + No + '"></a><dt><a href="menu:' + No + '">' + No + '</a> 名前:<a href="mailto:' + Res.FMailTo + '"><b> ' + Res.FName + ' </B></a> [' + Res.FMailTo + '] 投稿日: <span class="date">' + Res.FDateTime+ '</span><br><dd>' + Res.Fbody + ' <br><br><br>')
1149                                          else                                          else
1150                                                  doc.Write('<a name="' + No + '"></a><dt><a href="menu:' + No + '">' + No + '</a> 名前:<a href="mailto:' + Res.FMailTo + '"><b> ' + Res.FName + ' </B></a> 投稿日: <span class="date">' + Res.FDateTime+ '</span><br><dd>' + Res.Fbody + ' <br><br><br>' + #13#10);                                                  html.Append('<a name="' + No + '"></a><dt><a href="menu:' + No + '">' + No + '</a> 名前:<a href="mailto:' + Res.FMailTo + '"><b> ' + Res.FName + ' </B></a> 投稿日: <span class="date">' + Res.FDateTime+ '</span><br><dd>' + Res.Fbody + ' <br><br><br>');
1151                                  end;                                  end;
1152                                  if ThreadItem.Kokomade = (i + 1) then begin                                  if ThreadItem.Kokomade = (i + 1) then begin
1153                                          doc.Write('</dl>' + #13#10);                                          html.Append('</dl>');
1154                                          doc.Write('<a name="koko"></a><table width="100%" bgcolor="#55AA55" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#77CC77" valign="middle"><font size="-1" color="#ffffff"><b>ココまで読んだ</b></font></td></tr></table>' + #13#10);                                          html.Append('<a name="koko"></a><table width="100%" bgcolor="#55AA55" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#77CC77" valign="middle"><font size="-1" color="#ffffff"><b>ココまで読んだ</b></font></td></tr></table>');
1155                                          doc.Write('<dl>' + #13#10);                                          html.Append('<dl>');
1156                                  end;                                  end;
1157                          end;                          end;
1158                          doc.Write('</dl>' + #13#10);                          html.Append('</dl>');
1159                          doc.Write('<a name="bottom"></a>' + #13#10);                          html.Append('<a name="bottom"></a>');
1160                          doc.Write('</body></html>' + #13#10);                          html.Append('</body></html>');
1161                  finally                  finally
1162                          doc.Close;                          //doc.Close;
1163                            html.EndUpdate;
1164                  end;                  end;
1165          end;          end;
1166  end;  end;
1167    
1168  procedure THTMLCreate.CreateHTML2(doc: Variant; ThreadItem: TThreadItem; var sTitle: string);  procedure THTMLCreate.CreateHTML2(doc: IDispatch; ThreadItem: TThreadItem; var sTitle: string);
1169  var  var
1170          ReadList: TStringList;          ReadList: TStringList;
1171          CSSFileName: string;          CSSFileName: string;
1172          FileName: string;          FileName: string;
1173          Res: TResRec;          Res: TResRec;
1174            html: TStringList;
1175            mStream : TMemoryStream;
1176  {$IFDEF DEBUG}  {$IFDEF DEBUG}
1177          st, rt: Cardinal;          st, rt: Cardinal;
1178  {$ENDIF}  {$ENDIF}
# Line 1138  begin Line 1182  begin
1182          st := GetTickCount;          st := GetTickCount;
1183  {$ENDIF}  {$ENDIF}
1184          if ThreadItem <> nil then begin          if ThreadItem <> nil then begin
1185                  if ThreadItem.ParentBoard.IsBoardPlugInAvailable then begin                  html := TStringList.Create;
1186                          CreateUsePluginHTML(doc, ThreadItem, sTitle);                  try
1187                  end else begin                          if ThreadItem.ParentBoard.IsBoardPlugInAvailable then begin
1188                          ShortDayNames[1] := '日';               ShortDayNames[2] := '月';                                  CreateUsePluginHTML(html, ThreadItem, sTitle);
1189                          ShortDayNames[3] := '火';               ShortDayNames[4] := '水';                          end else begin
1190                          ShortDayNames[5] := '木';               ShortDayNames[6] := '金';                                  ShortDayNames[1] := '日';               ShortDayNames[2] := '月';
1191                          ShortDayNames[7] := '土';                                  ShortDayNames[3] := '火';               ShortDayNames[4] := '水';
1192                                    ShortDayNames[5] := '木';               ShortDayNames[6] := '金';
1193                                    ShortDayNames[7] := '土';
1194    
1195                          ReadList := TStringList.Create;                                  ReadList := TStringList.Create;
1196                          try                                  try
1197                                  if ThreadItem.IsLogFile then begin                                          if ThreadItem.IsLogFile then begin
1198                                          FileName := ThreadItem.GetThreadFileName;                                                  FileName := ThreadItem.GetThreadFileName;
1199                                          ReadList.LoadFromFile(FileName);                                                  ReadList.LoadFromFile(FileName);
1200                                          GikoSys.FAbon.IndividualAbon(ReadList, ChangeFileExt(FileName,'.NG'));                                                  GikoSys.FAbon.IndividualAbon(ReadList, ChangeFileExt(FileName,'.NG'));
1201                                          GikoSys.FAbon.Execute(ReadList);                //       あぼ〜んして                                                  GikoSys.FAbon.Execute(ReadList);                //       あぼ〜んして
1202                                          GikoSys.FSelectResFilter.Execute(ReadList); //レスのフィルタリングをする                                                  GikoSys.FSelectResFilter.Execute(ReadList); //レスのフィルタリングをする
1203                                          if ThreadItem.Title = '' then begin                                                  if ThreadItem.Title = '' then begin
1204                                                  Res := DivideStrLine(ReadList[0]);                                                          Res := DivideStrLine(ReadList[0]);
1205                                                  sTitle := Res.FTitle;                                                          sTitle := Res.FTitle;
1206                                          end else                                                  end else
1207                                                  sTitle := ThreadItem.Title                                                          sTitle := ThreadItem.Title
1208                                  end else begin                                          end else begin
1209                                          sTitle := CustomStringReplace(ThreadItem.Title, '@`', ',');                                                  sTitle := CustomStringReplace(ThreadItem.Title, '@`', ',');
1210                                  end;                                          end;
1211    
1212                                  // フォントやサイズの設定                                          // フォントやサイズの設定
1213                                  CSSFileName := GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName;                                          CSSFileName := GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName;
1214                                  if GikoSys.Setting.UseSkin then begin                                          if GikoSys.Setting.UseSkin then begin
1215                                          CreateUseSKINHTML(doc, ThreadItem, ReadList);                                                  CreateUseSKINHTML(html, ThreadItem, ReadList);
1216                                  end else if GikoSys.Setting.UseCSS and FileExists(CSSFileName) then begin                                          end else if GikoSys.Setting.UseCSS and FileExists(CSSFileName) then begin
1217                                          CreateUseCSSHTML(doc, ThreadItem, ReadList, sTitle);                                                  CreateUseCSSHTML(html, ThreadItem, ReadList, sTitle);
1218                                  end else begin                                          end else begin
1219                                          CreateDefaultHTML(doc, ThreadItem, ReadList, sTitle);                                                  CreateDefaultHTML(html, ThreadItem, ReadList, sTitle);
1220                                            end;
1221                                    finally
1222                                            ReadList.Free;
1223                                  end;                                  end;
1224                            end;
1225                            //WebBrowserに書き込み
1226                            mStream := TMemoryStream.Create;
1227                            try
1228                                    html.SaveToStream(mStream);
1229                                    mStream.Seek(soFromBeginning, 0);
1230                                    (doc as IPersistStreamInit).Load(TStreamAdapter.Create(mStream));
1231                          finally                          finally
1232                                  ReadList.Free;                                  mStream.Free;
1233                          end;                          end;
1234                    finally
1235                            html.Free;
1236                  end;                  end;
1237          end;          end;
1238  {$IFDEF DEBUG}  {$IFDEF DEBUG}

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.4.2.2

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