mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-12 10:49:31 +02:00
92 lines
1.6 KiB
ObjectPascal
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. |