HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
1022
YSRテキストを分割する時6未解決


YSR

リンク

2009/10/22(Thu) 19:37:52|NO.28495

相談です。
テキストファイルを指定サイズ以内に収めて分割するプログラムを組んでみました。
このプログラムは、一行ごとに合計サイズを計算して、あふれたらその一行の分を記録せずに保存することで、指定サイズに収めながら分割するものです。
しかし実行すると、なぜか生成されたテキストのサイズが指定したサイズより大きくなってしまうのです。
アドバイス、よろしくお願いします。
コードは以下の通り。

filename="M:\\文章\\小説\\青空文庫\\こころ\\773_ruby_5968\\kokoro.txt" notesel buf :noteload filename :fname=filename :size=notesize cutsize=10240 ;カットするbyte数 cl=0 ;その1ファイルのサイズ(byte) cpn=1 ;ファイル番号(1〜) cpl=strlen(str(int(1.0*size/cutsize)+1)) ;桁数 sdim cut,cutsize ;カットしたファイル max=notemax sdim get,32768 for k,0,max noteget get,k cl+=strlen(get) if cl>=cutsize { cl=0 bsave getpath(fname,1)+"("+strf("%0"+cpl+"d",cpn)+").txt",cut,strlen(cut)-2 cut=get+"\n" cpn+ } else { cut+=get+"\n" } next bsave getpath(fname,1)+"("+strf("%0"+cpl+"d",cpn)+").txt",cut,strlen(cut) end
ちなみに、言語はHSP 3.2を使用しています。



この記事に返信する


KA

リンク

2009/10/22(Thu) 20:11:55|NO.28498

取りあえず
>>notesel buf :noteload filename :fname=filename :size=notesize
 →どこか間違っていない?

>>cpl=strlen(str(int(1.0*size/cutsize)+1)) ;桁数
 →1.0 は何のため?

見る方が疲れるので、不必要な長いファイル指定や":"でつなげた書き方
での質問は、出来る限り控えましょう。



KA

リンク

2009/10/22(Thu) 20:13:54|NO.28499

>>notesel buf :noteload filename :fname=filename :size=notesize
>> →どこか間違っていない?

勘違い合っていました。ごめんなさい。



名無し

リンク

2009/10/22(Thu) 20:13:58|NO.28500

改行分のサイズを計算していないみたいですが。
これでうまくいくんじゃないかと。

cpn+ cl=strlen(get) //追加 } else { cut+=get+"\n" } cl+=2 //追加



KA

リンク

2009/10/22(Thu) 20:25:58|NO.28501

>>if cl>=cutsize {

どう見ても cutsize 以上で保存している様に見えますが



ab

リンク

2009/10/22(Thu) 22:15:08|NO.28505

> どう見ても cutsize 以上で保存している様に見えますが
clがcutsize以上になったとき(その一行の分を記録するとあふれるとき)に保存しているので正しい様に見えますが



KA

リンク

2009/10/22(Thu) 23:42:33|NO.28509

>>正しい様に見えますが

申し訳ない、今日は疲れている様なので、これ以上変な事言うのはやめます。



ONION software Copyright 1997-2023(c) All rights reserved.