ふらっとVisual C#,C♯,C#(初心者用) Part100
2 :
デフォルトの名無しさん :2012/12/02(日) 17:36:07.63
class hoge { static void Main() { string text = @"C:hoge.txt"; Encoding e = Encoding.GetEncoding("shift_jis"); string[] l = File.ReadAllLines(text, e); int i = 0; while(l[i]!=null){ Console.WriteLine(l[i]); i++; } } } インデクッスが配列の境界外のエラーがでてしまいます どうすればよろしいでしょうか?
>>2 foreach 使わんのかい、あとデバッガ使ってみるといい。
File.ReadAllLines() の仕様に最後にnullを入れるってあったかな?
l[i] != null はl[i]にnullが入ってるかチェックしてるんで、l[i]そのものがnullかを見てるわけじゃないぜ。
l.Length > i とかでどうかね。
whileでなく、forで l.Length分回すか、foreachで回すか
5 :
デフォルトの名無しさん :2012/12/02(日) 17:45:01.12
うっ、このクソスレもついに100を数えたか
糞スレの始まりにふさわしいクソみたいな質問だった
以上、糞の排泄終わり
次スレ発見
糞スレ発見
HSVカラーをRGBに変換するのって、フレームワークにないよね? 自分でファンクション書かなきゃだめですよね? もしかして、どっか奥深くにあったりしないよね?
ない んなもんネットにいくらでも転がってるだろ
HSVなんて書き捨てで十分なレベルの難易度だから
えぇ〜 DirectX11だとか3Dヌルヌルな時代なもんで、今時グラフィックボードに投げたら 処理してくれるもんだとか勝手に思ってた・・・
そういうのってプログラマがどんだけ大変なことやらされてるのか知らんのか GPUにやらせることはできるけど、 Cとアセンブラの中間みたいな変な言語でシェーダ書くんだよ
まだ動画含む画像処理で絶対使うYCbCrの方が需要あると思う
フォトショップライクなペイントツール作ったときには自分で作ったわ
ソリューションエクスプローラでは、 □アプリケーション名 >Properties >>Settings.settings >>>Setiings.Desinger.cs となっており、C:\Users\pc1\Desktop\アプリケーション名\Properties\Settings.settingsにSettingsファイルがあるんですが、 Properties.Settings.Default.〜 とかいうコードを書いたとき、 C:\Users\ユーザー名\AppData\Local\アプリケーション名\アプリケーション名.vshost.exe_StrongName_なんかハッシュっぽいやつ\1.0.0.0\user.config に値が書かれてしまうようです。 C:\Users\pc1\Desktop\アプリケーション名\Properties\Settings.settingsに値を書かせる方法はないんでしょうか?
色を変換するくらいシェーダで書いてもそんなに難しくないわよう
dobonのコピペでなんか書いてるからこういう頓珍漢なレベルの初心者を生み出すんかな どこで覚えてきたんだか知らんけどSettings触るには早すぎるんじゃないですかね たぶん何言っても理解できないと思う
覚えてきてねーからこんな意味不明な質問してんだろ
>>18 標準では無い Program Filesとかにexeがあったらどうしようもないからな
デスクトップに設定撒き散らしたら速攻アンインストールするわ
起動した瞬間意味不明な場所に意味不明なファイル作ってくれるから安心しろ
>>19 それだけシェーダで書いてもしょうがないじゃん
やりだすと図形や文字の描画とかGUIとか全部フルスクラッチで実装することになるぞ
26 :
18 :2012/12/03(月) 12:23:52.95
ありがとうございます とりあえずデスクトップにソリューションを置いて開発しているんですが、 確かにインストールさせたら、ユーザー名の下にあるべきですね ただ、ソリューションエクスプローラーにあるSettingsはVisual Studioから生成したんですが、これが参照されないんだったら、なんでこのパス(この場合Desktop)に生成されるんでしょうか?
プロジェクト内のファイル構成とインストール時の構成は別 ビルドしたらcsファイルとかresxファイルとか無くなるだろ? それがおかしいと思うのか?
アプリケーション設定はアプリケーション構成ファイルapp.configの中に情報が格納される 設定のうちスコープがユーザーのものについては後から保存可能だが 後から保存したものについては%LocalAppData%以下に保存される で、アプリ起動時に、まず%LocalAppData%に指定したデータが存在するかどうか確認して、 存在していればそれを、していなければ既定のapp.config、 つまりexeの横に転がってるexe.configの中から取ってくる
29 :
18 :2012/12/03(月) 12:53:51.04
詳しく説明ありがとうございました 勉強不足でした
早く国内でWin8スマフォ出してくれよ!! もうJavaでAndroidアプリ作るのはウンザリなんだよおおお!!!
Win8じゃなくてWP8の間違いでした、すまん
やっぱりオマイラくらいになると Winストアアプリで副収入200万円くらいになってるわけ?
「新しいプロジェクト」でプロジェクトを作成して 2時間ほど作業したときにVisual C#自体が予期せぬエラーで終了したんですが、 こんな時に限って一回も保存してませんでした。 やっぱりこれは一からやり直しでしょうか…?
2010から痕跡残さなくなったよね、どっかにあるんじゃないかなあ。
一度でも実行してりゃ、そこまでのが保存されてるんだけどなぁ
2010だけどエラー落ちすると復元のダイアログ出るよ
>>36 あ、デバッグでの実行はしてます。
>>37 2010 Expressですが、
復元のダイアログはでませんでした。
39 :
34 :2012/12/03(月) 17:33:37.53
>>33 Monoのほうが効率よくAndroアプリ作れるんけ?
MonoならC#でそのまま出来るってことだろ iOSアプリも作れるし
42 :
デフォルトの名無しさん :2012/12/04(火) 10:20:35.67
PowerShell 3.0のコマンドレットをC#で作る方法について説明しているサイトありませんか?
43 :
デフォルトの名無しさん :2012/12/04(火) 10:22:36.34
>>40 通常、Android OSのアップデートとDalvik仮想マシンのアップデートはイコールであり、Android端末によっては
製造メーカーの放置プレイにより最新のAPIが利用できない、また製造メーカーがアップデートを提供しても
ユーザーの放置により同一端末で複数バージョンのOSが存在し、それぞれの挙動が異なるなどの問題を抱えて
いることがある。
また一部の機種において、特定のAPIの挙動が異なる、イベント発生タイミングやイベント発生順序が異なるなどの
問題も抱えている。
一方、Mono仮想マシンはアプリと同梱されて配布されるため、Mono仮想マシンを半ば強制的にアップデート
できるようになっている。つまりOSとアプリをセット配布しているようなものであり、Androidのアプリ互換性問題を
大幅に軽減でき、かつアップデートしていない端末でも最新APIが叩けたりする。
ただしMono for Androidはメリットばかりではなく、アプリのサイズが桁違いに超巨大化するというデメリットもある。
たとえば単純な「Hello World」ですら4MBを超えるapkファイルとなる。 また、アプリの起動には仮想OSの起動も
伴うため、アプリの立ち上がりに時間がかかるという問題もある。この起動時間の問題については
Mono for Androidの最新バージョンで大幅に改善されつつある。
※ベータ版まではMono仮想マシンは単体アプリとして配布する形式だったが、製品版ではアプリの互換性の
向上のためにアプリと同梱されるようになった。また開発環境(デバッグ版)では起動速度の高速化のために
共有仮想マシンを使うようになっている。
http://monobook.org/wiki/Mono_for_Android
44 :
デフォルトの名無しさん :2012/12/04(火) 10:34:01.75
それ操作してる人のツールの習熟度の比較表みたいだなw まあVSはどうやってもああなるけど。
とあるDateTimeデータdtがありまして、 その時間と、現時刻との間に、特定の時刻(例えば正午12:00)が挟まっているか という判定をしたいのですが、どのように判定させたらよいかわからないので、 すみませんがお教えください。 特定の時間が何回挟まったかという判定はしません。 例 dt:12月1日11:00 現時刻 12月1日13:00 → true dt:12月1日11:00 現時刻 12月2日1:00 → true dt:12月1日6:00 現時刻 12月1日11:00 → false dt:12月1日13:00 現時刻 12月2日11:00 →false というような感じです。
日と時間を取り出せばいいんちゃう?
dtより大きい特定の時刻、の日時が出ればいいわけだよね
49 :
46 :2012/12/04(火) 15:46:51.71
説明が足りなくてすみません dtは過去の時刻になります。 なので、過去の時刻dtから現時刻の間に12:00が入ったか、 を判定したいと思っています。
static bool Hantei( DateTime dt ) { DateTime dtNoon = dt.Date.AddHours( 12 ); if( dtNoon > dt ) { return dtNoon < DateTime.Now; } else { return dtNoon.AddDays( 1 ) < DateTime.Now; } } 知らんけど
ぐは bool Hantei( DateTime dt ) { DateTime dtNoon = dt.Date.AddHours( 12 ); if( dtNoon > dt ) { return dtNoon < DateTime.Now; } else { return dtNoon.AddDays( 1 ) < DateTime.Now; } }
52 :
46 :2012/12/04(火) 17:52:42.42
>>51 ありがとうございました!
参考にさせてもらって、無事プログラム組むことができました。
12:00の設定の方法に特に悩んでましたので
参考になりました。
54 :
デフォルトの名無しさん :2012/12/05(水) 09:24:00.53
NPOI2.0でxlsxの編集(Genrate)のサンプル動かした人いる? なんか作成されるファイルが壊れて開けないんだが
試してみたけど開けるぞ、、test.xlsだよね?
またワケのわからん略語か
58 :
デフォルトの名無しさん :2012/12/05(水) 14:49:41.51
>55 hello.xlsxを編集して作るtest.xlsx 「xls」ではなく「xlsx」の方(xssf)の方なんだけど開けた? 自分の環境だとファイルは作られるけど開けないんだよね なんか環境かなぁ。。。。
>>58 xlsxのほうかごめん。
たしかに開けないね。
何も操作しないで書いたtext.xlsxと、元のhello.xlsxとを比較すると
わかるかもね、どっちもzipに直せば展開できるし。
60 :
デフォルトの名無しさん :2012/12/05(水) 15:24:36.15
>59 サンクス。 中身のxmlの解析まではしたくないなぁ。。。 まだNPOI2.0を使うのは時期尚早ってことなのかね。 closedXMLに逃げるかなぁ。 そうすると「xls」が使えないんだよなぁ
フォームのボタンを押したら実行されるスレッドで実行中もフォームの操作ができるようにしたいのですがどうやってやればいいですか? 実行に際して引数を渡したいですが、public変数を使うとかっこ悪いのでちゃんとした方法でやりたいです。
form.Invoke(()=>{ Hoge(local); }); こんなかんじでUIのスレッドにローカル変数渡せるでしょう
デリゲートに引数わたせんでしょ
引数渡せるしクロージャでダメな理由も見当たらない
65 :
デフォルトの名無しさん :2012/12/06(木) 07:20:36.58
でもそのやり方は王道ではないよね
ならば覇道を歩めばよい
67 :
デフォルトの名無しさん :2012/12/06(木) 09:21:04.37
プログラムなんぞ動けばよかろうなのだ
スレッドに引数渡したいけど、public変数使いたくないって意味がわかんない
わかんなくはないでしょ ロックとか考えなくちゃいけなくなって面倒くさい
別フォーム起動しちゃったら?
馬鹿はすっこんでろ
コロンブス現るw
ちょっと何いってるかわからないw スレッドの話なのに別フォームって基本的にUIスレッドひとつしかないっての…
BitmapでAddすればいいよ
OS起動しちゃったら?
まあ別アプリ開いちゃうってのは蟻だな
蟻なのか? 同期とったりデータ渡したり面倒そうだけど… IPCとか使って同期オブジェクト作ってやればできるけど。
別アプリの中で全部やらせて同期取ればいいんじゃね? だって元フォームの操作したんでしょ?
ねーよ
フォーム二重起動しちゃえばいいのに
やめろやめろ ムチャクチャなことを言うな
他人のPCにタスク投げちゃう
クロージャ渡しは王道だよ 必要ない情報をクロージャ内に隠すことで依存性の発生を避ける事が出来る
C#のイベントってVisualStudioで選べるものだけなのですか? 自分で作ったりできないのですか?
既存のコントロールにイベントを追加したい場合は そのクラスを継承してください
なんでIList<T>にはForEach#があるのに ?IEnumerable <T>??にはないの?おせーてくだしあ
IList<T>にForEachなんてメンバは存在しないが?
エクスプローラでファイルを右クリック⇒プロパティした時のウィンドウを C#から直接呼び出すことは出来ませんか?
直接は無理 ShellExecuteExでぐぐれ
拡張メソッドで作ればいいじゃん。ForEachぐらい
>>86 ForEachで使うのはIEnumerableのGetEnumeratorで返される
IEnumeratorのオブジェクトだから
列挙可能(IEnumerable)と列挙子(IEnumerator)は別ね
>>91 意味不明すぎる
IEnumerable<T>とIList<T>は両方IEnumerableだから何の理由にもなってない
疑問そのものに答えたわけじゃなかったんだけど、うまく伝わらなかったか しかし読み返したらそういう風にみえるな IEnumerableそのものがForEacheしてるわけじゃないよ ということを言いたかっただけ
もしかして:foreach
IEnumerableを実装したクラスは、GetEnumeratorメソッドで IEnumerator を返すという決まりになっている。 つまり、IEnumerableってのは、その型が列挙可能であることを示す。 IEnumeratorは、イテレータパターンで使うために必要なものを返す。
はぁ
ForEachって、C#2.0で匿名メソッドが追加されたときにこんなに便利ですよ という宣伝のためのサンプルコードを書くためだけに追加されたようなもんだよ 3.0以降では副作用をはっきり区別するためにforeach推奨になって要らなくなった子 WinRTでは削除されてる
ForEachはvoid型だから必ず単独のステートメントになる インラインで書けないのでコーディング上のメリットがない
で結局 ForEachメソッドはどこで定義されてるの?
副作用とかあったけ?
ごめん勘違いしてたわ ForEachメソッドの話だったのね List<T>だよ。
列挙は普通は副作用あるだろう ループ変数を書き換えたりしなきゃいけないからな
プログラムカウンタが変わるのも副作用とか言い出しそう
インクリメントをなくすために単連結リストをカーとかクダーとかしてる人もいるんですよ
ループ変数ごときで副作用とかいってる奴の存在が副作用だろw
ForEachメソッドってインターフェースに定義あるとか、拡張メソッドだとかじゃなくて 各クラスが勝手に実装してるだけってことか
public void ForEach( Action<T> action );
ForEachに副作用があるんじゃなくて 多くの場合副作用を起こす処理をすることになるからだよ だから関数型を強く意識したEnumerableクラスにはForEachは無い
>>85 84です
ありがとう
継承って・・・勉強してみます
var texts = new[] { "A", "B", "C", "X", "D", }; for (int i = 0; i < texts.Count(); i++) { if (texts[i] == "X") { break; } Console.WriteLine(string.Format("{0}番目の要素は{1}", i, texts[i])); } ↓ こうしたらいかんのか? texts.TakeWhile(foo => foo != "X").Select((foo, bar) => Tuple.Create(foo, bar)).ToList().ForEach(foo => Console.WriteLine(string.Format("{0}番目の要素は{1}", foo.Item2, foo.Item1)));
>>109 public ButtonEx : Button{
public void OnCall(){
if( this.Call != null )
this.Call( this , EventArgs.Empty );
}
public event EventHandler Call;
}
こんな感じでイベント作れる。
あとはググったりしてくれ。
>>110 ToListしたら遅延実行の意味がなくなる。
あとC#でTupleとか使うな。Item2とか暗号かよ。
>>110 の場合は匿名型を使うべき
Tupleまじやめて
>>110 Tuple.Createじゃなくてstringを直接作ればいいし、Console.WriteLineには書式を渡せるから
LINQ厨ごっこならstring.JoinとかMax(foo=>{…;return 0;});でいいんじゃない?
ToList().ForEachはポイント低いよ
TupleってF#やF#と他の言語の相互運用のために用意されてるだけだよ タプルは複数の戻り値として name, age = FindPerson(); のようにして使うもので C#ではこうやって変数名付けられないから読めないコードのできあがり 仮に複数戻り値が使えたとしても静的型の恩恵はほとんど無くなるしな
ToListよりもそのあと追加とか削除が不要なら ToArrayのほうがよくないか?
>>116 ToArrayはサイズ調整のためにバッファに貯めた後にまた別の配列にコピーしないといけないから
バッファ一つで済むToListの方が軽いはずじゃね
どちらにしろToList().ForEachはアホだけど
虚しいとき〜! コントロールコレクション作ったのに0番目にしかアクセスしないとき〜
EnumerableにもToArrayにもForEachはないじゃない だからToListするって言う陳腐な例を出してみました あとTupleってオブジェクトが短命で 命名のコストを払うのが馬鹿馬鹿しいときにうってつけだから 1行の匿名関数ないでしか生きられないLINQの変数を纏めるときにこうやって使うものだと思っていた 短命なデータを纏めるだけに匿名型で命名するは冗長じゃありませんか?
可読性という観点が欠落している C#がもしPythonのようなタプルをサポートしていて foreach (var foo, index in texts.TakeWhile(foo => foo != "X").Select((foo, index) => foo, index) { Console.WriteLine(string.Format("{0}番目の要素は{1}", index, foo)); } このように書けるんならまあ(これでも型がいい加減になるから短命なら)アリだがItem1やItem2はありえない 特殊変数かよ
完全に切り離したクラスにまとめて引数送るときに重宝してるわ
イヤな匂いがする
馬鹿とハサミは使いようって言うしな おまえら高いところ好きだろ?
トイレ以外離れたくないほど部屋がすきなんだよ
5個のradioButtonがあってチェックされてるものがどれなのかで処理を分けたいのですが if文を4個書いてチェックがtrueだったら処理をしてgotoなどで下に飛ぶ(残りのifを処理せずに)という コードを書いてみたのですが、こういう処理でもっといいかきかたがあったら教えて頂きたいです。
>>126 結局ベタに書くのが正解。
Checkedイベントを拾ってその時点でどのラジオボタンがチェックされているかを
整数値に変換しておくとか方法は考えられるが、期待するほど簡潔にも分かりやすくもならない。
すまんCheckedChangedね
>>126 ・配列に格納する
・コントロールのコレクションを使う。
こうかな? var foo = new Dictionary<RadioButton, Action> { { this.radioButton1, () => { } }, { this.radioButton2, () => { } }, }; this.panel.Controls.Cast<RadioButton>().Where(radio => radio.Checked).ToList().ForEach(radio => foo[radio]());
ぎゃああああああああああああああああああ
どうにかしてToListしなくちゃいけない病かよw var foo = new Dictionary<RadioButton, Action> { { this.radioButton1, () => { } }, { this.radioButton2, () => { } }, }; ここまでしてるなら foo.First(f => f.Key.Checked).Value(); でいいじゃん
糞コードは誰の目にも触れないよう焼き捨てるべき
参考のためにウンコードにうpしておくべき。
Debug.WriteLine(string.Format("foo {0}", bar)); // string bar = "bar" というようなコードがあって、当然ながら "foo bar" と出力されるんですが、 先日ReSharperを入れてみたら、このコードは Redundant 'String.Format()' call だと怒られてしまいました。 string.Formatはいらないのかなと思って Debug.WriteLine("foo {0}", bar); にしてみたら、 なぜか出力が "bar: {0} foo" になってしまいました。警告の解決方法が分からないので教えて下さい。
>>136 指摘はstringとStringのことじゃなの?
だがコントロールのイベント実装はEventsプロパティを使うべきだな
>>136 細かいこと気にするなら引数にカルチャを指定しないString.FormatやToStringは非推奨。
FxCopで警告が出たはず。
>>136 の警告とは別の問題だと思うが、細かいコーディングスタイルなんかよりは
FxCopが出すような警告の方が大事だと思うよ。
141 :
デフォルトの名無しさん :2012/12/09(日) 13:52:30.90
VS2010で複数のソリューションを一括でビルドする方法を教えて下さい バッチでもなんでもいいので。
全部ビルドするようなメイクファイルプロジェクト作るだけじゃないんすか
複数のソリューション内のプロジェクトをすべてまとめたソリューションを作ればいいんじゃないの?
144 :
デフォルトの名無しさん :2012/12/09(日) 13:58:55.84
何かフルボッコにあったのだが 上の回答だとラジオボタンじゃなくて、チェックボックスだと困らないか? 結局ifを並べるのが正解なの? 自分の師匠は 「LINQってのはSQLみたいにデータを抽出するためだけのものではなく、 従来は、順次・分岐・反復を縦に長いコードで書いていたが、 これからはこれをメソッドで連結して、横に長いコードにするのがトレンド。 60年以上続いた構造化プログラミングに終止符を打つものだ」って言ったよ C#の構文木やXMLみメソッドチェインになったし 俺は騙されていたのか!!
それは初心者以前です。 Visual Studioを使う資格がありません。
バッチで十分 msbuild "ソリューション1のパス" msbuild "ソリューション2のパス" これを並べるだけ msbuildにパスが通ってなければググれ
>>145 トレンドって言葉使ってるのか
なぜ横に並べるのがいいのか理解してるか怪しいなその師匠
その師匠の中では”トレンド”止まりなんだろうな
149 :
デフォルトの名無しさん :2012/12/09(日) 14:02:30.89
>>147 ありがとうございます。ググってやってみます
>>145 今のC#は関数型と手続型のちゃんぽん言語なので、
関数型で書くべき部分(データの抽出・変換)は副作用のないLINQで書いて
手続型で書くべき部分(上で抽出したデータの消費、つまりforeachなど)はCっぽく書くのがよい
>>145 Linqには、いろいろあるがLinq to Objectは、集合(コレクション)に対して
ああして、こうして、これとこれをこうして・・・みたいな感じだと思ってる。
わらわら湧いてきおって
154 :
デフォルトの名無しさん :2012/12/09(日) 14:21:07.07
9つの値があって、ソートしたときに5番目の値を選びたいのですが Listを使わずにやる方法ってないでしょうか?
values.OrderBy(x => x).Skip(4).First()
魔法の言葉っすか
>>156 わざわざSkipせんでもElementAtでいいよ
(x => x)減らせないの?
「基本的には寝ているけど、キューにActionが来れば1つずつ処理していくサブスレッド」 みたいなのを実現するクラスはありますか? 名前的にThreadPool.QueueUserWorkItemかなと思ったんですが、 別々のスレッドで並列で実行されてしまうようです。
>>160 queue = new BlockingCollection<Action>();
while (!queue.IsCompleted) {
var action = queue.Take(); // 空なら新しく追加されるまでブロックしてくれる
action();
}
これをバックグラウンドスレッドで実行しておいて、queueにAddしていけばいいだけ
終了させたいときにはqueue.CompleteAdding();ね
VS起動するつもりでついついJane起動しちまう
Array.Sortなんてあったの知らなかった ごめんちゃい
Parallelが神すぎる 使いどころはまればネイティブなんておよびじゃねー
ネイティブではOpenMPで似たようなことができるが 変な言語拡張なしでライブラリレベルでここまで見通し良く書けるのはすばらしい
167 :
デフォルトの名無しさん :2012/12/09(日) 16:18:06.39
大量の文字列(数千行)を描画して、その内、指定範囲内のみ表示し、 表示されている部分以外は処理を行わなず、上下にスクロールして表示領域を変更できる というものを、既存のコントロール(System.Windows.Forms系)を使用せずに実装したいのですが、どのような 手法をとればよいのでしょうか?また、これらの情報をWeb上で検索する場合 どのようなキーワードが適しているのでしょうか?
UserControl継承してGDI+で描画するとかか?
169 :
デフォルトの名無しさん :2012/12/09(日) 16:27:31.93
クリッピング領域?
170 :
166 :2012/12/09(日) 16:29:03.71
あっ・・・すいません。 ここは「Visual」C#のスレでしたね・・・ 質問はPlayStationMobileStudio(monodevelop)の内容でした・・・
まず書き込む前にいろいろ見直せ レス番も違うぞ
>>167 たった数千行なら何も考えずに全部描画しても恐らく問題ないと思うけど
173 :
167 :2012/12/09(日) 16:47:30.51
すいませんでした・・・
指定範囲内のみ表示だと再描画時の処理が増えてスクロールが重くなるよ
全部描画だと拡大縮小が重くなるけどな
スクロールのたびに画像作り直すよかましだろ
ワールド変換行列
テキストのこといってんじゃねーの
179 :
167 :2012/12/09(日) 17:03:37.29
ええ・・・仰るとおり指定範囲プラスアルファの描画が必要なのかなあ?と考えてました・・・
>>172 前述の環境ですので、描画できる範囲が狭いんです
>>179 だから、もちろん座標系の変換はワールド変換等を使って行ってやる必要はあるけど、
ユーザーコードの側でクリッピングを考える必要は恐らくないよ。
表示範囲外への描画はGDI+が適当に握りつぶすからパフォーマンスはそんなに心配しなくても大丈夫。
自分でやってることが理解できてねーのに用意されてるもん使いたくねーとか馬鹿じゃねーの
スクロールはぬるぬるじゃないとだめ?
ってかDataGridViewコントロールでデータバインディングさせてやれば、 勝手に必要な部分(表示部分)だけ描画してくれるだろ?
まんこはぬるぬるじゃないとだめ
185 :
167 :2012/12/09(日) 18:08:54.65
みなさんありがとうございました。 参考にさせていただきます。
タイマーのtickイベントのintervalを100(0.1秒)にすると、ダブルクリックが無効になるのですが、この対処法あれば教えてください エクスプローラのフォルダをダブルクリックで開けなくなったりします 恐らく最初のクリックと次のクリックの間にtickイベントが走ってフォーカスか何かが移るのが原因だと思うのですが… tickイベントに何も処理を書いていなくてもこうなります intervalの間隔を長くするのはNGでお願いします
タイマーじゃなくてスレッドを使えばいいよ
そのタイマーで何をやっているんだ? フォーカスが移るのが問題ってことまでわかってるなら移らないようにすればいいと思う。
189 :
デフォルトの名無しさん :2012/12/09(日) 20:08:03.60
.NET4.5にEntity Framework5の環境でSQL Server Compact4の更新について質問です。 TransactionScopeを利用して2つのテーブルを更新したいのですが・・ 2つめのテーブルの取得クエリを呼ぶと「接続オブジェクトをトランザクション スコープに参加させることができません。」と例外がでます。 どのようにすればよろしいのでしょうか。 今こんな感じにしています。 using (var tr = new TransactionScope()) using (var context = new HogeEntities()) { var r1 = (from x in context.TableA select x).Single(); r1.Hoge = 100; var r2 = (from x in context.TableB select x).Single(); //ここで例外(レコードは有り r2.Piyo = "Z"; context.SaveChanges(); tr.Complete(); }
>>189 context.SaveChanges()の処理中は自動的に
トランザクションが適用されるから
このケースの場合TransactionScopeは不要。
ほにゃららインターフェース型の値を返すメソッドというのは、 ほにゃららインターフェースを実装してるクラスのインスタンスへの 参照を返すメソッドってことでおk?
なんで今そんなこと聞くのよ?!
クラスじゃなくて値型の可能性もある
構造体の可能性もあるけど返ってくるのは常にオブジェクト参照だよ 値型はボックス化しないとインターフェイスにキャストできない
インターフェースなんて クラスとか構造体とかに別の型名を付けてるようなものだ。
???????????????
>>150 これって本当にそうなの?そういう潮流なの?
foreachよりToArrayの方が多く使うぐらいだわ
単純に見づれえから130にはしないというだけの話
ForEachはforeachがあるから要らないって事だろう 副作用がどうとかはただの妄想
>>201 Linqで射影とかした結果に対して一連の処理するときとか
いちいち変数作ったり配列作ったりせず、直結して書けるから楽だと思うんだけどな。
まあ好みの問題だけど。
個人的には変換・抽出と消費は分けた方が綺麗だと思う
foreach(var a in hoge.Select(func)){ ... } でいいじゃない
動的型の言語ならやるけどC#だと野暮ったすぎてパスだな 普通に書いた方が見通しいい
野暮ったいってそれだけで注意力を損なうから結構大事よ。
207 :
デフォルトの名無しさん :2012/12/10(月) 08:06:20.79
IContainerインターフェイスを実装したクラスを作ってうんぬん みたいなことをしなければならないとき 皆さんは一切何も見ずに記憶だけでささっと作れちゃうもんなんですか? IComponentとかいろいろ絡んでくるじゃないですか こういう風に考えれば全然難しく考えなくていいいみたいな視点というか、 理解の仕方とかがあれば教えてください。
何を悩んでいるのかわからないけど インターフェイスの実装はVSで class HogeContainer : IContainer { ... } の「IContainer」のところにマウスカーソルあててメニューだせば自動でテンプレ追加してくれるし あとインターフェイスは抽象化されてるからインターフェイスなんだから 上っ面(シグニチャの合ってるメソッドが揃ってるか)だけ考えときゃいいんじゃない
IContainerなんて実装したいと思ったこともなかったわ
IComponentとかIContainerとかってWinFormsのデザイナに張り付けられるコンポーネント作るやつだろ そんなもん熟練者が商用コンポーネント作るんでなければ要らん
既存のcsvファイルで、1列目だけに、全行データを追記するには、どうしたら良いですか?
全く意味が分からない 一列目だけ更新したいってこと? 無理だから全部書き直し 幅が完全に固定されているならシークしながらとびとびに書き込めないこともないが サロゲートペアとか考え出すと泥沼
質問の下手な初心者は上達しないと常々思っている。
改行を消せばおk じゃーダメなんか?
質問の内容から経験で推測できない奴は質問者のレベルにすら達していないと常々思っている。
どうでもいいけど寒い ストーブはあるんだが灯油がない 近くにスタンドはあるんだがお金がない そんな俺東北 マジで凍死するかも
へーそう 今後は思うだけで書かない方がいいよ
へーそう 今後は思うだけで書かない方がいいよ
スレチもスルーできない馬鹿もゴキブリ以下だと常々思っている。
へーそう 今後は思うだけで書かない方がいいよ
tp:://d.hatena.ne.jp/okazuki/20110309/1299683215 ↑ のページを参照して国際化対応をやっているのですが、 上のページの「Resources.resx」にて作られるクラスのコンストラクタがinternalになってしまうので、 コンパイルエラーが発生してしまいます。 手動でコンストラクタを public にすると一時的にコンパイルエラーが解決するのですが、恒久的な解決策になっていません。 すいませんが、国際化対応を行うにはどうしたら良いか、正しい方法を教えてくれないでしょうか。 その方法がない場合は、resxで作られるクラスのコンストラクタをpublicにする方法を教えてください。 おしえてくださいえろいひと
しかし寒いな マジで凍死するかも そんな俺九州
せめて沖縄にしとけよ
>>222 リンク先読んでないけど
Resources.resx
Resources.ja.resx
Resources.en.resx
Resources.ar.resx
みたいにするとサテライトアセンブリつくってくれるんじゃね?
へーそう 今後は思うだけで書かない方がいいよ
へーそう 今後は思うだけで書かない方がいいよ
うそーへ よいいが方いなか書でけだう思は後今
ない寒しかし
何この糞スレ存在する意味あるのかよ
お前よりはあるんじゃね
>>225 サテライトアセンブリ・・・というのは
このコードはツールによって生成されました。ランタイムバージョンry
とかいう、ソースコードのことでしょうか?
だとすると、それは作られています。
そのコードに記述されたクラスのコンストラクタがinternal になってしまうんです。
それをpublicにしたいんです。
へーそう 今後は思うだけで書かない方がいいよ
しかし寒いな
>>232 〜のことでしょうかじゃねーよ
ぐぐれよハゲ
何やりたいのかすら書いてないから分からないけど
その裏ワザてきなローカライゼーションじゃなくて
用意されたローカライゼーションは試したのかよハゲまくり野郎が
236 :
デフォルトの名無しさん :2012/12/10(月) 17:29:24.74
コンソールアプリケーションをPowerShellのcmdletへ移行できるか試しているのですが、app.configが反映されません。 どのようにすればいいのでしょうか?
反映するようにすればいいのです
アプリケーションを作りたいのですが、作れません。 どのようにすればいいのでしょうか?
質問の下手な初心者は上達しないと常々思っている。
質問の上手な初心者は質問する前に自己解決できてしまうと常々思っている。 なぜなら、どのように質問すれば上手く伝わるのかを考える時点で答えが出てしまうから。
アプリケーションを作ります
この猿真似はWin32APIスレの芸風
うーむ。 暇だからwin8のデスクトップでタートルグラフィックスを書いてたら、 間を開けた動的な描画イベント来なくて小一時間悩んだわ。 結局Timerクラス起動して無理やりイベントループ回したけど、なんかダサイわ。 こういうのってなんか対策有る?
244 :
243 :2012/12/10(月) 22:26:13.06
あー、Winformね。
「間を開けた動的な描画イベント」が何を言っているのか意味が分からない。 なんか根本的に勘違いしてるんじゃないの? 何かの図形を一度にではなく少しずつ描画したいのなら、図形を更新したいタイミングで クライアント領域を無効化してやるのが普通だと思うけど。
>>245 this.invalidate(false)でフォームを無効化して描画待ちしてたんだけど、なんか描画されなかった。
パフォーマンス見るためにタスクマネージャー起動したらそのタイミングで書き換えが起こったりわけわかめだった。
なんか、イベントループ回ってないっぽいんだよね。ウィンドウの上でカーソル動かしたら描画されたりしたし。
だから、タイマー突っ込んで回したんだ。
タートルグラフィックスって何かと思ったら木の枝みたいなのがかかれていくやつか 描いてる最中も経過をリアルタイムで表示したいのか それとも描き終わるまでは特に表示がなくてもいいのかで 表示の仕方変わるよね
248 :
212 :2012/12/10(月) 22:58:56.89
既存のcsvファイルを一行ずつ読み、その文字列の先頭にデータを連結し、 一行ずつ読み込んだ文字列の長さが0の時はスキップで、 最後に、上書き保存することで出来ました。
>>247 それを制御できるコマンドを追加したんだ。
あー、そうだ。
ちなみに
>>249 はバグってる可能性が高いので、転用は厳禁だよ。
やるんだったら、自己責任でお願いね。
251 :
247 :2012/12/10(月) 23:18:11.96
色を一色しか使わないのならGraphicPathにLineなどを 追加していけばいいんじゃないかな? DrawPathで描画すれば履歴にあたる部分を自分で書かなくても .net内部で最適化された機能でPathを描いてくれるよ
>>251 一応、機能としては色変更入ってるけど、いらないかなー。むー。
GraphicPathは使ったこと無いのでちょっと試してみようかな。
>>249 君のコードがバグってるだけ。
ループの回ってる間は描画実行されないの当たり前じゃん。
根本的にコードの書き方を考え直したほうがいいような...
しかし、まだこういうメインループでグルグルみたいな発想する人いるんだね。
>>253 しばらく書いてなかったのもあるんだけど、何が悪いのかさっぱりわからん。
個人的には、メッセージループのキューがある程度溜らないと実行されないんじゃないかと思ったんだけど。
ちがうのか。。。 さてどうしようかな・・・。ま、暇つぶしにはなったかな。
Application.DoEvents(); 入れればいいだけじゃね?
>>255 どこに入れればいいのかな?invalidateの直後だと効果なかった。
257 :
デフォルトの名無しさん :2012/12/11(火) 00:40:01.64
なんか色々とデータ型があるけど ややこしいので全部Object型にしちゃえば良いですよね。
バカ?
なるほど、var化ってことですね?
そうですね
アホなの?
262 :
デフォルトの名無しさん :2012/12/11(火) 13:51:58.31
TextChangingイベント内で現在の入力中のテキストを見るにはどうすればいいですか?
さあ
>入力中のテキスト これってIMEで入力中の文字の話?
265 :
262 :2012/12/11(火) 14:07:14.80
そうです TextBox.Textでは入力された文字列しか取れません
IMEをONにしてるときはtextBoxなどの付近で入力中の 文字が表示されてるけどIME側で決定が行われるまではIMEの管理だから IMEから情報もらうしかないんじゃないかな? textBoxにも多少IMEを操作するメソッドはあったはずだが IMEが持ってる文字まで取れたっけ?
何かアプリ作り終わるたびに、こんな作り方で良かったのか?って思うんだけど どうやるのがよいやり方なんだろう? 1:全体像をしっかり調査して、単体機能を右から左へキッチリ作っていく 2:動けばよいレベルで全機能を網羅したプロトタイプを作って、それをイジリ倒してから、ちゃんと作る 3:機能空っぽの枠だけ作って、必要な機能が必要になったタイミングで肉付けしていく 4:その他 自分の経験則だと意外に2が最短のコストで出来ることが多いけど、どうですかね?
時刻の差を求めたいのですが、方法がわからず悩んでおります。 AとBいう文字列変数に、 それぞれ12:30、16:00という文字列が入っているとします。 B-Aで3:30、最終的には分に直して210という値を取得したいのですが、 どのように求めたら良いのでしょうか。
269 :
262 :2012/12/11(火) 14:25:01.60
>>266 標準じゃあ無理なんですね・・・
諦めます
ありがとうございました
>>268 時間と分を分離 → 数値へ変換 → 単位の修正 → 計算 → 文字列へ変換 → 表示
>>268 string s1 = "12:30";
string s2 = "16:00";
DateTime d1 = DateTime.Parse("0001/01/01 " + s1);
DateTime d2 = DateTime.Parse("0001/01/01 " + s2);
TimeSpan ts = d2 - d1;
int min = (int)ts.TotalMinutes;
>>269 諦めるのはかまわないけどC#でできないって決め付けないでね
ほぼ確実に君のやりたいことを求めようとしている方法がおかしいと思うから
質問の下手な初心者は上達しないと常々思っている。
お前らゴキブリみたいな人生だろ
>>270 さん
>>271 さん
ありがとうございました。
271さんのコードみたいにシンプルに書けるんですね。
時刻だけの文字列も、年月日をつければDateTime型で
簡単に計算できるということも勉強になりました
理解できないままコピペで動くような教え方は良くないと思うの
※ゴキブリに餌を与えないでください
277 :
271 :2012/12/11(火) 15:13:28.10
ついでに補足しとくと、 DateTime.Parse("12:30") だと実行当日の12:30を示すDateTime値が得られる。 一見これでも計算には支障がないようだけど、万が一 DateTime.Parse(s1) と DateTime.Parse(s2) の間で PCの日付が変わると計算結果が24時間違ってしまうので、確実に同じ日になるように日付を追加してある。
なるへそ
つかTimeSpan.Parseを使えばいいんじゃね?
280 :
271 :2012/12/11(火) 15:47:56.58
>>279 知らなかった・・・というか、時刻をTimeSpanで扱うという発想がなかった。
string s1 = "12:30";
string s2 = "16:00";
TimeSpan ts1 = TimeSpan.Parse(s1);
TimeSpan ts2 = TimeSpan.Parse(s2);
TimeSpan ts3 = ts2 - ts1;
int min = (int)ts3.TotalMinutes;
これでいけるやん。
int min = (int)( TimeSpan.Parse( "16:00" ) - TimeSpan.Parse( "12:30" ) ).TotalMinutes;
>>281 ちょっと勘違いした初心者がやりそうな書き方
>>281 可読性悪くしただけで何も変わってないやん
ふう
285 :
デフォルトの名無しさん :2012/12/11(火) 22:04:57.05
ListViewコントロールの列がColumn1,Column2の時 任意の項目をいくつか追加した後にColumn2のn番目の行にツールチップを設定したいのですが ToolTipコントロールを使い処理をToolTip.SetToolTip(*,"Text")としたとき *の部分をどのように設定すればいいのでしょうか?
>>285 カラムやセルごとにツールチップを表示するのはToolTip任せでは無理だと思うよ。
マウスポインタの座標からセルを判定してツールチップを設定する処理を
ユーザーコードで書く必要があるでしょ
>>286 なるほど。そうなると随分実装に手間が掛かりそうですね……
実はTweenのタイムラインの投稿カラムのように
長すぎて表示しきれない文字列にマウスオーバー→省略された文字がでてくるというのを実装したかったのですが
いまいちいい方法が思いつかない次第です
>>287 それ、デフォで実装されてたような気がしたけど...
>>288 昔はデフォルトで実装されてたような気がするのですがVS2010にしてから何故かできなくなってしまいました
ShowItemToolTips やね
>>289 IDEのプロパティなどにでてないだけじゃないの?
>>290-291 ,292
できました。ありがとうございます!
随分と初歩的なことを見落としていたようです
「listview tooltip」でググれば一発で出てきますね…… 見当違いな方法で実装しようとしたのがアホでした
リスト型の変数の要素数を制御したい場合、プロパティを使えるのでは?とおもったのですが、 List<string> _StringList; List<string> StringList { set [*] ; get; } *ここにStringListの数を監視して指定より多ければ、古い(またはいらない)要素を破棄させるといった挙動をさせたい。 こういった場合SetとGetはどういったときに呼び出されるのでしょうか? ご存知のかたご教示願います
そういうことしたいときは Collection<T>を継承してInsertItemメソッドをオーバーライドするんじゃね
うん List<>はパブリックに公開するなというガイドラインがあるのはそういう理由
298 :
デフォルトの名無しさん :2012/12/12(水) 08:22:33.71
フレームワークっていっぱいあるの?
>>256 うろ覚えだけどリフレッシュなら即時だったような
301 :
268 :2012/12/12(水) 10:47:01.71
いえいえ
TcpClientのコンストラクタで渡すポート番号って相手のだよね? 自分のポート番号はどうやって指定すんの?
TcpClient(IPEndPoint)で渡すのが自分の Connectに渡すのが相手の
>>304 thx
調べてみたらコンストラクタごとに動作が違うんだな
まぎらわしい。
>>1 自己顕示欲が強いのか、相談室だけど相談しにくい空気を演出する人いるよね。だから、初心者には辛いなぁ・・・と常々思っている。
ここといい、相談室といい、相談・質問し難い空気にしてる奴は、 一定数いるわけで…
抽象化してるつもりがかえって分かりにくい
相談しにくいと感じてるわりにはよくつらつらと愚痴書き込めるね
>>306 自省を求めるなら、どういうレスが該当するのかアンカーつけろよ
>>306 のレス自体が回答しにくい空気を演出してるぞ
「だれとは言わないけど・・・」みたいな感じで
批判すると逆に空気が悪くなるだろ
仕事でやってるんじゃねーし、答える相手は選ぶよな
煽る相手も選んでるよ一応ね
質問者は粘着でもしない限り優しくするけど、クソみたいな回答をする奴には容赦しないよ
そして誰も触らなくなるっと
馬鹿が釣れたかたまに確認するくらいだし 馬鹿が釣れたら顔真っ赤にして煽ってやっからな
血眼になって回答の荒拾いしてやんよ
初心者スレだから何でも許されるべきだって思ってる勘違い君も困るけどね。 自分の問題をきちんと伝える努力をしない奴とか、自分で問題を解決する努力をした 形跡が感じられない奴とか、そういう奴まで許容するのがこういうスレの趣旨じゃないだろう。
手間賃出すなら手取り足取り教えてやんよ 交通費出すなら現場まで行くぞ
手間チンを出す!?
つまり、こんなところに質問したり、回答すると、血眼になってまで発狂する奴がいるから 自分でどうにかしろとw。
>>307 そうやって荒らしてるんだよ。コピペだと消されるからな。
質問者がそういうのをわかって質問してくればいいが、
大抵は寄りつかなくなる。そういうのを期待してるんだろう。
んで、そういう運用上の問題点は自治スレでやってくれ。 このスレでやる議題じゃない。
つまりこいつらがその荒らしってわけで
荒れてるどころか過疎ってるだけだと思うんだが
/j /__/ ‘, // ヽ ', 、 // ‘ ! ヽ …わかった この話はやめよう /イ ', l ’ iヘヘ, l | ’ | nヘヘ _ | | l ハイ!! やめやめ | l_| | | ゝ ̄`ヽ | |〈 ̄ノ ゝソノノ `ー‐' l ! ¨/ n/7./7 ∧ j/ / iヽiヽn |! |///7/:::ゝ r===オ | ! | |/~7 i~| | | ,' '/:::::::::::ゝ、 l_こ./ヾ.. nl l .||/ | | | | l {':j`i::::::::::::::::`ーr ' ||ー---{ | '" ̄ ̄iノ .l::::::::::::::::::::::∧ | ゝ ', , 一 r‐‐l γ /、::::::::::::::::::::::::〉ー= ___ ヘ ヽ } / o |!:::::} / o` ー 、::::::::::::i o ,':::::::{`ヽ ヘ ノ / o ノ:::::∧ /ヽ o ヽ::::::::| o i::::::::ヽ、 / / / ノ::::::/ /::::::::ヽ o ヽ:::| o {::::::::::::::Υ /
言語の選択に悩んでいたのですが、このスレのおかげで一つ選択肢が減り楽になりました。 ありがとうございました。
おうよ
いえいえ
#ってポインタないの?
強いて言うならインスタンスを格納する変数がポインタ(のようなもの)。 メソッドへのポインタも厳密にはインスタンスポインタ経由。
unsafeコード使えば、かろうじてポインタ同等のことができる。
#の設計思想がポインタさけてるからそりゃそうだ
アーキテクチャって言葉 リアルに使ってる人いる?
組み込みなら使うだろ
展示会とかに行けば耳にタコができるくらい聞ける
スマホは-archオプションとか普通に出てくる
VCにもあるよ/arch:SSE2
熱いもの触った時にたまに口に出るね
必死にググりながらやってたころが懐かしいな やることわかってるとめんどくさくててがつかねぇ
341 :
デフォルトの名無しさん :2012/12/14(金) 18:59:49.47
C#でサクッと使える簡易キャッシュライブラリありせんか? プロセス起動中だけでいいのでインストールなど不要なMemcachedのようなものを探しています。
いまいち何を求めてるのかわからんけど SQLiteがインメモリDBとして使えるらしいよ ちょっと違うか
MemoryCacheは試したんだよな?
インメモリDBとして使えるには使えるがサクッという条件を満たしているかどうかは… それにキャッシュの規模にもよるだろうし、簡単なものなら自作すれば…?
string ookisa = "640x360"; という文字列があったとして int変数xに640、yに360を代入したいのですがどんな書き方が良いですか?
条件次第じゃないの? 必ず数字x数字で区切られててほかにゴミが入らないのなら xの位置を調べて前後を数字に変換すればいい
>>346 int p = ookisa.IndexOf('x');
int x = int.Parse(ookisa.Substring(0, p));
int y = int.Parse(ookisa.Substring(p + 1, p));
たぶんこれでいけるとは思うが、
もうちょっと条件を詳しく書いてくれないと確実なことは言えない。
var m = Regex.Match(ookisa, @"^(\d+)x(\d+)$"); int x,y; if(m.Success && int.TryParse(m.Groups[1].Value, out x) && int.TryParse(m.Groups[2].Value, out y)) { // 正常系 } こんな感じ?
レスどうもです。
>>348 さんの方法でできましたので今回はこちらでいこうと思います。
(対象の文字列はあらかじめ定義した文字列なのでこれで問題なさそうです)
351 :
348 :2012/12/14(金) 22:40:55.44
ごめん、そのコード間違ってる。 int y = int.Parse(ookisa.Substring(p + 1)); に直しといて。
「どんな書き方が良いですか?」なんて聞き方するんなら知ってる限りの方法くらい列挙しろウンコクズ
var size = ookisa.Split('x'); var x = int.Parse(size[1]); var y = int.Parse(size[2]);
var size = ookisa.Split('x'); var x = int.Parse(size[0]); var y = int.Parse(size[1]);
文字列にミスがあったら例外吐きそうだな。
>>355 その点
>>349 のやり方は回りくどいように見えて、正常系と異常系の分岐をスッキリかける点で優れていると思う。
>>351 今直したところでした;
>>352 すまそん。
>>354 Splitってあったんですね。VB,NETで使ったことがあったので
それと同じようなことをと思っていろいろ試したところエラーになって???だったのですが
文字を囲むのが「"」じゃなくて「'」だったとは・・・
358 :
デフォルトの名無しさん :2012/12/14(金) 23:09:27.77
Splitは「'」(char)だけじゃなく「"」(string)も配列で渡せばイケるはず
SplitしてParseが鉄板 書式が異常だったらって? 例外投げてもらえばいいのさ
想定内のエラーを例外で伝播させる奴はクソ
例外で伝えなきゃどうやって伝えるんだよアホか
10x15みたいな入力が何処から発生するかにもよる。
質問者ですがちょっと話を広げてすみませんが、 コード内で定義済の文字列(実際はradioButtonのText)なので 書式が間違って例外が出ることはないし、出たら出ないようにradioButtonのTextを正しく しておけば良いと思いますが、それでも例外に対応できるように書かないとダメ、というのがルールでしょうか?
例外をこうしろってルールは、たぶんない。 こんな感じで例外を無闇に握りつぶすのは、避けたい。 try{ var y = int.Parse( textBox1.Text ); }catch{ } ユーザーからの入力などで書式ミスが想定できる場合は、事前にチェック→代入。 int.TryParse 系のメソッドなどを使って行う。
>>363 その場合は自分の世界で完結してるから例外処理は別に要らない
ユーザーやサーバー等の管理下に無いものが異常値を渡す可能性は考慮すべき
>>363 例外が起きないことをプログラマが保証できるなら例外に対応する必要はない。
そういうケースだと、文字列を解析するより、RadioButtonのTagにSizeオブジェクトでも
入れといた方が簡単じゃないかと思う。
むしろ意味のあるフィールドとしてSizeをもって RadioButtonのテキストをSizeから生成すべきでは デザイナでは見えなくなるけど。。
みんなTryParseは使わないの?
findしちゃう
>>368 みんな1.1で知識止まってるからそんな難しいのわかんないの
だからtrycatchするお
DataGridViewComboBoxCellをComboboxのSelectedIndexと同じ機能を持たせるにはどうしたらいいのですか? DataGridViewComboBoxCellのValue値がコロコロ変わるので、SelectedIndexのようにドロップリストのどの項目を選択したかを知りたいです。
キーのないテーブルでレコードを特定するには、みたいな話? Tag何か入れといたら?
374 :
デフォルトの名無しさん :2012/12/17(月) 17:14:35.98
GNU/UNIX C開発の世界から、いきなりVS C#の世界に放り込まれたのですが、 ウィザードでhelloなプログラムを作ったのですが、bin/ obj/ Properties/ とかのフォルダができて 利用ライブラリはどこに置けばいいのか、というレベルの所でハマってます。 share/ も lib/ も include/ もないのですね… UNIX野郎が、VS C#のプロジェクト開発を理解するためのカンニングペーパーみたいな ものってないでしょうか?
そもそも利用ライブラリって何を指すのよ、と dllならexeの横に転がしておけばよい ていうかbin/Releaseの下にある奴一式をそのまま持って行けばよい(単純なものなら)
MSの開発環境を最初に触って驚くのがファイル爆発。 何のファイルがどうなのかさっぱりわからん。 個人的には、検索かけてふるいにかけるしか無いと思うけど、 C#の場合検索すると@ITの記事が結構いいと思う。あとドボンと未確認か。 とにかく、コード書いて慣れるのが一番。newとGCになれるんだ。 その後、Cではやりづらい黒魔術とかも有るよ。リフレクションとかね。
377 :
374 :2012/12/17(月) 19:21:13.42
ありがとうございます。 開発環境に標準添付されないライブラリは、サードパーティのを使うことになるのですが それらを突っ込むサーチパスやビルドパスはどうなっているのやらと… rubyなら、lib/ruby/site_ruby/ みたいな場所に突っ込みますけど、 ファイルヒエラルキーに関する資料がどこかにあればと
DatatableのA列には S Null E という文字列があります。 S, Null, Null, E, S, Null, Null, Null, Null, E, S, Null, Null, Null,E, という感じに、Nullの数は可変ですが、常にSとEに挟まれています。 今、このテーブルから、SからEまでを抜き出して一つ一つ新しいテーブルに格納するには、どうしたらいいでしょうか? A列のSからE
379 :
378 :2012/12/17(月) 19:25:23.17
さいごは消し忘れです
>>377 dllなら参照に追加しとけば勝手にコピーしてくれる
プロジェクトならソリューションに追加して参照に追加(プロジェクト参照)しとけば勝手にビルドしてコピーしてくれる
>>378 挟まれてるって、行単位で?
意味不明な構造だな…
>>378 DataTable.Rowsを一件ずつ確認していけばいいんじゃね
ていうか他に方法もないだろうしむしろ何が分からないのか
いつものスマアアアアアアアアアアアアアアアアアアアアアアアアアアアアトって奴だろ スマホでもタッチしてろ
385 :
378 :2012/12/17(月) 19:43:57.90
>>381 ええ、かなり謎な構造なんですが、エクセルに出すので、こんな形らしいです
>>383 アルゴリズムとしては、iでループカウンターを回して、Table.Rows["A"]がEだったら・・・
そこから先が進みません
でたーエクセル エクセルホーガン氏も大喜び
>>385 forループする
Sだったらそのインデックスを保存
Eだったら保存したインデックスから現在のインデックスまでの行を新しいテーブルにコピー
それ以外は無視
新しいテーブルにコピーするのが分からないってことか?
新しいテーブルってのがS-E毎に一つずつなのか全部まとめて一つなのかも分からんが
388 :
378 :2012/12/17(月) 20:43:51.65
>>387 ありがとうございました
S-Eごとに一つのテーブルを作ります
すっきりしない質問とすっきりしない解決だなw
SelectManyとかでクソみたいな解決策を出してもいいんだよ?
解決策がすっきりしてないとは言ってないよw 質問からしてなんかモヤっとしてるし ほんとに解決してるのか?という、もやもや感があるってこと
392 :
378 :2012/12/17(月) 23:03:10.86
解決してないというのは良いアルゴリズムが思いつかないんです。 2.0なのでvarつーかLinq使えません。 DataTable dt; ← ここにデータが入っていて、 S null null E null null null null S null null null このテーブルのA列の中身はこんな感じになってました。 これを一つのS〜Eで区切って別のテーブルに入れて、最終的にはDataTableの配列に入れたいんです。 (1)新しいDataTableを作る(dt2とします) (2)dtを1行ずつ見ていき、dtの1行目の値が「E」になるまで、dt2.Row[i] = dt.Rows[i]を繰り返す (3)dt2をDataTable[]の中にいれる (4)(1)に戻る というアルゴリズムでいいはずなんですが・・・。
聞いてるだけでもdt2.Row[i]から怪しい臭いがぷんぷんする
怪しいものは無視で
NullReferenceで落ちるようなら、Add系の関数ないのかな。
dt2の行と列ちゃんと作ってるか? つーかやりたいことは出来てんの? もっといい方法が無いか聞いてるのか 書いたコードが動かないのか どっちなの?
>>396 確かにdt2.Rows.Add()のほうがいいかもしれません
会話が微妙に噛み合わない
399 :
395 :2012/12/18(火) 00:03:12.25
400 :
395 :2012/12/18(火) 00:15:40.39
えと話が噛み合わなくてすいません 要は、ちゃんとしたコードが作れないってことです 寝る前にstack overflowでも見て寝ます・・・
DataTable dt; ← ここにデータが入っていて、 List<DataTable> dts = new List<DataTable>(); DataTable temp = null; for (int i = 0; i < dt.Rows.Count; i++) { if (dt.Rows[i][0].ToString() == "S") { temp = new DataTable(); temp.Columns.Add(); } else if (dt.Rows[i][0].ToString() == "E") { dts.Add(temp); temp = null; } else if (temp != null) { DataRow r = temp.NewRow(); r[0] = dt.Rows[i][0]; temp.Rows.Add(r); } } DataTable[] dt2 = dts.ToArray(); コードが動かないならコード貼ったほうが早いぞ
403 :
デフォルトの名無しさん :2012/12/18(火) 00:29:07.45
>>377 namespace Hoge
{
class Hogegegege
.
[DllImport("hogehoge.dll", EntryPoint="hogehogeee")]
public int Hogege(){}
.
.
}
>>402 ありがとうございました。
とても助かりました
>>377 システム全体で共有されるライブラリはGACにインストールするんだけどお勧めしない
.NETはunix系のようにPMでライブラリをシステムにインストールするというような発想ではなく
スタンドアロンアプリとして完結したものをまとめて配布するのが基本なので、
ライブラリは全部ローカルコピー推奨
408 :
デフォルトの名無しさん :2012/12/18(火) 12:11:19.73
データ格納用クラスにprivateな配列を宣言し、そのサイズを外部から動的に決めたい場合、その配列のアクセサーだけじゃなく、その配列のサイズ決定させるpublicなメソッドが必要なんでしょうか?
>>377 Unix的に言えば、静的リンクされるべきライブラリが別ファイルになっているから
同じフォルダに突っ込んでおくって感じ。
publicなメソッドでも用意しとけ。
初心者なんですが、文字列の中のアルファベットを数えるにはどうしたらいいでしょうか "aAあ"ってなっていたら2を表示したいです。お願いします。
IsLetterで数えるとかかなあ
>>411 意地悪なことを言うようだが、まずアルファベットの定義をはっきりさせてくれ。
いずれにしてもIsLetter()は使えないな。Char.IsLetter('あ') が true を返すから。 英語のA-Z,a-zの範囲でいいなら、 string s = "aあA"; int count = s.Where(c => ('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z')).Count(); こんなもんで。条件はお好きなように。
Where使う必要はないな CountもFunc<TSource, bool>引数に取れる
>>414 できました!!!!!!ありがとうございます!!!!!!
é はアルファベットかな〜
é ぶひ
419 :
デフォルトの名無しさん :2012/12/18(火) 21:57:28.50
>>419 そのネイティブって.NETでいうマネージコードとネイティブコードの区別におけるネイティブじゃなくて
スマホ開発でよく使われる言葉で「HTMLじゃなくてOS依存」という意味だよ
その意味では.NETアプリはれっきとしたネイティブ
まあそういう意味合いでもあるんだけど。 Mono.Mac に関してはほんとにネイティブコンパイルしてる。 AOT(ahead of time)コンパイルかけてる。
BufferedGraphicsなんて超絶すばらしいもんあったんだな
WinFormsの描画はもともとダブルバッファになってるから自分でやる必要はないよ 自分でループ回してアニメーションとかするんなら意味があるかもしれないが そもそもSystem.Drawingだと重すぎてガックガクだからどのみち使い物にならないという
道具の使い方をしらん素人はそんなもんだろ
Vista以降のBufferedPaintをラップしてくれるならまだ値打ちがあったんだけど
System.Drawingでアニメーションやろうとして重すぎて投げ出すのはみんな通る道
DrawingよりImege(Bitmap)クラスでindexed画像の読み込みの遅さどうにかしてほしいわ
夢がひろがりんぐ
デコード済みの画像描画するだけならぜんぜん遅くねーよ おおかたヘッダなめただけのImageほおりこんで重いとかぬかしてんだろ
デコードが重いっつってんだろウンコクズ
Paintイベント内でデコードしてる馬鹿いるよな
デコードって何?
最速で描画する方法を教えてください><
用途による 標準のクラスでただ描画するだけなら ヘッダなめただけのImageをTextureBrushにぶち込んでFillRectangleで塗りつぶす
DrawImageは遅くないよね?
XNA関連に比べると転送は遅い
ビューアみたいなことやろうとすると物足りないよね
DrawingよりImege(Bitmap)クラスでindexed画像の読み込みの遅さどうにかしてほしいつってんだろウンコクズ
XNA興味あるけど、ユーザーに余計なもんインストールさせるのは.NETだけでご馳走様だしなぁ
tttt
>>440 SharpDXなら.netだけでおkだよー
サンコスぐぐってくるぜ
SharpDXを使ってるゲーム会社ってどこだw
この前使ったけどすごくよかった
日本語の情報がなさ過ぎて俺には無理だ
C++の資料かなり使える
GDI! GDI! G・D・I!
>>446 どうせどこかで英語が必要になるんだから早めに習得しといた方がいい
……と思ったら英語の情報も乏しかったンゴ……
GDI++はまだですか
GDI#
WinFormのインターフェースでDirect3Dいじれないかねぇ。 WPFはわけわかめ。
DxLib使うとか?ちょっと違うか。
BlockingCollection.AddでIsCompleteとDisposedを検知したい場合、lockで同期して例外を回避するのと、try-catchで例外を握りつぶすののどっちがいい?
>>455 どう考えてもlockで同期するパターンだろう。
例外発生、ましてや握りつぶしなんてできる限り、やらないほうがいい。
>>456 何となくそう思ってたんだが、フラグを使って例外発生を0または1回に抑えれてもlockの方がいいかな
BlockingCollection.Addがスレッドセーフなのにさらに同期するのはもったいない気がして…
例外でいいよ キャンセルフレームワーク使うんなら正しいやり方
ロックしたらAddに入ったときにコレクションが空のときデッドロックするだろ
460 :
459 :2012/12/20(木) 03:18:03.29
訂正 Takeに入ったとき の間違い
Visual C#のWebBrowserに関する質問です. webBrowser1.Navigateでアクセスし,そのサイト内のリンクで特定文字列を含むものにアクセスしたい場合どうすればよいでしょうか. 例えば,Yahoo.co.jpにアクセスし,その中にあるすべてのリンクからauctionの文字列が含まれているリンクにアクセスするといった 感じです.特定文字列を含むリンクが複数ある場合もあると思いますが,必ず1つに絞られるものと考えてください.
うぜぇ
WebBrowserが質問に出てくるときは大抵初心者が無茶をやってるとき
もうNGワードで
自作のソフトにVBAみたいなマクロ機能をつけたいんだけど どうやったら出来るの?
インタープリタバターンを実装すればできる。
VBscriptやjavascriptとかの既存言語でやりたい 自分で言語つくって構文解析してとか無理ですわ
C#初心者ならともかくプログラミング初心者なんだよな WebBrowserコントロール使うやつって
IronPythonで
>>467 System.CodeDOMでC#かVBのコンパイラを動かせば?
よっぽどうまくやらないとセキュリティホールになるが
あんまり触ると逆上するから止めろ
ゴキブリマンみたいに居つかれても困るしな
474 :
デフォルトの名無しさん :2012/12/20(木) 22:53:42.13
分散並列処理フレームワークありませんか?
>>474 Pythonスレにまで書きに行っただろ
何なんだテメェ
>>470 なんか出来そうな感じがしてきた。
ありがとう!
>>476 CodeDOMを使うのなら必ず本体とは別のAppDomainで動かさないとダメだぞ
そうしないとスクリプトが逝ったら共倒れになるし、解放できないから確実にメモリリークする
>>477 AppDomainで調べてみるよ
アドバイス、ありがとう
第三者が真似するな 面白いと思ってるなら首括れ
やれやれ (* −_−)r鹵〜<巛巛巛
よくわかったな。
フォームにTableLayoutPanelを貼り付けて TableLayoutPanel内にはラベルをDock=Fillでいくつも張り付けてるんですけど ラベル間の境界線上でMouseMoveイベントを受け取るのはどのコントロールなんですか? フォームとTableLayoutPanelとラベルにイベントを追加してみましたけど いずれも境界線上では反応しません
>>486 マルチポストな上、質問が意味不明。
答える必要なし。
↑馬鹿
pictureboxに自分で線引いて自分で制御した方が早そうだな
雑魚どもがぴーちくぱーちくうるせーんだよ すっこんでろwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
ラベルでもテーブルレイアウトでもないならフォーム自身しかないだろう
動画変換ツールのffmpeg.exeというフリーソフトなのですが コマンドラインでffmpeg.exe -i <filename.mpg> とすると その動画ファイルのビットレートやエンコードの種類が表示されるのですが、 この文字列をC#で受け取る方法を教えて頂きたいです。 OSはWindowdXPSP3です。
インデクサの添え字なし見たいなのないの?
kwsk カッコってオーバーロードできないと思うけど。
JavaScriptじゃないんだから
498 :
395 :2012/12/22(土) 00:34:06.00
If sender Is Button1 Then のisがよくわからない。 Is関数ってことでいいの?
関数ではなく演算子 Object.ReferenceEquals(sender, Button1) と等価 厳密な参照比較を行う演算子で、=演算子とは全然違う
500 :
498 :2012/12/22(土) 00:41:19.35
間違えました
501 :
498 :2012/12/22(土) 00:42:44.44
>>499 質問するスレを間違えましたが
ありがとうございました。
良くわかりました
プロパティをvolatileにしたい場合って実体の変数にvolatile付けるしかない? 必然的に自動プロパティはvolatile不可?
volatileにする必要はない プロパティ経由のアクセスの場合メソッド呼び出しが入るので、 CLIの仕様上、必ずそこで正しく同期されることになっている
はい
はい
はいは2回でいい
507 :
503 :2012/12/22(土) 02:15:31.47
確認したら勘違いだったわ MethodImplOptions.Synchronizedでも付けたら
>>502 Thread.VolatileRead っていう静的メソッドでも同じことできるというか、こっちの方が不要なとこまでvolatileにしないから性能いいらしい。
けども、それもref引数でフィールド渡さないといけないので、自動プロパティは無理だったはず。
>>503 ちなみに、MethodImplOptions.Synchronizedもlock(this)なコード(ダメなコード)に展開されるので今となっては非推奨。
>>508 lock(this)がダメなのはデッドロックの原因につながる恐れがあるからで
自動プロパティは特に中で変わったことしてないからlock(this)しても問題ないぞ
パフォーマンスは落ちるかもしれないけどな
C#3.0以前のコンパイラはイベントの実装にMethodImplOptions.Synchronizedを使ってたが
やめたのはあくまでパフォーマンスの改善のため
↑馬鹿
>>494 どうもです。
試してみたけどdirやipconfigの結果は取得できるのですが
ffmpegの出力は受け取れなかったのですが、この方法でffmpegの結果も受け取ることができるでしょうか?
今日のヒント: ffmpegの出力は「標準エラー出力」に出ている 詳しくはffmpegのドキュメントを読もう
出来た\(^o^)/ありがとー
コンソールとかの周辺知識がなさ過ぎるな
ここが初心者向けで、相談室が脱初心者向けだと 思っていたがどうやら逆なようだな。
コーマン・ド・ライン
518 :
デフォルトの名無しさん :2012/12/23(日) 10:35:18.05
フォームのTopMostプロパティをtrueにして画面をタスクバーにかぶせると、かぶせた部分が隠れてしまいます。 タスクバーの上でも常に最善面に表示させる方法を教えてください
Panelを継承して複数の子コントロールを持つクラスを書いています 子コントロールの上に文字列を横断的に半透明で描画するにはどうすればいいですか? OnPaintをオーバーライドしても子コントロールの下に描画されてしまいます また、子コントロールはクリックなどもするので透明なレイヤーをかぶせるのは難しいです
全子コントロールのPaintイベントで文字をかけばいいんじゃね?
ユリゲラーのおっぱいシティね
decimalの値の12.34などを小数点以下を切り捨ててint変数に入れるにはどうすればいいですか?
(int)12.34
decimalと浮動小数点型は変換規則が違うので混同すると危険
こんなもん一個一個聞くよりググったほうがよりどりみどりだろうが
そうだっけ?
decimal->intは切捨てじゃなく一番近い整数への丸めのはず
釣りじゃなきゃ答えてるわな
(int)Math.Floor(12.34D)
質問にあれだけキーワードそろっててググってないわけないよな ググれば腐るほど情報出てくる内容だしまあ釣りだな
ぐぐったらMath.Floorが出てきたのでこれを使ってみるっす。
釣られて怒るのってどういう心境です
わずか5分で5レス付くくらいだから、心中穏やかではないです。
537 :
526 :2012/12/24(月) 00:42:40.24
別に釣りの意図なんてなかったけどね そう思いたい人のことを否定するつもりはない
質問が出る→意気揚々と答える→間違いを指摘される→釣りだろ このスレではお決まりのパターンじゃん? 珍しくもなんともない 取り立てて不愉快がるほどのことでもないよ
IDのないスレで釣りだろと釣りですを宣言する奴は負け犬
>>526 確かにMSDNの「明示的な数値変換の一覧表」にそう書いてあるね。
なんか一貫性がない規則のように感じられるけど、落とし穴を作ることが意図じゃないとすれば
どういう理由があるんだろうか。
542 :
525 :2012/12/24(月) 01:07:15.96
大漁♪
言語仕様は For a conversion from decimal to an integral type, the source value is rounded towards zero to the nearest integral value,
>>543 銀行丸めじゃなくて、負の場合も含めて五捨六入ってことかね?
ああ、この話題ね 半端な知識しかない君たちへ 次の段階へステップアップするための面白いヒントをやろう Convert.ToInt32()
切捨てってことは結局doubleと同じ扱いってことか。 なんだそれとんだオチだな
1つのアセンブリをC#とC++/CLIの両方で作ることはできますか?
数値型変換でConvertなんて使ってVB土方だと思われたら恥ずかしいし…
こいつら使い方もわからないのになんでdecimalなんて使ってるの これだから.Net重いだの糞だの言われるんだよなぁ
キャスト後の結果ではなくキャスト前の計算の結果がry
アホが勝手に間違った解釈してるだけだろう
本気でひどいな、その誤訳はw
560 :
デフォルトの名無しさん :2012/12/24(月) 18:39:40.97
いまいちよく分からんのだけど結局どういうことなの?
decimal→int変換は「ゼロの方向にある一番近い整数」≒「切り捨て」が正しいけど
MSDN日本語版には「一番近い整数」≒「四捨五入」と書いてあったということ
んで
>>526 がMSDNに騙されて、
>>526 に騙された人も大量発生
なるほど、thx
別に煽るつもりはないけど、 それを解説がないと読み取れない人がいるのもそれはそれで驚き。 スレに2分目を通せば分かる話だと思うけど
すまんね、英語が苦手なもんで
英語力というか、原文を翻訳通せばすむ問題ではある。 その程度のことをしないことに驚いているのではないかとエスパーしてみた。
実際につかってて気づかないことに驚き
どうでもいい糞コードに使い分けてるつもりになって自己満足してるんだろうなとエスパーしてみた。
経験上decimal型変数の大半は小数である必要すらない OracleのNumber型が悪いんだと思う
素直にMSDNのURL貼っとけばいいものを 自分の知識のごとくドヤ顔でレスしといて間違い指摘されたらMSDNの誤訳のせいとか 生きてて恥ずかしくない?
>>570 壁にでもしゃべりかけてんのか?
アンカもつけられない新参は黙ってろカス
いちいち煽り馬鹿に反応する奴も頭悪いよ。 煽ってる奴がどんな奴か想像力が働けばアホらしくて反応する気にならんでしょ。 ほっとけって。
↑スルーできずにいちいちレスする馬鹿
馬鹿の書いた糞コードでもそれなりに動いてしてまうC#のすばらしさをアピールしてるんですよ
失礼かみまみた
577 :
デフォルトの名無しさん :2012/12/25(火) 08:58:18.33
投稿日:2012/12/24(月) 22:42:03.77 ID:6+zZOOFi アスペじゃあるまいしその程度のことを問題に上げるのが有意義だとは思えない(キリッ コーディングしすぎてコミュ不全になってないか?(キリリッ おまいらコーディングし過ぎちゃダメだお;ω; メリークリスマスな贈り物だお
クリスマスはC#たんとすごすお
思い浮かべてごらん・・ サンタの格好をしたヘジたん
並列処理で効率よくプレゼントを配っていく
思い浮かべてごらん・・ C#たんが配ったプレゼントを拾うJAVAたん
GCがいっぱい><
GCに巻き込まれて破棄されるJAVAたん
死んでもアンマネージリソースだけは手放さないJAVAたん
GCがおっぱいに見えた
インストーラーを作成した時に、一緒にデータベースファイルを一つ下のディレクトリに入れたいのですが、どうすればいいのでしょうか? インストールフォルダ\databasefolder\data.mdb と言った構造にしたいのです。
インストーラを作るんだからそのように作ればいいだろ
Visual Stuidoのメニューやツールバーって、青いグラデーションになっていると思います。 同じように表示したいのですが、どうすればいいんでしょうか?
>>586 インストーラーもいろいろあるからとりあえずどのインストーラーか書かないと。
>>586 です
あっ、、すみません。webばかり触っていたもので・・。
インストーラー作成機能がVSに付いてるのだと思っていたのですが、違うのですね。
ちなみにインストーラーを作成した方がいい理由というのはあるのでしょうか。
そこまで大きな理由がないのであれば、Releaseフォルダをそのままlzhで纏めるだけにしようかと思うのですが
>>590 今時lzhはねーだろ
アンチウィルスソフト未対応の危険な圧縮形式を使うのはよしてくれ
>>590 いや付いてるけどその付属のインストーラーにも3種類ぐらいあるのよ。
ProgramFiles以下にインストールしたいとかインストール時に関連付けやレジストリに
書き込みたいとかなければ、別にXCOPY方式でいいんじゃないの
>>591 lzhはダメなのですか?アンチウィルスソフトがこんなメジャーな拡張子に対応していないなんて信じられません・・・
zipやrarなら大丈夫でしょうか?
>>592 特に関連付けやレジストリ等はありませんね!
XCOPYというのはコマンドのようですが、ただ、コピーするだけという意味でよろしいですか?
>>593 セキュリティー以上に今時lzhなんて使うと重症の偏屈者だと思われるよw
必用なファイルを単純にコピーするだけのアプリの配布方法をXCOPY配置とか言ったりする
>>594 なるほど・・・lzhがそんな扱いを受けていたなんて知りませんでした・・・。
では、zipで配布にします。ありがとうございました。
>>594 XCOPY配置なんて表現、初めて聞いた。
597 :
デフォルトの名無しさん :2012/12/25(火) 23:36:23.18
>>596 MSが結構使ってる表現だとおもうけどなあ。
ASP.NETとかSQL Serverとか
MCTS試験に良く出てくる
lzhって確か、もう保守されてないだろ。 脆弱性見つかっても放置されてるのが現状だろ。
こんにちは System.Windows.Forms.Control.DefaultFont プロパティ についての質問です これはシステム既定のフォントを示しているそうですが,MS P ゴシック 9ptしか示さないのですが,なぜでしょうか. Windows 7ですとメイリオフォント等が使われているため,これを示しているほうが正しいのではないかと思います. また,C#で作ったフォームのフォントがすべてメイリオではないフォントで表示されているようですが,上述のような疑問と関係はありますか.
該当プロパティのMSDN読め
日本語をまともに読み書きできない人にメイリオ使っても意味がないからだよ C#たん気が利くね
603 :
デフォルトの名無しさん :2012/12/26(水) 23:51:38.46
画面上のリストボックスに、テーブルから取得してきたA列 + ": " + "B列"というデータを表示するとき、 データバインディングさせるメリットとデメリットはなんですか?
>>601 返信有難う御座います.
MSDNを読みました.
システム設定に応じた値ではなく,日本語環境の場合は「MS UI Gothic、9 ポイント」固定ということなのですね.
もしシステム設定のフォントを得たい場合は,C#を利用していてもWin32APIを呼ぶのが普通なのでしょうか.
開きメクラじゃいくらMSDN読んでも無駄だわな >システム設定に応じた値ではなく,日本語環境の場合は「MS UI Gothic、9 ポイント」固定 なんてどこに書いてあるんだよタコが Windows NT 4x、日本語バージョン → MS UI Gothic、9 ポイント Arabic Windows → Tahoma、8 ポイント その他のオペレーティング システムまたはカルチャ → MS Shell Dlg 論理フォント。通常は Microsoft San Serif 8 ポイント MS Shell Dlg は、システム レジストリのフォント セットにマッピングされます。 ってあんだろうがハゲが。おまえはWindows NT 4x使ってんのかっつーの。 んでレジストリの HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes にMS Shell Dlgの値が書いてあんだよクソハゲがぁぁぁぁぁぁぁぁ
Windows NT 4x使ってました.
良い人過ぎワロスw
C#でwindows自体のコントロールをしたいです。 最終的にはwinapiでCの関数呼び出しに行き着くと思いますが C#ネイティブでコントロールできる領域を知るにはどのような文献にあたるとよいでしょうか よろしくお願いいたします
Windows NT 4xって、.NET Framework動くのか
実際には見もしないで、適当にでたらめ書けば、 顔真っ赤にして正しい情報を出してくれる人がいっぱいいるので 重宝してます、2ちゃんねる。
複数種類のdelegateを引数にしたい場合って、object型引数しか選択肢ない?
ジェネリックメソッド化かDelegate型
普通に何個でも渡せるよ もしかして配列を使う場合の話?
逆にobject以外にありうると思うか?ないよ。
dynamicなら引数さえ合ってればデリゲート型気にせずに呼べるよ
objectで困ることがあるのか 希望する方法があるのか
objectだと何でも入るから気持ち悪い…一応ArgumentExceptionは吐くようにしてるけど Delegate型がベストかな
安全を考慮するなら、公開するメソッドは対象デリゲート全部をとるオーバーロードを作って、 クラス内部でdynamicなりobjectをとるメソッドを呼ぶ方がいいな。
Actionにしちゃって呼び出し側に一手間いれてもらうとか
選択肢としては、まっとうな手段としては 共通の親クラスを引数にする(ジェネリック含む) 複数種類のオーバーロード作る の二つしかないだろ
そもそもなぜデリゲートをそんな形で渡す必要があるのか 使う側だって不便だろう
ラムダが使えるようになって、デリゲート渡しは何でもアリアリになっちゃったからな。
オブジェクトの型ってどうやって調べるの?
オブジェクトの型情報を別途持てるようになってなかったっけ?
特定の型かどうか調べるだけならisかas もっと高度な情報が必要ならobject.GetType()
・調べる型が固定→isかas ・調べる方が可変→GetType()==type ・それ以上→リフレクション
ありがとう
あとType.IsAssignableFromとか
How to WinForms WindowStateChanged Event
なんで時折カタコト英語が湧くのかね
ほら馬鹿が反応するだろ
C++で参照にしてないクラスオブジェクトの引数はコピーが作られて 呼び出すたびに使うクラス分のメモリが使われますけど C#でrefを付けてないクラス型の引数の場合はどういう挙動になるんでしょ?
参照型は明示的に複製しない限り同一インスタンス
参照型と値型 引数 違い でぐぐればいいんじゃね
>>605 返信有難う御座います.
勘違いをしてしまいもうしわけありません.
当方 Windows NT 6.1 を 日本語環境 を使用しております.
実際に確かめたところ,レジストリでは MS Shell Dlg の欄に MS UI Gothic と書かれておりました.
試しに MS Shell Dlg の値を変えましたが, DefaultFont には反映されないようでした.
しかし難しく思いますので,これは諦めることとします.
>>635 HKEY_LOCAL_MACHINE の値の反映は再起動後というのが多いというのは知ってると思うけど
まさか再起動したんだよね?
is は、その型にキャスト可能かどうか。 asは、クラスかインターフェースのみ。つまり参照型のキャストを試みて、できなかったらnullで例外は吐かない。 .GetType() または、typeof( Hoge )は、型情報、リフレクション。 参照型のキャストでキャスト例外も必要ないなら as で安定だし、若干高速。
>is は、その型にキャスト可能かどうか。 これは違う。明示的な型変換があればisがfalseでもキャストできる。 インスタンスの型の継承階層にその型が含まれているかどうかだ
余談だけど、COMが絡むとまたややこしいんだよな。 COMのオブジェクトは、C#コード上の継承関係とは無関係に QueryInterface に成功するなら 継承関係があると見なされ、is 演算子は true を返す。 最初面食らったわ。 [ComImport] [Guid("4657278A-411B-11d2-839A-00C04FD918D0")] public class DragDropHelper { } [ComImport] [Guid("4657278B-411B-11D2-839A-00C04FD918D0")] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] public interface IDropTargetHelper { // 中身省略 } var a = new DragDropHelper(); var b = a is IDropTargetHelper; // true var c = a as IDropTargetHelper; // 成功 var d = (IDropTargetHelper)a; // 成功
(12.34 is int)はfalseだが(int)12.34は通るってことだろ
C#4以降は暗黙の型変換と明示的な型変換とは別に代入変換なるものがあるらしいな dynamic型を型付けされた変数に代入するときの変換は暗黙の変換とは違うとかなんとか
644 :
ウンコ男 :2012/12/30(日) 13:07:53.93
ネットから落としているファイルのダウンロードが終わったかどうか知るのに なにかいい方法はないでしょうか? 今は当該ファイルにアクセスしてわざと例外を発生させて、その有無で ダウンロードが終わったかどうか判断していますが もっと、スマートな方法はないでしょうか?
ダウンロード自体を自分でやる C#でできるけどC#関係ないからやり方は自分で調べろ
何使ってダウンロードしてるのか書かないと FileSystemWatcherで監視したら?ぐらいしか言えない
647 :
ウンコ男 :2012/12/30(日) 13:16:27.42
Smiledownloaderを使用して、ニコ動やYoutubeの動画の ダウンロードが終わったら、ffmegでmp3に次々変換というのをやりたいと思ってます。
ロックの有無とかで分かるかもね
650 :
リリン :2012/12/30(日) 13:31:35.59 BE:157119236-PLT(45072)
∧_∧ ノロウイルス撒いてやんよ ( ・ω・)ノ>゚+。:.゚ C□ / ゚。:.゚.:。+゚ / . | (ノ ̄∪
>>649 知ってます。でも法律に詳しい友達が大丈夫だって言ってました。
法律家じゃなくて法律に詳しい・・・か そんな装備で大丈夫か
654 :
ウンコ男 :2012/12/30(日) 15:59:00.18
これといった解答がなかった(誰も答えられなかった) ということなので、最初からやっていた自分の方法が スマートな方法だということで、これを続けたいと思います。 ありがとうございました。お騒がせしました。
もう二度と来るなよ
Shownイベントが発生する条件について教えてください。 Shownイベントはフォームが初めて表示されたときに発生するとありますが、 下記のコードでは2回目以降のShowDialogでShownイベントが起きません。 なにか間違いをおかしているのでしょうか? List<Result>listResult = new List<Result>(); foreach (var item in query) { FrmAction frmAction = new FrmAction(); frmAction.Status = item.Status; frmAction.ShowDialog(); //★2回目のループで、frmActionでShownイベントが起きない listResult.Add(frmAction.Result); frmAction.Dispose(); }
どうShownをハンドルしているか分からないんですが
>>657 イベントのハンドルはデザイナまかせです。
Shownイベントが起きないケースでもイベントはインスタンス時にハンドルされています。
class FrmAction : Form
{
private void InitializeComponent()
{
this.Shown += new System.EventHandler(this.FrmAction_Shown);
}
}
>>658 > イベントのハンドルはデザイナまかせです。
> class FrmAction : Form
> {
> private void InitializeComponent()
> {
> this.Shown += new System.EventHandler(this.FrmAction_Shown);
> }
> }
デザイナ任せならコンストラクタには書かれないだろ
でまあ結局はここに書かれてないどこかで何かミスってるんだろう
var sa = new string[] {"test", "test2", "tst"}; foreach (var s in sa.Where(_ => _.Length > 4)) { Console.WriteLine(s); } こんな感じのコードを見たんですが、_(あんだーばー)ってどういう意味なんですか? この場合はsaを意味してるみたいなんですが
単なるラムダ式の仮引数 別にアンダーバーじゃなくちゃいけないわけじゃない むしろそんな書き方するやつはあんまりいないと思う 文字列を想定するからsとか strとか使うけどまあなんでもいい この場合sはもう使っちゃってるけど
単なるラムダ式の引数名 _ => _.Length > 4 ↓ delegate(string _){ return _.Length > 4; }
>>658 >Shownイベントが起きないケースでもイベントはインスタンス時にハンドルされています。
Shownイベントが起きないケースでもイベントハンドラは生成時に割り当てられています。
だよね
その事象が起きる最小限のコードを探す過程で解決すると思うよ
ここに来る前にそこまではして欲しい
>>661 >>662 なるほど!記号だったので何か特別な意味があるのかと思ってしまいました
_だけの変数ってできたんですね
どうもありがとうございます!
_は、見にくいし記号と間違えやすいので単独では使わないな… ラムダ変数には、x,y,zあたりの1文字変数なら使う。
アンダースコアって言えよ。
Unicodeの定義ではLOW LINEな
コンパイル通すのに形式的に必要なだけで、実際にはその引数使わない時にだけ _ 使うな…
JIS X 0201だとアンダライン
iと同義でよくoを使う。
Visual C# 2010 Expless なのですが、正規表現がうまく動かず困っています match = Regex.Match(text, "(.+) \((\d+)\)"); のようなことがやりたいのですが、\( も \d もコンパイルエラーとなり通りません。 match = Regex.Match(text, "(.+)\x28([0-9]+)\x29"); で回避したつもりだったんですが、1番目のMatchに"hogehoge("と"("まで取り込んでしまいます。 なにかおまじないというか設定が必要なのでしょうか?
@
@
@
677 :
671 :2013/01/02(水) 01:28:41.05
なんてこった! ありがとうございました_O_
string u = "uma"; string s = u; uが変更されたらsも同一の内容に自動で変わるようにするにはどうしたらいいんでしょうか
>>678 クラス型でラップするとかどうだろう??
ジェネリックスで書いておくとつぶしが利くよ。
それインスタンスが一緒だから大丈夫じゃね 逆に連動させないコピーはCopyToがいるはず
何言ってんだこいつ。
private string u; // 使用しない public string s; public string U // u の読み書きはこっちを使う { get { return u; } set { u = s = value; } }
寝ぼけてた。stringをただのクラスに見間違えるとかないわ。 アクセサーでやればいいんじゃね。 string _u, s; string u{ set{ _u =value; s= value ;} get;}みたいな感じで。
あなた眠いのよ… string u{ set{ s = value; } get{ return s; } }
つまんねー自演でごまかすなよカス
____ .ni 7 /ノ ヽ\ 壁に向かってしゃべってろゴミ l^l | | l ,/) / /゚ヽ /゚ヾ\ .n ', U ! レ' / / ⌒ ⌒ \ l^l.| | /) / 〈 | (____人__) | | U レ'//) ヽ\ |lr┬-l| / ノ / /´ ̄ ̄ノ ゙=ニ二" \rニ |
正月早々無様な奴だな お前ゴキブリみたいな人生だろ
自己紹介乙w
匿名で恥じかいたくらいで随分動揺してるな 正月くらいもちつけ
____ .ni 7 /ノ ヽ\ 壁に向かってしゃべってろゴミ l^l | | l ,/) / /゚ヽ /゚ヾ\ .n ', U ! レ' / / ⌒ ⌒ \ l^l.| | /) / 〈 | (____人__) | | U レ'//) ヽ\ |lr┬-l| / ノ / /´ ̄ ̄ノ ゙=ニ二" \rニ |
おまえこそ、そのくだらないAAをちらしの裏にでも書いてろゴミ
超絶敷居の低いC#すら覚えられない腐れかかった脳みそだからってイライラすんなよ
IDでねえしなんとも思わないだろ
678 名前:デフォルトの名無しさん[sage] 投稿日:2013/01/02(水) 02:24:55.41 string u = "uma"; string s = u; uが変更されたらsも同一の内容に自動で変わるようにするにはどうしたらいいんでしょうか 681 名前:デフォルトの名無しさん[sage] 投稿日:2013/01/02(水) 02:50:25.36 それインスタンスが一緒だから大丈夫じゃね 逆に連動させないコピーはCopyToがいるはず
678 名前:デフォルトの名無しさん[sage] 投稿日:2013/01/02(水) 02:24:55.41 ID:96QNQ03l0 string u = "turi"; string s = u; uが変更されたらsも同一の内容に自動で変わるようにするにはどうしたらいいんでしょうか 681 名前:デフォルトの名無しさん[sage] 投稿日:2013/01/02(水) 02:50:25.36 ID:yYj7fn39P それインスタンスが一緒だから大丈夫じゃね 逆に連動させないコピーはCopyToがいるはず 682 名前:デフォルトの名無しさん[sage] 投稿日:2013/01/02(水) 02:54:49.31 ID:yYj7fn39P 何言ってんだこいつ。 684 名前:デフォルトの名無しさん[sage] 投稿日:2013/01/02(水) 03:12:32.34 ID:yYj7fn39P 寝ぼけてた。stringをただのクラスに見間違えるとかないわ。 アクセサーでやればいいんじゃね。 string _u, s; string u{ set{ _u =value; s= value ;} get;}みたいな感じで。 685 名前:デフォルトの名無しさん[sage] 投稿日:2013/01/02(水) 03:25:50.18 ID:yYj7fn39P あなた眠いのよ… string u{ set{ s = value; } get{ return s; } }
なんだよこの自演は
ちょ、ID何それ
キャーコアイ
>>695-699 ____
.ni 7 /ノ ヽ\ ID偽造までして くやしいのぉ くやしいのぉ
l^l | | l ,/) / /゚ヽ /゚ヾ\ .n
', U ! レ' / / ⌒ ⌒ \ l^l.| | /)
/ 〈 | (____人__) | | U レ'//)
ヽ\ |lr┬-l| / ノ /
/´ ̄ ̄ノ ゙=ニ二" \rニ |
マンガ脳の恐怖、まで読んだ。
コントロールの背景色を変更するときに コントロール上に描画される線や文字などが見えにくくならないように 色を選ぶための一般的な方法はどんなのがありますか?
要するに色々と背景色を設定したいので、 それに応じて見やすい前景色を勝手に選んでくれるような仕組みが欲しいです。
BackColorChangedで背景色を反転させた色を取得して設定してやればいいだけだろ
R ^= 0xFF; G ^= 0xFF; B ^= 0xFF;
役にたたねー能書きはいいんだよ コピペで動くレベルのコードで示せカス
>>707 using System;
namespace ch2{
static class Program {
[STAThread]
static void Main() {
Console.WriteLine("死ねカス");
}
}
private void hoge_BackColorChanged(object sender, EventArgs e) { var red = hoge.BackColor.R; var green = hoge.BackColor.G; var blue = hoge.BackColor.B; red ^= 0xFF; green ^= 0xFF; blue ^= 0xFF; hoge.ForeColor = Color.FromArgb(red, green, blue); }
これのIDも見たいっす
private void hoge_BackColorChanged(object sender, EventArgs e) { var red = hoge.BackColor.R; var green = hoge.BackColor.G; var blue = hoge.BackColor.B; red ^= 0xFF; // 0x7F? green ^= 0xFF; // 0x7F? blue ^= 0xFF; // 0x7F? hoge.ForeColor = Color.FromArgb(red, green, blue); } private void hoge_Click(object sender, EventArgs e) // TestClick { Random r = new Random(); hoge.BackColor = Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255)); }
private void hoge_BackColorChanged(object sender, EventArgs e) { var red = hoge.BackColor.R; var green = hoge.BackColor.G; var blue = hoge.BackColor.B; red ^= 0xFF; green ^= 0xFF; blue ^= 0xFF; hoge.ForeColor = Color.FromArgb(red, green, blue); hoge.Text = hoge.BackColor.R + " " + hoge.BackColor.G + " " + hoge.BackColor.B + " / " + hoge.ForeColor.R + " " + hoge.ForeColor.G + " " + hoge.ForeColor.B; } private void hoge_Click(object sender, EventArgs e) { var random = new Random(); hoge.BackColor = Color.FromArgb(random.Next(0, 255), random.Next(0, 255), random.Next(0, 255)); }
>713 hoge.Text = hoge.BackColor.R + " " + hoge.BackColor.G + " " + hoge.BackColor.B + " / " + (255 - hoge.ForeColor.R) + " " + (255 - hoge.ForeColor.G) + " " + (255 - hoge.ForeColor.B);
○ 0xFF × 0x7F
ヒント:マスクの数値の事じゃない
お役に立てて光栄です
>>710 >>696 >678 名前:デフォルトの名無しさん[sage] 投稿日:2013/01/02(水) 02:24:55.41 ID:96QNQ03l0
>string u = "turi"; ←←←
これも釣りっすか?
非同期処理でThreadクラスかTask.Factoryのどっちを使うのがいいですか?
>>721 常駐したりSetApartmentStateする場合はThread使うかな
723 :
デフォルトの名無しさん :2013/01/03(木) 10:24:50.23
Task.FactoryではSTAに設定したり出来ないんですか?
できないね カスタムのTaskSchedulerを作れば不可能ではないけど
725 :
名無し募集中。。。 :2013/01/03(木) 12:27:19.21
ParameterizedThreadStart(button1_Click)はなぜだめなんでしょうか?
よくもこんなレベルでry もっと先に基本的なry
これだからC#のPGもどきはry
>>721 常駐系か、投げ捨てかによる。
Threadを使うには、それなりのスレッド作成コストが掛かる。
数分程度で終わるような処理(Webアクセス等)ならTaskで十分。
アプリケーション起動から終了までバックグラウンドで常駐してるようなスレッドならThread。
もしくは、STAしたいならThread。
729 :
デフォルトの名無しさん :2013/01/03(木) 14:00:46.75
ありがとうございました。
730 :
デフォルトの名無しさん :2013/01/03(木) 14:52:25.02
ものすごい長い行のコードを 匿名メソッドやラムダ式で書くのってどうですか? そういうのはやっぱり独立した関数として書きますか? 会社でそういう長文ラムダとか関数の引数とかに書いたりしたら 怒られますか?
会社で聞けよ
amazonのAPIをC#で叩く方法について詳しいかたはいらっしゃいませんか? APIで取得するxmlには <FormattedPrice>\ 92,799</FormattedPrice> しかありません。 dyson ball DC46MHCOM 参考価格: \ 92,799 価格: \ 68,902 この68,902を得る方法をここで質問してよいでしょうか?
1週間働くと得られる気がする
最低賃金のお前らじゃ一週間では無理
ものすごく長いという時点でメソッドを分割すべきだろ。
ワロタ
>>734 ニートのお前じゃ死ぬまでかかっても無理
効いてる効いてる()
効いてる効いてる()
>>728 コストコストってまぁよく言うけどさ、
高い低いって抽象的だよね
もっと具体的かつ直感的な単位ってないの?
ちなみに俺のイメージだとスレッド生成コストはnewの300倍、Sandy世代で20msぐらいかな
いくらコストが高いっていってもmsオーダーの時間が掛かるわけがないw
はやっ! コスト高いってもその程度と思っておけばいいのね
743 :
デフォルトの名無しさん :2013/01/03(木) 18:39:23.97
すいませんでした。
C#tとHSPどっち学ぼうか迷ってるんですが どっちがいいでしょうか
何を作りたいんだ?
言語には向き不向きがあるからこんなにたくさんの言語が夜に出回ってるんだ
特に目的もなくなんとなくプログラミングしてみたいならC#だろう ただ、目的もなくプログラミング始めるのはおすすめしないけどな
Windowsストアアプリを作ってるんだが、 XMLファイルの読み込みってどうやるの?
で
ググレカス
普通にSystem.Xml.Linqでいいんじゃね
何も考えずにちょっとした趣味のゲーム作るならHSP ちょっと本格的なものを作るならC# HSPなんか覚えたところで世の中じゃ通用しないからな。 RPGツクールなんかと同じような位置付けだろうHSPって。
実際にモノを作るとなるとHSPって全然簡単じゃないぞ? C#の方がよっぽど簡単だわ。 あんな低レベルなもん使えるか
754 :
753 :2013/01/03(木) 22:31:03.14
抽象化されてなくて記述の粒度が小さいって意味の低レベルな。念のため。
>>754 オブジェクト指向だとかクラスライブラリの理解を抜きにして
とりあえず何か作るなら、そこらへん対して理解せずに書けるHSPのほうが面倒ではあっても、簡単かもしれない。
逆にオブジェクト指向とか理解できているならHSPは、低レベルすぎて使いにくいので難しく感じるだろう。
難しいんじゃなくて面倒なだけじゃね?
ほんとにプログラミング初めての人が基礎中の基礎を学ぶにはいいかもね。 ただそれを終えたらHSPで何か実用的なものを作ろうとは考えないでC系に行ったほうがいいな。 苦労して身に付くのは変な癖だけ。
>>757 それなら、C#をコンソールで使った方がいいと思う。
ならPythonとかRubyとかPerlとかでよくね
ならこのスレでやらなくてよくね
Perlとか余計、変な癖が付くだろw
お前らの存在そのものが変な癖だから余計な心配スンナ
その文体がな
2chはシーア派だからなぁ
ストアアプリってリソースの読み込みは非同期じゃなきゃいけないの? 同期的にXMLファイルを読み込みたいんだができない・・・
await使えば同期と大差なく書けるんだし
同期を非同期にしたいんじゃなくて、非同期を同期にしたい感じ
知らんがな
お前らマジで役に立たんな
>同期を非同期にしたいんじゃなくて、非同期を同期にしたい感じ これが聞きたいんだろ >ストアアプリってリソースの読み込みは非同期じゃなきゃいけないの? なんでこんな前振り必要なわけ? 馬鹿なりに見栄はってんの?www
日ごろリアルで蔑まれてるここの方たちは色々と神経が過敏になってるんですよ 慎重に扱わないと答えてもらえませんよ
非同期で開始してすぐに完了まで待てば同期と同じじゃね
ストアアプリってUIスレッドをブロックしたら問答無用で死刑じゃなかったっけ? ワーカースレッドでやるんならawait使えば同期と何も変わらんし
t.wait(); 何時まで経っても戻って来ません\(^o^)/オワタ こうなるんだろ?
つーかそもそも非同期ではなく同期でやって審査通るのか?
MonaフォントってC#で使えんのかね InstalledFontCollectionには出てこない・・・メモ帳だと選べるんだけどな PrivateFontCollectionで読み込もうとしてもエラーを吐く
メトロアプリで同じリソースの音を重ねて再生する方法を教えてくれ
メトロはなかった
779 :
デフォルトの名無しさん :2013/01/04(金) 22:53:15.04
VS Expressはキーボードマクロとか使えないんですか?
いつものすごい人が明日解決してくれると信じて待つか、今日はダメそうだな
答える気ないのが偉そうにするのなんで
そういう方法でしか自分のアイデンティティが保てないから
784 :
デフォルトの名無しさん :2013/01/05(土) 00:46:16.26
785 :
デフォルトの名無しさん :2013/01/05(土) 01:08:53.22
Fuck fuck = new Fuck;
()がない、コンパイルエラー。
コンストラクタの()って無駄だよな 属性の()は省略できるんだから省略できてもいいのに
属性はともかく、コレクション初期化子
789 :
788 :2013/01/05(土) 01:31:07.11
すまん
コレクション初期化子やオブジェクト初期化子でも括弧は省略できるんだから
もう一貫性という意味では
>>785 を許さない方が不自然だと思う
特に構文上の曖昧さもないはずだし、特に分かりにくくなるとも思えないし
引数ありのときとなしのときで一貫性がなくなる
デリゲードとメソッド呼び出しの区別が付かなくなるとかじゃないのか? void hoge();があったとしたら、hogeならデリゲードを指すし、 hoge()ならhogeメソッドの呼び出すを指すから、()の省略は、できないんじゃないかと。 ただ、コンストラクタに関しては、省略できても良さそうな気もするけど。
メソッド呼び出しでの括弧省略は確かに曖昧になるケースがありそうだけど newの右に必ず型がくるのは決まってるからな 今やC#にいくつかあるコンストラクタ呼び出しの構文の中で空括弧省略できないのは785だけで、逆に例外になってる
どうでもいい
newの右カッコを省略可能にしてしまうと public class Hoge { public void Method() { } } のMethodを呼ぶときに 1) new Hoge().Method(); 2) new Hoge.Method(); と書ける事になってしまい、ぱっと見でメソッドを呼んでるのかインナークラスを初期化しているのかわからなくなる。
カスどもが言語仕様をうんぬんしてるんじゃねーよ 黙ってコード書け黙って
()省略したい奴はvbやれよ addressofとか素敵な演算子があるぞ
ifの括弧省略する奴もゆるせない if(true) textbox1.txt = "YAMERO"; みたいなやつ
新参は荒らす前にゴキブリ人生さんに挨拶しとけよ
800 :
デフォルトの名無しさん :2013/01/05(土) 13:14:46.45
>>797 そういうのは一般にぶら下がりって言うんだよ。
煽るつもりはないが、そんな表現も知らないようじゃ他人の書き方に文句付けるレベルじゃないんじゃないの
知ってるから言ってんだろカス
ニートのお前らは知らないだろうけど、 大体コーディング規約で一行でも{}付けるところが多い
チームとかプロジェクトのコーディング規約に従っておけば良いだけだろ。 まさかそこらへんのググったサンプルコードとかオープンソースに文句いってんじゃないだろうな?
切れ芸なのこの人?
>>803 あるね
ifに後から行追加する時にバクる可能性があるとかなんとか
{}書かないときは1行で書くわ。 引数のnullチェックするくらいで{}書いたり改行してられるか。
1行で書くならいいだろう
>>797 みたいに改行してるのに括弧付けないのが質悪い
コード書くのなんて開発工程全体から見たら微々たる時間なのに{}を省略するほど時間惜しむって短気だな
おれのところは仕様決定・設計・コーディング・テストが一体となってるから!
+自宅警備だろ
>>812 PowerPointで作れと言われるよりはマシ
>>809 横からだけど、
俺は短気っていうか、ブーリアンで処理できるので理解しやすい。と思ってるよ。
>>809 ぶら下がりは別に{}を省略してるわけじゃない。
それとも君は全部の行を{}で囲むの?
改行してるのに{}省略されるとifって名前の()メソッドを実行してるかのように見えるんだよ
眼科いけ
if($flg) $i++; ↑$flgがtrueだったら$iインクリ it($flg); $i++; ↑itメソッドに$flg引数を渡して実行 その後$iをインクリ わかりづらいだろ
意図的だから間違えても問題ない
なんの言語だよ C#スレだぞ
でもC#の一般的な改行とインデントって一貫性がないよな if (cond) { body; } 文法的にはブロックはステートメントに相当するので、これが括弧無しなら本来 if (cond) body; になるのが自然なはず if (cond) body; つまりこれは括弧を省略してると考えないとおかしい
if (cond) body; は気持ち悪いけど、 if (cond) body; は普通に使うよね?
俺は使わないけど下のほうなら許せる
if (cond)
{
body;
}
の形式でやってるといちいち長くなるから
>>823 の上にしたくなるのもわかるけどな
if (cond) {
body;
}
このスタイルなら絶対括弧書くけど
またこの流れかよ、いい加減にしろ
C#の人たちってUNIX C言語とか全然経験無いのかな? MSの言語だからしょうが無いのかもしれないけど 世界が狭すぎ何じゃね?C言語で書かれた有名なソースコード 沢山読んでたら if(expression) statement; なんていくらでも出てくるだろう? if(expression) statement; なんて制御構造が分かり難いから普通は避けるだろうに。 いや、初心者スレだから{}は省略するなってのは良いと思うけど 大人のコーディングにそれを当てはめるのは恥ずかしすぎだぞ
>C#の人たちってUNIX C言語とか全然経験無いのかな? キモいウザい出てけ
830 :
デフォルトの名無しさん :2013/01/06(日) 05:48:13.90
>>828 郷に入っては郷に従えだよ
ifのコードスニペットはBSDスタイルだよ
大人のコーディングWWWWWWWWWWWWWWWWWWWWWWWWW
>>828 大人のコーディングとやらの狭い世界で語ってろよw
if (
>>828 == Masturbation) return;
else return;
一貫性のない書き方を大人のコーディングって言うんですね
大人のコーディング、頂きました
お と な の コ ー デ ィ ン グ wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
いいからお前らはポケモン見てろ
>>828 それらが書かれた時期にもよるんだろ。
最近ではそう言った書き方が敬遠される傾向にあるから、新規に書く場合はそれに倣ってるだけだよ。
コーディング規約に逆らっても意味ないどころか、書き直しになるし。
新人除けば、C# やってる人でそれしかやったことないのってあんまりいないと思う。
馬鹿 「一貫性があって良い!」 for( ;;){ if(a == 1) { break; } if(b == 1) { break; } 一般人 「ウゼー」
>for( ;;){ これも for( ;;) { こうだろ 本人が見やすい方でいいじゃない
VS使ってないなら知らんがVS使ってるならフォーマット機能あるんだから 多少のことは、どうでもいいけどな。クラス変数とかグローバル変数が aaa とかふざけた名前とかでなければどうでもいいだろ。
なぜ年寄りはswitch文が嫌いなのか
switch文はなにかがおかしいよな 最適化のためって理屈ついてるけど別にifelse連発でも最適化は出来るし なんか感じ良さそうに見えるからみんな使うけど実際使うとあんまり便利でもない
ジャンプテーブル最適化があるだろ そりゃ頑張って解析すればifelseでもできないはずはないけど少なくともcscはやってない
switch文は長くなりがちだからな。 中にダラダラ書かずに簡潔にまとめられれば別にいいけど。
COBOL云々の話が出てこないあたり、 やっぱりニートや低学歴が多いのか最近は
まずおまえはスレタイを100回ほど読み直したほうがいい。
>>846 がニートと低学歴という言葉にコンプレックス持っててまわりが見えてないおっさんだということはわかった
switchはstringとかでも使えればな
>>849 C#誕生当初から使えるぞ
Javaでも使えるようになった
851 :
デフォルトの名無しさん :2013/01/06(日) 13:38:24.70
大人のコーディングなめんなよ
お前らとswitchは使いようってよくいうだろ
>>825 エディタが上を強要してくるから困る
>>839 俺は break; とかは一行で書くけど { } を付ける派だな
if (a == 1) { break; }
{ }をつけて一行で書くのが一番収まりがいいよ かっこつけろ派からも一行で書け派からも文句が出ないし
VSってifのスタイル切り替えれなかったっけ?
ぎっしり詰められても見にくいんだよな
{ }付けてまで一行に納めるぐらいなら改行したほうが良いはず
VSにかぎらずたいていのIDEでコードフォーマットの設定はできます
なんでや・・・
VSのK&Rスタイルサポートって微妙に不完全でおかしくなることがあるんだよな デフォルト一択
if の {} は平気で省略するのに for や whle のは省略できない。ふしぎ!
ループの本体が一行なんてめったにないから たまに一行のときがあっても省略に抵抗を感じるのはごく自然なことだと思います
for (var i = 0; i < 1; ++i) --i; while (true) new Form().Show();
if (true) if (true) if (true) if (true) if (true) if (true) if (true) if (true) { }
foreach (var item in items) items.Add(item);
何が面白いのかねえ
プログラミングジョークはめったに伝わらないな
何か言わなきゃ気がすまない、精神不安定な馬鹿が反応するのが面白い。
PCから出てる音を録音するにはどうしたらいいでしょうか? ヒントください
音声のINとOUTをケーブルで繋ぐ
ググる
そんな方法しか知らないのですか?
switch使うぐらいならロジックを工夫してswitchを 使わなくても読みやすいコードにするわな。
普通に使うだろswitch
switchを避けろ(替わりに多態を使え)って話は初心者向けのOOPの本の定番ネタだけど、 正直あれは羹に懲りて膾を吹く感があり過ぎるね。
・・・にこりて・・・をふく・・・
「羹に懲りて膾を吹く」 この諺は初めて知った。少し得した気分だ。
そんな下らないこと書くと「ド低能」って煽られて損した気分になるよ?
割と有名なのだから、得意げに外でいうなよ
初心者にアドバイスするなら 多態を避けろ switchも避けろ ifを使え だな if(obj is TypeA){} else if(obj is TypeB){}... っていうのと obj.VirtualMethod(...) っていうのじゃ参照の方向が逆だから非常にわかりにくくなる TypeAやTypeBへの参照がなくても呼べるのはいいが 逆に言えば何を呼び出してるかさっぱりわからないコードになるから 意味が取りにくくなるので必要がなければ避けるべき形 つまりTypeAやTypeBを外部の誰かが作って入れるようなライブラリを作るケース以外では 避けるべき形
「実はポリモーフィズムってしっくりこないんです!」
一言に集約すれば「教条主義を避けろ」だな。
うはw多態を避ける?マジすか!
全くついて行けないぜ!
>>881 最後のところはプラグインモデルみたいなものかと思うけどその上が意味不明
自分の書き方以外で書かれると気持ち悪いんだろ? で、その書き方っていうのは、プログラム初めて最初に触ったIDEの標準のフォーマットなんだろ?
>>884 obj.VirtualMethod(...)は
TypeAやTypeBへの参照がなくても呼べるのはいいけど
(Virtualなので)何を呼び出してるかさっぱりわからないコードになるから
意味が取りにくくなるので必要がなければ避けるべき形
つまりアセンブリ間の参照関係で言うと
アセンブリ → TypeAやTypeBがあるアセンブリ
こう参照していればよかったのが
アセンブリを使う側 → アセンブリ(VirtualMethodを持つベースクラス or インターフェースだけ定義)
↓→ TypeAやBが定義されたアセンブリ →↑
こういう関係性になってややこしいことになるわけよね
TypeAやBとライブラリのアセンブリの関係を見ると逆になっていて
ライブラリからはTypeAやBが見えなくなっている
ライブラリのメソッドだけ見ても何をするのかわからなくなってる
使う側はTypeAやBのアセンブリからオブジェクトを作ってライブラリのアセンブリに入れてやらなきゃいけない
そうしないと外部から処理を入れるプラグイン的なことが出来ないから仕方ないんだけど
分かりにくいから出来れば避けたい形
へえ〜、凄いねえ〜 でも派生型の実装の意味を知ろうって発想自体がOOP的に腐ってるんだよ〜
派生型の実装が分かっていたほうがコードは見通しが良くなるから 派生させて隠蔽しようっていう発想はそもそも腐ってるんだよ 本気でそうしたほうがいいと思ってるんだったらオブジェクト指向に毒されてコードをまともに書けなくなってる
>>888 の主義主張はどうでもいいんだが、なんでOOP言語のスレで言うのかねえ
C#は関数型とのハイブリッド言語でしょ 関数型だとTypeA、TypeBみたいにパターンマッチングするのは基本の書き方だからね C#はオブジェクト指向言語じゃないんだから優れた方を使えばいいんだよ
C#が関数型言語の機能を取り込んだのなんか常識じゃない 無知からくるまぬけな言いがかりでしかない
もしかして:第一級関数
ある程度の処理の規模になってくるとChain of Responsibility パターン なんかを使うのかもしれんけどね。
多態も使えないクズが居座ってんのか
switchで書くも、後々、&&とか||を使いたくなって ifにしてしまうことは、まれにある。 まあ、列挙体なんかは、VSならswでスニペット用意されてるし、楽だと思う。 多態性だがポリモだか知らないが初心者に教える必要もないと思う。 特に入門段階で「どういうときに使うの?w」とか抜かしているような奴に説明するのは無理だしな。
898 :
884 :2013/01/06(日) 20:33:51.14
まあ多態無しで組めるようになってからの方が 多態の価値が分かるかもというのはあるね
多態は処理追いやすいけど デリゲートは処理追いにくいよね そりゃ使う時は使うけど
多態が処理追いやすいわけないがな あんな無駄にクラス増やして処理をとっちらからせるだけのもの ラムダで直接書くのが一番直感的
高階関数は多態そのものだろ Javaみたいにインラインでクラス書いて渡すのは最低最悪のビチクソなのは間違いないが
>>900 処理の挿入が必要なライブラリ書くときにデリゲートつかうよ
挿入される処理がいくつかセットになってるときはインターフェースを使う
多態はそのときぐらいしか使わんなデリゲートはもっと使うけど
多態はオブジェクト指向用語であって 高階関数もシコシコインターフェースと実装クラスでやるオワコンスタイルを表すものだろ
なにそのオレオレ定義
多態の処理追えないとか どんだけ素人だよ
>>907 一番自然で追いやすいのはまっすぐ記述されてること
そこから離れるほどにわかりにくく追いにくくなるの
インターフェースと実装クラスの分離なんかソースファイルまで別れる最悪の記述方式になってることは明らかでしょ
オブジェクト指向を金科玉条のように信仰してると盲目になっちゃうから分からんかもしれんがね
このアホ臭い釣りはいつまで続くの?
おまえが相手を続ける限り。
>>908 .NET 4.5からのawait/asyncなんかは、そういう意図もあるよな。
非同期の処理を同期と同じように書けるのは、良いと思う。
>>908 お前は何でもかんでも中まで追おうとするからアホなんや
virtualじゃ中まで追わなきゃ何をするか分かんないでしょ 何をするかメソッド名に書いてあれば中を見なくても分かるわけ はやいとこオブジェクト指向の洗脳から抜けなさいよ相手するのめんどくさいから
いや別に君に相手して欲しいと頼んだわけじゃないし、 出来ればどっか逝ってくれればありがたいとさえ思う。
virtualじゃなくても中まで追わなきゃ何をするか分かんないよ
分かるように名前をつけるのが腕やがな 名前だけじゃ足りなくてもsummaryコメントまで見たらもう完全にわからないとアウトだわね
ソロ開発しかしたことないんだろ それか口だけでhello world止まりか
918 :
デフォルトの名無しさん :2013/01/07(月) 00:39:35.04
なんか核ボタンに飴が出ますって書いてあったら押すタイプの奴がいるな
オブジェクト指向で挫折したんだろ 察してやれ
ITドカタの間ではオブジェクト指向教は根深いんだよなあ クチで言い負かされても理屈ゼロの悪口ボソボソ言い出して省みるところがない そんなもの信じてるからITドカタなのにそうまで否定出来ないものかねその宗教を
おっ ブーメラン投げ始めたぞ
宗教は自分で考えなくていいから楽だよ
ご高説を垂れる前に多態の静的な分析法を覚えた方がよろしいのでは
>>920 お前が自宅警備員時代に培った技術でなんとかITドカタで就職できたものの、そこでボロ糞に苛められた経緯があり、
そのときの会社で使っていた言語がオブジェクト指向だったてとこまでは理解できた。
オブジェクト指向ってしっくりこないんです!
プロパテ
プロパ
あぁん
ListViewで質問です。明細表示していた場合 1アイテム内で改行することはできますか?
改行したテキストぶち込んでみれば?
ぶちこんだところ改行されません。
行の幅が変わりません。 ↓ 行の幅を変えても表示されません。 ↓ OwnerDrawだとちらついて使い物になりません。 ↓ DoubleBufferedを有効にすると遅すぎて使い物になりません。 ↓ VirtualMode...
WPFならコードなしでできるね
簡単にできそうで実装されていないのはそれなりに理由があるんだろうね とくにデフォルトでダブルバッファが無効になってるコントロールは曲者 TabControlやListViewはいじりだしたらきりがない DataGridViewじゃだめなん?
ListViewはDetailだけじゃないからなあ
937 :
デフォルトの名無しさん :2013/01/07(月) 13:23:08.04
Tagかどっかに情報を持っておく 大小比較する際にまずその二つがそれぞれフォルダかファイルか判断して フォルダとファイルの比較だったらファイル名とかにかかわらず-1か1を返す
前から迷ってた、ファイラーを作ってみた。 思ったより少ないソースで基本は出来た。 エクスプローラのコンテキストメニューどーすんだっと思ってたけど Andreas Johanssonさんありがとう しかし、C#だと、打つコード量すくねー
C#というか設計の質問になってしまうんだが、論理エラー系のログファイルって発生したら逐一テキストベースで吐くべき?処理が一通り終わるまで溜め込んでXmlで吐くっておかしい?
すぐ吐かないとダメでしょう エラーなんだから溜め込んでから吐くまでの間コントロールできてるとは限らないし
溜め込んでる間に強制終了されたら、肝心なログが見れないでしょ?
終了時の動作を保証できるなら溜めた方がパフォーマンスが良くなる
言語は優秀なのに糞アプリであふれてる理由がわかったわ
C#使ってて感じるのが、クラスライブラリがいまいちなんだよなぁ ちょくちょく感じるのが、かゆいところに手が届かないというか、 Win32APIつかうとか、自分で該当クラスを作ればいいんだろうけど… 今感じているのが、コモンダイアログで、ダイアログ内のコントロールに フォーカスが移せなくて困ってる。 FolderBrouserDialogを開いた直後のフォーカスが、ツリービューでなくて、 ボタンにあるんだけど、これなんとかなんないの? 他に、最近気づいたのが、正規表現で改行の仕様部分がいまいちとか。 $がなんで\rの前で無くて\nの前とか、オプションで選択出来ればいいんだけど、それも出来ない。 他の人どーしてんだろうかと、不思議に思うんだけど。
>>945 諦めてライブラリの仕様に従うか、自分用にライブラリを作るかどちらかだろうな。
結局、1から自分用に作った方が使いやすい時もあるし。
細かいところなら我慢するのもアリだろうし。
ファイラーの話からず〜っと思ってたけど かゆいところまで手の届く便利な純正ライブラリ用意してくれてるのに何で使わないのかね すべてのライブラリ把握したような口ぶりだから当然知ってるんだろうとは思うけど
そのかゆいところに手に届くすばらしいライブラリを紹介してくれよ。
>>947 >かゆいところまで手の届く便利な純正ライブラリ用意してくれてるのに何で使わないのかね
>すべてのライブラリ把握したような口ぶりだから当然知ってるんだろうとは思うけど
知らない。つーかおせーて。多分、嘘だろうと思うけど。
最も、ファイルとかディレクトリとかコピーするのにRobocopy使ったもの
用意したんだけど、移動でめげた。
よく調べてみたら、VisualBasicのFileSystemに使い勝手のよさそうなのがあって、
さしあたってそれ使った(将来的には置き換えると思うけど)。
いや〜コモンダイアログを標準ライブラリだと思ってるみたいだし
結局ないんカイ 蛇足で悪いんだけど、VistaでRoboCopy使用下で、 不思議な現象(仕様?)があった。 1.ドライブ直下(ルートディレクトリ)のファイルを別のディレクトリにコピーすると、 コピー先のディレクトリの属性が、隠し属性と、システム属性がつく 2.ルート下のディレクトリを指定する場合には、最後に\が必要、 かつダブルクォーテーションを外す必要があった。 ルート下での使用はあんまり無いと思うけど、、特に1は気をつけた方がいい。 知らない間に、エクスプローラから、ディレクトリが見えなくなるw
質問に対するレスまで臭くなっちゃ初心者スレとしては終わりやな
OSの縛り受けるけどあるよ
エクスプローラなんて貼るだけでフォームに埋め込めるし エクスプローラ固有の特殊なフォルダなんかもレジストリから簡単に取得、設定できて エクスプローラの状態に合わせたイベントも一通り用意されてる こんなのはさわり程度でできる
エクスプローラコントロールがあるの?
それ日本語の情報少なすぎてめんどくせ
ファイラーを作る大抵の理由は、そのアプリに必要な情報を絞り込んで表示させたいわけだから、エクスプローラ貼ったところで意味がないという。 DirectXのほうは興味あるけどわけわかめ。
959 :
デフォルトの名無しさん :2013/01/08(火) 11:18:28.21
コーモンダイアログ
ところで、おまえら的にはF#はどーなんだ? 一応、勉強だけは始めようと思うんだが。
まだ幼女だしなぁ、 おっぱい膨らんできたら考えてみる。
IDE機能と情報源が生えそろってきたら考える
WPFタンみたいに障害もちだったら無駄になるしなぁ
便利になったら覚える
965 :
937 :2013/01/08(火) 13:35:15.33
938さんに教えて頂いたTagを使ってフォルダとファイルが比較しているか調べるようにしてみたのですが
ヘッダーを押すと処理はしているようなんですが、ソートができなくなりました。
おまけにヘッダーを2回押さないとリストの内容が変わらなくなってしまいました
どうか先輩方コードを見ていただけないでしょうか?
デザイナーでlistviewを貼り付けただけでVC#の右下のプロパティー画面はいじくってないです
プロパティの変更などは全部コードに書いてあります。
http://ideone.com/qb5HaM
なげえ
Tagに入れるのはObjectだしbool入れてたってObjectの比較しちゃだめだよ 試しに bool itemxFolder = (bool)itemx.Tag; bool itemyFolder = (bool)itemy.Tag; とかやってそれ比較してみ。 つーかデバッガの使い方覚えようぜ。
968 :
939 :2013/01/08(火) 14:10:42.84
なんだ、先輩がいたんだw 俺よりよっぽどきれいなソースかいてらw 見てあげたいけど、出かけるから無理(週末まで戻らない) その件とは直接関係ないけど、ListViewにItem追加するたびにSortするだろうから、 大量にItem追加する際には、Sort止めないと、えらい時間かかるよ たとえば、System32がカレントディレクトリになった時とか
BeginUpdateとEndUpdateも入れといたほうがいい
972 :
970 :2013/01/08(火) 15:41:43.02
すいません、自分のミスでした。
>>970 一行一行何をやっているのかしっかり理解した上で、自分のコードに合わせて書き換えればいいと思います。
もともと、質問者がどこでミスしてるか教えてくれって質問のはずなのに
>>972 の書き方ってことは
自分はミスしてないと思って聞きにきたのかw
this.Invalidate()についてなのですが 一部の領域を無効にしようとすると this.Invalidate(new Rectangle(50,50,100,100)); という具合にすると思いますが、 これを複数のRectangleで指定したいのですが 難しいでしょうか?
複数回呼びだしゃ良いよ 一回じゃないと嫌ならInvalidate(Region)使う
複数回呼べばいいだろう
複数回呼ぶと複数回WM_PAINTが送信されてしまうみたいで。 リージョンは、離れた二つのRectangleなどの場合に リージョンにできなくて難しいです。
>>978 >複数回呼ぶと複数回WM_PAINTが送信されてしまうみたいで。
ねーよ。
間にUpdate呼んでるんじゃねーの?
あとつながって無くてもできるだろ? 想像だけでできないと思い込んでるんじゃないの?
パスからリージョン作成でできました。ありがとうございました。
お前ら完全になめられてんな(w
ろくすっぽ調べもせずに断言しちゃうところがね 初心者から見てもね お前の頭にはクラスの仕様が全部詰まってるのかってね
パスからリージョン作成でできましたんですが これ重いですね。軽くできないものでしょうか?
カビの生えた引き出しから出されたもの渡されてもね
軽くなりました。ありがとうございました。
国へ帰れ
>>983 何のこと言ってるのかわからんけど、知らないなら引っ込んでくれないかな。
あと調べもせずとか書いてるけど、こっちはコード書いて動かしてから 答えてるんだけどな。
C#スレを荒らしてるのは誰なんだ JAVA厨か?
糞スレ埋め
う
んこ
うめ
ぇ
ま
ん
こ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。