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

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

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

全過去ログを検索

<< 0 >>
■2217  Re[2]: C# goto
□投稿者/ aoa -(2007/03/26(Mon) 23:29:51)
    チェック忘れました。
記事No.2211 のレス / END /過去ログ10より / 関連記事表示
削除チェック/

■8777  Re[2]: 複数コンボボックスの連動
□投稿者/ みこ -(2007/10/09(Tue) 23:26:11)
    >mあさん
    ありがとうございます。

    Indexがとれているのはデバッグで確認はできていたので県→支店にはそのままつかえるかと思ってしまったのですが、
    その次への展開はどのみちIndexは使えないのでSelectedValueでとるようにしました。

    odaOffice.SelectCommand.Parameters["BranchCode"].Value = cmbA.SelectedValue.ToString();
                                 ~~~~~~~~~~~~~~~~~~~

    これで、県→支店の絞り込みも支店→担当者の絞り込みも問題なく連動できるようになりました。

記事No.8767 のレス / END /過去ログ20より / 関連記事表示
削除チェック/

■8776  Re[1]: showmodalDialogでウィンドウを開いた時の表示
□投稿者/ 魔界の仮面弁士 -(2007/10/09(Tue) 23:23:23)
    No8762 (Alvin Lee さん) に返信
    > 今、HTMLの画面の開く方法で、showmodalDialogを使います。
    showmodalDialog ではなく、
    showModalDialog ですよね。

    > 画面の全体が上詰、左詰になります。つまり、画面全体が真ん中に表示されません。
    実際のコード等を見ていないので、具体的な回答はできかねますが、
    おそらくは、スタイルシートの内容(margin/padding あたり)に不足があるのでは。
記事No.8762 のレス /過去ログ20より / 関連記事表示
削除チェック/

■10022  Re[5]: VBのGet,Setを持つpropertyの意義
□投稿者/ れい -(2007/11/09(Fri) 16:05:39)
    No10021 (よねKEN さん) に返信
    >>古い VB では ReadOnly にできるという利点もあったのですが、
    >>今の VB にはフィールドにも ReadOnly が付けられますから除外ですね。
    >
    > プロパティのReadOnlyとフィールドのReadOnlyは異なるので、
    > これも一つの利点になると思います。
    > プロパティの場合は、外部からはReadOnlyですが、内部からは書き換え可能ですよね。


    Setがなければ内部からも書き換えできませんよ。

    ところで。

    >最終的な結論としては 「副次的な作用の保証」 と 「値の検証」 と 「デザイナ」 と 「概念的な意味合い」 です。
    ListBoxとかに流し込むとき、DisplayMemberに設定するのはフィールドじゃダメだった気がします。

    そーゆー感じで、内部でリフレクションを使っているときには
    プロパティだけOKっていうのが結構あったように思えます。
記事No.10011 のレス /過去ログ23より / 関連記事表示
削除チェック/

■54886  Re[2]: コントロール移動時の処理実行の制御方法について
□投稿者/ 裕猫 -(2010/11/08(Mon) 14:25:48)
    No54878 (onotchikun さん shu さん) に返信
    > LeaveではなくValidatingでメッセージボックスを出すようにし、ボタンのCausesValidationプロパティをFalseにすればいいかと思います。
    > ボタン内の処理でthis.Close();を呼ぶときは、呼ぶ前にFormのAutoValidateプロパティもDisableにする必要があるかな?
    >
    ありがとうございました。この方法でうまくいきました。
記事No.54876 のレス /過去ログ92より / 関連記事表示
削除チェック/

