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

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

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

全過去ログを検索

<< 0 | 1 | 2 | 3 >>
■5002  Re[3]: 関数の戻り値が構造体のポインタの場合
□投稿者/ あぼがど -(2006/07/18(Tue) 20:58:04)

    分類:[C#] 

    >>名無しぃシャープさん
    unsafeではうまくできませんでした。もしかしたら自分のやり方が間違ってるだけかもしれませんが。

    >>Hongliangさん
    > IntPtr で受けて Marshal.PtrToStructure 、ですかね。
    この方法でやったら一応成功しました!ありがとうございます!

    一応成功というのは、IntPtrで受け取るところまでです。
    Marshal.PtrToStructureを実行するとFatalExecutionEngineErrorが検出されます。
    今回の場合構造体の中身までは見る必要がないのでここまでできれば問題はないのですがなぜでしょうねぇ。
    もしかしたら構造体を移植したときに変数を間違えたのかもしれません。
    ちょっと今は時間がなく、原因を調べられないのでこの辺にさせてもらいます。

    参考までに実例を載せておきます。
    //DLLのインポート
    [DllImport("PICNIC_.dll" , EntryPoint="PN_open")]
    private extern static IntPtr PN_open(String ip, ushort lcd_port, ushort para_port, ushort serial_port);

    //中略

    IntPtr ptr = PN_open(ip, 0, 10001, 10002);
    PICNIC test = (PICNIC)Marshal.PtrToStructure( ptr, typeof(PICNIC));
記事No.4995 のレス / END /過去ログ5より / 関連記事表示
削除チェック/

■9065  Re[2]: VB2003とVB2005の違い?
□投稿者/ (報告) -(2007/10/18(Thu) 08:52:08)
記事No.9060 のレス /過去ログ21より / 関連記事表示
削除チェック/

■9089  Re[5]: .Net Frameworkエラー
□投稿者/ 魔界の仮面弁士 -(2007/10/18(Thu) 16:33:05)
    No9082 (masami さん) に返信
    > エラーがでない時もCatchしてないってことですか?
    > でも処理はちゃんとされますけど。。。
    > そのPCにVS2005が入ってないのでPGを動かしながら確認ができないのですが。。。

    たとえば(AutoCADなどへの)オートメーション操作を行っているのであれば、
    その CAD 側がビジー状態だったり、強制終了されていれば、例外が発生するはずです。

    たとえば当方では下記コードにおいて、Excel 2007 操作時に RPC_E_CALL_REJECTED が発生しました。


    Imports System
    Imports System.Runtime.InteropServices
    Public Class Sample
     Public Shared Sub Main()
      Dim o As Object = Nothing
      Try
       o = CreateObject("Excel.Application")
       o.Visible = True
       MsgBox("Excel側で[ファイルを開く]ダイアログを表示させ、" & vbCrLf _
        & "そのダイアログが開かれた状態のまま、" & vbCrLf _
        & "このメッセージボックスの OK ボタンを押してください。", _
        vbSystemModal, "実験")
       o.Quit()
       MsgBox("正常終了", vbInformation, "問題なし")
      Catch e As COMException When e.ErrorCode = &H80010001
       MsgBox(e.ToString(), vbExclamation, "RPC_E_CALL_REJECTEDが発生")
      Catch e As Exception
       MsgBox(e.ToString(), vbExclamation, "その他のエラー発生")
      Finally
       If Not o Is Nothing AndAlso Marshal.IsComObject(o) Then
        Marshal.ReleaseComObject(o)
       End If
      End Try
     End Sub
    End Class


    Excel でいえば、「セルに値を入力中」「長い再計算処理の最中だった」などなど、
    通信先が応答できない状況というのは常にありえるので、それらはきちんと Catch して、
    必要であれば、如何にリカバリすべきか、アプリケーション設計者が決めておかねばなりません。

    # リカバリの方法としてはたとえば、「エラー扱いにして処理を中断する」「数秒後に再試行する」
    # 「無視して次の処理を続ける」「中止/再試行/無視のダイアログを出してユーザに決めさせる」など。
記事No.9067 のレス /過去ログ21より / 関連記事表示
削除チェック/

■10001  Re[15]: オブジェクト指向熱イベントパネルディスカッション検討スレッド
□投稿者/ がる -(2007/11/09(Fri) 00:31:30)
    がるです。

    To ひどりさん
    > クラスなんて、「プログラミング言語でオブジェクト指向を実践するための方法の一つ」でしかないはずなのに、「クラス=オブジェクト指向」みたいな説明が氾濫していて、どこからが「オブジェクト指向」でどこまでが「プログラミング言語の機能」なのかが非常に分かりづらくなっていると思います。
    同意します。
    しかも「クラス=オブジェクト指向」な割に「メッセージパッシングがOOの基本」みたいな、それはそれは「ずれた」話が多いので。初心者ならずとも混乱すること頻り、です(苦笑
    挙げ句、プログラムとは関係ない、車クラスは四輪と二輪があってほ乳類クラスの継承で犬インスタンスはワンとかネコインスタンスはニャーとか。
    …どーやってプログラムにするんだろう、と、ずいぶん疑問に思ったモノです。
    # …でまぁ「オブジェクト指向実用講座」とかいう駄文を書くに至ったわけなのですが(苦笑

    あと、欠点で、おいらも挙手。
    ・メモリ食い過ぎ
    ・動的に処理するから処理重すぎ
    比較対象:カリッカリにチューニングした、Cで書いたソース(苦笑
    # まじめな話。組み込み系だと割合に切実だと耳にします。

    雑談混じりで恐縮ですが。
記事No.9496 のレス /過去ログ23より / 関連記事表示
削除チェック/

■17960  Re[6]: 効果的な息抜き
□投稿者/ 倉田 有大 -(2008/05/06(Tue) 00:31:43)
    > 色々酷い目にあったようですが、私みたいに日々サバイバル生活よりもまだましです。

    現代日本でサバイバルはきついですね。なんとかもう少し安定してください^^;

    > きっと倉田さんは真面目すぎるんだよ。【適度に】頑張ろ。応援しているよ。

    ありがとー。真面目というか神経質というか。
    「適当」に生きるのって難しいですね^^;
    一つのことが頭に入るとそれしか考えられないという、やっかいな頭です。あー、この性格なんとかせんと。
記事No.17849 のレス /過去ログ36より / 関連記事表示
削除チェック/

■26807  Re[6]: データベースの更新処理で行き詰りました。
□投稿者/ aetos(旧シャノン) -(2008/10/21(Tue) 14:41:29)
記事No.26794 のレス /過去ログ49より / 関連記事表示
削除チェック/

■26843  Re[19]: 四捨五入でバグ発見
□投稿者/ Jitta on the way -(2008/10/22(Wed) 07:44:55)
    No26842 (ラウンドワン さん) に返信
    > doubleを使った場合に近似値で処理されるのがしょうがないというのが
    > プログラマーの常識ということを知れたのは勉強になりましたが
    >
    > 下記プログラムののdoubleをdecimalに修正すれば、正常に動作するみたいなのですが
    > なぜdoubleを使っているのでしょうか
    > これには、何か理由があるのでしょうか。
    そんな単純じゃないよ。プログラムで扱う、リテラルも含んだ全ての数値を decimal にしないと、double になったとたんに発症する。
    希望する桁の1つ下を四捨五入してから、希望する桁を処理するのがいいかな?

    -----

    それはともかく。小数点以下3桁でもう信頼性がなくなるんだっけ?IEEE フォーマットって、2進化してから小数点移してますよね?0.555555*10^3 じゃなく、0.100010101110001…*2^10 でしたよね?仮数部は53桁あるけど、溢れのマルメが小さい方向に向かうのかな?
記事No.26728 のレス /過去ログ49より / 関連記事表示
削除チェック/

■30677  Re[1]: IEのキャッシュから画像ファイルを取得したいのですが...
□投稿者/ 【報告】 -(2009/01/01(Thu) 22:12:53)
記事No.30666 のレス /過去ログ54より / 関連記事表示
削除チェック/

■38837  Re[2]: ChekeBoxの条件分岐
□投稿者/ 魔界の仮面弁士 -(2009/07/26(Sun) 02:06:05)
    No38832 (Axolotl さん) に返信
    > checkBoxが5つあります。
    > それぞれを複数選択できるのですが、その場合わけの処理はどのように行えばよいのでしょうか?
    それは、その CheckBox をどのような目的で使用したいのかによりますので、
    具体例を挙げてもらわないと答えにくいです。

    たとえば、ワードパッドのツールバー設定画面のように、
      □ ツールバー
      □ 書式バー
      □ ルーラー
      □ ステータスバー
    などと、それぞれが独立しているチェックボックスの場合には、
      'VB
      Toolbar1.Visible = CheckBox1.Checked
      Toolbar2.Visible = CheckBox2.Checked
      Toolbar3.Visible = CheckBox3.Checked
      Toolbar4.Visible = CheckBox4.Checked
    となるだけでしょうから、組み合わせによって処理が変わる事も無いでしょうし。


    > 例えば1,2,3,4,5 という5パターンと1+2,1+2+3,1+2+3+4・・・などという組み合わせです。
    使用目的が分からないので答えにくいですが、足し合わせて一つの変数で管理したいという意味なら、
     (案1) 文字列として連結
      → チェックされていれば "1"、されていなければ "0" を順につなげていく。
       たとえば "10001" なら、CheckBox1 と CheckBox5 が On、残りはすべて Off の意味。
     (案2) 10^n の数値として加算
      → CheckBox1 は 1、CheckBox2 は 10、CheckBox3 は 100、CheckBox4 は 1000、CheckBox5 は 10000 として足し合わせる。
       たとえば 10110 なら、CheckBox 1 と CheckBox4 が Off、残りはすべて On の意味。
     (案3) 2^n の数値として、ビットフラグとして処理
    などとして管理する方法があります。
記事No.38831 のレス /過去ログ67より / 関連記事表示
削除チェック/

■42234  Re[3]: C C++の勉強法
□投稿者/ επιστημη -(2009/10/09(Fri) 23:53:33)
>
    > 入門だったら H8 か ARM のほうが無難だと思うけど。

    Arduinoはどんなもんでしょ。gccでコード書けると聞いてますが。
    http://ja.wikipedia.org/wiki/Arduino
記事No.42222 のレス /過去ログ72より / 関連記事表示
削除チェック/

■49924  二つのセレクトボックスの連動処理
□投稿者/ 森塚 -(2010/05/23(Sun) 08:44:03)

    分類:[Java] 

    お世話になります。
    現在strutsでの動作で質問したい箇所があります。

    行いたいことはActionでDBから取得したDTOの値をjspに渡しセレクトボックスとして表示させたいです。一つのDTO単独の処理なら下記で表示できました。

    <html:select name="formName" property="result">
    <html:options collection = "dtoNm" property="cd" labelProperty="nm"/>
    </html:select>

    しかし、今度行いたいのは二つのDTOを用意して二つのセレクトボックスを作成したいのですが一つ目のDTO1に定義されているcd1が2桁で設定されていて、二つ目のDTO2に定義されているcd2が5桁で定義されています。
     このときcd1の2桁がcd2の上2桁に紐付いていてDTO1のセレクトボックスを選んだらDTO2のセレクトボックスがcd1に紐付いたcd2のデータだけ選択できるようにしたいです。
    (例:DTO1のセレクトボックスでcd1が10のものが選択されたらDTO2のセレクトボックスはcd2が10001,10002,10100など10始まりのものしか選択できなくなるようにしたいです)
     ActionにてDTO2の中身をcd2の上2桁毎に振り分けたものは作成したのですがjsp側でどのように表示させていいのかわかりません。
     DTOもDBから取ってくるのでcdの値を10,20固定などではなく可変で行いたいです。

    きっとjavascriptも書き込まなきゃいけないと思うのですが。。。

    初めての質問なので状況の説明など至らないところがあるかもしれませんがよろしくお願いします。
親記事 /過去ログ84より / 関連記事表示
削除チェック/

■51984  Re[3]: 参照設定に入れたDLLで使用しているDLLについて
□投稿者/ 魔界の仮面弁士 -(2010/07/27(Tue) 23:01:55)
    No51981 (くろすけ さん) に返信
    > 引数や戻り値にはないですが、publicなクラスのプロパティやそのpublicメンバには使ってます。

    参照設定していなくても、そのメンバーを一切使っていなければ、ビルドは通るかも知れません。

    たとえば、System.Windows.Forms.Control には AccessibilityObject プロパティがあります。
    このプロパティを利用する場合、Accessibility.DLL を参照設定する必要がありますが、
    通常の WinForm アプリでは、このアセンブリを参照設定せずともビルドは通ります。


    なお、参照設定を追加せずにこのプロパティにアクセスするようなコード等を書くと、
    下記のコンパイルエラーが表示されます。くろすけさんの環境のエラー番号と同じかどうかは分かりませんが。

    =====================
    《C#》コンパイラ エラー『CS0012』
    --
    型 'Accessibility.IAccessible' が参照されていないアセンブリで定義されています。アセンブリ
    'Accessibility, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
    への参照を追加してください。
    =====================
    《VB》コンパイル エラー『BC30009』
    --
    実装されたインターフェイス 'Accessibility.IAccessible' を含むアセンブリ
    'Accessibility, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
    への参照が必要です。参照をプロジェクトに追加してください。
    =====================

    # VB だと、参照設定の修正候補が表示されて、簡単に追加できるのですけれどね…。
    # http://hpcgi1.nifty.com/MADIA/vbnet/wwwlng.cgi?print+200910/09100014.txt


    > とあるGridのサードパーティDLLを参照設定にした際、
    ツールボックス上にある Control / Component をデザイナに貼り付ける場合には、
    参照設定が自動的に行われるかと思いますが、それとは別の状況でしょうか。
記事No.51977 のレス /過去ログ87より / 関連記事表示
削除チェック/

■55391  Re[3]: プリンタ解像度の取得方法
□投稿者/ 焦げ太 -(2010/11/29(Mon) 12:09:19)
    その後、ググっていたらDEVMODEなるものを見つけました。
    PrintDocumentからDEVMODE構造体を取得してdmPrintQualityとdmYResolutionの
    値を確認したのですが、変わらずでした。
    (300dpi→600dpiとしたが300dpiでした)

    DEVMODE構造体の部数、用紙などの値をみると、ちゃんと変更後になっているのですが
    解像度は変わっていません。。。

    オショウさんの教えてくださいました情報で一応解決はしているのですが、、、
    PrintDocumentのどこかに値が保存されているはずなのに取れないのはしっくりきません。
    情報お持ちの方、わかりましたら教えてください。
記事No.55332 のレス /過去ログ93より / 関連記事表示
削除チェック/

■56251  Re[5]: UserControlとValidatingについて
□投稿者/ KK -(2011/01/06(Thu) 19:53:37)
    todo 様
    > UserControlの方もTextBoxExを使ってください。
    お手数をおかけしてすいません。

    userTextBoxEx1:UserControl上のTextBoxExです。
    TextBoxEx1:Form上のTextBoxExになります。

    投稿できませんでしたので、分割しています。

    ****
    userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a900cc result=0x0
    userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a900cc result=0x12
    userTextBoxEx1:S1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000012 result=0x0
    userTextBoxEx1:E1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000012 result=0x0
    userTextBoxEx1:S1:msg=0xa0 (WM_NCMOUSEMOVE) hwnd=0x60776 wparam=0x12 lparam=0x1a900cc result=0x0
    userTextBoxEx1:E1:msg=0xa0 (WM_NCMOUSEMOVE) hwnd=0x60776 wparam=0x12 lparam=0x1a900cc result=0x0
    userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a900ca result=0x0
    userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a900ca result=0x1
    userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a900ca result=0x0
    userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a900ca result=0x1
    userTextBoxEx1:S1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000001 result=0x0
    userTextBoxEx1:E1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000001 result=0x0
    userTextBoxEx1:S1:msg=0xc224 hwnd=0x60776 wparam=0x0 lparam=0x0 result=0x0
    userTextBoxEx1:E1:msg=0xc224 hwnd=0x60776 wparam=0x0 lparam=0x0 result=0x0
    userTextBoxEx1:S1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x60776 wparam=0x0 lparam=0xa0069 result=0x0
    userTextBoxEx1:S2:msg=0x85 (WM_NCPAINT) hwnd=0x60776 wparam=0x1 lparam=0x0 result=0x0
    userTextBoxEx1:E2:msg=0x85 (WM_NCPAINT) hwnd=0x60776 wparam=0x1 lparam=0x0 result=0x1
    userTextBoxEx1:E1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x60776 wparam=0x0 lparam=0xa0069 result=0x1
    userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a800c7 result=0x0
    userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a800c7 result=0x1
    userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a800c7 result=0x0
    userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a800c7 result=0x1
    userTextBoxEx1:S1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000001 result=0x0
    userTextBoxEx1:E1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000001 result=0x0
    userTextBoxEx1:S1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x60776 wparam=0x0 lparam=0x90066 result=0x0
    userTextBoxEx1:E1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x60776 wparam=0x0 lparam=0x90066 result=0x1
    userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a800c5 result=0x0
    userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a800c5 result=0x1
    userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a800c5 result=0x0
    userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a800c5 result=0x1
    userTextBoxEx1:S1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000001 result=0x0
    userTextBoxEx1:E1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000001 result=0x0
    userTextBoxEx1:S1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x60776 wparam=0x0 lparam=0x90064 result=0x0
    userTextBoxEx1:E1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x60776 wparam=0x0 lparam=0x90064 result=0x1
    userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a700c4 result=0x0
    userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a700c4 result=0x1
    userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a700c4 result=0x0
    userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a700c4 result=0x1
    userTextBoxEx1:S1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000001 result=0x0
    userTextBoxEx1:E1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000001 result=0x0
    userTextBoxEx1:S1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x60776 wparam=0x0 lparam=0x80063 result=0x0
    userTextBoxEx1:E1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x60776 wparam=0x0 lparam=0x80063 result=0x1
    userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a700c3 result=0x0
    userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a700c3 result=0x1
    userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a700c3 result=0x0
    userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a700c3 result=0x1
    userTextBoxEx1:S1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000001 result=0x0
    userTextBoxEx1:E1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000001 result=0x0
    userTextBoxEx1:S1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x60776 wparam=0x0 lparam=0x80062 result=0x0
    userTextBoxEx1:E1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x60776 wparam=0x0 lparam=0x80062 result=0x1
    userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a600c3 result=0x0
    userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a600c3 result=0x1
    userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a600c2 result=0x0
    userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a600c2 result=0x1
    userTextBoxEx1:S1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000001 result=0x0
    userTextBoxEx1:E1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000001 result=0x0
    userTextBoxEx1:S1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x60776 wparam=0x0 lparam=0x70061 result=0x0
    userTextBoxEx1:E1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x60776 wparam=0x0 lparam=0x70061 result=0x1
    userTextBoxEx1:S1:msg=0x2a1 (WM_MOUSEHOVER) hwnd=0x60776 wparam=0x0 lparam=0x70061 result=0x0
    userTextBoxEx1:E1:msg=0x2a1 (WM_MOUSEHOVER) hwnd=0x60776 wparam=0x0 lparam=0x70061 result=0x0
    userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a600c2 result=0x0
    userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a600c2 result=0x1
    userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a600c2 result=0x0
    userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a600c2 result=0x1
    userTextBoxEx1:S1:msg=0x21 (WM_MOUSEACTIVATE) hwnd=0x60776 wparam=0x907da lparam=0x2010001 result=0x0
    userTextBoxEx1:E1:msg=0x21 (WM_MOUSEACTIVATE) hwnd=0x60776 wparam=0x907da lparam=0x2010001 result=0x1
    userTextBoxEx1:S1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2010001 result=0x0
    userTextBoxEx1:E1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2010001 result=0x0
    userTextBoxEx1:S1:msg=0x201 (WM_LBUTTONDOWN) hwnd=0x60776 wparam=0x1 lparam=0x70061 result=0x0
    ****
記事No.56238 のレス /過去ログ94より / 関連記事表示
削除チェック/

■56281  Re[9]: UserControlとValidatingについて
□投稿者/ KK -(2011/01/07(Fri) 19:04:16)
    todo 様
    ありがとうございます。
    
    > Public Class TextBoxEx
    > Inherits TextBox
    > Protected Overrides Sub WndProc(ByRef m As Message)
    > Util.CallWndProc(Me, MyBase.WndProc, m)
    > End Sub
     エラーが表示されましたので、以下のように変更してみました。
     ※デリゲートについて、勉強不足ですいません。
     
        Protected Overrides Sub WndProc(ByRef m As Message)
            Util.CallWndProc(Me, AddressOf MyBase.WndProc, m)
        End Sub
    
    ******************************************************************************************************************
    userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x18c0058 result=0x0
    userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x18c0058 result=0x0
    userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x18c0058 result=0x0
    userTextBoxEx1:msg=0x20 (WM_SETCURSOR) hwnd=0x280dee wparam=0x280dee lparam=0x2000012 result=0x0
    userTextBoxEx1:msg=0xa0 (WM_NCMOUSEMOVE) hwnd=0x280dee wparam=0x12 lparam=0x18c0058 result=0x0
    userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x1890059 result=0x0
    userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x1890059 result=0x0
    userTextBoxEx1:msg=0x20 (WM_SETCURSOR) hwnd=0x280dee wparam=0x280dee lparam=0x2000001 result=0x0
    userTextBoxEx1:msg=0xc184 hwnd=0x280dee wparam=0x0 lparam=0x0 result=0x0
    userTextBoxEx1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x280dee wparam=0x0 lparam=0xd0023 result=0x0
        userTextBoxEx1:msg=0x85 (WM_NCPAINT) hwnd=0x280dee wparam=0x1 lparam=0x0 result=0x0
    userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x1870059 result=0x0
    userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x1870059 result=0x0
    userTextBoxEx1:msg=0x20 (WM_SETCURSOR) hwnd=0x280dee wparam=0x280dee lparam=0x2000001 result=0x0
    userTextBoxEx1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x280dee wparam=0x0 lparam=0xb0023 result=0x0
    userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x1860059 result=0x0
    userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x1860059 result=0x0
    userTextBoxEx1:msg=0x20 (WM_SETCURSOR) hwnd=0x280dee wparam=0x280dee lparam=0x2000001 result=0x0
    userTextBoxEx1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x280dee wparam=0x0 lparam=0xa0023 result=0x0
    userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x1850059 result=0x0
    userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x1850059 result=0x0
    userTextBoxEx1:msg=0x20 (WM_SETCURSOR) hwnd=0x280dee wparam=0x280dee lparam=0x2000001 result=0x0
    userTextBoxEx1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x280dee wparam=0x0 lparam=0x90023 result=0x0
    userTextBoxEx1:msg=0x2a1 (WM_MOUSEHOVER) hwnd=0x280dee wparam=0x0 lparam=0x90023 result=0x0
    userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x1850059 result=0x0
    userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x1850059 result=0x0
    userTextBoxEx1:msg=0x21 (WM_MOUSEACTIVATE) hwnd=0x280dee wparam=0x60e3c lparam=0x2010001 result=0x0
    userTextBoxEx1:msg=0x20 (WM_SETCURSOR) hwnd=0x280dee wparam=0x280dee lparam=0x2010001 result=0x0
    userTextBoxEx1:msg=0x201 (WM_LBUTTONDOWN) hwnd=0x280dee wparam=0x1 lparam=0x90023 result=0x0
        TextBoxEx1:msg=0x8 (WM_KILLFOCUS) hwnd=0xd0d8a wparam=0x280dee lparam=0x0 result=0x0
            TextBoxEx1:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0xd0d8a wparam=0x2000d8a lparam=0xd0d8a result=0x0
        TextBoxEx1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0xd0d8a wparam=0x0 lparam=0xffffffffc000000f result=0x0
        userTextBoxEx1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x280dee wparam=0x1 lparam=0xffffffffc000000f result=0x0
        userTextBoxEx1:msg=0x7 (WM_SETFOCUS) hwnd=0x280dee wparam=0xd0d8a lparam=0x0 result=0x0
            userTextBoxEx1:msg=0xd2 hwnd=0x280dee wparam=0x0 lparam=0x0 result=0x0
            TextBoxEx1:msg=0xe (WM_GETTEXTLENGTH) hwnd=0xd0d8a wparam=0x0 lparam=0x0 result=0x0
            TextBoxEx1:msg=0xd (WM_GETTEXT) hwnd=0xd0d8a wparam=0x2 lparam=0x224828 result=0x0
            場所 WindowsApplication1.Form1.TextBoxEx1_Validating(Object sender, CancelEventArgs e) 場所 D:\TEST\WindowsApplication1\WindowsApplication1\Form1.vb:行 15
     	  ↑
              省略
              ↓
            場所 System.Threading.ThreadHelper.ThreadStart()
    
            userTextBoxEx1:msg=0x8 (WM_KILLFOCUS) hwnd=0x280dee wparam=0xd0d8a lparam=0x0 result=0x0
                userTextBoxEx1:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0x280dee wparam=0x2000dee lparam=0x280dee result=0x0
            userTextBoxEx1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x280dee wparam=0x0 lparam=0xffffffffc000000f result=0x0
            TextBoxEx1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0xd0d8a wparam=0x1 lparam=0xffffffffc000000f result=0x0
            TextBoxEx1:msg=0x7 (WM_SETFOCUS) hwnd=0xd0d8a wparam=0x280dee lparam=0x0 result=0x0
                TextBoxEx1:msg=0xd2 hwnd=0xd0d8a wparam=0x0 lparam=0x0 result=0x0
                TextBoxEx1:msg=0x282 (WM_IME_NOTIFY) hwnd=0xd0d8a wparam=0xa lparam=0x0 result=0x0
                TextBoxEx1:msg=0x282 (WM_IME_NOTIFY) hwnd=0xd0d8a wparam=0xb lparam=0x0 result=0x0
                TextBoxEx1:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0xd0d8a wparam=0x1000d8a lparam=0xd0d8a result=0x0
        TextBoxEx1:msg=0x8 (WM_KILLFOCUS) hwnd=0xd0d8a wparam=0x280dee lparam=0x0 result=0x0
            TextBoxEx1:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0xd0d8a wparam=0x2000d8a lparam=0xd0d8a result=0x0
        TextBoxEx1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0xd0d8a wparam=0x0 lparam=0xffffffffc000000f result=0x0
        userTextBoxEx1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x280dee wparam=0x1 lparam=0xffffffffc000000f result=0x0
        userTextBoxEx1:msg=0x7 (WM_SETFOCUS) hwnd=0x280dee wparam=0xd0d8a lparam=0x0 result=0x0
            userTextBoxEx1:msg=0xd2 hwnd=0x280dee wparam=0x0 lparam=0x0 result=0x0
            TextBoxEx1:msg=0xe (WM_GETTEXTLENGTH) hwnd=0xd0d8a wparam=0x0 lparam=0x0 result=0x0
            TextBoxEx1:msg=0xd (WM_GETTEXT) hwnd=0xd0d8a wparam=0x2 lparam=0x224828 result=0x0
              場所 WindowsApplication1.Form1.TextBoxEx1_Validating(Object sender, CancelEventArgs e) 場所 D:\TEST\WindowsApplication1\WindowsApplication1\Form1.vb:行 15
    	  ↑
              省略
              ↓
              場所 System.Threading.ThreadHelper.ThreadStart()
    
            userTextBoxEx1:msg=0x8 (WM_KILLFOCUS) hwnd=0x280dee wparam=0xd0d8a lparam=0x0 result=0x0
                userTextBoxEx1:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0x280dee wparam=0x2000dee lparam=0x280dee result=0x0
            userTextBoxEx1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x280dee wparam=0x0 lparam=0xffffffffc000000f result=0x0
            TextBoxEx1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0xd0d8a wparam=0x1 lparam=0xffffffffc000000f result=0x0
            TextBoxEx1:msg=0x7 (WM_SETFOCUS) hwnd=0xd0d8a wparam=0x280dee lparam=0x0 result=0x0
                TextBoxEx1:msg=0xd2 hwnd=0xd0d8a wparam=0x0 lparam=0x0 result=0x0
                TextBoxEx1:msg=0x282 (WM_IME_NOTIFY) hwnd=0xd0d8a wparam=0xa lparam=0x0 result=0x0
                TextBoxEx1:msg=0x282 (WM_IME_NOTIFY) hwnd=0xd0d8a wparam=0xb lparam=0x0 result=0x0
                TextBoxEx1:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0xd0d8a wparam=0x1000d8a lparam=0xd0d8a result=0x0
    userTextBoxEx1:msg=0xf (WM_PAINT) hwnd=0x280dee wparam=0x0 lparam=0x0 result=0x0
    TextBoxEx1:msg=0xf (WM_PAINT) hwnd=0xd0d8a wparam=0x0 lparam=0x0 result=0x0
        TextBoxEx1:msg=0x14 (WM_ERASEBKGND) hwnd=0xd0d8a wparam=0xffffffffc001086a lparam=0x0 result=0x0
    userTextBoxEx1:msg=0x202 (WM_LBUTTONUP) hwnd=0x280dee wparam=0x0 lparam=0x90023 result=0x0
        userTextBoxEx1:msg=0x215 (WM_CAPTURECHANGED) hwnd=0x280dee wparam=0x0 lparam=0x0 result=0x0
    userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x1850059 result=0x0
    userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x1850059 result=0x0
    userTextBoxEx1:msg=0x20 (WM_SETCURSOR) hwnd=0x280dee wparam=0x280dee lparam=0x2000001 result=0x0
    userTextBoxEx1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x280dee wparam=0x0 lparam=0x90023 result=0x0
    userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x185005a result=0x0
    userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x185005a result=0x0
    userTextBoxEx1:msg=0x20 (WM_SETCURSOR) hwnd=0x280dee wparam=0x280dee lparam=0x2000001 result=0x0
    userTextBoxEx1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x280dee wparam=0x0 lparam=0x90024 result=0x0
    userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x185005d result=0x0
    userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x185005d result=0x0
    userTextBoxEx1:msg=0x20 (WM_SETCURSOR) hwnd=0x280dee wparam=0x280dee lparam=0x2000001 result=0x0
    userTextBoxEx1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x280dee wparam=0x0 lparam=0x90027 result=0x0
    userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x1890067 result=0x0
    userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x1890067 result=0x0
    userTextBoxEx1:msg=0x20 (WM_SETCURSOR) hwnd=0x280dee wparam=0x280dee lparam=0x2000001 result=0x0
    userTextBoxEx1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x280dee wparam=0x0 lparam=0xd0031 result=0x0
    userTextBoxEx1:msg=0x2a3 (WM_MOUSELEAVE) hwnd=0x280dee wparam=0x0 lparam=0x0 result=0x0
        userTextBoxEx1:msg=0x85 (WM_NCPAINT) hwnd=0x280dee wparam=0x1 lparam=0x0 result=0x0 
    ******************************************************************************************************************
    
    shu様にアドバイス頂いた情報をもとに、
    Validatingイベントで、Me.FindForm.ActiveControlのFocusedをみてみたところ、
    UserControl Me.FindForm.ActiveControlのFocusedがTrueの場合は、1回のみ発生。
    Falseの場合に2回発生していました。
    (※Falseの時も初回のみ1回で、以降は2回でした)
    
記事No.56238 のレス /過去ログ94より / 関連記事表示
削除チェック/

■57165  Re[1]: 文字コードの取得
□投稿者/ 魔界の仮面弁士 -(2011/02/16(Wed) 10:50:24)
    No57162 (TAKE さん) に返信
    > あいうえお → Shift_JIS
    > あいうえお → utf-8
    
    あいうえお → Shift_JIS → 82,A0,82,A2,82,A4,82,A6,82,A8
    あいうえお →   utf-8   → E3,81,82,E3,81,84,E3,81,86,E3,81,88,E3,81,8A
    
    の事だとすれば、shu さんが回答されているように、Encoding.GetBytes を使うだけで OK です。
    
      byte[] sjis = Encoding.GetEncoding("Shift_JIS").GetBytes("あいうえお");
      byte[] utf8 = Encoding.UTF8.GetBytes("あいうえお");
      Console.WriteLine("sjis:" + BitConverter.ToString(sjis));
      Console.WriteLine("utf8:" + BitConverter.ToString(utf8));
    
    
    
    > 日本語文字コードの取得はやはり簡単にはいかず難しいのでしょうか?
    
    「文字コード不明のテキストファイルを読み込む」場合のように、
    バイナリからのデコード処理の事を指しているのだとすれば、
    ある程度の推測はできますが…確定されないケースもあります。
    
    static void Main()
    {
        byte[] bin = { 0xe0, 0xdd, 0xe0, 0xea, };
        foreach (var x in Conjecture(bin))
        {
            Console.WriteLine("codepage={0, 6}, [{1}]", x.Key, x.Value);
        }
        Console.ReadKey();
    }
    
    public static IEnumerable<KeyValuePair<int, string>> Conjecture(byte[] bin)
    {
        int[] code = {
            0,      // システム既定値
            932,    // Shift_JIS
            1200,   // UTF-16
            1201,   // UTF-16BE
            10001,  // MacJapanse
            20290,  // IBM EBCDIC/日本語カタカナ
            20932,  // JIS 0208-1990 and 0212-1990
            50220,  // ISO-2022-JP
            50221,  // JIS 1バイトカナ含む
            50222,  // JIS 1バイトカナ含む(SO/SI)
            51932,  // EUC-JP
            65000,  // UTF-7
            65001,  // UTF-8
        };
    
        // いろいろなコードページを試してみて、
        // 変換エラーが発生しなかったものだけを返す
        EncoderFallback ef = new EncoderExceptionFallback();
        DecoderFallback df = new DecoderExceptionFallback();
        foreach (int cp in code)
        {
            string text;
            try
            {
                text = Encoding.GetEncoding(cp, ef, df).GetString(bin);
            }
            catch (DecoderFallbackException ex)
            {
                System.Diagnostics.Debug.WriteLine(cp + ":" + ex.Message);
                text = null;
            }
            if (text != null)
            {
                yield return new KeyValuePair<int, string>(cp, text);
            }
        }
    }
記事No.57162 のレス /過去ログ96より / 関連記事表示
削除チェック/

■57345  Re[10]: 文字コードの取得
□投稿者/ 魔界の仮面弁士 -(2011/02/23(Wed) 12:16:20)
    No57337 (TAKE さん) に返信
    > 文字集合とは↓これでしょうか?
    文字集合(キャラクターセット)とは、使用できる文字の集まりです。
    大雑把にいえば、使用可能な文字の一覧表だと思っていただければ良いかと。
    
    その上で、それらの文字をどのような符号化方式(エンコード)でバイナリ変換するのか、という話です。
    
    ASP.NET では UTF-8 が使われる事が多いかと思いますが(ケータイ向けサイトは別として)、
    その上で、システム上の制限として使えない文字種を定義する必要があるかどうかですね。
    
    ・どんな文字を使う必要があるのか。
     (外国人名を現地語で入力させる必要があるか、サロゲートペアは許可するか、外字はどうするかなど)
    
    ・それらを何の符号化で保持/出力するのか。
     (DB の文字コードは何か、Shift_JIS データの作成が必要かなど)
    
    
    実際にはこの他、どのフォントを使うかという話もあるのでしょうけれども、
    システムの全体要件が見えないので、それについては触れずにおきます。
    そもそもの話は「文字コード不明のテキストファイルを読み込む」手法についての
    話題だったはずなので、かなり脱線気味ではありますが。
    
    
    脱線ついでに文字集合と符号化方式について述べておくと、たとえば Unicode という文字集合の場合、
    そのひとつの文字集合に対して UTF-8 や UTF-16 といった異なる符号化方式が存在しています。
    
    文字集合としての Unicode については、Unicode 2.1 とか Unicode 4.0.0 といった
    バージョンの違いで扱える文字種が異なります。6.0 以降では、"emoji symbols"
    (いわゆる、携帯電話の絵文字記号)も追加されています。
    
    対応する符号化方式については、UTF-8 とか UTF-16 とか UTF-32 など何種類かありますが、
    とりあえず「あ」の文字を例にとると、この文字は Unicode では U+3042 に割り当てられており、
    その U+3042 を符号化してバイナリ表現に変換した場合、符号化方式によって
      UTF-7    では 2B,4D,45,49,2D
      UTF-8    では E3,81,82
      UTF-16LE では 42,30
      UTF-16BE では 30,42
    のように、異なるバイナリ表現をとるようになっています。
    
    # ちなみに、Windows が Unicode 系 API で採用しているのは UTF-16 であり、
    # System.Text.Encoding.Unicode というのは、UTF-16 の符号化を表しています。
    
    
    UTF-8 の符号化方式でいえば、U+0800〜U+FFFF の範囲の文字が
    xxxxyyyy-yyzzzzzz のビットパターン(2進数表現)で表され、それが
    1110xxxx,10yyyyyy,10zzzzzz というバイト並びに変換される仕様です。
    上記 U+3042 なら、2進表現では 00110000-01000010 になるので、これが
    11100011,10000001,10000010 のビットパターン、すなわち E3,81,82 になる、と。
    
    
    > VBの時代には
    > unicodeに変換すれば
    実際には、その変換が問題になる事もあったりします。(NEC文字などの問題など)
    Win9x系と WinNT 系でも差異がありましたし。まぁ、普段はあまり意識する事は無いと思いますが。
    
    旧VB の文字列は、内部的には UCS-2 相当なのですが、画面やファイルへの入出力処理では
    ローカルのOEMコードに自動的に変換されるため、これが問題を引き起こすことがありました。
    
    たとえば、Shift_JIS (というか、コードページ932)の場合、
    "≒" の文字は、0x8790 と 0x81e0 の二か所に割り当てられていますが、
    Unicode では U+2252 一か所にのみマッピングされています。
    
    そのため、VB6 や VBA においては
     s1 = ChrW(&H2252)
     s2 = Chr(&H81E0)
     s3 = Chr(&H8790)
     s4 = StrConv(ChrB(&H81) & ChrB(&HE0), vbUnicode, &H411)
     s5 = StrConv(ChrB(&H87) & ChrB(&H90), vbUnicode, &H411)
    はいずれも、0x2252 という同一バイナリにエンコードされることになります。
    ゆえに一度変換してしまうと、厳密には元に戻すことができません。
    
    この事情は、C# においても同じことです。.NET にしても 32bit版 VB にしても、
    文字列(String 型変数)は、文字列を UTF-16 のバイナリで管理しているため、
    0x8790 な 2 バイトのテキストファイルと
    0x81e0 な 2 バイトのテキストファイルを Shift_JIS としてデコードした場合、
    その文字はいずれも U+2252 という同じ文字として保持される事になります。
    
    
    TAKE さんが先程あげられた
    > 文字集合とは↓これでしょうか?
    で表された U+2116 "Numero Sign" の文字も同様で、この文字は
    Shift_JIS では 0xfa59 と 0x8782 の 2 つがあったりします。
    
    
    > 簡単に文字数判定できましたが
    > C#は簡単にはいかないようですね。
    『文字数判定』なら、System.Globalization.StringInfo クラスの
    LengthInTextElements プロパティで行えます。
    http://www.atmarkit.co.jp/fdotnet/dotnettips/726countchars/countchars.html
    http://msdn.microsoft.com/ja-jp/ff382735
    
    『バイト数判定』なら、System.Text.Encoding クラスの GetByteCount メソッドですね。
    
    『文字幅の測定』なら、No57203 で shu さんが書かれているように MeasureString メソッド等で。
記事No.57162 のレス / END /過去ログ96より / 関連記事表示
削除チェック/

■57785  Re[3]: Framework 3.5 SP1を含めたSetup
□投稿者/ 焦げ太 -(2011/03/15(Tue) 14:54:46)
    「ja」フォルダの中の「package.xml」は以下のようになっています。
    間違いなどありましたらご指摘願います。

    <?xml version="1.0" encoding="utf-8"?>
    <Package xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper" Name="DisplayName" Culture="Culture" LicenseAgreement="eula.rtf">
    <!-- Defines list of files to be copied on build -->
    <PackageFiles>
    <PackageFile Name="eula.rtf"/>
    <PackageFile Name="DotNetFX35\x64\dotnetfx35langpack_x64ja.exe"
    PublicKey="3082010A0282010100A2DB0A8DCFC2C1499BCDAA3A34AD23596BDB6CBE2122B794C8EAAEBFC6D526C23
    2118BBCDA5D2CFB36561E152BAE8F0DDD14A36E284C7F163F41AC8D40B146880DD98194AD9706D05744765CEAF1FC0
    EE27F74A333CB74E5EFE361A17E03B745FFD53E12D5B0CA5E0DD07BF2B7130DFC606A2885758CB7ADBC85E817B490B
    EF516B6625DED11DF3AEE215B8BAF8073C345E3958977609BE7AD77C1378D33142F13DB62C9AE1AA94F9867ADD4203
    93071E08D6746E2C61CF40D5074412FE805246A216B49B092C4B239C742A56D5C184AAB8FD78E833E780A47D8A4B28
    423C3E2F27B66B14A74BD26414B9C6114604E30C882F3D00B707CEE554D77D2085576810203010001"/>
    <PackageFile Name="DotNetFX35\x86\dotnetfx35langpack_x86ja.exe"
    PublicKey="3082010A0282010100A2DB0A8DCFC2C1499BCDAA3A34AD23596BDB6CBE2122B794C8EAAEBFC6D526C23
    2118BBCDA5D2CFB36561E152BAE8F0DDD14A36E284C7F163F41AC8D40B146880DD98194AD9706D05744765CEAF1FC0
    EE27F74A333CB74E5EFE361A17E03B745FFD53E12D5B0CA5E0DD07BF2B7130DFC606A2885758CB7ADBC85E817B490B
    EF516B6625DED11DF3AEE215B8BAF8073C345E3958977609BE7AD77C1378D33142F13DB62C9AE1AA94F9867ADD4203
    93071E08D6746E2C61CF40D5074412FE805246A216B49B092C4B239C742A56D5C184AAB8FD78E833E780A47D8A4B28
    423C3E2F27B66B14A74BD26414B9C6114604E30C882F3D00B707CEE554D77D2085576810203010001"/>
    </PackageFiles>

    <InstallChecks>
    <RegistryCheck Property="DotNet35SP" Key="HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5\1041" Value="SP"/>
    </InstallChecks>

    <!-- Defines how to invoke the setup for the .NET Framework redist -->
    <Commands Reboot="Defer">
    <Command PackageFile="dotNetFx35setup.exe" Arguments=" /lang:jpn /passive /norestart" EstimatedInstalledBytes="30000000" EstimatedTempBytes="30000000">

    <!-- These checks determine whether the package is to be installed -->
    <InstallConditions>
    <!-- This indicates the .Net Framework is already installed -->
    <BypassIf Property="DotNet35SP" Compare="ValueGreaterThanOrEqualTo" Value="1"/>

    <!-- Block install if user does not have admin privileges -->
    <FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired"/>

    <!-- Block install on less than Windows XP SP2 -->
    <FailIf Property="VersionNT" Compare="VersionLessThan" Value="5.1.2" String="InvalidPlatformWinNT"/>

    <!-- Block install on W2K3 with no service pack -->
    <FailIf Property="VersionNT" Compare="VersionEqualTo" Value="5.2.0" String="InvalidPlatformWinNT"/>

    <!-- Block install if the platform is IA-64 -->
    <FailIf Property="ProcessorArchitecture" Compare="ValueEqualTo" Value="IA64" String="InvalidPlatformArchitecture"/>
    </InstallConditions>

    <ExitCodes>
    <ExitCode Value="0" Result="Success"/>
    <ExitCode Value="1602" Result="Fail" String="UserCancelled"/>
    <ExitCode Value="1603" Result="Fail" String="GeneralFailure"/>
    <ExitCode Value="3010" Result="SuccessReboot"/>
    <DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure"/>
    </ExitCodes>

    </Command>
    </Commands>

    <!-- Defines a localizable string table for error messages-->
    <Strings>
    <String Name="DisplayName">.NET Framework 3.5 SP1</String>
    <String Name="Culture">ja</String>
    <String Name="AdminRequired>略</String>
    <String Name="InvalidPlatformWinNT">略</String>
    <String Name="InvalidPlatformArchitecture">略</String>
    <String Name="UserCancelled">略</String>
    <String Name="GeneralFailure">略</String>
    <String Name="DotNetFX35SP1Exe">http://go.microsoft.com/fwlink/?linkid=118076</String>
    </Strings>

    </Package>
記事No.57723 のレス /過去ログ97より / 関連記事表示
削除チェック/

■60540  Re[3]: 正規表現-文字の区別
□投稿者/ 風太郎 -(2011/07/07(Thu) 10:13:45)
    No60539 (ツδ可イl さん) に返信
    > 2011/07/07(Thu) 09:58:47 編集(投稿者)
    > 2011/07/07(Thu) 09:58:24 編集(投稿者)
    >
    > ■No60538 (みきぬ さん) に返信
    >>RegexOptions.IgnoreCase あるいは ^[a|A]{3}
    >
    > ありがとうございます。
    > ちなみに、
    >
    > aaaの部分が
    >
    > Andのような文字の場合はどうすればいいでしょうか?
    >
    >
    >
    > 名前が文字化けしてます・・・

    情報が小出し過ぎてよく分からないですよ
    最初の質問に対応が終わると、次の付加部分を出すのでは、困ってしまいます

    後、質問内容から判断して、#60462のワンさんなのでしょうが
    解決済みにするなり、進展させるなり何かしら対応をお願いできませんか?

    ついでに、ここの掲示板の利用規約をもう一度見ておいたほうがいいですよ

    「一貫して同じハンドルを使用し、場を混乱させないようにしましょう。
    同じハンドルの方が質問の背景がわかりやすいです (自作自演をしたり別人を装うのは回答者の善意を裏切る行為です)。」
    という項目がありますので。

    私の書き込みも規約に抵触してしまうでしょうが・・・

    自分で考えるより、答えだけ欲しいスタイルであるならば、いっそやりたいこと全てを書き出して
    誰かに作ってもらうほうがよいのでは?

    *他の皆様、暴言レス書き込み申し訳ございません。



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

■62618  プログラムの練習問題でわからないことが
□投稿者/ 堀江伸一 -(2011/10/21(Fri) 15:44:36)

    分類:[C/C++] 

    2011/10/21(Fri) 15:52:32 編集(投稿者)
    2011/10/21(Fri) 15:52:28 編集(投稿者)

    http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0509
    勉強のためにリンク先問題をとこうとしているのですがなかなか解けずに困っております。
    どなたかアドバイスをいただけないでしょうか?


    一応答えがあり模範解答的な考え方はこちらです。
    http://www.ioi-jp.org/joi/2005/2006-ho-prob_and_sol/2006-ho-t5-review.html
    集合とか苦手なので良く分からなず模範解答を手本にためしに手探りで下記コードを書いたのですが、コード実行速度が遅すぎるというので不正解となってしまいます。
    公開されているジャッジデータで試すとコード自体は正しい答えを出しているので問題になるのは速度だけなのですが。
    模範解答の考え方の解説かコードの高速化の指摘を頂けたらと思います。


    #include<stdio.h>
    #include<map>
    #include<vector>
    struct col{
    //短冊に切ったシートのY座標上下
    int y1,y2;
    };

    void calcR(int& ansR,int& ansS,std::vector<col>& tate,std::map<int,int>& sheetIO) {
    //X列にあるシートの周長と面積を求める
    col t;
    std::map<int,int>::iterator it;
    tate.clear();
    it=sheetIO.begin();
    t.y1=(*it).first;
    int inOutCount=0;
    while(it!=sheetIO.end()){
    inOutCount+=(*it).second;
    if(inOutCount==0){
    t.y2=(*it).first;
    ansR+=(t.y2-t.y1)*2+2;//Y軸と平行に短冊に切ったシートの上下左右の周長
    ansS+=t.y2-t.y1;//面積
    tate.push_back(t);
    it++;
    if(it==sheetIO.end())break;
    t.y1=(*it).first;
    }else{
    it++;
    }
    }
    }
    void setMap(int n,int type){
    std::map<int,int> sheetIO[10002];//シートにsheetIO[x座標]。シートに入る出るの管理をするY座標は0から増えていく
    std::map<int,int> tempIO;
    int ioCount;
    int x1,y1,x2,y2,x,y;
    int maxX=0,minX=10001;
    std::map<int,int>::iterator it;
    for(int i=0;i<n;i++){
    scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
    x1++;//0列目はダミーとして使うので一列シートをずらす
    x2++;
    if(x1<minX)minX=x1;
    if(x2>maxX)maxX=x2;
    //シートを短冊状に切ってマップ上に重ねていく、
    //x座標を固定してY=0からY=10000までシートに入る出るをカウントしていく
    for(int x=x1;x<x2;x++){
    if(sheetIO[x].find(y1)==sheetIO[x].end()){

    sheetIO[x][y1]=1;
    }else{
    //シートが2枚以上重なった地点にはいるY座標
    sheetIO[x][y1]++;
    }
    if(sheetIO[x].find(y2)==sheetIO[x].end()){
    sheetIO[x][y2]=-1;
    }else{
    //シートから抜け出す地点
    sheetIO[x][y2]--;
    }
    }
    if(i>0 && i%50==0){
    //シートに入った出たの量が多くなるのでここで整理する
    //シートを短冊状にきってあるので一列のシートと見て重複部分を統合する。
    for(int x=minX;x<=maxX;x++){
    it=sheetIO[x].begin();
    if(it==sheetIO[x].end())continue;
    ioCount=0;
    tempIO.clear();
    tempIO[(*it).first]=1;
    while(it!=sheetIO[x].end()){
    ioCount+=(*it).second;
    if(ioCount==0){
    //シートに入った数と出た数が同じつまりシートから出た
    tempIO[(*it).first]=-1;
    it++;
    if(it==sheetIO[x].end())break;
    tempIO[(*it).first]=1;
    }else{
    it++;
    }
    }
    //データ更新
    sheetIO[x].clear();
    sheetIO[x].insert(tempIO.begin(),tempIO.end());
    }
    }
    }
    int ansR=0,ansS=0,old,now,p1,p2;//周長
    std::vector<col> tate[2];
    int yOld1,yOld2,yNow1,yNow2;
    //ここから先周長と面積を計算する。
    for(int x=minX;x<=maxX;x++){
    calcR(ansR,ansS,tate[x%2],sheetIO[x]);
    old=(x+1)%2;
    now=x%2;
    p1=p2=0;
    //一列ごとにシートのしかれた部分に出る入るを元に面積と周長を計算する。
    while(p2<tate[now].size() && p1<tate[old].size()){
    yOld1=tate[old][p1].y1;
    yOld2=tate[old][p1].y2;
    yNow1=tate[now][p2].y1;
    yNow2=tate[now][p2].y2;
    //隣の列Oldと今計算中の列nowでシートが接する部分があればそれを周長からひく。
    if(yOld1>=yNow2){
    p2++;
    }else if(yOld2<=yNow1){
    p1++;
    }else if(yOld2>=yNow2 && yOld1>=yNow1 && yOld1<=yNow2){
    ansR-=2*(yNow2-yOld1);
    p2++;
    }else if(yOld2>=yNow2 && yOld1<=yNow1){
    ansR-=2*(yNow2-yNow1);
    p2++;
    }else if(yOld2<=yNow2 && yOld1<=yNow1 && yOld2>=yNow1){
    ansR-=2*(yOld2-yNow1);
    p1++;
    }else if(yOld2<=yNow2 && yOld1>=yNow1){
    ansR-=2*(yOld2-yOld1);
    p1++;
    }
    }
    }
    //答えの出力
    if(type==2){
    printf("%d\n%d\n",ansS,ansR);
    }else{
    printf("%d\n",ansS);
    }
    }
    int main()
    {
    int n,type;
    scanf("%d %d",&n,&type);
    while(n!=0 || type!=0){
    setMap(n,type);
    scanf("%d %d",&n,&type);
    }
    }
親記事 /過去ログ105より / 関連記事表示
削除チェック/

次の20件>

<< 0 | 1 | 2 | 3 >>

パスワード/

- Child Tree -