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

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

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

全過去ログを検索

<< 0 >>
■3952  Re[4]: クリスタルレポートの疑問…4点
□投稿者/ 2048 -(2006/05/26(Fri) 10:00:55)

    分類:[C#] 

    メインレポートのタブの表示の件が解決できました。
    内部仕様で表示されることが決まっているので、消せないそうです。

    フォーカスの件と最大化の件を宜しくお願いします。
記事No.3916 のレス /0過去ログ4より / 関連記事表示
削除チェック/

■2898  Re[18]: ★わんくま6月勉強会検討会
□投稿者/ 刈歩 菜良 -(2007/04/18(Wed) 11:36:05)
>
    No2875 (Jitta さん) に返信
    > てなわけで、「脱オタク系 ステキだし爽やかファッション講座」とか、どないでっしゃろ?

    おぉ!!すばらしい!!ないすあいでぃあー(・o・)/
    わたしも「脱レゲエ系 ステキだし爽やかファッション講座」聞いてみたい!!

    # あ、内輪うけでごめんちゃい
記事No.2454 のレス /過去ログ12より / 関連記事表示
削除チェック/

■6223  文字列の全角半角判定
□投稿者/ ek -(2007/08/06(Mon) 13:54:32)

    分類:[C#] 

    先日のオブジェクト指向講義を受けた者です。
    とてもためになりました。

    現在業務でC#を使用しているのですが、
    文字列が全て全角か、半角かという判定を行える処理を
    作ろうとしています。
    MSDNで調べているのですが、一発で結果がわかるものが見当たりませんでした。
    もしありましたら教えていただけないでしょうか。

    ない場合は独自に処理を作成します><

    欲しい処理は以下のようなものです。

    if "あいうえお" == 全て全角か?
     全角です。
    else
     半角が混ざってます。

    よろしくお願いします。

親記事 /過去ログ17より / 関連記事表示
削除チェック/

■6225  Re[1]: 文字列の全角半角判定
□投稿者/ ひろ -(2007/08/06(Mon) 14:01:54)
    もっと調べてから書き込みした方がいいと思います。
    Googleで「C# 全角文字 判定」で検索したら出てきますよ。
記事No.6223 のレス /過去ログ17より / 関連記事表示
削除チェック/

■6861  Re[5]: Control.Invokeが使えない件。
□投稿者/ NyaRuRu -(2007/08/25(Sat) 05:12:56)
    2007/08/25(Sat) 05:24:22 編集(投稿者)

    No6858 (れい さん) に返信
    > Appication.Runで何か特殊なことをやってるかもしれませんが…。
    > メインスレッドからサブスレッドのFormにInvokeしても、
    > サブスレッドからメインスレッドのFormにInvokeしても同じでしたから、
    > まぁあんまり関係ないかと思ってるんですが。
    > Application.Runが影響してるんだとするとかなり醜い実装ですねぇ。

    いや,PostMessage ってことならなおさら Win32 のメッセージ通信なわけで,DispatchMessage がいつどこでどのように起きるかは意識しないとまずいでしょう.
    その辺をすっとばして,コントロールの寿命のみに注目して再現条件を考えて良いのかどうか,私にはまだよく分かりません.(まあこれは私が GUI アプリをそんなに作らないからですが)
    .NET のプログラミングモデル上は「メインスレッドからサブスレッドのFormにInvoke」しているように見えても,実際のメッセージキューはスレッドごとにしか存在せず,従ってこれはフォーム間通信ではなくてスレッド間通信だと考えるのが妥当だと思います.

    なお,WPF の資料ですが,
    http://msdn2.microsoft.com/ja-jp/library/ms741870(vs.80).aspx#stumbling_points
    の「再入およびロック」のところでも解説されているように,GUI アプリケーションではかなり広範囲に Win32 メッセージの影響を考えないといけないので,出発点からして「綺麗」とはほど遠い状況です.
記事No.6843 のレス /過去ログ18より / 関連記事表示
削除チェック/

■6224  Re[6]: 時計回り、反時計回り判定
□投稿者/ 2リットル -(2007/08/06(Mon) 14:00:31)
    Jittaさんの言われていることと同じになりますが、
    多角形を3点ごとに分解してベクトル外積の総和をとり、
    総和が正ならば時計周り、負ならば逆周り、0ならば同一直線状というアプローチはどうでしょうか。

    件の例でいうと
    vertex[0]を点A、vertex[1]を点B、、、vertex[16]を点Q, vertex[17]を点Rとしたときに
    各3点の外積の総和は次の式になります。
    sum = AB x BC + AC x CD + ,,, + AQ x RA
    (ABは点Aから点Bへのベクトルです。)

    セインさんのコードでひっかかったことは
    外積の総和の絶対値が元の多角形の面積と異なってしまうことです。

    素人考えなので間違ってたらごめんえ。
記事No.6130 のレス /過去ログ18より / 関連記事表示
削除チェック/

■38628  Re[2]: 過去ログを探しています。
□投稿者/ Azulean -(2009/07/21(Tue) 23:26:16)
記事No.38624 のレス /過去ログ66より / 関連記事表示
削除チェック/

■77897  Re[3]: 結果がでない
□投稿者/ WebSurfer -(2015/11/28(Sat) 00:20:49)
記事No.77888 のレス /過去ログ132より / 関連記事表示
削除チェック/

■86376  Re[4]: ChartのX軸のタイトル表示
□投稿者/ mako -(2018/01/24(Wed) 01:01:56)
    No86357 (shu さん) に返信
    
    X軸の時刻を分かり易く表示したいのです。
    開始時刻からの起算ではなく、あくまでも時計としての。
    ただし如何に時計としてであってもデータすらも無い時刻は非表示。
    
    例えば下記のような15分おきのデータがあったとします。
          時刻 個数
     0    8:45    30
     1   9:00  20
     2    9:15    20
     3    9:30     5
     4    9:45    10
     5   10:00    15
    (この間は時刻を含むデータすらも無し)
     6   11:15     5
     7   11:30    20
     8   11:45     5
     9   12:00    10
    11   12:15    20
    
    このような場合での30分おきですとX軸の時刻表示は、
    開始の8:45 は 30分おきとは関係なく表示。
    あと 9:00 9:30 10:00 11:30 12:00 も表示。
    ただし10:30 11:00 は 時刻を含むデータすらも無いのですから非表示。
    
    これと同じことは暦でも言えます。
    例えば1月ですと31日までありますが2月は28日です。
    当然2月は29〜31日は無い訳ですから非表示となります。
    実際はそれプラス土日や祝祭日も非表示となります。
    
    ちなみに普通に使われてるグラフもそのような表示となっています。
記事No.86333 のレス /過去ログ148より / 関連記事表示
削除チェック/

■86377  Re[5]: ChartのX軸のタイトル表示
□投稿者/ shu -(2018/01/24(Wed) 07:26:08)
    No86376 (mako さん) に返信
    
                    Dim isFirst = True
                    For Each row In _tbl.Select("", "t")
                        Dim dt = row.Field(Of Date)("t")
                        If isFirst OrElse dt.Minute = 0 OrElse dt.Minute = 30 Then
                            With .CustomLabels.Add(dt.AddMinutes(-3).ToOADate, dt.AddMinutes(3).ToOADate, dt.ToString("HH:mm"))
                                .RowIndex = 0
                            End With
                        End If
                        isFirst = False
                    Next
    
記事No.86333 のレス /過去ログ148より / 関連記事表示
削除チェック/

■86378  Re[6]: ChartのX軸のタイトル表示
□投稿者/ mako -(2018/01/24(Wed) 08:38:07)
    No86377 (shu さん) に返信
    
    すみません。
    以前教えていただいた No86344 のどの部分の差し替えですか? 
    
    > ■No86376 (mako さん) に返信
    > 
    >                 Dim isFirst = True
    >                 For Each row In _tbl.Select("", "t")
    >                     Dim dt = row.Field(Of Date)("t")
    >                     If isFirst OrElse dt.Minute = 0 OrElse dt.Minute = 30 Then
    >                         With .CustomLabels.Add(dt.AddMinutes(-3).ToOADate, dt.AddMinutes(3).ToOADate, dt.ToString("HH:mm"))
    >                             .RowIndex = 0
    >                         End With
    >                     End If
    >                     isFirst = False
    >                 Next
    > 
記事No.86333 のレス /過去ログ148より / 関連記事表示
削除チェック/

■86380  Re[5]: ChartのX軸のタイトル表示
□投稿者/ 魔界の仮面弁士 -(2018/01/24(Wed) 10:59:59)
    No86376 (mako さん) に返信
    > 例えば下記のような15分おきのデータがあったとします。
    > 9 12:00 10
    >11 12:15 20
    「10」が欠落しているのには、何か意図がありますか?


    > あと 9:00 9:30 10:00 11:30 12:00 も表示。
    09:15 と 09:45 と 10:00 と 12:00 のデータがあって、
    09:00 と 09:30 と 11:30 のデータの無いデータ系列の場合、
    9:00 / 9:30 / 10:00 には一切出力しないのでしょうか。
    それとも前後のデータから想定値を出力するのでしょうか。


    Dim ds As New DataSet("mako")

    Dim tRaw As New DataTable("raw")
    tRaw.Columns.Add("時刻", GetType(Date))
    tRaw.Columns.Add("個数", GetType(Integer))
    tRaw.Rows.Add(#1/19/2018 8:45#, 30)
    tRaw.Rows.Add(#1/19/2018 9:00#, 20)
    tRaw.Rows.Add(#1/19/2018 9:15#, 20)
    tRaw.Rows.Add(#1/19/2018 9:30#, 5)
    tRaw.Rows.Add(#1/19/2018 9:45#, 10)
    tRaw.Rows.Add(#1/19/2018 10:00#, 15)
    tRaw.Rows.Add(#1/19/2018 11:15#, 5)
    tRaw.Rows.Add(#1/19/2018 11:30#, 20)
    tRaw.Rows.Add(#1/19/2018 11:45#, 5)
    tRaw.Rows.Add(#1/19/2018 12:00#, 10)
    tRaw.Rows.Add(#1/19/2018 12:15#, 20)
    tRaw.AcceptChanges()
    ds.Tables.Add(tRaw)

    Chart1.Titles.Clear()
    Chart1.ChartAreas.Clear()
    Chart1.Legends.Clear()
    Chart1.Series.Clear()

    Dim c15 As New ChartArea("15分エリア")
    Dim c30 As New ChartArea("30分エリア")
    Dim c60 As New ChartArea("60分エリア")
    Chart1.ChartAreas.Add(c15)
    Chart1.ChartAreas.Add(c30)
    Chart1.ChartAreas.Add(c60)
    c15.AxisX.Interval = 1.0
    c30.AxisX.Interval = 1.0#
    c60.AxisX.Interval = 1.0R

    Dim c15sr1 As New Series("15分系列") With {.ChartArea = c15.Name}
    Dim c30sr1 As New Series("30分系列") With {.ChartArea = c30.Name}
    Dim c60sr1 As New Series("60分系列") With {.ChartArea = c60.Name}
    Chart1.Series.Add(c15sr1)
    Chart1.Series.Add(c30sr1)
    Chart1.Series.Add(c60sr1)
    c15sr1.ChartType = SeriesChartType.Spline
    c30sr1.ChartType = SeriesChartType.Column
    c60sr1.ChartType = SeriesChartType.Point

    Dim q = tRaw.AsEnumerable() _
      .OrderBy(Function(r) r.Field(Of Date)("時刻")) _
      .Select(Function(r, RowIndex) New With {
        Key RowIndex,
        Key r.Field(Of Date)("時刻").Minute,
        Key .X = r.Field(Of Date)("時刻").ToString("HH:mm"),
        Key .Y = r.Field(Of Integer)("個数")
      })
    For Each r In q
     If r.RowIndex = 0 OrElse r.Minute = 0 Then
      c15sr1.Points.AddXY(r.X, r.Y)
      c30sr1.Points.AddXY(r.X, r.Y)
      c60sr1.Points.AddXY(r.X, r.Y)
     ElseIf r.Minute = 15 OrElse r.Minute = 45 Then
      c15sr1.Points.AddXY(r.X, r.Y)
     ElseIf r.Minute = 30 Then
      c15sr1.Points.AddXY(r.X, r.Y)
      c30sr1.Points.AddXY(r.X, r.Y)
     End If
    Next
記事No.86333 のレス /過去ログ148より / 関連記事表示
削除チェック/

■96984  Re[3]: 数値書式指定文字列からの変換
□投稿者/ 魔界の仮面弁士 -(2021/03/10(Wed) 22:40:04)
    No96981 (ゆい さん) に返信
    > "8.0355015e-03" の 03 が 05以上になれば変換は出来ないのでしょうか?
    
    変換はできますが、Single 型の精度では物足りないと感じるかもしれません。
    
    
    Single 型の精度においては、下記すべて同一値に変換されます。
    
    Dim x As Single = CSng("8.0355010e-03")
    Dim y As Single = CSng("8.0355015e-03")
    Dim z As Single = CSng("8.0355019e-03")
    
    上記の値は、いずれも下記の 3 の近似値に変換されることになります。
    Single 型でとりえる前後の値も合わせて掲載しておきますね。
    
    0 … 0.008035498671233654022216796875 … 約 0.008035499
    1 … 0.008035499602556228637695312500 … 約 0.0080355
    2 … 0.008035500533878803253173828125 … 約 0.00803550053
    3 … 0.008035501465201377868652343750 … 約 0.008035501
    4 … 0.008035502396523952484130859375 … 約 0.008035502
    5 … 0.008035503327846527099609375000 … 約 0.008035503
    6 … 0.008035504259169101715087890625 … 約 0.008035504
    
    
    
    そもそも、『実際に必要な有効桁数』はどの程度なのでしょうか?
    
    マラソンの距離が 42.195km だからといって、それを「42195000mm」と言い換える事は、
    精度的に不自然なわけです。とはいえ、それで構わないというケースにおいては、
    CDec("8.0355015e-03") を使うという選択肢もあろうかと思います。
    
    ただし Decimal にすると、扱える最大値と最小値は Single よりも狭くなります。
    そのため『有効桁数』だけでなく、『最大値と最小値はどの範囲なのか』も重要になってきます。
    
    
    > 念のためSingleをDoubleに変えても同じでした。
    
    Integer 型で「5.3」や「6.4」を保持しようとしたら、5 や 6 に丸められる事はわかりますよね。
    Integer は、隣り合う数との間隔が常に 1 な型ですので、それより細かい間隔の値を
    保持しようとすれば、整数という近似値に丸められることになります。
    
    
    Single や Double の場合も同様です。連続した値を保持できるわけでは無く、
    有効桁数から外れた値が近似値となります。しかも、その間隔は一定ではなく、
    「0 に近いほど細かく」「0 から離れるほど大雑把」になる仕様です。
    
    
    "8.0355015e-03" の場合、e の前の数値が 8 個あるので、この値の有効桁数は 8 桁ですが、
    話を簡単にするために、ここでは「有効桁数 3 桁」の指数があったとしましょう。
    
    1.22E3 と 1.23E3 の差は、10 ですが
    1.22E7 と 1.23E7 の差は、100000 になります。
    
    1.22E-3 と 1.23E-3 の差は、0.00001 で、
    1.22E-5 と 1.23E-5 の差は、0.0000001 です。
    
    いずれの組み合わせも、「有効桁数 3 桁」の範囲で、隣り合う 2 つの数を比べているだけですが、
    E の後ろの値が大きくなるほど、隣り合う値との差が大きく「荒く」なっており、
    E の後ろの値が小さくなるほど、隣り合う値との差が小さく「細かく」表現できることがわかります。
    
    そのため、演算時に E の後ろの値(指数)が大きく異なる値同士を扱うと、
    有効桁数のうち、実際に使える桁数が狭くなってしまうことに注意してください。
    これは Decimal であっても同じことです。
    
    
       Byte 型の有効桁数は  8 bit なので、10進数換算で  2.40824 桁弱までの精度で扱えます。
    Integer 型の有効桁数は 31 bit なので、10進数換算で  9.33193 桁弱までの精度で扱えます。
     Single 型の有効桁数は 24 bit なので、10進数換算で  7.22472 桁弱までの精度で扱えます。
     Double 型の有効桁数は 53 bit なので、10進数換算で 15.95459 桁弱までの精度で扱えます。
    Decimal 型の有効桁数は 96 bit なので、10進数換算で 28.89888 桁弱までの精度で扱えます。
記事No.96979 のレス /過去ログ168より / 関連記事表示
削除チェック/

■99065  Re[5]: Sleepの時間がPCによって異なる
□投稿者/ radian -(2022/02/04(Fri) 23:52:56)
    2022/02/05(Sat) 00:37:52 編集(投稿者)

    No99064 (魚 さん) に返信
    > いま、手元にあるスリープ時間の短いPCでとりあえず試しているのですが
    >
    >
    > Call timeBeginPeriod(1000)
    >
    > Dim www As New Stopwatch
    > www.Restart()
    >
    > Thread.Sleep(1)
    >
    >
    > Dim hh = www.ElapsedMilliseconds
    >
    > とやっても時間は毎回1ミリ秒になります。
    > なぜうまく設定できていないのでしょうか?

    APIの仕様はブラックボックスなので、そういうもんだとしか言いようがないですね。
    そもそも、何故そんな大きい値を設定しているのでしょう?
    タイマーの精度を上げたいのであれば、timeBeginPeriod(1) でいいですよね?
    timeBeginPeriodを使うのって、普通はデフォルトより精度上げたい場合なので、
    わざわざ大きい値を設定して検証してる人自体殆ど居ないんじゃないですかね。

    いずれにせよ、精度を上げたところで、Sleepで指定した値で
    きっちり待機する保障は無いので、timeBeginPeriod(1) を指定しても、
    システムの負荷によって10msec以上待機したりする事もあります。
    .NETコード上のスレッドだと、GCの影響を受ける場合もあるので、更に安定しません。
    定周期で実行したい処理などは、timeSetEventを使用するのが
    タイミングが安定してたとは思いますが。

    [マルチスレッド環境で特定の処理を処理時間のばらつきなく高速化する方法]
    https://social.msdn.microsoft.com/Forums/ja-JP/c3ad7905-5c88-4e4d-98fd-e08a6edb34e6/12510125231248112473125241248312489298722265912391293052345012?forum=csharpgeneralja

    殆どこれと同じような話なんじゃないですかね?
    Windowsのタイマー精度問題は昔から言われているので、
    関連APIとかググるだけでも色々情報出てくるとは思いますが。
記事No.99058 のレス /過去ログ172より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -