C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■8132  Re[3]: 約数の値と個数
□投稿者/ Name1 -(2006/11/07(Tue) 17:05:34)

    分類:[VC++(C++/CLI)] 

    No8131に返信(Name1さんの記事)
    > ■No8130に返信(επιστημηさんの記事)
    > Blue 中尉さん
    > すいません。質問にすらなってませんでした。(反省)
    >
    > 「d が N の約数である」とは、
    >>「Nをdで割った余りが0である」だから、
    >>d = 2, 3, 4, ... N に対しこの条件を満たすか片っ端から調べりゃえぇですねぇ。
    > はい。ありがとうございます。
    >
    > もう1度調べてみて、それでもわからない事が出てきましたら新規投稿いたします。
    >
    > その際はお力お貸しください。ありがとうございました。
記事No.8127 のレス / END /過去ログ8より / 関連記事表示
削除チェック/

■8759  Re[2]: ボタンを押した時のフォーカスの枠を非表示にするには?
□投稿者/ とけい -(2007/10/09(Tue) 15:58:12)
    mあ さんご返信有難うございます。

    教えて頂いた方法でばっちりでした。

    有難うございました。
記事No.8746 のレス / END /過去ログ20より / 関連記事表示
削除チェック/

■37375  Re[5]: コントロールの順序について
□投稿者/ ぱると -(2009/06/18(Thu) 11:25:13)
    z-indexは属性ではなくcssで書くものなのでその表記では無視されると思います。
    書くとしたら、
    <asp:textbox:・・・ style="z-index:3;" />
    <iframe:・・・style="z-index:2;"></iframe>
    <asp:dropdownlist・・・style="z-index:1;"></asp:dropdownlist>
    のような感じかと。
    あとはそれぞれのpositionをabsoluteにしたりとか(これもcssです)する必要はあると思いますが、
    重ねることはできてるようなので割愛します。
記事No.37234 のレス /過去ログ65より / 関連記事表示
削除チェック/

