57 lines
1.7 KiB
ObjectPascal
57 lines
1.7 KiB
ObjectPascal
// Copyright (c) Ivan Bondarev, Stanislav Mihalkovich (for details please see \doc\copyright.txt)
|
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
|
uses CRT,
|
|
System.IO;
|
|
|
|
var FilesCount,LinesCount:integer;
|
|
Size: longint;
|
|
|
|
function GetLinesCount(FileName: string):integer;
|
|
var sr: StreamReader;
|
|
begin
|
|
sr := new StreamReader(FileName, System.Text.Encoding.GetEncoding(1251));
|
|
while not sr.EndOfStream do begin
|
|
//if sr.ReadLine<>'' then
|
|
sr.ReadLine;
|
|
result := result + 1;
|
|
end;
|
|
sr.Close;
|
|
end;
|
|
|
|
function GetSize(FileName: string):longint;
|
|
var sr: StreamReader;
|
|
begin
|
|
sr := new StreamReader(FileName, System.Text.Encoding.GetEncoding(1251));
|
|
result := sr.BaseStream.Length;
|
|
sr.Close;
|
|
end;
|
|
|
|
procedure ScanDirectory(directory,mask: string);
|
|
var Files: array of FileInfo;
|
|
Dirs: array of DirectoryInfo;
|
|
DI: DirectoryInfo;
|
|
i: integer;
|
|
begin
|
|
DI := new DirectoryInfo(directory);
|
|
Files := DI.GetFiles(mask);
|
|
for i:=0 to Files.Length-1 do begin
|
|
LinesCount := LinesCount + GetLinesCount(Files[i].FullName);
|
|
FilesCount := FilesCount + 1;
|
|
Size := Size + GetSize(Files[i].FullName);
|
|
System.Console.CursorLeft := 0;
|
|
Write(string.Format('Files: {0}, lines: {1}, size {2}kb, lineSize {3}', FilesCount, LinesCount, (Size/1024):2:3, Size/LinesCount:3:1),' ');
|
|
end;
|
|
Dirs := DI.GetDirectories;
|
|
for i:=0 to Dirs.Length-1 do
|
|
if directory.ToLower <> Dirs[i].FullName.ToLower then
|
|
ScanDirectory(Dirs[i].FullName, mask);
|
|
end;
|
|
|
|
begin
|
|
if CommandLineArgs.Length=0 then begin
|
|
Writeln('linescount mask');
|
|
Exit;
|
|
end;
|
|
ScanDirectory(System.Environment.CurrentDirectory, CommandLineArgs[0]);
|
|
Writeln;
|
|
end. |