このスレッドは 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
2 :
デフォルトの名無しさん :2006/12/16(土) 12:41:43
2Get
( ⌒ ) ポッポー l | / ⊂(#・∀・) おつおつうるせーんだよ!! / ノ∪ し―-J |l| | 人ペシッ!! (_) )(__)(_ ⌒) (⌒ ⌒Y⌒
>>12 乙
フォームの背景だけを半透明にしてその上に文字をクッキリ表示させたいと思い、
フォームのOpacitを50%にし、そのフォームにLabelを配置したのですが
Labelの文字まで半透明になってしまいます。
何か良い解決方法はないでしょうか?
('A`)誰かがいつか止めなきゃならんのよ…
Explorer のようなファイルビュアーを練習で作ってます。 ファイルを開く際には System.Diagnostics.Process#Start を UseShellExecute = true で使おうと考えたのですが、 Start に若干時間がかかるようなので、ThreadPool を使って非同期実行を……と考えたところ、 ThreadPool のような MTAThread からでは Start が使えないってことが分かりました。 そのため、現在は STAThread から Start するように書いてあるんですけど、 単発の Thread を立て続けに作ることに微妙に抵抗あるんですが、何か代替案はありますか? ……というより、もしかして Start 呼び出しを非同期で実行するオプションって用意されてますか?
>>13 Opacityを使わないことです。
半透明描画は自前で書くしかありません。
>>16 直接APIのShellExecuteを呼んだら早くなったりしない?
C#をビジュアルC#で学ぼうと考えているものです。 プログラミングについてはスーパー初心者です(昔に大学のコンピュータ授業でVisual Basicをいじった程度)。 おすすめの入門書がございましたら教えていただけないでしょうか。 日経ソフトウェアの『ずばりわかる!VB&C#』は他の言語もカバーしているので、C#だけが 目的なら避けたほうが良いのでしょうか・・・
21 :
20 :2006/12/17(日) 04:14:43
勢いで質問してしまいました。過去レスもあたってみます。
他スレにて質問したのですが誰も分からなかったので このスレにて質問させてください。 ブックマークのショートカットに関する質問です。 コードエディタ内部にて行移動をする際に使用する ブックマークがありますが、 VS2003では @ Ctrl + K + K マーク A Ctrl + K + P 上に移動 B Ctrl + K + N 下に移動 C Ctrl + K + L マークの全削除 が使用出来ていたのですが、VS2005になってから @Bのみしか使えないのですが、ACのコマンドは変更 (もしくは削除)になってしまったのでしょうか?
オプション→キーボードで、 コマンドを「ブックマーク」で検索しろ
24 :
デフォルトの名無しさん :2006/12/17(日) 15:38:06
VC#2005ExpressEditionを使っています。 よろしかったら教えてください。 「参照の追加」でdllを登録すると、HRESULT型のメソッドは void型になります。 それらのvoid型のメソッドを使用したとき、メソッドがエラーをしても void型のためエラーを返しません。 COM.ExceptionでHRESULTの値を取得できるとのことですが、 できませんでした。どうやらエラーとなるときのHRESULTの値が 「Com.Exceptionがエラーと判定する値」とはならないためとのことです。 こうなったら、どうしてもHRESULTの値を取得する必要があると思うの ですが、どうすればいいでしょうか?もしくはHRESULTの値を取得 できないにしても、上記の場合でエラーを返すようにはできない でしょうか?
[PreserveSig]
26 :
22 :2006/12/17(日) 16:40:28
>>23 ツール⇒オプションでしょうか?
尚、ツール⇒オプションと指定してみたところ
キボードに該当する物はありませんでした。
え?StartってMTAから使えないの?
28 :
デフォルトの名無しさん :2006/12/17(日) 17:50:32
ヘルプにショートカットの説明出るじゃん… Edit.ToggleBookmark Ctrl + K、Ctrl + K 現在の行のブックマークを設定または削除します。 これじゃねえの?
29 :
22 :2006/12/17(日) 18:32:25
>>28 Ctrl + K 、 Ctrl + K
でブックマークの追加(削除)が出来る事は確認済みなのですあg
肝心の既に作成したブックマーク間の移動を行うショートカットが
VS2003では出来ていたのに、VS2005では出来ないのです。
なぜVS2003で出来ていたコマンドがVS2005では使えなくなってしまった
のでしょうか?
>>29 そういうことはMSFTの中の人に訊いてこいよ。
ツール→オプション→環境→キーボードってあるじゃん… Ctrl+B,N Ctrl+B,P これのことか?
32 :
22 :2006/12/17(日) 22:44:07
>>31 出来ました!!!
マジでありがとうございます!!!!
>>30 次回からそうします。
MSはキーボードショートカットたまに変えるからなあ OSの終了ショートカットも変えやがったしな。
35 :
22 :2006/12/17(日) 23:16:23
>>33 自分で編集することも出来るのですね。
調べてみます。
尚、Ctrl + L (VS203ではブックマークの全削除)
こちらのショートカットについてはご存知でしょうか?
37 :
22 :2006/12/17(日) 23:26:45
>>36 調べましてブックマーク削除方法も分かりました。
どうもありがとうございました^^;
38 :
デフォルトの名無しさん :2006/12/18(月) 15:39:12
DataAdapterでDatasetを取得する際に進行状況を確認することはできますか? プログレスバーを作りたく思っているのですが...。
ASP.NETでC#で使っているのですが フラグ処理をするのに if( A&B ) { } とすると〜〜型をBoolに暗黙的に変換できません とごねられます。 お手軽に if( A&B ) で文句を言われないようにする 方法はありませんでしょうか?
if((A&B)!=0)じゃだめなの?
>>41 その != 0 を書きたくないのです・・・
boolに変換する暗黙の型変換も試してみましたが
フラグが出てくるたびに定義するのもあほらしく・・・
素直に!=0でやってみます。
static bool IsTrue(int frag) { return flag != 0; } if (IsTrue(A&B)) とか
なんで書きたくないの?
C#使ったことない通りすがりなんだけど if(!!(A&B)) ってのは駄目?
よくわからんけど intと暗黙で変換とれて 各種ビット演算とtrueとfalseがオーバーライドしてある 構造体でも作ればいいんじゃねーの? だめか?
>>47 ifの中ではboolに暗黙変換しようとするから、
if ((IntBool)(A&B)) { }
みたいにしないといかんのじゃね?
お前ら本当にC#使いなのか?
if( A&B ) { } A、Bの型は結局何なんだ? モデリング失敗したのか。
C#初心者へ if( )の中はちゃんとboolにしろよ。 if-else (C# リファレンス) if ステートメントは、Boolean 型の式の値に基づいて、実行するステートメントを選択します。
お前らのソースを後輩がメンテナンスするとき見て笑うぞ。
>>52 このレベルに後輩いないだろwww
あっ!化石が必死に食いつこうとしてんのかwww
if (A==B) と if (A=B) の間違いでのバグ混入を避けるために明確にboolとintは分けてある。
Cでもコンパイル時の最適化で(A&B) と (A&B) != 0の違いはなくなるので後者で書くことも多いよ。
あえてやるなら
>>47 のいってる方法だが、激しくめんどくさい。
struct boolbits {
public boolbits(int i) { bits = i; }
public int bits;
public static bool operator true(boolbits b) { return b.bits != 0; }
public static bool operator false(boolbits b) { return b.bits == 0; }
public static boolbits operator&(boolbits b1, boolbits b2) { b1.bits &= b2.bits; return b1;}
public static boolbits operator|(boolbits b1, boolbits b2) { b1.bits |= b2.bits; return b1;}
public static boolbits operator~(boolbits b) { b.bits = ~(b.bits); return b; }
// 他にもキャスト演算子とかetc実装汁
}
>>54 も化石だな。お疲れ様。
if文の論理判定がCの負の遺産から解き放たれようとしているのに…
フラグがboolじゃ無い時点でおかしいと思わないの???
プロパティでもなんでも使え!
>if;(A==B) と if(A=B) の間違いでのバグ混入を避けるために >明確にboolとintは分けてある。 違うんじゃない? 今までCのインチキ論理型から脱却するためだろ。
あえて言うとフラグ判定で、 if((A&B)!=0)みたいに書かせないためにBoolになってるんだと思う。 直感的に分かりくいところはバグの温床だからね。
フラグの種類にも夜とおもふ。
むしろifを使わない delegate void Statement(); static void If(int expression, Statement onTrue, Statement onFalse){ if (expression != 0) onTrue(); else onFalse(); } If(A&B, delegate(){...}, delegate(){...});
[Flags]付きenumとかはどーなるんだ やっぱ現代では行き場の無い肩身の狭い子なのか
やっぱJAVAスレのほうが活気があるな。 なんとかこっちも盛り上がらんかなあ。
でもどうせ[Flags]付きenumなんかあるんだったら ビットの上がり下がりを判定する汎用メソッドが欲しかった。 intとbool分けたんだったらさ。 if( ( enumHage & EnumHAGE.HOGE ) == EnumHAGE.HOGE ) {... とかって美しくない…… if( enumHage.NanikaMethod( EnumHAGE.HOGE ) ) {... みたいなかんじで
have演算子(何だそりゃ)のほうが面白いと思うw if( enumHage have EnumHAGE.HOGE ) {...
C#3.0のextension methodsでできるんじゃないの?
化石ってまだ腐乱死体くらいのつもりだったのだが・・・
[Flags]付きenumでも != 0を使うことになりまする。
FlagsAttributeはC#ではToString以外に何か影響することはあるのかいな。
>>54 に追加
public static explicit operator int(boolbits b) { return b.bits; }
public static implicit operator boolbits(int i) { return new boolbits(i); }
intからの変換は暗黙で、逆はバグ呼びそうなので明示キャストにしてみました。
msdnのFlagsAttribute クラスの説明で >場合によっては、フラグを結合するために使用されるビットごとの OR 演算は、 >単純なタスクには必要のない高度な概念と見なされます。 微妙だな。 なんなんだろう。 でも元の話ってこういうパターンなのかな。
if( EnumHAGE.HOGE in enumHage ) {... でどうだあああ
もうif(フラグの配列.Contains(Hage.Hoge))でいいやん
まだやってたんすか… 先輩… ビット演算&の結果がboolになることが気持ち悪いと思うようにならないとダメっすよ。
& &&
>>66 迷惑だと思うよ。
extension methods自体最悪だという噂が。
>>68 なんかなぁ。
設定とかで、一つの項目にbool割り当てると罪悪感かんじるんだよなぁ
byteで8個持ったほうが気持ちいいんだよぉ
そいでREG_BINARYで保存。これ。
びんぼうしょう。
今byteサイズとかmethod呼び出しのパフォーマンスとか 抜かしてくる奴とやってるからマジムかつくわ・・・ Cに篭っててください、ほんとお願いします。
それにしても[Flags]enumもつかいにくいよな。 ビット演算つかわなきゃならんなんて旧世代のにおいがする。 delegateみたいに、+とか-で結合できるような仕組みを用意してくれればよかったのに。
>>78 逆に効きたいんだけど、状態をフラグで定義しないで
状態全部Boolにしたりするの?
そうだよ。それがC#流。 別にメモリや速度の効率を求めてC#使ってるわけじゃないんだろ?
バカが沸いてるな
いまだにフラグに数値使ってるやつとかいるわけ?
大量にインスタンス生成するならまだしも普通はフラグ使わんな。
使うよ
P/Invokeするときくらいだろ?
ちょっと疑問に思ったのですが、getだけのプロパティとメソッドってなにか違いはありますか?
機能の上ではほとんど違いはない。 目的が値の取得か処理かで使い分ければいい。
引数必要なければあまり変わらない。
×バカが沸いてるな ○バカが湧いてるな
public int DoSomething[int arg] { get{ Console.Write(arg); return 0; }; } DoSomething[774];
>>87 プロパティのgetアクセサはコンパイルでインライン展開されるらしい
以前クラスライブラリでTextRendererのところを見てたらフラグを使うメソッドがあった。 こういう設計してるとこもあるんだなぁと印象的だった。 こういうのってWin32APIをラップでもしてるの?
Bool値でもフラグなんですけど。。。
質問させてください。 int とInt16、Int32、Int64ってどんなときに使い分ければいいのですか? 違いがよく分からないので今はintを使ってるのですが・・・
>>96 必要がある時に使えばいいんですよ
まだあなたには必要が無いんです
>>96 intはInt32の別名。
簡単に述べると格納できる数値の最大値がちがう。
99 :
96 :2006/12/19(火) 22:44:09
なるほど単なる別名だったんですね、てことはInt64はlongの別名ってことですね。 ありがとうございます
C/C++経験はあって、XNAのためにC#を勉強中です。 メモリの開放がいまいちよくわからないので教えてください。 class Foo; があったとして、 public Foo hogehoge; と書けば、Foo型のポインタができますよね。 そこで、実体を作るために、newします。 hogehoge = new Foo(); hogehogeにメモリが割り当てられます。 このとき、割り当てられたメモリを破棄し、新しくメモリを確保したいとします。 その場合、 ・hogehoge = new Foo(); を行えば、元々hogehogeが持ってたメモリの参照回数がゼロになり、開放扱いになるのでしょうか? もしくは、 if ( hogehoge != null ) hogehoge.Dispose(); みたいな処理がいるのでしょうか? お願い致します。
>>101 C#ではアンセーフな文脈以外ではポインタという言葉は使わない。
メモリはガーベジコレクタが管理してるから、プログラマが明示的に開放することはできない。
スコープから外れたオブジェクトは勝手に消されていく。
>>101 ほっとけばいつかはメモリが開放される
開放されるタイミングを知ることはできないし知る必要もない
>>101 IDisposableなオブジェクトはusingとか使ってちゃんとDisposeしといてね
他は適当に放っておけばそのうち開放されてる
105 :
101 :2006/12/20(水) 01:10:14
ありがとうございます。 class Foo の場合メモリ廃棄は自動、 class Foo : IDisposableの場合は、 hogehoge.Dispose()を呼ぶ ということですね。 早速やってみます・・・
一般にIDisposable.Disposeで開放されるのはファイルポインタとかのアンマネージドリソースね。 オブジェクト自体は他と同じようにガベッジコレクションで消される。
>>105 ファイルとかのシステムリソースは、そのうち開放される、じゃ困るから。
要らなくなったらDispose()を呼んで明示的に開放する。
>>105 注意しなきゃいけないのは、IDisposable であってもメモリ破棄は自動であることと、
Dispose() を呼ばなくても、大抵の場合(いつかは)アンマネージドリソースが破棄される(であろう)ということ。
他の人の回答と合わせて読んでくれ。
>>101 ちなみに、.NET Framework のガベコレは参照カウンタじゃないよ。
ここは個々のレスはワンポイントアドバイスのような細切れだが、 あわせて読むとどこぞの解説サイトよりずっとよくわかるな。 いつもありがたく勉強させてもらってます。
111 :
101 :2006/12/20(水) 02:26:21
ありがとうございます。 .Dispose()はアンマネージドなリソースの開放。 クラス領域は自動開放っていうことですね。 まとめ? class First : IDisposable class Second { }
112 :
101 :2006/12/20(水) 02:26:51
やべ、間違えて送信してしまった・・・
113 :
101 :2006/12/20(水) 02:27:37
まとめ? class First : IDisposable class Second { }
115 :
101 :2006/12/20(水) 02:41:04
なんか、キーバインドがぶっ壊れてるw まとめ? ---- 要点 ---- ・C#ではメモリの開放は自動(マネージド) ・Disposeはアンマネージド部分の開放用 ---- 使用例 ---- ・class First : IDisposable を書く場合。(アンマネージドリソースを直接使用する場合) public void Dispose()を用意する。その中でアンマネージドリソースを開放。 ・class Second : First を書く場合。(アンマネージドリソースを継承元のみで使用する場合) そのままでOK。(Dispose()が継承されるので、それを呼び出してもらう) ・ class Third { First Foo; Third() { Foo = new First(); } ~Third() { Foo.Dispose(); } } メンバとして、IDisposableクラスを利用したい場合、 自分が、IDisposableである必要はない(Disposeも用意しない。) デストラクタに書いておけば、Thirdオブジェクト終了時に、同時にDispose()される。 こんな感じでしょうか・・・・
IDisposable を実装する場合では protected virtual void Dispose(bool disposing) も用意するのが定石
118 :
101 :2006/12/20(水) 02:54:49
ありがとうございます。 朝までがんばるぞー!
>>115 FooをファイナライザでDisposeしてちゃだめでしょ。
ThirdもIDisposableを実装して、IDisposable.DisposeでFoo.Dispose()を呼ばないと。
ぶっちゃけC#の利点って何ですか?なんか吐き出したプログラムから ソース辿られちゃうみたいだし、VBなんかに比べた時の優位性がよくわかりません VBやろうかC#やろうか迷ってるんで教えてください
あいのこの VB.NET にしとけば
a
クマー
C#m7(b5)
>>121 まあ、後から作られてる分きれいなくらい?
基本的に VB.NET とできること一緒だし。
ぶっちゃけVB.NETの利点って何ですか?なんか吐き出したプログラムから ソース辿られちゃうみたいだし、C#なんかに比べた時の優位性がよくわかりません C#やろうかVB.NETやろうか迷ってるんで教えてください
やはり今日日VBというとVB.NETのことなのか?
この手の議論はこっちで。 つ【VB.NET】VS2005 選ぶならどっち?【C♯】
>>121 >>128 VB.NETにしてもソースを辿られるのはC#と同じ。
.NetやるならC#がベスト。
System.Diagnostics.Process.Start()使って メディアプレイヤー開いてファイルパス入れようとすると スペースで途切れちゃって駄目なんだけど、 これ何とかする方法ないすかね? たとえばデスクトップのmp3開こうとすると C:\Documentsで止まっちゃって読めない。
@"""C:\Documents and Settings\hoge\デスクトップ\hage.mp3""";
134 :
132 :2006/12/20(水) 19:38:52
txtファイルをexeファイルに埋め込みたいのですが、 やり方がいまいち分かりません。 C# リソース 埋め込み でもググって見ました。 やり方もしくは参考になるサイトがありましたら教えてください
>>135 釣ですか。
同じキーワードでググって見たけど…
なんでtxtファイルを埋め込みたいの? static stringとか,設定ファイルじゃダメなの?
C# text リソース 埋め込み
機械はすばらしいいいいい!
How to embed and access resources by using Visual C# Visual C#を使用すると、どのように埋め込んで、アクセス リソースには どこが「には」になるんだろうな
>このため、有効な埋め込まれたリソースとしてアプリケーションの期間の間、 >変更されないファイルを含みますのみ。
どこの会社のソフトを使ってるんだろうな。 MSって機械翻訳の技術もってたっけ?
yahoo Japan翻訳。 Visual C#を用いて資源に埋め込んで、アクセスする方法
こんな自動翻訳なら、やらない方がましな気がする
150 :
デフォルトの名無しさん :2006/12/22(金) 09:50:37
C#でActiveXコントロール作れますか?
タイトルはひどいが本文はそうでもないな。
こんなレベルでも(といっても本文は割りとまともだけど)、 日本語文書がないよりはあった方がいいって意見が多いからやってるみたいよ。 MS の文書は量多すぎて、人手による翻訳は無理みたい。 訳すよりも新しい文書が出てくるペースの方が速い。 まあ、Google への日本語インデックス登録にもなるしね。 日本語検索 → この怪しい機械翻訳ページに到着 → 見れた代物じゃないから原文の英語を読む。 タイトルだけ変なのは、この手の記事見出しって普通と文法違うからね。 述語がないとか冠詞は省略するとか。 「ここは見出しです」って感じのメタデータ持って、 翻訳エンジンに渡すとかしないとまともな翻訳難しいかも。
世界のマイクロソフトがあの程度の技術しか持っていないのはどうなんだって気もするが。 Amikaiでも買収してください。
>>154 > まあ、Google への日本語インデックス登録にもなるしね。
原文と見比べないと意味がわからないことも多いけど、
確かに検索で見つけやすくなる効果はあるね。
なるほどとオモタ。
本文は機械でも,せめてタイトルくらいは人間が確認すればいいのに
>>101 からの流れがいまいちつかみきれないので、質問します。
詳細は、おいおい勉強していこうと思いますが、
勘違いしている点だけでも、指摘して頂ければありがたいです。
【質問】
Dispose()の呼び出しは必須ですか?
【自分の理解】
例えば、Penオブジェクトを使用する場合、
「Dispose()メソッドは出来るだけ呼べ、但し、必須では無い。」
と考えてました。
必須でない理由として、
・Penオブジェクトを保持するクラスであれば、そのクラスの参照が無くなった時点で、
GCが自動解放をする。
・Penオブジェクトを保持するのが、メソッドであれば、メソッドから抜けた段階で、
GCが自動解放する。
ほっといてもGCが「そのうち」解放してくれるんだけど,それがいつになるかはわからない。 だから,メソッドを抜けた時点とも,参照がなくなった時点とも限らない。 普通はそれで問題ないんだけど,Penオブジェクトはアンマネージリソースを 外部に確保してるから,それがメモリを圧迫しててもGCが気づいてくれない。 最悪,ほっといてもファイナライザで解放されるんだけど,基本的にDisposeは必須。
160 :
158 :2006/12/22(金) 14:05:01
>>159 ありがとうございます。
「解放」がいつ行われるか不明
「リソース量」の把握が困難
以上より、「基本的にDisposeは必須。」ということですね。
業務では無いため、結構Disposeを軽視していました。 ^^;)
>>158 の質問は終了ということで
>>154 ま、俺も英語できない方だけど、
なんかのナレッジベースだったか
発狂しそうなほど無茶苦茶な日本語だったよ。
先のサイトは、ましな部類に入るんじゃないかな。
>>160 Penは不具合??が起こる可能性があるからDisposeが必要。
MSDN(Help)に書いてあるよ。
あとはほとんど気にしなくていいと思う。
>>162 ホントだ Thx!
Graphics関係は要注意ぽいですね。
今気づいたんだけど、
Stream系はCloseとDispose(プロテクトメソッドのケースも)の2つがあるんだ。
Closeは必須だと思ってやってたんだけど…
う〜ん、奥がふかい。やっぱ、優先順位あげて勉強します。
ごめん BrushとかもDisposeいるな。 Graphicsはいらないみたい。
C#のGCはあんまり積極的には動いてくれないから、 Disposeできるもんは使い終わったらDisposeしとけ。 usingブロックを使うと楽。
そうかなあ。 あんまり気にする必要ないとおもうよ。 usingブロック多用は逆に良くないと思うが。
ならそうすれば
プログラミング .NETFramework中のP484に、 重要: GCがよくできてるから、それに任せた方がいいので、 一般論として、DisposeまたはCloseメソッドの呼び出しを 強制するのは勧めない と書いてありました。 初、中級者は、ヘルプに明記されている場合を除いて、 あまり気にしなくていいというところですかね。
気にしなくていいならIDisposableを実装していないんじゃないの?
cのfree論争みたいだなw
ファイルハンドルのCloseだけはすぐにやってもらわないと困るだろ。
・CGはメモリがきつくなるまでは動かない。 ・IDisposableを実装しているということはアンマネージリソースを抱えている可能性が高い。 ・なので、Disposeできるものは使い終わったら速やかにDisposeするべき。 ・例外でDisposeの呼び出しがスキップされてしまうのを防げるので使える場面ではusingを使うとすっきり。
Disposeを実施するメリットがある場合もあるのかと メリット、デメリットは処理内容にもよるし 安全方向に振れば、実装するんじゃない
>>164 自分でDCから作ったGraphicsはちゃんとDisposeしないとDCハンドル溜まっていくよ。
ところで,~MyClass(){this.Dispose(false);}以外の ファイナライザの使い道はあるの?
スレ違いだが レジストリの HKEY_CLASSES_ROOT\.拡張子 の既定の値 →その名前のHKEY_CLASSES_ROOT\直下のキーの既定の値
どれが表示されるか、というのなら QuickTipとかInfoTipとかDetailsで検索
180 :
177 :2006/12/22(金) 23:20:13
例が不適切というか、 おまえの理解力が不適切だ
やっと意味が分かった ソリューションのPropertiesからアセンブリ情報を編集 あるいはAssemblyInfo.csを手書きで編集 どうでもいいけど、ファイルの拡張子は表示した方がいいよ
183 :
デフォルトの名無しさん :2006/12/22(金) 23:42:59
>>177 [assembly: AssemblyDescription("ここに説明")]
184 :
デフォルトの名無しさん :2006/12/22(金) 23:51:12
Form1とForm2があります。 Form1
185 :
184 :2006/12/23(土) 00:02:07
184は間違いです・・・ Form1とForm2があります。 Form1とForm2には↓のようにコントロールを置いてあります。 ずれているかもしれませんが・・ ┌Form1─── ┌Form2─── | | | | |comboBox1 | |textBox1 | | | |button1 | └─────┘ └─────┘ ここで、Form2のbutton1が押されたら、Form2のtextBox1の内容を Form1のcomboBox1に追加したいのですが、 下記のコードでは追加できません。 Form1 f1 = new Form1(); f1.comboBox1.Items.Add(textBox1.Text); どうしたら追加できるでしょうか?お願いします。
186 :
184 :2006/12/23(土) 00:03:46
やはり激しくずれていました・・ 逝ってきますorz
>>185 >Form1 f1 = new Form1();
>f1.comboBox1.Items.Add(textBox1.Text);
このコードで作ってるf1と、実際表示してるForm1のインスタンス(実体)とは
これっぱかりも関係がない。
どこかで、表示してるForm1のインスタンスへの参照を
Form2のインスタンスに渡してやって、それに対して操作すればおけ。
「クラス」と「インスタンス」について学ばれたし。
//Form1.cs public void AddString( string str ) { this.comboBox1.Items.Add( str ); } -------------------------------------------- //Form2.cs public Form1 fom1; // これにForm1へのインスタンスへの参照をどこかで入れる ... this.form1.AddString( this.textBox1.Text ); ...
189 :
184 :2006/12/23(土) 00:24:19
190 :
184 :2006/12/23(土) 03:28:55
戻ってきました。
参考になりそうなページを見つけたのですが、
>>188 さんの作ってくれた
コードと照らし合わせてもどこに何を書けばいいか分からなくて・・
参考にしたのは下記のページです。
http://dobon.net/vb/dotnet/form/accessanotherformdata.html 便宜上Form2と言いましたが実はForm3なのでForm2とForm3を置き換えて
読んで頂けると幸いです。
Form3に書くForm1へのインスタンスへの参照はこれであってますか?
(コピペですが)
public Form1 f1;
//Form1オブジェクトを保持するためのフィールド
private static Form3 _form3Instance;
//Form1オブジェクトを取得、設定するためのプロパティ
public static Form3 Form3Instance
{
get
{
return _form3Instance;
}
set
{
_form3Instance = value;
}
}
191 :
184 :2006/12/23(土) 03:29:51
つづきです で、これがあっているか分かりませんが、呼び出し方が分からなくて・・。 何度か試してもオブジェクト参照がオブジェクトインスタンスに設定されてません って出るので・・ すみませんが、もう少し具体的に教えてほしいです。 お願いします。
192 :
184 :2006/12/23(土) 04:05:00
すみません。事故解決しました。 Form1に Form3 f3 = new Form3(); f3.f1 = this; ←ココを足した ~~~~~~~~~~~~~ f3.Show(); Form3に public Form1 f1; で出来ました。 難しく考えすぎていたみたいです。 ありがとうございました。
最近の宿題はC#なんだろうか・・・いい迷惑だ
ググレば例はいくらでもあるのでそっちにまかせる。 まずはインスタンスについて理解しよう。
すまぬ、最新見てなかった…
>public static Form3 Form3Instance 前もこんな書き方する奴がいたが同一人物ですか? 個人的にはこの書き方は非常に気持ち悪いし、 内容を理解しているのか気になる。
フォームがシングルトンであるなら別に問題ないんじゃね プロパティ名はどうにかしてほしいが。
犯人はDOBON.NET
シングルトン?
ジョン・シングルトン
美しくないのは確か
どちらかと言うとkitanai
初心者の方、あれはシングルトンじゃないですよ。 目的のインスタンス参照をstaticに参照できるようにしただけ。 global変数の復活だ! Gofもシングルトン広めて有罪扱いされてたよね。
所謂パターンじゃなくて単に1個ないっていう意味で使ったんじゃないの? 一応普通の英単語だし。 つか、それなら関数型言語使っとけよ。
なんかやたらと変な脱字が多い。脳が溶けてるのかしらw 1個「しか」ね。
>Form1.Form1Instance.TextBoxText = "こんにちは。"; 身近にこんなコードかいてる奴したら確実にシバク。
VB出身のやつでそういうコード書きたがる奴なら腐るほど
IDEがとりあえず名前を付けてくれるにしても、もっとすごい名前を付けたほうが良いと思う。 AutoGeneratedName1 とかさw
212 :
デフォルトの名無しさん :2006/12/23(土) 20:32:56
>>211 FormFoo
FormBar
FormBaz
FormQux
:
>>213 化石じゃない発想はどういうのよ。
そのまま使っても誰も文句言わないような素敵な名前を付けてくれるとか?
クラス名の後に数字はつけないほうがいいよ。 ideがインスタンスに変な名前付けるから。 Form1 → form11 UserControl1 → UserControl11
>>216 化石って、命名についていってるわけじゃないと思うが
>>218 そうなのか。ぜんぜんわからん。どうやら化石らしいorz
>>217 Form1_ → form1_1
UserControl1_ → UserControl1_1
解決。
221 :
デフォルトの名無しさん :2006/12/23(土) 21:06:20
5種類の仕事と5人の人がいて、5種類の仕事を行うコストが個人で異なる。 この様な場合、誰にどの仕事を行わせることがもっとも低コストで仕事が 行えるか求めるフローチャートを作成しなさい、計算方法は、全ての組み合わせ(順列)を求める。その中から最も低コストとなる仕事の割り当てを得る(腕ずく法;Brute Force Method)。なお、最低コストが複数ある場合は、最後に判明した組み合わせのみを表示すればよい。 人1人2人3人4人5 仕事A10、5、7、12、8 仕事B14、20、15、10、15 仕事C18、30、20、25、22 仕事D35、8、18、20、12 仕事E20、13、8、10、17 初めて、プログラムに触ったので バカです。 できる方、教えてください
>>221 そういうことは友達か先輩に聞け!
もうプログラム板にすら来るな。
不愉快だ!
半年ROMってろカス!!!!
手当たり次第にマルチだし >初めて、プログラムに触ったので バカです。 知らないだけのバカじゃなくて正真正銘池沼だろうな・・・
いいことを教えてやろう。 ここはC#スレで C#はCではありません。
Cすら関係なくね?
多分宿題だろ。 c#で課題は出ないとおもう。 多分CかJAVAあたりのはず。
他人のなりすましかも? この板IDでないし。 俺もどこかに貼ってこようか♪
>>220 レビューで読み上げたら思いっきり馬鹿にされそうだなw
231 :
デフォルトの名無しさん :2006/12/23(土) 23:20:24
C#で作ったライブラリをCOMとして呼び出したいのですが Visual C# 2005 Express Edition で "COM相互運用機能の登録"をチェック、ビルドし、 他のプロジェクトから参照しようとすると 'ClassLibrary'への参照を追加できませんでした。 ActiveXタイプライブラリ'〜〜\ClassLibrary.tlb'が.NETアセンブリからエクスポートされましたが、参照として追加できませんでした。 .NETアセンブリへの参照を追加してください。 と出ます。 いじめですか? どうすれば解決しますか?
いじめです。
最近おなじのをどっかの掲示板で見たな そいつは返答もらってたのに放置してたが
>>231 いじめです。止めてくださいって言えば止めてくれるでしょう
ゲイシにいじめを止めないと自殺するって手紙送るとか
237 :
231 :2006/12/23(土) 23:34:04
もう何度もやめてくれと言いました。 Google先生に相談したけどダメでした。
プロパティー Application アセンブリ情報 アセンブリをCOM参照可能にする で逝けない?
239 :
デフォルトの名無しさん :2006/12/24(日) 00:03:19
>238 "アセンブリをCOM参照可能にする"のチェック、非チェックどちらでもダメでした。
つーかC#で作ったライブラリなら ふつうにCOMじゃなくて.Netとして参照に追加
241 :
231 :2006/12/24(日) 00:21:20
>240 最終的にActiveXコントロールとしてIE上で動かしたいので .NETじゃなくCOMでいきたいのです 仕方ないので、手作業で登録しようとしたのですが Visual C# インストールディレクトリ下に regasm.exe が見当たりません これが何か関係しているでしょうか?
それはシステムディレクトリの方にあるような
,NET のアセンブリを COM 参照はできない。 はい次。
そのライブラリは.NETとして参照して、 本体をCOMとして登録すればいいだけの話だろ
245 :
231 :2006/12/24(日) 00:44:45
>244 そんなことできるんですか! .NET、COMでの開発経験がないので分かりませんでした どのようにすればできますか?
そのライブラリは.NETとして参照して、 本体をCOMとして登録すればいい としか。 そもそも本体はCOMとして登録できてんの? ComRegisterFunctionAttributeとかで自前でやるんだけども
247 :
231 :2006/12/24(日) 00:58:36
>>246 ありがとうございます
もう訳が分からなくなりました
"本体"が何をさしているのか
ComRegisterFunctionAttributeとか
統合環境任せにはできないのですかね。。
勉強して出直してきます・゚・(ノД`)・゚・。。
c#をvisualstudioを使って勉強しています。 テキストボックスはあったんですが、swingにあるようなテキストエリア が見つからなくて、名前を教えて下さい。
>>249 さん、ありがとうございます。
助かりました。
Dictionaryで文字列探す場合は定数でないとヒットしないですか?
正規表現などは使えないよ。
質問です。 インテリセンス上に「使用しないでください」て表示された場合は やっぱり使用しないほうがいいのかな? 皆さんはどうしてます?
こういうやつがプロジェクト内にいると困る
258 :
デフォルトの名無しさん :2006/12/25(月) 01:15:03
Main関数内でフォームを作ったあと、 そのフォーム内のhogeという名前のコントロール (C#だとハンドルとは言わないんですかね?)を取得したいのですが どうしたらよいですか? WinAPIでいうところのGetDlgItem()みたいなやつです。 お願いします。 Form1 form = new Form1(); form.Show(); //CHooクラスのコンストラクタにControlを渡したい CHoo hoo = new CHoo(名前"hoge"のコントロール);
Handleプロパティ
260 :
デフォルトの名無しさん :2006/12/25(月) 01:39:48
>>259 すいません、
メインのフォーム内に配置された
hogeという名前のコントロールのハンドルを取得したいわけですが、
つまりはどう書いたらよいのでしょうか?
CHoo のインスタンスが存在すべきなのはきっとそこじゃないんだよ。
262 :
デフォルトの名無しさん :2006/12/25(月) 01:57:58
ちなみに、ググったところ 「form.controlsでフォーム内のコントロールを全部取得し 名前を一つずつ比較して一致したらそのコントロールを返す」 みたいな関数を作る方法を見つけたのですが、 わざわざそんな事をしないといけないのでしょうか? GetDlgItemみたいにシンプルに一発で名前で取得するようなことは できないのでしょうか?
263 :
デフォルトの名無しさん :2006/12/25(月) 02:00:31
>>261 Main内でインスタンスを使いたいんです。
Form継承してプロパティ作るなり フィールドにhogeのインスタンス持つなり なんなり好きにすれ
DLLファイルからある関数を使う場合、その関数の引数がポインター渡しの場合 C#だと使えないんでしょうか? using System.Runtime.InteropServices; namespace なんだか { class なんたらClass { [DllImport("AAA.dll")] public static extern bool bbb(int *val);←こんな宣言はできない
refとかout
>>266 ありゃ、それで勝手にポインターの変換やってくれるんでつか、へぇ〜
>>258 > CHoo hoo = new CHoo(名前"hoge"のコントロール);
C#では、GetDlgItemみたいなことすら、する必要が無い。
名前がhogeなら、そのまま hoge でアクセス出来る。
例えば、
Form1 form = new Form1();
form.Show();
hoo.Text = "はげ"
そのコードじゃ分からんだろ
つーかC++でもそんなことする必要ないけど?
最近C#をはじめました、、、入門本読んでちょっと面白いなと思ったところで クラスって概念のところがわかりにくく頓挫してます 入門本の説明がイマイチなのか、作例にするプログラムに そんな大層なものが必要ないからわかりにくいのか、概念が掴みにくい 変数を用意して、それを処理するための関数を書いてひとまとめにしたもの? と捉えてるんですが、それならその処理を直接書けばいいわけで、 何で面倒なクラスの宣言が必要なのかがよくわかりません C#に準拠した形でこの辺を平易に解説してる書籍とかないでしょうか?
273 :
デフォルトの名無しさん :2006/12/25(月) 14:01:01
>>268 Form1 form = new Form1();
form.Show();
CHoo hoo = new CHoo(hoge);
と書いたら
エラー CS0103: 名前 'hoge' は現在のコンテキスト内に存在しません。
と怒られました。
釣られませんよw
275 :
デフォルトの名無しさん :2006/12/25(月) 14:14:45
ウィザードが勝手に書いてくれた Form1.Designer.cs内のhogeのアクセス制御を publicにしてみたら、 CHoo hoo = new CHoo(form.hoge); でアクセスできるようになりました。 でもなんかpublicにするのは気持ち悪いです。 要するに、「GetDlgItemみたいなお手軽な命令はC#にはない」 ってことでいいですか?
GetDlgItemのどこがお手軽なのかと小一時間問い詰めたい
外部からhogeに直接アクセスするんじゃなくて、 CHooを返すようなプロパティなりメソッドなりを定義すべきなんじゃないの?
279 :
258 :2006/12/25(月) 14:51:08
getのアクセサ書いたらprivateにしたまま取得できました。 でも取りたいコントロールに全部書くのって面倒ですね。 なんでform.controlsとかいってコントロールの配列は取れるくせに 名前指定して一つ取り出してくれるようなことができないんですかね。 めんどくさいですね。 いまのところ、form.controlsで取り出したコントロール配列から名前で検索して 返してくれる関数を書くのが気持ち的には一番すっきりしてていい感じですが。
Control.Nameなんてデザイナが変数名に使う以上の意味は無いから。
コントロールの名前ってVBじゃあるまいし
282 :
258 :2006/12/25(月) 15:02:28
別に名前が欲しいわけじゃないです。 名前からコントロールを拾いたいんです。 なんかよく分からない的外れな回答ばかり帰ってきてるきがするのですが、 質問の意味、伝わってますか?
だから、名前なんて使わないんだって。
>>282 んだから、外部からコントロールを直接さわってフォームの外に機能を実装するんじゃなくて、
そのフォーム内に機能を実装して機能毎に外に見せろって言ってんだよハゲ。
2.0ならControls["hoge"]で取れる。 ただし名前が間違っているときにコンパイルエラーにならないのでお勧め出来ない。
286 :
258 :2006/12/25(月) 15:16:41
>>283 あの、では何を使うのでしょう??
今回の目的は具体的にいうと、
DirectXを使用するためその初期化の際に
フォームに配置されたピクチャーボックスのハンドルを渡したいんです。
なので、とにかく名前を使わずともそれを渡すことが可能であればいいんですが、
ではどうすれば渡せるのでしょうか?
これまではC++をちょっとかじってたのですが、
C++だと「親のハンドル」と「目的のコントロールのID」が分かってれば
GetDlgItemとかで一発でハンドルを取得して渡せたのですが。
>>284 はい、ですから今回はフォームの中にgetのアクセサを書いたらとりあえず
取得できましたし(これが最も正攻法だとは思いますが)、
更にフォームの外部から
Form.controlsで一覧を取得して.Nameプロパティを検索し一致したら返してくれる関数
を書いて取得することもできました。
でもGetDlgItemみたいな命令が用意されてれば一番簡単でいいじゃないですか。
外から取りに行くのは美しくないって言われてるんだよ。 まともなプログラマはマジックストリングなんて使いたくないし。
>>286 フォームの外から触って欲しいコントロールはプロパティとして公開する。
そうじゃないコントロールはできるだけ外からアクセスできないようにする。
バグの少ないプログラムの基本。
289 :
デフォルトの名無しさん :2006/12/25(月) 15:28:52
今日の結論: GetDlgItem 最強。
290 :
258 :2006/12/25(月) 15:30:45
わかんないなあ。 そんなバラバラにコードを書くなんて気持ち悪くてやってられないと思うんだが。 ピクチャーボックスを含むフォームに初期化関数を定義すりゃいいじゃない。
292 :
デフォルトの名無しさん :2006/12/25(月) 15:32:54
293 :
258 :2006/12/25(月) 15:33:27
294 :
デフォルトの名無しさん :2006/12/25(月) 15:35:53
追加:
>>258 はソースを誰にも見せないプログラムを常にひとりだけで書くべし。
だったら public static class Global { public static Dictionary<object> AllObjects{get;} } みたいにして全部ぶち込んどけ
296 :
258 :2006/12/25(月) 15:48:25
>>291 Main関数内で
DirectX関係のクラスのインスタンスを生成して
そこでずっと使う必要があるのです。
フォームのコードの中でDXのインスタンスを生成してもいいのですが、
そうすると今度はそっちをやり取りしないといけなくなるので
どっちもどっちな気がします。
だからGetDlgItemが最強だと思います。
297 :
258 :2006/12/25(月) 15:50:46
でもやっぱりアクセサを書いて 必要なものだけ触れるようにするのが衛生上は良さそうですね。 ありがとうございました。
298 :
258 :2006/12/25(月) 16:01:25
>>285 すいません、見落としました。
これはいいですね。こういう感じのものを求めていたのですが、
コンパイルは通るものの実行したら落ちました。
バージョンは2.0を使ってるようですが、
どこが悪いかちょっと調べます。
オマエは冥王星へでも行け
ずいぶん昔のクラスなんて無かった時代の話だが、Cでコボラと組んだことがあってさ、全部main関数に書きやがんの。 俺は失禁しそうなくらい驚いたんだが、そいつは便座に座って排便しているような落ち着いた顔で、これが普通だと言い張るわけよ。 それで俺が書き直して見せてやるわけだが、関数なんてどこから呼ばれてるかわかりゃしない、とか尤もらしい抗弁をするのね。 結局、まあ、俺は説得に成功することはなかったんだが、一瞬それを思い出した。
>>296 名前を使えば、フォーム内の都合で名前が変わったらフォームの外まで影響が出るだろ。
だから、例えば(超例えばね) GetTargetControl() とかいう関数を定義して、
DirectXで使うコントロールを返すようにすればいいのだ。
それなら外に影響を与えずにフォーム内を好きに変更できるし、
後から誰かがソースを読んでも意味を把握しやすい。
ていうことを
>>284 で書いたんだよハゲ。
化石のような人と言われるわけだ CからC++に移行していくときに、新しいやり方に行く人と前からのままの人に分かれたな
>>296 それならstaticにしろ
それも良くないけど名前で探すよりはまだマシ
304 :
258 :2006/12/25(月) 16:28:39
>>301 そうですね。一人で作ってるもんで、
どこまでやるかの問題だとは思いますけど勉強になりました。
ところでControls["hoge"]としたら落ちましたが、
Controls[1]みたいにindexで指定したら落ちませんでした。
名前で指定した場合にデバッグをしてみたら
コントロールが帰ってきてないみたいなんですが、
どう見ても名前は間違えてませんし
indexで指定した場合は動くのですから他の部分の間違いでもないと思います。
コード入力時にちゃんとindexで指定する場合と
string keyで指定する場合の説明みたいなのもでてきてるので、
バージョン的にはサポートされてるみたいですが
何か考えられる原因はありますでしょうか?
UNICODEとか
>>304 Controls[string]はコントロールのNameプロパティが一致するものを返す。
無いときはnullを返す。
307 :
258 :2006/12/25(月) 16:38:23
>>305 ありがとうございます。
さっきまでControls[〜]みたいに指定できるのを知らなかったもので、
form.Controlsで収集したコレクションから.Nameプロパティを
一つずつ比較・検索して返す関数を作りまして、
それを使った場合はきちんと動くんです。
なので文字コードの問題ではないような気がしています。
308 :
258 :2006/12/25(月) 16:40:45
>>306 nullが帰ってきてるっぽいのですが、
今書きましたとおり、自前の関数の方ではNameプロパティを使って
検索をかけて帰ってきてますので、
名前の打ち間違いとか
文字コードの問題とか
そんな名前のコントロールが存在しないとか
そういう問題ではないと思うんですけど、どうなのでしょうか。
思想の問題だな
>>308 CLRのバグじゃなければそんな名前のコントロールは存在してない。
>>308 仕事のついでに試してみたけどうちでもControls[string]は動かないよ。
そんな事したことないから知らんかったけど、
派生クラスによっては使えるのもあるって事じゃないの?
どうせコントロール初期化するまえにやってんじゃないの?
>>311 フォームで試してみたがちゃんと取得できたぞ?
Control+ControlCollectionは親コントロールには依存してないから、他でも問題ないと思うけど。
ハゲを擁護するつもりはないけど、直前に触ってるコントロールを対象に Controls[string]とControls.IndexOfKey()を試してますよ。 名前はデザイナからコピペしてる。
インデックスでとれるなら、そいつのTextと比較してみそ
Controls.Findとかもあるべや 自分も、継承ですますので、使ったこと無い。
一応報告。 動かなかったのはUserControlでやってたからで、Formでは動いた。 Controlのそれと、Formのそれは違う型なのね。勉強になった。
>>318 UserControlのControlsもControl+ControlCollectionじゃないか?
ちゃんと初期化で、this.Controls.Add(control)ってやってるかい?
流石にAddしてなかったら表示されないから分かるだろw
>>319 どっちもデザイナで貼り付けたやつだよ。
ControlsのはSystem.Windows.Forms.Control.ControlCollection、
FormのはSystem.Windows.Forms.Form.ControlCollectionで、AddとRemoveがオーバーライドされてる。
いや、ワークでやってたとか なんか、いまいちつづつまが合わないような
>>13 おもっきし、遅レスだけど
該当の件、C#相談室に持ち込んでみた。
回答になるかどうか分からないけど、見てみるといいとおもう。
>>322 おお、ほんとだ。
しかし、Reflectorで見た感じじゃ特殊なコントロールを除いて親のAdd/Removeを呼んでるだけで、
それだけでItems[String]が使えなくなるってのはおかしい気もするんだがなー
インデックスだと取れた、というのは? 全然別のもん、、つーかUserControlあたりもってきたのか
UserControlにデザイナでListView貼り付けてみたけどちゃんと取得できたよ。 MessageBox.Show(this.userControl1.Controls["listView1"].ToString());
Nameプロパティに値が設定されてないんじゃないの
329 :
258 :2006/12/25(月) 17:46:02
目的のコントロールはPictureBoxなんですが、 なぜかこれだけうまくいかないような感じです。 他ならツールバーなんかでも適当に名前をつけて取得できているようです。 どれもフォームのデザイナーで配置し、名前をつけてます。
>>329 とりあえず、Controls[pictureBox.Name] とでもしてみろよ。
>>318 だけど
自分のUserControlは実行時にAddしたりRemoveして切り替えてるやつでついでにやってたんで、
なんか状況が違うのかもしれん。とりあえず自分は困ってないし時間もないんで今回はもうパスw
もうソース晒せ
コンテナの中に配置してるってオチじゃね?
>>318 だけど
超それだったwお騒がせしますた。
336 :
258 :2006/12/25(月) 17:55:14
>>333 Panelの上に置いてますけど、もしかしてそういうことですか?
だとすると、そういう場合はどうやって書いたらいいでしょうか?
form.Controls["panel1"].Controls["pictureBox1"]k
>>336 パネルのControlsから探すんじゃね?
どんどん余計なものに依存するコードになるね。
339 :
258 :2006/12/25(月) 18:04:15
>>337 >>338 わかりました。ありがとうございました。
ちなみにさっきインデックスだと取れたと言ったのは
適当に5とか入れたらツールバーとかにDirectXの画面が表示されたんで、
まぁとりあえずはControls[index]の形でなら取れるんだな、と思ったからです。
お騒がせしました。
結論は、GetDlgItem()最強
つーか、GetDlgItemも親のhWndいるしな・・・
343 :
318 :2006/12/25(月) 18:14:32
スマソ。半分は漏れのせいm(_ _)m
344 :
258 :2006/12/25(月) 18:19:08
>>342 すっきり納得できるあなたの分かりやすい回答が欲しかったです。
345 :
342 :2006/12/25(月) 18:20:26
>>344 ControlsからControl引っ張ってくるのはあくまで邪道
つまりあなたは邪道プログラマ
347 :
258 :2006/12/25(月) 18:27:18
結論は、GetDlgItem()最強ということです。
マジレスするが、GetDlgItemでもコンテナの中に入ってたら取得できんだろ…
[DllImport("user32.dll", EntryPoint="GetDlgItem", SetLastError=true)] public static extern IntPtr GetDlgItem(IntPtr hDlg, Int32 nIDDlgItem); ご自由におとりください。
なんでMSはControls[string]なんて付けたんだろ 258みたいなのを救済するため? リフレクションのため?
動的な処理のためでは
人に見せるなら到底できないが、使い捨てプログラムなら textBoxN とかできると便利かもしれん。
>>350 お手軽プログラミングにはシンボリックリファレンスみたいなのは必須でしょ
VB移行組とかから要望があったんじゃないかな。
お前らいい加減にネタに気づけよ。
>>258 おもしろかったか?
355 :
258 :2006/12/25(月) 19:05:35
いずれにせよGetDlgItem最強という結論に変わりはありません
356 :
354 :2006/12/25(月) 19:08:05
>>355 GetDlgItemがどのように実装されているかなんて考えたっこと無いのか?
化石か、ゆとり世代どっちだ?
ネタにマジレスカッコイイ
358 :
258 :2006/12/25(月) 19:11:11
別にプログラムなんかに一生懸命になりたくないので 簡単にできる方法があればそれでいいです。 みんなが御宅さんのようにヲタクだとは思わないで下さい。
359 :
354 :2006/12/25(月) 19:12:56
うひょー俺かっこいい かっこいいいいいいいいい
秋田
そういえばMFC最強論者がいなくなったな 彼も秋田のか
プログラムなんかに一生懸命になりたくないので、 C++でDirectX使うのだ。
((((;゜Д゜)))
なにこの流れ
歳末大討論会です
366 :
258 :2006/12/25(月) 19:21:21
C#の方が簡単で便利だろうと思い、 手を出してみたらこのような有様でした。 でも、外からやたらに触れないようにした方が正しいとは思います。
367 :
258 :2006/12/25(月) 19:22:38
>自分も、継承ですますので、使ったこと無い。 ところで、継承ですますとはどういうことでしょうか。 例えばどうやって書きますか? 今後の参考のために教えてください。
C#でも同じような機能はあったけど 見付けられなくて、教えてもらっても使いこなせませんでした。 所詮はC#ですね。 おたくじゃないので、C++は簡単ですがC#なんておたく言語は 使えません。
しまった。
既存の知識を使うのはできるけど 新しい事を覚えるのは難しい年頃らしい
DBの接続文字列はどうやって決めるんですか? 現状はIDEで作ったものをコピペしています。
?
375 :
258 :2006/12/25(月) 19:51:07
>>371 目的のレベルと学習コストを秤にかけるのは当然だと思います。
使い捨てのプログラムを組むだけなので簡単に済めばそれでいいのです。
そんなことは置いておいて、ご存知でしたら質問の件を教えてください。
だからもう秋田って
あの内容でハンドルって言ってる段階で…
378 :
258 :2006/12/25(月) 19:58:06
>>377 昨日始めたばかりでまだ良く分かってないことがおおいですが
間違いがあれば改めたいので具体的に指摘していただけませんか?
ちなみにハンドルはハンドルとしてメンバに持ってるんですね。
なのでコントロールのインスタンスって言ったら良かったんですかね?
どういったらよかったですか?
>>377 なんか低級な方法でDirectXさわってるんじゃね?
380 :
258 :2006/12/25(月) 20:00:56
>>379 低級か高級か分かりませんけど、
ManagedDirectXで最初にデバイス作るときに
描画したいコントロールのハンドルを渡す必要があっただけです。
何かまずいでしょうか?
いいかげん、スルーしろ
おのおのがたスルーでござる。
383 :
258 :2006/12/25(月) 20:03:20
一言ずつぼそぼそ言う陰湿な人は迷惑ですね。 何の参考にもなりませんし関係ない人にとっても邪魔なだけだと思います。 言いたいことがあったらはっきり言えばいいのに、自信がないんですか? 教える気がなくていちいち嫌味ったらしく書くなら 最初から書かないでくれた方がいいです。
なんだよネタだったのかよ真面目に試したりして損した・・・ \|\_\ ∠ /|/ |○| |○| _| ̄|○ _ _ ○| ̄|_ / /|) (|\ \ | ̄| | ̄| / / \ \
GCされちゃえばいいのに…
GCですら触りたくないだろうに…… かわいそうなGC ゴミばかり相手にして
388 :
デフォルトの名無しさん :2006/12/25(月) 22:06:35
ここは質問スレだよな? 役に立たないゴミはお前だよ。 質問に答えろよ。
GCされちゃえばいいのに…
390 :
デフォルトの名無しさん :2006/12/25(月) 22:20:14
ここは質問スレだよな? 役に立たないゴミはお前だよ。 質問に答えろよ。
googleのトップページに何故カンガルーが描かれているのでしょうか。 とすれ違い。
393 :
デフォルトの名無しさん :2006/12/25(月) 22:30:50
ここは質問スレではありません。 初心者の質問に対し自称上級者が偉そうに小言交じりの中途半端なレスを返し どういうことか突っ込まれると詳しく知らないがゆえに口ごもって 逆切れしながら逃げまわるスレです。
あらあら粘着されちゃってるよw お前等これ読んでみろ・・・ ス ル ー
395 :
デフォルトの名無しさん :2006/12/25(月) 22:32:58
普通に質問してるだけじゃん。 何か間違った事を言ったか?
雑談はスルー 仕切りなおし。 質問受け付けます
秋田
398 :
デフォルトの名無しさん :2006/12/25(月) 22:54:07
>>379 低級か高級か分かりませんけど、
ManagedDirectXで最初にデバイス作るときに
描画したいコントロールのハンドルを渡す必要があっただけです。
何かまずいでしょうか?
なんか面白いな C++から入ってC#をC++風に固執して使いたい香具師とか C++もC#もそれぞれ利点・欠点があるから、どんなアプリを組むかで ターゲットを変えりゃいいのに、無理矢理へんなプログラム組むものではないと思う
400 :
デフォルトの名無しさん :2006/12/25(月) 22:58:41
別に無理やりでもなんでもないと思うが。
401 :
デフォルトの名無しさん :2006/12/25(月) 22:59:18
>>377 昨日始めたばかりでまだ良く分かってないことがおおいですが
間違いがあれば改めたいので具体的に指摘していただけませんか?
ちなみにハンドルはハンドルとしてメンバに持ってるんですね。
なのでコントロールのインスタンスって言ったら良かったんですかね?
どういったらよかったですか?
402 :
デフォルトの名無しさん :2006/12/25(月) 23:00:00
>>317 >自分も、継承ですますので、使ったこと無い。
ところで、継承ですますとはどういうことでしょうか。
例えばどうやって書きますか?
今後の参考のために教えてください。
403 :
デフォルトの名無しさん :2006/12/25(月) 23:01:24
以上、積み残しの初心者の普通の質問。 雑談はスルー。回答お願いします。
S2.NET使った人居る? 感想をおながいします
405 :
デフォルトの名無しさん :2006/12/25(月) 23:07:18
ここは質問スレではありません。 初心者の質問に対し自称上級者が偉そうに小言交じりの中途半端なレスを返し どういうことか突っ込まれると詳しく知らないがゆえに口ごもって 逆切れしながら逃げまわるスレです。
406 :
385 :2006/12/25(月) 23:14:26
役に立ちませんでしたか。 directX C#でググって探したら結構情報が集まりますよ。
407 :
258 :2006/12/25(月) 23:18:06
--------------------------------------------------- なりすまし終了
??
プログラムをデーモン化したいのですが。 ウィンドウを持たずバックグラウンドで動き続けるプログラムを作るには、 どうしたらいいですか?
ウィンドウ作らなければいい。
Consoleアプリケーションにすればいいんじゃない?
サービス作る
byte [] aaa = new byte[2]; ushort bbb; をCで言うunionみたいな使い方したいんですけど どやってやるのでしょう?
>>413 using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Explicit)]
public unsafe struct UNION
{
[FieldOffset(0)] public fixed byte aaa[2];
[FieldOffset(0)] public ushort bbb;
}
C#的にはobject型を使っとけ
>>416 それは Variant の代用にはなるけど、Union の代用にはならないよ。
419 :
デフォルトの名無しさん :2006/12/26(火) 14:32:39
メニューから別のフォームを呼び出すようにしたいんだが。
i::::::::/'" ̄ ̄ヾi |:::::::| ,,,,,_ ,,,,,,| |r-==( 。);( 。) ( ヽ :::__)..:: } ,____/ヽ ー== ; ほほう それでそれで? r'"ヽ t、 \___ ! / 、、i ヽ__,,/ / ヽノ j , j |ヽ |⌒`'、__ / / /r | {  ̄''ー-、,,_,ヘ^ | ゝ-,,,_____)--、j / \__ / | "'ー‐‐---''
421 :
デフォルトの名無しさん :2006/12/26(火) 14:42:54
抽象的すぎたかな。。。 たとえば[ツール]→[フォルダオプション]で 新しいウィンドウが出てくるけど、そんな感じで。
private void toolStripMenuItem1_Click(object sender, EventArgs e){ Form2 form2 = new Form2(); form2.ShowDialog(); }
>>414 コンソールウィンドウはCSRSSが勝手に作ってるだけ。
デザイナーでデザインした後、 プログラム側で textbox1.Font = new Font("MSゴシック",15); なんて、する場合 textbox1.Font.Dispose(); //<--- これ、必須?? textbox1.Font = new Font("MSゴシック",15); リソースの開放漏れ、起こしそうな気もするし、 気にしすぎのような気もするし。。。
デザイナでデフォルトのままにしといたら親のFontと同じオブジェクト指してるぞ。
>>424 バグの素になるから、自分で作ったオブジェクト以外はDisposeしちゃいかん
同じFontオブジェクトを参照している箇所があればそこでアボン
>>425 >>427 さんくす
なんか、別のフォームのインスタンス作るたんびに、フォントがらみで
例外出てたんで、これかなぁ〜、だったんですけど
ビンゴっぽいですなぁ
さっそく、Dispose()消しますです....
>>415 すみません
UNION ccc;
とした場合
ccc.aaa[0] = 0x12;
fixedなんやらunsafeがなんやらってコンパイラーに怒られてしまうんですけど・・・・
>>429 プロジェクトのプロパティ→ビルド→アンセーフコードの許可
意味は別途しらべておくれ。
>>429 ちゃんとunsafeで囲ってるかい?
unsafe
{
UNION ccc;
ccc.aaa[0] = 0x12;
}
fixed ステートメントを使用してくださいってコンパイラーにまだ怒られる・・・ C#でunionみたいな使い方は初心者はやっちゃいけないんですね・・・
そもそも何のためにunionを使うんだ?
初心者がやっちゃならんことはないが、自分で何とかできないなら使うべきじゃないだろうな
通信パケットとかデバイスのメモリみたいな、データのレイアウトが あらかじめ決まってる物を表現する以外は、だいたい間違った使い方だよ<union
あるところからデータをもらうのにフォーマットがbyte単位でしかもらえないので unionを使いたかったのですが、C#だとやたら怒られてかなり異例な処理みたいなので 変換したほうがいいんでしょうね byte[] aaa = new byte[2]; ushort bbb; private void byte_word() { bbb = (ushort )aaa[0]; bbb <<= 8; bbb |= (ushort )aaa[1]; } private void wrod_byte() { aaa[0] = (byte)(bbb >> 8); aaa[1] = (byte)bbb; }
怒られるとこ全部 unsafe {} でくくってみ 固定長の配列とか、ポインタとかは unsafe ブロック内でしか使えないよ
>>438 それをstructのプロパティにしてしまえば?
>>438 アンマネージな世界から貰うんならMarshalを使う手もある。
>>439 見捨てず面倒みてくれてありがとうございます。
ccc.aaa[0] = 0x12; をやったとき
unsafe{....}で囲んでいますので
unsafeでなくてfixedで怒られているみたいだんですよ
何をやったらなんて怒られたのかわからんと何もわからん
cccの宣言をunsafeモードにしてないとかいうオチか?
using System.Runtime.InteropServices; 全部書くとこんな感じです namespace DeviceApplication1 { public partial class Form1 : Form { [StructLayout(LayoutKind.Explicit)] public unsafe struct UNION { [FieldOffset(0)] public fixed byte aaa[2]; [FieldOffset(0)] public ushort bbb; }; unsafe UNION ccc; private void Form1_Load(object sender, EventArgs e) { unsafe { ccc.aaa[0] = 0x12; } }
>>445 unsafe
{
fixed (byte* p = ccc.aaa)
{
p[0] = 0x12;
}
}
インスタンス変数はヒープに割り当てられるからfixedする必要がある。
>>446 ありがとうございます ようやく全解決です。
ccc.aaa[0] = 0x12;
ccc.aaa[1] = 0x34;
を応用すると
unsafe
{
fixed (byte* p = ccc.aaa)
{
*(p+0) = 0x12;
*(p+1) = 0x34;
}
}
となりますね
付き合ってくれた皆さん本当にありがとうございます。
勉強になりました。
unionはどこいった?
何が言いたい?
BitConverter.ToUInt16じゃ駄目なんかね
そういやそんなのあったね。すっかり失念してた。 悪いことしたもんだ
452 :
とら男 :2006/12/26(火) 23:32:20
すみませんが、C#上級者の技を教えて下さい。 上司をギャフンと言わせてやりたいです。 (多分、このスレだと相当な上級者がいらっしゃいそうなので)
System.Reflection.Emit名前空間を使いこなせたら何でもできる
「ギャフン」なんて言葉を使えるあなたは十分上級者です
unionです。 BitConverter.ToUInt16 とても便利なものがあるんですね。 今回教えていただいたunionのやり方はunsafeなのでC#としては、 必要で無い限り避けた方が良い気がしますが unsafeとか静的領域の使い方がわかり、とても勉強になりました。 C#ってあまり使っちゃいけないと思いますが、ポインター使えるんですね、驚きでした
456 :
452 :2006/12/27(水) 02:16:16
起動時にFormをHideで隠したいのですがLoadイベントでは無理でした。 起動時以外ではHide()でいけたのですが色々試してみても無理でした。 よろしければ解決法ご教授下さい。
デザイナでFormのWindowStateをMinimizedにしつつ、お好みでShowInTaskBarをfalseにする。
Form のインスタンスを作成したら、Visible = false にして Application.Run だったかな?
失礼。Application.Run は引数なしで実行させてくださいな。 ……あと、その場合はコンストラクタの最後で IntPtr ptr = this.Handle; なんてやっておくと幸せになるかもしれない。
あるいは ShownイベントでVisible = false;
プロジェクトで新たに作成した hoge.resx というファイル(埋め込み)から 文字列 message01 を取得する方法を教えて下さい。 検索で引っかかった物は hoge.resource ファイルのものばっかりで、 hoge.resource ファイルが見つかりませんというエラーが出てしまい困っています。 ちなみに、SharpDevelopを使っています。
463 :
462 :2006/12/28(木) 04:59:27
自己解決しますた。dクス
タコな質問な事は判っているのですが、ずばりな回答を見付けられなかったので 教えてください。 フォームに貼り付けたボタンの背景を透明化して、フォームが透けて見える様に したいと思っています。 どうすれば良いでしょうか?
>>464 13の質問した人だろ。
C#相談室で代わりに質問しといたので、
そっちを見るがよろし。
2つの解決法があるようだ。
Graphicsで自前描画でもいけるはず
>>467 どうやって?
デスクトップのキャプチャ(Win32使用)はCode Projectで見つけた。
ただ、Formも重なって取得するため、その方法は出来ないモンだとおもってた。
469 :
464 :2006/12/28(木) 18:40:31
レスさんきゅー。でも俺は13じゃないよ。 向こうも眺めて来たけどコピペで出来そうな解じゃなさそうね。 話理解するのはちょっと時間が掛かりそうだけど読んでみる。 以下ちらしの裏。 テーマ切って開発してたらbuttonは透けてたんだけどTrackBarが透けない。 透けてるTrackBar手に入れたらテーマ上げなくちゃならなくなって、Button が透けなくなった…orz。 で、今ココ。
Form1に貼ってあるtextBoxのサイズを新しく作ったクラスから弄るにはどうしたらいいんですか? サイズの変更をしたいんですが 型または名前空間名 ***** が見つかりませんでした。ディレクティブを使うかアセンブリ参照を使ってください。 とでます。 ディレクティブっていうのはusing ***とかいうのかな?とか思ってますが全然わかっていません。 よろしくお願いします
そのクラスにも、 using System.Windows.Forms; を追加汁ってことかな
そのtextBoxのインスタンスへの参照を新しいクラスに渡しといて, それを通してサイズを変更する
473 :
デフォルトの名無しさん :2006/12/29(金) 01:34:20
ごみ箱の中のファイル/フォルダ名と削除した日時を取得し、 必要に応じて削除する方法探しています。 何かいい方法はありませんか?
ない
できんでもない。 各ドライブのルートにRECYCLERってフォルダがあるのがゴミ箱の実体。 RECYCLERのサブフォルダの中にINFO2ってファイルがあるから、それを見ればいつ捨てられたどんなファイルか分かる。
Shell APIで出来るならそれをP/Invokeなどで呼ぶべきだろうな。 RECYCLERを直接いじるのは最後の手段。
ごみ箱を弄るならシェル名前空間の知識が要るね ShellAPI使うとめんどいのでShell32.dllをCOM参照して、 const Int32 RECYCLE_BIN = 0xA; Folder rb = new ShellClass().NameSpace(RECYCLE_BIN); foreach (FolderItem fi in rb.Items()) { Console.WriteLine(fi.Name); for (Int32 i = 0; i <= 10; i++) { Console.WriteLine("\t" + rb.GetDetailsOf(fi, i)); } fi.InvokeVerb("delete"); }
478 :
デフォルトの名無しさん :2006/12/29(金) 07:52:42
youtubeの動画をflvやmpeg、wav、mp3ファイルなどに落としたいのですが どうすればいいでしょう? 既にそういうソフトなどがあるのは知ってるんですけど、 自作したいので、やり方が乗っているサイトなどありましたら 教えていただきたいです。お願いします。
>>478 その前になぜこのスレでその質問をするのか理由を述べよ。
480 :
478 :2006/12/29(金) 08:13:56
>>479 C#でyoutubeの動画を落とすソフトを作りたいと思ったのですが、
検索してもソフトは出てくるけど変換するやり方が書いてないので、
聞いてみました。
えっ・・?スレ違いじゃないよね?
スレ違い つ 正規表現
C#で作りたいってだけで作り方を教えろってのはスレ違い
難しい質問が来ると決まって「スレ違い」 おきまりの文句だよねw
難しい質問が来ると決まって質問者を煽る おきまりだよねw
次の質問どうぞ
特に無いな
487 :
デフォルトの名無しさん :2006/12/29(金) 14:02:53
言葉に詰まると次の人どうぞとかいって逃げる お決まりだよねw
>>484 ここは簡単な質問すら格言で終わらすからわけわからんし、
質問者もシロートレベルで質問するからわけわからん
そういってる香具師らも大したレベルじゃ(ry
次の質問が来るまで駄レスどうぞ
>>480 の質問は
「やり方が乗っているサイトがあったら教えろ」
答えのひとつとしては
「ないと思うので教えられない。そもそもないことを証明するのは難しい」
ようつべの仕組みなんて知らないけど 視聴URLから動画のURLに変換して、それをHTTPでダウンロードすればいいんじゃないのか
質問スレなのに俺みたいに質問も回答もしないやつ多いよね。
495 :
473 :2006/12/29(金) 15:25:26
誰かが公開しているようなフリーソフトに勝手にプラグインのように追加機能を足したりってできますか? たとえば2chの専ブラとかで勝手に右クリック項目増やせたりとか。 作者さんとは連絡は取れるんですが開発自体終了して改良する予定が無いそうなんでできればやってみようかと思ってます。 C#でやろうと思っていますができるかできないか、あとヒントがあればお願いします。
力技でどうにかできんことはないが、お前さんが考えてるよりはずっと難しいよ。 CLRの恩恵はほとんど受けられないから、C#使う意味はないしね。
第一,元のソフトがプラグインで拡張できるように作られてないとどうしようもないよ
コンテキストメニューを拡張するくらいなら強引に割り込めばなんとかなる
初心者に変なことを教えるなよ
C#でやることじゃないだろ
502 :
デフォルトの名無しさん :2006/12/29(金) 18:27:17
文字列のサイズ(バイト数)の求め方は? 例えば、 string str = "日本語の表示"; // str に sizeof が使えない str.Length ではバイト数ではなく、文字数6が入ってしまう
>>502 str.Length * sizeof(Char)
>>502 UTF-16文字列は1コードポイントあたり一律2バイト
何も考えずにLength(=コードポイント数)を二倍しとけばいい
はっはっは、嘘つけ。 まSJIS範囲ならそうだが。 半角含まれてないならまあそれもありか…
UTF-16では一文字は1or2コードポイントで、1コードポイントは16bits Lengthは文字数ではなくコードポイントの数を返すから、単純に2倍すればいい なんでSJISとか言い出すのかさっぱり分からんね。
>>502 Encodingクラス
GetByteCount
508 :
デフォルトの名無しさん :2006/12/29(金) 18:45:53
さっそく、みなさんどうもありがとう。 今すぐ、試してみます。
>>502 Convertクラス
でバイト列変換も有りかな
510 :
デフォルトの名無しさん :2006/12/29(金) 19:54:32
502,508です いろいろやって見ましたが、Encoding.GetByteCount の使用法が分かりません。 using System.Text; で、Encoding.GetByteCount(str) とすると、 静的でないフィールド、メソッド、またはプロパティ 'System.Text.Encoding.GetByteCount(string)' で、オブジェクト参照が必要です。 とのエラーが出ます。 MSDN によると Encoding.GetByteCount メソッド (String) 派生クラスでオーバーライドされた場合、指定した String に含まれる文字をエンコードすることによって生成されるバイト数を計算します。 とあって、なにやら専用のメソッドを用意しなければならないようです。 なので、単純に文字数の2倍で良しとします。
クラスとかインスタンスとか理解しな。 Encodingはクラス。 GetByteCountはstaicがついてないんだからインスタンスメソッド。 Encodingはいろんなエンコードを表す基底クラス。 たとえばShift_JISエンコードでいろいろしたいなら、 具象クラスのインスタンスをまず取得する必要がある。 EncodingでGetByteCountって、何のエンコーディングでのバイト数かわからんだろ?
GetByteCount でググればそれこそ ぼろぼろ使用方法が出てくるのに こういうやからはなぜそういうことをしない。
>>502 のような訳の分からん質問をしている時点でMSDNの読み込みが足らんのは明白だろ。
俺の勘違いだったら悪いんだが、 C#のデフォルト文字コードってUTF-8じゃないの?
C#のデフォルト文字コード ってどういう意味なの?
エスパーすると、CLRがUnicode文字の表現に使っている内部エンコーディング、のことじゃね?
518 :
デフォルトの名無しさん :2006/12/29(金) 20:55:29
502です あるサイトから、Encodingの使い方は分かりました。 Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS"); string str = "こんにちわ"; int num = sjisEnc.GetByteCount(str); しかし、これは、Shift_JIS に変換した後のバイト数です。 知りたかったのは、Unicode のままでのバイト数で、現在メモリ上に占めるサイズです。
釣りですか?
>>520 Encoding.Defaultはシステム規定の符号化方式。
お前さんがWindows日本語版を使っているから、
たまたまCP932(Shift_JISのマイクロソフト拡張)になっているだけ。
>>518 残念ながら参照型がどれだけのメモリを占有しているかを測る方法は存在しない。
というか、それを知って何がしたいん?
"Shift_JIS"って文字列で指定してるからそこを"Unicode"に すればUnicodeでのバイト数がでるってすぐに想像つかないのか? >>518の思考能力がすげー低いってことがわかった。
まあもうLength * 2でいいけど、 結局何がしたいんかさっぱり分からん。
アプリ稼働中のメモリ使用量を求めたかったのでは?
メモリ使用量って?
そのアプリが最大どれだけのメモリを必要とするか それ知らんと、メモリをどれだけ積めばいいのか見積もれんのでは?
Unicodeにこだわってるからそれは無いのかな?w
ガーベジコレクタに訊けば教えてくれるんじゃね?
>>529 そうなんだ
C#知らんからおれw
スマソ
質問です。 埋め込むリソースに"hoge.bin"が存在するとして、 その"hoge.bin"をファイルとして保存する手順というか方法がわかりません。 一応、そのリソースをResourceManagerに読み込ませる所まではできています。 よろしくお願いします。
そんな理由で文字列のバイト数調べてどうする。
>>531 何がしたいのかさっぱりわからんが、ファイル開いて書き込めばいいんじゃないの?
>496 2chの専ブラってdelphiのものが多いよな。 delphiでやれば?
535 :
531 :2006/12/30(土) 00:51:35
536 :
478 :2006/12/30(土) 07:56:29
>>481 、
>>482 、
>>492 、
>>493 ありがとう。
youtubeの動画ページのソース見たら動画のURLあった。
それを勝手に拡張子付けて保存すればいいのかな。
でもそれじゃまずいので正規表現すればいいってことだろうか。
よく調べてみます。ありがとうございました。
>>536 用津辺板いって聞いてくれば?
ここよりは求めてる回答得られそうな希ガス
明けましておめでとうございます。 あのぅ、C#のメソッド名って、1文字目が大文字なのは習慣的? C#の勉強始めたんだが、基本Javaしかわからんから。 見てる講座がたまたまそうなのかな。
>>538 CLRがそうなってるからみんなそうしてる。
大体、privateフィールドとローカル変数がcamelCaseで、それ以外の識別子がCamelCase
>>539-540 早レスありがとう。
そんなのがあったのね。
面白いから熟読してみる。
まだ買ってもいないxboxゲー個人開発に挑戦してみようと思って勉強始めてみたの。
きっと挫折するに決まっているが、得るものは沢山あると思うので、
できるとこまで勉強してみるよ。
とりあえずビール飲んで餃子食うわ。
>>540 このガイドラインは全部読んどくべきだよね。
俺もこれ初めに知ってれば作り直すこともなかったんだがorz
>>543 名前というかクラスの構造というか。
今は上手く思い出せない。
>イベント ハンドラではないデリゲートの名前には、サフィックス Callback を追加します。 これ.NET Frameworkでも守ってないの多いな
ThreadStart はコールバックじゃないしなあ
547 :
デフォルトの名無しさん :2007/01/03(水) 02:22:39
ネストクラスをリフレクションで取得できないのですが なにか間違ってますか? ClassUtil.ForName("Name.Space.OuterClass.NestedClass",asms);
ClassUtil.ForName とやらが何なのか一切説明無しか。 完全限定型名で調べれ。あと Type.GetType とか。
すみません ClassUtil.ForNameは、Seasarに定義されてるメソッドでした。 Javaとそっくりだなと思いつつよく見ればFCLじゃなかったのか… 完全限定型名で調べてみたいと思います。 ありがとうございました。
550 :
547 :2007/01/03(水) 03:11:24
完全限定型名というのは Namespace.ClassName,AssenblyName でよいのでしょうか? Type.GetTypeで Namespace.ClassName,AssenblyName だとClassNameを取得可能でしたが Namespace.ClassName.NestedClass,AssenblyName だと NestedClassを取得することはできませんでした。
もうちょっと良く読め
552 :
547 :2007/01/03(水) 03:21:30
>>551 すみません。わかりましたw
おさわがせしました。
>>547 Seasar.NET触った感じどうよ?
>>553 Seaserというより、DIコンテナ自体使い慣れてないのでなんともいえないけど
単純にファクトリクラスライブラリと考えるだけでも結構便利。
AjaxPro経由で呼び出したときはWebフォームインジェクション
されないので一貫性のないコードになっちゃってちょっと嫌かも。
そもそもAjaxとASP.NETの相性が悪すぎ。
クライアントコールバックは煩雑だし、かといってAjaxPro使うとコントロールを参照できないし。
Atlasは、
>>554 なんとなくやってる事とやれる事は理解できた d
Microsoft Visual C# 2005 Express Edition ってユーザーコントロール作れないんですか?
おろ酔ってるみたい。よく見ればVB貼っちゃった。 でも同じようにすればできると思うよ。
559 :
556 :2007/01/04(木) 03:13:37
>>557 おぉ、まさにこれですヾ(*´∀`*)ノ
ありがとうございます!!
そろそろスレタイを全角じゃなくて半角で立ててくれないか?
やってみれば分かると思うが消える
そしてC言語のスレになる。
C# しーいげた C♯ しーしゃーぷ
C#とかいて"C Sharp"と発音するんだと、ECMA-334に書いてある。 下駄とか言ってるやつは忠誠心が不足しているようだな。
>>549 Seasarのメソッドか…
おいなんだこりゃ、こりゃうかつに使うとはまるぞ。
Seasarはどうも発想がJavaだな、当たり前だろうけど。 Javaでのやり方を.NET環境でどうやるかって発想になってるので、 いろいろ問題ありそうな気がして使うのは怖いな…
>>565 javaでもxxxUtil系はSeaser用意してくれてるおw
使 え な い け ど
#だってシャープって読むだろ普通
普通はナンバーじゃね?
名塚はシャープって読んでたよ
C++の「ぷらぷら」みたいな、語感の良い呼び方はないものか。
# 「ぷらぷら ぷらぷら」
普通シャープだろ
ナンバーで変換すると#が出てきて、シャープで変換すると♯が出てくる
はぁ? 普通、クロスハッチだろ。
なるほど 総合するとシャープってことだな
c#のソースファイル拡張子を見れ
つーかPresenting C#にだってC charpって書いてあるだろハゲ
# 半角だとナンバーか井げた ♯ 全角だとシャープ 普通は。
じゃあCナンバーとかC井げたと読んでなさい
っていうか、半角だとシャープとナンバーの区別が付かないから、 # で ♯ を代用してるって公言されてた気が。
>規格によると、C#は「C Sharp」と発音し、
>「C#」(LATIN CAPITAL LETTER C (U+0043) の後に
> NUMBER SIGN # (U+0023))と書く。
>音楽のシャープ(♯,MUSIC SHARP SIGN (U+266F))ではなく
>ナンバーサイン(#)を採用したのは、フォントやブラウザなどの
>技術的な制約に加え、標準的キーボードには前者の記号が存在し
>ないためである。
http://ja.wikipedia.org/wiki/C_Sharp
Cから半音上がった状態か
CとDの間だから C#
C++ はDになっちゃうか
Cの次はPなんだがな。
C++++
C#よりC++の方が低級言語でしょう おなじCのコードでもメモリー構造が全然違うみたいね
おなじCのコードってそれはネタで言ってるんだよな
同じCのコード、、、、両者からCを取ったら残るのは # と ++
591 :
デフォルトの名無しさん :2007/01/05(金) 16:56:03
>>592 あ、どうもすいません。
ところで、このサンプルを2.0でコンパイルして実行しようとすると
ランタイム内でエラーが発生しますね。
きっと 内容も理解せずコピペするだけじゃ何の意味もねーだろボケ と言う事を遠回しに教えてくれてるんだよ
なるほど。でもこれどっか修正すれば動くようになるの?
ButtonCtrl.csをデザイナで開いてbutton1のImageプロパティの右側[...]ボタンをクリック
プロジェクトリソースファイルを選んで[インポート]ボタンをクリックし,適当な画像を選ぶ
でも
>>594
>>596 デザイナってのはSDKについてますか?
教えていただけるのであればソースを書き換える方法でおながいします…
Visual C# Express Edition(無料でMicrosoftのサイトから落とせる) だいたいそのソースもほとんどデザイナが自動生成したもの
全角英数字と空白のみ半角に変換したいのだけど、便利なメソッドってある? Microsoft.VisuakBasic.String.StrConv だとカタカナまで半角になっちゃう。
String.NormalizeでNFKCに正規化するとか。副作用もあるけど
forでループまわして一文字づつやれば
普通それしかないわな。
603 :
599 :2007/01/05(金) 19:26:22
>>600 さんくす。とりあえず
String.Normalize(NormalizationFrom.FromKC)
で、全角英数空白記号が半角になった。FromKDとの違いがワカラン...
副作用ってどんなことか気になるが、とりあえずOK?。
>>601 今回は数字のみだったので、ループで済ましてたが、
英字や記号までとなると、なんか馬鹿らしくなる。
だれかPHPのmb_convert_kana関数を移植してくれんだろうか?
Regex.Replace / MatchEvaluator / StrConv 組み合わせる
Regex.Replace だけじゃダメなのか…
606 :
デフォルトの名無しさん :2007/01/05(金) 19:41:10
あるクラスAを継承したクラスA'があるとします。 クラスAにデータが格納されているとして そのデータをそのままクラスA'に一括して渡したい場合に良い方法は ありますでしょうか? やりたいのはこのような以下の様なイメージです。 A' A'のインスタンス = (A')Aのインスタンス; よろしくお願い致します。
SeaserはS2DAOの存在意義がわからん。 ADO.NETのがいいし。
A.CopyTo(A')
>>606 Aを引数にもつA'のコンストラクタつくっておけばいいんじゃない?
System.Drawing.Bitmap が System.Drawing.Image を引数に取るコンストラクタ持ってるな。 ついでに A から A' への明示的変換演算をオーバーロードしとくとかどうか。
611 :
デフォルトの名無しさん :2007/01/05(金) 19:58:30
612 :
C ◆rtRndw2G.I :2007/01/05(金) 20:15:22
DLL(アセンブリ)のバージョンを調べるにはどうすれば良いでしょうか? 例えば、下記の様にAサーバに『hoge.dll』というDLLがあった場合に このDLLのバージョン(1.1.1.4)を調べるにはどうすれば良いでしょうか? Aサーバ hoge.dll (1.1.1.4) また、上記は通常のクラスライブラリとして作成されたアセンブリ の場合ですが、例えばActiveReport等のベンダー製のDLL (ActiveReport.dll / ActiveReportViewer.dll ) のバージョンを取得する事は出切るのでしょうか?
613 :
C ◆rtRndw2G.I :2007/01/05(金) 20:18:11
あともう一つご質問をさせて下さい。 例えば、 A_hoge.dll @ B_hoge.dll A と2つのDLLがあった場合にそれらのDLLをマージして C_hoge.dll B と1つに纏める方法はありますでしょうか? (ソース自体を C_hoge という namespace に入れる以外の 方法で)
>>612 それで何をしたいのか、が問題だな
>>613 ILMerge ってのが提供されてはいる
わざわざ一つに纏める意義が分からんが
>>612 Assemblyクラスに読み込んでメタデータ確認すればいいんじゃね?
616 :
C ◆rtRndw2G.I :2007/01/05(金) 21:01:07
>>614 どうもありがとうございます。
早速 ILMerge をダウンロードし試してみます。
>>612 の件なのですがサーバ上のDLLとクライアントのDLLのバージョン
比較を行い、バージョンの新しい方をローカルに取得し参照利用
予定です。
617 :
C ◆rtRndw2G.I :2007/01/05(金) 22:05:12
>>615 >Assemblyクラスに読み込んでメタデータ確認すればいいんじゃね
Asemblyクラスに読み込む!?
そんな事出来るんですか?もし宜しければご伝授いただけないでしょうか?
微妙だな、LoadFromやReflectionOnlyLoadFrom等で読み込めば確認できるが、 クライアントで読み込んだものが同じアセンブリとみなされるか違うアセンブリとみなされるか等、 いろいろトラブりそうな気がする。 AppDomain作ってその中で閉じてやってしまうのが一番確実だが、 この方法はちとだけ敷居が高い。
そういうときこそSxSじゃないかな。
アセンブリを勝手にバージョンアップするのはご法度だからなあ
>>619 LoadFileのほうがキャッシュとかの影響を避けられそう
623 :
デフォルトの名無しさん :2007/01/05(金) 22:33:18
C#をJavaに変換するにはどうしたら良いのでしょうか? それとC#をC++に変換する方法は無いとは思いますが聞かせて頂きます
同じ挙動をすればいいだけなら、JavaにせよC++にせよ普通に書き換えてゆけばいいじゃない。
626 :
623 :2007/01/05(金) 22:37:54
あれ、Java→C#に変換できるものなんかはあった気がするんですが
そりゃMSがJava厨を取り込みたいから作るだろうが、C#からJavaはなかろう 知らんけど
ヒント:上位互換性
ReflectorでJ#化 意味ねー
ってJ#対応してねーじゃねーかw
>そういうときこそSxSじゃないかな。 意味不明
CodeProviderつかえば、C#<->VJ# / C# <-> C++/CLI の変換は可能だと思うよ。 JavaやC++に変換するのは無理だけど。
633 :
C ◆rtRndw2G.I :2007/01/05(金) 22:49:50
>>618 ,619,620,622
どうもありがとうございます。
ちょっとLoadFielを利用してアセンブリのバージョンを読めるか試して
みます。
念のために注意しとく。 読み込んでバージョン確認は普通簡単にできる。 問題は、その後例えば最新のアセンブリをローカルに持ってきてロードとか、 あるいはビルド時の参照設定や、逆シリアル化操作などでアセンブリが 自動ロードされたりする際に、トラぶらないようにしとくこと。
635 :
633 :2007/01/05(金) 23:15:35
>>634 どうもありがとうございます。
ところでなぜ
>>634 さんはそこまで詳しいのでしょうか?
VS自体の開発に携わっていたりとか?
お前が無知なだけ
637 :
デフォルトの名無しさん :2007/01/05(金) 23:49:41
プッ
ごめん。 うんこ漏らしちゃった。
プリッ
641 :
デフォルトの名無しさん :2007/01/06(土) 03:15:12
質問です。 .pmファイルがあります。このファイルの文字コード(?)は日本語EUCです。 これをコマンドプロンプトで実行すると文字化けします。 それで、このコマンドプロンプトの出力をtextBoxに渡したいのですが、 文字化けせずに表示するにはどうすればいいでしょうか? お願いします。
642 :
デフォルトの名無しさん :2007/01/06(土) 03:29:37
643 :
641 :2007/01/06(土) 04:11:04
>>642 ありがとう。Google先生に聞いてみたけど分からなかった。
コマンドプロンプトで実行した時点で化けてるのですが
いつコード変換すればいいのでしょうか?
化けてるのを変換しても戻らないと思ったのですが・・
コマンドプロンプトのコードページは関係ないですか?
すみませんが、もっと詳しく教えて頂けると助かります。
>>643 .pm というのはperlのモジュールファイルのこと?
すれ違いな気もするが、WindowsのコンソールはANSIコードセット、日本語環境ではShift-JIS(MS932)専用。
極限られた条件でUNICODEを使うことも出来るが切り替えて使えるというレベルではない。
漢字変換のフィルターを前後にかますか、
処理の内容にもよるが.pl .pmのスクリプト自体をShift-JISに変えてしまうのがおすすめ。
C#でなにかやりたいなら、System.Diagnostics.Processでperlを子プロセスで起動するときに
標準入出力をフックしてコード変換をすると出来るがスキル的に無理だろう。
現在ASP.NET2.0でWebサイトを構築しているのですが、 TreeViewコントロールで親ノードの文字をクリックして子ノードを展開するようにするにはどうすればいいのでしょうか? 既定では小さい画像なのでいまいち使いにくいです。 Menuコントロールも試してみたのですが、ノードが多いためか展開がかなり遅くなってしまいました。 どなたかご教授願います。
>>644 なにもそんな難しいことをする必要はない。
Process p = new Process();
p.StartInfo.FileName = "perl";
p.StartInfo.Arguments = "foo.pl";
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.StandardOutputEncoding = Encoding.GetEncoding("EUC-JP");
p.StartInfo.UseShellExecute = false;
p.Start();
p.WaitForExit();
textBox1.Text = p.StandardOutput.ReadToEnd();
プログラミング始めた頃は目的のアプリをどう作るかってのに悩んでたけど いろいろ関数を覚えてきてマニュアルみなくても記述できるようになってくると アプリを作ることより、いかに、わかり易く、バグが起きにくいソースを書くか?ってことに時間を費やすようになったけど こういうのって自然なこと?
>>647 それに仕様変更を想定して書ければプロだよ
>>647 EAとかeclipseのUML2使ってみ
どうして人間は16進数やらないの?
8進法を使う民族ならあるらしいけどな 指の股を数えるんだとか
両手の指の合計が16だったなら16進数が標準だったかもな
12進法や60進法使ってた(る?)民族もいたんじゃなかったっけ? 世界的に10進法に標準化されちゃっただけで。
2進法なら手だけで1000数えられるのに。
それ俺の隠し芸…… 2^5まではみんなにこやかに見てくれてるのに、 2^6+2^5あたりから険しい表情になり、 2^7+2^6あたりでこっちを向いてる人が少なくなり、 2^8から2^10-1までは俺一人で黙々と数えることになる。
60進法は普通に時間で使ってるだろ
地球の公転を早くさせることができたら、仕事する時間も少なくて済むな
変わらないだろ 正月休みや盆休みもその分短くなる
>>651 指と股を数えると、片手だけで9になるんだが?
www
角度とかでも使ってるな、60進法。 しかし0〜59と数えるのは邪道だ。 60進法とは認められない。
664 :
デフォルトの名無しさん :2007/01/06(土) 16:07:23
.net寄りの質問なのですが、.net板で返答が得られなかったため、 こちらの板で質問させていただきます。板違いですいません。 どなたかお答えしていただけますでしょうか? .netC# で開発を行っています。 現在、IEのWindowからテキストをドラッグ&ドロップしてFormに 入力したいと思っています。 その時に、ドラッグ&ドロップしたテキストが元々IEのWindowのどの位置 (x,y座標で)に有ったかという情報を受け取ることは可能でしょうか? もし可能ならばどの様な実現方法が有るのでしょうか? お教え下さい。
>>664 そりゃ無理だね
ファイルパスを取得したあと、それを元に
APIを使ってやればできるけど
>>664 COMやMSHTMLの深い知識があればできんこともないかもしれんな。
マウスのグローバルフックでD&D操作をモニタすりゃいんじゃね?
そんなアプリいやだ。
グローバルフックを登録するにはDLLつくんないといけないから、
>>664 には荷が重そうだな。
.net 板ってどこよ
.NET総合スレのことだろ。過疎ってるとこ
672 :
641 :2007/01/06(土) 17:50:04
>>644 >>646 ありがとう。
>>644 >子プロセスで起動するときに標準入出力をフックしてコード変換を
>すると出来るがスキル的に無理だろう。
はい、さっぱりです・・・。
>>646 それ2.0ですよね?多分・・。1.1なので出来ませんでした。
あ〜難しい!!
1.1ならStandardOutput.BaseStreamを新しいStreamReaderに食わせればいいんじゃないか
FreameworkについてるProcessって使えないよな 子プロセスとして自前で起動しないと操作できないんだから そりゃ他のプロセスに勝手に割り込むのはメモリ違反だから仕方がないけどな どうにかしてよ
むちゃいうな
何言ってんだか分からない。 Processは探せるだろ。 メモリ違反て何しようとしてる?
677 :
641 :2007/01/06(土) 18:28:39
>>673 できた〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜!!
まじでうれしい!!!!!!!!!!!!!!!!!
あなたは神です!!ありがとう!!!!!!!
StreamReader output = new StreamReader(p.StandardOutput.BaseStream,Encoding.GetEncoding("EUC-JP")) ; // 出力を取得(参照の宣言のみ)
textBox1.Text = output.ReadToEnd(); // 表示(出力を実際に取得)
output.Close();
>>674 Window操作ならapi使って出来るが?
>>674 Process#GetProcesses
JAVA使い襲来。
staticだからProcess.GetProcessesだろ
質問です。 現在、GPL の C のソースコードを C# に移植しています。 で、そのソースコード中に、 extern int sig[100][100]; //これは適当 int pn, idx; pn = sig[c][b] <= 0; idx = (sig[c][b] - pn) ^ -pn; とあったのですが、これをC#になおした場合、 pn = (sig[c][b] <= 0) ? 1 : 0; とする以外、idx への代入する式は C と同じで良いのでしょうか? idx は絶対値を取ってるだけのような気もするのだけど・・・確証が持てません。
演算子は同じだからそのままで大丈夫だよ。 符号ビットを0にしてるだけだから絶対値であってるね。
ありがとです。 うーむ、まだ結果が違う・・・。
685 :
デフォルトの名無しさん :2007/01/07(日) 17:43:37
Webサービスを用いたコードを書いているのですが、サーバからクライアントに オブジェクトを送信するとArrayListがObject[]になってしまい、困っています。 これを解決する良い方法は有りませんでしょうか?
>>685 そういやArrayListはシリアライズ不可だな。
.NET同士ならDataSetを使う。他からも使いたいならArrayを直に使うのかな。
これからプログラミング始めようと思っているんですが 3000円ぐらいする入門書みたいなのは買う必要ありますか? オンラインヘルプのMSDNで十分でしょうか?
これまでのプログラミング経験は?
>>687 ほんとに初心者の初心者なら本の方がいい。それも名著と呼ばれてる奴ではなくて、
はじめてのXX系の後からは絶対読み返さないようなのが役に立ったりする。
ある程度下地があるならMSDNからでもウェブをあさってもいいし本なら名著が役に立つ。
>>689 F-BASIC386
QUICK C
ぐらいしかありません
そこでC#を始めてしまうと碌なプログラマにはなれん気がするな。
はいはい、VBVB
まあ本はあったほうがよさげ
本が必要かどうか自分でわからないようなら、必要ってことだろうね。
>>691 初オブジェクト指向か。
最初は大変だろうけどそのうち体で覚えるよ。
オレなんか本に書いてあることが理解できたのは
動くプログラムが作れるようになってからだぞ。
>>697 インスタンスとオブジェクトの違いを述べよ
インスタンスの影
言葉の使われる場合が微妙に違うだけで具体的には一緒
質問です。 class Hoge : Object {} class HogeCollection : Collection<Hoge> {} class HogeColleCollection : Collection<HogeCollection> {} な感じのデータがあるのですが、あまりに件数が多すぎて、 メモリからあふれてしまうようになりました。 なので、メモリに保存する替わりにファイルをメモリ代わりにすることで代用したいのですが、 伸びたり縮んだり、部分的に伸びたりするデータをどのようにしたらファイルで代用できるのでしょうか・・・。
素直にデータベース使えよ
703 :
697 :2007/01/07(日) 23:33:17
>>698 ええー汗w
インスタンスはわかるけど、オブジェクトって言葉はいろんな使われ方してない?
オレ的にはインスタンス=オブジェクトなんだけど・・・
はや^^; データベースというと、DataSet クラスとかですよね。 あれもメモリで保存するものと思っていました。 ちょっと調べてみます。
オブジェクトは概念 インスタンスは実体。
インタフェースのときはちょっと違う IDisposableインスタンスとは言わない だからって深い意味は無い
>>704 DataSet はデータベースから引っ張ってきたデータをプログラムで利用するために一時的にメモリに保存するもの。
SQL Server Express とか使えという事。
>>706 言わないっていうかインターフェイスはインターフェイスだろ。
初心者混乱させてどうすんだ。
だからって深い意味はない
>>706 インターフェイスは実体化できんだろうが
インスタンスつうたらまあオブジェクト指向の話だろうけど、 オブジェクトって言われたらオブジェクト指向の話じゃないかも。 クラスは実体化するもの インターフェイスは実装するもの
711 :
706 :2007/01/07(日) 23:51:58
>>709 誰もそんなこと言ってないのにわざわざ出すことが混乱すると言ってるんだが。
何をムキになってるんだか
713 :
デフォルトの名無しさん :2007/01/07(日) 23:57:42
おれがわかり易く言ってやろう オブジェクトとは子供が描いた家の絵(クラス) 子供に建築学インタフェースを接続するとちゃんとした設計図(クラス)になる それらの設計図を元に作ったのがインスタンス
objectクラス objectインスタンス objectオブジェクト
オブジェクト≠クラス
クラス -> 集合 インスタンス -> 集合の要素 とか
構造体も忘れないでください。。。
構造体のインスタンスはオブジェクト
720 :
697 :2007/01/08(月) 00:13:37
>>711 はオレじゃないぞw
>>714 またオブジェクトの使い方が怪しいのが出てきたよー
子供が書いた家の絵と設計図に(クラス)と書いたら意味わからん
714がわかってないことがわかったw
オブジェクト指向の概念って頭で分かってても言葉で説明するの難しいよね。 下手に喩えをつかうと余計にぐじゃぐじゃになる。
723 :
701 :2007/01/08(月) 00:18:37
ちょっと調べてみました。 SQL Server Express を使って開発しながら、だんだんとファイル?を使った方法 へと移行していく感じでいいのでしょうか。
インスタンスとオブジェクトの違いの話をしてるんだよな?
725 :
701 :2007/01/08(月) 00:20:05
あぁ、リロードすれば良かった。 XML でのやり方を調べてみます。
716が流れを理解していないこともわかった
>>723 725
XML は状態を保存するのには悪くないが、頻繁に書き換えするには向かない。
ファイルはこの際関係ない。
XMLの場合は部分更新がマジできついって
.Netの場合Objectには特別な意味があるよね
は?
こりゃオブジェクト・インスタンスの話はもうやめたほうがよさそうだw
どういう意味か説明してくれ。
オブジェクト=宇宙 インターフェース=数学 クラス=神 インスタンス=人
>>733 それじゃあ人は神の実体化になるから違…
はっ!
オブジェクトっていう概念はオブジェクト指向の外にあると思う
クラスとはそれ以上微分化できない非線形系、抽象的なもの インスタンスとは・・
ギリシャ神話第13章節 人は神が神に似せてたもうた存在であり・・・
恋の呪文はスキトキメキトキス
クラスはデュナミスであり、インスタンスはエネルゲイアである。 オブジェクトはエンテレケイアだと言えるであろう。
740 :
701 :2007/01/08(月) 02:50:19
701です。
MS SQL Server とかのデータベースを利用する場合、
ユーザーにもそれをインストールして貰う必要があるようです。
でもフリーソフトを目標に作っているので、
それをしてしまうと避けられてしまうかも〜
とかおもいながら、MS SQL Server Express の情報を探してたら
SQLite というのを見つけました。
http://ja.wikipedia.org/wiki/SQLite これって、C ライブラリでプログラムにリンクできて
プログラム以外に利用しなければ行けないものも無いみたいなので
これが良いみたいです。
難しそうですが、これを使って頑張ってみます。
どもでした。
>>740 まて慌てるなw
そもそもメモリが溢れるってどういう意味よ?
例えばアドレス帳のようなアプリの場合、普通データ管理にDataSetを使う。
DataSetは別にデータベース(OracleとかSQLServertとか)がなくても使える。
ついでに言うと DetaSet はXMLでファイル保存・読込が出来てお手軽。
ここまで聞いてピンとこなければオレの勘違いだスマン。
742 :
デフォルトの名無しさん :2007/01/08(月) 03:40:37
>>740 >>741 の云うとおりだと思うんだぜ?
XML知ってるならDataSet XSD.exe DataBindingあたり調べて見れ
SQLiteの利点はSQLが使えることだから クエリーでどうしてもSQL使いたいってんでなけりゃDataSetでいいっしょ
744 :
741 :2007/01/08(月) 05:28:16
>>701 を見ると配列の配列でテーブルを表現したいのかと。
DataSet、DataTable、DataRow あたりを勉強すればOK。
たぶんSQLも知らないだろうから、データベースまで手を伸ばさないほうがいい。
なあ、C#やってたら他の言語出来なくならないか?
他のを使うのが億劫にはなるが使えなくなるまでには達しないな
747 :
デフォルトの名無しさん :2007/01/08(月) 07:30:13
言語そのものはかなり普通 VisualC#と.NET Frameworkが楽すぎるだけ
問題が解決できる限り、楽すぎるに越した事はないな
以下のようにエクスプローラの全てのプロセスIDを取得するのは websiteから拾ってきて分かったのですが、 そのプロセスIDが何個あるかというのを、 変数qtyに格納するにはどうすればよいのでしょうか? ----------------------------------------------------------- //名前のプロセスをすべて取得する Process[] hProcesses = Process.GetProcessesByName("Exploler"); string stPrompt = string.Empty; public GetProcessID() { // 取得できたプロセスからプロセス ID を取得する foreach (System.Diagnostics.Process hProcess in hProcesses) { stPrompt += hProcess.Id + System.Environment.NewLine; } }
にたような言語としては Java のほうが便利。 開発環境も eclipse のほうが便利。 でも.NET Framework のほうが Windows という OS に 親和性が高いので、それを優先してるだけ。 使ってる環境が Linux で Mono と Javaランタイムだったら Java ランタイムの勝ちじゃないか? というか、C# を始めた後でも C や Perl は手放せない。
>>750 まあ hProcess の数と一致するんじゃね?
// System Idle Process とかはどうなるんだったっけ。
あ。hProcess の数っていうと分かりにくいか。 hProcesses の要素数。
要素数ってことは分かるのですが、 それをどう表現するかが分からなくて。 もう少し調べてみます。
hProcesses.Lengthプロパティ Tips回る前に基礎
C言語なんて問題外だろ
unsafeブロック内で健在
実はunsafeブロックばかり(ry
プラットフォーム跨いだ移植性を追及したら最終的にはCに落ち着くんだよ
760 :
701 :2007/01/08(月) 14:01:10
>741 対象のデータ件数が60万件とかあるからです。 現在のうちの環境では22万件までいったところで OutOfMemoryException が出てしまいます。 しかも、でる位置がたとえば private static readonly byte[] buffer = new byte[1024]; private static int func(FileStream target) { int readsize = 0; readsize = target.Read(buffer, 0, 1024); <-- ここでOutOfMemoryException target.Position -= readsize; ・・・ } みたいな位置で出てしまうのでどう対処していいのやらなのです。 なのでメモリじゃなくてファイルに保存したらどうかなと考えました。 こんな感じでもDataSetとかで良いのでしょうか?
VMないと動かないじゃない
結局,頭のいい人間の耳に吹き込む,が最強?
>>761 Cで書いてあればどっからでも呼べんだよ。
つかCなんて生産性悪い言語つかわねーだろ普通 C#使ってるいみねーじゃん 移植性考えるならJava使うだろ普通
Jで満足に食っていけるってんなら世話ねえよな
スレ違い
移植とかマルチプラットフォームとか言ってる人ってなに作ってんの?
組み込みの人じゃね?
AppサーバーをUnix系OSにしてるところは、開発はWindowsでやって結合テストから Unix系OSにしたりするからなー
Javaはすっかり現代のCOBOLだし、C#もそっち方向へまっしぐらですね
>>772 馬鹿とハサミは使いよう
ハサミが悪いわけではない
C#のプログラムを腕利きのSEでVB使い(腕は良いと仮定)に C/C++への書き換えを依頼するんですが出来ますでしょうか? 因みにそのSEの使用可能言語はC,Java,C++,ASP,VB,Perl,Ruby,PHPです
ここじゃなくて、そいつに相談しろ
でも気持ちはわからんではないw きっとSEは「出来る」というに決まってるだろうからなぁw
まずやめとけ >774 C# -> C/C++ は。。。逆なら大丈夫だと思うが
.NET Frameworkをバリバリ使ってたら事実上無理だろ
>>760 DataSetで問題ないと思う
まあSQLも覚えると楽しいので反対はしないが
DataSetはもともと組み込まれてるものだし、ちょっと試してみては
VB使いにC++をやらせんなよ
でもC#の実装がコボルだったら大丈夫かもw
>778 え゛、.NET FrameworkのC++ぢゃねの?
C# のコードをわざわざ C++/CLI or Managed C++ に書き換える意義は皆無だろ
C#をC++/CLIに変換するだけならCodeParser->CodeGeneratorで十分だろ。 人間にやらせる必要なんてねえ。
785 :
774 :2007/01/08(月) 15:54:14
>>776 そうなんですよ。それが一番恐いんですよねw
今思いついたんですが、Code ProviderでC#<->C++/CLIに変換し
C++/CLIをC++に変換したら読めますでしょうか?
そもそもVB,C#,C++/CLIから、それぞれC++に書き換えるとしたら
言語の構造からしてどれが一番やり易いのでしょうかね?
どうしてもC++に書き換えねばいけないので、聞かせて頂きます
>784 それだ!
787 :
774 :2007/01/08(月) 15:56:52
.NET Framework使ってる部分は置いておくとします
ネイティブで動かしたいんじゃね? 速度もそんな変わらないし、.net入るPCなら環境依存もせず 使えるのにな 実際ネイティブC++にやろうとしたら、GCに任せっぱなしの 糞ソースにメモリ開放ロジックを大量に追加してやることになるだろうなw 腕利きって言ってるんだからやらしてやれw
>>785 わからんではないがお前は間違ってるな
自分のスキルの無さを置いておいて目の前にいる人間を信用できないん
だったら、お前に人を使う資格なんてない
>>787 そこ置いちゃったら話になんねーだろオイ
>>787 CLR使っていいなら人間が変換する必要ないって
>>787 じゃあC#orC++/CLIでdllを書いてC++からはそれを呼び出して終わり
CLRホスティングで解決?
794 :
774 :2007/01/08(月) 16:03:37
失礼しました。ネイティブに変換したいわけなんですよ C#orC++/CLIで製作するとC++に比べて、Vistaでも初回起動や画面描画が遅いし、メモリは少し多めに食うし 新しく開くコントロールの初期化が鈍いし、GUI周りは極端に遅い等、VM上で動かすデメリットやライブラリの悪さ等のデメリットがあり 速度が格段に落ちるようなのでネイティブに変換したいのですが、どうでしょうかね?
それなら変換云々の話じゃない 1から作れ
>>745 割とその感覚に同意
C# に慣れてきた状態で
いきなり Perl の古典的スクリプト読むの辛い
たしかにVSのC#IDEが賢すぎて、慣れると他の言語がかったるくなるな
>>794 お前は本気で言ってんのか?
お前はあほか?
極端に遅いのは作りが悪いからw 作りが悪いままC++に置き換えてもやっぱり遅いww
こいつに使われるやつがかわいそうだw
bool checked=false; 自前のクラスのcheckedが別のフォームとかでtrueになった時点で処理をする ようなプログラムがしたいんですけど これはどういうことを調べればいいですか? キーワードだけでも教えてください よろしくです
その「別のフォーム」で「チェックがtrueになった」イベントを発生させる
別のフォームとやらでそのフィールドを直接いじらせずに プロパティとして公開して、そのsetterでお好きな処理を。
>>799 同意
初期起動や描画が遅いってのは完全に作りが悪い
GUIの表示自体は今のPCじゃ肉眼では判断できないぐらい差はない
文字列処理やcollectionなどに追加するロジックに問題があるんだろうな
>>802 そのイベントを発生させるのに必要なクラスというか命令文というか
そのキーワードを教えてくださいませ
>>803 set
{
checked=value;
if(value)
checkedEvents();
}
こんな感じですか?
イベントがキーワードだろ event
808 :
デフォルトの名無しさん :2007/01/08(月) 18:57:20
初心者的な質問ではないかも知れないんだけど C#でP2P実装って出来んのかな?C++とかJavaならメジャーだが、.NETって聞かないよね
十分初心者的な質問です。 出来ないと思った理由を聞かせてくれますか?
810 :
デフォルトの名無しさん :2007/01/08(月) 19:02:43
前にも似たような質問があったような。 Javaだとフリーのライブラリがあるから楽。 言語の優劣じゃなくてそういうこと。
webサイトのソースを取得する際、初回の WebRequest.GetResponse() が異様に遅いんです。 なんで?
>>808 おそらく今の808にはどんな言語でも実装不可能
回線のResponseが悪いんだろ?
815 :
デフォルトの名無しさん :2007/01/08(月) 19:21:56
Java→C#ってどうやって変換すれば良いんでしょうか?
>>812 初回だけってことは名前解決に時間がかかってんじゃねぇのか?
DNSまわりをチェックしれ。
818 :
812 :2007/01/08(月) 19:32:41
>>817 それがさ、ブラウザでは即効レスポンスなのよ。
実はインターネット回線でVPNもしてるんだけどコレを切ると解決する。
ちなみにVPNの方に問い合わせに行かない設定にはしてある。
ボスケテ
>>760 それを見る限りDataSetとかそういう問題じゃないような。
その60万件のデータっていうのは、全てが同時に必要なデータなのかな?
必要なときだけメモリに読み込むようにすればいいのでは?
鯖側でブラウザじゃないアクセスの場合、レスポンス遅くしてるんじゃないのか? 鯖への攻撃防御とか。
>>819 記述的には一度に全部読み込んだほうが楽だけど
普通は必要な分だけメモリに割り当てるよな
JavaとC#ってVM上か否か以外に何処が違うのか分からない俺が居るw
>>815 多分機械では変換できないと思うよん
>>823 インスタンスとオブジェクトの違いを述べよ
また お ま え か
826 :
812 :2007/01/08(月) 19:45:20
VPN越えてパケットが回ってるだけじゃないのか?
>>827 「リモートネットワークでデフォルトゲートウェイを使う」はチェックしていません。
デフォルトゲートウェイ
830 :
812 :2007/01/08(月) 20:06:54
Route Print してみました。
http://bbs.freedeai.com/src/up0060.jpg 192.168.1.1 ローカルのゲートウェイ
192.168.1.101 実行PC(ローカル側)
192.168.11.1 仮想ネットワークのゲートウェイ
192.168.11.50 実行PC(仮想ネットワーク側)
赤色で消してあるのはVPNサーバーです。
ブラウザでは問題無いので、なんとか出来ると思っているのですが・・・
831 :
820 :2007/01/08(月) 20:09:59
>>830 2.0 で GetResponse が低速になる現象、こっちでも確認したことがある。
んで、俺が取った解決策なんだが……
1.1 を使った(*ノ∀`)
すまね orz
……あ、あれ? 今作ってる奴、2.0 でも低速じゃないぞ……?
>>830 試しに、HTTP 1.0 を使ってみてください。もしかしたらもしかするんで。
最近のマイクロソフトのゲームは何言語で作られてるの? まさか自分たちが勧めてるC#使っていないわけないよね?
ビルがそんな野暮な事するわけあるまい
C#の配列って何かのクラスのインスタンスになっているそうですが、 C言語の配列と同じ感覚でアクセスしたら負荷が酷いことになったりしないでしょうか?心配です。
ゲームは主にVC++
>>835 酷いことにはならんが、どうしても速度を稼ぐ必要があるならポインタ使えばいい。
心配するより、やってみて問題になるくらい遅かったら考えればいんじゃね?
心配だったらVC++のアンマネージドの方を使ったらいいよ。
>>837-839 ありがとうございます。
まずは素直に配列を使って、駄目だったら他の方法を試してみます。
>>836 ネイティブ?
マネージドだと中間コードだからソース覗けるよね?
/CLIでもMC++でもないVC++
なんで一般ユーザーにはマネージド勧めて 自分たちはネイティブでやってるの? せこいね 社内専用VC++12.0みたいなのあるのかな? それくれよ
844 :
デフォルトの名無しさん :2007/01/08(月) 21:02:23
>>843 ここだけの秘密だよ
VC++8なら手に入る
遅い & ソース書き換えたくない & 大量のc++PGが無駄に。
ゲーム作るやつは最初からC++でやれ。常識だろ。 業務アプリでC#が遅いってやつはソース晒せ。ボコボコにされるから。 趣味でプログラムしてて開発効率に無関心なやつは黙ってろ。お前に評価できるわけ無い。 大抵このうちのどれかでおk
848 :
812 :2007/01/08(月) 21:38:12
>>832 残念ながらダメでした・・・
req.ProtocolVersion = HttpVersion.Version10;
tracert
く、串は?串は刺さってないの?
851 :
820 :2007/01/08(月) 22:20:44
>>848 ごめん。こっちも起動直後の GetResponse で遅くなってた (´・ω・`)
それ以降は全く普通にレスポンス取れるんだけど…… orz
イベントとデリゲートの違いを述べよ
854 :
820 :2007/01/08(月) 22:41:46
>>852 それだ!
WebRequest#Proxy に WebProxy.GetDefaultProxy() を設定すると遅いんだけど、
GlobalProxySelection.GetEmptyWebProxy() にしたら早くなったっぽい。
いい加減自分で勉強しろよ。 その質問は、レベル低い。 パンと菓子パンの違いを述べよ。
856 :
デフォルトの名無しさん :2007/01/08(月) 22:43:54
857 :
852 :2007/01/08(月) 22:44:03
これでよかったのか? vpn GetResponseでぐぐっただけだけど。
858 :
855 :2007/01/08(月) 22:45:45
>>855 訳の分からん独り言にいちいちレスすんなよ
>>807 これだと解決しないんですけど
イベント発生させるにはデリゲートを呼ばなければいけないわけで
デリゲート内でcheckをtrueにしてイベント処理(チェックがtrueの場合の処理)を
やればいいってことなんでしょうけど
これはすぐにtrueにならなければ、Trueの場合の処理が行えないことになりませんか?
Trueにいつなるかはユーザーのタイミング次第であり、チェックされるまで次の処理をやらないで待機するようにしたいんです
イベントだと、デリゲートが呼ばれた瞬間、イベント処理が始まるので、falseをイベントハンドラに渡してしまう可能性があります
言ってることの意味が分からん。 もう少し平易な日本語で喋ってくれ。
>>802 つまり、「trueになった」ってことを知りたいんです
trueになるまでは、次の処理をしないようにしたいんです
その後イベントでもメソッドでも何でもいいですけど
Checked=true//←ここでtrueになる
//Trueにならなければここで、待機
MessageBox("Trueになったよ")
>>862 true になるのかならないのか、はっきりしてください。
>>863 trueには必ずなるけど、いつなるかはわかりませんので
その間入力待ちしたいわけです
今時のイベントドリブンな世界で何言っとるだに?
>>862 >>つまり、「trueになった」ってことを知りたいんです
trueになった時点でデリヘルに知らせてやればOK
発想を切り替えろ
つるーになったらリスナーでも呼びだすようにすりゃエーがニ
>>862 while(!checked)Application.DoEvents();
>>862 おまえはプログラムに向いてない。
おまえヘイポー?
>>866 そのTrueになったってことを知りたいんです
なった後にどうすればいいかじゃないです
プロパティでいいじゃないか。ボケ
>>870 だからCheckedにセッターでも作ったって、それが呼ばれたら
リスナーよびゃ―インだろがハゲええええええええええええ
別スレッドで待機したいならManualResetEventでも使え。 同じスレッドならイベントで出来るだろ。 まあ単なるプロパティにしてもいいけど ていうか、何がしたいのか分かりやすいようにかいてくれ
>>868 それは無理です。
処理が終わる終わらないというわけではないので
>>872 セッターとかカタカナじゃなくて英語で教えてください
Trueになったら処理をしたいわけです
Trueにいつなるかはわかりません
その間は処理はしたくないわけです
Trueになったらデリゲートを呼び出せばいいといいますけど
どういう記述をしろといっているわけですか?
Trueかfalseかに関わらず次の処理が行われるので、デリゲートもfalseのまま呼び出されて
True処理がされないことになります。
プロパティだっていってるだろ。 さてはつりだな つりだ。 つ
何がしたいのかさっぱり分かんねーんだよ。 今のコードをさらせ
>>874 わしゃC#よく知らんが
SetChecked(boolean checked){
Checked=true;
でリゲート呼び出し
}
って書きゃいんじゃねーの?
んでCheckedをセットするとこで↑のメソッドでセットするように素りゃインだろ?
頭が固い人はプログラム書かないほうがいいと思う まあ自分だけで完結するならいいけど、質問して他人を巻き込まんでこれ
久しぶりに大型新人登場だな
881 :
デフォルトの名無しさん :2007/01/09(火) 00:02:22
>>874 主語を書いてくれ。
まず誰と誰と誰(?)が居て。
処理をしたいのは誰で、Trueになったことを知りたいのは誰でとか。
それを省略しているから意味が全く分からんのだよ。
SetChecked(true)//←ここでtrueになる //Trueにならなければここで、待機 MessageBox("Trueになったよ")
たとえば、Aさんが歩いてきました A「おはよう」 と言って来たので B「おはよう」 と言い返します しかし、Aさんはいつ来るかもわかりませんし Aさんがおはようと言うかもわかりません。 言うか言わないか、来るか来ないかしばらくまって どうしても来なさそうなら、家に帰ろうとします >言うか言わないか、来るか来ないかしばらくまって この部分を実現したいんです
馬鹿の壁出現。 プロパティ使いなよ。 ところでセッターって言ってる人ってJAVAの人?
Java屋さんです
デリゲート使って何がしたいのか延べよ プログレスバーとか、あるだろいろいろ
>>878 >>882 それだと自分でTrueしてるじゃないですか?
そうじゃありません。
いつtrueになるかはわからないんです
デリゲート使いたいわけじゃなさそうだが。。。 set でいいよ。。。
>>886 いや、デリゲートやりたいと一言も言ってません
誰かが、イベントを使えばできると言ったから
そういう話の流れになっただけで
別にデリゲートとかイベントとかはどうでもいいんです
890 :
デフォルトの名無しさん :2007/01/09(火) 00:06:30
>>884 プロパティとてセッターと表現しても伝わるだろ
そんなところにこだわる奴の方が(ry
893 :
デフォルトの名無しさん :2007/01/09(火) 00:08:32
>>887 SetCheckedメソッドがよばれるときがTrueになる時だろがw
今現在Checkedにtrueをセットしてるところを直接セットするんじゃなく
SetCheckedメソッドを介してセットするようにすれば、そのメソッドが
呼ばれたときがTrueがセットされた時とわかるだろうが
ちなみに
>>878 のコードは
this.Checked=checked;
(C#でthisの表現しラン)
ですたw
お前が何がしたいのか分かるように説明しないからだろ。
AさんBさんてのは、別のスレッドなのか?
そうなら
>>873
>>888 setってプロパティですか?
その中に大量のコードを書くんでしょうか?
setで「Trueになったよ」と知らせるコードだけを書いたとしても
受け取る側はtrueになるまでの間待機しなければなりません
待機している間、たとえばwhileだとwhileの中の処理だけをして
Trueにしてくれないんじゃないでしょうか?
trueになる処理は別スレッドでやりたいんです
>>890 セッター書けというと setXXX( )メソッド書く奴がいるんだよ。。。
こいつのネタで白ご飯3杯は食べれそうだなww まずこいつがプログラマには向いて無いことはだけは、はっきり分かった
>>896 お前は何を言っているんだ
true にしてから知らせればいいじゃないか
>>896 待機してない。
動作は関数とかわらん。
そうか、C#ってプロパティはSetXXXとかのメソッドになるわけじゃなかったんだねw
新しい釣氏発見。
>>894 いえ、それだと無理です。
それを呼び出すにはどうするんですか?
trueになったら呼び出されるといいますけど
trueにいつなるかはわからないので
setCheckedを呼び出さずに、falseのまま次の処理をしてしまうかもしれません
次の処理をしてしまってからではだめなんです
2つのスレッド間で同期をとりたいっていう話なんだろうか?
玉石混交w
お客様のなかにエスパーのかたはいらっしゃいませんかー?
> 受け取る側はtrueになるまでの間待機しなければなりません ちょwwwww待機wwwww うけるんですけどwwwwwマジで それなんていう組み込みwwwww
>>899 Trueにいつなるかわからないのに呼び出せないじゃないですか
呼び出す処理をしている部分をfalseのまま飛び越えてしまうかもしれません
それではだめなんです
>>900 それだと、trueになったというイベントが発生しないと
拾えないということですね。もしwhileに入るときにfalseならfolseのまま
ずっとループするわけで
>>896 873でいってるけどEvent使えばいいんじゃね?
で、Eventをセットするのをプロパティのsetのとこでやると(日本語わかりづらいが
マルチスレッドのコード書いたことあるなら理解できるはず
どうも、コレというレスを意識的に無視してるような気がする
>>904 現在のコード
Checked=True
なんか処理
修正後のコード
SetChecked(True)
なんか処理
SetChecked(boolean checked)
this.Checked=True;
if (checked==True){
OtherThreadObj.callBackMethod();
}
}
だから別スレッドならManualResetEventとか。 AutoReset〜でもいいけど
マルチおつwwwww
>>912 また間違えた
SetChecked(boolean checked)
this.Checked=checked)
if (checked==True){
OtherThreadObj.callBackMethod();
}
}
エスパーじゃないが、 form1とform2があって、form1の内の自作クラスのcheckedがtrueになったとき form2でメッセージボックスを開きたいのか?
917 :
801 :2007/01/09(火) 00:20:14
修正後のコード SetChecked(True) なんか処理 これだと、Checkedの初期値はfalseなので 呼び出されるけど処理もしないで、「なんか処理」 することになります
>>913 コード書いてやれよ
そうすりゃ収まるんだから
>>917 いやだから、プログラム全体の内のどこかではTrueをセットしてるところがあるんでしょ?
そこを修正するんだよ
具体的に何がしたいのか分からんからコードなんて書けん。 あといまアク禁で携帯なの…
> 呼び出されるけど 誰から? Checkedをtrueにした時だけ呼ばれるように汁、って話ぢゃねの?
まじで何がしたいのか分からん。 まず内容を簡潔にケチらずにすべて書け。
つーか今時、逐次実行型のプログラムなんて組もうとするなよ
>>922 CheckedがTrueになったタイミングが知りたいんだろ?
お前らも相当アホだなw
927 :
デフォルトの名無しさん :2007/01/09(火) 00:24:25
こういう話じゃないの? スレッドその1 { : Checked が True になるまでブロックして待つ; なんか処理; : } スレッドその2 { : スレッドその1が見張っている Checked を True にする; : }
>924 だkら、誰かが CheckedをTrue にするんだろ? その時、動かしたい処理を呼び出せよw
>>924 だから誰がタイミングをしりたいんだ?て話だろ。
パターン別に答えも出とる
933 :
801 :2007/01/09(火) 00:26:03
>>921 もし、falseならどうなりますか?
「なんか処理」してしまうでしょ?
なんか処理は、trueにならない限りしたくないんです。
かといって、ずっと足踏みもできませんから、時間がたてば
その処理自体をキャンセルしたいんです
>>919 trueするところはありません。trueになるかならないかは
相手次第です
っていうか、この程度の問題を聞き分けられないようじゃSEとしてつとまらねーだろ 客に向かって主語が無いとかユーのかよw
やばいなwwwwww 次スレよろ!
>>933 あいてって誰だよ
trueにするところが無いならtrueになる事がないって事じゃねーかw
938 :
デフォルトの名無しさん :2007/01/09(火) 00:27:18
>>933 DateTime limit = DateTime.Now + TimeSpan.FromSecond(1);
while(!checked && limit < DateTime.Now) Application.DoEvents();
941 :
801 :2007/01/09(火) 00:27:58
あー、たくさん釣れましたね。。 明日仕事が早いんでもう寝ます。。 付き合ってくれた方はご苦労さんでした
わざとスルーしてるな? 質問にこたえろよwww
943 :
デフォルトの名無しさん :2007/01/09(火) 00:28:30
なぁこれ以上スレの無駄遣いは止めないか?
ちょっと楽しいのにw
自演もいっぱい入ってるな。 IDがないからわかんねw
947 :
801 :2007/01/09(火) 00:29:39
>>928 そうです!!
スレッド2は並列に動いているわけです
そのタイミングをスレッド1で同期させたいわけです
>>930 trueになってからって、なったことを知る方法があるなら
教えてください
948 :
801 :2007/01/09(火) 00:30:07
本気だろ?
950 :
デフォルトの名無しさん :2007/01/09(火) 00:31:13
なぁ・・・このスレ200レスも無駄にしてるよ?
951 :
801 :2007/01/09(火) 00:31:15
>>939 falseの処理はできるだけしたくないんです
ある程度待ちたいんです
お前もニセモンだろが
>>947 スレッドの前に制御構文勉強しろ。
まずはそこからだ。
>>947 だからさっきから言ってるように
>>928 の例で言うと
スレッド2でCheckedにtrueをセットするところをメソッドかなんかに置き換えればいいんだろ
Thread2
Thread1.setChecked(true)
Trhead1
setChecked(booean checked){
・・・・
}
もう放置して ね な い か ?
>947 > trueになったことを知る方法 いヴぇんと、とか
922 名前:デフォルトの名無しさん[sage] 投稿日:2007/01/09(火) 00:22:17 まじで何がしたいのか分からん。 まず内容を簡潔にケチらずにすべて書け。
959 :
801 :2007/01/09(火) 00:34:14
>>954 それもだめです。スレッド2は書き換えできません。
thread1だけでなんとかしたいんです
>>959 OK。そういう用途なら AspectC# 使え。全部解決する。
10ms間隔でtrueかfalseか判定しろ
あほか そんなのポーリングしかないにきまってるだろ
>>959 Thread2
Thread1.check()
Thread1
check(){
Checked=True;
}
Monitorクラスを使えばいいんじゃね?
可能なら
>>960 みたいな反則わざ
それ以外は確実には不可能
>>801 以下にキーワードが書いてあるからそれをぐぐれ
>>958 回答してるやつらが釣りかレベル低すぎ
やっぱり釣りのテクニックってのもあるんだな。 意味ありげな情報を小出しにしつつ、 もっともらしい仕様をこねくりだして、 煽らず真面目を装い、 レスを読まず、 つねにとんちんかんな方向へ向かって回答者の母性愛を誘い……
つーかも前らがちゃんと答えてやってねーから よくわかんないけどきっと同じようなもんだろうってことでこたえてやってんじゃねーかー
俺もしょしんしゃ 適当 bool frag=false; while() { while(!isChecked) { Thread.Sleep( 適当 ) } if(frag==false)処理 frag=true; }
ねもい。
終わったか
973 :
812 :2007/01/09(火) 00:44:11
>>850 >>852 >>854 サンクス!!
それらをヒントに調べたら
WebRequest.Proxy = null;
でOKだったよ!
プロキシを使う・使わないで
WebRequest.Proxy = WebRequest.DefaultWebProxy;
と切り替えることにします。
感謝。
終わったところでスレ立て失敗? ここでスレ立てできないとは。 何故だ
975 :
852 :2007/01/09(火) 00:45:53
そいつは良かった。 でも奴にはてこずっている。
それって構成ファイル設定可?
>>969 変更不可なのかw
.NETでJavassistみたいなのがあるんだったらそれ使うとか。
AspectC#で済むんであればそれでもいいと思うけど
978 :
801 :2007/01/09(火) 00:53:58
>>963 falseだった場合はどうなりますか?
>>970 一番外側のwhileはどうなってますか?
あと、繰り返し処理はだめです
1回だけtrueかfalseかの判定を受け取るので
何度もやるとオーバーヒートします
オーバーヒート
>>978 falseならThread1はまってるんだろ?
982 :
801 :2007/01/09(火) 00:56:14
1回だけの判定をもらうタイミングがわからないわけで そのタイミングがくるまで何度も処理するのはダメなんです 1回だけだから、すぐ処理すると初期値のfalseになってしまいます
983 :
801 :2007/01/09(火) 00:58:02
>>981 check(){
Checked=True;
}
これがよくわからないです。
ただのメソッドですか?
trueだった場合の処理は、判定をもらうところの
直後でないとだめなんです。
trueならいつ実行してもいいってわけではありません。
だから、変更したときが知りたいんです
とりあえず 801 は設計をやり直せ
処理ってなんだ。 初期値に戻るてどういうことだ
986 :
801 :2007/01/09(火) 01:00:08
>>963 これだと、thread2は、Check()を実行したあとに
次の処理をしてしまいます。
それはダメなんです。
どのthreadも値をもらうまでは待機していなければなりません
だから反則わざなしならポーリングしかない 確実には不可能なんだよ
988 :
801 :2007/01/09(火) 01:01:14
>>984 設計も何も、値を受け取るだけなので
どんな設計しても値を受けないとだめなんです
その受ける部分の処理だけが知りたいんです。
おまいら、もうねろよ。
それはダメなんです あとからあとから細かい条件つけんなよ 先に全部出せ
おいおい、変更不可の方も待機が必要だぁ? 反則わざ以外不可能 別スレッドじゃなくて変更可能ならプロパティで十分なのに
>>982 >そのタイミングがくるまで何度も処理するのはダメなんです
ナニを何度も処理すると思っているのかわからん
whle(Checked==false);
Trueになったらする処理
でいんじゃねーの?
まー一度処理シーケンスをちゃんと洗い出して整理した方がいいだろう。
変更可ならMonitorでもいい
同期イベントでいんでしょ? どうやるか知らんけど
>変更可ならMonitorでもいい あいや駄目かな?
>>993 whle(Checked==false);
こんなコード実際にかいたらどうなるかやってみろやw
999 :
801 :2007/01/09(火) 01:08:40
>>992 いや、変更不可のほうは待機しなくていいです
そうでないと、値を返してくれないので
間違ってました
>>993 whle(Checked==false);
↑これしている間も、checkedをtrueにする別のthreadの値を受け付けますか?
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。