ふらっとVisual C#,C♯,C#(初心者用) Part105
HttpUtility.UrlEncodeって' 'を'+'に変えないの? これって結構問題の元だったりする?
どうやればアドレスを渡してキャストすることができるか分かりません。教えてもらえませんか? private delegate int EnumWindowsDelegate(IntPtr hWnd, int lParam); [System.Runtime.InteropServices.DllImport("user32.dll")] private static extern int EnumWindows(EnumWindowsDelegate lpEnumFunc, int lParam); ---- IntPtr[] ahWnd = new ahWnd[0]; //←これをコールバックに渡したい EnumWindows(new EnumWindowsDelegate(delegate(IntPtr hWnd, int lParam) { IntPtr[] ahWndTmp = (IntPtr[])lParam; //←ここで指定する方法が分からない //配列に追加 Array.Resize(ref ahWndTmp, ahWndTmp.Length + 1); ahWndTmp[ahWndTmp.Length - 1] = hWnd; } return 1; }), (int) ahWnd); //←ここで指定する方法が分からない
EnumWindowsの第2引数はポインタ型だ ていうか別にわざわざlParam経由させんでも 適当にフィールドなりローカル変数なりにList<IntPtr>置いといてそれにAddしていけばいいだろ あと渡すデリゲートは一旦ローカル変数に取り出しておいて EnumWindows終わった後でGC.KeepAliveしとけ
>>6 var group1 = new ToolStripMenuItem[]{ item11, item12,.. };
var group2 = new ToolStripMenuItem[]{ item21, item22,.. };
...
みたいに配列を持っといて
private void dropDown_ItemClicked( object sender, ToolStripItemClickedEventArgs e )
{
if( group1.Contains( e.ClickedItem ) )
{
...
}
else if( group2.Contains( e.ClickedItem ) )
{
...
}
}
ってやるとか。
>>5 var lst = new List<IntPtr>();
EnumWindows( ( hwnd, lParam ) =>
{
lst.Add( hwnd );
return 1;
}, IntPtr.Zero );
じゃあかんのか?
ローカルなデリゲートのメモリ上の位置って移動したっけ?
スコープ抜けるまでは有効なんじゃね?
>>7 >EnumWindows終わった後でGC.KeepAliveしとけ
終わった後にGC.KeepAliveするの?
>>7 ,9
ありがとう!まさかローカル変数にアクセスできる(ただしout変数にはアクセス出来ない)とは・・・C#楽すぎる
>>9 > ローカルなデリゲートのメモリ上の位置って移動したっけ?
移動どころかファイナライズされうる。
マーシャリングでポインタに変換された後はマネージから参照されないからGC対象になる。
アンマネージ実行中にGCが走るとあぼーん。
>>10 GC.KeepAliveは「このオブジェクトはここまで使用中だから勝手に消すなよ」ってマーク。
>>8 ありがとうございます
そのままだと自分の状態ではエラーが出たので、
イベントハンドラ内に配列を入れて、
private void dropDown_ItemClicked(object sender, EventArgs e)
{
if( group1.Contains(sender))
{
...
}
if( group2.Contains(sender))
{
...
}
}
としたところ、正常に使えました
まだ何もわかってないので、なんでエラーが出たのか分からないですが、自分の変更が間違ってないならこれで行きつつ、エラーの原因しらべて勉強します。
配列でグループ分けしつつ・・・というのは想像が付いたのですが、実現する方法を理解してませんでした。
勉強になりました。
ありがとうございました。
EnumWindowsのような同期型のコールバックの場合は GC.KeepAliveは不要だな。
GCが完全バックグラウンド処理になるのはいつですか? 今のままじゃC++に勝てない
並列(バックグランド)GCで無いほうが スループットは向上するよ。
というか、誰が勝とうとしてるの? お前?
今は広い部屋があるんだから ゴミの片付けなんかしないで 作業に集中しなさい。 ゴミで部屋がいっぱいになったら そのときに初めて片付ければ良いでしょ。
シープラプラ トモダチ コワクナイヨ
15の理想どおりに動いたとして 並んでも勝ちはしないだろ 生産性のために払った代償でもあるしな
並んだら生産性の分で勝ちになる
代償ってのは両方取れないって意味だ 並ぶなら生産性が疎かになるだろう
23 :
デフォルトの名無しさん :2013/06/26(水) 13:28:05.32
IME が ON のとき、Ctrl+F10(デフォルトではIMEメニュー表示)を、 IMEより先に取得して、imeのメニューを出さずに、プログラム側で取得するようにする方法はありますか? SystemCmdKeyより先にフックされてしまうようで、うまくとれません。 WindowsMessageでできるのかもしれませんが、いまいちやりかたがわかりません・・。 Windows7 標準のIME です。
23です。 すいません、書き間違いがありました。 × SystemCmdKey ○ ProcessCmdKey よろしくお願いします。
System.Xml.XmlReaderを使ってRSSを読もうとしたのですが、System.ServiceModel.Syndication.SyndicationFeedでエラーが出ます
using (System.Xml.XmlReader xdr =
System.Xml.XmlReader.Create("RSSのURL"))
{
System.ServiceModel.Syndication.SyndicationFeed feed =
System.ServiceModel.Syndication.SyndicationFeed.Load(xdr);
}
System.Xml.XmlException はハンドルされませんでした。
Message=名前 'RDF' と名前空間 '
http://www.w3.org/1999/02/22-rdf-syntax-ns# ' が指定された要素は、フィードの形式を許可されていません。
どうすれば読むことができるのでしょうか。よろしくおねがいします
簡単に言えば 「RSSの規格が古くて読めねえよ」 ってことです。 RDFが出てくるのはRSS1.0だけど、SyndicationFeedが対応してるのはRSS2.0とAtom1.0だから。 SyndicationFeed使っている限り、世界が滅亡するまで待っても読めないので 他の方法を探しましょう。私は知りません。
27 :
25 :2013/06/29(土) 11:35:22.52
>>26 ようやく悩みがとけました。
xmlで処理していくしかなさそうですね
丁寧な解説ありがとうございました。
HttpWebRequest/HttpWebResponse でファイルをダウンロードする場合、 byte[]をバッファーにしてFileStreamに書き込むわけですが、 今の時代(のPC性能とネットワーク速度)に適切なバッファーサイズってどのくらいなんでしょうか?
今の時代でもネットワーク速度なんてピンきりなんですから一言では言えないと思いますが
あとTCPに関しては送受信単位はTCPウィンドウで指定されるので そこで指定するバッファのサイズと一致しない
8192がいいよ
数十KBとっとけよ
大きいとプログレスバー等に通知する場合ガタガタになるという
ファイル閉じるときは CloseするのかDisposeするのか どちらが正解ですか?
Streamから派生している場合CloseとDisposeは等価(であるべき) まあusingを使え
CloseしてからDispose
Closeは中でDispose呼ぶだろ
それはアプリ終了時に〜だからDisposeしなくていいだろって言うようなもの
全然違うし using使えでFAですし
意味論的に正しいのはCloseだと思う Dispose の本来の目的は、自分自身が責任をもつリソースの処分
Close=DisposeはMSがマニュアルに明記してる上、 usingを使った方法も説明されているから問題ない ただ意味的にって話なら、usingなしの単独の場合は Closeを使ったほうがいいだろうな
精神衛生上はCloseが良いかと
IDisposable実装してるクラスはとにかくusingって覚えてるけどマズイの?
寿命が単一メソッド内に収まらないとか間々ある
オープンした状態のReaderなりWriterをメンバーとして保持してるクラスは、 そのReaderなりWriterをusingで囲むわけにはいかない
あたりまえだろハゲ リソース解放の責任がどこにあるかというだけ
ファイルとかdisposeしないとファイルが使用中になってたような
あたりまえだろハゲ ファイルハンドル握ってんだよ
ハゲてないよ
ステータスを外部に依存するメンバ変数ってどうなのよ
なにいってんだハゲ そういうリソースをメンバに持ってるクラスこそIDisposableを実装すんだろが
52 :
デフォルトの名無しさん :2013/07/02(火) 18:18:49.50
エクセル操作に関して double型からRange型への変換方法を知っている方がいたら教えてください
それは変換するもんじゃなくて設定するもんだと思うが やりたいことは具体的に
54 :
デフォルトの名無しさん :2013/07/02(火) 18:40:36.62
エクセルの値を読み込み ある関数で計算する その計算結果をエクセルに出力させる というプログラムです。 設定するものなのですか。 調べます、ありがとうございます。
ICカードを扱う無料の.NETライブラリありますか?
57 :
デフォルトの名無しさん :2013/07/02(火) 21:16:18.86
>>56 具体的でなくてすみません
ユーザー設定の仕方がいまいちわからず
別の方法を探していました
CSVで出力すれば良いとわかったので
解決しました
ありがとうございます
ユーザー設定というキーワードが出てきたけど…
59 :
デフォルトの名無しさん :2013/07/02(火) 21:27:15.76
設定で数値の型を無理やり変えることができる と思ったのですができませんでした
VBAの方が早そうな気が
61 :
デフォルトの名無しさん :2013/07/02(火) 23:19:40.39
VBAが良かったのですがC#で作れとの命令だったのでした あしからずorz エクセルデータを読み込んで、double型の関数で計算 その計算結果をCSVに出力後、gnuplotでグラフ描いて終わり プログラムは完成して納期に間に合わせることができます アドバイスくれた方々に感謝です
どんなグラフ書いてるか知らんが、EXCELだけで完結する気がするが わざわざC#で作ってぼったくりか
63 :
デフォルトの名無しさん :2013/07/03(水) 13:20:04.26
なんちゃら理論で3Dのグラフを描くらしいです 頼まれたのはコンソール版でのファイル入出力部分 最終的にはwindowsアプリケーションにしたいと言われています
話ずれるけどofficeもVBAじゃなくてC#で書けるようにならんかねー
Cでしかやったことないけど、間接的にC#でも書けると思う コントロール作って、フォームに貼り付ける形にしたりVBAから呼び出したり、 officeのコントロールを叩いてWindowsフォームアプリからoffice呼び出す形にする グラフの描画だけしたいならchartコントロールで。ただこのコントロールは非常に使いにくいw
そして次にお前は Excel が入っていないPCで動かないじゃないか!! と言う
VBA使わずにC#アプリでOfficeを制御する派 今のVBAってまだVB6なん?
69 :
デフォルトの名無しさん :2013/07/04(木) 18:50:11.97
Form閉じた後に、別スレッド上からInvokeメソッドで呼び出すとObjectDisposedExceptionが投げられます WebBrowserクラスを派生して非同期でデータをダウンロードするようにしているのですが、どのように対処すればいいですか?
>>70 根本的に設計が汚い。
この際だから依存関係逆転ぐらい覚えよう。
要するにイベントを使う
72 :
デフォルトの名無しさん :2013/07/04(木) 21:05:11.65
行番号を表示させようとしてます int lineSpacingPixel = (int)Math.Round(font.GetHeight(g),0); for (int i = 1; i <= lastLine + 1; i++) { g.DrawLine(p, new Point(myPictureBox.Width - 5, (int)(lineSpacingPixel * (i + 1))), new Point(myPictureBox.Width, (int)(lineSpacingPixel * (i + 1))) ); } これをフォントと重ね合わせると基本的にはうまくいくんですが、 フォントによっては改行するごとにズレが生じる事があります 行間を取得する方法として何かまずいんでしょうか
>>70 Invokeする前にIsHandleCreatedやIsDisposedプロパティでハンドルが生きてるか確かめる
で、確かめた後InvokeするまでにFormが閉じられて死ぬ未来が見えました
try catch で握り潰せばいいと思う
根本的に作りが腐ってると思う
というか、Invokeでやりたい処理ってなんだよ 握りつぶしていい処理ならそもそもやらんでいいかも知れんぞ
根本厨つてどこにでもいるなw
ありがとうございます、間違ってるかもしれませんが、
WebBrowserクラスのDisposedイベントでスレッドが動いてたらAbortすれば動くようになりました
>>77 外部クラスのログをFormのテキストボックスに表示させたかったんです
よかった、これで解決ですね
へえC#でExcel扱えるのか
Windows上ならExcel扱えない言語のほうが珍しい
人類の夢だからな
Appication.Exitを呼ぶと
次の項目のどれが、どの順で実行されますか?
A Exitを呼んだスレッドで作られたControlとHandleの破棄
B ほかのスレッドで作られたControlとHandleの破棄
C Exitを読んだスレッドのApplication.Runから抜ける
D ほかのスレッドのApplication.Runから抜ける
>>70 ではないのですが、BeginInvokeするためだけに作った
Controlが、終了処理中、HandleDestroyedが呼ばれることなく
いつの間にか死んでます。
不定
とりあえず、Application.Exitというのは、ほかのスレッドの ハンドル破棄やApplication.Run終了もやってくれるという 認識でいいですか?
ハンドルの破棄はExitが直接やってるわけじゃないだろ
88 :
デフォルトの名無しさん :2013/07/05(金) 15:08:55.36
ts
89 :
デフォルトの名無しさん :2013/07/05(金) 15:15:51.48
C#でKinect for Windows SDKを利用してプログラム開発を進めようと思うのですが Kinect独自の画面認証や体のジョイント認証と混同して 単純な四角形の描画やdelay関数を用いることは出きるのでしょうか??
>>81-82 > Windows上ならExcel扱えない言語のほうが珍しい
そう、C からでも使える。
>>86 マルチGUIスレッド自体がグレーだよ
不定の意味分かる?
WebBrowserを派生して自前のメソッドでDocumentTextにソースを流し込んでいるんですが、 リンクをクリックした場合も、自前のメソッドでDocumentTextにソースを流し込むようにしたいのですが、 クリックされたリンクを取得して自前のメソッドに投げることはできたのですが、 webBrowser自体の?でリンクをクリックしたときに自動でページ移動するみたいです Navigatingイベントを見てみましたが、これをどこで潰せばいいのかわかりません どうにかヒントだけでもください。お願いします
WebBrowserユーザー=糞の図式が成り立ちつつある
OnBeforeNavigateのことか?
BeforeNavigate2とかなかったっけ あればそれでキャンセルできる なけりゃWebBrowserじゃなくてSHDocVwかなんかから引っ張ってきたらいい
ノベルゲー的なものを作ろうとしています そこで画像の表示なのですが、どのように表示させるのがセオリーというか、ベターなのでしょうか? 今はpictureboxを複数重ねて同じ位置に配置し、透過して表示させています(背景、キャラなど) しかし、これだと後々キャラが動くモーションなどを組む時に困る気がしてきまして・・・
Paintイベントで全部描く
ノベルゲーをつくるんじゃないんです ノベルゲー的なナニカを作りたいんです
「モーション」はどういうデータ形式(ファイル)で持ってくるつもり?それにあわせればいいだろ とりあえず静止画のみで作ったら?
WPFのほうが良さそう(てきとう)
HTML CSS javascriptだな
>>96 Windows Form前提なら、GDI+を覚えた方がいいよ。
とりあえず、Pictureboxを昔のゲーム機のスプライトみたいに使うのは
Windows的には正統的な方法じゃないとだけ言っとく。
WPFなら正当だけどな
動きゃいいんだよ
これからはSilverlightがお勧め。
Dictionary<TKey,TVal> が順番を保存しないという仕様なのは前提として。 var dic = new Dictionary<int, int>(); dic[0] = 0; dic[1] = 1; var arr1 = dic.Values.ToArray(); // { 0, 1 } dic.Remove( 0 ); dic.Remove( 1 ); if( dic.Count == 0 ) { //dic.Clear(); } dic[0] = 0; dic[1] = 1; var arr2 = dic.Values.ToArray(); // { 1, 0 } //////////// dic.Clear(); のところでコメントを外すとarr2 も{ 0, 1 }になるんだなぁ キーのハッシュのキャッシュのせいかなぁ 未定義の動作だからこんなこと考えても仕方ないけど。 それは重々承知としても、無意識に順番を想定しちゃうコード書いちゃうことってありませんか……
SortedDictionaryじゃ駄目なの?
ありゃSortedDictionary<TKey, TValue>なんてあったのかー!! お恥ずかしい こういうところがタコなんだなぁ。
いや違った ソートしてほしいんじゃなくて 挿入順を保存してほしいんだった……
自分で番号を保存すればいいんじゃね
そういう標準を外れるようなことをするのは嫌いなので
分かるわ あとWebBrowserで〜ってやつ
配列>ArrayList>Listって流れだろ Listって順番保障してなかったっけ?
そりゃ保証してるけど今はあんまり関係ないだろう まあOrderedDictionaryなんての作る場合はお世話になるが
>>106 はDictionary使ってるが、そもそもホントにDictionaryの必要あるのか?
バイナリサーチとハッシュ表を挙げないあたり、 理解してないのがわかるな
表示時だけ挿入順でソートし直して表示したいってことか? 挿入順を記憶しておいて 表示する時にSortedDictionaryに突っ込み直して 先頭から表示するしか
要素の特定のプロパティをキーにするような場合は KeyedCollectionというのもあるぞ
初心者のうちはオーダーとか気にせず全部Listに突っ込んでLINQ使えばいいと思うよ
>>120 常に追加順で扱うならListかLinkedListでいいだろ
Dictionaryに入れるのであれば
要素の比較でソートはしたいってことじゃないのか
Dictionaryを使う動機は普通は「キーを使って高速に検索したい」だろう? どっからソートが出てきた?
遡るとそんな話じゃない >無意識に順番を想定しちゃうコード書いちゃうことってありませんか 俺は全く全然さっぱりない
>>123 ソートではなかったな
ソートの話が多くてつい言ってしまったわ
C#って感覚でガンガン作れるから設計書っていらなくないですか? 生産性と創造性を阻害するだけに思えます
お前はなにを言っているんだ
適当でも気が付くと形になってるC#すげえって事だろ
>>127 3Ks 辺りまでは、同意
俺のショボい頭では、それ以上はドキュメントなしでは無理
C#でもクソ言語でも型設計はそれほど変わらんだろ
外部設計とか言語全く関係ないしなあ
俺は別にどんな言語でも感覚でガンガン作りますが
コードがドキュメントです! キリッ!
もの作ってから設計図書くっておかしくない?
細けぇ事はいいんだよ (ヾノ・ω・`)
設計書は納品が終わって落ち着いてから書くモノだよ
設計仕様書は、制作前に作り適時更新するもの。 納品仕様書は、完成後に作るもの。
テキストボックスに改行マークを付けたいと思い、以下のメソッドを作成しました。 改行マークは意図したところについてくれるのですが、テキストボックスを「改行で」スクロールすると テキストボックスの一番下の空白(テキストボックス扱いじゃない隙間?)に 改行マークの残像のようなものが付き、増えていってしまいます。 なにか防ぐ手はないでしょうか。 public void New_Line_Check(TextBox textBox) { //ダブルバッファリング用 「Height+100」は試行錯誤しようとした後です、気にしないでください Bitmap textBox_g= new Bitmap(textBox.Width, textBox.Height+100); Graphics g1 = Graphics.FromImage(textBox_g); //Bitmapに改行マークを描写後、textBoxに写す using (Graphics g2 = textBox.CreateGraphics()) using (Brush brush = new SolidBrush(Color.DarkGreen)) { // 改行検索 Regex regex = new Regex(Environment.NewLine); foreach (Match match in regex.Matches(textBox.Text)) { // 改行位置取得 Point point = textBox.GetPositionFromCharIndex(match.Index); point.Offset(-2, 2); // 出力位置微調整(お好みに応じて) // 改行記号(ここでは"↓")描画 g1.DrawString("↓", this.Font, brush, point); } g2.DrawImageUnscaled(textBox_g, 0, -2, textBox.Width , textBox.Height + 100); g1.Dispose(); } }
(キーなどの)入力をオーバーライドして、改行が入ったら「↓」文字を挿入しちゃえw
そしたら↓文字もコピー対象となってテキストエディタとして死んでしまうw
>>139 あ、更にいじってたら自己解決しました
すみません
Bitmap textBox_g= new Bitmap(textBox.Width, textBox.Height+100);
を
Bitmap textBox_g= new Bitmap(textBox.Width, textBox.Height-10);
とちょっと短くしたら何故か綺麗になった
なぜか分かんねえけどもうこれでいいやw
>>135 設計図は頭の中
設計図を書いてるように見えるが、単にダンプしてるだけ
ソースから生成して多少手直ししてる 設計書なんてバカバカしいよ あんなものは高級な言語や開発環境が無かった時代の遺物であって現代にはそぐわない
設計から開発までするところは適当だな 下請けに来る仕様書の分厚さと細かさはびっくりするぞw
土方に投げるための懇切丁寧な仕様書ってその人月でプロダクト仕上がる勢い
>>145 まあ、大昔のリスト出力と同じで 価格 = 単価 × 枚数 だしな
いまc#で2chの専ブラを開発しているのですが分からないことがあるので質問させて下さい スレッドタイトルの検索はどのように行うのがベターなんですか? find 2chの検索結果htmlを切り出せばいいのでしょうか?
それでいいんじゃない?
スレ一覧をキャッシュしておいて そこから検索するのが普通じゃないの
さすがに行ったことのない板のスレ一覧まで取得する構造にはしないだろ 専ブラによって見に行く場所違うね
板によっちゃ新しいスレが乱立してキャッシュじゃカバーできないからな
>>149 が作ろうとしてるのがどういう使われ方を想定してるのかによってベターな方法は変わる
行った事無い板のスレタイ検索とかしないだろ
自分がする、しないは関係ない
専ブラの仕様としてそんなの見た事無いし 何でそんな俺俺仕様まで想定して答えないといけないの そんなのはエスパーの仕事だよ
>>156 質問を読めば今アクセスしてる板のスレ一覧から検索したいのではなく、全板から検索したいというのが分かる。
エスパーである必要はない。
問題はfind 2ch以外で全板検索をかけることができるのかどうか?って点だよ。
どこかから全板のスレ一覧を落とせるか、もしくはhtml以外でのfind 2chへのアクセス方法が用意されているかどうかって点。
おそらくないだろうな。html切り出しがベターだと思う。
>>154 行ったこと無いからこそ検索が必要なんだけどな。
普段行ってる板ならそこでさがしゃいい
>>150-157 レスどうもです
取得したスレッド一覧別にスレッドのタイトル検索機能はつける予定です
それとはべつに全板からスレッドのタイトル検索機能をつけたいんです
アプリ内で全板のスレ一覧のデータを維持し続けれません
なので外部のAPIに任せたいのですがそれらしいものは見当たりませんでした
しかしたとえばiOSアプリのTwinkleだったりAndroidアプリの2chMateなどにはそういった機能があります
なので方法はあるはずなんです
その結果私が考えつけたのが
>>147 の質問になります
>>160 本当にある?
全板横断のスレタイ検索って事だよね?
俺の mate では出来ないような…
JaneStyleだとfind.2ch.netとdomo2.netとttsearch.netからスレタイ検索できるみたい 試してないけど
>>162 2chMateにはなかったですか?適当なこと言ってすみません
2chMateは使ったことはがありませんのでないかもしれません
>>153 find.2ch以外にもその手のサービスはあるんですね
複数のサイトから検索結果を得られると信頼性があがりますね
V2CにもWebスレッド検索ってのがあるな 検索サイトに任せてんでしょ
にちゃんが要求する専ブラの仕様はよくわからんが 普通に板一覧取得してそこから各板のスレ一覧取得してって流れじゃダメなん? あんまし負荷かけたらダメみたいなルールがあるんか?
>>167 それはfind2chでも同じじゃないの?
find2chは内部でどうやってるのかな
>>168 find.2chって言うぐらいだから運営のだろ?スレが立つたびにローカルに保存してるんじゃない?
>『2ちゃんねる検索』『2ちゃんねるブラウザp2』は弊社のサービスですが、2ちゃんねるは弊社のサービスではございませんのでご了承ください。 とあるぜ
すみません。InstallUtil.exeが.net 3.5には無いんでしょうか? 1.1と2.0と4.0のしか入っていないみたいなんですが。 VisualStudio2008はインストールしています。
3.5=2.0+α
2.0のでいいのですね!
テキストボックスで描写の検知をしたかったため、テキストボックスを継承したコントロールを作っています。 サイトを参考に作成して概ね希望する動作はしたのですが、1点わからないことが出たので教えて下さい。 はじめてWndProc(ref Message m)を使ってるのですが、最後の「base.WndProc(ref m);」は何のために呼んでいるのでしょう? 検知を行ったら継承元にMessageを送らないといけない理由がわかりません //描写等の取得 [System.Security.Permissions.SecurityPermission( System.Security.Permissions.SecurityAction.LinkDemand, Flags = System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)] protected override void WndProc(ref Message m) { const int WM_PAINT = 0x000F; switch (m.Msg) { case WM_PAINT: New_Line_Check((TextBox)this); break; } base.WndProc(ref m); }
WM_PAINT以外はデフォルトの処理をさせるため WM_PAINTはbreakしてbase呼ぶから、やっぱりデフォルトの処理を後からさせてる デフォルトの処理をしないと、メッセージが来ても何もせずに終わる(キー入力処理も描画処理も何もなし)
WndProcは言ってみれば脳みそに到達した情報をバイパスしてる WndProcをオーバーライドするとどんな情報が来たか分かるし、ある種の情報を握りつぶしたり改変したりできる バイパスだからちゃんと元の脳みそに伝えてやる(base.WndProc)ことが必要で、 そうしないとウンコが出そうなのに垂れ流したりする
その例えはどうなのよ…
屁だと思ってだしてみたら実だった、とか
よし 通れ
>>175 なるほど、分かりました
例外処理以外の時に対応するためなんですね
ありがとうございました
>>176 あ、ありがとうございました・・・
>>139 >>174 です
その後、改良してテキストボックスがスクロールした時、マウスホイールした時、文字入力した時など、自分の想定される場面で改行マークを付けることができるようになりました。
しかし以下の処理が実現出来ません。
「ファイルを開く」メニューを用意しており、その中のLoad_File()メソッドで、StreamWriter機能を使ってテキストファイルを読み込んでいます。
この時、ファイル読み込み直後に自動で改行マークを付けたいと考えており、
下記ソースのように処理の最後に改行マークを付けるNew_Line_Check()メソッドを置いてみたり、自動で処理するよう試みているのですが、
処理順が ダイアログ「OK」→改行マーク処理(一瞬読み込んだテキストにあった形で表示されるが消える)→テキスト読み込み
となり、改行マークのないテキストがテキストボックスに表示されてしまいます。
考えられる問題点として、
>>139 のグラフィックが読み込み処理で破棄されてしまうのかなとusingを検証用に外してみたり、
イベント処理の順番かと下記メソッドを丸々try{}catch{}で括ってfinally内にNew_Line_Check()メソッドを置いてみたりしたのですが、解決出来ません。
(
>>174 のテキストボックスの描写ごとの呼び出しもテキストファイルの読み込みには効果がないようです)
なにか解決の糸口はないでしょうか。
//ファイルを開く
private void Open_File_Menu_Click(object sender, EventArgs e)
{
//ダイアログを表示する
//OKボタンがクリックされたとき
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
//パスを保存
File_Name = openFileDialog1.FileName;
//読み込み
Load_File(File_Name);
}
//ダイアログを閉じる
openFileDialog1.Dispose();
TextBox1.New_Line_Check(TextBox1);
}
WM_PAINTをフックしてるんなら TextBox1.New_Line_Check(TextBox1);って呼ばないで TextBox1.Refresh();とかしてやれば再描画されるんじゃねーの? でも描画のたびに全行スキャンするなんて重そうだね♪ あと、ちょっとは命名規則を考慮してみよう!
デスクトップにテロップのような字幕を表示したいのですが フォーム内などではなくデスクトップに文字列を表示するのはどういった方法でやっているのでしょうか?
>>183 GetDesktopWindow()でデスクトップのウィンドウを取得して
draw
方法は色々あるけど、透明なウインドウ作って全面に配置するのが一番楽そう
>>182 レス有難うございます
しかし、TextBox1.Refresh();では改行マークのないテキストが再構築されるだけで、改行マークは付けれませんでした
>>181 のファイル読み込み時の問題はまだ解決できていません
wordなり、有名なテキストエディタなりでは実現できているので、何かしら方法はあると思うのですが・・・
もし他に妙案があれば教えて下さい
スキャン範囲については何かしらの方法で改善(範囲限定)しようと思っていますが、当面の問題を解決してから考えようと思っています
レイヤーウィンドウ使った方が簡単なんじゃね?
透明なウィンドウはマウスイベントの透過が難しいと思われ。
よく知らないが、base.WndProcって描画はしてないの? New_Line_Checkの前にbase.WndProcを呼んだほうがいいような気がするが…
>>190 ありがとうございます
試しに先にbase.WndProcを呼んでみましたが、解決には至りませんでした
今は
>>139 でGraphics g2 = textBox.CreateGraphics()とCreateGraphics()で描写をしているから
何か別の処理が挟まると消えてしまうのかなと思っていて、別の方法で描写出来ないか考えています
でもテキストボックスだからペイントイベントはできないぃぃ・・・
色々いじっていたらFocus()でフォーカスをテキストボックスに当てた時に改行コードが消えていることが分かった EnterイベントでもNew_Line_Check()呼んでるのになんで・・・ Focus()消したら改行マーク表示されるよ!でも検索機能が死ぬよ!もうだめぽ!
改行コードじゃない、改行マークだ・・・
もういっそフラグ制にしてタイマーで回そうかな・・・ でも糞重そう
あのなー 最初からみんな見てる人は感じてたと思うけど エディタみたいな機能を追加するのにTextBoxクラスを継承しても無駄無駄無駄 そこには屍しかない これに尽きる 元になってるコモンコントロールのEditコントロールがそんな拡張に向いた仕様じゃないのねー 早めに撤退して自前のクラス作ることを考えたほうがいいよ
禿同 作ってみればたいしたことないから作ったほうがいい
そして作ってみてびっくり 自作エディットコントロールの重さに・・・
今どき遅くなりようがない
アホくさいから外部コンポーネント使うわ
200 :
デフォルトの名無しさん :2013/07/19(金) 03:05:06.94
開発環境はVS2012Proです
http://www.atmarkit.co.jp/fdotnet/dotnettips/931uptime/uptime.html を参考にしてPCの起動時間を取得しようとしましたが、形式が"dd.hh:mm:ss.ms"なので見辛いです
そこでStringBuilderで分割、整形したのはいいのですが1日未満の場合エラーを吐いてしまいます…
場合に応じて"dd日hh時mm分ss秒"や"hh時mm分ss秒"、"mm分ss秒"のような形式で表示させるようにするにはどうしたら良いでしょうか
コードは下記のとおりです‥
PerformanceCounter upTime = new PerformanceCounter("System", "System Up Time");
upTime.NextValue();
return upTime.NextValue(); //2度呼び出し
string uptime = Convert.ToString(TimeSpan.FromSeconds(GetSystemUpTime()));
StringBuilder sb = new StringBuilder(uptime);
sb.Length -= 8; //小数削除
sb.Replace(".", ":"); //置換
string r1 = sb.ToString();
string[] lines = r1.Split(':'); //":"で区切る
MessageBox.Show(lines[0] + "日" + lines[1] + "時" + lines[2] + "分" + lines[3] + "秒"");
202 :
デフォルトの名無しさん :2013/07/19(金) 03:34:47.33
>>201 ありがとうございます
色々試してみます
IEnumerable<T>をstructで実装した場合 yield returnの自動実装よりnewが少なくなる分パフォーマンスが高くなる可能性はありますかね
IEnumerable<T> を明示的に実装して、 返値のみstruct を返すようにシグニチャーを変えたメソッドを普通に実装すれば、f oreach は new 分だけ速くなるだろうね。 とにかく、インターフェースにボクシングされないように メソッドを呼べば foreach 以外も同様。 ジェネリックメソッドでは where を使用する。
いやLINQの拡張メソッド(Whereとか)を呼んだら例外なくボックス化されるよ ほとんど意味ない
void Method<T>(T value) where T : IEnumerable<T> {} こういう意味で書きました。
>>207 void Method<S, T>(S source) where S : IEnumerable<T> の間違いだよな?
よく考えてみるとわかるが、意味ないんだよそれ
void PrintAll<S, T>(S source) where S : IEnumerable<T> {
foreach (T item in source) Console.WriteLine(item);
}
foreachを展開すれば次のコードと等価
IEnumerator<T> e = source.GetEnumerator();
while (e.MoveNext()) { T item = e.Current; Console.WriteLine(item); }
foreachのボックス化を避けるにはIEnumerable<T>.GetEnumeratorを明示的実装して
構造体を返すようにパブリックなGetEnumeratorをオーバーロードするんだけど、
この場合はIEnumerable<T>インターフェイスを通してGetEnumeratorを呼び出すので、
source.GetEnumerator()の戻り値はIEnumerator<T>にボックス化されて返ってくる
>>208 そういう意味です。申し訳ない。
言われてみればそうかもしれない。
S が class ならそういう挙動になると思う。
struct なら特殊化されそうな気がするけど、どうなんだろう。
void Method<T>(this MyList<T> list, ...) { }
みたいに、IEnumerable<> を実装したクラスを引数に取るように、わざわざ定義してあげるしかないのかな。
new されないように LINQ 使おうとすると、メソッド分だけ struct :IEnumerator<> を実装しないといけなくなりそうだから現実的じゃないね。
>>209 特殊化されるかどうかとか関係なくて、
問題はIEnumerable<T>.GetEnumeratorの戻り値が結局IEnumerator<T>であること
IEnumerable<T>を通す以上、GetEnumeratorから列挙子が戻る時点で必ずボックス化される
君の言うように個別にメソッドを用意するしかない
ILよりもJIT結果のが重要だと思うがどうなんだ
戻り値も受ける側もインターフェイスなのに、さすがにそんな都合のいい最適化はないよ
IEnumerableよりベタ配列の方が速いのは仕方ないよね
>>210 本来使えないはずの GetEnumerator() を、where で指定することで使用できるようにしているので、インターフェース側のメソッドのシグニチャで、コンパイル時に型が決定するということですね。
では、インターフェース側で setter を持つメソッドが定義されていて、それを同様にして使用した場合、ボックス化されてしまうのでしょうか。
>>214 setterを持つメソッドの意味がよくわからないが
そもそもジェネリックとか全く関係なくて、戻り値の型がインターフェイスだから
戻り値はボックス化されるというだけの単純な話だぞ
>>215 setter を持つプロパティのミスでした。
戻り値の型がインターフェースとありますが、それは IEnumerable<> での話であって、
当然 T : IEnumerable<> で明示的実装により struct な IEnumerator<> の実装を返せば、
戻り値の型は struct ですよね ?
そこで、ジェネリックメソッドで where T : IEnumerable<> としたとき、
var enumerate = list.GetEnumerator();
の var は list の方のシグニチャを優先するのか、IEnumerable<> の方のシグニチャを優先するのか、
という話をしたかったので、無関係ではありません。
せっかくなのでテストをしました。修行中の身ゆえリンクは張れません。堪忍
ideone.com/pzAlhg
続き
IEnumerable の方はおっしゃる通りの動作となりました。理由は
>>214 に書いた通りなのだと思います。
では、setter を持つプロパティについては、どういう動作になっているのでしょうか。
明示的にボックス化をすると、コピーが出来てしまうので当然こういった動作になるのはわかります。
しかし、明示的に書かなかった場合に、
IEnumerable<> の時と同様に ITest.Property が呼ばれているなら、
ボックス化が起き、コピーが作られると思ったのですが。。
>>217 特殊化されてるから。
MethodA<T>(ref T value) をTestで特殊化したら MethodA(ref Test value) になるから当然ボックス化は発生しない。
同様に、IEnumerator<T> MethodC<T>(IEnumerator<T> e) を特殊化したら
IEnumerator<Test> MethodC(IEnurmerator<Test> e)
戻り値も引数もどう見てもインターフェイスだろ? だから当然引数も戻り値もボックス化される。
話がごっちゃになってるなあ Method(T obj) where T : IHoge { obj.Hoge(); } の形では、Tが値型の場合でも特殊化のおかげでobjのボックス化は発生しない。 x.GetEnumerator()でボックス化されるのは "xではなく、" "GetEnumeratorの戻り値"。 それは単にGetEnumeratorの戻り値がIEnumerator<T>だからであり、上のとはまた別の話。 IEnumerator<T>をいくら特殊化しようがインターフェイスだろ。
ジェネリックメソッド内で x.GetEnumerator() を呼び出す時、 (x as IEnumerable<>).GetEnumerator() という書き方とは別の方法で、コンパイラは x 自体のボックス化をせずに IEnumerable<>.GetEnumerator() を呼び出すということでしょうか? その時の GetEnumerator() のシグニチャは IEnumerable<> での定義によると。
シグニチャは関係ないだろって言われてるのに
なんでドボンはIDisposableなオブジェクトを放置する糞コードを晒したままにしてるの?
いやdobon無いと何も作れないから困る
>>223 ありがとうございます。
VBSなんかでもコンピューターの情報を取得するサンプルがありますが、
どこを見ても必ずforeachでまわしてるので疑問に思ってました。
デュアルブートだったら2つ取得することもあるかなと思いましたけど、
起動してないOSの情報なんて取得出来るのかなと・・・。
>>221 System.Collection.Generic.List<T>.GetEnumerator()の戻値の型は IEnumerator<T> ではなく、List<T>.Enumerator なので、シグニチャは関係あると思うのですが。
List<T>.GetEnumerator() を使用しても、新しくヒープにインスタンスが作られないように、IEnumerable<T> をわざわざ明示的に実装しているわけですし、先ほどのテストでもこれが正しいことは確認出来ると思います (コメントアウトを外した時の挙動で)。
class Form1のクラス以外でtextBox1.Textが操作ができないのですが 他のクラスで操作したい場合はどのように扱うのがいいのでしょうか?
ほかのクラスにform1を渡してform1.textBox1にアクセス class hoge { public hoge(Form1 form){ _form1 = form; _form1.text="hoge"; } Form1 _form1; } class Form1 { hoge _hoge = new hoge(this); }
>>227 だから実装はどうあれ戻り値はIEnumerator<T>だろって言われてるんじゃねーの
現在C#で関数型プログラミングの勉強がてらオブジェクト指向な自作アプリを関数型スタイルへと移行しているのですが、クラス構造の移行の考え方?がよくわかりません。 staticメソッド内の副作用がないロジックについてはある程度分かってきたのですが... たとえば私の作るアプリ(ゲーム)の9割以上の部分が下記の構造で動いているのですが、関数型プログラミングの考えでいくと、この構造はどのように変わっていくのでしょうか? ideone.com/XUM8kV (URL貼り付けNGくらったのでこれですまそ)
夏休みにしては手の込んだ釣りが横行してるな ふらっとスレにも来てた
234 :
デフォルトの名無しさん :2013/07/23(火) 21:18:47.10
>>229 レスありがとうございます
動作させてみたのですが、よくわかりませんでした
釣りとかセンスとか 煽りはなしでお願いします
>>230 List<T>.Enemerator が IEnumerator<T> を実装しているのは当然です。
現在問題にしているのは、ジェネリックメソッド内で、GetEnumerator() を呼ぶ時に、IEnumerable<T> というインターフェース型に『ボックス化』して呼んでいるのか、という点です。もともとは、新しくヒープにインスタンスが作られないように、という問題でしたし。
シグニチャについては、where で指定したインターフェースの方になることは、先ほどのテストからも理解しました。しかし、これではそのオブジェクト自体がボックス化されるかがわからないため、これを確認するテストも行いました。
その結果、setter のあるプロパティを持つインターフェースについては、ボックス化は起きていないと考えました。
以上から、
>>220 のように考えました。
これがあっているのかを確認したいのです。
>>234 Formが他に参照を握られるのではなく、
Formが他の参照を握るようにする。
>>237 >>220 で合ってるよ
ジェネリックは実行時に特殊化されるが、
メンバのバインドはあくまでコンパイル時に行われる
実行時にはすべてのメソッドはその名前や引数だけでなく
それを定義してる型の型名によって明確に区別されていて、ダックタイピングのような動作は一切しない
>>239 残念ながらこれはセンスの問題で初心者かどうかはあまり関係がない。
っていうか、こういうのに限っていつもは誰かを罵倒してるご都合主義野郎なんじゃないの。
言っとくけど俺は初心者に上から目線で物を言ったことも罵倒したこともないんで。
勉強はできるが頭は悪いアスペの典型だな
>>240 なるほど。
C# でインターフェースのメソッドを呼ぶ時は、
型キャストを行って呼ぶようなコードしか見たことがなかったので、
こういう動作があることを知りませんでした。
ありがとうございます。
どうでもいいけど値型をasでキャストするのキモい nullになることはないんだからCスタイルのキャストで書けよ
デザインとロジックの分離がされていると、とても見やすいコードになります。
マインスイーパーを例に取れば、フィールドを表す変数や、フィールド上のマスを開けるなどの操作 (メソッド) は、ロジック用のクラスで行います。
デザイン、つまり、Form 側ではそのロジック用のクラスをインスタンスとして持ち、その情報通りに表示することを徹底します。ロジック用のクラスでフィールドが更新されたかどうかを得るには、イベントを実装すると良いと思います。
もし、その自作のクラスがデザイン用である場合、
>>229 のように関連するオブジェクトがデザイン用であってもインスタンスとして受け取ることは普通です。
ただし、テキストボックスのみを対象にしているならその TextBox のインスタンスのみを渡す方が良いです。これは、その自作クラスからアクセスできるオブジェクトの数が少なくなり、他には変更できない、ということになるのでコードが見やすくなるためです。
また、同様の理由で、TextBox の基底クラス程度で済むものなら、基底クラスのインスタンスを渡す、というようにします。
>>241 だからさ1読め
>こういうセンスの人はプログラミング向いてない
なんてレスいらねースレなの
>っていうか、こういうのに限っていつもは誰かを罵倒してるご都合主義野郎なんじゃないの
>言っとくけど俺は初心者に上から目線で物を言ったことも罵倒したこともないんで。
妄想癖やばいだろ。
>>239 に対してなんで、罵倒やらご都合主義やらが出てくるんだよw
思考が飛躍しすぎて恐いわ
こっちも精神年齢は大差なさそーだな
>>244 where で指定されているため、
キャストで例外が飛ぶことがないので、
速い as にしました。
例外を飛ばしたい時は別として、
as の方が括弧の数が少ないので見やすくて好きです。
構造体をインターフェイスにキャストしたらボックス化してしまわないか?
>>248 例外が発生しない限りは速度に差はない
asの方が見やすいのは同意だが、asは失敗する可能性がある場合に使うという住み分けがある以上、
それに従わないのは混乱の元
252 :
デフォルトの名無しさん :2013/07/23(火) 23:43:00.64
普通はForm1にプロバティ作って、間接的にアクセスできる様ににしないか? public string なんとかText { get{return form1.Text;} set{form1.Text = value;} }
253 :
デフォルトの名無しさん :2013/07/23(火) 23:57:11.11
あ。 form1.Textじゃなくて form1.TextBox.Textだわなw public string なんとかText { get{return form1.TextBox.Text;} set{form1.TextBox.Text= value;} }
256 :
デフォルトの名無しさん :2013/07/24(水) 00:45:55.49
>>254 つか_form1.text って所がバグっていると思うが
はじめまして。 floatからintへの変換を行っているのですが、 整数と小数点以下を分けたいと思い以下のコードを書きました。 float version = 1.3f; float xx = (version * 10.0f); float xxx = xx % 10f; int a1 = (int)(xxx); int a2 = (int)(version / 1f); Console.WriteLine("{0}.{1}",a2,a1); しかし、Releaseで実行してみると「1.2」と表示されます。 Debugだと「1.3」と正常に表示されるため、参っています キャストがおかしいのでしょうか? だとすればどのように記述するべきでしょうか?
float xxx = ((int)xx) % 10;
話は少しずれるけど、 version なら float よりも string の方がいいよ。 float だと version 1.1.02 みたいなのに対応できないし。
261 :
デフォルトの名無しさん :2013/07/24(水) 01:33:20.95
文字なら var versions = version.Split('.'); だな
バージョン表記なら標準でこんなのもある。 msdn.microsoft.com/ja-jp/library/vstudio/system.version.aspx
結局変えられなかったのでこうなりました。 string moji = version.ToString("F1"); string[] versions = moji.Split('.'); int a1 = int.Parse(versions[1]); int a2 = int.Parse(versions[0]);
何のためにバージョンを整数部と小数部で分けてんの? そのまま使えばいいじゃないのよ
こういうのはよく見る int majorVer = 1; int minorVer = 3; int version = ((majorVer << 16) & 0xffff0000) | (minor & 0xffff); // get high-order word. major = (version >> 16) & 0xffff; //get low-order word. minor = version & 0xffff;
int major = 1; int minor = 3; int version = ((major << 16) & 0xffff0000) | (minor & 0xffff); // get high-order word. major = (version >> 16) & 0xffff; //get low-order word. minor = version & 0xffff;
int major = 1; int minor = 3; int version = ((major << 16) & 0xffff0000) | (minor & 0xffff); // get high-order word. major = (version >> 16) & 0xffff; //get low-order word. minor = version & 0xffff; あれ、2chって&書き込めないのか
バージョン65536以上はどうすんだよ 冗談は置いといてもふつうにVersionクラスでいいだろ 等値演算子もオーバーロードされてるし なにより分かりやすい
浮動小数点数の演算誤差だろ。 Debug/Releaseでビルドオプションに差違があるからだろうけど、素直にVersionクラスを使うか、個々の要素をintで持ってUIに見せるときだけ文字列連結するべき。
俺だったら小数点じゃなくて、整数で管理するな。っていうかしてた Ver1.05だったら105 数値の大小で新しいバージョンの判別できるし、文字列にも変換しやすい
>>270 俺も最初そうしてた。
そして、バージョンが5.10.0とかになってくると
6.0.0(600)<5.10.0(5100)となって破綻した。
>>271 6.00.00=60000、5.10.00=51000
お馬鹿な管理方法使うときは仕様限界を考えておかないとw
誤差がいやなら弟子丸でいいじゃない
linqをsql serverストアドでも使いたいよ なんで同じメーカーなのにあんなに使い勝手悪いんだろう
今時ストアドは無いわ
CLR統合でストアド書けばLINQつかえるんじゃまいか
テーブルまるごと持って来てLINQが基本だろ
1000万行のテーブルから1行だけ読み込みたいのに、1000万行全部取得するの? テーブルまるごと持ってくるとか、それで出来るならDB使う必要ないじゃん 素直にクライアントサイドでLINQ to SQLが正解なんじゃね
ストアドとか旧世代の遺物
旧世代には違いないがDBとのIOが多い処理では今でも選択肢に入るだろう
C#2010でプログラムして保存する前に電源が落ちたのですが、 どこかに跡形は残っていないでしょうか?
C:\Users\ユーザー名\AppData\Local\Temporary Projects\ にあるかもね ないかもね
もう一回VS立ち上げると「正常に終了しませんでしたテヘ復活させますか?」って言ってくれるかもね ないかもね
プロは一分に一回差分バックアップをとる データ喪失は事故責任だよ
まあそういう経験は誰しもあるってことで
Ctrl+Sを頻繁に実行するのは常識だと思っていたんだが
VisualStudio2012Expressを使ってますが、 コード画面の横(ツールボックス欄やソリューションエクスプローラー欄など) に、現在開いているコードのメソッド一覧を表示できないでしょうか? ソリューションエクスプローラに似たような表示はできますが、 プロパティなども表示され情報が多い、現在開いているコード画面に追随していない、 といった理由で使い勝手はイマイチです。 コード内をアウトラインで折りたたんだ場合は、 コード確認に一手間かかるのでこれもまた使い勝手がイマイチです。
>>288 エディタの上部の右側のドロップダウンがそう。
本当はオブジェクトブラウザかクラスビューにエディタと同期して表示する機能が
あるといいと思うんだが、おそらくそういう機能は実装されてない
290 :
デフォルトの名無しさん :2013/07/28(日) 13:58:03.82
>>288 Expressだから多分自分で作っているソフトだと思うが
一つのクラスにメソッドやプロバティーを詰め込み過ぎじゃないかな?
今作っているものをやり直せとは言わないけど、次に作るときはクラスの肥大化を意識した方がいいよ
>>289 ありがとうございます。
こいつもメソッドとプロパティ変数が混在して表示されてるんですね・・・
情報後出しになりますが、元々の目的は、GUIアプリの作成でソリューションエクスプローラだと
Formファイルの情報とデザイナーファイルの情報がまとめて表示されて邪魔だったのでなんとかしたいってのがありまいた。
教えてもらった方法だと、開いているコード以外の情報は灰色で表示されるので若干マシになったという感じです。
自作クラスの情報はそれだけがまとまって表示されるので、ソリューションエクスプローラよりはだいぶマシになりまいた。
>>290 GUI機能と、その他の機能は別クラスに分けて開発しています。
ただ、GUIだけでもかなり入り組んでるので辟易している次第です
開発途中ですが、現在はForm1.Designer.csにプロパティが30個くらいあり、
最終的には倍以上に増える予定です。
その情報と、Form1.csにあるプロパティ、メソッドの情報が混在してしまい、非常に煩雑です。
(Form1.csは現状たかだか300line,メソッドは10個程度ですが、それでも既に('A`)ウヘァです)
GUI機能もさらに複数クラスに細分化すれば解決しそうですが、エディタ側でももうちょっとなんとかしてほしいですね
(メソッド一覧のアウトライン表示は、秀丸とかのエディタには普通についてる機能なのに・・・)
292 :
デフォルトの名無しさん :2013/07/28(日) 14:30:29.46
wpfでGUI編集を使って、トグルボタンのチェックで他のコントロールの表示を制御しようとしたら 「BoolVisibiltyConverer」と言う謎クラスを持ってきやがってXamlのエラーとなるんだが、コンパイルできてしかもちゃんと動いた ちゃんとしたクラス名の「BooleanToVisibilityConverter」に直すとXamlのエラーもなくなるし動作も問題ない コレってなんだろうね? 「BoolVisibiltyConverer」は、謎のネームスペース xmlns:Default="clr-namespace:" に存在するらしいが、コレもエラー表示が出るんだわ
>>281 2012には自動バックアップってオプションがあるな
2010にはない?
コンパイル通らない状態で勝手に保存されても邪魔
Express だけど 2010 にもあるね。
変更した覚えないからデフォルトで 5 分間隔でやってくれるっぽい。
その結果が
>>283 になるんだと思うけど。
>>295 最初のWindowsApplication1とかのまま一度も保存していない場合はバックアップはしないみたい
コンパイルするごとにそこまでは残るはずだけどプロジェクトのフォルダごと見当たらないというか
命名していないから探しようがなかったです
>>296 ヘルプには
>ファイルが新規であり、今まで一度も手動で保存されていない場合は、ランダムに生成されたファイル名で自動的に保存されます
って書いてあるけど
Vista以降のOSの検索機能はファイルの中身をテキストとして読んで検索する機能がないから こういう時イラっとくるんだよね
インターフェースについて勉強してるんだけど、IEnumratorインターフェースの使い道がよくわからないです コレクションを列挙するというのはわかりますけど、どういう場面に使えばいいのでしょうか?
IEnumeratorはforeachを使うときに知らないうちに使ってる 自分で意識して使うことはまずない yieldがあるのでIEnumeratorを自分で実装することもない
自作コレクション(IEnumerable)を作りたいときに使う IEnumerableが列挙してくれと頼まれたときの動作を決めるのがIEnumerable どういう順番で何を列挙するかとかを細かく自分で決めたいときに使う 逆に言えばあまり自分で実装することは今の時代はあまりないよね
×IEnumerableが列挙してくれと頼まれたときの動作を決めるのがIEnumerable ○IEnumerableが列挙してくれと頼まれたときの動作を決めるのがIEnumerator
細かく自分で制御したいときにyield使わずにIEnumerableをて実装するのはきついぞ クソ複雑なステートマシンになる MSですらLINQの実装では低レベルな制御を放棄してyield使いまくってるのに
そこまで複雑じゃないってw 逆に単純だけど面倒なだけ
コマンドラインでTYPE A.TXT >PRN(エンター)を打った時と同じことをフォームアプリで実行する方法を教えてください。
Process.Start( "cmd", "/k type a.txt > pnt" );
Process.Startでコマンド実行しろ フォーム関係ない
/kオプションじゃなくて/cでも 詳細はコマンドプロンプトでcmd /?
310 :
デフォルトの名無しさん :2013/07/30(火) 11:16:06.45
ボタンが右クリックされたときにイベント発生させるのってどうやるんだ
わざわざ自分で発生させなくてもMouseDown/Upが発生するだろ?
312 :
nanasi :2013/07/30(火) 15:54:28.77 ID:FIRUYqVd!
さくらインターネット上のWEBサーバ上にC#より
ディレクトリを作成しようとしていますが次のエラーが出てしまいます。
レンタル中のスタンダードプラン上の
サーバだと正常に動作していたのですが、プレミアムサーバに対して下記コードを
実行するとなぜかエラーが出てしまいます。
IDやパスはあっているのですが何が問題なのでしょうか?
≪ 実行コード ≫
string id = "id123";
string pass = "pass123";
string createDirectory = "
ftp://hoge_user.sakura.ne.jp/www/hoge_data/20130730 ";
WebRequest req = WebRequest.Create(createDirectory);
req.Credentials = new NetworkCredential(id, pass);
req.Method = WebRequestMethods.Ftp.MakeDirectory;
WebResponse res = req.GetResponse(); ← ここでエラー発生
≪ エラー内容 ≫
The remote server returned an error: (530) Not logged in.
>>312 エラー内容に書いてあるじゃん。
ログイン失敗でしょ。
サーバーからのレスポンスを見ないと原因は分からないけど、実はFTPSとか?
314 :
312 :2013/07/30(火) 18:19:15.54
>>313 そうなんです。ID・PASSがあっているのに
なぜかダメなんですよ。
しかも、さくらのスタンダードプランでは普通に動いていた
プランにも関わらず、プレミアムプランのサーバに向けて
実行すると動かないのでまったく意味不明です。
ネットワーク関連はまずパケットキャプチャ 普通のFTPクライアントでアクセスした場合との差異を比較
MSDNみると WebRequest.CreateでFTPだと、FileWebRequestを返すとなってるぞ FtpWebRequestの例だとそれをFtpWebRequestにキャストしてる FileWebRequestはCredentialsもMethodも実装されてないことになってる
318 :
313 :2013/07/30(火) 18:30:45.40
>>314 WebRequestクラスは頭悪いから業務で使うのはおすすめしない。
とりあえず、コマンドプロンプトから「ftp /d」でログインできるか試してみて。
レスポンスが確認できるから。
どちらかというと問題あるのはさくら側かユーザ側かだろ
320 :
デフォルトの名無しさん :2013/07/30(火) 20:40:43.62
>>318 業務で使うのはおすすめしない?
本当か?
322 :
313 :2013/07/30(火) 22:51:18.69
>>321 エラーメッセージからの推測なんだけど、今回のケースだと、USERかPASSのどっちかを投げた段階でエラーが出てるはずなんだ。
でもWebRequestがレスポンスを解釈しないで次のコマンドを投げてるように見える。
そうすると本当の原因が分からなくなるから
>>315 が言うようにパケット取りながら再現実験するハメになる。
うまく動いてるときはいいんだけど、トラブったときが大変なんだよ。
その辺のバランスを考えて、WebRequestを使うかSocketで自作するか決めればいいんじゃないかな
323 :
313 :2013/07/30(火) 23:06:33.83
>>321 あ、FTPの話ね。
HTTPでは使ったことないから知らないよ。
325 :
312 :2013/07/30(火) 23:27:33.76
>>315 うーんパケキャプしないとダメですか。。。
ちょっと敷居が高いけど頑張ります。
>>319 サクラですね。
サーバ容量増やしても転送量制限は変わらないとか詐欺的な事ばっかりやってるし
>>322 Socket 作ってみます。
パケキャプの良いソフト教えれ
>>317 VS2012ではたしかにFtpWebRequest帰ってきてるな
>>322 わざわざキャプチャせんでもトレースログで十分だろ
>WebRequestがレスポンスを解釈しないで次のコマンドを投げてるように見える
WebRequestがって言うか、正確にはFtpWebRequestが、だな
それがほんとなら、もともとステートフルな通信向けじゃないのかもしれん
なんといっても「WEB」リクエストだしな
328 :
312 :2013/07/30(火) 23:42:17.92
パスワードの設定が間違えてました><。。。。。。。。。。 無事解決です。 皆さんありがとう。
>>328 ・・・・・・・・・・・・・・・・・・・
はい、解散〜
今月のNo1ズコー
いや、死ぬべきでしょ 遠慮なく死ね
まあとりあえず
>>312 がパケキャプやらおぼえて
一回り成長したことでよしとしよう
成長してなかったら死ぬべき
パスの設定をまず見直せと 指示できなかった俺らにも落ち度はある
業務なら解雇だよ
まことに申し訳ないことと反省しております。 ご容赦の程、深くお願い申し上げます。
ふらっとスレだから命拾いしたな
命ってのは落ちてるものなの
落としかけて拾ったんだろう
質問です。通常App.configに追加する<DbProviderFactories>を、 別の共有設定ファイルを作って、そこへ追い出したいのですが、<AppSettings>の様に file属性で読み取ることも出来ないので、どうすれば複数の実行ファイルから、共通設定として 読み取ればいいのかわからない状況です。 やりたいのは、複数の実行ファイルで、同じデータベース設定を利用したい。 実行環境により利用するデータベースを切り替えたい。(DbProviderFactories.GetFactoryでプロバイダに依存しないようにしておきたい) ADO.NETのスレが見当たらなかったので、こちらに質問してみました。 よろしくお願いします。
エクスプローラー上でファイルがダブルクリックされたかどうか、 監視することはできますか?
344 :
デフォルトの名無しさん :2013/08/04(日) 12:46:46.16
VS2012でインデントのところに"-"が表示されるようになったんだがどうすれば消せるんだ
345 :
344 :2013/08/04(日) 12:48:28.36
解決した
win7 に Visual C++ インストール出来なかった DVD 目当てに本も買ったがダメ! xp にはインスト出来た、まぁ仕方ないのでこれで行く!
おめめがびょうきなの?
いいえ、おつむがびょうきなの。
デリゲートわからん
オブザーバーパターンを勉強しろ
RaiseEvent PropertyChangedでええやん。むりしてDelegate使わんでもええやん
デリゲート→ラムダ式→マルチスレッド で学ぼうと思ったがデリゲートでつまづいてるっていう
353 :
デフォルトの名無しさん :2013/08/05(月) 06:10:55.17
デリケートな問題だからじっくり勉強しなされ
なにも難しいことあらへん メソッドをオブジェクトとして認識すればええねん そのオブジェクトの型は戻り値と引数で決まるねん 戻り値と引数が同じメソッドはおんなし仲間やねんで。 オブジェクトやから同じ型の変数に入れたりできまんねん ();つければ実行されるんでおまんがなー
普通の変数とちゃうのは ひとつの変数に+=/-=で複数のデリケートインスタンスを入れたり出したりできるっちゅうことだけや マルチキャストゆうてな、();で入れた順番に全部実行されるんでおまんがなまんねん
すっごくわかりやすいかも。
口調がムカツクのに分かりやすいのがクヤシイ
関西弁きらいか?まあ慣れたらどうちゅうことあらへん、まあこっちでも京都のはきらいとか姫路のはグロイとかいろいろとありまんねんけど
invokeがdelegateじゃないとできない意味がわかりません。
>>358 俺がわからないのは
タイピングにまで関西弁を持ち込んでくることだ
標準語を使った方が打つ文字数も少ないし相手にも伝わりやすい
例)
ええねん→いい
決まるねん→決まる
上記の理由で2chに関西弁を持ち込んでくる奴は嫌いだ
読んだときの印象が変わる
ID出るスレなら問答無用でNGだな。死ね
>>360 せやな→そうですね
文字数増えとるやないか。はい論破してもうたでんがなー
>>363 関西人はこうやって揚げ足取りばっかするから
ガキ扱いされるんだな
自覚症状のない基地外ほどタチが悪いものはないからな 相手せずにスルーしろ
>>364 こんな似非関西弁の人使ってそんな非難されても困る
>>364 自分も自分の好みでアヤ付けてるだけだってのに気付けよ。
意味がわかる文章なら、ちゃんと答えてるヤツが神で、それ以外はクズだ。
>>367 好みじゃなくて一般常識だってことに気づけよ。
それってどこの?
俺はインターフェースとデリゲートの違いがわからなかったな でもよく考えると、デリゲートもクラスなんだから、継承の点では インターフェースもデリゲートもクラスも全部一緒と考えればいい
ややこしいから、それら全部クラスと表現しませんか?
デリゲートは継承できません
クリックイベントはイベントなのかデリゲートなのか
イベントはデリゲートを使って実装されているというニュアンス
名前を見ろ
イベントってデリゲートを使って実装されてるの?
うん クラス>デリゲート>イベント つまり、デリゲートもイベントも不必要ってこと
イベントとデリゲートは別物だ イベントはデリゲート専用の特殊なプロパティ メンバとその値な
もう!誰が正しいのっ!
380 :
デフォルトの名無しさん :2013/08/05(月) 23:16:48.35
そら、名前が違うんだから全く同じ場合は少ない
>>379 デリゲート≒イベント
デリゲートとイベントは両者とも糖衣構文
使い方の違いがある。
イベントはイベントを定義したクラスからしか呼び出せないが、デリゲートにその制限はない
要するに、イベントもデリゲートもクラスを基本にした、それ専用に使いやすくしたもの
コールバック自体イベントと言えなくもないから、デリゲートを用いてイベントは実装できる
377はその意味。で、デリゲートの場合、デリゲート>匿名メソッド>ラムダ式というさらに
使いやすくした糖衣構文がある。
デリゲートの特徴はデリゲートはメソッドみたいなものだけど、メソッドと違って変数に代入出来ること。
これは、デリゲートの実態がクラスで出来ているからで、この代入出来ることを利用した
プログラミングが出来ることがデリゲートの特徴となる。
代入出来るということは、色々なデリゲート(メソッド)を置き換えることが出来るわけで、
デリゲートで呼び出されるメソッドの動作を変えられることが特徴
void Method_A(delegate B)
{
処理1
B()
処理3
}
の要に処理1処理2は共通でB()の部分のみ異なる処理の場合に
Method_Aの引数に渡すデリゲート変更すればソースとしての共通化が図れる
ひょっとして C# には「イベント」に、「 PC 上で発生したなんらかの事象」って以外の意味がある? イベントは、PC 上で発生したなんらかの事象 デリゲートは、C で言うところの関数ポインタ(違うけど)で、イベントハンドラの管理に使われてる って認識だった。 「イベントハンドラ」は「イベントが発生した時に呼び出される関数」(ちょっと違うけど)って意味で。
>>383 何らかの事象を意味するのはもちろんそうだけど、身も蓋もない言い方をすれば
ObserverパターンにおけるaddLister/removeListerのメソッドの組をまとめたのがイベントで
そのメソッドの引数に渡すリスナがデリゲート
プロパティがgetValue/setValueの組なのと同じ
あと、デリゲートもイベントも同じっちゃ同じだけど
通常のクラスの場合、インスタンス化するには、メソッドの実態(ソース)が
必要なんだけど、イベント(デリゲート)もそのような制限はない。
例えば、
>>381 でMethod_A内の処理においてB()が呼び出されているけど
これの実態はこのソース中にはないのだけど、コンパイル時にはエラーが出ない。
ただし、Method_Aの呼び出し時にはイベントで実行されるメソッドの実態は必要。
イベントの場合、MSがOnClick等たくさんのイベントが定義しているけど、
ユーザが後付で、その実行内容を変えることができる仕掛けが必要。
それを実現するための仕掛けがイベント(デリゲート)。
public int Hoge { get; set; } public int Hoge; この2つを同じと言うならイベントとデリゲートは同じだ public event EventHandler Hoge; このフィールド風のイベント宣言は上の自動プロパティに相当するもので デリゲートを保持するフィールドとaddアクセサとremoveアクセサが自動生成される
>>383 >ひょっとして C# には「イベント」に、「 PC 上で発生したなんらかの事象」って以外の意味がある?
通常の意味としては”PC上で発生した”ではなく”アプリ上で発生した”だろうね
その他は意味不明
てか、イベントハンドラはイベントに使用するもの
デリゲートは関数ポインター(コールバック)のような使い方もできるけど、それ以外もある。
イベントハンドラはイベントに使うデリゲートであってイベントではないだろ
イベントやデリゲートについてはうだうだ言う前に
Observerパターンを学んだ上で
>>382 を読めば完全に理解できるよ
C#の構文はデリゲートとイベントの扱いを似せてあるのですごくわかりにくい
ようするに、それぞれがそれぞれの解釈でデリゲートなりの説明をしてるから収拾が付かない、と。
マルチキャストもデリゲートやイベントを分かりにくくしてる一因だなあ。 イベントハンドラはデリゲートを複数保持するためのコレクションってことにすれば 役割がわかり易かったのに、なんでデリゲート自体をコレクションにしちゃったんだろう。 その上、デリゲートの合体とイベントアクセサの呼び出しに同じ演算子を使っているのが さらに混乱に拍車をかけてる。
よし、わかった
概念的な理解は後回しでいいと思うよw それはコードを書いてるうちに後から付いてくる。 とりあえずイベントを発生させるクラスと、そのイベントを購読するコードを 自分で書いてみる。 そうすればイベントがどんなものか理解できる。 イベントが理解できれば自然とデリゲートも理解できる(たぶん)。
delegateを直接publicなフィールドにしてみるといいよ eventと同じことが出来るが、 困ったことに出来ることが多すぎることに気が付く。 たとえば、イベントハンドラを+=でなく=で代入できたり、 Invokeメソッドが外部から呼び出せたり。 こういうのを制限するための機能がevent
デリゲートもまともに説明できないくせに初心者スレとな
デリケートゾーンの有効範囲を教えて
デリゲートに好きして、デリゲートに 好きして 好きして 好きして こう言うところに書く前に、自分の用語の認識が一般的なモノであるかの確認はした方がいいと思われ。 それぞれが違う認識だってのがわかった今になってもオレ定義で話すのは混乱の元になるだけだよ。
そう言えば最近アグリゲートって聞かないね
398 :
デフォルトの名無しさん :2013/08/06(火) 12:33:52.35
Class Sample { //メソッド } ↑最近、上記のように波括弧を新しい行に書く書き方に変えたのですが どのように打つのが一番効率がいいですか?(IDEはVisualStudio) 今ところ案としては以下の案があります。 @ クラス名 { } を書く→方向キーで { まで戻る → 改行 → 方向キーで } まで移動 → 改行、改行 → 方向キーで上に戻る → Tab → メソッドを書く A クラス名、改行 → { 、改行 → 改行 → } → 方向キーで上に戻ってメソッドを書く お教え願います。
書くときにはぐだぐだ気にしない VSのオートフォーマットに任せる
>>398 ここまでどうでもいい質問ってなかなかない
ファイル追加するときに名前決めたらそれがクラス名になるから入力する必要ないだろ
>>401 ツール→オプション→テキストエディター→C#→書式設定
ここにオートフォーマットする場合の設定があるだろ
(上のはExpressだけど)
閉じる}で自動で改行してくれるだろ
クラスの作成ってウィザードになかったっけ?
405 :
デフォルトの名無しさん :2013/08/06(火) 14:00:16.18
チュッチュチュ チュッチュッ スニペット〜
>>398 気持ちはよく分かる。
そもそも{をタイプした時点でカーソルの後ろに}を自動で挿入してくれても良さそうな物だが、
C#のIDEはそういうところ気が利かないよね。
拡張メソッドって、VS2005でC#2.0だと使えないの? VS2008でC#3.0だと逝けるみたいだけど。
拡張メソッドはC#3.0から 仕事ならどのみち拡張メソッドなんて好き勝手に使えるもんじゃないだろうし 趣味ならあえて古いバージョンのVSを使う理由は無いはずだし 一体どういう状況でそんな悩みが出てくるのか理解に苦しむ
>>409 やっぱり、C#2.0はダメなのね…orz
今まで「VS2010のC#4.0」で作ってたんだけど
「VS2005のC#2.0」に変更して欲しいと、客から通達があったらしい。
客がVS2010のライセンスが用意できなかったみたい、詳しい話は知らん。
上が決定しちゃってるから、開発環境のダウングレードしなきゃならんのよ。
だから、C#2.0で拡張メソッドが使えれば、LINQとかラムダの部分を直すだけでよかったんだけど
拡張メソッドが結構あって面倒なんだYO!
個人的には、Expressエディションでいいじゃんって思うんだけど
インストーラー作れないみたいだし、ダメなんだとさ。
ライブラリの場合.NETのバージョンの混在って出来ないの? ずいぶん昔、アセンブリを勉強していた時なんかそんなのを読んだ気がする
そんなけったいな形態のお仕事があるんだw 世の中いろいろだね
.NET2.0と3.5ならサイドバイサイドは必要ないぞ つか2つの開発環境を混在させることによる作業性低下のコストを容認できるんだったら そんなことするより全部Express2010で作ってインストーラの作り方を工夫したほうがマシじゃね まあそういう問題じゃないと思うけど
1.1, 2.0〜3.5, 4.0〜 の3種類は混在無理だったはず もちろん、それぞれ独立したアプリとして作って プロセス間通信で連携して動く分には問題ない
416 :
デフォルトの名無しさん :2013/08/07(水) 07:38:58.44
つか、そのやり直しの経費でVS余裕で買えるよな 客先は何百人でメンテするつもりなんだ
>>416 大きな組織は稟議書とか大変なのよ
極端な例だけど、5000円の出費のために、時給 2000円クラスの奴等が 4〜5 人半日がかりで資料作成とか、あったりする。
私は.net compact frameworkという産廃を主に使うのでVSは2008なのであります
419 :
デフォルトの名無しさん :2013/08/07(水) 12:53:55.84
Aという処理を 与えるパラメータだけを変えて 並行に処理したい場合何を使えば実現できますでしょうか?
すいません。並列でした。
Parallel.ForEachでもTaskを必要な数だけ作っても
こんなとこで質問している人が 並列処理なんて出来るの? 俺にはそっちの方が疑問
出来ちゃうんだよ 見た目はね
並列処理ごときで疑問に思うほうがおかしい。
並列処理はできるでしょ ちゃんと動かせるかどうかはわからんけど
427 :
デフォルトの名無しさん :2013/08/08(木) 09:17:30.24
&でつなげればいいだけの事に何難しい事を言っているんだよ。
さすがVB戦士
それ unix shell の & じゃね cmd.exeだと start の連投
430 :
デフォルトの名無しさん :2013/08/08(木) 12:54:26.49
&だけじゃ駄目だね。上の方が言うようにstartが必要だね。 start xxx & start yyy
>>423 出来るけど、結果がどうなるかは知らない。
>>398 Eclipseだと { を入力して改行すると
自動で } が挿入されるんだね
VSもそうしろよ
>>398 閉じ括弧を別行に書くとクラス名直後に書いた開き括弧も次行へと整形されるから、
クラス名 → { → 改行 → } → CTRL+Enter
ってのが、いつの間にやら染みついてしまった。
{ 押したあとタブ押せばいいだろ
メソッドを持つenumやstructはCOMに出来ないのかな? アセンブリをレジストリに登録して使ってみたのだがメソッドが無くなっていた まったくCOMは難しいね
コム長官
配列を結合する関数(戻り値が配列)を作って呼び出しをを繰り返す場合 while(/////) { foo=配列を返す関数; 処理・・・ } fooの参照が切れたメモリはすぐGCが解放してくれますか?
いいえ メモリ不足になる前には必ず解放されるけど、一時的にCLRヒープをかなり圧迫するはず
配列の長さ次第ではLOH入りして実質的に解放されないことも
>>441 それは.NET4.5で直った
配列のサイズが大きいならyieldを使って実装すればメモリ食わないよ
>>440 ,
>>441 ,
>>442 ありがとうございます
汚い(大きい)データファイルを検索しやすくするために、再整理して保存(キー値付加、その他並び替えいろいろ繰り返し処理が必要)
する処理を書いていたのですがこういう場合は明示的に解放処理を書いたほうがいいのでしょうね
いやそれよりバッファを再利用することを考えるべきだろ
それより普通にLINQ to Objects使えばいいと思うが ToLookupとかOrderByとか組み合わせれば超簡単省メモリだろ
OrderByって全要素の結果をキャッシュするから、最低でもn要素のリストとディクショナリを使ってるんだと思うが…
素人の理解なんてそんなもんだよ
プロの理解を教えてください
プロの方がそういうの理解してなかったりするよ プロの仕事なんてボタン貼ってSQL書いてプロパティ弄るだけの単純作業だから
プロの定義は? Success is stumbling from failure to failure with no loss of enthusiasm. - Winston Churchill(1874 ? 1965)
OrderByの存在を知っているだけでプロでもマシな方だよ 仕事でC#書いてる人の結構な割合がVBやJava上がりだから基本文法+αの知識しかないことも多い
みなさんありがとうございます、バッファを再利用する方法として 今までは配列を返す関数内でbyte[] a=new byte[/////]; として返していたのですが、これを引数としてこいつに放り込む形にしたいと思います 重ねてありがとうございます
DataGridView の CellFormatting でcellの色を設定しているのですが、 設定の仕方によって、設定後の色の取得ができたりできなかったりします。 できない場合にどうして色が取得できないのか、分かる方いますか? ■色の取得ができる場合 private void DataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { DataGridView dgv = (DataGridView)sender; dgv[e.ColumnIndex, e.RowIndex].Style.BackColor = Color.Orange; } ↑実行後に別メソッドで↓ DataGridViewCell cell = (色を変えたセル) if (cell.Style.BackColor.Equals(Color.Orange)){...} ★trueになる ■色の取得ができない場合 private void DataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { e.CellStyle.BackColor = Color.Orange; } ↑実行後に別メソッドで↓ DataGridViewCell cell = (色を変えたセル) if (cell.Style.BackColor.Equals(Color.Orange)){...} ★falseになる cell.Style.BackColorをデバッガで見ても、何も設定されてない → "{Name=0, ARGB=(0, 0, 0, 0)}" でもGUI上は確かに色が変わっている
>>453 e.CellStyleとDataGridViewCell.CellStyleは同一オブジェクトじゃないから
DataGridView.DefaultCellStyleやらいろいろ反映させた上でのスタイルだから
>>454 じゃ、e.CellStyleで変更した値を再取得するにはどうすればいいの?
まずブラウザの開発者ツールを使って調べろよ
1.何でもいいから試しにhtmlファイルのダウンロードをしてみる 2.何でもいいから試しにPOSTをしてみる 3.目的のwebフォームからhtmlソースもしくはそのコントロールを取得する 4.そこからradioboxなどのform情報を読みとる 5.2で試したのでPOST 6.完成
ありがとうございます。 POSTについての理解できてなかったようです。 submitのPOSTを返してなかったのでどうしてもデータが帰ってきてなかったようです
>>459 submitのPOSTを返すって
どういう意味?????????
>>460 POSTにsubmit○○=valueを入れてなかったということです
説明下手で申し訳ない
なんでtoolstripmenuitemってキャストしまくらないと使えない設計なの?
>>455 できないし普通しない
データと変更した条件は手元にあるんだからわざわざ色を見ずにデータと条件を見ればいい
InheritedStyle
(夢)セガ ドリームキャスト
渾身のネタありがとうよ
人の褌作戦 他人の物を利用して、身を削ったり努力すること無しに自分の利をはかる作戦 渾作戦 ビアク島の 戦いを支援するための作戦で、3次にわたり行われたが、 アメリカ軍のマリアナ諸島襲来 により中止された。 マリアナ沖海戦の前哨戦となる作戦であったものの、 準備していたガソリン、重油など貴重な資源を消費してしまう。 日本軍側の優柔不断とも言える作戦指導から、何も得るところ無く終わった。
>>462 他のToolStrip系パーツと共通でぶち込むためだろ
IIS7で公開してるサイトのASPファイルから自作クラスライブラリの アセンブリを読み込んで使いたいのだけど どこにdllを配置すればいいでしょうか? 物理パスのルート直下ではダメでした
IISマネージャで登録するんじゃない? ここじゃなくてIIS関連スレで聞いたほうがいいと思う
binだろ
推薦図書/必読書のためのスレッド 70
http://toro.2ch.net/test/read.cgi/tech/1369350072/ 上記のスレで質問したところ、.NETのスレで聞いてみてはどうかと提案を受けました。
該当しそうなスレッドが見つからなかったため、こちらに質問させていただきます。
以下、上記スレに書いた内容の転載です。
今度、Visual C#でWindowsアプリの開発を行うことになりました。
当方C, C++, Visual C++(MFC)はある適度経験がありますが、C#や.netは全く未経験なので、本を買おうと思っています。
文法の本はどれを買うか決めたのですが、GUIプログラミングの本を決めかねています(近くに大きな本屋が無く、内容を
見ることができないのです)。
下記のような条件を満たす本がほしいのですが、お勧めはないでしょうか?
・GUI(.Net Framework)を使ったアプリ開発を扱う
・入門/初心者段階の人が読んで役に立つ(別に入門的内容オンリーでなくてもOK)
・各コントロール(と呼ぶのか?)などの基本的な使い方を、ある程度網羅的・リファレンス的・系統的に分類して、豊富な
サンプルを用いて見やすくまとめてある
・ステップbyステップで大きなアプリを完成させていくのではなく、各項目の説明のための最小限の小さなアプリを都度作る
ようなスタイル
・できれば翻訳書ではない
Visual C++でいうと、林晴比古氏の明快入門Visual C++シリーズのような、ぱらぱらとめくってどこに何が書いてあるのかが
わかるような本が理想的。ペゾルド本のようなじっくり読んでいくタイプの本はNGです。
よろしくお願いします。
逆引き系を本屋で適当に選べばいいよ VC++の学習時と同じつもりで身構えてるんだろうけど、VC#は分かりやすいしMSDNも丁寧なので 適当に触って細かいことは都度MSDNに当たればいける
.NETのMSDNはメンバ一つ一つに長い解説とサンプルコードがあったり コントロールごとにチュートリアルを用意してくれてたり 日本語訳も昔と比べればずっと改善されてるし ヘタな参考書よりよっぽど丁寧
MFCで開発できるだけの腕あがあるなら本なんて要らないでしょ。ぐぐればすぐに情報見つかる
MFCできるならdobonだけ見ればいいよ
478 :
473 :2013/08/16(金) 18:14:42.11
msdnがわかりやすいというのはありがたいですね。 とはいえ、なんとなく本の体裁のものも欲しいので・・・。 >逆引き系を本屋で適当に選べばいいよ 逆引き本を買ってみようかとも思ったのですが、逆引き本だと断片的な内容になりがち(それこそネットで 調べられそうな事柄が多い)ため、ある程度体系的にまとまっているいい本はないかな、と思ったのです。 まあ、あまり悩んでいても仕方ないので、とりあえず適当に買ってみます。 ありがとうございました。
オッケーイ
XLINQでもなんでも使って好きにやって
>>477 やりたい事と C# でググれば
dobon が出てきて助けてくれる
本当助かるぜあそこは
msdnは何がどこにあるか探しにくい
484 :
デフォルトの名無しさん :2013/08/17(土) 22:43:50.66
ほぼ初めてのC#を使ったwindwsアプリケーションを作っています TextBox1+TextBox2をlabe1.textに表示させるさい TextBox1の数字をxに置き変える方法がわかりません 助けてください><
C#ド初心者にクラス関数と普通の関数の違いを 短時間で理解できるよう教える方法を教えてくださいorz
C#におけるクラスメソッドと普通のメソッドの事か? 使い方全く違うじゃん 何が分からんのだ
違いなんてない 気持ちの持ちようだよ
>>484 LINQでどう書けるかやってみただけだ
多分見ない方がいい
label1.Text = string.Join("", (textBox1.Text + textBox2.Text)
.Select(v => v >= '0' && v <= '9' ? 'X' : v));
Betweenが欲しいぜ
普通のメソッドって何? メソッドって必ずクラスに属しているものと思ってた
クラスメソッドはクラスをインスタンス化しなくても 呼び出せるメソッドのこと
クラスメソッドってスタティックなメソッドのことだと思ったが違うのか
492 :
488 :2013/08/17(土) 23:39:38.39
違わない
へぇ知らなかった
C#あたりの教科書だと、静的メソッドとか静的なになにとかしか記憶にない
計算機科学では一般的な言葉なんだ
>>482 性的だけに気持ちいいw
Delphi(ヘジたんの前作)も「クラスメソッド」 Javaは「スタティックメソッド」 C++から入った人は「スタティック関数」と言うかもしれない
C++で単に静的関数というとモジュール外に公開しない関数のことだから 静的メンバ関数でしょ
何を言ってるんだ? ってprivateみたいな使い方もあるんだっけ?そんな使い方したことないや
(絶句)
使い道があるかはわからんが不可能ではない publicな非staticからprivate staticを呼び出せたり出来る
クラスメソッドと普通のメソッドの違いの前に クラスフィールドと普通のフィールドの違いを理解した方がいいと思うわ
>>501 そうか、俺はあほだったんだ
てか、「あほっちゅうやつがあほやねん」って日本のことわざしらんのか?
あほ〜w
これは基地外だ
でもまあこんな場所でオレ定義の名称を使う方もどうかと思うけど。 「普通のメソッド」ってなんなんだよと思うのは当然だわ。
>>504 文書から推測できないのかお前は
アスペ乙wwwwwwwwwwwwwwwwwwwwwwwwwww
で、結局普通のメソッドは作れるの?試すの面倒だから誰かおしえてくれ
ああ確かにキチガイだこれ 無知のくせに他人に要求だけする
class C { public static void StaticMethod(){} public void InstanceMethod(){} } ------------------ C.StaticMethod(); C c = new C(); c.InstanceMethod();
void hoge1(){} //普通のメソッド=使えない。 error CS0116: 名前空間にフィールドやメソッドのようなメンバーを直接含めることはできません。 namespace hoge { void hoge2(){} //普通のメソッド=使えない。 error CS0116: 名前空間にフィールドやメソッドのようなメンバーを直接含めることはできません。 class C { public static void StaticMethod(){} //普通じゃないメソッド=使える public void InstanceMethod(){} //普通じゃないメソッド=使える } }
510 :
デフォルトの名無しさん :2013/08/18(日) 07:55:52.35
クラスに馴染めなかったメソッド・・・orz
ところでApplicationExceptionは使ったらいれないの?
staticメソッドにするやつはクズ
>>512 ダメ
何をアプリケーションとするかなんて相対的なもので、まったく意味のない分類
グルーピングがしたければHogeアプリならHogeExceptionを継承するのが合理的
>>513 じゃあ、.NET Framework標準のライブラリ群はクズということになるな。
標準のライブラリ群は絶対に使うなよ!
cscもラムダ式をstaticメソッドに変換するクズ
>>505 ふつうに考えて推測を要する時点でダメだと思うが
拡張メソッドは面白いけどあまり好きにはなれない
ラムダ式は大失敗。
staticにしたらクラスライブラリにする時に問題になる
>>517 煽りとかじゃなく真面目な話し、少しは自分がアスペって自覚しといた方がいいぞ
アスペに真面目な話とかアホか いちいちからむなクズ
相手がアスペと疑う奴は自身がアスペだろ、ふつう。
うん。 悪口は自身の価値観の裏返し。
。使うやつは同一人物だと思う。
よぉーっし。これから全部 。 を付けちゃうぞ。
日本人ならふつうに句読点使うだろ。使わない奴はよほどの低学歴だろう。
句読点を無くし、括弧を自然言語に取り入れるべき。
530 :
デフォルトの名無しさん :2013/08/18(日) 14:55:56.24
かんじ も すてて わかちがき に しようぜ。
。つけてるのは漢字変換のトリガに使ってるんだと思うぜ
句読点ない馬鹿見ると、 こいつ日頃から文章書いてないし読んでないんだろうなと思う。
>>528 いやいやw知らないんじゃないよwww
印象を柔らかくする為に省いてるんだよwww
50超えたら知らない人も居るかもだけどね
>>531 文中と文末で押すキーをわざわざ変えるのか…
わざわざって、隣だしカンマとピリオド使い分けるのもわざわざって言うか?
おまえら, くだらないことで言い争うな;
>>533 いや、ほんとうに価値観を反映した良い見本でいらっしゃいますね。
539 :
デフォルトの名無しさん :2013/08/18(日) 18:36:06.30
ここは日本語プログラミング言語ひまわりのスレ
!お前ら.言い争う(くだらないこと)
職業病.やめる("おい",force=True)
[お前ら やめないか: そろそろ];
ところでリストの中身を i〜j番目をn〜m番目と入れ替える方法はある?
リストの置換は遅くないはずだから普通に組めば
参照型なら好きなやり方でやればいい 値型でもいくらでもやりようはある
548 :
デフォルトの名無しさん :2013/08/19(月) 00:07:08.00
これこそ拡張メソッドに向いた仕事だな
また出たよ拡張バカ
拡張は遅い
拡張バカてw
てst
召喚獣
Tagってつかってもいいの?
数値やStringみたいな単純な型を入れないと約束できるなら許す
メニューに1000個の項目作ったら 52秒くらいかかるんだけど? どうすればいい?
最初に全部追加するんじゃなくて開くときに必要な分だけメニュー項目追加
ContextMenuStripとかToolStripDropDownの方なら、追加自体がクソ遅いからある程度数が増えるとどうしようもない。 メニューアイテムが何千個とかになる可能性があるなら仮想リストビューのような機構を考慮してみてはいかがか。 実際に追加するのを256個程度にとどめて、スクロールやキー押下時にアイテムを削除/追加する。 まあ1000個の時点でUIとしては破綻してるけどね……
実際のUIがどうなってるのか知らないけど、別に1000個でも破綻してるとは思えないな
IEのお気に入りなんかは
>>557 の方法。何万個お気に入りが記録されてても動作は普通
いや、1列にならべた1000個の中から必要なものを1つ選べってのが破綻してるだろw
>1列にならべた これどっからきたんだ???
AddRange
オブジェクトブラウザの内容ってエクスポート出来ないんか? XMLとかに出来ればありがたいんだが
doxygenでも使えば? リフレクション使えば自分でも簡単にやれるけど
DBにパスワードを暗号化して保存したいんですけど 不可逆のほうがいいと思うのでMD5で保存しようと思うんですけど それをJavaとC#で認証したいんですけど、これって普通ですか?
> DBにパスワードを暗号化して保存したいんですけど うん > 不可逆のほうがいいと思うのでMD5で保存しようと思うんですけど 今時MD5?とは思うけどまあうん > それをJavaとC#で認証したいんですけど、これって普通ですか? どこで何を認証するのか分からないと何とも
>>567 画面で入力されたパスワードをMD5でハッシュ値を取得して
DBから取得した値と比較というのをJavaとC#でしたいんですが
どちらもMD5のハッシュ値なら同じ値になりますか?
ならなかったら大変だよ
>>569 ありがとうございます。ではこれで行きます。
"00010"っていう文字列リテラルから左の0だけを全部取り除きたいので string str="00010"; str=(int.Parse(str)).ToString(); ってやってるんですが 本当はどうやったらいいんですか?
すいませんリテラルじゃないですね 文字列を代入した変数でした
Trimとか 方法は色々あって唯一の解ってのは特にない
574 :
デフォルトの名無しさん :2013/08/22(木) 16:44:19.94
俺は動けばいいと思うが、どうしてもというなら正規表現で組めばいいんじゃないの?
575 :
573 :2013/08/22(木) 16:49:30.33
TrimじゃなくてTrimStartだった
ウィンドウのシステムメニューってあるじゃないですか。 ウィンドウの左上のアイコンを右クリックしたときに出るやつです。 あれを自分で表示することってできないでしょうか? systemmenu.show(); みたいな感じで。
ggrks C# "システムメニューを表示する”
alt+[space]をメインウインドウにディパッチしちゃどうだろう?(超適当)
できた。ぽまいらありがとう。
クラスAとクラスBがあったとして、クラスAのボタンコントロールを押した際に、クラスB内で処理をしたい場合は以下の2案が考えられると思うのですが、 一般的にはどちらを使えばいいものでしょうか?あるいはこういう時はこっちがいいという考え方はありますか? 今は@で実装してますが、見づらく再利用もしづらい気がしてきたのでAに直すか迷っています (実際は下記例と異なり、10個以上の引数を与えているので・・・) @案 //クラスAでクラスBを宣言してコントロールを引数にする B = new B(button1, textBox1); //クラスBでラムダ式でメソッドを実装 public B(Button button1,TextBox textBox1) { button1.Click += (sender, e) => button1_Click(textBox1); } //クラスBで同名のメソッドに処理を記載 void button1_Click(TextBox textBox1) { //処理 } A案 //クラスAでクラスBを宣言してコントロールをナンバー変数にする B = new B(); B.button1=button1;B.textBox1=textBox1; //クラスAでbutton1のクリックイベントを実装し、Bのメソッドを呼ぶ private void button1_Click(object sender, EventArgs e){ B.button1_Click(); } //クラスBに同名のメソッドに処理を記載 void button1_Click() { //処理 }
クラスAとクラスBは独立に生成して クラスBのコントローラをクラスAのイベントに紐つける
回りくどいことしてるなって印象のみ受けるね
C#にfriendに相当する述語がないのが悔やまれる 結局publicにするしかない
そう。必要ないね
>>581 クラス設計が悪いからそうなってる
GUIは最も設計が難しい問題の一つだから、
安易にプログラムを組んでるとすぐにグチャグチャな実装になるよ
つまり適当なGUI設計の解説文書に目を通しながらクラス設計を見直せということだ
GUI関係ないじゃん
>>588 Wikipediaをソースにすんな
クラス設計が複雑なケースはGUI関係なしに問題が起きやすい
2が普通 回りくどくもないし、変な設計でもない ただしB.button1_Click();って名前が悪い。関数名の付け方をもう少し考えた方がいいと思う
というか、Bのメソッドをイベントハンドラにしないのは必要な要件なの?
引数のためにEventArgs継承するのが嫌なのでは
senderを生かせばbutton1のようなインスタンスをあらかじめ渡しておく必要もない
テストしにくそうな設計はやめてください
フィールドにアクセスしてる方がテストしにくさではよほどだろw ステートがねえ方がいいに決まってる
業務なら保守性・テストしやすさ・見やすさ・・・必要だけど 初心者スレで、質問者も見るからに初心者じゃねーかよ それに対してテストとか解説文書とか言ってるやつは池沼自覚しとけよw
引数10個もある時点でテストしやすさなんて求められてないのは明白だからOK
>>589 おれ「GUIはクラス設計が複雑になりがちな領域だよ」
↓
きみ「GUI関係ないだろ!」
↓
おれ「えっ」
↓
きみ「クラス設計が複雑ならGUI関係なく問題が起きやすいだろ!」
↓
おれ「???」
俺の結論としてはどっちも選ばないってことで一つ
600 :
デフォルトの名無しさん :2013/08/25(日) 18:26:22.83
やったこと無いけど、Bのボタンをパブリックにして、Aのインスタンスに直接飛ばすのは出来たっけ?
自分だったら
>>582 を選ぶかな。
それができない事情があるなら、必要なインターフェイスを Class A 側で定義して、
それを実装した Class B のメソッドを Class A のイベントハンドラ内から呼び出す。
Bはボタンじゃないですよ ボタンのイベントを記述しているだけのクラス
デザインパターンの見地からクラス設計を語ってる奴がいない時点で終わってるな
>>604 GUIのクラス設計をデザインパターンに頼らず独学でこなせる奴がいたら天才だわ
>>605 分かったから静かにしとけ
心の電話にでも喋ってろチンカス
MVCとかデザパタとか、キーワード喋りたいだけの奴が多いな そんで肝心の中身はゼロ
>>606 このコードの断片に何の意味があるんだ?
型安全も確認せずダウンキャストしてるからバグがあったらプログラムごと停止
こんなコードを製品に採用したらその会社は終わりですな
学校行って知識だけあってプログラミングできないやつが多いからな。 初心者はとくに動けばいんだよ。実装の無駄さ、複雑さなんて気にするな
>型安全も確認せずダウンキャストしてるからバグがあったらプログラムごと停止 失笑するしかない ダウンキャストは無条件で危険って耳元で囁かれ続けて育ったんでしょうね
>>608 >>581 こんな短いコードの一部だけ見せられてクラス設計について具体的に指南する奴がいるとしたら
そいつは超能力者か大馬鹿者のどちらかだ
クラス設計について具体的に指摘するのなら全体の情報が必要になるのは当たり前
A, Bなんて局所的なクラスだけじゃ何とも言えねーよ
まさにメンヘル行けってことですね
デザインパターンの見地からクラス設計を語りたいだけで
>>581 なんてどうでもいいんだろ
ぜひ語れや
酒の摘みに位してやるよ
>>611 実際
>>606 のコードは動かないぜ?
ダウンキャストを安易に使う奴はこんな短いコードにすらバグを混入させる初心者だと白状してしまいましたな
正解は
((Button)sender).Text = "hogehoge";
初心者はとにかく動くもの書いてればいいんだよ だんだんわかってくるよ
617 :
581 :2013/08/25(日) 19:00:58.96
結局どうしたらいいんでしょう
とりあえず 582 でいいんじゃね。
俺もダウンキャストって実行時に決まるし静的型にとっては基本的には悪だと思うよ でもこういうのを解決する上手い方法ないのも確か
キャストOFF!
自分で設定したイベントハンドラの引数すら信じられないなら好きにしたらいい Debug.Assert( sender is Button ); とかしとけば
自分のコードなんて全然信用できないから その手のチェックはコンパイラがやってほしい
とりあえずsenderの型をobjectにしたバカを呼んで来い
イベント飛ばした型にすりゃいいじゃん
>>625 System.EventHandler()のオーバーロードがすごいことになりそうだ。
コントロールを自作した場合はどうなんだかね。
ウィジェット渡すって構造が元凶の気がする
イベントが基底で定義されてればキャストは絶対にいるだろ CLRは言語レベルでイベントがあるからObjectが渡されるだけの話
つかC#は安全にキャストできるんだからobjectで何の問題もないと思うけどな。
安全と言っても失敗したら実行時にInvalidCastException投げるから キャストすらせずにコンパイル時に解決する方法がないかなという話
というかsenderを使わなければいい話 なんのためのデリゲートだよ 関数ポインタじゃねえんだからさ
どうせsenderを決め打ちでダウンキャストする時点で密結合だしな
Buttonが発生させたイベントならsenderはButtonに決まってるだろう そんなことを疑ってたら怖くて一行もコード書けないわ 参照型変数にはnullが入ってるかもしれないから参照型は使ってはいけない 予期せぬ例外が出るかもしれないから外部のメソッドを呼んではいけない とか言ってんのと一緒
sender.ev += (s, e) ((X)s).f(); と書かずに sender.ev += (s, e) sender.f(); と書けばいいだけの話 これが安全じゃないならsenderのクラス設計がおかしいから修正させろ
デザイナ使わずにクロージャでイベント登録する方が ダウンキャストよりよっぽど糞コードだと思う
ボタンのクリックイベントsenderを型チェックしろとか言ってる奴は eがnullでないことやeが持ってるプロパティの値が正しいことをチェックするのか? しないと片手落ちだ
>>636 クロージャではなくメソッドとVSの話になるが
メソッドをイベント登録するとメソッドの呼び出し階層の表示で追えなくなるのが辛いと常々思う
>>637 やるべきだと言ってるんじゃなくてだな、
せっかく型チェック機構があるんだから
使わないで解決するスマートな方法ないかなと言ってるだけだ
FxCopのルールでも作れば?
ボタンのクリックなんかは変な呼び方するやついないからnullチェックしないが、 自作イベントなら必ずチェックするな
型チェック使ってスマートにやりたいなら自作イベントに登録させるのが一番じゃないかな object senderやeventargs eに期待しちゃ駄目よ
しかしどうしてオマエらは本来の質問そっちのけで場外乱闘を始めるんだ。いつもいつも。
イベントを隠ぺいしないやつが悪い
>>581 です
色々とレスありがとうございました
>>582 はクラスBでイベントを作っておいて、クラスAのボタンコントロールを押した際にクラスBのイベントに飛ばせということですね
Aのように考えたのはクラスBの処理はメソッド単位の方が再利用しやすいのかな?と思ったからです
コントロールがボタンに限らない(例えばメニュークリックからも同様の処理をさせたい)場合はAの方がいいですよね?
そこもイベントはBで記載して共通のメソッドに飛ばせば
>>582 でいいのかな
>>582 がよい、
>>590 でいいというレスを頂けましたので、どちらかで書き直します
やっぱり@は見にくいだけでメリットないですよね・・・
>>645 昨日は規制中だったから書けなかったけど、あなたの案、本当はどっちも論外なぐらい変だよ。
View(Form)がModel(データやメソッドを持つクラス)の参照を握るのは良いけど、
ModelがView(そのの中のGUI部品を含む)の参照を握るなんて最悪のダメ設計。
モデルってどこから出てきたのやら。
UIイベントをハンドリングするんだからコントローラかビューロジックと考えるのが普通だろう。
実際
>>581 がどう考えているのかは知らんが。
そもそもコントローラを分けて設計する人はこんな質問しません。 っていうか、Windows Formでそんな設計する人っているの? そんな人はほとんどいないと思うけど、でもモデルだけはきっちり分けなきゃダメ。
以前に2chのスレッド検索のことで質問したものです 専ブラ開発についてどこで聞けばいいのかわからないのでまたここで質問させてもらいます 書き込んだレスを認識する方法ってなんでしょうか? 書き込んだレスの内容と、差分取得したレスの内容を評価して「たぶんこれっ」て決めるのはおかしいですし... 書き込んだ時間と取得したレスの時間を評価をしようにもPCのローカル時間と比較しても仕方ありません...
>>649 ソフトはおいといて、おまえは普段どうやって判断してる?レス内容、時間、ID見てたぶんこれ!ってやってるだろ?
ソフトもそれでやればいんだよ
>>649 だっておまえの書き込みは投稿失敗してて、実は俺が書き込んだのかもしれないんだぞ。おかしくていんだよ
>>650 そんなもんでいいんでしょーかねー
むむむ
8アプリでキャンバスにImageコントロールを50個以上置くとものすごく重いです。 ゲームなんだけど描画ってどうやればいいの?
formのHWND、DCつかって直接描画
ストアアプリにそんなのないからw
8アプリってスマホなの?
DrawingContextで描画
directx使えばいいよ
>>656 それSyztem.Drawingより遅い
>>658 ほんとに?自分で確認した?誰かの受け売り?
メニューを開くとDropDownDirection が勝手にRightになって戻らないんだけど?
>>660 タッチパネル使ってるだろ?
デフォルトの右利き設定だと、右手でメニューが隠れないように、左に出すようになるらしい。
マウスがメインなら、コンパネで左利きに設定しておけばいい。
なんだ、Rightか…
>>659 MSの社員の発言が元だが自分でも試したことあるぞ
マジでゲロ遅い
WPFの典型的な間違った使い方だ
質問 1..Net2.0で作っておけばWindows XP以降のどのバージョンのOSでもWindows Updateから.Net入れなくても動くと考えていいでしょうか?理由も添えてください 2..Net4.0と.Net4.5は共存できないのでなるべくこれらのバージョンで開発はしないほうがいいと思うのですがこの考えは正しいですか?間違っている場合は理由も添えてください。
A 好きにしろ。
1.発売当時の素のXPには.NET入ってないと思うから動かない 2.シラネ
Z君が4.0でプログラムを作りました A君のOSには4.0が入ってる B君のOSには4.5が入ってる Z君のプログラムを動かせるのはA君のみです MSは4.0と4.5を共存できるようにするべきだった 3.0と3.5は共存できるのに4.xだけ共存できないなんてマジでキチガイ
XPのサポート終了を利用してるんじゃないの?
4.0と4.5両方インストールすればいいじゃん
4と4.6共存でるんじゃなかった? ただ一部コンポーネントが共有されてるから、その部分で互換性に問題生じてヤバイ可能性があるだけ、 普通は気にしなくていいと思ってる
互換性はガンガン切ってくれて構わない マイグレの仕事が増えておまんま食いっぱぐれないからね
プロパティでバージョン変えてコンパイルし直すだけのお仕事だからなぁ VS2012のC++/CLIは、C#と同じ様にプロパティを変えるだけの仕様になった?
レグレッションテストを端折れるなんて楽なお仕事ですね。
1.0/1.1/2.0-3.5の各バージョンで作ったexeを4.0/4.5でも動かしたい時は、 *.exe.configに下記の指定をする。 <configuration> <startup> <supportedRuntime version="v2.0.50727" sku="client"/> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/> </startup> </configuration> 4.5で作ったexeは*.exe.configがなければ4.0でも動こうとする。 増えた命令やライブラリを使ってなければ4.0でも動作する。 この辺は2.0-3.5の関係に近い。 4.5以降に限定したいなら、以下の指定を忘れずに。 <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/> </startup> </configuration>
クラスライブラリやcomの場合はどうするんです? 奴らconfig読みませんよ
俺はおとなしくターゲットバージョンでビルドしなおしてる
>>675 クラスライブラリのアセンブリ(DLL)の場合読み込むexeやCLRホストに依存するから問題なし。
ただGACに登録するCAS使ってるようなのは、透過セキュリティの4.x系で問題でるかな。
comというのはregasmで登録するようなのを言ってます?
関係ないよ excel.exe.configってやるだけ
シリアルポートと通信をするプログラムを作ろうとしています。 しかし、ハードウェアが少し特殊なのですが資料がなく困っています。 C#でシリアルポートと通信する方法は親切にもいくつも転がっているのでなんとかなりそうですが、 見ると文字列かバイト配列でデータを送信するとのこと。 とりあえず、テスト環境としてUSB-シリアルのケーブル2本とリバースの シリアルケーブルを買って自分自身で送受信する環境を作りました。 C++のソースがあるのですが、C++がほとんどわからないので 大変なのですが、なんとか読んでみてポイントとなる部分を探しました。 で、そのC++のソースが以下の通りです。 int func(char CmdNo, char *Para, int Len){ int i; char *p = sbuf; //先頭3バイトは、データ長,0x01,コマンドコードをセットする sbuf[0] = ( Len == 0 ? strlen( Para ) + 3 : Len + 3 ); sbuf[1] = 0x01; sbuf[2] = CmdNo; たぶん、上のコードのsbufはcharの配列を表していると思うのですが、 シリアルポートに送るにはbyteに変換しないとのこと。 これをC#で書こうと思い、これをbyte配列にしたいのですが、 仮にデータ長が3バイト、CmdNoが const char num = 0x10; だとすると、 byte[] buf = {0x03, 0x01, 0x10}; と書いたのですが、これを送ると受け手側はHEX表示で「c0」と表示されます。 何かが間違っているのでしょうが、上のコードをbyte配列で表す方法を教えてください。
最初から一気に作ろうと思わない ・「バイト」や「整数」の型サイズのことをきちんと把握する(serialは関係なし。メモリ内容などを見てチェック) ・文字をきちんと送信できるようにする ・文字をきちんと受信できるようにする ・任意のバイナリを送信できるようにする ・任意のバイナリを受信できるようにする 最低これを最初にやれ 送受信のテストは最初はテラタームなんかのソフトを相手にやれ
フォームの右端に近い位置でコンテキストメニューを開くと チェックボックスとか画像が右側になるんだけど どうすれば戻る?
683 :
680 :2013/08/29(木) 21:19:46.63
>>681 時間がなく焦ってて勉強もそこそこに書き込んでしまいました。
「USB変換ケーブルを2本自分自身に挿す」というのを先週あたりに
思いついていればこんなことには・・・。
で、言われたとおりもう一度最初からテストしてみました。
Teratermで受信したデータをバイナリ表示するやり方がわからなかったので、
別のツールを探してきて、2つのcomに接続し通信しました。
もちろん、その状態でなら任意の文字列・バイナリは送れました。
自分のプログラムでも試すとうまくいかないのですが、
設定が間違っていたことに気がついて、文字列、バイナリそれぞれが送れる
ようになりました。
あとは上のプログラムの解釈が合っていればなんとかなりそうです。
もう少しがんばってみます。
>>680 c0=11000000
03=00000011
RS232Cってビットのエンディアン既定されてたっけ?
まあ、相手方と自分のエンディアン確認してみたら
>>684 それはさすがに決まってますw
っていうか、そのレベルの話は解決したって質問者言ってるじゃん
ビットシリアルなのにエンディアンも糞もあるか。
687 :
デフォルトの名無しさん :2013/08/30(金) 00:38:35.35
つかエンディアンってバイトごとにひっくり返るだけで、ビットごとにひっくり返るものは見たことないわ
>>686 シリアル転送なんだからエンディアンというかビットオーダーの概念はあるよ。
あんたシリアル転送がどういうものか知らないだろw
ポート叩いて自分で信号作り出すならビットオーダーは意識しないとダメだけど、
普通にAPI叩いて通信するならそっちが勝手にやってくれるからビットオーダーは意識する必要なし。
int数値みたいに複数バイト単位のデータを送るならエンディアンは意識しないとダメだけど、
1BYTE単位で通信するならエンディアンは意識する必要なし
>>680 の場合だと、ビットオーダーもエンディアンも意識する必要なし
だから、意識するもしないも232CはLSB firstって規格で決まってますw これはハードウェアレベルで実装されていることだからポート叩いて云々って話もナンセンス。
普通の相手と232Cで通信するならビットオーダーなんて気にすることはないが
シリアル通信とは書いてあっても、232Cだとは書いてないし、相手が特殊なハードだと書いてあるからなぁ
それ以外で
>>680 のようにc0表示になる理由が思い浮かばんが
>>690 >ポート叩いて自分で信号作り出す
そのハードウエアレベルのことをソフトでやるって意味だろjk
例えばワンチップCPUでよく使われてる手法
いやいやPCでI2CやSPIはありえないし、RS-485とかなら232Cと同じだし
>>692 そんなのWindowsでは無理。
マイコンでも今時そんなことやる奴はいないよ。
いやだから、自分がPCで232C規格だとしても、相手がそうだとは限らないわけで 相手は特殊なハードって書いてあるわけですが
昔はパラレルポート/シリアルポートのピンをGPIO代わりにするのがあったよね
相手の環境決めるのはアンタじゃないし断定するには至らんがな ありえない(と思う)の域を出ないだろ
っていうか質問者シリアルポートって書いてるじゃねえかw
今もUSB経由でGPIOつけるボードとかあんじゃん 今時やる人がいないなら誰のために売ってるのやら
物理層の話はスレチとして、エンディアンは
>>680 の仕事で要実装。
電気通信のセクションあるからあるよん
ごめん。アスペと空目した。。
面白いと思った・・・?
>>704 扱わないわけねーだろ。一層もがっつり。
709 :
デフォルトの名無しさん :2013/08/30(金) 01:21:21.52
つか、それほど特殊な環境だとテラターム動かないだろw 無理矢理考えたとしてもドライバレベルで232Cをエミュレートしていないと成立しないわ
エンディアンっていうとバイトオーダーの事しかないと思いこんでる人がいるみたいだから
>>684 の発言は、以下のように訂正させていただきます
c0=11000000
03=00000011
RS232Cってビットオーダー規定されてたっけ?
相手方と自分(232C)のビットオーダー確認してみたら
BYTE1 通信長 BYTE2 0x01固定 BYTE3 コマンド種 BYTE4〜通信長 データ 全部文字列じゃなくて、↑みたいな形式を特殊って言ってるとエスパーしてみた
>>708 昔は知らないが少なくとも今の試験じゃほぼ出ないよ
>>711 それ、どの"特殊"に対するレスですか?
あいにくこちらはエスパーじゃないので
じゃあ無理して反応しなくていいよ 必要があった時に声掛けるから
715 :
デフォルトの名無しさん :2013/08/30(金) 01:57:00.77
>>694 デバイスドライバ持ってくるか、作ればwinでもできる。
今でもwin上から直接ポート叩いてチップにコマンド送りつけることもある。
"WDK7600\general\portio\gpdread\Gpdread.c"なんかがそれ。簡単にできるよ。
マイコン=Arudino、PIC、PSoC系なら今でも一般的だよ。
特殊なハードとはおそらくPICのことだな。
>>690 >232CはLSB firstって規格で決まってます
どっかそれを明示してあるHPとかないか?
今まで意識したことも無いから決まってるんだろうが、いざ探すとなかなか見つからん
>>715 そこにあるのが232Cの全てだとは思えんが
設定が無いって事は規格が決まってて変えられない事だとして
それが相手方とあってるかどうかが問題なんだが
自分が232Cの規定どおりだとしても、相手もそうである保証なんてないんだよ
だからまず
>>680 はそれを確認する必要があるんだがな
719 :
デフォルトの名無しさん :2013/08/30(金) 03:29:10.64
これだからArduino触ったことないやつは訳にたたんのだ
元質問読んだが今やってるのはPC同士でテスト通信してるだけじゃねーか 特殊なハードのことなんて忘れないと
元質問の話なんてとうに終わりました! 今はRS232の話をしてんの!
ここ質問を肴にするスレだっけ?
質問文を読んでの便乗質問だと思えば
ビットオーダーで通信できなくなるなんて初心者にしか起きない考えだからこのスレに向いてると言えば向いてる話題
質問者と関係ない奴が知ったかぶりしてるだけじゃねーか。 あほくさ。
いつものこと
>>718 すまん、英語版のwikipedia見ると規格ではビットオーダーは決められてないと書いてあるねw
俺はマイコン関係も扱ってるんで手持ちのデータシートを見てみると、
確かにビットオーダーが設定できるものもある。
ただ、MSBから送信するデバイスは見たことないね。
規格で決まってなくてもLSBから送るのが事実上の標準だと思う。
>>716 無理だって。
1200bpsだって±3%以内の誤差で1/1200秒ごとにポート出力を変調する必要がある。
今まさに自分の認識がひっくり返ったはずなのにどうしてこう傲慢に慣れるんだ? 頭の致命的な部分が短絡してるのか?
典型的な経験なし知識だけタイプだね
>>716 ついでに、マイコンでもソフトでUARTなんて普通はやらない。
理由は
>>729 に書いた通りタイミングがシビアだから。
ちょっと前はI2CやSPIじゃななくて「俺様シリアル転送」でデータをやり取りする必用がある
ICが結構あって、そういうのはもちろんソフトで実装するが、それがソフトで可能なのは
その手のシリアル通信はクロック付き(UARTじゃない)だから。
>>732 だから使ってみろって。今でも使ってるから。
自分で実装するんじゃなくて、ソフトシリアルのライブラリ使う形になるけど一般的。
>>733 馬鹿だろお前。
じゃあ具体的な型番とか製品名とか言ってみろ。
ソフト××(ハードウェアのシミュレート)っていうのは、コストの関係で
資源が限られたマイコンを使って製品を作る場合か、そうでなければ後はホビーストが
腕試しで遊びでやるぐらい。
ライブラリてw
そんなの買うぐらいなら普通にUARTがたくさん内蔵されたマイコン(そんなの今時
いくらでもある)使うよ。
何度も言ってるようにそうでなくても制約が大きいのに。
知ったようなこと言うなよ
自分が思ってる常識が世の中の全てだと思ってるタイプだな
頭の大事な部分が実装されてないんでしょうね
UARTなんてFIFOが数バイトついてるくらいで基本ソフトだろ
>>738 FIFOがついていたらその時点でソフトじゃないんだがカス
え?Arduinoのソフトシリアルなんて普通にあるよ
ゾンビ映画になっちゃったw
分かった 異世界から書いてんだろ
>>734 Arduionoは標準ライブラリ #include "SoftwareSerial.h"
PSoCは標準ライブラリTX8など
何に製品に使われてるかなんて知るかよ。完全にアスペじゃねーかwww
分かった これは悪い夢です!
>>745 だから、それはソフトであってソフトじゃないんだよ。
TeraTermのマクロで出力してるからソフト制御といっているのと同レベル。
ソフトじゃないのか?マジか 騙された 訴えたら勝てる?
詐欺師と同レベルの煙に巻いた物言いでなにをおっしゃる
Arduionoには2byteのFIFOがついてる。 タイミングなんてちょっとくらい適当でも問題ない。 ソフト制御だなんて笑わせるなよw
俺には何が正しいのやらさっぱりわからんw
夏休みの宿題か? レベル的に、仕事じゃないよな?
それはソフトであってソフトじゃないんだよ。って言われても さっき事実上の標準とか苦しい言い訳をしゃxべった人に言われてもね〜ww
>>754 完全論破されたからって見苦しいぞクズ野郎
ところで、Arduino使ってる奴は全員死ね お前らのせいでMakerFesから多様性が失われて腐っただろうが
>>746 それは.NETで言ったらSerialPortクラスみたいなもの。
ハードウェアを隠蔽して使いやすくしてるだけ。
当たり前だがシリアル転送そのものをソフトで制御してるんじゃありませんよ。
何度も言うように、今時そんなことをする意味なんかまったくない。
と思うんです
>>756 お前半年くらい前にVIPで同じこと言ってなかったか?
っていうか、
>>746 はそもそもシリアル転送がどういうものか分かってないだろ。
調歩同期がどういうものかも
ハードウェアのシリアルは0と1番ピンだけじゃないの?
>>763 シリアル転送のハードを制御してる
の間違いだな
>>764 例えばReadだったら↓みたいに、1ビットずつポート呼んでBYTEにしてるんだよ。だからハードのUART扱うのは別にあるって・・・
// confirm that this is a real start bit, not line noise
if (digitalRead(_receivePin) == LOW) {
// frame start indicated by a falling edge and low start bit
// jump to the middle of the low start bit
delayMicroseconds(bitDelay / 2 - clockCyclesToMicroseconds(50));
// offset of the bit in the byte: from 0 (LSB) to 7 (MSB)
for (int offset = 0; offset < 8; offset++) {
// jump to middle of next bit
delayMicroseconds(bitDelay);
// read bit
val |= digitalRead(_receivePin) << offset;
}
Arduinoの周波数なら9600bpsくらいソフトでシリアル通信できるっしょ
>>763 ホビーストがそういうコードを書くケースはあるよ。
それは否定してない。
否定してるのは
>>692 が言うほど、よく使われる手法なんかじゃないってこと。
そういうので言ったら、マイコン使ってソフトでNTSC信号を合成してブロック崩しとか
作っちゃう人もいるけど、あれは遊びでやってるんであってよく使われる手法じゃない
>>769 お前の世界ではホビーなんだろうな。
ならば、世の中ホビーだらけだけどな。
>>770 だから、じゃあ遊び以外でそれをやる意義はどこにあるんですか?
どこの企業だってコスト意識厳しくなってるのにどこにそんな無駄を許す理由があるんだ。
本当馬鹿だな。馬鹿でなきゃガキだ
え?結局ソフトウェアてシリアルできるの?
>>772 もちろんやって出来ないことはないが、リソースを使いまくるから普通はやらない。
ソフトでUSBは遊びでやってる人もっと多いと思うが、こっちもあくまで遊びであって
実用にはなりません。
いうまでもないけどWindowsではどう頑張っても無理だよw
なんだよ できるのかよ 騙された
Arduinoで赤外線LEDでdelay入れてリモコンとか作ったことあるけど あれもソフトだよな。あれをハードとか言われたら困るし。
ハード実装のを優先するのが普通だけど、使えないケースが多くてソフトになること多いな
>>771 そういうのって一般的な製品に組み込む場合じゃないの?
生産設備とかなら多少リソース食うくらい気にならないし
多少高くなっても余裕があるほうがいいし。
>多少高くなっても余裕があるほうがいいし。 だから馬鹿馬鹿しくてソフトなんかだやらないんですよ。 UARTが3つも4つもついてる32bitマイコンが300円とかで買える時代に ソフトでUARTってそれどんな罰ゲームだよって話。
>>779 なんだ。そういう話か。
UARTがついてない高性能マイコンを想定してたけど
そんなマイコン無いわなw
今どき50円のマイコンでもUARTついてるよね、って最初の質問なんだったっけ?
ハードのことは分からないけど標準ライブラリであるなら使われてるんでしょ
784 :
デフォルトの名無しさん :2013/08/31(土) 00:38:53.24
つか、パソコンと通信している時点で、どんな実装だろうが特殊な仕様じゃないってことだわ テラタームの設定で送受できるレベルだ
ここはRS-233C#スレ
C#erでも少しはハードも知らないとダメだよ
それより空気の読み方を知った方がいいぞ
空気より技術だよね
シリアルとか業務だと割と使うけどね
申し訳ないが仕事が出来ても他人と衝突しかしない奴はNG
QZは人間として欠陥があるのでBAN
こういう不毛な罵り合いが続くと変なのを召喚してしまうのはよくあること
今回に関しては最初から変なのが不毛な罵り合いをしてただけ
自演ぽいのもあるな
流出希望
質問 C++(ネイティブ)のDLLをC#で使うソリューションを作ってます C++でビルドしたDLLをC#のフォルダに出力するには、C++で出力先をC#のフォルダに設定するしかないですか? 参照の追加 → 今回は.netのDLLでないからこの方法使えない DLLをC#プロジェクトに追加して出力ディレクトリにコピー設定 → ビルドによるDLL変更が反映されないからこの方法は使えない
ビルドイベントを活用して古かったらコピーでもするようにしておけばいい
その方法の方がいいかも C#のプロジェクト側から何が使われてるかひと目で分かるようにしたいというのが発端です
ちなみにだがwinのcopyコマンドとxcopyコマンドは日時を比較してコピーできない robocopyを使うか、MinGWやCygwinについてるcpを使うのが手軽 自前で用意してもいいけどさ
> DLLをC#プロジェクトに追加して出力ディレクトリにコピー設定 したあと、csproj直接修正してパスにマクロ混ぜれば行けたような
>>802 linkタグを追加で行けました。ありがとう
<Content Include="../hogehoge.dll">
<Link>hogehoge.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
昨日から今日にかけて最も輝いていたレス
二年以内にwindows phoneが流行りだすと聞いたのでアプリを作りたいと思ったのですが どのAPIを使えばWP用のアセンブリを作れますか?
ggrks windows phone 開発環境構築
二年前にもまるで同じことを聞いた気がする
これから流行るってところ? 壮大なギャグだねぇ!
これからはPHPが更に流行る予感 C#はダメだなこれ
C#の代わりにPHP使ってwindowsアプリ作ろう!
VB → C# → ? 何に変わると思う?
GUIで作られたアプリへの入力を自動化するプログラムを作りたい(そのアプリは特にプラグイン機能などはありません)のですが そういった処理はどうすれば可能なのでしょうか 自分が思いつく限りではウィンドウハンドルを取得してメッセージを送信してGUI操作を真似する事なのですが 定石になってるような、より良い方法はありますか?
キーボード、マウスイベントでいいじゃん。
>>814 これのAPI
別にWM系メッセージ送りつけてもいいけど、ダメなアプリもあるから。
フリーのキーボード/マウスマクロなソフトのスクリプトを書くのが一番楽かも。
sendkeysでいいんじゃね
UWSC
821 :
デフォルトの名無しさん :2013/09/02(月) 11:50:33.10
HttpWebRequest myRequest1 = (HttpWebRequest)WebRequest.Create(url); myRequest1.ContentType = "application/x-www-form-urlencoded"; myRequest1.Method = "POST"; byte[] data = Encoding.UTF8.GetBytes("mail=メールアドレス&password=パスワード"); myRequest1.ContentLength = data.Length; //ここでエラー myRequest1.GetRequestStream().Write(data, 0, data.Length); myRequest1.GetResponse(); このコードをループで実行したら3回目ぐらいで myRequest1.GetRequestStream().Write(data, 0, data.Length); ここでタイムアウトしますなんでかわかりますか? 教えてください!よろしくお願いします><
822 :
デフォルトの名無しさん :2013/09/02(月) 11:53:35.28
HttpWebRequest myRequest1 = (HttpWebRequest)WebRequest.Create(url); myRequest1.ContentType = "application/x-www-form-urlencoded"; myRequest1.Method = "POST"; byte[] data = Encoding.UTF8.GetBytes("mail=メールアドレス&password=パスワード"); myRequest1.ContentLength = data.Length; //ここでエラー myRequest1.GetRequestStream().Write(data, 0, data.Length); myRequest1.GetResponse(); このコードをループで実行したら3回目ぐらいで myRequest1.GetRequestStream().Write(data, 0, data.Length); ここでタイムアウトしますなんでかわかりますか? 教えてください!よろしくお願いします><
エラー内容書け。改行うざい
824 :
デフォルトの名無しさん :2013/09/02(月) 11:58:34.93
ランダムなフルーツの配列をフルーツ名でソートして別々の配列に格納するLINQはどうやって書けばいいですか リンゴ、リンゴ、バナナ、トマト、リンゴが合った場合 "リンゴ" --> ringo, ringo (サイズ2の配列) "バナナ" --> banana (サイズ1の配列) "トマト" --> tomato (サイズ1の配列) var sortedFruits = from fruit in fruits group fruit by fruit.Name into fruitNames みたいな感じでお願いします。
宿題は自分でやれ
826 :
デフォルトの名無しさん :2013/09/02(月) 14:03:01.94
自分でわからないから聞いてるんでしょ ふざけないで下さい
>>823 タイムアウトって書いてあるじゃん。鯖側の接続MAXに達してるとか?
>>824 var sortedFruits= fruits.OrderBy( f => f.Name ).GroupBy( f => f.Name ).Select( g => g.ToArray() ).ToArray();
かな
知らんけど
>>826 マジで宿題じゃねーか。知恵遅れで聞いてろよ
一応
>>822 GetRequestStreamで取ってきたStreamをCloseすればどう?
C#でAndroid用の簡単なアプリ作ろうと思ったらMono使うのが一番でしょうか? EclipsでJavaをいじってみたのですが、あまりに不安定過ぎて挫折しかかってます。 VSが優秀過ぎるってのもあるのでしょうが。
ザーメンスタジオ+VSプラグイン
現在シリアルポートがCOM4になってるとして、デバイスマネージャーから COM1(使用中でなければ)変更できます。 これをC#でやることはできますか?
できます!
やりかたきいてんだろこら アスペか
がんばればできます!
IWDFNamedPropertyStore2で設定
またアスペ連呼厨か。
なんにでも厨をつけるな。
厨って言った奴が厨
アスペだらけだなここは。
アスペクト指向ってどういう概念なんですか?
夏の〜お嬢さん〜
>>838 面白そうだからやってみたが途中で詰んだ。難しいなw
>>846 音は同じだけど音楽ではC#と表記すべきところをD♭と表記することはない
C#はCに調号#を付けたものであり、Dにフラットを付けたものではないから
C++++という意味らしいよ
849 :
834 :2013/09/04(水) 23:02:00.12
>>838 若干敷居が高そうですが、がんばってみます。ありがとうございました。
>>847 意味不明。
ところでスレタイの"ふらっと"は♭のことじゃないのかな。
どーでもいいわw
>>850 「ふらっと立ち寄る」みたいに使う「ふらっと」と、♭をかけてる。
>>848 そうなのか。ずっとC++を斜め上にしたものかと思ってた。
それはそれであってる。
ヘジがC++++つってんだからC++++なんだよ。
857 :
デフォルトの名無しさん :2013/09/05(木) 01:52:31.08
>>856 ++
++ → ♯ って事なんだろうね
>>852 その♭がどこからやって来たのかが分からない
>>859 「♭」は音楽記号「♯」つながりで、
「ふらっと」は初心者でも気軽にってとこからじゃないかな。
♭(半音下げる)と♯(半音上げる)は逆の意味なのに なんで C# が♭と繋がるのか分からない
言葉遊びが分からない人には無理
864 :
デフォルトの名無しさん :2013/09/05(木) 06:19:04.26
どうでも良い話題はレス進むなw
>>850 音楽のこと知らないならC#=D♭(ディーフラット) とか馬鹿な知ったかしない方がいいよ
音楽記号覚えたての小学生がはしゃいでるように見えるから
>>865 え、どう違うんですか?まさか周波数(笑)ですか?
>>866 まったく同じだったら2つの表記方法は必要ないだろ馬鹿か
半音上がると半音下がるで音の表現方法がぜんぜん違うんだよ
具体的には#は明るい音、♭は暗い音になるように表現する
>>867 でも音は同じでしょ?
意味わからないですね
あ、屑に構って遊んでたら本物が来たw
ピアノみたいな平均律の楽器だと音は同じになってしまうな 平均律の楽器のが少ないけどね。
>>867 表現方法の違いが生まれることは事実だが、
それは経験者にしか理解できない話だから言及を避けた
言ってもどうせ理解されないばかりか「そんなのオカルト」という反論が目に浮かぶからな
>>869 「楽譜の目的には音の高さを示すだけでなく音の役割を示すことも含まれているから」というのが答え。
例えば↓の楽譜がわかりやすい。
http://xn--i6q789c.com/gakuten/img/keikaon.gif 右にシャープが二つあるが、これをフラットで書き換えたら音が連続的に上昇しているという楽譜の意図が伝わりにくくなるだろ。
もう一つの答えもある。
ダブルシャープやダブルフラットという記号もあるが、これらは音の高さという見地からは全く必要のない記号だと言えるだろう。
ではなぜこんな記号が用意されているのかという点にもシャープとフラットの使い分けの答えは含まれている。
いつから音楽スレになったんだ?
スレタイつけたときからじゃね? 半角#はシャープじゃなくて単価記号だよ、 とか言い始めたら簿記スレになるのだろうか
>>867 さっぱり意味が分らない。
ここの技術板住人でも分るようにピアノやキダーでどう弾き分けるのか説明してくれ。
ギターなら指をスライドさせることができるじゃないか
232が終わったと思ったら音楽かよ
末期だなもう
だれか質問するんだ
お前を消す方法
>>865 >>867 >>873 C#とD♭は周波数的に同じだがニュアンスが違うってことか。
まあそれはそうなのかと感心する。
しかし、だからといってそれがC#がフラットと関連する説明に
なっているのか?
音楽の授業はまだまだつづきます
つづきはメルマガで配信
886 :
デフォルトの名無しさん :2013/09/05(木) 16:53:42.14
>>883 初心者ってニュアンスを出すのに「ふらっと」って言葉を使っているんだと説明されただろうに・・・
>具体的には#は明るい音、♭は暗い音になるように表現する 周波数が同じなのに、明るいだの暗いだの全然具体的な表現じゃない。 さっさと具体的にピアノで明るい音(C#)と暗い音(D♭)の引き分け方を教えろ。
だから周波数が同じなのは平均律だって。 純正律こそが調和のとれた音楽だ。
説明してる本人が平均律が何か分ってないから説明できるわけがない。
>>888 ピアノでどうやって弾き分けるか聞いてんだが。馬鹿なの?
できないならできないと言えよ。具体的に表現できるんじゃなかったのか? この嘘つきが。
プログラミングの話しようぜ!
CとJ を打鍵した時の音を聞き分けられないものはこの場から去れ
あれ板間違えた
問題 時報は A (ラ) = 440Hz と、1オクターブ上の A (ラ) = 880Hz であるが、 この間の音階の周波数を列挙するプログラムを書け ヒント ・1オクターブ上がるという事は、周波数が2倍になるということである ・A → 1オクターブ上の A の間には、 A#, B, C, C#, D, D#, E, F, F#, G, G# がある
2^(x/12) だよね
>>873 >ダブルシャープやダブルフラットという記号もあるが、
どちらかというと調性がらみだねえ。Des-dur と Cis-dur はどう説明する?
>>888 >純正律こそが調和のとれた音楽だ。
しかし転調ができない
転調がない音楽など糞の役にも立たん
同じ周波数の単音で明るいも暗いもない。明るいだの暗いだのは旋律、和音での話しだ。
プログラミングの話しようぜ!
できないんだろw
SQLサーバーかるーくしかやってないのにいきなりがっつりデータベース使うシステムのコーディングやれってさ しかもデータベースの研修を受けたのは自分しかいない状況でのチーム開発だってさ トランザクションとかもう訳分かめだぜ クラス図もあんまりよく分かってないのにこれから6画面分の書けってそりゃねえよ 何からもうどうしていいか分からない状態なんだけど、何からどうしたらいい? 一応外部設計の仕様書は出来合いのがある
研修うけたのにトランザクションも分からないの?
「プログラムする」と心の中で思ったならッ! その時既にプログラムの実行は終わっているんだッ!
>>902 だってselect句とか使ってただけだぜ?
しかもマネジメントスタジオでいじってたからコーディングだとどうやるのかとかまた別問題だろうし
あ、c#でコーディングします
DB分らんって一プロジェクトに基本情報取得者一人もいないのかよw
>>904 そのぐらいの分量のコードでC系言語で
呼び出す関数とか配列の宣言の仕方とかぐらいしか差が出る余地がないじゃん…
下の方でやってるのは仕事でなく詐欺だからな
>>904 まあコンパクトさを競うんじゃなきゃ、きちんと音階クラスを定義してそいつに
仕事させるのがC#というかOOP言語らしい書き方かな。
インクリメント/デクリメント演算子で値が変る幅を半音にするか1音階にするか悩みそうだ
ただ仕様要件にC#と入れた客はまともだ。 客が一番技術レベル高いのではないか。
>>906 7月から言語研修受けてる新人5人グループでございます
うち一人は入社前はエクセルすら触ったことなくコピペも知らなかった人間で、
もう一人はググったり自分で勉強したりが全くできなくてすぐ混乱パニック居眠りをする人間
まともな残り二人もフォームアプリケーションでのコーディングは1、2回程度
そして残された自分
あ、ちなみに
>>901 は研修の一環で社内でも初めてのグループ開発研修だそうです
だから上司すらよく分かってない可能性があるんだぜ\(^o^)/
書くの忘れてたごめんなさい
10 PLAY "C+D-" こんなこともC#はできないの?
研修かよw 勝手にやってろ。
丸投げ無茶振り研修はITの基本ですよね
>>914 最初にちゃんと書くべきだったね、ホントごめんなさい
こんな状況で全13画面あって、誰一人やったことないXMLも使わないといけなくて、
今月末に仕上げろですよ、マジ助けて
>>915 ホントにこういうのがデフォなの?
それって力がつくからとかそういう理由…じゃないよね?
なんという楽な研修。おれの研修なんて3ヶ月間平均睡眠4時間の合宿だったぜ。 ゆとりだと辞めちゃうんだろうな。
> 誰一人やったことないXML ……?
自分で調べる気が全くないのが驚き。開発の仕事向いてないだろ。 みかかでーたとか丸投げ会社の研修か?
>>917 フォームの使い方から教えないといけないのがいても?
自分でも勉強足りてないから勉強しながらでないとできないのに
でも、案ずるより産むが安しなのかな
>>919 使ったことないと言えばいいのか作ったことないと言えばいいのか、、基本情報の知識程度にしか知らない
>>920 いや、調べてるんだけどさ
なんかもう色々やることとか多すぎて目移りして何から手をつけていいかが困ってる
>>913 うちは
10 NEW CMD
20 CMD PLAY "C+D-"
だったかな
>>918 なんのかんの言いながら部活に近い感覚あるからそこはぬるいと思ってるよ
いや、部活のがまだ教育体系しっかりしてたなw
迷わずググれよ ググればわかるさ
その状態なら、役割分担を明確にして自分の守備範囲だけをまずやっつければいいんじゃ。 個別のことはググればいくらでも資料が出てくるんだし。‥‥いい時代になったもんだよな。
>>924-926 ありがとう
今日クリティカルパスとか作るから、そこでの役割に沿って頑張る
変に周りのことを気にしたりしないようにするよ
>>927 そういう状態で「頑張る」のは危険だよ
素人ががむしゃらに頑張ってもソフトウェア開発は上手くいかない
今やるべきことは、ネットか書籍で既存のシステムの設計やアーキテクチャを参考にして作ること
テストやってるわけじゃないんだし、既に存在してる答えを探さずに自分でダメな解答作ることに意味はない
失礼します。 複数の似たようなフォームを大量に扱う場合、MDIが良いのでしょうか? 今まではSDIに子フォームを追加してて親フォームの枠に囚われずに使えて便利だと思っていたのですが、 Excel等がMDIなのでそっちの方が楽なのかなとも思うようになってきました。 よろしくお願いします。
今時MDIは無いわ
>>930 ですよね・・・。
イマイチMDIの利点が思いつかなくて。
タブブラウザ(死語)だってMDIの一種だぞ どっちが便利かはケースバイケースだからそれだけの情報じゃ分からね
>>932 すいません、複数の監視カメラを制御します。
カメラの数が増えるかもなので、Pictureboxを並べるよりはカメラ毎にフォームを用意した方が楽かなと思いまして。
934 :
デフォルトの名無しさん :2013/09/06(金) 18:53:13.15
>>933 大きさが同じならListBox使ってみたら?
俺だったら1つのフォームに並べるな カメラ数設定したら動的にコントロール作って並べる で、D&Dで1つのカメラ画像だけ1つのフォームにするみたいな取り出しにも対応させとく
>>928 アドバイスありがとう
今日いきなり研修一抜けして来週から社内業務入ってって言われたわ
内容は全く分からないからそのアドバイスは活かせるかは微妙だけど、
ダメな解答を作らず、素人のうちは出来合いのものを組み合わせて作りながら勉強していくよ
>>935 動的コントロール並べるのもいいですね!
ありがとうございます。
>>936 わざわざ車輪の再発明をするのは無駄だ、
ということを今のうちに覚えておくんだ
ライブラリってそういうことだろ?
車輪がなぜ転がるのかを理解していない奴に車輪を正しく使うことは出来んがね
いちいち原理まで理解する時代は遠い過去に終わったんだよ
使えるものは使って、新しいものを作る時は関連技術の仕組みをちゃんと理解する これで大丈夫かな?
TextBoxで複数の位置から同時に文字を入力する方法を教えて下さい!
各種のプロパティやメソッドの意味を理解するには中の仕組みの理解も必要だな
その前に何故そういう激しく逸脱したユーザーインターフェースを考えたのか 教えてもらおうか
脳内で矩形選択でもしてんじゃね
そうです矩形選択のようなものです
>>942 タグの中身を同時に書き換えるとかそんな使い方?
そうですねそんなかんじです <p>aaa</p> <b>bbb</b> <p.>ccc</p> ってあったら 1行目と2行目の<p>の次にキャレットがあるものとして 複数の位置から文字が入力できるようにしたいんです こういう仕組みはSublime Textにあります
ミス ×1行目と2行目の<p>の次にキャレットがあるものとして ○1行目と3行目の<p>の次にキャレットがあるものとして
また研修の宿題かよ。
Sublime Textは知らないけど、普通にベタに追加してけばいいじゃん
よく判らん。
>1行目と3行目の<p>の次にキャレットがあるものとして キャレットって普通1個しかねえんじゃ?
キャレットなんてただの縦線だから欲しけりゃ線描画すればいくらでも増やせる こういうのはどういう入力仕様にするかの方が重要。 俺が作ったらたんにミラーリングするだけの無意味な機能になるわ
今ネット糞遅いからURL見てない。誰かが実現してるなら可能なんだろw 例えばTextChangeされたときに追加されてる文字と場所を見て、それが1行目だったら同じ文字を2行目に追加。 2行目だったら無視するとかそんな処理。 糞処理だけどこんなだったら誰にでも実装できるだろ
そのTextBoxの特定の位置に文字を挿入するという仕組みが作りたいんですが キーワードを教えてください
毎回テキスト全部書き換えちまえよ。できりゃいんだよ。効率なんて無視しろ
間違えた、描画するキャレットの座標ってわかるの?
ggrks キャレット位置 取得
>959 Controlクラス。これにそういう仕組みを自分でゴリゴリ書く TextBoxは既製品だからそういう改造は出来ない >961 WinAPIのGetCaretPosを使えば出来るが、正直取得する必要があるとは思えない
>>959 当たり前だけどTextBoxは
>>956 みたいな拡張なんか想定してないからTextBoxを
ベースに改造しようという発想そのものが無理。
データの構造(
>>956 みたいなエディタがべたテキストでデータ持ってるはずがない)も
描画も全部スクラッチで書かなきゃ無理。
単純に文字列の複数個所を同じ文字列で置き換えるだけなら例えばString.Formatで出来るけど
>>962 ヒント:オーナードロー
オーナードローしなくてもがんばれば位置取得ぐらいできそうな気はする
一度はテキストボックスを貼り付けないでテキストエディタを 作ってみるべきだよな
一方僕はScintillaを使った
今回の件ではキャレット位置を取得する必要なくね?
テスト実装ぐらいならキャレット表示なんて要らないけど、 まともに作るならキャレット描画をしないと操作性が悪い
>>940 こういうバカが副作用でバグを大量生産する
>>972 それ、ソフトに限らず全てに言える。
気取ってエラそうなバカが増えてきて困っている。
以前から居たが、少なかったので余所に回せば良かった。
でも今は……多すぎる。
ああ、こういうのですね (自覚のない)偉そうな馬鹿って
>>973 お前はイーサネットも物理層も理解した上でHTTP通信を使っているのか?
CreateFile一つ取ってもそれをきちんと把握してる奴はごく稀だからな きちんと理解して使うには時間が足りなすぎる
いつまでも初心を忘れたくはないね。
>>976 APIなんて呼び出し方とトラブル例だけ知ってればいいんだよ。
CD扱うときはオレンジブックから読んで動画再生するときは圧縮アルゴリズムから勉強する奴なんていないだろw
>>978 じゃ教えてよ
聞きかじった用語の意味じゃなくて俺がそれ聞いて実装できるようにな
100%知らないだろw
ネスペ持ってるがCSMA/CDの1%も理解していない自信がある
「Cでプログラミングするには人生は短すぎる」って言葉があるけど、 原理から把握して使うにはこの言葉がC#にも当てはまるからな
>>971 >何か原因が思い当たれば教えてください。
・スクロールしていない
顔写真がうざい
まあ最低限メリットとリスクわかってるなら良いんだが 最近の若者はそれすら知らずに使うからこわいよね
>>993 何でそういう話になるんだよw
最近の若者がどうだか知らんけど、あんたは2ch脳にありがちな「昔」(というより、
自分の狭い世代)だけを美化したがる若年寄だろ
webbrowserコントロールのスクロール位置をdocument関係なく 取得できる神技術者はいないものか
犯罪ツールでも作ってるのか?
ツールに罪はない
>>995 だからそれは出来るでしょ。
出来ないのは、スクロール可能な部分がネストされていたり複数存在したりする場合に
「スクロールの位置」とやらを一意に決めること
バイナリになっちゃうとprivateも糞もないからな 猫缶はこれを利用している
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。