09/06/07 21:58:52
>>157 ← JITがどういう処理をしてるか分かってない奴。
160:デフォルトの名無しさん
09/06/07 22:00:47
>>158
反応しないでスルーできないのか? スルーしたら埋め尽くされないの。2ch初心者?
おまえみたいのがいるから荒れるんだよ。
161:デフォルトの名無しさん
09/06/07 22:02:12
>>158
スルーしろっつってんだよ。馬鹿か?
162:デフォルトの名無しさん
09/06/07 22:02:15
ほっとていも、ほっとかないでも酷有様、つか埋め尽くし犯人お前だろ >> 160
163:デフォルトの名無しさん
09/06/07 22:02:41
だまんねえと改行で埋めるぞ
だまれ
164:デフォルトの名無しさん
09/06/07 22:03:02
>>158
【魔力】書き込むと願いが必ず叶うスレ【強力】409
だろが
165:デフォルトの名無しさん
09/06/07 22:04:11
C++の人アタマおかし過ぎ
166:デフォルトの名無しさん
09/06/07 22:04:58
それにしても >>142 一人で必死すぎだろw
167:デフォルトの名無しさん
09/06/07 22:05:08
>>164
VB スレに誤爆すんなよw
168:デフォルトの名無しさん
09/06/07 22:05:31
"1"が他に置き換わるような設計してる時点でミスですよ僕に言わせれば
169:デフォルトの名無しさん
09/06/07 22:06:03
心療内科へいって治療してもらえ
170:デフォルトの名無しさん
09/06/07 22:06:22
クラック対策だろjk
171:デフォルトの名無しさん
09/06/07 22:08:37
メソッド内部で書かれたsは定数として処理されて出てこないよ
上でも下でも出力は一緒ね、メンテの問題だけね、変なやついるから相手すんなよ
172:デフォルトの名無しさん
09/06/07 22:10:14
出力が違うと思ってた奴は一人もいないのに偉そうに説明すんな。
173:デフォルトの名無しさん
09/06/07 22:11:01
>>171
分かってないな。そんな話じゃないだろ。
174:デフォルトの名無しさん
09/06/07 22:11:39
つまらん話で発狂するなよ
175:デフォルトの名無しさん
09/06/07 22:12:31
よほどコンプレックスがあるのだろう。
176:デフォルトの名無しさん
09/06/07 22:12:43
もりあがってまいりました
177:デフォルトの名無しさん
09/06/07 22:14:07
向上心なければどの言語でも無駄って事を知れ C++ の人
178:デフォルトの名無しさん
09/06/07 22:16:17
おい黙れって言ってるだろ
179:デフォルトの名無しさん
09/06/07 22:21:59
黙ったぞ
180:デフォルトの名無しさん
09/06/07 22:23:52
>>178-179
お前変過ぎる、精神病院へいけ、今すぐ
181:デフォルトの名無しさん
09/06/07 22:28:46
>>157
ふつうに考えてC#のコンパイル結果ってILの話だと思うぞ。
182:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/07 22:35:40
ディスアセンブル? バイナリをアセンブラにすることなんだが。
184:デフォルトの名無しさん
09/06/07 22:39:25
メソッドのインライン展開が行われたりするのは実行時なんだが、それを知っているんだろうか。
185:デフォルトの名無しさん
09/06/07 22:42:36
>>182
ILやメタデータって string s のローカル変数名を保持してんの?
もしそうなら恥ずかしい名前つけれないんだが。
186:デフォルトの名無しさん
09/06/07 22:45:18
>>184
そんなことは当たり前のことだから省略した。長かったからな。
>>185
そう。だから.NET用の難読化ツールとかが出回ってたりする。
前のスレでも話題になった。
187:デフォルトの名無しさん
09/06/07 22:46:22
>>185
保持はしていないね、直接定数をロードしている。
ちなみに const string s = 1; としてしまえばどちらも一緒。
188:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/07 22:50:03
フィールドと違って最適化で消えることはあるけど基本的には保持される
190:デフォルトの名無しさん
09/06/07 22:50:38
じゃあディスコンパイルしたらどうやって >>182 の sって名前を特定したんだ?
>>182 はガセ?
191:デフォルトの名無しさん
09/06/07 22:51:29
いちいちツッコミどころかC++厨房うぜぇーって感じだな
192:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/07 22:52:51
reflectorでぐぐれ
194:デフォルトの名無しさん
09/06/07 22:53:51
ああ、s2になっているのは、ローカル変数がたまたまsという
名前になっているのではないかと疑ったので変えてみた。
195:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/07 22:59:04
/oの有無の違いに決まってるだろjk
197:デフォルトの名無しさん
09/06/07 23:01:27
pdbファイルが同じディレクトリにあったらildasmが読んでるみたいだ
アセンブリ自体には含まれない
198:デフォルトの名無しさん
09/06/07 23:04:17
しかしなんで string s 使うか直書きするかの違いがILDの話になるんだと……
おかしくね?
199:デフォルトの名無しさん
09/06/07 23:04:40
試したらアセンブリ自体には含まれないな。冷や汗かいたぜ。
200:デフォルトの名無しさん
09/06/07 23:05:45
アホのC++坊よけには丁度いいかもしれんけど
201:デフォルトの名無しさん
09/06/07 23:08:33
結論:string s 推奨。
202:デフォルトの名無しさん
09/06/07 23:18:48
あんだけ荒れてたのにスレ止まった・・
203:デフォルトの名無しさん
09/06/07 23:22:07
C#の話題、C++であってもC#と関連する話ならいくらでもレス付けますがな
C++サイコーっていいたいなら巣に帰れって事
204:デフォルトの名無しさん
09/06/07 23:25:41
C++サイコーなんて主旨の書き込みはどこにもないわけだが。
一人必死でC++叩いてる奴が荒らしてただけだよ。
205:デフォルトの名無しさん
09/06/07 23:30:09
まったくこれだけ書き込みまくっていけしゃぁしゃぁと、死んでしまえw
206:デフォルトの名無しさん
09/06/07 23:34:10
一人汚いレスばかりする人がいますな。
207:デフォルトの名無しさん
09/06/07 23:37:31
C++の人さ、努力って大事だよ、ちゃんと勉強してC++使えるようになろうな
そしたら、こんなスレッドで嫌がらせなどしなくても自信もって生活できるようになる。
208:デフォルトの名無しさん
09/06/07 23:48:10
>>141はC++が初心者装った嫌味に見え
>>142が反応した
という流れじゃなかろうか
209:デフォルトの名無しさん
09/06/07 23:50:46
ちょっと話変わるけど、Visual studio 2010でC#のインテリセンス変わったよな。
インクリメンタルサーチ式になったけど、あれはもう旧式に戻らないのか?オプションに設定項目はなかったが
進化だとしても旧式も用意して欲しいもんだ
210:デフォルトの名無しさん
09/06/08 00:03:54
え?
211:デフォルトの名無しさん
09/06/08 00:15:42
>>207
そうやって煽ってるのはおまえ一人だけなんだが。さっさと消えろカス。
212:デフォルトの名無しさん
09/06/08 04:04:23
C#勉強中です。
Google LABSのソースコード検索をマニュアルの補助に使っているのですが、
ちょっと疑問に思うコードがあったので教えてください。
リソースの解放を確実に行うため、usingを使ってスコープを定義すると
いう方法があると思うのですが、そのコードではこう書かれていました。
SQLiteDataReader reader;
using (reader = command.ExecuteReader())
{
何かの処理
}
この様にusingの外にDataReaderを定義して、usingの終わりで確実に
Dispose()されるのでしょうか?
213:デフォルトの名無しさん
09/06/08 04:12:07
>>212
SQLiteDataReader reader;
try
{
}
finally
のように宣言することが推奨されている。
URLリンク(msdn.microsoft.com)
214:デフォルトの名無しさん
09/06/08 04:14:03
すまん変なところで送信してしまった。
SQLiteDataReader reader;
{
try
{
// 何かの処理
}
finally
{
if (reader != null) ((IDisposable)reader).Dispose();
}
}
と同等だけど
using (SQLiteDataReader reader = command.ExecuteReader())
{
// 何かの処理
}
のように宣言することが推奨されている。
215:デフォルトの名無しさん
09/06/08 04:14:22
>>212
using が実は現状確実にDispose してくれないという話的には Dispose され
ないと答えるけど、その話を除けば普通に
using(SQLLiteDataReader reader...)
とした場合と同等レベルには Dispose される。
これとそれの違いはスコープぐらいかな、意図がそれだけだと正直わか
らんが。
216:212
09/06/08 04:38:37
>>213-215
ありがとうございました。
GCがいつ実行されるか分からないというのは一応承知してます。
安心してusing内に書くようにします。
217:デフォルトの名無しさん
09/06/08 05:08:35
>>216
あー。GC とかは関係ない。
説明すると、現状の using には Abort されたときの耐性がない
という話。
インスタンスが生成された直後とローカル変数に代入されるまでの
間にスレッドが Abort されれば Dispose は呼ばれない。それも
含めて Finalizer が必要な理由にもなっている。
と思って今確認したら try の外でやってるし…なら try に入るまで
かな。
めったに問題になることじゃないので記憶の片隅においておくだけで
いい知識だが。
218:212
09/06/08 05:59:16
>>217
ありがとうございます。
今の自分の知識ではお話の半分ほどしか分かりませんが、
滅多に問題になることはないということも含めてメモっておきます。
219:デフォルトの名無しさん
09/06/08 11:26:26
あるフォームに対して、サイズ変更枠が付いたままタイトルバー有り無しの
切り替えをしたいと思い、フォームのコンテキストメニューから「切り替え」を
選択した際に、タイトルバーをなくす場合はフォームのTextを空にして
ControlBoxをfalseにしています。しかしControlBox=falseかつText=""
という操作をすると、それ以降Application.Exitで終了したときに
FormClosingイベントが呼ばれなくなってしまいます。
フォームの終了時に設定を保存したいのですが、終了処理はどこで
行えばいいでしょうか。よろしくお願いします。
220:デフォルトの名無しさん
09/06/08 13:03:06
>>219
操作中に例外が発生してるんじゃないかな。
そうすると何も起こらず終了しているように見えることがある。
コントロールの存在・状態チェックはしっかりやろう。
221:219
09/06/08 13:39:01
>>220
ありがとうございます。存在していないコントロールに触っているのかと思い、
原因を調べるために怪しい所を省いた以下のソースを実行してみたんですが
やはりフォームのTextを空にしてControlBox=falseとすると、FormClosing
のところにブレークポイントを設定してもヒットしなくなりました
URLリンク(sakuratan.ddo.jp)
こういう場合にはFormClosingイベント等は使えないのでしょうか。。。
222:デフォルトの名無しさん
09/06/08 13:41:22
>>221
というか、Application.Exit()じゃなくてメインのフォームをクローズするのが普通じゃないの?
223:デフォルトの名無しさん
09/06/08 13:48:16
>>>222
そうですね、よく考えたらサブのフォームからでも
MainForm.Close()ってすればいいんですよね
Application.Exitの事は忘れます。ありがとうございました
224:デフォルトの名無しさん
09/06/08 14:31:59
二つの配列を一つにまとめるにはどうしたらいいでしょうか?
int[] a = {1,2,3};
int[] b = {4,5,6};
↓
int[] c = {1,2,3,4,5,6};
225:デフォルトの名無しさん
09/06/08 14:47:35
c = a.Concat(b).ToArray();
226:デフォルトの名無しさん
09/06/08 14:59:34
225> 出来ました。ありがとうございます(_ _)
227:デフォルトの名無しさん
09/06/08 19:56:13
Window Formの初期化のタイミングとして、
1.コントラクタのInitializeComponent();の後、
2.Loadイベントハンドラ内、
3.フォーム表示直後のShownイベントハンドラ内
の3つがあると思います。
1,2と3はフォームが表示される前か後ろかという違いがありますが、
1と2ではどういう違いがあるのでしょうか?
228:デフォルトの名無しさん
09/06/08 20:07:05
newしたときに呼び出されるか表示とかしようとしたときに呼び出されるか
229:デフォルトの名無しさん
09/06/08 20:08:23
C#ってASP開発できるんですか?
230:デフォルトの名無しさん
09/06/08 20:14:18
ASP.netなら出来る
231:デフォルトの名無しさん
09/06/08 20:20:21
>>228
なるほど、ということは、
コンストラクタ→New後、フォーム表示前に一度だけ実行
Loadイベントハンドラ→フォーム表示前に実行。リロードしたら再度実行される。
Shownイベントハンドラ→フォーム表示後一度だけ実行(リロードしても実行しない)
くらいに考えとけば良いですか。
232:デフォルトの名無しさん
09/06/08 20:30:49
普通、Windows Forms にリロードという概念はない。
233:デフォルトの名無しさん
09/06/08 20:35:35
~Changedっていうイベントはオブザーバーパターンなんですか?
234:デフォルトの名無しさん
09/06/08 20:47:44
>>232
・・・もう一度マニュアル読んできます。
ありがとうございました。
235:デフォルトの名無しさん
09/06/08 20:50:26
イベントはイベントだろ
236:デフォルトの名無しさん
09/06/08 20:51:31
今日なんかあるの?
237:sage
09/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:デフォルトの名無しさん
09/06/08 21:38:16
public static List<T> a = new List<T>();
↑静的なListって可能なんですか?
どうやってメモリを確保しているんですか。
239:デフォルトの名無しさん
09/06/08 21:39:22
>>237
そのコードだけで判断しろってのも難しいが、ひょっとして
C# の Array(string[] とか) のインデックスは 0 から始まるぞ。
それはさすがにOK?
240:デフォルトの名無しさん
09/06/08 21:40:04
>>238
可能
起動時に自動で1度だけ呼ばれる
241:デフォルトの名無しさん
09/06/08 21:49:47
>>240
正確には、そのクラスが初めて使われるときね。
242:デフォルトの名無しさん
09/06/08 21:50:42
>>237
一応の確認だけど、そのFileSystemWatcherはVSでツールボックスからD&Dしたものだよね?
243:238
09/06/08 22:00:57
>>240-241
へー。
静的なのか動的なのか、分かったような分からないような…。
ありがとうございます。
244:デフォルトの名無しさん
09/06/08 22:01:22
初めに表示するメインフォームがアクティブにならずに起動することがある
ビルドして何もクリックしてないのにキャプションバーが灰色になってる
ウィンドウズのバグ?
245:デフォルトの名無しさん
09/06/08 22:11:04
すぐ Windows のバグ? とか聞く奴は、死んだ方がいいと思うよ。
246:デフォルトの名無しさん
09/06/08 22:13:14
2DMAPエディタを作ってみたいと思います。配列は必要というのはわかりました
どなたか知恵を貸してください。設計とか初めてなので><
247:デフォルトの名無しさん
09/06/08 22:17:57
アイコンエディタでも描いてろ
248:デフォルトの名無しさん
09/06/08 22:22:43
>>246
二次元配列使うとやりやすいと思う
int[,] ってやつ
後は
画像を分割して描画する(g.DrawImage)
バイナリ(orテキスト)でそのデータを保存する
保存したデータを読み込む
クリックした場所を取得する
等々
最低限上の機能は必要
そのほかマップの大きさだとかも必要だろうし
スクロールも必要
249:デフォルトの名無しさん
09/06/08 22:30:06
StreamReader(じゃ無くてもいいのですが)を利用して
単純にファイルを開くだけの処理を記述した場合、
1Kと100Mのファイルでは、オープンにかかる時間は違うものでしょうか?
挙動を見ると、単にファイルを開くだけ(Readしない)だと、
どちらも大して時間がかからないのですが、
大きなファイルは開くだけでも時間がかかるといわれまして。
試したところでは、大差ないので、読み込まずに開くだけであれば差は無いのかと
思ったのですが、違いがわかるかた教えていただけますか?
250:デフォルトの名無しさん
09/06/08 22:32:48
言われたんだろ?言った奴に根拠を聞けよ
251:デフォルトの名無しさん
09/06/08 22:34:39
>>243
static と言いつつ、静的(コンパイル時決定)じゃない。
あれにstaticって名前が付いてるのはC++を意識しすぎた結果。
実際にはクラス変数とでも呼ぶべきもの。
252:デフォルトの名無しさん
09/06/08 22:35:07
>>249
違わない
その人は何か既成のアプリと勘違いしてるんじゃない?
253:デフォルトの名無しさん
09/06/08 22:36:17
>>249
それはファイルシステム次第、ドライバ次第だな、StreamReaderの仕事はOSにリクエスト出すまで
OSの仕事はドライバにリクエストを出すまでだ。
254:デフォルトの名無しさん
09/06/08 22:39:25
ファイルを開いただけで読むことをしないんじゃ、
基本的にファイルサイズによる差は起こらないはずだよね。
ほかの人の言ってるようにデバイスによる差(ネットワーク上のファイルとかフロッピーディスクとか)による差は当然ある。
255:デフォルトの名無しさん
09/06/08 22:43:48
>>252-254
即レスありがとうございます
やはりそうですか。助かりました。
ファイルシステムやドライバをもっと勉強してみます。
256:sage
09/06/08 22:45:24
>>239
なるほど。
たしかにArrayのインデックスは0からで、
0(つまり1行目)ではなくて2行目から処理してますね。
それはそれでありがとうございますです。
しかし、やはりファイル更新の監視はうまくいかず、
該当するtmp.txtを2回更新すると、2回目には、例外が発生します。
別のプロセスで使用されているため、
プロセスはファイルtmp.txtにアクセスできません。
だそうです。
257:sage
09/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:デフォルトの名無しさん
09/06/08 22:47:14
>>256
その例外が言ってる通りじゃないか。
ほかのプロセスが掴んでたらファイルが開けないことがある。
259:デフォルトの名無しさん
09/06/08 22:51:04
>>255
勉強する必要はないかと、当の本人に聞くなり、問題のブツで試してみればいい。
組み込み用のハードディスクに突然の電源断に耐えられるように設計された、書き込みバッファの無いHDが
そういう問題があって、スレッド使って対処したという苦労話は聞いたことがある、ただ.NETが取り扱うハードウェアというと、
通常のWindowsかモパイルCE系だと思われるが、そんなハードディスクなど聞いたことが無いね、
だからといって無いとは言いきれないので、問題のブツで確かめてみるしかないのでは。
260:sage
09/06/08 22:57:14
>>258
なるほど。
System.threading.Thread.Sleep(1000);
でとりあえず解決しました。
サンクスです。
261:デフォルトの名無しさん
09/06/08 23:09:11
すいません
C#で簡単なアニメーションさせたいので
bmp等の画像描画処理について詳しく書かれているサイトってわかりますか?
初心者なのでできるだけ詳しく書かれているところがいいんです。
よろしくお願いします。
262:デフォルトの名無しさん
09/06/08 23:14:29
他のクラスからprivateなメソッドを無理やり使う方法を教えてください
263:デフォルトの名無しさん
09/06/08 23:15:13
>>262
リフレクション
264:デフォルトの名無しさん
09/06/08 23:25:18
>>263
サンプルコードありますか?
265:デフォルトの名無しさん
09/06/08 23:28:08
いくらでもあるよ
266:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/08 23:28:52
取りあえず、ヒントもらったらググる位しようや
268:デフォルトの名無しさん
09/06/08 23:31:08
このスレには優しい人とそうでない人がいます。
269:デフォルトの名無しさん
09/06/08 23:31:20
>>264
何勝手に乗ってきてるわけ?
270:デフォルトの名無しさん
09/06/08 23:31:57
んなもん当たり前だろ
271:デフォルトの名無しさん
09/06/08 23:32:19
MSDN にもあるし、いろんなところにあるよ。
Reflection とか MethodInfo とかで探してみ。
272:デフォルトの名無しさん
09/06/08 23:32:47
ありがとう。
273:デフォルトの名無しさん
09/06/08 23:37:32
どんどんラベルを追加してるだけのような。
274:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/08 23:46:33
ありません。
276:デフォルトの名無しさん
09/06/08 23:46:40
>>248
ありがとうございます。やってみます!
277:デフォルトの名無しさん
09/06/08 23:54:22
>>274
インタプリタなら速くなるのは分かるがVB.NETでも速くなるのかな。
速くなるならC#でも深いところにあるクラスは一度ローカル変数に代入してからのほうが速い?
278:デフォルトの名無しさん
09/06/08 23:55:31
>>241
「そのクラスにアクセスするより前に一度だけ実行される」ことが
保障されているだけじゃなかったか?
>>274
全く同じ機能はない
初期化時限定のオブジェクト初期化子くらい
279:デフォルトの名無しさん
09/06/08 23:57:22
つーか、With って .NET ではシンタックスシュガーじゃなかった?
280:デフォルトの名無しさん
09/06/09 00:00:08
>>278
> 「そのクラスにアクセスするより前に一度だけ実行される」ことが
> 保障されている
規格上はそうなってた気がする。
実際は、たいてい直前。
281:デフォルトの名無しさん
09/06/09 00:11:39
>>277
多分JITコンパイルで最適化されるんじゃないかなその程度
282:デフォルトの名無しさん
09/06/09 00:35:09
ないんですか。残念です。
この程度なら、プリプロセッサあたりで処理してくれてもいいと思うのは私だけでしょうか。
コントロールの初期設定とか、同じ名前空間やクラス名がずらっと並んでるのを見ると、
もうちょっと楽にコーディングできる手段があってもよさそうに思うのですが。
283:デフォルトの名無しさん
09/06/09 00:42:23
インテリセンスがあるからコーディングの手間はさして変わらん。
コードが汚くなるからwithを採用しない言語は多い。
284:デフォルトの名無しさん
09/06/09 00:47:33
>>282
初期設定なら似たような事はできる
var tmp = new Hoge() { A = 10 , B = 30 };
A,B はHogeのプロパティーまたは変数
285:デフォルトの名無しさん
09/06/09 00:54:53
VBにあってC#に無い寂しい機能はLINQToXmlのXMLリテラルかな。
これがあったら、withどころか究極のデータセッティングができるんだけれど……
286:デフォルトの名無しさん
09/06/09 00:57:10
>>284
なるほど、そういう書き方もできるんですね。勉強になります。
287:デフォルトの名無しさん
09/06/09 01:00:41
>>277
そうみたいだよ。
URLリンク(www.atmarkit.co.jp)
288:デフォルトの名無しさん
09/06/09 01:06:22
>URLリンク(www.atmarkit.co.jp)
なるほどね、C#ならスコープ使えって事か
{
var a = hoge.member;
a.Prop1 = 10;
a.Prop2 = 10;
}
289:デフォルトの名無しさん
09/06/09 01:13:13
>>287
確かに、オブジェクトをいちいち作ってやれば同じことになりますね。
withほど簡略化はできませんが、多少は楽が出来そうです。
コード的にもメリットがあるみたいですし。
290:デフォルトの名無しさん
09/06/09 01:13:41
リンク先のような場合、
ds.Tables("Customers").Rows
がそれなりに処理重そうだから無意識に一度ローカルに代入してるな。
ただ >>288 のような軽いメンバアクセスはそのまま見ちゃってるなぁ。
291:デフォルトの名無しさん
09/06/09 01:21:50
イベントで this.xxxでアクセスするより senderをcastするほうがいいってことか。
292:デフォルトの名無しさん
09/06/09 01:25:30
キャストの方がコスト高いだろ
293:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/09 01:50:33
拡張プロパティってどう書くの?
295:デフォルトの名無しさん
09/06/09 01:55:27
書けない
296:デフォルトの名無しさん
09/06/09 02:14:52
ファック!ファック!ファック!!
297:デフォルトの名無しさん
09/06/09 03:09:25
クラスつくるとき
class testint{
private int a;
}
ってやって
testint test=new testint()
なんで
testint test
だけで実装できないんだ。わざわざ無駄な手間かけさせる意味は?
あと、なんでtestint()の最後、何もない括弧をつけなきゃいけんのだ。
298:デフォルトの名無しさん
09/06/09 03:17:10
>>297
CかC++から来た人?もしそうなら、
クラスは常にポインタ型(のようなもの、ポインタ演算はない)。newしなければnullが入っている。
という短い文章で分かってほしい。
testint test=new testint()と打つのは、Visual Studioとか入力支援が良くできたところで書けば案外大した手間でない。
クラス名を2度書くのが嫌ならvarがある、ローカル変数限定だけど。
()が要るのはなぜ?というのは俺も思うところだけど。
299:デフォルトの名無しさん
09/06/09 03:24:51
コンストラクタだから。引数のないメソッドの()も省力しないだろ。
300:298
09/06/09 03:27:50
>>299
ありがとう、納得した。
C++はnew hogeで通るし、引数があっても括弧を省略できる場合のある
VBとか使っていたからそこまで考えが及ばなかった。
301:デフォルトの名無しさん
09/06/09 03:41:29
>>298
c++を見てみました。
c++なら
class testint{
private:
int kazu;
}
testint test;
test.kazu=10;
これでいいのか・・・
newとかいうのはオブジェクト指向で必ずしも必須というわけじゃないんだね。
コンストラクタも自動的に呼び出されるのか。
c#とはずいぶん違うんだね。初心者にはc++のがいいのかな
302:デフォルトの名無しさん
09/06/09 03:44:14
c++のnewはヒープに作る場合
303:デフォルトの名無しさん
09/06/09 06:52:25
c#のnewはどこのメモリを使うん?
304:デフォルトの名無しさん
09/06/09 06:57:08
字は読めても話の流れが読めない人って誰?
305:デフォルトの名無しさん
09/06/09 08:46:14
>>303
C++ は new の有無でスタックはヒープかわかれるけど、
C# は class か struct かで分かれる。
class なら new したのはヒープに、
struct なら new は単なるコンストラクタ呼び出し、スタックに取られる。
struct でもわざわざ new しないと行けない理由は、
その方が構文解析が楽(後々他の構文追加しやすい)とか、
初期化し忘れを防ぐためにわざわざ面倒な構文にしてあるとか、
class とそろえるとか、そういう理由だと思う。
306:デフォルトの名無しさん
09/06/09 10:11:50
struct は new してもいいがしなくても構わないぞ、ただし全メンバーをセットしてからでしか使えないが
struct の new は引数無しなら、全フィールドに0入れるよという指示で、それ以外なら指定の定型初期化を処理するという事ではなかろうかと。
最近は default というキーワードができて、二重機能っぽくなってるいけれど、これはジェネリックの都合かなと。
307:デフォルトの名無しさん
09/06/09 10:16:51
それと、Cでいう所の自動変数を宣言する場所で構造体を宣言すると、スタックに乗りそうな予感がするものだが
たとえば
void Test()
{
int tmp;
Action a = () => { tmp = 3 ; };
}
このtmpは、スタックに取られているとはどうにも思えない
内部的には勝手JITの勝手というのが実態かと。
308:デフォルトの名無しさん
09/06/09 10:23:10
HttpWebRequestクラスでリクエストヘッダーを読み取ったりするとき
UserAgentとかkeep-aliveプロパティは取得できるのですが
(<HttpWebRequest.UserAgent>プロパティ,<HttpWeqRequest.KeepAlive>プロパティ)
Host,Accept-Language,Accept-Encoding,Accept-Charsetプロパティが読み取れません。
読み取り方をよろしくお願いします。また、ヘッダー情報を編集してリクエストストリーム
に流せるかどうかも教えていただきたいです。
309:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/09 10:51:23
>>308
Requestでヘッダを「読み取る」必要があるのかどうかって話はあるが
直接プロパティになってないヘッダはHeadersプロパティから取得設定できる
311:デフォルトの名無しさん
09/06/09 11:09:11
>>309
セクション区切り記号「;」を使ったカスタム書式指定かね
{0,5: 0.00;-0.00}
ところで小数点以下2桁有効だとフィールド幅4は意味がないと思うけど
312:デフォルトの名無しさん
09/06/09 11:12:44
>>307
それはラムダ式(クロージャ)が影響している。
() => { } を内包するクラスが暗黙に作られてそのメンバにtmpがあるはず。
313:デフォルトの名無しさん
09/06/09 11:17:12
>>311
ごめん実はそのあたりよくわからなくてテキトーに書いてました
もっと詳細を言うと、x,y,zを持つポイントクラスがあって
始点:( x1, y1, z1 )
終点:( x2, y2, z2 )
みたいな感じで小数点以下3桁で計6桁ぐらいで書き出したいときの
桁揃えという話でした。詳しく書かなくて申し訳ない。
314:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/09 11:42:03
とりあえずHttpWeb「Response」だよな?
316:デフォルトの名無しさん
09/06/09 11:48:48
>>315 げ、ひょっとして自分のリクエストのヘッダーを確認するのって
HttpWebRequestからはできないんっすか。。???
ちょっとレスから拾ってみたいと思います。。。
317:デフォルトの名無しさん
09/06/09 11:58:38
事情は了解
それってデバッガでステップ実行すればよくね?
あとは別のパケットモニタアプリ使うか
318:デフォルトの名無しさん
09/06/09 11:59:09
WireSharkか何かでパケットキャプチャして本当にブラウザと同じリクエスト飛んでるか調べたら?
その方が手っ取り早い気がする。
319:デフォルトの名無しさん
09/06/09 11:59:38
リロードしてなかった。すまぬ。
320:デフォルトの名無しさん
09/06/09 12:06:44
>> 318
WireSharkは友人にも進められて検討してるのですが、
修正の必要が出てきたときにどうやって書き込めばいいのでしょうか?
コードサンプルがあるとありがたいっす。
321:デフォルトの名無しさん
09/06/09 12:14:49
HttpWebRequest req //略
req.Headers.Add(HttpRequestHeader.AcceptEncoding,"gzip");
// req.Headers[HttpRequestHeader.AcceptEncoding] = "gzip"; も可
何が困ってるのかイマイチ伝わんね。
322:デフォルトの名無しさん
09/06/09 12:47:50
321>>
文章力なくてすみません。。
321さんが書いて下さったみたいなコードサンプルがようするに欲しかったんです^^;
レスありがとうございます。
323:デフォルトの名無しさん
09/06/09 12:55:26
ええええええええええええええええええええええええええええええええええええええええええええええええ
324:デフォルトの名無しさん
09/06/09 13:07:11
うるさい
325:デフォルトの名無しさん
09/06/09 13:23:19
321>
あの~、やってみたんですけど
req.Headers.Add(HttpRequest.Header.Host, "HostName");
って書くと'Host' ヘッダーを直接変更することはできません。
って出ちゃうんですけど。Hostの書き換えは無理??
326:デフォルトの名無しさん
09/06/09 13:25:42
>>325
お前死ぬの?死にたいの?叩き殺されたいの?
URLリンク(msdn.microsoft.com)(VS.80).aspx
解説
Headers コレクションは、要求に関連付けられているプロトコル ヘッダーを格納します。
Headers コレクションには格納されず、システム、プロパティ、またはメソッドのいずれかで設定される HTTP ヘッダーの一覧を次の表に示します。
Host システムにより現在のホスト情報に設定されます。
327:デフォルトの名無しさん
09/06/09 13:29:58
いいよ
1から10まで聞かないとできない奴は排除したれ
328:デフォルトの名無しさん
09/06/09 13:36:29
>>1
329:デフォルトの名無しさん
09/06/09 14:29:34
public はクラスの外からのアクセスを許可し、private は許可しないみたいですが
それならpublicだけでよくないですか?
330:デフォルトの名無しさん
09/06/09 14:34:04
人間はミスする生き物なので、触れて欲しくない要素は外部に公開しないようにしております。
全員が全員ドキュメントをキチンと読んで、万に一つのミスも犯さないようなパーフェクト人間であれば全てpublicでも良いでしょうね。
331:デフォルトの名無しさん
09/06/09 14:47:30
時そばで、勘定中にカウンタを外部から書き換えられちゃったから
1文ごまかされちゃったんだよね。
332:デフォルトの名無しさん
09/06/09 14:51:35
>>330-331
レス感謝です。
333:デフォルトの名無しさん
09/06/09 14:55:55
>>331
感心したわ。
334:デフォルトの名無しさん
09/06/09 19:16:49
C# 2008で質問です。
非表示のフォームにDataGridViewを貼り付けてあります。
ここにReadXMLでデータを読み込んで、DataGridViewからデータを取り出そうとしたら
どのセルも空白のままでした。
一度でもフォームを表示すれば、そのタイミングで実際の読み込み動作が行わて
セルにデータが入るのですが、
非表示のままでデータをDataGridViewに反映させる方法を教えてください。
335:デフォルトの名無しさん
09/06/09 19:26:21
DataSet使おうよ…
336:デフォルトの名無しさん
09/06/10 03:18:40
VCEEでPen p=new Pen()をつくって
Form1にg.drawline(p,0,0,100,100)とかやったら
書けるんだけど、
画面切り替えたら消えちゃうんだけど消えないようにするにはどうやるの?
337:デフォルトの名無しさん
09/06/10 03:22:15
また描く
もしくは,なんかDoubleBufferみたいなプロパティがあればtrueに
338:デフォルトの名無しさん
09/06/10 03:22:59
Paintイベントで描く
339:デフォルトの名無しさん
09/06/10 03:26:06
>>337
なんか他にも設定する必要ありそ
URLリンク(www.google.com)
340:デフォルトの名無しさん
09/06/10 09:25:21
ソリューションエクスプローラー
ソリューション’game’(1プロジェクト)
└game
├ソースフェイル
│├hello.cpp
│└helo2cpp
├ヘッダーファイル
└リソースファイル
となっています。
helllo.cpp
#include <stdio.h>
int main(void)
{
printf("こんにちは!\n");
return 0;
}
341:340の続き
09/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:デフォルトの名無しさん
09/06/10 09:31:01
スレ違い
どっかで聞き直すならエラーぐらい書けよ
343:デフォルトの名無しさん
09/06/10 09:32:34
mainは一つでなければなりません。
344:デフォルトの名無しさん
09/06/10 10:07:46
>>343
そうですか。よくわからないけど研究してみます。
345:デフォルトの名無しさん
09/06/10 10:28:53
C++の基礎を一通り勉強してみて、やっぱりC#にしようか悩んでるのですが・・・
作りたいアプリはあるウェブサイトの更新をするアプリです。
HTMLフォームのユーザビリティに嫌気がさしてきたもので。
スクリプト言語ですがPHPとかActionScriptとかJavascriptを仕事で使ってます。
JAVAもできます。
条件としては
1、オブジェクト指向でプログラミングできること。
2、なるべくwindowsに色々インストールしなくても使えること。
3、今後も役に立ちそうな言語であること
C#って.NETフレームワークが必須なんですよね?
C#って.NETフレームワークがインストールしてあったら、
他に何かランタイム無しで動くのですか?
2はインストーラーを作ればそれほど気にすることはないって聞いたけど
そういうもんでしょうか?
346:デフォルトの名無しさん
09/06/10 10:45:56
.NET2.0ターゲットならたいがいランタイムは入ってるからそんなに気にしなくていいよ
少なくともJavaよりは嫌われない
347:デフォルトの名無しさん
09/06/10 10:51:00
ClickOnceインストーラを使うのであれば、依存関係は勝手に作ってくれるしランタイムも言語別の細かいところも自動。
自分が何か手をいれる必要はないので意識はしなくてもいいし、自分はした事が無い。
348:デフォルトの名無しさん
09/06/10 10:54:11
Silverlight使えば?
Webの知識活かせるしクロスプラットフォームだしランタイム超小さいよ
349:デフォルトの名無しさん
09/06/10 10:58:17
347に追加、C++からというならひょっとすると、C/C++コードとの相互運用を入れているかもしれないが、これが入っている時はClickOnceが使えないので注意。
一般のインストーラを使って全部手動でやるきる必要がある。
それとClickOnceインストーラというのは、今はそう呼ばれていないかもしれない、プロジェクトのプロパティーの発行タブで設定して作れるインストーラの事。
350:デフォルトの名無しさん
09/06/10 12:56:24
>>345
まあHTMLフォームの代わりに使いたいと言ってるんだから、
ネイティブコードのモジュールを使いたいなんてことはそうそうないだろ。
.NETはメジャーな画像形式なら最初から扱えるし。
普通にC#でフォーム作って必要な機能を用意すればいいんじゃないかな。
ClickOnceええよ。
イメージとしてはサーバーに置かれているソフトを
ブラウザのローカルキャッシュにコピーして、そこで起動する感じ。
自作のフリーソフトをzip版とClickOnce版と両方提供してるけど、
ClickOnceならVSからリリースするだけで、zipをアップロードする必要もないし。
351:デフォルトの名無しさん
09/06/10 20:14:19
>>349
> 347に追加、C++からというならひょっとすると、C/C++コードとの相互運用を入れているかもしれないが、これが入っている時はClickOnceが使えないので注意。
> 一般のインストーラを使って全部手動でやるきる必要がある。
ダウト。やりようによってはできる。
352:デフォルトの名無しさん
09/06/10 21:36:43
>>351
実行時に別のインストーラ起動するって奴だろ、ClickOnceのHowToに書かれていたのでやってみたが
凄いめんどくさいぞ、それにそれをすると自動更新は役立たずになるし
353:デフォルトの名無しさん
09/06/10 21:44:10
MSのサイトにも書かれていたが、ClickOnceインストーラとmsiインストーラの使い分けの基準として
.NETの範囲で収まっているかどうかという所がポイントだと思われる
無理をしてClickOnceを使うよりはmsiの方がシンプルになるケースは少なくない。
354:デフォルトの名無しさん
09/06/10 21:44:43
Google Chrome でも使ってるけどな。>ClickOnce
355:デフォルトの名無しさん
09/06/10 21:48:53
ClickOnceはお手軽インストーラではあるけれども万能インストーラではないからな
356:デフォルトの名無しさん
09/06/10 21:49:37
>>351
違うだろ。C/C++ コードとの相互運用って、P/Invoke とかだろ?
別に ClickOnce アプリでも、P/Invoke やら COM Interop やらできるわけだが。
357:デフォルトの名無しさん
09/06/10 22:26:05
ClickOnceってサイトに来てもらえなくなるんじゃないの?
有料ソフトならいいけど
358:デフォルトの名無しさん
09/06/10 23:18:33
>>357
どういう意味だ?
359:デフォルトの名無しさん
09/06/10 23:31:00
C#を勉強しだして業務アプリは大体こなせるようになりました
趣味でTelnetクライアントやFTPクライアントを作ってみたいのですが、
何か参考になる書籍やサイトがあったら教えてください
RFCは勉強中です
360:デフォルトの名無しさん
09/06/10 23:42:08
RFCがまともなんでないかい
Telnetのネゴシエーションプロセスとか全く無いのとか
FTPはpassive対応してなかったりcontrolとdataの二本が必ずセットになってたりする
361:デフォルトの名無しさん
09/06/11 00:00:30
C#勉強しようと思ってるんですけど、とりあえずTurbo C#とか
入れればいいんでしょうか?
とりあえずサンプルとかをコピペして動くことを確認したいです。
作ろうとしてるものとか目標とかは今のとこありません。
あとお金も無いんですけど、
なんか購入する必要ってあるんですか?
362:デフォルトの名無しさん
09/06/11 00:03:19
妙なこだわりがないならVisual C# 2008 Express Editionにしておけ
買う物は特に必要なし
363:デフォルトの名無しさん
09/06/11 00:03:34
>>361
C#する前に仕事しろ
364:デフォルトの名無しさん
09/06/11 00:03:48
>>361
VC# Express入れればいい
365:デフォルトの名無しさん
09/06/11 00:26:12
Formを回転させたいのですがヒント下さい。
WPFだとあるかな?と思ったけど、ぐぐってもそれらしい情報が見つかりません。
#DirectXの範疇になるのでしょうか?
366:デフォルトの名無しさん
09/06/11 00:26:13
ツールボックスにあるポインターってなんすか?
367:デフォルトの名無しさん
09/06/11 00:30:06
ポインターとはポインターです、糞して寝てください
368:デフォルトの名無しさん
09/06/11 00:34:21
>>362
>>364
ありがとうございます!調べてみます!
>>363
仕事はしてます!契約がなくて社内ニート中ですけど!
369:デフォルトの名無しさん
09/06/11 00:41:21
どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッドなのに厳しいっすね
370:デフォルトの名無しさん
09/06/11 00:41:59
質問したいんじゃなくて喧嘩うってんだろw
371:デフォルトの名無しさん
09/06/11 00:42:27
つまり、金を貰いつつ社内でC#のお勉強か!羨ましい限りだな。
>>365
WPFならコントロールの回転はできるが、ウィンドウ自体の回転はできなかったと思う。
372:デフォルトの名無しさん
09/06/11 00:44:50
何で教えてくれないのか不思議で仕方ないっす
373:デフォルトの名無しさん
09/06/11 00:47:16
リアルでぶんなぐられないように十分注意することだ
374:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/11 02:15:58
private System.Windows.Forms.PictureBox[] pictureBox;
がnull
376:デフォルトの名無しさん
09/06/11 02:16:34
デバッガで追っかけてけばすぐわかるよ
「自動変数」タブな
377:デフォルトの名無しさん
09/06/11 02:31:59
pictureBoxは何で初期化してないの?
378:デフォルトの名無しさん
09/06/11 02:39:30
早速サンキューです。
すばやっ。
助かります。
pictureBox = new PictureBox[5];
を追加して、無事表示できました。
ところで何度見ても、自動変数タブがないんですけど、…。
左から、ローカル、ウォッチ、呼び出し履歴、イミディエイトウィンドウ、出力。
どこに消えたかご存じないですよね?
379:デフォルトの名無しさん
09/06/11 02:45:49
ブレイク中のメニューのデバッグ>ウィンドウにあるはずだが
380:デフォルトの名無しさん
09/06/11 02:54:13
>for (int i = 1; i < 5; i++)
ここは大丈夫?
pictureBoxは0から4までの5つの要素のうち
1から4までの4つを使うことになるわけだけど
381:デフォルトの名無しさん
09/06/11 04:03:24
文字列の配列をstirng(羅列string, string, string, ...)に変換するにはどうすればいいですか?
382:デフォルトの名無しさん
09/06/11 04:30:00
日本語でおk
区切り文字を挿んで文字列を連結したいって事なら、string.Join
383:デフォルトの名無しさん
09/06/11 09:02:29
private void button1_click(object sender,Eventargs e)
の()の中のobject sender,Eventargs e
って何ですか
384:デフォルトの名無しさん
09/06/11 09:07:17
senderにはイベントを発生させたオブジェクト
eには必要に応じてイベントに関する情報
が入ってる
385:デフォルトの名無しさん
09/06/11 09:07:52
イベント送信者とイベント引数
386:デフォルトの名無しさん
09/06/11 09:34:27
しーぷっしゃー
387:デフォルトの名無しさん
09/06/11 09:44:18
らめぇ
388:デフォルトの名無しさん
09/06/11 11:25:10
あざっす
389:デフォルトの名無しさん
09/06/11 12:44:30
テキスト(たとえばtextBox)と画像(たとえばpictureBox)をまとめて扱う(表示とか移動とか削除とか)にはどうしたらよいですか?
ボタンなら、ボタンの背景(BackgroundImageプロパティ)にjpgファイルを指定できるので、表示するときに一度に表示できます。
textBoxのプロパティを見ても、背景のイメージを設定できないみたいなので…
390:デフォルトの名無しさん
09/06/11 12:46:52
ユーザーコントロール作ってまとめたら?
391:デフォルトの名無しさん
09/06/11 12:53:40
文字列の後ろを透けさせて背景画像を表示するのは無理
TextBoxそのものを自作するかWPFへどうぞ
392:デフォルトの名無しさん
09/06/11 13:48:09
>>390
サンクス。ユーザーコントロールというのはまだ作ったことがないので、勉強がてらやってみます。
>>391
サンクス。やっぱり。
でもまあ今回は、背景が単色なので、なんとかFormベースでやってみます。
TextBoxそのものの自作って、ユーザーコントロールってことですよね?
ところでWPFで、ここみたいにフランクに質問できるとこってないですか?
393:デフォルトの名無しさん
09/06/11 13:57:14
質問があります。
サムネイルベースのファイラーみたいなものを考えています。
サムネイルをウィンドウ内でドラッグ&ドロップして配置を移動したいです。
その場合、ドラッグ&ドロップの処理で必要なことは…。
・コントロール(pictureBoxとか)をドラッグ可能にする。
・フォームでドロップを受け付けるようにする。
かと思います。
フォームでドロップを受け付けるのは、
・AllowDropプロパティをTrueにする。
・Form1_DragEnterのイベントハンドラを作る。
でよいかと思うのですが、
Q1 コントロールをドラッグ可能にするには、なにをすればいいんでしょう?
コントロールを移動すると、コントロール同士が重なることがあります。
そのとき、
Q2 単純に重ねて表示したいときには、イベントハンドラはForm1_DrogEnterだけでいいんですか?
394:デフォルトの名無しさん
09/06/11 14:07:54
Control.DoDragDrop使え
395:デフォルトの名無しさん
09/06/11 14:16:26
>>392
>TextBoxそのものの自作
ユーザーコントロールじゃなくてControlから直接派生するカスタムコントロール
描画も入力も全部自前で書くガチ自作
396:デフォルトの名無しさん
09/06/11 15:12:59
継承ってのは機能の追加しかできないの?
たとえば
myclass1が10個の変数と3個の関数を持ってるとして
それを引き継いだmyclass2は
7個の変数と4個の関数を持ってるとか
できない?
397:デフォルトの名無しさん
09/06/11 15:13:24
myclass2をmyclass1として扱いたい場合どうするんだ
398:デフォルトの名無しさん
09/06/11 15:16:31
object思考の基礎をやり直したほうがいいんじゃないか?
myclass1やmyclass2をちゃんとobjectとして切り出せてないからややこしくなる。
399:デフォルトの名無しさん
09/06/11 15:22:34
>>396
そういう場合はclass1とclass2から共通な部分を取り出して新たな基底クラスを作るのがデフォ
今
class1 - class2
↓こうする
baseclass - class1
|_class2
基底クラスのメソッドやフィールドを消せたりら、上位クラスへのキャストができないのだわ
FileStreamをStreamにキャストしたりとかね
400:デフォルトの名無しさん
09/06/11 15:55:18
Office2007が入ってるとTextBoxRendererやVisualStyleRendererのTextBoxが標準のルックスじゃなくなるんだけどどうすればフォームに配置しているTextBoxと同じ用に描けるの?
Application.EnableVisualStyles()をコメントアウトってのはナシで。
この際Win32APIでもなんでもいいから教えて。
401:デフォルトの名無しさん
09/06/11 18:51:26
画像の移動の件です。
「Control.DoDragDrop」でぐぐって、
解説サイト見ながらプログラムを作ってみたんですが、
完全にどつぼにはまってます。
どっかにプロジェクトをアップロードしたら、このスレで添削してもらえますか?
402:デフォルトの名無しさん
09/06/11 18:54:01
ListViewじゃダメなの?
403:デフォルトの名無しさん
09/06/11 19:05:01
ListViewだと、表形式での表示になると思います。
エクスプローラでいうところの表示-縮小版のような形で操作したいのです。
404:デフォルトの名無しさん
09/06/11 22:02:37
C#で他のプロセスのコマンドライン引数を取得したいのですが、
なにか方法ありますか?
たとえばWordのプロセスが開いているファイルのPath+FileNameを取得したい。
405:デフォルトの名無しさん
09/06/11 22:11:41
>>404
URLリンク(d.hatena.ne.jp)
406:デフォルトの名無しさん
09/06/11 22:13:11
>>405
ありがとう!
407:デフォルトの名無しさん
09/06/11 22:24:33
WMIでWin32_Process使うのが一番楽な希ガス
408:デフォルトの名無しさん
09/06/12 09:58:49
>>399
それがいい場合もあるが、まずそれというのはおすすめ出来ない。
409:デフォルトの名無しさん
09/06/12 10:15:09
そういうことになるから継承は良くない
410:デフォルトの名無しさん
09/06/12 11:05:24
他のアプリケーションのIMEの状態を取得したいのですが、
なにか良い方法ありませんか?
すでにC#ではないと思いますが。。。
411:デフォルトの名無しさん
09/06/12 11:10:54
よくわかんないけどプロセスにアタッチしてImmなんちゃら関数で取れないかな
412:デフォルトの名無しさん
09/06/12 12:51:20
LAN内の別のマシン(実行マシン)で実行中の実行ファイル(exe)をバージョンアップするときに、開発マシンからコピーして上書きしたいのですが、実行中なのでロックされていてできません。
ロックせずに実行する実行ファイルを作ることってできるんでしょうか?
あるいは、開発マシンからkillするのでもよいのですが、そんなことってできましたっけ?
あまりC#とは関係ないかも…。
413:デフォルトの名無しさん
09/06/12 13:16:10
>>412
できない。Unixだと上書きだけならできるが(再起動はもちろん必要)
で、基本常に実行し、必要なときに落としたりできるのがWindowsのサービスの仕組み。利用しない手はない。
リモートデスクトップで直接終了作業する手はどうだ?
414:デフォルトの名無しさん
09/06/12 13:32:18
なるほど。そこでリモートデスクトップですね。
なるほど~。
サンクス。
いまも別のマシンが別の階の別の部屋にあって、デバッグしながらいったりきたりで、いい運動になってました。
415:デフォルトの名無しさん
09/06/12 13:35:05
>>405
これって、C++(?)のコードですよね?
C#のコードor dll or exeはないですか?
416:デフォルトの名無しさん
09/06/12 13:37:33
かまわずWMIというかSystem.Management.Instrumentation使えばいい
417:デフォルトの名無しさん
09/06/12 14:05:49
Instrumentationいらないだろ
418:417
09/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:デフォルトの名無しさん
09/06/12 14:34:46
>>415
C#の相互運用機能を使ってC#に書き換えればいいじゃん
>>405にC++でしか実現できない点は1つもないよ
それができいなら、おとなしくWMI使っとけ
420:デフォルトの名無しさん
09/06/12 16:30:48
>>418
ぜんぜん異議なし。
>>419
は~い。おとなしく使ってます。
それはそれとして、相互運用機能なんてので、C++のコードをC#に書き換えられるんですか?
知らなかった…。
それって簡単?
421:デフォルトの名無しさん
09/06/12 16:41:16
>>405のコード読めるならそんなに難しくはない
そうでないなら諦めろ
422:デフォルトの名無しさん
09/06/12 18:17:03
>>411
アタッチについて少し調べたんですが、
スレッドのアタッチは出来そうだけど、プロセス?(たとえばWordなど)に
アタッチって出来ます?
423:デフォルトの名無しさん
09/06/12 19:16:40
サンプルコードを読んでいたら、以下のような記述が出てきたんですけれど、
コンストラクタを呼んで、 { } で括って最後に;って何なのでしょうか?
コンストラクタの内容に追記しているんでしょうか?
匿名関数とか記法の名前が分かればググれるんですけれど、
何と呼ばれる記述法何でしょうか?
public ActionResult Create(int customerId)
{
AddressViewData addressViewData = new AddressViewData()
{
CustomerId = customerId
};
return View(addressViewData);
}
424:デフォルトの名無しさん
09/06/12 19:24:32
勘でググってたらあったー
オブジェクト初期化子ですかね。
425:デフォルトの名無しさん
09/06/12 19:27:47
うん
426:デフォルトの名無しさん
09/06/12 19:33:03
>>423
確かに、これはものすごい気持ちの悪い書き方だな。
ぱっと見ではなぜnew AddressViewData()のところにセミコロンがないのかが分からないし、
ブレースのあとでセミコロンがあるのかが分からない。
オレならまず間違いなく
new AddressViewData() {
...
};
にするだろうな。
427:デフォルトの名無しさん
09/06/12 19:36:58
趣味の自慢か?
428:デフォルトの名無しさん
09/06/12 19:49:07
そういう宗教論争はこっちで頼むわ。
スレリンク(tech板)
429:デフォルトの名無しさん
09/06/12 21:07:07
Form2 frm2 = new Form2
とかやって、新しいフォーム作成したら
Form2.csができちゃって
Form1.csで作ったpublic変数とかが使えなくなっちゃうんだけど
どうやったらForm1.csとForm2.csの変数や文字列を合体できる??
430:デフォルトの名無しさん
09/06/12 21:08:53
引数にして渡せ
431:デフォルトの名無しさん
09/06/12 21:09:20
Form1.cs.Concat("Form2.cs")
432:デフォルトの名無しさん
09/06/12 21:52:51
変数と文字列を同じ次元で語るなよ
433:デフォルトの名無しさん
09/06/12 22:11:28
>>429
> Form2 frm2 = new Form2
> とかやって、新しいフォーム作成したら
> Form2.csができちゃって
面白い。新しいリフレクションだなw
434:デフォルトの名無しさん
09/06/12 22:46:29
>>429
まじめに勉強してこなかったツケがそれだよっ!
435:デフォルトの名無しさん
09/06/12 23:01:33
しばらくRubyやってて久々にOffice用のCOM参照DLL作ることになったんだけど
インスタンスの作り方すら忘れてる俺涙目w
436:デフォルトの名無しさん
09/06/12 23:26:08
日記帳
437:デフォルトの名無しさん
09/06/12 23:47:00
overrideって何のためにあるの?
438:デフォルトの名無しさん
09/06/12 23:50:00
>>437
明示しないとオーバーライドできなくするため。
オーバーライドするつもりなかったのにうっかりやっちゃったとかになると、
結構発見しずらいバグになる。
439:デフォルトの名無しさん
09/06/12 23:53:17
どうしてoverrideという概念があるかというレベルに見えるが
440:デフォルトの名無しさん
09/06/12 23:55:41
継承はバグの温床だからな、安全装置は沢山あった方がいい
441:デフォルトの名無しさん
09/06/13 00:04:42
現在のオブジェクト指向に関する理解から考えれば、overrideは要らない
仮想テーブルは自前でも作れる、ただ面倒臭いから言語の機能としてあれば便利だというレベルになっている。
また言語仕様で作られる仮想テーブルは書き換える事はできないが、そのような操作が必要になったら結局自前で作るわけだが、
それはStrategyパターンと呼ばれるデザインパターンでパターン化されている。
442:デフォルトの名無しさん
09/06/13 00:23:56
>>441
これ
> 現在のオブジェクト指向に関する理解
と、これ
> 仮想テーブル
って、全然領域違う言葉だよね?
何で混ざってるの?
443:デフォルトの名無しさん
09/06/13 01:13:12
使う人間が完璧なら不要
実際Javaなんかで問題が出たから付けるようにしてるんだよ
そのJavaですらoverrideを明示的に付けるようになった
444:デフォルトの名無しさん
09/06/13 02:59:00
多数の変数を一気に同じ値にすることできねーの?
int a;
int b;
int c;
~~
int z;
a=2;
b=2;
とかじゃんく
a,b,c,d,e=2;
みたいな感じで。
445:デフォルトの名無しさん
09/06/13 03:04:23
>>444
カンマじゃなくて、イコールでつないでご覧。
446:デフォルトの名無しさん
09/06/13 04:30:26
File.WriteAllText(@"C:\Test.txt", "テスト書込。", sjisEnc);
この、C\Test.textの前にある@マークは何の役割でしょうか?
447:デフォルトの名無しさん
09/06/13 04:31:37
@があると\でエスケープしない
"C:\\Test.txt"とすべきところを@"C:\Test.txt"で済ます
448:デフォルトの名無しさん
09/06/13 04:34:31
>>447
ありがとう
449:デフォルトの名無しさん
09/06/13 10:19:43
>>442
>どうしてoverrideという概念があるかというレベルに見えるが
に対しての見解なので
450:デフォルトの名無しさん
09/06/13 10:43:36
>>441
ん、んーん?
451:デフォルトの名無しさん
09/06/13 10:59:33
overrideがないと、関数名を考えるのが面倒じゃん
MyFunction( )
MyFunction_int(int n)
MyFunction_intint(int n, m)
MyFunction_intstr(int n, string t)
とか、どんどん増える
452:デフォルトの名無しさん
09/06/13 11:00:19
overloadと勘違いして奴がいる模様。
453:デフォルトの名無しさん
09/06/13 12:06:15
overloadと勘違いして奴がいる模様。
454:デフォルトの名無しさん
09/06/13 12:13:18
c#の入門用ページ、
どこもコンソールアプリケーションのことしか書いてないんだけど
WIndowsプログラムのこと書いたページで良いとこない?
455:デフォルトの名無しさん
09/06/13 12:16:23
>>454
言語自体の入門ページだと、そりゃそんなもんだろ。
Windows Forms とか WPF でググりなおした方がいいんでは。
あと、コンソールアプリで入門記事書いてるページでも、
1ページくらいは GUI に記事さいてないか?
456:デフォルトの名無しさん
09/06/13 12:18:02
そりゃ、C#の入門であって、.NETでGUIプログラミングをするための入門では
ないから、仕方ないのでは?
前者はもう充分だから、後者に移りたいというのが質問の趣旨?
それとも、前者も後者もいっしょくたにしたいという話?
いっしょくたはおすすめできないぞ。
457:デフォルトの名無しさん
09/06/13 12:29:13
GUIプログラミング=IDEの使い方だし、めんどくさいだろ?作るの。
458:デフォルトの名無しさん
09/06/13 12:38:46
俺はClass personから継承してtaroをつくるとかどうでもいいことじゃなくて
たとえばだが
Form1のx=200,y=300のドットの色を取得して
画面を塗りつぶすとか
そういうことやりたいんだが
コンソールアプリじゃそういうことわからん。
IDEつくるのめんどくさいのか;;
459:デフォルトの名無しさん
09/06/13 12:42:42
>>458
どうでもいいけど
> Class personから継承してtaroをつくる
これは気持ち悪い
taroっていう種族がいるのか…?
460:デフォルトの名無しさん
09/06/13 12:44:53
>>458
class Taro キモすww
それは置いといて、
そういう話の場合、「入門」じゃなくて「サンプル」でググって、
説明読むんじゃなくてコード読む方がオススメ。
461:デフォルトの名無しさん
09/06/13 12:46:01
別に居ても居なくてもどうでも良いな
3年を継承して山田を作るのに山田って組があるのか?とか
マジでどうでも良い
462:デフォルトの名無しさん
09/06/13 13:11:29
ちょっと力ぬけよ
463:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/13 16:01:14
Disposeはメモリの解放じゃない
DataSourceとして使用してる間にDisposeしちゃまずいだろDisposeの意味的に考えて
そのDataTableを使わなくなるタイミングだから、大体フォームが閉じるときでいいんじゃね
実用上はDataTableならDisposeする必要もないけどな
465:デフォルトの名無しさん
09/06/13 16:33:55
>>464
ぐぐって下記のページを見つけて読んできました。
URLリンク(www.atmarkit.co.jp)
大体理解できました(と思います)。
リンク先もさらに読んできます。
466:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/13 23:55:46
IComparer
468:デフォルトの名無しさん
09/06/14 01:16:18
>>466
==,!=オーバーライド
469:デフォルトの名無しさん
09/06/14 01:19:37
>>466
x1.a == x2.a && x1.b == x2.b
というかそれ、public ないから普通にコンパイルエラーにならんか?
そのクラスを値チックにしか使わないなら Equals とか GetHashCode とか
オーバーライドして operator ==/!= 定義する。IEquatable は・・・この場合は
まぁいいか
470:デフォルトの名無しさん
09/06/14 03:19:03
GetHashCodeはオーバーライドしとけ。
471:デフォルトの名無しさん
09/06/14 03:52:16
GetHashCodeってどんなときに呼ばれんの?
472:デフォルトの名無しさん
09/06/14 04:48:38
Hashtable
Dictionary
473:デフォルトの名無しさん
09/06/14 04:48:54
Dictionaryにキーとして放り込む時とか
474:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/14 13:11:11
あ、データテーブルの中身はintです。
476:デフォルトの名無しさん
09/06/14 13:20:18
追加に時間がかかってるのか、再描画に時間がかかってるのか、
どっち?
477:デフォルトの名無しさん
09/06/14 13:59:15
どっちかわかりません。
追加すると自動的に再描画されてしまうと思うのですが、
どうやったら別々に調べることが出来ますか?
478:デフォルトの名無しさん
09/06/14 14:04:08
Stopwatchクラスで時間計ってみ
479:デフォルトの名無しさん
09/06/14 16:50:00
画像を縦30横30に切り取りたいのですがどうすればいいのでしょうか?><
480:デフォルトの名無しさん
09/06/14 16:54:05
>>479
「C# 画像 切り取り」で検索すればすぐに出てくるんだけど
481:デフォルトの名無しさん
09/06/14 16:55:14
縦30、横30でコピーすればOK
482:デフォルトの名無しさん
09/06/14 16:57:06
>>48 ありがとうです0
483:デフォルトの名無しさん
09/06/14 18:24:14
パネルに編集画面を描画(Direct3D)していて、
カメラ位置を移動させるためのスクロールバーを配置したいんだけど、
1発でばしっと縦横スロールバーがつけられるコントロールってありますか?
やっぱり
親パネルの右に垂直スクロールバー配置、アンカーを上下右に設定、
親パネルの下に水平スクロールバー配置、アンカーを左右下に設定、
残った領域にスクロール操作の対象になるパネルを配置、アンカーで上下左右を設定
みたいにしないとダメ?
484:デフォルトの名無しさん
09/06/14 21:04:31
パネルってそもそも ScrollableControl 継承してなかったか?
485:デフォルトの名無しさん
09/06/14 21:45:46
そりゃ中に大きなコントロール入れたらスクロールバー出るけど483の用途には全く適さない
486:デフォルトの名無しさん
09/06/15 05:17:28
普通、インスタンス生成するときは
Class名 名前=new Class名();
で生成できるのに
Graphicsクラスのインスタンス生成する際
Graphics gr=new Graphics();
じゃ生成できないのはなんで?
Graphics gr=CreateGraphics();
なら生成できるみたい
487:デフォルトの名無しさん
09/06/15 06:30:50
newさせたくないから。幼稚園児に油性マジック渡すようなもの。
488:デフォルトの名無しさん
09/06/15 06:50:13
幼稚園児に油性マジック渡したら
キャップし忘れてすぐだめにしちゃうよね
489:デフォルトの名無しさん
09/06/15 08:19:14
CreateGraphics()はthis.CreateGraphics()だから。
490:デフォルトの名無しさん
09/06/15 08:40:29
つまり、大人の事情でそう決まってるからとしか言いようがない。
491:デフォルトの名無しさん
09/06/15 08:54:31
大人の事情っていうと、「仕方なくそうなってる」感じがするけど、
new Graphics() できないのは仕方なくじゃなくて、その方がいい設計だからだろ。
492:デフォルトの名無しさん
09/06/15 09:21:22
でもDispose()しないといけないのは何故
493:デフォルトの名無しさん
09/06/15 09:55:13
GDIの作法を知らない世代か。
494:デフォルトの名無しさん
09/06/15 12:01:20
newとDisposeは対になるものじゃないしね
495:デフォルトの名無しさん
09/06/15 12:33:09
Dispose()はC++からのクセだろ
別にしなくてもいいし
496:デフォルトの名無しさん
09/06/15 12:51:44
やんなくてもGCが回収してくれるけど、その間リソースを持ち続ける事になるからねぇ
ファイル開こうとしたらいつまでもロックされてる とかよくある。
Closeすればいい?それならDisposeしちゃえよ。
497:デフォルトの名無しさん
09/06/15 12:58:16
>>495
ドキュメントにDispose()しろってんだからしろよ<
498:デフォルトの名無しさん
09/06/15 13:16:50
> しろよ<
よろしくにみえた
499:デフォルトの名無しさん
09/06/15 14:16:34
private void Form1_Load(object sender, EventArgs e)
()内のobject sender, EventArgs eってなんですか?
500:デフォルトの名無しさん
09/06/15 14:20:21
イベントの発生元とイベントのパラメータ
501:デフォルトの名無しさん
09/06/15 14:22:47
Loadイベントに限っていえば意味はない
イベントハンドラの引数の形式を統一するためのダミー
502:デフォルトの名無しさん
09/06/15 14:32:36
Windowsアプリケーションを製作しております。
処理に必要なデータ(CSVファイル)を、利用者側から見られないようにしたいのですが
なにか策はありますでしょうか?ご教授下さい。
503:デフォルトの名無しさん
09/06/15 14:37:10
System.Security.Cryptographyでも使って暗号化すれば
気休めだけどね
504:デフォルトの名無しさん
09/06/15 14:38:30
>>502
PC内に保存するなら簡単に見られるだろ。
見にくくしたいなら暗号化かな。
簡単な暗号でいいならxor暗号で。
505:デフォルトの名無しさん
09/06/15 14:45:17
>>502
web上に配置してsslとか
506:デフォルトの名無しさん
09/06/15 14:47:43
>>502
エロゲのセーブデータか?
507:デフォルトの名無しさん
09/06/15 14:50:33
食いつき良いなお前ら。
508:502
09/06/15 14:52:46
>>503
ありがとうございます、調べてみます。
>>504
ありがとうございます。XOR暗号、調べてみます。
>>505
Web上への配置ですか、検討してみます。
>>502
いえ、そういうのではないのですが。
そのファイルを見られてしまうとプログラム内でなにをやっているかがわかってしまうのです。
509:デフォルトの名無しさん
09/06/15 15:05:58
ファイルなんか見なくても何してるか丸見えだけどな
510:デフォルトの名無しさん
09/06/15 15:21:35
ゲームとかでネタばれになるようなのは隠したいわな
511:502
09/06/15 15:25:55
Security.Cryptographyでやってみようと思います。
本当にありがとうございました。感謝します。
512:デフォルトの名無しさん
09/06/15 15:27:12
カジュアルハックを防ぐだけならそれでいいんじゃね。
513:デフォルトの名無しさん
09/06/15 15:54:28
2次元のHashtableはつくれますか?
hash["abc"]["def"]のような。
514:デフォルトの名無しさん
09/06/15 16:05:19
Hashtable<Hashtable<T>>
515:デフォルトの名無しさん
09/06/15 16:06:45
>>514
ただし2次元ではない
もしくはそういう感じのを作ればおk
516:デフォルトの名無しさん
09/06/15 16:16:41
>>513
hasu["abcdef"]という値をキーにすれば良い
517:デフォルトの名無しさん
09/06/15 16:17:56
商用なら間違いなく仕様バグで訴えられるな。
518:デフォルトの名無しさん
09/06/15 16:18:10
>>516
そうですね、ありがとうございました。
519:デフォルトの名無しさん
09/06/15 16:18:49
>>518
hash["a"]["bcdef"]との違いがわからなくね?
520:デフォルトの名無しさん
09/06/15 16:21:27
実際は
abc = 重複のない3桁の数字
def = 重複のある1~2桁の数字
なので、>>513さんの意見で大丈夫かなと思ったのですが。
521:デフォルトの名無しさん
09/06/15 16:22:45
すいません、>>513ではなく>>516でした
522:デフォルトの名無しさん
09/06/15 16:36:00
>>520
じゃあそれでいいんでね?
523:デフォルトの名無しさん
09/06/15 16:36:05
>>519
別に汎用でなくてもかまわない。
キーが取り得る値として辻褄が合うように適宜仕様変更すれば良いんだよ。
524:デフォルトの名無しさん
09/06/15 16:38:21
>>523
適宜仕様変更すると汎用になるんでないかい
525:デフォルトの名無しさん
09/06/15 16:38:51
てか、自分でハッシュ関数作ればいいじゃん
526:デフォルトの名無しさん
09/06/15 16:42:36
目的に最適化されたハッシュか、汎用のハッシュか、どっちが高速かと言えば前者だな
527:デフォルトの名無しさん
09/06/15 16:47:04
hash[new {Fst = "abc", Snd = "def"}]
ってできる?
528:デフォルトの名無しさん
09/06/15 16:49:45
>>527
試した?
529:デフォルトの名無しさん
09/06/15 16:50:14
>>528
試してない
だって俺C#の文法知らないもん
530:デフォルトの名無しさん
09/06/15 17:03:22
はっはっは こやつめ
531:デフォルトの名無しさん
09/06/15 17:13:00
new Dictionary {{"あ","A"},{"い","I"}}
532:デフォルトの名無しさん
09/06/15 17:15:30
<string,string>追加
533:デフォルトの名無しさん
09/06/15 17:22:05
うわぁ的なことをした人がいる
URLリンク(d.hatena.ne.jp)
var dict = Dictionary
(
x => "foo",
y => "bar",
Hauhau => "gaogao"
);
C#3.5以降のはず
534:デフォルトの名無しさん
09/06/15 17:27:09
わざわざそんなキモいことしなくても531で正解なんだが
535:デフォルトの名無しさん
09/06/15 17:28:57
一番軽いのはどーれだ
536:デフォルトの名無しさん
09/06/15 17:41:11
>>534
実現方法の一つで正解ってわけじゃないけど
どうでもいいわ
537:デフォルトの名無しさん
09/06/15 18:00:02
言語に組み込むのは、手段を統一させるため
昔C#のコンセプトについてそんなコメントがあった気がする
538:デフォルトの名無しさん
09/06/15 19:48:35
VC#フォームデザイナでメニューを作ったとき、キャプションに
「上書き保存)(&S)」とか入力してからダブルクリックして
メニューの Click イベントを書こうとすると
private void 上書き保存SToolStripMenuItem_Click(object sender, EventArgs e)
ってなるのが気持ち悪くてしょうがないんだけど、
みんなちゃんと飲み込めてるの?
539:デフォルトの名無しさん
09/06/15 20:09:18
お好きなようにどうぞ
・実害はないので気にしない
・リネームする
・英語キャプションでハンドラを生成して、後から日本語に変更
・先にハンドラを用意する
540:デフォルトの名無しさん
09/06/15 20:35:12
>>513
public struct ComplexKey<X, Y> : IEquatable<ComplexKey<X, Y>>
を作ってみるのは俺だけか?
541:デフォルトの名無しさん
09/06/15 21:28:02
is演算子、 as演算子って多用すべきでない?
542:デフォルトの名無しさん
09/06/15 21:50:50
キャストと比べても、パフォーマンス的には殆ど同じだから安心して使うといい。
キャストに失敗する可能性がある場合には必ずas,isを使うべき
InvalidCastExceptionをtry-catchするような方法だと桁違いに遅い。
543:デフォルトの名無しさん
09/06/15 22:32:18
if (hoge is Foo)
{
Foo foo = (Foo)hoge;
// ...
}
個人的には、上よりは下の方がいいと思うとか、細かいことを挙げたらきりがないけどな。
Foo foo = hoge as Foo;
if (foo != null)
{
// ...
}
544:デフォルトの名無しさん
09/06/15 22:49:13
>>541
as演算子のほうがキャストより高速になる場合が多いらしい
545:デフォルトの名無しさん
09/06/15 22:55:46
まあそりゃチェックが2回になるからね。
でも、そんな差を気にしなければならないのはよほどタイトな処理の時くらいだし、
普通に書いた時変数のスコープが広がるというデメリットもあるから、
別にどっちでもいいレベルだと思うけどね。
なぜかやたらとここにこだわるやつがいて不思議。
546:デフォルトの名無しさん
09/06/15 22:55:48
上は無駄な事をしてる感じなのが気に入らない
下は変数のスコープが気に入らない
scalaのswitchが使えればいいんだけどなぁ
547:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/15 23:02:07
>>547
LINQ使って
int max = hoge.Max();
549:デフォルトの名無しさん
09/06/15 23:11:18
HighPrice メンバみたいだから
int max = hoge.Select((x) => x.HighPrice).Max();
だな
550:549
09/06/15 23:15:05
あ、Max にはセレクタ指定できるのかごめん
int max = hoge.Max((x) => x.HighPrice);
かな
551:デフォルトの名無しさん
09/06/15 23:15:35
hoge.Max(x => x.HighPrice)
みたいな?
552:デフォルトの名無しさん
09/06/15 23:16:33
あ、カッコいったか、普段あまり使わないから分からなくなるよ。
553:デフォルトの名無しさん
09/06/15 23:21:10
なくてもいいと思うよ。俺は見易さと統一性でいつもつけてる
だけ。けど好みの問題だろうな。
554:547
09/06/15 23:27:57
みなさんレスありがとうございます。
>>550さんので無事できました。
LINQだとだいぶ楽に書けていいですね。
手元のC#本は古いせいかLINQについては載ってないので新版を買ってくるとします。
ありがとうございました!
555:デフォルトの名無しさん
09/06/16 01:24:51
c#で
class Test{
}
という何もないTestクラスを作って
Test test=new Test();
ってやって、
Label1.Text=test.ToString();
ってやったら宣言してないはずのTostring()が実行されるんだけど
クラスって宣言しなくても勝手にObject型を継承するようになってんの?
556:デフォルトの名無しさん
09/06/16 01:25:46
URLリンク(msdn.microsoft.com)
557:デフォルトの名無しさん
09/06/16 01:42:47
>>556
くそ真面目に継承階層にずらずら並べてるのがちょっと微笑ましい
558:デフォルトの名無しさん
09/06/16 01:49:59
>>557
スクリプト切っててわからなかった
これはひどい
559:デフォルトの名無しさん
09/06/16 01:50:21
2,768個・・なぜ並べたww
560:デフォルトの名無しさん
09/06/16 01:50:58
>>555
クラスどころかC#ではありとあらゆる型がobject継承してる。
561:542
09/06/16 08:28:40
安心して使うことにする。
みんなありがとう
562:デフォルトの名無しさん
09/06/16 13:07:53
>>556
クソワロタ
563:デフォルトの名無しさん
09/06/16 15:27:42
なんでわざわざ
Program.csとForm.csに分割してるんだ
Program.csは
Main関数の中に
Application.Run(new Form1)
みたいな産業あるだけだし・・・
意味不明
564:デフォルトの名無しさん
09/06/16 15:30:27
意味などないんだよおおおおおおおおおおおお!!!
うふっ
565:デフォルトの名無しさん
09/06/16 15:31:25
なるべくpublicなクラスは分割した方が管理しやすいから
フォームみたいなのだとなおさらね
関係ないけどそれを追求した結果、Javaなんかは1ファイル1publicクラスみたいな潔癖な事になっている
566:デフォルトの名無しさん
09/06/16 15:33:29
意味不明ってまじかよ。冗談はよせ。
567:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/16 16:48:31
あ、arraylist の中身は重複しません
569:デフォルトの名無しさん
09/06/16 16:53:09
foreach中はコレクションを変更できない
570:デフォルトの名無しさん
09/06/16 17:08:36
RemoveAllで
571:デフォルトの名無しさん
09/06/16 18:53:50
1個なら消せるよね
572:デフォルトの名無しさん
09/06/16 19:59:54
CheckedListBoxって、項目を選んでからチェックボックスをクリックしないと チェックできませんよね。
どの項目を選んでいるか関係なく、クリックしたら即チェックできるようにするにはどうすればいいですか?
573:デフォルトの名無しさん
09/06/16 20:05:32
CheckOnClick
574:デフォルトの名無しさん
09/06/16 20:07:00
相談室の次スレ立てれんかったわ
575:デフォルトの名無しさん
09/06/16 20:10:16
立ててやるよ
576:デフォルトの名無しさん
09/06/16 20:11:04
>>567
RemoveAll が普通だろうけど、ArrayList ってことは 1.0 縛りとか
そういうの?
577:デフォルトの名無しさん
09/06/16 20:13:27
立てたよ
578:デフォルトの名無しさん
09/06/16 20:14:25
>>577
GJ
579:デフォルトの名無しさん
09/06/16 20:35:24
Visual C# 2008 Express Edition入れたんですけど、
ライセンス登録しないとどうなるんでしょうか?
あんまパスワードとか作りたくないので、
できれば登録したくないです。
あと、どんな感じで勉強してったらいいでしょうか?
javaを2年くらいやってます。あとC言語をちょびっとやってました。
くだらない質問と漠然とした質問ですみませんが
教えてもらえたらありがたいです。
お願いします。
580:デフォルトの名無しさん
09/06/16 20:42:13
30日で使えなくなる
それだけ
Javaやってたなら簡単だと思うよ
ここで聞くことも無いかもしれない
581:デフォルトの名無しさん
09/06/16 20:43:06
一ヶ月経ったら登録しないと起動しなくなる
javaできるなら勉強しなくてもいきなり使えるはず
使いながら随時細かい違いを調べていけば十分
それができないならjavaもできてないってことだ
582:デフォルトの名無しさん
09/06/16 20:45:57
...これだと項目を選択した瞬間にチェックがつけられてしまいますが、そうではなくて
チェックボックスをクリックした瞬間とはならないでしょうか。
ちょうどチェックボックス付きの ListViewのような動作です。
それならListViewをつかえといわれそうですが、リサイズした場合に一番右側のヘッダの
右端が常にコントロール右端に一致するようにするやり方がわからないのです。
583:デフォルトの名無しさん
09/06/16 20:47:03
>>579
登録しなくても問題無くずっと使える
前は登録するとアイコンセットもらえるキャンペーンとかやってたけど
リファレンスもユーザーサイトも充実してるしJavaとVB足したような言語だから
たぶん難しくないよ
584:デフォルトの名無しさん
09/06/16 20:50:24
堂々と嘘こいてんじゃねええええええええええええええええええええええ
585:デフォルトの名無しさん
09/06/16 20:52:49
嘘を付く時は堂々とするとバレにくいよおおおおお
586:デフォルトの名無しさん
09/06/16 20:53:16
DVDイメージ版は登録いらないんだっけ
587:デフォルトの名無しさん
09/06/16 20:53:40
登録はWebインストール版の話
588:デフォルトの名無しさん
09/06/16 20:54:59
URLリンク(www.microsoft.com)
Visual Studio 2008 Express Edition を Web インストールにて入手いただいたお客様は、ご使用に当たってライセンス認証が必要となります。
ライセンス認証キー発行の過程において Live ID によるユーザー登録をお願いしております。
無料のライセンス認証キーにより、Visual Studio 2008 Express Edition を、30 日間の期限を過ぎても使用できるようになります。
589:デフォルトの名無しさん
09/06/16 20:57:44
あほばっかりや
590:デフォルトの名無しさん
09/06/16 21:19:22
そもそもパスワードなんてあったか?
591:デフォルトの名無しさん
09/06/16 21:22:14
製品登録する用LiveID取得するためにパスワードが必要
LiveID持ってれば製品登録してメール送られてくるだけ
592:デフォルトの名無しさん
09/06/16 21:26:19
俺は登録した覚えないからなんのこっちゃと思いながらレス読んでたけど、
Webインストールだけなのね。DVDから入れたわ。
593:デフォルトの名無しさん
09/06/16 22:07:46
>>582
ならListViewでSizeChangedでColumnHeaderのWidthいじればいいんじゃね
ダブルクリックとかスペースキーでチェック状態変更するときはどうすんのかね
594:デフォルトの名無しさん
09/06/16 22:22:15
LiveIDくらいは作っといてもいいと思うぞ。
既に持ってる人も多いだろうし。
595:デフォルトの名無しさん
09/06/16 22:37:01
>>582
マウスイベントでマウスポインタの位置を取得して
ClickかSelectedIndexChangedあたりで選択されたインデックスの
チェックボックスの領域がクリックされたらItemCheckみたいな方法しか
ないんじゃないかね
596:デフォルトの名無しさん
09/06/16 22:45:33
static classって使い終わってもGCにコレクトされないの?
597:デフォルトの名無しさん
09/06/16 22:49:39
>>596
使い終わるってどういう状態のこと?
598:デフォルトの名無しさん
09/06/16 22:51:47
c#ってさ、スタドアロン(.Net Framework インストールしてなくても動くって意味で)な exe つくれる?
なんていうか、DLL全部EXEに組み込むみたいな。
599:デフォルトの名無しさん
09/06/16 23:01:36
MONOはネイティブコンパイルできたと思うよ
iPhoneでC#製プログラムを動かすだかって話の時に読んだ
600:デフォルトの名無しさん
09/06/16 23:13:20
>>599
aot オプション付けるだけみたい。
601:デフォルトの名無しさん
09/06/16 23:19:14
なんだ。じゃあ駄目だな
602:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/17 00:24:44
上記のプログラムで走らせると
*
*
*
*
*
となってしまいます、
*
**
***
****
*****
とするにはどこを修正すればいいのでしょうか、よろしくお願いします
604:デフォルトの名無しさん
09/06/17 00:29:20
スレタイも読めないのか