■55714  Re[9]: ASP.NETのListViewで空行表示の方法
□投稿者/ もりお -(2010/12/10(Fri) 09:06:49)
    No55713(MM さん)に返信
    
    > ↑何を言ってるのかわかりませんが?
    
    データソースに空行を追加するのは必ずしもいいとはいえません。
    と、言いたかったのです。
    
    > Dim Table1 As New DataTable<---SQLデータベースからSQLDataAdapterでデータ取得7件
    > DBから取得・・・省略
    > Dim tRow As New TableRow()
    > Table1.Rows.Add(tRow)<-----1件追加
    
    System.Web.UI.WebControls.TableRow クラスは継承構造において
    System.Data.DataRow クラスとは関連がありません。
    
    DataTable.Rows プロパティに TableRow オブジェクトを追加できるのは
    Object を引数にとるメソッドを呼んでいるためです。
    System.Data.DataRowCollection.Add(params Object[] values)
    
    DataTable に行を追加するのであれば、DataRow を使うべきです。
    MMさんのコードになぞらえるならこんな感じです。
    
    Dim Table1 As New DataTable()
    DBから取得・・・省略
    Dim row As DataRow = Table1.NewRow()
    Table1.Rows.Add(row)
    
    > ListView1.DataSource = Table1<----8件
    > ListView1.DataBind()<---8件がバインドされますが、8件目はNullレコードです
    
    Table1 の各 Column のデータ型はわかりませんが、なんらかの形で TableRow が格納されて
    いるはずです。TableRow が格納されている DataRow を Null レコードとはいいません。
    
    今回は ObjectDataSource を使用している以上、ListView.DataSource プロパティに
    データソースを設定してはいけません。ObjectDataSource.Selected イベントのハンドラーで
    処理すべきです。
    
    protected void ObjectDataSource1_Selected(
        object sender, ObjectDataSourceStatusEventArgs e) {
      型指定されたDataTable table = (型指定されたDataTable)e.ReturnValue;
      ...
    }
    
    > このような結果になりますが
    
    どのような結果なのでしょう。記載されているのはコードのみです。
    
    なりますが、なんなのでしょう。だから私の認識が間違っているといいたいのですか。
    それとも、MMさんはその結果を信じないといいたいのですか。
    遠慮されたのかもしれませんが、その必要はありません。最後まで言い切ってください。
    
記事No.55564 のレス /過去ログ93より / 関連記事表示
削除チェック/

■68365  CSVデータを取得・分割時、ダブルクォーテーションも取得
□投稿者/ みや -(2013/10/16(Wed) 19:29:57)

    分類:[VB.NET/VB2005 以降] 

    いつもこちらで勉強させていただいてます、みやと申します。

    使用言語
    VB2012

    やりたいこと
    CSVの情報を読み込んで処理したいのですが、その際、値を囲むダブルクォーテーションごとデータを取得したい。

    -------------------------------------------
    CSVデータ
     "111","222,222",333,"ああああ"


    現状では以下のように取得してしまうが、
      111
      222,222
      333
      ああああ

    ↓のようにダブルクォーテーションごと取得したい
      "111"
      "222,222"
      333
      "ああああ"


    現在のPGは、以下のようになっております
     Using parser As New TextFieldParser("test.csv", _
        System.Text.Encoding.GetEncoding("Shift_JIS"))

       parser.TextFieldType = FieldType.Delimited
       parser.SetDelimiters(",")

       While Not parser.EndOfData
         Dim row As String() = parser.ReadFields() ' 1行読み込み

         For Each field As String In row
           'カンマ区切りで分割したCSVデータを加工してデータセットに登録
         Next
       End While
     End Using

    ダブルクォーテーションごと値を取得する方法をご存じの方、お手数ですがご教授をお願いいたします。
    何卒よろしくお願いいたします。
親記事 /過去ログ116より / 関連記事表示
削除チェック/

■90135  Re[2]: 電圧の変化をチャートで表示する方法
□投稿者/ Azulean -(2019/02/12(Tue) 06:09:59)
    要素の移動がどうしても気になる場合は、リングバッファという言葉を調べてみてください。
    追加/上書きする時の位置が1つずつずれていく、取り出すときの先頭位置が変わっていく形になります。
記事No.90131 のレス /過去ログ155より / 関連記事表示
削除チェック/

