В чем ошибка при работе с динамическими массивами(Строю снежинку Коха)? На статическом всё работало. Lazarus

введите сюда описание изображения

Вижу, что ругается на типы данных, но как это теперь заставить работать без понятия

procedure L_exec1(dl,teta:real; source,newF:string; n:integer; cnv: TCanvas);
// Исполнитель.
//dl - длина шага черепашки; source - исходно; newF - правило
var i,j,k,ks,knewF,knewc,kc: integer; work,command: array of integer;
begin
  ks:= length(source); //Число комманд в "Исходно"
  knewF:= length(newF); //Число команд в "Правило"
  kc:= 0; //Число команд на исполнение после n итераций
  SetLength(command, ks);
  for i:=0 to n do
  //Формируем набор команд на i-ой итерации
  begin
    if i = 0 then //Команды из "Исходно"
      for j:=1 to ks do
      begin
        command[j-1]:= source[j];kc := kc + 1;
      end
    else
    begin //Команды из "Правило"
      knewc:= 0;
      SetLength(work, ks);
      for j:=1 to kc do //Формируем work
      begin
        if command[j-1]='F' then
          for k:=1 to knewF do
          begin
            knewc:= knewc+1;
            work[knewc-1]:= newF[k];
          end
         else
           begin
             knewc:=knewc+1;
             work[knewc-1]:=command[j-1];
           end;
      end;
    end;
    if i>0 then //После применения правила на i итерациях
    begin
      kc:= knewc;
      SetLength(command, kc);
      for j:=1 to kc do //Копируем команды
        command[j-1]:= work[j-1];
    end;
  end;
  //Исполнитель команд
  for i:=1 to kc do
  begin
    if command[i-1] = 'F' then t_F(dl, cnv);
    if command[i-1] = '+' then t_plus(teta);
    if command[i-1] = '-' then t_minus(teta);
  end;
end;

Ответы (1 шт):

Автор решения: Zhihar

я уже подзабыл паскаль, такой вопрос -

вы записываете в ячейку массива целых чисел букву - так можно? или надо все таки преобразовать тип предварительно?

source:string;
command: array of integer;

command[j-1]:= source[j]
→ Ссылка