06/03/10 23:44
program menu;
uses crt;
var
tasto:char;
flag:boolean;
cont:integer;
begin
cont:=0;
flag:=false;
repeat
clrscr;
textbackground(white);
textcolor(black);
gotoxy(1,1); writeln('Cosa vuoi fare?');
gotoxy(30,15); writeln('Ascoltare musica');
gotoxy(30,17); writeln('Registrare musica');
gotoxy(30,19); writeln('Uscire');
repeat
tasto:=readkey;
until (tasto=#80) or (tasto=#72);
if (tasto=#80) then cont:=cont+1;
if (tasto=#72) then cont:=cont-1;
if cont=4 then cont:=1;
if cont=-1 then cont:=3;
case cont of
1: begin
clrscr;
gotoxy(1,1); writeln('Cosa vuoi fare?');
textcolor(red);
gotoxy(30,15); writeln('Ascoltare musica');
gotoxy(30,17); writeln('Registrare musica');
gotoxy(30,19); writeln('Uscire');
end;
2: begin
clrscr;
gotoxy(1,1); writeln('Cosa vuoi fare?');
gotoxy(30,15); writeln('Ascoltare musica');
textcolor(red);
gotoxy(30,17); writeln('Registrare musica');
textcolor(black);
gotoxy(30,19); writeln('Uscire');
end;
3: begin
clrscr;
gotoxy(1,1); writeln('Cosa vuoi fare?');
gotoxy(30,15); writeln('Ascoltare musica');
gotoxy(30,17); writeln('Registrare musica');
textcolor(red);
gotoxy(30,19); writeln('Uscire');
flag:=true;
end;
end;
until flag;
end.
avevo già postato..ma adesso ho modificato perchè ho risolto da solo..qualcuno mi sa spiegare perchè si vede il colore solo con l'ultima opzione?!
Ultima modifica effettuata da 06/03/10 23:59
07/03/10 9:57
Poggi Marco
Ciao.
Ho letto il programma, e mon ho capito bene cosa deve fare.
Comuncue l' errore è dovuto al fatto imposti count in maniera errata.
Puoi usare direttamente tasto nei case, ed eventualmente specificare il tasto da premere nei menu'.
Un altro errore e quello di riscrivere il menù all' inizio del ciclo repeat.
In questo modo cancelli quello che scrivi nei case.
Come mai con P aumenti count, mentre con H lo diminuisci?
Ultima modifica effettuata da Poggi Marco 07/03/10 11:00
aaa
07/03/10 14:19
XBarboX
Postato originariamente da Poggi Marco:
Comuncue
Ultima modifica effettuata da XBarboX 07/03/10 14:20
aaa
07/03/10 21:11
Poggi Marco
Ho letto il programma, e la scelta del menu è ancore molto macchinosa.
Potresti accedere alle varie funzioni del programma, confrontando semplicemente la veriabile tasto.
La funzione di registrazione, è alquanto confusa.
La chiusura del file, avviene all' interno del ciclo repeat. In questo modo verra salvata solo la prima nota. Il mio consiglio è quello di salvare il valore "codificato" e "lunghezza" separatamente per ogni nota.
L' istruzione " write(file_output,' '); " è inutile e ti darà problemi in lettura. Infatti il comando write separa automaticamente i dati scritti su file.
Nella funzione procedure "riproduci_suono(input:integer); " usi il comando delay.
Purtroppo, esso si affida ai clok della cpu, quindi non è affidabile.
Sei costratto a programmarti una funzione apposita.
Ultima modifica effettuata da Poggi Marco 07/03/10 21:27
aaa