Mike, that is cool, but I have a warning. All those hard coded 48's are a crash waiting to happen as they define the size of the buffer. Use a variable instead defined one place and use it instead of the hard coded numbers. Set var vBufferSize INT = 48
ALso fill lplcdata with one extra zero. SET VAR lplcdata TEXT = (SFIL((CHAR(0)),(.vBuffersize + 1))) It assures that your string in memory will always be properly zero terminated, just to be safe. Dennis McGrath -----Original Message----- From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of MikeB Sent: Thursday, March 06, 2008 2:06 PM To: RBASE-L Mailing List Subject: [RBASE-L] - How To: Get the Users Country Did you know you can get the Users Country by calling the GetLocaleInfo API using the NEW DLCall function? Here's how: { only call STDCALL for this function ONCE per session Fill the lplcdata variable with nulls the length of our pointer PTR to it passed to the function The function will populate the pointer variable with the country name } STDCALL function 'GetLocaleInfoA' ALIAS 'GetLocaleInfo' (integer, ptr text (48), integer, integer) : integer SET VAR lplcdata TEXT = (SFIL((CHAR(0)),48)) SET VAR USER_DEFAULT INTEGER = 1024 SET VAR sengcountry INTEGER = 4098 -- English name of country SET VAR SENGLANGUAGE INTEGER = 4097 -- English name of language SET VAR SNATIVELANGNAME INTEGER = 4 -- native name of language SET VAR SNATIVECTRYNAME INTEGER = 8 SET VAR i INTEGER = 0 SET VAR i = (dlcall('Kernel32','GetLocaleInfo', 48, lplcdata, SNATIVECTRYNAME, USER_DEFAULT)) PAUSE 2 USING .lplcdata RETURN

