azsx писал(а):то вы увидите эту проблему с 0 байтом. Насчет остального вы правы, в делфи индекс строки начинается с 0, в лазарус с 1.
bormant сделал Вам правильный код, который одновременно удалял 0 из random и при этом в Result всё было от 1. Если Вам не нравится отдельная функция, то можете его код вставить между for begin end; Но суть примера была именно из-за Вашей ошибки у Вас иногда в коде был запрос string[0], т.к. Вы брали его из окончания string. bormant - это увидел когда я написал про stroka[0] и bormant сделал Вам правильный код. Но Вы ещё не поняли своей ошибки. Поэтому: читайте выше более внимательно.
bormant писал(а):а обосновать? чем правильнее-то?
SetLength(Result,n+1)
Когда Вы говорите SetLength(someArray, 1), то можете записать только someArray[0] := 333. А в цикле, для array при n:=10 говорите for i:=0 to n-1 do...
По аналогии я решил что правильнее добавить 1 и в string, т.к. счёт начинается с 1, но не факт что, SetLength для array работает идентично SetLength для string. Так что, скорее всего Акелла промахнулся.
А касаемо else Result:=''; - это вроде как "дело вкуса", но зачем Вы делаете Result:='' в начале кода? Он именно, там, так важен или же это просто заглушка на случай если ...?
.