C♯, C#相談室 Part34

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ
C♯, C#相談室 Part33
http://pc8.2ch.net/test/read.cgi/tech/1153537081/l50

過去スレは>>2-5あたり。
※スレタイに「#」を入れても消えちゃうので新スレ立てる人は要注意だ。
2デフォルトの名無しさん:2006/09/06(水) 22:38:54
3デフォルトの名無しさん:2006/09/06(水) 22:40:10
4デフォルトの名無しさん:2006/09/06(水) 22:41:04
5デフォルトの名無しさん:2006/09/06(水) 22:46:46
pinvoke.net: the interop wiki!
http://pinvoke.net/
6デフォルトの名無しさん:2006/09/06(水) 22:54:53
ちんこ音頭
http://www.chinko-ondo.org/
7前スレ973:2006/09/06(水) 22:59:24
文字列のほかにGUIDのポインタも必要だったのだが
これはMarshal.StructureToPtrとかつかわんといかんのだな。
結局C#上でメモリ管理せんと駄目になった。
8デフォルトの名無しさん:2006/09/06(水) 23:03:30
まあそりゃ C# だけで完結しないものに手を出すならそう言う事もあるだろ。
9デフォルトの名無しさん:2006/09/06(水) 23:17:57
byte[]にしてぶち込んだらダメ?
10デフォルトの名無しさん:2006/09/06(水) 23:27:51
正確にいうとSI_ACCESSって出来合いの構造体なんで
勝手にbyte[]に変更したりできません。
11デフォルトの名無しさん:2006/09/06(水) 23:30:22
GUIDじゃないのね
12デフォルトの名無しさん:2006/09/06(水) 23:32:44
ref Guidでいいんジャマイカ
13デフォルトの名無しさん:2006/09/06(水) 23:43:13
struct SI_ACCESS {
const GUID* pguid;
LPCWSTR pszName;
...
}
です。
で最初に教えてもらったのがpszNameです。StructureToPtrしなきゃ駄目なのがpguid。

ちとスレ違いになってきたのでおとなしくします。
14デフォルトの名無しさん:2006/09/06(水) 23:56:39
余裕じゃないか!
寝て起きればわかるさ!!!
15デフォルトの名無しさん:2006/09/07(木) 00:22:10
structのシーケンシャル指定忘れなければ出来るんじゃない?
16デフォルトの名無しさん:2006/09/07(木) 00:31:04
C#コンパイラだとstructはデフォでsequential
17デフォルトの名無しさん:2006/09/07(木) 02:06:27
ところでなんで >>4 の下3つがテンプレに入ってるんだ?
頻出でもない細かい話題をいちいちテンプレに入れてたらきりがないと思うんだが。
前スレ996もそういうつもりで書いたんじゃないだろうし。
18デフォルトの名無しさん:2006/09/07(木) 23:11:42
途中でプログラムを強制終了させるコードは何ですか?
WindowsFormとかならApplication.Exit();で良いのですが
それ以外の時が分かりません。

神様お願いします。
19デフォルトの名無しさん:2006/09/07(木) 23:13:58
Environment.Exit

ただし意外にもセキュリティ制限でネットワーク越しに実行してたりすると終了できなかったりする。
20デフォルトの名無しさん:2006/09/07(木) 23:30:02
>>19
ありがとうございます。
しかしcsc.exeでコンパイル時にエラーが出てしまいます。

error CS1501: 引数を '0'個指定できる、メソッド 'Exit' のオーバーロードはありません。
21デフォルトの名無しさん:2006/09/07(木) 23:31:31
RTFM!
22デフォルトの名無しさん:2006/09/07(木) 23:32:00
なんで試してみる前にMSDNライブラリを見ないんだ
23デフォルトの名無しさん:2006/09/07(木) 23:32:03
エラーメッセージ読め
2464bitWinXPに移植したいダメ子です。:2006/09/07(木) 23:37:55
難しいことはできないのですが、
32ビット環境でC++でプログラム作ってます。
使ってくれる人の要望で、
もっと大きな計算ができないの、と言われますが2GByteの壁があります。。。

そこで64ビットにコンパイルしたいです。
ただ広いメモリ空間が欲しいからです。倍でも十分です。
難しいことですか?
2518:2006/09/07(木) 23:41:28
>>22-23
調べてみました。

どう見ても簡単に解決できました。
本当にありがとうございました。
26デフォルトの名無しさん:2006/09/07(木) 23:42:58
>>24
ためしに64ビットコンパイラでコンパイルしてみれば。
あとここはC#スレね。
27デフォルトの名無しさん:2006/09/08(金) 08:51:08
>>24
2GBの壁に当たるような処理って何?
過去にも32KBの壁とか64MBの壁とか色んな壁があったけど、みんな試行錯誤で乗り切ってる
単にバカデカい作業領域を確保するより、メモリをやりくりしたほうが使用メモリ量的にも処理速度的にも効率的だったりすることもあるよ
28デフォルトの名無しさん:2006/09/08(金) 10:49:31
>>27
多要素間の相互作用を扱うシミュレータとかだと、各要素にまんべんなく
アクセスする場合があるのでスワップで逃げるにもHDDアクセスがボトル
ネックになって実用時間じゃ動かなくなる。
29デフォルトの名無しさん:2006/09/08(金) 13:15:46
>>28
それは2Gの壁とは何も関係ないんじゃまいか…
30デフォルトの名無しさん:2006/09/08(金) 17:02:15
>>29
そもそもの前提として 2G じゃ収まらないデータを扱うって話だろ。
31デフォルトの名無しさん:2006/09/08(金) 17:12:55
木の走査を BackGroundWorker でスレッド処理して、その進捗を
ツリービューで見えるようにしたらツリービュー全体が
すごい勢いで点滅するんですがなんとかならないですか?

一応、DoubleBuffered は true にしてあります。

走査してる場所の表示は相当するノードのフォントをBoldにしてるだけです。
点滅はノードが見える状態になっているかどうかは関係なく発生します。

まだノードのテキストを設定してるだけですが、将来的にはアイコンとか表示したいなとか思ってます。
32デフォルトの名無しさん:2006/09/08(金) 17:21:53
走査しているノードが変わるたびに表示を更新しとるということはないよな
33デフォルトの名無しさん:2006/09/08(金) 17:27:09
>>30
「難しいことはできないのですが」と書いている人が思う「2GBの壁」と、ハードリソースの扱いやプログラム技術に長けた人間が思う「2GBの壁」は違うよ
どこまで「2GBの壁」を具体的に理解しているかも分からずアドバイスなんてできない
それに壁にあたるロジックや仕様も出していない

そもそもC#のスレでC++の事を聞く当たり、とても技術レベルが高いとは思えないがどうかね
34デフォルトの名無しさん:2006/09/08(金) 17:29:23
>>31
頻繁に部分更新を行って、かつちらつきも避けたいのならツリービューとか使わずに
UserコントロールとかPanel に Paint イベントを書くとかして自前で描画した方が良い
と思う。
35デフォルトの名無しさん:2006/09/08(金) 17:39:17
>>33
よくわからないけど、未だに>>28は「2Gの壁とは何も関係ない」と考えてますか?
漏れは大量のデータをオンメモリで処理する(まさに>>28のような状況)のために
64bit OS が実用化されたんだと思ってたけど。
36デフォルトの名無しさん:2006/09/08(金) 17:46:07
>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();  // いらないかな?
}
37デフォルトの名無しさん:2006/09/08(金) 17:59:33
while(queue.count > 0) {
  ScanEventArg e = queue.Dequeue();
  イベント処理(e);
}
でがんがん再描画するから一緒じゃないの?
38デフォルトの名無しさん:2006/09/08(金) 18:00:53
タイマーで最新の ScanEventArg を1個だけ処理するんじゃいかんのか?
39デフォルトの名無しさん:2006/09/08(金) 18:11:38
>>35

> よくわからないけど、未だに>>28は「2Gの壁とは何も関係ない」と考えてますか?

おまい、>>28=24 だと思ってる?
「とかだと」って言葉を使っているから、>>28は一般例を挙げているだけだと思うんだけど

> 漏れは大量のデータをオンメモリで処理する(まさに>>28のような状況)のために
> 64bit OS が実用化されたんだと思ってたけど。

HPCクラスタと混同してない?
単体の向上は別物
40デフォルトの名無しさん:2006/09/08(金) 18:29:19
うざい
よそでやれ
4131:2006/09/08(金) 20:01:52
どうやら36のやり方で、できたみたいです。

SuspendLayout はいらないみたい。
イベントがいまのところ4つぐらいあったのでビジターパターンでやっちゃいました。

いちおうご報告まで。
42デフォルトの名無しさん:2006/09/08(金) 20:22:33
まじですか
43デフォルトの名無しさん:2006/09/08(金) 23:41:06
C#って結局Cと何が違うんですかね?

私の見立てでは
大規模処理じゃない限りCより高速。
書き方が簡素化された。
メモリ管理とかその辺が強化。
後はな〜んもかわらへんねん。
44デフォルトの名無しさん:2006/09/08(金) 23:43:47
FORTRANって結局COBOLと何が違うんですかね? 

私の見立てでは 
大規模処理じゃない限りCOBOLより高速。 
書き方が簡素化された。 
メモリ管理とかその辺が強化。 
後はな〜んもかわらへんねん。 
45デフォルトの名無しさん:2006/09/08(金) 23:48:16
>>43
釣りにしては中途半端
もっと聞きかじった風を演出するためにカタカナを多く使いなさい
46デフォルトの名無しさん:2006/09/08(金) 23:48:50
ム板って結局マ板と何が違うんですかね? 

私の見立てでは 
大規模処理じゃない限りマ板より高速。 
・・・そろそろやめよ〜
4743:2006/09/08(金) 23:56:12
本当に聞きたかったのに・・・

アナタはいつもそうやって はぐらかす
48デフォルトの名無しさん:2006/09/09(土) 00:32:16
>>47

> C#って結局Cと何が違うんですかね?

どんな違いを知りたいのよ
違いすぎて書き始めたらキリ無いんだけど

CもC#もそれぞれ万単位の人間がその確立に力を費やした
そんだけのものをたかが一人の人間で全部理解することは出来ないし、ましてや文章で全部説明することなんて出来ない
「違うものは違うんだ」で十分で、あとは自分の守備範囲でどちらが目的に合うか判断すればいい
49デフォルトの名無しさん:2006/09/09(土) 01:52:37
おんなじところって何よ?
基本的な文法が近いくらいしかねーんじゃ?
50デフォルトの名無しさん:2006/09/09(土) 10:45:02
Cってのはセクースすること
C#ってのはアナルセクースまでいってしまうこと。

常識だろ。そんなもん。殺すぞ。
51デフォルトの名無しさん:2006/09/09(土) 10:58:38
じゃあC++は二本挿しか
52デフォルトの名無しさん:2006/09/09(土) 12:39:30
ListView、2.0 だと EndUpdate で ListViewItem.BackColor の変更が反映されないけど何で?
ListViewItem.Font はちゃんと反映されてるのに……

EndUpdate したあと Refresh するのも微妙 (;´Д`)
53デフォルトの名無しさん:2006/09/09(土) 12:54:48
って、反映されていないどころかそもそも塗れてませんね orz
マウスオーバーさせて再描画するとやっと反映される (;´Д`)
54デフォルトの名無しさん:2006/09/09(土) 18:55:48
基礎からやりなおさないか?
55デフォルトの名無しさん:2006/09/09(土) 22:40:37
C#で別のスレッドで動いてる関数を呼び出すにはInvoke()すればいいみたいなんですが
メソッド呼び出しじゃなくてプロパティを取得するにはどうすればいいんですか?
56デフォルトの名無しさん:2006/09/09(土) 22:43:20
意味分からん
もっと整理して再提出
できれば具体的にな
57デフォルトの名無しさん:2006/09/09(土) 22:51:28
プロパティを取得するメソッドをInvokeで呼び出す。
58デフォルトの名無しさん:2006/09/10(日) 00:27:54
hoge.Invoke(new MethodInvoker(delegate { hoge.Text = "ほえほえ"; }));
59デフォルトの名無しさん:2006/09/10(日) 00:58:10
取得はそのまま書いても動いた希ガス
60デフォルトの名無しさん:2006/09/10(日) 01:21:02
>C#で別のスレッドで動いてる関数を呼び出すには
意味わかんないよママン
Control.CheckForIllegalCrossThreadCalls = true;
を全国的に推奨中
62デフォルトの名無しさん:2006/09/10(日) 03:35:11
JAVAとC#のスレの伸びはJAVAが約3倍、
やはり日本での主流はJAVAなのか?アメリカでは結構シェアありそうなんだが…

C++とC#の違いは…C++→C#は超楽勝だけど
C#→C++は地獄を3度見るくらいの違いがある程度じゃないかな?
63デフォルトの名無しさん:2006/09/10(日) 03:47:00
C# のスレだけ見ても仕方がないだろ。.NET 全体で見ないと。
ま、それでも Java の方が現状は優勢だろうがね。

趣味で 5 年ほど C# やってて最近仕事で C++ を使い始めたが、全く困ってないな。
C の基本は P/Invoke の為に最低限学んでいたが。
64デフォルトの名無しさん:2006/09/10(日) 04:22:18
>>62
>JAVAとC#のスレの伸びはJAVAが約3倍、
しかしあのスレでまとまな回答してるのはほとんどC#使いのオレだ。
65デフォルトの名無しさん:2006/09/10(日) 05:27:01
JavaとC#はそもそも土壌が違うから比較しても仕方ないんじゃない?
C#は事実上Windowsオンリーだし。
66デフォルトの名無しさん:2006/09/10(日) 09:36:13
67デフォルトの名無しさん:2006/09/10(日) 09:55:30
>>66
それとは関係ないとしか読めないんだが。
別スレッドで動いてる関数を呼び出すんだぜ? 再入ですらない。

// 別のスレッドで動いてる関数(から UI 部品のメソッド)を呼び出す
// 、となんで読み手がここまで読み解かなきゃなんねぇんだ
68デフォルトの名無しさん:2006/09/10(日) 11:21:36
>>66
>C#で別のスレッドで動いてる関数を呼び出すには
おまえはこれの意味が分かるのか?
そりゃまあ想像はつくっていうか、まあ分かるんだけど意味不明だろ。
69デフォルトの名無しさん:2006/09/10(日) 11:46:21
Invoke()と書いてあるから空気読んだだけ
いちいち文章に指摘するのはプログラマの本分じゃないし
70デフォルトの名無しさん:2006/09/10(日) 12:01:27
姉は、設計事務所で働いています。
71デフォルトの名無しさん:2006/09/10(日) 12:31:00
プログラマの本分というものを教えてください
72デフォルトの名無しさん:2006/09/10(日) 13:22:57
「動く」プログラムと「正しい」プログラムの違いを理解することです
73デフォルトの名無しさん:2006/09/10(日) 15:47:21
>>69
いやそれSEの言い分だし。
クライアントの無茶苦茶な要求に晒されてるのは同情するけど、
PGとしては余計な想像しなくていいところまで明文化してくれないと。
74デフォルトの名無しさん:2006/09/10(日) 15:48:57
学校で習う比率
C# : Java = 1 : 3
75デフォルトの名無しさん:2006/09/10(日) 16:50:28
>>74
世の中の業務システムの比率 .NET : Java = 7 : 3
76デフォルトの名無しさん:2006/09/10(日) 17:11:32
Winばかりの業務システムなんですね。
77デフォルトの名無しさん:2006/09/10(日) 17:22:34
非WinはいまだにCばっかりだしな
78デフォルトの名無しさん:2006/09/10(日) 17:33:29
規模で見たらWinは中堅だが、数で見たら圧倒的なわけですが
79デフォルトの名無しさん:2006/09/10(日) 17:35:32
javaはWebとか携帯とかのドカタ案件が多いけどC#だとどんな案件がありますの?
やっぱりASP.NETとかのドカタ案件が多いの?
80デフォルトの名無しさん:2006/09/10(日) 17:35:42
どうでもいい
スレ違い
81デフォルトの名無しさん:2006/09/10(日) 18:25:06
>>77
COBOL FORTRAN を忘れてもらったら困ります
82デフォルトの名無しさん:2006/09/10(日) 21:46:33
ごめん 忘れるよ
83デフォルトの名無しさん:2006/09/10(日) 22:18:44
各言語を実習で使用する大学の比率
C : Java : C++ :C# ≒ 90:9:1:0
84デフォルトの名無しさん:2006/09/10(日) 22:51:38
システム系学科 C > C++ >>> Java > C#
ネットワーク系学科 C = Java >>> C+
グラフィック系学科 C++ >> C
85デフォルトの名無しさん:2006/09/10(日) 23:01:41


     マ 板 で や れ
86デフォルトの名無しさん:2006/09/10(日) 23:20:05
>>80
>>85
うるせーバカ
87デフォルトの名無しさん:2006/09/10(日) 23:26:38
文系 FORTRAN >>> C
共通一次 BASIC
88デフォルトの名無しさん:2006/09/10(日) 23:47:40
Formを作成しました。
Formの最大化ボタン・最小化ボタンは
MaximizeBox = false;
MinimizeBox = false;
で消せますが、キャンセルボタンが消せません。
MSDNにCancelButtonというメンバがありますが、あれは役割が違います。

キャンセルボタンを消す方法教えて頂けないでしょうか?
89デフォルトの名無しさん:2006/09/10(日) 23:52:33
キャンセルボタンって何ぞや
90デフォルトの名無しさん:2006/09/10(日) 23:57:19
>>89
Formの右上にある×印のことです。
91デフォルトの名無しさん:2006/09/10(日) 23:58:49
キャンセルボタンとは何ぞや
Form#ControlBox = false;
92デフォルトの名無しさん:2006/09/10(日) 23:59:34
>>90
ありはクローズボタンだったと思うが、ControlBoxプロパティをFalseで消える。
93デフォルトの名無しさん:2006/09/11(月) 00:06:02
>>91-92
ありがとうございます。
しかし上のステータスバーも消えてしまいました。
アレを残してクローズボタンを消す方法はございませんか?
Win32APIを使う事でも実現かのうでしょうか?
94デフォルトの名無しさん:2006/09/11(月) 00:09:41
上のステータスバーって何だよっつーかおちょくってんだろ
95デフォルトの名無しさん:2006/09/11(月) 00:12:40
分かり辛くて申し訳ありません。おちょくってはいません。

Formの上部に青色のBarがあり、その列に通常最大化・最小化・クローズボタンがあります。
そのBarをさしています。

よろしくお願いします。
96デフォルトの名無しさん:2006/09/11(月) 00:12:46
なんで自分にしか分からない言葉を当たり前のように使うのかね?
97デフォルトの名無しさん:2006/09/11(月) 00:14:30
キャプション残ってればタイトルバーも残らんかったっけ?
うーんうろ覚え。
98デフォルトの名無しさん:2006/09/11(月) 00:15:38
ControlBox を false にしただけではタイトルバーは消えない
たったそれだけの作業なのに何を間違えたんだ
99デフォルトの名無しさん:2006/09/11(月) 00:17:34
ただし 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());
}

}
}


いろいろご迷惑かけてすみません。上記ソースでやはり消えてしまいます。
101デフォルトの名無しさん:2006/09/11(月) 00:19:13
……ほんとだ。知らんかった ('A`)
102デフォルトの名無しさん:2006/09/11(月) 00:19:50
>>100
Text = " ";
103100:2006/09/11(月) 00:19:55
>>99
ありがとうございました!Textに半角入れたら
解決しました。色々ご迷惑おかけしてすみません!
104デフォルトの名無しさん:2006/09/11(月) 00:21:16
: : : : : : Λ ヽ : : : / : : : : : : : : : : : : : : :\ : : : ',
: : : : : /:,ハ  } : : / : : : : : : : : : : : : : : : : : : : \: : 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: |
105デフォルトの名無しさん:2006/09/11(月) 00:23:00
(☄◣д◢)☄ワシャー
106100:2006/09/11(月) 00:24:07
まあ、釣りだったんだけどな
107デフォルトの名無しさん:2006/09/11(月) 00:27:45
おれおれ100
108デフォルトの名無しさん:2006/09/11(月) 08:01:50
>>84
それは専門学校だろ?
大学のネットワーク系専攻だとJavaはもっと少ない、というか授業じゃ使わん。
109デフォルトの名無しさん:2006/09/11(月) 08:52:38
情報処理試験もC#採用決定済み
110デフォルトの名無しさん:2006/09/11(月) 08:53:26
ニヤニヤ
111100:2006/09/11(月) 09:26:01
昨日はありがとうございました。

作成したFormはメモリ12Mも使う重いものです。ソースは>>100
実は、これを軽くする方法などありませんでしょうか?

ご存知であれば教えてください。
112100:2006/09/11(月) 09:43:03
すいません自己解決しました。
113100:2006/09/11(月) 09:47:43
>>112
偽物さんおやめください。
解決はしておりません。
114デフォルトの名無しさん:2006/09/11(月) 10:02:23
つまりLoad中に固ま(ったように見え)るから
強制終了されないように×を消すってことかな?

それなら自前のプログレスバー作って
Loading...って出すと良いんじゃないかな
だけど別スレッドで動くようにしないと
こっちも固ま(って見え)るかな
115100:2006/09/11(月) 10:13:01
>>111
>Formはメモリ12Mも使う重いもの

まさかタスクマネージャ上で起動前と起動後の
コミットチャージ比較してるんじゃないだろうな
116100:2006/09/11(月) 10:23:09
>>115
起動中にタスクマネージャのメモリ使用量という項目が12Mでした。
117デフォルトの名無しさん:2006/09/11(月) 10:32:09
C#でファイル・フォルダ・レジストリのACLを取得する方法を教えてください。
該当する関数がありませんでした。
WinXP
118デフォルトの名無しさん:2006/09/11(月) 10:40:31
.NET2.0かAPI
119デフォルトの名無しさん:2006/09/11(月) 10:43:43
重いと言ってるコードは>>100そのものなのか?

気にすんな
120デフォルトの名無しさん:2006/09/11(月) 11:27:16
>>118
すみません。簡単なサンプル頂けないでしょうか?
あつかましくてすみません。神様お願いします。
121デフォルトの名無しさん:2006/09/11(月) 11:48:23
裏方の仕事を延々とさせる別のスレッドを作ります。
メインのフォームがDeactivateになるとスレッドを眠らせて
Activatedになると再開させるにはどうすればいいですか?

ttp://codezine.jp/a/default.aspx?cid=279
ここやMSDNの説明を見ても[お奨めできない]とか[互換性に残してあるけど使うな]、ばっかりで。
122デフォルトの名無しさん:2006/09/11(月) 11:59:18
Deactivate になったら共有変数に眠らせるフラグを立てる
別スレッドは共有変数をポーリングしておく
123デフォルトの名無しさん:2006/09/11(月) 12:05:32
ManualResetEvent 
124デフォルトの名無しさん:2006/09/11(月) 14:09:09
>>117
System.Security.AccessControl.RegistrySecurity など
サンプルはヘルプにのっとる。
125デフォルトの名無しさん:2006/09/11(月) 15:04:15
>>123
>>122

ManualResetEventでできました
126デフォルトの名無しさん:2006/09/11(月) 16:26:59
下記HPのCのコードをC#のソースコードに変更してください。誰か神様お願いします。
切羽詰まって死ぬかもしれません。

http://nienie.com/~masapico/api_GetAclInformation.html
127デフォルトの名無しさん:2006/09/11(月) 16:30:00
>>108
息子のオープンキャンパスについていったが、少なくとも立命、中京、三重はJavaを使う。
128デフォルトの名無しさん:2006/09/11(月) 16:31:13
>>126
ちょっとまってろ
129デフォルトの名無しさん:2006/09/11(月) 16:39:23
>126
そのコードでVCでネイティブなdll作って、今だけP/Invokeでお茶を濁しておけば?
でもって、後からバージョンアップしました!という。
130デフォルトの名無しさん:2006/09/11(月) 16:55:29
C++/CLIでDLLにすれば?
131デフォルトの名無しさん:2006/09/11(月) 17:10:59
C++/CLI使えるなら.NET2.0使えるだろ
132124:2006/09/11(月) 18:27:02
>>117==>>126でしょ。MSDNにサンプル載ってるか見ろ。
か、おとなしく皆が言うようにDLLつくれ。
133デフォルトの名無しさん:2006/09/11(月) 18:52:53
>>126はC#しか知らないVS2003ユーザーなんです!!
誰か助けてください!!
134126:2006/09/11(月) 19:27:07
私はC#さえよく理解していないCSC.exeユーザーです。

MSDNにサンプルは一部分しか載っていません。

誰かおしえてちょんまげ〜!
135デフォルトの名無しさん:2006/09/11(月) 19:34:48
136126:2006/09/11(月) 19:50:31
>>135
ありがとうございます。

