Logan Capaldo
12/8/2005 10:23:00 PM
On Dec 8, 2005, at 3:47 PM, Edward Rawde wrote:
> The class below seems to do exactly what I want it to do provided
> Files.read_file is called first.
> But it would be nice not to have to call Files.read_file externally
> at all
> and have the other two methods automatically call it once, the
> first time
> either of them is used.
> So far I've not been able to do this without getting "uninitialized
> class
> variable" errors. Is there a simple way to do it?
> I've only been learning Ruby for two days so it's quite possible
> I've missed
> the obvious.
>
> Ed
>
>
> class Files
>
> def Files.read_file
>
> @@file = File.open("test.bin","rb")
>
> @@code = []
>
> @@address = 0
>
> while @@address < 65536 and (@@byte = @@file.getc) != nil
>
> @@code.push(@@byte)
> @@address += 1
>
> end
>
> @@file.close
>
> end
>
> def Files.readCodeByte index
> return @@code[index-@@offset]
> end
>
> def Files.setOffset anoffset
> @@offset = anoffset
> end
>
> end
>
>
>
def Files.read_file
unless defined?(@@read_file_called)
@@file = File.open("test.bin","rb")
@@code = []
@@address = 0
while @@address < 65536 and (@@byte = @@file.getc) != nil
@@code.push(@@byte)
@@address += 1
@@read_file_called = true
end
end
def Files.readCodeByte index
Files.read_file
return @@code[index-@@offset]
end
def Files.setOffset anoffset
Files.read_file
@@offset = anoffset
end