ふらっとC#,C♯,C#(初心者用) Part45
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
>>980 を踏んだ人は新スレを建てて下さい。
>>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。
前スレ
ふらっとC#,C♯,C#(初心者用) Part45
http://pc12.2ch.net/test/read.cgi/tech/1253522504/
あ、タイトル間違えた 正しくはPart46 次ぎ立てるときに直します
>>980 (注) 当スレはPart46、次スレはPart47です。
これで大丈夫だろ
◆宣伝、広告◆
腕に自信のあるプログラマは、以下のコンピュータ大富豪大会に参加しましょう。
ひろゆき杯コンピュータ大富豪大会
http://uecda.nishino-lab.jp/2009/ ○What's UECda?
大貧民(または大富豪)は、我が国で最もポピュラーなトランプ・ゲームのひとつでしょう。
このゲームは、1960年頃に日本で生まれたと言われており、海外では、ほとんどプレイされていないようです。
本大会は、その日本固有の人気トランプ・ゲームである大貧民を、人が直接プレイするのではなく、
プレイするコンピュータ・プログラムを作成して持ち寄り、対戦させる大会です。
主催
電気通信大学
C#はC系統だから大丈夫じゃない?
別にロジックだけの勝負だから実現できれば何でもいいとは思うんだけどなぁ 速度面が・・・と言われてもそこまで遅くはないだろうし
別にC#にこだわる必要もないけどな どうせJava使ったとしてもCっぽいコード書くだろうし
構造体にintとdoubleのメンバ変数があって、 フォームのラジオボタンで指定したメンバでソートしたいのですが、 Sortメソッドでやろうとすると、メンバ変数の数だけIComparerクラスを作る以外にうまい方法はありますか?
リフレクション使ってプロパティに文字列でアクセスしてIComparable.Compareで比較。 あと,構造体は特殊な場合に使うもので普通そういうのにはクラスを使う。
大富豪は作る気がしないな実用性がないし 対人でできるようにするにはパケット監視してやらないとだめだしなー それよりテラリウム復活させてほしいわ
>>12 すいません、よくわかりません
class Sample {
int data1, data2;
double data3;
}
みたいなクラスで、
Sample[] S = new Sample[10];
と宣言してあるのですが、
ラジオボタンの情報をどうやって渡せばいいのでしょうか?
シムアースが好きだった
class Sample { int data1, data2; double data3; public bool RajioBotanChecked; } S.RajioBotanChecked=ラジオボタン.Checked;
IComparer作らなくても Array.Sort(S, (x, y) => x.data1.CompareTo(y.data1)); これだけのこと
18 :
デフォルトの名無しさん :2009/10/16(金) 20:21:13
>>999 LINQサンキューです。
>>998 そうですか。
そうすると、List<>を使って読み込んでフィルタリングする、という処理はこれでオーケー?
Contains("good")
をメソッドに取り出す、というのは、メソッド化する、ってことですか?
List<string> photolists = new List<string>();
string[] photofiles = Directory.GetFiles(@"c:\data", "*.jpg", SearchOption.AllDirectories);
foreach(string photofile in photofiles) {
selectGood(photofile);
}
private void selectGood(string photofile){
if (photofile.Contains("good")){
photolists.Add(photofile);
}
}
とかって話?
Array.FindAllだから違うか。違うよな〜、きっと。
string[] photofiles = Directory.GetFiles(@"c:\data", "*.jpg", SearchOption.AllDirectories);
string[] photolists = Array.FindAll(photofiles, delegate(string photofile){return photofile, Contains("good")});
とかですか?
丸写しですが、delegateってなんだ…。
デリゲートはイベントハンドラみたいなもの あるメソッドが実行されると自動で呼び出されて指定の処理をする
ていうかMSDNでArray.FindAllのサンプルコードぐらい読めよ なんでいきなり匿名メソッドとかに手を出すんだよ
まあLINQ使わないんだったら普通にforeachでフィルタリングした方がいいよ わざわざFindAllのフィルタのためのメソッドを外に定義したりしたら分散して余計にわかりづらくなる
lambda使えばいい
>>18 まじでmsdnをみろw
前回の配列にするLINQのToArray()をToList()にするだけだろ・・・。
>>18 LINQが嫌いなら↓でもできるけど意味わかるか?
Array.FindAll(photofiles, (s => s.Contains("good")));
この1文を無名delegateを使って書いてみ?
foreachが取り出す順番っていうのは法則があるのでしょうか? 例えば配列をforeachした場合、要素のはじめから取り出す保証はあるのでしょうか?
>>26 それはコレクションのオブジェクトの仕様による。
配列やListであれば先頭から。
Java Language Conversion Assistant 3.0 ってもう手に入らないの?
>>27 どのような仕様だとどのような順番になるんでしょうか?
イテレータの実装がコレクションを先頭から返していれば、だろう
>>29 順番が気になるなら、使いたいコレクションの説明を読めば良い。
というか、そこまでRDB的な処理を求めるなら、 実際にSystem.Data.SQLiteでテーブル作っちゃったほうが早いような気がするんだが。 ファイルDBにしたら勝手に保存もされるし。
34 :
デフォルトの名無しさん :2009/10/17(土) 01:01:17
>>19-24 まてまてみなさん。初心者なのですよ。
LINQが好きも嫌いもない。あえていうと、
・List<>は覚えたい。
・delegateは生まれて初めて触ったところ。
・msdnはときどき見てるけど読みにくいのでほとんど理解できない(今回は見てない)。すまん。
・Array.FindAllも生まれて初めて触った。ITProのソースをそっくり流用してみた。(匿名メソッドって、どれが匿名メソッドなのかもわかってない)。
・LINQはすごいと評判なので覚えたいが、まだ早いといわれた。まあそうかなと思ってる。
ってところだよ。
>>25 ってわけで、無名delegateなんてはじめて聞くよ〜。すまん。
しかし、FindAllを使いたいならばPredicateを理解しなくちゃだめだぞ。 その前にFindAllはジェネリックメソッドといってだな、次のような定義になる。 public static T[] FindAll<T> ( T[] array, Predicate<T> match ) 型パラメータTは配列要素で、 string[] photofilesに対して、FindAllを使うなら T[]はstring[]、Tはstringになる。 つまり、 Array.FindAll(string[],Predicate<string>)となる。 さらにPredicateはジェネリックデリゲートと呼ばれ、 public delegate bool Predicate<T> ( T obj ) のように定義される。 ようは型パラメータTに対する比較式の結果をboolで返す機構だ。 ここでTはstringなので Array.FindAll(string[],(stringを引数にもつ比較式))となる。 ここまではOK?
そしておまえさんが匿名メソッドを使ってあらわそうとした正解は、
var photolists = Array.FindAll(photofiles,delegate(string s)
{
return s.Contains("good");
});
になる。
FindAllの第二引数(delegate〜)が匿名メソッド。
名前からわかるように匿名のメソッドだ。
通常は他に宣言しなくちゃならないメソッドをこの文の中で宣言、実行をしている。
これをラムダ式を使い表現すると
var photolists = Array.FindAll(photofiles, s =>
{
return s.Contains("good");
});
となる。delegate(string s)の表記がs=>に置き換えられる。
なぜこんなことができるかは
http://msdn.microsoft.com/ja-jp/library/bb531253.aspxを見なさい 。
さらに省略すると
(s => s.Contains("good"))
となる。
MSDNも衣替えか
KnowledgeBaseも更新されてるね。 使用中のOS以外のKnowledgeBase見るとメッセージでる。 スレッドを作ってバックグラウンドで動作させているとき、 フォームを閉じちゃうとバックグラウンド処理も終了するということですが、 たとえば、PCの電源を強制的に切るようなかんじで スレッドを終了するということですか?
うん まあ強制終了するかどうかはIsBackground次第だけど
それ、ThreadAbortExceptionくらい投げてくれればいいのにな 仕様だから仕方ないけど
Windows mobile プロジェクトを5つ含むソリューションをフォルダごと移動したら mobile cab 配置プロジェクトの依存関係がまったく表示されなくなって ビルドすると HRESULT=80004005 エラー が出ます 同じ目的で新しい配置プロジェクトを作っても問題は変わりません ターゲットプロジェクトはビルドできるし、正常に起動します どうしたらいいでしょうか?
やはりそうですか。 確かに例外とか投げてくれるとうれしいけど、 フォアグラウンドでやればええやん、って話にしかならないのかな。
43 :
41 :2009/10/17(土) 11:14:05
自己解決 移動前にコンパイルエラーを出していたプロジェクトが勝手にソリューションから外れてました それを追加して配置プロジェクトの構成で該当プロジェクトを含むようにプロパティを変更したら治りました お騒がせしました
こんにちは。どなたかC♯でBMI計算プログラムをvisual studio 2008 もしくは2005 で作成してアップしてくださいませんか・・・? そのプロジェクトフォルダ全部をアップお願いします。
そういうスレじゃないから死になさい
宿題スレ行け
BMI=体重/(身長^2) たったこんだけの式なんだがどんだけリッチなフォームなら納得してもらえるのやらw 萌えキャラが脱ぎながらアドバイスとかしてくれれば完璧かな
そのキャラをマウスで回転させたりできるようにしてくれ。 どんな角度からも見えるようにな
どうせ大学の課題かなんかだろうけど、こんなにクズが大学生なんて日本はどうなってるの?
こうなってる
ヤフーの知恵なんとかも宿題処理場化してるかんじがある。
あそこはゆとりがゆとりを助けてる慣れ合い場だろ
HTML文字列からWebBrowserを使わずに、構文解析してDOMオブジェクトを取得することってできますか
56 :
デフォルトの名無しさん :2009/10/17(土) 18:23:14
Webサーバー上のSQLサーバーにあるデータを全件(約2万件)、 データセット内のテーブルに格納し、 そのテーブルに対してSQLを発行し、 必要な条件のデータのみ(約2千件)を別のテーブルに保持したいと思っています。 このようなことを実現することは可能でしょうか? どうすれば実現ができますでしょうか? それは可能でしょうか?
>>56 2万件のデータを一度にコントロールにぶち込むなんて、アホのすることじゃね?
>>56 「別のテーブル」がSQLサーバの別のテーブルならば、T-SQL使ってサーバ側
だけで実施させるのが吉。
ローカルファイルとしてのテーブルなら、DataSetに取り込んであとは自由にどう
にでも。
59 :
デフォルトの名無しさん :2009/10/17(土) 18:52:44
ありがとうございます。 「別のテーブル」とは、同じデータセット内に予め作成するテーブルを想定しています。 2万件のデータは、月別商品別の売上データです。 C#アプリケーションで、期間を指定して、売上情報を表示させたいのですが、 期間を変更するたびにWebサーバー上のSQLサーバーのデータを取得するようにしたところ、 検索ボタンを押して結果が表示されるまでに10秒ほどかかってしまうんです。 なので、アプリケーション起動時に全データをデータセット内に保持して、 検索のつどSQLサーバーにアクセスせず、スピードを高めたいと思っています。 2万件のデータは項目数自体は20項目ほどで少ないので、スプラッシュウィンドウを数秒表示させることにより、 起動時の読込時間をカバーしたいと思っています。
それはしかたないことじゃないかな・・・ テーブルに置いちゃうのもいいけどそういった社内情報とかは常に最新のものを使った方がいいんじゃないかな? と俺だけが思うことで流される必要はない!がんばれ!
>>59 やっぱり分かってないな。
(アホ呼ばわりもう一回しようと思ったけど初心者スレだったことを思い出した)
RDBがあるときは、検索処理はRDBにやらせるんだよ。
10秒かかるって、クエリーがよっぽどくさってるか、インデックス設計がおかしいだろ。
2万件なら一瞬で取れる量だよね。 普通に設計すれば。
>>59 自分もそう言うので悩んでるところなんだ。
結論から言えば出来るでしょ。
単純に SqlDataAdpter (だっけ?)クラスを使用してデータを DataTable に受ければ
ローカルにデータを保存することが出来るし、表示するデータを絞るとかなら DataView クラスを
使えると思うし。
でも先にその 10 秒の内訳と用件/制限の確認をした方がいいと思うよ。
仮にデータの抽出に時間が掛かってるだけなら、本職の RDB よりも速くできるかわかんないし。
それなら、テーブル設計を見直した方がいいかもしれない。
自分が試した範囲だと、データの転送や表示には数万件レベルでも思ってたよりは時間掛かってなかった。
更新が頻繁に掛かるテーブルなら、(すでに言われてるけど)ローカルの古いデータを元に
処理をしたんじゃ問題が生じることもあるかも知れないし。
WebサーバーといってるからWebServiceを使ってるんじゃね? あれはうまく調整しないとパフォーマンスが出ない。
うん、そうかもしれんね。 この前9列7万件近いデータを datatable に取り込んだことあるけど なんかほんと一瞬って感じで終わってびっくらこいたことある。 キャッシュか何か効いてたのかな? 経験が全然ないからよくわかんないけど。 あるいは何かかんちがいしてたのかもしれん。 でもまぁ、月別商品別の情報ってことは 過去の販売データのまとめだろうし、 一度にとってもいいんじゃないのかな。
ManagementStudioで同SQLでかかる時間をまず計測してみ。 それで10秒かかるならSQLを見直す。 3層サーバとすると、次にWebサービスから呼び出してかかる時間を計測、次にアプリから呼んだ時にかかる時間、最後にアプリから呼んだ後にgridviewかなんかにバインドするまでの時間を計測してどこがボトルネックかを調べなさい。
>>59 おれ中学生だけど社会人でこの程度もわからない人でも仕事もらえるんだな?
最近パソコン始めたおれでもできる
インデクスはってないんじゃねぇの
>>59 仕事は会社が受けるからな。
だから優秀な人間にお鉢が回り、優秀な人間からこの業界から去っていく。
>>70 いい加減、そういうネトウヨチックな被害妄想の恥ずかしさに
気づくようになった方がいいんじゃない?
ま無理には勧めないが。
2chで自己紹介しちゃうゆとりが痛すぎて直視できない
俺も中学生だけどこのスレの中でいちばんゆうしゅうだと思うぜ。
>>71 一部のできる人間ができない人間を食わせているのは事実だろ?
あおりでもなんでもなくね。
>>74 そりゃそうだが、そんなの「パレートの法則」なんて言われるぐらい当たり前で
どこの組織にも見られる現象でしょ。
>>70 がそうだと断言はしないが、なーんか自分が(前の)会社で上手くいかなかったことを
単に「合理化」(防衛機制って奴ね)しようとしてるようにも見えちゃうよね。
そうでなくても、
>>70 のような文章には、なんか「2chで俺は世の中の真実に目覚めた(マスゴミ?w特亜?w)」
ぐらいの勢いで思ってるウブなネトウヨのような青い臭いを感じて、読んでるこっちが
気恥ずかしくなるものがあるよ。
日本語で
両方とも十把一絡げにしようとしてる時点で青い
顔真っ赤な75の反論↓
類は友を呼ぶ & 同族嫌悪 って事だな。
え?おれ?
何の話?
俺だよ俺
85 :
デフォルトの名無しさん :2009/10/17(土) 21:06:46
ふらっとで煽り合いとかゆとってるなぁ
ゆとってるって始めて聞いた
ゆとってるってなんだよ かゆとってるだろw
(´・∀・`)
煽りあいじゃなく1人がファビョってるようにみえる。
で、
>>68 にお手本を見せて貰いたいものだと思う自分がいる。
91 :
デフォルトの名無しさん :2009/10/18(日) 00:13:20
TreeViewのノードに、商品名を表示させて、さらにタブ(エスケープ文字?)を入れて、 価格を表示させたいと思っているんだけど、 ノードの表示名のパラメーターにエスケープ文字は使用できないのでしょうか?
TreeViewにはXMLのデータ突っ込んでるってことかな? 普通に>とかの文字ならそんなことせずに表示できると思うけど
93 :
デフォルトの名無しさん :2009/10/18(日) 00:47:49
>>92 さんありがとうございます。
XMLのデータは使用していません。
Atree.Nodes.Add(01, "商品A" + "\t"+ "単価1,000円");
としたときに、\tが効かなく無視されているようなんです
(>_<)。
\\t
95 :
デフォルトの名無しさん :2009/10/18(日) 00:57:12
>>94 それだと \t という文字がそのまま表示されない?
無理。
97 :
デフォルトの名無しさん :2009/10/18(日) 01:41:53
できませんでしょうか…。
98 :
中学生 :2009/10/18(日) 02:56:15
>>97 "商品A" + @"\t"+ "単価1,000円"
ちょっと調べればわかることなんだけどバカなの?おじさんw
デザインのプロパティで、ノードの描画方法を「システム自動」から、 「文字列だけプログラマが描画する」に変更する。 TreeView.DrowMode プロパティを TreeViewDrowMode.OwnerDrawText にする。 // デザイナでButtonのClickイベントに private void button1_Click(object sender, EventArgs e) { TreeNode node1 = new TreeNode("abcde"); TreeNode node2 = new TreeNode("XYZ"); // TagはObject型の物を入れておける。使用時にキャストとかする。 node1.Tag = 123; node2.Tag = 98765; treeView1.Nodes.Add(node1); treeView1.Nodes.Add(node2); }
101 :
99 :2009/10/18(日) 07:15:51
// デザイナでTreeViewのDrawNodeイベントへ private void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e) { // 大きな意味はない。e.Graphics.DrawXXX(...) // たぶん省略したいだけ Graphics g = e.Graphics; // ノードの描画で使われるフォントの指定。 // 今回は、Font(string システムにあるフォント名, float フォントサイズ) Font f = new Font("MS UI Gothic", 10f); // 文字列描画(string ノードのテキスト ,Font 描画フォント, Brush 今回は青or赤を指定 ,Point 描画の開始位置); g.DrawString(e.Node.Text, f, Brushes.Blue, new Point(e.Node.Bounds.X, e.Node.Bounds.Y)); g.DrawString(e.Node.Tag.ToString(), f, Brushes.Red, new Point(e.Node.Bounds.X + 50, e.Node.Bounds.Y)); } インデントに全角スペースを使っているので置き換えて試して。 自分で言うのも変だが、全然初心者向きじゃないコードでごめん。 そもそもツリー作っていないし。
102 :
デフォルトの名無しさん :2009/10/18(日) 07:40:16
>>98 それだと、\tって表示されるだけだろ?
本当のやり方を書いてみなよ。
>>98 ちょっと調べてから書き込めよ。
馬鹿を晒すな。
104 :
99 :2009/10/18(日) 07:55:25
tp://nekokan.bex.jp/monpuchi/38DAB7FD5615087DA45D326E0C5B60750C3400FF.jpg 念のため言うけれど、見下しているわけではないから。 やっぱり最初は、Hello World!なわけで。 オーナードロー、下手にこりだすと止まらなくなるし…。
バカがバカを煽って何やってんだか。 質問に答えた上で言えよw オレ?もっとバカだから無理。全角スペースで我慢して下さい。
>>104 これはTabではないよね。
こんなんでよければ半角スペースをうちこめばいい。
>>106 プロポーショナルフォントで半角スペースを打ち込んで調節するのか?w
108 :
中学生 :2009/10/18(日) 09:43:06
>>93 ほらよ。感謝しろよ
"商品A" + \t+ "単価1,000円
それからな、ツリーはそういうことをするためのものじゃないから
おまえの設計が間違ってる
それでお前が思ったようなことができたとしても
そんな独自仕様扱いにくくて誰も使わないぞ
109 :
中学生 :2009/10/18(日) 09:45:44
>>105 どうせ、エクセルかなんかのタブ区切り文字列を
そのままつっこみたいんだろ?w
お前こそちゃんと答えろハゲ
妥協案なんていらないんだよチンカス
110 :
中学生 :2009/10/18(日) 09:50:18
>>108-109 人の名前語ってんじゃねーよゴミが
ちゃんとコンパイルしてからコード書けカス
111 :
中学生 :2009/10/18(日) 09:54:45
>>93 "商品A" + \\t+ "単価1,000円"
これでできないとは言わせないぞ。おっさん。
112 :
中学生 :2009/10/18(日) 10:10:52
>>93 "商品A" + "\\t" + "単価1,000円"
これが正解。
MSDNのサイトが新しくなってFirefoxでも崩れなくなってるね なのにIDEのブラウザだとまともに見れないのはなぜ?
正解を語らずにここまで偉そうなのもすごいと思うよ
116 :
中学生 :2009/10/18(日) 12:52:04
>>114 試しもしないで何言ってんのこのおっさんは。
できませんが正解だろ。
119 :
中学生 :2009/10/18(日) 13:05:13
言いたいことはそれだけか? 交信を終了する
∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ こいつ最高にアホ 彡、 |∪| / / __ ヽノ / (___) /
121 :
中学生 :2009/10/18(日) 13:15:04
おっさんになんかなりたくないなー。 年とると馬鹿になるのかねぇ。
122 :
中学生 :2009/10/18(日) 13:18:24
>>121 人のふんどしで踊るなハゲ
目立ちたかったら自分で考えろチンカス
踊る阿呆に見る阿呆。同じ阿呆なら踊らにゃ損々 ってなわけで、今日も全力で釣り針に食らいつく
124 :
中学生 :2009/10/18(日) 13:27:40
\tも知らずにプロ面してんのかよー。 おっさんは記憶力がないから困るわ
125 :
小学生 :2009/10/18(日) 13:28:32
そんなにそのコテ気に入ったならくれてやるよ
126 :
中学生 :2009/10/18(日) 13:29:50
踊らにゃ損々♪
>>124 馬鹿は黙って踊ってろ♪
誰が誰だか分からんw
というか、TreeViewノードの深度によってテキストの開始x座標が変わるのに、 タブで無理やりそろえようなんてそもそも無駄だと思うんだが。 素直にListViewやDataSetあたりを使うか、 ListBoxをオーナードローするなりすればいいのに。
わかっててエスケープ文字のリテラル表記の話にしてふざけてるのだろうけど、 TreeViewにTabを処理する機能がそもそもないから、 オーナードローでもしなきゃ無理って話だろ。 WPFならスマートにそういった機能拡張はできるよ。
130 :
小学生 :2009/10/18(日) 13:45:46
>>93 どんなフォーム作ってるんだ?
ちょっとjpgで見せてくれよwwおっさんww
くだらないあおりとかはせいぜい10レス目以降は自重してくれよ。
いままでC#とかVBやってきたんだけど継承ってほとんどやったことなくて、いつ使うべきかいまだに変わんない。 メソッドとか重複する時に使うんだなって頭でいるけどそれでいいの? 継承も使ったことないから、もちろんinterfaceも宣言したことない。 そのせいか親クラスはいつも子だくさん。 ほんと孕ませてばっかです。
継承をほとんどやった事がないのに、親クラスが子だくさん…?
包含かね?
public class *** { class *** { class *** { class *** { class *** { } ∞ } } } }
入れ子ね。
自分ではもっとItestとかインタフェースってものを書いてみたいんだけど、機会がないから・・・ それに継承って、デバッグするとき継承先を辿る必要があったりするから難読化するんじゃないかなと思ってみたり。
入れ子のほうがわかんない。使って便利なときってあるの?
newするときとか見た目でわかると自分では思ってる。 microsoft.windwos.vista.netとか見た目でどこ読んでるか想像が付くし、書く時も大体の勘でかけたりするからいいkなぁって。 だめかな?w わかんないや
ここまですべて俺の自演
>>141 やっぱりか、
いま無理やりDebug.print関係のメソッド群をそれぞれの箇所に継承できるようにしてる。
今までpublic static classでやってたのが継承するべきものなんかと気づいた。
ただインタフェースの必要性がいまだにポカーン
>>139 適切に名前空間分けて、必要に応じて修飾名付けて書けばいいじゃん
ドMなら全部 完全修飾名で書いてもいいと思うけど、人には見せないようになw
信じられんと思うけど、暇さえあれば全部にそれしてた。 よくコードに性格が出てるとか言われる。 ついでにバカ呼ばわりされる
>>142 クラスの継承は複数のクラスで実装の共通化を図りたいとき。
ポリモーフィズムは異なるものを同じものとして扱いたいとき。
サブ実装をメンバに持たせる包含は、継承によるクラス間の依存関係の複雑化を避けたいとき。
インターフェイスは複数のクラスの実装に共通部分が無い場合。
にそれぞれ使う。
これらの中身をいちいち説明してたら紙面が足りないし、このスレの範囲を超えるので
自分で勉強してくれとしか言いようが無いな。
>>145 わざわざありがとう!
今未確認飛行のところで一生懸命読破しようとしてる。
まだ自分ではいろいろな欠点をしってるけど、またの機会いぃぃぃー!
>>142 >public static classでやってたのが継承
それ継承の間違った使い方の典型的なアンチパターンだよ
ま、ヘルパーとして基底クラスにアクセサをつけるなんてことはよくあるけどね。
ただしあくまでヘルパーにすぎないところが重要。
なんで?
継承は、基本の実装を活用させたいときとか クラス自体に大きな性質を与えたいときとか テンプレートを提供するときとか 基底クラスへの強い依存や基底クラスから強い影響を受けても構わない、 あるいはそれが望ましいとき。 インターフェイスは逆に実装はいらないときとか 強い関係を持ちたくないときとか クラス自体の性質とそれがサポートする機能に関連が薄いときとか 汎用性、疎結合ならインターフェイス。
ライブラリを作る側になったらいろいろ必要。 ライブラリを使う側なら、あんまり気にしなくてOK。
154 :
小学生 :2009/10/18(日) 18:27:34
>>144 おっさんの知能ではもはやオブジェクト指向は理解できないのか?w
C#からDllの外部関数にrefで構造体を参照渡ししてます。 外部関数を実行中にC#側の別スレッドで構造体のメンバ値を 変更しても外部関数でそのメンバ値を見ても変更が反映されません。 何故ですか。 ちなみにC#のマネージメソッドに対して同様の ことをするとメソッド内で構造体メンバ値の変更が反映されます。
156 :
デフォルトの名無しさん :2009/10/18(日) 18:31:32
WindowsXPなんですけど、 Directory.GetFiles で手に入れたファイルの順番と、 エクスプローラでファイルを一覧した順番が違う気がするんです。 違ってたとして、一致させるにはどうすればいいのでしょう?
157 :
小学生 :2009/10/18(日) 18:36:50
新規にスレッドを作ってそっちで取得したデータを Dataset に入れて、 そのデータがフォームに表示されるように datagridview にバインドする場合、 dataset へのデータの追加は、begininvoke を使って メインスレッド(UIスレッド?)で追加した方がいいのかな?
>>158 「この型は、マルチスレッド読み取り操作に対して安全です。すべての書き込み操作の同期をとる必要があります。」
ロックしたら問題無いと思っていたけど、駄目?
>>158 フォームのコントロールはフォームのスレッドでしかアクセスできないから。invokeが必要。
>>159 ダメ。
DataSetの変更はバインディングによってコントロールに通知されるけど、
特に同期化しない普通のイベントによる通知なので
DataSetを変更したスレッドと同じスレッドでイベント発生・コントロール書き換えが行われてしまう。
>>161 > 特に同期化しない普通のイベントによる通知なので
> DataSetを変更したスレッドと同じスレッドでイベント発生・コントロール書き換えが行われてしまう。
あー、そうか。
やばそうですね。
>>155 そのままマネージヒープのアドレスを渡すとGCで死ぬから,
マーシャラが自動的にアンマネージヒープにコピーを作ってるからだったかな
そういう使い方をするデータははじめから自分でアンマネージヒープに確保しておくのが普通だと思う
その場合MarshalAsでStructだか使えばできたと思うけど
アンマネージコードからマネージヒープを直接触らせるにはGCHandleを割り当てて固定するしかないはず
MSDNの「コピーと固定」って記事にマーシャリング時のヒープが図解されてるよ
なんかデバッグフォルダに見慣れないファイルが5っほどある。 コンパイルしたらリリースフォルダにも同じファイルがある。 TempPEなんてフォルダまである。 hoge.pdb hoge.Form1.resources hoge.Properties.Resources.resources hoge.csproj.GenerateResource.Cache hoge.csproj.FileListAbsolute.txt 今までこんなの出来なかったのに何故?
168 :
167 :2009/10/18(日) 21:53:27
あ、pdbファイルまで書いてしまった。 これは無しです。
\obj\のほう見てないか?
>>169 その通りでした
まさかそんな落とし穴があったとは・・・
穴があったら入りたいですw
171 :
小学生 :2009/10/18(日) 22:17:37
おっさん、バイナリすらわからないのか?
172 :
中学生 :2009/10/18(日) 22:48:26
>>171 お前もわかってないんだから黙ってろガキ
おっさんと同レベル
173 :
小学生 :2009/10/18(日) 22:51:01
おれは将来天才プログラマーになる 人類初の人工知能を開発してやる まずはイカの神経細胞を研究してだな
____ /⌒ ⌒\ ホジホジ /( ●) (●)\ /::::::⌒(__人__)⌒::::: \ < へーがんばってね | mj |ー'´ | \ 〈__ノ / ノ ノ
タコがイカの研究とな?
晩飯のイカ天がめっちゃ旨かった。
177 :
155 :2009/10/18(日) 23:37:29
>>163 やはりGCによる管理が原因でしたか。
結局アンマネージにコピーしてるならせっかくの参照渡しがあまり意味ないですね。
せっかくのc#なのにアンマネージコードを使うのもなんなので、
他の方法にします。ありがとうございました。
>>155 のような使い方って結構多いのかな?
俺はそういう参照私の使い方をしたことがないんだ
>>155 ,178
C#からC/C++のDLLの外部関数を呼び出すのはかなり下準備が必要なので、
ゼロから書き上げるより実績のある他のコードをコピペしていじったほうがいいよ。
WinAPIなら色々と見つかる。
じゃあどういう参照渡しの使い方をしたんだ?
非同期の処理が絡むようならコールバック関数を使う。 それができないならC++/CLIでラッパーを作る。
.Netはxml関連のライブラリ増えすぎて一体どれを使うべきなのかわからない。 xmlファイルとして生成するときはXmlTextWriterからなのかXDocumentから吐きだすのか・・・ どうしたらいいんだぜ?
イカの神経細胞を研究するために イカの飼育を世界で初めて成功させた日本人がいるね
>>182 別に何使っても良いけどな つか「すぎ」って言うほど多くはないと思うけど
まず一旦DOMを作るかどうかでXmlDocument/XDocumentかXmlWriterかに分かれる
DOMを作るかどうかは仕様次第
あとXmlDocumentとXDocumentは大体同じもんだから.NET 3.5以降を使って良いならXDocument
それからXmlTextWriterは属性ついてないけどObsolete扱いなので使うならXmlWriterね
>>184 すごい勉強になるわ、
無意識のうちにXDoc使ってるから、まぁこのまま続けても問題はないかな。
186 :
小学生 :2009/10/19(月) 10:27:53
どう考えてもライブラリ多すぎるよな いらないものどんどん削除していけよ・・・
Assemblyあたりの「依存のため〜」は全部削除してほしいw ごちゃごちゃしてる
一旦追加されたらよほどアレゲな評価が定着しない限りは 削除されないのが標準ライブラリの宿命。 それでも、標準で使えるライブラリが使えなさ過ぎるC/C++よりは遥かにマシ。 Javaと比べたら……どうなのよ?
189 :
小学生 :2009/10/19(月) 10:58:52
>>188 そういうものの考え方って退化っていうらしいよ。おっさんw
190 :
小学生 :2009/10/19(月) 11:02:17
vistaはうんこだけど、win95よりはマシだな って考え方する奴は時代についていけてない証拠 満足しちゃったら終わりなのよw
よそでやれ
よそでやりました
193 :
小学生 :2009/10/19(月) 11:21:18
昔はスイッチをカチカチとオンオフしながプログラミングしてたけど 今はすごく便利だなー 懐古おっさんは解雇されろw
へんな粘着君が居ついてしまったな。
>"懐古"おっさんは"解雇"されろw 最後に「w」付けてるせいで悲壮感が倍増している。なんとハイレベルな親父ギャグか…。
コントロールクラスを継承したクラスライブラリを作ってるんですが そのクラスがプラグインを実装することになって メニュー項目にプラグイン選択・設定メニューも追加したくなったとします メニューを管理するのはParentのFormなので、Formクラスでライブラリに 作り直せば簡単なんですが可搬性に問題が出そうです そこでコントロールクラスのコンストラクタにFormクラスのメニューの参照を渡して そこにメニューを追加する仕様にしようかと考えてます コントロールのコンストラクタにメニューの参照を渡すのってあんまり見たこと ないんですが、おかしくないでしょうか?
197 :
小学生 :2009/10/19(月) 14:18:53
>メニューを管理するのはParentのFormなので、Formクラスでライブラリに >作り直せば簡単なんですが可搬性に問題が出そうです なんで? 普通にメニュー作ればいいやん?
>>196 フォームのメニューはアプリごとに全然異なる部分だからなぁ。だから普通は毎回作り直す。
そこを標準化して、逆にアプリ側の仕様が縛られるのはちょっと勘弁。
プラグインを管理する機能があって、それをメニューに反映したいというなら後付で入れられる形を考えるか。
純粋なプラグイン管理サブシステムを構築した上で、
そいつに追加したい先のフォームのメニューの親メニューの参照を渡してあげる感じがいいんじゃないかな。
>>198 なるほど、とりあえずはプラグインが利用するのはコントロールクラスのプロパティやイベントだけだと思うので
後付で追加したい先のフォームのメニューの参照を渡すようにして、
メニューの追加をプラグインにそれぞれやらせるようにしたいと思います
うまくいったけどメニューが文字化けする・・・
それってさぁ プラグインが既存のメニュー削除できちゃったりしないの?
202 :
小学生 :2009/10/19(月) 17:18:16
俺をしかとするなよおっさん共
>>201 できませんよ、プラグイン用の枝のMenuItemの参照渡してるだけだしaddを公開してるだけだから
花札で10点札の鹿が後ろを向いていることから そっぽ向く、無視することを「鹿十(しかとお)」と言うようになった ヤクザの言葉なのであまり使わない方がいい
なぜ文字化けするのかな・・・ しかも参照渡す前のメイン処理のメインメニューは同じやりかたで化けてないのに
文字化け解消 デバッグ環境の方に原因があった
中学生でもこんなアホな煽り方しない マジでキチガイなんだろうな
209 :
胎児 :2009/10/19(月) 18:16:40
…
c#やって見たけど挫折した馬鹿だろきっと
パスワードの判定って何? それはそれとして、そのサンプル間違ってる部分があるから注意な 暗号化した後のバイト配列をEncodingで文字列化しちゃってるところ
暗号化するときに for (int i = 0; i < Key.Length; i++) Key[i] = (byte)i; CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(Key, IV), CryptoStreamMode.Write); 復号する時は for (int i = 0; i < Key.Length; i++) Key[i] = (byte)(i+5); CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(Key, IV), CryptoStreamMode.Write); CryptographicException はバンドルされませんでした。ってエラーが出ます。
その鍵で計算中にそれ以上復号を続けられないような変な状態になったんだろう 必ず例外が投げられるってもんでもないよ
216 :
214 :2009/10/19(月) 21:50:16
ども、内部でエラーが出るだけなんですね。 try catchで切り抜けます。
>>217 なんぞこれ
いまならWPFでやった方が食いついたかもしれないのに、なぜこんなことをしたんだ。
プログラマご用達の2chブラウザ教えて
twintail2
プログラム書く人は2chを見るより、開発チームのブログを見てニヤニヤしてる方が楽しいことを知っています。
xyzzyの2ch-mode
>>223 それってC#で作られてるんだよね
製作者のプログラミングスキルってどんなもん?
>>226 女子大生になに期待してるの?
専スレで作者と一緒に機能拡張を考えたりデバッグしたりするのが楽しいんじゃないか
おれもツインテールにしよっと
.NET Frameworkの目玉機能の一つであるマルチコア最適化された並列処理技術の名称が Parallel から Twintail に変更されますた。
よーし、オラもツインテール改造して専ブラ作ってみるかな
俺もツインテールに乗り換え決定
ツリービューのノードをドラッグして他のノードの上にドロップして親子の関係にしたいんだけど 実際にどうすればいいんでしょうか?
234 :
デフォルトの名無しさん :2009/10/20(火) 14:17:53
え!? VisualStudio2010って有料なの?
Express はでるよ。 でも Standard はなくなるようだからホビープログラマにはきついかもしれんね。
そろそろM$も動き出したなww これからがっぽり稼ぐ作戦だろうなw
またアンチMS様か
おれはトロンで生き残る
下記をループで1〜5Visible = falseにするのはどうすればいいでしょう 単純すぎて答えが返ってこないです^^; いやマジでなぞです ググってるんですが lblNo1.Visible = false; lblNo(Index).Visible = false;< とかやってみたんですけどね
事前に配列に入れとけば
twintailのソース見てみたけど・・・/(^o^)\
ラベルですから その上で、配列ですか?・・・ 思いつかない でもかんがえてみる・・・ アリ TextBoxにも言えるんですけどね
for (int i = i; i < 5; i++) { string labelName = "lblNo" + i.ToString(); this.controls[labelname].Visible = true; }
table パネルとかのコントロールに入っている場合は tablepanel 野中でさらに指定せなあかん。 ところで、toolStripContainer って一度フォームに貼っちゃうと 削除できないのかな? さっきどうやって削除していいかわからなかったからフォームごといったん消しちゃったんだけど なんか勘違いしてるのかな?
野中
>>244 オブジェクトの一覧選ぶコンボで該当選ぶとデザイナで選択されるから DEL 押して削除とか?
>>246 あぁ、うん。ごめん、それでいけた。
ヒントさんくす。
さっきもそれで懸想として消せなかったんだけど
選択がコントロール全体じゃなくて
コントロール内のコントロール選択した状態で削除しようとしてたからだ。
自分の不注意…。
前もこれで悩んだような記憶が…
>>243 with244thk
for (int i = 1; i < 6; i++)
{
string labelName = "lblNo" + i.ToString();
this.Controls[labelName].Visible = false;
}
微修正しましたありがとです
ちっ、修正しやがったのか
>>247 普通にデザイナで選択出来るし
コンテキストメニュー → [選択] → [toolStripContainer1]
他にはドキュメントアウトラインでもいける
タブコントロールのページ名の部分が通常上になってますけど アプリによっては左側面にあったりするものもあるんですが それはどうやったらできますか?
調子に乗って質問です ポーカゲームとか作るとき カードをクラス化するとすると 5つのインスタンス作るんですか? マジ5個のインスタンスに初期値つっこむのめんどいのですが・・・
TreeViewの状態を保存したいんだけどいい方法ないですか?
コンストラクタで初期化したら? てか、そんなんに義務など無いんだから 嫌なら手続き的に書けば? よっぽどめんどいと思うけど
>>252 5つのインスタンスが必要なら5つ初期化する必要があるのは当たり前。
普通は面倒なことなどない。それが面倒だということは、おかしな事をしてる
設計に関するヒントを挙げると、カードはクラス化する必要ない。
flags付きの列挙型でスート4種、ランク1〜13、ジョーカーを作成。(空状態もあるといいかも)
あと、スート、ランクのマスクとか、エイリアス(Ace=One)とかを用意すればいいか。
MSDN変わったね。ライトウェイト表示が軽快でいい感じ
OS Windows2000 SP4 CPU AMD-450MHz メモリ 184MB ツインテールの作者ってマジでこんなスペックで開発してんの? かなりもっさりじゃね?
ツインテ作者女子高生説ってまじかよ!へこむわ
3万あればモニタ+OS+P4の環境が揃えられるのに、どんだけ貧乏なの?
スート=カードのマーク・・・ 私のC#にはFlagsAttributeなどない! てゆうかすでに高度すぎてついていけない・・ でもありがとう
こんなんです MyCard Card1 = new MyCard(rnd.Next(1, 13), rnd.Next(1, 4)); MyCard Card2 = new MyCard(rnd.Next(1, 13), rnd.Next(1, 4)); MyCard Card3 = new MyCard(rnd.Next(1, 13), rnd.Next(1, 4)); 略 lblNo1.Text = Card1.myno.ToString(); lblNo2.Text = Card2.myno.ToString(); lblNo3.Text = Card3.myno.ToString(); 略 lblMark1.Text = Card1.mymark.ToString(); lblMark2.Text = Card2.mymark.ToString(); lblMark3.Text = Card3.mymark.ToString(); 略 ださいでしょ なんとかならんのか
カードはフリップとかさせたり縦置き横置きしたりすること考えると クラス化した方が汎用性あると思うけどなぁ。
そもそもトランプカードは52枚+ジョーカーで総枚数は固定というのが大きなポイントなのだから 普通はランダムで生成しちゃいかんもんだと思うが
生成してからランダムに並べ替えて使うんだよ普通は
267 :
263 :2009/10/20(火) 19:19:48
クラスもこんな感じに2行ぐらいで出来ないかなと 出来ないと5行書くんですよ for (int i = 1; i < 6; i++) { string labelName = "lblNo" + i.ToString(); this.Controls[labelName].Visible = false; } 想像だけど7並べのPGつくると大変なことになりそう
KeyDownの判定をForm上で行おうとしてるんだけど、Formにボタンとか貼り付けると判定がされなくなってしまう ボタンが無いときはちゃんと判定されるのに・・・どういうことなの?
>>264 表示の時はそれでいいが
内部もそれだと、アルゴリズム生成するときに処理がもたつく
CardPileとかのクラス作ればいいんじゃないの?
C#からケータイのデコメを送信できるライブラリってないでしょうか? キャリアの違いを吸収してくれるものがあるとありがたいです。 もちろん有料でもよいです。 無ければソケットで実装しようと思います。
実行されることのないゴミメソッドを見つける方法はありますか?
FxCopでinternalまではチェック可 publicクラスのpublic/protectedメンバについてはアセンブリ外から呼ばれる可能性があるので一般には無理
>>263 もうなんか激しく WPF の ItemsControl でも使ってろって
感じがする。
277 :
263 :2009/10/20(火) 21:29:07
だが断る
カードをコントロールとして扱うこと自体ダサい ゲームならコントロール使わず全部自分で描くでしょ
279 :
263 :2009/10/20(火) 21:52:45
初心者板ですし・・・ そんな腕はない!
なんかのサンプルでもカードにピクチャコントロール使ってた気がする ブラックジャックだっけかな
WPFなんかでカードゲームフレームワーク作ったら面白そうだな うまく設計したらかなり共通化できそう
>>277 使えば楽にできるよって意味で薦めたのに。
Card の見え方(Item)のテンプレート書いて ItemsSource に
MyCard とやらのコレクションぶち込むだけなのに。
283 :
263 :2009/10/20(火) 22:16:52
WPF覚える余裕がない済まぬ Randomって一瞬で処理されるから Randomでカード作ってもみな同じカードになるような・・・ さらに作りこみます
そんなところ行かない
288 :
263 :2009/10/20(火) 23:07:59
>>そもそもトランプカードは52枚+ジョーカーで総枚数は固定というのが大きなポイントなのだから >>普通はランダムで生成しちゃいかんもんだと思うが それは、取りあえずランダムで値をとってから数字とマーク(ハートとかのマーク)を 比較して同じじゃなきゃOK同じならもう一回やればいいと言う意味かと思っていたけど いまランダムで同じ値が出てる現象の事を予知してたのかなと >>生成してからランダムに並べ替えて使うんだよ普通は 意味がちょっと分かりませぬ 当方の理解力のなさによるものですが 生成してからランダムに・・・・?? どういうことでしょうか 教えてくださいませんか?すいません
頭悪すぎワロタっw
>>263 君に一番向いているのは、カードをユーザーコントロールとして
実装することなんじゃないかと思う。
それならお望みどおり描画はラベル等のに丸投げできるし、
ユーザーコントロールに"MyCard"を引数にとって表示に反映するメソッドを書けば、
「ださい」問題も解消できるでしょ。
>>288 あのさ、ランダムにやったら同じカード出て当たり前だろ
面倒だけど、ちゃんとカードの定義を作ってだな
それをランダムに配れよ
てか、おまえはまず、オセロ作れ
2色なら文句ないだろ
多分それさえもできなさそうだけど
重複のない乱数を作るには とかググれ
まず綺麗にならべる、これが初期状態 入れ替えるところを乱数で2箇所決め、そこのカードを入れ替える これを好きなだけ、十分混ざるまで繰り返す もしくは頭から順番に、乱数で決めたどこかと入れ替えるを全カード行う
>>285 おおー、これだ
シンプルなゲームならWinFormsでポトペタ出来るんだな、ってちょっと感心した覚えがある
295 :
253 :2009/10/20(火) 23:37:44
>>256 すいません、もうっちょっとだけ詳しく教えてください
ぐぐってもよくわからなかった
やりたいのはIEのお気に入りをタイトルとURLで保存したいのです
それとノードの構造と同じような保存用データも必要と思うんだけど
そっちはどのように作ればいいんでしょうか?
IEPageNodeクラスにLISTを作ってそこにIEPageNodeのインスタンスを追加していくというのを
考えているんだけど、もっとよい方法ありますか?
一言。カードをシャッフルするプログラムを作ってみ。 と 291 とか 293 は言えばいいのに。と思った。
297 :
263 :2009/10/20(火) 23:54:44
らじゃ 皆さんありがとう
簡単なのは重複のない乱数を与えてソートだな シャッフル式の方が教科書的だけど
重複ありでも充分に値の幅が広けりゃ実用的だよね。 ソートでのシャッフル。
LINQ使えば簡単だな public static IEnumerable<TSource> Shuffle<TSource>(this IEnumerable<TSource> source) { var r = new Random(); return source.OrderBy(x => r.NextDouble()); }
>>300 Orderbyに与えるデリゲートは一要素につき一回しか実行されないのは保証されるの?
IComparableを実装して文字列でSort()すると 同じ文字列なのに順番が入れ替わるのは何で?そう言う物なの?
>>303 コンテナに複数の同じ文字列を入れているのか、違う文字列をそれぞれ入れてsort後に順番が変わってるのか、
話が全然変わってくるじゃないか。
お前、このスレの住民がお前の実装を分かってるエスパーだとでも思っているのか?
ArrayやListのソートはクイックソートだからアルゴリズム上の仕様です 安定なソートを自作するか, LINQのOrderByを使いましょう
安定じゃないソートアルゴリズムで同じキーの順番かわるのが嫌な場合は サブキーでシリアルナンバーとかを使うとかがよくある回避方法だな。
>>301 逆に聞きたい。
こんな大雑把な指定しかしてないのに、なんでそんな細かいことが保証されると考えるんだ?
実際に試してみたほうが早いんじゃね。
>>307 試すより仕様書あたる方をすすめろよ脳筋
>>283 それはランダムの使い方自体を間違ってる。
しかし2.0では安定ソートが使えないのは悲しい。
Randomを毎回newするのはどうかしてるな
なんで、.suoにPCユーザー名の情報書き込んでるの? 気軽にソース配布できないんだが
suo配る必要はないとは言わないがまあそんなには困らんだろ
配布用のユーザー作れば解決
C言語のころだけど、rand()を毎回100回ループで回してから使ってる奴見たことあるぞ。 その方がよりばらけた数値が出るような気がするからとかいってたw サイコロ振るわけじゃないんだから・・・
C#2005EEってもうDLできないの? 2008があるからiso削除してしまった
どっかにあるけどゲ製の人ならXNAのバージョンをだなw
321 :
319 :2009/10/21(水) 15:39:37
>>320 あれwバレた?w
ありがとう解決しました
ポインタ使わなければ出来ないプログラムって何かあります?
別に無いな
パフォーマンスを気にしなければ、特にない
ポインタって何?
マウスポインタ
ファミコン全盛時代はドラクエ1みたいなもの作れただけで 感動したけど、今のゲームって個人で作れるレベルじゃないしな 今の人ってプログラミングしてて感動したりするのかな?
そりゃすると思うけど。
オレは今日、半日でテトリスが作れて感動した!
別にアプリケーションはゲームだけじゃないしな
ゲームじゃないソフトってほとんどvectorであるしな
今更斬新なものってなかなかないような
せいぜい、最新OS対応させるぐらいだろうけど
あの頃はプログラミング楽しかったなー
>>330 後学のためにソース公開してよ。無理なら実行ファイルだけでもいいから
namespace TestP { public partial class Form1 : Form { static public Bitmap[] Picmap = new Bitmap[128]; ←ここ public Form1() { InitializeComponent(); } なんたらかんたら } } この場合どこで Dispose(); するの?
いらなくなったとき 判断できないなら放置するしかないが
これってusingつかえんかったかな?
>>d 放置することにします。
つかえねえよw
ショボンとなった
最近初めてプログラムの本を買って読んでるんだけど、C#エッセンシャルズ2版がなんかしっくりくる。 本の分厚さも2センチいないで持ちやすい! でも、.Net 2.0とか古そうだしできれば3.5のを読みたい。 何か2センチ以内で.Net3.0~を対象としていて大体のことを網羅している本ってない?
.NET 3.0/3.5は2.0への機能追加なので、2.0の知識がそのまま使える。 というわけで、古いとか心配しなくても大丈夫。まずはその本で基礎を固めるのがいいと思うよ。
プログラム経験は4年! C,C++,C#,VB,Javaは大方勘でかける! だがいまだにオブジェクト指向のこと聞かれても答えられない! 意味もわからない! うふう、うふふふふふふっ
>>333 次にいつ使うか分からないけど、生成コストが高いので残しときたい。でも、メモリ使用量が多いので開放したい。
こんな時の妥協案に、"弱い参照(System.WeakReference)で保持してGCの対象にする"なんて方法もある。
多用する類の物ではないけど、使いどころによっては効果的。
>static public Bitmap[] Picmap = new Bitmap[128]; ←ここ 生成したのは配列だけで、Bitmapは生成されてないとか言う落ちだったりして
ありそうなのが怖い
WeakReferenceは結構すぐ解放されちゃうからそういう意図のキャッシュには使いづらいよ static Dictionary<WeakReference, Bitmap>みたいにキャッシュのキーとして使ったりすることが多い
あれ?IDisposableだからってGCに任せちゃ駄目なんじゃなかった?
リークという意味では別にGC任せでも構わん 早くリソースを回収したいからDisposeを使うだけ
ファイナライザくらい実装してるだろ。
using(static public Bitmap[] Picmap = new Bitmap[128]) { }
351 :
335 :2009/10/21(水) 21:58:55
//myclassクラス宣言 public myclass[] mc = new myclass[10]; これってクラスの配列みたいなんですけどC#でこれが普通なんですか 入門書には出てない書き方なんで・・・・
>>352 new myclass[10]のところ?
これは 「myclassのインスタンスを格納する要素数10の空の配列を作る」 という意味
最も基本的な配列の作り方なのでほんとにその本に出てないなら今すぐ焼き捨てるべき
>>354 >>355 ネットみていたら
//myclassクラス宣言
public myclass[] mc = new myclass[10];
って書いてあったんですけど んこれって配列じゃね?
int []a = new int[100];
あった配列だな・・・
class宣言は
myclass mc = new myclass();
丸括弧だよ!!
じゃあなんだ これは、public myclass[] mc = new myclass[10];意味は何となくわかるけど
みたことないぞ
ググって例がみてもあまりないなあ
よし聞いてみよーとという展開です
配列のインスタンス化とクラスのインスタンス化を区別しろよ
int[] → intのインスタンスの配列 string[] → stringのインスタンスの配列 myclass[] → ○の△の□ わかるでしょ?これだけのこと
>>353 過去にタイムスリップして作ったのか?
すごいじゃないな
>>357 >>358 おっしゃる通りです
mc[1]〜mc[10]のインスタンスができたー
でもやってみないと半信半疑ですね
両名さんありがとうです
>>353 音切ってたから
イキナリフリーズかと思ってみてた
休みの日見るからとっておいてくださいねって
あんた一時間って天才か
オブジェクト参照がオブジェクト インスタンスに設定されていません。 lbl.Text = mc[1].myno.ToString(); と思ったら落ちた 明日に続く
30歳ぐらいになったらプログラミング作業速度って落ちるのかな?
落ちない。むしろ上昇する。
>>363 普通はそれはないよw
年齢をいい訳にしてる人は、本当は若いときから単に無能だっただけ。
そんなに頭使わないから平気じゃない? 経験もある程度重要な分野だし。 脳の老化は始まってるだろうけど その歳から影響を受けるのって数学者とか特殊な人たちでしょ
367 :
363 :2009/10/22(木) 00:28:11
安心しました 30なんですが、プログラミングを趣味でやろうと思ってて 今から覚えられるか不安だったけどがんばってみます
30から趣味で始めるなんて随分と奇特な人もいるもんだな まあプログラムに定年はないし、やる気と能力さえあればおじいちゃんでも小学生でも出来るからな
370 :
330 :2009/10/22(木) 00:45:25
>>353 実はその動画に触発されて作ったw
といっても実際に書いたコードはIronPythonで、
C#ですでに構築している自作のゲームエンジン上で動かしている。
(IronPythonでゲームが実装できるような仕組みにしている)
ソースコードは公開できない。スマン。
この1時間の人はすごいよな 俺、IDEないとバグ出まくる気がする
372 :
363 :2009/10/22(木) 00:58:58
win3.1のころはって言ってるからまだ20代かな MS-DOSのころにQuick CやHigh Cコンパイラとか当時やってた
結局、同じものをいろんな処理系で何度も構築するのが一番勉強になるからなぁ。 1回目より2回目、2回目より3回目、 確実に無駄が減ってくる。
でも1年もやってないとその知識が0に戻ってしまうんだけど・・・ またオブジェクト指向はなんたるかを覚え直し
それはないわ
そりゃわかったつもりになってるだけだからだ 要するに元から知識0
分かったような分からないようなって言ってるいる奴は間違いなく分かってない
「身につく」とか「理解する」ものであって、覚えるものではないし。
結構腰を据えて勉強しないとわからんのもあるよね。 とりあえず組んでみるだけだとわかった気になっておわること多い。
オブジェクト指向を全く知らない頃にCでオブジェクト指向のプログラムを 苦労して作ってたから、オブジェクト指向という概念と それをサポートする言語を知ったとき感動したっていうか 最初からこっちでやればよかったって思ったよ。
言語は新しいものに限るって見知らぬ老人が言ってた
CopyFromScreenで、デスクトップの画面をキャプチャーできるじゃん。 これって自分自身のフォームもキャプチャされるけど、 自分自身はキャプチャされない方法ってあるの?
自分自身を非表示にすれば良いんじゃね
表示されてる場合、その裏側に何が書かれてるのかは誰も知らないからな
誕生日を入力すると、その人の現在の年齢を表示するプログラムを作っています。 DateTime birthday;として誕生日を格納して、現在の日付との差分をTimeSpan ts;に代入するところまではできました。 ただtsは時間の差を最大で日付単位でしか得られないので困っています。 単純に ts.Days / 365とするとうるう年などの関係で年齢がずれることがあります。 なにかうまくやる方法はないでしょうか
ないから聞いているんです
まず年を計算して月日が前か後かで判断すればいいだけじゃね?
初歩的な質問ですいません あるファイルがロックされているかどうかを調べる方法が分かりません ロックされていなければ同名で上書きさせたいのですが 上書き失敗したら無視のループ、書き込めたらbreakで対処しています 上書きを実行する前にロックされているかどうかを調べたいのですが 良い方法はありませんでしょうか? 環境は windows xp、visualstudio10b、言語は.NET c#です
事前チェックじゃなくてtry-catchでやる
387は誰か知りませんが、バカのふりして煽って楽しいかな
>>388 やっぱそういう方法でチマチマするしかないんですね、どうもです。
VBのDateDiffみたいに汎用の方法があるのかと思ったんですが・・・
DateDiffって年齢計算に使えたっけ
VBのDateDiffを使いたいのならC#からでも使えるけど、そういうことじゃないんだろうな
397 :
391 :2009/10/22(木) 13:31:51
>392 レス有り難うございます、、ただ、try-catchだと、ロックされてない時に上書きが実行されてしまいます 説明不足でした、最低1度ロックされ、そのロックが解除された事を確認した上で 上書き実行したいので、ロックされているかどうかを監視したいのです 監視ループでFile.Openを試みるのも考えたのですが、もっとスマートに ファイルの状態を返す様な物は無いのかと思い、質問した次第です
>最低1度ロックされ、そのロックが解除された事を確認した上で >上書き実行したいので 確認したときアンロックだったとしても 実行するまでにロックされたらどうすんだろ
400 :
391 :2009/10/22(木) 13:50:43
アンロックされているかどうかは確認しません ロックされているかどうかだけを確認して ロックされていれば、過去にロックされたというフラグを立てます フラグが立っている状態なら、ロックされてるか確認はせず、上書き実行を試みます その時に再ロックされていても書き込めないだけで 上書きが成功すればフラグを下ろし、またロックされたかどうかをチェック開始する感じです この一連の流れで「ロックされているかどうか」をチェックする方法が分からないんですorz
ふ〜ん
汎用的なクラスを作って、別のプロジェクトを作った時に利用しようと思っても どのプロジェクトでそのクラスを作ったかわからなくなり、また新しく作ったりするんですが そうならないように汎用的なクラスをまとめておきたいんですけどどうすればいいでしょうか?
403 :
391 :2009/10/22(木) 14:02:21
現状こんな感じなんですが・・・ Boolean bgmfilelock = false; private void Timer_Tick(object sender, EventArgs e) { // ファイルが開けるか確認する try { File.Open("aaa.txt", FileMode.Open, FileAccess.Read); // 開けなかったらフラグを立てる } catch( System.IO.IOException ){ bgmfilelock = true; } // 過去に一度でもファイルが開けなくなったら(ロックされた事があれば) if( bgmfilelock ){ // ファイルの上書きを試みる try { File.Copy("aaa.txt", "bbb.txt", true); bgmfilelock = false; } catch( System.IO.IOException ) { } } } 一度ロックがかからないと上書きされない、という動作は達成してるんですが チェックの為だけにOpenはどうかなぁと思って、もっと単純に出来ない物かと ファイルの状態を知る方法は無いんでしょうか?
ファイルロックにも色々あるけどな
何がしたいんだかわかんね
407 :
406 :2009/10/22(木) 14:13:13
「一度ロックがかからないと上書きされないという動作」 をしたいんです
408 :
391 :2009/10/22(木) 14:14:17
↑の391です、すいません
その場合 ・ロック確認 ・別プロセスがロック ・別プロセスがアンロック ・ロック確認 こういった時にロックかかったか検出できなくない
というよりもっと上位のレベルの「何がしたいのか」を説明したほうがいいような・・・ なんかもっと良い解決法がありそうな気がするそれ
411 :
391 :2009/10/22(木) 14:28:48
はい、では具体的に書きます 定期的に別プロセスで再生されるmp3ファイルが有るのですが このままでは同じ曲を延々とループしてしまいます。 そこでタイマー1のイベントで10秒毎に、別のmp3を同名で上書きさせています ただ、常に上書きではどんどん曲が変わってしまうので タイマー2により最低3分しないとタイマー1が作動しないようにし 3分経ったら、タイマー2を停止させて、タイマー1を作動、10秒毎に上書きに挑戦し 書き込み成功したらタイマー1を停止し、タイマー2を作動させています その仕組みを「上書きされて3分以上経ち、かつ最低1回再生されたら、別の曲を上書き」 にしたいんです、再生している間はファイルがロックされますので ロックされたかどうかを検知すればいいかなと
412 :
391 :2009/10/22(木) 14:34:54
そのmp3は、10秒以上絶対に再生されるので 10秒毎にファイルがロックされているかどうかを検知し 一度ロックがかかったら、それ以降は上書きを試み続け ロックが解放され次第上書きして、成功したら3分待つ とすれば3分後でも、一度も再生されていない場合は上書きされないので やはり、ロックされているかどうかのチェックは必要だと思うんですが
他アプリで再生中かどうかを検出したいって事?
414 :
391 :2009/10/22(木) 14:50:20
>413 そうですね ただプレイヤーによっては再生中にバッファを作ったりして、ロックしない物もあるので その場合は3分以上経っていれば直ちに上書きしたいので再生中かどうかと言うより 上書きできる状態かどうか、を検出したいんです
再生してるソフトを改造すれば
プレイヤーによってロックしない物もあるということは、、、 プレイヤーによってループ再生中ずっとロックしっぱなしものもある?
ある
420 :
391 :2009/10/22(木) 15:02:38
>415 他の人が作ったプレイヤーを改造するほど技術がありません^^; >416 ロックしっぱなしは有りますが、その場合同じ曲が何度も再生されるのは仕方ないと思ってます 「定期的に再生される」と書きましたが「再生されない時間」も有るため そのタイミングで曲の変更を行っています >417 そんなに難しい事じゃないです^^;;; ロックしているプロセスが何であれ構いません、秀丸で排他制御させてmp3を開いてても同じです 単純にファイルがロックされているかどうかを知りたいだけなんですが・・・
だからその確認には実際に開いてみるのが一番手っ取り早いっていってるじゃんか
そのプレイヤーはそのMP3ファイルが無いとどうなる?
System.IO.FileMode.Appendで開く
424 :
391 :2009/10/22(木) 15:33:49
私の知らない File.Status() みたいな物がもしかしたらあって ファイルのロック状態を取得する方法があればと思って聞いたんですが やっぱり、>403で書いた様な方法しか無いと言うことですね みなさん有り難うございました><
>>424 その手続きが面倒でも、クラスにしてしまえば利用する分には楽じゃん?
>>402 クラスライブラリを作る
そこまでするほどでもないようなくだらないものは共有しないでコピーした方がいい
ここの住人には心病んでるやつもいたんだな
自己紹介乙
429 :
402 :2009/10/22(木) 21:25:18
>>426 忘れ去られてるかと思いました。ありがとうございます。
そのやり方だとやっぱりどこに何があるか忘れてしまうし
DLLにするほどでもないし
ファイルをどこかのフォルダにまとめてコピーして使うという感じがいいのかな?
みなさんはどうしてるのか気になります
>>429 >そのやり方だとやっぱりどこに何があるか忘れてしまうし
もうどういうやり方にしてもダメだろそれ・・・
もう全部コードスニペットにしちゃえよ
プログラミング以前に日常生活に支障が出てそうだな
コード管理でググると色々なやり方があるみたいね。 ファイルをフォルダに纏めといて・・・ってやり方してる人もいた。
俺は逐一DLL化してしまうかなぁ、、、 この前なんてウィンドウのアイコンをとってリストでイメージ返すだけのDLLなんてのも作ってた。 プログラム的にはよろしくないってのも承知の上で
オナニーは良くない
俺は結構プロジェクトを使いまわすかな 管理はVSS使ってる ひとまずDLLにするのは本当にデバッグが終わってもう修正の必要がない時だけにしてる (配布しなければいけない時もあるのでバグ覚悟で配布するときもあるけど) DLLにしちゃうと使いまわしてバグが出た時にめんどくさいんだよ・・・
DLLを野放図に作成するのは賛成できないなぁ。 やはり基本どおり、ある程度再利用可能な形に使いやすくまとめた形でエクスポートすべきだと思う。 (エクスポートという用語自体が古臭い用語だというのはさておいてだ)
ListViewコントロールでスクロールバーをスクロールさせるメソッドかプロパティって EnsureVisibleしか無いの?
TopItemもあるよ
webBrowser1のDocumentCompletedの中で InvokeMember("click");などして更新した際の読み込み完了は、 どう取得すればよいでしょうか? Whileで完了待ち以外でお願い致します。
>>439 ありがとー やっぱこの当たりしか無いのか・・・結構不便だな・・・
システム全体のマウススクロール量が3行だけど自アプリ内だけスクロール量を1行にしたくてアレコレ調べていたんだけど
VC++MFCならCListCtrl::Scroll()で簡単にできるんだけど.NETのListViewだと簡単な方法が見つからない・・・
結局WM_MOUSEWHEELをハンドリング→スクロール位置を特定するために→TopItem取得→
→ListViewの各行の高さを取得してリストの表示可能行数を計算→EnsureVisibleで無理矢理スクロール
もしくはMFCのListCtrlをCOMコンポーネントにして貼り付けるやり方しかないのかな・・・面倒臭すぎるわ・・・
> 自アプリ内だけスクロール量を1行にしたくて これだけなら別に大した計算もEnsureVisibleも必要なくTopItemだけで十分だと思うけど
>>442 どうやってやるの?
自分も最初はそう思っていたけどイザやってみると簡単にはできなかったよ
>>442 あ、ごめん簡単に出来るわ
TopItemって取得だけじゃなくて設定も出来るのかすまん
ちなみにWndProcのオーバーライドも不要 MouseWheelイベントの引数MouseEventArgsはHandledMouseEventArgsにキャストできて、 このHandledをtrueに設定すればデフォルトの動作を無効化できる
>>445 ありがとう へーこんなんもあるんだね
ずっとVC++やっていて最近C#始めたからこの当たりの勝手がよく分からなかったんで勉強になったわー
質問よろしいでしょうか? ファイルの起動を監視して起動したファイルのデータ(名前やパスなど)を取得する方法がわかりません よろしくお願い致します
Processクラスあたりのじゃだめなのかな?
監視する専用のクラスがあったな 忘れたけど
>>436 リンクしている使い回しロジックではバグらないとでもいうのか・・・
分離しとけばアセンブリをコピーすれば済むのに、リンクしなきゃならんだろが。
じゃあ結局ソースコードはどう管理すればいいの? どこにどのソースあるか忘れるから資産が増えないんだけど
たとえば、IO関連なんて毎回書いてて面倒 バイナリで書き込むにはどうするんだっけ?って毎回ヘルプみて JISで読み書きするにはどうするだっけ?とか てか、一行でファイル書き込みできるようにしてくれよな
資産が四散
フォルダにコード片つっこんどいて grep する これで充分
そういうものの成れの果てがphpじゃないか
>>452 System.IO.Fileに結構その手のメソッドが用意されてるけどな
StreamWriterでもさ、List<string>とかの場合 何度もStreamWriterを呼び出してインスタンス作らせるって無駄があるから List<string>を引数として書き込めるメソッドを作るわけよ そういう入出力クラスを毎回書くのが面倒
>>458 >>456 じゃないけどだからそれなら File.WriteAllLines が
あるだろ
それか、string が各々行じゃないなら String.Concat ->
WriteAllText か
一行だろこれ。
>>460 それ2008からあるの?
知らなかったわw
2005(.NET 2.0)からあるわい
2008C# で作った dll を 2003C# で作ったプログラムから使えるって本当ですか?
2001のころの参考書見ながらだからずっと古いやり方してたわww やっぱ参考書は旬のモノを買わないとだめだなw
たまにヘルプでも眺めるのもいいもんだよ
>>464 それ Generics すらないんじゃないか?
はっきりいってその古さだとたぶんゴミ知識だぞ現状。
ごくごく基本的なことは別として。
Genericsもないよw たまたまここで知ったから使ってたけど C#300の技って奴だけど、その知識が焼きついててそればかり使ってたな というか、ライブラリ多すぎだよ
無知をライブラリの多さにせいにしたかw
>>467 別にライブラリやイディオムを全部覚える必要は無いんだよ。
必要に応じて使い方が分かればそれで済むこと。
――まあ、だからJavaやC#はネットでググってサンプルコードを
コピペするだけの作業、なんて揶揄されたりするんだがな。
オレは別にそれが悪いとは思わない。それで最短の時間で開発が進められるなら。
いや、確かに情弱だけどさ サイトもFile.WriteAllLines使ってなくて、2003の頃のサンプルだし まあそりゃ10年近く経ったら言語も進化するよね というか、新しいクラスってどうやって見つけてるの?
Visual Studio 2005で.NET3.0って使えないの? 使えるようにする裏技とか無いの?
ない
3.0のdll参照したら使えるよ もちろんWPFデザイナなどが使えるわけではないけど
マジで?やってみる
WPF用のプラグインが出てなかった? 今もダウンロードできるかどうかは知らないけど。
ない
あれは未完成で使い物にならん あんなゴミ使うくらいなら2008Expressを使った方が遥かにいい
でももうちょっとでVS2010が出るから今2008を買う気にはなれない
MSDNだから只で手に入るお 待ち遠しいお
買わなけりゃいい
EEだしな
EEでどこまでがんばれるかな。 フリーソフト作家として問題なくやってけるだろうか
EEってどんな制限があるの? 知っているのは 開発環境用のプラグイン、MFC、ATLが使用不可。64bit版非対応、モバイル開発不可くらい。あと何か致命的に困ることって何かある?
うん
- セットアッププロジェクトが作れない。 - アイコンライブラリが付属しない。 でもメニューやツールバーの標準アイテムにアイコンが入ってるのは謎。 あれライセンス的にどうなってるのか
知り合いの学生に頼み込んでDreamSpark入ってもらえば
UMLもないね
2008 って .NET 4.0 使えるようになると思う? SP3 はあるのか?
今のところ情報は出てないっぽいんで、ないと思っていた方が後でガッカリしなくて済むぞ
MSとしても特にメリットは無さそうだし
>>483 ここはC#のスレだからMFC/ATL関係ないし64bit版も問題ない
>>459 HPを紹介してくれた
親切な人です
DB関係でいいHPありませんか
EEってVSSも使えないよね、たしか。 個人でやる場合はSVNとか使うから別にいいけど。
いまどき、VSS使ってるとこなんてろくなとこじゃない。 MSでさえ使ってないわけだし。
>>494 じゃあMSは何を使ってソース管理してるんだ?
VSS
Windows7ってxml読めないんですか? せっかく.NETで作ったのにxmlファイルが読めないらしいです…
>>500 XmlSerializerでオブジェクトをxmlファイルに保存したものが
Windows7だと読み込めないみたいなんですよねえ
>>501 らしいとか、みたいとか、なんだ。
そんないいかげんな言葉じゃなくて実際に試してくれ。
実際に試せば原因だって分かるだろ。
例えばmsxmlは複数のバージョンがあるから、.NETが古いバージョンのものを参照していれば読めなくなることだってあるだろうさ。
>>501 おまえのそのOS、5元の奴じゃね?
普通にシリアライズしたもの読み書き出来るんですけど
64bitでも
スレ違い。Windows 7 スレいけば?
え?スレ違いかな?
全然スレ違いじゃない。
やり方が悪いんだろ。コードも示さずに文句言うなハゲ
やった バージョンアップ案件で金が取れる!
Win7だと.NET1.0と1.1は完全に動かなくなるんだよね?
マジ?
黒歴史だから消えてくれた方がありがたい
Win7のXPモードでも.やっぱNET1.1はサポートされないの?
513 :
デフォルトの名無しさん :2009/10/24(土) 13:37:22
MSDNっていつから変わったんだ? スクリプトフリー表示さいこうじゃまいか
以前の軽量版と同じじゃね?
Windows Mobile エミュレータ使ってるんですが、コンパイルした実行ファイルは自動的に発行されますが プラグインなどはどうやってエミュレータ内に発行すればいいんでしょうか? エミュレータの中のディレクトリやファイルって本体のイメージファイルの中にあるみたいで テストのたびに共有フォルダからエミュレータ内のファイルエクスプローラーでコピーすればできるんですが・・・ VSの機能ではやれないでしょうか?
C#は2001のころの知識って 何がしたいんだよw
>>502 7環境が無いからユーザーの意見を聞いただけ。
試してくれって言ったって環境が無いんだからしょうがないじゃん。
環境が無い事を責めないで…。
.NETは一応2.0でビルドしてるんだけど、XmlSerializerメソッド使ってるんだけど古いからだめとかあるのかな。
ていうかせっかく.NETなのにそんなんじゃだめじゃんねー。
>>517 まあ別に
>>502 が責めてるようにも客観的には思えないけどね。
ちなみに、Windows7はMSが評価用のを提供してるから、
君にその気さえあれば試すことはできる。
VMwareとかVirtualPC使えばPCやHDDを新調する必要もないしね。
(もっともPen4マシンとかだと正直重くて辛いけど)
>>509 .NET1.1の扱いはVistaと同じではないかと。
インストールは問題なくできる。
64bit版は提供されてない。64bitOSでは32bitモードでのみ動作。
ただし、VS2003は未サポートなのでVSでの開発は別の環境が必要。
C#でif,else if での3つ以上の入れ子は可能ですか?
やってみて駄目だったらまたおいで
>>520 そりゃあ、
if (b1) {
.....
} else if (b2) {
.....
} else if (b3) {
.....
}
っていう書き方は
if (b1) {
.....
} else {
if (b2) {
.....
} else {
if (b3) {
.....
}
}
}
の{}ブロックを省略してるだけだから、いくらでも。
エラーでてもパソコンが壊れるわけじゃないんだから、とりあえずやってみればいいと思う
10万回の入れ子は大丈夫でした。100万回でこんなの出ました。 fatal error CS1647: '' の付近でコンパイルするには、式が長すぎるか、または複雑すぎます。
でっていう
コンパイラの制限なのかCLRの制限なのかどっちなんだろう
どっちでもいい。
以前人工知能を開発しようとしたものだが 実装されている機能は 自分でメソッドやフィールドを作成 自分でファイル入出力 自分を継承した子供を生み繁殖 これで人としての機能はほとんど与えたはずなんだが 「こんにちは」と言っても反応してくれない ずっとセックスと繁殖ばかり繰り返してる 困ったものだ
530 :
デフォルトの名無しさん :2009/10/24(土) 21:00:58
TreeViewコントロールを使用しています。 あるノードがすでに展開されているかどうかを調べ、まだ展開されていなければ展開して選択し、既に展開されていたら選択だけをするようにできたらと思っていますが、どうすれば既に展開されているかを調べることができるでしょうか?
TreeNodeのプロパティくらい見てるか? 見てないなら見てみろ
532 :
デフォルトの名無しさん :2009/10/24(土) 22:03:10
>>531 すみません。プロパティを見ました。ありがとうございます。
選択されていてかつ、画面に表示されているかどうかを把握することはできますでしょうか。
もし、展開はされていますがノード数が多くて画面の外に隠れている場合(スクロールバーを異動させてはじめて見える場合)、
TreeViewの先頭に持っていきたいと思っていますが、それは可能でしょうか?
533 :
デフォルトの名無しさん :2009/10/24(土) 22:06:01
>>532 ですが、失礼な文章になってしまっていました。すみません。
ご回答、よろしくお願い申し上げます。
可能 TreeViewとTreeNodeのプロパティを見ろ
535 :
デフォルトの名無しさん :2009/10/24(土) 22:08:28
>>532 ノードは開始位置のx、yの座標を持っているんじゃなかったかな。
ただし隠れていたらその座標がどうなっているか分からない…。
また、あるノードをTreeViewの先頭に持っていく方法はあるのかな。
一度全部畳んでエクスパンドするしかない…?
536 :
デフォルトの名無しさん :2009/10/24(土) 22:09:42
画面に見えているか隠れているか分かるもんなの?
どっちも用意されてる
538 :
デフォルトの名無しさん :2009/10/24(土) 22:21:13
EnsureVisibleがあるけど、指定のノードを先頭行に確実に持っていくことはできたっけ?
確実には無理だけどな、一番下のノードはどうやっても先頭には持って行けない
540 :
デフォルトの名無しさん :2009/10/24(土) 22:58:56
例えば5行目に見えているノードを1行目に持っていくこともできたらいいのになぁ。
静的クラスの自動実装プロパティを初期化する方法って存在しないの?
>>543 探し求めていたのはまさにこれでした!ありがとう!
>>542 静的クラスの意味を考えてみろ。オーバーラードじゃだめだろ。JK
初期化を行う静的メソッドを用意して呼んであげたらどう?
思いっきりC言語っぽくなるが、それもまたアリの方向で。
ぼくはオーバーワーク^^
ツマンネ
548 :
デフォルトの名無しさん :2009/10/24(土) 23:35:03
検索機能を付けたいと思い、 テキストボックスのテキストチェンジドイベントを使用したのだけど、 例えば「アキヤマ」と検索ボックスに入力してEnter確定したとき、 「アキヤマ」でテキストチェンジドイベントが起きるだけではなく、 「アキヤ」 「アキ」 「ア」 の4回テキストテェンジドイベントが発生しているようなんだ。 この事態を回避するには、どんな手段がありますか?
>>548 Enterを押した時だけイベント起せばいいんじゃないのか?
入力の度に判定してるなら、確定したときだけ判定するようにすればいい
なんかプログラマに向かない人の発想臭いよなあ・・・
MSDNくらい読めよw
いっそ incremental search にしちゃえ。
俺もそう思った。 回避するんじゃなく補完機能を付ける方に変えれば?
いまXMLの暗号化を触っているんだけど、ここで使われているキーは「RijndaelManaged key = null;」とされていて、 自分で決められたbitを指定しないとエラーとなってしまう。 ここで、ある量のbitを吐くメソッドを適当に作ってキーを生成しているんだけど、もっと効率のいい方法ないかな? 本当は効率とかどうでもよくって、ある共通キーを作成するためのライブラリが.Netにあればなと思ってるんだけど、 そんなおしいものってある?
RijndaelManaged.GenerateKey()
共通鍵暗号技術の基礎を理解していないと思われる
マスターシークレットの生成は暗号の強度を決定する極めて重要な事項ですよ
>>555 の鍵は速攻で破られるので絶対に駄目です
堅牢な乱数が欲しいならハードウェアの乱数器を導入すべき
安全性が低下しても良くてお手軽にやりたいならSystem.Security.Cryptography.RNGCryptoServiceProvider.GetBytes()を使う
共通キーというのは、ネットワーク外のデータ交換でファイルの認証に使うものだと思っているんですが、まずそこが間違っているのでしょうか? やりたいことはネットワークを使う認証ではなく、単にデータのやり取りを行うとき、「このデータはここから発行したんだよー」 という文字データを暗号化して偽装されないためにするためです。 あのでアプリケーション内や、リアルタイムで認証などではなく、ある決められた文字で暗号複合したいなぁと考えています。 とりあえずちゃんと調べてきます。 ごめんなさい・・・
559 :
デフォルトの名無しさん :2009/10/25(日) 01:24:44
>>550 IME変換を確定する時のEnterって検出できるの?
>>559 しょーがねーなまったく
private void comboBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if(e.KeyChar == '\r')
{
}
}
URLを日本語にする為にUTF-8からShift-jisに変換したいのですが良い方法はありますか? 検索したところ、まずbyteに変換してShift-jisに戻すと書いてあったのですが文字化けしてしまいます
staticクラスのフィールド変数も初期化しないと使えないのでしょうか?
>>563 というか、初期値が入っている。
オブジェクト型ならnullもしくはデフォルトコンストラクタの結果だし、
整数値なら0だし、bool型ならfalseだ。
それ以外の値を臨むなら変更してやる必要がある。
565 :
563 :2009/10/25(日) 04:16:53
>>564 なるほど
うまく言えないんですが
オブジェクト型の場合、nullのままだとそのオブジェクトのプロパティなどは使えないんでしょうか?
つまり戻り値が常にnullだったりするのかな?
あ?
>>562 それも試したのですが、変な漢字(中国語?)が混ざってしまい正常なファイル名を出力できません
もしかして一回文字化けした文字は直らないのでしょうか?
>>565 System.NullReferenceException
>>567 どこに原因があるか掴みづらいので
URLがどこから来たのかも含めて流れ図にしてくんない
テキストファイルを一行ずつ配列に入れるにはどうすればいいんですか?
File.ReadAllLines
テキストファイルを一行づつコンボボックスに値として取り込むなら 配列使うのが最善ですかね?
最善かは知らんが通常はそれで良いんじゃない
どうしても自作ソフトを組むとタスクマネージャで見たメモリ使用量が 20mとか30mとかになってしまいます WMPのような再生するソフトでも、実際に見てみると7m程度しか使ってないのに 同じようなソフトでもこんなに変わるものなのですか?
同じって、、、.NET同士で比べたら?
.NET同士だとそう変わらないのは知ってます ですから、その理由が知りたいのです。 どんな技術が使われているのでしょう?
.Net Fxのライブラリ群をメモリにマップするから使用量が多く見えてるだけだろ
578 :
デフォルトの名無しさん :2009/10/25(日) 10:30:19
Treeviewで、「東京本社\\神奈川営業所\\山田花子\\車種A」 というノードがすでに追加されているとします。 今、ノードが全て折り畳まれている状態で、 上記のパスを直接指定してノードをエクスパンドする方法はありますでしょうか? 今は、ノード名を1つ1つ検索した上で展開しているのですが、 パスがすでに分かっている場合は、ダイレクトに展開できたらと思っています。 よろしくお願いします。
TreeViewにおけるパスは一般的に一意性があるモンじゃないからなー そういうのは用意しづらい
この「同じようなソフト」の意味がわからん。
ワーキングセットだけ見ててもしょうがないぞ。
582 :
デフォルトの名無しさん :2009/10/25(日) 10:45:02
>>579 なるほど…ありがとうございます。
同じパスが併存する可能性もありますものね。
ソリューションに複数プロジェクトを登録して プロジェクト同士が相互に参照するような設定はできないと思うんですが その場合は参照が必要なプロジェクトに小分けして相互参照を回避するのが常道でしょうか?
うちの環境で試したけど WindowsMediaPlayer COMコンポーネントを介して動画を再生したら、本物のWMPで同じ動画を再生するよりメモリ使用量は少なかったよ。 たぶん無駄なデータを保持しているとかそんな落ちでしょ
XP以前とVista以降でタスクマネージャの既定の表示項目が違うというのもポイント
ファイルをサーバ上に用意して、 起動ごとにそのファイルを取得、 ,ごとにリストボックスに表示させることは出来ますか
簡単ですね 「ネットワーク繋がってないです」みたいなオチが無ければ
取得までは出来るんですが、 それをどうやって,で分けて持つかが分からないです 参考になるサイトとか無いですか?
>>590 ええw
参照設定で追加できませんってエラーが出るのはどういう場合でしょうか?
お願いします!お願いします!
>>589 Stringクラスのstaticメソッドを探してみろ
>>589 Googleに「C# 文字列 分割」って入力するといっぱい出てくるよ
目の前の箱は万能な箱
お前を消す方法ってググっても出てきません
>>591 いやどうやっても上手くいくんだが
むしろそのエラーの出し方が分からんw
596 :
デフォルトの名無しさん :2009/10/25(日) 11:15:03
昨日からの質問で恐縮ですが… A店 Bさん Cさん … Zさん というノードが作成されているとして、 Zさんのノードを検索した時、ZさんのノードがTreeViewの下端に表示されてしまいます。 これは、Aさん〜Yさんの兄弟ノードが25行あるために、下端までおいやられているからだと思いますが、 Zさんのノードを一番に上に表示させるには、 プロパティに座標などを指定する必要があるのでしょうか。 または別の方法があるのでしょうか。 A〜Zさんには子ノードはありません。 よろしくお願いします(>_<)。
>>583 循環参照はできないので、ツリー構造を取るのが基本。
>>595 >>583 じゃないけど、出来ないよ?
プロジェクト間の循環参照のことでしょ。
こういうメッセージが出る。
「'A'への参照を追加できませんでした。このプロジェクトを参照として追加すると循環する参照関係を生じます。」
というわけで、
>>583 は自分の言うとおり、中身の整理をした方がいい。
ああプロジェクトの依存関係の参照のことを言っていたのか そりゃ出来ないわ
100kくらいのテキストをStringで宣言してるんですが これ関係無いの?
602 :
583 :2009/10/25(日) 11:37:45
ありがとうございました すぐとりかかります
>>601 長いテキストはテキストファイルに保存してリソースにしたほうがいいと思う
('A')ア"ア"ア"-
605 :
デフォルトの名無しさん :2009/10/25(日) 12:01:33
>>600 お返事ありがとうございます。
順番は変えずに、Zさんのノードを先頭位置に表示させたいんです。
(検索でヒットしたノードを常にTreeviewコントロールの先頭行に表示させたいと思っています。)
どうすればいいでしょうか…。
つってもA店の下に他の店が無かったらZはどうやっても最下段にしか表示できんが
607 :
デフォルトの名無しさん :2009/10/25(日) 12:26:29
>>606 ありがとうございます。
その下にB店、C店が続きます。
EnsureVisibleで表示する以外に、もっと細かく表示位置を指定できたらと思っています。
>>607 まあ、例えば店の名前の前に整数値でIDを振ってみるとか。
でも、ツリービューは最善のUIじゃないかもしれないよ。
リストボックス+ボタン×3、せいぜい検索用のコンボボックスをつける程度の
UIのほうが一般的じゃないかな。
だからプロパティ確認しろっていわれてんだろ
610 :
デフォルトの名無しさん :2009/10/25(日) 12:55:24
確認したけど、先頭にあるかどうかを示すプロパティはないみたいなんです。
あきらめろよ。
612 :
デフォルトの名無しさん :2009/10/25(日) 13:07:18
613 :
583 :2009/10/25(日) 13:30:55
すみません プロジェクトをいじってるうちに 定義済みの型 'System.Object' は定義、またはインポートされていません こんなエラーが出るようになってしまいました 参照設定もusingもsystemを入れてありますし、エラーにコードの場所が示されません これはどうしたらいいでしょうか?
>>613 プロジェクトのプロパティのビルドの詳細設定に、「mscorlib.dll を参照しない」
とうのがあるだろう、チェック入ってたらはずせ。
作り直せよ
配列を返す場合は private string[] aaa() { return }
切れてるぞオオオオおお
618 :
583 :2009/10/25(日) 14:17:12
>>614 サンクス!!参照設定いじってるうちにmscorlibへの参照が消えてました! 助かりました
問題 1.LinQとは何か?一行で答えよ 2.WPFとは何か?1行で答えよ
ググレカス
宿題スレにでもいけばいいのに
今までhoge.exeと同一ディレクトリにXMLで書いたhoge.configを置いていたけど 3.5になってから下記エラーでて設定ファイルを読み込むことも書き込むことも出来なくなってた。 hoge.configを別の名前にするとちゃんと読み書きできる。 なじぇ? [System.Configuration.ConfigurationErrorsException] = {"構成システムを初期化できませんでした。"} InnerException = {"構成ファイル hoge.config には、ルート <configuration> タグが含まれません。 (D:\\Visual Studio\\Projects\\hoge\\bin\\Debug\\hoge.config line 2)"}
exe.configはもともとプログラムから書き換える類のものではないから。 はじめから使い方が間違っている。
>>624 すいません、hoge.configであってhoge.exe.configとは書いてないのですが
めでたしめでたし
解決してないがな
>>625 インストール後に設定を切り替えるようなことをするのは、
ユーザー構成ファイルを使えばいい。
>>625 そのつもりがなくても、VSがhoge.exe.configと同じ扱いをしてるから
そういうエラーが出てるってことなんじゃないの。
ネット上から、,で区切られているサーバ一覧を格納したファイル (aサーバ,bサーバ,cサーバ,....)から、 配列Aを作り、コンボボックスに一覧として追加する。 コンボボックスから、aサーバが選ばれたら、 ネット上からaServer.txtを取得して表示・・・という事がしたいのですが、 どうやってAサーバが選ばれたら、aServerを取得するという処理を行うかで悩んでます SelectedIndexで0Server.txt、1Server.txtを取得すればいいのかと思われますが、 そうするとサーバ側の管理が面倒になってきます。 また、コンボボックスのサーバ名は2バイト文字も使うため、 サーバ側でaサーバ.txt、cサーバ.txtのようにすればいいのだと思いますが、 サーバ側は1バイト文字しか扱いたくありません。 こんな場合だと、皆さんはどうコーディングするのでしょう?
いやサーバをServerに置換するだけじゃないのか
>>631 サーバって書いてあるからURLかと思ったら、ただのファイル名なのか。
配列Aをただのstring配列じゃなくて、クラスなり構造体の配列にするとか
サーバ名が一意な設計ならDictionary使ってもいいし
String.Replace
>>631 サーバ名とサーバのファイル名との関連はどう付けてるの?
プログラム側で決めてしまって良いなら、サーバ名とファイル名(パス)の
対応表をプログラム内か、設定ファイルにでも作っといてそれと照合するようにするけど。
ファイルならこんな感じ?
0,aサーバ,aServer.txt
1,bサーバ,bServer.txt
可能なら、「サーバ一覧を格納したファイル」の書式の変更をお願いして
上のような情報もそのファイルに持たせちゃうかな。
>>635 そのように関連付けしたかったのですが、
配列変換の方法が,で区切って取得するという方法なので、
「サーバ一覧を格納したファイル」から関連付けするのが出来ません。
やはり、この取得方法を変えないと駄目ですかね。。
二重に区切ればいいようなだけの気もするがな A\tB,C\tD,E\tF
どんだけセンスないんだ 最近のプログラマは
仕様にないコード書くなやって言われるうちに頭が固くなったのだ
この程度の低級処理ならセンスより技術だと思う
細かい実装なんて他に影響が出なければどうでもいい
初心者スレだし、こういう質問があってもいいと思うけどな。
643 :
小学生 :2009/10/25(日) 21:19:45
ここだけみて最近のプログラマ全体をわかった気になってんじゃねーよ
メモリリークって何ですか?
アルゴリズムを考え出すのってやっぱり論理ですか? たとえば1から10までの整数から(重複ありで)3つ取り出して四則演算を2回だけ使って合計が10になるものをすべてだそうとします。 このとき、論理的に出そうとするならば、演算は(+,+)、(+,-)、(+,*)…などと考えて、数字も(+,+)の場合の数字は(1,1,1)から順次調べていく方法しかないんですかね? それともこれとは別の直感的なひらめきで計算量をぐんと減らす手段とかも思いつけるものですか?
なんだと、このおかちめんこ
総当たりでやるのは、全然論理的じゃないと思うんだが。 1〜10で、四則演算二回だとすると、終わりの一回はかなり限定的になるだろ? たとえば、+ の場合。x + {1...10} = 10 でいえば、10種類な訳。 そう考えると、一回目の演算で {0...9} になるのを探せばいいってことになる。 そう考えると、だいぶ楽じゃね?
シリアル化ができないエラーが出るんですが どこにエラーがあるのかさっぱりわからないorz シリアル化っていくら読んでもよく理解できないんですが、 保存なんかするつもりもないし、そんなコード書いた覚えもないのに・・ もしかしてVSが勝手に何かをやってるんですか?・・・
>>647 なるほど、そうすれば確かに入らない場合を除いて計算するのでだいぶ計算量は減りますね。
というと、端的に言えばアルゴリズムの改善というのは必要ない部分を削っていって組むプログラミングのことと考えていいのですか?
整数2個と演算子1個で、結果の整数1個が得られる 結果とある整数と演算子1個で整数10が得られるようなある整数が範囲内に存在するか、とやればループが3→2に減る 整数存在判定めどいけど
たまに妙な所からブレークスルー入るけど 基本は詰め詰めだろう
アルゴリズムなんて寝て起きたらひらめく物だと思ってる俺
>>651 でもそれだと、たとえば10÷3は整数でないですが10÷3×3が10になるっていうことがありえてしまいます
O(n^2)のことばかり考える
>>656 例外処理をしたら帰って処理が複雑な気がするぞw
/3*3とか/3*6とかたくさんあるだろjk
女子高生がどうしたって?
>>654 何を言いたいのかイマイチ分からん
10/3*3が9になって欲しいのか10になって欲しいのかそれとも9.9999...か
たとえば(10/3)*3が10になって欲しいのなら、
分数型を定義すればいいだけでは。
C#一切関係ないなあ・・・
そうですか、みなさんいろいろ意見出していただいて参考になりました 納得いった部分やそうでない部分もありましたがこれからもいろいろ考えていきたいと思います ありがとうございました 遅寝は体に悪いので寝ますおやすみなさい
小学生?
>>659 すいません、要はアルゴリズムの最適化を行う手順みたいなものがあるのかなということだったんです。
すべてに通用するようなことで…。
一般的な総当りを考えてそこからひつようのなさそうな部分を削っていくことがアルゴリズムの最適化になるのかそこが疑問だったのです。
今日のレスではそのような考え方に近いものをみなさんおっしゃるのでそういうことなのかなと考えたのです。
でも、なにかまったく違った角度から捕らえる何か(ひらめきのようなもの)がアルゴリズムの最適化になるのかわからないのです。
>>654 は
>>651 さんのアルゴリズムの考え方でちょっとそれはまずいのではと思ったので端的に思いついたことを書きました。
そもそも何を求めるのかよくわかんないなあ (A op1 B) op2 C = 1 これを満たす全ての{A, B, C, op1, op1}の組み合わせ(?)を求めるとしても、 まあ(A op B)の部分で除算以外は交換法則が成立することは考慮して重複は除外するのは 当然としても、 (9 + 9) - 8 (9 - 8) + 9 こういうのも重複とカウントするのか。
>>645 組み込みだと、その組み合わせをテーブルとしてあらかじめ持っておくのが正解。
演繹、帰納は、モノを考えるときの基本的なやり方だし。 どっちがいいとかってことじゃないだろ。
理論計算機科学みたいな学問もあるからな。 最終的には数学とか論理学のお勉強しなさいってことになると思うよ。 一般化されたアルゴリズム最適化の手順なんてのは流石に無いんじゃないかしら。 バブルソートをクイックソートに昇華するのと 巡回セールスマン問題の効率化方法に共通点は今一見いだせない。
もはや俺にはイミフなんだぜ レベル高すぎなんだぜ
>>663 そもそも問題文に重複の除外なんて書いてないのでは
BM法とかって果たして論理から出てくるものかな・・・?
BM法は出てこないこともない気がする
このスレは突然次元の高い話題が出てきたりして話が始まるから困る 俺には最初のアルゴリズムの話がわかったようでわかってないあやふやな質問に見えたんだがわかるやつにはわかって話が進んでるんだもんな
>>672 キーワードをググってその先斜め読みしてわかったような事書き込めばOK
レベル高そうに見えるよ
>>673 それならROMってる方がいいだろw
つかBM法程度のことくらいはプログラマとして知ってて当然だと思う。
滅多に使うことはないがな。
これからセックスなので落ちますね
楽しんできて下さいね^^
>>674 ぶっちゃけBM法とか知らなくても全然問題ないと思うよ。
普通にプログラマする場合は用意されたライブラリの使い所さえ把握してりゃ問題ない。
A列車で行こう4のような斜めのマス目の場合 どのマス目がクリックされているか知るにはどうすればいいでしょうか?
画像もなしに「ような」って言われて把握できるほど一般的なゲームだろうかそれは
A列車は十分一般的だろw
ググッたら単なる斜め45度の俯瞰視点だった
俺は知らんな。 ダメコモンセンスの範疇じゃないかね。
いや、オタクの一般的と世間の一般的を一緒にされてもな…
>>677 そりゃそうなんだが、裏でどんな処理してるか気にならないか?
実際に自分で書くことはまずはないだろうけど。
名前は分かるけどゲーム画面まで知ってる人間は少ないと思うなw
ごめん。 知ってるし、ドル箱環状線作れば終了なゲームだってことも覚えてる
ブラックボックス上等って考え方は好かん
そうですかオタ自慢乙です
罵り合いはいいから質問に答えてやれよw
>>687 じゃあ目の前のPCの動作を量子力学レベルで説明できます?
ブラックボックスでいいじゃん、って考え方は好きじゃないんだよね?
極論すぎる この世に全能と無能しかいないとでも言うのかよ…
できたところで無駄
いかにもデジタルな考え方がプログラマらしくていいだろ 馬鹿そーだけどな
バグがないと証明できると考えてるレベルのお花畑。
>>678 複素数って習ったかね
学生ならまだの可能性があるけど
697 :
678 :2009/10/25(日) 23:11:06
書き込んでから言語の問題ではないと気づきました 多分専用のライブラリもないと思うし・・ 他で聞いてみます
一々実装の詳細調べてたらきりがないけど 何か問題があったときに最適な方法を探して比較検討出来るぐらいの脳味噌は欲しいな。
DirectX(XNA)に回転用のメソッド無かったかw
690の考え方を逆方面に突き詰めると「動けばいい」に行き着くよな 最悪
>>695 P=NPだったらどうするんだよ!!
まだ証明されてねーぞ
問題 1.以下の定理を証明せよ。(制限時間5分) 3 以上の自然数 n について、xn + yn = zn となる 0 でない自然数 (x, y, z) の組み合わせがない
累乗記号抜けてないかね?
n=3 3*3+8*3=11*3
フェルマーの最終定理のつもりなのだろうけど、初期条件が抜けすぎて証明できないよ
両辺nで割れちゃうしw
707 :
678 :2009/10/25(日) 23:18:17
>>696 習ったはずだけど・・もう忘れてしまった
ちょっと調べてみますね
>>699 XNAにはプリミティブを2Dに座標変換する関数があるっぽいことをヘルプに書いてたけど
難しくてよくわかりませんでした
一応スプライト表示、移動ができるようになったのでさっそくマップを作ろうと思ったんだけど
女=悪 の証明 女は時間と金がかかる(girls require time and money)ので Girl = Time × Money ・・・(1) 時は金なり(Time is Money)という諺によると Time = Money ・・・(2) (2)を(1)に代入すると Girl = Money × Money ここで、金は諸悪の根源(money is the root of all evil)だから Money = √(Evil) したがって Girl = √(Evil) × √(Evil) = Evil 女=悪 (Q.E.D)
「証明」て書き込まれたからってそんなSPAMみたいに条件反射的にコピペ貼らんでもいいよ。
まあ言語の問題じゃないってのは正しい
VC#上でビルドしたり、直接の発行先で実行した分には問題無いのに、 その発行されたexeを別の階層に持って行くと、JustInTimeデバッガの画面で 例外のSystem.IO.FileNotFoundExceptionが発生するんですが、 この原因はどうやって突き止めればいいんでしょう。。
711追記 エラー出そうな所には、 try-catchで例外発生すればメッセージがでるようにはしてありました。 自作プログラムでJITデバッガが開いたのは初めてなんですが、 これはプログラムが起動する時点で致命的エラー出たって事ですかね? メインフォームが表示される前にこのJIT画面が出ました。
まずはスタックトレースを確認。
exe以外の必要なファイルを移動させてませんでしたというオチだろう。
あ、一度確認したのに・・・今全部のDLLを移動し直したら起動しました^^; これ、起動に必要なdllが見つからない場合のtryとcatchはどこに書けばいいのでしょう・・・?
>>707 XNAやDirect3D使うなら高校レベルの線形代数くらいは身についてないと無理
717 :
678 :2009/10/26(月) 00:17:20
数学苦手なプログラマ・・・だめじゃんw 一から勉強し直します ありがとう
ゲームって普通のプログラムより高度な数学知識が必要とされる気がする。
まぁ、それがゲームだし
C#実行中に、文字列でクラス名や関数名取り出す方法有りませんか?
文字列を用いてクラス名や関数名取り出す ってことはクラス名や関数名は分かってるんだろ 取り出す必要性ないじゃん
いや、実行中にデバッグダンプをしたいんだけど、その為にです
ますます必要なくね 対象ソースをデバッグ可能な環境にあるならデバッグコードでも差し込めばいいじゃん trycatchで例外にメソッド名を足して再スローするとか まあ、わざわざ茨の中に突っ込む理由がよく分からんが 君がやりたいなあと思ってることはSystem.Reflection名前空間内のクラス使えばできるよ これ以上詮索はしない
関数が、どの様に実行しているかのトレースダンプをログに出力したいことはありませんか? C++ で言うところの __FUNCTION__ 見ないな物です。 Reflection見ているのですが、なれない物で見つからない…
見ないな物
リアルに重箱の隅をつつくようなやつっているんだな
727 :
678 :2009/10/26(月) 08:17:41
ふー行列でできるんですね しかも、Matrixクラスがあるから超便利 なんとか実装できました ありがとう
WebBrowserコントロールでHTMLのプレビューをしたいと思うのですが WebBrowserコントロールにHTMLを流し込むにはどうしたらいいでしょうか? 一旦ファイルに落としてNavigateすればいいと思うのですが WebBrowser1.Html = "<html></html>" みたいな感じでできないものでしょうか?
DocumentStream
>>729 さんくす!できました。
WebBrowser1.DocumentText = "<html><head></head><body>あいうえお<br>かきくけこ</body></html>"
他人のプログラム調べたいんだろ
732 :
555 :2009/10/26(月) 16:04:21
結果できているんだけど、どうも不安。 「RijndaelManaged key = null;」をやめて、ある文字から256bitのbyte配列を返すクラスを自分でこしらえて使っているんだけど。 こういうのは.Netにはないでしょうか? 絶対あると思うのですが見つけられません。 keysizeとか指定しても全然違う数しか出ないし・・・
Rfc2898DeriveBytes ただし普通はソルトが必要。 まあ限られた用途なら固定値って手もあるが。
自分は、手入力のパスワードをSHA512でハッシュ化して、そのバイト長と、 IV+Keyのバイト長との最小公倍数で繰り返しXORかけたバイト列を分割 してIVとKeyに食わせるとか、よく分からないけどやってみてた。 無駄な努力?
無駄な努力だね
暗号なんて適当な乱数使ってxorで良いんだよ。
>>736 メルセンヌツイスタならそれでよさそう。
メルセンヌツイスタは次項予測可能だぞw それでもいいならやるがいいさ
RSAでいいじゃん
List.Findで一致するものがなかった場合は例外が投げられていましたっけ?
ここで聞くよりMSDN見たほうがはえーぞ
ExpressEditionって64bit用にコンパイルできないんですよね? じゃあWin7 64bitでは開発が出来ないの?
もともとC#で普通に作ったら64bitでも問題なく動く プロジェクトのオプションでx64とかあるのはネイティブコードとの相互運用を行う場合のため
EEだとアンマネージドDLLは32bitのしか使えないのか
んなことないだろ。
VSの「プラットフォーム」の設定はC#には全く関係ない
AnyCPUで作っておけばいい 実行が64bitのランタイムなら64bitのアンマネージドDLLが使える というかそれしか使えないし32bitのランタイムなら32bitのDLLしか使えない
そんなレベルだといろいろはまりそうだから、32ビット固定とかにしといたほうが無難。
どうせネイティブコードの相互運用っていったって大抵はWindowsのP/Invoke使ってるくらいだろ その場合注意する点はP/InvokeのときにIntPtrを適切に使うことくらいでしょ
うん。
Intの範囲変わらなかったっけ
変わらない。
16ビットから32ビットへの移行では、多くのシステムで、int 型が16ビット幅から32ビット幅になった類推から、 32ビットから64ビットへの移行でも、int 型が64ビット幅になり、long 型は32ビットのままのIP64モデルが使われるという見方もあったが、 そのようなデータモデルは使われていない (wikipediaより 適当に言ってるだけかと思ったわ。
.NETFrameworkでグローバルフックはできるようになるの?
出来ますん
intはCTSのInt32のエイリアスなんでしょ? "Int32"なのに8バイト幅だったら羊頭狗肉過ぎる
サードパーティー製のDLLで64bit版がないものを使う場合とかだな>プラットフォーム指定 共通アーカイバとかmp3infpとか。
MDXとかXNA
もうそろろそ128bitCPUも出てくるしね 次期Windowsでは32・64・128bitの3バージョン出すらしいし 数字リテラルの末尾にULを付けるだけのウハウハな仕事が舞い込んでくると良いぜ
public static int Baisu(int n); { return n*2; } これと同じ動作をするクラスを作りたいのですが どうすればいいですか?
public static class Hoge { public static int Baisu(int n) { }
public static class Hoge { public static int Baisu(int n) { return n * 2; } }
>>762 これメソッドですよね?
たとえば、クラスを配列のように扱えるインデクサみたいな感じで
配列を上記メソッドのように扱えるものがいいんですが
int Answer=Hoge.Baisu(2);
じゃなくて
int Answer=Baisu(2);
と使いたいのです
×配列を上記メソッドのように扱えるものがいいんですが ○クラスを上記メソッドのように扱えるものがいいんですが
そんなものは存在しません というかHoge.Baisuだと何がダメなのか分からない。
書き方は少々異なるがこういうのは? static class Hoge { public static int Baisu(this int n) { return n * 2; } } int x = 2.Baisu();
C#からだと駄目だが、VBからならHoge抜きで使える。 只、はじめからVBのModuleを使ったほうが早い。 using Microsoft.VisualBasic.CompilerServices; [StandardModule] public static class Hoge { public static int Baisu(int n) { return n * 2; } }
>>763 では「式の値がInt32構造体に暗黙的にキャスト出来るクラス」が欲しいって意味に読み取れるから
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class Baisu : IComparable, IFormattable, IConvertible, IComparable<int>, IEquatable<int>
{
・・・
}
int Answer = new Baisu(2); が答えに一番近い気がする
少なくともそれを実現して何をしたいのかは計りかねる
770 :
763 :2009/10/27(火) 05:18:10
ここの人のレベルすげーw でも設計見直したら必要なくなった
そんなもんだとも想定できてます 突拍子もないことを言い出す奴はまず設計がおかしいとな
チラシの裏をソースにされても・・・
PCに複数のマウスを繋いで各マウス毎に処理をわけたいんだがどうすればいい
ドライバが対応してるの?
DB定義書(excel)を読み込んで C#アプリのほうで改行しながら表示させるにはどうしたらよいのでしょうか・・ CREATE TABLE 〜 ( test CHAR(12) PRIMARY KEY, 〜〜 ) 見たいな感じでずらーっと下に表示させていきたいのです
>>776 どこができてないんだ?
取り込むところから出来てないのか
それとも取り込んだデータが加工できないとか・・・
Excelのデータの読み込み方がわかんない!ってことだろどうせ。 C# Excel でググるとサンプル付きでたくさんでてくるぞ。 それ見た方がここでコード片ちらつかせられるよりわかりやすい。
XMLファイルにNameとAge以外にNumberがあったとして Numberの値を取得するにはどうすればいいのでしょうか? XmlDataDocument mydoc = new XmlDataDocument(); BindingSource mysource = new BindingSource(); mydoc.DataSet.ReadXml(@"ファイル名"); mysource.DataSource = mydoc.DataSet; mysource.DataMember = "Person"; comboBox1.DataSource = mysource; comboBox1.DisplayMember = "Name"; comboBox1.ValueMember = "Age"; textBox1.Text = comboBox1.SelectedValue.ToString();
780 :
583 :2009/10/27(火) 17:21:26
<root> <data> data1 </data> <nodeA> <data> data2 </data> </nodeA> <data> data3 </data> <nodeB> <data> data4 </data> </nodeB> <data> data5 </data> </root> こんな感じのデータで、<root>直下の<data>にだけアクセスしたいんですが、<data>がどの位置に出現するかわかりません。 一番簡潔な方法を教えて下さい。 お願いします。
Form1にButton1を追加しました それでButton1をクリックするとForm1の背景色を変更したいので private void button1_Click(object sender, EventArgs e) { Form1.BackColor = Color.Yellow; } としても動きません Form1.BackColor というのが駄目っぽいのですけど どう書けばいいのでしょう
>>781 動かないってどう動かないの?
Form1って大文字で始まってるけど、それForm1のメソッドなら
this または省略でいいよ。そのハンドラはボタンをダブルクリックして自動でできたやつ?
>>779 一旦データ格納用のクラスAを作って
1データごとにAのインスタンスを作って格納
それをリストに入れて
それをデータソースにToArrayとかで入れてやれば?
>>777 遅れてすいません。
取り込んだときに表示を加工させたいです。
,が付いたときに改行させるように出来たりするのでしょうか
>>784 こんな感じ?
string aaa = "123,456";
aaa = aaa.Replace(",", ",\r\n");
txtData.Text = aaa;
>>782 >そのハンドラはボタンをダブルクリックして自動でできたやつ?
そうです
Formをクリックして背景色をかえる
private void Form1_Click(object sender, EventArgs e)
{
this.BackColor = System.Drawing.Color.DarkBlue;
}
というサンプルはMSDNにあるんですけど
ボタンをクリックしてFormの背景色をかえるサンプルが
WEB上にみあたらないのです
>>786 ダメっぽいというか
どんなエラーが出てるのか(コンパイルエラー?)
出ていないならその処理は通っているのか
>>786 Form1_Clickもbutton1_Clickも、Form1のメソッドなんだから
その中のthis.BackColorはForm1の背景色だよ。
public void Main() { string aaa = "123,456"; aaa = aaa.Replace(",", ",\r\n"); textBox1.Text = aaa; } で、どんな表示になるかと思ってやってみたのですが 何も表示されませんでした・・・ aaaに123,456入れてそれをリプレイスでなんか()のことをして 表示って感じと思ったのですが間違ってましたか? 初心者で完璧にごめんなさい
>>790 そのMain()が何処からも呼び出されてないんじゃないの?
そのMainとやらは[STAThread]なんだろか
ああすまんstaticじゃないから違うな
794 :
785 :2009/10/27(火) 19:20:31
IDEが今ないから手書きなんでその辺は適当にあてはめてほしかったんだが・・・ ボタン配置してそのクリックのイベントかなんかにでも・・・・ string aaa = "123,456"; aaa = aaa.Replace(",", ",\r\n"); messageBox.Show(aaa); こっちのが良かったっけ? ひとまず表示される結果は 123, 456 て表示されるよ
>>794 おぉ・・・出来ました。
ここから自分で使う用途に合うようにやってみたいと思います
大変ありがとうございました。
「' ' (16 進数値 0x19) は無効な文字です。 」と言われたのですがそんな文字が見当たりません! 検索すると16進数値の0xらしいのですが・・・ エラー回避で0xを削除?する方法はありますでしょうか? XmlDocumentl.Load(string);
俺らはそのxml見てないから 見当たりませんって言われても困るぜ
>>796 0xってのはこの数字が16進数だよっていう記号みたいなもの
16進数での19が無効な文字ってことだ
799 :
796 :2009/10/27(火) 20:30:40
あー・・・ 自分の間抜けさに目が覚める思いがしました!
>>789 >Form1_Clickもbutton1_Clickも、Form1のメソッドなんだから
あぁそうなのか
うん
動きました
有難うございました
ソースの記述を簡略化するために汎用的なクラスを作成中なんだけど いろんなひとのクラスをぱくってるんだけど こんなので本当に理解したことになるのかな?
>こんなので本当に理解したことになるのかな? こんな質問が出てくる程度の理解度なら。理解したことにはならないんじゃね。
このサンプル動きますか? 起動しているっぽいけどウィンドウが表示されない ms-help://MS.VSCC.v90/MS.VSIPCC.v90/MS.XNAGS31.1041/XNA/GoingBeyond_GameIn60Minutes.htm
みなさん数学など好きそうですので、これ問題出されたので一緒に考えてくれませんか?ちなみに明日回答もわかります。 問.みなさん"囚人のジレンマ"という話はご存知かと思います。 コンビを組んでいたスパイが2人とも別々の取調室で尋問をうけ、罪を問われる場面でどのように振舞うのがいいかという問題です。 具体的には以下のようになります。 1、自分も相棒も黙秘となれば証拠不十分なので不法侵入した罪だけでそれぞれ半年ずつの罪 2、自分だけ黙秘して、相棒が自白すれば相棒は司法取引で釈放に、自分は10年の罪 3、相棒だけ黙秘して、自分が自白すれば自分は司法取引で釈放に、相棒は10年の罪(2の逆パターン) 4、両方自白すればそれぞれ5年の罪 ┌──────┬──────┬──────┐ │自分\相棒 │. 黙 秘 ..│ 自 白 .│ ├──────┼──────┼──────┤ │ 黙 秘 .│(0.5年,0.5年) │ (10年,釈放)│ ├──────┼──────┼──────┤ │ 自 白 .│ (釈放,10年) .│ (5年,5年) │ └──────┴──────┴──────┘ (自分の懲役、相手の懲役) これを踏まえて、自分は相棒に協調するか、裏切るか、ということでこれに点数をつけてゲームをしてみました。 ┌──────┬──────┬──────┐ │自分\相棒 │ 協 調 │ 裏切り │ ├──────┼──────┼──────┤ │ 協 調 .│ (3点,3点) │ (0点,5点) │ ├──────┼──────┼──────┤ │ 裏切り .│ (5点,0点) │ (1点,1点) │ └──────┴──────┴──────┘ (自分の点、相棒の点) このような点数のつけ方で100人のプログラマが、どのように協調、裏切りを判断するかというところでプログラムを書いて対戦会が行われました。 100人が総当りで、1人に対しては200回勝負するというルールです。つまり99×200の試合をするわけです。 賞金のかけられた本気で挑む大会出場者たち。これ実は実際に行われたことのあるものです。 さあ、みなさんどんなプログラムが優勝したでしょう?アルゴリズムを考えてください。
宿題スレいけよハゲ
あ、ちなみにすべての試合が終わった後、合計した点数が一番高かったプログラムが優勝だそうです ぼくはすべて裏切りだと思いました。明日回答が教えてもらえるのでまた報告します。 一応プログラミングだと思って。この間アルゴリズムの質問してた方なんかもこれは結構いい問題のような気がします。 明日またレスします。おやすみなさい
>>780 string xmlstr = "<root>・・・(省略)・・・</root>";
XPathDocument doc = new XPathDocument(new StringReader(xmlstr));
XPathNavigator nav = doc.CreateNavigator();
XPathExpression exp = nav.Compile("/root/data");
XPathNodeIterator nodes = nav.Select(exp);
while (nodes.MoveNext()) {
Console.WriteLine(nodes.Current.ToString());
}
こうかな?まあ、XPathを使う。
>>804 相手が裏切るまでは強調する単純なアルゴリズムが結局一番強そう。
単にランダムに出すだけとか
取り合えず思いつく限りのアルゴリズムを考える 最初の数回の手で相手のアルゴリズムを予想 そこからはそのアルゴリズムに対して最適の手を出しつつアルゴリズムを訂正していく 相手がランダムに出さない限りこれが一番じゃね?
そういうのは「トートロジー」って言うんだよw 最強の手を考えれば最強だ、って言ってるのと同じじゃないか
言ってることに気付いてないだけなんだよ悪いけど。
まあ、一番とは言えないな 例えば相手のアルゴリズムが同じだった場合を考え出すと際限が無くなるし
>>814 じゃ、どこがか説明してくれ
俺馬鹿だからトートロジーでググっだけど俺の考えとは全く違うことのようだったんだけど
>>816 「相手に合わせて<最善の>戦略を採る」という方法論は、
「相手の戦略を考慮しない」という方法を特殊ケースとして含む。
つまりそれは単に「最善の戦略を採る」と言っているのと同じことだ。
であるから「相手に合わせて<最善の>戦略を採るのが一番」というのは、
最善の戦略を採るのが一番だ、というトートロジーに過ぎない。
・・・って言っても理解できないよねたぶん。
コピペに釣られてC#に関係のない話してんじゃねーよ
>>817 >「相手の戦略を考慮しない」という方法を特殊ケースとして含む。
相手が「相手の戦略を考慮しない」ときの話か?
それは常に同じ手を出すorランダム
このとき常に同じ手を出すって方法は容易に予測して最適の手を出せる
ランダムの時は最初に無理って言った
また、自身が「相手の戦略を考慮しない」特殊ケースはランダム以外では無いと思うが? 相手が少しでも考えた手を出す限り完璧とはいかないがある程度次の手が予測可能
なーんかズレてるけど、君の意見がトンマなのは「最善の戦略を採るのが一番だ」 って言ってるところなんだよだから。 そんなの終了条件がない再起呼び出しと一緒だって分からないかね。
IT土方が手を出せるような問題じゃないぞ あとは数学者に任せてぼろが出ないうちにやめとけ まあ最近は文系経済学者が偉そうに論じたりしてるけど・・・
>>821 相手のアルゴリズムを 予想 して
それに対する最善の戦略をとるってこと
もちろん相手のアルゴリズムがこちらの予想した物以外だったり相手がわざと騙す手をとった場合このアルゴリズムは意味をなさないが
あと
もし、本当にこのような大会があった場合の一番良いのでは?って言う方法を言ってて(要するに相手も人間の書いたプログラムとして)
数学的なジレンマの最適解を言ってる訳じゃない
あ、つい熱くなってしまった ここC#スレだった スレ違い長々とすみませんでした
>>823 だから最善の戦略って何?
最善の戦略はなんですか、って問いに「それは最善の戦略を採ることです」
って答えて何か意味があるの?
相手のアルゴリズムを予想する、って前置きしたことで何か言ったつもりに
なっているのかも知れないが、「相手のアルゴリズムを予想する」には
「相手のアルゴリズムを無視する」を特殊ケースとして含むから、それだけでは
何も言っていないのと同じであることは既に説明したはずだけど。
>>825 スレタイ読めない馬鹿がまだ騒いでやがる
ランダムと同じ程度には強いんじゃね?
あ、こいつ俺以上に馬鹿なのか なんもわかってないのはあなたの方だね
いや、俺のほうがわかってないよ
>>828 なんで俺のふりするんだよ
スレチだから謝ったのに
いや、俺の方がアホだ
うん
みんな知ってるよ
いちゃいちゃ
プロジェクトのソースを変更するので 新しいプロジェクト名にしてからやりたいのですが どうすればいいですか?
ソリューションエクスプローラから名前を変更したいファイルを選んでプロパティウィンドウでファイル名を変更 Propertiesから諸々の名前を好きなように変更 ソリューションファイルを手動で開いてパスも全部書き換える
プロジェクトを別に新規作成してソースコードを全部突っ込んだ方が早い気がする
>>803 XNAじゃないか。
試したけど普通に動いたよ。
新規作成した何もしないXNAアプリは実行できる?
IEnumeratorの結果をソートできますか?
841 :
注目 :2009/10/28(水) 11:08:11
テキストボックスの最後の行の値を取りたいのだがどうすれば取れる? いろんな状況とかパターンがあると思うがそのあたりは任せる ぱっと思い付いたのでいいから書いてくれ 頼む
内容を改行コードでスプリットして配列へ その配列の最後の要素がそうじゃね?
TextBox1.Lines(TextBox1.Lines.Length - 1)
VB?
ほんとだ C#だとtextBox1.Lines[textBox1.Lines.Length - 1]になるか
>>839 > 新規作成した何もしないXNAアプリは実行できる?
はい、動きます
GamePadState lastState = GamePad.GetState(PlayerIndex.One);
ステップイン実行したところ、Game1のフィールド変数のこの部分で固まるので
GamePadState lastState;
これに変更したら、うまく動作しました
動作環境は2008C#EE XNA3.1
パッドがPS2のコントローラーなのでこれが原因なのかな?
ほかのプログラムでは一応コントローラーは認識して動いているんですけど
>>848 XNAはXbox360のコントローラしか使えないよ
他のコントローラーを360のコントローラーに見せかけるドライバとかもあるけど。
ただ、他のPADが刺さってる状態で GamePad.GetState() がどうなるかはわからない。
環境あるとこで試してみようかな。
>>847 ジェネリックなコレクションの最終要素は
textBox1.Lines.Last(); でアクセスした方がいいのかな?
それとも非ジェネとジェネで別のアクセス表現が混在しないように統一した方がいいものなんだろうか?
System.Collections.Generic.IEnumerable → Hoge.Last();
System.Collections.IEnumerable → Hoge[Hoge.Length - 1];
これ公式のガイドラインとか無いのかな?
>>840 Enumerable.OfTypeまたはEnumerable.CastでIEnumerable<T>にできる。
そうすれば、OrderByするなり、ToListまたはToArrayしてそれぞれのSortを呼ぶといったことが可能になる。
ちなみに、
>>850 の場合でもOfTypeまたはCastを使う手が考えられる。
854 :
779 :2009/10/28(水) 18:26:13
>>783 ありがとうございます
調べながらやってみましたが、始めて2週間程度の自分にはまだ無理だったようです
>>852 でもこれってよく考えるとタイプセーフじゃなくない?これでいいんだろうか?
そんなもんIEnumerable(非ジェネリック)使う時点で仕方ないだろ 普通にforeach使ったとしてもforeach(Hoge item in 非ジェネリックコレクション)はタイプセーフじゃないよ
hmm...
最近LINQの魔力に取りつかれてて、殆どをLINQに頼るようになったんだけど、 何かデメリットや欠陥的なものを探してる。 俺を現実に引き戻してほしい。
キャッシュされない→参照のたびにいちいち再計算される
キャッシュしたかったらToArrayなりToListなり使えばいい yieldの仕組み上当然のことでむしろそれを狙ってやってるわけで欠陥でも何でもない
言い方が悪くてスマンね ToArrayなりToListなり使わないとキャッシュできないって言ってんだよハゲ
( ゚д゚) ( ゚д゚ )
そんなの普通にループで回しても一緒じゃんw 結局,結果を配列なりリストなりに入れるだろ? LINQはそのループの部分を抽象化してるだけだ
こっち見んな
866 :
555 :2009/10/28(水) 23:16:35
やっぱり自分の作ったクラスはどんくさくて使い物にならないことが判明しました・・・ ある文字を媒体に128,256bitなど指定したビット配列を返すクラスなどはないでしょうか? RijndaelManagedには乱数などを作成はあるのですが、共通キーとすることが前提なので ZIPのように「sage」見たいな文字を複合キーとする暗号化はどのように行うのでしょうか? よろしくお願いいたします。
鍵を手渡しするわけでもないのに無理矢理に共通鍵暗号を使う意味が分からない それなら大人しく公開鍵暗号で鍵交換すればいいのに
P2Pで手に入れたエッチな動画を親に見られたくないんじゃないか?
自分しかいないなら共通鍵で問題ないだろ 誰とも鍵交換しないんだから
データの認証のときは共通鍵より公開鍵の方がよいのかまったく無知で判断できませんでした・・・。 もう少し公開、共通の違いを調べてきます。
そもそもこの人が何をやりたいのかハッキリしていないからアドバイスできね
それはひみつのあっこちゃん
簡単に公開鍵とか言ってる奴はホントに分かって言ってるのか?
例のごとく、練習としてメモ帳を作成しているのですが、検索機能で行き詰りました。 ひとまず検索用のフォームを作ったのですが、その先が何をすればよいのかさっぱりわかりません。 ご教授願います。
String.IndexOfとTextBox.Select
OpenFileDialogなどのコモンダイアログのタイトルバーの色や背景色を変更したいのですが、どうすればよいですか?
コントロール パネル\デスクトップのカスタマイズ\個人設定\ウィンドウの色とデザイン そして、デザインの詳細設定... Windows7 なら。
ListViewの描画のちらつき何とかならないのかなって思っていたけど自己解決しました
じゃぁ書くなよww
883 :
583 :2009/10/30(金) 14:00:06
>>808 ありがとう!
XPathがやっぱり便利なんですね
怖じ気づいてたんですが正面からやる気になりました
俺だったらXDocument.Root.Elements("data")って書くな
直下にしか役たたんし、パターンによって別のやり方なんかしてたらバグの元。 だから俺ならXPath一択。
俺は常時XDocumentだな。LINQ信者なもんで
>直下にしか役たたんし 直下の話をしてんだよ 流れが読めない奴が口を挟むなクズ 大人しくミニスペック書いてろ
MoveNextとかもう見たくねーな。
直下の話ではねーだろ。 たまたまRoot要素が<root></root>なだけで。
じゃあこんなんで XDocument.DescendantsAndSelf ("data").Where(elm=>elm.Parent.Name=="root");
string xmlstr = "<root>・・・(省略)・・・</root>"; XPathDocument doc = new XPathDocument(new StringReader(xmlstr)); XPathNavigator nav = doc.CreateNavigator(); XPathExpression exp = nav.Compile("/root/data"); XPathNodeIterator nodes = nav.Select(exp); while (nodes.MoveNext()) { Console.WriteLine(nodes.Current.ToString()); } ↓ XDocument xdoc = XDocument.Parse("<root>・・・(省略)・・・</root>"); foreach(XElement element in XDocument.DescendantsAndSelf ("data").Where(elm=>elm.Parent.Name=="root")){ Console.WriteLine(element.ToString()); } ま、環境にもよるだろうが、どっちが簡潔だろうね。 俺ならXPath(笑)かな。
XPath関係のクラスってよー どうにも”無理やり作りました”って感じがあるよな…
XPath(笑)
LINQはもうC#の一部なんだし意味もなくLINQ拒絶する奴はほっとけよ 初心者もバンバンLINQ使え
XPath一択(苦笑)
何か湧いてるな
よくあること。
でも直下にしか役たたんとか言っちゃう
>>885 は頭悪そうだな
目玉の新機能だったのにそんな応用の利かない物である訳なかろう
まあ、それでも俺はXPathを使うよ。 男のコダワリだからね。
どーぞどーぞ この話終了ね
キャッシュされない云々言ってたのもこいつじゃないの
どうでもいいよ
>男のコダワリ コダワリじゃねーよww 正規表現書くのと自力でマッチングするのと同じくらい全く違うモノ。 使いどころ考えろっての。
正直、正規表現とLINQがあればかなりのことが出来すぎて怖い。 処理速度も悪くないし、for書くより可読性も格段に上がるし。なんかすげー怖い
怖がらなくていいのよ? ほら、力をぬいて。
何か話しが上手すぎて実に怪しい
別のスレッドで生成したコントロールにアクセスしたいときは 匿名メソッドをInvoke()する書き方しか無いんですかね? もっとスマートに書く方法か別のアプローチとかないですか?
正規表現==XPath、自力でマッチング==Linqという意味で書いたんだがな。
Linqが強力なのはわかるが、
http://msdn.microsoft.com/ja-jp/library/bb675184.aspx とか、
XElement customer2 =
(from el in co.Descendants("Customer")
where (string)el.Attribute("CustomerID") ==
(string)(co
.Element("Root")
.Element("Orders")
.Elements("Order")
.Skip(11).First()
.Element("CustomerID"))
select el)
.First();
に対して XPath なら
XElement customer3 = co.XPathSelectElement(
".//Customer[@CustomerID=/Root/Orders/Order[12]/CustomerID]");
と、敗北宣言だと思うんだコレ。
JSONのひとりがち
mp3ファイル再生のコードを書いてますが、 WMPコンポーネントを使うと、mp3コーデックが無いと再生出来ません。 mp3のコーデックが無くても再生できるようにする方法はありませんか?
コーデックのインストールをユーザに促すダイアログを出す
>>912 どうやれば該当コーデックが入ってるか取得出来ますか?
WMPのステータスを見ても、 バッファ→準備完了で、
そのようなメッセージが出ないので困っています。
また、コーデックについて詳しくないのですが、
mp3のコーデックをリソースとして持っておき、
ダイアログ表示時にコーデックのディレクトリに投げるということで大丈夫でしょうか?
914 :
デフォルトの名無しさん :2009/10/31(土) 12:08:40
VS2008で定義に移動(F12)した後、元の場所に戻るショートカットキーはありますか?
915 :
583 :2009/10/31(土) 12:15:50
なんか盛り上がってますね わたしは将来のバージョン対応を考えてXpathにしましたが・・・ さて <data> <Style>hogehoge</Style> </data> と <Style id="style1">hogehoge</Style> <data> <styleUrl>#style1</styleUrl> </data>
916 :
583 :2009/10/31(土) 12:16:32
あう、書き込んでしまいました 両方の書き方が許されてるXMLを処理するのにXpath一発でやれますか?
>>913 コーデックが入っていないことを心配しているってことは
作った物をフリーソフトとして公開でもしようとしているのか?
918 :
913 :2009/10/31(土) 13:41:40
>>917 その通りです。
友人のPCで試したところ、コーデックが見つからないようで、
再生出来なくて、私自身コーデックの導入方法など分からないもので、
試行錯誤してますが、やっぱり再生出来ません。
もし再生出来なかった場合のコーデックインストーラなどあれば良いなと思うのですが、
そんな便利なものありませんかね?
k-lite codec packでも入れれ
>>918 コーデックに詳しくない云々以前に一般常識が欠如していますね
コーデックをリソースに持ってPCにインストールする?
そのコーデックの法的な権利は誰に帰属していますか?
>>920 いきなり犯罪者前提かよwきめえ
俺のフリーソフトは他人のDLLをパッケージに含めてるし
他人のソース丸ごと取り込んでビルドもしてますがなにか?
聞いてねえし つか誰もお前のゴミソフト使わねえって
923 :
913 :2009/10/31(土) 14:21:34
>>919 ありがとうございます。試してみます。
>>920 というか、フリーソフトとして公開するつもりはありません。
身内間の通信プログラムというか、あくまで私的利用の範囲です。
>>918 でその通りと言ったのは、どの環境でも使えることを前提としているので、
フリーソフトとして公開する・・・と言った方が早いかと思ったからです。
あと、
>>922 さんが誰に言ってるか知りませんが、
>>921 は私では無いので一応。
勿論一般公開する場合はリソースに含むとマナー違反だとかも分かってますし、
取りあえず一般公開する気は無いので、暫定的にリソースを使おうかと思ってるだけです。
>>923 921は俺だがな、リソースに含むと「マナー違反」ってなんだよw
じゃあ、俺のソフトはマナー違反か?
920の言うとおり、おまえ本当に分かってないんだな
Windowsを私的利用と称して同梱したら「マナー違反」か考えてみな
わかってるとかその程度の知識でどこからそんな自信が。 こりゃまた面白い質問者が現れたものだ。
926 :
913 :2009/10/31(土) 16:12:22
>>924 私的利用だからマナー違反だとか、そんな事は言ってません。
>>923 でも言った通り、私的利用する分にはリソースに入れても良いと考えてます。
そして、マナー違反というのは私はそう思っているだけなのかも知れませんね、
とりあえず私は一般配布時、リソースはそういう意味合いから使っていません。
WindowsOSを同梱して公開するとそれはそれでライセンス違反かと思いますが。
>>925 自信があって発言してるのではありませんよ。
ですからあくまで私的利用の範囲です。一般配布を前提としていないので、
一意見と質問の為に書き込んだだけです。
また、
>>919 を利用して解決しました。ありがとうございます。
この流れですと荒れそうですので、今後この名前で書き込むのは終わりたいと思います。
またくだらない議論してますね
929 :
カス :2009/10/31(土) 19:13:31
>>928 申し開き?
XPathの方が完全に簡潔じゃねーかタコ。
どんなパターンに仕様変更しても "/root/data" の一箇所くらいにしか影響が出ない。
それが簡潔でなくて何だ?
930 :
カス :2009/10/31(土) 19:31:31
あと一言で消えるわ。 簡潔さ(保守性) : XPath >> LINQ 汎用性 : LINQ >> XPath 速度 : XMLの規模と検索パターン次第? だとは思っている。 そして俺は保守性を最重要視しているだけだよ。
論理的に順序立てて説明しないと伝わらんないって
一言に18分かけるとは、余程怒り心頭なんだな…。
934 :
583 :2009/10/31(土) 22:49:17
よろしければ
>>915 もお願いします
Xpathで
>>923 最近のゆとりはどこまで馬鹿なんだ?
>身内間の通信プログラムというか、あくまで私的利用の範囲です。
身内に渡した時点で、私的利用の範囲を超えています。
>勿論一般公開する場合はリソースに含むとマナー違反だとかも分かってますし、
マナー違反ではなく「法律違反」です。犯罪ですよ。
プログラムを勉強する前に一般常識勉強してくださいね。
そう細かいこというなよ おまえらってwinnyやアニメを暇にうpしたりしてんだろ
ゆとりプログラマはLGPL・MIT・CC・Redistributable Package OSSの概念とかも何にも知らないで勝手にライブラリ取り込んだりソースコピペしたりリソース持ったり 犯罪を犯しまくっているんだろうな
中には.NET Framework再頒布可能パッケージのように、
インストーラを自身のアプリケーションに同梱してよいと許可しているものもあるし、
>>921 のようなソースコードの再利用だって、BSDライセンスやGPLのように条件を満たせば許されるものもある。
一律に駄目と言っているのではなく、そこのところの条件をきちんと調べて、
自分のやろうとしていることが問題ないか自分でよく確かめることが必要というだけのこと。
>>935 横からすまんが、不特定多数ではない知り合い数人は
私的利用の範囲内という判例があるよ
C# Express Edition登場以降、カジュアルコーダが急増してこんな人達が急増してきたと思う。 特にWindowsユーザはGPLとか慣れ親しんでいないから、モラル意識や法に関する知識が極端に低い。 プログラマとして最低限の知識です。まずifの構文を覚える前にこっちの勉強をしてください。
配布しないなら不要な知識。 プログラマ=アプリを配布する人、ってわけじゃないから、 必要なときに学べばいいだけだろ。
>>939 どこの何という判例でしょうか?それを判断するのはあなたではなく司法です。
国民が判断出来るように法律が存在します、基本は法律に則って下さい。
>>941 「配布するなら必要な知識」ってこと自体をゆりは知らないんですよ、そこが大問題です。
944 :
デフォルトの名無しさん :2009/11/01(日) 00:52:48
「ゆとり」って言葉を使う奴には「頭が悪い故に他人が馬鹿に見える馬鹿」の臭いがするね。 馬鹿なお前さんが思ってるほと人は一般に馬鹿でも無責任でもないんだけど。 まあこういうのはネトウヨ君と一緒で、本人に自覚がないから言っても無駄なんだけど。
ゆりちゃん・・・
ゆり分かんないよ!>o<;
>>944 3行のレスに「馬鹿」って4回も使って、スレタイ読まずに煽ってるお前も相当アレだと思うのだが…
本人に自覚がないから言っても無駄なんだけど。
まぁ、そんな事はどうでもよくて、ライセンスはちゃんと守るべきだな。
>>934 xpath = "/root/data/Style|/root/Style[contains(string(/root/data/styleUrl)+\"#\",@id+\"#\")]";
ああ、ルートとして<root></root>で囲んだけど、いいよな?
あ、バグってるかコレ。できるのかな?
xpath = "/root/data/Style|/root/Style[contains(concat(string(/root/data/styleUrl/text()/../..),'#'),concat('#',@id,'#'))]"; ぜーはーぜーはー string xmlstr = "<root>" + "<data><Style>hogehoge</Style></data>" + "<Style id='style1'>hogehoge1</Style>" + "<data>" + "<styleUrl>#style2</styleUrl>" + "<styleUrl>#style1</styleUrl>" + "</data>" + "<Style id='style2'>hogehoge2</Style>" + "<Style id='style3'>hogehoge3</Style>" + "<Style id='style'>hogehoge0</Style>" + "</root>"; hogehoge hogehoge1 hogehoge2
駄目かっっっ;; string xmlstr = "<root>" + "<data><Style>hogehoge</Style></data>" + "<Style id='style1'>hogehoge1</Style>" + "<data>" + "<styleUrl>#style2</styleUrl>" + "<styleUrl>#style1</styleUrl>" + "#style" + "</data>" + "<Style id='style2'>hogehoge2</Style>" + "<Style id='style3'>hogehoge3</Style>" + "<Style id='style'>hogehoge0</Style>" + "</root>"; 結果 hogehoge hogehoge1 hogehoge2 hogehoge0
ここはお前の日記帳じゃないんだぞ
そうだよ 俺のだからな
955 :
デフォルトの名無しさん :2009/11/01(日) 08:38:03
親フォームから子フォームをモーダル表示させています。 その時、子フォームの配置を、 Top:親フォームの現在のTop値 Left:親フォームの現在のLeft値+50 にしたいと思います。 親フォームのTop値やLeft値を子フォームのLoad時に子フォームに渡すにはどうすればよいですか? 本やHPを見ても、 「子フォームから親フォームに値を渡す」 方法は書いていますが、 「親フォームから子フォームに値を渡す」方法はどこにも書いていませんでした。 よろしくお願いいたします。
親が設定してやりゃ良いんじゃ
957 :
デフォルトの名無しさん :2009/11/01(日) 09:29:11
>>956 ありがとうございます。
子が親を参照している状態で
親が子を参照しようとすると、無限ループになるようです。
MDIというやり方を使用するしかないのでしょうか?
子が親を参照する必要性ないじゃん 親のLoadイベントとMoveイベントで子供の位置設定して終わりだろう 何か自分で問題を複雑にしているとしか思えないのだが
>>958 いやモーダルダイアログだからその理屈はおかしい
でも、子ダイアログをnewしてからShowDialogするまでに位置を設定しておけば済む話の気がする
960 :
959 :2009/11/01(日) 09:39:29
あと子ダイアログの移動イベントのキャンセルもね
961 :
959 :2009/11/01(日) 09:51:08
もう一点だけ ダイアログ表示時にLocationプロパティが効きません><って場合は Formクラスのプロパティを隅々までご覧下さい 特にStで始まる奴を
ネット上に置いてあるテキストファイルを変数に読み込みたい場合は、 WebClientを使ってローカルにDLしてきて、 それを読み込んでDLしたファイルを消す・・・という方法の他に手軽なのはありますでしょうか? 凄く無駄な手順踏んでそうな気がして・・・
やり方はいくらでもある。 確か普通に配列としてダウンロードするメソッドもなかったっけか? それがあったらダウンロードしてEncodingで文字列にするだけ。
965 :
962 :2009/11/01(日) 11:46:19
>>963-964 あ、WebClientにはそんなメソッドもあるんですね
ありがとうございました!
そもそもWebClient.DownloadStringの立場が…
WebClient.DownloadStringはエンコーディングの問題でやや使いにくいス
FTPでサーバファイルを読み書きしたいんですが、 サーバアカウントやパスをそのまま記載するのはセキュリティ面から危ないと思います。 そこで、皆さんはどうやって記述しているんでしょう?
暗号化
ユーザーに入力してもらう。
>>969 ,970
起動時間などをサーバへ書き込みたいので、ユーザ入力では駄目なんです。
一ヶ所しか使わないので、専用の関数作るのも・・・と思ってたんですが、
やはり暗号化しか無いですよね、ありがとうございました。
そういう目的でFTP使うのが既にどうかと
Webサービスでやればいいのに
>>972 他に何か方法があるのでしょうか?
>>973 ソースありがとうございます、頑張ってみます。
どの時点で盗まれるのが嫌なのかってのがあるじゃん ・完全にネットワークから独立している状態で逆アセンブラ等を利用してパスワード盗まれる ・通信経路上で盗まれる
>>976 逆アセンブラなどを使ってパスワード盗まれるのを防止したかったんです。
>>973 の方法を利用させて頂きましたので、こちらの問題も解決しました。
皆さんありがとうございました。
パスワードを保存する方法なら、どう暗号化しても逆アセンブラとかする相手に対抗できないだろ。
>>977 >>973 の方法で君が望んでることをしようっていうのは
「金庫に鍵はかけたが、鍵は金庫の上に放置されている」
という状態なのだよ
例を挙げると、WinnyやShareって奴が(RC4で)同じ方法を取ってるわけだが
あっという間に暗号は解読されたな
そりゃまあ生のftp相手じゃ通信みるだけで生データ流れるしなあ。 ダミーでサーバ用意してもいいし。
パケットアナライザで3秒でちゅわ
WireShark起動するだけで10秒くらいかかるダス
983 :
977 :2009/11/01(日) 14:51:08
>>979 確かに・・・そうですね
書いていて気づきました
しかしそうなると、どうしても解読しようと思えば出来ますね^^;
っノーガード戦法
無防備君最強だろ
次スレの時期かなあ
988 :
583 :2009/11/01(日) 18:19:30
989 :
583 :2009/11/01(日) 18:21:48
あ、レス番間違えました orz 何度もありがとうございました
990 :
986 :2009/11/01(日) 18:22:16
立てたの俺だし 次で直すって言ったし 自分で立てた方がいいよね
992 :
583 :2009/11/01(日) 18:25:24
はじめて質問します。 Leaveを使って、タブを違うテキストボックスに 移動した際に、入力された文字数の上限を チェックしたいのですが、 textBox1.MaxLength = 32; たとえばこれを挿入する際には どこに挿入すればよいかわかりません。 他にも大文字小文字のチェックも同時に行うのですが、 それらの文章の直後につなげてしまってよいのでしょうか>
これはすごい
>>994 ひとまず・・・もう少し話を整理してみような?な?
997 :
994 :2009/11/02(月) 17:47:44
ごめんなさい・・・ この板くるの初めてで、ごく最近プログラミングはじめたんです。 しかも今海外で、もうテキストとか英語でわけわかんなくて( ゚д゚ ) 香ばしい奴で本当にゴメン しかも課題で死にかけてて。 環境はVS2008、OSはVISTA。 簡単な計算機みたいなのつくらなくてはいけないのだけど、 ユーザ入力の変数の上限を50ケタにしなくてはいけなくて、 MethodのLeave?という機能を使って タブ移動後に桁数のチェックをいれたいんだ。 ググったらMaxLength = 50 ってのをどっかに挿入すればいいらしいのだが この場所がよくわからなくて。 それで桁数を超過した場合にアラートを出したいのだけど。 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 ここからちょっと自分で調べてたんだが、 プロパティのMaxLengthに上限桁数を入れると テキストボックスの字数の制限がかかるのは分かった。 でもこうじゃないんだ。 字数超過の場合だけアラートも出すには ステイトメントにメッセージボックスと、その出現条件を 打ちこむ方法しかないと思うんだけど、 どうすればいいかなって。 if (name.Length > 50) { return "Maximum Length is 50 characters";} こんな感じで書いたんだけど、エラーがどうしても出る・・・ ごめん、初心者スレと見て書いたんだけど、 さすがに問題外すぎるかな。いつも書き込んだりしないから 今手震えてます。スレちだったら消えるよ(´・ω・`)
>>997 お・・・乙
ひとまずMaxLengthは50より大きくしといて
@条件文で数値でなければまずエラー
Aそのうえで50文字を超えていたらエラー
にすればいいんじゃないか?
@=IsNumeriで調べてみれば?
A=TextBox.Text.Length
でとりあえずどうだろう?
アラートはMessageBox.Show あたりか?
まぁ・・さびしいと思うが頑張れ
つうか、日本のサイトググればいいんじゃねぇかと・・・
ちょっと時間せっぱつまってるから 詳細後ほど調べてみます。 998、999、ありがとう! もうちょっと教えてくれたこと 自分で調べて頑張ってみる! みんな優しいね。゚(゚´Д`゚)゚。 てわけで1000!!!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。