でもこれじゃダメなんです。コレだけじゃ分からないんです。
コンパイルすればすぐ使用可能なサンプル探してます。
137126:2006/09/11(月) 20:11:40
すみません。もうちょっと自分で頭を使ってみます。失礼しました。
138126:2006/09/11(月) 20:16:07
>>137
偽物やめろ。
139デフォルトの名無しさん:2006/09/11(月) 20:17:37
ここは「作ってスレ」じゃねーんだ。
すっこんでろ。
140126:2006/09/11(月) 21:35:35
このスレの住人はレベルが低いということなんだね。
なんかガカーリしたよ。
141デフォルトの名無しさん:2006/09/11(月) 21:44:02
お金くれたらやるけどね。1時間以内で済むから50万でいいよ。
142デフォルトの名無しさん:2006/09/11(月) 21:59:56
>>140
何をおっしゃる。君ほどではない。
143デフォルトの名無しさん:2006/09/11(月) 22:07:32
簡単じゃねーかよ。こんなの自分で出来ないんならプログラマーやめちまえ。
144デフォルトの名無しさん:2006/09/11(月) 22:14:21
見えない!どこからが釣りなのか見えない!
145デフォルトの名無しさん:2006/09/11(月) 22:21:19
切羽詰まる(せっぱつまる)
物事が差し迫ってどうにもならなくなる。抜き差しならなくなる。

切羽(せっぱ)は刀身を固定する金具のこと。
146126:2006/09/11(月) 22:37:44
無能プログラマ〜の集まり乙であ〜〜〜〜〜る!

きんもー!きんもー!
147デフォルトの名無しさん:2006/09/11(月) 22:41:47
はいはい、もう寝なさい
148126:2006/09/11(月) 22:46:07
ひゃっは〜

ここは遠さねえぜ〜

け!ケンシロウ〜!!

ひぃ〜!
149デフォルトの名無しさん:2006/09/11(月) 22:49:03
50万でやるっつってるやん。
150126:2006/09/11(月) 22:51:58
この程度のプログラムもかけねーって!ほほほほほ本当か!?

   。 。
  / / ポーン!
( Д )
151デフォルトの名無しさん:2006/09/11(月) 22:54:25
pinvoke.net
おもしれー
152126:2006/09/11(月) 22:57:44
        。 。
         \\
エ━━━━━━( Д ; )━━━━━━!!!
153126:2006/09/11(月) 22:59:25
            あ
     あ            あ
 わ                   あ
う         ぁ   っ         あ
       ぁ         !
                       あ
      ぁ      !  !
                      あ
      ぁ
                    あ
         ぁ       あ
             あ
154デフォルトの名無しさん:2006/09/11(月) 23:08:50
これ絶対便乗犯いるな
155デフォルトの名無しさん:2006/09/11(月) 23:20:15


どこからどうみても釣りです

本当にありがとうございました

156デフォルトの名無しさん:2006/09/12(火) 00:03:49
おもしろいのか?
157デフォルトの名無しさん:2006/09/12(火) 04:31:49
Visual C# 2005 ExpressでWebbrowserのDocumentCompletedイベントに
エラーを発生させる文を書いたのですが、
実行させるとエラーは検出されず、何もなかったかのように
その文以降の行が実行されなくなるだけです。
正常にエラーが検出されるようにするにはどうしたらいいでしょうか?
158デフォルトの名無しさん:2006/09/12(火) 05:06:09
他人が読んでわかるように書け
159デフォルトの名無しさん:2006/09/12(火) 08:45:05
On Error Goto
160デフォルトの名無しさん:2006/09/12(火) 09:06:40
>>157
まず目的を果たす最小限のコードを書け
それが動かなかったらここにそれを書いてみろ
161126:2006/09/12(火) 09:12:58
( ´д)ヒソ(´д`)ヒソ(д` ) ここは無能な人しかいないらしいよ
162126:2006/09/12(火) 10:40:13
       _
┌――─┴┴─――┐
│ セルフサービス .│
└―――┬┬─――┘
        ││   ./
      ゛゛'゛'゛ /
         /
     | \/
     \ \
      \ノ

ガッ はセルフサービスになりました。

使用方法は以下のようになります
     ∧
  ガッ<  >_∧
= ()二)V`Д´)<ぬるぽ
    \ヽ ノ )
    ノ(○´ノ
   (_ノ(__)

尚、使用方法を誤ると、最悪の場合、命を落とす危険性がございますので、
初めてご使用される方は、各都道府県に設置してある専門の窓口に相談下さい。

財団法人 全日本 ぬるぽガッ セルフ振興会
163デフォルトの名無しさん:2006/09/12(火) 10:44:02
荒らしがいついてしまったな
164デフォルトの名無しさん:2006/09/12(火) 10:59:21
>>157
>エラーを発生させる文を書いた
ってthrowしたのか?
自分でcatchしたんじゃないの?
それで>その文以降の行が実行されなくなる
のだとしたらcatchを削除しろ。
(ここはエスパースレじゃないんだけどな……)
165デフォルトの名無しさん:2006/09/12(火) 11:03:09
VisualStudioでデバッグすると、
ときどき例外をキャッチしないでそのままうごいてることがあるよな・・・
166デフォルトの名無しさん:2006/09/12(火) 12:56:03
  _, ._
( ゚ Д゚)このスレは出来ない人の集まりですね
167126:2006/09/12(火) 14:08:54
  _、_
( ,_ノ` )y━・~~~ そりゃあプログラマー気取りしかいないからさ
168デフォルトの名無しさん:2006/09/12(火) 14:22:31
>>165
ステップ実行だと発生しづらい例外はある
スレッドとかメモリとかの例外は特に
そういう場合はトレースとか別の方法で調べる
169157: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
長文失礼しました。よろしくお願いします。
170デフォルトの名無しさん:2006/09/12(火) 16:03:40
>>169
>(本来だったらプログラム全体の実行がとまり、Visual C#が
>プログラムのエラー箇所でエラー内容とヒントのダイアログを出すはずです)

これが正しいと信じているのならば、確かに変な挙動だろうね
171デフォルトの名無しさん:2006/09/12(火) 16:46:43
webBrowser1_DocumentCompletedが呼ばれてないとか
172デフォルトの名無しさん:2006/09/12(火) 17:25:49
>>169
WebBrowserとかそのイベントはCOMのラッパーで、
もっと上流で例外がcatchされてるみたいだね。
173デフォルトの名無しさん:2006/09/12(火) 18:13:12
>>169
2003なら、メニューの[デバッグ]→[例外]のダイアログで、「Common Language Runtime Exception」→「System」→「System.FormatException」を選択し、「例外がスローされたとき」を「デバッガで中断」にする
2005なら、メニューの[デバッグ]→[例外]のダイアログで、「Common Language Runtime Exception」→「System」→「System.FormatException」の「スローされるとき」にチェック

なんでも引っ掛けたいなら、「Common Language Runtime Exception」に対してスローされた例外を中断に設定すればいい
174デフォルトの名無しさん:2006/09/12(火) 18:16:57
>>172
VSより上流なんてない
出力ウインドウ見ればスローされた例外が表示されていることが分かる
適当なこと書くな
175デフォルトの名無しさん:2006/09/12(火) 18:38:35
System.Windows.Forms.TreeViewで質問です。
ドラッグ&ドロップでTreeNodeの移動を行いたいのですが
アプリケーション間でも使えるドラッグ&ドロップを使わず(コントロール内で閉じた処理なので)
何か間単にハンドリングする方法はありますか?
176デフォルトの名無しさん:2006/09/12(火) 19:23:04
TreeViewを継承したクラスを作って、その中で処理する。
177デフォルトの名無しさん:2006/09/12(火) 19:32:40
EnableTreeNodeDragDropみたいなプロパティTrueにしたらおしまいみたいなうまい話はありませんか。
マウスイベントひっかけてコピー元、先きめて移動ってコードかかないと駄目ですか。

やるか。。
178デフォルトの名無しさん:2006/09/12(火) 19:49:13
Wikipediaなんだけど。
MonoやPortable .NETをC#の異なる実装というのはおかしくない?
そもそも言語としてのC#と、VC#が分離しきれてない点にも違和感があるのだけど。
http://ja.wikipedia.org/wiki/C_Sharp
179デフォルトの名無しさん:2006/09/12(火) 19:57:47
>>169
webBrowser1_DocumentCompletedは、webBrowserコンポーネントがCOMイベントとして
(ラッパ経由で)呼び出すものだ、というのはわかりますよね。

COMのイベントハンドラは例外を上げられないので、(COMには実装非依存の例外機構はないから)、
ラッパが例外を catch してエラーとして webBrowser に返すよりないわけです。

COMに限らず人の作ったコードが例外をキャッチしているかそのまま上げているかなど
わからない場合が多いわけですから、人の作ったコードからコールバックされる関数内では
どう処理されるかわからない例外を上げたりせずに、
自分でキャッチしてエラー処理を行うのが良いと思います。
180デフォルトの名無しさん:2006/09/12(火) 19:59:01
>>178
実際C#はVC#を強く意識して作られてる言語だからいいんじゃないの
181デフォルトの名無しさん:2006/09/12(火) 20:04:51
>>180
現状においてはVC#から入るのがデファクトだからそう思えるけど。
英語版を見てみると、Vが無くても独り立ちができるものなんだなと感心する。
http://en.wikipedia.org/wiki/C_Sharp
182157:2006/09/12(火) 20:20:47
webBrowserの件で質問した157、169です。
アドバイスしてくれた方々本当にありがとうございました。
>>173さんの方法で解決できました!

>>179
すみません、仕組みが全然理解しきれてなかったんですが
すごく参考になりました!
不具合だと思ってたんですがただ単に私の勉強不足でした…。恥。
ありがとうございました。
183デフォルトの名無しさん:2006/09/12(火) 21:04:02
>>179
それ、デバッガとしてのVSの挙動と、アプリケーションの挙動をごっちゃにしてるから
184デフォルトの名無しさん:2006/09/12(火) 23:35:46
>>178
変だと思うならそれを提議しろ
Wikipediaはそうやって成長させるものだ
185126:2006/09/12(火) 23:38:07
       _
┌――─┴┴─――┐
│ セルフサービス .│
└―――┬┬─――┘
        ││   ./
      ゛゛'゛'゛ /
         /
     | \/
     \ \
      \ノ

ガッ はセルフサービスになりました。

使用方法は以下のようになります
     ∧
  ガッ<  >_∧
