ふらっとC#,C♯,C#(初心者用) Part41

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

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

前スレ

ふらっとC#,C♯,C#(初心者用) Part40
http://pc12.2ch.net/test/read.cgi/tech/1239599317/
2デフォルトの名無しさん:2009/06/06(土) 12:31:32
3デフォルトの名無しさん:2009/06/06(土) 14:16:04
4デフォルトの名無しさん:2009/06/06(土) 17:09:29
>>1
前スレ埋まりage
5デフォルトの名無しさん:2009/06/06(土) 17:16:24
> >>997
> で,言いたいことは?
VB.NET >>>> C#
6デフォルトの名無しさん:2009/06/06(土) 17:17:10
君にとってはそうかもしれんね
7デフォルトの名無しさん:2009/06/06(土) 17:30:55
>.NET構想における中心的な開発言語であり、XML WebサービスやASP.NETの記述にも使用される。
>他の.NET系の言語でも記述可能だが、生産性・機能においてC#が最も優れるとされる。

Wikipediaだけどこんなこと誰が言ったんだろ
8デフォルトの名無しさん:2009/06/06(土) 17:32:27
ワロス

http://pc12.2ch.net/test/read.cgi/tech/1242522019/129

123 名前:デフォルトの名無しさん[] 投稿日:2009/06/05(金) 20:54:00
VB.NETのオープンソースプロジェクト自体ほとんどないから諦めてC#読めるようになるといいよ
9デフォルトの名無しさん:2009/06/06(土) 17:34:49
>>6
お前大人だな、見習ってスルーするわ
10デフォルトの名無しさん:2009/06/06(土) 19:07:23
作ったはずのUIが見えなくなったのですけど、どこを押せば復活するか教えてください
11デフォルトの名無しさん:2009/06/06(土) 19:18:22
とうごうしっちょうしょう
12デフォルトの名無しさん:2009/06/06(土) 21:33:58
>>10
VS2005かそれ以前ならVS2008を買う、デザイナがバグっとる、結局治らんかった。

>>前997
>C++を使えて、C#を高く評価する輩には、VB.NETも使える輩はいないと仮定する。
何言いたいのか訳わからんがあり得ない仮定だな、.NetのサンプルにVBが多い以上読めないわけにはいかない、特にDB周り。
つか知らなくてもカンで読めるだろ
13デフォルトの名無しさん:2009/06/06(土) 21:41:27
しょうもない釣りなんて放っておきなよ
14デフォルトの名無しさん:2009/06/06(土) 22:05:23
スレの伸びからしてvbよりc#のほうが普及してる気がする。
15デフォルトの名無しさん:2009/06/06(土) 22:14:08
その根拠は?
16デフォルトの名無しさん:2009/06/06(土) 22:17:12
検索のヒット件数からしてvbよりc#のほうが普及してる気がする。
17デフォルトの名無しさん:2009/06/06(土) 22:20:53
現在の北米のプログラミング書籍の売り上げを比べると、
C#がJavaを追い抜いて一番売れているそうだぞ(大体40%くらい)

オレはVB.NET自体がC#の糖衣表現のように感じてるなぁ。
18デフォルトの名無しさん:2009/06/06(土) 22:28:32
気がする。
気がする。
感じてるなぁ。
19デフォルトの名無しさん:2009/06/06(土) 22:29:33
スレの伸びはC#の方が速い
検索件数はC#の方が多い

これでいいのかな?VB大敗北だな
20デフォルトの名無しさん:2009/06/06(土) 22:33:16
スレの伸びと普及の関係の根拠はなに?
21デフォルトの名無しさん:2009/06/06(土) 22:34:43
VBとJavaはできませんときっぱり言っておくとデスマーチに呼ばれないように感じるなぁ。
22デフォルトの名無しさん:2009/06/06(土) 22:36:56
>>17
じゃあ、日本でその状態になるのは5年後じゃね?<日米の流行の時間差
23デフォルトの名無しさん:2009/06/06(土) 22:38:21
ウザイから一回埋めてやる
24デフォルトの名無しさん:2009/06/06(土) 22:38:37
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
25デフォルトの名無しさん:2009/06/06(土) 22:38:41
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
26デフォルトの名無しさん:2009/06/06(土) 22:38:44
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
27デフォルトの名無しさん:2009/06/06(土) 22:38:47
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
28デフォルトの名無しさん:2009/06/06(土) 22:38:50
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
29デフォルトの名無しさん:2009/06/06(土) 22:38:53
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
30デフォルトの名無しさん:2009/06/06(土) 22:39:00
再開
31デフォルトの名無しさん:2009/06/06(土) 22:39:42
>>21
選べる状況ならそうするけど
今は何でもいいから仕事がほしい
32デフォルトの名無しさん:2009/06/06(土) 22:40:29
c#スレが伸びるのはvb厨が荒らすから。
33デフォルトの名無しさん:2009/06/06(土) 22:40:47
>>17
ソース
34デフォルトの名無しさん:2009/06/06(土) 22:57:30
おれ最近規制報告に凝ってるんだ
しつこいようだとやっちゃうぞ?
35デフォルトの名無しさん:2009/06/06(土) 23:02:58
17だが、すまん。40%というのは嘘だった。
でもシェアトップというのは本当だ。
http://www.atmarkit.co.jp/news/200902/27/langs.html
36デフォルトの名無しさん:2009/06/06(土) 23:08:41
Objective-Cって絶滅したかと思ってたよ。
37デフォルトの名無しさん:2009/06/06(土) 23:09:52
C++にしないなら、何で中途半端なC#なのか。
素直にVB.NETにすればいいのに。
VBなら馬鹿にされると思って、見栄でC#やってるだけだろ。
38デフォルトの名無しさん:2009/06/06(土) 23:11:12
君には中途半端なのかも知れないね、C#
39デフォルトの名無しさん:2009/06/06(土) 23:16:08
まあ少なくとも、オレの居た会社では.NETの案件でVB.NETなんてのは聞いたことなかったな。
言語としてできることにそれほど差があるわけではないが、
まあ全体的な生産性からみてC#を選択するのが無難だろ。
40デフォルトの名無しさん:2009/06/06(土) 23:20:20
VB.netはC#のおまけだろ。
実際、最新の機能はC#へが先だしな
41デフォルトの名無しさん:2009/06/06(土) 23:33:04
IShellFolder とかいじるプログラムを作ってて、
SafeHandle や HandleRef の使い方がわからなくて
全部、IntPtr にしてるんだけどやっぱりまずいよね?

ぐぐってみたが使いどころがよくわからないんだけど
誰か教えてくれないか?
42デフォルトの名無しさん:2009/06/06(土) 23:41:28
プロパティにするかパラメータにするかの判断基準が分からない
43デフォルトの名無しさん:2009/06/06(土) 23:44:08
private 以外は無条件でプロパティで。
44デフォルトの名無しさん:2009/06/06(土) 23:48:14
VB.NETをまともに使いこなせるレベルなら
C#なんて構文ちょろっと覚えるだけで使えるようになるのに何故騒いでるんだ?

>>37
何?お前VBに劣等感とか持っちゃってるの?wwアホくさ
45デフォルトの名無しさん:2009/06/06(土) 23:51:11
>>42
getterだけあればいいばあい。
もしくはgetterとsetterが必要で、setterに特に追加の引数を必要としない場合はプロパティでよい。
46デフォルトの名無しさん:2009/06/07(日) 00:01:15
結局はクラスライブラリを知ってるかどうか、でしょ。
それを呼び出す手段は別になんだってできることは同じ。
VBでもC#でも、もっと別の言語でも。
47デフォルトの名無しさん:2009/06/07(日) 00:22:04
>>46
開発の歴史を知らない感じの発言だな。
それを実現するまでにどれぐらい時間がかかってるか理解してる?
48デフォルトの名無しさん:2009/06/07(日) 00:30:58
ゲームを作る目的なら、C++よりC#を覚えた方がいいんでしょうか?
サイトで色々調べてみたのですが、C#の方が向いていると言うのと、
ライブラリ(これがどれほどの役に立つものかは理解していませんが)が充実しているという点でC++でやったほうがいいという意見で別れています
49デフォルトの名無しさん:2009/06/07(日) 00:35:11
>>48
商用でゲームプログラムを作っている立場のものだが、
実際にどちらにするか迷う。
従来はC++の一点張りだったが、C#は圧倒的に開発効率がいいし、
DirectXのサポートも問題ない。

問題は外部ライブラリの使用と特にスクリプトをどうするかで、
.NETには使い勝手の良いライトウェイト言語がまだ実用化されていないように思える。
(IronPythonなどがあるが、あんなにコンパイルに時間がかかって実用になるのか?)

だが、C#でゲームを作るというのは十分ありだと思うよ。起動は遅くなるけど。
50デフォルトの名無しさん:2009/06/07(日) 00:43:24
>>49
プロの方でも迷う問題ですか
とりあえず製作がまだ簡単そうな、C#でやってみることにします。ありがとうございました
51デフォルトの名無しさん:2009/06/07(日) 00:44:18
>>49
IronPythonは.NETアセンブリに事前コンパイルできたように記憶している。
他のDLR言語は知らない。
52デフォルトの名無しさん:2009/06/07(日) 00:54:52
GCどうすんのよ。
諦めて自分で管理か
53デフォルトの名無しさん:2009/06/07(日) 01:04:22
>C#なんて構文ちょろっと覚えるだけで使えるようになる
そんなわけない
50ページ以下で出版されてるC#の本などない。
何百ページもの学習量がある。
54デフォルトの名無しさん:2009/06/07(日) 01:10:35
何百ページのC#解説書なんかちょろっとマスターしてしまえるわ
55デフォルトの名無しさん:2009/06/07(日) 01:11:34
>VB.NETをまともに使いこなせるレベルなら
前提抜かすな
56デフォルトの名無しさん:2009/06/07(日) 01:11:35
まあ、プログラミングやりたい初心者がいたら、間違いなくC#奨めるよ
RubyやPythonみたいなスクリプト系は癖が強すぎるので絶対奨めない
基本学ぶならC#が取っつきやすくていい
57デフォルトの名無しさん:2009/06/07(日) 01:21:13
C++がそうであるように、C#のすべての言語仕様なんぞ知る必要がない。
58デフォルトの名無しさん:2009/06/07(日) 01:21:45
荒らしてんのは本当にVB厨なのか?
どうにも、実はCすらできないC++厨臭いんだがw
59デフォルトの名無しさん:2009/06/07(日) 01:22:08
C#を、というより、「データ構造とアルゴリズム」の概念を身体に染み込ませれば、
あとはどの言語もリファレンス引きながら何とかなる。
プログラミング的「センス」ってのはあるけど、多少ださいソースでも
昨今の「ハイパワー」が補ってくれる。

ツールへの習熟度は軽視できないけど、
それよりも作る物の目的やその結果が全てでがしょ?
60デフォルトの名無しさん:2009/06/07(日) 01:35:36
>>56
私はそうは思わない(癖が強い)けど、
まあ動的型言語と静的型付け言語とどちらを先に覚えるべきかと言えば、
静的型付けかもしれないなぁ。

でも動的型言語は最初にプログラムを作るのに覚えることが少ないから初心者向きともいえる。
教える側のスキルによっても結論は変わってきそうだ。
61デフォルトの名無しさん:2009/06/07(日) 01:43:48
>>54>>55は物事を過小評価する奴だな。
62デフォルトの名無しさん:2009/06/07(日) 01:46:43
そして、自信過剰になる傾向のある奴だな。
自分の弱点等には気付かないタイプだな。
63デフォルトの名無しさん:2009/06/07(日) 01:47:33
アンタは過大評価しすぎだな>>61
64デフォルトの名無しさん:2009/06/07(日) 01:48:14
ごめんね
C#がちょろっとできるようになっちゃったもんでつい調子に乗っちまった
65デフォルトの名無しさん:2009/06/07(日) 01:49:55
そうか、ちょろっとしかできないくせに、調子に乗ってるのか
66デフォルトの名無しさん:2009/06/07(日) 01:57:53
>>59
C++ って結局落とし穴やら最低必要な予備知識が多すぎてその
一般論すら通用しないんだよなぁとふと思った。
67デフォルトの名無しさん:2009/06/07(日) 02:07:23
それでも標準的な言語ではあるわけで
68デフォルトの名無しさん:2009/06/07(日) 02:10:23
標準的?
これまた曖昧な概念を持ち出したな
69デフォルトの名無しさん:2009/06/07(日) 03:37:05
c#とjavaどちらが将来性があるかというと結局はMSとOracleどっちか将来性があるかということだ。
70デフォルトの名無しさん:2009/06/07(日) 03:45:33
それは硬貨と紙幣どっちが将来性があるかと言いってるようなもんだ。
71デフォルトの名無しさん:2009/06/07(日) 03:50:25
既に将来性うんぬんとかいうようなレベルじゃなくて十分に普及しているから、
自分の作るものがどちらで作るのが向いているのかで考えればいいんじゃないかな。
72デフォルトの名無しさん:2009/06/07(日) 03:58:17
たいていどっちでも作れる
73デフォルトの名無しさん:2009/06/07(日) 04:01:46
マルチスレッドって処理速度が早くなるの?
74デフォルトの名無しさん:2009/06/07(日) 04:04:13
>>73
使い方次第
75デフォルトの名無しさん:2009/06/07(日) 04:41:25
どうやって使ったら速くなるの?
76デフォルトの名無しさん:2009/06/07(日) 06:09:45
解説サイト見ながら簡単なプログラムを作ってみたんですが、動作がおかしいんです。
どっかにプロジェクトをアップロードしたら、このスレで添削してもらえますか?
77デフォルトの名無しさん:2009/06/07(日) 06:51:28
ほい
78デフォルトの名無しさん:2009/06/07(日) 07:23:28
C#でDirectXのD3DXの関数は使えますか?
7976:2009/06/07(日) 07:26:17
おねがいします。これです。
ttp://ponyo.no-ip.org/uploader0/src/01P0450.zip.html

テキストボックスにgoogleのソースを表示するだけなんですが、
テキストが全洗濯状態になってしまいます。
どこを直せばいいんでしょうか。
C#2008です。
8076:2009/06/07(日) 07:29:03
ついでにもう一つお願いします。
禁則処理(?)をなくして、単語の途中で改行するのを許可して、右端にスペースが
あかないようにする設定はありますでしょうか。
81デフォルトの名無しさん:2009/06/07(日) 07:33:33
>>47
これから作るソフトにC#とVB.Netのどちらを選ぶか、って話には歴史関係ないじゃん
82デフォルトの名無しさん:2009/06/07(日) 10:18:31
>>79
カーソル位置を設定していないと、フォーカス来たときに全選択になるんじゃないかな。
文字列設定した後に、textBox1.Select(0, 0);でカーソル位置先頭にするとか。
ワードラップは、、、、EM_SETWORDBREAKPROCを直接設定するしかないかも。
83デフォルトの名無しさん:2009/06/07(日) 10:32:20
>>78
質問の仕方が怪しいな
DirectX使うっていうのは関数一つ二つでちょこっとできるようなものじゃないよ
使うとなるとプログラム全体がDirectXに染まる

ManagedDirectXとかSlimDXとか
84デフォルトの名無しさん:2009/06/07(日) 13:20:41
VBからC#への移植で悩んでいます。
VBで数値(文字コード)を文字列に変換する部分で

s = Chr(x) + Chr(y)

をC#になおしたいのですが、自力で書き換えてみたらこんなに長くなってしまいました。
もうちょっと短く書く方法はないでしょうか?
とくにToString()を1文字ごとに呼び出すのが無駄っぽく思えるのですが。

s = ((char)x).ToString() + ((char)y).ToString();
85デフォルトの名無しさん:2009/06/07(日) 13:26:22
>>84
C#で1文字ごとに処理すること自体あまりやらないことなので、
敢えて1文字ずつ処理してしまう場合にはそうなるのも仕方ないんじゃね?
86デフォルトの名無しさん:2009/06/07(日) 13:27:06
追加。数値を文字列に変換するというなら、formatを使ってご覧。
87デフォルトの名無しさん:2009/06/07(日) 13:29:08
>>84
2文字だったら、別に書き換える必要はないと思うけど。

どうしても、ToStringが嫌なら

s = new string(new[] { (char)x, (char)y });
88デフォルトの名無しさん:2009/06/07(日) 13:31:43
string.Concat
中でToStringされるから意味も実際の動作も全く同じだけどどっちにしてもChrよりは速いよ
89デフォルトの名無しさん:2009/06/07(日) 13:33:46
>>85
わかりました。
今回はchr関数を自作して置き換えることにします。
90デフォルトの名無しさん:2009/06/07(日) 13:35:27
VBのアセンブリを参照設定して Chr() 関数使えばいいじゃん。
91デフォルトの名無しさん:2009/06/07(日) 13:38:43
あ、考えてる間にレスが…
色々ありがとうございます。実際はもうちょっと式が長いんです。
とりあえず、一通り試してみます。

ちなみに単純なプログラムなので処理速度は問いません。
あくまでもVBからの移植性とか可読性(式の単純さ)の方を重視したいと思っています。

CharからStringへの暗黙の変換がないのはどうしてなんでしょうね。
ずっとVBばかりやってきたので不思議でしょうがありません。
92デフォルトの名無しさん:2009/06/07(日) 13:40:39
>>90
すいません。その方法をもうちょっと詳しく教えてください。
そのexeはVB(のランタイム)の入ってないマシンでも実行できますか?
93デフォルトの名無しさん:2009/06/07(日) 13:42:37
いやChrの戻り値もcharだから無意味
9476:2009/06/07(日) 13:45:17
>>82
Select(0, 0)で全選択は解消できました。
右端で折り返すのはまだできません。むむむ
95デフォルトの名無しさん:2009/06/07(日) 13:52:07
ついでにお願いします。
今回のchrとか、自作の関数をどこかにまとめていつでも使えるようにしておきたいのですが、
C#2008の流儀ではどうするのが推奨されているのでしょうか。

昔覚えたC言語ではlibフォルダにソースを入れておいて、<#include jisaku_lib.c>みたいにして
使ってた覚えがあるんですが。
96デフォルトの名無しさん:2009/06/07(日) 13:54:02
>>92
VBのランタイムって、今のバージョンなら .NET Framework だよ。
なので、.NET Framework が入ってれば使える。
97デフォルトの名無しさん:2009/06/07(日) 13:55:07
>>95
クラスライブラリプロジェクトを作って、アセンブリかプロジェクトを参照。
98デフォルトの名無しさん:2009/06/07(日) 13:56:22
99デフォルトの名無しさん:2009/06/07(日) 13:58:17
>>96
なるほど、.NETが共通のライブラリなんですね。
ライブラリが共通なのに使える関数が言語ごとに違うのはなんとなく不思議な感じがします。
100デフォルトの名無しさん:2009/06/07(日) 13:59:19
クラスライブラリにする
そこまでするほどではないと思うなら変なこと考えるよりソースコードをコピーしちゃったほうがいい
細かい依存が増えるとかえって煩雑になる
101デフォルトの名無しさん:2009/06/07(日) 14:01:33
横レスすいません、>>90の方法を詳しく教えてもらえませんか?
それか開設してるサイトがあれば教えてください
VBからVCに移行したばかりなので、VBの関数を使えればすごく楽になりそうです
102デフォルトの名無しさん:2009/06/07(日) 14:01:35
>>97
あ、なるほどわかりました。
「新しいプロジェクト」のテンプレートから「クラス ライブラリ」を選ぶんですね。
今まで一番先頭の「フォーム アプリ」しか選んだことがありませんでした。
103デフォルトの名無しさん:2009/06/07(日) 14:03:42
104デフォルトの名無しさん:2009/06/07(日) 14:04:11
>>101
VC では無理。C++/CLI を除く。
105デフォルトの名無しさん:2009/06/07(日) 14:08:24
最初の質問の内容なら、Formatを使えば十分なような気がするんだが……。
106デフォルトの名無しさん:2009/06/07(日) 14:13:56
Microsoft.VisualBasic.dllを参照設定に入れるだけ
あんまりここでVBVB言わない方がいいよ
VB使いたくないから使う言語なんで
107デフォルトの名無しさん:2009/06/07(日) 14:15:40
>>104
そうなのですか、ありがとうございました
>>106
分かりました、すいませんでした
108デフォルトの名無しさん:2009/06/07(日) 14:31:18
>>105
始めたばかりなので、なんでもやってみたいんです。
それに、クラスライブラリの作り方も覚えておいて損はないと思うので。

で、とりあえずライブラリはできたんですが、ちょっとイメージと違っていたので
もうちょっと教えてください。参照設定にjisakuを入れて
先頭にusing jisaku; を足して、作った関数を使う場合、クラス名は省略できないんでしょうか。
今は、当然ですがClass1.chr()と書かないとエラーになります。
他の組み込み関数のように、いきなり関数名だけを書けるようにはできないでしょうか。
109デフォルトの名無しさん:2009/06/07(日) 14:48:49
できない。

そもそも、C#に組み込み関数なんてないぞ。
110デフォルトの名無しさん:2009/06/07(日) 15:11:13
意図的にできないようにしてる
型に厳しいのだって同じ
それはそれでメリットもあって、そういう「文化」なんだよ
111デフォルトの名無しさん:2009/06/07(日) 15:15:30
その強制によって自動的にクラスごとにパッケージ化されるんだから、
決して悪くない方法だよな。名前の衝突がその分起こりにくくなる。
112デフォルトの名無しさん:2009/06/07(日) 15:22:51
VS2010見てきたが、C++のインテリセンスは相変わらずなんだな。
未だに自動で変数の候補表示してくれねえし、予約語も認識しないし
いつになったらC#と同レベルになるのやら
113デフォルトの名無しさん:2009/06/07(日) 15:25:26
>>91
暗黙の型変換ってバグの温床になるからなぁ。
114デフォルトの名無しさん:2009/06/07(日) 15:26:33
>>112
だいぶ良くなってるよ。
C++はまず、インテリセンスが効かなくなるって状況がなくなっただけで感動しないと行けないレベル。

最初からツールアシストまで考えて設計されてる言語とC++比べたらかわいそう。
115デフォルトの名無しさん:2009/06/07(日) 15:31:06
まー何でもアリのC++に比べたらC#はものすごい規則的で、
一度に覚えないといけないことが少ないからなぁ。

C++の諸悪の根源は、マクロと#includeとtypedefだな。
スレ違いだが。
116デフォルトの名無しさん:2009/06/07(日) 15:38:35
VB→C#なら手で変換しなくてもいいやん
117デフォルトの名無しさん:2009/06/07(日) 15:40:50
マクロはCから引き継いだ負債だな明らかに
118デフォルトの名無しさん:2009/06/07(日) 15:42:03
>>115
最悪なのは define マクロだよ、これが全てのツールを全滅させる。
インテリセンスやドキュメント生成、果てはテストツールまで
文法も破壊してしまうし、理解できない深刻なバグも誘発する。
119デフォルトの名無しさん:2009/06/07(日) 15:42:54
>>117
C#のdefineは、マクロじゃないぞ
120デフォルトの名無しさん:2009/06/07(日) 15:47:59
>>119
流れ読めるならそんなツッコミは出ないはずなのだが…
121デフォルトの名無しさん:2009/06/07(日) 15:49:19
つかC++の話題はC++スレでやれっちゅーの、おまえら何しに来てんだ?
122デフォルトの名無しさん:2009/06/07(日) 17:27:25
異文化交流だよ
123デフォルトの名無しさん:2009/06/07(日) 17:41:14
せめてC++マスターしてからこいよ
124デフォルトの名無しさん:2009/06/07(日) 17:50:48
マスター(苦笑)
125デフォルトの名無しさん:2009/06/07(日) 18:53:07
そこまで書いたんなら最後まで教えてあげようよ

>>107
参照設定でMicrosoft.VisualBasic.dllを入れると
Microsoft.VisualBasicという名前空間でVB固有のクラスが使えるようになる

C言語は文字列をcharの配列で代用するという文化があって、
今でもCharとChar[]とStringを厳密に区別するから
文字列の処理は微妙にややこしいんだよな。
一番VBを使いたくなるのは、たぶんこういう時。
126デフォルトの名無しさん:2009/06/07(日) 19:48:21
> C言語は文字列をcharの配列で代用するという文化があって、
これ関係なくない?

むしろ、スクリプト言語の
どんどん暗黙の型変換を行いますよ
っていう文化の有無によるものだと思うんだけど
127デフォルトの名無しさん:2009/06/07(日) 20:09:23
生のC言語は文字列の扱いもう少し何とかならんかったのかとは思う
128デフォルトの名無しさん:2009/06/07(日) 20:22:27
文字列が扱えたら低級言語じゃなくなるだろ。
マクロだって微量のスタック領域しかない昔の処理系ではとくに有用なんだよ。
129デフォルトの名無しさん:2009/06/07(日) 20:25:29
要するに時代遅れって事だな
130デフォルトの名無しさん:2009/06/07(日) 20:29:33
それは違う。
ダイヤモンドの原石とダイヤモンドを比べて原石のほうを時代遅れと言ってるようなもの。
131デフォルトの名無しさん:2009/06/07(日) 20:31:12
C++だってマクロがなければ価値が半減する。
マクロがなかったらMFCなんか使えたもんじゃないよ。
132デフォルトの名無しさん:2009/06/07(日) 20:35:18
お前らC#以外の言語大好きだな
133デフォルトの名無しさん:2009/06/07(日) 20:54:43
結局昨日から沸いてる変な人に釣られてるんだよ…
さぞほくそ笑んでるだろうよ
134デフォルトの名無しさん:2009/06/07(日) 20:57:20
まったくC++に疲れ果ててC#に移り住んだのに、ここでC++の話題かよ
今後もC++使いたい奴は話し相手がいないからってここに来るなよw
135デフォルトの名無しさん:2009/06/07(日) 21:03:00
>>134
ある意味、C++の愚痴大会w
136デフォルトの名無しさん:2009/06/07(日) 21:16:12
C++のスレが最近やたらアゲられるが強烈に自演臭いんだよな、そんなに寂しいかwww
137デフォルトの名無しさん:2009/06/07(日) 21:20:47
皆C++一度は経験してるの?
C#の前にC++やっといたほうがいい?
138デフォルトの名無しさん:2009/06/07(日) 21:22:07
C++の勉強?必要ないかと
経験はあるよ、そりゃ当然、オレおっさんだし。
139デフォルトの名無しさん:2009/06/07(日) 21:27:27
C++のコンパイルの遅さとデバッグの面倒さに嫌気がさしてC#に移ってきましたよ

