[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2004/09/01(Wed) 14:05
投稿者名:なお♪
Eメール:
URL :
タイトル:
【VB6】 バイナリ形式のファイル同士の結合
unicodeで内容が記載されているファイルが2つあります。
そのファイルをファイル@、ファイルAとした時にこの2つのファイルを結合させて1つのファイルを新たに作成したいのです。
新たに作成するファイルもunicodeで記載されているようにします。

単にファイル@、ファイルAを結合するだけでしたら ファイル毎にバイナリ形式で読込処理後、その内容を
バイナリ形式で書込処理すればよいかと思うのですが、結合の仕方を以下のようにしたいのです。

************************************************************

  ファイル@ ファイルA
  A     E
  B     F
  C     G
  D

だったときに、ファイル@を上部から読込、[C]の個所を見つけた場合に、
ファイルAの内容を結合させます。
その後、再度ファイル@の内容を書き込みます。

 結果
  新ファイル
  A
  B
  E
  F
  G
  D
  E
************************************************************

という感じにしたいのです。
バイナリの形式で読込処理は、バイト型変数(動的配列)に内容を格納させているので特定の文字列を見つけ
た場合に・・・といった処理の実現ができず試行錯誤しています。

何かよい策がありましたらご教授願います。

投稿時間:2004/09/01(Wed) 14:55
投稿者名:りっとっと
Eメール:
URL :
タイトル:
Re: 【VB6】 バイナリ形式のファイル同士の結合
なぜバイナリ形式で読み込まないといけないのかがわからないのですが。。。
処理の内容を見ると普通にインプット形式、アウトプット形式で読み書きすればいいような気がしますが

投稿時間:2004/09/01(Wed) 15:19
投稿者名:なお♪
Eメール:
URL :
タイトル:
Re^2: 【VB6】 バイナリ形式のファイル同士の結合
> なぜバイナリ形式で読み込まないといけないのかがわからないのですが。。。

UniCodeで記載されている文字を LineInput命令で読込、その後 Print命令で書込処理をすると文字化けが
発生してまうのです。

単純にunicodeで記載された1ファイルを別のファイルに格納する場合(単純なファイルコピー操作)であればバイナリ形式で
全ての内容を読込後、書込処理することで文字化けは発生しませんでした。

UniCodeで記載されている文字を LineInput 以外で簡単に読込処理・書込処理することで文字化けせずに文字列を抽出することが可能なのでしょうか?

投稿時間:2004/09/01(Wed) 15:50
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^3: 【VB6】 バイナリ形式のファイル同士の結合
> UniCodeで記載されている文字を LineInput 以外で簡単に読込処理・書込処理することで文字化けせずに文字列を抽出することが可能なのでしょうか?

どのエンコーディングのUnicodeなのか、にもよります。
hhttp://homepage1.nifty.com/nomenclator/unicode/ucs_utf.htm

とりあえずは、ADODB.Streamオブジェクトを試してみてください。
Charsetプロパティで、文字コードの指定が可能です。

# 指定できないエンコーディングもありますが、UTF-8 などの
# 主要なUnicode エンコーディングであれば、対応できるかと思います。

投稿時間:2004/09/01(Wed) 17:37
投稿者名:なお♪
Eメール:
URL :
タイトル:
Re^4: 【VB6】 バイナリ形式のファイル同士の結合
> どのエンコーディングのUnicodeなのか、にもよります。
> hhttp://homepage1.nifty.com/nomenclator/unicode/ucs_utf.htm>
> とりあえずは、ADODB.Streamオブジェクトを試してみてください。
> Charsetプロパティで、文字コードの指定が可能です。>
> # 指定できないエンコーディングもありますが、UTF-8 などの
> # 主要なUnicode エンコーディングであれば、対応できるかと思います。

ご返答ありがとうございます。
試行錯誤の上、構築を試みましたが、unicodeがどれにあたるのかがわからず・・・。
結局、バイナリで読込データを加工してシフトjisの形にして、テキスト自体をシフトjisの形に変えて
からファイル操作を行おうとしています・・・。

せっかく知恵を出していただいたにもかかわらず、私のほうで活用することができなくて申し訳ありま
せんでした。

投稿時間:2004/09/03(Fri) 01:58
投稿者名:Starfish
Eメール:
URL :
タイトル:
Re^3: 【VB6】 バイナリ形式のファイル同士の結合
InstrBで探せばどうでしょう。

Private Sub Command1_Click()
    Dim bytIn1() As Byte
    Dim bytIn2() As Byte
    Dim bytOut1() As Byte
    Dim bytWork() As Byte
    Dim lngFound As Long
    
    Open "c:\temp\unicode1.txt" For Binary As #1    ' 中身はUNICODE で "ABCDE"
    Open "c:\temp\unicode2.txt" For Binary As #2    ' 中身はUNICODE で "EFG"
    Open "c:\temp\unicode3.txt" For Binary As #3

    bytIn1 = InputB(LOF(1), #1)
    bytIn2 = InputB(LOF(2), #2)
    
    bytWork = bytIn1
    lngFound = InStrB(bytWork, "C")     ' UNICODEの"C"を検索
    While lngFound > 0
        bytOut1 = CStr(bytOut1) & LeftB(bytWork, lngFound - 1) & CStr(bytIn2)
        bytWork = MidB(bytWork, lngFound + 2)
        lngFound = InStrB(bytWork, "C")
    Wend
    bytOut1 = CStr(bytOut1) & CStr(bytWork)
    
    Put #3, , bytOut1
    
    Close
        
End Sub