J'ai cherché et je n'ai trouvé aucun moyen simple d'obtenir les paramètres de préférences système à partir de JSL. Je développe sur un Mac – (JMP 14 & 15) – mais j'aimerais également savoir comment procéder sous Windows. Le plus proche que j'ai eu était une discussion sur la façon d'obtenir le code de langue :
System Service( Get Language Code );
System Service sounds like and interesting function, but I couldn't find any documentation on it. I'm looking for a general solution but am immediately interested in finding the date format, (per setting in System Preferences ➔ Language & Region ➔ Advanced... ➔ Dates ➔ Short), as shown below:

The Court date delimiters are normally set to slashes by default, but were modified by me to dashes in the image above. The specific issue I find with changing this setting is that it affects what arguments are valid to the Input Format function. For example, the following statement will generate a runtime error:
col << Input Format( "y/m/d h:m:s" );
Le code doit donc plutôt ressembler à :
col << Input Format( "y-m-d h:m:s" );
And the reverse it true if the user has their System Preferences set to slashes. Furthermore, with the Format function, if the wrong date string is given, there won't be a runtime error, but the relevant datetime column will ignore the format setting, and the data will be left in its raw, unintelligible form.
Ainsi, l'ensemble des arguments valides dépend du paramètre de l'utilisateur, et le code doit d'abord lire ce paramètre pour déterminer le format à utiliser.
Pour contourner le problème, j'ai pu collecter les informations sur les paramètres à partir d'une commande système Unix et les analyser en conséquence :
// implement Unix command:
// $ defaults read com.apple.mail DateCellWidthCache | grep M.d.yy
Clear Log();
// read System Preferences from 'defaults' that contains date format string.
sDefaults = Run Program(
Executable( "/usr/bin/defaults" ),
Options( { "read", "com.apple.mail", "DateCellWidthCache" } ),
Read Function( "text" )
);
//Write( sDefaults );
ss1 = Munger( sDefaults, 1, "M/d/yy" ); // check for slash style.
ss2 = Munger( sDefaults, 1, "M-d-yy" ); // check for dash style.
Show( ss1, ss2 ); Write("\!n");
If( ss1 > 0,
Write( "Using slashes.\!n");
,
/* else if */ ss2 > 0,
Write( "Using dashes.\!n");
,
/* else */
Write( "***ERROR: unrecognized date delimiter.\!n");
Write( "defaults read com.apple.mail DateCellWidthCache:\!n");
Write( sDefaults );
);Cependant, cela semble un peu maladroit et j'imagine qu'il existe un moyen plus simple. Il est évident que le moteur JMP peut lire ce paramètre car il présente un ensemble très différent de formats d'heure dans la boîte de dialogue Propriétés de colonne en fonction de ce paramètre, comme indiqué ci-dessous (présentant ici uniquement les options de tiret) :

So, my question is: Is there a simple way to get arbitrary System Preferences values (and the date format specifically) by using System Service or some other function?