x-kom hosting

Pomoc w programie w pascalu

adrianoxx43210
utworzono
utworzono (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
komentarz

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
komentarz (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
komentarz

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
komentarz

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
komentarz

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
komentarz

a może mógłbyś podać już napisane to menu z tą pętlą ja próbuje i nic z tego.

wojtex5
komentarz
komentarz

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)


adrianoxx43210
komentarz
komentarz

[b]Dzięki.[/b]

Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!

Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.