Gポイントポイ活 Amazon Yahoo 楽天
無料ホームページ 楽天モバイル[UNLIMITが今なら1円]
海外格安航空券 海外旅行保険が無料!
■掲示板に戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 最新50
メモ2
- 420 :名無しさん@勉強中:07/01/07 03:35:12 ID:MgVPKa7e
- >>372のコード、あんまりよろしくないみたい。
ファイルの終端
パターンA
aaaaaaa{EOF}
のときと、
パターンB
aaaaaaa{LF}
{EOF}
のときがあって、パターンAでもBでもLENの中身は>0になる。
だからいずれの場合も改行コードが入ってしまう。
結果としては
パターンA+
aaaaaaa{CR+LF}
{EOF}
と
パターンB+
aaaaaaa{LF}
{CR+LF}
{EOF}
で、パターンBのときは空行が1個追加される。
まぁ、パターンAをjaneなんかで読むと、ファイルが終わってないような処理のループになるから、
ましといえばましなんだけど。
これを回避しようとすると、textファイルを作ることになるが、普通に書き込むと改行は{CR+LF}になる。
datファイルでは改行は{LF}しか入ってないから、ファイルのサイズが大きくなるんだよね。
一回janeで読むと変換されるみたいだけど。
バイナリイレベルで扱えるなら、[EOF]の前の{LF}を判断して追加すれば良いんだけれど。
- 421 :名無しさん@勉強中 ★:07/01/07 13:37:50 ID:???
- >>420さん
いやー難しいですねー。
とりあえず>>372の
'最終行が長さ0以上の時(EOFでないとき)空行追加
の直前行あたりに
wscript.echo arrFileLines(Ubound(arrFileLines))
を入れて最終行を実体表示するようにして実行してみても
空行は出てこないです。
でもファイルを見てみると、最終行で2回改行しているdatがあるので
もしかしたらUbound(arrFileLines)だと
空行を認識していないのかも(間違ってるかもですが)。
メモリ消費がたぶんすごいので単なる実験ですが
ReadAllでデータ丸ごと読み込んで改行で分けた最終行だとどうだろうと
Set su = fs.OpenTextFile(tuika, ForReading)
の直後あたりに
su_all = su.ReadAll()
wscript.echo su_all
wscript.echo arrFileLines(Ubound(Split(su,vbCr)))
とやってみたらwshが強制終了してしまうようになったのは
さてメモリ不足なのかスクリプトエラーなのか。
あとは[EOF]直前のLFの文字コードを見てみるくらいなのかな。
ここらで私の頭がオーバーフロー
自分用メモ
掲示板過去の記事154
http://www.roy.hi-ho.ne.jp/mutaguchi/bbs/list154.shtml
DeNUL.VBS(Windows95/98/Me / ユーティリティ)
http://www.vector.co.jp/soft/win95/util/se355946.html
Windows Script ノスゝメ
http://russiantea.dip.jp/vbswsh/19
ASP/VBS サンプル関数:『画面出力関数』
http://www.b-s-c.co.jp/~moritake/oboegaki/h_vbs_fnc02.html
Windows
http://www.h2.dion.ne.jp/~junsei/Windows.htm
- 422 :名無しさん@勉強中 ★:07/01/07 13:42:26 ID:???
- 上のスクリプト間違ってる予感。
wscript.echo arrFileLines(Ubound(Split(su,vbCr)))
↓
wscript.echo su_all(Ubound(Split(su_all,vbCr)))
でもエラーメッセージも出ずに強制終了するなー。
- 423 :名無しさん@勉強中 ★:07/01/07 14:03:26 ID:???
- とかいたけど
もしかしたらまるまるまちごうておるのかも
アハハハーおはなばたけがみえるよーハハハハー
- 424 :名無しさん@勉強中:07/01/08 02:39:12 ID:cL/xX2GZ
- >>372 の部分の処理 改訂版
datの最後をバイナリでLF、もしくはCRでないときに空行追加。
dim sOut
dim sIn
set sOut = CreateObject("ADODB.Stream")
set sIn = CreateObject("ADODB.Stream")
With sOut
.type = 2
.charset = "iso-8859-1"
.open
End With
With sIn
.type = 1
.open
End With
sIn.LoadFromFile(tuika)
line = sIn.Read
sIn.Close
ch = AscB(MidB(line, LenB(line) ,1))
if (ch <> 10 and ch <> 13) then
Set su = fs.OpenTextFile(tuika, ForAppending)
su.WriteLine
su.Close
End If
- 425 :424:07/01/08 02:43:03 ID:cL/xX2GZ
- datの最後をバイナリでLF、もしくはCRでないときに空行追加。
sOutのブロックはいらなかった。
dim sIn
set sIn = CreateObject("ADODB.Stream")
With sIn
.type = 1
.open
End With
sIn.LoadFromFile(tuika)
line = sIn.Read
sIn.Close
ch = AscB(MidB(line, LenB(line) ,1))
if (ch <> 10 and ch <> 13) then
Set su = fs.OpenTextFile(tuika, ForAppending)
su.WriteLine
su.Close
End If
- 426 :名無しさん@勉強中 ★:07/01/08 19:50:46 ID:???
- >>424-425
うーむ
ADODB.streamを使うしかないのかな・・
win98/Meではデフォルトで使えない機能だもので
躊躇しておったです。
だもんで検証も出来ない・・。
文字コード変換とかで以前やったものがあったので見てみると
http://www.geocities.jp/mirrorhenkan/others/allescape16change.html
JavaScriptでの16進数変換だと改行は「%0A」になるですけど
VBScriptだとそういう訳にはいかないのだろうか。
501KB
続きを読む
掲示板に戻る 全部 前100 次100 最新50