代码统计器代码

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls, FileCtrl;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Edit2: TEdit;
    ListBox1: TListBox;
    Edit3: TEdit;
    DriveComboBox1: TDriveComboBox;
    Label3: TLabel;
    Label4: TLabel;
    CheckBox1: TCheckBox;
    Edit4: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Edit3DblClick(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure SrchFile(FileType, PathFile: string; var vCount, FileCount: Integer;  vTs: TStringList);
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
  i,Count,Fd: integer;
  Ts: TStringList;
  path: string;
  FileTp: String;
begin
  if Trim(Edit3.Text) = '' then exit;
  if CheckBox1.Checked then
    FileTp := Trim(edit4.Text)
  else FileTp := '.pas';
  if Length(edit4.text) > 10 then
  begin
    MessageDlg('扩展名太长,纯属胡闹!',mtError,mbOKCancel,0);
    exit;
  end;
  if pos('.',edit4.Text) < 0 then
  begin
    MessageDlg('扩展名前加’.‘',mtError,mbOKCancel,0);
    exit;
  end;
  path := Edit3.Text;         //'D:\国库\基线区\A1国库CS代码\集中支付';
  edit1.Text := '';
  edit2.Text := '';
  ListBox1.Items.Clear;
  Ts := TStringList.Create;
  i := 0;
  Count := 0;
  try
    SrchFile(FileTp,path, Count, i, Ts);
    Edit1.Text := inttostr(i);
    edit2.Text := inttostr(count);
  finally
    Ts.Free;
  end;
//  61.135.231.42
end;

procedure TForm1.Edit3DblClick(Sender: TObject);
var
  sdirt: string;
begin
  SelectDirectory('请选择代码路径','我的电脑', sdirt);
  Edit3.text := sdirt;
end;

procedure TForm1.SrchFile(FileType, PathFile: string; var vCount, FileCount: Integer; vTs: TStringList);
var
  Fd: integer;
  sc: TSearchRec;
begin
  try
    Fd := FindFirst(PathFile +'\*.*',faAnyFile,Sc);
    while Fd = 0 do
    begin
      if ( sc.Attr = faDirectory ) and ( sc.Name <> '.' )
         and ( Sc.Name <> '..' ) then
        SrchFile(FileType,pathfile+'/'+sc.Name,vCount, FileCount, vTs);
      if ExtractFileExt(sc.name) = FileType then           //  (sc.Attr and 0) = sc.Attr
      begin
        vTs.Clear;
        vTs.LoadFromFile(PathFile + '\' + sc.name);
        vCount := vCount +  vTs.Count;
        listbox1.items.add(sc.Name + '   ='+ IntToStr(vTs.Count));
        Inc(FileCount);
      end;
      Fd := FindNext(sc);
    end;
  finally
    FindClose(sc);
  end;
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  Edit4.Enabled := CheckBox1.Checked;
end;

end.

posted @ 2005-11-29 15:08  JustLive  阅读(93)  评论(0编辑  收藏  举报