Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-pascal / 2016-10

string to widestring : what are the difficulties ?

4 messages · 4 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Sven Barth

Am 08.10.2016 22:48 schrieb "Ched" <

the stack sized used by a Shortstring is Declared length + 2 . Why not Declared length + 1 ?

1 Byte length and a zero byte to allow easy conversion to PChar.

Is it easy to change software codes using strings encoded in CP437 to

widestring ? I hope so as widestring has no refcount and so should behave like string about copy/deep copy.

First WideString as such only exists on Windows for all other platforms it's am alias of UnicodeString which like AnsiString is reference counted. Also it's the standard Unicode string type inside the RTL and not WideString (precisely due to the reference count). Second the code changes themselves should be neglectable, but you'll need to check that your files specify the correct codepage or that you store your files as UTF-8 as otherwise string constants might have unexpected content.

Regards,
Sven

Reply by email

Jonas Maebe
to Sven Barth
Sven Barth wrote 8 lines
Am 08.10.2016 22:48 schrieb "Ched" < >: > In http://www.freepascal.org/docs-html/ref/refsu14.html#x37-400003.2.8 > , the stack sized used by a Shortstring is Declared length + 2 . Why not > Declared length + 1 ? 1 Byte length and a zero byte to allow easy conversion to PChar.

That is incorrect. Shortstring stringconstants are stored like that in the constant data section so they can be used both for assigning to shortstrings and to pchars, but shortstring variables/fields themselves are never null-terminated by the compiler/RTL.

So there is in fact an error in the documentation: it should be length + 1.

Jonas

Reply by email

Michael Van Canneyt
to Jonas Maebe
Jonas Maebe wrote 16 lines
On 09/10/16 08:50, Sven Barth wrote: > Am 08.10.2016 22:48 schrieb "Ched" > < > >: >> In http://www.freepascal.org/docs-html/ref/refsu14.html#x37-400003.2.8 >> , the stack sized used by a Shortstring is Declared length + 2 . Why not >> Declared length + 1 ? > > 1 Byte length and a zero byte to allow easy conversion to PChar. That is incorrect. Shortstring stringconstants are stored like that in the constant data section so they can be used both for assigning to shortstrings and to pchars, but shortstring variables/fields themselves are never null-terminated by the compiler/RTL. So there is in fact an error in the documentation: it should be length + 1.

That has already been corrected.

Michael.

Reply by email