イミディエイトウィンドウでfor文が使えません

解決


かまんべーる  2009-12-04 23:49:37  No: 146626

dim Stg(10) as stringと定義していて、この配列にそれぞれデータが入っている場合、VB6だとイミディエイトで

for a = 1 to 10:?Stg(a):next

とするとStg(1)〜Stg(10)の内容が表示されていましたが、.NETでは構文エラーになります。

.NETで同じ事をしたい場合、どのようにすればいいのでしょうか?


魔界の仮面弁士  2009-12-05 00:34:57  No: 146627

> for a = 1 to 10:?Stg(a):next
a = 1 ではなく、a = 0 なのでは?

> .NETで同じ事をしたい場合、
? Stg
だけで良いかと。Visual Studio のバージョンにもよりますけれども。


かまんべーる  2009-12-05 01:24:11  No: 146628

ご回答いただきありがとうございます。

>a = 1 ではなく、a = 0 なのでは?
明示的に1〜10を使用したいので、0を使用しないと言うことをよくやる物でこう書きました。

>? Stg
なるほど、配列はこれで全て表示されるのですね。

Visual Studioのバージョンを書いておらず、失礼しました。
2008 Development Editionです。

これが以下の様な構造体の配列だとどうすればよいでしょう?

Public Structure TestType
   <VBFixedString(2)> Public Test1 As String
   <VBFixedString(2)> Public Test2 As String
   <VBFixedString(2)> Public Test3 As String
End Structure

dim Stg(10) as TestType

VB6では
For a = 1 to 10:?a,Stg(a).Test1,Stg(a).Test2,Stg(a).Test3:Next
がイミディエイトで使用できました。
どうも.NETでは「,」も駄目みたいですが。


とーま  2009-12-05 03:05:38  No: 146629

イミディエイトに表示って
Debug.WriteLineのことですか?

Dim strNo as String = "123"
Debug.WriteLine(strNo)

意図違ったらすみません。strNoをFor~Next使ってstgにかえるとかではないでしょうか。


魔界の仮面弁士  2009-12-05 06:38:34  No: 146630

ループを直接実行させるのは無理だと思います。
メインコードを修正して出力した方が早いでしょう。

どうしても出力させたいなら、Visual Studio マクロを使う手はあります。
たとえば、[ツール]-[マクロ]-[マクロ IDE]の画面から、

    Sub test()
        Dim win = DTE.ActiveWindow

        'イミディエイト ウィンドウをアクティブにする
        DTE.Windows.Item("{ECB7191A-597B-41F5-9843-03A4CF275DDE}").Activate()

        'イミディエイト ウィンドウをクリアする
        DTE.ExecuteCommand("Edit.ClearAll")

        'これが、『For n = 0 To 10 : ? Stg(n) : Next』の代用
        For n = 0 To 10
            Dim s = "Stg(" & CStr(n) & ")"
            DTE.Debugger.ExecuteStatement(s, TreatAsExpression:=True)
        Next

        win.Activate()
    End Sub

なんてコードを用意し、[ツール]-[マクロ]-[マクロ エクスプローラ]などから、
デバッグ時に、上記の test マクロを呼び出してやれば、イミディエイト ウィンドウに

{ConsoleApplication1.Module1.TestType}
    Test1: "AA"
    Test2: "BB"
    Test3: "CC"
{ConsoleApplication1.Module1.TestType}
    Test1: "DD"
    Test2: "EE"
    Test3: "FF"

といった出力を展開させる事ができます。手順が煩雑になってしまいますけれどね。


かまんべーる  2009-12-08 02:53:37  No: 146631

>とーまさん
Debug.WriteLineではありません

>魔界の仮面弁士さん
なるほど、.netではループは使えなくなったんですね。
マクロは知りませんでした。
よく使う場合はこれで代用できそうです。
ありがとうございました。


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

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






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