Funkcje i tablice w Pascalu

0

Mam zasadniczy problem. Pewnie to jakiś banał, ale nie mogę tego rozwiązać.
W sumie to trochę skomplikowane. Mam kod jakiejś funkcji, która wczytuje dane z pliku tekstowego i umieszcza je w tablicy. Dodatkowo tablicy ma własny typ danych, tj:

type 
dane = record
x:integer;
y:integer;
z:integer;
end;
Var tab:array[1..10] of dane;
begin

Function a(var yyy);
{xxx}
end;
end.

Tak to wygląda. "xxx" oznacza właściwą treść funkcji, jednak jest to niepotrzebne. Zapisuje ona do tablicy dane z pliku. "yyy" to właśnie miejsce problemu;)
I do tego momentu wszystko pięknie działa. Jednak tą funkcję i ten typ danych przerzuciłem do osobnej biblioteki i teraz mam problem jak użyć takiej funkcji, tzn. ona ma pracować na oryginalnej tablicy z programu. Mówiąc prościej. Po wykonaniu tej funkcji oryginalna tablica z programu powinna być wypełniona danymi.
I teraz jak to zrobić ? co powinno być tam wpisane ? Mam na myśli "nagłówek" (czy to się tak nazywa ?:/) funkcji. i w bibliotece i przy używaniu tej funkcji w programie.

0

Może tak ?

type 
   dane = record
   x:integer;
   y:integer;
   z:integer;
   end;

<b>   TmyArr = array[1..10] of dane;</b>

////////////

Function a(<b>ATab : TmyArr</b>);
begin
{costam}
end;
</quote>
0

NIe bardzo rozumiem sensu całości. Hmmm..
Ja mam u siebie w bibliotece taki zapis i to się elgencko kompiluje.

type dane = record
x:integer;
y:integer;
z:integer;
end;

procedure laduj(var tab:array of dane);
{...}

"tab" to nie nazwa ogólna tablicy, tylko tej właściwej z programu. Mówiąc inaczej, jeśli we właściwym programie tablica nie będzie się tak nazywać to funkcja nie powinna działać.

I to wszystko do tego momentu działa idealnie.
Teraz pytam tylko o zapis w programie

var tab:array[1..10] of dane;
/////

procedure laduj(XXX);
{...}

I to jest wszystko. Co powinno być zamiast tych "XXX". Oczywiście typ "dane" jest zdeklarowany w bibliotece i już we właściwym programie go nie ma.

0

Coś się plączesz. Dajesz działający przykład, który się wg. ciebie kompiluje, a za chwilę się pytasz o dokładnie to samo.

Przykład kol. Decho się trochę skaszanił, podaję poprawiony:

type 
   dane = record
     x:integer;
     y:integer;
     z:integer;
     // a dlaczegoby nie "x,y,z:integer;"?
   end;

   TmyArr = array[1..10] of dane; // tutaj tworzymy nowy typ


Function a(ATab : TmyArr); // i tu z niego korzystamy.
begin
0

No tak, tylko to jest zapis w bibliotece czy we właściwym programie ? Jak widzę definicję nowego typu to rozumiem, że biblioteka, a ja chcę wiedzieć jak to zapisać w programie. Tak jak mówiłem. Żeby funkcja z biblioteki pracowała na oryginalnej tablicy z programu.

0

Mam. Udało się. Tak jak myślałem. Trzeba było wpisać tylko samą nazwę tablicy, nic więcej, a nie kombinować;) Program działa idealnie, ma kilkanaście linijek, a reszta w bibliotece;)

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