6 :
1 :2006/11/02(木) 20:56:50
7 :
デフォルトの名無しさん :2006/11/02(木) 21:04:15
part35はここですage
削除依頼出してやり直したら? 過去ログの整理がややこしい
>>8-9 他スレ(つってもC#初心者スレだが)の人間が善意で立てたのにそれかw
11 :
1 :2006/11/02(木) 23:38:31
>>10 他スレの人間というわけではなく、両方のスレを覘いていたわけだが。
今は反省している。
まあいいでしょ つぎ忘れなければ36ってことで
ページ間のワードラップについて質問した者です。とりあえずの解決策が分かりましたので、 貼っておきます。MeasureStringに文字数計測があったとは、盲点でした。 private int printingPosition; private void printDocument_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e) { printingPosition = 0; } private void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { StringFormat format = StringFormat.GenericTypographic; int charactersFitted, linesFilled; e.Graphics.MeasureString(textMain.Text.Substring(printingPosition), textMain.Font, e.MarginBounds.Size, format, out charactersFitted, out linesFilled); e.Graphics.DrawString(textMain.Text.Substring(printingPosition, charactersFitted), textMain.Font, Brushes.Black, e.MarginBounds, format); printingPosition += charactersFitted; if (printingPosition >= textMain.Text.Length) { e.HasMorePages = false; } else { e.HasMorePages = true; } }
乱立するなよ(´・ω・`)
こっちを削除で良いだろ
削除人は忙しいから、こんなことで削除はなかなかしてくれないよ。 パート35の人よんできてー
19 :
デフォルトの名無しさん :2006/11/29(水) 21:19:33
sex
VS2005で、WindowsMobile用のアプリを作ろうとしてます。 URLから、ファイルをダウンロードし、ファイルサイズを取得したいのですが、どのようにすればいいでしょうか。 取っかかりを教えて貰えると助かります・・。
WebRequest とか WebResponse あたりを見ればいいんじゃね
GetTickCountに相当するような関数ってありませんか?
P/Invoke すれ 単に時間を計りたいのなら StopWatch クラス使っとけ
横入ですまん。 P/Invoke とは、"マネージコードからアンマネージコード(Win32APIなど)を呼び出すこと"と理解してOK?
System.Environment#TickCount
W-ZERO3用のアプリをC#で組もうとしています。VS2005です。 自動的にダイアルアップし、切断するような動作をさせたいのですが、ダイアルアップの確立、切断は、どのようにするとできるのでしょうか。
27 :
デフォルトの名無しさん :2006/12/01(金) 12:44:00
製図用のツール作ろうと思ってて問題が発生したので質問します フォームBを、別のフォームAから操作して、フォームB内のボックスに入力する値を 決めているのですが、フォームBはアクティブにならないように設定したいです。 OS下段のタスクバーにはフォームBが表示されないようにはできたんですが、 Alt+Tabを入力した時にフォームBの選択アイコンが表示されてしまいます。 このアイコンを消す方法をご存知の有識者の方いらっしゃったら教えてください。 お願いします。
28 :
デフォルトの名無しさん :2006/12/01(金) 14:54:31
class hoge { Button[] b; public hoge(int n) { b = new Button[n]; for(int i = 0; i < 10; ++i) { b[i] = new Button(); b[i].Left = i * 20; b[i].Visible = true; } } } ボタンを引数の数だけ並べる場合に こういうようなコードを考えたのですが間違ってますか? ボタンが一個しか描画されないのですが
29 :
デフォルトの名無しさん :2006/12/01(金) 14:55:55
>for(int i = 0; i < 10; ++i) 間違えました for(int i = 0; i < n; ++i)です
>>28-29 ソースの中にでてきてないが、適切なContainerControlのControlsにAddする。
自分の格納されているフォルダのパスを取得したい場合は、どうしたらいいですか?
33 :
デフォルトの名無しさん :2006/12/01(金) 17:21:50
Application.StartupPath;
34 :
デフォルトの名無しさん :2006/12/01(金) 17:40:25
複雑なメッセージボックス(文字列の入力欄が複数あったり、数値を設定させたい) を自分で作りたい場合、新しいformとしてメッセージボックスを作って、それをメインフォームから Form2 f2 = new Form2;みたいに呼び出せばいいんですか?
>>37 そういうユーティリティを作りたい、欲しいという話ではなくて、
ダイアルアップして、処理をして、終了後すぐ切断するプログラムを作りたいので、
その手法をという話です。
C++でやれば?
つまり、できないという事ですか?
ListViewに棒グラフを表示しようと思ってオーナードローしようと思ったのですが ListViewではオーナードローが出来ないようなのですが、どのようにしたらListViewに 自由に描画できるようになりますか?
OwnerDraw プロパティがあるだろ
ローカル変数のみを使用したstaticメソッドは、スレッドセーフと 考えていいんでしょうか?
static じゃなくても状態に影響しない・されないならスレッドセーフ。
45 :
43 :2006/12/13(水) 21:04:42
>>27 MSDNみたら?
それとどうやって
>OS下段のタスクバーにはフォームBが表示されないようにはできたんですが、
を実現したか書いたほうがいいよ。
多分その方法が書いてあるMSDNのページから手繰っていくと
以下の文章を見つけることが出来るよ。
Alt + Tab キーを押したときに表示されるウィンドウには表示されません
ただ希望の内容を全て満たすかは分からないよ。
C#で作ったアプリってどう考えてもメモリ食いすぎだよな
よくある光景 ・メモリ食いすぎ ・別フォームへの値の受け渡し
スタート(左下)からゴール(右上)に向けて障害物をさけながら進むプログラムを作っているのですが、 FillEllipseで作った円をゴールの座標に動かす場合、 どのような方法をとるべきでしょうか? とても初歩的な質問かとは思いますが、 入門書などでさがしても方法がのっていないもので ご教示おねがいします。 使用ソフトはMicrosoft Visual C# 2005 Express Editionです。
ここは廃棄スレ
51 :
デフォルトの名無しさん :2007/02/23(金) 13:30:22
はっきり言って俺はC#は詳しいよ。 Append()は戻り値がvoidなので新たにオブジェクトを作らない。 よーく考えろ。  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\| ̄ ̄ ̄ ̄ ̄ ̄ _,,t-‐‐-、,-‐‐-、 三'::::::............... .....::::::`y,. ナ::::::::::::::::::::::::::::::::: :::::::::::::ヾ | ̄| V::::::::::::::::_{{ ({∫∬ノノjヾ:::::{ | ̄| | ̄| ナ::::::::::::::i`__,,,,,,,ァ_ _,,,,,_ t;;:ヌ | | | | イヘ::::::(ヾ~!,ャt、 !'''i ィtン )=f }f | | | | i {t)テ" ヘ' '___,イ ヽ_/ 介' | | | | _,rヘ_,j|!' /ー--''! |' |,.ィ―'''' ̄ /| | /二ク ! /;;:::'';;::''::;;:/ { ! 、 ヾニン ノ\ /'''::::;r|''':::;;;| | ! \ _,,./|::;;'''\ /:;;/ |;;;''::;;| 丶\ `__>-ー´ !;;;:'''::iヽ、 i/ |'::;;;;''| 三 ―''" !''::;;;;| /ヽ /⌒ヽ |;;''':::;| \ !;;::''|/ i / \{'';;;::''}  ̄二ニ= !::;;| | /ヘ |;;:::::;{ ‐- !/ | / i |:::;;;''! ー ! / | / l |;;'';イ } {、 〉、 ∧テ{ ヽ _ _,,,,;;;;;:::-==ニ;;;_ ノ __,イ´ / \_ //レ!  ̄  ̄ { ̄ |
C#しかできないキモヲタは氏ね
.Net Framework 2.0 の System.Security.Cryptography; 以下のクラスでRSA暗号を 扱うときのことに関して質問があります。 まず、秘密鍵K 、Kから生成され予め配布された公開鍵P、Kで暗号化された データCがあります。今から実装するプログラムにおいて、 RSACryptoServiceProvider.FromXmlString() を用いてPを読み込み、それによって Cを復号したいのです。質問内容は、 1. そもそもこの処理は実装可能か 2. Kで署名されたデータSを、Pから作られた RSACryptoServiceProvider の VerifyData() で検証することには成功した。しかし、Encrypt() や Decrypt() では鍵が違うと文句を言われたが、別のメソッドを用いるべきか。あるいは何か 留意すべきことがあるか 以上、何かアドバイスがあれば、よろしくお願いします。
>>53 書き忘れました。すみません。実行環境としては WindowsXP Proなんですが、
OAEP パディング は無しでやっています。
「C♯, C#相談室 Part34」
http://pc11.2ch.net/test/read.cgi/tech/1162467959/ から誘導されました。
.Net Framework 2.0 の System.Security.Cryptography; 以下のクラスでRSA暗号を
扱うときのことに関して質問があります。
まず、秘密鍵K 、Kから生成され予め配布された公開鍵P、Kで暗号化された
データCがあります。今から実装するプログラムにおいて、
RSACryptoServiceProvider.FromXmlString() を用いてPを読み込み、それによって
Cを復号したいのです。質問内容は、
1. そもそもこの処理は実装可能か
2. Kで署名されたデータSを、Pから作られた RSACryptoServiceProvider の
VerifyData() で検証することには成功した。しかし、Encrypt() や Decrypt()
では鍵が違うと文句を言われたが、別のメソッドを用いるべきか。あるいは何か
留意すべきことがあるか
実行環境としては WindowsXP Proなんですが、 OAEP パディング は無しでやっています。
以上、何かアドバイスがあれば、よろしくお願いします。
>>57 ここは「C♯, C#相談室 Part34」だ
ワロタ
シンプルで使いやすいユーザーインターフェース という文章から「シンプル」と「ユーザーインターフェース」 を抜き出したいのですが、正規表現でやるとおもうのですが、 どうすればいいのでしょうか? お願いします。
[ア-ン] の正規表現使えばいいかと カタカナだと「ヴ」とかがあるから 実際はもっと複雑な正規表現使わんといかんだろうけど
>>62 ありがとうございます。範囲でやればいいんですね。
ついでに質問なんですが、漢字の場合も範囲でできるのでしょうか?
よろしければ教えてください。
MSDN嫁
>>61 .NETではユニコードブロック名が使えるから、それを用いるとよい。
Regex re = new Regex("([\\p{IsKatakana}]+)");
これで連続するカタカナがキャプチャされる筈。
>>63 漢字の場合もユニコードブロックを使うことが出来るが、CJK統合漢字の
ブロックにはShift_JISには含まれないような漢字(要するに中国や韓国で
使ったりするようなもの)も含まれるので注意。
そのようなものを省きたいとなると、連続領域でも指定できないので、
面倒だろうな。
形態素解析
69 :
デフォルトの名無しさん :2007/04/04(水) 23:38:04
シリアル通信での端末を作りたいんですが、 入力待ちの時にキャレットが点滅して入力を受け付けて、 それ以外の時は入力を受け付けない(入力しても画面にエコーさせない)、 という2つの状態はどう判断すれば良いのでしょうか?
質問は日本語で。
71 :
69 :2007/04/05(木) 00:03:25
>>70 国語できない人はどこかへいっててください。お願いします。
>>71 ここはC#のスレだよ?エスパー募集のスレじゃないよ?
それ以外を定義したやつにしかわからん
75 :
デフォルトの名無しさん :2007/04/05(木) 20:33:29
ホームページ制作王は、世界の権威であるCOMDEXが認めた 唯一無二のワールドスタンダードである。 ホームページ制作王の普及なくして、 我が国のWebが世界と肩を並べる日は決してやってこない。 これに対し、非標準ソフトを販売する他社は、生活を維持するために工作員を動員して、 2chなどの掲示板で、真実をねじ曲げて、ホームページ制作王を貶し、 非標準ソフトの販促を行っている。 標準ソフト・ホームページ制作王に対して根も葉もない風評をでっち上げ、 非標準ソフトのシェア維持活動を行っている者たちこそ、 悪質な宣伝行為として非難されるべき、これが道理である。 他社製非標準ソフトを野放図にはびこらせておきながら、 世界標準・ホームページ制作王に対して反動的な発言をする 他社工作員たちに正義の鉄槌を下さなければ、我が国のWebに未来はない。 いかなる者も、世界の権威であるCOMDEXの決定に背くことはできない。 世界の権威COMDEXの決定に従わない者に、21世紀のWebをクリエイトする 権利や資格は1つもないのだ。あろうことか、COMDEXの意志を否定することに至っては 許されない暴挙であり、制裁の対象である。非標準のアプリケーションを販売して生計を立てる 他社が送り込む工作員による煽動ともいえる行為、および無知な大衆による工作員を 支持あるいは賞賛する行為は我が国のWebを大きく退行させるものであり、万死に値する。 COMDEXが定めた21世紀の世界標準は、ホームページ制作王のみである。 21世紀も早や7年目。我々日本国民は、他社工作員の煽動行為に対して真実を見抜く眼を持ち、 ホームページ制作王の我が国における標準化を達成しなければならない。 COMDEXが定めた世界標準・ホームページ制作王の普及は、情報化時代において、 日本国が国際社会において名誉ある地位を獲得するためのスタートであり、かつゴールである。
コピペ君って馬鹿だな、まで読んだ
77 :
デフォルトの名無しさん :2007/04/05(木) 20:49:26
C#で作成したAPIをWSHで使用したい場合 どのようにすれば良いのでしょうか? COMを使用すれば良いのかなとも思うのですが 詳しく記載したHPがなくて困っています。 ヒントでも良いので教えていただけないでしょうか。
ComVisible
regasm
TabControlって、DrawModeをOwnerDrawFixedにすると、VisualStyleにならないんだっけか。 結構、めんどいね。
81 :
デフォルトの名無しさん :2007/05/26(土) 12:47:59
c#を初めて学ぶ人におすすめの本ってありますか? 教えてエロい人!!
エロくないのでわかりません><
83 :
デフォルトの名無しさん :2007/05/26(土) 13:36:19
ホントはエロイくせにぃw (σ・∀・)σ ))´Д`;)
エロイ俺がすすめるのは プログラミング.NET FrameWork 第2版 この本はガチ
本来の意味でエロイ俺が、便乗質問していい? C#を英語で学びたいんだけど、いい本ありますか? 薄くて説明が少ない奴じゃなくて、分厚くてこれでもかと 細かく説明してある本を読みたい。
それならこんなところじゃなくて英語圏で聞いた方が確実なんじゃないかと思うんだが。。
エロサイト巡りには英語は必須だからな
88 :
85 :2007/05/26(土) 20:15:13
>>86 俺英語は少し読めるけど、英語で文章作れないのだから、
むこうのBBSで質問なんてムリポ。
エロサイト、英語で書かれた論文と教科書で読む方は経験豊富だけど
書く聴く話すは全然童貞なんだよね。小名ぬーばかりしてる中年童貞みたいだな。
勉強しろよ
90 :
85 :2007/05/26(土) 21:54:41
そう言わずに教えろよ。
本じゃないけどMSDN読めばいいんじゃね?
93 :
デフォルトの名無しさん :2007/06/07(木) 13:05:17
VB.NETをえらんでそれなりに業務で使えるレベルだけど 世間様としてはどうもC#っぽいよなぁ・・・ 移行したいけど ちょっとやってみてたら方言の違いが多すぎてちょっとつらいorz でも・・・これ乗り越えなきゃ今後キツい様な気がする・・・
a
こっつはむしろVBばっかだ て方言ていうのかそれw
asdfujikotyan
Label[] label = new Label[]{label1,label2,label3,label4,label5}; こういうこと?
あと、名前のほうで検索するなら、Controls.Find()かなあ
>>99 おい、そこのフナムシ! ここが次スレでいいのか?
そういやここは何なんだ? 質問が書いてあったけど、放置してるスレだったのか。 再利用する?
再利用でいいだろ。
103 :
デフォルトの名無しさん :2007/06/16(土) 15:22:21
age
ここ確か削除依頼が出されてるはずだけどなw まあ今更それが通ることもなかろうが
とりあえず次スレがPart40であることを 100スレごとに大声でさけんどけばok まあ過去にスレ番も何回かずれてた気がするが
×100スレごと ○100レスごと
また # の無いスレに逆戻りか
というか、お前ら、フナムシって罵らずにはいられない 俺みたいな頭のおかしいヤツに誘導されて本当によかったのか?
まあよくなかったらそのうち次スレができるべ
8進数は、パーミッション指定と、1バイトが9ビットの環境くらいでしか使わんな。
DECのPDPシリーズがオクタルマシンだったんだよ。 PDPerは、オクタルダンプを見れば容易にデバッグできるのが普通だった。 で、Unix&Cにとってはオクタル処理機能が必須(やらない=死)だったわけ。 今となっては盲腸でしかないけどな。
114 :
デフォルトの名無しさん :2007/06/16(土) 17:00:10
また資源の無駄遣いを…
C言語の8進数は、もう少しなんとかならんかったか。 コンパイル通っても、あれでなんどかバグだしたよ。 C#になってなくなってすっきりしたわ
0o8765みたいな感じ?
素で間違えたw 8進だから8はないんだよね
0oがあるのはRubyか。
フナムシちょっと来い
0b1101001101
ふらっと立てんの?
いらない
ふなぁぁぁぁぁぁぁぁぁむしぃぃぃぃぃぃ
126 :
デフォルトの名無しさん :2007/06/27(水) 23:29:49
C++からC#にソースを書き直してるんですが 例えばclass Cがあったとして std::vector<C *>や std::vector<double>*などを メンバに持っていて、それをC#に書き直すとListに なるのは解りますがどう表記して良いのかが わからないです。 単純にint *ipなんて感じのメンバならint[] p とするんですが、上記の様な場合 どうしたらよいか教えていただけないでしょうか。 あとstd::mapはDictionaryであってますでしょうか 初心者の質問ですみませんが教えて下さい。
何を言ってるのかさっぱり分からんが、とりあえず MSDN で List<T> を調べてみたらどうだ
CLIにしちゃえばC#からC++使えて楽だよ。 ラッパー書くの面倒くさいけど。
>>126 仕事?趣味?
仕事なら「転職」マジお勧め
>>126 C#使いにC++もできるやつは居ないって事がわかったろ?
C ではクラスは参照で扱うから ポインタは普通に書く必要がないが、 配列を意味してる場合はまた変わってくるだろうな。 というか、ポインタでないもので 代入が行われているコードの方がむしろ厄介だな。
# が抜けた。 C じゃねえ。C# だ。
鼻水鼻詰まりには?
オロナミンC
フナムシって罵倒は初めて見た。 どの地方?
2ch
138 :
デフォルトの名無しさん :2007/06/28(木) 16:36:33
Control を派生させて、プロパティ MyProperty を追加したクラス MyControl を作りました。 class MyControl : Control { string myproperty=""; public string MyProperty { get { return myproperty; } set { myproperty = value; } } } これに、次のようにデータソース ds をバインドしました。データソースにも MyProperty があります。 MyPropery obj = new MyProperty(); obj.DataBinding.Add("MyProperty", ds, "MyProperty"); で、obj.MyProperty = 〜 のように値を設定してみたのですが、データソースが更新されません。 プロパティの変化に追従してデータソースも変更されるようにするには、何が必要なのでしょうか?
139 :
138 :2007/06/28(木) 16:38:57
>>138 の obj は、フォームの Controls に Add してあります。
規定クラスとして Control を使ったのは、データバインドを実験するのに一番簡単かと思ったからです。
ググれ: INotifyPropertyChanged
141 :
138 :2007/06/28(木) 16:56:56
>>140 それって、データソースの方に実装するインターフェースじゃないですか?
データソースが更新されたことを、データソースをバインドしてるコントロールへ通知するというか。
今回やりたいのは、何らかのコントロールの派生クラスを作って、自分で追加したプロパティを変化させたとき、
それをデータソースへ反映させることです。
ちなみに、データソースの変化をコントロールに通知する方法も知りたかったことです。
INotifyPropertyChanged がソレみたいですね。
ありがとうございます。
142 :
138 :2007/06/28(木) 18:11:38
すみません、コントロールの派生クラスでも INotifyPropertyChanged を実装して変更イベントを発行するようにしたら、 データソースが更新されるようになりました。 ありがとうございました。 ただ、Control をはじめ、その派生クラスである TextBox とかの標準コントロールは INotifyPropertyChanged を 実装していないようですが、どうやって変更を通知してるんですかね? Control.Text にデータをバインドして、Control.Text に値を代入すれば、ちゃんとデータソースも更新されるし。 せっかく Control を派生させて自分のクラスを作るなら、標準のコントロールがやっているのと同じ方法を使って 変更通知したいと思うのですが。
TextChangedイベント
XxxChangedイベントまたは、PropertyChangedイベントを実装することになってる。 ただし、.NET Fx2.0からは後者推奨
おーなるほど! Help にある 「バインド型の各プロパティに変更イベントを提供します。」というのはそういう意味だったんですね。 すっきり理解できました。 ありがとうございました。
146 :
デフォルトの名無しさん :2007/07/06(金) 20:25:57
Type を指定して、そのインスタンスを作る方法があります。 Activator.CreateInstance がそれです。 では、Type を指定して、その配列のインスタンスを作る方法はあるでしょうか。 たとえば typeof(string) と要素数 10 を指定したとき、string[10] を作るような感じです。
147 :
146 :2007/07/06(金) 20:36:31
すみません、自己解決しました。 Type t = typeof(string); int n = 10; object a = System.Activator.CreateInstance(t.MakeArrayType(), new object[] { n }); みたいですね。
くだらない奴だな。 別にどっちでも構わんと思うんだが。
つーかなんでこのスレは削除されてないんだ? スレ立てたヤツ依頼出しとけよ
152 :
デフォルトの名無しさん :2007/08/26(日) 12:55:00
どうか、次のVBをC#に直して下さい。 Label1.Text = Replace(Session("body"), vbCrLf, "<br />") ----------------------------------------------- VBの本の中にソースが載っていたのですが、 この1文が、どうにもわかりません。 そのコード意味は、どうやらセッションというデーター内の改行を HTMLの改行に変換するっぽいのですが・・・。(推測) ちなみに、他の行は自力で調べましたが肝心のこのコードが分りませんし、 C#でどう書けば良いのか分りません。 賢者の方々、どうか愚者の私にご指導をお願い申し上げます。
↑は、取り消します。 次のスレに書きます。
156 :
デフォルトの名無しさん :2007/09/22(土) 09:58:02
CodeProjectに掲載されているコントロールは商用利用可能ですか? HP一通り見たんだけどどうもその辺の記述が見当たらなくて・・ ちなみに先程、誤爆しました。
157 :
デフォルトの名無しさん :2007/09/22(土) 22:19:32
商用はだめでしょね。 まぁ、開発者にメールでお願いしてみたら良いんじゃないでしょうか。
これが、ゆとりか
一日に一回、「ゆとり」を含んだレスを見るんだが もう少し気の利いたレスはできんのかなぁと思う。
ゆとりだから
ん?
CodeProjectって投稿されてるコードに統一的な共通のEULAみたいの掲げてたっけ?
見たことないが。
まあ、
>>158-159 みたいのは自信がないから言質をとられないような煽りしか
書けないんだろうけどw
というか、ゆとり教育以前の教育を受けてる人間ってもう40代後半のはずなんだけどねw その程度のことも知らずに「ゆとり」とかいう言葉を安易に使う人間のお里は知れてるでしょ。
165 :
デフォルトの名無しさん :2007/09/23(日) 00:25:46
c#はc言語のプログラムのようにコンピュータが暴走することがありますか
>>164 >お里は知れてるでしょ。
使い方おかしいよ
>>164 70年代後半からゆとり教育が段階的に開始されたんじゃなかった?
40代はまだまるまるゆとり教育以前じゃない?
まぁ、どっちにしろ、いわゆる「ゆとり世代」といわれるものを勘違いしているんだろうけどw
>>166 頭悪いな。
別におかしくないよ。
本気で言っているなら単にお前さんが日本語に疎いだけ。
本当にお里が知れるよまったくw
ゆとり世代=1987年4月以降
>>169 本当に気づいてないんだな
指摘されたら辞書くらい見てみなよ
>156 ものによる。 GPLとかBSDとかライセンスの記述があるのは話が早いが、ものごとに統一されてないので一つずつ確認しろ。
>>171 辞書ねえw
なるほど、では具体的に「どこが」、「いかなる理由で」おかしいか書いてみな。
スレ違いに気づけないバカがいるな
ゆとりって書くとやけに反応する奴が居るな
日本語の勉強は日本語スレでやれ
ネタじゃないのか…?
179 :
デフォルトの名無しさん :2007/09/23(日) 15:24:44
ソースあるやつは改変して使えばいいだろ 自分のものにしてしまえ
181 :
デフォルトの名無しさん :2007/09/23(日) 15:38:57
こっちでいいや
182 :
デフォルトの名無しさん :2007/09/24(月) 10:28:56
string Hogeのプロパティを作り値が変更された時 OnTextChangedみたいなイベントOnHogeChangedを発生させる場合って どうすれば良いのでしょうか? プロパティ内でif文でイベントを発生させようとしましたがsenderとかが取得で格好悪いです。 又、色々調べたらPropertyChangedってのが近い気がしますがあまり実体がわかりませんでした。 ここら辺りで何か参考になる情報なサイトを知ってたら教えて下さい。
日本語でお書きください。
185 :
デフォルトの名無しさん :2007/09/24(月) 11:45:44
186 :
デフォルトの名無しさん :2007/09/24(月) 12:04:42
>>185 レスありがとうございます。
通常のイベントに関しては理解しているつもりです。
プロパティの変更通知の機構をどのように作るのが最適かと悩んでいます。
又、上記のサイトではプロパティを変更したsenderの取得には言及してません。
sender は普通に this だろ
>通常のイベントに関しては理解しているつもりです。 いや、君理解してないから絶対にw なんで分からなかったらまず地道に学習しようとは思わないのかな この手の人って。
189 :
デフォルトの名無しさん :2007/09/24(月) 13:05:19
>>187 レスありがとうございます。
thisだと自分自身になるんではないでしょうか?
こちらの思惑としてはプロパティを変更したオブジェクトがsenderに入って欲しいと考えています。
例えばボタンクリック時にプロパティを変更する処理を記述したら
OnHogeChangedのsenderにはボタンのオブジェクトが入ってきて欲しいのです。
自分はそれようのスマート型を作った。
>>189 senderはイベントを発行しだオブジェクトだよ。
そんな気持ちの悪いことをしちゃならん。
192 :
デフォルトの名無しさん :2007/09/24(月) 13:15:39
193 :
デフォルトの名無しさん :2007/09/24(月) 13:16:31
>>189 普通そういう情報はEventArgsに入れる
194 :
デフォルトの名無しさん :2007/09/24(月) 13:33:41
イベントの話題なので前から思ってた疑問を。 イベントのsenderはなぜobjectなんですか? たとえばイベントを発行したのがButtonならsenderの型もButton、 またControlから継承したクラスのイベントならsenderはControlでもいいように思うのですが。
シグネチャーを一緒にするため
196 :
デフォルトの名無しさん :2007/09/24(月) 13:39:57
シグネチャを統一して何かメリットがあるんですか?
今、グラフィック描画の勉強をしているのですが、質問させてください。 PictureBoxに線を描いてみようと思ったのですが、どうも挙動がおかしいのです。 Form_Paintに線描画のコードを書いたのですが、最初は線が表示されず、 ウィンドゥを左右に振ると線が表示されるようになるんです。 さらに振っていると表示されている線の位置も移動します。 何かコーディグが足りてないんでしょうか?
>>194 そうするとcovariantなデリゲート型の代入が出来なくなるから
199 :
デフォルトの名無しさん :2007/09/24(月) 13:46:21
200 :
デフォルトの名無しさん :2007/09/24(月) 13:56:28
if(!ゆとり世代) { System.Console.WriteLine("じじい"); }
201 :
デフォルトの名無しさん :2007/09/24(月) 14:40:42
>>198 covariantなデリゲート型を代入しないといけない乃至したほうがいい場面ってあるの?
ある。以上。
203 :
デフォルトの名無しさん :2007/09/24(月) 14:54:22
たとえば?
なんでイベントハンドラの話でコバリアントが出てくるのかな?
イベントハンドラが出来たのが1.0時代だから。
206 :
デフォルトの名無しさん :2007/09/24(月) 15:01:35
まあボタンクリックってのがボタンコントロールよりは汎用的だからってのもあるかしらん。 あらゆるボタンクリックを起こすコントロールがボタンコントロールから派生するとはいえんからな。
208 :
デフォルトの名無しさん :2007/09/24(月) 15:03:26
>>194 のようになっても困らないしキャストの手間が省けて便利だよね
209 :
デフォルトの名無しさん :2007/09/24(月) 15:05:32
210 :
デフォルトの名無しさん :2007/09/24(月) 15:12:31
>>198 covariantなデリゲート型を代入しないといけない乃至したほうがいい場面ってあるの?
あるならたとえばどんな場面?
212 :
デフォルトの名無しさん :2007/09/24(月) 15:51:15
>>187-193 考えてを整理してみたら187さんが言うようにthisを渡せば良いって事に気付きました。
ありがとうございました。
でもこういうプロパティ変更のイベント処理ってsetでやるものでしょうか?
最初に書いたようにPropertyChangedみたいにすべてのプロパティの変更を統括管理する事って出来そうなんですけど無理なんでしょうか?
ここでいいよ
>>212 INotifyPropertyChanged にしても結局各プロパティの set でやることになる。
ていうかもともとイベントを起こせるようにするのもプロパティの必要性の一つだから。
215 :
197 :2007/09/24(月) 16:12:49
>>206 Form_Paintイベントの最後にPictureBoxのRefresh()を追加すると、
表示されなくなりました。
正確には一瞬のみ表示されてすぐに消えるという状態です。
追加する箇所が間違えているんでしょうか?
>>215 Graphicsオブジェクトを変なとこから取得してるんだろう。PaintEventArgsのを使え。
217 :
197 :2007/09/24(月) 16:38:21
>>216 解決しました。
ありがとうございました。
どう解決したのか書けちんかす。
PaintEventArgsのを使え。 以外に何が…
221 :
デフォルトの名無しさん :2007/09/24(月) 17:18:51
んじゃここでいいや
222 :
デフォルトの名無しさん :2007/09/24(月) 21:41:38
>>214 レスありがとうございます。
プロパティのset内でイベントを発生させるのに迷いがなくなりました。
ありがとうございました。
223 :
197 :2007/09/26(水) 21:53:20
>>218 すみません。
Form_PaintイベントでPictureBoxをRefreshして
PictureBox_PaintイベントでPaintEventArgsからGraphicsオブジェクト取得するようにしたら
きちんと描画できました。
説明が不足してご迷惑をおかけしました。
今後は気をつけます。
どうも失礼しました。
224 :
デフォルトの名無しさん :2007/10/07(日) 05:08:40
public ArrayList Hoge { set { ary = value; } get { ary.Sort(); return ary; } } みたい感じでプロパティつくって foreach(object o in Hoge) て感じでまわすと コレクションが変更されました。列挙操作は実行されない可能性があります。 とかって例外が発生するんですけど原因はなんなんですかね? foreach中で、プロパティ内部でsortする配列つかっちゃいけないんですか?
foreach中に配列弄っちゃいかんよ。
それ以前に224のコードは意味不明でしょ。 何が「みたいな感じ」なんだよw まあ、何にハマってるかは分からないでもないけど。 でもIEnumerable 実装するクラスを自分で書いているにもかかわらず224みたいな 寝ぼけたこと言ってるとしたら、たぶん基本的に適正がないんだろうね。 だって普通は原因に思い当たるだろ。
またお前か。
毎回「適正がない」とか煽ってるアホはなんなの?
>>225 クラス側でsortしとけばプロパティ呼び出して使う側でいちいちSortしなくてもいいんかなて。
なんとなくforeach中でいじるのがだめてのはわかるけど、
foreachでまわす一番最初でsortするんだからいーじゃんとも思ったので。
>>227 なにこの馬鹿。
具体的にどんな問題がおきてるかききてーからかいてんだろが。
低学歴猿はいちいち現れないでいいですよ。
こんな程度で適正もくそもねーだろが。おまえは人としての適正がないね。
別に煽ってるわけじゃない。 忌憚のない本心を言ってるだけ。 そうコミュニケーションが「可能」なのは確かに2chの負の側面ではあるが、 それは同時によい点でもある。 俺は冗談抜きで100%良心で言ってるんだけどね。 だって自分に向いてないことを選択するほど辛辣な人生ってないだろ。 それとも224みたいなことを言ってる人間にプログラマとしての適性があると思う? ありえないでしょ。
>>231 おれは職業プログラマーじゃねーよ。猿。
アドバイスしてあげるけどその発想の狭さがプログラマーはもちろん
社会人としての適正がないね。
>そうコミュニケーションが「可能」なのは確かに2chの負の側面ではあるが、
>それは同時によい点でもある。
ただのBBSに対して何を語っているのかね。この子は。
あのぉ、ここには色んな人が来るわけで・・・ 仕事でしている人もいれば、趣味でやっている人、勉強でやっている人とかね・・・
231見たいなのはきっと会社ですげー辛い目にあってるんだろうな・・・
231は自分がプログラマーに適してるとか思ってるのかな? こういうのが上司になったら。。。
>>230 SortedListじゃあかんの?
仮にやるとしたらSet時にソートするなぁ・・・
しかしお前らこういう時だけ活気付くのなw
まあ最後の更新以降、最初の取得時のみソートするとかならわかる気もするけど。 なんでエラーになるわけ? なんか変な操作して無い? これだけじゃそもそもエラーにならんと思うけど。
そうか繰り返し中にHogeプロパティにアクセスして無い? 今の実装ならそれやっちゃうとエラーになると思うけど。
こうすれば単純な話 ArrayList ar = new ArrayList(); ar.Add("aaa"); ar.Add("bbb"); ar.Add("ccc"); IEnumerator it = ar.GetEnumerator(); ar.Sort(); //ar.Add("d"); //ar.RemoveAt(0); //ar[0] = "xxx"; // 変更を加えると if (it.MoveNext()) Console.WriteLine(it.Current); // 例外が起きるのはここ
>236 重複を認めたいけどSortしたい場合はSortedListじゃだめだね。 実際には重複しないケースになりそうな気がするけど。
Dictionaly<>はList<>みたいに要素の順序を保持してくれないわけだが、 仮に順序の保持を行うDictionaly<>を作るとなると、 どんな実装が理想的なんだろう? やり方はいろいろあるんだろうけど、どれがいいのか分らん。 そもそも順序はListで持って、ハッシュテーブルとしてはDictionalyで別々に持つべきなのか? ちょっとお知恵を貸してちょーだい。
>>241 Sorted Dictionary でググッてみてから言ってる?
244 :
デフォルトの名無しさん :2007/10/08(月) 03:20:13
何がわかってないか説明してもらおうか
245 :
241 :2007/10/08(月) 03:30:09
仮に、 "A" , "hoge" "C" , "hogegege" "B" , "hogege" というデータをSortedDictionalyにいれると、キーでソートされてしまって、 "A" , "hoge" "B" , "hogege" "C" , "hogegege" という順序になってしまうわけです。 通常のDictionalyだと、順序は保障されず、どういう順番で返ってくるかさえ分りません。 これを最初の順序のまま、保持してくれるDictionalyの実装の方法についてお聞きしています。
246 :
デフォルトの名無しさん :2007/10/08(月) 03:35:24
Dictionary
248 :
241 :2007/10/08(月) 03:39:30
>>246 あうち
さっき打ち間違えてから、なんか変な癖がついちゃってさっきからgoogleとコンパイラに怒られつづけてます。
そういうことって、ない?俺だけかorz
>Sorted Dictionary ああよくみたら空白入ってんのなw でも方向がおんなじのばっか引っかかるけど。 おれは面倒だからOrderedDictionaryでお茶を濁してる。
だってどう考えてもSortとちがうし
251 :
241 :2007/10/08(月) 04:11:05
>>249 ありがとうございます
俺も面倒くさくなったので、とりあえずはこれでお茶を濁そうかと。
OrderedDictionary、こんなものもあるんだなー。
でも、もし理想的な実装方法というのがあれば、技術の参考までに知りたい。
内部にList持って列挙のときだけはListに働いてもらうのが一番簡単だね。 その無駄が許容できるのなら。
>>250 Sortでもかまわんだろ。
なにかの順番を適用するにはちがいない。
いやそういうことじゃないだろ。 後でインデックスでアクセスするために、 追加した順を覚えておいてほしいって話だろ?
>>254 それならもうDictionaryとListを二重に保持するしかないな。
例えばこんな感じ?
class MapWithList {
Map map;
List list;
public void add(Object key, Object value) {
map.put(key, value);
list.add(key);
}
public Object getWithKey(Object key) {
return map.get(key);
}
public Object getWithIndex(int i) {
map.get(list.get(i));
}
}
テストコンパイルしてないから実際に使えるか知らんが、
ようはこういうことがしたいんじゃない?
おい一人タイムスリップしてるぞ
>>255 だからそれは任意で追加できる機能だろが
せめてgenerics使おうぜ
TreeViewで、NodeでダブルクリックしてもExpand(展開)もColapse(収縮)も しないようにするにはどうしたらいいでしょう?
Beforeのイベントでキャンセルすりゃいいんじゃね
262 :
デフォルトの名無しさん :2007/10/09(火) 02:44:26
>>261 あーなるほど!そういう手があったんですね!!
ありがとうございました!
263 :
デフォルトの名無しさん :2007/10/09(火) 21:09:49
TreeViewついでに教えてください、ListViewだとアイコンに透明色を使った部分が 透明になりますが、TreeViewだと透明になりません、BackColorを設定すると TreeViewの方は透明で透けるはずのところが白で塗られていました。これは TreeViewのプロパティの設定で透明になるでしょうか?
http://proforceone.web.fc2.com/ ⇒ Processed input data
エンタ[263.]
お笑い[4,010]
zzztv[247]
yoshimotokogyo[141]
http://proforceone.web.fc2.com/ ⇒ Calculation processing
d=$.split("\n");for(j=0;d.length>j;j++){s=d[j].substring(0,l=d[j].indexOf("["));
s=encodeURIComponent(s);n=d[j].substring(l+1,d[j].indexOf("]")).split(".");
n=eval(n[0].split(",").join(""));n=(n-n%20)/20+(n%20>0);br();
for(i=0;n>i;i++){write("http"+"://youtube.com/results?search_query=");
write(s+"&search_sort=video_date_uploaded&page="+(i+1));br();}}br();
コピペ君って馬鹿だな、まで読んだ。
VS2005で開発をしているのですが、.NET1.1でプログラムを動かすにはどうすればいいですか? .NET2.0で追加されたクラスやメソッドを使用しなければ、普通に動くんでしょうか。
>>266 マニフェストをいろいろいじるという方法もありますが現実的な方法ではないので
2.0から1.1へは不可能と思ってください。
おとなしく2003で再コンパイル。
>>267 即レスしてもらったのに、レスが遅れてすみませんでした。
そうですか。大人しく再コンパイルすることにします。
質問です、よろしくお願いします! あるメソッドやプロパティ、デリゲートといった処理単位内で、 その処理単位自身の名称を知ることができるような、.NETのクラス があればうれしいのですが、もしありましたらクラス名を教えてください。
>>269 処理MethodならSystem.Reflection.MethodBase.GetCurrentMethod().Nameでいける
スタックトレース
MethodBase.GetCurrentMethodとかそんなん?
>>270 おお。
こういう便利メソッドとかをカテゴリごとに網羅してくれる辞書的な本とか誰か作ってくれんかね・・・
大全のもうちょっとしっかりしたやつ。
「網羅」した途端にその検索性や索引性はクラスライブラリのリファレンス、 つまりMSDNと同じレベルになると思うんですが。。
275 :
269 :2007/10/12(金) 18:42:16
>>270-272 どうもです!こんな便利なクラスがあるのですね!!
ありがとうございました、勉強してみます!!
>>274 いや、MSDNがわかりにくいのはすべてを同列に書いているからであって、端折ってもいいからそのnamespaceにあるものの大まかな関係などが出てくれてればいい。
そうすればどこら辺を調べればいいか当たりがつくから。
だからnamespaceっていうのがそもそもカテゴリを表していると思うんですけど。。
>>277 >>276 がいってるのはネームスペース内のクラスの関係じゃないのか?
そんなこまかなことはともかく、MSDNが直感的に扱いづらいのは同感。
Web上のボランティアな情報も少ないし、余計に扱いにくいなあ。
VS買ったらネームスペースのマップみたいなポスターついてきたけど、あんなのでわかる人いるの?
>>278 そうそう。namespaceないで、まぁまたいでもいいんだが、クラス等がどういうことするときにどう関係するのかとかがつかめん。
いや276が言っているのは、要は欲しいものをエスパーしてくれるリファレンスが 欲しいって事でしょ。 そんなの不可能だわな。 俺様にとって必要で便利なクラスのインデックスが欲しい、 って言ったって何が必要で便利かは「俺様」によって違うじゃん。 そもそも、だからこをクラスライブラリはあのボリュームになっているわけで。
はぁい
関連クラスへのハイパーリンクを たどってグラフ化してくれるプログラムでも作ればいいんじゃね
だからどのクラスとどのクラスがリンクするかは用途の関数だろってw 本当にプログラマが言ってるのかね
>>280 量が多いからいいとは限らない。
むしろほしい情報が直感的にわかりやすく手に入る方が、重要なんじゃないか?
どれだけ情報があろうが、その格納場所がわからなければないのと同じだし、
それにMSDNの情報は、多くが重複してたり余計なスペースや下手な配置がされてたりする。
>>276 がエスパーを要求してるとは思わないが、
仮に
>>280 のいう"ほしい機能に必要なクラスを教えてくれるリファレンス"がほしいっていうのも、
あながち大それた要求ではないと思う。
>>285 アッタマ悪いな本当w
だから何が「欲しい情報」かは人によって違うんだよ。
だから、そうでないならクラスライブラリがあんなに肥大する理由がないだろう。
ま た お ま え か
>>289 たしかにあれだけごちゃごちゃしてれば、納得のいく話だな。
もはや今日のソフトウェアデベロッパーは、要求される機能を追加していくだけでは駄目だって好例かもね。
>アッタマ悪いな本当w これいうやつって大概伝達能力不足だよな・・・
>アッタマ悪いな本当w こういうのをいうやつで頭がよさげにしゃべるやつを見たことがない。 自分のつたない言語能力で、そもそも伝達しようとしている事柄が間違ってることさえあ利、相手が理解しないからといって相手が一方的に頭が悪いと考えてるんだろうな
マ板でやれ
DataGridViewで、外形をResizeしたとき、中のカラムの幅も それに自動で連動してゴムみたいに伸び縮みするようにできれば と思うのですが、プロパティ設定でできるでしょうか?
295 :
デフォルトの名無しさん :2007/10/16(火) 08:39:05
発行しようとすると以下のようになるのですが、どうしたら良いのでしょうか? 特に変わった事はしていないはずなのですが・・・ 署名中にエラーが発生しました: bin\Release\app.publish\\setup.exe の署名に失敗しました。
296 :
デフォルトの名無しさん :2007/10/18(木) 16:25:18
発行しようとすると以下のようになるのですが、どうしたら良いのでしょうか? 特に変わった事はしていないはずなのですが・・・ 署名中にエラーが発生しました: bin\Release\app.publish\\setup.exe の署名に失敗しました。
C#で例外を発生させたいんですが、どれを使えばわからずに全部Exceptionにしてます。 ですので、もっと内容に沿った例外を投げれるよう、主に使用する例外クラスを教えてください。
内容に沿ったものを自分で作れ
どんな状況を想定してんの?
300 :
297 :2007/10/23(火) 20:48:45
半端にJavaを勉強してからC#をメインでしてるのですが、 Javaでは"InvalidArgumentException(引数が不正)"など、目的によってある程度例外が定義されてました。 こんな感じで、よく使う例外が元から定義されてると思って、よく使うものを挙げてもらいたかったのですが、 そういった例外は定義されてないんでしょうか?
>>301 ありがとうございます。地道に調べていきます。
どうみても定義されてるけど何で気づかんの?
ゆとり
クラスのコンストラクタ内で、そのクラスの初期化(表示処理など)がすべて終わった後に ある処理を実行させるということは可能ですか? たとえば、自作フォームのコンストラクタ内でdataGridViewをはりつけて、 dataGridViewの表示がおわった後に、なにか処理を実行したい場合って どうすればいいんですかね? コンストラクタ { dataGridView初期化; なにか処理 } だと、「なにか処理」を実行したあとにdataGridViewの表示処理を行ってるようなんですが。
表示された後はShownイベントでやるしかないんかな・・・?
配列の中身を普遍にしたいのですが、C#では可能でしょうか? C++に例えると、これと同様なコードを書きたいんです。 const int const array[5] = {1, 2, 3, 4, 5};
それは違うでしょw
普遍性を保証したいだけなら ReadOnlyCollection みたいなのを作る手はあるけど。 効率面を気にしてのことなら、コンパイラの最適化を期待するしか。
int pi=3; ///<summary>円周率</summary> こういう風にXMLコメントを定義の右側に書く事ってできなかったですか? (上の通り書くと当然、次に定義される物のコメントとして扱われますが) できたような気がするのはdoxygenか何かと混同してるのかな
C# の /// だとそれは無理。
了解 3.0でできるようにならんかな
doxygen使えばよくね?
int a; /// <summary>aaa</summary> int b; と int a; /// <summary>bbb</summary> int b; で意味が変わるなんて糞仕様以外のなんでもないだろ。
316 :
デフォルトの名無しさん :2007/10/29(月) 17:24:41
当然の仕様だ
int a = 0; と a=0 as int が混在してるようなもんだろ、それ。
ちげーよ
ふと頭を過ぎったこと。
>>315 みたいな奴がきっとエスパー召還質問するんだろうな。
こういう人って自分の書いたことが一意に相手(コンパイラ含む)に伝わるかどうかっていう
思考回路が欠けてるんじゃないの?
>>319 r;ァ'N;:::::::::::::,ィ/ >::::::::::ヽ
. 〃 ヽル1'´ ∠:::::::::::::::::i
i′ ___, - ,. = -一  ̄l:::::::::::::::l
. ! , -==、´r' l::::::/,ニ.ヽ
l _,, -‐''二ゝ l::::l f゙ヽ |、 ここはお前の日記帳じゃねえんだ
レー-- 、ヽヾニ-ァ,ニ;=、_ !:::l ) } ト
ヾ¨'7"ry、` ー゙='ニ,,,` }::ヽ(ノ チラシの裏にでも書いてろ
:ーゝヽ、 !´ " ̄ 'l,;;;;,,,.、 ,i:::::::ミ
::::::::::::::::ヽ.-‐ ト、 r'_{ __)`ニゝ、 ,,iリ::::::::ミ
::::::::::::::::::::Vi/l:::V'´;ッ`ニ´ー-ッ-,、:::::`"::::::::::::::;゙ , な!
:::::::::::::::::::::::::N. ゙、::::ヾ,.`二ニ´∠,,.i::::::::::::::::::::///
:::::::::::::::::::::::::::::l ヽ;:::::::::::::::::::::::::::::::::::::::::::/ /
::::::::::::::::::::::::::::::! :|.\;::::::::::::::::::::::::::::::/ /
コピペ君って馬鹿だな、まで読んだ。
>>315 それがダメなら同じ///じゃなくて別の表記にすればいいだけだわな
doxygenでも///<みたいに書いていたはず
つかコードの後ろにコメントってセンス無さ杉
大量のツッコミを受けた
>>315 が反論できなくなったために
センスという否定も肯定もできない理由を使って問題の大前提を否定し始めたように見える
ワロス
330 :
デフォルトの名無しさん :2007/10/30(火) 20:17:21
ひろ君もたか君も つまらないケンカはやめなよ!
332 :
デフォルトの名無しさん :2007/10/30(火) 20:38:45
けい君ですが
333 :
デフォルトの名無しさん :2007/10/30(火) 22:17:02
334 :
デフォルトの名無しさん :2007/10/30(火) 22:20:14
classは呼び出せませんよ
335 :
デフォルトの名無しさん :2007/10/30(火) 22:22:55
まずなんか本買うなりして基礎からやった方がいいよ というかやれ
337 :
デフォルトの名無しさん :2007/10/30(火) 22:27:47
prismbox.sample.httpclient.Class2 i = new prismbox.sample.httpclient.Class2(); i.Class2(textBox1.Text, @"c:\test.gif"); ではi.Class2のところでエラーがorz
338 :
デフォルトの名無しさん :2007/10/30(火) 22:34:46
>>337 メソッドなら呼び出せる
Class2はメソッドじゃない
339 :
デフォルトの名無しさん :2007/10/30(火) 22:43:29
すいません
>>338 上記のリンクの場合のメソッドって何になるんでしょうか?
340 :
デフォルトの名無しさん :2007/10/30(火) 22:45:13
>>339 Mainがメソッド
でもこれはプログラム起動時にフレームワークから呼び出される為のもの
>>339 C#やっててコンストラクタも知らんのか。
それ自体は”コンストラクタ”でググればでるけど、そんな基礎的なこともわからずに無謀なコーディングをするより、
入門系のサイトやページを一度じっくり見た方がいい。
でないと、またすぐにつまずく。
342 :
デフォルトの名無しさん :2007/10/30(火) 22:51:01
>>341 徹底的に基礎を固めてきますm(_ _)m
argsをstringの配列にしながら、args.Length != 1ってのがよく分からない。 普通のstring変数にしてIsNullOreEmptyでチェックした方がいいんじゃないの?
346 :
デフォルトの名無しさん :2007/10/30(火) 23:42:27
TabControlで、Tab耳の並びを縦型Vertivcalにしたとき、耳の数 が多いと自動的に段々重ねになる仕様のようなのですが、これ を横型Horizontalの場合と同じように1列に並べる手段があると ありがたいのですが、できるとしたらどのような方法になるでしょうか?
>自動的に段々重ねになる仕様 え? んな仕様になってないでしょ。 デフォではタブが横幅に収まらない場合スピン(?)が右隅に付く
>>348 Tab耳を横並べHorizontalにした場合はその通りなんですが、
縦並べVerticalにした場合はデフォルトで段々重ねになる仕様のようでした。
Helpにもそうありました。これだと、たくさん耳があるとそれだけで場所を
取ってしまうため、一列にしたいのでした。
やっぱり仕様だから無理なのかなー・・・
追記) ちなみに、「段々重ね」というのは、MultilineプロパティをTrueにしたとき の並び状態のことでした。
確かにAlignmentをLeftにするとMiutilineが勝手にTrueになるね
メソッドの引数としてデリゲートを使いたいのですが、 いちいちデリゲートの型を外部に宣言せずに書く方法はありませんか? public void Func(delegate void del() sendMethod) {〜} のようにかければ非常に楽なのですが。
これだからC厨は
いや、Cでも関数へのポインタ型は きちんとした意味を持った名前にtypedefして使うものだろ。
デリゲートや関数ポインタがスタティックだとわかってるんだろうね?
>>355 そのデリゲートが使えるということですか?この場合引数はないので使えないと思うのですが。
また、デリゲートの定義全般の話ですので、一つのデリゲートの型が一致しても抜本的な解決にはならないかと。
>>356 型の定義が静的だ、という意味でしたらわかっています。
その定義をどうにかして見やすく配置できないかと考えてる次第です。
void Func(Action sendMethod) { } void SendMethod() { } Action sendMethod = new Action(SendMethod); Func(sendMethod); Action<T>
>>358 すいません、がんばって理解しようとするのですが眠くてどうにもならないようです。
また明日の朝見直して理解しようと思います。
擬似コード過ぎて理解の必要がないというかw
メソッド内で、一度代入したら不変であることを保証しようと思って、 void func() {
すいません、失敗して書き込んでしまいました。 メソッド内で、一度代入したら不変であることを保証しようと思って、 void func() { readonly int i = OtherFunc(); 〜 } としようとしたのですが、readonly が使えるのはクラスのフィールドのみらしく、できませんでした。 これと同等の文法はありますか?
フィールドにすれば?
>>363 あほなことゆうな。
出来てもいいと思うんだけど出来ないね。
言語仕様を出来るだけシンプルにしたかったんかな?
メソッド内でreadonlyを使わなければわからなくなるほど 変数宣言が多くて長いメソッドを書くなということでは
366 :
デフォルトの名無しさん :2007/11/15(木) 00:24:37
C#をやってるたら、仕事に支障をきたし始めたので辞めます 皆さんも仕事でC++を使う人は辞めたほうが無難です。
367 :
デフォルトの名無しさん :2007/11/15(木) 00:33:52
| | ∩___∩ | | ノ _, ,_ ヽ (( | プラプラ / ● ● | (=) | ( _●_) ミ _ (⌒) J )) 彡、 |∪| ノ ⊂⌒ヽ / ヽノ ヽ /⌒つ \ ヽ / ヽ / \_,,ノ |、_ノ
今時一本で食ってこうとしてる奴なんているんだ・・・可哀想に
>>366 きっとC++をただ使ってるだけだろうな
英語をやってるたら、仕事に支障をきたし始めたので辞めます 皆さんも仕事で日本語を使う人は辞めたほうが無難です。
371 :
デフォルトの名無しさん :2007/11/15(木) 04:08:37
自分の能無しぶりを理由にしても説得力はないな
言語は道具、道具を複数使ってるからと言って支障きたすとは思えないのだが?
373 :
デフォルトの名無しさん :2007/11/15(木) 23:27:54
わからんではない オブジェクト作りっぱなしなんてC++ではありえない そんな環境になれてしまうとC++が面倒に感じてしまう。 まぁ、C#は使いやすさと引き換えに速度を完全に捨てたらな・・・
速度は捨ててないぞ 捨てたのはメモリだ
375 :
デフォルトの名無しさん :2007/11/15(木) 23:50:26
メモリを捨てて速度が保たれるなんてありえない。
文法がC#のC++があったら最強なんじゃないかと思う。
>>376 それに初起動の速度もパフォーマンスだと考えると、メモリを食うならそれだけ起動が送れるからな。
>>377 ネイティブのC#ならアンマネージドC#で作れるだろう。
ただし、APIは自作になるけどな。
個々の性能を見るとC#はそう悪くない。
GCに関してはここによると
ttp://densanshokunin.at.webry.info/200702/article_1.html > C++のstack > C#のFinalizeなし > > C++のheap = C#のDispose > C#のFinalize
ということらしい。スタックさいこーで次点がファイナライザなしのGCだそうだ。
C#が遅く感じるのはメタ情報を抱えたままなのが大きいように思える。
必要以上にコードやリソースの破棄と再ロードやページアウトインを繰り返していてこれが足を引っ張ってる。
JITやngenしててもメタ情報を参照するために結局もとのアセンブリもロードされているのが確認できる。
おかげで別の部分がメモリから追い出されることになりやすい。
GCの話題にC++が出て来るなんて胡散臭すぎ
>>382 普通に一番使われてるからだろ。
それにGCの動きはシステムに激しく依存するから、言い出したらきりがない。
C#はマネージドコードなんだから、比較対照は同じマネージドコードのJavaだったら良いが ネイティブのC++出されてもね。それにネイティブコードはあっさりとOS壊すプログラム開発が できる(例えやりたくなくても)という欠点があるから、今後は.NETもよりセキュリティ強化された サンドボックス上で実行しなくてはならないと結論がでて、ネイティブは生き残れなくなるんだよ。
>>384 マジで言ってんのか?だったらなんでWin32APIを.NETでサポートしないんだよ。
アンマネージドがマネージドに置き換えられるんなら、全部の機能が.NETから使えないとおかしいだろうが。
だいたいユーザー管理もまともに出来ないWindowsでソフトウェアのセキュリティ云々言われてもなあ?
w
∩___∩ | | ノ\ ヽ | / ●゛ ● | | | ∪ ( _●_) ミ j 彡、 |∪| | J / ∩ノ ⊃ ヽ ( \ / _ノ | | .\ “ /__| | \ /___ /
>>386 きまってるだろうが、最初は置き換えるつもりだったけど厳しいから
方向転換したんだよ。
これはAA貼られても仕方ないなw技量が知れる
391 :
デフォルトの名無しさん :2007/11/17(土) 01:20:47
string csvDir = @"C:\test\"; string csvFileName = "test.csv"; string conString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" csvの接続ロジック System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter(commText, con); DataTable dt = new DataTable(); da.Fill(dt); OleDbConnection OleConn = new OleDbConnection(); ACCESSの接続ロジック OleDA = new OleDbDataAdapter(expenditure, OleConn); OleDA.Fill(Ds); DDs = ddt;←ここがわからない OleDbCommandBuilder cb = new OleDbCommandBuilder(OleDA); cb.QuotePrefix ="["; cb.QuoteSuffix = "]"; OleDA.Update(Ds) ; CSVファイルをACCESSにインポートしたいのですが、CSVをテーブルに貼り付けた後は どのようにしてACCESSにインポートすればよいのでしょうか? 上記のプログラムは一応コンパイルできるのですが、ちゃんとデータが移ってなくて・・・ どなたかわかる方がおられましたら、修正をおねがいします
392 :
デフォルトの名無しさん :2007/11/17(土) 01:21:37
すいませんDDs⇒Ds、ddt⇒dtです
393 :
デフォルトの名無しさん :2007/11/17(土) 11:14:16
C++で配列を作成し、それをIntPtrにポイントし、そのIntPtrをC#の関数に渡したいと思います。 この時、C#ではどのようにして、その配列を扱うことができるのでしょうか?
C++"で"IntPtr? そのC++ってのはC++/CLIなのか?
>>394 はい。基本的にはIntPtrがサポートされているものです。
意味が分からん。なんだよ基本的にはサポートされてるって マネージド同士なら配列直接渡しゃいいじゃねーか
>>396 正論。
>>395 何がやりたくてそのようなことをしようとしてるのか説明してくれないと。
>>397 すいません。説明が悪くて。
アンマネージの配列のポインタが渡されて、それをC#クラスに渡したいというクラスがあります。
その方法としてIntPtr渡しを考えました。
アンマネージからマネージにマーシャルする方法もありますが、メモリコピーは避けたいです。
このような場合はマネージのみサポートする言語では作成しない方がいいのでしょうか?
妥当なのは配列をやり取りするんじゃなくて操作をラップしたクラスをやり取りする形。 UnmanagedMemoryStream とか。 いざとなりゃ直接ポインタでもいいけどな。
unsafeでポインタにすればいいのでは? そもそも、C++の配列を作っている部分が既存部分でない(C#に対するラッパ部分) であるなどといった状況なら、初めからマネージ配列にし、 C++内では必要に応じてpinしてやったほうが楽な気がする。
401 :
デフォルトの名無しさん :2007/11/17(土) 13:23:51
unsafeとクラス作成ですか。 特にC#はダメということではないのですね。ありがとうございます。 いただいたアドバイスをさらに調べてみます。
C#はC++の後継言語だから、C++できることはたいていサポートされているよ。
>>402 【審議拒否】
∧,,∧ ∧,,∧ タリー
∧∧ (・` ) ( ´・) ∧∧
(ω・` ) U ) ( Uノ( ´・ω) キリバンナノニヨ
| U u-u u-u (U ノ
u-u ∧,,∧ ∧,,∧ u-u
(・ω・`) (´・ω・) コンナレスジャシカタネエヨナ
(l U) (U ノ
`u-u'. `u-u'
餓鬼くさ。 403みたいのってひょっとして面白いと思ってコピペするのかね。 そんなの面白いと思うのは精神年齢永遠の12才の自分だけなのに
402 はキリ番なのか?
しかし402も釣りだろ
>402 C++からややこしい機能はできなくしたからこそ扱いやすい言語になってるのかと。
408 :
デフォルトの名無しさん :2007/11/17(土) 19:29:29
this.axWebBrowser1.Navigateに
client.Connect(comboBox1.Text,80);
でアドレスを渡して表示させています。
comboBoxにはFQDNを入れておりますが
http://から記載するとエラーになります 。
FQDNしか入れられないためにHTTPSでのアクセスが出来ていないのですが
どのようにすればSSLでのアクセスが可能になるのでしょうか?
409 :
デフォルトの名無しさん :2007/11/17(土) 21:57:07
>>407 C++に挫折した人にぴったりですねhw
>>408 AxWebBrowser なのか TcpClient なのかわからん
取り敢えず SslStream とか調べたらどうだ
C++にこだわる奴は言語にこだわり過ぎ。 本当に大事なことは必要な機能を実装すること。 ややこしい機能はチーム開発や保守性をぶっ壊してくれるから 簡単にすることは大事。
>>411 楽しいのも判るけどさスルーする事も大事。
いろんな言語やってきて思うんだけど、結局のところ言語の文法って本質的に言語間の差にはならないんだよね。 foreachなんかでも、マクロ使えば簡単にCでも使えるわけだし。 本当に言語選択で大事なのは、VMだとかOS依存部分だとかのもっと大局的な部分なんじゃないかなあ。
言語選択は技術者の経験やシステムの構成に左右されるところが多いから、 何が良いとかは断言できない。 自分にとって、一番スマートにプログラミングできるのはC#だけど、 サーバサイドプログラミングでLinuxならJava、UnixならCを選択するのが良いと思う。 なにせ、並列処理はやはりUnix系使うのが一番堅実だから。
堅実ってなあに?
堅実というより堅牢性 ・プログラムにおいて、エラーや例外などに強く簡単には暴走しないもの。 ・少なくともすぐに「不正な処理」と表示し、データ諸共および自分自身までふっ飛ばすようなOSのような作りではない事。
417 :
デフォルトの名無しさん :2007/11/18(日) 00:40:08
ググレカス
いまどきそんなサーバ用OSはない。
なんか見てると最近WebBrowserコントロールの質問はやってんな 同一人物なのか 流行なのかwwww
ちょっと前に、スプラッシュウィンドウの実装についてあちこちで議論があったのを見たんだが、 こんなやり方では駄目なんだろうか? public static class Program { [STAThread] private static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Idle += Application_Run; Application.Run(); } private static bool _applicationRunning = false; private static void Application_Run(object sender, EventArgs e) { if (_applicationRunning) { return; } else { _applicationRunning = true; } Application.Idle -= Application_Run; //ここにスプラッシュウィンドウだの、メイン処理だのを書く //プログラムを終了させるべき場所にApplication.Exit()を書く } }
初期起動時の処理にアプリケーション関連のイベントを記述するのは常識だから、 それでおk。
422 :
420 :2007/11/23(金) 16:41:04
そのあとのスプラッシュの表示と初期処理の 同時処理から完了までの流れがないと 大して意味ない気がするが… どうでもいいが最近の書籍ではタイマー使って 一定時間同期的にスプラッシュ表示するやりかたばっか書かれてるな。 スプラッシュの意味ないっつうの。 まあ平気でビジーループ使ってる例よりはちょっとだけましだが。
424 :
420 :2007/11/23(金) 17:23:29
>>423 ご意見どうも。
実のところを言うと、スプラッシュウィンドウというよりは、
Form_Loadに全体の初期化処理を書きたくないので、
それをどこに書こうか、ということです。
必ずしも最初からFormを使うというわけでもないし。
あとは
>>420 の例で、何か過失を犯していないかを知りたかったのです。
メッセージループに入ってからやる必要のある初期化ならそんなんじゃないの。 そうでないならなんもいらんと思うが。
Bitmapを綺麗に回転させたいのですが、 RotateTransformは中心で回転していないのか一定以上の角度になると上手くいきません。 画像中心で回転させるにはどう指定すればいいのでしょうか? 教えてください。m(_ _)m public static Bitmap BitmapRotate(Bitmap bmp, float angle) { // 出力用 Bitmap dst = new Bitmap(bmp.Width, bmp.Height, PixelFormat.Format32bppArgb); // Graphics オブジェクト Graphics g = Graphics.FromImage(dst); // 透明色でクリアする g.Clear(Color.Transparent); // 回転させる g.RotateTransform(angle); // 綺麗に回転させるフィルタ g.InterpolationMode = InterpolationMode.HighQualityBilinear; // 描画 g.DrawImageUnscaled(bmp, 0, 0); // 解放 g.Dispose(); return dst; }
428 :
426 :2007/11/26(月) 05:37:10
RotateTransformの前後に下記のコードを入れることで解決しました。 ありがとうございました。m(_ _)m // 中心を指定する g.TranslateTransform(bmp.Width / 2, bmp.Height / 2); // 回転させる g.RotateTransform(angle); // 元に戻す g.TranslateTransform(-bmp.Width / 2, -bmp.Height / 2);
C#がJavaより勝っている点を教えてください。
教えてあげないよ
じゃん
432 :
デフォルトの名無しさん :2007/11/29(木) 04:54:20
さくさくさんかくぽりんきー
データバインド対応のコンポーネント作りたいんですけど どのクラスから調べればいいですか? ぜんぜん見つからない・・・
意見の割れそうなネタですが、皆様 using ステートメントをどの程度 使用していらっしゃるのでしょうか。 自分は今まで、ルート名前空間を汚したくない、或いは名前空間の 構造を崩したくないといった理由で using ステートメントを一切 使わず、愚直にも省略せず全部記述していたのですが、横に長く なりすぎていよいよ疲れてきて、それに追い打ちをかけるように、 拡張メソッド (C# 3.0 言語仕様) を使うにはそのメソッドの属する クラスの属する名前空間をインポートしてらねばならないという ことを知って悩んでおります。 それなりに多様な名前空間を使用していますが、あまり多くインポートしても 逆に読みづらくなりそうに感じます。使用する名前空間それぞれどういった 基準でインポートするか否かを決めるか等、皆様どうか私に何らかの指針を 示して頂けませんでしょうか。
全部インポートしてる。 型名重複するのなんてTimerぐらいだろ。
437 :
435 :2007/12/01(土) 00:02:39
>>435 の 9 行目:
誤: してらねば
正: せねば
失礼いたしました。
438 :
デフォルトの名無しさん :2007/12/01(土) 00:10:26
基本的に全部インポートする クラス名が重複する場合は完全修飾名で書く
>>435 文脈からしてひどく実直そうな人物と見るが、
努めてソフトにいうと、usingは普通衝突が発生しない限り使う。衝突しても、名前空間の張り替えをして使う。
よって、あなたがしてるようなコーディングはひどく非効率で例外的だ。今すぐusingステートメントを使うことをおすすめする。
それと、なんとなくIDEなどのコーディング補助を一切使ってない雰囲気があるのだが、
この際にそれらの機能を使ってみたらどうだろうか?
VisualStudio2005を使ってるなら、クラス名を書けば左下になにかでるはず。そこをクリックするか、Ctrl+Alt+F10を押して、
メニューから任意の名前空間を選べば、自動的にusingを書いてくれる。
usingはクラス名を省略したいから書き込むんだよ。 つまり、一回しか宣言しないクラスは完全修飾名で記述してもいいが、 例えば、ファイルアクセスクラスでSystem.IOを何回も呼び出す可能性が 多い名前空間はあらかじめ宣言しておいた方が効率が良い。 この効率が一番重要なのがRAD。
>>439 ( ・∀・)つ〃∩ ヘェーヘェーヘェー
442 :
デフォルトの名無しさん :2007/12/01(土) 00:23:09
ユーザコンポーネント内のコードからページに直接貼り付けたテキストボックスを参照するもっとも効率的な方法はどうすればいいのですか
テキストボックスに限らず、クラスを参照する一番の方法は プロパティを使うこと。
たしかにC++なんかだと、C#のそのusingに相当する usingディレクティブは使うなって言われるけどね。 ただ、それはエイリアスとかusing宣言とか代替があるから言えるわけで、 C#はガンガンusingする言語だと思っている俺。
445 :
443 :2007/12/01(土) 01:25:47
それと忘れてたけど、コントロールのアクセス修飾はprivateがデフォルトだから、 変えなければいけない。
>>435 「using ステートメント」じゃなくて「using ディレクティブ」だろというか
そんなこと気にする前に基本的な言葉をだな(ry
まぁそれはいいとして
>>444 もいっているように C++ で using namespace
が気になるのは、その他の仕様含めた総合的な要因によるもので、
その前提を元に C# は考えられていてほぼ危険性がクリアされているので
普通に使え。そっちのほうがみやすい。
447 :
デフォルトの名無しさん :2007/12/01(土) 10:19:35
ありがとう。 でもユーザコントロールから親のページクラスをどうすればアクセスできるのか想像できません
448 :
デフォルトの名無しさん :2007/12/01(土) 11:54:24
ページクラスを継承したクラスにコントロール検索プロパティを実装したとしてもユーザコントロールからはスコープの範囲外だからみれないですよね
マスターページに実装。
450 :
デフォルトの名無しさん :2007/12/01(土) 13:47:00
マスターページに検索ののプロパティを作ってその配下のページコントロールに配置したテキストボックスを参照するのですか? できそうな気がする。。
451 :
デフォルトの名無しさん :2007/12/01(土) 14:22:26
DataGridVewでデータバインディングしている時、主キー、ユニークの重複チェックは皆どうしてるの? 主キーは複合もあるので行でチェックするのがいいという前提で。チェック場所はいろんなイベントがあると思う ・DataGridVewのRowValidatingイベント ・DataTableのRowChagingイベント ※DBに問い合わせは論外。 他にもあるかもしれんが・・・。あったら教えて欲しいんですが。 で、入力された値をチェックと言うことでDataGridVewのRowValidatingでチェック。(ViewのことはViewでチェック) 他のクラスでチェックすると、調査時いろんなソースを追いかけないといけないので。 ほんでと、主キー重複、ユニークチェックメソッドはあるのか? → 調べたけどないと思う。 じゃ、別の方法でチェックするにはどうしたらいい?となると。 クラス内部で主キー、ユニークの値を配列で保持して、配列内をチェックしかないのかなと思ってるんだけど。 複合主キーの時は、それぞれの列の値を文字列連結して1つの文字列として保持する。 これ以外になんかいい方法ってないですか?
452 :
デフォルトの名無しさん :2007/12/01(土) 14:25:06
あ、DataGridVewのDataErrorイベントは論外で。あんなの使いようがねぇって感じなので。
バインド先がDataTableならPrimaryKey設定しとけば DataGridVewの入力時エラーになるけど
455 :
デフォルトの名無しさん :2007/12/01(土) 17:25:07
逆とはどうゆう事?マスターページからページのテキストボックスを参照でいいんだよね。
設定値はマスターページの値で、テキストボックスが更新されたら マスターページの値を更新。
UdpClient.BeginReceive(〜) から byte [] buffer = UdpClient.EndReceive(〜); の間に複数の受信接続が在った場合 bufferに入るのは最後に受け取った1つのデータだけですか?
459 :
デフォルトの名無しさん :2007/12/01(土) 23:09:37
結局はテキストボックスがトリガーとなってマスターページに値をあたえないとだめなんだね。 ユーザコントロールがトリガーとなって見に行くことがしたいけど無理なんだよね
461 :
デフォルトの名無しさん :2007/12/02(日) 14:07:57
>>459 これは無理そう。
FindControlsみたいなメソッドをマスターページにプロパティで実装して、
ユーザコントロールのイベント内から呼び出したいんだろ?
これはできそうでできない領域。それに気付いただけでも天才だよ。お前
>>456 も言っていること意味不明。
462 :
デフォルトの名無しさん :2007/12/02(日) 20:44:44
やっぱり無理なんですね
>>461 parent経由で親PropertyにSetなら出来るだろ
464 :
デフォルトの名無しさん :2007/12/02(日) 21:53:27
ページといえどもクラスでしょ参照できる分けない
465 :
435 :2007/12/02(日) 23:13:03
書き込みが遅れてしまいすみません。
他の方々が書かれたソースを読んでいても薄々感じていましたが、やはり皆様
using を積極的に使うものなのですね。確かに衝突など滅多に起きませんし、
名前空間の構造が崩れることよりも行が横に長い方が害悪かもしれません。
皆様のご助言のお陰で漸く using を使うべきとの考えへと至ることができました。
ありがとうございました。
>>435 自分はむしろ真逆な質の人間だと思っていたのですが。一応 IntelliSense 等、
少しは使っています (というより IntelliSense を使わないで日々コーディング
できる方が居たら尊敬してしまいます)。
>>446 仰る通り、using ディレクティブでした。
>>437 といい、きちんと見直したはずだった
のですが。お恥ずかしい限りです。
466 :
435 :2007/12/02(日) 23:17:31
467 :
デフォルトの名無しさん :2007/12/03(月) 12:18:45
質問があります。環境はVS2003のC#です。 const Point pos = new Point(1, 1); とやると 「'pos' に割り当てられた式は定数でなければなりません。」 というエラーが出ます。 定数にnewは使えるないんでしょうけど、どのようにしたら上記のような定義を実現できるでしょうか?
static readonly Point pos = new Point(1, 1); ふらっとC#スレに行け
>>467 残念なことに、constはプリミティブ型(int, double)か、後は例外的にString型のみしか認められない。
非常に不思議なことに、C#には改変不可を示す修飾(C++のconstやJavaのfinal)がない。
一応readonlyという似たようなものがあるが、これはコンストラクタでしか使えないのでメソッド内などでは使えない。
いたいことは何となく分かるがかなり変なこと書いてるぞ。
471 :
467 :2007/12/03(月) 13:58:16
>>468-469 ありがとうございます。
readonly修飾子を使用することにしました。
StreamReader sr = new StreamReader("C:\\test\\時間集計.txt", Encoding.GetEncoding("Shift_JIS")); string text = sr.ReadToEnd(); sr.Close(); this.rtbIndication.Text = text; Regex R_Ex = new Regex("this."); //TextBox1.Text内で正規表現と一致する対象を1つ検索 Match M_stPath = R_Ex.Match(this.rtbIndication.Text); while (M_stPath.Success) { int iFind = this.rtbIndication.Find(M_stPath.Value, RichTextBoxFinds.MatchCase); this.rtbIndication.SelectionStart = iFind; this.rtbIndication.SelectionLength = M_stPath.Value.Length; this.rtbIndication.SelectionColor = System.Drawing.Color.Red; M_stPath = M_stPath.NextMatch(); } リッチスプレッドの中から特定の文字だけを抜き出して、そのフォントカラーを赤くしたいのですが この場合、thisが複数あるにも関わらず、最初に見つかったthisしか赤くなりません。 どこがまずいのでしょうか??
474 :
デフォルトの名無しさん :2007/12/08(土) 21:30:40
↑"this"です
とりあえずステップ実行でもしてみたらー?
476 :
デフォルトの名無しさん :2007/12/08(土) 22:12:01
>>475 原因は解っています。
int iFind = this.rtbIndication.Find(M_stPath.Value, RichTextBoxFinds.MatchCase);
の部分で、リッチテキストボックス(rtbIndication)のテキストの最初から読み込んでるから
必ず最初の"this"で止まってしまうのです
なにかいい方法はないでしょうか?
Findの任意の位置から検索開始できるオーバーロード使えばいいんじゃね
478 :
デフォルトの名無しさん :2007/12/08(土) 22:23:12
>>477 すいません、たとえばどのように書けばよろしいのでしょうか?
いやまずヘルプ見ろよ
480 :
デフォルトの名無しさん :2007/12/08(土) 22:37:58
481 :
デフォルトの名無しさん :2007/12/11(火) 18:21:35
namespace IEnumeratorTest { public class Sample : IEnumerable<char> { public IEnumerator<char> GetEnumerator() { yield return 'C'; } } class Program { static void Main(string[] args) { foreach (char c in new Sample()) { Console.Write("{0}", c); } } } } C#2.0 yieldの勉強をしています。 このコードで何故コンパイルエラー(CS0536)が出るのかわかりません。 下記のどれにも違反していないのですが。。 ・public キーワードが省略されている。 ・戻り値の型が一致しない。 ・static キーワードがある。 何か足りないものでもあるのでしょうか? Visual C# 2005 Express Editionを使用しています。
482 :
デフォルトの名無しさん :2007/12/11(火) 18:46:25
MSDNを見るとIEnumerator<>は非ジェネリックのIEnumeratorを継承 していました。 また、以下の記述がありました。 実装時の注意 このインターフェイスを実装するには、非ジェネリックの IEnumeratorインターフェイスを実装する必要があります。 そこで IEnumerator IEnumerable.GetEnumerator() { //ここでIEnumeratorオブジェクトを戻さないとエラーになる } を実装する必要がありそうなのですが、何を書けばよいのかわかりません。
>>481 エラーメッセージ読め。
IEnumerable<T> は non-generic な IEnumerable を継承してるんで、
そっちの GetEnumerator も実装しないとだめ。
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
>>482 IEnumerator IEnumerable.GetEnumerator() の中身は、
return this.GetEnumerator(); にでもしとけ。
Yieldの使い方を根本的に間違ってるわけだけどな。 Yieldを含む IEnumerableなファンクションが暗黙にいろいろやってくれる。 この例だとstaticにしてもいいな。 public class Sample { public IEnumerable<char> Hoge() { yield return 'C'; } } foreach (char c in new Sample().Hoge()) Console.Write("{0}", c);
486 :
デフォルトの名無しさん :2007/12/11(火) 19:28:55
>>483 >>484 >>485 ありがとうございました。解決しました。
>>485 別法でしょうか。まだ詳しいことは分からないのと
サンプルの方法も間違っていなそうなので、とりあえず
これを使っていこうと思います。
int x = 100, y = 200; private Storyboard story; private DoubleAnimation myDoubleAnimation; private DoubleAnimation myDoubleAnimation2; private void WindowLoaded(object sender, RoutedEventArgs e) { Rectangle rect = new Rectangle(); rect.Width = 10; rect.Height = 10; . (省略 myDoubleAnimation = new DoubleAnimation(); myDoubleAnimation.From = 10; myDoubleAnimation.To = x; myDoubleAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(2000)); myDoubleAnimation2 = new DoubleAnimation(); myDoubleAnimation2.From = 10; myDoubleAnimation2.To = y; myDoubleAnimation2.Duration = new Duration(TimeSpan.FromMilliseconds(2000)); Storyboard.SetTargetName...(省略 story = new Storyboard(); story.Children.Add(myDoubleAnimation); story.Children.Add(myDoubleAnimation2); story.Begin(this, true); } private void click(object sender, RoutedEventArgs e) { story.Stop(this); x = 200; y = 300; story.Begin(this, true); } .NET3.0ですが、ストーリーボードの子要素の中身を変更するのってどうやるんでしょうか? xとyの値をクリックで変えたいのですが、上記の方法ではうまくいかず、 クリックしてもx,yは100,200のままで変わりません 。どうすればいいのでしょうか?
yieldって使うか?用途が見えないのは理解不足なだけなのか?
489 :
デフォルトの名無しさん :2007/12/12(水) 01:27:37
うん
用途ってか、Enumerable返すメソッドが簡単に作れるから便利ってだけだけど。 状態を持つ場合なんか手で書きたくないしね。
>>487 myDoubleAnimation.Toはint?だからclickの中でx変えただけじゃ元の値のままですよ。
意図通りの挙動をさせるにはこんな感じ?
private void click(object sender, RoutedEventArgs e) {
story.Stop(this);
x = 200;
myDoubleAnimation.To = x;
y = 300;
myDoubleAnimation2.To = y;
story.Begin(this, true);
}
492 :
491 :2007/12/12(水) 04:38:58
×int? ○double? 寝ぼけてました。
yieldは列挙とマイクロスレッドが主な用途だろうな こう言語機能をこんな風に使うとこんなことができるよてきなTips( ゚д゚)ホスィ…
foreachと組み合わせるとなかなかいい塩梅だよ。
オライリーのプログラミングC#見たけど ユーザー定義型のソート基準を決めるのに IComparerを実装するのって面倒ですね。 この点はC++のほうが分かりやすくて楽チン。
>
>>493 その手のサイト運営してる身だけど、
そういう Tips は結構まとめるの面倒なのよね。
日記とかにちまちま書いてる人はいるけど、それを1箇所に集めるとなると。
「この辺りを Tips にまとめて欲しい」みたいなの列挙しといてくれたら
そのうちページに起こすけど。
>>495 いや、IComparison<T> デリゲートでもソートできる。
C# 3.0 だと、
list.Sort((x, y) => y.CompareTo(x));
とか書ける。
2.0でも、十分楽だと思うけど。 Array.Sort(table, delegate(Hoge x, Hoge y) { return ・・・; });
delegateは未読です。 C#は記法がキモイのはC++と同じで、 慣れるまで時間がかかりそうです。
C++ がキモイって。 いったい、元々どこの畑にいたんだ。
>>496 よかったらサイトのアドレス教えてください@メアド
TextBoxに色付けたり インデント開始と停止する系の命令はあるですか?
釣り?
503 :
デフォルトの名無しさん :2007/12/12(水) 20:35:34
はい
リッチなやつにしとけ
ブルジョワテキストボックスでも開発するか めちゃくちゃリソース食うの。
word呼べよ
507 :
デフォルトの名無しさん :2007/12/13(木) 04:30:30
例外をcatchするとデバッグしにくいという問題は、 IDEのメニュー「デバッグ」「例外」で対応できる。 基本的にはSystem.IO系やNullReferenceExceptionの「スルー時中断」にチェックを入れる。 あとは発生したベースで必要な例外を追加していけばいい。
508 :
デフォルトの名無しさん :2007/12/13(木) 04:34:09
今は特に言う事無いけど何か思いついたら次からここに書き込むよ
スルー時中断ワロタ
にゃるるで言及されてたC#のお偉いさんの話は本当なのだろうか。 もしマジだとしたら、ガクブルもので正直この先も使うか考えてしまう。
何の話か言えよ
ヘジたんが AOP 嫌いだとかクエリ式嫌いだと書かれてたアレ? そんなガクブルな話書かれてたか?
>>513 いや、だから、常識なのに何をガクブルしてんの?と。
クエリ式もあれはひどいよな 使い物にならん
いやいや、クエリ式は使い出すと便利でしょうがないよ。
>>516 LINQのほとんどの演算子が使えないのに?
>>517 どういうこと?
「LINQ to SQL では LINQ の標準クエリ演算子を全部サポートしてないのに?」といいたいのかな?
>>518 拡張メソッドでは呼び出せて、SQLにも使えるのに
クエリ式では使えないものがいっぱいあるだろ
>>519 ああ、そういうことね。
まあ、それでも、let とか2重 from とか使うときはクエリ式便利。
from x in a
from y in b
select new { x, y };
とか、クエリ式使わないと SelectMany 使って書くの大変よ。
正直letとか使われるとコードがわけわかんなくなる 拡張メソッドでいいじゃん
や、let はむしろ便利だろ il からコード起こしてみたらすごいことになってたけどw
クエリ式この世からなくなってくれればコード読みやすくなるのに
csvファイルを読み込んで数値計算をさせたいのですけれど どうやったらいいのか分かりません。 条件式書くのとcsvファイルを読み込んでそのまま出力することはできます。 むしろそれくらいしかできない初心者です。 アドバイスお願いします。
>>524 そのまま出力できるならその値を出力せずに計算すればよかろ
>>525 普通に計算式を書いてから、その後出力する処理を書けばいいということでしょうか?
>>527 あああああ そうだったんですか。
難しく考えすぎてました。ありがとうございました。ものすごく助かりました。
529 :
デフォルトの名無しさん :2007/12/14(金) 08:35:40
てもその計算式をどうやって解析するかは想像できてるか?
530 :
デフォルトの名無しさん :2007/12/14(金) 08:36:06
天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。 天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。 天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。 天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。
WinAPI の DllImport やら、 const int WM_HOGE みたいなのをC++ヘッダファイルから 自動生成するようなツールってないの? VB6 にあったやつみたいな。 それか、WinAPI をひたすらラッピングした .NET Frx 向けライブラリ。
>>532 おおサンクス。ググっても DllImport の解説やら、WinAPI を使ったサンプルばっか出てきて
困ってたんだよね。これで幸せになれそうだ。
たしかアドインでPInvoke関連のヤツがあったはず。 具体的に何を補助してくれるのかしらんが、余裕があれば試してみたらいい。
隔離スレなのにずいぶん機能してるな
オライリー プログラミングC# プログラミング Microsoft Visual C# 2005 言語編 C#の勉強をはじめる場合、どちらがお勧めですか?
難しくなさそうなのをちょっと読んで あとは使ってれば分かる
>>537 すでにほかの言語が使えるなら、オライリーが無駄な説明がなく理解しやすい。
下はシラネ。ただ、言語編とかつくのは他のも読む前提で書かれてることが多い。
後、@itのC#入門改訂版ならタダで読める。正直助長な部分もあるが、本を買う前に一度見てみて、
それだけでは不十分だと感じてから本を買っても遅くないんじゃないか?
ってかMSDNとかの Microsoft 様のドキュメント読めば十分すぐるだろ・・・
>>540 リファレンスには十分だが、携行できないしいろんな意味で不十分
「C#の勉強を始める場合」だからな。
>>539 C++は使えるのとJAVAの文法の基本は分かっているので
オライリーにしてみます。MSの本は高すぎるのもネックです。
>>540 基本を押さえたら適宜参照してみます。
>>542 正直、C++ と Java 使えるなら MS のドキュメントだけで十分だと思うけど。
MSDNの ・C# プログラミング ガイド ・Java 開発者のための C# プログラミング言語 あたりに一通り目を通しとけば、まあいけると思うけどな。 どうしても紙媒体が好きならオライリーのC#いいと思うよ。
以外とWebですますっていう人間多いのか? 俺は新しい言語を勉強するときには、とりあえず一冊本を買うんだが、 Webだけだと記憶しづらくないか?
msdnはローカルに入れますよ
>>547 ごめん、Webっていうのは言葉のあやで、デジタルデータでってこと。
あんまり紙資源を無駄にしたくないから本は買わない ウラニウムとどっちが無駄かは知らんけど
「Web ですます」というより、C# は「Web ですむ」。 それくらい日本語情報充実してる。
どっちにしろ公式のドキュメントには目を通しておく必要があるし、 MSの物の場合それだけで十分なことも多いからなぁ・・・
俺の場合基本的に本ですべてすませて、必要なところだけ公式のドキュメントを見る。
俺も情報をつかむ程度ならweb、じっくり勉強するなら本だな。 論文とかもできるだけ印刷して読む・・・あ、単純に紙媒体が好きなだけかな?結局好みの問題かも。 でもディスプレイとずっと睨めっこするのは辛くない? というかMSDNは重いのが・・・ 動的生成なサイトってイライラが溜まって好きじゃないんだよなw
>>553 禿胴。昔はモニター越しの情報も紙媒体も一緒だと考えてたんだが、
長年やってるうちに結局紙媒体の方が覚えやすいっていう結論になった。
オライリーの本は二部が難しいな。 のマーシャリングやらアセンブリやら属性、シリアル化とか わけわからん。 ここはC#というよりは.NETの世界なんだろうけど。
何らかの言語触ってりゃC#なんか一日で書けると思うが まークラスライブラリは必要になったときに引くが
558 :
デフォルトの名無しさん :2007/12/15(土) 01:07:27
1日もかかるかよ
>>557 は本当に一日で習得できた?
プログラムを動かすだけならコピペでも出来るし、
それに一通り使えるようになった後ではいままでやってきたことがひどく簡単なことだったと思うもんだよ。
何らかの言語触ってりゃ コボラー 絶対無理w まあ、かけるだけならアホプログラムでも書けるといえなくもないから、 1日でとか短時間を自慢げに言うのって馬鹿にしか見えんよね。
このスレらしいくだらない話だなw
>>560 C++やらJavaやらやってたんで、楽勝だったよ。
文法理解しただけで「習得」したと思っちゃう人いるよね。
何らかの言語と C++やjavaじゃぜんぜん条件が違うわけだが。 まあそんなことはどうでもいい。 できるって言うレベルが人によって違いすぎて何の意味もないわな。
C#なんて、2.0あたりまでは、メジャーな言語の寄せ集めみたいな文法で、 入門書をパラパラと読んで「ああ、こういう言語ね」と思えないようなヤツは不勉強すぎ。
言語自体の割合は小さくなってフレームワークなんかの割合がでかいって 偉い人も言ってたのにね。
1.1まででの壁はデリゲートぐらいか 2.0は匿名メソッド(のスコープ) 言語としてはこじんまり
あ、こういう言語ね 書ける ここでいうマスター はいはいなんの意味もないね。 ほんとに言語固有の部分は少ないしね。 まあそれでも仕様のボリュームはそれなりにあるけど、 ごく基本的な部分だけでもプログラムは書けるしな。
そんなんだから、ライブラリでも設計実装させたら とんでもないことになったりする。
深く考えずに、細かいところを検証せずに やたらマニアックなことする奴も氏ね、 コードは複雑で冗長でそのくせ穴だらけでたいして役にも立たない、 ああもうトラウマだぜ。
573 :
デフォルトの名無しさん :2007/12/15(土) 11:30:57
みんなすごいんだね。 俺なんて、他人のサンプルコード見ては 「なんだよ、このアトリビュート。どうやって学んだんだよ」 「このプログラムの設計ってまず何からどうやって作ったんだ?」 ってな感じで右往左往して C言語で作ったプログラムをC#で組んでみようと思っても 上手くいかないし。 よし、JAVA宿題スレにそのプログラムの問題投稿して 解いてもらって、そこからJAVA経由で理解しようと 思ったけど、返ってきた答えが答えになってない 不完全なプログラムだったりして、どーしたもんかと考えたり・・・ 基本構文はすぐに解ったけどオブジェクト指向が出来てない 自分に辟易する。
それは単に自分の頭が悪いだけで、 みんながすごいわけじゃなかろう。
>>573 あんまりふらふらせずに一つの言語に専念してみたらどうだろうか?
ここで上がってる多言語使える人間も、基本的には一つの言語を十分に学んでから、
その言語を起点して他の言語を学んでる人が多いはず。
複数の言語を同時に習得しようとすると、文法やメトリックを混同してまったく勉強できないことも多い。
俺は、とりあえずjavaが使えれば、基本的なOOP的言語は文法の違いだけですぐに覚えられると思う。
多言語を習得するというのは、実はそれほどすごいことじゃない。 文法とライブラリを使用する程度なら、その言語の主要概念(OOPとか)をすでに習得していればそれこそ丸一日あれば十分。 だから、Javaさえ覚えられればCやC++、C#は使えるも同然だし(言語固有の習慣や文法を除いて)、 言語を習得したっていうのは、言語の設計概念を理解してるかということに直結すると思う。 だから、一日で十分とかいってる人間も、似たような概念で構成された言語を、 今まで覚えた言語の概念を流用して使えるといってるわけで、 関数型言語をまったく知らない状態から、haskellを一日で自由に使えるわけがない。
>だから、Javaさえ覚えられればCやC++、C#は使えるも同然だし(言語固有の習慣や文法を除いて) 無茶ゆうなw ってか、言語固有の習慣や文法を除いて ってどういうこったよ?それはどう使えるっていうんだ? C++まともじゃなくてもやったことあるなら そんな台詞はどうやっても出てこん。
java屋がC#始めると変なとこだけ潔癖症でかなわん。 C#の文法でjavaを書く癖が直ってくれない。
あるある、チェック済み例外がうじうじとか言い出すよな。
>>573 そうだね。
こんだけオブジェクト指向が広まってるのに、たとえば、
「C一筋で10年、それ以外にはまったく興味もなくてすごしてしました。
いまさらC#やJavaなんてできません」
みたいなPGって激しくオワットルね。
C++勉強してればオブジェクト指向の概念自体はだいたいわかるんじゃないのかな。 時歳に使いこなせるかどうかは別だけど。
C++よりゃよっぽどオブジェクト指向部分に集中し易いjavaでも 結局思い切り人次第だからな〜
>>577 同意。C++の複雑度はJAVAの比ではない。C++を知ってる人間なら
JAVAはえらく簡単に覚えられるが、その逆は真ではない。
C++は手動でメモリ管理しなきゃならんし 標準ライブラリも足りないものだらけだし 言語自体にも罠がいっぱいある
>>584 メモリ管理なら、今やスマートポインタを使わない
なんて考えられない。boostがよりいっそう充実して
ライブラリが進化することを期待する。現にそうなって
きている。
いい加減すれ違い。
ここを隔離スレと知っての発言か?
いや、おまいらまずC#が生まれた背景を理解しろよ。一言だとJavaのパクリだがw 「C#はC++をモデルとしてプログラマーを面倒で煩雑な作業から開放するために 作られたより効率的開発のしやすい言語」でC++プログラマーが開発者なんだよ。 つまり、C#はC++からメモリ開放や宣言の煩雑さを省いたオートマバージョンなんだよ。 つまらないCopyとCloneの違いなんてC++プログラマーは一瞬で理解できる。 それを勘違いしているC#ヲタはC#はすばらしいと思っているが、 C#でC++より優れたものを作れるかといったら答えはYESでもありNOでもある。 「何に優れたものか」によって尺度が違うからな。 C++⊃C#、VB.NET これは間違いない。C++を極めればどんな言語でも理解できるよな。 ただ、C++を極めると簡単に言ってもSTL、ATLからUNIX系、MS系や 地方言語のマクロ、コンパイラ、デバイスのインターフェースからOS制御、途方もないボリュームだ。 OSを記述する言語としてのC++ではなく、業務アプリを作るC++を学ぶなら 表面だけなら言語経験より開発手法や設計思想なんかの方がよっぽど重要なのかもな。 はい長文ゴメンなさ〜い。
痛い
C#にはあってC++にはない致命的なもの 一つのクラスを一つのソースファイルに書く機能 リフレクション object型 クロージャ 式ツリー 自動シリアライズ そしてもちろんGC C++にあってC#にない致命的なもの なし
テンプレートがないのは重症だろ
素晴らしい!これぞ隔離スレ
ファイルのインクルードは? あれがないおかげで、プロジェクト全体から見えるシンボル(#defineで定義するやつ) を定義しようと思ったらプロジェクトのプロパティーでチマチマやらんといかん。 面倒だし明示的じゃない。
C++にあってC#に無い物はわざわざ削った物ばかり
>>593 何を言ってるのか分からん
#defineをプロジェクトのプロパティでどう代用するんだ
C#で#defineはそんな使わんと思うんだが マクロないんだし
>>596 この機能のことであればひとかけらも致命的ではないだろ
お前のコードはいろんなシンボルを使った#ifだらけなのかもしらんが
プロパティで設定すればいいだけの話だ
C# でも #if SYMBOL はやるけどもな。 #define は、 マクロ型関数は使うな、 プロジェクト全体に渡るシンボル定義はコンパイラオプション+プロジェクト設定でやれ ってこと。 プロパティはあんまり関係ないと思うが。
>>598 たしかに致命的ではないね。
その点は申し訳ない。
つ C++/CLI
>>590 おまえは本当に痛い。
リソースの乏しい久組み込みではGCが激しく邪魔になる。
一生Winアプリでも作ってろカスが。
まるで組込用途でC#使ったことがあるような言いぐさだなw
まあ組み込み用途ならCだし
>>603 適当に言いました。
すいませんでした。
C#のジェネリックは実体化しなくても型チェックされるから、 肝心なところで使い物にならない。
型のチェックがガチガチなのはむしろ好きだがね ちょっと間違うとコンパイルも通らない
CとかC++は何でもかんでも値型にキャストできるのが気持ち悪い。 なんでchar[]とかがintにキャストできるのかと。 ポインタはパフォーマンスアップに繋がるのはわかるがこれだけは 気持ち悪くてしょうがない。
C#の将来は明るいですか? Windowsのソフトを作る予定がなくてもC# を覚える必要があるか。JAVAとどっちを 勉強すべきか。
基本的にC++はメモリ操作が特徴。 型なんてただのメモリの入れ物としてしか認識してないから。
>>611 CはともかくさすがにC++にそれは言い過ぎのように思う
>>611 仮想関数があれば仮想テーブルや型情報、vptrもある。
ただの入れ物とは思えない。
Windowsのソフトを作る予定がないならC#使ってもしょうがない 作る予定があるソフトに必要な言語をやるといい
>>615 Linuxに移植されたら?
世界は変わるかも?
Monoのこと、ときどきでいいから思い出してください
>>617 しょっちゅう使ってるよ
ペンケースに入ってる
そういえばC++にはbool型をとる安全なifもないな
安全 そのようなものはC++の思想に反するのだよ うそですすみません。
むしろif文にbool型しかとらないJava/C#が異端なんじゃねーの? 俺もbool型オンリーの方が好きだが、スクリプト言語してるとそうじゃない方が多い気がする。
型に寛容な言語だとboolだけってわけにもいかないから
D言語は bool b = true; if(b){} // これはいけるけど、 if(b = true) {} // これはだめだお
動的型じゃ意味ないわな
>>623 やるならここまできっちりやるべきなんだろうな
>>623 Dはbool以外の型の値もifに与えられるけど、
代入式を取れないってのは革新的だよね。
Dはよく知らんが while ((line = reader.ReadLine()) != null) こういうのはOKなの?
>>626 メソッドのリターンコードで条件判定するようなプログラミングが簡単に
表現できない欠陥品だろD言語は
何を言ってるの君は?
bool以外の値をifに与えられちゃダメだと思うがね boolの代入は規制すべきだと思う
そういった人それぞれのプログラミング思想を具現化したものがそれぞれの言語な訳です
だな
C言語(C++)のDLLを、C#と連携を取ろうと思いました。 char*の受け渡しで、詰まるところがありました。 以下のコードで、環境により、エラーが出たりでなかったりします。 (現在、エラーが出る環境がないため、エラーメッセージ失念……) --------エラーとなるコード C#側(Form1.cs)--------- [DllImport("Hoge.dll")] extern static StringBuilder GetHogeMessage(); private void Form1_Load(object sender, EventArgs e) { StringBuilder msg = GetHogeMessage(); this.label1.Text = msg.ToString(); } -------エラーとなるコード CのDLL側(Hoge.dll)---------- char msg[255]; extern "C" __declspec(dllexport) char* GetHogeMessage() { sprintf_s(msg, 255, "ホゲホゲプー"); return msg; } -------------------------------------- 以下のように、ネットで、よく見かけるコードに変えましたら、 エラーが出なくなりました。 続きます。
634 :
デフォルトの名無しさん :2007/12/26(水) 02:04:57
--------正しく動くコード C#側(Form1.cs)--------- [DllImport("Hoge.dll")] extern static void GetHogeMessage( StringBuilder name, int len ); private void Form1_Load(object sender, EventArgs e) { StringBuilder msg = new StringBuilder(255); GetHogeMessage(msg, 255); this.label1.Text = msg.ToString(); } -------正しく動くコード CのDLL側(Hoge.dll)---------- extern "C" __declspec(dllexport) void GetCurrentName(char* msg, int length) { sprintf_s(msg, length, "ホゲホゲプー"); } 私のよく知る Delphiでは、string ←→ char*(PChar)間では、 コンパイル時に自動で変換コードを入れているのが、 デバッガで逆アセンブルすると、わかります。 同様に、動作を知ろうと、Reflectorで、 ILに変換したのも読んでみたのですが、コンパイラマジックなどなく、 理解にいたりませんでした。 C#は(というか、MSIL?)、内部動作的には、char* → StringBuilderでは、何をやっているのでしょうか? 私は想像では、StringBuilder.pChar のような非公開のプロパティに、char*を代入して処理しているのでは?と思っています。 そうなると、上記のエラーとなるコードでは、インスタンスを生成していないために、 強引なキャストが起き、StringBuilderとして処理はされるものの、 msg.ToString などで、エラーが起きることがある、と。 この辺の、動作に関するドキュメント等ありませんでしょうか?
635 :
デフォルトの名無しさん :2007/12/26(水) 02:05:54
コードミスりました orz --------正しく動くコード C#側(Form1.cs)--------- [DllImport("Hoge.dll")] extern static void GetHogeMessage(StringBuilder name, int len ); private void Form1_Load(object sender, EventArgs e) { StringBuilder msg = new StringBuilder(255); GetHogeMessage(msg, 255); this.label1.Text = msg.ToString(); } -------正しく動くコード CのDLL側(Hoge.dll)---------- extern "C" __declspec(dllexport) void GetHogeMessage(char* msg, int length) { sprintf_s(msg, length, "ホゲホゲプー"); }
マーシャラがStringBuilderが持ってるバッファのポインタをchar*として渡すだけ。 char*を返す関数なら普通にStringで受ければいい。
638 :
デフォルトの名無しさん :2007/12/26(水) 03:00:09
>>636-637 サンクス!!
アンマネージドと、マネージドの相互変換をマーシャリングというのですね。
Buffers のサンプル
http://msdn2.microsoft.com/ja-jp/library/x3txb6xc (VS.80).aspx
>>637 の文字列のところに書いてありました。
文字列の変更の可能性がある場合は、StringBuilderを使うのはあってるみたいです。
引数などで渡した場合、StringBuilderのバッファのポインタが渡されるだけなんですね。
アンマネージドで確保されたchar* を返却値としてもらう場合は、
自動的に、解放されるのを防ぐために、IntPtr でアンマネージのままもらって、
Marshal.PtrToStringAuto で、stringに変換すればいいのですね。
わかりました!
ありがとうございました。
.net のVBコードをC#に変換できるツールってないですか?
ありますよ
ありがとうです
ツールでVBコードをC#に変換して 勉強がてらいじってるけどさっぱり分からん c++でネイティブ書くなんて一生無理だなこれは
それはない プログラミングが上達しない才能が無い限りいつかできるようになっちゃうよ
>>638 char*からなら、PtrToStringAnsiではないのか?
645 :
デフォルトの名無しさん :2007/12/28(金) 01:18:07
こんばんは。質問があります。 [管理ツール]−[データ ソース (ODBC)]-[ユーザDSN]でデータソースの設定を行う際、 表示される画面(例えばアクセスの場合だとデータベースの選択画面)をプログラム上で 出すにはどうすればいいのでしょうか? ヒントか参考になるサイトでもいいので教えていただけないでしょうか。 よろしくお願いします。
GetLastErrorをHRESULTに加工して それから例外を作る装備はないですか?
throw Marshal.GetExceptionForHR(Marshal.GetLastWin32Error());
LastWin32ErrorはHRESULTじゃないと言うに GetHRForLastWin32Error
>>643 すげぇ才能だなww
逆にそれは見てみたい
>上達しない才能
論理的思考を拒否する人。 感情や直感が最優先の人。 自分の思いが総て正しいと思う人。(これはちょっと微妙か 実際居ると思うぞ。
急に何の話してるの?
654 :
デフォルトの名無しさん :2008/01/09(水) 05:55:52
da.Fill(dt)で取得したデータの内容をColumnNameでダイレクトに取得したいのですが foreach以外に良い方法があるでしょうか?
657 :
655 :2008/01/14(月) 00:05:49
>>656 理解が足りてませんでした・・
ありがとうございました
質問です SizeChangedイベントをハンドルしてInvalidateを呼び出して画面全体を再描画したいんですが 領域全体が無効化→背景色クリアが入ってしまい、その後に全体を書くので偉くちらつきます。 で、この背景色クリアを無効化したいんですが、どのようにしたら良いですか? 背景色クリアに関してはWinAPIで叩いてたころは確か ブラシを入れないとか、Invalidateの引数でRedrawするかしないかを指定できたと思うんですが… よろしくお願いします。
SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.DoubleBuffer,true); と設定してダブルバッファリングすればいい
いやダブルバッファするかどうかは別問題でしょ。
>>658 についてはResizeRedrawを有効にすればOKだと思うけど。
なんか
>>658 はあまりよくわかってなさそうだから一応補足すると、
これは要するにいちいちInvalidateしなくてよくなるって意味ね。
用途によって違うだろ
662 :
658 :2008/01/14(月) 13:24:59
>>660 ResizeRedraw=trueにしても駄目でした。
おっしゃるとおり、いちいちInvalidateしなくてよくなるんですが、
単に勝手にInvalidateを呼び出しているだけみたいですね。
結局ですが、多分.NETのInvalidateの実装が
InvalidateRect( m_hWnd, NULL, TRUE );
みたいにされちゃってるんだと思ったんで、
直接user32.dllのInvalidateRectをDllImportして
bEraseをFALSEで呼び出したらブラシのクリアが無くなりました。
ご返信していただいた方ありがとうございました。
>>658 なにもしない OnPaintBackground は?
664 :
658 :2008/01/14(月) 16:11:11
>>663 .NET的にはそれが一番よさそうな実装方法ですね…
ありがとうございます。そちらのコードに修正します。
WM_ERASEBKGND をいじった事なかったのか
すみませんが教えてください。C#とC++は、.NETで行っても処理速度は あくまでも同じなのでしょうか?それとも、C++の方が圧倒的に早いのでしょうか? C#とVBでは処理速度は描画も含めて同じだと思いますが、C++では直接 Win32APIで動かしていて高速動作するようになっているのでしょうか? よろしくお願いします。
>>666 .NETが扱えるのはC++ではなくC++/CLI
C++/CLIが吐き出す中間コードはC#,VBと同じ
よって速度は同じ
C++/CLIはネイティブコードを埋め込める
>>668 C#もunmanaged使えば同じじゃないの?
同じ内容を書けば同じ速さになるはずということで
671 :
666 :2008/01/17(木) 11:21:15
>>667-669 解説ありがとうございます。
たとえば、Windowsのエクスプローラはフォルダのフォーカス移動に伴う
ファイル表示でもものすごく高速に実行され、画面の描画もめちゃくちゃ
瞬時に行われ、ノートPCなどの描画が比較的遅いPCですと.NETの
Formアプリケーションなどとはけっこう速度差を体感します。レインボウ
のような現象も顕著に出ていて、ネイティブのアプリケーションとでは
ものすごく遅い感じが否めませんでした。
こうした差は、C++/CLIを使って、すべてをネイティブコードにコンパイル
してしまうと、たとえばエクスプローラ並みにすばらしく高速で動くように
体感できるようになるということなのでしょうか。(長くてすみません)
>>669 C#でunmanagedは使えないだろ
>>671 それはWindows.Formsが遅いだけ。
C++/CLIを使っても同じGUIライブラリを使う限り、もっさりするのは換わらない
>>673 なるほど、そうだったんですか。
ということは、C++/CLIで、Formsを使わずに何かネイティブのGUI処理をする
方法を使う(MFCでしょうか、よくは知らないのですが)などすれば、
エクスプローラ並みの高速処理が実現できるということでしょうか、
そしてそういうことはC#やVBでは実現できないと・・・、この辺がよくわかりません、
よろしくお願いします。
>>674 C# と GDI+ でも、あんまり Forms の世話にならないで自前で描画する
大型のコントロール等書いて使えばそこそこ高速になるよ。
下手に Forms で UI 書くより、ブラウザ埋め込んで Ajax でもした方が
高速になるケースもあるだろうし (ブラウザはレンダリングが結構速いから・・・)。
>この辺がよくわかりません
「ネイティブ」の意味が分からないということ?
Forms はなんであんなに重いのかね?
677 :
デフォルトの名無しさん :2008/01/17(木) 12:37:29
>>675 たびたびすみません。
>自前で描画する大型のコントロール等書いて
これは要するに、Paintイベントなどでの処理を描くということでしょうか。
>「ネイティブ」の意味が分からないということ?
「自前で描画する大型のコントロール等」という場合に、そこに.NETFramework
のクラスで描画をするだけでよくて、いちいちAPIを使うことなく高速化できるという
ことでしょうか?
678 :
666 :2008/01/17(木) 12:41:00
名前入れるの忘れました。 そのようにしてコントロールを高速化した場合、たとえば現在Form の右下を つまんでリサイズすると、Formのサイズ変更がやたらと遅くてボーダーの移動が ぱらぱらと目に見えて動きます。こういったことも高速になるでしょうか?
GDIのAPIを直接叩くGraphicsクラスみたいなのは作ったことあるぜ
たとえばTextBoxを100個WinFormに貼り付けて使うより、 普段はTextBoxの「ハリボテ」を100個描画しておいてユーザーがマウスポインタで クリックしたときだけ本物のTextBoxを該当位置にひとつだけ表示するような コントロールを自作した方が早いってことじゃない? でもこの手のコントロールの自作ってかなり面倒なんだよね。 情報すくないから手探りでいろいろ調べる必要があったり。
>>678 そう。
同時にOnPaintBackgroundで一瞬背景色で塗られるなどのUI 的に不快な動作も直す。
Panel を Dock させてあれこれやるより、OnSizeChanged 等で自前でレイアウトする方が速いし。
ただ GDI+ の遅さは非力なPCでは如何ともしがたいところもあるので、低スペックPCでも
超軽快に動くようにしたいなら C++ でネイティブでやるより無いと思う。
682 :
666 :2008/01/17(木) 13:03:35
>>679-681 いろいろご指導ありがとうございます!
>>680 >同時にOnPaintBackgroundで一瞬背景色で塗られるなどのUI 的に不快な動作も直す。
あの動きも改善方法があったんですね、うれしいです。自分でも実装できる
かどうかわかりませんが勉強してみます!
>Panel を Dock させてあれこれやるより、OnSizeChanged 等で自前でレイアウトする方が速いし。
このPanelのDockやDocking機能のコントロ-ルは使っていました。
そうすることなく自分でコントロールの移動やリサイズをさせた方が早い
のですね。いまからそれやると大変かとも思いましたが、今後の参考に致します!
勉強になります、ご指導ありがとうございました!!
683 :
666 :2008/01/17(木) 13:07:33
>>682 (訂正)
すみませんリンク先まちがえました。訂正
>>680 →
>>681 >ただ GDI+ の遅さは非力なPCでは如何ともしがたいところもあるので、低スペックPCでも
>超軽快に動くようにしたいなら C++ でネイティブでやるより無いと思う。
この件も頭に置いておきます。どうもでした!
フォルダのタイムスタンプについて教えてください。サブフォルダを追加してそこに ファイルを作成して編集したりしてあるフォルダの中身が変化していましたが、 なぜかそのフォルダのタイムスタンプがその変更よりも前のままになっていました。 こうならずに、更新日時が反映されている場合もありました。これは何か更新される ために必要な条件のようなものがあってそれが異なっているためなのでしょうか?
そりゃディレクトリエントリが更新された時刻だもの
686 :
684 :2008/01/18(金) 15:57:46
>>685 そうだったのですか、ということは内部のサブフォルダ内の何かのファイルが変更された
としてもそれの時刻は繁栄されないのですね。わかりました。
すみませんがもう一つお願いします。
アプリケーションのアイコンを探すときにレジストリ内のDefaultIconキーの値のところに、
次のようにマイナスの番号が入っている場合、shell32.dllのファイルの中の番号としては
使えないのでしょうか?kernel32.dllの LoadLibraryExA で検索してアイコンを見つける
ときにも使えるのでしょうか?
HKEY_CLASSES_ROOT\VBSFile\DefaultIcon\"(default)" = "shell32.dll,-298"
HKEY_CLASSES_ROOT\txtfile\DefaultIcon\"(default)" = "shell32.dll,-16"
(これでサウンドの場合の C:\WINDOWS\system32\wmploc.dll,-734 の-734 を
そのまま使ったところ、音符マークのアイコンとは別のものが来たのでした)
わからんが、wmploc.dllを開いてみたら 734 に音符のアイコン入ってたけど。 マイナスは別の意味を持たせてるのかも?
688 :
684 :2008/01/18(金) 17:24:42
>>687 あ、すみませんでした、一つ間違いがあることに気がつきました。とはいうものの、
プラスとしてやってみたもののそれでも取ることができませんでした。なんだろう、
映画のフイルムの絵のようなアイコンなのですが・・・。まずは、そのアイコンの
ビューワを探して見てみます、ありがとうございました。
アイコンはVisualStudioでDLL読んでみたんだけど、 EEだとリソースは無理か
>>686-687 0以上の値は、0からの連番で何個目という指定(シェルのアイコン指定のダイアログの順番)。
負の値は、絶対値がリソースIDを表すという指定。
691 :
デフォルトの名無しさん :2008/01/18(金) 19:15:16
>>690 あーそうだったのですか、わかりました。それでもう一度やってみます、
どうもありがとうございました!!
692 :
691 :2008/01/18(金) 21:20:38
>>689-690 アイコンの取得に成功しました、ありがとうございました。助かりました!!
int / int で小数点が出てこないのはなんでだぜ?
その方が速いから
>>693 int/intの結果はintになると規格で決まってるから
LOG4NETで設定ファイルを使わずに、ソース上で出力先やAppenderの指定をできる方法ってありますか? クライアントアプリケーションとして扱う場合に、ユーザに勝手に設定を弄られたくないから LogManagerでApp.Configの設定を読むような方式にはしたくないのです。 ログ出力クラスを自作したほうが早いですかね?
そのまんまコードで初期化すりゃいいんでは?
698 :
696 :2008/01/20(日) 03:49:16
>697 ログメッセージを出力するためのILogインタフェースを持った インスタンスを取得するには、LogManagerクラスから取得する しかないようなんですよね。 LogManagerクラスからはRepositoryやAppenderを取得できても、 設定はできないので、どうしたらいいのか分かりません。 RollingFileAppender appender = new RollingFileAppender(); appender.AppendToFile = true; appender.File = @"C:\test.log"; appender.Layout = new PatternLayout("%d %5p %c{2} - %m%n"); RootLogger root = new RootLogger(Level.Debug); root.AddAppender(appender); root.Log(Level.Debug,"tset", new Exception()); 以上のコードでログが出ないか期待しましたがダメでした...
>698 log4netのソースを直に書き換えて埋め込んじゃえばいいんじゃない?
701 :
デフォルトの名無しさん :2008/01/20(日) 20:53:54
アホちゃいまんねん
702 :
デフォルトの名無しさん :2008/01/20(日) 20:59:58
パーでんねん
703 :
698 :2008/01/20(日) 23:56:26
>699 なるべくOSSのモジュールはソース変更したくないんですよ。 ライセンスに従って公開しなきゃいけなくなっちゃうし。 公開するだけならまだ変更部分だけで済みそうですが、 公開するための環境を維持しておかなきゃいけなかったり、面倒です。
>703 log4netはアパッチライセンスだから融通が利くよ。
ParallelFXのParallel.Forで実行されるスレッド数はいじることができますか?
>>705 System.Threading.Tasks.TaskManagerPolicy
のコンストラクタで、minThreads, idealThreads, maxThreads を指定可能。
FlowLayoutPanelにコントロールを追加しているのですが、 下記のようなコードだと一瞬ちらつきます。 FlowLayoutPanelにBeginUpdate、EndUpdateのような描画を一時止めるようなメソッドはないでしょうか? Panel.BeginUpdate;←のようなものありませんか? Panel.Controls.Clear();←ここでクリアしてる為、一瞬まっさらになり、ちらつく for (int i = 0; i < max; i++) { Panel.Controls.Add( コントロール ); } Panel.EndUpdate;←のようなものありませんか?
節穴? SuspendLayout/ResumeLayout
PictureBoxの非同期読み込みみたいに、画像の読み込みを途中でキャンセルしたり 読み込み状況をモニターできるようにしたいです。 Image.FromFile等ではそのようなコールバックを指定できないようです。 どうやればいいのでしょうか?
ためしもしないで適当に書くと Image.FromSteamに非同期Streamを渡せばいいんじゃね
>>710 Streamを自分で実装してReadの中でゴニョゴニョ、ってことでしょうか。
そういうやり方しかないんかなあ。
画像のデコード程度、キャンセルしたくなるほどの時間もかからんと思うが
Image.FromStreamするとImageが生きてる間はStreamも生きてなきゃダメなのか… と思ってKB309482見て試してみたけど、アニメーションGIFだとダメだった…
DataSetを使ってレコード単位にDBを操作する場合に、 DataSet.DataTable.Rows[i]["カラム名"] のような記述が必要になりますよね。 (DataGridのDataSourceを使えばそんな意識はしないですが) この、文字列でカラム名を指定するのがイマイチだと思うのです。 文字列だからインテリセンスも効かないですし、打ち間違えの可能性も。 カラム名を入れたenumを作れば解決できるような気もしますが、 DataSetの中に既に定義があるのですから、それを流用できないでしょうか? 要するに、カラムをカラム名で指定する際に、intと文字列以外の方法が あるでしょうか?
>>714 DataSet継承してカラム名をプロパティにしたクラスを作る。
VisualStudioでテーブルから自動生成すればできるだろ。
>>713 一旦 MemoryStream に読み込んでそっから Image 作ればいいよ
717 :
714 :2008/01/31(木) 10:22:15
>>715 どうも有り難うございます。
しばらく考えているんですけれど、どうもイメージが浮かばないです。
DataSetを継承しても、汎用的なものは出来ないように思うのですが。
VSで自動生成と言う意味は、VSのデザイナで自動生成されたDataSetの
ソースを何らかの方法で解析して、カラム名を格納するという意味なのでしょうか‥‥。
>>717 厳密に型指定されたDataSetでググる。
DataSetをそのまま使うならカラムやその型の情報はクエリーの応答があるまでわからない。
その場合はカラム名の文字列か序数で指定するしかないな。
719 :
714 :2008/01/31(木) 18:19:17
>>718 なるほど、DataSetを作る段階で別の種類のDataSetだったのですね。
どうも有り難うございます。調べてみます。
720 :
デフォルトの名無しさん :2008/01/31(木) 22:15:17
DBと接続して使うんじゃなく、dataset単独で簡易なデータベースとして使うなら、 プロジェクトに新規でxsd(スキーマ)を追加してテーブルやリレーション、キーを定義して、 いっぺんコンパイルすると、ツールボックスにdatasetを継承したdataset1(xsdファイルで定義した 名前による)コンポーネントが現れる。フォームのデザイナでこいつをD&Dしてやると型付けの あるdatasetとして使えるよ。
表計算ソフトの=REPT(x;y)を模倣した自作関数をfprintfの第3引数以降に使う場合です。 rept(int x,int y)の記述にはfor,while,do〜whileのどれが適任でしょう? 回数を指定するyは0の場合もあります。
それは本当にC#の質問ですか
ウィンドウを持ったアプリケーションが起動されるのを 監視することはできますか?
できます。
725 :
723 :2008/02/02(土) 13:09:26
>>724 やり方か調べるためのキーワードを教えていただけませんか?
findwindow
>712 画像のデコードがそこまで重いことはまずないと思うが、 ファイルアクセスが妙に遅延することはあると思うよ。 ノートンとかウイルスバスターがファイルアクセスに むやみやたらに割り込むから信じられないくらい応答が返ってこないことがあったり。
や、それなら普通に事前にMemoryStreamに(非同期で)読んどけば良いじゃん?
画像がWeb上とかにあって数KBダウンロード毎に描画するんならキャンセルとかあってもいいかもしれんが、 既にハードディスクあるものを表示するだけで、わざわざキャンセルとか普通やらないな
.NETでATLのCComPtrみたいな タイプライブラリのないInterfaceを扱う仕組みはあるですか?
Managed DirectX
自前でinterface再定義はできる Guid属性とかComImport属性とか使う IDispatchならType.InvokeMemberでレイトバインディングもできる
std::exceptionにUNICODE入れると文字が壊れますか?
スレ違い
その質問には答えるなということか。 了解した。
IPCをチャンネルに使ったリモーティングを使って、同一PC内でプロセス間通信を しているのですが、厳密署名したら少し動かなくなりました。 Clinet.exeとServer.exeとRemote.dllの3つのプロジェクトからなるソリューションです。 それぞれのアセンブリに同一のsnkファイルで署名したところ、 Client.exeが、Server.exeからのコールバックのみを受け取れなくなりました。 クライアントからサーバへのメッセージングは今までどおりに出来ています。 こういうモノなのでしょうか?どなたかご存知の方がいらしたら、宜しくお願いします。
738 :
737 :2008/02/13(水) 13:33:40
IpcChannel channel = new IpcChannel(properties, null, new BinaryServerFormatterSinkProvider(properties, null)); クライアントとサービスの両方を、上記の書き方で初期化したら出来ました。
SqlTransactionのCommit()のタイムアウト時間を変更したいのですが どこで設定すればいいのでしょうか? サーバーの負荷がでかいときにCommitのタイムアウト時間だけ短くてタイムアウトしてしまいます。
start tran somewhere here SqlCommand cmd = new SqlCommand(mySqlCommand, conn); cmd.CommandTimeout = 0; // NO TIMEOUT cmd.ExecuteNonQuery(); commit here
>740 それで変わるのはExecuteNonQuery()のタイムアウト時間だけで Commit()のタイムアウト時間は変わらないから困ってるんだよ。
なるほど。 しかし、"BEGIN TRANSACTION"と"COMMIT"をExecuteNonQueryで実行したら?
>742 確かにSqlTransactionのCommitもExecuteNonQueryでCOMMIT叩いてるだけにしか見えないのでそれでもいいかなとか思ってました…。 やってみたらそれで問題なく動いてしまったし。 SqlTransactionの存在意義がなくなってしまうけど仕方がないか。
マクロメディアFlashの タイムラインみたいなウィンドウ作りたいけど やっぱり自作しなきゃだめかな なんか楽そうな方法ありませんか?
最近どっかで見たな
NiVEとか?
747 :
747 :2008/02/29(金) 01:44:05
axWindowsMediaPlayerを使ってオーディオファイルを再生しています。 ListBoxにプレイリストの内容を表示しようと this.listBox1.SuspendLayout(); for(int i = 0; i < wmp.currentPlaylist.count; i++) { this.listBox1.Items.Add(wmp.currentPlaylist.get_Item(i)); } として、ListBoxにプレイリストの内容を表示しました。 更に再生中のMediaを選択状態にしたく、続けて for(int i = 0; i < this.listBox1.Items.Count; i++) { if(this.listBox1.Items[i].Equals(wmp.Ctlcontrols.currentItem)) { this.listBox1.SelectedIndex = i; } } this.listBox1.ResumeLayout(); としました。しかし、再生中のMediaが選択されません。 インターフェース同士の比較が上手くいかないからなのかなと思っています。 上手くいく方法がありましたら教えて下さい。もう3時間位悩んでいます。 よろしくお願いします。
748 :
747 :2008/02/29(金) 04:47:58
age忘れてました。まだ悩んでます。助けて下さい。orz
そもそも、PlayList[]の型とcurrentItemの型が違う。
750 :
747 :2008/02/29(金) 16:37:55
wmp.currentPlaylist.get_Item(i) も wmp.Ctlcontrols.currentItem もWMPLib.IWMPMediaかと思ったのですが、違うのでしょうか? for(int i = 0; i < this.listBox1.Items.Count; i++) { if(((WMPLib.IWMPMedia)(this.listBox1.Items[i])).Equals(wmp.Ctlcontrols.currentItem)) { this.listBox1.SelectedIndex = i; } } this.listBox1.ResumeLayout(); とキャストしても比較出来てないみたいだし、どうしましょ…orz
そもそもオブジェクトを比較してどうすんだ メディアプレイヤーいぢったことないけども、普通に考えて実体はCOMの先だろう 何らかのインスタンスを識別するIDとかがあるだろうからそれで比較汁
>>751 何らかのインスタンスを識別するID
o...rz
753 :
747 :2008/02/29(金) 22:35:46
解決しますた。 get_isIdenticalの戻り値と引数を見て、 もしかして…と思って試したら当たりですた。 this.listBox1.SuspendLayout(); for(int i = 0; i < wmp.currentPlaylist.count; i++) { WMPLib.IWMPMedia media = wmp.currentPlaylist.get_Item(i); int j = this.listBox1.Items.Add(media); if(wmp.Ctlcontrols.currentItem.get_isIdentical(media)) { this.listBox1.SelectedIndex = j; } } this.listBox1.ResumeLayout();
listViewに大量のデータを設定していると スクロールした時とか、再描画がとてつもなく重いんです。 プロパティとかで回避方法ってありますか? また、セル表示で別のコントロールでお勧めのやつってありますか?
VirtualMode やや面倒だけどな DataGridView
756 :
756 :2008/03/06(木) 18:09:14
相談があります。
http://forums.fanatic.net.nz/index.php?showtopic=11226&st=0&p=81800& のCのコードを参考にしてC#で同じ事をしようとコードを書きました。
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace msnTest {
public partial class Form1 :Form {
private const int WM_COPYDATA = 0x004A;
[DllImport("user32.dll")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")]
private static extern int SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, ref COPYDATASTRUCT lParam);
[StructLayout(LayoutKind.Sequential)]
private struct COPYDATASTRUCT {
public IntPtr dwData;
public int cbData;
public IntPtr lpData;
}
}
続く
757 :
756 :2008/03/06(木) 18:13:37
COPYDATASTRUCT sendData = new COPYDATASTRUCT(); sendData.dwData = (IntPtr)0x547; sendData.lpData = songDataPtr; sendData.cbData = Marshal.SizeOf(songData); IntPtr msnHandle = FindWindow("MsnMsgrUIManager", null); MessageBox.Show(SendMessage(msnHandle, WM_COPYDATA, IntPtr.Zero, ref sendData).ToString()); Marshal.FreeHGlobal(songDataPtr); } } }
758 :
756 :2008/03/06(木) 18:16:53
あれ、なぜか書けない…。間が飛んでる…
そのまま放置とはどういう了見だ
ワロタ
761 :
756 :2008/03/08(土) 20:39:33
762 :
デフォルトの名無しさん :2008/03/10(月) 03:11:16
しつもんです。 Graphics g = pictureBox1.CreateGraphics(); mypen = new Pen(Color.White); fillbrush = new SolidBrush(Color.Black); g.FillEllipse(fillbrush, 10, 140, 400, 400); g.DrawEllipse(mypen, 10, 140, 400, 400); pictureBox1.BackColor = Color.Red; とやると、せっかくかいた円が消えてしまうのですが、 どうすれば消えないでかけるのでしょうか? 背景の色の設定と、円を書く順番を変えても意味ありませんでした。
>Graphics g = pictureBox1.CreateGraphics(); なにこれ
764 :
デフォルトの名無しさん :2008/03/10(月) 03:27:44
>>763 pictureBox1に円を書きたかったのでこうしたんですけれど、
必要ないんですか?
コントロールを継承したクラスでOnPaintメソッドをオーバライドする CreateGraphics()じゃなくてOnPaintに渡されるe.GraphicsのGraphicsで描画する
766 :
デフォルトの名無しさん :2008/03/10(月) 03:44:49
>>765 ???
すいません、もう少し分かりやすく説明してもらえませんか?
おいおい・・・
人間やめろ。
>>766 君にはまだ早い
C#の基礎を理解してから来なさい
>>768 >>769 「現在のウィンドウのメッセージの存続期間だけ有効です。」
を具体的に説明してくれ。
おいおい・・・
人間やめろ。
>>770 君にはまだ早い
C#の基礎を理解してから来なさい
ここ、もう相談スレじゃないよな…
本スレ行けよ
WinXPのC#.NET2003での質問ですが、 DDLのChangedで動的に選択したインデックスが上手く取得できません どうしたらよろしいでしょうか?
777 :
デフォルトの名無しさん :2008/03/10(月) 18:11:18
ファイト
笑えばいいと思うよ
何、このスレ
垂直同期をとるためにVsync待ちをしたいと思い調べたところ C++では IDirectDraw::WaitForVerticalBlank IDirectDraw::GetVerticalBlankStatus IDirentDraw::GetScanLine などを使うようなのですが、 これらの機能をC#で使用する方法はあるでしょうか? また、C#で垂直同期をとる手法として一般的なものがあれば 教えていただけないでしょうか
Managed DirectX
ずいぶん懐かしい言葉だなー。 垂直同期待ちって。
液晶全盛、リフレッシュレートいじり放題のこのご時勢にVSync待ちはないだろ
へーCRTのリフレッシュレートが「いじり放題」じゃなかったなんて知らなかったよw むしろ液晶の方がそういう面では不自由なデバイスのはずだと思ってたけど
液晶のリフレッシュレートが弄りやすいかどうかなんて話してないんだが
へーじゃあ「どんな話」をするつもりだったのかとっくり語ってもらおうじゃないの。 いやまあできないなら無理すんなよw
液晶全盛 かつ リフレッシュレートいじり放題という意味で、 液晶全盛 だから リフレッシュレートいじり放題という解釈ではないということだと思う。
788 :
783 :2008/03/14(金) 00:07:04
おまえら俺の言葉が足りなくて悪かった
言いたい事は
>>787 さんのいう通りだ
おやすみ
いや普通はそう解釈するよ 揚げ足を取ろうとするなら別だけど
>>789 君も頭悪いなw
>>788 は図らずも自分を擁護できる発言をする奴がいたからそれを利用してるだけ。
そんなことねえだろ、と言いたいのなら、
>>783 の意図が
>>787 の通りだとして(それでも全然かまわないが)
「なぜ」「このご時勢にVSync待ちはない」という結論に繋がるのか説明してみな。
必ずいい方向に脳内補完する人と必ず悪い方向に脳内補完する人が この世の中にはいるんだな。 なぜ分かれるかというと性格がいいか悪いかなんだな。
Vistaは垂直同期取ってるんじゃなかったっけ
もうそろそろカスはほっとこうぜ
>>795 Vistaのことをひどく言うのはやめてあげてください。
Vistaは、悪くない
悪いのは、サンプルプログラムのフォント関連部分と
>>791 の頭
まあ
>>797 がそういう「負け惜しみ」はみっともないと思う程度の恥の意識もない奴だ、
というのはよくわかったよw
うわ、反応早ww
反応早かったら何?
っていうか、どうしてこの手の馬鹿ってのは自分の言葉を自分に適用しようとしないのかねw
一言で言えば恥を知らないからだろうけどさ。
そんなことはどうでもいいから
>>791 に書いた疑問を説明してみてよ早く。
801 :
783 :2008/03/14(金) 20:59:24
ちょっとおまえら俺の事はもうスルーしてC#の話ししてくださいホントお願いします
C#の話はC#スレでやりましょう
テアリング避けでVsync待ちしたいこともあるけど、 漏れのやり方が悪いのかビジーループになるんで非ゲームでは あんまり使いたくないな・・・
もうリフレッシュレート論争やめようや
続けたい奴は続けていいよ どうせ糞スレだし
中途半端に機能してるから紛らわしいw
>>784 で書いた自分の勘違いを認めたくないだけだろ
こういうバカは何言っても食いついてくるからほっとけばよろし
808 :
デフォルトの名無しさん :2008/03/19(水) 17:35:42
ここで質問ですよ リッチテキストボックスに画像貼り付けたり、背景を自前で描画したりやりたいんですが WndProcのWM_PAINTを捕らえても文字の上に描画されてしまいます 文字の下に描画できませんか?
つWPF
810 :
デフォルトの名無しさん :2008/03/19(水) 19:44:09
ググレ押忍
>>808 そんなの簡単だろ・・・と思ってやってみると意外とできないねこれ
Func<T,TResult>に共通化されつつある今、 Converter<T>やPredicate<T>などを使う意味はあるのでしょうか?
意味を明確にできる
>>814 前からいちいち定義するのがいやでDelegate<Result,Param1,Param2>とか普通のメソッドの型の順番にあわせて使ってたんだが、
Funcniそのまま使えないんだよなぁ・・・どうしよう
DataGridViewでNullValueが設定されている列のセルの値を、プログ ラムでDBNull.Valueに設定したとき、セルにNullValueの値を表示す るにはどうしたらいいのですか? MSDNライブラリには、DBNull.Valueを設定するだけではできないと書 いてあるけど... セルの値がDBNull.Valueで、セルの表示はNullValueの値にする方法 を教えてください。
変換は行われないってのはDataSourceNullValueがDBNull.Valueで(ryってところの解説だぜ?
>>818 ありがとうございます。よく読んだらその通りでした。
その列の型はstringで、DataSourceNullValueを設定してないため、MSDNライブラリの
「DataSourceNullValue が DBNull.Value で、セルの ValueType が参照型」に見事に
合致してました。
DataSourceNullValueをstring.Emptyにして試してみます。
コレクション要素の変更をコレクションのオーナーに通知する方法 はないですか?オーナーをコレクションとしてラッピングするくらいしか 思いつかなくて。
821 :
デフォルトの名無しさん :2008/03/24(月) 18:55:21
その方法でいいんでない? 何か問題があるのか?
IBindingListでも実装しとけ
配列の配列にアクセスする方法について教えていただけないでしょうか? int data = new int[5][5]; に数値データが入っているとして、例えば全要素を表示させることを考えます。 その際あえて、ポインタを使ってアクセスすることを考えてます。 (ポインタなんて使わず、添字を使えばいいというのはわかっていますが、 あくまで、勉強のためということで。。。) ポインタ(*p)を使う方法はわかるのですが(ソースの上半分)、ポインタのポインタ(**p)を使ったやり方が(ソース下半分)がわかりません。 ちなみに具体的にはソース中の<<<<data>>>の部分の書き方がわかりません。 (もしかしたら、ぜんぜん違うのかもしれませんが。。。) わかる方教えていただけないでしょうか?よろしくお願いします。m(_ _)m //とりあえず うまくいった ポインタ を使う方法 fixed (int* p = &data[0][0]) { for (int* px = p; px != p + 5; px++) { for (int py = *px; py != *px + 5; py++) Console.Write("<" + (int)&py + "," + py + ">"); Console.WriteLine(); } } //うまくいかない ポインタのポインタ を使う方法 fixed (int** p = <<<<data>>>) { for (int** px = p; px != p + 5; px++) { for (int* py = *px; py != *px + 5; py++) Console.Write("<" + (int)py + "," + *py + ">"); Console.WriteLine(); } }
>>824 ポインタなんて使わず、添字を使え
こうですか?
C#でわざわざポインタなんて勉強する価値無し
int*[] temp = new int*[data.Length]; for (int i = 0; i < temp.Length; i++) { temp[i] = (int*)(void*)Marshal.UnsafeAddrOfPinnedArrayElement(data[i], 0); } fixed (int** p = temp) { ... こうじゃね 本気でこんなの書く奴がいたら頭おかしい
>>824 上も全然ダメ。めちゃくちゃ。
コンパイル通りゃいいってもんじゃないよ・・・
そこまでやるならC++/CLI使えって話しだな
その記事,すごく客観的で秀逸だよな
832 :
824 :2008/04/02(水) 18:38:08
>>826 具体的なソースをご提示いただき、ありがとうございます。
>>827 上のソースも、ポインタの使い方に間違いがありますか。。。
一応、ほしい結果は得られたので、正しいかと思ったのですが。。。
>>828 もちろん、その通りですが、あくまで勉強ということで。。。。
>>829 この記事読みました。
実際に簡単なループをまわして何パターンかのソースで確認したところ、配列とポインタとでそんなに大きく処理時間がかわらないようです。
(逆にポインタが遅い場合もありました。。。)
ポインタのポインタは関数の文字列型の引数に使う程度で、やっぱりあまり出番がないんでしょうか。。。。
|┃三 / ̄\ |┃ | | |┃ \_/ ガラッ. |┃ | |┃ ノ// ./ ̄ ̄ ̄ \ |┃三 / ::\:::/:::: \ |┃ / <●>::::::<●> \. |┃ | (__人__) | |┃三 \ ` ⌒´ / |┃三 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \
C++とC#の違いを教えて下され
全然違うので説明が逆に難しい。
JAVAとC#の違いを教えて下され
中途半端に似てるから鬱陶しい 特にJavaのジェネリックの糞さには発狂しそうになる
>>836 Sunが作ったのがJava。
Microsoftが作ったのがC#。
JavaとJ#の違いを教えて
JavaをWindowsに最適化したのがJ#
そーいや大学の研究科目でjavaを使ったGUIとかいうのがあったがどうにもなあ 「最終的には1000行を超えるコード〜」とか「毎年大人気の科目」とか意味の分からん宣伝ばっかで萎えた。 そんなん個人でもうやってるって話だし。チームプログラミングとかを前面に押し出してたなら魅力があっただろうに
学部一回生向けの授業?
>>841 大学でチームプログラミングなんて教えれる先生がいないって。
>>842 三回生向けだからあれなわけで
一回生でそこまでやったらそれは別にいいと思うけどね
大学でチーム開発してもできるやつが全部やっちゃうから意味なし。
>>842 学部一回生でそんな高級なことしたら単位が全然でないじゃないか!
学部一回だとこんなもんだ。
・電源の入れ方、終了のしかた。
・エディタのつかいかた
・ファイル操作のしかた
・ほーむぺーじをつくろう
・一番最後に hello world(全角スペース入れてコンパイル通せないヤツ多発)
これは酷いww
>>845 卒論を二人で一つ書く大学もあるらしいからな
ありえる
一回目のCの授業でHelloWorldコンパイルまで行ったけどwwwwwwww
どこの底辺専門学校だよ。
院なら別に共著って普通じゃねえ?
>>847 二人で作業したからといって、労力が半分になるわけでもないし、
二人で作業したからといって、二倍の完成度になるわけでもない。
むしろ独りよがりな内容にならなくて良いんじゃないか。まさにXPだな。
え?
お菓子を食べながら卒論を書くんですね わかります
いいえビールです
早く終えて生ハムメロンでも食べなはれ
何だか腹減ってきた
ArrayListのテンプレート版はないの?
System.Collections.Generic 名前空間の List<T>
862 :
デフォルトの名無しさん :2008/04/22(火) 17:02:02
C#のおかげで少しだけC++のテンプレートが解ったような気がした
>>862 そりゃ気のせいだな、ぶっちゃけ別物できる事の範囲が違いすぎる、つかなんだこのスレ
昔の重複スレの残骸?
「すこしだけわかったような気がした」って言っただけなのに・・・
気にスンナ
C++始めようと思うんだが、C#をから見たC++みたいな都合のいいサイト無いかな?
>>866 おお、もうそんなこと言い出す奴がいる時代か。
需要としてはその逆ばっかりだったんだけど。
なので、あんまりそういうサイトないと思うよ。
やっぱ無いよねf^^ パイオニアになって勉強がてらまとめサイト作ろうかな・・・。 何から勉強していいか分からんレベルだけどww
>>866 C++は歴史がある言語だから、C#から見るより歴史を追った方が分かりやすいかもしれん
そうしないと理不尽と理解できない仕様の塊に悶絶するハメになりそうな予感が・・・
大きなところで C言語 → クラスが実装された初期C++ → 例外・種類の増えたキャスト・テンプレート → それからのクラスライブリの発展(ジェネリック・メタ)と順に。
いきなりクラスとか勉強する人もいるけとね、玉ねぎはむいた方がいいと俺は思う。
>>869 構造化プログラミング言語としても、
新しい言語の方が優秀なのよね。
今から勉強するなら、C# で始めて、
C# で構造化プログラミング、C# で OOP、C# で構造化例外、C# でジェネリクス
と勉強する方がいいと思う。
いまさら C++ に戻って欲しくないのよね。
せっかく C++ の負の側面を切り捨てた C# があるのに、
C# から C++ に舞い戻るなんてやめて欲しいなぁと。
それは正しいけど、「C++の設計と進化」読んだり、webの解説を読めば載っている事であって 「C#しか知らない人から見たC++」ていう観点で語るのがおもしろいんじゃね 「なんとC++にはGCがありません」みたいな
いや、一度は見てみるべきだな その時代の思想、その正しいとされる書き方考え方ってやつが見えてくる、 C#の思想だって、いつまでもそのままではいられない、現にどんどん変わっているし。 変わるという前提で何ができるかという事が大事だと俺は思うね。 C++は歴史を追って勉強すべきというのは、予想外の仕様であっても当時は正当と思われる思想の元に考えられているもので、一見無節操に見えても無節操に拡張されているわけではない。 だからその方が憶えやすいと思うんだよ。
ただなぁ、過去には常識だったけど、今は非推奨になってる書き方なんかも多くて、 下手に歴史を追うとそういう負の遺産まで覚えちゃうのよね。 それが負の遺産だと認識できる人間にとってはいい勉強なんだけど、 世の中そういう人ばかりではないから・・・
いまいちまとまりが悪いので 873 をまとめてみると、 要するに、C++の言語使用は、一見ルールなき言語仕様に見えても、深いところにルールはあるんだよ。
mutableなんて最初なんであるのか意味がわからんかったさ
>>874 負の遺産を負の遺産と認識できないならプログラマは辞めるべきだな、と俺は思う。
アンチパターンは重要だよ。
まあ取り敢えずは書いてみればいいんじゃね? 読み物としてオリジナリティは出るだろう 実用的か?となると疑問符付くが
>>877 理想論言えばね。
そりゃ、才能ある人間ばかり集められるなら苦労はしないという話に。
話がずいぶんそれてきたな。
C → C++ の歴史を知った人間が C# 使って入門記事書くのがベストだと思ってる。
なので、C# でプログラミングを覚える → C++ に移行もありだとは思う。
が、できれば C++ 自体が滅んで欲しいなぁとも今となっては思う。
俺もC#から始めた口だが、C/C++できないことに多少なりとも劣等感感じるんで、それら学びたいってのはあるけどね
C#からはじめる逆に凄いようにも感じちゃうなあ。 俺なんかもし15年遅く生まれて、初めて触るのがいきなりC#とかだったら ちゃんと順応できただろうかと考えちゃうよ。 構造体も知らない内からクラスの概念を学ぶってのはどういう感覚なのかな
俺もC#から始めた口だが、独習Cと独習C++で十分だった。
C++のクラスは拡張構造体ではないよ C++ からの人は結構誤解している人が多い。 実は自分も誤解していたクチだったりする訳だが。
>>882 そのレベルだと、きっと使えるような気持になっているだけかと思われます。
>>883 間違い
C#のクラスは拡張構造体ではないよ C++ からの人は結構誤解している人が多い。
>>884 君は勘違いをしてるよ。
C#経験者がC/C++に入門する際に参考にする情報の話をしてるんだよ。
その後もそのレベルに留まってるという君の想像に君が指摘を加えてもこっちはどうしようもないんだけど。
まぁ、一度とことんやってC++のとてつもない広い世界をみてみれば思いなおせると思いますよ。
C++で二〇〇二年ぐらいまでやっててブランクあけて今C#。F#二手を出し中。 STLまでは知ってるけど、メタは知らん。なんか変態的になってるらしいが。 C#でよいとこは、やはり抽象化度合いがC++よりあがってるところ。C++でそれをやろうとしてトリッキーになるよりもいい。 F#はさらにその抽象化度合いを上げられるのでたぶんマスターしたらそっちに行く。プリミティブなところでトリッキーなことやるよりも自分はそっちの方が好きだ。
それがどうしたの
意外にC#から入った人いるんだな
>>866 の需要は結構あるのかも
Javaから入った人は腐るほどいそうだけど
>>887 とてつもない広いというより、とてつもなく深いという感じじゃないか?
JavaからC++に入っていまはC#やってるけどC++の意味が分からなかったことは 仮想関数 virtual void function() = 0; //なぜ "= 0" 静的メンバ class hoge{ static int a; //クラス内では宣言しかできない } int hoge::a = 100; //定義はクラス外でないとできない これって歴史的な理由があるのかな?
>>893 C++の設計段階では出来るだけ新しいキーワードを
付け加えたくなかったという経緯がある
(C++の設計と進化)
>>893 ついでに14882:2003では
class hoge {
static const int a = 100;
};
を許してるから。静的クラス変数のconstのint型に限って
class内で値の定義ができる。
>>893 後者は、Cのグローバル変数と同じ方法
(ヘッダには宣言だけ書いて、どこか1ヶ所で定義する)
を踏襲したと考えれば納得がいく。
なぜコンパイラの都合に過ぎない「宣言」などというものを廃止する方向で 進化しなかったんだろう
C++スレでやれよ
>>893 純粋仮想関数は、イメージとしては関数ポインタに NULL 代入してるような感じ。
まあ、分かりにくいから C# では abstract キーワードが導入されたわけだけど。
静的メンバは、C++ では宣言と定義が別だからなぁ。
クラス = ヘッダファイルに書く = 宣言だけ書く。
クラスの外 = .cpp ファイルに書く = 実際の定義(値の代入は定義の方でやる)。
>>899 まあ、今のこのスレの流れは、「C# プログラマに C++ を教えるなら」的な空気だから。
全く無関係というわけでも。
C# 入門サイトの管理人の目にでも触れれば、そういう記事が追加されるかもしれないし。
さいきんこのスレまともに機能してなかったから、まあいいかと
むしろそれなりに機能してることが異常w
まあ重複スレの再利用として悪くない
どうせいらないスレなんだから
>>871 >「なんとC++にはGCがありません」
それちょっと読みたいなww
最初はC++(VS.NETアカデミック)だったけど、当時は.NETは全く眼中に無かった。
VS2005 EE が無償提供されて「タダなら使ってやんよ!」と思ってC#始めた人って結構多いんじゃない?
俺はVisualStudio.Netがβ版の頃にC#始めたよ
確かECMAで標準化されたときだったかな そのときC#の言語としての評価が高かったので興味を持った でVS2002をアカデミックで
俺は初めて自分で買ったパッケージがC#2003だった。 半年使って辞めたが2005になってまた始めたよ。 今ではC#オンリーです
C#でリクナビ見てみたら案件少ないね やっぱC++とかJavaが多い 本当にC#なんて需要あるの?
C#はWebで需要があるだけです。
スタンドアロンのWindowsアプリ開発にC#は需要ないの? Webだけ?C++と同じぐらいのものを作れると思ってたんだけど
作ることはできるしC++より簡単だけど色々と大人の事情があるわけです
うちのグループは結構WinFormもC#で作ってるけどね、 社内に配布する場合でもframework入ってないPCあるから意外と嫌がられるけどね
>>913 日本は Java が強いみたい。
俺は imode のせいだと思ってるけど。
下手すると、Java が世界的に絶滅した後、日本だけ Java が残るとか変なことになりそうで怖い。
あと、Java が強い国では、C# よりも VB が強くなる傾向があるみたい。
似てるからか、Java が増えると相対的に C# が減る。
Javaのメインの用途は鯖だろ C#はクライアントの案件も結構ある そんな単純な図式じゃないよ
C#とVBで案件食い合ってるんじゃないの?
>>921 思い過ごしにしか思えないけどなあw
そもそもデータの信憑性がねえ。。
javaってコーヒーとか島の名前も入ってないかそれ?w
なんか違うものが混じってるんじゃないかと思うぐらい、日本のVB多いな。
C#を実務で選択できない理由の一つとしてVBerの存在があげられるな。 VB→VB.net→C#で「C#使えます」が多すぎる。 リソース調達が出来ないよ・・・
926 :
デフォルトの名無しさん :2008/04/27(日) 15:47:05
>>921 VBじゃなく、VisualBasicに変えたら激減してしまった。
あんまりその統計は参考にならなそうだな。
VBだとウィルスバスターも入るね
>>925 VB.netができれば、C#は使えますでも問題ない気はするけどね
ちょびっと場数踏めばすぐでしょうし。それと、逆の流れも。
VBからVB.NETてのは不安にさせるところだよなw
c++やDirectxを勉強したいので マイクロソフトから出ているVisualStudio2008を購入しようと思うのですが 結構使い勝手いいですか?
>>931 勉強するだけなら無償版で十分じゃないの?
無償のExpressで足りないというのなら、Professionalも90日評価版がある。 卒業間近で今しかアカデミック買えないというのでもない限り、 それらを使った後で買うかどうか考えればいい。
手の届くSTと無償のEEでどの程度出来ることが違うのか分からない .NET Framework使うんだから一緒じゃないの?
express版はマネージ形式(中間言語)アプリしか作れないよ ネイティブコードのアプリ(MFC)作りたかったら買ってみたら?
>>931 勉強ならExpressにしろ。
基礎無い内にProの機能使ったって変な癖つくだけ。
いやいや、そんなことはない。 VC++ ExpressにはMFCもATLもリソースエディタもないが、 ネイティブコードを吐くコンパイラはある。 VC++の話が進むようならスレ違いだな。
938 :
デフォルトの名無しさん :2008/04/27(日) 18:16:45
VC++ってコードが気持ち悪いからC#やることにしたよー^ノシ
ろくにC++知らない癖に
>>938 みたいな事言われるとムカつくが
C++/CLIがキモいのは否定できない
>>935 有料版になるとC#でもネイティブコードのアプリが作れるのでしょうか?
C++/CLI以上に(重度の)テンプレートプログラミングはキモいとは思う
作れません
>>940 C#は中間言語アプリしかないみたいだからexpress版で十分かも
EEだと外部プロセスへのアタッチが出来ないから、DesktopSidebarのプラグインを作ったとき、デバッグが面倒だったな。 どうせ無償なんだからEE入れといて、アップグレードは壁にぶち当たってから考えればいいんじゃない?
俺が2005Proの機能で使ってるのって、サーバーエクスプローラぐらいだけどw
あとインストーラかな 連投ごめんね
Silverlight2SDKドキュメントのサンプルコードはVBよりC#の方が先になってて感動した
948 :
デフォルトの名無しさん :2008/04/27(日) 19:55:03
みんなC#が決定打になる波を心待ちにしてるんだね^^
Javaに似てるから習得しやすいんでいっそのこと C++とVBは全部C#に置き換わってくれるとありがたい
つーかMS謹製の言語が何種類もあるのか疑問
951 :
デフォルトの名無しさん :2008/04/27(日) 21:07:01
2005で開発しているのですが DateTimePickerで MinDateに2000/1/1を MaxDateに2000/12/31を設定しています。 このプログラムをVistaで実行すると ▼ボタンでカレンダーを表示した瞬間に 現在の日付が強制的に2000/12/31(MaxDate)に 置き換えられてしまいます。 Vistaではカレンダー自体が2000/XPと異なっていますが この動作は仕様なのでしょうか?
>>927 俺の親はVBといえばVentureBusinessだとか言ってた
>>951 再現せんね。Vista/.NET 2.0SP1
Value未設定の場合に起動時にMaxValueに設定されるだけだ。
あ、MaxValueじゃなくて今の日付の直近値か。
955 :
951 :2008/04/27(日) 21:33:02
>>953 ありがとうございます。
再度検証してみましたところ、下記の条件で再現しています。
条件:MinDate〜MaxDateの範囲に、今の日付が含まれないこと。
上記の範囲が今日の日付より昔の場合はMaxDateに
未来の場合はMinDateに、カレンダーを▼で表示する度に
強制的に設定されてしまいます。
957 :
951 :2008/04/28(月) 06:14:40
>>956 新規アプリで、DateTimePickerを配置(&MaxDate、MinDate設定)
しただけでも同じ現象が起こりました。
SPは
Microsoft Visual Studio 2005 Standard Edition 日本語 Service Pack 1 (KB926602)
Windows2000で開発・ビルドしています。
ちなみに、テスト環境のVistaにはVisualStdioはインストールしていません。
.NetFrameworkのバージョンは3.0でも3.5でも同じ現象が出ます。
リンク先はdelphiですが、同様の現象みたいですね…
デバッグだと20kのexeが発行すると全部で500kになっちゃうんだけど 20kのexeだけを配布しても問題ないよね?
デバッグ版配布すんなw
960 :
デフォルトの名無しさん :2008/04/29(火) 22:23:59
DbConnection conn = new OleDbConnection(string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=・・・"); DbCommand command = conn.CreateCommand(); command.CommandText = query; DbDataReader reader = command.ExecuteReader(); while (reader.Read()) { int n = reader[0]; // ココ } ↑みたいな感じで、AccessのmdbファイルにOleDbで接続して、読み込んでいるのだけど、 「ココ」のところの「reader[0]」が、全部文字列を返します。 odbc経由で、下のようなSQLを流して、数値型で作った項目もです。 CREATE TABLE hoge ( N INTEGER ) oracle + VB.NET2003で、同じような感じで読みこんだときには、とうぜん数値の項目は数値で、文字列は文字列で 帰ってきました。 mdb(Jet)だと、これで正しい動作なんでしょうか? それとも自分がどこか間違ってますか?
それはどっちかっつとDB板とかで聞いた方がいんじゃね DB関係のトラブルて大抵環境だし
>>960 普通は全部文字列=StringじゃなくObject型だっと思うが?
全てInt32型なら
int n = reader.GetInt32(0);
でおkと思うよ
もしくは
int n = (int)reader[0];
とか
スマソ。
>>960 のコードじゃ問題はなかった。(説明用に書いたコードで実際にバグの出てるコードとは違う)
reader[0] まではしっかりDBの型が保存されてて、(int)reader[0]とかやっても、問題ありませんでした。
readerの内容をDataTableに移し変えて、ロジック部分ではそれを利用してたのだけど、移し変える方法が
まずくて、全部文字列に変化してました。
実際はこういう感じのコードでした。
DataTable table = ExecReader("SELECT ・・・"); // SQLを投げると、結果をDataTableに入れて返す関数
DataRow row = table.Rows[0];
(int)row["hoge"]; // ここでキャスト失敗の例外発生
> readerの内容をDataTableに移し変えて、 なぜ素直にFillしないんだろう
rowに入れるんなら.ToString()付けるかConvart.ToIntじゃないか
誰か、より良い方法があったら教えてください。 // 何箇所も変更場所があるのは好ましくない class MyComponent1 { string myProperty = "初期文字列"; [DefaultValue("初期文字列")] public string MyProperty { get { return myProperty; } set { myProperty = value; } } public MyComponent1() { } } // リファクタリングで MyProperty を書き換えると GetProperty("MyProperty") に変更が入らない // 結局複数個所を書き換える方が見通しがいい class MyComponent2 { string myProperty; [DefaultValue("初期文字列")] // ここを書き換えたら myProperty の初期値にも反映したい public string MyProperty { get { return myProperty; } set { myProperty = value; } } public MyComponent2() { var defaultValue = typeof(MyComponent2).GetProperty("MyProperty").GetCustomAttributes(typeof(DefaultValueAttribute), false)[0]; myProperty = defaultValue.ToString(); } }
ん、ここは偽スレ?
スレを変えるなら両方で一言断っとけ
970 :
デフォルトの名無しさん :2008/05/03(土) 13:18:17
Part46の偽スレで書いてしまったので、こちらで再投稿させてください iTextSharp使ってテンプレート読込んだけれど、その後の文字描画がテンプレートの下に隠れてしまうが、 レイヤの順序を操作する方法とかあるのでしょうか? テンプレート読込み後に文字描画しても、その逆でも同じように隠れますが。
こっちは廃棄スレ
972 :
デフォルトの名無しさん :2008/05/05(月) 06:22:48
もりあがってまいりました!
次スレというか本スレ
2つ上のレスすら読めないってどんだけ〜
俺に、C#習得者向けのC++の constについて教えてくれ。 C++のconstとかconstとかconstがよくわからない。 前はDelphiやってたからか余計に混乱する。 Effective C++とかModern C++ Designeとか読んでもモヤモヤする。 同じ職場の別プロジェクトのプログラマーはクラス全部(という表現がよいのかわからんが?) constにしようと時間の無駄に気づかずやっきになっている。 C#風に言えばどうなんだ?
引数にconstついているのに、プロパティに書き込みができたり、フィールドをいじることができたりすることが、 おかしい感覚らしい。
C#でconstってほとんど出番無いよね
>>976 const 使ってる既存のライブラリを利用する際に
問題が発生することがあるんだよ。
const 使わないやつは死刑だ。
>>976 全部ってのはメンバ関数全部のことか、メンバ変数のことかどっちだ?
C++ではconstには3種類あって、 ・変数自身へのconst: 変数を変化しない/させない。定数。 ・(ポインタの)ポイント先へのconst: そのポインタからは読み込みしかしない。 ・メンバ関数に付く:そのメンバ関数からは(thisに対して)読み込みしかしない。 で 、ここでmutableの登場。実装上は書くんだけど、意味的には読み込みだけ、みたいな (典型的にはキャッシュみたいな)メンバ変数に付けるとconstメンバ関数からも書ける。
不変な値ってのには2つの意味があって、 1. 直定数(literal: 1 とか 0.5 みたいな数値)に名前が付いてるだけ。 コンパイル結果がまさに定数。 2. コンパイラが不変な値と認識してるだけのもの。 コンパイル結果は通常の変数と変わらないんだけど、 プログラマが値を変更できないもの。 の2つある。 C# の const は 1 の意味でしか使えない。 readonly が 2 の意味に近いけど、readonly はプロパティとかを書きかえれちゃうんで不完全。 C++ の const は 2 の意味でも使える。 というか、大昔には 2 の意味でしか使えなかった(1 はマクロを使って定義)。
>>982 素朴な疑問。
君のいう1と2の区別っていうのは
(a) Cではなくアセンブラレベルの話をしている場合
(b) ROMを持った環境の話をしている場合
でしか意味がない区別のように感じるけどどうなの。
>>983 1 は配列の静的なサイズ指定に使えるが
2 は使えない。
>>985 あと、まあ、Cみたいにパフォーマンスを気にする言語では、
コンパイル結果が定数になってるかどうかは結構重要。
load 命令が1個増えるだけで実行だいぶ遅くなるから。
OOP が絡むとさらに複雑で、 - メモリが不変 - (メソッド呼び出しの結果が変わらないという意味で) 外部から見て不変に見える という区別も。 後者は、例えば最初に1回だけ計算して、その値をキャッシュしとくような場合、 外から見た値としては毎度同じ値しか返さない(=不変)なんだけど、 最初のキャッシュ計算のときにメモリ操作は発生しちゃう。 C++ の mutable キーワードはそういうときのためにある。
で,複雑面倒な割に利点が少ないから捨てられた
>>988 というか、学者肌の人間が導入したけど
実務上ほとんど使わないから一般プログラマーが見向きもしなかった
って感じじゃない?
言語マニアと一般人の温度差ってのはよくある話。
メンバ関数のconstはメンバ関数のvolatileよりはだいぶ使われてる
>>989 正確には
>>982 の1の意味以外の const に意味がないことが判明したんだよ、メタメタしたプログラムを書きまくるなら、すぐに気づける
一切言語のキャスト等を一切使わず、言語の制約にも抵触せずに const 変数を書き換える大技がある、少し頭をひねってみると面白いよ。
constの意味は、自分でコードするときに、仕損じがないようにするためのお呪い以上の意味は無かったんだよ。
新しい言語では削除してしまうのが吉、ややこしくなるだけだから。
リテラル以外の意味のconstが最低限必要な箇所というのは 文字列に関する部分で、char配列やstd:stringがそう。 多くの言語では文字列は特別な型として扱うことが多い。 C#やJavaは不変クラスで対応している。 それで必要がなくなった。 不変クラス文字列は文字を編集する操作には向かないが、 広く参照を分散させることやマルチスレッドに非常になじむという特徴を持っている。
正直言って、C++勉強すれば良かった。 C#が出来たときに最先端と思って選んだけど ネイティブコードを吐くC++の方が実用性がある
仕損じがないようにするって、すげー重要なことだと思うんだがな・・・。
だからって複雑にしすぎたら仕損じの余地が増える
このくらいで複雑とか言ってたら D 2.0 は扱えないぜ・・・
あの本末転倒言語ですね
あの D 2.0 の const まわりの仕様は流石になんとかして欲しい。
::::::::::::::::::::::::::::::::::;.' . ^堰@| + ';::::::::::::::::::::::: ::::::::::::::::::::::::::::: ;.' .| | ';::::::::::::::::::::: :::::::::::::::::::::::::::;.' | | ';::::::::::::::::::: :::::::::::::::::::::: ;.' ┼ i 亅_|, -、 ';::::::::::::::::: ::::::::::::::::::::;.' 厂/ ィ ⌒ヽ. ';::::::::::::::: ::::::::::::::: ;.′ // .|rqミLノ_l | 〉 ';::::::::::::: :::::::::::::;.' ー匕 人公┘ ヒ}リ./ 厂}';:::::::::::: :::::::: ;.′ └冖ー> 、 n 火// .'::::::::::: 輝かしい1000! ::::::;.' ゜' /.に二二二 イ> ';:::::::: : ;.′ , ‐― 、:::{ ';:::::: :' 。 / .:!.:.i:|::ト、 \.ヘ. ';:::: ./ .:トLハ忙7| :l. Yヘ ';:: {j.:l:忙! くノ .:.| ∧ ⊥ '; f^Y 礼_ ゥ イ .:.:.| ::∧ | 二.二.rへ. 二.|厂〕 .:.|ーイ + o . . └ヘ \/ /卜トゝ | . . : : \_/ | .| : | :
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。