ユーザー定義型を変数にセットするには?


はな  2008-04-30 12:12:20  No: 100638  IP: 192.*.*.*

こんにちは。

実現したいことは、ユーザー定義型の要素を全て一度にString型の変数に
設定できないかとご相談させていただきたく質問させていただきます。

Type Data
    moji1 As String * 5
    moji2 As String * 5
    moji3 As String * 5
End Type

Private MojiData As Data

Sub test()
    Dim strmoji As String

    MojiData.moji1 = "あいうえお"
    MojiData.moji2 = "かきくけこ"
    MojiData.moji3 = "さしすせそ"

    'イメージでは、strmoji = "あいうえおかきくけこさしすせそ"としたい
    strmoji = MojiData

    '↑エラーになりました。

    '↓この後、strmojiをファイルに書き込む処理があります。

End Sub


上記の方法だと、型が一致しません。と、エラーとなってしまいました。
どなたか、アドバイスをいただけませんでしょうか?
説明不足でしたら申し訳ありません。
よろしくお願い致します。

編集 削除
K.J.K.  2008-04-30 12:21:01  No: 100639  IP: 192.*.*.*

とりあえず、
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200804/08040016.txt
などの過去ログをいろいろ調べてください。

で、こうすべきかどうかはともかくとして、代入するだけなら、
# 「こうすべきかどうか...」は控え目な表記であることに注意を払ってください。

Type Buffer
    moji4 As String * 15
End Type

Sub test()
    Dim strmoji As String
    Dim strbuff As Buffer

    MojiData.moji1 = "あいうえお"
    MojiData.moji2 = "かきくけこ"
    MojiData.moji3 = "さしすせそ"

    LSet strbuff = MojiData
    strmoji = strbuff.moji4

End Sub

とでもすれば可能でしょう。

編集 削除
はな  2008-04-30 14:54:49  No: 100640  IP: 192.*.*.*

ありがとうございます。

ただ代入したいだけなので、上記の方法で確認できました。

それともう1つ、LSetステートメントというものが
あるということで、質問があるのですが、

Type Data
    moji1 As String * 5
    moji2 As String * 5
    moji3 As String * 5
End Type


この上記のユーザー定義型が、


Type Data
    moji1 As String * 5
    moji2(2) As MEISAI
    moji3 As String * 5
End Type

Type MEISAI
    money As String * 5
End Type
Private MojiData As Data


このように、ユーザー定義型の中にもう1つユーザー定義型が宣言された場合、



Type Buffer
    moji4 As String * 25
End Type

Sub test()
    Dim strmoji As String
    Dim strbuff As Buffer

    MojiData.moji1 = "あいうえお"
    MojiData(0).moji = "10000"
    MojiData(1).moji = "20000"
    MojiData(2).moji = "30000"
    MojiData.moji3 = "さしすせそ"

    LSet strbuff = MojiData     ←  ここで「型が一致しません」エラー
    strmoji = strbuff.moji4

End Sub

コンパイルすると、エラーになりました。
ユーザー定義型の中にユーザー定義型がある場合は、型はただ単に
「moji4 As String * 25」としただけでは無理なのでしょうか?

仕様で、こうゆうユーザー定義の中にユーザー定義をしなければならなくなり。

質問ばかりで申し訳ありませんが、アドバイスをいただけないでしょうか。

編集 削除
K.J.K.  2008-04-30 15:27:13  No: 100641  IP: 192.*.*.*

> ユーザー定義型の中にユーザー定義型がある場合は、型はただ単に
>「moji4 As String * 25」としただけでは無理なのでしょうか?

定義にもよりますが、一般的には無理です。
# LSetは使用を推奨されないステートメントですし、
# 固定長文字列も使用を推奨されない型です。

> アドバイスをいただけないでしょうか。

仕様を見直すに一票。データの保持にADOなどが使えないか試すとか、
文字列操関数を組み合わせて解決を図るとか。
# 1つの文字列として出力したいのならば、ただ各要素を結合して出力すればいいのですし。

なお、

> > # 「こうすべきかどうか...」は控え目な表記であることに注意を払ってください。

と事前に書いておいたことに注意を払っておいてください。

編集 削除