■64854  C# SaveFileDのSizeGripStyleについて
□投稿者/ Toy -(2013/01/17(Thu) 12:05:13)

    分類:[C#] 

    環境:C#, VS2008

    お世話になります。
    題記の件についてご教示よろしくお願い致します。

    SaveFileDialogの画面右下に表示されるSizeGripStyleを非表示にしたいと考えております。
    しかし、FormコントロールにはSizeGripStyleプロパティが存在するのですが、
    SaveFileDialog(FileDialog)コントロールにはSizeGripStyleプロパティが存在しません。
    自前でセーブダイアログを作成するという案以外に方法はありますでしょうか?

    以上、皆様の知恵をお貸し頂きたくお願い致します。
親記事 /過去ログ109より / 関連記事表示
削除チェック/

■91913  Re[8]: C++からVBへの変換
□投稿者/ 魔界の仮面弁士 -(2019/08/09(Fri) 13:54:08)
    2019/08/09(Fri) 17:05:54 編集(投稿者)

    No91910 (えんえん さん) に返信
    > つまり、要素数r以降の配列を
    > 別の配列にコピーすれば同じことができるわけでしょうか?

    配列をコピーする必要はありません。同じ配列を参照しておき、
    その配列のどの位置を読み書きするのかという、Index 情報さえあれば OK です。

    というか、今回の fft は配列引数の内容を書き換えるものなので、
    配列の「コピー」を渡してしまっては、再帰処理の意味が無いと思います。



    No91907 (えんえん さん) に返信
    > C++でいう
    > &tmpr[r]
    > これって要素rだけを取り出しているのでしょうか?

    実引数 &x[2] が 仮引数 y[] に渡されたとき、
    y[1] は、呼び出し元の x[3] を意味します。


    下記のようにすると、
     22, 33, 55
     11, 22, 44
    と出力されます。

    // ------------------
    void fff(double ar[])
    {
     std::cout << ar[-1] << ", " << ar[0] << ", " << ar[2] << std::endl;
    }

    int main()
    {
     double ary[5];
     ary[0] = 11;
     ary[1] = 22;
     ary[2] = 33;
     ary[3] = 44;
     ary[4] = 55;

     fff(&ary[2]);
     fff(&ary[1]);

     return 0;
    }


    > あるいはr以降を取り出しているのでしょうか?

    とりあえず、VB でこんな処理があったとします。
    この場合、仮引数「d」は、実引数「dblArray(1)」への参照となっています。

     Sub Main()
      Dim dblArray As Double() = {11, 22, 33}
      Test(dblArray(1))
      Array.ForEach(dblArray, AddressOf Console.WriteLine)
     End Sub
     Sub Test(ByRef d As Double)
      d = 123
     End Sub


    上記を実行すると、配列の内容が {11, 22, 33} から { 11, 123, 33 } に変化します。


    Test 側で dblArray(1) だけでなく dblArray(2) も書き換えられるようにする場合には、
    配列全体を渡すようにして、書き換える位置を別の引数で渡すようにします。

     Sub Main()
      Dim dblArray As Double() = {11, 22, 33}
      Test(dblArray, 1)
      Array.ForEach(dblArray, AddressOf Console.WriteLine)
     End Sub
     Sub Test(ByVal d As Double(), ByVal i As Integer)
      d(i + 0) = 123
      d(i + 1) = 456
     End Sub




    > これをVBで書くとどうなりますか?

    たとえば上記の処理は、最近の C# だとこのように書けます。

    /* 要 C# 7.2 以上 / VS2017 15.5 以上 */
    static void Main()
    {
      double[] dblArray = { 11, 22, 33 };
      Test(dblArray.AsSpan(1)); // { 22, 33 } が渡される
      Array.ForEach(dblArray, Console.WriteLine); // { 11, 123, 456 } が渡される
    }

    private static void Test(Span<double> span)
    {
      span[0] = 123;
      span[1] = 456;
    }


    将来的には Visual Basic でも同じように書ける様になると思いますが、
    現状の言語仕様だと、自前で位置管理の変数を追加するなり、
    ArraySegment を経由させるなり、あるいは IntPtr で
    アンマネージ管理する力技ぐらいしか手が無いかと思います。

    今回のように再帰呼び出しなら、クロージャにまとめてしまっても良いかも。
記事No.91899 のレス /過去ログ158より / 関連記事表示
削除チェック/

■91940  Re[18]: C++からVBへの変換
□投稿者/ 魔界の仮面弁士 -(2019/08/12(Mon) 16:25:23)
    No91939 (えんえん さん) に返信
    No91939 (えんえん さん) に返信
    > 以下のようにしてみましたが
    > やはりうまくいきませんでした。

    同じ移植ミスを、他の行でも繰り返していますよ。

    Dim z As ArraySegment(Of T) における、
    z(0) と z.Array(0) の違いをもう一度見直してみましょう。


    >> において、「y.Array」や「z.Array」は、配列 x への参照を意味します。
    >> なので、x(3) = 100 と代入すれば、z(1) も同様に 44 から 100 へと変化します。
    > 「y.Array」や「z.Array」を書き換えた時
    > 元の配列xも同時に変化してくれないといけないのではないのでしょうか?

    はい。ご認識の通り、連動して変化します。
    そして先のそれは「変化することを理解していただくための説明コード」として記載したものです。


    No91938 の説明コードにおいて、読み取り専用の z(1) が x(3) と同じ物であり、
    それが z.Array(z.Offset + 1) を通じて書き換えられることを理解できていれば、
    >>> Dim xr As Double = ar.Array(j)

    >>> xr += (wr0 * ar.Array(r + j) - wi0 * ai.Array(r + j))

    >>> tmpi.Array(m * n_radix + j) = xi * wr + xr * wi

    >>> ai.Array(radix * j + m) = tmpi.Array(n_radix * m + j)
    といったミスをおこさずに済んだかと思います。


    あるいはこの移植ミスが理解不足によるものでもなく、
    単なるうっかりミスだったのであれば、「ステップ実行」して
    配列の内容を確認しながら動作チェックしていれば、
    その間違いに気づけたかもしれません。


    いずれにせよ、毎回、Offset を考慮したコードを書くのは移植ミスを引き起こしやすいので、
    元の C/C++ コードに近い記述にできるよう、何らかのヘルパーメソッドを
    設けることをおすすめしておきます。 No91917 のような拡張メソッドのように。


    > 元の配列xは変化しない方が良いという意味ですか?

    変化させる必要があるからこそ、ArraySegment の利用を提案した次第です。
    変化しないと再帰処理させられないという点は、 No91913 の冒頭でも述べていますね。


    ArraySegment を使わない場合は、御自身で書かれた r_st% のように、
    Offset に相当する引数をそれぞれの配列に対して用意する案が使えます。

    配列が 4 つあるので、本来であれば管理すべき添字も 4 つ分必要ですが、
    今回のケースでは tmp 版か否かで 2 系統あれば十分かと思います。
    (複素数の虚数部と実数部は同じ添字管理で済むため)


    > fftを再帰的に呼び出しているわけですが、
    > この場合、配列を書き換えて元のサブルーチンに返しているわけなので、
    > 参照型である必要があるのではないでしょうか?

    「『参照型』と『値型』の違い」の話と、
    「『参照渡し(ByRef)』と『値渡し(ByVal)』違い」の話が
    まだごっちゃになっているように見えます。


    > もっとも配列の場合、ByValを指定したところで、ByRef扱いになると思いますが
    > 間違っていますか?

    間違っています。


    今回の『void fft(int n, double theta, double ar[], double ai[], double tmpr[], double tmpi[])』において、
    配列部は double* 型のポインタと認識されますが、
     theta = 新しいdouble値;
     ar = 新しいdouble配列を指すポインタ;
     ai = 新しいdouble配列を指すポインタ;
     tmpr = 新しいdouble配列を指すポインタ;
     tmpi = 新しいdouble配列を指すポインタ;
    という処理は一切出てきません。

    あるのは、
     tmpr[何某] = 新しいdouble値;
     tmpi[何某] = 新しいdouble値;
     ar[何某] = 新しいdouble値;
     ai[何某] = 新しいdouble値;
    だけですよね。つまり、これらの引数は「出力引数」ではありません。


    同様に、今回記載された No91939 においても、
    仮引数に対して、新しい配列や ArraySegment を割り当てている個所はどこにもないですよね。
    実引数に対して、新しい配列や ArraySegment を割り当てている個所ならばありますけれども。
記事No.91899 のレス /過去ログ158より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -