Zdravím.
Podíval jsem se na ten tvůj případ. Máš pravdu, pokud je v parametru
předávání dat VAR, pak je vše v pořádku. Pokud tam není, hlásí to chybu
STACK OVERRFLOW ERROR.
Vysvětlení je jediné - přetečení zásobníku. Pokud při předávání parametru
není VAR, pak si procedúra při jejím zavolání vytváří v operační paměti
kopii proměnné. Máme ji tedy v paměti 2x - originál a kopii. A důsledek je
právě v této hlášce.
Jak z toho ven?
Já osobně bych vytkl předávání takové sposty dat najednou. Procedúru
bych umístil v cyklu a předával bych jen jednu větu.
Tedy:
FOR I:= Min To Max
Do Begin
Vypis (Mat[I]);
........
End;
Ale jako příklad, že se to takto nedá dělat, je to dobré.
Přeji mnoho úspěchů
Ing. Miroslav Tesař
tesar@zoznam.sk
----- Original Message -----
From: <bigmartin@centrum.cz>
To: <servis-internet@nawebu.cz>
Sent: Friday, April 26, 2002 8:47 PM
Subject: PASCAL:HELP
> dobry den
> potrebuju helfnout s pascalem
> nevim proc mi tenhle programek nejde (runtime error):
>
> program e;
> type rec=record
> cislo:0..200;
> misto:string;
> end;
>
> matice=array[1..200] of rec;
>
> var mat:matice;
>
> procedure vypis({var} m:matice);
> begin
> writeln('hello');
> end;
>
> begin
> vypis(mat);
> readln;
> end.
>
> jedna se prave o ten var, pokud je totiz matice pouze vstupni
> pak mi cely program haze error
> pokud vstupne-vystupni je vse OK
>
> v tom vsak problem nevidim - nebot pokud matice bude pouze
> vstupni a
> umazneme z typu rec napr misto, pak cely prog jede bez problemu
>
> napada me pouze nejake omezeni ze strany pameti, ale jelikoz o
> tom nevim
> tak mi prosim poradte
>
> diky moc
>
> martin sznapka
>
> --------------------
> ZDARMA a RYCHLÉ zasílání SMS z www.posliSMS.cz
>
>
>
>
>
> --
> -- Konference magazinu Internet -------------- servis-internet --
> -- Pravidla: http://pravidla.kab.cz ------ FAQ: http://faq.kab.cz
> -- Archiv a instrukce pro odhlaseni: http://internet.nawebu.cz
>
This archive was generated by hypermail 2.1.2 : 26. 04. 2002, 22:34 CEST