« mswin32版ruby 1.8.5の導入について | メイン | REM #cdって何? »

2006年09月17日

●jFileの不具合

当方で教材資料を提供している jFile for JWW がmswin32版ruby 1.8.5 を導入した場合の不具合について、牛渡さんが対応策を紹介してくれました。

牛渡さんのサイト
http://gravelroad.yh.land.to/

ruby 1.8.5 と jFile
http://gravelroad.yh.land.to/item/122

ruby 1.8.5 と jFile(2)
http://gravelroad.yh.land.to/item/123

指示通り修正してみた結果、問題なく動作を確認しました。
牛渡さん、ありがとうございます。

勉強の為、関連部分をそのまま引用掲載させて頂きます。

-----ここから引用-----

jFile1.rb の69行目を:

atime = fftime.split; atuki = atime[1]; ahi = atime[2]; anen = atime.last

に変更。同様に 97行目を

etime = ftime.split; tuki = etime[1]; hi = etime[2]; nen = etime.last

に変更すると、1.8.5 と 1.8.1 の両方で動作する


尚、上記の場合Time オブジェクトから to_s メソッドを使うと、また次の Ver.Up に対応できない可能性がありますので、いっそ、68~95行目までをコメントアウトして

afile = File.atime(file).strftime("%Y\/%m\/%d")

に変更、同じく、96~123行目をコメントアウトして

mfile = File.mtime(file).strftime("%Y\/%m\/%d")

とした方が良いようです。

付録)フォルダ選択で前回の設定値を記憶するスクリプト

selectdir.rb

# フォルダフルパス取得 外部変形Rubyスクリプト

require 'vr/vruby'
frm=VRLocalScreen.newform
def frm.construct
move 250,180,50,50
dirpath = selectDirectory(title="検索対象フォルダを選択して下さい。(ルートドライブ選択不可)",initialdir=read_profile).to_s
write_profile dirpath
print dirpath
end

def read_profile
if FileTest::exist?( "jFile.ini" )
ini = open( "jFile.ini", 'r' )
begin
while ini.gets
chomp!
if ~ /^Folder=(.*)$/
folder = $1
end
end
ensure
ini.close
end
end
folder
end

def write_profile( dirpath )
if dirpath != nil
ini = open( "jFile.ini", 'w' )
ini.print "[jFile]\n"
ini.print "Folder=" + dirpath + "\n"
end
end
frm.create.show

-----ここまで引用-----

ruby 1.8.5 の導入は、こちらから
mswin32版ruby 1.8.5 インストーラー付きパッケージ