[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:002216] Re: GRIB
- To: dennou-ruby@xxxxxxxxxxx
- Subject: [dennou-ruby:002216] Re: GRIB
- From: Seiya Nishizawa <seiya@xxxxxxxxxxxxxxxxxx>
- Date: Thu, 24 Mar 2005 18:58:47 +0900
西澤です。
以下の件、
ちょっと調べてみました。
irb(main):001:0> f = File.open8"T.jan.grib")
=> #<File:T.jan.grib>
irb(main):002:0> f.pos
=> 0
irb(main):003:0> f.read(1)
=> "G"
irb(main):004:0> f.pos
=> 3585
irb(main):005:0> f.read(1)
=> "R"
irb(main):006:0> f.pos
=> 3586
となります。
最初の 0xE00(=3584) は何者でしょう。
ruby のバグなのか windows とはそういうものなのでしょうか?
反対に乙部さんなにか心当たりありますでしょうか?
grib.rb では、一文字目が 0x000 でないかどうか調べて(pos==3585)、その後1
バイト戻る(pos==3584)、
ということをしているので 0xE00 から読むことになります。
linux ではこのようなことはありません。
1文字読んだら pos==1 です。
乙部 直人 wrote:
>多分西澤さんが作られた部分だと思いますが、
>
>今日の堀之内さんのチュートリアルでGribのファイルを開くときに
>http://www.gfd-dennou.org/arch/ruby/products/gphys/tutorial/body-j.html#h3:grads_grib_examples
>のあたりでWindowsネイティブのGphysは
>
>c:/NumRu/ruby/lib/ruby/site_ruby/1.8/numru/gphys/grib.rb:181:in
>`parse': This file is not Grib file (INITIAL SECTION) (RuntimeError)
> from c:/NumRu/ruby/lib/ruby/site_ruby/1.8/numru/gphys/grib.rb:
>1334:in `parse'
> from
>c:/NumRu/ruby/lib/ruby/site_ruby/1.8/numru/gphys/grib.rb:1314:in `open'
> from
>c:/NumRu/ruby/lib/ruby/site_ruby/1.8/numru/gphys/gphys_grib_io.rb:80:in
>`open'
> from
>c:/NumRu/ruby/lib/ruby/site_ruby/1.8/numru/gphys/gphys_io.rb:12:in`open'
> from contour1000mb_grib.rb:3
>
>というエラーをはいて終わってしまいます。
>ちょっとソースを見たところファイルの頭4文字で判断しているようですが
>なぜか、ファイルの先頭から0xE00 の位置から読み込み始めているようです。
>なぜ、Linuxではうまくいくのかわからないのですが、何か心当たりがあります
>でしょうか?
>
>