# variable globale partagée



## jannold2 (2 Janvier 2008)

Bonjour
je me fais un petit programme en applescript studio.
pour faire quelque chose de "propre" j'ai voulu avoir 2 scripts différents (il y a 2 onglets, avec beaucoup de boutons dans chaque, et je voulais associer les événements de l'un à un script, et pareil pour l'autre)
manque de pot, il y a une variable qe j'aimerai partager entre les 2 scripts et je ne sais pas comment faire

il y a 2 fichiers : toto.applescript et tata.applescript
j'ai essayé global et property, ca marche pas.

dans toto : 
property mavarglobal:"initial"

et dans tata
get mavarglobal of toto ou script "toto" ou script "toto.applescript"

et rien n'y fait


merci de m'aider

Thomas


----------



## Didier Guillion (2 Janvier 2008)

jannold2 a dit:


> Bonjour
> je me fais un petit programme en applescript studio.
> pour faire quelque chose de "propre" j'ai voulu avoir 2 scripts différents (il y a 2 onglets, avec beaucoup de boutons dans chaque, et je voulais associer les événements de l'un à un script, et pareil pour l'autre)
> manque de pot, il y a une variable qe j'aimerai partager entre les 2 scripts et je ne sais pas comment faire
> ...




AppleScript a beaucoup de probleme avec les variables globales.
Personnellement j'utilise les "keys" :

set xxx to (call method "defaultObjectForKey:" with parameter "xxx") as yyy

avec xxx le nom de la variable et yyy le type.

Je passe par un petit module Obj-C dont voici le source :

```
#import "UserDefaults.h"


@implementation NSApplication (ASKAUserDefaults)

- (id)defaultObjectForKey:(NSString *)defaultName
{
	return [[NSUserDefaults standardUserDefaults] objectForKey:defaultName];
}

- (void)setDefaultObject:(id)value forKey:(NSString *)defaultName
{
	[[NSUserDefaults standardUserDefaults] setObject:value forKey:defaultName];
}

- (void)removeDefaultObjectForKey:(NSString *)defaultName
{
	[[NSUserDefaults standardUserDefaults] removeObjectForKey:defaultName];
}

- (void)registerDefaultObjects:(NSArray *)objects forKeys:(NSArray *)keys
{
	[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjects:objects forKeys:keys]];
}

@end
```

Cordialement


----------



## oZen (23 Octobre 2008)

Comme jannold2, j'aimerais partager une variable entre plusieurs applescripts. J'ai bien noté la réponse de Didier Guillion, mais n'y a t'il pas une solution en applescript "pur" ?

Merci beaucoup d'avance, je m'arrache un peu les cheveux là...


----------



## tatouille (26 Octobre 2008)

Didier Guillion a dit:


> AppleScript a beaucoup de probleme avec les variables globales.
> Personnellement j'utilise les "keys" :
> 
> set xxx to (call method "defaultObjectForKey:" with parameter "xxx") as yyy
> ...



tu peux aussi travailler avec ton application delegate si tu veux storer des objets globaux

id AppDelegate = (id <NSApplicationDelegate>)[[NSApplication sharedApplication] delegate];

....

if ([[myAPP class] 
             instancesRespondToSelectorselector(method]) {
            [myAPP
             performSelectorselector(method withObject:self];
        }


----------



## ceslinstinct (28 Octobre 2008)

oZen a dit:


> Comme jannold2, j'aimerais partager une variable entre plusieurs applescripts. J'ai bien noté la réponse de Didier Guillion, mais n'y a t'il pas une solution en applescript "pur" ?
> 
> Merci beaucoup d'avance, je m'arrache un peu les cheveux là...


Bonjour

Property en ASS n'est pas mémorisé comme avec AS (il me semble) quand on quitte l'application.

J'avais lue (ça doit dater de Panther) qu'il suffit d'écrire les variables a mémoriser dans un fichier texte et d'aller les modifier ou les chercher suivant la demande.

Si tu ne connait pas d'autres languages qu'AS, c'est à tester.

@+


----------