= ()二)V`Д´)<ぬるぽ
    \ヽ ノ )
    ノ(○´ノ
   (_ノ(__)

尚、使用方法を誤ると、最悪の場合、命を落とす危険性がございますので、
初めてご使用される方は、各都道府県に設置してある専門の窓口に相談下さい。

財団法人 全日本 ぬるぽガッ セルフ振興会
186デフォルトの名無しさん:2006/09/12(火) 23:41:37
>>184
だからここで問うてるんじゃあるまいか?


#個人的には、Wikipediaのノートでの議論は御免こうむりたい。。。
187デフォルトの名無しさん:2006/09/12(火) 23:55:00
つーかCOMじゃなくても非同期イベント
(つまりはバックグラウンドのスレッド側)で例外投げたら
おんなじことになるんとちゃうの?
188126:2006/09/12(火) 23:55:40
       _
┌――─┴┴─――┐
│ セルフサービス .│
└―――┬┬─――┘
        ││   ./
      ゛゛'゛'゛ /
         /
     | \/
     \ \
      \ノ

ガッ はセルフサービスになりました。

使用方法は以下のようになります
     ∧
  ガッ<  >_∧
= ()二)V`Д´)<ぬるぽ
    \ヽ ノ )
    ノ(○´ノ
   (_ノ(__)

尚、使用方法を誤ると、最悪の場合、命を落とす危険性がございますので、
初めてご使用される方は、各都道府県に設置してある専門の窓口に相談下さい。

財団法人 全日本 ぬるぽガッ セルフ振興会
189デフォルトの名無しさん:2006/09/13(水) 00:12:59
>>186
WikipediaのことはWikipediaで議論しろ
まだ存在しない内容ならともかく既に存在するものなんだから、そこで議論するのが筋だろ
190デフォルトの名無しさん:2006/09/13(水) 00:21:37
>>187
>>157はスローされた例外をデバッガで受けて中断する方法を知りたかっただけ
で、その方法は例外の設定を行うだけの話
>>169の質問と>>182のレスを見て明確に分かる

多分それを知らない香具師が勝手に「絶対にIDEでキャッチできない」と思い込み、キャッチできない理由を思い込んで勝手に書いてるんだろ
そこから話がぶれて変な方向に流れている
特に>>179はデバッグ時の話であることも忘れて自分でキャッチしてエラー処理とか書いていてひどい

確かにコンポーネント内で完結してバブリングしてこない例外はあるが、明確に自分のコードで例外を書いていて上がってこないなんてのは無い
今回の何か出力ウインドウに明確に出てくるし、他のもデバッグ用の各種ウインドウを見ていれば気付くもんだと思うんだけどな
191デフォルトの名無しさん:2006/09/13(水) 08:40:48
はいはい、すごいでちゅねー
192デフォルトの名無しさん:2006/09/13(水) 10:05:06
>>190
まあよくわかんないラッパークラス使うときやDBアクセスの時は
try-catch入れるのは基本だろうけどな。
後々の為に最低でも自前でエラーハンドル用のDLLでも用意しておいて
イベントビューアーくらいには書き出すのが普通。
>>179の言ってることは最もだと思うが…
193デフォルトの名無しさん:2006/09/13(水) 10:18:45
よくわからないのならなおのこと catch すべきじゃない
194デフォルトの名無しさん:2006/09/13(水) 10:27:49
それじゃコーディングで動くと思ってリリースしたものが
それを使ってるパソコン音痴の人から"変なエラーが出てとまっちゃうんですけど"
とか言われたらどうするんだ?(ニヤニヤ
195デフォルトの名無しさん:2006/09/13(水) 10:33:46
catch されなかった例外をキャッチする方法を知らないのか?
196デフォルトの名無しさん:2006/09/13(水) 10:37:07
今回の場合は自分でcatchしてログを吐くなりメッセージを表示するなりしないと
デバッガなしで実行したときに例外が発生してること自体認識できないんだけどな。
197デフォルトの名無しさん:2006/09/13(水) 11:05:17
かわいそうに、変なアドバイスでcatch入れなかった人はエラーが出たとき
直に原因が特定できなくてクビ。"catch入れろよ、俺のバカ!俺のバカ!キャッチー、
キャッチにだまされたうわぁん…"といいながら後悔の暮らしを送ってしまうなw
198デフォルトの名無しさん:2006/09/13(水) 11:38:38
例外のハンドリングは外部要因で発生が予見されるところに入れておけばいい
それはファイルやDBなどの物理アクセスや外部のデータを受け取って処理するところ
論理的に発生しないようなところは不要
そういうところで出た例外はApplication_Error/ThreadException/UnhandledExceptionEventHandlerで受け止めるべき
199デフォルトの名無しさん:2006/09/13(水) 11:42:32
200デフォルトの名無しさん:2006/09/13(水) 11:45:28
要はこういうこと?

>デバッガで例外を取れない
これはVSの例外の設定で対応

>実行時に例外が起きているはずなのに何も起きないように見える
これはWebBrowserコンポーネントが例外を親に投げないために発生
内部でcatchするしかない
201126:2006/09/13(水) 22:59:55
       _
┌――─┴┴─――┐
│ セルフサービス .│
└―――┬┬─――┘
        ││   ./
      ゛゛'゛'゛ /
         /
     | \/
     \ \
      \ノ

ガッ はセルフサービスになりました。

使用方法は以下のようになります
     ∧
  ガッ<  >_∧
= ()二)V`Д´)<ぬるぽ
    \ヽ ノ )
    ノ(○´ノ
   (_ノ(__)

尚、使用方法を誤ると、最悪の場合、命を落とす危険性がございますので、
初めてご使用される方は、各都道府県に設置してある専門の窓口に相談下さい。

財団法人 全日本 ぬるぽガッ セルフ振興会
202デフォルトの名無しさん:2006/09/14(木) 01:50:52
cで以下のように宣言された構造体
struct {
  int count;
  char buf[1];
}
ただ実際はbufのサイズは1でなく可変でcountバイト数取られています。
これをC#で宣言するにはどうすればいいのでしょう?
char* bufではありません。
203デフォルトの名無しさん:2006/09/14(木) 01:54:03
byte buf[]; にしといてArray.Resize()
204デフォルトの名無しさん:2006/09/14(木) 02:43:41
struct {
  int count;
  char buf[0];
}
205デフォルトの名無しさん:2006/09/14(木) 02:48:51
C# だと sizeof(char) は 2 よ
206デフォルトの名無しさん:2006/09/14(木) 06:03:20
そう言う構造体を使う C の関数と相互運用する場合は、
C# 側では基本的に構造体を使えない。
207デフォルトの名無しさん:2006/09/14(木) 06:20:42
じゃMarshal.AllocHGlobalで必要サイズとってIntPtrでわたして
C#側でオフセット計算してMarshal.ReadInt16とかで自力アンマーシャルか。

今ヘルプみたらAllocHGlobalってLocalAllocのことか。わざわざDllImportしてたわ。
208デフォルトの名無しさん:2006/09/14(木) 06:47:33
LocalAlloc じゃなくて GlobalAlloc な。Win32 じゃ同じだけど。
209デフォルトの名無しさん:2006/09/14(木) 10:04:25
コントロールのネーミングってどうするのがベター?
210デフォルトの名無しさん:2006/09/14(木) 12:11:14
>>208
MSDNに
「このメソッドは Kernel32.dll の LocalAlloc Win32 API を公開します」
って書いてあるんだよ。名前からしてGlobalAllocなのに。

>Win32 じゃ同じだけど
へー。
211デフォルトの名無しさん:2006/09/14(木) 12:20:39
>>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 ライブラリを参照してください。
212デフォルトの名無しさん:2006/09/14(木) 12:37:17
下の解説に限れば、括弧が閉じてないから「Marshal.AllocCoTaskMem です。」の後ろに
閉じ括弧を脳内補完すればそう読めると言えないこともない。

まあ、一番上にGlobalAllocと書いてあるから普通は間違えないが。
213デフォルトの名無しさん:2006/09/14(木) 12:44:43
頭からちゃんと理解していけば括弧の補完位置もブレないとおもうけどな

どうせカッコイイコメンツしようと思って慌てて斜め読みしたんだろ
214デフォルトの名無しさん:2006/09/14(木) 12:52:55
でも、英語版 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
215デフォルトの名無しさん:2006/09/14(木) 12:59:06
間もなく>>210から「英語読めるから」発言が来ると思われるが、どっちにしても頭から見れば間違わないけどな
説明の順序的にも意味的にも
216デフォルトの名無しさん:2006/09/14(木) 13:09:38
おまえら根性曲がりすぎてないかw
217デフォルトの名無しさん:2006/09/14(木) 13:10:02
AllocCoTaskMemはCOMのCoTaskMemAllocを公開してるから英語版の括弧の位置は正しいな。
「このメソッド」はAllocHGlobalを指してる。
Reflectorで見たらAllocHGlobalは確かにLocalAllocを使ってるぞ。
218210: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´((
          ソ  トントン                             ソ  トントン
220デフォルトの名無しさん:2006/09/14(木) 14:44:54
http://msdn2.microsoft.com/ja-jp/library/system.runtime.interopservices.marshal.allochglobal.aspx だと

> Marshal.AllocHGlobal メソッド
> LocalAlloc を使用して、メモリ ブロックを割り当てます。
>
> Marshal.AllocHGlobal (Int32) GlobalAlloc を使用して、プロセスのアンマネージ メモリからメモリを割り当てます。

どっちだよw
まあ、実際はLocalAllocなわけだが。
221デフォルトの名無しさん:2006/09/14(木) 15:19:23
おまいらx86とx64のメモリ管理APIについて勉強しなおして来い
関数名だけで判断しているとマイグレーションの時にやられるよ
222デフォルトの名無しさん:2006/09/14(木) 15:24:46
心配するな。ただMSDNにケチつけてるだけだから。
223デフォルトの名無しさん:2006/09/14(木) 15:25:46
何でもいいけど真相はどうなのよ

ヘルプの文面だけじゃなく、実装レベルでの回答希望
GlobalAlloc/LocalAlloc/HeapAllocの使い分けなんて16時代の遺物に振り回されるのはもういやだね
224デフォルトの名無しさん:2006/09/14(木) 15:50:15
なぜそこでHeapAllocが出てくる
225デフォルトの名無しさん:2006/09/14(木) 15:54:11
malloc/calloc最強
226デフォルトの名無しさん:2006/09/14(木) 15:54:36
227デフォルトの名無しさん:2006/09/14(木) 16:05:35
HeapCreate/HeapAlloc/HeapDestroyだけでご飯3杯
228デフォルトの名無しさん:2006/09/14(木) 16:16:37
>>222
おれ本当にわからん。
現状は大丈夫なんだけどMarshalクラスの実装が変更されても大丈夫なように
DllImportでLocalFree呼んだほうがいいのか?
229デフォルトの名無しさん:2006/09/14(木) 21:57:29
WebカメラでJPEG画像を取り込むには、どうしたらいいのでしょうか??
230デフォルトの名無しさん:2006/09/14(木) 22:04:36
赤ちゃん大好き! Web カメラと動作検出
231デフォルトの名無しさん:2006/09/14(木) 22:23:35
>30
それみたんですよー。
複雑すぎるんですよー。
motion ditectと絡みが激しくないですか??
ちょっと消すとすぐバグが;
単純な機構を知りたいです。
232デフォルトの名無しさん:2006/09/14(木) 22:49:42
質問です。
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♯側を疑っているのですが、何か怪しいところはありませんでしょうか?

ちなみに、ヘッダ指定は
233232: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
それ、
http://dobon.net/vb/dotnet/internet/webrequestpost.html
ここのデータ見てやったでしょ?w

同じようにやってみて、コケた俺ガイル。
解決策なくて、結局投げた。


235デフォルトの名無しさん:2006/09/14(木) 23:11:34
>>232-233
そのPOSTってのは
age=17
とかだよね?
PHP側は、$_POST['age']って感じだろうけど
そのstrの中身はわからんので何とも言えんが、この例のage=までエンコードしてるんじゃないか?
236デフォルトの名無しさん:2006/09/14(木) 23:24:08
>>225
メモリ管理しっかりやりたきゃCやC++、
コンパイラでがたがた文句言うならインラインアセンブラ使えと
突っ込みたい人がいぱーいいるだろうね。
ガベージコレクションが100%信用できないC#なんて意味あるのかと…
237デフォルトの名無しさん:2006/09/14(木) 23:30:51
FlashのGCに比べれば1万倍マシ
238デフォルトの名無しさん:2006/09/14(木) 23:43:57
つか、業務でC#を使ってるとこってあるんですか?

未だにVC++6/MFCでやってる部署はイタイですか?
239デフォルトの名無しさん:2006/09/14(木) 23:51:08
業務による
240デフォルトの名無しさん:2006/09/14(木) 23:51:33
煽りたいのか卑下したいのか…ハッキリ汁ヽ(`Д´)ノ
241デフォルトの名無しさん:2006/09/14(木) 23:58:19
もう、うちはC#しかやってないし。
242デフォルトの名無しさん:2006/09/15(金) 00:06:19
>>238
今、VC++6/MFCでやってるが開発効率悪くてやってらんね
243デフォルトの名無しさん:2006/09/15(金) 00:12:43
アホですいません
a |= 1;
の逆で特定ビットを0にするときはどうすれば?
244デフォルトの名無しさん:2006/09/15(金) 00:14:44
&= ~
245デフォルトの名無しさん:2006/09/15(金) 00:14:45
&= ~1;
246デフォルトの名無しさん:2006/09/15(金) 00:16:19
>>244-245
ありがとう
247デフォルトの名無しさん:2006/09/15(金) 01:30:07
ドリンク,フード+ハンバーガー
と言う文字列を
TreeViewコントロールに
+ドリンク
-フード
 +ハンバーガー
こんな感じで展開しないと行けないんですが、
Nodes.Addだと、出来ませんし、
何かうまい方法無いでしょうか?
もちろん,と+の法則はそのままに、文字列は動的に変動しますので・・・。
248デフォルトの名無しさん:2006/09/15(金) 01:45:51
字句解析してTreeViewにAddするメソッド書けばいいやん
249デフォルトの名無しさん:2006/09/15(金) 01:46:36
自前でバース汁
250デフォルトの名無しさん:2006/09/15(金) 01:55:50
>>248
その場合、2段以上の階層の深さに対応したりとかの、アルゴリズムがどうも思い浮かびません。
TreeView1.Nodes(0).Nodes.Addだったり、
TreeView1.Nodes(0).Nodes(0).Nodes.Addだったりで・・・
251デフォルトの名無しさん:2006/09/15(金) 01:57:23
TreeNode オブジェクト、意識的に作った事あるか?
252デフォルトの名無しさん:2006/09/15(金) 01:59:06
>>250
再帰って知ってる?
253デフォルトの名無しさん:2006/09/15(金) 02:07:04
それ以前に,と+のそのやり方だと作れない。
多分引っかかってるのは、そこに問題があるからだろうけど・・・

たとえば、フルーツとジュースがあり
フルーツの下に、バナナとリンゴがあって
バナナの下に、フィリピンバナナと台湾バナナがあるとする。

この場合、お前さんの考えてる構文だと表現できない。

254デフォルトの名無しさん:2006/09/15(金) 02:09:15
>>253
うあ、書いてみて気づいた書くまで気づかんかったorz
255デフォルトの名無しさん:2006/09/15(金) 02:12:05
わかりやすく表現するなら
とりあえず、紙の上にN分木の絵を描いてみな。
んで、それぞれのノードを表現するならば、後ろから順にROOTまでノードをたどればいいわけ。
そいつを表現すれば、ちゃんとツリー構造を作る事が出来る構文が出来るはず。

256デフォルトの名無しさん:2006/09/15(金) 02:20:01
>>255
それは確かにわかり易いかも知れないが、
無駄が多すぎるぞ。
階層が深くなったら、その1つ1つのノードのためにルートまでのノード全てを構文に残すのか?
実装すると、恐ろしくメモリを食うと思うが・・・。

この手の話には、もはや決まりごとのような方法がある。
それが
257デフォルトの名無しさん:2006/09/15(金) 02:22:25




分かれば苦労は無い。
258デフォルトの名無しさん:2006/09/15(金) 02:25:05
>>247
データと結果しかなく、どう展開するべきかの仕様が欠落している。

データと結果だけからすれば「,」「-」「+」をデリミタに分割してインデックスの若い順からデリミタに従って順に処理するだけで済む話。
再帰なんて不要でループと条件分岐だけ。

実際はそうじゃないだろ?
・同一レベルのノードの表現
・子ノードから親ノードへ戻る表現
・デリミタをエスケープする方法
色々考えるところがあるんじゃないの

C#云々以前に設計レベルで緩すぎるよ
259デフォルトの名無しさん:2006/09/15(金) 02:57:18
質問です。
LiveMessengerのログイン画面のような
ログイン画面と、ログイン後の画面が同じフォームにあるようなタイプって
1つのフォーム上に全てのコントロールを配置してから、可視・不可視を切り替えてるのでしょうか?
それだと、ものすごくデザインがしにくいのですが・・・
260デフォルトの名無しさん:2006/09/15(金) 03:02:53
個々の TabPage に分けて配置してタブページを切り替えるのがお手軽
261デフォルトの名無しさん:2006/09/15(金) 04:04:09
似たような形の新規フォームを作成
あとは、読み出し元の本物のフォームの、タスクバーやら何やらを全て不可視へ
これで、2つのフォームなのが1つのように見える
262デフォルトの名無しさん:2006/09/15(金) 08:41:29
あるクラス(関数?)から「品名1、品名2」(topic)についての
「名称、数量、値段」(item)の数値が吐き出されてくるんですが

これをlistviewにDetail表示するために
文字列を結合して

"名称:数量:値段:名称:数量:値段"

のような文字列にし
作った文字列をtopicの数ごと分割、さらにitemごと分割して表示するクラスに渡して表示していたのですが
もっと上手な表示方法ありませんでしょうか・・・・


↓こんな表にしたいんです
┏━━━┳━━━┳━━┳━━┓
┃     ┃名称  ┃数量┃値段┃
┣━━━╋━━━╋━━╋━━┫
┃品名1 ┃りんご ┃10 ┃1000┃
┃品名2 ┃みかん┃30 ┃1500┃
┗━━━┻━━━┻━━┻━━┛

わかりにくくて申し訳ありませんが、よろしくおねがいします
263デフォルトの名無しさん:2006/09/15(金) 08:46:41
初心者は初心者スレに行け
264デフォルトの名無しさん:2006/09/15(金) 09:02:58
>>263
ごめんなさい
いってきます。
265デフォルトの名無しさん:2006/09/15(金) 10:12:03
>>259
機能別に作成したユーザコントロールを状況に応じて動的に切り替える
なんでも1フォーム上に放り込むのは避けるべき
266デフォルトの名無しさん:2006/09/15(金) 11:09:04
>>260
それやろうとしたけどタブの非表示方がわからない
267デフォルトの名無しさん:2006/09/15(金) 14:21:52
C#でというか.NETでOLE埋め込みドキュメントとかいじれるのでしょうか?
クライアントとサーバーの両方キボン。
268デフォルトの名無しさん:2006/09/15(金) 15:14:47
C#でコントロールを作成しています。
シリアライズ機能について質問があります。

フォームに自作コントロールを貼って、自作デザイナを開き
編集してあるプロパティにデータを書き込みます。

デザイン終了時に、resxファイルにシリアライズされたデータが出力されます。

resxファイルのシリアライズ情報を見ると目的のデータの先頭が以下のようになっています。
<data name="<コントロール名>.<プロパティ名>" mimetype="application/x-microsoft.net.object.binary.base64">

なぜか「type」が出力されません。
出力させるようにはどうしたらよいでしょうか?
ご存知の方がいらっしゃったら教えてください。
269デフォルトの名無しさん:2006/09/15(金) 16:05:14
シリアライザまで自作する必要がなかったんであんまよんでないんだけど
http://207.46.196.75/vcsharp/programming/classlibraries/default.aspx?pull=/library/en-us/dndotnet/html/custcodegen.asp
参考にならん?
270デフォルトの名無しさん:2006/09/15(金) 17:09:42
271デフォルトの名無しさん:2006/09/15(金) 19:12:06
ファイルの更新日時と現在時刻をunixtimeで得るには
どうしたらいいですか?
272デフォルトの名無しさん:2006/09/15(金) 19:21:35
引き算して TotalSeconds

閏秒どうなってんだろね?
273デフォルトの名無しさん:2006/09/15(金) 21:10:59
>>271
どうもです。
それでしてみます。
274デフォルトの名無しさん:2006/09/15(金) 21:11:42
>>272
でした。
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メソッドでエラーが発生します。
なぜですか?

276デフォルトの名無しさん:2006/09/15(金) 23:44:52
どんなエラーかぐらいは表示されてるんだろうから書かないとな
277デフォルトの名無しさん:2006/09/16(土) 00:18:52
ToolStripSeparatorのEnabledプロパティは
使っちゃいけないみたいなこと書いてあるけど、
じゃどうやってクリックイベントが起きないようにしろってんだ……
セパレータのくせに誤クリックに反応しやがってメニューが閉じてうざい。

いちおうEnabled= false で期待した動作にはなるけど
278デフォルトの名無しさん:2006/09/16(土) 00:22:38
>>276
その程度のコードのエラーが想像できないような奴は
どんなエラーかを知ったところで解決策がわかるとは思えんが・・・
279デフォルトの名無しさん:2006/09/16(土) 00:34:34
>>278
>>276ではないが、一般論として想像できようができまいがエラーの内容くらいは書くべき。
常識だろ。何をいまさら
280デフォルトの名無しさん:2006/09/16(土) 00:43:17
けど、>>278の言ってることは的を射てる
281デフォルトの名無しさん:2006/09/16(土) 00:43:46
Wavファイルのデータ波形を描きたいと思っているのですが
Wavファイルを扱う便利なクラスってありますか?
282デフォルトの名無しさん:2006/09/16(土) 00:45:47
標準ライブラリにはないな
283デフォルトの名無しさん:2006/09/16(土) 00:46:33
>>282
うーそうですか
DirectXをちょっと見てみます
284デフォルトの名無しさん:2006/09/16(土) 01:03:26
>>270 さんくすこ
285デフォルトの名無しさん:2006/09/16(土) 01:05:24
だったら想像して解決策を書いてやってくれ。
286デフォルトの名無しさん:2006/09/16(土) 01:35:18
質問です。
ListViewコントロール使で、マウスでドラッグしてリストの中の項目の順番を入れ替えたいのですが
AllowColumnReorderプロパティーをTrueにしても、入れ替えが出来ません。
他に何かプロパティーがあるのでしょうか?
それとも、そういう処理は実装しないといけないのでしょうか?
287デフォルトの名無しさん:2006/09/16(土) 01:44:07
Column ってのは Detail 表示のときの上部にあるヘッダだぞ
ListViewItem を並び替えたければ自分で組め
288デフォルトの名無しさん:2006/09/16(土) 03:21:11
みなさんToolTipまわりでエラーに出会ったことありませんか?

自分で作ったToolTipならまだしも、
コントロールのinternalなフィールドのToolTipでエラーが出るときは
どうしたらいいんでしょうか。

特に終了時に例外がまれにでます。
スタックトレースみると
CheckReleaseやCreateHandle等で失敗(InvalidOperation)していますが、
再現性がありませんorz
289デフォルトの名無しさん:2006/09/16(土) 06:52:35
メディアプレイヤーのような、URLを突っ込んだらストリーミング再生が出来て
コーデックを入れたら、色んな形式に対応出来るようなのを作りたいのですが、
WMPって、MCIでしょうか?DirectShowなのでしょうか?
どちらも、プロパティにタグ情報を取得するようなのが無かったのですが・・・

また、C♯でWMPみたいなのを手軽に作るには、何かいい方法はないでしょうか?

290デフォルトの名無しさん:2006/09/16(土) 09:13:31
>>288
どういう使い方してるんだか。。。

漏れはToolTipを結構使ってるけど、発生したことがない。v1.1,2.0ともに
(デザイナでも、手動で両方とも使ったことがある。

>(自分の作った)コントロールのinternalなフィールドのToolTip
とりあえず、Designerで生成しているときのように宣言してる?
new ToolTip(this.components);とか
291デフォルトの名無しさん:2006/09/16(土) 09:44:40
>>289
WMPコントロールつかっとけ
292デフォルトの名無しさん:2006/09/16(土) 11:12:34
>>289
WMPのActiveXコントロール使うか、WPFのMediaElement使うと幸せになれるかもしれない
293デフォルトの名無しさん:2006/09/16(土) 11:21:45
質問失礼します。
VS2003 C# でコンソールアプリケーションを作成中です。
ユーザーが×ボタンを押したタイミングを拾いたいのですが可能でしょうか?
294デフォルトの名無しさん:2006/09/16(土) 11:23:43
×ボタンが無いとも限らないだろ
295デフォルトの名無しさん:2006/09/16(土) 11:27:07
>>294
確かに。
ユーザーによる終了のタイミングを拾いたいです。

無茶を言っていますが、C#ならもしや、、、と思い質問しました。
返答からすると無理っぽいですね。。。
296デフォルトの名無しさん:2006/09/16(土) 11:53:32
非侵入型でシリアライズを
カスタマイズする方法は用意されていないのでしょうか?
297289:2006/09/16(土) 12:52:05
>>291-292
ありがとうございます。
なるほど、WMPのActiveXコントロールですが・・・
とりあえず、参照設定をしてみたんですが
使い方がわかりません。。。
MediaPlayerの中の名前空間の中を見てみたんですが、それっぽいのがMediaPlayerClassってのがありましたが
MediaPlayer.MediaPlayerClass mplayer = new MediaPlayer.MediaPlayerClass();
は出来ますが
mplayerと言うインスタンスは利用できないんです。
どのような方法で使うのでしょうか?
MSDNにも乗ってませんし、検索してもそれっぽいのはないんで・・・
298デフォルトの名無しさん:2006/09/16(土) 13:17:19
ポトペタではっつけられるっしょ
299デフォルトの名無しさん:2006/09/16(土) 13:37:33
>>296
XmlSerializerのMSDNドキュメント
***OverrideAttribute
300デフォルトの名無しさん:2006/09/16(土) 13:43:52
コンソールアプリで×ボタンとか発想がまちがっとる。
がキャプション設定とかもできたりするので、ないとも限らんかもしれん。
まあ、ProcessExitだったかとか、DomainUnloadだったか、その辺のイベントでできるかもしれん。
この場合は×を押したか?なんてのは無理だが。
301289:2006/09/16(土) 13:45:03
>>298
ぉ、ポトペタは出来ました。
…が、.NETのフォームに貼り付けただけなのに、ソフトが起動しなくなりました。。。
貼り付けたのをはがすだけで起動します。
何か処理しなくてはいけない事があるのでしょうか?
コンパイル通るので、参照設定はうまく行ってる筈なんですが・・・
302289: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();
ここで止まります。
303デフォルトの名無しさん:2006/09/16(土) 13:56:35
確かそれWMP9が原因だったはず
WMP9から、何故かそのエラーが出るようになった。
本来はOCXが登録されてないため出るエラーだけど、確か他のマシンでもそうなるはず。

304デフォルトの名無しさん:2006/09/16(土) 14:16:26
regsrv32 wmp.dll とか
305デフォルトの名無しさん:2006/09/16(土) 14:18:16
Google に聞いてもあんまり事例がないな。
Win64 だったとか。
306289:2006/09/16(土) 14:27:44
>>304
う〜ん、それをやっても駄目でした。

>>305
そうです!
すみません、最初に書いておくべきでした。
開発環境はWinXP x64なんです。
生成したバイナリは32bit機でも動きませんでした。
登録したWMP.DLLはSYSWOW64ディレクトリ内のものなのですが、それがいけなかったのでしょうか?
307289:2006/09/16(土) 14:32:31
あ、勘違いでした。
生成したバイナリは32bit機では動きました。
なるほど、64bit環境自体での問題だったんですね。。。
どうもありがとうございました。
64bitでも動く方法があれば、ご提示いただけないでしょうか?
308デフォルトの名無しさん:2006/09/16(土) 14:35:30
>>307
動作環境をAnyCPUになってると思うけど
それをx86に限定する。
.NETは自動的に環境に合わせちまうから、多分64bitで動いてるんだと思う
そこに32bitのDLLのWMP.DLLを読み込むから、読み込めずに止まる(64bitアプリから32bitDLLは読めない)
309296:2006/09/16(土) 14:50:05
>>299
XmlAttributeOverrides
SoapAttributeOverrides
ですね。ありがとうございました。
310デフォルトの名無しさん:2006/09/16(土) 18:22:45
XmlSerializerにはSurrogateSelector
が使えないのでしょうか?
311デフォルトの名無しさん:2006/09/16(土) 18:34:05
string aa = "aaa";
MessageBox.Show(aa.GetHashCode().ToString());

こんな感じで出したハッシュコードが実行のたびに変わるんですけど
aaaって文字列ならずーっと同じハッシュコードを出すようにするにはどうすればいいのでしょうか?
あと、このハッシュコードのアルゴリズムを変える事は出来ないのでしょうか?MD5とかSHA1とかに
312デフォルトの名無しさん:2006/09/16(土) 18:56:04
System.Security.Cryptography.MD5CryptoServiceProvider
313デフォルトの名無しさん:2006/09/16(土) 20:14:34
自分の子でないWindowに対する入力はどうやって得ればいいですか?
いざとなったらC#でなくてもいいのでよろしくお願いします
314デフォルトの名無しさん:2006/09/16(土) 20:16:50
お手軽にやるなら SendKey とか
315デフォルトの名無しさん:2006/09/16(土) 20:25:14
別プロセス?
WM_CLOSE 送るのが正道だが
316デフォルトの名無しさん:2006/09/16(土) 20:28:46
>>313
>>314

ありがとうござします試してみます
317デフォルトの名無しさん:2006/09/16(土) 21:00:46
自分の子でないWindowに対するForcusはどうやってやるのか質問が来そうだな。
318デフォルトの名無しさん:2006/09/17(日) 00:38:07
>>311のは何でうまくいかんの?
毎度変わるとは思えないんだが・・・?
319デフォルトの名無しさん:2006/09/17(日) 00:46:36
>>318
毎度変わるかは別として、
実行毎に同じオブジェクトのハッシュコードが同じであることは「保障されてない」。
ついでに言っておくと、同じことが保障されているのは、「実行時の同じオブジェクト同士」のみ。
# それ以外の場合は、変わっている場合もあるし、稀に同じ場合もある。
320デフォルトの名無しさん:2006/09/17(日) 03:11:19
byte[]データ同士の結合をしたいのですが、
そういうメソッドはありませんか?
片方のbyte[]データは、数Mのデータなので、一度stringに戻してから結合して〜って言う方法は使えないんで・・・
321デフォルトの名無しさん:2006/09/17(日) 03:18:31
リサイズしてからコピーすればいいじゃん
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 
(年) (月) (日) (時) (秒)
325デフォルトの名無しさん:2006/09/17(日) 04:09:25
>>318
>>311は「stringオブジェクトの」ハッシュコードを得てるぞ。
文字列"aaa"のハッシュコードじゃない。
ヘルプをよく読むとわかるが、GetHashCode()で返ってくる値は
「文字列"aaa"を格納しているstringオブジェクト」のハッシュ値。
326デフォルトの名無しさん:2006/09/17(日) 04:13:59
>>323
Date は DateTime の間違いだと思うんだけど、一応
    DateTime.Now.ToString("yyyy mm dd hh ss")

    2006 09 16 03 54
になったような気がする。全く確かめていないが。


どうでもいいけど、「ご質問」って敬語の使い方として合っているのか……?
あと、0で埋めるのか埋めないのかをはっきりしてくれ。
327デフォルトの名無しさん:2006/09/17(日) 04:18:51

ToString("yyyy/MM/dd HH:mm:ss")

前ゼロは2桁
前ゼロなしなら1桁

3桁4桁にすると・・・ヘルプ嫁
328デフォルトの名無しさん:2006/09/17(日) 05:02:46
Stringって同じじゃないんだな(別にそれで困るわけじゃないんだが)。
どういう実装になってるんだろ。
329デフォルトの名無しさん:2006/09/17(日) 05:03:20
ああハッシュコードの話ね。
330デフォルトの名無しさん:2006/09/17(日) 05:50:54
>>328
ildasm.exe
mscorlib.dll の String.GetHashCode
331330:2006/09/17(日) 06:02:25
>>328
Reflector for .NETのほうが分かりやすいかも。
ゴミレスすまん。
332デフォルトの名無しさん:2006/09/17(日) 06:17:47
Stringは値等価で比較だからGetHashCodeの値も同じにならないとおかしい。
>>311の勘違いだと思う。
333デフォルトの名無しさん:2006/09/17(日) 06:58:02
ライセンス違反教唆
334デフォルトの名無しさん:2006/09/17(日) 10:55:03
SDKにildasmを付けてる時点で覗いてくれと言わんばかり
335デフォルトの名無しさん:2006/09/17(日) 11:17:59
そういうときのSSCLIですよ。
336ご質問です。:2006/09/17(日) 11:50:39
>>326さん・327さん
解決致しました。どうもありがとうございます(^-^:)b
337デフォルトの名無しさん:2006/09/17(日) 13:16:42
DOS画面でキーボードの検出を行いたいのですが、どうやるんでしょうか?
Console.ReadやConsole.ReadLine等のように実行処理が止まってしまうのは処理上マズイので、
キーボードの状態を取得するだけで良いのですが。
338デフォルトの名無しさん:2006/09/17(日) 13:25:27
入出力スレッドと内部処理スレッドを分けたら?
339デフォルトの名無しさん:2006/09/17(日) 13:28:33
2.0ならReadKey()
340337:2006/09/17(日) 13:45:07
>>338
>>339
返答ありがとうございます。
マルチスレッドで解決できました。
気になるので調べておきます。 < ReadKey()
341デフォルトの名無しさん:2006/09/17(日) 19:03:00
C# 2005 で教えてください。

Typeオブジェクトやリフレクションを使って、あるクラスから派生されているクラスを
すべて取得することってできませんか?
Type.BaseTypeを使えば、継承元を取得できますが、反対に派生クラスを取得する方法が
わかりません。
342デフォルトの名無しさん:2006/09/17(日) 19:12:39
しらみつぶしに調べるしかないです
343デフォルトの名無しさん:2006/09/17(日) 19:15:43
全てのクラスのBaseTypeを調べれば分かるんじゃないか?
オブジェクトブラウザでも派生型を見ると重いから簡単には取得できないはず。
344341:2006/09/17(日) 19:26:43
>>342
>>343
やっぱりその方法しかありませんか。
Typeのメンバになかったのでそういうのは無いんだろうなとは思ったんですが。。。
地道に探します。
345デフォルトの名無しさん:2006/09/17(日) 19:43:56
>>341
継承の考え方からすると、継承元から継承先を知ることができるのは、あってはならないんじゃないかね
ソリューション全体を客観的に管理する別の要素があれば別だけど、一般的には不要だしね

というか、なんで知りたいの?
ソリューション全体を客観的に管理するものを作りたいって事?
346341:2006/09/17(日) 19:57:23
>>345
やりたいのは、ある抽象クラスから作られた派生クラスをすべて画面上のコンボに動的に登録して、
それをユーザーから1つだけ選択できるようにしたいんです。
ほいで、選択されたクラスを使って処理を実行させるだけです。

そんなことは、コンボにあらかじめすべて登録しておけば済むって言われればそれまでですが、
画面のアプリと派生クラスを含む抽象クラスとは別のアセンブリで考えていて、
画面をいじらなくてもクラスライブラリ(DLL)のバージョンアップだけで対処するのがベストかなと。
そこで、リフレクションを使えばスマートにできないかなと思ったわけです。
347デフォルトの名無しさん:2006/09/17(日) 20:16:24
348デフォルトの名無しさん:2006/09/17(日) 21:57:41
レジストリキーってCloseしないとまずいことありますか?
古い値読まれたりとか?

たとえば、
RegistryKey rk = Registry.CurrentUser.CreateSubKey( "hoge\foo" );
rk.DeleteSubkey( "hage", false );
rk.Close();

ってやる代わりに

Registry.CurrentUser.CreateSubKey( "hoge\foo" ).DeleteSubkey( "hage", false );

ってのはまずいですかね?
349デフォルトの名無しさん:2006/09/17(日) 22:03:38
using 使えよ
350デフォルトの名無しさん:2006/09/17(日) 23:59:12
なぜ?
351デフォルトの名無しさん:2006/09/18(月) 00:06:20
DisposeでCloseしてるから
352デフォルトの名無しさん:2006/09/18(月) 00:13:37
using System;

using(IDisposable hoge = ...)
って意味が全然違うのに同じキーワードを使うのが気持ち悪い
353デフォルトの名無しさん:2006/09/18(月) 00:32:52
つか、Windows環境でhogeなんて使うほうが気持ち悪い
354デフォルトの名無しさん:2006/09/18(月) 00:39:17
C#はWindows以外でも使えるお
355デフォルトの名無しさん:2006/09/18(月) 00:43:32
Windows以外でC#をつかうメリットってなに?
356デフォルトの名無しさん:2006/09/18(月) 00:47:54
番号ポータビリティ
357デフォルトの名無しさん:2006/09/18(月) 01:09:30
C# には、IList の中身を指定の文字列をデリミタにして連結した文字列を返すメソッドってありませんでしたっけ?
358デフォルトの名無しさん:2006/09/18(月) 01:13:12
// C# には IList なんて無いぜ。

string[] ならあるが、まあそれくらい自作すれ。
359デフォルトの名無しさん:2006/09/18(月) 01:23:24
// あれ? C# って IList じゃなかったっけか……。
// まあ C# じゃなくて .NET Framework が正しいんだろうけど。

C# には無いのか。じゃあ何処で見かけたんだっけか……。
とりあえず thx でし。
360デフォルトの名無しさん:2006/09/18(月) 01:38:24
<summary>タグのXmlコメントで改行するにはどうすればよいですか?
<br>など入れてもインテリセンスで参照するときに反映されないんですけど。
361デフォルトの名無しさん:2006/09/18(月) 01:41:44
インテリセンスのに対しては para 要素使うくらいしかない。
つか改行が必要なんて既にサマリじゃなくね?
362デフォルトの名無しさん:2006/09/18(月) 01:44:37
おれなんて<code>つかっちゃってるぜ!
363デフォルトの名無しさん:2006/09/18(月) 03:27:54
>>346
昔まさにほぼそのままの機能を実装したことがある。
俺の場合はインターフェイスにしたと思うけど、
実装したクラスをアセンブリに入れたら自動でコンボの選択肢に入んのw
ああ全部地道に探したさ
364デフォルトの名無しさん:2006/09/18(月) 04:02:32
普通は特定ディレクトリーpluginsとかーに入ってるDLLから検索って仕様になるんじゃないかい?
365デフォルトの名無しさん:2006/09/18(月) 05:51:43
何を言ってるのかね?
366デフォルトの名無しさん:2006/09/18(月) 05:54:30
特定ディレクトリに入ってるDLLから具体的なプラグインのクラスをどうやって探すんだい?
367デフォルトの名無しさん:2006/09/18(月) 05:58:34
そのディレクトリのDLL総なめして目的のインターフェイス持つクラスさがせばいいのちがうか
368デフォルトの名無しさん:2006/09/18(月) 05:59:43
いやいや、そういうことじゃなくて>>364はつまり何が言いたかったの?ってことさ
369デフォルトの名無しさん:2006/09/18(月) 06:05:59
>>368
いや>>346>>363に対応してコメントしたつもりだったんだけど。
なんかずれてる?
370360:2006/09/18(月) 11:34:35
ども、ありがとうございます。>>361-362
すでにサマリじゃないのはそのとおりなのですが。
インテリセンスでもうちょっと補足情報をきれいに出せたらいいのにと
371デフォルトの名無しさん:2006/09/19(火) 11:56:20
>360
あれってたしかXmlだから<br> じゃなくて、<br/>でどう?
試してないけど。
372デフォルトの名無しさん:2006/09/19(火) 16:37:46
<br />
373デフォルトの名無しさん:2006/09/19(火) 16:45:01
市ヶ谷勤めることになりました。
今度あれば参加しますのでよろしくお願いします。
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];
375デフォルトの名無しさん:2006/09/19(火) 20:43:35
>>374
structのメンバーをPrivateにしてどうするの?
376デフォルトの名無しさん:2006/09/19(火) 20:54:24
>>374
struct _kouzou のコンストラクタ書いて、
public _kouzou(int size)
{
 this.a = new int[size];
}

>>375
それは別にいいだろ。
public なプロパティ書けばいいんだし。
377デフォルトの名無しさん:2006/09/19(火) 20:57:32
tupleコンテナは用意されていないのでしょうか?
378デフォルトの名無しさん:2006/09/19(火) 23:29:12
>>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);//ここで例外
}
380デフォルトの名無しさん:2006/09/20(水) 00:21:02
well-formed ですらない xml をどうパースしろというのだ
シリアライズ対象に直接文字列を入れるんじゃなくて url-encode するとか Base64 化するとかしたら
381デフォルトの名無しさん:2006/09/20(水) 00:47:19
そのパソコンのIPアドレスを取得するにはどうすればよいですか?
382デフォルトの名無しさん:2006/09/20(水) 00:58:28
そのパソコンでどれだ?
383デフォルトの名無しさん:2006/09/20(水) 01:02:39
>>382
そのアプリケーションを起動させているパソコンです。
つまり自分のパソコンです。
言葉足らずですいません。
384デフォルトの名無しさん:2006/09/20(水) 01:32:56
>>383
どれだというのは、そのパソコンにLANアダプターが複数あったり、
無線LANやモデムでもネットにつながっていた場合はIPアドレスは1つじゃないだろうということだろう。
.NET 2.0 ならSystem.Net.NetworkInformation名前空間に便利なのがいろいろあるからあたってみて。
385デフォルトの名無しさん:2006/09/20(水) 01:59:51
そうですか。そうなると、困りました。1台のパソコンに複数あったりするんですね。

そしたら
TcpListenerで待機してて、接続要求を出してきた送信元の
IPアドレスを知るにはどうしたらよいか教えていただけるとうれしいです。
386デフォルトの名無しさん:2006/09/20(水) 02:04:42
電話で聞く
387デフォルトの名無しさん:2006/09/20(水) 07:31:24
well-formedでないxmlがSerializeメソッドで生成されて、
Deserializeで失敗するというのが意外でした。

XmlSerializerのインスタンスを作成に成功し、
Serializeできた時点で元のオブジェクトとDeserializeしたオブジェクトは常に値が等しいことを期待しているので。
(well-formedかどうかなどに関心はない

Streamを渡したときの既定動作を変更できればよかったのですが
どうやら、XmlReader使うとなんとかなるみたいです。
388デフォルトの名無しさん:2006/09/20(水) 10:42:18
>>385
Accept してから Socket.RemoteEndPoint を取得
389デフォルトの名無しさん:2006/09/20(水) 10:44:01
>>385
ついでにIPアドレスが複数ある場合は列挙してユーザに選ばせるのがよくある手
じゃないだろうか
390デフォルトの名無しさん:2006/09/20(水) 11:51:09
>>388,389
ありがとうございます。
391デフォルトの名無しさん:2006/09/20(水) 18:07:22
DelegateをBeginInvokeして、新規スレッド上で作業しております。
このスレッドをSTAにしたいのですが、どうしたらよいのでしょうか。

Thread th = new Thread(...)
...
なら
th.SetApartmentState( ApartmentState.STA );

でいけるのですが……
392デフォルトの名無しさん:2006/09/20(水) 19:17:25
>>391
Thread.CurrentThread.SetApartmentState( .. )
じゃダメ?
393デフォルトの名無しさん:2006/09/20(水) 19:18:33
質問です。
サーバー側のスレにも書いたんですが
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♯側から対策できるのであればご教示をお願いします。
394デフォルトの名無しさん:2006/09/20(水) 20:04:25
try に引っかかるってなんだよ
395391:2006/09/20(水) 20:05:13
>>392
それスレッドが開始前じゃないと例外がでるみたいですが……
396デフォルトの名無しさん:2006/09/20(水) 20:06:15
サーバー側のスレの引用間違ってないか???????
397デフォルトの名無しさん:2006/09/20(水) 20:16:33
例外の内容をなぜ書かないんだ?
398デフォルトの名無しさん:2006/09/20(水) 20:20:47
>>393
英文みたけど、POSTのLengthが正しく送信されてもダメって感じだな。
URL見たけど、ようするにレスポンスとれずに切断食らうって事でしょ。
どうみても、Lighttpdの問題。BBSの話では解決策は無い。オブジェクトの保持時間を短くするとかわけわからん事書いてるが
おそらく関係ないと思う。試してみたらいいけどさ
399デフォルトの名無しさん:2006/09/20(水) 20:24:16
>>393
webサーバがショボくて Expect100Continueに対応してないんでそ。
プログラムの頭で System.Net.ServicePointManager.Expect100Continue = false とかしてみては?
400デフォルトの名無しさん:2006/09/20(水) 20:24:59
>>393
タイムアウト弄るとか

>>398
Tryにひっかかるってなんだ・・・
って思ったら、>>393のスレと英文BBSに書いてたんだな、スマソ
401デフォルトの名無しさん:2006/09/20(水) 20:27:09
なぜコンパクトにまとめて書かないか疑問。
スレ参照しろとは態度でかいんじゃない?
402デフォルトの名無しさん:2006/09/20(水) 20:35:10
まーまーw
今回のコンパクトに絞れてるなら解決できる話だしな
普通に>>399のことがそのまま書かれてたじゃん
C♯スレだからしゃーない、英語読めない小学生なんだろ(藁
403デフォルトの名無しさん:2006/09/20(水) 20:42:05
>>400
英文BBSは別人だと思うよ。

結局Tryはタイムアウトだったんだろ。
404デフォルトの名無しさん:2006/09/20(水) 20:50:43
どんな例外が出てるかくらい書け
405デフォルトの名無しさん:2006/09/20(水) 20:53:40
質問です。
MangaDirectXを使いたいんですが
nVIDIAのCgとかも使えますか?
406デフォルトの名無しさん:2006/09/20(水) 21:36:22
>>391
STA にしたいなら Thread 使わないと駄目。
407391:2006/09/20(水) 21:46:22
>>406
やっぱそうですか。
サンクスです。
408デフォルトの名無しさん:2006/09/20(水) 22:12:17
>>405
Mangaにワロタ。Managedのことね。
HLSLを使おう。
Cgを使う理由はない。
409デフォルトの名無しさん:2006/09/21(木) 00:51:11
393 は質問だけして消えたね。
410デフォルトの名無しさん:2006/09/21(木) 03:07:44
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ファイル作成に対して言っているのか、それの読込までに対して言っているのか、
わかんなくて。
411デフォルトの名無しさん:2006/09/21(木) 03:23:19
mdb を読むときには Access は要らなかったけど xls はどうなってるかは知らない
412デフォルトの名無しさん:2006/09/21(木) 04:48:14
newに対して、deleteやfreeに相当するような機能はありませんでしょうか?
ガベージコレクタは便利なんですが、どうしてもその場でメモリ開放しなければならない状態がありまして・・・・

413デフォルトの名無しさん:2006/09/21(木) 04:56:24
お前は GC.Collect でもやってろ
414デフォルトの名無しさん:2006/09/21(木) 04:57:08
>>412
つ 言語的にはgc、でも設計上はオブジェクトプールとかネイティブにたよったりとか
415デフォルトの名無しさん:2006/09/21(木) 04:58:42
そういえばGC.Collect()はジェネレーションを置くに追いやって、結果的にレスポンスが悪くなるって聞いたことがあるなぁ
416デフォルトの名無しさん:2006/09/21(木) 05:40:56
>>412
解放しなきゃいけないのってメモリっていうより確保したリソースでしょ?
IDisposable実装しなっせ。
417デフォルトの名無しさん:2006/09/21(木) 05:50:49
一般に .NET ではメモリはどうでもいいんだが
>>412のケースではメモリが重要らしい
Dispose じゃどうにもならん
418デフォルトの名無しさん:2006/09/21(木) 06:14:35
>>412

unsing(classA a=new classA()){
//存続範囲
}
//ここで開放
419デフォルトの名無しさん:2006/09/21(木) 06:15:58
開放されねえよ
420デフォルトの名無しさん:2006/09/21(木) 07:56:53
必要な床だけアンマネージドにしたまへ
421デフォルトの名無しさん:2006/09/21(木) 08:27:26
おまいらインたーフェースとクラスってどう使い分けてます?
あるオブジェクトに色々役割を持たせたいときに、それぞれの役割に応じたインターフェースをもてば実行時には問題ないけれど、実装時にめんどくさい。
たとえば、ツリーのノードであるとともに画面の部品の一つであるようなものを作りたいときには実装がちょっとめんどくさくなる。
インプリメントを外部に全部委譲するのもめんどくさくてイヤンな感じです。
おまいら的にないすな方法あればよろ。
422デフォルトの名無しさん:2006/09/21(木) 08:48:33
適材適所
423デフォルトの名無しさん:2006/09/21(木) 09:30:42
いや、クラスでそういったことできないでしょ?
質問を限定すればナイスな実装の方法を知りたいと言うことです。
424デフォルトの名無しさん:2006/09/21(木) 11:10:28
>>423

とりあえず初心者用の本嫁
425デフォルトの名無しさん:2006/09/21(木) 14:05:08
集約で解決。
426デフォルトの名無しさん:2006/09/21(木) 16:43:46
TreeView + ListViewの詳細表示

みたいな感じのコントローラ(クイックウォッチウィンドウとか)
って標準では装備されてないですよね。
複数階層表示できるプロパティとして使いたいんですが、
自作しないと厳しいでしょうか?
427デフォルトの名無しさん:2006/09/21(木) 16:57:25
TreeListView でググってみたら?
428デフォルトの名無しさん:2006/09/21(木) 20:26:04
426じゃないけどなんか使いよさそうなのが出てきたな。
429!426:2006/09/21(木) 20:32:27
コラムの並び替えが遅い印象を受けるんだが……まあ良いか。
430デフォルトの名無しさん:2006/09/21(木) 21:47:58
Webサービス作ってASP.NET権限じゃなく特定ユーザ(Administratorとか)の権限で実行させるにはどこ設定すればよろしいか?
431デフォルトの名無しさん:2006/09/21(木) 22:06:04
自レス
<configuration>
  <system.web>
    <identity>
432デフォルトの名無しさん:2006/09/21(木) 22:43:16
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実行すると極端なメモリ消費が無いのに
バッチプログラムとして起動させるとメモリリークを起こしており
解決する事が出来ず大変困っています。

ご助言をお願い致します。
435デフォルトの名無しさん:2006/09/21(木) 23:23:47
// DLL内部のメソッドを呼び出し
が分からんことには。

GC.Collect();しなかったらどうなる?
436デフォルトの名無しさん:2006/09/21(木) 23:29:02
>>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; // ←この記述で宜しいですよね?

439デフォルトの名無しさん:2006/09/22(金) 01:30:56
破棄可能なクラスのインスタンスについて、using () { ... } とか、Dispose とか使ってますか?
440デフォルトの名無しさん:2006/09/22(金) 01:32:37
>>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電話のクライアントを作りたいのです。
よろしくお願いします。
443デフォルトの名無しさん:2006/09/22(金) 01:58:06
よろしくって、何をすればいいんだ?手取り足取り教えるのか?
そういう使えない新人みたいな質問の仕方されるといらいらするんだけど
444(^-^) ◆MONSOON/qo :2006/09/22(金) 01:59:11
>>442
パケットの形式がわかればいいのだよね
http://www.atmarkit.co.jp/fnetwork/rensai/voip02/01.html
445442:2006/09/22(金) 02:26:40
お返事ありがとうございます。
大雑把に書いてすいません。
パケットで1から書いていくのは難しいので
ライブラリを探してます。
商用のでそれっぽいのはあるのですが、
無料のは探せませんでした。。
446(^-^) ◆MONSOON/qo :2006/09/22(金) 02:43:52
447デフォルトの名無しさん:2006/09/22(金) 06:12:58
あるタイミングで
ListViewの現在選択されているアイテムの次のアイテムが選択されるようにしたいのですが
ListBoxのsetselectedのようなメソッドやプロパティーはないでしょうか?

448デフォルトの名無しさん:2006/09/22(金) 07:46:04
ある。
449デフォルトの名無しさん:2006/09/22(金) 08:00:20
>>448
どうもありがとうございました。
おかげで解決しました。

this.listView1.Focus();
this.listView1.Items[0].Selected = true;

450デフォルトの名無しさん:2006/09/22(金) 08:58:53
以上自演でした
451デフォルトの名無しさん:2006/09/22(金) 09:03:56
C#3.0マダー
452442:2006/09/22(金) 11:12:37
>446
コーデックのURLありがとうございます。
SIPの部分を書いてこれを使えばできそうですね。
ただSIPの部分を書くのも大変でして、
SIPのライブラリもないものでしょうか?
Javaにはjainというものがあるそうですが。(ただこれも具体的に使ってるドキュメントを書いてる人は少ないですね)
また、実際プロバイダとの通信になると方言等があると聞きますし、
いろいろ大変そうな気がします。
まだVOIPは敷居が高いという認識ですかね。。
453デフォルトの名無しさん:2006/09/22(金) 11:15:15
おまえ、それ自分で作るっていうんかいなw
やろうとしてる事って、フォームにメディアプレイヤーのコンポネ貼り付けて『メディアプレイヤー作りました』
って言ってるのと大差ないぞ。
454test:2006/09/22(金) 11:22:26
>>x
455デフォルトの名無しさん:2006/09/22(金) 12:32:32
SkypeAPIつかえばいいんじゃまいか?
456デフォルトの名無しさん:2006/09/22(金) 23:14:31
ListViewなんですが
LabelEditを有効にすると、左端の編集は出来るようになりますが
その他の項目が編集できません。
むしろ、左端を編集せずにその他の編集したいのですが、どうすればいいのでしょうか?
457デフォルトの名無しさん:2006/09/22(金) 23:19:27
>>456
ListViewにはラベル(左端)以外を編集する機能はありません。
458デフォルトの名無しさん:2006/09/22(金) 23:22:29
DataGridView 使っちゃえば
459神プログラマ:2006/09/22(金) 23:50:37


お前ら自分で調べろ!
460界王神プログラマ:2006/09/23(土) 00:04:41
だ が 断 る 
461チワワプログラマ:2006/09/23(土) 00:16:18
イヤン
462デフォルトの名無しさん:2006/09/23(土) 20:35:17
D&DでDataObjectのSetTextって異なるFormat(UnicodeTextやHtmlやRtfなど)を入れられないのでしょうか?
UnicodeTextをサポートするアプリにもRtf形式をサポートするアプリにも入れたいのですが

ドラッグターゲットのTextで受け取る形式を知る方法はどのようにすればよいのでしょうか?
463デフォルトの名無しさん:2006/09/23(土) 20:41:12
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

です。
467デフォルトの名無しさん:2006/09/24(日) 14:07:09
リストビューのフォーカスをカーソルキー単体で(コントロールキーなしで)フォーカスを移動するとき、
アイテムの選択状態を保つ方法ってある?
試して失敗だった方法としては、ProcessCmdKey内で、フォーカスを移動するキーを検出したら、
LParamに論理和で0xffffffffc0000000を加えるというやり方がある。

msg.LParam = (IntPtr)((ulong)msg.LParam | 0xffffffffc0000000);
0xffffffffc0000000はコントロールキー押下を示すフラグ(のはず)
468デフォルトの名無しさん:2006/09/24(日) 16:20:19
それ何ビット環境ですか
469デフォルトの名無しさん:2006/09/24(日) 16:24:53
>>468
シーッ!!!
きっと次期windo(ry
470デフォルトの名無しさん:2006/09/24(日) 16:28:09
署名に
Microsoft MVP for Visual Developer - Visual C#
なんて書いてる奴って
アフォですか?
471464:2006/09/24(日) 17:34:23
自己レス。ここに書いてあった。
Windows Forms .NET: The Official Microsoft Windows Forms Community Site
http://www.windowsforms.net/FAQs/default.aspx?PageID=3&CategoryID=12&SubcategoryID=85&tabindex=3
472464:2006/09/24(日) 17:43:35
Evidence Hashってどのようなタイミングで変わるのでしょうか?
(hoge_Url_feazx4drhfz04whlzbalc0e3u4ovhai)の後ろの奴
調べてもなかなかでてきません。
どなたか教えていただけないでしょうか?
473デフォルトの名無しさん:2006/09/24(日) 18:54:56
>>470
ぐぐれ。
474デフォルトの名無しさん:2006/09/24(日) 20:13:44
.NET3って期待してもいいのかな? M$
遅い、上にメモリ食いのアプリなんてとてもじゃないが業務に不向き。
.NETでよくなったことはちょっとしたアプリなら簡単に作れるようになったことだけ。
業務使う場合は殆どは派生させてしまうので、VC6のときとならんら変わらない。
475デフォルトの名無しさん:2006/09/24(日) 20:20:33
シーッ!!!
476デフォルトの名無しさん:2006/09/24(日) 20:22:16
スレ違い
477デフォルトの名無しさん:2006/09/25(月) 00:25:30
C#、仕様ころころ変えすぎ
478デフォルトの名無しさん:2006/09/25(月) 00:36:33
1.0 1.2 2.0 とあったけどころころ変えたか?
479デフォルトの名無しさん:2006/09/25(月) 00:39:27
>>477
だな。ってゆーか、JAVAだけで十分
JAVAのマイナーチェンジが多すぎるんだよねぇ
D言語とか( ´艸`)ウププ
480デフォルトの名無しさん:2006/09/25(月) 00:45:54
>>479
(*´・ω・)(・ω・`*)ネー
481デフォルトの名無しさん:2006/09/25(月) 01:08:34
カエレ(・∀・)!!
482デフォルトの名無しさん:2006/09/25(月) 01:35:03
ちょっとしたアプリでもメモリ使用量が20,30MBってなんだよw
483デフォルトの名無しさん:2006/09/25(月) 01:37:35
そうだね
484デフォルトの名無しさん:2006/09/25(月) 01:37:42
>>479
JavaとC#(NETFX)は使えば使うほど違うぞ。
C#初期はその理論で十分通用したんだがな。

まぁなんでもいいから巣に帰れ。な。
485デフォルトの名無しさん:2006/09/25(月) 02:59:11
C++ => C# 2.0 => Java 1.4 と触ってきたけど、
Java より C# のほうがかなり開発楽。

・・・1.4だからかもしれんけど。
486デフォルトの名無しさん:2006/09/25(月) 03:11:11
java1.5、c#2.0両方やるけどC#のほうが楽。
Windowsという土俵でjavaに負けたら存在意義ないからね。
487デフォルトの名無しさん:2006/09/25(月) 03:18:05
でも、C♯でちょっとしたアプリを作るだけで、数十メガメモリ食うのはどうにかしたい・・・
なんで、こんなに食うの?

っていうか、まだコード何も書いてなくて、適当にコンポネ貼り付けただけでかなり食う。
488デフォルトの名無しさん:2006/09/25(月) 03:39:10
>>487
おれも使用C#のメモリについて知りたい。。
489デフォルトの名無しさん:2006/09/25(月) 03:48:50
>>487
1. タスクマネージャのメモリ使用量の表示は感覚的に変
SetProcessWorkingSetSizeについて調べてみよう!ディープに
知りたいんならInside Windowsを読もう!Vistaだと直ってるwらしい

2. CLRのチューニング、特性
恐らくある程度の耐フラグメンテーションやパフォーマンスのために
余裕がある環境では余裕があるように、チューニングされている。
つまり優先順位の問題。また、「JITエンジン自体」ももちろんメモリを消費する。

そういえば、個人的には起動時間に関して、Vistaでは予測不能。
SuperFetchのせいでかなり特性が変わる。
490デフォルトの名無しさん:2006/09/25(月) 05:18:17
.NET を標準搭載するくらいだから OS 付属アプリで
.NET のもありそうだしな
491デフォルトの名無しさん:2006/09/25(月) 08:00:02
>>487
とりあえず、Windowを最小化してみよう。すぐに数メガに落ちるはず
タスクマネージャのメモリをそのまま信じちゃいけない。
492デフォルトの名無しさん:2006/09/25(月) 09:16:58
使用メモリなんかを比較的信頼できるレベルで測るならパフォーマンスカウンタで
タスクマネージャのは色々なリソースから集めたざっくり値で、細かくは見れないし
493デフォルトの名無しさん:2006/09/25(月) 09:41:41
>>490 管理アプリ周りはほとんど.NETとか
494デフォルトの名無しさん:2006/09/25(月) 12:15:15
>>477-478
つーか、機能追加と仕様変更ではまた全然意味合いが違うし。
追加はあっても、変更はほとんどないだろ。

>>479
http://www.javainthebox.net/laboratory/J2SE1.5/contents.html
このあたり読んでから出直せ。
最近の JAVA は C# のマイナーチェンジ。
495デフォルトの名無しさん:2006/09/25(月) 12:37:43
pu
496デフォルトの名無しさん:2006/09/25(月) 17:15:33
Mpegファイルとwmvファイルから動画の縦横サイズを取得したいのですが
わかる人いますか?

497デフォルトの名無しさん:2006/09/25(月) 18:19:34
昔々、あるところにおじいさんとおばあさんがいました。
おじいさんは、山へ芝刈りしたあと、川へ洗濯に。
おばあさんは、家で昼寝をしていました。
めでたしめでたし。
498デフォルトの名無しさん:2006/09/25(月) 18:25:12
>>496
います
499デフォルトの名無しさん:2006/09/25(月) 21:35:59
>>498
教えてくだちい><。。。
500デフォルトの名無しさん:2006/09/25(月) 21:56:13
有償ですがよろしいですか
501デフォルトの名無しさん:2006/09/25(月) 23:31:37
>>500はほっといて

>>496
手っ取り早いのは、WindowsMediaPlayerのクラスやらコンポネを使う。
あれで、曲名やらアーティスト名やら時間やら動画サイズやらを取得出来る。
ただし、COMなので、全部.NETでやりたいって人は使えないですけど
502デフォルトの名無しさん:2006/09/26(火) 17:19:00
>>501
回答ありがとうございます
コンソールアプリで実装したいのですが
WindowsMediaPlayerのクラスは取り込めたんだけど
うまく動いてくれません

ほかに方法はないでしょうか?
おねがいします
503デフォルトの名無しさん:2006/09/26(火) 20:07:17
>>502
とりあえずベターな方法としてファイルフォーマットにしたがって読み込む方法をお勧めしよう
504デフォルトの名無しさん:2006/09/26(火) 22:01:02
いったい何のプログラムなんだ?
505デフォルトの名無しさん:2006/09/27(水) 01:57:05
VC#でOracleへ接続してデータの参照/更新を行うソフトを作成しましたが
起動中、使用メモリが20〜30MBと大きくとても目立ちます。
小さく作るコツってありますか?
最悪、MFCで書き直しても言われかねない状況です。
506デフォルトの名無しさん:2006/09/27(水) 02:01:25
>>489

.NETアプリの正しいメモリ使用量はタスクマネージャーでは見れない。
ウインドウを最小化すると、ある程度正しいメモリ使用量が見れるらしいので、不安なら一度それで確認したら?
507デフォルトの名無しさん:2006/09/27(水) 03:44:00
メインフォームのShownでSetProcessWorkingSetSize API(P/Invokeを使う)をコールすれば、
フォームを最小化した時と同じでタスクマネージャのメモリ使用量の表示が減らせる。
それでプログラムの起動が早くなったりOSの動作が軽くなったりするわけではないし、
他のプロ不ラムが使えるメモリーが広くなるわけでもない。
ケースによっては無駄なページジングのために逆に動作が遅くなる可能性があるのも同じ。

客にWindowsのメモリ管理の説明をいちいちするのが面倒なときにはお勧め。
508デフォルトの名無しさん:2006/09/27(水) 03:49:54
それも違うだろ。
っていうか、20〜30MBで
>最悪、MFCで書き直しても言われかねない状況です。
て。
何考えてんだか。
509デフォルトの名無しさん:2006/09/27(水) 04:11:39
最小化するとメモリ使用量が激減した。すげえ。
510デフォルトの名無しさん:2006/09/27(水) 04:36:40
え〜と
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のサイト含め色んな所でこのコードが紹介されていますが、これをやると通常のウインドウバーをドラッグした時に比べると
非常に動きが重いのです。
重いどころか、少しでもすばやくドラッグするとウインドウが付いて来れずに、マウスがウインドウの外に出てしまいます。

どうにか、通常のウインドウバー並の動きが欲しいのですが・・・・
512デフォルトの名無しさん:2006/09/27(水) 08:11:21
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);
}
}
513デフォルトの名無しさん:2006/09/27(水) 08:34:25
>>510
SetProcessWorkingSetSize(p, -1, -1) でワーキングセットを限りなく縮小する。
大部分のページがワーキングセットから切り離され、ページング予定のページとしてメモリ上にキャッシュされる。
実際に使われている部分のページはすぐにワーキングセット戻される。
それ以外のページは時間とともに徐々にページングされたり、破棄されたりする。
OSや別のプロセスがメモリーを必要とする場合は優先してページングまたは破棄されたりする。

