We don't display ads so we rely on your Bitcoin donations to 1KWEk9QaiJb2NwP5YFmR24LyUBa4JyuKqZ
Post date: Mar 16, 2010 3:43:07 PM
A computer file is a block of arbitrary information, or resource for storing information, which is available to a computer program and is usually based on some kind of durable storage.
Read more: http://en.wikipedia.org/wiki/Computer_file
type
TForm1 = class(TForm)
ListView1: TListView;
procedure FormCreate(Sender: TObject);
procedure ListView1ColumnClick(Sender: TObject; Column: TListColumn);
procedure ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
Data: Integer; var Compare: Integer);
private
{ Private-Deklarationen }
procedure FindAllFiles(RootFolder: string; Mask: string = '*.*'; Recurse:
Boolean = True);
public
{ Public-Deklarationen }
end;
var
Form1 : TForm1;
implementation
{$R *.dfm}
var
ColumnToSort : Integer;
Accending : Boolean = False;
function GetFileSize(szFile: PChar): Int64;
var
fFile : THandle;
wfd : TWIN32FINDDATA;
begin
result := 0;
if not FileExists(szFile) then
exit;
fFile := FindFirstfile(pchar(szFile), wfd);
if fFile = INVALID_HANDLE_VALUE then
exit;
result := (wfd.nFileSizeHigh * (Int64(MAXDWORD) + 1)) + wfd.nFileSizeLow;
windows.FindClose(fFile);
end;
procedure TForm1.FindAllFiles(RootFolder: string; Mask: string = '*.*'; Recurse:
Boolean = True);
var
SR : TSearchRec;
ListItem : TListItem;
begin
if RootFolder = '' then
Exit;
if AnsiLastChar(RootFolder)^ <> '\' then
RootFolder := RootFolder + '\';
RootFolder := IncludeTrailingPathDelimiter(RootFolder);
if Recurse then
if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then
try
repeat
if SR.Attr and faDirectory = faDirectory then
if (SR.Name <> '.') and (SR.Name <> '..') then
FindAllFiles(RootFolder + SR.Name, Mask, Recurse);
until FindNext(SR) <> 0;
finally
FindClose(SR);
end;
if FindFirst(RootFolder + Mask, faAnyFile, SR) = 0 then
try
repeat
if SR.Attr and faDirectory <> faDirectory then
begin
ListItem := Listview1.Items.Add;
ListItem.Caption := SR.Name;
ListItem.SubItems.Add(IntToStr(GetFileSize(PChar(RootFolder +
SR.Name))));
end;
until FindNext(SR) <> 0;
finally
FindClose(SR);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Listview1.SortType := stData;
FindAllFiles('c:\', '*.*', False);
end;
procedure TForm1.ListView1ColumnClick(Sender: TObject;
Column: TListColumn);
begin
ColumnToSort := Column.Index;
Listview1.AlphaSort;
Accending := not Accending;
end;
procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
Data: Integer; var Compare: Integer);
begin
case ColumnToSort of
0:
begin
if Accending then
Compare := CompareText(Item1.Caption, Item2.Caption)
else
Compare := CompareText(Item2.Caption, Item1.Caption);
end;
1:
begin
if Accending then
Compare := StrToInt(Item1.SubItems[0]) - StrToInt(Item2.SubItems[0])
else
Compare := StrToInt(Item2.SubItems[0]) - StrToInt(Item1.SubItems[0]);
end;
end;
end;