Zitat von Felipe Monteiro de Carvalho <felipemonteiro.carvalho@gmail.com>:

> Hello,
>
> There is already another thread about that, but the thread got too
> long, and I would like to make a concrete proposal about unicode file
> routines.
>
> It looks simple to me, there are just 2 ways to go, either utf-8 or
> utf-16. Correct me if I am wrong, but I beliave that FPC developers
> prefer utf-16, so we can have a widestring version of every routine in
> the RTL which involves filenames.
>
> So let me start with a concrete example:
>
> http://www.freepascal.org/docs-html/rtl/system/assign.html
>
> We would need to add a:
>
> procedure Assign(
>   var f: ;
>   const Name: widestring
> );
>
> Also for all this routines:
>
> http://www.freepascal.org/docs-html/rtl/sysutils/filenameroutines.html
>
> Under Windows it can be implemented like this with Windows 9x support:
>
> procedure AnyFileRoutineInWin32(AFileName: widestring);
> begin
>  if UnicodeEnabledOS then SomeWin32APIW()
>  else AnsiToWideString(SomeWin32ApiA())
> end;

But what about all existing code?
For example the FCL?
How will TStringList.LoadFromFile be converted?


> One can initialize UnicodeEnabledOS by reading the operating system
> version and the operating system type NT/9x very easily.
>
> Under Windows 9x we won't support true unicode filenames, but this
> doesn't matter, because the operating system doesn't support them
> anyway. The widestring routines will keep working under Windows 9x for
> most code.
>
> This method is used with great success in the LCL. Extended information here:
>
> http://wiki.lazarus.freepascal.org/LCL_Unicode_Support#Guidelines

Mattias


