Newsgroup: it.comp.lang.pascal
Titolo: leggi non da tastiera


"if something can go wrong,be sure it will go wrong!"
------------
Warning! remember to delete NOSPAM to answer by e-mail!



Did I have to delete also the § symbol?
Non so se è il metodo migliore, (o se esistono alternative con qualche
chiamata ai servizi degli interrupt del BIOS o del DOS, ma puoi andare
a leggere i caratteri già inviati allo schermo nella memoria video
dedicata allo schermo stesso.
Si tratta di 4K di dati memorizzati a partire da $B800:$0000,
accessibili dal TP7 con l'array predefinito Mem[$B800:i] dove ad i
sostituisci i valori da 0 a 3999 che ti interessano.
Nota bene: in tali locazioni di memoria vi si trova intervallato un
codice carattere ed un codice colore, quindi devi leggere una
locazione ogni due. Dovresti programmarti un po' di routines e
assicurarti che le Write vadano a scrivere sempre nella stessa
riga/colonna.
Non so se è l'aiuto che cercavi, comunque con queste informazioni puoi
fare dei programmi carini.
Paolo Sancono
E-Mail: 
psh...@iol.it

fare dei programmi carini.
proprio quello! ma potresti farmi un esempio (o se hai del codice
sottomano mandarmelo) ? io su 'ste chiamate direttamente a memoria non
ci ho mai capito molto! <:(
grazie!



Per studiarti queste cose ti consiglio vivamente la "Bibbia del 
programmatore" del mitico Peter Norton.
Lo dovresti trovare in una qualsiasi biblioteca.
Bye bye

>sostituisci i valori da 0 a 3999 che ti interessano.
In pratica puoi fare cosi' 
var memoria_video : array[1..25, 1..80] of  record
      				           carattere : byte;
				           attributo  : byte;
   				       end absolute $b800:0000;
procedure MyWrite(X, Y, FgC, BkC : byte; S : string);
var K : integer;
begin
    for K := 1 to length(S) do
    with memoria_video[Y, X+K-1] do
    begin
        carattere := byte(S[K]);
        attributo := BkC shl 4 + FgC;
    end;
end;
begin
  MyWrite(10, 10, 4, 7, 'CIAO');
end.
---------------------
Andrea,
mica uno qualunque...

In pratica puoi fare cosi' 
[cut]
grazie!
PS scusa Andrea ma dovecavoloerifinito? pare che per mail tu sia
irraggiungibile (perchè?)
PPS per tutti gli altri:scusate per la divagazione sul tema, ma il
signorino si fa desiderare >:(


ops....scusate, non mi ero reso conto che il problema e' leggere, non
scrivere...
be' allora si puo' modificare il codice in questo modo :
var memoria_video : array[1..25, 1..80] of  record
      				           carattere : byte;
				           attributo  : byte;
   				       end absolute $b800:0000;
function MyRead(X, Y  : byte) : char;
begin
    MyRead := char(memoria_video[Y, X].carattere);
end;


irraggiungibile (perchè?)
Infatti mi sono incazzato parecchio anch'io !! eheheh
E' dipeso dal mio provider che e' stato quasi un mese disattivo per
via dell'aggiornamento della linea...
Adesso mi trovi a 
andrea_...@bigfoot.com
---------------------
       Andrea      
---------------------

end.
Ma a Josef non serviva MyRead?
+-------------------------------------------------------------+
|  Paolo Sancono e Sergio Grosso      E-Mail: 
psh...@iol.it
  |
|     "Ogni sorriso che non dai è un sorriso che non hai"     |
|    "Each smile you don't give is a smile you don't have"    |
+-------------------------------------------------------------+