Page 1 sur 1

Conversion d'une valeur en O, Ko, ... automatique et simple

Publié : mer. 06/févr./2013 16:33
par GallyHC
Bonjour,

Voila j'avais besoin d'une petite routine de conversion simple et ne l'ayant pas trouvée, j'ai créé une petite procédure simple. Cela donne :

Code : Tout sélectionner

Procedure.s EXPLORER_ConvertSize(filesize.d)
;
  Protected i.l = 1
  Protected j.s = "o,Ko,Mo,Go,To"
  
  While filesize >= 1024 And i <= CountString(j, ",")
    filesize / 1024
    i + 1
  Wend
  ProcedureReturn StrF(filesize, 1) + " " + StringField(j, i, ",")

EndProcedure

Debug EXPLORER_ConvertSize(100000)
J'espère que cela sera utile a d'autre...

Cordialement,
GallyHC

Re: Conversion d'une valeur en O, Ko, ... automatique et sim

Publié : mer. 06/févr./2013 18:41
par Backup
GallyHC a écrit :Bonjour,

Voila j'avais besoin d'une petite routine de conversion simple et ne l'ayant pas trouvais, j'ai créer une petite procedure de conversion. Cela donne :

GallyHC

Petit HS :)

Désolé, ça m'arrache la vue :
Voila j'avais besoin d'une petite routine de conversion simple et ne l'ayant pas trouvée,
tu peux remplacer le verbe par "pris" ou "prise" donc on met un é ou "ée" car il s'agit d'une petite routine

"ais" que tu a tendance a coller partout, ne s’emploie la plupart du temps qu'a l'imparfait

"je ne le trouvais pas .. " (sous entendant "Avant" )




a part ça le son "é" sur un verbe c'est "é" lorsqu'on peut remplacer le verbe par "Pris"

ex : il a Mangé le fromage ( il a "Pris" le fromage )

ou bien on ecrit "er" lorsqu'on peut remplacer le verbe par "Prendre"

ex : il ne faut pas manger le fromage .. ( il ne faut pas "prendre" le fromage )

c'est facile a retenir non ?


les fautes d’orthographe , tout le monde en fait !! moi le premier , mais certaines Fautes ...comme mélanger les Verbes conjugués et les infinitifs , ou bien
mélanger "en" et "an" ou mélanger les "sa" et "ça" ... les "ce" et "se" .... font a mon sens, partie du pire !
essaye de te corriger .. ça fait un moment que j'ai envie de te dire ça :)

je vais t'aider si tu veux , mais franchement, c'est hyper simple a fixer .. :)

pour rappel , les "ce","ça" on les emplois lorsqu'on peut dire "Cela" ou "ceci" (démonstratif)
alors que les "se","sa" on les emplois lorsqu'on peut dire "le Sien" , "la Sienne" (possessif)

je ne suis allé qu'en 6em , pourtant je ne commet pas ce genre d'erreurs , avant on nous apprenait peut être mieux que maintenant :)

Re: Conversion d'une valeur en O, Ko, ... automatique et sim

Publié : mer. 06/févr./2013 20:04
par GallyHC
Merci, ah oui il y avait aussi un peu de code...

Re: Conversion d'une valeur en O, Ko, ... automatique et sim

Publié : mer. 06/févr./2013 20:08
par Backup
GallyHC a écrit :Merci, ah oui il y avait aussi un peu de code...
oui .. sympath le code .. :mrgreen:

Re: Conversion d'une valeur en O, Ko, ... automatique et sim

Publié : mer. 06/févr./2013 21:52
par djes
J'aime bien ce genre de code, concis et efficace !

Un tout petit bémol : il faut que tu prévois les cas de dépassement qui le feraient planter.

Re: Conversion d'une valeur en O, Ko, ... automatique et sim

Publié : jeu. 07/févr./2013 16:10
par graph100
Quels genres de dépassement ? Si tu mets un nombre trop grand le résultat passe négatif, mais ça doit être gérer dans le code autour de la fonction, pas dedans ?!

Avec les petites modifs ci-dessous, tu gagnes 20% de vitesse :mrgreen: (je sais ça sert à rien :lol: )

