fpc/docs/gtk4ex/futils.pp
2001-07-10 21:54:31 +00:00

92 lines
1.6 KiB
ObjectPascal

unit futils;
{$mode objfpc}
{$h+}
Interface
Const
{$ifdef win32}
PathSeparator='\';
{$else}
PathSeparator='/';
{$endif}
Function StripTrailingSeparator(Const Dir : String) : String;
Function AddTrailingSeparator(Const Dir : String) : String;
Function FileSizeToString(Size: Int64) : String;
Function FileAttrsToString(FileAttrs : Integer) : String;
Implementation
Uses sysutils;
Function StripTrailingSeparator(Const Dir : String) : String;
Var
L : Integer;
begin
Result:=Dir;
L:=Length(result);
If (L>1) and (Result[l]=PathSeparator) then
SetLength(Result,L-1);
end;
Function AddTraiLingSeparator(Const Dir : String) : String;
Var
L : Integer;
begin
Result:=Dir;
L:=Length(Result);
If (L>0) and (Result[l]<>PathSeparator) then
Result:=Result+PathSeparator;
end;
Function FileSizeToString(Size: Int64) : String;
Const
Sizes : Array [0..4] of String =
('Bytes','Kb','Mb','Gb','Tb');
Var
F : Double;
I : longint;
begin
If Size>1024 Then
begin
F:=Size;
I:=0;
While (F>1024) and (I<4) do
begin
F:=F / 1024;
Inc(i);
end;
Result:=Format('%4.2f %s',[F,Sizes[i]]);
end
else
Result:=Format('%d %s',[Size,Sizes[0]]);
end;
Function FileAttrsToString(FileAttrs : Integer) : String;
Const
Attrs : Array[1..4] of integer =
(faArchive,faReadOnly,faHidden,faSysfile);
AttrChars : Array[1..4] of char =
('A','R','H','S');
Var
i : longint;
begin
Result:='';
For I:=1 to 4 do
If (Attrs[i] and FileAttrs)=Attrs[i] then
Result:=Result+AttrChars[i];
end;
end.