ふらっとC#,C♯,C#(初心者用) Part50
げと
前スレ
>>979 すまん、編集した「行番号」の色を変えるのは無理だ
arraylistのグローバル化の仕方を教えてください
グローバル化とか俺用語使われると困ります
グローバル変数みたいに使いたいとかじゃなくて? public class Hoge { public static readonly ArrayList Array = new ArrayList(); } public class Huga { public int HogeCount { get { return Hoge.Array.Count; } } }
8 :
デフォルトの名無しさん :2009/12/10(木) 10:57:52
>>6 すみません。
1つのarraylistを2つのFormをまたいで共有したいのですがやりかたがわかりません
・片方にパブリックプロパティとして持たせて、もう片方から参照する ・親Formがいるなら親のプロパティにしてみる ・Formのコンストラクタ変更してArrayListを作成時に引数として渡す どれか
10 :
デフォルトの名無しさん :2009/12/10(木) 11:03:57
>>9 ありがとうございます。
これから試します。
わかんないなら
>>87 でおk
わかんないまま難しいやり方しても余計こんがらがるだけ
正しいやり方はそのうちわかる
ロングパス禁止
>>87 すっげー。 感動した。
ロングパスって面白くないよね
ショートパスもな
18 :
デフォルトの名無しさん :2009/12/10(木) 13:46:39
音楽プレイヤーを制作していて、ストリーミング再生機能を付けたいです。 再生したいファイルはwmaやmp3などさまざです。 アドバイスや参考サイトがありましたら教えて下さい。
独習がいちばん 終了
>>7-9 ・片方にパブリックプロパティとして持たせて、もう片方から参照する
これで一応回避しました。有り難うございます。
C言語のグローバル変数の様に配列を使用したかったのですが難易度が高そうです。
>>18 漠然としすぎ
WMPコントロール使ってれば
クライアントアプリってSessionのようなものはないんだっけ?
18番さんがどこまで理解してるか分からないので余計なお世話かも知れませんが、WMPコンポーネントは COMコンポーネントでツールボックスアイテムの選択から選べます。(まあ、それくらい知ってるよね)
>>20 class Global{
public static ArrayList A = new ArrayList();
}
五郎丸
WPFならCOM直接使わずにWMPコンポーネント使えるよ
>>25 public static ArrayList A = new ArrayList();
親フォームに上記述でもダメでした。
何をしたいかといいますと
・親フォームのボタン押下でリストデータ追加
・子フォームで作成しているグラフの軸データに@を反映
です。
子フォームで上記リストAを使うと「コンテキストは存在しません」エラーがでます。
>>28 フォームのコードに書くんじゃなくて
新しいクラスを作るんだよ
もしForm1に public static ArrayList A = new ArrayList(); てしたら 別のフォームからは Form1.A で呼び出す
待て。なんでstaticメンバなんだよww
グローバル変数みたいに扱いたいんだろ
それは別のグローバル用のクラスに切るべきではないのか・・・・
>>29-33 みなさんありがとうございます。
とりあえずForm1.Aでメドがつきそうです。
親側 Form2 obj; // その他プロパティ追加 public Form1() { InitializeComponent(); obj = new Form2(this); obj.Show(); } 子側 Form1 obj; public Form2(Form1 obj) { InitializeComponent(); this.obj = obj; } obj.何とかで親プロパティにアクセス可 やりたいのってこいうう事?
つけるなw
>>35-36 とりあえずこんな形にしてみました。よい方法があれば教えてください
親側
public partial class MainForm : Form{
public static ArrayList alNumbers = new ArrayList();
public string[] arNumbers;
public MainForm(){
InitializeComponent();
}
void Button1Click(object sender, EventArgs e){
alNumbers.Add(100);
alNumbers.Add(150);
alNumbers.Add(120);
alNumbers.Add(135);
}
}
子側
public partial class Form1 : Form{
public Form1(){
//グラフX軸用データ
X.Data = MainForm.alNumbers;
}
}
public int A{get;set;}; ってやるのと public int A; ってやるの何がどう違うんだろうな。 いみなくね?
悪い事は言わんからプロパティにしとけ
美しさなら
>>35 番のやり方
これだと親子相互利用が可能
>>38 プロパティに対するgetやsetのタイミングでブレークポイントを仕込めるところが大違い。
あるいは入出力時に簡単な処理(例えば変換作業とか)もできる。
欠点としては初期値を定義できないことで、コンストラクタに初期値の代入をしてあげないといけなくなる。
プロパティとメンバが別になってると、さらに自由度は増える。
>>38 としては
後から必要に応じて
int A{
get{処理}
set{処理}
}
と修正するとしてどう違うんだって言いたいんじゃないか
本人が良いって言ってんだからほっとけよ
継承したもの同士ってキャストできないよね? Class1があって SubClass2、SubClass3は両方Class1を継承している instanceOfSubClass2=new SubClass3(); とか不可能だよな?どうやるんだ
Class1 c1_2 = new Class2(); Class1 c1_3 = new Class3(); とはできるよ
>>44 どうやると言われても困るが
ButtonもTextBoxもControl派生だが
Button button = textBox1;
とか言われてもイミフだろ
VisualStudio2008で課題制作を行っているのですが 現在使っているパソコンの電力(ワット値)を取得する術はありますか? WMIを使って取得できるかと思い調べてみたんですが、どうしてもわかりません。 わかる方ご教授お願いします。
C言語だと 10; みたいな文もコンパイルエラーにならなかったがC#だとエラーになるのな。
49 :
37 :2009/12/10(木) 17:37:00
get setから勉強し直します。
WPFのWriteableBitmap内で矩形領域をコピー(移動)するのはどうするのが効率いいですかね?
コピーして移動するのがいちばん単純でいいよ
>>47 そもそも電力センサー自体がシステムに搭載されてるか疑問
ノートPCとかならありそうだけど、それってファームウェアレベルじゃね?
ワットチェッカー
54 :
47 :2009/12/10(木) 17:56:37
>>52 調べている中で、モバイルメーターというソフトウェアを見つけたのですが、
それでは実際にワット値を取得していました。(ノート用ソフトウェアらしいです)
52さんの言う通り、ノートしか現実的に無理なんでしょうか。
>>53 私もそれは発見しましたが、プログラム的に値を取得したいので、厳しいです・・・。
ならそのワットメーター?とやらの値を覗けばいいだろう。
57 :
47 :2009/12/10(木) 18:21:19
>>55 すいません。
VisualStudio用のスレがありました・・・。
そちらで聞いてみます。
>>50 CopyPixels→WritePixels
前スレ
>>1000 SlickEditGadgets使って見ました
これはいいですねー
Expressでは使えないのは残念ですが
目が悪い私にもとても使いやすいです
いいものを紹介していただき大変ありがとうございました
前スレ>977 今更だけどやってみた。 static double Integral(double min, double max, Func<double, double> f) { double y = 0.0; double a = f(min); for (double x = min; x < max; ) { x += delta; double b = f(x); y += (a + b) * 0.5 * delta; a = b; } deltaの値はお好みで。 -1から3までx^3+3x^2+4x-2をやりたいならIntegral(-1, 3, x => x * x * x + 3 * x * x + 4 * x - 2)という具合。 これは台形公式だけど、シンプソンでもなんでもお好きに。
テキストボックスに入力した文字列を命令に変えることできる? たとえばフォームにボタンとテキストボックスがひとつだけあって テキストボックスにthis.Text="Hello World"; って書いたらフォームのテキストがhello worldになって Button.Text="hogehoge";ってやったらボタンがhogehogeになる みたいな感じ Button_Click += method; method(object o,EventArgs e){ //ここにテキストの内容を命令にするコードを書く } こんな感じにすればいいと思うだけどわからん。。。
62 :
デフォルトの名無しさん :2009/12/10(木) 20:11:37
CSVファイルの特定の位置のデータを外部から修正する方法を教えて下さい。 Replace(2,3,"opq");" //2行目3列目のデータを"opq"に変更する といった感じで修正したいです。
そのCSVが固定長ならどうにかできないでもないが そうでないなら全部読み込んで修正して全部書きだし テキストファイルってそういうモノ
64 :
62 :2009/12/10(木) 20:16:08
現在は、1行ずつ読んで行って、改行コードの数で行数取得と、区切りの","の数で列数を取得してるんですが、 最悪の場合、全行を読むことになるので、もっといい方法を知りたいです。
>>61 できるかどうかだけなら、できる。
拾うべきイベントはボタンじゃなくてTextBoxの。
字句解析は必要。汎用的にするならリフレクションも必要。
字句解析しないでコンパイラに直接わたすとか出来ないかなぁ。
CodeDOM使えばコンパイルはできるけど thisって何のthis? ってなる
CodeDOMでそういうことしたらメモリリークするから無理 IronPythonでも組み込めば
スクリプト言語じゃないんだからevalは無理
DRM用動的C#とか出来たらおもしろそう
.NET5あたりでDLR上で動かせるようになるかもね
DRMってなんだよDLRだったorz エロ動画の認証でもするつもりだったのか俺は
常に実行しながら作れると絵的には楽しそうだな
MONOのC#コンパイラをDLR向けに改造するだけならそんなに難しくないんじゃないかなあ ちょっとやってみようかな
>>60 モンテカルロ法の方が万能だと思うんだが。
>>40 美しさとかいいだしたら、まともに設計しろって話になるぞ
Formにデータや処理を入れている時点で手抜きか無知かだし
>>41 自動実装使うと、プロパティ初期化子とか欲しくなるよな
>>48 C#では多少効率に関わっても、極力ヒューマンエラーが起こる確率を下げる方針だから、
そういう有っても無くてもいいような部分は、じゃあ無くてもいいよねって感じでバッサリと
有っても無くてもいいというより,10;はコンパイラの理屈からすると通るのが自然だぜ わざわざチェック入れて通らなくしてるんだ
C# lintってあるの?
FxCOPだっけ
>>78 いや、構文木の作り方によっちゃ
「定数のみ」を「文」に含めないってやったら通らなくなるぞ
実行したフォルダと同じ階層にあるa.exeをProcess.Startで実行する場合、 Process.StartInfo.FileName="a.exe"; Process.StartInfo.FileName= "Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)+@"\a.exe"); どちらがいいんでしょう?
後者。 前者はカレントディレクトリが変わってると使えない。
ついでに、パスの結合はPath.Combineな
カレントディレクトリが変わることってあるんですか?
>>81 定数のみを文に含めないってやるのは不自然
>>85 何のためにわざわざカレント(現在の)っ呼んでると思うんだよ
>>85 あるよ。ショートカットで作業ディレクトリを変えたりとか。
Visual Stdioのデバッグ実行時に、 プロジェクトのフォームから自由に開始時のカレントディレクトリを変更できるよ。
C#って配列内の検索&カウント機能ないの? a[1] = AAA a[2] = AAA a[3] = BBB でaのAAAを指定したら2を出力する的な
ファイルダイアログでファイル選択したりとか>カレントディレクトリ
>>90 .NETの機能としてなら
2.0ならArray.FindAll()で条件に合致するのの配列を取得してそれのLength
3.5なら拡張メソッドCount()で
>>78 >>81 >>86 とりあえず、先にこれだけは言わせてくれ
どっちでもいいけど、言語仕様とコンパイラの実装を混ぜないでくれよ
>>78 の言いたいことは分かるんだけど、有っても無くてもいいというのはユーザーサイドを意図したつもり
つまり、ユーザにとって有っても無くてもいいものは、(Cと比べて)制約を増やしてでも排除すると
>>91 一応、ファイルダイアログのは防止できるけどな
>>77 初心者スレで手抜も無知もないんじゃないか
おそらく
>>9 のアドバイスを受けてがんばって作ったんだろうに
95 :
9 :2009/12/10(木) 23:24:39
俺な〜んか不味いこと言ったの?
>>76 余程多次元じゃないかぎり収束が遅すぎるだろ
C#.NETに関する質問です。 アプリケーションの処理を途中で全て停止する方法は無いでしょうか?
>>97 Thread.Abort();
Application.Exit();
throw new Exception();
Environment.Exit(0);
ショートカットファイルに関連付けられているアプリケーションのパスを取得する方法はありますか?
>>99-100 ありがとうございます。
しかしアプリを落としたいわけではなく、
一回目のキー入力ではループ開始、
二回目の同一キー入力ではループが開始していたとしても、
ループを途中で停止する処理を欲しています。
一回目のキー入力でループ開始するコードは馬鹿でも出来るのですが、
もう一度、同一のキー入力を受けて、ループ自体を停止することが困難です。
アドバイスください。
ループの途中にフラグチェックを置いて 一回目のキーと同じキーが押されたら、フラグを立てるだけでいいんじゃね?
>>102 Windows Formのアプリ、それともコンソールアプリを想定してるの?
スレッドは使っていい?
Net.HttpWebRequestの処理が Debubモードだと戻ってこない Releaseモードだとちゃんと戻ってくる これってどういう現象? トレースデバッグできなくて困ってる
106 :
102 :2009/12/11(金) 00:36:27
Formアプリです。親切にありがとうございます。端折ったコードを載せておきます。 フラグ立てるとフラグ立てる回数が多いコードなのであまりやりたくはありません。 // "1"を押下 if (e.KeyCode == 49) { try { for (int i = 0; i < Int32.Parse(textBox9.Text); i++) { IDataObject iData = null; if (!textBox1.Text.Equals("")) { Clipboard.SetText(textBox1.Text); //クリップボードの文字列データを取得する iData = Clipboard.GetDataObject(); //クリップボードに文字列データがあるか確認 if (iData.GetDataPresent(DataFormats.Text)) { //文字列データがあるときはこれを取得する SendKeys.SendWait((string)iData.GetData(DataFormats.Text)); Sleep(Int32.Parse(textBox8.Text)); } } } } catch (Exception ex) { MessageBox.Show(ex.Message); return; } }
>>101 ショートカットに関連づけられているアプリケーション?
hoge.txt.lnkからnotepad.exeを手に入れるってこと?
IShellLinkで実体のパス(の拡張子)手に入れて、あとはレジストリあさるかAllocQueryStringとか使うか
108 :
77 :2009/12/11(金) 00:46:39
>>94-95 ああ、表現が悪かったな。アンカーしてないレスには特に含むところは無い
とりあえず、俺の主張は
「Formにデータや処理を入れる」という設計が良くないのに、
その段階で美しいもなにもないんじゃないか、
>>40 と、それだけ
俺いつもFormにバリバリ処理書いてるけどダメなの?
110 :
102 :2009/12/11(金) 00:49:21
>>103 すみません。
フラグの考え方だとたぶん6ステップ程度でいけますね。
ただフラグ数が多いので、面倒くさいことは面倒くさいですので、
何が方法があれば教えてください。
そんなにプライオリティは高くないので無理なら無理で構いません。
ありがとうございました。
112 :
102 :2009/12/11(金) 00:52:51
すみません。 先ほどのものです。質問しそびれました。 テキストフォームのバリデーションチェックなどできるのでしょうか? .NETにはあまり詳しくないのでチェックの仕方さえ知らないのですが、 一々、チェックルーチンを組まないといけないのでしょうか? それとも予め用意されたバリデーション機能などあるのでしょうか。 C#.NETです。 ご回答よろしくお願いいたします。
>>110 ループを無限ループにするんじゃなくて、タイマイベントで回せば別スレッドもいらないしフラグもいらない
勿論イベントの管理は必要になる
>>112 Validation クラスが使えるか調べてみては?
オレは使ったこと無いからよくわからん。
やべぇ デリゲートとラムダ式(orAnonyMeth)が便利すぎる この二つの機能もってない言語に移ったら気が狂いそうだ
他のプロセスにアタッチして、 そのプロセス内のメモリ検索を行うにはどうすればいいですか
>>115 そういうことをやるのはC#は向いてない。
C+++APIでやったほうがずっと簡単
何とかしてsendkeysで日本語通したいんですが無理ですか?
ピンヴォケで SetWindowText 使っとけ
ラムダ式を何度勉強しても理解できません。 決定的で超簡潔な説明をお願いします
あなたには過ぎた道具だ
λ,,,
チューリングマシンと等価な計算方法
無名デリゲートの書き方が増えただけだと思っておけば実用には十分じゃねーの
匿名メソッドとラムダ式って違うの?
書き方が違う 実質それだけ
ラムダ式がわからないって何がどうわからないんだ もと具体的にお願い たとえば戻り値なし引数stringのデリゲート void delegate1 (string str)があったとして delegate1 = method; void method(string s){ console.writeline(s); } こんな風にmethodを媒介にして書いてたのが delegate1= (string s) => console.writeline(s); になっただけだぞ
そもそもデリゲートって使ったこと無いけどなんの役に立つの?
イベント、Linq、あとデリゲートを引数に取るメソッドいろいろ 引数にとる場合はそれを使ってメソッドの動作をカスタマイズできる場合が多い
お前が使ったことないなら役に立たないんじゃない? button1.clickはデリゲートで作られてるから多少なりともフォーム作ったことがあるなら 間接的に利用はしてるだろうけど。 自分でデリゲートを作らないと根本的に不可能なことなんてない。 今まで多少厄介だったり長かったコードが短くかけるとか安全性の面でよくなるとかそんなもん。
すみません。初歩の質問ですが、 usingステートメントで「メインフォームが稼働中の時」のみ オブジェクトを使用したいのですが、以下の方法で括ると コンストラクタでしか使えません。 //static class Program using (Form frmChild = new Form()) // 子フォーム { Application.Run(new Form1(frmChild)); // Form1 : メインフォーム } Form1内でfrmChildを使用する方法はありますか?
>>128 の例としてはArray.Sort
int orderByBoolMember( TestClass x, TestClass y){ return x.BoolPropaty.CompareTo(y.BoolPropaty); }
int orderByInt32Member( TestClass x, TestClass y){ return x.Int32Propaty - y.Int32Propaty; }
int orderByStringMember( TestClass x, TestClass y){ return x.StringPropaty.CompareTo(y.StringPropaty); }
TestClass[] array = new TestClass[]{ new /* 省略 */ };
Compersion del;
del = orderByBoolMember;
//del = orderByInt32Member;
//del = orderByStringMember;
Array.Sort(array,del);
>>130 メインフォームのDisposeをオーバーライドして子フォームのClose()書いておけ
デリゲートが無い場合はコールバックを実装するのに一々クラスを書かなきゃいけなくなるからなぁ。 勿論その方が実装のしかたとして正しい場合も多々あるけど。 継承してオーバーライドするなり、引数にわたすなり。
>131-132 なるほど。継承ですか。 今まで諦めてた部分の破棄処理ができそうです。 ガベージが処理してくれる(?)と思うのですが、 一通りusingは使用した方がいいですよね。 神経質な自分には何となく合わない仕様かな(; 何はともあれ、ありがとうございます。
30分くらい亀レスでした。orz すみません。
いやいや
>>130 はusingとか関係ない。
Application.RunはForm1が閉じられるまで処理を返さないから
Form1のコンストラクタの外でfrmChildを使っても問題ない。
ただfrmChildはDisposeしてるのにForm1は放置するのは変なのでこうすればいい。
using (Form frmChild = new Form())
using (Form1 form1 = new Form1(frmChild) {
Application.Run(form1);
}
それとForm1の中でfrmChildをDisposeするのはやめたほうがいい。
普通、Disposeするのはそのインスタンスを作った側の責任だ。
C#.netの質問です。 SendInput で 日本語(漢字、カタカナ、ひらがな)を送りつける方法が今ひとつなんですが教えていただけ無いでしょうか?
どう今ひとつなんだ?
SendKeysで送ったら
javaにC#のList並の機能の付いたコレクションってある?
javaスレで聞け
141 :
133 :2009/12/11(金) 10:56:53
>135 どうも。要領が悪くてすみません。 普通にForm frmChild = new Form(); でForm1を継承したクラスを作成してもいいという事ですよね。 Application.Run(new Form1(frmChild)); はインスタンスを生成(格納)してないので問題ないと思ったのですが、 放置とはそういうDisposeしていないという意味ですか?
>>137 かなり今ひとつです,一から教えていただかないといけないほどに。
開発環境はMonoDevelopを使ってます。
鮮度キーでの日本語送信はなぜかできませんでして諦めました。
143 :
142 :2009/12/11(金) 11:07:18
いい漏れました。 OSはubuntuです。
144 :
133 :2009/12/11(金) 11:08:06
後述の三行は少し気になったもので…小出しになったようですが、 文法的な問題でしたら申し訳ありません。 感謝します。失礼しました。
>>142 日本語でおk
で、やりたいことと、やってみた結果は?
「今ひとつ」とか「一から」とかじゃ、「ぐぐってろ」くらいのレスしか入れられないんだが。
146 :
1 :2009/12/11(金) 11:20:04
>>141 一般にはDisposeが必要な型をnewして放置するのはそれ自体よくない。
ちゃんと変数に入れてDisposeするべき。
ただしApplication.Runに限って言えば引数に渡したフォームのDisposeは不要。
フォームが閉じたら勝手にDisposeしてくれるから。
それについては忘れてたので訂正。
つまり
>>133 で別に問題ないってこと
すみません あとアンカーも訂正 ×133 ○130
148 :
1 :2009/12/11(金) 11:29:06
私がスレッド立てました えらいでしょ?ねええらいでしょ? って意味で1ってわざわざ名前欄にいれてるんでしょうか? ここで1ってわざわざ主張する意味がわかりません。
149 :
141 :2009/12/11(金) 11:29:23
>146 どうも。わざわざ手間を(; すっきりしました。以上です。
>>141 親フォーム内で子フォームを作成したんでは仕様に合わないの?
Formはちょと特別ってことでいいと思うな。 ShowDialogする場合は別として、 普通にShowする場合はClose==Disposeなので、 FromClosed/Closingで処理をキャンセルしてない限り、 [ X ]ボタンで閉じた状態でDispose済みなんだな。 また、仮に子フォームをShow(Parent)で表示しているなら、 親フォームを閉じれば子フォームも閉じるのでコードでDisposeはいらない。 さらにメインフォームが閉じてApplicationが終わるとき他のフォームも閉じるので やっぱり後片付けはいらない。
まぁそれでも明示的にクリンアップしたくなるて人もいるんだろう どうせ終了時だから大概の場合重かろうがどうでもいいし
153 :
141 :2009/12/11(金) 11:40:21
>150 今回の件で可能だと分かりました。(追記ですが)
154 :
142 :2009/12/11(金) 11:57:18
>>145 落ち着いてググりました。エラーコードの無いテキストエディタで真剣に考えて編集してみたところ、
漢字の送信ができました。ただ未変換状態で送信されてしまうようで、確定状態の変換に直したいと思っています。
コードは下記です。ただ単純にエンターキーを送信するだけでは上手く確定できません。
関数呼び出し部分
INPUT[] inputs = ToInput((string)iData.GetData(DataFormats.Text));
SendInput(inputs.Length, inputs, Marshal.SizeOf(typeof(INPUT)));
関数部分
private static INPUT[] ToInput(string p)
{
int len = p.Length;
INPUT[] inputs = new INPUT[len * 2];
for (int i = 0; i < len; i++)
{
int j = i * 2;
inputs[j].type = INPUT_KEYBOARD;
inputs[j].ki.wVk = 0;
inputs[j].ki.dwFlags = KEYEVENTF_UNICODE;
inputs[j].ki.dwExtraInfo = 0;
inputs[j].ki.wScan = p[i];
inputs[j].ki.time = 0;
int k = j + 1;
inputs[k] = inputs[j];
inputs[k].ki.dwFlags |= KEYEVENTF_KEYUP;
}
return inputs;
}
155 :
142 :2009/12/11(金) 12:04:09
すみません。 疲れてて日本語が可笑しいですね。簡潔に言えば、SendInputを使って、 漢字変換はできたものの、送信後、候補選択状態になっています。 この候補選択状態(下に点線が付く)で送信されたところを、 確定状態(下に点線が付かない)で送信されたようにしたいと思っております。 単純にENTERキーを送信するとなぜか不都合がおきますので、 それ以外の方法を求めています。よろしくお願いします。
お前ら、書き込む前に推敲しろよ
>>155 漢字変換? ひらがなの文字列を入れて漢字に変換して送るって事?
ところで、SendKeys.Send() 又は SendKeys.SendWait() がうまく行かなかったから、
SendInput() を使っているって話?
もし、SendKeys.Send() しか試してないなら、まずは SendKeys.SendWait() を試した方がいい。
そしてSendKeys.SendWait() なんかがうまく行かないのは、フォーカス設定が漏れていたりはしない?
環境依存だろ Mono+ubuntuとかそんな特殊な環境わかるわけない
159 :
142 :2009/12/11(金) 12:22:38
>>157 ひらがなを漢字に変換するわけではありません。
漢字なら漢字の、平仮名なら平仮名の文字列を送信することはできましたが、
その後の処理の話で相談しています。
漢字を漢字のまま送信することは可能なのですが、
下に点線が付いた状態で漢字が送信されてしまいます。
これを何とかしたいのですが。
>>158 SendInputだと日本語変換に引っかかるだろうから、必ずしも環境依存と言うわけでもなさそう。
>>159 で、SendKeysクラスは使ったの? 使ってないの?
161 :
142 :2009/12/11(金) 12:29:53
>>160 SendInputを使いました。SendKeysは使ってません。
163 :
142 :2009/12/11(金) 12:33:41
>>162 マジかw
せっかく作ったのに。
ありがとうございました。
クリップボードに入れてCtrl+Vの方が無難じゃね
C-vよりC-Insertの方が安全だった気がする
166 :
142 :2009/12/11(金) 13:24:30
返信くださった皆さま有難うございます。 SendInputをSendKeysに変えるのは嫌なので、 自作関数作ったところ問題なく動きました。
後学の為に どんなふうにしたか概要だけでも教えてくれると嬉しい
せめて ・環境、C#バージョン .NETバージョン ・やりたいこと・やってみたソース くらいまとめて載せろよ^^;
スレ違いかもしれないが、ちょっと思ったんだけど。 バグのないプログラムはないとかそういうツッコミはなしで めちゃくちゃ汚いソースだけどバグが無いプログラムと めちゃくちゃキレイで芸術的なソースだけどバグが見つかったプログラム 客が求めるのは前者なんだよな。 皮肉なことに。
そりゃ使う側からすりゃコードがどうなってるかなんてどうでもいいし。 皮肉でもなんでもない。 コードにいくらgoto文がかいてようがint a,bとか意味のわからない変数名つかってようが どうでもいい話。
汚いコード=仕様変更に対応しづらいと考えれば 客の利益に反するけどな
フローチャート描いて作ったと思われる他の言語の糞コードを goto使いまくって移植したことありますごめんなさい 何やってるのかさっぱりわからないまま形式的に変換したら動きました
めちゃめちゃ綺麗で芸術的にするのは
バグをなくすためって側面もあるからなあ。
汚ないコードはバグが入りやすい(その時は少なくても
>>171 な時に入る可能性大)
ってことがあるからなんともいえない。
え、客が求めるのはバグが見つかったプログラムだろ? わざわざバグを埋め込んどかないとノルマ達成できないぐらいなんだぜ
バグ埋め込み法っていうデバッグの手法は冗談でもなんでもなく普通に存在するけどな。
芸術的なバグ
バグのないプログラムはさみしい
俺は普通に動けば客は何でもいいと思うよ ただし客がエンドユーザーの場合はね ソース受け渡し(開発依頼とか下請けとかの時)する相手な場合、恥ずかしいのでちゃんと書くさ
「マネージコードでシェル拡張を作ってはいけない」と常識のように 語られているのですが、.NET1.xさえインストールされていなければ 問題ないのではないでしょうか?
179ではないが、その話は確かMSのブログ内だったと思うなぁ 1プロセスにつき読み込めるCLRのバージョンは1つだけなので 例えばCLR1.xを先に読まれてしまうと後続で2.0以降用のアセンブリを読もうとしたとき失敗してしまう とかなんとかそんな理由
>>180 その常識は、複数バージョンのCLRを1プロセスに読み込めないという制限に由来する。
CLR 1.0と1.1と2.0それぞれでシェル拡張を作ったら、2つ目以降を読み込むことができない。
だから、シェル拡張ではマネージコードを避けるべきと言われるようになった。
だから、CLR 1.xが廃れてきた今、
>>179 の言うことは一理ある。
ところが、CLR 2とCLR 4は1プロセス内で共存が可能な上、
近頃のWindowsだとCLR 1.xは非対応になってきているので、
マネージでシェル拡張を作れるようになる時代も近いと思う。
質問させてください。Visual Studio 2008を使ってWindowsFormAppricationを作っています。 TimeSpanに対して除算を施すにはどのような方法をとれば良いのでしょうか? 具体的には3.0で割りたいと思っています。
>>183 TimeSpanのお好きなプロパティを3.0で割って下さい
>>183 TimeSpan.FromTicks(timeSpan.Ticks / 3)
186 :
デフォルトの名無しさん :2009/12/11(金) 23:31:52
187 :
183 :2009/12/12(土) 02:44:20
助かりました。ありがとうございます
一度Application.Exit();したあとに、再度フォームの生成を行うことは可能ですか? アプリケーションの再起動を行いたいのですが・・・
Application.Restart();
WindowsFormアプリケーションで、Program.csにてMutexを調べ、
既に存在していれフォームを起動しない・・・という処理を行っているのですが、
>>189 の方法だと、そのMutexにひっかかってしまい起動出来ませんでした。
何か良い方法は無いでしょうか・・・?
リスタート呼ぶ前に削除しとけよ
意図的なMutexの削除方法が分かりません Mutex.OpenExisting("mu", System.Security.AccessControl.MutexRights.Delete); こんなのじゃ駄目なんですかね;
Mutex.Closeだよ MSDNのWaitHandleクラスのになってるせいでイマイチ思い浮かばないかもしれんが
マルチスレッドにしたら、実際の処理をしている子スレッドから フォームのコントロールに書き込みできなくなってしまったのですが 途中経過などを通知するにはどうしたらいいでしょうか? よろしくお願い致します。
Control.BeginInvoke
複数行テキストボックスで、最上段にカレットを移動したいのですがどうすればできますか?
textBox1.SelectionStart = 0; textBox1.SelectionLength = 0;
>>194 まあ
>>195 とかのキーワードで調べたら情報はいっぱいでてくるよ。
それを見ても分からないならマルチスレッドは止めとけ。
もしくはBackgroundWorkerなら余り深く考えなくても使える。 ただまともにスレッド使うならやっぱりちゃんと理解してからやらんとまずい。
double[][,] im=new double[4][5,5]; で「無効次元指定子です。','または']'を指定して下さい」とエラーが出ます double[][,] im=new double[4][,]; for (int i=0; i<4; i++) im[i]=new double[5,5]; これを1文でどう書けますか?
フォームのコントロールへの書き込みはメインスレッドが やればいい
listViewでアイテムを行ごとドラッグアンドドロップで入れ替えるには、どうすれば良いでしょうか。
>>200 ありえんほどスマートじゃないな。ループ使ったほうがまし。
var im=new double[][,] { new double[5,5], new double[5,5], new double[5,5], new double[5,5] };
var im2=new double[][,] {
new [,] { { 0.0, 1.0, 2.0, 3.0, 4.0 }, { 0.0, 1.0, 2.0, 3.0, 4.0 }, { 0.0, 1.0, 2.0, 3.0, 4.0 },
{ 0.0, 1.0, 2.0, 3.0, 4.0 }, { 0.0, 1.0, 2.0, 3.0, 4.0 } },
途中省略
new [,] { { 0.0, 1.0, 2.0, 3.0, 4.0 }, { 0.0, 1.0, 2.0, 3.0, 4.0 }, { 0.0, 1.0, 2.0, 3.0, 4.0 },
{ 0.0, 1.0, 2.0, 3.0, 4.0 }, { 0.0, 1.0, 2.0, 3.0, 4.0 } }
};
>>200 var im = Enumerable.Range(0, 4).Select(x => new double[5, 5]).ToArray();
206 :
200 :2009/12/12(土) 18:29:45
Form(スレッドA)から別なスレッド(スレッドB)を開始した所 スレッドBからスレッドAが持つTextBox等を編集しようとするとエラーをはいてしまうのですがどうしたらいいんでしょうか? って書いてたらふと思ったんですがもしかして、クラス分けして自分自身渡せばいいんでしょうか? ちょっと試してきます・・・。
>>207 なんていうか、フットワークが軽いこと自体はいいことでもあるんだが、
早漏気味に何か試すまえに、もうちょっと落ち着いて本とかMSDNとか読んだ方がいいんじゃないの?
マルチスレッド扱ってる文章でワーカスレッドからUIスレッドのコントロールに
触る方法に触れてないものなんてないと思うんだけど
ほんの少し遡れば答えがあるのになぜに見ない。
>>195
>>208 便乗質問だけど、マルチスレッド関係の問題を
体系的に回避する方法をまとめてあるのってない?
Invokeとdelegateで対応するのも
Formクラスがぐちゃぐちゃになって美しくなくなってきた
>>210 もともとSystem.Windows.Formsはシングルスレッドで作るようにできてるんだ。
マルチスレッド用にはできてないから、自力で何とかするしかない。
>>210 Formのコードがグチャグチャになるのは、スレッド使うかとうかではなく
単に設計の問題じゃないの?
「入力」と「表示」以外のコードをFormに書いてるんじゃない?
体系的っていうか、UIを更新する場合、普通はワーカスレッドを内部に持ってる
オブジェクトからのイベント(XXXChangedとかXXXReceivedみたいなの)を受信して
そのタイミングでFormが自分が持ってるコントロールを更新するって考え方になると思うから、
UIスレッドに同期する処理をFormに持たせたくないのなら、オブジェクト自身がISynchronizeInvokeを
フィールドに持って、UIスレッドに同期してXXXChangedとかXXXReceivedみたいなイベントを
発火するようにすればいいと思う。
>>213 マルチスレッドは最近かじったばっかりだから
他人がどうやってうまく処理を切り分けてるのか
そろそろ体系的に知りたいと思ってたんだが
あんまり一般的な手筋みたいなものがあるわけじゃないのか…
基本的に長い演算でGUIが固まるのがいやなのと、
処理の途中で中断するというのも
タイマーとマルチスレッドでむりやり実装してるけど
無駄が多い気がするし、参考になる本とかあったら読もうかと思ってたんだけど
お前頭大丈夫か?
初心者バーカつって楽しんでるやつがいるのはいつものことだな
数名な
1人のような気もするが
俺だけなの?
でも人の話聞いてないよね
>>213 で「一般的な手筋」書いてるだろ
string s="1+5*3"; こんな風に演算子が入ってる文字列を数値に変換するほうほうを教えてくれ。 int.Parseだと無理だった
自前でパーサ作る
Object型の引数をとるメソッドに、"typeof(型名)"を与える例が見当たるんですが、 typeof(任意の型名)ってSystem.Type型なのにちゃんと任意の型が送られるんでしょうか。 任意の型のインスタンスを送るのでは駄目なんですかねやっぱり
Eval
何を言ってるかマジで分からない
>>224 System.Type型だってObject型継承してるんだから何もおかしいことはない。
つかね >例が見当たるんですが それを挙げてください このスレの人間は貴方が見たというコードの目的とするところなんか知るわけないんだから
>>229 ありがとうございます。
一応読んだのですが、じゃあなんでType型を要求しないんだろうとか
いろいろ疑問がわいてきて混乱していました。
今の僕では完全な理解は難しいようなので、そう割り切ることにします
そりゃIsCheckedの既定値ならtrueかfalseだろうし Textの既定値なら空文字列かnullかだろう DefaultStyleKeyの既定値がType型インスタンスと言うだけのこと
WinFormsでよく出てくるDefaultValue属性と一緒だ WPFではメタプログラミング的なことやろうとしすぎて属性+リフレクションでは追いつかなくなっちゃったから 独自のプロパティシステムを構築してるんだよ
>>233 納得しました。
MSDNのDefaultStyleKeyの項目まで読んでなかった。反省
少数第何位以下を捨てる、みたいなことはどうやる? double d=1.2345678912345; だとして。最後の12345を捨ててd=1.23456789 みたいにするとか。
Math.Round
>>237 それって要するに桁数を決めて文字列出力したいだけだろ?
それならstring.Format()を調べるんだ。
確かにdouble使ってて実際の値を丸めたい場合ってあんまり考えられないな
C# だけに #でいいか?w
VC#2008でWPFアプリケーションを作り、プロジェクトの設定で対象のフレームワークを.NET Framework 3.5から3.0に変更しました。 そして、3.0には無いプロパティBinding.ValidatesOnExceptionsを使ったコードを書いたのですが、何のエラーも無くビルドできてしまいました。 3..0に無いものを使ったらビルド時に検出したいのですが、どうやったらいいのですか?
>>242 プロジェクトを.NET 3.0向けに設定して、それでビルドが通っているなら、
基本的にはそれで動くということなんだ。基本的には心配する必要はないよ。
その場合、生3.0 じゃ動かなくて、SP1 とか SP2 とかが必要になんのかね。
バージョン情報にちゃんと3.0SP1が挙げられてる
なんの話?
247 :
242 :2009/12/13(日) 01:44:22
アセンブリのバージョンで混乱してきました。 .NET3.0のクラスSystem.Windows.Controls.TextBoxが、.NET3.5でいくつかのプロパティが追加され拡張されたと仮定します。 3.0向けでビルドされたDLLを3.5でビルドされたアプリから参照し、DLL側からTextBoxオブジェクトを取得したとします。 この場合、DLLから取得したのは3.0のTextBoxになってしまうのでしょうか?
コンストラクタにprotectedってどういう意味があるの?
必要となる環境の話だろ。 SP1があたってないと動かないだろうな。 サービスパックで追加された機能を使っていないか チェックする方法は俺も知りたい。
3.5で拡張されるわけじゃなくて、3.5と同時に提供される3.0SP1で拡張、ってことになるんだろね。 当然、取得できるのは3.0SP1のテキストボックス。
無印環境でビルドする、ってのが一番わかりやすい方法じゃね?
3.5で機能が追加されててもアセンブリバージョンは変えられていない。 MS自身がアセンブリのサイドバイサイドはぶっ壊してるよ。 まあ現実バージョン変えるわけにはいかないだろうけどね。
>>248 派生クラス(のコンストラクタ)だけそのコンストラクタを呼べる
interfaceって何の役に立つんですか? 継承するメリットがよく分からない・・・
メリットがないなら無理に使うことはない
基礎から勉強してるのでそういうわけにはいかないんですけど
あっそ
クラス使わないと出来ないようなプログラムってありますか? 今まで、自分でメソッドは作ったことがあり、イメージも分かるのですが、 クラスを自分で作成したことが無いだけに、ちょっと実感が分かなかったりします
今までいったい何のソフト作ってきたんだよ
なんか荒らしがいるな 解答する気ないなら帰れ
>>258 新規のクラスを作った段階ですでにMainメソッドはProgramクラスにあるでしょ
だからクラス使わないと1行も処理を実行できないよw
Programクラス以外に自分で作らないと出来ないことがあるかというと特にない
必要がないと思うなら作らないで処理書いてもいいよ
メソッドだって自分で作らなくたって大体の処理出来るんだし
必要性がなければ全部Mainメソッドに書いちゃいなよ
誤:新規のクラスを作った段階で〜 正:新規のプロジェクトを作った段階で〜
>>261 あ、使わないと出来ないような〜って聞いてるのに、
確かにプロジェクトに一つは使われてますね、質問が悪かったです^^;
今まで使ってきた、Application. や、MessageBox.
なども一つのクラスなんですね、それらのクラスを覗いてみて、
ちょっとどんな風なものなのか学んでこようと思います
>>258 C#だと言語仕様がクラスを要求するので必須だが、
C++で言うならクラスを使わなければ使わないでも大丈夫
空のDLLならクラスを使わなくても
そんなトンチ回答を要求してるわけじゃない気がするがな
そういうオブジェクト指向プログラミングの概念的な質問だったら ここで済まさないでググる先生に聞いて真面目に解説してるとこ探した方が 絶対良いと思う。いや真面目な話。
自分ではクラス作らなくても(Programとかは別として)コンソールアプリくらいなら作れるわな。 でもほぼ確実にフレームワークで用意されてるクラスは利用することになる。 で、そのフレームワークのクラスがクラスじゃなくて全部個別のメソッドやらだったりしたら プログラムがどんなことになるか考えてみ。
まあこれももちろんほんのほんの入り口の話でしかないけどね。
LinqかArrayクラスにsliceみたいの欲しいので誰か書いてよ
VBから来た人はクラスの理解が浅いんだよなぁ
だってVBはモジュールを扱えるし
>>270 .Skip(offset).Take(length) じゃダメ?
Linqってなんですかぁ?よくわかりません><
知らないなら知らないでも困らない。 知ってたら便利。そんなものだよ
必須ってわけじゃないしな
LINQ については、こういうところで聞くより、ひととおり書いてある Web サイトでも見た方が早いよ。
アプリ内で使う設定などを保存するとして、 xmlなどに保存した設定を保持するのはどうすればいいでしょうか? 普通に変数で読み込み時に持たせるべきですか?
必要なときに読み込めばいいんじゃないの?
>>278 質問っていうのはさあ、自分でいろいろ調べた上で分からない点を人に聞くものなわけで、
何もせずに最初から人に丸投げ質問って人間としてどうなの?
設定の保存について解説してるところなんてweb上にいくらでもあるわけで、
そういうところの一つも読んでから聞いたら?
射精しそうです><
はい。もちろん。
ほぼいきかけましたか
はい。もちろん。
回答する気ないやつは質問者にレスすんな 初心者バーカって悦に入ってるやつら消えろや
ここ数スレでそういう奴が居座っているよな 明らかに学生のノリのKY スキル無いのが滲み出てるので脱初心者レベルなんだろうなぁ
>>280 >人間としてどうなの?
お前いつも会社でそんなふうにいじめられてるんだな・・・
くじけるな。頑張れ。いつだって俺はお前の味方だよ。
>>286 じゃあまずお前がそうしろよ。
自分棚上げかよ本当に馬鹿だな。
初心者の質問スレだからって何でもありな訳がないだろう。
初心者なのは咎めないが、ただの怠惰な奴まで許容できねえよ。
>>1 >「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
>初心者なのは咎めないが、ただの怠惰な奴まで許容できねえよ。
許容?これ仕事じゃないんだけど。
>>290 意味不明。
俺が許す許さないの話をしてるのにたいして「仕事じゃないんだけど」ってどいういう意味だよ。
というか、だからどんな怠惰な奴だろうと黙って回答すべきだ、 って偉そうに人に説教垂れるつもりなら、まず自分がそれを実践してからにしろって。 本当馬鹿だな。
293 :
278 :2009/12/13(日) 14:05:49
自己解決しました。
だからそういう説教臭いレスはいらねえんだって言ってるだろ そもそも宿題聞いてくるようなアホにレスしてるのはお前みたいな奴だけだ
>>291 気にいらないなら黙ってろってこと。
このスレの趣旨に反するんだけど?
ここでレスするのはお前の仕事じゃないんだけど?
お前が許容しようがしまいが関係無いだろ。 許容できないならこんなスレ見るなよ。
>>289 俺にそんな義務はありませんw
質問者に回答しないで説教しかしないジジイはさっさと死ねや
>>294 なんというか、一人っ子的自己中心性というか、アスペルガーな奴だねお前さんは。
俺は俺が言いたい事を言ってるまでで、別にどっかの馬の骨以下の
糞みたいな存在に過ぎないお前さんの必要を満たすためにレスしてるわけじゃない。
>>278 みたいなググればすぐ分かるような質問はみんなしばらく放置するけど
ウズウズして黙ってられないんだろうなたぶんw
>>295 >気にいらないなら黙ってろってこと。
また自分を棚上げか。
だから、まず自分が自分のいってることを実践しろよ。
本当に馬鹿だな。
ぶーめらん?ぶーめらん! なんでもいいけど2ch技術系のスレにはこの手のはかならず居るから 各自適度にスルースキルを身に付けるしかないんだけどね。
まずは設定っていうそのまんまの機能で事足りるか見てみ。
>>300 >ウズウズして黙ってられないんだろうなたぶんw
お前、自分のこと見えてる?
このスレでこんな流れは良くある事なので 目くじら立てるな新参
あいかわらず気持ちよさそうw ニヤニヤがとまらない
>>306 ああ、こうやって馬鹿を叩くことほどの快感はそうそうないな正直w
このスレの60%はオナニストと自治のじゃれあいで構成されています。
次のオナニーどうぞ↓
しかしなんでプログラマにはこんな感じのが多いんだろ
どうも先週くらいからクズ回答者にわざわざ突っかかっていく奴いるよなぁ。 言っただろ?このスレはこれこと繰り返してpart50まで来たんだと。 何十番煎じ(言っても無駄だし消えても沸いてくる)なんだから指摘厨は黙ってろ。
>>311 お前みたいなのも含めてな。
何時まで馬鹿を指摘し続けなきゃならないんだ、俺は。
>>312 お前のキンタマから精液出るまでじゃねーのw
スレッドを使うメリットって何なんでしょうか。 順番に処理していくのじゃなんでだめなんですか? 100字ぐらいで説明出来ると助かります。
>>311 また自分が見えてない棚上げ馬鹿がw
自分だけは神のような特権的立場だとでも思ってるのかこういう奴は。
っていうか、悪いけどお前さんが「質問者に突っ込みたいだけの馬鹿」と、
「クズな質問者を糾してる奴」の区別が付くだけの知性がないだけだから。
実はここまで3人しかいない
317 :
278 :2009/12/13(日) 14:21:05
なんだか、私のレスで荒れさせてしまったようで申し訳ありません とりあえず、設定は全て別のクラスを使って読み書きする事で解決しました。 ありがとうございました。
>>318 謝ってるのにどうして水を差すの?馬鹿なの?死ぬの?
320 :
314 :2009/12/13(日) 14:24:23
出来れば3時ぐらいまでに回答が欲しいのですが・・・ よろしくおねがいします。
ほら指摘厨 はやく314に答えてやれ
>>324 回答できない無能力者なら正直に言ってくれて構わんよ(´・ω・`)
くだらない質問はいいが、くだらない議論はいらねえw
何で突然静かになるんだよ。
飽きたんだろ 普通飽きる
質問に答えられないからです^^
イッたからでしょう
>>328 さっさと消えれば?
ここはあなたにとっても有意義な場所じゃないよ^^?
334 :
314 :2009/12/13(日) 14:37:27
>>327 できればもうすこし詳しくお願いできませんか。
できますん
340 :
314 :2009/12/13(日) 14:41:39
そうそう聞いてない聞いてない
聞いてませんね。
343 :
314 :2009/12/13(日) 14:42:56
>>339 出来れば50字以上あると嬉しいのですが・・・
あと20分もない・・・
聞いてませんよ
聞いてませんので
>>343 いやあ字数を膨らますのはお宅の仕事だと思います
1人より2人で仕事した方がいいよね 2人より3人で仕事した方がいいよね 3人より4人で仕事した方がいいよね 4人よりn人で仕事した方がいいよね
348 :
314 :2009/12/13(日) 14:46:32
>>346 そんなこと言わずどうかお願いします・・・
349 :
314 :2009/12/13(日) 14:46:45
>>346 そこをなんとか。
せめて30字ぐらいにはなりませんでしょうか?
314が増えたw
351 :
314 :2009/12/13(日) 14:47:58
ワロタ
さっさと失せろクズ
357 :
314 :2009/12/13(日) 14:53:35
あと7分しかない・・・ よろしくおねがいします。
314#314
早くしろつってんだろ!
3分間待ってやる
酉変えました。 あと2分以内に30字お願いします。
363 :
314 :2009/12/13(日) 14:58:50
トリバレしたので変えました。 結局ググりました。 お前ら使えない。 以上。
364 :
314 :2009/12/13(日) 14:59:41
あと1分です!!! 早くしてください!!!
365 :
314 :2009/12/13(日) 15:00:00
自己解決しました。 ありがとうございました。
366 :
314 :2009/12/13(日) 15:00:50
実はネタでした。
>>365 ちょwwお前ww時間wwwwwwwww
ぴったり3時に解決出来てよかったじゃねーか。
面白くないよ
回答者を馬鹿にする厨房は荒らしになったか。 プログラミングの能力は中級クラスでも精神年齢は幼稚園児なんだな
中級?
初級もいいところだろ
いや俺が超上級で他が初級だから平均的には中級
さっきから面白いと思って書き込んでるんだと思うと悲しくなってくる。
泣け
配列をそのまま公開するな、そしてListをそのまま返さずに、CollectionやReadOnlyCollectionでラップして返せと MSのガイドに書いてあります
お前ら面白いな これからも頼むわ
>>376 書いてあります
・・・で?
途中で送信しちゃったのか?
>>376 前も言ったがそんなことは何処にも書いてありません
かいてあるよーだばーか
聞いてない聞いてない聞いてない
>>347 プログラマなら
n人よりn+1人で仕事した方がいいよね
ぐらい書かないと・・・
つまりこのスレの連中が全員でC#でアプリケーション作ればすごいものができる!
じゃあ俺IO担当ね
じゃあ俺煽るわ
じゃあ俺は元請けのピンハネ担当ね
じゃあ顧客役で俺は無茶な要求する
相談室でやれ
じゃあ俺途中で入院するバッチ担当!
じゃあ僕は残業で工数喰い潰す派遣担当
そして誰もいなくなった
>>380 おまえは例のブログの奴か?
書いてねぇよボケ
書いてあるというやつは URI を示すだけでいいのだ
おまいらw
例のブログってどんなの?
yっw
279からまともな質問ねえな
>>397 文句ばっかりいってないで変える努力したら?
人間としてどうなの?
>>395 List<T>を外部に公開するなとか書いてあるブログ
XML ドキュメントについて聞きたいのですが 名前空間に対するドキュメントってどうやって書けば良いのですか。 Javadoc でいうところの package.html みたいなものがあるのでしょうか。
結局何が正解なの? public List<Hoge> getResult(); みたいなメソッドは書いて良いの?だめなの?
>>402 教条主義的な議論はともかく、不特定多数が使うライブラリなら避けた方が賢明なのは
確かだとは思う。
privateやinternalなメソッドなら全然オッケーでしょう。
もちろん間違えて自分の足を撃っちゃう可能性が小さい限りにおいて
池面って.........?
>>402 継承するものだけ返値にList<Hoge>を使わないようにするだけ
かりに使ってもエラーが出るから現状大丈夫なら修正しなくても問題はない
それを大げさに意味もわからず誰かがのたまってるだけなのさ
>>404 The first reason is that List<T> is designed for speed and for use as an internal implementation detail, whereas Collection<T> is designed for extensibility.
The second reason why you shouldn’t expose List<T>, is because it exposes too many members, many of which are not relevant in most situations.
Javaでも ArrayList とか TreeSet とかは外から見える場所で使うな、
List とか Set とかの実装を隠したやつで使えって言われたな。
>>402 ダメ。
戻り値は IList とか Collection が正解
継承しないしスピード一番!→List<Hoge> 糞遅くてもいいけど継承するよ→Collection<Hoge> 要するにケースバイケースって事
じゃあList<T>に委譲するのはいいの
>>409 お前どこの誰が書いてるブログかよーく見てから書いた方がいいぞ
文字の結合にStringBuilderを使うかどうかと一緒の議論だなw 一括りにするから叩かれるんだよ
MicrosoftのVisual Studio開発チームだな それが信じられないなら、どこも信じられないんじゃないか
>>410 継承うんぬんってのは、
List<Hoge> を公開しているクラスの実装が変ったときに
List<Hoge> 以外の実装が使えなくなっちゃう、ってこと?
ところで Collection<Hoge> ってそんなに糞遅いの?
内部ではどうせ List<Hoge> を使って
外部に出すとき new Collection<Hoge>( listHoge ) みたいにラップするだけだと思ってたんだけど。
CA1002がどのパターンで出るかはやってみればわかる List.ForEachとforeachの計測は@ITもやってたけど結構違ったよな
言う程の手間じゃないんだし外部公開は Collection にしとけばいいと思うよ。 速度が本当に必要になってから天秤にかけりゃいいさ。
というか、集合型を外部公開すると起動するかは、以前このスレで議論したじゃないか。 何を蒸し返してるんだ。
外部公開するときどうするかは、
>>418 以前とかいわれてもその時見てなかった。
結論どうなったの?
じゃあ普段はCollection、必要に応じてListってことね。
いや逆だろw
>>423 必要になってからCollectionにするんじゃおそすぎる。
必要(継承の可否)かどうかは設計する次点で決まるだろ 必要になればそこも変えればいいだけ 変えわすれてもCA1002が出て教えてくれる
変えれば良いってそのプロパティだか戻り値だか受けてるとこ 全部なおしてまわるのか 設計する段階で全部きまりゃいいけどそんなの綺麗事だから。
CA1002の警告も必要に応じてOFFにしろってぐらいだから 基本はCollection<>使えなんじゃね?
必要な時はBaseClassのとあるメソッドを継承するかどうかの変更時 それは引数が変わるのと同じぐらい全体としては大きな事 変更が必要なのは当たり前だろ 何をいってるんだ?
なんか結局人それぞれなんじゃね?って気がする ここらへんはまだJavaの方がコンセンサス取れてたな。
public Collection<Hoge> getResult(); とかやってるの見ると 何がんばっちゃってるのこの人(プッ って思えてくる 素人に多いよね
>>429 そうは思えないけど。
っていうか、
>>430 みたいな人が自分で撃った銃弾に当たって死ぬタイプだ思う。
「自分に向けて銃を撃つ馬鹿なんていねえよ」とか何とか嘯きながら。
何が問題かわかってねえんじゃないのそもそも。
イキそうですって流れになるの?
Collection<Hoge> を生で使うぐらいなら MyCollection : Collection<Hoge> するけどな。
>>431 Javaは実質全てのメソッドがvirtualみたいなもんだから
ArrayList をそのまま公開する理由はなかったよ。
中身を回したりする可能性があるならList<Hoge>でいいんじゃね? それ以外はCollection<Hoge>で まぁBind以外はほとんど回して使うと思うがね
よくみるIEnumerableで外に公開するのはどうなの?
いいんじゃないの? IEnumerable な操作だけしかしない/させないってことを表明してるわけだし。 もちろん出来ることが限定されるから後々困ることもでるだろうし 本当にそれでいいのか考えてからやるべきではある。
>>430 例示のメソッドの戻り値なら配列でいい
>>437 逐次処理のために、LINQのソースやパイプラインに使う前提で作ることは良くある
IEnumerableって一回列挙したら終わりだったリ状態が変わっちゃったりする場合も多いから メソッドの戻り値や引数に使うのはいいけどプロパティの型をIEnumerableにするのはやめるべき
VS2008の履歴にプロジェクトが登録されないのはなんでだろー
>>440 IEnumerator と勘違いしてない?
IEnumerable ならいいと思うんだけど。
コレクションへのアクセスに何か処理を入れたくなる可能性があるならListは使わない。 外部でコレクションに何をしてもかまわない、関与しなくてよいと言い切れるならListでもいい。 それだけのことだろ。 Collectionなら継承できるから後で何らかの処理を加えたりすることもできるってだけ。
それってパブリックフィールドとプロパティの関係と全く同じだよ もちろん考え方自体は間違ってないけど,パブリックフィールド禁止というならListも禁止にしないとおかしい
Collectionも別に糞重いわけじゃない。 ただ、単なるListに比べりゃそれは遅い。 どんなコレクションでも単なる配列に比べりゃそれは遅い。 コレクションへのアクセスに最大限のパフォーマンスが必要なら選択肢は配列しかない。 まあListは配列と比べなきゃ十分速いが。
内部の実装が変わったとしても極力外部に影響がないような設計にする、だっけ
>>445 そもそも外部に公開するインターフェイスならIListにするだろ
素のList<>を公開する人は何も考えなしにやってることが多いのは確か。
foreachで回して使うのにList<>で公開しない奴も何も考えてないな。
じゃあ結局どうすればいいんだよ
Collectionで公開すればいいんだよ
ライブラリとして公開するわけじゃないならなんでもいいと思うよ
結局何なんだよ。 初めて2週間の素人にも分かるよう3行にまとめてくれ。
456 :
デフォルトの名無しさん :2009/12/13(日) 22:51:55
List<string> s = new List<string>(); ・ ・ listBox1.Items.AddRange(s); 上記コードでlistBoxに項目を追加しようとしていますが 最も適しているオーバーロード メソッドには 無効な引数がいくつか含まれています。 とエラーが出てしまいます。 List<string>では追加できないのでしょうか
ListBox.Items.AddRangeって引数はObject[]だろ List<string>なんか入るわけない
s.ToArray()したら入ると思うよ
MyClass mc; これってC++だと MyClass *mc と同じことか?
>>455 『初めて2週間の素人』には関係の無い話題なので、
論点が理解出来るまではスルーしていて差し支え無い。
ケチ!
>>459 特定の言語(C#)上の概念を、別の言語(C++)の概念で十分な考慮無しに決めつけるのは危険な考え方だ。
まずはC#流の概念を理解してから比較して考えた方がいいよ。
直接的な答えとしては、そうでもあるし、そうでないとも言える。
ちなみにMyClass^ mc が一番近いと言っておこうか。
デブで太っ腹の俺様に向かってケチだと
うん
>>462 MyClass^ mc
ってどういう感じなの
コードであったりするけど
調べても^だと検索できないからよくわからん
^ の読み方で検索すればいいじゃない
C++/CLIで取り入れられたハンドル型のこと>MyClass^ mc
C#風にいうならガベージコレクタで管理されたポインタ
event型の変数って初期化(Null)にできないの? +=と-=だけじゃ無理だよね?
なるほど
>>470 騙されたと思って
public event EventHandler TestEvent = null;
って書いてみ
本当に騙されるがな(´・ω・`)
イベントハンドラは言語レベルでObserverパターンを実装したものだから、 その接続を本体側から強制的に破棄するようなコードの書き方は正直おすすめしかねるがな。 接続して来た側から自発的に破棄させることが望ましい。
>>472 外部のクラスや継承クラスからは代入できないだろうが。
バカはレスするな。
>>475 論外だな。そんな掟破りな使い方をしようとするほうがおかしい。
というか >外部のクラスや継承クラスからは代入できない これの為のeventキーワードだろ。 本末転倒に過ぎる。
>>475 お前から死なねばならぬようだぜ兄ちゃん。
481 :
デフォルトの名無しさん :2009/12/13(日) 23:45:11
>>478 その為、ってのはちょっと違う気もするけどね。
イベントはあくまでイベントという概念であってデリゲートとは別物だから。
つーか472は初期化って言われたからコンストラクタの時の初期化だと思ったんだろ。 質問の仕方からして悪りぃ。
>>481 そりゃあ、透過画像で透過部分の背景が定義されてなかったら、
合成結果だって未定義になるだろ?(結果、砂嵐発生)
したがって、画像全体で未定義の部分が残らないようにすればいい。
Object型とジェネリックってどうちがうのだ? Object型→なんでも入る ジェネリック→なんでも入る 何がどう違う
>>485 Object → なんでも入ってOK
ジェネリック → なんでも入ったら困る
>>485 List<T>使わないでArrayListでプログラム書いてりゃ嫌でも分かるよ
一人の人間に集団でレスつけてボコボコにするのが今のトレンドなのか?
C#で、他に起動してある特定のアプリウィンドウのタイトルテキストを変更したいのですが、 APIでその動作は可能ですか?
いいえ、初心者バーカというのが今のトレンドです。
>>489 FindWindowかEnumWindowsでハンドルとってきてWM_SETTEXTとか使えばOK
492 :
481 :2009/12/14(月) 00:00:20
493 :
デフォルトの名無しさん :2009/12/14(月) 00:03:26
settingsに設定を保存しているのですが、 並べ替えは可能でしょうか。 設定が増えてきて見辛いので、項目毎にするために並べ替えたいです。
>>493 コメント欄に適当な数字でも入れてコメントでソートするとか。
しかし、そんなもの並び替えたいと思うかね普通は。
495 :
デフォルトの名無しさん :2009/12/14(月) 00:11:03
>>494 コメント欄とはどれのことですか?
名前・型・スコープ・値 しか見当たりません。
>しかし、そんなもの並び替えたいと思うかね普通は。
単純に見辛くないですか?
>>495 あーごめん、普段settingsなんて使わないから
文字列リソースと頭がゴッチャになってた。
まとめたいのなら、文字通り何かの型にまとめるべきかもね。
メソッドを作る際、インスタンスメソッドとstaticメソッドのどちらにしたらよいか毎回迷うんですが、一般的な判断基準があれば教えてください。
>>497 インスタンスの値を必要とするならインスタンスメソッド。
そうでないならstaticメソッド。
例外はfactoryメソッドや比較用メソッド、だな。
class X{ int a,b,c,d;//ほかにもいっぱい変数とかある void func() //a,b,c,d・・・のどれかを使うならstaticじゃない、使わないならstatic } こんなんでいいよ
500 :
デフォルトの名無しさん :2009/12/14(月) 00:23:48
メンバ変数を使うなら(メソッド間で変数を共有)インスタンスメソッド
引数だけで解決するならsatic。
だけど、
TestClass test = new TestClass();
test.Method1();
>>497 test.Method2();
TestClass.Method3();
test.Method4();
みたいに使うならわざわざMethod3をstaticにする必要ないと思ってる。
俺の個人的な意見。
適切なサブクラスをnewして返すみたいなCreateメソッドを
ファクトリークラス作らずに基本クラスに実装するならstatic
501 :
500 :2009/12/14(月) 00:24:49
>>497 の位置が変なところにきた。
まあ気にするな。
C#って予約語を除けばすべて日本語で記述可能なんだな。 予約語自体を日本語に書き換える方法ってあるだろうか 「if」を「もし」とか
>>502 いやー、たのむから識別子は半角英数字でお願いしますお願いしますorz
504 :
デフォルトの名無しさん :2009/12/14(月) 00:31:19
もし (x> 0) {} または {} こんなソースが書きたいのかお前は。 公開 空虚 実行() { 戻る; } 面白そうだな。
オッサンにはぴゅー太の日本語BASICの悪夢の再来に思えるぞ
>>502 コンパイラの前段階の処理に追加すればできなくはない
508 :
481 :2009/12/14(月) 00:43:06
なんか更新してみたらえらい伸びてるなw
>>488 1・2人が粘着して叩いてるだけだろ。スルーしとけ
>>508 回答ではなく、単なる思い付きだけど
gifって透過部分にも何らかの色が設定されてるよね?
もし透過部分の色を同じ色に統一してあるのなら、その色をMakeTransparentで指定したら
上手くいったりしないかね。
>>495 settingsファイルをXMLエディタで開いて直接編集
XMLって何?使えるとすごい便利?
なんだよそのアラレちゃんみたいなの
settingsのVS組み込みエディタがあまりにも使い物にならなくて、 データ保持用クラスにデータ読み書き用のstaticメソッドまで一式自作してしまった俺が通りますよ。
>>516 staticで実装するかどうかはともかく(普通は設定値を保持してるクラスのインスタンスメンバとして実装すると思うけど)、
まあそっちが普通だと思うけどね。
settigsはコントロールのプロパティとかちょこっとしたものを保存するにはいいけど、
設定値とかに使おうと思うと結局面倒で柔軟性がない。
標準のSettingsクラスは初期化されるのがapp.configだから、ユーザコードからコントロールしづらくていかんな
複数行あるテキストデータの、行を指定して、その行のデータを置き換えるにはどうしたらいいでしょうか?
>>519 そのデータはどこに格納されてるの?
テキストファイル?
>>489 特定のアプリの作者にそういうAPIを公開してもらう
それでなきゃマルウェア
Settingsは定義ファイルをテキストエディタで編集しようとするんじゃなければ、 iniファイルより使いやすいものなんだがな
VSのエディタって使いづらすぎるよな… ちゃんとインテリセンスまで効く代替のいいエディタってない?
524 :
278 :2009/12/14(月) 09:29:42
ない。
>>523 作ってMSにマークされるなりヘッドハントされるなりしてみたら?
まぁ無理だな。
何でVimEmuが出ないんだ?
>>278 なぜか誰も答えているやつがいないので今頃回答を書いてみるが、
通常はデータを必要とする場所(例えばメインのフォームとか)でインスタンスとして持たせればいい。
オレの場合、オプションダイアログで設定を一括で変更する形式でデフォルトに戻すボタンもあるので
・現在の状態(Current)
・ダイアログでの変更前の状態(Prev)
・アプリケーションのデフォルト(Default)
という形で、それぞれアプリのデータを表すクラスにそれ自身の方でstatic変数として持たせている。
シリアライザ、デシリアイザはXMLSerializerを使って独自に実装している。
app.configを使ってるなら当然その流儀に従うことになるな。
方→型
理由なきオレオレ流儀
なんでMSのアプリって全然カスタマイズ効かないんだろ あのエディタはほんとひどい
え、、、、やり方知らんのか
>>532 じゃあ聞くけど
半角スペース、改行記号、タブを可視化するにはどうするの?
任意の条件(正規表現などにマッチする文字列)で強調表示するにはどうするの?
n×mマスの長方形にコピー&ペーストするにはどうするの?
アウトラインの一覧を表示するにはどうするの?
行番号を任意の形式で表示するにはどうするの?
キーボードショートカットを任意に変更するにはどうするの?
聞かなくていいよw ストレス溜め込んで胃潰瘍で死んでろ
>>533 普通にVisual Studioのスレで聞いてくれ。
蛇足ながら知ってる範囲で答えると、
>n×mマスの長方形にコピー&ペーストするにはどうするの?
Altキーを押しながらマウスでドラッグ
>アウトラインの一覧を表示するにはどうするの?
Ctrl+J、クラスビュー、オブジェクトビューなどを使用する
>キーボードショートカットを任意に変更するにはどうするの?
オプション-環境-キーボード
空白の可視化は編集→詳細 ホントしょうもないな。 検索能力ゼロだな。 死んだ方がいい。
スレチって一言言ってあげるだけでいいのに。
全然カスタマイズできないってのが 全然(俺流)カスタマイズできないだからさらにイテェ 犬糞かぶれとかマジでこんな感じだよね 職場にもいるけどマジ死んで欲しい
マジマジうるさい。
俺色に染まれ(キリッ
無理してMSのエディタ使わなくていいじゃん。 マゾなの?ドMなの?
もういいよ
Emacsバインディング使ってるだけで迫害されるorz
test
545 :
デフォルトの名無しさん :2009/12/14(月) 17:04:23
DataGridViewで、一番右のカラムをDataGridViewの端に常にくっつけておきたいんですがどうすればいいですか。
FILLだったかいう指定
インターフェースとポリモーフィズム なかなか面白そうだと思うけど自分でどんなクラスを使えれば有効活用できるかわからん .netフレームワークに入ってるやつらが優秀すぎて自分であれこれクラス作る必要性があまりないから せっかく覚えた文法知識があまり役に立たないな。
自分がライブラリだとかフレームワークを作る側にでもならないと、 そういうのはわからんよね。
>>547 それなりの規模にならないと真面目にクラス設計する必要ないしな。
業務システム作る、なんてことになると嫌でもそこらへんの必要性痛感すると思うよ。
>インターフェースとポリモーフィズム 型にはめたり使い回しの効くようなガチガチの設計でないとそこまで真剣には使わないわな…
まあ後々のためにお勉強として小さなプログラムもガチガチ設計して作ってみるってのも 良いと思うよ。 個人でWCFとかWFとか覚えようと思ったらそりゃオーバースペックな設計でもするしかないし。
質問です。 Formアプリで、デザイナにてTextBox1をForm1に貼り付け、 TextBox1の幅をForm1の幅に追従するように、 TextBox1.AnchorをTop,Left,Rightにします。 ビルドするとデザイナがリフレッシュされ再描写されるのですが、 TextBox1の幅がすごく伸びます。何回戻しても伸びます。 ときには幅を元に戻してるときにVSが落ちます。 VSのバグなんでしょうか。 VS2008です。.NET3.5です。
553 :
545 :2009/12/14(月) 18:23:59
dataGridView1.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; dataGridView1.Columns[2].Resizable = DataGridViewTriState.False; 一番端のを要素2だとするとこんな感じでOKでした。 どうもありがとうございました。
>>552 デザイナのことを言っているのかアプリ自体のことを言っているのかが不明。
デザイナ上のプロパティの設定と、イベントハンドラで書いてるユーザー定義のプロパティ変更がバッティングしてるんじゃない?
>>552 同じことやってみたがおきないぞ
デザイナじでも実行時でも
OSとVS2008のSPと化の情報はどうなんだろ?
俺はVISTA SP1の VS2008SP1だけど
C#.NETの質問です。 ARGB形式をRGB形式に直して、 色を設定したいのですが、 setPixelv関数がRGBのみ対応で困っています。 どのようにすればいいでしょうか?
エスパー出番だぞ…
ARGBをRGBに直すって何だよ アルファ値切り捨てるだけ?
559 :
デフォルトの名無しさん :2009/12/14(月) 20:13:58
突然ですが質問をさせてください。 環境はWindowsXPでVisual studio 2008 Professionalを使っています。 現在、サーバーにあるmysqlのデータベースを読み込む、といったことをしようとしているのですが先に進むことができません。 どこで躓いているかというと、サーバーエクスプローラにて、接続の追加でサーバーとの接続を作ろうとしているのですが そのデータソースの選択で、[Mysql Database]の項目がでてこず、先に進めません。 (ググってみたところ、Mysql Databaseの項目で接続するようだったので) 以前、Express Edition を使用して、コードにて接続していたときは 特に問題がなかったのでmysql側には問題はないと思われます。 そのままコードで接続すればいいという話なんですが、 今回はサーバーエクスプローラでつなごうと思っています。 非常に幼稚な質問と文章ですが、ご教授願いないでしょうか。
>>558 そうです。切り捨てるだけなんですが、なんかできないんですよ。
>>560 どういうコード書いてるのかちょっと貼れよ
SetPixelVのCOLORREFって0xBBGGRRだろ ↓じゃ駄目なのかな Color c = //省略 (uint)(c.R | c.G<<8 | c.B<<16)
全くC#関係ないw GDI+かWPF使えよ
564 :
560 :2009/12/14(月) 20:33:53
皆様返答ありがとうございます。 一応動作検証したら動きました。 もっと賢い方法が無いか確かめてみます。 しかしなんでC#はARGBなんでしょうかね。
いや普通ARGBだから ARGBだとちょうど32ビットになるので効率がいい わざわざアルファを削る意味がない
固有のフィールドを使ったりするもの→インスタンスメソッド そういうものを使わないけどクラスに関係あるもの→staticメソッド
567 :
560 :2009/12/14(月) 20:45:50
>>565 親切にありがとうございます。
そういう意味ですか。
やりたかった事は、たとえばあるキーを入力すると、
スクリーン領域に一時的に赤四角なりを表示する機能を付けたかったのですが、
デスクトップのデバイスハンドルを取得して、
先ほどのSetPixelVに放り込んでループしてみても、
思うような線や四角形が描けません。
キー入力周辺はグローバルフックを利用して、
他アプリのキー入力の乗っ取りをしているので、
キー入力機能は問題なく実装されているのですが、
その手の画像処理系のところで苦戦しています。
面白い冗談だ
俺だったらキー押してる最中だけ真っ赤なツールウィンドウ表示するようにするわ 他アプリ書き換えるなんて面倒臭い
570 :
560 :2009/12/14(月) 20:53:19
>>569 それ賢いですね。思い浮かびませんでした。
つまり何らかのオブジェクトを
ユーザが動かせない固定オブジェクトにして、
デスクトップに指定座標をポイントとして表示してやって、
自分の都合のいいタイミングで消すと・・・。
其の方が圧倒的に早いですね。ありがとうございます。
>>560 がデスクトップに線を引きたいって事を言っているのか、他のアプリに線を引きたいと言っているのか
自身の画面に線を引きたいと言っているのかオレにはわからんのだけど、オレが理解出来てないだけ?
572 :
560 :2009/12/14(月) 21:05:42
>>571 言葉足らずなので追加しますと、
最終目標としてはクライアント領域に線を引くことを、
更に別アプリが閉じたとしても線を引きたいのですが、
現在いきなりそこまで求めていると失敗に終わりそうなので、
単純にスクリーン領域に線を引くことに挑戦しています。
575 :
560 :2009/12/14(月) 21:19:12
>>574 はい、私の言葉足らずです。
現在、デスクトップ領域に表示してみたところ、皆さんのお陰で美味い具合に行きました。
今度はウィンドウを閉じてもクライアント領域で表示できているようにできないか、
挑戦してみようと思っております。
>>573 王様が裸で歩いていても裸だと言ってよいのは子供だけと寓話にもあるだろ。
>>573 匿名メソッドとラムダ式の「例」だからだな。
実際にはこんな所でラムダ式を使う意味なんて皆無だろう
>>575 そのクライアントって他のアプリのクライアント?
うざいな。何がききたいの?
3サイズ
582 :
560 :2009/12/14(月) 21:30:39
>>578-579 いや、デスクトップ座標への画像表示はもうできたので、
他アプリのクライアントへの画像表示をする予定です。
これは自分でやってみて無理なら質問します。
説明が遅れてすみませんでした。
何がおもしろいんだこのキチガイは
わかったよ、黙ってるよ
どうせ答えられもしないだろうしな
>>573 メニューItemsNの構築はプログラム開始時に1回だけなんだから、
bool型の変数にすると、プログラム開始時刻が指定された時間内だったかどうかの判定になる。
そうではなく、メニューItemsNから実際のメニューを構築・表示するコードが別にあって、
メニューを表示するときに時間内かどうかの判定をするために、ラムダ式にしているのだろう。
ほんじゃ
>>560 じゃなくエスパーさんに質問
>>今度はウィンドウを閉じてもクライアント領域で表示できているようにできないか、
って何をしようとしているのか説明してくれ。
小型スクリーンショットじゃね?
お前ら仲いいな
>>589 再描画のことだろ。
エスパーできないなら黙ってたほうがいい。
ふつう、スクリーンカッターって言う罠。
田舎も都会も関係無いのだよ なにかコンプレックスでもあるのかねw
罵り合いなら他行きなさい。
フルボッコされて、虚勢のつもりなんだろうな。
なんか最近このスレにもWin32APIスレと同じような奴が巣食いているのね
同じ会社の奴とか?w
600 :
560 :2009/12/14(月) 22:01:32
すみません。また質問です。次はコード載せておきます。 Form2 f2 = new Form2(); f2.FormBorderStyle = FormBorderStyle.None; f2.SetDesktopBounds(x, y, 1, 1); f2.BackColor = cr; f2.Show(); かなりコードを端折りましたが(800ステップぐらいあるので・・・)、 単純にマウスクリックした時にフォームを色を変えて表示させました。 しかし表示されるフォームの高さと幅が1になりませんし、 デスクトップ上で表示される位置も滅茶苦茶。 マウスクリックしたところの座標を取得するために、 別関数でControl.MousePositionを利用し、其の値を保存して、 上記の関数に代入しています。 なぜマウスクリックした位置を基準に表示されないのでしょうか。
必要な所だけ削るんだな。
>>600 マウスのイベントを受け取ったウィンドウを基準に座標は入ってくるから、
デスクトップ座標に変換が必要
フォームの最小値は MinSize だかで決まってる。
>>559 何使ってるか知らんが、データプロバイダの追加に失敗してんじゃないの
てか、スレチ
よそ行けよ
悔しそう・・・
そうだね悔しいね って何が?
C#でリアルタイム処理するのは System.Windows.Formsのタイマーを利用しt 極力時間を短くして実行させまくればいいの?もっといい方法ある?
OSがリアルタイムOSじゃないなら期待しない方がいい
別スレでfor使って無限ループさせりゃいいんじゃね
フォームアプリケーションで,UIをフリーズさせることなくできるだけ頻繁にUIスレッドで処理をしたいなら Application.Idleイベント
拡張メソッドって thisが引数なの? それとも引数はないの? int型の拡張メソッド作ろうとしたら 10.add(3); みたいになるけど、これは引数はint型?それとも本当はthis int x,int yってなってるから二つ? どっち!?
>>612 単に add(x, y) を x.add(y) と書けるようにするだけの構文糖衣。
両社に区別ない。
てか、そもそも、C++ の this->Method() だって、実体は Method(this) よ。
コンパイル結果的には。
614 :
560 :2009/12/14(月) 22:54:43
>>601-603 なかなか一筋縄にはいかないので、
一生懸命原因をいろいろ調べた結果、
任意指定でウィンドウを左隅に初期設定していないと、
そこからマウスクリックした位置との相対座標が狂うというものでした。
サイズに関しては、最大値と最小値を同一に設定すれば、
美味いこといけました。ありがとうございます。
ぜんぜんわかってないな・・・。
じゃあお前がちゃんと説明しろや! エスパーさんよ!
617 :
560 :2009/12/14(月) 22:59:44
ちなみに先ほどは触れませんでしたが、 最初からクリックした位置がデスクトップ座標になるように組んでいましたので、 其の点は問題ないかと。念のため。
>>608 残念。それが一番まずい方法だ。
ウィンドウ制御のタイマーは不確定要素が多く、精度があげられない。
最低限専用のスレッドを用意して、System.Thread/System.Time系で頑張れ。
ゲーム系だとWinFormsのApplication.Idle内でPeekMessageを使って ウィンドウメッセージを監視しつつループをぶん回すってのはよく見る
System.Timers.Timerも微妙に罠があって、 IDEからコントロールとしてフォームに貼り付けると、 勝手にSynchronizingObjectが設定されてしまう。 // timer1 this.timer1.Enabled = true; this.timer1.SynchronizingObject = this;
あとスレッドの中でぶん回す時にThreadSleepとか使うかも知れんがこれは十分気を付けないと1mSecのWaitかけたつもりでも15mSecとかまたされちゃうので注意
それほどでもない
stringの特定の場所の文字かえられない string s="abcdefg"; s[3]='k'; //"abkdefg" コンパイルできない。読み取りはできる。どうすればいい?
>>621 それは罠とは思わんなあ。
そういう動作を望まないなら、わざわざデザイナ使わないでしょ。
「UIスレッドと同期してイベント発火しますよ」って明示するため以外に
あんな回りくどいことする理由は何もないんだから。
作り直す Substring二回をConcatするのが手っ取り早いな StringBuilder使ってもいいけど fixedすると書き換えられるがこれって動作保証されてるんかねぇ
>>626 だめ。
C#にconstポインタがないからいじれるけど、Stringの中身はimmutable
ジェネリックだのなんだのが追加されたせいで完全に劣化クラスで存在価値がなくなってるクラスとかあると思うんだが こういうクラスって削除されないの?hashtableとかDictionaryに比べて使う価値あるの?
silverlightでは非ジェネリックタイプのコレクションは省かれてるね。
質問 Bitmap.MakeTransparent()って解除する方法ありますか?
ない
.NET1.1から3.5に移行しなきゃならないときとか クラス消しちゃったら、その辺全部ビルドエラーになるけど? ソースいちいち全部書き直してテストするのか君は。
どういたしまして
>>632 そんな臭いソースのために仕様ずるずる引きずるよりビルドエラーにしちゃったほうがいいね
どうしても臭いソース使いたい人のための救済措置でビルドオプション付けるとかね
Obsoleteとかで中途半端にやるより基本使えませんというスタンスのほうが安全と思う
>>635 業務だったらそんなこと言ってられんだろ
>>637 お前古いCOBOLのシステムとか見たこと無いのか?
どこからも参照されてないはずなのに削除すると
バグる謎のフラグとか、誰も理解できないけどなぜか動いてるコードが腐るほどあるぞ
うーん言っちゃ悪いけど
>>638 みたいな人がいわゆる「おまじないプログラミング」
をするんだなと思う。
hoge(); //何故だかわからんが削除すると動かない
>>638 反論になってないなw
1.1で参照されてないのに削除したらバグるフラグがあったらどうするんだって?
メモリーぶっこわしてるだけだろw
//hoge(); //何故だかわからんが削除しても動いた
技術者としては信じられないんだけど、
>>638 みたいなこと言うやつって実際いるのよね。
>>622 それ、MSDNのどこに書いてある?
オレもC#で精度のよいSleepはどうするべきか考えているところ。
いい情報があると助かります。
つうか保守業務やったことない奴がわいてるな
このご時世時間なんか満足にとれんことも多いよ
たぶん
>>638 だってきれいに作り直してテストする時間があればそうしたいにきまっている
つうか、みんなそうだろう・・・・
それを知らないというんであればよっぽど恵まれている環境だろうから 逆にうらやましくはあるけど
プログラマって馬鹿なの? スレタイも読めないのか? 仕事の愚痴はブログにでも書いとけよ ガキか
>>645 そういう臭いコードの保守をすることがあるのは事実として
それが1.1のハッシュテーブルを使用禁止にする問題とどう関係する?
基本的に禁止、ビルドオプションで救済、これunsafeと同じようなものだが問題あるの?
どうせ「おまじない」に頼るなら3.5にした時点でメモリー状況変わっておかしくなるよw
>>644 とりあえず自分がやってる方法
APIで無理やりタイマの精度をあげる
↓
ストップウォッチで計測開始
WaitOneで止めてみる
計測終了
↓
APIでタイマの精度を元に戻す
今ん所はこれでCPUの使用率上げずにそこそこの精度は出てるかな
もちろんほかのサービスとか全部切った上でだけど
もっと精度必要なら何と言えばいいのかわからんけど、スリープとかなんか使わずに経過時間ごとに処理をして祖霊が今またループさせるとかそんな感じ
どっちかっていうと底辺な感じだからもっとレベル高いのがこのスレには多いと思うからあとはそっちにまかせるw
MSDNつうか、SLEEPのライブラリの説明が指定した時間以上で発生するかんじだったはず
であとはOSの分解能とかに依存するんだったような気がしたけどどこにあったかは忘れた
説明下手糞すぎてすまん
インターフェースやクラスを継承してなくてもただ単に同じメソッドがあっただけでもdynamicを利用すれば ポリモーフィズムみたいなことができるけどこれもポリモーフィズムっていうの? class A{ public void func(){//バーカと表示} } class B{ public void func(){//アーホと表示} } dynamic d=new A(); d.func(); d=new B(); d.func(); こんな感じ
>>649 そういうのはduck typingという。
オブジェクト指向スクリプト言語の世界では語り尽くされている。
昔C#で作ったアプリを起動すると EntryPointNotFoundという例外で強制終了してしまうのですが、 これを回避するにはどうしたらいいでしょうか? よろしくお願い致します。
Main関数がないから付け足す
factory methodってどんなときにつかうの
>>635 あり得ないだろそんな判断。
問題があるクラスならObsoleteにするって判断はあり得るけど。
ってか既に正式に存在するクラスを消せとか本気で思ってるわけ?
ちょっと信じられないんだけどな。
あとHashtableはDisctionaryに対する利点あったりするぞ。
それは単一書き込みと複数読み取りがスレッドセーフになってること。
それだけのためにDictionaryの代わりにHashtableを使いたいことがある。
まあ.NET4ではConcurrentなディクショナリがやっと追加されるから、
そうなったら本当に要らなくなるけどな。
でもそれは削除していいってことじゃない。
気が向いたとき
簡単に下位互換性放棄するってどんな糞ライブラリだってことだな
>それは単一書き込みと複数読み取りがスレッドセーフになってること。 この性質はキャッシュ的な機能を実装する際に非常に重要。 もっとも、.NET2.0になってしばらくの間この仕様は怪しくなったりもしたがw
>>653 オブジェクトを使う側がサブクラスを意識せずに
共通のメソッドを使う場合、FactoryMethodって呼ばれるデザパタを使うのさ。
サブクラスオブジェクトの初期化処理がほとんど同じ場合には
new があちこちに分散しなくて済むっていうすばらしいメリットがある。
Db接続のIDbConnectionとかIDbCommandなんていい例だと思うがね。
MicroSoftが型付DataSetとDataAdapter作ったことで
その変のクラスが勝手にSqlDbConnectionなんかになっちゃって
何やってんだMSって思ったが。
IdbConnectionとかからむのはどっちかっていうとAbstractFactoryだけどな。
ほんとのデザパタのFactoryMethodそのものはそれほど使い道なかったりもする。
>>654 削除なんてどこにも書いてない
基本的に使用禁止といっている
上位バージョンに移行して、どうしても使いたい人はビルドオプションで使えるようにすれば
C#で作ったexeって必要なDLLさえありゃXPやVISTAならどんなWindowsでも動くのか? zipにmscorlibやSystem.Windows.Formsを同封しとけばいい?
クラス全部に優劣持たせてビルドオプションでどの範囲使えるのか決めるのか? C#のIDEがVSだけだと思うなよ。 実際に使うと警告出るプロパティとかメソッドあるけどね。 推奨されていませんって。 やるならその程度でいいと思う。 まあ実際コレクション作るときにObjectModel.Collection知らずに いまだにIEnumerableとIEnumeratorガリガリ実装してる人いるけどね。
無茶言うな。
>>662 >XPやVISTAならどんなWindowsでも動くのか
XPやVISTAって言ってるのに「どんなWindowsでも」ってなんだよw
>>663 柔軟な思考出来ないなあ
Obsoleteに変わる属性を用意して、それが付与されている場合に
VSがエラー出す振る舞いにすればいいだろ
例えば上で出てきたような理由でHashtable使いたい奴はオプションで変えるのか? 一個でもそういうのあったらもう何もチェックされなくなって意味ないし、 個別にオプションはさすがにやりすぎだと思うし、 せいぜいObsoleteレベルだろう、エラーはやりすぎ。
じゃあ今度4になってまたそういうクラスが出てくるわな。 そのたびにいちいちビルドエラーになるのか? そういうのはコード解析の範疇だろう。
つうか好みの話ギャーギャー言ったところで 今MSの仕様これなんだから こすうるしかない でいいんじゃないの?
じゃあそういう意見をMSに言って実装してもらいなさいw
もともと
>>628 の必要ないクラスは削除しないの?
っていう提起から始まった話題だ。
削除はしないほうがいいって結論で終止符打とうか。
デリゲート使えばポリモーフィズムみたいなことができるな class A{ public Action<int> func; } A.func= ラムダ式とかAnonyデリゲートとか A.func(); A.func=違うもの A.func(); これはすごいな
>>671 使い道がイマイチ思い付かないんだが・・・・
え?それってデリゲートそのものだろ?
安易に削除とか考えるのは小学生レベルだな
>>669 まあそういう話になるんだよねw
>>670 誰も削除しろって主張してないし
そもそも論点そこじゃないw
>>666 Obsoleteの警告を/warnaserrorでエラーにするのはダメか?
>>672 if文やswitch文を消せる。まぁそれだけならインターフェイスを使ってもできるが
たくさんクラス作らなくてもいい利点とかがある。
ふと疑問に思ったんだが Form1:Formで Form1.Loadイベント時になんらかの処理を行いたい場合って Form1.OnLoadをoverrideするのと Form1_LoadメソッドをAddHandlerするのって どっちが推奨されるんだろう。
>>672 積極的に使うようなものじゃないと思うけど
mshtmlとかでDOM扱う時に簡素に書けそうね
オレは使わないけど
多態ってswitch文と置き換えられるから便利って説明されるけど 本質的に多態じゃないとできないことってあるの?
object.ToString(); WriteLineメソッドの引数はObject型だけでいいね!
SendInputって組み合わせ技できましたか? AとB同時押しとかw
なんで「w」をつける必要がある
>>678 ガイドラインに従うなら派生クラスではオーバーライド
まあ、Form1みたいな使い捨てクラスなら好きにすればいいと思うよ
(デザイナ使うとイベントになるし)
>>683 スレ違いw
どうでもいいけどObsoleteの処置に文句あんならMSに言え。 ここでどーよ?どーよ?言ってもかわんないから。
演算子とメソッドの違いってなんだ 2+3の+は演算子で add(2,3)はメソッド なんか変な書き方をするメソッドが演算子なのか?
>>687 メソッドはオブジェクトに紐付いてるから
2+3
2.add(3)
がどっちかっていうと等価
>>687 プログラミング的に見ると、
演算子は組み込み型の場合は関数呼び出しじゃなくて1命令にコンパイルされたりするとか、
+ と * で優先順位がついてたりするとかが差。
非 static で virtual なメソッドはまたちょっと変わってくるけど。
数学的に見るとあんまり差はない。
中置記法してるだけ。
言葉遊びに忙しいな、お前らって。
>>690 情報工学というのは、すべからく言葉遊びさ。
「すべからく」の誤用
いや、あってる。「すべからく」というのは誤用されがちな言葉で間違えて「all」の意味で使ってしまうことが多いが、 本来は「must be」だ。 で、691の場合はどちらの意味で当てても意味は通る。
言ってるそばから遊びだすなよw
一夜にして香ばしい議論が・・・・
C#からJavaやJavaからC#って比較的楽に乗り換えできるものなんでしょうか?
>>696 文法や書き方、プログラムのしての性質にはある程度共通性があるが、
その他は全く違う。
持っていけるのは自分の頭だけだな。
片方を知っていれば、もう片方は勉強はしやすいと思う。
うん。 C# -> Java は、言語仕様よりアプリケーションフレームワークのコツを学ぶのが大変。 Java -> C# は、フレームワークがやってくれてたところをどうするか考えるのが大変。
>>697 文法は違和感がないかな
ASP.NETとかはちょっと独特の所あるんで戸惑った
Javaは関数ポインタやデリゲートがないよな どうすんだよ
こういう細かいことを言う奴がいるけど、あんまり気にすんな。 関数ポインタなんてそもそも使わないし、Delegate は使いたければ CGLIB みたいのもあるし。
delegateといえば汎用delegateが出来てから自分で定義する事が少なくなったな
C#はリファレンスやサンプルが多いから良いな。 VB.NETでだいぶプログラムが書けるようになったし移行しようかな
>703 使い捨てならどうせ同じような名前になるしな。大文字と小文字変えただけみたいな。
関数ポインタを使わないワロタ たしかに使わないと不可能なことは何もないが 使わなかったら本来20行程度で済むものが40行くらいに膨れ上がったりソースコードぐちゃぐちゃになるだろ・・・ そりゃちっちゃいプログラムなら恩恵少ないだろうが 何千行もあるソ−スコードで関数ポインタを使えば多少見やすくなる場所でもまったく使わないで書くなんてすごすぎる。 goto文があるからifもforもいらないつって全部gotoで書くくらいばかばかしい
ごめん、関数ポインタてどんなやつ? 使い道ってあるの?
大企業同士で大げさにわいわいやって読むのも嫌になるような 巨大な仕様書を毎回でっち上げるJava陣営と比べて、 .NET Framework/C#はお互いに必要とするものを必要最小限のコストで追加していってるから 使う側は理解しやすいと言えるんじゃないかと思う。 LINQなんかは最たるものだ。
クエリ、ラムダ式、イテレーター、イベント どれも便利
関数ポインタはもともとC/C++の考え方で、C#ではdelegateで使う。 つまり、関数ポインタうんぬん言ってる奴は、よくわかってないバカってこと。
C++/CLIでdelegateを作ってみると両者の関係が良く分かる。 gcnew MyDelegate(関数ポインタ, this) でデリゲートの出来上がり。 javaの場合はinterfaceを使ったObserverパターンで対応。 C#では内部クラスが外部クラスのthisを持たないから、 同じことをしようとするとめんどくさくなるな。
SendInputの複合技の件について
APIスレ行け。
>>708 仕様変更に対する姿勢は結構違うよね。JavaとC#は。
それぞれ一長一短だと思ってはいるけど。
細かい文法の違いはあるけど他言語と比べりゃ殆んど一緒だよね。
だから
>>699 に一票だな。
INotifyPropertyChangedからプロパティの変化の通知を受け取るクラスを作りたいんですが IWeakEventListener以外の方法ありますか?
716 :
712 :2009/12/15(火) 15:49:46
SendInputの件については、他スレで質問してきました。
>>714 俺はJAVAしか開発現場でやったことないけど、
JAVAとC#を比較するほうが間違ってると思う。
大本からしてJAVAは環境に依存しないのが売り。
それに対して、C#はマイクロソフト製品しか使えないが、
フレームワークの概念があまり無いが、.NETが優れているため、
開発にかかる時間が大幅に削減されるというメリットが。
そもそもマイクロソフト製品しか使わないくせに、
JAVA言語で組んでくれとかいうやつらもいる。
さらに、なぜかユーザインタフェースはC#で作っているという。
何がしたいのかなぞなんだが、上の方が決めたことなので逆らえない。
結局は上が決めたことが採用されるという悲しい実態。
不毛な論議だと思うが、なんでそんなに真剣なのwwww
>>716 かわいそうに・・・・
日本語も不自由になっていらっしゃる・・・・
718 :
712 :2009/12/15(火) 15:52:31
>>717 日本語以前に、JAVAとC#を比較するお前の頭のほうが不自由。
>>715 言ってる意味がよく分からん
WeakEvent使わないのなら普通にイベントに+=すればいいんじゃね?
JavaとC#の比較なんてするのが当りまえだろ、競合製品なんだから。 何を言ってるんだ。
722 :
712 :2009/12/15(火) 15:58:05
言語仕様がどうかとかほざいて真剣に悩む開発者は数いないし、 そのレベルで悩む開発者が、「乗り換え難しいですか?」なんか言わないだろ。 質問がナンセンスだと思う。 質問者の癖に偉そうでなんだが、JAVAと比較されたので単純にむかついた。
この人どうしちゃったの?
結局宗教論争か
今時言語に愛情注いでる人ってLL界ぐらいにしかいないと思ってたが・・・
>>712 はそんなにJavaが好きなのか。
>>722 なんでそんなゆがんだ考え方になってるかわかんないけど
ひとそれぞれだ
興味があるだけでもいいじゃないか
いろんな言語でいいPGかける人口が増えてくれれば単純にそれでいいと思う
デリゲートをプログラマが最初に使うであろう場面ってたとえばなに?
XXって難しいですよね〜 とか YYってどうやるんでしたっけ? ぐらいの雑談でマジギレ出来るのがプログラマ
>>727 コールバックの実装じゃね?
説明するときはソートの順番変更をよく引き合いにだすよ。
フォームにボタンを貼り付けてダブルクリック一発
俺はマルチデリゲートを使うシーンを知りたいな
イベントじゃないの?
>>727 たとえば分業の時
自分の担当じゃない部分をデリゲート1文入れておけば
他者がそのデリゲートに自分で書いた関数を突っ込んで使う
自分で使うときも使い回しできそうな部分以外をデリゲートにしておいてテンプレートとして使ったりも出来る
735 :
712 :2009/12/15(火) 16:10:06
>>725 「基本的に言語はツールなんだから何だってやれよ」っという考え方ですが、
「この言語とこの言語はどちらが扱いやすいですか」的な質問は、
会社でもよくされる言われなれてることなので不愉快なだけ。
俺はいくら仕事とはいえBrainfuckで開発してねって言われたらマジギレしますが。 まあカルシウムとろうね。
C#は扱いやすいから人気出てんのに何いってんのこの人 楽して良い効果上げるのはエンジニアの基本なんだが
738 :
712 :2009/12/15(火) 16:18:24
>>737 それは単に.NETが優秀なだけであって、
C#という言語が優秀なわけじゃないだろ。
第一、言語に貴賎は無いしな。
C#に関しては開発者が少ないから、仕事が回ってくるだけ。
需給率の問題。現状教育してまでC#で作る必要は無いが、
其の中でもC#を勉強していますって人がいたら、
即効で仕事に使われるのは事実で、
そういう意味で人気があるだけ。
市場を把握しろよ。
>>735 であるからこそ一般社会でもFAQであり、
このスレでも質問される可能性が高いわけだろ?
まあカリカリすんな。
いいからそろそろ消えてなくなれよ。 SendInput() の使い方もわかんないやつが、何言ったって説得力皆無。
741 :
712 :2009/12/15(火) 16:20:31
>>739 そもそも俺が今作ってるもので、
使ってる言語はC#なんだけどね。
そもそもC#でしか作れないものじゃないから、
別に何の言語でもいいんだけど。
ちょっとカリカリしたが、
JAVA言語はしばしば死語として、
.NET系の連中に叩かれることがあるから、
その辺で敏感なのかなぁとか。
742 :
712 :2009/12/15(火) 16:22:00
>>740 いやJAVA言語はWin32API関数使わずに自分で組むんで・・・。
ごめんな、説明不足で。
関数ポインタとデリゲートの違いの最大のメリットは関数ポインタに関数をいくつでも追加出来て1行で全部実行できるようになることだろう。
>>738 >それは単に.NETが優秀なだけであって、
>C#という言語が優秀なわけじゃないだろ。
それでいうとJAVAのフレームワークが優秀なだけでJAVA言語が
というようになるわけだが…
C#の開発者が少ないというのはちょっと・・・・
まぁ思い入れがあるのはいいと思うけど栄養偏るの良くないとおもうよ
745 :
712 :2009/12/15(火) 16:24:25
>>744 >それでいうとJAVAのフレームワークが優秀なだけでJAVA言語が
というようになるわけだが…
其の通りだと思うよ。
そもそも開発者とか気取ってるけど、
言語とか開発環境とかフレームワークとかいう、
「道具」を使ってるだけだろ。
というか俺は其の程度の仕事しか回されない。
C#の開発者少ないとか言ってる人はさすがにそろそろ周り見た方がいいと思う。 この業界で食ってるのならなおさら。
いい加減名前外せよ うぜえ
論理破綻してて見苦しいなぁ。 こういうバカがC#使うから、C#自体がバカにされるんだな。
>>747 一応はずすが、お前みたいな無能な奴が煽るからだろ。
>>738 >C#に関しては開発者が少ないから、仕事が回ってくるだけ。
>需給率の問題。現状教育してまでC#で作る必要は無いが、
>其の中でもC#を勉強していますって人がいたら、
>即効で仕事に使われるのは事実で、
>そういう意味で人気があるだけ。
あほか。
言語で仕事が決まるのは一番低層だけだ。
上層(笑)のひとちーっすw
>>748 はぁ?
C#自体が馬鹿にされることは無いと思うが。
俺はC#は言語として新しいし注目してる。
馬鹿にされるとしたらそれを使って書いてるお前じゃね?
>>712 はあれっしょ。会社でなんかあったんでしょ。察してやれよアホども。
ウゼェ
ここ何スレだっけ?
>>712 他所で質問したんならさっさとそっち行けよ
>>754 何言ってるのこの人。
お前以外の奴らが優秀だからここでレスして質問してるんだよ。
その他スレでお前の質問にレスついてんべ?
759 :
712 :2009/12/15(火) 16:33:32
すまないが、途中から俺、全然レスしてないんだが。 俺の投稿で不愉快被った連中すまない。 先ほどの件だが、SetKeyboardStateで調べればいいだけらしい。 みんなありがとう。
ID無い板は色々便利だな。
そろそろ、年の瀬だな まあ、とりあえず思ったこと書くと、 名前もまともに書けないものを擁護しているのは滑稽だな>JAVA
763 :
712 :2009/12/15(火) 16:51:16
全部俺が悪いんだよ。 ネットワークケーブルで首括るから許してくれよ。 それじゃーな。アホども。
最後の方しか読んでないのでよくわからんけど SendInputのかわりにSetKeyboardState? 同じスレッドじゃないと使えないものと、別プロセスで使うのが主なもので代わりになるのか。 まあ同じプロセス内なら何とかなるけど、それじゃそもそもSendInputには至らないしなあ
765 :
712 :2009/12/15(火) 17:16:46
最後にもう一言。 ここ全然使えないわ。 もう来ないよ。
はいはい、常にだれかに頼って生きてなさいね。
767 :
712 :2009/12/15(火) 17:57:57
>>766 すみませんが、私は投稿してません。
SendInputに関してですが、フラグとかその辺の入れ方がどうもおかしいみたいでして、
その辺の理解を深めて使用していきたいと思います。
それに入力の個数を入れて、配列を放り込んでやったらいけそうな気もします。
最初に常に入力個数一個しか指定してなかったので駄目駄目だったわけですが。
ありがとうございました。以後このコテははずしますので反応しないようにしてください。
何人の712がいたんだか
712人いる!
712.Dispose(); エラー:オブジェクトインスタンスが…以下略
Arashi[] arashi = new Arashi[712]; arashi[0]= () => Console.WriteLine("最後にもう一言。ここぜんぜんつかえないわ。もうこないよ"); arashi[0]();
わしのあらしは712まであるぞ
ポリモーフィズムすごいな。 配列やポリモーフィズム使えば理論上はifやswitchをまったく使わなくても複雑な条件分岐をするプログラムが組めるな。
だってお!w
>>773 そういうのをState/Strategyパターンという。
ただし、C#の場合はイベントハンドラを活用して動的に切り替えることで、
Stateパターンで必須となるクラス分けすら必要なくなる。
その分そのクラスがクソ長くなるけどな。
>>776 なんだ。せっかく大発見したのにすでに研究されつくして名前もついてたのか。残念。
>>777 逆に考えるんだ
そのパターンに自分で気づいたのはスゲェと
誰でも思いつくパターンに名前をつけたのがGoF
連投しまくってるやつがいるな 返しのレベルですぐわかる
誰にでも思い付くかもしれないけど(だからそもそもパターンになったわけだし) 名前を付けて共通言語化したのはよくやったと思うけどねえ。
C#でリボンを使いたい場合、VisualStudio2010を待つか、 MSとライセンス契約を結んでWPFのコンポーネントを取得するか、 どちらかになるのでしょうか。
784 :
782 :2009/12/15(火) 19:59:18
サードメーカーのもあるんですね。 ありがとう。ライセンスを確認したり、検討してみます。
ガベージコレクションなしのC#がほしいなぁ
>>712 のレスが気持ち悪すぎてさすがにNGしたわ
>>785 無理
C#の言語仕様はGC前提だからGCがないと言語仕様を満たせないのでC#とは呼べない
GCなしってのはメモリ管理を完全に自分で行うってことかな 組み込みとかだとそういうのの方がいいような気もするけど 最近はそうでもないんだろか
だったら組み込みJAVA使えばいいじゃん?
JAVAは言語が汚いからあんまり使いたくないな
え?C#は綺麗? へえ そうなんだ
C#は言語仕様は汚いけどソースは綺麗だな Javaはその逆
そう思わないなら反例を出せよ
何の反例?
言語が汚いってどういうこと? ソースが汚くなりやすいとか?
俺じゃねえよ
まぁ読みやすさ、書きやすさではC#の方がJavaより上だな
は?なんのギャグ?
なんで712は常駐してんだ?
補助の多い言語が一番いいですよ C++の補助が充実してるならよろこんでそちらを使いますよ
宗教論争が好きな人たちですね
たけしの何とか医学で俺も含めて家族全員が認知症だった 家族のためにC#でなんとかしようと思う
なんでVC++の補完と整形はC#のそれに比べてあまりにお粗末なんだろう 同じ会社が作ってるのに… とくに整形
歴史のある韓国に整形は任せた方がいいのかもな
1日で200進むってアホかおのれら
フォームアプリにカスタムコントロール貼り付けてその中でGPUを使った処理を書きたい場合 XNAを使えばいいの?
XNAはあくまで30fpsとか60fpsで再描画繰替えすようなの向けだから
単にGPU使いたいだけなら
>>809 ゲームならXNA貼り付けもあり。
ゲームではなくて、音声波形処理がCPUで間に合わないのでGPUを使ってみようと考えてるんです。 WPF調べてみますthx
そんな奇特な用途は全くWPFの守備範囲外 専用のSDKが必要だけど普通はC++用だろうからC#では無理
しかし、そもそもオーディオの波形処理ってそんなに重いのかな。 たかだか40kHz-16bit-2chだし、Win95の時代でも普通にソフトシンセが軽く動いてたのを 思うとそうでもない気もするけど。 まあもちろん処理内容次第なんだろうけど・・・
using System; とかかくときusing のあとインテリセンスが自動にならないんだけど・・・ Ctrl+K,Lを押さないとダメ。System.とうつと表示されるんだけど自動インテリどうやんの?
マルチスレッドでだめならそんなわけのわからないものに手をだすより ネイティブコードで書いてみるべき
>>814 そもそも using を手で書くことなんてまずないだろ
C#のスレッドのタイマーで特定のスレッドだけとめる方法ないですか? スリープすると、すべてのスレッドがとまって困っています。
>>814 自動じゃないけど、Ctrl+[Space]じゃダメ?
>>817 止まらないよ。
デバッガで止めてるだけじゃないのか?
>>819 ほんまだ。
デバッガでは正常に動くのに普通に起動して使用するとハングる。なぜwww
そりゃプログラムがなんかポカやってんだろう。 どんなのか見んと何も分からんが。
自作したMyArrayクラスの100個の配列をつくる MyArray[] a =new MyArray[100]; for(int i=0;i<100;i++){ a[i]=new MyArray(); } これをforeachに書き換えるにはどうやる? foreach(int i in a) a[i]=new MyArray(); ってやってもうまくいかない
aの要素の型はMyArrayだからforeach使うならこうだけど foreach(MyArray m in a) foreachの中ではこれができなくなるよ a[i]=new MyArray();
>>816 そうなの?usingされてない名前空間のクラスを使うときどうすんの
>>816 使いたいクラスを入力してShift+Alt+F10かマウスオーバーで「選択した項目をバインドする」と追加される。
タイプ数的には「us[Space]sy[Ctrl+Space];」の方が少ないし、正確なクラス名覚えて無くても大丈夫だけど
usingのためだけに一々ファイル先頭に行く必要がなく、思考を中断させられない というのは大きい。
その使いたいクラスの名前が長くて入力するのが面倒だったり正確に覚えてなかったりする罠
>>826 あるある。
というか名前空間と同じ文字列がクラス名にも入ってたりすることが往々にしてw
>>824 クラス名を先に打つ。
その行、エラーになるけど、打ったクラス名の上で Ctrl+ .
もしくは、右クリックして「競合の解決」。
Shift+Alt+F10 ショートカット初めて知ったわ
その前に長いクラス名覚えられん・・・
変数名とかに日本語を使うのってやっぱりマズいですか? 麻雀用語とかの対応する英語が無い単語の場合、ローマ字で変数名とか要素名書いてたんですが シンボル名にユニコードが使えるわけだし以下みたいにしたいです。 enum 待ち { 嵌張, 辺張, 両面, ... }; 多分非日本語圏の人と共同作業するとかライブラリ化する場合こういうのだと辛そうですが・・・
便乗だけど、C#でenumってどうやって使うの? C++みたいに enum apb{ a, b, c, d}; って宣言して、 array[a]とかできなくて困ってる
>>832 そーゆー使い方はあんまりしない
専らフラグとか状態変数に使うと思う。
array[a] みたいなのだったら Dictionary 使うか
自前のクラスで indexer 作るか
素直にプロパティにする方がいいんじゃない?
配列の添字で中身を区別するなんてのはちょっとC言語時代に先祖返りしてる気が。
>>831 2バイト文字は使えても使わないのがお約束
コーディング規約は会社にもよるし自分で決めたコーディング規約に従うなら
使っても構わないと思うけどね
>>831 日本でしか使わないなら日本語使えばいいじゃん。
特に enum 名は日本語によくする。
>>832 なんか enum の使い方として今一だと思うけども・・・
やりたい場合は (int) で整数にキャスト効くからそれでやればいい。
C の fopen(filename, "w"); みたいに、意味不明なフラグ文字列使わなくても、
File.Open(filename, FileMode.Write) みたいに書けるってのがもともとの意義なんだが。
>>834 >2バイト文字は使えても使わないのがお約束
これなんで?
>>834 いささか古いお約束だなぁ。
会社で禁止って言われて内なら2バイト文字をためらう理由、いまどきないぞ。
>>836 C の時代の名残じゃね?
大昔は、SJIS の2バイト目に \ 相当の文字コードが入ってて苦労したし。
近代に入ってからも、C/C++ の場合、あるコンパイラなら Unicode 通るけど、
他の環境に移植するときに泣いたとかよくあったし。
C# でそういう心配要らないから。
OSSならともかく普通に日本の会社に納品するなら日本語もありだと思うけど 昔の慣習でなかなかそうもいかないって場合もあるだろね。 あと海外に外注するとかなってくると厳しいだろな。
>>836 C#「でしか」開発しないならいいけど
他のプログラミング言語だと使えなかったり、コンパイラが対応してなかったり。
>>838 が言ってるようなことも起きたりするから
2バイト文字で変数つけちゃう癖がつくと他の言語を扱う時に困る
まぁユニコードの問題もあるし使わないほうが別の言語に移行した時も問題なく動くだろうし VBとかなら日本語変数使ってるのもあるけど・・・ もう2バイト使わないのに慣れちゃってるから日本語変数が逆に見にくい
>>833 >>835 C++厨では普通だけどC#ではそーいうもんなのか
配列の代わりにDictionary使って
パフォーマンスが落ちることはない?
挿入も参照もO(1)だからメモリ食うぐらいかな?
今後は識別子にユニコードが使える言語増えてくるだろうし ゆくゆくは日本語変数は普通、なんて時代もくるかもね。 実際日本語だとおそろしく保守しやすいしな。 チーム辞書のメンテもほぼ不要になるし。
日本語変数名使いたくない理由は
古くからの習慣・他言語との兼ね合い・インテリセンスが使いにくくなる
の3つだけかなぁ。
C# だけで見ると使わない理由はない。
>>840 .NET な時点で大丈夫だろ。
他の言語に移るときに苦労するってのは確かにあるんで、強くは言えないけども・・・
>>841 そういう「慣れちゃってるから」って理由なら、
日本語使ってみればすぐ慣れると思うよ。
某ゲーム会社に勤めてたときに新人募集でサンプルプログラムの提出してもらったんだが VS2005のプロジェクトでなCだったんだけど日本語変数だけで書かれてて吹いたなぁ しかも、その日本語のワードが「文字列」なのか「変数」なのか「コメント」なのかがぱっとみでわかりにくいんだよね 色付いてるから見えるのかも知れんがわし色盲なもんで・・・てへ
>>842 パフォーマンスはあきらかに落るよ。
Dictionaryの場合は一々ハッシュ取るからO(1)でも定数部分で損する。
それが嫌なら普通にプロパティ使う。
array[a], array[b] じゃなくて object.a, object.bにすればいいじゃない。
>>842 クラスの外側から見える位置ではまず array[enumValue] なんてやらない。
内部では、パフォーマンスのこと考えて普通にやる。
その場合はだから、array[(int)enumValue] でできる。
確かに日本語変数名の方が可読性は上がると思う 後から英語にしようと思えばリファクタもあるわけだし
ただなんかこう日本語変数名見ると どうしても「だせぇ・・・」って思ってしまう自分がいる。 あれはなんでなんだろうね・・・ プログラミングを秘儀にしておきたいって感情がちょっとあるからなんだろか。
>>846 あーなるほど
object.aなら可読性も変わらないですね
>>847 公開しない部分ではキャストしてC++の感覚でやることもあるんですね
もうこれからは間を取ってアラビア語変数名にしようぜ
英語が苦手なプログラマの場合は日本語の方が可読性あがるんかもね
英語の仕様書とかしかないもの使う機会が多いから英語の変数名の方が見やすいな
>>849 英語の中に日本語が混じってると違和感がある
言語自体が日本語なら日本語変数でいいんじゃねーか
>>851 全然間をとれてない件
間をとってハングル語を変数名にだろ!
間かそれw 自分の体験だと、ユニットテストのテストメソッド名を日本語にすると すばらしくわかりやすかった。命名に全然悩む必要なかったのもよかった。
変数名とかメソッド名を考える時間って結構思考停止してるよなw 勝手に名前つけてくれる機能きてくれー
>>852 英語が苦手っていより、日本の業務システムなんかだと業界用語が多発するじゃない。
そういう対応する英語が無いようなのって
結局「DoujiShiwakeZenjitsuKigenn」「TanitsuShiwakeKigen」みたいに直でローマ字にするか
「DjShiwaPrevLimit」「TanShiwaLimit」とかの中途半端に略したのにするとか
なんかしっくりこない対応しかないよね。
こういうのの場合は日本語で直で書けたら楽だと思う。
>>854 int型 i1,i2,i3,i4...
int型配列 ia1[],ia2[],ia3[]
って連番にすれば悩まないよ!
foo, bar, buz とか hoge, hage, huga も忘れないであげてください。 レビュワーにぶんなぐられてもしらないけど!
いただきハンガリアン
俺なら一個Enum受け取ってその配列から値を返す関数作っておわりかな 中身はSwitchでも数値系にキャストして使うんでもどっちでもいい
C#に関する質問です。 Formのタイマーを使っているのですが、 ウィンドウが途中で固まってボタン押下できなくなったり、 キー入力を受け付けなかったりするのですが、 何か対抗策はあるでしょうか。 スレッドなどは使いたくありません。
オレも変数名やenumに日本語を使うのは反対だな。
ソースコードは英語(ベース)、コメントは日本語で書けば視認性もよくなるし。
(海外向けに公開するときはコメント込み英語で書くこともあるが……)
それにenumやメンバ変数に<summary></summary>を付けておけば
マウスでポイントすると意味がわかるので、そっちの方が便利じゃね?
識別子だけ日本語の単語にするより長文を入れられるし。
>>859 そういうのはenumの各値を整数の即値で初期化してしまえばいいじゃん。
ちょっと不恰好だが(int)でキャストして使う。
>>861 それはタイマーの問題じゃないような気がする。
Application.DoEvents() でなんとかしのぐしかないかな・・・。
>>861 タイマーのハンドラの中で何をしているのかによる。
時間のかかる処理をしていれば、当然固まる。
>>862 >それにenumやメンバ変数に<summary></summary>を付けておけば
>マウスでポイントすると意味がわかるので、そっちの方が便利じゃね?
>識別子だけ日本語の単語にするより長文を入れられるし。
変数名が日本語だとポイントするまでもなく意味がわかるってメリットもあるよ。
長文読むまでもなく内容が理解できるかもしれないしね。
結局究極的にはどっちもどっちなんだろうなと。
プロジェクトリーダの趣味にしたがいますよ私は。
>>861 スレッドを使わずにプログラムを走らせるってどうやってるんだ!
ぜひとも俺に教えてくれ!
>>865 >変数名が日本語だとポイントするまでもなく意味がわかるってメリットもあるよ。
むしろそれくらいしか利点がないような気が。
VB6やMS Accessでシステムを作ってた時代、識別子を日本語にしてたこともあったけど、
SQLが混じり始めるとてんでダメなったりして逆に不便を感じたので
こういった開発環境でも識別子には半角英数字以外は使わないことにしている。
まあ過去の感傷だと思うやつもいるかもしれないけどな。
日本語変数を避ける人は、MenuStripをデザイナで編集したときいちいちNameプロパティを置き換えるんかな
>>866 あげあしとってやるなよ。
明示的に自分でスレッド作りたくないってことでしょ。
>>868 それはちょっと本質的な話とは違うんでないかね
871 :
861 :2009/12/16(水) 11:50:00
ありがとうございます。 一回押しだということ利かないぐらい内部処理してるので、 長押しするとタイマーが中止する処理を作っておきました。
>>871 それなんか根本的に問題あるからヤバくないか?
インテリセンスでみげもが使えるようにならない限り、日本語識別子は入力効率が悪すぎる
>>868 普通はリソース使うから、そもそも日本語が混入したりしない
>>873 デザイナで「ファイル」ってメニューを追加すると、そのままでは
private: System::Windows::Forms::ToolStripMenuItem^ ファイルToolStripMenuItem;
ってなるんだが。
あ、
>>874 はC++/CLIでやった場合のになってたが、多分C#でも同じ
C#でもなるよ いちいち英語になおしてるけど、日本語変数名は名前考える時間が短くなっていいなあ、とは思う。
最初は File で作っておいて、あとでリソースで書き換える、ってことだろ。 MUI なアプリなら、ままある作り方。
標準項目の挿入とか使わないのか。 まあ余計なもん多くて削る作業が多いけどな。
使わないなぁ。業務アプリだと、あんなメニューあてはまらないし。
リソースで書き換えるの意味がわからん Textは日本語のまま残して(Name)書き換えるんだろ?
そもそも日本語が混入しない状況で使ってる人は答える意味が無いでしょ。 元の人は、日本語が入ったときに書き換えるか聞いてるんだから。
>>880 そっちの方がわからねよ。
Textを各国版に書き換えないといけないだろ。
Control名(Name)は当然半角英数字。
ちなみにテキストリソースを多国語化するのはめっちゃ簡単。
この辺はVisual Studio様様だわー。
他の開発環境じゃあなかなかここまではいかん。
書き換えるよ。もし、日本語が入ったら。
たしかにインテリセンスでmigemoが使えるようになったら 何の躊躇もせずに日本語変数使うわ。 国際化は正直やる必要ないときはやらんでいいと思う。
885 :
868 :2009/12/16(水) 12:29:22
回答ありがとう 書き換える人が多いみたいね 「いいや日本語なら日本語で」なんて考えてしまうオレは少数派のようだ
ニュートラルを日本語にして、リソースでタイ語対応してるウチは特殊だ(笑
日本語が通らない環境も多いから、どう乗り切るかっていう自分なりの解決策を 普段から考えておくのもプログラマーの技能の内。そういう訓練はしておいて損はない。 変数名に使えそうな英単語をたくさん知ってるとか、そういう知識も地味に役に立つ。 入力途中でいちいち考えたり悩んだりしてると思考が止まって能率が落ちる。
開発の初期段階で用語集とか作ればいいよ。
昔は辞書も手放せなかったな 途中からCD-ROMの辞書になり 今はネットで検索だ それでも名前考えるのは苦労するな。似た意味で微妙に違う単語が多いしつい同じような変数名になっちゃうし。
その辺はコーディング規約の話であって、言語の話ではないわな。
そだね。用語集は日本語だろうが英語だろうがチーム内で命名ルールがぶれないよう 普通作るもんだしな。 あと多バイト文字がとおらない環境ってのは今後なくなっていくんじゃないの?
>>887 英単語は自分で考えるより、まず.NETのソースから引っ張ってくることが多いなぁ
名前のノリも合わせておいた方が第三者が使いやすいだろうという配慮で
まあ普通にある程度の部分は.netの名前付けに準拠するよね ウチはどっかにあったマイクロソフトの名前付けとかのガイドラインを参考にしてる
エラーが発生したら、そこだけ無視して次の処理に移行できるコードを、 TryやIf文を使わずに作ることって可能ですか?
うん
896 :
894 :2009/12/16(水) 16:53:22
ありがとうございます。 今後の参考にします。
on error resume next
なんか似た役割の変数で 名前のネタがつきたときに アルファベットの後に日本語入れてるのは自分ぐらいですねそうですね
C#で 二重ループを使っているのですが、 二重ループでは遅いので、 より高速に全パターンをつぶしたいと思っています。 どのような方法がありますか?
二重ループをそれ以上速くする、なんてのは無理だろ。 ループの中でやってる処理を見直したら?
0〜99までループするのに for(i=0; i<100; i++) ってやるのと for(j=0; j<10; j++) for(i=0; i<10; i++) ってやるのと そんなたいそうな差があるとは思えんがのぅ。
常識的に考えてアルゴリズムや実装に問題があります
ループの中見直す以外はないよなぁ。 処理の内容によっちゃアルゴリズム見直しでループを途中で脱出したりできるかもしれないけど どんな処理してるかわからんことにはにんともかんとも。
904 :
899 :2009/12/16(水) 20:50:56
ありがとうございます。 無理っぽいんですね。 頑張ってループ内部処理を見直します。
for(j=0; j<10; j++) for(i=0; i<10; i++) 処理 i, j と for(i=0; i<10; i++) 処理 i, 0 : 処理 i, 9 も、大して変わらんだろうし・・・。
マシンスペック上げてみるとかどう?
何この低レベルな回答の流れ
無理っていうかfor文そのもののコストが表に出てくることなんかまずありえない ループの中の処理の方が遥かに桁違いに重い
909 :
899 :2009/12/16(水) 20:53:54
>>903 ループの処理としては、
GetPixelを使って高さ幅、共に350ピクセルの範囲の色を1ピクセル単位で取得しています。
したがって、350*350の色を取得することになり、非常に時間がかかります。
論外だ GetPixelとSetPixelは非常に遅いことで有名 LockBitsでポインタ使ってアクセスする
したがって?何がしたがってなんだ?たかが9万ちょっとがそんなに大きな数字か? 黎明期じゃあるまいし
Linqって別にvar使わないとできないわけじゃないよね?
匿名クラスを使わない限りは。
>>911 その文の「したがって」のどこが変なのだ?
したがってが掛かるのは
>350*350の色を取得することになる
であり、(その結果)非常に時間がかかります。
だろ。
なんでもかんでも見下してかかるのは良くないなぁ。
例のいちゃもん小僧だろうからスルーしてあげなさい
918 :
899 :2009/12/16(水) 21:51:41
ご回答くださった方ありがとうございます。 なんなく色を取得することができました。
>>918 もういないと思うけど、本質的にO(n^2)かかる問題なら無理
問題によってはO(n logn)にできる場合がある
アルゴリズムの勉強をしろ
今回はそんな話だったっけ?
たぶん O記法を覚えたばっかりで 使ってみたかったんだろう。とエスパー。
どんな大規模で複雑に見えるプログラムも実は単純な機能の組み合わせでしかない。 基本的な文法さえわかっていればひとつひとつゆっくりみていけばどんな長いコードも解読可能。
精神病院に帰れよ
>>926 最近PG覚えたてなんだ・・・知ったかだから許してやってくれ
前もひどかったが、スレの質が一段と下がってないか?
単純なバイト配列の処理の場合だと、 unsafeの効果は実はほとんどなかったすることもある。
unsafeとか使うやつは行け沼 クラスには使えないからね。ゴミ。
unsafeは他のプロセスにアタッチするようなときに便利だったわ
なんでC言語とC++では配列の宣言が int num[]; みたいだったのにC#では int[] num; になってるんだろうな。Cって名前ついてるわりには全然似てないよね。 まるで海賊版を出して金儲けしてる中国人だ。
int[]型というオブジェクトがあるのと int型の変数がメモリに並んでるのでは全然違うだろ 同じ記法にされたら紛らわしいわ
オブジェクトだって結局メモリになきゃいけないんだから同じだろ! C#はオブジェクトをメモリじゃない場所に配置でもしてるのか?
a.fieldと書けるか書けないかでは大差だろ
>>934 それはcharとfloatがどっちもメモリにあるから同じ物、と言ってるようなもんだぞ
中身(使い方)が違うからわざわざ区別してんのに
unsafeが制限きついのだけが残念だ。 int a[5][3][6]; int** p; とかやってなんかかなり複雑なポインタ遊びができないなんて。 実用性はともかくパズル的な遊びができて楽しかったのにな。
>>934 みたいな奴うぜえな。
知らないで逆切れとか。
アルゴリズムを考えてくれるプログラムのアルゴリズムを考えよう
>>940 「バグのないプログラム」問題ってのもあるよなw
情報工学の勉強しましょうってことですね。
デリゲートはオーバーロードみたいなことできないの? mydelegateっていうデリゲート型変数があったとして mydelegate("あいうえお"); と mydelegate("あいうえお",13); は違う動作をする、みたいな
できない
それぐらい公式読めよ
チャートコントロールを使いのですがASPフォームが作成できません。どうすれば作成できますか? 基本的なものはダウンロード済みです
WinForms用もあるだろ
C言語だと関数の引数に func(const int x)みたいにconstを書いてたけどC#はconstみたいなのないの?
ない。FAQ、ぐぐれ
目覚まし時計みたいの作りたい。 プログラムは常に時間を監視して 20時になった瞬間音を鳴らす これってどうやる? 無限ループつくってthread.sleep(1)とかやって if(DateTime.Hour=!DateTime.Now.Hour) 音を鳴らす(); みたいにやればいいの?
>>949 言っちゃ悪いけどセンスないな。
目覚ましなんかにmsオーダーの正確さなんか普通不要だから
タイマー使ってポーリングすりゃいいんだよ。
あと、そういうプログラムなら休止状態からでも自動復帰して目覚ましが鳴るように
OSのタスクスケジューラもうまく使ってね。
えっ?
Timerイベントを噛ますだけで良いような気がする
タスクスケジューラ使うんだったら待つ必要なくね
>>953 タスクスケジューラは秒単位のスケジューリングは無理。
当たり前じゃん。
だから5分前ぐらいに起動するようにしといて、後は普通にポーリングが基本。
C#はC++に比べて遅いな。 同じ方法で計算させたらC#で0.012秒かかったのがC++だと0.003秒だった。 たった0.009秒の違いしかないけどなー。ガベージコレクションが原因か?
>>955 ものによっちゃC++の9割くらいのスピード余裕で出るんだけどね。
(意外と、数値計算は早い)
class の new がやたらと多いと確かに遅くなる。
ボトルネックになるのは大概DBアクセスとかファイルアクセスとかポストバックとかで C#部分が遅くて気になることってあんま無いな。 ゲームとか何か壮大なもの作ってるの?
C#で作ってできたexeファイルは実は機械語そのままではなく、JITコンパイラとかいうのが翻訳を行ってるの? C#のJITコンパイラはどのフォルダにあるの?
>同じ方法で計算させたら どんなコードか見ないと何も言えない。 C++とかネイティブなコードと.NETのコードでは、 パフォーマンスの特性がだいぶ違うから。 ネイティブなコードに慣れたやつがC#で書くと 遅い書き方になってることも結構ある。
起動に時間がかってるっことが多いな。 実行時間を計るときに、ロジックの一部だけを測るとほぼCの9割は出るが、 起動から終了までではかると差が大きくなる。 あとメモリを食うせいかフォーム系のアプリで、 新しいフォームや暫く使ってないフォームを開くと、 ページングや再読み込みが発生して体感速度を遅くしている。
Windows Formsがうんこすぎるのは確か.
listviewで簡単なスクリーンキーボードを作ろうと思っているのですが listviewのアイテムをクリックしたときにウィンドウににフォーカスが当たらないようにするにはどうすればよいのでしょうか?
日本語が苦手なら英語でもいいよ
今日不思議なクラス設計を見た例えだけどAData.cs、AMethod.cs 継承も何もしていないしAMethodクラスの中にADataがクラス変数としているんだぜ・・・
>>963 listview easy screen keyborad create
listview item click window forcas no! ?
シリアルの受信で質問があります。 相手は16進のデータを送って来るのですが、受信側はString(文字列?)で受け取っています。 受信したStringデータを10進にしてデータを計算を加えテキスト出力したいのですがどうやればいいでしょうか? 以下ソースが現在まで出来ている部分です。出来れば以下ソースをベースに教えて下さい。 /* シリアル通信モジュール */ private void SetRecieveData(string dataString) { /* テキスト出力 */ this.textBox2.Text += (dataString + "\n"); } private delegate void RecieveDataDelegate(string recieveData); private void serial(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { string recieveData; RecieveDataDelegate recieve = new RecieveDataDelegate(SetRecieveData); try { recieveData = serialPort1.ReadLine(); /* base */ } catch (Exception ex) { recieveData = ex.Message; } Invoke(recieve, recieveData); }
送信側がどういうエンコードしてるのか知らねぇのに分かるわけねーだろ Convert.FromBase64Stringでも使っとけ
>>968 すみません。
送信側はアスキーコードを使っています。
今時アスキーって
Parse?
16進と言いつつバイナリだったりするかもしれんな
973 :
967 :2009/12/18(金) 10:41:13
皆さんレス有難う御座います。
>>971 Parses使用して解決しました。
ありがとう御座います。
だって普通にリアクションに困るじゃん
スプレッドで表作ってるんですがSortRowsやSortColumnで並び替えを行った後に ActiveCell.RowSpanやActiveCell.ColumnSpanで結合処理って出来ないんですか? どちらも並び替えを行わなければきちんと動くのですが 並び替えをした後だと反応ないし、する前だと並び替え時に解除されてしまいます。
スレ違い サポートに電話して聞け
リアクションとか置いといていいので教えてくださいorz
なんでKeyValuePair<T1, T2>は守られてるのー 継承させてよぉq( ゚д゚)pブー
Tuple使え
それもstaticで継承出来ないだろ…
自分で書いたらいいじゃん
初級者がC#を勉強するのに定評のある本といったらどんなものがありますか? レベル的には本格的ではないんですがC/C++を以前すこしかじったことがある程度です(授業で半年間 C/C++のプログラムを習い、課題を提出した程度です)。
>>966 AMethod.start(AData adata);
とかやらないと使えない
クラス変数にいれるならまだしもいれもしない
>>985 C/C++が使えるならノリでクラスとか調べながらやればできると思うよ
授業だけだったらオブジェクト指向ノータッチでしょ C#の絵本レベルじゃね
本気で半年CとC++触ったんなら、相当組めるようになるはずだけどな。 単位欲しい(ソースコピーでもいっか)>>>>プログラム覚える なんだろうな。 学生のプログラムの授業なんかなんの役にも立たないよな。と経験論。
俺はとりあえずリファレンス本買ってとりあえず書き始めたな マイコミのVisualC#2005ってやつ でいくつか動く物作って限界が見えてきたところでオライリー買って 本格的に突っ込んだ勉強始めた たぶん最初にオライリー読んだら挫折してた
990 :
985 :2009/12/18(金) 21:52:03
レスありがとうございます。 ご指摘のあったとおり授業で習ったC/C++に関しては 課題用の短いプログラムを書けるようになった程度です。 クラスに関しても基本的なつくりを学んだだけで継承とかに関しては ほとんど触れていません。 C#のプログラムを勉強するにあたりできればプログラムの流儀や 書き方の癖(いい意味で)を勉強したいと思っています。 そういうポイントやTIPSを学べるC#用の本はありますか?
そういえば、近くの図書館にO'Reillyのが2冊あったな 初めての〜とプログラミング〜
全然アプリ作った事ないけどプログラミング作法とかデザパタ の解説サイトをめぐるのが好きです
プログラム書こうぜ。
マスでも書いてろ
□□□□□□ □□□□□□ □□□□□□ □□□□□□ □□□□□□ □□□□□□
そこは黒四角にすべきだったよ
C言語やC++だとポインタで低Lvなメモリ操作できたから スタックやヒプといった概念が重要だったけど C#だとガーベジでメモリはプログラマが管理できないしポインタもunsafeじゃないと使えないから スタックやヒープといった重要じゃないんだろうか。
構造体を有効活用するには必要 その辺の知識が無いなら常にクラスを使うべき
どっちにしても重要だよ。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。