Страница 1 из 1

Доступ к элементу строки (извиняюсь если было)

СообщениеДобавлено: 16.12.2008 14:49:51
borispr
Не могу сформулировать это для поиска поэтому возможно спрошу не в первый раз

В Дельфи
S := '123';
S[1] = '1'

Во FreePascal 2.2.2
S := '123';
S[1] = '2'

Это лыжи не едут или я дурак? Может опции надо какие-то выставить, чтобы была совместимость с Дельфи?

Re: Доступ к элементу строки (извиняюсь если было)

СообщениеДобавлено: 16.12.2008 15:45:45
Vadim
А S у Вас какого типа? У меня показывает именно так как надо: S[1] = '1'.

Re: Доступ к элементу строки (извиняюсь если было)

СообщениеДобавлено: 16.12.2008 17:08:36
borispr
Тип просто string

Нарыл на сайте текст
Изменения типа string в режиме Delphi. В версии 2.2.0 по умолчанию используется директива компилятора {$h+} вместо {$h-}


У меня начале юнита стояло {$mode objfpc}{$H+}
Как я понял H+ включает длинные строки
Убрал опцию, S[1] стало равно '1', но при этом строки стали короткими.

Re: Доступ к элементу строки (извиняюсь если было)

СообщениеДобавлено: 16.12.2008 22:24:17
gyunter
Код: Выделить всё
var
s:string;
begin
s:='123';
writeln('S[1]=',S[1])
end.


Так выводит S[1]=1

Re: Доступ к элементу строки (извиняюсь если было)

СообщениеДобавлено: 17.12.2008 13: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'