[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 05/25 16:56 / Filesize : 209 KB / Number-of Response : 852
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

ふらっとC#,C♯,C#(初心者用) Part36



1 名前:デフォルトの名無しさん [2009/01/20(火) 21:47:33 ]
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

693 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:18:50 ]
C#, C♯, C#相談室 Part50
pc11.2ch.net/test/read.cgi/tech/1229661915/

埋まったけど立てられなかった。
誰か頼む。

694 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:22:33 ]
ホスト規制のためNGですた。

695 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:22:51 ]
>>693
あっちは相談室と名乗りながら、
質問の揚げ足を取って悦に浸っている常連ばかりだから嫌い

696 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:23:14 ]
>>686
Cとの比較で言うと、クロージャは「状態のある関数ポインタ」といえると思う
Xの値が欲しい時に

void Hoge(Func<int> getX){ int x = getX(); }

C#ならこう書ける。getXにはintを返す関数がなんでも入れられるしその場で作れる
Cで書くと

struct Func_int{
int (*func)(void*);
void* args;
};
void Hoge(Func_int fi)
{
int x = fi.func(fi.args);
}
こんなんだけど引数の型も作らなきゃいけないし関数はvoid*をとらなきゃいけないしで大変だ
オブジェクト指向で書くと

class Func<int> : IFunc<int>
{
int x, y;
public Func(int x, int y){ this.x = x; this.y = y; }
public int Method(){ return x + y; }
}
クロージャだと

Hoge(() => x + y);

こうだ。
これが進化だよ。

697 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:25:53 ]
>>695
でも作っとかないと、そういう人らがここに常駐されたら困る

698 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:31:25 ]
>>691
その前になんちゅうソースだコレ。

699 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:31:36 ]
>>697
心配無用
既に常駐してる

700 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:36:15 ]
まあとりあえず立てた。
C#, C♯, C#相談室 Part51
pc11.2ch.net/test/read.cgi/tech/1233757615/l50

701 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:36:42 ]
>>696
その例だと従来の方法でもStaticなメソッドを使えば
int x = Class.Method(a, b);
で代用がきくから同じことだと思うんだけど。何が違うの?



702 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:37:33 ]
読解性

703 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:40:36 ]
>>690
VC++ も今は CRT が DLL 推奨だから配るならインストーラ作るべき
なんやけどな。msm があるしサイズも小さいので格段に楽だから
.NET と比べるレベルじゃないけど。


704 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:42:54 ]
自分の場合は固定長バッファ持たせる時とか、ソース直書きのデータを持たせる時以外は宣言の所に初期化コードを書かないようにしてる。
基本的にはできるだけコンストラクタに書いたほうが、読みやすいコードになるよ。
#regionと組み合わせるとなお良い。

指すものがコンパイル時点で決まっていて、利用者側のコードに左右されない要素(リテラル的なもの)は宣言と初期化を一緒にしてもいいと思う
上の固定長バッファはあてはまらないけど…

705 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:44:00 ]
>>687
「.net Frameworksインストールしてね」で終わりじゃないか?
むしろ、Windows Updateで配布されてるんじゃないのか?.netぐらい

706 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:45:31 ]
>>700


707 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:47:58 ]
>>687
「めんどくせえなぁ・・・なんでこんな糞プログラムを・・・。そうだ!インストールしてない事にすればいいんだ!」

708 名前:デフォルトの名無しさん [2009/02/04(水) 23:49:28 ]
>>701
void Hoge()
{
int x = Class.Method(a,b);
}
これだとxはMethod(a,b)から返ってくる値しかとれないでしょ。

void Hoge(Func<int> getX)
こうしておけば

Hoge(() => x + y);
Hoge(() => x * y);

外部から自由な演算を入れられる。
ハッシュテーブルのキーが欲しいということになっても

Dictionary<TKey, TValue> CreateDictionary<TKey, TValue>(TValue[] array, Func<TValue, TKey> getKey)
{
Dictionary<TKey, TValue> dic = new Dictionary<TKey, TValue>();

foreach(var item in array)
{
dic.Add(getKey(item), item);
}

return dic;
}

var dic = CreateDictionary(array, item => item.Name);
その型のKeyにしたいものを自由に選べる