C++の知識はいらんけど、Cのライブラリの呼び出し方とCOMの知識はあると便利
140デフォルトの名無しさん:2009/06/07(日) 21:37:19
>>137
今から始めるなら別にC++要らない。
(参考程度に後から調べるとかはありだと思うけど)
今C++愚痴まくってるのは、俺含めみんな多分おっさん。
141デフォルトの名無しさん:2009/06/07(日) 21:42:28
ありがとございます
そんなにC++って面倒なのですか?
C#の方がメリットがありそうな感じとwikiで読んだぐらいなので、実感はありませんが
そんなに面倒ならC++組もC#に乗り換えればいいと思うんですがねぇ
142デフォルトの名無しさん:2009/06/07(日) 21:46:18
>>141
しつこい、C++スレに池
143デフォルトの名無しさん:2009/06/07(日) 21:47:35
ただし向こうでC#の名前を出すなよ面倒だから
144デフォルトの名無しさん:2009/06/07(日) 21:49:21
textbox1.Text = "1";
textbox2.Text = "1" + "あ";

これを

string s = "1";
textbox1.Text = s;
textbox2.Text = s + "あ";

って書く意味は何が有利なの?
145デフォルトの名無しさん:2009/06/07(日) 21:50:21
C#使いの大半はC++からの移行組みのせいか
C++経験ない人は劣等感ありまくりだな。
146デフォルトの名無しさん:2009/06/07(日) 21:50:53
業務上の都合というものが色々あってだな
147デフォルトの名無しさん:2009/06/07(日) 21:50:58
"1" が別の文字列に変わったときに修正する箇所が1箇所で済む
148デフォルトの名無しさん:2009/06/07(日) 21:51:09
うぜーな、自分で考えろ、sの定義行書き換えたら一斉に変更がきくってだけだろ。死ね。
149デフォルトの名無しさん:2009/06/07(日) 21:51:53
初心者は保守性第一に書くのが吉。
150デフォルトの名無しさん:2009/06/07(日) 21:52:37
C++荒らしの自演だろ、アホくさ
151デフォルトの名無しさん:2009/06/07(日) 21:52:42
>>1-1000
スレ違い
152デフォルトの名無しさん:2009/06/07(日) 21:52:58
>>148
それだけじゃねーだろ。コンパイル結果見ろ。見て分からなきゃ市ね。
153デフォルトの名無しさん:2009/06/07(日) 21:53:32
>>150
どんだけ劣等感持ってんだよw
154デフォルトの名無しさん:2009/06/07(日) 21:55:43
>>152
分からん
死ぬ前に教えてくれ
155デフォルトの名無しさん:2009/06/07(日) 21:56:03
C++も極めればそれなりに使える、自演C++厨房は巣に帰ってガンバレ
156デフォルトの名無しさん:2009/06/07(日) 21:57:34
C++に過剰反応する奴はもう寝ろ。疲れてるだろ。
157デフォルトの名無しさん:2009/06/07(日) 21:57:35
コンパイル結果はJIT次第だ、ローレベルの話がしたくて仕方がないC++坊は無視
158デフォルトの名無しさん:2009/06/07(日) 21:58:37
>>156
あのさぁ、過剰反応つーか、埋め尽くすなよって話だろ
ここなんのスレだよ?言ってみろ
159デフォルトの名無しさん:2009/06/07(日) 21:58:52
>>157 ← JITがどういう処理をしてるか分かってない奴。
160デフォルトの名無しさん:2009/06/07(日) 22:00:47
>>158
反応しないでスルーできないのか?  スルーしたら埋め尽くされないの。2ch初心者?
おまえみたいのがいるから荒れるんだよ。
161デフォルトの名無しさん:2009/06/07(日) 22:02:12
>>158
スルーしろっつってんだよ。馬鹿か?
162デフォルトの名無しさん:2009/06/07(日) 22:02:15
ほっとていも、ほっとかないでも酷有様、つか埋め尽くし犯人お前だろ >> 160
163デフォルトの名無しさん:2009/06/07(日) 22:02:41
だまんねえと改行で埋めるぞ

だまれ
164デフォルトの名無しさん:2009/06/07(日) 22:03:02
>>158
【魔力】書き込むと願いが必ず叶うスレ【強力】409
だろが
165デフォルトの名無しさん:2009/06/07(日) 22:04:11
C++の人アタマおかし過ぎ
166デフォルトの名無しさん:2009/06/07(日) 22:04:58
それにしても >>142 一人で必死すぎだろw
167デフォルトの名無しさん:2009/06/07(日) 22:05:08
>>164
VB スレに誤爆すんなよw
168デフォルトの名無しさん:2009/06/07(日) 22:05:31
"1"が他に置き換わるような設計してる時点でミスですよ僕に言わせれば
169デフォルトの名無しさん:2009/06/07(日) 22:06:03
心療内科へいって治療してもらえ
170デフォルトの名無しさん:2009/06/07(日) 22:06:22
クラック対策だろjk
171デフォルトの名無しさん:2009/06/07(日) 22:08:37
メソッド内部で書かれたsは定数として処理されて出てこないよ
上でも下でも出力は一緒ね、メンテの問題だけね、変なやついるから相手すんなよ
172デフォルトの名無しさん:2009/06/07(日) 22:10:14
出力が違うと思ってた奴は一人もいないのに偉そうに説明すんな。
173デフォルトの名無しさん:2009/06/07(日) 22:11:01
>>171
分かってないな。そんな話じゃないだろ。
174デフォルトの名無しさん:2009/06/07(日) 22:11:39
つまらん話で発狂するなよ
175デフォルトの名無しさん:2009/06/07(日) 22:12:31
よほどコンプレックスがあるのだろう。
176デフォルトの名無しさん:2009/06/07(日) 22:12:43
もりあがってまいりました
177デフォルトの名無しさん:2009/06/07(日) 22:14:07
向上心なければどの言語でも無駄って事を知れ C++ の人
178デフォルトの名無しさん:2009/06/07(日) 22:16:17
おい黙れって言ってるだろ
179デフォルトの名無しさん:2009/06/07(日) 22:21:59
黙ったぞ
180デフォルトの名無しさん:2009/06/07(日) 22:23:52
>>178-179
お前変過ぎる、精神病院へいけ、今すぐ
181デフォルトの名無しさん:2009/06/07(日) 22:28:46
>>157
ふつうに考えてC#のコンパイル結果ってILの話だと思うぞ。
182デフォルトの名無しさん:2009/06/07(日) 22:30:27
>>157 >>171
スレが荒れているので聞き流されるかもしれないが、C#のコンパイラはあまり最適化などかけず、
かなり素直なコードを吐き出すんだが、それを知っているんだろうか。
public void SampleMethod1()
{
this.textBox1.Text = "1";
this.textBox2.Text = "1あ";
}
public void SampleMethod2()
{
string s = "1";
this.textBox1.Text = s;
this.textBox2.Text = s + "あ";
}
最初の質問の例を一旦コンパイルした後、ディスアセンブルするとこんな感じになる。
ほとんど最適化されてない。
183デフォルトの名無しさん:2009/06/07(日) 22:35:40
ディスアセンブル? バイナリをアセンブラにすることなんだが。
184デフォルトの名無しさん:2009/06/07(日) 22:39:25
メソッドのインライン展開が行われたりするのは実行時なんだが、それを知っているんだろうか。
185デフォルトの名無しさん:2009/06/07(日) 22:42:36
>>182
ILやメタデータって string s のローカル変数名を保持してんの?
もしそうなら恥ずかしい名前つけれないんだが。
186デフォルトの名無しさん:2009/06/07(日) 22:45:18
>>184
そんなことは当たり前のことだから省略した。長かったからな。
>>185
そう。だから.NET用の難読化ツールとかが出回ってたりする。
前のスレでも話題になった。
187デフォルトの名無しさん:2009/06/07(日) 22:46:22
>>185
保持はしていないね、直接定数をロードしている。
ちなみに const string s = 1; としてしまえばどちらも一緒。
188デフォルトの名無しさん:2009/06/07(日) 22:49:09
.maxstack 8
IL_0000: ldarg.0
IL_0001: ldfld class [System.Windows.Forms]System.Windows.Forms.TextBox WindowsFormsApplication2.Form1::textBox1
IL_0006: ldstr "1"
IL_000b: callvirt instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Text(string)
IL_0010: ldarg.0
IL_0011: ldfld class [System.Windows.Forms]System.Windows.Forms.TextBox WindowsFormsApplication2.Form1::textBox1
IL_0016: ldstr "1a"
IL_001b: callvirt instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Text(string)
IL_0020: ret
ちなみにこんな感じだね、しかしこんなのチクチク詰めていっても関係無くないw
あほくさあほくさ
189デフォルトの名無しさん:2009/06/07(日) 22:50:03
フィールドと違って最適化で消えることはあるけど基本的には保持される
190デフォルトの名無しさん:2009/06/07(日) 22:50:38
じゃあディスコンパイルしたらどうやって >>182 の sって名前を特定したんだ?
>>182 はガセ?
191デフォルトの名無しさん:2009/06/07(日) 22:51:29
いちいちツッコミどころかC++厨房うぜぇーって感じだな
192デフォルトの名無しさん:2009/06/07(日) 22:52:50
ガセではない。IL表記ならこうだ。
.method public hidebysig instance void SampleMethod2() cil managed
{
.maxstack 3
.locals init (
[0] string s2)
L_0000: ldstr "1"
L_0005: stloc.0
L_0006: ldarg.0
L_0007: ldfld class [System.Windows.Forms]System.Windows.Forms.TextBox ImageComposer.Form1::textBox1
L_000c: ldloc.0
L_000d: callvirt instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Text(string)
L_0012: ldarg.0
L_0013: ldfld class [System.Windows.Forms]System.Windows.Forms.TextBox ImageComposer.Form1::textBox2
L_0018: ldloc.0
L_0019: ldstr "\u3042"
L_001e: call string [mscorlib]System.String::Concat(string, string)
L_0023: callvirt instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Text(string)
L_0028: ret
}
193デフォルトの名無しさん:2009/06/07(日) 22:52:51
reflectorでぐぐれ
194デフォルトの名無しさん:2009/06/07(日) 22:53:51
ああ、s2になっているのは、ローカル変数がたまたまsという
名前になっているのではないかと疑ったので変えてみた。
195デフォルトの名無しさん:2009/06/07(日) 22:56:46
>>192
おや、おれのと結果違うね
.method private hidebysig instance void Test2() cil managed
{
// コード サイズ 41 (0x29)
.maxstack 3
.locals init (string V_0)
IL_0000: ldstr "1"
IL_0005: stloc.0
IL_0006: ldarg.0
IL_0007: ldfld class [System.Windows.Forms]System.Windows.Forms.TextBox WindowsFormsApplication2.Form1::textBox1
IL_000c: ldloc.0
IL_000d: callvirt instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Text(string)
IL_0012: ldarg.0
IL_0013: ldfld class [System.Windows.Forms]System.Windows.Forms.TextBox WindowsFormsApplication2.Form1::textBox1
IL_0018: ldloc.0
IL_0019: ldstr "a"
IL_001e: call string [mscorlib]System.String::Concat(string,
string)
IL_0023: callvirt instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Text(string)
IL_0028: ret
} // end of method Form1::Test2
まっ、こんなのはコンパイラのバージョン次第で何でてるくかなどコンパイラの作り手の勝手なわけですが。
196デフォルトの名無しさん:2009/06/07(日) 22:59:04
/oの有無の違いに決まってるだろjk
197デフォルトの名無しさん:2009/06/07(日) 23:01:27
pdbファイルが同じディレクトリにあったらildasmが読んでるみたいだ
アセンブリ自体には含まれない
198デフォルトの名無しさん:2009/06/07(日) 23:04:17
しかしなんで string s 使うか直書きするかの違いがILDの話になるんだと……
おかしくね?
199デフォルトの名無しさん:2009/06/07(日) 23:04:40
試したらアセンブリ自体には含まれないな。冷や汗かいたぜ。
200デフォルトの名無しさん:2009/06/07(日) 23:05:45
アホのC++坊よけには丁度いいかもしれんけど
201デフォルトの名無しさん:2009/06/07(日) 23:08:33
結論:string s 推奨。
202デフォルトの名無しさん:2009/06/07(日) 23:18:48
あんだけ荒れてたのにスレ止まった・・
203デフォルトの名無しさん:2009/06/07(日) 23:22:07
C#の話題、C++であってもC#と関連する話ならいくらでもレス付けますがな
C++サイコーっていいたいなら巣に帰れって事
204デフォルトの名無しさん:2009/06/07(日) 23:25:41
C++サイコーなんて主旨の書き込みはどこにもないわけだが。
一人必死でC++叩いてる奴が荒らしてただけだよ。
205デフォルトの名無しさん:2009/06/07(日) 23:30:09
まったくこれだけ書き込みまくっていけしゃぁしゃぁと、死んでしまえw
206デフォルトの名無しさん:2009/06/07(日) 23:34:10
一人汚いレスばかりする人がいますな。
207デフォルトの名無しさん:2009/06/07(日) 23:37:31
C++の人さ、努力って大事だよ、ちゃんと勉強してC++使えるようになろうな
そしたら、こんなスレッドで嫌がらせなどしなくても自信もって生活できるようになる。
208デフォルトの名無しさん:2009/06/07(日) 23:48:10
>>141はC++が初心者装った嫌味に見え
>>142が反応した
という流れじゃなかろうか
209デフォルトの名無しさん:2009/06/07(日) 23:50:46
ちょっと話変わるけど、Visual studio 2010でC#のインテリセンス変わったよな。
インクリメンタルサーチ式になったけど、あれはもう旧式に戻らないのか?オプションに設定項目はなかったが
進化だとしても旧式も用意して欲しいもんだ
210デフォルトの名無しさん:2009/06/08(月) 00:03:54
え?
211デフォルトの名無しさん:2009/06/08(月) 00:15:42
>>207
そうやって煽ってるのはおまえ一人だけなんだが。さっさと消えろカス。
212デフォルトの名無しさん:2009/06/08(月) 04:04:23
C#勉強中です。

Google LABSのソースコード検索をマニュアルの補助に使っているのですが、
ちょっと疑問に思うコードがあったので教えてください。

リソースの解放を確実に行うため、usingを使ってスコープを定義すると
いう方法があると思うのですが、そのコードではこう書かれていました。

SQLiteDataReader reader;
using (reader = command.ExecuteReader())
{
 何かの処理
}

この様にusingの外にDataReaderを定義して、usingの終わりで確実に
Dispose()されるのでしょうか?
213デフォルトの名無しさん:2009/06/08(月) 04:12:07
>>212
SQLiteDataReader reader;
try
{
}
finally


のように宣言することが推奨されている。

http://msdn.microsoft.com/ja-jp/library/yh598w02.aspx
214デフォルトの名無しさん:2009/06/08(月) 04:14:03
すまん変なところで送信してしまった。

SQLiteDataReader reader;
{
try
{
 // 何かの処理
}
finally
{
 if (reader != null) ((IDisposable)reader).Dispose();
}
}
と同等だけど
using (SQLiteDataReader reader = command.ExecuteReader())
{
 // 何かの処理
}
のように宣言することが推奨されている。
215デフォルトの名無しさん:2009/06/08(月) 04:14:22
>>212
using が実は現状確実にDispose してくれないという話的には Dispose され
ないと答えるけど、その話を除けば普通に
using(SQLLiteDataReader reader...)
とした場合と同等レベルには Dispose される。

これとそれの違いはスコープぐらいかな、意図がそれだけだと正直わか
らんが。
216212:2009/06/08(月) 04:38:37
>>213-215
ありがとうございました。

GCがいつ実行されるか分からないというのは一応承知してます。
安心してusing内に書くようにします。
217デフォルトの名無しさん:2009/06/08(月) 05:08:35
>>216
あー。GC とかは関係ない。
説明すると、現状の using には Abort されたときの耐性がない
という話。
インスタンスが生成された直後とローカル変数に代入されるまでの
間にスレッドが Abort されれば Dispose は呼ばれない。それも
含めて Finalizer が必要な理由にもなっている。
と思って今確認したら try の外でやってるし…なら try に入るまで
かな。

めったに問題になることじゃないので記憶の片隅においておくだけで
いい知識だが。
218212:2009/06/08(月) 05:59:16
>>217
ありがとうございます。

今の自分の知識ではお話の半分ほどしか分かりませんが、
滅多に問題になることはないということも含めてメモっておきます。
219デフォルトの名無しさん:2009/06/08(月) 11:26:26
あるフォームに対して、サイズ変更枠が付いたままタイトルバー有り無しの
切り替えをしたいと思い、フォームのコンテキストメニューから「切り替え」を
選択した際に、タイトルバーをなくす場合はフォームのTextを空にして
ControlBoxをfalseにしています。しかしControlBox=falseかつText=""
という操作をすると、それ以降Application.Exitで終了したときに
FormClosingイベントが呼ばれなくなってしまいます。
フォームの終了時に設定を保存したいのですが、終了処理はどこで
行えばいいでしょうか。よろしくお願いします。
220デフォルトの名無しさん:2009/06/08(月) 13:03:06
>>219
操作中に例外が発生してるんじゃないかな。
そうすると何も起こらず終了しているように見えることがある。
コントロールの存在・状態チェックはしっかりやろう。
221219:2009/06/08(月) 13:39:01
>>220
ありがとうございます。存在していないコントロールに触っているのかと思い、
原因を調べるために怪しい所を省いた以下のソースを実行してみたんですが
やはりフォームのTextを空にしてControlBox=falseとすると、FormClosing
のところにブレークポイントを設定してもヒットしなくなりました
ttp://sakuratan.ddo.jp/uploader/source/date112420.txt

こういう場合にはFormClosingイベント等は使えないのでしょうか。。。
222デフォルトの名無しさん:2009/06/08(月) 13:41:22
>>221
というか、Application.Exit()じゃなくてメインのフォームをクローズするのが普通じゃないの?
223デフォルトの名無しさん:2009/06/08(月) 13:48:16
>>>222
そうですね、よく考えたらサブのフォームからでも
MainForm.Close()ってすればいいんですよね
Application.Exitの事は忘れます。ありがとうございました
224デフォルトの名無しさん:2009/06/08(月) 14:31:59
二つの配列を一つにまとめるにはどうしたらいいでしょうか?

int[] a = {1,2,3};
int[] b = {4,5,6};

int[] c = {1,2,3,4,5,6};
225デフォルトの名無しさん:2009/06/08(月) 14:47:35
c = a.Concat(b).ToArray();
226デフォルトの名無しさん:2009/06/08(月) 14:59:34
225> 出来ました。ありがとうございます(_ _)
227デフォルトの名無しさん:2009/06/08(月) 19:56:13
Window Formの初期化のタイミングとして、
1.コントラクタのInitializeComponent();の後、
2.Loadイベントハンドラ内、
3.フォーム表示直後のShownイベントハンドラ内
の3つがあると思います。

1,2と3はフォームが表示される前か後ろかという違いがありますが、
1と2ではどういう違いがあるのでしょうか?
228デフォルトの名無しさん:2009/06/08(月) 20:07:05
newしたときに呼び出されるか表示とかしようとしたときに呼び出されるか
229デフォルトの名無しさん:2009/06/08(月) 20:08:23
C#ってASP開発できるんですか?
230デフォルトの名無しさん:2009/06/08(月) 20:14:18
ASP.netなら出来る
231デフォルトの名無しさん:2009/06/08(月) 20:20:21
>>228
なるほど、ということは、

コンストラクタ→New後、フォーム表示前に一度だけ実行

Loadイベントハンドラ→フォーム表示前に実行。リロードしたら再度実行される。

Shownイベントハンドラ→フォーム表示後一度だけ実行(リロードしても実行しない)

くらいに考えとけば良いですか。
232デフォルトの名無しさん:2009/06/08(月) 20:30:49
普通、Windows Forms にリロードという概念はない。
233デフォルトの名無しさん:2009/06/08(月) 20:35:35
〜Changedっていうイベントはオブザーバーパターンなんですか?
234デフォルトの名無しさん:2009/06/08(月) 20:47:44
>>232
・・・もう一度マニュアル読んできます。
ありがとうございました。
235デフォルトの名無しさん:2009/06/08(月) 20:50:26
イベントはイベントだろ
236デフォルトの名無しさん:2009/06/08(月) 20:51:31
今日なんかあるの?
237sage:2009/06/08(月) 21:28:25
VisualC#2008で、再表示がうまくできずに困っています。
fileSystemWatcher
でファイルを監視し、ファイルを読みこんで表示しようとしています。

string file = @"C:\tmp.txt";
public Form1()
{
InitializeComponent();
}

private void fileSystemWatcher1_Changed(object sender, System.IO.FileSystemEventArgs e)
{
string[] lines = System.IO.File.ReadAllLines(file, Encoding.GetEncoding("Shift_JIS"));
//MessageBox.Show(lines[1]);
label1.Text = lines[1];
label2.Text = lines[2];
label3.Text = lines[3];
label4.Text = lines[4];
label5.Text = lines[5];
}
監視はできているようなのですが、2度めの表示が行われません。
どこがまずいんでしょうか。
238デフォルトの名無しさん:2009/06/08(月) 21:38:16
public static List<T> a = new List<T>();
↑静的なListって可能なんですか?
どうやってメモリを確保しているんですか。
239デフォルトの名無しさん:2009/06/08(月) 21:39:22
>>237
そのコードだけで判断しろってのも難しいが、ひょっとして
C# の Array(string[] とか) のインデックスは 0 から始まるぞ。
それはさすがにOK?
240デフォルトの名無しさん:2009/06/08(月) 21:40:04
>>238
可能
起動時に自動で1度だけ呼ばれる
241デフォルトの名無しさん:2009/06/08(月) 21:49:47
>>240
正確には、そのクラスが初めて使われるときね。
242デフォルトの名無しさん:2009/06/08(月) 21:50:42
>>237
一応の確認だけど、そのFileSystemWatcherはVSでツールボックスからD&Dしたものだよね?
243238:2009/06/08(月) 22:00:57
>>240-241
へー。
静的なのか動的なのか、分かったような分からないような…。
ありがとうございます。
244デフォルトの名無しさん:2009/06/08(月) 22:01:22
初めに表示するメインフォームがアクティブにならずに起動することがある
ビルドして何もクリックしてないのにキャプションバーが灰色になってる
ウィンドウズのバグ?
245デフォルトの名無しさん:2009/06/08(月) 22:11:04
すぐ Windows のバグ? とか聞く奴は、死んだ方がいいと思うよ。
246デフォルトの名無しさん:2009/06/08(月) 22:13:14
2DMAPエディタを作ってみたいと思います。配列は必要というのはわかりました
どなたか知恵を貸してください。設計とか初めてなので><
247デフォルトの名無しさん:2009/06/08(月) 22:17:57
アイコンエディタでも描いてろ
248デフォルトの名無しさん:2009/06/08(月) 22:22:43
>>246
二次元配列使うとやりやすいと思う
int[,] ってやつ
後は
画像を分割して描画する(g.DrawImage)
バイナリ(orテキスト)でそのデータを保存する
保存したデータを読み込む
クリックした場所を取得する
等々

最低限上の機能は必要
そのほかマップの大きさだとかも必要だろうし
スクロールも必要
249デフォルトの名無しさん:2009/06/08(月) 22:30:06
StreamReader(じゃ無くてもいいのですが)を利用して
単純にファイルを開くだけの処理を記述した場合、
1Kと100Mのファイルでは、オープンにかかる時間は違うものでしょうか?

挙動を見ると、単にファイルを開くだけ(Readしない)だと、
どちらも大して時間がかからないのですが、
大きなファイルは開くだけでも時間がかかるといわれまして。

試したところでは、大差ないので、読み込まずに開くだけであれば差は無いのかと
思ったのですが、違いがわかるかた教えていただけますか?
250デフォルトの名無しさん:2009/06/08(月) 22:32:48
言われたんだろ?言った奴に根拠を聞けよ
251デフォルトの名無しさん:2009/06/08(月) 22:34:39
>>243
static と言いつつ、静的(コンパイル時決定)じゃない。
あれにstaticって名前が付いてるのはC++を意識しすぎた結果。
実際にはクラス変数とでも呼ぶべきもの。
252デフォルトの名無しさん:2009/06/08(月) 22:35:07
>>249
違わない
その人は何か既成のアプリと勘違いしてるんじゃない?
253デフォルトの名無しさん:2009/06/08(月) 22:36:17
>>249
それはファイルシステム次第、ドライバ次第だな、StreamReaderの仕事はOSにリクエスト出すまで
OSの仕事はドライバにリクエストを出すまでだ。
254デフォルトの名無しさん:2009/06/08(月) 22:39:25
ファイルを開いただけで読むことをしないんじゃ、
基本的にファイルサイズによる差は起こらないはずだよね。
ほかの人の言ってるようにデバイスによる差(ネットワーク上のファイルとかフロッピーディスクとか)による差は当然ある。
255デフォルトの名無しさん:2009/06/08(月) 22:43:48
>>252-254
即レスありがとうございます
やはりそうですか。助かりました。
ファイルシステムやドライバをもっと勉強してみます。
256sage:2009/06/08(月) 22:45:24
>>239
なるほど。
たしかにArrayのインデックスは0からで、
0(つまり1行目)ではなくて2行目から処理してますね。
それはそれでありがとうございますです。

しかし、やはりファイル更新の監視はうまくいかず、
該当するtmp.txtを2回更新すると、2回目には、例外が発生します。
別のプロセスで使用されているため、
プロセスはファイルtmp.txtにアクセスできません。
だそうです。
257sage:2009/06/08(月) 22:46:50
>>242
YES。
ドラッグ&ドロップして、プロパティで、
NotifyFilterをLastWriteにしました。
いまの全コードはこれだけです。

public Form1()
{
InitializeComponent();

this.fileSystemWatcher1.Filter = "tmp.txt";
this.fileSystemWatcher1.NotifyFilter = System.IO.NotifyFilters.LastWrite;
this.fileSystemWatcher1.Path = "C:\\";
}

