こんにちは。
実現したいことは、ユーザー定義型の要素を全て一度に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
上記の方法だと、型が一致しません。と、エラーとなってしまいました。
どなたか、アドバイスをいただけませんでしょうか?
説明不足でしたら申し訳ありません。
よろしくお願い致します。
とりあえず、
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
とでもすれば可能でしょう。
ありがとうございます。
ただ代入したいだけなので、上記の方法で確認できました。
それともう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」としただけでは無理なのでしょうか?
仕様で、こうゆうユーザー定義の中にユーザー定義をしなければならなくなり。
質問ばかりで申し訳ありませんが、アドバイスをいただけないでしょうか。
> ユーザー定義型の中にユーザー定義型がある場合は、型はただ単に
>「moji4 As String * 25」としただけでは無理なのでしょうか?
定義にもよりますが、一般的には無理です。
# LSetは使用を推奨されないステートメントですし、
# 固定長文字列も使用を推奨されない型です。
> アドバイスをいただけないでしょうか。
仕様を見直すに一票。データの保持にADOなどが使えないか試すとか、
文字列操関数を組み合わせて解決を図るとか。
# 1つの文字列として出力したいのならば、ただ各要素を結合して出力すればいいのですし。
なお、
> > # 「こうすべきかどうか...」は控え目な表記であることに注意を払ってください。
と事前に書いておいたことに注意を払っておいてください。