Page 1 sur 1
J'sais plus faire des pourcentages!
Publié : ven. 19/nov./2004 9:53
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

.
Publié : ven. 19/nov./2004 10:21
par Chris
Faut ajouter la valeur, une fois qu'elle est calculée
nb=Len(chaine)*0.33 + Len(chaine)
Publié : ven. 19/nov./2004 11:07
par Crystal Noir
ou multiplier directement par 1.33
Publié : ven. 19/nov./2004 11:07
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.

Publié : ven. 19/nov./2004 11:32
par Crystal Noir
je ne comprend pas , qu'est ce qui ne marche pas ? tu pourrais être plus précis stp

Publié : ven. 19/nov./2004 11:54
par Le Soldat Inconnu
un truc tout bête, c'est une valeur float, ton Nb ???
Publié : ven. 19/nov./2004 11:56
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().
Publié : ven. 19/nov./2004 12:58
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)
Publié : ven. 19/nov./2004 13:07
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.