Newsgroup: it.comp.lang.pascal
Titolo: pressione di tasto

Io per scrivere quel programma che mi permette di evitare di premere il
tasto anche se me lo chiede ho scritto questa procedura... ma non
funziona!!!
mi sapete dire per quale motivo?
uses WinDos;
var
  Int1CSave : Pointer;
{$F+}
procedure premi; interrupt;
  begin
     write('q');
  end;
{$F-}
begin
  GetIntVec($10,Int1CSave);
  SetIntVec($10,Addr(premi));
  writeln('Press ANYKEY to exit');
  repeat until Keypressed;
  SetIntVec($010,Int1CSave);
end.
iosephus, ego locutus
-- 
Posted from 
HA-server-a.cs.interbusiness.it
 [151.99.250.31] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 mi sapete dire per quale motivo?
L'ho buttato giu' in 5 minuti...fammi sapere se funzia.
{**********INIZIO CODICE**********}
{
        Il buffer (circolare) della tastiera e' la zona di memoria
               [40h:1Eh] ... [40h:3Eh]
        L'indirizzo [40h:1Ah] punta al prossimo carattere da rimuovere
        dal buffer mentre l'indirizzo [40h:1Ch] punta al prossimo carattere
        digitato.
}
procedure push(ch: char);
var
   P: Word;
begin
  P := MemW[Seg0040: $1C]; { "puntatore" al prossimo carattere }
  if P>$3E then P := $1E; { sposta il puntatore all'inizio del buffer }
  Mem[Seg0040: P] := byte(ch);
  P := P+2;
  if P>$3E then P := $1E; { sposta il puntatore all'inizio del buffer }
  MemW[Seg0040: $1C]  := P;
end;
begin
  push('q'); { carattere 'q' }
  push(#13); { INVIO }
end.
{**********FINE CODICE**********}
Ciao!
Simone.
--------------------------------------------------------------
....e Dio disse : "pkunzip universo.zip"
ICQ: 19598133
Webmaster di
 
www.drfalken.com
 
www.pas-os.com
--------------------------------------------------------------

grazie DrFalken, mi hai aiutato tantissimo... adesso mi daresti ancora un
aiuto? devo fare qualcosa di simile al problema che mi hai appena risolto:
io devo scrivere un programma in pascal che esegue un'altra applicazione
(dos); quest'altra applicazione funziona in questa maniera: si danno da riga
di comando dei parametri [nome del file di partenza e nome del file di
arrivo(nuovo)] per creare un file ascii. Il problema è questo: al termine
dell'esecuzione l'applicazione che mando mi chiede di premere un tasto da
tastiera, come faccio a dire al mio programma pascal di premere un tasto
alla fine dell'esecuzione?
il tuo programma funziona!
grazie in ainticipo....


 alla fine dell'esecuzione?
Lancia la procedura push con il tasto da premere al termine del programma ed
esegui il programma con la procedura Exec.
Ad esempio:
...
...
push('q');
swapvectors;
Exec(nomeprogramma, parametri);
swapvectors;
...
...


lo provo subito DrFalken... sei un grande!!!
ti posso fare una domanda? dove posso trovare un elenco di tutti i buffer
usati da pascal?
grazie di tutto DrFalken!
grazie tantissimo!
hai per caso un sito sul pascal?
iosephus, ego locutus!!!

 hai per caso un sito sul pascal?
Non proprio....cmq, stiamo (io ed altri frequentatori del NG) realizzando un
sistema operativo in Pascal.
Il sito lo trovi in firma.


 - rimuovi XXX  x  rispondere  ICQ	#8814554
 
- Il mondo si puo' cambiare!
- Certo.  Al peggio non c'e' limite!
		-- Ziche e Minoggio

tranqui ema... non faccio format c: ... userei autotest no? :-))  ^-^
iosephus, ego locutus

 - rimuovi XXX  x  rispondere  ICQ	#8814554
 
Ho  bisogno  di  te,  come  l'inverno  ha   bisogno   della   primavera.
		-- America, "Need you"