ふらっとC#,C♯,C#(初心者用) Part42at TECH
ふらっとC#,C♯,C#(初心者用) Part42 - 暇つぶし2ch1:デフォルトの名無しさん
09/06/24 18:47:07
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

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

前スレ

ふらっとC#,C♯,C#(初心者用) Part41
スレリンク(tech板)


2:デフォルトの名無しさん
09/06/24 18:47:58
-----関連スレ

C#, C♯, C#相談室 Part53
スレリンク(tech板)

WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part4
スレリンク(tech板)

----参考サイト

URLリンク(www.google.co.jp)
URLリンク(msdn.microsoft.com)
URLリンク(homepage3.nifty.com)
URLリンク(www.atmarkit.co.jp)
URLリンク(dobon.net)
URLリンク(jeanne.wankuma.com)
URLリンク(www.labasp.net)

3:デフォルトの名無しさん
09/06/24 18:51:32
乙です

4:デフォルトの名無しさん
09/06/24 18:58:56


5:デフォルトの名無しさん
09/06/24 19:17:14
でも、継承で組みあがってないと資産にならないし
拡張も難しくなるし。継承で組みあがってはじめてオブジェクト指向になるんじゃないんですか?
継承の作りどころがわからないとプログラミングがはじまってもいないと思うのですが、この壁を超えるにはどうすればいいんでしょうか

6:デフォルトの名無しさん
09/06/24 19:20:54
継承が必要なときはね。ピーンとくるよ、

7:デフォルトの名無しさん
09/06/24 19:26:03
クラスの継承は使わずに、インターフェイスの継承だけで試しにやってみたらいいんじゃない
正しい使い方に矯正されるよ

8:デフォルトの名無しさん
09/06/24 19:26:20
インターフェイスでたいていは間に合う。
最近のオブジェクト指向は継承より委譲と包含がトレンド。
そのうち風向きがまた変わるかもしれないけどね。

9:デフォルトの名無しさん
09/06/24 19:29:31
違うよ。多態使ってはじめてオブジェクト指向のメリットがあるんだよ。
継承だけならオブジェクト指向以前の構造化プログラミングで十分。

10:デフォルトの名無しさん
09/06/24 19:31:12
これってアレ?全力で間違ったことを言うとレスが必ず付くってやつ?

11:デフォルトの名無しさん
09/06/24 19:32:34
前スレの実験だけど、1億回ループで101ms、ifだけを3倍にしたら171ms、
forの処理時間を差し引くとifが1億回で35msという結果になった。
使用したマシンはPen4/3GHzなんで、計算すると1回あたりほぼ1クロック。
データシート通りの結果になった。

12:デフォルトの名無しさん
09/06/24 19:47:13
多胎はメリットの一つだろうが=じゃねえだろ

13:デフォルトの名無しさん
09/06/24 19:50:01
コードの再利用やカプセル化なんてオブジェクト指向でなくてもきるからな。

14:デフォルトの名無しさん
09/06/24 20:57:26
Windowsのサービスパックと.Netがインストールされているかどうかを
プログラムから調べる方法を教えてください。
検索しても「システムのプロパティを開いて」といった、人間の目で
確認する方法しかヒットしません。

今作っているアプリが.Net3.5を使っているのですが、.Netの入っていない
マシンで実行すると無反応になってしまい困っています。

15:デフォルトの名無しさん
09/06/24 21:01:21
最初にシステムの状態をチェックして、
「.Netをインストールしてください」みたいなダイアログを出したいのです。

16:デフォルトの名無しさん
09/06/24 21:03:38
>>15
インストーラーが自動でやってくれるよ

17:デフォルトの名無しさん
09/06/24 21:05:34
C#でCOM参照を可能にしたDLLを作ってExcel2002の参照に追加
関数を呼び出すと必ず実行時エラーになる
VC#2008で作ったCOMDLLはOfficeで使えないのかな?
ググっても解決法が見つからないっす

18:デフォルトの名無しさん
09/06/24 21:08:37
>>16
インストーラーは使ってないです。
導入はexe単体をコピーするだけなんです。

>>17
使用者があんまり詳しくないので、できれば関連ファイルは
増やしたくないのですが。

ほかに方法がなければ、いずれかを検討してみます。

19:14
09/06/24 21:12:26
とりあえず、mainの先頭にMessageBoxを入れたら表示されたので、
.Netがなくてもとりあえずプログラムはスタートはしているようです。

20:14
09/06/24 21:14:25
ふと思いついたのですが、
アプリケーションの追加と削除の中の一覧を調べる
みたいな方法は避けた方がいいでしょうか?

21:デフォルトの名無しさん
09/06/24 21:15:51
詳しくないなら、なおさらインストーラー作ったらいいじゃない
ランタイムなかったらそれも自動でインストールしてくれるし

22:デフォルトの名無しさん
09/06/24 21:18:04
>>17
実行時エラーってその内容はどうなのよ

23:14
09/06/24 21:23:05
>>22
exeのアイコンをダブルクリックすると、一瞬砂時計になるだけで
エラーも何も出ずに、すぐに終了してしまいます。

24:17
09/06/24 21:24:03
>>22
実行時エラー '-2146234105(80131107)'
オートメーションエラーです。

だそうです。

25:デフォルトの名無しさん
09/06/24 21:34:24
Excel2002ってアセンブリ読めるの?

26:デフォルトの名無しさん
09/06/24 21:45:13
一応読める
URLリンク(msdn.microsoft.com)(office.10).aspx

27:17
09/06/24 21:53:06
色々調べた結果、OfficeのバージョンとVSのバージョンによって
参照できたり出来なかったりするみたいですね

28:デフォルトの名無しさん
09/06/24 22:18:15
>>14
レジストリ見れば.NETがインストールされてるか分かる。どこ見ればいいかはググれ

29:デフォルトの名無しさん
09/06/24 22:44:56
URLリンク(www.atmarkit.co.jp)


30:デフォルトの名無しさん
09/06/24 22:57:54
listBoxの最後の項目を抜き出すには、どのようにしたらよいですか?
listBoxの項目から、ランダムにひとつを抜き出すには、どのようにしたらよいですか?


31:デフォルトの名無しさん
09/06/24 23:00:39
一つ目は抜き出せる?

32:デフォルトの名無しさん
09/06/24 23:04:31
ListBox.Items.Countに項目数が入ってるだろ
つまり

33:デフォルトの名無しさん
09/06/24 23:15:48
IndexOutOfBoundExceptionが出ちゃいます

34:デフォルトの名無しさん
09/06/24 23:18:57
>>33
最後の値を取りたいんなら-1しないとダメだぞ

35:デフォルトの名無しさん
09/06/24 23:25:26
1個目はできます。
listBox.SetSelected(1, true);
string s = listBox.Text;
MessageBox.Show(s);

最後の項目ということで、
listBox.SetSelected(ListBox.Items.Count, true);
としたら、
静的でないフィールド、メソッド、またはプロパティ 'System.Windows.Forms.ListBox.Items.get' で、オブジェクト参照が必要です
となってます。



36:デフォルトの名無しさん
09/06/24 23:32:07
int[] array = new int[3];
のarray.Lengthは3だよな
このときarray[x]のxの取り得る範囲は?

37:デフォルトの名無しさん
09/06/24 23:38:20
>>30
Randomオブジェクトでヘルプを検索

38:デフォルトの名無しさん
09/06/24 23:39:58
1個目はlistBox.SetSelected(0, true);
です。

x 012です。

39:デフォルトの名無しさん
09/06/24 23:48:27
テキストBOXに

textbox1.Text = "test\r\n"

と書き込んだ後に、表示しているテキストに
追加して文字列を入力したいのですが
消えてしまって、前の状態が保持できません。

40:デフォルトの名無しさん
09/06/24 23:54:52
>>38
arrayをlistBox.Itemsに、LengthをCountに置き換えれば後は分かるな?

>>39
AppendText

41:デフォルトの名無しさん
09/06/24 23:58:23
>>40

ありがとうございました。
できました^^

42:14
09/06/25 00:09:41
>>28-29
ありがとうございます。
こちらでも、プログラムの追加と削除について調べているうちに、
レジストリから.Netの情報が直接取れそうだとわかったところでした。

43:デフォルトの名無しさん
09/06/25 00:14:47
ありがとうございました。
listBoxできました。


44:デフォルトの名無しさん
09/06/25 06:05:56
これをもっと簡略化して書くならどうしますか?

      if(File.Exists(file_name))
      {
        FileInfo fi = new FileInfo(file_name);
        if (fi.Extension == ".txt")
          return true;
        else
          return false;
      }

45:デフォルトの名無しさん
09/06/25 06:30:56
三項演算子でも使って書けよ

46:デフォルトの名無しさん
09/06/25 06:40:12
>>45
お手本をお願いします

47:デフォルトの名無しさん
09/06/25 06:46:20
えええええええええええ

return str=="aaa" ? true : false;

みたいなの

48:デフォルトの名無しさん
09/06/25 06:51:02
>>47
実例お願いします

49:デフォルトの名無しさん
09/06/25 07:02:43
はい実例

return str=="aaa" ? true : false;

50:デフォルトの名無しさん
09/06/25 07:06:27
return fi.Extension == ".txt";

51:デフォルトの名無しさん
09/06/25 07:07:45
>>50
これだとファイルが存在しない場合エラーでますよ

52:デフォルトの名無しさん
09/06/25 07:10:25
>>44
これを簡略化して書いてほしんです
誰もできませんか?

53:デフォルトの名無しさん
09/06/25 07:14:41
できますよ

54:デフォルトの名無しさん
09/06/25 07:17:20
>>53
ではお願いします

55:デフォルトの名無しさん
09/06/25 07:18:07
やです

56:デフォルトの名無しさん
09/06/25 07:19:54
>>51
そこは省略したんだけど、存在しない場合はreturnせずに続行でいいのか?

57:デフォルトの名無しさん
09/06/25 07:20:05
>>55
テンプレ読んでください
同意できないならレスしないでください
邪魔なだけですから

58:デフォルトの名無しさん
09/06/25 07:22:41
>>56
テキストファイルが存在するかどうかのチェックをするメソッド内の文なんです
最終的にboolを返すようにしてほしんですが

59:デフォルトの名無しさん
09/06/25 07:23:38
少しは自分で考えろよ

60:デフォルトの名無しさん
09/06/25 07:28:52
>>59
考えてここまで短くしました
先輩方ならもっと短く出来るのかなと思いましたが
どうやら無理っぽいですかね?

>>1「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
あと、これなんで、嫌なら来ないでください
私みたいな初心者煽ってても時間が勿体無いだけですよ

61:デフォルトの名無しさん
09/06/25 07:34:34
>>60
いいえ可能です

62:デフォルトの名無しさん
09/06/25 07:37:44
優しいの定義は人それぞれだしな。

return File.Exists(file_name) && file_name.EndsWith(".txt");

でいいな。

63:デフォルトの名無しさん
09/06/25 07:41:01
何を言おうが所詮2ちゃん。
煽られるのが嫌なら、MSDN フォーラムでも行けよw

64:デフォルトの名無しさん
09/06/25 07:41:31
>>62
すごいです。一行でできるなんて驚きです
この場合は三項演算子いらないんですね?

やっぱりできる人は口先だけじゃないですね
三項演算子とか言ってた人は結局無能の荒しと証明できたということですね

ありがとうございました。

65:デフォルトの名無しさん
09/06/25 07:43:31
どういたしまして。

66:デフォルトの名無しさん
09/06/25 07:43:34
>>63
2chだから許されるのと、貴方に良識がないのとは別問題ですよwww
バカはどこ言ってもバカ

できるひとはどこ言ってもできるんですよねー
こういう常識的なこともわからないで子供じみたことしか言えないなんて
無能のバカはどうしようもないですねw

67:デフォルトの名無しさん
09/06/25 07:45:06
>>66
2chだから許されるのと、貴方に良識がないのとは別問題ですよwww
バカはどこ言ってもバカ

