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
// *************************************************************************
constructor TGikoSys.Create;
begin
+ Inherited;
FSetting := TSetting.Create;
FDolib := TDolib.Create;
FAWKStr := TAWKStr.Create(nil);
i: Integer;
FileList: TStringList;
begin
- //\83X\83\8c\83b\83h\83f\81[\83^\83t\83@\83C\83\8b\82ð\8dX\90V
-// FlashExitWrite;
-
-// FExitWrite.Free;
- FBayesian.Free;
- FAWKStr.Free;
- FSetting.Free;
- FDolib.Free;
- FAbon.Free;
- FSelectResFilter.Free;
- FGikoMessage.Free;
- //FBoardURLList.Free;
//\83e\83\93\83|\83\89\83\8aHTML\82ð\8dí\8f\9c
FileList := TStringList.Create;
try
finally
FileList.Free;
end;
+ FreeAndNil(FGikoMessage);
+ FreeAndNil(FBayesian);
+ FreeAndNil(FSelectResFilter);
+ FreeAndNil(FAbon);
+ FreeAndNil(FAWKStr);
+ FreeAndNil(FDolib);
+ FreeAndNil(FSetting);
inherited;
end;
usePlugIn : Boolean;
islog : Boolean;
urlHead: String;
+ datFileCheck: Boolean;
{*
FavoThreadItem : TFavoriteThreadItem;
Node: TTreeNode;
*}
+{$IFDEF DEBUG}
+ st, rt: Cardinal;
+{$ENDIF}
begin
+{$IFDEF DEBUG}
+ st := GetTickCount;
+{$ENDIF}
if Board.IsThreadDatRead then
Exit;
Board.Clear;
FileName := Board.GetFolderIndexFileName;
- FileList := TStringList.Create;
- FileList.Sorted := True;
- FileList.BeginUpdate;
- //IsLogFile\97pDAT\83t\83@\83C\83\8b\83\8a\83X\83g
- GetFileList(ExtractFileDir(Board.GetFolderIndexFileName), '*.dat', FileList, False);
- FileList.EndUpdate;
+ //
+ datFileCheck := (Setting.CheckDatFile) or (not FileExists(FileName));
+ if (datFileCheck) then begin
+ FileList := TStringList.Create;
+ FileList.Sorted := True;
+ FileList.BeginUpdate;
+ //IsLogFile\97pDAT\83t\83@\83C\83\8b\83\8a\83X\83g
+ GetFileList(ExtractFileDir(Board.GetFolderIndexFileName), '*.dat', FileList, False);
+ FileList.EndUpdate;
+ end;
// \8fd\95¡\82ð\96h\82®
Board.BeginUpdate;
//\82Q\8ds\96Ú\82©\82ç\81i\82P\8ds\96Ú\82Í\83o\81[\83W\83\87\83\93\81j
for i := sl.Count - 1 downto 1 do begin
Rec := ParseIndexLine(sl[i]);
- islog := FileList.Find( Rec.FFileName, Index );
+ if (datFileCheck) then begin
+ islog := FileList.Find( Rec.FFileName, Index );
+ end else begin
+ islog := (Rec.FSize <> 0) and (Rec.FCount <> 0);
+ end;
if usePlugIn then
ThreadItem := TThreadItem.Create(
Board.BoardPlugIn,
end;
ThreadItem.BeginUpdate;
- if islog then
+ if (datFileCheck) and (islog) then
FileList.Delete( Index );
ThreadItem.No := Rec.FNo;
if UnRead <> Board.UnRead then
Board.UnRead := UnRead;
- //\83C\83\93\83f\83b\83N\83X\82É\96³\82©\82Á\82½\83\8d\83O\82ð\92Ç\89Á\81i\95\85\82ê\83C\83\93\83f\83b\83N\83X\91Î\89\9e\81j
- AddOutofIndexDat(Board, FileList);
+ if (datFileCheck) then begin
+ //\83C\83\93\83f\83b\83N\83X\82É\96³\82©\82Á\82½\83\8d\83O\82ð\92Ç\89Á\81i\95\85\82ê\83C\83\93\83f\83b\83N\83X\91Î\89\9e\81j
+ AddOutofIndexDat(Board, FileList);
+ end;
Board.EndUpdate;
//\91O\89ñ\88Ù\8fí\8fI\97¹\8e\9e\83`\83F\83b\83N
RestoreThreadData( Board );
finally
sl.Free;
- FileList.Free;
+ if (datFileCheck) then begin
+ FileList.Free;
+ end;
Board.Sorted := False;
end;
Board.IsThreadDatRead := True;
+{$IFDEF DEBUG}
+ rt := GetTickCount - st;
+ Writeln('Read Done.' + IntToStr(rt) + ' ms');
+{$ENDIF}
end;
{!
\brief \83C\83\93\83f\83b\83N\83X\82É\82È\82¢dat\81i\82Í\82®\82êdat\81j\82Ì\92Ç\89Á
nm: NONCLIENTMETRICS;
begin
nm.cbSize := sizeof(NONCLIENTMETRICS);
-
- SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, @nm, 0);
- lf := nm.lfMenuFont;
-
- Font.Name := lf.lfFaceName;
- Font.Height := lf.lfHeight;
- Font.Style := [];
- if lf.lfWeight >= 700 then
- Font.Style := Font.Style + [fsBold];
- if lf.lfItalic = 1 then
- Font.Style := Font.Style + [fsItalic];
+ SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, @nm, 0);
+ lf := nm.lfMenuFont;
+ Font.Name := lf.lfFaceName;
+ Font.Height := lf.lfHeight;
+ Font.Style := [];
+ if lf.lfWeight >= 700 then
+ Font.Style := Font.Style + [fsBold];
+ if lf.lfItalic = 1 then
+ Font.Style := Font.Style + [fsItalic];
end;
{!
}
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
ThreadItem.NewReceive := ini.ReadInteger(SECTION, 'NewReceive', 0);
ThreadItem.Size := ini.ReadInteger(SECTION, 'Size', 0);
- if(ThreadItem.Size = 0) and (FileExists(ThreadItem.GetThreadFileName)) then begin
+ ThreadItem.IsLogFile := FileExists(ThreadItem.GetThreadFileName);
+ if(ThreadItem.Size = 0) and (ThreadItem.IsLogFile) then begin
try
ThreadItem.Size := GetFileSize(ThreadItem.GetThreadFileName) - ThreadItem.Count;
except
finalization
if GikoSys <> nil then begin
- GikoSys.Free;
- GikoSys := nil;
+ FreeAndNil(GikoSys);
end;
end.