On 06.03.2019 22:21, Bart wrote:
Using UTF8String in TRegistry instead of String forces users to consider the fact that returned strings are Utf8Encoded now always, even if they (probably most of them) do not need that because what they retrieve from and put in the registry fits into their codepage. And somebody out there will have code that checks if ReturnedString[Index] = #$E4 ("รค" in my codepage), and have the sourcefile in ANSI (system codepage), and now this will fail, because that character will now be made up of 2 bytes.
If you declare a function result as utf8string instead of string (ansistring) then automatic conversion will be performed when you assign the result of the function to a variable of type string (ansistring). You will gen a classic 1-byte per character string if your current encoding is 1-byte encoding.
I mentioned this earlier. Just check this. Change the declaration to: function TRegistry.ReadString(const Name: utf8string): utf8string; Yuriy. _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel