• R/O
  • HTTP
  • SSH
  • HTTPS

gikonavi: Commit


Commit MetaInfo

Revisión82842463c45da54e60bf47153d4a40673fce23be (tree)
Tiempo2007-08-19 18:29:33
Autorcvs2git <cvs2git>
Commitercvs2git

Log Message

This commit was manufactured by cvs2svn to create tag 'v1_57_0_725'.

Cambiar Resumen

Diferencia incremental

--- a/AbonUnit.pas
+++ b/AbonUnit.pas
@@ -115,6 +115,7 @@ type
115115 //--
116116 function TreatSyria(AString: string): string;
117117 //--
118+ function AddToken(AString: string; Invisible: Boolean): Boolean;
118119 end;
119120 var
120121 Abon1 :TAbon;
@@ -905,6 +906,32 @@ begin
905906 Result := Result + AString;
906907 end;
907908
909+// NGワードファイルに追加 追加された場合、Trueがかえる
910+function TAbon.AddToken(AString: string; Invisible: Boolean): Boolean;
911+var
912+ bufStringList : TStringList;
913+ ngword: String;
914+begin
915+ Result := False;
916+ if FileExists(GetNGwordpath) then begin
917+ bufStringList := TStringList.Create;
918+ try
919+ bufStringList.LoadFromFile(GetNGwordpath);
920+ if (Invisible) then begin
921+ ngword := #9 + AString;
922+ end else begin
923+ ngword := AString;
924+ end;
925+ if (bufStringList.IndexOf(ngword) = -1) then begin
926+ bufStringList.Add(ngword);
927+ bufStringList.SaveToFile(GetNGwordpath);
928+ Result := True;
929+ end;
930+ finally
931+ bufStringList.Free;
932+ end;
933+ end;
934+end;
908935
909936
910937 end.
--- a/BoardGroup.pas
+++ b/BoardGroup.pas
@@ -1777,9 +1777,6 @@ begin
17771777 end;
17781778
17791779 function TThreadItem.GetCreateDate: TDateTime;
1780-var
1781- unixtime: Int64;
1782- tmp: string;
17831780 begin
17841781 // ファイル名からスレ作成日時を求める
17851782 try
@@ -1787,18 +1784,7 @@ begin
17871784 Result := ZERO_DATE
17881785 else begin
17891786 // ログファイルの拡張子をはずしたものがスレ作成日時
1790- tmp := ChangeFileExt(FFileName, '');
1791- if AnsiPos('_', tmp) <> 0 then
1792- if AnsiPos('_', tmp) > 9 then
1793- tmp := Copy(tmp, 1, AnsiPos('_', tmp)-1)
1794- else
1795- Delete(tmp, AnsiPos('_', tmp), 1);
1796-
1797- if ( Length(tmp) = 9) and ( tmp[1] = '0' ) then
1798- Insert('1', tmp, 1);
1799-
1800- unixtime := StrToInt64Def(tmp, ZERO_DATE);
1801- Result := UnixToDateTime(unixtime) + OffsetFromUTC;
1787+ Result := GikoSys.GetCreateDateFromName(FFileName);
18021788 if GikoSys.Setting.FutureThread then begin
18031789 if CompareDateTime(Result, Now) = 1 then
18041790 Result := ZERO_DATE;
--- a/Giko.dfm
+++ b/Giko.dfm
@@ -8419,6 +8419,17 @@ object GikoForm: TGikoForm
84198419 object N71: TMenuItem
84208420 Action = GikoDM.IndividualAbonID0Action
84218421 end
8422+ object N82: TMenuItem
8423+ Caption = '-'
8424+ end
8425+ object IDNG1: TMenuItem
8426+ Action = GikoDM.AddIDtoNGWord1Action
8427+ Caption = 'NG'#12527#12540#12489#12395#36861#21152
8428+ end
8429+ object IDNG2: TMenuItem
8430+ Action = GikoDM.AddIDtoNGWord0Action
8431+ Caption = 'NG'#12527#12540#12489#12395#36861#21152'('#36879#26126')'
8432+ end
84228433 end
84238434 object N52: TMenuItem
84248435 Caption = #20491#21029#12354#12412#65374#12435#35299#38500
--- a/Giko.pas
+++ b/Giko.pas
@@ -419,6 +419,9 @@ type
419419 N80: TMenuItem;
420420 SameBoardThreadItem: TMenuItem;
421421 N81: TMenuItem;
422+ N82: TMenuItem;
423+ IDNG1: TMenuItem;
424+ IDNG2: TMenuItem;
422425 procedure FormCreate(Sender: TObject);
423426 procedure FormDestroy(Sender: TObject);
424427 procedure BrowserStatusTextChange(Sender: TObject;
@@ -686,6 +689,10 @@ type
686689 procedure SameBoardThreadSubItemOnClick(Sender: TObject);
687690 //! ポップアップブラウザ作成
688691 procedure CreateResPopupBrowser;
692+ //! D&Dを受け取る
693+ procedure WMDropFiles(var Msg: TWMDropFiles); Message WM_DropFiles;
694+ //! ファイルチェック
695+ function isValidFile(FileName: String) : boolean;
689696 protected
690697 procedure CreateParams(var Params: TCreateParams); override;
691698 procedure WndProc(var Message: TMessage); override;
@@ -756,6 +763,8 @@ type
756763 procedure IndividualAbonID(Atype : Integer);
757764 //このレスあぼ〜ん
758765 procedure IndividualAbon(Atag, Atype : Integer);
766+ //同一IDをNGワードに登録
767+ procedure AddIDtoNGWord(invisible : boolean);
759768 //ブラウザの再描画 true:全てのタブ false:アクティブなタブのみ
760769 procedure RepaintAllTabsBrowser();
761770 //リンクバー設定
@@ -1312,6 +1321,8 @@ begin
13121321
13131322 //置換設定ファイルの読み込み
13141323 ReplaceDM.LoadFromFile(GikoSys.GetReplaceFileName);
1324+ // D&Dを受け取る
1325+ DragAcceptFiles(Self.Handle, True);
13151326 end;
13161327
13171328 // CoolBar の設定を変数に保存
@@ -1467,6 +1478,13 @@ begin
14671478 GikoDM.TabsOpenAction.Execute;
14681479 GikoDM.TabsOpenAction.Tag := 0;
14691480 if (GikoSys.Setting.LastCloseTabURL <> '') then begin
1481+ PostMessage( Handle, USER_DOCUMENTCOMPLETE, Integer( FActiveContent.Browser ), 0 );
1482+ if ( FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
1483+ while (FActiveContent.Browser.ReadyState <> READYSTATE_COMPLETE) and
1484+ (FActiveContent.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
1485+ Application.ProcessMessages;
1486+ end;
1487+ end;
14701488 item := BBSsFindThreadFromURL( GikoSys.Setting.LastCloseTabURL );
14711489 if (item <> nil) and (item.IsLogFile) then begin
14721490 OpenThreadItem(item, item.URL);
@@ -2740,7 +2758,8 @@ var
27402758 begin
27412759 Thread := inThread;
27422760 idx := BrowserTab.TabIndex;
2743- if (FActiveContent <> nil) and
2761+ if (not FStartUp) and
2762+ (FActiveContent <> nil) and
27442763 (FActiveContent.Thread <> Thread.Thread) and
27452764 (FActiveContent.Browser <> nil) and
27462765 (Assigned(FActiveContent.Browser.Document)) then begin
@@ -2777,6 +2796,12 @@ begin
27772796 ThreadTitle := Thread.Thread.Title;
27782797 ThreadPTitle := Thread.Thread.ParentBoard.Title;
27792798 //ThreadScrollTop := Thread.Thread.ScrollTop;
2799+ if Thread.Thread.IsLogFile then begin
2800+ if not FileExists(Thread.Thread.GetThreadFileName) then begin
2801+ Thread.Thread.DeleteLogFile;
2802+ end;
2803+ end;
2804+
27802805 ThreadIsLog := Thread.Thread.IsLogFile;
27812806 ThreadItem := Thread.Thread;
27822807 ThreadNewArraical := Thread.Thread.NewArrival;
@@ -6611,7 +6636,7 @@ begin
66116636
66126637 end;
66136638 // *************************************************************************
6614-//! お気に入りツリーのマウスアップイベント
6639+//! スレッドブラウザクリックイベント
66156640 // *************************************************************************
66166641 function TGikoForm.WebBrowserClick(Sender: TObject): WordBool;
66176642 const
@@ -6662,7 +6687,9 @@ begin
66626687 end;
66636688 count := GikoSys.GetSameIDResCount(AID, FActiveContent.Thread);
66646689 limited := LIMIT;
6665- if count > LIMIT then begin
6690+ if not (GikoSys.Setting.LimitResCountMessage) then begin
6691+ limited := -1;
6692+ end else if (count > LIMIT) then begin
66666693 if (GikoUtil.MsgBox(Handle,
66676694 IntToStr(LIMIT) + '個以上ありますが、すべて表示しますか?',
66686695 'IDポップアップ警告',
@@ -6955,10 +6982,11 @@ end;
69556982
69566983 procedure TGikoForm.BrowserPanelResize(Sender: TObject);
69576984 begin
6958- if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
6959- MoveWindow(FActiveContent.Browser.Handle, 0, 0, BrowserPanel.ClientWidth, BrowserPanel.ClientHeight, false);
6960- end;
6961-
6985+ if (FIsMinimize <> mtMinimizing) then begin
6986+ if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
6987+ MoveWindow(FActiveContent.Browser.Handle, 0, 0, BrowserPanel.ClientWidth, BrowserPanel.ClientHeight, false);
6988+ end;
6989+ end;
69626990 end;
69636991 procedure TGikoForm.CoolBarResized(Sender: TObject; CoolBar: TCoolBar);
69646992 var
@@ -7091,6 +7119,60 @@ begin
70917119 if ThreadItem <> nil then
70927120 InsertBrowserTab( ThreadItem, True );
70937121 end;
7122+//同一IDをNGワードに登録
7123+procedure TGikoForm.AddIDtoNGWord(invisible : boolean);
7124+var
7125+ ThreadItem : TThreadItem;
7126+ No : Integer;
7127+{$IFDEF SPAM_FILTER_ENABLED}
7128+ body : TStringList;
7129+ ReadList : TStringList;
7130+ wordCount : TWordCount;
7131+{$ENDIF}
7132+ id: String;
7133+begin
7134+ No := KokoPopupMenu.Tag;
7135+ if No = 0 then Exit;
7136+ ThreadItem := GetActiveContent(True);
7137+ if ThreadItem = nil then Exit;
7138+
7139+ id := GikoSys.GetResID(No, ThreadItem);
7140+ if (id <> '') and (not IsNoValidID(id)) then begin
7141+ if (GikoSys.FAbon.AddToken(id, invisible)) then begin
7142+ GikoSys.FAbon.ReLoadFromNGwordFile;
7143+ FActiveContent.Repaint := True;
7144+ end;
7145+ end else begin
7146+ ShowMessage('IDを取得できませんでした。');
7147+ end;
7148+{$IFDEF SPAM_FILTER_ENABLED}
7149+ body := TStringList.Create;
7150+ try
7151+ GikoSys.GetSameIDRes(id, ThreadItem, body);
7152+ ReadList := TStringList.Create;
7153+ wordCount := TWordCount.Create;
7154+ try
7155+ // スパムに設定
7156+ ReadList.LoadFromFile( ThreadItem.GetThreadFileName );
7157+ for i := 0 to body.Count - 1 do begin
7158+ GikoSys.SpamCountWord( ReadList[ i ], wordCount );
7159+ GikoSys.SpamForget( wordCount, False ); // ハムを解除
7160+ GikoSys.SpamLearn( wordCount, True ); // スパムに設定
7161+ end;
7162+ finally
7163+ wordCount.Free;
7164+ ReadList.Free;
7165+ end;
7166+ finally
7167+ body.Free;
7168+ end;
7169+{$ENDIF}
7170+ if (FActiveContent.Repaint) then begin
7171+ ThreadItem.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).Body.ScrollTop;
7172+ if ThreadItem <> nil then
7173+ InsertBrowserTab( ThreadItem, True );
7174+ end;
7175+end;
70947176
70957177 //同一IDのあぼ〜ん
70967178 procedure TGikoForm.IndividualAbonID(Atype : Integer);
@@ -7582,6 +7664,93 @@ begin
75827664 FResPopupBrowser := TResPopupBrowser.Create(BrowserPanel);
75837665 end;
75847666 end;
7667+//! 外からのD&D処理
7668+procedure TGikoForm.WMDropFiles(var Msg: TWMDropFiles);
7669+var
7670+ FileName: Array[0..MAX_PATH] of Char;
7671+ Cnt, K: Integer;
7672+ Board: TBoard;
7673+ LogFolder: String;
7674+ datList: TStringList;
7675+begin
7676+ // 表示しているの板のとき以外は拒否
7677+ if GetActiveList is TBoard then begin
7678+ Board := TBoard(GetActiveList);
7679+ if MsgBox(Handle, Board.Title
7680+ + ' 板に入れていいですか?', 'ギコナビ', MB_YESNO or MB_ICONQUESTION) = IDYES then begin
7681+ // 板の時は、ログフォルダにコピーしてはぐれログ対応と同じ処理?
7682+ datList := TStringList.Create;
7683+ try
7684+ Cnt := DragQueryFile(Msg.Drop, $FFFFFFFF, FileName, SizeOf(FileName));
7685+ for K := 0 to Cnt - 1 do begin
7686+ DragQueryFile(Msg.Drop, K, FileName, SizeOf(FileName));
7687+ {FileNameにdropされたファイル名が入っているので、ここで何らかの処理をする。たとえば次の行}
7688+ // ファイルのチェック
7689+ if (isValidFile(FileName)) then begin
7690+ LogFolder := ExtractFilePath(Board.FilePath);
7691+ if (FileExists( LogFolder + ExtractFileName(FileName))) then begin
7692+ GikoUtil.MsgBox(Handle, LogFolder + 'に' + ExtractFileName(FileName) + 'が既に存在します。', 'エラー', MB_ICONSTOP or MB_OK);
7693+ end else begin
7694+ if (not DirectoryExists(LogFolder)) then begin
7695+ if (not GikoSys.ForceDirectoriesEx(LogFolder) ) then begin
7696+ GikoUtil.MsgBox(Handle, LogFolder + 'の生成に失敗しました。', 'エラー', MB_ICONSTOP or MB_OK);
7697+ end;
7698+ end;
7699+ if (not Windows.CopyFile(FileName, PChar(LogFolder + ExtractFileName(FileName)), true)) then begin
7700+ GikoUtil.MsgBox(Handle, FileName + 'のコピーに失敗しました。', 'エラー', MB_ICONSTOP or MB_OK);
7701+ end else begin
7702+ datList.Add(ExtractFileName(FileName));
7703+ end;
7704+ end;
7705+ end;
7706+ end;
7707+ DragFinish(Msg.Drop);
7708+ if (datList.Count > 0) then begin
7709+ GikoSys.AddOutofIndexDat(Board, datList, False);
7710+ ShowMessage(IntToStr(datList.Count) + '個のdatファイルがコピーされました。' );
7711+ if GikoForm.TreeView.Visible then
7712+ GikoForm.TreeView.Refresh;
7713+ if GikoForm.ListView.Visible then
7714+ GikoForm.ListView.Refresh;
7715+ end else begin
7716+ ShowMessage('一つもコピーされませんでした。' );
7717+ end;
7718+ finally
7719+ datList.Free;
7720+ end;
7721+
7722+ end;
7723+ end else begin
7724+ ShowMessage('板を表示してください。');
7725+ end;
7726+end;
7727+//! ファイルチェック
7728+function TGikoForm.isValidFile(FileName: String) : boolean;
7729+var
7730+ dt: TDateTime;
7731+begin
7732+ Result := True;
7733+ // 存在するか、拡張子dat、ファイル名
7734+ if ( not FileExists(FileName) ) then begin
7735+ Result := False;
7736+ GikoUtil.MsgBox(Handle, FileName + 'は存在しません。', 'エラー', MB_ICONSTOP or MB_OK);
7737+ end else if (ExtractFileExt(ExtractFileName(FileName)) <> '.dat' ) then begin
7738+ Result := False;
7739+ GikoUtil.MsgBox(Handle, ExtractFileName(FileName) + 'の拡張子が".dat"でありません。', 'エラー', MB_ICONSTOP or MB_OK);
7740+ end else begin
7741+ // ログファイルの拡張子をはずしたものがスレ作成日時
7742+ try
7743+ dt := GikoSys.GetCreateDateFromName(FileName);
7744+ if ((UnixToDateTime(ZERO_DATE) + OffsetFromUTC) = dt) then begin
7745+ Result := False;
7746+ GikoUtil.MsgBox(Handle, ExtractFileName(FileName) + 'のファイル名が不正です。', 'エラー', MB_ICONSTOP or MB_OK);
7747+ end;
7748+ except
7749+ Result := False;
7750+ GikoUtil.MsgBox(Handle, ExtractFileName(FileName) + 'のファイル名が不正です。', 'エラー', MB_ICONSTOP or MB_OK);
7751+ end;
7752+ end;
7753+end;
75857754
75867755 initialization
75877756 OleInitialize(nil);
--- a/GikoDataModule.dfm
+++ b/GikoDataModule.dfm
@@ -1344,6 +1344,18 @@ object GikoDM: TGikoDM
13441344 OnExecute = NewLinkToClipboardActionExecute
13451345 OnUpdate = DependActiveCntentActionUpdate
13461346 end
1347+ object AddIDtoNGWord0Action: TAction
1348+ Category = #12502#12521#12454#12470#12509#12483#12503#12450#12483#12503
1349+ Caption = 'ID'#12434'NG'#12527#12540#12489#12395#36861#21152'('#36879#26126')'
1350+ Hint = #12524#12473#12398'ID'#12434'NG'#12527#12540#12489#12501#12449#12452#12523#12395#36861#21152#12377#12427#65288#36879#26126#65289
1351+ OnExecute = AddIDtoNGWord0ActionExecute
1352+ end
1353+ object AddIDtoNGWord1Action: TAction
1354+ Category = #12502#12521#12454#12470#12509#12483#12503#12450#12483#12503
1355+ Caption = 'ID'#12434'NG'#12527#12540#12489#12395#36861#21152
1356+ Hint = 'ID'#12434'NG'#12527#12540#12489#12501#12449#12452#12523#12395#36861#21152#12377#12427
1357+ OnExecute = AddIDtoNGWord1ActionExecute
1358+ end
13471359 end
13481360 object ToobarImageList: TImageList
13491361 Left = 44
--- a/GikoDataModule.pas
+++ b/GikoDataModule.pas
@@ -237,6 +237,8 @@ type
237237 ScrollPageUpAction: TAction;
238238 AllLinkToClipboardAction: TAction;
239239 NewLinkToClipboardAction: TAction;
240+ AddIDtoNGWord0Action: TAction;
241+ AddIDtoNGWord1Action: TAction;
240242 procedure EditNGActionExecute(Sender: TObject);
241243 procedure ReloadActionExecute(Sender: TObject);
242244 procedure GoFowardActionExecute(Sender: TObject);
@@ -444,6 +446,8 @@ type
444446 procedure ScrollPageUpActionExecute(Sender: TObject);
445447 procedure AllLinkToClipboardActionExecute(Sender: TObject);
446448 procedure NewLinkToClipboardActionExecute(Sender: TObject);
449+ procedure AddIDtoNGWord0ActionExecute(Sender: TObject);
450+ procedure AddIDtoNGWord1ActionExecute(Sender: TObject);
447451 private
448452 { Private 宣言 }
449453 procedure ClearResFilter;
@@ -2261,9 +2265,11 @@ begin
22612265 if item <> nil then
22622266 GikoForm.InsertBrowserTab( item, false );
22632267 end;
2264- //最初の1枚に設定 アドレスの設定のためのカラ呼び
2265- if GikoForm.BrowserTab.Tabs.Count > 0 then begin
2266- GikoForm.BrowserTab.OnChange(nil);
2268+ //最初の1枚に設定
2269+ if (GikoSys.Setting.URLDisplay) and
2270+ (GikoForm.BrowserTab.Tabs.Count > 0) then begin
2271+ GikoForm.AddressComboBox.Text :=
2272+ TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[0]).Thread.URL;
22672273 end;
22682274 end;
22692275 finally
@@ -2408,7 +2414,9 @@ begin
24082414 if ThreadItem = nil then Exit;
24092415 count := GikoSys.GetSameIDResCount(No, GikoForm.ActiveContent.Thread);
24102416 limited := LIMIT;
2411- if count > LIMIT then begin
2417+ if not (GikoSys.Setting.LimitResCountMessage) then begin
2418+ limited := -1;
2419+ end else if count > LIMIT then begin
24122420 if ( GikoUtil.MsgBox(GikoForm.Handle,
24132421 IntToStr(LIMIT) + '個以上ありますが、すべて表示しますか?',
24142422 'IDポップアップ警告',
@@ -4434,6 +4442,16 @@ begin
44344442 end;
44354443
44364444
4445+//! このレスのIDをNGワードに追加する(透明)
4446+procedure TGikoDM.AddIDtoNGWord0ActionExecute(Sender: TObject);
4447+begin
4448+ GikoForm.AddIDtoNGWord(true);
4449+end;
4450+//! このレスのIDをNGワードに追加する
4451+procedure TGikoDM.AddIDtoNGWord1ActionExecute(Sender: TObject);
4452+begin
4453+ GikoForm.AddIDtoNGWord(false);
4454+end;
44374455
44384456 end.
44394457
--- a/GikoSystem.pas
+++ b/GikoSystem.pas
@@ -116,8 +116,6 @@ type
116116 function ChooseString(const Text, Separator: string; Index: integer): string;
117117 //! 一時ファイルからの復旧
118118 procedure RestoreThreadData(Board: TBoard);
119- //! インデックスにないdat(はぐれdat)の追加
120- procedure AddOutofIndexDat(Board: TBoard; DatList: TStringList);
121119 public
122120 { Public 宣言 }
123121 FAbon : TAbon;
@@ -129,13 +127,10 @@ type
129127 property ResRange : Longint read FResRange write FResRange;
130128 //! バージョン情報
131129 property Version : String read FVersion;
132-// function MsgBox(Msg: string; Title: string; Flags: Longint): integer; overload;
133-// function MsgBox(Handle: THandle; Msg: string; Title: string; Flags: Longint): integer; overload;
134130 function IsNumeric(s: string): boolean;
135131 function IsFloat(s: string): boolean;
136132 function DirectoryExistsEx(const Name: string): Boolean;
137133 function ForceDirectoriesEx(Dir: string): Boolean;
138-// function GetVersion: string;
139134
140135 function GetBoardFileName: string;
141136 function GetCustomBoardFileName: string;
@@ -224,7 +219,7 @@ type
224219 procedure GetSameIDRes(AIDNum : Integer; ThreadItem: TThreadItem;var body: TStringList); overload;
225220 function GetSameIDResCount(const AID : string; ThreadItem: TThreadItem):Integer; overload;
226221 function GetSameIDResCount(AIDNum : Integer; ThreadItem: TThreadItem):Integer; overload;
227-
222+ function GetResID(AIDNum: Integer; ThreadItem: TThreadItem): String;
228223 //! 単語解析
229224 procedure SpamCountWord( const text : string; wordCount : TWordCount );
230225 //! 学習クリア
@@ -257,6 +252,10 @@ type
257252 function GetOEIndentChar : string;
258253 //! 置換設定ファイル取得
259254 function GetReplaceFileName: String;
255+ //! インデックスにないdat(はぐれdat)の追加
256+ procedure AddOutofIndexDat(Board: TBoard; DatList: TStringList; AllCreate: boolean = True);
257+ //! ファイル名からのスレッド作成日の取得
258+ function GetCreateDateFromName(FileName: String): TDateTime;
260259 end;
261260
262261 var
@@ -266,7 +265,7 @@ const
266265 ZERO_DATE: Integer = 25569;
267266 BETA_VERSION_NAME_E = 'beta';
268267 BETA_VERSION_NAME_J = 'バタ';
269- BETA_VERSION = 56;
268+ BETA_VERSION = 57;
270269 BETA_VERSION_BUILD = ''; //!< debug版など
271270 APP_NAME = 'gikoNavi';
272271 BE_PHP_URL = 'http://be.2ch.net/test/p.php?i=';
@@ -572,11 +571,18 @@ var
572571 usePlugIn : Boolean;
573572 islog : Boolean;
574573 urlHead: String;
574+ datFileCheck: Boolean;
575575 {*
576576 FavoThreadItem : TFavoriteThreadItem;
577577 Node: TTreeNode;
578578 *}
579+{$IFDEF DEBUG}
580+ st, rt: Cardinal;
581+{$ENDIF}
579582 begin
583+{$IFDEF DEBUG}
584+ st := GetTickCount;
585+{$ENDIF}
580586 if Board.IsThreadDatRead then
581587 Exit;
582588 Board.Clear;
@@ -592,12 +598,16 @@ begin
592598
593599 FileName := Board.GetFolderIndexFileName;
594600
595- FileList := TStringList.Create;
596- FileList.Sorted := True;
597- FileList.BeginUpdate;
598- //IsLogFile用DATファイルリスト
599- GetFileList(ExtractFileDir(Board.GetFolderIndexFileName), '*.dat', FileList, False);
600- FileList.EndUpdate;
601+ //
602+ datFileCheck := (Setting.CheckDatFile) or (not FileExists(FileName));
603+ if (datFileCheck) then begin
604+ FileList := TStringList.Create;
605+ FileList.Sorted := True;
606+ FileList.BeginUpdate;
607+ //IsLogFile用DATファイルリスト
608+ GetFileList(ExtractFileDir(Board.GetFolderIndexFileName), '*.dat', FileList, False);
609+ FileList.EndUpdate;
610+ end;
601611
602612 // 重複を防ぐ
603613 Board.BeginUpdate;
@@ -609,7 +619,11 @@ begin
609619 //2行目から(1行目はバージョン)
610620 for i := sl.Count - 1 downto 1 do begin
611621 Rec := ParseIndexLine(sl[i]);
612- islog := FileList.Find( Rec.FFileName, Index );
622+ if (datFileCheck) then begin
623+ islog := FileList.Find( Rec.FFileName, Index );
624+ end else begin
625+ islog := (Rec.FSize <> 0) and (Rec.FCount <> 0);
626+ end;
613627 if usePlugIn then
614628 ThreadItem := TThreadItem.Create(
615629 Board.BoardPlugIn,
@@ -636,7 +650,7 @@ begin
636650 end;
637651
638652 ThreadItem.BeginUpdate;
639- if islog then
653+ if (datFileCheck) and (islog) then
640654 FileList.Delete( Index );
641655
642656 ThreadItem.No := Rec.FNo;
@@ -671,50 +685,75 @@ begin
671685 if UnRead <> Board.UnRead then
672686 Board.UnRead := UnRead;
673687
674- //インデックスに無かったログを追加(腐れインデックス対応)
675- AddOutofIndexDat(Board, FileList);
688+ if (datFileCheck) then begin
689+ //インデックスに無かったログを追加(腐れインデックス対応)
690+ AddOutofIndexDat(Board, FileList);
691+ end;
676692 Board.EndUpdate;
677693
678694 //前回異常終了時チェック
679695 RestoreThreadData( Board );
680696 finally
681697 sl.Free;
682- FileList.Free;
698+ if (datFileCheck) then begin
699+ FileList.Free;
700+ end;
683701 Board.Sorted := False;
684702 end;
685703 Board.IsThreadDatRead := True;
704+{$IFDEF DEBUG}
705+ rt := GetTickCount - st;
706+ Writeln('Read Done.' + IntToStr(rt) + ' ms');
707+{$ENDIF}
686708 end;
687709 {!
688710 \brief インデックスにないdat(はぐれdat)の追加
689711 \param Board 追加する板
690712 \param DatList datファイル名
691713 }
692-procedure TGikoSys.AddOutofIndexDat(Board: TBoard; DatList: TStringList);
714+procedure TGikoSys.AddOutofIndexDat(Board: TBoard; DatList: TStringList; AllCreate: Boolean = True);
693715 var
694716 i : Integer;
695717 Boardpath,FileName : String;
696718 ResRec: TResRec;
697719 ThreadItem: TThreadItem;
720+ create: Boolean;
698721 begin
722+ create := False;
699723 Boardpath := ExtractFilePath(Board.GetFolderIndexFileName);
700724 //インデックスに無かったログを追加(腐れインデックス対応)
701725 for i := 0 to DatList.Count - 1 do begin
702726 FileName := Boardpath + DatList[i];
703-
704- //ResRec := DivideStrLine(ReadThreadFile(FileName, 1));
705- if Board.IsBoardPlugInAvailable then begin
706- ThreadItem := TThreadItem.Create(
707- Board.BoardPlugIn,
708- Board,
709- Board.BoardPlugIn.FileName2ThreadURL( DWORD( Board ), DatList[i] ) );
710- THTMLCreate.DivideStrLine(Board.BoardPlugIn.GetDat( DWORD( ThreadItem ), 1 ), @ResRec);
711- end else begin
712- ThreadItem := TThreadItem.Create(
713- nil,
714- Board,
715- Get2chBoard2ThreadURL( Board, ChangeFileExt( DatList[i], '' ) ) );
716- THTMLCreate.DivideStrLine(ReadThreadFile(FileName, 1), @ResRec);
727+ ThreadItem := nil;
728+ if (not AllCreate) then begin
729+ create := False;
730+ ThreadItem := Board.FindThreadFromFileName(DatList[i]);
731+ if (ThreadItem = nil) then begin
732+ create := True;
733+ end else begin
734+ if Board.IsBoardPlugInAvailable then begin
735+ THTMLCreate.DivideStrLine(Board.BoardPlugIn.GetDat( DWORD( ThreadItem ), 1 ), @ResRec);
736+ end else begin
737+ THTMLCreate.DivideStrLine(ReadThreadFile(FileName, 1), @ResRec);
738+ end;
739+ end;
717740 end;
741+ if (ThreadItem = nil) then begin
742+ if Board.IsBoardPlugInAvailable then begin
743+ ThreadItem := TThreadItem.Create(
744+ Board.BoardPlugIn,
745+ Board,
746+ Board.BoardPlugIn.FileName2ThreadURL( DWORD( Board ), DatList[i] ) );
747+ THTMLCreate.DivideStrLine(Board.BoardPlugIn.GetDat( DWORD( ThreadItem ), 1 ), @ResRec);
748+ end else begin
749+ ThreadItem := TThreadItem.Create(
750+ nil,
751+ Board,
752+ Get2chBoard2ThreadURL( Board, ChangeFileExt( DatList[i], '' ) ) );
753+ THTMLCreate.DivideStrLine(ReadThreadFile(FileName, 1), @ResRec);
754+ end;
755+ end;
756+
718757
719758 ThreadItem.BeginUpdate;
720759 ThreadItem.FileName := DatList[i];
@@ -736,7 +775,9 @@ begin
736775 ThreadItem.ScrollTop := 0;
737776 ThreadItem.AgeSage := gasNone;
738777 ThreadItem.EndUpdate;
739- Board.Add(ThreadItem);
778+ if (AllCreate) or (create) then begin
779+ Board.Add(ThreadItem);
780+ end;
740781 end;
741782 end;
742783 {!
@@ -2849,12 +2890,27 @@ end;
28492890 }
28502891 procedure TGikoSys.GetSameIDRes(AIDNum : Integer; ThreadItem: TThreadItem;var body: TStringList);
28512892 var
2893+ AID : String;
2894+begin
2895+ AID := GetResID(AIDNum, ThreadItem);
2896+ if not IsNoValidID(AID) then begin
2897+ GetSameIDRes(AID, ThreadItem, body);
2898+ end;
2899+end;
2900+{!
2901+\brief 投稿 ID 取得
2902+\param AIDNum 投稿 レス番号
2903+\param ThreadItem 投稿スレッド
2904+\param body OUT:投稿ID
2905+}
2906+function TGikoSys.GetResID(AIDNum: Integer; ThreadItem: TThreadItem): String;
2907+var
28522908 Res: TResRec;
28532909 boardPlugIn : TBoardPlugIn;
2854- AID : String;
28552910 stList: TStringList;
28562911 i : Integer;
28572912 begin
2913+ Result := '';
28582914 if (ThreadItem <> nil) and (ThreadItem.IsLogFile)
28592915 and (AIDNum > 0) and (AIDNum <= ThreadItem.Count) then begin
28602916 //if ThreadItem.IsBoardPlugInAvailable then begin
@@ -2866,21 +2922,21 @@ begin
28662922 end else begin
28672923 THTMLCreate.DivideStrLine( ReadThreadFile(ThreadItem.GetThreadFileName, AIDNum), @Res);
28682924 end;
2869- AID := Res.FDateTime;
2870- if AnsiPos('id', AnsiLowerCase(AID)) > 0 then begin
2871- AID := Copy(AID, AnsiPos('id', AnsiLowerCase(AID)) - 1, 11);
2872- if AnsiPos(' be:', AnsiLowerCase(AID)) > 0 then begin
2873- AID := Copy(AID, 1, AnsiPos(' BE:', AnsiLowerCase(AID)) - 1)
2925+ Result := Res.FDateTime;
2926+ if AnsiPos('id', AnsiLowerCase(Result)) > 0 then begin
2927+ Result := Copy(Result, AnsiPos('id', AnsiLowerCase(Result)) - 1, 11);
2928+ if AnsiPos(' be:', AnsiLowerCase(Result)) > 0 then begin
2929+ Result := Copy(Result, 1, AnsiPos(' BE:', AnsiLowerCase(Result)) - 1)
28742930 end;
28752931 end else begin
28762932 stlist := TStringList.Create;
28772933 try
2878- stList.DelimitedText := AID;
2879- AID := '';
2934+ stList.DelimitedText := Result;
2935+ Result := '';
28802936 for i := 0 to stList.Count - 1 do
28812937 if Length(WideString(stList[i])) = 8 then begin
28822938 if NotDateorTimeString(stList[i]) then begin
2883- AID := stList[i];
2939+ Result := stList[i];
28842940 break;
28852941 end;
28862942 end;
@@ -2888,11 +2944,8 @@ begin
28882944 stList.Free;
28892945 end;
28902946 end;
2891- if not IsNoValidID(AID) then
2892- GetSameIDRes(AID, ThreadItem, body);
28932947 end;
28942948 end;
2895-
28962949 {!
28972950 \brief 同じ投稿 ID を持つレスをカウント
28982951 \param AID 個人を特定する投稿 ID
@@ -3309,7 +3362,8 @@ begin
33093362 ThreadItem.NewReceive := ini.ReadInteger(SECTION, 'NewReceive', 0);
33103363
33113364 ThreadItem.Size := ini.ReadInteger(SECTION, 'Size', 0);
3312- if(ThreadItem.Size = 0) and (FileExists(ThreadItem.GetThreadFileName)) then begin
3365+ ThreadItem.IsLogFile := FileExists(ThreadItem.GetThreadFileName);
3366+ if(ThreadItem.Size = 0) and (ThreadItem.IsLogFile) then begin
33133367 try
33143368 ThreadItem.Size := GetFileSize(ThreadItem.GetThreadFileName) - ThreadItem.Count;
33153369 except
@@ -3399,6 +3453,26 @@ function TGikoSys.GetReplaceFileName: String;
33993453 begin
34003454 Result := Setting.GetReplaceFileName;
34013455 end;
3456+//! ファイル名からのスレッド作成日の取得
3457+function TGikoSys.GetCreateDateFromName(FileName: String): TDateTime;
3458+var
3459+ tmp : String;
3460+ unixtime: Int64;
3461+begin
3462+ // ログファイルの拡張子をはずしたものがスレ作成日時
3463+ tmp := ChangeFileExt(FileName, '');
3464+ if AnsiPos('_', tmp) <> 0 then
3465+ if AnsiPos('_', tmp) > 9 then
3466+ tmp := Copy(tmp, 1, AnsiPos('_', tmp)-1)
3467+ else
3468+ Delete(tmp, AnsiPos('_', tmp), 1);
3469+
3470+ if ( Length(tmp) = 9) and ( tmp[1] = '0' ) then
3471+ Insert('1', tmp, 1);
3472+
3473+ unixtime := StrToInt64Def(tmp, ZERO_DATE);
3474+ Result := UnixToDateTime(unixtime) + OffsetFromUTC;
3475+end;
34023476
34033477 initialization
34043478 GikoSys := TGikoSys.Create;
--- a/InputAssist.pas
+++ b/InputAssist.pas
@@ -189,12 +189,19 @@ var
189189 begin
190190 if GikoListView1.Selected <> nil then begin
191191 if (ValidateKey(KeyNameEdit.Text, CategoryNameComboBox.Text)) then begin
192- if (not InputAssistDM.IsDupulicate(
192+ resWord := TResistWord(GikoListView1.Selected.Data);
193+ // 変更前のキー/カテゴリと同一もしくは、他と重複無し
194+ if ((resWord.GetKey = KeyNameEdit.Text)
195+ and (resWord.GetCategory = CategoryNameComboBox.Text)) or
196+ (not InputAssistDM.IsDupulicate(
193197 KeyNameEdit.Text, CategoryNameComboBox.Text) ) then begin
194- resWord := TResistWord(GikoListView1.Selected.Data);
195- resWord.SetKey(KeyNameEdit.Text);
196- resWord.SetCategory(CategoryNameComboBox.Text);
197- resWord.SetText(TextMemo.Text);
198+ resWord.SetCategory(CategoryNameComboBox.Text);
199+ resWord.SetText(TextMemo.Text);
200+ // キーが変わるときは、ChangeKeyを呼ぶ
201+ if (resWord.GetKey <> KeyNameEdit.Text) then begin
202+ resWord.SetKey(KeyNameEdit.Text);
203+ InputAssistDM.ChangeKey(resWord);
204+ end;
198205 // 一覧の更新
199206 GikoListView1.Selected.Caption := resWord.GetKey;
200207 GikoListView1.Selected.SubItems[0] := resWord.GetCategory;
--- a/KuroutSetting.dfm
+++ b/KuroutSetting.dfm
@@ -21,8 +21,8 @@ object KuroutOption: TKuroutOption
2121 Top = 0
2222 Width = 517
2323 Height = 393
24- ActivePage = KakikomiTabSheet
25- TabIndex = 2
24+ ActivePage = TabSheet2
25+ TabIndex = 3
2626 TabOrder = 0
2727 object TabSheet1: TTabSheet
2828 Caption = #35443#32048#35373#23450#65297
@@ -562,6 +562,22 @@ object KuroutOption: TKuroutOption
562562 TabOrder = 1
563563 end
564564 end
565+ object LogGroupBox: TGroupBox
566+ Left = 16
567+ Top = 160
568+ Width = 465
569+ Height = 65
570+ Caption = #12525#12464
571+ TabOrder = 1
572+ object CheckDatFileCheckBox: TCheckBox
573+ Left = 22
574+ Top = 14
575+ Width = 369
576+ Height = 17
577+ Caption = #12473#12524#12483#12489#19968#35239#65288'Folder.idx'#65289#35501#12415#36796#12415#26178#12395'dat'#12501#12449#12452#12523#12434#12481#12455#12483#12463#12377#12427#12290
578+ TabOrder = 0
579+ end
580+ end
565581 end
566582 end
567583 object OkBotton: TButton
--- a/KuroutSetting.pas
+++ b/KuroutSetting.pas
@@ -81,6 +81,8 @@ type
8181 Label14: TLabel;
8282 ExtListLabeledEdit: TLabeledEdit;
8383 Label15: TLabel;
84+ LogGroupBox: TGroupBox;
85+ CheckDatFileCheckBox: TCheckBox;
8486 procedure OkBottonClick(Sender: TObject);
8587 procedure FormCreate(Sender: TObject);
8688 procedure CDeleteButtonClick(Sender: TObject);
@@ -156,6 +158,8 @@ begin
156158 ReplaceDatCheckBox.Checked := GikoSys.Setting.ReplaceDat;
157159 SentIniFileSizeUpDown.Position := GikoSys.Setting.SentIniFileSize;
158160 ExtListLabeledEdit.Text := GikoSys.Setting.ExtList;
161+ // Folder.idx読み込み時datチェック
162+ CheckDatFileCheckBox.Checked := GikoSys.Setting.CheckDatFile;
159163 end;
160164
161165 procedure TKuroutOption.SaveSetting;
@@ -198,6 +202,8 @@ begin
198202 GikoSys.Setting.ReplaceDat := ReplaceDatCheckBox.Checked;
199203 GikoSys.Setting.SentIniFileSize := SentIniFileSizeUpDown.Position;
200204 GikoSys.Setting.ExtList := ExtListLabeledEdit.Text;
205+ // Folder.idx読み込み時datチェック
206+ GikoSys.Setting.CheckDatFile := CheckDatFileCheckBox.Checked;
201207 end;
202208
203209 procedure TKuroutOption.RecvBufferSizeExit(Sender: TObject);
--- a/Option.dfm
+++ b/Option.dfm
@@ -1,6 +1,6 @@
11 object OptionDialog: TOptionDialog
2- Left = 417
3- Top = 435
2+ Left = 300
3+ Top = 166
44 BorderStyle = bsDialog
55 Caption = #12458#12503#12471#12519#12531
66 ClientHeight = 428
@@ -61,9 +61,9 @@ object OptionDialog: TOptionDialog
6161 Top = 4
6262 Width = 509
6363 Height = 389
64- ActivePage = TabSheet1
64+ ActivePage = ThreadSheet
6565 MultiLine = True
66- TabIndex = 5
66+ TabIndex = 4
6767 TabOrder = 3
6868 OnChange = OptionTabChange
6969 object ConnectSheet: TTabSheet
@@ -870,7 +870,7 @@ object OptionDialog: TOptionDialog
870870 Left = 12
871871 Top = 92
872872 Width = 477
873- Height = 121
873+ Height = 157
874874 Caption = #12522#12531#12463#12463#12522#12483#12463#26178#21205#20316
875875 TabOrder = 1
876876 object AppFolderLabel: TLabel
@@ -915,13 +915,21 @@ object OptionDialog: TOptionDialog
915915 TabOrder = 3
916916 OnClick = URLAppCheckBoxClick
917917 end
918+ object ResAnchorCheckBox: TCheckBox
919+ Left = 12
920+ Top = 125
921+ Width = 333
922+ Height = 17
923+ Caption = #12524#12473#12450#12531#12459#12540#12398#22580#21512#12289#12381#12398#12524#12473#12414#12391#12472#12515#12531#12503#12377#12427
924+ TabOrder = 4
925+ end
918926 end
919927 object GroupBox6: TGroupBox
920928 Left = 12
921- Top = 220
929+ Top = 260
922930 Width = 477
923- Height = 49
924- Caption = #12525#12464#21066#38500
931+ Height = 77
932+ Caption = #30906#35469#12513#12483#12475#12540#12472
925933 TabOrder = 2
926934 object LogDeleteMessageCheckBox: TCheckBox
927935 Left = 12
@@ -932,21 +940,14 @@ object OptionDialog: TOptionDialog
932940 TabOrder = 0
933941 OnClick = URLAppCheckBoxClick
934942 end
935- end
936- object ResAnchorGroupBox: TGroupBox
937- Left = 12
938- Top = 279
939- Width = 477
940- Height = 49
941- Caption = #12524#12473#12450#12531#12459#12540#12463#12522#12483#12463#26178#21205#20316
942- TabOrder = 3
943- object ResAnchorCheckBox: TCheckBox
943+ object IgnoreLimitResCountCheckBox: TCheckBox
944944 Left = 12
945- Top = 21
946- Width = 165
945+ Top = 46
946+ Width = 389
947947 Height = 17
948- Caption = #12381#12398#12524#12473#12414#12391#12472#12515#12531#12503#12377#12427
949- TabOrder = 0
948+ Caption = #21516'ID'#12524#12473#12450#12531#12459#12540#34920#31034#12391#21046#38480#25968#36234#12360#12398#30906#35469#12513#12483#12475#12540#12472#12434#34920#31034#12377#12427'(&R)'
949+ TabOrder = 1
950+ OnClick = URLAppCheckBoxClick
950951 end
951952 end
952953 end
--- a/Option.pas
+++ b/Option.pas
@@ -116,8 +116,6 @@ type
116116 OpenMailerCheckBox: TCheckBox;
117117 GroupBox6: TGroupBox;
118118 LogDeleteMessageCheckBox: TCheckBox;
119- ResAnchorGroupBox: TGroupBox;
120- ResAnchorCheckBox: TCheckBox;
121119 TabSheet1: TTabSheet;
122120 TabAddRadioGroup: TRadioGroup;
123121 GroupBox8: TGroupBox;
@@ -219,6 +217,8 @@ type
219217 gppLeftBottomRB: TRadioButton;
220218 gppBottomRB: TRadioButton;
221219 gppRighBottomRB: TRadioButton;
220+ ResAnchorCheckBox: TCheckBox;
221+ IgnoreLimitResCountCheckBox: TCheckBox;
222222 procedure FormCreate(Sender: TObject);
223223 procedure FormDestroy(Sender: TObject);
224224 procedure ApplyButtonClick(Sender: TObject);
@@ -766,6 +766,8 @@ begin
766766
767767 //ログ削除時メッセージ
768768 LogDeleteMessageCheckBox.Checked := GikoSys.Setting.DeleteMsg;
769+ //同IDレスアンカー表示の制限数越えメッセージ
770+ IgnoreLimitResCountCheckBox.Checked := GikoSys.Setting.LimitResCountMessage;
769771
770772 //終了時確認ダイアログ
771773 ShowDialogForEndCheckBox.Checked := GikoSys.Setting.ShowDialogForEnd;
@@ -1031,6 +1033,8 @@ begin
10311033
10321034 GikoSys.Setting.OpenMailer := OpenMailerCheckBox.Checked;
10331035 GikoSys.Setting.DeleteMsg := LogDeleteMessageCheckBox.Checked;
1036+ GikoSys.Setting.LimitResCountMessage := IgnoreLimitResCountCheckBox.Checked;
1037+
10341038 //終了時確認ダイアログ
10351039 GikoSys.Setting.ShowDialogForEnd := ShowDialogForEndCheckBox.Checked;
10361040 //AllTabClose
--- a/Preview.pas
+++ b/Preview.pas
@@ -148,14 +148,14 @@ begin
148148 end;
149149
150150 Result := Rect(0, 0, WindowWidth, WindowHeight);
151-
151+ // bata55以前は左右が間違ってた
152152 // 出し位置による補正
153153 case GikoSys.Setting.PopupPosition of
154- gppRightTop: OffsetRect(Result,
154+ gppLeftTop: OffsetRect(Result,
155155 Point.x - WindowWidth - 15, Point.y - WindowHeight - 15);
156- gppRight: OffsetRect(Result,
156+ gppLeft: OffsetRect(Result,
157157 Point.x - WindowWidth - 15, Point.y - (WindowHeight div 2));
158- gppRightBottom: OffsetRect(Result,
158+ gppLeftBottom: OffsetRect(Result,
159159 Point.x - WindowWidth - 15, Point.y + 15);
160160 gppTop: OffsetRect(Result,
161161 Point.x - (WindowWidth div 2), Point.y - WindowHeight - 15);
@@ -163,11 +163,11 @@ begin
163163 Point.x - (WindowWidth div 2), Point.y - (WindowHeight div 2));
164164 gppBottom: OffsetRect(Result,
165165 Point.x - (WindowWidth div 2), Point.y + 15);
166- gppLeftTop: OffsetRect(Result,
166+ gppRightTop: OffsetRect(Result,
167167 Point.x + 15, Point.y - WindowHeight - 15);
168- gppLeft: OffsetRect(Result,
168+ gppRight: OffsetRect(Result,
169169 Point.x + 15, Point.y - (WindowHeight div 2));
170- gppLeftBottom: OffsetRect(Result, Point.x + 15, Point.y + 15); //ギコナビスレ パート1の453氏に感謝
170+ gppRightBottom: OffsetRect(Result, Point.x + 15, Point.y + 15); //ギコナビスレ パート1の453氏に感謝
171171 end;
172172
173173 end;
--- a/Setting.pas
+++ b/Setting.pas
@@ -20,9 +20,9 @@ type
2020 TGikoListOrientation = (gloHorizontal, gloVertical); // リスト垂直・水平
2121 TGikoListState = (glsMax, glsNormal, glsMin); // リストサイズ状態
2222 // ポップアップ表示位置
23- TGikoPopupPosition = (gppRightTop, gppTop, gppLeftTop,
24- gppRight, gppCenter, gppLeft,
25- gppRightBottom, gppBottom, gppLeftBottom);
23+ TGikoPopupPosition = (gppLeftTop = 0, gppTop, gppRightTop,
24+ gppLeft, gppCenter, gppRight,
25+ gppLeftBottom, gppBottom, gppRightBottom);
2626 //プレビューサイズ
2727 TGikoPreviewSize = (gpsXLarge, gpsLarge, gpsMedium, gpsSmall, gpsXSmall);
2828 TGikoBrowserAutoMaximize = (gbmNone, gbmClick, gbmDoubleClick);
@@ -450,6 +450,10 @@ type
450450 FExtList: String;
451451 //! Skin関連
452452 FSkinFiles: TSkinFiles;
453+ //! indexファイルを読み時にdatを検索する
454+ FCheckDatFile: Boolean;
455+ //! 同IDレスアンカー表示
456+ FLimitResCountMessage: Boolean;
453457 function GetMainCoolSet(Index: Integer): TCoolSet;
454458 function GetBoardCoolSet(Index: Integer): TCoolSet;
455459 function GetBrowserCoolSet(Index: Integer): TCoolSet;
@@ -807,7 +811,9 @@ type
807811 property ExtList: String read FExtList write FExtList;
808812 //! Skinファイル管理
809813 property SkinFiles: TSkinFiles read FSkinFiles;
810-
814+ //! インデックス読み込み時datファイルチェック
815+ property CheckDatFile: Boolean read FCheckDatFile write FCheckDatFile;
816+ property LimitResCountMessage: Boolean read FLimitResCountMessage write FLimitResCountMessage;
811817 end;
812818
813819
@@ -1293,6 +1299,9 @@ begin
12931299
12941300 FSentIniFileSize := ini.ReadInteger('Function', 'SentIniFileSize', 3);
12951301 FExtList := ini.ReadString('Function', 'ExtList', '*.gif;*.jpg;*.jpeg;*.png;*.zip;*.rar');
1302+
1303+ FCheckDatFile := ini.ReadBool('ThreadList', 'CheckDatFile', True);
1304+ FLimitResCountMessage := ini.ReadBool('Thread', 'LimitResCountMessage', True);
12961305 ini.UpdateFile;
12971306 finally
12981307 ini.Free;
@@ -1675,6 +1684,8 @@ begin
16751684 ini.WriteBool('Thread', 'ReplaceDat', FReplaceDat);
16761685 ini.WriteInteger('Function', 'SentIniFileSize', FSentIniFileSize);
16771686 ini.WriteString('Function', 'ExtList', FExtList);
1687+ ini.WriteBool('ThreadList', 'CheckDatFile', FCheckDatFile);
1688+ ini.WriteBool('Thread', 'LimitResCountMessage', FLimitResCountMessage);
16781689 ini.UpdateFile;
16791690 finally
16801691 ini.Free;
Binary files a/gikoNavi.res and b/gikoNavi.res differ
--- a/readme/gikoSetup.iss
+++ b/readme/gikoSetup.iss
@@ -10,11 +10,11 @@ VersionInfoDescription=
1010 DefaultGroupName=ギコナビ
1111 ; 自分の環境に合わせてください
1212 SourceDir=G:\Release
13-OutputDir=G:\Output
13+OutputDir=G:\InnoSetup\Output
1414 SetupIconFile="G:\gikoNaviSFX_102\MainIcon.ico"
1515 ; ギコナビのバージョンにあわせてください
16-VersionInfoVersion=1.56.0.714
17-OutputBaseFilename=gikoNavi_1.56.0.714_2_setup
16+VersionInfoVersion=1.56.1.716
17+OutputBaseFilename=gikoNavi_b56_setup
1818
1919
2020 [Tasks]
@@ -90,7 +90,7 @@ begin
9090 begin
9191 DelTree(path, True, True, True);
9292 end;
93-
93+
9494 path := ExpandConstant('{app}') + '\config';
9595 if MsgBox(path + 'フォルダ以下を完全に消去してよろしいでしょうか?', mbConfirmation, MB_YESNO) = IDYES then
9696 begin
--- a/readme/readme.txt
+++ b/readme/readme.txt
@@ -1,4 +1,4 @@
1-■ギコナビ Version1.00 バタ56 Readme.txt
1+■ギコナビ Version1.00 バタ57 Readme.txt
22
33
44 ------------------------------
@@ -108,6 +108,16 @@ LICENSE
108108 ------------------------------
109109 履歴
110110 ------------------------------
111+2007/XX/XX
112+ Version バタ57
113+
114+2007/08/18
115+ Version バタ56 リリース2
116+ 入力アシストの設定で、挿入文字列をだけを変更できない不具合の修正
117+ 一部環境で、ギコナビを最小化して復元するとスレッドがスクロールする不具合の修正
118+ バタ55以前からアップデートするとレスポップアップ位置の設定の左右が逆転する不具合の修正
119+
120+
111121 2007/08/05
112122 Version バタ56
113123  レスポップアップの多段対応
--- a/res/default/Samba.default
+++ b/res/default/Samba.default
@@ -1,44 +1,36 @@
11 [Setting]
2-@ascii2d=30
3-@chiri=30
4-@gline=30
52 @newsplus=120
6-@operate=30
7-@tv=30
8-aa6=30
3+@skate=60
94 academy6=30
10-anime2=45
11-book4=30
12-bubble5=30
5+anime2=60
6+bubble6=30
137 etc6=30
148 ex20=30
159 ex21=30
16-ex22=30
17-food7=30
10+ex23=20
11+food8=30
1812 game11=30
1913 game12=30
2014 hobby9=30
21-human6=30
15+human7=30
2216 life8=30
2317 live23=10
2418 live24=10
2519 live25=10
26-love5=30
27-money5=30
20+love6=30
21+money6=30
2822 music8=30
2923 news21=30
3024 news22=30
31-off4=30
32-pc9=30
25+news23=128
3326 pc11=30
3427 qb5=30
35-school6=30
28+school7=30
3629 science6=30
37-sports10=60
30+sports11=60
3831 tmp6=45
39-travel3=30
4032 tv11=60
41-wwwww=20
33+wwwww=15
4234
4335 idol=30
4436 pie=30
Show on old repository browser