1.2.25. $H или $LONGSTRINGS : Использовать AnsiStrings

На верх  Назад  Вперёд

Если указана директива {$LONGSTRINGS ON}, то ключевое слово String (не длина спецификатора) будет обрабатываться как AnsiString, и компилятор будет обрабатывать соответствующую переменную как ansistring, и будет генерировать соответствующий код. Это переключатель связан с опцией командной строки -Sh.

По умолчанию использование ansistrings отключено, что соответствует директиве {$H-}. Системный модуль откомпилирован без ansistrings, все его функции принимают аргументы shortstring. То же справедливо для всех модулей RTL, кроме модуля sysutils, который откомпилирован с ansistrings.

Однако оператор {$MODE} по умолчанию влияет на значение директивы {$H}: директива {$MODE DELPHI} подразумевает включение AnsiString {$H+}, все другие режимы отключают AnsiString. В результате вы всегда должны помещать директиву {$H+} после директивы режима, если хотите включить AnsiString. Это поведение можно изменить, кроме некоторых старших версий Free Pascal.