> Le 15 janv. 2018 à 02:27, Wayne Stewart via 4D_Tech <4d_tech@lists.4d.com 
> <mailto:4d_tech@lists.4d.com>> a écrit :
> 
> Hi,
> 
> I'm trying to create a method that will return a file size as a string,
> similar to how the Finder does.


I use this (french "octet" stands for "byte")

//Num_bytesToStr (nombre_r) -> txt
//http://forums.4d.fr/Post/FR/14504984/1/14504985#14504985 
<http://forums.4d.fr/Post/FR/14504984/1/14504985#14504985>
C_TEXT($0)
C_REAL($1)

C_LONGINT($base_l)
C_LONGINT($expo_l)
C_REAL($in_r)
C_REAL($nbre_r)
C_REAL($seuil_r)
C_TEXT($nmc_t)
C_TEXT($out_t)
C_TEXT($unit_t)

If (False)
        C_TEXT(Num_bytesToStr ;$0)
        C_REAL(Num_bytesToStr ;$1)
End if
//_
$nmc_t:=Current method name
$out_t:=""
ASSERT(Count parameters>0;$nmc_t+" $1 number missing")
$in_r:=$1
//$base_l:=1024  //Kio
$base_l:=1000  //Ko
$expo_l:=5  //on commence aux pétaoctets
Repeat
        $seuil_r:=$base_l^$expo_l
        If ($in_r>=$seuil_r)
                //$unit_t:=Choisir($expo_l;"io";"Kio";"Mio";"Gio";"Tio";"Pio")  
                $unit_t:=Choose($expo_l;"o";"Ko";"Mo";"Go";"To";"Po")
                $nbre_r:=$in_r/$seuil_r
                $out_t:=$out_t+String(Round($nbre_r;1))+" "+$unit_t
                $expo_l:=0
        End if
        $expo_l:=$expo_l-1
Until ($expo_l<0)
$0:=$out_t
//_

-- 
Arnaud de Montard 



**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**********************************************************************

Reply via email to