Turbo Pascal - prenos premenných

Programovacie jazyky, rady, poradňa...
pishta007
Light Expert
Light Expert
Príspevky: 45
Registrovaný: 16 mar 2009, 19:57

Turbo Pascal - prenos premenných

Príspevok od používateľa pishta007 »

Zdravím Vás, neviem či sa tu nájde niekto kto sa ešte zaujíma o starý Turbo pascal, ale verím, že áno :) Potrebujem preniesť meno premennej do procedúry. Vyznelo to iste divne, preto predstavím konkrétny príklad:

Mám deklarované konštantné množiny, ktoré vyzerajú takto:

const
h_menu:array[1..4] of string =
(' NAHRÁVANIE ',
' OPERÁCIE ',
...


Vytváram z nich tabuľky nasledujúcou procedúrou, a potreboval by som za polozky dosadiť názov konštatnej množiny h_menu, resp. iné.

procedure tabulka(polozky);
...


Verím, že zainteresovaní pochopili :) Ďakujem vopred.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Turbo Pascal - prenos premenných

Príspevok od používateľa audiotrack »

rozumieme. Nerozumiem len kde je problém. Za polozky dosadiť názov konštantnej premennej. Veď si si aj napísal čo máš spraviť. Namiesto polozky napíš polozky:h_menu
metthal
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2475
Registrovaný: 26 jan 2006, 18:32
Bydlisko: Nitra / Brno

Re: Turbo Pascal - prenos premenných

Príspevok od používateľa metthal »

Ono ide o to ze pokial si dobre pamatam, pole sa nedalo standartne v Pascale prenasat ako argument funkcie. Je treba vytvorit record, v ktorom bude prave to tvoje pole a davat argument funkcii prave ten record.
pishta007
Light Expert
Light Expert
Príspevky: 45
Registrovaný: 16 mar 2009, 19:57

Re: Turbo Pascal - prenos premenných

Príspevok od používateľa pishta007 »

-=wolf=- napísal:Je treba vytvorit record, v ktorom bude prave to tvoje pole a davat argument funkcii prave ten record.
To som trochu nepochopil :D J tých polí totiž mám viac.
dykeer
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 102
Registrovaný: 02 jan 2011, 21:21
Kontaktovať používateľa:

Re: Turbo Pascal - prenos premenných

Príspevok od používateľa dykeer »

Však si ich zadeklaruj v hlavnom programe ako polia, potom by mali mať status globálnej premennej a teda nič nemusíš prenášať.
Argument procedúry daš nejaký parameter, pomocou ktorého potom v procedúre cez case dostaneš to, čo chceš....Nie je to nejaké komplikované ??? :D
Baseilos
Light Expert
Light Expert
Príspevky: 57
Registrovaný: 01 máj 2011, 2:15

Re: Turbo Pascal - prenos premenných

Príspevok od používateľa Baseilos »

Nebolo by lepsie pouzit typ enum (vymenovanie).

Prebrate z googlu:

Kód: Vybrať všetko

type
  color = (red, green, blue);
var
  a: color;
.
.
.
pishta007
Light Expert
Light Expert
Príspevky: 45
Registrovaný: 16 mar 2009, 19:57

Re: Turbo Pascal - prenos premenných

Príspevok od používateľa pishta007 »

Takže ešte raz :) Mám procedúry na vytváranie menu, hlavné menu, menu na načítanie, menu na voľbu operácií, ... A všetky sa na seba dosť podobajú. Vždy je to len tabuľka s niekoľkými položkami, samozrejme rôznymi, po ktorých sa užívateľ posúva šípkami hore a dolu, potvrdzuje enterom.

Kód: Vybrať všetko

procedure hl_menu;
var j:byte;
    e:char;
begin
readkey;
j:=1;
tabulka('             MENU             ',h_menu);
repeat
e:=#10;
if keypressed then
     begin
      e:=readkey;
      if (e=#0) then
        begin
         e:=readkey;
         if (e=#80) then
           begin
            write_all(h_menu[j],25,7+2*j,tab,15);
            j:=j+1;
            if (j>4) then j:=1;
           end;

         if (e=#72) then
           begin
            write_all(h_menu[j],25,7+2*j,tab,15);
            j:=j-1;
            if j<1 then j:=4;
           end;
        end;
     end;
write_all(h_menu[j],25,7+2*j,pasik,15);
Chcel by som vytvoriť jednu univerzálnu procedúru, ktorá by dokázala vykresliť hocijaké menu spomenuté vyššie. Teda by som potreboval namiesto h_menu dať nejaký parameter, ktorý by sa menil podľa potreby. Takisto i procedúra tabulka by dostávala ako vstupný argument nejaký parameter, ktorý by sa menil podľa toho aké menu chcem vykresliť.
metthal
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2475
Registrovaný: 26 jan 2006, 18:32
Bydlisko: Nitra / Brno

Re: Turbo Pascal - prenos premenných

Príspevok od používateľa metthal »

Par prispevkov vyssie som ti dal riesenie. Ak chces pole davat ako parameter procedure v Pascale, neuspejes. Musis to obalit recordom, v ktorom bude tvoje pole a potom davat parameter nejaku premennu toho typu tvoj_record.
pishta007
Light Expert
Light Expert
Príspevky: 45
Registrovaný: 16 mar 2009, 19:57

Re: Turbo Pascal - prenos premenných

Príspevok od používateľa pishta007 »

Fajn, ale ja tých polí mám viac. Zatiaľ sú dva, ale bude ich možno 6, alebo 7. A keď to obalím do recordu, tak TP hlási chybu. Asi nepozná v recorde vymenované pole, alebo čo.
Mám to urobené takto:

Kód: Vybrať všetko

polozky = record
                 h_menu:array[1..4] of string =
                 ('          NAHRÁVANIE          ',
                  '           OPERÁCIE           ',
                  '        O PROGRAME ...        ',
                  '            KONIEC            ');
                 nah_menu:array[1..3] of string =
                 ('         NAHRAŤ RUČNE         ',
                  '      NAHRAŤ AUTOMATICKY      ',
                  '             SPÄŤ             ');   
               end;
javatar
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6112
Registrovaný: 12 aug 2010, 14:49
Bydlisko: I don't exist at all.

Re: Turbo Pascal - prenos premenných

Príspevok od používateľa javatar »

radsej by som sa priklonil k tomuto rieseniu
dykeer napísal:Však si ich zadeklaruj v hlavnom programe ako polia, potom by mali mať status globálnej premennej a teda nič nemusíš prenášať.
Argument procedúry daš nejaký parameter, pomocou ktorého potom v procedúre cez case dostaneš to, čo chceš....Nie je to nejaké komplikované ??? :D
pokial programujes len proceduralne tak je to celkom legitimne riesenie
pishta007
Light Expert
Light Expert
Príspevky: 45
Registrovaný: 16 mar 2009, 19:57

Re: Turbo Pascal - prenos premenných

Príspevok od používateľa pishta007 »

To som už skúšal, ale nedotiahol som to do konca. Teraz ma napadlo, že ja tam fakt môžem dať case, alebo if ... then a podľa toho volať h_menu, nah_men, ... Vďaka chlapci, idem vyskúšať :)
Napísať odpoveď