709 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:52:03 ]
.NET Frameworkは再頒布可能だからその自作ソフトとやらに含めて配布すればいいんだよ。

msdn.microsoft.com/ja-jp/library/xak0tsbd.aspx

ちなみにWindows Server 2003、Windows Vista、Windows 7にはリリース時点で最新の.NET Frameworkが入っている。(より新しいバージョンが出て、それが必要な場合は更に入れる必要がある)

710 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:53:57 ]
はやくXPが駆逐されればいいんだがなあ

711 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:57:24 ]
デザインパターンは関数型っぽいことを無理やり手続き型OOPLでやるための工夫が主だから
かなり簡単に実装できるよな



712 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:58:26 ]
>>708
それみると、君の主張するところの直感的でもないし、
初心者にもわかりにくいと思うよ

713 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:02:11 ]
>>712
じゃあオブジェクト指向や構造化でもっと直感的に、
初心者に分かりやすく書ける?

714 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:04:46 ]
スレ違い
よそで存分に議論してくれ

715 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:05:14 ]
初心者ではないが、何が書いてあるかさっぱりだw

716 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:07:06 ]
人の揚げ足取りと議論厨は相談スレにお引き取りください

717 名前:デフォルトの名無しさん [2009/02/05(木) 00:07:42 ]
すみませんコレは仕様なんでしょうか
1:public class Foo{
2: private readonly int[] test = new int[]{1,2,3,4,5};
3: public Foo(){
4:  int[] test2 = test1;
5:  test2[0]=2;
6:  Console.WriteLine(@"test[0]=" + test[0].ToString());
7: }
8:}
上記 2行目readonlyにしてるtestが、5行目で書き換えられてしまいます。

718 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:09:03 ]
>>708 じゃねーけど知りたいんならレキシカルクロージャとかで
ぐぐった方がいいと思うよ。

>>708
2ch で説明するのはさすがに難しいと思う

719 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:09:15 ]
4:  int[] test2 = test;
のまちがいです

720 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:09:37 ]
配列の要素がreadonlyになるわけではありません

721 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:14:31 ]
>>718
2chで説明するのが難しいことが、初心者向けなの?



722 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:15:02 ]
>>718
ググっても関数型言語ユーザーの宗教じみた言論に圧倒されるばかりだと思う

723 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:18:22 ]
>>701
匿名関数は生成したスコープの変数をそのまま取り込める(環境を渡してるって言うんだっけ?)
副産物的な物だけど、遅延評価的な振る舞いも持ち合わせてる

724 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:19:56 ]
この辺の議論からもう13年か。
ttp://java-house.jp/ml/archive/j-h-b/001955.html
ttp://www.google.co.jp/search?hl=ja&q=%E3%82%AF%E3%83%AD%E3%83%BC%E3%82%B8%E3%83%A3+interface+site%3Ajava-house.jp

>>718
むしろ近年のクロージャブームはLLの方が先に火をつけた気もするけどね。
JavaScriptの無名関数とかやっぱり初心者泣かせなのかねぇ?

725 名前:723 mailto:sage [2009/02/05(木) 00:21:07 ]
ごめんさっきの >>718 あてじゃなくて >>722

726 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:31:46 ]
何々、これでいいじゃん?

public static class Class
{
 static int i;
 public static int Method() { return i++; }
}

727 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:37:50 ]
>>726
でもさ、C#でクラスそのものを引数に渡すって面倒事が多いでしょ。
だからデリゲートでもインタフェースでもインスタンスを生成して引数に渡していたのに。

728 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:41:24 ]
クラスそのものって引数に渡せるの?

729 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:41:29 ]
>>727
staticだからclassそのものを渡す必要なんてないよ
どこでも自由に

this.label1.Text = Class.Method().ToString();

でいいんじゃない?

730 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:43:56 ]
>>728
private void button1_Click(object sender, EventArgs e)
のobjectはクラスじゃん?

731 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:48:04 ]
objectはインスタンスだろ



732 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:48:56 ]
ocjectはクラス名だ

733 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:49:27 ]
object

734 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:50:41 ]
この場合は話の流れからインスタンスってことじゃねーの?


735 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:51:26 ]
public class Class
{
 int i;
 public int Method() { return i++; }
}

これの方がいいだろ
たくさん作れるし

736 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:54:51 ]
>>734
この流れって話の本筋なわけ?

737 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:56:27 ]
>>729
それだと元のコードの引数を変えれば動作を変えられるという点が失われているじゃないか。

738 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 01:34:39 ]
>>737
その引数を、Staticなメソッドで渡してあげればいいじゃない
public static class test
{
 static int i;
 public static int Method1() { return i++; }
 public static void Method2(int k) { i = i + k; }
}

739 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 01:36:47 ]
>>738
いや、>>708とか足し算が掛け算になったり、辞書引いたりするような変化なんだけど。

740 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 01:45:46 ]
>>739
つまり

>だからデリゲートでもインタフェースでもインスタンスを生成して引数に渡していたのに。

というのは

>708とか足し算が掛け算になったり、辞書引いたりするような変化なんだけど。

と同義ということ?


741 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 01:58:26 ]
C#でCreateToolhelp32Snapshot関数を使いたいのですが、どう書けばいいのか分かりません。
.NET Frameworkに似たようなクラスライブラリはありませんか?



742 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 02:41:42 ]
>>741
89.234.50.65/default.aspx/kernel32/CreateToolhelp32Snapshot.html

743 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 02:43:11 ]
pinvoke.net/default.aspx/kernel32/CreateToolhelp32Snapshot.html

744 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 03:24:45 ]
>>740
いや、同義というより1つの具体例と言うべきかな。
>>696みたいに別の場合だってある。

745 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 04:17:38 ]
>>732
objectはキーワードだ

746 名前:デフォルトの名無しさん [2009/02/05(木) 06:18:49 ]
C#でアルファベットをfor文のループにかけてAからZまでを表示したいのですが、うまくいきません。
どのようにすればfor文でアルファベットを数値のようにAからZを表示する事が出来るのでしょうか?

747 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 06:20:05 ]
>>746
一番分かりやすいのは配列にすればいいと思うよ

748 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 06:22:37 ]
for(int i=0;i<26;i++)
Console.WriteLine((char)('A'+i));

749 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 06:47:26 ]
for(char c = 'A'; c <= 'Z'; c++) Console.WriteLine(c);

750 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 09:26:15 ]
>>740

>>739
> つまり

> >だからデリゲートでもインタフェースでもインスタンスを生成して引数に渡していたのに。

> というのは

> >708とか足し算が掛け算になったり、辞書引いたりするような変化なんだけど。

> と同義ということ?


751 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 09:31:27 ]
>>740
インスタンスを作ることでコンテキストの別な関数オブジェクトができる(イベント処理の時にstaticだとマズいだろう)
値を変えるのと振る舞いを変えるのとでは大違いだし…

デリゲート(委譲)はその名の通り、実行するタイミングを相手に委ねてる
渡すことを意図しているのは値(狭義の)ではなく動作



752 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 14:00:29 ]
Form1からForm2をShowDialogした場合、
Formが描画される際に画面の上から順に
貼り付けてあるコントロールが表示される感じで、
Closeする場合も同様にもっさり感があるのだが、回避する方法はある?
ちなみにForm2がLoadされるとDataGridViewにMDBから
データを読込んで表示させているのだけど。

753 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 14:15:24 ]
それはビルドした実行ファイル?デバッグ?

754 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 14:17:26 ]
>>753
デバックでも実行ファイルでも描画速度にあまり変化がない感じ・・・

755 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 14:20:02 ]
実行環境は?

756 名前:デフォルトの名無しさん [2009/02/05(木) 14:20:35 ]
>>752
描画を手動でやる

↓ソース開始↓

[コントロール名].SuspendLayout()   //コントロールの描画停止

//(この間に処理を書く)

[コントロール名].ResumeLayout()  //コントロールの描画再開

↑ソース終了↑

コントロール名をthisにすればForm全体の描画を停止できる

757 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 14:20:44 ]
それはGUIの設計に問題があるね
フローレイアウトパネルにコントロール配置してFillしたりAnchorしたり
推奨されてないことやってないだろうね?

758 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 14:21:41 ]
素人発言だけどSuspendLayoutとResumeLayoutとか?

759 名前:752 mailto:sage [2009/02/05(木) 14:36:21 ]
実行環境はXPでCelelon2G・メモ1G
VS2008でつ。

GUIの設計はVB(.Netじゃないヤツ)みたいに
Formにコントロールを貼り付けるだけではダメなのかしら?
Formにあるのは、DataGridViewとButtonとTextBoxとLabelだけ。

DataGridViewコントロールを外して純粋にFormだけでShowすると
幾分早く描画されるって事はDataGridViewの処理が適切でないのかな?

今から756氏と758氏を参考に試してみます。
みんな優しいな。ありがたい!

760 名前:デフォルトの名無しさん [2009/02/05(木) 14:47:04 ]
DataGridViewに対してデータセットをバインドさせると早くなるよ〜
それでも遅いのならSQL文を見直すしかない

761 名前:752 mailto:sage [2009/02/05(木) 15:01:31 ]
SuspendLayoutはあまり変化がなかった・・・ _| ̄|○

今は、OleDbConnection使ってMDBへ接続しているんだけど、
もっと早い方法はあるんですか?
SQL文に関しては単なるSELECT文なのでどうにもならないと思われ。。



762 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 15:02:32 ]
データのバインドを直接じゃなくBindingSourceに任せてみたらどうだろう
こういう症状はあまり経験も聞いたこともないけど

763 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 15:08:40 ]
あれ?もしかしてDataSetなし?

764 名前:752 mailto:sage [2009/02/05(木) 15:09:40 ]
>>762
早速試してみる!
VB6から移行してきた口なんだが、勝手が違い過ぎて戸惑いすぐる。

765 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 15:14:45 ]
DataSetはあります。
コードはこんな感じ(抜粋)
strSelectSQL(変数)へSELECT文を入れてます。

dba = new OleDbDataAdapter(strSelectSQL, dbc);
OleDbCommandBuilder builder = new OleDbCommandBuilder(dba);
dba.Fill(dtset);
dataGridView1.DataSource = dtset.Tables[0];

766 名前:752 mailto:sage [2009/02/05(木) 15:15:47 ]
>>765 
名前入れ忘れたが、752です。

767 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 15:18:28 ]
CommandBuilderからdatasetまで全部動的か

768 名前:752 mailto:sage [2009/02/05(木) 15:36:30 ]
bindingSourceを追加してみたけど、速度は劇的に早くならなかった。
実行速度はこの位って事で満足したことにまつ。
なんか引っかかるけど・・・

ところでbindingSource下記で使い方間違ってない??
dba = new OleDbDataAdapter(strSelectSQL, dbc);
OleDbCommandBuilder builder = new OleDbCommandBuilder(dba);
dba.Fill(dtset, "TEST");
bindingSource1.DataSource = dtset;
bindingSource1.DataMember = "TEST";
dataGridView1.DataSource = bindingSource1;

教えて君で非常に申し訳なかったです。

769 名前:760 [2009/02/05(木) 15:36:38 ]
動かしてないんでご両所くださいw
すべて妄想ですw

↓ソース開始↓

OleDbConnection odc = new System.Data.OleDb.OleDbConnection();
OleDbDataAdapter odda;

DataSet ds = new DataSet("GetData"); //データセットの名称を指定

//接続情報を指定
odc.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " + @"\DUMMYDATA.mdb";

//実行SQL文と接続先情報を設定してアダプタを作成
odda = new OleDbDataAdapter("SELECT * FROM DUMMYDATA", odc);
//データを取得しテーブルを作成
//テーブル名称を設定(任意)
odda.Fill(ds, "tm_DUMMYDATA");

//データソースに設定
dataGridView1.DataSource = ds.Tables["m_DUMMYDATA"];  //インデックス値でもいい

↑ソース終了↑

いろいろ勘違いしてたらごめんね
反省はしないけど


770 名前:752 mailto:sage [2009/02/05(木) 15:44:25 ]
>>769
ソースまで書いてもらって、しかもコメント付で!!
ほんとに親切にありがとう。
素直にうれしす。

