Une opération dans un plist

elfelf Membre
16:52 modifié dans API AppKit #1
Je voudrais essayer d'enregistrer une opération dans un plist que le programme puisse ensuite traiter comme telle...
Je m'explique...

J'ai un plist avec un key monopération et comme value l'opération (par ex. +2-4/6*4) qui est dedant d'une manière ou d'une autre...
Le programme a un float appelé monfloat et je voudrais que il execute cette opération sur ce float.

Je ne vois vraiment pas comment faire pour stoquer cette opération sans me compliquer trop la vie...

Peut être en fesant comme value un array qui contien une info sur chaque element de l'opération...

Mais alors la c'est plus trop accèsible pour les utilisateurs et les devloppeurs ce qui est déjà  moins bien...

Si quelqu'un a une idée merci de me le faire savoire...

++,
Amicalement,
SeoxyS

Réponses

  • AntilogAntilog Membre
    16:52 modifié #2
    Deux solutions:
    - une NSString @+2-4/6*4
    - te creuser la tête pour trouver un codage de l'opération à  base de tableaux (je ne pense pas que Cocoa ait prévu quelque chose pour toi  :o )
  • elfelf Membre
    16:52 modifié #3
    Oui j'ai pensé à  la string mais comment ensuite dire a cocoa de l'executer... je me demende si c'est possible...
  • fouffouf Membre
    16:52 modifié #4
    Non, on ne peut pas directement. La solution passe par l'utilisation d'un analyseur. J'en ai developpé un si vous voulez. Par contre, faut passer par les NSTask.
  • elfelf Membre
    16:52 modifié #5
    Si tu en à  dev' un ça serai sympas de me le montrer... Ou de m'expliquer comment en faire un.

    As tu AIM (iChat)?
  • elfelf Membre
    16:52 modifié #6
    euh idée?
  • fouffouf Membre
    16:52 modifié #7
    Bon, voila, c'est assez simple. Si tu veux l'intégré directos dans un projet, va a http://raphaelbost.free.fr/OCPlot/ et télécharge les fichiers grammar.y et rules.l. Tu les mets dans une target de type Tool et tu compiles. Ca te fais un executable que tu peux lancer dans le Terminal ou via les NSTask. Si tu as envie de voir comment l'utiliser, tu n'as qu'à  télécharger le projet en entier.
  • WIMPWIMP Membre
    16:52 modifié #8
    dans 1121203939:

    Bon, voila, c'est assez simple.


    Tout dépend de l'idée qu'on se fait du mot "simple"...
    Je n'ai pas regardé ton projet, mais à  première vue ça a à  voir avec lex et yacc, est-ce que je me trompe ?
  • fouffouf Membre
    16:52 modifié #9
    Oui, mais je te rassure, je n'y connais rien. C'est juste un truc que j'ai récupéré d'un bouquin et que j'ai un peu amélioré, c'est tout.

    Bon, simple, peut-être pas, mais ya pas une ligne de code à  rajouté pour que cela marche dans le Terminal ou dans la console de XCode. ;)
  • elfelf Membre
    16:52 modifié #10
    salut,

    Pourrais-tu donner une expliquation un peu plus simple car la j'ai pas tout capté lol!

    merci,
    SeoxyS
  • elfelf Membre
    16:52 modifié #11
    OK merci de ton aide sur iChat!

    ensuite il y a un truc qui me pose problème:

    si j'ai bien compris je dois faire ce code:

        NSTask *evaluator;
        evaluator = [[NSTask alloc] init];
        [evaluator setLaunchPath:@/Users/kenneth/Desktop/Programation/Programmes/Cocoa/OperationMamagerTool/build/OperationManagerTool]; //change la c'est un example
        [evaluator launch];

    ensuite mon problème c'est comment lui donner mon opération...

    ensuite sauf erreur je récupère le resultat avec un terminationStatus c'est ça?

    Il n'y a pas moyens de faire une commande terminale dans un shell plus simplement et ensuite rajouter des ligne???

    Un equivalent de la classe shell en RB

    Merci,
    SeoxyS
  • elfelf Membre
    16:52 modifié #12
    Comme je n'ai pas reçus de réponse depuis asser longtemps je vais réexpliquer mon problème!

    Alors dans le terminal il suffit de taper ça:

    path/path/monanalyseur
    

    4+7/6
    

    Et après on lis le resulta a la ligne suivante...

    Comment faire ça avec NSTask (ou NSThread)
    [matask setLaunchPath:@path/path/monanalyseur];
    C'est tout ce que j'arrive a capter...

    Quelqu'un peut-il me donner un code d'example?
Connectez-vous ou Inscrivez-vous pour répondre.