ふらっとVisual C#,C♯,C#(初心者用) Part103
C#4.0の場合って配列はListで作っとけばいいですか?
馬鹿w
JavaScriptでいうSetIntervalはTimerコントロールをデザイナーにおいたらできましたが SetTimeoutはなんてコントロールを使えばいいか教えてください
5 :
デフォルトの名無しさん :2013/03/06(水) 12:52:58.79
Timerで一回でStopするとか?
threading.sleepをスレッド起こして使う
Timerコントロールは呼ばれないことがあるから危険
まじで?
その点、threading.thread.sleepは確実
嘘教えたらあかんで
嘘じゃねーし。俺はそれで困ったことあるし。
それはないな
webbrowserコントロールのNavigateで読みに行った時、 なんらかの理由でページの読み込みに非常に時間がかかるか、失敗することがあるのですが、 そういうときに強制的に再読み込みさせたいのですがどうすればいいですか? サンプルがあるとたすかるのですが
C#でブラウザを作りたいんですけど、webbrowserを貼り付けたときって、そのパソコンにインストールされてるIEで表示されるんですか? それともC#オリジナルのブラウザのエンジンで表示されるんですか?
webbrowserコントロールの質問は禁止ですよ。
角の丸いフォームを作りたいのですが、どうしてもギザギザになって しまいます。方法としてはフォームのRegionにパスを渡しています。 綺麗な(アンチエイリアスの効いた)角の丸いフォームを作ることができないでしょうか?
>>16 IEですよ
だからそのユーザーのIEの設定が使われますよ
>>22 そうでしたか、わかりました
ということは環境によって見栄えが変わるからwebbrowser以外のエンジンを使うことを検討します
面倒くさいぞ 後悔するぞ
WebBrowserとSendMessage関数を使ってブラウザのスクリーンショットを取るアプリを作っているんだけど XP+IE8やVista(x86)+IE8環境だと、GDIオブジェクト数がじわじわ増えていく現象に悩まされている (毎回必ず増えるわけじゃなく、時々何かの拍子に増加し、増えた分はいつまでも減らない) リソースの解放はちゃんと行われているはずで、7(x64)+IE9環境で 同じexeファイルを実行して同じ動作をさせても、GDIオブジェクト数は増えずに安定している
気にするな
DirectoryInfoのgetDirectories()とgetFile()を使ってもデスクトップ上に置いてある一部のショートカットとゴミ箱の名前が取得できないのは何故ですか?
そいつらはシェルがおいてるから
それらはどうやっても取得できないですか?
COM使ってシェルの機能を呼び出せば取得できるだろう
>>18 リージョンじゃ無理でしょう
エッジにアルファの付いた画像で、自前でウィンドウを描画するしかないのでは?
○×ゲームが作りたいんですがこういうの↓ oxo xox xoo フォームに綺麗に3x3のマスを配置したいんですが、textboxを同じサイズで綺麗に配置する方法を教えてください デザイナじゃなくてコードで生成したいんです
普通にLocationとかSizeプロパティいじればいい
FlowLayoutPanelを折り返し有効で
そもそもテキストボックスというのが間違い
>>34 LocationとSizeで手動で数字を入れていくのは考えたんですが将来5x5とか任意のマスに増やせる事を考えると厳しいです
>>35 これ今から試してみます
>>36 他にoとxを入力する方法が思いつかなかったため他のコントロールも考えて見ます
デザイナが生成したコード読め その要領でループで追加するだけ
DataGridViewに個人情報の一覧を表示したいと考えています。 名前 , 部署名 タロウ, 営業部 前提) 設定ファイルに記述したコードマスタを読み込んでメモリ上に保持しています。 CD1, CD2, 部署名 0 , 1 , 総務部 1 , 2 , 営業部 コードから取得した部署名をどこに保持すべきですか? 案) DataTableに空の列 [部署名] を作っておく。 個人情報テーブルの内容を取得する。(2000件ほど) [個人ID],[名前],[CD1],[CD2],[部署名] 12345 ,タロウ , 1 , 2 , NULL コードから取得した部署名を入れる。 [個人ID],[名前],[CD1],[CD2],[部署名] 12345 , タロウ, 1 , 2 , 営業部 これをDataGridViewにバインドする。
Relations使ってExpressionで
41 :
39 :2013/03/08(金) 19:35:45.86
>>40 設定ファイルから読み込んだコードマスタを部署DataTableにaddrowする。
個人情報用DataTableに空の列 [部署名] を作っておく。
そのExpressionにParent.[部署名]という感じですか?
Relationsはデザイナで作るのが好きですか?
それともコード上で作りますか?
俺はコードで書くが、好きにしたらいいだろそんなの
43 :
39 :2013/03/08(金) 20:25:27.15
いろいろ手探りでDataGridViewを調べているところなので。 ありがとうございました。
>>39 LINQ を使って個人情報とコードマスタをjoin 。DataGridView のデータソースにLINQ を指定でOK。
画像をBitmapに読み込ませpictureboxに表示させると著しく 表示画質が落ちるのはなぜでしょう? 元画像のサイズは2500*3500くらいですが文字がつぶれて 読めないくらいまでになります。 保存した画像のサイズは同じままです。 プロパティはSizeModeをtrueで表示させています。
pictureBoxのサイズは? SizeModeをtrueというのは意味不明だが?
失礼しました。 SizeModeはZoomです。 pictureboxのサイズは450*600で 読み込みファイルはtif形式です。
画像の拡大縮小のアルゴリズムが幾多もある事をご存じか
別の環境で元々作られていた画面プロトタイプのpictureboxに 読み込ませると縮小表示されたような感じでなんら違和感がない のです。 特にアルゴリズムは仕組まれてません。 一つ気になったのは、その環境だとBitmapに読み込ませて pictureboxに表示させようとすると何も表示されずしばらくして 例外(内容は失念)をはいてました。 streamで読み込ませると問題なく表示されます。 こちらの環境だとstreamでもBitmapでも変化はないです。
その別の環境というのはよくわからないけど、 PictureBoxに縮小表示させるんじゃなくて、 読み込んだBitmapから別のPictureBoxと同じサイズのBitmapに InterpolationMode指定してDrawImageして、そのBitmapをPictureBoxに貼ってみたら?
素人の能書きで説明されても困るからコード貼れカス
自分がやってることを理解してない奴に何をどう説明しろと 入門書丸ごとここで説明しろってか
能書きはいい、貼れば分かる(アル中の発想)
Dictionaryのキーの一意性について質問させてください。 以下の様にDictionaryを使用して、文字列をキーとして、 データを管理するプログラムがあります。 文字列はハッシュ値に変換され管理されると思いますが、 ハッシュの衝突の恐れはあるのでしょうか? 以上、宜しくお願い致します。 Dictionary<string, int> hoge = new Dictionary<string, int>(); hoge["キーとなる文字列"] = 100;
>文字列はハッシュ値に変換され管理されると思います 文字列そのものもストアされます。 万が一ハッシュが衝突してもIEqualityComparer<TKey>.Compareするみたいだから そっちで弾かれるでしょうね
ハッシュ値って言うのは基本的に衝突する前提を置くものだ 当然衝突する 衝突するが、それはキーの一意性になんら影響を与えない パフォーマンスが悪くなるだけ
IEqualityComparer<TKey>.Compare なんて存在しないわ IEqualityComparer<TKey>.Equals()でした。訂正。。
"00000000"から"FFFFFFFF"までの文字列からハッシュ値を生成したら 理論上どっかで衝突しないとおかしいでしょ?GetHashCodeが返すのはintなんだから
ハッシュ衝突の事を気にするのは作る側の話で 使う側は気にしないでいい
61 :
54 :2013/03/10(日) 19:57:26.09
>55-59 Dictionaryはハッシュの衝突をちゃんと考慮されているのですね。 安心して使うことができます。 回答ありがとうございました。
だが待ってほしい。衝突テストした人はまだいない。
えーいめんどうくさいやつめ
ここは毎回違うハッシュを返してみる。
C#の正しい学び方を教えてください 今は無料で使える2010のIDEでデザイナーに部品を置いてググってコピペするぐらいしかできません MSDNを見てもメンバとかプロパティとかメソッドとかみてもそれらをどう使っていいかわからないレベルです
衝突する(+予測可能)からhashdosは成立しえたねん
買わなくていいから独習でも読んで来い
昔、独習Cを買ったら、後半に行くほどどんどん誤植だらけになってた。 一気に書きすぎだろ。というか最低限の校正してから出せ。
独習レベルならネットにまとめサイトいくらでもあるからいらんやろ たまにはMSDNを頭からケツまで読んでみることもいいことだよ MSDNは憲法全文みたいで何言ってるか分からないから そこでみつけたキーワードをぐぐって掘り下げていくとよい あとはひたすら作る、人のコードを読む、自分のコードを人に読んでもらうを繰り返せば いつの間にかスーパーエグゼクティブクリエイター様になっているよ
もし書店まで行って何か買うなら コードコンプリートみたいなコード設計の哲学書を買った方が255倍は役に立つ
WMPを使ったメディアプレイヤーを作っているのですが コマ送りは正常に1フレーム毎にされているのですが、 コマ戻りは1フレームではなく、1秒程戻ってしまいます。 調べてみるとWMPのバグで直す予定がないとのこと、 そこで、強制的にフレームレートからその場所までシーク (Ctlcontrols.currentPositionに1フレーム前の値を入れる) 方法を取りたいのですが、画面が更新されません。 (1フレーム戻ったときの画像にならない) どのようにすれば1フレーム戻ったときの画面を表示することができるのでしょうか?
Flashを使うといいよ。
無圧縮じゃないと1フレーム戻るなんて芸当できないんじゃない?
キーフレームまで戻されるってことか
aviなら戻せるんじゃない?
コンテナごときが1フレーム前の画像を保持しとくことなんてデコーダに強要できるのか
実際に戻るところはフレームレートから計算して戻れるのですが、 画面に表示できない(更新されない)ために問題になっています。 Play=>Pause以外に方法がないでしょうか?
人の話を聞く気が無いんですね
>>79 すいません、そういうつもりではないです。
実際にその場所から1フレーム戻す必要はなく、DirectShowのように
先頭からSeekして指定した場所に移動できればよいのですが・・・(画面の更新あり)
そうするとDirectShow使えって言われそうですが・・・単純にWMVの再生速度を変更
する方法がDirectShowでは分からない(対応していない)からWMPにしました
力技でコマ戻りをした場合にDirectShowを使って1フレーム前の画像を取り出して 画面に描画してみた!!!うまく行ったと思ったけど、、、WMPとDirectShowで切り出した 画質(色合、明るさ等)がかなり違いました。DirectShowでやったから?と思って ffmpegで切り出すとDirectShowで切り出した画像と一緒でした。 嗚呼困った・・・
詳しいことは知らんが。 キーフレーム?まで戻って、そこから「1コマ前のフレーム」にシークしたらダメなの? 最後のシーク以外は非表示?で。
ここの先輩方が主要な音声ファイルを再生するのに使うライブラリって何ですか?
DirectShow
85 :
デフォルトの名無しさん :2013/03/12(火) 07:43:41.31
a["2013-03-01"] a["2013-03-02"] a["2013-03-05"] a["2013-03-07"] ↑を2013-03-01〜2013-03-31の配列に変換したいのですがLINQで一発でやる方法ありますか? EntityFrameworkでカレンダー作ってるのですがfor文で今1日ごとに取ってきていて遅いのです。
86 :
デフォルトの名無しさん :2013/03/12(火) 07:45:01.82
×カレンダー ○スケジューラー
87 :
デフォルトの名無しさん :2013/03/12(火) 08:05:57.57
何も書き込まれていない日もnullが入った状態で戻ってきて欲しいのです。
Nullで返して欲しい? あー前スレでそんな事言って叩かれたわ お前も覚悟しとき
a.OrderBy(t=>t.Key).ToArray()とか?
LINQとかEntityFrameworkとかキモイもの使うなよw
91 :
デフォルトの名無しさん :2013/03/12(火) 10:00:09.68
// 今こんな感じです。 for (int day = 0; day < 31; day++) { var date = new Date(2013, 3, day + 1); ret[day] = db.MyCal.Where(t => t.Date == date).FirstOrDefault(); } // こんな感じでループをなくしたいのです。 var bgn = new DateTime(2013, 3, 1); var end = new DateTime(2013, 3, 31); var ret = db.MyCal.Where(t => bgn <= t.Date && t.Date <= end).〜〜〜
Visual C# 2010 Expressですが richTextBoxに文字を書き込んだ時にnikkiフォルダ内に生成されるようにしていますが 書き込む度にテキストファイルの内容が自動的に更新されるにはどう書けばよいでしょうか 入力内容がテキストファイルに正常に書き込まれません private void richTextBox1_KeyPress(object sender, KeyPressEventArgs e) { string nikkipath = (@"nikki\"); DateTime dtNow = monthCalendar1.TodayDate; string sDate = dtNow.ToString("yyyyMMdd"); string @filename = (nikkipath + sDate + ".txt"); if (File.Exists(@filename)) { return; } using (StreamWriter sw = File.CreateText(@filename)) { string sText = richTextBox1.Text; sw.WriteLine(sText.Length); sw.Close(); } }
まず、 if (File.Exists(@filename)) ここでファイルが存在したら返っちゃうからその先行かんだろ KeyPressの時点でTextの内容はまだ反映されてないから ファイル作成時も0が入るだけだと思うが。 あと毎回新規で作ってるけど、実際にはどうしたいの?
どうなるのが「正常」なのか分からんことにはなんとも
>>91 LINQで外部結合なんてクエリ式でも拡張メソッドでも訳分からんコードになるだけだから
今のままで良いよ
>>93-94 お返事ありがとうございます。
要は日記帳を作っているのですが、richTextBox1に文字が入力された場合に
今日であれば20130312.txtというファイルがnikkiフォルダに自動作成されて、
文字の書き込みや文字の削除がある都度にテキストファイルの内容が自動更新保存されるということをしたいのです。
日付名のファイルの自動生成までは出来ているようです。
更新内容が丸ごとなら、もっと更新の頻度下げないと使いものにならん気がするな。 どっちにしてもKeyPressはありえない、最後の文字が反映されない。この場合ならTextChangedだろ、あまり勧めないけど。 ファイルの方は新規作成と更新で分けよう。
>>96 こんな感じ?
private FileStream _fs
private void richTextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
string nikkipath = (@"nikki\");
DateTime dtNow = monthCalendar1.TodayDate;
string sDate = dtNow.ToString("yyyyMMdd");
string filename = (nikkipath + sDate + ".txt");
if(_fs == null)
{
_fs = new new FileStream(filename ,FileMode.CreateNew,FileAccess.ReadWrite);
}
else if(_fs.Name != filename )
{
_fs.Dispose();
_fs = new new FileStream(filename ,FileMode.CreateNew,FileAccess.ReadWrite);
}
using(var sw = new StreamWriter(_fs,"えんこーど"))
{
//処理
}
}
質問1: Vistaって.Net4.0までしか利用できないですか? 質問2: 8は標準で4.0がインストールされてるから2.0で作ったプログラムは動かないと思っていいですか?
100 :
デフォルトの名無しさん :2013/03/12(火) 12:56:42.82
>>95 多少読みにくくてもDBへの負荷を下げたいんです
>>99 Vistaで.NET Framework 4.5はサポート。
ただしVisual Studio 2012は利用できない。
NET Framework 2.0/3.0/3.5 は追加でインストール可能。
>>100 複雑なクエリ解析させて余計にデータ持ってこさせて、何の負荷が下がるの?
104 :
デフォルトの名無しさん :2013/03/12(火) 13:10:13.93
>>100 >>103 1クエリでとってから加工すればいいんじゃね?
EFはクエリが異常に重いしクエリ量を減らすのはありだと思うよ。
.NET2.0は標準装備にして欲しいよなぁ・・・
EFやLINQを使わなければ軽いのに
一次元配列で戦闘が大文字のアルファベットから始まる値を省くコードって 2.0 3.5 4.0で書きやすさは異なりますか?
馬鹿だろおまえ
ソフトウェアで大事なのはソースコードじゃないんだよ。 気持ちよい操作性なんだよ。ジョブズがそれを証明した。
>>107 配列は固定長だから省いてどうするのかって話があるが
Linq使うか使わないかの違いくらいか
//2.0 List<string> temp = new List<string>(); foreach( string str in arr ) { if( 条件( str ) ) { temp.Add( str ); } } arr = temp.ToArray(); //3.5 var temp = new List<string>(); foreach( var str in arr ) { if( 条件( str ) ) { temp.Add( str ); } } arr = temp.ToArray(); //4.0 arr = arr.Where( (str)=>条件( str ) ).ToArray();
3.5でもLinq使ってもいいんでないの? 2.0ではRemoveAllが使える。 List<string> temp = new List<string>(arr); temp.RemoveAll( delegate(str) { return !条件(str); } ); arr = temp.ToArray();
(´・∀・`)ヘー
Array.FindAllで十分 拡張メソッドは不用 .NET 2.0でもラムダ式は使えるから記述に差は生じないね
C#3.0からか
Linqって覚えたほうがいいものですか?
おれってスゲーしたいなら覚えると確かに気持ちいい あと、おれってスゲーしたい人が書いたサンプルを理解するのにも必要 ラムダ式外に副作用を与える糞コードも書けるが書くと死ぬ
LINQの中核である、拡張メソッドによるコレクション操作処理は便利に使えるよ クエリ式は特にいらん XLinqはXMLのDOM処理で非常に便利 PLinqは必要に応じて
perlみたいに読みにくいコードがほんと増えたな。
無駄なフラグ立てずにすんで読みやすくなった
C#ってライブラリを使わずにCに変換してexe作れるようになれたらいいなと思うんですけど誰もこんなこと考えてないものですかね?
久しぶりにC++の機能追加やろうとググったら、 出てくるソースを読んでみるとどれもバグありばかりで引いた。 もうCには優秀な奴は残ってないみたいだな。
VC#でコード書いたんですけどgitで管理する場合binフォルダは除外しました 他に除外したほうがいいフォルダやファイルはありますか?
objも要らなくね
>>122 いるし既存だし
数メガバイトになるけどねバイナリ
objも除外しました objってHDDから消しても問題ないですかね? ていうか消しちゃったんですが、F5押してもobjが生成されなくなってしまいました
Thumbs.db *.obj *.exe *.pdb *.user *.aps *.pch *.vspscc *_i.c *_p.c *.ncb *.suo *.sln.docstates *.tlb *.tlh *.bak *.cache *.ilk *.log [Bb]in [Dd]ebug*/ *.lib *.sbr obj/ [Rr]elease*/ _ReSharper*/ [Tt]est[Rr]esult* *.vssscc $tf*/
suoも除外して大丈夫なんですか? git checkout . で復元したときビルドできなくなるような気がするんですけど
suoはユーザーのどうでもいいデータしか入ってない
なるほど、ありがとうございます
それよりなんでソースシュレッダーのメタデータが含まれているんだろう
諸事情
多次元配列のint[,] a = new int[4, 2]; と ジャグ配列のint[][] a = new int[4][2]; って 書き方が違うだけでまったく同じ事って認識でOKですか?
いいえ
そもそも下はコンパイルエラー
多次元配列= 次元分のメモリ領域が確保されるイメージ ジャグ配列= 配列へのポインタが並ぶイメージ
ListViewItemSorterを設定しても自動でソートさせたくないんですが、アドバイスお願いします
139 :
デフォルトの名無しさん :2013/03/13(水) 01:21:24.14
C#で簡易的なグリッドコンピューティングを実現できるライブラリありませんか?
BOINC
141 :
デフォルトの名無しさん :2013/03/13(水) 01:41:27.40
>>138 ソートするときだけ設定して、ソートしたらはずす
つうかそんなもん好きなときに自前の関数呼べば良いだろ
144 :
デフォルトの名無しさん :2013/03/13(水) 12:46:01.53
C#特化のアルゴリズム事典のようなサイトありませんか? レイキャスティングのアルゴリズムを勉強したい。
google
アルゴリズムは言語独立だから、それの勉強と言うことならc#に特化してる必要はないね。
C#で書いたソースくださいって意味だろうなw
言語、ライブラリにほとんど入っちゃってるからな。 まさにゆとりのための言語。
150 :
デフォルトの名無しさん :2013/03/13(水) 18:12:54.36
>>147 言語独立だが論文なんかだとみんな好き勝手なオリジナル言語だろっていうのが多いのも事実。
>>150 TimSortも作れ
配列に色んな型を混ぜた値を入れる方法ってありますか? ary = {100, "100", 0.1}
object[]にすればいい。
object型の配列に全部ぶち込む。
こんな便利な型があったんですね 全部objectにします どうもありがとうございます
いやいやいやw 使い分けろよw
PHPに慣れるとこのへんが慣れてなくてw
>>152 みたいな要求はすくなくともここ数年感じたことがないんだが
いったいどんなケースで必要なんだろう?
クラスだって
>>152 から発展した概念にすぎないよ。
型の定義が面倒くさけりゃ、あらゆるケースで必要じゃん。
LLやれば分かるよ LLやってるのに分からないなら、それはとても健全な証なのでそのままでいた方が幸せ
C#は「数値型」を作って欲しかった なんでINT32やSingleがただの構造体なんだよ
>>161 つまりInt32は数値型じゃないと?
「数値型」の定義を教えてくれないか?
LLなあなたにはobjectよりdynamic
165 :
161 :2013/03/14(木) 16:04:28.07
>>162-164 わかってないな
ジェネリクス制約で「数値型」に限定したいのだよ
現状だと構造体でしか制限できない
where T : struct
を
where T : numeric
FileInfoを使わずにファイルサイズを取得する方法を教えてください。
なんで使わないの?
>>165 演算子がインターフェイスで表現できればそれもよかったかもね
>>167 FileInfoの中でやってることはFindFirstFileだよ
シェルを介しても取得できなくはないけど、最終的にはFindFirstFileが呼ばれるんじゃないかなぁ
すいません、失礼します。 webbrowserで「新しいウィンドウ」を開くため、 //main.tinyjoker.net/Tech/CSharp/WebBrowser%A5%B3%A5%F3%A5%C8%A5%ED%A1%BC%A5%EB%A4%CBNewWindow2%A5%A4%A5%D9%A5%F3%A5%C8%A4%F2%BC%C2%C1%F5%A4%B9%A4%EB.html#d8a1a130 のサイトを参考にして作ったのですが、 昨日、動作しなくなりました。 何か更新きたのでしょうか? また、別の方法はあるのでしょうか? 宜しくお願い致します。
プロジェクト新規で作りなおして何度もやってみそ
デザイナでコントロールをダブルクリックするとコントロールに応じたコードが追加されるけど、これ無効にできないかな 邪魔
ダブルクリックなんかしなきゃいいだけだろ。 アル中か何かで意思に反してダブルクリックしちゃうとかでなければw
経験上DataSetデザイナーはよく誤爆する
DataSet、久しぶりにその言葉を聞いたわ
ボタンをポトペタすると高確率でサイズ極小になる
ListBoxにある項目をダブルクリックすることで、対応するListViewとTextBoxの組のボックスを出したいんですけど、
イメージとしてはこんなかんじです。
http://i.imgur.com/4yyX7vi.png - 赤のボックスが出ている状態で、ListBoxにある他の項目をダブルクリックしたら別のそれに対応したボックスが出る
- 薄い青枠内で左右スクロールができる
のようなことを実現したいのですが、何を使えばよいのかさえ皆目検討つきません…
どなたかお教えください。
>>177 動的にコントロールを作成する場合、フォームデザイナは使えないので、
コントロールのデザイン含めてコードで書く必要がある
話を簡単にするため、ダブルクリックでテキストボックスだけを追加していく例をあげるなら
1. ListBox(ListBox1)とパネル(Panel1)をフォーム上に作成
2. ListBoxのダブルクリックイベントに以下を追加
TextBox textbox = new TextBox();
textbox.Multiline = true;
textbox.AutoSize = false;
textbox.Width = 100;
textbox.Dock = DockStyle.Left;
Panel1.Controls.Add(textbox);
textbox.BringToFront();
のような感じ
117の例の場合、動的に追加する要素部分はPanelから継承させたItemPanelみたいなクラスをあらかじめ用意しておいて、
ダブルクリック処理ではそのクラスを追加するのがいいと思う
ItemPanelのコンストラクタでは自身のパネル上にListViewとTextBoxを追加して適切に配置するプログラムコードを記述することになる
やっぱりVC#でデザイナーで部品を置いていくような作り方はやめたほうがいいですか?
逆に何の目的があってデザイナーを使わないのか WPFならともかく
普通にデザイナで作って表示を制御すればいい
デザイナが吐くコードの方が高速だしね
何故デザイなのコードのほうが高速なんでうsか?
可読性を捨ててるから
デザイン時にレイアウトをシリアライズし実行時にデシリアライズするから動的なレイアウト生成より軽い 具体的にはBeginInitでDockやAnchorと言ったレイアウト調整を省略する代わりに デザイン時に得られたロケーションやサイズを設定してやる PerformLayoutで最終調整しEndInitでレイアウトエンジンを有効化 という建前だけど実際どうなのかは知らない
ということは、なるべくデザイナーで配置していって、プロパティも右下のところで設定していったほうがよさそうですね いつも、最初から作り直すためにForm_loadのところでプロパティの変更してました
おい、スレ立てるまでもない質問はここでスレ落ちてるから立てて
HSPスレで聞いたのですがC#でゲーム作る場合ってマルチプラットフォームで動かすのはどうやるのでしょうか?
>>189 XNA Frameworkのことかな?
マルチプラットフォームといってもWindowsとxbox360くらい。
アップデートはもう終わってて新バージョンは出ない。
HSPスレで聞けばいいじゃない まあC#ゲームをファミコンで動かす方法は知らないなぁ
ゲーム製作の話題はゲーム製作技術板へ
C#はVita開発でも使っていてソニーがSDK配っているよね でもC#がマルチプラットフォームと言うのには違和感あるw
monoだな
>>178 ありがとうございます。良い感じにできました。
c#にてwebkit.netブラウザ取り付けたのですがJavaScriptを使おうとしてもAjaxが使えません… Getでのリクエストが不安定でNETWORK_ERROR: XMLHttpRequest Exception 101が度々出てしまいます… 別ドメインからのXmlHttpRequestだからだとは思うのですがwebkit.net自体に回避策はないのでしょうか?
アプリを画面部分とロジック部分に分けて、 monoを使ったLinux向けと、Visual C#を使ったWindows向けの 同時開発をしたいんですけど、Visual Studio 2012 Expressで できますか?
VSでMono使うのは無理
ありがとう
相対位置でコントロールを配置することってできますか? このコントロールはcontrolの下、みたいな感じで…
>>201 出来るよそういうメソッドを自分で書けば。
当たり前じゃないか。
例えばAndroidのようなものはないよ デフォルトではコンテナに対しての相対位置しかない
WPF
205 :
デフォルトの名無しさん :2013/03/17(日) 00:19:32.29
例外を出したアプリケーションは必ず止まるんですかね? 何か不具合があったらコードを99にして保存してくれと言われたんで 何か開発中に拾えなかった例外も99で保存しようと思ったんですが、 それだと、あらゆるところをcatch(Exception)でくくっておくしかないのか?
.Net自体のソースコードは公開されてますか?
207 :
デフォルトの名無しさん :2013/03/17(日) 00:49:42.63
>>205 AppDomain.UnhandledExceptionってのがあって
210 :
デフォルトの名無しさん :2013/03/17(日) 01:24:10.41
質問です。 Formを継承したとあるクラスのKeyDownのイベントが呼ばれないです。 イベントハンドラは登録されています。KeyPreview=trueにもなっています。 フォーカスが来ていないのではないかという意見を過去スレでも見たのですが、フォーカスをコードで与えてみても呼ばれませんでした。 その他に考えられる原因としては、WPF相互運用のElementHostがフォームにFillで貼り付けられているのですが、これが原因でしょうか?
コードで与えたあと、本当にフォーカスが得られているか確認したか?
213 :
デフォルトの名無しさん :2013/03/17(日) 01:47:55.76
>>210 拾えないキーもあるからな
本当にイベントが呼ばれていないのか、よばれても正しい処理が出来ていないから流れているだけなのかきちんと確認したか?
継承してごにょにょやってるくらいならどっかでメッセージ殺してる可能性もあるわな まあゴミクズの書くコードなんて想定できる原因が多すぎてコードでも張らなきゃ答えられんわ
答えてんじゃん
解らないなら無理して答えなくて良いのに
>>210 Show()のあとにApplication.Run(form);
をすればいいよ
219 :
デフォルトの名無しさん :2013/03/17(日) 15:46:33.29
ゆとり言語C#
ポインタが見事に隠ぺいされちゃってるもんだからね
ポインタが扱えないものは全てゆとり言語なの?
C#はポインタ使えるで 限定的だけど
いーじゃねーか。ゆとりでも使える言語って。素晴らしくね? で、いにしえより伝わる例の言葉を。 「ゆとりってゆーやつがゆとりなんだ。ばーか。」
馬鹿でも使えるって素晴らしいことだよな カメラなんて持て囃されたろ 困るのは仕事がなくなる奴だけ
オートマしか運転できないアホとおんなじや
と、いつまでも大先生でいたいマヌケが何か申しております
現実ではマニュアルが必要なのは 一部のカーオタと土方のみという 現実でむき出しのポインタが必要なのは 一部のプログラミングオタと土方のみという たしかに秀逸なメタファーだな
馬鹿でも使えるから馬鹿のままでいいと思ってる馬鹿は問題
と、いつまでも大先生でいたいマヌケが何か申しております
ポインタがないからC#では実現できないアルゴリズムとかあるの?
優秀なプログラマがやりたいことをその言語でコーディングできないのがドカタ用言語
>>230 アルゴリズムのレベルでは存在しないでしょ
つーかunsafeあるし
車好きがオートマしか運転できないw
以前はF1もオートマだったけどな
車好き = 言語好き 車のエアロパーツ(笑)つけたりカスタマイズして喜ぶ人 = 俺言語仕様を妄想したり言語仕様への不満を無駄にカキコしたりする人
ポインタの主用途って可変長配列と参照渡しと不具合の作り込みだっけ 最後のはC#では難しいな
昔はみんなアセンブラやCでゴリゴリ書いてたのに 池沼でも理解できるように設計された言語使って俺スゲエとか威張ってんだぜw パネェw
今は池沼やゆとりでも簡単に書ける程度のプログラムを 昔の奴らは必死こいてゴリゴリ書いて作って俺スゲエとか威張ってたんだぜ
じゃあお前は池沼と認めるんだね
頭悪い話が続いてるけど、ディスクリート(意味わからなければググれ)で 今時のコンピュータは作れない。 ソフトウェアも同じこと。
頭悪いのはお前 表面的な理解では薄っぺらいものしか作れない
だから。ばかってゆーやつが(ry いい加減学習しろよ。語彙が少ないことを自分で宣伝してどうするんだ。
自分用のものを作るだけだからC#でも十分
そりゃ馬鹿が大量に増えたわけだから 馬鹿にも作れるような環境を整備したと、それがC#
ポインタない、メモリ管理自動楽だ楽だ言うてる奴が一番バグを仕込ませてる件
中途半端にメモリ管理されてる分、手動で開放する必要がある場所を探すのに苦労する
247 :
デフォルトの名無しさん :2013/03/18(月) 00:11:02.82
>>230 ダブルポインタ(笑)がないと二進木が実装できないって、主張してるうんこがいる。
そういうのって自分の能力のなさの主張でしかないけど 中卒を公然と晒してるようなもんで何が楽しいのかね
結構いい流れだったのに
>>219 あたりから始まったキチガイの自作自演で
簡単に荒れるのなおまえら
だってC#ごとき出来るからって威張るんだもん
より正確にはC#ができるくらいで威張るなと威張って言う奴が居る
再帰的だな
日本語が違うよ在日
近頃の若者はポインタ嫌だとかほざいてすぐC#だのJavaだのに逃避しやがる
初めて覚えた言語がJavaとかの馬鹿ってどういうふうにポインタ機能やメモリの管理の自動化が隠蔽されてるかって そういうありがたみが解らないんだろうな、なんか可哀そう
お前がな
勝手に人のことカワイソがっててなかなか都合のいい頭お持ちですわアハーン
C#はC++を使ってる人が楽したいときに使う言語なんよ 君たちみたいな低能ドカタが最初に学ぶ言語じゃないんよ
C#とc++でもc++/cliなら一緒じゃん
C++/CLIとかC++とC#の糊のようなもんだから
C++ってリーナスにウンコ呼ばわりされてる弩低脳プログラマの集団が日常的に使っているくっさい言語ですかw? 勘弁してくださいよ旧態的な・・・
そんな見え透いた餌に誰が掛かるか
ふん。言語の優劣を語ってる時点で問題ありだな。 我々は求められた環境に対応するだけだよ。 ‥‥カッコよく書こうと思ったが出来なかった。
選ぶ道なんてなかった 全ては与えられた
荒らしの餌になるなよ
現時点でゲーム用ライブラリで定番のはなんですか?
XNA
XNAは終わった開発環境
ライブラリというかミドルウェアだけど Unity3DがC#に限らず全言語全プラットフォーム中で今一番勢いあるな
VB「僕のことも忘れないで」
Silverlight「...」
XNA「...」
WPF「こっち見んな...」
DirectX.NET「えっ?」
Unityを覚えとけばいい感じですかね Unityで作られた基本無料系のブラウザゲームもどこかで見た覚えがあるので C#もwebで使われるものなんですね とりあえずUnity覚えてみます
いやブラウザプラグインで動くのはwebとは言わん。ブラウザの枠を借りた普通のアプリ。 webというとサーバーで動くものだけど、C#ってそっち(ASP.NET)の方がむしろ多いんじゃないの。
印刷物を作る際に、印刷するデータをフォームで作ってから印刷物のクラスに渡し、 印刷物の方ではデータをただ上から下まで出力するだけにするのがいいのか、 元のデータを渡して、その整形や計算を印刷物のクラスにまかせるのがいいのか悩みます。 一般的にはどのようにしているのでしょうか。
サードのレポート作成ツールを利用します
指定時間になったらお知らせしてくれるソフトが作りたいんですが 11:35を登録すると毎日11:35にBeepを鳴らすようにしたいです そこで質問なんですが、 timerで 1. 11:35だったらBeepを鳴らす 2. 11:35より前だったらなにもしない 3. 11:35過ぎてたらなにもしない っていうふうにやってみたんですが、1の時、タイマーを止めました ソフトを立ち上げっぱなしの状態を考えると次の日は鳴らなくなってしまいます こういう実装がいけないと思うのですが、どのようにするものでしょうか?
プログラミング以前の頭の問題
あ、自己顕示欲が現れた でも大して知識ないからそれくらいしかレスできないw
一体何のためのタイマーなのか
2chの専門板の中でも特にプログラム板は「それっぽい」やつらが「それっぽく」語るけど 基本的に2chにはカスしかいない mixiをはじめとしてSNSが蔓延ったいま、名無しで活動する意味が殆どないんだから ブログやSNSで名前を持って活動してても全然注目されない奴らが 未だに匿名コミュで無駄な時間潰してgdgdやってるだけ 2chで拾える情報に価値がある事もある、俺みたいのも時より情報ばら撒くから けど本来は、2ch以外でちゃんとした情報を拾えるようになって居なきゃ、技術者としてゴミ HNもって身内コミュ作れる奴なら、2chなどにはもう来ない だからスキル高い奴から順番に匿名コミュからは消えていく そういうネットの傾向が2chの各板で見られる ゴミ捨て場の中にも、光るものがあるのが2chだった が、その光るものは、違う場所にいってしまい ゴミッカスだけが取り残されて、置いてけぼりにされてるのが現在の匿名コミュ そういうネットの傾向が2chの各板で見られる
crondのソースでも読めよ いや、ソースは要らないからどうやって動いてるのか調べて、そのマネをしろ
windowsなめんな。
馬鹿自慢をやめろ!
C#を使うってことは同時にMSシンパになることを意味しているからね
ハゲ(パルマー)の手先のおフェラ豚め
11:35までの秒数を計算してタイマーをセット。時間が来たら音を鳴らして再計算してタイマーをセット。
て言ったら信じるの?
settings糞過ぎる エラー吐けボケナス
>>280 タスクスケジューラに新しいイベントを作成するがFAだな
ついにネタがなくなったぽいな
毎秒テキストファイルに書き込み続けるプログラムってHDDの寿命縮めますか? 縮むか縮まないかで言えば影響与えてるので縮むと思うんですけど、気にするレベルじゃないですかね?
縮むか縮まないかで言えば縮むのだろうけど そうするしかないのなら仕方が無いかと ログファイルとか、常に即時書き込むのが普通だしね (毎度フラッシュしないと、落ちた時にログが残らない事があるので)
まあ今時プログラムからのIO命令と、実際のディスクIOなんて一致せんから気にするな
何まじめな回答してるの? それで普段の罪が相殺されると思ってるの?
気にしないことにしますw ありがとうございました
基本クラスで宣言した配列の要素数を継承先の派生クラスで変更するにはどうすればいいのでしょうか?
>>302 公式なソースもなんも
>>186 で言った通り。
デザイナソースからBeginEdit/EndEdit/PerformLayout/ResumeLayoutを外して実行すれば効果が分かるよ
あるわけねえだろw コードを誰が書いたか(人が書いたか自動生成か)でパフォーマンスに差が出たらオカルトだわw
あぁBeginInitだったか
芝生やす前によく確認しないと ここが2chでよかったな
307 :
デフォルトの名無しさん :2013/03/20(水) 19:31:27.05
どんぐり精一杯の虚勢
>>301 どこで宣言した配列でも要素数の変更はできないが
>>301 こういうことか?
class Hoge {
int[] array = new int[GetArraySize()];
protected virtual int GetArraySize() { return 3; }
}
class HogeEx : Hoge {
protected override int GetArraySize() { return 5; }
}
でもコンストラクタで渡す方がいいと思う
基底クラスだよ
要領を得ない
>>310 そういうことなんですが、
>>310 のように書くと
「フィールド初期化子は、静的でないフィールド、メソッド、またはプロパティ'GetArraySize()'を参照できません」
とエラーが出てコンパイルが通らないんです…
そりゃそうでしょうね 310が言うようにコンストラクタで取るか 仮想プロパティにして派生クラスでオーバーライドするか 好きな方を選んでください
newする場所変えればいける
オーバーライドして定数値を変えるっていうのは例外なくコンストラクタ引数に置き換えられる class Hoge { int[] array; public Hoge() : this(3) { } protected Hoge(int size) { this.array = new int[size]; } } class HogeEx : Hoge { public HogeEx() : base(5) { } } この方が素直でいいよ
プロはマニュアルを好み 素人はオートマチックを好む
ITに関しては逆だろ 世の中の多くの人はVBA使えば一瞬で終わる作業に何時間もかけて給料貰ってんだから
IT(笑)とか関係ないからw
単に
>>318 が馬鹿の一つ覚えなだけ。
どんな分野でもプロ故の手作業もあればプロ故の自動化もありうる。
本格派ぶった素人がバカチョンカメラに手を出すのと同じ。 プログラミングの本質もしらずにプログラマ自称してるんだから ドカタなんだし給料は低い。
ITに関して言えば効率挙げても儲かるのは上の連中だけだしな 下っ端はつねに余力を残さないと金も仕事も無くなる
誰にでもできるようなことをしている奴の仕事が価値はない
C++を理解できない少数の秀才以外の頭が残念な人たちのために用意されたのがJavaC#なんだし 当然そういう人たちの仕事は価値がない
煽り方から溢れる知性
毎年思うけど、キ印の奴って何で温かくなると活発になるんだろうな。 爬虫類みたいに冬は冬眠でもしてるのかねw
2年11ヶ月で切られると年度末に1ヶ月あくからです
あーそれで憂さ晴らしって訳かw まんざらありえないシナリオでもなさそうな気が
お前らも明日はわが身だよ
「ら」? お前みたいな無職には関係のない話だろ? 勝手に自分を含めるなって
無職が余力とか喋ってると変な笑いが出るよね
価値マイナスの不良債権がうるせーな。
もう少し高尚に煽ってくれよ。 C#やってるとこんな頭になるのか?
自演なのがバレバレ
C++をマスターしている者ならC#は面白いと感じるだろうが ド素人がC#なんかで関数をただガチャガチャ並べてプログラミングだ!言ってる姿を想像すると本当に馬鹿馬鹿しい そういうアホはまずPHPのような馬鹿に馬鹿をかさねたスクリプト言語を扱ってドカタ仕事するのがふさわしい
あー分かった分かった プロテインはすばらしいね
マスターになるには? 評議会で認められる必要があります 特典は? 弟子を取ることができます
マースターベーションしているの略だろどうせ
さいしょからC#みたいな楽ちん言語でプログラミングを始めようとする馬鹿の浅はかさといったらたまったもんじゃない こういうプログラミングの本質をつかめない馬鹿言語では馬鹿なプログラミング技法しか身につかないい そんな馬鹿思考で凝り固まった自称プログラマにはC++は手につかない、理解できない C++をマスターすればすべての言語が楽に感じる。だからC++を忌避する馬鹿は本当に負け犬
現実と理想のギャップに思い悩むとこういうことになるからよく覚えとけ
>>301 を見て可変長配列だからIList使えばいいと思ったんだが
>>317 みたいな方法もあったのか
どっちの方がいいのだろう
どっちがいいとかじゃなくて後でサイズを変更する必要があるかどうかだろ っていうか配列もIList実装してるけど
Arrayじゃなきゃいけない理由があるのかもしれないし何とも言い難い
別スレッドから定期的(短い間隔で)に呼ばれる メソッドがあるのですが、以下の2通りの方法で コストが低い(負荷が低い方法はどれになるのでしょうか?) 1案(デリゲートを使う) private void Test(int value) { MethodInvoker = xDelegate = delegate { ※valueをフォームに表示する処理 } if(Form.InvokeRequired) { Form.BeginInvoke(xDelegate); } else { xDelegate(); } 2案 private void Test(int value) { if(Fom.InvokeRequired) { Form.BeginInvoke(ChangeForm); } else { ChangeForm(value); } } private void ChangeForm(int value) { ※valueをフォームに表示する処理 }
346 :
345 :2013/03/21(木) 10:48:34.77
ちょっと間違えてました。 MethodInvoker = xDelegate = delegate =>× MethodInvoker xDelegate = delegate =>○
>>345 一緒
BeginInvokeとかフォームの更新とかIOとか別スレッドで行うほどの処理に比べたら誤差
全くもって無意味
どうでもいい
ToolStripContainer上にToolStripを縦に2列置いた初期状態から ToolStrip1とToolStrip2を横に並べて1行にした場合や再度2列に戻したりした場合に ToolStripContainerの高さが自動で1列や2列になるようにするにはどうすればよいのでしょうか?
thisが省略してあるところ全てにthisをつけるコマンドありませんか?
ない
手抜きすんな
this付けるには構文解析が必要
検索と置換で「.this」→「」すべて置換でいいじゃん
「this.」だた
「.*」→「this」すべて置換でいいじゃん
たまにクラスメンバに全部this付けろっていう人いるけど なんか意味あるの?
ファイル名に使えない文字をうまいこと置き換えてくれるメソッドってどこにあったっけ
「this.」を一旦すべて 「」に置き換えてから「hoge」→「this.hoge」→すべて置換で地道にやれ
一定のアルゴリズムで統一しないと勃起が納まらない人もいるんだよ
>>357 直接的なのはないはず
Path.GetInvalidFileNameCharsで取れるchar[]を使ってString.Replaceするとか
ただこの辺のメソッドはファイルシステムを考慮しない文字群だがな
>>362 これにも注意
CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9
なにそれ
使えないファイル名
懐かしのconconクラッシャー
メソッド(笑)
ぶっちゃけ言語を変えたって開発効率は変わらないのよね 馬鹿は馬鹿のまま、コードがろくに書けないw
0 * c = 0
きもすぎww
免許証の写真でも改めて見たのか?
なんというつまらなさ
373 :
デフォルトの名無しさん :2013/03/22(金) 12:19:59.82
WPFかQt(C++併用)
マカーはアホだな。mac使えばいいだけじゃん。
OwnerDrawするなり一から書くなり好きに作れば良いじゃん 既存のコントロールを使わなくちゃいけないなんて規則はないぞ
素直にWPF使うのが軽くて早い 下手にWinFormsのコントロールに手を加えるとちらつきや挙動の制御に振り回される 糞重くなるしな
379 :
デフォルトの名無しさん :2013/03/22(金) 14:37:55.93
でもWPFってWindows限定じゃん?
PSMの延長か
WPFが軽いってのは嘘だけどな。
WPFは8ビット越えのDeep Colorを扱える? もWinForms+DirectXで作ってあるのを移植したいがそこがググっても出てこなくて踏み切れないでいる。
踏み切ってグモるだけ
WPFで48bppのBitmapを扱うネタは出てくるんだがそれをそのまま表示するネタが見つけられない。
そのままってのがどういう意味なのかにもよるが 取りあえずRgb48のBitmapSourceをImage.Sourceに指定して表示はできる
387 :
デフォルトの名無しさん :2013/03/22(金) 19:58:05.40
はよ
質問した奴はハードのことまで
WPFはDirectXだから速いで
レイアウトエンジンとバインディングの遅さで台無し
DeepColorなんて初めて聞いたが、 本当に人間は1677万色以上を区別できんの?
>>391 え?君出来ないの?
うちの職員は新人研修で叩き込まれるが
写真をぱっとみせられて何色使ってるかは分からんだろうなw
このスレの程度なら、レス乞食かどうか見分ける技能を磨いた方がいい
>>392 フルカラーは画家でも判断できないって昔のパソコン雑誌に書いてたけど。
グラデーションの付いた画像の明度をいじったりすると24bitでは分解能が まったく足りないね。なにせRGBが各8bitの階調しかないんだから。 あと、CTやMRIなんかの画像だと24bitでは病巣の造る微妙な影が潰れてしまって 話にならないらしい。
今まで気にもしなかったけど 今後DPIの問題は必ず出るからWPFの方が無難に思える
WinFormsなんてWPFが理解できない無能のための過去の遺物
無能は再生産されてるから決して過去にはならない
dobonがWPFに対応してくれたら移行するんだけどな
そんな奴は移行しなくていいよ WinFormsもまともに使えてない証拠
>>397 いちおうWindows Formだって高DPIに普通に対応できるんだけどね。
俺は結局WPFは普及せずに終わる可能性の方が高いと思ってる。
なんでそんなめんどくさい事に労力をかけないといけないのか
少なくとWPFなら気にする必要がないからな
>>401 そこまで極めたいわけでもないからね
dobonみたいなサイトからコピペで動くものがつくれればいいやって感じ
>>396 比較画像とかある?
1ビット違うだけじゃ差がありすぎるでしょ?みたいな。
>>403-404 Windows FormでもやることはほとんどAutoScaleModeをDpiにするだけ。
なんか勘違いしてないか。
旧VBのFormのGUIの単位がTwipsだったことを考えれば分かると思うけど
もともとMSはモニタの高DPI化はもっと早く実現すると想定していた。
>>406 そんなNYSCのTVで地デジ(HD画質)の画質を体験させろというような話w
409 :
デフォルトの名無しさん :2013/03/23(土) 00:12:16.55
>>395 >>406 1677万色が満遍なく散りばめられた写真や映画などの自然画なら正解。
10億色になってもほとんどわからない。
ただイラストやアニメみたいなベタ塗りに近い(色が偏った)絵だと一目瞭然。
例えば24bitカラーで2色間のグラデーションだと256色しかないので馬鹿でも違いがわかる。
ようするにDeepColor/scRGBはアニメとエロゲのためにあるような規格ってことだ
同じコストかけるなら解像度上げる方がニーズあるし綺麗に見えるし
>>409 の言うように色も誤魔化しやすくなるしでいいわな
フルカラーは知らないけど、 白黒なら医療用でそういう需要があるという話は聞いた事ある
ただ、同じコストかっていうのは激しく疑問だ
413 :
デフォルトの名無しさん :2013/03/23(土) 00:19:40.11
>>410 解像度あげまくって実際6ビットしかないのに疑似フルカラーで8ビットってのは最近のスマホでよくある方法だわな
最近のスマホはディザで色分解能を上げてるわけじゃないと思うけど、 そういう手法なら30年以上前からある
PAINT文でパターン指定して中間色を出すみたいな
416 :
デフォルトの名無しさん :2013/03/23(土) 00:26:12.71
>>411 おれの本業はまさにそれだが、マンモなどの医療用は4kを越える高解像度、かつ12ビット以上だからぶっちゃけC#ではループが遅くて厳しい。
大枠のUIはC#で書いてるけど細部はCとアセンブラで書いてP/Invoke。
>>416 unsafe使っても厳しいか
そりゃまそうだろうなあ
まさにそれが意図した使い方だと思うけど ピュアC#なんてC#しか使えない奴のハンデ戦みたいなもん
そういう用途ではLinqは遅いよ。
ただでさえ画像処理速度糞なのにDeepColorとかまともに動くのかよ
遅くはないだろ。unsafe使えませんってレベルか?
unsafeで処理する以前の段階が糞なんだよ 経験の浅い素人は恥ずかしいから黙ってたほうが良いよ
経験が深い人ならせめてデコードっていえよ
表示の話してるのにunsafeとか無能丸出し
60fps出るのに遅い? スキルに問題ありだね。
unsafeで出来る処理の範囲なんて限られてるのに やったこともないのに馬鹿の一つ覚えで言ってるんだな
>>425 アイコンサイズですか?www
フォーマットやサイズ、同じフォーマットでも作成された環境でピンきりなのに60fps出るのに(キリッ とか馬鹿丸出しですよ
>>427 おまえしか知らない仕様を次から次へと後出しされてもな。無能SEですか。
何をどうやろうとして糞なのか先に全部書け。
>>428 >60fps出るのに遅い?(キリッ
おまえしか知らない仕様で語られてもね(w
馬鹿は見苦しいから黙ってろよ
目糞鼻糞w
xboxがc#なのに遅いはないわw
ToolStripContainer上にToolStripを縦に2列置いた初期状態から ToolStrip1とToolStrip2を横に並べて1行にした場合や再度2列に戻したりした場合に ToolStripContainerの高さが自動で1列や2列になるようにするにはどうすればよいでしょうか?
434 :
デフォルトの名無しさん :2013/03/23(土) 08:24:24.21
435 :
デフォルトの名無しさん :2013/03/23(土) 08:31:57.84
こんなループをC/C++並に高速化できるか? unsafe使ったところでfor文は速くならんだろ? 代案あるか? for (p = 0; p < 4; p++) { for (y = 0; y < 2048; y++) { for (x = 0; x < 4096; x++) { z++; } } }
Cの関数を呼ぶ
全部ループで回す原始的な方法を止める
C#って遅いの?
宇宙からみたら超速いよ
>>434 なにこれ凄い
Objective-Cも大概なくらい遅いがこのくらいはできるもんなのか
単純なループがC#がCより遅いとかあるの?
C#はObjective-Cの足下にも及ばないってことだよ 時間の無駄なのでC#なんてやめてObjective-Cを覚えなさい
ループの内側に計算式があるだろうしどう頑張っても遅いんじゃね?
並列化すればok
GPUでやれ
C#を極めて無いから遅いだけじゃないの?
C#が遅いつってもせいぜいCの2倍程度でしょ
C#が遅いのってフォームだけじゃないの?計算が遅いとかありえるの?
無いよ 今はJITでCとの誤差1%以内になる
浮動小数点はクソマジメにIEEE仕様に準拠している関係で100倍くらい遅い
どうせGPUでやるんだからホスト言語はどうでもいいってことだろ
今時CPUで画像処理をやって遅いとかただのアホ、てことです
C#は基本的にGPUを使うようになってないから
60fpsって1フレーム16msで処理しないといけないし、他の雑処理を抜いても
>>440 >>447 の194msを16ms以内まで高速化とかC#だけでは無理だろ。
Cでも無理
そもそもWPFでGPGPUなんて出来るのか?
Cでは10年前の低スペックPCですら出来ているよ SIMD使ったりはしているけどね
だからそれをC#でも使えばいい
なんでWPFなんだよw SharpDXでも使ってDirectCompute呼ぶとか 軽くラッパー書いて普通にC++経由でCUDA使えばいいだけ
グダグダ言ってないで話まとめろよ 何使えばできるとかお前らわかってるんだろ?
えー C#だけでCに負けたくないんだけど
>>464 そもそもC#だけじゃ何も作れない。IOすらできない。
GPUだのマルチスレッドだのは枯れた技術の最適化手法であって研究段階の進化を続けているモノに適用するのは 実行速度のために進化速度を犠牲にする真正の馬鹿がやる行為。
.ni 7 /ノ ヽ\ 壁に向かってしゃべってろゴミ l^l | | l ,/) / /゚ヽ /゚ヾ\ .n ', U ! レ' / / ⌒ ⌒ \ l^l.| | /) / 〈 | (____人__) | | U レ'//) ヽ\ |lr┬-l| / ノ / /´ ̄ ̄ノ ゙=ニ二" \rニ |
GPUはともかくマルチスレッドなんか楽勝でできるだろw シングルスレッドで画像処理が速いだの遅いだのそれこそアホかと C#で簡単なのはもちろん、C++でもOpenMP使えば楽勝だわ
>>462 この話の発端は「WPFでディープカラーを扱えるか?」だ。
扱えるくさいけど遅くて使い物にならないんじゃね?ってことでここまで話が伸びている
>>469 いやいろいろ難しい計算してその画像を生成するときの話でしょ?
特にそこをWPFで書かなきゃいけない必然性はない
16ms以内という要件だとスレッドを呼び出すコストが大きすぎてマルチスレッドは無理だろ
表示がWPFならShaderEffectで何とかするのが最善じゃないかな
ファイル→Image(Bitmap) が遅いんだからどうあがいても無駄
>>470 上の方のレスを見ればわかるがUIの多DPI対応のために生DirectXからWPFに移植できるかという話だ。
お前ら共通の話題を話し合ってるのかと思ってたら 思い思いの独り言を言ってただけなんだな
new Bitmap の間にネイティブなら表示まで終わってる C#は糞
スレッドプールなら0msだよ
お前ら妄想だけでいってるだけなんだな
480 :
デフォルトの名無しさん :2013/03/23(土) 11:14:07.61
何を?
>>478 スレッドプールに変数渡している間にネイティブなら表示まで終わってる
C#は糞
>>480 のどこに何度も貼る価値があるのか
せめて閾値の算出部分も組めよ
プールできる量なんてたかが知れてるし
使う画像が決まっててかつ少量でなければプールなんて無駄糞
お前ら妄想で言ってるだけなんだな
めんどくさくなってきたからsurfaceでも買ってくる
お前ら勉強がてら実用性無視でOpenCVをC#だけで書き直してみようぜ
休みの日まで勉強してたら脳みそ腐るわ
githubかbitbucketにリポジトリ掘れば手伝うぞ 他はアカウントないし作るのもメンドイ
>>480 これはひどい
>for (int i = 0; i < bData.Height; ++i)
この辺とかド素人丸出し
>>480 for (int i = 0; i < bData.Height; ++i)
{
for (int j = 0; j < bData.Width; ++j)
{
byte* data = scan0 + i*bData.Stride+j*bitsPerPixel / 8;
とかもうアホかと
これめちゃくちゃ遅いだろ
どうすればいいかの代案も出せずに批判する奴は 実はどうすればいいのかはわかっていない。
あれ見てわからないゴミはずっとゴミでいればいいと思うよ
代案だって 廃案にすべきものに代案だって 声に出して笑っちゃった
本人が満足してるなら良いんじゃないの(クスクス
しかしプログラマーの井の中の蛙臭って凄いな
まあDTだしな
レベル2の壁がいかに厚いか分かるだろ レベル3はこんな話をしない
なんかネイティブ厨のバカが騒いでるがそんなもの適材適所だろw
1つしか言語が使えないと適材を適所で使うこともできないけどな
仮にもマをやっててひとつの言語しか使えないヤツなんているの?
おまえら話掏りかえるの好きだな
>>384 がどうやったらここまで捻じ曲がるんだ
ここは偉そうな初心者がいっぱいいるスレですね
オレオレで話すからおかしくなるんだよな
つ春休み
え。384 の続きだったのか。ただの雑談になってるのかと思ってた。。
おまえらだってプログラム始めて半年くらいで コードコンプリートとかエッセンシャル何とかとか読んで 感化されて無敵感持っちゃった経験有るだろ
感化って中2じゃあるまいし そんなのは花粉だけで十分だ
__ ___ r‐ァ r‐x _,ゞ'ニニ‐マェ、 「f` `i L,..r´ `ヽ‐-n_ノ | `vヒ y', ミ}‐`=、_,! ! ゙ー{{! ',ーr‐ ' ーイ'{. ハ ト、 ,f 、 _ゞ‐ '、 ム ,.、 ,_ ,、ヘ! ヽ vーヽt<゙ ヽ \ ` ヽ' ヽ. ', ヾ゙ゝ _ 〉 ヽ 辷――::'ゝ、 ,.-t‐゙':::::::::: ̄:ゝ、 r `ゝ-―‐--' 、 ! . 〈 r゙' ´  ̄ `゙ヽ. ゙! V.| . ト{ vハ トy rェフ . ゙ー` 'ー' ゙ー` 糞スレだったねソーニャちゃん・・・ うるさい黙って支えてろ! お前らは早く逃げろ!!
まさにふらっと向けの話題
なぜこのスレには5番アイアンだけでゴルフをしようとするヤツが現れるのか? どこかの猿じゃないんだから、フルセット担いで適材適所言語を使い分ければいいじゃない。
使い分けるってのは使い分けられる奴の言い分ですから
とうてい言語向けスレで語ることでもないですけどね。
特定言語、だな。w
>>513 それにはまずフルセット買わないとだめなわけで
そのコストをクリアできないやつがいっぱいいるわけですよ
貧乏人がゴルフすんなという結論に落ち着く
カオスを越えて週末が近づく
すいません、分からないことがあるので質問します。 toolStripComboBoxとListBoxで同じDataSetを参照しているのですが、 ListBoxではダブルクリックでメソッドへ、 toolStripComboBoxでは選択でメソッドへ移動します。 toolStripComboBoxを選択なしで閉じた直後(フォーカスがまだある状態) ListBoxを選択するとtoolStripComboBoxの方で判定があるのですが。 フォーカスを移動させたりして回避する方法ないですか? 宜しくお願いします。
メソッドへ移動っての詳しく やっぱいいや。 でも俺用語はやめて普通の言葉を使ってほしいな。 ListBoxとtoolStripComboBoxに設定したイベント名を正確に書いてみてよ? DoubleClickとかSelectedChangedとか。 >toolStripComboBoxでは選択でメソッドへ移動 の選択ってSelectedChangedのことでいいのかな? だったら再現しませんでした。
おっと訂正 誤 SelectedChanged 正 SelectedIndexChanged
たぶんよく理解せずにデータバインディングを使ってるだけだと思うw ついでに言えば、恐らく >toolStripComboBoxを選択なしで閉じた直後(フォーカスがまだある状態) これは多分ただの思い込みで、問題の発生する条件ではないはず。 ダメな人は思い込みが激しく、自分の問題をよく確認する作業も、それを他人に 理解してもらう努力も怠る。
>>522 ,524
もう一度、文章書き直してきます。
VC#でやってたんですけど、WindowsとMacとLinuxで動くソフトを作る場合monoのほうが良いですか? monoには2.0とか3.5とか4.0とかってないんですか?
世の中にお前が作ったソフトを使ってくれる人がどれだけいるかな? その中でさらにMacやLinuxのユーザーとなると何人いると思う? クロスプラットフォーム前提ならWeb(C#ならASP.NET)にしとけ。 ローカルなアプリならWindows以外を相手にするのははっきり言って時間の無駄。
そんな事はどうでもいいので質問に答えてください
529 :
526 :2013/03/24(日) 20:44:50.06
有難うございます マルチプラットフォームに拘るのも考え物って事なんですね
どういたしまして
前向きだねえ君は
よく言われます
コマンドラインで使うようなツールなら共通に出来るけど、 UIが絡むものは互換ないからなぁ
C#スレで言うのもなんだが、Javaが一番妥当な気がする
最近は一般ユーザのPCにはJavaVMはほんと入ってないよ。
最近はセキュリティホール問題でJava消すのが流行りだし
>>527 自分が使うんですよ3OSで
>>533 やっぱJavaのほうがよさそうですね
ただ、配布目的だとこれって言語がないんですね
Pythonにすれば? Qtが使えるから高品質なGUIが作れるよ 配布用のパッケージ化ももちろん可能
自分で使うんならPythonかRubyかなんかでコマンドラインツールとして作ればいいのでは 当然Unixのコマンドは使えるんだろ?
pythonってランタイムごと配布できるんだな。 ファイルサイズでかいけど
C言語のソースコードをC#に変換する方法ありませんか? 古いC#+C言語DLLで作られているアプリをWindows Phoneに移植してるのですが P/Invokeになっている部分を読めないくらい汚くてもいいのでC#に自動変換したいです。
無理じゃね
そのままでは動かないくらい大雑把に変換してくれる支援ツールみたいのも無いでしょうか?
無いですね
慣れるとけっこう機械的に移せる、、手間はかかるか
昔移植したことあるけど文字列の置換で大部分はいける partialで一つのクラスにまとめてstaticメソッドとして取り込んだり 標準ライブラリ関数をDllImportしたり
テキスト置換する方法でやってみます。
素直に仕様を読み取って書けばいいよ。 途中で楽したところで詳細仕様が分からなければテストができないだろ。
んだんだ
だんだん
551 :
デフォルトの名無しさん :2013/03/26(火) 00:45:09.87
string url = "
http://hogehoge.com ";
strin url_enc = WebUtility.HtmlEncode(url);
これを実行した結果
http%3a%2f%2fhogehoge%2ecom
が返って来る事を期待しているのですが
quick watch で見たところ
http://hogehoge.com のままでした。なにが間違っているのでしょうか?
期待した内容が間違ってます。 HtmlEncode()はそんなことするメソッドではありません。
なにをしたいのか知らんが UrlEncode() かな。
UrlEncode()なら、 System.Web.HttpUtility.UrlEncode() だけど、client profileに入ってないから client profileやめてSystem.Webを参照に追加するか、 Uri.EscapeDataString() 使うかしないとね。
スラッシュとかURLとして有効だと思うけど、UrlEncodeでスラッシュもエンコードされるのか?
HttpUtility.UrlEncode()はされる Uri.EscapeDataString()もされる Uri.EscapeUriString()はされない
UrlEncodeってURLに使っちゃいけない文字列をエスケープすることでデータをURLに載せて送れるようにするものだろ
なるほど。使っちゃいけない文字列っていうとこに誤解と不正確があるんだな 使っちゃいけない文字 使えるけど、特殊な意味を持つ文字 が区別できてない MSDNのHttpUtility.UrlEncodeの説明もそういう意味では不正確だな
559 :
デフォルトの名無しさん :2013/03/26(火) 13:20:58.28
スレッドタイマーで500ms毎にイベントを発生させて処理をさせているときに 処理が500ms以上かかってしまったときは、次のイベント発生時(500ms経過後)には どのような挙動になるのでしょうか。 今、下記のような処理をさせたときに、 i=2でseq2()が700mかかってしまった時に、次回のイベント発生時になぜか途中の 「i++;」の行から実行されてしまいます。 int i=0; private void timer_Tick(object sender, EventArgs e) { if( i == 0 ){ seq1(); } else if(i == 1){ seq2(); } else if(i == 2){ seq3(); } i++; if(i == 3){ i = 0; } }
最初の実行中のタイマーフラグをONにして 次のタイマーイベント時はフラグがONなら抜けなければならない
なければならないかどうかは要求仕様次第だろう 取りあえずDebug.WriteLineとかで現在時刻その他諸々出力 というかiは冒頭でInterlocked.Incrementして返値を使うとかしないとバグるよ
普通に再入するだけだろ リエントラントじゃない処理に再入したらそら正常には動かんわな
563 :
559 :2013/03/26(火) 13:50:24.20
>>560 さん
>>561 さん
>>562 さん
貴重なご意見ありがとうございました。
次のイベント発生時に普通に再入してしまうんですね。
お陰様で原因がわかりました。
そもそもseq2()で500ms以上かかってしまうのが根本的にまずいので、
そこを直したいと思います。
根本的にまずいのは500msとかじゃなくてこの設計そのもののような気がしないでもないでもない
別に設計は問題ないと思う。再入したらreturnすればいいだけ。
排他制御すればいいだけ。
567 :
559 :2013/03/26(火) 15:20:35.26
引き続きのご意見ありがとうございます。 再入した時のreturn処理も合わせて組み込みたいと思います。
lock使えばいいだけ。
lockだと待ち行列ができちゃうよね
0.5秒以上かかる処理を0.5秒間隔のイベントでやろうとしているのか。難儀な奴だ。
Windows.Forms.Timerなら再入はないし、 時間オーバーでかぶった場合は適当に捨ててくれる。 UIスレッドで動くうえ、間隔もアバウトだけど。
根本的にまずいのは500msとかじゃなくてこの設計そのもののような気がしないでもないでもない
ファイルパスから大文字小文字が正しいファイルパスを取得する方法を教えてください。
まずズボンを脱ぎます
PathでDirectoryとFileNameに分けてDirectory.GetFilesで取り出すとか
575じゃディレクトリ名が正しくならんな 鉄板なのはGetShortPathNameからのGetLongPathNameか
VC#でちょっとしたゲームを作りたいんですが、ちょっと詰まったので質問いいですか? panel上のコンポーネント上にPictureBoxを表示したいんですがうまく透過できません OnBackColorをオーバーライドしてPictureBoxを透過できるようにしたんですが、 表示させたい画像に透過部分があるせいで結局TransParent状態になってしまいます。 OnPaintをオーバーライドして、透過部分のマップ作成して、 透過部分にそれぞれ下のコンポーネントの色採取して表示していくしかないんですかね。 もっと楽な方法があったら是非知りたいんですが
単なるBuufer
ごめんよく読むと全然違いますな
581 :
デフォルトの名無しさん :2013/03/27(水) 00:26:11.56
テキストボックスに何か入力しようとすると 入力文字列の形式が正しくありません。 と出ます。 stringを無理やりintに変換しているのが悪いことは分かるのですがどう改善させればよいでしょうか。 よろしくお願いします。 ソース↓ private void textBox1_KeyDown(object sender, KeyEventArgs e){ System.Random r = new System.Random(i); int x = r.Next(100); int ans = x; string str = textBox1.Text; int inp = Convert.ToInt32(str); if (e.KeyCode == System.Windows.Forms.Keys.Enter) {//処理} }
>>581 決して煽りではなく、「どう改善させればよい」かは「何がしたいか」が分からないと
決定できません
583 :
526 :2013/03/27(水) 00:29:45.68
stringを無理やりintに変換しなければいいと思います
ブレークポイントで止めてみろ textBox1.Text; に何入ってるか確認しろ まあ空文字列だろうけど
585 :
デフォルトの名無しさん :2013/03/27(水) 00:36:16.96
C#を数日前から始めた初心者です。
>>582 数当てゲームを作ろうと思ったのですが、stringとintは比較できないの(<,> etc...)でintに変換しています。
エラーが出ないようにしたいのです。説明不足ですみません。
>>584 そうです。空です。
とりあえず ・テキストの変更を見張るときはTextChangedを使う ・例外について調べる。さらに黙らせる方法を調べる はい。やってください。
素直に google 先生に「C# 文字列を数値に変換」はどうするんですかと質問してみるとか。
これはブレークポイントの使い方がわからないということなのか。 時々、どの行でエラーが起きるのか書かない質問者がいて変だなと思ってたけど、 ブレークポイントの使い方を知らない人が結構いるってことなのかな。
> C#を数日前から始めた初心者です。
>>577 PictureBoxとか使わず自前で描画
透過とかあると結局そっちの方が楽
だよな。ゲームならフォームに直接描画が最強
>>591-592 やっぱりですかー。適当にちゃっちゃと作ろうと思ったんですが
透過すら出来ないとさすがに微妙ですねぇ
ちょっとUnityでも勉強してきます。
PictureBox使わないと絵が貼れない人のほうが問題
Unityだとちゃっちゃと作れるんだろうか
通常の処理は500msかからないが, 時に700msかかる場合があると, lock, monitorでもいいが, キューを作らず処理するには イベントハンドラの頭でタイマーをdisableにして, 抜けるときにenabeにすればいい 割込みハンドラでよくあるタイプじゃね?
突然なんだよ
598 :
デフォルトの名無しさん :2013/03/27(水) 12:28:57.85
>>588 int inp = Convert.ToInt32(str);
この行にエラーが出ているようです。
いや知ってるよ
600 :
デフォルトの名無しさん :2013/03/27(水) 12:37:31.46
int inp = Convert.ToInt32(str); をtextBox1でEnterが押されたら実行するようにして解決しました。 ありがとうございました。
疑似言語の質問したいんだけどどこいけばいいかわからない…
Int32.TryParse( string, out int )を使えってことじゃないの?
まあ最後は例外処理するからTryParseに行きつくだろうけど。 まずは例外処理を普通に組み込んで慣れておけ、と。
×例外処理するから ○例外処理するか、
むしろサンプルがどこにあるか分からん リンク先で探せと?
ライブラリに初期化を任せてるだけのことだろ?凄いも何も… C++でもそういう簡単なライブラリはもちろんあるし、 C#でもGLを直に叩いたらC++からやるのと変わらん手間だぞ
いや、OpenTKの話じゃねぇだろw
比較の問題だから。 低級言語ではないことは確か
高級言語、低級言語の意味が解ってないだけだと思うぞ
AggregateExceptionが発生してアプリけーションが終了することに苦情がよせられました 例外発生の事由は後日調査するとして、このAggregate〜をAppliation_DispatcherUnhandledExceptionで拾う方法はないんでしょうか Taskを書くたびにWait()を必ず書いてtry〜catchやるとなると、メインスレッドでWait()でTaskの処理待ちすることになるので、やりたくないです。
C#より高級な言語ってあんの?
いくらでも
例えば?
超特級 whitespace 特級 brainf*ck 高級 HQ9+
つまんねーよカス
>>616 TaskScheduler.UnobservedTaskException
LabViewは高級って言っていいかもしんない
LabVIEWほどスパゲッティコードの呼び名が相応しいものはないw 静的に作るだけなら悪くないんだけどなあ
>>622 もう納品しちゃいましたが、ありがとうございました
工エエェェ(´д`)ェェエエ工
文字列が日本語なのか中国語なのかを判別するにはどうしたらいいのでしょうか?
口頭で読んでみて理解できなかったら中国語。
分からないなら答えなきゃいいのに。
大喜利するにしても面白くないのはノーサンキューだよね
Bing翻訳にAPIか何かあるんじゃないか?
機械にも人間にも判別不能な文字列があるけど
こんなんでいいんじゃね? var hira = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん"; str.IndexOfAny(hira.ToCharArray());
謝謝 ↑口頭で読んで理解できたので日本語
病んでる人間多すぎだろここ お前ら一度カウンセリングとか受けた方が良いんじゃねーの?
カウンセリングってどんな事するの?
カウンを売るんだよ
カウンってなんだよ
買うんだよ
買うのか売るのかはっきりしろ!
>>627 CP932でエンコ出来れば日本語
中国も同じように出来るだろ
そんないい加減な てか、元の文字コードも不明だってのに 既にstringになってる保証はない
そもそもどういう用途なんだろうか? 日本語と中国語の判別が必要な場面なんてそうそうないと思うが
Google先生の中の人はある程度やってるはずだよね
ああいうのは各国語の辞書とのマッチ率を見てるんでしょ
言語が分からないのにどうやって構文解析するのだ。
いい加減と言われてもstringはUnicodeだから精々グリフによる分類ぐらいしか分からない その前に謝謝は何語が正解なの?
>>627 perlさんの分野だから、そっちで検索して、
C#コードに置き換えてテストしてみるのがいいんじゃない?
>>646 大方の言語は分かち書きだし、ダメならn-gramを使えばいい
650 :
デフォルトの名無しさん :2013/03/30(土) 00:58:17.88
質問は「文字列が」となってるけど 本当はまだ文字列になってないバイト列だとエスパーすると IMultiLanguage2.DetectInputCodepageを使うべきなんじゃないかな IEの文字コード判定に使われてるアレ 精度はそれなり
“文字列”が単語なのか文章なのかで又違ってくるとは思う
単語なら、中国語と日本語で完全一致するものがある以上,
>>652 の言うように断言は無理
文章なら、助詞が全く無い日本語は(漢文の教科書みたいなものを除けば)あり得ないので
>>633 ,650 の考え方で判別可能かと
ひらがなやカタカナの率とか
お前らスレ違い 失せろ
>>280 自分が寝坊しないように適当に作ったアラームアプリは
スレッド作ってその中の無限ループで時間更新&アラーム時刻かどうか判定した後、1秒Sleepして再判定ってやってる
もっといい方法があるかも知れないけど、まあ寝坊しないしこれで満足してる。
657 :
デフォルトの名無しさん :2013/03/30(土) 18:27:32.80
ASP.NETにはSettings.settingsってないのですか?
つGoogle
ネットを使うと良いよ そこには様々なサイトや掲示板が存在していて 情報交換や質問なんかも答えてくれたりして便利だよ
ここもネットやで!
662 :
657 :2013/03/30(土) 22:47:22.87
ネット使ってみました VWDだと設定ファイルの追加ができなかったのですが、 プロジェクトのプロパティから追加するようでした
ヲタの奴は笑いのツボが普通の人と違う。 それがキモいと言われる理由の一つ。
C#使い=不細工
>>666 グロ画像要求しちゃダメだろw
この流れだと踏む奴いるからw
>>663 ヲタにつきまとうストーカーってのもひとつのヲタだけどなw
668 :
デフォルトの名無しさん :2013/03/31(日) 17:24:49.79
.Netの質問は各言語スレでいいんですかね? UI Automationを使ってみようと思ったんですが、アプリケーションによっては UI Spyで見えるエレメント全部を取得できない場合があります。 コードはこんな感じで、VC#は管理者権限で実行しています。 AutomationElement ae = AutomationElement.FromHandle( ウィンドウハンドル ); AutomationElement node = TreeWalker.RawViewWalker.GetFirstChild(ae); while ( node != null ) { // 子を処理 node = TreeWalker.RawViewWalker.GetNextSibling(node); } これでたとえばリソースモニターだと一通りのエレメントを取得できるのですが、 SpeedFanだとシステムメニューしか取得できません。また、関係あるかわかりませんが、 RuntimeIdの値がUI Spyとプログラムで取得したものが異なりました。 対象のアプリの作りの違い(.Netかどうかとか)でこのような違いが出るのでしょうか? また、UI Spyのようにすべて取得するにはどのようにすればよいでしょうか?
UIAutomationも例によってCOMのラッパーだから.netかどうかは関係ないと思うがなぁ 一応聞くけど そのサンプルソースだと最初の一階層しか取得してないよね
671 :
668 :2013/03/31(日) 19:02:25.95
>>670 ありがとうございました。.Netかどうかは関係ないんですね。
子要素の処理のコードは省略しましたが、一応階層的にたどるようにしています。
ただ、1階層目から取得できる要素とできないものがあります。
SpeedFanの例で言うと、1階層目にControlType.TabとControlType.TitleBarが
あるのですが、TitleBarの方しか取得できません。
また、先ほどは書き忘れましたが、取得できなかった要素の子要素のAutomatioIdを
指定してFindFirst()しても取得できませんでした。
スタイルを重ねて適用するにはどのような方法をとったらいいでしょうか? いずれのスタイルも外部ファイルから読み込む形で行いたいです 全てのButton用スタイル Foreground=赤 background=青 特定のButton用スタイル background=黄 // 結果 特定のButton Foreground=赤 background=黄 その他のButton Foreground=赤 background=青
BasedOn使えば?
お答えありがとうございます <特定のButton用スタイル BasedOn=全てのButton用スタイル> って形で使うのが正しいですか? 検索でBasedOnを引き当ててはいたのですが、使い方が悪いのか 全てのButton用スタイル で上書きされただけで終わってしまってこちらに参りました <Style TargetType="{x:Type Button}"> <Setter Property="Background"/> </Style> <Style TargetType="{x:Type Button}" x:key="button01" BasedOn="{StaticResource {x:Type Button}}"> <Setter Property="Background"/> </Style>
toolStripなどでImageをアイコン等にした時、Enabeled=falseにすると灰色になりますが、 Enabled以外で、アイコンを灰色にすることは出来ますでしょうか?
>>674 > <Style TargetType="{x:Type Button}">
> <Setter Property="Background"/>
> </Style>
> <Style TargetType="{x:Type Button}" x:key="button01" BasedOn="{StaticResource {x:Type Button}}">
> <Setter Property="Background"/>
> </Style>
このBasedOnは1番目のStyleを指せてない Button既定のStyleにしかならない
1個目の方で
<Style TargetType="{x:Type Button}" x:Key="{x:Type {Button}}">
ってやることで{StaticResource {x:Type Button}}が取ってくるStyleを上書きできる
配列の最小値を求める関数ってありますか? int[] や double[] の最小値を求めたいです。 自分で書けば簡単ですが、ライブラリがあるならそれを 使いたいです。
>>675 灰色になったアイコンを設定すれば?
Image ToolStripRenderer.CreateDisabledImage( Image )という便利メソッドがある
LINQ禁止じゃなければMin()使え 哀れな職場の場合は存在しないから自分で書け
>>677 LINQの拡張メソッドがある
int[] arr = { 0, -1, 2, -3, 4 };
var min = arr.Min();
Parallel.Foreachでコア数分分割してループ回して, それぞれのコア出力結果を排他制御してさらに最小値を求める
IOCCCでも始めるの?
俺.Dispose();
684 :
677 :2013/04/01(月) 13:26:08.21
みなさんありがとうございます。 こちらの最低スペックとして.NET2.0なのでLINQを使えませんorz 自分で書くことにします;w;ありがとうございました。
>>678 やっぱりクリック毎にアイコンを更新するしか無いですかねー。
ありがとうございました。
protected override void Dispose(bool disposing) { if (disposing) { // Release managed resources. } // Release unmanaged resources. // Set large fields to null. base.Dispose(disposing); // Call Dispose on your base class. } MSDNのIDisposeのサンプルソースなんだけど、 StreamとかIDisposeもってるクラスはmanaged、 unmanaged どっちの場所に書くの?
もちろんManaged Unmanagedは実質IntPtrぐらい …あとGCHandleもか
ありがとうございます。すっきりしました。
MessageBoxButtons.YesNoとかSystem.Text.Encoding.UTF8等こういうのが列挙体ってやつですか?
UTF8は違う
>>686 ん?GC遠慮します宣言までセットじゃなかった?
GCじゃなくてファイナライザの間違い
それはpublic void Dispose()の方
>>686 アンマネージリソース(
>>687 )を直接握ってるのでなければファイナライザは必要ない
というかその場合パフォーマンスが落ちるだけなのでファイナライザは書いてはいけない
ファイナライザを書かない場合、当然Dispose内のdisposingやif部も不要
派生が絡むとどうなるの?
>>696 派生クラスにファイナライザを書けばいいだけの話
DataContractとSerializableの違いって何? 一方にしかないメリットとかデメリットって何がある?
以前、スレッドタイマの再入がらみの質問をさせていただいたものです。 すみませんが、もう一つ御教えて下さい。 タイマイベントの再入が発生したとき、元々のイベント処理の方は再入した処理の終了待ちになるのでしょうか。 それとも再入した処理と同時処理(マルチコアの場合)になるのでしょうか。
マルチコアじゃなくても同時処理になるよ。 マルチスレッドはマルチコアじゃなくてもマルチスレッドだよ。
703 :
701 :2013/04/02(火) 15:12:45.38
>>702 単に別のスレッドが立ったと考えれば良いわけですね。
ありがとうございました。
704 :
デフォルトの名無しさん :2013/04/03(水) 00:27:48.58
-0(マイナスゼロ)とか-0.0って扱う方法あります?
おれ専用数値型を作ればok
ListBox で項目をオーナードローすると HorizontalScrollbar の設定が true でも項目がListBoxの長さを超えたときに 横スクロールバーが自動で表示されないようになってしまうんですが、表示されるようにする方法はありませんか?
707 :
704 :2013/04/03(水) 00:58:43.75
うーん、たとえばdoubleってIEEE 754の浮動小数点数ですよね 規格上-0.0が扱えるはずだと思うんですがダメなんですかね?
それ扱えたら何かいいことあるの? 用途がさっぱりわからないんだが
>>704 コンソールにプリントしても区別がないだけで、浮動小数なら普通に扱うことはできるだろ
double x = -0.0;
double y = 0.0;
System.Console.WriteLine(x);
System.Console.WriteLine(y);
System.Console.WriteLine(1.0/x);
System.Console.WriteLine(1.0/y);
実行結果
0
0
-∞
+∞
711 :
706 :2013/04/03(水) 02:26:38.80
すいません解決しました HorizontalExtentを自分で設定しないとダメなようですね
712 :
704 :2013/04/03(水) 07:03:11.43
>>709 なるほど、そうやればいいんですね
ありがとうございます
System.Math.Signで-0.0でも0.0でも0が返って来るから
リテラルの代入の時点で符号が失われているのか、と早とちりしたんですが
どうやらSignメソッドって符号を取り出すメソッドではなく
0との比較をするメソッドだったようで
713 :
704 :2013/04/03(水) 07:06:03.06
>>710 あ、こういう方法もありますか
ありがとうございます
何の用途で区別する必要があるの?
知らないなら知る必要がないよ
知らないのに知ったかしてみた馬鹿が通りました
ゆとりは必ず知ったかする。
718 :
デフォルトの名無しさん :2013/04/03(水) 19:54:04.37
>>718 用例みてもそれの何が嬉しいのかよくわからんw
普通に
foo = hoge[0]; bar = hoge[1];
と書いた場合と比べてシンプルになるように思えないんだけど
phpは複雑怪奇
関数の戻り値を受けるときに使うんじゃないの なんちゃってタプルだな
どうやって文字列を2分割したんだ? Splitなら普通に配列になるだろ
var name, age, sex = "トム,32,男".Split(","); みたいなやつだろ
>しかし、今回編集部では「VirusuStudio2010」の下位エディション「Espresso」の存在 これはわざとなのか?
エイプリルフールのネタ記事張って引用して何がしたいんだお前
真の馬鹿は常時馬鹿
エイプリルフールねたは面白くないから当日オンリーでさっさと消すべきだよ というか面白くないのに大手がやるんじゃねえ
情弱が何か言っています
Dictionaryをよく重複チェックに使うんだが、意味のないvalueを入れるのは微妙なんで、DictionaryのKeysのみのクラスとかない?
HashSet
UniqueList<T>を自作
JavaでいうSet(重複を許さないList)は C# にはないの?
3.5以降ならHashSet、4以降ならSortedSetがある
重複を許さず順番を保存するのはないのか IList<T>かCollection<T>を継承してInsertItemかなんかオーバーライドしろってことか
とっとと匿名型をメソッドから返せるようにするか 簡単なオブジェクトをサッと作れるようにせえよ コンストラクタ書くのしんどいんじゃ パブリックセッターに代入するクソ記法使うとあとあと困るしな
listViewのMultiSelectで選択したアイテムのサブアイテムまでを含めたものを 文字列変数に格納したいのですがどうやればいいでしょうか? りんご 10個 100円 みかん 10個 100円 ・ ・ ・ これを変数にしまっておきたいです。(画面に表示する機能のないlistViewのような使い方をしたい)
最後の括弧のせいで余計に意味が分からん
クラス定義してリストか配列に入れとくのじゃダメなのか? それともListViewSubItemの使い方を聞いてるのか?
740 :
737 :2013/04/04(木) 22:04:02.17
りんご、10個、100円 という3つの要素がある配列が複数行ある配列で foreachなどの反復の中で順次追加していく配列の使い方を教えて欲しいです。
あーそういうしつもんなんだー SAN値チェック 1/1d4
それは良くない配列の使い方 string[][]はサイズ変更が出来ないのでList<string[]>にするのがベター
良くないというか、用途に合ってない
744 :
737 :2013/04/04(木) 22:10:55.63
List<string[]>で調べてみます。 ありがとー^^
745 :
526 :2013/04/04(木) 22:15:31.08
なぜか忌み嫌われているDatasetバインドじゃ駄目なのか
特にデータを変更する必要がない場合って List<T>とIEnumerable<T>のどっちがいいの?
ダメなうえに幼稚ときてる。
>>746 で質問の意図が他人に伝わると思ってるのなら人生早晩詰んでる。
>>749 さっさと失せろよ、低脳な煽りしかできないゴキブリが。
ただの変数ならList<T>、汎用的なメソッドの引数/戻り値ならIEnumerable<T>
フォルダ中にある多数のファイルの中から、ある時点から更新されたファイルを見つけるには 全てのファイルを列挙してFileInfoをチェックするしかありませんか? FileSystemWatcherのようなリアルタイムではなく、バックアップソフトのように時々動かします。 NTFSです。
そらそうよ
やっぱ連想配列やな
ListViewでユーザーに選択させない方法ってないですか? DataGridViewだったらRowValidatingイベントでできましたが、ListViewがわかりません 何かいい方法ありませんか?
親のWM_NOTIFYでLVN_ITEMCHANGING見てLVIS_SELECTEDが変化してたら握り潰せばいいと思うよ
こんな風に書いたイベントを消すにはどうしたらいいでしょうか? button.Click += (s,e) => { // ↑消したい };
無理 こんな感じには出来るが Action<object, EventArgs> handler = null; handler=(s,e)=>{button.Click -= handler;}; button.Click += handler;
匿名にしたくせにあとからあいつは誰だって言い出してもらっても困る
調子に乗るな
例えばコントロール名「Control」に「Value」というプロパティがあって、「ValueChanged」イベントが用意されてなかった場合、 自分で作るにはどうしたらいいですか?
Controlクラスがsealedじゃないなら継承して Valueプロパティがvirtualなら素直にオーバーライド、そうでないなら無理やり隠蔽するとか class ControlEx : Control { public event EventHandler ValueChanged; public override bool Value { get{ return base.Value; } set { if( base.Value != value ){ base.Value = value; if( this.ValueChanged != null ){ this.ValueChanged( this, EventArgs.Empty ); } } } } } 無理やりな場合はoverrideの代わりにnewキーワード
ListViewでカーソルキーで移動してスクロールが発生した場合に WM_VSCROLLイベントが発生しないのですが、イベントが違うのでしょうか?
なんの情報をメンバ変数にすればよいのか悩んでいます。 自分のプログラムではメンバ変数がほとんど存在せず必要な情報は全てメソッドの引数に渡しています。 メンバ変数にするとどのタイミングでメンバ変数が更新されるか等が分かりずらく 全て引数で渡していればメソッドを呼ぶ前に力技でデータ加工して既存メソッドを使いまわす事ができるので 個人的には引数で渡す方がわかりやすいです。そんなプログラムが良いかどうかは疑問ですが・・・ 皆さんはどんな情報をメンバ変数にしていますか。 また、メソッドを考える時に引数で渡すのか、メンバ変数を参照するのか等はどのように判断しているのでしょうか?
PrintDocument.PrintPageの実装で、印刷エリアをPrintPageEventArgs.MarginBoundsから取得したけど、実際に印刷してみるとちょっとずれてる PrintDocument.DefaultPageSettingsのHardMarginXとHardMarginYを、MarginBoundsのLeftとTopから引いたらずれが無くなったんだが、こういう直し方であってる? msdnのサンプルはHardMarginについて触れてないし・・・
>>768 確かあってる。
MSDNのサンプルがそれに触れてないのは、.NET Framework 1.xの時代には存在しなかったから。
>>767 オブジェクト志向のオブジェクトってのは基本的にデータと振る舞いのセットだと言う
極論すればこのデータがメンバで保持する内容
1行目に関しては大方の人間がそう答えるでしょう
2行目以降は好き好きですね
自分がこれだと思うものを信仰してください
引数を省略するためにフィールド(メンバ変数)を利用するな、っていうのは OOP以前の常識だからいいけど、クラスにフィールドがほとんどないってのも それはそれでちょっと奇妙だと思うけどw なんかstaticおじさんと同じ勘違いをしてる気がする
SAXのような設計もあるし、オブジェクトをデータと見なすのは大間違い
>>769 サンクス
やっかいだなmsdnとdobon
SAXみたいなパーサーは内部状態がデータだろ 見方の問題だよ
どうせならユーティリティクラスを引き合いに出すべきだった
SAXカッコいいだろ。
状態を持ったオブジェクトはローカル変数だけにあらわれて消えていくデータと比べると 複雑さのケタが違うやね どこからどういうルートで書き換えられるか無限の可能性が出てきてしまうし ローカル変数ならifとかメソッド呼び出しとかの流れの中にデータの移り変わりがはっきり記述されるから分かりやすいけど まあそれはそういうもんだからしょうがないわね ローカル変数はいつまでも残っていてはくれないし
ここは言語について講釈語るスレじゃないんだが
状態を持たないオブジェクなんて、そもそもインスタンス化する必要がない。 手続きの集合で十分事足りるという事だぞ。
インターフェイスdisってんの?
この手の話はやっぱ荒れるな お前がNo1だと認めたべじーたは偉いぜ
荒れてるようには見えんが
荒れるまで1分1秒の状態
無慈悲な大荒れですか。
全然荒れねーじゃねーか
うちの地域では荒れてるよ
>>777 >どこからどういうルートで書き換えられるか無限の可能性が出てきてしまうし
そのオブジェクトのスコープを小さくすればすべて解決。
無限の可能性がある時点で設計ミス。
788 :
デフォルトの名無しさん :2013/04/06(土) 19:18:04.57
いまさらながらC#勉強したいんですが オススメのサイトはありませんか? 10年ほど前にC中心にあれこれ基礎的なことやったくらいです
無いんですよ・・・期待に沿えずごめんなさいね
未確認なんたらかな
川俣って説明がまわりくどいよね。 コードも保守無視のコードばかり書いてそう。
linqの本の人だっけ?
中身が同じで32bitと64bitのunmanagedのDLLがあってこれをDllImportしたいんだけど x86とx64の時で使い分けるにはどうすればいい? 別々の名前でDllImportしておいてポインタのサイズで環境を見分けて 呼び分けるラッパーメソッドを作る他にいい方法はある? monoのdllmapみたいな仕組みがあれば便利なんだけど
>>794 カレントディレクトリを変えるとかPATHを設定するとか
797 :
796 :2013/04/07(日) 11:26:23.58
これでいけるっぽい [DllImport("kernel32.dll", CharSet = CharSet.Unicode)][return: MarshalAs(UnmanagedType.Bool)] static extern bool SetDllDirectory(string lpPathName); [DllImport("SampleDll.dll")] static extern void Hello([MarshalAs(UnmanagedType.LPStr)]string name); static void Main(string[] args) { SetDllDirectory(Environment.Is64BitProcess ? "./dll/x64/" : "./dll/x86/"); Hello("Hoge"); } LoadLibrary呼んで./dll/x64/SampleDll.dllってやっといてもいけるみたいだけどこの方が管理しやすいと思う
それ他の部分に影響を与えない?
与えるよ だって検索パス変えてんだから
SetDllDirectoryはアプリケーション内だけで有効だし DLLが見つからないときに探しにいくパスを登録するだけだから特に問題はないのでは というか与えるのが目的でしょ
>>797 素晴らしい
これは思いもよらなかった
ありがとう
Google Drive APIでも見たら?
GDATA API のサンプルにはメアドとパスワードで認証する方法しかでてこないのでここで質問してます
あっそ死んでろ
わからないなら無理に書き込む必要ありませんよ 黙っててください 迷惑です
誰が無理してるって? セノビーはお前やろう
ここはC#のスレであって一般のサービスの使い方を説明するところではない 日本語の意味が分かるならお引取り願おう
誰もGoogle Drive APIなんか使ってないだろうし ほっとけばスルーされて終わるのに いちいち絡むから・・・
雑魚が無理してプログラミングなんかすんなよ 命にかかわるぞ
もっと荒れろ
ここではGDATA APIを使いこなすことすらできない人たちが威張ってるのですか 情けないスレですね
単発が湧いてきたな
class Fuga { SortedList<int, SortedList<int, int>> hogeList; public SortedList<int, SortedList<int, int>> HogeList { get { return hogeList; } set { hogeList = value; } } } Fuga fuga;を1つ作ってfuga.HogeListの中身をいくつものスレッドから見たいんだけど そのいくつものスレッドからforを使ってfuga.HogeList.Values[n].Values[m]を見たりforeachを使って中身見たりしてるとたまにエラー出るのはなんで? たとえば インデックスが範囲を超えています。負でない値で、コレクションのサイズよりも小さくなければなりません。 とか シングルスレッドで動かせばエラー出ないし、fuga.HogeListの中身を変えようとはしてないのにどうして?
仕様上ダメだから それを承知で聞いてるとしたらソース見るしかない
コレクションを変更しなければ、複数の同時読み込みは大丈夫だとMSDNに書いてあるな。 別の所でヘマしてるんじゃないか?
エラーが出たときはリトライすればいい
>fuga.HogeListの中身を変えようとはしてないのにどうして? とか言いながら、メインスレッドで変えてるんじゃね?
821 :
817 :2013/04/10(水) 13:17:36.44
ごめん読み取りOKだったか
foreachはアカンよ
コレクションの変更がないなら、同じIEnumerator使い回すとかしない限り問題ないはずだが
よく知らないのに断言する人いるけどなんなの?
>>823 そもそもGetEnumeratorが常に同じオブジェクトを返す実装もありうるからな。
コレクションを変更しないからといって、foreachがスレッドセーフだと思っちゃいかん。
Listが変更されないのにインデックスの範囲が超えるとか おかしくね?
>>825 foreach(var i in collection)
foreach(var j in collection)
〜
みたいなことができなくなるから、普通のコレクションじゃありえないだろう。
ソース見る限りリストとイテレータに問題があるようには見えないな インデックスが範囲を超えていますのエラーが出たとき添字とリストの中身確認したか?
TabPage内を別Form(内部Form)で実装する場合に、Tabキー移動をうまいこと処理する方法ってない? 内部Formで↓を実装してみたら、Tabキー移動:成功、Shift+Tabキー移動:内部Form内でループだった protected override bool ProcessTabKey(bool forward){ return TabPageの親フォーム.SelectNextControl(ActiveControl, forward, true, true, true); }
> TabPage内を別Form(内部Form)で実装する 真剣に意味が分からない
こんな感じ TabPage.Controls.Add(new 内部Form());
SortedListはスレッドセーフは保障しないって書いてるじゃん。
どの部分? 列挙操作のスレッドセーフに関しては言及されてないように思うけど
>>831 UserControlじゃダメなの?
既にあるFormを使い回したいとか?
うまくいかないって?
Tabでフォーカス当たらないとか?
>>834 Formだとデザイナで作れる
Tabキー移動だと、TabPage内Formでフォーカスがループする。(TabControlの次/前のコントロールにフォーカスが移動しない)
で、
>>829 の実装だと、TabControlの次コントロールへ行けるけど、前コントロールには行けない
UserControlだってデザイナでタブオーダー設定できるよw 変な小細工するより素直な方法でやった方が後のためだと思うけど
UserControlもデザイナ使えるけど
すまん、UserControlの存在自体知らなかった・・・
>>839 そりゃどっか別の場所で変更される可能性があるから一般にはスレッドセーフではないと言ってるだけだ
もちろん、読み取りだけのつもりでも内部では例えばキャッシュなどで状態が変わる実装になってる可能性はある
void Method( params int[] arr ){} ... Method( 1,2 3 ); こういうのはできますが、引数を作るときってList<T>で作ることも多いじゃないですか void Method2( List<int> lst ){} ... Method2( 1, 2, 3 ); ↑ こういうふうに使いたいけど無理ですよね void Method3( params List<int> lst ){} ↑ これができればよかったんですけど
void Method(params int[] args) { Method((IList<int>)args); } void Method(IList<int> args) { } のオーバーロードでも書いとけ
なるほど……
Hashtableってスレッドセーフですか? ロックしないとダメですか? ロックしてないのに全然エラーが出ないからこのままでいいか迷う
そうか。列挙はしてないからいいのか。
ConcurrentDictionary使うと(スレッドが)多い日でも安心
未だに.NET1.1縛りなんて存在そのものがエラーだから気にしなくてOK
848 :
デフォルトの名無しさん :2013/04/11(木) 18:34:53.67
Sendkyes.send("abc"); とかをクロームブラウザで表示されたページの テキスト入力欄とかに送るとフリーズする人いる? aaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbcccc... みたいな感じで数千数万文字入力が送られる感じで
さあ馬鹿が入荷しました。
string x = ""; for (int i = 0; i < 50000000; i++) x += i; ブラウザの中でこれをやらせてるに等しいんだから正気の沙汰じゃない
どゆこと?
作った本人がスレッドセーフじゃないと言ってるのに 他人がそれは違う意味だ、これはスレッドセーフだと言う意味が分からんな。 しかも実際マルチスレッドで使ったら落ちてるのに。 というかここはスレッドセーフかどうかなぜMSDNを読まない? ちゃんと書いてるだろ。
読んだ上で曲解してるんです
>コレクションが変更されない限り、SortedList<TKey, TValue> では、複数の読み込み操作が同時に発生しても問題ありません。
>ただし、コレクションの列挙処理は、本質的にはスレッド セーフな処理ではありません。 これなんで列挙処理はスレッドセーフではありません って表現で書かないのかね 「本質的には」ってそんなに重要なところか? つか本質じゃない要素ってどこにあるんだよ
婉曲的な方が優雅な気がするだろ? まあ、実際はくどいだけだが。
>>856 ここで曲解する馬鹿のためにこんなのは常識だということを強調したんだよ。
本質的にスレッドセーフの難しさを分かってないんだよ。
自分で変数使って同期を実装する馬鹿ってたまにいるだろ。
そんなのでスレッドセーフにできるわけないのに。
以下、本質的に話をするスレになります。
>コレクションの列挙処理は、本質的にはスレッド セーフな処理ではありません。 ↓ >列挙操作のスレッドセーフに関しては言及されてないように思うけど 曲解ずきるだろ。
まとめると 読み込みは問題ないけど列挙はスレッドセーフじゃないよ でおk? 列挙は読み取りではないということか
おkなわけねえだろ
イテレータで読み込む度に現在位置情報書き換えてるもの。 各スレッドからアクセスしたらインデックスの範囲超えて当たり前。
IEnumeratorを複数スレッドで共有する変態がいるらしい
質問者はイテレータを共有している様子はないんだが だからぁ、何か実装が間違ってんだろ 例外出たとき中身確認したか?
MSDNにロックしろと書いてて、それをすればすべて解決するわけだが。 実装の間違いはロックしてないこと。
お前質問者じゃないのになぜ解決するって言い切れるんだよ。 マルチスレッド動作してるときのインデクサの添え字の方に問題があるかも知れんぞ。
ソースを読む限りロック云々ではない。 以上だ。
>>868 それこそロックして出るならそれだとはっきり切り分けできるじゃないか。
今はマルチスレッドが原因だと疑ってんだろ。そこをまず潰さないとな。
すべて解決するとか言い切った割に手仕舞いが早いでやんの。
IEnumeratorを手書きしたことがあれば、列挙が非スレッドセーフなんて寝言は出ないだろうに
それは本質的にいうとMSは手書きしてないということだな。
つまり本質的に考えるならあのソースコードは自動生成ということですね
IEnumeratorを手書きしたことがあれば、列挙はスレッドセーフなんて寝言は出ないだろうに
はいコピペ頂きました。
>>873 IEnumeratorを(無駄に)スレッドセーフにしないのは普通だと思うけど
GetEnumeratorが常に同じインスタンスを返す実装なのは、すでに書いてる人がいるが
ちょっと問題ありのような...
通じないとあれなので一応補足しておくけど、GetEnumeratorが同じインスタンスを
返すのでなければ、普通はIEnumeratorがスレッドセーフじゃなくても問題は起こらないわけで。
881 :
880 :2013/04/11(木) 22:55:24.61
補足 つまり列挙子の考え方そのものに起因する本質的な問題なので コレクション側の実装によって競合状態が起きないことを保証するのは無理だということ
GetEnumeratorにはこう書いてある >列挙子はコレクションへの排他アクセス権を持たないため、コレクションの列挙処理は、本質的にはスレッド セーフな処理ではありません。 >列挙子はコレクションへの排他アクセス権を持たないため つまりIEnumeratorがスレッドセーフかではなく、 列挙中のコレクション操作を防げないので列挙とコレクション操作が同時に発生するなら自分で何とかしてねという意味かと。
あ、更新しないで投稿してしまった
>1 人のうち 0 人が、 が役に立ったと評価しました こんなんで分かるかって評価してやったわ てか一人目なの?ホントに?
csc.exeのコマンドラインでSystem.Windows.Formsとかを参照に加えるにはどうしたら良い? 訳あってコマンドプロンプトでしか使えないのだ
/reference:"(System.Windows.Forms.dllのパス)"
>>886 csc /r:foo.dll /r:c:\womdpws\micro.....\v4.0\xxx.dll xxx.cs
windows formsのは標準で入ってるよ。
WPF関連は追加で入れないと行かんけど。
>>888 うぉおおお!thxです
さっそくやってみます
子フォームをShowDialog()している状態で 親フォームをクリックしたイベントってとれるんでしょうか?
892 :
891 :2013/04/12(金) 13:15:41.74
詳細を書いていませんでした。。実際は子フォーム以外をクリックしたら子フォームを閉じるようにしたいです。 LeaveやDeactivateではイベントが発生しませんでした・・
ツールチップのようなものならDeactivateで閉じるようにしたFormをShowだろうね 一応呼び出し元をOwner指定しとかないとタスクバーから親Form閉じられた時になんかに残るかも
GCの発生を抑止するにはどうしたらいいでしょうか?
オブジェクトを生成するな
プログラミングをするな
違いました。どうやらバックグラウンドGCというのにしたいのですが どうやればいいでしょうか?
ラージオブジェクトヒープをなるべく使うな
>>891 何言ってるのかよく分からないが、モーダルな動作がいやならShoowDialogじゃなくて
Showすればいいのの
DictionaryってRemoveしたら列挙順変わるんだな 今まであんまり意識せずに使ってた・・・
順番が重要ならList使え
普通は基本アルゴリズムから勉強したものだが、 既にライブラリがある場合は何も勉強せずに使う人がいるのか。
寝言はトイレットペーパーの芯にでも書いとけ
ゆとりきたー
メインスレッドに影響をあたえずGCする方法はないものか
まだ寝ぼけたこといってるんですね もうお昼ですよ?
そんなの無理ww
じゃあ妄想やめて自殺でもするんだな
少しずつnull入れていけばいいかな
そういう問題でもない
ぬるぬるぱーまん
そんなに頻繁に止まるのなら ラージオブジェクトヒープ使いすぎか世代2オブジェクト多すぎなんだろうし nullの効果があるとは思えないな そもそもなぜnullを入れるか分かってるのか
Disposeしてないとか?
アンマネージリソースがよほどメモリ食ってる(Bitmapクラスとか)なら効果あるだろうね そうでないならほとんど意味はない
Bitmapです。
windowsアプリケーションの基本的な仕組みを理解していないからそうなる
>>918 どのくらいのサイズのBitmapを同時に何枚使ってんの?
nullをいれないと1ギガくらいは余裕で超えます
ということは、GC発生第3の要因「物理メモリが圧迫されている」が原因ですね まず、nullを入れるとかいう<<<<<愚かな>>>>>対処ではなくちゃんとDisposeしてください それでも駄目なら物理メモリの消費量を減らすしかありません 構造を見直してください 無理? 死になさい
1GB・・・
>>921 nullを入れるってことは自前のキャッシュ機構でも書いているのか?
だったらWeakReferenceを使ってみろ。
用もなく元のサイズのBitmapを保持するな。サムネイルを使え。
用があっても本処理まで元のサイズのBitmapが必要ないなら本処理のときに読み込め。
元のサイズのBitmapを常に保持しておかなければいけない・・・
そんな状態ならGCはもう不可避だ。抵抗は無意味だ。
無理っぽいから.netの進化に期待することにしました。
諦めなければ活路はある かもしれない
C++使えばいいじゃん。
VisualStudioのアドイン作成の質問です 現在のcode viewのテキストを取得するにはどうすればよいのでしょうか? ProjectItemからファイル名を取得して・・・だと、一旦保存して確定した内容になりますので。 (妥協してそれでもよいのですが) よろしくお願いいたします
C#だけで作られたウェブブラウザはありませんか? GeckoFXを使ってHTMLを読み込んでから数秒後のJavaScriptが実行された状態の HTML(DOMツリー)を検索できる検索エンジンを作っているのですが、 1プロセスに1インスタンスしか作れないのでクローラーが遅くて使い物になってません。
WebBrowserコンポーネントじゃだめなの?
いっそプロセスを沢山作る発想で
NotifyIcon.Textを更新しながら常時表示することはできますか?
>>932 何年か前に作ったラーメンタイマーができてるからできるんじゃね?
Balloonの方か
>>929 ウェブブラウザは非常に多くの計算を行うので
C#だけで作ると非常に遅くて使い物にならないのでありません
昔はJava ME上で動くブラウザとかあったんだよ
相談室でもCOMがどうとか質問したろ 正しくはXPCOMだけど
FirefoxはChromeと違ってマルチプロセスじゃないじゃん 1プロセスに1インスタンスしか作れないにしても、複数のページはホストできるだろ でないとタブブラウザなんて成立しないがな
tar.Zで圧縮したいのですがChilkatというライブラリを 利用する以外方法が無いでしょうか?
compress呼び出せばいいだろ
tarも呼ばないとね
無いですか。残念。
Windows API で別windowsフォームの特定項目(たとえば、名前入力欄) にプログラムから文字を入力しようとしているのですが 何か参考になるサイトはありますか?
そっから探す能力がない人をそこに案内しても
その名前入力欄とやらがエディットコントロールなのかどうかとか 本当に「Windowsフォーム」なのかとかいろいろ疑問に思うことはあるけど めんどくさいからまぁいいか そういう自動化ツールっぽいのって 素人なりに邪悪な用途の場合もあるし
>>943 spy+で入力テキストボックス名を調べる
FindWindowExで探して
SendMessageStringで入力
Spy++の間違いだった
まだあった SendMessage、WM_SETTEXTで入力の間違い
WPFかもしれんしJavaかもしれんしQtかもしれんぞw
他プロセスにWM_SETTEXTでポインタ渡せるのん?
ポインタは渡せない(渡しても無意味) OSがデータの受け渡しを中継するだけ
953 :
デフォルトの名無しさん :2013/04/18(木) 22:41:46.67
>>947 Spy++で調べてみました。
ユーザ名を入力するウィンドウ
Handle: 00060C48
Class: Edit
>入力テキストボックス名
これは、Handle の事を差すのでしょうか?
最近はマルチポストが流行ってるらしい
マイクロ秒を取得するにはどうしたらいいでしょうか? Randomのシードにミリ秒を使っているのですが、Processを使ったマルチプロセス時に シードが被ることが多発しています。 Interlocked.Incrementを使ったマルチスレッドでの解決策はググって見つけたのですが マルチプロセス時の解決策が見つからないのでマイクロ秒ではどうかと思った次第です。
時刻にプロセスidも混ぜてシードにすれば
時刻のハッシュ値+プロセスIDでいいな
958 :
953 :2013/04/19(金) 12:04:34.61
基本認証の掛かったWEBページにアクセスする際に 起動する認証ダイアログにユーザ名、パスワードを入力し OKボタンを押そうと下記コードを記述しています。 ※まだ、ユーザ名等を入力する方法が分からないので ひとまず「OK」ボタンをWindows APIを使って押下しようとしています。 IntPtr h = FindWindow(null, "Windows セキュリティ"); if (h != IntPtr.Zero) { IntPtr h2 = FindWindowEx(h, IntPtr.Zero, "DirectUIHWND", ""); IntPtr h3 = FindWindowEx(h2, IntPtr.Zero, "Button", "OK"); ← ここで h3 の値が 0 になります。 PostMessage(h3, WM_LBUTTONDOWN, 0, 0); PostMessage(h3, WM_LBUTTONUP, 0, 0); } 一体なぜ h3 で値の取得をすることが出来ないのでしょうか?
単に間違ってんだろ 親h2にしてるけどそれ合ってんの?絶対にか?
とりあえず相談室で聞くのかこっちで聞くのかはっきりさせろ
あと
>>943 でWindowsフォームと言っていて
>>958 でWebページに変わっているのはなぜなのかを詳しく
961 :
953 :2013/04/19(金) 17:20:09.82
>>959 spy++ で確認したら OK ボタンの親コントロールは
DirectUIHWND でした。
>>960 Webページの間違いでした。
962 :
953 :2013/04/19(金) 17:37:24.41
IntPtr h2 = FindWindowEx(h, IntPtr.Zero, "DirectUIHWND", ""); IntPtr h3 = FindWindowEx(h2, IntPtr.Zero, "CtrlNotifySink", ""); ← Spy++ で確認したらありました。 IntPtr h4 = FindWindowEx(h3, IntPtr.Zero, "Button", "OK"); ← h4 が 0 になります。 PostMessage(h4, WM_LBUTTONDOWN, 0, 0); PostMessage(h4, WM_LBUTTONUP, 0, 0); どうも、CtrlNotifySinkのクラスが複数あることが原因の様なのですが どうすれば、OKボタンのハンドルを取得出来るのでしょうか? ■Microsoft Spy++- Windows 1 Window 00191048 "" DirectUIHWND Window 00421158 "" CtrlNotifySink Window 002E11F2 "OK" Button Window 001B12F4 "" CtrlNotifySink Window 00160DCE "キャンセル" Button
EnumChildWindowsでも使えば
964 :
953 :2013/04/19(金) 18:43:27.51
>>963 今回の様な状況で
EnumChildWindows を使う方法を解説したサイトをご存じでないですか?
あのね、ぐーぐるってあるのね。 ぐーぐるにね、かんれんしたことばをにゅうりょくしてね、 えんたーきーを おすとね、きっとたくさんおしえてくれるのね、
煽るな 枯死させろ
Windows API 難しいなぁ。。。
EnumChildWindowsの使い方なんて決まりきってるのに状況も糞もない
正直UI操作するよりProxyでやった方がはるかに楽
970 :
962 :2013/04/19(金) 19:08:10.34
DirectUIHWND の中に CtrlNotifySink が2つあるので FindWindowEx で走査対象は 0 では無く 1番目から といった指定をする事は出来ないのでしょうか? IntPtr h3 = FindWindowEx(h2, IntPtr.Zero, "CtrlNotifySink", "",{1番目});
MSDNにできると書いてないならできませんよ
まあ、できるならEnumChildWindowsでも使えなんて言わないけどね
ところがね、実はできると書いてあるんですよ 2番目の引数使えば
時間というものはこのようにして浪費されていくのだなあ
975 :
962 :2013/04/19(金) 19:49:30.68
>>969 Windows API を使って入力 > OK ボタンを押したいんです。
>>973 >973 名前:デフォルトの名無しさん[sage] 投稿日:2013/04/19(金) 19:15:42.49
>ところがね、実はできると書いてあるんですよ
>2番目の引数使えば
マジですか!?
マジですよ じゃあ頑張ってね
すみまっせん 962から976までの書き込みであなたのものじゃない奴は全部俺なんですよ つまり972も976も
ここまで全部俺の自演
何だこの流れ… spy++使えって教えたのは俺 しかしこの内容だったらまともにc#でweb認証していれば 認証ダイアログも出ないのになあ… win32 APIなんて使う必要なし 最初っからwebって書けよ
fireFoxやChrome使ってたら使えないか…
982
983
ほ
も
あ
うめ
ウメ
梅
うめ
産め
産む
うめ
ほらやるよ
ほい
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。