771 名前:636の者です。 mailto:sage [2009/02/05(木) 16:40:08 ]
コンストラクタについての質問です。
クラスが3つあります。クラスBは3つコンストラクタがあります。
ClassA
{
ClassB b = new ClassB(〜);
}
ClassB
{
public ClassB(N n){}
public ClassB(N n, M n){}
public ClassB(N n, M m, O o){}
}
ClassC
{
ClassB b = new ClassB(  );
b.〜
}
クラスAからクラスBを呼び出すときは、if文で分けてコンストラクタを1つだけ呼び出すことが
できたのですが、クラスCからクラスBを呼び出すときはどのように呼び出したら良いでしょうか?



772 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 16:42:45 ]
こっちが聞きたい
ClassAとClassCは何が違うんだ

773 名前:636の者です。 mailto:sage [2009/02/05(木) 16:47:41 ]
>>772
クラスAのwindowフォームからクラスBのwindowフォームを呼び出すんですが、
そのクラスBのフォームの選択欄を別のクラスCで使いたいのです。

774 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 16:49:37 ]
それがどうした
>>772の答えになってないだろ

775 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 16:51:35 ]
だったら
class A()
{
public B b;
C c;
public A(){b=〜;c=C(this)}
}

public class C()
{ public C(A a){} }
とかじゃだめ?

776 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 16:52:32 ]
>>771
逆に聞く。
ClaaAからClassBを呼んだときと同じように、ClassCからClassBを呼ぶとどうなったんだ?


777 名前:636の者です。 mailto:sage [2009/02/05(木) 16:59:15 ]
>>776
コンパイルエラーはでないのですが、
クラスCでは、クラスBの変数を呼び出しても未定義となってしまいます。

778 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 17:02:16 ]
いいから失敗したコードを晒せ

779 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 17:03:42 ]
>>777
確認だが、同一form(B)の情報をAとCで共有したいってことでいいの?
だったら両方でnewしてるから
今のコードだったら、AとCがそれぞれ別のform(B1,B2みたいな)を持ってることになる。

違うなら、そもそもやりたいことが分からん。

780 名前:636の者です。 mailto:sage [2009/02/05(木) 17:13:57 ]
>>779
クラスAで入力したテキストの個数によってクラスBのコンストラクタをShow()を使って
1つ呼び出すだけですが、クラスBではリストボックスなどをSelectedItemで選んで、
その選んだ項をクラスCで使いたいのですが、クラスCでクラスBの変数を使いたいときに、
クラスBのインスタンス化を行うときに、どのコンストラクタを選択すればよいのかが分かりません。

781 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 17:25:00 ]
禅問答みたいw



782 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 17:33:58 ]
たぶんVB脳、それも極上のやつなんだと思う

783 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 17:47:52 ]
小文字は大文字クラスのインスタンスだとする。

(1)
a → b1
c → b2

(2)
a → b ← c

どっちなんだ
ちなみに(1)はフォームが2つできる。そしてb1とb2は別物だからリストボックスなんかの情報は共有できない。
俺には(2)を実現したいのに(1)のコードを書いちゃってるように見えるんだが・・・

784 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 18:16:59 ]
なんか、他のクラスを呼び出すときはNewしなきゃいかんという間違った固定概念をお持ちなのでしょう

785 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 18:32:58 ]
×固定概念
○固定観念

786 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 18:46:17 ]
もう少し勉強しましょう、としか言いようがない。

>クラスBのインスタンス化を行うときに、どのコンストラクタを選択すればよいのかが分かりません

クラスBは自分で書いたんでしょう? だったら自分で知ってるはず。
そうじゃなくてたぶんあなたの質問は、
「データをどうやってクラス間で渡したらいいですか?」というやつではないのかい?

なんか書いても書いても返答がないので手応えのない質問者だ

787 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 18:54:38 ]
馬鹿がバレるのを恐れてるんじゃないの。

788 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 18:54:43 ]
きょうもしつもんです。

「時間計るときに、System.Environment.TickCountを良く使うけど、
24.9日たったら一周しちゃうから、なんとかならないかなー」
なんて書き込みがよくありますが、
なんでSystem.Diagnotics.Stopwatchを使わないんでしょうか?

数十日間もパフォーマンスカウンタ取得し続けたら、CPUとかハード的に
負担(たとえばやりすぎたら故障しやすいとか)があるんでしょうか?

もしそうだとしたら、なんとかSystem.Environment.TickCountを64bit化する
コーディング方法はあるんでしょうか?

789 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 18:59:27 ]
>>788
一周したかどうか、チェックすればいいんじゃないでしょうか。

790 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 19:01:24 ]
フレームワークのバージョンのせいじゃねーの

791 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 19:05:27 ]
じゃあやっぱりSystem.Diagnotics.Stopwatchでもいいんですかね。
なんかCPUのクロックからどうのこうのって言われるとCPUに悪そうなきがして。



792 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 19:05:45 ]
はあ?

793 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 19:09:02 ]
>>788
Vista/Server2008なら、API関数のGetTickCount64()が使える。
まあ、System.Environment.TickCountで間に合う程度の精度での時間計測なら、
DateTime.Now.Ticks / TimeSpan.TicksPerMillisecondでも問題ないだろうけど。

794 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 19:10:39 ]
ローカル時間使うとプロセス起動中にBIOS時計触ったら狂ってしまいますよね。


795 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 19:23:05 ]
まあ、NowだとNTPで同期入ったらずれるだろう。
Stopwatchの中身QueryPerformanceCounterだよ。

796 名前:デフォルトの名無しさん [2009/02/05(木) 19:58:46 ]
>>788
はいこれ使ってくれ つSystem.Diagnotics.Stopwatch

.NET Framework1.0「おkおk」
.NET Framework2.0「そんな古臭いコード保障できねーからいらねーよ」

797 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 20:05:51 ]
ストップウォッチ使ってfor文の処理の時間とかをPCごとに幾らになるか計ったらダメなん?

798 名前:デフォルトの名無しさん [2009/02/05(木) 20:35:48 ]
>>796
System.Diagnotics.Stopwatchって2.0からじゃなかったっけ


799 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 20:42:39 ]
>>742
遅くなりましたが、ありがとうございました。

800 名前:デフォルトの名無しさん [2009/02/05(木) 20:47:57 ]
>>798
ごめん 間違えた

訂正

はいこれ使ってくれ つSystem.Diagnotics.Stopwatch

.NET Framework2.0「おkおk」
.NET Compact2.0「サポートしてませ〜ん」

申し訳」ない

801 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:31:23 ]
private void catalogDataGridView_CellContextMenuStripNeeded(sender,e)
{

}

DataGridViewCellEventArgs(e.RowIndex,e.ColumnIndex)で
どこがクリックされたかは取得できるのはわかるのですが
クリックした場所が選択中(SelectedRows)かどうかを調べる方法はないでしょうか?
選択中の行の上でクリックしたときだけカスタムストリップを表示したいのですが

と書いてるうちに自己解決しました。ありがとうございます。




802 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:33:57 ]
どういたしまして。

803 名前:デフォルトの名無しさん [2009/02/05(木) 21:36:48 ]
System.Diagnotics.Stopwatchは1年くらいプロセス起動したまま使い続けても大丈夫なの?

804 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:38:17 ]
パフォーマンスカウンタなんて常に参照されてるんだから気にするなよ

タスクマネージャの情報ほぼ全部そっから取ってんだぞ

805 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:55:05 ]
byte[100]の中から、任意のデータの並び(0x112233とか)を検索するにはどうすればよいですか?

806 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:57:20 ]
>>803
システムの起動(CPUの電源ON)からのカウント数だから、プロセスの起動時間は関係ない

807 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:59:57 ]
>>805
BM法

808 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:01:24 ]
>>805
byte境界を越えてるのも探したいの?
ビットパターンを頭から見てくしかないんじゃね?

809 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:02:42 ]
ちょっと、スレ違い気味な事で申し訳無いのですが・・・
適切なスレがありましたら指摘して下さい。

VisualStudio2005 C# で Webアプリケーション 及び Webサービス を作ろうとしていたのですが、
パケットをキャプチャする為にはIIS上で動かさなければいけないのでしょうか?

「とりあえず動かすのが先だ」と考えて、VSを複数立ち上げて.NET開発サーバー間でやりとりしていたのですが、
いざパケットを見ようと思ったら見方が解らなく、ネットも自分の解る範囲で検索してみたのですがそれらしい情報を
見つける事が出来ませんでした・・・

localhost内でやりとりする(?)パケットを見る事は出来ないのでしょうか・・・?

810 名前:デフォルトの名無しさん [2009/02/05(木) 22:04:03 ]
>>805
byte[100]ならBM法でもたいしたコストかからないよ

811 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:05:53 ]
>>809
WinPCap



812 名前:805 mailto:sage [2009/02/05(木) 22:11:43 ]
やっぱり自力でやるしかないんですね。
便利なクラスが用意されていればと思ったのですが…

813 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:13:34 ]
>>809
ローカルじゃ無理じゃね? 無料の VirtualPC でも使いなよ。

814 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:18:46 ]
>>812
Array.Find()

815 名前:デフォルトの名無しさん [2009/02/05(木) 22:19:02 ]
    public int BytesBytes(byte[] src, byte[] target)
    {
      StringBuilder sbSrc = new StringBuilder(src.Length);
      for (int i = 0; i < src.Length; i++)
      {
        sbSrc.Append(src[i].ToString(@"X2"));
      }

      StringBuilder sbTarget = new StringBuilder(target.Length);
      for (int i = 0; i < target.Length; i++)
      {
        sbTarget.Append(target[i].ToString(@"X2"));
      }

      return sbSrc.ToString().IndexOf(sbTarget.ToString());
    }
(∪^ω^)わんわんお!


816 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:24:33 ]
>>814
勘違い

817 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:26:12 ]
>>809
elend.sakura.ne.jp/?p=117

818 名前:デフォルトの名無しさん [2009/02/05(木) 22:26:55 ]
>>814
Array.Find()だと任意の並びは検索できないんじゃね

原文01122334

検索対象112233

だとヒットしない

819 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:31:58 ]
public static int Find(byte[] src, byte[] target)
{
return System.Text.Encoding.ASCII.GetString(src).IndexOf(System.Text.Encoding.ASCII.GetString(target));
}

820 名前:815 [2009/02/05(木) 22:33:29 ]
>>819に負けた・・・

ASCIIにするの思いつかなかった

821 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:36:00 ]
>>820
いや、君の見て思いついた。



822 名前:デフォルトの名無しさん [2009/02/05(木) 22:36:07 ]
あ、でも>>819だと4ビットずれてたら検索できないね

823 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:37:47 ]
ん、ビット単位でずらして検索するのか?

824 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:45:45 ]
ASCIIだと0x80以降が0x3Fになっちまうっていう

825 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:47:21 ]
文字列にして検索してるのは馬鹿?

826 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:49:51 ]
ネタをネタと(

827 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:50:39 ]
コストを考慮しなくて良い場合は手抜き実装としてアリだと思う

828 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:51:47 ]
>>524
そうか
UTF7でどうだ?


829 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:52:30 ]
>>828はアンカミス
>>824へのレス


830 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:52:43 ]
>>524
まったくだ・・・

831 名前:809 mailto:sage [2009/02/05(木) 22:55:46 ]
>>810
試してみたいと思います。

>>813
どうも自分も調べていてそうなのかもと思い始めた所でした・・・
OSが内部で処理しているみたいですね。
今日中に解決できなければその方法で行こうと思います。

>>817
ありがとうございます。
そのサイトは自分も行ったのですが、
ARPの追加が出来なくて諦めました(汗
(エントリを追加できませんでした:5って奴です)
もう少し知識があれば色々突っ込んでやりたい所なんですが、
勝手にARPをイジっても大丈夫なのかよくわかってないので、
その方法はやめておきます・・・。



みなさんありがとうございます。
とりあえず今日中は頑張ってみようと思います。



832 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:58:06 ]
>>805>>809

833 名前:809 mailto:sage [2009/02/05(木) 23:03:45 ]
>>805 != >>809 です。

834 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 23:11:10 ]
class Helper<T>
{
 IEnuemrator<T> e;

 public Helper(IEnumerable<T> e)
 {
  this.e = e.GetEnumerator();
  e.MoveNext();
 }

 Result{ Accept, Reject, 保留 }

 public Result Add(T item)
 {
  if(e.Current.Equals(item))
  {
   if(e.MoveNext() == false)
    return Result.Accept;

   return Result.保留;
  }
  return Result.Reject;
 }
}
こんなんを自作して、一つめが合っていたらこれを作って入れるみたいな感じじゃない?

835 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 23:15:34 ]
何それ

836 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 23:37:16 ]
誤爆?

