ギコナビ
Revision | 8fb597d13cdad42f021017653d7c60ba8939e37b (tree) |
---|---|
Zeit | 2008-05-10 23:05:32 |
Autor | h677 <h677> |
Commiter | h677 |
IDポップアップの処理見直し
件数取得を廃止
@@ -6771,11 +6771,9 @@ var | ||
6771 | 6771 | doc : IHTMLDocument2; |
6772 | 6772 | FOleInPlaceActiveObject: IOleInPlaceActiveObject; |
6773 | 6773 | p : TPoint; |
6774 | - AID: string; | |
6775 | - stlist : TStringList; | |
6776 | - i, count: Integer; | |
6777 | - body : String; | |
6778 | - limited : Integer; | |
6774 | + AID, body: string; | |
6775 | + stlist, numbers : TStringList; | |
6776 | + i, limited : Integer; | |
6779 | 6777 | begin |
6780 | 6778 | result := true; |
6781 | 6779 | if not Assigned(FActiveContent) then |
@@ -6823,22 +6821,26 @@ begin | ||
6823 | 6821 | stList.Free; |
6824 | 6822 | end; |
6825 | 6823 | end; |
6826 | - | |
6827 | - count := GikoSys.GetSameIDResCount(AID, FActiveContent.Thread); | |
6828 | - limited := LIMIT; | |
6829 | - if not (GikoSys.Setting.LimitResCountMessage) then begin | |
6830 | - limited := -1; | |
6831 | - end else if (count > LIMIT) then begin | |
6832 | - if (GikoUtil.MsgBox(Handle, | |
6833 | - IntToStr(LIMIT) + 'ÂÈã èÜ·ªA·×Ä\¦µÜ·©H', | |
6834 | - 'ID|bvAbvx', | |
6835 | - MB_YESNO or MB_ICONQUESTION) = ID_YES) then begin | |
6836 | - limited := -1; | |
6837 | - end | |
6838 | - end; | |
6839 | - | |
6840 | - body := GikoSys.GetSameIDResAnchor(AID, FActiveContent.Thread, limited); | |
6841 | - FActiveContent.IDAnchorPopup(body); | |
6824 | + numbers := TStringList.Create; | |
6825 | + try | |
6826 | + | |
6827 | + GikoSys.GetSameIDRes(AID, FActiveContent.Thread, numbers); | |
6828 | + limited := LIMIT; | |
6829 | + if not (GikoSys.Setting.LimitResCountMessage) then begin | |
6830 | + limited := -1; | |
6831 | + end else if (numbers.Count > LIMIT) then begin | |
6832 | + if (GikoUtil.MsgBox(Handle, | |
6833 | + IntToStr(LIMIT) + 'ÂÈã èÜ·ªA·×Ä\¦µÜ·©H', | |
6834 | + 'ID|bvAbvx', | |
6835 | + MB_YESNO or MB_ICONQUESTION) = ID_YES) then begin | |
6836 | + limited := -1; | |
6837 | + end | |
6838 | + end; | |
6839 | + body := GikoSys.CreateSameIDResAnchor(numbers, FActiveContent.Thread, limited); | |
6840 | + FActiveContent.IDAnchorPopup(body); | |
6841 | + finally | |
6842 | + numbers.Free; | |
6843 | + end; | |
6842 | 6844 | end; |
6843 | 6845 | except |
6844 | 6846 | end; |
@@ -2404,28 +2404,34 @@ const | ||
2404 | 2404 | LIMIT = 20; |
2405 | 2405 | var |
2406 | 2406 | ThreadItem : TThreadItem; |
2407 | - No, count: Integer; | |
2407 | + No : Integer; | |
2408 | 2408 | body : string; |
2409 | 2409 | limited: Integer; |
2410 | + numbers : TStringList; | |
2410 | 2411 | begin |
2411 | 2412 | No := GikoForm.KokoPopupMenu.Tag; |
2412 | 2413 | if No = 0 then Exit; |
2413 | 2414 | ThreadItem := GikoForm.GetActiveContent(True); |
2414 | 2415 | if ThreadItem = nil then Exit; |
2415 | - count := GikoSys.GetSameIDResCount(No, GikoForm.ActiveContent.Thread); | |
2416 | - limited := LIMIT; | |
2417 | - if not (GikoSys.Setting.LimitResCountMessage) then begin | |
2418 | - limited := -1; | |
2419 | - end else if count > LIMIT then begin | |
2420 | - if ( GikoUtil.MsgBox(GikoForm.Handle, | |
2421 | - IntToStr(LIMIT) + 'ÂÈã èÜ·ªA·×Ä\¦µÜ·©H', | |
2422 | - 'ID|bvAbvx', | |
2423 | - MB_YESNO or MB_ICONQUESTION) = ID_YES ) then begin | |
2416 | + numbers := TStringList.Create; | |
2417 | + try | |
2418 | + GikoSys.GetSameIDRes(No, GikoForm.ActiveContent.Thread, numbers); | |
2419 | + limited := LIMIT; | |
2420 | + if not (GikoSys.Setting.LimitResCountMessage) then begin | |
2424 | 2421 | limited := -1; |
2422 | + end else if numbers.Count > LIMIT then begin | |
2423 | + if ( GikoUtil.MsgBox(GikoForm.Handle, | |
2424 | + IntToStr(LIMIT) + 'ÂÈã èÜ·ªA·×Ä\¦µÜ·©H', | |
2425 | + 'ID|bvAbvx', | |
2426 | + MB_YESNO or MB_ICONQUESTION) = ID_YES ) then begin | |
2427 | + limited := -1; | |
2428 | + end; | |
2425 | 2429 | end; |
2426 | - end; | |
2427 | - body := GikoSys.GetSameIDResAnchor(No, ThreadItem, limited); | |
2428 | - GikoForm.ActiveContent.IDAnchorPopup(body); | |
2430 | + body := GikoSys.CreateSameIDResAnchor(numbers, ThreadItem, limited); | |
2431 | + GikoForm.ActiveContent.IDAnchorPopup(body); | |
2432 | + finally | |
2433 | + numbers.Free; | |
2434 | + end; | |
2429 | 2435 | end; |
2430 | 2436 | // ************************************************************************* |
2431 | 2437 | //! ±ÌX Ú`ñ@iÊíj |
@@ -213,12 +213,9 @@ type | ||
213 | 213 | procedure GetPopupResNumber(URL : string; var stRes, endRes : Int64); |
214 | 214 | |
215 | 215 | property Bayesian : TGikoBayesian read FBayesian write FBayesian; |
216 | - function GetSameIDResAnchor(const AID : string; ThreadItem: TThreadItem; limited: Integer):string; overload; | |
217 | - function GetSameIDResAnchor(AIDNum : Integer; ThreadItem: TThreadItem; limited: Integer):string; overload; | |
216 | + function CreateSameIDResAnchor(var Numbers: TStringList; ThreadItem: TThreadItem; limited: Integer):string; | |
218 | 217 | procedure GetSameIDRes(const AID : string; ThreadItem: TThreadItem;var body: TStringList); overload; |
219 | 218 | procedure GetSameIDRes(AIDNum : Integer; ThreadItem: TThreadItem;var body: TStringList); overload; |
220 | - function GetSameIDResCount(const AID : string; ThreadItem: TThreadItem):Integer; overload; | |
221 | - function GetSameIDResCount(AIDNum : Integer; ThreadItem: TThreadItem):Integer; overload; | |
222 | 219 | function GetResID(AIDNum: Integer; ThreadItem: TThreadItem): String; |
223 | 220 | //! PêðÍ |
224 | 221 | procedure SpamCountWord( const text : string; wordCount : TWordCount ); |
@@ -2751,20 +2748,18 @@ function TGikoSys.GetSambaFileName : string; | ||
2751 | 2748 | begin |
2752 | 2749 | Result := Setting.GetSambaFileName; |
2753 | 2750 | end; |
2754 | - | |
2755 | 2751 | {! |
2756 | -\brief ¯¶e ID ðÂXðAJ[ɵÄñ | |
2757 | -\param AID ÂlðÁè·ée ID | |
2752 | +\brief ñ³ê½XÔÖÌAJ[pHTMLì¬ | |
2753 | +\param Numbers ñ³ê½XÔ | |
2758 | 2754 | \param ThreadItem ñ·éXbh |
2759 | 2755 | \param limited ñ·éð§À·éÈç1Èã |
2760 | 2756 | \return ñ³ê½XAJ[ |
2761 | 2757 | } |
2762 | -function TGikoSys.GetSameIDResAnchor( | |
2763 | - const AID : string; ThreadItem: TThreadItem; | |
2758 | +function TGikoSys.CreateSameIDResAnchor( | |
2759 | + var Numbers: TStringList; ThreadItem: TThreadItem; | |
2764 | 2760 | limited: Integer):string; |
2765 | 2761 | var |
2766 | 2762 | i: integer; |
2767 | - body: TStringList; | |
2768 | 2763 | Res: TResRec; |
2769 | 2764 | ResLink : TResLinkRec; |
2770 | 2765 | begin |
@@ -2772,29 +2767,22 @@ begin | ||
2772 | 2767 | Res.FBody := ''; |
2773 | 2768 | Res.FType := glt2chNew; |
2774 | 2769 | |
2775 | - Result := ''; | |
2776 | - if (not IsNoValidID(AID)) and | |
2777 | - (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin | |
2778 | - body := TStringList.Create; | |
2779 | - try | |
2780 | - GetSameIDRes(AID, ThreadItem, body); | |
2781 | - if (limited > 0) and (body.Count > limited) then begin | |
2782 | - for i := body.Count - limited to body.Count - 1 do begin | |
2783 | - Res.FBody := Res.FBody + '>' + body[i] + ' '; | |
2784 | - end; | |
2785 | - end else begin | |
2786 | - for i := 0 to body.Count - 1 do begin | |
2787 | - Res.FBody := Res.FBody + '>' + body[i] + ' '; | |
2788 | - end; | |
2789 | - end; | |
2790 | - finally | |
2791 | - body.Free; | |
2792 | - end; | |
2770 | + Result := ''; | |
2771 | + if (Numbers <> nil) and (Numbers.Count > 0) then begin | |
2772 | + if (limited > 0) and (Numbers.Count > limited) then begin | |
2773 | + for i := Numbers.Count - limited to Numbers.Count - 1 do begin | |
2774 | + Res.FBody := Res.FBody + '>' + Numbers[i] + ' '; | |
2775 | + end; | |
2776 | + end else begin | |
2777 | + for i := 0 to Numbers.Count - 1 do begin | |
2778 | + Res.FBody := Res.FBody + '>' + Numbers[i] + ' '; | |
2779 | + end; | |
2780 | + end; | |
2793 | 2781 | ResLink.FBbs := ThreadItem.ParentBoard.BBSID; |
2794 | 2782 | ResLink.FKey := ChangeFileExt(ThreadItem.FileName, ''); |
2795 | 2783 | HTMLCreater.ConvRes(@Res, @ResLink, false); |
2796 | 2784 | Result := Res.FBody; |
2797 | - end; | |
2785 | + end; | |
2798 | 2786 | end; |
2799 | 2787 | |
2800 | 2788 | {! |
@@ -2809,6 +2797,22 @@ var | ||
2809 | 2797 | ReadList: TStringList; |
2810 | 2798 | Res: TResRec; |
2811 | 2799 | boardPlugIn : TBoardPlugIn; |
2800 | + | |
2801 | + procedure CheckSameID(const AID:String; const Target: String; no: Integer); | |
2802 | + var | |
2803 | + pos: Integer; | |
2804 | + begin | |
2805 | + pos := AnsiPos('id:', LowerCase(Target)); | |
2806 | + if (pos > 0) then begin | |
2807 | + if(AnsiPos(AID, Copy(Target, pos-1, Length(Target))) > 0) then begin | |
2808 | + body.Add(IntToStr(no)); | |
2809 | + end; | |
2810 | + end else begin | |
2811 | + if(AnsiPos(AID, Target) > 0) then begin | |
2812 | + body.Add(IntToStr(no)); | |
2813 | + end; | |
2814 | + end; | |
2815 | + end; | |
2812 | 2816 | begin |
2813 | 2817 | if (not IsNoValidID(AID)) and |
2814 | 2818 | (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin |
@@ -2821,9 +2825,7 @@ begin | ||
2821 | 2825 | for i := 0 to threadItem.Count - 1 do begin |
2822 | 2826 | // X |
2823 | 2827 | THTMLCreate.DivideStrLine(boardPlugIn.GetDat(DWORD( threadItem ), i + 1), @Res); |
2824 | - if(AnsiPos(AID, Res.FDateTime) > 0) then begin | |
2825 | - body.Add(IntToStr(i+1)); | |
2826 | - end; | |
2828 | + CheckSameID(AID, Res.FDateTime, i+1); | |
2827 | 2829 | end; |
2828 | 2830 | end else begin |
2829 | 2831 | ReadList := TStringList.Create; |
@@ -2831,9 +2833,7 @@ begin | ||
2831 | 2833 | ReadList.LoadFromFile(ThreadItem.GetThreadFileName); |
2832 | 2834 | for i := 0 to ReadList.Count - 1 do begin |
2833 | 2835 | THTMLCreate.DivideStrLine(ReadList[i], @Res); |
2834 | - if AnsiPos(AID, Res.FDateTime) > 0 then begin | |
2835 | - body.Add(IntToStr(i+1)); | |
2836 | - end; | |
2836 | + CheckSameID(AID, Res.FDateTime, i+1); | |
2837 | 2837 | end; |
2838 | 2838 | finally |
2839 | 2839 | ReadList.Free; |
@@ -2846,50 +2846,6 @@ end; | ||
2846 | 2846 | \brief ¯¶e ID ðÂXðñ |
2847 | 2847 | \param AIDNum ÂlðÁè·ée ID |
2848 | 2848 | \param ThreadItem ñ·éXbh |
2849 | -\param limited ñ·éð§À·éÈç1Èã | |
2850 | -\return | |
2851 | -} | |
2852 | -function TGikoSys.GetSameIDResAnchor(AIDNum : Integer; | |
2853 | - ThreadItem: TThreadItem; | |
2854 | - limited: Integer):string; | |
2855 | -var | |
2856 | - i: integer; | |
2857 | - body: TStringList; | |
2858 | - Res: TResRec; | |
2859 | - ResLink : TResLinkRec; | |
2860 | -begin | |
2861 | - // bodyÈOÍgpµÈ¢ÌÅú»µÈ¢ | |
2862 | - Res.FBody := ''; | |
2863 | - Res.FType := glt2chNew; | |
2864 | - | |
2865 | - Result := ''; | |
2866 | - if (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin | |
2867 | - body := TStringList.Create; | |
2868 | - try | |
2869 | - GetSameIDRes(AIDNum, ThreadItem, body); | |
2870 | - if (limited > 0) and ( body.Count > limited) then begin | |
2871 | - for i := body.Count - 20 to body.Count - 1 do begin | |
2872 | - Res.FBody := Res.FBody + '>' + body[i] + ' '; | |
2873 | - end; | |
2874 | - end else begin | |
2875 | - for i := 0 to body.Count - 1 do begin | |
2876 | - Res.FBody := Res.FBody + '>' + body[i] + ' '; | |
2877 | - end; | |
2878 | - end; | |
2879 | - finally | |
2880 | - body.Free; | |
2881 | - end; | |
2882 | - ResLink.FBbs := ThreadItem.ParentBoard.BBSID; | |
2883 | - ResLink.FKey := ChangeFileExt(ThreadItem.FileName, ''); | |
2884 | - HTMLCreater.ConvRes(@Res, @ResLink, false); | |
2885 | - Result := Res.FBody; | |
2886 | - end; | |
2887 | -end; | |
2888 | - | |
2889 | -{! | |
2890 | -\brief ¯¶e ID ðÂXðñ | |
2891 | -\param AIDNum ÂlðÁè·ée ID | |
2892 | -\param ThreadItem ñ·éXbh | |
2893 | 2849 | \param body OUT:ñ³ê½XÔªÔé |
2894 | 2850 | } |
2895 | 2851 | procedure TGikoSys.GetSameIDRes(AIDNum : Integer; ThreadItem: TThreadItem;var body: TStringList); |
@@ -2950,51 +2906,6 @@ begin | ||
2950 | 2906 | end; |
2951 | 2907 | end; |
2952 | 2908 | end; |
2953 | -{! | |
2954 | -\brief ¯¶e ID ðÂXðJEg | |
2955 | -\param AID ÂlðÁè·ée ID | |
2956 | -\param ThreadItem ñ·éXbh | |
2957 | -\return ¯¶ ID ðÂXÌ | |
2958 | -} | |
2959 | -function TGikoSys.GetSameIDResCount(const AID : string; ThreadItem: TThreadItem):Integer; | |
2960 | -var | |
2961 | - body: TStringList; | |
2962 | -begin | |
2963 | - Result := 0; | |
2964 | - if (not IsNoValidID(AID)) | |
2965 | - and (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin | |
2966 | - body := TStringList.Create; | |
2967 | - try | |
2968 | - GetSameIDRes(AID, ThreadItem, body); | |
2969 | - Result := body.Count; | |
2970 | - finally | |
2971 | - body.Free; | |
2972 | - end; | |
2973 | - end; | |
2974 | - | |
2975 | -end; | |
2976 | - | |
2977 | -{! | |
2978 | -\brief ¯¶e ID ðÂXðJEg | |
2979 | -\param AIDNum ÂlðÁè·ée ID | |
2980 | -\param ThreadItem ñ·éXbh | |
2981 | -\return ¯¶ ID ðÂXÌ | |
2982 | -} | |
2983 | -function TGikoSys.GetSameIDResCount(AIDNum : Integer; ThreadItem: TThreadItem):Integer; | |
2984 | -var | |
2985 | - body: TStringList; | |
2986 | -begin | |
2987 | - Result := 0; | |
2988 | - if (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin | |
2989 | - body := TStringList.Create; | |
2990 | - try | |
2991 | - GetSameIDRes(AIDNum, ThreadItem, body); | |
2992 | - Result := body.Count; | |
2993 | - finally | |
2994 | - body.Free; | |
2995 | - end; | |
2996 | - end; | |
2997 | -end; | |
2998 | 2909 | |
2999 | 2910 | {! |
3000 | 2911 | \brief 𦷶ñÅͳ¢©Ç¤© |
@@ -3485,8 +3396,10 @@ begin | ||
3485 | 3396 | end; |
3486 | 3397 | |
3487 | 3398 | procedure TGikoSys.ShowRefCount(msg: String; unk: IUnknown); |
3399 | +{$IFDEF DEBUG} | |
3488 | 3400 | var |
3489 | 3401 | count : integer; |
3402 | +{$ENDIF} | |
3490 | 3403 | begin |
3491 | 3404 | if not Assigned(unk) then |
3492 | 3405 | Exit; |