On 04.10.2013 22:14, stdreamer wrote:
On 04/10/2013 10:44 μμ, Sven Barth wrote:
On 04.10.2013 21:15, stdreamer wrote:
On 04/10/2013 9:08 μμ, Sven Barth wrote:

The main difference is that cwstring uses the Widestring manager of the
system's C library while fpwidestring is a full Pascal Widestring
manager.


So by using cwstring instead of fpwidestring am I safe to assume that
the widestrings used and returned by DLLs/SOs will work correctly even
when they are used as results in functions (taking in to account that
widestrings are not ref counted in the first place of course)?

No. That one has nothing to do with any Widestring manager, but with the
memory manager. The purpose of the widestring manager is to convert from
strings of one encoding to another encoding.

Please note that on Windows WideStrings will work across DLL boundaries,
because they are managed by Windows. This is not the case on other
targets though as there WideString = UnicodeString and UnicodeStrings
have the same restrictions as AnsiString.

Regards,
Sven

Oh well I was kind of hopping that a cwstrings will have its own memory
manager as well but it was to good to be true in the first place thanks
for the input.

If you want to share Unicode- or AnsiStrings between library and application you need to use a common memory manager. For example you could use unit "cmem" as one of the first units of both programs. It will work on Unix based systems and *should* work on Windows ones as well.

Regards,
Sven

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

Reply via email to