トップページ⇒tech
1001コメント289KB

C#, C♯, C#相談室 Part59

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/05/16(日) 23:13:52
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ 
C#, C♯, C#相談室 Part58
http://pc12.2ch.net/test/read.cgi/tech/1269261310/

Visual C# 2008 Express Edition 日本語版
http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/

その他テンプレ>>1-5くらい
0232デフォルトの名無しさん2010/05/31(月) 00:50:03
>>230
それは「変数をフォルダ名にする」じゃ言葉足らずもいいとこだろ。

var path = Path.Combine(basePath, string.Format("フォルダ{0}", i);
Dicretory.CreateDirectory(path);

とかでもダメ?
0233デフォルトの名無しさん2010/05/31(月) 00:54:08
>>231
>>232
ありがとうございます
試してみます
0234デフォルトの名無しさん2010/05/31(月) 10:28:12
ゲ製から来た人かなあ
ゲーム作るつもりなら最終的には自分でメッセージループ回すことになると思うぞ
0235デフォルトの名無しさん2010/05/31(月) 15:06:34
C++の__DATE__みたいなコンパイル日付は
どのように取得するのでしょうか?
0236デフォルトの名無しさん2010/05/31(月) 15:41:05
無理
どうしてもやりたかったらビルド前のコマンドでコード生成
0237デフォルトの名無しさん2010/05/31(月) 17:43:21
無いですか・・・残念
ありがとう
0238デフォルトの名無しさん2010/05/31(月) 23:18:02
コード生成っていったって
internal static class VersionInfo { public const string Date = "2010/05/31"; }
こういうのを生成してcsファイルに保存する処理をスクリプトかなんかで書いてビルド前イベントで呼ぶだけ
0239デフォルトの名無しさん2010/06/01(火) 00:56:56
svnのリビジョンを読み取ってソースに書き込む奴とかな。
0240デフォルトの名無しさん2010/06/01(火) 04:51:57
わざわざ読み取らなくても勝手に変えてくれるよ
0241デフォルトの名無しさん2010/06/01(火) 15:22:12
MSってコード生成とかメタプログラミングとか好きだから
__DATE__みたいなオモチャ使わず各自で好きにやるのが普通だと思ってるんだろうな
0242デフォルトの名無しさん2010/06/01(火) 16:22:49
どうしても必要ならリフレクション。
0243デフォルトの名無しさん2010/06/01(火) 16:50:03
リフレクション使うにしてもコンパイル時に埋めこんどかないと無理
[assembly:CompileDate("2010/05/31")]みたいな
どっちみちコード生成が必要だから>>238の方が楽
02442392010/06/01(火) 19:34:49
>>240
うわあ、今までPerlのスクリプトで処理してた・・・
0245デフォルトの名無しさん2010/06/01(火) 19:50:35
>>244
まじかよw
これまでの作業量について考えるのだけはやめておくんだ!これからが大事!な!
0246デフォルトの名無しさん2010/06/02(水) 05:36:50
245 のやさしさに泣いた
0247デフォルトの名無しさん2010/06/02(水) 08:58:57
まぁ遠回りして勉強になることもあるし・・・
あまりにも調べが足りなさすぎるがこれも勉強だw
0248デフォルトの名無しさん2010/06/02(水) 10:55:14
まあデフォルトのままだとかわらないからな
0249デフォルトの名無しさん2010/06/02(水) 13:09:26
相談です。

.NET3.5でWindowsフォームアプリケーションを作成しています。

Webカメラやリモートカメラなどの映像を取り込み、その映像をリアルタイムにフォーム内に表示したいのですが、
可能でしょうか?

「webカメラ キャプチャ」等のワードで検索しても良い資料が見つからなかったので、
どなたか良い方法をご教授ください…
0250デフォルトの名無しさん2010/06/02(水) 13:34:04
>>249
DirectShow辺りに答えがあるんじゃないかな?

あと、ヒントならGraphEditPlusというツールを使うのもありかも。
0251デフォルトの名無しさん2010/06/02(水) 13:51:48
Directshow.NET使ってる。
普通に使える
02522512010/06/02(水) 14:00:17
あーあとOpenCVの.NET版も試したけど使えたよ
0253デフォルトの名無しさん2010/06/02(水) 14:38:34
どなたか教えてください。

機器との通信により得られた16進数の浮動小数点データ形式文字列を、
10進数にしてを表示するプログラムを作成したいのですが、よい方法はないでしょうか?
<例>受信データ:42C80000 出力:100.0
といったものを作りたいのです。

なお、受信データを文字列に変換するところまでは、できています。
0254デフォルトの名無しさん2010/06/02(水) 14:49:05
16進文字列をintに変換
int n = Convert.ToInt32("42C80000", 16);
intを浮動小数点に変換
float f = BitConverter.ToSingle(BitConverter.GetBytes(n), 0);
100.0のような書式で出力するのはわかるよね?
0255デフォルトの名無しさん2010/06/02(水) 15:00:18
その前にエンディアンとかの話は大丈夫なんだろうか・・・
0256デフォルトの名無しさん2010/06/02(水) 15:01:56
受信データの例を見る限り問題無いでしょ
02572532010/06/02(水) 15:29:16
>254さん
できました。
ようやくConvert.ToInt32の意味がわかりました。
どうもありがとうございます。
0258デフォルトの名無しさん2010/06/02(水) 20:34:47
フォーム内のフォーカスを初期表示時と同じにする、もしくは
フォーム内のコントロールで TabIndex が一番若い番号のコントロールを
簡単に知る方法はないでしょうか?

現在複数のフォームを使うアプリを書いているのですが、
インスタンス化の処理が結構重い(DBから情報ひっぱってきてコントロールを沢山つくる)ので
フォームのインスタンスを使いまわすことにしました。

Close() のかわりに Hide() を使ったまではいいのですが、
再度表示したときに当然のごとくフォーカスの位置が前回と同じなままになってしまいます。
ロードイベントあたりで先頭のコントロールに対して Select() を使って対処していますが、
コントロール名をハードコーディングしているのでデザイナでの TabIndex 変更に追従出来ていません。


0259デフォルトの名無しさん2010/06/02(水) 20:45:33
>コントロール名をハードコーディングしているのでデザイナでの TabIndex 変更に追従出来ていません。
意味がわかりません
0260デフォルトの名無しさん2010/06/02(水) 20:56:45
とてつもないドキュソ実装の香り。
動的なフォーム構築で追加したコントロールのTabIndex再設定ができません、と聞こえる。
手を抜かないでFormのControlsを回して設定し直せばいいんじゃね?
02612582010/06/02(水) 21:04:19
>>259
TabIndex が一番若いコントロールを決めうちして
Load イベントで直接 Select() しちゃっています。
デザイナで順番かえたりした場合は一々 Select() を呼び出すコントローラーを変更しています。

>>260
全部を動的に追加しているわけじゃなく、いくつか固定で置いてあるものもあるんですが、
動的フォーム構築をする場合って全部の TabIndex をコードビハインド側でふりなおすのが普通なんでしょうか?
その場合ってデザイナ側での並び順がかわったら一々コードも修正しないといけないですよね?
0262デフォルトの名無しさん2010/06/02(水) 21:08:09
>>250,251
ありがとうございます
0263デフォルトの名無しさん2010/06/02(水) 21:08:45
LinQで検索でいけるじゃんと思ったけどPanelとか使ってると結構めんどくさいな
0264デフォルトの名無しさん2010/06/02(水) 21:13:57
USBカメラを使って、動画を
AVIファイル形式での作成の仕方はサンプルみつけたんだけど、
WMVもしくはMP4で作成できる人いる?
AVI形式はサイズが大きすぎて、、、小さくしたいんだよね。
0265デフォルトの名無しさん2010/06/02(水) 21:20:46
スレ違い
そういうのはC#にこだわらずにC++のコードとか漁らないと
02662582010/06/02(水) 21:22:48
自己解決しました。

フォームの VisibleChanged イベントハンドラで自分自身に対して SelectNextControl() を使うことで
希望の動作となりました。

0267デフォルトの名無しさん2010/06/02(水) 21:33:45
フォームインスタンス使いまわしはクリアの処理が汚なくなりがちだからきらいだな
0268デフォルトの名無しさん2010/06/02(水) 21:36:45
きちんと戦略を練られるならいいけど、タブ順の管理すらメンドクサなんていう
子のコードは信じられない。
0269デフォルトの名無しさん2010/06/02(水) 21:50:28
>>268
タブ順はデザイナーで管理したい、って話じゃないの?
俺はそういうのはデザイナ側で完結してないと気持ちわるいけどな。
WPF万歳だよほんと。
0270デフォルトの名無しさん2010/06/02(水) 21:53:20
コードビハインドはどっちかっつーとまだデザインの範疇じゃね?
まータブ順変更しただけでコード書き換えなきゃいけないような実装はタコだと思うけど。
0271デフォルトの名無しさん2010/06/02(水) 22:00:38
WPFありがたがってるのは総じてアホ
0272デフォルトの名無しさん2010/06/02(水) 22:13:29
新しいものを受け付けなくなったら終わりだよ
C#ユーザーってもっとミーハーが多いのかと思ってた
0273デフォルトの名無しさん2010/06/02(水) 22:16:09
WPF単体だと見切る可能性大だったな
SilverLightがなければやろうと思わなかった
0274デフォルトの名無しさん2010/06/02(水) 22:19:16
>SilverLight
ほんとにやってんの?
0275デフォルトの名無しさん2010/06/02(水) 22:21:09
xamlという共通な部分があるからね
実装差違とかあるのもわかってるよ

どっちかといえばsilverlightのついでにWPFやる感じ
0276デフォルトの名無しさん2010/06/02(水) 22:21:36
test
0277デフォルトの名無しさん2010/06/02(水) 22:24:34
xamlがわからない
0278デフォルトの名無しさん2010/06/02(水) 22:26:38
xamlやるぐらいならHTML5とJavaScriptやる
0279デフォルトの名無しさん2010/06/02(水) 22:31:28
たかが設定ファイルに何そんなに騒いでるの
XAMLなんかDesigner.csをXMLにしただけのもの
触りたくなけりゃ触らなくてもデザイナ任せでWinForms程度のUIは作れる
0280デフォルトの名無しさん2010/06/02(水) 22:32:19
なんでか、うちのWindows7じゃWPF動かんし。
動かすと「URLが正しくないため、読み込めませんでした」。
エクスプローラからダブルクリックしても全く動かない。
0281デフォルトの名無しさん2010/06/02(水) 22:34:02
>>277
winformでも同じような仕組み作れるよ
Formにwebbrowser貼り付けてそこへ起動時にhtmlコード入れて
webbrowserのどれがクリックされたとかイベント処理すればOK
0282デフォルトの名無しさん2010/06/02(水) 22:34:12
何を勘違いしてるのか知らんがプログラミングやるようなレベルじゃないな
02832802010/06/02(水) 22:42:26
あ、すまん勘違い。なんかいじってた設定が悪かった。新規作成したら動いたわ。
0284デフォルトの名無しさん2010/06/03(木) 01:14:15
ソフトウェアキーボードを作っています。
タブによって英数字と平仮名のキー分けてをそれぞれ実装しています

ある文字ボタン(ここでは「か」と書かれたボタン)を押すとイベントが発生し、以下のような処理を行います。
private void buttonH_SA_Click(object sender, EventArgs e) {
 SendKeys.SendWait("ka"); //"平仮名の「か」を送りたい
}

このようにして、ソフト上でキーボードを実現したいのですが、
例えばメモ帳アプリケーションに対してこのような処理を実行すると、"か"ではなく"ka"としか表示されません。

なんとかして、メモ帳に"ka"ではなく"か"と表示させることはできないのでしょうか?
対象テキストボックスのImeModeプロパティが弄れたらいいのだけれどもそれは無理ですし…

何か良い方法があればご教授下さい。
よろしくお願いします。
0285デフォルトの名無しさん2010/06/03(木) 07:01:55
SendKeys.Send("か");
でいかんのか?
0286デフォルトの名無しさん2010/06/03(木) 10:42:43
>>285
それは試しましたが、確かに「か」と出力されます。

しかし未変換の状態で出力されてほしいのです。(文字に下線がついて出力されるように)

その方法では既に確定した状態で出力されてしまいます。
0287デフォルトの名無しさん2010/06/03(木) 11:06:27
DLLのAPI呼び出しでもいい?
0288デフォルトの名無しさん2010/06/03(木) 11:55:11
>>287
大丈夫です
0289デフォルトの名無しさん2010/06/03(木) 14:22:47
>>288
ならWin32 APIのSendInputを呼び出すんだな。
IMEがMS IMEなら下線付きで送信される。でも残念ながらATOKは確定済みで送信される
0290デフォルトの名無しさん2010/06/03(木) 14:27:22
Imm〜で何とかできそうな
0291デフォルトの名無しさん2010/06/03(木) 15:43:17
http://cs2ch.blogspot.com/2010/04/blog-post_10.html
これにIMEの制御つけるだけじゃないの?
0292デフォルトの名無しさん2010/06/03(木) 16:14:03
多分「詳細なテキストサービス」の出番ではなかろうか
Imm系がそれだったような気もするが詳しくは知らん
てか情報なさ過ぎ
0293デフォルトの名無しさん2010/06/03(木) 16:17:15
>>292
それより問題なのがOSがvista以降くらいになると
IME関連の制御が違うとかどうのって記述を見かけたたんだよな・・・
0294デフォルトの名無しさん2010/06/03(木) 17:53:48
>>293
これだな ttp://social.technet.microsoft.com/forums/ja-JP/windowsvistasoftwareja/thread/973a7407-5ddb-4b34-9aea-0fb36f762cf4/
VistaからTextServicesFramework、略してTSFなるものに変わったらしい
まったく毎度毎度要らんことしてくれるわM$さんはよう
0295デフォルトの名無しさん2010/06/03(木) 18:06:11
>>294
それそれ
MS関連でタッチパネル系デバイスが普及しないのは
そういうところなんだよね〜
0296デフォルトの名無しさん2010/06/03(木) 18:39:37
>>295
かんけーねーし、
そもそも携帯電話以外で巷にあふれているタッチパネルのデバイスの大半はMSのOS使っているだろ。
0297デフォルトの名無しさん2010/06/03(木) 18:42:34
業務用で終わってる内は普及したとはいわねーよw
0298デフォルトの名無しさん2010/06/03(木) 18:49:58
>>297
ニートは言うことが面白い。
0299デフォルトの名無しさん2010/06/03(木) 19:07:43
>>296
WindowsMobileを無視するとは。
0300デフォルトの名無しさん2010/06/03(木) 19:16:50
>>298
自分の家が世界の全てだからな。
0301デフォルトの名無しさん2010/06/03(木) 19:18:38
普及したって定義は実際はどうなの?
0302デフォルトの名無しさん2010/06/03(木) 19:47:37
なんか一気に雰囲気悪くなったな
0303デフォルトの名無しさん2010/06/03(木) 19:51:54
まあネタに真面目に突っ込むのもアレだけど、
>>294も>>295もどっちもどっちではある。

Windowsでサポートされてたタッチパネルってほとんどマウスエミュレーション系じゃない?
ああいうのを今日的な感覚でタッチパネルって言っていいのかどうか。
0304デフォルトの名無しさん2010/06/03(木) 21:56:45
いきなりネガキャンされたらいい気しない人も結構いるってことじゃないの?
03052802010/06/03(木) 22:06:50
かといって、タップ&ホールドを持ち込まれるとついていけない子がいっぱい。
でもないのか、iPhoneとかでも使われてるし。
03062942010/06/03(木) 23:33:13
>>303
ちょwww俺もかよwwwwww
アンカーミスだよな?
0307デフォルトの名無しさん2010/06/04(金) 01:11:12
MSILのリファレンスってどこで見れますか?
0308デフォルトの名無しさん2010/06/04(金) 01:12:45
XmlSerializerでデシリアライズをやろうとしてるんですが、
一つの要素に配列の様に複数の値が入ってる場合にちょっと困ってます。

↓こんな要素があって、colorをRGBAで読み込みたいんです。
<ambient>
<color>0.50000 0.50000 0.50000 1</color>
</ambient>

とりあえず文字列としてはcolorがデシリアライズできましたが、
public class ambient
{
public string color;
}

使い勝手が悪いのでfloat4つのR,G,B,Aを持ったcolorクラスとして、
もしくはfloat[4]として読み込みたいです。

public class color
{
public float r, g, b, a;
// public float[] rgba;
}

何かいい方法ないでしょうか?

0309デフォルトの名無しさん2010/06/04(金) 01:17:48
<ambient>
<color a="0" r="0" g="0" b="0"/>
</ambient>
とか

<ambient>
<color>
<a>0</a>
<r>0</r>
<g>0</g>
<b>0</b>
</color>
</ambient>
とか
0310デフォルトの名無しさん2010/06/04(金) 01:19:19
xmlの方は変えられないのならsplitでバラすとか
0311デフォルトの名無しさん2010/06/04(金) 01:35:51
xmlの方は変更出来ません。
文字列で読み込んでから分割するしかないですかね。
0312デフォルトの名無しさん2010/06/04(金) 01:38:15
無いんじゃないかな
0313デフォルトの名無しさん2010/06/04(金) 01:40:04
XmlSerializerの都合もあるだろうしね・・・
というか何でできないの?

最悪の場合は変換前のxmlに正規表現の置換でもかけて
XmlSerializer向けに直してやるとかは?
0314デフォルトの名無しさん2010/06/04(金) 02:04:40
google earth用のモデルファイルなんで、モデルファイル自体には変更無しで読み込もうとしてました。
0315デフォルトの名無しさん2010/06/04(金) 02:08:25
普通にxmlをreadさせて解析するのじゃだめなのかね?
0316デフォルトの名無しさん2010/06/04(金) 10:44:26
Google はその辺りすごい evil だからなぁ。
他社との連携とかほんと無視。
0317デフォルトの名無しさん2010/06/04(金) 10:56:28
単純にsoapの方を使ってシリアライズしたらいいじゃん
フィルタ書けてそう言うのも簡単に読み書きできるし
0318デフォルトの名無しさん2010/06/04(金) 12:17:33
>>307
最も完全なのはecmaのCLI
オペコードのリファレンスとしてわかりやすいのはMSDNのSystem.Reflection.Emit.OpCodes
0319デフォルトの名無しさん2010/06/04(金) 14:51:38
>>316
それを悪とするあつかましさが醜い
0320デフォルトの名無しさん2010/06/04(金) 20:48:13
XmlSerializer 便利だけど結構こまかい制約あるしなあ
0321デフォルトの名無しさん2010/06/04(金) 21:58:47
邪悪なxxコンテストとか今時のヤツはやらんのか・・・
0322デフォルトの名無しさん2010/06/04(金) 22:38:21
Soapってまだ使われてる??
0323デフォルトの名無しさん2010/06/04(金) 22:41:16
全国どこにでもありますが
0324デフォルトの名無しさん2010/06/04(金) 23:13:47
駅前のは本番ないから気をつけような
0325デフォルトの名無しさん2010/06/04(金) 23:26:36
知らんかった(岐阜県民)
0326デフォルトの名無しさん2010/06/04(金) 23:49:38
質問です。
VC2008 C#の、イミディエイトウィンドウ内で
IEnumerable実装クラスなどを列挙させるのに
いい方法はないでしょうか。
0327デフォルトの名無しさん2010/06/05(土) 00:02:08
.ToArray()
0328デフォルトの名無しさん2010/06/05(土) 00:19:07
その後、[0], [1] とか自力でやりますか?
0329デフォルトの名無しさん2010/06/05(土) 00:29:27
イミディエイトウィンドウって使う?
全部ウォッチウィンドウで済ませちゃってるんだけど。
0330デフォルトの名無しさん2010/06/05(土) 00:33:08
たまに使う。
副作用のあるメソッド呼び出しとか。
0331デフォルトの名無しさん2010/06/05(土) 00:35:07
>>328
試せよ
配列なら自動的に中身が表示される
■ このスレッドは過去ログ倉庫に格納されています