837 名前:817 mailto:sage [2009/02/05(木) 23:40:31 ]
>>831
該当の記事には要点しかなので、そのまま説明内容を打ち込んでも
ダメなのは理解してるのかな?
事前に
blogs.yahoo.co.jp/akio_myau/34370200.html
とかで説明してるようなMicrosoft Loopback Adapterを追加してやらなければ
ならない
これはローカル通信専用の仮想のネットワークカードのようなもの
するとネットワークが1つ追加されるので、これにIPなどを設定することで、
初めて817の記事内容にあるarpコマンドを受け付けるようになる

デフォルトのローカル通信はキャプチャできないけど、追加した仮想ネットワークは
ローカル通信には違いないけど仕組みが若干違うのでキャプチャできるってことだと思う
なお、arpテーブルはアドレス解決のキャッシュみたいなものなので自分で
設定する分には特に心配はない


838 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:02:27 ]
>>835-836
>>805へのレスだよ

839 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:03:35 ]
誤爆の方がよかったね

840 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:07:11 ]
ええええ、まさかとは思ったが・・・

841 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:08:23 ]
こんなに素直なコーディングを見てそんな感想かよ



842 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:17:39 ]
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /

843 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:19:15 ]
じゃあ>>805の解をもっと素直に書いてくれや

844 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:20:41 ]
揚げ足取りの時間です

845 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:21:58 ]
どうでもいいけど、バグってんだよなそれ >>834
IEnumerator<T> が何を実装しているかもう少し見たほうがいい
foreach 使わないと無駄に長くなる理由でもあるんだけど

846 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:29:48 ]
IDisposableにしろって話?
嫌だよめんどくさい

847 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:32:39 ]
                             |
                             |
      ∩___∩             |
      | ノ  _,  ,_ ヽ        ((  | プラプラ
     /  ●   ● |         (=)
     |    ( _●_)  ミ _ (⌒)   J  ))
    彡、   |∪|  ノ
⊂⌒ヽ /    ヽノ  ヽ /⌒つ
  \ ヽ  /         ヽ /
   \_,,ノ      |、_ノ

848 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:34:56 ]
お取り込み中すいません。
Windows Forms1.1(VS.NET2003)のLabelのTextに
"‐"(シフトJISの815D)を設定すると表示されなくて困ってます。
仕様なんでしょうか?
WinForms2.0やVB6.0(Label.Caption)では表示されます。
Buttonとか、"&"のアクセスキー処理ができるコントロールでは
みんなこの現象が出るようです。.NET1.1はSP1入れています。
"‐"や"815D"で検索しても情報がなくて。。。

849 名前:809 mailto:sage [2009/02/06(金) 00:36:08 ]
>>837
ipconfigにloopbackというのが無い事に気づき、インストールしてarpまではたどり着けました。
ただ、routeするとすでに登録されているとの事で、route PRINTで確認したのですが登録されてました。
これでキャプチャできるのかな?と思ったのですが、やはり見れませんでした・・・
これは見ながらやった設定が間違っていたのか、もしくは自分がNetworkMonitorの使い方を正しく把握していからかのどちらかではないかと思います。
ためしにブラウザにloopbackと入れるとIISのページが表示されたので、loopback == localhost???とか、正常にloopbackされているという事?と、色々頭に?が浮かんでます笑

後一息の様な気がするのですが、明日朝もう一度試してみてダメならダメでまた時間のある時に試してみようと思います。
私の様な初心者に細かに解説していただき、本当にありがとうございました。

850 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:46:46 ]
>>848
これだな。Shift_JISの0x815D == U+2010

Windows Server 2008、Windows Vista、Windows Server 2003、および Windows XP で
GDI+ API 関数を使用するアプリケーションを使用すると、Unicode ハイフン文字 (U+2010) が描画されない
support.microsoft.com/kb/956807/ja

.NET 1.1はコントロールの描画にGDI+を使う。
.NET 2.0で標準だとそこにはGDI+を使わなくなったので、.NET 2.0だと問題が起こらなかったというわけ。

851 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:48:28 ]
>>848
www.atmarkit.co.jp/fdotnet/vblab/appqa_04/appqa_04_01.html
support.microsoft.com/kb/956807/ja









[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<209KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef