Affichage du mot "bits" dans une GUI
Fregg
Membre
Salut à tous,
je suis débutant en Cocoa et jusque la tout allais bien. J'ai fait un application qui permet d'ouvrir un fichier et d'avoir sa taille et son emplacement. Une fois ces deux valeur obtenue je les affiche dans ma GUI. Pour la taille, j'affiche la taille (normale, en MB) et la taille sur le disque (en bits).
Voici ma méthode :
mon problème est le suivant : l'application refuse d'afficher le mot "bit(s)" (qu'il soit au singulier ou au pluriel), c-à -d qu'au lieu de m'afficher, par ex :" 5.44Mo (5.671.543 bits) "
il m'écrit :" 5.44Mo (5.671.543 " (il ne ferme même pas la parenthèse)
Ca fait plusieurs heures que je cherche mais je trouve pas pourquoi cela ne fonctionne pas. J'ai chercher sur google, mais rien trouver de concrèt.
Quelqu'un sait-il pourquoi cela se produit et comment réussir a afficher le mot "bits" ??
Merci !
je suis débutant en Cocoa et jusque la tout allais bien. J'ai fait un application qui permet d'ouvrir un fichier et d'avoir sa taille et son emplacement. Une fois ces deux valeur obtenue je les affiche dans ma GUI. Pour la taille, j'affiche la taille (normale, en MB) et la taille sur le disque (en bits).
Voici ma méthode :
<br />-(NSString*) getFileSizeString<br />{<br /> int sizeOfFile = [self getFileSize];<br /> int giga=0;<br /> int mega=0;<br /> int kilo;<br /> int bits;<br /> bits = sizeOfFile % 1000;<br /> kilo = (sizeOfFile / 1000) % 1000;<br /> mega = (sizeOfFile / 1000000) % 1000;<br /> giga = sizeOfFile / 1000000000;<br /> <br /> if(giga!=0) {<br /> return [NSString stringWithFormat:@"%1.2f MB (%i.%i.%i.%i bits)", (float) sizeOfFile/(1024*1024), giga, mega, kilo, bits];<br /> } else { // rajouter le mot "bits"<br /> return [NSString stringWithFormat:@"%1.2f MB (%i.%i.%i bits)", (float) sizeOfFile/(1024*1024), mega, kilo, bits];<br /> }<br />}<br />
mon problème est le suivant : l'application refuse d'afficher le mot "bit(s)" (qu'il soit au singulier ou au pluriel), c-à -d qu'au lieu de m'afficher, par ex :" 5.44Mo (5.671.543 bits) "
il m'écrit :" 5.44Mo (5.671.543 " (il ne ferme même pas la parenthèse)
Ca fait plusieurs heures que je cherche mais je trouve pas pourquoi cela ne fonctionne pas. J'ai chercher sur google, mais rien trouver de concrèt.
Quelqu'un sait-il pourquoi cela se produit et comment réussir a afficher le mot "bits" ??
Merci !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Ne serait-ce pas ta TextView que tu as mise dans ta GUI qui n'est tout simplement pas assez large ?
Je sais que c'est tout bête, mais qd on a la tête dans le guidon parfois...
NB, pour ce genre de code à débuguer, en plus d'afficher ta chaà®ne dans ta GUI, tu peux utiliser la fonction [tt]NSLog(@filesize = %@" , maStringAAfficherDansLaGUI)[/tt] (le 2e paramètre étant sensé être ta NSString retournée par la methode getFileSizeString) pour qu'il t'affiche la NSString dans la console de XCode et que tu puisses valider si ça donne ce qui est attendu ou pas.
Pas vraiment, les divisions par 1000 sont faites pour séparer les chiffres par groupes de 3 (bon, les noms portent un peu à confusion quand on parle de bits)...
Pour le problème en lui-même, je ne vois que la rien, la réponse d'Ali est peut-être la bonne: taille de la vue (je n'y aurais pas pensé: peut-être du vécu?)
NSLog(@Bonjou\0r);Â Â ==>Â Bonjou
je ne vois pas trop ce qui pourrait se passer, à part ce que dit Aligator
C'était exactement cela !!! J'ai perdu plusieurs heures uniquement pour ca, ca fait mal...
Super merci ! C'était une "bête" erreur, mais elle aurait pu encore durée des heures.. J'était déjaà parti dans des considération de Token ou de KeyWord et que c'était pour ça qu'il voulais pas me l'afficher ou quoi...
Mille merci !!
C'est exactement ca ! C'est uniquement pour séparer les chiffre en groupe de 3 afin de rendre la taille plus lisible...
Merci pour l'info sur INT_MAX. Pour le moment je ne devrais pas avoir a faire avec des fichier de plus de 2Go (pour le moment)... Si un jour cela change, je viendrai vous poser une question sans doute... ::)
Dans un premier temps, comme j'ai pas spécialement l'intention de distribuer le programme partout a travers le monde, je vais pas faire directement selon le pays... J'vais y aller petit à petit...
Conclusion : tu crées un NSTextField dans ta GUI (ça c'est déjà fait à priori donc) et tu lui associes un NSFormatter depuis IB (par simple glisser-déposer du NSFormatter sur ton textField) pour qu'il formattes directement avec "." comme séparateur de milliers et en rajoutant " bits" derrière le nombre.
Et du côté du code tu n'auras plus rien à faire, juste envoyer la valeur numérique : même plus besoin de passer par une NSString, tu envoies [tt][monTextField setIntValue: tailleDuFichierEnBits][/tt] directement et basta, le NSFormatter rajouté via IB se chargera de la mise en forme. Magique
On peut même gérer les unités comme ça...
Pour le moment, j'ai non seulement codé la méthodes que je voulais mais en plus j'ai trouver d'où venait ce (faux) bug. Je vais donc en rester la...
Mais lors d'une refactorisation, promis, je passe aux NSFormatter...
Encore mille merci pour votre aide...