>>1 スレタイ間違えました
正しくは
C#, C♯, C#相談室 Part56
です
次スレはPart57で立ててください
重複して両方ともスレ番号間違えるとは
別人です
別人なのに両方とも同じ間違いをやらかしてるのが興味深い
どこが本スレよ?
ここ もう一つのスレは削除依頼が出てるのかな? このスレが終わるまで残ってれば再利用だろうけど
>>10 もう一つのスレ建てたものです、
削除依頼済みですので、こちらが本スレですね
12 :
デフォルトの名無しさん :2009/12/08(火) 22:02:58
short配列をファイルに書き込みたいのですが、 StreamクラスのWriteメソッドはbyte配列しか引数に取れません。 short配列からbyte配列に簡単に変換するにはどうしたらいいんでしょうか? (Cのmemcpyのようなのが欲しい)
BynaryWriter使った方がいいんでない?
Buffer.BlockCopy
ありがとうございました。 BynaryWriterを使うことにしました。
そんなのねーよ
BinaryWriterじゃね? シリアライズするんでしょ?
InvokeScript
自己解決した。 シングルスレッドアパートメントのオプションつければよかったのね。
C#ってCって名前だけどJavaだね。 C+Javaって言う名前のほうがふさわしいな
C++++
Cava
スペインのスパークリングワインか
まあJavaもCの子孫みたいなもんだしな C++とJavaならJavaの方が近いとはおもう
Delphiの種が入ってるのは公然の秘密
Eiffelさんのことも、たまにで良いので思い出してあげてください・・・
foreach、ドット(.)区切りでメンバーを指定、イベント、 UIのビジュアルなデザイナ、プロパティグリッド…… どう見ても片親はVBだなw
そりゃもともと「C++やJava経験者向けのきれいなVB」として売り出してるわけだし
C#にてpanelに貼り付けた複数のlabelをクリックしたとき、 panelのクリックイベントを発生させるにはどうしたら良いのでしょうか? 複数貼り付けられたどのlabelをクリックしても、 panelでイベントを発生させたいです。
それぞれのLabelのClickイベントで同じメソッド呼び出すんじゃ駄目か
panel内のlabelのクリックイベントプロシージャをpanelのクリックイベントプロシージャにするんじゃだめなんか?
プロシージャw
foreach (var label in panel.Controls.OfType<Label>()) { label.Click += Clicked; }
35 :
30 :2009/12/09(水) 21:14:31
PGによって画面上にpanelを配置するのですが、 ユーザコントロールで、panel上にlabelが沢山あるものになっています。 配置したあと、PGにてそのpanelのイベントを登録します。 ですのでlabelをクリックしたら、panelのイベントがよばれると良いなと思ったのですが、 なんか無理そうな気がしました。。。
36 :
30 :2009/12/09(水) 21:15:29
どういたしまして
WPFだと楽なんだよな。
WPFは別の部分で大変になるからなぁ
C#でCEの無線LANを繋いだり切ったり状態を調べたりしたいのですが、 どうやればいいのでしょうか?
ペインを切り替えできるようなソフトを作りたいのですが どうすれば切り替えできるんでしょうか Janeみたいに、ボタン一つで表示位置を変えられるようにしたいです 内部でどういう処理をすればボタン一つで切り替えられるんでしょうか
UserControlでカテゴリわけ UI設計の基本です
どういう処理って言ってもそういう処理としか答えようがないな そういう機能が用意されてるわけではないので結構深いところから自分で枠組み作る感じ
XmlSerializerを使ってオブジェクトをXML化したいのですが、 byte[]のメンバが暗号化されてしまうのを止めることは可能でしょうか? int[]メンバのような形でXMLにしたいのです。 宜しくお願いします
暗号化w
BASE64が暗号化かどうかはともかく、 そのメンバにXmlArray属性かXmlArrayItem属性を付ける 両方でも可
暗号化と符号化の区別がついていない人がいるって聞いたので、着てみたよ。
48 :
デフォルトの名無しさん :2009/12/12(土) 01:25:43
デリゲートってなんですか?><
ここじゃ説明しきれない。 Action action =new Action(hoge);のように書くから クラスみたいなんだけど action("死ねよクズ"); みたいに関数のように使えるもの でぐぐれ
ゲータレード
AというクラスとBというクラスがあって、それぞれObjectを継承している。 そのとき Object o = true ? new A() : new B(); これがAとBの間に暗黙的な変換がありません とか言うエラーがでるんだけどなんでこれAとBで変換存在しなきゃいかんの?
どっちでもいいのでobjectにキャストが必要。 3項式の値が何になるかにoの型は影響しない。 Object o = true ? (object) new A() : new B();
キャストがB側にひとつ足りなくないか?
なんとなくわかった。 C#の?はC++の?とは性質が違うみたいだな・・・ C++では51みたいな書き方でもOKなんだが。C#はうるさいやつだなぁ。
三項演算子なんて使う必要ないだろ
C++でも同じようにしないと警告が出たよ。MSVC++2008だけど class S {}; class A : public S{}; class B : public S{}; void test(int i) { S *s = i > 0 ? (S*)new A() : new B(); }
それ推論的にはとてもめんどくさい議論が発生するんだよなー 逆順の推論なので。
昨晩C#で書いたプログラム(低負荷)を動かしながらDVDを焼いたら バッファーアンダーランが数回出ていた\(^o^)/ C++で書いたプログラムだと出ないのにC#のライブラリ関数はあちこちで ロックしているんだろうか?
ロックって何? 矢沢とか内田とかみたいな恥ずかしい勘違いオヤジのことかなw
デリゲートな部分のかゆみ
何をロックするんだよ。 ってかどういうプログラムなんだよ。
>>54 まあ、C# は人的ミスを減らせるなら多少コードが冗長になる方を選んでるんで。
そうか? ラムダ式なんかかなり柔軟に型推論してくれるじゃん
匿名メソッド、ラムダ式 オプション引数etc どうみても冗長性の排除が優先だな
KeyPressってなんのためにあるの? KeyPress=Escキーとか認識できない KeyDown=Escキーなども認識できる
文字入力 IMEオンで入力したら楽しいよ
C#のwebbrowserコンポーネントでsleipnirにおける SuperDrag Extensionのようなドラッグ&ドロップ処理を 実装したいと考えています。検索しても実装は厳しいという話しか ありません。(というか扱っているサイトの数も少ない?) どうかお力添え願えませんか?
SuperDrag Extension ってそもそもなんだよ?
フェンリル広告乙
WinAPIで登録したホットキーを経由して、別ウィンドウがアクティブでも 音楽再生アプリでのplay/stopをしたいと思ったのですが、 nProtectGameGuardのオンラインゲーム上では登録したホットキー使用が不可能でした。 不正行為防止用にそうなっているのは予想が付いたのですが、 これをすり抜けるようなホットキー登録方法はありませんか?
自己解決しました
別スレで答えもらっておいて自己解決もないもんだ
C#2.0 ジェネリック&partial C#3.0 ラムダ式,LINQ C#4.0 dynamic
1.1 /** */ 形式のドキュメントコメント 2.0 匿名delegate、staticクラス、yield 3.0 var 4.0 Genericsのco/contra-variance
VB10 行継続文字 "_" がいらなくなったよ!(条件あり)
4.0はいまいち魅力がないな 2.0と3.0が凄すぎた
言語の進歩はいまいちかもしれないが フレームワーク側の進歩が2.0の時以上な気がする
>>74 /** */ に対応したのは 1.1 ではなく 1.2 だよ
.NET 4はライブラリの方よね、主な変更。 3.0 のときと同じ感覚。C# 4.0はおまけ。
正直LINQの意義がわからんorz
3行かかってたデータ処理が1行ですむ こんだけ。
>>80 コレクション操作がらみをライブラリ化しようとすると行きつく先は LINQ。
クエリ式(C# 中に SQL っぽいもの書ける構文)を LINQ だと思ってるならそれは勘違い。
あれは LINQ の一部分。
LINQの記法が特殊だからな。 実は追加された拡張メソッド部分が本体だよな。
メソッド構文でしかLinq使った事ない
リモート処理のセキュリティについて質問させてください。 IPCチャネルを使って同じコンピュータ上でサーバーとクライアントを動かしたいのですが、 それぞれの通信相手が正規のプログラムであることを認証するには どのような方法を取ればいいのでしょうか。 悪意のあるプログラムが通信相手に成り済ますのを防ぎたいと考えてます。
厳密には不可能。 カジュアルななりすましを防ぎたいなら、何らかの手順を挟めばいい。 それこそ、「山」「川」みたいな。
87 :
85 :2009/12/16(水) 13:28:51
>>86 なるほど。
大げさかもしれませんが、プログラムに対するデジタル署名を
使ってもできますか?
コードサイニング証明で確認できるのは、ファイルがある組織で作られた、 ということ。なので、そのファイルを確認できる状態じゃないとダメ。 なので、通信先を証明するのにはちょっと厳しいでしょ。
89 :
85 :2009/12/16(水) 13:42:28
>>88 サーバーとクライアントプログラムは同じコンピュータ上に
存在することを前提にしているのでファイルの確認は可能だと思います。
であれば大丈夫だね。 IPCってのを忘れてた。ごめんごめん。
91 :
85 :2009/12/16(水) 13:46:22
>>90 いえいえ。
とりあえず
>>86 のように何らかの手順で作ってみることにします。
ありがとうございました。
通信系路上の改ざんがないという前提ならいろいろできそうな気がする。
ゼロ知識証明、だっけ? チャレンジレスポンスでやったらいいんじゃない? 基本的な手順は、 あらかじめ、秘密の文字列 k を決めておき、クライアントとサーバはそれを 知っている。外には漏らさない。 通信を開始する時に、ランダムでトークン文字列 s を決め、それを渡す。 s をもらったら k と連結しハッシュ関数にかけた値 h(k + s) を返す。 返ってきた値が、自分で計算した h(k + s) と同じかどうかを確認する。 同じなら相手は k を知ってるので正しい相手と認める。 詳しくは暗号の本を。 ていうかこういうのは正しく実装するのは難しいので。ライブラリ無いのかな?
あーこれだとリプレイ攻撃を防げないか。 まぁとにかくそんな感じの方法。
>>85 一般的な結論は
>>86 なんだが、限定状況下では有効な対処が可能な場合もある
ユーザーがプログラム(バイナリ)の読み取りや通信路への細工ができないよう厳重に管理されていれば、
実用的なレベルでの対処は可能
それ以外の状況なら何をしても程度問題(しかも分が悪い)でしかない
>>93 それはホストやユーザーの認証の場合で、今回のクライアント(プログラム)が正規のものかを
判定する用途には使えない
そもそも秘密の文字列を組み込むってこと自体に無理があるからね。
>>64 ラムダ式が先に実装されていれば匿名メソッドはいらなかったとMSが言っていたはずよ
つまり、delegate{〜}はobsolute扱いで。
匿名デリゲートは引数自体を省略できる ラムダ式は() => って絶対つけないとダメだからちょっとかっこ悪い。
だがそれがいい
その代わり引数の型は省略できない
delegate { なんかいかにもキーワード増やしたくなくて無理矢理当てた 感じで格好悪い 後で捨てることを前提に作られたように見える
なんで?
103 :
デフォルトの名無しさん :2009/12/17(木) 13:29:55
C#でMarchingCubeアルゴリズムを実装したいのですが、やり方がわかりません。 関連サイトなどもC++やGLを使っているのでどうしたらいいかわかりません。 どなたか教えてくれませんか?
C++やGL使ってるっつったってそっからC#に翻訳すればいいだけだと思うんだが・・・
105 :
デフォルトの名無しさん :2009/12/17(木) 14:09:26
自力でやるんだよ、ばか。
>>105 そんなレベルでなんでC#に移植する必要があるんだよ
同意 C++での実装コードが理解できないなら,このスレの誰かがC#で書いてくれたとしても理解できるとは思えない
死んだのに仕事してるとか俺には信じられん
誤爆すまん
死んだような顔して仕事してるやつはこの業界では珍しくないよな・・・ うぅ・・・
112 :
デフォルトの名無しさん :2009/12/18(金) 02:38:37
WaitHandle の WaitAll や WaitAny で待ち合わせをするのですが 散乱すると面倒くさいので WaitAll/WaitAny 相当の待ちのシグナルが発生するWaitHandleを作ろうかと思っているのでずか これってライブラリにそもそもなかったりしませんでしょうか? 探しているのですが、誰か知っていたら教えてください
113 :
デフォルトの名無しさん :2009/12/18(金) 04:10:16
矢沢 久雄著 標準C#入門 の無印と改訂第2版って何が変わったんですか?
C++の #using <System.Windows.Forms.dll> はC#の参照設定→System(略) とまったく同じ機能ですか?
>>114 同じ。
ちなみに、C++/CLIでもC#同様VSのプロジェクトのプロパティから設定することも可能。
そうなんだ。 dllの管理は直接コードに書き込めるC++/CLIのほうが便利だな C#もコードに書き込めればいいのにな。
MSBuild使え プロジェクト構成によって参照するdllを変えたりできる
フリーで3Dチャートが簡単に描画出来るClassってないですか?
Microsoft Chart Controls for Microsoft .NET Framework 3.5
>>119 ざっと調べたんですがこれはwinアプリケーションでは作成できないのですかね?
> Microsoft Chart Controls for Microsoft .NET Framework 3.5 は、 > ASP.NET および Windows Forms Chart Controls を含む新しいアセンブリをインストールします。
なんて名前なのかわからないんだけど、Mac OS X のDockとか、iPodのカバーフローみたく マウスカーソルの付近の画像が拡大されて表示されるコントロールとかってない? やりたいこと 画像を横に並べて表示したいんだけど、視認性が確保できる画像サイズだとあまり多くの画像が一度に表示できないのをなんとかしたい。
意味がわからん・・・アクセサリの拡大鏡? ペイントの縮小ウィンドウみたいなやつなら自作するしか無いだろう。 単にビットマップをDrawImageするだけだし、そんな簡単なものコントロール化 する奴は物好きと思われる。
>>124 何か勘違いしてるだろ。
別にコントロールがあったとしてもおかしくはない。
ただし、WPFだったらほんと簡単にできたはず。
ってかよく見るだろ。
WindowsFormsではあまり向かないというか汎用化はしにくい。
>>125 mjd 実現できればなんでもいいわ
WPFって聞いたことしかないからちょっと調べてみるよ!
WPFならC#のコードは書かずに実現できるな
>>125 さーせんなんか良い検索ワード教えてください…
みんな普通にWPFとC#組み合わせての開発とかできてんのかね?難しゲーだ
131 :
デフォルトの名無しさん :2009/12/19(土) 12:13:42
C#で作ったライブラリDLLを動的に読み込んで このDLLで発生するイベントを拾う方法教えてください DLLで定義されているメソッドを実行するところまでは出来たのですが イベントを動的に関連付ける方法がわかりません
>>130 あなたが神か
Codeplexで探せばよかったのかー ありがとー
>>131 やったことは無いけど、eventのアクセサの
add_EventName(Delegate) などを使うのではないかな。
.NET 4/C# 4.0 待って MEF 使うとか、dynamic 使うとか。
C#やVB以外ではadd_xxx以外の名前が付くこともあるので Type::GetEvent EventInfo::GetAddMethod の順で取得したほうが良い。
急にもりあがってきた
インスタンスメンバを表すのに::はあんまり使わないだろ
EventInfoから直にハンドラ追加できるだろ
139 :
131 :2009/12/19(土) 21:57:14
>133 >135 >138 ありがとうございます。 EventInfoのAddHandler辺りを上手いこと使えば 出来そうな予感はしているのですが いまいちよくわかりません。 MethodInfoも有り、ますます混乱してます。
プラグインみたいなことをしたいならinterface用のDLLを 準備しておくのがセオリーだな。 インターフェイスにキャストしたあとは普通に使えるので便利。
// csc /o /t:library test1a.cs using System; public class Foo { public event EventHandler Do; public void Fire() { EventHandler eh = Do; if (eh != null) eh(this, EventArgs.Empty); } }
// csc /o test1.cs using System; using System.Reflection; public class Program { static void Main() { Type fooType = Assembly.LoadFrom("test1a.dll").GetType("Foo"); object foo = Activator.CreateInstance(fooType); EventInfo einfo = fooType.GetEvent("Do"); MethodInfo minfo = fooType.GetMethod("Fire"); einfo.AddEventHandler(foo, new EventHandler(MyHandler)); minfo.Invoke(foo, null); } static void MyHandler(object sender, EventArgs e) { Console.WriteLine("WTF !"); } }
143 :
デフォルトの名無しさん :2009/12/20(日) 10:31:03
質問です。 C#で、基本文法を学習した後に読む本、 例えばCのプログラミング作法、C++のEffectiveC#やCording Standards、に該当するような コーディングのスタイルスタンダードや、べからず集、などで勉強になる良書でお勧めがあったら教えてください。 よろしくお願いしますm(_ _)m
すいません3行目は C++のEffectiveC++の間違いです
本ばかり読んでないでMikuMikuDanceを作れ
>>143 Effective C#は 最近翻訳版が出たんじゃなかったかな?
中まだ見てないけど。
シーシャプー
>>141 ,142
デリゲートもDLLで定義されている場合はもう少しめんどくさくなる。
-- test1a.cs
:
public delegate void FooHandler(object sender, EventArgs e);
public class Foo {
:
-- test1.cs
Type fooType = asm.GetType("Foo");
Type fooHandlerType = asm.GetType("FooHandler");
object foo = Activator.CreateInstance(fooType);
Delegate fooHandler = Delegate.CreateDelegate(fooHandlerType, typeof(Program), "MyHandler");
EventInfo einfo = fooType.GetEvent("Do");
MethodInfo minfo = fooType.GetMethod("Fire");
einfo.AddEventHandler(foo, fooHandler);
minfo.Invoke(foo, null);
MyHandlerがインスタンスメソッドの場合はthisが必要になる。
Delegate fooHandler = Delegate.CreateDelegate(fooHandlerType, typeof(Program), this, "MyHandler");
>>146 出たな
なぜかMore〜の方が先に出たw
なんで翻訳のほうが原書より安いんだ?
結局原書を読むはめになるから
MSの機械翻訳は暗号化
153 :
デフォルトの名無しさん :2009/12/22(火) 11:19:34
ムズカシス
ムズクロスグリ
ある何が
すべて中国の陰謀
ぐりクロスぐら
158 :
131 :2009/12/22(火) 22:46:10
>140 それは意味無いですね >141 >142 >148 皆様ありがとうございます。 試して後日結果を書きますね。
159 :
デフォルトの名無しさん :2009/12/23(水) 18:01:19
飯だ うっほうっほ!
160 :
デフォルトの名無しさん :2009/12/24(木) 00:11:45
プログラマーとしてC♯の仕事に就くには、 デリゲートや オーナードローや オーバーライドの意味は絶対に知っておかなきゃ話にならないですか?
言語仕様なんか全部完全に理解して人に説明できるくらいで当たり前 それではじめてスタートライン
時や場所をわきまえるのが第一歩だな つ マ板
んなわけない そんな奴がいたとしたら年収数千万クラスだわ 本もたくさん書いてることだろう 国内の本みれば国内のエンジニアのレベルがわかるでしょ
C#の言語仕様って.Netの関数も入らないとどうしようもないわけだから… 絶対無理だね
言語の勉強しない奴って何なんだろう もうほんのちょっとだけ勉強すれば世界がかわるのに
effectiveC#のデータバインドの項が良く解らないんです。つか使ったこと無いんです。 もうすこしサンプル読んで見たいのですが、お勧めのサンプルコードありませんか?
167 :
デフォルトの名無しさん :2009/12/24(木) 01:11:50
デリゲートとか、プロのうちの父ちゃんに聞いても知らなかったぞ。 ちなみに父ちゃんは、コボラーから独学でCを身に付けて開業し、今は月収100万くらい。
畑違い
C++には継承と似たものに デリゲーション(委譲)ってのがあるが それも知らないんだろうか。 まぁオブジェクト指向なんてすでに関数型使いこなせるヒトには大して重要じゃないし。
>>167 Cプログラマなら、関数ポインタの使い方を知っていれば、デリゲートの概念は知ってるのでOK。
デリゲートの使い道がわかりません。
デリゲートと関数ポインタは機能として似た部分あるが概念はまったく違うものなのでおkではない
>>175 そっか? Cの関数ポインタ型の抽象化といっていいんじゃないか。実装は、全然違うけど。
どっちかというと,デザインパターンで多用されるような メソッドを無理やりオブジェクトのように扱うための手法を 言語に取り込んで関数ポインタっぽくしたものだな
関数ポインタ + thisがデリゲートという思ってれば問題ない。 一度C++でクラスメンバーへの関数ポインタを扱ってみるといい。 めんどくせーから。
日本にプログラマとして数千万もらってる人いるのかなぁ
プログラマー板へ行けよ
ラムダ士気のおかげでデリゲートじゃなきゃやってられなくなった
182 :
デフォルトの名無しさん :2009/12/24(木) 20:26:26
リフレクションでプラグインのDLLをロードします。 そのときプラグインのメソッドは制限ゾーンで動かしたいと思っています。 そのときに、これ [PermissionSet(SecurityAction.PermitOnly, Name = "Nothing")] public void func() { ... と同等の状態で動かしたいのですが、 MethodInfo.Invokeで呼び出す前に制限状態にするとInvokeに失敗してしまいます。 プラグイン側は第3者が作るので属性をつけることを強制できません。 なにか良い方法はないでしょうか。
NothingなAppDomainを作って、そいつの中へDLLをロードすれば?
らむだとでりげーどってなあに??
そもそもなんでMethodInfo.Invokeで呼び出す必要があるんだ? インターフェイスか基底クラスにしといて、そこで定義したメソッドを SecurityAction.PermitOnly状態から呼び出したらいけるんでないの?
Dispose("俺");
Dispose("このスレ");
"俺".Dispose(); "このスレ".Dispose();
俺にとっては using このスレ;
191 :
デフォルトの名無しさん :2009/12/25(金) 11:10:51
USBカメラと接続して静止画を撮りたいです。 DShowNETというのがあるようですが、VistaやWin7にも対応したいです。 どんな方法があるでしょうか。
191.Dispose();
193 :
デフォルトの名無しさん :2009/12/25(金) 11:47:24
>>178 それやったことあるけど面倒だったわw。
確かに面倒だったね。
195 :
デフォルトの名無しさん :2009/12/25(金) 12:44:46
OpenCV
DirectX使えば? AudioVideoだっけ?ちょっと忘れたが・・・
例外出てたの4秒か
Silverlight4でWebカメラ使えるらしいけど
202 :
191 :2009/12/25(金) 14:33:58
VistaってDirectShowがDirectXが外れて DShowNetが使えないって聞いたんだけど ガセネタ?
それは勘違い。SDKでの話。
どちらにしろ ノーリアクションException だな
206 :
191 :2009/12/25(金) 15:54:43
>>202 そうなんだ。ありがとう。
誤:VistaってDirectShowがDirectXが外れて
誤:VistaってDirectShowがDirectXから外れて
もちつけ
やだやだやだー!
正解も書けよ
一次元配列をラップしてArrayのstaticメソッドをインスタンスメソッドとして 使えるジェネリッククラスを書いたら便利かな、とふと思ったんだけど、 これは馬鹿げた発想だろうか? それとも割とありふれた考え方? もし同じようなことをやってる人がいたら、参考までにどんなクラス名にしてるか 教えてくれるとありがたい。
ばかげた発想だろう どうしてもってんなら拡張メソッド書いとけ
>>210 どういうときに役にたつのかわからんちん
わざわざそれ使うためにそのクラスをインスタンス化するのか? 拡張メソッドで充分だろ。
>>210 同じようなことをやっている人: Microsoft
クラス名: Enumerable (名前空間: System.Linq)
ぷ
まさにその通り過ぎて吹いたw
その通りじゃないだろうよ。
発想自体は馬鹿げたものではないと思う。 ただ、車輪の再発明は馬鹿げている。
しかし他人の発明ってのは気軽には使えないんだよね。とくに業務用ソフトだといろいろとうるさく言われる。 だから自分で再発明するしかなくなる。
発明の再実装、再構築 発明の追体験 は意味があると思うんだけどな。 何でもかんでも車輪の再発明というのはどうかと思う。
再発明というのは表現が違う気がする 再構築とかの方がしっくりくる
いずれにしろ、この場合はあるものをつかうのが正解。
そこにある車輪が使いにくいなら、 使いやすいように一から作り直すのは悪いことではない。 別にそれは再発明ではなく、ただの理論の整理だし、 たまにはそれくらいしないとより良い物は作れない。 というか、あるものは必ず使えという考えしか持てないのは大問題。
あるものを組合せた方がはやいか 作りなおした方がはやいかなんてその時その時で結構違うよね。 んで往々にして後者を選んで自爆する人が多いから 車輪の再発明はやめておけって昔から言われてるんだろうと思うよ。 基本前者のスタンスでいてどうしても必要なら後者、がいいんだと思う。 ただ車輪の再開発って楽しいんだよねぇ。 俺の設計/実装の方が綺麗!!!俺のネーミングセンスいかしてる!!!0.01%速くなったぜ!!! みたいな。
使い方を調べたりドキュメント読むのが面倒だから 作っちまえって流れの車輪の再構築はダメなパターンだと思う。 あとマの習性としてどっか心の底で自分の方がうまくやれるって思ってる部分があるから 作り直したくなるんだろうなーとは思うなぁ。
過程なんか実際どうだっていいんだよ。 成果物が評価されるかどうかの話。
流れを読まずに書きこするが、計算結果をキャッシュして、依存するほかの部分の値が更新されていなかったらその計算結果を使い続けるということをしたいんだが、 そのときの更新した時点のTimeスタンプとして、System.Environment.TickCountをつかってもよろし?パフォーマンス的にとか言う意味で。 具体的にやりたいことは、UIElementTreeのようなものがあって、上の階層の座標やスケーリングが変更されたときはそれより下のものはパネル上の絶対座標が変わることになる。 各Elementは自分自身のパネル上での絶対座標を計算しておきキャッシュしておき上のものの座標などが変わらない限りそれを使い続けたい。 とりあえずその辺のアーキテクチャは置いといてタイムスタンプとしての使用に望ましい高速な経過時間に類するものがわかるものがしりたいです。
>>227 それ本当にパフォーマンスを考慮する必要があるの?
そういう風に聞こえない。ただの杞憂じゃないの?
端的に言ってその「タイムスタンプの取得」、n万回/secとかで行われるわけじゃないでしょ?
だったらどこにパフォーマンスを気にする必要があるの?
>>228 わかんないなら答えなくてもいいんだよ?
わかるから答えてるんでしょ。
涙拭けよ
さて、と
今日も一日ご苦労さまでした。
System.Environment.TickCountは多分最も高速。 もちろん精度は例によってデフォルト15msくらいだからそこが注意だな。 DateTime.NowやUtcNowは遅い。UtcNowは比較的速いが。精度はTickCountと同レベル Stopwatchはもっと遅い。ただし精度ははるかに高い。
236 :
デフォルトの名無しさん :2009/12/27(日) 00:39:17
WebBrowserでフォルダの中身を表示してExplorerのようにして使いたいと思い、 WebBrowserのActiveXInstanceプロパティを SHDocVw.ShellBrowserWindow でキャストして、その Document プロパティを ShellFolderView として使い、 VerbInvoked イベントなどで何かの実行をイベントとしてモニターすることを やってみました。 その際、VerbInvoked の戻り値を true にして返しているのですが、なぜか なんの実行もしてくれません(コンテキストメニューでCopyを選ぶとこの VerbInvoked イベントは立つのですが「貼り付け」のメニュー項目が現れて くれません)。何か注意すべきことがあるでしょうか? それと、VerbInvoked によって、コンテキストメニュー上の何の処理を実行 しようとしたのかを知る方法はあるでしょうか?これも知りたいのですが、 方法がわかりません。よろしくお願いします。
237 :
デフォルトの名無しさん :2009/12/27(日) 12:11:24
C#でPCのマスタ音量を変える(ボリュームコントロール)機能を実現したいのですが、 いい方法やクラスをお知りの方がいましたら、ご教授おねがいします。
マルチすんなよ
んなこといったって初心者用スレはごく一部の上級者とほぼ全員初心者しかいないから、たまにしかまともな回答えられないし 両方で相談するしかないじゃん。
だったらあっちじゃなくてこっちだけで相談すりゃいいでしょ。 「じゃん」じゃねーよ。
だったら2chで質問するなよ
回答する気ないならレスすんな。うぜぇから。おめぇらは「初心者バーカ」とだけいってりゃいいんだよ。
マルチするようなカスには分かってても回答しないのが常識だからな
初心者スレの初心者でもお前より初心者ではないと思うなw
246 :
227 :2009/12/27(日) 12:56:39
>234 サンタさん、ありがとう。 今回は精度はそれほど重要でないので高速であれば十分です。 もしかしたら、速度も精度もPerformanceCounterからみのほうがよいのかもしれませんが、あのへんはよくわかってないです・・・
247 :
デフォルトの名無しさん :2009/12/27(日) 12:58:51
どなたか
>>236 にもお恵み下さるとありがたく、何卒よろしく。
VerbInvoked を検知してしまうと何も実行しない、というのは
一体何が原因なのか知りたく、みなさんのところではこういうことは
ないですか?
>>246 パフォーマンスカウンタはStopwatchと同じだよ。
一番遅い。
遅いならSindows.Forms.Timerなんて廃止すればいいのに。 もっといいのあるんだろ
>>246 っていうか、だからそんなワーストケースでもせいぜい数秒に一回程度しか
実行されないような処理のパフォーマンスを気にして意味あるのかよ
ついでに言えば、タイマーは精度に比例してタイマーそのものがCPU時間を消費する、 っていうのはら話も分かるけど、普通に考えてタイマーがカウントしてるカウンターの 値を読み取ることそれ自体はただの同期読み取りに過ぎないわけで、 こんなものがそんなに重い処理になる道理がないだろうよ。
一番楽な方法で書いてから最後にチューニングしませう
WebBrowserはなにげに機能制限されてるからなぁ。 Axの方を使ってみたら?
254 :
236 :2009/12/27(日) 13:37:41
>>253 WebBrowserなためかもしれないと。わかりました。
>Axの方を使ってみたら?
直接COMの方を使うと。わかりました。やってみます。
つーか、そうやって切り分けるもんだろ?普通。
はい
無能な玄人が有能な素人を恫喝してみました。
つまらんな ところでなんでQueryPerformanceCounterはあんな遅いの?
読み出すだけに決まってるから遅いわけないなんていう奴はどう見ても素人。
どう見てもとか書いちゃう人に、具体的にどう見たのか尋ねると、
良くても一つしか挙げないし、大抵は発狂するんだよね。
>>262 どう見たの?
−−−−−−−−−− たにおり −−−−−−−−−−
266 :
227 :2009/12/27(日) 15:43:44
>248 ありです。 >250 ピーク時は一秒間に数百回コールされる可能性あるので。
値の取り方はわかってんだから実際に1000回取得して 掛かる時間とかCPU負荷とか調べてみりゃいいじゃん
>>266 最大限見積もっても1,000回/sec程度の頻度の読み出しでパフォーマンスを気にする
必要があるほど重い処理とは思えないけどね。
269 :
227 :2009/12/27(日) 16:05:51
>267 もともとはTickCountのほかに何かいい方法があるかという趣旨の質問です。 >268 1ミリせく違うだけでも一秒の違い生じますが。
1ms違えばそうだろうけど1μs違うだけなら誤差だろ?
>>269 msオーダーの時間が掛かるわけないでしょw
恐らく10nsかかんないよ。
10のマイナス6乗見積もる時間が間違ってる。
なにをしたいかわからないけど、こんなにたくさん呼ばれるということは、 順番だけが重要なんじゃないか?
>>271 10nsって面白い冗談だ。
メモリアクセスですら何倍もかかるというのに
まあTickCountは確か数十nsくらいだったと思うけどな。 QueryPerformanceCounterになるとマイクロ秒以上かかる。
でまあ元質問の話じゃ別に気にするような用途じゃなかろうが、 キャッシュとかを実装しようとすると気になる話ではあるよ。 TickCountは精度は悪いが速いってこと以外に 値が32ビットに収まるって利点と欠点がある。
キャッシュとかの実装だと、場合によっては数十nsオーダのパフォーマンスになることもあるからな、 マイクロ秒なんで膨大なオーバーヘッドだ。
ナノwwwwwwwwwセクwwwwwwwwwwww
当然「呼び出し一回あたりの平均処理時間」の話をしてるんだけど、 なんか通じてない奴が数人いるようなw
よくわからんが、毎回数字さえ変わればいいなら、 Interlocked..Incrementでカウントアップしたほうが早いんじゃないかな。
そんな奴はいない。 まあ平均ってのも曖昧な値だけどな。
用途がカウントアップで合ってるのかって話は置いといて、 なんでインタロックなんだよ。 元の話は明らかにスレッドセーフではない前提なのに。 大体インタロック使ったらTickCountより遅くなるかも知れんぞ。
勘違いしてると思う書き込みを示せば? 時間を書いてるのは明らかに平均だよな、平均でしか測定不能だし。 10nsへの突っ込みに噛みついてるのかな? 特に元の話でなら呼び出し頻度は低い前提だから、 どっちにしてもメモリアクセスより速い訳がないな。
>>278 どれが早いと言う話は方がついている。それで遅いならお前の実装が悪い。
サイズの大きいメモリストリーム、例えば数十MB以上とかを、 ひょっとするとたくさん同時使う可能性もあるとき、 組み込みのメモリストリームだとエラーになるリスクが大きい。 断片化を避けるために例えばチャンクわけして小さめの配列のコレクションを持つメモリストリームを作ったりとか いろいろ考えるんだが、他にいい方法はあるだろうか? サイズが一定のしきい値をこえたら、テンポラリ指定の実質オンメモリファイルを作成するのはどうかなと考えたんだけど、どう思う?
実質オンメモリファイルだと、ストリームをプロセス外にうまく追い出せる気がするので、 パフォーマンスオーバーヘッドは大きいとしてもメモリ的にはかなり上限を増やせる気がするんだ。 64ビットOSならそんなことあまり気にしなくてもいいんだろうけど。
>>281 Interlock系はCASなんじゃないの?確認はしてないけど。
メモリ(CPU)使用率を一定に抑えたり、逆に出来る限り沢山使ったりということはできますか? 計算処理がとても重くPCがすごく重くなってしまいます 一瞬で答えが欲しいタイプのものではないので バックグラウンドでまわしっぱなしで放置する といった使い方をしたいのですが
ぷらいおりてぃ
Process.PriorityClassね
場合によってはThread.Priorityも。
>メモリ(CPU)使用率を一定に抑えたり、 >Process.PriorityClassね 何の効果もないわな。
プライオリティそんなに大事か?
>>286 何が言いたいのか分からんが、CASだからなんなんだ?
そもそも(最初の話での用途的には)CASの必要がないだろって話だろ?
優先度ってのはCPUのタイムスライスをどのスレッドに割り当てるかの優先度なんだよ? だからCPUがアイドルなら優先度が低かろうがCPUは実質100%割り当てられる。 まあ最近のCPUはそもそもマルチコアが普通だから、結局25とか50になるけど。
例えば後ろで動画をエンコーディングしつつ動画見るってシチュエーションで 動画再生がスムーズに行かないって時にプライオリティ設定は覿面 メモリを制約するのは知らないなぁ
>>291 > 一瞬で答えが欲しいタイプのものではないので
> バックグラウンドでまわしっぱなしで放置する
> といった使い方をしたいのですが
ちゃんとここも読もうね
質問者が何を求めてるかちゃーんと理解しないとだめだよ!エヘ!
そりゃそうだけど、優先度を落とすのは「PCがすごく重くなってしまいます」への解決にはなるでしょ。
で、結局どうすればいいんだよ?
>>293 最初の話は
>>227 だろどう読んだら
>元の話は明らかにスレッドセーフではない前提なのに。
なんだ?
>大体インタロック使ったらTickCountより遅くなるかも知れんぞ。
CASなら競合が無い限りAPI呼び出すより速いだろ。
タイムスタンプの変わりに世代をあらわす整数で十分という前提なら、
この方はどうかということを言ってるのだが。
一億回実行 Interlocked.Increment:00:00:01.3034899 Environment.TickCount:00:00:00.3905401
もちろん1スレッドで競合なし。 ま連チャン呼び出しなので、TickCountは実質キャッシュ読み取りだな、APIはコールしてても。
気持ち悪いな。 IT土方ってパチンカスみたいに頭やられてる奴しかいないのかね。
ただし調査環境は2コアプロセッサ。 Interlockedはシングルなら多分もっと速いだろうが、そんな前提はあまりよろしくはないな。
すごいな、3倍以上も。 圧倒的な差じゃないか
} が必要です。
ついでだ。 こっちは遅いので1000万回で。 DateTime.Now:00:00:02.2796051 DateTime.UtcNow:00:00:00.1485831 Stopwatch.GetTimestamp:00:00:06.9976666 ※Stopwatch.GetTimestampはつまりQueryPerformanceCounterね
TickCountとかQueryPerformanceCounterとかCASとか 結局は議論より実測してみるのが一番だな。
誰だよ10nsなんてありえねえって言ったのは。
こんなに差がでるのか Interlocked厨涙目wwwwwwwwwwwwwwwwwww
UtcNowとNowも、ちりつもだと差が開くもんだな
1秒に1000回やったとしても 体感上全く差が無いレベルだけどな
1回あたり約 Interlocked.Increment:13ns Environment.TickCount:4ns DateTime.Now:228ns DateTime.UtcNow:15ns Stopwatch.GetTimestamp:700ns てところか。
>誰だよ10nsなんてありえねえって言ったのは。 ハードウエアから読み取るタイミングおよびキャッシュされてない前提での話だったじゃん。 この調査はほぼキャッシュ読み取りなんだから速いのは当たり前。
気持ち悪いな
>>314 キャッシュってのが何のことを言ってるのかわからないけど、
Environment.TickCountの値はシステムで一つだから、もともとその処理には
HWからの読み取りなんて入ってないと想像する。
っていうか、PCのアーキテクチャ詳しいわけじゃないけど、
もともと高精度のHWタイマは必ずしも持ってないんじゃないの?
持ってるのなら巷間いわれてるような「計測精度を上げるとPCへの負荷が変わる」
なんて現象は起こらないはず。
もしそんなことが本当に怒るとすれば、それはタイマ割り込みでSWでタイマを
実装してるからだろう。
本当に怒っちゃうぞ
タイマは持ってて、システムの領域にセットされるタイミングが違うとかじゃない? いや俺も知らないんだけどね。
あーでもそんな頻繁にセットしてるってのも考えにくいのかな?よう分からん。
そこらへんなんかもう実行環境依存だったりするんじゃないの?
どういう意味の高精度かは分からんが、x86ならクロック毎でカウントするタイマーがある。
>>323 だから、持ってるとしてそれをシステムが使ってるのなら、
アプリレベルではないのと一緒でしょ。
x86のrdtscかな。 z80だったかDRAMのリフレッシュ用のレジスターがあって ゲームの乱数に使っていた遠い記憶が・・・(笑
#region はらたいらも真っ青 #endregion
しょうもねー議論だわ
static Stopwatch() { bool succeeded = SafeNativeMethods.QueryPerformanceFrequency(out Frequency); if(!succeeded) { IsHighResolution = false; Frequency = TicksPerSecond; tickFrequency = 1; } else { IsHighResolution = true; tickFrequency = TicksPerSecond; tickFrequency /= Frequency; } } public void Start() { if(!isRunning) { startTimeStamp = GetTimestamp(); isRunning = true; } } public static long GetTimestamp() { if(IsHighResolution) { long timestamp = 0; SafeNativeMethods.QueryPerformanceCounter(out timestamp); return timestamp; } else { return DateTime.UtcNow.Ticks; } }
(・∀・)
>Environment.TickCount:00:00:00.3905401 TickCountは単位としては1/1000秒、精度的には1/100秒程度だろ。 この例では1億回の実行中に39種類しかtickを返してないわけだ。 ちとずるいな。
ずるいとかそういう問題なのか?
そういう問題だ。ケチ付けんな。
ケチじゃなくて疑問でしょ。 突っ込まれたら答えられない程度の理解の人が 急いで先回りで釘刺すみたいな反応しなくても。
- - - - - - - やまおり - - - - - - -
タイムスタンプの呼び出しを気にするような 微細なキャッシュ処理をしてるのに、 タイムスタンプが荒すぎるんじゃないのかと。
227をどう読んでも、その後の227の話をどう読んでも そんなに粗いとは思わないがな。
それは、はじめから分かっていたこと。 たぶんロジックを考え直せばシリアルをつけていけばすむ。
ハナから精度の問題じゃねえじゃん。 だから「そういう問題なのか?」って言ったのに。 死ね土方。
…
2chには同族嫌悪というか、ニートとかドカタとか同じ境遇の人がののしりあう傾向があるな。
病んでるからね
それで少しでも救われるなら喜んでドカタと罵しられるさ。
もうすぐハッピーニューイヤーなんだから明るく行こうぜ。
お前ら明るく行こうぜ!!!!!!!!!!!
テキストデータベースの効率のいい検索方法ってどんな方法がありますか? Google検索とか膨大なデータベースの割に一瞬で検索できますよね? どういう仕組みなんでしょうか
>>350 Google検索に関しては
あらかじめ分類して結果をキャッシュしておく。
最新のデータを使わずキャッシュを使う。
正確さを求めない。
なので勘定系のDBでこういう手法はご法度。
全文検索はインデックスを先に作るってことで処理速度の短縮を測るのが多いような。 最近のDBはそういう全文検索機能まで付いてるのもあるんじゃなかったっけ?
(・∀・)ニューイヤー!
>>335 ずるいっちゃずるいんだけどさ、最初からそういう話で
今さらそこを突っ込まれても困る。
たとえばintとlongの計算どっちが速い? って疑問が出たとして計測したらintのが速かったとして そこで、intはビット数半分だろ?ちとずるいな って言われても困るんだ。
一緒だけどな。
一緒だね
ずっと一緒だよ ///
x64なら同じ、x86ならlongのが3倍ほど遅いという結果になった。
x64、x86と来たら次はx108になるのかな?
80186ですね。わかります。
話を戻すが、
>>227 はキャッシュの有効性を判別する値に使いたいんだから、
精度(precision)はどうでもいいけど分解能(resolution)はかなり重要
で、それぞれの(公称の)分解能は
Environment.TickCount: 500ms
DateTime.UtcNow: 10ms
Stopwatch.GetTimestamp: H/W性能に依存
>>266 によると「ピーク時は一秒間に数百回コールされる」とのこと
簡単のため500Hzとすると周期は2msで、あきらかに前2者は不十分
>Environment.TickCount: 500ms まあこれは実態に合ってない数値だけどな。 それはおいといて、更新を確実に確認したいなら素直にカウントにするべきだわな。
あれInterlocked厨大勝利の流れ?
なんでedだけ小文字なん
>>363 どうでもいいことに突っ込んで悪いけど、計測において「精度」と対比されるのは
「確度」じゃないの?
その分解能って精度とどう違うのよ?
というより、それって精度そのものじゃん。
いやまあ、たぶんLSBの大きさっていうか、
最小測定単位のことを言いたいんだろうってのは分かるけどね。
ただ、
>>363 に出てくる測定値の「誤差」ってのは、計測器そのものの
量子化誤差によるものというより、測定器を操作する側(つまりソフト)の
問題に起因する誤差だから、「分解能」ってのは概念的にしか意味を持たないよね。
ないない
>>365 いや、同一スレッドで(Interlocked使わずに)インクリメント&取得をする方がベター
どこの国のベターだよ
>>227 は下層のエレメントが多数合って、
不特定のスレッドから勝手に情報が書き換えられるイメージで、
上層の管理スレッドが下層のエレメントの様子を見て
変更があればそれに応じた処理をするのだと思うけど。
そうなると変更があったことを示すシーケンスを作る出すのが
同一スレッドというわけにはいかない。
そうは思えんが。 >上層の管理スレッドが下層のエレメントの様子を見て >変更があればそれに応じた処理をするのだと思うけど。 こんなことを別スレッドで監視する馬鹿はいない。
更新自体は複数スレッドからあったとしても、 こういうバージョンカウンタはスレッドセーフでなくてもよい場合もある。
[割り込み|シグナル|コールバック|イベントドリブン]が理解できないので〜〜〜 よくある話ではある。
そういう話なら、そもそもバージョン管理自体入らないんじゃね。 変更があったら即書き換える。
ウェブサーバーもシングルスレッドで大丈夫とか言っちゃう人かな。 できなくはないだろうけがしんどいのと違うかなぁ。 >ピーク時は一秒間に数百回コールされる可能性あるので。
0
実行中に時刻の修正が入ったら、どうなる?
DateTime系以外は影響なし
382 :
227 :2009/12/28(月) 08:06:38
朝起きたらすれが膨大に増えてて吹いた&さーせん。 基本的にユーザーの操作によって位置などが変えられる可能性があり、描画時に上の階層の更新時刻?をすべて舐めて更新されてたら絶対座標などの再計算を行うというものなので 後からの呼び出しが同時刻もしくはそれ以降であることが保障されるなら精度は数百ミリセクでも足ります。 計算してくれた人ありです。その時間なら問題なかです。 そもそもの更新時刻?みて再計算がやり方として正しいのかわからんですがとりあえず実装してみまふ。すくなくとも今の毎回上から全計算しながら下るよりは速いと願いたいw
そろそろ誰か3行でたのむ。 とちゅうでついていけなくなった。
>>382 それって、ただのカウンタでいいってことじゃない。
場合によってはフラグでも・・・
ハッシュとか
>>377 誰に言ってるのか何が言いたいのか分からん
たとえ更新が複数スレッドでも、その用途ならvolatile変数程度で普通にインクリメントで十分。 最もその前に更新自体が複数スレッドから正常に行えるか確認いるけどな。
volatileのincrementは安全なのか?
絶対座標取得時は親の座標取得して加算てのと余り変わらん気がするが。 キャッシュするなら、全キャッシュの一発無効化が出来るプラグや更新バージョンを使わんと、 結局全親のトラバースが必要なので大して効果ないと思う。 何せ計算自体の負荷が小さいだろうから。 計算が結構重いなら効果あるだろうけど。
volatileではもちろんインクリメントはスレッドセーフじゃない。 でも、キャッシュの無効化のための更新バージョンなんてのは、それでも実質的にうまく動く。 考えて見たら分かるよ。 更新が競合しない場合→当然問題なし 更新が競合する場合→結果として必ず誰かが1回は更新することになるので問題なし
後はビットフラグなんかで上手く工夫すれば、子孫だけキャッシュ無効化ってのもひょっとするとできるかもしれない。
>>391 ああそういうことね。ただ前提を創作しすぎるのはどうかと。
それだったらバージョンの更新は、
キャッシュを使ってる側がやれば十分でないかな。
とにかく、現状の考え方である、キャッシュの確認も実際の座標計算も同じだけトラバースが必要な設計では、 計算自体がそこそこ重くないとあまり効果は期待できない。
うみねこのなく頃にのような展開で話が見えない
実際のとこ、ホントにそんな計算に時間かかってるの? 要素数はトータルでどのくらい? また現状のコードはどんなの? それから、絶対座標計算するのは描画などの特定タイミングで一斉にやるの? 一斉にやるなら、ルートから全要素をトラバースするやり方ならそんな無駄はない。 あるいはこれと全要素共通の更新バージョンとの組み合わせ。
それでも遅いなら特定子孫のみを無効化出来るようにビットフラグなんかで工夫、 ただしこれはうまくできるかは分からない、頭の中で設計出来てない。 出来たとしてもちょっと複雑になるから効果は落ちる可能性が高い。
産業
みなさん!自己解決しました!
みなって誰?
青江
流石の俺も「青江」は出ねぇわw
(  ̄ー ̄)ふーん…
(  ̄ー ̄) (  ̄ー ̄)(  ̄ー ̄) (  ̄ー ̄)(  ̄ー ̄)(  ̄ー ̄)
(  ̄ー ̄) (  ̄ー ̄)(  ̄ー ̄) (  ̄ー ̄)(  ̄ー ̄)(TーT)
使い捨て下っ端のITドカタを表現したAAですね
本物のドカタは定刻で帰れるがな。
がながな。
VC#2008で行番号が表示されないんですが。知ってる人いませんか?
ありますたorzスミマセン
単にあったかだけ書かずにどこにあったかも書いとけよ
かわりに書いておいてください では
死ねハゲ
悪性のタコだな
C#でDictionary型の連想配列のディープコピーをするには ループでコピーするしかないですか?
416 :
415 :2009/12/29(火) 18:05:18
自己解決しました
はいはい
こんなカスが常駐してるからID非表示の板は嫌なんだ おとなしくループでしこしこやってるわ
422 :
デフォルトの名無しさん :2009/12/29(火) 18:20:57
>>421 どうしても答え欲しいならトリップでもつけりゃいいじゃん
あほなの?
冬休みで基地外が居座ってる確率が急上昇中だな。
たいへんだな
まぁ、本当に自己解決したからいいわw ループコピーの関数作ったから。
UserControl継承してコントロール拵えてたんだけど パブリックプロパティ作ったらデザイナが勝手にnull入れようとしてくるのね。 そのプロパティはnull許容できないからArgumentNullException吐いてるのね。 それでも執拗にnull入れてくるのね。 たぶんこの辺を制御する属性があるはずなんで教えてください。
DefaultValueAttribute
よろしくおねがいします
こちらこそよろしくおねがいします
こんごともよろしく
>>426 デザイナは勝手にnull入れようとなんてしないし、
DefaultValueAttributeは単にプロパティグリッドのコンテクストメニューが
表示されるときに「リセット」項目を有効にするかどうかの判定に使われるだけ。
なんか勘違いしてると思う。
しないし〜と言わても、コントロール更新する度に Form.InitializeCompornent の中で毎度毎度 MyControl.NullNotablePropaty=null を自動生成されるのでどうしたらいいのやら 結局メソッドにしたからいいんだけど
再現するので一応手順を書きます。 普通にFormアプリケーションのプロジェクトを新規作成します。 追加でUserControlを選択し、TestUserControlを作成します。 TestUserControlに以下のコードを記入します。 private object nullNotablePropaty = null; public object NullNotablePropaty { get { return this.nullNotablePropaty; } set { if (value == null) { throw new ArgumentNullException("value"); } this.NullNotablePropaty = value; } } 一度ビルドします。 Formに戻ってTestUserControlを貼り付けます。 もう一度ビルドすると //警告 値を Null にすることはできません。 //パラメータ名: value と吐いてデザイナが停止します。 これ標準的な動作なのですか?
>>433 それはUserControlのコードで適切なタイミング(普通はコンストラクタで
いいと思うけど)でプロパティを初期化してないから。
あるいは逆に、UserControlが何かのイベントハンドラでプロパティ(またはその
バックストアフィールドに)nullを入れちゃってるか。
いずれにせよ、デザイナがやってるのは、ただ設定されてるプロパティを永続化するための
コードを吐いてるだけ。
もちろんDefaultValueAttributeで適当な値を指定して、そのプロパティをデザイナで
指定すれば、
MyControl.NullNotablePropaty=null;
は作成されなくなるけど、根本的な問題解決になってない。
そもそもnull入れちゃダメなのにnullで初期化してる意味がわからない
別にString.Emptyでも何でもええですよ。 適当な値が思いつかなかったからここではNullになってるだけっす。 重箱がお好きですねぇ。
重箱は職業マの趣味だよw 程度低いよねw
(´・ω・`)
>>434 だから、とにかくプロパティを初期化するコードを書こうよ。
なぜそういう動作になるのかは、俺も完全には説明できないけど
落ち着いて考えれば大体の想像はつくと思う。
プロパティって初期化するか?
後ろのフィールドを初期化してDefaultValue属性で明示するのが正しい
んじゃおきまりの文句を 設 計 が 悪 い
UserControlにnullを許容しない参照型のプロパティを持つのが理解できない 設計が悪い
445 :
434 :2009/12/29(火) 23:20:31
自己解決しました
>>434 あと、一応言っておくけど単にIDEがそのプロパティを永続化するコードを吐くことを
抑止したいだけなら、DesignerSerializationVisibilityAttribute.Hiddenを付ければいい。
しかし、どう解決したかぐらい書けばいいのにな。 なんかさもしいよな
遊ばれてる人々
他人がネタで書いてるだけだってば。
ID無い板で冬休み そういうことだ
>>437 こんなあほ相手にするだけ無駄だったな。
初めまして。 現在COMのiTunes 1.12 Type Libraryを利用して、 iTunesで曲が再生される度にListViewに曲目を追加していくアプリを開発しています。 再生開始時にListViewに追加できるようにするため、一通りコードを書いたのですが 以下のコードがうまく動かずに頓挫しています。 具体的には、関数ShowSongInfoOnList()において リストを表示する手前でMessageBoxを出すと、曲目が表示されるのですが、 (ゆえに、曲目は正常に取れているはず) その次の行のAddする時にうまく行っていないようで、困っています。 Addさえうまく行けば…と思い、苦労しております。 解決法をご存知の方、どうかご教授ください。
namespace WindowsFormsApplication1 { public partial class Form1 : Form { // iTunes操作のためのインスタンス private iTunesApp iTunes; public Form1() { // 初期化 InitializeComponent(); // リスト形式で表示するためのコード listView1.FullRowSelect = true; listView1.GridLines = true; listView1.Sorting = SortOrder.Ascending; listView1.View = View.Details; listView1.HeaderStyle = ColumnHeaderStyle.Nonclickable; listView1.Columns.Add("楽曲名", 145, HorizontalAlignment.Left); listView1.Columns.Add("アーティスト", 145, HorizontalAlignment.Left); listView1.Columns.Add("アルバム", 100, HorizontalAlignment.Left); listView1.Columns.Add("再生日時", 200, HorizontalAlignment.Left); // インスタンス生成 iTunes = new iTunesAppClass();
// イベントハンドラ群 iTunes.OnPlayerPlayEvent += new _IiTunesEvents_OnPlayerPlayEventEventHandler(iTunesPlayEvent); iTunes.OnPlayerStopEvent += new _IiTunesEvents_OnPlayerStopEventEventHandler(iTunesStopEvent); iTunes.OnAboutToPromptUserToQuitEvent += new _IiTunesEvents_OnAboutToPromptUserToQuitEventEventHandler(iTunesQuitEvent); } // 再生開始イベント private void iTunesPlayEvent(Object iTrack) { ShowSongInfoOnList((IITTrack)iTrack); } // 再生終了イベント private void iTunesStopEvent(Object iTrack) { } // iTunes終了イベント private void iTunesQuitEvent() { this.Close(); } private void ShowSongInfoOnList(IITTrack itrack) { // 曲情報を格納 DateTime dt = DateTime.Now; // デバッグ用 MessageBox.Show(itrack.Name + itrack.Artist + itrack.Album + dt.ToString()); // リスト表示 this.listView1.Items.Add(new ListViewItem(new String[] { itrack.Name, itrack.Artist, itrack.Album, dt.ToString() })); } } }
457 :
454 :2009/12/31(木) 03:11:17
自己解決しました。スレ汚し失礼しました。
ある値を返す関数FUNCがあるとします。FUNCが返す値は、FUNC内で取得や生成がされるものではなく、他のコールバック関数CBがきた時点でCB内で取得できるものです。 この場合、FUNCによってCBで得られた値を返すにはどのような方法をとればいいのでしょうか。 CB内の処理で適当なフラグをONにして、FUNC内でそのフラグがONになるのをwhileループで待つというのは微妙な方法だと思います。 またThread.Sleepで処理を待つというのも、この場合FUNCの反応速度が1ms単位になってしまうので若干の妥協を強いられることになってしまいます。 この場合どのような手段が最適なのでしょうか。 ちなみにこの情報が役に立つかはわかりませんが、具体的にやりたいことはDirectShowでUSBカメラのキャプチャを行うことの複雑さをクラスによって隠蔽しようとしています。 DirectShowのISampleGrabberCB.BufferCBが上記のコールバック関数CBにあたり、クラスでキャプチャ画像を取得する関数が上記のFUNCに相当します。 よろしくお願いします。
FUNCだけでやりたい、ってことなら、ポーリングするしかない。 普通に考えれば、コールバックなりイベントなりを使うだろうけどね。
要約するとこう? | コールバック関数にキャプったデータが非同期で順次渡され、FUNCで現在のデータを取り出す | しかし、まだカメラの準備ができていなくてデータがないときはFUNCをブロックしたい いずれにしても、同期制御の基本的な部分が分らないんだろうな キーワード: イベントオブジェクト、EventWaitHandle
462 :
458 :2010/01/01(金) 17:19:47
すいません自己解決しました。
よかったね。死ね。
すみません自己解凍しました。
>>459-460 レスありがとうございます。極力クラスを利用するほうには簡単に見せたかったので、イベントやコールバックも控えていたんです。
EventWaitHandleなどについて調べてみたいと思います。
466 :
デフォルトの名無しさん :2010/01/03(日) 13:47:18
DataGridView を継承したクラス を作っているんですが、CellValuePushed イベント内で e.ColumnIndex の値が書き変わってしまいます。 関数内で this(あるいはキャストした sender).Rows[].Cells[].Value のように、cell.Value を実行したのが原因のようですが、これはしてはいけないことなんでしょうか?
467 :
466 :2010/01/03(日) 14:17:02
自己解決しました
468 :
466 :2010/01/03(日) 14:20:14
偽者が出たので再度カキコ DataGridView を継承したクラス を作っているんですが、CellValuePushed イベント内で e.ColumnIndex の値が書き変わってしまいます。 関数内で this(あるいはキャストした sender).Rows[].Cells[].Value のように、cell.Value を実行したのが原因のようですが、これはしてはいけないことなんでしょうか?
>>468 偽者なんてわかってるのに二重書き込みとかいちいちうざいよ。
>>469 チミ自身は「うざ」くないと思ってるの?w
こういう「俺様棚上げ君」って頭オカシイんじゃないのかねホント。
>>466 意味がわかんない。e.Value使えばいいんじゃね?
確かめたわけじゃないけど、Cellsのインデックスはカラム順じゃないキガス
それと467==469だな、うん。ゴミレスが根拠。470も同類ウザ
467だけど469ではないです。 あと466解決しました。
まったく同じこと書きなおす奴は読んでる人のことは全然考えてない
475 :
デフォルトの名無しさん :2010/01/03(日) 15:11:11
まぁマ板だし
いやム板でしょ
だから自己解決したときも答えを書けといってるのに
480 :
デフォルトの名無しさん :2010/01/03(日) 15:43:16
だからいちいちトリップつけろよめんどくさい
>>466 試してみた。
現象としては違うんだけど、デバッグ文とかで
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value
を参照すると、e.Valueが何故か消えるな・・・
String mes1 = "row:" + e.RowIndex + ", col:" + e.ColumnIndex + ", val:" + e.Value;
String mes2 = "row:" + e.RowIndex + ", col:" + e.ColumnIndex + ", val:" + dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
そもそも CellValuePushed の中じゃ dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value は
入力以前の値だから見ても意味がない。
やっぱり e.Value を使えばいい。変更前の値ならデータストアを見る。
あと、ColumnIndexは表示のカラムとは無関係だった。(カラムの順番を手で移動しても変わらない)
483 :
466 :2010/01/03(日) 17:31:14
>>471 >>481 >>482 レスありがとうございます。
Rows[].Cells[].Value で同行の他列を参照したいので、e.Value は使えないんです。
最初に e.ColumnIndex を保存しておくとかも考えたんですが、CellValuePushed 内で
他列を参照しない方がいいですね…
アドバイスどおり、おとなしく元データのほうを参照するようにします。
32bitOSで作ったC#アプリは 64bitOSでも使えますか?
動く
動くようにも作れる
動かないように作る方が難しいと思うけどw IntPtr使うところわざとint使ったりでもしなきゃ動くんじゃないのか
まあ普通に作れば動くわな。 アンマネージ使う場合くらい注意。
あとは32ビット版しかないCOMコンポーネントとか要注意だな。
今は直ってた気がするけど、 昔、LINQ to SQL 使うと64ビットで動かなかったことが。
LINQってなんですかぁ? Linkの派生版ですかぁ? ハイパーリンク出来るんですかぁ? よくわかりません><
>>491 和製英語で臨海空港のこと。
臨海空港 ⇒ りんくう ⇒ LINQ
一つお勉強になったね
つまんね
Properties.Settingsで、起動時にuser.configを読み込むタイミングで validateを差し込む方法はあるでしょうか? ユーザがuser.configを自分で無効な値に書き換えた場合などに、 キャンセルしてデフォルト値を読み込めるようにしたいのですが。
どうしても出来ない事があって、質問しようと今までやってきたことを書き連ねてたら、 突然ひらめいて解決できた。 ありがとう、本当にありがとう。
そういうもんだ。
文章書くことで頭が整理される
脳が活性化されるからね
文章というか可視化だな
そうそう、先輩や後輩に相談しようとして話してたら閃くことってたまにあるw やっぱ整理するって大事なのね
アウトプットしないと人間馬鹿になるっていうしな
502 :
デフォルトの名無しさん :2010/01/07(木) 14:06:00
ありすぎて笑う
仮死化
ドキュメントを残していれば誰かが引き継いでくれるのを期待することですね
先生、このロンゴロンゴ文字解読できません!
C#WindowsアプリからWEBブラウザを起動し、 WindowsFormに入力した値をブラウザ上に自動入力する プログラムを作っています。 通常のiFrame(インラインフレーム)等を使わないページであれば mshtmlを使用する事によりWindowsフォームに入力した値を ブラウザに設定する事が出来ているのですが、 指定したページ内部にiFrameを使用しているページの場合には どうしても自動で入力をする事が出来ません。 どうすれば指定したページ(URL)にiFrameが使用されている場合にも ページの特定項目にmshtmlを使用して自動入力をさせる事が出来るのでしょうか?
>>506 javascriptでのやり方と一緒です
iframeをDOMで取得して中のドキュメントを取得すれば
そこから先はiframeを使っていない場合と同じ
トップのドキュメントとフレームのドメインが異なるなら無理です
絶対不可能かというとそうでもないんだがセキュリティ上の制約です
Ctrl + Mを改行に割り当てられますか。 Mはアウトライン関連の2ストロークの最初の文字みたいだったんで、それらを削除してみたんだが。
509 :
508 :2010/01/08(金) 19:53:31
失礼、残ってた、アウトラインのCtrl + M関連全部削除したら、できました。ありがとうございます。
510 :
デフォルトの名無しさん :2010/01/09(土) 12:47:14
OrderdOyについてなのですが var seq = from item in container orderby item.Key1 , item.Key2 select item; この複数キーでソートするorderbyに直接対応する拡張メソッドが無いようなのですが これって、どうやって呼び出されているかご存じの方おられますか?
ThenBy
逆コンパイルしたらすぐわかるのに
514 :
デフォルトの名無しさん :2010/01/10(日) 03:20:21
ダイアログを、タスクトレイがどこに配置されていても、タスクトレイの直上(or 直下)に 開くようにコーディングしたいのですが、どうすればよいでしょうか。
515 :
506 :2010/01/10(日) 04:11:58
折角ご回答頂いたのにお返事が遅くなりまして申し訳ありません。
※規制されていました。
>>507 フレーム内の要素にアクセスしようと思い
次の様なコードを書いてみたのですが
次の「ERROR_POINT」と書いた部分でエラーが発生してしまいます。
一体何が原因なのでしょうか?
アクセスが拒否されました。(HRESULT からの例外: 0x80070005(E_ACCESSDENIED))
iCol = HTMLDoc.getElementsByTagName("iframe");
foreach (mshtml.IHTMLElement IhtmlIE in iCol)
{
if (IhtmlIE.getAttribute("id", 1) != null) // ERROR_POINT
{
sString = (string)IhtmlIE.getAttribute("id", 1);
if (sString == "inputBody_ifr")
{
}
}
また、mshtml を使用して自動でiframe内の要素に自動入力が
出来ない場合には、Windows APIを使用して画面内のiFrameの位置をクリックし
文字列を入力したいと思うのですが、
そもそもWindows APIを使用して画面内の特定座標をクリックし
そこに対して文字列を入力する事など可能なのでしょうか?
>>515 >一体何が原因なのでしょうか?
507でもいったけどトップのドキュメントとフレームのドメインが同じかどうか確認したかい?
それもせずに、ソース丸投げでデバッグしてくれはないだろ
>>516 それが不思議な事にそのサイトは、コードを見ても次の様になっていて
(SRCにJavaScriptになっています。)
ドメインが同じかどうかの確認をする事が出来ません。
しかも、ブラウザから見て入力を行うと(例えば"あいうえお")
iFrame内の<body>タグ内になぜか文字が入るのです。
(FireBugで要素を調査したと結果)
<body>あいうえお</body>
■iFrame内のコード
<iFrame src="Javascript:">
<html>
<head>
</head>
<body>
</body>
</html>
</IFrame>
そのサイトを教えてくれたら俺が作ってやるのに
>>518 実は会社から自分のブログへアクセスし
書き込みをする事が出来ない為、
これまで仕事中にこっそりブログのネタをテキストファイルに書込みを行い、
メールで自宅に送信し、そのネタをブログの本文に貼り付けていたのですが、
毎回それを手動でするのは面倒なので、自動で受信メールの内容を
ブログにログインし本文に貼り付けようとしているのですが、
iFrameのトラップがある事を知り断念している状況です。
結構難易度が高く私のスキルではどうもiFramewを使ってるところに
自動で入力をする事が出来ません。。。
お手数ですがもし可能でしたらlivedoorの本文に自動入力する方法をご伝授頂けると助かります。
520 :
519 :2010/01/10(日) 20:01:55
>>519 ですが、仕事中にブログのネタを書いてる・・・の件はシカトして下さい><;
そのブログ主だって会社にばれたときタイムスタンプについてどういいわけするのか まずそこから考えたほうがいいと思うよ
そういうのはどうでもいい。
よし 龍馬伝見てから考える
DOMでやるのはあきらめて、HttpWebRequestでやれば? ログイン->クッキーもらう->ブログの書き込み内容をPOST、みたいな感じだろうし。
525 :
519 :2010/01/10(日) 20:11:37
>>521 >>521 >.523
(だって仕事詰まらないんですもの。)
>>524 httpWebRequestはあまり詳しく無いので
Windows APIでも駆使して何とかして
自動化したいんです。
(仕事中にじっくりネタを考えてるせいもあって、お陰様で結構人気です。)
何とかして、って何ともなってねーじゃんw
だなw
だいたい「ちゃんと目的のページを読み込めたか」の例外処理のほうがむずかしいっつーの プログラムってのはコードの実行性だけを示すんじゃないんだけどなぁ
529 :
519 :2010/01/10(日) 20:33:31
>>526 >>527 >>528 私のスキルではどうもiFrameを使ってるところの自動
入力させるのは難しいです。
どなたかこの様な事を出来る方はいませんか?
ひとつ言っておくけど、この件でAPIはほとんど役立たず。 せいぜい、キー入力を送るくらい(これなら、SendKeysで充分だけど)。
龍馬伝おわた 風呂入ってくる。
答え書かれてるじゃん。一連の認証と送信手続きを動作確認しながらすればいいって。 意味わかんないなら誰かに金払って作ってもらいなよ。それか携帯でブログ更新するかだね。仕事中に。
>>525 >それが不思議な事にそのサイトは、コードを見ても次の様になっていて
>(SRCにJavaScriptになっています。)
>ドメインが同じかどうかの確認をする事が出来ません。
それはドメインが異なるのと同じ扱いになってる(勝手に解釈して情報省くな)
まあ、どう考えても自動操作はめんどくさいだけだから
524の言うようにhttpWebRequestでやるか
もう少し扱いが簡単なWebClient使って頑張るかだな
535 :
519 :2010/01/10(日) 21:33:15
>>530 SendKeyで試そうしているのですが
例えばタイトル項目にフォーカスを当ててからSenkeyで
"{TAB}あいうえお" という文字列を送ろうとして次のコードを書いたところエラーが出てしまいます。
■コード
// mshtml.IHTMLElement IhtmlIE
IhtmlIE.Focus();
■エラー内容
mshtml.IHTMLElement' に 'Focus' の定義がありません。
VB.netだと普通にFocus(); が出切るのになぜC#だと出来ないのでしょうか?
mshtml.IHTMLElement' に 'Focus' の定義がないからだろ。
537 :
519 :2010/01/10(日) 21:39:46
>>532 お風呂から上がられましたら
>>532 さんのテクニックに期待してます。
>>533 >>534 mshtmlを操作して入力→ボタンのクリックをした方が一番簡単かと思っているのですが
その認証を行う為には、
>>534 さんのおっしゃってる様に
httpWebRequest か WebClient を使うしか無いのでしょうか。
また、mhstmを使用しても出来ない場合には、
本文の入力エリアは決まった位置に表示されるので、WindowsAPIを使用して
iFrameで定義されたiFrame内の要素をクリック→文字列の送信をする方法を考えているのですが
Windows APIで特定の座標をクリック→文字列の送信をするにはどうすれば良いでしょか?
538 :
519 :2010/01/10(日) 21:40:29
>>536 VB.netだと Focus();が普通に使えてました。
じゃぁ、VB.NETでやれよ。
540 :
519 :2010/01/10(日) 21:58:49
C#の方がコードが見やすいのでC#でやりたいです。
>>537 534だが、mshtmlを操作するよりWebClientのほうが簡単だ
DOMによる操作セキュリティ制限に引っかかっていて難しい
キー操作でどうにかするならレイアウト変わるたびにメンテ
マウスなら座標取るためにDOMが必要だから非現実的
どの方法も不可能とは言わないが、WebClientが圧倒的に簡単
根性でキー入力するなら文字はクリップボードから貼り付ければw
いい加減、mshtmlの使い方はスレチだと気付け
うーん。ログインしてタイトルと本文入れるとこまでできた。 でも投稿できない。本文を入れなければ投稿するけど 本文を入れて下さいのエラーがでる。今日はつかれたからこの辺にしておこう。
544 :
519 :2010/01/10(日) 23:07:18
>>541 WebClientにも挑戦してみようと思います。
というよりちょっと疑問なのですが、
>DOMによる操作セキュリティ制限に引っかかっていて難しい
この様な情報ってどこから知られたのでしょうか?
私の方でも色々とぐぐってみたのですが見つかりませんでした。
>>543 ええっ!?風呂入ってもうそこまで出来たのですか!?ぱねーっす。
私はタイトルの入力まででだいたい5時間位時間がかかったのに、、、
お暇な時で結構ですので本文の入力方法をご教示下さい。
(仕事がつまらないから、こっそりブログのネタを考えてる俺って社会人として最低かなw?
まだ、自覚症状があるだけましと勝手に解釈しています。)
いいから死ねよ。
背筋がゾワゾワってするぐらい気持悪い
548 :
519 :2010/01/10(日) 23:43:21
ATOM APIにも一応対応してるんだな。サポート外らしいけど。
おっ できた。例外エラーが出てただけだった。
おめでとう。
#5151 #kusosure
>>553 なるほどw勘違いしてました。すみません。
>>555 お前は2chのプロ固定w?酉が丸見えの様だけどw
プログラム板にもプロ固定がいるのか。
>>555 酉が分ってる時点でプロ固定丸出しw
2chのサクラのプロ固定はウザイからウセロカスw
プロ固定ってなに?しかもム板でコテとか馬鹿ですって言ってるようなもんだろ。 ふらっと行けよ、ふらっと。
プロ固定ってなんだ・・・??
>>561 ありがとうございます。凄いです^^w
まさかこんな短期間で出切るなんて、、、
本当にどうもありがとうございました。
(これで仕事中にブログのネタを一生件名考える事が出来ますw)
プロ固定を知らないとか大丈夫? 某サイトにプロ固定の情報がテンコ盛りだよw
頭のおかしな人が妄想を書き連ねたサイト、だろwwwww
kwsk
568 :
デフォルトの名無しさん :2010/01/11(月) 12:25:30
>>568 プロ固定を必死に否定するのが表2chのサクラ(プロ固定だよw)
某掲示板にプロ固定の情報とか全部晒されてるから見てご覧
570 :
デフォルトの名無しさん :2010/01/11(月) 12:29:19
>>569 よくわからんけど
ここでプロ固定うんぬん言い出してスレを荒らす行為と
そのプロ固定が無意味なコピペで書き込み数を水増しするのとどう違うの?
どんだけ2chに人生かけてんだよ
>>519 がちょっと可哀そうな人だってことだけはよーく伝わった。
>>570 取り合えず荒らしと思う人がいるならこれで最後にするよ。
プロ固定 裏 で検索してみてね。
ブログの順位をあげるコツw
仕事中にネタを練りまくる事w
573 :
デフォルトの名無しさん :2010/01/11(月) 12:46:00
>>572 いようがいまいが 一般人は 気にしない
チラ裏に書いてろって言葉がぴったり
最近のチラシは裏が白紙じゃないことが多いから 表に書いてもいいけどな
プロ固定を知らないとか大丈夫? 某サイトにプロ固定の情報がチンコ盛りだよw
>>576 表2chに対抗して作られた某掲示板の「表2ch批判」
板に色々と際どい情報(プロ固定の住所・指名とかw)がマンコ盛りw
ところでプロ固定を知らないのはマジでヤバイと思うよ。
そーいう人に限って規制を喰らって●とか買っちゃうんだろうね。
C#とは関係無いからこの変にしておくけど。
ねぇ、これに乗っかってもなんも面白くないと思うけど・・・
いまどきプロ固定ネタとか。
最近知ったから興奮してるんでしょ。 よくまあググりゃひっかかるトリップバレからここまで話ひっぱれること。
おおっぐぐったら確かにヒットしたw プロ固定かとおもたw
トリップは一方向ハッシュで生成してるから、 「プロ固定に配布されているトリップ解析プログラム」 なんてありえないのにねw
583 :
デフォルトの名無しさん :2010/01/13(水) 00:06:10
質問です。 .NETあるいはWindows上で、 「それを確保したアプリケーション以外からは決してアクセスできないセキュアな永続化領域」 を確保する手段はあるでしょうか? 早い話が、ローカルに何かのサービスのパスワードをセキュアに保存する方法があるのかどうか、 ということなのですが。
できます
585 :
583 :2010/01/13(水) 00:12:17
出来るんですね。分かりました。 自分で調べます。ありがとうございました。
ないと思う。
Windows APIのCryptProtectDataなんかで実現できると思う。
それもパスワード知ってたら無理だろ。
>>561 さんのコードを元に
>>519 さんと同じ事を学習用に
やっているのですがどうも次のキャストで失敗する為に
後続処理のページ内の各オブジェクトにアクセスする事が出来ません。
>>561 さんは、キャストもせずになぜそのまま出来たのでしょうか?
※対象コード
Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As
System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
state = state + 1
If state = 1 Then
Dim doc As HTMLDocument
Try
'(A)
doc = DirectCast(WebBrowser1.Document, HTMLDocument)
'(B)
'doc = WebBrowser1.Document
Catch ex As Exception
Debug.WriteLine(ex.Message)
End Try
※エラー内容
System.InvalidCastException = {"型 'System.Windows.Forms.HtmlDocument'
のオブジェクトを型 'mshtml.HTMLDocument' にキャストできません。"}
(A)(B)いずれのコードでも同一のエラーが表示されてしまいます。
mshtml.HTMLDocumentとSystem.Windows.Forms.HtmlDocumentは全く別ものなんだからキャストできなくて当然。
>>561 はmshtml使わずにFormsだけで実装しているように見える。
それからスレタイよく読め。
>>590 WindowsFormにツールボックスからWebBrowserをドラッグして使用しているのですが、
何が違うのでしょうか?
大変あつかましいお願いかとは思いますが、キャストの方法を教えて頂けますか?
だからキャストできないんだって
絶対あつかましいとか思ってねーw
私が寝ている間に、小人さん
>>585 がなんか書き込んでいますが、
>>586-588 CryptProtectData系も、ログイン中のユーザが実行している他のプログラムからは
普通にアクセスできてしまうようですので、欲しいものとは少し違うかもしれません。
(まぁ、大概のケースでは問題にならないかもしれませんが)
とりあえず無さそうということで、ありがとうございました。
596 :
583 :2010/01/13(水) 07:04:06
DomDocumentだっけか? キャストに使えるCOMオブジェクトがプロパティに あった気がする。
自演されたくない質問者はトリ付けた方がいいと思うぜ 最近暇人がなりすまし覚えて粘着してるから
>>589 doc.xml = WebBrowser1.Document.outerXml
みたいに中身から再構築すればいいんじゃね?
超適当に言ってみるけど。
多分VB6上がりなやつなんだろう
正直言って、WebBrowserコントロール使うんだったらVB6でやった方が楽だしデバッグもしやすい。
604 :
589 :2010/01/13(水) 22:25:52
>>600 分らないのなら黙ってて下さい。
どなたかお教え願います。
>>604 >>590 そのコードがこのスレに相応しいかどうかすら判らないなんて…
つか、どこから mshtml が沸いて出たのやら。
変な参照設定でもしてるのか?
成りすましが受けると思ってしつこく繰り返してる頭のおかしな人だから放置で。
もう冬休み終ったと思ったんだが
今年のおれのスケジュール 〜3月下旬 冬休み 〜6月末 春休み 〜8月末 夏休み 〜11月末 秋休み その後年末まで冬休み
結局人生ってさ「経験」が物を言うんだよな いい大学行こうがいい成績取ろうが「経験」が無いと世間に出たときに何も役に立たない まぁお前らみたいなオタクにはわかんねーかもしんないけどな 俺は高卒で世間的には低学歴かもしれないが、フランスに渡米した経験を活かして 今は充実した仕事してるよ お前らも壁作って自分の世界に閉じ込もって無いで 今しかできない「経験」しといて経験値積んどけ
>>610 俺のよく行く「30代職歴無しの就職活動スレ」と同じ空気を感じる
最早、懐かしさすら感じるw<フランスに渡米
えり
615 :
デフォルトの名無しさん :2010/01/14(木) 03:30:43
.NET アプリって低スペXPだと起動に数秒かかったりするけど Vistaやwin7だったらメモ帳くらい早く画面出て操作可能になるの?
なんでOSのバージョンがあがったくらいで 劇的に速くなるなどと想像できるんだろう。
一回起動しちゃえば速くなるんだけどな。 そういうのが気になりそうな小さめのアプリはVC++でがんばれ
まあ、Vista とかだと推奨スペックが違うから、ハード性能的にだいぶ違う気もするけど。 あと、Vista 以降では SuperFetch があるんで、メモリ多く積んでる速いかも。
やはりそう簡単に実行速度がかわるもんでもないんですね ありがとうございました
起動は速いけど実行が遅いのと 起動は遅いけど実行が速いのが選べたらいいのに
起動も早いし実行も速い
ただし開発は…
>>616 おまえは立派な開発現場に居合わせたことがないんだろうね
C#で仮想メモリの領域って増やせないんですか? 4G中3.5Gぐらい使いたいんですけど 共有メモリにマッピングしても2G超えたらメモリダンプしちまいます。 誰か教えてください。
>>625 32Bit版が前提でお願いしますよ〜
いや、そう出来れば一番いいんですけどね・・・
>>627 CとかだとCreateFileMappingとか使って、共有メモリに構造体ぶち込んだり
C++だったらVirtualAllocとか使ったりして
いけたんですがねー
やっぱりC#だと無理なのか・・・
FileMappingは.NET4.0からだな
一応DllImportして、CreateFileMapping使ってみたんだけど やっぱり、2Gで落ちるんですよね 参った
LargeAddressAwareがなんちゃら
頑張ればいけるかもしれない・・・
editbin.exeが鍵か
boot.ini で /3G で
>>633 ので IMAGE_FILE_LARGE_ADDRESS_AWARE
でも3G
DVDのISOファイルすら操れないとは・・・
そんなものをオンメモリでやるな。
でもそろそろそういうのもオンメモリでやる時代になってきたってことじゃね? 640kのメインメモリなんて頃もあったわけだし。
じゃね?
>>628 C++でも32ビットWindowsなら2GBまでだろ。C#も同じ。ただし、当然
>>634 はC#でも通用する。
あと、64ビット版WindowsでIMAGE_FILE_LARGE_ADDRESS_AWARE付きの32ビットEXEを実行すると仮想アドレス4GB全部使える。
>>635-637 64ビットでやれ。
HDDに書き込んで取り出してを繰り返せよ
>>628 CreateFileMapping自体は4G越えもいけた。
MapViewOfFileでまとめて設定できるViewが2G越えでダメだといってるのだろうか?
どちらにせよ、ネイティブのViewからマネージド領域へマーシャリングが必要になるので
あまり効率は良くない。
32ビットで4G積んで、システムプロパティで実装メモリ見たら 4GB(3GB使用可能)てなってるが。
仮想領域が32bitアドレッシングである限り、言語を問わずマップできるのは 268435456 byte まで。 思うに、>630で落ちるというのは、マップ可能なサイズ以上にマップしようとしてないか? 細かくビューをMap/UnMapすれば通ると思うんだが・・・
DOS時代に16bit nearポインタだと64kしかメモリブロック確保出来なかったのと同じことがおきてるわけだよな。
そのうち、ギガバイト単位のメモリをやりくりするのが当然になる時代が来るのかなぁ。
今はもう12GBとかつんでるパソコンが20万以下で手に入るからな。 もうすぐだろう
こないだ会社の後輩がいきなり2GBの配列作ってた。 そういうことが何も考えずにできちゃう時代になったんだなあとしみじみ思った。
でもやっぱ2G配列確保は躊躇するわ・・・
さすがに2Gの配列を「何も考えずにできちゃう時代」はまだ数年は先だと思ふ
ファイルマッピングなら2GB程度・・・と思ったが、「ファイルマッピング」という 点で「何か考えている」か。
携帯開発だとそうはいかないんじゃないですか? ビット詰めして軽くするとかやってるみたいですけど。
そりゃ組込みだとそうはいかないだろうけど そもそも組込みでC#だのJavaだのの高級言語使える時点で時代が違うよな。
test
共通一次
2Gって64環境じゃないとそもそもできないと思うが。 しかし、アクセスがある時間内では局所的で、 ワーキングセットが小さく保たれていれば それなりの動きをしているともいえるな。
ですね。
たぶん冬休みの宿題だったんだよw
マルチスレッドプログラミングにおける適切なスレッド数を示したガイドラインみたいなものってありますか。 今はなんとなくコア数でやってます。
場合によるとしか IOなどでブロックされることが多いならいっぱい作れば速くなるだろうし ずっと100%動いてるなら=コア数で十分だし
>>660 ありがとうございます。
適当そうなスレッド数を事前に見積もる必要がありそうですね。
レジストリとかで変更できるようにしとかないような残念な奴にならんようにな。
レジストリを使うこと自体が残念なんだが
スレッド数とかユーザが弄れるようになってるのもソフトによっちゃ結構残念ではあるような・・・ フリーソフトならありかもしれんけどサポート要るソフトでは面倒だからやりたくないわ。
面倒だからやりたくない人にはプログラムを組む資格がないんだが
その資格試験どこで受けられますか?
>>664 非公開・サポート無し、な機能にすればいいと思うよ
俺は面倒だからプログラムを組むけどな
>>665 ん?
面倒だからやりたくないってのは
機能を盛りこむとユーザからその分の問い合わせがくる
→ 面倒な仕事が増えるってことなんだけど?
なんか意味判ってない人がいるようだな。
俺だったらコア数設定みたいなの設定項目に組みこむぐらいなら
動いてるシステムのコア数によってスレッド数増減するようなコード書くけどな。
俺は面倒だから3行以上は読まないな
この板はプロアマ自称他称問わずが混在していることを忘れないよう。 あと仕事の話しを持ちこむと喜ぶ奴がいることも忘れないよう。
日本人は機能過剰と設定項目過剰が大好きな思考停止民族ニダ
BackgroundWorker
675 :
デフォルトの名無しさん :2010/01/18(月) 18:10:42
>>673 噂のおじいちゃんですか?((((;゚Д゚))))ガクガクブルブル
そのスレッド増減の適正値なんて予測できないから調整手段入れとけって話。 あなたは神かww
ん?システムのコア数に合わせて自動調整するって話とちゃうの? QuadCoreなら4とか。上限ぐらいは設定できても良い気はするけど。
適正値が存在する処理かどうかも不明だし 調整手段を用意するかどうかは処理次第ポリシー次第だし 質疑応答はとっくに終わってるし どうでもよいと思います。
はぁ?ユーザがどうやって適正な値に設定するっていうんだよ。 コア数はプログラム側で読める上にどんな処理してるのかわかってるのもプログラム側。 この状況で誰が一番適切な値決められるんだよ。思考停止してんじゃねーよぼけ。
まあ、だからレジストリがいいんじゃないの? 勝手にいじるようならサポートする必要はないし、勘違いユーザはいい気分になるだろうし
ユーザ: 1コアだけ別のプログラム用に空けときたいんだけど・・・
>>679 : はぁ?これが一番適切な値なんだよぼけ。
仕方ないので優先度下げた
中身を知らなくてもユーザは使い方を知ってる。 っていうかね、全ての変数を設定項目にしてもいいぐらい。おもいあがんな。
>>688 おもいあがったプログラマさんですか?
最適コア数自動調整乙でございます。
MAX何コアまで割り当てるとかくらいはあってもいいけど、まあその程度のことだ。
プログラマの思い上りは異常。 ユーザーが一番偉いのに。設定値は解放されるべき。
お客様は神様ってやつか。 客商売やってりゃ、神様とでも思わないとやってらんねーよってやつだ。
ソフトが気に入らないときは自分でつくりゃいいんだよ。 低脳には無理だろうが。
客商売やってりゃ、余計な設定は外したくなる。
>>694 余計なことすんなよ。コア数設定させてやれよ。
日本での商売のソフトは普通、環境を限定して作るもんだろ。
わざわざマルチスレッドにしてまで高速化するものだったら、ユーザもそれなりのレベルを想定してると思う。
アプリケーションの要求速度とユーザのレベルとの間に相関があるとか 論理展開が突飛すぎて付いていけない
一種類のタスクでマルチスレッド化のオーバーヘッドを上回るほどの重い計算をさせるんだろ。 一般的じゃない。
>>697 これがプログラマー脳って奴だ。
こんなんだから日本のIT業界はおいてきぼりになるんだわ。
あーあ。馬鹿に付ける薬はないって本当だな。
なんだよ。じゃあ、いってみろよ。 シングルスレッドじゃなかったら、プロセッサの数のスレッド数。 それで不満なんてマニア。
ロードバランサ
処理内容も対象ユーザ層もぼんやりなまま各自の脳内設定で煽り合って何がしたいの? というかそもそもなんで喧嘩腰なの? あと突然5段階ぐらい論理過程ぶっ飛んだ単語を並べる奴は何がしたいの? 雑談にしてもちょっと酷いんじゃないの? ばかなの?しぬの?
荒らしたいだけだろ。馬鹿の相手する方も馬鹿だな。
技術的な話になると出番がないので こういうときでないと書き込めません><
どういうときにマルチスレッドにするの? 数値計算ぐらいしか思い浮かばないんですが。
708 :
デフォルトの名無しさん :2010/01/19(火) 19:08:05
C#勉強がてらダウンロードして早速サンプル作ろうと思ったんだけどコンパイルが通らない。
getData(string):値を返さないコードパスがあります。といったエラーが解決できない。
どこが悪いの?
namespace StockQuote
{
public class StockQuote
{
public static void Main()
{
string url = "
http://stocks.finance.yahoo.co.jp/stocks/detail/?code=1 ";
string rtnData = getData(url);
Console.Write(rtnData);
}
private static string getData(string pUrl)
{
try
{
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(pUrl);
return "SUCCESS";
}
catch (Exception)
{
return "ERROR";
}
}
}
}
そのコードをコピペしてみたが、 コンパイル通ったよ
A.dllというアセンブリがあって A.dllが読み込まれた場合に A.dllの中のBというクラスの特定のスタティックメソッドを呼び出すことは出来ますか?
711 :
デフォルトの名無しさん :2010/01/19(火) 19:22:10
>>709 えええ?と思い、コメントアウトしてた行を全部消してみたらコンパイルが通りました^^
なんかコンパイラが信用できないなー。。。
>>710 A.dll側で実装する方法は思いつかないなぁ
A.dllを参照する側なら、ロード前にAppDomainのAssemblyLoadイベントを設定しとけばいけるけど
呼び出すって言ってるから、エントリポイントのことじゃないだろ
コンストラクタってよくわからないのですが 初期化するって何を初期化するんでしょうか?
newするオブジェクトを
プライベート/パブリックフィールドの初期化とかインスタンスを実行するのに必要な初期処理とかしてやればいいよ。
>>715 「何を初期化するか」が分からないというより、
そもそも初期化って概念がわからないんでしょw
そんなの気にしなくていいよ自ずとわかるから。
>>707 ネットワークアクセスやIOなど
まあそういう使い方だとコア数なんか全く関係ないけどなw
>>715 思いつかないなら、初期化するオブジェクトは無いということだね。
721 :
デフォルトの名無しさん :2010/01/21(木) 11:24:22
>>715 物事には手続きがあるようにクラスを使うにもあるんですよ
たとえばファイルアクセスなんかだとOPENして読み書きしたあとCLOSEしますよね?
クラスもnewするとOPENに相当するコンストラクタが動いてクラスの初期化を行い
使われなくなったらCLOSEに相当するデストラクタが動きます
JavaやC#はメモリ上に確保されるクラスなどはファイルほど厳密に手続きを
踏まなくても勝手に開放してくれたりしますけどね
722 :
デフォルトの名無しさん :2010/01/21(木) 11:28:59
c#のオーナードロー関連をいじって見た目を変えたりしてたのですが どうせならWebbrowserにHTMLを与えて見た目を作った方がよさそう と思ったのですが、HTML上のボタンなどが押された場合に 通常のブラウザとしての動作ではなく自作プログラムの動作として 拾う場合はどうすればいいのでしょうか?
そういう人はWPF触ってみるべき
>>722 HtmlElementのクリックイベント拾える
725 :
デフォルトの名無しさん :2010/01/21(木) 13:33:15
>>723 おもしろそうですね
ただ、MSが解説してるサイトなどをみると実行部分に関しては
C#と同じみたいに書いてるのに実際はかなり変わってる気がします。
TreeViewにノード追加する部分が変わってるし、TreeNodeは見つからないしorz
>>724 ありがとうございます
726 :
デフォルトの名無しさん :2010/01/21(木) 15:40:37
TreeViewはBindするだけで勝手にやってくれるぜ。 まじで超楽ちん♪
727 :
デフォルトの名無しさん :2010/01/21(木) 16:34:43
HierarchicalDataTemplateを理解するまでに 1ヶ月ほどかかったけどね俺は
728 :
デフォルトの名無しさん :2010/01/21(木) 16:44:07
>>726 まーねー
従来のやり方と比べるといいよね〜
でもあれを実現できるってことはますます難読化が必要な気がする
何で変数名はクラス名まで元に戻せちゃうんだろう 嫌すぎる
730 :
デフォルトの名無しさん :2010/01/21(木) 16:48:30
WPFは慣れるまでが大変 周りを説得するのも大変
732 :
デフォルトの名無しさん :2010/01/21(木) 21:10:42
会社に話しても導入してもらえなかった
C#はPHPなみに楽させてくれる言語だな
C#はIDEが便利すぎる
>>732 現状仕事で積極的に導入出来る領域少ないよな。
Silverlightの方がまだ現実的な気がするわ。
monaでiphoneのアプリを作れるそうですけど、 作った方います? 入れ歯経験談を聞かせて頂けるとありがたいのですが…
モナーじゃ無理だと思うw
入れ歯は結構臭くなりがちだから気をつけないとね。
739 :
デフォルトの名無しさん :2010/01/22(金) 18:21:08
c#で2chのdatの更新日取得や差分ダウンロードはできますかね? ネットで調べるといきなりダウンロードするコードくらいしかなさそうな感じ
やったことないからわからん。 試してみればいいじゃん。
出来る。WebClientなりHttpClientなりで組めばOK
dat直接っていけるんだっけ? 2chブラウザなやり方が必要だった気もする。
743 :
デフォルトの名無しさん :2010/01/22(金) 18:37:48
744 :
デフォルトの名無しさん :2010/01/22(金) 18:38:39
ちょろっと見てみたら、 HTTP/1.1 で↓あたり返してきてるから、たぶん問題ないね。 Last-Modified: Fri, 22 Jan 2010 09:38:39 GMT Accept-Ranges: bytes まーでも、 Content-Encoding: gzip で、差分ダウンロードがどこまで意味あるのかわからんけど。
746 :
デフォルトの名無しさん :2010/01/22(金) 18:48:59
>>747 そんなの知ってます
C#でのやり方を聞いているんです
ちゃちゃ入れないでください
749 :
デフォルトの名無しさん :2010/01/22(金) 19:17:30
>>748 勝手に書くなよw
>>747 そんなところあったんですね
勉強してみます。
というかプログラム関連の板ってなんでIDないんだろ
スーパーハッカーにはIDなんて必要ないんだよ
751 :
デフォルトの名無しさん :2010/01/22(金) 19:30:48
株主だとID無しのところでも書き込んだホストとかわかるのかな?
最近なりすまし覚えたてのが常駐してるから うっとおしいことこのうえない。
まっさっか〜
まさかりかついだきんたろう
Wikipediaにある、これなんですけど… ---------------------------------------------------------------------------------------- >>さまざまな意味において、基盤であるCLIの機能をもっとも反映している言語であるといえる。 >>C#にある組み込み型のほとんどは、CLIフレームワークに実装されている値型と対応している。 >>しかし、C#の言語仕様はコンパイラのコード生成については何も言及していない。 >>つまり、CLRに対応しなければならないとか、共通中間言語 (CIL) などの >>特定のフォーマットのコードを生成しなければならないとかいうことは述べられていない。 >>そのため、理論的にはC++やFORTRANのように環境依存のマシン語を生成することも可能である。 >>しかし、現在存在するすべてのC#コンパイラはCLIをターゲットにしている。 ---------------------------------------------------------------------------------------- MonoとGNUのコンパイラもそうなのですか?
ちがうよ
ネイティブコード吐けるとは知らなかったな。MonoもCLI吐いていたはずだけど。
Microsoft’s implementation of C# relies on CLI for library and runtime support, other implementations of C# need not と「マイクロソフトはCLI使ってるけど、別にC#の他の実装ではCLI使う必要は無いよ」と明記されてる。 間違っているとしたら、「しかし、現在存在するすべてのC#コンパイラはCLIをターゲットにしている。」の箇所だよね?
そうだよ
しかし、C#は言語仕様がガベージコレクション前提な感じなので VMなしの構成はありえんと思う
VMがなきゃGCできないというもんでもないからなぁ。 Boehm GCはネイティブコードと組み合わせられるし、GHCはネイティブコード吐くし。
MonoでAOT(Ahead-of-Time)コンパイルするとネイティブコード吐くんだね。 詳しい事情わかんないから、誰かWikipedia訂正よろ。
766 :
デフォルトの名無しさん :2010/01/24(日) 12:07:16
>>765 JITができるってことはやる気になれば全部できるってことだしねえ
それよりC#のクラスライブラリもやっぱりネイティブじゃなく復元が容易な
.netの中間コードなのかね?
767 :
デフォルトの名無しさん :2010/01/24(日) 12:11:59
あともう一つ疑問だったのが完全にイコールではないが クラスが使えるVC++ってクラスの構造の復元は可能だったの? 実行コードは多分完璧にとまではいかなくても クラスの大まかな枠組みは復元できそうだけど
769 :
デフォルトの名無しさん :2010/01/24(日) 12:31:18
>>768 どうもです
> マイクロソフトはクラス・ライブラリの難読化を一切行っておらず、
>「.NET逆コンパイラとコードを難読化するDotfuscator」でも紹介して
>いるReflectorを使えば、これまでにも.NET Frameworkのクラス・ラ
>イブラリを逆コンパイルして、そのソースコードをのぞき見ることができた。
770 :
デフォルトの名無しさん :2010/01/24(日) 12:35:18
c/c++からc#は元が変態すぎて変換厳しそうだけど 逆にざっくり変換するツールとかないのんかね?
monoのAOPはngenとやってることはそう変わらなくて、BCLは必要で、 クラスやメンバ名のようなメタ情報はしっかり詰め込まれてる。 .NETのngenはメタ情報は埋め込まれてないが、 ngen前のアセンブリも必要でそっちからメタ情報を取得する。 なのでBCLはオリジナルのアセンブリとngenされたアセンブリの両方が存在する。 オリジナルのほうは当然refrectorで見れる。
>>767 デバッグ情報があればある程度なんとかなるはず。
773 :
デフォルトの名無しさん :2010/01/24(日) 16:11:23
c#でも普通にAAかけたりできるんだな
C#で、ってのの意味がよくわからんけどそりゃAAかけるのは別に言語依存の技術じゃないだろうと。
>>766 そんなことしなくても、ソースコードが公開されている。
ネイティブをはくようにはできるが、 ILGeneratorを使っている場合は、JITなしではその部分は動作しない。
C#でAAを描くに見えた
アスキーアートかw
えっ、ちがうの?(;´д`)
780 :
デフォルトの名無しさん :2010/01/24(日) 17:57:25
[DllImport(...)] extern static void f(int n, ref double a); static void Main(){ var a=new double[3]{1,2,3}; f(2, ref a[1]); } fはn個の要素を持つ配列を受け取る関数とします。 aの部分配列{2,3}をfに渡したいとして、 x86だと上記のようなやり方で一応正しく動作するのですが、 x64だとa[1]の内容が一時的に別のメモリにコピーされ、 fから戻ってきたときにそのメモリからa[1]にコピーされるので、 {2,3}を渡したことになりません。 質問したいのは、x64ではなぜこのような動作になっているのでしょうか。 普通にa全体を固定してa[1]のアドレスを渡してくれればいいのに、 と思うのですが。
そもそもC#で配列の中身が連続したアドレスに確保される保証なんてあるんだっけ?
配列で渡せよ。
参照で渡しても[in, out]属性がないと一方向なんだっけ。
>>781 少なくともfixedで固定すれば保証されるよ
>>783 違った、配列でなければrefは[In Out]。配列は[In]。
この場合は添え字をつけたから非配列で[In, Out]になる、
だからマーシャリングしてもおかしくない。
マーシャリングとは?
ぐぐれよ。
ベニー・ザ・ジェット・ユキーデ
HtmlDocument doc = new HtmlDocument();って宣言したら 型 'System.Windows.Forms.HtmlDocument' のコンストラクタが定義されていません。 (CS0143) - C:\project\nettest\MainForm.cs:228,44 というエラーがでます 開発環境は、SharpDevelop 3.1.1です。 よろしくお願いします。
エラーの通りです。new でインスタンスを生成することはできません。
791 :
デフォルトの名無しさん :2010/01/24(日) 21:10:01
>>789 俺もそこ疑問だった
他のMS製クラスだとコンストラクタの補助情報でるのに
なぜかそれだけでないんだよね
public HtmlDocument( Uri documentLocation, string documentContent);
だそうです。
それ違うだろ。
何作ればいいか迷いますね。
ネタに困ったら、使ったことが無いやつを試すことにしてる。
実際大抵のものはググると誰か作ってるから困っちゃうよな。
言語処理系なんかオナニーのネタとしては最適だよ
802 :
デフォルトの名無しさん :2010/01/27(水) 17:20:56
作成中のプログラムにアンインストール機能を付けたいのですが、 「自身のexe(を含むフォルダ全部)を削除して終了」ということは可能ですか??
無理。アンインストールじゃmsiexec.exeにまかせよう
DOS窓出して消す手もある
805 :
デフォルトの名無しさん :2010/01/27(水) 17:28:14
>>803 OS標準の「アプリケーションの追加と削除」の一覧に入るようにするということですか?
>>804 そちらの方法も詳しく教えてください
>>805 ヒント出したんだからまずググる癖付けろよ
DOS窓の方は私も分かりません。
808 :
デフォルトの名無しさん :2010/01/27(水) 19:51:38
∧_,,∧ お夜食にラーメンとお茶いかがですか。 (´・ω・`) _。_ / J つc(__アi! しー-J 旦~ 旦~ 旦~ 旦~ 旦~ ∬____ ∬____ ∬____ ∬____ ∬____ ∬____ \≠/ \≠/ \≠/ \≠/ \≠/ \≠/ .  ̄ .  ̄ .  ̄ .  ̄ .  ̄ .  ̄ 味噌ラーメン 醤油ラーメン 豚骨ラーメン 塩ラーメン チャーシューメン ねぎラーメン ∬____ ∬____ ∬____ ∬____ ∬____ ∬____ \≠/ \≠/ \≠/ \≠/ \≠/ \≠/ .  ̄ .  ̄ .  ̄ .  ̄ .  ̄ .  ̄ サンマーメン にんにくラーメン 和風だしラーメン 五目ラーメン もやしラーメン バター醤油ラーメン
アーメン
ザーm
>>807 削除用のbat(js,pl,vbs,rbなんでもいい)ファイルを作成(書き出し)します
System.Diagnostics.Process.Startなどでそれを実行します
実行中のexeは即座に終了します。
時間差で消す事になるのでスクリプトファイルの頭に数秒スリープを置くといいです
スクリプトファイルの作成場所はテンポラリフォルダにしておけば
そのファイル自信もその内消えてくれるでしょう
それじゃ安全じゃないし、アンインストーラをテンポラリに置くなら、DOS窓使う必要ないじゃないか。
素直にセットアッププロジェクト作れば
(提供する側にとっては) 簡単でいいじゃないか。
>>805 の
>OS標準の「アプリケーションの追加と削除」の一覧に
も勝手に追加してくれるんだし。
そもそもナニが問題なのか・・・・
単にセットアッププロジェクトの作り方知らなかったってことなんじゃないかと。
DOS窓にコマンド送って自身を終了しておくだけじゃ駄目なの? cmd.exeに del 自身パス で送り付けておけば削除してくれるでしょ? 確実じゃないかもしれないけど、DOS側でwait入れておけばどうだろう?
セットアッププロジェクト作っとけば、インストール・アンインストールを全部やってくれる。
ZIP展開だけで配置できるやつなら、ユーザーが自分でフォルダ削除すればいい。
(自身を削除って余計なお世話と言うか、誤操作で意図せず削除しちゃう人が結構居そう)
結局
>>815 なんじゃね。
セットアップは嫌われるからな
それならアンインストール不要なつくりにするべきだろ フリーソフトなどで初回起動時に勝手にレジストリに書き込んだりするやつがたまにあるけど 作法としては最悪だと思う
可能ですか? 可能です。 終わり。 あんたら深読みしすぎw
標準のセットアップ使っててコントロールパネルからアンインストール出来るか、 何も痕跡残さずフォルダ削除のみでアンインスコ出来るやつがいいなぁ。
>>820 このレベルの質問しかできないやつがその回答だけで済むとでも?
どうせグダグダ聞いてきてムダにスレ消費するだろ
ランタイム入れとけば、基本的に実行ファイル単体で動くだろ。
え
悪戯したあと自動消滅するウィルスでも造る気なんだろうか
>>825 フレームワーク入れないと動かないウィルスとかwwwwww
∧_,,∧ お夜食にラーメンとお茶いかがですか。 (´・ω・`) _。_ / J つc(__アi! しー-J 旦~ 旦~ 旦~ 旦~ 旦~ ∬____ ∬____ ∬____ ∬____ ∬____ \≠/ \≠/ \≠/ \≠/ \≠/ .  ̄ .  ̄ .  ̄ . .  ̄ .  ̄ 味噌ラーメン 醤油ラーメン 豚骨ラーメン チャーシューメン ねぎラーメン ∬____ ∬____ ∬____ ∬____ ∬____ ∬____ \≠/ \≠/ \≠/ \≠/ \≠/ \≠/ .  ̄ .  ̄ .  ̄ .  ̄ .  ̄ .  ̄ サンマーメン にんにくラーメン 和風だしラーメン 五目ラーメン もやしラーメン バター醤油ラーメン 塩ラーメン頂きました。
∧_,,∧ 朝ラーメンとお茶いかがですか。 (´・ω・`) _。_ / J つc(__アi! しー-J 旦~ 旦~ 旦~ 旦~ 旦~ ∬____ ∬____ ∬____ ∬____ \≠/ \≠/ \≠/ \≠/ .  ̄ .  ̄ .  ̄ . .  ̄ 味噌ラーメン 醤油ラーメン 豚骨ラーメン チャーシューメン ∬____ ∬____ ∬____ ∬____ ∬____ ∬____ \≠/ \≠/ \≠/ \≠/ \≠/ \≠/ .  ̄ .  ̄ .  ̄ .  ̄ .  ̄ .  ̄ サンマーメン にんにくラーメン 和風だしラーメン 五目ラーメン もやしラーメン バター醤油ラーメン ネギラーメンうめぇ・・・・
10人分買い出しに来たがお茶が足りないからやめた
opentkっていうopenglのラッパーを使ってc#で書いたお絵かきソフトがありまして、 win7・64bit環境でx64指定してコンパイルすると、 警告 1 アセンブリの生成 -- 参照アセンブリ 'mscorlib.dll' は異なるプロセッサを対象にしています。 て出るんです。で、ぐぐってみたら、64bitに対応していない部分があるから。実行時エラーが出る。 などがあったんですけど、とりあえずなんかうごいています。でも気色悪いしいつ実行時エラーが 出るかひやひやするので、場所を突き止めて直せる物なら直したいんですけど この警告だけ場所をいいません。どうすれば場所を突き止められますか?
んなもんopenglやopentk作ったやつとか知ってるやつに聞けよ どう考えてもスレ違いだろ そもそもそのライブラリは64BIT環境で動くことを保証しているのか? 動作環境くらい調べてこい
AnyCPUでコンパイルすればいいじゃん。
AnyCPUかx86にしとけばWOW64上で問題なく動くだろ
何のためにx64指定してるんだ。 x64指定は、言ってみりゃOSがx64環境でしか動きませんという指定だぞ。 理由がなけりゃAnyCPUにしとけ(OSがx64でもx86でもどっちでもネイティブに動く)。 64ネイティブでは動かないんならx86指定にしとけ(OSがx64でもx86でもどっちでも動くがx64環境では32ビットモードであるWOW64上で動く)。
AnyCPUだとどっちで動いてるのかわかりにくいじゃん
わからなくていいだろ
どっちで動いてるかがコンパイル時にわかるわけないじゃん。
できることなら64bitにも対応してたほうがいいじゃん。
それがAnyCPUじゃないのか
わかってないな
うむ。全然わかっておらん。
そういえば C#のEXE→64ビット C++のDLL→32ビット でコンパイルされていて、C#アプリからC++DLLを呼び出す場合って 多分勝手に色々な差を吸収してくれるんだろうけど大丈夫なんかな?
843 :
rttyfugihoj :2010/01/29(金) 11:49:33
下記のプログラムを関数を用いて実行したいのですが、どのようにすれば良いでしょうか? 回答(できたら簡単な解説)の明記をお願いします。 問題1:入力したプログラムから以下のように出力するプログラムを作成する。 (実行結果例) 文字列を入力: 今日は、晴れです。 今日は、晴れです。 日 す は で 、 れ 晴 晴 れ 、 で は す 日 。すでれ晴、は日今 問題2:ファイル入力した漢字データ(全角)を読み込み、行数を数えながら逆から表示するプログラム。 (実行結果例) (例として次のような C:\test2.txtを入力する) 今日は、晴れです。昨日は、雨で した。明日は、曇でしょう。明後 日は、快晴でしょうか。 ←の文章を以下のようなプログラムにする。 ファイル名を入力してください:C:\test2.txt 1:で雨、は日昨。すでれ晴、は日今 2:後明。うょしで曇、は日明。した 3:。かうょしで晴快、は日
844 :
rttyfugihoj :2010/01/29(金) 11:51:17
問題3:ファイルのデータ(英文)を読み込み、一行毎の文字数(スペースも含む)とワード数を数えるプログラム。 (実行結果例) (例として次のような C:\test3.txtを入力する) And friends just can't be found Like a bridge over troubled water I will lay me down ←の文章を以下のようなプログラムにする。 ファイル名を入力してください:C:\test3.txt 1:And friends just can't be found ⇒31文字、6ワード 2:Like a bridge over troubled water ⇒33文字、6ワード 3:I will lay me down ⇒18文字、5ワード 問題4:1月1日が金曜日の平年(たとえば2010年)について、月日の入力データから、曜日を求めるプログラム。 (実行結果例) 月を入力してください:9 日を入力してください:15 9月15日は、水曜日です。 以上4問です。どうか回答よろしくお願い致します
C#の宿題スレで聞け ここで聞いたら全部LINQになるぞ
全部やってほしいんなら宿題スレいけばいいんじゃないかな? どこまで自分でやってどこが判らないのかをもうちょっと書くべきだろ こんなのも自分でできないようなら宿題忘れて怒られた方がいい 4だけ判んないとかならまだマシだろうが そもそも動作環境は何だ?
>>846 >学校の課題の答えを全て」を求めているのでしょうか?
はい、そうです。よろしくお願いいたします。
クソワロタ
さいきんのゆとりは恐ろしいな 問題をネットで調べて回答するならまだましだわ・・・・ 宿題でも聞いてるみたいだし
C言語とC#の区別がつかない奴が単位取っていいのか?
C#+LINQでループすら明示的に書いてないようなコードを C言語の課題として提出してみてほしい
こういうのを見てると大学って無駄に増えすぎたんだなと思うわ。
853 :
830 :2010/01/29(金) 15:43:10
いや、2GB以上のデータを扱いたかったのでさあ。 なんやかんやしてたら、自分で作ったコントロールがアセンブリ参照できませんとか 新たな敵が現れて、コードをひとつひとつプロジェクトから削除、そして追加とかしてたら あの警告も消えたりで、わけわからん。orz
最近肛門から膿んだような臭いがする・・・
学ぶ気がないんだったら、お金払って誰かに頼んだ方がいいよ。
はげどう
幾らならやる? コンサル料 設計費 検査費 ドキュメント費 納品後メールサポート1インシデントあたり お見積書としてはどのくらい項目いれようかな
スレ違い
見積り査定スレとかあったら面白いな
>>860 はぃ いいだしっぺの法則発動 と言ってみる
マ板でやれ
BackgroundWorkerのCancelationPendingのフラグはvolatilついてないみたいなんだけど、何で大丈夫なの?
ぜんぜん祭りじゃないな。わんくまだし。
必ずプロパティ経由で呼び出されるわけだからその取得が削除されることはありえないんじゃないの
最適化によりインライン展開される可能性もあるし、 プロパティになってるからって常に別スレッドからの書き込みが すぐに読み取れる保証はない。 てのが基本なんだが、マジレスするとBackgroundWorkerがComponent派生で、つまりはMarshalByRefObject派生だから。 MarshalByRefObjectに対する外部からのメンバ呼び出しはインライン展開されることはなく、 またフィールドへのアクセスも専用メソッド経由になる。 また、少なくともCLRでは現状、メソッドコールがあるとメモリ同期が行われる。 これらの理由により、フラグがvolatileでなくても実質問題は発生しない。
>>864 なげーよw
って祭っつうか基地外が一人喚いてるだけじゃん。
こんばんは 簡易ブラウザ作成中であります、 ソースを表示させたいのですが、どうすればいいですか
どうやってソースを取得してんの? 取得した奴をそのまま表示すればいいじゃん。
オリバーお好み焼きソースのボトルの画像の撮影方法が知りたいとか
>>871 すいません
ソースをどうやって取得するんですか_
えぅ?
関数ありますか?
えぉ?
(>Д<;)
自演だな
これがゆとり? ソースの取得方法もわかんなくて、どうやってブラウザなんて作ってんのやら。 ま、WebBrowser貼り付けただけなんだろうけど。
わんくまってなーに?
ゆとりってなんですか?wwwwwwwwwwwwwwwwwwww
>>880 此の世でもっともレベルの高いC#使い。
彼の一言はビルゲイツも参考にする程。
>>881 >>879 がゆとりだってさ
すっごいゆとり
扱いに困っちゃうんだよね^^;;;;
ゆとり
ゆとりm9(^Д^)プギャー
すごいゆとりでワロタ WebBrowser貼り付けってお前もな(笑)
C#使ってる時点でゆとり言語
また自演か
大部分の人は、お前みたいに「初めての言語がC#」ってわけじゃないんだがなw
俺C#が初めてですけど何か?
最近は多いんじゃない?初めてがC#ってのも。 IDE無料だし一応Win用スタンドアロンのアプリも作れるしで。
C#が一番最初のプログラムでいいよな なんか真っ暗なコマンドラインでくだらん文字が出てくるだけのプログラムなんていらんわ
>>890 それC#やなくてWinFormsや
個人的には金になるならないでいくとC#は個人レベルでは辛いものがある気はする。
一番金になる言語って何よ
COBOLかな。
HTML
今は多分真面目な話HTMLだろうな。 C#はサーバサイドで動く環境を個人で準備するのが大変だと思うぜ。 Azure がどうなるか次第ってかんじ。
BinaryFormatterがList<T>をデシリアライズする時、どんな動作をするか解説してるところはないでしょうか? デシリアライズがシリアライズの5倍くらい時間が掛かってるので、インスタンス復元時に何か要らんことしてるんじゃないかと・・・
つソース
うん。ソースレベルでデバッグして、フレームワークの中を覗いてみればいい。
899 :
デフォルトの名無しさん :2010/02/04(木) 00:50:00
優勝賞金500万円
http://www.jaist.ac.jp/ICGA-events-2010/olympiad/ 1989年にロンドンで第1回目のコンピュータオリンピアードが開催されました。
毎年開催される本イベントでは,コンピュータゲームプレイヤー同士が競技し,世界最高位を決定します。
これまでの優勝者には,Neurogammon(バックギャモン, 1989年), Chinook (チェッカー, 1989年および1990年) そして Tacos(将棋, 2005年, 2006年, 2008年, 2009年)などがあります。
コンピュータオリンピアードは国際コンピュータゲーム協会(ICGA)が主催して実施されています。
競技部門には,アマゾン,バックギャモン,ブリッジ,コンピュータプール,六目並べ,象棋,ドッツアンドボックス,国際ドローツ,囲碁,9路盤囲碁,ヘックス,ハバナ,ラインズオブアクション,
将棋,スラカルタなどがあります。
この他のゲームもコンピュータによる競技会を開催する可能性があります。主催者までコンタクトしてください。
2010年に第15回目となるコンピュータオリンピアードは金沢市内で開催されます。
ICGAとJAISTとの共同イベントとして9月25日から10月2日にかけて金沢市内で開催されます。
各競技の日程は後日決定します。
参加申し込みなどの詳細も後日お知らせ致します。
NPOIって、xlsx 形式を読めないですよね。 今のおいら的には xls に変換すりゃ事足りるんだけど 素で xlsx を読めるようなライブラリってないですか? 条件としては、ターゲットマシンに Office が入ってなくても使える事。 ファイルを生成したりはしないです。読めればおk。 オリジナルの POI の jar どもを全部 ikvm で dll に変換しようとしたんだけど、挫折・・ XSSF〜クラス群に限ってうまいこと変換できない・・・ # 無いならば・・xlsx って xml を zip で圧縮しただけですよね。暇な時に自分で作ってみようかなあ。
オヒスも入れずにエクセルファイルを読みたいって そりゃマイクロソフトが許さなくね? 多分無理に100オプーナ
つソースカツ丼
ファイルを作成せずにStreamを作成し文字列を書き込みたいのですがどうしたらいいんでしょうか? TextWriteとかを試そうとするとpathを指定するかSystem.IO.Streamを指定しろと言われます。 抽象クラスだからnewできないよって言われます・・・。
StringStream
908 :
906 :2010/02/04(木) 21:19:36
すまんStringWriterやStringReaderとごっちゃになってた Encodingでバイト配列に変換してMemoryStreamに入れる
>>907 >>908 おおう・・・ありがとうございます
StringStreamで一生懸命ぐぐってもMSDNを見てもC++しか見つからなくって
てんぱってました・・・orz
ゆとり語 てんぱってました
次スレは重複スレの使いまわしでおk?
どれのことだよ
914 :
デフォルトの名無しさん :2010/02/05(金) 01:19:11
あと70スレほど使ってから考えることだな ふらっとと違ってこっちは進行遅めだし
916 :
デフォルトの名無しさん :2010/02/05(金) 01:20:59
ファイル操作で指定行を読み込むメソッドがあったら教えてください でーびーとかえっくすえむえるとかはよくわからないです
ありません
あります
重複多すぎでワロタ Go Go !
XMLWriteを使ってXMLを書き出しているのですが たとえば <hoge> <huge>hage</huge> </hoge> とあった場合に <hoge> <huge>hage</huge> <huga>haga</huga> </hoge> としたい場合はどうしたらいいんでしょうか? 指定行まで読み込んでから追記してみたらだめでした・・・。
全部読み込んで1から書きこめば?
XMLDocument.Save()
925 :
デフォルトの名無しさん :2010/02/07(日) 00:59:11
なぜか放置されているのでage
C#からC(DLL)の関数を呼び出し、さらにその関数の中で、 引数で渡されているC#のメソッドをコールバックとして呼び出したいです。 ソースを以下に示します。C側(DLL)の関数は呼びだすことができ、 その中からC#側のShowMessageも呼べてます。 しかしsbには"TESTTEST"のうち、1文字入っていません。 どうすれば文字列全体を引数として渡せますか?
【C# 側】 // ユーザが呼び出すメソッド(開始) private void load_button_Click(object sender, EventArgs e) { ....// DLL内メソッド呼び出し ....bool a = TgkMM.TgkCore.TgkCoreInit(ShowMessage); } // DLL内から呼ばれるコールバックメソッド static void ShowMessage(string sb) { ....MessageBox.Show(sb); } ---- // DLL呼出用定義 namespace TgkMM { ....public class TgkCore ....{ ........public delegate void CallBackFunction(string msg); . ........[DllImport("TgkCore.dll")] ........public extern static bool TgkCoreInit(CallBackFunction cb); ....} }
928 :
質問です :2010/02/07(日) 14:47:54
【C 側(DLL)】 bool __stdcall TgkCoreInit(CALLBACKFUNCTION call_back) { ....call_back(L"TESTTEST"); . ....return result; } 以上です、よろしくお願いします。
929 :
デフォルトの名無しさん :2010/02/07(日) 14:54:44
unicodeでTって0x0050だけどメモリ上はビックエンディアンだっけ? リトルエンディアンだっけ?
間違えた Tは0x0054
16進ダンプ結果 元の文字 T Shift-JIS 54 EUC-JP 54 ISO-2022-JP 54 UTF-8 54 UTF-16LE FF FE 54 00 UTF-16BE FE FF 00 54 C#のデフォルトの内部エンコードってなんだっけ?
932 :
デフォルトの名無しさん :2010/02/07(日) 15:15:49
[DllImport("TgkCore.dll"), CharSet=CharSet.Ansi] でデリゲートの文字変数も変換されると思う。
DLLがL""のUnicode文字返してるんだからCharSet.Unicodeにしないと駄目 CALLBACKFUNCTIONの定義はどうなってることやら
あ、delegateの方のUnmanagedFunctionPointer属性に付ける>CharSet
>>926-
>>928 の者です、沢山ご回答ありがとうございます。
[DllImport("TgCore.dll", CharSet=CharSet.Unicode)]
をつけてみました、やっぱりダメでした。1文字しか送られません。
C#側で、
[UnmanagedFunctionPointer(CallingConvention.StdCall)]
public delegate void CallBackFunction(string msg);
としてみました。
どういう意味なのかよくわからないのですが、何も変わりませんでした。
CALLBACKFUNCTIONの定義は以下のようになっています。
typedef void (*CALLBACKFUNCTION)(const WCHAR* name);
いろいろ厄介なのでもう諦めようかと・・・。
unicodeで送るなって 受け側が多分unicodeに対応してないからおかしくなってるんだから
C#呼び出し元->C++DLL->C#のコールバック対応する箇所 unicode->S-JIS->unicode となってるか何かでおかしくなってるんだよ
unicode->S-JIS この間は上ででてる [DllImport("TgkCore.dll"), CharSet=CharSet.Ansi] で対応して S-JIS->unicode これもAnsi?で受けないと
> C#側で、 > [UnmanagedFunctionPointer(CallingConvention.StdCall)] > public delegate void CallBackFunction(string msg); CharSetつってるじゃんかー
>>940 文字コードについていわれてるのにさっぱり理解できてないよね
ふと疑問に思ったんだけどC/C++が確保した長さ情報もろくにわからないエリアを c#にコールバックで渡して大丈夫なのか?
>>942 stringで受け取るなら\0前までをstringに変換してくれる
マーシャラさんの有り難みを噛みしめろー
>>936 CALLBACKFUNCTIONの定義に__stdcallが付いていないのに、
CallBackFunctionの定義でStdCallを指定しているのはおかしい。
Cで呼出規約無指定の場合はCallingConvention.Cdecl。
若干、簡略化した上で自分でも試したが、これでうまくいった(TESTTESTの出力に成功した)ぞ。
// C(といよりboolがあるためC++と判断)
// cl test.cpp /Fet.dll /link /DLL
#include <windows.h>
typedef void (*CALLBACKFUNCTION)(const WCHAR* name);
extern "C" bool __declspec(dllexport) __stdcall TgkCoreInit(CALLBACKFUNCTION call_back)
{
call_back(L"TESTTEST"); return true;
}
// csc test.cs
using System;
using System.Runtime.InteropServices;
class c
{
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet=CharSet.Unicode)]
public delegate void CallBackFunction(string msg);
[DllImport("t.dll", EntryPoint="_TgkCoreInit@4")] // EntryPointは書かずにうくいっているなら不要
public extern static bool TgkCoreInit(CallBackFunction cb);
static void Main()
{
TgkCoreInit(ShowMessage);
}
static void ShowMessage(string sb)
{
Console.WriteLine(sb);
}
}
945 :
デフォルトの名無しさん :2010/02/07(日) 18:40:37
>>926-928 のものです。
>>937 様の仰る通り、送り側は"L"をつけないで "TESTTEST" で送ってみたら
うまく行きました!日本語もうまく行きます。
C++→C#に送る際に、S-JIS→Unicode(string)に変換してくれてるんですね。
みなさんありがとうございます。
リッチテキストボックスで100メガ近くあるデータを扱いたいのだが、データだけはこちらで管理して、残りはお任せということはできないの? くぐったんだが、方法がわからん…
なんでそんな馬鹿げた仕様になったんだ・・・
>>948 EmEditorに対抗するため。
あちらは100メガ近くあるテキストでもまともに扱えるらしい。
もうさー馬鹿は日曜大工作るだけにしとけよ。家を建てようとするんじゃなくて。
>>949 めんどくさいから一行ずつデータ保持しておけよ^;^
性能の良いエディットコントロールはそれだけで売り物になるってことでFA
自前で描画しないとなー
マジで軽くて大容量も使えるエディタとなるとC#の仕事じゃないだろ。
VS2010のテキストエディタはWPFだよ 軽くはないけどそんなに遅くもない
糞重いせいでリリースを延期しているのだが
別にWPFじゃなくても根本的に描画を書き直したりしたらそりゃチューニングに時間かかるだろ
どう屁理屈こねようと糞重いことには変わらない現実
ロースペック自慢は他でやってくれ
熟成10年
何かの処理結果を ArrayList に保持する場合 処理するたびに new して代入するのと 最初に一回だけ new しておいて Clear() してから結果を代入するのと どちらが望ましいんでしょうか? 結果の件数は数十万件になることもあります
clearして代入したらArrayListには同じものしか 入らないジャン
どんなの作ろうとしてるんだ なんかの処理っていうのは別メソッドで実装してるんだよな? Clearする必要あるの?戻り値を保持じゃなくてメソッド中で大量データを処理したいの? つーか何を望んでるの?パフォーマンス?
964 :
961 :2010/02/09(火) 10:06:02
>>962-963 済みません 説明が不十分でした
処理メソッドは処理の度に new した ArrayList に結果を設定して返し
主メソッドはいくつかの処理メソッドが返却したリストをマージ・ソートして保持します
例えば今20万件保持しているとして、次の処理で30万件返却されたとしますと
主メソッドで都度 new する場合、前の20万件のデータは GC されるまで
メモリを圧迫するのではと気になります。
Clear() すればメモリの無駄は少なくなると考えましたが、よく考えたらこれも
結局は GC 頼みになって同じなのかも・・・ Clear() の処理もコストが掛かることですし
毎回 new で問題ないですかね?
>>964 の文章を理解する気力もなくなってしまった。
これが老いるというやつなのか・・・とほほ
>>965 俺も(ヽ´ω`)
五回読見返したけど、ギブアップ。
親のListをnew?子のListをnew? 親子とも最初の一度だけでいいと思うが… ArrayListなんだし追加していくだけでいいんじゃない? 親←NULL 子←NULL 子呼び出し 子←南下1 子終了 親←親+子 (親←南下1) 子呼び出し 子←南下2 子終了 親←親+子 (親==南下1南下2)
素でボケてるか 親←NULL 子呼び出し 子←NULL 子←南下1 子終了 親←親+子 (親==南下1) 子呼び出し 子←NULL 子←南下2 子終了 親←親+子 (親==南下1南下2)
Clearしても.Capacityは変わらないだろうし、 .Capacityを減らしても内部のバッファを小さいのに切り替えるだけで メモリの回収は結局GCなんじゃないかと思う。
親ArrayList:子で処理したArrayListをまとめる 子ArrayList:100k超のデータ数を処理する? 子のほうは保持し続ける処理がない限り処理が終わったら勝手に消える 親をnewするのは意味不明 よって何もするな
できるかできないかは別にして、数十万のオブジェクトを作成してArrayListにいれるっていうのは、このクラスの守備範囲を離れている。
数十万件を一気にメモリに載せる必要があんのか、と問いたい。
DB物故抜きしたいんじゃないの? アホみたいに時間かかると思うけど
気になりますじゃなくて、調べれば良いじゃないか。 両方試して。 俺らには何万件のデータがどんな容量か分からんのだよ。
>例えば今20万件保持しているとして、次の処理で30万件返却されたとしますと >主メソッドで都度 new する場合、前の20万件のデータは GC されるまで >メモリを圧迫するのではと気になります この部分が怖いんだが 親で保持してたListを毎回破棄するのか 何の意味があるんだかわからん 自分でArrayListとかマージするとかって書いてるのに…
保持と一旦受けでしょ。
tempなんて必要か?
しらんがなw
>>964 >今20万件保持している
親の保持List
>次の処理で30万件返却
子の返却値(=親の一時List?)
>主メソッドで都度 new する
親の一時List
>前の20万件のデータは GC されるまで
>メモリを圧迫するのではと気になります。
親の保持Listに突っ込んだ後の親の一時List
子の返却時点で上書きされないか?
add使って追加してるだけってオチ…
データベースを使うべき課題だな。
一つ言えることは、このスレはパフォーマンスに関しては結構あてにならないから 実測してみた方が良いと思うよ。
982 :
961 :2010/02/09(火) 11:56:54
私の説明と能力の不足のせいで、皆様に御迷惑をお掛けしました。
申し訳ありませんでした。
真意をお伝えできなかったので混乱してしまったと思いますが
要点は
>>969 ,971,974であると理解しました。
もうちょっといろいろやってみます。
>>981 今回に限らず「自分で測定しろよ」ってスタンスのレスがほとんどだったと思うが…
ふらっとは立て直されてるし乗っ取りにもならないな
>>1-5 の内容を張ってくるか。次は実質57でいいんだよね?
流石に1が違うのは混乱しないか
いや〜、みんな1見ないでC++の質問してくるくらいだから気がつかないよ。
javaでFileWriterクラスのwrite(int)メソッドで書き込んだファイルをC#でそのまま開けるようなメソッドはあるでしょうか? javaで作ったファイルをバイナリエディタで見てみると、int型で値4232を書き込んだ所がE1 82 88 E1となっていて、 C#でBinaryReaderのReadInt32()メソッドで読み込むと-511147295になってしまう、といった次第で困ってます
public void write(int c) 単一の文字を書き込みます。 文字として書き込んでるらしいけど本当にそれでいいの?
>>992 javaの方で正しく書き込めたらまたおいで
995 :
992 :2010/02/09(火) 21:10:46
>994 今調べたら少し勘違いしていたようですが、javaの方では入出力は問題なく行えてます。 int型の下位16ビットだけを記録しているようで、上位16ビットを使用していなかったので。 同じ変換を行うメソッドはC#には無いんでしょうか?
Javaはしらんけど int型で値4232を書き込んだ所がE1 82 88 E1 あまりまじめに調べる気もないけど16bitだけ書いてるにしても連想ができない 8288だけを数字に直しても4232とは程遠いし
997 :
992 :2010/02/09(火) 21:20:38
やっぱり一般的な変換が行われてるわけではないんですね Javaの方のファイル作成部分を見直します 失礼しました
だから引数の型はintだけど意味的にはcharだってば>write(int)
999 :
デフォルトの名無しさん :2010/02/09(火) 21:24:54
Java屋じゃないのでJavaが独自にやってるフォーマットの読み書きできますか といわれてもわかるわけないし 第一その16進数のエンディアンは何とか細かい情報わからねーし
ちゃんと計算してないけど、おそらくU+1088(4232)はUTF-8でE1 82 88
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。