private void fileSystemWatcher1_Changed(object sender, System.IO.FileSystemEventArgs e)
{
//MessageBox.Show("changed");
string[] lines = System.IO.File.ReadAllLines(file, Encoding.GetEncoding("Shift_JIS"));
label1.Text = lines[1];
label2.Text = lines[2];
label3.Text = lines[3];
label4.Text = lines[4];
label5.Text = lines[5];
}
258デフォルトの名無しさん:2009/06/08(月) 22:47:14
>>256
その例外が言ってる通りじゃないか。
ほかのプロセスが掴んでたらファイルが開けないことがある。
259デフォルトの名無しさん:2009/06/08(月) 22:51:04
>>255
勉強する必要はないかと、当の本人に聞くなり、問題のブツで試してみればいい。
組み込み用のハードディスクに突然の電源断に耐えられるように設計された、書き込みバッファの無いHDが
そういう問題があって、スレッド使って対処したという苦労話は聞いたことがある、ただ.NETが取り扱うハードウェアというと、
通常のWindowsかモパイルCE系だと思われるが、そんなハードディスクなど聞いたことが無いね、
だからといって無いとは言いきれないので、問題のブツで確かめてみるしかないのでは。
260sage:2009/06/08(月) 22:57:14
>>258
なるほど。
System.threading.Thread.Sleep(1000);
でとりあえず解決しました。
サンクスです。
261デフォルトの名無しさん:2009/06/08(月) 23:09:11
すいません
C#で簡単なアニメーションさせたいので
bmp等の画像描画処理について詳しく書かれているサイトってわかりますか?
初心者なのでできるだけ詳しく書かれているところがいいんです。
よろしくお願いします。
262デフォルトの名無しさん:2009/06/08(月) 23:14:29
他のクラスからprivateなメソッドを無理やり使う方法を教えてください
263デフォルトの名無しさん:2009/06/08(月) 23:15:13
>>262
リフレクション
264デフォルトの名無しさん:2009/06/08(月) 23:25:18
>>263
サンプルコードありますか?
265デフォルトの名無しさん:2009/06/08(月) 23:28:08
いくらでもあるよ
266デフォルトの名無しさん:2009/06/08(月) 23:28:28
くり返しのところをforで書き換えてみたところ、
2回目の表示で、1回目の表示が消えないのです。
どこかでdisposeとかする必要があるのでしょうか?

Label[] label;

private void fileSystemWatcher1_Changed(object sender, System.IO.FileSystemEventArgs e){
System.Threading.Thread.Sleep(1000);
string[] lines = System.IO.File.ReadAllLines(file, Encoding.GetEncoding("Shift_JIS"));

label = new Label[5];
for (int i = 0; i < 5; i++){
this.label[i] = new System.Windows.Forms.Label();
this.label[i].AutoSize = true;
this.label[i].BackColor = System.Drawing.Color.Transparent;
this.label[i].Font = new System.Drawing.Font("メイリオ", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(128)));
this.label[i].Location = new System.Drawing.Point(23, 35 + i * 60);
this.label[i].Name = "label[i]";
this.label[i].Size = new System.Drawing.Size(62, 24);
this.label[i].Text = lines[i];
this.Controls.Add(this.label[i]);
}
}
267デフォルトの名無しさん:2009/06/08(月) 23:28:52
取りあえず、ヒントもらったらググる位しようや
268デフォルトの名無しさん:2009/06/08(月) 23:31:08
このスレには優しい人とそうでない人がいます。
269デフォルトの名無しさん:2009/06/08(月) 23:31:20
>>264
何勝手に乗ってきてるわけ?
270デフォルトの名無しさん:2009/06/08(月) 23:31:57
んなもん当たり前だろ
271デフォルトの名無しさん:2009/06/08(月) 23:32:19
MSDN にもあるし、いろんなところにあるよ。

Reflection とか MethodInfo とかで探してみ。
272デフォルトの名無しさん:2009/06/08(月) 23:32:47
ありがとう。
273デフォルトの名無しさん:2009/06/08(月) 23:37:32
どんどんラベルを追加してるだけのような。
274デフォルトの名無しさん:2009/06/08(月) 23:44:33
C#にはVBのWithに相当する機能はありますか?

クラス1.プロパティ1 = x;
クラス1.プロパティ2 = y;

というのを

With クラス1
  .プロパティ1 = x;
  .プロパティ2 = y;
End With

みたいに書いて入力の手間を省きたいのですが。
Withを使うとVBの場合は実行速度も少し上がるそうですが。
275デフォルトの名無しさん:2009/06/08(月) 23:46:33
ありません。
276デフォルトの名無しさん:2009/06/08(月) 23:46:40
>>248
ありがとうございます。やってみます!
277デフォルトの名無しさん:2009/06/08(月) 23:54:22
>>274
インタプリタなら速くなるのは分かるがVB.NETでも速くなるのかな。
速くなるならC#でも深いところにあるクラスは一度ローカル変数に代入してからのほうが速い?
278デフォルトの名無しさん:2009/06/08(月) 23:55:31
>>241
「そのクラスにアクセスするより前に一度だけ実行される」ことが
保障されているだけじゃなかったか?

>>274
全く同じ機能はない
初期化時限定のオブジェクト初期化子くらい
279デフォルトの名無しさん:2009/06/08(月) 23:57:22
つーか、With って .NET ではシンタックスシュガーじゃなかった?
280デフォルトの名無しさん:2009/06/09(火) 00:00:08
>>278
> 「そのクラスにアクセスするより前に一度だけ実行される」ことが
> 保障されている
規格上はそうなってた気がする。
実際は、たいてい直前。
281デフォルトの名無しさん:2009/06/09(火) 00:11:39
>>277
多分JITコンパイルで最適化されるんじゃないかなその程度
282デフォルトの名無しさん:2009/06/09(火) 00:35:09
ないんですか。残念です。
この程度なら、プリプロセッサあたりで処理してくれてもいいと思うのは私だけでしょうか。
コントロールの初期設定とか、同じ名前空間やクラス名がずらっと並んでるのを見ると、
もうちょっと楽にコーディングできる手段があってもよさそうに思うのですが。
283デフォルトの名無しさん:2009/06/09(火) 00:42:23
インテリセンスがあるからコーディングの手間はさして変わらん。
コードが汚くなるからwithを採用しない言語は多い。
284デフォルトの名無しさん:2009/06/09(火) 00:47:33
>>282
初期設定なら似たような事はできる
var tmp = new Hoge() { A = 10 , B = 30 };
A,B はHogeのプロパティーまたは変数
285デフォルトの名無しさん:2009/06/09(火) 00:54:53
VBにあってC#に無い寂しい機能はLINQToXmlのXMLリテラルかな。
これがあったら、withどころか究極のデータセッティングができるんだけれど……
286デフォルトの名無しさん:2009/06/09(火) 00:57:10
>>284
なるほど、そういう書き方もできるんですね。勉強になります。
287デフォルトの名無しさん:2009/06/09(火) 01:00:41
288デフォルトの名無しさん:2009/06/09(火) 01:06:22
>http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1135&forum=7
なるほどね、C#ならスコープ使えって事か
{
var a = hoge.member;
a.Prop1 = 10;
a.Prop2 = 10;
}
289デフォルトの名無しさん:2009/06/09(火) 01:13:13
>>287
確かに、オブジェクトをいちいち作ってやれば同じことになりますね。
withほど簡略化はできませんが、多少は楽が出来そうです。
コード的にもメリットがあるみたいですし。
290デフォルトの名無しさん:2009/06/09(火) 01:13:41
リンク先のような場合、
ds.Tables("Customers").Rows
がそれなりに処理重そうだから無意識に一度ローカルに代入してるな。

ただ >>288 のような軽いメンバアクセスはそのまま見ちゃってるなぁ。
291デフォルトの名無しさん:2009/06/09(火) 01:21:50
イベントで this.xxxでアクセスするより senderをcastするほうがいいってことか。
292デフォルトの名無しさん:2009/06/09(火) 01:25:30
キャストの方がコスト高いだろ
293デフォルトの名無しさん:2009/06/09(火) 01:27:45
ますますはまってます。
label = new Label[5];
for (int i = 0; i < 5; i++)
{
this.label[i] = new System.Windows.Forms.Label();
this.label[i].Dispose();
}
for (int i = 0; i < 5; i++)
{
this.label[i] = new System.Windows.Forms.Label();
//this.label[i].Dispose();
//this.label[i].Text.Remove(1);
this.label[i].AutoSize = true;
this.label[i].BackColor = System.Drawing.Color.Transparent;
this.label[i].Font = new System.Drawing.Font("メイリオ", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(128)));
this.label[i].Location = new System.Drawing.Point(23, 35 + i * 60);
this.label[i].Name = "label[i]";
this.label[i].Size = new System.Drawing.Size(62, 24);
//this.label[i].Text = "";
this.label[i].Text = lines[i];
//this.label[i].Text = this.label[i].Text.Replace(this.label[i].Text,lines[i]);
this.Controls.Add(this.label[i]);
}


294デフォルトの名無しさん:2009/06/09(火) 01:50:33
拡張プロパティってどう書くの?
295デフォルトの名無しさん:2009/06/09(火) 01:55:27
書けない
296デフォルトの名無しさん:2009/06/09(火) 02:14:52
ファック!ファック!ファック!!
297デフォルトの名無しさん:2009/06/09(火) 03:09:25
クラスつくるとき
class testint{
private int a;
}

ってやって
testint test=new testint()
なんで
testint test
だけで実装できないんだ。わざわざ無駄な手間かけさせる意味は?
あと、なんでtestint()の最後、何もない括弧をつけなきゃいけんのだ。
298デフォルトの名無しさん:2009/06/09(火) 03:17:10
>>297
CかC++から来た人?もしそうなら、
クラスは常にポインタ型(のようなもの、ポインタ演算はない)。newしなければnullが入っている。
という短い文章で分かってほしい。

testint test=new testint()と打つのは、Visual Studioとか入力支援が良くできたところで書けば案外大した手間でない。
クラス名を2度書くのが嫌ならvarがある、ローカル変数限定だけど。
()が要るのはなぜ?というのは俺も思うところだけど。
299デフォルトの名無しさん:2009/06/09(火) 03:24:51
コンストラクタだから。引数のないメソッドの()も省力しないだろ。
300298:2009/06/09(火) 03:27:50
>>299
ありがとう、納得した。

C++はnew hogeで通るし、引数があっても括弧を省略できる場合のある
VBとか使っていたからそこまで考えが及ばなかった。
301デフォルトの名無しさん:2009/06/09(火) 03:41:29
>>298

c++を見てみました。
c++なら
class testint{
private:
int kazu;
}

testint test;
test.kazu=10;

これでいいのか・・・
newとかいうのはオブジェクト指向で必ずしも必須というわけじゃないんだね。
コンストラクタも自動的に呼び出されるのか。
c#とはずいぶん違うんだね。初心者にはc++のがいいのかな
302デフォルトの名無しさん:2009/06/09(火) 03:44:14
c++のnewはヒープに作る場合
303デフォルトの名無しさん:2009/06/09(火) 06:52:25
c#のnewはどこのメモリを使うん?
304デフォルトの名無しさん:2009/06/09(火) 06:57:08
字は読めても話の流れが読めない人って誰?
305デフォルトの名無しさん:2009/06/09(火) 08:46:14
>>303
C++ は new の有無でスタックはヒープかわかれるけど、
C# は class か struct かで分かれる。
class なら new したのはヒープに、
struct なら new は単なるコンストラクタ呼び出し、スタックに取られる。

struct でもわざわざ new しないと行けない理由は、
その方が構文解析が楽(後々他の構文追加しやすい)とか、
初期化し忘れを防ぐためにわざわざ面倒な構文にしてあるとか、
class とそろえるとか、そういう理由だと思う。
306デフォルトの名無しさん:2009/06/09(火) 10:11:50
struct は new してもいいがしなくても構わないぞ、ただし全メンバーをセットしてからでしか使えないが
struct の new は引数無しなら、全フィールドに0入れるよという指示で、それ以外なら指定の定型初期化を処理するという事ではなかろうかと。
最近は default というキーワードができて、二重機能っぽくなってるいけれど、これはジェネリックの都合かなと。
307デフォルトの名無しさん:2009/06/09(火) 10:16:51
それと、Cでいう所の自動変数を宣言する場所で構造体を宣言すると、スタックに乗りそうな予感がするものだが
たとえば
void Test()
{
int tmp;
Action a = () => { tmp = 3 ; };
}
このtmpは、スタックに取られているとはどうにも思えない
内部的には勝手JITの勝手というのが実態かと。
308デフォルトの名無しさん:2009/06/09(火) 10:23:10
HttpWebRequestクラスでリクエストヘッダーを読み取ったりするとき
UserAgentとかkeep-aliveプロパティは取得できるのですが
(<HttpWebRequest.UserAgent>プロパティ,<HttpWeqRequest.KeepAlive>プロパティ)

Host,Accept-Language,Accept-Encoding,Accept-Charsetプロパティが読み取れません。

読み取り方をよろしくお願いします。また、ヘッダー情報を編集してリクエストストリーム
に流せるかどうかも教えていただきたいです。
309デフォルトの名無しさん:2009/06/09(火) 10:34:54
Console.WriteLine( string.Format( "{0,4:f2}", 10.0 ) );
Console.WriteLine( string.Format( "{0,4:f2}", -10.0 ) );

こんな感じで作った文字列の桁を揃えたいんだけど、うまくいきません。
上の例だと

10.00
-10.00

となります。
マイナスの符号があるときになんとかしたいんだけど、
うまいことやる方法はあります?
310デフォルトの名無しさん:2009/06/09(火) 10:51:23
>>308
Requestでヘッダを「読み取る」必要があるのかどうかって話はあるが
直接プロパティになってないヘッダはHeadersプロパティから取得設定できる
311デフォルトの名無しさん:2009/06/09(火) 11:09:11
>>309
セクション区切り記号「;」を使ったカスタム書式指定かね
{0,5: 0.00;-0.00}
ところで小数点以下2桁有効だとフィールド幅4は意味がないと思うけど
312デフォルトの名無しさん:2009/06/09(火) 11:12:44
>>307
それはラムダ式(クロージャ)が影響している。
() => { } を内包するクラスが暗黙に作られてそのメンバにtmpがあるはず。
313デフォルトの名無しさん:2009/06/09(火) 11:17:12
>>311
ごめん実はそのあたりよくわからなくてテキトーに書いてました
もっと詳細を言うと、x,y,zを持つポイントクラスがあって

始点:( x1, y1, z1 )
終点:( x2, y2, z2 )

みたいな感じで小数点以下3桁で計6桁ぐらいで書き出したいときの
桁揃えという話でした。詳しく書かなくて申し訳ない。
314デフォルトの名無しさん:2009/06/09(火) 11:33:00
>>310
回答ありがとうございます。

Webスクレイピングをやっていて、リクエストしてもうまく次のページに行かないんです。
Postされるべきデータ(トランザクショントークンとキーワード)はバッチリだと思うのですが。。
(Firebugを使って手動で動かしたときのリクエストヘッダーやPOSTしたデータの中身が
確認できる)

ヘッダー情報のリファラーが監視されてるみたいでそれについては確認できたのですが、
それでもうまく行きません。もちろんクッキーについてはクッキーコンテナをリクエストに
かませてますし、他に思いつくのが他のヘッダー情報も監視されているかもということです。

そこで自作プログラムのリクエストのヘッダー情報とFirebugで手動で動かしたときに
確認できるヘッダー情報を見比べて、必要あらば修正してリクエストに流そうと思ったわけです。

310さんの言うとおりに

List<string> list = new .........

