ふらっとC#,C♯,C#(初心者用) Part74
LINQいいよね〜
ほね」。
フィールドの変数名ってどうしている? 自動プロパティを使っちゃうと「private GetHellowWorld { get; }」みたいにダサい変数名になっちゃうじゃ
Hellow!
自動プロパティーを使うとダサくなるって、自分でつけてるんでしょ?
プロパティ名にGet〜ってつけたことないや・・・
なんでプロパティに動詞使っちゃうかな
getだけじゃコンパイル通らないし
うちではコンパイル通ったよ^p^
>>7 自動プロパティを使わないダサくない変数名の例も挙げてくれ
フィールドに変数は大文字 or 小文字で始めますか?
どうでもいい 割とマジに姓名判断でも受けて決めたらいい
イベントにハンドラを登録するときは自動でメソッド書いてくれるけど、 Timer ti = new Timer(callback); みたいに()にメソッド名書くときはなんもしてくれない。 コールバックのシグネチャいちいち調べるのめんどくさいから自動で書いてほしいんだけど なんか方法ある?
new TimerCallback(まで入力したらシグネチャを表示してくれる
それならF12で定義に飛んでコピペした方がよっぽど早いような....
何度も使えばDependencyPropertyChangedEventHandler(object sender, DependencyPropertyChangedEventArgs e)とかでも暗記するだろ
>>24 メタデータなんて見れるんだ。知らなかった
すみません。for文の中のインクリメントは、++iとi++の両方を見かけますが、 同じなのでしょうか? 前置きと後ろ置きだそうですが、評価されるタイミングが違うんですよね? for文だとどっちでも同じになるんですかね?
くそうるせー人に絡まれるので前置にした方が良いですよよよ
どっちでも一緒。 前置きの方が速いから式の値を使わないなら前置きにしろというのは迷信。今時それくらい最適化される。 VC#のコードスニペットが生成するのは後置きだから後置きでいい。
そんな迷信あったの知らんかったw 迷信にしても頭悪過ぎる迷信だな
鰯の頭も信心と言うだろ 信心はこえーぞ
34 :
デフォルトの名無しさん :2011/05/02(月) 14:53:51.72
インクリメントのところでラムダ式とか入れる強者が居たら・・・
褒められた書き方ではないが 下記のnumに入る数値は変わる。 int i = 1; int num = i++; int i = 1; int num = ++i;
評価のタイミングについては前置きしてたのね。
>>35 は無視してくれ
i = 0; array[i++] = x; array[i++] = y; array[i++] = z; こういうのはついC++の癖でやってしまう
>>35 いくらふらっとスレでもそのレベルの話をドヤ顔で書いちゃうってどうなのよ。
さすがに常識過ぎ
>>37 こういうの馬鹿正直にループ回しちゃうわ。
あれ迷信だったのかorz
C++だと違いあるんじゃないの?
一時オブジェクトがどーたらとかいう講釈はほとんどの場合は最適化で消えるってことであってます?
10億回くらいのループ内なら少し考える
45 :
デフォルトの名無しさん :2011/05/02(月) 16:57:16.04
以下のことがやりたいのですが,どの言語でやればいいかよくわかりません(というか選び方がわかりません).アドバイスお願いします. ・粒子(砂)の堆積についてのシュミレーション ・数は1万個程度.大きさは100μm程度 ・計算としてはルンゲクッタ法を用いる予定 ・剛体球モデルを用いる予定 よろしくお願いします.
べつにどの言語でも出来る というか言語どうこうの問題じゃない
FortranかC++でいいじゃん そういうのならどの言語で書いても手間は似たようなもんだから速いの選んどけ 言語なんかよりも、近くの粒子をリストアップしておいて計算回数を減らすなどの アルゴリズム上の工夫が超重要
配列として1万個以上の物体が入ればそれで用件は済む。 で、大きさは貴方の求める仕様なので貴方が物体と物体の距離を定義すればいい。 アルゴリズムのことはよくわからないが、 要するにその物体同士が当たり判定で当たったとしたときの挙動を求めることが結果につながると思う。 というわけでどの言語でも配列と当たり判定が実装できればなんでもいいが、 カラフルなビジュアルが必要であればC#も選択肢に入るかもね。 ってとこじゃね?
>>45 研究とかやってるんなら
CUDAC あたりでメイン処理書いといてC#とかXNAで描画とかどう
各粒子ごとに、自分自身からある程度の距離内にいる粒子のリストを持っといて そのリストにある粒子との衝突判定だけを行うようにすればO(N^2)がO(N)に近くなってかなり速くなる ときどきそのリストを更新する必要があるけど、それはO(N^2)かかってしまうので そこがネックになるようなら空間を分割するとか工夫する 小手先の最適化よりアルゴリズムだよ
51 :
デフォルトの名無しさん :2011/05/02(月) 21:28:52.05
45です. ご意見ありがとうございました.検討してみます. また何かあったらよろしくです.
>>32 C++で、ユーザー定義型の ++ の場合は前置きの方が速いのよ。
もちろん、整数の場合はコンパイラが最適化するからどっちでもいっしょ。
.netのnamespaceってどんなのがあるのか知りたいのですが、 見やすい一覧って無いのですか?
つ MSDN つ ヘルプ
msdn
たった4文字打つだけなのにかぶったぜ
>>53 Visual StudioでC#プロジェクト作って、Ctrl+.
58 :
デフォルトの名無しさん :2011/05/03(火) 00:13:46.36
>>57 それVSのバージョンいくつから?
VC#2008Expressじゃあ反応しないな
lockステートメントに入れるインスタンスは適当なのがなけりゃObjectクラスのをnewして入れとけ ってどこかで見たけど、そのメソッドを持ってるインスタンス自身を入れるのって問題ない? lock (this) { ... }
lockステートメントの解説から。 「インスタンスに対してパブリックにアクセスできる場合には、lock (this) が問題になります。」 これは、thisオブジェクトが外から見えてしまうので別の排他制御で使われるかもしれない から注意してね、という意味だと思う。 インスタンスメソッド間で排他制御に使ってると、外部じゃ分からなくて排他制御に使うかも しれないよ、と。
具体的には class hoge { ... void hogeCallback() { lock(this) { done = true; } } } で、 hoge obj = new hoge(); として lock(obj) { while(! obj.done) { Thread.Sleep(500); } } とか。(検証したわけじゃないが)
そもそもクリティカルセクションを作るためにlockを使う、っていうのが lockの本来の使い方じゃないような気もするんだけど、かといって代替手段がないのか。
>>63 どういうこと?MSDNにはクリティカルセクションをマークするためのものって書いてあるけど。
>>64 言葉の使い方が正確かどうか自信がないけど、lock(hoge)の機能は排他制御だよね。
つまり、複数のスレッドが同時にhogeにアクセスすることを防止したい場合に使う。
(hogeのためにlockが使われている)
単にクリティカルセクションを作りたいだけの場合、hogeは1ヶ所しかないlock(hoge)のためだけに
存在する(その行以外では使われない)わけで、要するに別にlock(hoge)はhogeをロックすることを
狙ってるわけじゃない。(むしろlockのためにhogeが使われている)
ごめんどうも上手く書けてる気がしない。
人に説明するのって難しいな....
lock キーワードは、指定のオブジェクトに対する相互排他ロックを取得し、ステートメントを実行し、 ロックを解放するステートメント ブロックをクリティカル セクションとしてマークします。
>同時にhogeにアクセスすることを防止したい これがちょっと認識が怪しいんじゃないかと思うな。 オブジェクト操作で捉えてしまうと、その思考だと複数のオブジェクトの同時変更 ではそれぞれ全部ロックする必要があることになるけど、これは面倒極まりない。 そんなことしなくても、代表を決めておいてそれを握っている奴だけが操作できる という取り決めで簡素化が可能。 そこで代表だったら単なる new Object() でいいじゃんという話になる。 つまりlockってのは単にオブジェクトを保護するためのモノじゃないよ、ということ。
visual studio 2010 expressで クラスのメソッド一覧って出せますか? 2008 expressだとソリューションエクスプローラー(?)で 見れた気がするんですが。
Monitor の静的メソッドで任意のオブジェクトをロックするより、 Monitor をインスタンス化するような実装の方がよかった気もするのよね。 なんか、意味のない object syncObj = new object(); して lock(syncObj) とかするより、 lock() の中身はMonitor 限定でよかったような。
意味のあるロックオブジェクトの場合もあるっしょが
でも、めったに行わない lock のために、全てのオブジェクトが同期インデックスを持ってるのって無駄だったりしないのかな。 Java の場合、JVM の命令としてmonitorender/monitorexitを実装してるけど、 .NET の場合、IL レベルじゃなくて、Monitor クラス使った構文糖衣なわけで、 特に全部のオブジェクトに同期インデックス持たせる理由もないような。 あと、Monitor.Enter が静的メソッドとして実装されてるがために結構問題も起こしてるみたいだし。
Javaはsynchronized(this)だらけだからでしょ。設計ミスだけど。 設計時にはまだlock(this)の問題が十分に認識されてなかったからとりあえずJavaと同じにしたんじゃないの [MethodImpl(MethodImplOptions.Synchronized)]でthisがロックされたりするし、 この属性はイベントアクセサに自動的に付けられてしまう。 C#4からはイベントアクセサにも上の属性は使われなくなってる。
そう、lock(obj) はどう考えてもJavaの影響なんだけど、 IL レベルで実装するのはやめたんだから、「もう1歩」あってもよかったかなと。
全てのオブジェクトを同期に使える言語が広く使われてる以上、 共通言語基盤としては仕様に入れないと仕方なかったんじゃないの 当初はJ#も戦略の中心にいたんだし
また設計ミス厨か
後知恵はいつも素晴らしいw
次の世代の言語に期待するしかねーな
次は何? C丼?
C鬱
地名でも偉人の名前でも頭字語でも何でもいいけど、C#だのC♭だの検索しにくい 投げやりな名前は止めてほしい。
swichってifと比べて遅いからなるべく使わないほうがいいって 100分岐以上でもifにしたほうがいい? swichを分割してifで二分岐して絞ったほうがいいのかな
80年代のBASICじゃあるまいし....
気にすんな
むしろはまれば速いんじゃ?
一般にswitchで書けるならswitchの方が速い
がんばって100個以上クラス定義してポリモーフィズムしようぜ
C7とかCmajorとかC1000takedaとか
switchは場合によってILになったとき専用のテーブルが作られることがあるから むしろifより最適化はされやすい(=常に速いということではない)
>>88 本当かよそれ。
まあifで2分探索で書くのが一番平均速度が早そうだけど、可読性の面では最低になりそうだ。
代替案でDictionaryにデリゲート突っ込んで…こっちも読みにくそうだな
いやswitchなら連続値の場合O(1)だ
switchって内部的にはif文に読み替えられるのかと思ってたが 違うんだな・・・
確かに値が散ってなければ機械語でいうジャンプテーブルみたいなものに最適化できるはずだよな。
>>94 .NETはILレベルでswitch命令持ってて、その先、JIT結果がどうなるかはたぶん実装依存だったと思うけど、
MSのCLRは、caseの数が少なかったりcaseが飛び飛びだとif相当のコードに展開、
連続なcaseだったらジャンプテーブルになる。
C#コンパイラやJITコンパイラが、これはifの方が速いだろうと判断すれば switchからif相当のコードを生成することは簡単にできるはずだけど 逆にifからswitchは難しいだろうから、もちろん実装によるけど本来ifの方が速くなる余地はないわな
<書籍情報> <書籍> <書籍名>名前1</書籍名> <書籍名>名前2</書籍名> </書籍> </書籍情報> を var quary = from item in xmlDoc.Descendants("書籍") select item.Element("書籍名"); ってやると一番最初の名前1しか読めないです どこがいけないんでしょ?
item.Element("書籍名"); 目が悪いんだな
一文字足りないな
あるあるwww
なるほど>< ありがとうございました
>.>99 ん?横レスですまんが、sが抜けてるということ?
ついでにSelectMany形式にしないと
書籍を使わないならxmlDoc.Descendants("書籍名") でいいじゃん
>>94 おれも。switchてelse ifの連続化と思ってた。
switchのほうが可読性がいいて誰か書いてたけど、{}とかbreakとかうざくね?
switchのほうが可読性がいい、とは書いてないな。 ifで2分探索で書くと可動性の面では最低になりそう、とは書いてある。
速度はswitchのほうが速いんだっけ?
少しくらい上のレス読もうぜ
while(true)
無限ループって怖くね?
怖い怖い。でも回数決められない処理って結構多い。
[WebMethod]/[NonSerialized]とか[STAThread]あたりしか属性を使ったことがないのですが、 属性は機能のON/OFFに使われている事が多い気がします。 属性は任意の対象にメタデータを付加するものだと思っていたのですが、実際のところどのように使われる事が多いのでしょうか?
>>113 他、ObsoleteとかAttributeUsageとか。
最近だと、DataAnnotationsとかWCFのDataContract/OperationContractとか。
コンパイラへの指示、VSへの指示か、
動的コード生成、動的データ検証とか。
メタデータを誰が使うのかっていう区別ぐらいしかないと思う ・実行エンジン→[DllImport][ThreadStatic] ・IDE→[DefaultValue][EditorBrowsable] ・特定のライブラリ→[OperationContract][TestClass] あと自作プロキシで使ったりする
任意の対象にメタデータを付加するもの、でいいと思う。 使われ方は悪用も含めてフリーダム。 なので、思いついた他の例をあげとこう。 ・実行時だと、NUnitなどでテストメソッドのマーク ・コンパイル時だと、APIや構造体などのマーシャリング指示 ・デザイン時だと、Browsable とかユーザーコントロールでのプロパティグリッド制御
グローバル属性なんてのもあるね。 バイナリに情報埋め込むあれ。 それでちょっと思い出したけど、常々疑問なんだけどCLSCompatible属性って何の意味があるのかね? 警告が鬱陶しいからクラスライブラリを作る時には盲目的にいつも付けてるがあれの必要性がわからん。
ASP.NET MVCのFilterAttributeなんかは機能のOn,Offというより機能の追加だね。 属性をそのまま使うんじゃなくて、属性を派生させて、その中に追加したい機能を実装して使う。 用途としてはvirtualメソッドと同じだけど、 クラスだけじゃなくて、メソッドやプロパティに関連する機能も追加できるし、 複数の機能を追加できるという点で 単なるvirtualメソッドより柔軟性が高い。
>>117 CLIには様々な機能があるけど、プログラム言語では全機能をサポートする必要はない・・・・が
最低限サポートしなきゃいけない機能が決まっていて、それがCLS。
つまり、CLSCompatible属性を付けて警告が出ないライブラリは
他のプログラミング言語からも利用可能なライブラリって事になる。
別の言語を使用しないなら、別に無視しても構わない。
120 :
113 :2011/05/04(水) 16:10:36.79
>>114-116 誰のために使うかが問題なのね
最初に属性を見たときは、コンパイラの為だけのものだと思っていたので全然わからんかった
thx
121 :
113 :2011/05/04(水) 16:25:23.18
var o = new object(); o.HellowWorld = "Hellow World"; こんな感じでobjectに任意のプロパティって追加できませんでしたっけ?
っ 拡張メソッド??
ダイナミ!ダイナミック!
124 :
121 :2011/05/04(水) 17:09:10.14
これってメソッドしか追加できないんですか?
IronPythonなどととの互換機能だからスマートには書きにくいな。 using System; using System.Collections.Generic; using System.Dynamic; class Program { static void AddProperty(ExpandoObject o, string k, object v) { ((IDictionary<string, object>) o).Add(k, v); } static void Main() { dynamic o = new ExpandoObject(); AddProperty(o, "HelloWorld", "Hellow World !"); AddProperty(o, "Name", "Hans Johnson"); AddProperty(o, "Age", 99); Console.WriteLine(o.HelloWorld); Console.WriteLine(o.Name); Console.WriteLine(o.Age); } }
ExpandoObjectってIDictionaryにキャストしないとメンバ追加できなかったっけ? ならいきなり代入したら勝手にメンバ追加してくれるDynamicObject自作すればいいじゃん
Disposeの実装ってスレッドセーフであるべき? ネット上にあるサンプルの中にはlockを使ってスレッドセーフにしてあるのもあるけど、 これの必要性っていかほど? 複数のスレッドから同時にDisposeを呼び出すシチュエーションがいまいち想像できないんだけど。
必要であればそうすべきなだけで、全部が全部スレッドセーフに実装する必要はないのでは 言い方を変えれば、全てのクラスがIDisposableを実装してるわけではないだろう? 必要ないからだ
>>128 あんまり一般的なシナリオでもないけど、
並列に処理を始めて、最初に帰ってきた1つの値だけを採用したい
最初の1つが終われば残りは止めていい、
止めるのにDisposeを使う
とか?
ありえないと思うけど時限式のキャッシュを作ってる時とか? 俺の頭だとその辺の想像が限界だなあ
明示的呼び出しによるDisposeの実行中にファイナライザによるDispose呼び出しが行われることはあるかも 明示的なDisposeの最後にGC.SuppressFinalize(this)を入れとけばたぶんおk
133 :
132 :2011/05/05(木) 09:50:05.75
KeepAliveか 訂正
プロセス制御のシステムで仕方なく・・・ プロセスからの標準出力読み込みやプロセス終了など非同期イベントと、 ファイルハンドルなどリソース解放の関係でDisposeにロック付けた。 正直うまくない手だったと思う。エレガントな方法思いつかなかった。
すみませんが、VS2010EEでパーシャルクラスの追加の仕方を教えてください。 Form1.cs(既に自動作成されたForm1のパーシャルクラス)が大きくなりそうなので、 もう一つ分けて書こうと思うのですが、 普通にクラスの追加でForm1.csとすると同名のファイルが競合するとでます。 別名で作って、Partialに変え、リファクタで名前変更かと思いきや、それも駄目でした。 どういう手順で追加すればいいのでしょうか?
リファクタリングじゃなくてエディタで直接クラス名をForm1に書き換えればいいよ
それでファイル同士の関連付けは出来るのですか? ちょっと試してみます。ありがとうございました。
あのー・・・追加したクラスから、Form1のコントロール類に繋がらないのですが。
追加したファイルをデザイナで開いて、空のフォームが表示されるなら成功 コードからはフォームのコントロールにアクセスできるはず ただし.designer.csを認識しないので、デザインを弄る場合はもともとのファイルを編集する必要がある デザイナで開けない場合は既存のフォームと名前空間かクラス名が違うんだと思う
空のフォームは開きましたが、コードでコントロールにあくせすできません。 何か足りないのかな?パーシャルクラスって、Form1.csの2ページ目みたいな漢字化と思ってたんだけど、 ちがうのかな?
テレパス召喚
言語やコンパイラが対応しているというのと、 Visual StudioなどのIDEがサポートしているかどうかは別の話だな。 .csprojファイルを無理やりいじってみたけどIDEの動作はやっぱ変だった。
そうなんだ・・・じゃあ、この状態で正しいプログラムが書ければ、 コンパイルは通るかもしれない、ってことなのかな。 でもまだIDEがないと書けない初心者だから・・・ VSの正しい手順でパーシャルクラスの追加って何処かに出てないですかね?
タイムスリップ設定を被せてきてる時点でそんな意識はないだろ
oh..誤爆
Form1.cs コードの表示→全部選択→コピー 追加→新しい項目→クラス Class1.cs コードの表示→全部選択→削除→貼り付け public partial class Form1:Form の中身を削除 ビルド こっちの環境は2005だけどたぶん2010でもうまくいくと思うよ
追加したパーシャルクラスを書いたコードをフォームエディタで開かないようにすればおkだろ namespace WindowsFormsApplication1 { public partial class Form1 { private void Hage() { //... ふつうにForm1のフィールドにアクセスできる } } } つーかデフォルトのエディタをコードエディタにしろよな
あ、できました!ありがとうございます!! あーーー、そういうことかーーーー! いや、完全に勘違い。言われてみればそうだわ。
鯖プログラムを作ってみたい。 ブラウザでなく専用アプリをインストールした2台以上のPC間で 各PCからの入力状況を読み込んで鯖で処理してクライアントにリアルタイムで表示を返す。 こういうのってWPFとかsilverlightを使うことになるの? とっつきの方向を教えてください。 数台ならP2Pになるんでしょうか? P2Pなら鯖プログラムなしで各クライアントが処理しなきゃならんのですよね。 っていうかプログラムしなくてもネット接続されたPCのIPアドレスとかから 各PCの特定ポートに常時データをPUSH出来るんだっけ?
適当に知ってる用語を並べてる感じ
普通にソケット通信使えば? 融通効くし 結局何がやりたいかによる気がする。
ゲームにきまってんだろ
>P2Pなら鯖プログラムなしで 考えようによるがソケットつなぐ時鯖は必ず存在しているわけで・・・ これ以上は突っ込まない方がいいのかな?
用語の認識が適当だからー 突っ込んでも通じないよー
やっぱ鯖は味噌煮に限る
キーを押し続けるとキーリピートしますが、 この機能をC#でON/OFFする方法を教えてください。
C#を使わずにDirectINPUTでするしかない
KeyUpで我慢しなさい
bool isPressing = false; //KeyDownのハンドラ { if (!isPressing) { [ 初回押下時の処理 ]; isPressing = true; } } //KeyUpのハンドラ { isPressing = false; }
>>160 おお!素晴らしい!上手くいきました。ありがとうございます!
2chてさ、適当な事書いとけば 真っ赤な顔して正しいことを調べ廻ってくれる親切な人が居るから スゲー 便利www
そういうことしてるから、周りの要求レベルが上がって対応できなくて自爆しちゃうんだよ。
周りの要求レベルが上がって・・・
おさわり禁止
>>162 酷い負け惜しみだなwww
>>160 の発想は素晴らしいと思うよ。
”キーリピート”でググっても、「無理」とか「間隔を最大に伸ばす」
みたいなのしか出てこないけど、多分皆、リピートを止めることしか考えてなかったんだな。
恥ずかしながら自分もそうだったんだけど。
でも180度逆から、リピートは止めずにハンドラを回避するアプローチはお見事。
在りそうで思いつかなかった。しかもフラグ1本で簡単。勉強になった!
普通の人はKeyUp使うから・・・^^;
初心者スレでは、質問にまじめに答えるのではなく 質問者の意図と技量を読む能力が試されるよね もしかしたらテキストボックスのキーリピートを止めたかったのかもしれない
それは俗にエスパーすると言います
C#でキーリピートっていったらテキストボックスに決まってんだろ
asp.net webサービスを使ってログイン処理を作ろうとしています。 postされたユーザ情報がdbに存在しなかった場合、クライアントに何を送り返すのがベストなのでしょうか?
ユーザー名またはパスワードが間違っているか存在しません。 でいいじゃね? そういうセキュリティの話を2chで振るのは微妙な気がするけどね。
ここで聞く前にYahooとかGoogleあたりで試してみればいいのに
public interface IInterface { public string value; } public class ClassImpl : IInterface {} var c = new ClassImple(); c.value = "hellow"; valueに何故値を代入できない?
インターフェイスにフィールドはないよ そもそもコンパイルできないっしょ
ネットに繋がってたら試せるだろ。 どうやって2chに書き込んでるんだw
試してるは
181 :
173 :2011/05/07(土) 20:39:28.75
>>179 >>178 は俺じゃないから怒るなって
>>175 >ここで聞く前にYahooとかGoogleあたりで試してみればいいのに
Webサービス <----- XML -------> Flashっていう感じのを作りたいの
googleやyahooがとかっていうのも大切だと思うんだけど、俺は業務で使いたいと考えている
だから、業務アプリとして作るならばって観点で教えてください
>>179 余計なサイトには接続できないようになってる
2chは余計なサイト扱いされてないのか どっか抜けてるなその会社
184 :
176 :2011/05/07(土) 20:46:50.97
お前らってjavaとC#のどちらが簡単だと思う? 俺はjavaだなー 楽だもん
覚えることが少ないのはJavaだけど使うのはC#の方が簡単 Javaのジェネリクスとか泥沼
なんでこのスレにいるんだよw
how(どう書くか)ベースだと Java の方が覚えること少ないけど、 what(何を書きたいか)ベースだと C# の方が簡単だからなぁ。
使いやすい方使えばいいだろそんなもん
イベントリスナとか画面殴りたくなる
C# = Java - Javaの欠点 + VBの利点 + ラムダ式 + dynamicだと思ってる あとIDEが有料なだけあって無茶苦茶使いやすい
IDEが優秀すぎる
193 :
デフォルトの名無しさん :2011/05/07(土) 22:36:05.28
これがIDEの意志だと言うのか。
javaはクラスライブラリがダメダメな所が許せないなー でも、C#は外部のライブラリが少ない気がするし
よそ様のことをとやかく言うもんじゃないけど、Javaは船頭が多すぎた。 その点、C#はヘジたん萌えということで。
Monoさん・・・
Javaってデザパタ使いまくるんでしょ? あんなクラス関係が複雑になる手法よく使えるな。
J++を訴えられたから作った言語がC#です 兄弟の悪口はやめようや
J++にはLINQあったの?
デリゲートはあったから、あのまま訴えられずに正当進化してたらLINQも入ったんじゃないかな。
J#なんて無かったことにしたいのか
202 :
デフォルトの名無しさん :2011/05/07(土) 23:44:14.98
>>190 だな、C#のイベントとデリゲート見たとき目から鱗落ちたよ
Javaのプリミティブ型ってのが大っ嫌いなんだけど、J#ではどういう扱いだったんだ? int≠Integer=Int32なのか?
君には関係の無い事だ。
モショエショエ
C#なら2秒で済む計算をJavaでやろうとすると2年かかるって聞いたな
ソース出せや
↑Java厨
Javaってなんで、uintとかないの?
そしたらまたボックス化するものが増えるだろ?
むしろuintが必用な場面ってそんなにあるのかと。 論理シフトが使いたいような場面? 無きゃ無いでなんとかなるな
javaの文法はとても素晴らしいと思うんだ c#の文法はだんだんc++化している気がして
継ぎ足し感は確かにあるが言語が進化していった結果なわけで・・・というとC++と同じになってしまうか しかし逆にJavaはそれが無さすぎる
214 :
デフォルトの名無しさん :2011/05/08(日) 02:32:41.20
ラムダ式とダイナミックは確かに便利で手放せない物だが アレを言語仕様に入れて本当に良かったのかな? ラムダ式は素人お断り感があり、ダイナミックはバクの温床になりそうな予感
Javaは基本的な部分でもダメだからなぁ 文法もはっきり言うと糞
ラムダはともかくLL言語全盛期の世の中でdynamicはバグの温床になるとか鼻で笑われるレベル 俺もなると思うよ
217 :
デフォルトの名無しさん :2011/05/08(日) 04:03:41.30
List<T>の中に<byte>0x10があったら、DTE記号と区別するためにダブルDTEとしてあげたい。{0x10,0x10} \があったら\\に置換したい。(なら@使えって言われそうだが) ラムダ式で書くとどんな感じになるの?
ちゃんと質問するのもなかなか難しいもんだなぁと思った
エスパー試験会場
public static IEnumerable<char> DoubleWhen(this IEnumerable<char> source, Func<char, bool> cond) { foreach(var c in source) if(cond(c)) { yield return c; } yield return c; } で、利用側は var doubled = source.DoubleWhen(c => c == '\\'); とか。
Console.ReadLine()とかやると入力を待ってくれたりしますよね あれって中はどうなってるんでしょうか、ループ的なものが回ってるんでしょうか
ラムダ式が取り込まれたのは必然とすら思える。もう手放せない。 dynamicを使うとInteliSenceが効かなくなる(開発効率が大きく落ちる)ため、自然に乱用が抑制される。 事実、.NET4のOSSのソースを読めばdynamicが殆ど使われていないのが理解できるだろう。 dynamicの利用に適した分野(DLR言語との相互運用、一部のリフレクションの簡素化)では従来より効率的に開発できる。
いや、みんなそれくらいは分かってると思うよ 誰が普通のなんでもないコードでdynamic使うんだよw
本物はvarの代わりにdynamic使う
>>221 OSのイベント待ってるんじゃないかな。
OS機能でI/O待ちポートってのがある。
>>224 本物の○がいww
VBerはdynamic好きだと思いますよ OptionStrict Offの動作に似てるから せっかくOptionStrict Onが普及したのにDynamic使うにはOffにしなきゃならんってアホか
はい?
VBerはdynamic好きだと思いますよ OptionStrict Offの動作に似てるから せっかくOptionStrict Onが普及したのにDynamic使うにはOffにしなきゃならんってアホか
スレタイも読めんってアホか
え?
suretai?
VBerはdynamic好きだと思いますよ OptionStrict Offの動作に似てるから せっかくOptionStrict Onが普及したのにDynamic使うにはOffにしなきゃならんってアホか
スレ違いだが熟練VBerは真っ先にOption Strict Onにすると思う
>>181 WebProg板向けっぽいけど素直にLoginFailedだけ返せばいいんじゃない?
下手にUserNotFoundとか返してしまうと総当たりでリクエストされて
登録済みユーザ名を割り出されてしまったりするかもしれないし。
サービスのクライアント側で「ログインに失敗しました。未登録の場合は新規登録してください。」ってやってもらえばいいと思う。
>>234 するけど、それはその方が安全だからというより政治的理由。
現実には熟練者にとってはStrict Offの弊害はまずない。(初心者にはある)
俺はプロじゃないから知らないけど 習得が容易なことがメリットの言語にそんな熟練者が要るのか
Silverlightのdynamic使ったHTMLブリッジなんか超便利だぞ まるでインラインでJavaScriptを書いてるみたいにHTMLを操れる
VB熟練者は不要だけど、CLR熟練者がいないとVB案件は泥沼になりがち
VBってExcel操作とかやりたかったらそこだけPartialとか使ってファイル分けて Option Sttict Offにすんの? そうなら欠陥すぎるだろ
VBで泥沼になったことはないな。VBAなら余裕であるけどw
頭数揃えるためのVBとPHP
プログラム中でmp3を再生したいのですが、再生の他に以下のことも出来る必要があります。 ・音量調整 ・任意の位置から再生 ・現在の再生位置取得 これらをやりたい場合、何を使用するのが適当でしょうか?
AxWMP MCI WPF Silverlight DirectX Audio
ググレカス
DirectShow あたりをお勉強すればいいんじゃね。
DirectXってGraphics以外は全部非推奨廃止予定だよ
>>247 いつどこで誰が何故どういう手段でそんなコト言ってるの?
DirectShowはPlatformSDKに移されたから関係ねーです
じゃあどうしろってんだよ!
252 :
デフォルトの名無しさん :2011/05/08(日) 16:31:44.73
253 :
デフォルトの名無しさん :2011/05/08(日) 19:07:19.20
visual C# のエディタに関する質問です。 コードを書く際、通常であれば 「 I 」みたいなマークでコードに文字を挿入できると思うのですが、 いつのまにか 「 長方形 」のような形のマークに変化していました。 ちょうど、ターミナル(Console)でよくみるようなやつです。 この状態で書きこむと、もともとあったコードに挿入できず、 どんどん上書きされていってしまうので、かなり不便です。 環境設定などを見てみたり、ググったりしてみたのですが、戻し方が分からないため 質問いたしました。よろしくお願いします。
挿入モードって分かるかい 古今東西のエディタの基本機能だが
パソコン買ったばかりの人でもプログラミングできる時代になったんだな
キーボードのinsertボタン押したんじゃね? もう一回押せばモード変わると思う。
257 :
デフォルトの名無しさん :2011/05/08(日) 19:16:04.97
>>256 ありがとうございます。解決しましたw
>>254 , 255
あまりにも初歩的な質問をして申し訳ありませんでした。
お恥ずかしい限りですw
いつも、asp.netに質問している者です asp.net <------> クライアント(flash) クライアントではsession変数の中身を見ることができるのでしょうか? ログインしていないユーザを弾くために、session変数に値を入れたいんです 後は将来的に他のデータを入れたり etc etc
>>257 え、釣りじゃなかったのか。道は厳しそうだががんばって
>>258 出来ない
セッション変数つーのはあくまでサーバー側のサービスに保持されてる値
セッションにユーザー情報入れるのは常とう手段だが、認証弾くのはあくまでサーバー
「他のデータ」もWebサービスのレスポンス内に入れるべき
261 :
258 :2011/05/08(日) 20:04:56.19
>>260 わかりました
session変数はとても楽なので、それを使ってflashと連携できたら良かったのですが
ありがとうございました
Form1にtextBox1を貼り付けました。
お疲れ様
失礼します。 cucursol.positionでポインタ座標を変更したときにMousemoveイベントが発生してしまいます。 ユーザーがマウスを動かした時は発生し、カーソル座標をプログラムから変更した場合は発生しないというイベントを作るにはどのようにすればよろしいでしょうか?
1.フラグ使う 2.プログラムから変更する直前にイベントハンドラ削除して 変更後に再設定する 3.ほかの人がもっとスマートな方法を思いつくのを待つ のどれか。3がお勧め
コードでマウスポインタの座標を弄るなどという不気味なことはしないのが正解。 真面目な話。
269 :
265 :2011/05/09(月) 22:46:42.50
皆さんありがとうございます。 全ての方法を試させていただきましたが厳しいかんじですね・・・ あるいは私の考え方自体間違っているのかもしれません。 作っているのはカスタムコントロールでAdobe製品のような 「コントロール上で左右にドラッグすると数値が変わる」 というものです。 MouseMove内で前回のマウス位置と比較して数値をアップダウン、その後マウスポインタの位置を戻す という動作にしているのですがこの位置を戻す動作でもMouseMoveが発生し ポインタが荒ぶってしまいます。 何かいい方法はあるのでしょうか
マウスポインタの位置を戻す必用がどこにあるのか意味不明だと思う。 そんなコントロールみたことない。
271 :
デフォルトの名無しさん :2011/05/09(月) 22:49:49.58
ドラッグってマウスの動作を分解すると 1 左ボタン押す 2 マウス移動 3 左ボタン離す だろ? コードを書くイベントを間違ってると思うぞ
272 :
デフォルトの名無しさん :2011/05/09(月) 22:51:11.33
>>270 やりたいことの意味はわからなくもない
作業する場所は元のところなのにジェスチャーぽい動作で
ポイントを移動したらまた戻す動作が必要だからねえ
でもMoveで処理しなくてもいいと思うけどw
>>272 そんな有難迷惑な機能実装されたら、ユーザーはジェスチャーするごとに
マウスを持ち上げて位置を修正しなきゃならなくなる。
ちょっと考えが浅いと思うよ。
274 :
デフォルトの名無しさん :2011/05/09(月) 23:00:44.15
>>273 特定のコントロール依存ぽいしいいんでないの?
システム全体でそんな挙動されると困るけどw
Picasaのスクロールバーみたいにすればいいんじゃないの。 マウスポインタをいじる必要はない。
277 :
265 :2011/05/09(月) 23:26:22.11
皆さんありがとうございます。 確かに私自身も使いにくいと思っています。ですのでONOFFできるようにしてあります。それと勉強が目的・・・ということでお願いします。 どのイベントで、ということですがドラッグの中で一番長い動作はやはりポインタの移動ですし移動で数値が変わりますので常に移動を補足する必要がある・・・ということでMove内で処理 しております。クリック判定もMove内で行っております。 とりあえずの結論としましてはドラッグ中はマウスポインタを非表示にし、マウスが離されたときに座標を変更するということにしました。 ありがとうございました
へ? MouseDown → 位置判定、該当位置ならフラグ1立てる MouseMove → フラグ1立ってるなら値変更、スライダー移動。フラグ2が立ってるなら何もしない MoseUp → フラグ1おろす。フラグ2立てる。マウスの座標変更。フラグ2おろす。 でいけるじゃん
フラグ2いらなくね?
C# 3.5 で質問です。 現在DataTableに取得してきたSqlServerのデータにフィルタをかけたいと思っていますが うまく実現できません。 Table定義 Col1 Date(SqlServerの型) Col2 Time(0)(SqlServerの型) Col3 String(SqlServerの型) Col1は取得時にWHERE句で必要外のデータをはじきとばしているので必要ありませんが一応記述しています、 問題はCol2のTime(0)です。 .netではTimeSpanになると思いますが、DataTable.Select("Col2 = ???") 上記の???の部分に何を入れればよいのかが判りません。 判らないのでひとまず暗黙変換でも行けるかな?と思い Col2='09:00:00'のようにしても System.TimeSpan および System.String で '=' 操作を実行できません。 と怒られてしまいます。 2.0で作っている人も使う可能性があるので可能であればSelectを使用する方法と Linqを使う方法をお教えいただければと思います。 最悪DBへ時刻毎に取得しに行けばいいのでしょうが15分ごとの1日分の問い合わせになる為、回数を減らす為に子のようにしたいと思っています。 よろしくお願いいたします。
フィルタ式じゃTimeSpan同士の比較演算は定義されてないみたいだからほぼ無理 秒単位まで完全に一致してるかどうかならStringにCONVERTすればできないでもないけど まあ普通にループ回してDataRowごとにチェックしていけばいいんじゃね SELECTするときにdatetimeに変換してしまう方が楽かもしれんね
>>281 情報ありがとうございます。
素直にDB設計を見直した方がいいかもしれませんね
ちょっとTime使うのは早かったか・・・・
ありがとうございました。
早いという問題じゃないように思うが
>>280-281 俺も
convert(col2,'System.String')='09:00:00'
で行けると思ったんだが、どうもうまく動かないようだ
convert後の文字列が素直に09:00:00のような形式ではないみたい
ということで
>SELECTするときにdatetimeに変換してしまう方が楽かもしれんね
この意見に賛同
ちなみに2.0でSQLServerのTime型とかサポートしてないんじゃね?
>>277 そういうのはReactive Extensionsを使うとすっきり書けるんだけどね。
System.Diagnostics.Process.Start() つーのはbatファイルから実行できないの? たとえばnotepad.bat っていうのにnotepadとだけ書いてて、 それをダブルクリックしたらメモ張がでてくるよね でもProcess.Start("d:\notepad.bat"); ってやっても、黒いコマンドプロンプトが一瞬出てきて、メモ張は出てこないで終わり。 直接Process.Start("notepad")ってやればいいとかじゃなく、 今はどうしても理由あってbatファイルから実行したいんだけど 普通にnotepad.batをダブルクリックしたのと同じように動作させるにはどうしたらいい?
> Process.Start("d:\notepad.bat"); 普通にこれで十分 なのでどっかでバカやってるんだろう 実は例外出てたけど握りつぶしてたとか
Process.Start(@"d:\notepad.bat"); でいけたぞ。
普通に動くじゃんって思ったらこういうことか?
"d:\\notepad.bat"または@"d:\notepad.bat"
>>285 Rx使いこなす初心者とかこわい
イベントをIObservableに変換できますとか訳分かんない。こわい
既存のクラスに機能を追加したいとき、 ・継承する ・そのクラスをフィールドに持つクラスを作る といった方法があるようだけど、下の方法は継承するのと比べてどういう利点があるの?
下はカプセル化したい時使うかな
継承よりコンポジションを選ぶ でググれば俺より優秀な誰かが解説してくれてると思う
スレッドAからはEnqueueだけ、スレッドBからはDequeueだけを行うようなキューを用意する場合 (1) Queue<T>を生のまま使う (2) Queue<T>を、操作するときにはlockするようにして使う (3) ConcurrentQueue<T>を使う のどれが相応しいですか? 以外と(1)でどうにかなったりしますか? 場合によるっていう場合は、「こんなケースならこれ使う」ってので結構です。
常に3でいいだろ
うん、3でいい。
4.0なら3 2.0〜3.5なら2 じゃないかな?
>>296-298 .NET 4なので最初(3)で考えていたのですが、しばらくして
「ConcurrentQueueを使うのはもしかして大袈裟なのではないか?」
という妙な感覚にとらわれ、不安になっていたところでした。
ありがとうございます。(3)で行こうと思います。
(3)はWindows98で動かないよ
98って何ですか?
神OS
>〜〜を使うのはもしかして大袈裟なのではないか? C#とか最近の言語使ってるとよくこの心境になるよね
C#を使うのはもしかして大袈裟なのではないか?
しっくりこないんです
かーもね
ハイッ!
308 :
291 :2011/05/11(水) 20:22:46.55
ありがとう勉強になった
Process で cmd を使ってあるソフトを動かしてるのですが、実行時にこのソフトが本来コマンドプロンプトに表示するメッセージが StandardOutput で受け取れないです ちなみに、「Microsoft Windows [Version ***]」と「Copyright (c) 2009 Microsoft ***」の2行と、実行したコマンドは受け取れてます 受け取る方法は無いでしょうか?
311 :
デフォルトの名無しさん :2011/05/11(水) 23:33:35.76
DateTime型同士の+の演算で「+」の演算はできないと 怒られてしまいました。 (マイナスならできるのに) なにかいい手立てはありますか? ts = DateTime.Now - ATime + BTime
DateTime に加算する機能なかったっけ?
時刻+時刻は無意味 時刻+時間は時刻 で、.NETで時間を表す型といえば?
↑キモイな
timespanがどーたらこーたらだったような。普通に加算のあるでしょ
316 :
311 :2011/05/12(木) 00:08:28.45
手元の本によるとdatetimeにadddaysとaddhoursメソッドがあるからそれだ
いや普通にTimeSpanを+で足せるけど
たしかに時刻同士の足し算って答えがわからんもんな
いい加減スレ違い
このド低能がっ!
俺は高脳だけどな
じゃ俺金玉
325 :
デフォルトの名無しさん :2011/05/12(木) 01:01:01.84
>>317 サンクス勉強になる。しかし理解が追いつかない。
パラメータや戻り値が利用可能なデリゲートを使ったBeginInvokeなマルチスレッドと比較して
System.Threading.Tasks.Task<TResult> の型を使用して Result プロパティから値を返す方法のデメリット
ってなにかありますか?。
foreach中に他のスレッドなどでそのコレクションを追加・削除したらどうなるのっと
>>325 デメリットないよ。
しいて言うなら、40バイトくらいだったかな、余計にメモリ食う。
.NET 4以降は全部Task使えばいいと思う。
>>326 InvalidOperationException
オブジェクトが融合する
LINQなら絶対にバクが出ない
バク
マレーバク
夢おいしいです
LINQ to Dream はじまった
台湾MSがやりそうな企画だな
>>335 使い方はこうですか
if (this.myDream.All(dream => dream.IsDead)) {
this.die();
}
BinaryFormatter使え
バイナリも考えたんだけどエディタで英数字は表示されちゃうんだよね テキストをchar++で一文字ずらしたりした方が簡単かなって思ったんだ
341 :
デフォルトの名無しさん :2011/05/13(金) 13:59:01.86
シリアライズで出力するテキストをメモリストリームにいったん書き出して その上で暗号化してファイル出力 読み込むときはその逆でいいんじゃね? まあ.netだとあっさりばれそうだけどw
deflatestreamに書き込めば冗長な部分もある程度排されて最高
xs.Serialize(new DeflateStream(s, CompressionMode.Compress), obj); xs.Deserialize(new DeflateStream(s, CompressionMode.Decompress)); こうか。
344 :
338 :2011/05/13(金) 14:14:28.02
ありがとうみんな。ちょっと試してみる
345 :
デフォルトの名無しさん :2011/05/14(土) 00:41:25.12
BindingListにSort()がないのは、バインドしてる側、例えばdataGridViewとかで、 Sortしろ、ってことなんですかね? DataGridViewってよくわからん。
既定ではサポートしないからできるようにしたいならApplySortCoreその他実装しろってこと
347 :
デフォルトの名無しさん :2011/05/14(土) 07:20:15.21
何のためのオープンソースだ 自分で読み込み時にエンコーディング指定できるように直せ
> 海外の人が作ったものなので日本語に対応していないとは思うのですが 違う。仕様に忠実に作ってるだけ。
タグ(Frame)のTextEncodingが0のとき、 仕様ではISO8859-1で入っていることになってるんだけど、 日本ではShift-JISで入れたりしてるんだよね それをISO8859-1で読むから文字化けする IdSharpの使い方調べてないけど、TextEncodingが0だったら そのタグの生データをShift-JISとして扱えばいいんじゃない?
351 :
デフォルトの名無しさん :2011/05/14(土) 08:50:16.71
352 :
デフォルトの名無しさん :2011/05/14(土) 09:13:51.40
>>348 ダウンロードした中にソースがなかったもんで…。利用側のソースはあったのですが…
353 :
デフォルトの名無しさん :2011/05/14(土) 09:16:10.38
C#(.NET?)のバージョンって、今は4が最新ですか? 言語のバージョンがいまいち何を指してるかわかりませんが。
どっとねっとふれーむわーく4たいおう
358 :
デフォルトの名無しさん :2011/05/14(土) 23:02:54.37
VisualStuidoのデータセットデザイナ画面で、あるテーブルアダプタに検索クエリを追加したのですが、 WHERE句が常に使われてしまいます。 名前が入力されている場合だけ条件に名前を加えて、 性別が選択されている場合だけ性別を条件に加える と言うようなことをしたいのですが、どのように設定すればよいでしょうか? TableAdapter.Adapter.SelectCommandをプログラムで変更しようとしたのですが、 一度TableAdapter.FillやGetDataを実行しないとSelectCommandがnullのようでした また、OleDbCommandを自分で生成してTableAdapter.Adapter.SelectCommandに設定しても、適用されませんでした 今は、一度GetDataを実行してSelectCommandを生成し、そのSelectCommandをプログラムで変更する と言う回りくどいやり方をしています うまいやり方があれば教えてくださいm(__)m
性別を何で管理してるか知らないけど、名前は NAME = 'name' OR NAME = '' で事足りるな
Tasks.TaskでBackgroundWorkerと同等のものを作ろうとすると ProgressChangedは進行状況を通知するたびに TaskSchedulerを使用して別Taskを作成して、そのなかで通知って形になるのでしょうか?
Control.BeginInvokeを使って、投げっぱなしにすればいいんじゃない
XML を取り扱ってるんだけど、たとえば以下の内容の XML があるとする <category> <item property='Setting1' value='true'> <item property='Setting2' value='false'> <item property='Setting3' value='false'> <item property='Setting4' value='true'> <item property='Setting5' value='false'> </category> これを読み込んで checkedListBox に適用してるんだけど、 読み込んだ checkedListBox 上でチェック状態を操作したときに XML 側にもリアルタイムに反映させる良い方法無いですか?
WinFormのCheckedListBoxならバインディングもできないから 普通にCheckedChangedで XMLってメモリ上のDOMだよな? ファイルを都度書き換えるとか言わないよな?
>>359 TableAdapterは基本的にコードでクエリを変更するようなものじゃない
あらかじめクエリを作って追加しとけ
>>360 データベースにはNULLって概念があってな
正しくNULLをとりあつかうDBだとそれじゃまずいんだが
>>360 性別は数値ですが、ちょっと良く分からなかったです
その条件だと意図しないレコードも抽出されてしまう気がしますが、理解不足かもしれません
>>365 あらかじめクエリを作っておく場合、名前と性別だけの簡単な検索フォームでも4種類のクエリを作らないといけないのでしょうか
このような検索フォームを作る時、みなさんどんなやり方で作ってますか?
デザイナが作成する型付きデータセットはあまり使われないのでしょうか
あ、あと検索フォームに名前が入力されていない場合、 名前が登録されていないレコードを抽出するのではなく、名前の条件は指定せずに検索します 名前入力あり: select * from member where name = PARAMETER 名前入力なし: select * from member
where (@name is null or name = @name) and (@sex is null or SEX = @sex) 常套手段
>>366 一つのクエリでやるなら
>>368 でOKなんだが
それをやりたくないって話じゃなかったのか
俺なら動的SQL作るようなのは直接OleDbDataAdapterかOleDbCommandで実行する
型付きデータセットは使うかもしれんがTableAdapterは使わん
DBいじらん人には3値論理とか知らないもんなのかね
371 :
デフォルトの名無しさん :2011/05/15(日) 22:35:50.86
Textbox のキーイベントで、 Control + Backspace が押されたときに、 テキストボックスを全消去するメソッドを作成しました。 それ自体はうまく動いているのですが、 「Control + backspace」という組み合わせを押した際に、 テキストボックス上に変な文字が一文字追加されます。 webブラウザに貼りつけてみたところ、文字化けしていました。 連続して Control + backspace を押しても、 一つしか表示されないため、おそらく全消去後に追加された文字だと思います。 どのようにして、これの表示をなくすことができますでしょうか。
キーイベントって三つもあるんだが KeyDownでSuppressKeyPress使えば文字入力をキャンセルできるよ
ウォッチ式で「TextBox.Text[0]」等を見ればその文字の文字コードが分かるはず あとはTextChangedイベントとかハンドルしてデバッグすれば?
>>372 ,373
ああ、すいません。KeyDown です。
なるほど。
とりあえず、それらを試してみます。非常に助かりました。
ありがとうございます。
>>370 たしか理論値で e = 2.71828.... あたりがベストなんだとか。
>>361 時期バージョン(今はまだCTP)には IProgress<T> インターフェイスが入る。
↓みたいなの作って、イベント登録した上でTaskに渡しておく。
interface IProgress<T> { void Report(T value); }
class Progress<T> : IProgress<T>
{
public EventHandler<T> ProgressChanged;
protected virtual OnReport(T value){}
void IProgress<T>.Report(T value){}
}
374です。解決しました。ありがとうございます。 あと、dllで利用している関数で、ファイルの先頭ポインタを受け取るものがあります。 仮に、 void cFunction(void* pointer); とします。 これを、C#で extern static void cFunction(IntPtr p); として定義した場合、 C#のpに、ファイルのポインタを与えるにはどのようにすればよいでしょうか?
それファイルのポインタじゃなくてファイルからメモリ上に読み込んだ領域のポインタじゃないのか? Cでどうやって使うのか教えてくれ
ファイルの先頭ポインタ? ハンドルじゃなくて? 実はFILE*だったりしない? MemoryMappedViewStream.PositionPointer使うのが一番楽かね .NET 4以降だけど
>>379 ,380
えーっと、Cのマニュアルには
void *p = file_load(" this is path ");
someFunction(...., p);
と書いてありますね。
関係ないとこは省略したりしましたが。
ならそのfile_load関数とやらを呼び出した返値を渡せばいいじゃん
標準ライブラリの関数じゃないからわからん file_loadはどっから出てきた?
>>382 その場合は、
そのfile_load関数をラップするC/C++の関数を作成し、それをdllなどとする。
それをC#で利用する。
という手順となりますか?
申し訳ないです。初歩的な質問で。
file_load内でメモリ上に読んでしまって配列のポインタを返してるような気はするが、 file_loadのドキュメントを見ない限りはわからん なんか変なライブラリ使ってるんだろ? それを教えなさい
>>383 ああ、たしかに。こんな関数見たことないですね。
。。。
下に定義ありました。申し訳ないw
void * file_load(const char * file, int * psize) {
FILE *fp; char *data;
struct _stat st;
*psize = 0;
if( _stat(file, &st)!=0) return NULL;
if((data=(char *)malloc(st.st_size))==NULL){ fprintf(stderr,"can not alloc memory(file_load)¥n"); return NULL;
}
if((fp=fopen(file,"rb"))==NULL) { free(data);
perror(file); return NULL;
} if(fread(data, 1, st.st_size, fp)<(unsigned)st.st_size) {
fprintf(stderr,"can not read data (file_load)¥n"); free(data); fclose(fp); return NULL;
} fclose(fp); *psize = st.st_size; return data;
}
ベタ張りで申し訳ないです。
読み込んだ「データ」を返してますね。
>>385 AquesTalk2というライブラリを使っています。
>>386 そういうことならたぶんこれでいける
byte[] data = File.ReadAllBytes("this is path");
fixed (byte* p = &data) { cFunction((IntPtr)p); }
ただしcFunctionから戻った後も渡したポインタが使用される可能性がある場合は
GCHandleを割り当てる必要があるのでこれじゃダメ
ようは、cのchar配列に値をいれて返しているみたいなんで、 C#で file read -> byte[] に格納 Intptr に先頭アドレスをいれる。(キャストだけでおk?) それを、目的の関数にいれてやる という流れでいけそうだなと、素人ながらに思いましたw
>>388 なるほど。参考になります。
再利用は「それほど大きいファイル」じゃないので、必要ないかと思いますが、
せっかくですので、勉強がてら GCHandle というやつを追加してみます。
また分からなければ、明日の夜に来ます。
ありがとうございました。
391 :
388 :2011/05/16(月) 00:31:35.38
ちょっと間違えた。&はいらん。
AquesTalkのマニュアルを見てみたが、非同期再生を行う関数を使う場合はたぶん
>>388 ではダメ。
ファイルの大きさとかいう問題じゃなくて、GCによって移動されてポインタが無効になるのでぶっ壊れる。
勝手に移動されないようにするにはGCHandle.AllocでGCHandleType.PinnedなGCハンドルを割り当てる。
>>391 了解です。
「ファイルの大きさが小さい」というのは、毎回ファイルを読み込んでも、
特に問題ないという意味ですw
うーん、Cについて勉強しなおしたほうがよさそうですねw
本当に助かりました。明日、仕事があるのでこのへんで失礼します。
fixed (byte* p = data) { //このブロック内でのみpは有効 非同期再生((IntPtr)p); } GCはメモリ上のオブジェクトを勝手に移動させることがある。 fixedブロックを抜けた時点で再生は続いているためpは再生が終わるまで dataを指し続けなければいけないが、それは保障されないので、 GCによってdataの移動が行われた時点でまだ再生が続いていたら死亡。
AUTO
WindowsサービスをReleaseでビルドしてインストールしようとしたら、 「コマンドラインやデバッガからWindows サービスを開始できません。 最初にinstallutil.exeを実行して Windowsサービスを新ストールし、 ServerExplorer、Windows Services Administarative ツール、 またはNETSTARTコマンドを使用してください。」 というWindowsサービス開始エラーが出ます。 Debugの時には起きなかったし、VisualStudio2008のWindowsサービステンプレートに 何も書き加えない状態ではReleaseでも正常にインストール出来るみたいなんですが、 インストーラの設定などに不備があると考えられるのでしょうか?
>>395 まだ、win32api + C の世界なんじゃないかなと想像してみる。
392です。昨日の問題が解決しました。 結局、unsafe は使いたくなかったので、 クラスフィールドとして、 private static byte[] b = null; private static IntPtr ptr; を用意し、 メソッド内にて、 public static byte[] method(){ if(b == null){ b = File.ReadAllBytes("path to file"); ptr = Marshal.AllocHGlobal(b.Length); Marshal.Copy(b, 0, ptr, b.Length); } ... int size = 0; IntPtr ptr2 = SomeMethod(..., ref size, ptr); return getByteArray(ptr2, size); } のような形で使っています。 これなら開放されないと思っています。。。(たぶん。)
DataGridViewについて質問です。 列の幅を変えるのに列の端をマウスでドラッグできますが、ドラッグがDataGridViewの端で止まってしまいます。 ListViewみたいにListViewの大きさを超えても、ぐいーっと伸ばして列幅を変更するやり方はありませんか。
ListViewだってデフォではそんな動作しないんじゃない? あれはダミーの列を一番右に入れてやるんじゃなかったかな。 DataGridViewだって同じやり方が有効では?いや知らんけど
400 :
デフォルトの名無しさん :2011/05/17(火) 00:27:39.98
今UserControlを継承したコントロールを作成しています。 [DefaultValue("Text")] [Browsable(true)] public override string Text { set { _text = value; Invalidate(); } get { return _text; } } 上記のように書いているのですが、コントロールを追加したときのTextがコントロール名になってしまいます。 初期値をDefaultValueで指定した値にするにはどうしたらいいでしょうか?
メモ DefaultValueAttribute は、属性の値でメンバーを自動的に初期化させることはありません。 コード内で初期値を設定する必要があります。
DefaultValueはデザイナが値を設定するコードを生成するかどうか判断するためだけにある 実際の動作には全く関係ない
403 :
デフォルトの名無しさん :2011/05/17(火) 00:42:31.40
>>348-351 返事が遅くなりました。
IDSharpの元ソースを見つけて修正することができました。
ご指摘どおり仕様でShift-JISはISO8859-1で読むことになっていたため
(Unicodeは判別して別の処理に振り分ける仕様になってました。)
生データでShift-JISかどうかの判定式を持って振り分けることにしました。
順調に表示されています。ありがとうございました。
Dropboxの設定画面のようなタブUIを実装しようとすると、 TabControlのDrawModeプロパティをTabDrawMode.OwnerDrawFixedにして、 描画を実装すれば実現できるのでしょうか? 似たようなUIでサンプルコードなどがあれば教えてもらえると助かります。
>>400 確か、
(1) コンストラクタか何かでプロパティをデフォ値で初期化
(2) デザインモード時のみ、プロパティのセッタが最初に呼び出された時、
valueが"ControlName*"だったら無視する。
ぐらいしか手が無かったような。
何かもっといい方法あったっけな
あにょ〜
WindowsFormのTextBoxで、入力中で未確定の日本語をKeyDownなどのイベントで取得する方法はありますでしょうか KeyPressイベントは日本語入力中は発生しないようで、 KeyDownイベントでe.KeyCode、e.KeyData、e.KeyValueを調べてみましたが、 入力された文字列を取得することはできないようでした
>>407 日本語入力中はtextbox上でやってるように見えるけど
あれはIMEの制御下
textboxだとIME関連のメソッドとかなかったっけ?
>>408 ありがとうございます
大変そうな予感がするのでやらないことにします
コンボボックスが2つあるユーザコントロールをフォームに配置して、 フォームのデザイナからコンボボックスのDataSourceなどのプロパティを設定したい場合、 ユーザコントロールにそれ用のプロパティを設定しないといけないのでしょうか?
書いてる途中でどっちの問題なのかと思い当たってしまった ・コンボボックスのデータソースプロパティが見えない ・スマートタグを出したい 上ならプロパティ付け加えて見えるようにするしかないすよ
>>411 ありがとうございます、上です(スマートタグって何でしょう)
プロパティ自分で追加したらフォームのデザイナから設定できるようになりました
また、ユーザコントロールのSizeを設定したらコンボボックスのSizeも同じ値にしたいので、
Sizeプロパティを次のように書いたらVisualStudioが落ちちゃいました
名前が色々被ってるので怪しいとは思ったんですが、Sizeプロパティを変更したい場合はどのように記述すればよいでしょうか
public System.Drawing.Size Size
{
get
{
return this.Size;
}
set
{
this.Size = value;
this.comboBox1.Size = value;
}
}
Dock=Fillでええんちゃうんかと
415 :
412 :2011/05/17(火) 10:30:03.51
>>413 >>414 は
>>412 ではないですが、Dockだとダメなんです
目的はFixedSingleの枠線のあるComboBoxで(他にもありますが)、
UserControlのBorderStyleをFixedSingleにして、
ComboBoxのLocationを-1, -1、SizeをUserControlと同じにすると見た目がそれっぽくなります
DockをFillにしてしまうとLocationがずれてしまうので、ちゃんとSizeを設定できるやり方はないかなと
UserControlのResizeやSizeChangedイベントで設定できますが、出来ればSizeプロパティのoverrideの仕方が分かればありがたいです
トリ付けました。
>>415 は私ではないです。
Dockだと望んだ動作をしない上、VisualStudioがエラーを出します。
2人が似たようなことを聞いてるのか?w
virtualでないプロパティがoverrideできたら欠陥じゃねえか
OnSizeChangedをオーバーライドする
420 :
デフォルトの名無しさん :2011/05/17(火) 12:58:59.03
コンボボックスの高さはフォントサイズで決まって変更不可だったと思った 幅だけは変えられたが
421 :
412 :2011/05/17(火) 13:31:27.07
>>418 そうですか?
>>419 それでも出来ますが、今はSizeのsetをどうやったら変更できるか知りたいです
>>420 幅さえ変えられれば無問題です
422 :
デフォルトの名無しさん :2011/05/17(火) 14:14:36.09
>>421 それならSizeじゃなくてWidth変更だな
423 :
412 :2011/05/18(水) 00:23:11.83
解決しました。 みなさんありがとうございました。
C++ みたいに const int a = hoge.aho(); とかローカル変数に対して不偏であることを設定することはできないのですか?
できますよ。
>>426 const int a = hoge.aho();
constはコンパイル時に解決されるんじゃなかったっけ。 readonlyはだめ?
出来ないよ。
>>424 参照型持ってる言語で、ローカル変数の不変性保証って難しいのよ。
let x = new Class();
x = anotherInstance; // これを不可にするのは簡単
x.Property = 1; // これを不可にしたければ、Classの方を不変に作らないと無理。
>>428 そう、const付けれるのはコンパイル時に解決できる数値と文字列に限られる。
readonlyはローカル変数には付けれない。
431 :
424 :2011/05/18(水) 01:19:14.65
なるほど、どうもでした
432 :
424 :2011/05/18(水) 01:22:50.01
ちょっと馬鹿なふりして聞けばお前らが答えてくれるので助かります
433 :
デフォルトの名無しさん :2011/05/18(水) 01:47:25.90
ここってID出せるんだっけ?
そういうわざとらしいレスはいらないです
クラスの命名に無駄に悩んでしまう。 どーせ自分しか使わないからどんなでもいいんだけど。 他人の書いたコード読んで命名センスを磨くのは大事だと思った。寝る。
質問があります. DataGridViewTextBoxCellを継承してテキストとアイコンを描画できるセルを作りたいと考えています. 現地点ではDataGridViewTextBoxCellのPaintをオーバライドして,テキストとアイコンを表示できるようにしました. ところでDataGridViewはヘッダの境界をダブルクリックすると自動的に最適なカラム幅に変更する機能があります. 今の自分のプログラムでへッダの境界をダブルクリックすると,テキストのみ表示した場合の最適なカラム幅に調整されます. 最適なカラム幅を自分で設定したいのですが,どのメソッドをオーバライドすればよいのでしょうか?
直観で答えるとGetPreferredSize
DataGridViewのセルの入力内容を自動でチェックさせないようにすることは可能でしょうか? データソースに型付きデータセットのテーブルを設定しているのですが、 デフォルトの状態ではセルに入力をして次のセルに移動しようとすると自動で入力チェックが実行され、 エラーだとセル移動できず、入力を訂正しないとフォームを閉じることすら出来ないようでした。 DataGridView.DataErrorイベントをハンドルして、DataGridViewDataErrorEventArgsのCancelをfalseにすると、 フォーカスは移動できるけど入力内容は元に戻る、と言う感じで、また一から入力し直す必要があり煩雑です。 自動でチェックを行わせないようにして、登録ボタンクリック時に一括でチェックをする もしくは 自動でチェックし、エラーならセル移動はできないが、フォームは閉じれる という方法がお分かりであれば教えて頂きたいと思います。 よろしくお願いします。
想像するにDataErrorイベント捕捉してスルーしちゃえばいいんじゃないかな?
>>440 DataErrorイベントハンドラを追加して、そのメソッドに何も書かなかった場合は、
やはりセル移動できず、フォームを閉じることもできない状態でした
DataSet.EnforceConstraintsをfalseにするとか、DataTable.Row.BeginEdit()を呼び出すと入力チェックを抑制できる
という記事を見つけて試してみましたが、やはりダメでした
>438 読み取り専用で,書き込めないです.
メソッドなんだから読み取り専用もクソもない
>443 プロパティです. オーバライドもできません.
こういうことじゃないの? class DataGridViewUnkoCell : DataGridViewTextBoxCell { protected override Size GetPreferredSize( Graphics graphics, DataGridViewCellStyle cellStyle, int rowIndex, Size constraintSize ) { return base.GetPreferredSize( graphics, cellStyle, rowIndex, constraintSize ); } }
拡張しようとしたらそこは触れないようになってるとかよくあるよね…
>445 DataGridViewTextBoxColumnの方なら,PrefferedSizeの設定ができました. 解決しました.ありがとうございました.
ArrayList aryObj = new ArrayList(); Obj obj = new Obj(); aryObj.Add(obj); ArraylistにObj型の変数を追加した後、 aryObj.Clear(); をしたらobjの中のデータもクリアされますか?
aryObjはobjに対する参照を持ってるだけなのでobjの中身には関与しない。
ってことは、objの中の片付けをしないまま、Arraylistから削除したらどこからも参照できなくなるんですか?
繰り返すけどaryObjはobjの中身には関与しない。 他の変数やコレクションにも保持されてたら、たとえaryObjをClearしても、そこからアクセスできる。 どこからも参照されていないオブジェクトはいずれガーベジコレクションによって消去される。 そのオブジェクトの中身は関係ない。外側の問題。
452 :
448 :2011/05/19(木) 12:28:44.50
>>451 どこからもリンクされなくなったらどうなるか悩んでましたが、ようやく分かりました。
ありがとうございました。
データベースエクスプローラでテーブル作る DataGridViewでレコード追加 this.テーブル名TableAdapter.Update(this.dataSet1.テーブル名); でデータベース更新 プログラム終了 プログラム再実行 DataGridViewにレコードは残っている(期待した動作) プログラム終了 ここで「データベースエクスプローラで最新の状態に更新とかで接続する」 プログラム再実行 DataGridViewにレコードが1つも表示されない(なんで?) データベースのレコードが消えてしまう データベースエクスプローラでテーブルの構造はいじってないのに 接続しただけでデータベースが1から作り直されてしまうのでしょうか?
凄く初心者っぽいことを聞きますが、別のネームスペースにあるクラスのメソッドから、フォーム内の、たとえば TextBox1.text の値を書き換えるにはどうすれば良いのでしょう?
このFormのTextBox1のTextを書き換えてくださいと伝える
>>455 無事に書き換えることが出来ました
ありがとうございました
うそぉ?
>>455 さんのアドバイス通りに、以下のコードを書き加えました
private void MainForm_Load(object sender, EventArgs e)
{
form1.Form1Instance = this;
}
private static Form1 _form1Instance;
public static Form1 form1Instance
{
set { _form1Instance = value; }
}
public string TextBox1Text
{
set { TextBox1.Text = value; }
}
後は、別のクラスから
フォームのネームスペース.form1.Form1Instance.TextBox1Text = "コメント表示";
とすれば書き込みできました
まだ始めたばかりの僕でも
>>455 さんの的確なアドバイスで簡単に実現できました
ありがとうございました
糞コード誕生おめでとうございます
何が悔しかったの?
staticっすか
463 :
デフォルトの名無しさん :2011/05/20(金) 00:40:42.77
「もう、どうにでもなれ」の心境でスタティックなイベント実装したことがあるのは内緒だ
外から見て自然に見えれば内側ぐちゃぐちゃでももう知らん!
staticなイベントとかstaticなフォームに外からイベントハンドラ突っ込むとかって メモリリークする最低のパターン
ほんと?
イベントの紐付けの解除漏れの問題はstaticとか何も関係ないなw 何が言いたいのか全然わからない
ほね」。
同じことアホみたいに何度もかいてりゃ嬉しくなれるんだから安いよな。 ほね」。 だって。本当に馬鹿だろお前。
相手しなけりゃいいのに
Releseのexeファイルを、開発環境とは違う環境で実行したところ、エラーが発生しました。 StackTraceに出力されたソースファイルのパスが開発環境のパスだったのですが、 このパスをディレクトリ名は出力せずファイル名だけにするとか、ソリューションファイルからの相対ファイルに変える といったことが可能でしたら、やり方を教えて頂けないでしょうか
どんなエラーかわからんが、とりあえず必要って表示されたファイルを全部exeと同じところに入れとけ
すみません、説明の仕方が悪かったようです。 StackTraceを出力すると、下記のような文言が出ます。 (はしょってます) 場所 MenuForm.btnTorikomi_Click(Object sender, EventArgs e) 場所 C:\Documents and Settings\ユーザ\My Documents\Visual Studio 2010\Projects\Test\MenuForm.cs:行 368 このディレクトリが出力されないようにする方法はないかという質問でした。
MenuForm.cs:行 368 になんて書いてあるかが問題だ。 取り込みって書いてあるからローディングしてるんだろうけど、そこの取り込みパスがおかしいんじゃないの?
っていうか、そのTorikomiはどういう意味なんだ?
デバッグ情報をnoneにしろ とかそういうことじゃなくて?
いえ、取込処理のファイルのパスという意味ではなく、 StackTraceに下記が出力されないようにしたいのです。 C:\Documents and Settings\ユーザ\My Documents\Visual Studio 2010\Projects\Test\ つまり、納品物のログファイルに、開発環境のパス(特にこの場合はユーザ名)が出力されないようにしたい、ということです。
479 :
デフォルトの名無しさん :2011/05/20(金) 16:54:25.72
・プロジェクトを作る場所を変える ・エラーが出そうなところをtry catchする
>>477 ありがとうございます、試してみます。
>>479 catchした例外のStackTraceをログファイルに出力していますので。
noneにしたら行とか取れないけどいいのかね ファイル名や行はでてほしいのじゃろ
そうですね。。エラー箇所は分かるようにしたいです。 となるとソリューションのディレクトリを変更してからリビルドでしょうか。
HumanクラスにgetMoneyという関数があって, 人によってお金の稼ぎ方が違うので, Humanをnewするときにその人のgetMoneyを指定したいのですが 関数を引数に取るコンストラクタはどう書けばいいでしょうか。 引数として渡したい関数は getMoney1 getMoney2 getMoney3 ・・・ のように数パターンの関数を別に用意してあります。
485 :
デフォルトの名無しさん :2011/05/20(金) 19:20:30.31
どうしても関数渡したいのならFunc<TResult...辺りを引数に
488 :
484 :2011/05/20(金) 19:50:17.48
ああなるほど,こういうときにデリゲート使うんですね。 やっとデリゲートの使い方を理解できました。 ありがとうございました。
class Ore : Human { protected override int getMoney() { return 0; } }
勝手にHuman継承すんな厚かましい
public void Jinsei()
private class Ore{}
private sealed class Ore{ private Ore(){} }
terminate thread
プリンタドライバの設定って通常どこで保持してるのかえ プログラムからインク節約の設定とかしたい
496 :
デフォルトの名無しさん :2011/05/21(土) 01:00:51.79
>>495 普通はレジストリじゃね。機種毎にバラバラだと思うが
static children
400fpsとかの高速動画(AVI形式)を扱えるライブラリって何かありますでしょうか?
OpenCVSharpを使用してみたのですが30fps程度までしか対応していないらしく、それ以上の動画を扱うことが出来ませんでした。
やりたいことは、AVIからBitmapを抽出するのと、Bitmapを連結させてAVI動画を作成することです。
AVI形式を自力でBitmapに変換すれば良いのでしょうが、AVI形式は扱い辛いので、何か良いライブラリがありましたらよろしくお願いします。
http://msdn.microsoft.com/ja-jp/library/Cc352264
400fpsてw そんなの追従できる表示デバイスがこの世に存在するのかw
240fpsで録画できるビデオカメラなら聞いたことがあるな 主な用途はおそらくスロー再生用 DirectShow使ってみるとか
1フレームごとに取れなかったっけ? 動画を扱うっていう言い回しが何をやりたいかわからないが、 フレームの抽出なら、400fpsだろうが30fpsだろうが関係ない気がする。
400fpsとかって専用ボードでしょ?SDK付いてないの?
using句で指したオブジェクトをブロック内で他のオブジェクトに入れるのってまずい? using ( obj ) { hoge.fuga = obj; } こんなかんじ。hogeのfugaプロパティは後に使われる。 Dispose()が呼び出されちゃったオブジェクトを外部で使おうとしてもうまくいかなんじゃって思ってたけど、 動かしてみたらうまく動いてるみたい…。
あー、MSDNにusingのスコープ外のインスタンスは指定しないほうが良いって書いてあったわ。 このケースでusing使うのはやめとく。
505 :
498 :2011/05/22(日) 03:49:03.39
すいません、寝てました。
>>499 追従するわけでは無いですね。
一度バッファに取り込んで、それから保存してますし。
XPだと3G積んでて画素落としても数秒でいっぱいになりますがw
>>500 サポート終わったけど、ManagedDirectShowですかねー。
今ならSlimDXとかのほうが良いのかな?
ちょっといじってみます。
>>501 はい、1フレームずつ取りたいんです。
OpenCVの場合、フレームレートが30なら30(正確には29.97)等出るのですが、
180fpsや300fpsになるとなぜか0.8333とかになってしまい、おかしくなってしまいました。
>>502 動画を作成するSDKはついているのですが、それを加工するSDKが無くって・・・。
3000FPSくらい普通でしょ
データベースの定義変更(データ型や必須等)を、データセットに反映する機能はVS2010にありますか?
AVIのヘッダー書き換えしたらいいのでは?
敢えてLINQを使う利点が分からない コードが見やすくなるから? どのデータに対しても同じようにアクセスできるから? 実行速度が速くなるのなら実装してみたくはあるけど
> コードが見やすくなるから? > どのデータに対しても同じようにアクセスできるから? この2つあれば十分どころか、むちゃくちゃでかい利点だと思うけど。
分からないけど、利点はそれだけなんだよね? どうもありがと
つか、C#って全体的にそういうもんだと思う。
あえてC#使う意味が分かんない、みたいな。
確かに、.Net 1.0 以降はそうだね
しっくりきてないww
ラムダ式を見やすいとも思わないし、F#の優れている点もよく分からない俺はプログラマ初心者です^^
ラムダ式は見にくいよ。 あくまで、たった1個の式だけのためとかでメソッド書いて、 別の場所に飛ばないと中身が見れない状況よりははるかにマシという、 相対的な見易さだと思う。
ラムダ式が見やすいんじゃなくて述語の形式が一般に見やすいと言われる(流れるようなインターフェースでggr) ラムダは構成要素であってLINQそのものではない
式木のほうのラムダがよくわからん。 わからんっていうかなんか不思議。 動的に式を作るのって従来のC#では無理だったの?
うん
匿名メソッドの省略記法だと思っておけばいいだけなのに usingとか便利だろ その程度の存在
var strList = new List<string>("a","a","b","c"); var work = strList.Distinct(); Array.ForEach( work.ToArray(), Console.WriteLine ); strListの中をa,b,cにして重複するaを一つ消すにはどう書けばいいんですか?
distinct
妥協して一行増やしたんですがエラーが出ますどうやれば格納できますか? var strList = new List<string>("a","a","b","c"); var work = strList.Distinct(); strList.Clear(); Array.ForEach( work.ToArray(), ( str ) => strList.Add( str ) );
すいません解決しました var strList = new List<string>("a","a","b","c"); var work = strList.Distinct().ToArray(); strList.Clear(); Array.ForEach( work, ( str ) => strList.Add( str ) );
MessageBox.Showで長めの文を表示すると 自動で改行されて表示されるのですが 改行なしで表示させるにはどうすればいいのでしょうか?
新しいFormを作る
>>526-527 お前MSDNくらい読めよアホンダラ
strList = strList.Distinct().ToList();
コンストラクタこれでいいんだっけ?
コンストラクタ?
もしかして
>>526 >>527 のvar strList = new List<string>("a","a","b","c");のことか?
エラーになるけど気にしないことにした
>>521 誤解を恐れずに言うならメソッドの引数にソースコードをそのまま渡したい時に使うんだよ。
で例えばLINQ to SQLがそのソースコードをSQLにコンパイルする。
普通のデリゲートのラムダだとILにコンパイルされてしまうからソースコードの情報が失われてしまう。
でも本当に文字列でソースコードを渡すと、解析が大変だしC#に依存してしまう。
だから抽象的な式木の形で渡すわけ。
>>527 で、 526でクリアしちゃだめな理由は分からないままなのでした。
>>535 LINQはIEnumerable<T>が戻る場合は実行されてないずら
boolとかT型が戻る場合はその時点で実行されるずら
EnumerableRowCollectionやIQueryableのこともたまには思い出してあげて
ある値が割り切れるかどうか調べたいのです 整数で割り切れるなら%を使えばいいのですが、2.5や3.25など、小数になっても割り切れる(有限小数かどうか)かどうかを調べるにはどうすればよいのでしょうか?
君が作ろうとしているのは無理数判定プログラム そのプログラムは停止しないかもしれない
var x = b / 最大公約数(b, a%b); while(x%2==0) x/=2; while(x%5==0) x/=5; return x==1; 引数が整数ならこれで
何を言ってるのか訳がわからんな。 例えば2で割って循環する数なんてあるのか?
%はdoubleでも使える
>>541 4を1.729で割って割り切れるかどうか…
って意味かなタブンネ
整数の除算結果(≒分数)が有限小数になるかどうかの判定じゃないのか
>>526 でクリアしちゃダメなのは参照渡しだからであって
遅延実行だからじゃないよね。
例えば
var strList = new List<string>("a","a","b","c");
var work = strList.Distinct();
Array.ForEach( work.ToArray(), ( str ) => Console.WriteLine("hoge") );←この1行を追加
strList.Clear();
Array.ForEach( work.ToArray(), ( str ) => strList.Add( str ) );
とやって、clear前にLinqが実行されるようにしてももやっぱり結果はゼロ件
Distinctは遅延実行なんだよね〜
>>546 >Array.ForEach( work.ToArray(), ( str ) => Console.WriteLine("hoge") );←この1行を追加
の意味は理解できてる?
レッテル貼りに逃げて一矢報いた気になるのは卒業しよう。 >Array.ForEach(work.ToArray(), (str) => MessageBox.Show(str));←この1行を追加 にすれば、君でもClear前にworkに3件格納されたのが理解できるかな?
どっちかというとworkがステートを持ってると勘違いしているのが問題なんだと思うが
workに入ってるのは 「strListから重複しない値を取り出す」 という操作そのもの 3行目のwork.ToArray()の時、まだstrListには { "a","a","b","c" } が入っているので work.ToArrayは 「リスト { "a","a","b","c" } から重複しない値を取り出して配列化する」 という動作になる 故に配列 [ a,b,c ] を返す 4行目のstrList.Clear();を実行するとstrListが空になる 5行目のwork.ToArray()の時、strListは空なので work.ToArrayは 「空のリストから重複しない値を取り出して配列化する」 という動作になる 故に空の配列を返す って感じ 遅延実行だからじゃないよねっていうか、まさに遅延実行の罠
遅延実行って言葉自体意味不明だが、結局値渡しか参照渡しかってだけの話しじゃないのか? 参照渡しだからその前が参照渡しだと参照渡しになってるってだけの話しな気がする
List<string> work = strList.Distinct();
>>552 IEnumerable<int> GetData(int n) {
int[] x = new int[n];
for(int i = 0; i<n; ++i) x[i] = i;
return x;
}
と
IEnumerable<int> GetData(int n) {
for(int i = 0; i<n; ++i) yield return i;
}
の違いは分かる?
>>552 値渡しと参照渡し覚えたばっかりなんだな
わかるよ
while(true) { Random rnd = new Random( Environment.TickCount ); rint a = nd.next(100); } ずっとやってるとなんかどことなく規則的なんですがもっとばらばらした感じにするにはどうすればいいですか?
Randomは所詮線形合同法の一種なのでそんなに均等に分布しない もっといい分布が欲しければ別のジェネレータを使え 関係ないけどnextを使うなら毎回Environment.TickCountで初期化するのは無駄 Random rnd = new Random( Environment.TickCount ); while(true) { rint a = nd.next(100); }
自分でTextBoxコントロールを配列で作って・・・ for (i = 0;i < x;i++) { textBox[i] = new TextBox(); textBox[i].Name = "tabPage" + i.ToString(); textBox[i].Size = new Size(400, 800); 〜以下略〜 } みたいな感じで作ってるんですが、配列のサイズが不確定で後々配列のサイズを変えたいのでArrayListを使おうとしたんですが 上記の場合、どのように書けばいいんですか?
ArrayList使うのやめろ List<TextBox>使え
>>558 毎回初期化してるのが問題だったりして。
かーもね
ハイッ!
初期化をループの外に出すだけで直るな。 ループの中に入れたら、思ってたより酷いことになったw
ミリ秒単位の値でで初期化してるから、ループ中値が変わらんので 規則的というより、同じ値ばっかりになる。
567 :
559 :2011/05/24(火) 16:55:01.65
>>560 さんの言うとおり、List<T>を試してみたんですけど
List<TextBox> textBox = new List<TextBox>();
textBox[0] = new TextBox();
textBox[0].Name = "textBox0";
textBox[0].Text = "";
textBox[0].Size = new Size(50, 50);
textBox[0].Location = new Point(50, 50);
textBox[0].Multiline = true;
this.Controls.Add(textBox[0]);
これだと実行時にArgumentOutOfRangeException例外を吐いてしまいます……
どこが悪いのか教えてもらえないでしょうか?
568 :
デフォルトの名無しさん :2011/05/24(火) 17:02:29.61
List<TextBox> textBox = new List<TextBox>(); TextBox hoge = new TextBox(); hoge .Name = "textBox0"; hoge .Text = ""; hoge .Size = new Size(50, 50); hoge .Location = new Point(50, 50); hoge .Multiline = true; textBox.Add(hoge); this.Controls.Add(textBox[0]);
センスゼロだな
List<TextBox> textBox = new List<TextBox>(); textBox.Add(new TextBox()); textBox[0].Name = "textBox0"; textBox[0].Text = ""; textBox[0].Size = new Size(50, 50); textBox[0].Location = new Point(50, 50); textBox[0].Multiline = true; this.Controls.Add(textBox[0]);
571 :
デフォルトの名無しさん :2011/05/24(火) 18:55:28.65
>>570 質問した人はとりあえずのコードを晒してるけど
複数入れるとこを考えるとそれはよろしくないんじゃね?
なるほど、じゃあこれで List<TextBox> textBox = new List<TextBox>(); textBox.Add(new TextBox()); textBox[textBox.Count-1].Name = "textBox0"; textBox[textBox.Count-1].Text = ""; textBox[textBox.Count-1].Size = new Size(50, 50); textBox[textBox.Count-1].Location = new Point(50, 50); textBox[textBox.Count-1].Multiline = true; this.Controls.Add(textBox[textBox.Count-1]);
個人的にはこっちのほうが好み int x = 10; var textBox = Enumerable.Range(0, x) .Select( i => new TextBox() { Name = string.Format("tabPage{0}", i), Size = new Size(50,50), Text = "", Location = new Point(50*i,50), Multiline = true }); foreach ( var tb in textBox ) { this.Controls.Add(tb); }
ゲロゲロ
foreach ( var i in Enumerable.Range(0, x) ) { var tb = new TextBox() { Name = string.Format("tabPage{0}", i), Size = new Size(50,50), Text = "", Location = new Point(50*i,50), Multiline = true }); this.Controls.Add(tb); } LINQはクエリ用なんだぜ?
数値→コントロールの変換クエリだと思えば・・・ とはいえ、後からAddするだけのforeach回さないといけないんなら最初から全部foreachでいいだろ。
同様にEnumerable.Range(0, x)はループカウンタじゃないな
int x = 10; var textBox = Enumerable.Range(0, x) .Select(i => { Controls.Add(new TextBox() { Name = string.Format("tabPage{0}", i), Size = new Size(50,50), Text = "", Location = new Point(50*i,50), Multiline = true }); return Controls.Last(); }); あれだな、何のひねりも無く List<TextBox> textBox = new List<TextBox>(); for (int i = 0; i < x; i++) { textBox.Add(new TextBox { Name = string.Format("tabPage{0}", i),… }); Controls.Add(textBox.Last()); } が一番書きやすくて読みやすい気がする
>List<TextBox> textBox これが気に食わない
580 :
デフォルトの名無しさん :2011/05/25(水) 14:55:45.51
>>579 しっくりこないんです!!
って言うんだ
List<TextBox> textBoxs
>Boxs ハハッ
582 :
580 :2011/05/25(水) 15:02:13.59
釣れたw
583 :
580 :2011/05/25(水) 15:03:35.63
>>581 英語の表記にあわせる必要はねーよ
textBoxという塊の複数なんだし
>>582 お前はだれだ
以下、名前欄に580の流れ
トリ付けた 大体、日本人なのに英語に固執しても生産性下がるだけ
586 :
ほんものの580 ◇6BEJPFFHAc :2011/05/25(水) 15:18:07.32
>>585 うむ
名前が気に入らなければsをはずせばいいしな
言いたいことが伝わればいい
以下のコードで、unko[0].ColorNameまでbrownに変わってしまうのは何故ですか? 回避するのはどう書けば良いでしょうか? classA[] unko=new classA[2]; unko[0]=new classA(); unko[1]=new classA(); unko[0].ColorName="black"; unko[1]=unko[0]; unko[1].ColorName="brown"; textbox.text=unko[0].ColorName;
unko[1]=unko[0]; になんの意味があるんだよ
参照型だから
>>588 ColorName以外を全部コピーしたいからです。
このコードだと元々全部同じですが。
いいか坊主 =はコピーじゃなくて代入なんだ
>>590 コピーしたいプロパティを一つ一つ地道にコピーするしかない。
classAに内容をコピーするメソッドつくって unko[1].CopyFrom( unko[0] ); みたいなかんじにするか、classやめてstructにするか 後者はお勧めしないが
structにしても中身に参照持ってるとそこはコピーされないしね… ディープコピーしたいのなら相応に書かないと駄目だ罠
595 :
デフォルトの名無しさん :2011/05/25(水) 16:06:27.71
>>590 参照型だと
unko[1]=unko[0];
しても君が思ってるようなコピーはされないぞ
Cloneができないと意味がない
自動のディープコピーは思わぬところでバグになるからないんじゃなかったっけ
そもそもコピー必要なときってそうそうある?
なんでそういうコードが登場するのかっていうロジック的な話よ まったくないとは思わないけど、みんなそんなにコピーとかする機会多いのん?
600 :
デフォルトの名無しさん :2011/05/25(水) 16:28:42.57
コピーするってのも一つだがデフォルトでこの値をセットしておくってのも手じゃね? クラスのコンストラクタで初期化しておいて違うところだけ外から書き換えるとかさ
要素のクローンとか発想的に恐ろしいことするより、 色くらいenumで定義しろよとか思うのは俺だけなのか?wブヒwwサーセンwww
603 :
デフォルトの名無しさん :2011/05/26(木) 04:22:31.75
japan.internet.com
http://japan.internet.com/busnews/20110517/3.html >Novell を買収した Attachmate において、『Mono』プロジェクトは終焉を迎えた。
>Novell を買収した Attachmate において、『Mono』プロジェクトは終焉を迎えた。
>Novell を買収した Attachmate において、『Mono』プロジェクトは終焉を迎えた。
>Novell を買収した Attachmate において、『Mono』プロジェクトは終焉を迎えた。
>Novell を買収した Attachmate において、『Mono』プロジェクトは終焉を迎えた。
>Novell を買収した Attachmate において、『Mono』プロジェクトは終焉を迎えた。
Mono終了
>>603 >そして同プロジェクトの活動は、新たに Xamarin として生まれ変わった。Mono とは『.NET Framework』互換のオープンソース実装だ。
DataGridView - BindingSource - DataSet という構成でフォームに配置しています。 レコードが無い状態だと、DataGridViewには新規の1行だけ表示されている状態になります。 その行に何かを入力すると、自動で次の行が追加されます。 ここまではいいのですが、 その追加された行の任意のセルをクリックすると、DataGridView.CurrentCell.RowIndexは1(2行目)になります。 何も入力せず、DataGridViewのセルではない別のTextBoxなどに移動すると、CurrentCell.RowIndexは0(1行目)に戻ってしまいます。 見た目は2行目のセルが選択されている(青くなっている)のに、RowIndexは1行目になってしまうのです。 現在選択されているセルの行が2行目であることを取得する方法はないでしょうか。
CurrentCellで取得できるのはアクティブなセルであって選択されているものではない。 選択されているセルの取得にはSelectedCellsを使う。
アクティブというのはフォーカスを受けていると同義
CurrentCellAddress
C#でGPGPUを使用する場合、CUDAとOpenCLのどちらが良いのでしょうか? nVIDIAに統一することが出来れば、CUDAにしておくのが無難ですか?
uint a = 123456; byte[] b = byte[]{ (byte)(a >> 24), (byte)(a >> 16), (byte)(a >> 8), (byte)a } uintをbyte配列にする場合はこれでいいんですか?
>>611 BitConverter.GetBytes()
Visual C# 2010 ExpressやVisual Studio 2010の評価版で、 フォームデザイナが真っ白になったり、下記のようなエラーが出て表示できなくなることが多々あります。 デザイナー ローダーはルート コンポーネントを指定しませんでしたが、その理由を提示しませんでした。 リビルドしたり、フォームを開き直したりするとちゃんと表示されるんですが、何が原因でしょうか? また良くあることなんでしょうか
Form1にtextBoxがあってForm1を拡大すると相対的に見てtextBoxの位置がズレるわけだけど 相対的にズレないようにするには、やっぱり自分でイベント作ってやらないとダメ? 相対的な位置を保持してくれるものってあるの?
FormsだとAnchorとDockでどうにもならないなら自分でやるしか
間違ってないはずなのにエラーが出てビルド出来なくなったけど開き直すと問題ないってのは俺も多々ある
VC#2010でインストーラを作成する時、必ず一回目はファイルが無いだの言って失敗するけど、 何もせずそのまま二回目のビルドをすると成功するんだが、 これはそーゆー仕様なのか? インストーラは毎回問題無く動いてるから、とりあえず放置してる。
620 :
デフォルトの名無しさん :2011/05/27(金) 20:14:29.77
ビルド順序が間違っているんじゃないの?
SoundPlayerを使うと、動作には問題ないエラーが吐かれます。 実際はもうちょっと複雑なのですが、おおまかには以下のことをやっているだけです。 SoundPlayer player = new SoundPlayer("./hello.wav"); player.Play(); これをやると、 "System.UriFormatException"の初回例外が System.dll で発生しました。 というエラーが発生します。 エラーの発生タイミングから、おそらく1行目に問題があります。 非常に簡単なコードなので当惑しております。 なにか心当たりありませんでしょうか?
単純に渡してるパスが間違ってんじゃないの
>>622 音声は再生されるので、一応パスはあっていると思われます。
動作には全く問題ないです。
@"./hello.wav"
"hello.wav"
パス形式を変えた上記のものも、エラーが発生するようでした。
>>614 .designer.csを変な風に弄るとそのエラーが出たような気がする
たとえば同じイベントに2回イベントハンドラを設定した場合とか
>>621 内部でcatchされている例外を持ち出してきて何がしたいんだか
まあ、最初から正しいURIを渡せば出なくなるんじゃねーの?
>>625 申し訳ないです。内部でcatchされている例外でも気持ち悪くて。。。
内部で対処されているエラーなら無視すべきですね。
結論なのですが、パスを「相対URL -> 絶対URL」 へと変換してあげたら
エラーが発生しなくなりました。
やってみたけど相対パスでも何もでなかったよ
>>627 普通に考えたら、そうなりますよね。
相対パスなんてメジャーな方法でエラー吐くとは思えない。。。
例外スロー時にブレークする設定にしてるから、正常系にTryXXXパターンじゃなくて例外使う奴はぶち殺したくなる
630 :
627 :2011/05/28(土) 00:25:57.20
[マイコードのみ]のチェックはずしたら出たわ >'System.UriFormatException' の初回例外が System.dll で発生しました。 >'System.IO.FileNotFoundException' の初回例外が mscorlib.dll で発生しました。
631 :
デフォルトの名無しさん :2011/05/28(土) 00:26:16.36
データベースを簡単に扱う方法ありませんか? ADO.NETというのを使ってみたのですがSQL文を実行するまではいいのですが、 値を取り出すのが煩雑すぎてどうにかならないものかと。
NotFoundなら、ProcessMonitorでどこのパス見に行ってるか確認したらええで
前から気になってたんだけど初回例外ってどういう意味なの?
>>631 SqlConnectionなんかを使ってしこしこやるのが疲れたってことか?
TableAdapterなんか使うとマシになるかも知れないし、逆にストレスが溜まるかもしれない
初回の例外っていう意味だよ
First Chance Exception
自分でしこしこやった方がいいよね
638 :
デフォルトの名無しさん :2011/05/28(土) 08:34:41.80
>>634 SqlConnectionやSqlCommandまではいいのですが、SqlDataReaderが面倒すぎて
どうにかならないものかと思った次第です。
テーブル定義と同じようなフィールドを持つクラス作って、そこへ値を入れたいの
ですが、SqlDataReaderだと記述量が多くてビックリ。
で、「このクラスに値入れて返して」的なメソッドないかなーと思った次第です。
O/Rマッパーは? 使ったことないけど
>>638 LINQ to Entities/LINQ to SQLにObjectContext/DataContextってクラスがあって、それぞれにTranslateってメソッドがある
まあこれを使える状況ならDbDataReaderじゃなくてLINQでアクセスした方がいいとは思うけどね
Javaのseasar2みたいなのが欲しいってことかい
DataSetにFillすればええんでないの
643 :
デフォルトの名無しさん :2011/05/28(土) 11:59:12.21
.NET向けの軽量なO/Rマップってあるの?
もう準備段階でお腹いっぱいになりそうなのは見たことあるが。
>>640 LINQ to SQLってSELECT方向のサンプルしか見かけないが、
INSERT/UPDATE/DELETEやトランザクションとか使えるの?
>>610 C#全く関係ないだろ
どっちにしてもCで書いてDllImportしかないんだから
>>643 クエリ式で書くわけじゃなくて、
普通にオブジェクトのプロパティとか書き換え後、
DataContextのSubmitChangeでデータベースに反映。
トランザクションはusing(var tran = new TransactionScope())でくくる。
String と string ってどう使い分ければいいの?
気分で
649 :
デフォルトの名無しさん :2011/05/28(土) 12:53:34.92
うちの会社はコーディング規約でLINQ禁止にしてるんだが解禁する価値はあるか?
らくださんが好きかどうか
LINQ to SQLってDataContext以外が生成したインスタンスで更新とかする場合の作法がよく分からん いつも試行錯誤して組んでた気がする
>>649 新しいことを覚えられないPGが傷ついたりコンプレックスもったりするから
解禁しないほうが社内の和がたもてるよ。
653 :
デフォルトの名無しさん :2011/05/28(土) 13:10:19.15
最近UNIXあがりの爺さん達がLINQとラムダを解禁しろとうるさい 俺が思うにLINQとラムダを一気に解放したら大混乱になるよね とくにJavaしか知らない新人は鬱になる気がする いきなり辞められても困るしどうしたものか
社内の独自ルールでガチガチに縛っておいたほうが ヨソで通用しないから転職されにくくていいよ
linqとかラムダで大混乱になったり戦死者がでるのか。 大変だな。 やっぱJavaは1.4でC#は2.0にするのが安心だな。
新人ほど、古臭いものに縛り付けておくのは良くないと思うんだけどね、 ついていけない老人ならともかくさ。 新人のために古臭いままでいく、とかいうのは、それを言い訳にしてるだけじゃねーの? 一生C#2.0でいるつもりならともかく、新しいテクノロジはLINQ(やラムダ式)前提なものが多い。 傷が浅いうちに何とかしたほうがいいかと。
まぁ下流工程の人間の考えなんて実装ありきだからな ブログで嬉々としてコード載せてるような人間
linqとか新しい機能が禁止ってのは新人をおもんばかってのことだったのか。 単にコーディングルールを決められる立場のベテランが新しいのを受け付けない だけかと思ってたよ。
LINQなんて1個ずつ列挙してバケツリレーしてるだけじゃん Lamdaも別に難しいとこなんてないだろ?
>>657 無駄にこねくり回した設計とやらのほうが滑稽だけどね
>>660 ろくにコードを書けないのに設計はできるみたいな口ぶりのやつとかも滑稽。
このスレで無理やり喧嘩するなよw
>>658 まあ、確かに、若い人ばかりのチームならいいけど、
老害だらけの中で LINQ 解禁した場合、新人は大混乱するかもねぇ。
ウェブで調べて来た知識をことごとく老害に否定されたりで。
個人的にはLINQでやれることを自作(バグ付き)でやられる方が嫌だな
LINQはともかくLINQ to SQLの出番は全くないけどな。
まぁ規約に意見つけられる立場になってから言えって話だがね お互いに
腐った規約を押し付けて、意見つけられる立場になってから言え ってのはまさに老害的で最悪だけど。
喧嘩に誘導するにはちょっと弱いネタだな
世の中そういうモンですから 大事なのは貴方がその立場になったとき、同じ事をしないことだよ
今月やってた案件は拡張メソッドとラムダ式が禁止だったから、 EnumerableRowCollectionExtensions.Where(rows, delegate(DataRow row){ return CONST.Equals(row[COLUMN]);})とか書きまくってた
LL言語のフレームワーク並みのORマッパー欲しいなー MS提供の奴は野暮ったいのとSQLServer以外との親和性が低すぎてヤダ
672 :
デフォルトの名無しさん :2011/05/28(土) 16:05:16.35
C#向けのORマッパーってあるの?
EFCodeFirstとかどうなの?
674 :
デフォルトの名無しさん :2011/05/28(土) 16:15:43.22
色々試してみるわ
試した感想を纏めてくれるとすごくうれしい
676 :
デフォルトの名無しさん :2011/05/28(土) 16:19:05.47
677 :
デフォルトの名無しさん :2011/05/28(土) 16:20:29.91
ところで、もうLINQはデバッガ通るようになってる? WMIラッパ作って懲りたんだが、LINQは。
デバッガ通る、とはどういう意味なのか。
ステップインするかどうかってことだと思う しない
まだデバッガ使ってる老害がいるのか。 VisualStudioの仕様に意見できる立場になってから言えっての
Expressions の機構以外、短く書けた俺SUGEEEEのためとしか思えない。
コンプレックス丸出し。 じゃあ「長くてもよければ他に書き方がある」ようなのは全部禁止で
そしてアセンブリ言語へ
>>682 まあ書く量が減れば減るほどバグの作りこみも減らせるけどね
そういう意味ではWPFやSLのバインドは定型コードを書けば
仕組みが勝手にやってくれるのでいいなあ
こーどがふえるとテストもふえるね
コードは負債
688 :
デフォルトの名無しさん :2011/05/28(土) 17:52:21.28
>>675 どういうのがあるか列挙してくれると凄く嬉しい
Win7でProgramFilesフォルダにファイル書き込みしたいときどうするのがWin7ルール? ログ系のアプリなんだけど、データ置くフォルダをどこにするものなのでしょう?
AppData死ね
>>690 ありがと、ちょいと調べてみたけど。
AppData、ProgramDataとあって、XP側もAll UsersのApplication Dataとユーザ/Local SettingsのApplication Dataと。。。
使い分けがわからん><
EnvironmentクラスGetFolderPathでユーザー毎ならApplicationData
すべてのユーザーで共通のデータならCommonApplicationData
をつかっておけばWin7でも問題ないのでしょうか?
CommonApplicationDataは一般ユーザは書き込み禁止のはず ユーザ共通データはインストール時にCommonApplicationDataに フォルダ作った上でそこのACL操作しないと
>>693 情報ありがとうです。
ユーザー個別の出力データと設定、共通の出力データと設定が起きたいのですが、ややこしそうですね><
ACLってのわからないのでググってきます。
下流工程のコーダーってカスしかいないよなw
そりゃ他に移れる能力があるなら移るもの どんどん濃度が上がるぜ
>>695 カス…かなぁ?
「こいつに任せとけば、単体までおk」
みたいなのは、結構いるけどな。
中国人も含めて。
ListBoxで選択インデックスが変更されるときに確認メッセージを出したいのですが どのようにすればよいでしょうか? MouseClickイベントを拾ってキャンセルする形になるんでしょうか? SelectedIndexChangedで拾って確認メッセージを出してNOなら、 強制的に以前のインデックスを代入とかで実装するのでしょうか?
おっさんになってもなおコーディングのネタでブログ書いてるような奴はもう終わってる
System.IO.Directory.GetFilesに指定するワイルドカードで、*.jpg、*.bmp、*.gif、*.pngを検索させたいのですが、どう指定すればよいでしょうか。 "*.bmp *.gif *.png *.jpg *.jpeg"とかやったんですけどやっぱりダメでした。 ググっても見つかりません。 よろしくお願いします。
君より稼いでるんじゃないの。 優秀なPGをわざわざ管理に回しちゃう、PGのままだと稼げないとかいうようなとこはダメだと思う。
趣味ぐらい好きに選ばせてやれ
おっさんがどんどん辞めてくところは間違いなくブラックですよ
すみません、質問スレッドと勘違いしていました。
質問スレッドに移りますので
>>698 はスルーでお願いします。
>>700 無理
GetFiles()/EnumerateFiles()で全部取ってからPath.GetExtensionで自分で判断する
終わったらどうなんの?
C#でアクティブではないウィンドウにキーを送るにはどうしたらいいんでしょうか
>>708 WM_KEYDOWNとかで頑張ってみる ただし相手アプリによる
710 :
デフォルトの名無しさん :2011/05/28(土) 20:34:04.24
>>708 Win32APIでハンドルを調べて送る
>>699 プログラムなんて小学生でも書けるのにな
こういうこと言うと必ず「でも金稼いでるから」とか言い出す始末
このスレに居座って煽ってる自称上流工程の人間はなにがしたいの?
>>711 言っちゃ悪いけどお里が知れる見解だねw
少なくとも英語圏にはそんなオッサンは山ほどいる事実をどう考えるんだろうこういう奴。
っていうか、この人口減少時代にそんな60年代的な出世幻想を持ってる自分が
いちばんオッサン臭いことがわかんないかね
>>712 現実と理想のギャップに悩んでるだけだよお
現実逃避
マでやれ
マとムは天地とひとつ
ひとりじゃないって〜
素敵なことね〜
ちょっと目を離した間に荒れてるとは おまえら油断も隙もないなw
721 :
1/2 :2011/05/28(土) 23:45:18.07
質問があります。 書きこもうとしたら、長すぎと言われたので2つに分けます。 C言語で、mallocでメモリを確保してchar*として返す関数を作成し、 それをDLLにしました。 C#で、その関数を呼ぶようにしました。 関数のcallは成功し、StringBuilderとして値が取れることは 確認できたのですが、Cでmallocして確保したメモリの解放を どうすればよいのかわかりません。
722 :
721 (2/2) :2011/05/28(土) 23:49:40.87
解放はしなくても、GCが発生したタイミングで.NET Frameworkが 解放してくれるのでしょうか。 それとも、DLL側にメモリ解放する関数を用意する必要が あるのでしょうか。 もしくは、C#上で解放する方法があるのでしょうか。 すみませんが、ご存知の方教えていただきたいです。
>>721 手動で解放する必要がある。.NETが解放できるのは.NETが確保した領域だけだし。
StringBuilderやっちゃうと解放するポインタが失われるからやっちゃ駄目。
IntPtrで受けてMarshal.PtrToStringAnsiとかでStringに変換。
解放はC側に解放用関数を用意するのがベストだね。
可能であればC側の関数をfunc(size_t, *ptr)にして、サイズとバッファを受け取って書き込む方法を選ぶべき
英語圏にお詳しいようで・・・ >言っちゃ悪いけどお里が知れる見解だねw コレの翻訳を、英語で書いてみしてください。
よくわからんがすげー悔しかったんだなってのは伝わってくる
>>728 挑戦してみた。
i think you feel bad so.LOL to your mind.
最近LOLっていわないかな。
dont show this message again
「英語圏では〜」 ・・・
オッサン臭いかどうかはともかく、若いのに年功序列的なガラパゴスな価値観が当然だと思ってると 間違いなく後々自分が辛いことになるよ。 人口減ってくし、日本はこれからどんどん下り坂なのに 歳食うだけでポストも給料も上がるなんてねずみ講がいつまでも維持できるわけねえだろ。 真面目な話。 しかし搾取されてるだの老害だの、こういうねずみ講システムの被害者ぶってる奴に限って こんな腐ったシステムに自分も乗っかる(乗っかれる)つもりでいるのは頭悪いのか?
長い。三文字で。
年功序列的な若いガラパゴスなのに価値観が間違いなくオッサン臭いが当然だと思ってると後々自分が辛いことになるよ。
頭悪い
年価後
LINQいいよね〜
調子悪
悔しかったろうけど、顔上げろよ。
ぃゃ 腕上げろよ?
スレ違いする人間はプログラムとか以前にクズ以下で生きる価値なしのヘリコバクターピロリ菌
743 :
デフォルトの名無しさん :2011/05/29(日) 07:51:28.53
ソース開いたら.cppとか出てきたんだが
>ソースは地獄です。今の俺には分かりません。= 開発できません。 ワラタ
MFCとか二度と見たくない
MFCの命名規則が気に入らん
C++のコード同時に使いたい場合はC++のプロジェクトを追加してDLLとしてC#から使うしかないんですか? このファイルはC++でコンパイルして、このファイルはC#でコンパイルと一つのプロジェクト内でコード状態の時から連携できないんでしょうか?
C#とC++の混在プロジェクトなんてあったらソースは地獄です。
Source Inferno Programing, S.I.P.
このイカれた時代へようこそ
>>753 コード状態からの連携はそれでも無理だよ
利点と言ったらアンマネージドコードからマネージドコード呼べるくらい?
逆はc#でも出来るから、c#より複雑な割に使い所が少ないよ
言語の合いの子って使いにくいだけな気がするな
ネイティブのクラスを扱える …まあ言うほどのメリットでもないか
言いたいことは分からんでもないが「ネイティブのクラス」って表現はどうかね
C#からDirectXを使う場合どうすればいいんですか
SlimDXかXNA
DirextShowとcomputeを使いたいんです
DirextShowは既にDirectXファミリではありません
DirectX Compute Shaderは自力でラッパーを書かないとダメそうですね XNAはDirectX9ですし 残念ながら、あなたには無理です
可変長のbyte配列からある位置より\0が見つかるまでを文字列として取得したいのですが byte[] msg; fixed(byte* p = &msg[0]) string str = new string((sbyte*)(p + 0x1b)); こんな感じの内容なのですがunsafeを使わずに実現するにはmsgを1つずつ調べて長さを求めた後変換するしかないのでしょうか?
str.replace('\0', ' ').trim();
'\0'で区切られてるような奴だったらIndexOfとSubString
後ろが'\0'で埋まってるなら
>>764
指定したトップレベルのウィンドウハンドルがTopMostウィンドウかどうか調べるにはどうすればいいですか?
GetWindowLongでWS_EX_TOPMOSTが付いてるか確認
そしてSetWindowLongで勝手に解除
GetWindowLongPtrのことも思い出してやって
WS_EX_TOPMOSTが何番なのかどうやって調べればいいんですか?
771 :
デフォルトの名無しさん :2011/05/29(日) 17:34:23.72
親切過ぎw そこまで行くとクレクレ君の奴隷だな
ネットで調べるのが普通なんですか? C++のプロジェクトを追加しておいて値を知りたい文字にカーソルを合わせるとポップアップで値がわかるんですが C#だけで調べる方法はないんですか?
そもそもC#の機能じゃねーもん
775 :
デフォルトの名無しさん :2011/05/29(日) 17:47:12.05
>>773 WS_EX_TOPMOSTなどはC#では本来使わないからねえ
なので調べる必要がある
次は フラグが立っているかどうやって調べればいいんですか だ
そこまでして無理にC#から使う必要ないですよね あきらめてC++CLRからDLLで連携することにしました ありがとうございました。
>>764 ,765
なるほどせこせこ切り出すより全部文字列として取得してから詰めたほうが分かりやすいですね
後ろが\0で埋まってるわけではないので今回はIndexOfでやることにします、ありがとうございました
もしかすると ヘッダーファイルってなんですか かも
780 :
デフォルトの名無しさん :2011/05/29(日) 17:53:11.25
>>777 そういうことじゃないけどねw
なるべくならVC#で楽するっていうのも手だし
エクスプローラで複数ファイルを一度に開く際、Mainの引数では ファイルの一覧をすべて取得できませんが、どのようにすれば 一覧をすべて取得できますか?
C++ .NETでは #using <mscorlib.dll> というのを C#ではどういう記述なのか疑問
783 :
デフォルトの名無しさん :2011/05/29(日) 18:01:14.06
>>781 Explorer側が対応してないから無理
>>784 すいません、書き方が悪かったですね…
起動時の引数以外の方法で構いませんので、一覧を取得する方法
を教えていただけますか?
まだ書き方が悪いようだけど? 質問の趣旨がいまいちw 自前の拡張子でレジストリいじれるなら MultiSelectModelで調べたらいいと思う
>>786 すいませんorz
ありがとうございます。調べてみます。
質問です。 PC2台がLANで繋がっているという前提で、 片方のPCから、もう片方のPCに何らかのメッセージを送って それをハンドルさせたいのですが 何か良い方法ありませんか? ちなみにOSはWindowsXPです。
生ソケットかWCF
790 :
721 :2011/05/29(日) 22:48:39.61
>>726 ,727
レスありがとうございます。
自分で解放しなければならないのですね。
引数を増やす、ということはできないのですが、
関数を増やすことはできそうなので、
解放する関数を追加することにします。
ありがとうございました。
ASPってどうなんですかね? せっかくC#勉強してるから、このままASPにしようかと思うんだけど、 シェアはやっぱりHTML5とCSS、JAVAScriptですか?
>>791 ASP.NETはサーバー上でHTML作って返す技術で、
最近はちゃんとHTML5にも対応してるし、
一部のコントロール(できあいのUI部品)は生成結果のHTMLがJavaScriptを使ってる。
その説明だとたぶんわかんないと思うぞ
ASP(ASP.NETの事だと思うが)とHTMLは組み合わせて使うものであって ASPにするかHTML5にするかという考え方はおかしい。 「HTML5よりJavaScriptですか?」みたいな質問。 さらにASP.NETはサーバーサイドの技術だからユーザーにとっては知ったこっちゃ無いし シェアを気にする必要は無い
くどい JSP(Java)やPerlやPHPと同類だといったほうが早い
なんでわかるかどうか判らないものに例えるのやら。 大丈夫か?
TabPageコントロール上にContextMenuコントロールを関連付けたのですが TabPage上をクリックしなくてもタブの横の何も作られていない空白部分を押しても反応してしまいます どうにかしてTabPageのボタン上でしか右クリックできるようにできないでしょうか?
ContextMenu.Show 質問する前に対象クラスのメンバ一覧ぐらい目を通すべきだ ところで忍法帳って何?w意味がわからん
2ch運営が荒らし対策に入れた糞機能だよ 2ch 忍法帳 とかでぐぐればまとめwikiでてくるんじゃないかな?
せっかくLv30まで行ったのに
802 :
798 :2011/05/30(月) 02:08:32.56
>>799 ありがとうございます。座標指定ができるみたいなのでそれを使ってみようと思います
TextBoxコントロールにしろ、TabPageにしろ、自分でコントロールを作って座標指定するときには
普通はちょっとずつ移動していくんですか?いい方法教えてください
>普通はちょっとずつ移動していくんですか ちょっとよく分からないです フォント等によってスケーリングされる機能はある あとはコンテナとクライアント座標の関係を調べてみては
804 :
802 :2011/05/30(月) 16:21:37.32
>>803 例えば
TextBox tb = new TextBox();
〜〜〜〜省略〜〜〜〜
tb.Location = new Point(128, 128);
自分でコントロール作って、座標指定するときにちょっとずれちゃったりずれたりして
ちょっとずつ座標ずらしながらやっていくんですが・・・他の人はどんな方法でやっているのかなと思って聞いてみました
あと
>>799 のレスを見てMSDNライブラリを参考にしてやってみたんですが
ContextMenuStrip menu = new ContextMenuStrip();
ToolStripMenuItem m1 = new ToolStripMenuItem();
ToolStripMenuItem m2 = new ToolStripMenuItem();
menu.Size = new Size(100, 100);
menu.Text = "";
menu.Show(10, 10);
m1.Name = "m1";
m1.Text = "メニュー1";
m2.Name = "m2";
m2.Text = "メニュー2";
this.ContextMenuStrip = menu;
menu.Items.Add(m1);
menu.Items.Add(m2);
Form1にContextMenuStripに設定してやっているんですが、どこを右クリックをしても表示されしまいます……
絶対値指定なんてやらなくなったからわかんない
XMLシリアライズで違うXMLファイルを指定してDeserializeでエラーが出るのを回避するにはどうすればいいでしょうか 例外も出ずどうしていいかわかりません
>>2 を使って(デ)シリアライズしている周辺のコードとシリアライズしているクラスとXMLそのものを見せろ
>>806 IDE上で動かしている時の話をしてるなら、そのまま[F5]で継続でOK。
サポート外のメッセージボックスを表示させたいんです
意図的に読み込んだ別xmlファイル
<?xml version="1.0"?>
-<FileExtendedInformationClass xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance " xmlns:xsd="
http://www.w3.org/2001/XMLSchema ">
<fileExList/>
</FileExtendedInformationClass>
コード
public SaveClass sc = new SaveClass();
System.IO.FileStream fs;
sc = new SaveClass();
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer( typeof( SaveClass ) );
fs = new System.IO.FileStream( ofd.FileName, System.IO.FileMode.Open );
try
{
sc = (SaveClass)serializer.Deserialize( fs ); //ここでXMLドキュメント(2,2)エラーで止まる
}
catch( InvalidCastException exc )
{
System.Diagnostics.Debug.Print( exc.Message );
MessageBox.Show( "サポート外" );
fs.Close();
DataCB.SelectedIndex = 0;
return;
throw;
}
クラス public class SaveClass { public string Info = "識別 0"; public List<string> Data = new List<string>(); }
811 :
デフォルトの名無しさん :2011/05/30(月) 22:17:46.10
>>809 >>807 の指摘が伝わってないなw
長いコード貼るのなら
>>2 のコード晒しサイトつかったらという
アドバイスなんだから
シリアライザそのもののエラーは たぶんInvalidOperationExceptionで拾えると思う 忍法帖リセットされたのに1KBもよく貼れたもんだ
拾えました! chatchはエラーを全部拾うものかと思ってました ありがとうございました
814 :
デフォルトの名無しさん :2011/05/30(月) 23:07:08.36
今日からEntity Frameworkを使い始めたのですが、LINQ to Entityで行ロックはどうやるのですか?
Entity Frameworkって、そもそもDataTable的なin-memoryキャッシュと 楽観的同時実行制御が基本じゃなかったっけ?
マウスとペンタブレットを同時に使う場合 ペンタブレットデバイスでのカーソル位置とマウスのカーソル位置を共有させないで ペンタブレットの方は完全にソフト側から制御してメッセージを全て特定アプリケーションにだけ送られるようにするにはどうすればいいですか?
reflectorの期限が切れた
14日間トライアルとかいうのを落としたらメールで登録したら6.8Freeが入った
819 :
デフォルトの名無しさん :2011/05/31(火) 13:07:40.62
>>814 の便乗ですが、
using (TransactionScope transaction = new TransactionScope())
{
//なんでこれでトランザクションがかかるのですか?
}
820 :
819 :2011/05/31(火) 14:02:21.02
EDMで循環参照(自己参照)の書き方もわからないです
test
IListはどういう時に使うんですか?
インターフィェイス経由で扱いたいとき
まあ、実体持ったクラスで公開するよりインターフェイス介した方が アセンブリ間の依存度減るから、 プロパティの型とかでリスト機能使いたかったら IList<T> で公開する。
いえーいインターフィェイスさんぱねぇーす
インターフェイスで受け取ると使う人間の意図が分からないから云々ってきちがいを最近見た
graphicsで描画したイメージを矩形として保存しておき、 その矩形の任意の領域をコピーして別のgraphicsに貼りつけて 描画したいんですが、そういうことできますか?
GraficsにFromImageってあんだろ Bitmapを作成してFromImageでGraphicsを作成してそこに保存するのが手軽
>>827 いやいや、意図以外の情報消すのがインターフェイスの利用なのにw
ただ、でも、過剰にインターフェイスにし過ぎて、必要な意図まで消しちゃう場合もあるにはあるのよね。
メソッドの宣言に表れない情報ってのもあるんで。
>>819 裏で勝手にtransactionとその内側のSqlConnectionが連携してるとか、
なんかキモいよね。
いまいちその辺りの内部挙動でいい説明っての、見たことないのよねぇ…
832 :
デフォルトの名無しさん :2011/05/31(火) 16:59:34.43
>>831 ほんとに動いてるのかよって疑いたくなるね
833 :
デフォルトの名無しさん :2011/05/31(火) 17:09:01.37
>>831 ってusing使わないで↓みたいにdisposeを明示的に呼んでも同じ?
TransactionScope t = new TransactionScope();
t.Dispose();
つーか、TransactionScopeをnewした瞬間がbegin tran?
わけわからんね。
834 :
デフォルトの名無しさん :2011/05/31(火) 17:09:24.00
FindWindow( null, "Window1" ) からWindow型に変換する方法ありますか? どう考えても (Window)FindWindow( null, "Window1" ) できそうなんですがなぜかできません
どう考えても出来ません
WPFしか触ったことないもん! というC#ユーザーも増えているのだろうか
余所のプロセスなんだろうしひっくり返っても無理 お前を生け贄に捧げても無理
なぜできないんですかWindowを探して見付かったものはWindowじゃないどうしてわかるんですか
説明すると100年かかるからしない
WPFしか、っていうかハンドルの概念がないのだろ 一応同じプロセスなら var w = (Window)HwndSourcve.FromHwnd(handle).RootVisual;
ネタにマジレスすんなよ
844 :
デフォルトの名無しさん :2011/06/01(水) 09:14:49.04
SqlConnectionとかでトランザクションをBeginした後ExcuteNonquery するとして トランザクションはどのタイミングでかかりますか?
846 :
デフォルトの名無しさん :2011/06/01(水) 09:15:46.85
そりゃbeginした瞬間だろ
特定の操作をするとサイズが大きくなるコントロールがあります。 大きくなった時にフォームからはみ出てしまうと、はみ出した部分が表示されなくなってしまいます。 はみ出した分も表示されるようにするにはどうしたらよいでしょうか。 イメージとしては、フォームの最下部にDateTimePickerを配置すると、カレンダーはフォームの外にはみ出して表示されますが、これが理想です。
ようするにトップレベルウィンドウにすればいいんじゃね? Control.SetTopLevel ただし親が設定されてると例外出た
>>844 TransactionScopeがらみはそこのどこのページ?
あと、Get StartedじゃなくてDeep Dive的なのは無いの?
マルチすいません。 教えてほしいんですが。 C,C++なら typedef union { int a; short b; double d; }Union; としたらUnionのサイズはsizeof(double)で Union u = 1;としたら、aに1が入ると思うんですが。 C#で [StructLayout(LayoutKind::Explicit)] ref struct Union { [FieldOffset(?)]int a; [FieldOffset(?)]short b; [FieldOffset(?)]double d; }; と宣言したとして、?の部分には何の数値を入れればよいのでしょうか。 ヘルプを見ると「フィールドの物理的な位置を示します。」 と書かれているのですが、物理的な位置という意味がわかりません。 どなたか教えてください。
バイトオフセットだ
>>850 メモリ上のレイアウトで、そのメンバーをどこに置きたいかを指定する。
Cのunion的に使いたかったら全部同じ数字入れる。
その例だと、?のところは全部0でOK。
853 :
デフォルトの名無しさん :2011/06/02(木) 08:18:49.26
すみません。C#半年くらいの初心者です。 C#でゲームを作る本を探している最中なのですが、一つ教えてください。 XNAという言葉がよく出てくるのですが、C#とXNAってどういう関係になるのでしょうか? XNAで作ったゲームはXBoxでしか実行できないのでしょうか? 私はXBoxは持ってないので、PCのWindows上でできるゲームを作りたいです。 お勧めの参考書とかあれば教えてください。
それくらい自分で調べろよ
義務教育を終わらせてからまたおいで
856 :
デフォルトの名無しさん :2011/06/02(木) 09:34:02.89
調べてはいるんですけどね。 VisualStudioのような統合環境のゲームに特化した物がXNAってことですか? で、その中で使われる言語はC#って感じですか?
ぐぐった3つめに書いてあったぞ低能クン
859 :
デフォルトの名無しさん :2011/06/02(木) 09:47:01.72
低脳なのかなー?なんかね、MSDNとかの解説もスッと頭に入ってこない。 特に概念的な解説がね。もっと具体的に説明するとか、表現が違うだろ、って感じることばかりで。 皆さんにもありません?同じ内容の本なのに、分かりやすいのと、分かりにくいのあるでしょ? だから、ここで別の表現をしてくれる人が居ないかな?と期待してるのですよ。 ググって理解できたなら聞かないってば。
XNAはけっこう難しいぞw 英語の情報とC++&DirectXのサンプルコードを読む気がなければ厳しい それでも他の言語使うのに比べれば情報はすごく多いけど WinFormsみたいなぬるま湯環境とくらべるとかなり落差がある
MSDNは英語サイトの直訳ぽいのでわかりにくいよ 開発慣れててもあんまり使いたくない まあ探せばあるよ あと慣れてくれば英語圏のフォーラム探した方がいい場合が多い XNAって国内だとあんまり使われてる印象がないんだよな
MSDNも最近は割と良心的だと思うんだけど、 分からないなら他のサイトを探すなり本を買うなりすれば?
英語さえいけるならXNAほどwebでゲーム作りのまとまった高品質な情報が 大量に入手できる環境はないと思う 英語できないならC++/DirectXの書籍を買ったほうがたぶん楽
864 :
デフォルトの名無しさん :2011/06/02(木) 10:02:01.95
C++とDirectXですか。 何冊か、ゲーム製作本のレビューよみましたが似たようなこと書いてました。 結局、ネイティブなAPIをC#で扱ってるだけ、みたいなこと。 XNAはそういうのを、ユーザーに意識させないインターフェースってことですか?
まさに今XNAで書いた昔のコードを 別のライブラリに移植してる最中 XBOXで出すんじゃなければXNAはメリット少ない
866 :
デフォルトの名無しさん :2011/06/02(木) 10:05:21.18
>>864 windows上の話だと単なるDirectXラッパーのようなものでしょ
あとゲームループの基本ループはXNA側で処理されてて
所定のタイミングで呼ばれる関数部分に自分でコード書いていくっていう発想
867 :
デフォルトの名無しさん :2011/06/02(木) 10:10:59.86
ん?
>>865 >>866 お二人に話を総合すると、Windows上のプログラムなら
XNAじゃないほうがいいのでしょうか?
>>867 さあ・・・
どういうゲームを作るかにもよるしなあ
2DゲームならC++&DXライブラリという手もあるし
でもwindows PhoneだとSilverLightで開発することになるんだけど
ゲーム作る場合はXNAも使えるしねえ
WP7がどこまで伸びるかだけどw
ちなみにどういうゲーム作る予定なの?
XNAでもよいし、XNAじゃなくてもよい 開発者がやりやすい方法でやればよいのです
なんでもいい OpenGLだろうとDirectXだろうとXNAだろうと基本は似たようなもんだから無駄にはならん いまどき3Dレンダリングの知識は3D使わなくてもどのみち必須 XNAはC#と.NETが使えることに意味があるんであって、 XNAを使う部分はC++からDirectX叩くのとほとんど変わらん
871 :
デフォルトの名無しさん :2011/06/02(木) 10:17:19.38
>>869 まあそうだねw
結局どこでゲームを展開したいかによって、最悪は新しく言語を習得しないといけないんだし
でもゲームの基本的な流れはどのプラットフォームでもそれほど変わらないしなあ
XNAの欠点は、ゲームに特化しすぎてるくらいか まー画像処理やるなら、ゲームも何も無いんだけどな C#でDirectXやりたいけどXNAは使いたくないなら、SlimDXでも使っとけ
はい
Silverlight5はXNAの描画APIの一部をサポートするよ 頂点バッファとシェーダだけという漢なAPIだけど
XNAは良くも悪くもXNAのフレームワークを持ってるので フレームワークに頭使いたくない素人でもなんとかなる GUIもあるしな GUIを一通りフルスクラッチしようとすると面倒すぎる、ボスケテ
876 :
デフォルトの名無しさん :2011/06/02(木) 10:28:20.49
どっちでもいい、という人は哲学的に「全ての経験は無駄にならない」的なことを言ってるんですかね?
今
>>865 さんの話が気になってて、
XNAで作ったプログラムはXBoxじゃないと使えないのですか?
なぜ
>>865 さんは他のライブラリに移植させようとしてるのでしょうか?
XNAで作ったプログラムを動かすには、なにか専用のランタイムか何かがひつようってことでしょうか?
XNAで作ったものをWindowsで動かそうとすると XNAのランタイムが必要になる
878 :
デフォルトの名無しさん :2011/06/02(木) 10:32:39.19
なるほど。やっぱり、そういうのがあるんだ。
>>875 ならSilverlight5でいいじゃん
空域問題なしで普通にGUIの中でXNAの描画が使えるよ
今までなかった理想的な形
880 :
デフォルトの名無しさん :2011/06/02(木) 10:33:47.35
Silverlightは最近は環境良くなったのか ちと調べてみるかね
TabPageとTextBoxをList<T>で作ってTextBoxをTabPage下にTextBoxコントロールを追加してるんですけど TabPageを削除するときにTabControlのTabPagesプロパティのRemoveメソッド使って削除するとTabIndexがずれて、正常に動かなくなるんです…… どなたかいい解決方法知らないですか?
5年くらい前に何かのHPで「数年後はSilverlightの新型(WPF)が一般的になり、.NETは全てWPFでプログラミングされるようになる」って断言してた記事を見たなー
10年くらい前に何かの雑誌で「数年後は生産性の高い.NETがすべてのプログラムで使用され、 OSのAPIは全て.NETで置き換えられるようになる」って断言してた記事を見たなー
Silverlight5でXNAはさすがにまだ早いと思う。 βが出た当初よりは3Dエンジンの開発が進んできてだいぶ良くなったけどね。
昔DrDobbsのsilverlight game contest でサンプルのソース公開してたんだが 見に行ったらもうなくなってた 誰かもってない?
VS2010のサービスパック1もう出てたんだな 気がつかなかった
890 :
デフォルトの名無しさん :2011/06/02(木) 13:21:17.54
892 :
888 :2011/06/02(木) 13:47:32.56
894 :
888 :2011/06/02(木) 14:14:10.05
結構人数いるのなw 14ダウンロードw
ごめん、そのうち10回くらいは俺だわ
なにやってんだテメー
ときどきファイルを差し替えてるんじゃないかと気になって
めんごめんごww
ビルド実行した時と、セットアッププロジェクトからインストールしたものを実行した時とアプリの動作が違うんですが何が起こってるんですか?
デバッグモード?
>>900 デバッグ時のEXEにはデバッグ情報が内蔵されていてassartなどの危険回避コードが含まれていることがある。
それらはリリース時に削除されて制限を開放されるので、デバッグ機構に依存したコードはそこでとまる可能性がある。
そんなざっくりした質問に答えられたらエスパー認定。 何が起こってるんですか?って。 第三次大戦だ、とでも言ってほしいのかなw
違うんです リリースビルドしたEXEファイルをそのまま配布して実行jした時は異常がでないんです なので、セットアッププロジェクトに原因があるとしか思えないんです
配布先はXPモードで、異常個所はウィンドウのサイズと位置を変更するコードを実行した時、ウィンドウの変更前の描画が残像するんです
すいません再起動したら直りました 初めてなもので原因が無限に頭の中で広がってしまいすいません
互換性の問題かな?? デスクトップに残るならXPモードの問題。アプリケーションに残るのなら再描画タイミングの問題。 としかいえないな〜。
あらま。ま、うまくいってよかったよ。
directXでMIDIを再生したいのですが何てキーワードのものを使うのでしょうか? Managed DirectXというのでしょうか?
MCI
DirectMusicってもう廃止されてるぞw まあMIDI自体がもう…
ツールボックスにtextboxを置きました これをウィンドウの大きさに合わせてサイズを調節する為には何のプロパティで設定したらよいのでしょうか?
ウィンドウの大きさに合わせてサイズを調節する、ってどういう意味だよ。 そんなアバウトな理解でコード書けるの?
Anchorプロパティ Dockプロパティ
>>914 おおお!!!Anchorで上右下左設定したらウィンドウのサイズに合いました
ありがとうございます
>>915 単にフルにできればいいなら
Dock を Fillにすればいいだけなんだけどね
ツールボックスからフォームにWindowsMediaPlayerを貼り付けました axWindowsMediaPlayer1のURLプロパティにファイルへのパスを設定しました DockプロパティにはFillにしてフルにしました これで起動すると勝手に動画が流れます つづき
そして起動したプログラムを最大化してみたのですが、動画表示部分(映像)がウィンドウに合わせて大きくなりません 映像の周りの黒い部分はウィンドウのサイズには合いますが。。。 ウィンドウのサイズに映像部分のサイズをあわせる事って出来ませんか?
>>918 それはオーバーレイが追従してない感じだね
stretchToFit?
921 :
デフォルトの名無しさん :2011/06/03(金) 23:06:03.50
922 :
デフォルトの名無しさん :2011/06/03(金) 23:08:14.35
C#でWindowsの設定をしたいと考えています。 具体的には、「マイ コンピュータ」右クック>「プロパティ」>「詳細設置」>「設定」 の「パフォーマンスを優先する」という設定をC#のアプリケーションから 行いたいのですが、どうしたらよいでしょうか。
>>920-922 stretchToFitをtrueにして解決しました
完全にウィンドウに合わせるのは無理ですね、出来ても映像がおかしくなるからやらないほうがいいのでしょうか?????
オーバーレイの無効がいまいち探せませんでしたがURL先はたいへん参考になりました
ありがとうございます
925 :
デフォルトの名無しさん :2011/06/03(金) 23:51:48.45
ちょっと調べてたらGUIGraphicsContextというのにOverLay関連を設定できそうだけど GUIGraphicsContextの所在がよくわからんのでC#から使えるのすらわからんw
AnyCPUからx86に変えたら System.Diagnostics.Debug.Print(); が機能しませんこれはあきらめるしかないんですか?
OSもよくわからんし64bitなのか32bitもよくわからんし それで質問するほうがどうかしてる
>>927 ありがとうございます
この方法ではある1つのファイルに対してのファイル名を取得する事はできるようです
string[] files = System.IO.Directory.GetFiles(@"C:\test", "*");のように
あるフォルダ以下のファイル名だけ取得するにはどうしたらいいでしょうか?
途中送信してしまいました…ごめんなさい。 (続きから) いざ参照させてみようとすると、 ・URLのドキュメントは既知のドキュメントの種類として認識されませんでした。 ・'DISCOドキュメントからのレポート'(URL中略)で探索ドキュメントが見つかりませんでした。 ・ドキュメント形式を認識できません。 …などと色々エラーメッセージが出てきてしまいます。 解決方法を教えていただけないでしょうか、宜しくお願いします。
WebのAPIっていうのは、URLに引数を埋め込んでHTTPでリクエストしたら 処理結果が返ってくるというだけのもの。web参照とかいらない。 URLへの引数の埋め込み方はAPIによるし言語関係ないから知らん。 URLができたらHttpWebRequestを使って結果を取得するだけ。
>>933 そもそも「web参照を使う」という方法が間違っていたということなのですね…恥ずかしい…
素早いお答えをありがとうございます、意味のある恥をかけて良かったです
すまんXML-RPCか 引数はURLじゃなくてリクエストのbodyにXMLとして書き込まないとダメ XML-RPC.NETというライブラリがあるみたいだから試してみたら
>>935 はい、自分も先ほどURLのAPIを読み返して「XML-RPCってなんだろう?」
と思い色々探して先ほどXML-RPC.NETに至ったところです
他者のサンプルなどを参考に進めていきたいと思います。
本当にご丁寧にありがとうございます!
リスとぼっくで選択されている所の文字列を表示したいのですが MessageBox.Show(listBox1.SelectedItem);って書いたら エラー 1 'System.Windows.Forms.MessageBox.Show(string)' に最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。 エラー 2 引数 1: 'object' から 'string' に変換できません が出ます どうやったらメッセージボックスを表示できますか?
キャストする どうやってキャストするんですかと書き込んだらお前のパソコン壊す
イベントについて VC#の右下のプロパティでMouseClickイベントとKeyDownイベントにexecJikkouって名前をつけたら勝手にForm1.csにコードが付きました ビルドして実行するとそれぞれのイベント処理を実行しますが、メソッド名がexecJikkou同じなのになぜちゃんとそれぞれのexecJikkou内に書いた処理が実行できるのでしょうか?
日本語でOK
>>939 Form1.Designer.csの方にイベントハンドラを設定するコードが追加されてる
確認してみろ
Designer.csを見たら this.listBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.execJikkou); this.listBox1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.execJikkou); ってなってました。メソッド名ってかぶらないようにつけておいたほうが良いですか?
同じ処理を行うなら問題ない
>>943 まじすか
同じ処理はしてないのですが名前はかぶってるのにちゃんと別々の処理をしてるのです
>>945 じゃあそれでいいじゃん
あなたの思惑通りに正しく動いているなら、それ以上何か問題があるの?
>>934 C#とかJavaの世界は、どういう通信方式でどういうデータ形式で…ってのをきっちり決めるから
Visual StudioとかでWeb参照するだけでAPI利用できる。
LLな世界だと、その手の規約なく、オレオレ仕様なAPIが多いから、
自前でURLにアクセスするコード書かないと行けなかったりする。
そういう文化。
949 :
デフォルトの名無しさん :2011/06/04(土) 12:56:25.52
個人の自由だけどexecJikkouって名前は何とかならない物かと・・・
>>942 それで別の処理される?
スペルミスしてるとかなく?
元のコード完全にコピペ?
あと、execJikkouって、犬ドッグとか猿モンキー的な造語?
それはVBのせいじゃないだろw
じゃあ訂正する VBの仕事してるとそんな奴ばっか
955 :
デフォルトの名無しさん :2011/06/04(土) 13:28:10.06
キーボードを押してる間だけ処理を実行するのですが、 これをキーボードを離したときにまだ実行してない溜まってる処理をキャンセルする方法ってございませんか?
>>945 メソッドのオーバーロード でぐぐれカス
でもイベントハンドラにそんなキチガイみたいな名前つけないほうがいいよ
VisualStudioならイベントの欄をダブルクリックすればデフォルトの名前つくから
そのなかでexecJikkouでもexecShokeiでも好きな名前のメソッドを呼んだらいいよ
>>956 MouseDown,MouseUpでフラグの上げ下げして
処理してるメソッド内でそのフラグみれば?
メッセージキューにWM_LBUTTONDOWNとか溜まってたらどうなるか知らんけど
>>942 引数が違うだろうからそこから推論されてるんじゃね?
俺も試してみたが引数が違うだけで動いた C#ってきもすぎ
>>960 それは多重定義が理解できない君がアホなだけだよ。
>>960 C++やJavaをやったことがないのか?
splitContainer1.panel1を非表示にしたときに splitContainer1.panel2をウィンドウいっぱいに広げるのは何のプロパティを設定したら出来ますでしょうか?
>>961-962 動的型付けでオーバーロードが仕様上意味をなさない言語に特有の患者です
お察し下さい
>>967 別に悪くないよ
そんなに自分を卑下しないで
お前らは俺がちょっと目を離すとケンカしたがるな いい子にしてなさい
ほね」。
Real Playerの動画再生ってC#で出来ないんですか? 音声しか再生できないのですが・・・
今日も糞みたいな質問ばかりだな ママのおっぱい吸ってたほうがいいような想像力のないガキばかり
終了時にForm1のサイズと位置をファイルに保存して、 起動時にファイルからForm1のサイズと位置を読み出して、位置とサイズを復元するには何を使えばいいですか?
テンプレ修正したほうがいいな ×なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。 ○なお、テンプレ2行目が読めないクズ回答者は邪魔なので後述のC#相談室に移動して下さい。 ◎なお、テンプレ2行目が読めないクズ回答者は誰も必要としていないので後述のC#相談室に移動して下さい。
誰が立てるんだか このまま立てなくてもいいんじゃねえか?
一応つっこんでおくけど、テンプレの2行目を穴があくほど読んでも レベルの低すぎるアホな質問者を罵倒禁止という解釈は不可能だな。 まあ、どんなテンプレだろうと合意した覚えもない縛りに従うつもりは一切ないけどねw
テンプレではなくジェネリクス
型パラメータはどこですか?
>>979 つっこみになってるのか理解に苦しむが
少なくともレベルが低い相手に無駄なレスをしてるお前のほうがいらない子
盛り上がってると思ったらオーバーロードのことだったのか
この流れなら聞ける AnyCPUからx86にビルドを変更したらデバッグプリントが出力に出力されなくなりましたどうしてですか? win7、64bitOS、VisualStudioVer2011Proです あと、XNAのクラスライブラリをAnyCPUでビルドできません、C#、XNADLL共にx86だとビルド出来るんですがどうなってるんですか?
その話に続いてるんですが、x86でビルドにするとデバッグ情報が出てこないんです なので、XNAはDLLだとAnyCPUでもx64から呼べるということなのDLLにしても呼べないんです XNAはDLLだと絶対呼べるらしいですがもう疲れたので、x86にしたのですがデバッグ情報が出てこないんです
managed directxってもう開発してないから今はXNAかSlimSDKの2択が主流ですか?
左様でござる
ちょっとしたことで一部でDirectX使いたいだけなら そこだけC++/CLIかネイティブのC++で書いてDLLにしたほうが手っ取り早い
DirectSoundだけが使いたいんですが、自分でDLL作ったり出来るまでのスキルは持ち合わせていません この場合は何のライブラリを利用するのが得策ですか?
DirectX AudioやXAudioって基本的に「書きこんだ波形データを再生する」だけなんだぞ?そんなの扱える? 音鳴らしたいだけならDirectXなんか面倒なだけ WindowsAPIだけでいい
DirectSoundでMIDIを鳴らしたい(独特の音なので)のですがWIndowsAPIのほうが簡単ですか?
そもそもDirectSoundでMIDIは鳴らせない MIDI鳴らせるのはDirectMusicだけどすでに廃止されてるから使っちゃダメ WindowsAPI一択
独特の音とか言ってるところみると、MIDIが何だかよく分かってなさそうw
確かに謎だなw どうやってMIDIで独特の音を鳴らすのか
DirectMusicで鳴らせるのでしたか、失礼しました DirectMusicのソフトウェア音源でMIDI鳴らすという事です
何度も言うがDirectXのMIDIは終わっているし無理して使うメリットもない。 .NETから使えるメジャーなラッパーも無い。
WindowsAPIを調べてやってみることにします
x86でデバッグ出力をする方法を教えてください!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。