新スレぬるぽ
5 :
デフォルトの名無しさん:2008/08/23(土) 18:41:05
自分からテスト専門です、って宣言してる派遣テスターって何なの?
将来プログラマとかSEになりたい、とかならわかるけど。
向上心ないよね、頑固だし。
そういう派遣テスターって、仕様書は読めない、
テスト仕様書も作れない、テストプログラムも作れない
やれることは「テキトーにプログラムを触る」ことだけ。
俺は派遣プだけどさ、こういう派遣テスターがいると
派遣全体がバカにされるんだよ。
テスト専門派遣なんて氏んで欲しいよ、まったく。
今日も正社員の人が派遣テスターに仕様書を読んで
テスト仕様書を作ってください、って説教してたよ。
その派遣は頑固に「何故、仕様書が必要なんですか?」って
反論してたから、きっとテスト専門派遣テスターだな。
仕様書も読まず、テスト仕様書も作らず、ただテキトーに
プログラム触るだけで給料もらおうなんて頭おかしいんじゃねーの?
あ〜あ、あの派遣テスターが3ヵ月後に切られるまで、
仕様書も読まねーでテキトーにテストしたバグ票がまわってくんのかよ。
そんな糞なもん、読んで処理する派遣プの身にもなってくれよ。
うわ〜、しかもそいつが切られる3ヵ月以内に中間納品あるじゃねーか!
テスト仕様書もなしにテキトーにテストして納品か。
中間納品後にソッコウクレームでデスマ必至だな。俺の休みも返上かよ。
派遣専門テスターさんよ、少しは向上心持てよ!
頑固な性格直して仕様書読めよ!テスト仕様書作れよ!
>>5 このコピペ見飽きた。
張ってるヤシって何を主張したいの?
バカなの?
IEnumerable<IGrouping<TKey,TValue>>において、
キーが重複するグループが存在する場合、グループをまとめるには
どうすればよいでしょうか?
{{A:{1,2,3}, B:{1,2}, B:{3}} → {A:(1,2,3), B:(1,2,3)}としたいです。
そうやって相手をしてくれる人を待ってるんだよ
9 :
7:2008/08/23(土) 19:46:09
バカなことを書きました。自己解決しました。
眠くて頭おかしくなってたみたいです。
>>6 最近、素人派遣テスターが増えてるのと関係あるのかもね
増えてる理由は知らんが
11 :
7:2008/08/23(土) 20:44:47
一応解決策を貼っておきます。これって非効率な気がするんですが、
もっとまともな方法はないでしょうか?
IEnumerable<IGrouping<TKey,TValue>> groups;
groups = groups.SelectMany(
g => g.Select(
v => new KeyValuePair<TKey, TValue>(g.Key, v))).GroupBy(
kvp => kvp.Key, kvp => kvp.Value));
前スレ
>>996 ユーザーにプログラムを配布して実行させる場合、そのユーザーが
鍵にアクセスできなければならない。OSで保護されているのは外からの
攻撃に対してであって、ユーザーが悪意を持っていた場合は防げない。
前スレのようなデコンパイルして中身をみちゃう人に対してはDPAPIは
無力ではないのか
13 :
7:2008/08/23(土) 20:55:42
>>12 デコンパイルでソース見るってよりメモリをみなきゃ無理なような。
俺の今日のべんきょー成果によると、DPAPIならソースみても
ProtectedData.Protect((byte[])pass, null,DataProtectionScope.CurrentUser)
とかでしょ?
ちなみに今回の元ネタのはソース覗くとガチで
string encryptedPass = Tools.Encrypt(rawPass, "asdfgh");
↑こんな感じでした
それはそうだ。
それはどんな技術使っても基本的に同じだよな。
最初に出てきたパスワードとかの場合、普通は
ぱっと見ても分からない、他人(リグインできる本人以外)には解読できない、
そのデータが流出しても解読できない
この辺りだからな。
>>14は
>>12に対して。
>>13 >俺の今日のべんきょー成果によると、DPAPIならソースみても
>ProtectedData.Protect((byte[])pass, null,DataProtectionScope.CurrentUser)
>とかでしょ?
それで十分だろ(本人ならそれで解読可能)
おっと、
>>13の言いたいことをちょっと勘違いしてた気がする。
ソースを見られてもそれで何かが分かるわけじゃないってことだな。
DPAPIは目的上それで十分(本人は解読できても)。
17 :
7:2008/08/23(土) 21:02:11
>>15 え?どうやって解読するんでしょうか?DPAPIを呼ぶアプリによって秘密鍵
がかわるのだから、同じコードを別のアセンブリで実行しても復号失敗なんでは?
多分
>>12はそのアプリ自体が隠したい情報をどうやって隠すかって話をしてる。
それは今回のパスワードを保存する話とは全く異なる。
ライセンスキーを暗号化するのにこうやってた、とかならそういう話だが。
>>17 >>16 >DPAPIを呼ぶアプリによって秘密鍵がかわるのだから
それは違うっていうか同一プロセスのみってのも別にあるが、ProtectedDataはちがう。
ついでに、同一プロセスのみってのは本当に同一プロセスのみで、再起動したらもう復元できない。
同一アプリ(アセンブリ)のみ復号可能なんてのは、ない。
同一アセンブリのみ復号可能っていいな。できないもんかな。
>>19>>20 すみません。壮絶にボケてました。ユーザーアカウントでの防護ですね。
string型から指定したバイト数だけ切り出すうまいやりかたないですかね
たとえば "ああああああああ" をShift_JISで5バイト以内で切り出したりしたいのですが、
string s = "ああああああああ";
int i = 0
byte[] bytes;
do
{
bytes = Encoding.GetEncoding("shift-jis").GetBytes(s.ToCharArray(0, s.Length - i));
i++;
} while (bytes.Length < 5);
のような効率の悪い方法しか思いつきません…
>>23 スタートを2文字(5 % 2)から増やすとか、
5文字から減らしてゆくとか多少の改善方法はあるが基本はその方法で正解だろう。
荒っぽい方法だと、
charに分解して16ビット中上位8ビットが0ならばシングルバイトとみなす。
Shift_JISへの変換は1回にして先頭バイトから漢字1バイト目判定を使って5バイトが何文字か調べる。
>>23 char二つで一文字というのもあるので、StringInfoを使って切り出したほうがいいかもしれない。
Shift_JISに変換できない文字が混じってるパタンは考えなくてもいいじゃね
どうしても効率気になるんなら Encoding じゃなく Encoder 直接使え
一括で全部sjisに変換して、5バイト目が全角の一バイト目だったら前から4バイトとって、それ以外だったら5バイト取るって
方法でもいいかもしれない。
全角の1バイト目かどうかの判定はググればすぐ見つかるだろうし。
まあ、でも、文字コードかんけいはゴチャゴチャしてるんで、自分で書かないで、標準のライブラリを使ったほうが安心だけど。
>>28 シフトJIS1バイト目で使われるコードは2バイト目に現れることもある。
判定は文字列の先頭からたどっていかないと誤作動する。
表\示ですねわかります
>>30 気持ち悪い奴。精神分析の対象としか思えない。
こういう奴ってひょっとして自分のアイデンティティがリアルで「2チャンネラ」
だったりするのかね。
何が面白いのか常人には理解不能な「2ch的言い回し」を爺の繰言よろしく
オウム返しすれば「これで俺もいっぱしの2チャンネラだぜ」なんて嬉しくなっちゃう
幸せな奴なんかね。
>>31 気持ち悪い奴。精神分析の対象としか思えない。
こういう奴ってひょっとして自分のアイデンティティがリアルで「2チャンネラ」
だったりするのかね。
何が面白いのか常人には理解不能な「2ch的言い回し」を爺の繰言よろしく
オウム返しすれば「これで俺もいっぱしの2チャンネラだぜ」なんて嬉しくなっちゃう
幸せな奴なんかね。
33 :
デフォルトの名無しさん:2008/08/25(月) 00:44:07
わかるって言うてんから、エスパーちゃう?
伊東ですね。わかります。
いや、つまんないから。
そもそも面白くする必要ねーし
いや、つまんないから。
・・・はやくたてろ・・・うるさい・・・
おれ・・・もうめるじかん・・・うるさい・・・
そんあこといって・・・そのままこぴーする・・・わけがまい・・・
パンツがこだわりじゃねーんすよ
パンツからもれることがまったく問題ないすわ
マッカーサーウンコのニュータイプだけ・・・もれる・・・
ウンコはスレ違いですわ・・・おまえ・・・
個人情報の漏洩ですわ・・・もれてるの・・・もう・・・
まっきいろ・・・ぱんつ・・・ちゃいろ・・・
まだ、クローン人間が実践配備されてないとしても、将来的には危険なんす
Do You Understand?
マッカーサーパンツはいてねーす大丈夫なんて思ってねーでしょうな
はいてても・・・もれるんだから・・・どうせ・・・
あっしだってパンツはかないと大丈夫と思いたいが、しかし、
はかない・・・でも・・・うんこはもれたらおちる・・・おれ・・・もらした・・・わかる
せんぱいだって・・・ぱんつのなかにもらした・・・おれはゆかにもらした・・・
ちがいなんて・・・それぐらい・・・
パンツをはかなければ、ズボンがチンコと密着する
ウンコも漏洩するかがNothingですわ
つまり、今度はズボンからDNAが漏洩するんじゃねーすか
もうニュータイプがどうこうのじゃねーす、みんなですわ
パンツは洗わないと捨てるなってのが自己防衛すわ
ウンコは論点があまりにオールドタイプですのですれ違いでFAす
学歴も大切ですわ、しかしここは2CHなんすわ
学歴より・・・もらない・・・
つまり、学歴がない人間が光を当たるようにしてやる必要がありやす
今度こそきちんとニュータイプが議論しあいやしょう!
http://changi.2ch.net/test/read.cgi/x3/1211810675/l50
いや、つまんないから。
40 :
デフォルトの名無しさん:2008/08/25(月) 01:54:16
で、そのウンチはどれほどクサイんだ?
いや、つまんないから。
C#クックブック第3版買いまちた。
43 :
デフォルトの名無しさん:2008/08/25(月) 22:00:43
ウンチだって臭くないのもあるわけでして・・・
ようこそここへ、クッククック
なんというクソスレ
俺の話は無視かよ
いや、つまんないから。
48 :
デフォルトの名無しさん:2008/08/26(火) 00:18:13
ウンチブック第3番を買ったの?
いや、つまんないから。
便が詰まって困ってるんです
集合血といいクックブックといい自分が買った洋書はいつも翻訳されます(´・ω・`)
いや、つまんないから。
54 :
デフォルトの名無しさん:2008/08/26(火) 15:25:07
>>42 自分も今日あたり家に着いてるはず
他とまとめて通販しちまった
CUT SYSTEM のC#システムプログラミングとかいうの、
ちょうど俺の知識が抜けてるとこがてんこ盛りにかかれてて
結構理解しやすそうだったから、買いたいんだけど、5800¥だよ。。
なんで、プログラムの本ってこんなに高いんだよ。
家賃払って飯食ったら金なんて余らんよ。普通。
読みたい専門書を色々買ってると、毎月の本代が万単位になって俺涙目。
58 :
デフォルトの名無しさん:2008/08/26(火) 17:17:59
>>42 旧版 古本で探せば 安く買えるかも
#自分は両方積んでるw
>>55 これ持ってるよ。
ほかの本2冊我慢しても買うべき。
お勧め。
しかし高いね〜。ガソリンが10円くらい下げてくれると助かる。
書けた…スレッド整理されてうまく繋がってない
スレがあるとか?何か良くわからん
何の騒ぎか知らんが、板別規制でもされてるんじゃないか?
規制情報でも見て来い。
あと、そのtest.txtって何だよwww
>>62 dannmaku-po. I'll go to operate-board.
thx
64 :
デフォルトの名無しさん:2008/08/26(火) 18:24:30
いや。キモイからw
弾幕スクリプト・・ってC#関係ねぇw
なんでBindingSourceにはCurrentChanging(object sender, CancelEventArgs e)がないんじゃー!!!
ASP.NETの3.5で、ListViewのEditコマンドを使用するときに、
クリックしたレコードにカラム分のテキストボックスを表示するのが一般的ですが、
動的にいくつかのテキストボックスをReadOnlyにして表示したいのです。
ItemEditingのメソッド内で、FindControlを使用して該当テキストボックスを取得、
プロパティを読み取り専用に変更しようと思ったのですが、
どうやらFindControlで更新用テキストボックスが取得できないようです。
ListViewの<EditItemTemplate>以下で定義しているコントロールは、
ItemEditingイベントメソッドで動的に変更できないモノなのでしょうか‥‥?
69 :
デフォルトの名無しさん:2008/08/27(水) 22:13:12
VS2005のC#を使っています。
DataGridViewを使って50000行×10列の一覧を表示したいと思っており
ます。それぞれのCellには10文字程度でString値が入ります。
必要なデータをディスクから読み出し、DataGridViewRowを50000用意し、
DataGridViewにそれらのRowを入れて、実現しました。
結果、表示には5秒程度(XP, Core2 Duo 約2.3GHz)かかり、これはまだ
我慢できるのですが、ColumnHeaderを押すことによるソートが
10分ほどかかります。
おそらくデータの内容などにもよると思いますが、上記のデータリスト
をGUIに表示する場合、どのような方法がベターなのでしょうか?
教えていただけたら幸いです。
仮想モード(VirtualMode)を使う。
実装方法に関しては先例が幾つもあるのでググレ
71 :
69:2008/08/27(水) 22:26:18
>70
ありがとうございます。仮想モードですね。初めてその言葉を
聞きました。調べてみます。
72 :
デフォルトの名無しさん:2008/08/27(水) 22:46:23
約2.3GHzがネック
てーかDGV使わないでソートしたらどれくらいかかるんだ?
VisualStuidoのエクスプローラやプロパティウインドウの
インタフェースみたいに
フォームのの任意の場所にドッキングできたり
押しピンボタンを備えたコントロールって
あらかじめ用意されていますでしょうか?
あるならどうやって使えばいいのか
ヒントだけでも教えていただけませんでしょうか
ないよ
いずれ追加されるかもな。
今のMFCはあるしな。
やっぱないですか.
ありがとうです
コレクションの中身に検索でアクセスしたい時と、
入れた時の順番に全部をListとして取り出したい時の
2つの出力が可能なデータ構造が欲しいのです。
ということで、Dictionaryを使った場合には、
入れるときに工夫すれば、前者はKeyでアクセスできますよね。
問題は後者なんですが、Dictionary.Valuesで返ってくる値は、
Listみたいに入れた時の順序が保障されているのでしょうか?
SortedDictionaryでなくて?
>>80 ソートされるから入れた順にならないな
KeyedCollection/KeyedByTypeCollectionとか
こんなの?
List<Dictionary<string, string>>
それは・・・w
List<ClassA>はAddした順番が保持されますよね?
Dictionary<string, ClassA>へ同じ順番でAddした時、
List<ClassA> lst = dic.Values;
として得られるlstの内容は1行目のList<ClassA>と同じ内容なのでしょうか?
ちょっと試してみたところ、同じっぽいのですが‥‥
Dictionaryのなかみはハッシュテーブルだから構造上そんなことは保証できない。
順番に関してはMSDNの解説読め
OrderedDictionaryとかそれっぽいけど
だって、MSDN読んだら、Valuesの順番はKeysの順番と同じで、
Keysの順番はValuesの順番と同じだって書いてあるし‥‥。
>>87 どうも有り難うございます。そんなのがあったとは‥‥
ジェネリックじゃないですけれど、それっぽいですね。
そして、それがわざわざあるということは、
Dictionary<>では保障されないっぽいですね‥‥。
81ガン無視?
>>90 すみません、今、ググってみました。
どうも有り難うございます。
えぇ?なんか違うような‥‥。
最初の質問が悪かったですよね。
面白いものを教えてもらって、ありがとうございます。
81カワユス
ハッシュテーブルも知らずにプログラムかけているとはすごいな
自分が何してるのかほとんどわからん状態だろうに
趣味でやる分には全く問題ないけど。
フリーソフトとか作るんじゃねーぞ
使う側が迷惑する
HASHテーブルが云々で迷惑すかw
そういう貴方こそプログラムを書くだけじゃなくて
ソフトちゃんと「創れて」ますか?
言語に振り回されてコードでオナニー、できたものは
処理はすごいが実装いまいちとかよくあるはなし。
フリーソフトをいまどき作って公開するなんてマゾにしか思えん。
99 :
デフォルトの名無しさん:2008/08/29(金) 23:21:51
フリーじゃないなら、金取るの?
100 :
デフォルトの名無しさん:2008/08/29(金) 23:22:46
101 :
デフォルトの名無しさん:2008/08/29(金) 23:31:17
C#で作られたソフトを使いたいって人いなくね?
102 :
デフォルトの名無しさん:2008/08/29(金) 23:37:42
そんな事を考えながらソフト使う馬鹿がどこにいる
お前くらいか?
いや、それは偏見。
.NETだから嫌とかいうやついるが、あれはレジストリ触られるから嫌とかと同じレベルのアレルギーだろ。
105 :
デフォルトの名無しさん:2008/08/29(金) 23:40:10
.NETで書かれた、CGグラフィックソフトがあるか?
106 :
デフォルトの名無しさん:2008/08/29(金) 23:42:18
PAINT.NETって何でつくられてるんだろう
107 :
デフォルトの名無しさん:2008/08/29(金) 23:45:08
.NET Frameworkが必要だから.NETで作ってるんだろうな
いまだにレジストリいやがるやつがいるな。
109 :
デフォルトの名無しさん:2008/08/29(金) 23:47:32
C#で作ったとは限らないが?
110 :
デフォルトの名無しさん:2008/08/29(金) 23:49:17
どうしてそんなつっこみになるんだ
111 :
デフォルトの名無しさん:2008/08/29(金) 23:49:27
金取るなら自分で作るよ。お前ごときが作るのなんてバグも多いしそんな糞はいらんな。
112 :
デフォルトの名無しさん:2008/08/29(金) 23:50:03
PAINT.NETを使ったるひとがいるか?
地味に使ってるよ俺は
114 :
デフォルトの名無しさん:2008/08/29(金) 23:50:52
使ってるが、なにか?
俺使ったる(?)んだけど
C#で自作プラグインとか書けて重宝してる。
116 :
デフォルトの名無しさん:2008/08/30(土) 00:05:30
何が聞きたかったんだろう
117 :
デフォルトの名無しさん:2008/08/30(土) 00:17:17
それならカッコつけてCの系列じゃなくて、VB(とかJScript)でサクッと作っちゃえばいいんじゃんか!
118 :
デフォルトの名無しさん:2008/08/30(土) 00:19:30
なにを?
Cの系列って何のこと?
>>117みたいなレスを見ると普及し始めてるのかなぁと思う。
120 :
デフォルトの名無しさん:2008/08/30(土) 00:31:02
Cの系列といえば、次はDじゃん!D言語なんてかっちょいい響きじゃんか!
ぶっちゃけVBとC#の差って如何程も無いんじゃないかと思ってるんだがどうなんだ?
>>117 どちらかというとCよりJavaの血統で、
もろjavascript臭くなってきてるやん>C#
123 :
デフォルトの名無しさん:2008/08/30(土) 00:41:54
Reflector使えばVBだのC#だの言うのが馬鹿らしくなるよ
VB.NETのほうが便利なクラスがあったり、
インテリセンスが優秀(候補リストをグループ化できるぽい)だったりで
ときたま羨ましくなる。
>>122 ecmascriptはecmascriptでジェネリックとか追加されててホント臭い言語になりつつあるよ。
ActionScript 3.0 なんかパッと見 Java か C# かって感じだもんね
あれにはげんなりした
みんな、それでもC#を使う理由は何?
やっぱ俺は開発環境の最強っぷりだと思う。たぶんそれに関しては敵なし。
>>127 VB はなんか感覚的にあわん。仕事でやれといわれればやるけどさ…
ネイティブ(C, C++)相手の比較なら「イマドキ」の環境、言語で
生産性、保守性とかが別次元の癖に相互運用機能がやばすぎて
ほとんどなんでも出来る点だろうよ。
Web なサービスさくっとみたいな上位な話と OS のコアな機能ゴリゴリ
みたいな低レベル処理とかが同居とかなかなかありえんよまじで
131 :
デフォルトの名無しさん:2008/08/30(土) 02:06:58
Excelのセルに
=hogehoge()
として、C#を呼び出したく思い
Excelアドインを作ろうとしていますが、参考になるhPありますか?
132 :
デフォルトの名無しさん:2008/08/30(土) 02:16:51
そのゴリゴリとサクットは逆じゃないの?
Webはhtmlとかjspとかxmlとかjsとかゴリゴリじゃんw
VB.netでも良いけどなんとなくC#の方が自己満足感があるというか
なんかかっこいいから。
C#で作ったコンソールアプリ(実行ファイル)のクラスのメソッドを
別C#プログラムから呼び出したいんですけど方法ありますでしょうか?
135 :
デフォルトの名無しさん:2008/08/30(土) 08:27:09
CreateProcess
136 :
134:2008/08/30(土) 08:46:01
実行ファイルの中の特定のクラスの特定のメソッドなんですけど、
CreateProcessって実行ファイルを起動するだけですよね?
普通に参照して普通に呼ぶだけ
138 :
デフォルトの名無しさん:2008/08/30(土) 11:53:50
>>121 自分もそう思う .NET Framework系のPGの資料が多いから触ってる感じ>C#
構文的にはC#の方が好きだけど(ちょっとだけJAVAなんで、なじみやすい)
ただ 親クラスのコンストラクターの呼び方が・嫌・かも
ExcelたたくのはVBの方が楽だよね
139 :
デフォルトの名無しさん:2008/08/30(土) 12:54:21
BackgroundWorkerで別スレッドを立ち上げて、
そこでForm.Refresh() や StatusBar.Visible を変更したりすると、
InvalidOperationException が発生するんですが、
別スレッドからコントロールを操作するにはどうすればいいんでしょうか?
InvokeRequired で調べろ
141 :
デフォルトの名無しさん:2008/08/30(土) 13:29:12
>>142 おぉ!ありがとうございます。目的のAPIみたいなんで試してみます!
いやリフレクション使わなくてもそのexeをdllと同じように参照設定に入れれば使えるよ
型のアクセスレベルをpublicにしないといけないので注意
リモーティングの話しかと思ったよ
>>144 publicにしたら出来ました!ありがとう!
ただ自分が探しいたのはリフレクション(まだ使用してないですけど)っぽいので、こっちを使用してみたいと思います。
ありがとうございました!
以前にPart45をIEで保存したのですが、
その時保存したフォルダに作成されるC#, C♯, C#相談室 Part45.files
フォルダにグロ画像が入っていました。
Part45の368にグロ画像のリンクがあり、
ファイル名が同じなので恐らくこの画像だと思うのですが、
この画像を表示して保存した覚えはありません。
IEでスレを保存すると、リンク先の画像も保存されてしまうのでしょうか。
C#と全く関係ないな。
>>148 ごめんなさい。私もそう思ったのですが、あまりの恐怖でつい。
これって普通のことなのでしょうか。
板違いです
あまりの恐怖に吹いた
リンク先の画像を保存するくらいはやるような気がするが
まあ板違いだな
>>149 IEは普通リンク先の画像までは保存しない
オカルト的なことは信じたくないがその画像が入っていたことは事実だし
何か特別な怨念の力が働いたのかもしれない
これからの生活には気をつけたほうがいい
ぜんぜん関係ないときにそのグロ画像が突然現れたりするかもしれない
お気に入りに追加で、オフラインで使用するを選択してリンク先を保存したんじゃないの?
ローカルに保存する事なんて滅多にないから忘れてたけど、そういやそんな機能もあったな。
2chのアンカーは直リンクじゃないと思うんだけど。
っていうか普通mhtで保存しないの?
Outlook Expressをアンインストールでもしてなきゃmhtでいいと思うんだけど。
Vistaからはmhtがデフォになったようだし。
156 :
147:2008/09/01(月) 02:54:55
完全に板違い、すれ違いでした。
スルーして下さい。申し訳ありません。
スレはあってるけどなw
あってないよ。
C#, C♯, C#相談室 というスレがあってるw
DevComponentsのDotNetBarの、
ローカライズの仕方教えてください><
非常に英語が苦手なんです。。。
ぐーれかす
ローカライズの仕方わかりました。
コンパイルが通らない恐怖
どこかで誰かが捕捉してない例外を投げちゃう恐怖
どこかで誰かが例外を握りつぶしちゃうよりはましな件
いわゆるウィザード画面を作ってるんですが、画面切り替え方法で迷ってます。
panel固定で、中のコントロールだけremove-newするか、
毎回panelごとremove-newするか、
どっちが良いのでしょうか?
自分的には、後者のほうが楽なんですが、ゴミ増えたりしますか?
タブコントロール貼り付けろ
タブとか枠とかが見えてるのがマズイんですよ、ビジュアル的に。
枠もタブも消せるだろうがアホ
169 :
デフォルトの名無しさん:2008/09/02(火) 10:08:20
昼休みに外に出たら、ペットの子豚が飼い主と道路をトコトコ散歩していると、なんか生意気だから蹴飛ばしたくなるよな
消し方分からんからいっとるんじゃかす
去ねゴミ
172 :
デフォルトの名無しさん:2008/09/02(火) 10:50:22
VBだと簡単なのに…なんでカッコつけたがるんだろう……ダサw
そりゃC#はC系統の言語だからです。
Lispよりは括弧少ないので許してください。
カッコあったほうが絶対便利だよな?
VBは継続行のアンダーバーが見苦しい。
カスタム属性を指定するとたいてい継続になるからあれだ。
あとはC#と同等の機能を実装するために新キーワードやら特殊メソッドやらが氾濫している印象だな。
どんどん冗長になっていく。あれは気持ち悪い
誰に話しかけてんだ?
おまえの方が気持ち悪いんだけどw
>>176 VB6の頃ならVBは簡単さが売りだったわけだけど、今はC#と大差ないよな
パフォーマンスと引き換えにシンプル簡単路線で行けばいいのに、
無理してジェネリックとか導入するからどっちつかずのキモイ言語になっちゃうんだよ
LINQ向けキーワードの追加っぷりだけはちょっと魅力的。
文字列から事前定義のクラスのプロパティやメソッドを呼び出すことは可能でしょうか?
例えば、string str1 = "Address"; string str2 = "Hokkaido"; だった場合に、
ClassA.Address = str2というように保存したいのです。
str1の内容で分岐して代入するようなコードを書いておけば良いのですが、
あまりにも数が多いと萎えてしまいます。
クラス名の文字列があればCreateInstance()でクラスのインスタンスが作れるのと同じ感じで、
プロパティやメソッドにも同じようなことはできないのでしょうか?
文字列から事前定義のクラスのプロパティやメソッドを呼び出すことは可能でしょうか?
例えば、string str1 = "Address"; string str2 = "Hokkaido"; だった場合に、
ClassA.Address = str2というように保存したいのです。
str1の内容で分岐して代入するようなコードを書いておけば良いのですが、
あまりにも数が多いと萎えてしまいます。
クラス名の文字列があればCreateInstance()でクラスのインスタンスが作れるのと同じ感じで、
プロパティやメソッドにも同じようなことはできないのでしょうか?
書き込みに失敗したってエラーが出たのにも関わらず、2連投になってしまいました。
どうもすみません。
Dictionaryでいいじゃん
なるほど‥‥
ClassAというクラスが、たくさんのパブリックフィールドを持っている形
なのですがClassA自体がDictionaryで書かれていれば確かに‥‥。
ClassAにプロパティやメソッドを追加する程度の変更は出来る気がするのですが、
ClassAをDictionaryにしてしまうと、他のプログラムが動かなくなってしまいます‥‥
いやでも、ClassAの方の内部保持をDictionaryにして、
既存部分のためのプロパティで、ラップして対応しておけば良いのですよね。
それが良い気がしてきましたー。
どうも有り難うございます。
PropertyInfo.SetValue()でできる
詳しくはWebで
そんな瑣末なことにリフレクション使うなんてやめなさい
文字列でメンバーにアクセスしたいって人時々いるけど(以前はVBスレで多かった)
いまだになんでそんなことがしたいのかよく理解できないものがある。
javaScript出身のプログラマ(そんな人いるのか?)にありがちな発想って説もあるようだけど、
普通郷に入れば郷に従うよなあ。。
不用意にリファクタリングとかすると大変なことになりそうだな……
>>186 どうも有り難うございます。さっそく調べてみます。
>>188 ASP.NETのGridViewとかListViewとか、全要素にプロパティが用意された
データアクセスレイヤークラスをやりとりするように設計されているから、
DataSetクラスとか、自前で新しいクラスを作ると、プロパティだらけのクラスで
橋渡ししなくちゃならんことになるのです。
XMLを隠ぺいしたシリアライザブルなクラスでも、全要素にパブリックなプロパティが
必要になるし‥‥
部分的にやりたくなることは結構あると思うけどな。
C#というか.net frameworkでFFTWを簡単に扱うためのクラスとかありませんか。
eventなんだけど、複数スレッドからイベントハンドラが登録される可能性があるときは
add/removeを自分で書かいてlockで保護しないとダメ?
駄目ではない。
できあいのやつはちゃんとスレッドセーフになってるよ
196 じゃないがコンパイラの生成コードは add に某属性ついててスレッドセーフぽ
198 :
デフォルトの名無しさん:2008/09/03(水) 14:59:02
>>188 Excelで出力するとき 日付、col位置のhash作ると
DBからひらった日付毎の合計を書き込むとき楽でしょ?
WPFのマルチスレッドでUIスレッドへの通知で、下記のようにラムダ式で書くとき
ラムダ式のままじゃ渡せないんでデリゲートを宣言してるんだけど
もっと簡単な書き方ないのかな?
private delegate void HogeFunc(int param);
this.Dispatcher.BeginInvoke(new HogeFunc((param) => {〜}));
private void BeginInvoke(Func<int> param) {
this.Dispatcher.BeginInvoke(param);
}
this.BeginInvoke(param => { ... });
あ、Actionだった。
もう一歩進めると
private void BeginInvoke<T>(Action<T> arg) {
this.Dispatcher.BeginInvoke(arg);
}
this.BeginInvoke(param => { ... }, 6);
またミス
private void BeginInvoke<T>(Action<T> action, T arg) {
this.Dispatcher.BeginInvoke(action, arg);
}
WPF使ったことないので間違ってるかもしれんが
リファレンスみたところ引数が合ってないみたいだけど?
Dispatcher.BeginInvoke (DispatcherPriority, Delegate)
Dispatcher.BeginInvoke (DispatcherPriority, Delegate, Object)
Dispatcher.BeginInvoke (DispatcherPriority, Delegate, Object, Object[])
DispatcherPriority があるのはWPF、ないのはsilverlight2 。なぜか非互換。
silverlight2や両方で互換を取りたい場合はbackgroundworkerが推奨されている。
WPFアプリケーションでプロジェクト作って、インテリセンス見てみると
Dispatcher.BeginInvoke (Delegate, Object[])
Dispatcher.BeginInvoke (Delegate, DispatcherPriority, Object[])
なんだけど、これはどっちなんだ?
207 :
デフォルトの名無しさん:2008/09/04(木) 18:48:33
SP1でメンバーが追加になってた。silverlightとの互換がらみかも。
July 2008 Added topic for new member. SP1 feature change.
BeginInvoke(Delegate, object[])
BeginInvoke(Delegate, DispatcherPriority, object[])
動作が軽いHTMLDOMありませんか?
HtmlDocumentは重すぎて使い物になりません……
ボタンコントロールに、テキストと画像を設定したときに、
ボタンをクリックすると、ボタンがすこし凹み込みんで、そのときにテキストは
すこし凹み込むのですが、画像の方は凹まずに止まったままです。
これを画像も一緒に動かすにはどうするのがベストなのでしょうか?
>>210 WPFで望み通りの動作を自前で実装するのがベスト。
WinFormでやるならオーナードローかな?かなり面倒くさそうだが。
212 :
210:2008/09/05(金) 16:51:40
>>211 WPFかオーナードローですか。そのキーワードで調べてみます
ありがとうございましたー
C#でスムーススクロールってどうしたら出来ますか
そ〜とマウスを動かす
なるほど
ありがとうございました
SQLCEとDatasetを使ってプログラミングをしています。
そこで、Datasetの更新をDBにも反映しようと思い、以下のようなコードを書いたのですが、プログラム終了後にDBを確認しても更新が反映されていませんでした。
private void button1_Click(object sender, RoutedEventArgs e)
{
DatabaseDataSet.CategoriesDataTable categoriesTable = new DatabaseDataSet.CategoriesDataTable();
DatabaseDataSetTableAdapters.CategoriesTableAdapter adapter = new SQLCompactTest.DatabaseDataSetTableAdapters.CategoriesTableAdapter();
adapter.Fill(categoriesTable);
DatabaseDataSet.CategoriesRow newRow = categoriesTable.NewCategoriesRow();
newRow.Category_ID = categoriesTable.Count + 1;
newRow.Category_Name = String.Format("TEST {0}",categoriesTable.Count + 1);
newRow.Description = "Test Description";
categoriesTable.AddCategoriesRow(newRow);
adapter.Update(categoriesTable);
ListBox2.DataContext = categoriesTable;
}
昨日からいろいろと試行錯誤しているのですが、イマイチ原因がよくわかりません。
よろしくお願いします。
218 :
216:2008/09/08(月) 16:22:47
>>217 これも試してみたのですが、AcceptChangesはDatasetの更新を行うだけで、DBの更新は行ってくれないと認識しています。
はぁ?
コミットとかトランザクションの意味はわかる?
そんなの分かってるわ。というか、おまえは分かってんのかよww
よくわからんけどCategoriesTableAdapterがちゃんと機能するか確認したほうが良さそうね
実は違うDB見てたとかビルドで上書きしてたとか
AcceptChangesなんかやったら更新されなくなるぞw
223 :
216:2008/09/08(月) 17:59:11
>>221 ありがとうございます。
一度確認してみようと思います。
>>222 実は、一度実行して普通に終了して、再度実行するとDBには変更(この場合は挿入)が追加されているように見えて、ちゃんとテーブルにも表示されます。
しかしながら、サーバーエクスプローラで実際にデータベースのテーブル内の内容を見に行ったりした場合には、追加された項目などは無くなってしまいます。
ビルドで上書きといったことは無いと思うのですが、なぜこのような挙動になるのかわかりません…
AcceptChangesについては、DatasetとDBについて元との差分がわからなくなり、Updateが効かなくなるということは理解しています。
ロールバックしたんだね。
どっかで例外無視してないか?
WebBrowserコントロールで Navigate() を呼んだときの
HTTP通信でやり取りされたリクエストヘッダとレスポンスヘッダを
プログラムから取得することはできますでしょうか?
どのみち全部はそのままじゃ無理だな
ローカルプロクシ通したりせんと
サーバエクスプローラ→プロジェクトフォルダのDBファイル
アプリケーション→ビルド先のDBファイル
とでもなってんじゃないの?
ってことを言ったんだが、そんなことないか?
229 :
216:2008/09/08(月) 19:20:07
>>224 症状的には確かにロールバックなのですが、先ほどの「サーバーエクスプローラで実際にデータベースのテーブル内の内容を見に行く」という操作だけでロールバックするということはあるのでしょうか。
# 説明不足で大変申し訳ありません。上記の操作はプログラムが終了してから行っています。
>>227 > サーバエクスプローラ→プロジェクトフォルダのDBファイル
> アプリケーション→ビルド先のDBファイル
あぁ!確かにそのような状態になっています。
# DB以外の事ではよくわかっていたのですが、DBはについては初心者で、盲点でした…。
ちなみに、もしそのような状態の場合、
>>223のような操作でデータベースが書き換わる(元に戻る)といった事は考えられるのでしょうか。
# もしそうならこの件はばっちり解決です。
いやあのな、別のDB見てたら内容が違うのは当たり前だろが
>>230 仰るとおりなのですが、特にビルドなどの作業をしなくても、Debugに置いてあるDBが元に戻ることがあるのかと疑問に思いまして。。。
# ビルドをすれば当然出力フォルダに置いてあるDBファイルは上書きされるはずですが、今回の場合は単に実行をして、別の(Projectフォルダにある)DBの内容を見ただけなのですが…。
サーバエクスプローラで見た内容が違うのが疑問なんじゃなくて、
一度サーバエクスプローラで見ると戻ってしまうってこと?
それは俺も分からんわw
エスパーが必要ですね
235 :
216:2008/09/08(月) 22:29:28
一応解決したので、皆様ありがとうございました。
>>233 具体的には、サーバエクスプローラで該当するデータベースのテーブルを右クリックして、最新の情報に更新を行ってから実行すると、DBが初期化されて実行されます。
VSが何をやっているかわかりませんが、そういうものとして扱おうと思います。
それはビルドした時に再度コピーされてるんだろう。
新しい場合のみコピーみたいな設定になってるだろ?
サーバエクスプローラで最新の情報に更新すると、何らかの事情でDBファイルが更新されるんだろうな。
任意のMethodInfoをデリゲートにバインドしてDelegate.DynamicInvokeで呼び出したいのですが
引数の数が決まっていないのでデリゲート型をどう用意したらいいか悩んでいます。
・あらかじめたくさんのパターンのジェネリックデリゲート型を定義しておいてMakeGenericType
・デリゲート型を動的に生成する
くらいは考えたのですがもっとスマートな方法があれば教えてください
Delegate.CreateDelegateでなにか問題が?
CreateDelegateを使うためにはデリゲートの型を引数で指定する必要がありますが
最低でも戻り値の有無と引数の数がわからないとデリゲート型は定義できないですよね
new Action(() => methodInfo.Invoke(obj, new object[] { ... }))
で統一とか
ActionやFuncの範疇ならそれで。
それで足りないならそもそもデリゲートにする意味はあるのか?
public Delegate GetProcAddress(string name, Type type)
{ return Marshal.GetDelegateForFunctionPointer(GetProcAddress(this.handle, name), type); }
DLLのラッパー作ってるんだけど、ジェネリクス使ってもっと簡潔にかけないかな?
public T GetProcAddress<T>(string name)
{ return (T)Marshal.GetDelegateForFunctionPointer(GetProcAddress(this.handle, name), typeof(T)); }
って書いても"CS0030: 型 'System.Delegate' を型 'T' に変換できません。"って言われる。
(T)(object)Marshal.…
enumとかdelegateとかで制約したいよねー
Visual Studio のツールボックスウィンドウの中身の表示が変になったときに、
再構成して元に戻すためのコマンドがあった記憶があるのですが、
どうやるのでしょうか?
246 :
245:2008/09/09(火) 18:43:57
だー、ツールボックスウィンドウを右クリックしてリセットでした。
メインメニューから行ったような気がして、ずっと探してしまいました‥‥
吊ってきます。
Alt+tabみたいにタスク切り替えしたいんだけど、プロセスの起動や終了はすぐ見つかったんだけど切り替え方法が見つかりませんDllImport使ってもいいからC#で可能ですか
はい。
249 :
デフォルトの名無しさん:2008/09/10(水) 11:22:59
テーブルレイアウトを使ったコントロールを作成しているのですが、
デザイン時に、配置しているコントロールを選択状態にする、
というのは可能でしょうか。
スマートタグから処理を呼び出して、テーブル内のコントロールを
全て選択した状態にしたいと思っています。
250 :
デフォルトの名無しさん:2008/09/10(水) 19:22:14
FindDialog(検索画面)表示時のIMEモードを変更させるにはどうすればよいでしょうか・・
252 :
216:2008/09/10(水) 21:05:45
>>251 わざわざありがとうございます。
> 何らかの事情でDBファイルが更新される
ということで、自分の中では解決していました。
# リンク先では同じような悩みを持っている人がいるということで、勉強になりました。
返信ついでに質問させてください。
リンク先で、「デバッグで更新した後に、デバッグフォルダ内のDBを見れば、更新はされているんですけどね。」
とありますが、単体のDB(SQLCEなので.sdfファイルですが)のDB内を覗くツールというのはあるのでしょうか?
もしあれば教えていただけると嬉しいです。
254 :
216:2008/09/11(木) 15:35:39
>>253 ありがとうございます!
早速試してみたいと思います。
255 :
デフォルトの名無しさん:2008/09/11(木) 16:46:23
Linq to XML を使っているのですが、ネームスペース定義が大量に出現して、XMLファイルが肥大化して困っています。
XAttribute を使ってネームスペース宣言をルートエレメントでやっておけば、小さくまとまる事が判ったのですが
自動的につけるようなオプション等の機能というのはないのでしょうか?
# C#のジェネリックスは、実はType型の引数が余分にあるだけで実質中身一緒なんだな、自作シリアライザを作っていてビックリした。
# なんにもできない訳だ・・・
# 逆にこういう構造なら<>の中にType型オブジェクトも指定できるようにして欲しい。
# リフレクション使ったら Type 型引数版と、ジェネリックス版で似たようなコードの山になっちまった orz
>>255 ↓見たいなコード書いたら、ネームスペース宣言最上位エレメントにしかつかなかったぞ。
new XElement(ns + "tests",
new XElement(ns + "test",
new XAttribute("a", "1")),
new XElement(ns + "test",
new XAttribute("b", "2")),
new XElement(ns + "test",
new XAttribute("c", "3")),
new XElement(ns + "test",
new XAttribute("d", "4"))
))
ちゃんと全部に ns + つけてる?
>>255 # コメントの部分に関しては、
<> の中身が値型の時にboxing/unboxing発生しないとか、少々特殊なこともしてる。
キャストが発生しないってのがgenericsの利点の1つだから、動的に型指定すると利点なくなるし。
MakeGenericTypeやMakeGenericMethodというのがあるよ
うまく使えば、素直にやったらILGeneratorとか使わないといけないようなコード生成が
簡単にできる場合がある
動的にダウンキャストするとかね
>>256 static XName ns = ...;
として一か所にまとめています、これをやめるのは・・・かなり嫌かも
>>257 すみません、言葉不足でした定義時に使えないのは当然です、使用する側の問題でした。
object ins = new MyType<typeof(int)>() ;
my_ins.Func<typeof(int)>( ... );
といった使い方です。
>>258 これが効率よく利用可能になるためには
typeof<T>(List<T>)
といった感じで型の適用前の型を取得できる機能が欲しいですね、元になる型を探るのが超絶に面倒くさかったです。
ダミー型引数とGUIDからそれらしいものを探し出しましたよ・・・
それと、memberInfoOf( 型.メンバ ) とかも欲しいです、文字列でメンバを指定していてリファクタしたら沈没した orz
>>259 オープン型はtypeof(List<>)で取れる
引数が複数ある時はtypeof(Dictionary<,>)
>>259 ・Linq のほうはなんだその ns って。Namespace なら XNamespace やし
静的にしたところで変わらんし…
・Type type = typeof(List<>);
>>259 >memberInfoOf( 型.メンバ )
デリゲートのオブジェクトを作ればDelegate.MethodプロパティからMethodInfoは取得できるよ
>>259 リフレクションでLIST<T>からList<>もってくるのあったろ。GetGenericsContain?うろ覚えだが。
そういう話とは違う?
>>262 >>260 そういう風にできるんだ、助かりますた
ところでフィールドやプロパティーについてのそれはないですかね?
>>263 GetGenericTypeDefinitionだね
HTTP、SQL Serverと通信するGUIアプリケーションを作成しています。
try{ 例外の起きるコード }catch(SomeException e){}... としたとき、
VS上から実行すると例外が正しくキャッチされるのですが、
直接実行ファイルから実行すると例外をキャッチしてくれません。
発生するすべての例外について起きているのですが、何か原因等考えられるでしょうか。
環境は、Windows XP SP3、VS2008 SP1、Release/Debugビルド共です。
よろしくお願いします。
キャッチされてないことはどうやって判断したの?
あとtryやcatch書いてるのはどこ?
ひょっとしてMainだったりする?
普通の処理の流れでキャッチされないってのはまず考えられない。
>>267 キャッチされてないと判断したのは
・VSから実行するとcatchしてエラー内容をdumpしてくれる
・実行ファイルから実行すると「ハンドルされていない例外が…」と表示される
という部分です。
例外をキャッチしてるのはMDI親フォーム内の子フォームをShowする部分です。
もしかしたらスレッドが別に生成されたかと思ってデバッグ→ウィンドウ→スレッドを開いてみても特にスレッドが生成されてる様子はありませんでした。
もちろん、明示的にスレッドは生成していません。
catch( SomeExpection e ) {
MessageBox.Show(e.Message)
}
そりゃ無理
ThreadExceptionを調べてみな
よくわかんないけどモードレスダイアログって別スレッドではないの?
WebBrowserを使ってフレームページを扱っているんだけど
Browser.Document.Window.Frames[0]のフレームに
<A HREF="javascript:ShowFrames('11')">全表示</A>
っていう記述で貼られているリンクをクリックした動作をしたいんだが
NAMEがないからGetElementsByNameが使えない.
Javascriptを直接実行しようと思って
ttp://web.sfc.keio.ac.jp/~shokai/archives/2007/01/cs-webbrowser-javascript.html を参考にしながら
Browser.Url = new Uri("javascript:" + Uri.EscapeDataString(@"ShowFrames('11)") + ";");
としてみたけどランタイムエラー(オブジェクトを指定してください)
とでます.
なにかいい方法はないでしょうか,
あとオブジェクトの指定ってどのことを指してるのか教えてもらえませんでしょうか.
レベルの低い質問で申し訳ないのだが、生成したファイルパスが有効な書式(ファイルが存在するとかそういうのは無視)
かどうかを検査する方法ってないかな?無効な文字列を含んでいないとかそういうの。
正規表現自作で弾くか、DirectoryInfoやFileInfoのコンストラクタにそのファイルパス渡して、例外をキャッチしなかった
おkとか。そういうのしか思いつかないんだが・・・どうだろう?
File.Exists
C丼
>>273 「有効な書式」ってのが多数のこんがらがった条件受けまくり
なので実質それしかないです。はい。
一応使えない文字レベルなら GetInvalidPathChars あたりで
取れるが…色々保障されてません
正規表現は以前やってみてキツかった記憶が
Path.CheckInvalidPathCharsとかPath.NormalizePathあたりを参考にするか
面倒くさければそのまま呼び出しちゃえば
と思ったけど、FileInfoコンストラクタやPath.GetFullPathでも最終的には
Path.CheckInvalidPathChars, Path.NormalizePathに行き着くようだ
考え方を変えてみたらどうだろう。
パスが無効であることを確実に検査するメソッドを作ることは難しいが、
パスが有効であることを確実に検査するのはそんなに難しくない気がする。
何をいっているか分かりにくいかもしれないけど、
要はそのメソッドで「無効」と判定されたパスが実際には有効なパスである場合があっても、
それは許容することにするってこと。
Winのそれより厳しいルールを適用する、と言い換えてもいい。
280 :
デフォルトの名無しさん:2008/09/13(土) 17:01:59
>>272 Document.LinksからinnerTextが「全表示」であるaタグを拾えばまず
HtmlElementとしてリンクが取得できる。
そのHtmlElementでinvokemember("click")すればいけるんじゃないか?
>>270 ありがとうございます。
無事例外発生時にイベントハンドラを呼び出せるようになりました。
C#だとforやforeachで宣言した変数が、ブロック外まで有効なんだな。
C++みたいにブロック内に閉じ込めてくれた方が好きなんだが、どうしようもないんかな?
いやいや、ブロック内だぞ。
ブロックでるときにデストラクタ呼ばれないという意味でならそうだけど。
>>282 そんな仕様は旧VBぐらいだと思うけど。
まあ現VB.NETにも一部引き継がれているようだが。
ブロック外では使えないけども、
ブロック外で同じ名前の変数を宣言できない仕様にはなってる。
バグの原因だからいっそのこと禁止してる。
for (int x = 0; x < 10; x++)
{
int y = 0; // この y をブロック外から参照できはしない。
}
int y = 0; // これは確かにエラー。
いや、それはシャドーイングの禁止、つまり、外のスコープに存在する変数を内側で再宣言できない制約だよ。
287 :
282:2008/09/14(日) 00:30:15
for(int i = 0; i < N; ++i) { }
int i;
これがダメだったから外に漏れてるんだと思ったが、そういうことか。
それは特例というか救済措置。
>>274-279 多忙な中、お答え頂いて感無量です。
GetFullPathを利用することにしました。
ありがとうございました。
290 :
デフォルトの名無しさん:2008/09/14(日) 23:06:02
viライクな操作形態にしたいんですがやり方有りませんか?
補完機能は便利なんで、補完機能そのままに操作形態をviライクにする方法教えてください。
うぜえ氏ね
292 :
デフォルトの名無しさん:2008/09/14(日) 23:32:27
お前には無理。
昨日あたりからC#はじめたものなのですが、とっかかりとして、
簡単な例として典型的な図形クラスつくってみているところです。
以下のように書いてAreaを取得する関数はどうやってかけばいいんでしょうか?
DoubleとT型が違うんでだめじゃ!とおこられます。(T)Math.PIもやってみたが
だめでした。例では、Cylinder<float>, Cylinder<double>での使用を考えています。
class Cylinder<T>
{
protected T r;
protected T h;
public Cylinder(T _radius, T _height)
{
this.r = _radius;
this.h = _height;
}
public virtual T Area()
{
T area;
area = 2 * Math.PI * r * r;
return area;
}
}
>>294 ジェネリクスはテンプレートとは違うからそういう用途には向かないよ。
まあ今回の場合はとりあえずキャストしとけばいんじゃない?
C++のテンプレートと違ってそういうことは無理。
>>294 そういう風には現状使えない。
Generics != Template
…まぁ抜け道はあるんだがそれを話すにはここでは
スペースが足りない
そうなのですか。。。残念。結局、Volume、Area等の計算は別にだすしかないのかー
でも普段使うクラスのどっかにfloat,doubleと違うのが入り込んだら
他の汎用的に書いたクラスの汎用性を著しく妨げる方向に働くのが
いやなんですよね><
C++/CLIを…
結局C++にもどれっていうのかいw
>>298 double間と暗黙の型変換できるようにしたりT同士の四則演算子を定義したりした
doubleやfloatのラップクラスを用意しておけば出来ないことも無いけどね。
>301
やるしかなさそうですね。今がんばってそこまで学習しておくのも手かとおもいますが
なに分まだ舐め終わってないのでもうちょいいってから戻ってきてみます。
とりあえず、ここは、
public virtual double Area()
{
return 2 * Math.PI * (double)(object)r *(double)(object)r;
}
みたいにdouble返り値でつくっておき次へいきます。
(実際の使用時に、floatには自動的にキャストされるだろうと。)
>>301 そしてそれの内部は LCG か Expression Tree あたり使うって感じだな
ExpressionTreeおもしろそうですね。でも3.0からの機能みたいなので2.0の学習が一段落したら
みてみます。LCGは難しそう。1回機能全体みたら、中間コードの出力しらべながら学習してみます。
おー、いいサイトですね。ありがとうございます。
今このスレでおきた事象は、デザインパターン化できそうです。
『PublicBrainStorming Pattern』
Aが解決できないPという課題を公開する
ObserveしているB、C、D、… が解決案か、ヒントを出す。
Aを含めてPを一個すすめたP´という課題をだすというようにして
解決にむけて相互作用しながらすすめていく方式。
似ているパターンいくつかありますが、微妙にちがいますよね。
>>305 ただし、NyaRuRu さん本人も言ってるけども、
LCG なんて最後の最後、よっぽどせっぱつまった時の奥の手よ。
書くのも大変だし、メンテはもっと大変。
動的コード生成の類は C# 4.0 で動きがありそうなんで、
それまで待った方がいいと思う。
>280
おそまきながらありがとうございます.
おかげさまでうまくいきました.
どういたしまして
>>305 その記事微妙に勘違いしてる部分がある
そのままでも動くんだが組み込み演算/ユーザ定義演算で場合分けは不要
IL見れば分かるけど、内部にGetUserDefinedBinaryOperatorOrThrowというようなメソッドがある
ほぼすべての演算を定義した構造体をなんとなく作ったけど、あまり使ってないな
というか今書いてみてるんだが、そもそも組み込み型は
固定なのでそれを固定でメソッド化していくと結論として
LCG も Expression Tree もいらね。
作ったこと無くて言ってる奴がおるなぁ(・∀・)クスクス
気色わる
頭わる
わる
る
>>565 10kg10回が限界なら、12kg5回が限界。20kgなら1回。
どこの誤爆か聞こうか?
>>319 ああ、ごめん、筋トレスレ。いかんな。
今日も昼飯食わずにトレーニングしてたら倒れそうになって、
嫁さんに脳トレもしとけと諭された。
>>305 これ、いちいちExpression Treeなんか使わなくてもCreateDelegate使えばいいじゃん
プリミティブ型に関しては別扱いでそれぞれあらかじめメソッドを用意しないといけないけど
323 :
322:2008/09/16(火) 12:12:01
DelegateクラスのCreateDelegateね
リフレクション経由の呼び出しが無くせる
そりゃ「できる」だろう。
だれもその目的ではExpressionTreeを使わなきゃできないなんて言ってない。
つか俺は遊びでやりかけて止めた。
単にわざわざメソッドいっぱい作るの面倒臭かったから。
あれ?CreateDelegateいったっけかな?忘れちまった。
型関連でコード生成が必要な時って
LCG使わなくてもMakeGenericTypeとCreateDelegateで結構いろんなことできるよね
ジェネリックと+-*/のような演算子が相性が悪いということで、
どうするかって話だったと思うけど。
MakeGenericTypeとCreateDelegateで何とかなるの?
もちろん強引にしかできない
+演算子を使うためにはop_Additionという名前のメソッドを呼び出す必要がある。
もちろんリフレクションを使えばMethodInfo.Invokeで呼び出せるんだけどすごく遅い。
そこで、デリゲートにそのメソッドをバインドしてしまえば、通常のデリゲート呼び出しと同じ
オーバーヘッドで呼び出せるわけ。CreateDelegateを使えばMethodInfoからデリゲートが作れる。
すいません。質問です。
スレッドにてSuspendとResumeを使用しているのですが
使用しないでくださいとMSDNにあります。
そこで代わりになるようなのを見つけようと思ったのですが見つかりません。
Suspendのような、特定メソッドが呼ばれるまでスレッドを待機させると言う事は出来ないのでしょうか
>>329 たしか、基本データ型はop_色々を実装していない。
勿論ユーザー定義型の演算子なら大丈夫だが不便。
struct Int32 : IAdd<Int32> ... とかすればいいのにとか、この設計は凄くイライラする。
DynamicMethodでいいやん
DynamicMethodなんか使う暇があったら
各プリミティブ型に対してそれぞれ演算を行うメソッドを全て書いたほうがマシ
334 :
333:2008/09/16(火) 17:44:04
op_○○に相当するものを自分で定義するという意味だよ
ラムダ式羅列でOK
>>330 素直にMomitorかEvent系使え
もみたー
ワロタorz
すみません。
usingステートメントに二次元配列クラスを渡す方法を教えて下さい。
御願いします。
日本語で御願いします
public MapSearch[,] msc = new MapSearch[256,256];
for (i = 0; i < 256; i++)
{
for (j = 0; j < 256; j++)
{
msc[i,j] = new MapSearch();
}
}
//↓ステートメント内で宣言できません
//MapSearch内には多く変数が入っています
using (MapSearch[,] msc = new MapSearch[256,256]){
}
すみません。絶対何か間違った方法だと思いますが
343 :
340:2008/09/16(火) 21:09:43
あ、>342=>340です。申し訳ありません。
usingはメモリ使用量の大小とは無関係です。
IDisposableインターフェイスを実装しているもののみに限りusingが必要と覚えておきましょう。
マネージ配列はIDisposableを実装していませんから使えません。放置しましょう。
345 :
340:2008/09/16(火) 21:17:28
>>344 ありがとうございます。
もう少し言葉を覚えたいと思います。
346 :
デフォルトの名無しさん:2008/09/17(水) 01:22:22
配列を以下のように宣言したら、別の関数に渡せるのですが?
private int[] func1() {
int[] testarrays = {1,2,3,4,5};
return testarrays;
}
private void func2(int[] a) {
int[] testarrays2 = func1();
}
自分の環境だと動いているのですが、C#では配列はスタックに
作成されないのですか?
配列はオブジェクトです。
348 :
デフォルトの名無しさん:2008/09/17(水) 02:43:17
そうか。
そして開放は、ガーベージコレクターにまかせればいいんですよね。
ありがとうございました。
349 :
デフォルトの名無しさん:2008/09/17(水) 03:19:35
すみません。最近プログラムに目覚めてC#の本を買って勉強中です。
まずやりたいことは、Excelを使ったグラフ作成での資料提出です。
Consoleでの操作はある程度やったのでそろそろExcelに手を出したいのですが・・
350 :
デフォルトの名無しさん:2008/09/17(水) 03:38:40
>>349 こんな時間に、なんか軽い感じの書き込みだな。
もしかして、あんたのいるところは昼間?
英語問題ないんだったら、
Visual Studio Tools for Office:
Using C# with Excel, Word, Outlook, and InfoPath
とかどうスか?
351 :
デフォルトの名無しさん:2008/09/17(水) 10:48:12
>>350 知り合いが言うにはそこまで複雑ではないそです。
一般家庭にあるExcelを使ってグラフと作成して印刷するだけです。
基本的なことだとは思いますがC#を勉強しててもまったくそのことに触れません。
昨日数時間も本屋さんに通いつかれて疲れました
C#を使わずにExcelのマクロだけでやったほうがいいんじゃないかな
何考えてC#選んだのか知らないけど、直接Excel触るのにはC#は不向きなんだよね
>>331 >たしか、基本データ型はop_色々を実装していない。
Reflectorで見たらマジでそうだったんだけどさ
どうして演算できる訳?なんでこんな仕様?
もちろん理由はパフォーマンス
数値演算ごときに一々メソッド呼び出しとかコスト高すぎ
ILレベルで数値演算用のオペランドが使われる
正しくはオペランドではなくオペコード
構造体みたいに見えるように工夫してるけど実際は対応するIL組み込み型として扱われる
decimalは真っ当な構造体なんだぜ?
decimalも他ほどではないにしろやっぱりCLRにべったりくっついてるね
360 :
デフォルトの名無しさん:2008/09/17(水) 15:04:58
Excel触るならVB.Netの方が使いやすいと思う(というか、かなりめんどくさいw>C#)
自分は遅さに耐えかねてVBAで組むことが多い
VB.NETもC#も変わらん
オプショナル引数に対応できる分だけVBが楽
あとは推奨じゃないがCreateObjectでレイトバインディングも可能
まあたいして変わらないのは確かだがね
すまん、基本だと思うんだが、Equals、==について教えてたもれ
一応、ガイドラインはみますた
http://msdn.microsoft.com/ja-jp/library/ms173147(vs.80).aspx
・基本的に値的なオブジェクトでなければEqualsをオーバーラードする必要はないのか?
・演算子==のオーバーライドについてガイドラインではオブジェクトが不変な場合に同じ値を持つ限り同一云々とあるが、自分的にはそのオブジェクトが値的なものであればオーバーライドしなければいけないように思うのだが違うのか。
・その上でDictionaryのようなKey的なオブジェクトを使うものはそのキーの同一性を比較するのに、==とEqualsのどちらを使うべきなのか。
・GetHashCodeの効率的な実装方法
以上のことを教えてくれ。エロい人
・ない。
・その項目は参照型の場合のみ。
・IEqualityComparer<T>を使う。特別な実装がない場合はEqualityComparer.Default。
・知らん
>>361 遅延バインディングが(手軽に)できるのとできないのじゃ天と地ほと違うと思うけど。
あと暗黙的なキャストができないと面倒な場面も多い。
>>365 >・その項目は参照型の場合のみ。
いや参照型のオブジェクトで値的な性質のものについて値としての比較を強制するために==をoverrideしなければいけないのかと。
>>363 > ハッシュ
Point構造体を例にすると
- Xを返す (.NETはこれ)
- Yを返す
- XとYの上位16ビットを並べたものを返す
などの実装が考えられるけど、
事前に確率分布が分かっていなければ基本的にどれでも一緒だから、
適当にフィールドから32ビット見繕って返せばいいよ
>>367 あれ、PointはXとYのxorだったはず
ごめん、何か別のと勘違いしてた
とりあえずはメンバ全部の GetHashCode Xor だな普通
あとは分布とコスト次第で調整(必要なのはあまりない)
俺は少しビットずらすのがすき。
あんま深く考えてはいないけど。
floatはどうすると?
float.GetHashCode
375 :
デフォルトの名無しさん:2008/09/18(木) 00:30:25
質問です。
String s = (o==null)?"":o.ToString();
みたいにいちいちNullチェックするの面倒だから
static String ObjToString(Object o){
return (o==null)?"":o.ToString();
}
みたいな野作ったんですが邪道でしょうか
もっといい方法ないでしょうか
>もっといい方法
VBを使う。
VBだとnullはString.Empty扱いされる。(本当)
まじかーでもVB使いにくいしなー
慣れかな
>>375 自分なら拡張メソッドにする。
おかげで自分のプログラムではobjectのメソッドが増えること増えること('A`)
三項演算子ってこわくね?
String s = (dataSet.Tables.Count == 0) ? "" : (dataSet.Tables[0].Rows.Count == 0) ? "" : (dataSet.Tables[0].Rows[0]["Field0"] == null) ? "" : dataSet.Tables[0].Rows[0]["Field0"].ToString();
そうか?俺平気で結構連結するよ
改行とインデントしっかりすれば個人的にはこっちのほうが
みやすい
とはいえその例はしないかな
>>378 拡張メソッド はずかしながら知りませんでした。
これは便利ですね。
>>378 >objectのメソッドが増えること増えること
せめてジェネリクス使おうよ。
public static string SafeToString<T>(this T obj)
{
return (obj != null) ? obj.ToString() : string.Empty;
}
>>382 それにジェネリクス使っても何の意味もなかろーもん
それに何の意味があるのか教えてくれたまえ。
この場合ジェネリクスにしたら何がうれしいの?
よくわからんがnull許容型に対してボクシングが行われないとかなのかな?
値型だとボクシングが回避できるんだぜ?
T が値型だと boxing が起きませんな
デメリットも思いつかんし付けたほうがいいね
余計なnullチェックもなくなるんだぜ?
だけどToStringするようなもんならあんまり意味はないんだぜ?
>>388 おお、値型ならアクティブ時に条件分岐すら消滅しますな確かに
むしろこうすると値型で余計なメソッドが見えなくなってうまーかな。
public static string SafeToString<T>(this T obj)
where T:class
{
return (obj != null) ? obj.ToString() : string.Empty;
}
DataGridViewかRDBMS関連のお話かな
393 :
384:2008/09/18(木) 01:25:27
しょうじきすまん買った
今は反省している
俺はcoalesceの方が好きだな
(obj ?? "").ToString()
その系のパターン結構多いんだよな。
で思わず??で書こうとして無理じゃんってのが多いんだよな。
c#2008EE使っているんだけど
F5デバッグしてプログラム終了後、エディタ画面にもどるまで
2秒ほどもたつくんだけど、これは無料だからわざとやってるのかな?
c2d E8400でやっているんだけど、これでも足りないとは思えないんだけど・・・
そんな現象に会ったこと無い
Webプロジェクトやフォームアプリでも、ちょっとした小さなコードを書いて挙動を確認したい時が
あるじゃないですか。例えば、Enumのパースってこれで良かったっけ?とか。
そういう時、Visual Studioだとマイクロコードを書いて確かめる方法なかったでしたっけ?
皆さん、どうしています?
ソリューションにコンソールアプリプロジェクトを追加するのは大げさだし、
別にテスト用ソリューションを用意しておくほどのものでもないし。
テストプロジェクトでも流用して、小さなコンソールアプリでも追加できないんですかね。
またスタートページ切ってないとかじゃないのどうせ
EEって書かれると、エンタープライズエディションかと思っちゃうよね〜。
2008チームスイート使ってるけれど、SP1で確かにもたつきが無くなった気がするよ。
>>398 小さいテストコードって意味なら、適当にブレークして
イミディエイトでご自由にどうぞ。
オブジェクトテストベンチ
ちょっと違うか…
403 :
396:2008/09/18(木) 13:00:24
>>396 俺も、Vistaマシンに入れたら同じ現象おきるな。
なので今はXPマシンでやってる。
405 :
396:2008/09/18(木) 13:13:58
スタートページ切ったら不可思議なラグがなくなった
ありがとう
3.5SP1にしてからインテリ扇子が英語になってもーた
>>407 そうだったんですか。
ありがとうございました。
.NETリモーティングで双方がどちらもクライアントかつサーバーになる
サンプルをどこかで見た記憶があるんだけど、今ググっても見つからない。
誰か心当たりある人いない?
しかし、.NETリモーティングって同じことをやる方法が複数あるわ、
必要なクラスがバラバラの名前空間に散らばってるわでもう訳がわからん。
よく双方向なんてやる気になるな。
リクエストリプライのステートレスでしか使ったことないぜ。
DataColumn.Expression プロパティについて教えてください。
あるフォルダの中で、条件に一致するファイル(名)を取得したいと思っています。
そこで、条件をテキストボックスなどで[abc def xyz]などのようにスペースで区切って、AND検索をしたいと思っているのですが、Dataset.DataTable.SelectのExpressionの記述方法で困っています。
具体的には、
string[] keywords = textbox1.Text.Split(' ');
というように各キーワードの抜き出しを行っているのですが、ここからどうすればいいのか困っています。
abcだけならDataset.DataTableTable.Select("\"FileName = 'abc'\"");などでできると思うのですが。。。
よろしくお願いします。
それのSelectの中身ってSQL文だっけ?
そんなに詳しくないけども、in 演算子ってなかった?
Filename in { 'abc', 'def', 'xyz' } みたいなの。
414 :
412:2008/09/18(木) 23:28:12
すみません。間違えてShif+Enterを押してしまいました。
ちなみに、IN演算子を使って、
Filename IN { 'abc', 'def', 'xyz' }
と記述した場合に、結果にはabc def xyzを含むファイル名が取得できるということでいいでしょうか?
「を含む」じゃなくて「のいずれかに一致する」
Expression の IN は ()
「を含む」の場合は LIKE 演算子が必要だが IN と併用できたっけ。
無理なら OR でつなげるしかないかな?
>>415 in は「右辺の配列の中に左辺が含まれているかどうか」
今の場合、Filename が abc, def, xyz のいずれかと一致するかどうか
になると思う。
418 :
412:2008/09/18(木) 23:45:08
>>416 >>417 なるほど。
LIKEとINが併用できるか調べてみます。
# だめだった場合は、ORでつなげるか、複数回Selectを実行してやってみようと思います。
ありがとうございました。
というか、こういう処理こそ LINQ の出番なんだけどねぇ。
420 :
412:2008/09/18(木) 23:58:31
>>419 すみません。
LINQについてはまだ勉強不足です。
# 将来的には勉強しなければと思っていますが・・・。
元々から非 LINQ の DataTable 使ってるとか
会社の方針として使うものが決まってるんなら別にいいと思うけど、
新規に学ぶなら LINQ の方が楽というだけ。
RDBMSやSQLをきちんと理解していれば、LINQの勉強なんて大した手間でもない
423 :
412:2008/09/19(金) 00:37:03
424 :
デフォルトの名無しさん:2008/09/19(金) 22:25:12
すれ違いで間違ったところに投稿してしまったのでここへ書かせてもらいます。
C#2.0
CTIのシステムを自分のソフトにも組み込んでみたいんですが
どんな感じで実現するんでしょう?
着信があってその番号から検索するのはわかるんですが、
どうやって電話を邪魔せずに番号だけ抜き出せばよいのか…・
外からの着信→PCのモデム→TEL
こんな感じでつなぎそうな気がするのですが・・・・
425 :
424:2008/09/19(金) 22:27:26
おぉ・・・・間違ってShift+Enterを・・・orz
以下追記です。
対象はC#2.0+WinXP環境です。
また、単純に着信があれば顧客のデータにある電話番号か携帯番号のどちらかからデータが取得したい程度のことです。
番号さえフックできればあとは簡単な話なのですが・・・
C#のクラスライブラリには直接サポートするものはなかったと思う。
何か市販のミドルウェアを使うならそのマニュアルを、モデムを直接制御するならモデムのマニュアルを。
ふらっとでスレ違いといわれたら当然ここでもそうだろう。
Creed Taylor Issue レコードを C# で作りたいのか。
まあ、冗談は置いとくとしても3文字略語(・A・)イクナイ
TAPI3Libで検索するとちょっとは幸せになるかもしれない。
>>424 ここに書き込んだからには、そのCTIとやらの知識はあって
Cないし他言語では組めるんだろ
で、C#だと何が問題なんだ?
431 :
424:2008/09/20(土) 02:02:22
レスありがとうございます。
ひとまずCTIでやるべき事はわかるんですがその手法かなと
>>428 どうもTAPI3Libは電話機器とかその辺の関連DLLみたいですね
今軽く見たらなんとなくいけるかもしれない希望が見えてきた気がします。
>>426 そうですか、それがわかれば逆に範囲は狭められる感じがします。
TAPI3Libが今回やろうとしていることにうまいこと使えればうれしいものなのですが・・・
>>427 いわゆる広義でいう Computer Telephony Integration
のことを言おうとしていました。
ただ、もっと具体的に書くべきかなと思いました。
>>429 とりあえず組めるには組めるのですが、何ができないかというと
かかってきた電話を邪魔せずに電話番号(ナンバーディスプレイ)をPCで取得しようとする方法です。
ハード寄りな部分というのはあんまりしたことがないのでノウハウが・・・
>>430 それはどうもその会社の製品を買ったおまけで、しかも開発ライセンスはタダだけど配布ライセンスはいるという感じなorz
まずは頂いた情報であれるだけやってみようと思います。
ありがとうございました。
ワンギリ業者氏ねよ
433 :
デフォルトの名無しさん:2008/09/20(土) 10:54:22
C#でソースを書いていて、タブキーを押すと押せば押しただけタブが挿入されるのがいやです。
タブを何回押しても、決まったインデントの位置に行くだけになるよう設定できますか?
環境はVisual C#2008です。よろしくお願いします。
434 :
デフォルトの名無しさん:2008/09/20(土) 11:35:49
文字列をtextBoxに表示するとき、改行を\r\nと書かないとだめなのはなぜですか?
MessageBoxに表示するときは\nで改行できるのに。
435 :
デフォルトの名無しさん:2008/09/20(土) 12:03:36
寧ろMessageBoxがおかしい。
コモンコントロールに依存してるところがそうなってる感じかな。
コモンコントロールに依存してないWPFのTextBoxは\r\n \r \nのどれもOKだった
>>431 CTIは知らんけど、auの携帯電話ならシリアルで接続すれば、着信時にシリアルポートから電話番号の情報が受信できるけど・・・
まあ文句は使ってみてから言えや
もちろんこっちはPASCALもJavaも使える
C#使ってるけど別に信者じゃないからどうでもいいよ。
だいいち信者がウザイのはどこの言語でも一緒だから
ことさら言うまでのことじゃないんだ。
442 :
デフォルトの名無しさん:2008/09/21(日) 09:48:13
C#で書かれているチャートソフトを使用しています
いろいろとソース弄って表示を変えたいところがあります
プログラミングをした事がないのですが
いきなりC#から入ったら無謀でしょうか?
具体性のない質問をされてもな。具体的に困ったことがおきてからふらっとへ。
言語によらず入ってくるの自体が無謀
>>442 ソース見て頭がフリーズしなけりゃ大丈夫
プログラミングがしてみたいんじゃなくてそのソフトを弄るのだけが動機なんだったら
言語問わずすぐ挫折するよ
BackgroundWorkerでCancelAsyncメソッドを呼び出して、RunWorkerCompletedイベントで
引数RunWorkerCompletedEventArgs.Resultを参照するとInvalidOperationExceptionがスロー
されるのは仕様?
DoWorkイベント内で
if (backgroundWorker1.CancellationPending)
{
e.Result = "hoge";
e.Cancel = true;
}
とやってもダメだった。
イベントハンドは仮想関数であってもいいの?
>>447 そうみたいだね
>>448 うん
オーバーライドされてたらちゃんと派生クラスのメソッドが呼ばれる
>>447 RunWorkerCompletedEventArgs.Resultの解説に明記されてる
DatasetのDataTableにおいて、DataRowの要素が重要かどうかを判断するために、列として System.Boolean で isImportant という名前をつけています。
そこで、DataTableに isImportant が true となっている要素だけを取り込もうと思い、以下のようなコードを書いたのですが、System.Boolean の値判定はどうすればいいでしょうか?
(現状では単純に True となっているのですが、そもそもそれでいいのかどうか・・・。)
また、ほかにスマートなやり方があれば教えていただけるとうれしいです。
DataSet.DataRow[] dataRows = (DataSet.DataRow[])DataSet1.Table1.Select("\"isImportant = 'True'");
よろしくお願いします。
452 :
デフォルトの名無しさん:2008/09/22(月) 06:20:11
C#でExcelのアドインを作ろうとして以下のページを見てるのですが、
ttp://support.microsoft.com/kb/302901/ja >[新しいプロジェクト] ダイアログ ボックスで、[プロジェクトの種類] の下の [その他のプロジェクト] を展開し、
>[機能拡張プロジェクト] をクリックします。次に、[共有アドイン] テンプレートをクリックします。
という手順のところで、「その他のプロジェクト」というのがありません。
自分の使っているのはVisual Studio C# 2008 Expressなのですが、ExpressではExcelアドインは作成できないので
しょうか?
どうかよろしくお願いします。
>>452 この資料は以下の製品について記述したものです。
・Microsoft Visual C# .NET 2003 Standard Edition
・Microsoft Visual C# .NET 2002 Standard Edition
まともに調べたことは無いがちらっと検索したら否定的な意見が目に付くな
454 :
デフォルトの名無しさん:2008/09/22(月) 07:43:45
>>453 ありがとうございます。
自分も調べているのですが、Expressでアドインを作成できるにはできるらしいのですが、それ用のテンプレートが
Expressには入ってない、というところまではわかりました。
テンプレートをダウンロードできるのか、もしくは簡単に自分で書けるのか、もしくはExpressでやるのはやめた方がいいのか
今調べているところです。
455 :
弱弱:2008/09/22(月) 07:54:40
とりあえず、VS2008Professionalの90日間トライアルバージョンをダウンロード
し始めました。
#でもダウンロードマネージャというのがJavaでできてるのが変な感じ。
最悪、こいつで作ってみて、shared add-inのtemplateが自作できそうなのか判断してみます。
456 :
弱弱:2008/09/22(月) 12:36:28
ダウンロードして、トライアル版で作り始めました。
まず、ExcelアドインでHello worldを作ろうとしているのですが、
private Excel.Application applicationObject;
private Core.COMAddIn addInInstance;
private Object missing = Type.Missing;
この3行のコンパイルが通りません。コンパイルエラーには、
Expected class, delegate, enum, interface or struct
と出ているのですが、、、
参照は、COMのMicrosoft Excel 11.0 Object Libraryを追加しました。
どうかよろしくお願いします。
using Excel = Microsoft.Office.Interop.Excel;
このへんは入れた?
C#でデスクトップマスコットみたいな 自由な形のアプリを作るにはどうしたらいいですか?
参考になるような書籍・サイト等ないでしょうか?
462 :
弱弱:2008/09/22(月) 20:10:08
>>457 ありがとうございます。
using Core = Microsoft.Office.Core;
using Excel = Microsoft.Office.Interop.Excel;
using System.Windows.Forms;
を入れました。あと、参照の追加で、
Microsoft.Office.Interop.Excel
も追加してあります。
でも結果は同じでした。
グローバル変数定義しようとしてるだろ
クラスメンバとして宣言しろ
464 :
弱弱:2008/09/22(月) 20:49:45
>>463 ありがとうございます。
クラスメンバとして宣言したらコンパイル行けたみたいなのですが、そのあと管理者で
実行しないとだめといわれました。
HKEY_CLASSES_ROOT\MyAddin3.Connectへのアクセスが拒否されました。
といわれてます。自分も管理者権限もってるんですが、、、
馬鹿はおまえだ
(´・ω・`)しらんがな
468 :
デフォルトの名無しさん:2008/09/23(火) 01:15:01
Visual Studioを管理者権限で実行させてみようと思うのですが、
どうすればよいですか?ちなみに環境はVista上のVS2008です。
469 :
デフォルトの名無しさん:2008/09/23(火) 01:19:47
実行するときに右クリックで管理者権限で実行を選択するとあっさりできました。
とりあえず、F5押すとExcelが起動して、Hello Worldが表示されました。
ありがとうございました。
DDEを利用したいのですが
メインのスレッドでないと正しく動作しないようです。
他のスレッドを実行中にDDEにアクセスすることはできないでしょうか?
DoDemoE
DemoDaijinE
どうやってDDE使ってるのか分からんけどSTAThreadか
まあ普通にControl.Invokeでメインスレッドで処理すれば良いじゃん
VS2008で.NET FW3.5向けで開発したものが、.NET FW2.0しか入ってない環境でも動くんだけど大丈夫?
大丈夫
>>474 3.0 と 3.5 は基本的にライブラリの追加のみ。
追加部分を使わなければ .NET Framework のバージョンは 2.0 で OK。
当たり前だが2.0SP1以降や3.0以降の機能を使おうとしたら止まるぞ。
private List<ISchedule> zTasks = new List<ISchedule>();
これを同じことを NET 1.1でやりたいんですが どうすればいいんですか?
arraylist ってヒントまではもらえたんですが
具体的なコードを教えてくれませんか?
private ArrayList zTasks = new ArrayList();
要素がobject型になるので、ISchedule型でなくても入れようと思えば入れられる
取り出すときにはダウンキャストが必要
どうしてもちゃんと型付けしたかったらSystem.Collections.CollectionBaseから派生した
ISchedule型専用のコレクションを自作する
481 :
デフォルトの名無しさん:2008/09/26(金) 00:35:12
コントロールが結構たくさんあるフォームがいくつかあるのですが、
一応コーディングが終わってこれらの動作を一通りテストしたいというときには、
手動でやるしかないですか?
このボタンとこのコンボボックスの××の項目を選択してOKをおしたら△△になって、、、、
とか、かなり煩雑なのです。
こういうテストってどうすればよいですか?
GUIテストの出来るツールを使うか、GUIで中のプロパティをいじくる動作と、プロパティに基づいたその後の動作を分けて後者をユニットテストで、前者は仕方ないので手動でしこしこですかね?
もっといい方法があれば教えてエロイ人。
皆さんリリースしたフォームアプリ(まぁなんでもいいのですが、とりあえず客先に納入したとおもいねぇ)で想定していなかった例外がでる時って現象把握とかどうしてますか?
いまはスタックフレームを出しているぐらいなんですが、これだけだと原因が把握できない時ってありますよね?
( ゚Д゚)ナニカ?コードを仕込んでおけば例外はいた時点でのレジスタ?の値とかはけて、後でILと照らし合わせれば変数値が把握できるなどなにか技があれば是非・・・
GUI操作しなければチェックできない時点で糞設計
はじめからやり直せ
>>484 だから俺が言ってるのがAPIだろうがこの池沼
>>483 追わないといけない処理してるmethodは中でcatchして情報まとめてthrow
んで大外で全部catchしてログ出力じゃ問題か?
>>485 糞設計者の俺にサンプルの提示してもらえないか?
手動での操作を減らす方向での設計には大賛成、ただ減らすことはできてもゼロにはできない。
WEBアプリじゃあるまいしテスト容易性のために利用者の利便性や操作性は犠牲にできない。
>>487 >追わないといけない処理してるmethodは中でcatchして情報まとめてthrow
>んで大外で全部catchしてログ出力じゃ問題か?
その場合、リリースしてから想定してなかったところですっ飛んで、追わないといけなくなったときに必要な情報がとれなくてどうしようということがありますた(´・ω・`)
情報まとめるよう入れ替えることが出来るときは問題ないんですが、諸事情で其れが出来ないときにどうしたらいいかと。
BoundContextObjectとかうまく使うとリコンパイルしないでうまく出来そうな所もあるかも知れないけど全部其れというわけにもいかないし
結合テスト以降は手動でいいんじゃね?
UIなんて変わるもんだし
単体テストはユニットテスト使えばいいし
BoundContextObjectてなんだ。
商用アプリ作っていてちょっくら難読化しようと思ったら、
Dotfuscatorたけぇぇぇぇぇぇぇぇぇぇ!!!!!
1ユーザー1ビルドマシーンで85万てどんだけですか。
これこの間まで15万ぐらいだったような気がするんだが気のせいですか?
しょうがないので他のツール試してみる(ノД`)シクシク
そういうのはだいたい600$から1200$ぐらいなのに・・・
なんかフリーのなかったっけ?
機能は落ちるだろうけど
フリーっつうか、CommunityEditionはVSに付属
496 :
デフォルトの名無しさん:2008/09/26(金) 12:14:16
XXX_FormClosing(object sender, FormClosingEventArgs e)
の中で、
e.Cancel = true;
というコードがあるのですが、これの意図が良くわかりません。
これって何か意図がありますか?
それがどのイベントの時に呼び出されるメソッドかは分かるな?
あとはそのイベントの解説読め
フリーだと商用使用は禁止されてるぞ
GPLの難読化ツールとか憧れるな
500 :
デフォルトの名無しさん:2008/09/26(金) 12:58:08
>>497 ありがとうございます。
フォームを閉じるのをキャンセルする意図ですね。ヘルプ読んだら真っ先に出てきてました。
ありがとうございました。
>>489 入れ替え不可で修正って何の意味があんの?修正したって入れ替え出来ないんだろ?
想定外とかはテスト不足か理解して作ってない、素直に諦める。
タブブラウザを作ろうとして試行錯誤しています。
とりあえずシンプルに、TabPageにWebBrowser(System.Windows.Forms)をAddしてTabControl上で表示させることにしたのですが、
iGoogleのページに移動して、ページ内のすべてのコンテンツが完全に表示される前に「タブを閉じる」のような操作を通じてWebBrowserをDisposeしてしまうと、
IEが立ち上がり、アプリのプロセスが停止するまでものすごい勢いでタブを開いてしまいます(
http://www.google.co.jp/#%22remote_iframe〜などのURL)。
IEを起動しているのはDCOM Server Process Launcherサービスのようです。
現状iGoogle以外のサイトでは起こらないのですが、回避方法がありましたらご教授ください。
また、情報の不足等ありましたらご指摘ください。よろしくお願いします。
503 :
デフォルトの名無しさん:2008/09/27(土) 00:17:28
コンボボックスに名前のリストを何個か表示させておき、comboBox.SelectedTextで
選択されたものをとってこようと思ったのですが、うまくいきません。comboBox.SelectedItem.ToString()
で出来たのですが、SetelctedTextってどんな使い方があるのですか?
>>503 SelectedText でぐぐったら1番上にまんまな答えが載ってたんだが。
505 :
デフォルトの名無しさん:2008/09/27(土) 00:29:08
すいません、見ました。
じゃあとりあえずSelectedItemを使っといて必要なときにはToString()する、
というのでいいですか?
506 :
デフォルトの名無しさん:2008/09/27(土) 00:33:47
コードのある部分を無効化したいとき、#if 0 と#endifで括ってやってたんですが、
C#では出来ないですか?
Conditional属性なんてのもなかったけ。
ほとんど使ったことないけど。
509 :
デフォルトの名無しさん:2008/09/27(土) 00:53:10
>>501 入れ替えできないってのは容易に入れ替えできないということだろ。
たとえば、本番環境で24時間稼働していてテスト環境では現象が再現しない場合など、メンテナンス時などに詳しくログはくものに入れ替えるとか。
デリゲートは本当に遅いの?
ただの仮想関数よりも?
どこで聞いてきたのさ?DynamicInvokeしなければ速いよ。
C#なじてんで…
(インライン化されてない)普通のメソッド呼び出しと仮想関数呼び出しだって、
遅くなるのは間接参照1回分よ。
デリゲートはそれよりはちょっと遅いかも。
普通の関数ポインタよりも高機能なことやるのに色々オーバーヘッドかかってるだろうし。
ILも見ずに議論とな
ILからJITされた結果も確認せずに議(略ってどうやったら見れるのだろう。
仮想関数のオーバーヘッドはJITでほぼゼロになる。
インライン化もたいていJITでやってる。
ILはあんまり見ないけどJITコンパイル後のは時々見る
こっちの方が分かりやすい
C#のJITではC++でコンパイルされたコードより高速なコードが出力されると聞いたが
CPUごとに最適化できるという意味でな
そういう場合もある、程度だろ。
まぁなんにせよ初回実行にすこし時間かかります
Cとアセンブラの関係とそう変わらないと思う。
どうしても人手の最適が強い部分もあるし、
機械的な最適化の方が強い場面、あるいはそれで十分な場面も多々。
できるのとするのは別問題だけどな
523 :
デフォルトの名無しさん:2008/09/27(土) 23:26:34
>>511 デリゲートは仮想関数よりもおそいらしい。
どっかの英語のサイトにテスト結果出てた。
普通の関数>>>>仮想関数>デリゲートってかんじ
仮想関数とデリゲートは1割ぐらいの差?それほど気にすることじゃないかと。
どっちにしろ普通の関数よりは数倍遅いので其れは柔軟性に必要な代償だと思ってあきらめるがヨロし。
フォーム上にtextboxを複数設置してるんですが
それぞれ同じイベントを記述したい時
どのようにすればいいのでしょうか?
private void textBox1_Enter(object sender, EventArgs e)
{
textBox1.BackColor = Color.RED;
}
private void textBox1_Leave(object sender, EventArgs e)
{
textBox1.BackColor = Color.White;
}
フォーム上のテキストボックスをコピペしてもイベント記述は
コピーされないので、困っています。
このような連番のコードを生成するアプリなどあるのでしょうか?
全く同じ処理を行うと解釈していいんだろ
ならプロパティ ウィンドウのイベントから全部のTextBoxのEnter/Leaveに
textBox1_Enter/textBox1_Leaveを設定すればいい
ありがとう、できました
>>524 > 普通の関数>>>>仮想関数>デリゲートってかんじ
普通の関数が大きく有利になるケースとして、
テストに使用した関数がサイズが小さくJITでインライン化された場合がある。
仮想関数やデリゲートの場合はサイズが小さくてもインライン化されない。
int f(int i) { if (i>=0) return i; else -i; }
という関数を使用した場合普通の関数はJITでインライン化されて非常に有利になる。
最適化をOFFにすればインライン化は抑制されるが、
最適化前提で設計されている.NETのパフォーマンス測定で意味のある行為ではない。
最適化ONのままインライン化を抑制するには無駄なコードを挿入してサイズを増やす必要がある。
テストでは引数i は負になることはないとする。
int f(int i) { if (i>=0) return i;
意味のない大量のコード; -- ただし最適化で捨てられないように
Randomで生成して結果はConsoleに出力するようにするなど工夫が必要
else -i; }
さらにデリゲートに関してはデリゲートの生成を減らす工夫が必要になる。
これらの条件でテストすると普通の関数・仮想関数・デリゲートはほぼ変わらなくなる。
君は注意力が足りないようだ
リフレクション経由の呼び出しくらいになるとさすがに問題になるだろうけど
インターフェイスとデリゲートなんて普通の使い方ではほとんど意味のない差
>>525 こっちに逃げてきたのか?
お前は基本から学べと言っただろカス
532 :
525:2008/09/28(日) 14:33:34
?
delegateからvirtual呼ぶとダブルパンチで遅くなるのかな
まぁリフレクション経由の呼び出しもループの中とかで使わなければ十分に速いんだがな
繰り返しリフレクション経由の呼び出しをするときはCreateDelegateを使うのがセオリー
数百のイベントを毎秒60回呼んだらまずいの?
リフレクションなら死ぬかもね
538 :
デフォルトの名無しさん:2008/09/28(日) 23:31:36
C#からIEをコントロールするのはどうすればよいですか?
やりたいことは、アクセスしたURLヒストリを取得したり、ヒストリを消したり、
とかです。
COMをラップ
RichTextBox.DetectUrlsだとファイルパス(C:\tempなど)でLinkClickedイベントで拾えないんですが、
DetectUrlsの対象を独自に変更することはできますでしょうか?
もしくは代替の実装方法はありますでしょうか?
file://形式のファイルパスにするとか
>>541 それだとリンクになりますねー
付箋紙アプリを作っているんで、エクスプローラからコピった文字そのままでリンクになるのが目指すところではあるんですよね
543 :
デフォルトの名無しさん:2008/09/29(月) 09:32:20
>>539 COMをラップする方法を教えてください。
545 :
デフォルトの名無しさん:2008/09/29(月) 11:13:59
>>544 調べてみて、IEのCOMオブジェクトのCUrlHistoryを使えばIEのヒストリにアクセスできるらしい、
という情報を得たんですが、これ以上どうすればいいのかぜんぜんわかりません。
初歩的な質問ですが、お答えいただければ幸いです。
string[] s = new string[] { "a", "b", "c", "d" };
string msg = string.Format("{0}, {1}, {2}, {3}", s); // @
MessageBox.Show(msg);
int[] i = new int[] { 1, 2, 3, 4 };
msg = string.Format("{0}, {1}, {2}, {3}", i); // A
MessageBox.Show(msg);
@は成功するのに、AでFormatExceptionが発生します。
「インデックス (0 ベース) は 0 以上で、引数リストのサイズよりも小さくなければなりません。」
MSDNや他サイトを見るのですが、失敗する意味がよく分かりません。
どなかたご教示願います。
配列の共変性
参照型配列は基底クラスの配列として扱える(これが共変性)
stringはobjectから派生しているからstring[]もobject[]として扱える
ところが値型配列にはこれが適用されない
intは一応objectから派生してるけどint[]はobject[]として扱えない
>>547 丁寧な解説、ありがとうございました。
同様にbyte, short, long, decimalなども
扱えないことを確認しました。
(´・∀・`)ヘー
自作のプログラムからエクセルファイル(.xls)を起動して
そのエクセルファイルが閉じられるまでプログラムを中断したいのですが、
何かいい方法はありませんか?
using System.Diagnotics;
// 中略
var excelInfo = new ProcessStartInfo(エクセルファイル名);
excelInfo.Verb = "open";
var excel = new Process();
excel.StartInfo = excelInfo;
excel.Start();
excel.WaitForExit(); // ここでInvalidOperationException
msdnなどを調べて上記のコードを書いてみたんですが、
これだと既にエクセルで何かのファイルを開いていたときに
最後の行でInvalidOperationExceptionが発生してしまいます。
自分の開きたいエクセルファイルが開いている間だけ、
プログラムを待機させる方法があれば教えてください。
Excel.exeを別インスタンスで立ち上げる。COM Interopでもよい。
>>551 すみません、別インスタンスで立ち上げるのってどうやるんですか?
Processクラスの中にはそれっぽいのは見つけられなかったんですが・・・
InteropもGoogleで検索していて何度か見かけたんですが、
ウィンドウハンドル?の取得方法が分からなくて挫折してしまいました。
どちらの方法でも構いませんので、もう少し詳しく教えていただけませんか?
DDE使わないようにすればいい
(シェル関連付けのopenはデフォルトでDDE)
>>553 すみません、「dde process open」「ddeとは」などで検索はしてみたのですが、
どうやるのか分かりませんでした。
また明日検索してみます。
ありがとうございました。
おまえ検索馬鹿か?
ProcessとProcessStartInfoのドキュメント読め
>>550をみるかぎり、COM Interopがベストだとは思うがな。
ツリー状のコレクションはないの?
System.Collections.Generic.TreeSet<T>をリフレクションで
それは作れなかったよ
リストとかから削除されるとDispose()かける方法はないですか?
System.Collections.ObjectModel.Collection<T>から派生して
RemoveItemやSetItemやClearItemsをオーバーライド
>>557 書き捨てコードならListから派生させれば十分かな。
これでツリーの代わりになる。
public class Node<T> : List<Node<T>>
{
public T Value;
}
>>556 すみません、COM Interopを使用する場合って具体的にどうすればいいんですか?
ググればいいんです
参照の追加で希望のCOMオブジェクトを選ぶ
>>550 ShellExecute() 相当で開くんじゃなくて、Excel のフルパスを
指定して CreateProcess() 相当で開いたらどうだろ?
面倒なだけだろ
C#の正規表現とPerlの正規表現の違いはどこが挙げられるでしょうか?
また、それらを変換するしくみとはないでしょうか?
× しくみとは
○ 仕組みが
正規表現つかって変換
はじめましてC#超初心者です
解説本を読む前に質問してます
class1.csってところを下記の様にしたんですけど
エラーになります
どうすればいいですか
Winsockで接続するテストです
何をどうしたらいいのかわかりません
よろしくお願いします
動くように書換えお願いします
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace winsock_tes
{
public class Class1
{string url = "
http://www.yahoo.co.jp/";
System.Net.WebClient wc = new System.Net.WebClient();
wc.Encoding = System.Text.Encoding.GetEncoding(51932);
string src = wc.DownloadString(url);
wc.Dispose();
}
}
うん、じゃあ本読め
>>576 流れも読めないのに変なレスつけんなボケ
どう見ても
>>574さんはこっちで聞けばいいよって教えてくれているって感じだよね
それに対して
>>575でお礼を言ったんだから
>>574に聞きに行くんだろなあって想像できませんか
はげ
578 :
デフォルトの名無しさん:2008/10/01(水) 19:51:01
マルチキャストで問い合わせたほうが効率がいい
やっぱりシングルトンがいいん
>>565 うーん、「Com interop 開く」とか「Excel ウィンドウハンドル」とかでGoogleってるんですけど、
未だにわかりません。
何で検索すれば出てきますか?
581 :
580:2008/10/01(水) 22:49:39
すみません。自己解決しますた。
Listは継承しちゃだめよん
internalかprivateなクラスならガイドライン的には問題ないはず
584 :
デフォルトの名無しさん:2008/10/02(木) 00:03:50
今、計算結果キャッシュをするクラスを作っているのですが
ゴミ掃除をガベージコレクトのタイミングに合わせて実行したいと思っています
ガベージコレクタのコレクトタイミングを取得したいと思ったのですが、GCクラスにはそれらしいイベントはなさそうです
何か良い方法等ありますでしょうか?
GC動くのは時限式じゃないぞ。
GCとタイミング合わせるってのがそもそも変。
WeakReferenceを使ってGCに対応したキャッシュにするのが正攻法
計算結果って単なるintやdoubleの数値なの?
それくらいならキャッシュのサイズを固定して溢れたら古いのを捨てる方がいいんじゃね
588 :
デフォルトの名無しさん:2008/10/02(木) 00:09:56
WeakReference は使っています
class Element<T>
{
public WeakReference Data;
public Element Next;
public Element(T data) { Data = new WeakReference(data); Next = null; }
}
で、このElementはリンクリストになっていて管理されているのですが、このノードがゴミなのです。
メモリーが不足してきたら、全ノードを探っていってもはや使われていないWeakReferenceを持つノードを全部削除してしまおうと思っています。
WeakReferenceで大半のゴミはなんとかなるのですが、ノードゴミも削除したいと思っているのです。
System::Collections::ObjectModel::Collection<T>ってのがあるな
>>589 l三`ー 、_;:;:;:;:;:;:j;:;:;:;:;:;:_;:;:;_;:-三三三三三l
l三 r=ミ''‐--‐';二,_ ̄ ,三三三彡彡l_ この感じ・・・・
lミ′  ̄ ー-'" '=ミニ彡彡/‐、ヽ
l;l ,_-‐ 、 __,,.. - 、 彡彡彳、.// 異教徒か・・・・
_______∧,、_‖ `之ヽ、, i l´ _,ィ辷ァ-、、 彡彡'r ノ/_ ______
 ̄ ̄ ̄ ̄ ̄ ̄ ̄'`'` ̄ 1  ̄フ/l l::. ヽこ~ ̄ 彡彳~´/  ̄ ̄ ̄ ̄ ̄ ̄
>>588 リンクリストはLinkedList<T>使いなよ
>>590 2008はそのうち入れようと思っていましたが・・・
それでもスレッド使わないと駄目っぽいですね、一応スレッドセーフには作ってあるのですが
シングルトンであるこのクラスにスレッドを使うと、監視スレッドを停止させるタイミングがウインドウのcloseイベント等から取得などとなって汎用性がものすごく厳しいです。
別の方策を考えてみます・・・
こういうのってデストラクタ使えばいけるのかな?
よくわからナス
子プロセスでメモリクリーナー使えばいいんじゃね?
こんな感じかね
class AutoDeletedListItem<T> {
private class AutoDeletedListItemValue {
public AutoDeletedListItemValue(T value) { this.Value = value; }
~AutoDeletedListItemValue() { if(Finalized != null) Finalized(this, EventArgs.Empty); }
public T Value { get; private set; }
public event EventHandler Finalized;
}
private WeakReference valueRef;
public AutoDeletedListItem(List<AutoDeletedListItem<T>> owner, T value) {
var itemVal = new AutoDeletedListItemValue(value);
itemVal.Finalized += (sender, e) => { this.Owner.Remove(this); };
this.Owner = owner;
this.valueRef = new WeakReference(itemVal);
}
public T Value { get { return ((AutoDeletedListItemValue)this.valueRef.Target).Value; } }
public List<AutoDeletedListItem<T>> Owner { get; private set; }
}
--------
// List<AutoDeletedListItem<T>> list;
// T value1, value2;
list.Add(new AutoDeletedListItem<T>(list, value1));
list.Add(new AutoDeletedListItem<T>(list, value2));
すいません、質問です。
「main関数を持つクラス内全域」で有効なインスタンスを宣言すること、は可能でしょうか?
class A:main+他を宣言。
class Bのインスタンスをどっかで生成する。←これをこのクラス内の各所から直接アクセスしたい。
class B:メンバ+メソッドを宣言
説明が分かり難くて申し訳ないっす。(´Д`;
AのフィールドにBのインスタンスを入れればいいだけ
Aをインスタンス化したくないならstaticフィールドに入れる
>>599 それをやってみたんですが、
Bのメソッドを呼び出すところでコンパイルエラーがでてしまって。
error CS0118: 'A.b' は 'フィールド' を意味しますが、 'クラス' でなければなりません。
と言われます。orz
AフィールドでBをインスタンス化してますが、A自体をインスタンス化してないからでしょうか・・・。
が、main内でAのインスタンス化をしても全域有効にはならず。orzorz
static class A {
static B b;
static void Main() {
b = new B();
処理1();
処理2();
}
static void 処理1() { b.Hoge(); }
static void 処理2() { b.Foo = "あいうえお"; }
}
>>601 おぉ。直接はいきませんでしたが、1行目の
static class A
を
class A
にしたらいきました。
Bのインスタンスをstatic宣言するのがポイントだったんですね。
ありがとうございました。
なんでstaticフィールド変数をstaticメソッドからしか扱えないわけ?
インスタンスメソッドからでも扱えるはずだ
クラス内部だろうとどこだろうと
staticフィールドはインスタンスメソッドから扱える
private static int a;
private void b()
{
this.a=1;
}
ができるとでも?
無条件にthisをつける派の人だったのか
thisはここって意味じゃなくて自分自身のインスタンスって意味
staticにインスタンスは関係ないからその記述は無効
ASP.NETで、ListViewコントロールを使ったときに、
連続するRowのあるセルを縦に結合することは可能でしょうか?
GridViewだと可能らしいことはググって発見できるのですが‥‥。
継承を必要としないならstaticクラスでもいいんだよね?
ということはほとんどの場合staticになるんじゃない?
>>609 釣りじゃなくて天然だったのかw
class MyClass
static int a;
void b(){
MyClass.a=1; //このときMyClass内部にある静的メンバであるため、普通にa=1としても当然良い
}
オブジェクト指向が全く分かってねえな。
C#入門からやり直し。
>>613 いいえ。
いいえ。
最近アホが多すぎだわな。
ローカル変数やグローバル変数、static変数など全部自動で色分けしてくれよな
32bitフルカラーという高性能マシンの能力を全然引き出してない
617 :
614:2008/10/02(木) 14:47:22
ちょっと訂正。
class MyClass
{
public static int a;
void b(){
MyClass.a=1; //このときMyClass内部にある静的メンバであるため、普通にa=1としても当然良い
}
}
aがPublicじゃないとするとなんかコメントの意味合いがなくなってしまうな。
これだと実感しやすいか。
>>615 その答えを導き出した根拠を具体的に述べよ
>>618 ttp://ufcpp.net/study/csharp/oo_static.html#class 自分で調べることもできないカスにはプログラミングは難しい。
アホにも分かるように説明すると、
static class MyClass
{
public static string 性, 名, 住所, 電話番号;
}
継承の必要がないのでstaticなクラスにしてみたが、
100人分の電話帳を作りたいのだが、そもそもMyClassインスタンスが作れないので無理。
staticなクラスということは電話帳というよりも、ある特定の人の情報を格納するクラスということになる。
つまりこの場合、クラス名はMyClassではなくMyHoneyとでもすべき・・・というのは冗談だ。
ハニーのためなら何でもしちゃう
621 :
612:2008/10/02(木) 15:21:34
みんな、まったりいこうよ。
すいません、質問です。
数値の2.5を時間の2:30と表示するにはどうすればいいですか?
2.51はどう表示してほしいですか?
そんなことは聞いてません
数値の2.5を時間の2:30と表示しさえすればいいんです
>>622 とりあえず思いついたまま書くとこうかな。
double value = 2.5;
int hour = (int)value;
int minute = (int)((value - hour) * 60);
string str = string.Format("{0}:{1}", hour, minute);
if (value == 2.5) {
return "2:30"
}
これで良いんじゃね?
60倍して60で割った数(整数)と余りを出すとか。
>>619 わざわざ得意例を出すなよ
データセットをstaticにするわけないだろ
そもそも、そういう場合クラスを使う必要すらない
通常のクラス運営をする場合staticでもいけるだろうと言っているんだがな
>>619のクラスを利用する場合
static class library
{
static List<MyClass> myClass;
static メソッド();
static メソッド();
static メソッド();
}
でもいけるだろといってるんだよ
特異って1個でも例があったら理由になるでしょ
通常のクラス運営って何なんだろ
>>628 通常のクラス運営って何?
なんかどうみてもOOPが全く分かっていないようにしか見えんのだが。
static class library
{
static List<MyClass> myClass;
static メソッド();
static メソッド();
static メソッド();
}
んでMyClassはクラスじゃなくて構造体にするってか。
それなんてC言語?
わざわざオブジェクト指向言語使ってそんな設計する奴いねーよ
632 :
631:2008/10/02(木) 18:20:06
634 :
625:2008/10/02(木) 18:25:31
>>627 どうみてもそっちのがスマートだなw
負けました。
double value = 2.5;
int hour, minute;
hour = Math.DivRem((int)(value * 60), 60, out minute);
string str = string.Format("{0}:{1}", hour, minute);
635 :
631:2008/10/02(木) 18:28:58
>>633 多分TextBoxクラスとかButtonクラスがstatic classじゃないだろうがという反論を押さえる為に、
そういうトンチンカンな事を言い出したんだと思う。
>624と返しているところを見ると、
>626が一番スマートなのは間違いないように思える件w
みんな優しいなw。
Console.WriteLine("{0}:{1}",(int)2.5,(2.5-(int)2.5)*60);
const string 2.5="2.30";
switch(value){
case 2.5: return "2:30";
default: return "そんなことは聞いてません";
}
644 :
622:2008/10/02(木) 22:38:41
>>643 そういうところは読んだのですが、
どうすれば終了まで待てるのかが分かりません。
>>550ででのエラーはレジストリの値からexcel.exeを新しく起動することで一応起こらなくなりましたが、
中のxlsファイルだけ閉じてもエクセル本体を閉じないかぎりProcess終了になりません。
こういうプログラミングをしたことある人が居れば教えてください。
647 :
622:2008/10/02(木) 23:00:40
トイ
トイ
トイ
i三i
〃 ヾ、
〃 ヾ、
〃 ヾ、
〃 ____ ヾ、
〃 / \ ヾ、
|| / _ノ ヽ、_ \ ||
|| / o゚⌒ ⌒゚o \ ||
ヾ,| (__人__) |//
. (⌒)、_ ` ⌒´ _,(⌒)
/ i `ー=======一'i ヽ
l___ノ,、 ,、ヽ___i
l l
>>646 マクロの WorkBook_Close に引っかけるか。
ファイルハンドルなりを使って、開いているファイルを監視するか。
どちらにせよ、一筋縄じゃ行かない、ってことだわな。
ググって解決しなかったら急に弱気になる最近のSEって…
30越えてPEって・・・・
>>646 プロセスの終了は自分で起動したときのようにハンドル取ればどうにでもなるだろう。
どんなやり方でも、1から順番に教わらないと何もできないんじゃキミには無理。
DataGridViewでDataSourceをList<T>などにしたときに、
ちょうどListViewのDetailモードのように、要素数にかかわらず(たとえ0でも)
クライアント領域いっぱいにグリッドを表示しておくことってできない?
なんでSystem.Collections.Generic.TreeSetは封印されてるの?
listviewにrtf書式を表現できないものでしょうか。
Textに対して、一部ボールドとかやりたいのですが。
オーナードロー
ただしRTFは自前で解析
WPFならすっげー楽だな
>>653 左様か。
しかし、「諦めろ」ってなんだよその口調w
君って日常生活で余程人に抑圧されてるんだろうねきっと。
>>657 質問者という立場を弁えろ
警護も使えないカスに答える義理はない
謙虚であるべきではあるが、回答者が上から目線というのもいかがか。
>>659 警護使える立場だから、相当なお偉いさんじゃないか?
>>658 なんだこのクズ
お前出入り禁止
ここの解答者しなくていいから来るな
どこの掲示板から大量流入してきたの?
>>660 IDのない板だからね。訳の分からない奴は質問者本人じゃないと
見なしてスルーでいいよ。あとから本当に質問者本人だと分かって
びっくりすることもあるけど。
2chでいちいち言葉遣いにつっかかる奴ってなんなの?小学生なの?
辞書引かないだけましだ
>>654 System.Windows.Forms.TreeNodeCollection
ツリーリストの代用にならんだろそれは…
XML
重い
エクスプローラの左側のフォルダツリーを表示してくれるコントロール無いのかな?
自分でシェルAPI叩いて実装しなきゃダメ?
codeprojectとか探せば見つかりそうな気もする
Threadについて質問です。
WPFを用いて、プログレスバーを用意し、ファイルを開く(読み込む)間にその進捗状況を表示したいと思っています。
ただ、ファイルを開く処理が重いため、別のスレッドにしてDispatcher.Invokeを用いてプログレスバーの更新を行っています。
そこで一つ質問なのですが、もし、このプログレスバーを表示しているウインドウを閉じた場合、スレッドは動き続けるのでしょうか。
また、もし動き続ける場合には、Dispathcer.Invokeメソッドによって(すでにウインドウが閉じられているため、)参照なしのプログレスバーを操作しないようにするにはどうしたらいいでしょうか。
よろしくお願いいたします。
別にやらせときゃいいと思うけど
677 :
675:2008/10/05(日) 01:55:39
>>676 その場合、Invoke処理に関しては例外で回避ということになるのでしょうか?
>>673 ListViewのTreeNodeをDriveInfo,DirectoryInfo,FileSystemInfoを使って自分で構築する
先月作った私の初めてのC#プログラム
簡単で楽しかったですよ
>>656 thx:)
やっぱ、オーナードローか。
MeasureStringの結果がフォントによって綺麗じゃないので困ったなー。
一旦RitchTextBoxに流し込んでビットマップをDrawImageで描くのかな。
WPFはぜんぜん勉強してないわ。
>>654 リフレクション使って、TreeSetのすべてのメンバをデリゲートでバイパスする
アダプタクラスを作ればいいんじゃね
>>679 別にいちゃもんつけるわけじゃなくて純粋に聞きたいんだけど、
>MeasureStringの結果がフォントによって綺麗じゃない
これってどういう意味?
>>677 普通にやってればInvokeの呼び出し自体では例外出ないはずだけど?
>>681 ども。
プロポーショナルフォントとかだと、
MeasureStringの戻り値(PointF)の精度が、あまりよくない気がするんです。
↓を試したんだけど、
@RitchTextBoxにrtf書式で(複数フォントを)Appendしたとき
A単純に平文(単一フォント)をListViewのtextにsetしたとき
BDrawString+MeasureStringを繰り返してListViewに描画したとき
Bのとき、DrawStringの度に字間が空いたり、くっついたりして、
最終的に描画される文字列が@に比べて美しくない(と思う。)
>>683 あーなるほどそういう意味か。
でもそれってMSDNにも書いてある現象だし、一応解説のところに回避方法も書いてあるね。
まあMSDNに書いてある通りの方法で本当に望みどおりの結果が得られるかどうかは
申し訳ないけど知らないけど。
ネットへのデータ送受信についての質問です。
ネットへのデータ累積送信量(MB)と累積受信量(MB)を表示したいんだけどどうしたらいいかわかりません
どなたかお願いします
送受信した量を覚えておけばいいだけだと思うけど、そういうことじゃないんだろうな
ブラウザや他のアプリケーションでのデータのダウンロードなど全て含めてです
>>686 iphelper にそんな API があったような希ガス
>>684 C++/CLIで見るとなんか宣言はされてるっぽい
使えないけど
>>685 うん。「解説」のところね。
私もそこまでは試してないw
RitchTextBoxのAppendTextメソッドの内部実装はちゃんとしてるんだろうなぁ。
ListBox.Items[0].AppentText(string, Font, Brush);
こんなのがほしいなぁw
> RitchTextBoxのAppendTextメソッドの内部実装はちゃんとしてるんだろうなぁ。
RichEdit丸投げなのでそもそもGDI+使ってない
ListBox の Item にひとつひとつ RichEdit を貼り付けて(ry
>>690 ググってもこのスレしか出てこないんだが
そりゃinternalだからな
why?
public=世界
internal=日本
private=代々木公園
>private=代々木公園
ww
ワシントンハイツか
画像処理関連で連続画像として物体を追跡するアルゴリズムを考えてるのですが
どのようなアルゴリズムがありますか?
物体だけが動くのかによって難易度が極端に違うな。
その手の研究は、高速道路で速度違反とりしまるやつ
とかライン工場で、部品ながれてるのがきたのか、おわった
のか判定するやつ
簡単なやつなら、最小エントロピー法とか。
ごめん、おれのもってるプログラムは、最大エントロピー法だった。
ぐだぐだアルゴリズムなんていきなり検索せずに
ビットマップを時系列にもって自分で解析するほうが楽だぞ。
おれの隣の人がつくったやつで人追跡プログラムってのもあったきがする
人とみなす定義を最初にきめてもらって(追跡したい物体ね)
画像でその人と判定する部分を連続性を仮定して追跡していくやつ。
ま、発想は簡単だろ。あとは実装しながらおもいつくとおもうよ。
C++は長いんですけどC#は全然ダメな私に教えてください。
参照渡しの関数を作りたいんです。
aとbをもらって結果をansに入れて返します。以下のように書きました。
protected void foo(int a, int b, ref int ans)
{
ans = a + b;
}
呼び出すときにfoo(1, 2, ref ans);って呼び出すわけですが、なぜrefってつけないといけないのでしょう?
だってプロトタイプで第三引数は参照になっているわけだからコンパイラは参照型であることが分かると思うのですが。。
愚問かな?なんか理由があるなら知っておきたいです。
>>705 プログラマが誤って値渡しのつもりで参照渡しを使うのを防ぐためじゃない?
関係ないけどその例だと ref より out の方が適切だと思う。
>>706 ありがとうございます。
了解いたしました。
以下のようなバグが出ました
>System.Runtime.Serialization.SerializationException はハンドルされませんでした。
> Message="空のストリームを逆シリアル化しようとしています。"
空のストリームを逆シリアル化できる方法を教えてください
できないから諦めろ
でなきゃもっとまともに質問しろ
わかりました
書きなおしますね
System.Runtime.Serialization.SerializationException はハンドルしつつ、
空のストリームを逆シリアル化できる方法を教えてください
空なのにどうしろと
キーボードカスタマイズを実装するとしたら、どうするのが良いでしょうか?
グローバルなキー割り当て(MenuItemに設定出来る)については
[機能名:MenuItem:関数:ショートカットキー]
のセットを作れば、作れそうです。
しかし、各コントロールごとのキー割り当ては大変そうです。
イベントハンドラに全キーのcase文を書いて
押されたキーを上記セットから検索し、機能があれば実行、みたいな感じで
いけますかね?
(しかし、考えるだけでも大変そうだ・・)
イベントハンドラはKeyPress,KeyDown,KeyUp3つもある上、
例えばツリービューだとCtrl+Vを押すと音が鳴るのを防ぐために
KeyPressでhandledプロパティをtrueにするなどの個別の処理があったりするし
実装されている方はどんな感じでやっていらっしゃるんでしょうか?
WPFでアクションバインディング
フックか、調べてみます。thx
ProcessCmdKeyで入力全部のっとるって手も
C#を使ってGUIプログラミングしてるんですが、RADで使えるコントロールがなかなか使いにくくて困っています。
だれか先達が既存のコントロールを改良したものを公開してないかググってみたのですが、見つかりませんでした。
昔、海外のサイトで改良されたコントロールが公開されているのを見かけたのですが、ブックマークし忘れ、
どこのページだかわからなくなってしまいました。
日本/英語圏どっちでもいいので、自作のコントロールを公開しているようなサイトはありませんでしょうか?
一生愚痴ってろクソが