起動後すぐにSetProcessWorkingSetSizeを呼べば初期化のためだけのページを片付けることが出来るので
1回呼ぶくらいはいいんじゃない。
514デフォルトの名無しさん:2006/09/27(水) 13:29:13
>>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 );
 }
}

の方が一般的だと思うが
515デフォルトの名無しさん:2006/09/27(水) 13:52:05
>>514
> private static extern int SendMessage( IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam ); 
int?
516デフォルトの名無しさん:2006/09/27(水) 13:52:40
失礼、vbと混ざってたy
517デフォルトの名無しさん:2006/09/27(水) 18:29:04
Visual Studio 2005 Service Pack 1 日本語版ベータ提供開始です
http://www.exconn.net/Blogs/team01/archive/2006/09/27/16329.aspx
518デフォルトの名無しさん:2006/09/27(水) 19:49:16
PictureBox1.ImageLocationに、
リファラーを設定してWeb上の画像を表示する方法を教えてください。
519デフォルトの名無しさん:2006/09/27(水) 19:51:05
>>518
巣に帰れ
520デフォルトの名無しさん:2006/09/28(木) 01:04:37
なんで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イベントを記述すると、そのイベントは発生しました。

なんかデリゲートだとかその辺の話なんだろうなあと思いつつ
どうすればイベントを発生させることができるのか質問したいと思いました。
どうかよろしくおねがいします。
522デフォルトの名無しさん:2006/09/29(金) 00:18:52
base.OnKeyPress
523デフォルトの名無しさん:2006/09/29(金) 00:19:04
カスタムコントロール使ったこと無いけど、
何かbaseの方呼ばなきゃいけないんだっけ?わかんね
524デフォルトの名無しさん:2006/09/29(金) 00:35:35
>>522

base.OnKeypress

っていうのをどこに書くのでしょうか・・・。
フォームのほう?
カスタムコントロール内に書こうにも、とりあえずkeypressイベント自体が発生しないので・・・
525デフォルトの名無しさん:2006/09/29(金) 00:39:39
>>524
自作テキストボックスのOnKeypress メソッドの任意の場所に。
base.OnKeypress によって継承元のOnKeyPress(遡ってControl.OnKeyPress)
で、KeyPress がファイアされる。
526デフォルトの名無しさん:2006/09/29(金) 01:30:46
>>525

自作のカスタムテキストボックスAのOnkeypressイベントには
base.OnKeypress 
の記述はしてあります。

なぜ動かないか悩んでいます。
527デフォルトの名無しさん:2006/09/29(金) 01:31:49
>>526
じゃあ次はイベントハンドラにちゃんと設定してるか確かめないと名
528デフォルトの名無しさん:2006/09/29(金) 11:43:20
多分基本的な誤解。
529デフォルトの名無しさん:2006/09/29(金) 11:55:41
AのOnKeyPressは
protected override void OnKeyPress(KeyPressEventArgs e)
{
//独自の処理

base.OnKeyPress(e);
}
の形式になってる?
530デフォルトの名無しさん:2006/09/29(金) 12:13:17
>>521
自分の書いた文章をよく読もう。
途中でイベントがすりかわってるぞ…

Aのイベントが発生しない

>ちなみにカスタムテキストボックスAではなく、ただのwin.form.textboxをユーザコントロールBにはりつけて
keypressイベントを記述すると、そのイベントは発生しました。
↑は無関係だろ?
基本がなってないよ。

オーバーライドも分かってるかどうか。
OnKeypressイベントって書いてあるのが怪しい。

OnKeypressメソッドをオーバーライドならbase.OnKeyPressは必要。
531デフォルトの名無しさん:2006/09/29(金) 12:16:42
あららテストコード書いてるうちにレスが…
イベントベースなら問題なしだった。

KeyPressイベント内でbase.OnKeyPress読むと無限ループだよ。
532デフォルトの名無しさん:2006/09/29(金) 12:28:34
間違ってUserControlのイベントにしてるだけじゃないでしょうか?

UserControl内のカスタムテキストにイベントつなげて
いないだけのような気がします。
533デフォルトの名無しさん:2006/09/29(金) 15:40:27
>>531
再帰って知ってるか
534デフォルトの名無しさん:2006/09/29(金) 15:50:55
>>533
(゚д゚)ハァ?
535デフォルトの名無しさん:2006/09/29(金) 18:39:48
戻らない呼び出しは再帰でしょうか?
536デフォルトの名無しさん:2006/09/29(金) 19:20:25
>>535
不帰
537デフォルトの名無しさん:2006/09/29(金) 19:26:31
call you
you{ while(1); }
再帰か?
538デフォルトの名無しさん:2006/09/29(金) 19:52:05
それはひょっとしてギャグで言っているのか(AAry
539デフォルトの名無しさん:2006/09/29(金) 20:00:53
スタックがなくなるという条件で終了する再帰処理
540デフォルトの名無しさん:2006/09/29(金) 22:56:35
DataSetやDataGridViewやOleDbDataAdapterを使ってMySQLのフロントエンドを
作ってみたが、糞だな

特にDataGridViewはしょぼい機能しかないのにやたらメモリ食う。
あの程度なら自前で用意したほうがいいぞ
541デフォルトの名無しさん:2006/09/29(金) 23:07:40
そうだね
542デフォルトの名無しさん:2006/09/30(土) 01:17:02
>>529
なっています。

>>530
>OnKeypressメソッドをオーバーライドならbase.OnKeyPressは必要。
その処理はしています。

でも動かないのはなぜなのかなぁ、、と。。。

ちなみにテキストボックスAを継承したテキストボックスCに、同じくOnkeypressメソッドを記述します。
そしてフォームにはりつけると、きちんと呼び出されます。

この違いっていったいなんなのかなぁと・・
543デフォルトの名無しさん:2006/09/30(土) 01:42:49
>>542
悩むより手を動かしたほうがいい
問題の切り分けをするために、再現可能なコードでも練ると吉
544デフォルトの名無しさん:2006/09/30(土) 04:37:10
>>543
>悩むより手を動かしたほうがいい

オ○ニーしろって言ってんのかと思ったw
545デフォルトの名無しさん:2006/09/30(土) 09:42:03
悩むより手を動かしたほうがいい
問題の切り分けをするために、再現可能なコードでも練
(ったところで、どうせ解るわけないんだからティムポでもしごきながら寝)
ると吉
546デフォルトの名無しさん:2006/09/30(土) 23:25:29
ASP.NETで、HTMLなどのテキストデータではなくバイナリデータを吐きたいのですが、JavaのServletのようなものはないのでしょうか?
aspx?ではjspやPHPのような感じのコードを入力していきますが、Javaに慣れすぎて何か変な感じがするのですが…
547デフォルトの名無しさん:2006/10/01(日) 01:47:54
Servlet がどんなのかは知らんが、Response.OutputStream あたりにガリガリかきこみゃいいんじゃね?
変な感じと言われても慣れろとしか言えんな
548デフォルトの名無しさん:2006/10/01(日) 02:35:24
>>546
バイナリ動的生成ならashx使うほうがいいんだな、あと。
549デフォルトの名無しさん:2006/10/01(日) 04:12:25
IHttpHandler実装すりゃ何でもできる。
まあお手軽にそれをやれるようにはじめから用意されているのがashxだ。
550デフォルトの名無しさん:2006/10/01(日) 05:44:55
ほう。ashxってそういうやつなのか。
551デフォルトの名無しさん:2006/10/01(日) 10:55:13
まあデフォルトでハンドラ登録なり必要なことが済んでて
埋め込みコンパイルに対応してるって位だけどな。
552546:2006/10/01(日) 11:00:06
ashxですか。知りませんでした。今から調べてみます。
553デフォルトの名無しさん:2006/10/01(日) 17:22:07
現在、パネルコントロールを継承して
その中でOnMouseLeave、OnMouseDown、OnMouseMoveをオーバーライドしています。
しかし、パネル上に別のコントロールを配置してしまうと
上記のイベントが発生しないようなのです。
なにか回避方法とかはありませんでしょうか?
可能な限りはパネル上のコントロールに依存しない方法で
回避したいなと思っているのですがやり方が思いつきませんでした・・・。
554デフォルトの名無しさん:2006/10/01(日) 18:22:33
( ^ิิ౪^ิ)
555デフォルトの名無しさん:2006/10/01(日) 18:33:06
ヒント:オーバーライド
556デフォルトの名無しさん:2006/10/01(日) 18:36:17

base.OnSomeEvent(e) → this.OnSomeEvent(e)
                         ↑
                     これが実行される
もちろんbaseは何が起こったかすらわからない

あれ、イベントをハンドルするのって明示的に書くっけ・・・・・・・・?
557デフォルトの名無しさん:2006/10/01(日) 19:42:32
C#ってSTLでいうところのアルゴリズムってないのかしらん?
558デフォルトの名無しさん:2006/10/01(日) 19:47:26
無理
559デフォルトの名無しさん:2006/10/01(日) 21:11:51
イベントの基本を理解してない人多いね。

>>556
イベントハンドルする方法はオーバーライド
OnSomeEvent(e)

イベントハンドラを追加するには、
SomeEvent += イベントハンドラ

560デフォルトの名無しさん:2006/10/01(日) 21:19:21
なんかまた湧いた?
561デフォルトの名無しさん:2006/10/01(日) 22:09:45
>>542
ユーザーコントロールの+=が正しいイベントハンドラに繋がっているか?
562デフォルトの名無しさん:2006/10/01(日) 23:22:18
>>514
  SendMessage( this.Handle, WM_SYSCOMMAND, (IntPtr)(SC_MOVE | 2), IntPtr.Zero );

これの

SC_MOVE | 2

って ただのSC_MOVEだけなだめなの?
| 2 はいらんとおもうけど?
563デフォルトの名無しさん:2006/10/02(月) 06:18:39
System.Net.WebRequestを使って、WebサーバーとHTTPプロトコルで通信するプログラムを書いてるんですが
一度リクエストを出すと、ブロッキングしてしまうんで、スレッドを分けて処理してたんですが
別スレッドから、現在の転送量を調べる方法は無いのでしょうか?
現在のデータの転送の歩調を調べたいので・・・
564デフォルトの名無しさん:2006/10/02(月) 08:13:42
ない
HttpWebRequest 使え
565デフォルトの名無しさん:2006/10/02(月) 08:15:58
って使ってるのか。
それなら後は Stream からの読み出し量を記録しとけば良いだけ
566デフォルトの名無しさん:2006/10/02(月) 13:40:49
>>553
イベントかオーバーライドかの区別は別として、553で書いている現象の原因は
マウスカーソルが配置したコントロールの上にあった場合、そっちのほうにイベントが
行ってしまうためでしょう。

タイマーでマウス位置を監視するのが良いと思う。
567デフォルトの名無しさん:2006/10/02(月) 14:35:13
>タイマーでマウス位置を監視
ダメ、絶対!
568デフォルトの名無しさん:2006/10/02(月) 15:27:46
どして?
メッセージをフックなんかするより簡単でいいと思うけど・・
569デフォルトの名無しさん:2006/10/02(月) 15:32:31
アホか
570デフォルトの名無しさん:2006/10/02(月) 15:34:17
リアル基地外がいるというスレはここですか?
571デフォルトの名無しさん:2006/10/02(月) 15:44:23
foreach(Control control in this.Controls)
{
control.MouseDown += control_MouseDown;
}
ではダメ?
572デフォルトの名無しさん:2006/10/02(月) 16:03:02
>タイマーでマウス位置を監視
( ^ิิ౪^ิ)
573デフォルトの名無しさん:2006/10/02(月) 16:08:00
アホやからこれくらいしか思いつかないけど

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 );
}
574デフォルトの名無しさん:2006/10/02(月) 16:36:48
>>573
それ Enter と Leave が個々のコントロール毎に発生するから、
パネル自体への Enter や Leave とは全然違ってメチャクチャやん。
575デフォルトの名無しさん:2006/10/02(月) 16:41:58
>>574
その都度座標チェックすればいいやん
576デフォルトの名無しさん:2006/10/02(月) 17:40:33
(≧∇≦ ) ぶぁっはっはっ!!!腹痛てぇー
577デフォルトの名無しさん:2006/10/02(月) 17:46:48
こりゃ例のアレかい?「設計が(ry」
578デフォルトの名無しさん:2006/10/02(月) 19:49:20
[ディベロッパー製品開発統括部 Blog]
Visual Studio 2005 Service Pack 1 日本語版ベータを
ダウンロードセンターから提供開始しました (2006-10-02 23:56)

http://www.exconn.net/Blogs/team01/archive/2006/10/02/16346.aspx
579デフォルトの名無しさん:2006/10/02(月) 20:48:23
MSβ祭り\(^o^)/
580デフォルトの名無しさん:2006/10/03(火) 04:26:25
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;
として呼び出していますが、設定した資格情報は無視されこのプロセスの資格で認証されてしまいます。
設定した資格情報で認証させるにはどうすればいいのでしょう?
581デフォルトの名無しさん:2006/10/03(火) 06:01:05
>>580
Windows認証ってそういうものだから。
582デフォルトの名無しさん:2006/10/03(火) 06:02:37
自レス
ASP.NET開発サーバーでやってたから"localhost"のループバックで接続だから認証が有効にならないくさい。
IISにしたら直った。
583581:2006/10/03(火) 06:14:52
と思ったけど、Windows認証ってNTLMかKerberosを指定するんじゃないの?
584デフォルトの名無しさん:2006/10/03(火) 06:43:49
質問です。

ハッシュ生成についてなんですが
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;

}

続く

585584:2006/10/03(火) 06:45:07
オルァアアア!
     ∧∧    ∧∧  ダスゾ!ダスゾォオオオ!
   (( (*゚Д゚) ))  (;  ) 
   (( // 、) 、)∩))∧と  ヽ
 ((〜((≡γ'⌒(((*´(|  〜))
    し'`Jし'`ーイ_ノ"(ノ^ヽ) 
      ウウッ、ウグゥゥウゥゥゥッ…
586デフォルトの名無しさん:2006/10/03(火) 06:49:07
(; ゚д゚)…
587デフォルトの名無しさん:2006/10/03(火) 06:50:33
後半はコピペしたつもりが出来てなくて前のが残ってたってオチか?
恥ずかしがらずに出て来い
588デフォルトの名無しさん:2006/10/03(火) 06:58:12
便乗して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);

よろしくお願いいたします。
590デフォルトの名無しさん:2006/10/03(火) 07:17:53
>>588
int なら GetHashCode もしないで単に足す。xor でもいいけど。
591デフォルトの名無しさん:2006/10/03(火) 07:19:30
>>588
ちょっと格好付けるならそれぞれに10−30辺りの素数(定数)を掛ける
592デフォルトの名無しさん:2006/10/03(火) 07:25:05
>>590-591 おのおの分散具合どうなるんでしょ?教えてえろい人。
593デフォルトの名無しさん:2006/10/03(火) 07:40:23
3数に相関がまったくないのなら足すだけでよい
相関があるのならその相関の具合によって最適な方法は異なる
594デフォルトの名無しさん:2006/10/03(火) 08:16:34
>>583
Negotiateって書いとけば適当に選んでくれるらしいのだが
595デフォルトの名無しさん:2006/10/03(火) 08:19:19
>>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型に変換出来るのがあったような・・・
596デフォルトの名無しさん:2006/10/03(火) 11:59:00
Compare<T>(T lhs,T rhs){
   return lhs<rhs;
}
みたいに書きたいけど不可?
Primitiv対応のみでも委員ですが・・・
597初心者:2006/10/03(火) 12:24:01
いきなり質問します!
同じクラスのオブジェクトを二個生成したとき、そのオブジェクト内のオブジェクトは共有されてしまうのですか?
598デフォルトの名無しさん:2006/10/03(火) 12:27:35
質問失礼します。
C#でファイルのヘッダー部分(4byte)を書き換え中です。
現在、ファイルを全部読み込んで、4byteを書き換え、全部を書き込んでいます。
効率が悪いので、ヘッダー部分のみの書き込みを行いたいのですが、どうやれば良いのでしょうか?
599デフォルトの名無しさん:2006/10/03(火) 12:33:46
質問します。
どうすればいいのか教えてください!
600デフォルトの名無しさん:2006/10/03(火) 12:35:22
>>597
ふらっとC♯, C#(初心者用) Part9
http://pc8.2ch.net/test/read.cgi/tech/1157855247/

>>598
FileStream で普通に FileMode.Open で開いて、Seek なり Position 変えるなりして
書き変えたいとこへ移動して、4バイト Write すればよいと思う。
601デフォルトの名無しさん:2006/10/03(火) 12:37:35
>>597
staticなフィールドはね。
非staticなフィールドはオブジェクト固有
602デフォルトの名無しさん:2006/10/03(火) 14:22:13
>>596
static bool Compare<T>(T lhs, T rhs) where T : IComparable
{
  return lhs.CompareTo(rhs) < 0;
}
603デフォルトの名無しさん:2006/10/03(火) 14:39:24
>>602
この場合IComparableはどこから来るんでせう?
604デフォルトの名無しさん:2006/10/03(火) 14:49:14
>>603
「どこから来る」っていうのが意味わからんが、
エスパー回答するとSystem名前空間にあるよ。

ちなみに組み込み型はIComparableを実装してるんで
組み込み型しか使わないなら何も考えなくてOK。
605デフォルトの名無しさん:2006/10/03(火) 15:59:13
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メソッドのそれよりも低いといわれます。
スタブ君が何やってるのかいまいちわかっていませんが・・・
606デフォルトの名無しさん:2006/10/03(火) 18:09:46
Marshal.CopyやMarshal.WriteByteに相当するものを
C#だけで実装するのは不可能?
どうあがいてもコンパイラエラーになるんだけど
607デフォルトの名無しさん:2006/10/03(火) 18:33:39
byte[] array = new byte[] { };
IntPtr ptr = IntPtr.Zero;
byte* p = (byte*)ptr;
for (int i = 0; i < array.Length; ++i)
  *(p+i) = array[i];

こういうこと? テストはしてないがコンパイルは通る。
608606: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);
}

これでうまくいきました。ありがとう。
なんで今までわからなかったんだろ
609デフォルトの名無しさん:2006/10/03(火) 19:42:05
質問
全角入力時、テキストボックスのKeyDownイベントでe.keycodeの値を拾うと、
値が何を押してもProcessKeyになってしまいます。

IMEの全角入力字に打たれたキーを取得し、ローマ字を作りたいのですが、
どうすればいいでしょうか?
610デフォルトの名無しさん:2006/10/03(火) 22:33:26
WM_IME_ 系のメッセージを捕まえて処理する事になるな
611デフォルトの名無しさん:2006/10/03(火) 23:04:44
visual studio 2005 等のツールバーのボタンとかは
マウスを上に持っていくと青い半透明の矩形が描画されるタイプのボタンですが
これを普通のフォームでボタンとして使いたいのですが
方法はありますでしょうか?
Win32APIを使っても構いません。
かなりださいですが、自前でDraw系のメソッドを使ってそれらしいのを
作ることはできましたがそれようのAPIがあると思うのです。
よろしくお願いします。
612デフォルトの名無しさん:2006/10/03(火) 23:21:31
>>611
>visual studio 2005 等のツールバーのボタン

ってToolStripのボタンみたいなやつのこと?
APIなんてあるわけない。

PanelにToolStrip乗っけてそこにToolStripButtonでどうか。
ToolStripのRendererで背景を描かないようにすればなんとか。

まあ自前描画したほうがよさそうだが
613デフォルトの名無しさん:2006/10/03(火) 23:45:44
>>612
やっぱないですか・・・

たとえばですが、SleipnirとかJaneStyleとかのツールバーは
どうやって描画してるんですかね?
やっぱみんな自前描画なのかな・・・。
作者じゃなきゃわかんないよね。
きいたらおしえてくれるんかな
614デフォルトの名無しさん:2006/10/03(火) 23:56:09
>>613
VS2005のツールバーと、SleipnirとかJaneStyleとかのツールバーは
全然違うやんけ

あっちはただのToolbarWindow32(+VisualStyle)でしょうが

615デフォルトの名無しさん:2006/10/04(水) 00:42:48
なんで文字列のハッシュ取るのにASCIIエンコーディングを使いたがるんだろう。
616デフォルトの名無しさん:2006/10/04(水) 03:47:07
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
流れぶった切って質問しちゃいます。

/* と打って改行すると
 * とかつくのやめさせるにはどうするの?
教えれ。
618デフォルトの名無しさん:2006/10/04(水) 16:05:00
それがルールなごや
619デフォルトの名無しさん:2006/10/04(水) 16:06:22
>>617
あれうっとおしいと思ってたのは俺だけじゃなかったか。
620デフォルトの名無しさん:2006/10/04(水) 17:42:59
/*[Enter][Ctrl+Z]と打ち込む習慣をつける。
621デフォルトの名無しさん:2006/10/04(水) 17:48:35
改行文字をクリップボードにコピーしておいて[Ctrl+V]
622デフォルトの名無しさん:2006/10/04(水) 17:55:34
VSから「参照の追加」でCOM参照するとラッパー作ってくれるけど
あれをコマンドラインからやるにはなんというコマンドつかいますか?
623デフォルトの名無しさん:2006/10/04(水) 18:31:22
TlbImp.exe
624デフォルトの名無しさん:2006/10/04(水) 18:52:13
>>623
できた。ありがとう。
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ブラウザから、テキストを
抽出するプログラムを書きたいのですが、その実現方法にはどの様な方法が
あるのでしょうか?
(板違いだったらすいません。)
627デフォルトの名無しさん:2006/10/04(水) 21:17:41
>>626
どのブラウザなのかも書いてないし。
ブラウザ拡張にしたいのか単独アプリなのかも書いてないし

そこまで面倒みきれません。
628デフォルトの名無しさん:2006/10/04(水) 21:24:32
>>627
すいません。説明が足りませんでした。
ブラウザはIE6.X.X系です。

実現方法については、ブラウザ拡張(Plugin)にするのか単独アプリにするのかの2つを
考えているのですが、調べてみたところ単独アプリの方が実現しやすい用なので、
単独での実現方法を教えていただけるとありがたいです。
629デフォルトの名無しさん:2006/10/04(水) 21:35:57
実現しやすいって分かったんなら方法も分かってるってもんじゃないの?
630デフォルトの名無しさん:2006/10/04(水) 21:38:59
>629
Pluginと単独アプリを比較して実現しやすそうだなと思っただけなので、
具体的な実現方法については分かっていません。
何か具体的な良い実現方法がありましたら教えていただけますか?
631デフォルトの名無しさん:2006/10/04(水) 21:48:00
バッチファイルをかくのと通常のwinアプリをかくのでは
バッチを書くほうが楽だからバッチで作ろうと思った

ってのと同じ理屈じゃないか
632デフォルトの名無しさん:2006/10/04(水) 21:55:17
>>630
COMでできます。
Shell.Application のインスタンスを作って Window を列挙して、
IE のウィンドウを見つけたらInternetExplorer.Application インタフェイスを取得して、
Document プロパティで IHTMLDocument とかが取れるのであとは簡単だと思う。

C# でも簡単にできると思うけど、今忙しいので具体的なコードは示せない。
633デフォルトの名無しさん:2006/10/04(水) 22:14:09
>632
有難う御座います。早速調べてみます。
634デフォルトの名無しさん:2006/10/04(水) 22:41:59
結構泥沼に嵌まりそう>COM
635デフォルトの名無しさん:2006/10/04(水) 23:07:46
.NETの質問もここでいいですか?

Graphics.DrawImageを使ってPictureBoxに巨大なBitmap(5000x5000くらい)を
表示しようとすると表示がかなり遅くなってしまいます。
一方、小さなBitmap(1024x768)を同じように表示すると
巨大なBitmapの時ほど遅くなりません。

どちらもディスプレイサイズ(1024x768)は同じなので、
結果的に描画される(見える)範囲のサイズは同じなのですが、
DrawImageを使うとBitmap全体を(見えないところまで)描画しようとしまっているようです。

そこでSetClipメソッドやClipプロパティでクリッピング領域を指定してみたのですが、
描画速度に変化はありませんでした。

巨大なBitmapの見える範囲だけを描画するシンプルな方法はないでしょうか?
636デフォルトの名無しさん:2006/10/04(水) 23:19:01
>>635
ソース側矩形も指定して、見える範囲だけを描画すればいいと思う。
637デフォルトの名無しさん:2006/10/04(水) 23:52:03
DrawImageを下の用に使っており、
dstRectにはディスプレイのサイズが、
srcRectにはdstRectと同じサイズが指定してあります。

 g.DrawImage(bgImage, dstRect, srcRect, GraphicsUnit.Pixel);

ですが、これだけだと描画は遅いままになってしまいます。
638デフォルトの名無しさん:2006/10/05(木) 00:12:43
bgImageを切り取れ、ってことじゃ?
639デフォルトの名無しさん:2006/10/05(木) 00:50:20
回答ありがとうございます。

> bgImageを切り取れ、ってことじゃ?
残念ながらそれしかないですかね。

巨大なBitmap(5000x5000)をスクロールして表示したいと考えていたので、
スクロール時に毎イベントごとに切り取りをすると
余計に処理が重くなってしまいました。
(ひょっとしたら.NETはこれが高速なのか?とか期待したんですが、やっぱりダメでした。)

なので、次善策として巨大なBitmapを適当なサイズ(256x256とか)に切り分けて、
これをタイルパターンのように表示する方法で試してみます。
640デフォルトの名無しさん:2006/10/05(木) 00:53:50
遅いのは GDI+ の宿命なので、Win32API & GDI 使って描画すれ。
641デフォルトの名無しさん:2006/10/05(木) 00:54:54
あるいはD3D
642デフォルトの名無しさん:2006/10/05(木) 01:05:35
この点だけなら、pInvokeで BitBlt 呼ぶのも悪くないと解決だと思うけど・・・
643デフォルトの名無しさん:2006/10/05(木) 09:32:04
PictureBoxが糞なんだと思う。




644デフォルトの名無しさん:2006/10/05(木) 10:05:55
Win32で戻り値がBOOLになってる関数を使いたいとき、
[return: MarshalAs(UnmanagedType.Bool)]ってつける必要あるでしょうか?
pinvoke.netで調べてみると、IsIconicには付いているんですが、ほかに
いくつか見たやつには付いていませんでした。
645デフォルトの名無しさん:2006/10/05(木) 13:31:48
>>639
Unscaleでやっても駄目だったらもう駄目かな。
どっちにしろタイルにしないとブロック領域での転送は
出来ないので仕方ないだろう
646デフォルトの名無しさん:2006/10/05(木) 14:11:59
>>644
UnmanagedType.Bool (32bitのBOOL)が既定のマーシャリングだから、
なにも付けなければUnmanagedType.Boolになる。

つけなくてもいいが、コード分析とかだと警告が出る。
http://msdn2.microsoft.com/en-us/library/ms182206.aspx
647デフォルトの名無しさん:2006/10/05(木) 17:00:30
質問します

DataGridViewについてですが
DataSetをDataSourceにセットしデータを表示させています
で、ColumnHeaderをクリックし自動でソートさせても
CurrentRowが同じ位置になってしまいます
例)
ソート前
1<選択
2
3

ソート後
3<選択
2
1<ココを選択していて欲しい

コレを回避するためにRowEnterイベントでRowのKeyを記憶しておき
ソート後にそのキーに元にCurrentRowを設定しようと思ったのですが
ソート直後にRowEnterが発生してしまい
上記例では3のKeyを覚えてしまいます
現在はRowValidatedイベントでKeyを取っていますが
何か他に方法などありますでしょうか?
648デフォルトの名無しさん:2006/10/05(木) 22:33:46
;:;:;.
     ;:;:;              ,、-ー-、               ど
     ;:;:            ,r'"´ ̄`ヾ、             明  う
     ;:;:.            リ ,,, ニ ,,,_ ヾト、            る  だ
     :;:;:;.             ,ハ ^7 ,^   !.:.\          く
     ;:;:;:           /.:.:.V,r''''''ゞyイ.:.:.:.:..ヽ       な
     ;:;:.         ノ.:!:.:.:.:`ゞ-<7.:〉.:.:.:i.:.:}   ろ  つ
     从 __  _,,,/.:.:/:.:.:.:.:.:| }-{/i.:/.:.:.:.:|.:/     う  た
      从从C# }と_」.:/!.:.:.:.:.:.:.!  ̄ リ.:.:.:.:.:り     ?
         ̄ ̄    ̄  |.:.:.:.:.:./_ :__ヽ.:.:.:.:\
                \/.:.::..:.:.:.:.:.:..:\:.::./
                /.:.:.:.:.:.:.「^Y.:.:.:.:.:.:|´
                 {.:.:.:.:.:.:.:.| ,!.:.:.:.:.:.:|
     __           \.:.:.:.:.:.V.:.:.:.:.:.:.:|
    /.:.:./ンく";;〕      \.:.:.::|.:.:.:.:.:.:.:!
    ヽ;::/::::::....;;;ヽ、       > 'ゝ─‐イ、
     ヾ;;;;;;;;:::...;;;;〈       `ー' ``''ー‐'
      ‘ー.く`ヽイュ、
         ソ´・ ̄ス_      お 暗 :::::::::::::::::::::
        ./ ・ ・、√: : : ヽ   ら 靴  く :::::::::::::::::::::::
         >.= イ: : : : : ;_;|  な が  て ::::::::::::::::::::::
      /l_"/( ヽ}: : : : .]  い わ   :::::::::::::::::::::::::
      `ー――` \ : : : イ  わ か :::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
649デフォルトの名無しさん:2006/10/06(金) 00:03:30
sort後に発生するイベントがあったような?
650デフォルトの名無しさん:2006/10/06(金) 00:16:52
sort後じゃ遅いんだよっ!!
って話じゃないかなっ
651647:2006/10/06(金) 09:33:13
>>649>>650
レスありがとうです

色々試しているのですが
イベントの順番としては
1)RowEnter
2)(ソート操作)
3)RowEnter←ここでCurrentRowが変わってしまう
4)Sorted or ColumnHeaderClick

という感じなのです
652デフォルトの名無しさん:2006/10/06(金) 12:29:40
状態遷移図作ってフラグを作る。
653デフォルトの名無しさん:2006/10/06(金) 12:42:34
必ず2回RowEnterに入るなら、Key記録を2つ作ればいいんじゃないの?
たとえばp0とp1を作っといて、

1)RowEnter  →p1=p0、現在のアイテムをp0に記録
2)(ソート操作)
3)RowEnter←ここでCurrentRowが変わってしまう
→p1=p0、現在のアイテムをp0に記録
4)Sorted or ColumnHeaderClick

位置をp1に。
654デフォルトの名無しさん:2006/10/06(金) 12:54:57
せっかく面白回答したのにだれも食いついてこない。
655デフォルトの名無しさん:2006/10/06(金) 13:15:17
素のDataGridViewはソート後も選択状態保存するよね
656デフォルトの名無しさん:2006/10/06(金) 17:39:24
いろいろ質問です。
@ VC#2005、Winアプリにて自exeのverを取得する方法。
A 同じくGUIDを取得する方法。
B クラスライブラリを作って(dllが出来ますよね)ライブラリ内のクラスにて
   呼出し元のアプリのGUIDを取得する方法。
657デフォルトの名無しさん:2006/10/06(金) 17:50:25
へぇ、色々な疑問があるんですね
658647: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だとレスポンスがよくないので断念しました
659デフォルトの名無しさん:2006/10/07(土) 22:09:56
C#関連でブログやるつもりですがどこがオススメでしょうか?
660デフォルトの名無しさん:2006/10/07(土) 22:44:09
チラシの裏
661デフォルトの名無しさん:2006/10/07(土) 23:10:40
このスレ
662デフォルトの名無しさん:2006/10/08(日) 11:52:05
theSpoke
663デフォルトの名無しさん:2006/10/08(日) 20:29:38
Visual Studio .NETだと、[ツール]→[Webページのビルド コメント]でドキュメントコメントタグからAPIリファレンスが作れました。
Visual Studio 2005の場合、APIレファレンスってどうやて作るんですか?
いくら調べてもやり方がでてこないんですよね。
どなたかご存知ではないですか?
ご存知の方、お聞かせ下さい。
よろしくお願いします。
664デフォルトの名無しさん:2006/10/08(日) 20:41:23
>>659
つwankuma
665デフォルトの名無しさん:2006/10/08(日) 20:45:11
>>663
つndoc
666659:2006/10/08(日) 22:52:36
>>664
せっかく紹介していただいたのですが、ハードル高すぎます。
667デフォルトの名無しさん:2006/10/08(日) 23:33:40
なんだそりゃw
668659:2006/10/09(月) 01:10:42
やっぱ地道に見えないところで書きたい。
参加人数30人ぐらいのコミュって入り辛い。

しかもMVPばっかじゃないか。
669デフォルトの名無しさん:2006/10/09(月) 01:24:01
逆じゃね?
wankumaでブログ書くからMVPになれるんだろw
670659:2006/10/09(月) 01:24:38
>>669
FAQでそれはないって書いてあるだろw
671デフォルトの名無しさん:2006/10/09(月) 01:33:32
FAQにも

>Q. メンバに Microsoft MVP の方が多くて、参加に躊躇しちゃうんですけど・・・
>A. 躊躇しないでください。

とかってあるけど、よっぽど自信のあるヤツじゃなきゃ躊躇するだろw
672デフォルトの名無しさん:2006/10/09(月) 01:57:16
MVPはコネがないとなれないからね。
チャンスじゃん。
673デフォルトの名無しさん:2006/10/09(月) 02:07:52
こいつじゃんぬっぽくね?
674デフォルトの名無しさん:2006/10/09(月) 11:59:45
>>668
君はオープンなblogを書くのに向いていない
やめとけ
675デフォルトの名無しさん:2006/10/09(月) 13:31:27
C#2.0のシリアライズで教えてください。

シリアル化されたファイル(SOAP)から、
IDeserializationCallback.OnDeserialization で、逆シリアル化しようとしても、
string や、int などの値データは読み出せるのですが、
独自のクラスのフィールドが上手く読み出せません。

OnDeserializationが呼び出されている以上、
オブジェクトグラフすべての逆シリアル化は完了しているはずで、
おまけに OnDeserialization 内で SerializationInfo の GetValue を使っても、
例外はスローされず、読み出し自体は成功しているように見えます。
なのに、変数のフィールドはすべてnullや0が埋まっています。
(変数自体はnullではない)

不思議なのは、GetValue を使った後の変数のフィールドとして保持してある
SerializationInfoの変数内には、本来欲しいはずのフィールドデータがすべてそろっている点です。
要は、このデータをフィールド内に取り込みたいのですが、
何か方法が間違ってるのでしょうか?
676675:2006/10/09(月) 14:06:03
すみません。自己解決しました。
お騒がせしました。(;´Д`)
677デフォルトの名無しさん:2006/10/09(月) 14:16:53
今後同じようなことにはまる人の為に、
どういう問題だったのか書いてくれるといいな。
678675: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
あげたい気持ち
680デフォルトの名無しさん:2006/10/12(木) 10:26:23
質問です。
過去ログに有ったら申し訳ありません。

VS2005環境でMDIアプリを作っているのですが、
EXCELの様にMDIの子ウィンドウをタスクバーに表示する事は可能ですか?

よろしくお願いいたします。
681デフォルトの名無しさん:2006/10/12(木) 17:42:06
ダミーのウインドウを出すとか
682デフォルトの名無しさん:2006/10/12(木) 17:44:06
683680:2006/10/12(木) 19:43:49
>681,682
ご回答ありがとうございます。

>682
実際にまだ試してないですけど、
予想はしてましたがやっぱりこういう方法になるのですね。

とりあえず…
今新案件の設計段階で、
お客さんからMDI案で質問の様な事ができる必要があるって話だったのに、
今日(ついさっき)打ち合わせでMDI案を取り下げられてしまい、意味が無くなってしまいました…

心の奥にしまっておきます。
684デフォルトの名無しさん:2006/10/13(金) 16:01:03
C#のジェネリクスで異なる基本の数値型に対応させたものを書きたいときはどうしたらいいんでしょ?
T Mul<T>(T lhs,T rhs){
return lhs/rhs;
}
とかかきたいんですが。
685デフォルトの名無しさん:2006/10/13(金) 16:20:55
Mulで除算すか(笑い
686デフォルトの名無しさん:2006/10/13(金) 16:43:38
>>684
System.Reflection.Emit名前空間を使って動的コード生成
687デフォルトの名無しさん:2006/10/13(金) 17:55:11
>>685 間違えます他・・・orz
688デフォルトの名無しさん:2006/10/13(金) 22:15:10
わんくまの質問掲示板に同じ趣旨のスレが立ってるな
689デフォルトの名無しさん:2006/10/13(金) 22:33:17
http://msdn2.microsoft.com/ja-jp/library/exczf7b9.aspx
ここに似たようなサンプルがあるよ
こういう怪しい方法しかない
690デフォルトの名無しさん:2006/10/13(金) 22:34:14
C#でジェネリクスを自前で用意するようなことってあるかい?
そのレベルのソフトウェアの開発を行うならC++を使え
691デフォルトの名無しさん:2006/10/13(金) 23:30:10
>>690
意味不明。
692デフォルトの名無しさん:2006/10/13(金) 23:53:37
頼むからnative吐くようにしてくれ。
693デフォルトの名無しさん:2006/10/13(金) 23:59:09
ここで言われても困る
694762: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);
}
695デフォルトの名無しさん:2006/10/14(土) 09:16:05
>>692
実行直前にJITでnativeにコンパイルされるし。
なんなら、インストール時にコンパイルしてもいいんじゃない?
696デフォルトの名無しさん:2006/10/14(土) 11:01:21
.NETなんて、重いのはGUIの仕組みだったり、
ランタイムやそれをサポートするライブラリだったりするわけで、
ネイティブにできてもあんまかわらんと思う。
697デフォルトの名無しさん:2006/10/14(土) 21:59:39
>>692
ngen通せばいいじゃん。
それにライブラリはほとんど全部DLLになってるからそれは仕方ないし。
698デフォルトの名無しさん:2006/10/16(月) 16:40:52
メインウインドウのウインドウスタイルにWS_EX_LAYEREDつけて
SetLayeredWindowAttributesで半透明とかにすると
ToolStripTextBoxの描画にごみが出るんだけど、これってバグだよね
699デフォルトの名無しさん:2006/10/16(月) 16:42:36
あ、FormのOpacityを変えても同じだった
700デフォルトの名無しさん:2006/10/16(月) 17:01:11
ReSharperスゲーな。
これいれて、やっとvs2005が完全体になったと感じた。
eclipseのJDT並のリファクタリングができる。
ま、30日間のevaluationだがな。
701デフォルトの名無しさん:2006/10/17(火) 15:45:54
TreeViewのノードのドラッグ中のエフェクトが
CopyかAllしか受け付けてくれないんですが。

これはなぜ?
702デフォルトの名無しさん:2006/10/17(火) 17:13:10
テキストエディタで、縦のグリッド線(桁基準線)を任意の桁に
複数引きたい(固定長テキストが見やすいように)のですが、そういう
フリーのエディタを探してみたら見つからなかったので、自分で
作ろうと思ったのですが、どうやったらできるんでしょうか?
TextBoxを継承してSetStyle(UserPaint, true)してOnPaintでためしに
(0,0)-(100,100)に斜め線を引いてみたのですが、キャレットがある行は線が消えてしまうし、
リサイズなどで全体が再描画されると文字が全部消えてしまうし、
文字の上に線が来ないから役に立たないしで失敗しました。

あるいは、縦線機能があるフリーのエディタがあったら教えてください。
703デフォルトの名無しさん:2006/10/17(火) 19:46:21
そういうのは継承とかじゃなくて完全に自前で書いた方が早いよ。
704デフォルトの名無しさん:2006/10/17(火) 23:58:27
単に描画順を逆にしたら良いのでは?
beseを先にするだけじゃあ?
705デフォルトの名無しさん:2006/10/18(水) 00:10:25
やって見てから言え
706デフォルトの名無しさん:2006/10/18(水) 00:34:17
所詮はTextBoxだしなあ。
一人前のエディタになるには遠過ぎる。

どの程度のエディタを作りたいのか知らないけど。
707デフォルトの名無しさん:2006/10/18(水) 00:37:00
むしろエディットする必要が在るのかどうかから考えた方がよさそうな気もする
708デフォルトの名無しさん:2006/10/18(水) 00:57:46
これ使えばいいんじゃないの?機能過多かもしれんが
http://becom.hp.infoseek.co.jp/cgi-bin/ikari/ikari.cgi
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
まともな企業なら、顧客・消費者の信頼を大切にするよね。

積水ハウスは自ら、「在日コリアン人権協会」との関係を断ち、

いわゆる「人権団体」の実態を明らかにするべきだ。

恐喝や脅しを受けているのなら、それも公表するべきだ。
710デフォルトの名無しさん:2006/10/19(木) 08:37:47
構造体定義すると「メンバが初期化されない」という警告がでるので
コンストラクタ定義して0とかnull代入しとこうと思ったら今度は
「構造体には引数なしのコンストラクタは定義できない」エラー。
どうすればこの警告消せる?
711デフォルトの名無しさん:2006/10/19(木) 08:50:44
Size.Empy みたいにするとか
712702:2006/10/19(木) 10:02:09
要件としては、メモ帳に縦線機能が付いてれば十分です。
怒IKARIとか、CSV/固定長エディタはいくつか見てみたんですが、こういう
セル編集タイプのエディタだと今回はだめなんです。
というのも、こともあろうにレコード長がそろっていない固定長テキストを
送ってくる人(プログラム)がいて、そんなデータの確認とか修正も
しなきゃいけないので、どこがずれてるとかいうのは機械で判別できないし、
とりあえず縦線だけ表示してあとは人手でいじりたいのです。
(そいつを問い詰めろとかバグ直せとか、それもありますが)

>>703
自前で引いたほうが早いというのは、どうやるんでしょう?
713デフォルトの名無しさん:2006/10/19(木) 10:03:06
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;
    }
}
714デフォルトの名無しさん:2006/10/19(木) 10:03:46
お、static が抜けていた
715デフォルトの名無しさん:2006/10/19(木) 10:15:52
警告出さないのが目的なら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

というのもあり。
716デフォルトの名無しさん:2006/10/19(木) 10:33:29
>>711、713
引数なしのコンストラクタを使う限り#pragma使わないと警告は消えないのか。。
引数なしコンストラクタが定義できない意味がわからないな。
717デフォルトの名無しさん:2006/10/19(木) 10:55:08
定義しなくても使えるだろに
718デフォルトの名無しさん:2006/10/19(木) 10:57:20
なんでわざわざダミーとか作るの…
さらにEmptyとかのメンバならメンバ定義だけで勝手に初期化してくれるし
719デフォルトの名無しさん:2006/10/19(木) 10:59:36
なんで警告出るかっていうと
構造体のデフォルトの初期化は
全部ゼロ埋めがお約束だから
余計なことすんなってこと
720デフォルトの名無しさん:2006/10/19(木) 11:18:56
>>719
余計なことって何だ?

struct Sample {
  public int A, B, C;
}
static void Main()
{
  Sample s = new Sample();
  Console.WriteLine(s.A);
}

これだけで「Sample.Aは割り当てられません。常に規定値0を使用します。」
って警告がメンバの数だけ出るんだが。
721デフォルトの名無しさん:2006/10/19(木) 11:50:06
>>712
線を引くトコだけやるのではなく、
キャラクタやキャレット、編集選択その他を全て自前でやるということ。
722デフォルトの名無しさん:2006/10/19(木) 12:01:37
おお?
正直すまんかった
723デフォルトの名無しさん:2006/10/19(木) 12:39:50
>>717
使えるけどワーニングいっぱい出てうっとおしいんだYO!
クラスのときは
class a{
  int i=0;
  int j
  a(){ j = 0; }
}
とかできんのに構造体はどないなっとんねん
724デフォルトの名無しさん:2006/10/19(木) 12:51:30
構造体は値型だから暗黙で引数無しのコンストラクタが定義されてるからなあ。
でも、なんで警告出すんだろ?
725デフォルトの名無しさん:2006/10/19(木) 16:25:52
やっぱりpragmaだろうな…
726デフォルトの名無しさん:2006/10/19(木) 17:03:10
listviewでLabelEditによる編集後をイベントとして取りたいのですがAfterLabelEditだとListviewのitemに
変更を加える前にイベントが発生してしまうようです。Listviewのアイテムに反映された後にイベントを
取るにはどうしたら良いのでしょうか?。
727デフォルトの名無しさん:2006/10/19(木) 19:49:34
ListView継承してWndProcオーバーライド、
メッセージごにょごにょで独自イベント実装

でいけそうな希ガス
728デフォルトの名無しさん:2006/10/19(木) 20:15:30
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;
}
729デフォルトの名無しさん:2006/10/19(木) 20:19:05
おっと。

× if( nmhdrPtr1.code == -176 )
○ if( nmhdrPtr1.code == -176 || nmhdrPtr1.code == -106 )
730デフォルトの名無しさん:2006/10/19(木) 20:32:29
>>716
値型は名前通り値なんで、引数無しというのは不自然だと感じないか?
int i = new int();
とか凄く不自然に感じないか?
731デフォルトの名無しさん:2006/10/19(木) 21:41:08
>>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個まで
734デフォルトの名無しさん:2006/10/20(金) 15:43:07
>>732
残念ながら、そういうこと
735726:2006/10/20(金) 19:52:15
>>727-729
ありがとうございます。
色々と試してみるのですが上手く拾えず・・・。
メモっておいて他の事をしながら閃いたら再チャレンジしてみます。
736デフォルトの名無しさん:2006/10/20(金) 21:19:34
>>730
それは全然おもわない
737デフォルトの名無しさん:2006/10/21(土) 11:50:58
クリップボードを監視したいのですが上手く拾えません。
何処が間違えているのかご指導ください。

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);
}
}
}
}
738デフォルトの名無しさん:2006/10/21(土) 11:55:43
>>737
途中にモーダルなUI挟むと危ないんじゃね?
ついでにメッセージの処理サッパリしてないよ?
739デフォルトの名無しさん:2006/10/21(土) 23:20:19
その前にクリップボードチェインに登録してないんじゃないのか
即、ググルようにw
740デフォルトの名無しさん:2006/10/21(土) 23:31:15
VistaのExplorerで、WordやExcelやらのプレビューが出来るが。
あれはどうやれば対応出来るんだろ?
741デフォルトの名無しさん:2006/10/21(土) 23:41:36
>>740
http://tricklib.com/cxx/ex/calligrapher/
こんなヤツのこと?
742デフォルトの名無しさん:2006/10/21(土) 23:56:12
それ。ありがとう。
てか、C#で組むのまんどくさそう。
743732:2006/10/22(日) 06:25:40
>>734
やっぱりそうですか。
おとなしくXmlDocumentを諦めることにしました。
ありがとうございました。
744デフォルトの名無しさん:2006/10/22(日) 07:16:11
FileSystemWatcherでエクスプローラーのようなツリービュー作ってるんですが。
監視してるフォルダが使用中になってます。
ドラッグドロップでフォルダの移動等をすると、ファイルが入ってるから移動できないとか
ファイルが使用中とかのメッセージボックスが出てきます。

どうにかなりませんかね。
745デフォルトの名無しさん:2006/10/22(日) 07:38:08
再現しねぇなぁ
746デフォルトの名無しさん:2006/10/22(日) 08:34:19
3階層のフォルダまでは移動できるんですが、
それ以上になるとエラーで止まるんですよね。
監視をやめると普通に動くという。

監視はルートだけにしたほうがええんかなぁ。
747デフォルトの名無しさん:2006/10/22(日) 08:40:12
>>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で呼ばれる関数が実行されてしまいます。
749デフォルトの名無しさん:2006/10/22(日) 12:07:43
きみのレスにあるキーワード使ってぐぐったら即見つかった
750デフォルトの名無しさん:2006/10/22(日) 12:11:14
>>744
俺はあきらめましたが何か
751748:2006/10/22(日) 12:42:44
いろんな単語を組み合わせてググったら見つかりましたorz
752デフォルトの名無しさん:2006/10/22(日) 15:56:15
>>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して対処しました。

コードがどんどん汚くなってきた。
755デフォルトの名無しさん:2006/10/22(日) 22:46:36
ここらで一本リバースエンジニアリング
756デフォルトの名無しさん:2006/10/23(月) 15:22:23
すまんです。昔から議論になってるとこだとは思うんですが、多重継承ができないことによるインターフェースでの継承で実装がめんどくさいことについて意見ください。
自分はC++でダイヤモンド継承以外の多重継承はよく使っていました。そうすることでいろいろな場面に対応しうるクラスを実装の手間を省きながら実装できるからです。
C#ではもちろんできません。皆さんはどうしてるんでしょう?

1.画面クラスでかつ構造がTreeNodeであるようなものを実装するとき多重継承的にしたい。
2.インターフェースでやって実装をImplementクラスに移して委譲しようとすると継承するすべてのクラスで対応しないといけないためめんどくさい。

意見くだされ。
757デフォルトの名無しさん:2006/10/23(月) 15:56:31
>>756
C++ の時と同じ感覚で C# での設計を行わない
758デフォルトの名無しさん:2006/10/23(月) 16:00:21
>>756
漏れなら1みたいなものはそもそも多重継承せずに、TreeNodeはプロパティで公開する。
2は確かに面倒だけど、漏れの場合大量のインタフェイスの実装が必要な場面ってCOM
オブジクェクト作る時くらいだから、そこだけ ATL/C++ でやってます。
759デフォルトの名無しさん:2006/10/23(月) 16:11:59
>>757 どうすべきかよくわからんです・・・(・ω・)
>>758 今想定してるのは画面のパネルでかつ入れ子の画面アイテムを持つようなものなんですが、そのばあいTreeNodeのプロパティは何を指すんでしょう?
Widget widget;
widget=widget.TreeNode.NextSibilingItem();
見たいな感じということ?インプリメントクラスのイメージ?
760デフォルトの名無しさん:2006/10/23(月) 16:36:29
>>759
例えば System.Windows.Forms.Panel だと、入れ子になった Control は Controls プロパティに入っている。
そういう話じゃなくて?

あと、コードのコピペを嫌うのなら、
1: アスペクト指向などを使って、コードを織り込む
2: Java の AdapterClass みたいなのを用意し、それを継承した内部クラスを作る
とか。

ついでに言うと、何に困っているのか分からんのです (;´・ω・`)
761デフォルトの名無しさん:2006/10/23(月) 16:57:12
>>760 とりあえずWindowsFormとは関係ない話の独自実装なんですが、
Widgetが入れ子で別のWidgetを持ってる可能性があります。でのそのデータ構造はTreeとして扱おうとしています。
インスタンスのwidgetは描画などの際にはWidget型として、トラバースする際にはTreeNode<Widget>として扱われます。
これは一例なんですが、いずれにしてもいわゆる多重継承とかMixinを使いたくなるときがありますよね?
ある役割のクラスであるが同時にほかの役割も果たすようなものです。そういうのをインタフェースで定義するのはいいけれど実装がめんどくさいよねってことです。
C++なら実装継承できていたものをC#ではできない。ならば設計を変えるか実装方法の改良をするか。おのおのでいい方法がないかと意見を聞いてみたかったんです。

762デフォルトの名無しさん:2006/10/23(月) 17:08:24
>>761
mix-in が出来ると便利なのは漏れも C++ 使いなので大変よくわかるけど、
その例では全く mix-in の必要性を感じない。

class WidgetA : Widget
{
 public WidgetList Children { ... }
 ...
}
としか設計しようがないような気すらする(漏れは頭が固いから)。
昔漏れの知り合いが、Rectangle を派生させて Window を作っていたのを思い出した。

C# では機能の追加は、mixinではなく委譲とdelegateでのコールバック(orイベント)で
実現するのが良いと思う。
763デフォルトの名無しさん:2006/10/23(月) 17:12:40
>C# では機能の追加は、mixinではなく委譲とdelegateでのコールバック(orイベント)で
>実現するのが良いと思う。

蛇足気味に説明を追加。
上の例では、コールバック等を使ってWidgetA が自分の子の WidgetList のobserverになるという意味。
内容への変更などを監視するために(もしそうしたいなら、だけれども)。
764761:2006/10/23(月) 17:14:45
>>762
すまんです。例が悪いのでこの例の場合というのははずしておいてください。
自分のイメージではクラスの継承にしろインタフェースの継承にしろIsAのために行っているので機能追加のためという意識は低いです。
そうする必要があるときに実装のめんどくささをどうしようかというのを聞いてみたかったんです。
765デフォルトの名無しさん:2006/10/23(月) 17:48:58
集約
766761:2006/10/23(月) 18:10:13
>>765
IsAにつかえません。
767デフォルトの名無しさん:2006/10/23(月) 18:13:45
contextMenuStripで選択されたアイテムのテキストを収得したいのですが、どうしたら良いでしょうか?
768デフォルトの名無しさん:2006/10/23(月) 18:15:51
逆に考えるんだ。is-a を使わないようにすれば良い
……正直、is-a 継承を多用することってあまり無い希ガス
769デフォルトの名無しさん:2006/10/23(月) 18:23:21
>>768
無いというか無くそうとされたというかそんな感じのほうが。

というか印象がもうC++脳なのでばっさり忘れちゃってください。
かつての自分への自戒も込めていうけども。
.NETってオブジェクトがどうとかJavaっぽいとかいわれてるけど
本質はコンポーネントに特化したある意味Crazyな実装なので。

ちなみに、Mix-inは2.0だとジェネレータとpartialでやろうと
している人はいます。
770デフォルトの名無しさん:2006/10/23(月) 19:06:51
>>768 んーWidgetでかつSerializableなものとかIWdgetでありかつISerializableってかんじで組んでたんですが・・・(・ω・)
>>769 たすかに。けんどそげなこといわれてもWidgetでかつSerializableなものはどうすればいいですだ。
VisitorとAdapter組み合わせればいけないこともないけれどイヤンです。
771デフォルトの名無しさん:2006/10/23(月) 19:34:14
>>770
??
IWdget と ISerializable を両方とも継承すればいいのでは?
772デフォルトの名無しさん:2006/10/23(月) 19:42:38
>>771 そうすればいいけど、実装コードがめんどくさいですよねってことです。
インプリメントクラス作って、委譲コードを継承クラス全部に書かないといけない。
>>769正直ジェネレータっぽいのを作らないとだめ層です。
773デフォルトの名無しさん:2006/10/23(月) 19:43:26
>>772
ヒント:C++ で書けばよくね?
774デフォルトの名無しさん:2006/10/23(月) 19:56:39
C++だろGUIライブラリがしょぼいから嫌
775デフォルトの名無しさん:2006/10/23(月) 20:02:41
めんどくさいからC++を使うとか本末転倒だろ
776デフォルトの名無しさん:2006/10/23(月) 20:11:58
C++/CLIでかくならいいかもしれないけど、いまだとマネージクラスを多重継承できないとか何かあるんだっけ?
そっちはそっちでまた別のところではまりそうな気がする。
777デフォルトの名無しさん:2006/10/23(月) 20:30:08
つかさ、継承自体必要なくね?
ポトペタで作れちゃうよね
778デフォルトの名無しさん:2006/10/23(月) 20:32:09
class Form1 : Form // <-注目
779デフォルトの名無しさん:2006/10/23(月) 20:35:46
っえ、それって継承してるんですか?
てっきりリネームしてるだけかと思ってた
780デフォルトの名無しさん:2006/10/23(月) 21:48:57
>>767
選択ってポイントされてるという意味か?
ループで回して子をのSelectedを調べる
781デフォルトの名無しさん:2006/10/23(月) 21:55:57
今までVB6.0しかやったことがありません。
これからC#(Visual C#2005 Express Edition )を始めるのですが、1から始めるC#のおすすめ本かHPってありますか?
プロジェクトの作り方から解説してある方が助かります。
782デフォルトの名無しさん:2006/10/23(月) 22:00:03
プロジェクトの作り方という表現に隔世の感を覚える Hello, world から始めた年寄り
783デフォルトの名無しさん:2006/10/23(月) 22:04:20
>>781
ふらっとスレのテンプレにいろいろ

C#は触るより言語から先に覚えた方が速いと思う
784デフォルトの名無しさん:2006/10/23(月) 22:07:46
785デフォルトの名無しさん:2006/10/23(月) 22:08:42
>>780
カーソルを合わせた時ではなくてクリックされたアイテムのテキストを収得したいのです。
アイテムはリロードの数字で1,3,5,10とかなので1つ1つにイベントを設けるのではなく
まとめて処理したいと考えました。
786デフォルトの名無しさん:2006/10/23(月) 22:12:53
sender が ToolStripMenuItem じゃなかったっけ
787デフォルトの名無しさん:2006/10/23(月) 22:15:58
>>785
senderから探るのは無理。
汚いコードで解決するしかないな。
788デフォルトの名無しさん:2006/10/23(月) 22:17:05
>>786
ToolStripに変換して悩んでいました
ありがとうございます
789デフォルトの名無しさん:2006/10/23(月) 22:19:18
ToolStripMenuItem a = (ToolStripMenuItem)sender;
MessageBox.Show(a.Text);

でいけました

senderは色々なものに変換できるのだと知りました
790デフォルトの名無しさん:2006/10/23(月) 22:21:38
別に色々なものに変換できるわけではないが
791デフォルトの名無しさん:2006/10/23(月) 22:27:09
>>781
私は実際に読んでないけど、立ち読みして2005に対応してたら
買ってみたら?

http://www.amazon.co.jp/gp/product/4756141781/
http://www.amazon.co.jp/gp/product/475614179X/
792デフォルトの名無しさん:2006/10/23(月) 22:50:04
そこまで、Is-Aにしようとする必要ってあるんだっけ?
わざわざ委譲するコード書きまくるなら
入れ物にそのままインタフェースでプロパティとして、公開させれば楽じゃないの?
class AdapterForIsA{
  public ISerializable Data;
  public IWidget Widget;
}
private 継承はあったらいいなとは思うけど・・
793デフォルトの名無しさん:2006/10/23(月) 23:27:52
そろそろスレ違いになるので放置。
794デフォルトの名無しさん:2006/10/23(月) 23:44:24
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);
    }
}
どなたか経験がある方はアドバイスを頂きたいです。よろしくお願いします。
795デフォルトの名無しさん:2006/10/24(火) 00:07:22
>>794
SHAppBarMessage を外しても再現するかどうか確認してください
その後、 e.Location の値を MessageBox.Show でも使って確認してください
796デフォルトの名無しさん:2006/10/24(火) 00:19:06
>>795
SHAppBarMessage()を適用しなければ、ContextMenuStripは
マウスクリック位置に表示されます。
797デフォルトの名無しさん:2006/10/24(火) 00:27:13
ウインドウだから重ならないようにしてくれてるんじゃ?
ContextMenuStripじゃなくてContextMenuを使うとか
798デフォルトの名無しさん:2006/10/24(火) 01:44:42
>>797
確かにマウスクリックの位置に表示されました。
ildasmしてみると、ContextMenuStripはメニューの動作を再現したコントロールで
ある一方、ContextMenuはレガシーなメニューなんですね。ContextMenuStripは
オーナードローメニューであるとばかり思っていました。道理で勝手に動かされる
はずでした。しかしそうするとContextMenuStripの恩恵は全く受けられないことに
なってしまうわけですね…悩みます。
何はともあれ、レスを下さった皆さんありがとうございました。
799デフォルトの名無しさん:2006/10/24(火) 11:19:00
>>792
Widgetのツリーをそのままシリアライズさせたいときとかさらにほかの処理も絡んでたりすると、Adapterからめるとそれはそれでどこかで破綻しそうな希ガス。
800デフォルトの名無しさん:2006/10/24(火) 11:39:05
こういうのっておまいら的にどうよ。
public class TreeNode<Key, Node> where Node : TreeNode<Key, Node>, new() {
・・・・
}

801デフォルトの名無しさん:2006/10/24(火) 12:11:40
すみません。質問させてください。
Edyセンターとの通信のことで教えてください。
ECCLPro.dllをC#で動かしたいんですが
仮想WindowにメッセージをPostしてそのレスポンスが取れません。
どのようにしたらうまく取れるか教えてください。
802デフォルトの名無しさん:2006/10/24(火) 12:46:37
なぁインターフェースを明示的に実装(IBase.ExecOrder(){}みたいなやつ)するとなんでpublicつけると文句言われるの?
803デフォルトの名無しさん:2006/10/24(火) 13:17:14
>>802
どうせpublicだからでは?
804デフォルトの名無しさん:2006/10/24(火) 13:19:18
普通のインタフェースの実装もpublicでpublicつけんかゴラァっていわれるのに・・・(・ω・)
805デフォルトの名無しさん:2006/10/24(火) 15:32:35
MessageBox.Show(comboBox1.SelectedItem.ToString());

これって
MessageBox.Show(comboBox1.SelectedItem);
としたら、なぜだめなんですか?
806デフォルトの名無しさん:2006/10/24(火) 16:01:49
>>805
ComboBox.SelectedItemはObjectを返して、
MessegeBox.Show()にはObjectを引数に取るオーバーロードがないから。
807802:2006/10/24(火) 17:13:24
明示的に実装したインターフェースをそのクラス内部から呼び出すにはどうしたらいいんでせう・・・
キャストしないと無理?
808デフォルトの名無しさん:2006/10/24(火) 17:25:43
インターフェースを明示的に実装とは何ですか?
809デフォルトの名無しさん:2006/10/24(火) 17:33:06
インターフェイスを呼び出すとは何ですか?
810デフォルトの名無しさん:2006/10/24(火) 17:33:09
>>808
実装MethodにIntarfaseName.が付くんですぅ><
811808:2006/10/24(火) 17:33:57
812808:2006/10/24(火) 17:36:58
インターフェース名を明示したって事だな。
明示する理由が分かった。
これpublicにするとまずいだろ
813デフォルトの名無しさん:2006/10/24(火) 17:42:40
>>812 なんで?
814デフォルトの名無しさん:2006/10/24(火) 17:44:09
>>810>>807
つい、やってしまいますたwごめんね(はぁと
815デフォルトの名無しさん:2006/10/24(火) 18:32:43
ttp://msdn2.microsoft.com/ja-jp/library/ms229034.aspx


積極的な理由がない場合は、インターフェイス メンバの明示的な実装を避けます。
明示的な実装について理解するには、高度な専門知識が必要です。
たとえば、明示的に実装したメンバはそのシグネチャがプライベートであっても
パブリックに呼び出すことができることを知らない開発者が大勢います。
シグネチャがプライベートであるため、明示的に実装されたメンバは、
パブリックに参照できるメンバのリストには表示されません。また、メンバを明示的に
実装すると、不必要に値型がボックス化される原因となることもあります。

816デフォルトの名無しさん:2006/10/24(火) 19:35:58
public void Method() { ((IInterfaceA)this).Method(); }
void IInterfaceA.Method(){}
void IInterfaceB.Method(){}

こういうのはいいんだっけ
817デフォルトの名無しさん:2006/10/24(火) 22:55:47
Generics で値型を使った場合 (Point<int, int> みたいに)
boxing/unboxing が行われるコードが生成されるの?
818デフォルトの名無しさん:2006/10/24(火) 23:03:20
意味が分からん。
行われる時は行われるし行われない時は行われないだろ。
819デフォルトの名無しさん:2006/10/24(火) 23:13:27
>>817
http://msdn2.microsoft.com/ja-jp/library/ms172194.aspx
>ジェネリック コレクション型の利点は、タイプ セーフだけではありません。
>ジェネリック コレクションでは、値型をボックス化する必要がないため、
>一般に、値型の格納と操作のパフォーマンスが向上します。
Javaとは違うよ
820デフォルトの名無しさん:2006/10/25(水) 00:04:35
すいませんウェブサービスを参照している画面を継承して
画面をつくったら、
アセンブリロケーションが変な場所になっていて
UIデザイン画面読み込み時にApp.Configがありませんとエラーが出ました。

実際ビルドすると普通にとおってローカルで動いています。
デザイン時のこのエラーをなくすにはどうしたらいいのでしょうか?

ウェブサービスを参照している画面を継承元にするとやはりまずい?

821デフォルトの名無しさん:2006/10/25(水) 01:21:51
hogehoge.Designer.csを自分で編集して参照してるとこを書き換えればいいんでないの?
822デフォルトの名無しさん:2006/10/25(水) 10:09:09
>>821
すいません、参照しているところ、、、って?
Designerにそんなことかいてあるのでしょうか?
探してみます!
823デフォルトの名無しさん:2006/10/25(水) 22:52:01
NUnitの質問もここでいいですかね?
NUnit2を使ってテストしたいのですが
同期メソッドのテストは出来たのですが
非同期メソッドのテストの仕方がわかりません
デリゲートにコールバックが返ってきて値をチェックして成功を判断したいのです

誰かやり方を教えてください
824デフォルトの名無しさん:2006/10/25(水) 23:10:24
WaitHandleとか使って待つとか
適当にSleep入れてコールバック側でいつもどおりチェックする
とりあえず、AutoResetEventを使用しとけば?
825デフォルトの名無しさん:2006/10/25(水) 23:20:14

 .NETの学習は時間の無駄です

826デフォルトの名無しさん:2006/10/25(水) 23:27:23

 .NETの学習は時間の無駄です
827デフォルトの名無しさん:2006/10/25(水) 23:38:36

 .NETの学習は時間の無駄です
828デフォルトの名無しさん:2006/10/25(水) 23:46:03

 .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();
830デフォルトの名無しさん:2006/10/25(水) 23:55:47
C.text = ( int.Parse(a.Text.Trim()) + int.Parse(b.Text.Trim())).ToString();
831デフォルトの名無しさん:2006/10/25(水) 23:55:58
>>819
thx.
ということは、代入時の動作が値型と参照型で違うけれども、
Generic なクラスを書くときは、そのへんを考慮しないといけないってこと?
832デフォルトの名無しさん:2006/10/25(水) 23:57:01
>>829
みたいな質問って.NETの弊害じゃないかな?
アセンブラやCからプログラムを始めたような人なら絶対しない質問だよね

ポトペタ環境で糞低レベルなやつの質問が正直うぜー

VC6のような初心者にいきなり高い壁を見せ付けて脱落させる環境が好きだったのに・・・
833デフォルトの名無しさん:2006/10/25(水) 23:58:36
代入とコレクションへの追加をごっちゃにしてないか?
834デフォルトの名無しさん:2006/10/25(水) 23:58:52
>>832
('A`) プ
835デフォルトの名無しさん:2006/10/25(水) 23:59:43
>>832
C から始めた人なら char * を足し合わせるんじゃないか
836デフォルトの名無しさん:2006/10/26(木) 00:00:30
そんやついねーよ
837デフォルトの名無しさん:2006/10/26(木) 00:00:56

 .NETの学習は時間の無駄です
838デフォルトの名無しさん:2006/10/26(木) 00:01:28
>>833
コピーが追加されるか、そのものへの参照が追加されるのかは実質的に
区別が必要だと思うけど・・・

でもまぁそれは Generics なクラスを書くときに限らず、
値型を用いる場合一般について言えることのような気がする。
839デフォルトの名無しさん:2006/10/26(木) 00:18:29

 .NETの学習は時間の無駄です
