Re: [Lazarus] Windows API calls and german Umlauts
Am 09.03.2016 um 14:16 schrieb Mattias Gaertner: On Wed, 9 Mar 2016 13:04:50 +0100 "John Landmesser"wrote: Hi, if i call a windows API function for special folder, like: uses ... shlobj; var AppDataPath: Array[0..MaxPathLen] of Char; begin SHGetSpecialFolderPath(0,AppDataPath,CSIDL_STARTUP,false); end; I get on a german localized Windows XP a path containing "Startmenü", but the "ü" is "?" in the resulting string. Howto convert the chars in AppDataPath to get the "Umlauts" correct? According to msdn SHGetSpecialFolderPath is not supported by Microsoft. Instead, use ShGetFolderPath. Unit LazFileUtils has already a more sophisticated implementation for UTF8. I added function SHGetFolderPathUTF8(ID : Integer) : String; Mattias -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus that's why opensource is unbeatable: asked a question at 14:00 h, got a new function in Lazarus at 14:15 h Thanks Mattias and all people involved! -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] Windows API calls and german Umlauts
On Wed, 9 Mar 2016 13:04:50 +0100 "John Landmesser"wrote: > Hi, > > if i call a windows API function for special folder, like: > > uses > ... > shlobj; > > var > AppDataPath: Array[0..MaxPathLen] of Char; > begin > SHGetSpecialFolderPath(0,AppDataPath,CSIDL_STARTUP,false); > end; > > I get on a german localized Windows XP a path containing > "Startmenü", but the "ü" is "?" in the resulting string. > > Howto convert the chars in AppDataPath to get the "Umlauts" correct? According to msdn SHGetSpecialFolderPath is not supported by Microsoft. Instead, use ShGetFolderPath. Unit LazFileUtils has already a more sophisticated implementation for UTF8. I added function SHGetFolderPathUTF8(ID : Integer) : String; Mattias -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] Windows API calls and german Umlauts
On Wed, 9 Mar 2016, John Landmesser wrote: Hi, if i call a windows API function for special folder, like: uses ... shlobj; var AppDataPath: Array[0..MaxPathLen] of Char; begin SHGetSpecialFolderPath(0,AppDataPath,CSIDL_STARTUP,false); end; I get on a german localized Windows XP a path containing "\Startmenü\", but the "ü" is "?" in the resulting string. Howto convert the chars in AppDataPath to get the "Umlauts" correct? Use the W variant of the call, and user widechar. var AppDataPath: Array[0..MaxPathLen] of WideChar; begin SHGetSpecialFolderPathW(0,AppDataPath,CSIDL_STARTUP,false); Then convert to UTF8 using UTF8Encode() if you want to display it in a LCL application. Michael.-- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
[Lazarus] Windows API calls and german Umlauts
Hi, if i call a windows API function for special folder, like: uses ... shlobj; var AppDataPath: Array[0..MaxPathLen] of Char; begin SHGetSpecialFolderPath(0,AppDataPath,CSIDL_STARTUP,false); end; I get on a german localized Windows XP a path containing "\Startmenü\", but the "ü" is "?" in the resulting string. Howto convert the chars in AppDataPath to get the "Umlauts" correct? Thanks!! -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus