Oppure

Loading
09/10/15 15:34
leogero
Buongiorno a tutti,questo è il mio primo messaggio qui sul forum;ho da poco iniziato a studiare il linguaggio pascal e sto cominciando a programmare qualcosa di elementare.
Oggi ho provato a usare le funzioni grafiche di pascal ma mi viene segnalato un errore nell'attivare le funzioni grafiche,in particolare l'inizio del programma è così:
program(...)
Uses
graph;
Var gd,gm,ax,ay :integer;

Begin
gd:=detect;
initgraph(gd,gm,'C:\FPC');
(......)
End .

Mi da errore su gm dicendo : call by arg no.2 has to match exactly:got long lnt expected small lnt

Non riesco a capire il motivo, ho provato a modificare qualcosa ma niente.
Cosa potrei fare?

Scusate per la domanda forse banale e per il linguaggio poco tecnico ma è veramente da poco che uso pascal.
Grazie in anticpo
Ultima modifica effettuata da leogero 09/10/15 15:35
aaa
09/10/15 16:24
pierotofy
gm deve essere dichiarato come smallint, non come integer.
Il mio blog: piero.dev
10/10/15 13:31
leogero
Grazie mille.
Ne approfitto per chiedervi un'altra cosa:
Praticamente devo far si che un ciclo si interrompa nel momento che premo una lettera sulla tastiera ,ho lettondi readkey e pressed key ma non ho ben capito come usarli.inoltre vorrei che il ciclo si interrompa solo con una determinata lettera premuta ,tipo la s.come faccio?
Grazie

aaa
10/10/15 20:16
leogero
In particolare il programma è questo:

uses crt;
var x,t,k,r,a,l:integer;
s,q:string;
w:char;
keypressed:boolean;


begin
readln(q);
l:=length(q);
writeln('clicca lettera comparsa prima che arrivi a y:24');
clrscr;
for x:=1 to 80 do
begin
gotoxy(x,24);
writeln('*');
end;
for k:=1 to 5 do
begin
randomize ;
t:=random(l);
r:=random(34);//valore x
gotoxy(r,1) ;
if t=0 then
begin
t:=1;
end
else
begin

end;

writeln(q[t]);
a:=1 ;
repeat
a:=a+1 ;
gotoxy( r,a-1);
writeln( ' ');
gotoxy(r,a);
writeln(q[t]);
delay(100);


until (a=24)or keypressed;

end;

readln();
end.

In pratica il programma consiste in una specie di gioco in cui devi premere sulla tastiera una lettera random da una parola immessa precedentemente prima che la lettera che scende raggiunga la Y=24.
Il problema è che non funziona neanche la funzione keypressed.Praticamente io vorrei far fermare il ciclo repeat...until quando si preme la lettera casuale che compare nello schermo dalla tastiera.
Ho provato a avviare il programma ma premendo un tasto repeat until non si ferma.
Inoltre vorrei che il ciclo si fermasse solo se viene premuta una determinata lettera nello schermo e che quindi keypressed diventi true solo quando quella lettera venga premuta.
come faccio:-?
grazie
aaa