Ho cercato in giro e non ho trovato un modo semplice per ottenere le impostazioni delle Preferenze di Sistema da JSL. Sto sviluppando su un Mac – (JMP 14 e 15) – ma mi piacerebbe sapere come farlo anche su Windows. La cosa più vicina che ho ottenuto è stata una discussione su come ottenere il codice della lingua:
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 Corto 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" );
Quindi il codice deve invece assomigliare a:
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.
Pertanto, l'insieme di argomenti validi dipende dall'impostazione dell'utente e il codice deve prima leggere questa impostazione per determinare quale formato utilizzare.
Come soluzione alternativa, sono stato in grado di raccogliere le informazioni sulle impostazioni da un comando Unix di sistema e analizzarle di conseguenza:
// 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 );
);Tuttavia, questo sembra un po' goffo e immagino che ci sia un modo più semplice. È evidente che il motore JMP può leggere questa impostazione poiché presenta un insieme molto diverso di formati di ora nella finestra di dialogo Proprietà colonna in base a questa impostazione, come mostrato di seguito (presentando qui solo le opzioni del trattino):

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?