for(int i =0;i < req.Headers.Count; i ++)
list.add(req.Headers[i];

で取得してみたのですが一行しか取得できないんですけど。。書き方が違うんですかねぇ(^ ^ ;
長文スマンです。
315デフォルトの名無しさん:2009/06/09(火) 11:42:03
とりあえずHttpWeb「Response」だよな?
316デフォルトの名無しさん:2009/06/09(火) 11:48:48
>>315  げ、ひょっとして自分のリクエストのヘッダーを確認するのって
HttpWebRequestからはできないんっすか。。???
ちょっとレスから拾ってみたいと思います。。。
317デフォルトの名無しさん:2009/06/09(火) 11:58:38
事情は了解
それってデバッガでステップ実行すればよくね?
あとは別のパケットモニタアプリ使うか
318デフォルトの名無しさん:2009/06/09(火) 11:59:09
WireSharkか何かでパケットキャプチャして本当にブラウザと同じリクエスト飛んでるか調べたら?
その方が手っ取り早い気がする。
319デフォルトの名無しさん:2009/06/09(火) 11:59:38
リロードしてなかった。すまぬ。
320デフォルトの名無しさん:2009/06/09(火) 12:06:44
>> 318
WireSharkは友人にも進められて検討してるのですが、
修正の必要が出てきたときにどうやって書き込めばいいのでしょうか?
コードサンプルがあるとありがたいっす。
321デフォルトの名無しさん:2009/06/09(火) 12:14:49
HttpWebRequest req //略
req.Headers.Add(HttpRequestHeader.AcceptEncoding,"gzip");

// req.Headers[HttpRequestHeader.AcceptEncoding] = "gzip"; も可

何が困ってるのかイマイチ伝わんね。
322デフォルトの名無しさん:2009/06/09(火) 12:47:50
321>>
文章力なくてすみません。。
321さんが書いて下さったみたいなコードサンプルがようするに欲しかったんです^^;
レスありがとうございます。
323デフォルトの名無しさん:2009/06/09(火) 12:55:26
ええええええええええええええええええええええええええええええええええええええええええええええええ
324デフォルトの名無しさん:2009/06/09(火) 13:07:11
うるさい
325デフォルトの名無しさん:2009/06/09(火) 13:23:19
321>
あの〜、やってみたんですけど
req.Headers.Add(HttpRequest.Header.Host, "HostName");
って書くと'Host' ヘッダーを直接変更することはできません。
って出ちゃうんですけど。Hostの書き換えは無理??
326デフォルトの名無しさん:2009/06/09(火) 13:25:42
>>325
お前死ぬの?死にたいの?叩き殺されたいの?

http://msdn.microsoft.com/ja-jp/library/system.net.httpwebrequest.headers(VS.80).aspx

解説
Headers コレクションは、要求に関連付けられているプロトコル ヘッダーを格納します。
Headers コレクションには格納されず、システム、プロパティ、またはメソッドのいずれかで設定される HTTP ヘッダーの一覧を次の表に示します。

Host システムにより現在のホスト情報に設定されます。
327デフォルトの名無しさん:2009/06/09(火) 13:29:58
いいよ
1から10まで聞かないとできない奴は排除したれ
328デフォルトの名無しさん:2009/06/09(火) 13:36:29
>>1
329デフォルトの名無しさん:2009/06/09(火) 14:29:34
public はクラスの外からのアクセスを許可し、private は許可しないみたいですが
それならpublicだけでよくないですか?
330デフォルトの名無しさん:2009/06/09(火) 14:34:04
人間はミスする生き物なので、触れて欲しくない要素は外部に公開しないようにしております。

全員が全員ドキュメントをキチンと読んで、万に一つのミスも犯さないようなパーフェクト人間であれば全てpublicでも良いでしょうね。
331デフォルトの名無しさん:2009/06/09(火) 14:47:30
時そばで、勘定中にカウンタを外部から書き換えられちゃったから
1文ごまかされちゃったんだよね。
332デフォルトの名無しさん:2009/06/09(火) 14:51:35
>>330-331
レス感謝です。
333デフォルトの名無しさん:2009/06/09(火) 14:55:55
>>331
感心したわ。
334デフォルトの名無しさん:2009/06/09(火) 19:16:49
C# 2008で質問です。

非表示のフォームにDataGridViewを貼り付けてあります。
ここにReadXMLでデータを読み込んで、DataGridViewからデータを取り出そうとしたら
どのセルも空白のままでした。

一度でもフォームを表示すれば、そのタイミングで実際の読み込み動作が行わて
セルにデータが入るのですが、
非表示のままでデータをDataGridViewに反映させる方法を教えてください。
335デフォルトの名無しさん:2009/06/09(火) 19:26:21
DataSet使おうよ…
336デフォルトの名無しさん:2009/06/10(水) 03:18:40
VCEEでPen p=new Pen()をつくって
Form1にg.drawline(p,0,0,100,100)とかやったら
書けるんだけど、
画面切り替えたら消えちゃうんだけど消えないようにするにはどうやるの?
337デフォルトの名無しさん:2009/06/10(水) 03:22:15
また描く
もしくは,なんかDoubleBufferみたいなプロパティがあればtrueに
338デフォルトの名無しさん:2009/06/10(水) 03:22:59
Paintイベントで描く
339デフォルトの名無しさん:2009/06/10(水) 03:26:06
340デフォルトの名無しさん:2009/06/10(水) 09:25:21
ソリューションエクスプローラー

ソリューション’game’(1プロジェクト)
└game
 ├ソースフェイル
 │├hello.cpp
 │└helo2cpp
 ├ヘッダーファイル
 └リソースファイル

となっています。

helllo.cpp

#include <stdio.h>
int main(void)
{
printf("こんにちは!\n");
return 0;
}
341340の続き:2009/06/10(水) 09:26:03
helllo2.cpp

#include <stdio.h>
int main(void)
{
int a,b,c;
a=1;
b=2;
c=a+b;
printf("a+b=%d\n",c);
return 0;
}

とプログラムを書いたのですが、デバッグするとエラーが出ます。
main(void)が2つあるとプログラムが正常に作動しないんでしょうか?
342デフォルトの名無しさん:2009/06/10(水) 09:31:01
スレ違い
どっかで聞き直すならエラーぐらい書けよ
343デフォルトの名無しさん:2009/06/10(水) 09:32:34
mainは一つでなければなりません。
344デフォルトの名無しさん:2009/06/10(水) 10:07:46
>>343
そうですか。よくわからないけど研究してみます。
345デフォルトの名無しさん:2009/06/10(水) 10:28:53
C++の基礎を一通り勉強してみて、やっぱりC#にしようか悩んでるのですが・・・

作りたいアプリはあるウェブサイトの更新をするアプリです。
HTMLフォームのユーザビリティに嫌気がさしてきたもので。
スクリプト言語ですがPHPとかActionScriptとかJavascriptを仕事で使ってます。
JAVAもできます。

条件としては
1、オブジェクト指向でプログラミングできること。
2、なるべくwindowsに色々インストールしなくても使えること。
3、今後も役に立ちそうな言語であること

C#って.NETフレームワークが必須なんですよね?

C#って.NETフレームワークがインストールしてあったら、
他に何かランタイム無しで動くのですか?

2はインストーラーを作ればそれほど気にすることはないって聞いたけど
そういうもんでしょうか?
346デフォルトの名無しさん:2009/06/10(水) 10:45:56
.NET2.0ターゲットならたいがいランタイムは入ってるからそんなに気にしなくていいよ
少なくともJavaよりは嫌われない
347デフォルトの名無しさん:2009/06/10(水) 10:51:00
ClickOnceインストーラを使うのであれば、依存関係は勝手に作ってくれるしランタイムも言語別の細かいところも自動。
自分が何か手をいれる必要はないので意識はしなくてもいいし、自分はした事が無い。
348デフォルトの名無しさん:2009/06/10(水) 10:54:11
Silverlight使えば?
Webの知識活かせるしクロスプラットフォームだしランタイム超小さいよ
349デフォルトの名無しさん:2009/06/10(水) 10:58:17
347に追加、C++からというならひょっとすると、C/C++コードとの相互運用を入れているかもしれないが、これが入っている時はClickOnceが使えないので注意。
一般のインストーラを使って全部手動でやるきる必要がある。

それとClickOnceインストーラというのは、今はそう呼ばれていないかもしれない、プロジェクトのプロパティーの発行タブで設定して作れるインストーラの事。
350デフォルトの名無しさん:2009/06/10(水) 12:56:24
>>345
まあHTMLフォームの代わりに使いたいと言ってるんだから、
ネイティブコードのモジュールを使いたいなんてことはそうそうないだろ。
.NETはメジャーな画像形式なら最初から扱えるし。
普通にC#でフォーム作って必要な機能を用意すればいいんじゃないかな。

ClickOnceええよ。
イメージとしてはサーバーに置かれているソフトを
ブラウザのローカルキャッシュにコピーして、そこで起動する感じ。

自作のフリーソフトをzip版とClickOnce版と両方提供してるけど、
ClickOnceならVSからリリースするだけで、zipをアップロードする必要もないし。
351デフォルトの名無しさん:2009/06/10(水) 20:14:19
>>349
> 347に追加、C++からというならひょっとすると、C/C++コードとの相互運用を入れているかもしれないが、これが入っている時はClickOnceが使えないので注意。
> 一般のインストーラを使って全部手動でやるきる必要がある。

ダウト。やりようによってはできる。
352デフォルトの名無しさん:2009/06/10(水) 21:36:43
>>351
実行時に別のインストーラ起動するって奴だろ、ClickOnceのHowToに書かれていたのでやってみたが
凄いめんどくさいぞ、それにそれをすると自動更新は役立たずになるし
353デフォルトの名無しさん:2009/06/10(水) 21:44:10
MSのサイトにも書かれていたが、ClickOnceインストーラとmsiインストーラの使い分けの基準として
.NETの範囲で収まっているかどうかという所がポイントだと思われる
無理をしてClickOnceを使うよりはmsiの方がシンプルになるケースは少なくない。
354デフォルトの名無しさん:2009/06/10(水) 21:44:43
Google Chrome でも使ってるけどな。>ClickOnce
355デフォルトの名無しさん:2009/06/10(水) 21:48:53
ClickOnceはお手軽インストーラではあるけれども万能インストーラではないからな
356デフォルトの名無しさん:2009/06/10(水) 21:49:37
>>351
違うだろ。C/C++ コードとの相互運用って、P/Invoke とかだろ?
別に ClickOnce アプリでも、P/Invoke やら COM Interop やらできるわけだが。
357デフォルトの名無しさん:2009/06/10(水) 22:26:05
ClickOnceってサイトに来てもらえなくなるんじゃないの?
有料ソフトならいいけど
358デフォルトの名無しさん:2009/06/10(水) 23:18:33
>>357
どういう意味だ?
359デフォルトの名無しさん:2009/06/10(水) 23:31:00
C#を勉強しだして業務アプリは大体こなせるようになりました
趣味でTelnetクライアントやFTPクライアントを作ってみたいのですが、
何か参考になる書籍やサイトがあったら教えてください
RFCは勉強中です
360デフォルトの名無しさん:2009/06/10(水) 23:42:08
RFCがまともなんでないかい
Telnetのネゴシエーションプロセスとか全く無いのとか
FTPはpassive対応してなかったりcontrolとdataの二本が必ずセットになってたりする
361デフォルトの名無しさん:2009/06/11(木) 00:00:30
C#勉強しようと思ってるんですけど、とりあえずTurbo C#とか
入れればいいんでしょうか?
とりあえずサンプルとかをコピペして動くことを確認したいです。
作ろうとしてるものとか目標とかは今のとこありません。

あとお金も無いんですけど、
なんか購入する必要ってあるんですか?

362デフォルトの名無しさん:2009/06/11(木) 00:03:19
妙なこだわりがないならVisual C# 2008 Express Editionにしておけ

買う物は特に必要なし
363デフォルトの名無しさん:2009/06/11(木) 00:03:34
>>361
C#する前に仕事しろ
364デフォルトの名無しさん:2009/06/11(木) 00:03:48
>>361
VC# Express入れればいい
365デフォルトの名無しさん:2009/06/11(木) 00:26:12
Formを回転させたいのですがヒント下さい。
WPFだとあるかな?と思ったけど、ぐぐってもそれらしい情報が見つかりません。
#DirectXの範疇になるのでしょうか?
366デフォルトの名無しさん:2009/06/11(木) 00:26:13
ツールボックスにあるポインターってなんすか?
367デフォルトの名無しさん:2009/06/11(木) 00:30:06
ポインターとはポインターです、糞して寝てください
368デフォルトの名無しさん:2009/06/11(木) 00:34:21
>>362
>>364
ありがとうございます!調べてみます!
>>363
仕事はしてます!契約がなくて社内ニート中ですけど!
369デフォルトの名無しさん:2009/06/11(木) 00:41:21
どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッドなのに厳しいっすね
370デフォルトの名無しさん:2009/06/11(木) 00:41:59
質問したいんじゃなくて喧嘩うってんだろw
371デフォルトの名無しさん:2009/06/11(木) 00:42:27
つまり、金を貰いつつ社内でC#のお勉強か!羨ましい限りだな。

>>365
WPFならコントロールの回転はできるが、ウィンドウ自体の回転はできなかったと思う。
372デフォルトの名無しさん:2009/06/11(木) 00:44:50
何で教えてくれないのか不思議で仕方ないっす
373デフォルトの名無しさん:2009/06/11(木) 00:47:16
リアルでぶんなぐられないように十分注意することだ
374デフォルトの名無しさん:2009/06/11(木) 02:14:06
VisualC#2008で質問があります。
おなじ画像をくり返し表示するのに、ツールボックスを使わず配列にしてみました。

namespace WindowsFormsApplication1{
public partial class Form1 : Form{
private System.Windows.Forms.PictureBox[] pictureBox;
public Form1(){
InitializeComponent();

string photo = @"C:\photo.jpg";
for (int i = 1; i < 5; i++){
this.pictureBox[i] = new System.Windows.Forms.PictureBox();
((System.ComponentModel.ISupportInitialize)(this.pictureBox[i])).BeginInit();
this.pictureBox[i].Location = new System.Drawing.Point(12, 22 + i * 200);
this.pictureBox[i].Name = "pictureBox[i]";
this.pictureBox[i].Size = new System.Drawing.Size(300, 200);
this.pictureBox[i].Image = Bitmap.FromFile(photo);
this.Controls.Add(this.pictureBox[i]);
}
}
}
}

で、コンパイルは通るのですが、エラーになります。
NullReferenceExceptionはハンドルされませんでした。
オブジェクト参照がオブジェクトインスタンスに設定されていません。
ってことなのですが、なにがNullになっているんでしょう?
なんかポカミスしている気がするんだけど…。
375デフォルトの名無しさん:2009/06/11(木) 02:15:58
private System.Windows.Forms.PictureBox[] pictureBox;
がnull
376デフォルトの名無しさん:2009/06/11(木) 02:16:34
デバッガで追っかけてけばすぐわかるよ
「自動変数」タブな
377デフォルトの名無しさん:2009/06/11(木) 02:31:59
pictureBoxは何で初期化してないの?
378デフォルトの名無しさん:2009/06/11(木) 02:39:30
早速サンキューです。
すばやっ。
助かります。
pictureBox = new PictureBox[5];
を追加して、無事表示できました。

ところで何度見ても、自動変数タブがないんですけど、…。
左から、ローカル、ウォッチ、呼び出し履歴、イミディエイトウィンドウ、出力。
どこに消えたかご存じないですよね?
379デフォルトの名無しさん:2009/06/11(木) 02:45:49
ブレイク中のメニューのデバッグ>ウィンドウにあるはずだが
380デフォルトの名無しさん:2009/06/11(木) 02:54:13
>for (int i = 1; i < 5; i++)
ここは大丈夫?
pictureBoxは0から4までの5つの要素のうち
1から4までの4つを使うことになるわけだけど
381デフォルトの名無しさん:2009/06/11(木) 04:03:24
文字列の配列をstirng(羅列string, string, string, ...)に変換するにはどうすればいいですか?
382デフォルトの名無しさん:2009/06/11(木) 04:30:00
日本語でおk
区切り文字を挿んで文字列を連結したいって事なら、string.Join
383デフォルトの名無しさん:2009/06/11(木) 09:02:29
private void button1_click(object sender,Eventargs e)
の()の中のobject sender,Eventargs e
って何ですか
384デフォルトの名無しさん:2009/06/11(木) 09:07:17
senderにはイベントを発生させたオブジェクト
eには必要に応じてイベントに関する情報
が入ってる
385デフォルトの名無しさん:2009/06/11(木) 09:07:52
イベント送信者とイベント引数
386デフォルトの名無しさん:2009/06/11(木) 09:34:27
しーぷっしゃー
387デフォルトの名無しさん:2009/06/11(木) 09:44:18
らめぇ
388デフォルトの名無しさん:2009/06/11(木) 11:25:10
あざっす
389デフォルトの名無しさん:2009/06/11(木) 12:44:30
テキスト(たとえばtextBox)と画像(たとえばpictureBox)をまとめて扱う(表示とか移動とか削除とか)にはどうしたらよいですか?
ボタンなら、ボタンの背景(BackgroundImageプロパティ)にjpgファイルを指定できるので、表示するときに一度に表示できます。
textBoxのプロパティを見ても、背景のイメージを設定できないみたいなので…
390デフォルトの名無しさん:2009/06/11(木) 12:46:52
ユーザーコントロール作ってまとめたら?
391デフォルトの名無しさん:2009/06/11(木) 12:53:40
文字列の後ろを透けさせて背景画像を表示するのは無理
TextBoxそのものを自作するかWPFへどうぞ
392デフォルトの名無しさん:2009/06/11(木) 13:48:09
>>390
サンクス。ユーザーコントロールというのはまだ作ったことがないので、勉強がてらやってみます。
>>391
サンクス。やっぱり。
でもまあ今回は、背景が単色なので、なんとかFormベースでやってみます。
TextBoxそのものの自作って、ユーザーコントロールってことですよね?
ところでWPFで、ここみたいにフランクに質問できるとこってないですか?
393デフォルトの名無しさん:2009/06/11(木) 13:57:14
質問があります。
サムネイルベースのファイラーみたいなものを考えています。
サムネイルをウィンドウ内でドラッグ&ドロップして配置を移動したいです。
その場合、ドラッグ&ドロップの処理で必要なことは…。
・コントロール(pictureBoxとか)をドラッグ可能にする。
・フォームでドロップを受け付けるようにする。
かと思います。

フォームでドロップを受け付けるのは、
・AllowDropプロパティをTrueにする。
・Form1_DragEnterのイベントハンドラを作る。

でよいかと思うのですが、
Q1 コントロールをドラッグ可能にするには、なにをすればいいんでしょう?
コントロールを移動すると、コントロール同士が重なることがあります。
そのとき、
Q2 単純に重ねて表示したいときには、イベントハンドラはForm1_DrogEnterだけでいいんですか?
394デフォルトの名無しさん:2009/06/11(木) 14:07:54
Control.DoDragDrop使え
395デフォルトの名無しさん:2009/06/11(木) 14:16:26
>>392
>TextBoxそのものの自作
ユーザーコントロールじゃなくてControlから直接派生するカスタムコントロール
描画も入力も全部自前で書くガチ自作
396デフォルトの名無しさん:2009/06/11(木) 15:12:59
継承ってのは機能の追加しかできないの?

たとえば
myclass1が10個の変数と3個の関数を持ってるとして
それを引き継いだmyclass2は
7個の変数と4個の関数を持ってるとか
できない?
397デフォルトの名無しさん:2009/06/11(木) 15:13:24
myclass2をmyclass1として扱いたい場合どうするんだ
398デフォルトの名無しさん:2009/06/11(木) 15:16:31
object思考の基礎をやり直したほうがいいんじゃないか?
myclass1やmyclass2をちゃんとobjectとして切り出せてないからややこしくなる。
399デフォルトの名無しさん:2009/06/11(木) 15:22:34
>>396
そういう場合はclass1とclass2から共通な部分を取り出して新たな基底クラスを作るのがデフォ


class1 - class2

↓こうする

baseclass - class1
       |_class2


基底クラスのメソッドやフィールドを消せたりら、上位クラスへのキャストができないのだわ
FileStreamをStreamにキャストしたりとかね
400デフォルトの名無しさん:2009/06/11(木) 15:55:18
Office2007が入ってるとTextBoxRendererやVisualStyleRendererのTextBoxが標準のルックスじゃなくなるんだけどどうすればフォームに配置しているTextBoxと同じ用に描けるの?
Application.EnableVisualStyles()をコメントアウトってのはナシで。
この際Win32APIでもなんでもいいから教えて。
401デフォルトの名無しさん:2009/06/11(木) 18:51:26
画像の移動の件です。
「Control.DoDragDrop」でぐぐって、
解説サイト見ながらプログラムを作ってみたんですが、
完全にどつぼにはまってます。
どっかにプロジェクトをアップロードしたら、このスレで添削してもらえますか?
402デフォルトの名無しさん:2009/06/11(木) 18:54:01
ListViewじゃダメなの?
403デフォルトの名無しさん:2009/06/11(木) 19:05:01
ListViewだと、表形式での表示になると思います。
エクスプローラでいうところの表示-縮小版のような形で操作したいのです。
404デフォルトの名無しさん:2009/06/11(木) 22:02:37
C#で他のプロセスのコマンドライン引数を取得したいのですが、
なにか方法ありますか?
たとえばWordのプロセスが開いているファイルのPath+FileNameを取得したい。
405デフォルトの名無しさん:2009/06/11(木) 22:11:41
406デフォルトの名無しさん:2009/06/11(木) 22:13:11
>>405
 ありがとう!
407デフォルトの名無しさん:2009/06/11(木) 22:24:33
WMIでWin32_Process使うのが一番楽な希ガス
408デフォルトの名無しさん:2009/06/12(金) 09:58:49
>>399
それがいい場合もあるが、まずそれというのはおすすめ出来ない。
409デフォルトの名無しさん:2009/06/12(金) 10:15:09
そういうことになるから継承は良くない
410デフォルトの名無しさん:2009/06/12(金) 11:05:24
他のアプリケーションのIMEの状態を取得したいのですが、
なにか良い方法ありませんか?
すでにC#ではないと思いますが。。。
411デフォルトの名無しさん:2009/06/12(金) 11:10:54
よくわかんないけどプロセスにアタッチしてImmなんちゃら関数で取れないかな
412デフォルトの名無しさん:2009/06/12(金) 12:51:20
LAN内の別のマシン(実行マシン)で実行中の実行ファイル(exe)をバージョンアップするときに、開発マシンからコピーして上書きしたいのですが、実行中なのでロックされていてできません。
ロックせずに実行する実行ファイルを作ることってできるんでしょうか?
あるいは、開発マシンからkillするのでもよいのですが、そんなことってできましたっけ?
あまりC#とは関係ないかも…。
413デフォルトの名無しさん:2009/06/12(金) 13:16:10
>>412
できない。Unixだと上書きだけならできるが(再起動はもちろん必要)

で、基本常に実行し、必要なときに落としたりできるのがWindowsのサービスの仕組み。利用しない手はない。
リモートデスクトップで直接終了作業する手はどうだ?
414デフォルトの名無しさん:2009/06/12(金) 13:32:18
なるほど。そこでリモートデスクトップですね。
なるほど〜。
サンクス。
いまも別のマシンが別の階の別の部屋にあって、デバッグしながらいったりきたりで、いい運動になってました。
415デフォルトの名無しさん:2009/06/12(金) 13:35:05
>>405
これって、C++(?)のコードですよね?
C#のコードor dll or exeはないですか?
416デフォルトの名無しさん:2009/06/12(金) 13:37:33
かまわずWMIというかSystem.Management.Instrumentation使えばいい
417デフォルトの名無しさん:2009/06/12(金) 14:05:49
Instrumentationいらないだろ
418417:2009/06/12(金) 14:12:12
using System.Management;

ManagementClass m = new ManagementClass("Win32_Process");

foreach (ManagementObject o in m.GetInstances()) {
object c = o["CommandLine"];
if (c is string) {
Console.WriteLine((string)c);
}
}

こんなもんだろ。何か異議ある?
419デフォルトの名無しさん:2009/06/12(金) 14:34:46
>>415
C#の相互運用機能を使ってC#に書き換えればいいじゃん
>>405にC++でしか実現できない点は1つもないよ

それができいなら、おとなしくWMI使っとけ
420デフォルトの名無しさん:2009/06/12(金) 16:30:48
>>418
ぜんぜん異議なし。
>>419
は〜い。おとなしく使ってます。

それはそれとして、相互運用機能なんてので、C++のコードをC#に書き換えられるんですか?
知らなかった…。
それって簡単?
421デフォルトの名無しさん:2009/06/12(金) 16:41:16
>>405のコード読めるならそんなに難しくはない
そうでないなら諦めろ
422デフォルトの名無しさん:2009/06/12(金) 18:17:03
>>411
アタッチについて少し調べたんですが、
スレッドのアタッチは出来そうだけど、プロセス?(たとえばWordなど)に
アタッチって出来ます?
423デフォルトの名無しさん:2009/06/12(金) 19:16:40
サンプルコードを読んでいたら、以下のような記述が出てきたんですけれど、
コンストラクタを呼んで、 { } で括って最後に;って何なのでしょうか?
コンストラクタの内容に追記しているんでしょうか?
匿名関数とか記法の名前が分かればググれるんですけれど、
何と呼ばれる記述法何でしょうか?

public ActionResult Create(int customerId)
{
 AddressViewData addressViewData = new AddressViewData()
 {
  CustomerId = customerId
 };
 return View(addressViewData);
}
424デフォルトの名無しさん:2009/06/12(金) 19:24:32
勘でググってたらあったー
オブジェクト初期化子ですかね。
425デフォルトの名無しさん:2009/06/12(金) 19:27:47
うん
426デフォルトの名無しさん:2009/06/12(金) 19:33:03
>>423
確かに、これはものすごい気持ちの悪い書き方だな。
ぱっと見ではなぜnew AddressViewData()のところにセミコロンがないのかが分からないし、
ブレースのあとでセミコロンがあるのかが分からない。

オレならまず間違いなく
new AddressViewData() {
...
};
にするだろうな。
427デフォルトの名無しさん:2009/06/12(金) 19:36:58
趣味の自慢か?
428デフォルトの名無しさん:2009/06/12(金) 19:49:07
そういう宗教論争はこっちで頼むわ。
http://pc12.2ch.net/test/read.cgi/tech/1170599322/
429デフォルトの名無しさん:2009/06/12(金) 21:07:07
Form2 frm2 = new Form2
とかやって、新しいフォーム作成したら
Form2.csができちゃって
Form1.csで作ったpublic変数とかが使えなくなっちゃうんだけど
どうやったらForm1.csとForm2.csの変数や文字列を合体できる??
430デフォルトの名無しさん:2009/06/12(金) 21:08:53
引数にして渡せ
431デフォルトの名無しさん:2009/06/12(金) 21:09:20
Form1.cs.Concat("Form2.cs")
432デフォルトの名無しさん:2009/06/12(金) 21:52:51
変数と文字列を同じ次元で語るなよ
433デフォルトの名無しさん:2009/06/12(金) 22:11:28
>>429
> Form2 frm2 = new Form2
> とかやって、新しいフォーム作成したら
> Form2.csができちゃって

面白い。新しいリフレクションだなw
434デフォルトの名無しさん:2009/06/12(金) 22:46:29
>>429
まじめに勉強してこなかったツケがそれだよっ!
435デフォルトの名無しさん:2009/06/12(金) 23:01:33
しばらくRubyやってて久々にOffice用のCOM参照DLL作ることになったんだけど
インスタンスの作り方すら忘れてる俺涙目w
436デフォルトの名無しさん:2009/06/12(金) 23:26:08
日記帳
437デフォルトの名無しさん:2009/06/12(金) 23:47:00
overrideって何のためにあるの?
438デフォルトの名無しさん:2009/06/12(金) 23:50:00
>>437
明示しないとオーバーライドできなくするため。
オーバーライドするつもりなかったのにうっかりやっちゃったとかになると、
結構発見しずらいバグになる。
439デフォルトの名無しさん:2009/06/12(金) 23:53:17
どうしてoverrideという概念があるかというレベルに見えるが
440デフォルトの名無しさん:2009/06/12(金) 23:55:41
継承はバグの温床だからな、安全装置は沢山あった方がいい
441デフォルトの名無しさん:2009/06/13(土) 00:04:42
現在のオブジェクト指向に関する理解から考えれば、overrideは要らない
仮想テーブルは自前でも作れる、ただ面倒臭いから言語の機能としてあれば便利だというレベルになっている。
また言語仕様で作られる仮想テーブルは書き換える事はできないが、そのような操作が必要になったら結局自前で作るわけだが、
それはStrategyパターンと呼ばれるデザインパターンでパターン化されている。
442デフォルトの名無しさん:2009/06/13(土) 00:23:56
>>441
これ
> 現在のオブジェクト指向に関する理解
と、これ
> 仮想テーブル

って、全然領域違う言葉だよね?
何で混ざってるの?
443デフォルトの名無しさん:2009/06/13(土) 01:13:12
使う人間が完璧なら不要
実際Javaなんかで問題が出たから付けるようにしてるんだよ
そのJavaですらoverrideを明示的に付けるようになった
444デフォルトの名無しさん:2009/06/13(土) 02:59:00
多数の変数を一気に同じ値にすることできねーの?

int a;
int b;
int c;
〜〜
int z;

a=2;
b=2;
とかじゃんく
a,b,c,d,e=2;
みたいな感じで。
445デフォルトの名無しさん:2009/06/13(土) 03:04:23
>>444
カンマじゃなくて、イコールでつないでご覧。
446デフォルトの名無しさん:2009/06/13(土) 04:30:26
File.WriteAllText(@"C:\Test.txt", "テスト書込。", sjisEnc);
この、C\Test.textの前にある@マークは何の役割でしょうか?
447デフォルトの名無しさん:2009/06/13(土) 04:31:37
@があると\でエスケープしない
"C:\\Test.txt"とすべきところを@"C:\Test.txt"で済ます
448デフォルトの名無しさん:2009/06/13(土) 04:34:31
>>447
ありがとう
449デフォルトの名無しさん:2009/06/13(土) 10:19:43
>>442
>どうしてoverrideという概念があるかというレベルに見えるが
に対しての見解なので
450デフォルトの名無しさん:2009/06/13(土) 10:43:36
>>441
ん、んーん?
451デフォルトの名無しさん:2009/06/13(土) 10:59:33
overrideがないと、関数名を考えるのが面倒じゃん
MyFunction( )
MyFunction_int(int n)
MyFunction_intint(int n, m)
MyFunction_intstr(int n, string t)
とか、どんどん増える
452デフォルトの名無しさん:2009/06/13(土) 11:00:19
overloadと勘違いして奴がいる模様。
453デフォルトの名無しさん:2009/06/13(土) 12:06:15
overloadと勘違いして奴がいる模様。
454デフォルトの名無しさん:2009/06/13(土) 12:13:18
c#の入門用ページ、
どこもコンソールアプリケーションのことしか書いてないんだけど
WIndowsプログラムのこと書いたページで良いとこない?
455デフォルトの名無しさん:2009/06/13(土) 12:16:23
>>454
言語自体の入門ページだと、そりゃそんなもんだろ。
Windows Forms とか WPF でググりなおした方がいいんでは。

あと、コンソールアプリで入門記事書いてるページでも、
1ページくらいは GUI に記事さいてないか?
456デフォルトの名無しさん:2009/06/13(土) 12:18:02
そりゃ、C#の入門であって、.NETでGUIプログラミングをするための入門では
ないから、仕方ないのでは?
前者はもう充分だから、後者に移りたいというのが質問の趣旨?
それとも、前者も後者もいっしょくたにしたいという話?

いっしょくたはおすすめできないぞ。
457デフォルトの名無しさん:2009/06/13(土) 12:29:13
GUIプログラミング=IDEの使い方だし、めんどくさいだろ?作るの。
458デフォルトの名無しさん:2009/06/13(土) 12:38:46
俺はClass personから継承してtaroをつくるとかどうでもいいことじゃなくて
たとえばだが
Form1のx=200,y=300のドットの色を取得して
画面を塗りつぶすとか
そういうことやりたいんだが

コンソールアプリじゃそういうことわからん。
IDEつくるのめんどくさいのか;;
459デフォルトの名無しさん:2009/06/13(土) 12:42:42
>>458
どうでもいいけど
> Class personから継承してtaroをつくる
これは気持ち悪い
taroっていう種族がいるのか…?
460デフォルトの名無しさん:2009/06/13(土) 12:44:53
>>458
class Taro キモすww

それは置いといて、
そういう話の場合、「入門」じゃなくて「サンプル」でググって、
説明読むんじゃなくてコード読む方がオススメ。
461デフォルトの名無しさん:2009/06/13(土) 12:46:01
別に居ても居なくてもどうでも良いな
3年を継承して山田を作るのに山田って組があるのか?とか
マジでどうでも良い
462デフォルトの名無しさん:2009/06/13(土) 13:11:29
ちょっと力ぬけよ
463デフォルトの名無しさん:2009/06/13(土) 15:40:08
メモリの解放のタイミングについて教えてください。

フォーム上にDataGridViewとComboBox(DropDownListとして利用)、
Buttonがあるとします。
ButtonをクリックするとComboBoxのSelectedIndexによってDataGridViewの
内容が変わります。DataGridViewはReadonlyです。

現在、初期化としてフォームのコンストラクタのInitializeComponent()の後で、
それぞれDataTableを取得して、ComboBoxとDataGridViewにバインドしています。

DataGridViewはReadonlyなので、
using(DataTable dt = …)
{
  // 処理
  dataGridView1.DataSource = dt;
}
と閉じてしまっても問題ありませんが、ComboBoxの方はusingで囲むと値が
表示されません。
その場合、comboBox1.DataSourceにセットしたDataTableはどこでDisposeすれば
良いのでしょうか?
464デフォルトの名無しさん:2009/06/13(土) 16:01:14
Disposeはメモリの解放じゃない
DataSourceとして使用してる間にDisposeしちゃまずいだろDisposeの意味的に考えて
そのDataTableを使わなくなるタイミングだから、大体フォームが閉じるときでいいんじゃね

実用上はDataTableならDisposeする必要もないけどな
465デフォルトの名無しさん:2009/06/13(土) 16:33:55
>>464
ぐぐって下記のページを見つけて読んできました。
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=34497&forum=7

大体理解できました(と思います)。
リンク先もさらに読んできます。
466デフォルトの名無しさん:2009/06/13(土) 23:54:15
内容が等しいことを示すにはどうしたらいいでしょうか?

class test{
int a;
int b;
}

test x1=new test();
test x2=new test();

x1.a=10;
x2.a=10;
x1.b=20;
x2.b=20;

if(x1==x2)
//等しいと表示
else
//等しくないと表示

クラスは参照型なので等しくないって表示されちゃうことはわかるんだけど
クラスの内容自体を比較するのはどうやんの?
467デフォルトの名無しさん:2009/06/13(土) 23:55:46
IComparer
468デフォルトの名無しさん:2009/06/14(日) 01:16:18
>>466
==,!=オーバーライド
469デフォルトの名無しさん:2009/06/14(日) 01:19:37
>>466
x1.a == x2.a && x1.b == x2.b
というかそれ、public ないから普通にコンパイルエラーにならんか?

そのクラスを値チックにしか使わないなら Equals とか GetHashCode とか
オーバーライドして operator ==/!= 定義する。IEquatable は・・・この場合は
まぁいいか
470デフォルトの名無しさん:2009/06/14(日) 03:19:03
GetHashCodeはオーバーライドしとけ。
471デフォルトの名無しさん:2009/06/14(日) 03:52:16
GetHashCodeってどんなときに呼ばれんの?
472デフォルトの名無しさん:2009/06/14(日) 04:48:38
Hashtable
Dictionary
473デフォルトの名無しさん:2009/06/14(日) 04:48:54
Dictionaryにキーとして放り込む時とか
474デフォルトの名無しさん:2009/06/14(日) 13:10:04
列が100、行数が20というデータテーブルを作ってDataGridViewで表示してるんですが、
ボタンをクリックするとテーブルに対してColumns.Addで列数を増やすように作ったんだけど、
なぜか1列増やすごとに1秒ぐらいかかる。
ぐぐったら「Debugは遅い」って書いてあるのを見つけたんでReleaseに変えてみたけど、
それでも0.7秒ぐらいかかってるみたい。

ボタンをクリックしてから画面が更新されるまで、ちょっとタイムラグがあるのが気になるんだけど、
もっと高速に列数を増やす方法はないですか?
マシンはPen4/2.8GHzにメモリ2GBで、極端にマシンが遅いわけでもないと思うんですが。
OSはXP SP3に無料のC#2008 NET3.5です。
475デフォルトの名無しさん:2009/06/14(日) 13:11:11
あ、データテーブルの中身はintです。
476デフォルトの名無しさん:2009/06/14(日) 13:20:18
追加に時間がかかってるのか、再描画に時間がかかってるのか、
どっち?
477デフォルトの名無しさん:2009/06/14(日) 13:59:15
どっちかわかりません。
追加すると自動的に再描画されてしまうと思うのですが、
どうやったら別々に調べることが出来ますか?
478デフォルトの名無しさん:2009/06/14(日) 14:04:08
Stopwatchクラスで時間計ってみ
479デフォルトの名無しさん:2009/06/14(日) 16:50:00
画像を縦30横30に切り取りたいのですがどうすればいいのでしょうか?><
480デフォルトの名無しさん:2009/06/14(日) 16:54:05
>>479
「C# 画像 切り取り」で検索すればすぐに出てくるんだけど
481デフォルトの名無しさん:2009/06/14(日) 16:55:14
縦30、横30でコピーすればOK
482デフォルトの名無しさん:2009/06/14(日) 16:57:06
>>48 ありがとうです0
483デフォルトの名無しさん:2009/06/14(日) 18:24:14
パネルに編集画面を描画(Direct3D)していて、
カメラ位置を移動させるためのスクロールバーを配置したいんだけど、
1発でばしっと縦横スロールバーがつけられるコントロールってありますか?

やっぱり
親パネルの右に垂直スクロールバー配置、アンカーを上下右に設定、
親パネルの下に水平スクロールバー配置、アンカーを左右下に設定、
残った領域にスクロール操作の対象になるパネルを配置、アンカーで上下左右を設定 
みたいにしないとダメ?
484デフォルトの名無しさん:2009/06/14(日) 21:04:31
パネルってそもそも ScrollableControl 継承してなかったか?
485デフォルトの名無しさん:2009/06/14(日) 21:45:46
そりゃ中に大きなコントロール入れたらスクロールバー出るけど483の用途には全く適さない
486デフォルトの名無しさん:2009/06/15(月) 05:17:28
普通、インスタンス生成するときは

Class名 名前=new Class名();
で生成できるのに

Graphicsクラスのインスタンス生成する際
Graphics gr=new Graphics();
じゃ生成できないのはなんで?
Graphics gr=CreateGraphics();
なら生成できるみたい
487デフォルトの名無しさん:2009/06/15(月) 06:30:50
newさせたくないから。幼稚園児に油性マジック渡すようなもの。
488デフォルトの名無しさん:2009/06/15(月) 06:50:13
幼稚園児に油性マジック渡したら
キャップし忘れてすぐだめにしちゃうよね
489デフォルトの名無しさん:2009/06/15(月) 08:19:14
CreateGraphics()はthis.CreateGraphics()だから。
490デフォルトの名無しさん:2009/06/15(月) 08:40:29
つまり、大人の事情でそう決まってるからとしか言いようがない。
491デフォルトの名無しさん:2009/06/15(月) 08:54:31
大人の事情っていうと、「仕方なくそうなってる」感じがするけど、
new Graphics() できないのは仕方なくじゃなくて、その方がいい設計だからだろ。
492デフォルトの名無しさん:2009/06/15(月) 09:21:22
でもDispose()しないといけないのは何故
493デフォルトの名無しさん:2009/06/15(月) 09:55:13
GDIの作法を知らない世代か。
494デフォルトの名無しさん:2009/06/15(月) 12:01:20
newとDisposeは対になるものじゃないしね
495デフォルトの名無しさん:2009/06/15(月) 12:33:09
Dispose()はC++からのクセだろ
別にしなくてもいいし
496デフォルトの名無しさん:2009/06/15(月) 12:51:44
やんなくてもGCが回収してくれるけど、その間リソースを持ち続ける事になるからねぇ

ファイル開こうとしたらいつまでもロックされてる とかよくある。
Closeすればいい?それならDisposeしちゃえよ。
497デフォルトの名無しさん:2009/06/15(月) 12:58:16
>>495
ドキュメントにDispose()しろってんだからしろよ<
498デフォルトの名無しさん:2009/06/15(月) 13:16:50
> しろよ<
よろしくにみえた
499デフォルトの名無しさん:2009/06/15(月) 14:16:34
private void Form1_Load(object sender, EventArgs e)
()内のobject sender, EventArgs eってなんですか?
500デフォルトの名無しさん:2009/06/15(月) 14:20:21
イベントの発生元とイベントのパラメータ
501デフォルトの名無しさん:2009/06/15(月) 14:22:47
Loadイベントに限っていえば意味はない
イベントハンドラの引数の形式を統一するためのダミー
502デフォルトの名無しさん:2009/06/15(月) 14:32:36
Windowsアプリケーションを製作しております。
処理に必要なデータ(CSVファイル)を、利用者側から見られないようにしたいのですが
なにか策はありますでしょうか?ご教授下さい。
503デフォルトの名無しさん:2009/06/15(月) 14:37:10
System.Security.Cryptographyでも使って暗号化すれば
気休めだけどね
504デフォルトの名無しさん:2009/06/15(月) 14:38:30
>>502
PC内に保存するなら簡単に見られるだろ。
見にくくしたいなら暗号化かな。
簡単な暗号でいいならxor暗号で。
505デフォルトの名無しさん:2009/06/15(月) 14:45:17
>>502
web上に配置してsslとか
506デフォルトの名無しさん:2009/06/15(月) 14:47:43
>>502
エロゲのセーブデータか?
507デフォルトの名無しさん:2009/06/15(月) 14:50:33
食いつき良いなお前ら。
508502:2009/06/15(月) 14:52:46
>>503
ありがとうございます、調べてみます。

>>504
ありがとうございます。XOR暗号、調べてみます。

>>505
Web上への配置ですか、検討してみます。

>>502
いえ、そういうのではないのですが。
そのファイルを見られてしまうとプログラム内でなにをやっているかがわかってしまうのです。
509デフォルトの名無しさん:2009/06/15(月) 15:05:58
ファイルなんか見なくても何してるか丸見えだけどな
510デフォルトの名無しさん:2009/06/15(月) 15:21:35
ゲームとかでネタばれになるようなのは隠したいわな
511502:2009/06/15(月) 15:25:55
Security.Cryptographyでやってみようと思います。
本当にありがとうございました。感謝します。
512デフォルトの名無しさん:2009/06/15(月) 15:27:12
カジュアルハックを防ぐだけならそれでいいんじゃね。
513デフォルトの名無しさん:2009/06/15(月) 15:54:28
2次元のHashtableはつくれますか?
hash["abc"]["def"]のような。
514デフォルトの名無しさん:2009/06/15(月) 16:05:19
Hashtable<Hashtable<T>>
515デフォルトの名無しさん:2009/06/15(月) 16:06:45
>>514
ただし2次元ではない

もしくはそういう感じのを作ればおk
516デフォルトの名無しさん:2009/06/15(月) 16:16:41
>>513
hasu["abcdef"]という値をキーにすれば良い
517デフォルトの名無しさん:2009/06/15(月) 16:17:56
商用なら間違いなく仕様バグで訴えられるな。
518デフォルトの名無しさん:2009/06/15(月) 16:18:10
>>516
そうですね、ありがとうございました。
519デフォルトの名無しさん:2009/06/15(月) 16:18:49
>>518
hash["a"]["bcdef"]との違いがわからなくね?
520デフォルトの名無しさん:2009/06/15(月) 16:21:27
実際は

abc = 重複のない3桁の数字
def = 重複のある1〜2桁の数字

なので、>>513さんの意見で大丈夫かなと思ったのですが。
521デフォルトの名無しさん:2009/06/15(月) 16:22:45
すいません、>>513ではなく>>516でした
522デフォルトの名無しさん:2009/06/15(月) 16:36:00
>>520
じゃあそれでいいんでね?
523デフォルトの名無しさん:2009/06/15(月) 16:36:05
>>519
別に汎用でなくてもかまわない。
キーが取り得る値として辻褄が合うように適宜仕様変更すれば良いんだよ。
524デフォルトの名無しさん:2009/06/15(月) 16:38:21
>>523
適宜仕様変更すると汎用になるんでないかい
525デフォルトの名無しさん:2009/06/15(月) 16:38:51
てか、自分でハッシュ関数作ればいいじゃん
526デフォルトの名無しさん:2009/06/15(月) 16:42:36
目的に最適化されたハッシュか、汎用のハッシュか、どっちが高速かと言えば前者だな
527デフォルトの名無しさん:2009/06/15(月) 16:47:04
hash[new {Fst = "abc", Snd = "def"}]
ってできる?
528デフォルトの名無しさん:2009/06/15(月) 16:49:45
>>527
試した?
529デフォルトの名無しさん:2009/06/15(月) 16:50:14
>>528
試してない
だって俺C#の文法知らないもん
530デフォルトの名無しさん:2009/06/15(月) 17:03:22
はっはっは こやつめ
531デフォルトの名無しさん:2009/06/15(月) 17:13:00
new Dictionary {{"あ","A"},{"い","I"}}
532デフォルトの名無しさん:2009/06/15(月) 17:15:30
<string,string>追加
533デフォルトの名無しさん:2009/06/15(月) 17:22:05
うわぁ的なことをした人がいる
http://d.hatena.ne.jp/NyaRuRu/20071211/p3
var dict = Dictionary
(
    x => "foo",
    y => "bar",
    Hauhau => "gaogao"
);
C#3.5以降のはず
534デフォルトの名無しさん:2009/06/15(月) 17:27:09
わざわざそんなキモいことしなくても531で正解なんだが
535デフォルトの名無しさん:2009/06/15(月) 17:28:57
一番軽いのはどーれだ
536デフォルトの名無しさん:2009/06/15(月) 17:41:11
>>534
実現方法の一つで正解ってわけじゃないけど
どうでもいいわ
537デフォルトの名無しさん:2009/06/15(月) 18:00:02
言語に組み込むのは、手段を統一させるため
昔C#のコンセプトについてそんなコメントがあった気がする
538デフォルトの名無しさん:2009/06/15(月) 19:48:35
VC#フォームデザイナでメニューを作ったとき、キャプションに
「上書き保存)(&S)」とか入力してからダブルクリックして
メニューの Click イベントを書こうとすると

private void 上書き保存SToolStripMenuItem_Click(object sender, EventArgs e)

ってなるのが気持ち悪くてしょうがないんだけど、
みんなちゃんと飲み込めてるの?
539デフォルトの名無しさん:2009/06/15(月) 20:09:18
お好きなようにどうぞ
・実害はないので気にしない
・リネームする
・英語キャプションでハンドラを生成して、後から日本語に変更
・先にハンドラを用意する
540デフォルトの名無しさん:2009/06/15(月) 20:35:12
>>513
public struct ComplexKey<X, Y> : IEquatable<ComplexKey<X, Y>>

を作ってみるのは俺だけか?
541デフォルトの名無しさん:2009/06/15(月) 21:28:02
is演算子、 as演算子って多用すべきでない?
542デフォルトの名無しさん:2009/06/15(月) 21:50:50
キャストと比べても、パフォーマンス的には殆ど同じだから安心して使うといい。

キャストに失敗する可能性がある場合には必ずas,isを使うべき
InvalidCastExceptionをtry-catchするような方法だと桁違いに遅い。
543デフォルトの名無しさん:2009/06/15(月) 22:32:18
if (hoge is Foo)
{
Foo foo = (Foo)hoge;
// ...
}
個人的には、上よりは下の方がいいと思うとか、細かいことを挙げたらきりがないけどな。
Foo foo = hoge as Foo;
if (foo != null)
{
// ...
}
544デフォルトの名無しさん:2009/06/15(月) 22:49:13
>>541
as演算子のほうがキャストより高速になる場合が多いらしい
545デフォルトの名無しさん:2009/06/15(月) 22:55:46
まあそりゃチェックが2回になるからね。
でも、そんな差を気にしなければならないのはよほどタイトな処理の時くらいだし、
普通に書いた時変数のスコープが広がるというデメリットもあるから、
別にどっちでもいいレベルだと思うけどね。

なぜかやたらとここにこだわるやつがいて不思議。
546デフォルトの名無しさん:2009/06/15(月) 22:55:48
上は無駄な事をしてる感じなのが気に入らない
下は変数のスコープが気に入らない

scalaのswitchが使えればいいんだけどなぁ
547デフォルトの名無しさん:2009/06/15(月) 22:56:34
質問です。
次のような配列があったとして、HighPriceの最大値を求めたいのですが、簡潔に書くにはどう書けばいいのでしょうか?

hoge[0].HighPrice = 1000;
hoge[1].HighPrice = 780;
.(略)
hoge[99].HighPrice = 300;


環境はVisual C# 2008です。よろしくお願いします。

自分で考えたのは、
「int maxにまず初期値1000を設定、あとはforループでまわしてmaxをこえていれば新たにそれをmaxに設定する」
というものですが、もっとスッキリさせられないものかと思ってます。

ちなみに、hoge[0].HighPriceは本日(0日前)の高値、hoge[1].HighPriceは1日前の高値・・・
といった設定。100日間の高値の中で最大値を求めたいんです。
548デフォルトの名無しさん:2009/06/15(月) 23:02:07
>>547
LINQ使って
int max = hoge.Max();
549デフォルトの名無しさん:2009/06/15(月) 23:11:18
HighPrice メンバみたいだから
int max = hoge.Select((x) => x.HighPrice).Max();
だな
550549:2009/06/15(月) 23:15:05
あ、Max にはセレクタ指定できるのかごめん

int max = hoge.Max((x) => x.HighPrice);

かな
551デフォルトの名無しさん:2009/06/15(月) 23:15:35
hoge.Max(x => x.HighPrice)
みたいな?
552デフォルトの名無しさん:2009/06/15(月) 23:16:33
あ、カッコいったか、普段あまり使わないから分からなくなるよ。
553デフォルトの名無しさん:2009/06/15(月) 23:21:10
なくてもいいと思うよ。俺は見易さと統一性でいつもつけてる
だけ。けど好みの問題だろうな。
554547:2009/06/15(月) 23:27:57
みなさんレスありがとうございます。
>>550さんので無事できました。

LINQだとだいぶ楽に書けていいですね。
手元のC#本は古いせいかLINQについては載ってないので新版を買ってくるとします。
ありがとうございました!
555デフォルトの名無しさん:2009/06/16(火) 01:24:51
c#で
class Test{
}
という何もないTestクラスを作って
Test test=new Test();
ってやって、

Label1.Text=test.ToString();
ってやったら宣言してないはずのTostring()が実行されるんだけど
クラスって宣言しなくても勝手にObject型を継承するようになってんの?
556デフォルトの名無しさん:2009/06/16(火) 01:25:46
557デフォルトの名無しさん:2009/06/16(火) 01:42:47
>>556
くそ真面目に継承階層にずらずら並べてるのがちょっと微笑ましい
558デフォルトの名無しさん:2009/06/16(火) 01:49:59
>>557
スクリプト切っててわからなかった
これはひどい
559デフォルトの名無しさん:2009/06/16(火) 01:50:21
2,768個・・なぜ並べたww
560デフォルトの名無しさん:2009/06/16(火) 01:50:58
>>555
クラスどころかC#ではありとあらゆる型がobject継承してる。
561542:2009/06/16(火) 08:28:40
安心して使うことにする。
みんなありがとう
562デフォルトの名無しさん:2009/06/16(火) 13:07:53
>>556
クソワロタ
563デフォルトの名無しさん:2009/06/16(火) 15:27:42
なんでわざわざ
Program.csとForm.csに分割してるんだ

Program.csは
Main関数の中に
Application.Run(new Form1)
みたいな産業あるだけだし・・・
意味不明
564デフォルトの名無しさん:2009/06/16(火) 15:30:27
意味などないんだよおおおおおおおおおおおお!!!
うふっ
565デフォルトの名無しさん:2009/06/16(火) 15:31:25
なるべくpublicなクラスは分割した方が管理しやすいから
フォームみたいなのだとなおさらね

関係ないけどそれを追求した結果、Javaなんかは1ファイル1publicクラスみたいな潔癖な事になっている
566デフォルトの名無しさん:2009/06/16(火) 15:33:29
意味不明ってまじかよ。冗談はよせ。
567デフォルトの名無しさん:2009/06/16(火) 16:47:11
foreach(item in arraylist) {
 if (削除条件(item)) {
  arraylist.Remove(item);
 }
}

てやっても大丈夫? ちゃんとインデックス使って

for (int i=arraylist.Count; i>=0; --i) {
 if (削除条件(arraylist[i])) {
  arraylist.RemoveAt(i);
 }
}
ってやらなきゃだめ?
568デフォルトの名無しさん:2009/06/16(火) 16:48:31
あ、arraylist の中身は重複しません
569デフォルトの名無しさん:2009/06/16(火) 16:53:09
foreach中はコレクションを変更できない
570デフォルトの名無しさん:2009/06/16(火) 17:08:36
RemoveAllで
571デフォルトの名無しさん:2009/06/16(火) 18:53:50
1個なら消せるよね
572デフォルトの名無しさん:2009/06/16(火) 19:59:54
CheckedListBoxって、項目を選んでからチェックボックスをクリックしないと チェックできませんよね。
どの項目を選んでいるか関係なく、クリックしたら即チェックできるようにするにはどうすればいいですか?
573デフォルトの名無しさん:2009/06/16(火) 20:05:32
CheckOnClick
574デフォルトの名無しさん:2009/06/16(火) 20:07:00
相談室の次スレ立てれんかったわ
575デフォルトの名無しさん:2009/06/16(火) 20:10:16
立ててやるよ
576デフォルトの名無しさん:2009/06/16(火) 20:11:04
>>567
RemoveAll が普通だろうけど、ArrayList ってことは 1.0 縛りとか
そういうの?
577デフォルトの名無しさん:2009/06/16(火) 20:13:27
立てたよ
578デフォルトの名無しさん:2009/06/16(火) 20:14:25
>>577
GJ
579デフォルトの名無しさん:2009/06/16(火) 20:35:24
Visual C# 2008 Express Edition入れたんですけど、
ライセンス登録しないとどうなるんでしょうか?
あんまパスワードとか作りたくないので、
できれば登録したくないです。

あと、どんな感じで勉強してったらいいでしょうか?
javaを2年くらいやってます。あとC言語をちょびっとやってました。

くだらない質問と漠然とした質問ですみませんが
教えてもらえたらありがたいです。
お願いします。
580デフォルトの名無しさん:2009/06/16(火) 20:42:13
30日で使えなくなる
それだけ

Javaやってたなら簡単だと思うよ
ここで聞くことも無いかもしれない
581デフォルトの名無しさん:2009/06/16(火) 20:43:06
一ヶ月経ったら登録しないと起動しなくなる
javaできるなら勉強しなくてもいきなり使えるはず
使いながら随時細かい違いを調べていけば十分
それができないならjavaもできてないってことだ
582デフォルトの名無しさん:2009/06/16(火) 20:45:57
...これだと項目を選択した瞬間にチェックがつけられてしまいますが、そうではなくて
チェックボックスをクリックした瞬間とはならないでしょうか。

ちょうどチェックボックス付きの ListViewのような動作です。
それならListViewをつかえといわれそうですが、リサイズした場合に一番右側のヘッダの
右端が常にコントロール右端に一致するようにするやり方がわからないのです。
583デフォルトの名無しさん:2009/06/16(火) 20:47:03
>>579
登録しなくても問題無くずっと使える
前は登録するとアイコンセットもらえるキャンペーンとかやってたけど
リファレンスもユーザーサイトも充実してるしJavaとVB足したような言語だから
たぶん難しくないよ
584デフォルトの名無しさん:2009/06/16(火) 20:50:24
堂々と嘘こいてんじゃねええええええええええええええええええええええ
585デフォルトの名無しさん:2009/06/16(火) 20:52:49
嘘を付く時は堂々とするとバレにくいよおおおおお
586デフォルトの名無しさん:2009/06/16(火) 20:53:16
DVDイメージ版は登録いらないんだっけ
587デフォルトの名無しさん:2009/06/16(火) 20:53:40
登録はWebインストール版の話
588デフォルトの名無しさん:2009/06/16(火) 20:54:59
http://www.microsoft.com/japan/msdn/vstudio/2008/product/express/register.aspx

Visual Studio 2008 Express Edition を Web インストールにて入手いただいたお客様は、ご使用に当たってライセンス認証が必要となります。
ライセンス認証キー発行の過程において Live ID によるユーザー登録をお願いしております。
無料のライセンス認証キーにより、Visual Studio 2008 Express Edition を、30 日間の期限を過ぎても使用できるようになります。
589デフォルトの名無しさん:2009/06/16(火) 20:57:44
あほばっかりや
590デフォルトの名無しさん:2009/06/16(火) 21:19:22
そもそもパスワードなんてあったか?
591デフォルトの名無しさん:2009/06/16(火) 21:22:14
製品登録する用LiveID取得するためにパスワードが必要
LiveID持ってれば製品登録してメール送られてくるだけ
592デフォルトの名無しさん:2009/06/16(火) 21:26:19
俺は登録した覚えないからなんのこっちゃと思いながらレス読んでたけど、
Webインストールだけなのね。DVDから入れたわ。
593デフォルトの名無しさん:2009/06/16(火) 22:07:46
>>582
ならListViewでSizeChangedでColumnHeaderのWidthいじればいいんじゃね
ダブルクリックとかスペースキーでチェック状態変更するときはどうすんのかね
594デフォルトの名無しさん:2009/06/16(火) 22:22:15
LiveIDくらいは作っといてもいいと思うぞ。
既に持ってる人も多いだろうし。
595デフォルトの名無しさん:2009/06/16(火) 22:37:01
>>582
マウスイベントでマウスポインタの位置を取得して
ClickかSelectedIndexChangedあたりで選択されたインデックスの
チェックボックスの領域がクリックされたらItemCheckみたいな方法しか
ないんじゃないかね
596デフォルトの名無しさん:2009/06/16(火) 22:45:33
static classって使い終わってもGCにコレクトされないの?
597デフォルトの名無しさん:2009/06/16(火) 22:49:39
>>596
使い終わるってどういう状態のこと?
598デフォルトの名無しさん:2009/06/16(火) 22:51:47
c#ってさ、スタドアロン(.Net Framework インストールしてなくても動くって意味で)な exe つくれる?
なんていうか、DLL全部EXEに組み込むみたいな。
599デフォルトの名無しさん:2009/06/16(火) 23:01:36
MONOはネイティブコンパイルできたと思うよ

iPhoneでC#製プログラムを動かすだかって話の時に読んだ
600デフォルトの名無しさん:2009/06/16(火) 23:13:20
>>599
aot オプション付けるだけみたい。
601デフォルトの名無しさん:2009/06/16(火) 23:19:14
なんだ。じゃあ駄目だな
602デフォルトの名無しさん:2009/06/17(水) 00:23:54
数字を入力してその数字に見合った数だけの文字を表示するためのプログラムを組んでいるのですが
二重ループがうまくいっていないらしく希望の結果になりません、修正点を教えてください

希望のプログラム
5(ここは任意の数字を入力)
*
**
***
****
*****

このように任意の数字を入力しそれまでの間1づつ増加した*を並べたいです

組んだプログラム
#include<stdio.h>
int man()
{
int a,b,c;
scanf("%d",&b);
a=0;
c=0;
while(a<b)
{
while(c<=a)
{
printf("*")
c++;
}
a++;
printf("\n");
}
}
603デフォルトの名無しさん:2009/06/17(水) 00:24:44
上記のプログラムで走らせると
*
*
*
*
*

となってしまいます、
*
**
***
****
*****
とするにはどこを修正すればいいのでしょうか、よろしくお願いします
604デフォルトの名無しさん:2009/06/17(水) 00:29:20
スレタイも読めないのか
605デフォルトの名無しさん:2009/06/17(水) 00:31:51
誤爆しました
606デフォルトの名無しさん:2009/06/17(水) 00:34:27
>>604
ただ叩くだけじゃなくてちゃんと誘導してやろうぜ、一応初心者スレなんだから
自分は他人に教えられる、えらい存在だなんて思ってるなら出て行ってくれ

>>603
それは違う言語だね、こっちのスレで質問したほうがいいと思います

http://pc12.2ch.net/test/read.cgi/tech/1244942050/
607デフォルトの名無しさん:2009/06/17(水) 04:45:27
ちなみに、C#としての解決法なら、
その数値にToString()をかけた上でその文字列の長さを見るところだろうな。
C++なら桁数を求める数値計算をさせるだろう。
608デフォルトの名無しさん:2009/06/17(水) 07:41:51
えっ
609デフォルトの名無しさん:2009/06/17(水) 08:11:58
>>607
c=0の位置間違えてる限り、何やってもw
610デフォルトの名無しさん:2009/06/17(水) 08:13:11
変数を初期化する場所が違うだけ
611デフォルトの名無しさん:2009/06/17(水) 08:27:14
for(int a=1; a<=5; a++)
  Console.WriteLine(new String('*', a));
612474:2009/06/17(水) 17:30:18
>>474です。遅い原因がわかりました。
昔 ColumnHeaderHeightSizeMode = AutoSize
今 ColumnHeaderHeightSizeMode = DisableResizing
プロパティ1つ変えたら10倍速くなりました。
613デフォルトの名無しさん:2009/06/17(水) 19:48:37
へぇーすごいじゃん。
614デフォルトの名無しさん:2009/06/17(水) 19:51:19
特許でガッポガッポ
615デフォルトの名無しさん:2009/06/17(水) 22:59:12
Tagプロパティって無い方がよくね?
616デフォルトの名無しさん:2009/06/17(水) 23:02:36
== と != をオーバーライドしてたんですが、
やっぱりオーバーライドをやめることにしました。
ついては、オーバーライド
してた演算子を全部検索して、
Equals に書き換える必要が生じたんですけど、
どこでオーバーライドされた演算子が使われているか検索する
方法はないでしょうか?


617デフォルトの名無しさん:2009/06/17(水) 23:04:39
消してコンパイルしてみたら
618デフォルトの名無しさん:2009/06/17(水) 23:07:08
参照型だと消してもコンパイル通るのか
右クリックで「すべての参照の検索」は?
619デフォルトの名無しさん:2009/06/17(水) 23:11:36
プログラミング自体5ヶ月の経験の初心者です
javaを2ヶ月勉強した後に、仕事で3ヶ月前からC#触っています
いろいろな方から聞いたのですが、参照型の値の比較をするときはjavaの時はequalsを使うのは当たり前でしたが、
C#だと==で問題ないって方が多いのですが、これはどういうことなのでしょうか?
C#はそもそも参照型の概念がjavaとは違うのですか?
==を使うとき、C#だと値自体の比較がされるということなのでしょうか?
620616:2009/06/17(水) 23:15:25
>>617
すべての参照の検索だと拾ってくれないんですよ。
困った。
621デフォルトの名無しさん:2009/06/17(水) 23:19:09
>>619
== をオーバーロードして値比較にすること「も」できる String とかだな
作法として == をオーバーロードする場合は Equals もオーバーライドして == と同等の動きをするようにする
必ず参照を比較したい場合は Object.ReferenceEquals を使う
622デフォルトの名無しさん:2009/06/17(水) 23:23:06
>>619
java知らんけど参照型の比較は言い換えれば参照情報の比較なんだから
==で問題無いかどうかって問題か?
例えばあaとbに1を入れて比較しても参照位置が違えばfalseになるってだけ
623デフォルトの名無しさん:2009/06/17(水) 23:31:50
>>616
オーバライドしたままで例外を投げるようにして実行する
例外が出なくなったらオーバライドやめる
624デフォルトの名無しさん:2009/06/17(水) 23:34:59
>>619
JavaもC#も==とequals/Equalsの根底は同じ:
==は参照が同じか比較する。equals/Equalsも基本そうだが、オーバーライドして値の等価比較にもできる。

ところが、C#の場合、==演算子を直接、多重定義できる。
特にStringなんかでは型安全ということで、==演算子が推奨されている。
http://sonic64.com/2006-02-02.html

しかし、そういう一部を除いてC#でも基本的にはEquals推奨だよ。
http://msdn.microsoft.com/ja-jp/library/bsc2ak47.aspx
http://msdn.microsoft.com/ja-jp/library/ms173147.aspx
625デフォルトの名無しさん:2009/06/17(水) 23:35:28
>>616
これがドンぴしゃだと思うけどどう?
http://msdn.microsoft.com/ja-jp/library/system.obsoleteattribute.aspx
コンパイル時警告になるはず。
626デフォルトの名無しさん:2009/06/17(水) 23:38:16
>>619
Stringのように値を変更できない型に限り、参照型でも==をオーバーロードしてよい
627デフォルトの名無しさん:2009/06/17(水) 23:40:01
演算子がオーバーロードできない言語は糞。
628デフォルトの名無しさん:2009/06/17(水) 23:44:13
immutableなオブジェクトは、別々に代入されても、最適化によって
実体は同じになっている可能性が高い。Cの文字列リテラルがそもそも
そういう傾向だったし。
s1 = "abc"; s2 = "abc"; と書いたときに、s1 == s2が
真かどうか分からないんじゃ使い物にならないので、内容が同じなら
同一オブジェクトかどうかは問わず真にしよう、という趣旨だと思う。
ただし、単に思いついただけなので、根拠はない。
629デフォルトの名無しさん:2009/06/17(水) 23:45:54
結構前にも同じような話したことあるようなないような
630デフォルトの名無しさん:2009/06/17(水) 23:46:41
あってるよ
それを保証するために>>626のガイドラインがある
631デフォルトの名無しさん:2009/06/18(木) 00:05:37
>>628
> immutableなオブジェクトは、別々に代入されても、最適化によって
> 実体は同じになっている可能性が高い。
ここに関してはimmutableなオブジェクトでなくリテラルの話だよね
動的に作られたimmutableなオブジェクトがそうなる可能性は高くないと思うよ
そんな最適化はむしろ効率が悪そうだ
632デフォルトの名無しさん:2009/06/18(木) 03:00:46
まさかのflyweightパターン全否定
関係ないけどさ
633デフォルトの名無しさん:2009/06/18(木) 04:01:30
関係なさ過ぎだろ
634616:2009/06/18(木) 08:26:40
>>625
ビンゴ!Obsolateにこんな使い方があったとは。
勉強になりました。

ありがとう♥
635デフォルトの名無しさん:2009/06/18(木) 09:36:53
>>623
ifとかcaseで滅多に実行されないレアケースがあるから
いつまでも削除できない
636デフォルトの名無しさん:2009/06/18(木) 12:09:44
質問いいですか?
ウェブ上で画像をバイナリとしてデータベース上にアップして
そのバイナリファイル(JPG画像)を
response.binaryWrite(file.content)って呼び出してウェブ上(displayJPEG.aspx)に画像だけを
表示させたいんですけど、
どうやっても真っ白なバックグラウンドに、そのaspxファイルのURLしか表示されません。
しかもそのURLがJPG画像?みたいになってて、テキストじゃないんです。
何が何だか良く分からなくてお手上げ状態なんでアドバイスください・・・
画像のアップロードの仕方に問題があるのでしょうか?
637デフォルトの名無しさん:2009/06/18(木) 13:02:30
file.contentはバイト配列?
638デフォルトの名無しさん:2009/06/18(木) 13:06:35
いったんファイルに出してみて、それを直接URLで読んだらどうなる?
ヘッダとかだいじょうぶ?
639デフォルトの名無しさん:2009/06/18(木) 13:13:53
>>637
バイト配列です。
>>638
いったんファイルに出して直接URLで読むっていうのはどういう意味でしょうか・・・?
初心者すぎてすみません・・・


コードはこんな感じです。

public partial class displayThumb : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

projectFilesTableAdapter filesTableAdapter =
new projectFilesTableAdapter();

ProjectDataSet.projectFilesDataTable files =
filesTableAdapter.GetProjectWithContentByFileID(37);

ProjectDataSet.projectFilesRow file = files[0];

Response.ContentType = "image/jpg";

Response.Write(file.projectContent);
}
}