できるひとはどこ言ってもできるんですよねー
こういう常識的なこともわからないで子供じみたことしか言えないなんて
無能のバカはどうしようもないですねw

68:デフォルトの名無しさん
09/06/25 07:46:45
コピペした時点で敗北宣言ととりました
わたしの勝ちですねw
バカを論破するなんて容易いわw

69:デフォルトの名無しさん
09/06/25 07:46:52
煽られてんのにわざわざ答えを書いてやるって・・・。
おまえらってほんと優しいのなw

70:デフォルトの名無しさん
09/06/25 07:47:25
論破()笑

71:デフォルトの名無しさん
09/06/25 07:48:21
朝っぱらから暇なんだな
そろそろ出勤しろ

72:デフォルトの名無しさん
09/06/25 07:48:30
>>62の方なら私の1000行のプログラムも100行ぐらいで書いちゃうんだろうな
しかもわかりやすく・・・・本当に実力のあるひとは違いますね

73:デフォルトの名無しさん
09/06/25 07:49:53
実力のある人は既に書かれたものを探します
一番良いのは何も作らないこと

By CodeComplete

74:デフォルトの名無しさん
09/06/25 07:50:30
>>72
無能自慢はしなくていいですよ

75:デフォルトの名無しさん
09/06/25 07:54:37
>>73
これってほんと真理ですよねー
自分は探すのが下手なんだなー

76:デフォルトの名無しさん
09/06/25 07:55:40
そりゃ無能でしょうからね

77:デフォルトの名無しさん
09/06/25 09:14:28
みんな優しく答えてくれてるじゃないか。
次スレの>>1には
回答者を煽るような質問者は相手をしないようにしてください。
って追加しておくべきなんじゃね?

78:デフォルトの名無しさん
09/06/25 09:25:04
なんとか.TXTってファイル名で試して見ろやw

79:デフォルトの名無しさん
09/06/25 09:28:05
どっちかというと
バカは答えないように!
って加えたほうが適切だろ。

>>47とか>>49って
boolを返却するって事自体が理解できてないノリじゃん?

80:デフォルトの名無しさん
09/06/25 09:32:22
47って?から後ろ要らなくね?

81:デフォルトの名無しさん
09/06/25 09:40:37
>>79 の後半2行が云わんとしてるのは、まさにその事!

82:デフォルトの名無しさん
09/06/25 09:43:10
;は要るよ

83:デフォルトの名無しさん
09/06/25 09:47:49
あげ足取りは要らないけどね

84:デフォルトの名無しさん
09/06/25 09:48:23
ソースの行数が少ないのとプログラマとして優秀なのは無関係だよなー

85:デフォルトの名無しさん
09/06/25 09:48:27
>>47 >>49は if ((a > b) == true) とか書いちゃう人なんだろう。

86:デフォルトの名無しさん
09/06/25 09:52:53
>>85
おっと、そういうコードを提示した>>44を忘れちゃいかん。

87:デフォルトの名無しさん
09/06/25 10:02:22
>>44は質問者だから問題なし。
自分の書いたコードをちゃんと提示してるのだから立派なものだよ。

88:デフォルトの名無しさん
09/06/25 10:19:57
自己弁護乙

89:デフォルトの名無しさん
09/06/25 10:24:19
>>44はなかなかの釣り師だな

90:デフォルトの名無しさん
09/06/25 10:39:12
そうだね^^

91:デフォルトの名無しさん
09/06/25 10:42:10
>>47 >>49 さん、そんなに必死にならなくても。

92:デフォルトの名無しさん
09/06/25 10:47:10
RegexでURLを取り出すためにサイトから正規表現コピペしてきたんだけどURLを拾えなかった
正規表現のエンジンってC#用とかJava用とかで別物なの?

93:デフォルトの名無しさん
09/06/25 10:48:54
その正規表現を書け

