Wątek przeniesiony 2017-04-21 19:53 z Delphi i Pascal przez furious programming.

Tablica dwuwymiarowa jako parametr procedury

0

Witam, zaczynam dopiero z delphi i nie wiem jak przekazać tablicę wielowymiarową której rozmiaru nie znam w momencie przekazania. Dalej w programie używam jej jako tablicy NxN.

procedure c (n         : Integer;
                                x,f       : Array of Extended;
                                f1x0,f1xn : Extended;
                                var a     : Array of Array of Extended;  <----------------- o tą konkretnie chodzi
                                var st    : Integer);

dostaję takie błędy

[dcc32 Error] CSPLCNS.pas(9): E2029 Identifier expected but 'ARRAY' found
[dcc32 Error] CSPLCNS.pas(112): E2016 Array type required
1

array of ... przekazane jako parametr jest tzw. open array i działa z lekka inaczej niż Ci się wydaje (poczytaj sobie o tym).
To, o co Ci chodzi, wymaga wcześniejszego utworzenia typu:

Type TMyArray = Array of Array of Extended;

Btw, twórz sensowne identyfikatory - n czy c naprawdę nikomu nic nie mówią.

0

Ok dzięki już mam :)

0

Przy okazji dodam - jeśli o pascalowską nomenklaturę chodzi - że to jest tablica wielowymiarowa:

type
  TMyArray = array [0 .. N, 0 .. M] of Extended;

a poniższa to nie tablica dwuwymiarowa, a tablica tablic:

type
  TMyArray = array of array of Extended;

Różnica jest spora - tablica wielowymiarowa ma zawsze stały rozmiar oraz zawsze jest prostokątna, a ta druga niekonicznie. Bo może posiadać wiersze (lub kolumny - zależy co przyjąć za drugi wymiar) o różnej liczbie komórek, a jej rozmiar może być modyfikowany podczas działania programu.

Oba typy zapewniają strukturę dwuwymiarową, jednak dają różne możliwości.

0

a jeszcze takie jedno pytanie, jak wywołać funkcję którą mam zaimplementowaną w innym pliku? muszę ją gdzieś deklarować?

0

Musisz dodać do sekcji uses nazwę modułu, w którym owa funkcja się znajduje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1