文字列配列の一括代入

解決


なり  2007-08-28 18:53:39  No: 137273

VB6にて、固定長文字列の配列についての質問です。

以下の2つの配列があります
   Dim a(1 To 50000) As String * 10
   Dim b(1 To 50000) As String * 10
   
   
Q1.配列aはファイルから得ますが、ループ処理せず、一括で得る方法はありますか?

Q2.配列aを全てを配列bにコピーするのに、ループ処理せず、一括で行う方法はありますか?

ちなみに配列の中身の文字列には半角文字のみで構成されています。

Q2についてはAPIのCopyMemoryを使ってみたりしましたが、CopyMemoryでは無理なんですね。数値型では可能なのですが・・・

すみませんが、よろしくお願いしますm(__)m


ガッ  2007-08-28 19:04:12  No: 137274

> Q1.配列aはファイルから得ますが、ループ処理せず、一括で得る方法はありますか?
ファイルから"どうやって"得ていますか?

-----------------------------------
以上、読み込み方があやふやなのでとりあえず簡単なのを書きました

Option Explicit
Const size = 10
Private Type hoge
    ary(1 To size) As String * 10
End Type

Private Sub Form_Load()
    Dim a As hoge
    Dim b As hoge
    Dim i As Long
    
    Open "hoge.bin" For Binary As 1
        Get #1, , a
    Close 1
    
    b = a
    For i = 1 To size
        Debug.Print b.ary(i)
    Next
End Sub


あん  2007-08-28 19:15:14  No: 137275

こんにちは。
TYPE型しか試したことがないのですが
LSETを使ってみてはどうでしょうか?
このままでは上手くいかないかもしれませんが
TYPE型にすれば上手くいくと思いますよ。


なり  2007-08-28 19:50:10  No: 137276

ガッさん、あんさんありがとうございます。

ただ、困った事に配列のサイズが大きく、64kbまでしか定義できないので、構造体(TYPE型)が使えないのです・・・

すみません、引き続き良案がありましたらよろしくお願いします。


あん  2007-08-28 20:53:59  No: 137277

定義は変えてはダメなのかな?
Dim a(1 To 50000) As String * 10

Private Type Hoho
  a as string * 10
End Type 
dim a(1 To 50000) As Hoho
は無理なのかな?


あん  2007-08-28 20:57:55  No: 137278

あこれは無理だった・・


魔界の仮面弁士  2007-08-28 21:21:01  No: 137279

> Q1.配列aはファイルから得ますが、ループ処理せず、一括で得る方法はありますか?
固定長配列にするのではなく、単一の String 型変数に受けておき、
そこから、Mid 関数で切り出すような Function を実装するのが手軽かと。

> Q2.配列aを全てを配列bにコピーするのに、ループ処理せず、一括で行う方法はありますか?
単一の String 変数なら、コピーも容易ですよね。


なり  2007-08-29 18:10:02  No: 137280

皆様、色々なご回答やアドバイスありがとうございました。
解決!!とはいきませんでしたが、とりあえず、ループ回数を減らす(可変)方法で回避しました。
要素の数が少ない時と長いときで読み込みや転送時間が変わってしまいますが、何万にもなることは少ないので、それで逃げます。


なり  2007-08-29 18:10:25  No: 137281

すみません、解決入れるの忘れてました。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加