Ваша временная строка вывода out_s никогда не инициализируется. Кроме того, вы полагаете, что длина входной строки составляет 11 символов. Что произойдет, если это всего 10 символов? Тогда вы получите доступ к элементу, который не существует.
Не важно, но переменная 'ls' не нужна. Либо сделайте его постоянным, либо используйте голые значения 11 в вашем коде.
Было бы лучше, чтобы написать функцию следующим образом:
Function Reverse (const a: string): string;
var
i: integer;
begin
result:= '';
for i:= length (a) downto 1 do
result:= result + a[i]
end;
Альтернативный способ приведен ниже. Этот код будет быстрее, так как нет конкатенации строк, но он не слишком интуитивно понятен и может работать только в Delphi.
Function Reverse (const a: string): string;
var
i, j: integer;
P: PChar;
begin
SetLength (Result, Length (a));
P:= Pchar (Result);
j:= 0;
for i:= length (a) downto 1 do
begin
p[j]:= a[i];
inc (j)
end;
end;
Используйте отладчик. –
Я не переводил хорошо, потому что, когда я пишу, в а есть разные знаки, а не слова ... – CrashDown