Débugage.

24

Réponses

  • psychoh13psychoh13 Mothership Developer Membre
    20:06 modifié #32
    Non, non, NSKeyValueCoding existe depuis l'origine (au moins depuis Mac OS X 10.0) et est intégré à  NSObject. Les propriétés ont été ajoutés à  ce système de gestion...
    Sinon en effet, il s'agit bien d'une entorse grave au principe d'encapsulation, enfin ça dépend, si le développeur définit les accesseurs pour ses variables d'instance, la méthode les utilise en priorité, sinon il va chercher la valeur directement dans l'obje,t et si vraiment il trouve rien il appelle une autre méthode "-valueForUndefinedKey:".
    Mais toujours est-il que la méthode cherche en premier des "méthodes légales" pour accéder aux valeurs.
  • gogaulegogaule Membre
    20:06 modifié #33
    #import "MyDocument.h"

    @implementation MyDocument

    //Initialisation du tableau
    - (id)init
    {
    self = [super init];
    if (self) {
    tableau = [[NSMutableArray alloc] init];
    }
    return self;
    }
    //Destruction
    - (void)dealloc {
    [tableau release];
    }
    //Implémentation de la sauvegarde du fichier
    - (BOOL)writeToFile:(NSString *)aPath ofType:(NSString *)type {
    return [tableau writeToFile:aPath atomically:YES];
    //Implémentation de la lecture du fichier en utilisant la fonction miroir
    - (BOOL)readFromFile:(NSString *)aPath ofType:(NSString *)type {
    [tableau autorelease];
    tableau = [[NSMutableArray alloc] initWithContentsOfFile:(NSString *)aPath;
    }
    return YES;

    }

    @end
    Et ce morceau la ?
    Hihihi
    Cordialement
  • schlumschlum Membre
    janvier 2008 modifié #34
    dans 1201271960:

    Que pensez-vous de cette oeuvre majeuse ?


    Euh... Qu'elle est bancale  :o

    Je m'arrête aux premières lignes :

    "return [row valueForKey:identifier];" -> il sort d'où ce "row" ?

    Quant à  ta méthode "- (void)tableview:(NSTableview *)aTableView setObjectValue:(id)anObject forTableColumn:(NSTableColumn *)aTableColumn row:(id)rowIndex", ben... elle ne fait rien. Enfin si, elle fait ce qu'aurait dû faire celle du dessus avant d'utiliser "row"
  • gogaulegogaule Membre
    20:06 modifié #35
    Schlum .
    Oui , normalement c' est le nom de la classe ?ou du taleau ? donc Inscription . Mais ça ne fonctionne pas mieux ?
    Pas çafile areuh  .
    Donc j'avais pensé m' etre trompé et j'ai ecris row , plus de message d'erreur , plus de fonctions .
  • psychoh13psychoh13 Mothership Developer Membre
    20:06 modifié #36
    Je te conseille de compresser ton projet en retirant le dossier "build" et de nous l'envoyer plutôt que d'envoyer tes sources au lance pierre.
  • gogaulegogaule Membre
    20:06 modifié #37
    Oui d'accord .
    Compressé avec stuffit ?
    Envoyé avec Répondre ?
    je suis couillons ,une petite partie de code ,n'est lisible que dans le context .
    Je vais regrouper tout le projet  .
    Merci d'avance .
  • psychoh13psychoh13 Mothership Developer Membre
    20:06 modifié #38
    Pour compresser le projet, tu sélectionnes le dossier du projet (duquel tu as retiré le dossier "build" sinon ça prend beaucoup de place pour rien), et tu fais clique-droit (ctrl + clic)  et tu choisis "compresse <nom du dossier>" ou "archiver <nom du dossier>". (c'est soit l'un soit l'autre selon ton système.)
  • gogaulegogaule Membre
    20:06 modifié #39
    /Le Gestionnaire de Concours 2.zip
  • psychoh13psychoh13 Mothership Developer Membre
    20:06 modifié #40
    Je ne sais pas ce que t'es allé faire avec tes fichiers, mais pour commencer leurs noms étaient tous suffixés avec "- copie"...

    Ensuite, le code, notamment dans MyDocument.m, est complètement... bousillé. o_O
  • psychoh13psychoh13 Mothership Developer Membre
    20:06 modifié #41
    Je sais pas trop ce que t'as fait mais t'as programmé comme un porc... Sans vouloir te vexer je précise !
    Entre les implémentations incomplètes, les noms des méthodes bancals, les releases envoyer à  des objets-classes, les méthodes en double... Il y a vraiment un gros problème là -dedans...
  • gogaulegogaule Membre
    20:06 modifié #42
    Je m'en doutais un peu .
    Désolé ......
    Merci ..
  • psychoh13psychoh13 Mothership Developer Membre
    20:06 modifié #43
    Non mais c'est pas grave, ça arrive à  tous, je suis désolé si j'ai été un peu brutal. Je sais pas si c'est toi qui a fait un peu ds bourdes ou si c'est la compression qui pose problème.
    Je pense que tu devrais regarder le fichier .zip que tu places dans ton post pour vérifier s'il n'y a pas eu de problème pendant la transmission.
  • gogaulegogaule Membre
    20:06 modifié #44

    Ce sont seulement mes bourdes . J' assume .
    Je pensais pour dire la vérité que je pouvais réaliser un petit programme de débutant en faisant du copier/coller.
    D'après ce que j'avais lu (mal compris?) je croyais cela réalisable facilement .
    En fait même si le code " est standard " il ne fonctione jamais ou rarement .Je me suis planté .
    C'est beaucoup plus subtil  que je croyais.
    Pour un pro ce que j'ai réalisé ........ J'essaye ....C'est vachement prenant ...
    Pas besoin de ferninde (ClicCool).Xcode me suffit .
    Merci
    Cordialement
  • psychoh13psychoh13 Mothership Developer Membre
    20:06 modifié #45
    Par définition, le copier/coller est à  éviter, il t'empêche de voir que tu fais une connerie.
    Il faut aussi chercher à  commencer par le plus simple pour ensuite aller ves plus compliqué, que ce soit dans l'apprentissage ou au sein d'un projet.
    Mais surtout, il ne faut pas aller trop vite.

    Ton projet est faisable à  ton niveau, mais encore faut-il que tu t'organises, essaye de découper ton projet en brique plus simple et ensuite assemble-les.
    Commence par les briques qui n'ont besoin d'aucune autre pour fonctionner, comme par exemple une classe qui va stocker une ligne de tableau.
  • gogaulegogaule Membre
    20:06 modifié #46
    Euh ...
    Même cela je n'y suis pas parvenu .....
    Mon idée de départ était celle la , faire pour une ligne  et 3 colonnes et ensuite améliorer .
    Je ne lis pas l' anglais alors pour mettre en oeuvre les exemples apple ....
    En plus seul ...
    Je ne sais pas , mais le copier/coller si on ne sais pas ,en + à  quoi les parties selectionnées servent vraiment ..
    Comprendre avec un petit dico ...
    Comment savez-vous que tel ligne sert a ... ça ? avec les définitions ? En plus actuellement je veut avoir terminé ce que j' entreprend avant de l' avoir commencé .
    Cordialement.
  • psychoh13psychoh13 Mothership Developer Membre
    20:06 modifié #47
    En général, les noms des méthodes d'Apple sont suffisamment précis pour être considérés comme auto-documentées, mais lorsqu'on ne comprend pas l'utilité d'une méthode, on va fouiller dans la documentation.

    Mais à  force de programmer, au bout d'un moment on comprend rapidement un code rien qu'en le lisant, c'est sûr que là  il faut quand même comprendre l'anglais sinon on ne s'en sort pas.

    Je pense que tu t'en sortirais mieux si tu t'essayais à  un tutoriel complet sur la programmation en Cocoa. Par exemple, le livre Cocoa par la Pratique de Aaron Hillegass est excellent pour commencer à  programmer en Cocoa. Le seul ennuie c'est que la version française a été écrite pour Mac OS X 10.2, mais la majorité de ce qui est dit dans ce livre est toujours d'actualité, pour tout ce qui ne l'est plus ce n'est jamais vraiment éloigné des techniques actuelles.
  • gogaulegogaule Membre
    20:06 modifié #48
    Bonjour .
    Je vous doit la vérité :
    Le code que je vous ai adressé ; ce sont des notes , des photos d'ecrans  , des copies ,que j'ai rassemblé .J'ai pensé que si je vous disais que je n'avais pas encore réussi a écrire du code , vous ne voudriez pas m'aider .
    Vous c'est pour tous les membres du forum .
    Je n'ai réalisé que le dossier MyDocument.h .....celui que je vous demandais de controler.
    J'ai ralisé le tutorial 2 fois . Une fois en 2004/5 . Une Fois en 2007.
    Psychoh13
    [Commence par les briques qui n'ont besoin d'aucune autre pour fonctionner, comme par exemple une classe qui va stocker une ligne de tableau.]
    accepterais-tu de détailler la "fabrication"de cette brique .?
    Cordialement
  • gogaulegogaule Membre
    20:06 modifié #49
    Traduction ?
    [NSOutlineView is a subclass of NSTableView that lets the user expand or collapse rows that contain hierarchical data.]
    Merci à  vous .
  • MalaMala Membre, Modérateur
    20:06 modifié #50
    dans 1201334368:

    Le code que je vous ai adressé ; ce sont des notes , des photos d'ecrans  , des copies ,que j'ai rassemblé .J'ai pensé que si je vous disais que je n'avais pas encore réussi a écrire du code , vous ne voudriez pas m'aider .

    Cela explique le côté décousu de beaucoup de tes messages. Maintenant, le problème n'est pas tant que tu n'a pas codé une ligne de code mais que que tu ne comprends pas l'anglais. Tout est en anglais avec l'Objective-C. En me projetant à  mes débuts sous cocoa, j'aurais beaucoup du mal à  imaginer pouvoir faire quelques chose avec XCode si celui-ci parlait allemand par exemple (je parle pas un mot d'allemand). Cela me semble vraiment mission impossible.

    As-tu pensé à  te tourner vers des outils plus accessibles en français? Je pense notamment au dernier né de FileMaker qui s'appelle Bento. Voir ici...
    http://www.filemaker.fr/products/bento/preview/learn-more.html


  • gogaulegogaule Membre
    20:06 modifié #51
    Bonjour Mala .
    Je suis retraité ,sans moyen financier , les logiciels payant , défendus .
    Bon , je cherche à  "traduire" mot à  mot .... dure dure .

    Est-il possible de créer (je sais comment dire )ou de nommer des colonnes sans passer par le  .NIB et IB .  si oui les infos sont stockées dans quel dossier ?

    Comment fait-on pour changer les icônes donc les classes dans la fenêtre de .NIB ex:
    L'icône files Owner qui se transforme en Contrôleur (hexagone <--  ? bleu)

    Cordialement
  • psychoh13psychoh13 Mothership Developer Membre
    20:06 modifié #52
    Alors, déjà  pour faire une classe de données, c'est très simple, tu fais une classe héritant de NSObject, et tu mets comme variables d'instance chaque colonne de ton tableau.
    Ce qui donne dans ton cas :

    @interface Participant : NSObject {<br />&nbsp; &nbsp; unsigned numero;<br />&nbsp; &nbsp; NSString *nom;<br />&nbsp; &nbsp; unsigned<br />&nbsp; &nbsp; &nbsp; &nbsp; partie1,<br />&nbsp; &nbsp; &nbsp; &nbsp; partie2,<br />&nbsp; &nbsp; &nbsp; &nbsp; partie3,<br />&nbsp; &nbsp; &nbsp; &nbsp; partie4,<br />&nbsp; &nbsp; &nbsp; &nbsp; partie5,<br />&nbsp; &nbsp; &nbsp; &nbsp; partie6,<br />&nbsp; &nbsp; &nbsp; &nbsp; partie7;<br />&nbsp; &nbsp; unsigned total;<br />&nbsp; &nbsp; unsigned classement;<br />}<br /><br />// Les accesseurs correspondant à  ces méthodes<br />@end
    


    Il faudra en fait définir aussi les accesseurs pour chacune de ces variables d'instance, ce sera en effet plus propre, mais le plus urgent et de faire un accesseur pour la valeur total, puisque celle-ci doit contenir la somme des 7 parties de la ligne, il faut donc qu'à  chaque fois que la NSTableView demande le contenu de la variable d'instance "total" il faut que se valeur soit calculée en fonction des parties et retourné.

    Ce qui fait que la variable d'instance "total" n'est pas obligatoire, mais les accesseurs le sont de "total" le sont.

    En ce qui concerne ton tableau, il faut les "identifiers" des colonnes soient exactement les mêmes que les variables d'instance de cette classe. Cela permettra de rendre ton application plus souple. Pour changer l'identifier, le plus simple étant de passer par IB, tu sélectionnes une colonne, tu vas dans le Attributes Inspector (pomme + 1) et tu les modifies en conséquence.

    En ce qui concerne la phrase que tu voulais qu'on traduise elle signifie simplement que la classe NSOutlineView est une sous-classe de NSTableView et qu'elle définit un tableau en forme d'arbre, c'est-à -dire que certains éléments peuvent être étendus ou refermé pour afficher les éléments qui en héritent sous forme de hiérarchie.
  • ClicCoolClicCool Membre
    20:06 modifié #53
    Bonjour Gogaule,

    Je découvre ton sujet mais ne parvient pas du tout à  comprendre ni où tu en es ni ce que tu veux faire.
    Je me demande si tu ne ferais pas mieux d'oublier, pendant un temps, les NSTableView pour faire et refaire tous les tutoriels qui te tombent sous la main, à  commencer par les plus simples et le bases. Histoire de mieux te faire une idée de la structure de base d'un petit logiciel en Cocoa et en maà®triser les mécanismes.
    Une fois que tu auras, pas à  pas, écrit, et non pas copier/coller, quelques tutoriels avec un résultat fonctionnel, zéro warning et zéro erreurs, tu te lances, personnalises et ajoutes prudemment des variantes et fonctionnalités à  un de tes projets-tutoriels fonctionnel.
    A chaque moindre petit ajout tu compile exécutes et vérifies que tu maà®trise ce que tu as ajouté.
    Ne te lances pas à  partir de zéro sur un projet impliquant une technique dont tu ne comprends pas les bases elles mêmes.

    Ne t'inquiète pas, tétu comme tu as l'air de l'être tu devrais y parvenir.
    Faut juste commencer par le commencement.

    dans 1201299580:

    ... Pas besoin de ferninde (ClicCool).Xcode me suffit .
    Merci
    Cordialement

    Ma signature est une allusion à  la technique des bindings dont certains ici pensent peut-être que j'abuse et que je binde un peu trop sovent dans mon code ;)
  • psychoh13psychoh13 Mothership Developer Membre
    20:06 modifié #54
    (C'est quoi Ferninde?? ???)
  • ClicCoolClicCool Membre
    20:06 modifié #55
    dans 1201354146:

    (C'est quoi Ferninde?? ???)


    Salut Psychoh,

    Tu connaà®s pas la chanson ? "Qand je pense à  Fernande, je bande, je bande ..."  ?

    C'est juste un jeu de mot, avec Cocoa je binde, je binde ...
  • psychoh13psychoh13 Mothership Developer Membre
    20:06 modifié #56
    Pas mal. ;D
    La chanson je la connaissais mais j'avais pas fait le lien. :D
  • gogaulegogaule Membre
    20:06 modifié #57
    ClicCool
    Bonjour
    J'avais bien compris qu'ils s'agissait des Bindings et que tu bind trop  .. Je ne me permettrais pas ..
    Merci pour vos conseils c'estchment sympa ..
    Bon j'ai compris ( je pense ! ) pas mal de chose .
    Et je fait ce que tu conseil , à  savoir " Bidouiller " les codes des exemples du livre de Mr Hillegas .
    (J'ai téléchargé les code sur le site Eyrolles .. )
    Psychoh
    Je te soumettrai un nouveau (quel rasoir) morceau de code .Au départ 28 Erreurs 30 warnings
    Il me reste 4 Erreurs 3Warnings
    Je vous pries de m'excuser  , vous tous , mais je cherchais désespérément de l'aide car je pensais  que; trop bête vous ne m'aideriez pas (Le Forum) vu certain écrit peu accueillant lors de mon inscription.@End
    Cordialement
  • ClicCoolClicCool Membre
    20:06 modifié #58
    Bonsoir François,

    dans 1201365607:

    Je te soumettrai un nouveau (quel rasoir) morceau de code .Au départ 28 Erreurs 30 warnings
    Il me reste 4 Erreurs 3Warnings .../...
    .../...28 erreur et 30 warning d'un coup ?
    Je sais bien que souvent i y a des erreurs en cascade dues à  une seule ligne mais bon là  ça fait beaucoup.
    Je  te conseille de compiler (Pomme B) quasiment à  chaque ligne que tu écris, de telle sorte qu'il n'y ait pas de doutes sur la localisation de l'erreur ayant déclenché warnings et erreurs.
    De cette façon, peu de risque d'avoir d'un coup 28 erreurs difficiles à  localiser.
    Ce qui te permet en plus de cibler l'aide que tu pourrais avoir à  nous demander.

    dans 1201365607:
    .../... vu certain écrit peu accueillant lors de mon inscription.@End
    Cordialement

    Peut-être pourrais-tu commencer par remplir un peu les informations de ton profil par exemple ?
    Et n'oublies pas que ceux qui t'aident ici le font bénévollement et généreusement, plus tes questions seront précises et bien décrites, plus ils nous sera possible d'y répondre.
    Comment répondrais-tu à  quelqu'un qui te demande "à  brûle moi le pourpoint" : "pourquoi ma poule ne pond pas ?" sans savoir de quelle poule il parle, qu'elle race, quel âge, s'il a un jardin suffisamment grand, ce qu'il lui donne à  manger etc... le tout pour se rendre compte après 15 posts que sa poule est un coq ! ?

    Cordialement à  toi
  • gogaulegogaule Membre
    20:06 modifié #59
    Bonjour à  tous .
    Je sais maintenant que toute la Communauté Mac Parcitipe non ?
    Je cherche correcteurs ( Encore ?...) sympa . Pas zéro ......javascript:void(0)
    Merci
    Cordialement à  vous ..!
  • gogaulegogaule Membre
    20:06 modifié #60
    ClicCool
    Bonsoir .
    Tout à  fait d' accord pour remercier les bénévoles .....Merci ..
    L'incident du début Oublié et Oublions .....
    Je veut encore aller plus vite que la musique..... Je me soigne , je me soigne .
    J'ai reposté une oeuvre "majeuse"  soyez indulgent .
    Ils restent beaucoup de ..bugs
    Je n'ai pas essayé de débuger ligne par ligne car je pensais cela impossible .
    Il manque un Smiley qui fume .... l'état de mes cheveux ce soir ..
    Cordialement
  • schlumschlum Membre
    20:06 modifié #61
    Mais non, y en a un smiley qui fume !  :fouf):  :o
    :) :)
Cette discussion a été fermée.