Delphi 2009 изменил свой строковый тип, чтобы использовать 2 байта для представления символа, что позволяет поддерживать наборы символов Unicode. Теперь, когда вы получаете sizeof (string), вы получаете length (String) * sizeof (char). Sizeof (char) в настоящее время составляет 2.
Что меня интересует, так это то, знает ли кто-нибудь способ, с помощью которого можно по каждому символу узнать, поместится ли он в один байт, например, узнать, является ли символ ascii или Unicode.
В первую очередь мне интересно знать, сколько байтов будет израсходовано строкой до того, как моя строка попадет в базу данных (oracle, Documentum).
Нам нужно иметь возможность установить ограничения заранее и в идеале (поскольку у нас большая установленная база) без необходимости изменять базу данных. Если строковое поле допускает 12 байтов, в delphi 2009 строка длиной 7 всегда будет отображаться как использующая 14 байтов, даже если после того, как она попала в базу данных, она будет использовать только 7, если ascii, или 14, если двухбайтный, или где-то посередине, если смесь.