2009-06-03 5 views
0

Je le code suivantSTDIN.getc verrouillage mon application

class TimeReport 
    def run 
    init_screen 
    lines = Curses::lines 
    cols = Curses::cols 
    read="" 

    begin 
     crmode 
     noecho 

     gotoDay diaActual.data.to_s #loads the screen with data 

     while !read.eql?("q") 
     printPrompt #simply prints the command prompt 
     read=STDIN.getc 
     printOnSpot 10,10,read.to_s #prints what was read 

     if(!read.empty? && !read.strip.empty?) 
      processPrompt(read,@ecra) # process the read command 
      else 
      printInfo "Say What??" 
      end 
     end 

    ensure 

    echo 
    nocrmode 
    close_screen 
    end 
    end 
end 
TimeReport.new.run 

Lorsque je tente d'exécuter l'application les verrous d'application et ne marche pas d'initialisation de l'écran. Si j'utilise Curses.getch, ce problème ne se produit pas. Est-ce que quelqu'un peut m'éclairer pour savoir pourquoi cela se produit? et les moyens de résoudre le problème?

Répondre

1

Et c'est pourquoi vous ne devriez pas mélanger Curses et STDIN

+1

c'est tout bon et joli, mais comme je ne pouvais pas trouver une solution à l'aide Curses.getch et mon problème semble être résolu par STDIN i décidé i devrait l'essayer. voir http://stackoverflow.com/questions/897687/ruby-keyboard-event-handling –