Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente bannato
    Registrato dal
    Jan 2002
    Messaggi
    852

    [c++] La getch() fa schifo

    Esiste uan funzione come la getch() che restituisce senza visualizzare il tasto premuto dalla tastiera, che non presenti il difetto delle conbinazione dei tasti?

    Le ho provate tutte, da cercare i sorgenti della cin fino a crearmi una funzione in asm puro....


    Help è super urgente...

  2. #2
    mah....
    io non ne ho mai viste, pero', una volta che ne avevo bisogno, ho costruito un mio estrattore dal cin che funzionava come la getch().

    Hai presente che la cin ha membri come get, peek e altre cosuccie varie?

    usando se nn mi sbaglio la peek, riuscivo a far ritornare il valore premuto immediatamente, senza premere invio.

    Mi spiace non poterti dare il codice perche' lo cercavo anche io ma nn l'ho trovato :gren:

    comunque non e' molto complesso
    ciao
    #exclude <windows.h>
    Powered by Gentoo GNU/Linux
    Cos'e' l'impossibile se non una questione di tempo?
    Riesumare i post vecchi non e' sbagliato, e' una risposta o la continuazione di un thread. Meglio riesumare che creare di nuovi :]

  3. #3
    Utente bannato
    Registrato dal
    Jan 2002
    Messaggi
    852
    Il problema è che la cin ha un effetto eco e quindi mi visualizza il carattere premuto (a quel punto usavo la getchar())


    HELP!!!!


    MODERATORI AIUTO!!!!!!!!!!!!!!!

  4. #4
    perche' scusa, la getch non ha l'effetto eco?? a me sembra proprio di si.

    Se lo fai in assembler se usi le funzioni del BIOS puoi farle anche senza effetto eco.

    #exclude <windows.h>
    Powered by Gentoo GNU/Linux
    Cos'e' l'impossibile se non una questione di tempo?
    Riesumare i post vecchi non e' sbagliato, e' una risposta o la continuazione di un thread. Meglio riesumare che creare di nuovi :]

  5. #5
    Utente bannato
    Registrato dal
    Jan 2002
    Messaggi
    852
    no la getch(non ha nessun effeto eco, cmq ho fatto anche in asm


    sai


    MOV AH, 01h
    INT 21 h......


    ma nada


    COME POSSO FARE?

  6. #6
    Utente bannato
    Registrato dal
    Jan 2002
    Messaggi
    852
    Una domanda, se io faccio una inplementazione al c con asm, oviamente mi serve il tasm32 per conpilare, ma ci sono rischi di incasinare la memoria, cioè di solito anzi sempre io uso i registri AX BX CX DX che sono quelli utilizzati nell'8086...

  7. #7
    Utente bannato
    Registrato dal
    Jan 2002
    Messaggi
    852
    up

  8. #8
    scusa il ritardo per la risposta, ma era un po che nn venivo nel forum.

    Calma, effetto eco, e' che quando premi il tasto lo vedi sullo schermo?
    io intendo questo... mi sembra strano che non ci sia l'effetto eco, sta di fatto che nel borland turbo c++ 3, la getch ha l'eco, e anche in devc++ 4.9 e precedenti. Le successive non le so perche' nn le ho mai viste.

    Ummmm
    mov ah, 01h?
    e' la tettura con eco, ma se tu non lo vedi... e' preoccupante

    Ummm si, puoi fare una procedura, compilarla e linkarla, ma per una cosa cosi' semplice puoi anche farla dentro al codice C.
    Il tasm32 non lo conosco... pero' immagino che coMpili il codice, non lo coNpila :gren: bando alle ciancie, puoi fare la procedura ma nn so se ti conviene in questo caso. Per quanto riguarda i registri, bhe, non e' un problema cosi' grande:
    per una funzione cosi' semplice, basta un registro e a seconda di come fai la funzione puoi anche fare a meno di usare un registro:
    se gli passi un parametro, fai la push e poi le pop dei registri che usi, e dentro la funzione rpendi il parametro, quindi non cambia nulla. Comunque, dico per esperienza dopo aver fatto un paio di funzioni per la grafica, che i registri usati dal compilatore non sono molti. Almeno, io ricordo che bisognava salvare nello stack solo CX, e forse i registri indice... quindi hai abbastanza libera'.

    Prova con gli interrupt del bios, e non quello del DOS. Quello del bios non ha l'eco, pero' puoi fare tu una routine che legge il carattere e lo stampa alla posizione corrente del cursore, e poi sposta avanti il cursore. Io avevo fatto cosi' per una routine (non volevo usare l'int del dos e ho fatto cosi... -_-').

    Comunque credo si possa fare anche con il C++. Adesso provo a fare qualcosa, se ho novita' posto qui.

    Ciao
    #exclude <windows.h>
    Powered by Gentoo GNU/Linux
    Cos'e' l'impossibile se non una questione di tempo?
    Riesumare i post vecchi non e' sbagliato, e' una risposta o la continuazione di un thread. Meglio riesumare che creare di nuovi :]

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    1
    usa la funzione getche(), che è come la getch() ma non scrive il carattere sullo schermo. E poi, cosa intendi per "difetto delle conbinazione dei tasti"? che io ne sappia, la getch() non ha nessun difetto, legge tutte le conbinazione dei tasti, basta conoscerne il codice ascii.

  10. #10
    :master: oddiomio....
    mi sta venendo un terribile dubbio:
    tu hai bisogno di una funzione CON l'effetto eco o SENZA effetto eco??

    io ti dicevo una CON l'effetto eco...
    mi sa che avevo capito male le tue intenzioni.
    #exclude <windows.h>
    Powered by Gentoo GNU/Linux
    Cos'e' l'impossibile se non una questione di tempo?
    Riesumare i post vecchi non e' sbagliato, e' una risposta o la continuazione di un thread. Meglio riesumare che creare di nuovi :]

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.