5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

C#, C♯, C#相談室 Part50

1 :デフォルトの名無しさん:2008/12/19(金) 13:45:15
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ
C#, C♯, C#相談室 Part49
http://pc11.2ch.net/test/read.cgi/tech/1224754660/


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

その他テンプレ>>2-5くらい

2 :デフォルトの名無しさん:2008/12/19(金) 13:49:03
関連スレ

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

Visual Studio 2008 Part 13
http://pc11.2ch.net/test/read.cgi/tech/1226134233/

WPF(XAML,XBAP,.NET3.5)GUIプログラミング
http://pc11.2ch.net/test/read.cgi/tech/1211453941/

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


3 :デフォルトの名無しさん:2008/12/19(金) 13:50:19
参考リンク

MSDN2
http://msdn2.microsoft.com/ja-jp/library/default.aspx

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

pinvoke.net: the interop wiki!
http://pinvoke.net/
宇宙仮面の C# プログラミング / C# Programming
http://ukamen.hp.infoseek.co.jp/
WisdomSoft C#入門
http://wisdom.sakura.ne.jp/programming/cs/index.html
WisdomSoft Microsoft .NET入門
http://black.sakura.ne.jp/~third/system/msnet/msnet.html
どっとねっとふぁん
http://dotnetfan.org/
緑のバイク 初めてのC# 〜 覚え書き 〜
http://homepage3.nifty.com/midori_no_bike/CS/
どぼん!の .NET Tips
http://dobon.net/vb/dotnet/

4 :デフォルトの名無しさん:2008/12/19(金) 13:51:34
他にもあったらよろ
いらんとなったら次スレ立てるとき適当に消しといてくれ

5 :デフォルトの名無しさん:2008/12/19(金) 13:54:54
おつ
ttp://www7a.biglobe.ne.jp/~fbsoft/test/otsu.html


6 :デフォルトの名無しさん:2008/12/19(金) 23:15:07
やっと建ったか乙

7 :デフォルトの名無しさん:2008/12/20(土) 12:50:46
WindowsアプリのToolStripButtonを
作成し、実行時にこのボタンがクリックされるとき、
ボタンの色が変わりますが、この色を変える
ことってできますか??
 もちろんシステムの背景色の設定を
いじる以外で。

8 :デフォルトの名無しさん:2008/12/20(土) 12:56:46
ToolStripRendererを継承してオーバーライドする

9 :デフォルトの名無しさん:2008/12/22(月) 10:50:53
.NETFrameworkってタイトルの6000円ぐらいの本買ったんですが
いま3.5でこれ2.0みたいなんですが、もしかして失敗しましたか?
MS公認?C#上下とかいうやつとなにか違いあるんですか?

10 :デフォルトの名無しさん:2008/12/22(月) 11:14:01
なぁにぃ?やっちまったなー

11 :デフォルトの名無しさん:2008/12/22(月) 11:28:05
安心しろ、間違ってない。

12 :デフォルトの名無しさん:2008/12/22(月) 11:31:58
どっちなの・・・つらい

13 :デフォルトの名無しさん:2008/12/22(月) 12:17:22
2.0+α+αが3.5やし無問題
+α分については別の本買えばいい

14 :デフォルトの名無しさん:2008/12/22(月) 13:25:43
プログラミング .NET Framework だったかいう本だろ?
あれはどっちかっていうとCLR2.0本とも言えるような内容だから。
.NET 3.5用は出てないしな。

少なくとも買って間違いな本じゃない。
ってかむしろ1冊持っとけって本。


