Ce forum est en partie financé par l’affichage de publicités. Merci de désactiver votre bloqueur de publicités pour nous permettre de continuer à fournir ce service.

Invoquer de l'Objective C depuis AppleScript

Discussion dans 'Développement Mac' créé par Didier Guillion, 9 Juillet 2003.

  1. Didier Guillion

    Didier Guillion Membre d’élite
    Club MacG

    Inscrit:
    20 Juillet 2001
    Messages:
    3 244
    J'aime reçus:
    164
    Bonjour,

    Je voudrais appeler une fonction écrite en Obj-C depuis l'AppleScript.

    Quand je n'ai qu'un parametre cela marche nickel, des que j'en ai deux ou plus je n'y arrive pas.

    Ma fonction s'appelle "ConvertJpg", elle doit recevoir deux chaines de caracteres en parametre

    Je déclare dans le header (.h)
    @interface NSApplication (ASKAConvertJpg)
    - (BOOL)ConvertJpg:(NSString *)SourceFile:(NSString *)DestFile;
    @end

    Je defini la fonction (.m) :

    @implementation NSApplication (ASKAConvertJpg)
    - (BOOL)ConvertJpg:(NSString *)SourceFile:(NSString *)DestFile
    {
    return((BOOL)1);
    }
    @end

    (Je veux simplement savoir si ma fonction est correctement appellée, je remplirait le corps plus tard bien sur)

    En appleScript j'ecrit :
    set value to call method "ConvertJpg:" with parameters {"aaaa, "bbbb"}
    log value

    Et j'obtient l'erreur "Variable non definie" donc ma fonction n'est pas correctement appelée.

    Si vous avez une idée, ou même un source d'exemple qui utilise ce genre d'appel, vous aurez droit à ma reconnaissance éternelle...

    Cordialement
     
  2. plumber

    plumber Membre confirmé

    Inscrit:
    15 Janvier 2003
    Messages:
    473
    J'aime reçus:
    0
    salut j'ai eu la meme galère comme quoi

    j'ai fini par envoyer un seul argurment qui est un tableau d'arguments

    et j'explose ce tableau

    je sais c'est stupide le serpent qui se mort lui meme la ...

    si tu as trouvé une autre solu

    je suis preneur

    je suis preneur aussi pour ce qui est de la gestion des kevents de cocoa à carbon et inversement

    j'ai quelques résultats pour du moin disons surprenant



    [​IMG] [​IMG] [​IMG] [​IMG] [​IMG] [​IMG] [​IMG] [​IMG]
     
  3. Didier Guillion

    Didier Guillion Membre d’élite
    Club MacG

    Inscrit:
    20 Juillet 2001
    Messages:
    3 244
    J'aime reçus:
    164
    Bonjour,

    Merci pour ta réponse.
    J'ai pensé à cela, mais c'est l'aspect "explosion" du tableau qui me bloque.
    Tu aurait un exemple a me proposer ?

    Cordialement
     
  4. plumber

    plumber Membre confirmé

    Inscrit:
    15 Janvier 2003
    Messages:
    473
    J'aime reçus:
    0
    bah imaginons

    j'appel

    myargs=tab["argument1","argument2","argument3"]

    mymethod(myargs)

    a l'entrée de mymethod tu split l'argument unique

    sachant que normalement

    mymethod(myarg1,myarg2)

    argc argv mais je n'ai pas trouvé de solution à ce problème autre
    que ca



    [​IMG] [​IMG]
     
  5. Didier Guillion

    Didier Guillion Membre d’élite
    Club MacG

    Inscrit:
    20 Juillet 2001
    Messages:
    3 244
    J'aime reçus:
    164
    Tu es sur que c'est de l'AppleScript cà ?

    Cordialement
     
  6. plumber

    plumber Membre confirmé

    Inscrit:
    15 Janvier 2003
    Messages:
    473
    J'aime reçus:
    0
    non c'est pas de l'applescript biensur

    tu veux donc une transcription je te donne ca lundi

    petit tour en vroum tooday
     
  7. Didier Guillion

    Didier Guillion Membre d’élite
    Club MacG

    Inscrit:
    20 Juillet 2001
    Messages:
    3 244
    J'aime reçus:
    164
    Bonjour,

    Merci d'avance. Comme AppleScript est pariculièrement chatouilleux sur les ponctuations, je pense que je dois faire une erreur de ce genre quelque part. Si je pouvait comparer mes appels a quelque chose qui marche, je pense que cela suffirait.

    Cordialement
     
  8. molgow

    molgow Vétéran
    Club MacG

    Inscrit:
    4 Janvier 2002
    Messages:
    5 493
    J'aime reçus:
    612
    Je connais absolument pas AppleScript, mais il manquerait pas un guillemet fermant dans ce code ? (après les a : {"aaaa, "bbbb"} )
     
  9. Didier Guillion

    Didier Guillion Membre d’élite
    Club MacG

    Inscrit:
    20 Juillet 2001
    Messages:
    3 244
    J'aime reçus:
    164
    Bonjour,

    Oui, bien sur tu as raison, faute de frappe, mais avec ou sans cela ne change rien.

    Cordialement
     
  10. plumber

    plumber Membre confirmé

    Inscrit:
    15 Janvier 2003
    Messages:
    473
    J'aime reçus:
    0
    je viens faire un petit tour


    - (BOOL)ConvertJpg:(NSString *)SourceFile:(NSString *)DestFile
    {


    }

    set SourceFile to "/my/path"
    set DestFile to "/my/path/tomove"

    set value to call method "ConvertJpg:" with parameter {SourceFile,DestFile}


    set FileList to {"/my/path","/my/path/tomove"}
    set value to call method "ConvertJpg:" with parameter FileList

    mais tu doit changer coter objective parce que tu recoit une liste et
    non plus deux strings

    bon il ya une suptilité avec parameters et parameter

    parameters c'est une list
    et parameter un item

    (la doc)

    si tu as une method avec des parametres definies

    tu dois lui fourguer le nombre de parametres en item

    c'est bizarre je sais mais ca fonctionne

    j'ai pas tout compris mais je me suis inscrit a la apple-script list

    par ce que ca m'a donné l'occaze de me réinterresser au probleme







    [​IMG] [​IMG] [​IMG] [​IMG]
     
  11. plumber

    plumber Membre confirmé

    Inscrit:
    15 Janvier 2003
    Messages:
    473
    J'aime reçus:
    0
    je suis pas tres clair apres relecture je prendrais le temps de faire une bafouille en human readable interface

    [​IMG] [​IMG]

    en gros mymethod :int d:int w:int z :int x

    call "mymethod:" with parameter (sans s) {10,10,10,10}
     
  12. Didier Guillion

    Didier Guillion Membre d’élite
    Club MacG

    Inscrit:
    20 Juillet 2001
    Messages:
    3 244
    J'aime reçus:
    164
    Bonjour,

    Je vois (un peu) ce que tu veut dire, en fait tu passe un seul parametre qui est une liste de parametres, que tu recupere en Obj-C. C'est une solution.
    Mais alors comment recuperer ses parametres en Obj-C ?

    Cordialement
     
Chargement...