Jak przekazać do funkcji/procedury macierz otwartą(o nie określonych rozmiarach).
Jak zwrócić wynik w postaci macierzy(rozmiar jest ustalany w funkcji).
nie wiem czy o to ci chodzi.. ale spróbuje pomóc.
TPunktMacierzy = record
dana : TJakisTyp;
end;
TMacierz = record
// jeżeli chodzi o macierz dwuwymiarową
punktMacierzy : array of array of TPunktMacierzy;
end;
function funkcja(macierz :TMacierz) : TMacierz;
begin
// na przykład..
result.punktMacierzy.dana := macierz.punktMacierzy.dana +1;
// operacje...
end;
<font color="blue">Jak zwrócić wynik w postaci macierzy(rozmiar jest ustalany w funkcji).</span>
Skorzystaj z tablic wielowymiarowych.
Jak zwrócić wynik w postaci macierzy(rozmiar jest ustalany w funkcji).
Użyj dwuwymiarowych tablic dynamicznych ale deklarowanych typem. W przeciwnym wypadku Delphi potraktuje je jako tablice otwarte (otwarte parametry tablicowe) i nie pozwoli zmienić wielkości wewnatrz procedury.
Przykład dobry:
type TMacierz=array of array of double;
procedure UstalRozmiar(a : integer; macierz : TMacierz);
begin
SetLength(macierz, a, a);
end;
Przykład zły
procedure UstalRozmiar(a : integer; macierz : array of array of double);
begin
SetLength(macierz, a, a); //nie skompiluje się
end;