pascalabcnet/TestSamples/CompilationSamples/LinesCount.pas
Бондарев Иван e6e67c193c initial commit
2015-05-14 21:35:07 +02:00

55 lines
1.5 KiB
ObjectPascal

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.