10/02/14 05:17:38
>>141
PCが無くても?へえ
143:デフォルトの名無しさん
10/02/14 05:20:20
うん
144:デフォルトの名無しさん
10/02/14 05:53:13
>>141
どこで落とせる?
145:デフォルトの名無しさん
10/02/14 06:13:43
転載だけど
ふらっとC#,C♯,C#(初心者用) Part54
スレリンク(tech板:708番)
これこれ
URLリンク(www.atmarkit.co.jp)
>Visual Studio 2008(Express Editionは除く)でデバッガを使用する際に、クラス・ライブラリの
>メソッド内部までソースコード・レベルでのトレース(ステップ・イン実行)が可能になるというものだ。
デバックの際にトレースができないだけでExpress Editionでもソースは入手可能なのかね?
このやり方で落ちてくるんだが
URLリンク(blogs.yahoo.co.jp)
NetMassDownloader -d C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 -o [ローカルの保存先ドライブ]
146:デフォルトの名無しさん
10/02/14 06:15:14
すいません。とりあえずのテストなんでスレッド終了を待機する時whileループで待機していたんですが、
これメインスレッドさぼってると気づいてメインスレッドにも仕事させたらThreadPoolに追いつきましたorz
あと、計測結果を見やすくしたら2.7倍どころではなく3.7倍程度でしたorz
自前の実装も3.7倍程度と大体期待通りになりました。
やはり駄目なのは自分だった…
>>139
>>140
はい。とりあえずネイティブメソッドを呼んでいるところまでは追いかけたんですが、
もうちょっと見てみます。ありがとうございます。
147:138 146
10/02/14 06:17:54
更新してなかった
>>145
はい。ソースコードは既に手元にあります。
ですが、ありがとうございます。
148:デフォルトの名無しさん
10/02/14 10:09:26
URLリンク(www.vector.co.jp)
このツールマルチコア対応って書いてあるんだけどこういうのってどういうこと?
マルチスレッド化してるってこと?
一応リバースエンジニアリングは特に禁止されてなかったので
Reflectorで見てみたけどわけが分からなかったorz
一応BackgroundWorkerは使ってるっぽいんだけど
149:デフォルトの名無しさん
10/02/14 12:46:29
単に一つのハッシュ計算に一つのスレッドを使ってるだけ。
その手のソフトなら10分もあれば誰でも作れるよ。
150:デフォルトの名無しさん
10/02/14 13:50:00
アプリケーション終了時に
とある実例(インスタンス)の破棄処理(Dispose)を走らせたいんだけど
Mainのあるところでusingステートメント使えばいいの?
151:デフォルトの名無しさん
10/02/14 13:58:58
ファイナライザ書いとけば?
ファイナライザが呼ばれずに終了してしまうような状況では
usingによるDisposeもfinallyも呼ばれる保証はない
CriticalFinalizerObject使えばより確実
152:デフォルトの名無しさん
10/02/14 14:00:31
そんなものがあったのか。
C++にあったデストラクタがなくてクソいと思ってたけどMSDN見たらなんだか格好いいな。
URLリンク(msdn.microsoft.com)(VS.71).aspx
ゴッドファーザーみたいな名称だ。
153:デフォルトの名無しさん
10/02/14 14:06:27
自分のクラスで直接抱えてるアンマネージリソースを開放したりするのはいいが
ファイナライザの中で他のオブジェクトのDisposeを呼んだらダメだぞ
あとファイナライザを書くと確実にGCのパフォーマンスが落ちるのでどうしても必要な場合だけ
154:デフォルトの名無しさん
10/02/14 14:19:41
というかよく見たらApplication.Exit()しても終了してないみたいだ。
なんだこれ。
155:デフォルトの名無しさん
10/02/14 14:24:54
調べたら別スレッドがあるとApplication.Exit()でも終了しないみたいだけど
グローバルフックもこれに含まれるの?
156:デフォルトの名無しさん
10/02/14 14:27:45
自己解決しました。
157:デフォルトの名無しさん
10/02/14 14:28:18
Application.ExitはApplication.Runを抜けるだけ
158:デフォルトの名無しさん
10/02/14 17:24:50
SystemExplorer見ると初回起動後以外はExitしてもプロセスが死なないんだけどどうして?
159:デフォルトの名無しさん
10/02/14 17:35:41
動かしたまま放置するようなスレッドは
.IsBackground = true
160:デフォルトの名無しさん
10/02/14 17:54:35
FormClosingでe.Cancel = trueしてただけでした^^;
お騒がせして申し訳ありませんでした^^;;
161:デフォルトの名無しさん
10/02/14 18:38:21
しねよ(´・ω・`)
162:デフォルトの名無しさん
10/02/14 19:57:12
>>149
少し考えてみただけでいくつも疑念がわいてくるから、
ホントかよって思ってざっと見てみたが、だいぶ違うじゃねーかよ。
そりゃ大枠でマルチスレッド化してるってのは違いないが。
自信満々書いてるからなんか知ってんのか調べたのかと思ったが、
てきとーに言ってみただけかよ。
まあでも逆アセのコードは読むにはしんどいから、
誰でも10分でできるってんなら見本を書いて見せてほしいけどな。
ファイル読んで計算するとこだけでいいから。
163:デフォルトの名無しさん
10/02/14 20:13:19
一般的なマルチスレッド対応についての話なんだから、適当に一般論を答える
のが筋だろフツー。何を期待して熱くなってるんだか。
調べてみたら特殊な事してるって分かったなら、はよ報告しろや。
164:デフォルトの名無しさん
10/02/14 20:14:53
つーか、2ちゃんに何を期待してんだよ、って話。
165:デフォルトの名無しさん
10/02/14 20:17:13
>>163-164
>>161
166:デフォルトの名無しさん
10/02/14 20:20:38
自己解決しました。
167:デフォルトの名無しさん
10/02/14 20:24:05
>>166
よかったね
168:デフォルトの名無しさん
10/02/14 20:35:42
>>148
>>149
>>162
>>163
くすくす
169:デフォルトの名無しさん
10/02/14 20:37:25
URLリンク(ja.wikipedia.org)
170:デフォルトの名無しさん
10/02/14 20:42:39
URLリンク(ja.wikipedia.org)
171:デフォルトの名無しさん
10/02/15 00:12:38
>>162
リフレクションしてみたら>>149の言うとおりでした
ほんとうにありがとうございました
作者乙
172:デフォルトの名無しさん
10/02/15 00:15:59
> リフレクションする
ってなんだよ
鏡でも見てんのか
173:デフォルトの名無しさん
10/02/15 00:18:03
>>172
鏡ぐらいみようよ…
174:デフォルトの名無しさん
10/02/15 00:26:22
どっちやねん
175:デフォルトの名無しさん
10/02/15 00:29:55
え?
176:デフォルトの名無しさん
10/02/15 00:32:40
気にすんな
ただの誤爆だ
177:デフォルトの名無しさん
10/02/15 01:11:50
>>171
違うじゃん、ほんとに見たのかよ
178:デフォルトの名無しさん
10/02/15 01:22:58
真面目に聞くけど
>単に一つのハッシュ計算に一つのスレッドを使ってるだけ。
の場合、ファイルの読み込み部分はどうなるんだ?
179:デフォルトの名無しさん
10/02/15 01:38:50
※複数ファイルを同時に計算することはできません。あくまで1つのファイルを対象に計算するためのツールです。
なんだから、読み込み部分はひとつだろ。
180:デフォルトの名無しさん
10/02/15 01:54:21
いや、そのひとつの読み込みとハッシュ毎の計算スレッドの連携って言うか。
181:デフォルトの名無しさん
10/02/15 02:08:34
>>178
readに特化したコストの低いロック手法があってだな・・・
その後にスレッド毎にメモリにロードしてだな・・・
そういうこった
182:デフォルトの名無しさん
10/02/15 05:25:37
そうだろうねぇ
183:デフォルトの名無しさん
10/02/15 06:06:20
質問ですが
C#でDMM.COMで使われているようなexeの中に画像を埋め込んだアプリケーション
作れるんでしょうか?試しにVS2008で画像をビルドをリソースに埋め込んだものをEXEで
書き出してリフレクターで見てみたら画像丸見えでした。
難読化ツール Spices.NET 5Jみたいなものを使って画像見られなくするのは可能でしょうか?認証とかphpとかにIDとPASSを投げて承認させることはできますが他に何が必要なんでしょうか?
URLリンク(www.newtone.co.jp)
184:デフォルトの名無しさん
10/02/15 06:32:32
>>183
方法はいろいろあるけど完璧はないよ
それにソースの難読化は関係ないんじゃないかな?
画像を暗号化などする場合はその戻しロジックを難読化させるくらいか・・・
185:デフォルトの名無しさん
10/02/15 06:40:51
暗号化速度を気にするなら簡単な方法としては
画像ファイルの先頭何バイトかを特定のアルゴリズムで書き換える。その後exeに内蔵
表示の際はexe内部のデータの書き換えた部分を復元して表示
とかかな
ファイルを一定バイト単位をブロックとして並び替えするとかでもいいかも
186:デフォルトの名無しさん
10/02/15 07:13:04
単純に最初16バイトぐらいをビット反転させるだけでも…
187:デフォルトの名無しさん
10/02/15 07:38:27
定番のxorでいいよ
188:デフォルトの名無しさん
10/02/15 07:55:28
>>181
何それ?
189:デフォルトの名無しさん
10/02/15 08:02:55
Read-Write Lock?
190:デフォルトの名無しさん
10/02/15 09:54:36
>>184-186
なるほど参考になります。
ありがとうございます
191:デフォルトの名無しさん
10/02/15 11:36:52
XmlDocumentで名前空間のprefixを指定せずにXPATHを使いたいのですが、
そのためにXmlDocumentからxmlnsを削除しようかと考えています。
設定できるプロパティがないようなので、一度文字列に変換して
xmlns属性を消してXmlDocumentに読み直すという方法を
とるつもりなのですがこれはまずいでしょうか?
192:デフォルトの名無しさん
10/02/15 11:43:43
removechildとかなかったっけ?
193:デフォルトの名無しさん
10/02/15 11:44:50
removeattributeとかなかったっけ?
194:デフォルトの名無しさん
10/02/15 11:47:27
名前空間を無視すること自体が間違ってるので
それでもやるんだったらその手段の良い悪いなんか意味がないだろ
195:デフォルトの名無しさん
10/02/15 12:00:33
>>193
xmlnsはXmlNode.Attributesに含まれてないっぽくて。
>>194
HTML(SgmlReaderでXML変換)とXHTMLのXPATHを共通化したいのです。
XmlNamespaceManager使って何とかできるのかしらん。
196:デフォルトの名無しさん
10/02/15 19:41:34
気ままにリフレクションって歌が昔あったような....
確か焼きそばUFOのCMソングだったような
197:デフォルトの名無しさん
10/02/15 20:07:39
おいジジイ
くたばれよクソ面白くねえんだよ
198:デフォルトの名無しさん
10/02/15 20:20:57
>>189
それはないわさすがに。
いまだに>>181の意味は不明だけど。
199:デフォルトの名無しさん
10/02/15 20:23:22
わからないなら教えて下さいだろ?
あっ?
200:デフォルトの名無しさん
10/02/15 20:24:28
分からないので教えてください。
201:デフォルトの名無しさん
10/02/15 21:08:45
んあっ・・・
202:デフォルトの名無しさん
10/02/15 22:31:04
んっ・・・
203:デフォルトの名無しさん
10/02/15 22:50:32
そう、そこをもっと、、うん、、、いい感じっ///
204:デフォルトの名無しさん
10/02/15 22:55:32
つまんねーよおっさん
205:デフォルトの名無しさん
10/02/15 22:58:03
ヘ:::::::::;;: -‐''''""( )1
゙、::::::::-‐''""" ̄"'i
:V;;||:::: '~ニ=ッ, r='| ショカツリョウ
i!f !::::: ゙、i 諸葛亮曰く
i!ゝ!:::: ‐/リ
i::/:、 :::、 /''ii'V 「他にすることは無いのですか?」
 ̄ハ:::::\ "''il|バ'
206:デフォルトの名無しさん
10/02/16 20:59:28
なぜおっさんと分かった
207:デフォルトの名無しさん
10/02/16 22:06:01
なんか>>149みたいに単純にスレッド分けてやろうとしたが、なんか結構難しいぞorz
まだバグ持ちの状態で無理やり動かしたが、パフォーマンスは微妙。
コア数以下のハッシュ同時計算なら同等になるが、
コア数以上で計算負荷に偏りがあると負ける。
進捗表示も何もしてないのに…
やる気がなくなってきた。
スレッドプール使ったら多分もっと簡単にできそうだが。
208:デフォルトの名無しさん
10/02/16 22:09:42
>コア数以上で計算負荷に偏りがあると負ける。
間違えた、コア数を超える同時計算ね。
209:デフォルトの名無しさん
10/02/16 22:15:57
ProducerConsumerパターン使って論理コアと同等数のスレッド数で回すだけじゃん
何が難しいのかさっぱりわからん
210:デフォルトの名無しさん
10/02/16 22:17:02
じゃあやってみてくれよ。
211:デフォルトの名無しさん
10/02/16 22:19:47
いやまあそりゃ、俺が未熟なだけだけどね。
でも単純にProducerConsumerとはちょっと違うような気がするけど。
212:デフォルトの名無しさん
10/02/16 22:23:50
何でProducerConsumer使うかわからないんだな
話にならん
一からやりなおせ
213:デフォルトの名無しさん
10/02/16 22:26:32
だって普通のProducerConsumerと違うじゃん。
一つのデータを全スレッドがそれぞれで処理するんだから。
214:デフォルトの名無しさん
10/02/16 22:28:28
論理コアと同等数のスレッドってのがみえんのかいな
パフォーマンス云々いうわりには論点がわかってないんじゃな
出直せ
215:デフォルトの名無しさん
10/02/16 22:33:53
それじゃ>>149と違うじゃん。
元々そこに突っ込みたくてそれぞれスレッドにしてやったんだけど。
まあいいけどね。
それで論理コアと同等数のスレッドでやる場合はどうなるわけ?
どういう風にそれぞれのハッシュ計算に処理を割り当てるの?
例えばスレッド数2で計算するハッシュが3個の場合、
2スレッドをどういう風に3つの計算に割り当てるの?
まあ割り当ては分かるにしてもそれを実装するの結構面倒なんだが、
何が難しいかわからんくらい簡単なの?
いや簡単かもしれんがそれなら見せてくれ・
216:デフォルトの名無しさん
10/02/16 22:37:09
計算するハッシュ数は未定
論理コアが48コアある環境もある
だから>>149と違う事にはならんね
定義が曖昧だからな
割り当てに使うパターンがProducerConsumerパターンだろうが
その辺にごまんと散らばってるパターンを難しいとか、マジで勘弁してくれよ
217:デフォルトの名無しさん
10/02/16 22:37:55
僕はすぐにわかったよ。
うん、この場合はProducerConsumerパターンだよ!
218:デフォルトの名無しさん
10/02/16 22:38:39
まあ、スレッドプール使うと簡単になるけどね。
219:デフォルトの名無しさん
10/02/16 22:41:19
パターンが難しいんじゃなくて、今回のケースで実装が面倒って言ってるの。
>だから>>149と違う事にはならんね
コア数なんて計算数より少ない場合も想定するのが当たり前なのに
>>149って書いてんだから、普通に読み取ったら意味が違うように見えるわ。
220:デフォルトの名無しさん
10/02/16 22:46:09
10分でできるんだから誰か見本を見せろよ
221:デフォルトの名無しさん
10/02/16 22:49:17
ProducerConsumerは@ITにサンプルソースがあっただろw
あれコピペしてハッシュ計算する部位だけちょちょいと書けばいいだけじゃんw
こんなの出来ないとかdaseiw
222:デフォルトの名無しさん
10/02/16 22:57:26
某テトリス動画と同じように何度も反復して10分なんだよ!
223:デフォルトの名無しさん
10/02/16 22:58:38
そのタイプの実装だと余計複雑になるぞ。
224:デフォルトの名無しさん
10/02/16 23:02:19
これぐらいの実装ならまゆちゃんでも10分で出来るんだよ?
225:デフォルトの名無しさん
10/02/16 23:04:21
>>224
けつあたまは黙って苛められてろ
226:デフォルトの名無しさん
10/02/16 23:12:00
>>223
へー
227:デフォルトの名無しさん
10/02/16 23:26:46
Producer-Consumerパターンで何が問題なのかが知りたい
まさか、productを何にすべきか分からないとか?
228:デフォルトの名無しさん
10/02/16 23:35:43
URLリンク(msdn.microsoft.com)
OAEP パディング (PKCS#1 v2)
Microsoft Windows XP 以降。
剰余サイズ -2 -2*hLen (hLen はハッシュのサイズ)。
これっていくつになるんでしょうか?
乗除がどれの事なのか全く分からず・・・orz
229:デフォルトの名無しさん
10/02/17 00:27:10
おかしいと思って、英語の方を見たらmodulusになってるw
つまり、正しくは剰余ではなく法だな
あとは、RSAのアルゴリズムを考えれば分かると思うが、
アルファベットが剰余類に限定されるのでそのサイズに収まる必要があると
で、規格については詳しくないが単純な推測として、
おそらく(データ,ハッシュ)をシンボルとしているからハッシュの分を引けと
230:デフォルトの名無しさん
10/02/17 00:37:08
(´・ω・`)…
231:デフォルトの名無しさん
10/02/17 00:56:26
>>227
だれも問題とは言ってない件
>>221
みたいな実装をもとにしたら余計ごちゃごちゃになるだろって話
処理方法の大枠で見たらそりゃ誰が作ってもProducerConsumer的な流れにはなる
だからいい加減作って見せてやればみんな納得するだろ
232:デフォルトの名無しさん
10/02/17 00:57:40
>>229
OAEPパッティングが無い場合は最大長117ってわかったんですが
未だにOAEP有りの場合の>>228の長さが分かりません
一応1024bit長なんですがどう計算すればいいんでしょうか?
233:デフォルトの名無しさん
10/02/17 01:11:47
あとパフォーマンスを最大限発揮させるのにどうするのがいいか少し悩む。
234:デフォルトの名無しさん
10/02/17 01:33:28
普通のProducerConsumerパターンでどうやるのか書いてみなって。
一度に処理するデータブロックごとのシーケンスをどう制御するのかとか興味深い。
もっともそういう制御が入る時点でもう単純なProducerConsumerパターンとは
ちょっと様子が変わってくるけどね。
235:デフォルトの名無しさん
10/02/17 01:36:51
この辺は読んだ?
URLリンク(dobon.net)
236:デフォルトの名無しさん
10/02/17 01:39:51
そこには何もヒントがない件
237:デフォルトの名無しさん
10/02/17 01:48:52
URLリンク(nwikiproxy.appspot.com)
238:デフォルトの名無しさん
10/02/17 01:52:15
ハッシュはSHA1って決まってるの?
239:デフォルトの名無しさん
10/02/17 01:55:27
C#でFPSゲームが作りたいんですがどうすればいいですか?
240:デフォルトの名無しさん
10/02/17 02:02:39
ゲ製作板へGo
241:デフォルトの名無しさん
10/02/17 02:15:45
URLリンク(www.codeproject.com)
URLリンク(support.microsoft.com)
242:デフォルトの名無しさん
10/02/17 07:17:29
(´・ω・`)…
243:デフォルトの名無しさん
10/02/17 21:16:43
結局何なんだよ、>>148は
>>149みたいに単純にスレッド化されてんのか
>>209みたいにProducerConsumerパターンを使ってんのか
それともそういうのとはまた違うやり方をしてんのか
なんだよ誰も分からないのかよさすが口だけ2ちゃんねらどもだ
244:デフォルトの名無しさん
10/02/17 22:34:45
見たところ特に目新しい手法は使われていないみたいだよ
245:デフォルトの名無しさん
10/02/17 22:55:50
かなりくだらない質問だと思いますが、、、
C# .NET の Form アプリケーションで、ウィンドウの外周を線がぐるぐる回るというのがやりたくて
タイマで一定周期で Invalidate して OnPaint ハンドラでウィンドウに DrawLine しています
線は問題なく表示されますが、タイマの周期や一回の移動距離を調整してもどうしてもちらいてしまって
滑らかな動きになりません
ちらつかずに描画する何か特別な方法があるんでしょうか?
246:デフォルトの名無しさん
10/02/17 23:01:43
>>245
URLリンク(www.atmarkit.co.jp)
247:245
10/02/17 23:16:12
>>246
ちらつきが特盛りになりました(´・ω・`)
ちらついているというより、表示されたすぐ後に消されているような感じです
248:デフォルトの名無しさん
10/02/17 23:20:19
OSはXP?
ゲームと違ってちゃんとしたvsyncの同期はやってないだろうから
ティアリング回避は無理なんじゃないかな?
249:デフォルトの名無しさん
10/02/17 23:23:29
こっちじゃね?
URLリンク(www.atmarkit.co.jp)
250:245
10/02/17 23:33:39
>>248
無理ぽですか・・・
>>249
線は出ますが、消している部分が消えないので一周したら全部塗られてしまいます
ウィンドウの真ん中へんも表示されないです やり方がまずいんでしょうが
ひょっとして、ちらつくのは描画する線の全体を消したり塗ったりしているだからで
移動する部分だけ背景色や線の色で書けばよいのでは?
ちょっと試してみます
251:デフォルトの名無しさん
10/02/17 23:42:04
>>247
表示したあとすぐ消すようなコード書いてるんでしょw
252:デフォルトの名無しさん
10/02/17 23:47:57
>>251
windowsの場合その辺の制御が面倒なんだよな
ゲームのようにフレームの開始がはっきりしてて描画終わったらvsync待ちしてバッファ切替とか
そういうのじゃないしねえ
253:デフォルトの名無しさん
10/02/17 23:48:56
this.SetStyle(ControlStyles.DoubleBuffer, true);
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
こいつ入れてn秒ごとにRefleshすれば?
254:デフォルトの名無しさん
10/02/17 23:51:53
前のを消して新しいのを描く→時間待ち→前のを消して新しいのを描く→時間待ち→
ってやってる?
まあどっちにしてもちらつくんだけど
255:デフォルトの名無しさん
10/02/17 23:52:13
>>250
というか、線は自分で消すの
背景を描画しなければ普通にClearするだけでも変わるはず
256:デフォルトの名無しさん
10/02/17 23:52:57
だからちらつきはwindowsのシステム上の問題なんで無理
vistaはOSそのものがゲームまがいなことやってるのでちらつかないかも
257:245
10/02/18 00:14:33
試しに、線を描くのみにして跡を消す処理を中止したら
さほどちらつかずに動くようになりました
Invalidate で再描画する処理が走って、さらにプログラムで消す処理が動くから
ちらついてたんですかね
期待してたヌルヌルとは違いますが、とりあえずこれでよしとします
258:デフォルトの名無しさん
10/02/18 00:29:54
俺ならGIFはっつけるな・・・
その上にパネルでも置いて周りだけ見えるようにする
という意味のないくだレス
259:デフォルトの名無しさん
10/02/18 00:36:00
>>257
ソースうpすれば何かヒント出せるかもしれんぞ
260:245
10/02/18 01:25:32
>>259
かなり恥ずかしいですが、、、
どれをうpすればいいのかよくわからなかったので
ボタン(button1)を一つだけ置いた状態の Form のソースです
URLリンク(77c.org)
261:デフォルトの名無しさん
10/02/18 01:35:00
>>248
>>256
問題にしてるちらつきのレベルが全然違う話をしても意味ないよ。
大体今時液晶ディスプレイばかりなんだからティアリングの様子も変わってるし。
262:デフォルトの名無しさん
10/02/18 01:37:18
>>261
基本的な仕組みはかわってないよ
液晶だってPC側から貰った映像を元にピクセルを操作してるんだし
263:デフォルトの名無しさん
10/02/18 01:38:45
CRTの走査と液晶の表示じゃ元は同じでも表示のしくみが全然違うから。
264:デフォルトの名無しさん
10/02/18 02:35:19
脊髄で話を飛躍させるなw
問題はプログラムミスによるチカチカだろ
265:チカ
10/02/18 02:54:37
気軽に私の名前を呼ばないでくれる?
266:デフォルトの名無しさん
10/02/18 03:20:35
>>245
とりあえずやっつけで
元のまんま適当にいじった
URLリンク(77c.org)
これでとりあえずどうだろ?
267:デフォルトの名無しさん
10/02/18 05:33:02
>>260>>245
こんな感じのでもいけるはず (デザイナでDoubleBuffered=trueに)
URLリンク(77c.org)
ついでにロジック部分もいじってみた
・計算と描画を分離して、計算はタイマーで実行
・計算部分を整理
>>266
> int res = BitBlt(dc, 0, 0, Convert.ToInt32(width), Convert.ToInt32(height), dc, 0, 0, SRCCOPY);
これって何か特別な意味あるの?
268:デフォルトの名無しさん
10/02/18 06:37:51
validateの範囲を最小限にするとか
269:245
10/02/18 07:18:39
>>266-267
おお!ありがとうございます!!
まったくちらつきませんね ヌルヌルです
これで心置きなくぐるぐるできます
270:デフォルトの名無しさん
10/02/18 09:04:42
液晶がどうの言っていたバカはどこ行った
271:デフォルトの名無しさん
10/02/18 09:09:58
ん、誰か呼んだ?
272:デフォルトの名無しさん
10/02/18 10:03:50
この場合、バカなのはvsyncがどうのって言ってたほうだろw
273:デフォルトの名無しさん
10/02/18 10:21:52
こういう視覚効果はWPFが強いな。
URLリンク(www7a.biglobe.ne.jp)
URLリンク(www7a.biglobe.ne.jp)
URLリンク(www7a.biglobe.ne.jp)
画材や画像はニコ方面からの拾い物なので早めに消す。
274:デフォルトの名無しさん
10/02/18 10:26:02
ぶらくら?
問題が生じたので WPFを終了しますとか何とかいっておわった
俺死ぬの?
275:デフォルトの名無しさん
10/02/18 10:31:08
死ぬだろうな。
276:デフォルトの名無しさん
10/02/18 10:33:27
>>274
上2つはルーズXAMLで.NET3.0以上が必要、
3つめはSilverlight3が必要かもしれない。
いずれもスクリプトだけでアセンブリさえ使ってない。
277:デフォルトの名無しさん
10/02/18 10:37:31
Google Chrome でもSilverlight動くんだな。知らんかった。
278:デフォルトの名無しさん
10/02/18 11:03:31
>>267
帰り値を受け取ってるところ?
それともBitBlt使ってるところ?
279:デフォルトの名無しさん
10/02/18 17:20:34
例えば、System.Xml.XmlReaderクラスはabstractで定義されてるのに
XmlReader.Create()メソッドでXmlReaderクラスのインスタンスが作られるってのは
いったいどういうことなのでしょうか?
280:デフォルトの名無しさん
10/02/18 17:27:58
抽象のCreateってC++見たいだな
281:デフォルトの名無しさん
10/02/18 17:38:14
実際には中でXmlReaderの派生クラスのインスタンスを作って返してる
staticメソッドを使ったファクトリメソッドパターンってやつ
282:デフォルトの名無しさん
10/02/18 17:44:45
>>281
やはり内部で派生クラス作ってるんですか
コンストラクタから作るのじゃなければ、言語規約としては矛盾しないのかな…
デザインパターンの知識ってこういうとこでも役に立つんですね、勉強してみます
283:デフォルトの名無しさん
10/02/18 17:47:29
>>282
c#は本筋で関係してそうなクラス(Objectなど)以外にxxBaseとか元になってる似たような
名前のもあるしReaderが作ってことは内部でxxReaderを使ってるってことだしねえ
284:デフォルトの名無しさん
10/02/18 17:48:18
>Readerが作って
Readerが名前に使われてるって
285:デフォルトの名無しさん
10/02/18 18:18:51
C#というよりVisualStudioの話になるんですが、
同一ソリューションの中の
複数プロジェクト(アプリケーション)の
同時デバッグってどうやるんですか?
286:デフォルトの名無しさん
10/02/18 18:22:19
開発環境のデバッグ機能って使ったこと無い
287:デフォルトの名無しさん
10/02/18 18:23:55
System.Diagnostics.Debugger.Break()とか
288:デフォルトの名無しさん
10/02/18 18:25:13
msgboxとprintfしか使ったこと無い
289:デフォルトの名無しさん
10/02/18 18:28:25
ご冗談を
290:デフォルトの名無しさん
10/02/18 18:29:06
>>286
どうやってデバッグやられているんですか?
291:デフォルトの名無しさん
10/02/18 18:30:59
ソースをプリントして脳内で追う
292:デフォルトの名無しさん
10/02/18 18:54:26
dynamic myClass = IronPythonなどでクラスを表すオブジェクト;
dynamic myClassObj = new myClass(); //エラー
C#ではdynamicにnew使えないのはなんで?
dynamicの仕組み上は可能なはずだけどどういう意図で制限してるんだろ
293:デフォルトの名無しさん
10/02/18 18:54:56
ソリューションのプロパティでマルチスタートアップ
294:デフォルトの名無しさん
10/02/18 19:01:54
>>292
DLRのdynamicがC#のクラス用でないというだけ。
295:292
10/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:デフォルトの名無しさん
10/02/18 19:23:40
>>295
分かってるなら聞くなよ。
わざわざ書き込みに来て何がしたいんだ?
297:デフォルトの名無しさん
10/02/18 19:48:29
>>293
おー、素晴らしい。
ありがとうございます。
298:デフォルトの名無しさん
10/02/18 21:36:07
.NETで作ったソフトって配布するとVisual Studioを登録した名前がバレちゃう?
299:デフォルトの名無しさん
10/02/18 21:44:51
>>298
pdbファイルののフルパスが入ってることがあるから気になるならオプションで外しておけばいい。
300:デフォルトの名無しさん
10/02/18 21:52:05
アセンブリ情報の中に著作権者は含まれるが、デフォルトで設定されるのは会社の方だけだったかな
301:デフォルトの名無しさん
10/02/18 22:14:23
>>292
これはだめ?
dynamic myClassObj = Activator.CreateInstance(((object)myClass).GetType());
302:デフォルトの名無しさん
10/02/18 22:15:55
DllImportで引数がC/C++でLPCSTR/LPCWSTRの型の関数を使う時にC#側ではstringとして宣言してるんだけど
C/C++ではNULLを渡す場面が発生するみたいで、C#も同様にnullを引数に入れるとコンパイル時にエラる。
どうやって同様の値を表せばいいの?
303:デフォルトの名無しさん
10/02/18 22:17:57
>>301
それだとDLRの仕組みが考慮されない
>>302
IntPtr.Zero
304:デフォルトの名無しさん
10/02/18 22:20:55
(string)IntPtr.Zeroが変換エラー
305:デフォルトの名無しさん
10/02/18 22:27:33
string として宣言せずに、IntPtr として宣言しとけばいいだけ。
306:デフォルトの名無しさん
10/02/18 22:28:13
どうもありがとう!
307:デフォルトの名無しさん
10/02/19 06:36:13
いえいえ。次回のお礼時は贈り物をよろしくね。
308:デフォルトの名無しさん
10/02/19 10:55:03
えっ
昨日も贈り物送ったんだけど届いてない?
309:デフォルトの名無しさん
10/02/19 11:48:27
独自パケットを使った通信で
パケットの中身をXMLにして
XmlSerializer使ってらくに通信したいんですけど
参考サイトとかないですか
310:デフォルトの名無しさん
10/02/19 11:50:45
>>309
わけた方がいいんじゃねーの?
通信で送受信する内容はメモリにおいて置けるし
XmlSerializerの方はMemoryStreamで読み書きできるはずだし
311:デフォルトの名無しさん
10/02/19 12:04:07
・・・
参考サイトとかないですか!
312:デフォルトの名無しさん
10/02/19 12:07:22
そもそも独自パケットなんてできるのか?
313:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/19 12:43:24
>>310
見落としてました。
やっぱりいったんメモリに溜めてからですかね。
うーん。
315:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/19 13:08:53
↑は面白いと思ってやってるらしい
317:デフォルトの名無しさん
10/02/19 14:27:07
素直にWCF使えばいいのに
318:デフォルトの名無しさん
10/02/19 15:09:18
何でわざわざ自作すんのかねぇ
319:デフォルトの名無しさん
10/02/19 15:50:23
WCF試してみます。
320:デフォルトの名無しさん
10/02/19 16:33:55
お礼くらい言え
321:デフォルトの名無しさん
10/02/19 16:49:36
お礼は三行以上でお願いします
322:デフォルトの名無しさん
10/02/19 16:59:52
あ
り
が
とうございません
323:デフォルトの名無しさん
10/02/19 17:29:22
WCFってさぁ
324:デフォルトの名無しさん
10/02/19 17:50:38
WCF地味に凄いんだよな。
地味なんだけど。
325:デフォルトの名無しさん
10/02/19 19:26:32
WCF自演乙
326:デフォルトの名無しさん
10/02/19 21:40:36
人工知能かよ
WCFすげえなおい
327:デフォルトの名無しさん
10/02/19 21:43:33
expressだと使えない・・・。
328:デフォルトの名無しさん
10/02/19 22:00:10
VWD2008Expressなら使える
329:デフォルトの名無しさん
10/02/19 22:03:35
Express使うならVC#よりもVWDの方がいいよ
VC#からテンプレート抜き出せばVC#のスーパーセットになる
330:デフォルトの名無しさん
10/02/19 22:42:29
VWDええの?
ASP.NETやる時だけ使ってて、C#はVC#EX使ってたよ。
331:デフォルトの名無しさん
10/02/19 23:28:43
プロジェクトとアイテムのテンプレートをVC#から持ってくれば
VWDでWinFormsもWPFもコンソールも使えるようになるよ
332:デフォルトの名無しさん
10/02/20 01:07:31
Windows Formに数個のRadioButtonと1個のButtonを並べておいて、
適当なタイミング(例えばButtonのクリックイベント)でButtonのEnabledをfalseにすると、
(たぶんTabOrderが一番若い)RadioButtonのClickイベントがクリックしてもいないのに
発火するようなんだけど、これバグでなければどう理解したらいいんだろう?
333:デフォルトの名無しさん
10/02/20 01:18:26
Enableとかしなくても貼り付けてフォーム表示するだけで普通に発生するね
ラジオチェックしてボタンをEnable=falseにしたらチェックの入ってるラジオのクリックイベントが発生したわ
クリックなんか使わないから初めて知った・・・
334:デフォルトの名無しさん
10/02/20 01:24:56
ラジオボタンにフォーカスが移る=クリック扱いのようだな
カーソルキーでぐりぐりとフォーカス移動させるとクリックイベント発生しまくる
335:デフォルトの名無しさん
10/02/20 01:51:25
>>334
なるほど。
でもTabキーでフォーカス移動したときには発生しないようだし、
なんだか妙な仕様に感じるなあ。
しかし、AutoCheckをtrueにできない用途(通信がらみとか)だと、Clickイベントを
使わざるを得ないわけでこういう仕様は困るなあ。
MouseClickを使えってことなのか。
でもそれだとSpaceキーとか拾えないしなうーん。
336:デフォルトの名無しさん
10/02/20 07:59:45
ボタンにフォーカスがあるのにEnterキーでクリックにならない。
で、カーソルキーを← →と押して、フォーカスを一端外してまた戻してやると
なぜかこんどはEnterが使えるようになる。
.Netのコントロールはなんかおかしい。
そんなんプログラマが意識しなくてもデフォルトでそうなってくれてるもんだよな。
337:デフォルトの名無しさん
10/02/20 08:24:29
確かにEnterキーでクリックイベントは起きないな
> で、カーソルキーを← →と押して、フォーカスを一端外してまた戻してやると
> なぜかこんどはEnterが使えるようになる。
でもこれは再現しない
Enterじゃなくてスペースキーなら使えるよ
結局、フォーカスが移るのは関係なくて、ラジオボタンの○が◎になったときに
クリックイベントが発生してるみたいだから、別に問題ないじゃん
タブで移動やEnterで○のままならクリックしてないのと同じだし
カーソル移動やスペースで◎になるならクリックしたのと同じだし
338:デフォルトの名無しさん
10/02/20 11:08:51
え?
339:デフォルトの名無しさん
10/02/20 11:25:12
>329,331
URLリンク(bluewatersoft.cocolog-nifty.com)
プロジェクトに関してはこういう記載ありましたが、
テンプレートの抜き出しとは何をすれば良いのでしょう
340:デフォルトの名無しさん
10/02/20 12:42:54
何をすれば良いのでしょう
341:デフォルトの名無しさん
10/02/20 14:26:48
comboBox1.Items.Add("hoge");
comboBox1.Text = "HOGE";
とすると Text の値が "hoge" の方になってしまうのですが、
大文字・小文字を区別して"hoge"が選択されないようにするには
どうしたらいいでしょうか?
342:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/20 14:41:37
内部で LB_FINDSTRING してるところを無視する。
344:デフォルトの名無しさん
10/02/20 15:21:34
無視するんですね
345:デフォルトの名無しさん
10/02/21 15:22:29
C++/CLIでC/C++の標準ライブラリをラップに包んでC#で利用しようとしているのですが
C#で利用できる名前空間をC++/CLIで定義するにはどうすればいいか教えてくだされ。
346:デフォルトの名無しさん
10/02/21 15:24:56
C++のスレの範囲じゃないの
347:デフォルトの名無しさん
10/02/21 15:27:39
そもそもC#からC++製のマネージドなアセンブリ使う場合/clr:pureでコンパイルしないと使えないんじゃないか?
348:デフォルトの名無しさん
10/02/21 15:29:15
>>345
普通にC++の名前空間にする
>>347
そんなことはない
349:デフォルトの名無しさん
10/02/21 15:30:45
>>348
どうもありがとう!!できました!!!!
>>346
C#から参照してるからC#関係あるだろうが適当な事いうな分からないなら黙ってろクズ
>>347
知ったかぶりはやめましょうね^^
350:デフォルトの名無しさん
10/02/21 15:32:51
TcpClient使ってアクセスしてるならWebAPIの使い方聞いていいって事になるな。
こいつはこじつけが楽でいい。
351:デフォルトの名無しさん
10/02/21 15:33:25
そうだね^^
352:345
10/02/21 15:35:13
>>349
成りすましはやめてください。
353:デフォルトの名無しさん
10/02/21 15:35:48
C#使って351を殺す方法を教えてくださいもOKだね
354:デフォルトの名無しさん
10/02/21 15:37:38
多分同一人物だろうけど、勝手に「自己解決しました。」って発言するやつとか>>349みたいなのがいるからこの板もIDつきにして欲しいな。
355:デフォルトの名無しさん
10/02/21 15:41:17
何度も却下されてるから考えるだけ無駄
356:デフォルトの名無しさん
10/02/21 15:42:33
「なりすましされたくなければ鳥付けて質問しろ」
と次から書いとけ。
357:デフォルトの名無しさん
10/02/21 15:44:13
ム板の花だから
358:デフォルトの名無しさん
10/02/21 15:56:06
>>353
回答したら、幇助になる可能性はあるけどな。
359:デフォルトの名無しさん
10/02/21 16:01:31
動的に生成したPanelにラベルやらピクチャーボックスやらを載せているんですが、
panel.MouseClick += panelClick;
とした場合には、パネル上の他のコンポーネント(ラベルやらピクチャーボックス)
がクリックされた場合は反応しませんよね。
上に載っているラベルとかも含めてパネルがクリックされたら反応させるってことできませんか?
360:デフォルトの名無しさん
10/02/21 16:02:40
そっちのイベントをPanelのイベントに関連づければいい。
361:デフォルトの名無しさん
10/02/21 16:03:08
鳥つけるのもいいけど、ここをよく利用する人にとっても面倒だしなあ
ましてや2ch利用者の多くはテンプレ読まないの多いのにそんなルール
作っても・・・とか思うわ
IDつけてくれとかどこかに要望だしてやってくれるのかな?
362:デフォルトの名無しさん
10/02/21 16:04:12
>>359
panelってむき出しになってる部分あるの?
363:デフォルトの名無しさん
10/02/21 16:05:12
>>360
関連付けってなんです?
panel.MouseClick += panelClick;
label.MouseClick += panelClick;
pictureBox.panelClick += panelClick;
みたいなことをしろってことですか?
364:デフォルトの名無しさん
10/02/21 16:06:58
>>363
うん。
365:デフォルトの名無しさん
10/02/21 16:07:04
>>362
あります
パネルの部分をクリックすると反応します
>>363は
panel.MouseClick += panelClick;
label.MouseClick += panelClick;
pictureBox.MouseClick += panelClick;
でした
366:デフォルトの名無しさん
10/02/21 16:09:08
>>364
わかりました、そうします
ありがとうございました
367:デフォルトの名無しさん
10/02/21 16:09:34
>>365
デザイナーが用意するイベント処理関数はいかにも・・という名前付くけど
実際のところは共通の処理にしても問題ないよ
ただそうなると実際どのコントロールでイベントが発生したかわからなくなるので
コントロールのNameで工夫するかTagがあいてるので識別に使うとかすれば
いけるでないの?
368:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/21 16:31:07
as
370:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/21 16:44:57
>>370-371
Tag使ったほうが比較も早そうですね
ありがとうございます
373:デフォルトの名無しさん
10/02/21 16:47:46
>>372
Tagはobjectなんでなんでもぶら下がるからいいよ~
374:デフォルトの名無しさん
10/02/21 16:48:09
TagなんてVB6かよ・・・
375:デフォルトの名無しさん
10/02/21 16:52:28
>>374
グローバルでフラグ持ったりするよりはいいんでないの?
他にコントロール間の関連付けとかいい方法あったっけ?
376:デフォルトの名無しさん
10/02/21 17:12:32
そもそも、まとめてやりたいはずだったのに、わざわざ区別するのもわからん。
それなら、別のイベントプロシージャでやればいいんじゃね?
で、わざわざTagなんぞ使わなくても、is なり == なりで判定すればいいだけ。
377:デフォルトの名無しさん
10/02/21 17:12:40
>>374
C#って過去の言語の寄せ集めみたいな設計だから
Java臭がしてVB6.0臭がするC/C++ぽい言語ってところだよ
378:デフォルトの名無しさん
10/02/21 17:45:34
それ言い始めたら代入文(=)って全てFORTRAN臭がするってことになるしな。
「・・・かよ」は罵倒にすらならないね。
379:デフォルトの名無しさん
10/02/21 17:48:02
キチガイが来ました-。
380:デフォルトの名無しさん
10/02/21 18:51:25
お前のDNAから猿臭がする
381:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/21 19:48:17
XmlWriterをClose/Flushしてない
383:デフォルトの名無しさん
10/02/21 19:54:27
Tagは便利だけど、これはどうなんだ?って思いながら使ってる。
もっとスマートな方法ないのかね。
384:デフォルトの名無しさん
10/02/21 20:01:22
Dictionaryなり使って外から管理する手もある
385:デフォルトの名無しさん
10/02/21 20:03:16
>>383
ないんじゃね?
2ch専ブラのスレ覧のタブ部分とListViewの連動とか
スレッドのタブ部分とブラウザー部分の連動はTag使った方が
スマートにかけるし、動的生成でとちらない限りはバグを仕込まないしねえ
386:デフォルトの名無しさん
10/02/21 20:04:22
>2ch専ブラのスレ覧のタブ部分とListViewの連動とか
>スレッドのタブ部分とブラウザー部分の連動はTag使った方が
>スマートにかけるし、動的生成でとちらない限りはバグを仕込まないしねえ
これは割りと見慣れてるGUIの実装の例ってことで・・
387:デフォルトの名無しさん
10/02/21 20:19:07
専ブラの例なら、データ構造内に持つのが素直じゃね?
388:デフォルトの名無しさん
10/02/21 20:28:26
>>387
内部構造は別途持つよ
最終的なそれぞれのリンクの話
目印つけたりして判断ロジック入れるのもいいけど
動的にオブジェクト作るときは関連については全部
わかってるんだから、イベント受けた側で条件式使
わないで何をすればいいかわかるようにすればいい
controls.Addでの関連(表示だけの関連)
上panel <-Button
下panel <-ListView
Button.Tag
└ListView.Tag
└内部のデータ構造への関連
ListView
└ListViewItem.Tag
└内部のデータ構造への関連
内部のデータ構造
・・・・
こうすればキャスト数回ですぐに処理可能になる
389:デフォルトの名無しさん
10/02/21 20:49:05
ごめん。全然意味がわからん。
390:デフォルトの名無しさん
10/02/21 20:51:44
俺は28%ぐらい理解した
391:デフォルトの名無しさん
10/02/21 21:01:19
そもそも動的にパネルを生成するのはいいとして、その上のコントロールまで
動的に生成する、などという泥臭いやり方に問題があると思うんだけどね。
上にのっけるコントロールの種類や配置を状況によって変える必要がある、
とかでなければ、UerControlを使うべきじゃないのか。
392:デフォルトの名無しさん
10/02/21 21:41:59
Tag使うくらいならIExtenderProvider
393:デフォルトの名無しさん
10/02/21 22:14:10
>>392
やるじゃん
394:デフォルトの名無しさん
10/02/21 23:13:44
TcpListenerが気がついたら破棄されてるんですが何ででしょう・・・orz
変数としてはずっと保持してるはずなんですが・・・意味がわからん
395:デフォルトの名無しさん
10/02/21 23:20:23
変なことしてるからだろう
396:デフォルトの名無しさん
10/02/21 23:21:59
設定画面用のフォームを作成してXMLファイルから設定を読み込み。
メニューから設定画面を呼び出すと1度目は表示されるのですが2度目からは破棄されたオブジェクトとなってしまいます。
FormをClose()しているのですがClose()すると破棄されてしまうんでしょうか?
397:デフォルトの名無しさん
10/02/21 23:25:37
フォームが閉じると、オブジェクト内で作成されたすべてのリソースが閉じ、フォームが破棄されます。
398:デフォルトの名無しさん
10/02/21 23:25:39
うん。
399:デフォルトの名無しさん
10/02/21 23:36:28
ああ・・・そうだったんですね・・・orz
1から作り直してきます
400:デフォルトの名無しさん
10/02/22 00:33:34
モードレスならHideでも行けるぜ
401:デフォルトの名無しさん
10/02/22 00:40:15
C#って画像を任意の三角形で切り抜いて表示とかできる?
402:デフォルトの名無しさん
10/02/22 00:44:31
できる
403:デフォルトの名無しさん
10/02/22 00:45:17
unsafe使わないと遅い
404:デフォルトの名無しさん
10/02/22 01:15:28
例えば単にClip領域を設定して描画するだけの話で、そう遅いとも思えんけどね。
405:デフォルトの名無しさん
10/02/22 03:54:01
>>391
まあサンプルが2ch専ブラの話だしねえ
既存の2ch専ブラを模倣するとそういう実装になるってことじゃないの?
406:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/22 09:05:55
>>406
そのコードは何をしたいんだ
408:デフォルトの名無しさん
10/02/22 09:11:51
>>401への回答だろ。流れ的に
409:デフォルトの名無しさん
10/02/22 10:31:07
>>406
アンカーくらいつけろよ、くちべた君(笑)
410:デフォルトの名無しさん
10/02/22 11:58:37
必死に考えて、ケチつける所が「アンカー付いてない」だけなんてwww
411:デフォルトの名無しさん
10/02/22 12:11:54
しかも「くちべた君」w
412:デフォルトの名無しさん
10/02/22 12:16:59
C##
413:デフォルトの名無しさん
10/02/22 12:27:08
>>401-408で何事か起きたわけでもないのに>>409でなぜ罵倒に至ったのか…
414:デフォルトの名無しさん
10/02/22 13:19:07
>>406
やってみたらできました
ありがとうございます
415:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/22 16:04:24
>>415
そのnewをやめて軽くなるならそれが原因じゃね?
417:デフォルトの名無しさん
10/02/22 16:15:00
DisposeやFinalizeがあるクラスでなければ、
ほとんど問題にならないと思うよ。
418:デフォルトの名無しさん
10/02/22 16:17:40
何がどれぐらい重くなるのかも調べずに「気がする」って言われてもなぁ
419:デフォルトの名無しさん
10/02/22 16:17:49
ほとんど問題にならないと思うよね。
420:デフォルトの名無しさん
10/02/22 17:01:54
問題は毎回 new する必要が本当にあるのかどうか
421:デフォルトの名無しさん
10/02/22 18:02:57
普通に考えると、この程度で体感できるほど重くなる筈がない。
勘違いか見当違いの所探してるだけだろ。
422:デフォルトの名無しさん
10/02/22 18:33:36
へえ
423:デフォルトの名無しさん
10/02/22 18:35:44
別の場所かコード端折ったとこに原因があるか
424:デフォルトの名無しさん
10/02/22 19:11:50
newしてるクラスがかなり小さく、かつ内部でアンマネージ捕まえてたりすると重くなるかも
425:デフォルトの名無しさん
10/02/22 20:41:19
たしかに
426:デフォルトの名無しさん
10/02/22 22:41:00
適当に重くなったときにCGに強制回収させてみて、それっから処理が軽くなったら・・・とかで調べてみるとか
427:デフォルトの名無しさん
10/02/23 05:18:54
>>408
>>406だけ見ると>>401が試行錯誤してコード書いたけどうまくいかなくて質問
来た様にも見えるしなあ
結論とすれば>>409のいうことだよ
428:デフォルトの名無しさん
10/02/23 07:22:45
くちべた君(笑) これははやるかもしれん
429:デフォルトの名無しさん
10/02/24 19:21:55
某フォーラムで提供されているライブラリー(URLリンク(mmf.codeplex.com))を使って、
メモリーマップドファイル版のListのジェネリッククラスを作った。
URLリンク(www6.atpages.jp)
15MBのテキストファイルで実験したら、31MBぐらいディスクスペースを消費して、プロセスのワーキングセットが80MBを超えた。
おまけに、読み終わるまで3分近くかかって、使い物にならない。
構築がこれよりも早いデーター構造はない?
430:デフォルトの名無しさん
10/02/24 19:28:28
CLRでファイルマッピングがサポートされるのはV4からだっけ?
どういう構造のライブラリーか知らないが、普通にP/InvokeでファイルマップのAPIを使うと、
ネイティブのViewからマネージドメモリへマーシャリングが起きると思うんだけど。
431:デフォルトの名無しさん
10/02/24 19:44:04
SQL Server Compact Editionでも使えばと言いたくなるのだけれど
432:デフォルトの名無しさん
10/02/24 23:32:17
自宅でgoogleで「C#」で検索してもCしかかからないんだけど
会社で検索するとちゃんと出る…
なんか設定とかあるのかねこれ
433:デフォルトの名無しさん
10/02/24 23:43:30
アドレスバーにq=C%23って出てるか?
434:デフォルトの名無しさん
10/02/25 00:37:45
他のキーワードとあわせてC#検索したらその後からC#単独で検索しても
引っかかるようになった。
どんなロジックなんだgoogle…
>>433
出てるよー
435:デフォルトの名無しさん
10/02/25 01:50:33
FILE_ATTRIBUTE_TEMPORARY指定の一時ファイルを使って、
擬似MemoryStreamを作ったことならある。
436:デフォルトの名無しさん
10/02/25 01:55:40
>>429
よく見てないがそれ以前にシリアライザなんか使ったら遅いに決まってる。
437:デフォルトの名無しさん
10/02/25 12:50:48
>>434
普通に前回までの検索結果が反映されてただけじゃないの?
438:デフォルトの名無しさん
10/02/26 22:31:57
>>430
P/Invokeってそんなにコストがかかるの?
ライブラリーのソースを調べたら、思いっきり使いまくってるんだが・・・
439:デフォルトの名無しさん
10/02/26 22:41:59
P/Invokeのセキュリティチェックと、場合によってマーシャリングはそれなりにコストはかかるが、
メモリマップした後の単なるポインタアクセスじゃそんなの関係ないからそう影響はない。
もちろん、例えばタイトなループ内でP/Invokeを繰り返したら影響はでかい。
それとは別に、カーネルモードへの移行が必要となるようなAPIでは、
P/Invokeとは関係なくかなり負荷が高い。
カーネルオブジェクトの操作する場合など。
440:デフォルトの名無しさん
10/02/26 22:44:20
セキュリティチェックを省いたり、bittableなやり取りだけになるように工夫すれば、大した負荷はない。
441:デフォルトの名無しさん
10/02/26 22:44:23
メモリーマップドファイルて普通の業務アプリ使ってて何に使うのかぱっとおもいつかん・・
DBとかだと有効かもしれんが普通DB使うだろうし・・・
ん~・・・
だれかおいしい使い道教えてくれ
442:デフォルトの名無しさん
10/02/26 23:16:01
>>441
エディターの類。
巨大なファイルもファイルマッピングで編集すると、効率がいいらしい。
443:デフォルトの名無しさん
10/02/26 23:34:08
巨大なファイル使う時ぐらいでしょ。
業務アプリでは考える必要ないと思う。
444:デフォルトの名無しさん
10/02/26 23:34:25
プロセス間である程度大きいデータを共有したいときとか。
で、かつ、ファイルやDBとか使えないときに使ったことがある。
445:デフォルトの名無しさん
10/02/26 23:48:51
どなたかDelphi使いでC#に乗り換えた方いますか?
DelphiでのTGraphicControlみたいに簡単にグラフィック系のコンポーネントを作るには
C#だとなんてクラスを使うんですかね?
C#でメータとかグラフとかのコンポーネントを作りたいんだけど・・・
446:デフォルトの名無しさん
10/02/26 23:50:51
WPFつかえばらくちんぽんで出来るYO!
447:デフォルトの名無しさん
10/02/26 23:53:45
Controlから直接派生してOnPaintをオーバーライド
まあWPF使えばコード一行も書かずに何でも描けるけどね
448:デフォルトの名無しさん
10/02/27 00:01:16
あら、即効で・・・
WPFですか。
ちょっと勉強してきます。
ありがとうございます。
449:デフォルトの名無しさん
10/02/27 00:23:36
>>442-444
サンクス
なるほど・・・勉強になった
450:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/27 02:14:01
むしろSQLクライアントでログ取ればいんじゃね?
少なくともOracleのにはあったハズ
452:デフォルトの名無しさん
10/02/27 08:56:17
パケットキャプチャすればいいよ
453:デフォルトの名無しさん
10/02/27 11:43:51
俺はparametersを自力で展開してたけど、いいやり方あるのかな
Nullの扱いと’のエスケープをちゃんとすればログのSQLをコピペして使えたけどどうなんだろう
454:デフォルトの名無しさん
10/02/27 13:29:17
オレもいい案があれば知りたい
455:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/27 19:41:08
きちんと切り抜きして出直し。
boolのControlsプロパティにAdd?
問題はpanelの方だろさ。
457:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/27 19:56:42
>>457
ふざけてるのかw
459:デフォルトの名無しさん
10/02/27 20:02:22
>>458
え、なんでしょう?まじめなつもりです
460:デフォルトの名無しさん
10/02/27 20:13:40
これ、コンパイル通るのか?
461:デフォルトの名無しさん
10/02/27 20:18:14
どうやったらコンパイル通るんだろう
using bool = System.Windows.Forms.Panel;は通らないね
Panelは質問者自身が作ったクラスで、boolへの暗黙の型変換演算子をオーバーロードしてるのか
462:デフォルトの名無しさん
10/02/27 20:33:18
あああすみません、今気付きました;
関数の戻り値のほうですか
もちろんboolではなくてPanelです
463:デフォルトの名無しさん
10/02/27 23:29:59
うん、で、panelのプロパティ設定には問題ないのか?という話。
464:デフォルトの名無しさん
10/02/28 00:03:14
というかまあ、問題が再現可能なコードを書いてそのままコピペしてない時点で、
言っちゃ悪いけどもう「問題」は質問者自身の問題解決能力にあることがはっきりしてる。
こういう人ってどういう思考回路してるんだろう。
マジで理解不能。
465:デフォルトの名無しさん
10/02/28 01:14:54
多分だけど、まるごとコピペすることが手抜きに思えたりするんじゃない?
だから手動でわかりやすく抜粋しているつもりなんだよ。
はた迷惑だけどね。
466:デフォルトの名無しさん
10/02/28 10:59:02
抜粋じゃなくて隠蔽だけどな
467:デフォルトの名無しさん
10/02/28 13:21:57
.NET 2.0のlistviewで質問です。
View=Details、オーナードロー、仮想モード、MultiSelect=true、HideSelection=falseにしています。
カラムをクリックしたらソートするようにしてるんですが、選択行が変化しません。
たとえば3行目が選択されていたとして、ソートの結果3行目のデータが2行目に移動しても
相変わらず3行目のみ選択された状態になります。
このあたりの処理も何となく自分でやらなきゃとは思うんですが、どうしたらいいでしょうか?
468:デフォルトの名無しさん
10/02/28 14:49:58
オーナードローなんだから自分で描画が必要でしょう。
OnDrawColumnHeader、OnDrawItem、OnDrawSubItemのイベントを自分で記述する。
469:467
10/02/28 15:10:36
>>468
それらのハンドルは記述していて、ソートを行わなければ正常に表示されます。
問題は、ソート後に描画しようとしているデータがソート前に選択されていたかどうかを
どうやって知るか、ということだと思うんですが。
470:デフォルトの名無しさん
10/02/28 15:11:11
オナニードロー
471:デフォルトの名無しさん
10/02/28 15:33:11
>>467
それはオーナードロー関係ないんじゃねーの?
ソートをかけるタイミングで行の位置じゃなく選択行のデータを覚えてて
ソート後にそのデータに対して選択をセットする・・・とかだろ
472:デフォルトの名無しさん
10/02/28 15:34:53
VirtualModeの場合、
まず、各アイテムの選択状態も自分で保持しておく必要がある。
で、ソートが終わった後でそれに従ってSelectedIndicesをクリアして追加したりする。
473:デフォルトの名無しさん
10/02/28 15:59:24
SubItemごとに固有のtag値を持って描画時に判断すればいいんじゃないのか?
474:デフォルトの名無しさん
10/02/28 16:12:32
ソート前のSelectedItemsから項目コピーしといて、
ソート後にSelectedIndices.Clearして、Itemsの各itemを
コピーしといた項目にあるかどうかContainsしてSelectedIndices.Add
じゃないかなー?試してないけど。
475:467
10/02/28 17:09:14
>>471-474
ありがとうございます。
なるほど SelectedIndicesがポイントですね。
ちょっと試してみます。
476:デフォルトの名無しさん
10/03/01 00:07:41
Assertに引っかかるとダイアログが出る。
だが、そのダイアログが大きすぎで画面からはみ出てしまう。
このままじゃあ、ボタンすら満足に押せないんだが、どうにかする方法はない?
477:デフォルトの名無しさん
10/03/01 00:19:11
ARIのどれかキーボードで押せばいいんじゃね
478:デフォルトの名無しさん
10/03/01 00:56:19
出力するメッセージを減らす
479:デフォルトの名無しさん
10/03/01 01:51:37
なんでAssertでそんな膨大なメッセージが要るんだ…
480:デフォルトの名無しさん
10/03/01 04:17:51
>>479
普通にAssertさせたら、ものすごい行数のスタックログが表示されて…以下略
481:デフォルトの名無しさん
10/03/01 07:35:13
ダイアログにフォーカス映してCtrl+C
482:デフォルトの名無しさん
10/03/02 21:29:24
mouse enterで設定したテキストを表示させたいんだけど、その表示のさせ方が、htmlでいうaltタグとか画像のtitleタグ
みたいに説明を出したい。
483:デフォルトの名無しさん
10/03/02 21:30:41
ああ途中送信してしまったわかりにくい説明で申し訳ない
484:デフォルトの名無しさん
10/03/02 21:33:38
ToolTip
485:デフォルトの名無しさん
10/03/02 21:49:29
ありがとう
486:デフォルトの名無しさん
10/03/02 22:52:20
WCFのシリアライズ便利だな
XmlSerializerよりもずっと使いやすい
487:デフォルトの名無しさん
10/03/02 23:15:13
>>486
プロレス団体みたいな名前がついた技術は今だにまったく使ったことないやw
XMLシリアル化と比べて特にどんな点が便利なの?
488:デフォルトの名無しさん
10/03/02 23:18:16
教えない♥
489:デフォルトの名無しさん
10/03/02 23:41:16
プロパティだけではなくフィールドもシリアライズ可
メンバや型がpublicでなくてもいい
Dictionaryもおk
循環参照対応
速い軽い
SerializableAttribute, ISerializableにも対応
欠点
XMLのフォーマットはほとんど制御できない。既存のXML文書の読み取りには使えない。
490:デフォルトの名無しさん
10/03/02 23:42:38
連続して申し訳ない。
Accessと繋いでデータグリッドビューにデータを表示させてる。
データセットでselect * fromテーブル名 でやってるから主キーまでdgに表示されちゃうんだよね。
編集の時に主キーが一致するものを・・・にしてあるから主キーは絶対取得したい。けどdgにはでてこないでほしい・・・
あとでボタンを押したら選択されてる行の中身を全部からにしたいんだけどうまくいかない。
currentRowsさん調べたけどわからなかった。
491:デフォルトの名無しさん
10/03/02 23:43:37
要するにSoapFormatterの出力を普通のXMLに変更したようなもんか
492:デフォルトの名無しさん
10/03/02 23:50:34
>>490
デザイナでデータソース設定してないの? 列の編集とかできるのに
どうしてもコードでやらなきゃ気が済まないってんならLoadイベント辺りでDataGridView.ColumnsからRemoveすればいいけど
現在行とか使うならデータソースにはBindingSource使うのがベター
493:デフォルトの名無しさん
10/03/02 23:55:42
>>489
なるほど。
型がpublicでなくてもいいのは魅力かも。
XMLSerializerだと、設定値を保存するための他からは用のないインナークラスを
publicにする必要があったから。
バージョントレランスはどうなのかね。
メンバーが増えたり減ったりしてもそのまま読めるんだろうか。
494:デフォルトの名無しさん
10/03/02 23:57:59
何をシリアライズするかはあくまで明示的に決めるのでXmlSerializerに近いかな
型にDataContract属性を付けた場合はDataMember属性が付いたメンバ(private可)だけがシリアライズされて
DataContract属性を付けない型についてはパブリックメンバのみがシリアライズされるようになってる
495:デフォルトの名無しさん
10/03/03 00:04:02
>>492
dg部分は他人が作ったんだけどめちゃくちゃなソース書いてて、ソース書けないのにデザイナ使わずに設定してた。
removeタメしてみます。感謝。
496:デフォルトの名無しさん
10/03/03 00:24:58
>>493
とあるゲームで使ってるけど、増えても減っても大丈夫だよ。
ないバージョン→あるバージョンの場合は、エラーにならないが追加されたフィールドは初期値
なので自分で初期化しないと駄目。
特に a= new hoge()とか書いているやつは、newされていないので自分で生成する必要がある。
今OS再インスコしたばかりで手元にないけど、確かデシリアライズされた時に呼ばれるメソッドが
あるのでそこで初期化すればいい。
あるバージョン→ないバージョン
シリアライズされたフィールドは無視してくれる。
特に処理必要なし。
497:デフォルトの名無しさん
10/03/03 00:26:44
ごめん、WCFのシリアライズじゃなくて.Netのシリアライズの話だったorz
498:デフォルトの名無しさん
10/03/03 06:24:13
Webプログラムしか経験がなく動画処理に手を出してみたくてC#はじめました
URLリンク(support.microsoft.com)
これを見てソースをコピペして適当な動画にさしかえて実行したところ
音声がなるのみで映像がでてきませんでした
何を追加したらよいのでしょう?
コメントもないし何をしてるかよくわかりませんが
一応実行できるソースをいただければ後は頑張って調べてみたいと思うので
どうかよろしくお願いします
しかしMSDNのドキュメントは読みづらいですねIDE(VC#)も使いにくいし・・・
なれるまで時間かかりそうorz
499:デフォルトの名無しさん
10/03/03 06:41:24
MSDNが読みづらいってのは同意するけど、VS以上のIDEって存在するか?
500:デフォルトの名無しさん
10/03/03 08:30:41
月蝕
501:デフォルトの名無しさん
10/03/03 09:00:39
eclipse も VS も似たようなもんだと思うけどなぁ。
シコシコ書くなら emacs ちゃん!
502:デフォルトの名無しさん
10/03/03 09:35:05
>>498
うちはXPだけど、再生するファイルを以下にしてちゃんと表示された
objMC.RenderFile( @"C:\WINDOWS\clock.avi" ); //このファイル何のためにあるんだろ
映像codecの問題じゃないかな
その映像が出ない動画、エクスプローラからダブルクリックで表示される?
503:デフォルトの名無しさん
10/03/03 09:37:42
>>502
windows98くらいからの名残じゃなかったっけ?
//このファイル何のためにあるんだろ
システムフォルダに結構昔からの名残があったりするよ
504:デフォルトの名無しさん
10/03/03 10:29:44
Win3.1のVideo for Windowsにもあったな。
505:デフォルトの名無しさん
10/03/03 13:33:08
>>496
それは問題ないとは言わないだろうw
XmlSerializerやDataContract(WCF)では中身を丸々保存するんじゃなくて
外から見て書き写すので実装がごっそり変更されてもかまわない
506:498
10/03/03 16:57:24
レス遅れてすみません。
>>502さんのファイルにしたら再生することができました。
他のaviで試してみたところ正常に動作したので
最初に実験に使ったファイルがmpgだったのがいけなかったようです。
コーデックはffdshowが使われているようです。
wikipediaの説明を見るかぎりコーデックが入ってればなんでも再生できそうな雰囲気だったのですが、
何か勘違いしているのかもしれません。
再生できましたのでソースの意味をこれから調べてみたいと思います。
レスいただいた方ありがとうございました。
ちなみに普段使ってるのはEclipseです。
似たようなもんなんですけど何かが違う・・・
何がおかしいのかよくわからないけど細かいところで違和感が・・・
とそんな感じです。
507:デフォルトの名無しさん
10/03/03 22:21:12
ボタン押したらパネルのbackground imageを無くして初期状態にしたんですがどうすればいいでしょうか
508:デフォルトの名無しさん
10/03/03 22:38:11
したんだったらそれでいいじゃないか
したいんだったらnull入れとけ
509:デフォルトの名無しさん
10/03/04 07:54:54
メモ帳なんかで保存しないで閉じた時になるようなサウンドなんですが
こういうWindows専用のプログラムって
Windowsフォルダ内にそういうファイルがあると踏んでプログラムするもんなんでしょうか?
510:デフォルトの名無しさん
10/03/04 07:58:48
>>509
あれはwindowsのシステムサウンドを鳴らしてるだけでしょ
windows システム サウンド
とかでググルとわかるよ
511:デフォルトの名無しさん
10/03/04 08:33:00
>>510
ありがとうございます
鳴らすための専用のプロパティまで用意されていたんですね
簡単に鳴らすことができました
512:デフォルトの名無しさん
10/03/05 00:52:45
>>511
それぞれの時に鳴る音はWindowsの設定で変更できるよ
513:デフォルトの名無しさん
10/03/05 05:18:19
普段まったく見えないコンポーネント群の中で
どれがどういう奴か網羅してるサイトとかってある?
514:デフォルトの名無しさん
10/03/05 06:19:50
> 普段まったく見えないコンポーネント群
ってなんだよ?
515:デフォルトの名無しさん
10/03/05 08:57:49
.NETでコンポーネントっつったらIComponent継承してる奴全部だと思うけど
全部網羅してる奴なんてMSDN以外にないだろうな
516:デフォルトの名無しさん
10/03/05 10:11:43
正規表現で、
Hoge(Hoge(Hoge("unko","unko2"),"hogehoge"),"syobo-n")
みたいのを解析したいとしたらHoge(xxx,xxx)のような感じでかつなかにHoge(xxx,xxx)を含まないものでマッチさせて、
それを取得するとともに適当な文字、たとえば###にReplaceしてその上の階層をマッチさせて…みたいな感じになるのかの.
まんどくせorz
517:デフォルトの名無しさん
10/03/05 10:12:12
WPFのコンポーネントはIComponent使わないよ
518:デフォルトの名無しさん
10/03/05 10:15:48
>>516
一番いいのは解析しなくて済む方法を考えることだお
519:デフォルトの名無しさん
10/03/05 10:21:15
>>516
ちゃんとソースコードの解析とかDSLとかやりたいんだったら
伝統的なコンパイラ製作の手法を使ったほうがいいよ
C#ならGPPGとか使ってパーサを生成する
520:デフォルトの名無しさん
10/03/05 10:21:17
こんなの解析したとしてもしれてるだろ
521:デフォルトの名無しさん
10/03/05 10:22:11
>>516
こちらへ
正規表現 Part6
スレリンク(tech板)
c#の独自の機能ってわけじゃないので
522:デフォルトの名無しさん
10/03/05 10:51:58
入れ子のある構造は正規表現向きじゃないな
523:デフォルトの名無しさん
10/03/05 11:38:15
>>514
ツールボックス右クリック アイテムの選択で出てくるリストで
チェックされて無いやつ全部
524:デフォルトの名無しさん
10/03/05 11:43:44
MSDN以外にあるわけねえだろ
525:デフォルトの名無しさん
10/03/05 11:45:33
なんかでるなあ
グレーアウトというか半透明で後ろの色と重ねてあるというか・・・そんな表示で
部品の名前見てるとVB6.0時代の名残?
526:デフォルトの名無しさん
10/03/05 11:58:23
引数の形式を>>516の(再帰, "文字列")に限るなら
(?<id>[\w\W]+)\((?<r>.*),"(?<str>[^"]*)"\)
で最長一致でキャプチャしてrについて繰り返せばいけそう
一般的にやるのは.NETの正規表現だけではたぶん無理
527:デフォルトの名無しさん
10/03/05 13:28:13
.NETにはじめから付いてるコンポーネントの中でデフォルトで
ツールボックスに表示されてないものは実際あんまり使うことないと思うよ
VB6っぽいのはたぶん.NETじゃなくてCOMのコンポーネント
COMの方はどうしてもというわけでなければなるべく使わない
528:デフォルトの名無しさん
10/03/05 15:53:32
>>527
乗り物全集の中で、デフォルトが自家用車だらけなのに
裏ではこっそり1輪車からアポロとか回天とかあったらさ・・・
必死なときは回天使ってみたい場合もあるじゃん
知らなきゃ自動車を容器で包んで見た目潜水する特攻≠自沈機械つくらなきゃならん
529:デフォルトの名無しさん
10/03/05 15:56:14
何が言いたいかわかりにくいよw
理解したけどw
530:デフォルトの名無しさん
10/03/05 17:16:04
で、誰もメンテできない、糞アプリが出来上がると
531:デフォルトの名無しさん
10/03/05 18:26:00
System.Drawing.BitmapをDIBSectionみたいにピクセルにポインタで
高速にアクセスしたいんですけどどんな感じで実現できますか。
ゲームで利用するためにαブレンドとか加算合成とかを実装したいです。
532:デフォルトの名無しさん
10/03/05 18:59:21
LockBitsでググれ
でもどっちにしろGDI+でゲーム作るのはやめたほうがいいと思う
DirectXやWPF使えば全ての努力が虚しくなるくらいの圧倒的な速度が簡単に得られる
533:デフォルトの名無しさん
10/03/05 19:03:08
LockBitsしてBitmapDataに書き込みしてUnlockBitsで書き戻し
ただしコピーが入る
WPFでPixelShader使った方が早いかも知れない
534:デフォルトの名無しさん
10/03/05 19:47:14
なるほどやっぱりメモリ直接触れないのがネックですね。
WPFってコントロールをXML経由で制御するイメージがあって
遅いと思い込んでたんですけどちょと試してみようかな…
C++ではDIBSection使ってたからDirectXはちょっと今更感が…
ありがとうございました。
535:デフォルトの名無しさん
10/03/05 20:54:30
WPFもDirectXベースだからな
αブレンドや加算合成などは自分では一切実装せずに全てハードウェアに丸投げするのが基本
536:516
10/03/05 22:40:20
いろいろレスあり。
正直ANTLRでも使いたいところだけど、ほんの一箇所の機能のためにランタイムDLLがいくつも増加するのがなぁ…
537:デフォルトの名無しさん
10/03/06 00:19:13
字句解析 & 構文解析は書いてみると想像してるより結構簡単だから
限定された部分だけなら自前で書いちゃうのもありだと思うよ。
538:デフォルトの名無しさん
10/03/06 00:32:22
今の時代PCでもCPUとメモリのリソースが滅茶苦茶多いしブーストラップの必要も全くないから
字句解析と構文解析なんてあんまり神経質にならなくても適当な資料当たって組めば良いと思うよー
539:デフォルトの名無しさん
10/03/06 00:38:32
ANTLRはランタイムライブラリの出来が悪いんだよなあ
Ironyなんか面白そう
540:デフォルトの名無しさん
10/03/06 01:59:45
GDI+はラスタオペレーションなくなったのか
殺してやる
541:デフォルトの名無しさん
10/03/06 05:17:04
>>540
つうほうしました
542:デフォルトの名無しさん
10/03/06 11:24:10
時代はピクセルシェーダだよ
WPFはもちろんSilverlightでもサポートされてる
543:デフォルトの名無しさん
10/03/07 00:19:54
やっぱWPFやんなきゃダメだな orz
544:デフォルトの名無しさん
10/03/07 00:30:38
C#の文法的なことを聞きたいのですが、
Button のClickイベントにプラスするdelegateの匿名メソッドの中でthisって書いてもこのthisはButtonでなくFormをさすんでしょうか?
ちなみに、Form1の中にButton1があり、Form1.cs(class名:Form1)のファイルに書いています。
545:デフォルトの名無しさん
10/03/07 00:32:49
うん
JavaScriptとは違うというかJavaScriptが異端
546:544
10/03/07 00:35:47
>>545 ありがとうございます。
JavaScriptだと逆の結果になるんですね。
とりあえず、C#の場合はFormをさすということがわかり、ありがたいです。
結構長い間疑問だったんで・・ありがとうございました。
547:デフォルトの名無しさん
10/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);
}
}
548:544
10/03/07 16:24:51
>>547
どうもありがとうございます。今書いてるクラスが主?っていうかthisの主体になるんですね。
よ~く、わかりました。勉強になりました。ありがとうございました。
549:デフォルトの名無しさん
10/03/07 19:48:15
クラスというよりはインスタンスだな
staticメソッドでは使えないから
550:デフォルトの名無しさん
10/03/07 22:48:55
ちょいと質問
SELECT Format([日付テーブル]![日付],"yyyy/mm/dd") AS 年月, スケジュール.タイトル, スケジュール.メモ帳 FROM スケジュール ORDER BY Format([日付テーブル]![日付],"yyyy/mm/dd");
これC#で使いたいんだけど、yyyy/mm/ddのところどう書いたらちゃんと動いてくれる?
551:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/07 23:45:40
>>550
これC#というよりSQLだよね
FROMに指定されてないテーブル参照してるよ
使ってるDBとエラーメッセージくらい書こうね
あと自動で作成されたSQLそのまま使うより
もう少し簡潔にした方が良いよ
553:デフォルトの名無しさん
10/03/08 01:37:00
そうか、春休みか。
554:デフォルトの名無しさん
10/03/09 12:35:42
なぜかMSDNの字が小さく変更されたような
555:デフォルトの名無しさん
10/03/09 13:10:44
ライトウェイトがすばらしい
556:デフォルトの名無しさん
10/03/09 15:42:17
・構造体では、インターフェイスを実装できます。
なんか意味あんのかなこれ
557:デフォルトの名無しさん
10/03/09 15:43:42
なぜ意味が無いと思ったのか聞きたい
558:デフォルトの名無しさん
10/03/09 16:31:51
IComparable<T>とかIEquatable<T>とかは知らないうちに恩恵にあずかってる
559:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/09 17:43:35
作業環境は、
OS:VISTA32bit
VisualStudioC#2008ExpressEdition
対象フレームワークの設定は3.5です。
562:デフォルトの名無しさん
10/03/09 17:45:49
何をしたいのか分からん
アセンブリを動的ロードするならAssembly.GetTypeとか使えばいい
563:デフォルトの名無しさん
10/03/09 17:53:48
最終的にやりたいことは設定ファイル(text)に基づいて、
指定のclassをインスタンス化する事です。
その前段階で指定したclassのTypeが必要なようですので、
Type.GetTypeで得ようと試みていたところです。
564:デフォルトの名無しさん
10/03/09 17:57:36
> その前段階で指定したclassのTypeが必要なようですので、
そのTypeはLoadしたAssemblyオブジェクトからAssembly.GetType等で取得するもの
565:デフォルトの名無しさん
10/03/09 18:00:50
どうでもいいけど 1/1、2/2じゃなくて1/2、2/2じゃないのか?
566:デフォルトの名無しさん
10/03/09 18:14:51
>>562>>564
ご指摘ありがとうございます。
Assembly.GetTypeで上手く取得できました。
>>565
たしかに・・・。
申し訳ない。
567:デフォルトの名無しさん
10/03/09 23:22:48
> その前段階で指定したclassのTypeが必要なようですので、
くそわろた。
568:デフォルトの名無しさん
10/03/10 00:50:15
1/1,2/2が地味にきくわ
569:デフォルトの名無しさん
10/03/10 14:30:19
すみません。質問です。
XMLの件なので、こちらで聞くか迷ったんですが、こちらでお願いします。
URLリンク(weather.livedoor.com)
上記の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:デフォルトの名無しさん
10/03/10 14:56:31
>>569
Byte配列に格納する時点で失敗してる可能性が大。
571:デフォルトの名無しさん
10/03/10 15:19:35
これで問題なく読めることが分かる。
using System;
using System.Xml;
class Program {
static void Main() {
var xrdr = XmlReader.Create("URLリンク(weather.livedoor.com)");
var xdoc = new XmlDocument();
xdoc.Load(xrdr);
xdoc.Save(Console.Out);
}}
572:デフォルトの名無しさん
10/03/10 15:37:17
35 61 38 -> 5a8 -> 1448
TCPのデータ長がこんなんだっけ?
573:デフォルトの名無しさん
10/03/10 15:40:56
受信の際のエンコードはxmlの中にかかれてるので自動で認識した後
勝手にucs-2に変換されてない?
xmlとかの問題じゃなく文字コードの扱いを分かってないような
574:デフォルトの名無しさん
10/03/10 15:50:52
すみません。
エラーが出たURLは
URLリンク(weather.livedoor.com)
こっちでした
>>570
ちょっと調査してみます。
>>571
丁寧にコードまで書いていただきありがとうございます。
一度Byteに格納しないほうがいいんですかね。
ネットワークが不安定なので、一度ローカルに持って行きたかったんです・・・
>>573
ありがとうございます。
正直文字コードの扱いよくわかってないです。
ローカルにByte配列で持ちたかったので、こういう形になっています。
575:デフォルトの名無しさん
10/03/10 15:52:28
>上記のXMLを解析しようと思い、Byte配列に受信しました。
Byte配列に受信しました。
この部分のコード晒せる?
576:デフォルトの名無しさん
10/03/10 15:55:18
バイト配列取得以降の問題かもしれない。
Socketクラスを参考にしていた場合、そのサンプルはバグというか不親切。
do {
bytes = s.Receive(bytesReceived, bytesReceived.Length, 0);
page = page + Encoding.ASCII.GetString(bytesReceived, 0, bytes);
}
をUTF8に変更しただけじゃダメ。これは多バイト文字の途中だろうとお構いなし。
文字の境界を判断するか、それとも全部バッファに取ってから変換する必要がある。
577:デフォルトの名無しさん
10/03/10 16:01:22
あ、 0d 0a 35 61 38 0d 0a の理屈が付かないからそれは無いか・・・
578:デフォルトの名無しさん
10/03/10 16:02:19
>>577
うむ
エスパーしてもしかたないので
>>575なんだよw
579:デフォルトの名無しさん
10/03/10 16:03:04
WebClient.DownloadDataあたりだったら問題ないのかしらん
580:デフォルトの名無しさん
10/03/10 16:05:10
>>579
というか通信にしろファイルにしろエンコード指定しておけば指定したエンコードで読み込んだあと
ucs-2に勝手に変換してくれるはずなんだけどな・・・
581:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/10 16:15:56
Socketとかhttpの練習とか学習?
単純にrssリーダーぽいことができればいいとかなら
WebClientでデータとってきてxmlに投げるとかすればいいだけだよ
583:デフォルトの名無しさん
10/03/10 16:24:36
応答のHTTPヘッダがなんて言ってるのかも気になる
584:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/10 16:35:04
chunked
586:デフォルトの名無しさん
10/03/10 16:36:45
>>584
ここのサンプルコードを書き換えたけど問題なく受信できたな
URLリンク(dobon.net)
URLリンク(codepad.org)
最後のtextboxだけ用意してくれ
587:デフォルトの名無しさん
10/03/10 16:41:33
0d 0a 35 61 38 0d 0a
は長さ5a8バイトということか
588:デフォルトの名無しさん
10/03/10 16:42:11
>>585でFAじゃまいか
こういうのは透過的に扱ってくれるライブラリ使わないと面倒くさいね
589:583
10/03/10 16:42:17
>>585
ああやっぱり
590:デフォルトの名無しさん
10/03/10 16:46:10
>>586
丁寧に書いてもらってありがとうございます。
MicroFramework用に変更して使ってみます。
>>587
どうやらそうっぽいです・・・そのバイトずつわけて受信すればいいんですかね?
>>588
chunkedググってみます
591:デフォルトの名無しさん
10/03/10 16:49:22
HTTP/1.1 は chunked で送られてくるからめんどくさいよね
592:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/10 16:52:33
もうこの程度ですら自力で実装するのを億劫に感じててヤバイ