文字列のほかにGUIDのポインタも必要だったのだが これはMarshal.StructureToPtrとかつかわんといかんのだな。 結局C#上でメモリ管理せんと駄目になった。
まあそりゃ C# だけで完結しないものに手を出すならそう言う事もあるだろ。
byte[]にしてぶち込んだらダメ?
正確にいうとSI_ACCESSって出来合いの構造体なんで 勝手にbyte[]に変更したりできません。
GUIDじゃないのね
ref Guidでいいんジャマイカ
struct SI_ACCESS { const GUID* pguid; LPCWSTR pszName; ... } です。 で最初に教えてもらったのがpszNameです。StructureToPtrしなきゃ駄目なのがpguid。 ちとスレ違いになってきたのでおとなしくします。
余裕じゃないか! 寝て起きればわかるさ!!!
structのシーケンシャル指定忘れなければ出来るんじゃない?
C#コンパイラだとstructはデフォでsequential
ところでなんで
>>4 の下3つがテンプレに入ってるんだ?
頻出でもない細かい話題をいちいちテンプレに入れてたらきりがないと思うんだが。
前スレ996もそういうつもりで書いたんじゃないだろうし。
18 :
デフォルトの名無しさん :2006/09/07(木) 23:11:42
途中でプログラムを強制終了させるコードは何ですか? WindowsFormとかならApplication.Exit();で良いのですが それ以外の時が分かりません。 神様お願いします。
Environment.Exit ただし意外にもセキュリティ制限でネットワーク越しに実行してたりすると終了できなかったりする。
20 :
デフォルトの名無しさん :2006/09/07(木) 23:30:02
>>19 ありがとうございます。
しかしcsc.exeでコンパイル時にエラーが出てしまいます。
error CS1501: 引数を '0'個指定できる、メソッド 'Exit' のオーバーロードはありません。
RTFM!
なんで試してみる前にMSDNライブラリを見ないんだ
エラーメッセージ読め
24 :
64bitWinXPに移植したいダメ子です。 :2006/09/07(木) 23:37:55
難しいことはできないのですが、 32ビット環境でC++でプログラム作ってます。 使ってくれる人の要望で、 もっと大きな計算ができないの、と言われますが2GByteの壁があります。。。 そこで64ビットにコンパイルしたいです。 ただ広いメモリ空間が欲しいからです。倍でも十分です。 難しいことですか?
25 :
18 :2006/09/07(木) 23:41:28
>>22-23 調べてみました。
どう見ても簡単に解決できました。
本当にありがとうございました。
>>24 ためしに64ビットコンパイラでコンパイルしてみれば。
あとここはC#スレね。
>>24 2GBの壁に当たるような処理って何?
過去にも32KBの壁とか64MBの壁とか色んな壁があったけど、みんな試行錯誤で乗り切ってる
単にバカデカい作業領域を確保するより、メモリをやりくりしたほうが使用メモリ量的にも処理速度的にも効率的だったりすることもあるよ
>>27 多要素間の相互作用を扱うシミュレータとかだと、各要素にまんべんなく
アクセスする場合があるのでスワップで逃げるにもHDDアクセスがボトル
ネックになって実用時間じゃ動かなくなる。
>>28 それは2Gの壁とは何も関係ないんじゃまいか…
>>29 そもそもの前提として 2G じゃ収まらないデータを扱うって話だろ。
木の走査を BackGroundWorker でスレッド処理して、その進捗を ツリービューで見えるようにしたらツリービュー全体が すごい勢いで点滅するんですがなんとかならないですか? 一応、DoubleBuffered は true にしてあります。 走査してる場所の表示は相当するノードのフォントをBoldにしてるだけです。 点滅はノードが見える状態になっているかどうかは関係なく発生します。 まだノードのテキストを設定してるだけですが、将来的にはアイコンとか表示したいなとか思ってます。
走査しているノードが変わるたびに表示を更新しとるということはないよな
>>30 「難しいことはできないのですが」と書いている人が思う「2GBの壁」と、ハードリソースの扱いやプログラム技術に長けた人間が思う「2GBの壁」は違うよ
どこまで「2GBの壁」を具体的に理解しているかも分からずアドバイスなんてできない
それに壁にあたるロジックや仕様も出していない
そもそもC#のスレでC++の事を聞く当たり、とても技術レベルが高いとは思えないがどうかね
>>31 頻繁に部分更新を行って、かつちらつきも避けたいのならツリービューとか使わずに
UserコントロールとかPanel に Paint イベントを書くとかして自前で描画した方が良い
と思う。
>>33 よくわからないけど、未だに
>>28 は「2Gの壁とは何も関係ない」と考えてますか?
漏れは大量のデータをオンメモリで処理する(まさに
>>28 のような状況)のために
64bit OS が実用化されたんだと思ってたけど。
>34 確かに最速っぽいですね。 でも、それはめんどくさい^^;ので避けたいです >31 してます。 ・・・どこかにイベントをためておいて 一定時間ごとに一気に処理すればいいのかな? public void イベント反応部(ScanEventArg e){ queue.push (e); } public void onTimer_Tick(object sender, EventArg e) { SuspendLayout() // いらないかな?; while(queue.count > 0) { ScanEventArg e = queue.Dequeue(); イベント処理(e); } ResumeLayout(); // いらないかな? }
while(queue.count > 0) { ScanEventArg e = queue.Dequeue(); イベント処理(e); } でがんがん再描画するから一緒じゃないの?
タイマーで最新の ScanEventArg を1個だけ処理するんじゃいかんのか?
>>35 > よくわからないけど、未だに
>>28 は「2Gの壁とは何も関係ない」と考えてますか?
おまい、
>>28 =24 だと思ってる?
「とかだと」って言葉を使っているから、
>>28 は一般例を挙げているだけだと思うんだけど
> 漏れは大量のデータをオンメモリで処理する(まさに
>>28 のような状況)のために
> 64bit OS が実用化されたんだと思ってたけど。
HPCクラスタと混同してない?
単体の向上は別物
うざい よそでやれ
41 :
31 :2006/09/08(金) 20:01:52
どうやら36のやり方で、できたみたいです。 SuspendLayout はいらないみたい。 イベントがいまのところ4つぐらいあったのでビジターパターンでやっちゃいました。 いちおうご報告まで。
まじですか
43 :
デフォルトの名無しさん :2006/09/08(金) 23:41:06
C#って結局Cと何が違うんですかね? 私の見立てでは 大規模処理じゃない限りCより高速。 書き方が簡素化された。 メモリ管理とかその辺が強化。 後はな〜んもかわらへんねん。
44 :
デフォルトの名無しさん :2006/09/08(金) 23:43:47
FORTRANって結局COBOLと何が違うんですかね? 私の見立てでは 大規模処理じゃない限りCOBOLより高速。 書き方が簡素化された。 メモリ管理とかその辺が強化。 後はな〜んもかわらへんねん。
>>43 釣りにしては中途半端
もっと聞きかじった風を演出するためにカタカナを多く使いなさい
ム板って結局マ板と何が違うんですかね? 私の見立てでは 大規模処理じゃない限りマ板より高速。 ・・・そろそろやめよ〜
47 :
43 :2006/09/08(金) 23:56:12
本当に聞きたかったのに・・・ アナタはいつもそうやって はぐらかす
>>47 > C#って結局Cと何が違うんですかね?
どんな違いを知りたいのよ
違いすぎて書き始めたらキリ無いんだけど
CもC#もそれぞれ万単位の人間がその確立に力を費やした
そんだけのものをたかが一人の人間で全部理解することは出来ないし、ましてや文章で全部説明することなんて出来ない
「違うものは違うんだ」で十分で、あとは自分の守備範囲でどちらが目的に合うか判断すればいい
おんなじところって何よ? 基本的な文法が近いくらいしかねーんじゃ?
50 :
デフォルトの名無しさん :2006/09/09(土) 10:45:02
Cってのはセクースすること C#ってのはアナルセクースまでいってしまうこと。 常識だろ。そんなもん。殺すぞ。
じゃあC++は二本挿しか
ListView、2.0 だと EndUpdate で ListViewItem.BackColor の変更が反映されないけど何で? ListViewItem.Font はちゃんと反映されてるのに…… EndUpdate したあと Refresh するのも微妙 (;´Д`)
って、反映されていないどころかそもそも塗れてませんね orz マウスオーバーさせて再描画するとやっと反映される (;´Д`)
基礎からやりなおさないか?
C#で別のスレッドで動いてる関数を呼び出すにはInvoke()すればいいみたいなんですが メソッド呼び出しじゃなくてプロパティを取得するにはどうすればいいんですか?
意味分からん もっと整理して再提出 できれば具体的にな
プロパティを取得するメソッドをInvokeで呼び出す。
hoge.Invoke(new MethodInvoker(delegate { hoge.Text = "ほえほえ"; }));
取得はそのまま書いても動いた希ガス
>C#で別のスレッドで動いてる関数を呼び出すには 意味わかんないよママン
Control.CheckForIllegalCrossThreadCalls = true; を全国的に推奨中
JAVAとC#のスレの伸びはJAVAが約3倍、 やはり日本での主流はJAVAなのか?アメリカでは結構シェアありそうなんだが… C++とC#の違いは…C++→C#は超楽勝だけど C#→C++は地獄を3度見るくらいの違いがある程度じゃないかな?
C# のスレだけ見ても仕方がないだろ。.NET 全体で見ないと。 ま、それでも Java の方が現状は優勢だろうがね。 趣味で 5 年ほど C# やってて最近仕事で C++ を使い始めたが、全く困ってないな。 C の基本は P/Invoke の為に最低限学んでいたが。
>>62 >JAVAとC#のスレの伸びはJAVAが約3倍、
しかしあのスレでまとまな回答してるのはほとんどC#使いのオレだ。
JavaとC#はそもそも土壌が違うから比較しても仕方ないんじゃない? C#は事実上Windowsオンリーだし。
>>66 それとは関係ないとしか読めないんだが。
別スレッドで動いてる関数を呼び出すんだぜ? 再入ですらない。
// 別のスレッドで動いてる関数(から UI 部品のメソッド)を呼び出す
// 、となんで読み手がここまで読み解かなきゃなんねぇんだ
>>66 >C#で別のスレッドで動いてる関数を呼び出すには
おまえはこれの意味が分かるのか?
そりゃまあ想像はつくっていうか、まあ分かるんだけど意味不明だろ。
Invoke()と書いてあるから空気読んだだけ いちいち文章に指摘するのはプログラマの本分じゃないし
姉は、設計事務所で働いています。
プログラマの本分というものを教えてください
「動く」プログラムと「正しい」プログラムの違いを理解することです
>>69 いやそれSEの言い分だし。
クライアントの無茶苦茶な要求に晒されてるのは同情するけど、
PGとしては余計な想像しなくていいところまで明文化してくれないと。
学校で習う比率 C# : Java = 1 : 3
>>74 世の中の業務システムの比率 .NET : Java = 7 : 3
Winばかりの業務システムなんですね。
非WinはいまだにCばっかりだしな
規模で見たらWinは中堅だが、数で見たら圧倒的なわけですが
javaはWebとか携帯とかのドカタ案件が多いけどC#だとどんな案件がありますの? やっぱりASP.NETとかのドカタ案件が多いの?
どうでもいい スレ違い
>>77 COBOL FORTRAN を忘れてもらったら困ります
ごめん 忘れるよ
各言語を実習で使用する大学の比率 C : Java : C++ :C# ≒ 90:9:1:0
システム系学科 C > C++ >>> Java > C# ネットワーク系学科 C = Java >>> C+ グラフィック系学科 C++ >> C
マ 板 で や れ
文系 FORTRAN >>> C 共通一次 BASIC
88 :
デフォルトの名無しさん :2006/09/10(日) 23:47:40
Formを作成しました。 Formの最大化ボタン・最小化ボタンは MaximizeBox = false; MinimizeBox = false; で消せますが、キャンセルボタンが消せません。 MSDNにCancelButtonというメンバがありますが、あれは役割が違います。 キャンセルボタンを消す方法教えて頂けないでしょうか?
キャンセルボタンって何ぞや
90 :
デフォルトの名無しさん :2006/09/10(日) 23:57:19
キャンセルボタンとは何ぞや Form#ControlBox = false;
>>90 ありはクローズボタンだったと思うが、ControlBoxプロパティをFalseで消える。
93 :
デフォルトの名無しさん :2006/09/11(月) 00:06:02
>>91-92 ありがとうございます。
しかし上のステータスバーも消えてしまいました。
アレを残してクローズボタンを消す方法はございませんか?
Win32APIを使う事でも実現かのうでしょうか?
上のステータスバーって何だよっつーかおちょくってんだろ
95 :
デフォルトの名無しさん :2006/09/11(月) 00:12:40
分かり辛くて申し訳ありません。おちょくってはいません。 Formの上部に青色のBarがあり、その列に通常最大化・最小化・クローズボタンがあります。 そのBarをさしています。 よろしくお願いします。
なんで自分にしか分からない言葉を当たり前のように使うのかね?
キャプション残ってればタイトルバーも残らんかったっけ? うーんうろ覚え。
ControlBox を false にしただけではタイトルバーは消えない たったそれだけの作業なのに何を間違えたんだ
ただし Text が空文字列だと消えるな。知らんかった。 ま、半角空白でも使えば問題ないが。
100 :
デフォルトの名無しさん :2006/09/11(月) 00:18:32
using System; using System.Drawing; using System.Windows.Forms; namespace WinApp{ public class WinForm : Form { public WinForm() { SuspendLayout(); ClientSize = new Size(350, 90); StartPosition = FormStartPosition.CenterScreen; Text = ""; ResumeLayout(false); FormBorderStyle = FormBorderStyle.FixedSingle; →→→コレを挿入すると消えてしまいます。 ControlBox = false; MaximizeBox = false; MinimizeBox = false; } [STAThread] static void Main() { Application.Run(new WinForm()); } } } いろいろご迷惑かけてすみません。上記ソースでやはり消えてしまいます。
……ほんとだ。知らんかった ('A`)
103 :
100 :2006/09/11(月) 00:19:55
>>99 ありがとうございました!Textに半角入れたら
解決しました。色々ご迷惑おかけしてすみません!
: : : : : : Λ ヽ : : : / : : : : : : : : : : : : : : :\ : : : ', : : : : : /:,ハ } : : / : : : : : : : : : : : : : : : : : : : \: : i : : : : : : : : :},.イ: : /. : : : : : : : : : : : : :ヽ : : : : : : : :\l : : : : : : : :/ /: / : : : : : : : : : : : : : : ', : : : : : : : 、:ヽ : : : : : : :/ノ: : / : : : : : : :/ : : : /: j: l: : l: ', : 、 : : : ヽ: :', !: : : : : ,'、 : : ,' ,': : : : : : / /: : /: /j: !: : }斗‐‐',: : : !: i: :l ',: : : : :l : `ー! !: : : : : :/_厶∠∠.//l: :,ハ,ニ=ァ'i: :l :l: :}:lノ : '、 : : l:\_ r{ {: : : : : :{´{=_;;云ァァ' ,ノノ 仂jイ}/: /:/ // : : ヽ: :lヽ : :{ ヾ\ : ‐=f壬辷'丿; ゚ー〈ノ/ノイ´ : : :',:ヽl : \\ |\: {´¨''¬'"´ ` ``}: :l : :i:l バ カ ば っ か : : : ',: :ヽ: : :`7`T|: : l`ー ヽヽヽ (_ア ,.イ: :.:l : :i l : : : :.',: : :ヽ : {{ 「゙|: : |、ヽ、_ ,.イ: :l : :.l : :i l : : : : :'、: : :ヽrく '、: '、\ `T¬ーrく: :! : !.:.:.:l : :i: l : : : : : ヽ : : : ヽ \ヽ :ヽ \,ハ. ヽハ: : :| : :.l : :i: |
(☄◣д◢)☄ワシャー
106 :
100 :2006/09/11(月) 00:24:07
まあ、釣りだったんだけどな
おれおれ100
>>84 それは専門学校だろ?
大学のネットワーク系専攻だとJavaはもっと少ない、というか授業じゃ使わん。
情報処理試験もC#採用決定済み
ニヤニヤ
111 :
100 :2006/09/11(月) 09:26:01
昨日はありがとうございました。
作成したFormはメモリ12Mも使う重いものです。ソースは
>>100 実は、これを軽くする方法などありませんでしょうか?
ご存知であれば教えてください。
112 :
100 :2006/09/11(月) 09:43:03
すいません自己解決しました。
113 :
100 :2006/09/11(月) 09:47:43
>>112 偽物さんおやめください。
解決はしておりません。
つまりLoad中に固ま(ったように見え)るから 強制終了されないように×を消すってことかな? それなら自前のプログレスバー作って Loading...って出すと良いんじゃないかな だけど別スレッドで動くようにしないと こっちも固ま(って見え)るかな
115 :
100 :2006/09/11(月) 10:13:01
>>111 >Formはメモリ12Mも使う重いもの
まさかタスクマネージャ上で起動前と起動後の
コミットチャージ比較してるんじゃないだろうな
116 :
100 :2006/09/11(月) 10:23:09
>>115 起動中にタスクマネージャのメモリ使用量という項目が12Mでした。
C#でファイル・フォルダ・レジストリのACLを取得する方法を教えてください。 該当する関数がありませんでした。 WinXP
.NET2.0かAPI
重いと言ってるコードは
>>100 そのものなのか?
気にすんな
>>118 すみません。簡単なサンプル頂けないでしょうか?
あつかましくてすみません。神様お願いします。
Deactivate になったら共有変数に眠らせるフラグを立てる 別スレッドは共有変数をポーリングしておく
ManualResetEvent
>>117 System.Security.AccessControl.RegistrySecurity など
サンプルはヘルプにのっとる。
>>108 息子のオープンキャンパスについていったが、少なくとも立命、中京、三重はJavaを使う。
>126 そのコードでVCでネイティブなdll作って、今だけP/Invokeでお茶を濁しておけば? でもって、後からバージョンアップしました!という。
C++/CLIでDLLにすれば?
C++/CLI使えるなら.NET2.0使えるだろ
132 :
124 :2006/09/11(月) 18:27:02
>>117 ==
>>126 でしょ。MSDNにサンプル載ってるか見ろ。
か、おとなしく皆が言うようにDLLつくれ。
>>126 はC#しか知らないVS2003ユーザーなんです!!
誰か助けてください!!
134 :
126 :2006/09/11(月) 19:27:07
私はC#さえよく理解していないCSC.exeユーザーです。 MSDNにサンプルは一部分しか載っていません。 誰かおしえてちょんまげ〜!
136 :
126 :2006/09/11(月) 19:50:31
>>135 ありがとうございます。
でもこれじゃダメなんです。コレだけじゃ分からないんです。
コンパイルすればすぐ使用可能なサンプル探してます。
137 :
126 :2006/09/11(月) 20:11:40
すみません。もうちょっと自分で頭を使ってみます。失礼しました。
138 :
126 :2006/09/11(月) 20:16:07
ここは「作ってスレ」じゃねーんだ。 すっこんでろ。
140 :
126 :2006/09/11(月) 21:35:35
このスレの住人はレベルが低いということなんだね。 なんかガカーリしたよ。
お金くれたらやるけどね。1時間以内で済むから50万でいいよ。
簡単じゃねーかよ。こんなの自分で出来ないんならプログラマーやめちまえ。
見えない!どこからが釣りなのか見えない!
切羽詰まる(せっぱつまる) 物事が差し迫ってどうにもならなくなる。抜き差しならなくなる。 切羽(せっぱ)は刀身を固定する金具のこと。
146 :
126 :2006/09/11(月) 22:37:44
無能プログラマ〜の集まり乙であ〜〜〜〜〜る! きんもー!きんもー!
はいはい、もう寝なさい
148 :
126 :2006/09/11(月) 22:46:07
ひゃっは〜 ここは遠さねえぜ〜 け!ケンシロウ〜!! ひぃ〜!
50万でやるっつってるやん。
150 :
126 :2006/09/11(月) 22:51:58
この程度のプログラムもかけねーって!ほほほほほ本当か!? 。 。 / / ポーン! ( Д )
pinvoke.net おもしれー
152 :
126 :2006/09/11(月) 22:57:44
。 。 \\ エ━━━━━━( Д ; )━━━━━━!!!
153 :
126 :2006/09/11(月) 22:59:25
あ あ あ わ あ う ぁ っ あ ぁ ! あ ぁ ! ! あ ぁ あ ぁ あ あ
これ絶対便乗犯いるな
どこからどうみても釣りです 本当にありがとうございました
おもしろいのか?
Visual C# 2005 ExpressでWebbrowserのDocumentCompletedイベントに エラーを発生させる文を書いたのですが、 実行させるとエラーは検出されず、何もなかったかのように その文以降の行が実行されなくなるだけです。 正常にエラーが検出されるようにするにはどうしたらいいでしょうか?
他人が読んでわかるように書け
On Error Goto
>>157 まず目的を果たす最小限のコードを書け
それが動かなかったらここにそれを書いてみろ
161 :
126 :2006/09/12(火) 09:12:58
( ´д)ヒソ(´д`)ヒソ(д` ) ここは無能な人しかいないらしいよ
162 :
126 :2006/09/12(火) 10:40:13
_ ┌――─┴┴─――┐ │ セルフサービス .│ └―――┬┬─――┘ ││ ./ ゛゛'゛'゛ / / | \/ \ \ \ノ ガッ はセルフサービスになりました。 使用方法は以下のようになります ∧ ガッ< >_∧ = ()二)V`Д´)<ぬるぽ \ヽ ノ ) ノ(○´ノ (_ノ(__) 尚、使用方法を誤ると、最悪の場合、命を落とす危険性がございますので、 初めてご使用される方は、各都道府県に設置してある専門の窓口に相談下さい。 財団法人 全日本 ぬるぽガッ セルフ振興会
荒らしがいついてしまったな
>>157 >エラーを発生させる文を書いた
ってthrowしたのか?
自分でcatchしたんじゃないの?
それで>その文以降の行が実行されなくなる
のだとしたらcatchを削除しろ。
(ここはエスパースレじゃないんだけどな……)
VisualStudioでデバッグすると、 ときどき例外をキャッチしないでそのままうごいてることがあるよな・・・
_, ._ ( ゚ Д゚)このスレは出来ない人の集まりですね
167 :
126 :2006/09/12(火) 14:08:54
_、_ ( ,_ノ` )y━・~~~ そりゃあプログラマー気取りしかいないからさ
>>165 ステップ実行だと発生しづらい例外はある
スレッドとかメモリとかの例外は特に
そういう場合はトレースとか別の方法で調べる
169 :
157 :2006/09/12(火) 15:54:31
レスありがとうございます!説明不足でスマソでした。 最小限のコードを書いてみると、 private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { string testMoji = "例外発生前です"; MessageBox.Show(int.Parse(testMoji).ToString()); // throw new ApplicationException(); でもいいです testMoji = "例外発生後の行です"; MessageBox.Show(testMoji); } 結果はtestMojiに「例外発生前です」を代入しただけで終わってしまいます。 「終わってしまう」というのは、ただプログラム全体が固まるわけではなく、 何もイベントが発生していない状態に戻ってしまうだけです。 (本来だったらプログラム全体の実行がとまり、Visual C#が プログラムのエラー箇所でエラー内容とヒントのダイアログを出すはずです) 試行錯誤してみると、webBrowserのDocumentCompleted以外にもNavigatedや Navigatingイベントも同様にVisual C#が例外を無視しました。 try〜catch文を入れれば例外をcatchで拾うことは出来るのですが、 try〜catchを入れない時ではVisual C#がそれを例外として検出してくれません。 プログラムのデバッグ時に、例外が検出されないとどこにバグがあるか探しにくいので困っていますorz 長文失礼しました。よろしくお願いします。
>>169 >(本来だったらプログラム全体の実行がとまり、Visual C#が
>プログラムのエラー箇所でエラー内容とヒントのダイアログを出すはずです)
これが正しいと信じているのならば、確かに変な挙動だろうね
webBrowser1_DocumentCompletedが呼ばれてないとか
>>169 WebBrowserとかそのイベントはCOMのラッパーで、
もっと上流で例外がcatchされてるみたいだね。
>>169 2003なら、メニューの[デバッグ]→[例外]のダイアログで、「Common Language Runtime Exception」→「System」→「System.FormatException」を選択し、「例外がスローされたとき」を「デバッガで中断」にする
2005なら、メニューの[デバッグ]→[例外]のダイアログで、「Common Language Runtime Exception」→「System」→「System.FormatException」の「スローされるとき」にチェック
なんでも引っ掛けたいなら、「Common Language Runtime Exception」に対してスローされた例外を中断に設定すればいい
>>172 VSより上流なんてない
出力ウインドウ見ればスローされた例外が表示されていることが分かる
適当なこと書くな
System.Windows.Forms.TreeViewで質問です。 ドラッグ&ドロップでTreeNodeの移動を行いたいのですが アプリケーション間でも使えるドラッグ&ドロップを使わず(コントロール内で閉じた処理なので) 何か間単にハンドリングする方法はありますか?
TreeViewを継承したクラスを作って、その中で処理する。
EnableTreeNodeDragDropみたいなプロパティTrueにしたらおしまいみたいなうまい話はありませんか。 マウスイベントひっかけてコピー元、先きめて移動ってコードかかないと駄目ですか。 やるか。。
>>169 webBrowser1_DocumentCompletedは、webBrowserコンポーネントがCOMイベントとして
(ラッパ経由で)呼び出すものだ、というのはわかりますよね。
COMのイベントハンドラは例外を上げられないので、(COMには実装非依存の例外機構はないから)、
ラッパが例外を catch してエラーとして webBrowser に返すよりないわけです。
COMに限らず人の作ったコードが例外をキャッチしているかそのまま上げているかなど
わからない場合が多いわけですから、人の作ったコードからコールバックされる関数内では
どう処理されるかわからない例外を上げたりせずに、
自分でキャッチしてエラー処理を行うのが良いと思います。
>>178 実際C#はVC#を強く意識して作られてる言語だからいいんじゃないの
182 :
157 :2006/09/12(火) 20:20:47
webBrowserの件で質問した157、169です。
アドバイスしてくれた方々本当にありがとうございました。
>>173 さんの方法で解決できました!
>>179 すみません、仕組みが全然理解しきれてなかったんですが
すごく参考になりました!
不具合だと思ってたんですがただ単に私の勉強不足でした…。恥。
ありがとうございました。
>>179 それ、デバッガとしてのVSの挙動と、アプリケーションの挙動をごっちゃにしてるから
>>178 変だと思うならそれを提議しろ
Wikipediaはそうやって成長させるものだ
185 :
126 :2006/09/12(火) 23:38:07
_ ┌――─┴┴─――┐ │ セルフサービス .│ └―――┬┬─――┘ ││ ./ ゛゛'゛'゛ / / | \/ \ \ \ノ ガッ はセルフサービスになりました。 使用方法は以下のようになります ∧ ガッ< >_∧ = ()二)V`Д´)<ぬるぽ \ヽ ノ ) ノ(○´ノ (_ノ(__) 尚、使用方法を誤ると、最悪の場合、命を落とす危険性がございますので、 初めてご使用される方は、各都道府県に設置してある専門の窓口に相談下さい。 財団法人 全日本 ぬるぽガッ セルフ振興会
>>184 だからここで問うてるんじゃあるまいか?
#個人的には、Wikipediaのノートでの議論は御免こうむりたい。。。
つーかCOMじゃなくても非同期イベント (つまりはバックグラウンドのスレッド側)で例外投げたら おんなじことになるんとちゃうの?
188 :
126 :2006/09/12(火) 23:55:40
_ ┌――─┴┴─――┐ │ セルフサービス .│ └―――┬┬─――┘ ││ ./ ゛゛'゛'゛ / / | \/ \ \ \ノ ガッ はセルフサービスになりました。 使用方法は以下のようになります ∧ ガッ< >_∧ = ()二)V`Д´)<ぬるぽ \ヽ ノ ) ノ(○´ノ (_ノ(__) 尚、使用方法を誤ると、最悪の場合、命を落とす危険性がございますので、 初めてご使用される方は、各都道府県に設置してある専門の窓口に相談下さい。 財団法人 全日本 ぬるぽガッ セルフ振興会
>>186 WikipediaのことはWikipediaで議論しろ
まだ存在しない内容ならともかく既に存在するものなんだから、そこで議論するのが筋だろ
>>187 >>157 はスローされた例外をデバッガで受けて中断する方法を知りたかっただけ
で、その方法は例外の設定を行うだけの話
>>169 の質問と
>>182 のレスを見て明確に分かる
多分それを知らない香具師が勝手に「絶対にIDEでキャッチできない」と思い込み、キャッチできない理由を思い込んで勝手に書いてるんだろ
そこから話がぶれて変な方向に流れている
特に
>>179 はデバッグ時の話であることも忘れて自分でキャッチしてエラー処理とか書いていてひどい
確かにコンポーネント内で完結してバブリングしてこない例外はあるが、明確に自分のコードで例外を書いていて上がってこないなんてのは無い
今回の何か出力ウインドウに明確に出てくるし、他のもデバッグ用の各種ウインドウを見ていれば気付くもんだと思うんだけどな
はいはい、すごいでちゅねー
>>190 まあよくわかんないラッパークラス使うときやDBアクセスの時は
try-catch入れるのは基本だろうけどな。
後々の為に最低でも自前でエラーハンドル用のDLLでも用意しておいて
イベントビューアーくらいには書き出すのが普通。
>>179 の言ってることは最もだと思うが…
よくわからないのならなおのこと catch すべきじゃない
それじゃコーディングで動くと思ってリリースしたものが それを使ってるパソコン音痴の人から"変なエラーが出てとまっちゃうんですけど" とか言われたらどうするんだ?(ニヤニヤ
catch されなかった例外をキャッチする方法を知らないのか?
今回の場合は自分でcatchしてログを吐くなりメッセージを表示するなりしないと デバッガなしで実行したときに例外が発生してること自体認識できないんだけどな。
かわいそうに、変なアドバイスでcatch入れなかった人はエラーが出たとき 直に原因が特定できなくてクビ。"catch入れろよ、俺のバカ!俺のバカ!キャッチー、 キャッチにだまされたうわぁん…"といいながら後悔の暮らしを送ってしまうなw
例外のハンドリングは外部要因で発生が予見されるところに入れておけばいい それはファイルやDBなどの物理アクセスや外部のデータを受け取って処理するところ 論理的に発生しないようなところは不要 そういうところで出た例外はApplication_Error/ThreadException/UnhandledExceptionEventHandlerで受け止めるべき
要はこういうこと? >デバッガで例外を取れない これはVSの例外の設定で対応 >実行時に例外が起きているはずなのに何も起きないように見える これはWebBrowserコンポーネントが例外を親に投げないために発生 内部でcatchするしかない
201 :
126 :2006/09/13(水) 22:59:55
_ ┌――─┴┴─――┐ │ セルフサービス .│ └―――┬┬─――┘ ││ ./ ゛゛'゛'゛ / / | \/ \ \ \ノ ガッ はセルフサービスになりました。 使用方法は以下のようになります ∧ ガッ< >_∧ = ()二)V`Д´)<ぬるぽ \ヽ ノ ) ノ(○´ノ (_ノ(__) 尚、使用方法を誤ると、最悪の場合、命を落とす危険性がございますので、 初めてご使用される方は、各都道府県に設置してある専門の窓口に相談下さい。 財団法人 全日本 ぬるぽガッ セルフ振興会
cで以下のように宣言された構造体 struct { int count; char buf[1]; } ただ実際はbufのサイズは1でなく可変でcountバイト数取られています。 これをC#で宣言するにはどうすればいいのでしょう? char* bufではありません。
byte buf[]; にしといてArray.Resize()
struct { int count; char buf[0]; }
C# だと sizeof(char) は 2 よ
そう言う構造体を使う C の関数と相互運用する場合は、 C# 側では基本的に構造体を使えない。
じゃMarshal.AllocHGlobalで必要サイズとってIntPtrでわたして C#側でオフセット計算してMarshal.ReadInt16とかで自力アンマーシャルか。 今ヘルプみたらAllocHGlobalってLocalAllocのことか。わざわざDllImportしてたわ。
LocalAlloc じゃなくて GlobalAlloc な。Win32 じゃ同じだけど。
コントロールのネーミングってどうするのがベター?
>>208 MSDNに
「このメソッドは Kernel32.dll の LocalAlloc Win32 API を公開します」
って書いてあるんだよ。名前からしてGlobalAllocなのに。
>Win32 じゃ同じだけど
へー。
>>210 どう読めばそう理解できるのか教えて欲しい
Marshal.AllocHGlobal メソッド (Int32) (System.Runtime.InteropServices)
http://msdn2.microsoft.com/ja-jp/library/s69bkh17.aspx > Marshal.AllocHGlobal メソッド (Int32)
> GlobalAlloc を使用して、プロセスのアンマネージ メモリからメモリを割り当てます。
> Marshal クラスにはメモリ割り当て API メソッドが 2 つ用意されていますが、AllocHGlobal はその 1 つです。
> (なお、もう 1 つは Marshal.AllocCoTaskMem です。このメソッドは Kernel32.dll の LocalAlloc Win32 API を公開します。
> LocalAlloc の詳細については、MSDN ライブラリを参照してください。
下の解説に限れば、括弧が閉じてないから「Marshal.AllocCoTaskMem です。」の後ろに 閉じ括弧を脳内補完すればそう読めると言えないこともない。 まあ、一番上にGlobalAllocと書いてあるから普通は間違えないが。
頭からちゃんと理解していけば括弧の補完位置もブレないとおもうけどな どうせカッコイイコメンツしようと思って慌てて斜め読みしたんだろ
でも、英語版
http://msdn2.microsoft.com/en-us/library/s69bkh17.aspx は
AllocHGlobal is one of two memory allocation API methods in the Marshal class.
(Marshal.AllocCoTaskMem is the other.) This method exposes the LocalAlloc Win32 API from Kernel32.dll.
For additional information about LocalAlloc, see the MSDN Library.
になってるな。英語版を見てたのかも知れんぞw
間もなく
>>210 から「英語読めるから」発言が来ると思われるが、どっちにしても頭から見れば間違わないけどな
説明の順序的にも意味的にも
おまえら根性曲がりすぎてないかw
AllocCoTaskMemはCOMのCoTaskMemAllocを公開してるから英語版の括弧の位置は正しいな。 「このメソッド」はAllocHGlobalを指してる。 Reflectorで見たらAllocHGlobalは確かにLocalAllocを使ってるぞ。
218 :
210 :2006/09/14(木) 13:53:41
英語版じゃなくてVS2005についてくるMSDNだ。 でMarshalのメンバ一覧のとこ。
219 :
デフォルトの名無しさん :2006/09/14(木) 14:29:32
ねぇねぇ、今どんな気持ち?
∩___∩ ∩___∩
♪ | ノ ⌒ ⌒ヽハッ __ _,, -ー ,, ハッ / ⌒ ⌒ 丶|
/ (●) (●) ハッ (/ "つ`..,: ハッ (●) (●) 丶
| ( _●_) ミ :/
>>212 :::::i:. ミ (_●_ ) |
___ 彡 |∪| ミ :i
>>215 ─::!,, ミ、 |∪| 、彡____
ヽ___
>>217 ヽノ、`\ ヽ.....::::::::: ::::ij(_::● / ヽノ ___/
/ /ヽ < r " .r ミノ~. 〉 /\
>>218 丶
/ /  ̄ :|::| ::::| :::i ゚。  ̄♪ \ 丶
/ / ♪ :|::| ::::| :::|: \ 丶
(_ ⌒丶... :` | ::::| :::|_: /⌒_)
| /ヽ }. :.,' ::( :::} } ヘ /
し )). ::i `.-‐" J´((
ソ トントン ソ トントン
おまいらx86とx64のメモリ管理APIについて勉強しなおして来い 関数名だけで判断しているとマイグレーションの時にやられるよ
心配するな。ただMSDNにケチつけてるだけだから。
何でもいいけど真相はどうなのよ ヘルプの文面だけじゃなく、実装レベルでの回答希望 GlobalAlloc/LocalAlloc/HeapAllocの使い分けなんて16時代の遺物に振り回されるのはもういやだね
なぜそこでHeapAllocが出てくる
malloc/calloc最強
HeapCreate/HeapAlloc/HeapDestroyだけでご飯3杯
>>222 おれ本当にわからん。
現状は大丈夫なんだけどMarshalクラスの実装が変更されても大丈夫なように
DllImportでLocalFree呼んだほうがいいのか?
229 :
デフォルトの名無しさん :2006/09/14(木) 21:57:29
WebカメラでJPEG画像を取り込むには、どうしたらいいのでしょうか??
赤ちゃん大好き! Web カメラと動作検出
231 :
デフォルトの名無しさん :2006/09/14(木) 22:23:35
>30 それみたんですよー。 複雑すぎるんですよー。 motion ditectと絡みが激しくないですか?? ちょっと消すとすぐバグが; 単純な機構を知りたいです。
質問です。 C♯でSystem.Net.WebRequestを使って、とあるPHPプログラムにPOSTするプログラムを組んでいます。 で、普通にpostするのは成功したのですが //文字コード指定 System.Text.Encoding enc = System.Text.Encoding.GetEncoding("shift_jis"); //POSTするデータを作成,URLエンコードをする。 string postData = System.Web.HttpUtility.UrlEncode(str,enc); //バイト型配列に変換 byte[] postDatabytes = System.Text.Encoding.ASCII.GetBytes(postData); こんな感じで、URLエンコードをすると、PHP側の$_POSTが完全にNULLの状態になります。 PHP側かC♯側かで迷ったのですが、調べてみるとPHPはURLエンコードは自動でデコードするらしいので URLエンコードしてない時に正常ならば、あちらは問題ないと判断しました。 で、C♯側を疑っているのですが、何か怪しいところはありませんでしょうか? ちなみに、ヘッダ指定は
233 :
232 :2006/09/14(木) 22:50:34
//サーバーへ接続
System.Net.WebRequest req =
System.Net.WebRequest.Create("
http://なんとか.net/ ");
//メソッドにPOSTを指定
req.Method = "POST";
//コンテンツタイプを設定
req.ContentType = "application/x-www-form-urlencoded";
//POSTするデータの長さを設定
req.ContentLength = postDatabytes.Length;
こんな感じです。
234 :
デフォルトの名無しさん :2006/09/14(木) 22:56:06
>>232-233 そのPOSTってのは
age=17
とかだよね?
PHP側は、$_POST['age']って感じだろうけど
そのstrの中身はわからんので何とも言えんが、この例のage=までエンコードしてるんじゃないか?
>>225 メモリ管理しっかりやりたきゃCやC++、
コンパイラでがたがた文句言うならインラインアセンブラ使えと
突っ込みたい人がいぱーいいるだろうね。
ガベージコレクションが100%信用できないC#なんて意味あるのかと…
FlashのGCに比べれば1万倍マシ
238 :
デフォルトの名無しさん :2006/09/14(木) 23:43:57
つか、業務でC#を使ってるとこってあるんですか? 未だにVC++6/MFCでやってる部署はイタイですか?
業務による
煽りたいのか卑下したいのか…ハッキリ汁ヽ(`Д´)ノ
もう、うちはC#しかやってないし。
>>238 今、VC++6/MFCでやってるが開発効率悪くてやってらんね
アホですいません a |= 1; の逆で特定ビットを0にするときはどうすれば?
&= ~
&= ~1;
247 :
デフォルトの名無しさん :2006/09/15(金) 01:30:07
ドリンク,フード+ハンバーガー と言う文字列を TreeViewコントロールに +ドリンク -フード +ハンバーガー こんな感じで展開しないと行けないんですが、 Nodes.Addだと、出来ませんし、 何かうまい方法無いでしょうか? もちろん,と+の法則はそのままに、文字列は動的に変動しますので・・・。
字句解析してTreeViewにAddするメソッド書けばいいやん
自前でバース汁
>>248 その場合、2段以上の階層の深さに対応したりとかの、アルゴリズムがどうも思い浮かびません。
TreeView1.Nodes(0).Nodes.Addだったり、
TreeView1.Nodes(0).Nodes(0).Nodes.Addだったりで・・・
TreeNode オブジェクト、意識的に作った事あるか?
それ以前に,と+のそのやり方だと作れない。 多分引っかかってるのは、そこに問題があるからだろうけど・・・ たとえば、フルーツとジュースがあり フルーツの下に、バナナとリンゴがあって バナナの下に、フィリピンバナナと台湾バナナがあるとする。 この場合、お前さんの考えてる構文だと表現できない。
>>253 うあ、書いてみて気づいた書くまで気づかんかったorz
わかりやすく表現するなら とりあえず、紙の上にN分木の絵を描いてみな。 んで、それぞれのノードを表現するならば、後ろから順にROOTまでノードをたどればいいわけ。 そいつを表現すれば、ちゃんとツリー構造を作る事が出来る構文が出来るはず。
>>255 それは確かにわかり易いかも知れないが、
無駄が多すぎるぞ。
階層が深くなったら、その1つ1つのノードのためにルートまでのノード全てを構文に残すのか?
実装すると、恐ろしくメモリを食うと思うが・・・。
この手の話には、もはや決まりごとのような方法がある。
それが
分かれば苦労は無い。
>>247 データと結果しかなく、どう展開するべきかの仕様が欠落している。
データと結果だけからすれば「,」「-」「+」をデリミタに分割してインデックスの若い順からデリミタに従って順に処理するだけで済む話。
再帰なんて不要でループと条件分岐だけ。
実際はそうじゃないだろ?
・同一レベルのノードの表現
・子ノードから親ノードへ戻る表現
・デリミタをエスケープする方法
色々考えるところがあるんじゃないの
C#云々以前に設計レベルで緩すぎるよ
259 :
デフォルトの名無しさん :2006/09/15(金) 02:57:18
質問です。 LiveMessengerのログイン画面のような ログイン画面と、ログイン後の画面が同じフォームにあるようなタイプって 1つのフォーム上に全てのコントロールを配置してから、可視・不可視を切り替えてるのでしょうか? それだと、ものすごくデザインがしにくいのですが・・・
個々の TabPage に分けて配置してタブページを切り替えるのがお手軽
似たような形の新規フォームを作成 あとは、読み出し元の本物のフォームの、タスクバーやら何やらを全て不可視へ これで、2つのフォームなのが1つのように見える
262 :
デフォルトの名無しさん :2006/09/15(金) 08:41:29
あるクラス(関数?)から「品名1、品名2」(topic)についての 「名称、数量、値段」(item)の数値が吐き出されてくるんですが これをlistviewにDetail表示するために 文字列を結合して "名称:数量:値段:名称:数量:値段" のような文字列にし 作った文字列をtopicの数ごと分割、さらにitemごと分割して表示するクラスに渡して表示していたのですが もっと上手な表示方法ありませんでしょうか・・・・ ↓こんな表にしたいんです ┏━━━┳━━━┳━━┳━━┓ ┃ ┃名称 ┃数量┃値段┃ ┣━━━╋━━━╋━━╋━━┫ ┃品名1 ┃りんご ┃10 ┃1000┃ ┃品名2 ┃みかん┃30 ┃1500┃ ┗━━━┻━━━┻━━┻━━┛ わかりにくくて申し訳ありませんが、よろしくおねがいします
初心者は初心者スレに行け
264 :
デフォルトの名無しさん :2006/09/15(金) 09:02:58
>>259 機能別に作成したユーザコントロールを状況に応じて動的に切り替える
なんでも1フォーム上に放り込むのは避けるべき
>>260 それやろうとしたけどタブの非表示方がわからない
C#でというか.NETでOLE埋め込みドキュメントとかいじれるのでしょうか? クライアントとサーバーの両方キボン。
C#でコントロールを作成しています。 シリアライズ機能について質問があります。 フォームに自作コントロールを貼って、自作デザイナを開き 編集してあるプロパティにデータを書き込みます。 デザイン終了時に、resxファイルにシリアライズされたデータが出力されます。 resxファイルのシリアライズ情報を見ると目的のデータの先頭が以下のようになっています。 <data name="<コントロール名>.<プロパティ名>" mimetype="application/x-microsoft.net.object.binary.base64"> なぜか「type」が出力されません。 出力させるようにはどうしたらよいでしょうか? ご存知の方がいらっしゃったら教えてください。
271 :
デフォルトの名無しさん :2006/09/15(金) 19:12:06
ファイルの更新日時と現在時刻をunixtimeで得るには どうしたらいいですか?
引き算して TotalSeconds 閏秒どうなってんだろね?
275 :
デフォルトの名無しさん :2006/09/15(金) 23:27:20
oleDbDAdpr_ = new OleDbDataAdapter("SELECT * FROM A INNER JOIN B ON A.a=B.b", oleDbCon_); dataSet_ = new DataSet(); oleDbDAdpr_.Fill(dataSet_, "hoge"); Fillメソッドでエラーが発生します。 なぜですか?
どんなエラーかぐらいは表示されてるんだろうから書かないとな
ToolStripSeparatorのEnabledプロパティは 使っちゃいけないみたいなこと書いてあるけど、 じゃどうやってクリックイベントが起きないようにしろってんだ…… セパレータのくせに誤クリックに反応しやがってメニューが閉じてうざい。 いちおうEnabled= false で期待した動作にはなるけど
278 :
デフォルトの名無しさん :2006/09/16(土) 00:22:38
>>276 その程度のコードのエラーが想像できないような奴は
どんなエラーかを知ったところで解決策がわかるとは思えんが・・・
>>278 >>276 ではないが、一般論として想像できようができまいがエラーの内容くらいは書くべき。
常識だろ。何をいまさら
280 :
デフォルトの名無しさん :2006/09/16(土) 00:43:17
Wavファイルのデータ波形を描きたいと思っているのですが Wavファイルを扱う便利なクラスってありますか?
標準ライブラリにはないな
>>282 うーそうですか
DirectXをちょっと見てみます
だったら想像して解決策を書いてやってくれ。
286 :
デフォルトの名無しさん :2006/09/16(土) 01:35:18
質問です。 ListViewコントロール使で、マウスでドラッグしてリストの中の項目の順番を入れ替えたいのですが AllowColumnReorderプロパティーをTrueにしても、入れ替えが出来ません。 他に何かプロパティーがあるのでしょうか? それとも、そういう処理は実装しないといけないのでしょうか?
Column ってのは Detail 表示のときの上部にあるヘッダだぞ ListViewItem を並び替えたければ自分で組め
みなさんToolTipまわりでエラーに出会ったことありませんか? 自分で作ったToolTipならまだしも、 コントロールのinternalなフィールドのToolTipでエラーが出るときは どうしたらいいんでしょうか。 特に終了時に例外がまれにでます。 スタックトレースみると CheckReleaseやCreateHandle等で失敗(InvalidOperation)していますが、 再現性がありませんorz
メディアプレイヤーのような、URLを突っ込んだらストリーミング再生が出来て コーデックを入れたら、色んな形式に対応出来るようなのを作りたいのですが、 WMPって、MCIでしょうか?DirectShowなのでしょうか? どちらも、プロパティにタグ情報を取得するようなのが無かったのですが・・・ また、C♯でWMPみたいなのを手軽に作るには、何かいい方法はないでしょうか?
>>288 どういう使い方してるんだか。。。
漏れはToolTipを結構使ってるけど、発生したことがない。v1.1,2.0ともに
(デザイナでも、手動で両方とも使ったことがある。
>(自分の作った)コントロールのinternalなフィールドのToolTip
とりあえず、Designerで生成しているときのように宣言してる?
new ToolTip(this.components);とか
>>289 WMPのActiveXコントロール使うか、WPFのMediaElement使うと幸せになれるかもしれない
質問失礼します。 VS2003 C# でコンソールアプリケーションを作成中です。 ユーザーが×ボタンを押したタイミングを拾いたいのですが可能でしょうか?
×ボタンが無いとも限らないだろ
>>294 確かに。
ユーザーによる終了のタイミングを拾いたいです。
無茶を言っていますが、C#ならもしや、、、と思い質問しました。
返答からすると無理っぽいですね。。。
296 :
デフォルトの名無しさん :2006/09/16(土) 11:53:32
非侵入型でシリアライズを カスタマイズする方法は用意されていないのでしょうか?
297 :
289 :2006/09/16(土) 12:52:05
>>291-292 ありがとうございます。
なるほど、WMPのActiveXコントロールですが・・・
とりあえず、参照設定をしてみたんですが
使い方がわかりません。。。
MediaPlayerの中の名前空間の中を見てみたんですが、それっぽいのがMediaPlayerClassってのがありましたが
MediaPlayer.MediaPlayerClass mplayer = new MediaPlayer.MediaPlayerClass();
は出来ますが
mplayerと言うインスタンスは利用できないんです。
どのような方法で使うのでしょうか?
MSDNにも乗ってませんし、検索してもそれっぽいのはないんで・・・
ポトペタではっつけられるっしょ
>>296 XmlSerializerのMSDNドキュメント
***OverrideAttribute
コンソールアプリで×ボタンとか発想がまちがっとる。 がキャプション設定とかもできたりするので、ないとも限らんかもしれん。 まあ、ProcessExitだったかとか、DomainUnloadだったか、その辺のイベントでできるかもしれん。 この場合は×を押したか?なんてのは無理だが。
301 :
289 :2006/09/16(土) 13:45:03
>>298 ぉ、ポトペタは出来ました。
…が、.NETのフォームに貼り付けただけなのに、ソフトが起動しなくなりました。。。
貼り付けたのをはがすだけで起動します。
何か処理しなくてはいけない事があるのでしょうか?
コンパイル通るので、参照設定はうまく行ってる筈なんですが・・・
302 :
289 :2006/09/16(土) 13:47:22
VSからデバッグ起動すると 'System.Runtime.InteropServices.COMException' のハンドルされていない例外が System.Windows.Forms.dll で発生しました。 追加情報: クラスが登録されていません (HRESULT からの例外: 0x80040154 (REGDB_E_CLASSNOTREG)) と出て、Form1.Designer.csの ((System.ComponentModel.ISupportInitialize)(this.axWindowsMediaPlayer1)).EndInit(); ここで止まります。
確かそれWMP9が原因だったはず WMP9から、何故かそのエラーが出るようになった。 本来はOCXが登録されてないため出るエラーだけど、確か他のマシンでもそうなるはず。
regsrv32 wmp.dll とか
Google に聞いてもあんまり事例がないな。 Win64 だったとか。
306 :
289 :2006/09/16(土) 14:27:44
>>304 う〜ん、それをやっても駄目でした。
>>305 そうです!
すみません、最初に書いておくべきでした。
開発環境はWinXP x64なんです。
生成したバイナリは32bit機でも動きませんでした。
登録したWMP.DLLはSYSWOW64ディレクトリ内のものなのですが、それがいけなかったのでしょうか?
307 :
289 :2006/09/16(土) 14:32:31
あ、勘違いでした。 生成したバイナリは32bit機では動きました。 なるほど、64bit環境自体での問題だったんですね。。。 どうもありがとうございました。 64bitでも動く方法があれば、ご提示いただけないでしょうか?
>>307 動作環境をAnyCPUになってると思うけど
それをx86に限定する。
.NETは自動的に環境に合わせちまうから、多分64bitで動いてるんだと思う
そこに32bitのDLLのWMP.DLLを読み込むから、読み込めずに止まる(64bitアプリから32bitDLLは読めない)
309 :
296 :2006/09/16(土) 14:50:05
>>299 XmlAttributeOverrides
SoapAttributeOverrides
ですね。ありがとうございました。
XmlSerializerにはSurrogateSelector が使えないのでしょうか?
311 :
デフォルトの名無しさん :2006/09/16(土) 18:34:05
string aa = "aaa"; MessageBox.Show(aa.GetHashCode().ToString()); こんな感じで出したハッシュコードが実行のたびに変わるんですけど aaaって文字列ならずーっと同じハッシュコードを出すようにするにはどうすればいいのでしょうか? あと、このハッシュコードのアルゴリズムを変える事は出来ないのでしょうか?MD5とかSHA1とかに
System.Security.Cryptography.MD5CryptoServiceProvider
自分の子でないWindowに対する入力はどうやって得ればいいですか? いざとなったらC#でなくてもいいのでよろしくお願いします
お手軽にやるなら SendKey とか
別プロセス? WM_CLOSE 送るのが正道だが
自分の子でないWindowに対するForcusはどうやってやるのか質問が来そうだな。
318 :
デフォルトの名無しさん :2006/09/17(日) 00:38:07
>>311 のは何でうまくいかんの?
毎度変わるとは思えないんだが・・・?
>>318 毎度変わるかは別として、
実行毎に同じオブジェクトのハッシュコードが同じであることは「保障されてない」。
ついでに言っておくと、同じことが保障されているのは、「実行時の同じオブジェクト同士」のみ。
# それ以外の場合は、変わっている場合もあるし、稀に同じ場合もある。
320 :
デフォルトの名無しさん :2006/09/17(日) 03:11:19
byte[]データ同士の結合をしたいのですが、 そういうメソッドはありませんか? 片方のbyte[]データは、数Mのデータなので、一度stringに戻してから結合して〜って言う方法は使えないんで・・・
リサイズしてからコピーすればいいじゃん
322 :
デフォルトの名無しさん :2006/09/17(日) 03:50:28
プログのサイト教えて
323 :
ご質問です。 :2006/09/17(日) 03:58:57
すみませんが、日時の取得についてご存知の方が いらしましたらご伝授下さい。 下記形式にて日時(時間・秒)を取得したいのですがどの様にすれ ば良いでしょうか? <System.Date.Now.ToString()・・・> 具体的には【3時】の場合、24時間表示で【03】という風に ゼロサプレスせずに表示させたいです。 【出力例】 2006 09 16 03 54 (年) (月) (日) (日) (秒)
324 :
ご質問です。 :2006/09/17(日) 03:59:51
すみません。間違えました。 【出力例】 2006 09 16 03 54 (年) (月) (日) (時) (秒)
>>318 >>311 は「stringオブジェクトの」ハッシュコードを得てるぞ。
文字列"aaa"のハッシュコードじゃない。
ヘルプをよく読むとわかるが、GetHashCode()で返ってくる値は
「文字列"aaa"を格納しているstringオブジェクト」のハッシュ値。
>>323 Date は DateTime の間違いだと思うんだけど、一応
DateTime.Now.ToString("yyyy mm dd hh ss")
で
2006 09 16 03 54
になったような気がする。全く確かめていないが。
どうでもいいけど、「ご質問」って敬語の使い方として合っているのか……?
あと、0で埋めるのか埋めないのかをはっきりしてくれ。
ToString("yyyy/MM/dd HH:mm:ss") 前ゼロは2桁 前ゼロなしなら1桁 3桁4桁にすると・・・ヘルプ嫁
Stringって同じじゃないんだな(別にそれで困るわけじゃないんだが)。 どういう実装になってるんだろ。
ああハッシュコードの話ね。
>>328 ildasm.exe
mscorlib.dll の String.GetHashCode
331 :
330 :2006/09/17(日) 06:02:25
>>328 Reflector for .NETのほうが分かりやすいかも。
ゴミレスすまん。
Stringは値等価で比較だからGetHashCodeの値も同じにならないとおかしい。
>>311 の勘違いだと思う。
ライセンス違反教唆
SDKにildasmを付けてる時点で覗いてくれと言わんばかり
そういうときのSSCLIですよ。
336 :
ご質問です。 :2006/09/17(日) 11:50:39
>>326 さん・327さん
解決致しました。どうもありがとうございます(^-^:)b
DOS画面でキーボードの検出を行いたいのですが、どうやるんでしょうか? Console.ReadやConsole.ReadLine等のように実行処理が止まってしまうのは処理上マズイので、 キーボードの状態を取得するだけで良いのですが。
入出力スレッドと内部処理スレッドを分けたら?
2.0ならReadKey()
340 :
337 :2006/09/17(日) 13:45:07
>>338 >>339 返答ありがとうございます。
マルチスレッドで解決できました。
気になるので調べておきます。 < ReadKey()
C# 2005 で教えてください。 Typeオブジェクトやリフレクションを使って、あるクラスから派生されているクラスを すべて取得することってできませんか? Type.BaseTypeを使えば、継承元を取得できますが、反対に派生クラスを取得する方法が わかりません。
しらみつぶしに調べるしかないです
全てのクラスのBaseTypeを調べれば分かるんじゃないか? オブジェクトブラウザでも派生型を見ると重いから簡単には取得できないはず。
344 :
341 :2006/09/17(日) 19:26:43
>>342 >>343 やっぱりその方法しかありませんか。
Typeのメンバになかったのでそういうのは無いんだろうなとは思ったんですが。。。
地道に探します。
>>341 継承の考え方からすると、継承元から継承先を知ることができるのは、あってはならないんじゃないかね
ソリューション全体を客観的に管理する別の要素があれば別だけど、一般的には不要だしね
というか、なんで知りたいの?
ソリューション全体を客観的に管理するものを作りたいって事?
346 :
341 :2006/09/17(日) 19:57:23
>>345 やりたいのは、ある抽象クラスから作られた派生クラスをすべて画面上のコンボに動的に登録して、
それをユーザーから1つだけ選択できるようにしたいんです。
ほいで、選択されたクラスを使って処理を実行させるだけです。
そんなことは、コンボにあらかじめすべて登録しておけば済むって言われればそれまでですが、
画面のアプリと派生クラスを含む抽象クラスとは別のアセンブリで考えていて、
画面をいじらなくてもクラスライブラリ(DLL)のバージョンアップだけで対処するのがベストかなと。
そこで、リフレクションを使えばスマートにできないかなと思ったわけです。
レジストリキーってCloseしないとまずいことありますか? 古い値読まれたりとか? たとえば、 RegistryKey rk = Registry.CurrentUser.CreateSubKey( "hoge\foo" ); rk.DeleteSubkey( "hage", false ); rk.Close(); ってやる代わりに Registry.CurrentUser.CreateSubKey( "hoge\foo" ).DeleteSubkey( "hage", false ); ってのはまずいですかね?
using 使えよ
350 :
デフォルトの名無しさん :2006/09/17(日) 23:59:12
なぜ?
DisposeでCloseしてるから
using System; と using(IDisposable hoge = ...) って意味が全然違うのに同じキーワードを使うのが気持ち悪い
353 :
デフォルトの名無しさん :2006/09/18(月) 00:32:52
つか、Windows環境でhogeなんて使うほうが気持ち悪い
C#はWindows以外でも使えるお
355 :
デフォルトの名無しさん :2006/09/18(月) 00:43:32
Windows以外でC#をつかうメリットってなに?
番号ポータビリティ
C# には、IList の中身を指定の文字列をデリミタにして連結した文字列を返すメソッドってありませんでしたっけ?
// C# には IList なんて無いぜ。 string[] ならあるが、まあそれくらい自作すれ。
// あれ? C# って IList じゃなかったっけか……。 // まあ C# じゃなくて .NET Framework が正しいんだろうけど。 C# には無いのか。じゃあ何処で見かけたんだっけか……。 とりあえず thx でし。
<summary>タグのXmlコメントで改行するにはどうすればよいですか? <br>など入れてもインテリセンスで参照するときに反映されないんですけど。
インテリセンスのに対しては para 要素使うくらいしかない。 つか改行が必要なんて既にサマリじゃなくね?
おれなんて<code>つかっちゃってるぜ!
>>346 昔まさにほぼそのままの機能を実装したことがある。
俺の場合はインターフェイスにしたと思うけど、
実装したクラスをアセンブリに入れたら自動でコンボの選択肢に入んのw
ああ全部地道に探したさ
普通は特定ディレクトリーpluginsとかーに入ってるDLLから検索って仕様になるんじゃないかい?
何を言ってるのかね?
特定ディレクトリに入ってるDLLから具体的なプラグインのクラスをどうやって探すんだい?
そのディレクトリのDLL総なめして目的のインターフェイス持つクラスさがせばいいのちがうか
いやいや、そういうことじゃなくて
>>364 はつまり何が言いたかったの?ってことさ
370 :
360 :2006/09/18(月) 11:34:35
ども、ありがとうございます。
>>361-362 すでにサマリじゃないのはそのとおりなのですが。
インテリセンスでもうちょっと補足情報をきれいに出せたらいいのにと
>360 あれってたしかXmlだから<br> じゃなくて、<br/>でどう? 試してないけど。
<br />
市ヶ谷勤めることになりました。 今度あれば参加しますのでよろしくお願いします。
374 :
デフォルトの名無しさん :2006/09/19(火) 20:41:18
構造体のメンバ変数に動的にメモリ領域を確保したい場合は どのように記述すればよいのでしょうか? 次のようなに書いたのですが駄目でした private struct _kouzou { private int[] a; private int b; private int c; } int[] kouzou.a = new int[100];
>>374 structのメンバーをPrivateにしてどうするの?
>>374 struct _kouzou のコンストラクタ書いて、
public _kouzou(int size)
{
this.a = new int[size];
}
>>375 それは別にいいだろ。
public なプロパティ書けばいいんだし。
377 :
デフォルトの名無しさん :2006/09/19(火) 20:57:32
tupleコンテナは用意されていないのでしょうか?
>>374 a がアクセス可能として
_kouzou kouzou = new _kouzou();
kouzou.a = new int[100];
379 :
デフォルトの名無しさん :2006/09/20(水) 00:14:03
文字列にUnicode制御文字が入っているようなオブジェクトをXmlSerializeして Deserializeするとエラーになるのですが、XmlSerializer側でXml1.0の制約を無視するような設定にはできないのでしょうか? using (MemoryStream stream = new MemoryStream()) { XmlSerializer _xs = new XmlSerializer(typeof(string)); _xs.Serialize(stream, "\u0007"); stream.Seek(0, SeekOrigin.Begin); string obj = (string)_xs.Deserialize(stream);//ここで例外 }
well-formed ですらない xml をどうパースしろというのだ シリアライズ対象に直接文字列を入れるんじゃなくて url-encode するとか Base64 化するとかしたら
381 :
デフォルトの名無しさん :2006/09/20(水) 00:47:19
そのパソコンのIPアドレスを取得するにはどうすればよいですか?
そのパソコンでどれだ?
383 :
デフォルトの名無しさん :2006/09/20(水) 01:02:39
>>382 そのアプリケーションを起動させているパソコンです。
つまり自分のパソコンです。
言葉足らずですいません。
>>383 どれだというのは、そのパソコンにLANアダプターが複数あったり、
無線LANやモデムでもネットにつながっていた場合はIPアドレスは1つじゃないだろうということだろう。
.NET 2.0 ならSystem.Net.NetworkInformation名前空間に便利なのがいろいろあるからあたってみて。
385 :
デフォルトの名無しさん :2006/09/20(水) 01:59:51
そうですか。そうなると、困りました。1台のパソコンに複数あったりするんですね。 そしたら TcpListenerで待機してて、接続要求を出してきた送信元の IPアドレスを知るにはどうしたらよいか教えていただけるとうれしいです。
電話で聞く
well-formedでないxmlがSerializeメソッドで生成されて、 Deserializeで失敗するというのが意外でした。 XmlSerializerのインスタンスを作成に成功し、 Serializeできた時点で元のオブジェクトとDeserializeしたオブジェクトは常に値が等しいことを期待しているので。 (well-formedかどうかなどに関心はない Streamを渡したときの既定動作を変更できればよかったのですが どうやら、XmlReader使うとなんとかなるみたいです。
>>385 Accept してから Socket.RemoteEndPoint を取得
>>385 ついでにIPアドレスが複数ある場合は列挙してユーザに選ばせるのがよくある手
じゃないだろうか
390 :
デフォルトの名無しさん :2006/09/20(水) 11:51:09
391 :
デフォルトの名無しさん :2006/09/20(水) 18:07:22
DelegateをBeginInvokeして、新規スレッド上で作業しております。 このスレッドをSTAにしたいのですが、どうしたらよいのでしょうか。 Thread th = new Thread(...) ... なら th.SetApartmentState( ApartmentState.STA ); でいけるのですが……
>>391 Thread.CurrentThread.SetApartmentState( .. )
じゃダメ?
質問です。
サーバー側のスレにも書いたんですが
ttp://pc8.2ch.net/test/read.cgi/mysv/1126008399/87 サーバーに対して
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = postDataBytes.Length;
System.IO.Stream reqStream = req.GetRequestStream();
reqStream.Write(postDataBytes, 0, postDataBytes.Length);
reqStream.Close();
System.Net.WebResponse res = req.GetResponse();
↑ここでTryに引っかかります。
プログラム的な問題なのか非常に迷ってるんですが、どうなのでしょうか?
ちなみに、Apacheで運用しているサーバーでは問題ないのですが、もしC♯側から対策できるのであればご教示をお願いします。
try に引っかかるってなんだよ
395 :
391 :2006/09/20(水) 20:05:13
>>392 それスレッドが開始前じゃないと例外がでるみたいですが……
サーバー側のスレの引用間違ってないか???????
例外の内容をなぜ書かないんだ?
>>393 英文みたけど、POSTのLengthが正しく送信されてもダメって感じだな。
URL見たけど、ようするにレスポンスとれずに切断食らうって事でしょ。
どうみても、Lighttpdの問題。BBSの話では解決策は無い。オブジェクトの保持時間を短くするとかわけわからん事書いてるが
おそらく関係ないと思う。試してみたらいいけどさ
>>393 webサーバがショボくて Expect100Continueに対応してないんでそ。
プログラムの頭で System.Net.ServicePointManager.Expect100Continue = false とかしてみては?
なぜコンパクトにまとめて書かないか疑問。 スレ参照しろとは態度でかいんじゃない?
まーまーw
今回のコンパクトに絞れてるなら解決できる話だしな
普通に
>>399 のことがそのまま書かれてたじゃん
C♯スレだからしゃーない、英語読めない小学生なんだろ(藁
>>400 英文BBSは別人だと思うよ。
結局Tryはタイムアウトだったんだろ。
どんな例外が出てるかくらい書け
質問です。 MangaDirectXを使いたいんですが nVIDIAのCgとかも使えますか?
>>391 STA にしたいなら Thread 使わないと駄目。
407 :
391 :2006/09/20(水) 21:46:22
>>405 Mangaにワロタ。Managedのことね。
HLSLを使おう。
Cgを使う理由はない。
393 は質問だけして消えたね。
VisualC#2005でOleDbConnection使って、Excelファイル(*.xls)のデータを読み込みたいんだけど、
Excelそのものがインストールされてない環境(WindowsXP Home)で、動作するのかな?
もし動作しないのであれば、Excel以外で、MSが配布してるドライバか何かを別途インストール
すれば大丈夫、ってのがあれば教えてくらはい。
具体的には、
http://support.microsoft.com/default.aspx?scid=kb;ja;306572 ここでやってるようなことを、クライアントアプリでやりたいのだけれど。
上記URLのページ末の、
> この資料は以下の製品について記述したものです。
> Microsoft Excel 2002 Standard Edition
> Microsoft Excel 2000 Standard Edition
ってのが、Excelファイル作成に対して言っているのか、それの読込までに対して言っているのか、
わかんなくて。
mdb を読むときには Access は要らなかったけど xls はどうなってるかは知らない
412 :
デフォルトの名無しさん :2006/09/21(木) 04:48:14
newに対して、deleteやfreeに相当するような機能はありませんでしょうか? ガベージコレクタは便利なんですが、どうしてもその場でメモリ開放しなければならない状態がありまして・・・・
お前は GC.Collect でもやってろ
>>412 つ 言語的にはgc、でも設計上はオブジェクトプールとかネイティブにたよったりとか
そういえばGC.Collect()はジェネレーションを置くに追いやって、結果的にレスポンスが悪くなるって聞いたことがあるなぁ
>>412 解放しなきゃいけないのってメモリっていうより確保したリソースでしょ?
IDisposable実装しなっせ。
一般に .NET ではメモリはどうでもいいんだが
>>412 のケースではメモリが重要らしい
Dispose じゃどうにもならん
>>412 unsing(classA a=new classA()){
//存続範囲
}
//ここで開放
開放されねえよ
必要な床だけアンマネージドにしたまへ
おまいらインたーフェースとクラスってどう使い分けてます? あるオブジェクトに色々役割を持たせたいときに、それぞれの役割に応じたインターフェースをもてば実行時には問題ないけれど、実装時にめんどくさい。 たとえば、ツリーのノードであるとともに画面の部品の一つであるようなものを作りたいときには実装がちょっとめんどくさくなる。 インプリメントを外部に全部委譲するのもめんどくさくてイヤンな感じです。 おまいら的にないすな方法あればよろ。
適材適所
いや、クラスでそういったことできないでしょ? 質問を限定すればナイスな実装の方法を知りたいと言うことです。
集約で解決。
426 :
デフォルトの名無しさん :2006/09/21(木) 16:43:46
TreeView + ListViewの詳細表示 みたいな感じのコントローラ(クイックウォッチウィンドウとか) って標準では装備されてないですよね。 複数階層表示できるプロパティとして使いたいんですが、 自作しないと厳しいでしょうか?
TreeListView でググってみたら?
426じゃないけどなんか使いよさそうなのが出てきたな。
コラムの並び替えが遅い印象を受けるんだが……まあ良いか。
430 :
デフォルトの名無しさん :2006/09/21(木) 21:47:58
Webサービス作ってASP.NET権限じゃなく特定ユーザ(Administratorとか)の権限で実行させるにはどこ設定すればよろしいか?
自レス <configuration> <system.web> <identity>
C#で「データベースからDataTableにデータを取得し、取得したデータに対し更新or削除を行ってデータベースに反映するアプリケーション」 を作っているのですが、 処理のログを出力するために、複数件同時に更新等を行おうとしても、 処理するときは一件ずつ行うようにしたいので、 最初に用意してあるDataTableと同じ型の変数を用意し、 ImportRowを用いて取得したデータをコピー、処理をしていました。 しかし削除を行おうとすると、今のままではImportをしようにも 取得したデータが削除されているためできません。 そこで、呼び出した後、削除をする前のオリジナルのデータをImportしたいのですが、 その方法が分からないのです。 何か良い方法は無いでしょうか?
433 :
メモリリーク :2006/09/21(木) 23:08:35
現在、コンソールアプリケーションにてバッチプログラムを作成しているので すが、【C#.NET】にて【Debug】モードで実行するとメモリは30M位で 安定しているのですが、一度【Release】EXEファイルを作成し、バッチファイル よりキックをするとメモリをどんどん消費しています。 どの様にすれば改善されるでしょうか? 【Console.cs】 main() { //約2マン回分のループ処理 for(int i = 0 ; i <= 20000 ; i++) { // DLL内部のメソッドを呼び出し。 GC.Collect(); } } ※下記を記述した後に、GC.Collect()を行っています。 DataTalbeA.Dispose(); DataTalbeA = null; InstanceA inA = new InstanceA; inA = null;
434 :
メモリリーク :2006/09/21(木) 23:11:25
.NetにてDebug実行すると極端なメモリ消費が無いのに バッチプログラムとして起動させるとメモリリークを起こしており 解決する事が出来ず大変困っています。 ご助言をお願い致します。
// DLL内部のメソッドを呼び出し が分からんことには。 GC.Collect();しなかったらどうなる?
>>433 もしかしてcommitしたメモリも換算に入れてる?
どうやってメモリの使用量をチェックしたのか気になるス
437 :
デフォルトの名無しさん :2006/09/22(金) 01:24:23
>>435 >// DLL内部のメソッドを呼び出し
>が分からんことには。
>GC.Collect();しなかったらどうなる?
DLLの中身としては、DB(A)から(金額)を取得し
計算した結果をDB(B)に登録するという処理をDLL内部でも
4重位のループ処理をしています(汗)こーいう仕様なんです。。。
GC.Collect()をしないとタスクマネージャでメモリの状態を確認すると
より一層右肩上がりでメモリを食潰します。
438 :
メモリリーク :2006/09/22(金) 01:28:05
>>436 >もしかしてcommitしたメモリも換算に入れてる?
>どうやってメモリの使用量をチェックしたのか気になるス
すみませんが【commitしたメモリ】の部分がいまいち分かりません。
どういう意味でしょうか?
あと、メモリの使用量の確認はタスクマネージャで確認をしています。
※とある計算システムで内部的にシグマ計算(&べき乗・ルート計算)
とか相当ガチャガチャしています。
あと基本的な質問で申しわけ無いのですがクラスのインスタンス
の破棄を行う際には、
Instance_test i_test = new Instance_test();
i_test.hogehogeMethod();
i_test =null; // ←この記述で宜しいですよね?
破棄可能なクラスのインスタンスについて、using () { ... } とか、Dispose とか使ってますか?
>>438 static 変数など永続的な変数でなければ、null の代入は必要ないし無意味ですよ。
どっちにせよGC されるまでは破棄されませんし。
441 :
メモリリーク :2006/09/22(金) 01:40:56
>>439 >破棄可能なクラスのインスタンスについて、
>using () { ... } とか、Dispose とか使ってますか?
使って無いです。GC.Collect();メソッドさへ使ってしまえば問題無しかと
生温い考えをしておりました。
因みにusing () { ... } を使う場合にはGC.Collect();を使わなくても
良いのでしょうか?
>>440 >static 変数など永続的な変数でなければ、null の代入は必要ないし無意味ですよ。
>どっちにせよGC されるまでは破棄されませんし。
どうも勉強になりました。ありがとうございます。
本日、早速試してみます。ありがとうございました。
442 :
デフォルトの名無しさん :2006/09/22(金) 01:53:09
C#でVOIPをやりたいのですが、情報が全然なくて探しています。 具体的にはプロバイダのIP電話のクライアントを作りたいのです。 よろしくお願いします。
よろしくって、何をすればいいんだ?手取り足取り教えるのか? そういう使えない新人みたいな質問の仕方されるといらいらするんだけど
444 :
(^-^) ◆MONSOON/qo :2006/09/22(金) 01:59:11
445 :
442 :2006/09/22(金) 02:26:40
お返事ありがとうございます。 大雑把に書いてすいません。 パケットで1から書いていくのは難しいので ライブラリを探してます。 商用のでそれっぽいのはあるのですが、 無料のは探せませんでした。。
446 :
(^-^) ◆MONSOON/qo :2006/09/22(金) 02:43:52
あるタイミングで ListViewの現在選択されているアイテムの次のアイテムが選択されるようにしたいのですが ListBoxのsetselectedのようなメソッドやプロパティーはないでしょうか?
ある。
>>448 どうもありがとうございました。
おかげで解決しました。
this.listView1.Focus();
this.listView1.Items[0].Selected = true;
以上自演でした
C#3.0マダー
452 :
442 :2006/09/22(金) 11:12:37
>446 コーデックのURLありがとうございます。 SIPの部分を書いてこれを使えばできそうですね。 ただSIPの部分を書くのも大変でして、 SIPのライブラリもないものでしょうか? Javaにはjainというものがあるそうですが。(ただこれも具体的に使ってるドキュメントを書いてる人は少ないですね) また、実際プロバイダとの通信になると方言等があると聞きますし、 いろいろ大変そうな気がします。 まだVOIPは敷居が高いという認識ですかね。。
おまえ、それ自分で作るっていうんかいなw やろうとしてる事って、フォームにメディアプレイヤーのコンポネ貼り付けて『メディアプレイヤー作りました』 って言ってるのと大差ないぞ。
454 :
test :2006/09/22(金) 11:22:26
>>x
SkypeAPIつかえばいいんじゃまいか?
456 :
デフォルトの名無しさん :2006/09/22(金) 23:14:31
ListViewなんですが LabelEditを有効にすると、左端の編集は出来るようになりますが その他の項目が編集できません。 むしろ、左端を編集せずにその他の編集したいのですが、どうすればいいのでしょうか?
>>456 ListViewにはラベル(左端)以外を編集する機能はありません。
DataGridView 使っちゃえば
459 :
神プログラマ :2006/09/22(金) 23:50:37
お前ら自分で調べろ!
だ が 断 る
イヤン
462 :
デフォルトの名無しさん :2006/09/23(土) 20:35:17
D&DでDataObjectのSetTextって異なるFormat(UnicodeTextやHtmlやRtfなど)を入れられないのでしょうか? UnicodeTextをサポートするアプリにもRtf形式をサポートするアプリにも入れたいのですが ドラッグターゲットのTextで受け取る形式を知る方法はどのようにすればよいのでしょうか?
DataObject.SetData
464 :
デフォルトの名無しさん :2006/09/24(日) 00:16:12
設定ファイルのuser.configが生成される位置について質問です。 (アプリケーションプロジェクトの設定ファイルが生成される位置は期待した場所に行くけど、 ライブラリプロジェクト内の設定ファイルが生成される位置は思った場所に行ってくれない) プロジェクト LibProject内でSettings.settingを作成してアプリケーションの設定を保存できるようにし、 プロジェクト(LibProjectを参照したExeプロジェクト) AppProject内でLibProjectの設定を使うようにしてセーブすると user\Local Settings\Application Data\配下に AppProject.exe_Url_ub0xlxfhut0me....というフォルダ内にuser.configができてしまうのですが これを(AssemblyCompany\AssemblyProduct\)の下に置かれるようにするにはどのようにしたらよいでしょうか?
465 :
デフォルトの名無しさん :2006/09/24(日) 12:22:50
データベースからデータを引っ張ってきてForm上の適当なコントロールにバインドするのは ウィザード使えば簡単だけど皆さんどうしています。 ゴリゴリコーディングする? IDEでポトペタ?
466 :
デフォルトの名無しさん :2006/09/24(日) 13:55:52
恐れ入ります。 少し相談させてください。 あるクラスをクラスライブラリに定義してクライアントと Webサービスの双方に参照させます。 Webサービスのメソッドに戻り値として参照したクラスを返させた場合に、 クライアント側では名前空間の違うクラスで返ってきてしまいます。 これをクラスライブラリのクラスとして直接返す方法あるのでしょうか? わかり辛い説明とは思いますがよろしくお願いします。 当方の環境は Windows XP Pro SP2 Visual Studio 2005 Standard Edition です。
リストビューのフォーカスをカーソルキー単体で(コントロールキーなしで)フォーカスを移動するとき、 アイテムの選択状態を保つ方法ってある? 試して失敗だった方法としては、ProcessCmdKey内で、フォーカスを移動するキーを検出したら、 LParamに論理和で0xffffffffc0000000を加えるというやり方がある。 msg.LParam = (IntPtr)((ulong)msg.LParam | 0xffffffffc0000000); 0xffffffffc0000000はコントロールキー押下を示すフラグ(のはず)
それ何ビット環境ですか
>>468 シーッ!!!
きっと次期windo(ry
470 :
デフォルトの名無しさん :2006/09/24(日) 16:28:09
署名に Microsoft MVP for Visual Developer - Visual C# なんて書いてる奴って アフォですか?
471 :
464 :2006/09/24(日) 17:34:23
472 :
464 :2006/09/24(日) 17:43:35
Evidence Hashってどのようなタイミングで変わるのでしょうか? (hoge_Url_feazx4drhfz04whlzbalc0e3u4ovhai)の後ろの奴 調べてもなかなかでてきません。 どなたか教えていただけないでしょうか?
474 :
デフォルトの名無しさん :2006/09/24(日) 20:13:44
.NET3って期待してもいいのかな? M$ 遅い、上にメモリ食いのアプリなんてとてもじゃないが業務に不向き。 .NETでよくなったことはちょっとしたアプリなら簡単に作れるようになったことだけ。 業務使う場合は殆どは派生させてしまうので、VC6のときとならんら変わらない。
シーッ!!!
スレ違い
C#、仕様ころころ変えすぎ
1.0 1.2 2.0 とあったけどころころ変えたか?
>>477 だな。ってゆーか、JAVAだけで十分
JAVAのマイナーチェンジが多すぎるんだよねぇ
D言語とか( ´艸`)ウププ
カエレ(・∀・)!!
482 :
デフォルトの名無しさん :2006/09/25(月) 01:35:03
ちょっとしたアプリでもメモリ使用量が20,30MBってなんだよw
そうだね
>>479 JavaとC#(NETFX)は使えば使うほど違うぞ。
C#初期はその理論で十分通用したんだがな。
まぁなんでもいいから巣に帰れ。な。
C++ => C# 2.0 => Java 1.4 と触ってきたけど、 Java より C# のほうがかなり開発楽。 ・・・1.4だからかもしれんけど。
java1.5、c#2.0両方やるけどC#のほうが楽。 Windowsという土俵でjavaに負けたら存在意義ないからね。
でも、C♯でちょっとしたアプリを作るだけで、数十メガメモリ食うのはどうにかしたい・・・ なんで、こんなに食うの? っていうか、まだコード何も書いてなくて、適当にコンポネ貼り付けただけでかなり食う。
>>487 おれも使用C#のメモリについて知りたい。。
>>487 1. タスクマネージャのメモリ使用量の表示は感覚的に変
SetProcessWorkingSetSizeについて調べてみよう!ディープに
知りたいんならInside Windowsを読もう!Vistaだと直ってるwらしい
2. CLRのチューニング、特性
恐らくある程度の耐フラグメンテーションやパフォーマンスのために
余裕がある環境では余裕があるように、チューニングされている。
つまり優先順位の問題。また、「JITエンジン自体」ももちろんメモリを消費する。
そういえば、個人的には起動時間に関して、Vistaでは予測不能。
SuperFetchのせいでかなり特性が変わる。
.NET を標準搭載するくらいだから OS 付属アプリで .NET のもありそうだしな
>>487 とりあえず、Windowを最小化してみよう。すぐに数メガに落ちるはず
タスクマネージャのメモリをそのまま信じちゃいけない。
使用メモリなんかを比較的信頼できるレベルで測るならパフォーマンスカウンタで タスクマネージャのは色々なリソースから集めたざっくり値で、細かくは見れないし
pu
496 :
デフォルトの名無しさん :2006/09/25(月) 17:15:33
Mpegファイルとwmvファイルから動画の縦横サイズを取得したいのですが わかる人いますか?
昔々、あるところにおじいさんとおばあさんがいました。 おじいさんは、山へ芝刈りしたあと、川へ洗濯に。 おばあさんは、家で昼寝をしていました。 めでたしめでたし。
499 :
デフォルトの名無しさん :2006/09/25(月) 21:35:59
有償ですがよろしいですか
>>500 はほっといて
>>496 手っ取り早いのは、WindowsMediaPlayerのクラスやらコンポネを使う。
あれで、曲名やらアーティスト名やら時間やら動画サイズやらを取得出来る。
ただし、COMなので、全部.NETでやりたいって人は使えないですけど
502 :
デフォルトの名無しさん :2006/09/26(火) 17:19:00
>>501 回答ありがとうございます
コンソールアプリで実装したいのですが
WindowsMediaPlayerのクラスは取り込めたんだけど
うまく動いてくれません
ほかに方法はないでしょうか?
おねがいします
>>502 とりあえずベターな方法としてファイルフォーマットにしたがって読み込む方法をお勧めしよう
いったい何のプログラムなんだ?
505 :
デフォルトの名無しさん :2006/09/27(水) 01:57:05
VC#でOracleへ接続してデータの参照/更新を行うソフトを作成しましたが 起動中、使用メモリが20〜30MBと大きくとても目立ちます。 小さく作るコツってありますか? 最悪、MFCで書き直しても言われかねない状況です。
>>489 .NETアプリの正しいメモリ使用量はタスクマネージャーでは見れない。
ウインドウを最小化すると、ある程度正しいメモリ使用量が見れるらしいので、不安なら一度それで確認したら?
メインフォームのShownでSetProcessWorkingSetSize API(P/Invokeを使う)をコールすれば、 フォームを最小化した時と同じでタスクマネージャのメモリ使用量の表示が減らせる。 それでプログラムの起動が早くなったりOSの動作が軽くなったりするわけではないし、 他のプロ不ラムが使えるメモリーが広くなるわけでもない。 ケースによっては無駄なページジングのために逆に動作が遅くなる可能性があるのも同じ。 客にWindowsのメモリ管理の説明をいちいちするのが面倒なときにはお勧め。
それも違うだろ。 っていうか、20〜30MBで >最悪、MFCで書き直しても言われかねない状況です。 て。 何考えてんだか。
最小化するとメモリ使用量が激減した。すげえ。
え〜と SetProcessWorkingSetSize( GetCurrentProcess(), 0xffffffff, 0xffffffff); こんな感じで限定しちまうってこと? う〜ん、スワップの嵐の予感
511 :
デフォルトの名無しさん :2006/09/27(水) 05:16:29
private Point mousePoint; private void MouseDown(object sender, MouseEventArgs e) { if ((e.Button & MouseButtons.Left) == MouseButtons.Left) { //位置を記憶する mousePoint = new Point(-e.X, -e.Y); } } private void MouseMove(object sender, MouseEventArgs e) { if ((e.Button & MouseButtons.Left) == MouseButtons.Left) { this.Location = new Point(this.Left + mousePoint.X + e.X, this.Top + mousePoint.Y + e.Y); } } こんな感じでフォームをドラッグすると、ウインドウを動かせるコードを書いたのですが MSのサイト含め色んな所でこのコードが紹介されていますが、これをやると通常のウインドウバーをドラッグした時に比べると 非常に動きが重いのです。 重いどころか、少しでもすばやくドラッグするとウインドウが付いて来れずに、マウスがウインドウの外に出てしまいます。 どうにか、通常のウインドウバー並の動きが欲しいのですが・・・・
private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { ((Control)sender).Capture = false; const int WM_NCLBUTTONDOWN = 0xA1; IntPtr HTCAPTION = (IntPtr)2; Message msg = Message.Create(this.Handle, WM_NCLBUTTONDOWN, HTCAPTION, IntPtr.Zero); this.DefWndProc(ref msg); } }
>>510 SetProcessWorkingSetSize(p, -1, -1) でワーキングセットを限りなく縮小する。
大部分のページがワーキングセットから切り離され、ページング予定のページとしてメモリ上にキャッシュされる。
実際に使われている部分のページはすぐにワーキングセット戻される。
それ以外のページは時間とともに徐々にページングされたり、破棄されたりする。
OSや別のプロセスがメモリーを必要とする場合は優先してページングまたは破棄されたりする。
起動後すぐにSetProcessWorkingSetSizeを呼べば初期化のためだけのページを片付けることが出来るので
1回呼ぶくらいはいいんじゃない。
>>511 むしろ
フォームをドラッグで検索かけると
>>512 か
[DllImport( "user32.dll" )]
private static extern int SendMessage( IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam );
[DllImport( "user32.dll" )]
private static extern bool ReleaseCapture();
private void Form1_MouseDown( object sender, MouseEventArgs e )
{
if( e.Button == MouseButtons.Left )
{
const int WM_SYSCOMMAND = 0x0112;
const int SC_MOVE = 0xf010;
ReleaseCapture();
SendMessage( this.Handle, WM_SYSCOMMAND, (IntPtr)(SC_MOVE | 2), IntPtr.Zero );
}
}
の方が一般的だと思うが
>>514 > private static extern int SendMessage( IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam );
int?
失礼、vbと混ざってたy
PictureBox1.ImageLocationに、 リファラーを設定してWeb上の画像を表示する方法を教えてください。
なんでListViewにはAutoScrollPositionがないんじゃあああ ListView.PointToClientがスクロールを無視した左上隅からの距離しか返さないから ListViewItem.Positionと画面座標の変換ができねえええ
521 :
デフォルトの名無しさん :2006/09/29(金) 00:07:23
すいません、緊急で質問です。。 win.form.textboxを継承したカスタムテキストボックスAを作成しました。 そしてそいつを、いくつかつめあわせてユーザコントロールBを作成しました。 Aではonkeypressイベントに処理を記述してあります そして新たにユーザコントロールBにて、Aのkeypressイベントを記述しました。 このユーザコントロールBをフォームにはりつけて使用したところ、 ユーザコントロールに記述したカスタムコントロールAのkeypressイベントが発生しませんでした。 ちなみにカスタムテキストボックスAではなく、ただのwin.form.textboxをユーザコントロールBにはりつけて keypressイベントを記述すると、そのイベントは発生しました。 なんかデリゲートだとかその辺の話なんだろうなあと思いつつ どうすればイベントを発生させることができるのか質問したいと思いました。 どうかよろしくおねがいします。
base.OnKeyPress
カスタムコントロール使ったこと無いけど、 何かbaseの方呼ばなきゃいけないんだっけ?わかんね
524 :
デフォルトの名無しさん :2006/09/29(金) 00:35:35
>>522 base.OnKeypress
っていうのをどこに書くのでしょうか・・・。
フォームのほう?
カスタムコントロール内に書こうにも、とりあえずkeypressイベント自体が発生しないので・・・
>>524 自作テキストボックスのOnKeypress メソッドの任意の場所に。
base.OnKeypress によって継承元のOnKeyPress(遡ってControl.OnKeyPress)
で、KeyPress がファイアされる。
526 :
デフォルトの名無しさん :2006/09/29(金) 01:30:46
>>525 自作のカスタムテキストボックスAのOnkeypressイベントには
base.OnKeypress
の記述はしてあります。
なぜ動かないか悩んでいます。
>>526 じゃあ次はイベントハンドラにちゃんと設定してるか確かめないと名
多分基本的な誤解。
AのOnKeyPressは protected override void OnKeyPress(KeyPressEventArgs e) { //独自の処理 base.OnKeyPress(e); } の形式になってる?
>>521 自分の書いた文章をよく読もう。
途中でイベントがすりかわってるぞ…
Aのイベントが発生しない
>ちなみにカスタムテキストボックスAではなく、ただのwin.form.textboxをユーザコントロールBにはりつけて
keypressイベントを記述すると、そのイベントは発生しました。
↑は無関係だろ?
基本がなってないよ。
オーバーライドも分かってるかどうか。
OnKeypressイベントって書いてあるのが怪しい。
OnKeypressメソッドをオーバーライドならbase.OnKeyPressは必要。
あららテストコード書いてるうちにレスが… イベントベースなら問題なしだった。 KeyPressイベント内でbase.OnKeyPress読むと無限ループだよ。
間違ってUserControlのイベントにしてるだけじゃないでしょうか? UserControl内のカスタムテキストにイベントつなげて いないだけのような気がします。
戻らない呼び出しは再帰でしょうか?
536 :
デフォルトの名無しさん :2006/09/29(金) 19:20:25
call you you{ while(1); } 再帰か?
それはひょっとしてギャグで言っているのか(AAry
スタックがなくなるという条件で終了する再帰処理
540 :
デフォルトの名無しさん :2006/09/29(金) 22:56:35
DataSetやDataGridViewやOleDbDataAdapterを使ってMySQLのフロントエンドを 作ってみたが、糞だな 特にDataGridViewはしょぼい機能しかないのにやたらメモリ食う。 あの程度なら自前で用意したほうがいいぞ
そうだね
542 :
デフォルトの名無しさん :2006/09/30(土) 01:17:02
>>529 なっています。
>>530 >OnKeypressメソッドをオーバーライドならbase.OnKeyPressは必要。
その処理はしています。
でも動かないのはなぜなのかなぁ、、と。。。
ちなみにテキストボックスAを継承したテキストボックスCに、同じくOnkeypressメソッドを記述します。
そしてフォームにはりつけると、きちんと呼び出されます。
この違いっていったいなんなのかなぁと・・
>>542 悩むより手を動かしたほうがいい
問題の切り分けをするために、再現可能なコードでも練ると吉
>>543 >悩むより手を動かしたほうがいい
オ○ニーしろって言ってんのかと思ったw
悩むより手を動かしたほうがいい 問題の切り分けをするために、再現可能なコードでも練 (ったところで、どうせ解るわけないんだからティムポでもしごきながら寝) ると吉
ASP.NETで、HTMLなどのテキストデータではなくバイナリデータを吐きたいのですが、JavaのServletのようなものはないのでしょうか? aspx?ではjspやPHPのような感じのコードを入力していきますが、Javaに慣れすぎて何か変な感じがするのですが…
Servlet がどんなのかは知らんが、Response.OutputStream あたりにガリガリかきこみゃいいんじゃね? 変な感じと言われても慣れろとしか言えんな
>>546 バイナリ動的生成ならashx使うほうがいいんだな、あと。
IHttpHandler実装すりゃ何でもできる。 まあお手軽にそれをやれるようにはじめから用意されているのがashxだ。
ほう。ashxってそういうやつなのか。
まあデフォルトでハンドラ登録なり必要なことが済んでて 埋め込みコンパイルに対応してるって位だけどな。
552 :
546 :2006/10/01(日) 11:00:06
ashxですか。知りませんでした。今から調べてみます。
現在、パネルコントロールを継承して その中でOnMouseLeave、OnMouseDown、OnMouseMoveをオーバーライドしています。 しかし、パネル上に別のコントロールを配置してしまうと 上記のイベントが発生しないようなのです。 なにか回避方法とかはありませんでしょうか? 可能な限りはパネル上のコントロールに依存しない方法で 回避したいなと思っているのですがやり方が思いつきませんでした・・・。
( ^ิิ౪^ิ)
ヒント:オーバーライド
base.OnSomeEvent(e) → this.OnSomeEvent(e) ↑ これが実行される もちろんbaseは何が起こったかすらわからない あれ、イベントをハンドルするのって明示的に書くっけ・・・・・・・・?
557 :
デフォルトの名無しさん :2006/10/01(日) 19:42:32
C#ってSTLでいうところのアルゴリズムってないのかしらん?
無理
イベントの基本を理解してない人多いね。
>>556 イベントハンドルする方法はオーバーライド
OnSomeEvent(e)
イベントハンドラを追加するには、
SomeEvent += イベントハンドラ
なんかまた湧いた?
>>542 ユーザーコントロールの+=が正しいイベントハンドラに繋がっているか?
>>514 SendMessage( this.Handle, WM_SYSCOMMAND, (IntPtr)(SC_MOVE | 2), IntPtr.Zero );
これの
SC_MOVE | 2
って ただのSC_MOVEだけなだめなの?
| 2 はいらんとおもうけど?
System.Net.WebRequestを使って、WebサーバーとHTTPプロトコルで通信するプログラムを書いてるんですが 一度リクエストを出すと、ブロッキングしてしまうんで、スレッドを分けて処理してたんですが 別スレッドから、現在の転送量を調べる方法は無いのでしょうか? 現在のデータの転送の歩調を調べたいので・・・
ない HttpWebRequest 使え
って使ってるのか。 それなら後は Stream からの読み出し量を記録しとけば良いだけ
>>553 イベントかオーバーライドかの区別は別として、553で書いている現象の原因は
マウスカーソルが配置したコントロールの上にあった場合、そっちのほうにイベントが
行ってしまうためでしょう。
タイマーでマウス位置を監視するのが良いと思う。
>タイマーでマウス位置を監視 ダメ、絶対!
どして? メッセージをフックなんかするより簡単でいいと思うけど・・
アホか
リアル基地外がいるというスレはここですか?
foreach(Control control in this.Controls) { control.MouseDown += control_MouseDown; } ではダメ?
>タイマーでマウス位置を監視 ( ^ิิ౪^ิ)
アホやからこれくらいしか思いつかないけど protected override void OnControlAdded( ControlEventArgs e ) { e.Control.MouseEnter += new EventHandler( Control_MouseEnter ); e.Control.MouseLeave += new EventHandler( Control_MouseLeave ); base.OnControlAdded( e ); } protected override void OnControlRemoved( ControlEventArgs e ) { e.Control.MouseEnter -= Control_MouseEnter; e.Control.MouseLeave -= Control_MouseLeave; base.OnControlRemoved( e ); } void Control_MouseEnter( object sender, EventArgs e ) { this.OnMouseEnter( e ); } void Control_MouseLeave( object sender, EventArgs e ) { this.OnMouseLeave( e ); }
>>573 それ Enter と Leave が個々のコントロール毎に発生するから、
パネル自体への Enter や Leave とは全然違ってメチャクチャやん。
(≧∇≦ ) ぶぁっはっはっ!!!腹痛てぇー
こりゃ例のアレかい?「設計が(ry」
MSβ祭り\(^o^)/
WebService呼び出しでWindows認証。 SomeWebService service = new SomeWebService( ); CredentialCache cache = new CredentialCache( ); cache.Add(new Uri(service.Url), "Negotiate", new NetworkCredential(userName, password, domain)); service.Credentials = cache; として呼び出していますが、設定した資格情報は無視されこのプロセスの資格で認証されてしまいます。 設定した資格情報で認証させるにはどうすればいいのでしょう?
>>580 Windows認証ってそういうものだから。
自レス ASP.NET開発サーバーでやってたから"localhost"のループバックで接続だから認証が有効にならないくさい。 IISにしたら直った。
583 :
581 :2006/10/03(火) 06:14:52
と思ったけど、Windows認証ってNTLMかKerberosを指定するんじゃないの?
質問です。 ハッシュ生成についてなんですが privae string CreateHash(string Src) { System.Security.Cryptography.SHA1CryptoServiceProvider HashSHA1 = new System.Security.Cryptography.SHA1CryptoServiceProvider(); //バイト配列に変換し、ハッシュ生成 //byte[] has = HashSHA1.ComputeHash(System.Text.Encoding.ASCII.GetBytes(Src)); //ハッシュを16進数に変換し、string型として保存 string hash = ""; for (int i = 0; i < HashSHA1.ComputeHash(System.Text.Encoding.ASCII.GetBytes(Src)).Length; i++) hash += HashSHA1.ComputeHash(System.Text.Encoding.ASCII.GetBytes(Src))[i].ToString("X"); Src = null; } 続く
585 :
584 :2006/10/03(火) 06:45:07
オルァアアア! ∧∧ ∧∧ ダスゾ!ダスゾォオオオ! (( (*゚Д゚) )) (; ) (( // 、) 、)∩))∧と ヽ ((〜((≡γ'⌒(((*´(| 〜)) し'`Jし'`ーイ_ノ"(ノ^ヽ) ウウッ、ウグゥゥウゥゥゥッ…
(; ゚д゚)…
587 :
デフォルトの名無しさん :2006/10/03(火) 06:50:33
後半はコピペしたつもりが出来てなくて前のが残ってたってオチか? 恥ずかしがらずに出て来い
便乗してGetHashCodeなんだが、intのフィールドが3つあるような場合どうしてる? _field1.GetHashCode()+_filed2.GetHashCode()+_field3.GetHashCode()じゃあかん?
589 :
デフォルトの名無しさん :2006/10/03(火) 07:13:13
はじめまして、 現在、Webブラウザに張られたセッションID付きリンクを使って、リンクで指定されたセッションで通信する ノータッチデプロイメントのプログラムを作ろうとしていますが、ノータッチデプロイメント側の プログラムで、やらなければいけないことがわかりません。 どのようにすればよいのか教えていただけませんでしょうか。 現在の方法では、例外が発生してうまくいきません。 何か指定が足りないのでしょうか。 現在のコード str_SessionID = セッションID CookieCollection cookies = new CookieCollection(); cookies.Add(new Cookie("JSESSIONID",str_SessionID); session.SetCookie(cookies); よろしくお願いいたします。
>>588 int なら GetHashCode もしないで単に足す。xor でもいいけど。
>>588 ちょっと格好付けるならそれぞれに10−30辺りの素数(定数)を掛ける
3数に相関がまったくないのなら足すだけでよい 相関があるのならその相関の具合によって最適な方法は異なる
>>583 Negotiateって書いとけば適当に選んでくれるらしいのだが
>>584 の
>string hash = "";
>for (int i = 0; i < HashSHA1.ComputeHash(System.Text.Encoding.ASCII.GetBytes(Src)).Length; i++)
>hash += HashSHA1.ComputeHash(System.Text.Encoding.ASCII.GetBytes(Src))[i].ToString("X");
これあんまスマートじゃないよな。
1発でstring型に変換出来るのがあったような・・・
Compare<T>(T lhs,T rhs){ return lhs<rhs; } みたいに書きたいけど不可? Primitiv対応のみでも委員ですが・・・
597 :
初心者 :2006/10/03(火) 12:24:01
いきなり質問します! 同じクラスのオブジェクトを二個生成したとき、そのオブジェクト内のオブジェクトは共有されてしまうのですか?
質問失礼します。 C#でファイルのヘッダー部分(4byte)を書き換え中です。 現在、ファイルを全部読み込んで、4byteを書き換え、全部を書き込んでいます。 効率が悪いので、ヘッダー部分のみの書き込みを行いたいのですが、どうやれば良いのでしょうか?
質問します。 どうすればいいのか教えてください!
>>597 staticなフィールドはね。
非staticなフィールドはオブジェクト固有
>>596 static bool Compare<T>(T lhs, T rhs) where T : IComparable
{
return lhs.CompareTo(rhs) < 0;
}
>>602 この場合IComparableはどこから来るんでせう?
>>603 「どこから来る」っていうのが意味わからんが、
エスパー回答するとSystem名前空間にあるよ。
ちなみに組み込み型はIComparableを実装してるんで
組み込み型しか使わないなら何も考えなくてOK。
TeamEditionのテストですが、privateクラスのテストってどうしてるんですか? とりあえずprivate生成用のスタブコードははいてるようなんですが、結局エラーを吐かれます。 internal static global::MyLib.Node.TreeNode<Sweep.TopologyNode,Sweep.RouteTreeNode> CreatePrivate() { Microsoft.VisualStudio.TestTools.UnitTesting.PrivateObject priv_obj = new Microsoft.VisualStudio.TestTools.UnitTesting.PrivateObject("My", "Sweep.RouteTreeNode", new object[0]); return ((global::MyLib.Node.TreeNode<Sweep.TopologyNode,Sweep.RouteTreeNode>)(priv_obj.Target)); } このコードでSweep.TopologyNodeとSweep.RouteTreeNodeがプライベートになっているんですが、両方に対してアクセスできない保護レベル、TreeNodeのアクセシビリティがCreatePrivateメソッドのそれよりも低いといわれます。 スタブ君が何やってるのかいまいちわかっていませんが・・・
Marshal.CopyやMarshal.WriteByteに相当するものを C#だけで実装するのは不可能? どうあがいてもコンパイラエラーになるんだけど
byte[] array = new byte[] { }; IntPtr ptr = IntPtr.Zero; byte* p = (byte*)ptr; for (int i = 0; i < array.Length; ++i) *(p+i) = array[i]; こういうこと? テストはしてないがコンパイルは通る。
608 :
606 :2006/10/03(火) 19:25:51
unsafe static void Copy(IntPtr source, byte[] destination, int startIndex, int length) { byte* p = (byte*)source.ToPointer(); for (int i = startIndex; i < startIndex + length; i++) destination[i] = *(p + i); } これでうまくいきました。ありがとう。 なんで今までわからなかったんだろ
質問 全角入力時、テキストボックスのKeyDownイベントでe.keycodeの値を拾うと、 値が何を押してもProcessKeyになってしまいます。 IMEの全角入力字に打たれたキーを取得し、ローマ字を作りたいのですが、 どうすればいいでしょうか?
WM_IME_ 系のメッセージを捕まえて処理する事になるな
visual studio 2005 等のツールバーのボタンとかは マウスを上に持っていくと青い半透明の矩形が描画されるタイプのボタンですが これを普通のフォームでボタンとして使いたいのですが 方法はありますでしょうか? Win32APIを使っても構いません。 かなりださいですが、自前でDraw系のメソッドを使ってそれらしいのを 作ることはできましたがそれようのAPIがあると思うのです。 よろしくお願いします。
>>611 >visual studio 2005 等のツールバーのボタン
ってToolStripのボタンみたいなやつのこと?
APIなんてあるわけない。
PanelにToolStrip乗っけてそこにToolStripButtonでどうか。
ToolStripのRendererで背景を描かないようにすればなんとか。
まあ自前描画したほうがよさそうだが
>>612 やっぱないですか・・・
たとえばですが、SleipnirとかJaneStyleとかのツールバーは
どうやって描画してるんですかね?
やっぱみんな自前描画なのかな・・・。
作者じゃなきゃわかんないよね。
きいたらおしえてくれるんかな
>>613 VS2005のツールバーと、SleipnirとかJaneStyleとかのツールバーは
全然違うやんけ
あっちはただのToolbarWindow32(+VisualStyle)でしょうが
なんで文字列のハッシュ取るのにASCIIエンコーディングを使いたがるんだろう。
static void Main( string[] args ) { Console.WriteLine( "KawaisOS Ver.-1 (´・ω・)" ); Console.WriteLine( "(C) Copyright 1985-2001 Kawaisosusoft Corp.\n" ); while( true ) { Console.Write( "C:>" ); if( Console.ReadLine() == "ver" ) Console.WriteLine( "KawaisOS Ver.-1 (´・ω・)\n" ); else { Console.WriteLine( "コマンドまたはファイル名が違います。\n" ); } } }
617 :
デフォルトの名無しさん :2006/10/04(水) 15:06:48
流れぶった切って質問しちゃいます。 /* と打って改行すると * とかつくのやめさせるにはどうするの? 教えれ。
それがルールなごや
>>617 あれうっとおしいと思ってたのは俺だけじゃなかったか。
/*[Enter][Ctrl+Z]と打ち込む習慣をつける。
改行文字をクリップボードにコピーしておいて[Ctrl+V]
622 :
デフォルトの名無しさん :2006/10/04(水) 17:55:34
VSから「参照の追加」でCOM参照するとラッパー作ってくれるけど あれをコマンドラインからやるにはなんというコマンドつかいますか?
TlbImp.exe
625 :
デフォルトの名無しさん :2006/10/04(水) 20:23:55
VSで「ビルド後のイベント」でgacutilを実行すべく "$(VSInstallDir)"\SDK\v2.0\bin\gacutil /if "$(TargetPath)" としましたがVSInstallDir変数がVC++でしか定義されていないので実行できません。 vc#はどこで定義するのでしょう?
626 :
デフォルトの名無しさん :2006/10/04(水) 21:08:44
Windowsプログラム初心者です。現在C#を使っています。 質問なのですが、現在アクティブになっているWebブラウザから、テキストを 抽出するプログラムを書きたいのですが、その実現方法にはどの様な方法が あるのでしょうか? (板違いだったらすいません。)
>>626 どのブラウザなのかも書いてないし。
ブラウザ拡張にしたいのか単独アプリなのかも書いてないし
そこまで面倒みきれません。
628 :
デフォルトの名無しさん :2006/10/04(水) 21:24:32
>>627 すいません。説明が足りませんでした。
ブラウザはIE6.X.X系です。
実現方法については、ブラウザ拡張(Plugin)にするのか単独アプリにするのかの2つを
考えているのですが、調べてみたところ単独アプリの方が実現しやすい用なので、
単独での実現方法を教えていただけるとありがたいです。
実現しやすいって分かったんなら方法も分かってるってもんじゃないの?
630 :
デフォルトの名無しさん :2006/10/04(水) 21:38:59
>629 Pluginと単独アプリを比較して実現しやすそうだなと思っただけなので、 具体的な実現方法については分かっていません。 何か具体的な良い実現方法がありましたら教えていただけますか?
バッチファイルをかくのと通常のwinアプリをかくのでは バッチを書くほうが楽だからバッチで作ろうと思った ってのと同じ理屈じゃないか
>>630 COMでできます。
Shell.Application のインスタンスを作って Window を列挙して、
IE のウィンドウを見つけたらInternetExplorer.Application インタフェイスを取得して、
Document プロパティで IHTMLDocument とかが取れるのであとは簡単だと思う。
C# でも簡単にできると思うけど、今忙しいので具体的なコードは示せない。
633 :
デフォルトの名無しさん :2006/10/04(水) 22:14:09
>632 有難う御座います。早速調べてみます。
結構泥沼に嵌まりそう>COM
.NETの質問もここでいいですか? Graphics.DrawImageを使ってPictureBoxに巨大なBitmap(5000x5000くらい)を 表示しようとすると表示がかなり遅くなってしまいます。 一方、小さなBitmap(1024x768)を同じように表示すると 巨大なBitmapの時ほど遅くなりません。 どちらもディスプレイサイズ(1024x768)は同じなので、 結果的に描画される(見える)範囲のサイズは同じなのですが、 DrawImageを使うとBitmap全体を(見えないところまで)描画しようとしまっているようです。 そこでSetClipメソッドやClipプロパティでクリッピング領域を指定してみたのですが、 描画速度に変化はありませんでした。 巨大なBitmapの見える範囲だけを描画するシンプルな方法はないでしょうか?
>>635 ソース側矩形も指定して、見える範囲だけを描画すればいいと思う。
DrawImageを下の用に使っており、 dstRectにはディスプレイのサイズが、 srcRectにはdstRectと同じサイズが指定してあります。 g.DrawImage(bgImage, dstRect, srcRect, GraphicsUnit.Pixel); ですが、これだけだと描画は遅いままになってしまいます。
bgImageを切り取れ、ってことじゃ?
回答ありがとうございます。 > bgImageを切り取れ、ってことじゃ? 残念ながらそれしかないですかね。 巨大なBitmap(5000x5000)をスクロールして表示したいと考えていたので、 スクロール時に毎イベントごとに切り取りをすると 余計に処理が重くなってしまいました。 (ひょっとしたら.NETはこれが高速なのか?とか期待したんですが、やっぱりダメでした。) なので、次善策として巨大なBitmapを適当なサイズ(256x256とか)に切り分けて、 これをタイルパターンのように表示する方法で試してみます。
遅いのは GDI+ の宿命なので、Win32API & GDI 使って描画すれ。
あるいはD3D
この点だけなら、pInvokeで BitBlt 呼ぶのも悪くないと解決だと思うけど・・・
PictureBoxが糞なんだと思う。
Win32で戻り値がBOOLになってる関数を使いたいとき、 [return: MarshalAs(UnmanagedType.Bool)]ってつける必要あるでしょうか? pinvoke.netで調べてみると、IsIconicには付いているんですが、ほかに いくつか見たやつには付いていませんでした。
>>639 Unscaleでやっても駄目だったらもう駄目かな。
どっちにしろタイルにしないとブロック領域での転送は
出来ないので仕方ないだろう
質問します DataGridViewについてですが DataSetをDataSourceにセットしデータを表示させています で、ColumnHeaderをクリックし自動でソートさせても CurrentRowが同じ位置になってしまいます 例) ソート前 1<選択 2 3 ソート後 3<選択 2 1<ココを選択していて欲しい コレを回避するためにRowEnterイベントでRowのKeyを記憶しておき ソート後にそのキーに元にCurrentRowを設定しようと思ったのですが ソート直後にRowEnterが発生してしまい 上記例では3のKeyを覚えてしまいます 現在はRowValidatedイベントでKeyを取っていますが 何か他に方法などありますでしょうか?
;:;:;. ;:;:; ,、-ー-、 ど ;:;: ,r'"´ ̄`ヾ、 明 う ;:;:. リ ,,, ニ ,,,_ ヾト、 る だ :;:;:;. ,ハ ^7 ,^ !.:.\ く ;:;:;: /.:.:.V,r''''''ゞyイ.:.:.:.:..ヽ な ;:;:. ノ.:!:.:.:.:`ゞ-<7.:〉.:.:.:i.:.:} ろ つ 从 __ _,,,/.:.:/:.:.:.:.:.:| }-{/i.:/.:.:.:.:|.:/ う た 从从C# }と_」.:/!.:.:.:.:.:.:.!  ̄ リ.:.:.:.:.:り ?  ̄ ̄  ̄ |.:.:.:.:.:./_ :__ヽ.:.:.:.:\ \/.:.::..:.:.:.:.:.:..:\:.::./ /.:.:.:.:.:.:.「^Y.:.:.:.:.:.:|´ {.:.:.:.:.:.:.:.| ,!.:.:.:.:.:.:| __ \.:.:.:.:.:.V.:.:.:.:.:.:.:| /.:.:./ンく";;〕 \.:.:.::|.:.:.:.:.:.:.:! ヽ;::/::::::....;;;ヽ、 > 'ゝ─‐イ、 ヾ;;;;;;;;:::...;;;;〈 `ー' ``''ー‐' ‘ー.く`ヽイュ、 ソ´・ ̄ス_ お 暗 ::::::::::::::::::::: ./ ・ ・、√: : : ヽ ら 靴 く ::::::::::::::::::::::: >.= イ: : : : : ;_;| な が て :::::::::::::::::::::: /l_"/( ヽ}: : : : .] い わ ::::::::::::::::::::::::: `ー――` \ : : : イ わ か ::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
sort後に発生するイベントがあったような?
sort後じゃ遅いんだよっ!! って話じゃないかなっ
651 :
647 :2006/10/06(金) 09:33:13
>>649 >>650 レスありがとうです
色々試しているのですが
イベントの順番としては
1)RowEnter
2)(ソート操作)
3)RowEnter←ここでCurrentRowが変わってしまう
4)Sorted or ColumnHeaderClick
という感じなのです
状態遷移図作ってフラグを作る。
必ず2回RowEnterに入るなら、Key記録を2つ作ればいいんじゃないの? たとえばp0とp1を作っといて、 1)RowEnter →p1=p0、現在のアイテムをp0に記録 2)(ソート操作) 3)RowEnter←ここでCurrentRowが変わってしまう →p1=p0、現在のアイテムをp0に記録 4)Sorted or ColumnHeaderClick 位置をp1に。
せっかく面白回答したのにだれも食いついてこない。
素のDataGridViewはソート後も選択状態保存するよね
656 :
デフォルトの名無しさん :2006/10/06(金) 17:39:24
いろいろ質問です。 @ VC#2005、Winアプリにて自exeのverを取得する方法。 A 同じくGUIDを取得する方法。 B クラスライブラリを作って(dllが出来ますよね)ライブラリ内のクラスにて 呼出し元のアプリのGUIDを取得する方法。
へぇ、色々な疑問があるんですね
658 :
647 :2006/10/06(金) 20:18:48
皆さんありがとうです
皆さんの意見も参考に
半日悩んだ結果以下のような解決方法を取りました
設定として
DataGridViewの各Colummでsortmodeをprogrammaticに設定
そうする事でColumnHeaderClickイベントが最初に起こることを発見
1)(Row選択)←RowEnterが発生。ここでKey保持
2)(ソート操作)←ColumnHeaderClick発生。ここでソートフラグを設定
2-1)DataGridView.Sort実行
2-2)RowEnter発生←ソートフラグによりKey保持無視
2-3)1で保持したKeyを元にCurrentRow設定
2-4)ソートフラグ解除
※2-1〜2-4まではColumnHeaderClickイベント内
という感じで落ち着きました。皆さんどうもありがとうございました。
補足
DataGridView.Sort実行すると
CellのBackColorやチェックボックのValueがクリアされるので
ソート前に必要な情報は保持し
ソート後に設定しなおさないといけない
>>655 そうですね
sortmodeをAutomaticのままで
DataSet使わずにRowAddでやると
選択行を保持してくれるんですが
データ量が多いとRowAddだとレスポンスがよくないので断念しました
C#関連でブログやるつもりですがどこがオススメでしょうか?
チラシの裏
このスレ
theSpoke
663 :
デフォルトの名無しさん :2006/10/08(日) 20:29:38
Visual Studio .NETだと、[ツール]→[Webページのビルド コメント]でドキュメントコメントタグからAPIリファレンスが作れました。 Visual Studio 2005の場合、APIレファレンスってどうやて作るんですか? いくら調べてもやり方がでてこないんですよね。 どなたかご存知ではないですか? ご存知の方、お聞かせ下さい。 よろしくお願いします。
666 :
659 :2006/10/08(日) 22:52:36
>>664 せっかく紹介していただいたのですが、ハードル高すぎます。
667 :
デフォルトの名無しさん :2006/10/08(日) 23:33:40
なんだそりゃw
668 :
659 :2006/10/09(月) 01:10:42
やっぱ地道に見えないところで書きたい。 参加人数30人ぐらいのコミュって入り辛い。 しかもMVPばっかじゃないか。
逆じゃね? wankumaでブログ書くからMVPになれるんだろw
670 :
659 :2006/10/09(月) 01:24:38
>>669 FAQでそれはないって書いてあるだろw
FAQにも >Q. メンバに Microsoft MVP の方が多くて、参加に躊躇しちゃうんですけど・・・ >A. 躊躇しないでください。 とかってあるけど、よっぽど自信のあるヤツじゃなきゃ躊躇するだろw
MVPはコネがないとなれないからね。 チャンスじゃん。
こいつじゃんぬっぽくね?
674 :
デフォルトの名無しさん :2006/10/09(月) 11:59:45
>>668 君はオープンなblogを書くのに向いていない
やめとけ
C#2.0のシリアライズで教えてください。 シリアル化されたファイル(SOAP)から、 IDeserializationCallback.OnDeserialization で、逆シリアル化しようとしても、 string や、int などの値データは読み出せるのですが、 独自のクラスのフィールドが上手く読み出せません。 OnDeserializationが呼び出されている以上、 オブジェクトグラフすべての逆シリアル化は完了しているはずで、 おまけに OnDeserialization 内で SerializationInfo の GetValue を使っても、 例外はスローされず、読み出し自体は成功しているように見えます。 なのに、変数のフィールドはすべてnullや0が埋まっています。 (変数自体はnullではない) 不思議なのは、GetValue を使った後の変数のフィールドとして保持してある SerializationInfoの変数内には、本来欲しいはずのフィールドデータがすべてそろっている点です。 要は、このデータをフィールド内に取り込みたいのですが、 何か方法が間違ってるのでしょうか?
676 :
675 :2006/10/09(月) 14:06:03
すみません。自己解決しました。 お騒がせしました。(;´Д`)
今後同じようなことにはまる人の為に、 どういう問題だったのか書いてくれるといいな。
678 :
675 :2006/10/09(月) 14:44:53
ただの凡ミスですよ(;´Д`) 簡単に言えば、AとBという二つの独自のクラスがあって、 B は A のフィールドデータなので、A をシリアル化する際には、 両方のシリアル化が必要でした。 B はオブジェクトですが、Bのフィールドには値型のデータしか含まれてません。 A を逆シリアル化する際、さっきも書いた通り B はオブジェクトなので、 A にはオブジェクトグラフの逆シリアル化が完了したときに入ってくる OnDeserialization を実装しましたが、その際に、A のコンストラクタには、SerializationInfo を private メンバとしてフィールド化しました。 B のシリアル化関連のコーディングをする時、A のソースをそのままコピって 張り付けたときに、B のコンストラクタ内で SerializationInfo のメンバもコピー するコードを張り付けてしまっただけで、コンストラクタ内で 本来行うべき SerializationInfo からの読み出しをしてなかったのです。 でも、B のフィールドとしてSerializationInfoを保持しているため、 A を逆シリアル化した再に、Bのデータはすべてnull、 B のフィールドであるSerializationInfoには、正当なデータが格納されているという おバカなことが起こったわけです。
679 :
デフォルトの名無しさん :2006/10/11(水) 18:32:43
あげたい気持ち
質問です。 過去ログに有ったら申し訳ありません。 VS2005環境でMDIアプリを作っているのですが、 EXCELの様にMDIの子ウィンドウをタスクバーに表示する事は可能ですか? よろしくお願いいたします。
ダミーのウインドウを出すとか
683 :
680 :2006/10/12(木) 19:43:49
>681,682 ご回答ありがとうございます。 >682 実際にまだ試してないですけど、 予想はしてましたがやっぱりこういう方法になるのですね。 とりあえず… 今新案件の設計段階で、 お客さんからMDI案で質問の様な事ができる必要があるって話だったのに、 今日(ついさっき)打ち合わせでMDI案を取り下げられてしまい、意味が無くなってしまいました… 心の奥にしまっておきます。
C#のジェネリクスで異なる基本の数値型に対応させたものを書きたいときはどうしたらいいんでしょ? T Mul<T>(T lhs,T rhs){ return lhs/rhs; } とかかきたいんですが。
Mulで除算すか(笑い
>>684 System.Reflection.Emit名前空間を使って動的コード生成
わんくまの質問掲示板に同じ趣旨のスレが立ってるな
690 :
デフォルトの名無しさん :2006/10/13(金) 22:34:14
C#でジェネリクスを自前で用意するようなことってあるかい? そのレベルのソフトウェアの開発を行うならC++を使え
692 :
デフォルトの名無しさん :2006/10/13(金) 23:53:37
頼むからnative吐くようにしてくれ。
ここで言われても困る
694 :
762 :2006/10/13(金) 23:59:52
class Example delegate TReturn TwoParameter<TReturn, TArg>(TArg arg1, TArg arg2); static TReturn DynamicMull<TReturn, TArg>(TArg lhs, TArg rhs) where TReturn : struct where TArg : struct { Type[] methodArgs = { typeof(TArg), typeof(TArg) }; DynamicMethod multiplyMethod = new DynamicMethod( "", typeof(TReturn), methodArgs, typeof(Example)); ILGenerator il = multiplyMethod.GetILGenerator(); il.Emit(OpCodes.Ldarg_0); il.Emit(OpCodes.Ldarg_1); il.Emit(OpCodes.Mul); il.Emit(OpCodes.Ret); TwoParameter<TReturn, TArg> invoke = (TwoParameter<TReturn, TArg>) multiplyMethod.CreateDelegate(typeof(TwoParameter<TReturn, TArg>)); return invoke(lhs, rhs); }
>>692 実行直前にJITでnativeにコンパイルされるし。
なんなら、インストール時にコンパイルしてもいいんじゃない?
.NETなんて、重いのはGUIの仕組みだったり、 ランタイムやそれをサポートするライブラリだったりするわけで、 ネイティブにできてもあんまかわらんと思う。
>>692 ngen通せばいいじゃん。
それにライブラリはほとんど全部DLLになってるからそれは仕方ないし。
698 :
デフォルトの名無しさん :2006/10/16(月) 16:40:52
メインウインドウのウインドウスタイルにWS_EX_LAYEREDつけて SetLayeredWindowAttributesで半透明とかにすると ToolStripTextBoxの描画にごみが出るんだけど、これってバグだよね
あ、FormのOpacityを変えても同じだった
ReSharperスゲーな。 これいれて、やっとvs2005が完全体になったと感じた。 eclipseのJDT並のリファクタリングができる。 ま、30日間のevaluationだがな。
701 :
デフォルトの名無しさん :2006/10/17(火) 15:45:54
TreeViewのノードのドラッグ中のエフェクトが CopyかAllしか受け付けてくれないんですが。 これはなぜ?
テキストエディタで、縦のグリッド線(桁基準線)を任意の桁に 複数引きたい(固定長テキストが見やすいように)のですが、そういう フリーのエディタを探してみたら見つからなかったので、自分で 作ろうと思ったのですが、どうやったらできるんでしょうか? TextBoxを継承してSetStyle(UserPaint, true)してOnPaintでためしに (0,0)-(100,100)に斜め線を引いてみたのですが、キャレットがある行は線が消えてしまうし、 リサイズなどで全体が再描画されると文字が全部消えてしまうし、 文字の上に線が来ないから役に立たないしで失敗しました。 あるいは、縦線機能があるフリーのエディタがあったら教えてください。
そういうのは継承とかじゃなくて完全に自前で書いた方が早いよ。
単に描画順を逆にしたら良いのでは? beseを先にするだけじゃあ?
やって見てから言え
所詮はTextBoxだしなあ。 一人前のエディタになるには遠過ぎる。 どの程度のエディタを作りたいのか知らないけど。
むしろエディットする必要が在るのかどうかから考えた方がよさそうな気もする
709 :
デフォルトの名無しさん :2006/10/18(水) 22:52:37
http://money4.2ch.net/test/read.cgi/build/1160576047/27 http://money4.2ch.net/test/read.cgi/build/1160576047/306-310 352 :(仮称)名無し邸新築工事 :2006/10/18(水) 19:59:48 ID:pRhQsipC
他社で2万の工事を朝鮮人の名刺出して22万って
これって思いっきり脅しじゃん
355 :(仮称)名無し邸新築工事 :2006/10/18(水) 20:09:51 ID:sGavnuL0
記念カキコ。
この朝鮮人を擁護するニュースを流したNHKも許せん。
366 :(仮称)名無し邸新築工事 :2006/10/18(水) 21:00:38 ID:???
朝鮮人のせいで積水崩壊の危機だな
ここでも法則発動か・・・
369 :(仮称)名無し邸新築工事 :2006/10/18(水) 21:11:05 ID:???
【お知らせ】
阪神淡路大震災でも倒壊しなかった積水ハウスが、
一人の韓国人のせいで崩壊の危機に面しています。
379 :(仮称)名無し邸新築工事 :2006/10/18(水) 21:41:02 ID:???
>>370 まともな企業なら、顧客・消費者の信頼を大切にするよね。
積水ハウスは自ら、「在日コリアン人権協会」との関係を断ち、
いわゆる「人権団体」の実態を明らかにするべきだ。
恐喝や脅しを受けているのなら、それも公表するべきだ。
構造体定義すると「メンバが初期化されない」という警告がでるので コンストラクタ定義して0とかnull代入しとこうと思ったら今度は 「構造体には引数なしのコンストラクタは定義できない」エラー。 どうすればこの警告消せる?
Size.Empy みたいにするとか
712 :
702 :2006/10/19(木) 10:02:09
要件としては、メモ帳に縦線機能が付いてれば十分です。
怒IKARIとか、CSV/固定長エディタはいくつか見てみたんですが、こういう
セル編集タイプのエディタだと今回はだめなんです。
というのも、こともあろうにレコード長がそろっていない固定長テキストを
送ってくる人(プログラム)がいて、そんなデータの確認とか修正も
しなきゃいけないので、どこがずれてるとかいうのは機械で判別できないし、
とりあえず縦線だけ表示してあとは人手でいじりたいのです。
(そいつを問い詰めろとかバグ直せとか、それもありますが)
>>703 自前で引いたほうが早いというのは、どうやるんでしょう?
struct Sample { public Sample Empty = new Sample(0, 0, 0); public int A, B, C; public Sample(int a, int b, int c) { A = a; B = b; C = c; } }
お、static が抜けていた
警告出さないのが目的ならEmptyは定義しなくてもいいかと。 さらに手抜きして struct Sample { public int A, B, C; private Sample(int dummy) { A = B = C = 0; } } とか。さらに手を抜くと #pragma warning disable 649 struct Sample { public int A, B, C; } #pragma warning restore 649 というのもあり。
>>711 、713
引数なしのコンストラクタを使う限り#pragma使わないと警告は消えないのか。。
引数なしコンストラクタが定義できない意味がわからないな。
定義しなくても使えるだろに
なんでわざわざダミーとか作るの… さらにEmptyとかのメンバならメンバ定義だけで勝手に初期化してくれるし
なんで警告出るかっていうと 構造体のデフォルトの初期化は 全部ゼロ埋めがお約束だから 余計なことすんなってこと
>>719 余計なことって何だ?
struct Sample {
public int A, B, C;
}
static void Main()
{
Sample s = new Sample();
Console.WriteLine(s.A);
}
これだけで「Sample.Aは割り当てられません。常に規定値0を使用します。」
って警告がメンバの数だけ出るんだが。
>>712 線を引くトコだけやるのではなく、
キャラクタやキャレット、編集選択その他を全て自前でやるということ。
おお? 正直すまんかった
>>717 使えるけどワーニングいっぱい出てうっとおしいんだYO!
クラスのときは
class a{
int i=0;
int j
a(){ j = 0; }
}
とかできんのに構造体はどないなっとんねん
構造体は値型だから暗黙で引数無しのコンストラクタが定義されてるからなあ。 でも、なんで警告出すんだろ?
やっぱりpragmaだろうな…
listviewでLabelEditによる編集後をイベントとして取りたいのですがAfterLabelEditだとListviewのitemに 変更を加える前にイベントが発生してしまうようです。Listviewのアイテムに反映された後にイベントを 取るにはどうしたら良いのでしょうか?。
ListView継承してWndProcオーバーライド、 メッセージごにょごにょで独自イベント実装 でいけそうな希ガス
727じゃないけど、Reflectorで見た限りこんな感じ? しらんけど。 class ListViewEx : ListView { protected override void WndProc( ref Message m ) { base.WndProc( ref m ); if( m.Msg == 0x204e ) { NMHDR nmhdrPtr1 = (NMHDR)Marshal.PtrToStructure( m.LParam, typeof( NMHDR ) ); if( nmhdrPtr1.code == -176 ) { MessageBox.Show( this.SelectedItems[0].Text ); } } } } struct NMHDR { public IntPtr hwndFrom; public IntPtr idFrom; public int code; }
おっと。 × if( nmhdrPtr1.code == -176 ) ○ if( nmhdrPtr1.code == -176 || nmhdrPtr1.code == -106 )
>>716 値型は名前通り値なんで、引数無しというのは不自然だと感じないか?
int i = new int();
とか凄く不自然に感じないか?
>>711 なるほど・・・
MyInt x = MyInt.Zero; とかするのも良いか。
732 :
デフォルトの名無しさん :2006/10/20(金) 13:32:07
1.1でXMLファイルをコードから更新しようとしているんですが、 XmlDocumentを使ってPreserveWhitespaceプロパティをLoad前やSave前でtrueにしても XMLファイル中のXML属性間の空白文字が維持されないようなんです。 XML属性間の空白を維持したまま更新するにはどうすればいいですか? そもそもXmlDocumentを使うなということになるんでしょうか?
733 :
デフォルトの名無しさん :2006/10/20(金) 13:56:21
ツール12個まで
735 :
726 :2006/10/20(金) 19:52:15
>>727-729 ありがとうございます。
色々と試してみるのですが上手く拾えず・・・。
メモっておいて他の事をしながら閃いたら再チャレンジしてみます。
クリップボードを監視したいのですが上手く拾えません。 何処が間違えているのかご指導ください。 namespace test.cs { public partial class Form1 : Form { private const int WM_DRAWCLIPBOARD = 0x0308; private const int WM_CHANGECBCHAIN = 0x030D; [DllImport("user32")] public static extern IntPtr SetClipboardViewer(IntPtr hWndNewViewer); [DllImport("user32", CharSet = CharSet.Auto)] public extern static int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam); protected override void WndProc(ref Message m) { if (m.Msg == WM_CHANGECBCHAIN) { MessageBox.Show("WM_CHANGECBCHAIN"); } else if (m.Msg == WM_DRAWCLIPBOARD) { MessageBox.Show("WM_DRAWCLIPBOARD"); } else { base.WndProc(ref m); } } } }
>>737 途中にモーダルなUI挟むと危ないんじゃね?
ついでにメッセージの処理サッパリしてないよ?
その前にクリップボードチェインに登録してないんじゃないのか 即、ググルようにw
VistaのExplorerで、WordやExcelやらのプレビューが出来るが。 あれはどうやれば対応出来るんだろ?
それ。ありがとう。 てか、C#で組むのまんどくさそう。
743 :
732 :2006/10/22(日) 06:25:40
>>734 やっぱりそうですか。
おとなしくXmlDocumentを諦めることにしました。
ありがとうございました。
744 :
デフォルトの名無しさん :2006/10/22(日) 07:16:11
FileSystemWatcherでエクスプローラーのようなツリービュー作ってるんですが。 監視してるフォルダが使用中になってます。 ドラッグドロップでフォルダの移動等をすると、ファイルが入ってるから移動できないとか ファイルが使用中とかのメッセージボックスが出てきます。 どうにかなりませんかね。
再現しねぇなぁ
746 :
デフォルトの名無しさん :2006/10/22(日) 08:34:19
3階層のフォルダまでは移動できるんですが、 それ以上になるとエラーで止まるんですよね。 監視をやめると普通に動くという。 監視はルートだけにしたほうがええんかなぁ。
>>744 >>746 ゴメン、
> FileSystemWatcherでエクスプローラーのようなツリービュー作ってるんですが。
> 監視してるフォルダが使用中になってます。
もっとkwsk書かないと、問題を切り分けられないyo
748 :
デフォルトの名無しさん :2006/10/22(日) 12:02:09
WinXP(SP2)、VS2003、IE6(SP2)です。 フォームにIEコンポーネント(axWebBrowser)貼り付けてるんですが、 JavaScriptを無効にする方法知りませんか。 IEの設定で「Internet Explorer Webbrowser コントロールのスクリプトの許可」を無効にすればいいかと思ったのですが inputタグのonclickで呼ばれる関数が実行されてしまいます。
きみのレスにあるキーワード使ってぐぐったら即見つかった
750 :
デフォルトの名無しさん :2006/10/22(日) 12:11:14
751 :
748 :2006/10/22(日) 12:42:44
いろんな単語を組み合わせてググったら見つかりましたorz
>>744 Cドラ配下をルートに指定して、サブフォルダの監視もOnにして
20階層のフォルダを移動しても再現しないぞ。
753 :
デフォルトの名無しさん :2006/10/22(日) 17:20:50
いや、ノード毎にウォッチャーを持ってるんです。 class Node:TreeNode { public Node(string path) { foreach(string dir in Directory.getDirectory(path)) this.Nodes.Add( new Node(dir) ); this.FolderWatch();//ここで監視 } } こんな感じで。 説明足らずでモウシワケナス。 これはイベントが続出すると同期が取れないってありましたが、 そのせいなのかな。 でもエクスプローラーの操作もロックかかってるんですよね。
754 :
デフォルトの名無しさん :2006/10/22(日) 19:46:09
もう先回りしてNodeをDisposeして対処しました。 コードがどんどん汚くなってきた。
ここらで一本リバースエンジニアリング
すまんです。昔から議論になってるとこだとは思うんですが、多重継承ができないことによるインターフェースでの継承で実装がめんどくさいことについて意見ください。 自分はC++でダイヤモンド継承以外の多重継承はよく使っていました。そうすることでいろいろな場面に対応しうるクラスを実装の手間を省きながら実装できるからです。 C#ではもちろんできません。皆さんはどうしてるんでしょう? 1.画面クラスでかつ構造がTreeNodeであるようなものを実装するとき多重継承的にしたい。 2.インターフェースでやって実装をImplementクラスに移して委譲しようとすると継承するすべてのクラスで対応しないといけないためめんどくさい。 意見くだされ。
>>756 C++ の時と同じ感覚で C# での設計を行わない
>>756 漏れなら1みたいなものはそもそも多重継承せずに、TreeNodeはプロパティで公開する。
2は確かに面倒だけど、漏れの場合大量のインタフェイスの実装が必要な場面ってCOM
オブジクェクト作る時くらいだから、そこだけ ATL/C++ でやってます。
>>757 どうすべきかよくわからんです・・・(・ω・)
>>758 今想定してるのは画面のパネルでかつ入れ子の画面アイテムを持つようなものなんですが、そのばあいTreeNodeのプロパティは何を指すんでしょう?
Widget widget;
widget=widget.TreeNode.NextSibilingItem();
見たいな感じということ?インプリメントクラスのイメージ?
>>759 例えば System.Windows.Forms.Panel だと、入れ子になった Control は Controls プロパティに入っている。
そういう話じゃなくて?
あと、コードのコピペを嫌うのなら、
1: アスペクト指向などを使って、コードを織り込む
2: Java の AdapterClass みたいなのを用意し、それを継承した内部クラスを作る
とか。
ついでに言うと、何に困っているのか分からんのです (;´・ω・`)
>>760 とりあえずWindowsFormとは関係ない話の独自実装なんですが、
Widgetが入れ子で別のWidgetを持ってる可能性があります。でのそのデータ構造はTreeとして扱おうとしています。
インスタンスのwidgetは描画などの際にはWidget型として、トラバースする際にはTreeNode<Widget>として扱われます。
これは一例なんですが、いずれにしてもいわゆる多重継承とかMixinを使いたくなるときがありますよね?
ある役割のクラスであるが同時にほかの役割も果たすようなものです。そういうのをインタフェースで定義するのはいいけれど実装がめんどくさいよねってことです。
C++なら実装継承できていたものをC#ではできない。ならば設計を変えるか実装方法の改良をするか。おのおのでいい方法がないかと意見を聞いてみたかったんです。
>>761 mix-in が出来ると便利なのは漏れも C++ 使いなので大変よくわかるけど、
その例では全く mix-in の必要性を感じない。
class WidgetA : Widget
{
public WidgetList Children { ... }
...
}
としか設計しようがないような気すらする(漏れは頭が固いから)。
昔漏れの知り合いが、Rectangle を派生させて Window を作っていたのを思い出した。
C# では機能の追加は、mixinではなく委譲とdelegateでのコールバック(orイベント)で
実現するのが良いと思う。
>C# では機能の追加は、mixinではなく委譲とdelegateでのコールバック(orイベント)で >実現するのが良いと思う。 蛇足気味に説明を追加。 上の例では、コールバック等を使ってWidgetA が自分の子の WidgetList のobserverになるという意味。 内容への変更などを監視するために(もしそうしたいなら、だけれども)。
764 :
761 :2006/10/23(月) 17:14:45
>>762 すまんです。例が悪いのでこの例の場合というのははずしておいてください。
自分のイメージではクラスの継承にしろインタフェースの継承にしろIsAのために行っているので機能追加のためという意識は低いです。
そうする必要があるときに実装のめんどくささをどうしようかというのを聞いてみたかったんです。
集約
766 :
761 :2006/10/23(月) 18:10:13
contextMenuStripで選択されたアイテムのテキストを収得したいのですが、どうしたら良いでしょうか?
逆に考えるんだ。is-a を使わないようにすれば良い ……正直、is-a 継承を多用することってあまり無い希ガス
>>768 無いというか無くそうとされたというかそんな感じのほうが。
というか印象がもうC++脳なのでばっさり忘れちゃってください。
かつての自分への自戒も込めていうけども。
.NETってオブジェクトがどうとかJavaっぽいとかいわれてるけど
本質はコンポーネントに特化したある意味Crazyな実装なので。
ちなみに、Mix-inは2.0だとジェネレータとpartialでやろうと
している人はいます。
>>768 んーWidgetでかつSerializableなものとかIWdgetでありかつISerializableってかんじで組んでたんですが・・・(・ω・)
>>769 たすかに。けんどそげなこといわれてもWidgetでかつSerializableなものはどうすればいいですだ。
VisitorとAdapter組み合わせればいけないこともないけれどイヤンです。
>>770 ??
IWdget と ISerializable を両方とも継承すればいいのでは?
>>771 そうすればいいけど、実装コードがめんどくさいですよねってことです。
インプリメントクラス作って、委譲コードを継承クラス全部に書かないといけない。
>>769 正直ジェネレータっぽいのを作らないとだめ層です。
774 :
デフォルトの名無しさん :2006/10/23(月) 19:56:39
C++だろGUIライブラリがしょぼいから嫌
めんどくさいからC++を使うとか本末転倒だろ
C++/CLIでかくならいいかもしれないけど、いまだとマネージクラスを多重継承できないとか何かあるんだっけ? そっちはそっちでまた別のところではまりそうな気がする。
777 :
デフォルトの名無しさん :2006/10/23(月) 20:30:08
つかさ、継承自体必要なくね? ポトペタで作れちゃうよね
class Form1 : Form // <-注目
779 :
デフォルトの名無しさん :2006/10/23(月) 20:35:46
っえ、それって継承してるんですか? てっきりリネームしてるだけかと思ってた
>>767 選択ってポイントされてるという意味か?
ループで回して子をのSelectedを調べる
781 :
デフォルトの名無しさん :2006/10/23(月) 21:55:57
今までVB6.0しかやったことがありません。 これからC#(Visual C#2005 Express Edition )を始めるのですが、1から始めるC#のおすすめ本かHPってありますか? プロジェクトの作り方から解説してある方が助かります。
プロジェクトの作り方という表現に隔世の感を覚える Hello, world から始めた年寄り
>>781 ふらっとスレのテンプレにいろいろ
C#は触るより言語から先に覚えた方が速いと思う
>>780 カーソルを合わせた時ではなくてクリックされたアイテムのテキストを収得したいのです。
アイテムはリロードの数字で1,3,5,10とかなので1つ1つにイベントを設けるのではなく
まとめて処理したいと考えました。
sender が ToolStripMenuItem じゃなかったっけ
>>785 senderから探るのは無理。
汚いコードで解決するしかないな。
>>786 ToolStripに変換して悩んでいました
ありがとうございます
ToolStripMenuItem a = (ToolStripMenuItem)sender; MessageBox.Show(a.Text); でいけました senderは色々なものに変換できるのだと知りました
別に色々なものに変換できるわけではないが
そこまで、Is-Aにしようとする必要ってあるんだっけ? わざわざ委譲するコード書きまくるなら 入れ物にそのままインタフェースでプロパティとして、公開させれば楽じゃないの? class AdapterForIsA{ public ISerializable Data; public IWidget Widget; } private 継承はあったらいいなとは思うけど・・
そろそろスレ違いになるので放置。
SHAppBarMessage()でFormをApplication Desktop Toolbarにしたのですが、 このFormからContextMenuStripを表示すると表示位置をコントロールできません。 具体的には、Formの外に表示されます。次のコードを使っています。 private void MainForm_MouseClick(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { menuMain.Show(this, e.Location); } } どなたか経験がある方はアドバイスを頂きたいです。よろしくお願いします。
>>794 SHAppBarMessage を外しても再現するかどうか確認してください
その後、 e.Location の値を MessageBox.Show でも使って確認してください
>>795 SHAppBarMessage()を適用しなければ、ContextMenuStripは
マウスクリック位置に表示されます。
ウインドウだから重ならないようにしてくれてるんじゃ? ContextMenuStripじゃなくてContextMenuを使うとか
>>797 確かにマウスクリックの位置に表示されました。
ildasmしてみると、ContextMenuStripはメニューの動作を再現したコントロールで
ある一方、ContextMenuはレガシーなメニューなんですね。ContextMenuStripは
オーナードローメニューであるとばかり思っていました。道理で勝手に動かされる
はずでした。しかしそうするとContextMenuStripの恩恵は全く受けられないことに
なってしまうわけですね…悩みます。
何はともあれ、レスを下さった皆さんありがとうございました。
>>792 Widgetのツリーをそのままシリアライズさせたいときとかさらにほかの処理も絡んでたりすると、Adapterからめるとそれはそれでどこかで破綻しそうな希ガス。
こういうのっておまいら的にどうよ。 public class TreeNode<Key, Node> where Node : TreeNode<Key, Node>, new() { ・・・・ }
すみません。質問させてください。 Edyセンターとの通信のことで教えてください。 ECCLPro.dllをC#で動かしたいんですが 仮想WindowにメッセージをPostしてそのレスポンスが取れません。 どのようにしたらうまく取れるか教えてください。
なぁインターフェースを明示的に実装(IBase.ExecOrder(){}みたいなやつ)するとなんでpublicつけると文句言われるの?
普通のインタフェースの実装もpublicでpublicつけんかゴラァっていわれるのに・・・(・ω・)
805 :
デフォルトの名無しさん :2006/10/24(火) 15:32:35
MessageBox.Show(comboBox1.SelectedItem.ToString()); これって MessageBox.Show(comboBox1.SelectedItem); としたら、なぜだめなんですか?
>>805 ComboBox.SelectedItemはObjectを返して、
MessegeBox.Show()にはObjectを引数に取るオーバーロードがないから。
807 :
802 :2006/10/24(火) 17:13:24
明示的に実装したインターフェースをそのクラス内部から呼び出すにはどうしたらいいんでせう・・・ キャストしないと無理?
インターフェースを明示的に実装とは何ですか?
インターフェイスを呼び出すとは何ですか?
>>808 実装MethodにIntarfaseName.が付くんですぅ><
811 :
808 :2006/10/24(火) 17:33:57
812 :
808 :2006/10/24(火) 17:36:58
インターフェース名を明示したって事だな。 明示する理由が分かった。 これpublicにするとまずいだろ
ttp://msdn2.microsoft.com/ja-jp/library/ms229034.aspx 積極的な理由がない場合は、インターフェイス メンバの明示的な実装を避けます。
明示的な実装について理解するには、高度な専門知識が必要です。
たとえば、明示的に実装したメンバはそのシグネチャがプライベートであっても
パブリックに呼び出すことができることを知らない開発者が大勢います。
シグネチャがプライベートであるため、明示的に実装されたメンバは、
パブリックに参照できるメンバのリストには表示されません。また、メンバを明示的に
実装すると、不必要に値型がボックス化される原因となることもあります。
public void Method() { ((IInterfaceA)this).Method(); } void IInterfaceA.Method(){} void IInterfaceB.Method(){} こういうのはいいんだっけ
Generics で値型を使った場合 (Point<int, int> みたいに) boxing/unboxing が行われるコードが生成されるの?
意味が分からん。 行われる時は行われるし行われない時は行われないだろ。
820 :
デフォルトの名無しさん :2006/10/25(水) 00:04:35
すいませんウェブサービスを参照している画面を継承して 画面をつくったら、 アセンブリロケーションが変な場所になっていて UIデザイン画面読み込み時にApp.Configがありませんとエラーが出ました。 実際ビルドすると普通にとおってローカルで動いています。 デザイン時のこのエラーをなくすにはどうしたらいいのでしょうか? ウェブサービスを参照している画面を継承元にするとやはりまずい?
hogehoge.Designer.csを自分で編集して参照してるとこを書き換えればいいんでないの?
822 :
デフォルトの名無しさん :2006/10/25(水) 10:09:09
>>821 すいません、参照しているところ、、、って?
Designerにそんなことかいてあるのでしょうか?
探してみます!
823 :
デフォルトの名無しさん :2006/10/25(水) 22:52:01
NUnitの質問もここでいいですかね? NUnit2を使ってテストしたいのですが 同期メソッドのテストは出来たのですが 非同期メソッドのテストの仕方がわかりません デリゲートにコールバックが返ってきて値をチェックして成功を判断したいのです 誰かやり方を教えてください
WaitHandleとか使って待つとか 適当にSleep入れてコールバック側でいつもどおりチェックする とりあえず、AutoResetEventを使用しとけば?
.NETの学習は時間の無駄です
.NETの学習は時間の無駄です
.NETの学習は時間の無駄です
.NETの学習は時間の無駄です
829 :
デフォルトの名無しさん :2006/10/25(水) 23:53:46
textboxが3つあります(A,B,Cとする) A.text + B.text(数値加算) の結果をC.txetに表示したいのですが、エラーになります。 対象方を伝授して下さい int A = A.text; int B = B.text; int C = A + B; C.text = C.ToString();
C.text = ( int.Parse(a.Text.Trim()) + int.Parse(b.Text.Trim())).ToString();
>>819 thx.
ということは、代入時の動作が値型と参照型で違うけれども、
Generic なクラスを書くときは、そのへんを考慮しないといけないってこと?
832 :
デフォルトの名無しさん :2006/10/25(水) 23:57:01
>>829 みたいな質問って.NETの弊害じゃないかな?
アセンブラやCからプログラムを始めたような人なら絶対しない質問だよね
ポトペタ環境で糞低レベルなやつの質問が正直うぜー
VC6のような初心者にいきなり高い壁を見せ付けて脱落させる環境が好きだったのに・・・
代入とコレクションへの追加をごっちゃにしてないか?
>>832 C から始めた人なら char * を足し合わせるんじゃないか
836 :
デフォルトの名無しさん :2006/10/26(木) 00:00:30
そんやついねーよ
.NETの学習は時間の無駄です
>>833 コピーが追加されるか、そのものへの参照が追加されるのかは実質的に
区別が必要だと思うけど・・・
でもまぁそれは Generics なクラスを書くときに限らず、
値型を用いる場合一般について言えることのような気がする。
.NETの学習は時間の無駄です
スクリプトにレスしないように。
.NETの学習は時間の無駄です
スクリプトご苦労w 手伝ってやろうw .NETの学習は時間の無駄です そうは思わんがw
844 :
829 :2006/10/26(木) 01:24:56
レスありがとう。おいらVB坊ですが、C#を昨日始めたところなんで、最初からつまずきました。
>>844 C#は自動でstring → intなどの型変換しないのだ。
c++やjavaとかもです。
自動で型変換すると不都合が起こったり、バグが分かりづらくなりますので。。
えっ?
スレの空気が凍ったのが見えた
849 :
デフォルトの名無しさん :2006/10/26(木) 09:27:17
ホワイトアルバムのスタンド使いが現れたのか
エターナルフォースブリザード使いがいるのはこのスレですか?
最近Win32API直接呼び出す必要があるプログラムかいてんだけど ポインタ演算が整数で足し算しなきゃ駄目だからCよりえげつない事になるな p++って書けばいいとこ new IntPtr(base.ToInt32()+Marshal.Sizeof(..))
C#関連のコミュニティって言うとどこらへんよさげでしょうか? VSUG,MSDNフォーラムぐらいしかわからんです。 メーリングリストや海外の掲示板でもOKです。
>>844 本来ならVB(6.0)でもそんなことやっちゃダメなんだがな。
とにかくデータ型とその演算方法をそろえることだ。
どう見ても 文字型+文字型=整数型 っておかしいだろ?
がんばれ。
VBってあれでコンパイラ通るの・・・?
>>855 『自動で型変換が行われることはない』 が誤り
>>856 さすがに変数名とコントロール名がかぶってるから通らない。
でも
Dim x As Integer = A.Text
Dim y As Integer = B.Text
C.Text = x + y
なんてのは通っちゃう。もちろん実行時に数値変換できない文字列だったら例外発生。
オプションでコンパイル時に型チェックするようには出来るが規定値はOff。
string→intの方変換が自動で行われることなんてあんのか?
stringっつーかobject
おそろしい言語だな
C#的に言うと int i = "123"; と書くとコンパイラが勝手に int i = Convert.ToInt32("123"); と補完する感じ。 実際使われるのはVB独自の変換クラスのメソッドだけど。
>>937 どの文字かまで追ってないけどXMLの禁則文字が入ってるだけじゃね?
><&は< > &に置き換え
あぁ、タグ名かも知れんな・・・
"XML 禁則"でぐぐってくだちぃ
864 :
863 :2006/10/27(金) 07:36:21
誤爆スマソ
>C#は自動でstring → intなどの型変換しないのだ。 これのどこがまちがってんのか教えてくれ。
え、まじ? 自動変換してくれるとは知らなかったぞ
漏れもちゃんと変換書いてたお サンプルキボン
VB.NETはstrict onだと暗黙の型変換されないはず
>>865 蒸し返すな
869 :
デフォルトの名無しさん :2006/10/27(金) 11:01:50
XMLSerializer で、一つのファイルに複数のオブジェクトをシリアライズってできますか? 一つのファイルに対して複数の Serializer.Serialize() すると、一つのファイルに複数の オブジェクトが入りますが、Deserialize できません。 どうなんでしょう?
870 :
デフォルトの名無しさん :2006/10/27(金) 12:12:08
>>869 追記
違う型のオブジェクトを一つの XML ファイルにシリアライズできますか?
XmlSerialization ネームスペースにあるアトリビュートを眺めてみろ
手順を踏めば解決できそう。 それより保存クラス作ったほうがいいんじゃないか?
>>865 >C#は自動で(string → intなどの)型変換しないのだ。
俺は↑と読んだ。
874 :
デフォルトの名無しさん :2006/10/27(金) 12:57:57
>>871 どもです。眺めてみたけど、どれでしょう?
xmlns などを変更してみたがだめでした。orz
結局違ってないんだな?
こう読んだらどうだ? C# は自動で string (自動で何でもstringにする、の意?) → int などの型変換はしないのだ (int にはしてくれない、の意?)。 いや意味は不明だが。
「C# は string → int の型変換は自動で行われませんよ」 って意味なんだろうけど……
>>873 みたいに、括弧の中が抜け落ちて 「C# は自動で型変換しないのだ」 に読めてしまう罠( ´ー`)y-~~
どうでもいい
string→intの暗黙の変換は無いだろ int→stringはやってくれる場合もあるけど
>int→stringはやってくれる場合もあるけど 言語仕様ではやらないよ。 あれは演算子のオーバーロードですよ。
×string ○object
C#ではそういうの「暗黙の変換」とは言わないでしょ ToString()が呼ばれるだけ
初心者が多いな 俺も変わらないけどw 初心者は abc.Text="abc"+1; がおkで、 abc.Text= 1+"abc"; がなぜNGなのかわからない。 ヒント:演算子オーバーロード
>>884 ついでに言うと、演算子オーバーロードではない。
言語仕様上でどうなってるかは忘れたが、文字列結合演算子 + の実体は String#Concat
二項 + 演算子は、数値型と文字列型に対してあらかじめ定義されています。 数値型の場合、+ は 2 つのオペランドの合計を計算します。 オペランドの片方または両方が文字列型の場合は、オペランドの文字列表現が 連結されます。
つーか、
>>865 は、
「int → long とかは暗黙の型変換あるよ」って意味でもないの?
C# では、暗黙の型変換は、「整数 → より表現範囲の広い整数」か、
float → double のみ。
明示的な型変換も、組み込み型だと、object からのダウンキャストと、
整数・浮動小数点数同士の間のみ。
string との相互変換は int.Parse とかと ToString 使う。
ところでToStringって何のためにあるの? わざわざObjectに定義するほど重要?
ToStringがないと上記の+演算が出来ないのでは?
>>890 Console.Write(string format, params object[] args) とかのためでしょ。
C#言語仕様ver1.2より抜粋。 7.7.4加算演算子 x + y 形式の演算では、二項演算子のオーバーロードの解決 (7.2.4 を参照) を適用して、 演算子の実装が選択されます。オペランドが、選択した演算子のパラメータの型に 変換され、その結果の型が演算子の戻り値の型になります。 文字列の連結 : string operator +(string x, string y); string operator +(string x, object y); string operator +(object x, string y); 二項演算子 + は、一方または両方のオペランドが string 型のときは、文字列の連結を 行います。文字列連結のオペランドが null の場合は、空の文字列に置き換えられます。 文字列ではない引数は、object 型から継承された仮想の ToString メソッドを呼び出すことで、 文字列形式に変換されます。 ToString が null を返す場合は、空の文字列に置き換えられます。
変に
>>893 みたいな string.operator + を用意しちゃうから、
string ⇔ 数値型間の暗黙の型変換が出来るもんだと勘違いしちゃう初心者が出てくるんかな?
高級言語で書くときにレジスタのことを考えなくてもいいように プログラムの内容に関係ないところは気にしなくて済むようにするのが言語としてはまっとうだと思うけど ToStringはまだ気にしておくべきところなんだろうね +でもConsole.Writeでも、全部Tostring()明記を強制したほうがいい気がするなあ D言語の配列連結演算子はなかなか良い設計だと思う俺
Console.Write に ToString 明記しろって言われたちょっとめんどくさすぎるかなぁ。 文字列結合の + は明記にして欲しいけど。
javaも似たようなもの。 15.17.1 文字列連結演算子 + 一つのオペランドの式だけが型Stringならば,実行時に文字列を生成するために, 他方のオペランドに対して文字列変換を実行する。結果は二つのオペランドの文字列を 連結して新たに作成したオブジェクト String への参照とする。 新たに作成した文字列内では,左辺オぺランドの文字が右辺オぺランドの文字に先行する。
898 :
デフォルトの名無しさん :2006/10/27(金) 19:55:11
HP作ったり画像編集したりっていう仕事つく予定なんだけど、 どの言語重点的にやったらいいでつかね? ちなみにいまC#中
今C#をやってるならC#をマスターすればいいよ C#ができればJavaもVB.NETも簡単にできるようになる
HTML
901 :
デフォルトの名無しさん :2006/10/27(金) 20:16:54
>899 そうですか、わかりました どうもありがとうございます 本よんでせかせかやります
>>901 画像編集はプログラミングつーよりイラストレーターとかじゃないか?
ランチャーを作ろうと思っています。 ドラッグ&ドロップでフルパスを取得することまではできましたが、 そのフルパスからファイルを実行させる方法はどうするのでしょうか?
Process.Start
906 :
デフォルトの名無しさん :2006/10/29(日) 05:48:15
.net初心者です。 bool型の変数に対して、複数スレッドから読み書きする必要があるのですが、 lock等の排他制御を書く必要ありますでしょうか? それとも、bool型に排他制御は必要ないでしょうか?
907 :
デフォルトの名無しさん :2006/10/29(日) 05:53:39
>>906 static volatile bool aaa;
908 :
206 :2006/10/29(日) 06:01:46
助かりました。本当にありがとうございます。
どういう排他制御がしたいんだよ。 読んで書く処理とかならlockいるぞ。
910 :
デフォルトの名無しさん :2006/10/29(日) 10:41:04
どういった場合にvirtualをつけるか悩んでいます。 現状では導出されることを期待していないので仮想化していません。 ですが、導出された場合のことを考慮して仮想化しておいたほういいのでしょうか? とりあえず、すべてのメソッド/プロパティにvirtualをつけるディメリットってありますか?
>>910 今現在の貴方の悩みそのものがデメリットです。
導出されることになってから、vertual をつけることを考えましょう。
1文字ミスるだけで信憑性が落ちるね・・・
ほんとだ。すまんね。まあ、virtual あんま使ってないと言うことで。
914 :
デフォルトの名無しさん :2006/10/29(日) 11:21:28
メソッドなどを仮想化することによるディメリットは全くありません。 よってすべてのメソッドを仮想化して何の問題もありませんよ。
virtual付けると遅くなるよ
916 :
デフォルトの名無しさん :2006/10/29(日) 11:23:16
それはC++での話
インライン展開されなくなる
むしろvirtualしないデメリットのほうが大きい
おまえらそんなレベルの性能差が本当に問題になるようなことすんのかよ。
ディスプレイのオンオフを制御するやり方を教えてください
>>921 ディスプレイ?
その”ディスプレイ”とやらの”オンオフ”に関して、プログラミングインタフェイスが付いていれば可能
それくらい自分で調べろ
>>922 電源管理のことだろ
知らんのに煽るなボケ
>>922 つっこまれると思いましたが、なんて書いていいかわからなかったので、
こう書いてみました。
>>923 電源管理で調べてみます。サンクス
Javaは全部強制virtual だからvirtualをつけるのが正しい
MSの統合環境はBorlandに負けてるよなあ Borlandは95〜97年頃にはWindows用統合開発環境を確立しているというのに MSは未だ追いついていない しかも徐々に、非常に遅い牛歩でBorlandの統合環境に近付いてきている 真似するんなら真似するで、そんなゆっくり10年以上もかけて真似しないで さっさとぱくって使いやすくしてほしいよ
928 :
側近中の側近 ◆0351148456 :2006/10/29(日) 17:49:53
>>925 (っ´▽`)っ
C#でnewとvirtualを採用したのは保守性の向上にある。
オーバーライドの濫用を防ぐため。
Javaの場合
[スーパークラス担当者](っ`Д´)っ 誰だ!俺の作ったメソッドを勝手にオーバーライドした奴は!!
[サブクラス担当者](っ`Д´)っ 文句があるならfinal付けろや!ゴルァ!
このように片方の担当者によって、オーバーライドが勝手になされてしまう。
→バグ発生
C#の場合
[サブクラス担当者](っ´▽`)っ オーバーライドしたいんだけど、override付けてくれない?
[スーパークラス担当者](っ´▽`)っ ダ・メ♥
このようにオーバーライドをするためには両者の合意が必要
→バグ抑止
C#にはC/C++のようなヘッダファイルやexternの概念はないの? 使いにくいでし あい
extern はあるが意味合いがちがう
>>929 それは慣れの問題だね。使い慣れてるほうがわかりやすいといった程度の話だ。
もっともC++/CLIは中途半端に混ざってるからあれは混乱するかもしれない。
仕様が上がっていないときに ソースレベルでどういう関数が使えるかチェックするとき Cだとヘッダファイルのぞき込んでexternされてるプロトタイプをざっと眺められるから 便利なんだけどなあ C#になるとソースをみてpublicだのclassにインラインされたコードが ごちゃごちゃと醜いったらありゃしない なんとかしてほしいなあ
醜いコードを書いてるということは分かった
936 :
側近中の側近 ◆0351148456 :2006/10/29(日) 18:14:30
>>933 (っ´▽`)っ
VS2005ならクラス図を自動作成してくれるよ。
>>933 クラスビューなり、ドロップダウンするなんかだったり、
オブジェクトブラウザだったり見ればいいのに。
右クリック→アウトライン→定義に縮小
>>936 そうなのか(恥
まあ最近VC++とPascalに別れを告げて趣味で使い始めたんだが
そういう便利な機能があるとは
よく調べてなかったよp
主にグラフィクスのアプリをよく作るのでしばらくはメインで
C#を使うことはないかもしれんけど(標準で用意されているライブラリ(?)は
遅いから結局はWin32API呼び出したりポインタ制御させるので
C#の恩恵はあまりないんだよね。)
簡単なアプリ作るには便利なんだけど
ども
940 :
側近中の側近 ◆0351148456 :2006/10/29(日) 18:48:34
>>939 (っ´▽`)っ
さらに、APIリファレンスも作ってくれるらしいよ。
941 :
側近中の側近 ◆0351148456 :2006/10/29(日) 18:53:06
>>939 (っ´▽`)っ
C#だけではなくVS全体で見てみると、いろんなことができる。
テストツールも含まれている模様。
VS2005は最適なソリューションを提供します。
nのけたん?
正直単体テスト機能ぐらい下のエディションにものっけてくれと思う。
Visual C# 2005 Express Editionの挙動について疑問があります。 VC#のIDEでWindowsフォームを作ると、〜.Designer.csの中で自動的に System.ComponentModel.IContainer componentsなるメンバが追加されます。当初、 InitializeComponent()の中でこのcomponentsをinstantiateする文が追加されています。 しかし、デザイナで編集を続けていると、いつの間にかこのinstantiationの文が消える という現象を何度か経験しました。 このとき例えば、こちら側でComponent cなるメンバをこのFormに追加したい場合、 componentsがnullだったりそうでなかったりすると、うかつにcomponents.Add(c)とする わけにもいかず、cが解放されるべきタイミング、すなわちForm.Dispose()で解放させる ことができません。 良い解決策がないものか、皆様の御意見を仰ぎたく思います。長文失礼しました。
>>945 コンストラクタ内、InitializeComponent() の後に
if (components == null) components = new System.ComponentModel.Container();
を追加。
……で良いんちゃう?
948 :
945 :2006/10/29(日) 20:01:12
あれ…実験してみると、ただメンバとして宣言しただけでもDispose()呼ばれてますね。
私はどうやらDispose()に関して何かとてつもない誤解をしているようです。もう一度
勉強してみます。答えてくださったお二方
>>946-947 、ありがとうございました。
>>948 試してみたけど確かにnewが消えるね。
950 :
945 :2006/10/29(日) 20:15:24
>>949 前から不思議だったんですが…考え始めたら気になってしまって。
実験したら実際にControlに追加していないメンバもDispose()が呼ばれるようなので、
いいことにしておこうかと思います。しかしそれなら、そもそもデザイナが追加する意味は
ないような…やっぱり気になりますね(^^;
TimerとかContextMenuStripとか、 コンストラクタでcontainerを引数にとるやつを削除したとき、 ほかで要求してない場合消えるみたいだな
952 :
デフォルトの名無しさん :2006/10/30(月) 02:54:11
コンボボックスのユーザコントロールを作成しています。 そのユーザコントロール上にはりつけたコンボボックスの幅を ユーザコントロールのプロパティとして設定したいと思っています。 なので簡単にhogeWidthみたいなプロパティをつくってやって、 ユーザコントロール上にはりつけたコンボボックスの幅の値をかえられる プロパティを作ってやりました。 やってることは単純に幅に値をセット、リターンしているだけ。 なんですが・・・・・・ デザイナでそのプロパティを設定したら 画面再読み込み時になぜか幅とかが毎回一定数プラスされた幅に変更されているのです。 たとえば100にすると116、みたいな。 プログラム内をのぞいてみても思い当たる節がなく、わけがわかりません。 つたない文章ですが、どなたが原因がわかる方、教えてください。
953 :
945 :2006/10/30(月) 03:46:41
>>951 再現しました。確かにそのようです。わざわざお手数おかけしました。
954 :
952 :2006/10/30(月) 03:47:09
すいません、自己解決しました。 イニシャライズ時にはプロパティで設定した値ではなく 初期値で表示されるので、直接値を設定するのではなく メンバ変数に一度幅を格納してあげて、 コントロールロード時に、設定してあげるとうまくいきました。 newされた時はそりゃプロパティの設定値なんてわかんないですよね。・。 よく考えたら当たり前のことでした。
C#で、Netコードを吐くんじゃなくて、 ネイティブコード(Windowsバイナリ)を吐けるんですか?
>>956 どうも。これって、.Netコードをネイティブに変換みたいですね。
少し読んでみても書いてなかったんですが、変換してネイティブコード生成しても、
やっぱり.Netランタイム(CLR)は必要なんですか?
>>957 当然。しかしランタイムもngenに掛ける事が出来る。
なるほど。
960 :
デフォルトの名無しさん :2006/10/30(月) 11:50:35
すいません、ちょっと質問なんですが。 フォームの中で重い処理をするのはフォームの監視ループとかの関係であまりよろしくない のでしょうか? フォームで重い処理をする部分のパラメータを受け取ってその処理をスレッドとして動かし ているのですがやたらと重いです。プログラムが応答しなくなるほどに。 以前、フォーム無しでやったときはこんな状態にはならなかったのですが、どなたか原因や 解決方法を教えていただけないでしょうか?
フォームで重い処理ってなんだよ。 フォームだろうがなかろうが重いのは重いだろうが。 どうせ処理の度に描画させてるんだろ?
962 :
デフォルトの名無しさん :2006/10/30(月) 12:33:27
いや、リターンしないまま処理続ければメッセージを処理しなくて重い感じになりますよ。 スレッド呼び出してそれは、フォームのコントロールを使ってるとかだったりして。
FillRectangleはRectangleとRectangleFを受け付けてDrawRectangleはRectangleしか受け付けないのは自分が悪いんですか?(・ω・)
965 :
960 :2006/10/30(月) 12:45:57
いや、特に描画はしていないのですが。 スレッドの使い方は Thread mainThread = new Thread(new ThreadStart(program.Run)); mainThread.Start(); this.Enabled = false; mainThread.Join(); という感じです。 このprogram.Runが重い処理なのですが、GUI無しならフリーズするまでは 行かないのですが何故なんでしょう。
そこ Join で待つならスレッド作る意味ゼロじゃないか?
968 :
960 :2006/10/30(月) 12:54:04
>>966 確かに。他にもフォームを呼ぶ予定だったのでスレッド化したものなので
とりあえずスレッドをやめてみても何も変化無しでした。
フォ−ムを利用することによって何か別の負荷がかかることは無いんでしょうか。
>>968 965のように計算処理に専念してしまってメッセージを処理しないUIスレッド(フォームを持つもの)があると、
他のプロセスやら何やら(主にExplorer)がウィンドウをあれこれしようとしたときにメッセージを送ったときに
待たされたりしていろいろと面倒なことが起きる。
あれこれdisableしてcancelボタンだけenableする、あるいは全部disableするなどしたのち、
Start で開始して、先方のスレッドの最後で form のメソッドを invoke して完了を通知、
そこで計算終了時のUIの設定にする、というのがいいと思う。
計算途中で時々 Progress() (←自作関数ね) とかを invoke して進行状況を UI 表示してもいいし、
適当な変数に進行状況を記録しておいてタイマーでUIに反映させるのもいいかもしれない。
970 :
960 :2006/10/30(月) 13:17:51
>>969 ありがとうございます。
>あれこれdisableしてcancelボタンだけenableする、あるいは全部disableする
this.Enabled = false;
だけでは不十分でしょうか?
>>970 十分です。
でも長い計算はキャンセルできるようにしておくのが武士の情けというか・・・
972 :
960 :2006/10/30(月) 13:38:20
>>971 わかりました。
ありがとうございました。
老婆心からの蛇足だが、 >先方のスレッドの最後で form のメソッドを invoke して完了を通知、 このメソッドの中で計算スレッドを Join しようとするとデッドロックなので注意。 先方のスレッドはInvoke経由でメソッドからの戻りを待っているから、完了しない。
BackgroundWorker 超便利
質問。 VisualStudio2005 C#でunsafeなコードやDLLを使わずにプログラムを作っているんですが、 WindowsXP自体がフリーズしてしまいます。 発生タイミングが一致せずいきなりフリーズしてしまうので どこでおかしなことしているのか見当がつかないのです。 フリーズに至るまでには、まず自分で作ったプログラムのフォームが フリーズします(普通は必ず文字が流れるとかして動いている)。 この時点でマウスは動くけど他のウインドウをクリックして アクティブにしようよしてもなかなか変わらなくなって、 何回かクリックしてるとマザボのスピーカからビープ音が鳴ってOSごとフリーズ。 マウスも動かないしキーボードのNumLockも切り替わらなくなる。 でもそのPCで再生していたMP3は普通に再生されている という状態になるのですが、何が考えられるでしょうか・・・
>>975 ボタン押したら無限ループに突入するような WindowsApplication を作って、比較実験。
>>975 ・スレッドをどんどん作る
・メモリをどんどん確保して開放しない
このどちらかで簡単にそういう症状を起こせますよ
・β版の.NET Frameworkでないか確認 ・ウィルスチェック、ディスクチェック、メモリチェックをして、回線を外してアンチウィルス等の常在ソフトを終了してから、 1.問題が発生する最小限のソースを調べる 2.VisualStudio上の場合、そうでない場合で比較 3.DebugかReleaseかで比較
979 :
975 :2006/10/30(月) 20:29:51
みなさん、本当にありがとうございます。
>>976 ,977
フォームだけがフリーズするよね!多分!
なのでスレッドを作ってます。けどスレッドの中のループでスレッドを作る
とか無限にスレッドが生成されるようなことはしてないです
>>978 これが他のどのPCでも発生するからウイルス云々ではないと思います。
他の点についてはまた毎日やってみて確認してみます。
たまーにしかでないから余計に追跡しにくいんです><
ソース晒せ
晒せ
>>979 976は、GUIスレッドでビジーループを回すと、CPU資源が食い尽くされて、システム全体の
GUIの反応が悪くなる/停まるってことをいってるんだが。
多分、じゃなくて試してみるよろし。
同じ症状なら、お前のプログラムでもビジーループが発生している。
ビジーループ=while(true) {}な。一応。
次のコードを使って印刷しようとしても、ページ間の英単語のワードラップがうまくいきません。 どうしたらいいでしょうか? private int printingPosition; private void printDocument_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e) { printingPosition = 0; } private int GetLengthForPrint(string text, int start, Font font, System.Drawing.Printing.PrintPageEventArgs e, StringFormat format) { int min = 0, max = text.Length - start; float targetHeight = (float)e.MarginBounds.Height; if (!(e.Graphics.MeasureString(text.Substring(start, max), font, e.MarginBounds.Width, format).Height > targetHeight)) return max; while (min + 1 < max) if (e.Graphics.MeasureString(text.Substring(start, (min + max) / 2), font, e.MarginBounds.Width, format).Height > targetHeight) max = (min + max) / 2; else min = (min + max) / 2; return min; } private void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { StringFormat format = StringFormat.GenericTypographic; int length = GetLengthForPrint(textMain.Text, printingPosition, textMain.Font, e, format); e.Graphics.DrawString(textMain.Text.Substring(printingPosition, length), textMain.Font, Brushes.Black, e.MarginBounds, format); printingPosition += length; if (printingPosition >= textMain.Text.Length) e.HasMorePages = false; else e.HasMorePages = true; }
>>983 うまくいかないって言われてもなぁ・・・
985 :
デフォルトの名無しさん :2006/11/01(水) 00:23:40
この程度のちいさなソース見てうまく行かない点を指摘できないやつに ようはない
そんなお前もお呼びでない
ああこれはだめだね
988 :
デフォルトの名無しさん :2006/11/01(水) 01:47:02
GetTypeで得られた型にキャストするにはどうすればいいのからしらん?
キャストは静的なものなのに動的にどうこうできるわけが無かろう
990 :
:2006/11/01(水) 02:10:13
テキストファイルからStreamReaderを使用し文字列を読み込んで いるのですが、【半角カナ】がASCII文字として含まれている場合に プログラム内部で文字化けしてしまいます。 ぐぐって、一度そのファイルをUnicodeとして保存すれば(一時的に)解決 出来る事は分かったのですが、その様に手動でやるのでは無くプログラム内部 からファイル全体(文字単位では無く)をASCII → Unicode に変更 するにはどうすれば良いですか?
>>990 > 【半角カナ】がASCII文字として含まれている
意味が分からん。
取りあえず StreamReader のコンストラクタ調べれ。
992 :
デフォルトの名無しさん :2006/11/01(水) 02:20:49
yahooじゃダメですか?
993 :
990 :2006/11/01(水) 02:38:34
>>991 >
>>990 >> 【半角カナ】がASCII文字として含まれている
>意味が分からん。
>取りあえず StreamReader のコンストラクタ調べれ。
例えば、【ABC.txt】より1行ずつデータを取得する際に
StreamReaderにて半角カナが含まれる行を読み込もうとしたところ
そのファイル(ABC.txt)がASCIIコードとして保存されているが
為に半角カナ部分が文字化けしてしまっている状態です。
(例:ア → a)
※そのファイルを開き、Unicodeとして保存すると文字化けは無くなるので
すが、プログラムで自動化させたいのです。
>>993 StreamReaderのコンストラクタでエンコード指定できるでしょ。
>>993 文字コードの変換は、StreamReaderで読み込んで、StreamWriterで書き出すだけ。
asciiなのに半角カナとはこれいかに
997 :
990 :2006/11/01(水) 08:24:44
>>994 ,995
どうもありがとうございます!!!
助かりました。皆さんホントお詳しいですね。
私もそのスキルに近づきたいものです。
998 :
デフォルトの名無しさん :2006/11/01(水) 15:49:27
1000とったら1000千億プレゼント
999なら1000を他人に取られる
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。