Sven Barth schrieb:
> If you change do_open to support Unicode you should do this for the other functions (e.g. write,
> read) as well so that only the *W functions are used for them.

I think read/write only work on the file handle and don't use the file name.
So no changes are needed here (I think).
But of course there are other functions that need changing, for example

Assign
Reset
Rewrite
FindFirst(File)
Rename
some others.


> Also you need to keep in mind that do_open is used by platform independant code > so you would need to change the declarations/handling for all other platforms as well.

Yes. It can be a can of worms. ;-)
Although, as said: Only very few functions realy act on the file name.
Most use the file handle only (which will not change).


> Also you need to change the declaration of Assign as this expects a Short-/AnsiString.

I think it should be declared as "UnicodeString" or "String" so that other string types that
are handed over are converted automatically.


> Also I don't know whether the Unix users would be happy if we'd push UnicodeString upon them or whether they'd prefer AnsiString(CP_UTF8).

Yes, this is a general question:
What kind of string type should be used within Free Pascal mainly?
I am not sure how this is all affected by
http://wiki.freepascal.org/FPC_Unicode_support#Roadmap_of_RTL_Unicode_support_with_UnicodeString


> In the end maybe it should be AnsiString(CP_UTF8) for Unix systems and UnicodeString > for Windows systems and AnsiString(CP_SCP) (the current string) for the other systems, > so especially the platform independant code needs to be adjusted to support all three > cases without problems (which might not need that much work in the end...).

As far as I know currently all platforms share the same filerec/textrec definitions (which is an array of bytes now). If that is changed then it would be changed for all platforms. But it can be changed to generic string type too. I am not so sure what this actually means when the type differs from one platform to the other. For example, I have to use a "pointer to widestring" for CreateFileW for Windows. So I need to convert to a null terminated widestring from the existing string type and this conversion must work under all circumstances.

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to