Code : Tout sélectionner

Procedure.s EXPLORER_ConvertSize(filesize.d)
	Protected i.l = 1
	
	While filesize >= 1024 And i <= 4
		filesize / 1024
		i + 1
	Wend
	
	ProcedureReturn StrF(filesize, 1) + " " + StringField(",K,M,G,T", i, ",") + "o"
EndProcedure

Re: Conversion d'une valeur en O, Ko, ... automatique et sim

Publié : jeu. 07/févr./2013 17:20
par Ar-S
Debug EXPLORER_ConvertSize(250) donne 250.0 o
C'est moche avec ce .0 8)

Re: Conversion d'une valeur en O, Ko, ... automatique et sim

Publié : jeu. 07/févr./2013 20:28
par kwandjeen
Très bien ce code :wink:

Re: Conversion d'une valeur en O, Ko, ... automatique et sim

Publié : ven. 08/févr./2013 4:00
par graph100
@Ar-s : bah ajoute "ctets" derrière :lol:

Re: Conversion d'une valeur en O, Ko, ... automatique et sim

Publié : ven. 08/févr./2013 18:00
par GallyHC
Bonjour,

Ar-S > remplace StrF() par Str :)

Cordialement,
GallyHC

Re: Conversion d'une valeur en O, Ko, ... automatique et sim

Publié : dim. 10/févr./2013 21:45
par nico
Ben, non, on complète la procédure:

Code : Tout sélectionner

Procedure.s EXPLORER_ConvertSize(filesize.q, NbDecimale.b = 2)
  Protected i.l = 1, Res.s, Entier.s, Decimale.s
  Protected size.d
  
  size = filesize
  
  While size >= 1024 And i <= 4
    size / 1024
    i + 1
  Wend
  
  Res = StrF(size, NbDecimale)
  
  Entier = StringField(Res, 1, ".")
  Decimale = StringField(Res, 2, ".")
  
  If i = 1
    ProcedureReturn Entier + " " + "octets"
  Else
    If Decimale = "00"
      ProcedureReturn Entier + " " + StringField(",K,M,G,T", i, ",") + "o"
    Else
      ProcedureReturn Res + " " + StringField(",K,M,G,T", i, ",") + "o"
    EndIf
  EndIf
  
EndProcedure

Debug EXPLORER_ConvertSize(250, 1) ; la décimale ne sera pas prise en compte, c'est le résultat voulu
Debug EXPLORER_ConvertSize(54817, 0) ; valeur arrondie
Debug EXPLORER_ConvertSize(123456789, 3)

Re: Conversion d'une valeur en O, Ko, ... automatique et sim

Publié : lun. 11/févr./2013 12:07
par GallyHC
Bonjour nico,

Je vois un petit problème dans la modification dans ma procédure :

1. tu peux définir le nombre de décimale (c'est simpa), mais en mettant :

Code : Tout sélectionner

If Decimale = "00"
Donc en indiquant par exemple une seule décimale à la procédure, cela ne pourra jamais être vrai.


Donc voila ma version reprise sur ton idée et merci tout de même :) je l'utiliserais cette version :

Code : Tout sélectionner

Procedure.s EXPLORER_ConvertSize(filesize.d, decimal.l = 1)
;
  Protected i.l = 1
  Protected j.s = "o,Ko,Mo,Go,To"
  Protected k.l = CountString(j, ",")
  
  While filesize >= 1024 And i <= k
    filesize / 1024
    i + 1
  Wend
  
  Protected sres.s = StrF(filesize, decimal)
  Protected sent.s = StringField(sres, 1, ".")
  Protected sdec.s = StringField(sres, 2, ".")
  
  If i = 1
    ProcedureReturn sent + " o"
  Else
    If Val(sdec) = 0
      ProcedureReturn sent + " " + StringField(j, i, ",")
    Else
      ProcedureReturn sres + " " + StringField(j, i, ",")
    EndIf
  EndIf  
  
EndProcedure
Cordialement,
GallyHC

Re: Conversion d'une valeur en O, Ko, ... automatique et sim

Publié : lun. 11/févr./2013 22:18
par nico
Exact, bien vu et merci pour la correction. :)