procedure GetPopupResNumber(URL : string; var stRes, endRes : Int64);
property Bayesian : TGikoBayesian read FBayesian write FBayesian;
- function GetSameIDResAnchor(const AID : string; ThreadItem: TThreadItem; limited: Integer):string; overload;
- function GetSameIDResAnchor(AIDNum : Integer; ThreadItem: TThreadItem; limited: Integer):string; overload;
+ function CreateSameIDResAnchor(var Numbers: TStringList; ThreadItem: TThreadItem; limited: Integer):string;
procedure GetSameIDRes(const AID : string; ThreadItem: TThreadItem;var body: TStringList); overload;
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 );
//! \83t\83@\83C\83\8b\96¼\82©\82ç\82Ì\83X\83\8c\83b\83h\8dì\90¬\93ú\82Ì\8eæ\93¾
function GetCreateDateFromName(FileName: String): TDateTime;
function GetExtpreviewFileName: String;
+
+ procedure ShowRefCount(msg: String; unk: IUnknown);
end;
var
NGWORDs_DIR_NAME : String = 'NGwords';
READ_PATH: string = '/test/read.cgi/';
+ HTML_READ_PATH: string = '/test/read.html/';
OLD_READ_PATH: string = '/test/read.cgi?';
KAKO_PATH: string = '/kako/';
Index := AnsiPos(READ_PATH, path);
if Index <> 0 then begin
s := Copy(path, Index + Length(READ_PATH), Length(path));
-
+ end else begin
+ Index := AnsiPos(HTML_READ_PATH, path);
+ if Index <> 0 then begin
+ s := Copy(path, Index + Length(HTML_READ_PATH), Length(path));
+ end;
+ end;
+ if Index <> 0 then begin
if (Length(s) > 0) and (s[1] = '/') then
Delete(s, 1, 1);
BBSID := GetTokenIndex(s, '/', 0);
//\95W\8f\80\8f\91\8e®
//\8dÅ\8cã\82Íl50, 10, 10-20, 10n, 10-20n, -10, 10-, 10n- \82È\82Ç
//http://xxx.2ch.net/test/read.cgi/bbsid/1000000000/
- FAWKStr.RegExp := '/test/read.cgi/.+/[0-9]+/?.*';
+ FAWKStr.RegExp := '/test/read.(cgi|html)/.+/[0-9]+/?.*';
if FAWKStr.Match(FAWKStr.ProcessEscSeq(s), RStart, RLength) > 0 then begin
s := Copy(s, 15, Length(s));
var
boardFileList : TStringList;
i, l : Integer;
+ sCategory : TCategory;
+ sBoard : TBoard;
begin
// BBS \82Ì\8aJ\95ú
try
BoardFileList.Free;
end;
end;
+
+ // \93Á\8eê\97p\93rBBS\90¶\90¬
+ // \8aù\82É\91¶\8dÝ\82·\82é\8fê\8d\87\82Í\8dí\8f\9c\82·\82é
+ DestorySpecialBBS(BoardGroup.SpecialBBS);
+ SpecialBBS := TBBS.Create('');
+ SpecialBBS.Title := '\93Á\8eê\97p\93r(\94ñ\95\\8e¦)';
+ sCategory := TCategory.Create;
+ sCategory.No := 1;
+ sCategory.Title := '\93Á\8eê\97p\93r(\94ñ\95\\8e¦)';
+ SpecialBBS.Add(sCategory);
+ sBoard := TSpecialBoard.Create(nil, 'http://localhost/gikonavi/special/index.html');
+ sBoard.IsThreadDatRead := True;
+ sCategory.Add(sBoard);
end;
{!
begin
Result := Setting.GetSambaFileName;
end;
-
{!
-\brief \93¯\82¶\93\8a\8de ID \82ð\8e\9d\82Â\83\8c\83X\82ð\83A\83\93\83J\81[\82É\82µ\82Ä\97ñ\8b\93
-\param AID \8cÂ\90l\82ð\93Á\92è\82·\82é\93\8a\8de ID
+\brief \97ñ\8b\93\82³\82ê\82½\83\8c\83X\94Ô\8d\86\82Ö\82Ì\83A\83\93\83J\81[\97pHTML\8dì\90¬
+\param Numbers \97ñ\8b\93\82³\82ê\82½\83\8c\83X\94Ô\8d\86
\param ThreadItem \97ñ\8b\93\82·\82é\83X\83\8c\83b\83h
\param limited \97ñ\8b\93\82·\82é\90\94\82ð\90§\8cÀ\82·\82é\82È\82ç1\88È\8fã
\return \97ñ\8b\93\82³\82ê\82½\83\8c\83X\83A\83\93\83J\81[
}
-function TGikoSys.GetSameIDResAnchor(
- const AID : string; ThreadItem: TThreadItem;
+function TGikoSys.CreateSameIDResAnchor(
+ var Numbers: TStringList; ThreadItem: TThreadItem;
limited: Integer):string;
var
i: integer;
- body: TStringList;
Res: TResRec;
ResLink : TResLinkRec;
begin
Res.FBody := '';
Res.FType := glt2chNew;
- Result := '';
- if (not IsNoValidID(AID)) and
- (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin
- body := TStringList.Create;
- try
- GetSameIDRes(AID, ThreadItem, body);
- if (limited > 0) and (body.Count > limited) then begin
- for i := body.Count - limited to body.Count - 1 do begin
- Res.FBody := Res.FBody + '>' + body[i] + ' ';
- end;
- end else begin
- for i := 0 to body.Count - 1 do begin
- Res.FBody := Res.FBody + '>' + body[i] + ' ';
- end;
- end;
- finally
- body.Free;
- end;
+ Result := '';
+ if (Numbers <> nil) and (Numbers.Count > 0) then begin
+ if (limited > 0) and (Numbers.Count > limited) then begin
+ for i := Numbers.Count - limited to Numbers.Count - 1 do begin
+ Res.FBody := Res.FBody + '>' + Numbers[i] + ' ';
+ end;
+ end else begin
+ for i := 0 to Numbers.Count - 1 do begin
+ Res.FBody := Res.FBody + '>' + Numbers[i] + ' ';
+ end;
+ end;
ResLink.FBbs := ThreadItem.ParentBoard.BBSID;
ResLink.FKey := ChangeFileExt(ThreadItem.FileName, '');
HTMLCreater.ConvRes(@Res, @ResLink, false);
Result := Res.FBody;
- end;
+ end;
end;
{!
ReadList: TStringList;
Res: TResRec;
boardPlugIn : TBoardPlugIn;
+
+ procedure CheckSameID(const AID:String; const Target: String; no: Integer);
+ var
+ pos: Integer;
+ begin
+ pos := AnsiPos('id:', LowerCase(Target));
+ if (pos > 0) then begin
+ if(AnsiPos(AID, Copy(Target, pos-1, Length(Target))) > 0) then begin
+ body.Add(IntToStr(no));
+ end;
+ end else begin
+ if(AnsiPos(AID, Target) > 0) then begin
+ body.Add(IntToStr(no));
+ end;
+ end;
+ end;
begin
if (not IsNoValidID(AID)) and
(ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin
for i := 0 to threadItem.Count - 1 do begin
// \83\8c\83X
THTMLCreate.DivideStrLine(boardPlugIn.GetDat(DWORD( threadItem ), i + 1), @Res);
- if(AnsiPos(AID, Res.FDateTime) > 0) then begin
- body.Add(IntToStr(i+1));
- end;
+ CheckSameID(AID, Res.FDateTime, i+1);
end;
end else begin
ReadList := TStringList.Create;
ReadList.LoadFromFile(ThreadItem.GetThreadFileName);
for i := 0 to ReadList.Count - 1 do begin
THTMLCreate.DivideStrLine(ReadList[i], @Res);
- if AnsiPos(AID, Res.FDateTime) > 0 then begin
- body.Add(IntToStr(i+1));
- end;
+ CheckSameID(AID, Res.FDateTime, i+1);
end;
finally
ReadList.Free;
\brief \93¯\82¶\93\8a\8de ID \82ð\8e\9d\82Â\83\8c\83X\82ð\97ñ\8b\93
\param AIDNum \8cÂ\90l\82ð\93Á\92è\82·\82é\93\8a\8de ID
\param ThreadItem \97ñ\8b\93\82·\82é\83X\83\8c\83b\83h
-\param limited \97ñ\8b\93\82·\82é\90\94\82ð\90§\8cÀ\82·\82é\82È\82ç1\88È\8fã
-\return
-}
-function TGikoSys.GetSameIDResAnchor(AIDNum : Integer;
- ThreadItem: TThreadItem;
- limited: Integer):string;
-var
- i: integer;
- body: TStringList;
- Res: TResRec;
- ResLink : TResLinkRec;
-begin
- // body\88È\8aO\82Í\8eg\97p\82µ\82È\82¢\82Ì\82Å\8f\89\8aú\89»\82µ\82È\82¢
- Res.FBody := '';
- Res.FType := glt2chNew;
-
- Result := '';
- if (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin
- body := TStringList.Create;
- try
- GetSameIDRes(AIDNum, ThreadItem, body);
- if (limited > 0) and ( body.Count > limited) then begin
- for i := body.Count - 20 to body.Count - 1 do begin
- Res.FBody := Res.FBody + '>' + body[i] + ' ';
- end;
- end else begin
- for i := 0 to body.Count - 1 do begin
- Res.FBody := Res.FBody + '>' + body[i] + ' ';
- end;
- end;
- finally
- body.Free;
- end;
- ResLink.FBbs := ThreadItem.ParentBoard.BBSID;
- ResLink.FKey := ChangeFileExt(ThreadItem.FileName, '');
- HTMLCreater.ConvRes(@Res, @ResLink, false);
- Result := Res.FBody;
- end;
-end;
-
-{!
-\brief \93¯\82¶\93\8a\8de ID \82ð\8e\9d\82Â\83\8c\83X\82ð\97ñ\8b\93
-\param AIDNum \8cÂ\90l\82ð\93Á\92è\82·\82é\93\8a\8de ID
-\param ThreadItem \97ñ\8b\93\82·\82é\83X\83\8c\83b\83h
\param body OUT:\97ñ\8b\93\82³\82ê\82½\83\8c\83X\94Ô\8d\86\82ª\95Ô\82é
}
procedure TGikoSys.GetSameIDRes(AIDNum : Integer; ThreadItem: TThreadItem;var body: TStringList);
end;
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
-\param ThreadItem \97ñ\8b\93\82·\82é\83X\83\8c\83b\83h
-\return \93¯\82¶ ID \82ð\8e\9d\82Â\83\8c\83X\82Ì\90\94
-}
-function TGikoSys.GetSameIDResCount(const AID : string; ThreadItem: TThreadItem):Integer;
-var
- body: TStringList;
-begin
- Result := 0;
- if (not IsNoValidID(AID))
- and (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin
- body := TStringList.Create;
- try
- GetSameIDRes(AID, ThreadItem, body);
- Result := body.Count;
- finally
- body.Free;
- end;
- end;
-
-end;
-
-{!
-\brief \93¯\82¶\93\8a\8de ID \82ð\8e\9d\82Â\83\8c\83X\82ð\83J\83E\83\93\83g
-\param AIDNum \8cÂ\90l\82ð\93Á\92è\82·\82é\93\8a\8de ID
-\param ThreadItem \97ñ\8b\93\82·\82é\83X\83\8c\83b\83h
-\return \93¯\82¶ ID \82ð\8e\9d\82Â\83\8c\83X\82Ì\90\94
-}
-function TGikoSys.GetSameIDResCount(AIDNum : Integer; ThreadItem: TThreadItem):Integer;
-var
- body: TStringList;
-begin
- Result := 0;
- if (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin
- body := TStringList.Create;
- try
- GetSameIDRes(AIDNum, ThreadItem, body);
- Result := body.Count;
- finally
- body.Free;
- end;
- end;
-end;
{!
\brief \8e\9e\8d\8f\82ð\8e¦\82·\95¶\8e\9a\97ñ\82Å\82Í\96³\82¢\82©\82Ç\82¤\82©
Result := UnixToDateTime(unixtime) + OffsetFromUTC;
end;
+procedure TGikoSys.ShowRefCount(msg: String; unk: IUnknown);
+{$IFDEF DEBUG}
+var
+ count : integer;
+{$ENDIF}
+begin
+ if not Assigned(unk) then
+ Exit;
+
+{$IFDEF DEBUG}
+ try
+ unk._AddRef;
+ count := unk._Release;
+
+ Writeln(msg + ' RefCount=' + IntToStr(count));
+ except
+ Writeln(msg + ' RefCount=exception!!');
+ end;
+{$ENDIF}
+end;
+
initialization
GikoSys := TGikoSys.Create;