■91939  Re[17]: C++からVBへの変換
□投稿者/ えんえん -(2019/08/12(Mon) 14:12:33)
    ありがとうございます。
    
    以下のようにしてみましたが
    やはりうまくいきませんでした。
    
    
        Public Sub one_D_FFT(ByRef xr#(), ByRef xi#())
    
    
            Dim n As Integer = xr.GetLength(0) - 1
    
            Dim theta = 2 * Math.PI / n
    
            Dim xr2 As New ArraySegment(Of Double)(xr), xi2 As New ArraySegment(Of Double)(xi)
    
            Dim tmpr(n) As Double, tmpi(n) As Double
            Dim tmpr2 As New ArraySegment(Of Double)(tmpr), tmpi2 As New ArraySegment(Of Double)(tmpi)
    
            Call fft(n, theta, xr2, xi2, tmpr2, tmpi2)
    
    
        End Sub
    
    
    
    
        ' Private Sub fft(ByVal n%, ByVal theta#, ByRef ar As ArraySegment(Of Double), ByRef ai As ArraySegment(Of Double), ByRef tmpr As ArraySegment(Of Double), ByRef tmpi As ArraySegment(Of Double))
        Private Sub fft(ByVal n%, ByVal theta#, ByVal ar As ArraySegment(Of Double), ByVal ai As ArraySegment(Of Double), ByVal tmpr As ArraySegment(Of Double), ByVal tmpi As ArraySegment(Of Double))
    
            If n <= 1 Then Exit Sub
    
            Dim radix As Integer = 2
            Do While radix * radix <= n
                If n Mod radix = 0 Then Exit Do
                radix += 1
            Loop
    
            If n Mod radix <> 0 Then radix = n
    
            Dim n_radix As Integer = n \ radix
    
            For j As Integer = 0 To n_radix - 1
    
                For m As Integer = 0 To radix - 1
    
                    Dim xr As Double = ar.Array(j)
                    Dim xi As Double = ai.Array(j)
    
                    For r As Integer = n_radix To n - 1 Step n_radix
    
                        Dim wr0 As Double = Math.Cos(theta * m * r)
                        Dim wi0 As Double = Math.Sin(theta * m * r)
                        xr += wr0 * ar.Array(r + j) - wi0 * ai.Array(r + j)
                        xi += wr0 * ai.Array(r + j) + wi0 * ar.Array(r + j)
    
                    Next r
    
    
                    Dim wr As Double = Math.Cos(theta * m * j)
                    Dim wi As Double = Math.Sin(theta * m * j)
                    tmpr.Array(tmpr.Offset + m * n_radix + j) = xr * wr - xi * wi
                    tmpi.Array(tmpi.Offset + m * n_radix + j) = xi * wr + xr * wi
    
                Next m
    
            Next j
    
            For r As Integer = 0 To n - 1 Step n_radix
    
                fft(n_radix, theta * radix, New ArraySegment(Of Double)(tmpr.Array, tmpr.Offset + r, tmpr.Count - r), New ArraySegment(Of Double)(tmpi.Array, tmpi.Offset + r, tmpi.Count - r), ar, ai)
    
            Next r
    
    
    
            For j As Integer = 0 To n_radix - 1
    
                For m As Integer = 0 To radix - 1
    
                    ar.Array(ar.Offset + radix * j + m) = tmpr.Array(n_radix * m + j)
                    ai.Array(ai.Offset + radix * j + m) = tmpi.Array(n_radix * m + j)
    
                Next m
    
            Next j
    
    
        End Sub
    
    
    
    
    > において、「y.Array」や「z.Array」は、配列 x への参照を意味します。
    
    > なので、x(3) = 100 と代入すれば、z(1) も同様に 44 から 100 へと変化します。
    
    「y.Array」や「z.Array」を書き換えた時
    元の配列xも同時に変化してくれないといけないのではないのでしょうか?
    元の配列xは変化しない方が良いという意味ですか?
    
    
    > それと、むやみに ByRef を使わないでください。
    > 今回は出力引数が存在しないため、ByRef の出番は一切ありません。
    
    
    fftを再帰的に呼び出しているわけですが、
    この場合、配列を書き換えて元のサブルーチンに返しているわけなので、
    参照型である必要があるのではないでしょうか?
    もっとも配列の場合、ByValを指定したところで、ByRef扱いになると思いますが
    間違っていますか?
    
    もし、出力引数がなければ、
    再帰処理の意味がなくなってしまうと思うのですが・・・
    
    
    
    どうやれば良いか分からないので、
    できれば、最終回答をお教えいただけないでしょうか?
    恐らく、こうやって何度もやりとりするよりも
    効率的だと思うのですが・・・
    
    一度、回答をいただけるとステップ実行しながら
    自分の間違いに気づけると思います
    
    
    
    
記事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より / 関連記事表示
削除チェック/

■91942  Re[18]: C++からVBへの変換
□投稿者/ 魔界の仮面弁士 -(2019/08/12(Mon) 17:33:28)
    No91939 (えんえん さん) に返信
    > できれば、最終回答をお教えいただけないでしょうか?
    > 恐らく、こうやって何度もやりとりするよりも
    > 効率的だと思うのですが・・・

    申し訳ありませんが、現状は言語文法的な側面からしか回答できません。

    自分は高速フーリエ変換について正確に理解しているわけではないため、
    「作成依頼」に近い「質問」をされても、デバッグすることができないためです。


    実引数としてどういう値を入れた時に、なんという結果が返されるのか示す、
    ブラックボックステストのための情報があるわけでも無いですし。



    > もし、出力引数がなければ、
    > 再帰処理の意味がなくなってしまうと思うのですが・・・

    今回は ByVal で十分でしょう。

    改めて、 No91906 の最後の個所にあるコードで説明してみます。
    今回は意図的に ByVal を付けておきます。

      Sub Test4_Modify(ByVal a As ArraySegment(Of Double))
        a.Array(a.Offset + 1) *= 10
      End Sub

    このコードは「ByVal a As ArraySegment(Of T)」という宣言になっていますが、
    呼び出し元の値は、きちんと 10 倍になっています。


    ・ArraySegment(Of T) 構造体は値型。

    ・T が値型であれ参照型であれ、配列 T() は列は常に「参照型」。

    ・a.Array プロパティが返す型は As T() なので「参照型」。

    ・a.Array プロパティは ReadOnly であり、書き換えられない。
     たとえば「a.Array = Nothing」などと書くことはできない。

    ・a.Array プロパティから返される「一次元配列」は、
     ReadOnly というわけではないので、その要素を書き換えることができる。
     たとえば「a.Array(0) = Nothing」や「a(1) *= 10」と書いても良い。



    ==== 入力引数の例 <In> === ※いずれも ByVal で書いている。

     Sub Method1(ByVal x() As Integer)
       x(0) = 100 ' 呼び出し元の実引数では、配列の先頭要素が 100 に替わる。ただし、配列そのものが指しかわるわけでは無い。
     End Sub

     Sub Method2(ByVal lbl As Label)
       lbl.Text = CStr(Now) ' 呼び出し元で指定した Label のテキストが変化する。ただし、Label 型変数が別のラベルを指し示すわけでは無い。
     End Sub

     Sub Method3(ByVal pt As Point)
       Console.WriteLine("{0}, {1}", pt.X, pt.Y)
     End Sub


    ==== 出力引数の例 <Out> === ※いずれも ByRef で書いている。

     Sub Method4(ByRef x() As Integer)
       x = New Integer() { 0, 1, 2, 3 } ' 呼び出し元が渡した変数の内容は、新しい配列の参照へと差し替わる。
     End Sub

     Sub Method5(ByRef f As Form)
       f = New Form2() ' 呼び出し元が渡した変数の内容は、Form2 への参照へと書き換わる。
     End Sub

     Sub Method6(ByRef i As Integer)
       i = 12345 ' 呼び出し元が渡した変数の内容は、12345 という値に書き換わる。
     End Sub

     Sub Method7(ByRef pt As Point)
       pt = New Point(-1, 1) ' 呼び出し元が渡した変数の内容は、座標 (-1, 1) という値に置き換わる。
     End Sub


    ==== 入出力引数の例 <In, Out> === ※いずれも ByRef でなければならない。

     Sub Method8(ByRef x As Integer)
       x += 1
     End Sub

     Sub Method9(ByRef pt As Point)
       pt.Offset(-1, 1)
     End Sub

     Function Method10(ByVal x As Point) As Point
       pt.Offset(-1, 1)
       Return pt
     End Sub
記事No.91899 のレス /過去ログ158より / 関連記事表示
削除チェック/

■91946  Re[17]: C++からVBへの変換
□投稿者/ 魔界の仮面弁士 -(2019/08/13(Tue) 01:00:13)
    No91938 (魔界の仮面弁士) に追記
    >  Dim x() As Byte = New Byte(5) {11, 22, 33, 44, 55, 66}
    >  Dim y As New ArraySegment(Of Byte)(x)
    >  Dim z As New ArraySegment(Of Byte)(x, 2, 3)
    > において、「y.Array」や「z.Array」は、配列 x への参照を意味します。
    > なので、x(3) = 100 と代入すれば、z(1) も同様に 44 から 100 へと変化します。

    補足説明。

    System.ArraySegment(Of T) は、.NET Framework 2.0 以上で使用可能な、比較的歴史の長い型ですが、
    「 z(1) 」のようにインデクサで参照するためには、.NET Framework 4.5 以上が必要となります。

    .NET Framework 4 以下の場合、LINQ 操作にさえ対応していないのでご注意ください。




    No91942 (魔界の仮面弁士) に追記
    >> できれば、最終回答をお教えいただけないでしょうか?
    > 申し訳ありませんが、現状は言語文法的な側面からしか回答できません。


    ということで、文法的に変換しただけで、コンパイルすらしていないコードですが、
    一応、当方で翻訳してみたものを掲載してみます。

    C/C++ はそもそも専門外ですし、FFT の理論も全く理解しておらず、おまけに
    どんな値を渡せばよいのか、そしてどういう結果になるべきかというテスト要件すら不明なので、
    およそ「最終回答」と呼ぶには程遠いコードではありますが、一応参考までに。



    'void fft(int n, double theta, double ar[], double ai[], double tmpr[], double tmpi[])
    '{
    Private Sub fft(ByVal n%, ByVal theta#, ByVal ar As ArraySegment(Of Double), ByVal ai As ArraySegment(Of Double), ByVal tmpr As ArraySegment(Of Double), ByVal tmpi As ArraySegment(Of Double))

      'if (n <= 1) return;
      If n <= 1 Then Exit Sub

      '/* ---- factorization ---- */
      'for (radix = 2; radix * radix <= n; radix++) {
      '  if (n % radix == 0) break;
      '}
      Dim radix As Integer = 2
      Do While radix * radix <= n
        If n Mod radix = 0 Then Exit Do
        radix += 1
      Loop

      'if (n % radix != 0) radix = n;
      'n_radix = n / radix;
      If n Mod radix <> 0 Then radix = n
      Dim n_radix As Integer = n \ radix

      '/* ---- butterflies ---- */
      'for (j = 0; j < n_radix; j++) {
      '  for (m = 0; m < radix; m++) {
      For j As Integer = 0 To n_radix - 1
        For m As Integer = 0 To radix - 1

          'xr = ar[j];
          'xi = ai[j];
          '==> ここから修正案の新コード
          Dim xr As Double = ar(j)
          Dim xi As Double = ai(j)
          '=== ここから No91939 の旧コード
          'Dim xr As Double = ar.Array(j)
          'Dim xi As Double = ai.Array(j)
          '<==


          'for (r = n_radix; r < n; r += n_radix) {
          For r As Integer = n_radix To n - 1 Step n_radix

            'wr = cos(theta * m * r);
            'wi = sin(theta * m * r);
            Dim wr0 As Double = Math.Cos(theta * m * r)
            Dim wi0 As Double = Math.Sin(theta * m * r)

            'xr += wr * ar[r + j] - wi * ai[r + j];
            'xi += wr * ai[r + j] + wi * ar[r + j];
            '==> ここから修正案の新コード
            xr += wr0 * ar(r + j) - wi0 * ai(r + j)
            xi += wr0 * ai(r + j) + wi0 * ar(r + j)
            '=== ここから No91939 の旧コード
            xr += wr0 * ar.Array(r + j) - wi0 * ai.Array(r + j)
            xi += wr0 * ai.Array(r + j) + wi0 * ar.Array(r + j)
            '<==

          '}
          Next r

          'wr = cos(theta * m * j);
          'wi = sin(theta * m * j);
          Dim wr As Double = Math.Cos(theta * m * j)
          Dim wi As Double = Math.Sin(theta * m * j)

          'tmpr[m * n_radix + j] = xr * wr - xi * wi;
          'tmpi[m * n_radix + j] = xi * wr + xr * wi;
          tmpr.Array(tmpr.Offset + m * n_radix + j) = xr * wr - xi * wi
          tmpi.Array(tmpi.Offset + m * n_radix + j) = xi * wr + xr * wi

        '}
        Next m

      '}
      Next j


      'for (r = 0; r < n; r += n_radix) {
      '  fft(n_radix, theta * radix, &tmpr[r], &tmpi[r], ar, ai);
      '}
      For r As Integer = 0 To n - 1 Step n_radix
        '==> ここから修正案の新コード (要 No91917 の拡張メソッド)
        fft(n_radix, theta * radix, tmpr.AsSegment(r), tmpi.AsSegment(r), ar, ai)
        '=== ここから No91939 の旧コード
        fft(n_radix, theta * radix, New ArraySegment(Of Double)(tmpr.Array, tmpr.Offset + r, tmpr.Count - r), New ArraySegment(Of Double)(tmpi.Array, tmpi.Offset + r, tmpi.Count - r), ar, ai)
        '<==
      Next r

      'for (j = 0; j < n_radix; j++) {
      '  for (m = 0; m < radix; m++) {
      '    ar[radix * j + m] = tmpr[n_radix * m + j];
      '    ai[radix * j + m] = tmpi[n_radix * m + j];
      '  }
      '}
      For j As Integer = 0 To n_radix - 1
        For m As Integer = 0 To radix - 1
          '==> ここから修正案の新コード (要 No91917 の拡張メソッド)
          ar.SetValue( radix * j + m, tmpr(n_radix * m + j) )
          ai.SetValue( radix * j + m, tmpi(n_radix * m + j) )
          '=== ここから No91939 の旧コード
          ar.Array(ar.Offset + radix * j + m) = tmpr.Array(n_radix * m + j)
          ai.Array(ai.Offset + radix * j + m) = tmpi.Array(n_radix * m + j)
          '<==
        Next m
      Next j

    '}
    End Sub
記事No.91899 のレス /過去ログ158より / 関連記事表示
削除チェック/

■95016  Re[1]: WiFiの速度の概念について
□投稿者/ furu -(2020/06/12(Fri) 14:27:16)
    No95015 (はっとり さん) に返信
    質問がありまいなのと
    最近の通信技術を把握していないので
    わかる範囲で書きます。

    > 異なるプロバイダーのWiFi速度には大きな差がありますね。
    プロバイダーとWiFiは関係無いと思うので
    「プロバイダーのWiFi速度」というのがわかりません。

    > 1.サーバーからデータを取得するためにかかる時間ではなく、単位時間内に取得できるデータ量です。
    そうです。
    高速道路で言えば、車の速度でなく、一定時間に何台(車の大きさも考慮したり)通過したかです。

    > 2.個々データの取得時間がみんな光の速度でサーバーから端末に到達します。
    サーバーから1本の専用の光回線で中継がなければ、そうなります。

    > 要は極小さいデータ量であれば、どんなWiFiサービスであれ、
    > みんな同じ時間の長さでサーバーからクライアントの端末に到達します。
    そうならないです。
     ・他の端末も同一回線上で通信を行っているので
      順番が来るのを待ったりします。
     ・中継があり、その中継での処理時間や待ち時間がかかります。
     ・届かなかった場合、再送するので時間がかかります。
記事No.95015 のレス /過去ログ164より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -