2009-06-03 12 views
0

Ich habe den folgenden CodeSTDIN.getc Sperren meine Anwendung

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 

Wenn ich versuche, die Anwendung die Anwendung Schlösser und doesnt init den Bildschirm laufen. Wenn ich Curses.getch verwende, tritt dieses Problem nicht auf.

Kann mir jemand erklären, warum das passiert? und Möglichkeiten, das Problem zu beheben?

Antwort

1

Und deshalb sollten Sie Flüche und STDIN nicht mischen

+1

das ist alles gut und schön, aber da ich nicht eine Lösung mit Curses.getch und mein Problem scheint von STDIN zu lösenden finden konnte i i beschlossen sollte es versuchen. siehe http://stackoverflow.com/questions/897687/ruby-keyboard-event-handling –