ふらっとC#,C♯,C#(初心者用) Part67
1 :
デフォルトの名無しさん :
2010/12/16(木) 18:23:33
1>>乙
「乙」とは十干(じっかん、甲乙丙丁戊己庚辛壬癸)の第2番目。「きのと」とも読む。五行は木、陰陽は陰。草花を象徴し、協調・社交・和合を意味する。
または甲で始まる順位の第2位。「乙種」「甲乙つけがたい」
乙
>>1
>1お疲れさまです^^ 早速質問なんですが、xmlデータの取込の際にタグで <ns0:root xmlns:ns0="http:〜">のタグって名前空間とまで分かったのですが public T Deserialize<T>(string fileName, string encode = "Shift_JIS") { var serializer = new XmlSerializer(typeof(T)); using (var tr = new StreamReader(fileName, Encoding.GetEncoding(encode))) { return (T)serializer.Deserialize(tr); } } の形で取り込む時に<T>のクラス指定での名前空間の指定(?)の方法がわかりません;w; どなたか分かる方いらっしゃいますか? 説明下手ですいません。。。
DOMを使うべき
6 :
4 :2010/12/17(金) 10:55:26
業者から来る形がいままで名前空間の無いXMLが来ていたのですが 新規の業者に名前空間が付いていることと、既存の取込方法をしようして 取り込みたいのでどうぞよろしくおねがいいたします。
DOMで好きなように書き換えてからXmlSerializerに食わせればいいじゃん
8 :
デフォルトの名無しさん :2010/12/17(金) 11:26:22
xmlは詳しくないけどxmlの中に名前空間を持ったノード?が存在できて そのクラスが独自に存在するならそういうデータを作ってそのクラスの型を調べればいいんじゃね?
だいたいDOMを使わなかった元の設計者が糞
うーむ、、、独自にXPathDocument使ってしまおうかな@w@ それなら簡単だし。。。
11 :
デフォルトの名無しさん :2010/12/17(金) 11:35:45
>>10 昔のようにメモリかつかつな時代でもないんだし
従来のロジック+新しいロジックの併用運用すればいいじゃん
新しい方でもいけるならそっちに切り替えるとかすればいいんだし
そうですね、、、そうします@w@んでこっそりいままのやつも変更・・しようかなぁ
スキーマがあるならxsd.exeでクラス自動生成させて XmlSerializerに食わせれば一発だよ
streamreader で何行か読んで、 今のストリームの位置を変数かなんかに 保存してbinaryreader でそこから読んでいきたいんですが 可能ですか?素直にbinaryreader で一文字ずつ読んで 改行文字を追うべきでしょうか
15 :
デフォルトの名無しさん :2010/12/17(金) 15:30:25
そんな読み方して何やるの?
途中までテキストとして扱えるファイルを使うのに 便利そうなので・・・
>>16 StreamReaderはある程度の量をバッファーに読み込みながら処理しているんだけど、
そのバッファーをどこまで使ったかはプライベートになっているので外部からではわからない。
文字列の長さから位置を割り出そうとしても、改行文字が\nか\r\nかわからないし、
エンコーディングの関係でずれる可能性があるので難しい。
リフレクション使えばなんとかなるかもしれないけど、
素直にbinaryreaderで一文字ずつ読んで改行文字を追っていったほうが楽そう。
18 :
デフォルトの名無しさん :2010/12/17(金) 16:14:14
>>17 というかテキストとバイナリの境目って何で判断するのって話だな
テキストデータってのはバイナリコードをあるルールに従って扱ってるだけの話だし
作ってる人間はここまでがテキストここからはバイナリと思ってても
コードだけみたんじゃあわからないぞ
あー、ちょっと訂正 streamreader.CurrentEncoding.GetByteCount使えば文字列の長さは割り出せるね
割り出せないよ だいたいそれ使うならオンメモリだからストリーム戻す必要なんかない 最初から別のbyte配列に読んでしまえばいいだけのこと
>>18 テキストとしてみたとき
4行だけ読めば良い、とか特定の文字の出現ででテキストとして解釈できる
範囲が確定できる場合を想定してるんです
ちょっと大げさかもしれんが class BinaryReaderEx : BinaryReader { public BinaryReaderEx(Stream input) : base(input) { } public string ReadLine() { StringBuilder sb = new StringBuilder(); char c; while ((c = this.ReadChar()) != '\n') { if (c == '\r') continue; sb.Append(c); } return sb.ToString(); } } } }
C#の文法やら仕様について詳しい他言語経験者向けの書籍でオススメなの有りますか?
24 :
デフォルトの名無しさん :2010/12/17(金) 18:44:15
>クラスを覚える必要があるけど MSが用意したクラスを覚える必要があるけど
>>23 標準講座C#
978-4798114736
なんかどう?
Cを中心にC++をちょっとかじった程度です
>>24 >>26 なかなか分かりやすそうでよさげですね
そこそこ良いお値段するけど中身も良さそうなのでちょっと書店で目を通してみます
28 :
14 :2010/12/17(金) 21:16:11
GetByteCount と BaseStream.Seek
で出来ました。一箇所妙な出力が残ってますが
>>19 どうも
それ、出来たっていうのだろうか
>>29 明らかに消せそうだったので
もう直せましたし
文字列として読み取ったブロックの元の長さと、GetByteCount(読み取られた文字列)が等しいことは 保障されるの?
助けて下さい。 GoogleのAPIでGoogleカレンダーをc#で表示するにはどうしたらいいんでしょうか。SDKはDL済み、環境はVS2008です いろいろいじってみたのですが全くわかりませんでした。
こういうのはアリ? Bitmap bmp = (略 pictureBox1.Image = bmp; それともこうしなきゃだめ? Bitmap bmp = (略 Image old = pictureBox1.Image; pictureBox1.Image = bmp; old.Dispose();
>>32 web系のAPIってぶっちゃけると単なるURLでしょ
>>33 なんのためのGCかと
>>33 なんか懐かしいw
DCにブラシやペンを設定〜
>>37 勝手にDisposeされたら怖いわ
二つのImageを状況に応じて切り替えとかできねぇじゃん
たまに替えるだけなら基本はGCまかせでOK
ビューアとかならちゃんと以前のはDispose
39 :
33 :2010/12/18(土) 15:03:24
やっぱそうかーありがとう それなりにぱかぱかBitmap生成して切り替えるからDispose必要ですね(精神衛生上) コードが冗長になって凹むけど一応書いておこう
精神衛生上じゃないよ Imageが占有するメモリはGCが関知しないから解放がすごく遅れる可能性が高い
>>41 table.Columns.Count は増えてる?
増えてます foreach (DataColumn dc in table.Columns) MessageBox.Show(dc.ColumnName); とすると中身も表示されます. ただ,デバッグ画面のローカルって所を探してもAddした情報がないので, どこに格納されているのかなと思いまして.
>>43 格納されているのは、認識通りでいいよ。
ちゃんと探せば出てくる。表示名がインターフェースに変わって、見つけづらいのかも。
>>33 Bitmap bmp = (略
pictureBox1.Image.Dispose();;
pictureBox1.Image = bmp;
じゃだめなん?
PictureBox使ったことないからよくわからんけど
>>45 ゆっくりやるとダメ。早くやれば問題がでづらいかも。
少し気持ち悪い。
47 :
33 :2010/12/18(土) 19:22:11
>>46 まとめるとこう?
oldで挟むよりは気持ちいい
Bitmap bmp = (略
using(Image old = pictureBox1.Image){
pictureBox1.Image = bmp;
}
Bitmapクラスの内部がどうなってるか知らないけど
BITMAPハンドル保持してるとかだったら
自前でDisposeしないと危ないね
48 :
43 :2010/12/18(土) 19:25:07
>>44 _primaryIndexっていうパブリックでないメンバーにはいってました.
VC#で作たWindowsアプリを、ASP.NET使ってIEで操作できるようにしたいんだけど なんでPictureBox使えなくなるの? HTML使った事ないから、まとな画像処理できねぇよwww
Silverlight使えば? たいがいなんでもできるよ
>>49 画像処理するだけならPictureBoxはいらないでしょ。
ASP.NETって何かわかってるんだろうか ブラウザはサーバーが生成したHTMLをただ表示してるだけで C#のコードは全部サーバー側で動作するんだよ? Windowsアプリとは全く違うんだけど理解してる? ブラウザ側でC#動かして画像処理とかやりたいならSilverlightでも使わないと
>>49 お前アホか。GUIコンポーネントがサーバで使えるわけねーだろ。
WebとHTMLを基礎から勉強してこい。
>>50 silverlightググってみた、やりたかった事全部行けそうです!
マジで感謝!MS最高だわwww
>>51 PictureBox使わないと背景画像に透明の画像かぶせて、
その上に点とか線描画できないと思ってたんだ
>>52 そりゃ.NETって言うぐらいだから、Webアプリ用のフレームワークでしょ?
俺バカだけどそんぐらい理解してるっつーの!
今度はXAMLわからないから画像処理できないとか言い出しそうだな SilverlightはWinFormsとは比べ物にならない表現力があるけど ASP.NET以上にWinFormsの知識が役に立たない
これからSilverlightの時代だよ
いや、どう考えてもHTML5だろ Flashが辛うじて残るかどうかだ
>>57 HTML5は軸が違うから比べても意味ない。
Windows 系の GUI が Silverlight になってく。
ただ、置き換わるのは数年後かねぇ。
「Silverlight の時代」って言うにはちょっと早い。
あのー・・・WPFは・・・?
そういうのとは勝負やめて、 簡単にビジネスアプリケーションを配布するための仕組みになった ClickOnceに近い位置づけ
Silverlight5はpinvokeがサポートされるから 極端な話だけどやろうと思えはWinFormsやWPFもSilverlightの上で動かせるね 単にクライアント専用の簡易版.NETを目指してるんだよ
MSはもうWPFよりSilverlightのほうに力入れてるじゃん
まあでも、WPFが消えるのは、Silverlightの機能がWPF相当になった時よ。 それがたぶん、数年後。
64 :
sage :2010/12/19(日) 01:08:11
>>62 開発環境のWebDeveloperはベータ以前の品質じゃね? ドキュメントも英語しかないし。
毎度の事ながらMS新技術出しすぎわろすw
カバーしてる範囲が広いだけ。
>>64 WP7かなんかと勘違いしてるだろ
SilverlightはVS2008や2010で正式にサポートされてるし
Express版のWebDeveloperもVC#と同時にリリースされてる
>>59 49ですが、時代はWPFだと思うよ!!
試しにWPFでプロジェクト作成したら
普通にIEから、Windowsフォーム呼び出せたwww
Win32も使えるみたいだし、既存のWindowsアプリをWeb化するならWPF最強じゃん!!
おかげで1人月の案件が3日で終わりそうwww
>>68 それ、対応してるブラウザー少ないよ。
それでいいって言われる案件なら、普通にデスクトップ版の WPF でいいと思うんだけど。
ClickOnce 配布いいよ。
70 :
デフォルトの名無しさん :2010/12/19(日) 02:34:46
wpfなくなるつってもふつうに流用できそうだしな。 安心してwpf勉強するわ。
萌えキャラのあるSilverlight一択だし。
何をもってweb化と言ってるんだろうな XBAPなんてウインドウ枠がIEになっただけ
web化っていうと仕事は基本的にwebサービスにやらせるもんだと思うが silverlightにしろwpfにしろ、クライアントだけで完結するものをwebアプリと呼ぶのかどうか
wpfはしらんけどsilverlightはビジネスロジックは webサービスじゃなイカ
>>73 いや、WCF サービスとかでサーバーサイド作っておけば、
例えクライアント側がデスクトップアプリであっても Web 化と呼べるとは思うが。
顧客にとって大事なのはブラウザの画面の中に表示されること。 処理がサーバなのかクライアントなのかなんて関係ない。
>>75 俺らから見たらそうでも一般の利用者からしたらWeb化=ブラウザ上で使えるって思うかと
断定すんなw
>>76 あほな顧客が多くて困るって奴ですね。
いや、困らないのか、むしろその方がぼったくれて。
Webが何かぐぐった方がよいと思うよwww
Silverlightはともかく、XBAPなんて普通のデスクトップアプリとしてWPFを動かすことも 可能な環境がないと動かせないからなw 何の意味もありません
ただねぇ、真の意味でクロスプラットフォームなのは、HTML5+Ajaxアプリですらなく、 サービス化してデータだけプログラム的に取れるようにしとくことだと思う。 正直、HTML5が理念通りに完全に互換性保てるとは思えないし、 UI 技術はすぐに入れ替わるし、プラットフォームごとに変わる。 で、そのサービスを受け取る側のクライアントアプリは、 もうクロスとか気にせず、WPF とかで作ればいいと思う。 凝ったUI作るなら、多重開発した方がマシ。
まあWebを好む人の大半はソフトをインストールするのが面倒くさいからだから
>>76-77 みたいなのはそんなにおかしくないな
コンシューマー向けだとそりゃ、ブラウザー内実行必須だと思うけども、 業務系だとあれよ、Webですキリッって言いつつ、 帳票印刷の部分はClickOnceでデスクトップアプリ起動とかが普通よ。
>>84 まさにそういうニーズに応えるのがSilverlightでしょ
妙なイメージが付いちゃってるから名前変えればいいのに
普通だけどそれでいいかどうかは客に説明して確認してからじゃないと 1人月が3日でできたとか言ってたらダメってことだ。
>>87 は?残りの時間、自分の好きな事できるんだぜ
全然ダメじゃ無いじゃんwww
まあ、客に説明してからにしろってのは正論として、 「1人月が3日になります」なら普通納得してもらえるけどもね。
でも説明して三日でできるっていったら普通客は じゃあ安くしてって言うでしょ。 それでも1人月払うよっていうならすごいいい客だな。 しっかり捕まえておかないと。
せんせー、ここ初心者スレ
10年プログラミングしているけど 未だにLinq、ADO.Net,SQLがさっぱりわからないし 必要と思ったこともない ラムダ式は一応やるけど
使いどころを知ってれば問題ないのでは? 存在すら知らないとそれは選択肢を減らすことになるからどうかと思うけど。
94 :
デフォルトの名無しさん :2010/12/19(日) 18:51:06
>>92 DBを使う必要がなければとことん必要無い
使っている人はどんなソフトを作っているのですか?
データベースってどんなアプリにもありませんか? リストを保存したりするのはよくあることだと思うんだけど そういうときに使うと便利なの?
だけどfirefoxですらsqliteを使っているという
98 :
デフォルトの名無しさん :2010/12/19(日) 19:19:36
Janeもsqlite使ってなかったっけ? そこまでのデータ扱うか?ってあるけどなw 肥大化してもっさりとか言われながらw
LINQをそこに混ぜるなよ
10年プログラムしてSQL触らないとかあるんだな
元々DB使いだし、素でSQL書いたほうがいいじゃん、と最初LINQは毛嫌いしてたが DBと関係なくLINQ便利だよな
データベースというものがそもそもない
え?
ちょっとしたListから絞込みとかちょー便利
俺は30年以上プログラム組んでいるし、 プログラミングの専門書も書いている しかし、SQLは知らん
最近でこそHTML5.01でSQLiteが標準になったりしてるけど ちょっとしたことなら一々DBなんて使わない、めんどくさい SQL触らないヤツは触らない
汎用リスト処理を"統一された方法"で簡潔に記述するのがLINQの役割。 操作対象がDBのテーブルだろうが、コレクションだろうが関係ない。
SQLiteならiniファイル作る並に簡単じゃね
HTML5のSQLは消えたよ
データベースを管理するということ自体しない
DBを使えないことがステータス
会社のシステム開発とかWEB開発とか 個人でDBが必要なことなんてないだろ
インストールが必要な大がかりなやつが個人で必要になることは少ないけど 組み込みの軽量データベースは使うだろ。
(DB使わないでトラブルが起きたときデータの解析とかどうやるんだろう・・・自前でコードかくのかな・・・詳細設計もレビューもしてない上に実績のないコードいきなり使うとか怖いよな・・・)
WinFormについて質問です。 InitializeComponetで各コントロールのサイズを設定した後 this.ResumeLayout(false);this.PerformLayout();すると解像度に合わせてサイズが 変更されます。その時、ビルドした環境の解像度がどこかに記憶されているように 見えるのですが、一体どういう仕組みになっているんでしょうか?
this.AutoScaleMode=System.Windows.Forms.AutoScaleMode.Font; これかえ?
119 :
116 :2010/12/19(日) 23:45:53
自己解決しました。FormのAutoScaleDimensionsでした。デザイン修正時に更新されるようです。
>>117 140dpiでビルドした時、140dpi以外で実行するとスケーリングされて、
96dpiでビルドした時、140dpi以外で実行するとスケーリングされるからです。
120 :
116 :2010/12/19(日) 23:46:52
すみません書き間違えました。 140dpiでビルドした時、140dpi以外で実行するとスケーリングされて、 96dpiでビルドした時、96dpi以外で実行するとスケーリングされるからです。
121 :
116 :2010/12/20(月) 01:47:57
すみません書き間違えました。 140dpiでビルドした時、140dpi以外で実行するとスケーリングされて、 96dpiでビルドした時、96dpi以外で実行するとスケーリングされるからです。
デバッグ時に「InvalidOperationExceptionはハンドルされませんでした。」って警告が出ます。 EXEの実行時にエラーはは出ません。 いろいろ調べたのですが、「BackgroundWorker を使用してスレッド セーフな呼び出しを行うには」 というのを試したのですが、うまくいきませんでした。 いまいち警告の内容もわからないのですが、MSDNの表現が解りにくくて・・・ どこか解り易い解説かサンプル知りませんか? 警告の出るコントロールの処理をBackgroundWorkerのイベントハンドラで実行するようにするだけじゃ駄目なんですかね?
コンボボックスを継承して、コンストラクタでアイテムを追加したところ、実行するとアイテムが重複して追加されました。 デザイン時と実行時にコンストラクタが動いているためだと思いますが、これを回避するにはどうしたら良いでしょうか? 現在は初期化用メソッドを用意して、外部から呼び出してもらうことで回避しています。
Component.DesignModeでデザイン時か判断できる フォーム.Designer.csに以前追加した際のデータが残っているのであわせて削除する
125 :
123 :2010/12/20(月) 10:22:11
>>124 ありがとうございます。
ただDesignModeは、コンストラクタでは常にfalseを返すようです。
とりあえず、コンストラクタでアイテムをクリアして追加するようにして対処します。ありがとうございました。
127 :
123 :2010/12/20(月) 10:51:41
>>126 以下のようにして対処できました。ありがとうございます!
if (System.Diagnostics.Process.GetCurrentProcess().ProcessName.Equals("VCSExpress")) {
//デバッグ時
} else {
//実行時
}
>>122 まずは例外がどこから発生してるのか確かめる。
BackgroundWorkerのDoWorkのイベントハンドラは別のスレッドで実行されるからコントロールを触ってはいけない。
コントロールを触るにはControl.Invokeを使ってもいいけど、BackgroundWorkerならReportProgressメソッドを呼んで
ProgressChangedイベントでコントロールを触る方がいい。
ProgressChangedとRunWorkerCompletedイベントはUIスレッドで実行されるのでコントロールを直接触っていい。
配列Aの各要素を2乗した新しい配列Bを作成」って1行で書けるのか?
B = A.Select(a => a * a).ToArray();
B = Array.ConvertAll(A, a => a * a);
やるじゃん
これがLinqってやつ? はじめて便利そうに思えた
何が何やらサッパリだけど凄いな
こういう身近に使えそうな例が沢山ほしいよな とあるサイトは学生名簿とか作るわけねーよってつっこみたくなる
あれ理解するには SQL構文、匿名メソッド、デリゲート、ラムダ式を知らないと理解はできないよな でも、最初は丸暗記でいいんじゃね?
各要素を2乗した新しい配列の方が作らんわw
確かに
でもこういう単純な例の方が応用が利くじゃない 実用的な例 B= A.Select(a => "[AV]"+a);
LINQ使うとき、なぜか foreach を使わないことが多いのはおれだけだろうか。
ToList().ForEach は痛い
最後のToArray()で評価した段階で必要なコレクションが完成する。 その後でfor/foreach使うのって、副作用がある処理をしたいとか、LINQで書くには複雑になる場合。 foreachの使用頻度が減るのは当然じゃないか?
>>140 最後が Aggregate系で終わる場合も多いしね。
ただ、結局最後が foreach なんなら、 .ForEach() とかは使わず普通に foreach したい。
間違えた。はずかちい (/ω\) × MDSN ○ MSDN
書かなきゃ気づかないのにw
なんで=>なんだろ 比較と混ざるからアローでいいのに
149 :
デフォルトの名無しさん :2010/12/21(火) 02:06:25
デリゲートを作らずに直接メソッドを入れられるのはなんで? 自動でデリゲートに入れてくれるの?
>>127 仕様に合うか分かんないしあんま自信ないけど。。。
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new ObjectCollection Items { get { return base.Items; }}
デザイナではItemsのコードが生成されないからコンストラクタで追加してても記録されない。
newはあまり使いたくないけど。
他人が作ったプラグインを利用できる本体はどうやって作ればいいですか? 自分でdllは作ったことがあるけど それはメソッド名を知っているから利用できるわけで どんなメソッド名を作られるかもわからない他人のdllのメソッドを 既に完成した実行ファイルから呼び出すのがどうやってるのかわかりません 上手く説明できないので意味が伝わっているか心配です
プラグインが ・どうやって作った本体を ・どう参照しているのか によるので一概には言えない
>>151 .NetのDLLなら参照設定に追加すれば使える。
開発時に手に入らないものであれば、
実行時にロードしてクラスやメソッドを呼ぶ。
>>149 hoge(int n) で hoge(10+5); って書いたら n=10+5 じゃん。
hoge(Func<int,int> f) で hoge(a=>a*a); って書いたら f=a=>a*a だべさ。
>>149 型推論の結果、自動で適切な型に入れてくれる。
コードから参照設定を追加するにはどう書けば良いでしょうか WMP.Libを参照設定 フォームを作成し、そのなかにWMPコントロールを配置します
>>155 なるほど、インターフェースですか
C++のhファイルがインターフェースにあたるのかな?
あるソフトのプラグインsdkを見ても
hファイルが入っているだけなんです
C++はよくわからないですが、コードを見た感じインターフェースっぽいですね
足がかりが出来ました。ありがとう。
LoadLibrary API
今から作るならMEF(Managed Extensibility Framework)を使うのがいいよ プラグイン側も本体の方もアホみたいに簡単
どうもありがとうございます C#製のプラグイン対応アプリてないですよね C++の得意分野なのかなと思っていました
162 :
123 :2010/12/21(火) 13:36:33
>>150 その方法でも実現できました。ありがとうございます。
>>161 VS2010
だいたいC#で書かれててプラグインにはMEF使ってる
(´・ω・`)…
ω・`)…
・`)…
ContextMenu(ContextMenuStripではありません)を使って「'〜' を検索」のようなメニューを作っています。 〜の文字列の長さによってメニューの幅が広がりますが、〜の文字列が短くなってもメニューの幅が 広がったままになってしまい、 │ '〜〜' を検索 (無駄なスペース) │ のように右に無駄なスペースができてしまいます。 このスペースを消したいのですがどうしたらよいでしょうか? ちなみにオーナードローはしていません。また、他のメニュー項目のTextはこの項目のTextより短いです。
Width="Auto"
>>168 すいません書き忘れました、WinFormsです。
>>156 最初から自動変換あってもよかったのにね。
途中入りなのが、過去のコード資産が微妙に残念に見える。
@参照設定したWMPコントロールをフォームに記述して再生するにはどうすればいいですか AWindowsFormsApplication1とやらに作成したフォームを別のプロジェクトから表示するにはどうしたらいいですか もーわけわかんねーです
>>171 @参照設定ではなく、ツールボックスのアイテムの選択。
COMコンポーネント一番下のWMPコントロールをツールボックスに追加&フォームに貼り付け
再生は、
this.axWindowsMediaPlayer1.URL = @"C:\hoge.wmv";
"axWindowsMediaPlayer1"でググれば使い方はいくらでも出てくる。
A別のプロジェクトの参照設定から、プロジェクトタブのWindowsFormsApplication1を選択
>>172 ありがとうございます
Aはそのとおり設定出来ました(動かないけどなんとなく解りました)
@訂正
(1)
フォームに対して、動的なコントロールを追加する場合に、WMPコントロールの記述はどのように行えば良いですか?
(2)
>>157
参照設定を動的に追加は出来ないと思うというか、状況が分からないんだけど。 Form1.Designer.csにaxWindowsMediaPlayer1を追加するコードが生成されてるから、 好きなタイミングで呼べば動的な〜かと。
175 :
デフォルトの名無しさん :2010/12/22(水) 11:27:38
RichTextBox を PlanText のみを扱う TextBox にすることは可能でしょうか? ブラウザからコピーしてペーストすると、書式もペーストされるため、困ってます。 Paste() のオーバーライドが不可だったため、今はKeyDownでの独自ペースト処理を検討しています。
>>174 状況としては別個で、次のそれぞれについて、必要なコードが知りたいのです
a.あらかじめ作成したフォームにWMPコントロールをコードから追加
b.フォームをコード上で作成し、コードからWMPコントロールを追加
c.コードから参照設定を行う
d.c.を行いb.を実装する(要手動ビルド)
177 :
デフォルトの名無しさん :2010/12/22(水) 13:07:07
おい、おまえら、俺がすげえブラウザ作ってやったよ。 タブ型ブラウザじゃなくて、チェックボックス式ブラウザだ。 くくく、これはすげえ賜物だぞ・・ すげえ、気になるだろ? でも、教えてやんねえ。
>>175 普通のTextBoxをmultiLineにするのじゃあかんのけ?
179 :
デフォルトの名無しさん :2010/12/22(水) 13:12:19
>>178 そういう意味じゃないと思いますw
それほど昔じゃないけどここか相談すれで似たようなのを見たな・・・
ブラウザが扱うのはhtmlという整形言語、リッチテキストもリッチテキストというフォーマット
この辺を吸収したければドロップ情報をそのままリッチテキストに渡すんじゃなく
書式を加工するとかしないとだめだと思うよ
180 :
175 :2010/12/22(水) 13:40:41
>>178 TextBox よりも RichTextBox の方が機能が多そうなので、RichTextBoxを使っています。
例えばUndoなどは、RichTextBox の方が良いので。
>>179 PlainTextにするプロパティはなさそうですね。
Ctrl+V を独自実装して回避してみます。
ありがとうございました。
>>176 VSで参照設定すると、使いやすいようにラッパーが自動生成される。
それを使わずにということになると、COMを触る必要があって結構難しい。
VSで参照設定したときに生成されるDLLの中身をReflectorかなんかで読んでみたらいいと思う。
ずっと簡単な方法としては、WPFのMediaElementをElementHostで利用する手もあるよ。
182 :
デフォルトの名無しさん :2010/12/22(水) 14:06:53
>>180 アプリ起動時にwebbrowserを内部的に用意して
D&Dで貰ったhtmlをwebbrowser入れて処理させた後
WebBrowser.Document.Body.InnerText
で貰ってきたらどうだろう?
ヘッダー部分はでてこないが、body以下は確か全部でてきたはず
183 :
デフォルトの名無しさん :2010/12/22(水) 14:15:46
ふーん
186 :
175 :2010/12/22(水) 22:54:29
>>185 ありがとうございます。そのやり方で確認できました。
VBとかはプロパティであった気がしましたが、裏では持ってたんですね。
>>182 ありがとうございます。
今回は単純にリッチをプレーンにしたかっただけなので。。。
>>186 よかったね
Ctrl+Vは他にコンテキストメニューとか
場合によってはShift+Insertもあったりして面倒
XmlReader.ReadContentAsDateTime メソッドの 「現在の位置でテキストの内容を DateTime オブジェクトとして読み取ります」 という説明の"現在の位置で"とはどういう意味ですか? 現在の位置を取得または設定できるプロパティ、メソッドがあるのでしょうか? またReadContentAsDateTimeメソッドを使って下記の<updated>〜</updated>の中の文字列を "05時00分00秒"と"01時00分57秒"と置換する方法に適していますか? <entry> <title>タイトル1</title> <name>名前1</name> <updated>2010-12-22T05:00:00Z</updated> </entry> <entry> <title>タイトル2</title> <name>名前2</name> <updated>2010-12-23T01:00:57Z</updated> </entry>
XmlReaderはテキストの前から後ろにカーソルが動いていって その下の文字列を順に読んで、タグなどが見つかるたびに「なんか見つかった」と通知してくる感じ そのカーソルの位置が現在の位置。取得しても特に意味はないよ XmlReaderは扱いが難しいのでLINQ to XMLでも使った方がいいと思う でもそれ置換するだけなら正規表現でよくないか XMLとして扱う必要無いような
string 結果 = Regex.Replace(元のXML文字列, "<updated>(.+)</updated>", m => "<updated>" + DateTime.Parse(m[1].ToString()).ToString("HH時mm分ss秒") + "</updated>"); 合ってるかは知らん もしDateTime.Parseが使えなかったらParseExactで
すんません。 targetFiles.GroupBy( _ => i++ / 100 ) を見せられたのですが、"_"の意味がわからず頭を抱えております。 やりたいことを考えたら、ラムダ式の結果でグループわけ、 ラムダ式は、アイテムごとにi++して、/100で云々、だとは思うのですが… よろしくお願いします(´・ω・`)
195 :
191 :2010/12/24(金) 15:46:31
レスありがとうございます
なんとなく分かりました
XMLはネットのRSSを
XmlReader reader = XmlReader.Create("
http://www.***.com/index.rss ");
で取得してそのままdatagridviewに表示してます
XMLであればタグの中身だけ抽出して変換で加工できるかな思いました
stringやStringBuilderに変換し加工しても問題ないのでそっちの方法でやってみます
>>192 さん
>>193 さんありがとうございました
>>194 意味はないだろ
>>193 でいうならm=>でmという名前の引数を宣言する代わりに_という名前の引数を宣言してるだけ
使わないからいかにも無意味そうな名前にしてるんでしょ
197 :
194 :2010/12/24(金) 16:11:16
>>196 あー、なるほど…
ありがとうございます。
リファレンスとかで一生懸命演算子とか探してましたw
コードを短く記述出来るのがC#の特徴ったって、やっぱ可読性は大事だよな…。 俺ならそういう時は、 ( dummy => i++ / 100 ) って書くかも。
俺ならOrderByなんか使わないw どうしてもLINQ使いたかったらSliceみたいな拡張メソッド作るわ
HTMLタグで記述し作成したテーブルの表示、非表示の切り替えを c#で習得した値を元に行いたいのですが、どのような方法がありますか? c#のコード→javascriptへ値を渡す→値を元にcss(displayプロパティ)を書き換えるjavascriptを実行 というのは可能なんでしょうか?
LINQで配列の平均と標準偏差求めるプログラム書いてみてください
ひとりぼっちのクリスマスに気持ちが暖かくなるような コードを書いてくれ・・・
Message.Show("Hello World!");
Message.Show("大丈夫だ、問題ない。");
var ave = data.Average(); var dev = Math.Sqrt(data.Average(d => Math.Pow(d - ave, 2))); クエリ式使ってないけどいいよね
Message.Show("そんなクリスマスで大丈夫か?");
>>200 たとえばjsに
function showmsg(msg) {
alert(msg);
}
ってのがあったとしたらC#からは
webBrowser1.Document.InvokeScript("showmsg", new object[]{"hello!"});
で呼び出せる。
なんで「≠」が!==じゃなくて!=なんだよ!
>>198 ラムダ式で使わない変数を_で置くってのは割と定型句なので、慣れといたほうがいいよ
のっと いこーる で != でいいやんけ。
==はどうなるんだよ?いこーるいこーるか?
むしろ代入記号の=を変えてくれ
>>214 わかりやすく <- とかどうだろうか
不等号&マイナスと区別が付かないとかそんなことは知らない
if(((a==b) == true) == false)
217 :
デフォルトの名無しさん :2010/12/25(土) 11:38:01
代入に<=や:=あたりを使ってる言語ならあるが
よく使い記号の方を簡素にすべきで、 等号を =、代入の方がを他のに変えるためには まず代入の少ない言語設計が必要。
つ[Haskell]
今日もどうでもいいことで盛り上がってますね
Int32.SetValue(i, 10); うわ、いやだ
DataBindingsプロパティについて教えてください。 @ button1.DataBindings.Add(new Binding("Enabled",checkBox1,"Checked")); このコードは一見うまい事連動できているように見えますが、 デザイナ上のDataBindingsプロパティからは指定できません。 なんでですか?やっちゃいけないのでしょうか? A button1.DataBindings.Add(new Binding("Text", this.dataSet11, "DataTable1.Col1", true)); こっちはデザイナ上で指定可能ですが、 常に1レコード目がバインドされ無意味に思えます。 DataTableにPositionプロパティのようなものがあり、制御可能なのでしょうか? それともBindingSource前提という事ですか?
>>224 1)
バインディングはデータとビューを分けましょうってのが根底にあるからじゃね
2)
うん、BindingSource前提
どうしても使いたくないってのならCurrencyManagerもあるけどめんどくさいだけ
>>225 >1)
なるほど、@はビュー制御だから違うでしょ!って事ですか。
でもChangedイベントでの同期って初期処理で一度呼んでやらんといけないのが微妙。
(もはや書き慣れてしまいましたが)
>2)
CurrencyManager調べてみます。
>BindingSource前提
INotifyPropertyChangedを実装したクラスなども目的から外れてはいないですよね?
デザイナ上で指定できないだけで。
あの〜(´・ω・`)
FormのPaintイベント発生時にDrawpath&FillPathでForm上に縁取り文字を描画して
描画した縁取り文字の形でフォームをくり抜きたいんですが「e.Graphics」に描画されてる縁取り文字のパスのとり方がよくわかりません
ご存知の方はどうかこの卑しい豚に助言というエサをお与えください。
【現状のそーす】
ttp://ideone.com/EqxNJ これだとAddString時点のパスでくりぬかれるので、
FillPath後のパスでくりぬくようにしないといけないっぽいけれど
やり方が全然わからない(´・ω・`)ボスケテ
>>228 塗ってから縁取りすりゃいいんじゃね?
//内側を塗る
Brush fillBrush = new SolidBrush(Color.White);
e.Graphics.FillPath(fillBrush, gp);
//縁を描画
Pen drawPen = new Pen(Color.Blue, 4);
e.Graphics.DrawPath(drawPen, gp);
縁を描画するときはSmoothingMode.Noneにしたほうがいいぞ
縁を描画するときはSmoothingMode.Noneにしたほうがいいね
今時WinForm使ってる人って、高解像度ディスプレイでの動作はどう考えてんの? 画面に画像貼り付けると他の部品とサイズがずれるのは時代遅れだと思うんだ。
はぁ
それは作り方がおかしい。デザイナーでサイズ決めてStretchモードにすればずれない。 プログラムからPictureBoxのサイズ変更してたりすると死ぬ。
WinFormsと高解像度ってなんか関係あんの?
画面部品のサイズはピクセル数指定だけどフォントはPt単位で環境によって比が違うし、 中途半端なDPI仮想化のせいでデザイン時に設定したサイズ(ピクセル)と実行時に 取得したサイズ(ピクセル)が一致しなかったりする。 いろんな画面部品のデフォルトサイズが小さくて詳細ディスプレイだと見づらくなることがある。 WinFomクラスも頑張っているけど、ときどき落とし穴があるんだよなあ。 WPFだとデザイン時も実行時も一貫してDPIが仮想化されているから気にする必要がない。
割とどうでもいいw
240 :
238 :2010/12/25(土) 21:42:58
ささいな問題持ち出されてWPFの優位性を主張されてもなw まずはXPで字がにじむのをどうにかしてほしい
客に怒られたら直すわ
メイン機が120dpiの俺にとっては割と問題だ
WPFはWPFがゆえに受け入れられない WinForm完全互換のWPFが出たら流行るだろう
こういうのがFormsのダサいところなんだよな
WPFにしたいならすればいいだけだし、おかしなアピールはいらんよ
フルHD液晶のPC(140dpi)使ってる俺にとってはかなり問題だ。 MFCとWinFormsアプリ以外は問題ないと思っていたが、ブラウザの 拡大表示使ってたらSilverlightのサイズ計算もおかしくなるので困っている。 IEのDPI対応を何とかしてくれ。
分かった
WinFormsのダサいのは、GDIの設計が糞なのと、 文化オリエントの臭いがついているところ。
Vistaから導入されたDPI仮想化を使えば、高DPI環境でも(ボケや滲みを許容すれば)WinFormsでも戦える。 96DPIじゃない環境が一般的な時代になったんだし、 崩れて読めなくなったりしない程度には対応を進めるべきだとは思うけどね。
>>251 それはForm.PerformLayoutによるニセ仮想化じゃなくてVistaの仮想化だよね?
WinFormのニセ仮想化をオフにする必要があるけど、どうやるの?
触りだして3日目なんですけど VSのフォームアプリケーションでテキストに入力後にボタンクリックで 処理を走らせて結果を別のウィンドウで出すのってどうすればできますか? WebのPOSTを受け取って画面表示みたいなイメージです
>>254 フォームの表示方法
Form2 frm = new Form2();
frm.Show();
と、プロパティの
Public string Shorikekka{set;get;}
組み合わせる。
Form2 frm = new Form2();
frm.Shorikekka = "成功";
frm.Show();
クラス自体が分かってないんだろうな まあそのうち慣れるさ
シングルトンでおk
"シングル"じゃ、一度しかShowできないよ 似た形にはなると思うけど
おまえにはがっかりだ・・・
一体何を期待していたのか
>>254 最初の頃はこういうの書いてたけど
こういうものが必要な時点で設計がおかしいんだよな
264 :
デフォルトの名無しさん :2010/12/26(日) 11:08:28
>>262 別に問題ないだろ
MSが提供するのは基本的なクラスであって必要とあれば継承して足せばいいだけ
実際Formアプリ作るときはFormクラスを継承したForm1とかにごりごりコード書くんだし
>>263 推測を大いに含むが
class ExForm : Form
{
Model model;
ExForm(Model model){
this.model = model
}
void ok_ckick(object sender, EventArgs e){
model.HogeText = this.hogeBox.Text
DialogResult = DialogResult.OK
Close()
}
}
こういうことが言いたいんじゃないの
設計として正しいかは知らん
余計な依存が増えてるだけじゃん
文字列渡すだけですむんだったら
>>254 の方が優れてる
結果表示のためにダイアログを単発で表示するのはUI設計としておかしいってことじゃね 場合によるけど確かにウザいと思う
Modelの結果をバリバリ使った高度なグラフ表示とかしたいなら Modelを渡すようにした方がいいとは思うけど、簡単なメッセージだけなら Form2はModelに依存させず文字列だけ受け取る方がいいと思う。
あってるかどうかも分からない推測にマジ返し これがプログラマの病んだ姿です
たまに憶測で怒りだすやつがいるから困る。 そのくせ説明も聞かない。 怒りがおさまった頃に説明すると、「あ〜そう言うこと」って。。。
溜まってるのね
VBはまじ神だなぁどっかの糞#とは大違い
F#の野郎・・・
まあJ#はねえ
故人のことを悪くいうなよ
J#さんはアップデート版買う時にお世話になるんだから悪く言うなよ
ivとkeyを設定した後にメモリを覗かれたりするとやはりバレバレになっちゃうのでしょうか? DESCryptoServiceProvider des = new DESCryptoServiceProvider(); des.IV = ByteResize(iv); des.Key = ByteResize(key);
.net2.0です。ContextMenuStripをメインメニューの一部として使いながら コンテキストメニューとしても使っているとメインメニューを表示するとき 勝手に閉じてしまうことがあるんですが、どうすればいいのでしょうか?
>>277 うん
だから使い終わったら配列はゼロで埋める
パスワード用のStringはどうしようもないけどね
WPFではSecureStringで入力を受け取れるコントロールあるけど
一つのGraphicsPathにAddStringで"□"を描いたのと、 Rectangleで箱の中に箱を描いた物を二つ並べて、 FillPath(Winding)で塗りつぶすとAddStringで描いた物だけ 中身が塗りつぶされないのはなんでなのん? DrawPathで書いても見た目全く同じだし、パスポイント数も同じなのだけど。 違いが分からないれしゅ。
うん
282 :
デフォルトの名無しさん :2010/12/26(日) 19:03:44
>>280 なんか考え方が80年代のMSベーシックのグラフィックだなw
たぶんなんでそんな風に考えるのか今の人には逆に理解できない気がする。
284 :
デフォルトの名無しさん :2010/12/26(日) 19:09:28
>>283 WinFormも描画早すぎてあれだがベタな描画よ
WPFはしらんが
285 :
280 :2010/12/26(日) 19:22:33
//using System.Drawing.Drawing2D; Graphics g = pictureBox1.CreateGraphics(); GraphicsPath GP = new GraphicsPath(); GP.AddString("□", new FontFamily("MS UI Gothic"), (int)FontStyle.Regular, 100.0f, new Point(100, 0), new StringFormat()); GP.AddRectangle(new Rectangle(20, 20, 60, 60)); GP.AddRectangle(new Rectangle(10, 10, 80, 80)); GP.FillMode = FillMode.Winding; g.FillPath(Brushes.Black, GP); //g.DrawPath(Pens.Black, GP); こんな感じ。 パスで自由に図形描けるようにしていて、 Windingモードでも塗りつぶされない図形は何が違うのか知りたかったのです
286 :
デフォルトの名無しさん :2010/12/26(日) 19:35:12
■なら塗りつぶされるだろうけど・・・ 何がしたいんだ?
そんな難しいこと言わなくても、「文字は閉曲線ではない」ってだけの単純な話だから。 こんなん当たり前じゃん。 アホかといいたくなる。
GP.AddRectangle(new Rectangle(20, 20, 60, 60)); GP.Reverse(); GP.AddRectangle(new Rectangle(10, 10, 80, 80)); これで口とおなじになる
ロの中身て■にならないってことか 確かTrueTypeフォントってPathの塊じゃなかったっけ?
294 :
280 :2010/12/26(日) 20:10:38
パスの特性ちゃんと理解してなかったです
>>289 で謎が解けました
ありがとう!!
>>291 確かにそれでもいけますね
パスをとじた形の、閉じ方が分かっていなかったのです。
解決しました、ありがとうございました!
好みのような気もしますが質問です。 イベントを定期的に発生させるクラスAがあって Aを複数管理しているクラスMGRがあります。 ※Aは管理クラスMGRのインナークラスで、MGRのメソッド内部でインスタンスが作られる Aのイベント発生を管理クラスMGRも別のクラスXでも受け取りたい場合 AのイベントにMGRもXもイベントハンドラーを登録できるようにした方がいいのか MGRにもAと同じイベントを作って、Aイベントに登録はMGR、MGRのイベントに登録はXとして Aイベント発生→BイベントハンドラーでBイベント発生→Xの流れにした方がいいのか どちらの方が良いと思いますか??
あ、最後のあたり間違ってる; >Aイベント発生→BイベントハンドラーでBイベント発生→Xの流れにした方がいいのか Aイベント発生→MGRイベントハンドラーでMGRイベント発生→Xの流れにした方がいいのか です・・・。
インナークラスと外側のクラスの間の通知にイベント使うのは無意味 AにMGRのインスタンスを渡してAの中から通知用のMGRのprivateメソッドを呼ぶだけでいい Xについては、MGRがXの存在を知っているんだったらイベント使わなくても単にMGRがXのメソッドを呼ぶ MGRとXを切り離したいならMGRのイベントにXのイベントハンドラを登録する
298 :
295 :2010/12/26(日) 20:51:16
イベントって、 ・クラスaがクラスbに依存してる(aの中でbを明示的に使ってるという意味) ・bはaに依存させたくない ・bの状態変更をaに通知したい ときに使うものなんだよね そういうケースってそれほど多くない bがaに依存していいなら、イベントなんて使わずに普通にbがaのメソッドを呼べばいい
>>299 基本依存ないけど、
>そういうケースってそれほど多くない
これは言いすぎだと思う。
分野によってはイベント多用するよ。
相互に参照を持ち合ってるってのはなんか気持ち悪い
イベントってほぼ例外なく暗に相互に参照持ってるんだけど
参照がないとメソッド呼べないし
オブジェクトの参照握ってるってのと、 アセンブリとかクラスを参照してるってのは別の話。 イベント使ってる時点でオブジェクトは参照されるけども、 アセンブリやクラスの参照は切れる。 これが大事。
また適当なこと言う子が来たなw
クラスを参照ってなんだ? Type t = typeof(Unko) のことか?
変数の宣言で内容を自動で暗号化するものがあったと思うのですが、 どういう書き方をしたら良かったでしょうか?
C# 4.0 specificationには見当たらないな。
相互依存が多用されてたらユニットテストが糞めんどくさい。 慣れてくると自然に余計な依存を持たないような設計するようになる。 個人だったり小規模だったりするなら好きにやればいい。
>>306 csc.exe /r:Xxx.dll とか、VS上での「参照の追加」の参照。
>>307 SecureString のこと?
宣言というか、型だけど。
>>310 それです!
昔、HPで見た覚えがあったのですが書き方がわからなかったのです
ありがとうございます
312 :
306 :2010/12/26(日) 23:46:56
>>310 csc /rはコンパイル時の話だろ。「参照が切れる」ってなんだよ?
参照設定を行わなくてもコンパイルできる(参照を切ることができる) という意味ではないでしょうか
>>312 あんたにはUnkoというコテハンを使う権利をやろう
参照設定が必要な相手と相互に依存することなんてあるの?
双方向依存なくさないとアセンブリ分割できないね。 それも含めて「参照を切る」でしょ。
いや・・・そう言う場合、普通はインターフェースを使うかと
イベントでできること、もちろんインターフェイスでできるよ。 (今はなしてるのは、なんでイベントなんて使うかって話よね?<参照切り) Java が断固デリゲートを入れようとしなかったのも、インターフェイス至上主義だからだし。 そんな Java も最近、デリゲート入れようとしてるわけで、やっぱ欲しいのよ、デリゲート。 要は、 ・インターフェイスだとマルチキャストがめんどくさい ・AddListner/RemoveListenr 書くの面倒 → setter/getter の代わりにプロパティ作ったのと一緒で、イベント作った
>>304 あたりから参照の意味が変わってるなw
もう自分が語りたい事を勝手に語ればいいんじゃね
>>315 DLLの粒度によるんだと思うよ。
DB関連のDLLとログ出力のDLLで、
DBの方はエラーログ出力とかしてて、
ログ出力先がDBだったら相互参照になるよね。
1DLLに収めちゃえば問題ないのに。
>>317 の言う通りだと思うけどめんどくさい
何の話をしているよかよく分からんけどw
とりあえず、少なくともVS使う限りではプロジェクトの循環参照はできないから、
そこは
>>315-316 が正しいんじゃないの?
どうも「依存関係の逆転の原則」とか言うときの依存って言葉と参照って言葉を混同した人がいたのが
話の始まりなのかなという印象。
301だが class A { B b; ... class B { A a; ... っていうのが嫌だと言いたかった。それだけなんだ
大丈夫、おれは分かってたよwww 302からおかしくなったんだよな
わかったようなこと言うなよ。 俺は何もかわっちゃいねえよ。
何も変わらず何もわかってないw
結論:イカ娘可愛い
>>322 みたいになりそうだったらどうすればいいの(´・ω・`)?
つイカーフェイス
interface IB {} class A { IB b; } ↑ 依存 | class B : IB {} とか、 delegate void BEventHandler(object sender, BArg arg); class A { event BEventHandler handler; } ↑ 依存 | class B { void SomeMethod(object sender, BArg arg } とか。
さらに言うと、IBとかBEventHandlerの代わりに、 標準ライブラリに入ってるインターフェイス/デリゲートを使えば、 直接的な依存は完全に切れる。 あと残りの課題は A a; a.b = new B(); とか a.handler += new B().SomeMethod; とかを誰がやるか。 この辺り解消するのが WPF のデータバインディングとか、MEF。
イベントにしたりデリゲートで渡したりインターフェース使ってみたり、いっそ1つのクラスにしちゃったりpartialだったり アセンブリ単位では循環参照してもいい。でもアセンブリ単位境界を越えて循環参照するのは設計ミスなので禁じられている。
イカに一票 デリゲートはメソッドを抽象化したい時に使え
>>329-330 それだとBがAのメソッド呼んでた部分がなくなっちゃうよ
>>328 から
interface IA {}
class A : IA { B b = new B(this); }
class B {IA a;}
こんな感じのを想像したんだけど
そもそも依存しあう設計が間違ってるってこと?
>>333 A側にメッセージ返すインターフェイスなりイベントもA側のアセンブリに書けばOK。
アセンブリの循環参照は避けれる。
あとは、双方向バインディングとかの出番。
>>334 よく解らんが(´・ω・`)
例えばBがTCP通信しててデータ受け取ったよ的な通知とか
BがFormでボタン押されたよ的な通知とかはIBにイベント持たせればいいってことかね
>>335 TCP通信ならイベントね。
Form なら、WPF のコマンドのバインディングがいいと思う。
イベントならイカじゃなくて、デリゲート持てばいいよ 相互に依存って言ってたからお互いの複数のメソッドを利用しているように見えちゃった
>Form なら、WPF のコマンドのバインディングがいいと思う。 WPFじゃない場合はIAみたいなのを作るってこと? >相互に依存って言ってたからお互いの複数のメソッドを利用しているように見えちゃった そのつもりですた
非常にざっくりした質問で申し訳ないのですが・・・ 自作のアプリが、他の市販のアプリと同時に使うと、 市販のアプリを誤動作させてしまうようです。 まだ自分は初心者で、自分のやりたいことを調べてやってるだけで、 安全対策も何もしてないので、原因はこっちにあるのでしょう。 こういう場合、原因の突き止め方とか、他に影響を与えない安全対策とか 参考になるサイトとかあれば教えてください。
糞#ってww 選ぶのは言語使ってるができないのもあるww まじワロタ、wwwひ
>>339 何か特別な変なことをやっているんだろう。
一般的な対策とか原因なんかない。何も考えずに作っても普通はそんなことありえないんだから。
WPFもやろうかなと思っているのですがおすすめですか?? 習得が大変そうな感じがするので迷っています。 フォームでも結構満足していますがさらに 便利になったりするのでしょうか?(難しいのが楽に作れたり)
別に難しくはないけどね 結局は慣れだよ
WinFormsと同じ感覚で使う分にはWPFも使い方はほとんど変わらん。ぜんぜん難しくない。 WPFは外観の自由度が高い。コントロールの見た目を変えようとして WinFormsで大量のコードを書いた経験があるなら、そういうことはWPFの方が圧倒的に楽。 それとデータバインディングが強力。コントロールとデータの紐付けは全部バインディングで作れる。 WPF特有の部分は必要に応じて追々覚えていけば大したことない。
むしろそのバインド処理を今までのWinFormsで使ってなかったから戸惑う・・・ 確かにデザインはすごく楽 モッサリさえなくなればいいんだが・・・
347 :
デフォルトの名無しさん :2010/12/27(月) 11:03:59
?
public class test { public string text = null; } test d = new test(); d.test = "test"; d = null; こういう書き方でnullを入れる人をみた事があるけど、この場合のd.textはnullを入れた 時点で消滅するのかな?。 それとも d.test = null; d = null; にしないとd.test の内容はすぐに消えない? l
どっちにしろGCが走るまで消えない だからってGC.Collect入れると余計に遅くなるよ 気にしても無駄
350 :
デフォルトの名無しさん :2010/12/27(月) 11:08:30
よっぽど実行時間の長いスコープでない限りローカル変数へのnull代入は無意味 気にしない・放置が基本
352 :
デフォルトの名無しさん :2010/12/27(月) 11:12:28
353 :
348 :2010/12/27(月) 11:15:36
みんな、ありがと メモリ上からd=nullだけで全部消えるのかと少し期待したのですが残念
>>353 あくまで参照を切り離しただけでGCはまだ持ってる可能性はあるよ
ただ、参照を切り離したので
>>352 を実行するとエラーになる
>>348 のケースに限って言えばGCが走ろうと"test"は永遠に消えないけどな
リテラルはCLRが参照保持してるので絶対に消えない
C# で質問です。XMLでシリアライズする時に既にインスタンス化されたクラスはできないのでしょうか?
357 :
デフォルトの名無しさん :2010/12/27(月) 13:28:34
>>356 できるでしょ
でもシリアライズ用のクラスってpublicでいろいろ開放してないと使えなかったような
規定のコンストラクタがあって かつ 読み書きのできるパブリックフィールドとプロパティだけだったと思うんだけど 嘘だったらごめん
>>356 俺はインスタンス化しないとシリアライズできないと思ってるけど。
インスタンス化されたクラス?がよくわからん。
したいこととしては あるクラスをシリアライズする場合に、プロパティにインターフェイスを継承している 項目をシリアライズしたいのです。 (Ex) public class TextClass { public stirng Ex1 { get; set } public int Ex2 { get; set; } public IInterface { get; set; } } のようなクラスをシリアライズしたいのです。。
追伸: public IInterfaceがとあるインターフェイスを継承したものを格納しています
>>344 >>345 >>346 ありがとうございます。
複雑な外観・バインディング(データの同期?)
などをしたい時にWPFを勉強しようと思います
>360と>356が全然結びつかないけどまあいいや XmlSerializerは構築されるときにシリアライズ・デシリアライズするすべての型を知ってる必要がある interfaceとかabstract classがメンバに含まれるなら、そのメンバが取り得るすべての型を教えておかないといけない 普通はXmlElement属性でそういうメンバにこういう型こういう型があり得るってことをマークする 属性ベースで静的に設定できない場合、XmlSerializerのコンストラクタ引数で指定する > public IInterfaceがとあるインターフェイスを継承したものを格納しています IInterface以外(だけ)を継承してたらびっくりだ
>>363 インターフェイスを継承したインスタンスを格納します><
>>364 ありがとうございます。XmlElementは3.0からのサポートなので
2.0で開発している現在は使えれませんね;w;
コンストラクタの引数の方法で試してみたいと思います。
>>365 >
>>364 ありがとうございます。XmlElementは3.0からのサポートなので
> 2.0で開発している現在は使えれませんね;w;
んなことない
XmlElement属性(XmlElementAttributeクラス)は.NET 1.0から存在する
存在するね
C#は参照リークするからなぁ
369 :
デフォルトの名無しさん :2010/12/27(月) 16:11:52
C++ってデリゲートってあるんけ?
>>369 C/C++でいうところの関数ポインタだよ
そう、関数ポインタだよ
でも関数ポインタだよ?
373 :
デフォルトの名無しさん :2010/12/27(月) 18:20:18
C#のデリゲートは関数ポインタのように直接ポインタを扱うわけじゃないし +とか-で登録削除可能なので違うといえば違うんだけどねw
全然違うよ デリゲートは関数ポインタ+呼び出し先のインスタンスへのポインタ
Windows SharePoint Services 3.0: ソフトウェア開発キット (SDK) に含まれているSPUtility クラスを使ったプログラムをC#で作った場合、 Windows SharePoint Services 3.0をインストールしていないパソコンでも動きますか?
376 :
デフォルトの名無しさん :2010/12/27(月) 20:55:22
>>375 SPUtilityクラスが含まれてるDLLはSharePoint Servicesに含まれてるんだろ?
動くわけないじゃん
当該DLLのローカルコピーを配布してしまえば動くかもしれないけど
おそらくライセンス違反(要確認)
378 :
375 :2010/12/27(月) 21:29:52
>>377 SPUtilityクラスの使用は諦めたいと思います
ありがとうございます
379 :
デフォルトの名無しさん :2010/12/27(月) 22:03:28
糞#のせいでいまだにDTだ
>>362 です
調べてるうちにWPFの勉強したくなりました。
XAMLは意外と馴染みやすかったので大丈夫そうです。
機能面がいまいち分からないのですが、
これ便利・かなり使うからやっとけって機能ありませんか??
まずはBindingをマスター。 というわけでWPFスレへどうぞ
private void Substitute() { presskey(VK_SPACE, 20); startcap((int)Math.Ceiling(power * 360 / 100) + 3); presskey(VK_SPACE, 20); if (power >= 80) { startcap(175); } startcap(hidoffset); presskey(VK_SPACE, 20); } ↑にGetAsyncKeyState()を使用してCtrlを押している時はスペースを押さないという構文を入れたいのですが short sw; sw = GetAsyncKeyState(17); if (sw == 0) { presskey(VK_SPACE, 20); } GetAsyncKeyState()使用宣言をした上でこれを入れても上手く行きません。 どなたか入れ方等のアドバイスを頂けませんでしょうか?全くのド素人なのでメチャクチャな事を言っていたらすみません。
VS入れたら、アプリがエラーが起きた時に デバッグ確認が毎回出てうざいんだけど 無効に出来ませんか?
384 :
デフォルトの名無しさん :2010/12/27(月) 23:41:12
出来ません
まじかよ、何でこんな嫌がらせみたいな機能つけるんだよ・・・
ASP.NET2.0 C#で開発しています。 ページに入れたPanelオブジェクトをチェックボックスのONとOFFで表示/非表示を JavaScriptで制御する作りを実装しました(仕様としてポストバックでのチェックはできません) 単にvisibleで制御しても出来ないため、Panelのstyle属性にdisplay:blockを埋め込み、とdisplay:noneと切り替えて とりあえず表示と非表示の制御はできるようになったのですが、ボタンを押した時のイベントのコードビハインドで、 Panelオブジェクトが表示されているか、非表示かも取得したいのですが、どうにも上手くいきません 1.JavaScriptで処理実行時にsetAttributeも一緒に入れて、style属性のdisplayも切り替える→チェックできず 2.いっそPanelのvisibleプロパティを無理やり取ってみる→そもそも設定していないので全てtrueで返ってくる 3.style.valueを取得してチェックしてみる→aspx側で設定した値しか返ってこない(1と類似) と、色々やってみたのですが…。 無知で申し訳ないのですが、どなたか上手い方法を知っていらっしゃる方いますでしょうか? Panelを使っていることがそもそも間違っているのかもわかりません スレ違いでしたら申し訳ありませんが、宜しくお願いします
HiddenFieldとか用意しといて、onsubmitとかでJavaScriptで値を入れてやれば? コントロールじゃないただのhiddenを置いても、Request.Paramsに反映されるはず どのDOMイベント/JavaScript関数で処理するのがベストかは忘れたんで自分で調べてね
389 :
デフォルトの名無しさん :2010/12/28(火) 12:06:01
正規表現を使う、使わない両方の置換を行いたいのです。 正規表現を使う場合は、最初にヒットしたものを置換というのは調べればできそうなのですが、 使わない場合はたとえば string s = "ccc\naaa\nbbb\naaa\n"; s = s.Replace("aaa","ddd"); とやると両方のaaaが置換されてしまいます。 これを最初のaaaや2番目のaaaだけ置換するというのはできないでしょうか?
>>389 いきなり置き換えじゃなく検索して列挙した後お好きなように調理すればいい
391 :
デフォルトの名無しさん :2010/12/28(火) 12:10:44
>>390 あーーーーなるほど!
ReplaceじゃなくてIndexOfでやればいいんですね。
ありがとうございます。
392 :
デフォルトの名無しさん :2010/12/28(火) 13:19:00
C#でつくった自分のプロジェクトを元に更に機能付加していって新バージョンをつくり Ver1,2,3,4…としたいです。それぞれのバージョンは残していきたいです。 今のところ既存のフォルダをコピーしてフォルダ名とプロジェクト名を変更していきながら作っていこうかと思っているのですが、 このような場合のスマートな方法があるなら、教えてください。
バージョン管理使いましょう
394 :
392 :2010/12/28(火) 13:28:54
>>393 どうもっす。バージョン管理ってのがあるんですね。ググッて調べてみます。
ありがとうございました。
俺バックアップという意味であえて別HDにバージョン毎フォルダコピーして残してる
396 :
デフォルトの名無しさん :2010/12/28(火) 14:34:19
C#にお詳しい方にお聞きします {smartassembly} とういうソフトで、 難読化されたアセンブリをソースコードレベルに戻したいんですが どうすればよいでしょうか? また、解除できるなら、難読化解除を100パーセント防ぐにはどうしたらいいでしょうか?
プログラム自体を暗号化してメモリ上でのみ複合化させる
398 :
デフォルトの名無しさん :2010/12/28(火) 15:35:10
返信ありがとうございます。 しかし、マルチスレッドを用いるプログラムや、インポートしたアセンブリ、 プラグイン等でも簡単にデバッグが行える VisualStudioでコンパイルできることを想定した場合、その方法だと 実現できるでしょうか? Reflector等で、メソッドやフィールドの難読化された名前は 見られてしまうのは仕方ないかもしれません。 結局有効なのは、上記のsmartassembly他と同様に、 実行速度を犠牲にし メソッドの開始時点に不要なジャンプ命令を組み込むしかないのかもしれません
何を守りたいのか分からんが、名称を難読化するだけで流用する価値はなくなるだろ 重要な情報を隠すという意味ではローカルである限り、どんな暗号化でも完全にはならないし
400 :
デフォルトの名無しさん :2010/12/28(火) 17:02:34
質問が漠然としてました、申し訳ないです。具体的には Reflectorや、spices.NET等のツールを用いて IL以外のC#やVB等の言語で メソッドの中身を容易に見れなくしたいのです。 例えばrefleectorであれば "// This item is obfuscated and can not be translated." が表示されるか、または例外を発生させるようにしたかったのです。
401 :
デフォルトの名無しさん :2010/12/28(火) 17:44:04
ネットワークアプリケーションにユーザ認証機能を乗せたいと考えています。 参考になるサイトや、参考書などありましたら教えていただけたら幸いです。
402 :
デフォルトの名無しさん :2010/12/28(火) 17:45:13
C#にはAPIないのですか? C#ではWIN32 APIしかありませんか? C#のAPI一覧とかのってるサイトあったら教えてください お願いします。
403 :
デフォルトの名無しさん :2010/12/28(火) 17:46:54
嫌です
404 :
デフォルトの名無しさん :2010/12/28(火) 17:47:43
>>402 C#とAPI(Win32API)との関係をよく分かってないだろ
405 :
デフォルトの名無しさん :2010/12/28(火) 18:07:55
http://www.atmarkit.co.jp/fdotnet/dotnettips/676dragdrop/dragdrop.html ここを参考にテキストボックス内へファイルのドラッグ&ドロップというのはできたのですが、
フォルダのドラッグ&ドロップで中身のファイル名を取得するというのがわかりません。
最終的にDragDropイベント・ハンドラ内の
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
この部分をフォルダがドロップされてもファイルがドロップされても取得できるようにしたいのですが
どうしたらいいでしょうか?
System.IO.Directory.Exists(d))で分岐させればいいのかなとは思うのですが、
e.Effect = DragDropEffects.Copy;
この部分にどうつなげるかわかりません。
メニューストリップにショートカットを付けたいのですが、 MenuItemクラスの Shortcutプロパティの値は、 Shortcut列挙体のメンバー以外は指定できないのでしょうか?
407 :
デフォルトの名無しさん :2010/12/28(火) 18:12:31
>>402 C#でWin32APIを使うには、dllを定義をしないといけないんだよ。
PInvokeてサイトをググって、サンプルコード探すのが速いかな。
ほかにマーシャリングって知識も必要かもしれない。
おれもよく分からないんだけど、その辺調べたら使えるようになった。
409 :
デフォルトの名無しさん :2010/12/28(火) 18:33:47
できるかどうか不明ですが private void _DragEnter(object sender, System.Windows.Forms.DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Copy; else e.Effect = DragDropEffects.None; } private void _DragDrop(object sender, System.Windows.Forms.DragEventArgs e) { string[] strs = e.Data.GetData(DataFormats.FileDrop, false) as string[]; if (strs == null || strs.Length == 0) { return; } for (int c = 0; c < strs.Length; c++) { if (Directory.Exists(strs[c])) { string[] fileNames = Directory.GetFiles(strs[c]); } else { } } }
410 :
デフォルトの名無しさん :2010/12/28(火) 18:57:29
>>406 おそらく指定できません。
できるかどうか不明ですが
public Form1()
{
InitializeComponent();
this.KeyPreview = true;
shortCutkey = Keys.A;
menuitem.Text = "A";
menuitem.Shortcut = Shortcut.F1;
menuitem.Click += new EventHandler(menuitem_Click);
MainMenu ms = new MainMenu();
ms.MenuItems.Add(menuitem);
this.Menu = ms;
}
MenuItem menuitem = new MenuItem();
Keys shortCutkey = Keys.None;
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (shortCutkey != Keys.None &&
shortCutkey == keyData)
{
menuitem_Click(menuitem, new EventArgs());
}
return base.ProcessCmdKey(ref msg, keyData);
}
411 :
デフォルトの名無しさん :2010/12/28(火) 21:33:00
C#で,複数のアクセスポイントからの無線LANの強度から 位置を測定するプログラムを書いています. 現在接続中の無線の強度を獲得することは出来たのですが, 接続していない他の無線の強度の獲得の仕方がわかりません. 別のところに繋ぎ変えないでやるという制約がありますが,どうでしょうか. よろしくお願いします.
あの〜(´・ω・`) byte配列に格納したwavデータをPlaySoundで再生してたんですが、 ☆PlaySound(wavData.wavVolChange(bytes, vol), 0, SND_MEMORY | SND_SYNC); PlaySoundだと再生と停止は出来ても、一時停止ができないことがわかりました。 しかし、一時停止可能な再生方法を調べてみても、やり方がさっぱりわかりません。 もしもbyte配列のwavデータを再生、停止、一時停止可能な再生方法をご存知の方がいましたら、 この卑しい豚に助言というエサをお与えください。
413 :
デフォルトの名無しさん :2010/12/28(火) 21:48:04
>>409 できました!!ありがとうございます!!!
どういたしまして
あの〜(´・ω・`) ←これ失礼
失礼といえば失礼だな
失礼じゃないといえば失礼じゃないな つまりどういうことだ?
´・ω・`)
>>412 DirectAudio
XAudio
ActiveXのWMP
WPFのMediaElement(一番簡単)
´・ω・`) …
>>419 ありがとうございます
下から試してみます
うむ
イベントについて教えてください。 イベントハンドラを複数登録した場合の実行順は未定義だと思います。 という事はカスタムコントロールではイベント拾っちゃダメですか? 例えば TextBoxを継承し、Validatingイベントで大文字小文字、全角文字の有無、 文字数などの情報を自身のPublicプロパティにセットする (利用者側がValidating時に判断材料として使う。) という設計もダメですよね OnValidating使えという話だとは思いますが、 グリッドの列やタブページ等、それが通用しないコントロールもあると思いまして。
UserControlに貼り付けて包含して都合の悪いイベントは隠してしまえばおk
>>423 別に継承後の設計なんだから自分の好きなように
〜は使うなっていうお約束で十分だろ そういう約束が通じないような、不特定多数が使うちゃんとしたコントロールなら、 出来合いのコントロールの継承なんてやるべきじゃない
SOAPで処理している2つのサーバがあって、双方にWeb.configが存在している サーバAのWeb.ConfigにはmaxRequestLengthの記載をしている(2MBの設定) サーバBのWeb.ConfigにはmaxRequestLengthの記載をしていない(既定値4MBの設定だという認識) ↓ サーバAでの処理でサーバBを通してCSVデータを出力する処理を実装 少量データでは問題ないが、数千件のデータを出力しようとするとエラーになる 試しにサーバBのWeb.ConfigにmaxRequestLengthの記載をすると正常終了する 正常終了した後でCSVデータのファイルサイズを見ると、2MBにも満たない ・何故サーバBにmaxRequestLengthを記載すると正常終了するのかわからない。既定値の4MBでは? ・何故出力したCSVデータサイズがサーバAで設定した2MB以下なのにエラーになるかわからない。ファイルサイズは関係ない? 処理はできたのですが理由がわからず悩んでいます・・・ どなたか馬鹿にでもわかるように教えていただけないでしょうか?
「SOAPで処理している2つのサーバがあって」 「サーバAでの処理でサーバBを通してCSVデータを出力」 意味不明なので、日本語を見直してください。 web.configにmaxRequestLengthを設定しないときのMaxRequestLengthの 値を確認しましたか? あなたの出力したCSVのサイズはどうでもよくて、maxRequestLengthは Webサーバに対するHTTPリクエストのbodyサイズだと思いますが、 HTTPリクエストはどんな内容ですか?
途中で制限越えるのに気がつくからでは?
TextBox(MultiLine)を三つ使ってランダム振り分けを作りたいと思っています。 TextBox1に振り分けたいアイテムを改行ごとに入力していき、 ボタンひとつでTextBox2,TextBox3にランダムに振り分けていくのですが、 奇数のときの対処も含め教えてください。
>>432 余りを計算する
そういう話じゃないかと
>>434 1.TextBox1から、改行で区切ってアイテムを取り出す方法
2.ボタンで、ランダムにアイテムをTextBox1,2へ振り分ける方法
3. 1で取り出したアイテムが奇数の時の対処法
以上の3点を教えて頂きたい。
>>435 1 TextBoxは行数情報と各行単位の情報を簡単に取り出せる
行数はこれで取得 TextBox.Lines.Length
でこんな感じでアクセス
http://ideone.com/9JG7W 2 ランダム関連を調べろ
3 自分で設計しろ。ランダム振り分けなんで奇数行だろうが偶数行だろうが問題ないと思うが
コピー後のTextBoxに同じライン数ないといけないとかなると最後の行を処理しないか
偶数行になるように行を捏造するかしないとだめだろけど俺が決める仕様じゃないので知らないというか・・
教えてほしいのですが、あるクラスからプロパティをリフレクションで取得し、 その対応するプロパティ名と同じスタティックなクラスを呼び出す場合どのようにしたらよいでしょうか? 実際にしたいことはテーブル情報とDataの入ったエンティティとを比較し、文字列制限チェックやヌルチェックなど を行いたいです。 Type typeData = tyeof(typeData); PropertyInfo[] pi = tyepInfo.GetProperties(); foreach(var p in pi) { ここにp.Nameで取得した名前とスタティックなクラス の名前を対応付けて処理をしたい。 } //スタティックなクラス public static class InfoTable { public static class Person//このPersonという名前とプロパティ名を緋付けたいです。 { public static string ColName { get { return "列名"; } } public static int MaxSize { get { return 100; } } public static bool NotNull { get { return false; } } } }
GetNestedTypesとか使えばいいんじゃねーの
そういうのはT4Templateとか使って簡易DSLっぽいものから検証コード自動生成したほうが早いよ
440 :
437 :2010/12/29(水) 14:23:14
>>438 そのメソッドを使って取得できたのですが・・・今度はEntity側の取得方法で詰まってしまいました;w;
どのようにして該当プロパティの値を取得すればよいでしょうか?よろしくおねがいいたします。
public void ToCheck(SomethingEntity typeData)
{
Type typeInfoEnt = typeData.GetType();//エンティティの型情報取得
Type typeInfoTable = typeof(SomethingEntityTable table);//エンティティのテーブル型情報取得
PropertyInfo[] pi = typeInfoEnt.GetProperties();//エンティティのプロパティのArray取得
foreach (var p in pi)
{
var t=typeInfoTable.GetNestedType(p.Name);//エンティティのプロパティの名前と同じ名前のクラスを取得
int? maxSize = t.InvokeMember("MaxSize",BindingFlags.GetProperty,null,0,null) as int?;
bool? notNull = t.InvokeMember("NotNull", BindingFlags.GetProperty, null, 0, null) as bool?;
//ToDo:ここにテーブルの値(maxSizeとnotNull)を条件としたチェックを行う
//現在選択されているpのプロパティのtypeDataの情報が欲しいです・・・
}
}
とりあえずPropertyInfoのメンバ一覧見ろ
foreach(var p in pi) { var testValue = p.GetValue(typeData , null ); //var testValue = p.GetValue(typeData , null ) as string ; で試したけどうまく行かず@w@
443 :
デフォルトの名無しさん :2010/12/29(水) 15:08:39
プロパティの使い方教えろ
.
445 :
デフォルトの名無しさん :2010/12/29(水) 15:52:55
演算子のオーバーロードの使い方教えろ
断わる
上手な断り方教えろ
クルッ . ハ,,ハ ミ _ ドスッ . ( ゚ω゚ )彡―─┴┴─― * * * \ / つ お断りし / ハ,,ハ * * \ 〜′ /´ └―─┬/ ( ゚ω゚ ) お断りします * ハ,,ハ * \ ∪ ∪ / / \ * ( ゚ω゚ ) * .\ / ((⊂ ) ノ\つ)) * お断りします *. . \∧∧∧∧/ (_⌒ヽ * * < > ヽ ヘ } * * * < の し お > ε≡Ξ ノノ `J ────────────< 予 ま 断 >──────────── . オコトワリ < 感 す り > ハ,,ハ ハ,,ハ .ハ,,ハ <. !! > ハ,,ハ . .( ゚ω゚ ) . ( ゚ω゚ ) ( ゚ω゚ ) /∨∨∨∨\ ( ゚ω゚ )<お断り .ハ,,ハ │ │ │ / .\ します>( ゚ω゚ ) ,(\│/)(\│/)(\│ /. \ / ♪お断りします♪ \ / ハ,,ハ ハ,,ハ .ハ,,ハ ハ,,ハ\ . ( ゚ω゚ ) ( ゚ω゚ ) ( ゚ω゚ ) ( ゚ω゚ )
マンガ脳の恐怖、まで読んだ。
450 :
432 :2010/12/29(水) 20:47:43
>>436 ありがとうございます。
http://ideone.com/o6QU0 @ITや、436さんのコードほぼ丸コピでなんとかここまで出来ましたが、
ATxtBxとBTxtBxのアイテム数を同じにする方法が分かりません。
何度も書きましたが、奇数時の処理(どちらかに+1)も教えて頂きたい!
いやだから、それはお前がどうしたいか、だろ。 奇数時に何がどうなれば満足なのよ。 その通りに作れ。
452 :
432 :2010/12/29(水) 20:53:33
>>451 奇数時にどちらかにアイテム数が一つ増えれば満足です
453 :
デフォルトの名無しさん :2010/12/29(水) 20:57:19
>>452 難しく考えすぎだろw
>>436 のコード書いた際にライン数を強調したのは
ライン数の範囲でランダム振り分けを繰り返せば
いいからだと思ったからだよ
奇数ラインの場合振り分け後のアイテム数を同じには
質問されてる方はわからないw
その辺はそういう仕様を自分で決めるかそのプログラムを
出題した?人とかと話して調整するしかないよw
トランプのシャッフルをするときの動作を考えてみればいいんじゃないの ItemTxtBxから取り出した文字列を一旦、配列にしまいこんで、その配列をランダムに並び変えてから、 その配列から一列ずつ取り出してATxtBxとBTxtBxに交互に入れていく。 奇数だったら一列残るから、そのときはATxtBxとBTxtBxのどちらかにランダムで入れるみたいな感じで
クラスって何の為にインスタンス化するの? スタティックメソッドじゃダメなの?
いいよ
キャー ミナガワケンジサーン
458 :
432 :2010/12/30(木) 11:25:19
>>453 理解に及ばず申し訳ない…
>>454 ピンときました!
ありがとうございます。
試してみます!
再度質問させてください。 StringのContainsは"xxを含む名前の物"ですが、 "xxという名前の物"を調べるには何を使えばいいのでしょうか。
str == xx str.Equals(xx) 上の方が普通
test
すげーな。 俺、459の質問の意味が全くわからなかったぞw
struct Person { public string name; public uint age; public string address; } class Person { public string name; public uint age; public string address; } これって根本的に同じですよね? コンストラクタで値の改変とかのメソッドを実行しない場合って、 複数の変数の保持にクラス使う意味無いですよね。 保守性の為に部品として使うならスタティックメソッドで良いし、 何の為に実体化するのかわからなくなってきた・・・ クラスを実体化するメリットを教えてください
>>464 > これって根本的に同じですよね?
どんな根本を想定してるのか知らんが
おいらの感覚では根本的に別物だな
> コンストラクタで値の改変とかのメソッドを実行しない場合って、
> 複数の変数の保持にクラス使う意味無いですよね。
意味が分からん
構造体があれば十分って意味?
> 保守性の為に部品として使うならスタティックメソッドで良いし、
なんでメソッドが出てくるのか…?
> 何の為に実体化するのかわからなくなってきた・・・
> クラスを実体化するメリットを教えてください
人が二人いたら二つインスタンスが必要だろ?
>>465 保持してる変数だけでみたら扱い同じですよね?
クラスと構造体の違いがわからなくて
メソッドの事は忘れてください
まず値型と参照型の違いを理解しているかどうかだ
Personみたいな単語が出てくる時点で基本的に常にクラスだけでおk。 構造体を使うのは特殊な場合に限られる。違いが分からないなら使う意味無し。 たとえばインスタンスAがインスタンスBを参照してて、Bが編集フォームで変更された場合 BがクラスならAが参照してるBも更新されるけど、構造体だと変わらない。
469 :
デフォルトの名無しさん :2010/12/30(木) 12:52:13
>>467-468 classが参照型で、structが値型だというのは覚えてるんですが、それだと
クラスの
Person a = new Person();
Person b = new Person();
と
構造体の
Person a = new Person();
Person b = a;
は同じことになるんですかね
471 :
デフォルトの名無しさん :2010/12/30(木) 12:58:43
ならない クラスはCloneしないと複製できない 構造体はコピーになる
464じゃ無いけど、使い分け俺も良く分からん。 根本的には別物だと思う、使用するメモリがスタックかヒープかって結構大きい違い。 構造体 ・スタックなのでアクセスが早い。(生成も?) ・(メンバは別として)シャローコピーされない分イミュータブルオブジェクトに向く? ・GCの対象外なので破棄も早い クラス ・変数の実態は参照(4or8バイト)なので、受け渡しが早い。 ・参照により複数の変数から同一インスタンスにアクセスできる。 以上が俺の認識。 スタックって何MB使えるの? Color構造体の例とか見ると、Enumをベースに拡張したい場合に使えばいいかな?
473 :
デフォルトの名無しさん :2010/12/30(木) 13:13:19
なるほど、よくわかりました ありがとうございます それだと、値型のように別のオブジェクトで変数を持ちたいけど、 いずれ継承で拡張したい場合なんかは、いったいどうしたら
public class A { public int hoge { get; set; } } public struct B { public int hoge { get; set; } } public void Test(A a, B b) { a.hoge++; b.hoge++; } ここら辺の違いさえわかってれば 大概は「どっち使おうが気にすることは無い」んじゃないかな。
継承じゃなくてインターフェイスにする
まず引数に値を返す構造が嫌い
outも使えない、そんな世の中じゃ
嫌いだったとしても、ちゃんとわかって使わないと 返らないと思って使ってたら返ってた、なんてことになるって話だろう
>>477 Fillなんちゃらとか、適切な名前ならいいでしょ
回転が出来ません! Quaternion xz = new Quaternion(new Vector3D(1, 0, 1), degreexz); A.Rotate(xz); 回転角degreexz[°]でXZ軸でAを回転させたいのですが、どこがおかしいでしょうか。ご指南お願いします。
マルチなのでスルーで
間違えてXAMLのとこに書いちゃったからこっちに書きなおしたんだけど、 マルチだからスルー、とかよくわkんないんだけど、なんか答えちゃいけない規則でもあるの?
削除依頼が出ていませんのでスルーで
マルチ?だと答えちゃいけない規則とかあるの?テンプレに書いてないけど。
2ちゃんねるの使い方がわかってないのでスルーで
質問が意味不明 何のライブラリのQuartanionやVector3Dなのかわからない。 C#から使えるMS製ライブラリのうちQuartanionやVector3Dを含むものは複数存在する。WPFならそう書け。 何を回転させたいのか具体的に書け。
string Aの中に、List<string>にはいっている文字列がいくつ入っているか数えたいのですが、 どうやればいいかわかりません。 LINQを使えばできたと思うのですが、どう書けばいいものやら… どなたか教えていただけませんでしょうか?よろしくお願いいたします
list.Count(A.Contains)?
var count = Regex.Matches(A, list.Aggregate((x, y) => x + "|(" + Regex.Escape(y) + ")")).Count; とか
491 :
デフォルトの名無しさん :2010/12/30(木) 17:49:51
>>491 >インスタンスのサイズが 16 バイト未満である。
っていうとintだと3つまでか?
Rectangleディスってんのか?
>インスタンスのサイズが 16 バイト未満である。 また随分と簡潔な基準だな。 これだと、構造体にするべきケースって殆ど無さそう。
元の文章読みなおせ。
C#で録音機能をつけたいのですが、方法はありますか? 自分が製作しているプログラムは複数音の再生なので、それを録音したいのです。 録音の方法はPCから鳴っている音を録音する方法が良いのかなと考えています。 サウンドレコーダー程度のものでいいので、つけることは出来ますか? サウンドレコーダーがC#のプログラム上で自動で録音を始めることさえ出来れば良いのですが… 長文大変申し訳ありません。 よろしくお願いします。
ありがとうございます。 試してみます!
チャーリー浜か
録音ソフトの録音スタートのボタンを ウィンドウメッセージで押すとかすればいいんじゃないの
異なるウェブフォーム間で効率的に値を受け渡す方法が分かりません WebForm1.aspx内のclass Aで計算した値をWebForm2.aspx内のclass Bへ受け渡したいです 始めにclass A内の計算を実行して、Labelに結果を表示してからWebForm2.aspxへ移り WebForm2.aspxのclass Bでclass Aの計算結果を使用したいので class Bでclass Aをインスタンス化しclass A内の計算を実行させると 2度同じ計算をさせることになるので一度で済ませる方法がないか探しています
セッション使えば?
503 :
デフォルトの名無しさん :2010/12/31(金) 19:32:03
C#スレのみなさん、今年もありがとうございました。大変お世話になりました。 来年はどうもQtスレに行くことになりそうです。
そうですか。初心者さんに丁寧に教えてあげてくださいね。
506 :
デフォルトの名無しさん :2010/12/31(金) 22:54:49
何度も聞いたが答えないようなのでもう一度言う インデクサの使い方教えろ
クラスを配列と同じような感覚で使いたいとき
public class A { public int this[int a, int b, int c] { get { return a*b*c; } } } A test = new A(); Console.Writeline("{0}", test[1,2,3]); 6
普通は Collection クラスに使用する 3 次元ベクトル を表す Vector3D クラスのコレクションクラス Vector3DCollection を作ったとしたら、 それを配列のように扱いたいことがあるはず。 んじゃあ、配列使えよって言うかもしれないが、配列にはメソッド作ったり出来ないし、 その他ゴニョゴニョできないからね。(拡張メソッドレベルなら作れるけど。) まあ、string とかも添字に使えるから色々な使い方があるだろうが。
便乗だけど、VB製クラスのPropertyInfoがインデクサかどうか確実に見分ける手段ってある?
>>497 です。
>>500 さんありがとうございました。
ウィンドウメッセージとは具体的にどのような命令(コード)なのでしょうか?
初心者の質問で申し訳ないです。
>>510 型に付いてるDefaultMemberAttributeを調べる
PropertyInfoだけじゃ分からん
TextBox内でのSortの方法を教えてください。
それだけじゃ誰も答えられません。
>>512 Reflectorで見てもDefaultMemberAttributeが使われてないから不思議だったんだけど、C#だと出ないのね
ありがと
>>419 何もかもが終わった
byte[]のwavデータを一時停止するなんて高度(笑)なことができるわけがなかったんだ
・DirectAudio
Direct〜は嫌いだから使わない
・XAudio
wav再生できない
・WPFのMediaElement(一番簡単)
ファイルからしか再生できない
silverlight使えばsetsourceでいけるけど勉強する気がない
・ActiveXのWMP
ファイルからしか再生できない
> Direct〜は嫌いだから使わない > Direct〜は嫌いだから使わない > Direct〜は嫌いだから使わない
>・XAudio >wav再生できない え?
>>519 やる気がないってことだよ
言わせんな恥ずかしい
XAudioでwavはやったことあるけど wavはヘッダだけ飛ばせばあとはデータをそのままバッファに直接書き込むだけ
楽しんでいただけたのなら光栄でございます 一時停止なくてもボタン1つ消えて使用者が少し不便になるだけだし まぁなくてもいいかなって気分になってきたのだ(・´ω`・)
524 :
デフォルトの名無しさん :2011/01/02(日) 04:51:35
525 :
デフォルトの名無しさん :2011/01/02(日) 04:55:09
できるかどうか不明ですが
FormのClickにハンドラを書くときに Form.Click +=まで入力すると 「new EventHandler(Form_Click); 挿入するにはTabを押してください」と表示され Tabを押すと、Form.Click +=new EventHandler(Form_Click); 「このクラスにハンドラー'Form_Click'を生成するにはTabを押してください」となり またTabを押すと自動で void Form_Click(object sender, EventArgs e) { throw new NotImplementedException(); } まで挿入されますが、これをTab押したときにラムダで挿入するやり方はありますか? こんな感じで挿入してくれるとうれしいのですが。 Form.Click += (sender, e) => { };
無理 (以下のコードスニペット作れば
528 :
デフォルトの名無しさん :2011/01/02(日) 12:25:52
VS2008Proを使ってます。 ListViewで列、項目を入力して試しにデバッグさせてみたらアイテム名が表示されません。 デザイナでは視覚的に確認できるのですが、書き出すと真っ白になってしまいます。 どういった原因が考えられるでしょうか?
>書き出すと ??? ビルドして実行すると、ってこと?
ちょいとくだらない質問するけど ListBoxって選択されてる項目のTextしか取得できないの? Items.Countでループさせて、全項目のText取得したいんだけど もしかして、ループ時に順次select状態にしてText取得していかなきゃだめなの? そんでループ処理後にselect状態の項目をループ前の状態に戻すしかないの? うーん・・・
Items[i].SubItems[j].Text
ごめんListViewと間違えた。
>>531 本当にくだらない質問だな....
こんなところにうだうだ書いてる時間に試してみればいいのに
535 :
528 :2011/01/02(日) 16:34:47
ListViewのプロパティでOwnerDrowをFalseにしたらビルド後も正常に表示されました。 お騒がせしました。
>>534 試したからいってるんだけど
「それしかないの?」って
フフン
537 :
デフォルトの名無しさん :2011/01/02(日) 17:00:50
>>531 ListBoxに与えるテキストって利用者が勝手に変えたりするの?
固定なら最初からstring配列で持っておいて・・・とかすればいいんじゃないの?
ここで答えてくれる人ってどんなライブラリ使えばいいか即答するけど、 もしかして全部覚えてるの?
>>538 ライブラリを数個しかしらなくてもその時々でたまたま知ってる人が覗いてれば問題ない
541 :
バルサン(´・ω・`) ◆E.J7ujd3Xbu. :2011/01/02(日) 18:34:31
(´・ω・`)
542 :
バルサン(´・ω・`) ◆E.J7ujd3Xbu. :2011/01/02(日) 18:47:17
(´・ω・`)あ
なんや(´・ω・`)
ListBox..DisplayMember = "Name"; ListBox..ValueMember = "Code"; ListBox.DataSource = (DataTable)xxx; でforeachやforでxxxのDataRowを参照すればいいんじゃないの?
>>524 ありがとう
wavデータサイズを固定指定してるところを可変にして、ループ再生用のwhileを消して、再生中ステータス取れるようにして
もろもろ修正したらうまく動いたよ
ありがとう
>>544 ありがとう
でもこれでいけたYo
(string)listbox1.Items[0]
public interface interfaceA { int a; } public interface interfaceB : interfaceA { int b; } public class classC : interfaceB { } の時、classC.aは使えないんですか?
c#からサウンドプレイヤーをコマンドから起動し、録音をします。 そのとき録音時間を変数などに入れて時間を指定して起動させたいのですが方法はありますか? コードはこれです。 Process roku = new Process(); roku.StartInfo.FileName = Environment.GetEnvironmentVariable("ComSpec"); // cmd.exe roku.StartInfo.CreateNoWindow = true; // 起動に ウィンドウ を使用しない roku.StartInfo.UseShellExecute = false; // 起動に OS のシェルを使用しない roku.StartInfo.RedirectStandardInput = false; // 標準リダイレクト入力を不許可 roku.StartInfo.RedirectStandardOutput = true; // 標準リダイレクト出力を許可 roku.StartInfo.Arguments = @"/C SoundRecorder /FILE rec1.wma /DURATION 0000:00:00 /ON"; // コマンド設定(/C = 実行後 終了) roku.Start(); // 起動 下から2行目の@"/C SoundRecorder /FILE rec1.wma /DURATION 0000:00:00 /ON"の DURATION 0000:00:00に数値を入れるといいのですが、それを変数を使って代入したいのですが どう書けば時間を指定できますか?
549 :
デフォルトの名無しさん :2011/01/03(月) 17:45:58
>>548 マルチメディア系のAPIとか機能使って録音した方がよくねえ?
>>548 string time = "0000:00:00";
roku.StartInfo.Arguments = @"/C SoundRecorder /FILE rec1.wma /DURATION " + time + @" /ON"
>>547 そもそもinterfaceにフィールドは定義できない
>>549 使い方がよくわからなかったので諦めました。
>>550 ありがとうございます。
指定する時間が複数の場合、あらかじめ代入してた変数を使って行いたい場合はどうすればよいですか?
秒の部分しか使わないのですが…。
553 :
550 :2011/01/03(月) 18:36:44
>>552 string time = "0000:00:00";
の秒の部分を変える。
554 :
デフォルトの名無しさん :2011/01/03(月) 18:42:04
やりたいことがよくわからんが string sec = "00"; string time = "0000:00:" + sec; こんな感じでいいんじゃね?
>>548 >>552 の者です。
録音が終わったときに(サウンドレコーダーが閉じられたときに)いろいろな設定をしたいのですがうまくいきません。
どのようにしたらいきますか?
コードです。
roku.Exited += new EventHandler(p_Exited);
roku.EnableRaisingEvents = true;
roku.Start();
private void p_Exited(object sender, EventArgs e)
{
toolStripStatusLabel1.Text = "";
toolStripButton26.Enabled = true;
toolStripButton27.Enabled = true;
toolStripButton23.Enabled = true;
toolStripButton24.Enabled = true;
numericUpDown1.Enabled = true;
}
行いたいのは{}の中です。
557 :
デフォルトの名無しさん :2011/01/03(月) 19:42:43
>>556 >うまくいきません。
イベントが発生しなくて目的の設定がうごかないってこと?
実行すると 「有効ではないスレッド間の操作: コントロールが作成されたスレッド以外のスレッドからコントロール 'toolStrip2' がアクセスされました。」 と表示されます。
じゃあデリゲートで処理しないと
>>559 具体的にどのような操作をすればよいのですか?
調べたのですがよくわかりません…。
561 :
デフォルトの名無しさん :2011/01/03(月) 20:49:36
>>561 コピペしたところエラーが表示されました。
・「using System.Linq;」は無いようなのですが大丈夫ですか?
・MyRoku roku = new MyRoku();
roku.Exited(p_Exited);
roku.Start();
部分は、Form1_Loadからボタンを押したときに移しましたが大丈夫ですか?
・エラーが表示されます。
「エラー1'form.MyRoku.Exited(form.MyExited)' に最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。」
「エラー2引数 '1': 'メソッド グループ' から 'fomr.MyExited' に変換できません。」
「エラー3デリゲート 'form.MyExited' に一致する 'p_Exited' のオーバーロードはありません。」
解決方法はありますか?
>>562 >・「using System.Linq;」は無いようなのですが大丈夫ですか?
必要かどうかは自分のコード全体から判断してくれw
>解決方法はありますか?
もしかしてかなりの初心者?
>>1 のコード貼るサイトを利用してコード張ってくれ・・・・
途中経過がさっぱりわからんのに説明めんどくさい
>>563 とりあずOnXXXでベースクラスのオーバーライドしたメソッドを呼ばないのは如何なものか
ん?よく見るとOnXXXオーバーライドじゃなくて、自分のイベントに自分のメソッドを 紐付けしてるのか失礼。
>>563 >g.Dispose();
これ要らない。
なんで要らないのかは理解しておいた方がいいよ
>>564 少しいじっていたらなんとかなりました。
申し訳ないです。
皆様ありがとうございました。
569 :
デフォルトの名無しさん :2011/01/03(月) 21:50:12
>>563 中は透明かよwめんどくせー
かぎりなく透明に近いけど0じゃない色で描画すればクリック判定あるよw
部分的に透明なFormを作る際のサンプルコード以前ここかもう一つのスレでみたが見つからない・・・ 確かFormそのままではだめだったということだったんだが・・
572 :
デフォルトの名無しさん :2011/01/03(月) 22:18:31
>>571 確か
>>570 のやつだとOpacityのように全部が半透明とかじゃなく
部分的にアルファ適応とかできたはず
ただしウインドウの枠の部分も自前で・・・みたなちょっと面倒なやつだったけど
なので
>>563 のようなコードの場合は枠必要ないので向いてるかなあと・・・
>>573 c#のFormのデフォだと透明か色付きしかできなくて
半透明で塗りつぶすとかできないのよね
その代わりForm含む配下のコントロール全部を半透明とかできるけど
部分的にアルファ値を有効にするにはいろいろやらないとだめだったね
そのコードが手に入れば枠の中を完全な透明に近い色付きで塗れば
中もクリック判定が生きてくるんだけどね〜
576 :
デフォルトの名無しさん :2011/01/04(火) 09:00:24
あるひとつのクラスの中に複数のインスタンスがある場合に格インスタンスの値を取得する方法(リフレクション?) はどのようにすればよいでしょうか?ひとつのクラスにあるプロパティやフィールドなどは取得できるのですが。。。 public class Child : IDataErrorInfo { public string Value{ get ; set ; } public Error{ get ; } public string this[string columnName] { get ; } } public class Parent{ public Parent() { _child = new Child() ; } public Child _child ; //複数の子が存在する } static void Main() { Parent _parent = new Parent(); } の_parentからIDataErrorInfoのErrorを一括で取得したいです。
つ配列
GetMembersで配列を取得してそこからForeachでまわして GetInterFace("IDataErrorInfo" , true )で取得しようとしてもさっぱりうまくいきません;w; やり方が違うのでしょうか?そもそもGetInterfaceで取得するのではないのでしょうか?
いやIDataErrorInfoって自分で実装するんだよ get;じゃなくて、現在の値を調べてエラーを返さないといけない
あ、すいません、IDataErrorInfoのerrorのget内は省略しています。 あるひとつのクラスの中に内包されているインスタンス化されたクラスで IDataErrorInfoを継承したインスタンスを取得したいのです><
まずは設計を見直して public class Parent{ public Parent() { _child = new Child() ; } public IList<Child> Children { get; private set; } } のようにできないか検討する。できない理由があるのであれば、 var errors = from p in _parent.GetType().GetProperties() where typeof(IDataErrorInfo).IsAssignableFrom(p.PropertyType) let val = (IDataErrorInfo)p.GetValue(_parent, null) where val != null select val.Error; ただし_childはプロパティにしてね
>>582 さんありがとうございます。
今回の仕様ではChildは実はStringと<T>(整数系)から派生したパターンがあり
一律にListに入れることが出来ません;w;あと、Linqも.net2.0指定のためこれまた
使えないのです ( ; w ; )
( ; w ; )
585 :
デフォルトの名無しさん :2011/01/04(火) 17:15:37
仮想メソッドの使い方教えろ
586 :
デフォルトの名無しさん :2011/01/04(火) 17:17:19
C++のころと使われ方が同じだとすれば設計時決めたメソッドじゃなく 実行時に別に用意したメッソドに処理させるってことじゃないの?
早速あさっての方向に走り出したな、メッソド
質問です すべてのクラスで使えるようにpublicで宣言した変数があるのですが、 Form1からモーダルで開いたForm2からだと、 Ownerプロパティを付けないと参照できないのは、そういうもんですか? 何か宣言する場所とか間違ってるんですかね? Formも一応クラスですよね?
別に色々方法はあるけれど インスタンスの概念をもう一度考えてみたほうがいい 仮に皆が財布持ってるとして、中身はそれぞれでしょ?
わかんないなら public static class GlobalVariables {
591 :
590 :2011/01/04(火) 18:34:21
ミス public static class GlobalVariables { public static int Hoge; } これでグローバル変数。GlobalVariables.Hogeでどこからでもアクセスできる。 Formにpublic staticで宣言するよりは後で探して修正しやすいのでマシだと思う。
ふーんインスタンスかあ・・・ ずっとFormひとつでしか勉強してないから、よくわかんね。 Formが財布ってわけ? ひとつのプロジェクトでも同じクラスではないってこと?
>>575 リサイズの仕方がよくわからない
これはもう完全につんだな
594 :
デフォルトの名無しさん :2011/01/04(火) 20:01:42
>>593 おお来たか
すでに解決したか何かでこないかと思った
対策としてだけどFormをもう一枚作ってそっちをOpacityを限りなく0に近い数値にして
>>575 の上に重ねてイベントをそっちで拾わせてウインドウサイズを変えればいいんじゃないかと・・・
常に上に来るようにするにはイベント取るFormをダイアログで表示すればいいのかね?
>>595 俺.AddOwnedForm(
>>595 );
こんな風に誰が主人かを新しく開くフォームに教えてやればいいのさ
>>594 ありがとう
その手があったか、フォーム2枚作って、イベント取得用フォームから枠用フォームいじくってみる
598 :
デフォルトの名無しさん :2011/01/04(火) 22:01:46
質問があります 私はプログラム初経験でC#を学んでいるのですがC#は前提としてCやC++が出来ないと学ぶのは難しいでしょうか。 もう一つC#は何を作るのに向いていて何に向いていないのでしょうか。 皆さんコード関連の質問をしている所に突然馬鹿な質問ですがよろしくお願いします。
>>599 >前提としてCやC++が出来ないと学ぶのは難しいでしょうか
noでありyesかなあ・・・まあ難しく考えないでやってみれば?
開発環境もタダだし、ネットで探せばある程度のことはできるから
>何を作るのに向いていて
乱暴な言い方をすればwindows関連のアプリ
>何に向いていないのでしょうか。
組み込み
自分はデータベースしかやったことない状態でC#始めたけど 十分何とかなる。 いろんなプロジェクトで人のソース読む機会がたくさんあったってのも大きいから 独学だとわからんけど
C# やって詰まったら C。んでもういっかい C# がいいと思う。
>>601 〜603
回答ありがとございます。
皆さんが仰るとおり取り合えずC#を勉強してみようと思います。
>>599 >C#は前提としてCやC++が出来ないと学ぶのは難しいでしょうか
そんな事は無い…と、思う。
文法が似てるだけで、かなりの別物になってるし。
けど、C#を学ぶ上での有利不利は抜きにして
C言語自体は、やっといて損は無いと思うよ。(C++にまでは手を出さなくてもいいけど)
Windowsアプリを造りたいなら、Win32APIの基礎も。(C#の開発で使う事が無くても、概念の理解に役立つ)
>何を作るのに向いていて
上で言われてるWindowsアプリに加えて、WebアプリのフロントエンドもC#で作れる。
(Silverlight想定)
607 :
aaaaaaaaaaa :2011/01/05(水) 00:48:40
//**- マウスアップ -**// private void Form1_MouseUp(object sender, MouseEventArgs e) { moving = onResize = false; GC.Collect(); }
>>599 CもC++もやったことない人よりも、
半端にCとかC++触ってる人の方が C# わけわからないって言ってる気もするなぁ。
もちろん、C++使いこなしてる人は別ね。
デバッガーさえ使えれば何とでもなると思う
自作アプリの設定を保存するのにApplicationSettingsBaseが簡単そうだったので、 使ってみたいと思ったのですが、VS2010Expressにはテンプレートはないのですか? またこのApplicationSettingsBaseの評判ってどうですか? user設定をを保存する場所が固定とかいう話ですが、配布を考えた場合、 勝手にフォルダを作られると嫌がるユーザーは多いのでしょうか? 配布のときはフォルダが作られることをしっかり断っておくのがよいのでしょうか?
マウスアップのたびに回収なのか・・・・
継承を前提としたクラスがあって(abstract)、そのベースのメンバーが継承先のtypeを調べることができるのでしょうか? public abstract class SomethingBase { public string Something { get { var field = typeof(ここに派生先のクラス).GetFields(); //処理 } } }
613 :
612 :2011/01/05(水) 11:04:27
半分自己解決しました var field = this.GetType().GetFields(); で取得できました・・・でもこれだとpublicのみしか見つけないのでGetFields()の引数に BindingFlags.NonPublicを指定したのですが、これでもprivateなフィールドは発見できず・・・ しかもpublicなフィールドまで発見できなくなります(BindingFlags.NonPublic | BindingFlags.Public) にしても駄目でした・・・
>>604 解決してると思うが
取りあえずの解決策
frm.Size = this.Size;
の後ろにでも
frm.Location = this.Location;
いれてみたら?
.NET Frameworkのインストールで質問なんですが、 .NET Framework 3.5は.NET Framework 2.0を内包しているんでしょうか? 3.5を入れたら2.0アプリも動くのかということなんですが・・・
ほぼ動くよ
ほぼというより完全に動くよ
いえいえ(´・ω・`)
1. XmlReader reader = XmlReader.Create("
http://test.rss ");//test.rssはXML文書
2. dataSet1.ReadXml(reader, XmlReadMode.InferTypedSchema);
3. dataGridView1.DataMember = "entry";
4. dataGridView1.DataSource = dataSet1;
上を実行するとdataGridView1にカラムとデータがきちんと表示されます
でもtest.rssを加工する為に1.の所を
WebClient wc = new WebClient();
string str=wc.DownloadString("
http://test.rss ");
としてstrの文字列を操作します
そしてstrをXmlReaderの型のreaderに戻したいのですがどうすればいいですか
XmlReaderのインスタンスを作ってCreateメソッドやStreamReaderのインスタンスを作るときの
コンストラクタにstrを指定したりと色々やってみましたがうまくいきません
strをローカルファイルに保存すればXmlReader.CreateメソッドでXmlReaderの型のreaderを作れると思うのですが
文字列であるstrからXmlReaderの型のreaderを直接作るにはどうしたらよいでしょうか
var strreader = new StringReader(str); var xmlreader = XmlReader.Create(strreader);
624 :
622 :2011/01/05(水) 21:29:52
>>623 ありがとうございます 無事動きました
>>var strreader = new StringReader(str);
このたった1行が思い浮かばず延べ10時間以上悩みました・・・
MSDNのXmlReader クラスを読んでもString クラスを読んでもStringReaderの文字
すら見つからない中でどうすれば「StringReaderの型」を使えばいいと思い浮かぶのでしょうか
考えつく秘訣とかあったら教えて欲しいのですが
625 :
デフォルトの名無しさん :2011/01/05(水) 21:33:01
>>624 C#(というか.net)にはこういう読み方できるといいな〜ってのは大体実装されてるから
分からないときはC# Reader stringとかでぐぐるといいよ
>>598 定期的に真っ白になるや
>>614 もうあきらめ始めてる
枠だけの透明なフォーム作るだけなのに、簡単そうに見えてまるでできない
明日までがんばって駄目だったらもう何もかもあきらめる
>>627 スマン、paintイベント死んでただけだった
TransparentやOpacityってリサイズ時に動かなくなることがあるみたいだね だから透明や半透明にした状態でリサイズすると固まったんだ・・・ 死にたい・・・
どういう事? .NET Framework自体にバグあるの?
631 :
デフォルトの名無しさん :2011/01/06(木) 01:29:44
OSと使ってるIDEのバージョン書けよ windowsXP+2008expressだと問題ねーぞ
win7+2008 ProのIDEからデバッグ実行してるけど起きない
633 :
デフォルトの名無しさん :2011/01/06(木) 19:35:29
WebBrowserでマウス座標が指してあるソースコードを 取得したいのですがどうしたら良いでしょうか?
スレチかもしれないけど・・・ XNAでゲーム作りたいんだけどお勧めの参考書とかある? もうまったくの初心者なんだけど
あるよ 俺が持ってる奴すげーいい
636 :
デフォルトの名無しさん :2011/01/06(木) 19:49:35
xaA game studioで始めるゲームプログラミングだよ
甘えはゲームプログラミングの敵だお
>>637 ありがとう、オフィス加減ってとこが出してるやつだな
642 :
デフォルトの名無しさん :2011/01/06(木) 20:07:00
XNAも本いらねーだろ ぐぐれば基本はでてくる
643 :
デフォルトの名無しさん :2011/01/06(木) 20:08:57
やっぱ本の方がよくまとまってていいよね。 あと紙ゆえの読みやすさってのもある。お金があるなら本買えばいいよ。 効率よくやろうぜ。
>>643 おお、こんなサイトもあるのか助かるー
xbox用にゲーム作りたいんだよだからXNAの方が入りやすいと思って
XNAは下位互換性ないのが勉強しにくくしてる
648 :
デフォルトの名無しさん :2011/01/06(木) 20:15:32
>>647 というかゲームループ部分が見えない仕様なのでゲーム製作初心者にはちとなれるまで面倒かもね
SLと聞いて蒸気機関車が思い浮かんだ俺は60歳 セカンドライフを思い浮かべた人は30代
80486SL
653 :
デフォルトの名無しさん :2011/01/06(木) 22:16:24
visualC#とSQLserverについて質問があります>< visualC#上でSQLserverで作成したデータベースに接続したいのですがうまくいきません。 まず、SQLserverでデータベースを作り、C#上で接続する際そのデータベースを指定してもエラーが出ます。 また、C#上で新しくデータベースを作成しても、SQLserverからファイルを開くことができません。 拡張子やファイルの場所を変えてもうまくいきません。 どうしたらいいでしょうか?教えてください><
654 :
デフォルトの名無しさん :2011/01/06(木) 22:21:15
わかりません><
unk
>>653 開発端末のManagement Studio等では繋がってるのに、サーバーエクスプローラーorSqlConnectionでは繋がらないってことか?
接続設定か接続文字列が間違ってるんじゃないの?
(´・ω・`) …
・ω・`) …
・`) …
ListViewでTile表示にするとアイコンが右方向に整列しちゃうんだけど、下に向かって並べる方法教えてください なぜかAlignmentプロパティはTile時には使えないらしい・・・
class Myclass : IComparable : ICloneable { } みたいにいくつかのインターフェースを継承したいんですが、どう書けばいいんでしょうか
できません
かんま
>>662 class Myclass: IComparable, ICloneable
できました。ありがとうございます
郵便はがきの宛名・文面を印刷したいんだけどC#からWORDの挿し込み使ってやるか PrintDocumentでシコシコやるか どっちがいいんだろ
サードのコンポーネントを購入
>>668 active reportはあるけど6.0ではないので縦書きができないという罠
まぁ、改行とか駆使してやればいいんだろうけど・・・・
もちっと楽に縦書きをやってみたかった
WORD本体の差し込みで十分だろ
>>670 まぁどちらにしろある程度の自動化はさせたい
ちょっと挿し込みやる方法調べてみるかな
672 :
妖犬 ◆youkenkF9Y :2011/01/07(金) 15:52:30
例外処理の使い方が正しいか教えろ try { int a = Int32.Parse(Console.ReadLine()); int b = Int32.Parse(Console.ReadLine()); Console.WriteLine(a + b); } catch (Exception) { Console.WriteLine("例外"); } finally { Console.WriteLine("終了"); }
okotowarisimasu
PropertyGridの扱いについての質問です class Test { object obj { set; get } } 上記クラスをPropertyGridにセットし、objにセットされている型に応じた操作を行いたいのですが読み取り専用となってしまいます 当たり前と言えば当たり前なのですが、現在の型に応じてセット出来るようにするにはどうしたらいいのでしょうか TypeConverterあたりで出来そうな気がしますがなかなかうまくいきません
objの型に応じて何に何をセットするのさ
676 :
デフォルトの名無しさん :2011/01/07(金) 16:56:49
age
省略してすみません PropertyGridにTestをセットすると、PropertyGridのプロパティリストにobjが現れるのですが読み取り専用になってしまいます。 このときたとえばobjにstringが代入されていればPropertyGrid上で文字列操作を objにboolが代入されていればtrue、falseの選択を 列挙型が代入されていれば対応する各値の選択を行いたいのです 現状はProeprtyGrid上で読み取り専用となってしまい、変更が出来ないんです
無理 そんなもん何に使うの? PropertyGridって開発者向けのツール作るためのもんだよ?
プロセスAからプロセスBを起動し、プロセスBはプロセスCを起動するのですが このプロセスCのPIDをプロセスAは直接的な方法で取得することは可能でしょうか? プロセスCは複数起動されることがあるため、プロセス名だけでは判断できなくて困っています
680 :
デフォルトの名無しさん :2011/01/07(金) 19:11:45
>>679 AがCを直接しるのは無理じゃないの?
BがCを管理してAからの要求に答えるかCを起動の度に
デリゲートでAの通知用メソッドを呼び出すようにするとか
プロセス超えてデリゲートは無理 リモーティングかパイプで通信
682 :
デフォルトの名無しさん :2011/01/07(金) 20:27:02
API CodePackのShellObjectWatcherなんですが、うちの環境(Win7 64)だと 起動したらプログラム終了しなくなるけど他はどうですか? もし使える物ならFileSystemWatcherの代わりに使いたいんですが
Janeのポップアップみたいに、親フォームをアクティブにしたまま新しいウィンドウを操作する(または子ウィンドウを非アクティブのまま操作?)方法を知りたいんですが どなたかご存知ありませんか? ShowWithoutActivationでtrueを返したり CreateParamsでcp.ExStyle |= (int)(WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW)したりしましたが クリックするとアクティブってしまいました どなたかこの卑しい豚に助言という名のえさをお与えください
684 :
デフォルトの名無しさん :2011/01/07(金) 22:42:01
>どなたかこの卑しい豚に助言という名のえさをお与えください ∧_∧ (´・ω・) いやどす ハ∨/~丶 ノ[三ノ | (L|く_ノ |* | ハ、__| ""~""""""~""~""~""
>>680-681 ありがとうございました
やはりBやCに何らかの手を加えない限り無理みたいですね
とりあえずは最新に起動された物がどれか判別できればいいのでProcess.StartTimeを比較することで実現できました
>>683 単純に「親フォーム」とやらをオーナーにするだけじゃダメなの?
>>686 常に手前に表示されるようになるだけで、触れるとアクティブになってしまう
ToolTipクラスみたいなものを作りたいの?
>どなたかこの卑しい豚に助言という名のえさをお与えください こういういかにも下手にでましたので教えろや!!って本音が見えるような書き込みがなければ教えたんだが・・・
あとあのご教授・・・のパターンも気持ち悪い そこまで気を使う場所じゃないし、かえって不気味
じゃあ何ならいいんだよ
気を使わずに済む場所だってんならそういうのも気にせず教えてやれよw
いまいちやりたい事がわからん どなたかこの貴い豚に追加情報という名のえさをお与えください
それは聞き方の問題じゃなく無能すぎだろ
>>696 ホントにやったのか?
アクティブにしたくないFormに対策するのと
そのFormに貼るコントロールにも対策するだぞ
>>697 昨日の時点で既になんだ
そして挫折し、放浪し、ここに至る
問題なく動くじゃないか どうせコピペした際にFormのイベントとかちゃんと動くようにしてないんだろ
よくわかってないのであれば人のプログラムをとりあえず全部移植して動かしてみて動くことを確認するのが普通だろ 関連するポイント無視してコピーして動きませんってそりゃあまりにもボケナスすぎだろ
>>701 勝手に解釈して当たり前の話ばかりするんじゃない
鬱陶しいからもういい
よくわからんが動かんとかいうコードを晒せよ どうせミスってるんだろうし
AxWebBrowserで表示したページのタイトルを取得するにはどうしたらいいのでしょうか?
706 :
デフォルトの名無しさん :2011/01/08(土) 04:38:21
>>705 ドキュメントからタイトルタグ探せばいいんじゃね?
解決しました ありがとです
708 :
デフォルトの名無しさん :2011/01/08(土) 08:38:35
質問です。 整数の範囲をチェックするには、 0 < a && a < 100 とか書けば良いと思いますが、これをビット演算等でやる方法はあるでしょうか?
宿題なら他でやれ
710 :
デフォルトの名無しさん :2011/01/08(土) 10:11:48
宿題ではないです
宿題です 私が断定しました お引取りください
ビット演算等でやる方法はありません
マジで!?
マジかも
あるだろw だが、なんでビット演算なんだよ>宿題以外考えられないな。
100って2進数で1100100だろ? こんな歯抜けをビット演算だけでやるくらいならifで大小比較した方が速いわ
宿題なんだろ
>>716 特定のビットがあるかどうかのチェックならビット演算する意味あるけど
そのくらいなら普通に計算した方がいいよね
というかいまどきビット演算を使うことなんてそうそうねーだろ
>>717 宿題にしても無駄すぎる
出題する教師がバカなのか教師ゆえに時代遅れで化石なのか
宿題なら考えることに意義があると思うが
この問題を宿題で出すなら俺は値の範囲を0〜127って出題するな 無駄ってそのことだろ
[Flags]のせいで結構ビット演算使う気がする
しかし良く使う演算は拡張メソッドにしてしまうし
722を書き込んでから気づいたわ
型制約にEnum入れられるようにして欲しいなー public static bool Contains<T,V>(this T e, V flag) where T : Enum { } これ書けりゃ汎用化できて最高なのに
.NET4にはEnum.HasFlagがある リフレクションなので糞遅いけど、ジェネリック使ったからといってもリフレクション使って実装するしかないはず
WeakRefでしばらく取っとけよ
WeakReferenceって参照先が不要になったときにGCを邪魔したくない場合に使うもんで 後でまた使うかもしれないからとりあえずキャッシュをしばらく置いときたいようなときには WeakReferenceではすぐ消えてしまってあんまり役に立たないよ 型ごとにキャッシュを持つなら際限なくリークするようなことはないはずだから 普通にstatic Dictionary<Type, キャッシュ>とかでいいと思う
ダウンロードサイトなどでよく使われる画像認証を解析するようなライブラリってありませんか?
BinaryReaderで読み取ったByte[]って、 floatとかstring型にそのままぶち込むことが可能ですか?
>>731 BitConverterとかEncodingとか使うと良いよ。
BitConverterってのがあるけどfloatはねーな あるのはToDoubleだ stringはBitConverter.ToStringでいけると思う
BinaryReader使ってるんだったらBinaryReader.ReadSingleとかすればいいんじゃ… Stringはどういう形式をどういう形式にしたいのか分からんとなんとも言えんけど
くは〜w
くこ:ミ w
if ((○ && □) || △) のような条件式のとき、○がfalseだと□を飛ばして△が評価されるという動作であってます?
string x = null; string y = string.Empty; if ((x != null && x.Length > 0) || (y.Length > 0)) { // } でも試してみたら 例外が出たら□は評価される
(´・ω・`)…
アドバイスくれた人をごちゃごちゃ・・・とか書いちゃうやつなんでこういうテストはしてないだろうな・・・ 確かに親Formから呼び出したFormとしてはダメだけど Program.csをこんな感じで書き換えて直接3を実行すると上で紹介されてる動きするけど・・・ using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace DoraemonPopup {     static class Program     {         /// <summary>         /// アプリケーションのメイン エントリ ポイントです。         /// </summary>         [STAThread]         static void Main()         {             Application.EnableVisualStyles();             Application.SetCompatibleTextRenderingDefault(false);             //Application.Run(new Form1());             Application.Run(new Form_Popup3());         }     } }
>>747 の話を考慮にいれると別exeにして起動すればいけそうだな
>>748 同じプロセスなのが駄目なら、違うプロセスで動かせばいいんだと思ったが
やり方を全く知らないし、調べるのがめんどくさそうなので放置した
いま、「一応」動いてるし、一応・・・
うーん求めるものがよくわからんが
Form_Popup3にActivatedイベントを追加してそこへ
this.Owner.Activate();
と追加すれば
>>747 に近い動きしたよ
>>747 と違ってウインドウの移動もスムーズだし
>>751 ありがとう
Janeのポップアップと同じもの作ろうとしてるようなものなんだ
それだと常にオーナーがアクティブになるのでポップアップが操作を受け付けなくなってしまう
あと一瞬フォーカスが移るからタイトルバーが微妙に点滅してる
ありがとう、後は自分で何とかするよ
俺は煽られると煽り返すタイプだからいないほうがいいし
753 :
デフォルトの名無しさん :2011/01/08(土) 22:45:15
そもそもJaneのポップアップってどれのこと言ってるんだ?
>>741 なるほどそうやって確かめるのか。
結果はちゃんと□を飛ばしてくれました。
756 :
デフォルトの名無しさん :2011/01/08(土) 23:04:18
>>753 詳しくはないけど迷路探索のあたりの考えが使えるんじゃないかな?
>>753 aとbだけじゃマスが開いてるかどうかわからないからboolの配列を増やす
そうするとaはbが決まれば変わらないので、ループの外で計算する
c,d入力後にaが0で開いているマスの隣接マスを開く、これを開けなくなるまで繰り返す
void 自動で開ける(int x, int y) { if (範囲外(x, y) || もう開いてる(x, y) || チェック済み(x, y)) { return; } if (!隣接するマスに地雷がある(x, y)) { 開ける(x, y); } 自動で開ける(x - 1, y);自動で開ける(x + 1, y);自動で開ける(x, y - 1);自動で開ける(x, y + 1); チェック済みにする(x, y); } こん感じじゃないの
760 :
作本 :2011/01/09(日) 05:39:01
Windows Form アプリケーションを作成しています。 @ 複数の端末でその日の記録を入力する。 A シャットダウン時に、ネットワークの共有フォルダにその内容をテキスト出力 B 起動時には、その共有フォルダ内のテキスト全件を読み込み、他端末の入力情報も取り込む 以上の仕組みを作っていますが、 どの端末も毎日起動しているので、当然の結果として、 共有フォルダにテキストデータが1000件近く溜まってきました。 なので起動時に重たくなってきています。 共有サーバにデータベースを置けないのでそうしたのですが、 (1) このようなテキストデータがある程度の件数蓄積されてきたら、 自動でフォルダを生成し、一定の過去データを移動し自動で圧縮をかける ことはC#でできますでしょうか。 また、 (2)圧縮フォルダを解凍する ことも可能でしょうか。 お手数ですがよろしくお願いいたします。
>(1) >このようなテキストデータがある程度の件数蓄積されてきたら、 >自動でフォルダを生成し、一定の過去データを移動し自動で圧縮をかける できない >(2)圧縮フォルダを解凍する できない 両方とも自動でなんてのは無理 それより各端末のファイルをたとえば yyyymmdd_hhmmss_ID.txt とかファイルでわければいいんじゃないの? で読み込む範囲を日付で絞るとかすればいいだけだろうし
両方出来るだろw ファイルのみで扱えるデータベースもある (SQLSever CompactやSQLiteとか、MDBはやめとけよ)
763 :
作本 :2011/01/09(日) 08:36:40
>>761 さん
>>762 さん
ご返信くださりありがとうございます。
>>761 さん
日付で読み込むファイルを絞る方法、大変参考になりました。
かなり所要時間が短縮されると思います。
あとは、30,000件ほどにファイルが増大した場合に、日付判定を含めてどれくらいの負荷があるか、
試験したいと思います。
>>762 さん
圧縮・解凍方法は、dobonさんのページにあるF#の機能を使用する方法でしょうか。
また、ファイルのみで扱えるデータベースとはどういうものでしょうか。
よろしくお願いいたします。
766 :
デフォルトの名無しさん :2011/01/09(日) 10:15:49
>ただし一度に書き込めるのは一人だけなので、それをケアできるようにプログラムしないといけません
管理とか面倒だから
>>761 を提案してるのに・・・・
他の端末と排他制御したりとデータの整合性を取らないといけないとかあほらしい
>>763 まあ日付跨ぐようなブラックな企業かどうかわからんけど
日付跨がないのであればその日の年月日(yyyymmdd)でフォルダを作ってそこへ出力すればいいのとちゃう?
768 :
作本 :2011/01/09(日) 10:42:55
769 :
デフォルトの名無しさん :2011/01/09(日) 10:50:36
VS 2010 C#で既存のTESTフォームに 06:00:00からの経過時刻を表示したいのですが コード教えてください。
VS2010のスレへどうぞ
Timerセットして6時のDateTimeと現在のDateTimeで引き算してToStringすりゃいいだけです
>>769 確認はしてない。
var now = DateTime.Now;
var from = new DateTime(now.Year, now.Month, now.Day, 6, 0, 0);
Console.WriteLine("{0}", (now - from).TotalSeconds);
773 :
デフォルトの名無しさん :2011/01/09(日) 11:01:16
>>771 引き算するならTimerは何に使うのかと・・・
経過時刻を毎秒更新するためじゃないの?
773はTimerを1000ミリ秒に設定すれば現在時刻いらねーじゃんって考えたんかな
ところで、それは経過時間ではなかろうか
もともと「経過時刻」って日本語がおかしい
そもそもマルチだから答える必要はない
>>769 昼の11時なら05:00:00、朝の5時なら23:00:00っていう感じにしたいなら
var t = DateTime.Now.TimeOfDay;
if (t.Hours < 6) {
t = t.Add(TimeSpan.FromDays(1));
}
t = t.Subtract(TimeSpan.FromHours(6));
Console.WriteLine(t.ToString());
float?ってfloatと何が違うんでしょうか
nullableで調べる
null 許容型というのか ありがとん
すみません。教えてください。 初めて作ったプログラムを、初めて「発行」という操作をしたのですが、 発行場所というのがよく分からず、とりあえずデスクトップにしてみたのですが、 そこにできたSetupをクリックしたら、とりあえずインストールされたのですが・・・ 本体のExeは何処にあるのでしょうか?Progrum Filesの中にはそれらしいのは見つからなかったのですが・・・ デスクトップ上に出来たマニフェストファイルはちがいますよね? プロジェクトの中のbinのリリースフォルダでしょうか? とすると、発行場所にできたファイル郡は何でしょうか?
Visual Studioスレで聞いた方がいいような気がする さもなくば ClickOnce インストール先 などでググる
Program Files に入れるためには管理者権限いるから、ユーザーの AppFolder とかに入る。
ありがとうございます。ちょっとググって見ました。 発行ウイザードでできるプログラムは少し特殊なんですね。 いやー、自作アプリ作るのは敷居が高いなあ(^^;;;
ClickOnce で発行できるようになってずいぶん楽になったけどもね。
そもそもスタートメニュー内にショートカットができるし アンインストールもコントロールパネルから行うことができるので ユーザーは本体の場所を知る必要がないはず
ユーザーはね。プログラマーは一応知っといたほうがいいんじゃない?
不特定多数に配るフリーソフトとかだったら ClickOnceみたいなのはユーザーにとってすごく抵抗感が強いので避けたほうがいいと思う 普通にインストーラ配るほうがマシ
知って何ができるかなぁ。
>>790 ClickOnce、ただのインストーラーとしても使えるよ。
ZIP で固めたインストーラーとしても配れる。
ClickOnceとか作るぐらいならWindowsインストーラというかsetupプロジェクトを もっと実用に耐えるものにして欲しいよな。
ユーザーにとってすごく抵抗感が強いClickOnceデプロイメントを どうしてGoogle Chromeは採用したんだろうね。 すごく抵抗感が強い?何それ妄想?
従来のインストーラーだと権限の問題があったり zipパッケージだと馬鹿にはインストールできなかったりで 落とし所としてはこんなもんじゃねえかなあと思う
>>795 Googleがリリースしたのをインストールするのと
そこらのサイトから誰とも知らん人が作ったアプリをインストールするのでは
前提を一にすることはできないのではないか
そこらの名も知らぬ馬の骨が作ったアプリでも ClickOnceではなくインストーラーなら信用できますッ!ってのも大概に頭おかしいだろw
つか発行するときにCD-DVDからインストールに指定すればsetup.exeになるだろ インストーラと何が違うってんだよ
ソフトウェア板にインストーラはレジストリが汚れるから嫌ですって言う奴まだ沢山いるからなー。 いつまで9x系の頭してるんだろう。
レジストリ汚すのは事実だろ .NETアプリはレジストリ使わなくなりつつあるけど
で、C直下とかにフォルダ掘りまくってディスク汚すんでしょ。
なんか、ClickOnceだってインストーラーの一種なのに、 なんでClickOnce VS インストーラーみたいな口調でしゃべってる人いるの?
アホの797本人に聞いてください
今はなんでもユーザーフォルダに入れるのが流行りだよね
e:\Program Files\に入れたいのにcドライブのユーザーフォルダにしか入れられないのはいやん。 OS再インスコしたときにインストールし直すのめんどいしなー。小物アプリはzipで固めてくれたほうが助かる。
807 :
デフォルトの名無しさん :2011/01/10(月) 01:31:28
2行のレスで破綻するとは凄い才能だw
システムドライブ以外のところに置きたいって話だろ。破綻してないじゃん。
何のスレだか分からない流れだけど、バイナリを[ユーザー名]以下のディレクトリに
ブチ込むインストーラーはないでしょw
>>805 の言ってることは(本人が意図しているかどうかは分からないけど)正しいけど、
それって設定ファイルのことでしょ。
811 :
デフォルトの名無しさん :2011/01/10(月) 01:55:31
>>810 しかしUACみたいな仕組みを作ってまで、不正なプログラムが入らないようにセキュリティー上げているのに
それがウザいからってユーザーディレクトリーにインストールする仕組みを本家が出すってどうなんだろうな
>>811 1人のユーザーしか使わないならそのユーザーの許可だけ得られれば問題ないという考え方だろう。
結局UACだってユーザーに判断を委ねてるにすぎないし。
>>811 セキュリティ的に問題ないからユーザーディレクトリにインストールできるようにしたんだろ
ユーザーディレクトリに入れたプログラムが昇格したらえらいことだけどな
なんで?
管理者権限を要求するインストーラーとClickOnceを並べて ClickOnceはユーザーディレクトリにインストールするから危険だ って凄い違和感あるんだが
全然違和感ないな。 ユーザーフォルダってことは子供がPC触って簡単に プログラム入っちゃうってことだろ。
結局、手間が増えただけで全くセキュリティは上がってないってことだな。
入っちゃって何か問題が? あるとすれば子供よりむしろ管理がめんどくさくなる企業とかの方だろう
PCに対するセキュリティとユーザ自信による操作ミスをごっちゃにしてるんだろう そういやChromeのインストールもユーザーディレクトリだったな
他プロセスがHDDにガリガリアクセスしていたら ループ内でスリープをはさもうかと思ってるんですが どうやって調査すればいいんでしょうか。 PerformanceCounterでCPU消費率は取れるっぽいんですが 単位時間あたりのHDDへのアクセス量の取り方がよくわかりません。
パフォーマンスモニタ使えばPerformanceCounterでどんなのが使えるか簡単に見られるよ
ユーザーディレクトリ云々言い出したら有象無象のzipが一番危ないだろw
>>822 Disk Read Bytes/secとかを指定すればいいんですかね。。
ちょっと試してみます。
ありがとうございました。
>>823 どこにインストールするかは本質的な問題じゃなくて、恐らく
>>811 が言おうとしたことだと思うが、
OSは「問題の有無を判断すべき(できる)ユーザ」にだけ判断をさせる思想で
作ってあるのに、それと矛盾することをやっていいのかよって話。
だったら管理者がポリシーでも設定して置けよボケ
パソコンも免許制にして欲しいもんだ。 問題の有無を判断すべき(できる)ユーザがパソコン買えよ。
>>825 OSはユーザーの権限内であれば何やってもいいように作ってあるだろ
頭おかしいの?
Linuxだって自分のhomeには自由にインストールできるしね これって特殊か? 自分が物をしらねえだけじゃねーの
>>811 だってUACが必要な部分までアクセスするようなプログラムじゃなきゃ問題にならねえだろ
何でUACが出るとセキュリティが上がると思ってんの?気分的な問題?
>>829 判断力のないユーザーがインストールしたソフトが、そのユーザーが権限もってる
ディスクのデータを全て破壊する物だとしてもか。
頭がオカシイのはどっちだよ。
>>832 そんなのどこのOSでも同じだろ
誰の思想なんだよ?お前個人の?
ディスクのデータを全て破壊する物だとしてもか(苦笑)
しかしすげーな ここまでの馬鹿がClixkOnceに過剰反応していたんだと思うと笑える
いつものことだが馬鹿はまだ許せるけど人間的に幼稚な奴は本当嫌だな。 ぞんざいな口調でいきなり人をお前呼ばわりとか、 よくそういうガキ臭い自分自身に耐えられるな。 少しは自尊心ってものがないのかよ。
お前こそ、反論できなくなったらいつもそれな。 自尊心に従って失せろカス。
噛み付いてるのが例外を握りつぶすちゃんだって今気づいた 281 名前:デフォルトの名無しさん[sage] 投稿日:2010/09/02(木) 00:33:08 馬鹿ばかりで話にならん。 「よく使われる」ことと「意味が明確」なことは全く別の事柄で、 俺は後者について怪しいと言ってるんだけど。 「例外を握り潰す」なんて言い回しに何も疑問も感じない人はプログラマ向いてないと思う。 「握り潰す」ってのは、漠然と「例外を伝達も処理もしないことは悪い」みたいな事を 言わんとしてるんだろうと想像するが。例外に関して重要なことはプログラマがそれをちゃんと 想定しているか否かであって、「握り潰す」かどうかではない。 単にキャッチして伝達も処理もしないことが正常、という場合だってあるのに 「握りつぶす」なんて言い回しを平気で使えるガサツさは俺には理解できない。
そうか冬休みか
http://hibari.2ch.net/test/read.cgi/tech/1281236906/192 192 名前:デフォルトの名無しさん[sage] 投稿日:2010/08/30(月) 21:50:58
そういう発想って「推定有罪」みたいだね。
普通は(その方が便利なものを)禁止する場合に理由が必要だと考えるのじゃないの?
なんで「手を縛るな」というのり理由が必要なの?
よくわからん発想だ。
http://hibari.2ch.net/test/read.cgi/tech/1281236906/289 289 名前:デフォルトの名無しさん[sage] 投稿日:2010/09/02(木) 00:51:22
頑固というのは自分の意見に固執することを言うんだろうが、
自分の「愚見」に固執している奴が相手を指して「お前は頑固だ....」
そういうことばのセンスをしているから「例外を握りつぶす」なんて言い回しに
何も疑問を感じないのだろう。
まあ言葉に対する感受性以前に、自分を棚に上げる自己中心性という要素もある(そちらの方が大きい?)がw
※このスレと相談室に常駐です
※鍵括弧を多用します
※句読点は打つ派です
※○○性という言葉を好みます
※返す言葉がなくなると人格批判を始めます
※普段はいい子ですが、みながわけんじさんみたいに自分を過信する頑固さがあります
>>832 パソコンは判断力の無いユーザーが
rd /S /Q %APPDATA%
なんてバッチを実行したら止めてあげないといけないんですかね
正直そこまで面倒見切れないような気がしますが
↑みたいなのって「お前あのときの○○だろう」と特定されるとうろたえる ひ弱な自分自身を語るに落ちてるだけだと思うんだが、頭が悪いから気付かないのなきっと。 ついでに言えば、こんなコピペを何時でも貼れるように用意してる動機って 他人から見ればあまりに見え透いてる(それはまともに反論できないから、 こんなことでしか悔しさを晴らせない)ことも分からないらしい。
書き込む前に慌てず騒がずリロードしましょうね
>OSはユーザーの権限内であれば何やってもいいように作ってある これはホントどこのOSだろうがその通りだと思うんだけど。 例外さんの見解は違うの?教えてクレクレ。
>ディスクのデータを全て破壊する物だとしてもか。 騒いでるやつ馬鹿すぎワロタ
喧嘩なら他所でやってくれ
セキュリティのどこまでがOSの責任で どこからがユーザーの責任か区別が付いていないから こういうトンチンカンなことを言い出す
嗤ってるだけです
インストールを選択した時点でユーザーの責任なんだから好きな場所にインストールさせろよ
今度は「ClickOnceでは好きなところにインストールできないからクソだ」にシフトしたようですね 哀れ過ぎてゾクゾクしますね
薬飲んで寝てろ。
妄想馬鹿が何でもかんでも噛み付くから運営は全ID表示にしろw
運営も凄いアホさを露呈したばかりで、それどころじゃありません。
コードが合計何千行とかになって、ホイール回してるだけで指吊りそうになるんですが、 どうしたら良いんですかね
指立て伏せ1万回
#region使う ブックマーク使う アウトライン使う ファイル分割する お好きなのでどうぞ
つ↓
つ↓
つPage Down
public struct Hoge { public int A;} class Program{ static void Main(string[] args) { Hoge foo = new Hoge(); Hoge bar = new Hoge(); foo.A = 0; bar = Piyo(foo); Console.WriteLine("{0}", bar.A); } Hoge Piyo(Hoge hoge){ return hoge.A = 1; } } とするとエラー型 'int' を型 'ConsoleApplication1.Hoge' に暗黙的に変換できません。 と言われてしまいます どうしたら良いのでしょうか
Hoge Piyo(Hoge hoge){ hoge.A = 1; return hoge; } にする
外野だがそれで対策してもこんなエラーでるな >エラー 1 >静的でないフィールド、メソッド、またはプロパティ > 'ConsoleApplication1.Program.Piyo(ConsoleApplication1.Hoge)' >で、オブジェクト参照が必要です クラスで慣れてるのですぐに対策が浮かばねえ というかなんで値渡しの構造体なんて使うんだろう
refでも使えば?
OK 分かった using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 {     public struct Hoge { public int A;}     class Program     {         static void Main(string[] args)         {             Hoge foo = new Hoge();             Hoge bar = new Hoge();             foo.A = 0;             bar = Piyo(foo);             Console.WriteLine("{0}", bar.A);         }         //         //staticが必要         //         static Hoge Piyo(Hoge hoge)         {             hoge.A = 1;             return hoge;             //return hoge.A = 1;         }     } }
分かってねー
871 :
デフォルトの名無しさん :2011/01/10(月) 23:55:07
値渡しとか関係ねーw
873 :
デフォルトの名無しさん :2011/01/11(火) 00:36:31
たしか、なんとかを実装すると、ForEachとかで回す事ができるようになるっていうのが あったんですが、なにでググレばいいっすかね?
IEnumerableかもね
>>867 class Hoge{
public string x;
}
class Sample{
static void Main(){
Hoge read = new Hoge();
Hoge write1 = new Hoge();
Hoge write2 = new Hoge();
read.x = Console.ReadLine();
write1 = read;
Console.WriteLine("write1.x:{0}", write1.x);
read.x = Console.ReadLine();
write2 = read;
Console.WriteLine("write1.x:{0}", write1.x);
Console.WriteLine("write2.x:{0}", write2.x);
Console.Read();
}
}
こんな感じで、値が一緒に変化されると困るんです
876 :
デフォルトの名無しさん :2011/01/11(火) 00:38:53
877 :
873 :2011/01/11(火) 00:40:58
>>874 thxっす。ぐぐったらでてきました。それっす。
ありがとうございます。
878 :
873 :2011/01/11(火) 00:42:19
>>876 どうもっす。IEnumなんとかでいけました。
回答どうもっす。
>>875 古いグラマーなのかな?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
    class Hoge
    {
        public string x;
    }
    class Sample
    {
        static void Main()
        {
            Hoge write1 = new Hoge();
            Hoge write2 = new Hoge();
            write1.x = Console.ReadLine();
            Console.WriteLine("write1.x:{0}", write1.x);
            write2.x = Console.ReadLine();
            Console.WriteLine("write1.x:{0}", write1.x);
            Console.WriteLine("write2.x:{0}", write2.x);
            Console.Read();
        }
    }
}
>>868-869 ,880
いや、なんというかそれだと考えてる動作を満たせなくて・・・
うまく説明できないので整理して出直してきます
答えてくれてありがとう
875の何が問題で 880で何が解決するのか 誰か解説してくれるとありがたい
てst
おれもさっぱりわからない。 同じものを参照しといて、同じになるなとはこれいかに。
参照型の代入が同じものを参照することになると認識してなかったって話だろ
>>885 文章読めよ
>>875 は避けたいコードの例だよ
質問主が構造体を利用してreadというワークエリアぽい物を使う意図が
さっぱりわからないので無難な回答として
>>880 のようなことになってるだけでしょ
.net開発はそれほどやってない人が変なことやってる場合もあるし
開発はそれなりになやってるけど質問する際に全部を明かすわけにもいかないので
こういう歯切れの悪い状態なのかもしれないし
エスパーすると、 write1 = read; を write1.x = read.x; と書くか、ICloneableを実装しろ。
実装しろ。
・・・(´・ω・`)
891 :
デフォルトの名無しさん :2011/01/11(火) 15:51:09
何を勉強すればいいか教えろ とりあえず薄い入門書を一冊読んだ
893 :
デフォルトの名無しさん :2011/01/11(火) 15:56:44
>>893 専ブラでも作ったらどうだ?
C#をそこそこ使うから勉強になるぞ
>>893 最終的に何作りたいかによるけど・・・
業務的に使いたいならデータ保存にDBとかXML使った名簿管理とかどう?
データの取り出し、追加更新削除や入力チェックとか
最低限業務で使用する機能が入ってる。
C#, C♯, C#相談室 Part64 のスレ立てれんかった テンプレのリンクとか全部書きなおしたのに・・・ 立てれる人いるならテンプレどっかにアップするよ。
>>898 ありがとう任務完了しました(`・ω・´)ゞ
乙
ドボンのTips見ながら、2つのForm間の値の受け渡しでつまづいてます。 Form1のpublicな変数の値を、モーダルで開いたForm2のコンボボックスのTextプロパティに渡したいのですが、 コンボボックスのDropDownStyleをDropDownListにしてると出来ません。 コンボボックスの上部をユーザーがエディットできない状態にしつつ、 Form1の変数を渡すことは出来ませんか? よくある、コンボボックスを開いてデバイスを選択して、環境変数を変更するダイアログが作りたいのですが。
まずはリファレンスを読むんだ
MSDNは見てるんですけどね。 コンボボックスのプロパティの問題なのか、 フォームの開き方なのか、インスタンスの作り方なのか・・・ 何処が原因なのか、まだよく分からないので、ヒント教えてください。
一気に大ジャンプしてMVVMでも
できません、じゃなくコード書け
items.add items.index この二つを使うだけじゃね?
コードってこんなんでいいですか?Form1が、
public string x = "name";
private void 環境設定ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.ShowDialog(this);
if (f2.DialogResult == DialogResult.OK)
処理;
f2.Dispose();
}
Form2が
private void Form2_Load(object sender, EventArgs e)
{
comboBox1.Text = ((Form1)this.Owner).x;
}
comboBox1のitemsを作るところはもう出来てるんです。
ただ、環境設定ですからまず現状を表示しないといけないので、
Form1の現状をForm2コンボボックスの上部に表示させたいのですが、(以下
>>901 )
>>907 それForm2とか関係ないじゃん
DropDownListスタイルだったらTextになにを設定しても表示されない
そうなんですか? Listからせ託したものは表示されるけど、外部からプロパティでは触れないと? うーん、じゃあ単に表示じゃなくて、Listの中から検索して表示にしないと駄目なのかな。
せ託 → 選択
>>907 そのコードをコピペしてやってみたら俺のは表示された
俺も初心者だから何が原因か分からないけど俺のソース貼ってみる。
↓↓↓form1
public string x = "ヤッホー";
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.ShowDialog(this);
if (f2.DialogResult == DialogResult.OK)
{
}
f2.Dispose();
}
↓↓↓form2
private void Form2_Load(object sender, EventArgs e)
{
comboBox1.Text = ((Form1)this.Owner).x;
}
Form2のドロップダウンする前のコンボボックス「ヤッホー」と表示される
だから >コンボボックスのDropDownStyleをDropDownListにしてると出来ません。 って書いてあるじゃん
その通りだった DropDownListにしてなかった すいません
何お前?ありがとうございます
どういたしまして。カス
ゴミ同士なかよくしろよ
ヘルプにヘルプが必要な時もあるけど 最低限読んどけよなカス
920 :
デフォルトの名無しさん :2011/01/12(水) 10:18:54
C#から携帯電話の電話番号をプッシュするようなソフト (サードパーティツールは使用不可能)て作成できませんか? 要は、プログラム内のボタンをクリックしたタイミングで接続している携帯で電話をかけられればいいのですが 今のところドコモのFOMA限定で考えています(ガラケーのほう) WindowsPhoneならいけそうですが、そうもいかないっぽいので PCとFOMAの接続は純正のUSB→FOMAの充電部接続するケーブルを考えています。 絶対に無理とか何らかの情報で構わないのでお願いします。
携帯電話をモデムとしてダイヤルするとどーなるんだろ?
レスありがとうございます。
>携帯電話をモデムとして
これが出来ればATコマンドでいけるんですが・・・
>>922 それは難しいです
>>925 ありがとうございます!!
こんな資料があるとは・・・・
USBハンズフリーあたりの情報からいけそうな気がしてきました。
レスくださった皆様ありがとうございました!
927 :
デフォルトの名無しさん :2011/01/12(水) 12:09:49
>>922 のいう装置はやねうらお氏が自作してたな
ボタン部分をひっぺがしてショートさせるやつだけど
>>925 のような資料を元に一昔前はPCで携帯電話の
メモリー管理をするケーブルとかソフト売ってた記憶があるけど
ああいうのってもうないのかね?
あれだと確かドライバー入れればソフトは自分でも作れたような記憶が・・・
というかケーブルとドライバーさえなんとかなればFOMAだろうが単なるモデムにみえるよね?
>>927 ショートさせるのは強引すぎますねぇ(^^;
とりあえずモデムに見えるのを期待してドライバとか入れてみます。
930 :
920 :2011/01/12(水) 13:04:51
あるプロセスがネットワークに接続しているかどうかを確認する関数ってありますか? ググってもPC自体がが接続しているかどうかのチェック方法しかでてこなくて・・・
NetStatの結果を取得してきたりとか駄目?
ネットワークにアクセスするときもあるけど確認したときはたまたまコネクション張ってなかった って場合は接続していないで良いの?
ぶひひ
c# 初心者です。 アプリケーションを実行中にもう一つウィンドウを出したいのですが、 namespace FromTestAppli { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form1 f = new Form1(); f.Show(); System.Threading.Thread.Sleep(5000); f.Close(); } } } というコードでウィンドウを作ったところ、作ったウィンドウが真っ白で応答なしになってしまいます。 f.Show()ではなくてf.ShowDialog()を使えば真っ白にならないのですが、1枚目のウィンドウも同時に使いたいです。 どういうコードを書けば期待した動作をしてくれますか。
GUIスレッドでSleepは厳禁 待つならSystem.Windows.Forms.Timerでも使えばいい
937 :
デフォルトの名無しさん :2011/01/12(水) 21:17:15
>>936 的確なアドバイスありがとうございました。
>>937 実際に作りたいものは少し違うのですが、大筋ではこのようなことがやりたかったのです。。
もしかしてスプラッシュウインドウをやりたいとか・・・?
こちらで質問していいものか分からなかったのですがこちらで2点質問させてください。 現在、ASP.NETで開発をおこなっておりそこにlog4netを導入しました。 設置環境としてはWindowsserver20008R2で 社内環境や客先で基本的には上手く動いているのですが 級ににログが出力されなくなったりすることがあります。 何かIISの設定やWebConfig等に気をつけることとかありますでしょうか? 続いて2点目なのですが、WebからClickOnceを起動するときに 401エラーが発生してしまいます。IISの設定はWindows統合認証に 設定しており、これは自社では動き、客先でエラーになっている 状態です。 分かりにくいかと思いますが、どうぞよろしくお願い致します。
前半 ログが出力されなくなる直前のログを確認しろよ 後半 ログ見ろよ
942 :
931 :2011/01/12(水) 23:21:29
>>932 netstatで確認出来ることは知っていたのですが、それをどうやって持ってくるのかが分かりませんでした
調べたところAPIのGetExtendedTcpTableなどで出来るみたいですね
ありがとうございました
>>942 んナめんどくさいことしなくても
こんなんじゃだめ?
using System.Text;
using System.Diagnostics;
using System.IO;
Process p = new Process();
StreamReader sr;
ProcessStartInfo startInfo = new ProcessStartInfo("netstat");
startInfo.Arguments = "-a";
startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = true;
startInfo.CreateNoWindow = true;
p.StartInfo = startInfo;
p.Start();
sr = p.StandardOutput;
あとはsrをお好きに
usingかいてねぇやw
StreamReaderのReadLine()を何回か呼び出したあとに読みこんだバイト数を調べる方法を教えてください
StreamReaderを初期化するときに使ったStreamのPositionの差分を調べる ただし、StreamがCanSeekを支援している必要がある
テキスト形式のファイルを読むパーサー作ったんですが 入れ子構造になった構造体をtreeviewに展開するのにすごく時間がかかります、 全部のノードで2万程なんですが、どうしたら素早く表示できるでしょうか 現状Core2 Duo 1.4GHzで30秒くらいかかります
947 :
デフォルトの名無しさん :2011/01/13(木) 10:58:59
treeviewをなんとかモードにするとか?
948 :
デフォルトの名無しさん :2011/01/13(木) 11:51:32
俺の作ったのはフォルダーツリーだが、最初のノードMouseEnterが来て、初めて子ノードを生成するようにした
マルチスレッドにするといいよ
普通に親だけ作っといて(子があるかどうかだけ判定しておく) 子ノードのクリックはしったら別スレッドで取得する Windowsのエクスプローラのツリーがそんな感じでしょ?
951 :
デフォルトの名無しさん :2011/01/13(木) 12:14:44
保持できるんなら取りあえずメモリに保持って
>>951 でやれば結構楽と思うよ
メモリの容量によると思うけど
ツリーに表示する時が遅いだけだから一度に全部展開しなければ済む話。
どういう風に質問したらいいのかわかりませんが、 回転中心の座標を移動させることは出来るのでしょうか?
XNAのことかー
wpfです。
>>954 なにを言っているか判りませんが
何とかすれば可能でしょうね
958 :
954 :2011/01/13(木) 14:08:49
うーん 回転する物体を平行移動しているのですが、 どうも平行移動する際に、回転の角度がおかしくなってしまうので、 回転中心が移動されてなく、固定されているんじゃないかなと思ったのです。 ですので、物体の平行移動と同じように回転中心を移動できれば改善されるかなと思ったのです。
959 :
デフォルトの名無しさん :2011/01/13(木) 14:11:00
最近だとクォータニオンがあれば回転軸がどこにあろうがちゃんとまわせなかったっけ?
だからまず回転する物体とはなんなのか説明してよ Managed DirectXの話?
エスパーすると、回転と平行移動の順番の問題だと思う
962 :
954 :2011/01/13(木) 14:15:54
>>959 クォータニオンで回転させているのですが、物体を移動させないときはきちんと回転させれるのですが、
移動すると平行移動しかしてないにも関わらず、変な方向にぶっ飛んでいきます
>>960 >だからまず回転する物体とはなんなのか説明してよ
すみません、何を聞かれているのかがわかりません。
WPF,C#,Direct3Dでしょうか
963 :
デフォルトの名無しさん :2011/01/13(木) 14:16:05
数学は得意じゃないけど矩形などで中心以外の場所に回転軸を設けて回すのであれば 一旦ポリゴンを分割して回せばいいだけなんだけどな
964 :
デフォルトの名無しさん :2011/01/13(木) 14:17:29
>>962 与え方が悪いだけのような
その場所付近のコードは晒せる?
965 :
954 :2011/01/13(木) 14:17:47
>>961 今は平行移動->回転の順番で記述してます。
967 :
954 :2011/01/13(木) 14:22:43
>>963 >>960 理解しました。物体は振り子のようなものです。
>>964 degree = parameter[2]
Quaternion xz = new Quaternion(new Vector3D(0, 0, 1), degree);
Aa.OffsetX = parameter.z[0];
Aa.Rotate(xz);
アフィン変換で拡大縮小平行移動回転するときは 拡大縮小回転の中心が原点にくるように平行移動 -> 拡大縮小 -> 回転 -> 目的の位置へ平行移動 の順で変換する
969 :
954 :2011/01/13(木) 14:26:03
>>966 やってみましたが、変わりませんでした・・・
970 :
954 :2011/01/13(木) 14:37:40
>>968 >拡大縮小回転の中心が原点にくるように平行移動
これがよくわかりませんでした。
どっかやり方がおかしいんだろ WPFはクォータニオンなんか直接触らなくても回転できる。わかんないなら難しいことしなくていい。 var rotation = new RotateTransform3D(new AxisAngleRotation3D(0,0,1), degree); var translation = new TranslateTransform3D(平行移動のベクトル); var transform = new Transform3DGroup(); transform.Children.Add(rotation); transform.Children.Add(translation); このtransformを適用するだけ
座標変換だかワールド変換だかを説明しなければいけない とおもったけどTransform3DGroup.Childrenが全部やってくれるのなら それでいいのかも
974 :
954 :2011/01/13(木) 15:15:55
>>971 できましたー!
30時間くらい悩んだのに\(^o^)/
助かりました。精進します!
976 :
デフォルトの名無しさん :2011/01/13(木) 15:20:42
C#でSQLiteを使ってるんですけど、 テーブル定義で、 command.CommandText = "create table Id_Name (id char NOT NULL primary key, name char)"; と、Id_Nameというテーブルを定義しました。 これでidは重複する文字は登録できなくなったのですが、 書き込むときに、 idが重複した場合エラーを Messagebox.Showで表示したいんですが 判定条件?はどうしたらいいですか? それから、NOT NULLにしてるので 文字が書き込まれなかった場合も 上記同様にしたいのですが どうしたらいいですか? 参考ページなどでもいいのでお願いします!
例外をキャッチするだけだろjk
insert する前にselectする
>>976 try
{
//処理
}
catch
{
//エラー処理
}
こんな感じかな
981 :
デフォルトの名無しさん :2011/01/13(木) 15:25:10
2chブラウザの作り方教えろ
WPFでPMDって読み込める?
983 :
デフォルトの名無しさん :2011/01/13(木) 15:32:14
やっぱりtrycatchでないとできないですかね・・・; 他に何かあればと思ったんですが・・・
984 :
デフォルトの名無しさん :2011/01/13(木) 15:33:09
単体で動かして、量がそこまで多くないなら一覧読み込んで水際でキャッチかな? 俺は基本的に例外はかせたくないタイプ 例外は本当に例外の時だけ 捕まえれるものは捕まえたい
>>983 C/C++時代のようにリターンコードを見るって感じじゃないみたいね
一応try catchもcatch側で細かいエラータイプをみれるようだけど
988 :
デフォルトの名無しさん :2011/01/13(木) 15:59:29
try{
command.CommandText = "create table Id_Name (id char NOT NULL primary key, name char)";
command.ExecuteNonQuery();
}
catch(Exception)
{
MessageBox.Show("NOT NULL or primary key ERROR!!");
return;
}
これでエラーを出すことが出来ました。
>>985 さん同様例外はかせたくないのですが
データ量がこれから多くなります・・・
水際でキャッチというのもよくわからなかったので><
989 :
デフォルトの名無しさん :2011/01/13(木) 16:00:58
>>988 です!
catch(Exception)
になっているんですけど
Exception以外のほうがいいんですかね??
もし、UnhandledExceptionとか受け取ってるなら CatchはDuplicationExceptionとか、重複した時に(に限らず想定できるもの)起こりうるような例外だけにして、 それ以外の物はキャッチするなり、しないなりしてリソースとかを適切に処理した後、 再度スローして任せるようにしたりするのはどう?
991 :
990 :2011/01/13(木) 16:05:06
>もし、UnhandledExceptionとか受け取ってるなら これ もし、UnhandledExceptionとかで捕捉してるなら の間違い
992 :
デフォルトの名無しさん :2011/01/13(木) 16:10:21
>>991 このtrycatchの外でも
違う場所で例外が出る可能性があるので
trycatchしています。
それもExceptionになってます。
trycatchが二重になっているといえばわかるでしょうか?
DuplicationExceptionとは、初めて聞きました。
ネットで調べてみたのですが
よくわかりません・・・
catch(DuplicationException)としてみると
usingディレクトリまたはアセンブリ参照が不足しています
と出てしまいます。
何をusingすればいいですか???
>>992 そりゃ取りあえずそれっぽい名前で書いただけだからあるわけがない
リファレンスの説明見るのが早いけど
一旦Exceptionで主キー重複例外発生させて
うけたExceptionの中身が本当は何なのかを見れば一応元の例外は判ると思うよ
あと入れ子になってる例外処理はバグとか調査の難航になると思ってるのは俺だけだろうか・・・
994 :
デフォルトの名無しさん :2011/01/13(木) 16:35:50
>>993 (Exception e)
e = {"Abort due toconstraint violation\r\nclumn Sirial_No is not unique"}
でした。
でも表示すると長ったらしく書いてあります。
なんの例外だかわかりますか?
trycatchの二重はやっぱりよくないですか・・・。
なんの例外だかわかれば二重にしなくてもいいのですが・・・
995 :
デフォルトの名無しさん :2011/01/13(木) 16:38:06
>>994 Sirial_Noとはidのことです!
だからまずselectしてinsertしようとしてるIDが無いか チェックしたほうがいいって。 いきなりDBに突っ込んで例外で判定なんてDQNだ。
997 :
デフォルトの名無しさん :2011/01/13(木) 16:57:23
catch(SQLiteException){/*エラー表示*/}
catch(Exception){}
これで解決しそうです。
>>996 さん
selectで見つからなかった場合は例外が発生しませんか?
いきなりDBに突っ込むのはまずいんですかね;
もう一つ質問です!
NOT NULLのことなんですけど
"insert into Id_Name(id, name) values (null, 'A')"
"insert into Id_Name(id, name) values ('', 'A')"
"insert into Id_Name(id, name) values (NULL, 'A')"
"insert into Id_Name(id, name) values ('NULL', 'A')"
どのパターンで書き込んでも
例外にならないんですけど
NOT NULL って何を書き込めばいいんですか?
質問です GCHandle.Allocで取得した領域を後から書き換える事って出来ますか? ある構造体でAllocした領域を丸ごと同じ型の構造体データで上書きとかでもいいのですが…
>>997 select count(id) from テーブル名 where id = @id
これで最低でも0はかえってくるんだぞ?
そうでなくてもレコードが返ってこないだけなんだから問題ない
DBのNULLは DBNull.Value ちゃうのん?
1000 :
デフォルトの名無しさん :2011/01/13(木) 17:24:11
>>999 なるほど
Countのことなど頭になかったです!
ありがとうございます!
やってみます☆
DBNull.Valueですね
こっちもやってみます!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。