begin process at 2012 02 11 22:07:16
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Algorithme

 > 

Maths

 > 

pb de 100%


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

pb de 100%

mardi 3 février 2009 à 00:02:02 | pb de 100%

dyroj

salut,
je créer un envoyer de fichier par socket, il marche tres bien et j'ai ajouté un progress bar qui progresse de la facon suivante :

SendMessage(GetDlgItem(hwnd, ID_PROGRESS),PBM_SETPOS , (( taille_send*100)/ taille_file), 0);

sprintf(pourcentage, "%d %d/%d" , ((taille_send*100)/taille_file), taille_send, taille_file);

SetWindowText(hwnd,pourcentage);

il marche tres bien pour les petit fichier de quelque MO mais quand je veut envoyer un fichier un peut volumineu de 200 MO par exemple, le comteur de pourcentage maffiche le bon resulta pour taille_send et taille_file mais pour ((taille_send*100)/taille_file)
sa maffiche un 100% correcte jusqu'à 6% mais apres  sa decend comme sa : -6 -5 -4 -3 -2 -1 0 arriver a zero sa repart normalement : 1 ... 6 -6 -5...
je c'est bien que je mexprime mal et que je fait beaucoup de faute alors sa ne sert a rien de me gronder lol.
++

mardi 3 février 2009 à 00:05:13 | Re : pb de 100%

dyroj

"salut,
je créé un envoyeur de fichier par socket, il marche tres bien et j'ai ajouté un progress bar qui progresse de la facon suivante :"

mardi 3 février 2009 à 00:53:36 | Re : pb de 100%

fcaruso

c'est parce que tu travaille sur des int
un int, si tu compiles en 32bits, c'est 32 bits, et comme c'est signé, ben... le maxi c'est 2 millions environ.
Divisé par 100, ca fait que passé 20 megas environ, ton pourcentage va partir en vrille....

Y'a plein de facons de faire.
Soit tu cast en double du genre : (((double) taille_send)*100.0)/(double) taille_file.
Sinon, en int ben c'est des maths : taille_send/(taille_ville/100). -> mais attention si taille_ville < 100 tu va avoir une division par zero.

Bonne chance

Fabrice
mardi 3 février 2009 à 01:12:18 | Re : pb de 100%

dyroj

ho merci,
sa marche voila se que sa donne :

SendMessage(GetDlgItem(hwnd_main,ID_PROGRESS),PBM_SETPOS , (((

double)taille_send*100.0)/(double)taille_file), 0);

sprintf(pourcentage,

"%lf", (((double)taille_send*100.0)/(double)taille_file));

SetWindowText(hwnd_main,pourcentage);

le probleme maintenant c'est que moi je ne veut pas afficher decimale mais un nombre entier , car la sa maffiche 100,00000.
aurai tu une solution.
++

mardi 3 février 2009 à 07:57:25 | Re : pb de 100%

fcaruso

Réponse acceptée !
"%.0f" pour la chaine de formattage...
a+
Fabrice
jeudi 5 février 2009 à 09:07:54 | Re : pb de 100%

NitRic

fcaruso, signed int c'est un peu plus de 2 milliard et pas million, non signé c'est un peu plus de 4 milliard
d'après moi ce serait plus simple et rapide un entier 64 bits plutôt qu'un lourd flottant, « long long » ou « __int64 » même sur une plate-forme 32bits

en passant, que l'on compile sous Windows 32/64 bits (plate-forme PC), int et long reste 32 bits sauf pour les pointeurs qui deviennent 64 bits sous Windows 64 bits et 32 bits sous Windows 32 bits, pour du 64 bits (Windows 32/64 bits - PC), il y a __int64 (ou « long long » avec le support du C99), sous linux 64 bits (PC) c'est différent, int reste 32 bits mais long devient 64 bits comme les pointeurs, sous linux 32 bits (PC), int et long sont 32 bits, comme les pointeurs ...


~(.:: NitRic ::.)~
jeudi 5 février 2009 à 19:34:18 | Re : pb de 100%

fcaruso

4.294.967.295 Oui pardon ca fait milliards, pas millions... désolé.


Cette discussion est classée dans : fichier, taille, send, file, pourcentage


Répondre à ce message

Sujets en rapport avec ce message

ouverture de fichier avec les MFC [ par steph76 ] Bonjourvoila je programme une application qui ha beusoin d'ouvrir 1 fichier via httpJ'ai donc fait le code suivantCStdioFile *file;CInternetSession IS probleme de listage de fichiers [ par Kevin972 ] salut!! je ne comprends pas la fonction ne liste rien du tout.........al'aide!!!!!!!!!!!!!!!!! voici ma fonction:#include#include#include#include#in Fichier include "glut.h" [ par Ben0007 ] Hello,J'obtiens ce message d'erreur en compilant un exemple de programme trouvé sur ce site:"fatal error C1083: Cannot open include file: 'gl/glut.h': Creation de fichier [ par PLUiK ] SalutJai fait une source qui devrait normalement me créer un fichier la voici:[b]#include int WINAPI WinMain (HINSTANCE hThisInstance,HINSTANCE hPrevI CAsyncSocket::Send problème avec la taille du packet [ par ymoser ] Hello, J'envoie une image jpeg avec la méthode Send de la classe CAsyncSocket (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/ Fiabiliser transfert par socket [ par masseur ] Salut. Je vais vous expliquer mon petit problème. Je crée un client et un serveur. Des que le serveur recoit une demande il envoie un fichier en ut [C++]Copie de masse de tout ce qu'il y a dan sun dossier [ par alexou09 ] Bonjour a tous! J'ai fait un programme permettant de copier un fichier. J'aimerai l'ameliorer de fasson a ce qu'il detecte tout les fichier d'un dossi Taille de fichiers [ par Screderman ] Hello !Je cherche un moyen ( une fonction ) permettant de trouver la taille d'un fichier afin que je puisse le lire en entier avec ma fonction de lect Adresse disque d'un enregistrement de taille variable dans un fichier [ par exar ] Hello !Comment forcer l'écriture d'un enregistrement à une adresse spécifique sur le disque. Comment ensuite y accéder ? Le but est de permettre l'é Fonction de lecture de fichier [ par bastet1978 ] Bonjour, je suis nouveaux en c, et je veux utiliser une fonction pour ouvrir mes fichiers (eviter a chaque foix de tester si ouverture ok ... etc) Voi


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,390 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales