C#, C♯, C#相談室 Part55

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

前スレ
ふらっとC#,C♯,C#(初心者用) Part54
http://pc12.2ch.net/test/read.cgi/tech/1264236247/

関連スレ
C#, C♯, C#相談室 Part55(実質56)
http://pc12.2ch.net/test/read.cgi/tech/1260111240/

WPF(XAML, XBAP, .Net3.5)GUIプログラミング Part5
http://pc12.2ch.net/test/read.cgi/tech/1261879110/
2デフォルトの名無しさん:2010/02/04(木) 20:33:58
A4 - ISO 216 用紙サイズ(210mm×297mm)
これと
[PaperSize A4 Kind=A4 Height=1169 Width=827]
これの関係は
1169/100*2.54=29.6926cm
ということなので
{X=13.33333,Y=11.66667,Width=800,Height=1137.667}
これのX=13.33333も
13.33333/100*2.54=0.338666582cm

まあ5mmじゃなく3mm程度ずれてる計算?
プリンターが古かったりすると多少ずれるかもしれないし
31:2010/02/04(木) 20:34:07
スレタイ間違いました・・・orz
4デフォルトの名無しさん:2010/02/04(木) 20:35:16
ふらっと覗いてみた笑
5デフォルトの名無しさん:2010/02/04(木) 20:35:41
6デフォルトの名無しさん:2010/02/04(木) 20:37:32
>>2
ありがとうございます。
全ての謎がとけました。^^
今まで逆引きの本一冊でいってたんですけど、座学でもいけるように
全機能の入った本を買ってきたところです。
7デフォルトの名無しさん:2010/02/04(木) 20:41:43
>>3
×間違いました
○間違えました
8デフォルトの名無しさん:2010/02/04(木) 20:47:02
あっちのスレと番号までかぶってる…
9デフォルトの名無しさん:2010/02/04(木) 20:49:39
>>8
あっちは実質56らしいよ
でももう終わりかけてるんだよなw
ややこしいw
10デフォルトの名無しさん:2010/02/04(木) 20:54:53
間違いだらけヒドス
11デフォルトの名無しさん:2010/02/04(木) 21:07:28
このカオスはどうしてくれようか
向こうと新スレ交換しようにもあっちはあと何週間かは持つだろうからなー
12デフォルトの名無しさん:2010/02/04(木) 21:20:36
ああ、先に提案するかさっさと処分するかだな>このスレを
p2重い

どこか別のp2のようなサービスないのかな・・・
13デフォルトの名無しさん:2010/02/04(木) 22:07:13
ふらっとC#,C♯,C#(初心者用) Part55
http://pc12.2ch.net/test/read.cgi/tech/1265288563/
14デフォルトの名無しさん:2010/02/04(木) 22:42:15
今の本スレが終わるまでここが残ってればここを次の本スレとしてリユースって形でおk?
15デフォルトの名無しさん:2010/02/04(木) 22:45:57
C#, C♯, C#相談室 Part55
http://pc12.2ch.net/test/read.cgi/tech/1260111240/

こっちのスレの人次第だけどこっちも実質56を55でやってるからねえ
いい加減57に行きたいだろうからここは閉鎖でいいと思うけど
16デフォルトの名無しさん:2010/02/04(木) 23:28:35
まあ正直55が3スレあっても気にならないんだけどな
どうせdat落ちしたら基本見れないんだから55スレのxxx見ろとか言わないし
17デフォルトの名無しさん:2010/02/05(金) 00:32:36
初めて質問します。
コンソールからの入力で2つの整数を取得したいのですが、
下記のように、2行に渡って取得する他ないのでしょうか?
Console.WriteLine("何行何列ですか?");
int row = Convert.ToInt32(Console.ReadLine());
int col = Convert.ToInt32(Console.ReadLine());

私としては、ユーザーに2,3のように1行で入力してもらって、
そんなことは可能でしょうか?
どなたかご教示お願いします。
18デフォルトの名無しさん:2010/02/05(金) 00:38:09
>>17
こちらへ
ふらっとC#,C♯,C#(初心者用) Part55
http://pc12.2ch.net/test/read.cgi/tech/1265288563/
19デフォルトの名無しさん:2010/02/05(金) 01:56:14
この分だとこのスレが3つ目のpart55になるわけか
いや、よく見たら1つ死んでるから4つ目だしw
20デフォルトの名無しさん:2010/02/05(金) 05:24:36
C#人気あるなあ
21デフォルトの名無しさん:2010/02/05(金) 11:17:41
このスレ、削除依頼(重複)出しているの?
22デフォルトの名無しさん:2010/02/05(金) 12:18:58
どなたか17番の回答お願いします。。
23デフォルトの名無しさん:2010/02/05(金) 12:27:15
回答は俺の十八番だ
24デフォルトの名無しさん:2010/02/05(金) 13:07:42
終わた(´;ω;`)

住谷 正樹 様

お客様の証拠金維持率が当社外国為替証拠金取引規約の基準
であるロスカットライン100%を下回ったため、下記全ての
ポジションを反対売買により決済(ロスカット)致しました。
決済の結果詳細は【DMM FX】お取引画面にてご確認ください。
25デフォルトの名無しさん:2010/02/05(金) 13:10:14
レイザーラモンHG乙
26デフォルトの名無しさん:2010/02/05(金) 13:14:06
>>22
使ったことはないけど
http://ufcpp.net/study/csharp/st_consoleio.html
ここを見る限りでは
string str = Console.ReadLine();
と言う感じで文字列なので
string関連の文字操作を使って特定の区切り文字を境に
2つ文字列を切り出してそれぞれが数字かどうかの確認をすればいいだけとちゃうの?
27デフォルトの名無しさん:2010/02/05(金) 13:17:19
たとえば
10,11
と入力させて
,で区切るとか
で前の文字列と後ろの文字列をそれぞれConvert.ToInt32でもやってみる
チェックが面倒ならtryでエラーを拾えばいいし
28デフォルトの名無しさん:2010/02/05(金) 18:10:03
(?<row>[0-9]+),(?<col>[0-9]+)のような正規表現でキャプチャするのが楽
29デフォルトの名無しさん:2010/02/05(金) 18:23:19
>>28
その正規表現を考えるのが苦
30デフォルトの名無しさん:2010/02/05(金) 18:29:15
素直にトークン分割汁
31デフォルトの名無しさん:2010/02/05(金) 21:22:14
例が単純だから正規表現使わなくても十分だけど
正規表現が少しでも分かってれば>>28はすぐ浮かぶだろ
32デフォルトの名無しさん:2010/02/05(金) 22:42:21
じゅう, じゅういち

さぁ!
33デフォルトの名無しさん:2010/02/05(金) 22:45:12
10、11

ユーザー様は全角英数字で入力するのだ
34デフォルトの名無しさん:2010/02/05(金) 22:47:39
最近のIME様は賢いので10,11と英数字の後は全角カンマになさったりするものだ
35デフォルトの名無しさん:2010/02/05(金) 23:15:08
じゃあ、とりあえずNFKCで
36デフォルトの名無しさん:2010/02/05(金) 23:22:33
37デフォルトの名無しさん:2010/02/05(金) 23:43:50
http://www.opensource.apple.com/source/ChatServer/ChatServer-263/libidn/csharp/NFKC.cs

c sharp で nfkc なんて意識するとか
ありえな、
38デフォルトの名無しさん:2010/02/05(金) 23:44:59
寝ますよ?
39デフォルトの名無しさん:2010/02/06(土) 00:11:57
でも正規表現だとマルチバイト文字が入力されたら
うまく行かない気がする・・・
40デフォルトの名無しさん:2010/02/06(土) 00:13:50
十、十一
41デフォルトの名無しさん:2010/02/06(土) 04:17:41
大変ですね
42デフォルトの名無しさん:2010/02/06(土) 09:14:52
private void Page_Load(object sender, System.EventArgs e)
{
// string seperated by colons ';'
string info = "mark;smith;123 csharp drive;toronto;canada";

string[] arInfo = new string[4];

// define which character is seperating fields
char[] splitter1 = {';'};
char[] splitter2 = {','};
char[] splitter3 = {'、'};
char[] splitter4 = {','};

info = info.Split(splitter1);
info = info.Split(splitter2);
info = info.Split(splitter3);
info = info.Split(splitter4);

for(int x = 0; x < arInfo.Length; x++)
{
Response.Write(arInfo[x] + "<br>");
}

}

http://www.csharpfriends.com/articles/getarticle.aspx?articleid=28
起きてから考えてみるも良いコード思いつかず
うん、でも当然動かないorz
43デフォルトの名無しさん:2010/02/06(土) 10:02:11
とりあえずジェネリックとforeachでも覚えて、
splitter4とか作らないようにしてくれ
44デフォルトの名無しさん:2010/02/06(土) 12:21:42
大変ですね
45デフォルトの名無しさん:2010/02/06(土) 12:49:22
>>43
それより先のことが山盛りあるとおもうの。
46デフォルトの名無しさん:2010/02/06(土) 13:27:14
C#にenumってねーの?
47デフォルトの名無しさん:2010/02/06(土) 13:36:30
ないよ
48デフォルトの名無しさん:2010/02/06(土) 13:46:29
ない可能性は限りなく零に近い
49デフォルトの名無しさん:2010/02/06(土) 15:51:27
零に近い根拠を示しなさい
さあ示すのです!
50デフォルトの名無しさん:2010/02/06(土) 16:41:57
元に戻して申し訳ないけど
上にある正規表現は負の整数拾ってないよな

残念だけど…
51デフォルトの名無しさん:2010/02/06(土) 17:21:53
何行何列かを取得するのに負の整数の考慮はいらんだろ
52デフォルトの名無しさん:2010/02/06(土) 20:56:54
考慮するにしたって[+-]付けるだけじゃん
そういう柔軟性は大きな強み
53デフォルトの名無しさん:2010/02/07(日) 01:02:13
強みですね
54デフォルトの名無しさん:2010/02/07(日) 01:33:29
>>52
へえ
55デフォルトの名無しさん:2010/02/08(月) 19:26:53
過疎
56デフォルトの名無しさん:2010/02/09(火) 02:54:07
VS2010のテキストエディタはWPFだよ
軽くはないけどそんなに遅くもない
57デフォルトの名無しさん:2010/02/09(火) 03:30:57
955 名前:デフォルトの名無しさん[sage] 投稿日:2010/02/08(月) 20:14:14
VS2010のテキストエディタはWPFだよ
軽くはないけどそんなに遅くもない
58デフォルトの名無しさん:2010/02/09(火) 12:32:13
----------------------------------------------------------
C#, C♯, C#相談室 実質Part57

前スレ(実質Part56)が埋まりましたのでここを有効利用いたします。


では本来の>>1-4くらい
----------------------------------------------------------
59デフォルトの名無しさん:2010/02/09(火) 12:33:13
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。 

前スレ 
C#, C♯, C#相談室 Part55 (実質56)
http://pc12.2ch.net/test/read.cgi/tech/1260111240/

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

その他テンプレ>>59-61くらい 
60デフォルトの名無しさん:2010/02/09(火) 12:35:50
関連スレ 

ふらっとC#,C♯,C#(初心者用) Part55
http://pc12.2ch.net/test/read.cgi/tech/1265288563/

Visual Studio 2008 Part 19 
http://pc12.2ch.net/test/read.cgi/tech/1259076828/ 

WPF(XAML, XBAP, .Net3.5)GUIプログラミング Part5
http://pc12.2ch.net/test/read.cgi/tech/1261879110/

【VB.NET】LINQ友の会【C#, C♯, C#】 
http://pc12.2ch.net/test/read.cgi/tech/1202568694/ 

C#,C#の宿題片付けます。 
http://pc12.2ch.net/test/read.cgi/tech/1197620454/ 

ASP.NET + Atlas or Ajax について 
http://pc12.2ch.net/test/read.cgi/tech/1150036430/ 

Microsoft Silverlight その5 
http://pc12.2ch.net/test/read.cgi/tech/1260010993/ 

Visual Studio 2010 Part 2 
http://pc12.2ch.net/test/read.cgi/tech/1258631113/ 
61デフォルトの名無しさん:2010/02/09(火) 12:37:54
参考リンク 

MSDNライブラリ 
http://msdn.microsoft.com/ja-jp/library/ 

@IT Insider.NET 
http://www.atmarkit.co.jp/fdotnet/ 
Insider.NET 会議室 ディレクトリ 
http://www.atmarkit.co.jp/fdotnet/index/bbs/ 
MSDN フォーラム 
http://forums.microsoft.com/MSDN-JA/default.aspx?SiteID=7 

pinvoke.net: the interop wiki! 
http://pinvoke.net/ 
宇宙仮面の C# プログラミング / C# Programming 
http://ukamen.hp.infoseek.co.jp/ 
WisdomSoft C#入門 
http://wisdom.sakura.ne.jp/programming/cs/ 
WisdomSoft Microsoft .NET入門 
http://wisdom.sakura.ne.jp/system/msnet/ 
どっとねっとふぁん 
http://dotnetfan.org/ 
緑のバイク 初めてのC# 〜 覚え書き 〜 
http://homepage3.nifty.com/midori_no_bike/CS/ 
どぼん!の .NET Tips 
http://dobon.net/vb/dotnet/ 
62デフォルトの名無しさん:2010/02/09(火) 12:58:25
質問する前に"必ず"WikiやFAQ集を参照し、同じような質問がないか確認してください。 

初歩的な質問はPC初心者板で・・・ 
http://pc11.2ch.net/pcqa/ 
参考リンク(よく出てくる情報リンク) 
Windows Vista Wiki 
http://windowsvista.ms/index.php 
Windows VistaFAQ 
http://vistafaq.stdo.net/index.html 
インストールから設定・活用まで〜 すべてが分かるWindows Vista大百科 
http://journal.mycom.co.jp/special/2007/windowsvista/menu.html 


※次スレを立てる場合はPart58になります。
63デフォルトの名無しさん:2010/02/09(火) 21:29:50
C#, C♯, C#相談室 Part55
http://pc12.2ch.net/test/read.cgi/tech/1260111240/1000

>ちゃんと計算してないけど、おそらくU+1088(4232)はUTF-8でE1 82 88
じゃあ最後のE1はなんだ?
その後に同じようなintを書き込んでその頭のE1か?

もしそうだったら
>javaの方では入出力は問題なく行えてます。
とか当たり前のことを抜かしてないでもっと自分でフォーマットを理解してから来いって話だな
64デフォルトの名無しさん:2010/02/09(火) 22:55:45
DataOutputStreamで00 00 10 88だった、big-endianか
65デフォルトの名無しさん:2010/02/09(火) 23:00:12
質問です。
IListを実装しない(LinkedList<T>とか)コレクションの変更通知って、
どうすればいいんでしょうか?
66デフォルトの名無しさん:2010/02/09(火) 23:14:10
?
ObservableCollection<>の話じゃなくて?
67デフォルトの名無しさん:2010/02/09(火) 23:29:05
IListにも変更通知用のイベントなんて無いな
68デフォルトの名無しさん:2010/02/09(火) 23:37:38
INotifyCollectionChangedで通知するにも、IListじゃないとそもそもインデックスがないよなー
と悩んでいたんですが、そのままObservableCollection<T>に渡せばよかったんですね。

というか色々と説明不足・下手ですみませんでした。
69デフォルトの名無しさん:2010/02/09(火) 23:44:11
>>63
http://www.unicode.org/cgi-bin/GetUnihanData.pl?codepoint=1088

UTF-8 では3バイト、って話だろ?
70デフォルトの名無しさん:2010/02/09(火) 23:49:42
>>69
Javaはこう出力しますって E1 82 88 E1 を持ってきたんだろ
それに質問者本人が int の下位だけなんですよね〜とか言ってるんだから

へ〜Javaってそんな独自の埋め込みするんだ〜 C#じゃあ知ったことじゃねーなってところだろw

UTF-8を知ってないと解読できないし、あえてそこまでこのスレの住人が対応することじゃないだろ
71デフォルトの名無しさん:2010/02/09(火) 23:53:37
E1ってその後にもついてたんか。よく見てなかった。すまん。
72デフォルトの名無しさん:2010/02/10(水) 01:13:06
Java屋からの乗り換えなんですが、
C#(.Net3.5)でO/Rマッパー使うとしたらなにがおすすめですか。

(1) 使わない
(2) LINQ
(3) S2Dao.Net
(4) NHibernate
(5) その他

JavaではHibernate使って、その後 S2 採用してました。
C#歴は既設アプリ改造を手伝ったぐらいであんまり本格的にはやってないです。
ラクちんかつ綺麗、COC(convention over config)が好みなんですが、
C#のお作法を無視して、無知ゆえのしっぺ返しをくらうなどないかなーなど
心配しており、みなさまのお知恵を拝借したいです。
73デフォルトの名無しさん:2010/02/10(水) 01:43:22
Linq to SQLとLinq to Entitiyは今のところSQL Serverしかまともに対応してない。
他のDBMSを使いたいなら3か4になる。
74デフォルトの名無しさん:2010/02/10(水) 01:55:45
やぶんサンクスです。
いちお SQL Server 採用予定なんだけど
> 73 サンなら何使う?
75デフォルトの名無しさん:2010/02/10(水) 02:30:40
SQL ServerならLINQ to SQLが一番楽
単純な構成ならテーブル/ビューをD&Dするだけでほぼそのまま使える
LINQ to Entitiesの方は自動生成の名前とデザイナの操作性に難あり
76デフォルトの名無しさん:2010/02/10(水) 02:36:51
>75
ありがとう!
77デフォルトの名無しさん:2010/02/10(水) 07:18:41
LINQ to SQLは将来性が怪しそうなので手をつけるのを躊躇してしまう
78デフォルトの名無しさん:2010/02/10(水) 08:31:14
ツールが違うだけでやることは似たようなもんじゃね?
79デフォルトの名無しさん:2010/02/10(水) 09:45:59
linqは流行らないだろうな
80デフォルトの名無しさん:2010/02/10(水) 09:51:29
Form.Opacity=0.5とかで透かしたた上で
文字などは透かしたくない場合はどうやればいいですか?
81デフォルトの名無しさん:2010/02/10(水) 09:53:13
できないはず
やるならBackColorにFromArgbとかで半透明を与えるか
背景画像を動的に作ってそいつに半透明を与えるかしないと
82デフォルトの名無しさん:2010/02/10(水) 10:08:59
ごめんフォームのバックカラーに半透明は無理だな
83デフォルトの名無しさん:2010/02/10(水) 10:41:30
どうも無理っぽいですね。

Formを2個表示して
formAをOpacityで半分透かして
formBのBackColor = White
formBのTransparencyKey = White
で2個のフォームを重ねて表示することで実現できそうです・・・・
無理やりですが。
他にいい方法があったら教えてください。

84デフォルトの名無しさん:2010/02/10(水) 10:42:41
formBに文字や図形など描画すると所望の動作をするようになりました。
85デフォルトの名無しさん:2010/02/10(水) 10:47:13
うーむ
透明色をグラデーションした画像を当てはめてみたが
どうも完全な透明とそれ以外としか扱ってくれないねえ

やり方はあるのかもしれないけど
86デフォルトの名無しさん:2010/02/10(水) 10:52:16
作った背景画像
http://uproda.2ch-library.com/212053qe9/lib212053.png

実行してみた状態
http://uproda.2ch-library.com/212054XTX/lib212054.png

周りに透明が多いのはTransparencyKey=BackColorで透明にしてあるので
8784 :2010/02/10(水) 11:17:22
こっちで書いたのがこんな感じです。
http://uproda.2ch-library.com/212061CPP/lib212061.jpg
88デフォルトの名無しさん:2010/02/10(水) 11:19:11
>>87
なるほど
師匠ですか・・・
じゃなくて

まあフォーム2枚を連動させたりとめんどくさいですけどとりあえずそれでw
89デフォルトの名無しさん:2010/02/10(水) 14:00:32
全部オーナードローするならレイヤードウィンドウって手も
90デフォルトの名無しさん:2010/02/10(水) 15:38:42
WPFだったら楽なのに
91デフォルトの名無しさん:2010/02/10(水) 16:23:19
ウィンドウそのものを透明にするのはWPFの範囲外だぞ
92デフォルトの名無しさん:2010/02/10(水) 20:03:38
>>80
過去に何度か出てると思うけど、一応正攻法のやり方はこうらしい。
http://yellow.ribbon.to/~azumaya/doc_dotnet_uplayeredwnd.php
93デフォルトの名無しさん:2010/02/10(水) 20:09:51
>>92
.net側が使わないだけなのか
最近のGPUだと2D部分も結局は3D部分でやってるとかあったので
できないはずは無いと思ってたんだが
94デフォルトの名無しさん:2010/02/10(水) 21:38:44
>>79
あのクエリ式はともかく、Enumerableクラスのメソッド群は有用だよ。
95デフォルトの名無しさん:2010/02/10(水) 23:32:56
>>94
流行らないっていってんだろw
俺に逆らうなw
96デフォルトの名無しさん:2010/02/10(水) 23:45:40
C#のSMTP認証メール送信機能を使う機能を作りたいんだけど
どうしてもSMTP認証が失敗するw

使ってるのはSystem.Net.Mail.SmtpClient

その他情報
失敗時のSmtpStatusCode:GeneralFailure
smtpサーバー:会社のsmtpサーバー
ポート:サブミッションポート(587)

techbank.jpにSmtpClientのサブミッションポートは
認証上手く行かない事がある、System.Web.Mail.SmtpMai
なら上手く行く、ってかいてあったのでこっちもテストプログラム
作ってみたら確かに認証通ってメール送信できた。。

何とかならないだろうか・・・
97デフォルトの名無しさん:2010/02/10(水) 23:47:44
>w

などと不真面目な奴には教えない
9896:2010/02/10(水) 23:52:15
>>97
それは大変失礼しました

結構真面目に悩んでいるので何かおわかりなら
教えて下さい
99デフォルトの名無しさん:2010/02/10(水) 23:58:57
>>97
どうせわかんねーんだろwwwwww
100デフォルトの名無しさん:2010/02/10(水) 23:59:26
>結構真面目に

ふざけるのもいい加減にしろ!
10196:2010/02/11(木) 00:02:45
>>100
ふざけてないですよ?
102デフォルトの名無しさん:2010/02/11(木) 00:07:53
ほっとけよ
103デフォルトの名無しさん:2010/02/11(木) 00:26:43
ほっとけーきよ
104デフォルトの名無しさん:2010/02/11(木) 00:31:02
hotkey
105デフォルトの名無しさん:2010/02/11(木) 00:33:00
ほーほけきょ
106デフォルトの名無しさん:2010/02/11(木) 01:51:06
知らぬなら
教えてあげよう
ホトトギス
107デフォルトの名無しさん:2010/02/11(木) 04:09:14
>96
うちは587でもSystem.Net.Mail.SmtpClientは正常に動作してる
書いてるコードも晒さないで何とかしてもらおうというのがまず無理だと思う
つぶやいてみたかっただけならtwitterへどうぞ
108デフォルトの名無しさん:2010/02/11(木) 10:08:39
>>107
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
109デフォルトの名無しさん:2010/02/11(木) 10:26:25
IsErrorがtrueのObsolete属性が付いたメンバを使おうとしたときに出るコンパイルエラーを回避する方法はありますか?
110デフォルトの名無しさん:2010/02/11(木) 11:11:34
111デフォルトの名無しさん:2010/02/11(木) 11:48:27
>>108
ふらっとに池ボケ
最新50くらい嫁
11296:2010/02/11(木) 11:51:58
>>107
すまん。晒すわ
本当サンプル程度で申し訳ないが

昨日もあれからやってみたが会社のメールサーバーは
認証不可。GeneralFailure。25番はポート自体閉じてるので
どうにもならない

自宅のBiglobeは587番ポートだとメールボックス使用不可
25だと正常にメール送信できる
11396:2010/02/11(木) 11:54:26
using System.Net;
using System.Net.Mail;
(略)
public void SendMail(string from, string to, string subject, string body)
{
MailMessage message = null;
SmtpClient client = null;

try
{
message = new MailMessage(from, to, subject, body);

client = new SmtpClient();
client.Host = "(smtpサーバーアドレス)";
client.Port = 587;

client.Credentials = new NetworkCredential("認証ユーザー名", "パスワード");

client.Send(message);
}
catch (SmtpException ex)
{
SmtpStatusCode code = ex.StatusCode;
}
finally
{
message.Dispose();
}
}
(略)
11496:2010/02/11(木) 11:57:36
EnableSslやTimeoutも明示してみたりしたが特に
効果はなかった。何かわかればお願いします
115デフォルトの名無しさん:2010/02/11(木) 11:57:59
.NETのやつと、うまく行くメーラーで、パケット取って見てみればいいじゃん。
116デフォルトの名無しさん:2010/02/11(木) 12:00:08
どこでエラー吐くのかわからんのだが
エラーなしで通信だけできないの?
117デフォルトの名無しさん:2010/02/11(木) 12:03:45
>>115,116
client.Send(message);
まで普通に動いてしばらくしたらcatchに流れてくる
しばらくって言っても10秒も経たないかな

パケットキャプチャか・・・。それはまだやってなかった
検討してみる。ありがとう
118デフォルトの名無しさん:2010/02/11(木) 12:22:38
SMTPサーバは生きてるけど
587ポートが通信拒否状態なだけだったらワロス
119デフォルトの名無しさん:2010/02/11(木) 12:37:39
>>118
会社もBiglobeもメーラーなら587番ポートでも
上手く行くんだが・・・

そもそもメールサーバー側の設定とかに詳しくないので
その辺も調査・勉強してみる。ありがとう
120デフォルトの名無しさん:2010/02/11(木) 12:57:57
>>108
レスはしてくれるけど答が返ってくる保証はないんだよなぁ
121デフォルトの名無しさん:2010/02/11(木) 13:02:24
>>119
GeneralFailure  トランザクションを発行できませんでした。指定した SMTP ホストが
           見つからない場合にこのエラーが発生します。

本当にGeneralFailureがきてるなら、認証以前の問題じゃないのか

>>120
そもそも>>1は無効
122デフォルトの名無しさん:2010/02/11(木) 13:11:41
>>121
そうなんだよね。認証不可ってのは例外Messageが
「認証に失敗しました」ってなっているだけの話

MSDNで仕様みるとご指摘通りで、確かにそれはあると
思ってる。ただ、メーラーで設定して成功しているサーバー名
とユーザー名、パスワードで間違いなく設定してるんだが・・・

比較用に自宅のBiglobeでやったら587だとメールボックス使用不可だし・・・
25ならOKだけど

設定周りの確認&パケットキャプチャから地道にやってみる
ありがとう
123デフォルトの名無しさん:2010/02/11(木) 13:14:18
25で通るなら25でいいような…587じゃないダメってのは仕様なの?
124デフォルトの名無しさん:2010/02/11(木) 13:19:19
>>123
25ならOKなのはBIGLOBEで会社は25でも駄目

特定顧客ならそれでも良いかもしれないけど、複数顧客向けの
システムで、機能が導入できるかどうかの技術調査中なんだ

実際自分の会社も25番ポート閉じてるし、そういう顧客が
いると想定される時点で「587番ポートについては環境次第で
メール送信出来ないかもしれません」って仕様では苦しい。。
125デフォルトの名無しさん:2010/02/11(木) 13:22:59
えーとさーばせっていをおこなわずにあぷりけーしょんのみでつうしんしたいのですか?
126デフォルトの名無しさん:2010/02/11(木) 13:31:02
そろそろうざーい。
127デフォルトの名無しさん:2010/02/11(木) 20:47:44
>>126
うざーい
128107:2010/02/11(木) 23:26:58
>122
うちの環境だけど、メールサーバーがLinuxでPostfix使ってる
んでクライアント側はWebサービス(asmx)使って投げてるから参考なるかわからんが

public bool sendMail(string fromAddress, string toAddress, string subject, string body)
{try{
MailMessage message = new MailMessage();
message.From = new MailAddress(fromAddress);
message.To.Add(new MailAddress(toAddress));
message.Subject = subject;
message.Body = body;
message.IsBodyHtml = false;
SmtpClient smtpClient = new SmtpClient();
smtpClient.EnableSsl = false;
smtpClient.Send(message);
return true;
}
catch (Exception ex)
{略}
}
NetworkCredential使わないでWeb.configに
<system.net><mailSettings><smtp>
<network host="SMTPサーバー" port="587" userName="認証ユーザー名" password="パスワード"/>
</smtp></mailSettings></system.net>
で送れてるよ
俺もサンプルというか基本的なことしかやってないのにエラそうなこと書いてスマン
129デフォルトの名無しさん:2010/02/11(木) 23:33:15
自分の環境でできない=不特定多数の環境では使い物にならない
でFA
130デフォルトの名無しさん:2010/02/12(金) 00:07:11
>>129
あ?
131デフォルトの名無しさん:2010/02/12(金) 04:19:17
とりあえず結論から言うと、使っているMTAがゴミである可能性が高い。

AUTH-LOGINには明確な規格がないが、デファクトスタンダードではクライアントが送るデータは2パターン。
もし、SmtpClientが送っている方のパターンにMTAが対応していなければ、エラーとなるのは必至。
132デフォルトの名無しさん:2010/02/12(金) 04:51:11
エラーとなるのは必至ですね。
133デフォルトの名無しさん:2010/02/13(土) 20:51:35
加算代入されたdelegateをまとめて実行した時、それぞれの戻り値を得る方法はどうすればいいの?
134デフォルトの名無しさん:2010/02/13(土) 20:56:46
Delegate.GetInvocationListでバラバラにしてから呼び出す
マルチキャストは基本的にイベント専用の機能なので戻り値が必要なら普通にコレクションに入れた方がいい
135デフォルトの名無しさん:2010/02/13(土) 21:02:36
[画面のプロパティ] → [詳細]タブ → [ディスプレイ]を選ぶ →
[Windows デスクトップをこのモニタ上で移動できるようにする]
のチェックボックスを切り替える相当のことって可能でしょうか?
136デフォルトの名無しさん:2010/02/13(土) 22:36:44
うん!
137デフォルトの名無しさん:2010/02/13(土) 23:31:05
138デフォルトの名無しさん:2010/02/14(日) 04:39:46
ちょっとマルチスレッド化の速度について質問なんだけれど…

今ThreadPoolと、複数スレッドにQueueで仕事を分配する処理を競争させてるんだけど
(ようするに自前ThreadPool。ただ、まだ複数スレッドを作ってそれぞれが共通のQueueからデリゲートを取ってくるだけの簡単なもの)
どうやっても.Net製のThreadPoolに勝てないんだが理由が分からない。とりあえず試したQueueの種類としては

クリティカルセクションを使った割と定番のブロックするキュー
ロックフリーキュー
スレッド専用キュー

一応条件次第では勝てるんだけど、その条件がキューにデリゲート10000個とか極端な場合なんでなんとも
(キューとのやり取りは自前のほうが早い?)

キューのロック以外で思いつくのは、ThreadがSystemアセンブリ内なんで、
アセンブリ超えるオーバーヘッド?ぐらい ThreadPoolは確かSystemアセンブリだったと思うんで
超えなくてすむから?とか不確定なもの

環境はOS WindowsVista CPU Intel Core2Quead 2.40GHz 2.39GHz
テストの仕方はMath.Sqrt()を一定回数ループするデリゲートを一定個

思いっきり車輪の再発明で愚の骨頂だと思うんだが、ちょっと気になったので
一応、キューにデリゲートが少ない場合は全部のやりかたでマルチスレッド化したほうが早くはなってる
自前 1.7倍程度 専用キューと.NetのThreadPoolが2.7倍程度
専用キューと.NetのThreadPoolが互角なのが解せぬ
139138:2010/02/14(日) 04:42:41
Core2Queadってなんだ Quad ですorz
140デフォルトの名無しさん:2010/02/14(日) 05:04:45
sscli読んでみたら?
ちょっと見てみたけどThradPoolはネイティブメソッドのラッパーだね
141デフォルトの名無しさん:2010/02/14(日) 05:07:41
.netはソース見てみるのが一番いい
誰でもダウンロードできるんだし
142デフォルトの名無しさん:2010/02/14(日) 05:17:38
>>141
PCが無くても?へえ
143デフォルトの名無しさん:2010/02/14(日) 05:20:20
うん
144デフォルトの名無しさん:2010/02/14(日) 05:53:13
>>141
どこで落とせる?
145デフォルトの名無しさん:2010/02/14(日) 06:13:43
転載だけど


ふらっとC#,C♯,C#(初心者用) Part54
http://pc12.2ch.net/test/read.cgi/tech/1264236247/708

これこれ
http://www.atmarkit.co.jp/fdotnet/insiderseye/20080222sourcecode/sourcecode.html

>Visual Studio 2008(Express Editionは除く)でデバッガを使用する際に、クラス・ライブラリの
>メソッド内部までソースコード・レベルでのトレース(ステップ・イン実行)が可能になるというものだ。
デバックの際にトレースができないだけでExpress Editionでもソースは入手可能なのかね?

このやり方で落ちてくるんだが
http://blogs.yahoo.co.jp/kotomi_eternal/56577556.html

NetMassDownloader -d C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 -o [ローカルの保存先ドライブ]
146デフォルトの名無しさん:2010/02/14(日) 06:15:14
すいません。とりあえずのテストなんでスレッド終了を待機する時whileループで待機していたんですが、
これメインスレッドさぼってると気づいてメインスレッドにも仕事させたらThreadPoolに追いつきましたorz
あと、計測結果を見やすくしたら2.7倍どころではなく3.7倍程度でしたorz

自前の実装も3.7倍程度と大体期待通りになりました。
やはり駄目なのは自分だった…

>>139
>>140
はい。とりあえずネイティブメソッドを呼んでいるところまでは追いかけたんですが、
もうちょっと見てみます。ありがとうございます。
147138 146:2010/02/14(日) 06:17:54
更新してなかった

>>145
はい。ソースコードは既に手元にあります。
ですが、ありがとうございます。
148デフォルトの名無しさん:2010/02/14(日) 10:09:26
ttp://www.vector.co.jp/soft/winnt/util/se479992.html
このツールマルチコア対応って書いてあるんだけどこういうのってどういうこと?
マルチスレッド化してるってこと?
一応リバースエンジニアリングは特に禁止されてなかったので
Reflectorで見てみたけどわけが分からなかったorz
一応BackgroundWorkerは使ってるっぽいんだけど
149デフォルトの名無しさん:2010/02/14(日) 12:46:29
単に一つのハッシュ計算に一つのスレッドを使ってるだけ。
その手のソフトなら10分もあれば誰でも作れるよ。
150デフォルトの名無しさん:2010/02/14(日) 13:50:00
アプリケーション終了時に
とある実例(インスタンス)の破棄処理(Dispose)を走らせたいんだけど
Mainのあるところでusingステートメント使えばいいの?
151デフォルトの名無しさん:2010/02/14(日) 13:58:58
ファイナライザ書いとけば?
ファイナライザが呼ばれずに終了してしまうような状況では
usingによるDisposeもfinallyも呼ばれる保証はない
CriticalFinalizerObject使えばより確実
152デフォルトの名無しさん:2010/02/14(日) 14:00:31
そんなものがあったのか。
C++にあったデストラクタがなくてクソいと思ってたけどMSDN見たらなんだか格好いいな。
http://msdn.microsoft.com/ja-jp/library/cc404909(VS.71).aspx

ゴッドファーザーみたいな名称だ。
153デフォルトの名無しさん:2010/02/14(日) 14:06:27
自分のクラスで直接抱えてるアンマネージリソースを開放したりするのはいいが
ファイナライザの中で他のオブジェクトのDisposeを呼んだらダメだぞ
あとファイナライザを書くと確実にGCのパフォーマンスが落ちるのでどうしても必要な場合だけ
154デフォルトの名無しさん:2010/02/14(日) 14:19:41
というかよく見たらApplication.Exit()しても終了してないみたいだ。
なんだこれ。
155デフォルトの名無しさん:2010/02/14(日) 14:24:54
調べたら別スレッドがあるとApplication.Exit()でも終了しないみたいだけど
グローバルフックもこれに含まれるの?
156デフォルトの名無しさん:2010/02/14(日) 14:27:45
自己解決しました。
157デフォルトの名無しさん:2010/02/14(日) 14:28:18
Application.ExitはApplication.Runを抜けるだけ
158デフォルトの名無しさん:2010/02/14(日) 17:24:50
SystemExplorer見ると初回起動後以外はExitしてもプロセスが死なないんだけどどうして?
159デフォルトの名無しさん:2010/02/14(日) 17:35:41
動かしたまま放置するようなスレッドは
.IsBackground = true
160デフォルトの名無しさん:2010/02/14(日) 17:54:35
FormClosingでe.Cancel = trueしてただけでした^^;
お騒がせして申し訳ありませんでした^^;;
161デフォルトの名無しさん:2010/02/14(日) 18:38:21
しねよ(´・ω・`)
162デフォルトの名無しさん:2010/02/14(日) 19:57:12
>>149
少し考えてみただけでいくつも疑念がわいてくるから、
ホントかよって思ってざっと見てみたが、だいぶ違うじゃねーかよ。
そりゃ大枠でマルチスレッド化してるってのは違いないが。

自信満々書いてるからなんか知ってんのか調べたのかと思ったが、
てきとーに言ってみただけかよ。

まあでも逆アセのコードは読むにはしんどいから、
誰でも10分でできるってんなら見本を書いて見せてほしいけどな。
ファイル読んで計算するとこだけでいいから。
163デフォルトの名無しさん:2010/02/14(日) 20:13:19
一般的なマルチスレッド対応についての話なんだから、適当に一般論を答える
のが筋だろフツー。何を期待して熱くなってるんだか。
調べてみたら特殊な事してるって分かったなら、はよ報告しろや。
164デフォルトの名無しさん:2010/02/14(日) 20:14:53
つーか、2ちゃんに何を期待してんだよ、って話。
165デフォルトの名無しさん:2010/02/14(日) 20:17:13
166デフォルトの名無しさん:2010/02/14(日) 20:20:38
自己解決しました。
167デフォルトの名無しさん:2010/02/14(日) 20:24:05
>>166
よかったね
168デフォルトの名無しさん:2010/02/14(日) 20:35:42
>>148
>>149
>>162
>>163
くすくす

169デフォルトの名無しさん:2010/02/14(日) 20:37:25
170デフォルトの名無しさん:2010/02/14(日) 20:42:39
171デフォルトの名無しさん:2010/02/15(月) 00:12:38
>>162
リフレクションしてみたら>>149の言うとおりでした
ほんとうにありがとうございました

作者乙
172デフォルトの名無しさん:2010/02/15(月) 00:15:59
> リフレクションする
ってなんだよ
鏡でも見てんのか
173デフォルトの名無しさん:2010/02/15(月) 00:18:03
>>172
鏡ぐらいみようよ…
174デフォルトの名無しさん:2010/02/15(月) 00:26:22
どっちやねん
175デフォルトの名無しさん:2010/02/15(月) 00:29:55
え?
176デフォルトの名無しさん:2010/02/15(月) 00:32:40
気にすんな
ただの誤爆だ
177デフォルトの名無しさん:2010/02/15(月) 01:11:50
>>171
違うじゃん、ほんとに見たのかよ
178デフォルトの名無しさん:2010/02/15(月) 01:22:58
真面目に聞くけど
>単に一つのハッシュ計算に一つのスレッドを使ってるだけ。
の場合、ファイルの読み込み部分はどうなるんだ?
179デフォルトの名無しさん:2010/02/15(月) 01:38:50
※複数ファイルを同時に計算することはできません。あくまで1つのファイルを対象に計算するためのツールです。

なんだから、読み込み部分はひとつだろ。
180デフォルトの名無しさん:2010/02/15(月) 01:54:21
いや、そのひとつの読み込みとハッシュ毎の計算スレッドの連携って言うか。
181デフォルトの名無しさん:2010/02/15(月) 02:08:34
>>178
readに特化したコストの低いロック手法があってだな・・・
その後にスレッド毎にメモリにロードしてだな・・・
そういうこった
182デフォルトの名無しさん:2010/02/15(月) 05:25:37
そうだろうねぇ
183デフォルトの名無しさん:2010/02/15(月) 06:06:20
質問ですが
C#でDMM.COMで使われているようなexeの中に画像を埋め込んだアプリケーション
作れるんでしょうか?試しにVS2008で画像をビルドをリソースに埋め込んだものをEXEで
書き出してリフレクターで見てみたら画像丸見えでした。
難読化ツール Spices.NET 5Jみたいなものを使って画像見られなくするのは可能でしょうか?認証とかphpとかにIDとPASSを投げて承認させることはできますが他に何が必要なんでしょうか?
http://www.newtone.co.jp/productsn500.html
184デフォルトの名無しさん:2010/02/15(月) 06:32:32
>>183
方法はいろいろあるけど完璧はないよ
それにソースの難読化は関係ないんじゃないかな?

画像を暗号化などする場合はその戻しロジックを難読化させるくらいか・・・
185デフォルトの名無しさん:2010/02/15(月) 06:40:51
暗号化速度を気にするなら簡単な方法としては

画像ファイルの先頭何バイトかを特定のアルゴリズムで書き換える。その後exeに内蔵
表示の際はexe内部のデータの書き換えた部分を復元して表示

とかかな

ファイルを一定バイト単位をブロックとして並び替えするとかでもいいかも
186デフォルトの名無しさん:2010/02/15(月) 07:13:04
単純に最初16バイトぐらいをビット反転させるだけでも…
187デフォルトの名無しさん:2010/02/15(月) 07:38:27
定番のxorでいいよ
188デフォルトの名無しさん:2010/02/15(月) 07:55:28
>>181
何それ?
189デフォルトの名無しさん:2010/02/15(月) 08:02:55
Read-Write Lock?
190デフォルトの名無しさん:2010/02/15(月) 09:54:36
>>184-186

なるほど参考になります。
ありがとうございます
191デフォルトの名無しさん:2010/02/15(月) 11:36:52
XmlDocumentで名前空間のprefixを指定せずにXPATHを使いたいのですが、
そのためにXmlDocumentからxmlnsを削除しようかと考えています。

設定できるプロパティがないようなので、一度文字列に変換して
xmlns属性を消してXmlDocumentに読み直すという方法を
とるつもりなのですがこれはまずいでしょうか?

192デフォルトの名無しさん:2010/02/15(月) 11:43:43
removechildとかなかったっけ?
193デフォルトの名無しさん:2010/02/15(月) 11:44:50
removeattributeとかなかったっけ?
194デフォルトの名無しさん:2010/02/15(月) 11:47:27
名前空間を無視すること自体が間違ってるので
それでもやるんだったらその手段の良い悪いなんか意味がないだろ
195デフォルトの名無しさん:2010/02/15(月) 12:00:33
>>193
xmlnsはXmlNode.Attributesに含まれてないっぽくて。

>>194
HTML(SgmlReaderでXML変換)とXHTMLのXPATHを共通化したいのです。
XmlNamespaceManager使って何とかできるのかしらん。
196デフォルトの名無しさん:2010/02/15(月) 19:41:34
気ままにリフレクションって歌が昔あったような....
確か焼きそばUFOのCMソングだったような
197デフォルトの名無しさん:2010/02/15(月) 20:07:39
おいジジイ
くたばれよクソ面白くねえんだよ
198デフォルトの名無しさん:2010/02/15(月) 20:20:57
>>189
それはないわさすがに。
いまだに>>181の意味は不明だけど。
199デフォルトの名無しさん:2010/02/15(月) 20:23:22
わからないなら教えて下さいだろ?
あっ?
200デフォルトの名無しさん:2010/02/15(月) 20:24:28
分からないので教えてください。
201デフォルトの名無しさん:2010/02/15(月) 21:08:45
んあっ・・・
202デフォルトの名無しさん:2010/02/15(月) 22:31:04
んっ・・・
203デフォルトの名無しさん:2010/02/15(月) 22:50:32
そう、そこをもっと、、うん、、、いい感じっ///
204デフォルトの名無しさん:2010/02/15(月) 22:55:32
つまんねーよおっさん
205デフォルトの名無しさん:2010/02/15(月) 22:58:03
ヘ:::::::::;;: -‐''''""( )1
 ゙、::::::::-‐''""" ̄"'i
  :V;;||:::: '~ニ=ッ, r='|  ショカツリョウ
  i!f !:::::      ゙、i  諸葛亮曰く
  i!ゝ!::::     ‐/リ
  i::/:、 :::、  /''ii'V  「他にすることは無いのですか?」
  ̄ハ:::::\ "''il|バ'
206デフォルトの名無しさん:2010/02/16(火) 20:59:28
なぜおっさんと分かった
207デフォルトの名無しさん:2010/02/16(火) 22:06:01
なんか>>149みたいに単純にスレッド分けてやろうとしたが、なんか結構難しいぞorz
まだバグ持ちの状態で無理やり動かしたが、パフォーマンスは微妙。
コア数以下のハッシュ同時計算なら同等になるが、
コア数以上で計算負荷に偏りがあると負ける。
進捗表示も何もしてないのに…
やる気がなくなってきた。

スレッドプール使ったら多分もっと簡単にできそうだが。
208デフォルトの名無しさん:2010/02/16(火) 22:09:42
>コア数以上で計算負荷に偏りがあると負ける。
間違えた、コア数を超える同時計算ね。
209デフォルトの名無しさん:2010/02/16(火) 22:15:57
ProducerConsumerパターン使って論理コアと同等数のスレッド数で回すだけじゃん
何が難しいのかさっぱりわからん
210デフォルトの名無しさん:2010/02/16(火) 22:17:02
じゃあやってみてくれよ。
211デフォルトの名無しさん:2010/02/16(火) 22:19:47
いやまあそりゃ、俺が未熟なだけだけどね。
でも単純にProducerConsumerとはちょっと違うような気がするけど。
212デフォルトの名無しさん:2010/02/16(火) 22:23:50
何でProducerConsumer使うかわからないんだな
話にならん
一からやりなおせ
213デフォルトの名無しさん:2010/02/16(火) 22:26:32
だって普通のProducerConsumerと違うじゃん。
一つのデータを全スレッドがそれぞれで処理するんだから。
214デフォルトの名無しさん:2010/02/16(火) 22:28:28
論理コアと同等数のスレッドってのがみえんのかいな
パフォーマンス云々いうわりには論点がわかってないんじゃな
出直せ
215デフォルトの名無しさん:2010/02/16(火) 22:33:53
それじゃ>>149と違うじゃん。
元々そこに突っ込みたくてそれぞれスレッドにしてやったんだけど。
まあいいけどね。

それで論理コアと同等数のスレッドでやる場合はどうなるわけ?
どういう風にそれぞれのハッシュ計算に処理を割り当てるの?
例えばスレッド数2で計算するハッシュが3個の場合、
2スレッドをどういう風に3つの計算に割り当てるの?

まあ割り当ては分かるにしてもそれを実装するの結構面倒なんだが、
何が難しいかわからんくらい簡単なの?
いや簡単かもしれんがそれなら見せてくれ・
216デフォルトの名無しさん:2010/02/16(火) 22:37:09
計算するハッシュ数は未定
論理コアが48コアある環境もある
だから>>149と違う事にはならんね
定義が曖昧だからな

割り当てに使うパターンがProducerConsumerパターンだろうが
その辺にごまんと散らばってるパターンを難しいとか、マジで勘弁してくれよ
217デフォルトの名無しさん:2010/02/16(火) 22:37:55
僕はすぐにわかったよ。
うん、この場合はProducerConsumerパターンだよ!
218デフォルトの名無しさん:2010/02/16(火) 22:38:39
まあ、スレッドプール使うと簡単になるけどね。
219デフォルトの名無しさん:2010/02/16(火) 22:41:19
パターンが難しいんじゃなくて、今回のケースで実装が面倒って言ってるの。

>だから>>149と違う事にはならんね
コア数なんて計算数より少ない場合も想定するのが当たり前なのに
>>149って書いてんだから、普通に読み取ったら意味が違うように見えるわ。
220デフォルトの名無しさん:2010/02/16(火) 22:46:09
10分でできるんだから誰か見本を見せろよ
221デフォルトの名無しさん:2010/02/16(火) 22:49:17
ProducerConsumerは@ITにサンプルソースがあっただろw
あれコピペしてハッシュ計算する部位だけちょちょいと書けばいいだけじゃんw
こんなの出来ないとかdaseiw
222デフォルトの名無しさん:2010/02/16(火) 22:57:26
某テトリス動画と同じように何度も反復して10分なんだよ!
223デフォルトの名無しさん:2010/02/16(火) 22:58:38
そのタイプの実装だと余計複雑になるぞ。
224デフォルトの名無しさん:2010/02/16(火) 23:02:19
これぐらいの実装ならまゆちゃんでも10分で出来るんだよ?
225デフォルトの名無しさん:2010/02/16(火) 23:04:21
>>224
けつあたまは黙って苛められてろ
226デフォルトの名無しさん:2010/02/16(火) 23:12:00
>>223
へー
227デフォルトの名無しさん:2010/02/16(火) 23:26:46
Producer-Consumerパターンで何が問題なのかが知りたい
まさか、productを何にすべきか分からないとか?
228デフォルトの名無しさん:2010/02/16(火) 23:35:43
ttp://msdn.microsoft.com/ja-jp/library/system.security.cryptography.rsacryptoserviceprovider.encrypt.aspx
OAEP パディング (PKCS#1 v2)
Microsoft Windows XP 以降。
剰余サイズ -2 -2*hLen (hLen はハッシュのサイズ)。
これっていくつになるんでしょうか?
乗除がどれの事なのか全く分からず・・・orz
229デフォルトの名無しさん:2010/02/17(水) 00:27:10
おかしいと思って、英語の方を見たらmodulusになってるw
つまり、正しくは剰余ではなく法だな

あとは、RSAのアルゴリズムを考えれば分かると思うが、
アルファベットが剰余類に限定されるのでそのサイズに収まる必要があると
で、規格については詳しくないが単純な推測として、
おそらく(データ,ハッシュ)をシンボルとしているからハッシュの分を引けと
230デフォルトの名無しさん:2010/02/17(水) 00:37:08
(´・ω・`)…
231デフォルトの名無しさん:2010/02/17(水) 00:56:26
>>227
だれも問題とは言ってない件

>>221
みたいな実装をもとにしたら余計ごちゃごちゃになるだろって話

処理方法の大枠で見たらそりゃ誰が作ってもProducerConsumer的な流れにはなる

だからいい加減作って見せてやればみんな納得するだろ
232デフォルトの名無しさん:2010/02/17(水) 00:57:40
>>229
OAEPパッティングが無い場合は最大長117ってわかったんですが
未だにOAEP有りの場合の>>228の長さが分かりません
一応1024bit長なんですがどう計算すればいいんでしょうか?
233デフォルトの名無しさん:2010/02/17(水) 01:11:47
あとパフォーマンスを最大限発揮させるのにどうするのがいいか少し悩む。
234デフォルトの名無しさん:2010/02/17(水) 01:33:28
普通のProducerConsumerパターンでどうやるのか書いてみなって。
一度に処理するデータブロックごとのシーケンスをどう制御するのかとか興味深い。
もっともそういう制御が入る時点でもう単純なProducerConsumerパターンとは
ちょっと様子が変わってくるけどね。
235デフォルトの名無しさん:2010/02/17(水) 01:36:51
236デフォルトの名無しさん:2010/02/17(水) 01:39:51
そこには何もヒントがない件
237デフォルトの名無しさん:2010/02/17(水) 01:48:52
238デフォルトの名無しさん:2010/02/17(水) 01:52:15
ハッシュはSHA1って決まってるの?
239デフォルトの名無しさん:2010/02/17(水) 01:55:27
C#でFPSゲームが作りたいんですがどうすればいいですか?
240デフォルトの名無しさん:2010/02/17(水) 02:02:39
ゲ製作板へGo
241デフォルトの名無しさん:2010/02/17(水) 02:15:45
242デフォルトの名無しさん:2010/02/17(水) 07:17:29
(´・ω・`)…
243デフォルトの名無しさん:2010/02/17(水) 21:16:43
結局何なんだよ、>>148
>>149みたいに単純にスレッド化されてんのか
>>209みたいにProducerConsumerパターンを使ってんのか
それともそういうのとはまた違うやり方をしてんのか

なんだよ誰も分からないのかよさすが口だけ2ちゃんねらどもだ
244デフォルトの名無しさん:2010/02/17(水) 22:34:45
見たところ特に目新しい手法は使われていないみたいだよ
245デフォルトの名無しさん:2010/02/17(水) 22:55:50
かなりくだらない質問だと思いますが、、、

C# .NET の Form アプリケーションで、ウィンドウの外周を線がぐるぐる回るというのがやりたくて
タイマで一定周期で Invalidate して OnPaint ハンドラでウィンドウに DrawLine しています
線は問題なく表示されますが、タイマの周期や一回の移動距離を調整してもどうしてもちらいてしまって
滑らかな動きになりません
ちらつかずに描画する何か特別な方法があるんでしょうか?
246デフォルトの名無しさん:2010/02/17(水) 23:01:43
247245:2010/02/17(水) 23:16:12
>>246
ちらつきが特盛りになりました(´・ω・`)
ちらついているというより、表示されたすぐ後に消されているような感じです
248デフォルトの名無しさん:2010/02/17(水) 23:20:19
OSはXP?
ゲームと違ってちゃんとしたvsyncの同期はやってないだろうから
ティアリング回避は無理なんじゃないかな?
249デフォルトの名無しさん:2010/02/17(水) 23:23:29
250245:2010/02/17(水) 23:33:39
>>248
無理ぽですか・・・

>>249
線は出ますが、消している部分が消えないので一周したら全部塗られてしまいます
ウィンドウの真ん中へんも表示されないです やり方がまずいんでしょうが

ひょっとして、ちらつくのは描画する線の全体を消したり塗ったりしているだからで
移動する部分だけ背景色や線の色で書けばよいのでは?
ちょっと試してみます
251デフォルトの名無しさん:2010/02/17(水) 23:42:04
>>247
表示したあとすぐ消すようなコード書いてるんでしょw
252デフォルトの名無しさん:2010/02/17(水) 23:47:57
>>251
windowsの場合その辺の制御が面倒なんだよな
ゲームのようにフレームの開始がはっきりしてて描画終わったらvsync待ちしてバッファ切替とか
そういうのじゃないしねえ
253デフォルトの名無しさん:2010/02/17(水) 23:48:56
this.SetStyle(ControlStyles.DoubleBuffer, true);
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);

こいつ入れてn秒ごとにRefleshすれば?
254デフォルトの名無しさん:2010/02/17(水) 23:51:53
前のを消して新しいのを描く→時間待ち→前のを消して新しいのを描く→時間待ち→
ってやってる?
まあどっちにしてもちらつくんだけど
255デフォルトの名無しさん:2010/02/17(水) 23:52:13
>>250
というか、線は自分で消すの
背景を描画しなければ普通にClearするだけでも変わるはず
256デフォルトの名無しさん:2010/02/17(水) 23:52:57
だからちらつきはwindowsのシステム上の問題なんで無理
vistaはOSそのものがゲームまがいなことやってるのでちらつかないかも
257245:2010/02/18(木) 00:14:33
試しに、線を描くのみにして跡を消す処理を中止したら
さほどちらつかずに動くようになりました
Invalidate で再描画する処理が走って、さらにプログラムで消す処理が動くから
ちらついてたんですかね
期待してたヌルヌルとは違いますが、とりあえずこれでよしとします
258デフォルトの名無しさん:2010/02/18(木) 00:29:54
俺ならGIFはっつけるな・・・
その上にパネルでも置いて周りだけ見えるようにする

という意味のないくだレス
259デフォルトの名無しさん:2010/02/18(木) 00:36:00
>>257
ソースうpすれば何かヒント出せるかもしれんぞ
260245:2010/02/18(木) 01:25:32
>>259
かなり恥ずかしいですが、、、
どれをうpすればいいのかよくわからなかったので
ボタン(button1)を一つだけ置いた状態の Form のソースです
ttp://77c.org/d.php?f=nk12757.zip
261デフォルトの名無しさん:2010/02/18(木) 01:35:00
>>248
>>256
問題にしてるちらつきのレベルが全然違う話をしても意味ないよ。
大体今時液晶ディスプレイばかりなんだからティアリングの様子も変わってるし。
262デフォルトの名無しさん:2010/02/18(木) 01:37:18
>>261
基本的な仕組みはかわってないよ
液晶だってPC側から貰った映像を元にピクセルを操作してるんだし
263デフォルトの名無しさん:2010/02/18(木) 01:38:45
CRTの走査と液晶の表示じゃ元は同じでも表示のしくみが全然違うから。
264デフォルトの名無しさん:2010/02/18(木) 02:35:19
脊髄で話を飛躍させるなw
問題はプログラムミスによるチカチカだろ
265チカ:2010/02/18(木) 02:54:37
気軽に私の名前を呼ばないでくれる?
266デフォルトの名無しさん:2010/02/18(木) 03:20:35
>>245

とりあえずやっつけで
元のまんま適当にいじった

ttp://77c.org/d.php?f=nk12758.zip

これでとりあえずどうだろ?
267デフォルトの名無しさん:2010/02/18(木) 05:33:02
>>260>>245
こんな感じのでもいけるはず (デザイナでDoubleBuffered=trueに)

ttp://77c.org/d.php?f=nk12759.zip

ついでにロジック部分もいじってみた
・計算と描画を分離して、計算はタイマーで実行
・計算部分を整理

>>266
> int res = BitBlt(dc, 0, 0, Convert.ToInt32(width), Convert.ToInt32(height), dc, 0, 0, SRCCOPY);
これって何か特別な意味あるの?
268デフォルトの名無しさん:2010/02/18(木) 06:37:51
validateの範囲を最小限にするとか
269245:2010/02/18(木) 07:18:39
>>266-267
おお!ありがとうございます!!
まったくちらつきませんね ヌルヌルです
これで心置きなくぐるぐるできます
270デフォルトの名無しさん:2010/02/18(木) 09:04:42
液晶がどうの言っていたバカはどこ行った
271デフォルトの名無しさん:2010/02/18(木) 09:09:58
ん、誰か呼んだ?
272デフォルトの名無しさん:2010/02/18(木) 10:03:50
この場合、バカなのはvsyncがどうのって言ってたほうだろw
273デフォルトの名無しさん:2010/02/18(木) 10:21:52
こういう視覚効果はWPFが強いな。
ttp://www7a.biglobe.ne.jp/~fbsoft/test/miku2.xaml
ttp://www7a.biglobe.ne.jp/~fbsoft/test/miku1.xaml
ttp://www7a.biglobe.ne.jp/~fbsoft/test/BinaryStar.html

画材や画像はニコ方面からの拾い物なので早めに消す。
274デフォルトの名無しさん:2010/02/18(木) 10:26:02
ぶらくら?
問題が生じたので WPFを終了しますとか何とかいっておわった
俺死ぬの?
275デフォルトの名無しさん:2010/02/18(木) 10:31:08
死ぬだろうな。
276デフォルトの名無しさん:2010/02/18(木) 10:33:27
>>274
上2つはルーズXAMLで.NET3.0以上が必要、
3つめはSilverlight3が必要かもしれない。
いずれもスクリプトだけでアセンブリさえ使ってない。
277デフォルトの名無しさん:2010/02/18(木) 10:37:31
Google Chrome でもSilverlight動くんだな。知らんかった。
278デフォルトの名無しさん:2010/02/18(木) 11:03:31
>>267
帰り値を受け取ってるところ?
それともBitBlt使ってるところ?
279デフォルトの名無しさん:2010/02/18(木) 17:20:34
例えば、System.Xml.XmlReaderクラスはabstractで定義されてるのに
XmlReader.Create()メソッドでXmlReaderクラスのインスタンスが作られるってのは
いったいどういうことなのでしょうか?
280デフォルトの名無しさん:2010/02/18(木) 17:27:58
抽象のCreateってC++見たいだな
281デフォルトの名無しさん:2010/02/18(木) 17:38:14
実際には中でXmlReaderの派生クラスのインスタンスを作って返してる
staticメソッドを使ったファクトリメソッドパターンってやつ
282デフォルトの名無しさん:2010/02/18(木) 17:44:45
>>281
やはり内部で派生クラス作ってるんですか
コンストラクタから作るのじゃなければ、言語規約としては矛盾しないのかな…

デザインパターンの知識ってこういうとこでも役に立つんですね、勉強してみます
283デフォルトの名無しさん:2010/02/18(木) 17:47:29
>>282
c#は本筋で関係してそうなクラス(Objectなど)以外にxxBaseとか元になってる似たような
名前のもあるしReaderが作ってことは内部でxxReaderを使ってるってことだしねえ
284デフォルトの名無しさん:2010/02/18(木) 17:48:18
>Readerが作って
Readerが名前に使われてるって
285デフォルトの名無しさん:2010/02/18(木) 18:18:51
C#というよりVisualStudioの話になるんですが、
同一ソリューションの中の
複数プロジェクト(アプリケーション)の
同時デバッグってどうやるんですか?
286デフォルトの名無しさん:2010/02/18(木) 18:22:19
開発環境のデバッグ機能って使ったこと無い
287デフォルトの名無しさん:2010/02/18(木) 18:23:55
System.Diagnostics.Debugger.Break()とか
288デフォルトの名無しさん:2010/02/18(木) 18:25:13
msgboxとprintfしか使ったこと無い
289デフォルトの名無しさん:2010/02/18(木) 18:28:25
ご冗談を
290デフォルトの名無しさん:2010/02/18(木) 18:29:06
>>286
どうやってデバッグやられているんですか?
291デフォルトの名無しさん:2010/02/18(木) 18:30:59
ソースをプリントして脳内で追う
292デフォルトの名無しさん:2010/02/18(木) 18:54:26
dynamic myClass = IronPythonなどでクラスを表すオブジェクト;
dynamic myClassObj = new myClass(); //エラー
C#ではdynamicにnew使えないのはなんで?
dynamicの仕組み上は可能なはずだけどどういう意図で制限してるんだろ
293デフォルトの名無しさん:2010/02/18(木) 18:54:56
ソリューションのプロパティでマルチスタートアップ
294デフォルトの名無しさん:2010/02/18(木) 19:01:54
>>292
DLRのdynamicがC#のクラス用でないというだけ。
295292:2010/02/18(木) 19:19:56
>>294
たとえばSilverlight4ではこんなことができる
HtmlPage.Window.Eval("function f() { alert('エラー'); }");
dynamic func = HtmlPage.Window.GetProperty("f");
func();
もちろんHtmlPage.Window.GetProperty("f")の戻り値はデリゲートじゃなくて変なラッパーだけどちゃんと動く
よく考えたら、C#ではnewの右は型名と決まってるから>>292をやろうとしたら文法に手を入れないといけなくなるね
296デフォルトの名無しさん:2010/02/18(木) 19:23:40
>>295
分かってるなら聞くなよ。
わざわざ書き込みに来て何がしたいんだ?
297デフォルトの名無しさん:2010/02/18(木) 19:48:29
>>293
おー、素晴らしい。
ありがとうございます。
298デフォルトの名無しさん:2010/02/18(木) 21:36:07
.NETで作ったソフトって配布するとVisual Studioを登録した名前がバレちゃう?
299デフォルトの名無しさん:2010/02/18(木) 21:44:51
>>298
pdbファイルののフルパスが入ってることがあるから気になるならオプションで外しておけばいい。
300デフォルトの名無しさん:2010/02/18(木) 21:52:05
アセンブリ情報の中に著作権者は含まれるが、デフォルトで設定されるのは会社の方だけだったかな
301デフォルトの名無しさん:2010/02/18(木) 22:14:23
>>292
これはだめ?
dynamic myClassObj = Activator.CreateInstance(((object)myClass).GetType());
302デフォルトの名無しさん:2010/02/18(木) 22:15:55
DllImportで引数がC/C++でLPCSTR/LPCWSTRの型の関数を使う時にC#側ではstringとして宣言してるんだけど
C/C++ではNULLを渡す場面が発生するみたいで、C#も同様にnullを引数に入れるとコンパイル時にエラる。
どうやって同様の値を表せばいいの?
303デフォルトの名無しさん:2010/02/18(木) 22:17:57
>>301
それだとDLRの仕組みが考慮されない
>>302
IntPtr.Zero
304デフォルトの名無しさん:2010/02/18(木) 22:20:55
(string)IntPtr.Zeroが変換エラー
305デフォルトの名無しさん:2010/02/18(木) 22:27:33
string として宣言せずに、IntPtr として宣言しとけばいいだけ。
306デフォルトの名無しさん:2010/02/18(木) 22:28:13
どうもありがとう!
307デフォルトの名無しさん:2010/02/19(金) 06:36:13
いえいえ。次回のお礼時は贈り物をよろしくね。
308デフォルトの名無しさん:2010/02/19(金) 10:55:03
えっ
昨日も贈り物送ったんだけど届いてない?
309デフォルトの名無しさん:2010/02/19(金) 11:48:27
独自パケットを使った通信で
パケットの中身をXMLにして
XmlSerializer使ってらくに通信したいんですけど
参考サイトとかないですか
310デフォルトの名無しさん:2010/02/19(金) 11:50:45
>>309
わけた方がいいんじゃねーの?

通信で送受信する内容はメモリにおいて置けるし
XmlSerializerの方はMemoryStreamで読み書きできるはずだし
311デフォルトの名無しさん:2010/02/19(金) 12:04:07
・・・

参考サイトとかないですか!
312デフォルトの名無しさん:2010/02/19(金) 12:07:22
そもそも独自パケットなんてできるのか?
313デフォルトの名無しさん:2010/02/19(金) 12:41:33
独自パケットといってもTCP/UDPの上に載せる部分を独自にしたいだけです。

var ns = new NetworkStream(new TcpListener(11111).AcceptSocket());
var obj = new XmlSerializer(typeof(Packet)).Deserialize(ns);

こんな感じでやってみると、Socketが閉じるまでシリアライズし続けるみたいなので。
こういうことをやる楽な方法はないかなと思いまして。
314デフォルトの名無しさん:2010/02/19(金) 12:43:24
>>310
見落としてました。
やっぱりいったんメモリに溜めてからですかね。
うーん。
315デフォルトの名無しさん:2010/02/19(金) 13:07:07
Girl nagisa = new Girl("凪沙", 13, 148.0F, 43.0F, Attribute.Twintail | Attribute.Magical);
while(true) nagisa.Insert(new Stick(Material.Hard));
316デフォルトの名無しさん:2010/02/19(金) 13:08:53
↑は面白いと思ってやってるらしい
317デフォルトの名無しさん:2010/02/19(金) 14:27:07
素直にWCF使えばいいのに
318デフォルトの名無しさん:2010/02/19(金) 15:09:18
何でわざわざ自作すんのかねぇ
319デフォルトの名無しさん:2010/02/19(金) 15:50:23
WCF試してみます。
320デフォルトの名無しさん:2010/02/19(金) 16:33:55
お礼くらい言え
321デフォルトの名無しさん:2010/02/19(金) 16:49:36
お礼は三行以上でお願いします
322デフォルトの名無しさん:2010/02/19(金) 16:59:52



とうございません
323デフォルトの名無しさん:2010/02/19(金) 17:29:22
WCFってさぁ
324デフォルトの名無しさん:2010/02/19(金) 17:50:38
WCF地味に凄いんだよな。
地味なんだけど。
325デフォルトの名無しさん:2010/02/19(金) 19:26:32
WCF自演乙
326デフォルトの名無しさん:2010/02/19(金) 21:40:36
人工知能かよ
WCFすげえなおい
327デフォルトの名無しさん:2010/02/19(金) 21:43:33
expressだと使えない・・・。
328デフォルトの名無しさん:2010/02/19(金) 22:00:10
VWD2008Expressなら使える
329デフォルトの名無しさん:2010/02/19(金) 22:03:35
Express使うならVC#よりもVWDの方がいいよ
VC#からテンプレート抜き出せばVC#のスーパーセットになる
330デフォルトの名無しさん:2010/02/19(金) 22:42:29
VWDええの?
ASP.NETやる時だけ使ってて、C#はVC#EX使ってたよ。
331デフォルトの名無しさん:2010/02/19(金) 23:28:43
プロジェクトとアイテムのテンプレートをVC#から持ってくれば
VWDでWinFormsもWPFもコンソールも使えるようになるよ
332デフォルトの名無しさん:2010/02/20(土) 01:07:31
Windows Formに数個のRadioButtonと1個のButtonを並べておいて、
適当なタイミング(例えばButtonのクリックイベント)でButtonのEnabledをfalseにすると、
(たぶんTabOrderが一番若い)RadioButtonのClickイベントがクリックしてもいないのに
発火するようなんだけど、これバグでなければどう理解したらいいんだろう?
333デフォルトの名無しさん:2010/02/20(土) 01:18:26
Enableとかしなくても貼り付けてフォーム表示するだけで普通に発生するね
ラジオチェックしてボタンをEnable=falseにしたらチェックの入ってるラジオのクリックイベントが発生したわ

クリックなんか使わないから初めて知った・・・



334デフォルトの名無しさん:2010/02/20(土) 01:24:56
ラジオボタンにフォーカスが移る=クリック扱いのようだな
カーソルキーでぐりぐりとフォーカス移動させるとクリックイベント発生しまくる
335デフォルトの名無しさん:2010/02/20(土) 01:51:25
>>334
なるほど。
でもTabキーでフォーカス移動したときには発生しないようだし、
なんだか妙な仕様に感じるなあ。

しかし、AutoCheckをtrueにできない用途(通信がらみとか)だと、Clickイベントを
使わざるを得ないわけでこういう仕様は困るなあ。

MouseClickを使えってことなのか。
でもそれだとSpaceキーとか拾えないしなうーん。
336デフォルトの名無しさん:2010/02/20(土) 07:59:45
ボタンにフォーカスがあるのにEnterキーでクリックにならない。
で、カーソルキーを← →と押して、フォーカスを一端外してまた戻してやると
なぜかこんどはEnterが使えるようになる。
.Netのコントロールはなんかおかしい。
そんなんプログラマが意識しなくてもデフォルトでそうなってくれてるもんだよな。
337デフォルトの名無しさん:2010/02/20(土) 08:24:29
確かにEnterキーでクリックイベントは起きないな
> で、カーソルキーを← →と押して、フォーカスを一端外してまた戻してやると
> なぜかこんどはEnterが使えるようになる。
でもこれは再現しない
Enterじゃなくてスペースキーなら使えるよ

結局、フォーカスが移るのは関係なくて、ラジオボタンの○が◎になったときに
クリックイベントが発生してるみたいだから、別に問題ないじゃん
タブで移動やEnterで○のままならクリックしてないのと同じだし
カーソル移動やスペースで◎になるならクリックしたのと同じだし
338デフォルトの名無しさん:2010/02/20(土) 11:08:51
え?
339デフォルトの名無しさん:2010/02/20(土) 11:25:12
>329,331
http://bluewatersoft.cocolog-nifty.com/blog/2009/05/visual-web-deve.html
プロジェクトに関してはこういう記載ありましたが、
テンプレートの抜き出しとは何をすれば良いのでしょう
340デフォルトの名無しさん:2010/02/20(土) 12:42:54
何をすれば良いのでしょう
341デフォルトの名無しさん:2010/02/20(土) 14:26:48
comboBox1.Items.Add("hoge");
comboBox1.Text = "HOGE";

とすると Text の値が "hoge" の方になってしまうのですが、
大文字・小文字を区別して"hoge"が選択されないようにするには
どうしたらいいでしょうか?
342デフォルトの名無しさん:2010/02/20(土) 14:39:31
>>339
Program Files\Microsoft Visual Studio 9.0\Common7\IDE\VCSExpress\ItemTemplates\1041フォルダを
ドキュメントフォルダのVisual Studio 2008\ItemTemplates\Visual Web Developperにコピー
同様にItemTemplatesのところをProjectTemplatesに読み替えてコピー
WPFアプリケーションのプロジェクトはちょっとだけvstemplateファイルを弄らないといけなかったような気もする
343デフォルトの名無しさん:2010/02/20(土) 14:41:37
内部で LB_FINDSTRING してるところを無視する。
344デフォルトの名無しさん:2010/02/20(土) 15:21:34
無視するんですね
345デフォルトの名無しさん:2010/02/21(日) 15:22:29
C++/CLIでC/C++の標準ライブラリをラップに包んでC#で利用しようとしているのですが
C#で利用できる名前空間をC++/CLIで定義するにはどうすればいいか教えてくだされ。
346デフォルトの名無しさん:2010/02/21(日) 15:24:56
C++のスレの範囲じゃないの
347デフォルトの名無しさん:2010/02/21(日) 15:27:39
そもそもC#からC++製のマネージドなアセンブリ使う場合/clr:pureでコンパイルしないと使えないんじゃないか?
348デフォルトの名無しさん:2010/02/21(日) 15:29:15
>>345
普通にC++の名前空間にする
>>347
そんなことはない
349デフォルトの名無しさん:2010/02/21(日) 15:30:45
>>348
どうもありがとう!!できました!!!!

>>346
C#から参照してるからC#関係あるだろうが適当な事いうな分からないなら黙ってろクズ

>>347
知ったかぶりはやめましょうね^^
350デフォルトの名無しさん:2010/02/21(日) 15:32:51
TcpClient使ってアクセスしてるならWebAPIの使い方聞いていいって事になるな。
こいつはこじつけが楽でいい。
351デフォルトの名無しさん:2010/02/21(日) 15:33:25
そうだね^^
352345:2010/02/21(日) 15:35:13
>>349
成りすましはやめてください。
353デフォルトの名無しさん:2010/02/21(日) 15:35:48
C#使って351を殺す方法を教えてくださいもOKだね
354デフォルトの名無しさん:2010/02/21(日) 15:37:38
多分同一人物だろうけど、勝手に「自己解決しました。」って発言するやつとか>>349みたいなのがいるからこの板もIDつきにして欲しいな。
355デフォルトの名無しさん:2010/02/21(日) 15:41:17
何度も却下されてるから考えるだけ無駄
356デフォルトの名無しさん:2010/02/21(日) 15:42:33
「なりすましされたくなければ鳥付けて質問しろ」
と次から書いとけ。
357デフォルトの名無しさん:2010/02/21(日) 15:44:13
ム板の花だから
358デフォルトの名無しさん:2010/02/21(日) 15:56:06
>>353
回答したら、幇助になる可能性はあるけどな。
359デフォルトの名無しさん:2010/02/21(日) 16:01:31
動的に生成したPanelにラベルやらピクチャーボックスやらを載せているんですが、
panel.MouseClick += panelClick;
とした場合には、パネル上の他のコンポーネント(ラベルやらピクチャーボックス)
がクリックされた場合は反応しませんよね。
上に載っているラベルとかも含めてパネルがクリックされたら反応させるってことできませんか?
360デフォルトの名無しさん:2010/02/21(日) 16:02:40
そっちのイベントをPanelのイベントに関連づければいい。
361デフォルトの名無しさん:2010/02/21(日) 16:03:08
鳥つけるのもいいけど、ここをよく利用する人にとっても面倒だしなあ
ましてや2ch利用者の多くはテンプレ読まないの多いのにそんなルール
作っても・・・とか思うわ

IDつけてくれとかどこかに要望だしてやってくれるのかな?
362デフォルトの名無しさん:2010/02/21(日) 16:04:12
>>359
panelってむき出しになってる部分あるの?
363デフォルトの名無しさん:2010/02/21(日) 16:05:12
>>360
関連付けってなんです?
panel.MouseClick += panelClick;
label.MouseClick += panelClick;
pictureBox.panelClick += panelClick;
みたいなことをしろってことですか?
364デフォルトの名無しさん:2010/02/21(日) 16:06:58
>>363
うん。
365デフォルトの名無しさん:2010/02/21(日) 16:07:04
>>362
あります
パネルの部分をクリックすると反応します

>>363
panel.MouseClick += panelClick;
label.MouseClick += panelClick;
pictureBox.MouseClick += panelClick;
でした
366デフォルトの名無しさん:2010/02/21(日) 16:09:08
>>364
わかりました、そうします
ありがとうございました
367デフォルトの名無しさん:2010/02/21(日) 16:09:34
>>365
デザイナーが用意するイベント処理関数はいかにも・・という名前付くけど
実際のところは共通の処理にしても問題ないよ
ただそうなると実際どのコントロールでイベントが発生したかわからなくなるので
コントロールのNameで工夫するかTagがあいてるので識別に使うとかすれば
いけるでないの?
368デフォルトの名無しさん:2010/02/21(日) 16:27:32
>>367
こういうときはその方法(NameかTagで区別する)が定石なんですか?

private void panelClick(object sender, MouseEventArgs e)
という関数で
sender instanceof Panel
ってやれるといいんですがinstanceofないんですね
sender.GetType().ToString() == "System.Windows.Forms.Panel"だといけそうですが
ちょっと冗長ですよね
369デフォルトの名無しさん:2010/02/21(日) 16:31:07
as
370デフォルトの名無しさん:2010/02/21(日) 16:36:47
>>368
上にでてる
>panel.MouseClick += panelClick;
>label.MouseClick += panelClick;
>pictureBox.MouseClick += panelClick;
こういう共通関数で処理する場合
object senderで送られてくるのはpanelだけじゃなくなってるので
どこかで識別しないとたぶんキャストでこけるよ

panel.MouseClick += panelClick;
panel.Tag = 1;

label.MouseClick += panelClick;
label.Tag = 2;

pictureBox.MouseClick += panelClick;
pictureBox.Tag = 3;

といった感じで識別コードでも用意して

int ControlCode = (int)sender.Tag;
371デフォルトの名無しさん:2010/02/21(日) 16:41:36
>>370
一部訂正

private void panelClick(object sender, MouseEventArgs e)
{
    int ControlCode = (int)sender.Tag;
//どのコントロールから来たか判断

    //instanceofの代わりにキャストすればいい
    Panel panel = (Panel)sender;
}
それかイベントハンドラの入り口だけはきっちりわけちゃって

そこから共通の処理関数を呼び出すとか
private void panelClick(object sender, MouseEventArgs e)
{
  Panel panel = (Panel)sender;
  commonfunc(panel.hoge1,panel.hoge2);
}
//labelやpictureBoxも同じようにする
372デフォルトの名無しさん:2010/02/21(日) 16:44:57
>>370-371
Tag使ったほうが比較も早そうですね
ありがとうございます
373デフォルトの名無しさん:2010/02/21(日) 16:47:46
>>372
Tagはobjectなんでなんでもぶら下がるからいいよ〜
374デフォルトの名無しさん:2010/02/21(日) 16:48:09
TagなんてVB6かよ・・・
375デフォルトの名無しさん:2010/02/21(日) 16:52:28
>>374
グローバルでフラグ持ったりするよりはいいんでないの?
他にコントロール間の関連付けとかいい方法あったっけ?
376デフォルトの名無しさん:2010/02/21(日) 17:12:32
そもそも、まとめてやりたいはずだったのに、わざわざ区別するのもわからん。
それなら、別のイベントプロシージャでやればいいんじゃね?

で、わざわざTagなんぞ使わなくても、is なり == なりで判定すればいいだけ。
377デフォルトの名無しさん:2010/02/21(日) 17:12:40
>>374
C#って過去の言語の寄せ集めみたいな設計だから
Java臭がしてVB6.0臭がするC/C++ぽい言語ってところだよ
378デフォルトの名無しさん:2010/02/21(日) 17:45:34
それ言い始めたら代入文(=)って全てFORTRAN臭がするってことになるしな。
「・・・かよ」は罵倒にすらならないね。
379デフォルトの名無しさん:2010/02/21(日) 17:48:02
キチガイが来ました−。
380デフォルトの名無しさん:2010/02/21(日) 18:51:25
お前のDNAから猿臭がする
381デフォルトの名無しさん:2010/02/21(日) 19:44:39
MemoryStream ms = new MemoryStream();
XmlTextWriter xtw = new XmlTextWriter(ms, Encoding.UTF8);

xtw.WriteStartDocument();
xtw.Formatting = System.Xml.Formatting.Indented;
xtw.WriteStartElement("HAGE");
xtw.WriteElementString("HOGE","HOGE");
xtw.WriteEndElement();
xtw.WriteEndDocument();

で、msにXMLを書き込めると思ったら書き込めないんです
何か間違ってるんでしょうか・・・。
382デフォルトの名無しさん:2010/02/21(日) 19:48:17
XmlWriterをClose/Flushしてない
383デフォルトの名無しさん:2010/02/21(日) 19:54:27
Tagは便利だけど、これはどうなんだ?って思いながら使ってる。
もっとスマートな方法ないのかね。
384デフォルトの名無しさん:2010/02/21(日) 20:01:22
Dictionaryなり使って外から管理する手もある
385デフォルトの名無しさん:2010/02/21(日) 20:03:16
>>383
ないんじゃね?
2ch専ブラのスレ覧のタブ部分とListViewの連動とか
スレッドのタブ部分とブラウザー部分の連動はTag使った方が
スマートにかけるし、動的生成でとちらない限りはバグを仕込まないしねえ
386デフォルトの名無しさん:2010/02/21(日) 20:04:22
>2ch専ブラのスレ覧のタブ部分とListViewの連動とか
>スレッドのタブ部分とブラウザー部分の連動はTag使った方が
>スマートにかけるし、動的生成でとちらない限りはバグを仕込まないしねえ
これは割りと見慣れてるGUIの実装の例ってことで・・
387デフォルトの名無しさん:2010/02/21(日) 20:19:07
専ブラの例なら、データ構造内に持つのが素直じゃね?
388デフォルトの名無しさん:2010/02/21(日) 20:28:26
>>387
内部構造は別途持つよ
最終的なそれぞれのリンクの話

目印つけたりして判断ロジック入れるのもいいけど
動的にオブジェクト作るときは関連については全部
わかってるんだから、イベント受けた側で条件式使
わないで何をすればいいかわかるようにすればいい


controls.Addでの関連(表示だけの関連)
上panel <-Button
下panel <-ListView

Button.Tag
└ListView.Tag
  └内部のデータ構造への関連

ListView
└ListViewItem.Tag
  └内部のデータ構造への関連

内部のデータ構造
・・・・

こうすればキャスト数回ですぐに処理可能になる
389デフォルトの名無しさん:2010/02/21(日) 20:49:05
ごめん。全然意味がわからん。
390デフォルトの名無しさん:2010/02/21(日) 20:51:44
俺は28%ぐらい理解した
391デフォルトの名無しさん:2010/02/21(日) 21:01:19
そもそも動的にパネルを生成するのはいいとして、その上のコントロールまで
動的に生成する、などという泥臭いやり方に問題があると思うんだけどね。

上にのっけるコントロールの種類や配置を状況によって変える必要がある、
とかでなければ、UerControlを使うべきじゃないのか。
392デフォルトの名無しさん:2010/02/21(日) 21:41:59
Tag使うくらいならIExtenderProvider
393デフォルトの名無しさん:2010/02/21(日) 22:14:10
>>392
やるじゃん
394デフォルトの名無しさん:2010/02/21(日) 23:13:44
TcpListenerが気がついたら破棄されてるんですが何ででしょう・・・orz
変数としてはずっと保持してるはずなんですが・・・意味がわからん
395デフォルトの名無しさん:2010/02/21(日) 23:20:23
変なことしてるからだろう
396デフォルトの名無しさん:2010/02/21(日) 23:21:59
設定画面用のフォームを作成してXMLファイルから設定を読み込み。
メニューから設定画面を呼び出すと1度目は表示されるのですが2度目からは破棄されたオブジェクトとなってしまいます。
FormをClose()しているのですがClose()すると破棄されてしまうんでしょうか?
397デフォルトの名無しさん:2010/02/21(日) 23:25:37
フォームが閉じると、オブジェクト内で作成されたすべてのリソースが閉じ、フォームが破棄されます。
398デフォルトの名無しさん:2010/02/21(日) 23:25:39
うん。
399デフォルトの名無しさん:2010/02/21(日) 23:36:28
ああ・・・そうだったんですね・・・orz

1から作り直してきます
400デフォルトの名無しさん:2010/02/22(月) 00:33:34
モードレスならHideでも行けるぜ
401デフォルトの名無しさん:2010/02/22(月) 00:40:15
C#って画像を任意の三角形で切り抜いて表示とかできる?
402デフォルトの名無しさん:2010/02/22(月) 00:44:31
できる
403デフォルトの名無しさん:2010/02/22(月) 00:45:17
unsafe使わないと遅い
404デフォルトの名無しさん:2010/02/22(月) 01:15:28
例えば単にClip領域を設定して描画するだけの話で、そう遅いとも思えんけどね。
405デフォルトの名無しさん:2010/02/22(月) 03:54:01
>>391
まあサンプルが2ch専ブラの話だしねえ
既存の2ch専ブラを模倣するとそういう実装になるってことじゃないの?
406デフォルトの名無しさん:2010/02/22(月) 08:44:15
//  Form: DoubleBuffered = true
 private void Form1_Resize(object sender, EventArgs e) { this.Invalidate(); }
 Image im = Properties.Resources.画像;
 FontFamily fontf = new FontFamily("Times New Roman");
 StringFormat stringf = new StringFormat();
 private void Form1_Paint(object sender, PaintEventArgs e) {
  Graphics g = e.Graphics;
  using (GraphicsPath path = new GraphicsPath())
  using (Brush ib = new TextureBrush(im)) {
   path.AddPolygon(new[] { new Point(200, 50), new Point(50, 250), new Point(250, 250) });
   path.AddString("Drawing", fontf, (int)FontStyle.Bold, 72, new Point(0, 0), stringf);
   float sc = this.ClientSize.Width / 300.0f;
   path.Transform(new Matrix(sc, 0, 0, sc, 0, 0));
   g.SmoothingMode = SmoothingMode.AntiAlias;
   g.Clear(Color.Black);
   g.FillPath(ib, path);
 }}
407デフォルトの名無しさん:2010/02/22(月) 09:05:55
>>406
そのコードは何をしたいんだ
408デフォルトの名無しさん:2010/02/22(月) 09:11:51
>>401への回答だろ。流れ的に
409デフォルトの名無しさん:2010/02/22(月) 10:31:07
>>406
アンカーくらいつけろよ、くちべた君(笑)
410デフォルトの名無しさん:2010/02/22(月) 11:58:37
必死に考えて、ケチつける所が「アンカー付いてない」だけなんてwww
411デフォルトの名無しさん:2010/02/22(月) 12:11:54
しかも「くちべた君」w
412デフォルトの名無しさん:2010/02/22(月) 12:16:59
C##
413デフォルトの名無しさん:2010/02/22(月) 12:27:08
>>401-408で何事か起きたわけでもないのに>>409でなぜ罵倒に至ったのか…
414デフォルトの名無しさん:2010/02/22(月) 13:19:07
>>406
やってみたらできました
ありがとうございます
415デフォルトの名無しさん:2010/02/22(月) 16:01:42
C#初心者です。
以下のようにタイマー割り込みが来るたびに
newでインスタンスを上書きするような記述はおかしいでしょうか?
なんかどんどん処理が重くなってる気がするんですが・・・
原因がここじゃないかと思って質問しました。
よろしくお願いします。

class hoge1
{
public hoge1(int i)
{
//コンストラクタ
}
}

class hoge2
{
timer割り込み()
{
myHoge1 = new hoge1(i);
i++;
}

hoge1 myHoge1;
int i=0;
}
416デフォルトの名無しさん:2010/02/22(月) 16:04:24
>>415
そのnewをやめて軽くなるならそれが原因じゃね?
417デフォルトの名無しさん:2010/02/22(月) 16:15:00
DisposeやFinalizeがあるクラスでなければ、
ほとんど問題にならないと思うよ。
418デフォルトの名無しさん:2010/02/22(月) 16:17:40
何がどれぐらい重くなるのかも調べずに「気がする」って言われてもなぁ
419デフォルトの名無しさん:2010/02/22(月) 16:17:49
ほとんど問題にならないと思うよね。
420デフォルトの名無しさん:2010/02/22(月) 17:01:54
問題は毎回 new する必要が本当にあるのかどうか
421デフォルトの名無しさん:2010/02/22(月) 18:02:57
普通に考えると、この程度で体感できるほど重くなる筈がない。
勘違いか見当違いの所探してるだけだろ。
422デフォルトの名無しさん:2010/02/22(月) 18:33:36
へえ
423デフォルトの名無しさん:2010/02/22(月) 18:35:44
別の場所かコード端折ったとこに原因があるか
424デフォルトの名無しさん:2010/02/22(月) 19:11:50
newしてるクラスがかなり小さく、かつ内部でアンマネージ捕まえてたりすると重くなるかも
425デフォルトの名無しさん:2010/02/22(月) 20:41:19
たしかに
426デフォルトの名無しさん:2010/02/22(月) 22:41:00
適当に重くなったときにCGに強制回収させてみて、それっから処理が軽くなったら・・・とかで調べてみるとか
427デフォルトの名無しさん:2010/02/23(火) 05:18:54
>>408
>>406だけ見ると>>401が試行錯誤してコード書いたけどうまくいかなくて質問
来た様にも見えるしなあ

結論とすれば>>409のいうことだよ
428デフォルトの名無しさん:2010/02/23(火) 07:22:45
くちべた君(笑) これははやるかもしれん
429デフォルトの名無しさん:2010/02/24(水) 19:21:55
某フォーラムで提供されているライブラリー(http://mmf.codeplex.com/releases/view/40043)を使って、
メモリーマップドファイル版のListのジェネリッククラスを作った。
http://www6.atpages.jp/~autonomydoll/object/files/VaribleList.zip
15MBのテキストファイルで実験したら、31MBぐらいディスクスペースを消費して、プロセスのワーキングセットが80MBを超えた。
おまけに、読み終わるまで3分近くかかって、使い物にならない。
構築がこれよりも早いデーター構造はない?
430デフォルトの名無しさん:2010/02/24(水) 19:28:28
CLRでファイルマッピングがサポートされるのはV4からだっけ?
どういう構造のライブラリーか知らないが、普通にP/InvokeでファイルマップのAPIを使うと、
ネイティブのViewからマネージドメモリへマーシャリングが起きると思うんだけど。
431デフォルトの名無しさん:2010/02/24(水) 19:44:04
SQL Server Compact Editionでも使えばと言いたくなるのだけれど
432デフォルトの名無しさん:2010/02/24(水) 23:32:17
自宅でgoogleで「C#」で検索してもCしかかからないんだけど
会社で検索するとちゃんと出る…
なんか設定とかあるのかねこれ
433デフォルトの名無しさん:2010/02/24(水) 23:43:30
アドレスバーにq=C%23って出てるか?
434デフォルトの名無しさん:2010/02/25(木) 00:37:45
他のキーワードとあわせてC#検索したらその後からC#単独で検索しても
引っかかるようになった。
どんなロジックなんだgoogle…

>>433
出てるよー
435デフォルトの名無しさん:2010/02/25(木) 01:50:33
FILE_ATTRIBUTE_TEMPORARY指定の一時ファイルを使って、
擬似MemoryStreamを作ったことならある。
436デフォルトの名無しさん:2010/02/25(木) 01:55:40
>>429
よく見てないがそれ以前にシリアライザなんか使ったら遅いに決まってる。
437デフォルトの名無しさん:2010/02/25(木) 12:50:48
>>434
普通に前回までの検索結果が反映されてただけじゃないの?
438デフォルトの名無しさん:2010/02/26(金) 22:31:57
>>430
P/Invokeってそんなにコストがかかるの?
ライブラリーのソースを調べたら、思いっきり使いまくってるんだが・・・
439デフォルトの名無しさん:2010/02/26(金) 22:41:59
P/Invokeのセキュリティチェックと、場合によってマーシャリングはそれなりにコストはかかるが、
メモリマップした後の単なるポインタアクセスじゃそんなの関係ないからそう影響はない。
もちろん、例えばタイトなループ内でP/Invokeを繰り返したら影響はでかい。
それとは別に、カーネルモードへの移行が必要となるようなAPIでは、
P/Invokeとは関係なくかなり負荷が高い。
カーネルオブジェクトの操作する場合など。
440デフォルトの名無しさん:2010/02/26(金) 22:44:20
セキュリティチェックを省いたり、bittableなやり取りだけになるように工夫すれば、大した負荷はない。
441デフォルトの名無しさん:2010/02/26(金) 22:44:23
メモリーマップドファイルて普通の業務アプリ使ってて何に使うのかぱっとおもいつかん・・
DBとかだと有効かもしれんが普通DB使うだろうし・・・
ん〜・・・
だれかおいしい使い道教えてくれ
442デフォルトの名無しさん:2010/02/26(金) 23:16:01
>>441
エディターの類。
巨大なファイルもファイルマッピングで編集すると、効率がいいらしい。
443デフォルトの名無しさん:2010/02/26(金) 23:34:08
巨大なファイル使う時ぐらいでしょ。
業務アプリでは考える必要ないと思う。
444デフォルトの名無しさん:2010/02/26(金) 23:34:25
プロセス間である程度大きいデータを共有したいときとか。
で、かつ、ファイルやDBとか使えないときに使ったことがある。
445デフォルトの名無しさん:2010/02/26(金) 23:48:51
どなたかDelphi使いでC#に乗り換えた方いますか?

DelphiでのTGraphicControlみたいに簡単にグラフィック系のコンポーネントを作るには
C#だとなんてクラスを使うんですかね?

C#でメータとかグラフとかのコンポーネントを作りたいんだけど・・・

446デフォルトの名無しさん:2010/02/26(金) 23:50:51
WPFつかえばらくちんぽんで出来るYO!
447デフォルトの名無しさん:2010/02/26(金) 23:53:45
Controlから直接派生してOnPaintをオーバーライド
まあWPF使えばコード一行も書かずに何でも描けるけどね
448デフォルトの名無しさん:2010/02/27(土) 00:01:16
あら、即効で・・・

WPFですか。
ちょっと勉強してきます。

ありがとうございます。
449デフォルトの名無しさん:2010/02/27(土) 00:23:36
>>442-444
サンクス
なるほど・・・勉強になった
450デフォルトの名無しさん:2010/02/27(土) 01:13:25
SqlCommandにパラメータ付のSQL文を設定した場合、プロファイラでトレースすると
exec sp_executesql N'SELECT * FROM TAB WHERE COL = @VAL',N'@VAL char(1)',@VAL='a'
上記のような文字列(上記は例)が取得できます。
この文字列をプログラム上からログに落としたいと思っています。
どうにかして文字列を取得することはできないでしょうか?
SqlCommandのパブリックなメンバでは取得できないので
リフレクションとか使えば取得できるかと思ったのですが、
この文字列を保持しているプライベートなプロパティが見つかりませんでした。
451デフォルトの名無しさん:2010/02/27(土) 02:14:01
むしろSQLクライアントでログ取ればいんじゃね?
少なくともOracleのにはあったハズ
452デフォルトの名無しさん:2010/02/27(土) 08:56:17
パケットキャプチャすればいいよ
453デフォルトの名無しさん:2010/02/27(土) 11:43:51
俺はparametersを自力で展開してたけど、いいやり方あるのかな
Nullの扱いと’のエスケープをちゃんとすればログのSQLをコピペして使えたけどどうなんだろう
454デフォルトの名無しさん:2010/02/27(土) 13:29:17
オレもいい案があれば知りたい
455デフォルトの名無しさん:2010/02/27(土) 18:57:02

bool createPanel(){
  ...
  bodyLabel.Text = "テスト";
  bodyLabel.Width = this.Width - 20;
  bodyLabel.BorderStyle = BorderStyle.FixedSingle;
  ...
  panel.Controls.Add(bodyLabel);
  return panel;
}

こういう関数を繰り返し呼び出して、
出来たパネルを、別のメインとなるパネルに縦に並べていっているんですが、

メインパネルのサイズ以上に並べたあたりから(メインパネルはAutoScrollをtrueにしてあります)
bodyLabelの見た目の長さが違ってくるんですが、なぜでしょう?

見た目としては↓みたいな感じです。

[テスト ]
[テスト ]
[テスト  ]
[テスト  ]
[テスト  ]

デバッガで止めてみると、bodyLabel.Widthの値自体は同じものでした。
456デフォルトの名無しさん:2010/02/27(土) 19:41:08
きちんと切り抜きして出直し。
boolのControlsプロパティにAdd?
問題はpanelの方だろさ。
457デフォルトの名無しさん:2010/02/27(土) 19:51:39
>>456
すいません

bool createPanel(){
  Panel panel = new Panel();
  Label bodyLabel = new Label();
  ...
  bodyLabel.Text = "テスト";
  bodyLabel.Width = this.Width - 20;
  bodyLabel.BorderStyle = BorderStyle.FixedSingle;
  ...
  panel.Controls.Add(bodyLabel);
  return panel;
}
パネルとパネル上のラベルは関数内で生成してます。
458デフォルトの名無しさん:2010/02/27(土) 19:56:42
>>457
ふざけてるのかw
459デフォルトの名無しさん:2010/02/27(土) 20:02:22
>>458
え、なんでしょう?まじめなつもりです
460デフォルトの名無しさん:2010/02/27(土) 20:13:40
これ、コンパイル通るのか?
461デフォルトの名無しさん:2010/02/27(土) 20:18:14
どうやったらコンパイル通るんだろう
using bool = System.Windows.Forms.Panel;は通らないね
Panelは質問者自身が作ったクラスで、boolへの暗黙の型変換演算子をオーバーロードしてるのか
462デフォルトの名無しさん:2010/02/27(土) 20:33:18
あああすみません、今気付きました;
関数の戻り値のほうですか
もちろんboolではなくてPanelです
463デフォルトの名無しさん:2010/02/27(土) 23:29:59
うん、で、panelのプロパティ設定には問題ないのか?という話。
464デフォルトの名無しさん:2010/02/28(日) 00:03:14
というかまあ、問題が再現可能なコードを書いてそのままコピペしてない時点で、
言っちゃ悪いけどもう「問題」は質問者自身の問題解決能力にあることがはっきりしてる。

こういう人ってどういう思考回路してるんだろう。
マジで理解不能。
465デフォルトの名無しさん:2010/02/28(日) 01:14:54
多分だけど、まるごとコピペすることが手抜きに思えたりするんじゃない?
だから手動でわかりやすく抜粋しているつもりなんだよ。
はた迷惑だけどね。
466デフォルトの名無しさん:2010/02/28(日) 10:59:02
抜粋じゃなくて隠蔽だけどな
467デフォルトの名無しさん:2010/02/28(日) 13:21:57
.NET 2.0のlistviewで質問です。
View=Details、オーナードロー、仮想モード、MultiSelect=true、HideSelection=falseにしています。
カラムをクリックしたらソートするようにしてるんですが、選択行が変化しません。
たとえば3行目が選択されていたとして、ソートの結果3行目のデータが2行目に移動しても
相変わらず3行目のみ選択された状態になります。
このあたりの処理も何となく自分でやらなきゃとは思うんですが、どうしたらいいでしょうか?
468デフォルトの名無しさん:2010/02/28(日) 14:49:58
オーナードローなんだから自分で描画が必要でしょう。
OnDrawColumnHeader、OnDrawItem、OnDrawSubItemのイベントを自分で記述する。
469467:2010/02/28(日) 15:10:36
>>468
それらのハンドルは記述していて、ソートを行わなければ正常に表示されます。
問題は、ソート後に描画しようとしているデータがソート前に選択されていたかどうかを
どうやって知るか、ということだと思うんですが。
470デフォルトの名無しさん:2010/02/28(日) 15:11:11
オナニードロー
471デフォルトの名無しさん:2010/02/28(日) 15:33:11
>>467
それはオーナードロー関係ないんじゃねーの?
ソートをかけるタイミングで行の位置じゃなく選択行のデータを覚えてて
ソート後にそのデータに対して選択をセットする・・・とかだろ
472デフォルトの名無しさん:2010/02/28(日) 15:34:53
VirtualModeの場合、
まず、各アイテムの選択状態も自分で保持しておく必要がある。
で、ソートが終わった後でそれに従ってSelectedIndicesをクリアして追加したりする。
473デフォルトの名無しさん:2010/02/28(日) 15:59:24
SubItemごとに固有のtag値を持って描画時に判断すればいいんじゃないのか?
474デフォルトの名無しさん:2010/02/28(日) 16:12:32
ソート前のSelectedItemsから項目コピーしといて、
ソート後にSelectedIndices.Clearして、Itemsの各itemを
コピーしといた項目にあるかどうかContainsしてSelectedIndices.Add
じゃないかなー?試してないけど。
475467:2010/02/28(日) 17:09:14
>>471-474
ありがとうございます。
なるほど SelectedIndicesがポイントですね。
ちょっと試してみます。
476デフォルトの名無しさん:2010/03/01(月) 00:07:41
Assertに引っかかるとダイアログが出る。
だが、そのダイアログが大きすぎで画面からはみ出てしまう。
このままじゃあ、ボタンすら満足に押せないんだが、どうにかする方法はない?
477デフォルトの名無しさん:2010/03/01(月) 00:19:11
ARIのどれかキーボードで押せばいいんじゃね
478デフォルトの名無しさん:2010/03/01(月) 00:56:19
出力するメッセージを減らす
479デフォルトの名無しさん:2010/03/01(月) 01:51:37
なんでAssertでそんな膨大なメッセージが要るんだ…
480デフォルトの名無しさん:2010/03/01(月) 04:17:51
>>479
普通にAssertさせたら、ものすごい行数のスタックログが表示されて…以下略
481デフォルトの名無しさん:2010/03/01(月) 07:35:13
ダイアログにフォーカス映してCtrl+C
482デフォルトの名無しさん:2010/03/02(火) 21:29:24
mouse enterで設定したテキストを表示させたいんだけど、その表示のさせ方が、htmlでいうaltタグとか画像のtitleタグ
みたいに説明を出したい。
483デフォルトの名無しさん:2010/03/02(火) 21:30:41
ああ途中送信してしまったわかりにくい説明で申し訳ない
484デフォルトの名無しさん:2010/03/02(火) 21:33:38
ToolTip
485デフォルトの名無しさん:2010/03/02(火) 21:49:29
ありがとう

486デフォルトの名無しさん:2010/03/02(火) 22:52:20
WCFのシリアライズ便利だな
XmlSerializerよりもずっと使いやすい
487デフォルトの名無しさん:2010/03/02(火) 23:15:13
>>486
プロレス団体みたいな名前がついた技術は今だにまったく使ったことないやw
XMLシリアル化と比べて特にどんな点が便利なの?
488デフォルトの名無しさん:2010/03/02(火) 23:18:16
教えない♥
489デフォルトの名無しさん:2010/03/02(火) 23:41:16
プロパティだけではなくフィールドもシリアライズ可
メンバや型がpublicでなくてもいい
Dictionaryもおk
循環参照対応
速い軽い
SerializableAttribute, ISerializableにも対応

欠点
XMLのフォーマットはほとんど制御できない。既存のXML文書の読み取りには使えない。
490デフォルトの名無しさん:2010/03/02(火) 23:42:38
連続して申し訳ない。

Accessと繋いでデータグリッドビューにデータを表示させてる。
データセットでselect * fromテーブル名 でやってるから主キーまでdgに表示されちゃうんだよね。

編集の時に主キーが一致するものを・・・にしてあるから主キーは絶対取得したい。けどdgにはでてこないでほしい・・・


あとでボタンを押したら選択されてる行の中身を全部からにしたいんだけどうまくいかない。
currentRowsさん調べたけどわからなかった。

491デフォルトの名無しさん:2010/03/02(火) 23:43:37
要するにSoapFormatterの出力を普通のXMLに変更したようなもんか
492デフォルトの名無しさん:2010/03/02(火) 23:50:34
>>490
デザイナでデータソース設定してないの? 列の編集とかできるのに
どうしてもコードでやらなきゃ気が済まないってんならLoadイベント辺りでDataGridView.ColumnsからRemoveすればいいけど
現在行とか使うならデータソースにはBindingSource使うのがベター
493デフォルトの名無しさん:2010/03/02(火) 23:55:42
>>489
なるほど。
型がpublicでなくてもいいのは魅力かも。
XMLSerializerだと、設定値を保存するための他からは用のないインナークラスを
publicにする必要があったから。

バージョントレランスはどうなのかね。
メンバーが増えたり減ったりしてもそのまま読めるんだろうか。
494デフォルトの名無しさん:2010/03/02(火) 23:57:59
何をシリアライズするかはあくまで明示的に決めるのでXmlSerializerに近いかな
型にDataContract属性を付けた場合はDataMember属性が付いたメンバ(private可)だけがシリアライズされて
DataContract属性を付けない型についてはパブリックメンバのみがシリアライズされるようになってる
495デフォルトの名無しさん:2010/03/03(水) 00:04:02
>>492
dg部分は他人が作ったんだけどめちゃくちゃなソース書いてて、ソース書けないのにデザイナ使わずに設定してた。

removeタメしてみます。感謝。
496デフォルトの名無しさん:2010/03/03(水) 00:24:58
>>493
とあるゲームで使ってるけど、増えても減っても大丈夫だよ。
ないバージョン→あるバージョンの場合は、エラーにならないが追加されたフィールドは初期値
なので自分で初期化しないと駄目。
特に a= new hoge()とか書いているやつは、newされていないので自分で生成する必要がある。
今OS再インスコしたばかりで手元にないけど、確かデシリアライズされた時に呼ばれるメソッドが
あるのでそこで初期化すればいい。

あるバージョン→ないバージョン
シリアライズされたフィールドは無視してくれる。
特に処理必要なし。
497デフォルトの名無しさん:2010/03/03(水) 00:26:44
ごめん、WCFのシリアライズじゃなくて.Netのシリアライズの話だったorz
498デフォルトの名無しさん:2010/03/03(水) 06:24:13
Webプログラムしか経験がなく動画処理に手を出してみたくてC#はじめました
ttp://support.microsoft.com/kb/436361/ja
これを見てソースをコピペして適当な動画にさしかえて実行したところ
音声がなるのみで映像がでてきませんでした
何を追加したらよいのでしょう?
コメントもないし何をしてるかよくわかりませんが
一応実行できるソースをいただければ後は頑張って調べてみたいと思うので
どうかよろしくお願いします
しかしMSDNのドキュメントは読みづらいですねIDE(VC#)も使いにくいし・・・
なれるまで時間かかりそうorz
499デフォルトの名無しさん:2010/03/03(水) 06:41:24
MSDNが読みづらいってのは同意するけど、VS以上のIDEって存在するか?
500デフォルトの名無しさん:2010/03/03(水) 08:30:41
月蝕
501デフォルトの名無しさん:2010/03/03(水) 09:00:39
eclipse も VS も似たようなもんだと思うけどなぁ。

シコシコ書くなら emacs ちゃん!
502デフォルトの名無しさん:2010/03/03(水) 09:35:05
>>498
うちはXPだけど、再生するファイルを以下にしてちゃんと表示された
objMC.RenderFile( @"C:\WINDOWS\clock.avi" ); //このファイル何のためにあるんだろ
映像codecの問題じゃないかな
その映像が出ない動画、エクスプローラからダブルクリックで表示される?
503デフォルトの名無しさん:2010/03/03(水) 09:37:42
>>502
windows98くらいからの名残じゃなかったっけ?
//このファイル何のためにあるんだろ
システムフォルダに結構昔からの名残があったりするよ
504デフォルトの名無しさん:2010/03/03(水) 10:29:44
Win3.1のVideo for Windowsにもあったな。
505デフォルトの名無しさん:2010/03/03(水) 13:33:08
>>496
それは問題ないとは言わないだろうw
XmlSerializerやDataContract(WCF)では中身を丸々保存するんじゃなくて
外から見て書き写すので実装がごっそり変更されてもかまわない
506498:2010/03/03(水) 16:57:24
レス遅れてすみません。
>>502さんのファイルにしたら再生することができました。
他のaviで試してみたところ正常に動作したので
最初に実験に使ったファイルがmpgだったのがいけなかったようです。
コーデックはffdshowが使われているようです。
wikipediaの説明を見るかぎりコーデックが入ってればなんでも再生できそうな雰囲気だったのですが、
何か勘違いしているのかもしれません。
再生できましたのでソースの意味をこれから調べてみたいと思います。
レスいただいた方ありがとうございました。

ちなみに普段使ってるのはEclipseです。
似たようなもんなんですけど何かが違う・・・
何がおかしいのかよくわからないけど細かいところで違和感が・・・
とそんな感じです。
507デフォルトの名無しさん:2010/03/03(水) 22:21:12
ボタン押したらパネルのbackground imageを無くして初期状態にしたんですがどうすればいいでしょうか
508デフォルトの名無しさん:2010/03/03(水) 22:38:11
したんだったらそれでいいじゃないか
したいんだったらnull入れとけ
509デフォルトの名無しさん:2010/03/04(木) 07:54:54
メモ帳なんかで保存しないで閉じた時になるようなサウンドなんですが
こういうWindows専用のプログラムって
Windowsフォルダ内にそういうファイルがあると踏んでプログラムするもんなんでしょうか?
510デフォルトの名無しさん:2010/03/04(木) 07:58:48
>>509
あれはwindowsのシステムサウンドを鳴らしてるだけでしょ

windows システム サウンド
とかでググルとわかるよ
511デフォルトの名無しさん:2010/03/04(木) 08:33:00
>>510
ありがとうございます
鳴らすための専用のプロパティまで用意されていたんですね
簡単に鳴らすことができました
512デフォルトの名無しさん:2010/03/05(金) 00:52:45
>>511
それぞれの時に鳴る音はWindowsの設定で変更できるよ
513デフォルトの名無しさん:2010/03/05(金) 05:18:19
普段まったく見えないコンポーネント群の中で
どれがどういう奴か網羅してるサイトとかってある?
514デフォルトの名無しさん:2010/03/05(金) 06:19:50
> 普段まったく見えないコンポーネント群

ってなんだよ?
515デフォルトの名無しさん:2010/03/05(金) 08:57:49
.NETでコンポーネントっつったらIComponent継承してる奴全部だと思うけど
全部網羅してる奴なんてMSDN以外にないだろうな
516デフォルトの名無しさん:2010/03/05(金) 10:11:43
正規表現で、

Hoge(Hoge(Hoge("unko","unko2"),"hogehoge"),"syobo-n")

みたいのを解析したいとしたらHoge(xxx,xxx)のような感じでかつなかにHoge(xxx,xxx)を含まないものでマッチさせて、
それを取得するとともに適当な文字、たとえば###にReplaceしてその上の階層をマッチさせて…みたいな感じになるのかの.


まんどくせorz
517デフォルトの名無しさん:2010/03/05(金) 10:12:12
WPFのコンポーネントはIComponent使わないよ
518デフォルトの名無しさん:2010/03/05(金) 10:15:48
>>516
一番いいのは解析しなくて済む方法を考えることだお
519デフォルトの名無しさん:2010/03/05(金) 10:21:15
>>516
ちゃんとソースコードの解析とかDSLとかやりたいんだったら
伝統的なコンパイラ製作の手法を使ったほうがいいよ
C#ならGPPGとか使ってパーサを生成する
520デフォルトの名無しさん:2010/03/05(金) 10:21:17
こんなの解析したとしてもしれてるだろ
521デフォルトの名無しさん:2010/03/05(金) 10:22:11
>>516
こちらへ
正規表現 Part6
http://pc12.2ch.net/test/read.cgi/tech/1241537764/

c#の独自の機能ってわけじゃないので
522デフォルトの名無しさん:2010/03/05(金) 10:51:58
入れ子のある構造は正規表現向きじゃないな
523デフォルトの名無しさん:2010/03/05(金) 11:38:15
>>514

ツールボックス右クリック アイテムの選択で出てくるリストで
チェックされて無いやつ全部
524デフォルトの名無しさん:2010/03/05(金) 11:43:44
MSDN以外にあるわけねえだろ
525デフォルトの名無しさん:2010/03/05(金) 11:45:33
なんかでるなあ
グレーアウトというか半透明で後ろの色と重ねてあるというか・・・そんな表示で

部品の名前見てるとVB6.0時代の名残?
526デフォルトの名無しさん:2010/03/05(金) 11:58:23
引数の形式を>>516の(再帰, "文字列")に限るなら
(?<id>[\w\W]+)\((?<r>.*),"(?<str>[^"]*)"\)
で最長一致でキャプチャしてrについて繰り返せばいけそう
一般的にやるのは.NETの正規表現だけではたぶん無理
527デフォルトの名無しさん:2010/03/05(金) 13:28:13
.NETにはじめから付いてるコンポーネントの中でデフォルトで
ツールボックスに表示されてないものは実際あんまり使うことないと思うよ
VB6っぽいのはたぶん.NETじゃなくてCOMのコンポーネント
COMの方はどうしてもというわけでなければなるべく使わない
528デフォルトの名無しさん:2010/03/05(金) 15:53:32
>>527
乗り物全集の中で、デフォルトが自家用車だらけなのに
裏ではこっそり1輪車からアポロとか回天とかあったらさ・・・
必死なときは回天使ってみたい場合もあるじゃん

知らなきゃ自動車を容器で包んで見た目潜水する特攻≠自沈機械つくらなきゃならん
529デフォルトの名無しさん:2010/03/05(金) 15:56:14
何が言いたいかわかりにくいよw

理解したけどw
530デフォルトの名無しさん:2010/03/05(金) 17:16:04
で、誰もメンテできない、糞アプリが出来上がると
531デフォルトの名無しさん:2010/03/05(金) 18:26:00
System.Drawing.BitmapをDIBSectionみたいにピクセルにポインタで
高速にアクセスしたいんですけどどんな感じで実現できますか。
ゲームで利用するためにαブレンドとか加算合成とかを実装したいです。
532デフォルトの名無しさん:2010/03/05(金) 18:59:21
LockBitsでググれ
でもどっちにしろGDI+でゲーム作るのはやめたほうがいいと思う
DirectXやWPF使えば全ての努力が虚しくなるくらいの圧倒的な速度が簡単に得られる
533デフォルトの名無しさん:2010/03/05(金) 19:03:08
LockBitsしてBitmapDataに書き込みしてUnlockBitsで書き戻し
ただしコピーが入る

WPFでPixelShader使った方が早いかも知れない
534デフォルトの名無しさん:2010/03/05(金) 19:47:14
なるほどやっぱりメモリ直接触れないのがネックですね。
WPFってコントロールをXML経由で制御するイメージがあって
遅いと思い込んでたんですけどちょと試してみようかな…
C++ではDIBSection使ってたからDirectXはちょっと今更感が…
ありがとうございました。
535デフォルトの名無しさん:2010/03/05(金) 20:54:30
WPFもDirectXベースだからな
αブレンドや加算合成などは自分では一切実装せずに全てハードウェアに丸投げするのが基本
536516:2010/03/05(金) 22:40:20
いろいろレスあり。
正直ANTLRでも使いたいところだけど、ほんの一箇所の機能のためにランタイムDLLがいくつも増加するのがなぁ…
537デフォルトの名無しさん:2010/03/06(土) 00:19:13
字句解析 & 構文解析は書いてみると想像してるより結構簡単だから
限定された部分だけなら自前で書いちゃうのもありだと思うよ。
538デフォルトの名無しさん:2010/03/06(土) 00:32:22
今の時代PCでもCPUとメモリのリソースが滅茶苦茶多いしブーストラップの必要も全くないから
字句解析と構文解析なんてあんまり神経質にならなくても適当な資料当たって組めば良いと思うよー
539デフォルトの名無しさん:2010/03/06(土) 00:38:32
ANTLRはランタイムライブラリの出来が悪いんだよなあ
Ironyなんか面白そう
540デフォルトの名無しさん:2010/03/06(土) 01:59:45
GDI+はラスタオペレーションなくなったのか
殺してやる
541デフォルトの名無しさん:2010/03/06(土) 05:17:04
>>540
つうほうしました
542デフォルトの名無しさん:2010/03/06(土) 11:24:10
時代はピクセルシェーダだよ
WPFはもちろんSilverlightでもサポートされてる
543デフォルトの名無しさん:2010/03/07(日) 00:19:54
やっぱWPFやんなきゃダメだな orz
544デフォルトの名無しさん:2010/03/07(日) 00:30:38
C#の文法的なことを聞きたいのですが、

Button のClickイベントにプラスするdelegateの匿名メソッドの中でthisって書いてもこのthisはButtonでなくFormをさすんでしょうか?

ちなみに、Form1の中にButton1があり、Form1.cs(class名:Form1)のファイルに書いています。
545デフォルトの名無しさん:2010/03/07(日) 00:32:49
うん
JavaScriptとは違うというかJavaScriptが異端
546544:2010/03/07(日) 00:35:47
>>545 ありがとうございます。
JavaScriptだと逆の結果になるんですね。

とりあえず、C#の場合はFormをさすということがわかり、ありがたいです。

結構長い間疑問だったんで・・ありがとうございました。
547デフォルトの名無しさん:2010/03/07(日) 08:30:37
>>546
>C#の場合はFormをさすということがわかり
ちょっと違う
>>544の例としてはそうだけどね

正確には今コード書いてるクラスのことになる
IDEでコード書く場合はFormクラスを継承したForm1にコードを書くことが多いので
thisがForm1をさしてるけど
buttonを継承したクラスを作ってその中でthisを使えば
buttoを継承したクラスをさす

class MyButton : Button
{
public MyButton()
{
//この場合はMyButtonのこと
this.size = new Size(120,30);
}
}
548544:2010/03/07(日) 16:24:51
>>547
どうもありがとうございます。今書いてるクラスが主?っていうかthisの主体になるんですね。

よ〜く、わかりました。勉強になりました。ありがとうございました。
549デフォルトの名無しさん:2010/03/07(日) 19:48:15
クラスというよりはインスタンスだな
staticメソッドでは使えないから
550デフォルトの名無しさん:2010/03/07(日) 22:48:55
ちょいと質問
SELECT Format([日付テーブル]![日付],"yyyy/mm/dd") AS 年月, スケジュール.タイトル, スケジュール.メモ帳 FROM スケジュール ORDER BY Format([日付テーブル]![日付],"yyyy/mm/dd");

これC#で使いたいんだけど、yyyy/mm/ddのところどう書いたらちゃんと動いてくれる?
551デフォルトの名無しさん:2010/03/07(日) 23:42:30
>>550
LINQでってこと?
これでいける。
using (var context = new MyDBDataContext())
{
var rows = context.Order
.Select(r => string.Format("{0:d}", r.transactTime));

foreach (var row in rows)
Console.WriteLine(row);
}
552デフォルトの名無しさん:2010/03/07(日) 23:45:40
>>550
これC#というよりSQLだよね
FROMに指定されてないテーブル参照してるよ
使ってるDBとエラーメッセージくらい書こうね

あと自動で作成されたSQLそのまま使うより
もう少し簡潔にした方が良いよ
553デフォルトの名無しさん:2010/03/08(月) 01:37:00
そうか、春休みか。
554デフォルトの名無しさん:2010/03/09(火) 12:35:42
なぜかMSDNの字が小さく変更されたような
555デフォルトの名無しさん:2010/03/09(火) 13:10:44
ライトウェイトがすばらしい
556デフォルトの名無しさん:2010/03/09(火) 15:42:17
・構造体では、インターフェイスを実装できます。

なんか意味あんのかなこれ
557デフォルトの名無しさん:2010/03/09(火) 15:43:42
なぜ意味が無いと思ったのか聞きたい
558デフォルトの名無しさん:2010/03/09(火) 16:31:51
IComparable<T>とかIEquatable<T>とかは知らないうちに恩恵にあずかってる
559デフォルトの名無しさん:2010/03/09(火) 17:38:10
1/1
Type.GetTypeで希望のTypeを取得出来なくて困っています。

取得したいTypeはアプリケーションのプロジェクトとは違う、
ライブラリ用プロジェクトで作成されたアセンブリ内のclassのものです。

アプリケーションのプロジェクトにて、ライブラリ用の
プロジェクトをインポートして使用しています。

テストコードでは下記のようにしてみました。

System.Reflection.Assembly asm = System.Reflection.Assembly.LoadFrom( "Lib.dll" );
var _targetType = typeof( KML.FileFormat.PseudoXML.ASDASD );

Type _type = Type.GetType( _targetType.FullName, true, false );

症状は TypeLoadException が発生します。
560デフォルトの名無しさん:2010/03/09(火) 17:41:17
2/2
そこで、アセンブリ名を指定して

Type _type = Type.GetType( _targetType.FullName + ",Lib.dll", true, false );

とした場合は、GetType内で、

System.IO.FileNotFoundException: ファイルまたはアセンブリ
'Lib.dll'、またはその依存関係の 1 つが読み込めませんでした。

との事、なので

Type _type = Type.GetType( _targetType.FullName + @",C:\aa\bb\cc\Lib.dll", true, false );

とし、アセンブリへのフルパスを指定した場合は、
System.IO.FileLoadException: 指定されたアセンブリ名またはコードベースは無効です。

となり、いずれも目的を果たせませんでした。

ITMediaやリフレクションの記事を掲載しているブログなどは、
簡単に実現できるような感じで書いているのですがなかなか上手くいきません。

どなたか問題点をお教えいただければ幸いです。
よろしくお願いします。
561デフォルトの名無しさん:2010/03/09(火) 17:43:35
作業環境は、
OS:VISTA32bit
VisualStudioC#2008ExpressEdition
対象フレームワークの設定は3.5です。
562デフォルトの名無しさん:2010/03/09(火) 17:45:49
何をしたいのか分からん
アセンブリを動的ロードするならAssembly.GetTypeとか使えばいい
563デフォルトの名無しさん:2010/03/09(火) 17:53:48
最終的にやりたいことは設定ファイル(text)に基づいて、
指定のclassをインスタンス化する事です。

その前段階で指定したclassのTypeが必要なようですので、
Type.GetTypeで得ようと試みていたところです。
564デフォルトの名無しさん:2010/03/09(火) 17:57:36
> その前段階で指定したclassのTypeが必要なようですので、
そのTypeはLoadしたAssemblyオブジェクトからAssembly.GetType等で取得するもの
565デフォルトの名無しさん:2010/03/09(火) 18:00:50
どうでもいいけど 1/1、2/2じゃなくて1/2、2/2じゃないのか?
566デフォルトの名無しさん:2010/03/09(火) 18:14:51
>>562>>564
ご指摘ありがとうございます。
Assembly.GetTypeで上手く取得できました。

>>565
たしかに・・・。
申し訳ない。
567デフォルトの名無しさん:2010/03/09(火) 23:22:48
> その前段階で指定したclassのTypeが必要なようですので、
くそわろた。
568デフォルトの名無しさん:2010/03/10(水) 00:50:15
1/1,2/2が地味にきくわ
569デフォルトの名無しさん:2010/03/10(水) 14:30:19
すみません。質問です。
XMLの件なので、こちらで聞くか迷ったんですが、こちらでお願いします。

http://weather.livedoor.com/forecast/rss/warn.xml

上記のXMLを解析しようと思い、Byte配列に受信しました。
そのByte配列をEncoding.UTF8.GetCharsに入れてやるとエラーになります。
原因を調べると、「〜で質問してみましょう」の「質」の字が
e8 0d 0a 35 61 38 0d 0a b3 aa
となっており、「質」の字の間に改行コード(0d 0a)とよくわからない文字列(35 61 38)が入っていました。
(ちなみに「質」はUTF8でe8 b3 aa)

XMLの処理は初めてなので、よくわかっておりません。
こういった経験や、対処された方がおられましたらいい対処法をご教授ください。


環境は.NetMicroFramework、VisualStudio2008Express、WindowsXPProです。
570デフォルトの名無しさん:2010/03/10(水) 14:56:31
>>569
Byte配列に格納する時点で失敗してる可能性が大。
571デフォルトの名無しさん:2010/03/10(水) 15:19:35
これで問題なく読めることが分かる。
using System;
using System.Xml;
class Program {
 static void Main() {
  var xrdr = XmlReader.Create("http://weather.livedoor.com/forecast/rss/warn.xml");
  var xdoc = new XmlDocument();
  xdoc.Load(xrdr);
  xdoc.Save(Console.Out);
}}
572デフォルトの名無しさん:2010/03/10(水) 15:37:17
35 61 38 -> 5a8 -> 1448
TCPのデータ長がこんなんだっけ?
573デフォルトの名無しさん:2010/03/10(水) 15:40:56
受信の際のエンコードはxmlの中にかかれてるので自動で認識した後
勝手にucs-2に変換されてない?

xmlとかの問題じゃなく文字コードの扱いを分かってないような
574デフォルトの名無しさん:2010/03/10(水) 15:50:52
すみません。
エラーが出たURLは
http://weather.livedoor.com/forecast/rss/earthquake.xml
こっちでした


>>570
ちょっと調査してみます。

>>571
丁寧にコードまで書いていただきありがとうございます。
一度Byteに格納しないほうがいいんですかね。
ネットワークが不安定なので、一度ローカルに持って行きたかったんです・・・

>>573
ありがとうございます。
正直文字コードの扱いよくわかってないです。
ローカルにByte配列で持ちたかったので、こういう形になっています。
575デフォルトの名無しさん:2010/03/10(水) 15:52:28
>上記のXMLを解析しようと思い、Byte配列に受信しました。
Byte配列に受信しました。
この部分のコード晒せる?
576デフォルトの名無しさん:2010/03/10(水) 15:55:18
バイト配列取得以降の問題かもしれない。
Socketクラスを参考にしていた場合、そのサンプルはバグというか不親切。
do {
bytes = s.Receive(bytesReceived, bytesReceived.Length, 0);
page = page + Encoding.ASCII.GetString(bytesReceived, 0, bytes);
}
をUTF8に変更しただけじゃダメ。これは多バイト文字の途中だろうとお構いなし。
文字の境界を判断するか、それとも全部バッファに取ってから変換する必要がある。
577デフォルトの名無しさん:2010/03/10(水) 16:01:22
あ、 0d 0a 35 61 38 0d 0a の理屈が付かないからそれは無いか・・・
578デフォルトの名無しさん:2010/03/10(水) 16:02:19
>>577
うむ
エスパーしてもしかたないので
>>575なんだよw
579デフォルトの名無しさん:2010/03/10(水) 16:03:04
WebClient.DownloadDataあたりだったら問題ないのかしらん
580デフォルトの名無しさん:2010/03/10(水) 16:05:10
>>579
というか通信にしろファイルにしろエンコード指定しておけば指定したエンコードで読み込んだあと
ucs-2に勝手に変換してくれるはずなんだけどな・・・
581デフォルトの名無しさん:2010/03/10(水) 16:10:56
>>575 そのままコピペなんで無駄なコードあるかもしれませんが・・・
一番下のwhile文で1024バイトずつ読み込んで、大きな配列につないでます。
      String Server = "weather.livedoor.com";
String URI = "/forecast/rss/earthquake.xml";
const Int32 HttpPort = 80;
const Int32 BufferSize = 1024;
using (Socket requestSocket = ConnectSocket(Server, HttpPort))
{
String request = "GET " + URI + " HTTP/1.1\r\n";
request += "Host: " + Server + "\r\n";
request += "Connection: Close\r\n";
Byte[] requestData = Encoding.UTF8.GetBytes(request);
Byte[] recBuffer = new Byte[BufferSize];
Byte[] recBufferFull = new Byte[BufferSize * 100];
requestSocket.Send(requestData, requestData.Length, 0);
DateTime timeoutAt = DateTime.Now.AddSeconds(30);
while (requestSocket.Available == 0 && DateTime.Now < timeoutAt)
{
System.Threading.Thread.Sleep(100);
}
Int32 bytesRead = 0;
Int32 bytesReadBefore = 0;
while (requestSocket.Poll(10 * 1000000, SelectMode.SelectRead))
{
Array.Clear(recBuffer, 0, recBuffer.Length);
bytesRead = requestSocket.Receive(recBuffer);
if (bytesRead == 0)
{ break;}
recBuffer.CopyTo(recBufferFull, bytesReadBefore);
bytesReadBefore += bytesRead;
}
582デフォルトの名無しさん:2010/03/10(水) 16:15:56
Socketとかhttpの練習とか学習?
単純にrssリーダーぽいことができればいいとかなら
WebClientでデータとってきてxmlに投げるとかすればいいだけだよ
583デフォルトの名無しさん:2010/03/10(水) 16:24:36
応答のHTTPヘッダがなんて言ってるのかも気になる
584デフォルトの名無しさん:2010/03/10(水) 16:33:30
>>582
WebClientググったら便利そうですね。
ただ、MicroFrameworkにはないみたいなので、同じような機能のライブラリ提供している方がおられるので、それを利用してみたいと思います。
もしくはHttpWebRequestでいいんでしょうか?

>>583
HTTP/1.1 200 OK\r\nDate: Wed, 10 Mar 2010 07:24:48 GMT\r\nServer: Apache/1.3.41 (Unix) mod_perl/1.30\r\nPragma: no-cache\r\n
Cache-Control: private\r\nVary: User-Agent\r\nContent-Type: text/xml; charset=utf-8\r\nConnection: close\r\nTransfer-Encoding: chunked\r\n\r\n4ac\r\n
ヘッダのstring変換後はこんな感じです。
585デフォルトの名無しさん:2010/03/10(水) 16:35:04
chunked
586デフォルトの名無しさん:2010/03/10(水) 16:36:45
>>584
ここのサンプルコードを書き換えたけど問題なく受信できたな
http://dobon.net/vb/dotnet/internet/downloadusesocket.html

http://codepad.org/NVeXkER1

最後のtextboxだけ用意してくれ
587デフォルトの名無しさん:2010/03/10(水) 16:41:33
0d 0a 35 61 38 0d 0a
は長さ5a8バイトということか
588デフォルトの名無しさん:2010/03/10(水) 16:42:11
>>585でFAじゃまいか
こういうのは透過的に扱ってくれるライブラリ使わないと面倒くさいね
589583:2010/03/10(水) 16:42:17
>>585
ああやっぱり
590デフォルトの名無しさん:2010/03/10(水) 16:46:10
>>586
丁寧に書いてもらってありがとうございます。
MicroFramework用に変更して使ってみます。

>>587
どうやらそうっぽいです・・・そのバイトずつわけて受信すればいいんですかね?

>>588
chunkedググってみます
591デフォルトの名無しさん:2010/03/10(水) 16:49:22
HTTP/1.1 は chunked で送られてくるからめんどくさいよね
592デフォルトの名無しさん:2010/03/10(水) 16:49:38
>>590
いや・・・
データ本体がそのサイズってことだろ
>>586で受信したテキストデータ

HTTP/1.1 200 OK
Date: Wed, 10 Mar 2010 07:46:23 GMT
Server: Apache/1.3.41 (Unix) mod_perl/1.30
Pragma: no-cache
Cache-Control: private
Vary: User-Agent
Content-Type: text/xml; charset=utf-8
Connection: close
Transfer-Encoding: chunked

4ac
[rssの一つ]
5a8
[rssの一つ]
5a8
[rssの一つ]

以下略
こんなパターンでくるのか
593デフォルトの名無しさん:2010/03/10(水) 16:52:33
もうこの程度ですら自力で実装するのを億劫に感じててヤバイ
594デフォルトの名無しさん:2010/03/10(水) 16:54:02
>>593
そりゃIDE+VC#って人間を退化させるよ

パソコン上でIMEになれてしまって咄嗟に漢字がかけない感覚に似てる
595デフォルトの名無しさん:2010/03/10(水) 16:55:45
MicroF/WはCompactF/WよりさらにAPIが少ないの?
596デフォルトの名無しさん:2010/03/10(水) 16:59:00
>>591
そうなんですか。勉強になります。

>>592
書いていただいたソースは、1024バイトずつ受信してて、resSizeが0になったら受信終わりですよね?
どうやってデータ本体毎にわけるのかよくわからないです。
いただいたソースだと4acとか5a8のような不要な情報も入りそうな気がするのですが。
597デフォルトの名無しさん:2010/03/10(水) 16:59:56
>>595
そうです。かなり少ないです。
しかも英語ページしかないのでなかなかとっつきにくくて・・・
598デフォルトの名無しさん:2010/03/10(水) 17:01:17
>>592
一部訂正
HTTP/1.1 200 OK
Date: Wed, 10 Mar 2010 07:46:23 GMT
Server: Apache/1.3.41 (Unix) mod_perl/1.30
Pragma: no-cache
Cache-Control: private
Vary: User-Agent
Content-Type: text/xml; charset=utf-8
Connection: close
Transfer-Encoding: chunked

4ac
[4acバイト分のデータ(文字コードはどれか不明)]
5a8
[5a8バイト分のデータ(文字コードはどれか不明)]
5a8
[5a8バイト分のデータ(文字コードはどれか不明)]

以下略
5a8
[5a8バイト分のデータ(文字コードはどれか不明)]
0
最後は0で終わってる
こんなパターンでくるのか
599デフォルトの名無しさん:2010/03/10(水) 17:04:56
>>596
いやそんなに難しくないでしょ

4ac 5a8でバイト数(文字数?)を見て行けばいいだけだし
0d0aは単なる改行コードだしね

>>586のコードをMicroじゃないFrameworkで動かしてみて受信データを見てみなよ
600デフォルトの名無しさん:2010/03/10(水) 17:06:20
面倒なんでcodepad使わせてもらった
http://codepad.org/hXtU8pZp
601デフォルトの名無しさん:2010/03/10(水) 17:08:29
流れぶった切ってちょい質問

struct A {
int x;
int xsize;
}

int sx = 0;
List<A> alist = new List<A>();
alist.ForEach(delegate(A a) {
a.x = sx;
sx += a.xsize;
}

こういう感じで、構造体リストのある項目を全書き換えしたいんだけども、
forループするしか手はない?
いちいちコピー&書き戻しが発生するからできればしたくない・・・
602デフォルトの名無しさん:2010/03/10(水) 17:12:38
>>599
全部受信してからそれ毎に区切っていく感じでいいんですね。
それなら簡単そうです。
ちょっとFramework変えてやってみます。
ありがとうございます。
603デフォルトの名無しさん:2010/03/10(水) 17:51:06
>>601
どこかで見た流れだ
604デフォルトの名無しさん:2010/03/10(水) 17:52:37
ふらっとC#,C♯,C#(初心者用) Part56
http://pc12.2ch.net/test/read.cgi/tech/1267348401/356-
こっちだった
605デフォルトの名無しさん:2010/03/10(水) 18:10:11
まだ効率だけにこだわっているのか
606601:2010/03/10(水) 18:10:45
いや別にループ怖いって話じゃなくてwww
構造体コレクションの実体に直接アクセスしたいってだけ
607デフォルトの名無しさん:2010/03/10(水) 18:11:03
そっちはループ処理したくないというアホ
こっちは多分一時コピー(ry

var tmp = alist[i];
// tmpを変更
alist[i] = tmp;
608デフォルトの名無しさん:2010/03/10(水) 18:16:55
なんで構造体なんだ?
クラスにしちゃえばいいじゃない
609デフォルトの名無しさん:2010/03/10(水) 18:35:40
仕方なく構造体のコレクションを使うときに
効率は別にしてもなんか気持ち悪いのはよくわかる
610601:2010/03/10(水) 18:49:47
>>608
実体コピー前提の使い方するから>構造体な理由
むしろ間違って参照渡ってしまった時のバグが怖い

>>609
そう
値型専用のコレクション操作メソッドとか用意されてないかと思って聞いてみた
611デフォルトの名無しさん:2010/03/10(水) 19:37:42
無限ループって怖くね?(棒読み)
612デフォルトの名無しさん:2010/03/10(水) 21:47:24
>>610
delegate void RefAction<T>(ref T arg);
static void ForEach<T>(this IList<T> source, RefAction<T> action) {
for (int i = 0; i < source.Count; i++) {
var item = source[i];
action(ref item);
source[i] = item;
}
}
効率は知らん
613デフォルトの名無しさん:2010/03/10(水) 22:12:02
そんなことするくらいなら、(サイズが確定した時点で)配列にして普通にfor使う方がまし

var array = list.ToArray();
for(int i=0; i<array.Length; i++) array[i].x = 10;
614デフォルトの名無しさん:2010/03/11(木) 00:40:16
>>602
いまさらだけど、
 チャンクのサイズを見て、そのサイズ分読む
 チャンクのサイズが0なら終わり
という風にしたほうが楽だし速いよ
615デフォルトの名無しさん:2010/03/11(木) 00:42:56
wavファイルを数値データとして見たいのですがどうすればいいですか?
616デフォルトの名無しさん:2010/03/11(木) 00:43:48
大して難しいフォーマットじゃねえし
http://www.kk.iij4u.or.jp/~kondo/wave/
でも読め
617デフォルトの名無しさん:2010/03/12(金) 16:09:08
VC#に、クラスとか関数の関連を表示するナビとかハイパーリンクとかの機能ありますか?
いわゆるなんちゃってフローチャート的なやつ
618デフォルトの名無しさん:2010/03/12(金) 17:23:17
よくわからんが IDE の話か?
VisualStudio のクラスビューとかのことかね?
619デフォルトの名無しさん:2010/03/12(金) 17:28:56
クラス図(クラスとか関数の関連を表示するやつ)と、流れ図(フローチャート)は全く別物だが。
クラスビューにはリンク機能は無いけど。一度使ってみれば。
620デフォルトの名無しさん:2010/03/12(金) 17:31:54
HSPみたいなもの言ってるのでは
621デフォルトの名無しさん:2010/03/12(金) 17:35:50
フローって作れるか?

VC++だったら確か関数の上で右クリックすると関連が見得たりしたけど
VC#の場合基本ネームスペース、クラス、メンバ関数とか
なのでそんなフローが必要になることってあんまり無いような
622デフォルトの名無しさん:2010/03/12(金) 19:26:25
TextBoxを普段非表示にしておいて、マウスオーバーで表示されるようにしたいんだけども
Hide()使うとイベント受けてくれない
何かいい手はありますか?
623デフォルトの名無しさん:2010/03/12(金) 19:27:30
表示位置覚えといて親コンテナのマウス移動で表示するかどうか決めるとか?

624デフォルトの名無しさん:2010/03/12(金) 19:28:26
>>622
透明にすればいいんじゃない
625デフォルトの名無しさん:2010/03/12(金) 19:31:30
>>624
textboxは透明にするのは難しいんじゃないかな?
なんかこのスレかふらっとC#でバックカラーとかをいじっても透明にできなかった
とか書き込みがあった記憶が
626デフォルトの名無しさん:2010/03/12(金) 19:33:03
GDI+を使えばいいと思うよ
627デフォルトの名無しさん:2010/03/12(金) 20:27:14
今日気がついたんだけど、Windows Form上のコントロールのアプリケーション設定
(プロパティバインディングって言った方がいいのかな)ってローカライズに
対応してないのかな。

何が言いたいかというと、FormのLanguageで設定する各言語ごとに
プロパティバインディングされたプロパティのデフォルト値を設定する方法がないものかと。

とりあえずリソースと同じようにSettings.settingsをコピーしてSettings.en.settings
とかやってみたがダメだった。
628デフォルトの名無しさん:2010/03/12(金) 20:38:29
>>622
普通に誰でも思いつく泥臭い法でいいんじゃない?
つまりFormのMouseMoveイベントでマウスの座標を監視して、(hideしてある)
TextBoxの場所にマウスポインタが来たらShow()すると。
629デフォルトの名無しさん:2010/03/12(金) 22:36:28
同じ座標に無地のピクチャーボックスを置いて
そっちでイベントを受け取ってみるとか
630622:2010/03/12(金) 23:35:19
WPFのトンネルイベントみたいなのがあるかと思ったらそんなことはなかったぜ!と言う事かあ
見た目だけじゃなく存在自体が消えてしまうのは何とかならないのかなあ>Hide()
631デフォルトの名無しさん:2010/03/12(金) 23:38:19
>>630
Visible=false;
632デフォルトの名無しさん:2010/03/13(土) 00:13:56
派生クラスで適当に幾つかオーバーライドするだけじゃないの

とりあえず、OnPaint, OnMouseEnter(OnMouseHover), OnMouseLeave あたり
もしかしたら、OnPaintBackground も必要かも
633デフォルトの名無しさん:2010/03/13(土) 00:26:36
マウスオーバーでテキストボックス出てくるとか使いにくすぎるw
どういう使い道なんだ
634デフォルトの名無しさん:2010/03/13(土) 00:31:33
>>622
作ってみた。でもかなり対症療法的なコードなのであまり真に受けない方がいいかも。
class TextBoxEx:TextBox
{
  private bool SuppressesPaint { get; set; }

  private bool mIsTransparent = false;
  private bool IsTransparent
  {
    get { return mIsTransparent; }
    set
    {
      if (value != mIsTransparent)
      {
        mIsTransparent = value;
        if (IsTransparent)
        {
          SetVisibleCore(false);
          SuppressesPaint = true;
          SetVisibleCore(true);
        }
        else
        {
          SuppressesPaint = false;
          SetVisibleCore(false);
          SetVisibleCore(true);
        }
      }
    }
  }
635634:2010/03/13(土) 00:32:35
  protected override void OnMouseEnter(EventArgs e)
  {
    base.OnMouseEnter(e);
    IsTransparent = false;
  }

  protected override void OnMouseLeave(EventArgs e)
  {
    base.OnMouseLeave(e);
    IsTransparent = !Focused;
  }

  protected override void OnEnter(EventArgs e)
  {
    base.OnEnter(e);
    IsTransparent = false;
  }

  protected override void OnLeave(EventArgs e)
  {
    base.OnLeave(e);
    IsTransparent = true;
  }
636634:2010/03/13(土) 00:34:10
  protected override void WndProc(ref Message m)
  {
    const int WM_PAINT = 0x000F;
    const int WM_NCPAINT = 0x0085;
    switch (m.Msg)
    {
      case WM_PAINT:
      case WM_NCPAINT:
        if (SuppressesPaint) return;
        break;

      default:
        break;
    }
    base.WndProc(ref m);  
  }
}

- 以上 -
637634:2010/03/13(土) 00:50:28
親がアクティブじゃない時の挙動がおかしいな。
コントロール関係はいろいろ面倒臭いなやっぱりw
思いもよらないところに落とし穴が潜んでたりするし。
638デフォルトの名無しさん:2010/03/13(土) 01:15:19
VC#に最初から入ってるコントロールはイベント処理が微妙なのが多い気がする。
やりたいことがなかなかできなくて、結局自前でフラグ立てながら状態遷移を管理するハメになったり。
639デフォルトの名無しさん:2010/03/13(土) 07:05:42
配列構造体で、
struct vector
{
public int x;
public int y;
}
private void method{
vector[,] point = new vector[100, 100];
for (int i = 0; i < 100; i++)
{
for (int j = 0; j < 100; j++)
{
point[i, j].x = i;
point[i, j].y = j;
}
}
}
private void exchange()
{

}
このプログラムで、exchangeでmethodで定義したpoint[,].xを使いたいですけれども、どうすればいいんだ
640デフォルトの名無しさん:2010/03/13(土) 07:14:17
無理だろ。引数で渡すとかスコープを変えるとかせんと。
641デフォルトの名無しさん:2010/03/13(土) 08:09:02
関数の戻値か同じクラス内ならメンバーに持てばいいだろ。
private vector[,] method() {
  :
 return point;
}
642デフォルトの名無しさん:2010/03/13(土) 11:23:51
それじゃまだ実現不可能。
643デフォルトの名無しさん:2010/03/13(土) 11:27:49
一応>>634がいい奴だってことはわかった
644デフォルトの名無しさん:2010/03/13(土) 11:48:19
認識しないからといってインデントに全角スペースを使う男の人って…
645デフォルトの名無しさん:2010/03/13(土) 11:57:19
>>644
やめて〜!!
646デフォルトの名無しさん:2010/03/13(土) 12:03:13
2ちゃんねるではよく使うなぁ
647デフォルトの名無しさん:2010/03/13(土) 12:16:55
全角スペース便利
みんなこれからもどんどん使おうね
648デフォルトの名無しさん:2010/03/13(土) 12:17:39
むしろ2ちゃんだと先頭の半角とかは無視されなかった?
649デフォルトの名無しさん:2010/03/13(土) 12:54:23
無視はされない。datでもcgiでもちゃんと残っている
650デフォルトの名無しさん:2010/03/13(土) 13:02:08
codepadとか使えよ
http://codepad.org/

C#は選択肢にないけどCにしておいて右下のRun Codeのチェックはずしてsubmitボタン押すだけじゃねーか
http://codepad.org/HfKzapzv
651デフォルトの名無しさん:2010/03/13(土) 13:02:29
2ちゃんビューワとかブラウザで見ると無視されるな
652デフォルトの名無しさん:2010/03/13(土) 13:14:46
通常WWW UAは連続するホワイトスペースは一つの半角スペースに置き換えて表示するからね
こういった利用者が書式を指定できない掲示板では仕方がない
653デフォルトの名無しさん:2010/03/13(土) 13:19:46
preタグを認識してくれればいいんだけどな
654デフォルトの名無しさん:2010/03/13(土) 13:58:19
nbsp使えよ
655デフォルトの名無しさん:2010/03/13(土) 16:18:37
 nbsp使ったら、>>レス番 でポップアップしたときに
 nbspって文字列でてこなかったっけ?
656655:2010/03/13(土) 16:19:39
でてきませんでした。
657デフォルトの名無しさん:2010/03/13(土) 16:44:27
test
\s
\t
%89
test
 test
658デフォルトの名無しさん:2010/03/13(土) 17:44:29
C#4.0も良いけど、C#からC++のクラスや関数をC++/CLIを経由すること
なしに簡単に(透過的に)呼び出せるようにしてほしい。

C++/CLIなんていらない。文法がややこしくなるだけだ。VC++は
.Net Frameworkと同じインターフェースをもったNativeなGUI
ライブラリの開発に専念してほしい。

C++0xが正式に確定していない現在、動きがとれんだろうけど
以上の事をMSがやってくれたらC#を使う気になる。
659デフォルトの名無しさん:2010/03/13(土) 17:46:58
使わなくていいよ。
660デフォルトの名無しさん:2010/03/13(土) 17:49:08
>>658
使う気になるとか
C#しか使えない人に失礼だろw
661デフォルトの名無しさん:2010/03/13(土) 17:57:45
そんなに使いたくないなら使わなければいいのに
他にも選択肢はあるよ
662デフォルトの名無しさん:2010/03/13(土) 18:11:53
自分の好みやわがままで言語を選べるなんて、ずいぶんと恵まれた職場だな
663デフォルトの名無しさん:2010/03/13(土) 18:19:57
>662
それなんの社畜自慢?
664デフォルトの名無しさん:2010/03/13(土) 18:27:50
一生その職場にいて自分だけがメンテするならなんでも選べます
665デフォルトの名無しさん:2010/03/13(土) 18:34:30
既存のシステムがあったら大きく外れられないだろ
というかコンベンションというかガイドラインくらいどこにでもあるだろw
666デフォルトの名無しさん:2010/03/13(土) 18:36:56
うちはむしろ特別な事情(ユーザーの指定とか旧環境との兼ね合いとか)
がないかぎり Windows アプリは C# にするってことにしたけどな
667デフォルトの名無しさん:2010/03/13(土) 18:38:19
制約なければwindowsはc#で書きたいなあ
部分的にC/C++は入れたとしてもGUIはC#だわ
668デフォルトの名無しさん:2010/03/13(土) 18:42:36
「チッ.NET入れるのかよ」
というお客様も最近は減ってきました
669デフォルトの名無しさん:2010/03/13(土) 18:44:21
Vista以降で入ってるしね。
670デフォルトの名無しさん:2010/03/13(土) 19:41:48
とりあえず、意味不明のダイアログを表示して落ちるのもアレなので、
.NETが必要だというメッセージを表示するぐらいの配慮はするべき。
671デフォルトの名無しさん:2010/03/13(土) 19:44:11
デフォルトで出る様になってなかったっけ?
ただ英語なのでアホは読んでくれない
672デフォルトの名無しさん:2010/03/13(土) 19:46:47
確かにあれはいただけないな
673デフォルトの名無しさん:2010/03/13(土) 19:52:50
まあバイナリを裸で配布するのは邪道、っていう前提に立ってるんでしょう。
イストーラで配れと。

それにしても、.NET Frameworkは単独でアンインストール可能なわけだから、
そういうケースをもう少し想定すべきとは思うけど。
674デフォルトの名無しさん:2010/03/13(土) 22:07:38
ちっ、うっせーな
675デフォルトの名無しさん:2010/03/13(土) 23:04:13
うっ、ちっせーな
676デフォルトの名無しさん:2010/03/13(土) 23:08:52
C++のクラスとか旧時代のゴミ持ち込むなよ
677デフォルトの名無しさん:2010/03/13(土) 23:54:40
C#もろくに使えねぇ癖に

黙ってろカス
678デフォルトの名無しさん:2010/03/14(日) 01:59:46
反省してまーす
679デフォルトの名無しさん:2010/03/14(日) 02:10:53
>>617-621
クラスやそれ以上の粗さ(アセンブリなど)でよければ、
Visual Studio 2010の依存関係グラフというやつで、図にしてくれるぞ。
http://www.microsoft.com/japan/msdn/vstudio/2010/product/architecture_new.aspx
680デフォルトの名無しさん:2010/03/14(日) 03:12:02
doxygenもいいぞ
681デフォルトの名無しさん:2010/03/14(日) 07:10:37
コンボボックスのドロップダウンリスト部で右クリックが押されたことを検知するには
どうしたらいいでしょうか?
MouseClickやMouseDownで見張っていても呼ばれないようです
682デフォルトの名無しさん:2010/03/14(日) 07:25:31
そんなマニアックなイベントは無いと思う
一番簡単そうなのはドロップダウン部分のウィンドウハンドルを
NativeWindowに食わせることかなぁ
ハンドルはGetComboBoxInfoで取れる
683デフォルトの名無しさん:2010/03/14(日) 08:32:47
2010またソリューションとか変わるんだよな…
2008と混在できるけど、いまやってるプロジェクトまわりのやつは皆が2010に切り替えるまで2010でいじれないよね。
依存関係グラフで見たいのあるけど、なんかうまいやりかたある?
684デフォルトの名無しさん:2010/03/14(日) 08:33:39
>>682
ドロップダウン部分をサブクラス化してメッセージを自前で処理ですか・・・
ちょっと敷居が高そうですが頑張ってみます
ありがとうございました
685デフォルトの名無しさん:2010/03/14(日) 11:05:03
そんなアメリカンなUI、使う方にも敷居が高そうだ。
686デフォルトの名無しさん:2010/03/14(日) 11:43:24
>>679

2010か
687デフォルトの名無しさん:2010/03/14(日) 21:45:42
Visual C# ExpressEditionのエディタで、
半角スペースを可視化する設定はありませんか?
688デフォルトの名無しさん:2010/03/14(日) 21:50:36
>>687
編集→詳細→スペースの表示
ショートカットはCtrl+R→Ctrl+W
689デフォルトの名無しさん:2010/03/14(日) 22:00:28
>>688
ありがとうございます。
続いて質問ですが、半角スペースと全角スペースを区別する方法はありませんか?
見た目の幅が微妙に違うだけで、一目で判断するのは難しいのですが
690デフォルトの名無しさん:2010/03/14(日) 22:17:13
>>689
微妙っていっても表示される点の位置がずれるのでそれで区別しかないと思う。
インデントをタブにして普段は半角スペースを入れない方が判りやすいと思うんだけどね。
691デフォルトの名無しさん:2010/03/14(日) 22:19:48
全角が混ざったかわからないときはプロジェクトで考えるより
普通のテキストとみたてて置換した方が早くない?
692デフォルトの名無しさん:2010/03/14(日) 22:23:42
全角を気にしないというのはどうか?
693デフォルトの名無しさん:2010/03/14(日) 22:26:18
開発環境が何かしらないけど
スペースの可視化くらいできるだろ
694デフォルトの名無しさん:2010/03/14(日) 22:26:58
って上に書いてあったか
695689:2010/03/14(日) 22:36:44
皆様回答ありがとうございます。
>>690-692辺りを参考に、使い勝手を試しながら使いやすい設定を探していこうと思います。
696デフォルトの名無しさん:2010/03/14(日) 22:43:42
まあリテラル文字列中以外は、全角スペースは勝手に半角に修正されるんですけどね
違ったっけ。
697デフォルトの名無しさん:2010/03/15(月) 13:30:35
全角スペースも空白として扱われる、だろう
698622:2010/03/15(月) 16:17:26
>>634
亀ですがありがとう
参考にさせてもらいます
699デフォルトの名無しさん:2010/03/16(火) 21:05:48
質問です。

class Data
{
  public int A { get; set; }
}

PropertyInfo pi = typeof(Data).GetProperty( "A" );
Action<Data, int> setter = (Action<Data, int>)Delegate.CreateDelegate( typeof(Action<Data, int>), pi.GetSetMethod() );
Func<Data, int> getter = (Func<Data, int>)Delegate.CreateDelegate( typeof(Func<Data, int>), pi.GetGetMethod() );

これでsetter、getterを取得できますが、Dataをclassからstructにすると例外になります。
これはBox/Unboxの問題があるからだと思うんですが、EmitやExpressionを使わずに
structのプロパティに対するDelegateを取得する方法ってありますか?
700デフォルトの名無しさん:2010/03/16(火) 21:11:46
エラーメッセージぐらい書けよ
boxingとは関係ない問題と見たね
701デフォルトの名無しさん:2010/03/16(火) 21:11:50
Formの上にWebBrowserコンポーネントを貼り付けて、
Webページを読み込む簡易ブラウザを作っています。
ウィンドウ右上の×やAlt+F4等で終了した際に
現在のURLをApplicationExitで取得しようとしたら
WebBrowserのリソースが既に開放済みで
ObjectDisposedExceptionの例外が出てしまいました。
ApplicationiExitより前にURLを取得出来る
イベントハンドラはありますか?
702デフォルトの名無しさん:2010/03/16(火) 21:15:45
>>701
FormClosingイベント?
それよりWebBrowserのナビゲートが終わったらどこか固定の
stringにURL退避しておけばいいんでないの?
703デフォルトの名無しさん:2010/03/16(火) 21:21:34
>>702
ありがとうございます。JavaのSwingでいう所の
Disposeのようなものでしょうか?
こんな単純な事に気付かなかったとは…。
704デフォルトの名無しさん:2010/03/16(火) 21:28:49
Process.StartInfo.Arguments プロパティで与えたprocessの引数を、実行時に
local codepage に変換しない、あるいは任意のencodingにする方法ってあるのかな?
705デフォルトの名無しさん:2010/03/16(火) 21:31:41
>>703
WindowListener の windowClosing じゃね?
706699:2010/03/16(火) 22:08:33
>>700

すみません。
例外が発生するのはDelegate.CreateDelegate()の呼び出し時で、内容は
ArgumentException ターゲット メソッドにバインドしようとしてエラーが発生しました。
です。

ちなみにGetGetMethod()/GetSetMethod()のILを確認してみたところ、classでもstructでも
一緒で下記のような内容でした。

GetGetMethod()

IL_0000: /* 02 | */ ldarg.0
IL_0001: /* 7b | 04000001 */ ldfld Int32 <A>k__BackingField/ConsoleApplication1.Data
IL_0006: /* 0a | */ stloc.0
IL_0007: /* 2b | 00 */ br.s IL_0009
IL_0009: /* 06 | */ ldloc.0
IL_000a: /* 2a | */ ret

GetSetMethod()

IL_0000: /* 02 | */ ldarg.0
IL_0001: /* 03 | */ ldarg.1
IL_0002: /* 7d | 04000001 */ stfld Int32 <A>k__BackingField/ConsoleApplication1.Data
IL_0007: /* 2a | */ ret
707デフォルトの名無しさん:2010/03/17(水) 15:28:32
レジストリから呼ぶ出すCOMをC#で作ってて
Vista以降はセキュリティの関連でアセンブリ登録されたものしか動かないらしいんだけど
本体とは別に外部のプログラムを利用しててこいつはアセンブリ登録したくない独立したものなんだ
本体だけアセンブリ情報をつけてコンパイルしようとすると参照の名前が厳密ではないとかエラーになる
VS2005ではラップアセンブリキーってので回避できるって情報を見つけたんだけど
使ってるのがVS2008でどこにもそんな項目が見当たらない
こういう場合どうすればいいのでしょう?
708デフォルトの名無しさん:2010/03/17(水) 15:37:52
>>707
両方に厳密な署名すればいいんじゃないか
多分だが
709デフォルトの名無しさん:2010/03/17(水) 16:10:19
710デフォルトの名無しさん:2010/03/17(水) 16:24:31
ひきとるって具体的にどうするんだよw
711デフォルトの名無しさん:2010/03/17(水) 16:26:18
>>709
スルーしてくれ
これは2chやる上では必須スキルだ
712デフォルトの名無しさん:2010/03/17(水) 16:30:49
>>709
Ruby厨はこうやってそこらじゅうを荒らすから嫌われるんだよ
713デフォルトの名無しさん:2010/03/17(水) 17:16:45
Ruby厨 = アルミナ
714デフォルトの名無しさん:2010/03/17(水) 17:45:00
C#はXNAが初心者お断り仕様で助かった
715デフォルトの名無しさん:2010/03/17(水) 17:56:35
>>714
そうなの? ちょっと興味あるから手出してみようと思ったんだが
716デフォルトの名無しさん:2010/03/17(水) 17:57:35
XNAはとっつきいいけど奥は深い
717デフォルトの名無しさん:2010/03/17(水) 18:03:05
最大化ボタン、最小化ボタンのどちらが押されたか
判断する方法はありますか?sizeChangedイベントで
senderを使うのでしょうか?
718デフォルトの名無しさん:2010/03/17(水) 18:10:33
厳密にボタンが押されたかどうかなの?
最大化した、最小化したじゃなくて?
タイトルバーダブルクリックとかAlt+Spaceからカーソルで選択してEnterとかタスクバーボタンクリックとか

最大化した最小化したならSizeChangedだな
厳密にボタンならイベント公開されてないからWM_NCLBUTTONDOWN辺りを確認することになるかな
719デフォルトの名無しさん:2010/03/17(水) 18:21:18
XNAも結局コピペだけで
3Dゲーム作れたけどな
シェーダーとか凝ったことしようとすると難しいけど
それも他人のソース使えばいいし

勉強したのって座標変換だけだったわw
720デフォルトの名無しさん:2010/03/17(水) 18:22:35
>>717
WindowsState
721デフォルトの名無しさん:2010/03/17(水) 18:23:23
>>719
WPFもあんまりかわらん
722デフォルトの名無しさん:2010/03/17(水) 18:25:54
コピペでプログラマだと?
まあ、モノができりゃ別にいいんだけどな
723デフォルトの名無しさん:2010/03/17(水) 18:26:35
>>718
>>720
そうです。ボタンイベントとして判別したかったのですが、
公開されていないならばsizeChangedイベントで
WindowStateを使ってみようと思います。
よく考えたらそれが定石ですよね…。
724デフォルトの名無しさん:2010/03/17(水) 18:35:01
>>723
ウィンドウハンドル取得して・・・
というやり方もあるにはある
725デフォルトの名無しさん:2010/03/17(水) 18:50:50
>>722
XNA は MS がコピペ用のサンプル沢山用意してくれてるから
そこらへんから色々拾ってくるだけでちょっとしたゲームになるよ。
726デフォルトの名無しさん:2010/03/17(水) 19:02:05
C#でIEコンポーネント使ってFlash使った時、
音声出力を停止させる方法はあるかな?
なければ座標指定で停止ボタンをクリックしたのと
同様の事をしようかとw
727デフォルトの名無しさん:2010/03/17(水) 19:02:59
ものすごくタイムリーなあれ用のツールかな
728デフォルトの名無しさん:2010/03/17(水) 19:06:14
>>727
そのあれですw
729デフォルトの名無しさん:2010/03/17(水) 19:07:44
仕事中にエロフラッシュ見てるんですが音が気になって
730デフォルトの名無しさん:2010/03/17(水) 19:08:52
>>726
耳をふさぐ
731デフォルトの名無しさん:2010/03/17(水) 19:08:58
音声停止ってブランクページナビゲートさせればいいじゃん
問題はページ切替の際のSEをどうするかだな
732デフォルトの名無しさん:2010/03/17(水) 19:10:50
>>728
お前にあとはまかせた
http://codepad.org/Vvwba6du
733デフォルトの名無しさん:2010/03/17(水) 19:12:07
アイコンはこれ使わせてもらった
http://radiko.jp/favicon.ico
734デフォルトの名無しさん:2010/03/17(水) 19:21:30
そういえばWindowsフォームにFlashビデオとか表示できるように ての無理かな?
ブラウザコンポーネント使ってとかじゃない感じ

FLV再生させたいけど難しそう
735デフォルトの名無しさん:2010/03/17(水) 19:22:40
>>732
こんな風に作ってるのか。参考になる。
自分のはまだそっくりそのまま再生するだけw
rtmpdumpとかffmpegも使って録音予約とかしてみたいけど、
その前に公式でアプリ出してくれそうな予感。
736デフォルトの名無しさん:2010/03/17(水) 19:25:14
> radiko.jpのプレーヤー側で、何らかの録音(保存)機能を提供するというのは、
> 権利者との問題で難しいと思いますね。
737デフォルトの名無しさん:2010/03/17(水) 20:05:48
らじこにょ
738デフォルトの名無しさん:2010/03/17(水) 21:24:59
ToolStripMenuItemのコンテキストメニューで選択したアイテムの
インデックス(位置情報)を取得出来る?
739707:2010/03/17(水) 21:31:41
とりあえず呼び出され側のDLLも署名入れてみたらコンパイルは通った
本体C#側にComVisibleをTrueにしてキーを設定したけど
regasmを実行してレジストリに入れようとすると
有効な.netアセンブリじゃないとか言われる
なんでしょうか?
740デフォルトの名無しさん:2010/03/17(水) 21:31:50
Yes/Noクイズ?
741デフォルトの名無しさん:2010/03/17(水) 21:37:13
レジストリには入らないな。
742デフォルトの名無しさん:2010/03/17(水) 21:38:59
プラグイン形式のアプリを作ってるんですが

プラグインに変な事をされない様に制限を掛けたいです
例えば
・プラグインのアセンブリは特定のフォルダしか書き込みできない
・レジストリは読み込めない

こういった制限を課す方法はあるんでしょうか
743デフォルトの名無しさん:2010/03/17(水) 21:48:40
無理。
744デフォルトの名無しさん:2010/03/17(水) 21:48:40
自己解決。こんな感じでコンテキストメニューの入れ子メニューのインデックスを取得できた。
ToolStripMenuItem item = (ToolStripMenuItem)sender;
int index = this.stationToolStripMenuItem.DropDownItems.IndexOf(item);
745デフォルトの名無しさん:2010/03/17(水) 21:57:36
SandBox機能あってもよさそうな気もするんだけどね。
746デフォルトの名無しさん:2010/03/17(水) 22:02:06
一応、こういうのはあるけど、C# からプラグイン用に実装できるのかは知らん。

Designing Applications to Run at a Low Integrity Level
http://msdn.microsoft.com/en-us/library/bb625960.aspx

権限の境界って、プロセスだしね。
747デフォルトの名無しさん:2010/03/17(水) 22:04:30
ここらへんとは別の話?

第6回 コード・アクセス・セキュリティ(その1)
コード・グループとアクセス許可セット
http://www.atmarkit.co.jp/fdotnet/technology/idnfw11_06/idnfw11_06_03.html

.NET 4.0で廃止されるらしいけど
748デフォルトの名無しさん:2010/03/17(水) 22:15:45
http://msdn.microsoft.com/en-us/library/bb763046%28VS.100%29.aspx
別AppDomainで実行すればできるんじゃない?
749707:2010/03/17(水) 22:38:06
自己解決
750デフォルトの名無しさん:2010/03/17(水) 22:40:36
>>749
死ねばいいよ。
751デフォルトの名無しさん:2010/03/17(水) 23:11:37
>742
アセンブリが参照してるもの、Interlop含めて列挙して触らせたくないもの参照してたらアウトとか.
752デフォルトの名無しさん:2010/03/17(水) 23:12:21
>747
(;゚Д゚)(゚Д゚;(゚Д゚;)ナ、ナンダッテー!!
753デフォルトの名無しさん:2010/03/18(木) 00:12:42
>>742
System.AddIn(MAF)を使うとか
754デフォルトの名無しさん:2010/03/18(木) 01:59:38
System.AddInって早くもなかったことにされてるよね
MEF使いやすいし
755デフォルトの名無しさん:2010/03/18(木) 02:47:53
黒歴史はどんどん歴史の彼方に消してくれたほうが助かる

ついでにGoogleに引っかからないようになるとうれしい
756デフォルトの名無しさん:2010/03/18(木) 07:04:55
Managed DirectX
XBAP
LINQ to SQL
System.AddIn
757デフォルトの名無しさん:2010/03/18(木) 07:47:38
どうせ死臭がしそうなものには手をださんし、おそれず色んなものをだして進化・淘汰させて欲しいな.MSには( ゚Д゚)y─┛~~
758デフォルトの名無しさん:2010/03/18(木) 08:10:52
WPF もなんか最近・・・
Silverlight で統一でよかった気もする
759デフォルトの名無しさん:2010/03/18(木) 08:19:57
WPFはいまだにものによってはFormのほうが大幅に軽かったりするところが…
よっぽどの例外以外は同等もしくは上回るぐらいでないと使えんよ。客にも使おうとかいえん・・・
素性はいいと思うんだけどね…
760デフォルトの名無しさん:2010/03/18(木) 08:42:07
WPFのデバッグ、どこでエラーが起きてるかわからないから困る
761デフォルトの名無しさん:2010/03/18(木) 08:43:40
WPFの価値はほとんどマネージコードで書かれてることだと思う
SilverlightってWPFのインターフェイスをネイティブコードでエミュレートしたような糞実装なんだよね
762デフォルトの名無しさん:2010/03/18(木) 08:44:32
Silverlightがメインになると思うよ。
もっとも似たようなもんだから両方勉強しててもそんな大変じゃないと思うけど。
763デフォルトの名無しさん:2010/03/18(木) 08:46:29
実装は置いといて、同じコードでデスクトップクライアントもブラウザ上のクライアントも書けるようにしてほしいよね。
silverlight、WPFのサブセットってわけじゃないのがな。
764デフォルトの名無しさん:2010/03/18(木) 08:50:47
UI以外はほぼ完全なサブセットだよ
UI以外はだけど
765デフォルトの名無しさん:2010/03/18(木) 08:57:22
単にブラウザーで動かすってのじゃなくて、MacとかLinuxで動くこと考えないとダメだしなぁ。
ブラウザー/デスクトップって分け方じゃなくて、Win機能ガッツり使うかクロスプラットフォーム狙うかな感じが。
766デフォルトの名無しさん:2010/03/18(木) 09:02:24
Silverlight 4で、out of browser なら COM 呼べたり、
IL レベルでは WPF と完全互換(ソース共有じゃなくて DLL 参照で同じ DLL 読める)だったり、
今後はほんとに WPF と Silverlight 統合されてくかもしれないなぁとか思った。

.NET 入りの Windows 環境での out of browser なら現在の WPF 相当、
それ以外なら現在の Silverlight 相当のアセンブリ参照して動くような。
767デフォルトの名無しさん:2010/03/18(木) 09:06:38
Silverlight4ではWPFとのアセンブリの互換性は無いよ。
共有したいなら使っていいのはほんとにBCLだけ。XMLや通信すらNG。
UI部分に関しては本当に設計が根本から全く違うので難しい。
768デフォルトの名無しさん:2010/03/18(木) 11:20:26
ぶっちゃけそれだけ違うならWPFをクライアントアプリとして入れ替えるのは難しいなぁ

銀光と互換があれば使えるのに
769デフォルトの名無しさん:2010/03/18(木) 13:44:46
ソースコードレベルではだいたいそのままWPFに持ってこられるよ
でもアセンブリレベルの互換性となると、一応Silverlight4と.NET4では
可能とはいうものの、参照できるDLLが少なすぎて今のところ現実的じゃない
内部のロジックや汎用的なコントロールだけDLLに分離して
ソースレベルで共有するくらいがいいんじゃないかな
Silverlightならブラウザとのインタラクションもやりたくなるだろうし
770デフォルトの名無しさん:2010/03/18(木) 14:54:25
>>ブラウザとのインタラクション
これって知らない言葉だけどどういうことなんですか?
771デフォルトの名無しさん:2010/03/18(木) 15:12:41
ユーザにアプリケーション設定を弄らせたくなかったら
app.configに値を全部設定するのがいいのかな?
772デフォルトの名無しさん:2010/03/18(木) 15:16:04
「ユーザにアプリケーション設定を弄らせる」の定義次第だな
773デフォルトの名無しさん:2010/03/18(木) 16:08:00
>>770
SilverlightからWebページのDOMやスクリプトを操作したり
逆にスクリプトからSilverlight操作したり
774デフォルトの名無しさん:2010/03/18(木) 17:00:44
>>773
ありがとうございます。
なるほど
775デフォルトの名無しさん:2010/03/19(金) 03:42:06
NotifyIconのMouseClickとMouseDoubleClickのイベントハンドラを
2つ登録させてダブルクリックすると両方のイベントが実行されてしまう。
これを回避する手段ある?
776デフォルトの名無しさん:2010/03/19(金) 03:50:51
判断しようもない
クリックイベントの発生をダブルクリック受け付け時間終了まで待つ?
777デフォルトの名無しさん:2010/03/19(金) 03:52:26
どちらかあきらめるしかないんじゃね?
778デフォルトの名無しさん:2010/03/19(金) 03:54:26
即レスどうも。右クリックと左クリックを同じコンテキストメニュー表示してるから
MouseClickイベントは捨てようと思う。
779デフォルトの名無しさん:2010/03/19(金) 03:56:16
それは作りが悪すぎだろ
780デフォルトの名無しさん:2010/03/19(金) 03:57:24
>>779
ごめん。言い間違えた。
MouseClickイベントは残すけど、右クリック時だけ
コンテキストメニュー表示するように修正する。
781デフォルトの名無しさん:2010/03/19(金) 23:29:42
任意のWebサイトにあるjavascriptの関数を呼び出す方法って
InvokeScriptというのを使えばいいの?
782デフォルトの名無しさん:2010/03/19(金) 23:34:03
まあ基本的には
783デフォルトの名無しさん:2010/03/20(土) 00:00:10
>>782
C#からHTMLを読み込んで、その中で定義された
javascriptの関数を実行する場合は下記のような感じなの?
これで実行するとobjにnullが返ってくる。

// C#
WebBrowser web = new WebBrowser();
web.Navigate("http://test.com/index.html");
Object obj = web.Document.InvokeScript("hoge");


// index.htmlファイル
<html>
 <script type="text/javascript" src="hoge.js"></script>
</html>


// hoge.jsファイル
var hoge = function() {
 何かの処理
}

784デフォルトの名無しさん:2010/03/20(土) 00:09:08
> // hoge.jsファイル
> var hoge = function() {
>  何かの処理
> }
これ無名メソッドオブジェクトの変数hogeを作成してるだけ
C#でいうと
var hoge = new Action(() => { 何かの処理 });
でしかなくて、返す値も存在してない
785デフォルトの名無しさん:2010/03/20(土) 01:08:13
UNCパスをローカルパスに変換する方法を教えてください・・・。

現在製作しているプログラムで、指定したフォルダに新しくフォルダを追加する処理があります。
ここでサーバのフォルダをUNCパス形式で指定した場合、フォルダ作成時に例外が発生してしまうのです。

よろしくお願いします・・・。
786デフォルトの名無しさん:2010/03/20(土) 01:13:06
Directory.CreateDirectoryとかは普通にUNCパスにも対応してるが?
787デフォルトの名無しさん:2010/03/20(土) 01:56:42
>>784
どうも。あとjavascriptファイルにグローバル宣言された変数を
参照する事は出来る?
788デフォルトの名無しさん:2010/03/20(土) 02:10:52
>>787
グローバル変数って言ってもwindowオブジェクトにくっ付いてるのでそこから参照すればいいんじゃない?
789デフォルトの名無しさん:2010/03/20(土) 03:14:47
http://pub.ne.jp/arayan/?entry_id=2277623
これ参考にして(というかほとんどまんま)ツイッター投稿アプリ作ってるんだけど

// 投稿内容をURLエンコードする。
string encMes = System.Web.HttpUtility.UrlEncode(mes);
のところでHttpUtilityがエラーになる。

型または名前空間名 'HttpUtility' は名前空間 'System.Web' に存在しません。アセンブリ参照が不足しています。
と出るのだけれど、System.Webの中にないって開発環境が悪いのかな・・・
790デフォルトの名無しさん:2010/03/20(土) 03:17:43
あーすいません解決しました!
791デフォルトの名無しさん:2010/03/20(土) 03:18:39
参照設定してないだけだな
792デフォルトの名無しさん:2010/03/20(土) 03:44:16
>>788
取得方法がさっぱり分からなかった。
InvokerMember使うのかな?
793726:2010/03/20(土) 05:52:29
とりあえず表示するだけの作った。
ソースは汚いので見せられない、というか動かしてみれば
何やってるか一目瞭然だから説明もしないw
http://www.mdn.fm/files/74381_ui1g5/radikalplay.zip
794726:2010/03/20(土) 06:08:06
radikoのリンクされてないページを見まくってるせいか、
色々な所にガードかけられて見れなくなったりとか。
795デフォルトの名無しさん:2010/03/20(土) 06:11:50
>>794
サーバー側が要求ヘッダをちゃんと見るようになってるかもね
まあそのヘッダの中身も公式のjsみれば載ってるのであれなんだがw
796726:2010/03/20(土) 06:27:37
>>795
トップページのソース見てjsとかcssをたどって行くと面白いね。
あと下のURLは明らかに開発者用ページだったけどもう見れない。
http://radiko.jp/epg/epgapi.php

アップしたアプリはバグだらけだな…。停止して表示したらブランクページが
表示されちゃってるし。Flashが制御出来ないからブランクページに
飛ばして音声停止させてるのがバレバレw
797デフォルトの名無しさん:2010/03/20(土) 06:37:21
テキストボックス等の文字数が設定した文字数以上だったら上限分までの文字列を扱いたいのですが・・
たとえばlengthが90以上だったら勝手に1文字目から90文字までの文字列に減らして表示させたりとか。
わかりにくかったらごめんなさい。しらべても単なるMaxlengthしかでてこなくて
798デフォルトの名無しさん:2010/03/20(土) 06:39:54
ほんとにわかりにくい
799デフォルトの名無しさん:2010/03/20(土) 06:40:41
>>793
デザインいいね
800デフォルトの名無しさん:2010/03/20(土) 06:51:41
>>797は文字を減らしたいんじゃないのか
801726:2010/03/20(土) 07:00:59
>>799
表示内容は公式サイトそのままなんですけど…
802デフォルトの名無しさん:2010/03/20(土) 08:35:38
>>793
なんかオシャレだ!!!
FA系がメインだからこういうオシャレな外観のやつ作りてぇ・・・

テスト版だから動かないのかもしれないけど
起動したらエラーが出たのでとりあえず

---------------------------
Web ページからのメッセージ
---------------------------
エラーが発生したため音声が再生できません
---------------------------
OK
---------------------------

これが表示されたよ
803デフォルトの名無しさん:2010/03/20(土) 08:37:17
>エラーが発生したため音声が再生できません
メッセージボックスの表示ならエリア外と判断されてる
公式トップの左上のロゴの下にエリア表示があるので
確認してみ
804デフォルトの名無しさん:2010/03/20(土) 08:57:14
>>803
ありがとう
確認したら地域外じゃねぇかorz
田舎すぎてわらえねぇ・・・・

あとエリア外のエラーメッセージボックスが出た後、
再生状態で最小化させて右クリックで放送局とかのチェックいじりまわってたらこんなの出た
放送局を現在の選択と同じものクリックしたりしてたらなりやすいみたい
発生するときはチェック変更後 放送局のサブメニュー表示させようとする時

System.IndexOutOfRangeException: インデックスが配列の境界外です。
場所 WindowsFormsApplication.RadikalPlayer.stationToolStripMenuItem_Click(Object sender, EventArgs e)
場所 System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
場所 System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
場所 System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
場所 System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
場所 System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
場所 System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
場所 System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
場所 System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
場所 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
場所 System.Windows.Forms.Control.WndProc(Message& m)
場所 System.Windows.Forms.ScrollableControl.WndProc(Message& m)
場所 System.Windows.Forms.ToolStrip.WndProc(Message& m)
場所 System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
場所 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
場所 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
場所 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

メッセージはハンドルされてない例外の時の 詳細とかが出るやつ
805726:2010/03/20(土) 09:04:07
>>802-804
わざわざ報告ありがとう。そしてスレ汚して申し訳ない。
地域外の場合は漏れなく関東地区に設定してしまってるから、
予期しない動きする。本来ガードかけるべき所だよね…。
806デフォルトの名無しさん:2010/03/20(土) 09:07:08
こういうツールは公式で出してくれるのが一番なんだけどなw
エリア判定を嫌ってか1分くらい鯖が応答しなくてタイムアウトになるとか
改変されるからツール作る側は要らぬアップデートしないといけないしな
807デフォルトの名無しさん:2010/03/20(土) 10:49:43
あぁActiveReport位使い勝手がよくて無料のツールがほしい・・・
動的にFetch行の高さが変えられてページからはみ出るときは次のページに出してくれるツールってないのかねぇ…

帳票.netは良さそうだけどそれができなうっぽいのが唯一の悩み
808785:2010/03/20(土) 22:01:41
>>786
それが「アクセスが許可されていません」とか言う例外が発生して作成できないのです。
自分のPCに共有フォルダを作成し、そのフォルダに対してUNCパスで実行した場合にエラーが発生します。
【\\host名\C$\〜〜〜】という書き方や、ローカルパスなら大丈夫なんですが・・・。
809デフォルトの名無しさん:2010/03/20(土) 22:04:31
権限がないだけじゃないの?

cacls/icaclsとか使って権限調べてみた?
810デフォルトの名無しさん:2010/03/20(土) 22:15:58
単純に
dir > \\UNCPATH\test.out
してみればいい。
811デフォルトの名無しさん:2010/03/20(土) 22:33:28
>>807
おまいが作って無料で配布してくれ。
812デフォルトの名無しさん:2010/03/20(土) 23:36:31
メッセージボックス出してOK押したら
Form1が表示されちゃうんだけど
どうすれば終了出来るの?
代わりにDisposeすると例外が出る。

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

MessageBox.Show("test", "tset");
Application.Exit();
}
}
}
813デフォルトの名無しさん:2010/03/20(土) 23:40:43
何がしたいんだよ。
814デフォルトの名無しさん:2010/03/20(土) 23:41:58
>>813
何時間2ちゃんにかぶりついているんだ?
そろそろ死ねよ
815デフォルトの名無しさん:2010/03/20(土) 23:44:23
>>812
Application.Run()する前にApplication.Exit()しても意味ないから。
816デフォルトの名無しさん:2010/03/20(土) 23:45:34
>>812 23:36:31
>>813 23:40:43 前との差が4分ちょい
>>814 23:41:58 前との差が1分チョイ

・・・
817デフォルトの名無しさん:2010/03/20(土) 23:51:10
Ruby最強
818デフォルトの名無しさん:2010/03/20(土) 23:56:02
>>815
言われてみればそのような。もう少し調べてみる。
819デフォルトの名無しさん:2010/03/20(土) 23:58:13
>>818
そのForm1はどうやって呼ばれてるんだ?
SubMainからApplicationRun(New Form1()) みたく呼ばれてるの?
820デフォルトの名無しさん:2010/03/21(日) 00:01:20
>>819
Program.csという所にこう書いてある。
何もいじってないけど。

namespace WindowsFormsApplication
{
static class Program
{
/// <summary>
/// アプリケーションのメイン エントリ ポイントです。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
821デフォルトの名無しさん:2010/03/21(日) 00:12:30
Application.Run する前にメッセージボックス出せばいいじゃん。
822デフォルトの名無しさん:2010/03/21(日) 00:14:37
変数の値が変更されたら
自動でform.Textの値を変更してくれるのは
どう書けばいいの?
823デフォルトの名無しさん:2010/03/21(日) 00:20:51
ふらっとC#,C♯,C#(初心者用) Part57
http://pc12.2ch.net/test/read.cgi/tech/1269018938/38

38 名前:デフォルトの名無しさん[sage] 投稿日:2010/03/20(土) 20:39:06
で、結局、変数の値が変更されたら
自動でform.Textの値を変更してくれるのは
どう書けばいいの?

824デフォルトの名無しさん:2010/03/21(日) 00:23:20
>>823
変数ってなんだ?
825デフォルトの名無しさん:2010/03/21(日) 00:25:10
お前まだいたのかwwwwww
826デフォルトの名無しさん:2010/03/21(日) 00:26:33
>>823
だからなに?
827デフォルトの名無しさん:2010/03/21(日) 00:28:41
向こうはバカばっかりで答えてくれないのでこっちにきた
こっちの人ならすぐに答えられるでしょ?
ではよろしく
828デフォルトの名無しさん:2010/03/21(日) 00:30:00
>827
バカ呼ばわりする前に他人がわかるような質問にする努力をしなよ
回答する人はエスパーじゃないから
829デフォルトの名無しさん:2010/03/21(日) 00:31:20
>>824
例えばこんな感じ

private in index=0;

indexが変更されるとその値を表示したいんだけど
どうすればいいかわからない
TextChangeイベントみたいなのが作れたラインだけど
830デフォルトの名無しさん:2010/03/21(日) 00:33:58
>>829
プロパティにしたらだめなん?
831デフォルトの名無しさん:2010/03/21(日) 00:36:09
まだわからなかったのかよw
832デフォルトの名無しさん:2010/03/21(日) 00:37:21
private in

突っ込むべきなのか悩む微妙なミスw
833デフォルトの名無しさん:2010/03/21(日) 00:37:33

public int Index
{
 set
  {
  
  _index = value;
  hoge();
  }
}
private int _index =0;

private void hoge()
{
 MessageBox.Show(_index.ToString());
}

_indexを書き換えるときは
private void Test()
{
 this.Index = 5;
}


簡単にしようと思ったらこんなんとか?
834デフォルトの名無しさん:2010/03/21(日) 00:38:39
>>833
それをイベントでやりたいんです
もっといろんな場面で使える汎用的なものを作りたいので
835デフォルトの名無しさん:2010/03/21(日) 00:39:53
デリゲとか難しく考えずに適当にevent作って raiseさせたらいいじゃん
836デフォルトの名無しさん:2010/03/21(日) 00:41:20
プロパティで表現しようとする人が多いけど
そういうのって一般的なやり方なんですか?
私は独学でやってるだけなので
他の人がどうやってるか知りませんけど

プロパティって使い勝手は確かにいいけど
本来そういう使い方をするためにあるわけじゃないし
837デフォルトの名無しさん:2010/03/21(日) 00:42:43
>>835
それがわからないんですよね
TextChangedイベントがどういう風に実行されているのか
それが知りたいんですけど
838デフォルトの名無しさん:2010/03/21(日) 00:43:56
>>836
プロパティの用途はさまざまです。
(中略)
データが変更されたときに、イベントを発行したり
他のフィールド値を変更したりするなど、アクションを実行できます。
839デフォルトの名無しさん:2010/03/21(日) 00:47:57
こんな感じか?
http://codepad.org/nVPmlBfD
840デフォルトの名無しさん:2010/03/21(日) 01:02:56
>>834
依存プロパティを作っとけ。
841デフォルトの名無しさん:2010/03/21(日) 01:03:37
Loadイベントでやるといい。
842デフォルトの名無しさん:2010/03/21(日) 01:04:18
うお誤爆。
843デフォルトの名無しさん:2010/03/21(日) 01:06:18
>>839
ありがとうございます
それの呼び出し側のクラスがどう書けばいいかわからない
何がどうなってるのか・・・ほんと難しい
こんな感じで呼び出すんですか?わかりません
frm1.IndexChanged += new sampleDelegate(object sender,int idx);
844デフォルトの名無しさん:2010/03/21(日) 01:08:23
>>839
これはもちろんINotifyPropertyChangedでやれって皮肉だよね
845デフォルトの名無しさん:2010/03/21(日) 01:14:05
>>843
お話に並んだろ
ほとんど知らないにしても話にならん
1〜10まで話さないと判らんやつは初心者スレへいけ
846デフォルトの名無しさん:2010/03/21(日) 01:15:17
どこかにイベントやデリゲートの例がたくさん載っているとこないですか?
どこも一部の使い方しか載ってなくて
そもそもイベントやデリゲートでどういう構文が書けるのかがわからない

OnIndexChanged
この変数の名前にOnをつけたのはなぜですか?
理由があると思うんだけどそういうことを細かく説明しているところないでしょうか?
847デフォルトの名無しさん:2010/03/21(日) 01:16:34
>>845
初心者スレは基地外しかいないので話にならないんです
848デフォルトの名無しさん:2010/03/21(日) 01:24:42
おまえ自覚ないのか
849デフォルトの名無しさん:2010/03/21(日) 01:31:38
850デフォルトの名無しさん:2010/03/21(日) 01:33:49
>>849
おまえがいけ
851デフォルトの名無しさん:2010/03/21(日) 01:43:42
荒らしの相手するなよ
852デフォルトの名無しさん:2010/03/21(日) 01:50:57
>>846
OnでもInでもAtでもいい。意味がわかるならな。
853デフォルトの名無しさん:2010/03/21(日) 08:33:43
なんで1:50で急に終わったのか?
854デフォルトの名無しさん:2010/03/21(日) 09:41:45
OnIndexChangedて変数名じゃないでしょ。
慣例的にはインデックスの変更通知を発生させるメソッド名だよね。
855デフォルトの名無しさん:2010/03/21(日) 12:38:56
+=であたかも代入しているように見えたから勘違いしたんじゃね
856デフォルトの名無しさん:2010/03/21(日) 16:23:00
http://making1234.blog105.fc2.com/blog-entry-126.html
このページに書かれた手順に従いC++でDLLを作成しました。
しかし、C#から関数を呼び出すとエントリポイントが見つかりません。というエラーがでます。
どうしたら呼び出せますでしょうか?
857デフォルトの名無しさん:2010/03/21(日) 16:32:42
まずCOMを学びます
858デフォルトの名無しさん:2010/03/21(日) 16:33:43
まず、dumpbinとかDependency Walkerとか使って、
ちゃんと関数がエクスポートされてるか確認しよう。
859デフォルトの名無しさん:2010/03/21(日) 16:48:20
dumpbin /exports hoge.dll で調べてみるのが基本。
860デフォルトの名無しさん:2010/03/21(日) 16:51:23
extern "C" が無いのが怪しいな。
861デフォルトの名無しさん:2010/03/21(日) 16:52:31
.def に @1 とかいらないんだっけ?
862デフォルトの名無しさん:2010/03/21(日) 16:58:54
defを使うのをやめて、
extern "C" {

__declspec(dllexport) int __stdcall MyFunc(){

}
}
としました。dumpbinで確認したところ以下のようになりました。

1 0 000110A0 _MyFunc@0 = @ILT+155(_MyMbox2@0)
C#側 [DllImport("Mydll",EntryPoint="MyFunc")]
public static extern int MyFunc();として呼び出すと無事成功しました。しかし、エントリポイントを
書かないとうまくいきません。これはなぜですか?
863デフォルトの名無しさん:2010/03/21(日) 17:10:30
>>861
今は逆にそれは非推奨
864デフォルトの名無しさん:2010/03/21(日) 17:11:46
VS2008+.net3.5だとEntryPointはいらないようだが、何を使ってます?
865デフォルトの名無しさん:2010/03/21(日) 17:13:36
>>862以外にほかにも書いてるところあるのでいろいろ見て回った方がいいんじゃね?
866デフォルトの名無しさん:2010/03/21(日) 17:26:37
VC++側では.netは使ってません。ちなみに2008EEです。
VC#のほうは2008EE .net 3.5です。

今関数で実験してたんですが、本当はクラスを呼び出したいんですよね・・・
この方法じゃできないですよね?ラッパー?とかしないといけない?
867デフォルトの名無しさん:2010/03/21(日) 17:28:14
クラスは無理。クラスのメソッドをエクスポートする形にしないと。
868デフォルトの名無しさん:2010/03/21(日) 17:30:53
>>866
クラスライブラリじゃだめなの?
まあ難読化しても中身みえちゃうけど
869デフォルトの名無しさん:2010/03/21(日) 17:36:19
チョイ長いけど、P/InvokeでC++クラスの使用。
.ThisCallやnew/delete用のファクトリやデファクトリも必要になる。

 [DllImport("test4s.dll", CharSet=CharSet.Ansi, CallingConvention=CallingConvention.Cdecl, EntryPoint = "?getInstance@Hello@@SAPAV1@XZ")]
 public static extern IntPtr getInstance();
 [DllImport("test4s.dll", CharSet=CharSet.Ansi, CallingConvention=CallingConvention.ThisCall, EntryPoint = "?free@Hello@@QAEXXZ")]
 public static extern void free(IntPtr ts);
 [DllImport("test4s.dll", CharSet=CharSet.Ansi, CallingConvention=CallingConvention.ThisCall, EntryPoint = "?say@Hello@@QAEXXZ")]
 public static extern void say(IntPtr ts);
 [DllImport("test4s.dll", CharSet=CharSet.Ansi, CallingConvention=CallingConvention.ThisCall, EntryPoint = "?setName@Hello@@QAEXPBD@Z")]
 public static extern void setName(IntPtr ts, string name);
 [DllImport("test4s.dll", CharSet=CharSet.Ansi, CallingConvention=CallingConvention.ThisCall, EntryPoint = "?getName@Hello@@QAEPBDXZ")]
 public static extern string getName(IntPtr ts);

 static void Main() {
   IntPtr h = getInstance();
   setName(h, "KAMEHAMEHA");
   say(h);
   Console.WriteLine(getName(h));
   free(h);
 }
870デフォルトの名無しさん:2010/03/21(日) 17:39:03
普通はC++/CLIでラッパーを作るかCOMにするかだね。
871デフォルトの名無しさん:2010/03/21(日) 17:41:32
P/Invokeなラッパーもありだよ。
872デフォルトの名無しさん:2010/03/21(日) 18:01:20
どれが一番楽ですか?
元のネイティブコードの保守がしやすい方法がよいのですが
873デフォルトの名無しさん:2010/03/21(日) 18:06:08
自分で考えろ。
874デフォルトの名無しさん:2010/03/21(日) 18:06:10
>>872
発想を変えてdllじゃなくて独立したサービスとして動く物にして
httpなどで通信するとかw
875デフォルトの名無しさん:2010/03/21(日) 18:20:56
スケーラビリティありそうだな
876デフォルトの名無しさん:2010/03/21(日) 18:38:18
IISでサービスをホストするのもありだな。
エンタープライズ・アプリケーションっぽくなるぞw
877デフォルトの名無しさん:2010/03/21(日) 18:43:04
今となってはVC++でGUIは書きたくないしねえ

余力があればwebサーバーぽく動的にhtmlを吐き出すようなモードも
搭載すれば最悪ブラウザから使える
878デフォルトの名無しさん:2010/03/21(日) 18:46:50
そもそもC#でDLLを作ればいいじゃん・・・という話ではないの?
856ではC++でDLLを作りましたとあるが,既にあるC++のDLLを利用したいの?
879デフォルトの名無しさん:2010/03/21(日) 18:47:43
そのためのC++/CLIだろう
880デフォルトの名無しさん:2010/03/21(日) 18:50:49
>>878
C++でDLLっていうからには速度、過去の資産の活用、コード隠匿だろうからねえ
クラスライブラリだとどうしてもってことじゃないの?
881デフォルトの名無しさん:2010/03/21(日) 19:00:03
しかし,今までの話の流れからはレスポンスとかセキュリティとか・・・
そういったクリティカルな事情は読み取れないんだよな.
882デフォルトの名無しさん:2010/03/21(日) 19:09:42
WaveOutOpenとかのマルチメディア系の処理を行っていたC++のアプリの
GUIのパワーアップを行いたくて・・・

VC++だといろいろGUI周りがめんどくさいので、C#に意向したいという意図があるんです
883デフォルトの名無しさん:2010/03/21(日) 19:11:40
C#で書いたGUI
↓↑
httpを返すローカルアプリ
↓↑
よくわからんけどdll
884デフォルトの名無しさん:2010/03/21(日) 19:14:04
C++で既存のソースがあるなら、C++/CLI一択だろ。
885デフォルトの名無しさん:2010/03/21(日) 19:15:12
C++/CLIってメリットがさっぱりわからん
886デフォルトの名無しさん:2010/03/21(日) 19:22:29
おれならP/Invokeかなぁ。
887デフォルトの名無しさん:2010/03/21(日) 19:27:10
>>885
C++/CLI と比べて C# のメリットが説明できるなら C# 使えばいい。
どっちも優劣つけれないなら、どっちつかっても一緒。
888デフォルトの名無しさん:2010/03/21(日) 19:27:17
PictureBoxのMouseUpイベントの中で
PictureBox.Imageとリソースに埋め込んだ画像(test)を
比較する方法は↓だと駄目なの?

PictureBox pic = (PictureBox)sender;
if(pic.Image == Properties.Resources.test){
}
889デフォルトの名無しさん:2010/03/21(日) 19:30:29
CLRのリソースの画像は取得のたびに新しいインスタンスを作っているので一致しない。
Win32のリソースとは動作が異なる。
890デフォルトの名無しさん:2010/03/21(日) 19:34:04
>>889
そうなんだ…。そうするとタグ情報か何かで識別するしかないか。
PictureBox.Imageでリソースのタグ情報取得出来る?
891デフォルトの名無しさん:2010/03/21(日) 19:39:41
PropertyItemsとかで取得できるけど
普通にResources.testをどっかにキャッシュしとけばいいと思う
892デフォルトの名無しさん:2010/03/21(日) 20:12:42
>>891
PropertiesItemsはIDが必要みたいで面倒なので、
保持しておく方法で実装してみる。
893デフォルトの名無しさん:2010/03/21(日) 21:57:32
これからプログラミングを始めたいのですが、C#は最初に学習する言語としてオススメでしょうか?
やはりCやC++から学び始めた方がいいかな、とも思うんですがどうでしょう・・・。
最終的に作りたいのはネットゲームですが、これは本当に何年も後のことで、目先には考えていません。
894デフォルトの名無しさん:2010/03/21(日) 22:00:26
>>893
c#で初めてみるのもいいんじゃないかな?
c#って書きやすいのでC/C++も勉強したいたなc#で書いたコード
をC/C++で実現するにはどうすればいいか・・・で学習するのも手

ネットゲームが目標ならネットワークの知識も居るし専ブラでも作ってみるとか
895デフォルトの名無しさん:2010/03/21(日) 22:00:48
初心者向けの情報量でいえばJavaだな
JavaできればC#はすぐできるしC/C++も馴染みやすい
C#はJavaやC++から移行する人のための言語なので微妙
896デフォルトの名無しさん:2010/03/21(日) 22:01:15
>C/C++も勉強したいたな
C/C++も勉強したい場合は
897デフォルトの名無しさん:2010/03/21(日) 22:02:55
JavaならC#の方が最初は楽だと思う。
898デフォルトの名無しさん:2010/03/21(日) 22:03:17
C++ は必要になったらやればいい。
C は C# でつまづいたときにやるといい。

俺的にはおすすめ。
899デフォルトの名無しさん:2010/03/21(日) 22:04:43
オブジェクト指向とか体系的に学ぶにはJavaの方がレールが整ってていいと思うけど
C#の方が目に見えるものが簡単に作れるので飽きにくいかも
900デフォルトの名無しさん:2010/03/21(日) 22:07:02
>>894-899
ありがとうございました。
意見として一番多いのはC#ですね。
Javaという意見もとても興味深いのですが、反対意見もありますし、C#から初めてみようと思います。

どの言語から始めた方がいいか・・・と言う議論は、色んなところで色んな議論が行われても結論を出すのが難しいことなので、実際にやってみて自分が思う答えを見つけます。
901デフォルトの名無しさん:2010/03/21(日) 22:08:31
だってC#スレだし。
902デフォルトの名無しさん:2010/03/21(日) 22:12:09
普通の人はC++じゃなければダメという状況には出くわさないな
903デフォルトの名無しさん:2010/03/21(日) 22:12:54
JavaとC#はほとんど同じでどちらかできれば両方できるからあえてC#スレでJavaを勧める意味はあまり無いし
C++が嫌だからC#があるんだからC#スレでC++を勧めるわけがないし
904デフォルトの名無しさん:2010/03/21(日) 22:14:23
そこでF#
905デフォルトの名無しさん:2010/03/21(日) 22:26:40
文法とか基本的なデータ構造レベルはかなり似通ってるから
Java 先でも C# 先でも両方そこそこ書けるようにはなるよね。

ただ実際に何か作ろうってなると .NET とか Spring とかフレームワークの知識が主体になってくるからなぁ。
906デフォルトの名無しさん:2010/03/21(日) 22:27:29
.NETはフレームワークなんて呼べるもんじゃないけどな。
907デフォルトの名無しさん:2010/03/21(日) 22:28:25
>>905
Cのころはよく使うアルゴリズムをいろいろ知ってて自前で実装するか
他所から借りてくるかだったけど、最近はフレームワークという道具というか部品の
使い方をどれだけ知ってるかだからねえ
908デフォルトの名無しさん:2010/03/21(日) 22:30:55
昔と違ってソートのアルゴリズムが何で実装されるかとか気にしなくなったな
だってSort()しかないしね!
909デフォルトの名無しさん:2010/03/21(日) 22:35:19
自前で実装すると大概遅いしな。

あと最近思うのは、作ろうと思ったものって大概誰かが実装してるという。
これは結構悲しい。
910デフォルトの名無しさん:2010/03/21(日) 22:41:35
treeviewのNodeMouseClickイベントでノードが選択されたかどうかって確認した方がいいの?
もしそうならsenderもしくはeで渡ってきた情報で知ることが可能?
911デフォルトの名無しさん:2010/03/21(日) 22:44:31
>>910
正直そのイベントは使ったことないな
大抵AfterSelectかBeforeSelectで片が付く
912デフォルトの名無しさん:2010/03/21(日) 22:45:17
可能かどうかぐらいはまずイベント引数のメンバ確認しようぜー
913デフォルトの名無しさん:2010/03/21(日) 22:47:33
>>911
そっちか

>>912
senderの方はキャストするしかないのか
914デフォルトの名無しさん:2010/03/21(日) 22:53:12
>>908
中身クイックソートだし安定ソートが欲しいと思うことはたまにあるよ。
915デフォルトの名無しさん:2010/03/21(日) 22:54:11
>>914
EnumerableのOrderByが安定ソート
916デフォルトの名無しさん:2010/03/21(日) 22:58:26
>>915
おお、今度安定ソートが欲しくなったらこれ使うよ。
以前安定ソートが欲しかったときのコードは.NET1.1だったので置き換えようがないけどね。
917デフォルトの名無しさん:2010/03/21(日) 23:07:41
IListに対する破壊的ソートが欲しい今日この頃
918デフォルトの名無しさん:2010/03/21(日) 23:13:11
var tmp = list.OrderBy(x => x).ToArray();
list.Clear();
list.AddRange(tmp);
くらいか
919デフォルトの名無しさん:2010/03/22(月) 00:04:14
次スレは58か?
それとこのスレはふらっとからの流用だからテンプレ注意
920デフォルトの名無しさん:2010/03/22(月) 01:03:40
次は58だと思うけど、もっと前から狂ってたら分からない。

Part55、実質56のPart55、実質56の重複のPart55(重複理由で削除済み)、実質57のPart55(ここ)
と4種類のPart55があった。
921デフォルトの名無しさん:2010/03/22(月) 02:12:13
デスクトップの位置を保存するためにリソースを使って下記のように実装したのですが、
※の箇所でFormが一瞬デスクトップ座標(0, 0)に表示されて終了してしまいます。
※の行を消すとその位置でウィンドウが消えるのですが、他の箇所のコーディングを
見直した方がいいでしょうか?

private void Form_FormClosing(object sender, FormClosingEventArgs e)
{
 Properties.Settings.Default.FormLocation = this.DesktopLocation; // ※
 Properties.Settings.Default.Save();
}
922デフォルトの名無しさん:2010/03/22(月) 02:39:32
何故なのか不明ですが、※の行が無くても位置が保存されてました…。
Properties.Settings.Default.FormLocationの値がthis.DesktopLocationを
代入する前から同じ値になっていました。
923デフォルトの名無しさん:2010/03/22(月) 06:16:56
>>59-62 が真のテンプレ
924デフォルトの名無しさん:2010/03/22(月) 15:48:28
質問です。
// こういう親クラスがあるとします。
abstract class SomeClass {
  private SomeComponent someComponent; // これへの setter は作りたくない、コンストラクト時に受け取りたい
  protected SomeClass(SomeComponent s) {
    this.someComponent = s;
  }
}
// この親クラスが使っている SomeComponent を継承した DerivedComponent というクラスがあるとする。
// 親クラスを継承した子クラスでは DerivedComponent だけに定義されたメソッド等を使いたいので、子クラスでは DerivedComponent 型としてのメンバーを持つ
// コンパイルが通らない(1)
class SomeDerivedClass {
  private DerivedComponent derivedComponent = new DerivedComponent();
  public SomeDerivedClass() : base(this.derivedComponent) { // コンストラクトの順番的に初期化子を使ったメンバを渡すのは無理らしい事がわかった。
  }
}
// コンパイルが通らない(2)
class SomeDerivedClass {
  private DerivedComponent derivedComponent;
  public SomeDerivedClass() : base(this.derivedComponent = new DerivedComponent()) { // 別に初期化子を使わなくても、そもそもメンバを渡すのが無理らしいとわかった。
  }
}
// これはコンパイルは通るけど嫌
class SomeDerivedClass {
  private DerivedComponent derivedComponent;
  public SomeDerivedClass() : base(new SomeDerivedComponent()) {
    this.derivedComponent = (DerivedComponent)base.someComponent; // ここでキャストしなくちゃいけないのが嫌だ。
  }
}
何かいい書き方はないでしょうか?
925デフォルトの名無しさん:2010/03/22(月) 15:57:17
// これはコンパイルは通るけど嫌
class SomeDerivedClass {
  private DerivedComponent derivedComponent;
  public SomeDerivedClass(DerivedComponent derivedComponent) : base(derivedComponent) {
    this.derivedComponent = (DerivedComponent)base.someComponent; // ここでキャストしなくちゃいけないのが嫌だ。
  }
}
926デフォルトの名無しさん:2010/03/22(月) 15:58:00
間違えて送信した

class SomeDerivedClass {
  private DerivedComponent derivedComponent;
  public SomeDerivedClass(DerivedComponent derivedComponent) : base(derivedComponent) {
    this.derivedComponent = derivedComponent;
  }
927デフォルトの名無しさん:2010/03/22(月) 15:58:57
class SomeDerivedClass {
    private DerivedComponent derivedComponent {
        get { return (DerivedComponent)base.SomeComponent; }
    }
}
フィールドに持つ必要がないという考え方
928デフォルトの名無しさん:2010/03/22(月) 16:05:37
class Program
{
static void Main(string[] args)
{
SomeDerivedClass derivedClass = new SomeDerivedClass(new DerivedComponent());
}
}
abstract class SomeClass
{
private SomeComponent someComponent;
protected SomeClass(SomeComponent s)
{
this.someComponent = s;
}
}
class SomeDerivedClass : SomeClass
{
private DerivedComponent derivedComponent = new DerivedComponent();
public SomeDerivedClass(DerivedComponent derivedComponent)
: base(derivedComponent)
{
this.derivedComponent = derivedComponent;
}
}
public class SomeComponent
{
}
public class DerivedComponent : SomeComponent
{
}
929デフォルトの名無しさん:2010/03/22(月) 16:28:43
>// これはコンパイルは通るけど嫌
>// ここでキャストしなくちゃいけないのが嫌だ。

何がどう嫌でコンパイラに逆らって、そして何がしたいのか・・・
サッパリ理解できない。
930924:2010/03/22(月) 16:31:07
>>925-928
ありがとう。>>926 の方式を見落としてた。
>>926 方式で更にコンストラクタを protected にして、代わりに public static なインスタンス生成メソッドを作る事にした。
サンクスサンクス。
931924:2010/03/22(月) 16:37:14
>>929
SomeClass の実装内容が
コンストラクタで受け取った物そのものじゃないオブジェクトを getter で返すようになったりしたら InvalidCastException 投げるようになってしまう事。
考えられる例として、SomeClass が受け取った SomeComponent を wrapper とか decorator で包んで保持するように変更される可能性などがある。
932929:2010/03/22(月) 16:42:09
>>931
おい、>>926>>924と別人だったのかよ!
933924:2010/03/22(月) 17:44:35
>>932
多分 >>925=>>926 だと思われ。校正途中でカキコしたんだと思う。
934デフォルトの名無しさん:2010/03/22(月) 17:48:43
ミックスインでやるようなことを継承で実現しようとしてグダグダになってる感じだね。
935デフォルトの名無しさん:2010/03/22(月) 18:33:50
自作自演かと思ってたよw
936デフォルトの名無しさん:2010/03/22(月) 18:47:08
まあ普通にやるとこんなんかねー
class Derived {
    public Derived() : this(new DerivedComponent()) {
    }
    private Derived(DerivedComponent component) : base(component) {
        this.component = component;
    }
}
937デフォルトの名無しさん:2010/03/22(月) 19:49:35
あれから少し更新してみた。
http://www.mdn.fm/files/75173_nrjbm/radikalplayer.zip

誰か画面のリンクを既定ブラウザで開く方法知ってたら教えてください…。
WebBrowser.Document.Clickにイベントハンドラ追加して
ジャックしようかと思ったけど、hrefの絶対パス指定しか開けない。
タグの解析なんて自分には出来ない…。
938929:2010/03/22(月) 20:18:02
もし仕事でC#プログラミングするなら、多段継承や多重継承っぽいことは避けた方がいいよ〜。
きちんとしたクラス設計を飛ばしてコーディングすることも、要らない継承を増やしてしまう原因だ。


多重継承は、複雑な継承関係でそのプログラマ本人以外にはメンテ不能なコードを実現する、
テロの道具になり得るのは良く知られているよね。
実際テロじゃなくても、半年経ったら本人もメンテできなくなって、上司や客先の下で拉致監禁。
そして廃人になったり自殺とか・・・。少し前のC++プログラマには多かったと聞く。

コーディング規約で制約を設けないと高品質なプログラムが生まれないということで、Javaでも
非推奨になったし。 C++は放置でSE/PGの自殺or廃人化も歓迎な野良言語でいいと思うw
939デフォルトの名無しさん:2010/03/22(月) 20:31:30
でも既存コントロールをベースにカスタマイズしていこうとすると多重継承ないのが困る
インターフェースだといちいち同じ事書かないとならんし
940デフォルトの名無しさん:2010/03/22(月) 20:35:36
>>939
コンストラクターで多重継承できなかったやつのインスタンスを作って
それをpublicで公開しちゃうとか?

.を一つはさむけど
941デフォルトの名無しさん:2010/03/22(月) 20:39:18
それは無いだろw
942デフォルトの名無しさん:2010/03/22(月) 20:40:50
カスタムコントロールなんて散々作ってるけど、
多重継承があったらいいのになんて思ったこと一度もないぞ。

どんなことやろうとしたらそんな風に思うんだろう。
943デフォルトの名無しさん:2010/03/22(月) 20:41:42
わがままだな
944デフォルトの名無しさん:2010/03/22(月) 20:48:59
>>942
たまーにあるけどね
これとこれを継承したいなあ・・・とか
945デフォルトの名無しさん:2010/03/22(月) 20:49:08
>>940
むしろそのインスタンスはprivateにして
必要最小限のメソッドだけ外側のクラスに宣言して公開するようにしておけ。
946デフォルトの名無しさん:2010/03/22(月) 20:51:08
>>937
System.Diagnostics.Process.Start じゃダメ?
947デフォルトの名無しさん:2010/03/22(月) 20:53:17
>>924 のabstract classの他のメンバーが書いて無いからどの方法がベストかは分からないが、
interfaceか包含かどちらかで良いように思う。

それより同じものを2重に持つほうがよほど汚いと思うけどな。
private SomeComponent someComponent
private DerivedComponent derivedComponent
948デフォルトの名無しさん:2010/03/22(月) 20:59:07
次スレのテンプレで下記入れておいて

コードの量が多い場合は下記サイトを使うなどしたほうがいいかも

http://codepad.org/

コードを貼り付けてRun codeのチェックをはずしてsubmitボタンを押すと
コードを鯖側にアップして専用のアドレスが発行されます。
949デフォルトの名無しさん:2010/03/22(月) 21:04:02
2130分ごろ立てます
950デフォルトの名無しさん:2010/03/22(月) 21:04:12
>>946
ターゲットとなるURLが取得出来れば引数に渡すだけでいいんだけど、
そのURLがどうしても抽出出来なくて。
951デフォルトの名無しさん:2010/03/22(月) 21:13:16
>>944
男性クラスと女性クラスからの継承とか?

しかし多重継承って、多重人格なオブジェクトを生成するためのようなクラスだぜ?
使い方も無制限だし、実務じゃ危なくて使えねーよw 所詮は学者の産物。
952デフォルトの名無しさん:2010/03/22(月) 21:16:46
ロールという概念を知らないのですね
953デフォルトの名無しさん:2010/03/22(月) 21:20:32
〜able を実装で、必要であれば 〜Impl を委譲するってやり方が好き。
954デフォルトの名無しさん:2010/03/22(月) 21:21:49
>>953
サンプル書いて
955デフォルトの名無しさん:2010/03/22(月) 21:35:07
>>952
人格や法人格などの「格」はユニークだから、ロールという多面性はクラスの
多重継承では実現しないアプローチです。使うのはインターフェースかな。
956デフォルトの名無しさん:2010/03/22(月) 21:41:45
オブジェクト指向キチガイにスレが乗っ取られますた。
957デフォルトの名無しさん:2010/03/22(月) 21:42:39
C#, C♯, C#相談室 Part58
http://pc12.2ch.net/test/read.cgi/tech/1269261310/

立てたけど前スレの部分張り替え間違えた
958デフォルトの名無しさん:2010/03/22(月) 22:20:38
理論はいいからコードで示せよw
959デフォルトの名無しさん:2010/03/22(月) 22:27:09
>>957
削除依頼出しとけよ
960デフォルトの名無しさん:2010/03/22(月) 22:34:16
>>959
厳しすぎわろたw
961デフォルトの名無しさん:2010/03/22(月) 22:36:15
エンドレス55は8回続くと思っていたのでPart58が建ったのはめでたい
962デフォルトの名無しさん:2010/03/22(月) 22:36:22
お前らプログラマなのに数字に弱くてどうするんだよ
963デフォルトの名無しさん:2010/03/22(月) 22:39:21
お前もプログラマならわかると思うが数字に弱くてもギリギリなんとかなる
964デフォルトの名無しさん:2010/03/22(月) 22:44:10
0,1,n
うーむ、これは指三本で足りると言っていいか?
965デフォルトの名無しさん:2010/03/22(月) 23:18:50
2bitだから2本だろ
ほんと数字弱いな
966デフォルトの名無しさん:2010/03/22(月) 23:41:32
実は数学関係の作業では全く計算能力は使わないから退化するんだよ・・・
式とかプログラムをこね回すだけで終わるから。
967デフォルトの名無しさん:2010/03/22(月) 23:44:32
Graphics g = Graphics.FromImage(bmp);
Matrix mat = new Matrix();

float xScale = (float)((float)bmp.Width
/ (float)data.Length);
float yScale = (float)(bmp.Height - 1) / 65535.0f;

mat.Scale(xScale, -yScale);
mat.Translate(0, bmp.Height / 2, MatrixOrder.Append);//平行移動
g.Transform = mat;
波形データを表示するプログラムの一部です。mat.Scaleがどういう処理をしているのかわかりません。
これをするとどういう効果があるのですか?

968デフォルトの名無しさん:2010/03/22(月) 23:45:54
座標変換
969デフォルトの名無しさん:2010/03/22(月) 23:47:15
普通に行列の大きさ成分を変更してるんじゃないの ?
970デフォルトの名無しさん:2010/03/22(月) 23:51:49
スケーラだから描画領域に収まるようにしてくれてるんだろう
比率計算してるし
971デフォルトの名無しさん:2010/03/22(月) 23:56:01
下手すれば内部でゲームで呼ぶようなライブラリに渡してるだけかもね
3Dやってるとその辺は普通にみるし
972デフォルトの名無しさん:2010/03/22(月) 23:58:18
この変換したgでDrawLinesをこの後実行します。


この処理が行われてるのはwaveのデータをプロットするプログラムです。
すべての点が描画領域にプロットできるように、この処理を行っているんですよね。

DrawLinesの処理としてはどうなるんでしょうか?すべての点を描画するわけじゃないんですか?
973デフォルトの名無しさん:2010/03/23(火) 00:05:34
PictureBoxのMouseEnterイベントハンドラーの中でToolTip.Show()を実行すると
ハンドラの中で更にハンドラが呼ばれてスタックオーバーフローになる。
どうやって対処すればいい?
974デフォルトの名無しさん:2010/03/23(火) 00:09:25
>>972
何を聞きたいのかもう少し明確にした方が良くない?

>>973
MouseEnterで表示するのなら、単純にSetToolTipしとけば済むのでは?
まあ何か事情があるのならMouseMoveで代替するとか。
975デフォルトの名無しさん:2010/03/23(火) 00:25:37
RichTextBoxの特定文字列を四角で囲みたいんだけども何かいい方法無い?
フォントいじるのではダメっぽいし、上にPictureBox重ねるとRichTextBoxが見えない
976785:2010/03/23(火) 00:28:19
返信が遅れてしまい、申し訳ありません。

>>809
UNCパスで失敗しても、「\\host名\C$\〜〜」といった記述なら成功するのは何かしら理由があるのでしょうか。
現在その方法で権限を確認することができないので、何か心当たりがあれば教えていただきたいです。

>>810
プログラム内でコンソールを呼び出して、直接ディレクトリを作成するということでしょうか。
確かにそれなら確実に動作しそうですね。
977デフォルトの名無しさん:2010/03/23(火) 00:30:03
>>975
RichTextBoxをキャプチャして・・・とかはだめ?
978972:2010/03/23(火) 00:35:06
各ピクセルの位置が x 軸方向に xscale倍に変更されるわけですよね?
そんな処理ってできるんですか?
xscale=0.5なら
(5,10)が(2.5,10)となるわけですよね。2.5という場所はどこなんでしょうか。整数なら納得いくんですが
979デフォルトの名無しさん:2010/03/23(火) 00:37:57
>>978
その前に自分で書いたようなコードじゃなさそうなので
ネットで拾ったのなら入手先教えてくれ

動かしてみればアドバイスできるけど・・・ってのもいるだろうし
980デフォルトの名無しさん:2010/03/23(火) 00:39:47
>>977
OnPaint引っかけて、ってやり方?
ググってみると上手く動かないっぽいんだけど・・・
981デフォルトの名無しさん:2010/03/23(火) 00:44:00
>>976
\\ホスト名\ドライブ名$\〜 は「管理共有」と言う
詳しくはググレ
982デフォルトの名無しさん:2010/03/23(火) 00:48:23
>>975
思いつきだけど、Ritch Textは一応表組に対応してるから、
セルが1つだけ(つまり1×1)の表に文字を入れるとかね。

まあ、それだと多分囲った文字はインラインにできないと思うけど。
983デフォルトの名無しさん:2010/03/23(火) 00:49:13
表示だけだったらブラウザにやらせた方がいいかもしれん
表現力は半端じゃない
984デフォルトの名無しさん:2010/03/23(火) 00:54:46
>>982
うーん・・・結構頻繁に囲う部分が変わるのでそれはちょっと
使い所によっては面白いアイディアかもだけど、今回はちょっと使えないかな
985デフォルトの名無しさん:2010/03/23(火) 01:08:49
ワードでリッチテキストを開いて文字を囲って修飾しても、ワード上では表示されても
同じファイルをワードパッドで開いても表示されないから、多分リッチテキストそのものには
そういう機能は存在しないんだろうねえ。

合成文字とかいう機能は使えるのかなあと無責任に言ってみる
986デフォルトの名無しさん:2010/03/23(火) 01:38:11
>>974
遅くなったけどありがとう。無事普通にツールチップが表示出来た。
987デフォルトの名無しさん:2010/03/23(火) 02:17:03
>>985
罫線系は合成できなかった記憶があるから使えないんでない?
きちんと調べてないけどさ
988デフォルトの名無しさん:2010/03/23(火) 02:58:57
RichTextBox は RichTextBox でも WPF 使うという
回答は駄目?
989デフォルトの名無しさん:2010/03/23(火) 08:37:26
コンパイラ名とバージョン: (Visual C#)

作業用フォルダの所は空白、ソースと同じフォルダにショートカットは有ります。
ショートカット「Visual Studio 2005」
から csc xxx.cs するのが面倒な場合はどのようにするのでしょうか。
PATHをずらっと並べるのは無しで.batのみで可能でしょうか?
990デフォルトの名無しさん:2010/03/23(火) 08:57:34
よくわからんけどMSBUILD
991デフォルトの名無しさん:2010/03/23(火) 12:41:11
>>988
現WPFはフォント周りがアレなのでダメです
992デフォルトの名無しさん:2010/03/23(火) 17:30:31
>>989
よくわからないけどコマンドプロンプトじゃなくて?
993デフォルトの名無しさん:2010/03/23(火) 17:36:09
コマンドプロンプトから
msbuild プロジェクトファイル.csproj
とかすればビルドできる
細かい引数の指定の仕方は忘れた
994デフォルトの名無しさん:2010/03/23(火) 18:03:08
カレントディレクトリにショートカットまたは.batをおいて置く⇒
クリックまたはEnterでコンパイル&ビルド
またはPATHを並べてファイルをドラッグすればコンパイル
>>991>>992>>993有難うございます。
995785:2010/03/23(火) 22:33:08
UNCパスの変換と、ディレクトリの作成について質問していた者です。
本日実際の環境で調べてみたところ、作成の権限が無かったようです。
フォルダ自体の権限だけでなく、共有についての権限も設定する必要があるのですね。

無事、正常に動作するようになりました。
助言を下さった方、ありがとうございました。
996デフォルトの名無しさん:2010/03/24(水) 02:12:33
ふらっとC#スレのほうでスルーされてしまったのでこちらで質問します
Cでいうところのfscanf (fp, "%s%lf%lf", name,&height, &weight)みたいに構造体でtxtファイルにデータの管理をするには
どうすればいいでしょうか?
今思いつくのはstring型を特定の文字で引っ付けたり分解するを利用すること位です
又もし釣りだと思われるような要素や、スレ違いだったりするのならどうだめなのか教えてください。
997デフォルトの名無しさん:2010/03/24(水) 02:18:59
>>996
思っている通り Split とかで分割するか、正規表現を使うかじゃね?
998デフォルトの名無しさん:2010/03/24(水) 02:20:02
無視っていうか座談も含めて流れた可能性が・・・

俺もあったのは知ってたけど初心者なので詳しくないから他の人の様子見だったんだよねw

で、本題だけどあるのかな・・?

c#なら構造体じゃなくクラスの中身をそのまま保存したり復元できる
XmlSerializerってのもあるけど
999デフォルトの名無しさん:2010/03/24(水) 02:22:26
xmlでいい
1000デフォルトの名無しさん:2010/03/24(水) 02:22:54
>座談
雑談
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。