//--
function TreatSyria(AString: string): string;
//--
+ function AddToken(AString: string; Invisible: Boolean): Boolean;
end;
var
Abon1 :TAbon;
Result := Result + AString;
end;
+// NG\83\8f\81[\83h\83t\83@\83C\83\8b\82É\92Ç\89Á \92Ç\89Á\82³\82ê\82½\8fê\8d\87\81ATrue\82ª\82©\82¦\82é
+function TAbon.AddToken(AString: string; Invisible: Boolean): Boolean;
+var
+ bufStringList : TStringList;
+ ngword: String;
+begin
+ Result := False;
+ if FileExists(GetNGwordpath) then begin
+ bufStringList := TStringList.Create;
+ try
+ bufStringList.LoadFromFile(GetNGwordpath);
+ if (Invisible) then begin
+ ngword := #9 + AString;
+ end else begin
+ ngword := AString;
+ end;
+ if (bufStringList.IndexOf(ngword) = -1) then begin
+ bufStringList.Add(ngword);
+ bufStringList.SaveToFile(GetNGwordpath);
+ Result := True;
+ end;
+ finally
+ bufStringList.Free;
+ end;
+ end;
+end;
end.
end;
function TThreadItem.GetCreateDate: TDateTime;
-var
- unixtime: Int64;
- tmp: string;
begin
// \83t\83@\83C\83\8b\96¼\82©\82ç\83X\83\8c\8dì\90¬\93ú\8e\9e\82ð\8b\81\82ß\82é
try
object N71: TMenuItem
Action = GikoDM.IndividualAbonID0Action
end
+ object N82: TMenuItem
+ Caption = '-'
+ end
+ object IDNG1: TMenuItem
+ Action = GikoDM.AddIDtoNGWord1Action
+ Caption = 'NG'#12527#12540#12489#12395#36861#21152
+ end
+ object IDNG2: TMenuItem
+ Action = GikoDM.AddIDtoNGWord0Action
+ Caption = 'NG'#12527#12540#12489#12395#36861#21152'('#36879#26126')'
+ end
end
object N52: TMenuItem
Caption = #20491#21029#12354#12412#65374#12435#35299#38500
N80: TMenuItem;
SameBoardThreadItem: TMenuItem;
N81: TMenuItem;
+ N82: TMenuItem;
+ IDNG1: TMenuItem;
+ IDNG2: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure BrowserStatusTextChange(Sender: TObject;
procedure IndividualAbonID(Atype : Integer);
//\82±\82Ì\83\8c\83X\82 \82Ú\81`\82ñ
procedure IndividualAbon(Atag, Atype : Integer);
+ //\93¯\88êID\82ðNG\83\8f\81[\83h\82É\93o\98^
+ procedure AddIDtoNGWord(invisible : boolean);
//\83u\83\89\83E\83U\82Ì\8dÄ\95`\89æ true:\91S\82Ä\82Ì\83^\83u false:\83A\83N\83e\83B\83u\82È\83^\83u\82Ì\82Ý
procedure RepaintAllTabsBrowser();
//\83\8a\83\93\83N\83o\81[\90Ý\92è
end;
// *************************************************************************
-//! \82¨\8bC\82É\93ü\82è\83c\83\8a\81[\82Ì\83}\83E\83X\83A\83b\83v\83C\83x\83\93\83g
+//! \83X\83\8c\83b\83h\83u\83\89\83E\83U\83N\83\8a\83b\83N\83C\83x\83\93\83g
// *************************************************************************
function TGikoForm.WebBrowserClick(Sender: TObject): WordBool;
const
if ThreadItem <> nil then
InsertBrowserTab( ThreadItem, True );
end;
+//\93¯\88êID\82ðNG\83\8f\81[\83h\82É\93o\98^
+procedure TGikoForm.AddIDtoNGWord(invisible : boolean);
+var
+ ThreadItem : TThreadItem;
+ No : Integer;
+{$IFDEF SPAM_FILTER_ENABLED}
+ body : TStringList;
+ ReadList : TStringList;
+ wordCount : TWordCount;
+{$ENDIF}
+ id: String;
+begin
+ No := KokoPopupMenu.Tag;
+ if No = 0 then Exit;
+ ThreadItem := GetActiveContent(True);
+ if ThreadItem = nil then Exit;
+
+ id := GikoSys.GetResID(No, ThreadItem);
+ if (id <> '') and (not IsNoValidID(id)) then begin
+ if (GikoSys.FAbon.AddToken(id, invisible)) then begin
+ GikoSys.FAbon.ReLoadFromNGwordFile;
+ FActiveContent.Repaint := True;
+ end;
+ end else begin
+ ShowMessage('ID\82ð\8eæ\93¾\82Å\82«\82Ü\82¹\82ñ\82Å\82µ\82½\81B');
+ end;
+{$IFDEF SPAM_FILTER_ENABLED}
+ body := TStringList.Create;
+ try
+ GikoSys.GetSameIDRes(id, ThreadItem, body);
+ ReadList := TStringList.Create;
+ wordCount := TWordCount.Create;
+ try
+ // \83X\83p\83\80\82É\90Ý\92è
+ ReadList.LoadFromFile( ThreadItem.GetThreadFileName );
+ for i := 0 to body.Count - 1 do begin
+ GikoSys.SpamCountWord( ReadList[ i ], wordCount );
+ GikoSys.SpamForget( wordCount, False ); // \83n\83\80\82ð\89ð\8f\9c
+ GikoSys.SpamLearn( wordCount, True ); // \83X\83p\83\80\82É\90Ý\92è
+ end;
+ finally
+ wordCount.Free;
+ ReadList.Free;
+ end;
+ finally
+ body.Free;
+ end;
+{$ENDIF}
+ if (FActiveContent.Repaint) then begin
+ ThreadItem.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).Body.ScrollTop;
+ if ThreadItem <> nil then
+ InsertBrowserTab( ThreadItem, True );
+ end;
+end;
//\93¯\88êID\82Ì\82 \82Ú\81`\82ñ
procedure TGikoForm.IndividualAbonID(Atype : Integer);
OnExecute = NewLinkToClipboardActionExecute
OnUpdate = DependActiveCntentActionUpdate
end
+ object AddIDtoNGWord0Action: TAction
+ Category = #12502#12521#12454#12470#12509#12483#12503#12450#12483#12503
+ Caption = 'ID'#12434'NG'#12527#12540#12489#12395#36861#21152'('#36879#26126')'
+ Hint = #12524#12473#12398'ID'#12434'NG'#12527#12540#12489#12501#12449#12452#12523#12395#36861#21152#12377#12427#65288#36879#26126#65289
+ OnExecute = AddIDtoNGWord0ActionExecute
+ end
+ object AddIDtoNGWord1Action: TAction
+ Category = #12502#12521#12454#12470#12509#12483#12503#12450#12483#12503
+ Caption = 'ID'#12434'NG'#12527#12540#12489#12395#36861#21152
+ Hint = 'ID'#12434'NG'#12527#12540#12489#12501#12449#12452#12523#12395#36861#21152#12377#12427
+ OnExecute = AddIDtoNGWord1ActionExecute
+ end
end
object ToobarImageList: TImageList
Left = 44
ScrollPageUpAction: TAction;
AllLinkToClipboardAction: TAction;
NewLinkToClipboardAction: TAction;
+ AddIDtoNGWord0Action: TAction;
+ AddIDtoNGWord1Action: TAction;
procedure EditNGActionExecute(Sender: TObject);
procedure ReloadActionExecute(Sender: TObject);
procedure GoFowardActionExecute(Sender: TObject);
procedure ScrollPageUpActionExecute(Sender: TObject);
procedure AllLinkToClipboardActionExecute(Sender: TObject);
procedure NewLinkToClipboardActionExecute(Sender: TObject);
+ procedure AddIDtoNGWord0ActionExecute(Sender: TObject);
+ procedure AddIDtoNGWord1ActionExecute(Sender: TObject);
private
{ Private \90é\8c¾ }
procedure ClearResFilter;
end;
+//! \82±\82Ì\83\8c\83X\82ÌID\82ðNG\83\8f\81[\83h\82É\92Ç\89Á\82·\82é\81i\93§\96¾)
+procedure TGikoDM.AddIDtoNGWord0ActionExecute(Sender: TObject);
+begin
+ GikoForm.AddIDtoNGWord(true);
+end;
+//! \82±\82Ì\83\8c\83X\82ÌID\82ðNG\83\8f\81[\83h\82É\92Ç\89Á\82·\82é
+procedure TGikoDM.AddIDtoNGWord1ActionExecute(Sender: TObject);
+begin
+ GikoForm.AddIDtoNGWord(false);
+end;
end.
procedure GetSameIDRes(AIDNum : Integer; ThreadItem: TThreadItem;var body: TStringList); overload;
function GetSameIDResCount(const AID : string; ThreadItem: TThreadItem):Integer; overload;
function GetSameIDResCount(AIDNum : Integer; ThreadItem: TThreadItem):Integer; overload;
-
+ function GetResID(AIDNum: Integer; ThreadItem: TThreadItem): String;
//! \92P\8cê\89ð\90Í
procedure SpamCountWord( const text : string; wordCount : TWordCount );
//! \8aw\8fK\83N\83\8a\83A
}
procedure TGikoSys.GetSameIDRes(AIDNum : Integer; ThreadItem: TThreadItem;var body: TStringList);
var
+ AID : String;
+begin
+ AID := GetResID(AIDNum, ThreadItem);
+ if not IsNoValidID(AID) then begin
+ GetSameIDRes(AID, ThreadItem, body);
+ end;
+end;
+{!
+\brief \93\8a\8de ID \8eæ\93¾
+\param AIDNum \93\8a\8de \83\8c\83X\94Ô\8d\86
+\param ThreadItem \93\8a\8de\83X\83\8c\83b\83h
+\param body OUT:\93\8a\8deID
+}
+function TGikoSys.GetResID(AIDNum: Integer; ThreadItem: TThreadItem): String;
+var
Res: TResRec;
boardPlugIn : TBoardPlugIn;
- AID : String;
stList: TStringList;
i : Integer;
begin
+ Result := '';
if (ThreadItem <> nil) and (ThreadItem.IsLogFile)
and (AIDNum > 0) and (AIDNum <= ThreadItem.Count) then begin
//if ThreadItem.IsBoardPlugInAvailable then begin
end else begin
THTMLCreate.DivideStrLine( ReadThreadFile(ThreadItem.GetThreadFileName, AIDNum), @Res);
end;
- AID := Res.FDateTime;
- if AnsiPos('id', AnsiLowerCase(AID)) > 0 then begin
- AID := Copy(AID, AnsiPos('id', AnsiLowerCase(AID)) - 1, 11);
- if AnsiPos(' be:', AnsiLowerCase(AID)) > 0 then begin
- AID := Copy(AID, 1, AnsiPos(' BE:', AnsiLowerCase(AID)) - 1)
+ Result := Res.FDateTime;
+ if AnsiPos('id', AnsiLowerCase(Result)) > 0 then begin
+ Result := Copy(Result, AnsiPos('id', AnsiLowerCase(Result)) - 1, 11);
+ if AnsiPos(' be:', AnsiLowerCase(Result)) > 0 then begin
+ Result := Copy(Result, 1, AnsiPos(' BE:', AnsiLowerCase(Result)) - 1)
end;
end else begin
stlist := TStringList.Create;
try
- stList.DelimitedText := AID;
- AID := '';
+ stList.DelimitedText := Result;
+ Result := '';
for i := 0 to stList.Count - 1 do
if Length(WideString(stList[i])) = 8 then begin
if NotDateorTimeString(stList[i]) then begin
- AID := stList[i];
+ Result := stList[i];
break;
end;
end;
stList.Free;
end;
end;
- if not IsNoValidID(AID) then
- GetSameIDRes(AID, ThreadItem, body);
end;
end;
-
{!
\brief \93¯\82¶\93\8a\8de ID \82ð\8e\9d\82Â\83\8c\83X\82ð\83J\83E\83\93\83g
\param AID \8cÂ\90l\82ð\93Á\92è\82·\82é\93\8a\8de ID