Revision | fa5271524c86cacca0ff850acec05d8fff63e2c7 (tree) |
---|---|
Zeit | 2007-08-11 01:23:12 |
Autor | cvs2git <cvs2git> |
Commiter | cvs2git |
This commit was manufactured by cvs2svn to create tag 'v1_57_0_723'.
@@ -115,6 +115,7 @@ type | ||
115 | 115 | //-- |
116 | 116 | function TreatSyria(AString: string): string; |
117 | 117 | //-- |
118 | + function AddToken(AString: string; Invisible: Boolean): Boolean; | |
118 | 119 | end; |
119 | 120 | var |
120 | 121 | Abon1 :TAbon; |
@@ -905,6 +906,32 @@ begin | ||
905 | 906 | Result := Result + AString; |
906 | 907 | end; |
907 | 908 | |
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; | |
908 | 935 | |
909 | 936 | |
910 | 937 | end. |
@@ -1777,9 +1777,6 @@ begin | ||
1777 | 1777 | end; |
1778 | 1778 | |
1779 | 1779 | function TThreadItem.GetCreateDate: TDateTime; |
1780 | -var | |
1781 | - unixtime: Int64; | |
1782 | - tmp: string; | |
1783 | 1780 | begin |
1784 | 1781 | // ファイル名からスレ作成日時を求める |
1785 | 1782 | try |
@@ -1787,18 +1784,7 @@ begin | ||
1787 | 1784 | Result := ZERO_DATE |
1788 | 1785 | else begin |
1789 | 1786 | // ログファイルの拡張子をはずしたものがスレ作成日時 |
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); | |
1802 | 1788 | if GikoSys.Setting.FutureThread then begin |
1803 | 1789 | if CompareDateTime(Result, Now) = 1 then |
1804 | 1790 | Result := ZERO_DATE; |
@@ -8419,6 +8419,17 @@ object GikoForm: TGikoForm | ||
8419 | 8419 | object N71: TMenuItem |
8420 | 8420 | Action = GikoDM.IndividualAbonID0Action |
8421 | 8421 | 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 | |
8422 | 8433 | end |
8423 | 8434 | object N52: TMenuItem |
8424 | 8435 | Caption = #20491#21029#12354#12412#65374#12435#35299#38500 |
@@ -419,6 +419,9 @@ type | ||
419 | 419 | N80: TMenuItem; |
420 | 420 | SameBoardThreadItem: TMenuItem; |
421 | 421 | N81: TMenuItem; |
422 | + N82: TMenuItem; | |
423 | + IDNG1: TMenuItem; | |
424 | + IDNG2: TMenuItem; | |
422 | 425 | procedure FormCreate(Sender: TObject); |
423 | 426 | procedure FormDestroy(Sender: TObject); |
424 | 427 | procedure BrowserStatusTextChange(Sender: TObject; |
@@ -686,6 +689,10 @@ type | ||
686 | 689 | procedure SameBoardThreadSubItemOnClick(Sender: TObject); |
687 | 690 | //! ポップアップブラウザ作成 |
688 | 691 | procedure CreateResPopupBrowser; |
692 | + //! D&Dを受け取る | |
693 | + procedure WMDropFiles(var Msg: TWMDropFiles); Message WM_DropFiles; | |
694 | + //! ファイルチェック | |
695 | + function isValidFile(FileName: String) : boolean; | |
689 | 696 | protected |
690 | 697 | procedure CreateParams(var Params: TCreateParams); override; |
691 | 698 | procedure WndProc(var Message: TMessage); override; |
@@ -756,6 +763,8 @@ type | ||
756 | 763 | procedure IndividualAbonID(Atype : Integer); |
757 | 764 | //このレスあぼ〜ん |
758 | 765 | procedure IndividualAbon(Atag, Atype : Integer); |
766 | + //同一IDをNGワードに登録 | |
767 | + procedure AddIDtoNGWord(invisible : boolean); | |
759 | 768 | //ブラウザの再描画 true:全てのタブ false:アクティブなタブのみ |
760 | 769 | procedure RepaintAllTabsBrowser(); |
761 | 770 | //リンクバー設定 |
@@ -1312,6 +1321,8 @@ begin | ||
1312 | 1321 | |
1313 | 1322 | //置換設定ファイルの読み込み |
1314 | 1323 | ReplaceDM.LoadFromFile(GikoSys.GetReplaceFileName); |
1324 | + // D&Dを受け取る | |
1325 | + DragAcceptFiles(Self.Handle, True); | |
1315 | 1326 | end; |
1316 | 1327 | |
1317 | 1328 | // CoolBar の設定を変数に保存 |
@@ -1467,6 +1478,13 @@ begin | ||
1467 | 1478 | GikoDM.TabsOpenAction.Execute; |
1468 | 1479 | GikoDM.TabsOpenAction.Tag := 0; |
1469 | 1480 | 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; | |
1470 | 1488 | item := BBSsFindThreadFromURL( GikoSys.Setting.LastCloseTabURL ); |
1471 | 1489 | if (item <> nil) and (item.IsLogFile) then begin |
1472 | 1490 | OpenThreadItem(item, item.URL); |
@@ -2740,7 +2758,8 @@ var | ||
2740 | 2758 | begin |
2741 | 2759 | Thread := inThread; |
2742 | 2760 | idx := BrowserTab.TabIndex; |
2743 | - if (FActiveContent <> nil) and | |
2761 | + if (not FStartUp) and | |
2762 | + (FActiveContent <> nil) and | |
2744 | 2763 | (FActiveContent.Thread <> Thread.Thread) and |
2745 | 2764 | (FActiveContent.Browser <> nil) and |
2746 | 2765 | (Assigned(FActiveContent.Browser.Document)) then begin |
@@ -2777,6 +2796,12 @@ begin | ||
2777 | 2796 | ThreadTitle := Thread.Thread.Title; |
2778 | 2797 | ThreadPTitle := Thread.Thread.ParentBoard.Title; |
2779 | 2798 | //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 | + | |
2780 | 2805 | ThreadIsLog := Thread.Thread.IsLogFile; |
2781 | 2806 | ThreadItem := Thread.Thread; |
2782 | 2807 | ThreadNewArraical := Thread.Thread.NewArrival; |
@@ -6611,7 +6636,7 @@ begin | ||
6611 | 6636 | |
6612 | 6637 | end; |
6613 | 6638 | // ************************************************************************* |
6614 | -//! お気に入りツリーのマウスアップイベント | |
6639 | +//! スレッドブラウザクリックイベント | |
6615 | 6640 | // ************************************************************************* |
6616 | 6641 | function TGikoForm.WebBrowserClick(Sender: TObject): WordBool; |
6617 | 6642 | const |
@@ -6955,10 +6980,11 @@ end; | ||
6955 | 6980 | |
6956 | 6981 | procedure TGikoForm.BrowserPanelResize(Sender: TObject); |
6957 | 6982 | 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 | - | |
6983 | + if (FIsMinimize <> mtMinimizing) then begin | |
6984 | + if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin | |
6985 | + MoveWindow(FActiveContent.Browser.Handle, 0, 0, BrowserPanel.ClientWidth, BrowserPanel.ClientHeight, false); | |
6986 | + end; | |
6987 | + end; | |
6962 | 6988 | end; |
6963 | 6989 | procedure TGikoForm.CoolBarResized(Sender: TObject; CoolBar: TCoolBar); |
6964 | 6990 | var |
@@ -7091,6 +7117,60 @@ begin | ||
7091 | 7117 | if ThreadItem <> nil then |
7092 | 7118 | InsertBrowserTab( ThreadItem, True ); |
7093 | 7119 | end; |
7120 | +//同一IDをNGワードに登録 | |
7121 | +procedure TGikoForm.AddIDtoNGWord(invisible : boolean); | |
7122 | +var | |
7123 | + ThreadItem : TThreadItem; | |
7124 | + No : Integer; | |
7125 | +{$IFDEF SPAM_FILTER_ENABLED} | |
7126 | + body : TStringList; | |
7127 | + ReadList : TStringList; | |
7128 | + wordCount : TWordCount; | |
7129 | +{$ENDIF} | |
7130 | + id: String; | |
7131 | +begin | |
7132 | + No := KokoPopupMenu.Tag; | |
7133 | + if No = 0 then Exit; | |
7134 | + ThreadItem := GetActiveContent(True); | |
7135 | + if ThreadItem = nil then Exit; | |
7136 | + | |
7137 | + id := GikoSys.GetResID(No, ThreadItem); | |
7138 | + if (id <> '') and (not IsNoValidID(id)) then begin | |
7139 | + if (GikoSys.FAbon.AddToken(id, invisible)) then begin | |
7140 | + GikoSys.FAbon.ReLoadFromNGwordFile; | |
7141 | + FActiveContent.Repaint := True; | |
7142 | + end; | |
7143 | + end else begin | |
7144 | + ShowMessage('IDを取得できませんでした。'); | |
7145 | + end; | |
7146 | +{$IFDEF SPAM_FILTER_ENABLED} | |
7147 | + body := TStringList.Create; | |
7148 | + try | |
7149 | + GikoSys.GetSameIDRes(id, ThreadItem, body); | |
7150 | + ReadList := TStringList.Create; | |
7151 | + wordCount := TWordCount.Create; | |
7152 | + try | |
7153 | + // スパムに設定 | |
7154 | + ReadList.LoadFromFile( ThreadItem.GetThreadFileName ); | |
7155 | + for i := 0 to body.Count - 1 do begin | |
7156 | + GikoSys.SpamCountWord( ReadList[ i ], wordCount ); | |
7157 | + GikoSys.SpamForget( wordCount, False ); // ハムを解除 | |
7158 | + GikoSys.SpamLearn( wordCount, True ); // スパムに設定 | |
7159 | + end; | |
7160 | + finally | |
7161 | + wordCount.Free; | |
7162 | + ReadList.Free; | |
7163 | + end; | |
7164 | + finally | |
7165 | + body.Free; | |
7166 | + end; | |
7167 | +{$ENDIF} | |
7168 | + if (FActiveContent.Repaint) then begin | |
7169 | + ThreadItem.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).Body.ScrollTop; | |
7170 | + if ThreadItem <> nil then | |
7171 | + InsertBrowserTab( ThreadItem, True ); | |
7172 | + end; | |
7173 | +end; | |
7094 | 7174 | |
7095 | 7175 | //同一IDのあぼ〜ん |
7096 | 7176 | procedure TGikoForm.IndividualAbonID(Atype : Integer); |
@@ -7582,6 +7662,93 @@ begin | ||
7582 | 7662 | FResPopupBrowser := TResPopupBrowser.Create(BrowserPanel); |
7583 | 7663 | end; |
7584 | 7664 | end; |
7665 | +//! 外からのD&D処理 | |
7666 | +procedure TGikoForm.WMDropFiles(var Msg: TWMDropFiles); | |
7667 | +var | |
7668 | + FileName: Array[0..MAX_PATH] of Char; | |
7669 | + Cnt, K: Integer; | |
7670 | + Board: TBoard; | |
7671 | + LogFolder: String; | |
7672 | + datList: TStringList; | |
7673 | +begin | |
7674 | + // 表示しているの板のとき以外は拒否 | |
7675 | + if GetActiveList is TBoard then begin | |
7676 | + Board := TBoard(GetActiveList); | |
7677 | + if MsgBox(Handle, Board.Title | |
7678 | + + ' 板に入れていいですか?', 'ギコナビ', MB_YESNO or MB_ICONQUESTION) = IDYES then begin | |
7679 | + // 板の時は、ログフォルダにコピーしてはぐれログ対応と同じ処理? | |
7680 | + datList := TStringList.Create; | |
7681 | + try | |
7682 | + Cnt := DragQueryFile(Msg.Drop, $FFFFFFFF, FileName, SizeOf(FileName)); | |
7683 | + for K := 0 to Cnt - 1 do begin | |
7684 | + DragQueryFile(Msg.Drop, K, FileName, SizeOf(FileName)); | |
7685 | + {FileNameにdropされたファイル名が入っているので、ここで何らかの処理をする。たとえば次の行} | |
7686 | + // ファイルのチェック | |
7687 | + if (isValidFile(FileName)) then begin | |
7688 | + LogFolder := ExtractFilePath(Board.FilePath); | |
7689 | + if (FileExists( LogFolder + ExtractFileName(FileName))) then begin | |
7690 | + GikoUtil.MsgBox(Handle, LogFolder + 'に' + ExtractFileName(FileName) + 'が既に存在します。', 'エラー', MB_ICONSTOP or MB_OK); | |
7691 | + end else begin | |
7692 | + if (not DirectoryExists(LogFolder)) then begin | |
7693 | + if (not GikoSys.ForceDirectoriesEx(LogFolder) ) then begin | |
7694 | + GikoUtil.MsgBox(Handle, LogFolder + 'の生成に失敗しました。', 'エラー', MB_ICONSTOP or MB_OK); | |
7695 | + end; | |
7696 | + end; | |
7697 | + if (not Windows.CopyFile(FileName, PChar(LogFolder + ExtractFileName(FileName)), true)) then begin | |
7698 | + GikoUtil.MsgBox(Handle, FileName + 'のコピーに失敗しました。', 'エラー', MB_ICONSTOP or MB_OK); | |
7699 | + end else begin | |
7700 | + datList.Add(ExtractFileName(FileName)); | |
7701 | + end; | |
7702 | + end; | |
7703 | + end; | |
7704 | + end; | |
7705 | + DragFinish(Msg.Drop); | |
7706 | + if (datList.Count > 0) then begin | |
7707 | + GikoSys.AddOutofIndexDat(Board, datList, False); | |
7708 | + ShowMessage(IntToStr(datList.Count) + '個のdatファイルがコピーされました。' ); | |
7709 | + if GikoForm.TreeView.Visible then | |
7710 | + GikoForm.TreeView.Refresh; | |
7711 | + if GikoForm.ListView.Visible then | |
7712 | + GikoForm.ListView.Refresh; | |
7713 | + end else begin | |
7714 | + ShowMessage('一つもコピーされませんでした。' ); | |
7715 | + end; | |
7716 | + finally | |
7717 | + datList.Free; | |
7718 | + end; | |
7719 | + | |
7720 | + end; | |
7721 | + end else begin | |
7722 | + ShowMessage('板を表示してください。'); | |
7723 | + end; | |
7724 | +end; | |
7725 | +//! ファイルチェック | |
7726 | +function TGikoForm.isValidFile(FileName: String) : boolean; | |
7727 | +var | |
7728 | + dt: TDateTime; | |
7729 | +begin | |
7730 | + Result := True; | |
7731 | + // 存在するか、拡張子dat、ファイル名 | |
7732 | + if ( not FileExists(FileName) ) then begin | |
7733 | + Result := False; | |
7734 | + GikoUtil.MsgBox(Handle, FileName + 'は存在しません。', 'エラー', MB_ICONSTOP or MB_OK); | |
7735 | + end else if (ExtractFileExt(ExtractFileName(FileName)) <> '.dat' ) then begin | |
7736 | + Result := False; | |
7737 | + GikoUtil.MsgBox(Handle, ExtractFileName(FileName) + 'の拡張子が".dat"でありません。', 'エラー', MB_ICONSTOP or MB_OK); | |
7738 | + end else begin | |
7739 | + // ログファイルの拡張子をはずしたものがスレ作成日時 | |
7740 | + try | |
7741 | + dt := GikoSys.GetCreateDateFromName(FileName); | |
7742 | + if ((UnixToDateTime(ZERO_DATE) + OffsetFromUTC) = dt) then begin | |
7743 | + Result := False; | |
7744 | + GikoUtil.MsgBox(Handle, ExtractFileName(FileName) + 'のファイル名が不正です。', 'エラー', MB_ICONSTOP or MB_OK); | |
7745 | + end; | |
7746 | + except | |
7747 | + Result := False; | |
7748 | + GikoUtil.MsgBox(Handle, ExtractFileName(FileName) + 'のファイル名が不正です。', 'エラー', MB_ICONSTOP or MB_OK); | |
7749 | + end; | |
7750 | + end; | |
7751 | +end; | |
7585 | 7752 | |
7586 | 7753 | initialization |
7587 | 7754 | OleInitialize(nil); |
@@ -1344,6 +1344,18 @@ object GikoDM: TGikoDM | ||
1344 | 1344 | OnExecute = NewLinkToClipboardActionExecute |
1345 | 1345 | OnUpdate = DependActiveCntentActionUpdate |
1346 | 1346 | 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 | |
1347 | 1359 | end |
1348 | 1360 | object ToobarImageList: TImageList |
1349 | 1361 | Left = 44 |
@@ -237,6 +237,8 @@ type | ||
237 | 237 | ScrollPageUpAction: TAction; |
238 | 238 | AllLinkToClipboardAction: TAction; |
239 | 239 | NewLinkToClipboardAction: TAction; |
240 | + AddIDtoNGWord0Action: TAction; | |
241 | + AddIDtoNGWord1Action: TAction; | |
240 | 242 | procedure EditNGActionExecute(Sender: TObject); |
241 | 243 | procedure ReloadActionExecute(Sender: TObject); |
242 | 244 | procedure GoFowardActionExecute(Sender: TObject); |
@@ -444,6 +446,8 @@ type | ||
444 | 446 | procedure ScrollPageUpActionExecute(Sender: TObject); |
445 | 447 | procedure AllLinkToClipboardActionExecute(Sender: TObject); |
446 | 448 | procedure NewLinkToClipboardActionExecute(Sender: TObject); |
449 | + procedure AddIDtoNGWord0ActionExecute(Sender: TObject); | |
450 | + procedure AddIDtoNGWord1ActionExecute(Sender: TObject); | |
447 | 451 | private |
448 | 452 | { Private 宣言 } |
449 | 453 | procedure ClearResFilter; |
@@ -2261,9 +2265,11 @@ begin | ||
2261 | 2265 | if item <> nil then |
2262 | 2266 | GikoForm.InsertBrowserTab( item, false ); |
2263 | 2267 | 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; | |
2267 | 2273 | end; |
2268 | 2274 | end; |
2269 | 2275 | finally |
@@ -4434,6 +4440,16 @@ begin | ||
4434 | 4440 | end; |
4435 | 4441 | |
4436 | 4442 | |
4443 | +//! このレスのIDをNGワードに追加する(透明) | |
4444 | +procedure TGikoDM.AddIDtoNGWord0ActionExecute(Sender: TObject); | |
4445 | +begin | |
4446 | + GikoForm.AddIDtoNGWord(true); | |
4447 | +end; | |
4448 | +//! このレスのIDをNGワードに追加する | |
4449 | +procedure TGikoDM.AddIDtoNGWord1ActionExecute(Sender: TObject); | |
4450 | +begin | |
4451 | + GikoForm.AddIDtoNGWord(false); | |
4452 | +end; | |
4437 | 4453 | |
4438 | 4454 | end. |
4439 | 4455 |
@@ -116,8 +116,6 @@ type | ||
116 | 116 | function ChooseString(const Text, Separator: string; Index: integer): string; |
117 | 117 | //! 一時ファイルからの復旧 |
118 | 118 | procedure RestoreThreadData(Board: TBoard); |
119 | - //! インデックスにないdat(はぐれdat)の追加 | |
120 | - procedure AddOutofIndexDat(Board: TBoard; DatList: TStringList); | |
121 | 119 | public |
122 | 120 | { Public 宣言 } |
123 | 121 | FAbon : TAbon; |
@@ -129,13 +127,10 @@ type | ||
129 | 127 | property ResRange : Longint read FResRange write FResRange; |
130 | 128 | //! バージョン情報 |
131 | 129 | 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; | |
134 | 130 | function IsNumeric(s: string): boolean; |
135 | 131 | function IsFloat(s: string): boolean; |
136 | 132 | function DirectoryExistsEx(const Name: string): Boolean; |
137 | 133 | function ForceDirectoriesEx(Dir: string): Boolean; |
138 | -// function GetVersion: string; | |
139 | 134 | |
140 | 135 | function GetBoardFileName: string; |
141 | 136 | function GetCustomBoardFileName: string; |
@@ -224,7 +219,7 @@ type | ||
224 | 219 | procedure GetSameIDRes(AIDNum : Integer; ThreadItem: TThreadItem;var body: TStringList); overload; |
225 | 220 | function GetSameIDResCount(const AID : string; ThreadItem: TThreadItem):Integer; overload; |
226 | 221 | function GetSameIDResCount(AIDNum : Integer; ThreadItem: TThreadItem):Integer; overload; |
227 | - | |
222 | + function GetResID(AIDNum: Integer; ThreadItem: TThreadItem): String; | |
228 | 223 | //! 単語解析 |
229 | 224 | procedure SpamCountWord( const text : string; wordCount : TWordCount ); |
230 | 225 | //! 学習クリア |
@@ -257,6 +252,10 @@ type | ||
257 | 252 | function GetOEIndentChar : string; |
258 | 253 | //! 置換設定ファイル取得 |
259 | 254 | function GetReplaceFileName: String; |
255 | + //! インデックスにないdat(はぐれdat)の追加 | |
256 | + procedure AddOutofIndexDat(Board: TBoard; DatList: TStringList; AllCreate: boolean = True); | |
257 | + //! ファイル名からのスレッド作成日の取得 | |
258 | + function GetCreateDateFromName(FileName: String): TDateTime; | |
260 | 259 | end; |
261 | 260 | |
262 | 261 | var |
@@ -266,7 +265,7 @@ const | ||
266 | 265 | ZERO_DATE: Integer = 25569; |
267 | 266 | BETA_VERSION_NAME_E = 'beta'; |
268 | 267 | BETA_VERSION_NAME_J = 'バタ'; |
269 | - BETA_VERSION = 56; | |
268 | + BETA_VERSION = 57; | |
270 | 269 | BETA_VERSION_BUILD = ''; //!< debug版など |
271 | 270 | APP_NAME = 'gikoNavi'; |
272 | 271 | BE_PHP_URL = 'http://be.2ch.net/test/p.php?i='; |
@@ -572,11 +571,18 @@ var | ||
572 | 571 | usePlugIn : Boolean; |
573 | 572 | islog : Boolean; |
574 | 573 | urlHead: String; |
574 | + datFileCheck: Boolean; | |
575 | 575 | {* |
576 | 576 | FavoThreadItem : TFavoriteThreadItem; |
577 | 577 | Node: TTreeNode; |
578 | 578 | *} |
579 | +{$IFDEF DEBUG} | |
580 | + st, rt: Cardinal; | |
581 | +{$ENDIF} | |
579 | 582 | begin |
583 | +{$IFDEF DEBUG} | |
584 | + st := GetTickCount; | |
585 | +{$ENDIF} | |
580 | 586 | if Board.IsThreadDatRead then |
581 | 587 | Exit; |
582 | 588 | Board.Clear; |
@@ -592,12 +598,16 @@ begin | ||
592 | 598 | |
593 | 599 | FileName := Board.GetFolderIndexFileName; |
594 | 600 | |
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; | |
601 | 611 | |
602 | 612 | // 重複を防ぐ |
603 | 613 | Board.BeginUpdate; |
@@ -609,7 +619,11 @@ begin | ||
609 | 619 | //2行目から(1行目はバージョン) |
610 | 620 | for i := sl.Count - 1 downto 1 do begin |
611 | 621 | 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; | |
613 | 627 | if usePlugIn then |
614 | 628 | ThreadItem := TThreadItem.Create( |
615 | 629 | Board.BoardPlugIn, |
@@ -636,7 +650,7 @@ begin | ||
636 | 650 | end; |
637 | 651 | |
638 | 652 | ThreadItem.BeginUpdate; |
639 | - if islog then | |
653 | + if (datFileCheck) and (islog) then | |
640 | 654 | FileList.Delete( Index ); |
641 | 655 | |
642 | 656 | ThreadItem.No := Rec.FNo; |
@@ -671,50 +685,75 @@ begin | ||
671 | 685 | if UnRead <> Board.UnRead then |
672 | 686 | Board.UnRead := UnRead; |
673 | 687 | |
674 | - //インデックスに無かったログを追加(腐れインデックス対応) | |
675 | - AddOutofIndexDat(Board, FileList); | |
688 | + if (datFileCheck) then begin | |
689 | + //インデックスに無かったログを追加(腐れインデックス対応) | |
690 | + AddOutofIndexDat(Board, FileList); | |
691 | + end; | |
676 | 692 | Board.EndUpdate; |
677 | 693 | |
678 | 694 | //前回異常終了時チェック |
679 | 695 | RestoreThreadData( Board ); |
680 | 696 | finally |
681 | 697 | sl.Free; |
682 | - FileList.Free; | |
698 | + if (datFileCheck) then begin | |
699 | + FileList.Free; | |
700 | + end; | |
683 | 701 | Board.Sorted := False; |
684 | 702 | end; |
685 | 703 | Board.IsThreadDatRead := True; |
704 | +{$IFDEF DEBUG} | |
705 | + rt := GetTickCount - st; | |
706 | + Writeln('Read Done.' + IntToStr(rt) + ' ms'); | |
707 | +{$ENDIF} | |
686 | 708 | end; |
687 | 709 | {! |
688 | 710 | \brief インデックスにないdat(はぐれdat)の追加 |
689 | 711 | \param Board 追加する板 |
690 | 712 | \param DatList datファイル名 |
691 | 713 | } |
692 | -procedure TGikoSys.AddOutofIndexDat(Board: TBoard; DatList: TStringList); | |
714 | +procedure TGikoSys.AddOutofIndexDat(Board: TBoard; DatList: TStringList; AllCreate: Boolean = True); | |
693 | 715 | var |
694 | 716 | i : Integer; |
695 | 717 | Boardpath,FileName : String; |
696 | 718 | ResRec: TResRec; |
697 | 719 | ThreadItem: TThreadItem; |
720 | + create: Boolean; | |
698 | 721 | begin |
722 | + create := False; | |
699 | 723 | Boardpath := ExtractFilePath(Board.GetFolderIndexFileName); |
700 | 724 | //インデックスに無かったログを追加(腐れインデックス対応) |
701 | 725 | for i := 0 to DatList.Count - 1 do begin |
702 | 726 | 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; | |
717 | 740 | 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 | + | |
718 | 757 | |
719 | 758 | ThreadItem.BeginUpdate; |
720 | 759 | ThreadItem.FileName := DatList[i]; |
@@ -736,7 +775,9 @@ begin | ||
736 | 775 | ThreadItem.ScrollTop := 0; |
737 | 776 | ThreadItem.AgeSage := gasNone; |
738 | 777 | ThreadItem.EndUpdate; |
739 | - Board.Add(ThreadItem); | |
778 | + if (AllCreate) or (create) then begin | |
779 | + Board.Add(ThreadItem); | |
780 | + end; | |
740 | 781 | end; |
741 | 782 | end; |
742 | 783 | {! |
@@ -2849,12 +2890,27 @@ end; | ||
2849 | 2890 | } |
2850 | 2891 | procedure TGikoSys.GetSameIDRes(AIDNum : Integer; ThreadItem: TThreadItem;var body: TStringList); |
2851 | 2892 | 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 | |
2852 | 2908 | Res: TResRec; |
2853 | 2909 | boardPlugIn : TBoardPlugIn; |
2854 | - AID : String; | |
2855 | 2910 | stList: TStringList; |
2856 | 2911 | i : Integer; |
2857 | 2912 | begin |
2913 | + Result := ''; | |
2858 | 2914 | if (ThreadItem <> nil) and (ThreadItem.IsLogFile) |
2859 | 2915 | and (AIDNum > 0) and (AIDNum <= ThreadItem.Count) then begin |
2860 | 2916 | //if ThreadItem.IsBoardPlugInAvailable then begin |
@@ -2866,21 +2922,21 @@ begin | ||
2866 | 2922 | end else begin |
2867 | 2923 | THTMLCreate.DivideStrLine( ReadThreadFile(ThreadItem.GetThreadFileName, AIDNum), @Res); |
2868 | 2924 | 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) | |
2874 | 2930 | end; |
2875 | 2931 | end else begin |
2876 | 2932 | stlist := TStringList.Create; |
2877 | 2933 | try |
2878 | - stList.DelimitedText := AID; | |
2879 | - AID := ''; | |
2934 | + stList.DelimitedText := Result; | |
2935 | + Result := ''; | |
2880 | 2936 | for i := 0 to stList.Count - 1 do |
2881 | 2937 | if Length(WideString(stList[i])) = 8 then begin |
2882 | 2938 | if NotDateorTimeString(stList[i]) then begin |
2883 | - AID := stList[i]; | |
2939 | + Result := stList[i]; | |
2884 | 2940 | break; |
2885 | 2941 | end; |
2886 | 2942 | end; |
@@ -2888,11 +2944,8 @@ begin | ||
2888 | 2944 | stList.Free; |
2889 | 2945 | end; |
2890 | 2946 | end; |
2891 | - if not IsNoValidID(AID) then | |
2892 | - GetSameIDRes(AID, ThreadItem, body); | |
2893 | 2947 | end; |
2894 | 2948 | end; |
2895 | - | |
2896 | 2949 | {! |
2897 | 2950 | \brief 同じ投稿 ID を持つレスをカウント |
2898 | 2951 | \param AID 個人を特定する投稿 ID |
@@ -3309,7 +3362,8 @@ begin | ||
3309 | 3362 | ThreadItem.NewReceive := ini.ReadInteger(SECTION, 'NewReceive', 0); |
3310 | 3363 | |
3311 | 3364 | 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 | |
3313 | 3367 | try |
3314 | 3368 | ThreadItem.Size := GetFileSize(ThreadItem.GetThreadFileName) - ThreadItem.Count; |
3315 | 3369 | except |
@@ -3399,6 +3453,26 @@ function TGikoSys.GetReplaceFileName: String; | ||
3399 | 3453 | begin |
3400 | 3454 | Result := Setting.GetReplaceFileName; |
3401 | 3455 | 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; | |
3402 | 3476 | |
3403 | 3477 | initialization |
3404 | 3478 | GikoSys := TGikoSys.Create; |
@@ -189,12 +189,19 @@ var | ||
189 | 189 | begin |
190 | 190 | if GikoListView1.Selected <> nil then begin |
191 | 191 | 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( | |
193 | 197 | 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; | |
198 | 205 | // 一覧の更新 |
199 | 206 | GikoListView1.Selected.Caption := resWord.GetKey; |
200 | 207 | GikoListView1.Selected.SubItems[0] := resWord.GetCategory; |
@@ -21,8 +21,8 @@ object KuroutOption: TKuroutOption | ||
21 | 21 | Top = 0 |
22 | 22 | Width = 517 |
23 | 23 | Height = 393 |
24 | - ActivePage = KakikomiTabSheet | |
25 | - TabIndex = 2 | |
24 | + ActivePage = TabSheet2 | |
25 | + TabIndex = 3 | |
26 | 26 | TabOrder = 0 |
27 | 27 | object TabSheet1: TTabSheet |
28 | 28 | Caption = #35443#32048#35373#23450#65297 |
@@ -562,6 +562,22 @@ object KuroutOption: TKuroutOption | ||
562 | 562 | TabOrder = 1 |
563 | 563 | end |
564 | 564 | 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 | |
565 | 581 | end |
566 | 582 | end |
567 | 583 | object OkBotton: TButton |
@@ -81,6 +81,8 @@ type | ||
81 | 81 | Label14: TLabel; |
82 | 82 | ExtListLabeledEdit: TLabeledEdit; |
83 | 83 | Label15: TLabel; |
84 | + LogGroupBox: TGroupBox; | |
85 | + CheckDatFileCheckBox: TCheckBox; | |
84 | 86 | procedure OkBottonClick(Sender: TObject); |
85 | 87 | procedure FormCreate(Sender: TObject); |
86 | 88 | procedure CDeleteButtonClick(Sender: TObject); |
@@ -156,6 +158,8 @@ begin | ||
156 | 158 | ReplaceDatCheckBox.Checked := GikoSys.Setting.ReplaceDat; |
157 | 159 | SentIniFileSizeUpDown.Position := GikoSys.Setting.SentIniFileSize; |
158 | 160 | ExtListLabeledEdit.Text := GikoSys.Setting.ExtList; |
161 | + // Folder.idx読み込み時datチェック | |
162 | + CheckDatFileCheckBox.Checked := GikoSys.Setting.CheckDatFile; | |
159 | 163 | end; |
160 | 164 | |
161 | 165 | procedure TKuroutOption.SaveSetting; |
@@ -198,6 +202,8 @@ begin | ||
198 | 202 | GikoSys.Setting.ReplaceDat := ReplaceDatCheckBox.Checked; |
199 | 203 | GikoSys.Setting.SentIniFileSize := SentIniFileSizeUpDown.Position; |
200 | 204 | GikoSys.Setting.ExtList := ExtListLabeledEdit.Text; |
205 | + // Folder.idx読み込み時datチェック | |
206 | + GikoSys.Setting.CheckDatFile := CheckDatFileCheckBox.Checked; | |
201 | 207 | end; |
202 | 208 | |
203 | 209 | procedure TKuroutOption.RecvBufferSizeExit(Sender: TObject); |
@@ -20,9 +20,9 @@ type | ||
20 | 20 | TGikoListOrientation = (gloHorizontal, gloVertical); // リスト垂直・水平 |
21 | 21 | TGikoListState = (glsMax, glsNormal, glsMin); // リストサイズ状態 |
22 | 22 | // ポップアップ表示位置 |
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); | |
26 | 26 | //プレビューサイズ |
27 | 27 | TGikoPreviewSize = (gpsXLarge, gpsLarge, gpsMedium, gpsSmall, gpsXSmall); |
28 | 28 | TGikoBrowserAutoMaximize = (gbmNone, gbmClick, gbmDoubleClick); |
@@ -450,6 +450,8 @@ type | ||
450 | 450 | FExtList: String; |
451 | 451 | //! Skin関連 |
452 | 452 | FSkinFiles: TSkinFiles; |
453 | + //! indexファイルを読み時にdatを検索する | |
454 | + FCheckDatFile: Boolean; | |
453 | 455 | function GetMainCoolSet(Index: Integer): TCoolSet; |
454 | 456 | function GetBoardCoolSet(Index: Integer): TCoolSet; |
455 | 457 | function GetBrowserCoolSet(Index: Integer): TCoolSet; |
@@ -807,7 +809,8 @@ type | ||
807 | 809 | property ExtList: String read FExtList write FExtList; |
808 | 810 | //! Skinファイル管理 |
809 | 811 | property SkinFiles: TSkinFiles read FSkinFiles; |
810 | - | |
812 | + //! インデックス読み込み時datファイルチェック | |
813 | + property CheckDatFile: Boolean read FCheckDatFile write FCheckDatFile; | |
811 | 814 | end; |
812 | 815 | |
813 | 816 |
@@ -1293,6 +1296,9 @@ begin | ||
1293 | 1296 | |
1294 | 1297 | FSentIniFileSize := ini.ReadInteger('Function', 'SentIniFileSize', 3); |
1295 | 1298 | FExtList := ini.ReadString('Function', 'ExtList', '*.gif;*.jpg;*.jpeg;*.png;*.zip;*.rar'); |
1299 | + | |
1300 | + FCheckDatFile := ini.ReadBool('ThreadList', 'CheckDatFile', True); | |
1301 | + | |
1296 | 1302 | ini.UpdateFile; |
1297 | 1303 | finally |
1298 | 1304 | ini.Free; |
@@ -1675,6 +1681,7 @@ begin | ||
1675 | 1681 | ini.WriteBool('Thread', 'ReplaceDat', FReplaceDat); |
1676 | 1682 | ini.WriteInteger('Function', 'SentIniFileSize', FSentIniFileSize); |
1677 | 1683 | ini.WriteString('Function', 'ExtList', FExtList); |
1684 | + ini.WriteBool('ThreadList', 'CheckDatFile', FCheckDatFile); | |
1678 | 1685 | ini.UpdateFile; |
1679 | 1686 | finally |
1680 | 1687 | ini.Free; |
@@ -10,11 +10,11 @@ VersionInfoDescription= | ||
10 | 10 | DefaultGroupName=ギコナビ |
11 | 11 | ; 自分の環境に合わせてください |
12 | 12 | SourceDir=G:\Release |
13 | -OutputDir=G:\Output | |
13 | +OutputDir=G:\InnoSetup\Output | |
14 | 14 | SetupIconFile="G:\gikoNaviSFX_102\MainIcon.ico" |
15 | 15 | ; ギコナビのバージョンにあわせてください |
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 | |
18 | 18 | |
19 | 19 | |
20 | 20 | [Tasks] |
@@ -90,7 +90,7 @@ begin | ||
90 | 90 | begin |
91 | 91 | DelTree(path, True, True, True); |
92 | 92 | end; |
93 | - | |
93 | + | |
94 | 94 | path := ExpandConstant('{app}') + '\config'; |
95 | 95 | if MsgBox(path + 'フォルダ以下を完全に消去してよろしいでしょうか?', mbConfirmation, MB_YESNO) = IDYES then |
96 | 96 | begin |
@@ -1,4 +1,4 @@ | ||
1 | -■ギコナビ Version1.00 バタ56 Readme.txt | |
1 | +■ギコナビ Version1.00 バタ57 Readme.txt | |
2 | 2 | |
3 | 3 | |
4 | 4 | ------------------------------ |
@@ -108,6 +108,16 @@ LICENSE | ||
108 | 108 | ------------------------------ |
109 | 109 | 履歴 |
110 | 110 | ------------------------------ |
111 | +2007/XX/XX | |
112 | + Version バタ57 | |
113 | + | |
114 | +2007/08/18 | |
115 | + Version バタ56 リリース2 | |
116 | + 入力アシストの設定で、挿入文字列をだけを変更できない不具合の修正 | |
117 | + 一部環境で、ギコナビを最小化して復元するとスレッドがスクロールする不具合の修正 | |
118 | + バタ55以前からアップデートするとレスポップアップ位置の設定の左右が逆転する不具合の修正 | |
119 | + | |
120 | + | |
111 | 121 | 2007/08/05 |
112 | 122 | Version バタ56 |
113 | 123 | レスポップアップの多段対応 |
@@ -1,44 +1,36 @@ | ||
1 | 1 | [Setting] |
2 | -@ascii2d=30 | |
3 | -@chiri=30 | |
4 | -@gline=30 | |
5 | 2 | @newsplus=120 |
6 | -@operate=30 | |
7 | -@tv=30 | |
8 | -aa6=30 | |
3 | +@skate=60 | |
9 | 4 | academy6=30 |
10 | -anime2=45 | |
11 | -book4=30 | |
12 | -bubble5=30 | |
5 | +anime2=60 | |
6 | +bubble6=30 | |
13 | 7 | etc6=30 |
14 | 8 | ex20=30 |
15 | 9 | ex21=30 |
16 | -ex22=30 | |
17 | -food7=30 | |
10 | +ex23=20 | |
11 | +food8=30 | |
18 | 12 | game11=30 |
19 | 13 | game12=30 |
20 | 14 | hobby9=30 |
21 | -human6=30 | |
15 | +human7=30 | |
22 | 16 | life8=30 |
23 | 17 | live23=10 |
24 | 18 | live24=10 |
25 | 19 | live25=10 |
26 | -love5=30 | |
27 | -money5=30 | |
20 | +love6=30 | |
21 | +money6=30 | |
28 | 22 | music8=30 |
29 | 23 | news21=30 |
30 | 24 | news22=30 |
31 | -off4=30 | |
32 | -pc9=30 | |
25 | +news23=128 | |
33 | 26 | pc11=30 |
34 | 27 | qb5=30 |
35 | -school6=30 | |
28 | +school7=30 | |
36 | 29 | science6=30 |
37 | -sports10=60 | |
30 | +sports11=60 | |
38 | 31 | tmp6=45 |
39 | -travel3=30 | |
40 | 32 | tv11=60 |
41 | -wwwww=20 | |
33 | +wwwww=15 | |
42 | 34 | |
43 | 35 | idol=30 |
44 | 36 | pie=30 |