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

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

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

全過去ログを検索

<< 0 >>
■5739  Re[9]: OS上での文字列選択を感知したい
□投稿者/ れい -(2007/07/22(Sun) 08:02:05)
    No5738 (れい さん) に返信
    > DrawText監視はどんな感じになるんでしょう…?

    DrawTextそのもので選択範囲がわかるわけないので
    DrawTextを発生させたWindowを取得して
    その種類がEditやRichEditだったらEM_GETSELを飛ばすという処理になるんでしょうか?
    それとも描画する色から判断?

    無理・無駄が多いなぁ。

    DrawTextフックができれば
    これもMSAAと同じようにコモンコントロールに対応は簡単そうですが、
    あまりきれいじゃないですね。

    定期的にFocusのあるコントロールを探して、
    EditかRichEditだったなら、EM_GETSELを送るだけでもいい気がしてきました。
    これならコモンコントロール全部に簡単に対応できますし、
    COMも使わなくていいのでかなり簡単です。

    「定期的にFocusのあるコントロールを探して」の部分はグローバルフックなどで置き換えたら
    少し無駄が減るかもしれませんが、
    セキュリティの問題を楽に回避するならTIMERもいいかと。

    IEとOfficeで動けばかなりいけるとおもうんですが
    EM_GETSELは動かないでしょうから個別対応かと思います。

    他にいい方法ないでしょうか?
    今のとこでた案は以下の通り。

    1 メッセージフックでマウスイベント監視
    Dragとの区別がつらそう。
    権限の問題あり。
    2 DrawTextフックでごにょごにょ
    どうやってやるのか(私には)不明。
    権限の問題あり。
    3 MSAA+EM_GETSEL
    ComCtlはOK。
    IE、Officeは変更タイミングは確実に取得可能。選択文字は?
    COMをいじる必要あり(IAccessibleは.Netにあるのでかなり楽かな?)
    無駄は少ない。
    4 TIMER+EM_GETSEL
    ComCtlはOK。
    IE、Officeは?
    COMをいじる必要なし。
    無駄は多いが、ほとんどマネージで済みそう。
記事No.5692 のレス /過去ログ16より / 関連記事表示
削除チェック/

■57191  Re[6]: 文字コードの取得
□投稿者/ 魔界の仮面弁士 -(2011/02/16(Wed) 19:03:00)
    No57172 (TAKE さん) に返信
    > ASP.NETなので
    > web.configから文字コード情報は取得はできると思いますが
    データベース等を使っている場合には、DB 側の文字集合も影響する事があります。
    
    
    ■No57174 (TAKE さん) に返信
    > バイト数文字数だけ取得すれば、
    > デコードする必要なかったですね・・・。
    ケースバイケースだとは思いますが、そういう状況もあるかもしれません。
    
    
    ただし、符号化に使用されるバイト数は一定では無いので注意してください。
    
    「あ」の文字は、Shift_JIS では 2 バイト、UTF-16 では 2 バイト、UTF-8 では 3 バイトです。
    「α」の文字は、Shift_JIS では 2 バイト、UTF-16 では 2 バイト、UTF-8 では 2 バイトです。
    「A」 の文字は、Shift_JIS では 1 バイト、UTF-16 では 2 バイト、UTF-8 では 1 バイトです。
    
    
    また、文字の並び順によってバイト数が変わるケースもあります。
    
      Encoding enc = Encoding.GetEncoding("iso-2022-jp");
    
      Console.WriteLine(enc.GetByteCount("あaいbうcえ"));     //35バイト
      Console.WriteLine(enc.GetByteCount("あいうえabc"));     //17バイト
記事No.57162 のレス / END /過去ログ96より / 関連記事表示
削除チェック/

■65875  Re[1]: vb.netクラス1対多のプログラミングの書き方
□投稿者/ howling -(2013/03/21(Thu) 16:23:01)
    No65873 (白のpants さん) に返信
    こんにちわ。

    > オブジェクト指向プログラミング初心者でして、プログラムのイメージが全然できません。

    たまに言われるのですが、オブジェクト"志"向でお願いします。(意味合いが異なる)

    さて、今回の考え方自体ですが、

    どれがどういう関係なのか、というのを自分で考えてみると、比較的うまくわかるかなと。

    車にエンジンとタイヤがついているのは必須でしょう。
    でも、車はエンジンという種類の何かではなく、同様にタイヤという種類の何かでもないです。

    すると、車クラスの中にメンバとして、エンジンとタイヤを持てばいいんじゃないか、ということになります。

    次にエンジンとタイヤの関係を調べます。
    エンジンがかかったから、タイヤを動かす、というのは正しいですね。
    でも、エンジンが無い場合でも、タイヤだけある場合はありますか?ありますね。
    例えば三輪車だったり、自転車はエンジンが無いのにタイヤがあります。

    というわけで、エンジンはエンジンで1つのオブジェクト、タイヤはタイヤで…車は車、となります。

    さて、「エンジンがかかったのでタイヤを動かそう」というエンジンがかかった事を知っているのは
    エンジンそのものと、エンジンを保持している車クラスになります。
    先程も話しましたが、エンジンが無くてもタイヤだけある可能性があることから、
    車クラスがエンジンクラスから「エンジンがかかったこと」の通知を受け取った場合に、
    車クラスがタイヤクラスに対して、「回転しろ」と命令を下すのが良いかと。

    …これをやった場合に、
    タイヤ自体は指定されたパワーで回転し、その速度を知るだけのオブジェクト
    エンジン自体はエンジンがかかっているのかどうかを知るだけのオブジェクト、
    車自体はタイヤとエンジンをコントロールするオブジェクト、という形になります。

    タイヤの故障ならタイヤクラスに、
    エンジンの故障ならエンジンクラスに割り当てておき、
    車クラスはそれぞれが故障したかどうか、などを調べるだけでいいかなと。

    …という説明でわかるかなぁ?
記事No.65873 のレス /過去ログ111より / 関連記事表示
削除チェック/

■85058  CSV出力について
□投稿者/ tari -(2017/09/07(Thu) 18:49:46)

    分類:[.NET 全般] 

    VB.netでプログラムを作成してますが
    わからないことがあるので教えてください

    a()= {0,1,2,3}
    b()= {4,5,6,7}

    があります

    CSVへ出力する際

    for i as integer = 0 to a.Length - 1
    Dim test As String() = {a(i), b(i)}
    File.AppendAllLines( path & "c.csv", test, Encoding.Default)
    next

    0
    4
    1
    5
    2
    6
    3
    7

    書き込まれますが

    0,4
    1,5
    2,6
    3,7

    というふうに出力したいんです

    教えてください
親記事 /過去ログ145より / 関連記事表示
削除チェック/

■85059  Re[1]: CSV出力について
□投稿者/ 魔界の仮面弁士 -(2017/09/07(Thu) 19:22:43)
    No85058 (tari さん) に返信
    > a()= {0,1,2,3}
    > b()= {4,5,6,7}

    型は整数なのですか?

    Dim a As Integer() = {0, 1, 2, 3}
    Dim b() As Integer = {4, 5, 6, 7}

    それとも文字列なのですか?

    Dim a As String() = {"0", "1", "2", "3"}
    Dim b() As String = {"4", "5", "6", "7"}


    ひとまず、文字列ということで回答します。

    > 0,4
    > 1,5
    > 2,6
    > 3,7

    a と b の要素数が同じであるという前提で良いなら:

    '案1
    Dim test = Enumerable.Range(0, a.Length).Select(Function(i) a(i) & "," & b(i))
    File.WriteAllLines(path & "c.csv", test, Encoding.Default)


    '案2
    For n = 0 To a.Length - 1
     Dim test As String = a(n) & "," & b(n) & ControlChars.NewLine
     File.AppendAllText(path & "c.csv", test, Encoding.Default)
    Next


    なお上記は、「各レコードの末尾」に改行が配置される形式で出力されます。
    「レコードとレコードの間」に改行を配置する場合は、下記の様に書けます。

    '案1改
    Dim test = Enumerable.Range(0, a.Length).Select(Function(i) a(i) & "," & b(i))
    .WriteAllText(path & "c.csv", String.Join(vbNewLine, test), Encoding.Default)
記事No.85058 のレス /過去ログ145より / 関連記事表示
削除チェック/

■85066  Re[2]: CSV出力について
□投稿者/ tari -(2017/09/08(Fri) 09:59:04)
    No85059 (魔界の仮面弁士 さん) に返信

    ありがとうございます
    おかげさまで、できました

    色々方法があるんですね・・
    勉強になります!
記事No.85058 のレス / END /過去ログ145より / 関連記事表示
削除チェック/

■100888  Re[1]: 【C#,VS2022】線を、点Pを中心に据えて移動させたい
□投稿者/ 魔界の仮面弁士 -(2022/11/15(Tue) 18:50:18)
    No100887 (エルデの王 さん) に返信
    > とある線(Shape.Line型)を、掲題の通り移動させたいと思っています。

    この Shape.Line とは何のことでしょうか?

    PowerPoint / Excel / Publisher / Word 等のオートメーションで使われる
    Office ライブラリの Shape クラスの Line プロパティのことでしょうか。
    https://learn.microsoft.com/ja-jp/office/vba/api/word.shape.line

    あるいは、WPF の System.Windows.Shapes.Line クラスのことでしょうか。
    https://learn.microsoft.com/ja-jp/dotnet/api/system.windows.shapes.line?view=netframework-4.8

    それとも自作の型ですか?


    > 例えば、(X1=0,Y1=50,X2=50,Y2=100)の線Aと、点P(X=30,Y=30)があるとして、
    > 点Pの座標に線Aの中心を置きたいのです。(傾きはそのまま)
    線分A の中点 C は、Xc = (X1+X2)÷2, Yc = (Y1+Y2)÷2 で求まりますよね。
    https://mathwords.net/tyutenzahyo

    なので、線分A (X1, Y1)-(X2, Y2) の中点となる(Xc, Yc)と、
    目標点P (Xp, Yp) とのズレを算出すれば良いのでは無いでしょうか。

    Shape.Line 型というのが何のことなのか分からないのでコード例は書きませんが、
    求めたオフセットを線分A の座標に足して線分A' を求めるか、
    もしくは、線分A を描画する前に、原点座標をシフトしてから描画すれば良いと思います。
記事No.100887 のレス /過去ログ175より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -