uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls, ComCtrls, ExtCtrls, ToolWin, Menus, OleCtrls,
+ Dialogs, StdCtrls, ComCtrls, ExtCtrls, ToolWin, Menus, OleCtrls, Registry,
{$IF Defined(DELPRO) }
SHDocVw,
+ MSHTML,
{$ELSE}
SHDocVw_TLB,
+ MSHTML_TLB,
{$IFEND}
ActiveX, {HTTPApp,} YofUtils, Trip, IniFiles, StrUtils,
GikoSystem, GikoUtil, ImgList, Clipbrd, BoardGroup,
IdAntiFreezeBase, IdAntiFreeze, IdBaseComponent, IdComponent,
IdTCPConnection, IdTCPClient, IdHTTP, ActnList, StdActns, IdIntercept,
- IdLogBase, IdLogDebug, IdException;
+ IdLogBase, IdLogDebug, IdException, DateUtils, MojuUtils, bmRegExp;
type
// TSetLayeredWindowAttributes = function(wnd: HWND; crKey: DWORD; bAlpha: BYTE; dwFlag: DWORD): Boolean; stdcall;
CloseMenu: TMenuItem;
N01: TMenuItem;
StatusBar: TStatusBar;
- EditorPage: TPageControl;
+ EditorPage: TPageControl;
EditorTab: TTabSheet;
PreviewTab: TTabSheet;
Browser: TWebBrowser;
N02: TMenuItem;
ToolBarImageList: TImageList;
HotToobarImageList: TImageList;
+ BodyEdit: TMemo;
NameBasePanel: TPanel;
NameLabel: TLabel;
MailLabel: TLabel;
SelectAllAction: TAction;
N2: TMenuItem;
SelectAll1: TMenuItem;
- BodyEdit: TRichEdit;
+ Timer1: TTimer;
+ QuotePasteAction: TAction;
+ QuotePasteMenuItem: TMenuItem;
+ C1: TMenuItem;
+ SpaceToNBSPAction: TAction;
+ AmpToCharRefAction: TAction;
+ SpaceTabnbsp1: TMenuItem;
+ amp1: TMenuItem;
+ BoardInformationTab: TTabSheet;
+ BoardtopTab: TTabSheet;
+ TitlePictureBrowser: TWebBrowser;
+ BoardTop: TMenuItem;
+ BoardInformationMemo: TMemo;
+ GetSETTINGTXTAction: TAction;
+ N3: TMenuItem;
+ SETTINGTXT2: TMenuItem;
+ GetTitlePictureAction: TAction;
+ OP1: TMenuItem;
+ GetHeadTXTAction: TAction;
+ HeadTXT1: TMenuItem;
+
procedure EditorPageChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BrowserStatusTextChange(Sender: TObject;
procedure IdLogDebugSend(ASender: TIdConnectionIntercept;
AStream: TStream);
procedure SelectAllActionExecute(Sender: TObject);
+ procedure StatusBarResize(Sender: TObject);
+ procedure Timer1Timer(Sender: TObject);
+ procedure FormActivate(Sender: TObject);
+ procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
+ procedure QuotePasteActionExecute(Sender: TObject);
+ procedure SpaceToNBSPActionExecute(Sender: TObject);
+ procedure AmpToCharRefActionExecute(Sender: TObject);
+ procedure BoardTopClick(Sender: TObject);
+ procedure GetSETTINGTXTActionExecute(Sender: TObject);
+ procedure GetTitlePictureActionUpdate(Sender: TObject);
+ procedure GetTitlePictureActionExecute(Sender: TObject);
+ procedure GetHeadTXTActionExecute(Sender: TObject);
private
FThreadItem: TThreadItem;
FBoard: TBoard;
FStatusCode: Integer;
FDebugStrReceive: string;
FDebugStrSend: string;
-
+ FSambaTime: TDateTime;
+ FHost: string;
+ FNow: TDateTime;
procedure Preview;
function RepHtml(s: string): string;
function Check: Boolean;
// procedure GetSendData(Source: TStringStream);
procedure GetSendData(Source: TStringStream);
procedure SaveSendFile;
- procedure SetContent(Content: string);
+ procedure SetContent(Content: string; ABrowser: TWebBrowser);
function GetSPID(CookieLine: string): string;
function GetPON(CookieLine: string): string;
function GetResultType(ResponseText: string): TGikoResultType;
+ procedure ReadSambaTime(const AHost: string);
+ procedure WriteSambaTime(const AHost: string; ATime: TDateTime);
+ function ReadSettingTime(const AHost: string): Integer;
+ function CheckSambaTime(const AHost: string; ATime: TDateTime): Boolean;
+ procedure SetSamba24(AURL: string);
+ /// \88ø\97p\95\84\82Ì\8eæ\93¾
+ function GetOEIndentChar : string;
+ /// \96{\95¶\82Ì\8eæ\93¾
+ function GetBody : string;
+ //IdHttp\82Ì\8f\89\8aú\89»
+ procedure InitIdHTTP(http: TIdHTTP);
+ procedure ShowBoardInformation(ABoard: TBoard; AMemo: TMemo);
+ function GetTitlePictureURL(body: TStringList; ABoard: TBoard): string;
+ procedure ShowTitlePicture();
+ function GetFusianaName(body: TStringList; ABoard: TBoard): String;
protected
procedure CreateParams(var Params: TCreateParams); override;
public
+ FBBSID: String;
procedure SetFont;
procedure SetThreadItem(Item: TThreadItem);
procedure SetBoard(Item: TBoard);
+ property BBSID: string read FBBSID write FBBSID;
+
end;
implementation
RES2CH_COOKIE = '<!-- 2ch_X:cookie -->';
+ BBS2CH_NAME: string = '\82Q\82¿\82á\82ñ\82Ë\82é';
+ BBS2CH_LOG_FOLDER: string = '2ch';
+ EXTERNAL_LOG_FOLDER: string = 'exboard';
+
+ FOLDER_INI_FILENAME: string = 'Folder.ini';
+ FOLDER_INDEX_FILENAME: string = 'Folder.idx';
+ SUBJECT_FILENAME: string = 'subject.txt';
+ PATH_DELIM: string = '\';
+
+
type
TSelection = record
StartPos, EndPos: Integer;
var
wp: TWindowPlacement;
hUser32 : HINST;
+ ini: TIniFile;
begin
FWork := False;
Browser.Navigate('about:blank');
-
+ TitlePictureBrowser.Navigate('about:blank');
FBoard := nil;
FThreadItem := nil;
//\83E\83B\83\93\83h\83E\82Ì\88Ê\92u\90Ý\92è
-{ i := GikoSys.Setting.EditWindowLeft +
- GikoSys.Setting.EditWindowTop +
- GikoSys.Setting.EditWindowWidth +
- GikoSys.Setting.EditWindowHeight;
- if i > 0 then begin
- SetBounds(GikoSys.Setting.EditWindowLeft, GikoSys.Setting.EditWindowTop,
- GikoSys.Setting.EditWindowWidth, GikoSys.Setting.EditWindowHeight);
- if GikoSys.Setting.EditWindowMax then
- WindowState := wsMaximized;
- end;}
- //\83E\83B\83\93\83h\83E\82Ì\88Ê\92u\90Ý\92è
wp.length := sizeof(wp);
wp.rcNormalPosition.Top := GikoSys.Setting.EditWindowTop;
wp.rcNormalPosition.Left := GikoSys.Setting.EditWindowLeft;
//\8c»\8dÝ\82Ì\83E\83B\83\93\83h\83E\82Ì\88Ê\92u\82ð\95Û\91¶
GikoSys.Setting.EditWindowTop := Top + WINDOWMOVE_V; // \8e\9f\82É\8aJ\82\83E\83B\83\93\83h\83E\82Í
GikoSys.Setting.EditWindowLeft := Left + WINDOWMOVE_H; // \81@\81@\81@\89E\8eÎ\82ß\89º\82É\82¸\82ç\82·
- //\83E\83B\83\93\83h\83E\82Ì\95\9d\82Æ\8d\82\82³\82ª\8f¬\82³\82·\82¬\82ê\82Î\8c³\82É\96ß\82·
+ //\83E\83B\83\93\83h\83E\82Ì\95\9d\82Æ\8d\82\82³\82ª\8f¬\82³\82·\82¬\82¢\82ê\82Î\8c³\82É\96ß\82·
if GikoSys.Setting.EditWindowHeight < 144 then
Height := 400;
if GikoSys.Setting.EditWindowWidth < 144 then
NameComboBox.Items.Assign(GikoSys.Setting.NameList);
MailComboBox.Items.Assign(GikoSys.Setting.MailList);
SetFont;
- //u32 := GetModuleHandle('User32.dll') <> 0;
- hUser32 := LoadLibrary('User32.dll');
- if hUser32 <> 0 then
- TransAction.Enabled := true
- else
+ hUser32 := 0;
+ try
+ try
+ hUser32 := LoadLibrary('User32.dll');
+ if hUser32 <> 0 then
+ TransAction.Enabled := true
+ else
TransAction.Enabled := false;
+ except
+ TransAction.Enabled := false;
+ end;
+ finally
FreeLibrary(hUser32);
+ end;
// \83E\83B\83\93\83h\83E\82Ì\83X\83e\83C\8fó\91Ô
if GikoSys.Setting.EditWindowStay then begin // \83X\83e\83C\8fó\91Ô
- FormStyle := fsStayOnTop;
- TopAction.Checked := true;
- TopToolButton.Down := true;
- end else begin // \83X\83e\83C\82µ\82È\82¢
- FormStyle := fsNormal;
- TopAction.Checked := false;
- TopToolButton.Down := false;
- end;
- // \83X\83e\83C\8fó\91Ô\82Ì\95Û\91¶
- GikoSys.Setting.EditWindowStay := FormStyle = fsStayOnTop;
+ SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
+ TopAction.Checked := true;
+ TopToolButton.Down := true;
+ end else begin // \83X\83e\83C\82µ\82È\82¢
+ SetWindowPos(Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
+ TopAction.Checked := false;
+ TopToolButton.Down := false;
+ end;
// \83E\83B\83\93\83h\83E\82Ì\94¼\93§\96¾\8fó\91Ô
- if GikoSys.Setting.EditWindowTranslucent then begin // \94¼\93§\96¾\81i\83g\83\89\83\93\83X\83\8b\81[\83Z\83\93\83g\81j\8fó\91Ô
+ if(GikoSys.Setting.EditWindowTranslucent) and (TransAction.Enabled) then begin // \94¼\93§\96¾\81i\83g\83\89\83\93\83X\83\8b\81[\83Z\83\93\83g\81j\8fó\91Ô
AlphaBlend := true;
TransAction.Checked := true;
TransToolButton.Down := true;
// \94¼\93§\96¾\8fó\91Ô\82Ì\95Û\91¶
GikoSys.Setting.EditWindowTranslucent := TransAction.Checked;
+ SpaceToNBSPAction.Checked := GikoSys.Setting.SpaceToNBSP;
+ AmpToCharRefAction.Checked := GikoSys.Setting.AmpToCharRef;
+ ini := TIniFile.Create(GikoSys.Setting.GetFileName);
+
+ try
+ BoardtopTab.TabVisible := ini.Readbool('EditorForm', 'BoardTopTab', False);
+ BoardTop.Checked := BoardtopTab.TabVisible;
+ finally
+ ini.Free;
+ end;
end;
MailComboBox.Text := FBoard.KotehanMail;
SageCheckBox.Checked := AnsiPos('sage', MailComboBox.Text) <> 0;
TitlePanel.Visible := True;
+ SetSamba24(FBoard.URL);
+ ShowBoardInformation(FBoard, BoardInformationMemo);
+ ShowTitlePicture();
end;
procedure TEditorForm.SetThreadItem(Item: TThreadItem);
MailComboBox.Text := FThreadItem.ParentBoard.KotehanMail;
SageCheckBox.Checked := AnsiPos('sage', MailComboBox.Text) <> 0;
TitlePanel.Visible := False;
+ SetSamba24(FThreadItem.ParentBoard.URL);
+ ShowBoardInformation(FThreadItem.ParentBoard, BoardInformationMemo);
+ ShowTitlePicture();
+end;
+
+function TEditorForm.GetBody : string;
+var
+ body : string;
+ regexp : TAWKStr;
+begin
+
+ body := BodyEdit.Text;
+ if AmpToCharRefAction.Checked then
+ // & \82Ì\92u\8a·\82Í\88ê\94Ô\8dÅ\8f\89\82É\82â\82é\82±\82Æ
+ body := CustomStringReplace( body, '&', '&' );
+ if SpaceToNBSPAction.Checked then begin
+ body := CustomStringReplace( body, #09, ' ' );
+ body := CustomStringReplace( body, ' ', ' ' );
+ body := CustomStringReplace( body, ' ', ' ' );
+ regexp := TAWKStr.Create( nil );
+ try
+ regexp.RegExp := '^ ';
+ regexp.GSub( '\ ', body );
+ finally
+ regexp.Free;
+ end;
+ end;
+
+ Result := body;
+
end;
procedure TEditorForm.SetFont;
Title := RepHtml(FThreadItem.Title);
end;
+ body := GetBody;
Namae := RepHtml(NameComboBox.Text);
Mail := RepHtml(MailComboBox.Text);
- Body := RepHtml(BodyEdit.Text);
+ Body := RepHtml(body);
Body := StringReplace(Body, #13#10, '<br>', [rfReplaceAll]);
DateTime := FormatDateTime('yyyy/mm/dd(aaa) hh:nn', now);
+ '<BODY text="#000000" bgcolor="#EFEFEF" link="#0000FF" alink="#FF0000" vlink="#660099">' + #13#10
+ '<FONT COLOR="#FF0000">' + title + '</FONT>' + #13#10
+ '<DL>' + #13#10;
- posTrip := Pos( '#', Namae );
+ posTrip := AnsiPos( '#', Namae );
if posTrip > 0 then
begin
tripOrigin := Copy( Namae, posTrip + 1, Length( Namae ) );
else
s := s + '<DT>' + No + ' \81F <A href="mailto:' + Mail + '"><B>' + Namae + '</B></A> [' + Mail + ']\81F ' + DateTime+ '<BR><DD>' + Body + '<BR><BR><BR>' + #13#10;
s := s + '</BODY></HTML>';
- SetContent(s);
+ SetContent(s, Browser);
end;
function TEditorForm.RepHtml(s: string): string;
GikoSys.Setting.EditWindowHeight := wp.rcNormalPosition.Bottom - wp.rcNormalPosition.Top;
GikoSys.Setting.EditWindowWidth := wp.rcNormalPosition.Right - wp.rcNormalPosition.Left;
GikoSys.Setting.EditWindowMax := WindowState = wsMaximized;
- GikoSys.Setting.EditWindowStay := FormStyle = fsStayOnTop; // \83X\83e\83C\8fó\91Ô\82Ì\95Û\91¶
+ //GikoSys.Setting.EditWindowStay := FormStyle = fsStayOnTop; // \83X\83e\83C\8fó\91Ô\82Ì\95Û\91¶
GikoSys.Setting.EditWindowTranslucent := TransAction.Checked; // \94¼\93§\96¾\8fó\91Ô\82Ì\95Û\91¶
end;
Result := TitleEdit.Handle
else
Result := 0;
+ end else if Editorpage.ActivePage = BoardInformationTab then begin
+ if ActiveControl = BoardInformationMemo then
+ Result := BoardInformationMemo.Handle
+ else
+ Result := 0;
end else
Result := 0;
end;
-procedure TEditorForm.SetContent(Content: string);
+procedure TEditorForm.SetContent(Content: string; ABrowser: TWebBrowser);
var
- doc : Variant;
+ doc: Variant;
begin
- doc := Browser.Document;
- doc.Clear;
- doc.open;
- doc.charset := 'Shift_JIS';
- doc.Write(Content);
- doc.Close;
+ if ABrowser.Document <> nil then begin
+ doc := Idispatch( olevariant(ABrowser.ControlInterface).Document) as IHTMLDocument2;
+ doc.Clear;
+ doc.open;
+ doc.charset := 'Shift_JIS';
+ doc.Write(Content);
+ doc.Close;
+ end;
+end;
+procedure TEditorForm.InitIdHTTP(http: TIdHTTP);
+begin
+ http.Request.Clear;
+ http.ProxyParams.BasicAuthentication := False;
+ if GikoSys.Setting.WriteProxy then begin
+ http.ProxyParams.ProxyServer := GikoSys.Setting.WriteProxyAddress;
+ http.ProxyParams.ProxyPort := GikoSys.Setting.WriteProxyPort;
+ http.ProxyParams.ProxyUsername := GikoSys.Setting.WriteProxyUserID;
+ http.ProxyParams.ProxyPassword := GikoSys.Setting.WriteProxyPassword;
+ if GikoSys.Setting.ReadProxyUserID <> '' then
+ http.ProxyParams.BasicAuthentication := True;
+ end else begin
+ http.ProxyParams.ProxyServer := '';
+ http.ProxyParams.ProxyPort := 80;
+ http.ProxyParams.ProxyUsername := '';
+ http.ProxyParams.ProxyPassword := '';
+ end;
+ Indy.Request.UserAgent := GikoSys.GetUserAgent;
+ Indy.Request.AcceptEncoding := '';
end;
procedure TEditorForm.Send(SPID: string; PON: string; FirstWriting: Boolean);
MsgResult: Integer;
Cookie: string;
Board: TBoard;
+ sysMenu : HMENU;
+ //fusianasan\83g\83\89\83b\83v by\92è\8aú\95Ö
+ Namae: String;
+// SettingTxt: String;
+// RefeURL: string;
+// RuleURL: String;
+// RuleTxt: String;
+// Name: String;
+// SettingBody: TStringList;
+// tmpBoard: TBoard;
begin
FAbort := False;
State := gdsError;
+ Namae := RepHtml(NameComboBox.Text);
if FThreadItem = nil then
Board := FBoard
else
Board := FThreadItem.ParentBoard;
- Indy.Request.Clear;
- Indy.ProxyParams.BasicAuthentication := False;
- if GikoSys.Setting.WriteProxy then begin
- Indy.ProxyParams.ProxyServer := GikoSys.Setting.WriteProxyAddress;
- Indy.ProxyParams.ProxyPort := GikoSys.Setting.WriteProxyPort;
- Indy.ProxyParams.ProxyUsername := GikoSys.Setting.WriteProxyUserID;
- Indy.ProxyParams.ProxyPassword := GikoSys.Setting.WriteProxyPassword;
- if GikoSys.Setting.ReadProxyUserID <> '' then
- Indy.ProxyParams.BasicAuthentication := True;
- end else begin
- Indy.ProxyParams.ProxyServer := '';
- Indy.ProxyParams.ProxyPort := 80;
- Indy.ProxyParams.ProxyUsername := '';
- Indy.ProxyParams.ProxyPassword := '';
- end;
+
+ InitIdHTTP(Indy);
if FThreadItem = nil then begin
URL := FBoard.GetSendURL;
RefURL := GikoSys.UrlToServer(FBoard.URL) + 'test/bbs.cgi';
URL := FThreadItem.GetSendURL;
RefURL := FThreadItem.URL;
end;
- Indy.Request.UserAgent := GikoSys.GetUserAgent;
+// Indy.Request.UserAgent := GikoSys.GetUserAgent;
Indy.Request.Referer := RefURL;
- Indy.Request.AcceptEncoding := '';
+// Indy.Request.AcceptEncoding := '';
Cookie := '';
if SPID <> '' then
Cookie := Cookie + 'PON=' + PON + '; ';
Cookie := 'Cookie: ' + Cookie + 'NAME=' + NameComboBox.Text + '; MAIL=' + MailComboBox.Text;
+ sysMenu := GetSystemMenu( Handle, false );
+ EnableMenuItem( sysMenu, SC_CLOSE, MF_GRAYED );
+{
+ EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
+ DrawMenuBar(Handle);
+}
Indy.Request.CustomHeaders.Clear;
// Indy.Request.CacheControl := 'no-cache';
Indy.Request.CustomHeaders.Add('Pragma: no-cache');
ResultType := GetResultType(ResponseText);
- if ResultType = grtOK then
- State := gdsComplete
- else if ResultType = grtCookie then begin
+ //MsgResult\8f\89\8aú\89»
+ MsgResult := IDNO;
+ //\83t\83V\83A\83i\83g\83\89\83b\83v\8cx\8d\90(LocalMode) by \92è\8aú\95Ö
+ if ((Namae = '\8eR\8dè\8fÂ') or (Namae = 'fusianasan')) and (FirstWriting) then begin
+ MsgResult := MsgBox(
+ Handle,
+ '\83\8a\83\82\81[\83g\83z\83X\83g\82ð\95\\8e¦\82·\82é\8b@\94\\82ª\8eg\82í\82ê\82Ä\82¢\82Ü\82·' + #13#10 +
+ '\82à\82µ\82à\8aÔ\88á\82Á\82Ä\82±\82Ì\95û\96@\82Å\83z\83X\83g\82ª\95\\8e¦\82³\82ê\82½\82Æ\82µ\82Ä\82à\81A\8e©\8cÈ\90Ó\94C\82È\82Ì\82Å\8dí\8f\9c\88Ë\97\8a\82É\82Í\89\9e\82¶\82Ü\82¹\82ñ\81B' + #13#10#13#10 +
+ '\90Ó\94C\82ð\95\89\82¤\82±\82Æ\82ð\8f³\91ø\82µ\82Ä\8f\91\82«\8d\9e\82Ý\82Ü\82·\82©\81H',
+ '\8fî\95ñ',
+ MB_YESNO or MB_ICONQUESTION);
+ if MsgResult = IDNO then begin
+ Board.SPID := '';
+ Board.PON := '';
+ FWork := false;
+ EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
+ DrawMenuBar(Handle);
+ Exit;
+ end;
+ end;
+
+ if ResultType = grtOK then begin
+ WriteSambaTime(FHost, Now());
+ State := gdsComplete;
+ end else if ResultType = grtCookie then begin
//\83\8b\81[\83v\96h\8e~
if not FirstWriting then
raise Exception.Create('');
end else begin
Board.SPID := '';
Board.PON := '';
+ FWork := false;
+ EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
+ DrawMenuBar(Handle);
Exit;
end;
end else if ResultType = grtCheck then begin
Send(Board.SPID, Board.PON, False);
Exit;
end else begin
+ EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
+ DrawMenuBar(Handle);
Board.SPID := '';
Board.PON := '';
+ FWork := false;
Exit;
- end;
+ end;
end else begin
+ WriteSambaTime(FHost, Now());
State := gdsError;
raise Exception.Create('');
end;
+
except
on E: EIdConnectException do begin
State := gdsError;
finally
Source.Free;
TextStream.Free;
+ //sysMenu := GetSystemMenu( Handle, true );
+ EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
+ DrawMenuBar(Handle);
end;
-
+ FWork := false;
+ //\94ñ\8cö\8e®\83M\83R\83i\83r\94Â\82È\82Ç\82Ì\83X\83N\83\8a\83v\83g\97p
+ //ResponceCode\82ª302Found\82Å\8f\91\82«\8d\9e\82Ý\8a®\97¹
+ if FStatusCode = 302 then begin
+ GikoForm.PlaySound('ResEnd');
+ SaveSendFile;
+ if FThreadItem = nil then
+ GikoForm.AddMessageList(FBoard.Title + ' [\90V\83X\83\8c\91\97\90M\8fI\97¹]', nil, gmiOK)
+ else
+ GikoForm.AddMessageList(FThreadItem.Title + ' [\83\8c\83X\91\97\90M\8fI\97¹]', nil, gmiOK);
+ Close;
+ Exit;
+ end;
if State = gdsComplete then begin
GikoForm.PlaySound('ResEnd');
SaveSendFile;
else
GikoForm.AddMessageList(FThreadItem.Title + ' [\83\8c\83X\91\97\90M\8e¸\94s]', nil, gmiNG);
EditorPage.ActivePage := PreviewTab;
- SetContent(ResponseText);
+ SetContent(ResponseText, Browser);
end else if State = gdsAbort then begin
GikoForm.AddMessageList(FThreadItem.Title + ' [\92\86\92f]', nil, gmiSAD);
end;
SendTime: Integer;
Adjust: Integer;
Board: TBoard;
+ body : string;
begin
if FThreadItem = nil then
Board := FBoard
else
SendTime := GikoSys.DateTimeToInt(Board.LastGetTime);
end;
+
+ body := GetBody;
+
SessionID := GikoSys.Dolib.SessionID;
if SessionID <> '' then
s := 'sid=' + HttpEncode(SessionID) + '&'
s := s + 'subject=&'
+ 'FROM=' + HttpEncode(NameComboBox.Text) + '&'
+ 'mail=' + HttpEncode(MailComboBox.Text) + '&'
- + 'MESSAGE=' + HttpEncode(BodyEdit.Text) + '&'
+ + 'MESSAGE=' + HttpEncode(body) + '&'
+ 'bbs=' + Board.BBSID + '&'
+ 'time=' + IntToStr(SendTime) + '&';
if FThreadItem = nil then begin
Board: TBoard;
rc: Integer;
state : TGikoDownloadState;
+ body : string;
begin
if FWork then
Exit;
end;
if Board.IsBoardPlugInAvailable then begin
+ body := GetBody;
+
if FThreadItem = nil then begin
// \83X\83\8c\97§\82Ä
state := TGikoDownloadState( Board.BoardPlugIn.CreateThread(
- DWORD( Board ), TitleEdit.Text, NameComboBox.Text, MailComboBox.Text, BodyEdit.Text ) );
+ DWORD( Board ), TitleEdit.Text, NameComboBox.Text, MailComboBox.Text, body ) );
if state = gdsComplete then begin
GikoForm.PlaySound('ResEnd');
SaveSendFile;
GikoForm.AddMessageList(FBoard.Title + ' [\90V\83X\83\8c\91\97\90M\8fI\97¹]', nil, gmiOK);
+ FWork := False;
Close;
end else if State = gdsError then begin
GikoForm.AddMessageList(FBoard.Title + ' [\90V\83X\83\8c\91\97\90M\8e¸\94s]', nil, gmiNG);
end else begin
// \83\8c\83X
state := TGikoDownloadState( FThreadItem.BoardPlugIn.WriteThread(
- DWORD( FThreadItem ), NameComboBox.Text, MailComboBox.Text, BodyEdit.Text ) );
+ DWORD( FThreadItem ), NameComboBox.Text, MailComboBox.Text, body ) );
if state = gdsComplete then begin
GikoForm.PlaySound('ResEnd');
SaveSendFile;
GikoForm.AddMessageList(FThreadItem.Title + ' [\83\8c\83X\91\97\90M\8fI\97¹]', nil, gmiOK);
+ FWork := False;
Close;
end else if State = gdsError then begin
GikoForm.AddMessageList(FThreadItem.Title + ' [\83\8c\83X\91\97\90M\8e¸\94s]', nil, gmiNG);
end;
end;
end else begin
- Send(Board.SPID, Board.PON, True);
+ if not Timer1.Enabled then
+ Send(Board.SPID, Board.PON, True)
+ else begin
+ if not CheckSambaTime(FHost, Now()) then begin
+ rc := GikoUtil.MsgBox(Handle,
+ 'Samba24\82Ì\8bK\92è\92l\96¢\96\9e\82Ì\95b\90\94\82µ\82©\8co\89ß\82µ\82Ä\82¢\82Ü\82¹\82ñ\81B'#13#10
+ + '\91\97\90M\82ð\92\86\8e~\82µ\82Ü\82·\82©\81H' + #13#10
+ + '(\81u\82¢\82¢\82¦\81v\82¾\82Æ\91\97\90M\82µ\82Ü\82·)', 'Samba24\8cx\8d\90',
+ MB_YESNO or MB_ICONQUESTION);
+ if rc = IDYES then begin
+ FWork := false;
+ Exit;
+ end;
+ end;
+ Send(Board.SPID, Board.PON, True);
+ end;
end;
finally
FWork := False;
+ if Timer1.Enabled then
+ ReadSambaTime(FHost);
end;
end;
procedure TEditorForm.TopActionExecute(Sender: TObject); // \83E\83B\83\93\83h\83E\8dÅ\91O\96Ê(Stay)\83{\83^\83\93\82Ì\8f\88\97\9d
begin
- if TopAction.Checked then begin // \83X\83e\83C\8fó\91Ô\82É\90Ý\92è
- FormStyle := fsStayOnTop;
- end else begin // \83X\83e\83C\8fó\91Ô\89ð\8f\9c
- FormStyle := fsNormal;
- end;
- // \83X\83e\83C\8fó\91Ô\82Ì\95Û\91¶
- GikoSys.Setting.EditWindowStay := FormStyle = fsStayOnTop;
+ if not (fsShowing in Self.FormState) then begin
+ if TopAction.Checked then begin // \83X\83e\83C\8fó\91Ô\82É\90Ý\92è
+ SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
+ GikoSys.Setting.EditWindowStay := true;
+ end else begin // \83X\83e\83C\8fó\91Ô\89ð\8f\9c
+ SetWindowPos(Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
+ GikoSys.Setting.EditWindowStay := false;
+ end;
+ // \83X\83e\83C\8fó\91Ô\82Ì\95Û\91¶
+ //GikoSys.Setting.EditWindowStay := FormStyle = fsStayOnTop;
+ end;
end;
procedure TEditorForm.AbortActionExecute(Sender: TObject);
procedure TEditorForm.CloseActionUpdate(Sender: TObject);
begin
- SendAction.Enabled := not FWork;
+ CloseAction.Enabled := not FWork;
end;
procedure TEditorForm.UndoActionUpdate(Sender: TObject);
procedure TEditorForm.TransActionExecute(Sender: TObject);
begin
AlphaBlend := TransAction.Checked;
- // \94¼\93§\96¾\8fó\91Ô\82Ì\95Û\91¶
+ // \94¼\93§\96¾\8fó\91Ô\82Ì\95Û\91¶
GikoSys.Setting.EditWindowTranslucent := TransAction.Checked;
end;
begin
TransAction.Enabled := not FWork;
end;
+//StatusBar\82ÌPanels[0]\82Ì\95\9d\82ð\89Â\95Ï\81B\8ec\82è\82ð\8cÅ\92è\82É\82·\82é
+procedure TEditorForm.StatusBarResize(Sender: TObject);
+begin
+ StatusBar.Panels[0].Width := StatusBar.Width
+ - StatusBar.Panels[1].Width - StatusBar.Panels[2].Width;
-end.
+end;
+
+procedure TEditorForm.Timer1Timer(Sender: TObject);
+begin
+ if FSambaTime = ZERO_DATE then
+ StatusBar.Panels[1].Text := '\8f\89\8f\91'
+ else begin
+ FNow := IncMilliSecond(FNow, 500);
+ StatusBar.Panels[1].Text := Format('%8.0f\95b\8co\89ß', [SecondSpan(FNow, FSambaTime)]);
+ end;
+
+end;
+//Samba.ini\82Ì\8f\91\82«\8d\9e\82Ý\8e\9e\8aÔ\82ð\93Ç\82Ý\8d\9e\82Þ
+procedure TEditorForm.ReadSambaTime(const AHost: string);
+var
+ ini :TMemIniFile;
+ tmp: string;
+begin
+ Timer1.Enabled := false; //\8co\89ß\95b\90\94\95\\8e¦Timer\82ðOff\82É\82·\82é\81i\82±\82ê\82ªON\82Ì\82Æ\82«Samba24\91Î\8dôOn\81j
+ FNow := Now(); //\8c»\8dÝ\8e\9e\8aÔ\82ð\8eæ\93¾\81iTimer\95\\8e¦\97p\82Å\81ACheck\82·\82é\82Æ\82«\82Í\8dÄ\82ÑNow()\82ð\8cÄ\82Ô\81j
+ Timer1.Enabled := true; //\8co\89ß\95b\90\94\95\\8e¦Timer\82ðOn\82É\82·\82é\81i\82±\82ê\82ªON\82Ì\82Æ\82«Samba24\91Î\8dôOn\81j
+ ini := TMemIniFile.Create(GikoSys.GetSambaFileName);
+ try
+ //\95¶\8e\9a\97ñ\82Å\93Ç\82Ý\8eæ\82Á\82Ä\81A\95Ï\8a·\8aÖ\90\94\82ÅTDateTime\82Ö
+ tmp := ini.ReadString('Send', AHost, DateTimeToStr(ZERO_DATE));
+ FSambaTime := ConvertDateTimeString(tmp);
+ finally
+ ini.Free;
+ end;
+end;
+//Samba.ini\82É\8dÅ\8fI\8f\91\82«\8d\9e\82Ý\8e\9e\8aÔ\82ð\8f\91\82«\8d\9e\82Þ
+procedure TEditorForm.WriteSambaTime(const AHost: string; ATime: TDateTime);
+var
+ ini :TMemIniFile;
+begin
+ ini := TMemIniFile.Create(GikoSys.GetSambaFileName);
+ try
+ ini.WriteDateTime('Send', AHost, ATime);
+ ini.UpdateFile;
+ finally
+ ini.Free;
+ end;
+end;
+//\8dÅ\8fI\8f\91\82«\8d\9e\82Ý\8e\9e\8aÔ\82Æ\8c»\8dÝ\8e\9e\82ð\94ä\8ar\82·\82é\81i\90^\81F\8bK\92è\92l\88È\8fã\81@\8bU\81F\8bK\92è\92l\96¢\96\9e\81j
+function TEditorForm.CheckSambaTime(const AHost: string; ATime: TDateTime): Boolean;
+var
+ pastsec: double;
+ SettingTime: Integer;
+begin
+ SettingTime := ReadSettingTime(AHost);
+ ReadSambaTime(AHost);
+ pastsec := SecondSpan(ATime, FSambaTime);
+ if pastsec > SettingTime then
+ Result := true
+ else
+ Result := false;
+end;
+//AHost\81i\8eI\96¼\81j\82ÌSamba\82Ì\8bK\92è\92l\82ð\93Ç\82Ý\8d\9e\82Þ
+function TEditorForm.ReadSettingTime(const AHost: string): Integer;
+var
+ ini :TMemIniFile;
+begin
+ ini := TMemIniFile.Create(GikoSys.GetSambaFileName);
+ try
+ Result := ini.ReadInteger('Setting', AHost, 0);
+ //\8bK\92è\92l\82ª\82O\82Ì\82Æ\82«\81A\82à\82µ\82\82Í\90Ý\92è\82³\82ê\82Ä\82¢\82È\82¢\82Æ\82«\82Í\81A\83t\83@\83C\83\8b\82É\8f\91\82«\82½\82·\81B
+ if Result = 0 then begin
+ ini.WriteInteger('Setting', AHost, 0);
+ ini.UpdateFile;
+ end;
+ finally
+ ini.Free;
+ end;
+end;
+//Form\82ªActive\82É\82È\82Á\82½\82ç\8dÅ\8fI\8f\91\82«\8d\9e\82Ý\8e\9e\8aÔ\82ð\93Ç\82Ý\8d\9e\82Þ
+procedure TEditorForm.FormActivate(Sender: TObject);
+begin
+ if ( Timer1.Enabled ) and ( FThreadItem <> nil )then
+ ReadSambaTime(FHost);
+end;
+//Samba24\91Î\8dô\82ð\8eg\82¤\82©\82Ç\82¤\82©\8c\88\82ß\82é\8aÖ\90\94
+//ReadSambaTime \82ð\8cÄ\82Ñ\8fo\82·\82ÆTimer\82ªOn\82É\82È\82é
+procedure TEditorForm.SetSamba24(AURL: string);
+var
+ Protocol, Host, Path, Document, Port, Bookmark : string;
+begin
+ //Samba24\91Î\8dô\82ð\82µ\82È\82¢\82È\82ç\8fI\97¹
+ if not GikoSys.Setting.UseSamba then
+ Exit;
+ //Host\82ÌURL\82É'.2ch.'\82©'.bbspink.'\82ª\8aÜ\82Ü\82ê\82Ä\82¢\82½\82çSamba24\91Î\8dô\82ð\82·\82é
+ GikoSys.ParseURI( AURL, Protocol,Host, Path, Document, Port, Bookmark );
+ if GikoSys.Is2chHost(Host) then begin
+ Host := Copy(Host, 1, AnsiPos('.', Host) - 1);
+ FHost := Host; //FHost=\8eI\96¼
+ ReadSambaTime(FHost); //\88È\91O\82Ì\8f\91\82«\8d\9e\82Ý\8e\9e\8aÔ\82ð\93Ç\82Ý\8d\9e\82Þ
+ //StatusBar\82É\82±\82Ì\8eI\82Ì\8bK\92è\92l\82ð\95\\8e¦\82·\82é
+ StatusBar.Panels[2].Text := 'Samba24\8bK\92è\92l' + IntToStr(ReadSettingTime(FHost));
+ end;
+end;
+procedure TEditorForm.FormCloseQuery(Sender: TObject;
+ var CanClose: Boolean);
+begin
+ CanClose := not FWork;
+end;
+
+function TEditorForm.GetOEIndentChar : string;
+var
+ regKey : TRegistry;
+ Identities : string;
+ IndentChar : DWORD;
+const
+ DEFAULT_CHAR = '> ';
+ OE_MAIL_PATH = '\Software\Microsoft\Outlook Express\5.0\Mail';
+ INDENT_CHAR = 'Indent Char';
+begin
+
+ Result := DEFAULT_CHAR;
+ regKey := TRegistry.Create;
+ try
+ try
+ regKey.RootKey := HKEY_CURRENT_USER;
+ if not regKey.OpenKey( 'Identities', False ) then
+ Exit;
+ Identities := regKey.ReadString( 'Default User ID' );
+ if Identities = '' then
+ Exit;
+ if not regKey.OpenKey( Identities + OE_MAIL_PATH, False ) then
+ Exit;
+ IndentChar := regKey.ReadInteger( INDENT_CHAR );
+ Result := Char( IndentChar ) + ' ';
+ except
+ end;
+ finally
+ regKey.Free;
+ end;
+
+end;
+
+procedure TEditorForm.QuotePasteActionExecute(Sender: TObject);
+var
+ s : TStringList;
+ i : Integer;
+ quote : string;
+begin
+
+ quote := GetOEIndentChar;
+ s := TStringList.Create;
+ try
+ s.Text := Clipboard.AsText;
+
+ for i := s.Count - 1 downto 0 do
+ s[ i ] := quote + s[ i ];
+
+ BodyEdit.SelText := s.Text;
+ finally
+ s.Free;
+ end;
+end;
+
+procedure TEditorForm.SpaceToNBSPActionExecute(Sender: TObject);
+begin
+ GikoSys.Setting.SpaceToNBSP := SpaceToNBSPAction.Checked;
+ if EditorPage.ActivePage = PreviewTab then
+ Preview;
+end;
+
+procedure TEditorForm.AmpToCharRefActionExecute(Sender: TObject);
+begin
+ GikoSys.Setting.AmpToCharRef := AmpToCharRefAction.Checked;
+ if EditorPage.ActivePage = PreviewTab then
+ Preview;
+end;
+
+procedure TEditorForm.BoardTopClick(Sender: TObject);
+var
+ ini: TIniFile;
+begin
+ ini := TIniFile.Create(GikoSys.Setting.GetFileName);
+ try
+ BoardtopTab.TabVisible := BoardTop.Checked;
+ ini.WriteBool('EditorForm', 'BoardTopTab', BoardtopTab.TabVisible);
+ finally
+ ini.Free;
+ end;
+end;
+
+
+procedure TEditorForm.GetSETTINGTXTActionExecute(Sender: TObject);
+var
+ URL, RefURL: string;
+ settingBody: TStringList;
+ tmpBoard: TBoard;
+begin
+ InitIdHTTP(Indy);
+ if FThreadItem = nil then
+ tmpBoard := FBoard
+ else
+ tmpBoard := FThreadItem.ParentBoard;
+
+ if tmpBoard = nil then Exit;
+
+ RefURL := tmpBoard.URL;
+ if RefURL[Length(RefURL)] <> '/' then
+ URL := RefURL + '/' + 'SETTING.TXT'
+ else
+ URL := RefURL + 'SETTING.TXT';
+
+ Indy.Request.LastModified := tmpBoard.SETTINGTXTTime;
+ Indy.Request.Referer := RefURL;
+ Screen.Cursor := crHourGlass;
+ settingBody := TStringList.Create;
+ try
+ StatusBar.Panels[0].Text := 'SETTING.TXT\83_\83E\83\93\83\8d\81[\83h\92\86';
+ try
+ settingBody.Text := Indy.Get(URL);
+ if( Indy.ResponseCode = 200 ) then begin
+ settingBody.SaveToFile(tmpBoard.GetSETTINGTXTFileName);
+ tmpBoard.SETTINGTXTTime := Indy.Response.LastModified;
+ tmpBoard.IsSETTINGTXT := true;
+ tmpBoard.TitlePictureURL := GetTitlePictureURL(settingBody, tmpBoard);
+ tmpBoard.Modified := true;
+ StatusBar.Panels[0].Text := 'SETTING.TXT\8eæ\93¾\8a®\97¹(' + IntToStr(Indy.ResponseCode) + ')';
+ end;
+ except
+ on E: EIdException do begin
+ if( AnsiPos('304', E.Message) > 0 ) then
+ StatusBar.Panels[0].Text := 'SETTING.TXT\8dX\90V\96³\82µ(' + IntToStr(Indy.ResponseCode) + ')'
+ else
+ StatusBar.Panels[0].Text := 'SETTING.TXT\8eæ\93¾\83G\83\89\81[(' + IntToStr(Indy.ResponseCode) + ')';
+ end;
+ end;
+ finally
+ settingBody.Free;
+ Screen.Cursor := crDefault;
+ end;
+ ShowBoardInformation(tmpBoard, BoardInformationMemo);
+end;
+
+procedure TEditorForm.ShowBoardInformation(ABoard: TBoard; AMemo: TMemo);
+var
+ body: TStringList;
+begin
+ AMemo.Clear;
+ AMemo.Lines.Add('[SETTING.TXT]');
+ if ABoard.IsSETTINGTXT then begin
+ if FileExists(ABoard.GetSETTINGTXTFileName) then begin
+ AMemo.Lines.Add(DateTimeToStr(ABoard.SETTINGTXTTime) + ' \8dX\90V');
+ body := TStringList.Create;
+ try
+ body.LoadFromFile(ABoard.GetSETTINGTXTFileName);
+ AMemo.Lines.AddStrings(body);
+ finally
+ body.Free;
+ end;
+ end else begin
+ ABoard.IsSETTINGTXT := false;
+ ABoard.SETTINGTXTTime := ZERO_DATE;
+ AMemo.Lines.Add('Local\82É\95Û\91¶\82³\82ê\82½SETTING.TXT\82ª\8c©\82Â\82©\82è\82Ü\82¹\82ñ');
+ AMemo.Lines.Add('\83\81\83j\83\85\81[\82æ\82è\8dÄ\8eæ\93¾\82µ\82Ä\82\82¾\82³\82¢\81B');
+ end;
+ end else begin
+ AMemo.Lines.Add('SETTING.TXT\82ð\8eæ\93¾\82µ\82Ä\82¢\82Ü\82¹\82ñ\81B');
+ AMemo.Lines.Add('\83\81\83j\83\85\81[\82æ\82è\8eæ\93¾\82µ\82Ä\82\82¾\82³\82¢\81B');
+ end;
+end;
+function TEditorForm.GetTitlePictureURL(body: TStringList; ABoard: TBoard): string;
+//BBS_TITLE_PICTURE=
+//BBS_FIGUREHEAD=
+var
+ i: Integer;
+ tmp: string;
+begin
+ Result := '';
+ for i := 0 to body.Count - 1 do begin
+ if (AnsiPos('BBS_TITLE_PICTURE=', body[i]) > 0) or
+ (AnsiPos('BBS_FIGUREHEAD=', body[i]) > 0) then begin
+ tmp := body[i];
+ Delete(tmp, 1, AnsiPos('=', tmp));
+ if AnsiPos('../', tmp) > 0 then begin
+ tmp := CustomStringReplace(tmp, '../', GikoSys.UrlToServer(ABoard.URL));
+ end;
+ Result := tmp;
+ Exit;
+ end;
+ end;
+end;
+
+procedure TEditorForm.GetTitlePictureActionUpdate(Sender: TObject);
+begin
+ if FThreadItem = nil then
+ GetTitlePictureAction.Enabled := FBoard.IsSETTINGTXT
+ else
+ GetTitlePictureAction.Enabled := FThreadItem.ParentBoard.IsSETTINGTXT;
+
+end;
+
+procedure TEditorForm.GetTitlePictureActionExecute(Sender: TObject);
+var
+ memStream: TMemoryStream;
+ tmpBoard: TBoard;
+ tmp : string;
+begin
+ InitIdHTTP(Indy);
+ memStream := TMemoryStream.Create;
+ try
+ if FThreadItem = nil then
+ tmpBoard := FBoard
+ else
+ tmpBoard := FThreadItem.ParentBoard;
+
+ Indy.Request.Referer := tmpBoard.URL;
+ if tmpBoard.TitlePictureURL <> '' then begin
+ StatusBar.Panels[0].Text := '\94Â\83g\83b\83v\89æ\91\9c\83_\83E\83\93\83\8d\81[\83h\92\86';
+ Screen.Cursor := crHourGlass;
+ try
+ Indy.Get(tmpBoard.TitlePictureURL, memStream);
+ if Indy.ResponseCode = 200 then begin
+ memStream.SaveToFile(tmpBoard.GetTitlePictureFileName);
+ ShowTitlePicture();
+ tmpBoard.Modified := true;
+ end;
+ except
+ end;
+ end;
+ finally
+ Screen.Cursor := crDefault;
+ StatusBar.Panels[0].Text := '\94Â\83g\83b\83v\89æ\91\9c (' + IntToStr(Indy.ResponseCode) + ')';
+ memStream.Free;
+ end;
+
+end;
+procedure TEditorForm.ShowTitlePicture();
+var
+ tmpBoard: TBoard;
+ s: String;
+begin
+ if FThreadItem = nil then
+ tmpBoard := FBoard
+ else
+ tmpBoard := FThreadItem.ParentBoard;
+
+ if FileExists(tmpBoard.GetTitlePictureFileName) then begin
+ TitlePictureBrowser.Navigate(tmpBoard.GetTitlePictureFileName);
+ end else begin
+ s := '\94Â\83g\83b\83v\89æ\91\9c\96¢\8eæ\93¾\82Å\82·\81B<br>\83\81\83j\83\85\81[\82æ\82è\8eæ\93¾\82µ\82Ä\82\82¾\82³\82¢\81B';
+ SetContent(s, TitlePictureBrowser);
+ end;
+end;
+
+function TEditorForm.GetFusianaName(body: TStringList; ABoard: TBoard): String;
+var
+ i: Integer;
+ tmp: string;
+begin
+ for i := 0 to body.Count - 1 do begin
+ if (AnsiPos('BBS_NONAME_NAME=', body[i]) > 0) then begin
+ tmp := body[i];
+ Delete(tmp, 1, AnsiPos('=', tmp));
+ Result := tmp;
+ Exit;
+ end;
+ end;
+end;
+
+procedure TEditorForm.GetHeadTXTActionExecute(Sender: TObject);
+var
+ URL, RefURL: string;
+ settingBody: TStringList;
+ tmpBoard: TBoard;
+
+begin
+ InitIdHTTP(Indy);
+ if FThreadItem = nil then
+ tmpBoard := FBoard
+ else
+ tmpBoard := FThreadItem.ParentBoard;
+
+ if tmpBoard = nil then Exit;
+
+ RefURL := tmpBoard.URL;
+ if RefURL[Length(RefURL)] <> '/' then
+ URL := RefURL + '/' + 'head.txt'
+ else
+ URL := RefURL + 'head.txt';
+
+ if FileExists(tmpBoard.GETHEADTXTFileName) then
+ Indy.Request.LastModified := tmpBoard.HEADTXTTime
+ else
+ Indy.Request.LastModified := ZERO_DATE;
+
+ Indy.Request.Referer := RefURL;
+ Screen.Cursor := crHourGlass;
+ settingBody := TStringList.Create;
+ try
+ StatusBar.Panels[0].Text := 'head.txt\83_\83E\83\93\83\8d\81[\83h\92\86';
+ try
+ settingBody.Text := Indy.Get(URL);
+ if( Indy.ResponseCode = 200 ) then begin
+ settingBody.Insert(0, '<HTML lang="ja"><HEAD>');
+ settingBody.Insert(1, '<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">');
+ settingBody.Insert(2, '<TITLE>' + tmpBoard.Title + '</TITLE>');
+ settingBody.Insert(3, '<base href="' + RefURL + '"></HEAD><BODY>');
+ settingBody.Add('</BODY></HTML>');
+ settingBody.SaveToFile(tmpBoard.GETHEADTXTFileName);
+ tmpBoard.HEADTXTTime := Indy.Response.LastModified;
+ tmpBoard.IsHEADTXT := true;
+ tmpBoard.Modified := true;
+ StatusBar.Panels[0].Text := 'head.txt\8eæ\93¾\8a®\97¹(' + IntToStr(Indy.ResponseCode) + ')';
+ end;
+ except
+ on E: EIdException do begin
+ if( AnsiPos('304', E.Message) > 0 ) then
+ StatusBar.Panels[0].Text := 'head.txt\8dX\90V\96³\82µ(' + IntToStr(Indy.ResponseCode) + ')'
+ else
+ StatusBar.Panels[0].Text := 'head.txt\8eæ\93¾\83G\83\89\81[(' + IntToStr(Indy.ResponseCode) + ')';
+ end;
+ end;
+ finally
+ settingBody.Free;
+ Screen.Cursor := crDefault;
+ end;
+ if tmpBoard.IsHEADTXT then
+ GikoSys.OpenBrowser(tmpBoard.GETHEADTXTFileName, gbtUserApp);
+end;
+
+end.