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
名前: E-mail(省略可)

0ch BBS 2006-02-27