В чем ошибка при работе с динамическими массивами(Строю снежинку Коха)? На статическом всё работало. 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]
