Develop and Download Open Source Software

Browse CVS Repository

Diff of /gikonavigoeson/gikonavi/GikoDataModule.pas

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.24 by h677, Tue Dec 20 15:21:05 2005 UTC revision 1.25 by h677, Tue Dec 20 16:35:45 2005 UTC
# Line 211  type Line 211  type
211          WikiFAQWebPageAction: TAction;          WikiFAQWebPageAction: TAction;
212          ToobarImageList: TImageList;          ToobarImageList: TImageList;
213      SaveDialog: TSaveDialog;      SaveDialog: TSaveDialog;
214        ThreadSizeCalcForFileAction: TAction;
215          procedure EditNGActionExecute(Sender: TObject);          procedure EditNGActionExecute(Sender: TObject);
216          procedure ReloadActionExecute(Sender: TObject);          procedure ReloadActionExecute(Sender: TObject);
217          procedure GoFowardActionExecute(Sender: TObject);          procedure GoFowardActionExecute(Sender: TObject);
# Line 392  type Line 393  type
393          procedure MidokuActionExecute(Sender: TObject);          procedure MidokuActionExecute(Sender: TObject);
394          procedure AllSelectActionExecute(Sender: TObject);          procedure AllSelectActionExecute(Sender: TObject);
395          procedure AllSelectActionUpdate(Sender: TObject);          procedure AllSelectActionUpdate(Sender: TObject);
396        procedure ThreadSizeCalcForFileActionExecute(Sender: TObject);
397    private    private
398          { Private 宣言 }          { Private 宣言 }
399          procedure ClearResFilter;          procedure ClearResFilter;
# Line 403  type Line 405  type
405          procedure SetThreadReadProperty(read: Boolean);          procedure SetThreadReadProperty(read: Boolean);
406          procedure SelectThreadSaveToFile(dat: Boolean);          procedure SelectThreadSaveToFile(dat: Boolean);
407          function GetSortProperties(List: TObject;var vSortOrder: Boolean): Boolean;          function GetSortProperties(List: TObject;var vSortOrder: Boolean): Boolean;
408            procedure RecalcThreadSize(limit : Integer);
409    public    public
410          { Public 宣言 }          { Public 宣言 }
411          procedure RepaintStatusBar;          procedure RepaintStatusBar;
# Line 3702  begin Line 3705  begin
3705          AllSelectAction.Enabled := GikoForm.ListView.SelCount > 0;          AllSelectAction.Enabled := GikoForm.ListView.SelCount > 0;
3706  end;  end;
3707  ////////////////////////////////編集までおしまい/////////////////////  ////////////////////////////////編集までおしまい/////////////////////
3708    //! スレッドのサイズを再計算する
3709    procedure TGikoDM.ThreadSizeCalcForFileActionExecute(Sender: TObject);
3710    const
3711            RECALC_MES : String = 'スレッドの容量をファイルから再計算します。'#13#10 +
3712                                                            'この操作中、ギコナビの他の操作をするとデータが破壊される恐れがあります。' +
3713                                                            'またこの操作は、非常に時間がかかる場合がありますが、よろしいですか?';
3714            RECALC_TITLE : String = 'スレッドの容量をファイルから再計算';
3715            LIMIT_SIZE = 1024;
3716    var
3717            limitSize : Integer;
3718            limitStr  : String;
3719    begin
3720    { まず、時間がかかることを警告するメッセージを出力
3721      再計算するスレッドのサイズの閾値(デフォルト1024B)を確認
3722      プラグインを利用しないところで全てのログ有りスレッドを検索
3723      閾値以下のサイズの場合、DATのファイルサイズと比較、ずれていれば、
3724      DATのファイルサイズで更新する
3725    }
3726            if MsgBox(GikoForm.Handle, RECALC_MES,
3727                    RECALC_TITLE, MB_YESNO or MB_ICONWARNING) = ID_YES then begin
3728                    //閾値の確認
3729                    limitSize := LIMIT_SIZE;
3730                    limitStr  := IntToStr(limitSize);
3731                    if InputQuery('閾値入力', '指定した数値以下の容量のスレッドのみ再計算します', limitStr) then begin
3732                            limitSize := StrToInt(MojuUtils.ZenToHan(limitStr));
3733                            if (limitSize < 0) then begin
3734                                    ShowMessage('閾値に負は指定できません!');
3735                                    ThreadSizeCalcForFileActionExecute(nil);
3736                            end else begin
3737                                    RecalcThreadSize(limitSize);
3738                            end;
3739                    end;
3740            end;
3741    end;
3742    //! limitよりもサイズの小さいスレッドの容量をDATファイルから計算
3743    procedure TGikoDM.RecalcThreadSize(limit : Integer);
3744    var
3745            i, j, tmpSize : Integer;
3746            Obj   : TObject;
3747            Board : TBoard;
3748            Thread: TThreadItem;
3749            dat   : TStringList;
3750    begin
3751            // 再計算スタート プラグインを利用しないところを全部見る!
3752            GikoForm.ScreenCursor := crHourGlass;
3753            try
3754                    GikoForm.ProgressBar.Max := BoardGroups[0].Count;
3755                    for i := 0 to BoardGroups[0].Count - 1 do begin
3756                            Obj := BoardGroups[0].Objects[i];
3757                            if (Obj <> nil) then begin
3758                                    Board := TBoard(Obj);
3759                                    if not Board.IsThreadDatRead then begin
3760                                            GikoSys.ReadSubjectFile(Board);
3761                                    end;
3762                                    for j := 0 to Board.Count - 1 do begin
3763                                            Thread := Board.Items[j];
3764                                            if (Thread <> nil) and (Thread.IsLogFile)
3765                                                    and (Thread.Size <= limit) then begin
3766                                                    dat := TStringList.Create;
3767                                                    try
3768                                                            tmpSize := Thread.Size;
3769                                                            try
3770                                                                    dat.LoadFromFile(Thread.GetThreadFileName);
3771                                                                    tmpSize := Length(dat.Text);
3772                                                                    tmpSize := tmpSize - dat.Count;
3773                                                            except
3774                                                            end;
3775                                                            Thread.Size := tmpSize;
3776                                                    finally
3777                                                            dat.Free;
3778                                                    end;
3779                                            end;
3780                                    end;
3781                            end;
3782                            GikoForm.ProgressBar.StepBy(1);
3783                    end;
3784            finally
3785                    GikoForm.ScreenCursor := crDefault;
3786            end;
3787            GikoForm.ProgressBar.Position := 0;
3788            ShowMessage('計算終了しました。');
3789    end;
3790    
3791  end.  end.
3792    

Legend:
Removed from v.1.24  
changed lines
  Added in v.1.25

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26