Страница 1 из 1
Доступ к элементу строки (извиняюсь если было)
Добавлено: 16.12.2008 13:49:51
borispr
Не могу сформулировать это для поиска поэтому возможно спрошу не в первый раз
В Дельфи
S := '123';
S[1] = '1'
Во FreePascal 2.2.2
S := '123';
S[1] = '2'
Это лыжи не едут или я дурак? Может опции надо какие-то выставить, чтобы была совместимость с Дельфи?
Re: Доступ к элементу строки (извиняюсь если было)
Добавлено: 16.12.2008 14:45:45
Vadim
А S у Вас какого типа? У меня показывает именно так как надо: S[1] = '1'.
Re: Доступ к элементу строки (извиняюсь если было)
Добавлено: 16.12.2008 16:08:36
borispr
Тип просто string
Нарыл на сайте текст
Изменения типа string в режиме Delphi. В версии 2.2.0 по умолчанию используется директива компилятора {$h+} вместо {$h-}
У меня начале юнита стояло {$mode objfpc}{$H+}
Как я понял H+ включает длинные строки
Убрал опцию, S[1] стало равно '1', но при этом строки стали короткими.
Re: Доступ к элементу строки (извиняюсь если было)
Добавлено: 16.12.2008 21:24:17
gyunter
Код: Выделить всё
var
s:string;
begin
s:='123';
writeln('S[1]=',S[1])
end.
Так выводит S[1]=1
Re: Доступ к элементу строки (извиняюсь если было)
Добавлено: 17.12.2008 12:07:00
borispr
Действительно, в самой программе оказалось все правильно! Косяк оказался в другом - я 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'