Не могу сформулировать это для поиска поэтому возможно спрошу не в первый раз
В Дельфи
S := '123';
S[1] = '1'
Во FreePascal 2.2.2
S := '123';
S[1] = '2'
Это лыжи не едут или я дурак? Может опции надо какие-то выставить, чтобы была совместимость с Дельфи?
Доступ к элементу строки (извиняюсь если было)
Модератор: Модераторы
А S у Вас какого типа? У меня показывает именно так как надо: S[1] = '1'.
Тип просто string
Нарыл на сайте текст
У меня начале юнита стояло {$mode objfpc}{$H+}
Как я понял H+ включает длинные строки
Убрал опцию, S[1] стало равно '1', но при этом строки стали короткими.
Нарыл на сайте текст
Изменения типа string в режиме Delphi. В версии 2.2.0 по умолчанию используется директива компилятора {$h+} вместо {$h-}
У меня начале юнита стояло {$mode objfpc}{$H+}
Как я понял H+ включает длинные строки
Убрал опцию, S[1] стало равно '1', но при этом строки стали короткими.
Действительно, в самой программе оказалось все правильно! Косяк оказался в другом - я S[1] смотрел через Evaluate в Lazarus
С опцией H+
Expression: S
Result: 0x80624bc '123'
Expression: S[1]
Result: 50 '2'
Без опции
Expression: S
Result: '123'
Expression: S[1]
Result: 49 '1'
С опцией H+
Expression: S
Result: 0x80624bc '123'
Expression: S[1]
Result: 50 '2'
Без опции
Expression: S
Result: '123'
Expression: S[1]
Result: 49 '1'
