adrianoxx43210 utworzono 16 lipca 2011 utworzono 16 lipca 2011 (edytowane) [code]USES CRT; Var c1,c2:char; y:byte; tablica:array[1..4]of string; Procedure info; Begin End; Procedure glowny_program; Begin End; Procedure wyswietl(ktory,kolor,tlo:byte); {1} Begin TextColor(kolor); {2} TextBackGround(tlo); {3} GotoXY(32,11+ktory); {4} Write(tablica[ktory]); {5} End; Begin Tablica[1]:=' Info '; Tablica[2]:=' Program '; Tablica[3]:=' Wyjscie '; Tablica[4]:=' cos tam '; ClrScr; For y:=1 To 4 Do wyswietl(y,15,0); {6} y:=1; Repeat wyswietl(y,0,15); {7} c1:=ReadKey; c2:=' '; If c1=chr(0) Then c2:=ReadKey; wyswietl(y,15,0); {8} If c2='H' Then Dec(y); If c2='P' Then Inc(y); If y=0 Then y:=3; If y=4 Then y:=1; If c1=chr(27) Then y:=3; Until (c1=chr(27)) or (c1=chr(13)); If y=1 Then info; If y=2 Then glowny_program; End. [/code] to mam taki problem jak chc[color=red]ę[/color] np. dodać coś w menu np. 'coś tam' to mi wyskakują tylko 3 pierwsze a nie te 4 co tu są to jest narazie sam szkielet bo reszte procedur mam osobno w innym programie i chciałem do nich dodać takie menu no tylko że nie wiem jak zrobić żeby były te wszystkie opcje w menu a nie te 3 pierwsze.
wojtex5 komentarz 16 lipca 2011 komentarz 16 lipca 2011 problem jest banalny - wystarczy zamienić index z 3 na 4 w wierszu... [code]Tablica[3]:=' cos tam ';[/code] bo tak jak jest teraz, to opcja 3. się nadpisuje i "znika" napis ' Wyjscie ' a w jego miejscu pojawia się 'cos tam' Jeśli chciałbyś dodawać następne opcje do menu, to pamiętaj o zwiększeniu rozmiaru tablicy i poszerzeniu zakresu pętli for (która wyświetla menu) PS Staraj się pisać bardziej zrozumiale - pamiętaj o interpunkcji - to na prawdę pomaga zrozumieć co autor miał na myśli...
adrianoxx43210 komentarz 16 lipca 2011 Autor komentarz 16 lipca 2011 (edytowane) Dzięki poradziłem sobie i mam jeszcze jedno pytanie gdzie wstawić 'repeat' żeby mi wracało do menu po każdej procedurze.
wojtex5 komentarz 18 lipca 2011 komentarz 18 lipca 2011 znowu nie jestem pewien czy o to chodzi, ale... wystarczy chyba przenieść dwie ostatnie instrukcje do istniejącego repeat...until przed słowem "until", pętla (chyba) powinna wyglądać tak: [code]Repeat wyswietl(y,0,15); {7} c1:=ReadKey; c2:=' '; If c1=chr(0) Then c2:=ReadKey; wyswietl(y,15,0); {8} If c2='H' Then Dec(y); If c2='P' Then Inc(y); If y=0 Then y:=3; If y=4 Then y:=1; If c1=chr(27) Then y:=3; If y=1 Then info; If y=2 Then glowny_program; Until (c1=chr(27)) or (c1=chr(13));[/code]
adrianoxx43210 komentarz 18 lipca 2011 Autor komentarz 18 lipca 2011 Nie pomogło problem jest taki że jak np. mam napisane coś w procedurze [b]info[/b] wchodzę do niej i nic się nie wyświetla tylko od razu wychodzi z programu.
wojtex5 komentarz 18 lipca 2011 komentarz 18 lipca 2011 wychodzi z programu, dlatego, że... [code]Until (c1=chr(27)) or (c1=chr(13));[/code] - pętla się kończy, kiedy napotkanym znakiem będzie [enter] - znak nowej linii, albo strzałka w lewo... Musisz złapać całą tą pętlę w drugą np. repeat...until i dodać obsługę opcji wyjście - jeśli y będzie 3 to wychodź.
adrianoxx43210 komentarz 19 lipca 2011 Autor komentarz 19 lipca 2011 a może mógłbyś podać już napisane to menu z tą pętlą ja próbuje i nic z tego.
wojtex5 komentarz 19 lipca 2011 komentarz 19 lipca 2011 moge spróbować, ale co to da, jeśli nie rozumiem kompletnie tego programu? jakieś dziwne dekrementacje... zmiana wartości zmiennej y... możliwe że chodzi o to: [code]USES CRT; Var c1,c2:char; y:byte; tablica:array[1..4]of string; Procedure info; Begin End; Procedure glowny_program; Begin End; Procedure wyswietl(ktory,kolor,tlo:byte); {1} Begin TextColor(kolor); {2} TextBackGround(tlo); {3} GotoXY(32,11+ktory); {4} Write(tablica[ktory]); {5} End; Begin Tablica[1]:=' Info '; Tablica[2]:=' Program '; Tablica[3]:=' Wyjscie '; Tablica[4]:=' cos tam '; repeat ClrScr; For y:=1 To 4 Do wyswietl(y,15,0); {6} y:=1; Repeat wyswietl(y,0,15); {7} c1:=ReadKey; c2:=' '; If c1=chr(0) Then c2:=ReadKey; wyswietl(y,15,0); {8} If c2='H' Then Dec(y); // nie wiem do czego to... If c2='P' Then Inc(y); If y=0 Then y:=3; If y=4 Then y:=1; If c1=chr(27) Then y:=3; Until (c1=chr(27)) or (c1=chr(13)); // do tego miejsca nie rozumiem.... (wiem jak działa, ale nie wiem po co tutaj to jest...) If y=1 Then info; If y=2 Then glowny_program; until (y=3); // jak y ma wartosć 3 to kończ End.[/code] PS nawet nie mam jak sprawdzić czy to w ogóle działa... bo mi delphi nie widzi modułu CRT... (a na standardowym nie łapie funkcji tych od tła i koloru tekstu)
Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!
Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.