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

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

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

Message 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
Dernière modification par GallyHC le mer. 06/févr./2013 22:17, modifié 3 fois.
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

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

Message 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 :)
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

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

Message par GallyHC »

Merci, ah oui il y avait aussi un peu de code...
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

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

Message par Backup »

GallyHC a écrit :Merci, ah oui il y avait aussi un peu de code...
oui .. sympath le code .. :mrgreen:
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

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

Message 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.
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

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

Message 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
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

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

Message par Ar-S »

Debug EXPLORER_ConvertSize(250) donne 250.0 o
C'est moche avec ce .0 8)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
kwandjeen
Messages : 204
Inscription : dim. 16/juil./2006 21:44

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

Message par kwandjeen »

Très bien ce code :wink:
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

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

Message par graph100 »

@Ar-s : bah ajoute "ctets" derrière :lol:
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

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

Message par GallyHC »

Bonjour,

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

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

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

Message 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)
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

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

Message 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
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

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

Message par nico »

Exact, bien vu et merci pour la correction. :)
Répondre