Thema: Dateigrössen

Einzelnen Beitrag anzeigen

busybyte

Registriert seit: 15. Sep 2006
165 Beiträge
 
#1

Dateigrössen

  Alt 21. Feb 2008, 23:29
Ich habe es satt gehabt immer die unterschiedlichen Dateigrössen vom Windos-Explorer
und den üblichen Methoden zu erhalten und deswegen mal angefangen, das ganze
in eine Function zu packen.
Ihr könnt damit machen, was Ihr wollt, wäre schön wenn Ihr auch was anbieten könntet.

Delphi-Quellcode:
unit MyToolsU;
//V 1.1
//by BusyByte

interface
Type TFSRes=Record
i64Res_:int64;
iRes_:integer;
dRes_:Double;
SRes_1:String;
SRes_2:String;
end;

function MyGetFileSize(const FileName: String): TFSRes;


implementation
Uses Windows,SysUtils;

function MyGetFileSize(const FileName: String): TFSRes;
var FileHandle: Cardinal; var Data: WIN32_FIND_DATA;
Tmp:String;
L1:integer;
begin
 
  Result.iRes_ := -1; Result.i64Res_:=-1; Result.dRes:=-1;
  Result.SRes_1:=''; Result.SRes_2:='';
 
  FileHandle := FindFirstFile(PChar(FileName), Data);
  try
    if FileHandle > 0 then
   with Result do
    begin
    iRes_:=(Data.nFileSizeLow + 1023) div 1024;

   //Werde die Stringumwandlungen später noch in eine Function auslagern=Speedmode
    dRes_:=iRes_;
    Tmp:=Format('%n', [dRes_]);
    L1:=Length(Tmp);
    Delete(Tmp,L1-2,L1);
    SRes_1:=Tmp+' KB';


    Int64Rec(Result.i64Res_).Hi := Data.nFileSizeHigh;
    Int64Rec(Result.i64Res_).Lo := Data.nFileSizeLow;

    dRes_:=Result.i64Res_;
    Tmp:=Format('%n', [dRes_]);
    L1:=Length(Tmp);
    Delete(Tmp,L1-2,L1);
    SRes_2:=Tmp+' Bytes';

    end;
  finally Windows.FindClose(FileHandle);
  end;
end;

end.
//EDIT
dRes wird eigentlich nur für die Umsetzung mit Format() benötigt und könnte auch temporär gehalten werden.
Aufruf z.B. mit

Delphi-Quellcode:
Uses MyToolsU;
.
.
.
with MyGetfileSize(Filename_) do
Label1.Caption:=SRes_1+'(' +SRes_2+')';
22.02.2008 1.30Uhr : Neue Version V1.1 eingestellt
I love DiscCat
  Mit Zitat antworten Zitat