シーケンシャルファイルのデータを削除したいのです。
データ領域を完全に0Byteにしたいのですが
方法がわかりません。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

OUTPUTでOPENすればOKです。




Dim nFile as Integer

nFile = FreeFile

Open "ここはファイル名(ファイルパスもOK)" For Output As #nFile
Close
    • good
    • 0
この回答へのお礼

ありがとうございました。
確認できました。

お礼日時:2002/01/21 23:48

Output モードで開くとその時点で、ファイルの中身が消えないでしょうか?



Dim Filenum As Integer
Filenum = FreeFile()
Open "C:\Test.txt" For Output As #Filenum
Close (Filenum)

のようなコードで確認しました。
書き込み禁止属性のついていないファイルなら可能です。
ファイルを削除したいのなら、Killステートメントで可能です。
    • good
    • 0
この回答へのお礼

ありがとうございました。
確認できました。

お礼日時:2002/01/18 21:34

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qファイル内の(&H0A)を(&H0D0A)に変換したい

改行コードが0A(16進数)となってしまっているファイルを
0D0A(16進数)に変換したいのですが、どのような方法がありますか?
出来れば時間の掛からない方法が知りたいです。

ファイルは、ヤマト運輸の着店コードファイルで件数が3000件ほどあるのですが
改行コードが0AなのでInput#で読み込めません。

ファイルを変更しなくても良い方法があればそれでも結構です。

Aベストアンサー

置き換えてファイルの保存をしたかったのですね・・・

それと、やはり読み込まない事には、置き換えれないですよ。
だって読んでないんだもん・・・


んで、置き換えで保存するのに一番早いのは#2に書いてあるようにまず
「GETで読む」
「Replace関数で置き換える」← 一度でファイル内の文字列を変換できます(VB6仕様)
「PUTでファイルに落とす」
これをファイルの数だけ繰り返す処理になると思います。

大まかにわけると、たった3つの処理で済みます。

QWinsockで1460Byte以降のデータが細切れに

度々お世話になってます。
VB6.0、Winsockで、チャットプログラムを作っているのですが・・・

20文字のヘッダーで、処理が識別されるプログラムを作っているんですが、1460バイトを超えるデータが途中で切れて、ヘッダー無しの状態になって、処理を識別できないんですが・・・。

1460という数字は、DataArrivalのbytesTotalで調べたのですが、制御コード(のバイト数)とか、決まっているのでしょうか?

Send メソッドで通信する場合、一度に送るサイズを1460バイトにしたいのですが、サーバ←→クライアント間で、自力で作るしかないですかね・・・?

データを分割して、配列 myArray(partNum) にする。 先ほどと同じ処理のACKをクライアントが受信したら、partNumを+1して、データを送信。

client.SendData <処理A> 1:○○
server.GetData <A> 1:○○
server.SendData <A> 1:ACK
client.SendData <A> 2:●●



client.SendData <A> 9999:End

方向性はあってますかね?

なにか、楽な方法ありませんか?(汗)

cf.
http://bbs.wince.ne.jp/ch1/mqbbs.cgi?MODE=MSG&NUM=5156&FILE=bbs.log.51
http://bbs.wince.ne.jp/ch1/mqbbs.cgi?&FILE=bbs.log.51&MODE=MSG&NUM=5161

度々お世話になってます。
VB6.0、Winsockで、チャットプログラムを作っているのですが・・・

20文字のヘッダーで、処理が識別されるプログラムを作っているんですが、1460バイトを超えるデータが途中で切れて、ヘッダー無しの状態になって、処理を識別できないんですが・・・。

1460という数字は、DataArrivalのbytesTotalで調べたのですが、制御コード(のバイト数)とか、決まっているのでしょうか?

Send メソッドで通信する場合、一度に送るサイズを1460バイトにしたいのですが、サ...続きを読む

Aベストアンサー

>途中で切れて、ヘッダー無しの状態になって、処理を識別できないんですが・・・。

TCPはそういうものなんですが・・・(^^;

WinSockコントロールでいうところのDataArrivalイベントにおいて、クライアントから送られたデータが1回(のイベント)で処理できるという保証はありません。

極端な話「こんにちわ」と送っても「こん」「にちわ」と届くかもしれない、ということです。(順序は保証されているので、繋げれば必ず「こんにちわ」になります)

>1460という数字は、DataArrivalのbytesTotalで調べたのですが

MTUとかRWINとか、ADSL初期の頃話題になった「ウインドウサイズ」という言葉がわかりやすいと思います。
簡単に言うと、そのI/F(LANカードとか)がどのくらいのパケットを一度で受け取れるか、を示します。これは変更可能ですが、そもそもTCPというのは「細切れでデータを送ってくる」ものですから、これを変えるのはナンセンスだと思います(^^;

DataArrivalでデータを受け取ったら、バッファに追加。そこでフッタデータが見つかればそこまでのバッファを処理データとして、バッファからその部分を消去し、処理データを処理する。
バイナリデータ送受信の場合、バイナリデータとヘッダ・フッタデータが被ることが考えられるので、ヘッダに「今から***Byteのデータを送る」ということを明記させる仕様にする。

こんな感じではないでしょうか。

>途中で切れて、ヘッダー無しの状態になって、処理を識別できないんですが・・・。

TCPはそういうものなんですが・・・(^^;

WinSockコントロールでいうところのDataArrivalイベントにおいて、クライアントから送られたデータが1回(のイベント)で処理できるという保証はありません。

極端な話「こんにちわ」と送っても「こん」「にちわ」と届くかもしれない、ということです。(順序は保証されているので、繋げれば必ず「こんにちわ」になります)

>1460という数字は、DataArrivalのbytesTotalで調...続きを読む

Q[VBScript][wsh]byte単位でのデータの切り出し

以前LenBに関して質問した者です。

今回は
「ある文字列の○byte目から△byte分取得する」という処理で困っています。

MidB関数を使うと思うのですが、Unicodeの為、
BASP21の.KconvでSJISに変換してあげています。

HOGEasc = objBasp.Kconv(MidB(tmpLine, ○, △),1)

ここで問題となるのが、切り出した文字列が化けてしまうのです。
以下のようにもう一度Unicodeに変換してあげてもダメです。
HOGEuni = objBasp.Kconv(HOGEasc,4)

いろいろ試してみましたが、お手上げ状態です。
このような処理はできないのでしょうか?

どうぞよろしくお願いいたします。

Aベストアンサー

>以前LenBに関して質問した者です。
前回の質問については、Openのままでは、回答した私としては、けじめがつきませんから、マナーとして、閉めてくださいませんか?

>tmpLine:"123456789あいうえお"

>開始位置:2 、指定バイト長:5 > "23456"
>開始位置:10、指定バイト長:4 > "あい"

これは、wsf ではありませんが、このようにすればできるのでは?
つまり、byte で数えて、byte 長に満たしたら、その文字の場所を出すという方法です。後は、wsf に合うように、換えてください。それから、あまり、長い文字列は、かなり遅くなりますね。

'bytecount:
tmpline = "123456789あいうえお"
kaishi = 2
wnum = 5
msg ="開始位置:" & kaishi & " 、指定バイト長:" & wnum
Set objBasp = Wscript.CreateObject("Basp21")
k = 1
For i = 1 To Len(tmpline)
ReDim Preserve bufarray(k)
moji =Mid(tmpline,i,1)
bufarray(k) = LenB(objBasp.Kconv(moji, 1, 5))
k = k + 1
Next

For j = 1 To UBound(bufarray)
cnt1 = cnt1 + bufarray(j)
If cnt1 > kaishi Then
Exit For
End If
Next

For m = j To UBound(bufarray)
cnt2 = cnt2 + bufarray(m)
If cnt2 > wnum Then
Exit For
End If
Next
Msgbox msg
MsgBox Mid(tmpline, j, m - j)

>以前LenBに関して質問した者です。
前回の質問については、Openのままでは、回答した私としては、けじめがつきませんから、マナーとして、閉めてくださいませんか?

>tmpLine:"123456789あいうえお"

>開始位置:2 、指定バイト長:5 > "23456"
>開始位置:10、指定バイト長:4 > "あい"

これは、wsf ではありませんが、このようにすればできるのでは?
つまり、byte で数えて、byte 長に満たしたら、その文字の場所を出すという方法です。後は、wsf に合うように、換えてください。それか...続きを読む

QVBA(1つのファイルに転記する方法)よろしくお願いします!!

〈フォルダ内のファイル名に限らず、2種類のファイルを1つの集計用ファイルに集計し、それぞれ別々のシートの転記するマクロ。〉


マクロ・VBA初心者です。

ご教授、宜しくお願いします。


上記の動作を行う、VBAコードを教えていただけたら幸いです。
コードに関しては下記のリンクに貼っています。(字数等の関係により)



■詳細

社員から経費精算書・交通費精算書のファイルをもらい一つのフォルダーに入れた状態で集計用のファイルに転記する)


経費のデータは→経費用データのシート
交通費は→交通費用データのシート



経費精算書から取り出したい(集計用Excelに転記したい)値のセルは、B4、B5、A列からH列の9行目から下のセルが埋まっている値(9行目含む

交通費精算書から取り出したい値のセルは B4、B5、AからK列の9行目から下のセルが埋まっている値(9行目含む)

仮にシートを条件で切り分けるとしたらセルA1がそれぞれ下記のように記入があります。

経費A1セル
General Expense Report
交通費A1セル
Travel Expense Report

また、過去にも質問をさせていただいたのでこちらをリンク貼らせていただきます。




■コードの記入は下記のリンクに貼っています。

http://okwave.jp/qa/q9174557.html

最終行の列が字数制限で消えてまいした。

'----------------------------------------
Next i

End Sub

■詳細と経費と交通費の異なる点記入

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12159449297


非常に困っています、

何卒、よろしくお願いいたします。

〈フォルダ内のファイル名に限らず、2種類のファイルを1つの集計用ファイルに集計し、それぞれ別々のシートの転記するマクロ。〉


マクロ・VBA初心者です。

ご教授、宜しくお願いします。


上記の動作を行う、VBAコードを教えていただけたら幸いです。
コードに関しては下記のリンクに貼っています。(字数等の関係により)



■詳細

社員から経費精算書・交通費精算書のファイルをもらい一つのフォルダーに入れた状態で集計用のファイルに転記する)


経費のデータは→経費用データのシー...続きを読む

Aベストアンサー

余計な情報が多すぎて、質問がボヤけてます。

要は、ファイルを開いた時に二種類に判別できたらいいんですよね?
で、その判別方法はファイルのA1セルなんですよね?
もう答えが出ていると思うんですが?コードを見る限り、初心者でもなさそうですし。

それとも、それ以外の要望がある?
端的にまとめてから、再度質問されては?

Qcsvファイルを読み込んでデータベースのデータと比較して異なっていた場

csvファイルを読み込んでデータベースのデータと比較して異なっていた場合は更新するようにしたいと考えています。

csvデータ…10
データベースから取得したデータ…10.0
※比較するテーブルのフィールドのデータ型はFLOAT型です。

文字列を数値変換して比較、またはデータベースから取得したデータを文字列に変換して比較、どっちがいいのでしょうか。
またどのように比較すればいいのでしょうか。

くだらない質問かもしれませんが宜しくお願いします。

Aベストアンサー

No1の方が言いたいこと良くわかります。けして、質問の意味取り違えていませんよ。

>文字列を数値変換して比較、またはデータベースから取得したデータを文字列に変換して比

問題になるのは、対象となるデーターの背景です。何のデーターを対象としているかです。

例えば、計測又は計量したデーター10.10 と10.1 では意味が違いますね。10.10では100分の1まで計測したが100分の1は0だったという意味です。10.1は10分の1までの計測で、100分の1の値は不明と言うことです(又は四捨五入などの圧縮したデーター)。

数値的には同じ10.1ですが、何桁で扱うかが問題になります。DBでデーター型で扱う利点は、このような時に精度をそろえられるところにあります。文字列として扱ってしまうと、余計な(0と言う文字を追加)作業が出てくる場合もあります。

逆にそんなのどうでもいい、と言う場合もたくさんあり、ケースbyケースです。

文字列として"10.10" == "10.1"なるのかと言う問題ですね。これを==で結びたいときは数値として扱うべき、そうでない時は文字列として扱うと簡単です。

と言うことで回答はケースbyケースです。

No1の方が言いたいこと良くわかります。けして、質問の意味取り違えていませんよ。

>文字列を数値変換して比較、またはデータベースから取得したデータを文字列に変換して比

問題になるのは、対象となるデーターの背景です。何のデーターを対象としているかです。

例えば、計測又は計量したデーター10.10 と10.1 では意味が違いますね。10.10では100分の1まで計測したが100分の1は0だったという意味です。10.1は10分の1までの計測で、100分の1の値は不明と言うことです(又は四捨五入などの圧...続きを読む


人気Q&Aランキング

おすすめ情報