圧縮された文字列をファイルに保存し、後で読み込んでゲームで使用しようとしています。データをロードして使用するときに、「in 'finish': buffer error」エラーが発生し続けました。私はこれを思いついた:
require "zlib"
def deflate(string)
zipper = Zlib::Deflate.new
data = zipper.deflate(string, Zlib::FINISH)
end
def inflate(string)
zstream = Zlib::Inflate.new
buf = zstream.inflate(string)
zstream.finish
zstream.close
buf
end
setting = ["nothing","nada","nope"]
taggedskills = ["nothing","nada","nope","nuhuh"]
File.open('testzip.txt','wb') do |w|
w.write(deflate("hello world")+"\n")
w.write(deflate("goodbye world")+"\n")
w.write(deflate("etc")+"\n")
w.write(deflate("etc")+"\n")
w.write(deflate("Setting: name "+setting[0]+" set"+(setting[1].class == String ? "str" : "num")+" "+setting[1].to_s)+"\n")
w.write(deflate("Taggedskill: "+taggedskills[0]+" "+taggedskills[1]+" "+taggedskills[2]+" "+taggedskills[3])+"\n")
w.write(deflate("etc")+"\n")
end
File.open('testzip.txt','rb') do |file|
file.each do |line|
p inflate(line)
end
end
「Taggedskill:」ポイントでエラーをスローしていました。それが何かはわかりませんが、「Skilltag:」や「Skillt:」などに変更しようとすると、引き続きバッファ エラーがスローされますが、「Setting:」や「Thing:」などは正常に機能しますが、設定行を "Taggedskill:" に変更すると、引き続き正常に動作します。ここで何が起こっているのですか?