94:デフォルトの名無しさん
09/06/25 10:51:18
(https?:¥/¥/[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+)

95:デフォルトの名無しさん
09/06/25 10:52:34
ネットに転がってるのはperl系のが多いね。
C#やJavaはposix系だったかな。
他にもunix系、GNU系とかいろいろある。

96:デフォルトの名無しさん
09/06/25 10:56:23
\/\/

これじゃないの

97:デフォルトの名無しさん
09/06/25 11:11:46
よく悩むんですが
フォーム上のボタンが押されるとファイルが読み込まれるというプログラムの場合

Formクラス上でファイルの有無をチェックすべきか
FileStreamなどを使ってファイル入出力するstaticなクラスで有無をチェックすべきか

どこでチェックするのが最適ですか?

98:デフォルトの名無しさん
09/06/25 11:13:57
>>96
\取ったら出来ました

つ○飴ちゃん

99:デフォルトの名無しさん
09/06/25 15:39:10
var x = new XElement("foo?", "bar");

上記のコードは例外を発生しますが、
Xmlに使えない文字をエスケープするにはどうしたらよいでしょうか?


100:デフォルトの名無しさん
09/06/25 15:51:25
var x = new XElement(@"foo?", "bar");

101:デフォルトの名無しさん
09/06/25 16:18:38
えっ?

102:デフォルトの名無しさん
09/06/25 16:33:27
static class hogeB
{
  static public List<string[]> GetList()
  {
    List<string[]> data=new List<string[]>();
    return data;
  }
}

hogeAクラスでhogeBクラスより受け取ったdataの中身がからっぽなんですがなぜでしょうか?

103:デフォルトの名無しさん
09/06/25 16:35:08
>>102
からっぽって?
要素数0のリスト返してるだけじゃん?

104:103
09/06/25 16:39:32
すいません。受け取り側のプログラミングミスでした

105:デフォルトの名無しさん
09/06/25 17:35:54
>>99
XMLに使えない文字と言っても要素名に使えない文字と普通のテキストノードに使えない文字は別だしな。
標準には禁止文字をエスケープする手法は特に定義されてないはず。
XmlSerializerは_xXXXX_形式でエスケープしてるけど。
ざっと見た感じ.NETの標準ライブラリではXMLの無効文字コレクションや判別メソッドは公開されてないなぁ。

106:デフォルトの名無しさん
09/06/25 19:04:28
タイトルバーの最大化ボタンを消す方法を教えてください。
  MaximizeBox = false;
だと、押せなくなった色の薄いボタンが見えてるので、
これを完全に消したいのです。

107:デフォルトの名無しさん
09/06/25 19:07:47
>>106
フォームのスタイルを変更する

108:デフォルトの名無しさん
09/06/25 22:06:55
ちょっとちょっと回答者さんいないじゃん
早く帰宅して回答してよ

109:デフォルトの名無しさん
09/06/25 23:24:09
TransparencyKeyを指定して不定形フォームはできたのですが、
それにドットごとに不透明度を変える方法を教えてください
argbでアルファ付きのBitmapは作れましたが、
BackgroundImageに入れてもアルファが効きません
Opacityだと全ドットの不透明度が同じになります

110:デフォルトの名無しさん
09/06/25 23:38:02
C++/CLI VS2008ですが、WinFormはこちらで聞けと言うことなので。
Forms.Timerクラスの質問です。

Form上のボタンをクリックしたら1秒毎にメッセージ表示はできましたが、
タイマーイベントハンドラ関数からのFormクラスのメンバ関数の呼び方がわかりません。
”静的メンバ関数の呼び出し方がちがう”とのコンパイルエラーがでてしまいます。
どのように呼べばいいのでしょうか?


111:デフォルトの名無しさん
09/06/25 23:39:36
C++コンパイラが吐くエラーの話なんだからC++スレで聞け。

112:デフォルトの名無しさん
09/06/25 23:51:27
>>109
無理
Regionでどうにかすれ

113:デフォルトの名無しさん
09/06/25 23:59:49
>>112
Win32API呼んでも無理ですか?
Yahoo Widgetとかだとアルファ付きpng表示させるだけであっさり実現できるので
何らかの方法はあると思うのですが(Win32APIとか?)
そもそもRegion使っても不定形フォームができるだけで
フォームのドットごとの不透明度とはなんら関係ないと思いますよ

114:デフォルトの名無しさん
09/06/26 00:12:49
C++もC#もロクにできないのにC++/CLIなんかに手を出すな
あれは両方完璧に使える人が嫌々使う言語だ

115:デフォルトの名無しさん
09/06/26 01:13:37
>>113
昔VC++でそういうウィンドウを作ったことあるな。
たしかWin32APIのUpdateLayeredWindow()てのを使った。
C#でやってる人もいるんじゃね?
とりあえずC#とUpdateLayeredWindowで検索してみるといいよ。
いい方法見つかったら教えてね(はぁと

116:デフォルトの名無しさん
09/06/26 07:36:33
DataGridViewにデータを渡して表示する場合
データをどういう形式するのが一般的なのでしょうか?

List<string[]>のようなデータ形式をforeachなので一つ一つ
x,yでセルを指定してデータを入れているのですが
どうも非効率的というか、処理も遅いような気がします

よろしくお願いします

117:デフォルトの名無しさん
09/06/26 08:46:31
BindingSourceをバインディング

118:デフォルトの名無しさん
09/06/26 09:33:03
手抜きだけど、匿名型のシーケンスをDataSourceに入れてAutoGenerateColumns=true

って、DGVで出来たかな

119:デフォルトの名無しさん
09/06/26 12:32:06
>>115
WinFormsとUpdateLayeredWindowは相性が悪い。
上手くやる方法があるんだったら、俺も教えてほしいぐらいだ。

WPFなら簡単にできるので、
WPFに移行する事をお勧めするよ。

120:デフォルトの名無しさん
09/06/26 12:48:20
dataGridView1.CurrentCell.ColumnIndex

ヘッダ選択されているときも値が0なんだよな
-1とかにしてくれればいいのに面倒だな

121:デフォルトの名無しさん
09/06/26 13:12:52
C# 2.0
WindowsFormで質問です。

DataGridViewを作成し、カラムが何もない状態で動的に行列を追加しようとしています。

DataGridViewColumのオブジェクトインスタンスを生成し列追加を行った後
DataGridViewRowを同じDataGridViewに追加しようとすると

DataGridView コントロールの列のうち少なくとも 1 つにセル テンプレートが指定されていません。
というエラーが実行時に発生します。

この現象を回避するにはカラムにあるセルテンプレートに何か入れてやればいいと思うのですが、
どのように設定してやればいいのか分からない状態です。
回避策やヒントになるサイトなどありましたらお教え願えませんか?

122:デフォルトの名無しさん
09/06/26 14:47:30
dgvはほんとわかりにくい

123:デフォルトの名無しさん
09/06/26 14:50:06
>>121
どんなコード書いたの?行列の追加はたったこれだけだよ。
いちいち型とか指定しなくても、枠だけはすぐに作れるはず。

dataGridView1.Columns.Add("name1", "title1"); //列の追加
dataGridView1.Columns.Add("name2", "title2"); //列の追加
dataGridView1.Columns.Add("name3", "title3"); //列の追加
dataGridView1.Rows.Add(3); //行の追加

124:デフォルトの名無しさん
09/06/26 14:59:13
VSの機能で国際化してみたのですが、これだけではダイアログなどのデザイナで文字列を設定できないものに対して国際化できなかった。
それで言語別に自分でリソースファイル足したのですが、自分で足したファイル(全言語分がメインアセンブリ内に……)とデザイナが自動で作ってくれる言語別のDLLファイル(こちらはサテライト)が別々になってて気持ち悪いのでこれらをまとめる方法が知りたいです

125:デフォルトの名無しさん
09/06/26 15:15:38
>>123
こんなコードです
変数定義はループの外で定義してあります

for(int i=0; i< data.Lenght;i++)
{
col = new DataGridViewColumn();
col.HeaderText = data[i].Name;
col.Tag = data[i].Key;
dgv.Columns.Add(col);
}

for(int i=0; i< datas.Lenght;i++)
{
row = new DataGridViewRow();
row.HeaderText = data2[i].Name;
row.Tag = data2[i].Key;
dgv.Rows.Add(row);

126:デフォルトの名無しさん
09/06/26 15:25:16
dvg..ColumnCount=data.Length
foreach (Data d in data)
{
dvg.Columns[idx].Name = d.Name;
dvg.Columns[idx].Tag=d.Key
idx++;
}

127:デフォルトの名無しさん
09/06/26 15:27:47
>>126
なるほど
グリッドに追加させたカラムに関しては勝手にテンプレートが適用されるという解釈ですか?

128:デフォルトの名無しさん
09/06/26 15:44:03
どうかな

129:デフォルトの名無しさん
09/06/26 17:17:28
>>125

>>121 で、警告されたエラー そのまま でしょ。
>DataGridView コントロールの列のうち少なくとも 1 つにセル テンプレートが指定されていません。

col のCellTemplateプロパティが設定されていないから。
DataGridViewTextBoxCell とか使いたいセル形式を指定してやれば、いいんじゃない?

MSDN見れば、そっくりのコードが例にでてると思うけど…

つか、普通こんなやり方するよりDataTable作って、DataSourceにぶち込んでやるのが
一番、手っ取り早いし、一般的なやり方ではないの?


130:デフォルトの名無しさん
09/06/26 18:04:35
こんにちわ


131:デフォルトの名無しさん
09/06/26 20:09:52
Visual Studio 2008を使っていると、たまにソリューション構成のところがグレーアウトして
Debug/Releaseが選択できなくなるんですが、その条件がよくわかりません。
どういう場合に選択できなくなるんでしょう?

132:デフォルトの名無しさん
09/06/26 21:37:31
>>131
デバッグ中とか。裏でアプリが動きっぱなしになってないか?

133:131
09/06/26 23:50:02
>>132
Visual Studioを一旦終了して開き直しても変わりません。
オプションを開いて「ビルド構成の詳細を表示」をチェックするとDebugが選べるようになるんですが、
こんな深いところにある設定を無意識にうっかり変えてしまう可能性は低いと思います。
もしかしてキーボードショートカットや、ツールバーのアイコンから設定が変更できたりするんでしょうか。
とくにカスタマイズはしていません。

134:デフォルトの名無しさん
09/06/26 23:51:45
裏でアプリが動きっぱなしになってないか?

135:デフォルトの名無しさん
09/06/27 06:21:54
C#8 EE
クラス名にマウスポインタあわせると簡単なTIPSが表示されるけど
あれを日本語にできないんでしょうか?
前は日本語表示されてたはずだけど、3.5日本語Languageインストールされているのに
英語のまま

136:デフォルトの名無しさん
09/06/27 06:22:47
パッチがあとから出てるから探してみて

137:135
09/06/27 06:40:48
お願い検索キーワード教えてください

スニペット c# 2008 日本語化

で検索してもみつからない

138:デフォルトの名無しさん
09/06/27 06:48:23
スニペットじゃなくてインテリセンス…

139:135
09/06/27 06:57:07
>>138
一発で見つかりましたwお手数かけました!

140:デフォルトの名無しさん
09/06/27 09:59:32
TestDriven.net で最後に実行したテストを再実行するショートカットってない?


141:デフォルトの名無しさん
09/06/27 11:58:34
newキーワードが適用できる型と出来ない型ってどう違うの?

142:デフォルトの名無しさん
09/06/27 12:02:06
どんなんを指してるのか分からんが
コンストラクタを公開してないとか

143:デフォルトの名無しさん
09/06/27 12:05:06
動的生成させたいかどうか

144:デフォルトの名無しさん
09/06/27 12:13:20
もっとやさしくおしえて^^

145:デフォルトの名無しさん
09/06/27 12:21:48
アホには無理

146:デフォルトの名無しさん
09/06/27 12:24:47
オブジェクトになるやつとならないやつ

147:デフォルトの名無しさん
09/06/27 12:26:54
もっとやらしくおしえて^^

148:デフォルトの名無しさん
09/06/27 12:27:43
>>142-143
うまく説明できないけれど・・・
VisualStudioでnewとスペースの後に何か文字を入力すると候補が出てくるけど
適当に選んで ( を入力しても引数とかの表示のポップアップ出てこなくて
MSDNでその型名検索してもどこがnewできる型と違うのか良く分からないので
そういうのをC#使って調べるにはどうしたらいいのかな、的なことです

149:デフォルトの名無しさん
09/06/27 12:28:13
調教が必要なやつと必要ないやつ

150:デフォルトの名無しさん
09/06/27 12:31:43
コンストラクタを公開してるかどうか

151:デフォルトの名無しさん
09/06/27 12:33:09
抽象クラスかどうか

152:デフォルトの名無しさん
09/06/27 12:34:01
>>148
class CannotCreat { CannotCreat(){} }
こういうことだ。

153:デフォルトの名無しさん
09/06/27 12:35:05
静的クラスかどうか

154:デフォルトの名無しさん
09/06/27 12:37:08
>>148
MSDN メンバ一覧を見る。
例えばSystem.Net.HttpWebRequestクラスならコンストラクタに鍵のアイコンがついてる。
つまりコンストラクタがpublicじゃないからnewを呼び出せない。
System.Drawing.Imageクラスならそもそもコンストラクタが一覧に載っていない。

それから、クラスの解説の構文にabstract classかstatic classとあればそもそもそれのインスタンスは作れない。

155:デフォルトの名無しさん
09/06/27 12:39:49
鍵のアイコンとかアイコンの意味の一覧ってある?
探してるんだけど見つからない。

156:デフォルトの名無しさん
09/06/27 12:40:38
ある。ないわけがない。

157:デフォルトの名無しさん
09/06/27 12:46:43
ならば提示して見せよ

158:デフォルトの名無しさん
09/06/27 12:48:07
URLリンク(msdn.microsoft.com)

159:デフォルトの名無しさん
09/06/27 12:51:38
型とクラスの違いをおしえてくさい

160:デフォルトの名無しさん
09/06/27 12:52:54
名前

161:デフォルトの名無しさん
09/06/27 12:53:27
>>154
このページの一番下の明示的インターフェイスの実装っていうのアイコンが鍵マークだからnewを使えないってこと?
明示的~のところが空欄な時も無理、と
URLリンク(msdn.microsoft.com)(VS.80).aspx
GetType( 型名 ) っていうのだとIsAbstractっていうのはあったけどIsStaticっていうのはないからこれでは無理なのかな

162:デフォルトの名無しさん
09/06/27 12:55:16
>>158
ありがとうございます。

163:デフォルトの名無しさん
09/06/27 13:00:15
どうやらコンストラクタが何か分かってないようだが

164:デフォルトの名無しさん
09/06/27 13:00:52
>>161
一番したのは鍵じゃなくない?
インターフェースのマークだと思うけど。
もちろんインターフェースはnew出来ないけど。
>>154が言っているのは一番上の鍵の付いたコンストラクタだと思うんだけど。

165:デフォルトの名無しさん
09/06/27 13:02:59
>>164
あ、なるほどorz
プロテクトコンストラクタっていうのの下が隙間相手たから他のところ探してました

166:デフォルトの名無しさん
09/06/27 13:06:39
URLリンク(msdn.microsoft.com)
ja-jpにしてみた

昔はコンストラクタをインストラクターとよく言い間違えてたな

167:デフォルトの名無しさん
09/06/27 13:07:43
コンストラクタがわかってないならオブジェクトもわかってないな

168:デフォルトの名無しさん
09/06/27 13:09:43
やべぇ。鍵マークはprivateだと思ってたよ。protectedだったのか。

169:デフォルトの名無しさん
09/06/27 13:23:27
>>163,167
うん多分良く分かってない・・・
なんとなくnewが使えるのはクラスだけっぽい気がしてきたけど
GetTypeメソッド使ってnewがその型に使えるかどうか調べたい時は
IsClassとIsPublicがtrueで、IsAbstractとIsInterfaceとIsEnumがfalseの奴を選んであげればいい、のかな・・・?

170:デフォルトの名無しさん
09/06/27 13:33:53
ん? コーディング時じゃなくて実行時に知りたいってこと?

171:デフォルトの名無しさん
09/06/27 13:42:09
>>170
実行時というか、論理的?に調べるというか
MSDNでそう書いてあるから、じゃなくて、ちゃんとプログラムとして実行してみて
この型はこうなってるからnewが使える、使えない、みたいな感じのことができるようになっておきたいなと・・・
いまだとちゃんとnewが使える理由理解してないから

172:デフォルトの名無しさん
09/06/27 13:55:03
newは「使える/使えない」じゃなくて「使わなきゃいけない/省略してもいい」かどうかって
視点で見た方がいいかもよ。

173:デフォルトの名無しさん
09/06/27 13:56:27
簡単だ
newするスコープからアクセス可能なコンストラクタが存在する
かつ、抽象クラスでも列挙型でもない

174:デフォルトの名無しさん
09/06/27 14:00:26
訂正
列挙型はnewできる
というか値型の場合はコンストラクタの有無にかかわらずnew可能

175:デフォルトの名無しさん
09/06/27 14:26:36
そういうのって後で自然に分かってくると思うんだが

176:デフォルトの名無しさん
09/06/27 14:32:20
>>171
もういいよ。C#の文法を勉強したくないということだけはよく分かった。

177:デフォルトの名無しさん
09/06/27 14:48:13
>>171
まず、newは

・ 値型のデフォルト値の作成(例:new int(),new BindingFlags())
・ コンストラクタの呼び出し(例:new StringBuilder())

の2つの用途で使える事を押さえておく必要がある。

前者は引数なしのnewで値型なら必ず使えるし、参照型では絶対に使えない。

後者は、値型なら引数1個以上、参照型なら引数0個以上のnewで、
コンストラクタが定義されていれば使えるし、定義されていなければ使えない。

ただし、使えるといってもどこからでも使えるわけではなく、
例えばアクセス修飾子がprotected(鍵マーク)ならnewする型の内部と、その派生クラスの内部でしか使えない。

このあたりはメソッドやプロパティと同じ仕組みなので、newだけ特別という事は無い。
これで理解できないなら、C#を基礎から学び直せ。

178:デフォルトの名無しさん
09/06/27 14:51:40
あと、インターフェイスは参照型だが、コンストラクタを定義できないので
newできない、という事になるが、
例外として、COM関連のインターフェイスはnewできるものもある。

(例:Microsoft.Office.Interop.Excel.Application)

たぶんCoClass属性のおかげだと思うが、
俺もよくわかって無いので自分で調べてくれ。

179:デフォルトの名無しさん
09/06/27 14:54:27
簡単には、GetConstructorしてpublicなやつがとれるかどうか。
Reflecterで調べてもいいけど。
※ただしそれが絶対というわけではない。

まあ普通はMSDNとかドキュメントで仕様を見なきゃいけないんだけどね。
まあ確認したいってことなら。


180:デフォルトの名無しさん
09/06/27 14:55:42
ところで全然関係ないけど、インターフェイスのnewを普通のコードでサポートしたいことがあった。
※単に文法的な話なだけだが。


181:デフォルトの名無しさん
09/06/27 15:09:30
>>173,177
あ、列挙型にnewを使う時は引数を指定できない=1番目の定数の作成に固定されてるから
VisualStudioで型名の後に(を入力しても何もポップアップされなかったのか!そんなの当たり前だから表示するはずないだろ的な。
つまりVisualStudio自体はちゃんとnewの後に来てもおかしくない型名だけ表示してくれてたんだ
やっとちょっとすっきりした、ありがとう

>>176
ごめん

182:デフォルトの名無しさん
09/06/27 15:26:10
> VisualStudioで型名の後に(を入力しても何もポップアップされなかったのか!

ん?列挙型でも(の後にポップアップが出てくるぞ?

例えば、 enum A{} なら

new A(

と入力した直後に

A.A()

とポップアップする。(引数0個のnewが使えますよ的な意味で)

183:デフォルトの名無しさん
09/06/27 15:35:50
>>182
あれ、Intとかだとそうなるけど、列挙型だと俺のとこではならない・・・
例えば上で出てる
System.Reflection.BindingFlags a = new System.Reflection.BindingFlags
まで書いて(入力しても無反応
VisualStudio2008のSP1当ててるから最新のはずなんだけども

184:デフォルトの名無しさん
09/06/27 15:42:18
>>181
VC#のインテリセンスはお利口だから使える候補だけ出てくれるよ。
出てくれない時はほとんどの場合自分のミス。
ほとんどっていうか今までにインテリセンス様が間違った事がないけど、たまーにあるらしいっていうのも聞いたことある程度。

185:デフォルトの名無しさん
09/06/27 15:55:15
さすがインテリ

186:デフォルトの名無しさん
09/06/27 16:21:46
>>184
VS2008だと、拡張メソッドがらみでジェネリック引数制約が複雑に混ざるとダメだね
VS2010なら大丈夫なんだけど

187:デフォルトの名無しさん
09/06/27 16:32:34
また重くなりそう

188:デフォルトの名無しさん
09/06/27 18:50:31
.NET 3.5 SP1の入った環境で、コンボボックスに
AAA
BBB
CCC
というデータが入ってる時、キーボードの「A」を押すと自動的に「AAA」が選択されるという
ショートカット(?)機能を止めたいのですが、どのプロパティを書き換えればいいのでしょう?

189:デフォルトの名無しさん
09/06/27 19:01:53
>>188
ああ、それね。以前オレも同じ問題に突き当たって結局解決できなかったから、
コンボボックスのプルダウンが表示されていない状態のときは履歴を削除するかたちで対応した。

正しいやり方を知ってる人があれば教えてほしい。

190:デフォルトの名無しさん
09/06/27 19:12:06
KeyPressでHandledしてしまえばいいかも

191:デフォルトの名無しさん
09/06/27 19:52:02
正確には覚えてないんだけど、
親フォームのKeyPreviewをtrueにして、親のKeyDownイベントで現在の値を保存、
コンボボックスのSelectionChangeCommittedで保存しといた値を再設定してやるんだったかな。
なんかそんな方法で擬似的にキーボードショートカットが使えないように
見せかけた覚えがある。
ちゃんと動くようになるまで、かなり試行錯誤した覚えが。

192:デフォルトの名無しさん
09/06/27 19:55:30
>>190
KeyPressだとたぶん手遅れになる。やるとしたらKeyDownじゃないかな。

193:デフォルトの名無しさん
09/06/27 20:25:23
>>192
全角文字でも頭出しできるんだぜ?

194:デフォルトの名無しさん
09/06/27 20:43:28
>>191
うーむ。もうちょっと確かな情報だとありがたい
>>192,193
違うんだな。KeyPressのイベントのあとで補完作業が行われるんだ。だから困る。

195:デフォルトの名無しさん
09/06/28 01:50:16
アクセス装飾子と「override」(もしくは「virtual」など)の順番って、
「(アクセス装飾子) override」が一般的なのかな?
俺はoverrideの方を最初に持ってくる方が好きなのだが、
エディタが自動的に上記の順番に変えちゃうことがあるし、
解説サイトとかでも同じようにやってるので、何か意味があるのだろうか

196:デフォルトの名無しさん
09/06/28 01:59:47
>>195
まあ、順序にそれほど深い意味はないと思うけど、
「他の人とそろってる」ってのは大事。
そういう意味では、エディタの言うこと聞いとくのが一番。

「自分はこっちの方が好き」とかいう理由で順番変えない方がいい。
解説サイトも Visual Studio のデフォルトに合わせてるだけだと思う。


197:デフォルトの名無しさん
09/06/28 02:24:27
>>196
なるほど
エディタに変更されるたびに自分流に書き換えるのは非効率的だし、
統一という意味でも、エディタの方に合わせておいた方がよさそうだ
アクセス装飾子を先に書くようにするよ
サンクス

198:デフォルトの名無しさん
09/06/28 10:11:30
コンボボックス内のリストボックスに LB_FIND が来るんで、
そいつを無視するんだったかな・・・。

デフォルトでは大文字小文字を無視するんで、LB_FIND の代わりに
LB_FINDEXACT でごにょごにょした記憶があるな・・・。

199:デフォルトの名無しさん
09/06/29 00:35:36
初歩的なことですみません。
pictureBoxを配置し、イメージを表示したとき、
そのイメージのパスを取り出すには、
なんとしたらよいでしょう?
MessageBox(pictureBox.ImageLocation);
がNullなのです。


200:デフォルトの名無しさん
09/06/29 00:48:03
そのプロパティはLoad使ったときしか使えない

>Load メソッドを呼び出すと、ImageLocation プロパティが上書きされ、メソッド呼び出しで指定された URL が ImageLocation に設定されます。

201:デフォルトの名無しさん
09/06/29 00:49:17
明日の6/29(正確には今日ですが)に、衛星を使って採取された世界中の標高データが無料で
公開されるとのことです。

【社会】人工衛星を使ってかき集めた、世界の「標高データ」を無料公開
スレリンク(newsplus板)

そこで早速この標高データを使ってプログラムを組んでみようと思っています。

データは"GeoTIFF"というTIFF画像ファイルの拡張版フォーマットで提供されるようです。
標高データに加え、そのマップの経度・緯度情報といった付加的なヘッダが付け足されたのが
"GeoTIFF"らしいです。
※GeoTIFFに関して詳しくは→URLリンク(trac.osgeo.org)

C#でこのGeoTIFFを読み込みたいのですが、なにか便利なメソッドやライブラリはありますか?
GeoTIFFに対応していなくてもTIFFファイルやTIFFファイルのヘッダを読み込めるメソッドが
あれば是非活用したいです。

202:デフォルトの名無しさん
09/06/29 00:51:15
>>201
そもそも.NET クラスライブラリがTIFFを読めるわけだが?
ただ抽象化されていて、各画像フォーマットごとの詳細なメタデータが取れたかどうかは定かではない。

203:デフォルトの名無しさん
09/06/29 00:53:34
ついでに「詳しくは」って出したサイトに libgeotiff って書いてあるのが見えないのか?

204:デフォルトの名無しさん
09/06/29 02:07:34
>>200
thanks



205:デフォルトの名無しさん
09/06/29 11:06:50
広告だと思う
203までが

206:デフォルトの名無しさん
09/06/29 15:04:41
フォームにパネルとエディットボックス類を配置し、
パネルにDirectXで編集画面を描画しています。
パネル上に描画されているオブジェクトを選択している状態で Del キーを押すと
そのオブジェクトを削除 とやりたいのですが、
そうするとエディットボックス上の文字を削除するときの DEL と区別ができません。
パネルにフォーカスを設定できればすぐに解決できるのですが...
どうすればうまく解決できるでしょうか?


207:デフォルトの名無しさん
09/06/29 15:25:57
無理やり設定すれば取れないこともない。

208:206
09/06/29 22:58:04
自己解決しました。

編集用のパネルMouseDownしたときに this.ActiveControl = null にしてエディット系のフォーカスを外し、
フォームの KeyPreview を true にして、フォームのKeyDown イベントで、
アクティブコントロールが null かつ Del キーがおされたときに
オブジェクトを削除するようにしました。


209:デフォルトの名無しさん
09/06/29 23:03:09
VS2008 C#にてExcel(2003もしくは2007)を起動して表を作成しています。
C#からExcelを起動した時のみ、有効にしていたExcelアドインが使えなくなっていま
す。
Test1.xlaというアドインを事前に有効にしておき、手動でExcelを起動すると、
Test1.xlaの中にあるマクロは関数の一覧画面に表示されていて問題なく使えるので
すが、
C#からExcelを起動するとアドイン自体は有効であると表示されているにも関わら
ず、
関数の一覧画面に表示されず使えなくなってしまいます。
セキュリティは低に設定しても同じでした。

Excelのオブジェクト生成は以下のように普通のことをやっているつもりです。
Excel.Application app = null;
Excel._Workbook wb;
Excel._Worksheet st;
try {
app = new Excel.ApplicationClass();
wb = (Excel._Workbook)(app.Workbooks.Add(Missing.Value));
st = (Excel._Worksheet)wb.ActiveSheet;
以降の処理で線引いたり値を張り付けたりです。

Excel起動時にアドインをチェックして、app.Workbooks.Open(アドイン名,…)を実行
すれば関数の一覧画面に出てくるのですが、
原因が分からないので、この対処で問題ないのか不安です。
どなたか原因と正しい対処をご存じないでしょうか?

210:デフォルトの名無しさん
09/06/30 00:11:09
>>208
>>207で答えてるのに事故解決化よ

211:デフォルトの名無しさん
09/06/30 00:40:31
コンソールアプリでアプリが終了したときに飛んでくるイベントとか無いですか?

212:デフォルトの名無しさん
09/06/30 00:43:40
>>211
全てのオブジェクトが開放されてるのにどうやってイベントよこすんだ?

213:デフォルトの名無しさん
09/06/30 00:58:30
ああ、207って206へのレスだったんですね


214:デフォルトの名無しさん
09/06/30 01:15:24
>>210
>>207って答えてるうちに入るんだw

215:デフォルトの名無しさん
09/06/30 04:08:44
>>211
デストラクタ

216:デフォルトの名無しさん
09/06/30 10:04:27
>>214
これでわからなければさらに聞けばいいだけ

217:デフォルトの名無しさん
09/06/30 10:05:20
まあ実際にコード書いてみてうまくいったのを確認してから>>207書いたのだが

218:201
09/06/30 14:01:39
>>203
> ついでに「詳しくは」って出したサイトに libgeotiff って書いてあるのが見えないのか?

fURLリンク(ftp.remotesensing.org)

↑のファイルの中身を見てみたのですが、見あたるのは *.c ファイルと *.h ヘッダファイルだけでした。
GCC用のプログラムのようにも見えるのですがこれらをC#で使うことは可能でしょうか?

219:デフォルトの名無しさん
09/06/30 14:12:57
>>218
ヒソヒソ、アホは無視したほうがいいですよ

220:デフォルトの名無しさん
09/06/30 14:22:54
>>218
libgeotiff をDLLとしてビルドして、それをC#から使えばよいのでは?

221:201
09/06/30 14:36:40
CのプログラムをVisual Studio .NETでDLLコンパイルし、生成されたDLLファイルをC#のプロジェクトで使う
という技は聞いたことはあるのですが実際に試したことはまだ一度もありません。
初心者向けのプログラムの本にもDLLとしてビルドしてそれを他のプロジェクト中で使うという
方法を説明したものは見あたらないのですが、そういった技を解説してくれているサイトというのは
無いでしょうか?できるようになったら応用がきく気がします。

222:デフォルトの名無しさん
09/06/30 15:37:14
必要なソースやヘッダを含んだVC++プロジェクトをつくる
(プロジェクトを作るときのウィザードで、ダイナミックリンクライブラリ)を選択しておく。

もしくは、適当に空っぽのプロジェクトをつくって必要なファイルを追加し、
VC++メニューからプロジェクト→プロパティ→構成プロパティ→構成の種類でDLLを選択する。

マクロ
#define DLL_EXPORT(type) extern "C" __declspec(dllexport) type __cdecl
をどこかに追加し、公開したい関数をとにかく

DLL_EXPORT(関数の戻り値の型) 関数名(引数リスト)

という形にする。(h も c/cpp も両方)
たとえば元の関数が
int hoge(const char *s) と宣言されていれば
DLL_EXPORT(int) hoge(const char *s) としておく。これで関数が公開される。

ビルドする。

DLLできる。

dependency walker というフリーソフトに突っ込んで、
意図した名前の関数が公開されているか見る。

まずはここまでだな。


223:デフォルトの名無しさん
09/06/30 16:51:44
クラスからフォーム1のインスタンスを作製し
そのフォームからクラスのメゾッドにアクセスしようとすると
「静的でないフィールド、メソッド、またはプロパティ 'Test()' で、オブジェクト参照が必要です」
とエラーがでてメゾッドを実行できないのですが、何が間違っているのでしょうか?


224:デフォルトの名無しさん
09/06/30 16:52:54
インスタンス.Test()ってやってる?
クラス名.Test()じゃなくて

225:223
09/06/30 17:04:42
ありがとうございます。
クラス名.Test()しておりました・・・そのせいですね。。
しかし、あるソフトのプラグインを作りたくてやっていたのですが
インスタンス名がわかりません・・・


226:デフォルトの名無しさん
09/06/30 17:08:44
そりゃあそのソフトのプラグインの説明書に出てると思うぞ・・・

227:223
09/06/30 17:11:38
ご親切に大変ありがとうございました。
もう一度よく調べてきます。


228:201
09/06/30 18:36:13
>>222
ありがとうございます。早速試してみます。

229:デフォルトの名無しさん
09/06/30 23:02:43
複数のPrintDocumentの出力結果をマージする方法とか無いですか?
要するにPrintジョブをまとめたいだけなんですけど。


230:デフォルトの名無しさん
09/07/01 01:13:27
オブジェクト指向言語の場合、フローチャートじゃなくて何が使われるんですか?

231:デフォルトの名無しさん
09/07/01 01:40:01
UML

232:デフォルトの名無しさん
09/07/01 01:45:36
UML

233:デフォルトの名無しさん
09/07/01 02:39:45
UML = Ultra Man Leo

234:デフォルトの名無しさん
09/07/01 02:49:00
VS2005 でツリービューを作成しているのですが「+」をクリックした時だけ
では無く、「+」の隣にある文字列がクリックされた時にもNodeを展開するには
どうすればよいでしょうか?

235:デフォルトの名無しさん
09/07/01 04:04:16
>>231-233
ありがとうございます。勉強してみます。


236:デフォルトの名無しさん
09/07/01 04:06:40
どういたしまして

237:デフォルトの名無しさん
09/07/01 06:32:00
>>234
NodeMouseClickでTreeNode.Expand

238:デフォルトの名無しさん
09/07/01 09:49:46
>>226面白い事言うね

239: [―{}@{}@{}-] デフォルトの名無しさん
09/07/01 10:08:29
C#でCompactFrameworkの書籍やサイトでお勧めってありますか?

240:デフォルトの名無しさん
09/07/01 10:42:15
こっちで聞け
スレリンク(tech板)

241:デフォルトの名無しさん
09/07/01 11:07:09
BinaryWriterでbyteを書き込むとAnyCPUとx64でコンパイルしたプログラムで結果が違うことがあるんだが・・・なぜ?


242:デフォルトの名無しさん
09/07/01 11:08:13
>>237
ありがとうございました。

243:デフォルトの名無しさん
09/07/01 11:09:43
>>241
エンディアンの違いじゃね?

244:デフォルトの名無しさん
09/07/01 11:37:02
LargeIcon、オーナードロー状態のListViewでアイテム毎の描画エリアの大きさ変更するにはどうしたらよい?
LargeImageListのImageSizeを弄ると大きさが変わるみたいだが指定した数値になるわけじゃないので厳しい。
LVS_OWNERDRAWFIXEDはReportViewじゃないと使えないので駄目。

245:デフォルトの名無しさん
09/07/01 11:39:31
>>241
C#でおk

246:234
09/07/01 11:42:36
>>237
NodeMouseClickイベントの中で次のコードを書いたところ
「+」の隣にある文字がクリックされた場合には、正常に
展開・縮小をする事が出来る様になったのですが、
逆に「+」がクリックされた時には、正常に展開・縮小をする事が
出来なくなってしまいました。

※不正な挙動を細かく言いますと、縮小中のノードの「+」部分を
マウスでした状態(左ボタンを押しっぱなし)では展開され、
マウスを放すと縮小されてしまいます。

⇒次に続きます。

247:デフォルトの名無しさん
09/07/01 11:43:20
>>241
元のデータは同一なの?
x86もやってみた?

248:234
09/07/01 11:43:32
private void tvTop_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
 Point pntMouseClick = new Point();
 pntMouseClick.X = e.X;
 pntMouseClick.Y = e.Y;
 tvTop.SelectedNode = tvTop.GetNodeAt(pntMouseClick);

 //ノードが展開されていない場合には展開する。
 if (!(tvTop.SelectedNode.IsExpanded))
 {
   //選択されたノードを展開する。
   tvTop.SelectedNode.Expand();
 }
 else
 {
   //選択されたノードを折り畳む。
   tvTop.SelectedNode.Collapse();
 }
}

どうすれば「+」がクリックされた時にも「隣にある文字列」
がクリックされた場合にも意図した動きをする様になるでしょうか?

249:デフォルトの名無しさん
09/07/01 11:52:49
TreeView.HitTestでどこクリックされたか調査

250:デフォルトの名無しさん
09/07/01 18:14:53
Windows の標準操作から外れるアクションになるのはお勧めできないけどな

251:デフォルトの名無しさん
09/07/01 18:53:19
Formの最大化ボタンを押したらフルスクリーン表示に切り替えるコードの実装を書いてるんだが、
ウィンドウスタイルを設定するときにIntPtrがオーバーフローを起こすようで、
元に戻したらウィンドウのシステムアイコンが左右逆になっちゃって笑えるぜw

あとひと踏ん張り……。

252:デフォルトの名無しさん
09/07/01 19:57:28
いじり方間違っている感がするけどそれはそれとして
なんでその処理でウィンドウスタイルなんかいじってる
んだ?

253:sage
09/07/01 20:49:14
ダウンロードしたフリーウェアのプログラムに自分で作ったプログラムを追加しましたが自分のプログラムの所だけ
実行してくれません。express editionのソリューションエクスプローラで自分のプログラムは追加
出来た様に見えるのですが。D&Dしてリビルドしました。何か他にやる事がありますか?
自分のプログラムの部分は今はhello worldにしてあるので間違っては無さそうですが。

254:デフォルトの名無しさん
09/07/01 20:56:01
エスパーが必要だな。
それか、そのフリーウェアの作者に聞いたら?

255:デフォルトの名無しさん
09/07/01 20:56:20
まずはC#の入門書を買ってこようか

256:デフォルトの名無しさん
09/07/01 20:58:50
253です。プログラムに追加ではなくプログラムが入っているプロジェクトに入れました。

257:デフォルトの名無しさん
09/07/01 21:00:03
とりあえずそのフリーウェアをさらしてみたら

258:デフォルトの名無しさん
09/07/01 21:07:29
スタートアッププロジェクトの設定ができてないんじゃ

259:デフォルトの名無しさん
09/07/01 21:10:55
プロジェクトに追加したんじゃなくて、単に同じVSで開いただけなんだろうw

260:デフォルトの名無しさん
09/07/01 21:15:54
ArrayListyからList<>に入れ替えてForEachするのと
ArrayListでforeachするのってどっちがいいの?

261:デフォルトの名無しさん
09/07/01 21:16:33
誰か訳してくれ

262:デフォルトの名無しさん
09/07/01 21:19:02
入れ替えるだけ無駄

263:デフォルトの名無しさん
09/07/01 21:19:18
Which is good as for doing foreach with the replacement with List<>
from ArrayListy, doing ForEach, and ArrayList?

264:デフォルトの名無しさん
09/07/01 21:20:24
英語でおk

265:デフォルトの名無しさん
09/07/01 22:32:38
English will do.

266:デフォルトの名無しさん
09/07/01 22:49:40
>>252
フレームが残っているとフルスクリーン時に全画面に描画ができないから。
C++から移植したのでウィンドウスタイルを直接APIで書き換えていた。
.NET上でもいじれるんじゃないかと気づいたので、明日書き換えてみよう。


267:234
09/07/01 23:26:24
>>249
遅くなりましたがお陰様でやりたい事が実現出来ました。
どうもありがとうございました。

268:デフォルトの名無しさん
09/07/02 06:08:31
型付データセットを使ったアクセス型のデータベース
でソフトを作っていますが、テーブルを増やすことに
なりました。新たにテーブルを増やすともう一度データベース
を構築しなくてはならないので、他のテーブルとのリレーション
はないことから、別のデータベースファイルを作成し
別個にデータベースを構築しようと思っています。

ひとつのソフトでいくつものデータベースファイルを
読み込むような構成としても大丈夫なものでしょうか。


269:デフォルトの名無しさん
09/07/02 07:13:05
別に OK だけど、
「テーブルを増やすとデータベースを構築しなくてはならない」ってのは、意味不明。

そんなん、クエリーひとつ流すだけだし。まさか、リードオンリーで使ってる
わけでもあるまい?

270:252
09/07/02 10:51:49
>>266
なんとなくやっぱりな感じだけど…
URLリンク(www.atmarkit.co.jp)
もとが C++ らしいし WM_SYSCOMMAND 周りの話はいいよな

ちなみにスタイルいじりは SetWindowLongPtr じゃなく、
CreateParams をオーバーライド、UpdateStyles でやるのが正道。

271:デフォルトの名無しさん
09/07/02 11:44:31
C#でデータベースにアクセスする方法で、本だとデータソースの追加って奴使う方法が載ってます。
ネットだとそれせずにソース上で全部記述して処理する方法をよく見るんですけど、
この2つの方法って利点弱点ってあるんでしょうか?
こっちの方法はやめとけってのあったら教えて下さい。
データソースの追加って奴の方が楽なように感じられないでもないような気も。
DBMSはSQL ServerとAccess両方使う予定です。

272:デフォルトの名無しさん
09/07/02 11:47:12
データソース使うと便利なメソッドとかあるからプログラミングが楽だけど
動作が重いってイメージ
オレは初心者だから、上級者から見ればたぶん違う

273:デフォルトの名無しさん
09/07/02 11:47:57
スクリーンショット何枚も撮って貼り付けるよりコード示す方が手っ取り早い

274:デフォルトの名無しさん
09/07/02 11:52:35
>>270
なるほど……。参考になる。ありがとう。
URLの記事は知らなかったけど、ウィンドウスタイルを書き換えるのをやめてFormBorderStyleを変更するようにした。
コードが簡単になったし、変な動きも止まった。

でもフルスクリーン時にマウスクリックをすると挙動がおかしくなる。
テクスチャの描画(Direct3D)をするとフルスクリーン/ウィンドウの切り替えができない、
など色々とおかしいところがあるのでまだ調整中。

275:デフォルトの名無しさん
09/07/02 12:41:21
>>274
Direct3D?そっちかよ
その場合は D3DPRESENT_PARAMETERS 変えて Reset だろ
User32 まわりの機構を使わないで

276:デフォルトの名無しさん
09/07/02 12:51:25
>>274
デバイスの再設定/モニターの解像度の変更はそのとおりだけど、
描画対象のウィンドウのフレームを変更してあげないといけない。
理由は上に書いたとおり。

これまでの変更で大体動くようになってきたけど、
フルスクリーン表示にするモニターに別のアプリのウィンドウがあるときに、
画面をクリックするとフォーカスを失っちゃうんだよなぁ。
どうもほかのウィンドウのほうが上側に来ているような気がする。
(DirectXでフルスクリーン描画するとほかのウィンドウの描画内容無視して描いてしまう)

277:デフォルトの名無しさん
09/07/02 12:52:31
>>275の間違いだた。

278:デフォルトの名無しさん
09/07/02 14:23:13
Web表示で困ってます。
Webブラウザで、URLを開くには、
webBrowser.Navigate(URL);
では読み込みずみのhtmlファイルを開くには?
string htmlfile = "<html><body>~~~</body></html>"
みたいなのを表示するにはどうしたらよいですか?


279:デフォルトの名無しさん
09/07/02 14:29:13
DocumentTextかDocumentStream

280:デフォルトの名無しさん
09/07/02 14:30:09
>>272
動作が重いとなると痛いですね。
今ある本が平成14年のVisual C#.NETによる実践データベースプログラミングってかなり古い本なんで新しいの買って勉強してみます。

281:デフォルトの名無しさん
09/07/02 15:22:18
>>276
やっと話が見えてきた
WM_SYSCOMMAND SC_MAXIMIZE いじってると思うけど
そのあと元処理につないで、つまり base.WndProc して
最大化させればいい気がする


282:デフォルトの名無しさん
09/07/02 15:26:18
画像ビューアの読み込み部分なんですが、
public Image Load(string filePass)
{
Stream fs = new FileStream(filePass, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
BitmapDecoder bf = BitmapDecoder.Create(fs, BitmapCreateOptions.None, BitmapCacheOption.Default);

Image image = new Image();
BitmapSource bsource = bf.Frames[0];
image.Source = bsource;
image.Width = bsource.PixelWidth;
image.Height = bsource.PixelHeight;
Console.WriteLine("{0}", bf.CodecInfo.FileExtensions);
//fs.Close();

return image;
}
このソースだと読み込んだファイルはオープンされたままで、
例えば名前の変更とかができません。fs.Close()をつけるといいのですが
それだと画像が表示されなくなってしまいます。
よそ様の作られたアプリだと開いたファイルに対して問題なく操作できるので、
そういった挙動にしたいのですが、どうすればいいでしょうか。

283:デフォルトの名無しさん
09/07/02 15:32:18
普通はImage.FromFileとかで一気にImageオブジェクト作ってんじゃねえの

284:デフォルトの名無しさん
09/07/02 15:39:09
そりゃImage違いだ。
System.Windows.Controls.Imageの話だろ。

285:デフォルトの名無しさん
09/07/02 15:43:45
解説

デーコーダの作成後に bitmapStream を閉じる場合は、OnLoad キャッシュ オプションを使用します。既定の OnDemand キャッシュ オプションは、ガベージ コレクタでビットマップが必要とされ、クリーンアップが処理されるまで、ストリームへのアクセスを維持します。

286:デフォルトの名無しさん
09/07/02 15:54:32
>>285
おお、BitmapCacheOption.DefaultをBitmapCacheOption.OnLoadにすることで望みの動作になりました。
ありがとうございます。素で見逃してた恥ずかしい
でもDefaultとOnLoadの違いってなんでしょう?どちらもイメージ全体をメモリ上に置くみたいなので
Defaultでもいいように思えますが。

287:デフォルトの名無しさん
09/07/02 16:02:08
>>286
ドキュメントが悪い。
enum BitmapCacheOption {
Default = 0,
OnDemand = 0,
OnLoad = 1,
None = 2,
};


288:デフォルトの名無しさん
09/07/02 16:04:51
mono のソースによると:
namespace System.Windows.Media.Imaging {

public enum BitmapCacheOption {
OnDemand,
OnLoad,
None,

Default = OnDemand,
}

}


289:デフォルトの名無しさん
09/07/02 16:13:43
>>287-288
そうだったのか…

290:デフォルトの名無しさん
09/07/02 16:22:06
横からだけどOnDemandってどゆこと?ドキュソみてもよくわからん

291:デフォルトの名無しさん
09/07/02 16:44:57
>>279
できました。ありがとう。


292:デフォルトの名無しさん
09/07/02 16:55:26
>>271
データソースの追加だと型付データセットができる。
これで、テーブル名をプロパティのようにアクセスできる。
作成にとても楽だけどわけわからんコードがたくさん生成
されるのでコード単位での操作は難しい。

293:デフォルトの名無しさん
09/07/02 17:23:28
webBrowserでクリックしたとき、クリックしたURLを取得するには、どうしたらよいでしょう?
マウスクリックイベントをイベントフラグとして登録するとかですか?


294:デフォルトの名無しさん
09/07/02 17:38:10
>>292
参考にさせてもらいます。
ありがとう。

295:デフォルトの名無しさん
09/07/02 20:56:43
質問です

dataGridView1[1, 1].Style.BackColor = Color.Red;
などで塗りつぶしたセルを元の状態に戻すにはどうしたらよいでしょうか?

dataGridView1.DefaultCellStyle.BackColor = Color.Empty;
dataGridView1.RowHeadersDefaultCellStyle.BackColor = Color.Empty;
を試しましたが無理でした

dataGridView1[1, 1].Style.BackColor = Color.Empty;
とすればできるのですが表のすべてのセルを一気にデフォルト色に変えたい場合のよい方法が
あれば教えてください

296:デフォルトの名無しさん
09/07/02 21:03:21
個別の設定の方が優先されるのは当たり前だろ、と
素直に一つずつ設定しる

変更したセルをListとかに保存しといてそれだけ元に戻す、とかの実装はどうか

297:デフォルトの名無しさん
09/07/03 01:23:20
すれ違いかもしれないですが一つ質問があります。

C# or VB.net で開発したアプリはRefactorとかいうツールを使うと
簡単にコードが見られてしまいますが、
このツールを使用し逆アセンブルをしたとしてもコードの中に入れている
コメントは相手には見られないと考えても良いでしょうか?

298:デフォルトの名無しさん
09/07/03 01:24:42
そんなに時間かからないからさ
自分でやってみな

299:デフォルトの名無しさん
09/07/03 01:27:50
>>298
自分でやてtみて逆アセンブルは出来ましたが、
コメントは見えませんでした。

という事でコードは簡単に相手に見えてしまうが、
コメントは逆アセンブルをする悪い人にも見えない
という考えが正しいかご教授下さい。

300:デフォルトの名無しさん
09/07/03 01:40:38
コメントが見られる事はないよ
ソースコードも自分が書いたそのものではなく
できる限り復元してみただけのもの

301:デフォルトの名無しさん
09/07/03 02:08:52
>>300
ありがとうございます。
安心しました。


因みにですが、もう一つだけ質問させて下さい。
Visual Studioのアイテムボックスの右上にある「小さく注射器のアイコン」は
.Net Frameworkに用意されていますか?

自動で伸縮する奴です。
常に表示されているとウザイので、このアイコンがもし.Netに用意されているのであれば
必要な時のみ呼び出す事が出来て非常に便利だと思うのですが。

302:デフォルトの名無しさん
09/07/03 02:20:48
注射器って、、、これ押しピンだろう
標準には無いかな、SP1のMFCにはあるが。

303:デフォルトの名無しさん
09/07/03 02:27:26
>>302
.Netじゃ用意されてないんですね。
実現するにはどうすればよいでしょうか?

304:デフォルトの名無しさん
09/07/03 03:49:39
自分でかけよ…

305:デフォルトの名無しさん
09/07/03 10:07:16
>>304
用意されているのならそれを使いたいのです。

306:デフォルトの名無しさん
09/07/03 10:38:55
フリーのと有料のがあった気がする

307:デフォルトの名無しさん
09/07/03 10:41:36
>>305
MFCも.NET Frameworkも基本的にはライブラリなので、
ライブラリではないアイコンなんかのリソースはあまり重視されないし、記事も多くない。
インストールフォルダやDVDの中を探してあるならそれを使えばいいし、無いなら自分で探せばいい。
自分で考える前に人に聞くな。

308:デフォルトの名無しさん
09/07/03 11:06:37
アイコンそのものじゃなくて、アイコンの機能というか自動で伸縮する
機能が欲しいってことじゃないのかな?

どっちにしても「自分で書けよ」って話になるけど。

309:デフォルトの名無しさん
09/07/03 11:08:31
>>308
ズバリその通りです。

>>306 >>307
>>308さんのおっしゃった事そのものです。

いずれにしても、.Netではその押しピン機能は用意されていないのですね。
残念ですが自分で1から作成します。


310:デフォルトの名無しさん
09/07/03 11:14:27
ドッキングウィンドウでぐぐれよ

311:デフォルトの名無しさん
09/07/03 11:16:02
そういうのは抵レベルなところからフレームワーク組むことになるから大変だよ
サードパーティーのコンポーネント使ったほうがいいよ

312:デフォルトの名無しさん
09/07/03 11:23:04
>>311
金が掛かる。


>>310
ぐぐってみます。

313:デフォルトの名無しさん
09/07/03 11:26:56
>>308,309
押しピン機能? いったい何のことだ。
さっきから要領の得ない会話をしているように思うんだが、オレの理解力が無いだけなのか。
押しピンで表現されるツールチップアイコンの機能といったら、通常は「ウィンドウを常に手前に表示」だと思うんだが?

それともドッキング可能なペインのこと言ってるのか?

314:デフォルトの名無しさん
09/07/03 11:46:26
正確な名前は知らんけど、押しピンアイコンをクリックすると、
ウィンドウが自動的に隠れるのを一時的に止めることができる。

315:デフォルトの名無しさん
09/07/03 12:08:32
VisualStudio2008のC#のIDEで逆アセンブリウィンドウを出す方法を教えてください。

VS2005の場合ならmsdnに書いてあったんですが、2008ではメニュー構成が変わったのか
探し方が悪いのか、見つけることができません。
URLリンク(msdn.microsoft.com)(VS.80).aspx

ヘルプに「逆アセンブリウィンドウ」という項目はあるのですが、クリックしても
「インデックス エントリのトピックがありません」というエラーが出ます。

316:デフォルトの名無しさん
09/07/03 12:13:02
とりあえず「プッシュピン」らしい

317:デフォルトの名無しさん
09/07/03 12:28:33
>>315
右上にその他のバージョンについてはってあるだろ、まあこのページは中身同じだけど。
> デバッガは動作中であるか、中断モードである必要があります。
はおk?

318:デフォルトの名無しさん
09/07/03 13:13:37
>>317
ちゃんと[デバッグ中]にはなっているんですが、
メニューに[逆アセンブリ]が出てきません…

何か手順が違うんでしょうか…
URLリンク(windyakin.if.land.to)

319:デフォルトの名無しさん
09/07/03 13:15:36
>>317
あ、使っているのはstandardエディションです。

320:デフォルトの名無しさん
09/07/03 13:20:35
Express Editionって書かれてるように見えるが…?

321:デフォルトの名無しさん
09/07/03 13:24:27
>>320
最初Expressを使っていたんですが、そのあとStandardを買って上書きで入れました。
タイトルバーがExpressのままなのは謎なんですが、
もしかして、原因はここらへんにあるんでしょうか。

322:デフォルトの名無しさん
09/07/03 13:30:27
上書きなんてできたっけ…?
一旦全部アンインストールしてインストールし直せ

323:デフォルトの名無しさん
09/07/03 13:30:56
とりあえず起動してるのはExpressだな

324:デフォルトの名無しさん
09/07/03 13:39:53
Visual StudioとVisual Studio Expressは別のアプリだから上書きでは入らないと思うぞ。
すなおにExpressをアンインストールしる。

325:デフォルトの名無しさん
09/07/03 13:43:59
買ったのはStandardのアップグレード版です。
最近になってExpressからでもアップグレードできるようになったと
MSのページに書いてあったので入れてみたんですが、
一度消さないとダメなんですか。やってみます。

326:デフォルトの名無しさん
09/07/03 13:58:23
アップグレードってのはライセンス上のものであって
アプリケーションの上書きインストールとは関係ない

327:デフォルトの名無しさん
09/07/03 14:13:48
>>325
ExpressからアップグレードできるのはProfessional版だけじゃなかった?

328:デフォルトの名無しさん
09/07/03 14:15:34
もうその手の嘘はいいよ

329:デフォルトの名無しさん
09/07/03 14:37:23
StandardとEEは別アプリ
併用可能だから上書きとか無理
EEはスタートメニュー直下にあるけどStandardはMicrosoft VisualStudio 200Xの下にできるだろ?

330:デフォルトの名無しさん
09/07/03 14:40:39
アンインストールも必要ないよ
別の場所にアイコンあるの気がつかずにEE起動してるだけだろう
ってもうアンインストールしちゃったかな

331:デフォルトの名無しさん
09/07/03 16:27:51
C#のGUIエディタで、

パネル上にエディタ等があるとして、そのエディタを移動させようとして
カット&ペーストすると、エディタのイベント情報がすべてなくなりますよね。
イベントをすべて保持したまま親コントロールだけをかえたい場合はどうすればよいですか?
コントロールをコピペしてもイベントがリセットされない方法はありませんか?

332:デフォルトの名無しさん
09/07/03 16:28:52
気付かずExpress使い続けてるような奴はそもそもStandard買う意味ねーな

333:デフォルトの名無しさん
09/07/03 16:35:16
>>331
親変えるだけならドラッグでよくね?

334:デフォルトの名無しさん
09/07/03 16:39:33
買ったのに使ってなかったとかワロテマウwww

335:デフォルトの名無しさん
09/07/03 17:11:22
>>331
ドキュメントアウトラインのツリーでドラッグして動かす。
やってみたら目からウロコ。

336:デフォルトの名無しさん
09/07/03 20:04:51
standard買うやつってなんなの?
MFCいらなきゃEEじゃないの?


337:デフォルトの名無しさん
09/07/03 20:14:10
>>336
えっ?

338:デフォルトの名無しさん
09/07/03 23:40:12
WM6でFTPクライアントクライアントを作ってるのですが
WindowsMobileのFormってサイズ指定しても反映しないのですか?
TCPListenerとかでFTP部分は書けたのだけど、情報少なくて四苦八苦してます
CompactFrameworkの話はスレ違いかな?

339:デフォルトの名無しさん
09/07/03 23:48:46
Windows.Formsの話も本来はスレ違いな気がするのでいいんじゃないでしょうか。

>>338の質問も、言語がC#だろうがVBだろうがIronPythonだろうが、一字一句
違いませんよね?でもそれはCompact Frameworkだからではありません。

340:デフォルトの名無しさん
09/07/04 06:34:57
>>338
>WindowsMobileのFormってサイズ指定しても反映しないのですか?
現状はしない。ある意味ウィンドウシステムじゃないから。
FormのSizeはCompactFrameworkではサポートしていない。(ヘルプのバージョン情報参照)

341:デフォルトの名無しさん
09/07/04 11:14:42
>>340
ありがとう。ヘルプを頼りにしてみます

342:デフォルトの名無しさん
09/07/04 13:39:27
MFCとC#Formってどっちが速度速いですか?
最近MFCは何やっても動作がカクカクで嫌になってきたんですが
C#Formで作っても動作はかわらないですか?


343:デフォルトの名無しさん
09/07/04 13:40:08
accessにデータを追加する時
com = new System.Data.OleDb.OleDbCommand("insert into table111(code,name) values(222,'あああ')", conn);
は出来るのに
int aaa = 222;
string bbb = "あああ";
com = new System.Data.OleDb.OleDbCommand("insert into table111(code,name) values(aaa,bbb)", conn);
だと出来ません。valuesの後()の中は変数ではいけないのですか?


344:デフォルトの名無しさん
09/07/04 13:44:57
パラメタライズドクエリとか調べれ

345:デフォルトの名無しさん
09/07/04 13:53:20
>>343
変数の名前だけ渡したってしょうがないだろ。
そのままやるならstring.formatをかける。
ただしそれではSQLインジェクションを本質的に防げないから、>344になる。

346:デフォルトの名無しさん
09/07/04 13:55:00
>>344,345
ありがとうございます。
パラメタライズドクエリ、SQLインジェクション調べてみます。

347:デフォルトの名無しさん
09/07/04 17:38:12
クラスやメソッドごとに辞書形式で利用方法や利用例を記載した本はないでしょうか。
和書でも洋書でもいいです。金額も問いません。


348:デフォルトの名無しさん
09/07/04 17:42:57
APIのオフィシャルリファレンスですら上下刊で1600ページくらいあって、それでも網羅し切れていないというのに

349:デフォルトの名無しさん
09/07/04 17:45:08
地球の資源がヤバい

350:デフォルトの名無しさん
09/07/04 17:51:17
本は更新できないんだと思い知ってリファレンスブックの類を買うの止めたな。

351:デフォルトの名無しさん
09/07/04 17:54:53
MSもCランタイムライブラリみたいに各ページに用例をつけてくれればいいのに、とは思うね。
MSDNのクラス自体の説明文では何がなにやら分からないことが結構ある。

352:デフォルトの名無しさん
09/07/04 17:58:15
昔に比べりゃ大分マシにはなってるけどな~。
URLリンク(msdn.microsoft.com)

書く方もおっついてないんだろうなあ。

353:デフォルトの名無しさん
09/07/04 18:56:15
ご回答ありがとうございます。
紀伊国屋書店のHPに
URLリンク(bookweb.kinokuniya.co.jp)
がありました。
この本はいかがでしょうか…。
業務プログラム構築に支障のない程度のクラスの説明があれば買いたいですが、
立ち読みができないのがつらいです。
英文を読むのは苦じゃないのでアメリカに行きたいくらいですが、
割が合わないかもしれず、お金もありません。

354:デフォルトの名無しさん
09/07/04 20:29:18
緑のバイクさんの数値/文字列の場所に

>文字列の検索 (一般)
>文字列の検索 (正規表現)
>文字列の置換 (一般)
>文字列の置換 (正規表現)

とありますが、一般と正規表現の違いはなんですか?
正規表現でやったほうが効率がいいってことですか?

355:デフォルトの名無しさん
09/07/04 20:42:54
正規表現はパターンマッチング
一般は特定文字列

356:デフォルトの名無しさん
09/07/04 21:42:32
>>353
入門書を選ぶならいいが、実務で使うとなると、もはや紙の本なんか役に立たん
msdnを読め

357:デフォルトの名無しさん
09/07/04 23:08:53
ビルドのプラットフォームの項目にAny CPUしか選択肢が無いのはEEだからなのでしょうか?

358:デフォルトの名無しさん
09/07/04 23:18:08
うん

359:デフォルトの名無しさん
09/07/05 00:31:36
オプションで
ビルド構成の詳細を表示
だったかな

360:デフォルトの名無しさん
09/07/05 02:52:26
そっちはDebug/Releaseじゃないか?
AnyCPUはEEじゃなくても新規作成ししたプロジェクトならそうじゃないかな。
AntCPUの下の構成マネージャーから自分で追加する。

361:デフォルトの名無しさん
09/07/05 02:55:27
ってAnyCPUのほうも「ビルド構成の詳細を表示」をオンにしないと
変更できないね、すまん。

362:デフォルトの名無しさん
09/07/05 03:09:29
Environment.NewLineの中身を判別することは出来るのでしょうか?

363:デフォルトの名無しさん
09/07/05 03:29:36
テキストファイルについて教えてください。

あるロガーが掃き出すテキストファイルに「1AH」(CTRL+Z)が含まれて
いるのですが、1AH以降を取り除くにはどうすればいいでしょうか?
コマンドプロンプトでテキストファイルをバイナリモードでコピーするという
方法で除去できましたが、C#に用意されている機能で除去できないかと
考えています。

よろしくお願いします。

364:デフォルトの名無しさん
09/07/05 07:56:35
>>362
stringなんだからLengthやIndexOf使えば調べられるが

>>363
IndexOfとSubstring
\xとか\u

365:デフォルトの名無しさん
09/07/05 08:46:20
今、VS2008をインストールしていますが、
VB6.0も使用するにはどのような環境にすればよいでしょうか。

366:デフォルトの名無しさん
09/07/05 08:50:18
古い方を先にインストールってのが基本だが

367:デフォルトの名無しさん
09/07/05 09:02:51
>>366
ありがとうございます。
ということは、VB6.0を別途購入し、
VS2008アンインストール
⇒ VB6.0インストール
⇒ VS2008インストール
の流れでいいでしょうか。

368:デフォルトの名無しさん
09/07/05 09:04:07
よく見る、
"object sender, EventArgs e"
とはどういう意味ですか?

369:デフォルトの名無しさん
09/07/05 09:07:10
>>367
うん
今時VB6なんか売られてるかどうかしらんけど

370:デフォルトの名無しさん
09/07/05 09:16:25
>>368
メソッドの引数

はともかくとして
イベントが起こったときに呼び出されるメソッド(イベントハンドラ)に推奨されてる引数の形式
第一引数はobject型 イベントを起こしたオブジェクトが入る ボタンクリックならButtonオブジェクト
第二引数はEventArgsかその派生型 イベント特有の情報が入る MouseDownなら押下されたマウスのボタンや位置の情報
EventArgsは特有の情報がないときに使われる

371:デフォルトの名無しさん
09/07/05 09:16:34
>>369
ありがとうございます。
そのとき、VB2008とVB6.0が併存できるようにすることは可能でしょうか。
何度も質問ですみません。

372:デフォルトの名無しさん
09/07/05 09:25:03
365・367と同じ質問に見えるが、VS2008とVB2008EEとVB6を入れたいってことなのか?
まあ全部できるけど

373:デフォルトの名無しさん
09/07/05 10:10:56
>>372
VC#と、
VB2008と、
VB6.0で開発を行う可能性があるので、
同じPCに入れておきたいんです。

374:デフォルトの名無しさん
09/07/05 11:06:17
>>370
ありがとうございますっ!

375:デフォルトの名無しさん
09/07/05 11:08:51
>>370
"e"はどういう意味なんだろ。
今まで意識したことなかった。

376:デフォルトの名無しさん
09/07/05 11:22:29
名前付けのガイドラインに真っ向から反するよな
eventArgsでいいじゃねえか

377:デフォルトの名無しさん
09/07/05 11:24:44
本当の名前は eの後ろにつくから、とか

378:デフォルトの名無しさん
09/07/05 11:30:04
> パラメータ名と型を見ただけでパラメータの使用法が判断できるような名前にする
がパラメータのガイドラインだが
イベント引数はパラメータ名いらないのよね 型で判断するもんだから

379:デフォルトの名無しさん
09/07/05 11:35:00
MSDNで"eventArgs"を調べたけど、
意味がさっぱり分りません。
使用するときはあるのでしょうか(-_-;)。

380:デフォルトの名無しさん
09/07/05 11:36:37
>>378
すみません、イベントハンドラの引数が2つあるということですかね?

381:デフォルトの名無しさん
09/07/05 11:49:14
>>378
誤解していたわ。良く分かった。

382:デフォルトの名無しさん
09/07/05 11:54:51
>>380
なにを378に聞いてるのかよくわからんが
イベントハンドラの引数は普通2つ、senderとe
イベント引数は一般にeの方だけ指す、と思う

383:デフォルトの名無しさん
09/07/05 11:58:44
たとえば「int a, String b」ってのは、int型の変数a、string型の変数bって意味だ。
intとstringは型、aとbは変数名。これはわかるよな?

同じように「object sender, EventArgs e」ってのはobject型の変数sender、EventArgs型の変数eってこと。
なんで「e」なんてわかりにくい名前に決めたのかは不明だが、何か歴史があるんだろうなあ。

384:デフォルトの名無しさん
09/07/05 12:05:02
>なんで「e」なんてわかりにくい名前に決めたのかは不明だが、

それを話してたんじゃないの?

385:デフォルトの名無しさん
09/07/05 12:36:05
int iと同じで、型の頭文字じゃない?設計者がすげー年輩でFORTRANを意識したとか。

386:デフォルトの名無しさん
09/07/05 12:42:35
>>383
なるほど!分かりやすい説明感謝です。
"eventArgs e"とは別の引数が使われるケースもあるのかなぁ。
見たことない(+_+)。

387:デフォルトの名無しさん
09/07/05 12:47:43
>>376
ヘルプからして e だもんなぁ。

>>379
イベントハンドルデリゲートで特化した場合に使う。
例えば MouseEventArgs では、
マウスのどのボタンが押されたか
マウス ボタンが押されて離された回数
マウス ホイールの回転回数を表す符合付きの数値
マウス イベント生成時のマウスの位置
などが入っている。
つまり、むっちゃ重要で使いまくり。
EventArgs は単に基本クラス。

388:デフォルトの名無しさん
09/07/05 12:59:07
とりあえず例外キャッチしようとして
catch(Exception e)って書いて
「既に定義されています」って言われるとイラッと来る。

389:デフォルトの名無しさん
09/07/05 13:02:12
だからExceptionはexにする
もうそういうふうに指が動くようになってる

390:デフォルトの名無しさん
09/07/05 13:02:15
例外はexでキャッチするようにするといいよ

391:デフォルトの名無しさん
09/07/05 13:02:51
静的メソッドとインスタンスメソッドのちがいはなんですか?
いろんなHPを読んでもイメージがさっぱり掴めません。

392:デフォルトの名無しさん
09/07/05 13:04:55
catch(Exception ex)
ってどういう命令なのですか?

393:デフォルトの名無しさん
09/07/05 13:05:53
命令じゃない。例外ハンドラ。

394:デフォルトの名無しさん
09/07/05 13:12:19
EventArgs
ってどう読むの?「イベントオーギュス」?

395:デフォルトの名無しさん
09/07/05 13:13:29
「catch」だけのときと
「catch(Exception ex) 」のときで、処理はどう変わるの?

396:デフォルトの名無しさん
09/07/05 13:17:23
イベントアーグス

397:デフォルトの名無しさん
09/07/05 13:18:05
いい加減一度死んでから入門書買いに行け。

398:デフォルトの名無しさん
09/07/05 13:26:43
Argsはargument(アーギュメント)の複数形argumentsの略。略するのはC言語の名残
無理に発音するならアーギュスだけどみんな好き勝手に読んでる
JISでは読み方は規定してなかったよね?

399:デフォルトの名無しさん
09/07/05 13:26:49
>>397
それは言い過ぎ…

400:デフォルトの名無しさん
09/07/05 13:27:52
お次は
なんで例外は変数はeやexと分かりにくい名前をつけるの?
xxExceptionでいいじゃないかとかいった質問がきそうだな。

401:デフォルトの名無しさん
09/07/05 13:28:35
>>391
生成しなくても使えるのが静的
生成してできたものがインスタンス

402:デフォルトの名無しさん
09/07/05 13:29:56
そんなの

非常に狭い部分でしか使わない変数に名前を考えるのが面倒くさい

でいいじゃん

403:デフォルトの名無しさん
09/07/05 13:32:40
>>391
静的クラスはプログラムの実行開始時に自動的にインスタンスが一つ作られる。
だからいつでもすぐに使うことができる。早くて便利。ソースも少しだけすっきりする。
だけど開放することはできないからあんまり巨大な静的クラスは作らない方がいい。

404:デフォルトの名無しさん
09/07/05 13:36:43
クラスじゃなくて静的メソッドといってるっぽいよ。

難しく言えばメソッドに暗黙のthisを渡すかどうかの違い。

405:デフォルトの名無しさん
09/07/05 13:38:49
別に、自分で
(object obj, EventArgs evags)
とか、好き勝手に書き換えてもいいんだぜ?ローカルな変数名なんだから。

406:ちら裏
09/07/05 13:42:37
>>391
イメージは自分で作るものだからなぁ。

俺のイメージだと、
クラスってのはクラスローダが自動的に作った「設計図オブジェクト」のシングルトン
インスタンスで、そのメソッドとメンバ変数が静的になるのは、「自動的」に作られた
「シングルトン」だからなだけ。
このイメージの利点は、クラスとインスタンスを同じ仕掛けとして認識できること。
そういう糖衣構文だと思ってる。あくまで個人的に。

407:デフォルトの名無しさん
09/07/05 13:47:39
>>406
Smalltalkのクラスはメタクラスのインスタンスである、とかの話に似てるな
正直よくわかってないけどw

408:デフォルトの名無しさん
09/07/05 14:13:33
>>391
staticメソッドというのは、実態はただの関数だ。それがクラス定義のスコープの中にあるだけ。
インスタンスを作らないと原則呼び出せない通常のメソッドとは全然違う。

>>406
クラスがオブジェクトの設計図というのは間違ってないが、シングルトン関係ない。
クラスを判子と例えるなら、インスタンスは判子を押したここの契約書だ。

409:デフォルトの名無しさん
09/07/05 14:28:31
>>408
いや、静的にということは、この場合ではクラスメンバにアクセスするときに同じ
インスタンスにアクセスすることを要請している、これはシングルトンが保証して
いるわけだからメチャ関係ある。
インスタンス化しないで使える(==自動的)、メンバが静的(==シングルトン)。

410:デフォルトの名無しさん
09/07/05 14:46:08
イメージ的にはシングルトンインスタンス
Hoge hoge = Hoge.getSingleton();
のインスタンスメンバは、クラスメンバであるかのように使える事と同じイメージ。

411:デフォルトの名無しさん
09/07/05 14:51:48
シングルトンって何?

412:デフォルトの名無しさん
09/07/05 14:53:42
>クラスメンバであるかのように
class Hoge {
public static int id;
public static void func() {...}
}
を Hoge.id とか Hoge.func() とするように

class Hoge {
public int id;
public void func() {...}
public static Hoge getSingleton() {...}
}
で、先の hoge だと hoge.id とか hoge.func() と書けるという意味ね。

413:デフォルトの名無しさん
09/07/05 14:53:52
>>391
が段々混乱しているかもしれないな…。
本よりも高度な説明が繰り広げられているから…。

414:デフォルトの名無しさん
09/07/05 14:55:22
概念的な話まで持ち込むのはオーバーじゃねえの
使い方だけ説明しておけばいいだろ

そのうち分かるようになる

415:デフォルトの名無しさん
09/07/05 14:58:12
>>411
>シングルトンって何?
URLリンク(ja.wikipedia.org)
設計だと頻出単語というか常識レベル。

416:デフォルトの名無しさん
09/07/05 15:05:54
概念の話は難しいかもしれないな。
クラスもオブジェクトと考える言語の系統と、C++のようにそう考えない系統があって
C#やJavaはその中間的な感じなんだよね。
静的クラスをシングルトンと考えるのは前者。
C#はクラスローダレベルで見ると前者っぽいけど基本的な考え方は後者に近い。

417:デフォルトの名無しさん
09/07/05 15:13:50
C++とC#で違うんだよな。
C#のほうがより厳密なんだっけ?
C++はどちらでも使いようが可能なんだよな
切り替えて使うときどうしても混乱してしまう。

418:デフォルトの名無しさん
09/07/05 15:33:38
タイヤキの型とタイヤキ
の説明でいいんじゃねぇの

419:デフォルトの名無しさん
09/07/05 15:41:34
入門段階だとその考え方のほうが無難だな。
型は初めからそこにあるものってことで、
静的メソッドは型とともにはじめからそこにある。
リフレクションやらstaticイニシャライザのことはしばらく置いておこう。

420:デフォルトの名無しさん
09/07/05 15:42:42
クラスとインスタンスの違いなら、それでいいんだけど。
クラスメソッドとインスタンスメソッドの違いだからなぁ。

421:デフォルトの名無しさん
09/07/05 15:46:03
具体的にどぞ

422:デフォルトの名無しさん
09/07/05 15:49:37
タイヤキの型に付いてるボタンとタイヤキについてるボタン

423:デフォルトの名無しさん
09/07/05 16:04:21
もうそれでいいよ
俺はタコヤキの型に付いてるタコとタコヤキに入っているタコだし

424:デフォルトの名無しさん
09/07/05 16:29:29
タコヤキは人間が回してやらないと丸くならないぞ。クラスと考えるには不完全だ。

425:デフォルトの名無しさん
09/07/05 16:33:30
408だが、クラスオブジェクトがJavascriptやSquirrelみたいに
ファーストクラスオブジェクトならばそう言えないことも無いかもしれないが、
(特にSquirrelのクラスオブジェクトはまさに雛形的な動作をするようにできている。
 メンバ変数の初期値を決められるだとかインスタンス初期化は
 クラスオブジェクトのテーブルからのベタコピーだとか)

しかし、JavaやC#は専用の名前空間があって基本的に上書きはできない。
またインスタンス化やシングルトンの概念と関係なくWin32Apiのラッパとして仕方なく
staticメソッドとして定義していかないといけないことが頻繁にあるので、
(C#はグローバルな関数が書けない)
そういう考え方は頷けないものがある。

426:デフォルトの名無しさん
09/07/05 16:33:32
自動でひっくり返すのもありますぅー

427:デフォルトの名無しさん
09/07/05 16:35:30
静的クラスを作るとその静的クラスの中で自分自身を呼び出す
なんてパラドキシカルな手段が講じられるようになるんだよね。
初めてその概念に触れたときは理解するまで時間がかかったw

428:デフォルトの名無しさん
09/07/05 16:39:30
自分自身を呼び出すリカーシブプロシージャなんてアルゴリズムの基本じゃん
情報系の勉強してれば必ず出てくる
どうやって実装するかは処理系によって変わるけど

429:デフォルトの名無しさん
09/07/05 17:41:35
>>427
なんか面白そうなんで、いっちょ実例を教えてくだされ

430:デフォルトの名無しさん
09/07/05 18:44:08
初心者板とは思えない…。
で、、、、静的メソッドって結局なんなんだろう。

431:デフォルトの名無しさん
09/07/05 18:46:23
ここは初心者向けにえらそうなこと言うためのスレだから。

432:デフォルトの名無しさん
09/07/05 19:11:28
子供は無邪気に「宇宙ってどれくらい大きいの」とか難しいこと聞くからなぁ。

433:デフォルトの名無しさん
09/07/05 19:12:52
みんなはjavaの経験もあるの?
わたしはCobolerからC#への転身なので全く何も分からないよ(-_-;)。

434:デフォルトの名無しさん
09/07/05 19:20:00
HSPからC#に来ました 他の言語 シラネ

435:デフォルトの名無しさん
09/07/05 19:28:32
質問があります。
リストからgetfilesを取得して、deletefilesを取り除いて、重複をのぞいてリスト化するには、どうしたらよいでしょう?
次のようにしてみたのですが、
string[] deletefiles = {".cs","(2)","zip","cab"};
string[] getfiles = {"txt","jpg"};
string[] files = Directory.GetFiles(@"C:\Documents and Settings\username\Recent", "*.lnk");
string text = "";

foreach(string file in files) {
foreach(string deletefile in deletefiles) {
foreach(string getfile in getfiles) {
if (file.ToLower().Contains(getfile.ToLower()) && !text.Contains(file)) {if (!file.ToLower().Contains(deletefile.ToLower())) text = text + file + "\r\n";
}}}}

○のみを抽出したい。
2009/07/04 19:41 597 01.txt.lnk ○
2009/07/02 11:48 573 124642979292o.jpg.lnk ○
2009/07/04 22:22 482 1553ea4.jpg.lnk ○
2009/07/01 00:55 567 2009_0701twitter.txt (2).lnk
2009/07/01 00:49 567 2009_0701twitter.txt.lnk ○
2009/07/04 17:32 750 Program.cs.lnk
2009/07/02 17:33 579 SimpleBrowser.lnk

なのに、出力結果には、
Program.cs.lnk
が含まれたりします。
アドバイスお願いします。


436:デフォルトの名無しさん
09/07/05 19:39:20
静的メソッドからフィールドにアクセス出来ない理由がようわからん(´・ω・`)

C++ならできたはずだが・・・

437:デフォルトの名無しさん
09/07/05 19:48:39
>C++ならできたはずだが・・・ 
いや、それはない。
まあ引数にthisを渡すなら出来なくはないけどね。

438:デフォルトの名無しさん
09/07/05 20:00:11
>>435
ステップ実行してみたら?

439:デフォルトの名無しさん
09/07/05 20:03:58
>>435
読ませる気無いだろこのコード

処理を二回に分けて考えたほうがいい
List<string>でも用意しておいて
まずfilesの中からgetfilesを持っているのをList<string>に格納する
その後そのListからdeletefilesが含まれているのをtextに追加していく

そういう処理のチェーンを簡単に書けるのがLinq

440:デフォルトの名無しさん
09/07/05 20:04:04
>>436
インスタンスメンバにアクセスできたら、静的メソッドじゃないじゃん。
静的メンバってのは、そのクラスの全インスタンスで共有されるんでしょ。

441:デフォルトの名無しさん
09/07/05 20:06:21
(´・ω・`)ヤダ

442:デフォルトの名無しさん
09/07/05 20:10:47
>>440
それじゃ静的メソッド内で一時的に変数に値を保存しておきたいときとかどうするの(´・ω・`)?

443:デフォルトの名無しさん
09/07/05 20:12:38
>>442
静的メソッドでそういうのするのは極めて不穏だが
静的フィールドに格納すればいい


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch