J'sais plus faire des pourcentages!

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

J'sais plus faire des pourcentages!

Message par gansta93 »

Salut,

Il me faut calculer les 33% d'un nombre pour utiliser le base64encoder(). Le pb c qu'à chaque fois que je veux calculer la quantité de mémoire à alouher, ça ne marche pas!

Code : Tout sélectionner

chaine.s=InputRequester("Chaine","Chaîne à encoder:","jklm")
If Len(chaine)<64
nb=64
Else
nb=Len(chaine)*0.33
EndIf
If nb<64
nb=64
EndIf
*buffer=AllocateMemory(nb)
Base64Encoder(chaine,Len(chaine),*buffer,nb)
result.s=PeekS(*buffer)
MessageRequester("Info",result,#mb_ok|#mb_iconasterisk)
FreeMemory(*buffer)
End
Merci d'avance pour un... très très nul en mathématiques :-).
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Faut ajouter la valeur, une fois qu'elle est calculée

nb=Len(chaine)*0.33 + Len(chaine)
Avatar de l’utilisateur
Crystal Noir
Messages : 892
Inscription : mar. 27/janv./2004 10:07

Message par Crystal Noir »

ou multiplier directement par 1.33
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Arf, ça marche quand même pas, même avec une chaîne de caractère de plus de 64 octets!
Je ne comprand pas. :?:
Avatar de l’utilisateur
Crystal Noir
Messages : 892
Inscription : mar. 27/janv./2004 10:07

Message par Crystal Noir »

je ne comprend pas , qu'est ce qui ne marche pas ? tu pourrais être plus précis stp :)
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

un truc tout bête, c'est une valeur float, ton Nb ???
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Arf, avec mon 0.33, je pouvais pas aller loins.
ça marche maintenant.

Code : Tout sélectionner

chaine.s = InputRequester("Chaine", "Chaîne à encoder:", LSet("jklm", 200, "f"))
nb = Len(chaine) * 1.33 + Len(chaine)
If nb < 64
  nb = 64
EndIf
*buffer = AllocateMemory(nb)
Base64Encoder(chaine, Len(chaine), *buffer, nb)
result.s = PeekS(*buffer)
MessageRequester("Info", result, #mb_ok | #mb_iconasterisk)
FreeMemory(*buffer)
End
Voilà, je vais pouvoir refaire mon exemple encoder et decoder du Base64Encoder().
Avatar de l’utilisateur
Crystal Noir
Messages : 892
Inscription : mar. 27/janv./2004 10:07

Message par Crystal Noir »

oui sauf que si tu multiplies par 1,33 faut pas rajouter Len(chaine) derrière sinon ca fait plus 33 %. Ou alors il faut que tu multiplies par 0,33 pour ajouter à nouveau Len(chaine) :

100 X 1,33 = 133

100 X 0.33 + 100 = 133

C'est comme la TVA :

Prix hors taxe * 0,196 + prix hors taxe = Prix ttc
ou
Prix hors taxe * 1.196 = Prix ttc


Je dis ca car tu voulais 33% de ton Len(chaine)
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Oui je me suis mal exprimé.
Encode le buffer reçu avec l'algorithme Base64. Il est largement utilisé dans les programmes de messagerie mais peut également être utile dans toute application
nécessitant un encodage basé sur le code ASCII seul (7 bits, caractères 32 à 127) pour les fichiers binaires de base. Le buffer de sortie devrait être
33% plus long que le buffer d'entrée, avec une taille minimale de 64 octets.
Voilà pourquoi je rajoute len(chaine) après.

Encore merci.
Répondre