840デフォルトの名無しさん:2006/10/26(木) 00:21:42
>>839
お前のほうが(ry
841デフォルトの名無しさん:2006/10/26(木) 00:22:42
スクリプトにレスしないように。
842デフォルトの名無しさん:2006/10/26(木) 01:17:40
  
 .NETの学習は時間の無駄です
   
843デフォルトの名無しさん:2006/10/26(木) 01:21:47
スクリプトご苦労w

手伝ってやろうw

 .NETの学習は時間の無駄です

そうは思わんがw
844829:2006/10/26(木) 01:24:56
レスありがとう。おいらVB坊ですが、C#を昨日始めたところなんで、最初からつまずきました。
845デフォルトの名無しさん:2006/10/26(木) 01:34:41
>>844
C#は自動でstring → intなどの型変換しないのだ。
c++やjavaとかもです。

自動で型変換すると不都合が起こったり、バグが分かりづらくなりますので。。
846デフォルトの名無しさん:2006/10/26(木) 01:39:56
えっ?
847デフォルトの名無しさん:2006/10/26(木) 01:46:05
>>845
(;´Д`)
848デフォルトの名無しさん:2006/10/26(木) 02:20:27
スレの空気が凍ったのが見えた
849デフォルトの名無しさん:2006/10/26(木) 09:27:17
ホワイトアルバムのスタンド使いが現れたのか
850デフォルトの名無しさん:2006/10/26(木) 09:51:19
エターナルフォースブリザード使いがいるのはこのスレですか?
851デフォルトの名無しさん:2006/10/26(木) 11:05:01
最近Win32API直接呼び出す必要があるプログラムかいてんだけど
ポインタ演算が整数で足し算しなきゃ駄目だからCよりえげつない事になるな
p++って書けばいいとこ
new IntPtr(base.ToInt32()+Marshal.Sizeof(..))
852デフォルトの名無しさん:2006/10/26(木) 11:26:19
C#関連のコミュニティって言うとどこらへんよさげでしょうか?
VSUG,MSDNフォーラムぐらいしかわからんです。
メーリングリストや海外の掲示板でもOKです。
853デフォルトの名無しさん:2006/10/26(木) 17:30:00
>>851
unsafe使えばいいじゃない
854デフォルトの名無しさん:2006/10/27(金) 01:19:21
>>844
本来ならVB(6.0)でもそんなことやっちゃダメなんだがな。
とにかくデータ型とその演算方法をそろえることだ。
どう見ても 文字型+文字型=整数型 っておかしいだろ?
がんばれ。
855デフォルトの名無しさん:2006/10/27(金) 01:23:01
>>845-850の流れがよくわからない俺に、どういうことなのか説明してくれないか。
856デフォルトの名無しさん:2006/10/27(金) 01:24:07
VBってあれでコンパイラ通るの・・・?
857デフォルトの名無しさん:2006/10/27(金) 01:41:31
>>855
『自動で型変換が行われることはない』 が誤り
858デフォルトの名無しさん:2006/10/27(金) 03:28:00
>>856
さすがに変数名とコントロール名がかぶってるから通らない。
でも
 Dim x As Integer = A.Text
 Dim y As Integer = B.Text
 C.Text = x + y
なんてのは通っちゃう。もちろん実行時に数値変換できない文字列だったら例外発生。
オプションでコンパイル時に型チェックするようには出来るが規定値はOff。
859デフォルトの名無しさん:2006/10/27(金) 03:44:19
string→intの方変換が自動で行われることなんてあんのか?
860デフォルトの名無しさん:2006/10/27(金) 03:50:29
stringっつーかobject
861デフォルトの名無しさん:2006/10/27(金) 04:22:14
おそろしい言語だな
862デフォルトの名無しさん:2006/10/27(金) 04:26:45
C#的に言うと int i = "123"; と書くとコンパイラが勝手に
int i = Convert.ToInt32("123"); と補完する感じ。
実際使われるのはVB独自の変換クラスのメソッドだけど。
863デフォルトの名無しさん:2006/10/27(金) 07:35:18
>>937
どの文字かまで追ってないけどXMLの禁則文字が入ってるだけじゃね?
><&は< > &に置き換え

あぁ、タグ名かも知れんな・・・
"XML 禁則"でぐぐってくだちぃ
864863:2006/10/27(金) 07:36:21
誤爆スマソ
865デフォルトの名無しさん:2006/10/27(金) 08:16:39
>C#は自動でstring → intなどの型変換しないのだ。
これのどこがまちがってんのか教えてくれ。
866デフォルトの名無しさん:2006/10/27(金) 08:20:55
え、まじ?
自動変換してくれるとは知らなかったぞ
867デフォルトの名無しさん:2006/10/27(金) 08:23:33
漏れもちゃんと変換書いてたお
サンプルキボン
868デフォルトの名無しさん:2006/10/27(金) 09:31:41
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 ファイルにシリアライズできますか?
871デフォルトの名無しさん:2006/10/27(金) 12:41:57
XmlSerialization ネームスペースにあるアトリビュートを眺めてみろ
872デフォルトの名無しさん:2006/10/27(金) 12:43:02
手順を踏めば解決できそう。

それより保存クラス作ったほうがいいんじゃないか?
873デフォルトの名無しさん:2006/10/27(金) 12:56:51
>>865
>C#は自動で(string → intなどの)型変換しないのだ。
俺は↑と読んだ。
874デフォルトの名無しさん:2006/10/27(金) 12:57:57
>>871
どもです。眺めてみたけど、どれでしょう?
xmlns などを変更してみたがだめでした。orz
875デフォルトの名無しさん:2006/10/27(金) 13:44:29
結局違ってないんだな?
876デフォルトの名無しさん:2006/10/27(金) 13:58:56
こう読んだらどうだ?

 C# は自動で string (自動で何でもstringにする、の意?)
 → int などの型変換はしないのだ (int にはしてくれない、の意?)。

いや意味は不明だが。
877デフォルトの名無しさん:2006/10/27(金) 14:13:18
「C# は string → int の型変換は自動で行われませんよ」 って意味なんだろうけど……
>>873 みたいに、括弧の中が抜け落ちて 「C# は自動で型変換しないのだ」 に読めてしまう罠( ´ー`)y-~~
878デフォルトの名無しさん:2006/10/27(金) 14:17:25
どうでもいい
879デフォルトの名無しさん:2006/10/27(金) 16:11:11
880デフォルトの名無しさん:2006/10/27(金) 17:19:09
string→intの暗黙の変換は無いだろ
int→stringはやってくれる場合もあるけど
881デフォルトの名無しさん:2006/10/27(金) 17:22:23
>int→stringはやってくれる場合もあるけど
言語仕様ではやらないよ。

あれは演算子のオーバーロードですよ。
882デフォルトの名無しさん:2006/10/27(金) 17:23:13
×string
○object
883デフォルトの名無しさん:2006/10/27(金) 17:23:16
C#ではそういうの「暗黙の変換」とは言わないでしょ
ToString()が呼ばれるだけ
884デフォルトの名無しさん:2006/10/27(金) 17:38:03
初心者が多いな
俺も変わらないけどw

初心者は
abc.Text="abc"+1;
がおkで、
abc.Text= 1+"abc";
がなぜNGなのかわからない。

ヒント:演算子オーバーロード
885デフォルトの名無しさん:2006/10/27(金) 17:40:06
>>884
両方OK
886デフォルトの名無しさん:2006/10/27(金) 17:46:34
887デフォルトの名無しさん:2006/10/27(金) 17:48:21
>>884
ついでに言うと、演算子オーバーロードではない。
言語仕様上でどうなってるかは忘れたが、文字列結合演算子 + の実体は String#Concat
888デフォルトの名無しさん:2006/10/27(金) 18:06:10
二項 + 演算子は、数値型と文字列型に対してあらかじめ定義されています。
数値型の場合、+ は 2 つのオペランドの合計を計算します。
オペランドの片方または両方が文字列型の場合は、オペランドの文字列表現が
連結されます。
889デフォルトの名無しさん:2006/10/27(金) 18:06:19
つーか、>>865 は、
「int → long とかは暗黙の型変換あるよ」って意味でもないの?

C# では、暗黙の型変換は、「整数 → より表現範囲の広い整数」か、
float → double のみ。
明示的な型変換も、組み込み型だと、object からのダウンキャストと、
整数・浮動小数点数同士の間のみ。
string との相互変換は int.Parse とかと ToString 使う。
890デフォルトの名無しさん:2006/10/27(金) 18:11:30
ところでToStringって何のためにあるの?
わざわざObjectに定義するほど重要?
891デフォルトの名無しさん:2006/10/27(金) 18:15:28
ToStringがないと上記の+演算が出来ないのでは?
892デフォルトの名無しさん:2006/10/27(金) 18:18:59
>>890
Console.Write(string format, params object[] args) とかのためでしょ。
893デフォルトの名無しさん:2006/10/27(金) 18:32:36
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 を返す場合は、空の文字列に置き換えられます。
894デフォルトの名無しさん:2006/10/27(金) 18:36:29
変に >>893 みたいな string.operator + を用意しちゃうから、
string ⇔ 数値型間の暗黙の型変換が出来るもんだと勘違いしちゃう初心者が出てくるんかな?
895デフォルトの名無しさん:2006/10/27(金) 18:54:49
高級言語で書くときにレジスタのことを考えなくてもいいように
プログラムの内容に関係ないところは気にしなくて済むようにするのが言語としてはまっとうだと思うけど
ToStringはまだ気にしておくべきところなんだろうね
+でもConsole.Writeでも、全部Tostring()明記を強制したほうがいい気がするなあ

D言語の配列連結演算子はなかなか良い設計だと思う俺
896デフォルトの名無しさん:2006/10/27(金) 18:56:48
Console.Write に ToString 明記しろって言われたちょっとめんどくさすぎるかなぁ。
文字列結合の + は明記にして欲しいけど。
897デフォルトの名無しさん:2006/10/27(金) 18:58:06
javaも似たようなもの。


15.17.1 文字列連結演算子 +
一つのオペランドの式だけが型Stringならば,実行時に文字列を生成するために,
他方のオペランドに対して文字列変換を実行する。結果は二つのオペランドの文字列を
連結して新たに作成したオブジェクト String への参照とする。
新たに作成した文字列内では,左辺オぺランドの文字が右辺オぺランドの文字に先行する。
898デフォルトの名無しさん:2006/10/27(金) 19:55:11
HP作ったり画像編集したりっていう仕事つく予定なんだけど、
どの言語重点的にやったらいいでつかね?

ちなみにいまC#中
899デフォルトの名無しさん:2006/10/27(金) 20:00:19
今C#をやってるならC#をマスターすればいいよ
C#ができればJavaもVB.NETも簡単にできるようになる
900デフォルトの名無しさん:2006/10/27(金) 20:00:23
HTML
901デフォルトの名無しさん:2006/10/27(金) 20:16:54
>899 そうですか、わかりました どうもありがとうございます
本よんでせかせかやります
902デフォルトの名無しさん:2006/10/28(土) 11:54:56
>>901
画像編集はプログラミングつーよりイラストレーターとかじゃないか?
903デフォルトの名無しさん:2006/10/28(土) 18:18:29
ランチャーを作ろうと思っています。
ドラッグ&ドロップでフルパスを取得することまではできましたが、
そのフルパスからファイルを実行させる方法はどうするのでしょうか?

904デフォルトの名無しさん:2006/10/28(土) 18:25:47
Process.Start
905デフォルトの名無しさん:2006/10/28(土) 18:54:33
>>904
ありがとうございます
906デフォルトの名無しさん:2006/10/29(日) 05:48:15
.net初心者です。

bool型の変数に対して、複数スレッドから読み書きする必要があるのですが、
lock等の排他制御を書く必要ありますでしょうか?
それとも、bool型に排他制御は必要ないでしょうか?
907デフォルトの名無しさん:2006/10/29(日) 05:53:39
>>906
static volatile bool aaa;
908206:2006/10/29(日) 06:01:46
助かりました。本当にありがとうございます。
909デフォルトの名無しさん:2006/10/29(日) 10:26:37
どういう排他制御がしたいんだよ。
読んで書く処理とかならlockいるぞ。
910デフォルトの名無しさん:2006/10/29(日) 10:41:04
どういった場合にvirtualをつけるか悩んでいます。
現状では導出されることを期待していないので仮想化していません。
ですが、導出された場合のことを考慮して仮想化しておいたほういいのでしょうか?
とりあえず、すべてのメソッド/プロパティにvirtualをつけるディメリットってありますか?

911デフォルトの名無しさん:2006/10/29(日) 10:43:42
>>910
今現在の貴方の悩みそのものがデメリットです。
導出されることになってから、vertual をつけることを考えましょう。
912デフォルトの名無しさん:2006/10/29(日) 10:51:17
1文字ミスるだけで信憑性が落ちるね・・・
913デフォルトの名無しさん:2006/10/29(日) 10:55:33
ほんとだ。すまんね。まあ、virtual あんま使ってないと言うことで。
914デフォルトの名無しさん:2006/10/29(日) 11:21:28
メソッドなどを仮想化することによるディメリットは全くありません。
よってすべてのメソッドを仮想化して何の問題もありませんよ。
915デフォルトの名無しさん:2006/10/29(日) 11:22:08
virtual付けると遅くなるよ
916デフォルトの名無しさん:2006/10/29(日) 11:23:16
それはC++での話
917デフォルトの名無しさん:2006/10/29(日) 11:32:55
インライン展開されなくなる
918デフォルトの名無しさん:2006/10/29(日) 11:52:06
むしろvirtualしないデメリットのほうが大きい
919デフォルトの名無しさん:2006/10/29(日) 12:00:11
920デフォルトの名無しさん:2006/10/29(日) 12:21:37
おまえらそんなレベルの性能差が本当に問題になるようなことすんのかよ。
921デフォルトの名無しさん:2006/10/29(日) 13:24:55
ディスプレイのオンオフを制御するやり方を教えてください
922デフォルトの名無しさん:2006/10/29(日) 13:34:38
>>921
ディスプレイ?
その”ディスプレイ”とやらの”オンオフ”に関して、プログラミングインタフェイスが付いていれば可能
それくらい自分で調べろ
923デフォルトの名無しさん:2006/10/29(日) 13:39:27
>>922
電源管理のことだろ
知らんのに煽るなボケ
924デフォルトの名無しさん:2006/10/29(日) 16:52:34
>>922
つっこまれると思いましたが、なんて書いていいかわからなかったので、
こう書いてみました。

>>923
電源管理で調べてみます。サンクス
925デフォルトの名無しさん:2006/10/29(日) 17:11:58
Javaは全部強制virtual
だからvirtualをつけるのが正しい
926デフォルトの名無しさん:2006/10/29(日) 17:15:16
>>925
なんでjavaにあわせる必要がある?
927デフォルトの名無しさん:2006/10/29(日) 17:32:58
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付けてくれない?
[スーパークラス担当者](っ´▽`)っ ダ・メ♥
このようにオーバーライドをするためには両者の合意が必要
→バグ抑止
929デフォルトの名無しさん:2006/10/29(日) 17:56:12
C#にはC/C++のようなヘッダファイルやexternの概念はないの?
使いにくいでし

あい
930デフォルトの名無しさん:2006/10/29(日) 18:00:49
extern はあるが意味合いがちがう
931デフォルトの名無しさん:2006/10/29(日) 18:01:02
>>929
それは慣れの問題だね。使い慣れてるほうがわかりやすいといった程度の話だ。
もっともC++/CLIは中途半端に混ざってるからあれは混乱するかもしれない。
932デフォルトの名無しさん:2006/10/29(日) 18:04:41
>>929
じゃあC++スレに篭っててくだちぃ
933デフォルトの名無しさん:2006/10/29(日) 18:09:52
仕様が上がっていないときに
ソースレベルでどういう関数が使えるかチェックするとき
Cだとヘッダファイルのぞき込んでexternされてるプロトタイプをざっと眺められるから
便利なんだけどなあ
C#になるとソースをみてpublicだのclassにインラインされたコードが
ごちゃごちゃと醜いったらありゃしない
なんとかしてほしいなあ
934デフォルトの名無しさん:2006/10/29(日) 18:11:37
>>933
Cスレに篭っててくだちぃ
935デフォルトの名無しさん:2006/10/29(日) 18:12:12
醜いコードを書いてるということは分かった
936側近中の側近 ◆0351148456 :2006/10/29(日) 18:14:30
>>933
(っ´▽`)っ
VS2005ならクラス図を自動作成してくれるよ。
937デフォルトの名無しさん:2006/10/29(日) 18:20:26
>>933
クラスビューなり、ドロップダウンするなんかだったり、
オブジェクトブラウザだったり見ればいいのに。
938デフォルトの名無しさん:2006/10/29(日) 18:25:56
右クリック→アウトライン→定義に縮小
939デフォルトの名無しさん:2006/10/29(日) 18:26:34
>>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は最適なソリューションを提供します。
942デフォルトの名無しさん:2006/10/29(日) 18:56:02
>>941
NUitのっけたん?
943デフォルトの名無しさん:2006/10/29(日) 19:11:35
nのけたん?
944デフォルトの名無しさん:2006/10/29(日) 19:12:48
正直単体テスト機能ぐらい下のエディションにものっけてくれと思う。
945デフォルトの名無しさん:2006/10/29(日) 19:25:15
 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()で解放させる
ことができません。
 良い解決策がないものか、皆様の御意見を仰ぎたく思います。長文失礼しました。
946デフォルトの名無しさん:2006/10/29(日) 19:32:51
>>945
コンストラクタ内、InitializeComponent() の後に
if (components == null) components = new System.ComponentModel.Container();
を追加。

……で良いんちゃう?
947デフォルトの名無しさん:2006/10/29(日) 19:45:20
>>945-946
メンバ宣言の所でnewすればいいだけじゃね?
948945:2006/10/29(日) 20:01:12
あれ…実験してみると、ただメンバとして宣言しただけでもDispose()呼ばれてますね。
私はどうやらDispose()に関して何かとてつもない誤解をしているようです。もう一度
勉強してみます。答えてくださったお二方>>946-947、ありがとうございました。
949デフォルトの名無しさん:2006/10/29(日) 20:10:58
>>948
試してみたけど確かにnewが消えるね。
950945:2006/10/29(日) 20:15:24
>>949
前から不思議だったんですが…考え始めたら気になってしまって。
実験したら実際にControlに追加していないメンバもDispose()が呼ばれるようなので、
いいことにしておこうかと思います。しかしそれなら、そもそもデザイナが追加する意味は
ないような…やっぱり気になりますね(^^;
951デフォルトの名無しさん:2006/10/29(日) 20:27:16
TimerとかContextMenuStripとか、
コンストラクタでcontainerを引数にとるやつを削除したとき、
ほかで要求してない場合消えるみたいだな
952デフォルトの名無しさん:2006/10/30(月) 02:54:11
コンボボックスのユーザコントロールを作成しています。
そのユーザコントロール上にはりつけたコンボボックスの幅を
ユーザコントロールのプロパティとして設定したいと思っています。

なので簡単にhogeWidthみたいなプロパティをつくってやって、
ユーザコントロール上にはりつけたコンボボックスの幅の値をかえられる
プロパティを作ってやりました。

やってることは単純に幅に値をセット、リターンしているだけ。

なんですが・・・・・・

デザイナでそのプロパティを設定したら
画面再読み込み時になぜか幅とかが毎回一定数プラスされた幅に変更されているのです。
たとえば100にすると116、みたいな。

プログラム内をのぞいてみても思い当たる節がなく、わけがわかりません。
つたない文章ですが、どなたが原因がわかる方、教えてください。

953945:2006/10/30(月) 03:46:41
>>951
再現しました。確かにそのようです。わざわざお手数おかけしました。
954952:2006/10/30(月) 03:47:09
すいません、自己解決しました。
イニシャライズ時にはプロパティで設定した値ではなく
初期値で表示されるので、直接値を設定するのではなく
メンバ変数に一度幅を格納してあげて、

コントロールロード時に、設定してあげるとうまくいきました。
newされた時はそりゃプロパティの設定値なんてわかんないですよね。・。
よく考えたら当たり前のことでした。

955デフォルトの名無しさん:2006/10/30(月) 04:45:48
C#で、Netコードを吐くんじゃなくて、
ネイティブコード(Windowsバイナリ)を吐けるんですか?
956デフォルトの名無しさん:2006/10/30(月) 04:51:16
>>955
ngen.exe
957デフォルトの名無しさん:2006/10/30(月) 05:19:52
>>956
どうも。これって、.Netコードをネイティブに変換みたいですね。
少し読んでみても書いてなかったんですが、変換してネイティブコード生成しても、
やっぱり.Netランタイム(CLR)は必要なんですか?
958デフォルトの名無しさん:2006/10/30(月) 05:23:29
>>957
当然。しかしランタイムもngenに掛ける事が出来る。
959デフォルトの名無しさん:2006/10/30(月) 05:34:13
なるほど。
960デフォルトの名無しさん:2006/10/30(月) 11:50:35
すいません、ちょっと質問なんですが。
フォームの中で重い処理をするのはフォームの監視ループとかの関係であまりよろしくない
のでしょうか?
フォームで重い処理をする部分のパラメータを受け取ってその処理をスレッドとして動かし
ているのですがやたらと重いです。プログラムが応答しなくなるほどに。
以前、フォーム無しでやったときはこんな状態にはならなかったのですが、どなたか原因や
解決方法を教えていただけないでしょうか?
961デフォルトの名無しさん:2006/10/30(月) 12:30:05
フォームで重い処理ってなんだよ。
フォームだろうがなかろうが重いのは重いだろうが。
どうせ処理の度に描画させてるんだろ?
962デフォルトの名無しさん:2006/10/30(月) 12:33:27
いや、リターンしないまま処理続ければメッセージを処理しなくて重い感じになりますよ。
スレッド呼び出してそれは、フォームのコントロールを使ってるとかだったりして。
963デフォルトの名無しさん:2006/10/30(月) 12:38:15
>>962
スレッドの使い方を・・・
964デフォルトの名無しさん:2006/10/30(月) 12:38:19
FillRectangleはRectangleとRectangleFを受け付けてDrawRectangleはRectangleしか受け付けないのは自分が悪いんですか?(・ω・)
965960:2006/10/30(月) 12:45:57
いや、特に描画はしていないのですが。
スレッドの使い方は
Thread mainThread = new Thread(new ThreadStart(program.Run));
mainThread.Start();
this.Enabled = false;
mainThread.Join();
という感じです。
このprogram.Runが重い処理なのですが、GUI無しならフリーズするまでは
行かないのですが何故なんでしょう。
966デフォルトの名無しさん:2006/10/30(月) 12:47:17
そこ Join で待つならスレッド作る意味ゼロじゃないか?
967デフォルトの名無しさん:2006/10/30(月) 12:49:25
>>965
というわけでスレッドの使い方を(ry
968960:2006/10/30(月) 12:54:04
>>966
確かに。他にもフォームを呼ぶ予定だったのでスレッド化したものなので
とりあえずスレッドをやめてみても何も変化無しでした。
フォ−ムを利用することによって何か別の負荷がかかることは無いんでしょうか。
969デフォルトの名無しさん:2006/10/30(月) 13:01:58
>>968
965のように計算処理に専念してしまってメッセージを処理しないUIスレッド(フォームを持つもの)があると、
他のプロセスやら何やら(主にExplorer)がウィンドウをあれこれしようとしたときにメッセージを送ったときに
待たされたりしていろいろと面倒なことが起きる。

あれこれdisableしてcancelボタンだけenableする、あるいは全部disableするなどしたのち、
Start で開始して、先方のスレッドの最後で form のメソッドを invoke して完了を通知、
そこで計算終了時のUIの設定にする、というのがいいと思う。

計算途中で時々 Progress() (←自作関数ね) とかを invoke して進行状況を UI 表示してもいいし、
適当な変数に進行状況を記録しておいてタイマーでUIに反映させるのもいいかもしれない。
970960:2006/10/30(月) 13:17:51
>>969
ありがとうございます。

>あれこれdisableしてcancelボタンだけenableする、あるいは全部disableする
this.Enabled = false;
だけでは不十分でしょうか?
971デフォルトの名無しさん:2006/10/30(月) 13:32:37
>>970
十分です。
でも長い計算はキャンセルできるようにしておくのが武士の情けというか・・・
972960:2006/10/30(月) 13:38:20
>>971
わかりました。
ありがとうございました。
973デフォルトの名無しさん:2006/10/30(月) 13:40:27
老婆心からの蛇足だが、
>先方のスレッドの最後で form のメソッドを invoke して完了を通知、

このメソッドの中で計算スレッドを Join しようとするとデッドロックなので注意。
先方のスレッドはInvoke経由でメソッドからの戻りを待っているから、完了しない。
974デフォルトの名無しさん:2006/10/30(月) 18:03:29
BackgroundWorker 超便利
975デフォルトの名無しさん:2006/10/30(月) 19:07:07
質問。

VisualStudio2005 C#でunsafeなコードやDLLを使わずにプログラムを作っているんですが、
WindowsXP自体がフリーズしてしまいます。

発生タイミングが一致せずいきなりフリーズしてしまうので
どこでおかしなことしているのか見当がつかないのです。

フリーズに至るまでには、まず自分で作ったプログラムのフォームが
フリーズします(普通は必ず文字が流れるとかして動いている)。
この時点でマウスは動くけど他のウインドウをクリックして
アクティブにしようよしてもなかなか変わらなくなって、
何回かクリックしてるとマザボのスピーカからビープ音が鳴ってOSごとフリーズ。
マウスも動かないしキーボードのNumLockも切り替わらなくなる。
でもそのPCで再生していたMP3は普通に再生されている

という状態になるのですが、何が考えられるでしょうか・・・
976デフォルトの名無しさん:2006/10/30(月) 19:10:56
>>975
ボタン押したら無限ループに突入するような WindowsApplication を作って、比較実験。
977デフォルトの名無しさん:2006/10/30(月) 19:14:21
>>975
・スレッドをどんどん作る
・メモリをどんどん確保して開放しない

このどちらかで簡単にそういう症状を起こせますよ
978デフォルトの名無しさん:2006/10/30(月) 20:19:56
・β版の.NET Frameworkでないか確認
・ウィルスチェック、ディスクチェック、メモリチェックをして、回線を外してアンチウィルス等の常在ソフトを終了してから、
1.問題が発生する最小限のソースを調べる
2.VisualStudio上の場合、そうでない場合で比較
3.DebugかReleaseかで比較
979975:2006/10/30(月) 20:29:51
みなさん、本当にありがとうございます。

>>976,977
フォームだけがフリーズするよね!多分!
なのでスレッドを作ってます。けどスレッドの中のループでスレッドを作る
とか無限にスレッドが生成されるようなことはしてないです

>>978
これが他のどのPCでも発生するからウイルス云々ではないと思います。
他の点についてはまた毎日やってみて確認してみます。

たまーにしかでないから余計に追跡しにくいんです><
980デフォルトの名無しさん:2006/10/30(月) 20:34:26
ソース晒せ
981デフォルトの名無しさん:2006/10/30(月) 20:56:01
晒せ
982デフォルトの名無しさん:2006/10/30(月) 21:08:04
>>979
976は、GUIスレッドでビジーループを回すと、CPU資源が食い尽くされて、システム全体の
GUIの反応が悪くなる/停まるってことをいってるんだが。
多分、じゃなくて試してみるよろし。
同じ症状なら、お前のプログラムでもビジーループが発生している。

ビジーループ=while(true) {}な。一応。
983デフォルトの名無しさん:2006/10/31(火) 18:22:13
次のコードを使って印刷しようとしても、ページ間の英単語のワードラップがうまくいきません。
どうしたらいいでしょうか?
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;
}
984デフォルトの名無しさん:2006/11/01(水) 00:04:13
>>983
うまくいかないって言われてもなぁ・・・
985デフォルトの名無しさん:2006/11/01(水) 00:23:40
この程度のちいさなソース見てうまく行かない点を指摘できないやつに
ようはない
986デフォルトの名無しさん:2006/11/01(水) 00:32:16
そんなお前もお呼びでない
987デフォルトの名無しさん:2006/11/01(水) 01:38:02
ああこれはだめだね
988デフォルトの名無しさん:2006/11/01(水) 01:47:02
GetTypeで得られた型にキャストするにはどうすればいいのからしらん?
989デフォルトの名無しさん:2006/11/01(水) 01:48:22
キャストは静的なものなのに動的にどうこうできるわけが無かろう
990 :2006/11/01(水) 02:10:13
テキストファイルからStreamReaderを使用し文字列を読み込んで
いるのですが、【半角カナ】がASCII文字として含まれている場合に
プログラム内部で文字化けしてしまいます。

ぐぐって、一度そのファイルをUnicodeとして保存すれば(一時的に)解決
出来る事は分かったのですが、その様に手動でやるのでは無くプログラム内部
からファイル全体(文字単位では無く)をASCII → Unicode に変更
するにはどうすれば良いですか?
991デフォルトの名無しさん:2006/11/01(水) 02:14:06
>>990
> 【半角カナ】がASCII文字として含まれている
意味が分からん。
取りあえず StreamReader のコンストラクタ調べれ。
992デフォルトの名無しさん:2006/11/01(水) 02:20:49
yahooじゃダメですか?
993990:2006/11/01(水) 02:38:34
>>991
>>990
>> 【半角カナ】がASCII文字として含まれている
>意味が分からん。
>取りあえず StreamReader のコンストラクタ調べれ。
例えば、【ABC.txt】より1行ずつデータを取得する際に
StreamReaderにて半角カナが含まれる行を読み込もうとしたところ
そのファイル(ABC.txt)がASCIIコードとして保存されているが
為に半角カナ部分が文字化けしてしまっている状態です。
(例:ア → a)

※そのファイルを開き、Unicodeとして保存すると文字化けは無くなるので
すが、プログラムで自動化させたいのです。
994デフォルトの名無しさん:2006/11/01(水) 03:09:04
>>993
StreamReaderのコンストラクタでエンコード指定できるでしょ。
995デフォルトの名無しさん:2006/11/01(水) 03:11:58
>>993
文字コードの変換は、StreamReaderで読み込んで、StreamWriterで書き出すだけ。
996デフォルトの名無しさん:2006/11/01(水) 08:00:34
asciiなのに半角カナとはこれいかに
997990:2006/11/01(水) 08:24:44

>>994,995
どうもありがとうございます!!!
助かりました。皆さんホントお詳しいですね。
私もそのスキルに近づきたいものです。
998デフォルトの名無しさん:2006/11/01(水) 15:49:27
1000とったら1000千億プレゼント
999デフォルトの名無しさん:2006/11/01(水) 15:52:41
999なら1000を他人に取られる
1000デフォルトの名無しさん:2006/11/01(水) 15:57:05
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。