15 :デフォルトの名無しさん:2008/12/22(月) 17:53:14
ありがとうなんか元気が出てきた(謎

16 :デフォルトの名無しさん:2008/12/22(月) 20:38:54
2chねるって人気ないんですか?
インターネットって日本中の人が見ることができるから1秒に2,300件ぐらい書き込みがあってもいいと思うのですが。
ここって10人ぐらいしかいない感じしませんか?
もっと活発なインターネットはあるんでしょうか?

17 :デフォルトの名無しさん:2008/12/22(月) 20:55:44
VIPへいけ

18 :デフォルトの名無しさん:2008/12/22(月) 21:17:38
>>16
ドウモ〜〜〜ッ!!お〜o(⌒0⌒)oは〜♪ハジメマシテ〜〜〜ッ☆☆(*⌒ヮ⌒*)
私は27歳のOLしてるのぉ〜〜〜っ♪(#⌒〇⌒#)キャハ
うーんとー、私メル友がすっごくすっごく欲しくってー、\(⌒∇⌒)/
探してたら(◎_◎)なんとっ!☆彡(ノ^^)ノ☆彡ヘ(^^ヘ)☆彡(ノ^^)ノ☆彡
素敵な掲示板♪を発見!!!!(^o^)//""" パチパチパチ
あやしい所とか…{{ (>_<;) }} ブルブルすごい数の掲示板がありますけど、
これ全部1人の方が管理しているんですか?(@@;)すごすぎ …
てなわけで、ついつい書いちゃったのらー(o^v^o) エヘヘφ(`∇´)φカキコカキコ♪
メル友に、なってくれるよねっ。(*^-^*) お・ね・が・い♪(* ̄・ ̄)ちゅ♪ッ
え?くれないのぉ〜?(;¬_¬)そんなのいやいや〜〜、ガ━━━(゚ロ゚)━━━ン
なってくれなかったら、( `_)乂(_´ ) 勝負! \(^o^)/
☆○(゜ο゜)o ぱ〜んち、☆(゜o(○=(゜ο゜)o バコ〜ン!!( ゚▽゚)=◯)`ν゚)・;'パーンチ
(>_<) いてっ!ダメ!! ゛o(≧◇≦*)oo(*≧◇≦)o″ダメ!!
(☆o☆)きゃ〜〜(@_@;)やられた〜〜(o_ _)o ドテッ ガ━━(゚Д゚;)━━ン!
(+_+) 気絶中。。。。・゚゚・o(iДi)o・゚゚・。うぇぇん <(゜ロ゜;)>ノォオオオオオ!! ??゚□゚;ハウッ!
なあんて(#⌒▽⌒#)こんな私っ!σ(^_^)だけど、(///▽///)
お友達になってm(_ _)mくださいませませ♪('-'*)フフ ドガ━━━Σ(ll◎д◎ll)━━━━━ン
ということで。(^-^)vじゃあね〜〜〜♪(⌒0⌒)/~~ ほんじゃo(゜▽゜ヽ)(/゜▽゜)o レッツゴー♪
それでは、今から他の掲示板も色々見てきまーすC= C= C= C=┌(^ .^)┘

19 :デフォルトの名無しさん:2008/12/22(月) 21:18:23
コピペ君って馬鹿だな、まで読んだ。

20 :デフォルトの名無しさん:2008/12/22(月) 21:32:35
>>19
だからそれもコピペだって

21 :デフォルトの名無しさん:2008/12/23(火) 01:05:42
C#ってよくできてる言語だと思ったんですが
あんまり現場で使われてないような気がします。
どうしてですか?

22 :デフォルトの名無しさん:2008/12/23(火) 01:22:18
βはVHSよりもすぐれていたけれども流行らなかったでしょ

23 :デフォルトの名無しさん:2008/12/23(火) 01:30:00
どういう現場を想定してるんだろ。

24 :デフォルトの名無しさん:2008/12/23(火) 07:31:35
>>21

どういう現場か知らんが、VBしか使えないようなPGが多いから
VB.Netで行こうみたいな安易な選択することが多いのか?

VB→VB.Net の移行するぐらいなら いっそのこときれいさっぱりC#で始めた方が
よっぽどいいと思うんだが。

25 :デフォルトの名無しさん:2008/12/23(火) 08:49:24
>>21
>>24
Visual C++ + MFC の時代のときに投げ出して、それ以来 Windows の C は怖くて使えなくなったに違いない!

26 :デフォルトの名無しさん:2008/12/23(火) 09:29:18
>>21
うちはFA関係の仕事ですが、パソコン側のソフトは今はC#が中心です。
ときどき、C++ MFC、VB6の指定がありますが。
たまたまだと思いますが、VB.netの指定は入ったことがありません。


27 :デフォルトの名無しさん:2008/12/23(火) 11:51:30
>>21
ASP.NETだけで十分だから

28 :デフォルトの名無しさん:2008/12/23(火) 12:10:37
>>27
はい?

29 :デフォルトの名無しさん:2008/12/23(火) 17:04:28
日本語メソッドとか変数名多用する人います?
私は多用しますがウケが悪いので困ってるのですが。

30 :デフォルトの名無しさん:2008/12/23(火) 17:05:38
日本語環境以外でもコード書くので、そんなことはしません。

31 :29:2008/12/23(火) 17:11:36
>>30
確かにそういうケースはありますね。
では日本語環境で限定したケースではどうでしょう?

32 :デフォルトの名無しさん:2008/12/23(火) 17:13:25
漢字変換の切り替えが面倒なんで、コメントも英語で書いてます。

33 :29:2008/12/23(火) 18:13:53
>>32
確かにデメリットはそうでしょうね。
自分が思うのはそういう人ってキーボードの使い方が悪いんではないんでしょうか?
キーボードの使い方自信ある人もそうでしょうか?

bool InputCheck()
{

34 :29:2008/12/23(火) 18:14:57
}

って定義して実際使うときに

//入力チェック
if(InputCheck())
{
}

てするなら
if(入力チェック())
{
}
の方がよいと思うわけです。

35 :デフォルトの名無しさん:2008/12/23(火) 18:16:07
変換が面倒
インテリセンスのインクリメンタルサーチがきかん
あれ?最近のはきいたっけ?

36 :デフォルトの名無しさん:2008/12/23(火) 18:20:14
インクリメンタルサーチは効かないよ
どれだけキーボードの使い方に自身がある人(w)でも絶対に英語のほうが効率よく入力できる。

37 :デフォルトの名無しさん:2008/12/23(火) 18:20:18
キーボードの使い方ってなんだ…?

38 :デフォルトの名無しさん:2008/12/23(火) 18:22:37
よく日本語のが分かりやすいに決まってる!て意見を聞くが、
プログラミングで使う識別子じゃ大して変わらんとも思う。

39 :デフォルトの名無しさん:2008/12/23(火) 20:01:07
他人に意見するほどこだわりは無いけど、俺は嫌だ。

40 :デフォルトの名無しさん:2008/12/23(火) 20:32:12
俺は結構積極的につかってるけど、たしかにインテリセンスでの検索がめんどくさいね〜

41 :デフォルトの名無しさん:2008/12/23(火) 20:35:03
うん、だから他人が書いたコードを読むだけなら慣れれば案外ありかも知れないけど、
自分で書く場面ではインテリセンスとの相性が悪い一点で却下だな。

42 :デフォルトの名無しさん:2008/12/23(火) 20:51:04
if (checkInput())

で何も困らん。

43 :デフォルトの名無しさん:2008/12/23(火) 22:30:27
日本語識別子つかったことないけどたしかにインテリセンスとの相性は悪そうだな
migemo的なのを使わせられればよさそうだが

44 :デフォルトの名無しさん:2008/12/23(火) 22:36:01
checkInput入力チェック()なら完璧

45 :デフォルトの名無しさん:2008/12/23(火) 23:04:16
これ何記法になるんかなw

46 :デフォルトの名無しさん:2008/12/23(火) 23:18:56
変態さんは変態スレへどうぞ

47 :デフォルトの名無しさん:2008/12/23(火) 23:34:16
ほんとどうでもいいがInputCheckって書いてあったら
チェックを入力する?なんぞ?ってなる

48 :デフォルトの名無しさん:2008/12/23(火) 23:38:54
テストコードのメソッド名は日本語にしておくと、テスト時楽。
製品コードはアルファベットだな。

ローマ字を極端に嫌うやついるよな。

"Input"を"Nyuryoku"と入れられるのは確かに俺もいやだが、

"GenkaShokyaku"(減価償却)を"Depreciation"と入れられても、可読性が損なわれると思うんだがな。

49 :デフォルトの名無しさん:2008/12/23(火) 23:40:12
わかりにくいことばは日本語でもおk

50 :デフォルトの名無しさん:2008/12/23(火) 23:48:57
>>48
変な略されてなけりゃ辞書引けば分かるし、
その分野の用語の英語表現ぐらい知らなきゃまずいと思うけど。
少なくとも大した手間じゃない。

51 :デフォルトの名無しさん:2008/12/23(火) 23:51:04
変に対訳表みたいの作るくらいなら、わかりやすいローマ字の方がいいな。

52 :デフォルトの名無しさん:2008/12/23(火) 23:54:57
>>48
その主張見るたびに思うんだが、調べりゃすぐわかるから
落ちないだろ可読性。一回わかりゃ終わりだし
さくさく調べられる時代になった今ではすでに無理あると
思うよその主張


53 :デフォルトの名無しさん:2008/12/24(水) 00:30:58
対訳表ってアホかw
英語のまま理解しろ。

54 :デフォルトの名無しさん:2008/12/24(水) 00:40:00
どのプロジェクトにも間抜けなやつはいるもんでね。

ある程度は、そいつにレベルをあわせる必要があったりするんだよな・・・

55 :デフォルトの名無しさん:2008/12/24(水) 00:45:51
>>48
メソッド名にマウス持っていけば「減価償却を行います。」とか説明が出るだろ
もしかして、コメント全く書かない人ですか?

56 :デフォルトの名無しさん:2008/12/24(水) 00:54:45
おれ、コメントもドキュメントも英語で書くよ。
外注先インド人だし、客はアメリカ人だ。

57 :デフォルトの名無しさん:2008/12/24(水) 00:56:10
お前らフィールド全部にプロパティ作ってる?

58 :デフォルトの名無しさん:2008/12/24(水) 00:56:28
ワタシ、コメントもドキュメントも中国語で書くアルよ。
外注先中国人だし、客は台湾人アル。

59 :デフォルトの名無しさん:2008/12/24(水) 01:20:49
外部に公開するやつは全部プロパティ作ってる

60 :デフォルトの名無しさん:2008/12/24(水) 01:40:32
プライベートフィールド用は作らんの?

61 :デフォルトの名無しさん:2008/12/24(水) 02:07:55
以前は作らない事が多かったけど(入力チェックが必要な時とかは例外)
C#3.0になって自動プロパティ使えるようになってからは、方針転換した。

クラス内からでも基本プロパティ経由でアクセスさせてて
privateフィールドを直接使うのは、ラップするプロパティを除けば、特定のメソッドから"のみ"利用する場合だけ。

62 :デフォルトの名無しさん:2008/12/24(水) 08:52:44
質問です。

独自のプロパティをもたせたボタンを作ろうと
Buttonクラスを継承してクラスを作ったのですが、
フォームに生成(描画?)できません。
どうやったら生成されるのでしょうか?

public class HageButton : Button
{
HageProperty m_hage; //独自プロパティ

private void CreateHageButton(int maxButtons)
{
Button[] m_customBtn = new Button[maxButtons];

int loopButtonIndex = 0;
for (loopButtonIndex = 0; loopButtonIndex < maxButtons; loopButtonIndex++)
{
//↓現状固定値で入れてますが、上手くいかない為で、本来は独自プロパティから読み込んだ座標の設定が入ります。
m_customBtn[loopButtonIndex] = new System.Windows.Forms.Button();
m_customBtn[loopButtonIndex].Location = new System.Drawing.Point(100, 200);
m_customBtn[loopButtonIndex].Name = "btn_Config";
m_customBtn[loopButtonIndex].Size = new System.Drawing.Size(117, 33);
m_customBtn[loopButtonIndex].TabIndex = 2;
m_customBtn[loopButtonIndex].Text = "Hage";
m_customBtn[loopButtonIndex].UseVisualStyleBackColor = true;
m_customBtn[loopButtonIndex].Visible = true;
m_customBtn[loopButtonIndex].Click += new System.EventHandler(this.hageFunction);
m_customBtn[loopButtonIndex].Refresh();
m_customBtn[loopButtonIndex].Show();
}
}

63 :デフォルトの名無しさん:2008/12/24(水) 08:58:29
プロパティのsetアクセサ内で自身がButtonから継承したプロパティを設定する

64 :デフォルトの名無しさん:2008/12/24(水) 09:53:03
TypeCodeからTypeを取得するメソッドってある?
逆はあるけど

65 :デフォルトの名無しさん:2008/12/24(水) 10:01:22
C#触り始めて数日なのですが
なんとかハローワールドがアラート?表示できるようになりました
そこで記念にexeにしておいておきたいのですがexeにする方法が分りません。
やり方を教えてもらえないでしょうか?
VC#2008を使用しています

66 :デフォルトの名無しさん:2008/12/24(水) 10:09:25
>>64
前にどっかの掲示板でその話題を見たことがあるな
結論はswitch/caseでチェックするしかない、だったはず

67 :デフォルトの名無しさん:2008/12/24(水) 10:17:43
>>63
レスありがとうございます
>>62で設定してるのですが他に何が足りないのでしょうか?

68 :デフォルトの名無しさん:2008/12/24(水) 10:25:29
親コントロールのControlsにAddする必要がある

ところでそのHageButton自身はButtonじゃなくてButtonのコンテナじゃないのか?
ならButton派生じゃなくてUserControl派生にすべきだが
// やりたいのはHTMLのクリッカブルマップみたいなの?

69 :デフォルトの名無しさん:2008/12/24(水) 10:27:26
>>65
bin/Debug/プロジェクト名.exe

70 :65:2008/12/24(水) 10:31:19
>>69
ありがとうございます
勝手に出来るんでね
助かりました。

71 :デフォルトの名無しさん:2008/12/24(水) 11:33:54
>>68
ありがとうございます

う〜ん、何と言いますか
ユーザーが自由にボタンを配置・設定出来て、
動的に生成されるボタンが欲しいんです
で、そのボタンは押されたら独自のプロパティに設定された動作を実行する
みたいな感じなんです


72 :デフォルトの名無しさん:2008/12/24(水) 12:50:08
ThreadPoolを使ったスレッド内でCOMコンポーネントを使いたいのですが
スレッドをSTAにする事は出来ないのでしょうか?
スレッド起動後にThread.CurrentThread.SetApartmentState(ApartmentState.STA);を試してみたのですがInvalidOperationExceptionでだめでした。

73 :デフォルトの名無しさん:2008/12/24(水) 13:04:04
無理

74 :デフォルトの名無しさん:2008/12/24(水) 13:27:55
質問です。
下記のコードをEclipseにてデバッグしました。
int i の宣言の行にブレークポイントを置いてあります。
そのままステップインを続けると、System.out.print(sMsg)の行でソースファイルが見つかりませんと出ます。
コメントホバーを日本語化するためにソースファイルの参照をapiフォルダに変更したからなのですが、
そもそもSystem.out.print()メソッドのソース内までステップ実行してもらう必要がないのです。
この場合どのように設定したらいいでしょうか?

class Test {
public static void main(String args[]) {
int i;
char[] a = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J' };
String sMsg = "0から9までの数字を入力してください : ";
System.out.print(sMsg);
i = readNumber();

if (0 <= i && i <= 9)
System.out.println(a[i]);
else
System.out.println("範囲外ですよ");
}

// キーボードから数字を入力するメソッド
public static int readNumber() {
byte[] b = new byte[100];

try {
System.in.read(b);
return Integer.parseInt((new String(b)).trim());
} catch (Exception e) {
return -1; } }}


75 :74:2008/12/24(水) 13:29:11
ゴバック失礼

76 :デフォルトの名無しさん:2008/12/24(水) 20:36:47
>>71

ボタンを生成したり配置したりする処理をボタン自身の中に書くのはおかしい

77 :29:2008/12/24(水) 22:14:02
>>35
>>36
先頭一文字は変換する必要ありますね
でも覚えにくい変数名思い出す手間よりは早いと思います

>>38
自分のためのツールならとにかく、自分の現場では今まで
仕様書漁らないと変数名と役割のひも付けができないものが多かったので
日本語の方がかなり可読性が高いです
辞書で調べてつけたような変数名が多いので。

>>48
確かに。自分の命名方法が間違ってました。
>>51-52
塵も積もれば、ですし、PG考えてるのに気が散ります
10個や20個の変数ならとにかく。

>>55
その手間が無駄です

いくつか省略させてもらいましたが、要約すると
インクリメンタルサーチできないってのが大きいみたいですね。
あとは変数とその役割の理解しやすさによって考えるといいかもしれませんね。


78 :デフォルトの名無しさん:2008/12/24(水) 22:29:55
普通、最初に用語集作って英訳も付けると思うんだがやらないところ多いのか

79 :デフォルトの名無しさん:2008/12/24(水) 23:02:51
>>77
自分が酷い現場ばっかりに回されたからって、他も同じと思うなよ。

>先頭一文字は変換する必要ありますね
>塵も積もれば、ですし、PG考えてるのに気が散ります
変換する手間で気が散るのだが

>>78
俺のとこも、あまり一般的でない用語に関しては英訳用意するな。

80 :デフォルトの名無しさん:2008/12/24(水) 23:53:13
まあ中途半端にローマ字にされるよりは日本語の方がいいよね

81 :デフォルトの名無しさん:2008/12/25(木) 00:29:35
ローマ字や日本語は綴りが一意に決まらないから・・・

82 :デフォルトの名無しさん:2008/12/25(木) 01:04:55
英語で綴りが一意に決まるのは、単に知ってる語彙が少ないからじゃない?

83 :29:2008/12/25(木) 01:12:56
>>82
そうそう。
私を始めみんな結構知らないんで日本語がよいかと。

84 :デフォルトの名無しさん:2008/12/25(木) 05:43:10
確かに英訳するといくつもある場合が多いけど、自然な物を選択していけば普通に使えるしなあ
メソッドの意味が分からんならインテリセンスに聞くし

85 :デフォルトの名無しさん:2008/12/25(木) 07:16:22
centre と center とかあるけど
ローマ字や日本語よりゃ遥かにレアだろ。

86 :デフォルトの名無しさん:2008/12/25(木) 07:20:38
>ローマ字や日本語は綴りが一意に決まらない


87 :デフォルトの名無しさん:2008/12/25(木) 08:41:41
これ以上はこっちでやれば?

ソースのコメントを英語で書くスレ
http://pc11.2ch.net/test/read.cgi/tech/1224696505/

88 :デフォルトの名無しさん:2008/12/25(木) 09:30:55
ここでいいよ

89 :デフォルトの名無しさん:2008/12/25(木) 22:47:13
C#のプログラムをjavaのプログラムと連携させる必要があります。
どうするのがベストでしょうか?
ちなみに2000ステップくらいです。

1.javaに書き換える
2.exeをjavaから実行する
3.dllにする
4.その他

90 :デフォルトの名無しさん:2008/12/25(木) 22:48:46
何をするかも分からん状況では書き換えろとしか

91 :デフォルトの名無しさん:2008/12/25(木) 22:52:50
保守とかそういう話を全部抜きにして言うと、

(1) そのC#のプログラムが .NET のライブラリをガシガシ使って無いなら、
全部書き換える(=1)が早い。2000行なら1日で移植できるだろ

もし.NETベタベタで、
(2) 単にデータを処理するバッチ的なプログラムなら、exeとして呼び出して
出力(XMLとか)を解析するのが早い(=2)
(3) JavaプログラムとC#プログラムが相互に連携(通信とか)するなら、
やっぱり書き直した方がいいと思う(=1)

JavaとC#でプロトコル決めてSOAPとかで通信するって手もあるが
2000行じゃ割に合わないだろうな

92 :デフォルトの名無しさん:2008/12/25(木) 22:57:08
ありがとうございます。
C#プログラムは.NETライブラリバリバリです。
javaに移植しようとすると対応するライブラリがあるのか心配です。
あと、javaとの相互通信はありません
フローはこんなかんじです

javaからC#呼ぶ

C#でファイルに対して加工処理

加工されたファイルに対して続きの処理

93 :デフォルトの名無しさん:2008/12/25(木) 23:00:42
>>86
ヘボン式、訓令式、日本式、あるいはそれらの混合。
外来語をローマ字で書くかもとの綴りにするか。
漢字で書くかひらがなでかくかカタカナで書くか。

94 :デフォルトの名無しさん:2008/12/25(木) 23:04:24
外来語をローマ字で書くやつっているの?

tasuku とか?

95 :デフォルトの名無しさん:2008/12/25(木) 23:05:24
英語出来ない奴はそう書く

96 :デフォルトの名無しさん:2008/12/25(木) 23:17:22
ローマ字ソース見たことあるけど、
動詞と名詞の区別が滅茶苦茶ですごい可読性低かった。

97 :デフォルトの名無しさん:2008/12/26(金) 00:07:28
ステップ数とか意味わからんよね

98 :デフォルトの名無しさん:2008/12/26(金) 00:22:40
CILのOpCodeが2000個とか

99 :デフォルトの名無しさん:2008/12/26(金) 00:52:08
最適化で工賃へるんですね

100 :デフォルトの名無しさん:2008/12/26(金) 12:15:04
ローマ字の表記法は一意に定められるだろ
ローマ字の表記法はいくつかあるが、どれか採用すればいいだけだ

101 :デフォルトの名無しさん:2008/12/26(金) 12:51:06
一般に大阪はOsakaだが大崎はOhsakiだぜ
また人名だと個々に好みのスペリングがあるから簡単には定まらない

102 :デフォルトの名無しさん:2008/12/26(金) 13:09:17
定まらないって定めないからだろ
OhsakaにするかOosakiにするか決めりゃいいだけだ
俺はO_sakaが好みだが

103 :デフォルトの名無しさん:2008/12/26(金) 14:41:37
(´・ω・`)しらんがな

104 :デフォルトの名無しさん:2008/12/26(金) 14:49:08
マルチスレッドで受信したイベントデータを、受け取った順番どおり
保持して、(次のイベントがくるまで終わらないくらいに)時間がかかる処理を
順に行いたいのですが、こういう仕組みはどうやって
実現すればいいんでしょうか。lockでは順番は保持されないらしいのですが。

105 :デフォルトの名無しさん:2008/12/26(金) 15:01:48
(非同期1)[データ1受信]
(非同期2)      [データ2受信]
(非同期3)              [データ3受信]
(メイン)   [データ1処理 ][データ2処理 ][データ3処理]

こんなことがしたいのですが、うまく説明できない

106 :デフォルトの名無しさん:2008/12/26(金) 15:22:12
メインにQueueもっといて各スレッドで受信完了時にロック取得してEnqueue→ロック解放
メインは処理が終わるたびロック取得してDequeue

とか?

107 :デフォルトの名無しさん:2008/12/26(金) 15:30:34
キューじゃだめなの

108 :デフォルトの名無しさん:2008/12/26(金) 15:49:27
保持するイベントデータは配列に登録するようにして、
メインにおいてはイベントデータ配列をループし、
イベントデータががないときは待機して
イベントデータがある場合は処理して次にループ
というかんじでいいんじゃね?

109 :デフォルトの名無しさん:2008/12/26(金) 16:27:03
Visual C# 2008 Express Edition と SQL Server 2008 をインストールして今.NETを勉強してます。
PG経験はVB5少々、Delphi少々って感じです。
ようやく古いAccessのデータMDBをMDFというのに変換してdataGridViewに表示は出来ました。
で、簡単な顧客管理を作ろうと思ったのです。
顧客番号入れて該当の名前を表示するという単純な・・・
Delphiだとこんな感じでしょうか。

with User do
begin
wk:=EId.Text;
Active:=true; // ファイルOPEN
IndexName:='ID'; // インデックス設定
if FindKey([wk])=true then EName.Text:=FieldByName('Name').AsString // 該当あり
else ShowMessage('見つかりません'); // 該当なし
Active:=false; // ファイルCLOSE
end;

同じ事をやろうとホームページとか調べたんですがdataGridの説明はたくさん見つかるのですけど
やりたい事が全然見つかりませんでした。
どこかいいホームページとかあったら教えて下さい。

110 :デフォルトの名無しさん:2008/12/26(金) 16:51:16
DataGridViewに対してどのようにデータソースを設定しているかわからんが。
まあ、それは別として
DataTable型オブジェクトをtblとしこのtblに顧客データが取得されているものとし、かつIDが主キーに設定されているものとすると
DataRow foundRow = tbl.Find(wk);
if(foundRow != null) Ename.Text = foundRow("Name").ToString();

111 :デフォルトの名無しさん:2008/12/27(土) 20:19:04
アプリケーション設定ファイルを任意のディレクトリに保存したい場合は
SettingsProviderを自力で実装するしか手が無いんでしょうか?
シンプルに、↓こんなディレクトリに保存したいだけなんですけども
C:\Documents and Settings\<ユーザー名>\Application Data\<アプリ名>\

112 :デフォルトの名無しさん:2008/12/27(土) 20:27:23
Shell32.dll等のアイコンを抽出するのはどうしたらいいんでしょうか。


113 :デフォルトの名無しさん:2008/12/27(土) 22:30:13
Icon.ExtractAssociatedIconで。
Exの方はないので複数のアイコンを取り出したいならAPIを呼ばないと無理かと思う。

114 :デフォルトの名無しさん:2008/12/28(日) 00:03:57
>>101
ちょっとあなた
馬鹿がばれてますよ

115 :デフォルトの名無しさん:2008/12/28(日) 00:06:06
しょうもない事で何回ループさせれば気が済むんだ馬鹿野郎

116 :デフォルトの名無しさん:2008/12/28(日) 00:11:37
ごめんなさい

117 :デフォルトの名無しさん:2008/12/28(日) 00:17:24
どんまい

118 :デフォルトの名無しさん:2008/12/28(日) 00:42:01
SQLサーバーってはやってる?

119 :デフォルトの名無しさん:2008/12/28(日) 03:44:31
>>113
ありがとう、やってみます。


120 :デフォルトの名無しさん:2008/12/28(日) 06:23:51
int WinExGetInfo(HANDLE hnd,array *set);

typedef struct ary{
char string_a[1024];
char string_b[512];
}array;

Cでこう宣言されてる関数をPinvokeする場合、どうすればいいんでしょうか?
構造体でなければStringbuilderを渡すだけですが、構造体だと渡せないようで

121 :デフォルトの名無しさん:2008/12/28(日) 09:23:13
>>120
バイト型の配列で渡せばOK

122 :デフォルトの名無しさん:2008/12/28(日) 09:53:40
[DllImport( "hoge.dll" )]
static extern int WinExGetInfo( IntPtr hnd, ref array set );

[StructLayout( LayoutKind.Sequential, CharSet = CharSet.Ansi )]
struct array
{
    [MarshalAs( UnmanagedType.ByValArray, SizeConst = 1024 )]
    public char[] string_a;
    [MarshalAs( UnmanagedType.ByValArray, SizeConst = 512 )]
    public char[] string_b;
}

こんなんでいける? よう知らんが

123 :デフォルトの名無しさん:2008/12/28(日) 10:07:24
速度重視ならunsafe structにして
public fixed char string_a[1024];
public fixed char string_b[512];

124 :デフォルトの名無しさん:2008/12/28(日) 10:38:26
いやbyteか

125 :デフォルトの名無しさん:2008/12/28(日) 18:51:44
フォームや子ウィンドウが全部描画されてからよばれるイベントってある?
Form_Showでブレークはっても子ウィンドウは描画中っぽいんだけど

126 :デフォルトの名無しさん:2008/12/28(日) 18:56:38
Application.Idle辺りかね

127 :デフォルトの名無しさん:2008/12/28(日) 20:15:43
ツリーノードの位置を調整するのってどうすればいいんでしょうか。
ドラッグドロップでノードへ追加するんではなくて、順番を変えたいんですが。


128 :デフォルトの名無しさん:2008/12/28(日) 20:20:26
TreeView.Nodes.Insert()

129 :デフォルトの名無しさん:2008/12/28(日) 21:29:42
>>128
出来ました!ありがとう

130 :デフォルトの名無しさん:2008/12/28(日) 21:32:24
>>125
Shownて無かったっけ

131 :デフォルトの名無しさん:2008/12/28(日) 21:52:21
>>130
Form_ShowじゃなくてForm_Shownだった

>>126
やっぱりidleがいいのかな・・・

132 :デフォルトの名無しさん:2008/12/28(日) 21:56:03
あ、それがダメだったのか。スマソ

133 :デフォルトの名無しさん:2008/12/28(日) 22:25:10
再び質問で恐縮ですが、ドラッグ中にキャンセルするのはどうしたらええんでしょうか。
ドラッグ中に右クリックでキャンセルしたいんですが。


134 :デフォルトの名無しさん:2008/12/28(日) 22:32:45
QueryContinueDragでハンドリング

135 :デフォルトの名無しさん:2008/12/28(日) 22:42:37
しかし、マウスの左右を同時に押下させるUIってどうなのよw

136 :デフォルトの名無しさん:2008/12/28(日) 22:44:02
どうなのよちゃうわ
うっさいわぼけ

137 :デフォルトの名無しさん:2008/12/28(日) 23:07:48
ESCキーにしとけw

138 :デフォルトの名無しさん:2008/12/28(日) 23:12:27
Windowsエクスプローラは右クリック(右でドラッグしているなら左)とESCのどっちでも取り消しできる。

139 :デフォルトの名無しさん:2008/12/29(月) 21:46:03
ちょい質問

VS2005まで?あったと思うのだけど、
XMLスキーマをビジュアルに(クラス図みたいな)編集出来るのって
VS2008に無いのでしょうか?
拡張子がxsdのファイルをクリックすると、
エディター?のようなのになって困っています。

どなたかお助けを

140 :デフォルトの名無しさん:2008/12/29(月) 21:58:09
>>139
ありますん

141 :デフォルトの名無しさん:2008/12/29(月) 22:28:16
>>139
ないあるよ

142 :デフォルトの名無しさん:2008/12/29(月) 23:05:55
おしえてくんなます (せっていとう)

143 :デフォルトの名無しさん:2008/12/29(月) 23:07:00
>139
ないよ。

144 :139:2008/12/29(月) 23:29:52
了解しました。どうやらなさそうですね。
エディターでこつこつやることにします。
XML スキーマエクスプロらー自体がつかいやすいのかなぁ?

まあ、使ってみます。

145 :デフォルトの名無しさん:2008/12/29(月) 23:33:08
>>134
できました、ありがとうございます!


146 :デフォルトの名無しさん:2009/01/01(木) 00:15:15
C#でWindowsプログラミングをやってみたいのですが、
お手本となるソースコード(プロジェクトファイル)を公開しているサイト等はあるのでしょうか?
あるならば、ご教示しては頂けないでしょうか。
ググっても、そっち系の教本しか出てこないもので・・・

147 :デフォルトの名無しさん:2009/01/01(木) 00:17:08
まず .NET Framework SDK についてくるサンプルを動かしてみれば?

148 :デフォルトの名無しさん:2009/01/01(木) 00:32:33
デザイナで何か作ってソース見れ。
お手本かどうかはアレだけど「ちゃんと動く具体的なソース」として便利。

149 :デフォルトの名無しさん:2009/01/01(木) 01:31:54
本買えよ

150 :デフォルトの名無しさん:2009/01/01(木) 09:29:11
>>146
CodePlex
CodeProject

151 :デフォルトの名無しさん:2009/01/01(木) 13:08:43
もしかしたら既出の質問かもしれませんが

作成したアプリケーションの設定を保存するのに
Properties.Settings.Default.Save()
だとOSの指定されたフォルダにしか保存できません。
出来ればアプリケーションのあるフォルダに出来るだけ少ないコード量で実装したいのですが
みなさんの場合はどのような方法をとっておられるのでしょうか?

152 :デフォルトの名無しさん:2009/01/01(木) 13:12:26
アプリケーションのあるフォルダに保存するとVista以降で問題出るからやらないかな

153 :デフォルトの名無しさん:2009/01/01(木) 13:15:45
>>151
どうしてもその要件があるのなら、管理者モードで起動するw

154 :デフォルトの名無しさん:2009/01/01(木) 13:20:26
便乗質問です
>>111 についてはどうなんでしょうか?

155 :デフォルトの名無しさん:2009/01/01(木) 13:30:18
tes

156 :151:2009/01/01(木) 13:36:35
ご回答ありがとうございます
既出って次元じゃないのですね…orz

USBでアプリケーションごと持ち歩く可能性があるので…
んー、がんばりますかぁ…

逆に需要多そうなのに、マイクロソフトでは準備してくれないのですね。


157 :デフォルトの名無しさん:2009/01/01(木) 13:55:46
MS は Windows の流儀にそった形での API を提供してるだろが。
それが嫌なら自分で何とかしろよ

158 :デフォルトの名無しさん:2009/01/01(木) 13:56:41
>>156
Program Filesの下のディレクトリにインストールされるアプリじゃないのなら、
UACで蹴られることもないんだろうから、普通にシリアル化なり何なりを使って
「そのように」実装すればいいだけじゃないの?

もちろんProperties.Settings.Defaultは普通の方法では使えないと思うけど。

159 :デフォルトの名無しさん:2009/01/01(木) 14:55:08
ディレクトリはこれで。
ttp://dobon.net/vb/dotnet/file/getfolderpath.html

あと実行時のEXEのディレクトリは
APIのGetModuleFilenameとk使えばいいかもしれんがお勧めしない。

160 :デフォルトの名無しさん:2009/01/01(木) 16:00:06
実行exeは
Application.StartupPath

161 :デフォルトの名無しさん:2009/01/01(木) 17:28:38
確実に、そのexe, dllのあるディレクトリを取得したいなら

Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)

ライブラリにして別のdllに入れるなら、ExecutingじゃなくてCallingの方使う

162 :デフォルトの名無しさん:2009/01/01(木) 17:41:49
>>111
そこにアプリ名を入れられると迷惑
会社名が入るところだから

163 :デフォルトの名無しさん:2009/01/01(木) 17:46:25
MSにも言ってやってくれ

164 :デフォルトの名無しさん:2009/01/01(木) 17:48:39
>>163
おまえが言えよ

165 :デフォルトの名無しさん:2009/01/02(金) 00:09:04
エクスプローラの中でフォルダやファイルの縮小版を表示する機能が
ありますが、あれと同じように表示するためのクラスやメソッドはどこかに
あるでしょうか。あるとしたらどこを見ればよいか教えてください、よろしく。


166 :デフォルトの名無しさん:2009/01/02(金) 00:16:25
>>165
縮小版って何? ListView の機能ではなく?

167 :デフォルトの名無しさん:2009/01/02(金) 00:18:22
>>166
>ListView の機能

ListView の表示形態の一つにそれがあったんでしたっけ?
では見てみますです。


168 :デフォルトの名無しさん:2009/01/02(金) 00:20:56
>>166
縮小版、とは、ファイルの最初のページをイメージにして縮小し
小さく表示してみせる機能のことです。それがLisyViewにあれば
それでできるのですが、無かったように思いました。
一応また調べてみます。


169 :デフォルトの名無しさん:2009/01/02(金) 00:23:46
>>168
了解。その機能は .NET Framework にはないよ。
ということで、自分でファイルを開いてビットマップに描画して、って実装する必要あり。

170 :デフォルトの名無しさん:2009/01/02(金) 00:27:15
どこまでを欲してるんだ。

ファイルのアイコンを表示する機能も
サムネールを作成する機能も
ListViewに標準でそんなのあるわけないだろ

171 :デフォルトの名無しさん:2009/01/02(金) 00:27:21
>>169
どうもです。View列挙体にはやはり無い様ですね。
>ファイルを開いてビットマップに描画
ということは、それをするための方法を知る必要があるのですね。
いろんな種類のファイルがあるのでだいぶ難しそうですが
突破口はどこかにあるでしょうか。
またListViewに似たように表示する場合はViewプロパティを
拡張するようなことをするのでしょうか?

172 :デフォルトの名無しさん:2009/01/02(金) 00:28:31
エクスプローラなら、↓みたいなのも。

http://bbs.wankuma.com/index.cgi?mode=al2&namber=3122&KLOG=12

View プロパティは大きなアイコンでいいんじゃね?

http://www.atmarkit.co.jp/fdotnet/dotnettips/336listviewimage/listviewimage.html

とか。

173 :デフォルトの名無しさん:2009/01/02(金) 00:29:31
>>170
アイコンは一応表示できたのですが、縮小版はやはり相当な技術が
要りそうで大変めんどうでしょうか?


174 :デフォルトの名無しさん:2009/01/02(金) 00:34:58
>>172
おおお。こんなにすぐにお答え戴けて感謝です!!
方法があるのですね!驚きました。ありがとうございました!!
助かりました!!!またよろしくです。

みなさま、大変、ありがとうございました!!

175 :デフォルトの名無しさん:2009/01/02(金) 11:29:57
ノートPCで動くアプリを作っていてどうしたら良いか
分からないので質問です。
アプリが起動してる間だけアプリ以外のコントロールをさせないようにしたいんですが、
フォームを常時前面にするようには出来たのですが、
ノートPCのUSBポートそのものを無効or使用禁止(挿しても動作しない)
ノートPCのタッチパッドとトラックポイントを無効
が出来なくて・・・どうやったら無効に出来るのでしょうか?


176 :デフォルトの名無しさん:2009/01/02(金) 11:32:28
>>175
基本的には無理。

177 :デフォルトの名無しさん:2009/01/02(金) 11:33:07
頭悪いくせにそんなウィルスチックなもの作ろうとするなよ。

178 :デフォルトの名無しさん:2009/01/02(金) 11:39:21
>>175
スクリーンセーバー作りたいのか?


179 :デフォルトの名無しさん:2009/01/02(金) 11:49:24
タッチパッドのドライバを削除する

180 :デフォルトの名無しさん:2009/01/02(金) 14:04:23
   , ノ)
  ノ)ノ,(ノi
  (    (ノし ノートPCのUSBポートそのものを使用禁止!
┐) ∧,∧  ノ ノートPCのタッチパッドとトラックポイントを無効 !
..|( ( ....:::::::) (
 ̄⊂/ ̄ ̄7 ) ヽ lヽ,,lヽ
 (/ 川口 /ノ   (    ) やめて
   ̄TT ̄    と、  ゙i

181 :デフォルトの名無しさん:2009/01/02(金) 14:06:32
>>177に100%同意

182 :デフォルトの名無しさん:2009/01/02(金) 14:17:37
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR\Start で設定できるのは、
USB ストレージデバイスだけだっけか。USB は範囲が広すぎなんだよな・・・

マウスに関しては、グローバルフックかフィルタドライバか。どちらにせよ、C# では無理。

183 :デフォルトの名無しさん:2009/01/02(金) 15:04:34
普通にデバイス無効にすればいいだけ

184 :デフォルトの名無しさん:2009/01/02(金) 15:07:08
>>183
で、やり方は?

185 :デフォルトの名無しさん:2009/01/02(金) 15:21:06
setupapi

186 :デフォルトの名無しさん:2009/01/02(金) 15:33:06
Ctrl+Alt+Delはどうすんだよ

187 :デフォルトの名無しさん:2009/01/02(金) 15:44:04
GINA

188 :デフォルトの名無しさん:2009/01/02(金) 16:12:51
>>176
>基本的には無理。
う〜ん、そうなんですか・・・
>>178
>スクリーンセーバー作りたいのか?
いえ、店頭で一般の方が操作するアプリなんですが
USBメモリ挿されたり、そのアプリ以外触れない様にしたいんです。
で、お客が言うには店が終わったらそれを店員が使うから
アプリを終了したら、USBデバイスやトラックポイントやタッチパッドの無効を戻して
すぐ普通に使える様にして欲しいそうで・・・
>>179
>タッチパッドのドライバを削除する
それだとアプリ終了後使えないので・・・

189 :デフォルトの名無しさん:2009/01/02(金) 16:20:01
>>182
>どちらにせよ、C# では無理。
C#でなくVC++だったら出来たりしますか?
それともアプリ側から制御する事そのものが無理なんでしょうか?
>>183
>普通にデバイス無効にすればいいだけ
プログラムからでなく、普通に設定という意味でしょうか?

190 :デフォルトの名無しさん:2009/01/02(金) 16:26:37
>>189
VC ならできる。が、結構めんどい。

デバイス無効にして、一般ユーザー権限でアプリを実行しとけばいいんじゃね?

191 :デフォルトの名無しさん:2009/01/02(金) 17:04:01
ふと思ったのだけど、どうやってそのアプリを終了させるつもり?

192 :デフォルトの名無しさん:2009/01/02(金) 17:04:59
キーボード

193 :デフォルトの名無しさん:2009/01/02(金) 17:44:46
ノートPCをお客さんが弄れるようにするんだよね。
店内の商品検索端末みたいなものかな?

大変そうだね。タッチパッドよりキーボードの操作の方が心配する要素が多いような。
Ctrl+Alt+Delは禁止できるとして、
Alt+F4とか、Windowsキーとかは禁止できるのだっけ。

194 :デフォルトの名無しさん:2009/01/02(金) 17:48:27
Alt+F4はまあシステムメニュー弄るかメッセージ無視すればいいけど
ウィンドウズキーは元の設定でつぶさないと難しいかもね。

195 :デフォルトの名無しさん:2009/01/02(金) 17:51:43
Winキーはレジストリで殺せるし、
エクスプローラ起動してなかったら働かないはず。

196 :デフォルトの名無しさん:2009/01/02(金) 18:00:50
空港なんかのキオスクモードってどうやってんだろ
専用ソフト?

197 :デフォルトの名無しさん:2009/01/02(金) 18:01:59
あれは本体触れないし、キーボードは物理的にマスクしてなかったっけ。

198 :デフォルトの名無しさん:2009/01/02(金) 18:16:45
グローバルフックでWindowsキーも握りつぶせるよ。
TopMostに設定したFormを画面一杯に表示してグローバルフックでキー入力でのタスク切り替えを潰す。
WindowsキーとAlt+Tabを潰せばタスク切り替えは防げる。
VistaだとWindows+Tabで切り替えできるけどWindowsキーを潰せばそれも防げるので。
Alt+F4は画面を覆うアプリの方で無視する。
キーを潰すだけなので低レベルキーフックでいけるのでC#だけでも実装できるよ。

USBはそのアプリを動かすのを一般ユーザーにしてデバイスを無効にしておくのが手軽だと思うけど
アプリだけでブロックってのはやったことないなぁ…

199 :デフォルトの名無しさん:2009/01/02(金) 18:57:43
普通はそういうのはアプリケーションで制限するんじゃなくて
ポリシーで制限するもんじゃないか?

200 :デフォルトの名無しさん:2009/01/02(金) 19:10:41
>>196
Windows Embeddedとかを使う。explorerの代わりにShellを変更できる。

201 :デフォルトの名無しさん:2009/01/02(金) 19:11:47
>>200
別に Embedded じゃなくても変えられるよ。

202 :デフォルトの名無しさん:2009/01/02(金) 19:17:04
アプリで〜とか言ってる時点で、目的と手段を取り違えてる気がする

要するに、通常モードと特定アプリモード(仮称)とが有り、両モードは簡単な操作で切り替え可能
前者は説明不要だとして後者の要件は

1. あるアプリを全画面表示で実行し、そのアプリ以外は操作不可
2. リムーバブルメディアは使用不可
3. USBデバイスの無効化
4. ポインティングデバイスを無効化(タッチパッドとトラックポイント限定?)

といったところだろ

203 :デフォルトの名無しさん:2009/01/02(金) 22:15:58
タッチパッドを取り外す

204 :デフォルトの名無しさん:2009/01/02(金) 23:29:54
>>202に同意。
自分なら専用ユーザーを作るか、
ハードウェアプロファイルを使う

205 :デフォルトの名無しさん:2009/01/03(土) 01:00:42
ttp://csharp-source.net/open-source/testing-tools
ここみると、C#用のユニットテストツールっていろいろあるけど、
どれがお勧め?VS2008使ってる

206 :デフォルトの名無しさん:2009/01/03(土) 04:33:15
NUnitとTestDriven.NET使ってる。2005だけど

207 :デフォルトの名無しさん:2009/01/03(土) 11:42:59
ボタンを押すと音が再生されるようにしたいので
http://dobon.net/vb/dotnet/programing/playmidifile.html
を利用して「Windows Media Player Control」を使ってmp3ファイルを再生したのですが音が鳴るまでにタイムラグがあって「ポチッ」という感じが出なくて困っています
同じようなことで困った方はいらっしゃらないでしょうか?

208 :デフォルトの名無しさん:2009/01/03(土) 11:51:16
たかが効果音にmp3?
wavにしてSoundPlayerで鳴らせ

209 :207:2009/01/03(土) 12:34:07
ファイルサイズの増加を心配して控えていたのですが
実際にやってみると
mp3 96k → wav : 101k
とほとんど変化しませんでした。
これでよかったみたいです。お知恵をありがとうございました。


210 :デフォルトの名無しさん:2009/01/03(土) 13:00:48
容量はコーデックの設定次第じゃねえの

211 :デフォルトの名無しさん:2009/01/03(土) 13:39:35
wavはまんまサンプリングレートと量子化ビット数とチャンネルと秒数だろうけどな。

212 :デフォルトの名無しさん:2009/01/03(土) 18:20:40
音屋には音屋のテクニックがあるんだぜ。

213 :デフォルトの名無しさん:2009/01/03(土) 20:35:22
mp3かwavか、って以前にWMP Controlが糞重いからね


214 :デフォルトの名無しさん:2009/01/03(土) 23:42:55
VS2008で、

string text = "何かのテキスト";
Regex line = new Regex(@"正規表現のパターン");
MatchCollection matches = line.Matches(text);

List<string> result = new List<string>();
foreach(Match m in matches.GetEnumerator()) {
result.Add(m.Value); // <-- ここでエラー
}

とすると、
「エラー foreach ステートメントは、'System.Collections.IEnumerator' が
  'GetEnumerator' のパブリック定義を含んでいないため、
 型 'System.Collections.IEnumerator' の変数に対して使用できません。」

とエラーが出ます。不勉強でエラーメッセージの意味がさっぱりわからないんですが、
この使い方は間違ってるのでしょうか?これと同じことを正しく書くとどうなりますか?
要はマッチした string の全部の List が欲しいんです
for文と [ ] 演算子で地味に読みだすのはできるんですが・・・



215 :デフォルトの名無しさん:2009/01/03(土) 23:49:37
foreachのinの後は「GetEnumeratorできるもの」を指定する。
matches.GetEnumerator()はIEnumeratorを返すけど、IEnumerator自体はGetEnumeratorできないでしょ。
つまりmatches自体がGetEnumeratorできるもの。

216 :デフォルトの名無しさん:2009/01/03(土) 23:51:56
>>215
おお、なるほどできました!
ありがとうございます!!

217 :デフォルトの名無しさん:2009/01/03(土) 23:52:09
foreach(Match m in matches)

218 :デフォルトの名無しさん:2009/01/03(土) 23:55:37
リファレンスにほぼそっくりそのままの例載ってるじゃん。
分かんないときはまずドキュメント読もうよ。
http://msdn.microsoft.com/ja-jp/library/system.text.regularexpressions.matchcollection.aspx

219 :デフォルトの名無しさん:2009/01/03(土) 23:58:14
ドキュメントはろくに読まず、何かあると MS のせいにする・・・
そんな開発者が増えた気がする俺はおっさんw

220 :デフォルトの名無しさん:2009/01/04(日) 00:02:35
古の昔から続く「今の若い者は・・」と同じ香りを感じるわけだがw

221 :デフォルトの名無しさん:2009/01/04(日) 08:01:36
> 何かあると MS のせいにする・

これは大昔からほんとに「MSのせい」であることが多かっただろ

222 :デフォルトの名無しさん:2009/01/04(日) 08:40:25
ウリがなんでも日本のせいにするようになったのは日本のせいニダ

223 :デフォルトの名無しさん:2009/01/04(日) 08:47:23
昔に比べるとMS開発環境のクオリティ遙かにあがった気がする・・・(´・ω・`)

224 :デフォルトの名無しさん:2009/01/04(日) 09:23:52
>>219
VC6の頃はF1で的確なヘルプが出てきたけど.netのヘルプはでたらめじゃないか。これでドキュメントを読めというのは無茶じゃないか?

225 :デフォルトの名無しさん:2009/01/04(日) 09:31:59
あ、ここにも一人

226 :デフォルトの名無しさん:2009/01/04(日) 14:05:21
休みの日に恐れ入ります。

現在、8bppindexedのgifファイルを1bppindexedのGIFファイルに
変換するソフトを作っています。

Image img=new Bitmap(10,10,System.Drawing.Image2D.Imageformat.1bppindexed);
といった感じにimgを作成し、
img.Save(myfilepath, ・・・1bppindexed);
という風に保存すると、なぜか、myfilepathのGIFファイルはカラーデプスが
8bppになってしまいます。
1bppindexedで保存することはできないのでしょうか。

227 :デフォルトの名無しさん:2009/01/04(日) 14:25:33
Image.SaveにPixelFormat渡すのなぞ無いはずだが
んー、たしかにGDI+のエンコーダはGIFは8bppのみのサポートだった気がする

228 :デフォルトの名無しさん:2009/01/04(日) 14:29:12
>>227
すみません、saveにpixelforって書いたのはミスです不正確ですみません。

>>んー、たしかにGDI+のエンコーダはGIFは8bppのみの

なんですって!!ということはどうすれば1bppindexedのGIFファイルを
作れるのでしょうか。グーグルしても全然ヒットしません・・。

229 :デフォルトの名無しさん:2009/01/04(日) 14:31:52
あ!!

ttp://support.microsoft.com/kb/318343/ja

>>GDI + クラスは、 System.Drawing クラスによって作成される、GIF イメージ ファイルは、8 1 ピクセル (bpp) ビット イメージを使用して常に保存されます。

なるほど!!ってことは、別の手段にするほかなさそうですね・・・

230 :デフォルトの名無しさん:2009/01/04(日) 14:40:39
WPFのGifBitmapEncoderとか

231 :デフォルトの名無しさん:2009/01/04(日) 15:06:57
わぉ!!

こりゃ斬新です!!!こんなのが世の中にあったのかー

プラットフォームがWindows VistaになってますけどXPでもいけますよね?

232 :デフォルトの名無しさん:2009/01/04(日) 15:12:02
XPならSP2+.NET3.0以上

233 :デフォルトの名無しさん:2009/01/04(日) 15:37:38
WebBrowserで質問です。リンクをクリックしたときに、それが新たにブラウザを
開いてしまうのか、それとも同じブラウザ内に表示されるのか、クリックの前に
知る方法はあるでしょうか。右クリック・メニューにはその情報がないため
クリックしてからでないとわかりません。IEが出て来るまでに時間がかかって
しまう場合が多くいらいらしてしまうのでした。
何かよい方法があるといいのですが・・・アドバイスお願いします。

234 :デフォルトの名無しさん:2009/01/04(日) 15:41:13
>>233
a タグの属性見ればいいんじゃね?

235 :デフォルトの名無しさん:2009/01/04(日) 15:48:19
>>233
http://support.microsoft.com/kb/815714/ja

236 :デフォルトの名無しさん:2009/01/04(日) 16:31:51
VS2005のC#で、XP上でボタンを押すと単純にbluetoothのオン・オフを切り替えるだけのアプリを作りたいのですが、
どこから手をつけてよいのか分からないのです。ぐぐってもWindowsMobileの情報ばかりで・・・
WindowsMobileのBthSetModeに相当するような関数はあるのでしょうか?

237 :デフォルトの名無しさん:2009/01/04(日) 16:33:54
>>234
クリックされたときにそこの内容がつかめればいいということですか。

>>235
NewWindow イベント というものがあるのですね、知りませんでした、
これで単純にキャンセルすることはできそうですね!!
これで新しいブラウザではなくて自分のところにリダイレクトできれば
いいのですね。この CancelEventArgs にはアドレスがなさそうなので
どうやったら掴めるか、また調べてみますです。

どうもありがとうございました!



238 :デフォルトの名無しさん:2009/01/04(日) 16:38:12
>>236
BluetoothSetLocalServiceInfo() とかの API は使えないの?

239 :デフォルトの名無しさん:2009/01/04(日) 16:40:09
>>237
> クリックされたときにそこの内容がつかめればいいということですか。

違う。DOM でパースして、target 属性を見ればいいんじゃない? ってこと。
ま、a タグに Javascript を仕込まれてたりしたときのことを考えなくちゃならんけどw



240 :デフォルトの名無しさん:2009/01/04(日) 18:07:58
C#でAccessデータベースをOLEで連携してDataGridで表示しつつ
右横に単票状態のデータベースを表示し、修正する名簿ソフトを
作っています。
そこで質問をさせてください。

----
DataGridに表示させ、DataGridの右横にテキストボックス
を配置し、テキストボックスにデータベースのデータソースと
バインドさせて、名簿管理ソフトを作りました

これに機能追加で、DataGridの表示条件を絞り込みできるようにしようと
しました。

そこで、
DataViewを使って、RowFilterプロパティを使って抽出条件で
DataGridの表示条件を絞り込み出来る機能を追加しましたが
DataGridの右横にあるテキストボックスとDataGridのデータが
連動されなくなってしまいました。
(DataGridの絞込みをしてもテキストボックスに表示されるのは
データソースの1行目の情報となってしまう)

これを解消する良い方法は無いでしょうか?
テキストボックスでデータ修正をし、データベースの情報を
修正する機能をつけていて、それを無くしたくは無いのです。
お手数をおかけしますがご教示ください

また、説明不足や表現力不足でわかりづらかったらご指摘ください
ますと幸いです。

241 :デフォルトの名無しさん:2009/01/04(日) 18:15:00
TextBoxのバインディングソースもそのDataView使えばいいんじゃね

242 :デフォルトの名無しさん:2009/01/04(日) 18:56:09
>>241
なるほど、試してみます
どうもありがとうございます

243 :デフォルトの名無しさん:2009/01/05(月) 01:12:37
教えてください。

フォームに配置されているコントロールの使用可制御を 以下のように行いたいのです。


textA.Enabled = true;

if (条件1)
{
textA.Enabled = false;
}

if (条件2)
{
textA.Enabled = false;
}

if (条件3)
{
textA.Enabled = false;
}


このソースを実行すると、if文の条件に合ったとき、 一瞬、コントロールが使用可になってから使用不可になる というちらつきが生じてしまいます。
「textA」としていますが、このようなコントロールがとてもたくさんあり、
if文の条件もたくさんあります。
また、条件はコントロールが『使用不可になる条件』しかなく、 使用可になる条件がない(使用不可の条件に1つも当てはまらなければ使用可) ため、いったんコントロールを使用可にしてから条件にあったときだけ 使用不可にする方法をとっています。
ちらつきをなくす良い方法はないでしょうか。
上記のソースが流れ終わるまでは画面の再描画を行わない、などの
方法があればお願いします。


244 :デフォルトの名無しさん:2009/01/05(月) 01:30:44
textA.Enabled = !(条件1||条件2||条件3);

245 :デフォルトの名無しさん:2009/01/05(月) 01:33:24
if (条件1)
{
textA.Enabled = false;
}
else if (条件2)
{
textA.Enabled = false;
}
else if (条件3)
{
textA.Enabled = false;
}
else
{
textA.Enabled = true;
}


246 :デフォルトの名無しさん:2009/01/05(月) 01:53:18
LockWindowUpdate() とかダメ?

247 :デフォルトの名無しさん:2009/01/05(月) 02:18:21
bool tmp = true;

if (条件1)
{
tmp = false;
}

if (条件2)
{
tmp = false;
}

if (条件3)
{
tmp = false;
}

if(textA.Enabled != tmp)//これ無いとちらつく?試してないけど
{
textA.Enabled = tmp;
}

248 :デフォルトの名無しさん:2009/01/05(月) 02:36:56
>>247
> ラスト4行
確認はしていないが、そのチェックはプロパティの実装に入ってる可能性が高い
他のには大抵入ってるし、ないとEnabledChangedが正常動作しなくなる


249 :デフォルトの名無しさん:2009/01/05(月) 06:42:38
textA.BeginUpdate(); // EndUpdate()まで画面の再描画を行わないようにする
textA.Enabled = true;

if (条件1)
{
textA.Enabled = false;
}

if (条件2)
{
textA.Enabled = false;
}

if (条件3)
{
textA.Enabled = false;
}

textA.EndUpdate();

250 :デフォルトの名無しさん:2009/01/05(月) 11:54:19
240の質問の続きです・・・
240の質問事項については、>>241で無事解決しました。
どうもありがとうございます。


RowFilterでフィルタをかけている状態で、下記のコマンドをボタンで実行
させていますが、DataGridのフォーカスを手動で変更をしないと
データベースが更新されないのです。
※フォーカスを移動しなくても更新されるようにEndCurrentEdit
メソッドを事前にかけているのですが・・・

---------------------------------
int iRow; //更新したレコード数
this.BindingContext[dbCustomer1, "M_Customer"].EndCurrentEdit();
iRow = oleDbDataAdapter1.Update(dbCustomer1, "M_Customer");
MessageBox.Show("更新 " + iRow + "件");
-----------------------------
度々すみませんが、ご教示いただけないでしょうか?


251 :デフォルトの名無しさん:2009/01/05(月) 12:06:07
string path が不正なパスのとき ( "::{hogehoge}" みたいな )

bool b = Directory.Exists( path );
は例外ださないでfalseが返る (内部では出ててcatchされてるのがパフォーマンスモニタで確認できる) けど

DirectoryInfo di = new DirectoryInfo( path );
bool b = di.Exists
だとコンストラクタの時点でArgumentExceptionがでる

前者でも例外出してくれた方がいいかなぁ
でも実用的じゃなくなるかなぁ
ただ「信頼性とパフォーマンスモニタ」の「# of Exceps Thrown」が増えてくのは気持ち悪い
つーか増えてく原因探すのでえらい手間取ったorz

252 :デフォルトの名無しさん:2009/01/05(月) 12:23:10
Visual Studio 2008で専用ブラウザを作成しています
FormClosing時に画面は閉じても良いのですが閉じる前に
サーバーに対してログアウト処理のページを読み込ませて
強制ログアウトさせたいのですが、FormClosingでNavigate
に処理ファイルを書いて実行しても処理は行われず
FormClosingの最終部にe.Cancel = true;を書くと
処理は実行されます。
しかしこれだとどうやっても画面が閉じれなくなるので
何とかしたいのですが、この場合どういう書き方をしたら良いのでしょうか?

253 :デフォルトの名無しさん:2009/01/05(月) 12:35:07
FormClosing
{
 if( !ログアウト処理した )
 {
  e.Cancel = true;
  FomClosing中ですよ = true;
  ログアウト処理();
 }
}

ログアウト処理
{
 ...

 ログアウト処理した = true;
 if(FomClosing中ですよ)
 {
  this.Close();
 }
} 

254 :デフォルトの名無しさん:2009/01/05(月) 12:41:51
ログアウトしたかどうかの判断がFormのイベントハンドラに入ってて、
フォームを閉じる処理がログアウト処理()に入ってるっていうのはどうなの。
まるでVB厨の書くコードみたいw

ってういか、そもそも>>252のいっているような現象って本当に起こるの?

255 :デフォルトの名無しさん:2009/01/05(月) 12:42:00
最終部にApplication.DoEvent();

256 :デフォルトの名無しさん:2009/01/05(月) 13:44:23
UWSCというマクロツールの画像判定処理
(bmpファイルを読み込んで、その画像と同じものが画面上になければfalseを返す
画面上にあればtrueを返してその画像の座標を参照渡しするというモノ)
をC#で実現しようとしてがんばってるんだけど

BitmapクラスのGetPixelを使って再現してみたら実行にものすごく時間がかかるんですけど
これを早くする方法はないですか?


257 :デフォルトの名無しさん:2009/01/05(月) 13:51:57
LockBits

258 :デフォルトの名無しさん:2009/01/05(月) 14:00:20
GetPixel/SetPixelって何のために生きてるの?
知らないと使ってしまいがちな絶対使ってはいけないものの代表格だよね

259 :デフォルトの名無しさん:2009/01/05(月) 14:02:53
>>258
極端な思考だなあ。。
こういうのを2ch脳っていうのかなあ。(というのも極端な思考かもしれんが)

260 :252:2009/01/05(月) 15:00:37
>>253
書かれている方法で試したのですがこれだと無限ループが発生して
しまいませんか?

>>254
私の環境では起きてます。orz

webBrowser.Navigateで通信が完了した等の
情報をひらう事は出来ないのでしょうか?
もし出来るならやり方を教えてもらえませんか?

261 :デフォルトの名無しさん:2009/01/05(月) 15:18:58
ログアウト処理はBeginInvoke使って呼び出さないと駄目っしょ
ログアウト後のCloseはまた別にWebBrowserのイベントとかで呼び出しってことになるだろうけど
>>254
FormClosing中にWebBrowser.Navigateしても意味無いのは当然

あとはWebBrowserのイベント調べれ

262 :デフォルトの名無しさん:2009/01/05(月) 15:22:25
そう言えばどうせNavigateして完了待ちになるならBeginInvokeも特に必要ないな

263 :109:2009/01/05(月) 15:46:03
>>110
情報ありがとです。
なぜか{"テーブルに主キーがありません。"}って怒られました。
データベースエクスプローラのテーブルにある奴をダブルクリックしたら構成画面みたいなの出たので
右クリックで「主キーの設定」ってのはやったんですけど・・・
やさしそうな本買って勉強してみます。

264 :252:2009/01/05(月) 16:56:12
>>261-262
ありがとうございます
調べてみます

265 :デフォルトの名無しさん:2009/01/05(月) 17:20:31
>>263
主キー(primary key)とは制約(constraint)であり、その列に重複(duplicate)する値を持たないので一意性(ユニーク,unique)がある
つまり主キーから行を特定できる

266 :デフォルトの名無しさん:2009/01/05(月) 20:53:41
NUnitを使っているのですが、

テストデータとして予め用意したテストファイル(VS2008のプロジェクトディレクトリ内)を
使う場合、そのパスを取得するいい方法は何でしょうか?

Assembly.GetAssemblyで取得しようとすると、NUnit の GUI runner がshadow copyをしているので
違う一時ディレクトリになってしまい、shadow copyをオフにするとAssemblyにロックがかかってしまい
VSでのビルドができなくなってしまって困っています。

267 :デフォルトの名無しさん:2009/01/05(月) 22:49:38
Gifファイルのカラーパレットを変更したいです。
現在はビット深さが8bitで、カラーパレットは2^(7+1)で256色用意してあります。というかこれがデフォルトだと思います。
この状態で、ビット深さは8bitのままで、カラーパレットのエントリーのレングスを2にしたいのですが、

どうやったらいいのかわかりません。お願いいたします。

(目的は、特許庁のインターネット出願ソフトをパスするためです。どうやら、カラーパレットが2でないと
出願ソフトではじかれてしまうようなのです)

268 :デフォルトの名無しさん:2009/01/05(月) 23:04:17
意味が分からん
パレットのエントリ数は色深度で決まるもんだろ?
つーか普通に画像処理ソフト使えよと思うわけだが

269 :デフォルトの名無しさん:2009/01/05(月) 23:11:38
>>268
>>パレットのエントリ数は色深度で決まるもんだろ?

原則、そうだと思います。ただ、GIFのヘッダーのパックドの2〜4ビット目と、6〜8ビット目を
みるとお分かりの通り、デプスとエントリ数は異なる値に設定できるようになっています。

Universal Document Printerという市販ソフトでモノクロ出力すると、
デプスが8でパレットのエントリ数は2で出力されます。
個人的には、こうするんだったら、デプスが1bitでエントリ数が2という組み合わせで
いいじゃないかとも思うんですが、業界としてデプスは8bitが標準なので
それに倣っているんだな、と勝手に解釈しています。

270 :デフォルトの名無しさん:2009/01/05(月) 23:17:30
static public void test()
{
Bitmap bmp = new Bitmap(@"C:\Documents and Settings\stuv\デスクトップ\b1.gif");
Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
BitmapData bmpData = bmp.LockBits(rect, ImageLockMode.ReadWrite,bmp.PixelFormat);
IntPtr ptr = bmpData.Scan0; int stride = bmpData.Stride; int bytes = stride * bmp.Height; byte[] index = new byte[bytes];

// Copy the RGB values into the array.
System.Runtime.InteropServices.Marshal.Copy(ptr, index, 0, bytes);

int initX;
for (int y = 0; y <bmp.Height; y++)
{
initX = stride * y;
for (int x = 0; x < bmp.Width; x=x+2)
{
index[initX + x] = 0;
index[initX + x+1] = 1;
}
}
System.Runtime.InteropServices.Marshal.Copy(index, 0, ptr, bytes);
bmp.UnlockBits(bmpData);
Bitmap bmpTemp = new Bitmap(1, 1, PixelFormat.Format1bppIndexed);
ColorPalette pal = bmpTemp.Palette;
pal.Entries[0]=Color.Black;
pal.Entries[1]=Color.White;
bmp.Palette = pal;
bmp.Save(@"C:\Documents and Settings\stuv\デスクトップ\b2.gif", ImageFormat.Gif);
bmp.Dispose();
コンソールです。これよりスマートなのはありますでしょうか。

271 :デフォルトの名無しさん:2009/01/06(火) 01:13:23
RowFilterでフィルタをかけている状態で、下記のコマンドをボタンで実行
させていますが、DataGridのフォーカスを手動で変更をしないと
データベースが更新されないのです。
※フォーカスを移動しなくても更新されるようにEndCurrentEdit
メソッドを事前にかけているのですが・・・

---------------------------------
int iRow; //更新したレコード数
this.BindingContext[dbCustomer1, "M_Customer"].EndCurrentEdit();
iRow = oleDbDataAdapter1.Update(dbCustomer1, "M_Customer");
MessageBox.Show("更新 " + iRow + "件");
-----------------------------


272 :デフォルトの名無しさん:2009/01/06(火) 11:32:48
ネットワークからのデータを1バイトずつ処理したいので、BufferedStreamを使おうとしたのですが、
BufferedStreamにデータが到着したかどうかを取得できる機能が見つからなくて困っています。
普通にReadByte()すると切断されるかリモートホストからデータが1バイト来るまでブロックしてしまいますし、
LengthやPositionの取得はおろかタイムアウトの設定すらサポートされていません。
1バイトを読むためにいちいちコールバックさせるのも面倒でたまりません。何かいい方法はありませんか?

273 :デフォルトの名無しさん:2009/01/06(火) 12:28:03
非同期でやれば

274 :デフォルトの名無しさん:2009/01/06(火) 19:12:20
NetworkStream.DataAvailable

275 :デフォルトの名無しさん:2009/01/06(火) 19:32:40
64*64の画像をバッファに取り込んで、そこから32*32の範囲を拡大縮小せずに取り出すことはできますか?Rectangleを使うらしいですが、そこから先が分かりません。教えて下さい。

(例)
Bitmap bmp = new Bitmap("test.bmp");
Rectangle rec = new Rectangle(0,0,32,32);
Bitmap result = ??

276 :デフォルトの名無しさん:2009/01/06(火) 20:00:40
新しいBitmap作ってGraphics.FromImageで作ったGraphicsにGraphics.DrawImage

277 :デフォルトの名無しさん:2009/01/06(火) 20:30:02
>>276
それはここのことを言ってると思いますが、
http://dobon.net/vb/dotnet/graphics/triming.html

Bitmap img = new Bitmap(@"C:\サンプル.jpg");
//PictureBox1のGraphicsオブジェクトの作成
Graphics g = PictureBox1.CreateGraphics();

//元の画像の(10,10)-(100,100)の部分を切り取って表示する
//座標(0,0)に表示し、単位をピクセルとする
Rectangle rect = new Rectangle(10, 10, 100, 100);
g.DrawImage(img, 0, 0, rect, GraphicsUnit.Pixel);

//Graphicsオブジェクトを破棄
g.Dispose();

これは一部を表示するだけで、私がしたい「別のbitmapまたはimageデータに切り取った画像を入れたい」ことにつながってません。
この点厚かましいお願いとは思いますがよろしくお願いします

278 :デフォルトの名無しさん:2009/01/06(火) 20:35:06
言ってない

279 :デフォルトの名無しさん:2009/01/06(火) 20:35:46
ぽかーん・・・

280 :デフォルトの名無しさん:2009/01/06(火) 20:44:19
>>277
噴いたwwレベル高いなおいwww


まぁ、この程度の事にGraphics持ち出すのは大袈裟だとは思うが、要求仕様は満たしてるな。
MSDN行って、Bitmapクラスのメソッド一覧読んで来い。

281 :デフォルトの名無しさん:2009/01/06(火) 21:06:00
Objectとobjectってなにが違うんですか?
(先頭の大文字と小文字)
イベントの引数を書いてると、小文字のobjectが最初に出てきます。


282 :デフォルトの名無しさん:2009/01/06(火) 21:06:54
>>281
C# のキーワードと、.NET のオブジェクト

283 :デフォルトの名無しさん:2009/01/06(火) 21:07:10
あ、逆ね。object が C# のキーワード。

284 :デフォルトの名無しさん:2009/01/06(火) 21:26:50
おまえらはStringとstringどっちで書いてるんだ

285 :デフォルトの名無しさん:2009/01/06(火) 21:29:44
宣言はstring

286 :デフォルトの名無しさん:2009/01/06(火) 21:30:04
string だなぁ。

287 :デフォルトの名無しさん:2009/01/06(火) 21:31:15
Int32

288 :デフォルトの名無しさん:2009/01/06(火) 21:31:33
String
VSで型名が水色に統一されるからw
by 素人

289 :デフォルトの名無しさん:2009/01/06(火) 21:31:39
静的メソッド呼び出すときだけString

290 :デフォルトの名無しさん:2009/01/06(火) 21:53:38
何か水色だと参照型な気がしてしまう

291 :デフォルトの名無しさん:2009/01/06(火) 22:04:39
>>289
オマエハオレカ

292 :デフォルトの名無しさん:2009/01/06(火) 22:36:47
折角キーワード用意してくれてるんだから全部小文字でいいじゃん

293 :デフォルトの名無しさん:2009/01/06(火) 22:39:43
小文字で始まるとJava臭くなるから

294 :デフォルトの名無しさん:2009/01/06(火) 23:10:42
String や Object のほうが Java くさい

295 :デフォルトの名無しさん:2009/01/06(火) 23:48:50
StringやObjectはVBくさい。

296 :デフォルトの名無しさん:2009/01/06(火) 23:53:18
ほにゃらら臭くない命名規則なんてあるのか?

297 :デフォルトの名無しさん:2009/01/07(水) 00:03:35
CodeZineで瀬○遥が投稿するたびに
憂鬱になるのは俺だけ?

298 :デフォルトの名無しさん:2009/01/07(水) 00:15:38
stringが正解です。

299 :デフォルトの名無しさん:2009/01/07(水) 00:19:44
namespace書かない方がusingで指定しなくてもクラス使えて便利だった

300 :デフォルトの名無しさん:2009/01/07(水) 01:30:33
教えてください。
TreeViewにあるアイテムを選択し、それをExplorerを使って
あるフォルダへD&Dすることで、そのフォルダにテキストファイルを作成する
ことを考えています。
そのために、D&D先のフォルダのパスを検出する必要があるのですが、
それがどうもわかりません。
QueryContinueDragを使ったほうがいい?とWebにもあるのですが、
そのイベントで得られるイベント引数にはExplorerのパスが含まれていません。

ExplorerからTreeViewへのD&Dは簡単だったのですが・・・

どなたか教えていただけないでしょうか。

301 :デフォルトの名無しさん:2009/01/07(水) 09:45:14
>>300

http://dobon.net/vb/dotnet/control/droptoexplore.html
ここを参考にしてみては?

今どうやろうとしているのかよくわからないんだけど、explorerのパスを取得するの
ではなくて、あらかじめテキストファイルを作成しておいて、ドロップしたいそのファイルの
パスを IDataObject(Dataformats.FileDrop, string[]{パス})として、explorerに通知するん
だと思うが。

302 :デフォルトの名無しさん:2009/01/07(水) 09:50:29
>>300
ファイルやディレクトリをエクスプローラへドラッグ&ドロップするには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/384expdragdrop/expdragdrop.html
エクスプローラへドロップしたタイミングでファイルを作成し、コピーしたい
http://forums.microsoft.com/msdn-ja/showpost.aspx?postid=1325458&siteid=7

これらを見た感じ、エクスプローラ側のドロップ先パスを調べることは出来ないみたいだね。
エクスプローラへのドロップは、ファイルコピーまたは移動をエクスプローラが主体となって行う。

だからあらかじめ、作成したいファイルをどこか一時的に出力しておいて、
それらのファイルパスをドラッグデータに設定するしかないんでない?

303 :デフォルトの名無しさん:2009/01/07(水) 09:55:39
すまん被った。

質問。
XmlSerializerで任意の型が含まれるobject配列をシリアライズしたいのですが、
その為にはXmlSerializerのコンストラクタへ、含まれる可能性のあるTypeを
全て渡しておかなければいけません。
そこで、XmlSerializer生成前にobject配列内の要素を総なめしType一覧を生成して
XmlSerializerに渡しているのですが、これって正しい方法なのでしょうか?

304 :デフォルトの名無しさん:2009/01/07(水) 10:11:03
普通は属性で事前に定義しとくもんだろ
デシリアライズ時にどうすんだ

>>300
ドロップ時の動作はドロップ側で行うものだから
基本的にはDataFormats.FileDropとダミーファイル作るしかない。
ダミーを作るのが嫌ならシェル拡張でExplorerのドロップ時動作を書き換えることになる。
が.NET/C#でシェル拡張は止めといたほうがいいというのが定説だな。
Explorer以外のファイラとかだとまず無意味だし。

305 :デフォルトの名無しさん:2009/01/07(水) 11:03:46
最近、C#を勉強しはじめたのですが、delegate、event で困惑してしまって・・・。

namespace my_namespace
{
  delegate void my_delegate();

  class my_class
  {
    public event my_delegate MyEvent;

    public void my_func()
    {
      Console.WriteLine("hello");
    }

    static void Main(string[] args)
    {
      my_class oIns = new my_class();

      my_delegate del0 = oIns.my_func; //※1
      my_delegate del1 = new my_delegate(oIns.my_func); //※2
      del0 += oIns.my_func; //※3
      del1 += new my_delegate(oIns.my_func); //※4
              :
    }
  }
}
[質問1]
※1と※2、※3と※4 この2種類の式でどのような違いがあるのかわかりません;;


306 :305:2009/01/07(水) 11:04:38
あと、
"System.Windows.Forms.Buttonクラスインスタンス"の"Clickイベント"へイベントリスナーを登録しようとした際、

  public void MyEventHandler(object sender, System.EventArgs e){ … }
         :
  this.button1.Click = this.MyEventHandler;

と記述すると、
  イベント 'System.Windows.Forms.Control.Click' は += または -= の左側にのみ表示されます。
と、コンパイルエラーが表示されます。

[質問2]
どうして、"="ではリスナーの登録ができないのでしょうか;;

長文ですいません;;。何かお分かりの方、どうぞ、お知恵を…m(_ _)m

307 :デフォルトの名無しさん:2009/01/07(水) 11:09:27
> ※1と※2、※3と※4 この2種類の式でどのような違いがあるのかわかりません;;
同じ 型が明らかなので省略可能ってだけ

> どうして、"="ではリスナーの登録ができないのでしょうか;;
eventがそういう仕様(add/removeのみ)だから

308 :デフォルトの名無しさん:2009/01/07(水) 11:48:11
> ※1と※2、※3と※4 この2種類の式でどのような違いがあるのかわかりません;;

デリゲートの場合、=を使うとデリゲートがクリアされて新しく格納される
+=つかうと追加になって実行時にマルチキャストされる

イベントは基本的にマルチキャストされるべきなので外部からは+=か-=しかできない仕様になってる
イベントを実装するクラスでは=も可能

309 :305:2009/01/07(水) 11:51:11
>>307
レス、ありがとうございます m(_ _)m

> > どうして、"="ではリスナーの登録ができないのでしょうか;;
> eventがそういう仕様(add/removeのみ)だから
ご回答頂いたとおり、私も最初、「そういうものなんだろうなぁ〜」と思ったのですが、以下のソースでは、問題なくコンパイルが通ります。
※環境ですが、VS2008sp1 .NetFramework3.5sp1 です。

310 :305:2009/01/07(水) 11:52:44
using System;
namespace my_namespace
{
  delegate void my_delegate();

  class my_class
  {
    public event my_delegate MyEvent;

    public void my_func()
    {
      Console.WriteLine("hello");
    }

    static void Main(string[] args)
    {
      my_class oIns = new my_class();

      my_delegate del0 = oIns.my_func;
      my_delegate del1 = new my_delegate(oIns.my_func);

      oIns.MyEvent = oIns.my_func; //※1
      oIns.MyEvent = del0; //※2
      oIns.MyEvent = del1; //※3
    }
  }
}
※1〜3部分がコンパイルエラーにならないんです・・・
なんでだろ;;

311 :デフォルトの名無しさん:2009/01/07(水) 11:55:41
同じクラス内だから

312 :デフォルトの名無しさん:2009/01/07(水) 11:58:31
>>308でも書いたけど、
外部から=できてしまうということは、他で登録されていたかもしれないイベントを
全部削除できてしまうということになる。
それだからイベントを使う側からは追加か、既知のデリゲートの削除しかできないような仕様はあたりまえっしょ
イベント定義したクラスではすべてのことができる

313 :305:2009/01/07(水) 12:21:16
>>308,311,312
レスありがとうございますm(_ _)m
309-310を書き込んでる間に、308が書かれていたようで;;
大変失礼しましたm(_ _)m
レス頂いた内容でスッキリしました。ありがとうございます。

余談なのですが…
私は、もともと、C→java、そして、C#と勉強?(仕事で使っている)してきたのですが、どうにも、C#はややこしく感じてしまいます…。
うまくいえないのですが、
・vatualやorverrideやnew
・delegateやevent
・struct(これは、アリだとおもいますが…)
といったものは、javaをやっていると、「必要かな?」とおもうような言語仕様のように思えます…
ただただ、ややこしくしているように感じます…
もう、歳なんですかね;;

314 :デフォルトの名無しさん:2009/01/07(水) 12:25:59
>>305
.NET1.xまでは※4で書く必要があったが、.NET2.0以降は※3でよくなった。
匿名メソッドやラムダ式への布石だと思う。
>del0 += oIns.my_func; //※3
>del1 += new my_delegate(oIns.my_func); //※4

.NET2.0以降なら※3を使ったほうがよい。最適化してくれることがある。

>>313
単に慣れかと、むしろ
>・struct(これは、アリだとおもいますが…)
この一文に不安を感じる。

315 :デフォルトの名無しさん:2009/01/07(水) 12:32:02
CとJavaの間にC++が入ってたらすんなりだったかもな。

316 :デフォルトの名無しさん:2009/01/07(水) 12:46:33
DelphiやJ++に手を出してたもので理解は早かった。ヘジたんラブということで(笑

eventは一度add/removeを自分で書いてみると完全に理解できると思う。
java1.1で匿名クラスが出たときの方が理解に時間がかかったな。

317 :デフォルトの名無しさん:2009/01/07(水) 13:04:45
overrideはJavaにあるじゃない
overrideはないと困るから追加されたんだよ
あとJavaにはvirtualがないために
メソッド定義にfinalをつけると速度が格段に上がるということが実際にあったんだよ

delegate的なものもそのうち追加されるよ

318 :デフォルトの名無しさん:2009/01/07(水) 17:12:22
これからC#勉強するため本を買おうと思っています。
VB, Delphiはそこそこ使えます。
ローカルデータベースでの顧客管理みたいなプログラムを作ろうと思ってるのですが
今まで買って「この本はなかなかお勧めだよ」って本あったらぜひ教えて下さい。
データベースはSQL ServerかAccessがいいのかなって思ってます。

319 :デフォルトの名無しさん:2009/01/07(水) 17:36:21
http://codezine.jp/article/detail/1?p=1
上のサイトを参考に、Plug-inフォルダに入れ込んだDLLをアプリケーションの起動時に読み込むようにしようとしています。
コードもほとんどコピーのはずなのに、何故か実行するとダウンキャストを行う所で例外が発生します。

// 読みだし終わったDLLにあるクラスをインスタンス化
Object obj = asm.CreateInstance(t.FullName); // tFullNameはCountChars.CountChars
Debug.WriteLine(obj.GetType()); // 「CountChars.CountChars」が表示される
CountChars.CountChars plg = (CountChars.CountChars)obj; // ここで型変換したのだが、System.InvalidCastExceptionが発生
// Exceptionが発生したため、以下のコードが実行されません
Debug.WriteLine("Plug-in Run");
plg.Run();
Debug.WriteLine("Plug-in Runed");

正直、何故うまくダウンキャストされないのか理由が思い浮かばないという状況です。
お知恵をお貸しいただけると大変ありがたいです。


320 :デフォルトの名無しさん:2009/01/07(水) 17:39:04
C#は上位の名前空間と同名のクラスを認めてないみたいな話じゃないの

321 :デフォルトの名無しさん:2009/01/07(水) 17:54:31
プラグインが実装するインターフェイスのアセンブリは、
呼び出し側とプラグイン側で同じものを参照する必要がある。
両方に同じコードをコピーしてそれぞれでコンパイルしてるのではないかな。

322 :デフォルトの名無しさん:2009/01/07(水) 17:56:37
俺はC++&PythonからC#入ったら、ほとんど覚えることは無かったな。
最近のGC付き言語はどれも似たような感じだね。

323 :319:2009/01/07(水) 18:34:24
>>321
どうもご返答ありがとうございました
一応あの後頑張った結果

1.インターフェースクラスのみをdllに吐き出す
2.参照の追加、でdllを参照に加える(これは継承したクラスとアプリケーションどちらも)
3.この状態で動的ロードとダウンキャストを行う

で、うまく行きました
ありがとうございました。




324 :デフォルトの名無しさん:2009/01/07(水) 20:27:38
>>275
解決しました

325 :デフォルトの名無しさん:2009/01/07(水) 20:44:01
Runed・・・ 笑うとこ?

326 :デフォルトの名無しさん:2009/01/08(木) 07:59:11
sql serverへの接続プログラムを作っていて不思議に思ったことがありました。

SqlConnectionクラスが保持しているリソースの開放を、
『using + IDisposableインタフェイス』で行いました。
 using (SqlConnection oCon = new SqlConnection("接続文字列"))
 {…処理…}

この時、ふと、
 「SqlConnectionクラスって、IDisposableインタフェイスを実装してるよね?」
と思い、継承関係を追いかけてみると、親クラスであるDbConnectionが、
IDisposableインタフェイスを継承していました。
 「あ〜、ここで継承してるのね。」
 「Disposeメソッドを定義してるのが、SqlConnectionクラスなんだ。」
と思ったのですが、SqlConnectionクラスのDisposeメソッドを見てみると
 protected override void Dispose(bool disposing)
となっていました。
 「あれ? "void Dispose()" じゃないの?」
と思い、引き続き調べてみると、DbConnectionクラスの親クラスである
Componentクラスもまた、IDisposableインタフェイス継承しており、
ComponentクラスにてDisposeメソッドが定義されていました。

ComponentクラスでもIDisposableインタフェイスを継承しており、
Componentクラスを継承しているDbConnectionクラスもまた、IDisposableインタフェイスを
継承していることがとても、不思議でした。
なぜ、DbConnectionクラスでもIDisposableインタフェイスを継承する必要があるのでしょうか?

以上、おサルな私に何かアドバイス頂けたら幸いです。

327 :デフォルトの名無しさん:2009/01/08(木) 08:10:18
DbConnectionはDisposeには手を出してないよ
Componentがpublic void Dispose()とprotected virtual void Dispose(bool)を定義
Dispose()およびファイナライザ内でDispose(bool)を呼び出す
DbConnectionは何もしない
SqlConnectionがprotected override void Dispose(bool)をオーバーライド
クラスの解説の定義のとこに出てくるインターフェイスは基底が実装してるのも含めて書かれる

328 :326:2009/01/08(木) 08:26:19
>>327
>クラスの解説の定義のとこに出てくるインターフェイスは基底が実装してるのも含めて書かれる
この1行で全てが解決しました。
目から鱗です。
ありがとうございました。

329 :デフォルトの名無しさん:2009/01/08(木) 12:26:05
Objectとobjectって同じもの?Stingとstringって同じもの?


330 :デフォルトの名無しさん:2009/01/08(木) 12:54:57
System.Objectとobjectは同じもの
System.Stringとstringは同じもの

331 :デフォルトの名無しさん:2009/01/08(木) 12:59:58
global::System.Object とすればさらに正確か

332 :デフォルトの名無しさん:2009/01/09(金) 02:34:19
C#やり始めて3年、大体空気するように使えるようになったけれど、F#今初めてどのぐらいでこの域に達するかな・・・
やっぱり日々の仕事で使ってかないと上達しないんだろうな・・・

333 :デフォルトの名無しさん:2009/01/09(金) 12:21:41
>>332

プログラミング言語なんてひと月ふた月でフルに立ち上がらないようなやつは
だめだろ 

334 :デフォルトの名無しさん:2009/01/09(金) 12:24:23
F#が日々の仕事で使えるわけないがな

335 :デフォルトの名無しさん:2009/01/09(金) 13:37:02
>>333
ひと月ふた月でフルに立ち上がるってどんな超人だよw
そんな奴いるんだったらうちで月50万で即雇うよ。
住所と名前教えてくれ。
フルってC#で可能な事なら何頼んでもすぐ完成させてくれるって事だよな?
マジで雇う。

336 :デフォルトの名無しさん:2009/01/09(金) 15:06:09
VC#2008EE なんですけど、
コンパイルのたびに前回のコンパイルなどの知識を生かしてPGO(?)、最適化みたいなことって
やっているんですか?

意味不明な質問ですいません

337 :デフォルトの名無しさん:2009/01/09(金) 15:11:23
>>335
派遣会社にでも相談したら?
月150万出せば、貴方の言う超人レベルの人が来てくれるよ。

>>336
ただの最適化しかしてくれないよ。
PGOみたいな機能はない。

338 :336:2009/01/09(金) 15:15:02
ということは、
同じソースコードを同じパソコンでコンパイルしたら大体同じ速度ってわけですか。
(最適化オプションが一致なら)

しかしそれがどうもそうじゃない気がして気持ち悪いのですが。
なにかありがちな勘違いとかないですか?

339 :デフォルトの名無しさん:2009/01/09(金) 15:17:22
コンパイル時に行われる最適化はローカルな範囲だけ。
どこでコンパイルしても出来上がるILは一緒。
インライン展開が行われたりするのは実行時。

340 :デフォルトの名無しさん:2009/01/09(金) 15:21:30
気がすると言われても困る
dllのキャッシュとかその辺のレベルの話もあるわけだし

341 :336:2009/01/09(金) 15:23:53
>>339 さん
ありがとございました。



342 :デフォルトの名無しさん:2009/01/09(金) 15:25:57
VS2008 .net3.5SP1

SmtpClient を使用してメールを送信しようとしています。
2つのLANカードがささってるPCから送信する場合、
指定のLANカード経由でメールサーバーに接続する
プロパティや方法などありますでしょうか?

343 :336:2009/01/09(金) 15:28:48
>>340 すいません、こういう質問のしかたはよくないな、と思ったんですが。

結果とって計ったりしなかったもので。

344 :デフォルトの名無しさん:2009/01/09(金) 15:32:57
>>342
ServicePointプロパティの解説

345 :デフォルトの名無しさん:2009/01/09(金) 15:54:50
>>344
ServicePoint.BindIPEndPointDelegate プロパティ
でいけそうです。ありがとうございます。

346 :デフォルトの名無しさん:2009/01/09(金) 16:08:41
WebBrowserでリンクをクリックした時に、リンク先がpdf等だった場合
IEとかのブラウザが立ち上がってしまうんですが、これを直接pdfのプログラムで開きたい場合は
どうしたらいいんでしょうか。


347 :デフォルトの名無しさん:2009/01/09(金) 16:46:05
NewWindowイベントを持つ継承クラスを作ってイベントでNewWindowをキャンセルさせて、DLしたファイルを直接開く。

348 :デフォルトの名無しさん:2009/01/09(金) 20:49:08
超人レベルPGが月50万てw
駄クラスでもフリーランスで70万くらいは取ってるだろ。そんな安い金で来るわけねーだろw

349 :デフォルトの名無しさん:2009/01/10(土) 00:04:34
>>335のレベルが推して知れるな

350 :デフォルトの名無しさん:2009/01/10(土) 00:05:52
50万て。何重に搾り取られたゴミ派遣だよ…

351 :デフォルトの名無しさん:2009/01/10(土) 00:58:52
マ版へ池

352 :デフォルトの名無しさん:2009/01/10(土) 01:52:33
フリーと会社で雇うのは全く違う。
税金とか保険とか退職金とかあるだろ。

353 :デフォルトの名無しさん:2009/01/10(土) 01:53:36
http://www.atmarkit.co.jp/fdotnet/dnfuture/vs10net4_01/vs10net4_01_01.html
Parallelクラスいいな・・・

354 :デフォルトの名無しさん:2009/01/10(土) 13:35:06
>>351

355 :デフォルトの名無しさん:2009/01/10(土) 16:22:42
FormのPaintイベントで
DrawImageをしているのですが、

たまに
Formの上にウィンドウを表示しているところにも
DrawImageの一部が描画されてしまいます。

これはいったい何が原因なのでしょうか?
ウィンドウを再描画するようにするしか方法はないのでしょうか?


356 :デフォルトの名無しさん:2009/01/10(土) 16:26:21
ウインドウってなに

357 :デフォルトの名無しさん:2009/01/10(土) 16:35:24
MDI?

358 :デフォルトの名無しさん:2009/01/10(土) 16:35:47
液晶が焼きついたんだろ

359 :355:2009/01/10(土) 19:04:50
>>358
それかも。
違うハードで試してみます。

360 :デフォルトの名無しさん:2009/01/10(土) 19:07:29
何という釣り

361 :デフォルトの名無しさん:2009/01/10(土) 21:02:12
VS2005なんですけど
プロパティの自動作成機能ってなかったですっけ?
public clas MyClass
{
public string プロティ

って書いて自動でget,set作る機能です。

362 :デフォルトの名無しさん:2009/01/10(土) 21:07:20
prop

363 :361:2009/01/10(土) 21:29:44
thx

364 :デフォルトの名無しさん:2009/01/11(日) 03:29:41
質問です。

CのヘッダーファイルからDllImport行を自動生成するツールってありますか?
もしあるようでしたら、場所を教えて欲しいです。

365 :デフォルトの名無しさん:2009/01/11(日) 03:31:38
ピンボケドトネト

366 :デフォルトの名無しさん:2009/01/11(日) 09:21:44
>>364
ヘッダファイルからじゃないが

http://msdn.microsoft.com/ja-jp/magazine/cc164193.aspx

siggen
http://download.microsoft.com/download/f/2/7/f279e71e-efb0-4155-873d-5554a0608523/CLRInsideOut2008_01.exe


367 :デフォルトの名無しさん:2009/01/11(日) 18:28:44
>>366
それちゃんとヘッダファイルから生成してくれるよ

368 :デフォルトの名無しさん:2009/01/12(月) 20:22:14
ジェネリッククラスについていまいち理解できませんのでちょっと教えてください。
クラス内で扱うオブジェクトをDisposeする必要がある場合、
型パラメータにIDisposableの制約を与えます。
新しくクラスを作成するときに、上記のような制約のあるジェネリッククラスを作ればよいのか、
IDisposeインターフェースを継承したクラスを使えばよいのかの判断がわかりません。

継承されたクラスを作るなら作成されたクラスはIDisposeを求められる引数などに使えます。
ジェネリッククラスだとそういうケースでは使えないが、
パフォーマンスや、明示的に型を設定できることが便利です。

インターフェースの制約のあるジェネリッククラスとインターフェースを継承したクラスを
比較した場合、こんな考えでよいでしょうか?
なんか自分の理解が足りていない気がしましたので質問させてください。

369 :デフォルトの名無しさん:2009/01/12(月) 20:28:36
>>368
質問の意図がわからないし、俺じゃなくてもわかる人間がいる気がしない。
そもそも比較の対象になりようがない二つを比較している気がするんだが

370 :デフォルトの名無しさん:2009/01/12(月) 20:31:18
IDisposable はクラスを Dispose 可能にする(Dispose を強制する)ためのインターフェイスであって、
ジェネリックスとは直接関係ない。

クラスの機能としてジェネリックスが必要なのか? をまず考えるべきじゃね?

371 :368:2009/01/12(月) 20:46:15
>>369-370
お返事ありがとうです。
インターフェースの制約のあるジェネリッククラスとインターフェースを継承したクラスは
直接なんの関係もない、ということですね。

いろいろな型として振る舞わせたい場合はジェネリッククラス、
そんな必要はない場合はインターフェースの継承。

ジェネリッククラスの機能が導入され、Hashtableクラスはジェネリッククラス版ができ、
進化しました。
ということはジェネリッククラス>通常のクラス
と思ったわけです。
ジェネリックの機能の追加によるメリットを受けることができるのは
HashTableクラスのようなobject型としてデータを保存し、利用時にキャストしていたような
クラス、ということでしょうか?
そんな動作をしないようならジェネリッククラスは特にいらない、という解釈です。
まだ考えへんですかね?

372 :デフォルトの名無しさん:2009/01/12(月) 20:51:45
>>371
型パラメータに制約のあるジェネリッククラスもインターフェイスを実装できるわけだが。

全く別のものなのに、なんで比べてんの?

373 :368:2009/01/12(月) 20:59:32
>>372
>型パラメータに制約のあるジェネリッククラスもインターフェイスを実装できるわけだが
この機能考えてませんでした。
だとしたら極論ジェネリッククラスにしておくに超したことはないということでしょうか?
リソースやらなんやらで多少はデメリットあると思いますが。
とりあえずジェネリッククラスで実装しておいて利用時に型を限定できますので。

全く別物とは言われるのですが自分の中では未だに
ジェネリッククラス>そうじゃないクラス
に見えてしまっています。
結論を言うと皆さんの言うように別物なんでしょうが、
まだ理解ができていません。

いろいろなところで解説をみると「この場合ジェネリッククラスは便利」という内容は見かけますが、
「この場合ジェネリッククラスにすると変」みたいな例ありませんか?

374 :デフォルトの名無しさん:2009/01/12(月) 21:01:54
Form クラスをジェネリックスで実装するバカはいないだろJK

375 :デフォルトの名無しさん:2009/01/12(月) 21:14:20
つかジェネリッククラスはメタクラスなわけで、クラスとはレイヤが違うと何度言われれば(ry

376 :368:2009/01/12(月) 21:17:16
>>374
例えばこんなクラスですよね?
class MyClass<T> where T:Form
実際書いてみました。
利用時にTに設定するクラスが思いつきません。
>>375とも通じますが、つまり他のクラスを管理するようなクラスでないと
ジェネリックにする意味はない、ということでしょうか?

377 :デフォルトの名無しさん:2009/01/12(月) 21:28:43
つか、コンテナ以外の用途って何かあるの?

378 :デフォルトの名無しさん:2009/01/12(月) 21:32:22
IEquatable<T>のようなインタフェース

379 :デフォルトの名無しさん:2009/01/12(月) 21:36:16
へー。勉強になった。実装クラスでは何かある?

380 :デフォルトの名無しさん:2009/01/12(月) 21:42:40
Func<..> やら Linq の中身(処理の連結連結)でも使いまくり
だろ。


381 :デフォルトの名無しさん:2009/01/12(月) 21:49:54
ほー。勉強になった。LINQ とかあんま使ってないからなー。

382 :デフォルトの名無しさん:2009/01/12(月) 22:24:49
まーこれも型推論の出来ない静的であるせいなんだが。

383 :デフォルトの名無しさん:2009/01/12(月) 22:36:28
ジェネリックだとHoge<A>とHoge<B>は全くの別物になるからかえって不便になる場合がある
そういうときはわざわざ非ジェネリックのIHogeを定義してHoge<>に実装させたりする

384 :デフォルトの名無しさん:2009/01/12(月) 22:42:12
C# 4.0 でその手間もいらなくなるかもね

385 :デフォルトの名無しさん:2009/01/12(月) 22:46:08
値型は反変ダメだからやっぱり必要だよ

386 :デフォルトの名無しさん:2009/01/12(月) 23:34:41
string配列をSettingsクラスを使って保存したいんだけど、型を選ぶところにstring[]が無いんだけどどうすればいいの?

387 :デフォルトの名無しさん:2009/01/13(火) 00:19:56
手で入力する

388 :デフォルトの名無しさん:2009/01/13(火) 01:21:15
string[]をCSVに変換して保存する方法あります?
CSVからstring[]に変換することも視野に入れて

389 :デフォルトの名無しさん:2009/01/13(火) 01:24:28
for/string.split

390 :デフォルトの名無しさん:2009/01/13(火) 01:32:17
>>382
型パラメータなんて推論しまくって省略されまくりだろ。
パラメータ化しなければならないってならそうだけど
この方式が安全ではあるので仕方ない

391 :デフォルトの名無しさん:2009/01/13(火) 01:32:33
単なるsplitはまずい

392 :デフォルトの名無しさん:2009/01/13(火) 01:51:46
結局グーグルにかけたら↓にデザイナに表示されない型の保存についてのやり方が書いてあったwww
http://dobon.net/vb/dotnet/programing/mysettings.html

393 :デフォルトの名無しさん:2009/01/13(火) 01:54:26
CSVのパースって、本当に汎用・厳密にやろうとするとすげー面倒だよな

だから、CSV出力・パーズ専用ライブラリを探すか作るかしなくちゃならない。

splitが使えるのは、「データに絶対にカンマが入らない」 とか、「絶対に改行が入らない」
とか、そういう仮定がいくつかおける場合だけだと思う。

C# CSVでググればいくつか出てくるから、ライセンスとかと相談しながら
選ぶか作るかすればいいんじゃね

394 :デフォルトの名無しさん:2009/01/13(火) 05:14:59
Visual BasicからC#に変える利点ってどのようなものがありますか?

395 :デフォルトの名無しさん:2009/01/13(火) 05:20:50
エクスプローラでフォルダを開きたいのですが、
System.Diagnostics.Process.Start("EXPLORER.EXE", path);
を使うとウィルスバスターに警告されてしまいます。

もう少し安全な方法はありませんか?

396 :デフォルトの名無しさん:2009/01/13(火) 06:00:36
元々非常に安全なので心配は無用です。

397 :デフォルトの名無しさん:2009/01/13(火) 07:17:48
ASP.NETを勉強中ですが、疑問に思ったことがありまして…。

System.Web.UI.Pageにはプロパティーとして「Page」があると思うのですが、
どうしてわざわざ、このようなプロパティを用意しているのでしょうか?
System.Web.UI.Pageクラスを継承しているのだから、「this」でいいとおもうのですが…。
※System.Web.UI.Pageクラスを継承した独自クラスで
 Pageプロパティとthisを比較したのですが、同じインスタンスでした。

恐らく、何かとても深い意味があるのだと思うのですが、私には思いつきませんでした...orz...

398 :デフォルトの名無しさん:2009/01/13(火) 07:23:01
先祖のControlがもってるんだから仕方ないだろ

399 :397:2009/01/13(火) 07:29:52
>>398
レスありがとうございますm(_ _)m
そうなのですか…。
あまり、深い意味はないということなんですね…。
ありがとうございましたm(_ _)m

400 :デフォルトの名無しさん:2009/01/13(火) 08:15:32
>>399
Page以外のControlもPageプロパティを持ってて、その場合Pageプロパティ != this

401 :デフォルトの名無しさん:2009/01/13(火) 08:48:35
正規表現で半角記号かどうか判断するにはどうしたらいいんでしょうか?


402 :デフォルトの名無しさん:2009/01/13(火) 08:51:22
正規表現 半角記号 でぐぐるといいよ

403 :397:2009/01/13(火) 10:04:40
>>400
レスありがとうございますm(_ _)m
参考にさせて頂きます

それで、引き続き調べてみたのですが、また1つ疑問が…。

[前提]
System.Web.UI.Controlクラスに定義されている「Page」プロパティは
System.Web.UI.Pageクラスだと思います。

[試したこと]
マスターページを使用してaspxを作成しています。
 マスターページ→OrgMasterPage : System.Web.UI.MasterPage
 コンテンツページ→OrgPage : System.Web.UI.Page
 ※OrgMasterPageクラスにOrgPageを突っ込んでいます
<結果1>
OrgMasterPageクラスにて
 this.Equals(this.page) → true
<結果2>
OrgPageクラスにて
 this.Equals(this.page) → true
となります。

[不思議におもったこと]
[前提]にもあるとおり、「Page」プロパティは、System.Web.UI.Pageクラス。
OrgPageクラスは、System.Web.UI.Pageクラスを継承している為、<結果2>となるのはわかります。
しかし、OrgMasterPageは、System.Web.UI.MasterPageクラスを継承しています。
なのに、<結果1>となります。
System.Web.UI.MasterPageクラスは、System.Web.UI.Pageクラスを継承していないのにどうして
「Page」プロパティ(System.Web.UI.Pageクラスインスタンス)に設定できてしまうのでしょうか;;



404 :デフォルトの名無しさん:2009/01/14(水) 01:14:52
>>393
vbにはcsv専用のparseがあるんだが。
C#からも使えるよ。

405 :デフォルトの名無しさん:2009/01/14(水) 01:34:05
なんとなく"LINQ to CSV"でぐぐってみたら、
http://www.codeproject.com/KB/linq/LINQtoCSV.aspx
ちゃんと作りこんであるのあるじゃん。
ライセンスもCPOLなんで、たいてい大丈夫。

406 :364:2009/01/14(水) 01:50:29
>>366
やっと試せたけど、これスゲー!!
いいもん教えてくれてありがとう!


407 :397:2009/01/14(水) 01:57:54
大変失礼致しました。完全なる間違いです。
OrgMasterPage.Pageプロパティには、OrgPageクラスインスタンス※1が設定されていました。
大変申し訳ありませんでした。
※1…正確には、自動生成されるコードに定義されているOrgPageクラスを継承した
   クラスインスタンスです。

408 :デフォルトの名無しさん:2009/01/14(水) 02:22:27
タブコントロールのボタンをドラッグドロップする方法ってありますか?


409 :デフォルトの名無しさん:2009/01/15(木) 11:08:13
FormView使って表形式の編集画面作ってるんだが、バインドした
データによってある項目を出す、出さないを行いたいんだけど
テンプレートベースのFormViewにはちょっときついのかな。
インラインスクリプトで
<%
if (Eval("hoge").equals("foo")) {
Response.Write("<TR>・・・</TR>");
}
%>
みたいに書ければ良いんだけど、バインドデータを呼び出せないから
当然エラーだし。

なんか、根本的に間違ってるのかな。

410 :デフォルトの名無しさん:2009/01/15(木) 22:34:05
C#というより、.NET frameworkの質問なのですが、
Buttonコントロールで、
Image に画像を設定し、
AutoSize を true、
AutoSizeMode を GrowAndShrink に設定すると、
ImageAlign が MiddleCenter になっているにもかかわらず、
画像がボタンの若干右下に数ドット寄って表示されます。
ちゃんとボタンの中央に表示する方法はないでしょうか?

411 :デフォルトの名無しさん:2009/01/15(木) 23:49:36
ならんけどな、、うちがVistaだからか?

412 :デフォルトの名無しさん:2009/01/15(木) 23:50:58
Windowsサービスを作成しようとしています。
サービスをインストールするためにInstallUtil.exeを使わなければいけないとわかりました。
ここ見てみたのですが、
http://msdn.microsoft.com/ja-jp/library/aa984379(VS.71).aspx
コマンドプロンプトで「installutil.exe」と打ってもそんなコマンドない、と言われます。
私の環境では「C:\Windows\Microsoft.NET\Framework\v2.0.50727」ここにInstallUtil.exeがあるので
当然カレントディレクトリがここでないとコマンドが通らないのですが、
これってみなさんそうなんでしょうか?
いろいろサイトを見るとなんかこのパスが環境変数Pathに設定されているかのような
振る舞いみたいに見えるのですが。。

413 :デフォルトの名無しさん:2009/01/15(木) 23:51:59
パスが通ってないのが通常でしょう

414 :412:2009/01/15(木) 23:55:24
>>413
やっぱりそうですか。
では自分でパス通しときますね。
ありがとうございます。

415 :412:2009/01/16(金) 00:21:14
おかげさまでサービスとしてインストールできたので
早速テスト的にOnStartに以下のコードを書いてサービスを開始しました。
using(FileStream fs = File.Open(sFile, FileMode.Append, FileAccess.Write))
using(StreamWriter sw=new StreamWriter(fs))
{
 sw.WriteLine(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"+"\t OnStart"));
 sw.Flush();
 sw.Close();
 fs.Close();
}
するとログに「2009/01/16 00:22:34 OnS午ar午」という化けた内容で書き込まれたのですが
これってどうしてでしょうか?
あとちょっと別件ですが、上記のコードにファイルオープン時のエラーをcatchするために
try,catchを入れたいのですが、こういうusingを使っている時って
どの行にtry,catchを書くべきでしょうか?


416 :デフォルトの名無しさん:2009/01/16(金) 00:44:28
>>415
ただ単に”OnStart"の場合はどう?

usingはdisposeをfinallyで実行してくれるだけ。

using(FileStream fs = File.Open(sFile, FileMode.Append, FileAccess.Write)) {
using(StreamWriter sw=new StreamWriter(fs)) {
try {
// 処理する
}
catch () {
// 例外処理
}
}
}


417 :412:2009/01/16(金) 01:13:44
>>416
返答ありがとうございます。
"OnStart"のみの出力では「OnS午ar午」と出力されてしまいました。

try,catchについて
今回の件ですとファイルオープンのエラーをキャッチしたいので書くとすればこうなりませんか?
少なくともFile.Openはtryブロックの中に書かないといけないと思うのですが。
try {
using(FileStream fs = File.Open(sFile, FileMode.Append, FileAccess.Write)) {
using(StreamWriter sw=new StreamWriter(fs)) {
// 処理する
}
catch ()
{
// 例外処理
}
だとすると今度はusing使ってるからdisposeしてくれるはずですし、
catchの例外処理って大して書くことない?
と思って変に感じました。

418 :デフォルトの名無しさん:2009/01/16(金) 01:29:14
>>415
Console.WriteLine(DateTime.Now.ToString("tt"));
=> "午前"
の1文字目

sw.WriteLine(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"+"\t OnStart"));
=>
sw.WriteLine(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")+"\t OnStart");

釣りじゃないよね


419 :デフォルトの名無しさん:2009/01/16(金) 01:32:00
つりでした

420 :デフォルトの名無しさん:2009/01/16(金) 01:35:23
やっぱりそうか・・・

orz

421 :412:2009/01/16(金) 01:45:35
>>418
!!!
てっきり文字化けと思って深く考えすぎました。。
ありがとうございます。

>>417のusingの話はどうでしょうか

422 :デフォルトの名無しさん:2009/01/16(金) 02:11:25
>>421
エラーの発生を検出する必要があるため
417の通り、全体を try 〜 catch() で囲む必要はあると思います

using を使う場合はリソースの後処理が不要になるというだけですね
リソースの後処理は一般的に finally 節でおこなうことが多いため、
このfinally 節部分が省略できることになります

ただし、もともとcatch節で書く処理(ログを吐くとかエラーコードを復帰値にいれて返すとか)
は必要でしょう


423 :デフォルトの名無しさん:2009/01/17(土) 02:55:06
フリーのプロファイラを検索するといくつかあるんですが、
お勧めはどれですか?ざっとググった範囲だと
Prof-It for C#
NProfiler
nprof
などが見つかりましたが


424 :デフォルトの名無しさん:2009/01/17(土) 07:06:54
携帯サイトとPCサイトを1つのaspxで対応させたいと思っています。

例えばPHPであれば、
 1.クライアントからの要求に対する処理を行う。
 2.出力データを編集する。
 3.クライアントに応じたテンプレートhtmlを読み込む。
 4.読み込んだテンプレートhtmlに、編集されている出力データを設定。
 5.クライアントへ返す。
と、いった感じでPHP自体には、HTMLのコーディングを一切行わず、
クライアントに応じたテンプレート化されているファイルを読み込み、
可変部分となる出力するデータを埋めていく。

この際、テンプレートをクライアントに合わせたファイルを使用することで、
1つのPHPで、クライアントに応じたHTMLを返すようなことをしていました。

最近、勉強し始めたASP.NETでは、
 「このようなやり方はやらないのかな・・・。」
と、感じました。

通常、1aspxで数種類のhtmlを出力するような場合、どのような方法があるのでしょうか?


425 :デフォルトの名無しさん:2009/01/18(日) 02:12:03
Enumを|で連結されてる条件の中に一つの要素(Enum)が入ってるかどうか調べるにはどうすればいいんでしょうか?


426 :デフォルトの名無しさん:2009/01/18(日) 02:30:06
言ってる意味がよくわからんが
if((foo & Enum.Hoge) != 0)
これが知りたいのか?

427 :デフォルトの名無しさん:2009/01/18(日) 02:34:14
>>426
if((foo & Enum.Hoge) == Enum.Hoge) の方が良くないか?

428 :デフォルトの名無しさん:2009/01/18(日) 03:08:58
良いというか、>>426は間違い
Keysとか、こんなのもあるからな

[Flags]
enum Enum {
  None = 0,
  A = 1,
  B = 2,
  AB = A | B,
}

void Hoge() {
  var e = Enum.A;
  if((e & Enum.AB) != 0) Console.WriteLine("ABだぜ"); // NG
}

429 :デフォルトの名無しさん:2009/01/18(日) 03:14:32
そうだった
そういやそれでバグ出した事あったわ

430 :デフォルトの名無しさん:2009/01/18(日) 15:38:24
ContextMenuStripに自作コントロール乗せるのが出来ないのですが、どうしたらいいのでしょうか?
http://msdn.microsoft.com/ja-jp/library/9k5etstz.aspx を参考にしたのですが
標準で提供されているコントロールの場合は表示できるのですが、独自コントロールの場合細い線だけが表示されます

431 :デフォルトの名無しさん:2009/01/18(日) 15:57:32
何だっけ・・・レイアウト方面も実装しないとサイズが
0 みたいになったような

432 :デフォルトの名無しさん:2009/01/18(日) 16:38:05
TreeViewのパスってもしかしてスペース入ってると駄目なんすか?


433 :430:2009/01/18(日) 16:56:52
MinimumSizeを指定することにより解決しました

434 :412:2009/01/18(日) 18:54:18
>>422
なるほど。
usingを使えばリソースの解放に関しての記述は必要なくなりますが、
おっしゃるとおりエラーが発生したとき他にも処理がありますね。
ありがとうございました。

435 :デフォルトの名無しさん:2009/01/18(日) 22:07:38
InstallUtil.exeを使って作成したサービスをインストールしました。
サービスの管理コンソールより開始を選択するとこのエラーが発生しました。
ローカルコンピュータのService1サービスを開始できません。
エラー3:指定したパスが見つかりません。
切り分けたところ実行ファイルがネットワークドライブに配置されていることが問題のようなのですが、
なぜネットワークドライブだと動作しないのでしょうか?
ちょっとスレ違いでしょうか?
動かない理由が.NET Frameworksのセキュリティ上の理由かもしれないと思いましたので
こちらで質問させていただきました。

436 :デフォルトの名無しさん:2009/01/18(日) 22:09:39
サービスの実行アカウントは? そのアカウントはネットワークドライブへのアクセス権限を持ってる?

437 :435:2009/01/18(日) 22:17:38
アクセス権は問題ないと思います。
テスト的にeveryoneフルコントールを付与しましたが同じでしたので。
そこで.NET Frameworksのセキュリティを疑い出したわけです。

438 :デフォルトの名無しさん:2009/01/18(日) 22:22:35
caspolがそうなってるんだもん

439 :デフォルトの名無しさん:2009/01/18(日) 22:23:11
Local System Account は(基本的に)ネットワークリソースにアクセスできない。
つーか、サービスなら普通にローカルコンピュータ上においとけよ。

440 :デフォルトの名無しさん:2009/01/18(日) 22:25:55
everyoneでもサービスのアカウントがSYSTEMやNETWORKだったら駄目だぞい。
あとは.NETのバージョンだな。3.5SP1か3.0SP2か2.0SP2なら、
ローカルイントラゾーンに限り起動できる。

441 :435:2009/01/18(日) 22:37:30
>>439
もちろんそうなのですが、VSの作業ファイルがネットワークドライブに配置されていますので。
>>440
>>ローカルイントラゾーンに限り起動できる。
こちらは.NET Frameworksのセキュリティ設定でなんとかなりそうです。
>>everyoneでもサービスのアカウントがSYSTEMやNETWORKだったら駄目だぞい
これ知りませんでした。
eveyoneってほんとに何でもと思ってました。
これが原因っぽいですね。

解決できてうれしいです。
今回はビルド後のコマンドでローカルにコピーすることにします。
ありがとうございました。

442 :デフォルトの名無しさん:2009/01/18(日) 22:48:13
シンボリックリンクでローカルディスクにあるように見せかければ
ネットワーク上にあっても大丈夫だったりする

443 :435:2009/01/19(月) 00:14:14
>>442
シンボリックリンクってWindowsでいうところのショートカットですよね?
ショートカットをサービスに登録ってできましたっけ?

ここで質問させてもらいながらWindowsサービス作ってるのですが、
デバッグできなくて困っています。
ビルド→InstallUtil.exeでサービスを実行→サービスコンソールからサービスの開始
→VS2005からアタッチするとよい、ということがヘルプに書いているのですが、
どうもブレークポイントで止まりません。
自分の予想ではサービスに登録した実行ファイルが「\bin\Release」に作成されたもの、
つまりリリースビルドであることが原因と思っています。
デバッグビルドで実行ファイルを作成するにはどうすればよいでしょうか?
「\bin\Debug」に作成されるのかと思ったのですが、アセンブリ名.vshost.exeというファイルがあるだけで見つかりません。

444 :デフォルトの名無しさん:2009/01/19(月) 00:19:21
>>443
442が言っているのは、Vistaで搭載された本物のシンボリックリンクだと思う。

445 :デフォルトの名無しさん:2009/01/19(月) 00:20:58
シンボリックリンクってVistaの新機能じゃなくてNTFSの機能だったと思ったけど。。

446 :デフォルトの名無しさん:2009/01/19(月) 00:33:21
もう一度デバッグビルドし直せよ・・・

447 :デフォルトの名無しさん:2009/01/19(月) 00:35:56
>>445
VistaのNTFSドライバではじめてシンボリックリンクを解釈するようになった、と言えばいいか。

448 :435:2009/01/19(月) 00:38:29
>>446
デバッグビルドってどうやるんでしょうか?(汗
昔はツールバーらへんで都度切り替えてビルドしていた記憶があるのですが、
今使ってるVS2005ではなくなっているみたいなのですが。。
おかしいな、とは思ったのですが今回のように作成物がサービスでなければ
F5キーでブレークポイントで止めれましたし、ビルド内容を変更するようなところも見あたらなかったので
特に意識していなかったのですが。。


449 :デフォルトの名無しさん:2009/01/19(月) 00:40:09
プロジェクトのプロパティでも見てみろよ・・・

450 :435:2009/01/19(月) 00:46:31
>>449
やっぱりそこですよね。
一番に見たのですがどれかわかりません。。
しいて言うなら「アンマネージドコードデバッグを有効にする」
というのがありますが、アンマネージド、なので関係ないように見えますし。。
低レベルな話で申し訳ないです。

451 :デフォルトの名無しさん:2009/01/19(月) 00:49:19
プロジェクトのプロパティ、[ビルド]-[構成]

452 :デフォルトの名無しさん:2009/01/19(月) 00:50:15
ツール→オプション→プロジェクトおよび〜→全般→ビルド構成の詳細を表示

453 :デフォルトの名無しさん:2009/01/19(月) 00:56:32
>>450
あと、やっぱりツールバーにビルド構成のドロップダウンを追加しておいた方がいいよ。

これ2005からデフォではツールバーに表示されなくなったのが個人的には
大いに謎なんだけど。

454 :435:2009/01/19(月) 01:04:00
>>451
すみません、見あたりません。。

>>452
おおお!!
これです!
ビルド構成の詳細を表示、にチェック入れたら
メニュー「ビルド」配下に「構成マネージャー」が表示されるようになり、
ここで切り替えることができました。
これを使うとブレークポイントで止めることができました。
今まで知りませんでした。
ありがとうございます。
しかし、構成マネージャーってオプションでチェック入れないと表示されないんですね。
すごく重要に思えるんですが。
しかし構成マネージャーの規定値がReleaseビルドなので
今までずっとReleaseビルドしてたはずなのですが、
なんで今までサービスアプリケーション作成以外の場合この設定でブレークポイントで止めれてたのでしょうか?






455 :435:2009/01/19(月) 01:07:45
>>453
すみません、書き込み時の時差で見逃しました。
同意です。
昔ツールバーに表示されてましたよね。
あれ?
今ツールバーに追加しようとしたのですが、
選択項目にないのでVS2005では追加できなくないですか?

456 :デフォルトの名無しさん:2009/01/19(月) 01:50:09
できるよ。


457 :435:2009/01/19(月) 02:17:32
>>456
あれ、ほんとですか
ツールバー右クリック→ユーザー設定
→ツールバータブ
の中にそれっぽいのはないので、ここではないですよね?

458 :デフォルトの名無しさん:2009/01/19(月) 04:29:40
Directory.GetDirectoriesでとったディレクトリをForeachしてるんですが、
なぜかExistsがFalseになるフォルダがあります。

最後尾にスペース入ってるそうなるようなんですが、防止する方法ってあるんでしょうか?



459 :デフォルトの名無しさん:2009/01/19(月) 10:54:37
バグっぽい仕様みたいだね。
ディレクトリなら末尾に \ を付加してやるといいみたい

460 :デフォルトの名無しさん:2009/01/19(月) 16:39:11
Visual C# 2008 Express Edition の相談もここでよいのでしょうか?


461 :デフォルトの名無しさん:2009/01/19(月) 16:44:19
それはどうかな

462 :デフォルトの名無しさん:2009/01/19(月) 16:46:38
IDE自体の問題ならVSスレが立ってたはずだが
IDEで作成してるものの質問ならここかもな

463 :デフォルトの名無しさん:2009/01/19(月) 17:49:10
で、質問はなにかね?

464 :デフォルトの名無しさん:2009/01/19(月) 18:09:54
460ではないが質問です。

C#で1つの長い文字列を複数行に分けて書くのってどうしたらいいんでしょう?
C++なら行ごとに""で囲めば、その外で改行していようが1つの文字列になるけど、
同じことをC#でやったら怒られました。

465 :464:2009/01/19(月) 18:12:48
ググったらあっさり見つかったorz
行末に+を書けば良かったのね。

466 :デフォルトの名無しさん:2009/01/19(月) 21:53:00
>>465
string s = @"こんなことも
かけちゃうの
しってる
かい?";

467 :デフォルトの名無しさん:2009/01/19(月) 21:57:29
それとついでだ、これも覚えとけ。
@"" だと改行無視、\エスケープなしな全部
入るヒアドキュメントな感じになる。

string hoge = @"1 行目
2 行目";

string path = @"C:\Program Files\Hoge\hoge.exe";

string foo = @"ダブルクオート「""」はこのように。";


468 :デフォルトの名無しさん:2009/01/19(月) 22:29:06
>>466
それだと複数行文字列になる

469 :デフォルトの名無しさん:2009/01/19(月) 22:30:47
>C++なら行ごとに""で囲めば、その外で改行していようが1つの文字列になる

これはどうかと

470 :デフォルトの名無しさん:2009/01/19(月) 23:09:25
Cには文字列の+演算子なんて無いから "abc" + "def" と書けなくて
文字列リテラルの連結は "abc" "def" みたいに書くからね。

C#にもその書き方を残しても良かったと思うが、+演算子を強要した方が
意図が明確でいいか。

471 :デフォルトの名無しさん:2009/01/19(月) 23:10:55
どうかと、って何だ?当然のことだが…

472 :デフォルトの名無しさん:2009/01/19(月) 23:11:44
行ごとでなくてもいいな。

473 :デフォルトの名無しさん:2009/01/20(火) 01:32:52
トライグラフに困って""で切ったり「したっけなw

474 :デフォルトの名無しさん:2009/01/20(火) 06:48:39
>>468
ならないよ

475 :デフォルトの名無しさん:2009/01/20(火) 10:48:42
>>467
> string hoge = @"1 行目
> 2 行目";
これだと「目」と「2」の間にある改行文字もhogeに含まれるから
>>464のニーズには応えられないんじゃない?

476 :デフォルトの名無しさん:2009/01/20(火) 22:11:58
用途にもよるんじゃないかな。



477 :デフォルトの名無しさん:2009/01/21(水) 01:55:36
次のコードの意味がわからなくて悩んでいます。
1:EventLogPermission e = new EventLogPermission(PermissionState.Unrestricted);
2:e.PermitOnly();

ヘルプにかかれていることを自分的に以下のように解釈しました。

1で後で利用するセキュリティ制御のためのインスタンスを作成します。
2で規定のアクセス権のコンストラクタの引数で指定されたもののみでしか
アクセスできないように縛りをかけます。
今回のケースでは「PermissionState.Unrestricted」が指定されているので
.NET Frameworksのセキュリティ設定でフルアクセスの場合、
さらにフルアクセスの縛りを追加する形になり、結局セキュリティレベルは変わらない、と解釈しました。

ですがこのコードの後にイベントのアイテムを読み取るコードを書くと
アクセス許可でエラーが発生してしまいます。

意図した結果と違うので自分が勘違いしていると思うのですが
どの辺がおかしいでしょうか。

478 :デフォルトの名無しさん:2009/01/21(水) 02:49:00
C#が.NET Frameworkでなければならない理由って何なの?
むしろBorlandDelphiVCLみたいな感じのほうがよかったんじゃないの?
Linux版の.NET Frameworkが普及すればLinuxの利用者が増えて
Windowsの売り上げが下がるよね。
おそらくWindowsはカーネルごと新しくなることが
あるからそれを意識してるんだと思う。
つまりXPとVistaをMacやLinuxと同じように
まったく別のOSと捉えているってことだよね。
正解でしょ?

479 :デフォルトの名無しさん:2009/01/21(水) 07:11:57
ぜんぜん違うだろw

480 :デフォルトの名無しさん:2009/01/21(水) 07:32:57
>>478
お前は何を言っているんだ

481 :デフォルトの名無しさん:2009/01/21(水) 07:36:30
>>478
前後のつながりがまったくない

482 :デフォルトの名無しさん:2009/01/21(水) 07:47:54
違うにも甚だしい

483 :デフォルトの名無しさん:2009/01/21(水) 08:36:25
>>477
その考えであってると思うけど、別に原因があるのでは。
再現性のあるコードアップしてくれたら調べるよ。

484 :デフォルトの名無しさん:2009/01/21(水) 08:48:43
>>478
一行目から間違ってるだろw

485 :デフォルトの名無しさん:2009/01/21(水) 14:51:15
むしろ生まれてきたこと自体間違い

486 :デフォルトの名無しさん:2009/01/21(水) 15:50:14
生まれてすみません

487 :デフォルトの名無しさん:2009/01/21(水) 16:13:51
俺もすいません

488 :デフォルトの名無しさん:2009/01/21(水) 16:16:51
お父さん、お母さん、生んでくれてありがとう。

489 :デフォルトの名無しさん:2009/01/21(水) 16:55:17
>>478
> カーネルごと新しくなること
それは結構当たっていると思う。
ただし、XPとVistaではなく、x86とx64とIA-64とMobile/CE系各種のようなアーキテクチャの違い。

490 :デフォルトの名無しさん:2009/01/21(水) 17:00:52
.NETはActivXやCOMの延長線上のものなんだっけか?

491 :デフォルトの名無しさん:2009/01/21(水) 17:32:12
VS2010のMEF標準搭載で、やっとCOMが.NETで置き換わりそうな雰囲気になってきたな

492 :デフォルトの名無しさん:2009/01/21(水) 18:36:30
MEFって何よ

493 :デフォルトの名無しさん:2009/01/21(水) 19:00:56
Managed Extensibility Framework
マネージコードでプラグイン書けるようにするための新しい.NETのライブラリ
VS2010にも使用される

494 :デフォルトの名無しさん:2009/01/21(水) 19:18:37
これはうれしいよね

495 :デフォルトの名無しさん:2009/01/21(水) 21:09:07
そんなんリフレクション使えばいままでもできるような気がするが。

496 :デフォルトの名無しさん:2009/01/21(水) 21:21:39
マイクロソフトがフレームワーク出して統一することに意味があるんだよ

497 :デフォルトの名無しさん:2009/01/21(水) 21:24:01
あんまりそういうのに頼ってると駄目な子になっちゃいますよ(´・ω・`)

498 :デフォルトの名無しさん:2009/01/21(水) 21:27:20
頼るっていうか,そういうのは案外自分で作った方が簡単だったりするものだよ
簡単かどうかじゃなくて,統一されたやり方でやることに意味がある

499 :デフォルトの名無しさん:2009/01/21(水) 21:28:41
まあ標準ライブラリ内で何でもできるのは便利だな。

500 :477:2009/01/21(水) 21:47:53
>>483
すみません、お手数おかけします。
1:EventLogPermission e = new EventLogPermission(PermissionState.Unrestricted);
2:e.PermitOnly();

3://CodeAccessPermission.RevertAll();

4:EventLog el=new EventLog("System");
5:foreach (EventLogEntry ee in el.Entries)

6:  Console.WriteLine(ee.Message);

このコードでは6行目を実行する時に
「型 'System.Security.Permissions.RegistryPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=*******' のアクセス許可の要求に失敗しました。」
というエラーが出力されます。
3行目のコメントアウトをはずすとe.PermitOnlyが解除され、
エラーがでなくなります。
>>477で私が発言したコードの意図とは違うので
どうしてかわからないので悩んでます。

501 :デフォルトの名無しさん:2009/01/21(水) 22:17:02
>>493
個人的には MEF っていう名前より
「System.ComponentModel.Composition」
っていったほうが重要性とかコアなものだってのが
わかりやすい気がするんだよなぁ。
おまいら System の ComponentModel に入るものなんですよ
みたいな

そういや System.AddIn はどうなるんだろうね。てか

502 :デフォルトの名無しさん:2009/01/21(水) 23:13:36
C#でアセンブリというのは、C/C++でいうライブラリと同じですか?


503 :デフォルトの名無しさん:2009/01/21(水) 23:14:59
C/C++ でいうライブラリだと、モジュールかなぁ。

504 :デフォルトの名無しさん:2009/01/21(水) 23:22:46
System.AddInは無駄に複雑な気がするな。

HelloWorld級のシンプルなアドインとホストを実装するのに
アセンブリを5個も作らなきゃいけないとか。

MEFはどうなんだろう?

シンプルで、System.AddIn並みの
セキュリティとバージョン間互換性が確保されてればいいんだが。

505 :デフォルトの名無しさん:2009/01/21(水) 23:27:58
>>502
ヘッダとライブラリとdllが一緒になったような感じ

506 :デフォルトの名無しさん:2009/01/21(水) 23:35:35
MEFはオープンソースだから Codeplex から落としてくりゃ触れるよ。
まだ Preview も Preview だけど DI な感じでシンプル。

簡単なのでいいのなら、使う側は Import で修飾するだけ、
出す側は Export で修飾するだけ。探し方繋ぎ方は Catalog で選ぶ。

ttp://www.codeplex.com/MEF/Wiki/View.aspx?title=Samples

507 :デフォルトの名無しさん:2009/01/21(水) 23:37:09
Exeもアセンブリなんだが

508 :デフォルトの名無しさん:2009/01/21(水) 23:49:12
>>503
>>505
ありがとうございます。モジュールってDLLですよね?
ヘッダとライブラリが一緒になったんですか。。。

もし説明のページとかあったら教えてください。


509 :デフォルトの名無しさん:2009/01/22(木) 00:05:48
簡単に考えるなら,中間言語のソースコードの塊だと理解しとけばいいよ

510 :デフォルトの名無しさん:2009/01/22(木) 00:10:58
>>509
なるほど、分かりました。
ありがとうございました(ほかの方も)。

511 :デフォルトの名無しさん:2009/01/22(木) 00:22:53
モジュールは DLL じゃないよ。拡張子は .netmodule だっけか。

512 :デフォルトの名無しさん:2009/01/22(木) 00:23:52
理解早w

513 :デフォルトの名無しさん:2009/01/22(木) 01:04:29
C#で型が異なる複数の実行文をまとめるにはどうすれば良いのでしょうか?

514 :デフォルトの名無しさん:2009/01/22(木) 01:05:29
>>500
調べてみたが、どうもPermitOnlyは親クラスのCodeAccessPermissionの範囲で、
指定以外のアクセス許可を禁止にしているらしい。
とりあえず3つあわせたら動いた。
PermissionSet ps = new PermissionSet(PermissionState.None);
ps.AddPermission(new EventLogPermission(PermissionState.Unrestricted));
ps.AddPermission(new RegistryPermission(PermissionState.Unrestricted));
ps.AddPermission(new EnvironmentPermission(PermissionState.Unrestricted));
ps.PermitOnly();

属性使ったほうが楽かもね。

515 :デフォルトの名無しさん:2009/01/22(木) 01:07:00
>>513
ジェネリックス

516 :デフォルトの名無しさん:2009/01/22(木) 08:51:56
>>513
> 型が異なる複数の実行文
もう少し詳しく
オレオレ名称じゃわからない

517 :デフォルトの名無しさん:2009/01/22(木) 09:19:57
C#でwebのテキストエリア上に文字を埋めたり、読んだり
つまり参照するってどうすればいいかな。

ASP.NETがやはり必要?


518 :デフォルトの名無しさん:2009/01/22(木) 09:29:08
意味不明だが多分ASP.NETとは全く関係ない

519 :477:2009/01/23(金) 00:32:55
>>514
ありがとうございます。
このコードでイベントログを読み取るために
EventLogPermission
RegistryPermission
EnvironmentPermission
の3つのアクセス権が必要ということがわかり、すごく納得できました。
元々のコードに意味をコメントで書きます。
//EventLogのアクセス権を制御するためのインスタンスを規定値アクセス権有効で作成
EventLogPermission e = new EventLogPermission(PermissionState.Unrestricted);
//EventLogのアクセス権(有効)「のみ」を有効にし、他のアクセス権は与えられていない状態に設定
e.PermitOnly();
//以下でイベントログをオープンし出力
EventLog el=new EventLog("System");
foreach (EventLogEntry ee in el.Entries)
Console.WriteLine(ee.Message);

「型 'System.Security.Permissions.RegistryPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=*******' のアクセス許可の要求に失敗しました。」
が発生する
これは原因はe.PermitOnlyによってイベントビへのアクセス権「のみ」が有効であり、この処理には
レジストリへのアクセス権が有効である必要があるためです。

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

520 :デフォルトの名無しさん:2009/01/23(金) 00:43:01
意味不明だけどWeb開発するならASP.NETで。

521 :デフォルトの名無しさん:2009/01/25(日) 23:28:16
テキストボックスのキャレットを消す方法って何かありますか?


522 :デフォルトの名無しさん:2009/01/25(日) 23:35:49
>>521
HideCaret

523 :デフォルトの名無しさん:2009/01/25(日) 23:53:04
a.txtに1行ずつ
「a」「b」「c」・・・というふうに文字列(と単語)が書いてあって、その内容を数秒おきに表示したいのですが
その「数秒おき」というのはSleep()で数秒間停止させる以外に方法はありますか?

別にSleepが気に入らないというのではなく、ほかに同じような実現方法があるなら覚えておきたいなと思いまして。

524 :デフォルトの名無しさん:2009/01/25(日) 23:53:49
うわ、ageてしまってた
申し訳ありませんでした

525 :デフォルトの名無しさん:2009/01/25(日) 23:55:20
Timer

526 :デフォルトの名無しさん:2009/01/25(日) 23:55:22
>>523
GUIだったら、タイマーイベントでやるのがふつー。
マルチスレッド系の機能をつかってもできるかも。

527 :デフォルトの名無しさん:2009/01/25(日) 23:57:06
GUIスレッドでSleepしちゃダメだよ

528 :デフォルトの名無しさん:2009/01/26(月) 00:07:49
>>525-527
ありがとうございます、タイマーイベントで調べてみます。

>>527
ありゃ、タブーだったんでしょうか…
言い訳にもなりませんがC#を初めて1ヶ月経っているかどうかなので右往左往してます…

529 :デフォルトの名無しさん:2009/01/26(月) 00:39:33
C#どうこうでなく、GUIの基本だと思うけどな。

530 :デフォルトの名無しさん:2009/01/26(月) 00:43:00
GUIも初めてなんだろう、きっと
ttp://archive.mag2.com/0000141533/20071113073000000.html?start=20
このへん参考になるかな?頑張ってね

531 :デフォルトの名無しさん:2009/01/26(月) 10:22:37
PictureBoxで文字を描画すると、フォームを広げたときとかに
文字がタイルのようにあちこちに同じものが出てくるんですが、
これを防ぐ方法ってあるんでしょうか?


532 :デフォルトの名無しさん:2009/01/26(月) 10:25:11
文字列の描画方法がおかしいんじゃないか



533 :デフォルトの名無しさん:2009/01/26(月) 10:35:45
http://www.atmarkit.co.jp/fdotnet/dotnettips/303drawdisable/drawdisable.html

ここの方法をそのまま使ってるだけなんですが、
DocstyleをFillにすると、フォームを広げたりContextMenuStripを出したりすると
文字列が焼きこまれてしまったりするんです・・・


534 :デフォルトの名無しさん:2009/01/26(月) 10:47:11
そのままと言うがそのコードはPictureBoxに文字列を描画していないようだが?


535 :デフォルトの名無しさん:2009/01/26(月) 10:57:06
e.ClipRectangleを使ってるからだよ。

536 :デフォルトの名無しさん:2009/01/26(月) 11:05:59
e.ClipRectangleは、隠れてた部分が画面に出てくることになって
新たに描画しなければいけない範囲が入ってる。
ウィンドウのリサイズで隠れていた部分が出てくるとそこの中に文字列を書こうとするからそうなる。

537 :デフォルトの名無しさん:2009/01/26(月) 13:41:08
あるある

538 :デフォルトの名無しさん:2009/01/26(月) 14:38:59
C#でスレッド処理を行うプログラムを組んでいます。
ListViewにファイル名を格納して別スレッドでファイル名を絡めた処理を行いたいのですが
別スレッドでListViewからファイル名を取得する方法がわかりません。

InvokeでListViewへ値を渡す方法はたくさんあったのですが
ListViewから値を取得するのがどうしてもわからないです。
参考サイト等ご教示いただければ幸いです。

539 :デフォルトの名無しさん:2009/01/26(月) 14:49:46
どうやってノード指定するのかとか考えるとなんか考え方が変じゃね?

540 :デフォルトの名無しさん:2009/01/26(月) 14:57:39
直接ListViewとやりとりすんじゃなくて、共用のオブジェクト作ったほうがはえんじゃね

541 :デフォルトの名無しさん:2009/01/26(月) 15:13:22
ListViewの代わりにtextboxを使っているけど

string s = "";
textBox1.Invoke(new MethodInvoker(() => s = textBox1.Text));
System.Diagnostics.Debug.WriteLine(s);


542 :538:2009/01/26(月) 15:50:17
レスありがとうございます。
>>540さんの通りの方法で行う事にしました。
>>541さんのも試してみたのですが s をProcessStartInfoの引数として渡そうとすると
sが未割当と出てしまいました…

まだ不慣れで困惑しておりましたので非常に助かりました。
本当にありがとうございました。

543 :デフォルトの名無しさん:2009/01/26(月) 16:54:34
>>542
未割り当てって、これで出なくなるだろ
ProcessStartInfo s = null;


544 :デフォルトの名無しさん:2009/01/26(月) 17:50:20
>>542
オブジェクトを共用するなら排他処理はきちんとやらないといけないよ

545 :デフォルトの名無しさん:2009/01/26(月) 18:18:55
>>544
頻度によるが、そういうときはEventArgsの派生作ってイベントにしちゃうと楽なんだぜ

546 :デフォルトの名無しさん:2009/01/26(月) 18:23:11
イベントハンドラはそれを呼び出したスレッドで実行されるんだから
「別スレッド」でその結果を使うならやっぱり排他制御がいるんじゃないの

547 :デフォルトの名無しさん:2009/01/26(月) 18:31:06
Invoke/BeginInvoke/EndInvokeの時点でメモリバリアになってると思う。
モニタ使ってごちゃごちゃ書くより、
Control.Invoke系の呼び出しで同期取ったほうが楽だろう。

548 :デフォルトの名無しさん:2009/01/26(月) 23:05:08
すいません。最近C#を勉強し始めたのですが、
値型と参照型の違いについて基本的な質問させてください。

classとして定義されている型(例えばMyClass)について、
MyClass x; のように関数内などで変数を宣言すると、このxは自動的に参照型変数となる。
structとして定義されている型(例えばMyStruct)について、
MyStruct y; のように宣言すると、このyは自動的に値型変数となる。

という理解でよいのでしょうか?

C++であれば、クラス型の変数であっても、
MyClass& x; のように&を型名につけなければ参照型にはなりませんが、
C#では上述のようにクラスか構造体かで、参照型か値型か勝手に決まるということですか?

549 :デフォルトの名無しさん:2009/01/26(月) 23:12:16
>>548
うん

550 :デフォルトの名無しさん:2009/01/26(月) 23:16:48
>>549
ありがとうございます。本で最初に読んだときチンプンカンプンでした。

551 :デフォルトの名無しさん:2009/01/26(月) 23:16:55
C++でいう参照型とはまた違うよ
どっちかというとポインタに近い

552 :デフォルトの名無しさん:2009/01/26(月) 23:50:15
VC#2008 Express Editionで、
dllのdebug版はどうやってビルドするのでしょうか?

[ビルド]-[ソリューションのビルド]では、Release版しかビルドされません。
でも僕は作成中のDLLのデバッグをしたいのでDebug版をビルドしたいのです。

昔のVC6のように、DebugとReleaseの両方ともビルドする、とかの設定は
どこですれば良いのか解りますか?

553 :デフォルトの名無しさん:2009/01/26(月) 23:51:39
むしろC++の参照がよくわからない…
C#の参照型はまんまポインタだよね。
C++の参照ってのは・・・エイリアスみたいなもんだっけ?

554 :デフォルトの名無しさん:2009/01/26(月) 23:52:17
そうだよ。

555 :デフォルトの名無しさん:2009/01/26(月) 23:54:58
引数で渡すときは、ポインタより参照のほうが最適化がかかりやすいとか
書いてるブログがあったな > C++

556 :デフォルトの名無しさん:2009/01/26(月) 23:55:33
>>552
ツールバーに"Release"と書かれたドロップダウンボックスがあるだろ
それクリックして"Debug"を選ぶ
[オプション] ダイアログ ボックス - [プロジェクトおよびソリューション] - [ビルド構成の詳細を表示]
は必ずチェックしておくこと

557 :デフォルトの名無しさん:2009/01/26(月) 23:57:17
>>552
たぶん、ツール→オプション→プロジェクトおよびソリューション→全般→ビルド構成の詳細を表示

558 :デフォルトの名無しさん:2009/01/26(月) 23:59:32
>>555
再代入やヌル参照がないからな。

559 :デフォルトの名無しさん:2009/01/27(火) 00:13:09
>>556, >>557
どちらもないですねえ…
Express Editionだからかなあ?


560 :デフォルトの名無しさん:2009/01/27(火) 00:16:04
>>559
あるよ。左下の「全ての設定を表示」みたいなチェックをまず入れるんだ。
わかりにくいよねー

561 :デフォルトの名無しさん:2009/01/27(火) 02:22:49
>>560
おおお!ありました!
ありがとうございます!

562 :デフォルトの名無しさん:2009/01/28(水) 18:43:49
型または名前空間名 'Linq' は名前空間 'System' に存在しません。アセンブリ参照が不足しています
これはどうすればいいんですか?
VS2008WEBC#で空のWEBにWEBフォーム追加してビルドしただけなんです
なにがいけないんでしょうか

563 :デフォルトの名無しさん:2009/01/28(水) 18:53:23
>>562
参照設定右クリック→参照の追加
でSystem.Linq追加

564 :デフォルトの名無しさん:2009/01/28(水) 19:17:18
できましたーありがとう!

565 :デフォルトの名無しさん:2009/01/29(木) 13:28:34
.NetFrameworkが難しかったのでひと目でわかるC#を買ったんですが今度は簡単すぎて使い物になりませんでした。
その次の本を教えてください・・・・・・・・・
独習C# 第2版
C#エッセンシャルズ 第2版
はどっちがいいと思いますか?

566 :デフォルトの名無しさん:2009/01/29(木) 13:33:26
貴方にとってどちらが良いかは、エスパーで無いと分かりません。
両方買えば。

567 :デフォルトの名無しさん:2009/01/29(木) 13:42:22
C++は林本で習得したのでそれに近いやつがいいです。
VSの使い方とか技術オタク向けのどうなってるのかなんてどうでもいいです。
後はMSDNだけあればいいように、C#の言語と、全体の流れがわかる本を教えてください。
ここまで本を外したのははじめてです。呪われてるような気がしてきましたおねがいします!

568 :デフォルトの名無しさん:2009/01/29(木) 13:45:33
本屋で立ち読みして来い

569 :デフォルトの名無しさん:2009/01/29(木) 14:10:05
デリゲートなどで、呼び出し関数を登録する際
登録する関数名を外のファイルから読み込んで登録したいのですが
どうすれば良いのでしょうか
ファイルに書かれている関数名は内部に存在するものとします

570 :デフォルトの名無しさん:2009/01/29(木) 14:13:45
リフレクション+CreateDelegate

571 :デフォルトの名無しさん:2009/01/29(木) 14:48:19
>>567
本選択で悩めるなんてうらやましいなぁ〜
Delphiなんて巨大有名書店行っても全く扱ってないから悲しい・・・
C#だったらいっぱい出てるんだろうなぁ〜

572 :デフォルトの名無しさん:2009/01/29(木) 20:52:26
どちらの本がいいかに対する最善の答えは常に「両方買え」である

573 :デフォルトの名無しさん:2009/01/29(木) 21:18:43
ふーん。女性と似てるね

574 :デフォルトの名無しさん:2009/01/29(木) 21:35:17
初心者向けと上級者向けの本は持ってて初級者向けの本が欲しいんだろ?
その2つは両方とも初級者向けだ。
どっちか1つ博打で買え
どっちがわかりやすいかは知らんが、2つ買えば確実にダブるぞ

575 :デフォルトの名無しさん:2009/01/29(木) 21:46:53
>>571
ネットで買え。
中身が見たいというならきびしいが。

576 :デフォルトの名無しさん:2009/01/29(木) 22:17:45
RegexのMatchesで得た情報をもとにRichTextBoxで色づけをしたいのですが、
RichTextBox.TextにRegexで使ったテキストを代入するといわゆる復改(\r)コード
が消えてしまい文字indexとlengthがずれてしまうのですが、
代入しても復改コードが消えない方法はないでしょうか。

教えてエロい人!

577 :576:2009/01/29(木) 22:28:02
あれ?
RichTextBox.Textにテキストを代入してそれをRegex.Matches()すればいいって話っすか?

578 :デフォルトの名無しさん:2009/01/29(木) 22:53:13
自動変数についての質問です。
エラー時に変数の値を表示するものですが、これを常時表示したいと思っています。
どのような方法がありますか?

また他にいろいろ調べたのですが、
デバック>ウィンドウ>〜では、ブレイクポイントとイミディエイトしかありません。
またCtrl + Alt + V,Aも試したのですが、表示出来ないようです。
visual studio2003 Framework 1.1を使っています。

579 :デフォルトの名無しさん:2009/01/29(木) 23:43:42
「Webページのビルド コメント」機能を使おうとしたのですが
うまく使えません。。
下記に手順として
ttp://www.atmarkit.co.jp/fdotnet/teamdev/teamdev01/teamdev01_02.html
>VS.NETでC#のソリューション(プロジェクト)を開き、統合開発環境のメニューから、[ツール]−[Webページのビルド コメント]を実行する
とあるのですが、
[ツール]の中にWebページのビルド コメントがないです。
私が使ってるVS2005 Professionalでは使えない機能なのでしょうか?


580 :デフォルトの名無しさん:2009/01/29(木) 23:54:57
実行環境を限定するためにプロジェクトに[プロジェクト名].configを追加し、
以下の内容を書きました。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v1.1.4322"/>
</startup>
</configuration>

するとこんなエラーが出てしまいます。
要素 'supportedRuntime' のスキーマ情報が見つかりませんでした
属性 'version' のスキーマ情報が見つかりませんでした

書き方間違えてますかね?

581 :デフォルトの名無しさん:2009/01/30(金) 00:21:47
>>580
先頭にXML宣言は付加できない。からなず<configuration>で始める。
文字はutf-8を使用する。マルチバイト文字が混じらない場合はBOMなしでもよい。


582 :580:2009/01/30(金) 00:37:35
>>581
先頭行削ってファイルメニューより名前を付けて保存で
Unicode(UTF-8 シグネチャ(BOM)なし)コードページ650
を選択したのですが、症状が変わりません。
まだ何か足りないでしょうか?

583 :デフォルトの名無しさん:2009/01/30(金) 01:02:16
>>580
>プロジェクトに[プロジェクト名].config
App.configを追加してそれを修正する。

XML宣言が書けない問題はサービスパックのどれかで段階で修正されてるはず。


584 :デフォルトの名無しさん:2009/01/30(金) 01:21:51
最上位bitを高速判定する関数ってどこかにないですか?

585 :デフォルトの名無しさん:2009/01/30(金) 01:25:31
ビット演算

586 :デフォルトの名無しさん:2009/01/30(金) 01:30:26
>>584
ないです。ILレベルでもないので。

587 :デフォルトの名無しさん:2009/01/30(金) 01:33:04
関数呼び出す時点ですでにオーバーヘッド大きすぎない?

588 :デフォルトの名無しさん:2009/01/30(金) 01:37:01
そうなんですか、ありがとうございました。

589 :デフォルトの名無しさん:2009/01/30(金) 01:39:40
整数だったら正か負かの判定で終わりのような。実数だ非数とかあるからややこしいけど。

590 :デフォルトの名無しさん:2009/01/30(金) 01:58:46
>>587
っインライニング

591 :デフォルトの名無しさん:2009/01/30(金) 03:04:50
Chrome風のエディタって作成できますか?

592 :デフォルトの名無しさん:2009/01/30(金) 03:24:21
作り手の技術力しだい

593 :デフォルトの名無しさん:2009/01/30(金) 04:03:16
>>592
がんがります☆

594 :デフォルトの名無しさん:2009/01/30(金) 09:31:23
>>576

リッチテキストボックスは\nでは改行してくれなくて、\r\nに置き換えないと
いけないんじゃなかったっけ?  嘘だったらごめんね。

595 :デフォルトの名無しさん:2009/01/30(金) 12:09:58
ちょいと質問です
VS2005で、.xsdファイルを作成して作る型付きDataTableにデータを格納する
TableAdapterについてなんだけど、例えば

HogeTableAdapters.HogeTableAdapter hoge = new HogeTableAdapters.HogeTableAdapter();
とインスタンスを生成すると、インスタンスを生成する場所によって
(System.Data.SqlClient.SqlConnection) hoge.Connection
が見える時と見えないときがあるのはなんだかわかる人いるかな?

具体的には、ASPでWebフォームを追加時に自動で生成される
public partial class Default : System.Web.UI.Page
なんかで生成するとConnectionが見えず、他では見えるっぽい。
継承関係でProtectedになってるわけでもなさげだし、よくわからん・・


596 :デフォルトの名無しさん:2009/01/30(金) 12:40:59
>>570
あぅっ、即レス頂いてたのに申し訳無い
ありがとうございます。


597 :デフォルトの名無しさん:2009/01/30(金) 14:42:16
VB5で作られた資産をC#に置き換える仕事がくるかも知れないんだけど
中身のソースは無理として画面設計frmをC#に変換なんて出来ます?

598 :デフォルトの名無しさん:2009/01/30(金) 16:14:53
VB5のプロジェクトはVB6で変換できる。
VB6からVB7/8/9は標準でVisualStudioに変換ウイザードが付いてくる。
そのウイザードの製造元のソフトを買えばC#にもできる。ttp://www.artinsoft.com/

まあなんだ、モノは試しで一度VBに変換してみるといいよ。
標準以外のコントロールを張りまくったフォームはほぼ絶望的な状態になるから。


599 :デフォルトの名無しさん:2009/01/30(金) 17:20:44
>>598
C#に変換するには別にソフトがいるんですね。
C#買ったらいろいろ試行錯誤してみます。
ありがと!

600 :デフォルトの名無しさん:2009/01/30(金) 18:45:25
まあゼロから作り直した方がはやいよ

601 :デフォルトの名無しさん:2009/01/30(金) 19:15:19
再現できるからやってみな
移動じゃなくてコピーすると絶対パスでブックマークに飛ぶ
めちゃくちゃになるから

602 :デフォルトの名無しさん:2009/01/30(金) 23:55:43
変換ウイザードって外注だったのか

603 :デフォルトの名無しさん:2009/01/31(土) 00:42:07
リストボックスおよびコンボボックスで、アイテムを選択したときに現在上から何番目のアイテムを選択しているか
を知る方法はありますか?

604 :デフォルトの名無しさん:2009/01/31(土) 00:42:42
selectedindex

605 :デフォルトの名無しさん:2009/01/31(土) 00:45:27
>>604
ありがとうございますー

606 :デフォルトの名無しさん:2009/01/31(土) 02:03:30
フォームのボーダースタイルをNoneで隠して、更にBackColorもTransparentにして
フォーム上にあるTabControlしか見えないようにしたいのですが、
そうするとどの箇所をドラッグしようとしても反応してくれません。

TabPageをドラッグすることでフォームの移動を実現したいのですがこれは可能ですか?

607 :デフォルトの名無しさん:2009/01/31(土) 09:17:58
可能です

608 :デフォルトの名無しさん:2009/01/31(土) 10:26:17
.NET 3.5 Service Pack 1 をやっと入れたよ

609 :デフォルトの名無しさん:2009/01/31(土) 14:24:08
>>607
どうもありがとうございますー
いろいろ探してみるとします

610 :デフォルトの名無しさん:2009/01/31(土) 21:48:25
初心者すぎる質問かもしれませんが、
フォームを持たないApplicationContextでInvokeする方法を教えてください。

611 :デフォルトの名無しさん:2009/01/31(土) 22:10:49
デスクトップアクセサリー的なものを作りたいのですが、フォームボーダーを消去→右クリックでサブメニューを表示させるために

FormのMouseDownに
if((e.Button & MouseButtons.Right) == MouseButtons.Right)
{
contextMenu1.Show();
}

と記述してコンテキストメニューを表示することができました。しかしそのメニューの出現する場所が画面の左上端に出てきてしまいます。
「右クリックがされた座標にコンテキストメニューを表示させたい」のですが、どのように書けば解決するのかがわかりません。
contextMenu1.Top、.Leftでいろいろ試してみたりはしましたが書き方が悪いのか何も変わりませんでした。
どなたか解決策をお願い致します…

612 :デフォルトの名無しさん:2009/01/31(土) 22:22:01
>>611
ContextMenuじゃなくてContextMenuStripじゃないの?
そんな質問文を一生懸命書くより前にMSDNライブラリの使い方や見方を
とっとと覚えた方がいいよ。

http://msdn.microsoft.com/ja-jp/library/system.windows.forms.toolstripdropdown.show.aspx

613 :デフォルトの名無しさん:2009/01/31(土) 22:25:14
>>612
あーこれは失礼致しました。
確かに聞いてばかりではいつまでも出来ませんよね。
こうなったら人には頼らないつもりで頑張ろうと思います

614 :デフォルトの名無しさん:2009/01/31(土) 22:27:16
いやがんばる必要ないよ。
>>612のリンク先にまんま答え出てるじゃん。

615 :デフォルトの名無しさん:2009/01/31(土) 22:29:19
今後は頑張ろうって意味じゃないの

616 :デフォルトの名無しさん:2009/01/31(土) 22:42:44
Formなら普通にContextMenuStripプロパティに設定するだけでいいんじゃねーのと思いつつ
普通のコンテキストメニューはMouseDownじゃなくてMouseUpで表示するぜ

617 :デフォルトの名無しさん:2009/01/31(土) 22:45:13
>>610
ダミーのコントロール一つ作ってメインスレッドで一度Handleを参照しとく

618 :デフォルトの名無しさん:2009/01/31(土) 23:52:19
Dispose()が実装されているクラスは全てDispose()すべきなんでしょうか。
Bitmapを大量にnewする箇所でタスクマネージャーのメモリーがすごい増えます。

テストで
 private void newBitmapTest()
{
for ( int i = 0 ; i < 10000 ; ++i)
{
Bitmap bitmap = new Bitmap(100,100);
}
}
だとどんどん重くなってしまい強制終了しないといけません
 bitmap.Dispose()をfor文の中に入れると重くならないのですが、
 他の箇所でも同様の現象が起きる箇所があるか心配です。

あとDispose()がないクラスも試しにやってみましたが、
 private void newObjectTest()
{
for ( int i = 0 ; i < 100000 ; ++i)
{
Bitmap obj = new Object();
}
 }
 これはobj = null; を入れると落ちなくなりましたが、nullを入れることで
 ガベージコレクションが動いたのでしょうか。
 ただ、bitmap = null;としただけでは開放されていないのでガベージコレクションが
 動いてるようには思えませんでした。




619 :デフォルトの名無しさん:2009/01/31(土) 23:54:36
ようろうさん おなかすいたんでコンビニいっていいすか^^

620 :デフォルトの名無しさん:2009/01/31(土) 23:55:07
gobaku

621 :デフォルトの名無しさん:2009/01/31(土) 23:56:39
>Dispose()が実装されているクラスは全てDispose()すべきなんでしょうか。

はい。

newObjectTest
>Bitmap obj = new Object();
はコンパイルできないでしょ?

622 :デフォルトの名無しさん:2009/01/31(土) 23:59:30
>>618
GDI関連のクラスは特に念入りにDisposeする必要があります。
メモリが少なくなってGCが起きるより先にGDIリソースが枯渇するからです。

623 :デフォルトの名無しさん:2009/02/01(日) 00:00:42
GCとDisposeは別問題
BitmapはGCの管理外にリソースを持ってるからDisposeでさっさと解放してやらないといけない
ほっといてもそのうちBitmapがGCされるときにファイナライザ(デストラクタ)で解放されるけど
フェイルセーフであってそれに頼ってはいけない

624 :デフォルトの名無しさん:2009/02/01(日) 00:01:38
newObjectTest
>Bitmap obj = new Object();
はコンパイルできないでしょ?

Object obj = new Object();
の間違いでした。

こういうDispose()できないクラスは明示的な解放は必要ないのでしょうか。

また、Dispose()をMsdnでみるとアンマネージリソースの開放と書かれているのですが
Bitmap bitmap = new Bitmao(100,100);
ではマネージヒープにハンドルのみか入って
マネージリソースにまだ空きがあるためガベージコレクションが動かず
システムリソースが先に食いつぶされるという理解でいいんでしょうか。


625 :デフォルトの名無しさん:2009/02/01(日) 00:08:36
>>622 623
ありがとうございます。
GDI関連のクラスは全てDisposeするようにします。
また、Disposeが実装されていないクラスはガベージコレクション任せにして
いいんでしょうか。
 private void newObjectTest()
{
for ( int i = 0 ; i < 100000 ; ++i)
{
Object obj = new Object();
obj = null;
}
}
にした場合Object obj = new Object();でつかんだ領域はnullで開放しているのでしょうか
それともガベージコレクションで開放しているのでしょうか。

626 :デフォルトの名無しさん:2009/02/01(日) 00:13:44
>>624の認識で間違ってない
nullを代入するのはほとんど無意味だからやらなくていい
Disposeを実装しているかどうかにかかわらず,マネージオブジェクトの解放は常にGC任せ

627 :デフォルトの名無しさん:2009/02/01(日) 00:18:40
>>626
ありがとうございます。
1年間動かしっぱなしのソフトでメモリーリーク(リソースリーク?)とかありえないんで
別言語でやり直そうかと思いました。

628 :デフォルトの名無しさん:2009/02/01(日) 00:18:45
GCのお仕事。
1)ファイナライザの実行(アンマネージリソースの開放)
2)メモリ領域の回収(マネージリソースの開放)
Disposeは1)を代行するもので、メモリの回収はあくまでもGCが行う。


629 :デフォルトの名無しさん:2009/02/01(日) 00:31:39
ありがとうございました。
大変勉強になりました。
でもメモリを開放しないって便利だけどなんか不安ですね。
newしっぱなしでいいというのがメモリの動きが読みづらくて
メモリチェックのテストが困難ですね。

630 :デフォルトの名無しさん:2009/02/01(日) 00:35:03
いつでも回収できるメモリは空いているのと同じこと。このことを悟るのに修行が必要(笑

631 :デフォルトの名無しさん:2009/02/01(日) 00:49:43
あと間違っても直接Dispose呼ぶなよ。using使えよ。

632 :デフォルトの名無しさん:2009/02/01(日) 00:57:53
usingのDisposeやfinallyもファイナライザと同じで必ず呼び出される保証は無いんだっけ

633 :デフォルトの名無しさん:2009/02/01(日) 00:59:14
型推論が便利なのでusingを使いたくない場面が・・・

634 :デフォルトの名無しさん:2009/02/01(日) 01:01:00
>>633
どういうこと?
using (var bmp = new Bitmap(""))ならできるけど。

635 :デフォルトの名無しさん:2009/02/01(日) 01:02:34
using (bmp = new Bitmap) //bmpはフィールドでもローカル変数でもおk
こんなのも通るね

636 :デフォルトの名無しさん:2009/02/01(日) 01:05:38
それどころかusing (new Bitmap(100, 100))でも通るな
自動的に専用の一時変数が用意されるのか

637 :デフォルトの名無しさん:2009/02/01(日) 01:06:36
>>633
もしかしてusing違いか?
ハハッワロス

638 :デフォルトの名無しさん:2009/02/01(日) 01:08:19
Usingを使えばExceptionがあっても開放してくれるようなので便利そうですね。
Graphics g = PictureBox1.CreateGraphics();
g.Dispose()
こういう処理もUsingで
Using(Graphics g = PictureBox1.CreateGraphics())
{
}
とできるんでしょうか。

639 :デフォルトの名無しさん:2009/02/01(日) 01:08:22
Linq to SQLでのcontextのusingとか
スコープ内で取得したデータを保持しときたい場面は結構多い
まあ別にDisposeしなくてもいいんだけど

640 :638:2009/02/01(日) 01:17:30
コードでぐぐったらあったので解決しました。


641 :デフォルトの名無しさん:2009/02/01(日) 01:20:29
ネームスペースを using するときに
Java でいう import hoge.*; 相当になるのを何とかしてよ
もしくは自動で using Hoge = Foo.Hoge; ってなるようにしてよ

642 :デフォルトの名無しさん:2009/02/01(日) 01:21:56
>>641
つ J#


643 :デフォルトの名無しさん:2009/02/01(日) 01:23:14
いやいやC++/CLIでしょ。

644 :デフォルトの名無しさん:2009/02/01(日) 01:25:56
C#のネームスペースの使い方はC++準拠。
つーか、javaのあれを避けたかったんで*の導入はしなかった。

645 :デフォルトの名無しさん:2009/02/01(日) 01:27:38
>Java でいう import hoge.*; 相当になるのを何とかしてよ
何の問題が?

646 :デフォルトの名無しさん:2009/02/01(日) 01:44:46
被ってから避けるのがC#流
どうせIDEでの使用が前提なんだからその型がどこにあるのかわからなくなるなんてありえない
マウスカーソルを型名の上に置いたら名前空間表示される

647 :デフォルトの名無しさん:2009/02/01(日) 01:51:46
>>639
スコープ外にもっていくにはどっちにしろtoarray()せんとあかんだろ

648 :デフォルトの名無しさん:2009/02/01(日) 02:25:59
WPF使い始めてから迂闊にusingするとPathがかぶるんだよね。

649 :デフォルトの名無しさん:2009/02/01(日) 03:24:34
System.IOとかぶるんだっけ、あれは確かにないな。
System.WindowsとSystem.Windows.Formsでかぶるのはいいとしても。


650 :デフォルトの名無しさん:2009/02/01(日) 05:09:52
コア名前空間との競合は避けろって、ガイドラインにも書いてあるのにな


651 :デフォルトの名無しさん:2009/02/01(日) 07:55:11
名前空間エイリアス使えばどちらかに限定できるけど

652 :デフォルトの名無しさん:2009/02/01(日) 10:30:53
Timerも名前変えて欲しかったり……

653 :デフォルトの名無しさん:2009/02/01(日) 11:18:33
4つ目のタイマはDispatcherTimerになったよ!

654 :デフォルトの名無しさん:2009/02/01(日) 13:13:12
C#ってprintfの%sに相当するものってないのん?

655 :デフォルトの名無しさん:2009/02/01(日) 13:18:34
{0}

656 :デフォルトの名無しさん:2009/02/01(日) 13:24:13
System.Windows.ExpressionとSystem.Linq.Expressions.Expressionが被るのがうざすぎる

657 :デフォルトの名無しさん:2009/02/01(日) 15:28:38
>>638
>>640
解決しました
→解決策は必ず書いてよ…

ググったけど出ないんですけど
どなたかわかる人教えてもらえませんか?


658 :デフォルトの名無しさん:2009/02/01(日) 15:33:15
「できる」

659 :デフォルトの名無しさん:2009/02/01(日) 15:38:20
なんだよそのインプレスの本のタイトルみたいなの

660 :デフォルトの名無しさん:2009/02/01(日) 15:49:48
「やればできる」

661 :デフォルトの名無しさん:2009/02/01(日) 17:29:36
XmlSerializerで保存できるClassの中のメンバってstringやintぐらいですか?

例えば、オプションを入力するようなフォームがあって、
その情報をファイルとして保存する時、そのオプションオブジェクトまるごと
保存・復元できたらいいなと考えていたのですが、XmlSerializerで
それをやろうとするとExceptionが発生します。

やはりそのオプションからわざわざstring型とかを抜き出して
別のクラスにいれて、それを保存するしか方法はないでしょうか?

662 :デフォルトの名無しさん:2009/02/01(日) 17:39:01
例外のメッセージは読んだか?
多分 Serializable 属性がついてないものをシリアライズしようとしたんだと思うが。

663 :デフォルトの名無しさん:2009/02/01(日) 17:59:45
662>
天才!そんな方法があるんですね!

そんでやってみたところ、このオプションFormはFormを継承しているためか、
「アセンブリ 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' の型 'System.Windows.Forms.Form' はシリアル化可能として設定されていません。」
と出てきたのですが、Formを継承したオブジェクトは結局まるごとはSerializeできなくて、
この派生クラスのみの情報クラスを用意して、コピーして、Serializeって感じですかね?


664 :デフォルトの名無しさん:2009/02/01(日) 18:02:37
SerializableAttributeはXMLシリアル化と関係ないよ。。。

665 :663:2009/02/01(日) 18:07:49
オプションオブジェクトをまるごと保存できれば、XMLSerializerでなくても
かまいません。
662の意図するBinaryFormatter でも全然OKです。

http://dobon.net/vb/dotnet/file/binaryformatter.html
こちらを参考にしましたが、やはりFormを継承したオブジェクトの
保存はできないのでしょうか?

666 :デフォルトの名無しさん:2009/02/01(日) 18:08:58
>>665
普通に考えて無理だしょ

667 :デフォルトの名無しさん:2009/02/01(日) 18:16:59
>>657
"Using(Graphics g = PictureBox1.CreateGraphics())"
と、ぐぐったらたくさんでてきたぞ。

668 :663:2009/02/01(日) 18:33:17
666>
普通に考えて無理でしょうね。

なので、今オプションクラス(:Form)の持つ、CheckBoxやTextBoxを
別のクラスを用意してコピーして、それをSerializeしようとしましたが、
やはりExceptionで無理でした。これもFormが出来ないのと
同じことですよね。。。

じゃぁファイルしたい情報は結局全部String型にしなくちゃいけないってことですか?
オプションをまるごと保存できたらいいなんて需要ありそうなもんだから
そんなソリューションはありそうなもんだと思ってましたが。

669 :デフォルトの名無しさん:2009/02/01(日) 18:35:05
フォームみたいな変なものに依存しないクラスならそのままシリアライズできる

670 :デフォルトの名無しさん:2009/02/01(日) 18:36:51
設定情報をまとめたクラスをシリアライズすればいいじゃない
コントロール丸ごと保存しても意味ないだろ

671 :デフォルトの名無しさん:2009/02/01(日) 18:41:59
>>668
普通は設定情報は設定情報クラスを用意するもんだから
UIとデータは分離

672 :デフォルトの名無しさん:2009/02/01(日) 18:42:39
>>668
はいどうぞ
ttp://www.myxaml.com/

673 :663:2009/02/01(日) 18:48:00
670>
はい。仰るとおりでございます。

ただ、その
設定情報のまとめたクラスを用意する

TextBox.TextなどのStringをコピーする

起動時、オプションFormに反映させる

のが面倒だっただけです。これだとオプション項目が増える(減る)度に
この設定情報クラスも追加・管理しなくてはいけないですし。
なんか不効率だと思って。

ということはみなさんアプリケーションの設定情報を保存する時って
設定情報をまとめたクラスを用意してるってことですよね?

674 :663:2009/02/01(日) 18:52:53
671>
>UIとデータは分離
はい。わかってはいるんですが、オプションFormにもそのデータは
保持しているわけで、どうにかならんかと考えてました。

では、そのUIのデータを設定情報のデータを
反映させるのはみなさんどうされてますか?

やはり1つ1つコピーですか?

675 :663:2009/02/01(日) 18:53:59
では、そのUIのデータを設定情報のデータに

676 :デフォルトの名無しさん:2009/02/01(日) 18:57:20
一つ一つコピーの意味がわからん。
本当にデータの分離がわかってるんだろうか。

677 :デフォルトの名無しさん:2009/02/01(日) 18:58:49
逆だ
設定情報が先にあって
それを操作するUIを付け加える

678 :663:2009/02/01(日) 19:13:22
1つ1つコピーというのは、例えば、
class config { //設定情報クラス
string path;
}
class Option : Form{ //オプションを設定するダイアログ
TextBox box;
}
みたいな二つのクラスがあって、OptionのOKボタンが押された時に
config.path = Option.box.Text;

みたいなことをやっているんですよね?

Option.boxでもデータもってるのになぁと思って。

でも結局設定情報クラスを用意しなくてちゃいけないんですよね。。。
ありがとうございました。それでがんばります。

679 :デフォルトの名無しさん:2009/02/01(日) 19:37:12
がんばるも何も…
まあ、数ヵ月後に自分のレスを見返してみなよ。
あーアホなこと書いてたなあって思うだろう。

680 :デフォルトの名無しさん:2009/02/01(日) 19:40:33
ググれば済む話なのに質問した上でなお力業で済ませるあたりが素晴らしい。
脳筋にも程がある

681 :デフォルトの名無しさん:2009/02/01(日) 19:41:49
かんけいないがオブジェクトグラフをそのままたたっこめるユーティリティ作った。
結構便利。

682 :デフォルトの名無しさん:2009/02/01(日) 20:34:03
つーかアンカーの付け方くらい覚えろ

683 :デフォルトの名無しさん:2009/02/01(日) 20:44:10
すいません。
昨日のDispose()の件であと1件

DataGridView1.Rows.add(new Bitmap(100.100));
という文法でBitmapを作成しておいて
別スレッドで
using (Graphics g = Graphics.FromImage((image)DataGridView1[0,0].Value))
{
 描画;
}
を行う場合

これはBitmapじゃなくてDataGridView1.Dispose()を行えばリソースが開放されますか。
それともDataGridView1.columns[0].Dispose();を行うのでしょうか。

684 :デフォルトの名無しさん:2009/02/01(日) 20:47:39
言ってることがむちゃくちゃだな
usingを使えばgは自動的に解放(Dispose)される
Disposeを呼べば呼んだ対象が解放される
それだけのことだけど
慣れるまでスレッドなんかしばらく封印した方がいいんじゃない?

685 :デフォルトの名無しさん:2009/02/01(日) 20:51:04
卒業制作でC#使って何かソフトを作るのですが
ソースコードごと載せてあるソフトないですか?

686 :デフォルトの名無しさん:2009/02/01(日) 20:52:16
ありません

687 :デフォルトの名無しさん:2009/02/01(日) 20:55:07
グラフィックコンテキストの開放とBitMapは別だと考えていました。
>>DataGridView1.Rows.add(new Bitmap(100.100));
ここでnew しているBitmapはリークしないんでしょうか。

688 :デフォルトの名無しさん:2009/02/01(日) 20:55:36
そこをなんとかっ

689 :デフォルトの名無しさん:2009/02/01(日) 20:57:01
>>685
Reflectorでググレ

690 :デフォルトの名無しさん:2009/02/01(日) 20:58:09
はいはい専門乙。
一生下っ端なんだろうな。

691 :デフォルトの名無しさん:2009/02/01(日) 20:58:29
>>683
そのうちGCに回収されるからリークとまでは言わないけど一緒にDisposeされることはないよ

>>685
codeplex

692 :デフォルトの名無しさん:2009/02/01(日) 21:03:11
>>685
失せろゴミ

693 :デフォルトの名無しさん:2009/02/01(日) 21:05:47
>>685
SSCLI

694 :デフォルトの名無しさん:2009/02/01(日) 21:11:36
スレッドは後々慣れてから実装することにします。
今はメモリーが安全に使われてない可能性がある箇所を重点に調べています。
>>DataGridView1.Rows.add(new Bitmap(100.100));
の場合 new Bitmapではなくて
メンバに
Bitmap[] bmp;
として
再描画するときに
foreach(Bitmap bmp in this.bmp)
{
bmp.Dispose();
}
とするして開放するべきなんでしょうか。

695 :デフォルトの名無しさん:2009/02/01(日) 21:21:31
あのねー。
作ったら自分で責任持つ。それだけ。
解放するタイミングは、使わなくなった時点からいつでも都合のいいとき。

あと例として提示するコードが変なのが気になる。
DataGridViewRowCollection.Addにそんなオーバーロードないっしょ

696 :デフォルトの名無しさん:2009/02/01(日) 22:02:44
dataGridView1.Rows.Add(カラム1の内容,カラム2の内容,,,);
というメソッドを使っているのですが。

例として用いたコードはカラム1のクラスがDataGridViewImageColumn
としてデザイナで作られている場合で
実際に
DataGridView1.Rows.Add(new Bitmap(100.100));

コンパイルが通ったため正しいと思っていました。


697 :デフォルトの名無しさん:2009/02/01(日) 22:31:03
//Bitmap bmp = new Bitmap(200,200);
//this.dataGridView1.Rows.Add(bmp);
this.dataGridView1.Rows.Add(new Bitmap(100, 100));
Graphics g = Graphics.FromImage((Image)dataGridView1[0, 0].Value);
Pen pen = new Pen(Color.Red, 3);
g.DrawLine(pen,0,0,100,100);
pen.Dispose();
g.Dispose();

コメントしてあるコードでも動くのですが
今のコードでも動いてしまうため
newしたBitmapのポインタが分からなくて開放できないので
もしかしたら勝手に開放してくれたりするのかと期待しました。

この場合はthis.dataGridView1.Rows.Add(bmp);とフリーするアドレスがわかる
ように書くことにします。

698 :デフォルトの名無しさん:2009/02/01(日) 22:45:59
>>this.dataGridView1.Rows.Add(new Bitmap(100, 100));
これはDataGridViewRowCollection.Add( params object[] values);
というオーバーロードのようです。

699 :デフォルトの名無しさん:2009/02/01(日) 23:46:04
>>697
完全に自分でリソースを解放しなきゃいけない言語のほうが、
はっきりしていてわかりやすい部分もあるよな。

例えばDataGridViewを継承するClassか、DataGridViewをメンバに持つClassを自作して、うまく解放してやるとか。
前者の場合、DeleteやClearをOverrideして、行を挿入されたり、削除するたびに
該当するインスタンスを破棄するようにするとか。
後者の場合、同じメンバにArrayListをもっておいて、Addするたびに
インスタンスをArrayListに入れといて、DeleteやClearするたびArrayListから削除するとか。
またはその複合型。

700 :デフォルトの名無しさん:2009/02/01(日) 23:59:47
C#ってVBみたいに何もわかってなくてもいきなり書けるのがいいよね
C++は文法から徹底的にやらないとだめだったからC#はすごいと思う

701 :デフォルトの名無しさん:2009/02/02(月) 00:08:39
>>699
前者の方ができればベストですが、現段階だと難易度が高いため
後者の方法ですることにします。
ありがとうございました。

702 :デフォルトの名無しさん:2009/02/02(月) 00:23:14
>>700
言語というより、フレームワークや開発環境がバックボーンにあってのC#ってことかな
ただ暗黙的な型指定とかわけわからん仕様はVBに逆行している気がする
pascalぐらいに厳密な型指定ぐらいでちょうどいい

703 :デフォルトの名無しさん:2009/02/02(月) 00:31:24
LINQのための技術なんだから使わなきゃいいだけだろ

704 :デフォルトの名無しさん:2009/02/02(月) 00:46:08
オブジェクトを作る時はかならずnewを付けないといけないんですか?
自動でメモリ解放されるなら、余計な文字を付けずに勝手に確保してくれないんですか?

705 :デフォルトの名無しさん:2009/02/02(月) 00:50:30
var の話ならすでにオーバーロードとか型パラメータ省略とか
式内の型明示なしとかやりまくってるくせに、宣言部分に入れたら
ほえるのって感覚的にどうよと思ってしまう。

逆にそういうのがないと使い物にならないってことでもあるんだが。
ある意味宣言部分でだけできないほうが不自然だろうよ。

706 :デフォルトの名無しさん:2009/02/02(月) 01:00:15
クラス宣言部でもvar使えるようにして欲しかったな(´・ω・`)

707 :デフォルトの名無しさん:2009/02/02(月) 01:00:31
>>705
より一層逆行しているってことだろ?

>宣言部分に入れたらほえるのって感覚的にどうよと思ってしまう。
3.0になってから文句言い出したなんてのは、完全にお前の作文だろ。
それとも>>702の発言をずっと監視してたのか?

708 :デフォルトの名無しさん:2009/02/02(月) 01:06:10
型パラメータの省略なんて不必要なんだよ
Object型でいいんだから
逆に言うと厳密にObject型と定義してる

709 :デフォルトの名無しさん:2009/02/02(月) 01:08:21
>>707
俺は別に705じゃないけど、そんな人をいきなりお前呼ばわりするほど
エキサイトするような話でもないだろw

>>702
どこが逆行してるのか理解できんなあ。
君がよく理解してないだけじゃないの?
varってVBのOption Explicit Offとは全然違うよ。

710 :デフォルトの名無しさん:2009/02/02(月) 01:09:11
無名クラスとかはどういう型にするつもりなんだ?

711 :デフォルトの名無しさん:2009/02/02(月) 01:12:23
C#4.0のdynamicみたら発狂しそうだな。

712 :デフォルトの名無しさん:2009/02/02(月) 01:13:16
あれは俺も発狂しそう
使われない事を祈りたい

713 :デフォルトの名無しさん:2009/02/02(月) 01:15:58
Linq To SQLは廃止される方向だから、暗黙的な型指定がLINQのための技術なら、
余計な実装してくれたってことなんじゃないの?

714 :580:2009/02/02(月) 01:16:59
>>583
App.configにこれ追加したんですけど
>>580と状況変わりません。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v1.1.4322"/>
</startup>
</configuration>

私の環境だけですかね?
自分の解釈だとアプリケーション構成ファイル(App.config)の
configuration→startup→supportedRuntimeで実行環境指定できると思ってたんですけど
なぜかできません。

715 :デフォルトの名無しさん:2009/02/02(月) 01:17:36
dynamicは実質COM専用だろうけどね。
ただ、object型使うよりはるかに高性能なんだぞ。

Linq To SQLはLinq to Entityに衣替えしただけだよ。ほとんど一緒。

716 :デフォルトの名無しさん:2009/02/02(月) 01:17:59
linqはsqlのためだけの技術じゃないんだが

717 :デフォルトの名無しさん:2009/02/02(月) 01:20:01
>>715
DLR のことも思い出してあげてください。

あと、マルチプルディスパッチするときとかは便利そう。

718 :デフォルトの名無しさん:2009/02/02(月) 01:21:45
もしかして、
var i = 5;
i = "hello";
みたいなことができると思ってんのか?

719 :デフォルトの名無しさん:2009/02/02(月) 01:22:44
>>709
コンパイラが「推測」する点で、使う側と読み手の「憶測」が生まれるから却下だろ。
for文のカウンタでvarって使えたっけ?

>>715
EntityはADOチーム SQLはC#チームだろ
だから無理矢理、言語仕様を変更したってこと

720 :デフォルトの名無しさん:2009/02/02(月) 01:25:32
オブジェクトを作る時はかならずnewを付けないといけないんですか?
自動でメモリ解放されるなら、余計な文字を付けずに勝手に確保してくれないんですか?

721 :デフォルトの名無しさん:2009/02/02(月) 01:26:27
>>718
たぶんそうなんだろうね。
でなけりゃ「VBに逆行」の意味が通らない。

>>719
いや憶測なんて生まれないって。
やっぱり何か勘違いしてるよ。

722 :デフォルトの名無しさん:2009/02/02(月) 01:27:23
>>720
勝手に確保されたら困るだろ。参照だけ宣言したいときどうするんだよ。

723 :デフォルトの名無しさん:2009/02/02(月) 01:27:33
>>714
ところでVisual Studioは2002か2003使ってるよね?
2005/2008じゃバージョンを1.0や1.1には落とせないよ。裏技はあるけど。

724 :デフォルトの名無しさん:2009/02/02(月) 01:30:14
なにこの糞スレしねよ

725 :705:2009/02/02(月) 01:30:58
>>719
あのさ、俺が挙げた例のうちオーバーロードも式内の型明示なしも
1.0 かそれよりはるか前からあるんだけど。
これらの二つも
>コンパイラが「推測」する点で、使う側と読み手の「憶測」が生まれる
を満たすぞ。逆に聞くとなんで var だけだめなの?


726 :デフォルトの名無しさん:2009/02/02(月) 01:31:32
>>721
いや生まれるだろ
var i = Class.GetID();
では何が得られるかは分からない。
GetID()が何を返すか調べなければわからないから、可読性が低下してる。



727 :デフォルトの名無しさん:2009/02/02(月) 01:33:30
>>725
それを最初から指摘してるから矛盾がないといいたいわけだろ
お前の批判の論拠がvarが実装されて初めて文句を言い出してるからおかしいなんだから

728 :デフォルトの名無しさん:2009/02/02(月) 01:33:37
インテリセンスがその辺一発で補完してくれるしねえ

729 :デフォルトの名無しさん:2009/02/02(月) 01:35:47
>>726
逆に聞くが、

Class2.Foo(Class1.GetID())

でClass2.Foo のオーバーロードがどう呼ばれるかわからないのは
いいんですか。

730 :デフォルトの名無しさん:2009/02/02(月) 01:38:35
>>726
変なこと言う人だな。
i(とGetID()の返り値)の型はコンパイル前に確定してるし、
プログラマがそれを知る必要がある場合はいつでも簡単に知ることができる。

通常はそれで必要十分だよ。

型がいつでも明示されてなきゃ嫌だ、っていうのは気持ちとしては理解できるけど
現実問題として本当にいつでもそんな必要があるのかっていうとそんなことはない。

731 :デフォルトの名無しさん:2009/02/02(月) 01:39:30
IDE上だけでソース眺めるだけじゃないからなぁ
htmlだってプリントアウトしたものだってあるし

732 :デフォルトの名無しさん:2009/02/02(月) 01:42:25
>>729
コンパイラが類推して型を決めるのと、
目的の型を引数として渡せばそれを認識して動作するのとは別でしょ。
問題はコンパイラが類推することに憶測が入るわけだから。

733 :デフォルトの名無しさん:2009/02/02(月) 01:43:03
(システム)ハンガリアンって、>>726みたいな思考をする人が広めたのかなあ。。

確かに型が使われてる傍に常に明示されてた方が読みやすい場合もあるだろうけど、
いつでもそうでなきゃ困るっていうのはちょっとパラノイア的だと思うけど。

734 :デフォルトの名無しさん:2009/02/02(月) 01:43:53
>>732
だから類推も憶測もないってば。。。
何を言ってるんだよ。

735 :580:2009/02/02(月) 01:44:15
>>723
VS2005を使ってます。
VSが2005になって要素「'supportedRuntime' 」が非サポートになったことから
「要素 'supportedRuntime' のスキーマ情報が見つかりませんでした」の「情報」が吐かれる
という解釈でよいですかね?
つまり「'supportedRuntime」要素は古い仕様だと。
VS2005が1.0や1.1環境で動作する実行ファイル作れるかどうかということは
別問題として考えてます。

736 :デフォルトの名無しさん:2009/02/02(月) 01:49:14
型なんて大体の場合無駄な情報だし
エラーはコンパイル段階で特定されるしな
型の余計な情報はなくして
intの値とか計算とかの方に神経を尖らせるべきだ

737 :デフォルトの名無しさん:2009/02/02(月) 01:49:21
>>734
「推論される」か?

738 :デフォルトの名無しさん:2009/02/02(月) 01:49:23
>>735
supportedRuntimeはサポート書いてるよ。ただVisual StudioのIDEがはじいてるだけ。
<supportedRuntime version="v2.0.50727"/>
にしたら警告が出るだけで動くうえ、MSDNにもちゃんと記述もある。

739 :580:2009/02/02(月) 02:00:41
>>738
VS2005が弾いてるだけですか。
厳密には警告ではなく情報なので弾いているわけではありませんが、
要素自体はサポートしている要素なのにどうしてですかね?

740 :579:2009/02/02(月) 02:01:42
>>579
「Webページのビルド コメント」機能って誰も使ってません?

741 :デフォルトの名無しさん:2009/02/02(月) 02:02:32
ToString()のせいで、変数の型によってインテリセンスの機能は、
最低最悪の糞機能なわけだが、var導入でその改善も無理になったわけだ

intに対しては確実にintだけ返すメソッドを表示するインテリセンスになってくださいよ

742 :デフォルトの名無しさん:2009/02/02(月) 02:04:31
>>741
メソッドチェーンって分かる?
intの変数に代入するからってintを返すメソッドしか呼ばないわけじゃないんだよ

743 :デフォルトの名無しさん:2009/02/02(月) 02:05:43
>>739
VS2005/2008がCLR ver.2.0.50727しかサポートしてない以上、
たとえば将来のバージョンv4.0.1234のような指定をされても
VS上でデバッグできないだろうということ。


744 :デフォルトの名無しさん:2009/02/02(月) 02:13:04
>>742
だからToString()のせいで事実上無意味になってるって書いてあるじゃん
クラスにはToString()があって、ToString()にはLengthがあるんだからさ

745 :デフォルトの名無しさん:2009/02/02(月) 02:18:34
>>732
いや、例えば、これ横に長いから、
FooBarHogePiyo.FooBarHoge(Foo.Bar.Hoge.Piyo.PiyoPiyo.Baz.BazBaz);
こう2行に分けた。
var tmp = Foo.Bar.Hoge.Piyo.PiyoPiyo.Baz.BazBaz;
FooBarHogePiyo.FooBarHoge(tmp);
という使い方・考え方もできる。憶測が入ると言えるのか?

もう1つ。
Hoge hoge = new Hoge();
2度も型を書くのは冗長だからvarを使った。
var hoge = new Hoge();
これも類推だろう。でも曖昧か?

746 :デフォルトの名無しさん:2009/02/02(月) 02:19:21
ToStringのせいじゃないでしょ
どんな型だろうとうまいこといじればなんでも返せるんだから

747 :デフォルトの名無しさん:2009/02/02(月) 02:21:06
暗黙の型変換もあるね。


748 :デフォルトの名無しさん:2009/02/02(月) 02:22:27
>>742
でも型がDateTimeとか、自作クラスならintやstringと比較して、かなり制限されるから
インテリセンスで必要なのだけ表示する意義はあるんじゃないか?
それが推論される型だと、すべてがインテリセンスで表示されてしまうわけだし。

749 :デフォルトの名無しさん:2009/02/02(月) 02:24:55
>>745
少なくともtmpがどんな型なのかわからないじゃんw

int? string? Hoge?

750 :デフォルトの名無しさん:2009/02/02(月) 02:25:24
全てのオブジェクトにはGetHashCodeがあるわけだが

751 :デフォルトの名無しさん:2009/02/02(月) 02:26:46
>>748
たとえば

class Nothing{}

たとえNothing型を返したとしても
DateTime dt = hoge.Nothing == null ? new DateTime() : DateTime.Now;

DateTimeは返りうるわけだ

752 :デフォルトの名無しさん:2009/02/02(月) 02:27:01
varはD言語で使ってるけど(autoだけど)、一度も困ったことないわ。
ましてや、IDEの支援が受けられるC#なら、大丈夫だろ。

753 :デフォルトの名無しさん:2009/02/02(月) 02:27:23
>>749
初めのもわからないよね。var だけがだめな意味は?


754 :デフォルトの名無しさん:2009/02/02(月) 02:32:48
>>749
元のtmp無しのコードだって分からない点は同じ。
tmpという名前を付けたからと言って、自分は型まで積極的に欲しいとは思わない。
まあこのネタC# 3.0が出たときに散々出尽くした話だけどさ。

755 :デフォルトの名無しさん:2009/02/02(月) 02:34:09
>>753
むしろ下のほうが分かるだろ。new してるんだから。

756 :デフォルトの名無しさん:2009/02/02(月) 02:35:28
>>754
じゃ、逆に言うと積極的に導入したい理由は?

757 :デフォルトの名無しさん:2009/02/02(月) 02:40:11
型が余計な情報であって明示することで可読性が下がるならvarにすればいいし
そうでないなら明示すればいい
感覚的な問題だが
俺は型が明示されることで可読性が上がるとは全く思わない

758 :579:2009/02/02(月) 02:40:24
>>743
それはちょっと思ったのですが、
それだと「supportedRuntime」要素自体を弾くようなことはしないと思ったのですけど
弾いちゃう仕様なんですね。

759 :デフォルトの名無しさん:2009/02/02(月) 02:40:36
>>751
?以降では限定されるけどな

760 :デフォルトの名無しさん:2009/02/02(月) 02:44:35
>>757
人間が書いてる以上、見てすぐにわかる感覚的なものは大事なんじゃないか?

var i = 1;
var i = 0m;

ulong i = 1;
decimal i = 0m;

俺は下の方がわかりやすいと思うけどね。

761 :デフォルトの名無しさん:2009/02/02(月) 02:47:02
>>756
引数・戻り値のようにインタフェースを固定したい場面かな。
境界面は割とはっきりさせたい。

ついでに言えば、別にコンパイラがvarを認識しなくても、仮にvarって書くと
IDEが片っ端から実際の型に置き換えてくれて、
後から右辺を書き換えればそれに追従して型も書き換えてくれる、
という機能だったとしても自分は満足できるな。

762 :デフォルトの名無しさん:2009/02/02(月) 02:48:32
>>759
?はネストさせてもいいんだぞ

>>760
意味が変わってるじゃねえか

763 :デフォルトの名無しさん:2009/02/02(月) 02:54:15
>>758
はじいてはいないな。警告かと思ったら単なる情報だ。
もともとDTDやXMLスキーマできっちり管理する類のものじゃないのだろう。
userSettingを追加すると同じメッセージが続出だ。

764 :デフォルトの名無しさん:2009/02/02(月) 02:55:09
>>761
ローカル変数で??
固定??

具体的に例をあげてくれると嬉しいな。

765 :デフォルトの名無しさん:2009/02/02(月) 02:55:44
>>760
その例って無理やり感がするだけで何の意味もない気がするんだよな
わかりやすい、はぁそうですねとしかいえないし。

そもそも元々、
g.DrawString(..., 1, ...);
g.DrawString(..., 1.0, ...);
こういったリテラルの型を意識すべきな状況なんていくらでもあったから、
リテラルの型は意識すべきって思ってたし実際してるし var 使っても困ら
ない

>>761
具体例で、匿名型とかジェネリクスとの組み合わせとか型が長すぎる
場合が多すぎとかでもあげれば。

766 :デフォルトの名無しさん:2009/02/02(月) 02:56:07
>>762
意味が変わってるってどういうことよ

767 :デフォルトの名無しさん:2009/02/02(月) 02:57:07
>>766
ulongじゃなくてintだろってことだろう。

768 :デフォルトの名無しさん:2009/02/02(月) 02:59:08
>>764
すまん言い方が悪かった。つまりローカル変数は全部var使っていいと思っている。

769 :デフォルトの名無しさん:2009/02/02(月) 03:02:09
>>765
自分で記述しているにはいいけど、他人のを読んだら多分、発狂するだろうな
いちいち呼び出される側のクラスの返り値の型を調べないといけないから

770 :デフォルトの名無しさん:2009/02/02(月) 03:05:58
>>769
返り値が何をするかは型名ではなく変数名に現われる
型名なんかただのノイズだよ

771 :デフォルトの名無しさん:2009/02/02(月) 03:06:51
>>769
マウス上に乗せるだけだな。
戻り値の型が重要で調べなきゃならないときだけだけど。

772 :デフォルトの名無しさん:2009/02/02(月) 03:07:53
int foo() {
  var x = ccc.GetHoge();
  return x;
}

GetHoge()の戻り値の型は必要か?

773 :デフォルトの名無しさん:2009/02/02(月) 03:09:38
>>768
オブジェクト指向言語だから、一つのメソッドは極限まで細分化されてて、
だからローカル変数でvarが使われててもそれほど負担がないって思想なんだろうな

ローカル変数で俺が分かればvarで問題ないってのなら、
じゃ、ローカル変数の変数名は極論で言えば1文字でも可能?

774 :デフォルトの名無しさん:2009/02/02(月) 03:09:52
>>772
GetHogeから返ったxがintかどうか良く分からんから
その場合は必要に見えるな

775 :デフォルトの名無しさん:2009/02/02(月) 03:11:57
>>774
これは?
int foo() { 
  return ccc.GetHoge(); 



776 :デフォルトの名無しさん:2009/02/02(月) 03:13:41
>>775
ひどく可読性が低いコードに見えるな
GetHogeでintが返るなんてありえん

777 :デフォルトの名無しさん:2009/02/02(月) 03:16:52
>>771
俺が記述したのならいいけど、他人ので、その度に、カーソルに乗せるってのは苦痛だな。
ドキュメント作る時、ソースコードコピペしてvarが入るのは許してくれるのかなww

778 :デフォルトの名無しさん:2009/02/02(月) 03:17:59
>>776
一方Derはこう書いた:

auto foo() {
return ccc.GetHoge();
}

779 :デフォルトの名無しさん:2009/02/02(月) 03:18:50
public int X
{
 get
 {
  var x = ccc.X;
  return x;
 }
}

これならvarでいい
まあ変数いらんけど

780 :デフォルトの名無しさん:2009/02/02(月) 03:22:17
>>775
それははまだ問題ないだろ。問題は>>772の返り値がよくわからないこと。
例えば、こんな例だとvarじゃわけわからない。
もちろん、こんな単純な例だったらいいと思うけど、もっと間に複雑な処理をした場合の話。

int foo() {
var x = ccc.GetHoge();
return x.Count;
}

781 :デフォルトの名無しさん:2009/02/02(月) 03:25:21
んで、戻り値を見れば型がわかるから、varでもいいなら、
↓はどうなんよ。

>ローカル変数で俺が分かればvarで問題ないってのなら、
>じゃ、ローカル変数の変数名は極論で言えば1文字でも可能?

782 :デフォルトの名無しさん:2009/02/02(月) 03:26:23
>>780
それならCountが返ってるんだって分かるから
varの型なんていらんと思うけど

783 :デフォルトの名無しさん:2009/02/02(月) 03:26:44
>>780
それは名前が適当だからわかんないんだろう。

int NumberOfHoges() {
var hoges = this.GetHoges();
return hoges.Count;
}

みたいなかんじだと、
GetHoges()の型がHoge[]だろうがIList<T>だろうがそんなこと正直どうでもいい

784 :デフォルトの名無しさん:2009/02/02(月) 03:26:59
同じことの繰り返しだな
int foo() { 
 return ccc.GetHoge().Count; 



785 :デフォルトの名無しさん:2009/02/02(月) 03:28:48
>>781
型が分かってもそれが何をするものかは一般に分からない
intが返ってもそれが何の数値かは分からない
変数名は必要だ
変数名で何の数値か分かるならば
intなんていう型情報はいらない

786 :デフォルトの名無しさん:2009/02/02(月) 03:29:04
>>783
varにする分、想像しやすいように変数名を充実させましょうっていうのなら、本末転倒だろ

787 :デフォルトの名無しさん:2009/02/02(月) 03:31:43
>>786
変数名は充実させるべきだ
変数名は使われるところにずっと付いてくるからな
型名は最初の一回しかでてこない
なんだか分からなくなって型名を探しに戻るなんてのは最悪だ
そして型名を見たところでたいした情報は取ってこれんのだ

788 :デフォルトの名無しさん:2009/02/02(月) 03:32:07
>>785
変数名に正確さを求めるか、型名に正確さを求めるかの二者択一を考えるのなら、
人によって命名に差がなく、確実に命名される厳密な型指定を選択するほうが論理的だろ

789 :デフォルトの名無しさん:2009/02/02(月) 03:32:20
>>786
この程度、普通の「充実度」だと思うけど。
変数名から類推できる型を書かなくていいようにするのがvar

790 :デフォルトの名無しさん:2009/02/02(月) 03:33:48
>>787
つまり厳密に型指定をしたほうが、より親切だが、
ローカル変数程度であれば、それぐらい妥協してもいいということだな。

791 :デフォルトの名無しさん:2009/02/02(月) 03:35:22
varは型の厳密さを損なうわけじゃないんだが…

792 :デフォルトの名無しさん:2009/02/02(月) 03:35:36
妥協してもいいというより
書かない方がノイズが少なくなってソースがすっきりし
可読性が上がる

793 :デフォルトの名無しさん:2009/02/02(月) 03:37:15
>ローカル変数程度であれば、それぐらい妥協してもいいということだな。 
メンバーやメソッドにvarを許さなかったのはその辺の判断があるんだろう。
varをpublicにした場合は予期しない型が外部に出てしまうからなぁ。
ローカル変数は特定の型にキャストされないと外に出れない。

794 :デフォルトの名無しさん:2009/02/02(月) 03:37:40
>>792
varのほうがノイズが多くなるだろ
ぱっと目ではわかんないんだから

795 :デフォルトの名無しさん:2009/02/02(月) 03:38:38
>>794
わかる必要のないところをvarにするんだって言ってるじゃん

796 :デフォルトの名無しさん:2009/02/02(月) 03:39:12
>>793
でも>>792の言うように書かないほうがノイズが少なくなって可読性が上がるなら、
ローカル以外でも許容すべきだと思うのだが。

797 :デフォルトの名無しさん:2009/02/02(月) 03:41:10
>>796
許せるぎりぎりはprivateなメンバーとメソッドあたりまでだと思う。

798 :デフォルトの名無しさん:2009/02/02(月) 03:44:42
>>797
なるほど、そのへんまでは、なんとなく理解できるな。
じゃ、積極的にvarを使う理由は、長い型名やクラス名を記述する労力削減?

799 :デフォルトの名無しさん:2009/02/02(月) 03:44:44
>>794
型名はたいした情報でもないのに場所をとり
それが何の型かいちいち脳内で検索してしまう

varは意味を取らなくていいので読み飛ばして
変数名という重要な情報にすっとアクセスできる

800 :デフォルトの名無しさん:2009/02/02(月) 03:45:34
何で今更varで騒いでるの?馬鹿なの?宗教論争なの?

結局はこういう事で、馬鹿は俺に近づくなって言いたいんだろ。

まともなレベルの人が使うと、可読性も向上し効率的に書けるが
馬鹿にvarを与えると、乱用と意味不明な名前により酷い事になりかねない。

801 :デフォルトの名無しさん:2009/02/02(月) 03:47:17
>>796
メソッド名で意味が分かるなら戻り値の型名なんていらんと思う
引数の型はないと静的型言語として崩壊するけど

802 :デフォルトの名無しさん:2009/02/02(月) 03:47:31
>>799
お前はバカだろw

803 :デフォルトの名無しさん:2009/02/02(月) 03:49:51
まぁ、マイクロソフトもvarは構文上で便利なだけって言ってるからな
面倒臭がりさん用

804 :デフォルトの名無しさん:2009/02/02(月) 03:53:35
>>801
いや厳密に型がわかる場合のみ推奨でしょ
var i = 1;
var s = "1";
var a = new[] { 0, 1, 2 };
とか。
メソッドの返り値を入れるのには不向き。見た目で分からないから可読性が低い。




805 :デフォルトの名無しさん:2009/02/02(月) 03:54:45
>>801
引数の型をvarにしても静的型付けは維持できるよ。
テンプレート関数に書き換えればいいだけだから。

もっともC#のジェネリックではだめだけど。

806 :デフォルトの名無しさん:2009/02/02(月) 03:57:12
>>800
そうやって言語仕様が改悪されて、元に戻れなくなるんだろ
ObjectPascalのほうが数倍増しだよ

807 :デフォルトの名無しさん:2009/02/02(月) 03:57:45
>>805
その引数にドットを打ったとき
インテリセンスに何を出せばいいんだよ
静的型言語のメリットが完膚なきまでに失われるだろ

808 :デフォルトの名無しさん:2009/02/02(月) 04:02:52
>>804
メソッドの戻り値が何かというのは
型じゃなくメソッド名で分かるようにしなきゃダメ
どうせ型なんてたいした情報にならないんだから

型名だけで十分説明できてるなら
変数名も型名と同じになる
そういうこともよくあるけど
その場合は変数名と型名が二重になって無駄

809 :デフォルトの名無しさん:2009/02/02(月) 04:04:45
>>807
何も出せないよ。
何も制約のないジェネリック引数に対して何も出せないのと同じ。

810 :デフォルトの名無しさん:2009/02/02(月) 04:10:25
>>808
その命名規則が怪しいから確実に命名される型名が必要なんでしょうが
メソッド名で判断可能なら、そもそも型名なんて必要無い

811 :デフォルトの名無しさん:2009/02/02(月) 04:13:17
そもそも型なんてIDEでカーソル合わせれば簡単に(以下無限ループ)

812 :デフォルトの名無しさん:2009/02/02(月) 04:13:25
>>810
型名の命名規則は明々白々だってわけ?
意味が良く分からん
型名は基本的にはいらないが、newする時、引数の型を指定する時には要る

813 :デフォルトの名無しさん:2009/02/02(月) 04:16:57
>>811
ローカルが全部varで、いちいちカーソル併せて確認すんのかよ
意味ねーww

>>812
メソッド名はどんな命名でもエラーにはならんが、
型名は少なくとも元が無ければエラーになるだろ

返り値のあるメソッド名やプロパティ名に、型名が入ってないとエラーになるっていうほど、
メソッド名から返り値が想像できるのならvarでも問題ないと思うが。

814 :デフォルトの名無しさん:2009/02/02(月) 04:23:57
>>813
型名だって作るときにはどんな名前でもエラーにはならんだろ
そして型名は自分自身のことは分かるが
それがどんな文脈で使われるかは分からない
情報として変数名、メソッド名の方がずっと「それがなんであるか」を表すことが出来る

ほんとに書き手があんぽんたんでメソッド名に意味分からない名前をつけるなら
型名があると便利だろうが
型名もそいつが考えたんなら何も期待できん

815 :デフォルトの名無しさん:2009/02/02(月) 04:24:36
varだと、変数が何かわからないから、初期化方法がわからんよな
null、0、空文字、その他、どれで初期化すればいいんだ?

816 :デフォルトの名無しさん:2009/02/02(月) 04:25:04
>>815
お前がvarを使ったことがないのが良く分かるよ

817 :デフォルトの名無しさん:2009/02/02(月) 04:25:21
>>815
ぐぐれかす

818 :デフォルトの名無しさん:2009/02/02(月) 04:28:03
>>814
そう主張すればするほど積極的にvarである必然性がないんだよな
だってメソッド名がしっかりしていて、型名があって、変数名がしっかりしているのが理想だろ?

819 :デフォルトの名無しさん:2009/02/02(月) 04:29:28
>>816
使用前にnullで初期化できたっけ?

820 :デフォルトの名無しさん:2009/02/02(月) 04:31:53
>>818
変数名やメソッド名が雄弁なら
型名なんてノイズにしかならずむしろ邪魔
そんなものをわざわざ手を動かして書くなんて狂気の沙汰だ

821 :デフォルトの名無しさん:2009/02/02(月) 04:33:26
>>819
出来ないに決まってるだろ
型推論できねえんだから

822 :デフォルトの名無しさん:2009/02/02(月) 04:34:36
>>820
その保証がないから、完全に命名が保証されてる型名が必要なんだろ

823 :デフォルトの名無しさん:2009/02/02(月) 04:35:58
>>821
あいまいだなぁ

824 :デフォルトの名無しさん:2009/02/02(月) 04:39:27
>>822
変数名が雄弁じゃないなと思ったら型を書けばいいだろうよ
俺はそんなことはないけどな

あと完全に命名が保証されてるという意味が分からん
意味分からん型名なんていくらでも作れるぞ

825 :デフォルトの名無しさん:2009/02/02(月) 04:39:38
右辺を見て左辺を型推論するのがvar、
左辺を見て右辺を型推論するのはnull初期化
なんだから、両方とも型がわかんなかったら推論できるはずがないじゃん。

826 :デフォルトの名無しさん:2009/02/02(月) 04:42:23
nullに初期化して後でどんな風に使われるか調べることも出来ないことはないんだよな
そこは不便だと思うけど
副作用を前提にしてるからあんまいいコーディングじゃないことも確か

827 :デフォルトの名無しさん:2009/02/02(月) 04:45:53
>>824
少なくともClass名などとして存在してるってことだよ
存在しない型名を書けばエラーになる

それに自分が書いて自分だけが理解できればいいなら、
どんな命名だっていいだろ。変数もメソッドも。

他人が見たり、時間が経っても
少しでも可読できるよう、多くの表現があったほうがいいと言ってるわけで。

828 :デフォルトの名無しさん:2009/02/02(月) 04:47:53
>>825
objectでいいじゃん

829 :デフォルトの名無しさん:2009/02/02(月) 04:50:35
>>824
じゃ、すべてObject型にして、メソッドだけみてキャストさせりゃいいじゃん

830 :デフォルトの名無しさん:2009/02/02(月) 04:51:02
>>815
右辺脳というかある程度経験してよさがわかってないと伝わらない
だろうけど、型付 null は default(T) でいける。

831 :デフォルトの名無しさん:2009/02/02(月) 04:56:35
>>827
存在しない型名を書くとエラーになるということに
どんなメリットがあるのか
どんな可読性を高める仕掛けがあるのかわかんねっての

可読性が高いソースコードって言うのは
すいすい読めてすいすい意味が取れるコードなわけで
変数名が雄弁でないとなかなかそうはならないし
変数名が雄弁ならそれより情報として劣る型名は
すいすい読むための邪魔にしかならない

分かりにくいところでは名前付き引数を積極的に使うと
もっと可読性を上げられると思う
だからといって全部を名前付き引数で呼び出したら
可読性は下がるだろ

832 :デフォルトの名無しさん:2009/02/02(月) 05:02:12
>>831
DataSetをDateSetと記述してしまってエラーにならなかったら問題だろ

833 :デフォルトの名無しさん:2009/02/02(月) 05:05:55
>>831
InteliSenseで、意図しない返値が選択されてしまったとき、
コンパイルエラーになるだろ

834 :デフォルトの名無しさん:2009/02/02(月) 05:09:00
>>831
変数名が雄弁かどうかは設計者しだいだが、
どんな雄弁でない変数名でも、確実に最低限の型名が理解できる、
これ重要なんだよね

835 :768:2009/02/02(月) 05:10:33
ちょっと離れている間に随分伸びたな。
>>773
極論というなら、もちろんいいよ。現実はi, jくらいしかやらないけど。

836 :デフォルトの名無しさん:2009/02/02(月) 05:10:49
>>832
タイプミスは変数名だろうとメソッド名だろうとコンパイル段階ではじかれるだろ
くぐりぬけることもあるかもしれんがそんなん気にするほどの確率じゃない

>>833
変数の型が意図しないものだったら
varだろうとvarじゃなかろうとまずコンパイルエラーになるわ

837 :デフォルトの名無しさん:2009/02/02(月) 05:16:12
>>836
>存在しない型名を書くとエラーになるということにどんなメリットがあるのか
存在しない型かいてコンパイルエラーになるメリットないんだろ?
何を言ってるんだ?

>varだろうとvarじゃなかろうとまずコンパイルエラーになるわ
var.GetHash()とか、var.ToString()なら確実にエラーにならず、
型がわからないからclassもわからず、原因究明に苦労するかもな

838 :デフォルトの名無しさん:2009/02/02(月) 05:16:55
>>834
型名が最低限かどうかは設計者次第だろうよ
型名には情報を盛り込みにくいしな
型名があるから変数名は短くてもいいやみたいな考えだと
読みにくいソースコードになるだけだ
むしろvarを使って変数名を充実させようと気を配った方がいいように思うね

結局必要な情報を必要なだけ盛り込むのが可読性の高いコードなわけで
情報が多ければいいと思って毎行コメントつけても可読性は下がるばかりだ
コメントがなくてもすいすい読めるのがいいコードだ
同じように型名がなくても意味が分かるのがいいコードなわけだ
いいコードでは型名なんて余計な情報なんだよ

839 :デフォルトの名無しさん:2009/02/02(月) 05:20:59
>>838
いや命名方法は個人によって異なるから、その考え方はおかしいな
すべての人に確実にわかる命名方法なんか存在しない
それが存在できるとすれば、言語仕様で規定された組み込み型や、
その上に成り立った型名だろうよ

840 :デフォルトの名無しさん:2009/02/02(月) 05:40:13
こういう型の表記が許されれば、結果的にどんどん悪化していく原因になるよ
var tmpNo = Code.GetNo()
みたいな表示がまかり通って読みにくくて仕方なくなる

まだvarがintかstringかなら想像のつきようがあるってもんだが

841 :デフォルトの名無しさん:2009/02/02(月) 10:19:22
ごめん、それは書いてあってもわからん

842 :デフォルトの名無しさん:2009/02/02(月) 15:52:33
.NETで.NET命名規則以外の命名法を使っている人間が存在していたことに驚いた

843 :デフォルトの名無しさん:2009/02/02(月) 15:59:51
MSのことか

844 :デフォルトの名無しさん:2009/02/02(月) 16:03:11
はい

845 :デフォルトの名無しさん:2009/02/02(月) 16:04:00
純血のハンガリアン人とか

846 :デフォルトの名無しさん:2009/02/02(月) 16:21:51
ハンガリアン=ハンガリー人

ハンガリアン人=ハンガリー人人

847 :デフォルトの名無しさん:2009/02/02(月) 16:25:53
ハンガリアン=ハンガリーの

ハンバリアン人=ハンガリーの人

848 :デフォルトの名無しさん:2009/02/02(月) 16:30:11
ハンバリアン=ハンバル

849 :デフォルトの名無しさん:2009/02/02(月) 17:06:17
SecureStringをまともに使えてる人いる?
GUIアプリケーションじゃ結局Stringに渡すことになってSecureでも何でもないんだが・・・
なぜ、String型にIStringインターフェイスを実装しないのかと

850 :デフォルトの名無しさん:2009/02/02(月) 17:15:40
どのみちGUIから先は手出ししようが無いからどうしようもない気がする

851 :デフォルトの名無しさん:2009/02/02(月) 18:08:26
使ったことないけど、WPFのPasswordBoxというクラスには
SecurePasswordというSecureStringで受け渡しするプロパティがあるみたい。

852 :デフォルトの名無しさん:2009/02/02(月) 18:35:56
横からちょい質問
GUIはC#で作って、実際の処理を他の言語に任せることは出来ますか??

C++のdllは使える、とかどこかで見たのですが…

853 :デフォルトの名無しさん:2009/02/02(月) 18:36:49
できんでもない
C++のクラスは直接扱えない

854 :デフォルトの名無しさん:2009/02/02(月) 18:39:00
>>852
DllImport で検索

855 :デフォルトの名無しさん:2009/02/02(月) 19:15:17
まぁつまりC#を使うならC#オンリーってことですか??
そこらへんのライブラリ拾ってきて(ryってのは無理なんでしょうか

856 :デフォルトの名無しさん:2009/02/02(月) 19:26:04
できるできる。
Cとかの単純なDLLならDllImport。自分でクラス化する。
COMクラスならCOM Interop。だいたいそのままC#のクラスになる。
C++クラスライブラリなら、Visual C++ (C++/CLI)でC#向けにラッパークラスを作る。

857 :デフォルトの名無しさん:2009/02/02(月) 19:26:51
>>852
C++/CLIで、アンマネージのC++DLLと.NETのDLLを混ぜて使える
だから、C#でGUIを作って、C++/CLIで結合したらいいと思うよ

858 :デフォルトの名無しさん:2009/02/02(月) 19:57:53
DllImportでThisCallをサポートしているので、
ファクトリと開放用のstaticメソッドを用意すればC++のクラスの呼び出しも不可能ではない。
が正直おすすめしない。

859 :255:2009/02/02(月) 20:16:58
参考になりました、感謝しております
とりあえずGUIはC#で作ることにします

860 :デフォルトの名無しさん:2009/02/02(月) 20:56:40
C#で統合アーカイバDLLやなんかを呼ぶサンプルが、ネット上にゴロゴロあるよ。

861 :デフォルトの名無しさん:2009/02/02(月) 23:16:05
ドトネトでDebugViewで見られるデバッグ出力をするのはどうしたらいい?
要するにWin32のOutputDebugString相当のものってことですが。

862 :デフォルトの名無しさん:2009/02/02(月) 23:19:58
>>861
System.Diagnostics.Debug.WriteLine かな? 知らんが。

863 :デフォルトの名無しさん:2009/02/02(月) 23:22:07
Traceじゃないの?

864 :デフォルトの名無しさん:2009/02/02(月) 23:31:15
>>713
Linq to SQLは廃止というかそもそも本筋じゃない。
Entriesが本命だ。
それに暗黙的な型指定じゃなく、厳密な型指定だ。
厳密だから省ける。OK?

865 :デフォルトの名無しさん:2009/02/02(月) 23:40:07
Entries って初めて聞いた

866 :デフォルトの名無しさん:2009/02/02(月) 23:41:02
おまいらvarごときでうだうだ言ってたらF#なんかつかえんぞ

867 :デフォルトの名無しさん:2009/02/02(月) 23:42:17
>>864
varは暗黙的な型指定だよ 言葉としては
厳密に型を推論できるから暗黙に指定できる

868 :861:2009/02/02(月) 23:48:01
自己レス。
ここに書いてあった。
http://www.microsoft.com/japan/msdn/net/general/win32map.aspx#win32map_debuggingfunctions

869 :デフォルトの名無しさん:2009/02/02(月) 23:51:14
…今晩もやるの?もう放置でいいよ正直

右辺の抽象度がぐっと上がって var もついた上でどううまく使うか
とかなら面白いけど、その前で止まってんだもんつまんねぇ


870 :デフォルトの名無しさん:2009/02/03(火) 00:06:42
>>868
System.Diagnostics.Debugger.Logとかじかに使うと、
Release版のモジュールにも入ったままになるから、
おとなしくTrace/Debugのオブジェクトを使っておけ。

871 :デフォルトの名無しさん:2009/02/03(火) 00:09:20
>>870
うんだからあえて「そのように」したいのよ。
特殊事情って奴だね。

872 :デフォルトの名無しさん:2009/02/03(火) 00:10:20
っていうか、命令口調クン、いい加減そういう言葉遣い止めた方がいいと思うよw

873 :デフォルトの名無しさん:2009/02/03(火) 00:17:35
だまれ若造

874 :デフォルトの名無しさん:2009/02/03(火) 00:26:49
UI関連の質問です。
フォームのKeyPreviewをtrueにしてキーイベントをメインのフォーム側で一括管理してるのですが、
入力中のキーダウンまで拾ってしまう(一部DataGridとかは拾わずに済むが)ので
入力中の場合はキーダウンさせない様にしたいのです。

TextBoxは条件によって、幾つ生成されるか分からない状況な上、FlexGrid等もあるので、
1.フォームに含まれるGUIオブジェクト全てを列挙し、
2.その各々に対して入力中か否かの判定をする
上記を実現する方法を教えてくださいまし

875 :デフォルトの名無しさん:2009/02/03(火) 00:28:32
処理したいキーって何? ProcessDialogKey とかで何とかならんの?

876 :デフォルトの名無しさん:2009/02/03(火) 00:34:01
ユーザーによります。
aに割り当てたい方もいらっしゃるでしょうし、
F1に割り当てたい方もいると思うので・・・
その割り当ては設定次第なんです。
ProcessDialogKeyちょっと調べてみます。


877 :デフォルトの名無しさん:2009/02/03(火) 00:35:25
キーフォーカスならActiveControlプロパティでとれるが

878 :デフォルトの名無しさん:2009/02/03(火) 00:36:15
ホットキーとか使えよ・・・

879 :デフォルトの名無しさん:2009/02/03(火) 00:39:38
皆様レスありがとうございます。

>>877
やってみます。

>>878
ユーザーがどんなキーでも好きにカスタマイズ出来る事が
条件なので・・・自分もそう思うんですけどね・・・


880 :デフォルトの名無しさん:2009/02/03(火) 00:42:42
だったら入力中でも効かなきゃまずいだろw

入力中とフォームでキーを処理するときの違いは?

881 :デフォルトの名無しさん:2009/02/03(火) 00:44:06
尋ねられたこと以外は書き込まないでください。ウザいだけです。

882 :デフォルトの名無しさん:2009/02/03(火) 00:45:23
Debug/TraceでもDefaultTraceListenerからDebugger.Logが呼ばれるのにな。
直接呼ぶと後から出力の制御も出来んし、停止も出来ないのに

まぁ特殊事情(笑)なら仕方ないか

883 :デフォルトの名無しさん:2009/02/03(火) 00:46:15
聞いてる内容以上の事に突っ込まれたらウザいよねw
こっちはそういう仕様でやらなきゃいけねーんだっつうw
おまいさんのすばらしい設計思想は解ったから、黙ってろって感じw

884 :デフォルトの名無しさん:2009/02/03(火) 00:46:52
>>880
いや、入力中は反応しない事も条件です。
入力出来なかったら意味無いので

入力中は普通に文字を打てる事
それ以外の時はキーに割り当てた機能・関数が実行される事
です。

885 :デフォルトの名無しさん:2009/02/03(火) 00:51:17
「入力中」の定義があいまいなんだよ。

ようするに、TextBox とかにフォーカスがあるときは Form でキーを処理しないようにしたい、ってこと?
なら、ActiveControl でフォーカスを持ってるコントロールを取得して、種類ごとに処理する、しない、
ってやるしかないんじゃない?

列挙は Controls。必要なさげだけど。

886 :デフォルトの名無しさん:2009/02/03(火) 00:54:57
wをつける奴は基地外が多いな

887 :デフォルトの名無しさん:2009/02/03(火) 00:55:40
>>883
特殊事情(笑)

888 :デフォルトの名無しさん:2009/02/03(火) 00:56:17
>>885
すいません。
余り詳しく書くとアレなので・・・

>ようするに、TextBox とかにフォーカスがあるときは Form でキーを処理しないようにしたい、ってこと?
ちょっとだけ違います。
フォーカスが有っても入力中とは限らないのでフォーカスを持ってたら
という条件ではなく、入力中か否かにしたいのです。

889 :デフォルトの名無しさん:2009/02/03(火) 00:56:31
今思いつきました>特殊事情

890 :デフォルトの名無しさん:2009/02/03(火) 00:58:39
>>888
なんじゃそりゃ。。。

「入力中」ってなんなんだ?
もしかしてIMEでの入力の話?

891 :デフォルトの名無しさん:2009/02/03(火) 01:00:22
だから、入力中の定義は?

[A] に機能が割り振られてたとして、TextBox で A が押下されたらどうなんの?
[Enter] に機能が割り振られたとして、Button で Enter が押下されたらどうなんの?
[Space] に機能が割り振られたとして、CheckButton で Space が押下されたらどうなんの?

全部、入力中といえば入力中なんだよ。

892 :デフォルトの名無しさん:2009/02/03(火) 01:01:21
>>890
いいえ、IMEで入力してるとは限らないです。

893 :デフォルトの名無しさん:2009/02/03(火) 01:01:39
糞SIerはとっとと淘汰されないかね。

894 :デフォルトの名無しさん:2009/02/03(火) 01:02:11
あまりプログラム板の住人を敵に回さないほうがいい……!

895 :デフォルトの名無しさん:2009/02/03(火) 01:02:37
釣りっぽくなってきたな。
寝る。

896 :デフォルトの名無しさん:2009/02/03(火) 01:03:46
>[A] に機能が割り振られてたとして、TextBox で A が押下されたらどうなんの?
Aが入力されます。

>[Enter] に機能が割り振られたとして、Button で Enter が押下されたらどうなんの?
Enterに割り当てられた機能が動きます。

>[Space] に機能が割り振られたとして、CheckButton で Space が押下されたらどうなんの?
Spaceに割り当てられた機能が動きます。

>全部、入力中といえば入力中なんだよ。
確かにそうですね、編集中か否かと言った方が良かったですね。

897 :デフォルトの名無しさん:2009/02/03(火) 01:04:28
それ、言い換えただけだからw
定義を述べよwww

898 :デフォルトの名無しさん:2009/02/03(火) 01:04:54
なんか妙なことで絡んでる奴がいるみたいだけど、
俺が「特殊事情」と書いたのをおちょくってる(まあ、つもり)の奴って
DebugViewが何かわかって言ってるのかね。

知ってれば何がしたいかだいたい察しが付くと思うんだが。

899 :デフォルトの名無しさん:2009/02/03(火) 01:04:58
あまりプログラム板の住人を敵に回さないほうがいい……!

900 :デフォルトの名無しさん:2009/02/03(火) 01:05:02
どう見ても釣りだな。そうでないとしたら頭が高卒レベル

901 :デフォルトの名無しさん:2009/02/03(火) 01:08:17
GUI上のTextBox、DataGrid等入力可能なGUIオブジェクトが入力カーソルが出て入力待ち状態なら編集中
それ以外はキー機能が生きている状態です。

902 :デフォルトの名無しさん:2009/02/03(火) 01:08:45
あまりプログラム板の住人を敵に回さないほうがいい……!

903 :デフォルトの名無しさん:2009/02/03(火) 01:09:02
で、編集の定義は?w

そんなのを示すプロパティやらメッセージはないから、コントロールの種類ごとにフォーカスを
持ってるかどうかでしか判断できないだろ。

904 :デフォルトの名無しさん:2009/02/03(火) 01:10:51
>>902
あまりプログラム板の住人を敵に回さないほうがいい……!
あまりプログラム板の住人を敵に回さないほうがいい……!
あまりプログラム板の住人を敵に回さないほうがいい……!
あまりプログラム板の住人を敵に回さないほうがいい……!
あまりプログラム板の住人を敵に回さないほうがいい……!

905 :デフォルトの名無しさん:2009/02/03(火) 01:11:46
>>900
本気そうで子えぇw

906 :デフォルトの名無しさん:2009/02/03(火) 01:13:38
こんな感じで要件の定義ができない人間がごろごろいるから困る

907 :デフォルトの名無しさん:2009/02/03(火) 01:14:30
Cursor プロパティが I ビームかどうかで判定できる?

908 :デフォルトの名無しさん:2009/02/03(火) 01:16:27
「編集中」(笑)とマウスカーソルの位置は関係ないだろ。

909 :デフォルトの名無しさん:2009/02/03(火) 01:17:28
いや、だから余り詳しく言えないんですってば・・・
だから、それを言わなくても済む様に
・フォームに含まれるGUIオブジェクト全てを列挙の仕方と
・その各々に対して入力中か否かの判定をする
って自分に最低限必要な部分だけ抜きだして聞いたのに

910 :デフォルトの名無しさん:2009/02/03(火) 01:18:48
入力中(笑)
求める物がそれなら既に出てるだろ

911 :デフォルトの名無しさん:2009/02/03(火) 01:19:24
わかる範囲で回答出てんじゃん。
バカはくだすれ行けよ・・・

912 :デフォルトの名無しさん:2009/02/03(火) 01:19:42
いいえ、あなたが言っているのは必要最低限未満なんですよ。

913 :デフォルトの名無しさん:2009/02/03(火) 01:25:22
散々定義定義って騒ぐから出来るのかと思ったら
結局出来ないし・・・

>>880で要件勝手に邪推して効かなきゃまずいだろ
とかアホかと・・・

>>881の言った通り質問された事だけに答えろよ
別に定義知らんでも「その判定はできません」で済んだ話だろ
馬鹿だなぁ

914 :デフォルトの名無しさん:2009/02/03(火) 01:27:44
定義によってはできるから。

定義が明確じゃないものをできるともできないとも言えん。

915 :デフォルトの名無しさん:2009/02/03(火) 01:29:25
おちょくってる人間は一人じゃないな。
偉そうなことをいってくる奴はおだてて使わなきゃ。

916 :デフォルトの名無しさん:2009/02/03(火) 04:03:45
よく分からんのだけど、TextBoxにフォーカスがあって入力中じゃない場合ってどんなとき?
普通に>>885で解決していそうな気がするけど

917 :デフォルトの名無しさん:2009/02/03(火) 08:03:20
「入力中」 言葉に振り回されてるね
プログラムで出来ることは、フォーカスの有り無しの判定しかない!って言われてるのに
まだ意味不明な要求を押し付けてくるひどい石頭だ。

918 :デフォルトの名無しさん:2009/02/03(火) 08:11:59
ContextMenuStripって、配置すると、フォームの上部に『ここに入力』って表示されて、
項目の入力ができますよね?
それが『ContextMenuStrip』しか表示されなくなって、編集できなくなってしまいました。
すでに配置した物も全てです。(Itemsのコレクションからは編集できます)
何が原因でしょうか?


919 :918:2009/02/03(火) 08:44:52
すいません、フォームがでかすぎて表示し切れてないだけでした。
スクロールバーが表示されない大きさにしたら表示されました。

920 :デフォルトの名無しさん:2009/02/03(火) 10:53:46
https://codezine.jp/a/article/aid/382.aspx
これをDLして実行してもLabelがひとつ貼ってあるだけなんだけど
なぜ?

921 :デフォルトの名無しさん:2009/02/03(火) 11:11:12
>>920
見るべきところはそこじゃないでしょ。
Label1つだけ貼ってあって、そこにマウスジェスチャからの入力が表示されるなら
デモとしては十分だと思うけど。

922 :デフォルトの名無しさん:2009/02/03(火) 11:15:27
バカスw

923 :デフォルトの名無しさん:2009/02/03(火) 11:41:51
なるほど
ここから機能付け足すのはどうやるんですか?
→なら右キーが押されるとか

924 :デフォルトの名無しさん:2009/02/03(火) 11:52:08
ググれば一発

925 :デフォルトの名無しさん:2009/02/03(火) 11:54:08
なんてぐぐるの

926 :デフォルトの名無しさん:2009/02/03(火) 12:30:33
>>923
→が出力されてるコードを書き換えて右キーが押されたのと同じ挙動になるようにする。
起動中のアプリに右キーを送る方法については>>924

927 :デフォルトの名無しさん:2009/02/03(火) 12:56:59
すごい疑問なんだけどC#って名前、なんで#なんかMSは使ったんだろう?
書式記号なんか名称に使うなよって思うんだけど。

928 :デフォルトの名無しさん:2009/02/03(火) 13:01:31
Cよりちょっと上って意味だろ
#は半音高い。


929 :デフォルトの名無しさん:2009/02/03(火) 13:09:56
♯ だっけ? #だっけ?

930 :デフォルトの名無しさん:2009/02/03(火) 13:10:27
++
++

931 :デフォルトの名無しさん:2009/02/03(火) 13:12:14
デリゲートってメソッドを参照するためのポインタって事はわかるんですが
たとえば、どんなケースの時にこれを使用しますか?
ちょっと使い方がわからない・・・

932 :デフォルトの名無しさん:2009/02/03(火) 13:13:30
イベント
高階関数

933 :デフォルトの名無しさん:2009/02/03(火) 13:17:34
>>926
なんてぐぐるの

934 :デフォルトの名無しさん:2009/02/03(火) 13:25:32
>>932
ありがとう!

935 :デフォルトの名無しさん:2009/02/03(火) 14:59:32
C#の勉強をしてます。C#を用いたWinアプリの作り方を、実践的に学ぼうとしています。そこで質問です。サンプルコードを多く見たいと思います。以下の条件に合致するコードを入手できるサイトをご紹介ください。

 ・C#で書かれたWinアプリで、
 ・C#のソースコード付き
 ・無料
 ・アプリの種類は問いません。GUI/CUIいずれも可
 ・コンパクトなアプリが良いです

http://q.hatena.ne.jp/1134005329にて紹介されていた「SDJEditor」はいい感じでしたが、規模として大きすぎました。初心者がざっと眺めるには、ちょっとつらいライン数です。これよりは小さいアプリが希望です。

C++系はサンプルコードが多く見つかりました。C#は少ないようです。プログラミングのチュートリアル的なページも見つけましたが、さほど多くありません。

以上、よろしくお願いします。

936 :デフォルトの名無しさん:2009/02/03(火) 15:02:57
CodePlexやCodeProjectで探せ

937 :デフォルトの名無しさん:2009/02/03(火) 15:07:11
例えばどんなのがありますか、ちょっと貼ってもらえませんか

938 :デフォルトの名無しさん:2009/02/03(火) 15:11:31
そういうの自分で探せない(探そうとしない)と、この先つらいよ?

939 :デフォルトの名無しさん:2009/02/03(火) 15:15:19
じゃあ雑誌とかでないですか、本屋いってくるので
英語はむりです

940 :デフォルトの名無しさん:2009/02/03(火) 15:17:15
CodePlexなんかほとんどC#でかなりの数があるから好きなの漁れ
ほとんど英語圏の人が書いたコードだけどどっちみちソースコードは英語だろ
一緒だ

941 :デフォルトの名無しさん:2009/02/03(火) 15:19:33
>>937
世の中にはいい質問と悪い質問があって君のは悪い質問かな
自分で探しましょう
結局はそれが自分のためです

942 :デフォルトの名無しさん:2009/02/03(火) 15:23:03
英語わからないもんはわからないです


943 :デフォルトの名無しさん:2009/02/03(火) 15:25:00
英語がわからないPGは一生三流

944 :デフォルトの名無しさん:2009/02/03(火) 15:26:43
じゃ日本語の雑誌でコード載ってるアプリないですか

945 :デフォルトの名無しさん:2009/02/03(火) 15:27:01
クラスの名前やメンバの名前に使われてる英語もわからないの?
英語のwebの情報読むにはそれくらいで十分なんだけどな
大変だね

946 :デフォルトの名無しさん:2009/02/03(火) 15:28:38
中学生なんです、読めないもんは読めないんです

947 :デフォルトの名無しさん:2009/02/03(火) 15:30:02
まあ中学生じゃこの程度の頭だよな。

948 :デフォルトの名無しさん:2009/02/03(火) 15:33:21
>>946
日経ソフトウエアを1年ぐらいROMったら?
ttp://itpro.nikkeibp.co.jp/article/MAG/20090121/323153/


949 :デフォルトの名無しさん:2009/02/03(火) 15:37:58
http://www.moongift.jp/2009/02/cooktimer/#more-13206
オープンソースってあるけどソースはどこにありますか

950 :デフォルトの名無しさん:2009/02/03(火) 15:45:28
ありました

951 :デフォルトの名無しさん:2009/02/03(火) 15:48:33
C++みたいだけどC#使えばそれこそ一瞬で作れるなこんなの

952 :デフォルトの名無しさん:2009/02/03(火) 15:58:50
VisualStudio(C#)買おうと
ttp://www.microsoft.com/japan/msdn/vstudio/products/vs08/compare.aspx
でバージョン調べてたんだけど印刷って機能がないけど標準じゃ帳票とか印刷は無理?
GrapeのActiveReports for .NETっていうのが人気みたいだけどえらい高いなぁ・・・

953 :デフォルトの名無しさん:2009/02/03(火) 16:20:30
>>952
どういった印刷をしたいかによるが、ちょろいものなら
PageSetupDialogからこつこつ書いてゆくことも出来る。

954 :デフォルトの名無しさん:2009/02/03(火) 16:22:10
印刷は「レポーティング機能の使用」のとこを見る


955 :デフォルトの名無しさん:2009/02/03(火) 16:24:24
>>952
Pro以上にはCrystal Reportsが付いてる。
そのページの「レポーティング機能の使用」にある「Crystal Reports」がこれ

956 :952:2009/02/03(火) 17:30:07
うほっ、Pro以上にはCrystal Reportsってのが記載ありますね!
うむうむ、バーコードは印字できるかな?・・・
ttp://www.antoine.st/ReportingTools.html
あちゃー、バーコード必須のソフトなんでやっぱツール探します。
どうもありがとう。

957 :デフォルトの名無しさん:2009/02/03(火) 19:58:51
>>951
作ってください、お願いします

958 :デフォルトの名無しさん:2009/02/03(火) 20:03:10
>>949
こんな糞情報よくサイトに載せる気になったな・・・

959 :デフォルトの名無しさん:2009/02/03(火) 20:14:10
MOONGIFT内にもC#とか.NETのカテゴリに幾つか紹介してあるじゃないか。
その辺見つけれないって、プログラミング以前の問題じゃないか?

960 :デフォルトの名無しさん:2009/02/03(火) 21:06:56
インターネットであることを抜きにしても相当マズいよな

961 :デフォルトの名無しさん:2009/02/03(火) 21:09:52
ここまで厳ついと料理のタイマーとしては使いたくないなw

962 :デフォルトの名無しさん:2009/02/03(火) 21:10:20
ちうか中学生なら自分で好き勝手コード書くレベルならいいんだけど
実践的なとかなると志はすばらしいけど、目標高すぎだからその前に
普通に学校の勉強がんばりなさい。順番ってものがあるので


963 :デフォルトの名無しさん:2009/02/03(火) 21:26:07
タイマーを作るにしたって三権分立や剣道の知識が求められるし。

964 :デフォルトの名無しさん:2009/02/03(火) 21:28:04
滑ってるよ

965 :デフォルトの名無しさん:2009/02/03(火) 21:29:49
ラーメンタイマーくらいみんな作ったことあるだろうけどさぁ
公開するとなりゃ、もそっと凝った感じで作るんじゃないか

966 :デフォルトの名無しさん:2009/02/03(火) 21:30:29
最強ラーメンタイマー決定戦でもやろうか

967 :デフォルトの名無しさん:2009/02/03(火) 21:39:29
MYベンディングマシンが最強

968 :デフォルトの名無しさん:2009/02/03(火) 21:47:12
冷蔵庫にマグネットで貼り付けてあるキッチンタイマー以上の利点が出せるかなあ

969 :デフォルトの名無しさん:2009/02/03(火) 21:52:28
>>968
吸盤式のが買って数日で落下→一発で故障して俺涙目
なので据え置き式をお勧めしたい

970 :デフォルトの名無しさん:2009/02/03(火) 21:52:46
飯時になると突然最前面に表示され、3分カウントして勝手に消えるやつでも作るか。

971 :デフォルトの名無しさん:2009/02/03(火) 21:55:52
毎食カップラーメンなのか・・・

972 :デフォルトの名無しさん:2009/02/03(火) 22:27:36
>>963
>>963
>>963
>>963
>>963
>>963
>>963

973 :デフォルトの名無しさん:2009/02/03(火) 22:28:41
三権分立は小学校だよな

974 :デフォルトの名無しさん:2009/02/03(火) 22:36:03
パンデクテン方式ぐらい知ってないと継承を理解するのは不可能だしな

975 :デフォルトの名無しさん:2009/02/03(火) 22:38:13
パントマイム方式なら分かるのですが。

976 :デフォルトの名無しさん:2009/02/03(火) 22:39:49
              ,. ‐'' ̄ "' -、   ,. ‐'' ̄ "'' -、
             /        ヽ/          ヽ
                l          l             l
            l         l          l
         ,. ‐'' ̄ "'' 、    ,,. --‐┴─-- 、     / ̄ "'' -、
       /      ,.-‐''"´           \ _/        ヽ
      l       /                   ヽ          l
       l     /  ●                l          l
      ヽ    l       (_人__ノ         ● ヽ         /  そんな事言われても
       ,,>-‐|   ´´     |   /       , , ,. ‐'' ̄ "' -、/      ウチ ポン・デ・ライオンやし
      /    l        ヽ_/           /          ゙ヽ
     l     ` 、               l            l
      l       ,. ‐'' ̄ "' -、   ,. ‐'' ̄ "'' -、            l
       l,     /         ヽ /        ヽ,         /
       ヽ、,,  l            l          l,,,___,,,/
         "'''l            l             l
              ヽ          /ヽ        /
             ヽ,___,,,/  ヽ,,___,,,/
                   /     |
                /       |

977 :デフォルトの名無しさん:2009/02/03(火) 22:41:49
ウンコがポンと出るライオンなわけか。

978 :デフォルトの名無しさん:2009/02/04(水) 01:49:01
面白いと思って書いたのならそういうことにしておこう

979 :デフォルトの名無しさん:2009/02/04(水) 04:21:37
同じ動作をする関数が入ったx86用とx64用のアンマネージドDLLが二つあって
DllImportして使おうとしてるんですけど、
C#プログラムがx86環境下で実行された時とx64環境下の時で
呼び出す関数を切り替えるにはどうすればいいですか?

//x86のときはこっちが呼ばれるようにしたい
[DllImport("Func32.dll")]
public extern static int Func(ulong x, ulong y, int z);

//x64のときはこっちが呼ばれるようにしたい
[DllImport("Func64.dll")]
public extern static int Func(ulong x, ulong y, int z);


980 :デフォルトの名無しさん:2009/02/04(水) 04:52:41
あ、LoadLibrary、GetProcAddress、Marshal.GetDelegateForFunctionPointerでできるのかな?
とすると自身が実行中の環境がx86かx64かの検出はどうすればいいんだろうか。

981 :デフォルトの名無しさん:2009/02/04(水) 05:02:16
うーん、IntPtr.Sizeで判定してもいいのかな。

982 :デフォルトの名無しさん:2009/02/04(水) 06:42:31
LoadLibraryかDLL名同じにする

983 :デフォルトの名無しさん:2009/02/04(水) 06:48:56
DLL 名が同じで、それぞれちゃんとした場所に置いてあれば、自動的に
ファイルリダイレクションが効くんかね?

984 :デフォルトの名無しさん:2009/02/04(水) 06:55:10
C#でのExcel操作について質問です。
特定のセルにマイナスの数値が入力されたら、そのセルのフォントカラーを赤にしたいのですが、
こういう処理をするにはどのようなコードを書けばよいのでしょうか?

985 :デフォルトの名無しさん:2009/02/04(水) 07:03:07
効くけどシステムディレクトリだからな あんまり配置したくなかろう
起動時にIntPtr.Sizeで判定してPATHに追加してやるという手もある

986 :デフォルトの名無しさん:2009/02/04(水) 07:10:42
>>984
VBA と一緒。マクロの記録してみ。

987 :デフォルトの名無しさん:2009/02/04(水) 08:05:51
>>985
確かマニフェスト書けば XP 以降ローカルに配置できな
かったっけ。SxS に配置するという手もあるけど。
今晩あたり実験してみるかな…。

が、まぁ x64 OS 使っている人ならわかると思うけど
現状なら配置を2重化したほうがいい。どっちでも
動かせるように。
わざわざ置き場所まで別れてるし。

988 :デフォルトの名無しさん:2009/02/04(水) 10:01:30
public static int Func( ulong x, ulong y, int z )
{
 if( IntPtr.Size == 4 )
 {
  return Func32( x, y, z );
 }
 else
 {
  return Func64( x, y, z );
 }
}
[DllImport("Func32.dll", EntryPoint ="Func" )]
private extern static int Func32(ulong x, ulong y, int z);
[DllImport("Func64.dll", EntryPoint ="Func" )]
private extern static int Func64(ulong x, ulong y, int z);

こんな感じならMSのライブラリもやってるね

989 :デフォルトの名無しさん:2009/02/04(水) 19:54:02
>984
普通は条件付き書式を使いそうだけど。


990 :デフォルトの名無しさん:2009/02/04(水) 22:17:04
プログラマにとって他人に知識を与えることは、
自分自身の存在意義の一つが無くなることだから、
そう簡単に知識を教えたくないってのが本心にあるんだろ

実際の創造物を合作であったり、披露すると素性がバレルから難しいしな。

991 :デフォルトの名無しさん:2009/02/04(水) 22:21:55
またキチガイが来ましたよ

992 :デフォルトの名無しさん:2009/02/04(水) 22:26:05
でも一理あるな

993 :デフォルトの名無しさん:2009/02/04(水) 22:38:41
教えてくんが逆ギレするための理屈にしか見えん
埋め

994 :デフォルトの名無しさん:2009/02/04(水) 22:45:45
どの条件を満たせば喜んで教えてくれるんだい?

995 :デフォルトの名無しさん:2009/02/04(水) 23:02:54
いきなり教えてクン発動かよw
教えてクン養成マニュアルでも読んでいっそプロを目指せ

996 :デフォルトの名無しさん:2009/02/04(水) 23:04:31
条件を聞いただけなのに教えて君扱いなのがイタイ

997 :デフォルトの名無しさん:2009/02/04(水) 23:05:35
>>995
お前が何知ってるっていうんだよw

998 :デフォルトの名無しさん:2009/02/04(水) 23:10:47
教えてくんでググれば分かる程度の条件を質問してくるから教えてくんなんだろ

999 :デフォルトの名無しさん:2009/02/04(水) 23:13:20
>984
書式に #,###;[赤]"-"#,### とでも設定すればいいんじゃないか?

1000 :デフォルトの名無しさん:2009/02/04(水) 23:17:24
_..                ,,.-'ヽ 
ヽ "゙ー-、、         / : :!
 i 、 :. ヽヽ_,,.....、,,,....._;/ ,;'   ;,.!
  i.,  ..;;;ヽ       ヾ ,,;_ , /
  ヾ_:::,:'           -,ノ
  ヾ;.   ,         , 、;, 
    ;;   (:::) , ... 、, (:::);:
    `;.       C)   ,; '   黙れ小僧!
    ,;'     '.、 -‐-ノ ,;'、
   ;'            ;:
    ;:            ';;



1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

244 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)