Får en filesize

GetFileSize gir ingen måte å slå en filstørrelse inn en beskrivende streng, denne algoritmen doesfunction GetAFileSize (SizeInBytes: heltall): String; konst Preffixes: array [0..3] av String = //nettverks filstørrelser preffixes ('Bytes ',' KB ',' MB ',' GB '); //Endre hvis du vil noe som passer FormatSpecifier: array [boolsk] av String = ('% n', '% .2n'); //måten vi formatere strengen; Var jeg: integer; //En teller TmpSize: Fast; //En midlertidig variablebegin i: = -1; //Unngå kompilatoren klage tmpSize: = SizeInBytes; //Unngå kompilatoren klager stund (i < = 3) gjøre //Hoved syklus det er gjort mens jeg < Høy (Preffixes), men siden //en fil vil sjelden passere en GB opptil tre begynne TmpSize: = TmpSize /1 024; //1 MB = 1024 KB, 1 KB = 1024 byte, 1 Byte = 8 biter, en bit = ingenting økes (i); //tilvekst disken og velg preffix streng hvis AVKORT (TmpSize) = 0, så //vi nådde et maksimum nuber divisjoner så begynner TmpSize: = TmpSize * 1024; //Tmpsize ble delt en gang mer enn nødvendig Break; //Exit of sløyfe; slutt; slutt; //Faktisk formatering rutine Resultat: = Format (FormatSpecifier [((Frac (TmpSize) * 10) > 1)], [TmpSize]) + Preffixes [i]; ende; Notater av interesse: * Disse algoritmen er avhengig av delphi mors format funksjon, wich slags begrensninger det * Det isnot del av Windows API, må du kopiere og lime den inn når du bruker den * I motsetning til Windows API den har riktig avrunding og kan utvides Anmeldelser



Previous:
Next Page: