VBでAとBのテキストファイルを連結して、Cというファイルに書き出す処理を行いたいのですが、何か良い方法はないでしょうか? CをオープンしてAとBの内容を書き出すのが一般的だと思いますが、この方法以外でのエクセレントな回答をお待ちしています。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/01/27 17:10:01
  • 終了:--

回答(9件)

id:yoneyore No.1

riceflow回答回数95ベストアンサー獲得回数52004/01/29 21:59:24

ポイント10pt

http://members.jcom.home.ne.jp/jintrick/Personal/mkedit.html

MK Editorユーザのための html文書作成Tips - Personnel

URLはダミーです.

Bのデータを読み込んでAのファイルの後ろに書き込んで別名保存では駄目ですか?少なくともCファイルのファイルポインタを受け取る時間は短縮できます.ただテキストエディタでできても,VBで可能かはわからないですが.

id:ryuk No.2

ryuk回答回数41ベストアンサー獲得回数02004/02/01 14:05:09

ポイント10pt

Win32APIのCopyFileAを使えば見かけ上の手間は減りますね。

1. Cを新規作成

2. CにAを追記

3. CにBを追記

1. APIのCopyFileAで A を C にコピー

2. CにBを追記

id:topo No.3

topo回答回数47ベストアンサー獲得回数02004/02/02 20:04:39

ポイント10pt

方式的にエクセレントな方法という事で、

「優秀な」の解釈には当てはまらないですが、通常のA+B=Cではなく最初にCを作ってしまう。

作ってからAやBと比較する。

これをやると天文学的な偶然がないと一致しないと思われるので、これを1文字づつ行う。

例えば

Aというファイルの中身が「本日の天気は」

Bというファイルの中身が「雨の確立100%」

だとして。

Cにキャラクタ順に文字を入れAの「本」と一致すれば次の文字に以降というように、

Cを作ってからAやBと比較すると言う方法はいかがでしょうか?

処理的には凄く重く無駄な作業ですが・・・

id:kn1967 No.4

kn1967回答回数2915ベストアンサー獲得回数3012004/01/27 17:21:40

ポイント15pt

http://www.hatena.ne.jp/1075191001#

VBでAとBのテキストファイルを連結して、Cというファイルに書き出す処理を行いたいのですが、何か良い方法はないでしょうか? CをオープンしてAとBの内容を書き出すのが一般.. - 人力検索はてな

URLはダミーです

VBらしくはないのですが、DOSのTYPEコマンドを使って、

type a.txt > c.txt

type b.txt >> c.txt

という方法も面白いのではないでしょうか?

id:nekomilk

本質的には同じ処理なので、違う視点はないでしょうか?

2004/01/27 17:27:30
id:karla No.5

karla回答回数130ベストアンサー獲得回数42004/01/27 17:24:11

ポイント15pt

URLはダミーです。

Shell ”command.com /c copy c:¥AFile + c:¥BFile CFile”, 1

こんな感じでCopyコマンドを使うとファイルを連結できます。

id:nekomilk

これも同じ処理になると思います。実際のコードでなくてもいいので、他の「実現可能な方式的」なアイデアは何かないでしょうか?

2004/01/27 17:30:02
id:k_ahiru No.6

k_ahiru回答回数23ベストアンサー獲得回数02004/01/27 18:06:48

ポイント15pt

A を読み書きモードでオープン、Aのデータの尻尾にBのデータを書き込み。

#Aのデータが書き換わってしまいますね。Aをバックアップ、だと結局は同じ。

id:nekomilk

うーん。やっぱり無理かなぁ?

2004/01/27 18:31:19
id:oojiji No.7

oojiji回答回数38ベストアンサー獲得回数02004/01/27 20:00:46

ポイント15pt

URLはダミーです。

ディスクのファイル管理部分を直接書き換えて、強制的に連結する方法も論理的には可能ですが、元の質問はテキストファイルの連結でしょ。セクター単位で直接ディスクを操作する必要があるならともかく、意味があるとは思えませんが。

id:nekomilk

で、回答は?

2004/01/27 20:28:19
id:DenGaX No.8

DenGaX回答回数32ベストアンサー獲得回数02004/01/27 22:02:48

ポイント15pt

不可能です。

ディスクを直接操作してもテキストファイルの連結は出来ません(セクタサイズとテキストファイルサイズが合っていないと繋がらない。EOFコードを取ることが出来ない。NTFSでは使えない)。従って質問の中の一般的なほ方法かもしくは1.の回答がもっともスマートな方法です。

あまり一般的でない方法も含めると、メモリマップドファイルAPIを使用してファイルに書き込む方法があります(URL参照)。

但し、これを使用しても読み込んだデータをVB管理のメモリ上に置くかWindowsのファイルキャッシュに置くか程度の違いで、やっている事は同じです。

id:nekomilk

一般的な方法以外での解法でお願いします。

2004/01/28 06:31:40
id:kiichigo No.9

kiichigo回答回数167ベストアンサー獲得回数02004/01/27 22:43:57

ポイント15pt

CALL fileAandBtoC()

の一行ですべて処理が終わればVBでは一番エクセレントだと思います。

CでDLLをつくりコールするか、あるいは、別プロジェクトでActiveXDLLを作成し、それを呼び出せばいいと思います。

id:nekomilk

方式的にエクセレントなものをお願いします。

欲しい回答は、要求を実現する知性です。

それが含まれていない回答は、ご遠慮ください。(ポイントもタダじゃないんで)

一般的な方法やセクタ操作やそれしかないという回答は誰でも思いつきます。

2004/01/28 06:35:08

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません