SAIL - ReplaceIn
Publicado: Lun Ago 07, 2017 2:43 pm
Hi, napisałem funkcję która podmienia wartość w podanym miejscu, w dowolnej tablicy wielowymiarowej.
Przykład użycia:
Wyświetli [ [1, 2], [ [15, 3], [1, [11, 88]], [3, 4]] ].
Código: Seleccionar todo
// arr - tablica
// pos - tablica pozycji
// value - nowa wartość do wstawienia
Export Function ReplaceIn(arr, pos, value);
var i, tmp, s_arr;
begin
if pos < 1 then
exit;
if pos = 1 then
result := Replace(arr, pos[1], value)
else
begin
tmp := arr;
s_arr := [tmp];
for i = 1 to pos-1 do
begin
tmp := tmp[pos[i]];
s_arr := s_arr ^ [tmp];
end;
tmp := Replace(tmp, pos[pos], value);
s_arr := Replace(s_arr, s_arr, tmp);
for i = s_arr downto 2 do
begin
tmp := Replace(s_arr[i-1], pos[i-1], s_arr[i]);
s_arr := Replace(s_arr, i-1, tmp);
end;
result := s_arr[1];
end;
End;
Código: Seleccionar todo
t := [ [1, 2], [ [15, 3], [1, [11, 12]], [3, 4]] ];
t := ReplaceIn(t, [2, 2, 2, 2], 88);
display_strings := t;