Sleep

A

Adam Steinfurth

[Note: parts of this message were removed to make it a legal post.]

This program is very simple. It is suppose to load in the text file, load
each character into an array, then print out the array one letter at a
time. It is supposed to wait 1 second each time it prints. This freezes
every time I run it. Any ideas?

Adam


class Slow_Array

def array_split
@f = File.open('Text_for_TextReader.txt','r') do |f|
f.gets.scan(/\w/)
end
end

def print_and_wait
@f.each {
|i|
print i
sleep 1
}
end

end

#-------------------------------------------------
# Main logic
TextReader = Slow_Array.new

# Bring file into program
TextReader.array_split

# Print each character, waiting one second in between each printing
TextReader.print_and_wait
 
E

Einar Magnús Boson

This program is very simple. It is suppose to load in the text
file, load
each character into an array, then print out the array one letter at a
time. It is supposed to wait 1 second each time it prints. This
freezes
every time I run it. Any ideas?

Adam


class Slow_Array

def array_split
@f = File.open('Text_for_TextReader.txt','r') do |f|
f.gets.scan(/\w/)
end
end

def print_and_wait
@f.each {
|i|
print i
sleep 1
}
end

end

#-------------------------------------------------
# Main logic
TextReader = Slow_Array.new

# Bring file into program
TextReader.array_split

# Print each character, waiting one second in between each printing
TextReader.print_and_wait


It doesn't freeze, but the output is buffered so it appears that way.
try adding a flush:

print i
STDOUT.flush
sleep 1


einarmagnus
 
M

Michael Fellinger

This program is very simple. It is suppose to load in the text file, load
each character into an array, then print out the array one letter at a
time. It is supposed to wait 1 second each time it prints. This freezes
every time I run it. Any ideas?

Adam


class Slow_Array

def array_split
@f = File.open('Text_for_TextReader.txt','r') do |f|
f.gets.scan(/\w/)
end
end

def print_and_wait
@f.each {
|i|
print i
sleep 1
}
end

end

#-------------------------------------------------
# Main logic
TextReader = Slow_Array.new

# Bring file into program
TextReader.array_split

# Print each character, waiting one second in between each printing
TextReader.print_and_wait

You can either:

$stdout.sync = true

or:

class SlowArray
def slow_each
File.open('Text_for_TextReader.txt') do |file|
while line = file.gets
puts line
sleep 1
end
end
end

SlowArray.new.slow_each

^ manveru
 
A

Adam Steinfurth

[Note: parts of this message were removed to make it a legal post.]

STDOUT.flush
Did exactly what I wanted and it was an easy fix. I would have never
figured that out. Thank you.

Adam
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,995
Messages
2,570,225
Members
46,815
Latest member
treekmostly22

Latest Threads

Top