640デフォルトの名無しさん:2009/06/18(木) 13:17:59
Response.Write?
641デフォルトの名無しさん:2009/06/18(木) 13:21:53
>>640
すみません、binaryWriteです。
でもbinaryWriteでも表示されませんでした・・・
これってもしかしてデータが壊れてるとかそういうのが原因でしょうか?
projectContentはデータタイプをbinary(7000)って設定したんですけど
2kb以上の画像をアップして表示させようとしてます。
これが原因だったりしますかね・・・
642デフォルトの名無しさん:2009/06/18(木) 13:26:44
>>641
すみません訂正です。2kbー>20kb以上
なんかもうテンパっててすみません
643デフォルトの名無しさん:2009/06/18(木) 13:44:07
すいません自己解決しました・・・
644デフォルトの名無しさん:2009/06/18(木) 13:44:41
なんで7KB上限のに20KB入れようとするんだ
645デフォルトの名無しさん:2009/06/18(木) 13:51:03
先生・・・デストラクタが恋しいです・・・
struct使うと簡単にDisposeの後処理できるのかなぁ
646デフォルトの名無しさん:2009/06/18(木) 13:51:56
C# 2008 express edition をインストールしたのですが
ライセンス登録が出来なくて困っています
Windows Live ID を作成し、登録画面にサインインできるのですが
サインインした先で
画面が読み込み中(画面中央で点が丸く点滅)のまま止まっています
日付を変えて試みても結果は同じでした
解決方法があれば教えてください
よろしくお願いします
647デフォルトの名無しさん:2009/06/18(木) 14:07:15
>>646
ISOイメージ落としてCDに焼いて、CDからインストールすれば登録不要。
648デフォルトの名無しさん:2009/06/18(木) 14:12:46
火狐などの別ブラウザでやってみ
649デフォルトの名無しさん:2009/06/18(木) 14:25:46
>>644
そこが狙いだったんでしょうね。
今回はまんまと引っかかっちゃったって感じです・・・
650646:2009/06/18(木) 14:40:26
>>647
>>648 様 ありがとうございました
ブラウザにChromeを使っていたのが原因だったようです
I.Eで無事に登録することができました
651デフォルトの名無しさん:2009/06/18(木) 14:47:15
Chromeじゃあ仕方ないな
652デフォルトの名無しさん:2009/06/18(木) 14:55:45
そりゃそうだ ハッハッハッ
653デフォルトの名無しさん:2009/06/18(木) 15:29:58
俺前やったときfirefoxでも止まったような気がする
654デフォルトの名無しさん:2009/06/18(木) 15:30:28
Windows 7 DLしようとするとIEだと646のいう画面でリロード繰り返しの半無限ループ
になってDLできないが、FFでやるとすんなりDLできた。
655デフォルトの名無しさん:2009/06/18(木) 15:48:03
そりゃそうだ ハッハッハッ
656デフォルトの名無しさん:2009/06/18(木) 16:11:03
リストボックスにファイルをリストして、ファイル名のみを表示したとき、
listbox.SelectedItemからそのファイルのあるフォルダを探すには、
再度検索しないとだめでしょうか? フルパスは捨てられちゃう?
657デフォルトの名無しさん:2009/06/18(木) 16:15:58
適当に作ったクラスにフルパスとプロパティ作って
そのリストとか配列をDataSourceにするといいよ あとDisplayMemeber
658デフォルトの名無しさん:2009/06/18(木) 16:17:24
×フルパスとプロパティ
○フルパスと名前の2つのプロパティ
659デフォルトの名無しさん:2009/06/18(木) 18:05:12
Visual Studioでプロジェクトのプロパティを開くとアイコンを登録できますが、
ここでは何ピクセル、何色のアイコンを用意するのがベターなのでしょう?

