[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Weird error while reading binary files

Mauricio Kishi

12/22/2006 2:25:00 AM

Hello everyone!

I just started messing around with Ruby and so far it's been great.
Somehow I've stepped into some weird error I can't understand nor solve
it.. I've been trying to google about it but with no results..

Here's what's going on:
I've got a file structure which is like:
4 bytes - Number of entries
For number of entries : 300 bytes of information.. several integers,
longs, floats, strings...

If I do:

theFile = File.open('FilePath')

infoArray = Array.new

infoEntries = theFile.read(4).unpack('V')[0]
infoEntries.times do |i|
infoArray[i] =
theFile.read(300).unpack('VA4V2FS4V12A24A8A32A32A32A32A32V8')
end


It will go fine until infoArray[33]. After that it won't work at all!
Let me make myself clear:

irb(main):002:0> theFile = File.open('FILEPATH')
=> #<File:FILEPATH>
irb(main):003:0> theFile.pos = 10244
=> 10244
irb(main):004:0> theFile.read(4)
=> "H\001\000\000"
irb(main):005:0> theFile.pos
=> 14340
irb(main):006:0>

See how it jumped positions?! That's odd.. Is there a file-size limit or
something like that? I'm under Windows, by the way...

--
Posted via http://www.ruby-....

4 Answers

Mauricio Kishi

12/22/2006 2:30:00 AM

0

I've tested it with and without unpack.. Several files.. And nothing.
I haven't tested the BinaryStructure thing class yet.. But I don't feel
like using it.. It shouldn't be needed, at least.

Thanks!

[sorry about the double post, accidentaly posted it before finishing it]

--
Posted via http://www.ruby-....

Joel VanderWerf

12/22/2006 3:26:00 AM

0

Mauricio Kishi wrote:
> theFile = File.open('FilePath')

On windows, you'll want

theFile = File.open('FilePath', "rb")

to put the file in binary mode (doesn't convert \r\n to \n).

--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407

Mauricio Kishi

12/22/2006 3:28:00 AM

0

Joel VanderWerf wrote:
> Mauricio Kishi wrote:
>> theFile = File.open('FilePath')
>
> On windows, you'll want
>
> theFile = File.open('FilePath', "rb")
>
> to put the file in binary mode (doesn't convert \r\n to \n).

Ooops, that was a mistake while writing the post! I'm already opening
the files on binary mode...

--
Posted via http://www.ruby-....

Mauricio Kishi

12/22/2006 3:32:00 AM

0

Joel VanderWerf wrote:
> Mauricio Kishi wrote:
>> theFile = File.open('FilePath')
>
> On windows, you'll want
>
> theFile = File.open('FilePath', "rb")
>
> to put the file in binary mode (doesn't convert \r\n to \n).

OMG! No! Somehow I've missed it on the newest .rb files.. O_O"
Thanks a lot.. And sorry for such a stupid thing.

--
Posted via http://www.ruby-....