また、OSが勝手に縮小や減色するのを避けるために、あらかじめ小さく作った
複数のアイコンを埋め込む方法も教えてください。
660デフォルトの名無しさん:2009/06/18(木) 18:41:28
アイコンを複数入れる方法はなんとなくわかりました。
エクスプローラーで表示される可能性のあるアイコンの種類の一覧って
どこかにありますか?
661デフォルトの名無しさん:2009/06/18(木) 20:03:32
アプリケーションのメインフォームを取得する方法を教えていただきたい。
662デフォルトの名無しさん:2009/06/18(木) 20:09:06
Application.Runする前に静的フィールドに保存しとけ、とか
ApplicationContext 作って管理しろ、とか
じゃない話?
663デフォルトの名無しさん:2009/06/18(木) 20:26:16
ライブラリに組み込みたいのでRanに渡したフォームを簡単に
取得できるものがあればと思ったんですが、ApplicationContext
を調べてみます。
ありがとう
664デフォルトの名無しさん:2009/06/18(木) 21:54:45
>>660
一つのアイコンファイルに複数の大きさの画像が格納されててエクスプローラが自動選択で表示してるだけだから、
VSでどうこうするんじゃなくてそういうアイコンを作れ
665デフォルトの名無しさん:2009/06/18(木) 22:02:21
256x256,48x48,32x32,16x16が各8bit,32bitあれば事足りるらしい
事足りるっつーには多いが
666デフォルトの名無しさん:2009/06/18(木) 22:33:46
>>645
struct使っても状況が良くなるとは思えないけど、
usingも慣れればそんなに悪くないよ。
667デフォルトの名無しさん:2009/06/18(木) 23:27:18
>>664-665
わかりました。
アイコンが8個入ったファイルを作ることにします。
668デフォルトの名無しさん:2009/06/18(木) 23:45:20
>>665
無い大きさで表示するときはどうなるの?
669デフォルトの名無しさん:2009/06/18(木) 23:49:47
小さいのを拡大するなり大きいのを縮小するなりするんだろ
96表示時は256のを縮小するらしいぞ
670デフォルトの名無しさん:2009/06/18(木) 23:57:25
というか 256x256 は PNG 形式である必要があるはずなんだけど
それ VS で作れたっけ?
駄目なら Vista 対応とか PNG 形式対応とかそんな感じのアイコン
エディタ使わないといけないでふよたぶん。
671デフォルトの名無しさん:2009/06/19(金) 00:28:41
>>670
PNGならmspaintでいいんじゃないか?
672デフォルトの名無しさん:2009/06/19(金) 00:50:10
PNGそのものじゃなくて、icoファイルの中にPNG形式のを突っ込むのな
673デフォルトの名無しさん:2009/06/19(金) 02:09:28
>>657
サンクス。やっぱり自分で保存しないと捨てられちゃうのね。
674デフォルトの名無しさん:2009/06/19(金) 03:39:28
一つのボタンをクリックするごとに同じ場所に重ねてあるラベルを順々に最前面に表示させる方法を教えてください。

説明文を作ろうとしていて、ボタンを押すごとに説明文が次のものに切り替わるようにしたいです。
675デフォルトの名無しさん:2009/06/19(金) 03:42:13
ラベルのText変更すりゃいいような気がするけど
バインディングとか

BringToFront
676デフォルトの名無しさん:2009/06/19(金) 04:12:17
>>675

ラベルを書き換えればいいんですね。
やってみます。
677デフォルトの名無しさん:2009/06/19(金) 05:13:59
ソリューションエクスプローラで
Form1csにForm1.Designer.csが付いてるようになってるけど、
自分で追加したClass1.csに他のソースファイルを付けるにはどうすればいいの?
ドロップできないし、partialにしてもそうならないんですが
678デフォルトの名無しさん:2009/06/19(金) 05:29:13
コンボボックス内のアイテムを選択すると、指定したラベルが表示されるようにするにはどうしたらいでしょうか?
コンボボックスはDropDownListで使います。
679デフォルトの名無しさん:2009/06/19(金) 05:36:50
>>677
昔csprojファイルを直にいじったらできたような記憶がある
たしかこれと同じようにすればよかったと思う
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
680デフォルトの名無しさん:2009/06/19(金) 05:44:53
>>678
ラベルを配列かList<Label>にでも入れといて
SelectedIndexChangedイベントが発生したら
そのインデックスに対応するラベルを表示
681デフォルトの名無しさん:2009/06/19(金) 05:58:23
>>679
<DependentUpon>で付けるみたいですね
ありがとうございました
682デフォルトの名無しさん:2009/06/19(金) 09:06:55
VS2008 SP1です。

INotifyPropertyChanged を実装したクラス「Sample」を
ジェネリックの List<Sample> に2個ほど入れ、
DataGridView の DataSource に突っ込んだところ
みごとにバインドされました。

しかし、コードでSampleクラスの値を変えても
DataGridView のフォーカスのある行しか値が更新されません。
すべての行(この場合2行)が更新されるにはどうすればよろしいでしょうか?
683デフォルトの名無しさん:2009/06/19(金) 09:08:12
>>682 のコードです。

class Sample : INotifyPropertyChanged
{
public Sample
{
}
private bool _count;
public bool Count
{
get { return _count; }
}
private DateTime _date;
public DateTime Date
{
get { return _date; }
}
public void Update()
{
_count++;
_date = DateTime.Now;

if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("Count"));
PropertyChanged(this, new PropertyChangedEventArgs("Date"));
}
}
#region INotifyPropertyChanged メンバ
public event PropertyChangedEventHandler PropertyChanged;
#endregion
}
684デフォルトの名無しさん:2009/06/19(金) 09:09:44
>>682 の実行コードです。



// 2つほど入れる
List<Sample> sampleList = new List<Sample>{ new Sample(), new Sample };



dataGridView1.DataSource = sampleList;



// スレッドで定期的に更新する
foreach (var item in sampleList)
{
item.Update();
}
685デフォルトの名無しさん:2009/06/19(金) 09:56:41
IBindingListが必要なんでList<T>の代わりにBindingList<T>を
あとスレッドでって言ってるけどInvoke/BeginInvokeは大丈夫か? データソースいじるときも同期が必要だぞ
686デフォルトの名無しさん:2009/06/19(金) 10:35:28
>>685
BindingListに変更し、Invokeメソッドで実行してみましたが、

PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Count"));

GUI上では DataGridView の現在選択中の行しか値は更新されませんでした orz
687デフォルトの名無しさん:2009/06/19(金) 10:39:49
>>685
いえ、全部の行が更新されています!
ありがとうございました!orz
688デフォルトの名無しさん:2009/06/19(金) 10:42:53
どうでもいいがそのInvokeじゃないぞ
Control.Invokeの方
689デフォルトの名無しさん:2009/06/19(金) 10:53:33
>>688
手順としては

1.Sample クラスでプロパティの変更を感知
2.?
3.DataGridView または DataGridView の所属する Form で
Control.Invoke(?) を呼び出す。

ということでしょうか?
690デフォルトの名無しさん:2009/06/19(金) 11:01:42
Updateの呼び出しそのものをInvoke経由で
バインディングされてるオブジェクトは扱いも慎重にしないとダメよ
691デフォルトの名無しさん:2009/06/19(金) 11:16:33
C#でのスレッド間同期制御について教えて欲しいんだけど、先にソースを。

//C#での実装(失敗、デッドロックする)
//※インデントに全角空白*2を使用
public class ThreadMain{
  private EventWaitHandle lockObj;
  public ThreadMain(EventWaitHandle lockObj){
    this.lockObj = lockObj;
  }
  public void run(){
    lock(lockObj){ //ここには入れない
      Console.WriteLine("sub in sync");
      lockObj.Set();
      Console.WriteLine("sub out sync");
    }
  }
}
public void test(){
  EventWaitHandle lockObj = new EventWaitHandle(false, EventResetMode.AutoReset);
  ThreadMain tm = new ThreadMain(lockObj);
  Thread t = new Thread(tm.run);
  lock(lockObj){
    t.Start();
    Console.WriteLine("main in sync");
    lockObj.WaitOne(); //ここで待機中の間だけlockObjを解放したい
    Console.WriteLine("main out sync");
  }
}
692デフォルトの名無しさん:2009/06/19(金) 11:17:29
//javaでの実装(期待通りに動く)
//※インデントに全角空白*2を使用
public class Test{
  public static class ThreadMain implements Runnable{
    private Object lockObj;
    public ThreadMain(Object lockObj){
      this.lockObj = lockObj;
    }
    public void run(){
      synchronized(lockObj){
        System.out.println("sub in sync");
        lockObj.notifyAll();
        System.out.println("sub out sync");
      }
    }
  }
  public static void main(String args[]) throws InterruptedException{
    Object lockObj = new Object();
    ThreadMain tm = new ThreadMain(lockObj);
    Thread t = new Thread(tm);
    synchronized(lockObj){
      t.start();
      System.out.println("main in sync");
      lockObj.wait(); //待機中はlockObjのモニタは解放されている
      System.out.println("main out sync");
    }
  }
}
693デフォルトの名無しさん:2009/06/19(金) 11:18:59
上(>>691)のプログラムで、
main in sync
sub in sync
sub out sync
main out sync
というシーケンスになるようにしたいんだけど、どうしたらいいだろう?

期待している動作は、メインスレッドがWaitOneに入るときlockObjのロックが解放されて、
サブスレッドがSet()して、さらにlock文から抜けた後、
mainがlockObjのロックを再獲得してWaitOneから復帰するようなイメージ。

Visual C# 2005 Express SP1 (.NET 2.0)
694デフォルトの名無しさん:2009/06/19(金) 11:29:32
lockとEventWaitHandleは全然別物なんだからそりゃうまくいくわけないな
lockはMonitorの糖衣構文だから、Monitor.WaitとMonitor.Pulseを使えば
695693:2009/06/19(金) 11:29:40
あ、待機はスピンロックでなければ、EventWaitHandle,lock以外でも良いです
696デフォルトの名無しさん:2009/06/19(金) 11:30:38
>>694
レスサンクス
ちょっとやってみる
697デフォルトの名無しさん:2009/06/19(金) 11:38:20
うほ出来た
Monitorクラスはlock文用のEnterとExitしか無いと思い込んでた^q^
>>694 ありがとう

(変更点)
//EventWaitHandle lockObj
Object lockObj

//lockObj.Set();
Monitor.Pulse(lockObj);

//lockObj.WaitOne();
Monitor.Wait(lockObj);
698デフォルトの名無しさん:2009/06/19(金) 13:30:18
VC++のCTreeCtrl(MFC)
CTreeCtrl::GetEditControl
に相当する処理を、
C#のTreeView
で探しています(VS2005 .NET Framework 2)。
なんとかして、エディット コントロールのハンドルが欲しいんですが、
どうしたらいいか、わかる人おられませんか?
699デフォルトの名無しさん:2009/06/19(金) 14:46:48
道路標識みたいなアイコンのついたダイアログってどうやって出すんでしょう?
フォームを自作しなくても、既製の部品があると読んだ覚えがあるんですが、
どうしても思い出せません。

こういうやつです。
ttp://f.hatena.ne.jp/images/fotolife/o/os0x/20080512/20080512223830.png
700デフォルトの名無しさん:2009/06/19(金) 14:53:41
MessageBox.Show("text", "caption", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
701デフォルトの名無しさん:2009/06/19(金) 14:54:07
MessageBoxIcon
702699:2009/06/19(金) 15:03:01
ありがとうございます。助かりました。
703デフォルトの名無しさん:2009/06/19(金) 16:10:51
INTもクラスなんだなー
int x=new int();
x=12;
ってやってもちゃんとできるね。
704デフォルトの名無しさん:2009/06/19(金) 16:26:27
クラスじゃないです
705デフォルトの名無しさん:2009/06/19(金) 16:58:00
とりあえずINTとIntとintは違う物なので
きちんと書き分けないと話が通じなかったりするぞ
706デフォルトの名無しさん:2009/06/19(金) 17:00:17
object i = 3;

なんてこともできます。
実際はboxingでInt32に変換されてるだけですが。
707デフォルトの名無しさん:2009/06/19(金) 17:04:58
Int32に変換? 「から」だろ?
708デフォルトの名無しさん:2009/06/19(金) 17:11:03
class Program {
static void Main(string[] args) {
object i = 3;
Console.WriteLine(i.GetType().FullName);
}
}
709デフォルトの名無しさん:2009/06/19(金) 17:12:57


namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void Func(ref int x){
x=10;
}

private void Form1_Load(object sender, EventArgs e)
{
int y;
this.Func(ref y);
}
}
}

これコンパイルできない
引数に10を代入する関数Func作ったが
this.Func(ref y)のyがグローバルとか意味輪からんことでてきてる
どうすればなおせる?
710デフォルトの名無しさん:2009/06/19(金) 17:15:32
エラー CS0165: 未割り当てのローカル変数 'y' が使用されました。
711デフォルトの名無しさん:2009/06/19(金) 17:16:04
refじゃなくてout使っとけ
それかyに初期値代入しとくか

つかエラーメッセージぐらいちゃんと書け
712デフォルトの名無しさん:2009/06/19(金) 17:45:54
豆知識
ダイアログがアクティブな状態でCtrl+Cを押すと
エラーメッセージがクリップボードに入るぞ
713デフォルトの名無しさん:2009/06/19(金) 19:10:26
常識だろjk
714デフォルトの名無しさん:2009/06/19(金) 22:32:06
練習として、例のごとくテキストエディタを作っているのですが、「切り取り」「コピー」「削除」の表示について質問です。
テキストが選択されている間のみ上記のメニューを選択できるようにしたいのですが、上手く表示されません。

具体的には、
TextBox内のテキストを選択している状態で編集メニューを開いても上記のメニューは選択できる状態にはならず、
右クリックでメニューを表示してから編集メニューを開くと上記のメニューが選択できる状態になります。
右クリックをした瞬間に何かを呼び出しているんでしょうか?

ちょっとわかりにくいでしょうか・・
ご教授願います。
715デフォルトの名無しさん:2009/06/19(金) 23:23:00
>>714
メニューを開かれるタイミングで調べるんじゃなくて、
TextBoxの選択が変わったときにメニューのプロパティを書き換えるんだ。
716デフォルトの名無しさん:2009/06/19(金) 23:24:18
メニューってContextMenuStripなのかMenuStripなのか
どっちにしろOpendイベントで判定すればいいと思うけど
717デフォルトの名無しさん:2009/06/20(土) 01:06:17
string[] line = text.Split('\n');
string[] cell = line.Split('\t');
と書いたとき、
for (int i = 0; i < line.Length; i++) {textBox[i].Text = lineView[i];}
みたいに行は書けるけど、[i]行目のcell[0]はなんて書けばいいのでしょうか?
718デフォルトの名無しさん:2009/06/20(土) 01:08:21
>string[] line = text.Split('\n');
>string[] cell = line.Split('\t');

どうみてもエラーです
719デフォルトの名無しさん:2009/06/20(土) 01:23:29
列数が固定(widthとする)なら

string[] cells = table.Split(new char[]{'\t','\n'},StringSplitOptions.None)

ここでx列y行はcells[x+y*width]
720デフォルトの名無しさん:2009/06/20(土) 01:53:38
なるほど。
cells[0] | cells[1] | cells[2]
cells[3] | cells[4] | cells[5]
と左から順番に設定するんですね!
これはすごい。
サンクス!!!
721デフォルトの名無しさん:2009/06/20(土) 01:58:09
あんまりアホなこと教えないであげてください
722デフォルトの名無しさん:2009/06/20(土) 02:03:07
微笑ましいじゃないか。
723714:2009/06/20(土) 02:57:30
>>715
できました!
ありがと〜

Opendイベントとやらも調べてみます
724デフォルトの名無しさん:2009/06/20(土) 02:59:17
どういたしまして
725デフォルトの名無しさん:2009/06/20(土) 03:09:50
スレチな質問なんですがどこで聞いたら良いのか分からないので
ここで質問させてください。

Visual Studio 2008 StdのC#でGUIなアプリケーションを作成しているのですが、
ファイルを参照するボタンに画像を貼り付けたいと思います。

凝った画像ではなく、エクスプローラの「ファイルを開く」メニューに表示
されているようなアイコンで構わないのですが、どこかで配布されているの
でしょうか?

それとも皆さん毎回オリジナルの画像を作っているのですか?
726デフォルトの名無しさん:2009/06/20(土) 03:18:13
初心者スレなのでアホな質問にも回答するが、スレ違いはお断り
727デフォルトの名無しさん:2009/06/20(土) 03:27:21
>>725
MDI親フォームのリソースファイルの画像を使うとか。
728デフォルトの名無しさん:2009/06/20(土) 03:29:33
シェルアイコンに微妙なセンスのアイコンがいっぱいある。
729デフォルトの名無しさん:2009/06/20(土) 03:34:12
>>726
すまんです。

>>727-728
Windowsのシステムアイコンを抜き出して使うと言うことでしょうか?
アイコンの抜き出し方は知ってますが、やはりまずいですよね?


ここで聞けというスレがあれば誘導していただけるとありがたいです・・・
730デフォルトの名無しさん:2009/06/20(土) 03:36:04
スレ違いだってわかってるなら汎用質問スレいけよカス
731デフォルトの名無しさん:2009/06/20(土) 03:39:24
c#とVB両方インスコしちゃったら
ソリューションファイル開くときに
VisualC#とVBどっちで開くか聞いてきてうざい
VBけしたほうがいい?
732デフォルトの名無しさん:2009/06/20(土) 03:45:03
733デフォルトの名無しさん:2009/06/20(土) 03:57:11
>>725
インスコ先探せばVS2008ImageLibraryってのが多分どっかにある。無くても確かMSDNから落とせる。
>>731
.slnの関連付けを変えればいい。

まあ、無駄レス付けるくらいなら答え付けてもいいんじゃねってことで。
どこで聞いていいのか分らんなら汎用スレがある。次からこっち行ってね。

スレ立てるまでもない質問はここで
http://pc12.2ch.net/test/read.cgi/tech/1240877154/
734727:2009/06/20(土) 04:13:29
>>729
ソリューションの新しい項目を追加でMDI親フォームを追加すると
アイコンついたボタンが最初からフォーム上にあるからその画像を使ったらって意味。
その画像の元はフォームのリソースファイルにある。
735デフォルトの名無しさん:2009/06/20(土) 04:49:24
Visual Studio 2008 Part 17
http://pc12.2ch.net/test/read.cgi/tech/1245309571/

こっち行け
736デフォルトの名無しさん:2009/06/20(土) 06:11:38
>>730
お前もいい加減スルーを覚えろよクズ
737デフォルトの名無しさん:2009/06/20(土) 06:19:20
VS2003しか知らんが確かアイコン集が入っていたはず。
Common7フォルダだったかな?
最近は付いてないのかな?
738デフォルトの名無しさん:2009/06/20(土) 06:34:03
あるスレッドで設定した変数を他のスレッドでも使うにはどうしたらいいでしょうか?
具体的にはBackgroudWorkerで設定した変数をstaticの変数に入れたいのです
別のスレッドではstaticが共有されないみたいなので行き詰ってしまいました。お願いします
739デフォルトの名無しさん:2009/06/20(土) 06:45:42
silverlightでデータベース上に存在するバイナリファイルを呼び出してウェブ上で再生したいんですけど、どうすればいいのか分かりません。
誰かやり方or良いサイト知ってれば教えてください
英語でも構わないっす
740デフォルトの名無しさん:2009/06/20(土) 08:07:50
>別のスレッドではstaticが共有されないみたい
そんなわけがない。
もしくは何か勘違いしてる。
741デフォルトの名無しさん:2009/06/20(土) 08:24:41
>>740
なにか言葉足らずだったかもしれません、すいません
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=37022&forum=7
ここに共有されないと載っていたので
もう少しいろいろやってみます
742デフォルトの名無しさん:2009/06/20(土) 09:24:56
C#初心者です。
ConvertとかString.Formatとか、特にnewで作成してないのに
使用できるクラスのメソッドがありますが、自分でもそんなクラスを作りたいのですが
どうすれば良いですか?
743デフォルトの名無しさん:2009/06/20(土) 09:34:17
public int Method(int value){...}

public static int Method(int value){...}
744デフォルトの名無しさん:2009/06/20(土) 09:36:22
>>741
お、おまえは何を言っているのだ??
745デフォルトの名無しさん:2009/06/20(土) 09:42:21
742
クラスがpublicでなかったようです。解決しました。
746デフォルトの名無しさん:2009/06/20(土) 09:45:00
>>743
ありがとうございます。メソッドをstaticにしてみます。
747738:2009/06/20(土) 10:13:29
public class userData
{
static public int a;
static public string b;
}

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
userData.a = 10;
userData.b = "abc";
}

private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
MessageBox.Show("a : " + userData.a + ",b : " + userData.b);
}

わかりにくくてすいません
こんな感じでaとbを表示させたいのですが、どこがいけないのでしょうか
748デフォルトの名無しさん:2009/06/20(土) 10:19:36
>>747
backgroundWorker1のRunWorkerCompleted イベントを作って、
その中で MessageBox.Show() を叩けば幸せになれるお。
749デフォルトの名無しさん:2009/06/20(土) 10:25:41
>>748
ありがとうございます
表示できましたが、このaとbをBackgroundWorker以外でも使いたいのですが、これだとだめですよね?
750デフォルトの名無しさん:2009/06/20(土) 10:34:29
>>749
俺はそういうことをしないようにしてるから、大正解の方法が分らんw
BackgroundWorkerの 「IsBusy プロパティが真の間は処理を待つ」とかかな?
751デフォルトの名無しさん:2009/06/20(土) 10:35:57
>>750
そんなこと言ったらビジーループで待ってしまうじゃないか
752デフォルトの名無しさん:2009/06/20(土) 10:39:25
>>750の補足

というか、BackgroundWorkerの処理完了後の動作はRunWorkerCompleted内に書けば全て解決。
button1は別スレッドを始動させるためだけのボタンと考えればいいんじゃないかな

>>751 本末転倒だなorzwww
753デフォルトの名無しさん:2009/06/20(土) 10:55:32
そもそもバックグラウンドで処理するってのがどういうことか全然分かってないのかな?
754デフォルトの名無しさん:2009/06/20(土) 11:06:57
順番に処理したいんなら普通に関数として呼ぶよな
755デフォルトの名無しさん:2009/06/20(土) 11:07:11
一定時間ごとに前のBackgroundWorkerで設定したa,bを使ってまた処理させるみたいな感じなんですが、ちょっとやってみます

>>753
別スレッドで処理するってことくらいしかわかりません
756デフォルトの名無しさん:2009/06/20(土) 11:11:18
>>754
結構時間がかかる処理なのでBackgroundWorkerでやってます
757デフォルトの名無しさん:2009/06/20(土) 11:18:25
お前のレベルだとちょっと危ないな。
共有データの更新タイミングの同期とか、
何も考えてないってか気をつけなきゃならないって事も
何も分かってないだろ?
758デフォルトの名無しさん:2009/06/20(土) 11:22:21
危ないだろうけど、でも必要ならやるしかない。
BackgroundWorkerの記事はネット上にあるはずだから、
自分で調べてどういうところに気をつければいいか勉強すればいいじゃない。
759デフォルトの名無しさん:2009/06/20(土) 11:37:02
>>756
どんなに時間がかかろうと、結果が出るまで次に進めなくて、
ただ待ってるだけならバックグラウンドにする意味ナッシング。
760デフォルトの名無しさん:2009/06/20(土) 11:50:14
>>747
public static volatile int a;
public static volatile int b;

a, b に volatile をつけると、あるスレッドで更新すれば別のスレッドに更新が伝わるようになる。

逆にvolatileのついていない変数では、あるスレッドで変更しても、その変更が別のスレッドにすぐに伝わるわけではない。
761デフォルトの名無しさん:2009/06/20(土) 12:05:02
ここにあるはずのサンプルプログラムがほしいのですが、
ページの中に「ソースの表示」とか「ダウンロード」ボタンが見あたりません。
どうやって入手すればいいんでしょう?
http://msdn.microsoft.com/ja-jp/library/ka7h9fze.aspx
762デフォルトの名無しさん:2009/06/20(土) 12:23:23
>>759
進めなくても、キャンセルくらいはできて欲しい
あと、処理中に描画が止まる糞設計もやめて欲しい
763デフォルトの名無しさん:2009/06/20(土) 12:34:14
>>760
適当なこと書くな。
だいたいこの場合だとvolatileとかいう問題じゃないだろ。
764デフォルトの名無しさん:2009/06/20(土) 12:35:41
>>761
なんでここに質問するの?バカなの?死ぬの?
765デフォルトの名無しさん:2009/06/20(土) 12:47:08
>>763
知らないならだまってればいいのに。
766デフォルトの名無しさん:2009/06/20(土) 12:50:09
>>726
だまってろよw
767デフォルトの名無しさん:2009/06/20(土) 12:50:42
単一のプロジェクト内で、特定の関数とかメソッドだけ
バックグラウンドにするメリットってあるの?
もちろん結果が出るまで待つ場合。

とりあえずバックグラウンドにするだけじゃ、
プロセスの優先順位は変わらないよね?
768デフォルトの名無しさん:2009/06/20(土) 12:59:05
今回のはvolatileとかいう問題じゃなくて、
aとbを同時に更新(あたかも)する必要がないか、
更新タイミングの同期はどうするのかって方向であって、
この例でvolatile云々言うのは大抵的外れ。
769デフォルトの名無しさん:2009/06/20(土) 13:05:28
だいたい、実質的にvolatileが要るのはもうちょっと状況が限られるよ。
必要な場合はあるけど、volatileつけないと別スレッドから見えないかっていうとそんなことはない。
まあ言い方に色々誤弊はあるけどね。
770デフォルトの名無しさん:2009/06/20(土) 13:09:48
>>761
ローカルのヘルプからたどればいいのに・・・
それにそこのリンクからもダウンロードできるじゃないか

そこのリンク→方法 : サンプルを表示およびダウンロードする→Microsoft Download Center にアクセスします。
771デフォルトの名無しさん:2009/06/20(土) 13:11:03
>>767
応答なしってタイトルバーに出たりするとユーザは不安になるもんだ
ちっとも経過を報告しないプログレスバーが行ったり来たりしてる方がマシ
キャンセルもできればなお良し
772デフォルトの名無しさん:2009/06/20(土) 14:29:09
CLR2.0では暗黙に全ての書き込みがvolatile書き込みな件
773デフォルトの名無しさん:2009/06/20(土) 14:44:36
double-checked lockingが使えるメモリモデルになってるって話か?

それ以上の意味なら、ソースが欲しい
774デフォルトの名無しさん:2009/06/20(土) 14:46:03
初心者ネタじゃないからよそに行け
775デフォルトの名無しさん:2009/06/20(土) 21:53:56
C#ではクラス名のあとに.をつけたら
いろいろ候補でるよね

Button1.って入力したら
ClickとかTopとかずらずらって。
あの候補のことなんていうんだっけ?
776デフォルトの名無しさん:2009/06/20(土) 21:56:25
入力候補

インテリセンスの機能だな。
777デフォルトの名無しさん:2009/06/20(土) 23:55:37
VS2008EEってセットアッププロジェクト作成機能ないの?
778デフォルトの名無しさん:2009/06/21(日) 00:47:07
プロジェクトをすべて保存にしたら
フォルダが
binとobjにわかれていて
それぞれにdebug releaseの二つに分かれてて
全部で4つの同じexeがあるんだが
なんでこんなことしてんの?
20MBのexeを4つも作られたら容量圧迫してかなわん。

bin/obj
debug release
どのexeが正しいexeなの?
779デフォルトの名無しさん:2009/06/21(日) 00:52:51
binが出力結果 objは中間ファイル置き場
DebugとReleaseは言わずもがな
780デフォルトの名無しさん:2009/06/21(日) 01:53:10
20MBもいくほうがおかしい。
容量圧迫ってどんだけきつきつでやってんだよ。
781デフォルトの名無しさん:2009/06/21(日) 03:25:53
exeが20MBって時点で、C#じゃなくてMFCアプリかなんかじゃね?
782デフォルトの名無しさん:2009/06/21(日) 03:53:12
ベクタライズ最適化という言い方は中途半端だったかもしれない。
gccにおけるauto-vectorazationのことで、一般的には自動ベクトル化と訳されているようだ。
http://gcc.gnu.org/projects/tree-ssa/vectorization.html

本質的にはループを展開して並列実行させることだからSIMDが無くても
複数のレジスタに分ける方法だってあるわけだが、
SIMDに対応してるならそれに越したことは無いだろうな。
783デフォルトの名無しさん:2009/06/21(日) 03:55:19
誤爆した。スマン。首吊ってくる。
784デフォルトの名無しさん:2009/06/21(日) 09:27:29
WebBrowserコントロールのDocumentTextプロパティでWebページを表示させているのですが
読み込むときに鳴るカチッという音を消したい場合はどうしたらいいでしょうか
785デフォルトの名無しさん:2009/06/21(日) 09:37:05
消せないっぽい。
786デフォルトの名無しさん:2009/06/21(日) 10:30:38
まじか。どもです
787デフォルトの名無しさん:2009/06/21(日) 10:55:02
OpenNew して、Document.Write すればいいらしい。
試してないからよくわからんが。
788デフォルトの名無しさん:2009/06/21(日) 11:41:24
>>787
そうするとページのURLが存在しないから、そのページはよくても
ほかのページにジャンプするときはフルパスのリンクが必要だな。
で、そのときにカチッと音が出る。
789デフォルトの名無しさん:2009/06/21(日) 11:58:52
>>787さんの方法でできました。ありがとうございました
790デフォルトの名無しさん:2009/06/21(日) 15:12:23
stringの扱いが分りません。 

変更できないらしいことは分ったんですが、
文字列の受け方がよくわかりません。

こういう場合は、どうすればいいんですか ><

sting param;

if ( xxxx )
param = "THEN"
else
param = "ELSE"

791デフォルトの名無しさん:2009/06/21(日) 15:13:45
それは変更してないじゃない。
792デフォルトの名無しさん:2009/06/21(日) 15:17:06
それだけだと普通にコードとしても意図としても成立してるが
793デフォルトの名無しさん:2009/06/21(日) 15:24:08
>>790
それでおk。
あとは
string param = (xxx) ? "THEN" : "ELSE";
とも書ける。
794790:2009/06/21(日) 15:56:06
レスありがとう

よくわからないから、今度はこうしてみたんですけど、
whileの外で使うと値が入ってないんです。><

main(){

char [] param = null;

while( xxxx ){
if ( xxxx ) then
param = THENストリング.ToCharArray();
else
 param = ELSEストリング.ToCharArray();
}

Console.WriteLine("Paramの中身", param);
}
795デフォルトの名無しさん:2009/06/21(日) 15:58:32
まずはデバッガの使い方覚えたほうがいい。
796デフォルトの名無しさん:2009/06/21(日) 16:01:38
>>795に同意
794は多分ループ内に入ってないんだろうなぁ
797デフォルトの名無しさん:2009/06/21(日) 16:03:20
中途半端に隠さずに貼るなら全部貼れ
そしてどういう結果を期待してるのか書け
798デフォルトの名無しさん:2009/06/21(日) 17:24:23
> if ( xxxx ) then

thenって?
799デフォルトの名無しさん:2009/06/21(日) 17:44:45
webbrowserのリンクをクリックしたらデフォルトのブラウザで開かせたいのですが
http://red-treasure.com/report/?p=100
上のサイトにあるようなややこしいことしないとできませんか?
800デフォルトの名無しさん:2009/06/21(日) 17:48:55
この程度でややこしいってどんだけw
801デフォルトの名無しさん:2009/06/21(日) 17:49:03
何がどうややこしいのやら
802デフォルトの名無しさん:2009/06/21(日) 17:59:14
>>799
「デフォルトのブラウザーが何か」ってのはOS上のユーザー設定を参照しないといけないことだからなぁ。
そこのサイトのコードだけでできるってのは、十分シンプルだと思う。
803デフォルトの名無しさん:2009/06/21(日) 20:36:32
BeforeNavigate とかではダメなんか?
804デフォルトの名無しさん:2009/06/21(日) 20:43:30
すでに自分を起動していたら、古いほうのウィンドウを閉じて新しいウィンドウで処理する、というのはどう書くものですか?
Processで自分の名前を取得して終了メッセージを送ったら、(当然のように)自分も終了してしまいました…。
あたりまえか。
多重起動を禁止するのではなく、行いたいです。
アドバイスお願いします。
805デフォルトの名無しさん:2009/06/21(日) 20:50:40
基本的な考え方は多重起動禁止と同じだけどね
Mutex の代わりに EventWaitHandle 使う
新しいプロセスはイベント通知するだけでその後は普通に進める
前のプロセスはイベントを受け取ったら終了処理
806デフォルトの名無しさん:2009/06/21(日) 21:13:06
俺はMutex取得できた奴がサーバとしてSetPropでWHDLをプロパティ設定。
取得できなかった奴はクライアントとしてGetPropで見つけたWHDLに
WM_COPYDATAで起動パラメータの情報を送信して終了。
サーバはWM_COPYDATAで受け取った情報で処理。

って作ってた。1.1だったからなぁ。
807806:2009/06/21(日) 21:17:10
あ、古いほうを終了か。間違えた。すまん。
808デフォルトの名無しさん:2009/06/21(日) 21:17:33
古い方を閉じるならもう少し複雑になる。
同時に何個も起動したときにおかしなことにならないようにしないといけないから。
809デフォルトの名無しさん:2009/06/21(日) 21:25:25
WHDL ってなんだよ・・・ せめて hwnd とかだろ
810デフォルトの名無しさん:2009/06/21(日) 21:27:17
正直、古い方を閉じる理由ってなんなんだろ?
811デフォルトの名無しさん:2009/06/21(日) 21:29:23
ごめん、変数名をなんでかそう書いてたんで、そのまま追いかけて読んで
書いちゃったw >>WHDL

・・・マジ、なんでWHDLとか書いてたんだ?自分。
812デフォルトの名無しさん:2009/06/21(日) 21:42:07
古い方を閉じるなんてめちゃくちゃなUXだな
813デフォルトの名無しさん:2009/06/21(日) 22:02:33
.NET や Java などでクラス複製のインターフェースの ICloneable がありますが
ICloneable に対するコピーの実装って
慣例的に シャロウコピー と ディープコピー のどっちなんでしょうか?
それとも特に決まってないのでしょうか?
よろしくお願いします
814デフォルトの名無しさん:2009/06/21(日) 22:12:56
特に決まってないな。
どっちかっていうとシャロウコピーな感じもある。
815デフォルトの名無しさん:2009/06/21(日) 22:16:13
てゆーかICloneableってまともに機能している場面って見たことねーんだが
816デフォルトの名無しさん:2009/06/21(日) 22:22:20
>>813
Javaは知らんが.NETでは特に決まってない。
Cloneは同じ内容だけど別物として振る舞うようなクローンを返せば、なんでもいい。
別にメンバが同じ値であったりそのコピーである必要はない。
817デフォルトの名無しさん:2009/06/21(日) 23:44:16
>>805
EventWaitHandleで、
http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=23906&rev=1&no=0&KLOG=2
のページを見つけて、そっくりおなじように実装してみたのですが、古い方は閉じるんだけど、新しいウィンドウも開かない状況です。
う〜む。なにがいけないんでしょう?
>>810
ビューアーのアプリケーションで、表示を自動/手動でリフレッシュしたいのです。外部から手動でリフレッシュするのには、新しいウィンドウを開くのがいちばん楽かと。
>>812
そ…そうかな…。
こういう場合って、どんなふうに実装します?
ところでUXってなに? User eXperience?
818デフォルトの名無しさん:2009/06/21(日) 23:48:23
>>817
そのウィンドウに更新ボタンを付けるのが一番素直な実装だと思うんだが?
819デフォルトの名無しさん:2009/06/22(月) 00:06:00
>>814-816
レスどうもです。
ICloneable について触れてるサイトを何度か見かけたのですが、
どれも MemberwiseClone をそのまま返却する実装をしてたので、
ちょいと気になってました。
ありがとうございました
820デフォルトの名無しさん:2009/06/22(月) 00:32:00
自分も更新ボタンがいいと思う。更新(R)、最新の情報に更新(R)・・・と一般的。
二つ目のアプリ実行っていったら、普通はMDIにドキュメント追加とかタブ追加
だから選択ミス。
いつも使ってる(だろう)アプリ見たら分かりそうだけどなぁ。
秀丸、サクラエディタ、VS、IE、Firefox、WinMerge・・・
821デフォルトの名無しさん:2009/06/22(月) 00:53:49
>>818、820
なるほど。更新ボタンですか…。
更新ボタンをつけたとして、外部のアプリケーションから手動で押す場合には、どういうメッセージを送ればよいんでしょう?
具体的にはコマンドラインから指示したいのです。
サーバー的なシステムで、アプリケーションの動いているマシンには、キーボードもポインティングデバイスもない(操作しにくい)ためです。
コマンドラインから開いているアプリケーションにメッセージを送ることってできるんですか?
これまでは、コマンドラインからおなじアプリケーションを実行してそれにメッセージを送信させようとしてはまってました。
「コマンドラインから」という条件は必須です。
メッセージを送るためのアプリケーションをもうひとつ作るのも考えたのですが、それならおなじアプリケーションで多重起動を監視するほうがよいかな、と考えて現在に至っています。
822デフォルトの名無しさん:2009/06/22(月) 00:59:12
>>821
質問する時は条件を後出しするなよ…
823デフォルトの名無しさん:2009/06/22(月) 01:00:12
>>821
まて、それでどうやって二番目のプロセスを起動しようとしている・・・?
どうやって コ マ ン ド ラ イ ン か ら 打 ち 込 む 気 だ。

ネット越しならポート開けて待ってて、誰かアクセスしてきたら更新しろ。
824デフォルトの名無しさん:2009/06/22(月) 01:01:45
>>821
コントロールされる側も自作アプリなんだから、
外部(ネットやシリアルポートなど)から操作できるように作っとけばいいじゃん。
適当にポート開けとくとかして。
825デフォルトの名無しさん:2009/06/22(月) 01:04:50
ボタン押すだけならハンドル取得してクリックイベントを送るだけ
826デフォルトの名無しさん:2009/06/22(月) 01:08:15
相手がWindowsマシンなのにマウスも何もついてなくて、
端末がコマンドラインオンリーてのもずいぶん時代錯誤なシステムだな
両方ともWindowsにしてリモートデスクトップでも使えば一発で解決する問題のような
そもそもどうやってログインしてるんだ?
電源が落ちたらどうするんだ
827デフォルトの名無しさん:2009/06/22(月) 01:51:47
>>826
っ MONO
828デフォルトの名無しさん:2009/06/22(月) 02:09:48
>>822
すみません。
>>823、824
ポート開けるなんてのは初心者なもので、まだ書けません…。
もうすこし勉強します。
>>825
時代錯誤かどうかはさておき、現実にそういうシステムなので。

ちなみに、次のようにして解決しました。
コマンドラインから起動するときに、
taskkill /im Program.exe
Program.exe
としました。

EventWaitHandleの使い方を覚えられなかったのは残念…。
829デフォルトの名無しさん:2009/06/22(月) 05:46:05
プログラムいくつか作っていくと、流用できるクラスが増えて
次のソフト作るの楽になるんだろうなと思ってやってきたけど
結局毎回一から全部作るんだよね
ファイル入出力関連何度作ったことか
やっぱ最初はこんなもの?
830デフォルトの名無しさん:2009/06/22(月) 05:50:56
汎用性を持たせられてないからだな
831デフォルトの名無しさん:2009/06/22(月) 06:09:35
汎用性ってすごく難しいよね
細かい機能使えるようにすると、元々あるクラス使えってことになるし
簡単に使えるクラスにすると、他のプログラムだと機能がたりなかったり
そもそも何をしているクラスなのかわからなかったりで
832デフォルトの名無しさん:2009/06/22(月) 08:07:47
16進数 1FF は 10進数 511なわけですが
プログラムのバイナリデータではFF01という風に逆順に並んでいるんですが
こういうのを10進数511と変換するうまいやり方はないでしょうか?
833デフォルトの名無しさん:2009/06/22(月) 08:10:02
char[]に変換して、foreachでstringに変換して連結。
834デフォルトの名無しさん:2009/06/22(月) 08:37:32
byte[]に入れて、BitConverter.ToUInt16()
835デフォルトの名無しさん:2009/06/22(月) 09:02:05
>>833
>>834
それだと逆順になったままなんですが

FF01を511にする方法が知りたいんです
836デフォルトの名無しさん:2009/06/22(月) 09:12:59
良く分からんが、用意されてるメソッドで都合悪いなら自作すれば?
837デフォルトの名無しさん:2009/06/22(月) 09:14:11
それがわからないから聞いているんだけど?
838デフォルトの名無しさん:2009/06/22(月) 09:19:17
>>835
それ、普通に short で読み込んだら 511 にならない?
Mono か何かでビッグエンディアンな CPU 上で実行してたりする?
839デフォルトの名無しさん:2009/06/22(月) 09:24:03
文字列の "FF01" とか?
840デフォルトの名無しさん:2009/06/22(月) 09:32:04
>>835
普通逆順になるわけがないんだが、
お前いったいどんなプログラムで確認してる?
841デフォルトの名無しさん:2009/06/22(月) 09:42:32
>>838
なるわけないし、ushortじゃないと範囲超える
842デフォルトの名無しさん:2009/06/22(月) 09:46:43
>>840
どういう意味?

あるアプリをバイナリ編集したいんだけど
数値の部分だけがFF01と反転している
そのアプリのバイナリデータを取り込んで0x01FFつまり511とテキストボックスなんかに表示したいんだけど
843デフォルトの名無しさん:2009/06/22(月) 09:47:01
>ushortじゃないと範囲超える
くわしく
844デフォルトの名無しさん:2009/06/22(月) 09:50:14
>>843
short=0xFF01;
でやればわかる
845デフォルトの名無しさん:2009/06/22(月) 09:53:40
で、同じようにDWORDの数値も本来の数値に変換したいんだけど
簡単な方法ありますか?
846デフォルトの名無しさん:2009/06/22(月) 09:54:44
>>844
何言ってんだお前は。
今の値はそうじゃないだろw
847デフォルトの名無しさん:2009/06/22(月) 09:55:38
>>842

byte[] data = {0xFF, 0x01};
Console.WriteLine(BitConverter.ToInt16(data, 0));

512って出るだろ?
出たならお前の読み込むプログラムの方がおかしいってこった。
848デフォルトの名無しさん:2009/06/22(月) 09:57:40
ちがう511のまちがい。

>>845
これで分かるだろ。
849デフォルトの名無しさん:2009/06/22(月) 10:04:45
>>847
おおおおおおおおおすげーーーー
なんで逆さまなのに511って出るんだ・・・
850デフォルトの名無しさん:2009/06/22(月) 10:06:28
>>846
今の値がどうとかに関係なくWORDを読み込んで数値に変換するわけなんだからshortじゃだめでしょ
851デフォルトの名無しさん:2009/06/22(月) 10:09:21
>>834
結局これだったわけねww
ありがとう
852デフォルトの名無しさん:2009/06/22(月) 10:15:19
範囲外とか言い出すやつが何言っても無駄
853デフォルトの名無しさん:2009/06/22(月) 10:17:55
>>850
そもそも今の会話からは符号付きかありかなんて読み取れないのに、
いきなり、>>841とかいいだすお前がおかしいわ。
854デフォルトの名無しさん:2009/06/22(月) 10:20:37
こういうのは「バイトオーダー」とかのキーワードを知ってればすぐ答が見つかるんだよな
それを知らない時点で敗北決定
855デフォルトの名無しさん:2009/06/22(月) 10:21:16
>>832
>プログラムのバイナリデータではFF01という風に逆順に並んでいるんですが
ここでちゃんとWORDデータを変換すると言っているんだから
できるひとは>>834がすぐ出るでしょ
WORDデータに対してshort持ってきちゃうなんて世間知らずもいいとこだ
856デフォルトの名無しさん:2009/06/22(月) 10:22:42
なん…だと…
857デフォルトの名無しさん:2009/06/22(月) 10:24:15
>ここでちゃんとWORDデータを変換すると言っているんだから
どこだよっ

>>832をどう見ても符号付きか否かは不明。
858デフォルトの名無しさん:2009/06/22(月) 10:26:57
どうかな。
859デフォルトの名無しさん:2009/06/22(月) 10:30:36
バイナリデータ2バイト(FF01)=WORD=ushort
860デフォルトの名無しさん:2009/06/22(月) 10:32:04
そもそも0xFF01はshortに収まらない

論破
861デフォルトの名無しさん:2009/06/22(月) 10:37:24
>>831
それはまだ蓄積や経験が足りない。わからなくなるのは管理が悪い。

名前の付け方に統一ルールを作り、長くなってもいいからわかりやすさを最優先に考える。
使い方をソースファイルの頭などにちゃんと書いておく。
過去の自分は他人。他人が見て使用法が理解できないソースは未来の自分にも理解できない。
「いちいち書くのがめんどくさい」「書かなくてもわかってる、覚えてる」は禁句。

まあ、35歳ぐらいになれば記憶力も衰えてくるし、10年以上の蓄積ができてるはずだから
身にしみてわかるようになるよ。
大多数の人間は経験から学ぶ愚者だからね。
862デフォルトの名無しさん:2009/06/22(月) 10:42:49
>>860
君おもしろいね
863デフォルトの名無しさん:2009/06/22(月) 10:43:18
大多数の回答者は本来のデータが0x01FFのリトルインディアンだと気づいているのに
見たまま0xFF01と解釈してるアホがいる
バイナリファイルをバイナリエディタで開いてみたことないんだろうな
864デフォルトの名無しさん:2009/06/22(月) 10:49:20
>>863
リトルインディアン?アメリカの子供に聞かせる歌でそんなのあったな

バイナリから取り込むわけだから、元データがOxFFFFの場合もあるかもしれないと
想定して作らないとだめでしょ?何で符号無しと決め付けるわけ?
思い込みは危険だよ
865デフォルトの名無しさん:2009/06/22(月) 10:52:01
リトルエンディアン 【little endian】
http://j-ken.com/category/all/data/637100/
866デフォルトの名無しさん:2009/06/22(月) 10:57:27
符号無しと決めつけてるのはushortじゃなきゃダメと主張してる人だな。
今の質問だとどっちか分からないから、shortではなくushortにしなきゃならない
ってのは正しいかどうか確証はない。
shortじゃなきゃならない可能性もあるんだから。

符号に気をつけろだけなら異論はないが。
867デフォルトの名無しさん:2009/06/22(月) 11:03:21
>>859
その解釈が、件のデータが符号付きか符号なしかという問題に対して何か意味を持つとは思えないな。
868デフォルトの名無しさん:2009/06/22(月) 11:05:12
何でそんなに符号に拘るの?そもそも符号って何よ・・・・
ushortじゃだめな理由なんてあるの?
869デフォルトの名無しさん:2009/06/22(月) 11:16:18
今北産業
870デフォルトの名無しさん:2009/06/22(月) 11:18:20
>>868
同じバイナリで表現される整数値の意味が変わるからだ。
知らないならC言語の初級からやりなおせ。
871デフォルトの名無しさん:2009/06/22(月) 11:28:18
>>870
なるほどそういうことか、難しいな
872デフォルトの名無しさん:2009/06/22(月) 11:29:40
C言語は関係ないよ。
873デフォルトの名無しさん:2009/06/22(月) 11:37:59
>>872
アホ
874デフォルトの名無しさん:2009/06/22(月) 11:46:45
>>869
符号がどうとか
聞かれてもいないことに答えようとしている
おせっかいがたくさん
875デフォルトの名無しさん:2009/06/22(月) 11:51:34
なんでもこういう事言って満足してるアホがいるが、
普通に質問への答えに関わる事として重要なことだってのも分からんのか、
単に何か言いたいだけなのか、何なんだろうな。
876デフォルトの名無しさん:2009/06/22(月) 11:55:46
ArrayListあるいは配列の中に入っているobjectを、
ToStringかけながらカンマ区切りで連結するのってどうやるんだろう?
できれば区切り文字はあとから変更できる形が望ましい。

.NET 3.5以降ならLinq付随のジェネリックテンプレートが使えるんだけど、
サポートOS(2000以降)の関係で.NET 2.0でお願いします。
877デフォルトの名無しさん:2009/06/22(月) 11:58:59
String配列生成
forでそれぞれToStringしながら配列に入れていく
String.Join
878デフォルトの名無しさん:2009/06/22(月) 12:01:56
ConvertAllだったかとString.Joinの組み合わせで。
あ、ConvertAllは配列にしてからじゃないとダメだったかな…
879デフォルトの名無しさん:2009/06/22(月) 12:17:42
>>877
なるほど……。そんな感じでやってみようかと思ったらStringBuilderを見つけて、
そっちで書いてみたら簡単だったのでコード片を載せておく。

IronPython.Runtime.List python_result;

var builder = new StringBuilder();
foreach(var e in python_result)
{
builder.Append(","+ e.ToString());
}
Console.WriteLine(builder.ToString().Substring(1));

>>878
対象がIronPython.Runtime.ListなんでConvertAllは使えないっぽいね……。
880デフォルトの名無しさん:2009/06/22(月) 12:47:10
パイソンは知らないんだが、ToArrayはないのかな?
ToArrayしてConvertAllしてJoinに渡す。

ってまあ別にベタで書いても全然構わないんだけど。
881デフォルトの名無しさん:2009/06/22(月) 13:00:37
IEnumeratorは返してくれるんだけど、ToArrayは無いのよね。
枯れたライブラリならともかく、
こんなホットなもの相手に中のコードはいじりたくない。


C#は巨大な.NETクラスライブラリの関係で
同じことをやるのに方法がたくさんあるから、最適な方法を探すのが大変ですね。
882デフォルトの名無しさん:2009/06/22(月) 13:05:47
Listって名前なのにIEnumerableのみかよwww

……XmlNodeListもそうなんだよな
883デフォルトの名無しさん:2009/06/22(月) 15:31:14
提示された情報だけでは符号付きか符号無しか判断できないし
別に型が確定しなくても今回の質問には答えられる。
ちょっと注意書きを入れれば済むことだから両方書けばいいだけ。
BitConverter.ToUInt16()  符号無し
BitConverter.ToInt16()  符号あり
884デフォルトの名無しさん:2009/06/22(月) 15:35:02
DataGridViewの一番左の項目に1,2,3と番号振りたいんだけどどうすればいいですか?
DataGridView.Rows[].Cells[0]のことではないです。
885デフォルトの名無しさん:2009/06/22(月) 15:51:39
>>884
DataGridView.CellPaintingで
886デフォルトの名無しさん:2009/06/22(月) 15:54:05
すいませんこれでいけました

DataGridView1.Rows[0].HeaderCell.Value

が、なぜか、マス目でいうと上から3つ目のところに表示されます
上から3つ目のマスが最初の行ということですか?
だとしたら、その上の行はなんなのか?あとインデックスって-1になるということ?
どうもよくわからない
887デフォルトの名無しさん:2009/06/22(月) 16:00:27
ハァ?
コーディングミスだろ。

http://www.dotup.org/uploda/www.dotup.org158297.png
888デフォルトの名無しさん:2009/06/22(月) 16:08:24
dataGridView1.ColumnCount = 6;

this.dataGridView1.Rows[0].HeaderCell.Value = "0";

Bthis.dataGridView1.Rows.Add("1","2","3","4","5","6");

やってるのはこれだけなんですが、行のヘッダは3マス目に0が入り
Bのデータはなぜか2マス目の行にデータが収まります
どうしてなんでしょうか?
889デフォルトの名無しさん:2009/06/22(月) 16:24:38
試しに新規プロジェクト作ってDataGridView貼り付けて
そのコードだけを書いたやつ実行してみなよ。
890デフォルトの名無しさん:2009/06/22(月) 16:25:07
>>888
人がわざわざ正しいやり方を示してくれているのに謝意も述べず、
自分勝手なやり方をしてそれがどういう結果をもたらすのか
自分で考えずに人に質問するような態度で、
答えを教えてもらえると思っているのか?

ちなみに887≠オレ
891887:2009/06/22(月) 16:26:25
初心者スレの割にキビシイっすね
892デフォルトの名無しさん:2009/06/22(月) 16:41:56
愛の鞭です
893デフォルトの名無しさん:2009/06/22(月) 17:36:29
飴ちゃんちょうだい
894デフォルトの名無しさん:2009/06/22(月) 21:19:42
バイトオーダー嫌って文字列で送った俺は勝ち組。
895デフォルトの名無しさん:2009/06/22(月) 21:29:49
数が少なく整数のみならそれが勝ちだね
896デフォルトの名無しさん:2009/06/22(月) 22:01:33
エンコードが違って文字化け
897デフォルトの名無しさん:2009/06/22(月) 22:36:57
コード以外の文字列はBASE64ヽ(´▽`)ノ検索無くてよかったよかった。
898デフォルトの名無しさん:2009/06/23(火) 00:45:53
そんな私はwebで公開
899デフォルトの名無しさん:2009/06/23(火) 03:28:34
byte[]に格納したバイナリデータをascii文字列にするにはどうすればいいですか?
900デフォルトの名無しさん:2009/06/23(火) 03:33:02
Convert.ToBase64Stringが手軽で鼻血が出る
901デフォルトの名無しさん:2009/06/23(火) 03:33:06
どんなバイナリをどんな文字列にしたいのさ
902デフォルトの名無しさん:2009/06/23(火) 03:38:03
31 30 30 25→100%
みたいな感じです

バイナリエディタのようなものを作ろうとしているので
stirlingは左バイナリデータで右側にShift-Jis, ASCIIなどを表示してますよね?
そういう感じのものを作りたい
903デフォルトの名無しさん:2009/06/23(火) 03:48:11
charにキャスト
904デフォルトの名無しさん:2009/06/23(火) 04:01:56
Encoding
905デフォルトの名無しさん:2009/06/23(火) 04:04:34
906デフォルトの名無しさん:2009/06/23(火) 05:36:19
>>900
>>901
>>903
>>904
>>905
試してみますありがとう
907デフォルトの名無しさん:2009/06/23(火) 09:47:01
なぜかBio100%を思い出した
908デフォルトの名無しさん:2009/06/23(火) 10:02:41
どこからの連想か全く分からないが懐かしいな>Bio_100%
909デフォルトの名無しさん:2009/06/23(火) 13:11:53
俺がバイナリエディタを毎日のように使っていた時代と
Bio_100%の全盛期が重なってね。で、>>902から連想した。

あの頃はアセンブラが必須科目だったし、バイナリのデータ構造なんて
知ってて当たり前だった。ちょっと上の方で揉めてエンディアンの話とか。
910デフォルトの名無しさん:2009/06/23(火) 13:16:26
>>909
> 知ってて当たり前だった。
の割にはあまり刊行物では取り上げられなかったけどな。
911デフォルトの名無しさん:2009/06/23(火) 13:21:59
>>910
C/C++の入門書ならほぼ間違いなく取り上げてる話題なんだが、どうよ。
912デフォルトの名無しさん:2009/06/23(火) 13:23:56
>>911
悪い、勘違いした。
バイナリの構造って、たとえばPEヘッダとかそういうのだと思った。
913デフォルトの名無しさん:2009/06/23(火) 13:31:43
また話がそれかかってるので燃料投下する。

C#で作ったプログラムで他のモジュールを読み込む場合、
モジュールをサブディレクトリに置いた場合に
アプリケーション設定ファイル(*.exe.config)に
<probing privatePath="libs" />
といった形で検索パスを記入するが、他の方法はどういったものが挙げられるだろうか。
いいところ、悪いところなど教えてくれると助かる。
914デフォルトの名無しさん:2009/06/23(火) 13:52:31
>>913
API
915デフォルトの名無しさん:2009/06/23(火) 14:05:15
916デフォルトの名無しさん:2009/06/23(火) 15:09:07
確かにPEヘッダは資料が少なくて苦労した
917デフォルトの名無しさん:2009/06/23(火) 15:18:16
そういうのって、Linkers & Loadersが出るまでは、断片的な情報しか
手に入らなかったような気がするけど。
918デフォルトの名無しさん:2009/06/23(火) 17:58:25
漠然とした質問ですが、
アセンブリ情報のGUIDってなんですか?
なんのためにあるんでしょう。
919デフォルトの名無しさん:2009/06/23(火) 18:23:06
厳密名を定義するため
920デフォルトの名無しさん:2009/06/23(火) 18:47:13
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Url = textBox1.Text;
}

エラー 1 型 'string' を型 'System.Uri' に暗黙的に変換できません。

webBrouserのURLプロパティに文字列を渡したいのですがどうすればできますか?
921デフォルトの名無しさん:2009/06/23(火) 18:49:35
できません
922デフォルトの名無しさん:2009/06/23(火) 18:52:30
string型をUri型に変換するメソッドを使うよ
webBrowser1.Url = New Uri(textBox1.Text);
923デフォルトの名無しさん:2009/06/23(火) 19:01:04
>>919
何さらっと嘘書いてんだっ
924デフォルトの名無しさん:2009/06/23(火) 19:11:56
webBrowser1.Navigateでできました。
かなり前に使ったときは別の方法を取ったのですが…

もうひとつ質問なのですがJaneの板一覧とスレ欄の間にある移動可能な敷居?はなんという名前でしょうか?
925デフォルトの名無しさん:2009/06/23(火) 19:15:12
JaneはWinFormじゃないから同列には論じられないけどな
.NET 2.0のWinFormならSplitContainer
926デフォルトの名無しさん:2009/06/23(火) 19:18:09
>>925
ありがとう
927デフォルトの名無しさん:2009/06/23(火) 23:35:14
3週間経たずに埋まってしまいそうだな
928デフォルトの名無しさん:2009/06/24(水) 00:33:30
LINQでfromが複数ある場合の挙動ってどうなるんでしょう。
情報を調べても見つけれず、実際の動作調べてはみたものの、
状況次第で動作が変わっているようなのでちょっとキモチワルイです。

 var src = { "Hoge", "Hage", "Huge" };
 var dist1 =
   from p in src
   from q in src // pから取得した値以外をqの情報源にすると...
   select new { P=p, Q=q }; // {Hoge,Hage,Huge}x{Hoge,Hage,Huge} 全組み合わせ9通りに展開される
 var dist2 =
   from p in src
   from q in p // pから取得した値をqの情報源にすると...
   select q; // 全pの中の全qの数だけ展開される。つまりH,o,g,e,H,a,g,e,H,u,g,eの12個
        // {H,o,g,e,H,a,g,e,H,u,g,e} x {Hoge,Hage,Huge}の全組み合わせ36通りにはならない
929デフォルトの名無しさん:2009/06/24(水) 00:46:24
それぞれfrom...inの代わりにforeachで列挙してみれば分かると思うよ
930デフォルトの名無しさん:2009/06/24(水) 00:48:02
>>929
あぁ、なるほど、納得です。ありがとうございます。
931デフォルトの名無しさん:2009/06/24(水) 03:31:23
メソッド構文で書くとこう
var r1 = src.SelectMany(_ => src, (p, q) => new { p, q });
var r2 = src.SelectMany(p => p);
こちらのほうが実際の動作イメージはつかみやすいと思う。
932デフォルトの名無しさん:2009/06/24(水) 04:32:33
会社でWindows 2000の縛りがあって
いつまで経っても.NET 3.0〜3.5の世界に踏み込めないオレは
Linqなどグッジョブなテクノロジーがうらやましいぜ!
933デフォルトの名無しさん:2009/06/24(水) 05:32:51
こんな時間に起きている人ってプログラマーじゃないよね?
ホビーグラマーだよね?
934デフォルトの名無しさん:2009/06/24(水) 05:33:59
いつも5時に起きて23時に寝ていますよ
935デフォルトの名無しさん:2009/06/24(水) 05:35:48
そんな健康的なプログラマーがいるのか
936デフォルトの名無しさん:2009/06/24(水) 05:39:57
個人事業主ですが
937デフォルトの名無しさん:2009/06/24(水) 05:56:36
>>936
雇ってください。年収200万で何でもします
938デフォルトの名無しさん:2009/06/24(水) 06:02:42
ふらっとC#プログラマ始めました(初心者用) Part1
939デフォルトの名無しさん:2009/06/24(水) 06:28:20
>>937
個人投資家ですが、ほんとうに200万でいいですか?
940デフォルトの名無しさん:2009/06/24(水) 06:34:06
939はC#プログラマ(初心者)兼、個人付きメイドをゲットした。
941デフォルトの名無しさん:2009/06/24(水) 06:36:54
メイド服も着れと言われれば着ます。男ですけど。
子供の時は女の子に間違われていたのでカツラも用意していただければたぶん・・・
プログラミングは最近始めたので余りお役にいは立てません
942デフォルトの名無しさん:2009/06/24(水) 06:43:12
住民税+来年度の予定納税で 250万を超えることになって、
すでに死にかけですよ・・・orz
943デフォルトの名無しさん:2009/06/24(水) 06:45:30
金融から200マン借りてる俺よりマシ
944デフォルトの名無しさん:2009/06/24(水) 07:25:24
クラスは出来るだけ簡略化して多く作った方がいいとよく言われていますが
そうなんですか?

メソッドみたいな短い命令文をクラスにして大量に作るって感じでしょうか?
945デフォルトの名無しさん:2009/06/24(水) 07:32:49
>>944
そうではなく、情報同士の依存性をなるべく減らすべき、ということ。
そして情報同士の関係性を形作る設計は、デザインパターンと呼ばれてカタログ化されている。

もっとも、.NET クラスライブラリみたいな巨大なツールセットが最初からあるから、
そもそもそのような複雑なことを考えるまでも無くかなりのことができてしまうわけだが。
946デフォルトの名無しさん:2009/06/24(水) 11:31:18
>>944
問題は大きさとか数じゃなくて、ちゃん整理されているかどうかだよ。
どちらかと言えば簡略化すべきはクラスじゃなくてメソッドだな。
単純で確実に動くメソッドは再利用もしやすい。
947デフォルトの名無しさん:2009/06/24(水) 11:42:44
Linqについてうまいことまとまってるサイトや書籍はないですか?
概論や入門レベルの情報はたくさん見つかるんですが、応用というか
「こういう事もできますよ」といった感じの
948デフォルトの名無しさん:2009/06/24(水) 11:43:38
>>945
>>946
なんか奥が深そうですね

話は変わるけどプログラムする人は頭良さそうだけど
よくテレビでやってる能力テスト(知識を必要とするクイズとかじゃなくて)などはいい点取れるの?
関連のある図形を選びなさいとかの問題だとすぐ解けそうだね
949デフォルトの名無しさん:2009/06/24(水) 11:48:16
気のせいだ
950デフォルトの名無しさん:2009/06/24(水) 11:57:53
昔IBMのプログラマー適性検査みたいなの受けたが
まさにその図形を選んだりする、子供の時やった知能テストみたいなやつだったな。
951デフォルトの名無しさん:2009/06/24(水) 12:10:54
すいませんC#で作ったソフトは、別途ランタイムが必要ですか?
952デフォルトの名無しさん:2009/06/24(水) 12:18:43
>>951
いるいる

VISTA以降ならいらない
953デフォルトの名無しさん:2009/06/24(水) 12:28:46
将来
.NetFrameWork6.7b以降が必要
なんてプログラムがでてきても

Vistaなら・・・Vistaならなんとかしてくれる!
954デフォルトの名無しさん:2009/06/24(水) 12:30:05
>>952−953
ご丁寧にありがとうございます
Cの勉強で頑張ってみたいと思います
955デフォルトの名無しさん:2009/06/24(水) 12:30:24
byte[] data=new byte[5000];
BitConverter.ToInt16(data,0);
これでバイナリデータを数値に変換できたんですけど

data[6]〜data[7]
だけを数値にしたい場合良い方法はないでしょうか?

必要なだけ空の配列に代入しながらするのは大変なのです
こんな感じでかなりの数があるので
data[8]〜data[10]
data[200]〜data[204]
data[1200]〜data[1204]

今はこんな感じで代入してます
num[0] = data[0x80];
num[1] = data[0x81];
956デフォルトの名無しさん:2009/06/24(水) 12:32:54
>>955
同じような処理は関数化すればいいでそ
957デフォルトの名無しさん:2009/06/24(水) 12:35:22
BitConverter.ToInt16(data, 6);
BitConverter.ToInt16(data, 8);
BitConverter.ToInt16(data, 200);
BitConverter.ToInt16(data, 1200);
958デフォルトの名無しさん:2009/06/24(水) 12:36:17
Bufferクラス
959デフォルトの名無しさん:2009/06/24(水) 12:36:23
>>952
ウソ言うなやボケ。
XPであっても、VISTAであっても、7であってもランタイムは必要。
VISTAには2.0と3.0のランタイムがすでに入っているが1.1や3.5,4.0のランタイムは含まれていないので
別途インストールしないとだめ。
960デフォルトの名無しさん:2009/06/24(水) 12:41:53
>>956
private byte[] byteSpliter(byte[] data, int startIdx , int length)

なるほど、こんな感じかな?

>>957
これでいけましたw
それ以降全部数字に変換されると思ってました

ありがとうございます
961デフォルトの名無しさん:2009/06/24(水) 13:02:51
職業プログラマーの適性は協調性があること、
コミュニケーションができること。

あとは腰痛などの持病がないこと。
962デフォルトの名無しさん:2009/06/24(水) 13:05:26
プログラマは協調性が無く、女にモテなさそうだから就職しなかった
963デフォルトの名無しさん:2009/06/24(水) 13:11:25
職業の性質上、元々問題がある奴が多いからそんな当たり前のことが言われてるだけだろ
964デフォルトの名無しさん:2009/06/24(水) 13:15:02
未経験でプログラミングのお仕事がやりたいんですけどどのスレで助言を頂けますか?
965デフォルトの名無しさん:2009/06/24(水) 13:15:30
助言を与える服がない
966デフォルトの名無しさん:2009/06/24(水) 14:04:14
うちはプログラマの1/4はバイトからスタート。
2年ぐらいやってもらって見込みがあれば社員にスカウト。
あとの3/4は新卒か転職組。
いきなり未経験でプログラマーの正社員は無理じゃね?
967デフォルトの名無しさん:2009/06/24(水) 14:07:24
マ板でやれ
968デフォルトの名無しさん:2009/06/24(水) 14:07:53
バイトでよければ情報誌にいろいろ出てる
うちも求人出してるし
969デフォルトの名無しさん:2009/06/24(水) 14:10:05
板違い
970デフォルトの名無しさん:2009/06/24(水) 14:20:12
スカウトとか言ってる企業はブラック間違いなし。
971デフォルトの名無しさん:2009/06/24(水) 14:42:49
35でプログラマ目指している俺がきましたよ
972デフォルトの名無しさん:2009/06/24(水) 14:47:00
帰れ
973デフォルトの名無しさん:2009/06/24(水) 16:35:18
ifを使って変数を比較したら何クロックぐらいですか?
974デフォルトの名無しさん:2009/06/24(水) 16:38:05
>>973
ケースバイケース
975973:2009/06/24(水) 16:44:53
変数の型によって等の条件によって違ってくるような気がしますが
平均的にはいくつぐらいになるのでしょうか 数十くらいですか?
976デフォルトの名無しさん:2009/06/24(水) 16:45:03
>>973はツンデレ保守わかる
977デフォルトの名無しさん:2009/06/24(水) 16:45:04
知らないなら黙っててください
978デフォルトの名無しさん:2009/06/24(水) 16:46:34
CPUのクロックを測定するスレがあるからそっちで聞いてみたら?
昔と違って並列で動作したり、C#レベルだとJITでの最適化などで
単純に測定できないことが分かると思うから。
979973:2009/06/24(水) 16:48:24
>>978
そうしてみます。
ありがとうございます。
980デフォルトの名無しさん:2009/06/24(水) 16:50:21
>>975
本気で聞いているの?
全体集合(比較可能な型の全ての集合)もわからないのに,平均ってなんぞい?

正確なクロック数はわからないけど,Step by Stepの利いていないCPUでWindows環境なら
数百万回くらい比較を行うループの実行時間とQueryPerformaceFrequencyからクロック時間が割り出せそう
もちろんスレッドのコンテキストスイッチなど目にも留まらぬ速さの場合
981973:2009/06/24(水) 17:05:22
本気で聞いています。
厳密なクロック数が知りたい訳ではなく
数十なのか、数百なのか、数千なのか、
そのぐらいのレベルで知りたいんですが。
982デフォルトの名無しさん:2009/06/24(水) 17:10:49
980の言うように回数こなして実測が一番現実的だと思うがね。

CPUの命令レベルだったらだったら0〜2クロック。
分岐予測を失敗したらストールで数十クロックとか。意味ないっしょ。
cmp EAX, EBX
jne   LABEL1

それからJITで特定の方向にしか分岐しないなら分岐命令自体が削除されることもある。
983973:2009/06/24(水) 17:13:18
すいません。
ありがとうございました。
984デフォルトの名無しさん:2009/06/24(水) 17:13:54
>>981
今のCPUはパイプラインだし多重キャッシュだし投機だし、正確に計るのは無理というか、
前提条件が足りなさすぎ。
とりあえずコードが最適化されてて変数の内容が32bit以下の整数値なら
レジスタに入ってるはずだからifは単純にCMP reg,reg、JE xxxxあたりに置き換えられて
合計で1.0クロック。
スレッドの遷移はifの数百倍以上のコストがかかるから外部から調べるのは困難。

詳しいことは、ここにCPUのマニュアルがあるから嫁。
INSTRUCTION LATENCY AND THROUGHPUTのところ
http://www.intel.com/products/processor/manuals/index.htm
985デフォルトの名無しさん:2009/06/24(水) 17:24:53
誰か実際にやってみれ
1億回ぐらいループ回して平均
該当部分の逆汗も頼むぜ
986デフォルトの名無しさん:2009/06/24(水) 17:28:07
なんか難しい話してるね
俺からしたら宇宙語だわ
987デフォルトの名無しさん:2009/06/24(水) 17:28:53
初心者スレでやるこっちゃないわな
988デフォルトの名無しさん:2009/06/24(水) 17:29:14
>>985
言い出しっぺの法則
989デフォルトの名無しさん:2009/06/24(水) 17:29:49
誰か次スレ立ててくれ
うちはずっと規制中で手も足も出ん
990デフォルトの名無しさん:2009/06/24(水) 17:31:12
[>>1]>>980を踏んだ人は新スレを建てて下さい。

C#, C♯, C#相談室 Part53
http://pc12.2ch.net/test/read.cgi/tech/1245150671/
WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part4
http://pc12.2ch.net/test/read.cgi/tech/1245384489/
991デフォルトの名無しさん:2009/06/24(水) 17:41:47
構造って作った後から重複をまとめて基本クラスにするのを繰り返すのが普通なんですか?
それとも最初から基本クラスから考えて派生を作っていくんですか?
最低でも書く前にこれはベースにまとめていくのがいいと思って構造を作っていって、出来あがってからコード化するのが限界だと思うんですが
最初からベースクラスから考えられる人っているんですか?いるとしたら日本語から英語を勉強した人が頭で考えるのが英語になるぐらいすごいんですが
992デフォルトの名無しさん:2009/06/24(水) 17:55:24
いや基本的にそういう継承の使い方は間違い
993デフォルトの名無しさん:2009/06/24(水) 18:12:14
>>991
3行目から下、いらないと思うぞ。何が聞きたいのかポイントがボケる。

最初から継承ありきで考えるのは、大抵の場合、間違いのもと。
994デフォルトの名無しさん:2009/06/24(水) 18:18:31
ある機能が重複するなら、その機能をクラスに括り出してそのクラスのインスタンスをそれぞれが持つようにする。継承は不要。
最近は継承よりもそういうやり方の方が良いとされてる。
995デフォルトの名無しさん:2009/06/24(水) 18:26:20
基本的には同じ動作だけど、個性を持たせたいとか
オセロ作るときに初級AI、中級AIのために必要だなって思ったよ
でも、継承しなくてもできることはできるんだよねー
このときは継承じゃなきゃだめだってのがよくわからない
996デフォルトの名無しさん:2009/06/24(水) 18:29:22
単純に同じ配列、リストに入れたいときくらいかなあ
997デフォルトの名無しさん:2009/06/24(水) 18:35:47
つinterface
998デフォルトの名無しさん:2009/06/24(水) 18:37:45
うめ
999デフォルトの名無しさん:2009/06/24(水) 18:38:59
ポリモルフィズム使いたいときだけだな
実装の継承はまさに>>991のような難しさがあるから避けられる
そりゃControlみたいに完璧な設計ができるというならやればいい
1000デフォルトの名無しさん:2009/06/24(水) 18:39:36
継承は最後の手段って、あれは誰の言葉だっけ。マーティンファウラー?
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。