5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

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

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

2 :デフォルトの名無しさん:2008/11/03(月) 02:58:55
C#, C♯, C#相談室 Part49
http://pc11.2ch.net/test/read.cgi/tech/1224754660/

WPF(XAML,XBAP,.NET3.5)GUIプログラミング
http://pc11.2ch.net/test/read.cgi/tech/1211453941/

Live3
http://pc11.2ch.net/test/read.cgi/tech/1221395634/

初心者のためのプログラミング言語ガイド Part11
http://pc11.2ch.net/test/read.cgi/tech/1218282605/

3 :デフォルトの名無しさん:2008/11/03(月) 02:59:26
参考サイト。まずはここで検索してから。
http://www.google.co.jp/
http://msdn.microsoft.com/ja-jp/library/default.aspx
http://homepage3.nifty.com/midori_no_bike/CS/
http://www.atmarkit.co.jp/fdotnet/dotnettips/index/index.html
http://dobon.net/vb/dotnet/
http://jeanne.wankuma.com/tips/
http://www.labasp.net/CsharpNote/

4 :デフォルトの名無しさん:2008/11/03(月) 04:28:11
前スレ
ふらっとC#,C♯,C#(初心者用) Part32
http://pc11.2ch.net/test/read.cgi/tech/1223791661/

5 :デフォルトの名無しさん:2008/11/03(月) 05:02:54
>>1
削除依頼出しとけよ

6 :デフォルトの名無しさん:2008/11/03(月) 06:48:29
>>1
おつ

>>5 は前スレでも暴れていたようだ
http://pc11.2ch.net/test/read.cgi/tech/1223791661/4-14


7 :デフォルトの名無しさん:2008/11/03(月) 06:55:14
>>1
スレを立てた納得のいく理由を言ってもらおうか?

8 :デフォルトの名無しさん:2008/11/03(月) 08:19:05
必要無いと思うならここ見ずにあっちのスレ池よ。
俺は初心者スレが欲しいから。

9 :デフォルトの名無しさん:2008/11/03(月) 09:16:09
需要が勢いに現れる

10 :デフォルトの名無しさん:2008/11/03(月) 09:50:26
>>7
おまいが来ないように。

11 :デフォルトの名無しさん:2008/11/03(月) 09:55:43
まあスレを分けることに実質的な意味があるとは思えないし、
明らかに不合理以外の何物でもないと俺も思うが、
別に害もないし「二つあってはダメ」ということもないでしょ。
消極的容認という奴だよ。

本音を言えばそこらの本やweb上の情報読めば解決するようなことを
初心者を言い訳にして人に聞くような奴に目なんかないと思うけど。

12 :デフォルトの名無しさん:2008/11/03(月) 10:09:39
スレが一つだと非初心者が初心者をバカにしたり
非初心者の質問に初心者が回答するなど、ミスマッチの頻度が増す。
現行の体制にもそれなりのメリットはあるんじゃないか。

13 :デフォルトの名無しさん:2008/11/03(月) 10:31:36
VBスレのようになるのが目に見えてる

14 :デフォルトの名無しさん:2008/11/03(月) 10:56:19
キティは置いておいても、「ふらっと」→「くだすれ」でム板的な統一は欲しい。

15 :デフォルトの名無しさん:2008/11/03(月) 10:59:12
C#的にはふらっと以上のネーミングもあるまい

16 :デフォルトの名無しさん:2008/11/03(月) 11:18:50
>>12
だから激しく既出だけど、2chだって鬼ばっかりじゃないんだから
どこだろうと回答は返ってくる。

ただし、質問が「まとも」であるならね。

逆を言えば、「お前C#やプログラミングの、ではなく日本語の初心者だろ」
と言いたくなるような杜撰な質問だったり、調べればすぐ分かることを横着して
質問してるとしか思えない怠惰な糞野郎の質問には、どこだろうと回答なんて
返ってくるわけがない。

>>11では「害がない」と書いたけど、本当はこういうスレってそういう連中の
免罪符になっており、連中から自分が反省する機会を奪っている負の側面がある
可能性は大いにある。

17 :デフォルトの名無しさん:2008/11/03(月) 11:25:48
>>16
正論だね。
そういう質問に対しては「華麗にスルー」か「親切に説教」の対応を
適宜選択して行けば良いんじゃね?
スレが2つでも大きな問題じゃないと思う。

18 :デフォルトの名無しさん:2008/11/03(月) 11:25:49
何を今さら

19 :デフォルトの名無しさん:2008/11/03(月) 11:31:45
VS2008C#のデザイン画面のプロパティからコントロールの(Name)を総大改編したらプログラムが殆ど動かなくなりました
自動的に変換にしてくれなかったということですか?

20 :デフォルトの名無しさん:2008/11/03(月) 11:34:37
>>19
いや、普通は動くよ。

21 :デフォルトの名無しさん:2008/11/03(月) 11:44:59
質問です
m3uファイルを関連付けされているアプリケーションで開かせたいのですが

//pathにはm3uファイルのパスが入っている
System.Diagnostics.Process.Start(path);
とした時、WMPが立ち上がるのですが、m3uファイルが開かれておらず、"ただ立ち上がっただけ"の状態になります

以下の状態ならファイルも読み込んでくれるようです
・Process.Start時にWMPが既に実行されていた場合
・Process.Start後にSleep(10000)なりReadKey()なりで時間を稼いだ場合
・Process.Start("wmplayer",path)とした場合

解説サイト等にはファイルを開かせる処理と言うと、ただProcess.Start(ファイルパス)しろとしか書かれていないのですが、それでは何か足りないと言う事でしょうか?

環境は32ビット版Vista+VS2008EEです

22 :デフォルトの名無しさん:2008/11/03(月) 11:51:07
>>21
空気読め

23 :デフォルトの名無しさん:2008/11/03(月) 11:58:28
>>21
path に .txt なファイルのフルパスを指定して、普通にメモ帳が立ち上がるかどうか確認。

立ち上がるなら、プログラムに問題はなし。WMP 側の問題だろうね。

24 :デフォルトの名無しさん:2008/11/03(月) 12:05:18
m3uファイルをエクスプローラでダブルクリックしたときはどうなる?

25 :デフォルトの名無しさん:2008/11/03(月) 12:08:12
>>19
Controls[string]使ってるんだろ

26 :21:2008/11/03(月) 12:17:38
>>22
何か問題でしたか?

>>23
pathだけProcess,Startの直前に書き換えてみましたが、普通にテキストファイルがnotepadで開かれました
WMP以外のソフトも試してみます

>>24
普通にファイルが開かれ、再生が始まります

27 :デフォルトの名無しさん:2008/11/03(月) 12:25:09
System.Diagnostics.Process.Start(path);
Applicaion.DoEvent();
は?

28 :21:2008/11/03(月) 12:37:11
>>27
コンソールアプリなんです
起動→m3uファイルを生成→生成したファイルを開く
これだけの処理なんですが・・・

ちなみにMedia Player Classicに関連付けをして試してみましたが、Process.Start(path)だけで普通に立ち上がりました
随分不可解ですが、WMPの問題と見て間違い無いのでしょうか・・・

29 :デフォルトの名無しさん:2008/11/03(月) 13:17:42
googlemapの画像部分だけを保存したいのですが,
何かよい方法は無いものでしょうか・・・

30 :デフォルトの名無しさん:2008/11/03(月) 13:27:54
System.Diagnostics.Process.Start(path);
System.Diagnostics.Process.Start(path);
は?

31 :デフォルトの名無しさん:2008/11/03(月) 13:46:25
ワロタw
System.Diagnostics.Process.Start(path);
Thread.Sleep(5000); //とりあえず5秒まつ
System.Diagnostics.Process.Start(path); //なぜか2回実行しないと正しく動かない
的なコードはヤメレw

Process.Start("wmplayer",path)とした場合動くって書いてるからやるならこっちだろ

32 :デフォルトの名無しさん:2008/11/03(月) 13:49:41
大事なことなので二回実行しました

33 :21:2008/11/03(月) 13:51:12
>>30
ダメでした

>>31
何故ダメなのか解らないと言うモヤモヤは残ってしまいますが、関連付けを別個に取得して、Process.Start(hoge,path)の形式で行くことにします

回答して下さった皆さん有難う御座いました

34 :デフォルトの名無しさん:2008/11/03(月) 13:55:42
そのモヤモヤを残したまま動いたからOKみたいな姿勢はPGとしてどうなのだろうか?
オレも動いたからOK派なんだけど、ちょっと疑問に思った。

35 :デフォルトの名無しさん:2008/11/03(月) 13:56:33
>>32
っっw

36 :デフォルトの名無しさん:2008/11/03(月) 14:00:40
データベースに接続するにはどのコンポーネント使えばいいですか?

37 :デフォルトの名無しさん:2008/11/03(月) 14:11:11
ADO.NET

38 :デフォルトの名無しさん:2008/11/03(月) 14:22:43
LINQ to SQL

39 :デフォルトの名無しさん:2008/11/03(月) 14:28:28
ToolBar

40 :デフォルトの名無しさん:2008/11/03(月) 17:19:32
System.Data.

41 :デフォルトの名無しさん:2008/11/03(月) 18:29:17
>>29
WinShotが便利

42 :デフォルトの名無しさん:2008/11/03(月) 22:35:05
C#でレジストリを全てエクスポートを行うプログラムを作成しています.
現在,RegistryクラスのOpenSubKeyメソッドを再帰的に呼び出しているのですが,
Windows標準のレジストリエディタにある「エクスポート」機能を
C#から実行することは可能でしょうか?

環境は
VC# 2005 Express
Windows XP Pro
です.
よろしくお願いします.

43 :デフォルトの名無しさん:2008/11/03(月) 22:42:18
ttp://support.microsoft.com/kb/128731/ja
アクセストークンだの何だの色々面倒そうだな

44 :42:2008/11/03(月) 23:12:27
>>43
ありがとうございます.
残念ながらCはほとんど読めません;;

調べてみたところ,APIを使わなくても,regeditの引数に/eをつければ
エクスポートできたので,この方法でいこうかと思います.


45 :デフォルトの名無しさん:2008/11/03(月) 23:37:35
節子それマルウェアや!!!!!

46 :デフォルトの名無しさん:2008/11/04(火) 01:48:34
すみません。ボタンを押すとDataGridViewの選択されている行を削除するようにしているのですが(DataGridViewから直接ユーザが削除できないようにしています)
今の方法はDataGridViewの列にID列をもうけて、そのIDのデータをDataSetオブジェクトから削除するようにしているのですが
IDをDataGridViewに表示しているとスマートじゃないのでできるなら表示したくありません。このような状況下でうまく選択された行を削除する方法はありませんか?

47 :29:2008/11/04(火) 02:26:41
>>41
それ膨大になると大変そうですね><

48 :デフォルトの名無しさん:2008/11/04(火) 04:14:48
>>46
つ SelectedRows

49 :デフォルトの名無しさん:2008/11/04(火) 11:15:29
アセンブリ名って何ですか?

50 :デフォルトの名無しさん:2008/11/04(火) 11:37:56
>>49
EXEやDLLのファイル名

51 :デフォルトの名無しさん:2008/11/04(火) 11:40:47
正確には違うけどまあとりあえずそう思ってもいいかもしれないけどまずいかもしれない。

52 :デフォルトの名無しさん:2008/11/04(火) 12:05:47
ソケット通信をしようと思って以下のように記述しているのですが、
”要求したアドレスのコンテキストが無効です。”
と表示されて、うまく待機状態になりません。
ちなみに、各PCのWindows(Vista)やセキュリティのファイヤーウォールは無効にして行っています。
(よって、もちろんping等も通る状態です。)

IPAddress localAddr = IPAddress.Parse("192.168.11.6");
TcpListener server = new TcpListener(localAddr, 9999);
server.Start();

ちなみにループバックだとうまくいくのですが、
何かまずい点がありますでしょうか?
あれば、教えていただけると助かります。

53 :デフォルトの名無しさん:2008/11/04(火) 12:40:11
節子それマルウェアや!!!!!

54 :デフォルトの名無しさん:2008/11/04(火) 13:34:55
NIC の IP アドレスはそれで合ってる?
ipconfig /all なんかで確認を

55 :デフォルトの名無しさん:2008/11/04(火) 14:11:20
string[] splitString = beforeSort.Split('\n');
Array.Sort(splitString);
で、逆順にソート結果を表示するにはどうすればいい?

56 :デフォルトの名無しさん:2008/11/04(火) 14:26:10
表示するときに逆から取得すればいいんじゃね?

57 :デフォルトの名無しさん:2008/11/04(火) 14:26:18
データごと変えるならArray.Reserveすればいい
表示だけ変えたいのならそっちの方でどうにかする

58 :デフォルトの名無しさん:2008/11/04(火) 14:30:21
予約(Reserve)してどーすんだ、つーのw
反転(Reverse)だわなw

59 :デフォルトの名無しさん:2008/11/04(火) 15:18:03
Array.Sort(splitString, (x, y) => -String.Compare(x, y));

60 :デフォルトの名無しさん:2008/11/04(火) 16:13:49
イベントのDoubleClickとMouseDoubleClickの違いが分からないので教えてください

61 :デフォルトの名無しさん:2008/11/04(火) 17:09:57
>>58
おおお。
Array.Reverse
なんてのがあるんだ。知らなかった。
これは、1行に複数の項目がある場合、項目を指定できるんですか?
1行にはファイル一覧と日付と時刻があり、ファイルの逆順に並びました。
path/tmp.txt 2008/11/04 17:06:37
のようになってます。
2008/11/04 17:06:37 path/tmp.txt
にしてもファイル名の逆順になりました。
日付の逆順にしたいのです。

>>59
今回は、
2008/11/04 17:06:37 path/tmp.txt
にしておいて、
Array.Sort(splitString, (x, y) => -String.Compare(x, y));
でうまくいきました。
ありがとさん。


62 :デフォルトの名無しさん:2008/11/04(火) 17:20:10
ReverseはReverseなんだから変に並び替えたら駄目だろ。
並び替えるのはSortの仕事。

一般的には
日付とパスを持ったクラスを作って、全部のデータをそのクラスの配列に詰替えして、
> Array.Sort(splitString, (x, y) => -String.Compare(x, y));
の-String.Compare(x, y)部分を好きな判定に変更。

63 :デフォルトの名無しさん:2008/11/04(火) 17:23:57
OrderByDescendingだろ

64 :デフォルトの名無しさん:2008/11/04(火) 18:53:28
これからC#でソフトウェアを作ることになりそうなんですが、どのような本で勉強すればいいでしょうか?
ちなみにC#はほぼ初心者で、CとJavaは習ってます。

65 :デフォルトの名無しさん:2008/11/04(火) 18:54:37
エッチな本かな

66 :デフォルトの名無しさん:2008/11/04(火) 19:02:09
初心者ですみませんが、あるテーブルをもとに新しいフォームを作成して、ボタンと
検索用のスペースを取り付けたのですが、あけたスペースに文字を入力すると、
あるフィールドに、その入力された文字が含まれているなら、その部分のレコードを取り出す。
ということをできるようにボタンのイベントのビルドを設定したいのですが、
どういうふうに設定すればよいのでしょうか。Filterを使うのはわかっています。
説明下手で申し訳ありません。


67 :デフォルトの名無しさん:2008/11/04(火) 19:19:43
Windows APIを使うのは邪道なのでしょうか?
.NET Framework的に

68 :デフォルトの名無しさん:2008/11/04(火) 19:22:40
そんなこといってたらJavaでJNIも邪道になってしまう

69 :デフォルトの名無しさん:2008/11/04(火) 19:26:15
WinFormsも

70 :デフォルトの名無しさん:2008/11/04(火) 20:15:56
>>66
ボタンのイベント
{
 検索処理(スペースに入力された文字);
}

って感じで。

71 :デフォルトの名無しさん:2008/11/04(火) 21:20:19
こんにちわ、自分最近プログラミングに興味を持ったんですが、何から覚えればいいのでしょうか 

VB2005のC#をつかおうかとおもってます

72 :デフォルトの名無しさん:2008/11/04(火) 21:23:39
Virus Buster?

73 :デフォルトの名無しさん:2008/11/04(火) 21:26:18
そんなのありますん

74 :デフォルトの名無しさん:2008/11/04(火) 22:06:25
>何から覚えればいいのでしょうか 

マジレスすると
どっかのサイトの「はじめてのC#」みたいなところを一通り読みながら
サンプルをコンパイルしてけばいいと思う

75 :デフォルトの名無しさん:2008/11/04(火) 22:10:01
変数もifも知らないような人なら
Cやjavaの超初心者用の本でも買ってOOP以前の基礎を勉強した方がいいんじゃないかなあ

76 :デフォルトの名無しさん:2008/11/04(火) 22:11:43
>>74
マジレスどうもありがとうございます
検索して調べてみます

77 :デフォルトの名無しさん:2008/11/04(火) 22:24:44
変数 is 型

のようなis演算子を使って否定形にするにはどう書けばいいですか?


78 :デフォルトの名無しさん:2008/11/04(火) 22:25:39
!(変数 is 型)

79 :77:2008/11/04(火) 22:30:06
ありがとう。

80 :デフォルトの名無しさん:2008/11/04(火) 23:01:56
無限undo,redoを実装したいのですが
今考えているのは専用のクラスをつくって
直前または直後のコントロールと状態を丸ごと保存しておく方法です
通常はどのような方法で実装するのが一般的でしょうか?



81 :デフォルトの名無しさん:2008/11/04(火) 23:05:02
>>80
一般的かどうかは知らんけど、memento or(and) command とかのデザインパターンを
使う方法もあるよ。

82 :デフォルトの名無しさん:2008/11/04(火) 23:09:10
>>80
mementoかな

83 :デフォルトの名無しさん:2008/11/04(火) 23:16:50
mementoってものすごく無駄じゃないか?
例としてはテキストエディタ考えれば分かると思うけど。

84 :デフォルトの名無しさん:2008/11/04(火) 23:17:05
コンボボックスの候補をインクリメンタル検索するのは、どうやればいいんですか?


85 :デフォルトの名無しさん:2008/11/05(水) 00:00:42
>53
IPはもちろんipconfigで確認しました。
ちなみに、IPアドレスを指定せずIPAddress::Anyを使うとうまくつながりました。
理由がさっぱりわかりません ○rz



86 :80:2008/11/05(水) 00:16:07
memento見ましが、とても勉強になりました
ちょっと大がかりな気がするので簡略化して実装してみます
ありがとうございました

87 :デフォルトの名無しさん:2008/11/05(水) 01:44:29
抽象クラスの中で定義したabstractを付けない普通のメソッドは
継承先で通常のメソッドとして使用することはできるのでしょうか?
それとも抽象クラスのなかのメソッドは全てabstrctとしてとらえられるのでしょうか?

88 :デフォルトの名無しさん:2008/11/05(水) 01:47:44
>>87
全て抽象だったら中身を定義する意味がないだろ。

89 :デフォルトの名無しさん:2008/11/05(水) 03:01:28
文字列を後方から最長一致で探したいのですが、賢い方法は無いでしょうか?

90 :デフォルトの名無しさん:2008/11/05(水) 03:49:53
文字列を反転させて最長一致させて結果を反転させれば?

91 :デフォルトの名無しさん:2008/11/05(水) 07:58:01
クリップボードのデータをByte配列に変換するにはどうすればいいでしょうか?

クリップボードのデータをTcpClientを使ってサーバーに送信したいのですが、
Byte[]に変換するところでつまずいています。
ビットマップや音声など、DataFormatsに含まれている形式なら
問題ないのですが、それ以外の場合、取得することもできないので
困っています。
ClipBoard.GetDataObject()で取得したデータをそのままByte[]に
できれば理想的です。よろしくお願い致します。

92 :デフォルトの名無しさん:2008/11/05(水) 08:08:18
勝手にクリップボード送信されたら嫌ですね

93 :91:2008/11/05(水) 08:43:04
クリップボードを共有するだけなので、
勝手には送信しません

94 :デフォルトの名無しさん:2008/11/05(水) 14:38:13
共有したら送信することになるだろう。
ところで複数フォーマットがある場合どうするの?
全部送るのかな。GetDataObjectしたものをGetFormatsして
それぞれをGetDataして送るのでどう?

95 :デフォルトの名無しさん:2008/11/05(水) 16:02:24
クリップボードに格納できた以上、シリアライズは可能なはずだけど

96 :デフォルトの名無しさん:2008/11/05(水) 16:53:06
>>90
やはりこれが一番現実的な解ですよね。
ありがとうございました。

97 :91:2008/11/05(水) 18:11:31
>>94
GetFormats()みたいに特定の形式に依存したくないんですよね
目的はクリップボードの生データを共有することなので
例えば「01 2f e4 38」みたいななんの脈絡もないバイナリも
そのままの形で取得/設定したいんです

>>95
調べてみました
サンプルコードを見たところ、
クリップボードを自作クラスにシリアライズできるようですね
でもサンプルコードはクリップボードにはアクセスしていないもので
参考にはなりませんでした・・・
クリップボードのメモリ空間に直接アクセスしてbyte[]に入れられればいいのですが

98 :デフォルトの名無しさん:2008/11/05(水) 18:40:45
>>97
だからよー
送った先でも同じ名前(フォーマット)で再構築しなきゃならないだろうが。
タダだのぷしただけだと復元できないだろ。

99 :デフォルトの名無しさん:2008/11/05(水) 18:51:07
知ってるか?SHOP99のレジシステムはC#で作られてる事を・・・

100 :デフォルトの名無しさん:2008/11/05(水) 18:52:22
セブンイレブンもNECがC#で作ってたような

101 :デフォルトの名無しさん:2008/11/05(水) 18:52:41
ちなみにあの「しょ〜っぷ、きゅ〜っ、きゅきゅきゅきゅ」っていう歌もC#でつくられたシンセサイザーでつくられてる。

ショップ99はこういうこだわりの有る店なんだ。

102 :デフォルトの名無しさん:2008/11/05(水) 18:53:52
>>100 C#最強だな。俺のオキニのSHOP99のレジのバイトの姉ちゃんもC#で作られたりしてるとうれしい。

103 :デフォルトの名無しさん:2008/11/05(水) 18:54:17
ガワだけだろjk

104 :デフォルトの名無しさん:2008/11/05(水) 18:57:20
話が盛り上がってるところすまないんだけど、CodeZineのサンプルプログラムなかなか良いね。ダウンしてソース眺めると
初心者から上級者の域まで一気にいける。

105 :デフォルトの名無しさん:2008/11/05(水) 18:58:23
どれだよ

106 :デフォルトの名無しさん:2008/11/05(水) 19:00:10
>>105
http://codezine.jp/article/tag/167

107 :デフォルトの名無しさん:2008/11/05(水) 19:03:52
>>103
そうなんです><; オキニのレジの店員も女子高生なんです><;

108 :91:2008/11/05(水) 19:42:14
>>98
dumpしたデータを受信側のクリップボードに
そのまま書き込むだけじゃだめなんですか?

109 :デフォルトの名無しさん:2008/11/05(水) 20:02:06
最近マルウェア作り流行ってんの?
発信源日本がダントツらしいし

110 :デフォルトの名無しさん:2008/11/05(水) 20:08:12
>>108
書き込むにはフォーマットが必要なわけだが

111 :91:2008/11/05(水) 21:22:55
>>110
要するにbyte[]型のメンバだけで構成された
独自フォーマットと考えることはできないんでしょうか?
クリップボードをダンプすることができれば解決するのですが・・・

112 :デフォルトの名無しさん:2008/11/05(水) 21:35:23
C#のウィンドウズアプリケーションで、数値を7セグ(風)に表示して欲しいって言われたんだけど
これって、自力で実装するしかないですよね。そういうコントロールとかがあるわけじゃないですよね?

113 :デフォルトの名無しさん:2008/11/05(水) 21:46:10
>>112
IDisplay display = new SevenSegmentDisplay();
DisplayComponent[] components = new SevenDisplayComponent[3];
components[0] = SevenDisplaySegment.A | SevenDisplaySegment.B | SevenDisplaySegment.C | SevenDisplaySegment.F;
components[1] = SevenDisplaySegment.B | SevenDisplaySegment.C;
components[2] = SevenDisplaySegment.B | SevenDisplaySegment.C | SevenDisplaySegment.F | SevenDisplaySegment.G;
display.Show(components);

114 :デフォルトの名無しさん:2008/11/05(水) 21:48:48
何言ってるのこの人

115 :デフォルトの名無しさん:2008/11/05(水) 21:52:43
>>112
銭取る仕事じゃないならフリーのフォント使うとか。
銭取る仕事でも、フォントから画像起こしてそれこっそり使っちゃえばいい。
数字なんて10種類しかないんだから。

確かMSのマイグレーション何とかのサンプルでそういうやり方をしてたよ。

116 :デフォルトの名無しさん:2008/11/05(水) 21:54:17
>>112
ttp://www.trojanbear.net/omake.htm#font
これじゃだめぽ?

117 :デフォルトの名無しさん:2008/11/05(水) 21:58:43
7セグフォント作ればいいんじゃね?


118 :デフォルトの名無しさん:2008/11/05(水) 21:59:05
>>111
GetFormats(false)で得た全種類をGetDataするのが
一番形式に依存しない方法だと思うぞ。

強いて言えば、クリップボードの内部形式はIDataObjectそのもの。
ネイティブなAPIでもクリップボードにはIDataObjectを受け渡ししている。

119 :デフォルトの名無しさん:2008/11/05(水) 21:59:16
WebBrowser wb = new WebBrowser();
wb.Navigate(uri);
を使った場合、読み込まれたページのJavaScriptは勝手に実行されてしまいます?。

IEが勝手に立ち上がって404?を表示してしまいます。

120 :デフォルトの名無しさん:2008/11/05(水) 22:00:21
そうですか?。

121 :デフォルトの名無しさん:2008/11/05(水) 22:07:04
あぁ、COM interfaceか。
表示しなければ実行されないのかと思ってた。

122 :デフォルトの名無しさん:2008/11/05(水) 22:19:30
DataGridViewである列を基準にソートしてからあるレコード(行)を選択→削除したら
DataSetの方のレコードも確実に削除されるっていう保証ある?

123 :91:2008/11/05(水) 22:27:30
>>118
なるほど
正体不明のバイナリデータが出てきたりしたら
扱いに困りそうですが取り敢えずやってみます
APIにもクリップボードをダンプする関数はないみたいですし・・・

124 :デフォルトの名無しさん:2008/11/05(水) 22:49:47
staticじゃないフィールドにreadonly付けてる?
コンストラクタで初期化した後は変更しないフィールドには付けるべきなんだろうけど
つい忘れちゃうんだよね

125 :デフォルトの名無しさん:2008/11/06(木) 10:33:47
正体不明っつーか、ディレイドレンダリングはどうすんのって話もあるわな。

126 :デフォルトの名無しさん:2008/11/06(木) 14:25:57
TCP-IPで通信するプログラムに挑戦しようと思い、
http://www.stackasterisk.jp/tech/dotNet/csharp08_02.jsp
のコードを動かして見たのですが、
localhost同士の場合はきちんと通信できるのに、
LAN上の別PC同士では
「接続済みの呼び出し先が一定の時間を過ぎても正しく応答しなかったため、接続できませんでした。または接続済みのホストが応答しなかったため、確立された接続は失敗しました。」
というエラーが出るのですが、これはなにが原因なのでしょうか。

サーバー側は192.168.1.70:1500
クライアント側は
192.168.1.60:1600
で待機するようにしています
よろしくお願い致します。
※むろん、ソースのPortの値やIPアドレスは正しく変更しています

127 :デフォルトの名無しさん:2008/11/06(木) 14:37:49
クライアントなのに待機してんの?

128 :デフォルトの名無しさん:2008/11/06(木) 14:38:49
>>127
文章が前後したために誤解させて済みません
待機しているのはサーバーです

129 :デフォルトの名無しさん:2008/11/06(木) 14:38:58
firewallじゃね?

130 :デフォルトの名無しさん:2008/11/06(木) 14:41:29
つーか、そのリンク先のClient.csをそのまま使ったのかな?
クライアントが指定しているアドレスとポートはサーバのを指定するんだよ。
クライアントでは通常ソースポートを指定しなければ空いてるポートを使う。

131 :126:2008/11/06(木) 15:00:27
>>129
ファイヤーウォールはポート開けてます
一応、試しに無効にしましたが、だめでした・・・

>>130
ソースのPortの値やIPアドレスは正しく変更しています

132 :デフォルトの名無しさん:2008/11/06(木) 15:04:15
いや、気にしてるのは
>クライアント側は
>192.168.1.60:1600
という必要ない情報をわざわざ書いてることなんだよね。
このアドレスとポートはプログラムに書く必要がないのはわかってる?

133 :デフォルトの名無しさん:2008/11/06(木) 15:05:50
またおまえか

134 :デフォルトの名無しさん:2008/11/06(木) 15:07:53
>>132
そういうことですか
それは大丈夫です
サーバーは127.0.0.1で待機していますし、
クライアントは192.168.1.70:1500へつなぎにいってるはずです

クライアントのアドレスを書いたのは環境がおかしいのかを疑ったためです
誤解を与えてすみません

135 :デフォルトの名無しさん:2008/11/06(木) 15:09:30
>サーバーは127.0.0.1で待機していますし
これはだめ。
0.0.0.0か、192.168.1.70で待たなくちゃ

136 :デフォルトの名無しさん:2008/11/06(木) 15:10:55
0.0.0.0つーか、IPAddress.Anyか

137 :デフォルトの名無しさん:2008/11/06(木) 15:11:47
>>135
動きました!
本当にありがとうございます。

どういうミスだったのでしょうか?

138 :デフォルトの名無しさん:2008/11/06(木) 15:17:35
127.0.0.1と通信する手段が他のPCにはないからさ。
クライアントがサーバのアドレスとポートを指定したら
サーバはそのアドレスとポートでListenしていないと届かない。

139 :デフォルトの名無しさん:2008/11/06(木) 15:23:23
>>138
なるほど
つまり、Listenするアドレスとは、サーバーから見て自分のアドレスという意味ではなく、
クライアントからも見えなきゃだめということなんでしょうか

大事なことなのにサンプルには何も説明ないんですよね・・・

140 :デフォルトの名無しさん:2008/11/06(木) 15:27:16
正確には 127.0.0.1 がつながってるのはループバックインタフェースであって、
ネットワークカードに繋がっているインタフェースのアドレスをlistenしなきゃダメ、
(ほかのホストから繋ぐなら)ということ。

141 :デフォルトの名無しさん:2008/11/06(木) 15:27:37
127.0.0.0/8がループバックアドレスというのは
サーバーをたてる人間にとって常識だからさ。

142 :デフォルトの名無しさん:2008/11/06(木) 15:28:17
いやそれはネットワークプログラミングするに当たって知ってて当然の前提知識…

143 :126:2008/11/06(木) 15:35:18
127.0.0.1がループバックアドレスなのは知っていますが、
サーバーの待ちアドレスがクライアントから見えなきゃいけない
とは思いませんでした。
サーバーが自分で自分を認識できればいいのかな、と。
(だからサンプルも127.0.0.1になっているのかなと)

144 :デフォルトの名無しさん:2008/11/06(木) 15:37:08
まあ127.0.0.1以外にも、複数LANポートがあったり、LANポート1つでも
複数アドレス振れるからね。クライアントがどこにつなぎに行ってサーバがどこで待ってるかは
一致しないとね。TCP/IPの基本だからそのうち当たり前と思うようになるかもね。

145 :デフォルトの名無しさん:2008/11/06(木) 16:31:43
>>143
クライアントがサーバーを認識できなかったらクライアントは何をするんだw
192.168.x.xのアドレスはLAN内でしか使えないことも注意。

146 :デフォルトの名無しさん:2008/11/06(木) 16:32:18
DataTable tbl = (DataTable)dataGridView1.DataSource;

↑の一文が実行時エラーになるお(;ω;)
題名「InvalidCastExceptionはハンドルされませんでした」
内容「型 'System.Windows.Forms.Binding.Source'のオブジェクトを型'System.Data.DataTable'にキャストできません。」
っていうエラーがでるお(;ω;)

http://msdn.microsoft.com/ja-jp/library/system.windows.forms.binding.datasource(VS.80).aspx
↑このページみるとDataTableに格納できるってかいてあるお(;ω;)

お手上げだお。だれか助けてお。

147 :デフォルトの名無しさん:2008/11/06(木) 16:37:04
またお前か

148 :デフォルトの名無しさん:2008/11/06(木) 16:37:49
格納できることと格納されてることの間には深い溝がある

149 :デフォルトの名無しさん:2008/11/06(木) 16:39:13
>>146
質問者がふざけた態度をとるな
鬱陶しい

150 :146:2008/11/06(木) 16:42:29
うるせえ、うぜえ回答者はだまってろ。分かる人、回答オネ。

151 :デフォルトの名無しさん:2008/11/06(木) 16:42:43
手品じゃないんだから

152 :デフォルトの名無しさん:2008/11/06(木) 16:48:02
>>150
DataTable tbl = (;ω;)dataGridView1.DataSource;

153 :デフォルトの名無しさん:2008/11/06(木) 16:51:44
InvalidCastExceptionをハンドルしろスネーク!

154 :146:2008/11/06(木) 16:55:28
>>153
ハンドルしたら、>>146と同じエラーが出たよ。

155 :デフォルトの名無しさん:2008/11/06(木) 16:57:42
>>150
デバッグで式コピーして貼り付けろよ糞質問者

156 :デフォルトの名無しさん:2008/11/06(木) 17:00:14
>>146
DataSourceはobject、元になるBindingオブジェクトが何を元に作られたかで何であるかは変わってくる。
キャストエラーが出るならDataSetではないということ。

157 :146:2008/11/06(木) 17:11:58
>>155
初心者OKスレに難しい事かくな。糞回答者
>>156
ありがとう。なるほど、DataSetやDataTableをもとに作られたわけじゃないんだね。
おいらには、むずかしいから、ちょっと間をおきます。ありがとう。

158 :デフォルトの名無しさん:2008/11/06(木) 17:15:27
強気な質問者にワロタw

159 :デフォルトの名無しさん:2008/11/06(木) 17:26:44
>>158
質問の時に

〜になるお(;ω;)

ですからwwwwww
微笑ましいのぅ

つうかGetTypeしてみりゃ中が何かわかるだろうに・・・・・

160 :デフォルトの名無しさん:2008/11/06(木) 17:33:39
どうせDataSetでしょ

161 :デフォルトの名無しさん:2008/11/06(木) 17:33:57
InvalidCastExceptionが投げられてる時点で型が違うことがわかるはずなんだけどなw

162 :デフォルトの名無しさん:2008/11/06(木) 18:05:25
質問者がInvalidだったわけだ。わかるかいトミー?!
ふぅはぁはふぁははばばはばぁ

163 :146:2008/11/06(木) 18:12:12
うぜえ、自演回答者は別として
飯食って頭冷やしてきたらわかりました。BindingSourceっていう型が
DataSourceだったんですね。

DataSet ds = (DataSet)((BindingSource)dataGridView1.DataSource).DataSource;

っていう一文にしたら良かったです。デザイナからDataSetとDataGridViewをくっつけたときは
DataTableを飛び越えてデータの双方の移動があるみたいなのでDataTableはないみたいです。
真摯に教えてくださった方、ありがとうございました。

また、がんばります><;


164 :デフォルトの名無しさん:2008/11/06(木) 18:14:31
ここまでおれの自演っと

165 :デフォルトの名無しさん:2008/11/06(木) 19:38:23
理解はできないみたいだがコピペはできたみたいだな

166 :デフォルトの名無しさん:2008/11/06(木) 19:57:42
System.IO.StreamReader sr = new System.IO.StreamReader
(@"C:\test.txt", System.Text.Encoding.GetEncoding(932));

「@"C:\test.txt"」の代わりにパスが格納してある変数を使いたいのですが
どのように書けばいいですか?
Visual C# 2008 w

167 :デフォルトの名無しさん:2008/11/06(木) 19:58:26
すみません。途中で送信してしまいました

Visual C# 2008 を使っています

168 :デフォルトの名無しさん:2008/11/06(木) 19:59:23
strint path = @"C:\test.txt";

169 :デフォルトの名無しさん:2008/11/06(木) 20:11:50
おいおいw

string path = @"C:\test.txt";
System.IO.StreamReader sr = new System.IO.StreamReader( path, System.Text.Encoding.GetEncoding(932));

170 :デフォルトの名無しさん:2008/11/06(木) 20:17:15
>>168-169
無事にできました。
ありがとうございました。

171 :デフォルトの名無しさん:2008/11/06(木) 20:25:31
VisualC#2008 ExpressEditionのWindowsフォームで、
DataGridViewに「区分」のコンボボックスを表示させました。
(DB上にコードと区分の内容を持つテーブルがあり、ValueMemberにコード、DisplayMemberに内容が表示されるように設定しました)

区分コード他、約30カラム分のデータをDataTableに取得→DataGridViewのDataSourceに設定
という方法を現在とっているのですが、
DataGridViewが表示される際に区分のコンボボックスが何も選択されていない状態で表示されています。

DataTable内の区分コードに対応する区分をコンボボックスに自動で表示させるにはどのようにすればよいのでしょうか?
どなたかヒントだけでも教えてください...

172 :デフォルトの名無しさん:2008/11/06(木) 21:45:44
RichTextBox にてログを表示させ、常に最新の行を表示させたいので、 HideSelection を False にし、

richText.Text += newLog;
richText.SelectionLength = 0;
richText.SelectionStart = richText.Text.Length;
richText.ScrollToCaret();

としているのですが、完全に最新の行を表示することができず、
ログ追加時の RichTextBox のサイズによっては最後の 1 行が半分で切れてしまったり、全く表示されなかったりします。

最新の行を完全に表示させる方法はあるのでしょうか。

173 :172:2008/11/06(木) 21:48:51
訂正です。

richText.Text += "\r\n" + newLog;

でした。

174 :デフォルトの名無しさん:2008/11/06(木) 22:11:21
ビットマップのラスタオペレーションって出来ないんでしょうか?
APIを呼ばなきゃむり?

175 :デフォルトの名無しさん:2008/11/06(木) 22:25:22
デザインのプロパティでフォントを10ptとかに設定するとなぜか9.75ptになってしまいます
なぜですか?

176 :デフォルトの名無しさん:2008/11/06(木) 22:40:45
>>175
ならないけど?

まあ実質10ptっていわれても96dpiだと
9.75em → 13px
10.5em → 14px
だからピクセルの端数をなくすとそうなるんでしょうが

177 :デフォルトの名無しさん:2008/11/06(木) 22:40:45
>>172
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.textboxbase.scrolltocaret(VS.80).aspx

RichTextBox使ったこと無いからわからんけど
ScrollToCaret()メソッドは文字通りCaretまで移動したら終わりみたいだから
それは仕様じゃないかな

richTextBox1.HideSelection = false;
richTextBox1.AppendText("log" + "\r\n");

でいいと思うけど

178 :デフォルトの名無しさん:2008/11/06(木) 23:23:19
TextBoxである文字列だけ色やフォントをカエルにはどうすればいいですか?

179 :デフォルトの名無しさん:2008/11/06(木) 23:27:28
できません。
RichTextBoxかWPFへどうぞ

180 :デフォルトの名無しさん:2008/11/06(木) 23:29:29
羽できないんですか(´・ω・`)生善治先生なら

181 :デフォルトの名無しさん:2008/11/06(木) 23:30:00
タイプミスです
できないんですか(´・ω・`)

182 :デフォルトの名無しさん:2008/11/06(木) 23:45:40
どういうタイプミスしたら羽生先生が紛れ込むんだよw

183 :デフォルトの名無しさん:2008/11/07(金) 00:24:39
>>175
同じ症状だ。仕様かと思ってた。

 9pt → 9pt
10pt → 9.75pt
11pt → 11.25pt
12pt → 12pt
13pt → 12.75pt
14pt → 14.25pt
15pt → 15pt
16pt → 15.75pt
18pt → 18pt

3の倍数以外は丸められてるのかな。

184 :デフォルトの名無しさん:2008/11/07(金) 00:28:02
>>175
Visual Studio の話ならスレ違い。

185 :172:2008/11/07(金) 00:40:54
>>177
なるほど、このメソッドはこういう仕様なのですか。
引き続きメッセージ関連を調べてみることにします。

ありがとうございました。

186 :デフォルトの名無しさん:2008/11/07(金) 00:51:29
10ptのフォントの幅が何ピクセルか考えりゃ分かるよ

187 :デフォルトの名無しさん:2008/11/07(金) 13:54:33
フレームワーク内でEventHandlerに使用されているデリゲートは一様にsenderの型がobjectになっていますが、
これは.NETのデザインルールでこうなっているのでしょうか?
キャスト回数を最小限にする為に、あるクラス用にジェネリックなハンドラを自作してイベントを定義することに起因する問題はありますか?

public delegate MyEventHandler<TEventArgs>(MyClass sender, TEventArgs e) : where TEventArgs : EventArgs;

188 :デフォルトの名無しさん:2008/11/07(金) 14:17:24
イベントハンドラの使いまわしができなくなる
タイマとボタンクリックで同じハンドラ、みたいな

189 :デフォルトの名無しさん:2008/11/07(金) 14:40:03
質問があります。
WPFのアプリケーションのある動作(終了処理)に、ショートカットキーを割り当てたいと思います。
http://youryella.wankuma.com/Library/Extensions/Button/ShortcutKey.aspx
を参考に、ボタンbutton1を作り、
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
// Ctrl + W をボタンのショートカットキーとして処理する
if ((int)keyData == (int)Keys.Control + (int)Keys.W)
{
this.button1.PerformClick();
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}

public void button1_Click(object sender, CancelEventArgs e){
Close();
}
としてみましたが、この方法は、Formアプリケーションで、
using System;
using System.Windows.Forms;
であるため、WPFではそのままでは動作しません。
エラー 1 型または名前空間名 'Keys' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
となります。

WPFに対応するには、なにを参照すればよいんでしょう?
あるいはそもそも違う方法がありますか?
Formの場合は、プロパティでショートカットを指定できるのですが、WPFではショートカットの項目が見当たらないし。


190 :デフォルトの名無しさん:2008/11/07(金) 14:47:29
Commandの仕事だな
<Window.InputBindings>
  <KeyBinding Key="..." Command="..."/>
</Window.InputBindings>
<Window.CommndBindings>
  <CommangBinding Command="..." Executed="実行したいメソッド"/>
</Window.CommandBindings>
CommandはApplicationCommandsの中から適当に選ぶか自作するか

あとはWindowのPreviewKeyDownとか

191 :デフォルトの名無しさん:2008/11/07(金) 14:50:56
>>188
もちろん再利用性が限定されるのを認識した上で使用を予定しています。
アクセス権の指定はinternalの方が適切かもしれません。ごめんなさい。
主に、アプリ内部での独自のGUIイベント伝達に使用します。

内部の実装上、そのイベントにはホスト側で確実にハンドラがセットされ、
また、そのハンドラ内でsenderにアクセスするためにキャストが発生するので、
objectで渡すよりはクラスで渡した方が効率的に処理でき、コーディングもしやすいと考えています。

フレームワークでは汎用性を第一に考えた為にobjectになっていることは想像しましたが、
例えば、特定のクラスに特化したWebBrowserDocumentCompletedEventHandlerでもsenderがobjectとされている為
(このハンドラ内ではDOMアクセスを行うことが多いので、senderはWebBrowser型の方が都合が良い様に思える)、
この実装には何か特別な意味があるのかと思い質問した次第です。

192 :デフォルトの名無しさん:2008/11/07(金) 15:00:17
他のWebBrowser実装を作ったときにデリゲート使いまわせないじゃん

まあガイドラインは基本的に外から見えるものに対するものだから
そうでないのについては自由にすればいいよ

193 :デフォルトの名無しさん:2008/11/07(金) 15:00:31
はなくそうめぇなぁ

194 :デフォルトの名無しさん:2008/11/07(金) 15:11:38
>192
ありがとうございます。

195 :デフォルトの名無しさん:2008/11/07(金) 16:41:54
C++のconstみたいに、戻り値にconstを付けて値を変更できなくするようなことってできますか?
具体的には、内部のリスト(List<>)を外部に渡し、外部からは参照のみが可能としたいんです
どなたかお願いします。

196 :デフォルトの名無しさん:2008/11/07(金) 16:55:32
>>195
そういうとき.NETではList<T>ではなくReadOnlyCollection<T>を返すように実装する

197 :デフォルトの名無しさん:2008/11/07(金) 17:02:04
おお、こんなのあるんですね。参考になります
早速実装してみます。ありがとうございました

198 :デフォルトの名無しさん:2008/11/07(金) 17:12:58
次は「要素のメンバが変更できるじゃないか」ですね

199 :デフォルトの名無しさん:2008/11/07(金) 17:33:27
>>190
もうすこし教えてください。
<Window.InputBindings>
<KeyBinding Key="W" Command="CloseCommand"/>
</Window.InputBindings>
<Window.CommndBindings>
<CommangBinding Command="CloseCommand" Executed="Close()"/>
</Window.CommandBindings>

としてみましたが、
エラー 1 タグ 'Window.CommndBindings' は、XML 名前空間 'http://schemas.microsoft.com/winfx/2006/xaml/presentation' にありません。
エラー 2 要素 '<Window.CommndBindings>' の終了タグが見つかりませんでした。
エラー 3 アタッチ可能なプロパティ 'CommndBindings' が、型 'Window' に見つかりませんでした。
エラー 4 型 'CommangBinding' が見つかりませんでした。アセンブリ参照が失われていないか、また、すべてのアセンブリがビルドされているかを確認してください。

といろいろエラーが。
なにか参照が必要でしょうか?


200 :デフォルトの名無しさん:2008/11/07(金) 17:40:23
スペルミスぐらい脳内補完しておくれ

201 :デフォルトの名無しさん:2008/11/07(金) 17:45:18
エラーメッセージちゃんと読めばすぐわかるのにw

202 :デフォルトの名無しさん:2008/11/07(金) 17:55:26
MSDNとかヘルプ見る癖もつけるといいよ
サンプル多いしね

203 :デフォルトの名無しさん:2008/11/07(金) 17:57:41
>>200、201
あ。そういうことか。
失礼しました。
4種類もエラーが出て、混乱してました。
で、スペルミスは修正して、
http://blogs.wankuma.com/kazuki/archive/2008/03/24/129252.aspx
を参照しつつ、
<Window.InputBindings>
<KeyBinding Key="W" Command="Close"/>
</Window.InputBindings>
<Window.CommandBindings>
<!-- Closeコマンドが発行されたらClose_Executedを呼びます -->
<CommandBinding Command="Close" Executed="Close_Executed" />
</Window.CommandBindings>
としました。
すると、
エラー 2 'Window.Window1' に 'Close_Executed' の定義が含まれておらず、型 'Window.Window1' の最初の引数を受け付ける拡張メソッドが見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
と。
Executedは、メソッドを呼ぶということで、.csには、Closeというメソッドはあるので、
<CommandBinding Command="Close" Executed="Close" />
としてみましたが、
エラー 2 デリゲート 'System.Windows.Input.ExecutedRoutedEventHandler' に一致する 'Close' のオーバーロードはありません。
アドバイスいただきたく。


204 :デフォルトの名無しさん:2008/11/07(金) 18:07:31
>>203
Close_Executedを自分で定義すればいいだけじゃ?

205 :デフォルトの名無しさん:2008/11/07(金) 18:23:05
>>204
それはいちおうやってみていて、
public void Close_Executed(object sender, CancelEventArgs e){
Close();
}
というのは試しているのですが、おなじエラーがなくならないのです。


206 :デフォルトの名無しさん:2008/11/07(金) 18:26:57
なぜ頑なにヘルプを見ようとしない
CommandBindingんとこにサンプルもあるのに

207 :デフォルトの名無しさん:2008/11/07(金) 18:30:04
>>205
参考にしてるとこで
private void Close_Executed(object sender, RoutedEventArgs e)
となってるだろ?
実際それでやってみなよ。

208 :デフォルトの名無しさん:2008/11/07(金) 19:08:31
みんな、エラーメッセージは怖くないんだ。とてもいい奴らなんだ。
だから、質問する前にちゃんと彼らの言っていることを理解してやってくれ。

エラーにヒントが山ほど書いてあるのに、無視してる人が多いので一応。
まあ、意味が分かりづらいってのは確かだけど。

209 :デフォルトの名無しさん:2008/11/07(金) 19:11:45
でもアセンブリ参照が不足してる、とかのエラーはうぜえだけだな
不足してるなら勝手に追加してくれよ、と

210 :デフォルトの名無しさん:2008/11/07(金) 19:36:22
それはそうだが、
エラー 1 Commangは追加されませんでした。
で丸投げしてくるぜ

211 :デフォルトの名無しさん:2008/11/07(金) 20:15:24
>>206
頑なにヘルプを見ようとしないわけでなくて、
なにでどこを見たらいいか、ぴんと来てませんでした。
msdnを
C# CommandBinding
C# InputBinding
で検索して、解決しました。ありがとうございます。

>>207
おっしゃるとおり、そのように修正しました。
ありがとうございます。

>>208
エラーにヒントが書いてあることはわかるんですけど、
なかなか読み下せないんです。

>>209
そうそう。不足してるなら勝手に参照してくれよと。
ほんとにそうです。


212 :デフォルトの名無しさん:2008/11/07(金) 20:19:38
勝手に参照されたら困るだろ
アセンブリのバージョンもあるし、同じ名前の別の型があるかもしれない

213 :208:2008/11/07(金) 21:15:40
>>211
とりあえず、エラーの内容が分からなければエラー内容中のそれっぽい単語をググ(or MSDN)ってみるべし!
意味の分からない単語もついでにググってみるべし!

意味の分からない単語ググるのは意外と重要。
C# を勉強中なら特に。

214 :デフォルトの名無しさん:2008/11/07(金) 21:32:46
>>212
ダイアログでも出して確認してくれればよくないか?
今みたいにエラーエラー騒ぐよりはずっとまし

215 :デフォルトの名無しさん:2008/11/07(金) 22:14:14
余計なお世話だろ
エラーとだけ告げてくれれば何の問題もない

216 :デフォルトの名無しさん:2008/11/07(金) 22:16:06
そもそも参照出来てないのにどうやって追加するんだ。
そりゃまあ推測はある程度出来るにしても。


217 :デフォルトの名無しさん:2008/11/07(金) 22:21:20
まあそういう機能があったら親切と言うよりお節介だよな。

218 :デフォルトの名無しさん:2008/11/07(金) 22:58:32
>>214
それは組み込みのクラスライブラリのアセンブリだけを特権的に扱うことを
自動的に意味するわけだけど、そういうのはソフトウェアデザインとしてまずいでしょ。

219 :デフォルトの名無しさん:2008/11/08(土) 00:34:06
勝手にダイアログが出たらウザイな

エラーをダブルクリックするとGACからそれらしいアセンブリを探し出して
リストアップしてくれるのなら有ってもいいが、
別に無くてもいいな。

220 :デフォルトの名無しさん:2008/11/08(土) 02:53:55
Properties.SettingsってGUIで設定いじいじしたらコード自動生成してくれてかなり便利だけど
設定の保存場所が\Local Settings\Application Data\でアプリのあるフォルダじゃないから
たとえばUSBメモリなんかで持ち歩きたいアプリじゃ使えないよね?
そういうのに使いたい場合どうすんのん?

221 :デフォルトの名無しさん:2008/11/08(土) 02:57:09
>>220
終了したときの画面の位置などを記憶させるものなんで、
消えて困るような情報はそこには置かないのがセオリー。
Saveダイアログボックスでセーブ先を指定できるようにする。


222 :デフォルトの名無しさん:2008/11/08(土) 14:04:06
しかし思うんですが、C#やVB.NETでも同じように、オブジェクト指向設計や
同プログラミングでチームで開発するという場合、横割りでクラス分担する
とかするという方法では、基本的にメソッドなどのインターフェースを最初に
決めておいて一斉に作成作業に取り掛かるとなったとき、

後から後から次々にここはこうでないとダメだった、こうしよう、あれはああ
でなかったらできない、こうしよう、どうしよう・・・というインターフェースの変更が
とめどもなく現れてくる予感がして、収集が付かなくなる感じがするのですが、

実際にやっておられる方々はそうした点をどうやって乗り越えておられるのですか?
よろしかったら教えてください。

223 :デフォルトの名無しさん:2008/11/08(土) 14:08:10
なんか新しい日本語だな

224 :デフォルトの名無しさん:2008/11/08(土) 14:08:32
それは設計がダメダメだからだな。
というか、そんな奴に設計をやらせないというのが答えだな。

225 :222:2008/11/08(土) 14:23:20
>>224
そうですか、なるほど、ただ実際にはそれほど少ないインターフェースの
変更で済むものなのかということなのですが、たとえばこれを横割りではなくて
縦割りで任せるという方法でやっておられるところもあるでしょうか、
あるいはこれだと返ってほかに難点が生じるでしょうか。


226 :デフォルトの名無しさん:2008/11/08(土) 14:24:33
マ板いけよ

227 :デフォルトの名無しさん:2008/11/08(土) 15:07:39
>>225
縦割りでも横割りでもなく、階層化だろ。

228 :デフォルトの名無しさん:2008/11/08(土) 15:16:38
縦割りっていうのは普通組織が階層化されていることを言うんだよw
恥ずかしい奴だな。

229 :デフォルトの名無しさん:2008/11/08(土) 15:19:04
え?

230 :デフォルトの名無しさん:2008/11/08(土) 15:22:16
縦割りは階層の上から下までの括りだろ

231 :デフォルトの名無しさん:2008/11/08(土) 15:32:26
縦割り行政が階層化されているとな

232 :デフォルトの名無しさん:2008/11/08(土) 19:39:29
縦割りの「割り」はどこに消えたんだろうか

233 :デフォルトの名無しさん:2008/11/08(土) 19:57:00
ネタ…だよな…?

234 :222:2008/11/08(土) 20:49:55
>>227

縦割り、の意味は、結局、クラスの似たようなもののダブりはある程度許す
ことにして、開発スピードを重視し、手戻りの際の振り回されをできるだけ
すくなくするために自分でやれる範囲をできるだけ閉じた範囲に閉じ込める
方式にできるのではないか、という意味です。


235 :デフォルトの名無しさん:2008/11/08(土) 21:12:19
ウィンドウ最大化で閉じて、次開くときサイズ設定ロードしたらノーマル状態で最大化サイズボスケテwww

236 :デフォルトの名無しさん:2008/11/08(土) 21:24:01
Form.WindowState みて最大化されてたらフラグ立てて保存しろ
最大化されてたらBoundsじゃなくてRestoreBoundsを保存しろ

237 :デフォルトの名無しさん:2008/11/08(土) 21:35:53
ほかにも、前回起動したときとモニタの状態が変わったので、
前回の位置のままだと画面の外になってしまうとか、
考えないといけないことはまだある。

238 :デフォルトの名無しさん:2008/11/08(土) 21:41:26
>>234
意味不明な俺用語使わず最初からそう言えよ。つまり疎結合って言いたいんだろ?

しっかし、>>222のような酷い状況になるのは、単に設計した奴が無能なだけだと思うが・・。

239 :デフォルトの名無しさん:2008/11/08(土) 22:20:02
最大化されてるのに他のソフトによって最大化されてないと偽装されてたらどうすればいい?
もしかしたら俺のソフト未知のマルウェアの被害にあってるかもしれん

240 :デフォルトの名無しさん:2008/11/08(土) 22:59:35
病院にいけ

241 :デフォルトの名無しさん:2008/11/09(日) 06:34:22
stringに入っている文字列の文字コードが不明な場合、
どのように調べたらいいのでしょうか?
よろしくお願い致します。

242 :デフォルトの名無しさん:2008/11/09(日) 06:44:27
>>241
stringやcharはunicodeで固定、byte[]やコード変換前の状態で調べないとダメ。

243 :デフォルトの名無しさん:2008/11/09(日) 12:23:09
指定されたキーは、このアルゴリズムには有効なサイズではありません。
といわれるのですがどうしてでしょうか?

byte[] key = Encoding.ASCII.GetBytes("password");
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
des.Key = key;
des.IV = key;
tran = des.CreateEncryptor();

244 :デフォルトの名無しさん:2008/11/09(日) 12:33:40
そんな馬鹿なコード書くなって言うお告げだよ。
っていうかメッセージのまま。

TripleDESCryptoServiceProvider調べな。
つってもまず本当の問題は
byte[] key = Encoding.ASCII.GetBytes("password");
こんなやり方しちゃ駄目ってことだ。


245 :デフォルトの名無しさん:2008/11/09(日) 12:36:18
>>243

http://msdn.microsoft.com/ja-jp/library/system.security.cryptography.tripledes.key.aspx

>このアルゴリズムは、128 ビットから 192 ビットのキー長を 64 ビット単位でサポートしています。

246 :デフォルトの名無しさん:2008/11/09(日) 12:38:04
環境:C# VisualStadio 2005
データベースはAccess2003で、text,text2,text3という項目名のテキスト列が3列あります。

datagridviewに表示・入力した内容をDBへ反映したいのですが、
検索した情報を元に試してみて、主キーを更新しようとすると
「UPDATE ステートメントの構文エラーです。」と出て更新できません。
主キー以外の列は更新はできるのですが、主キーを更新できない原因が分かりません。
以下のようなコードなのですが、

private void Form1_Load(object sender, EventArgs e)
{
cn.ConnectionString = "Provider=MicroSoft.Jet.OLEDB.4.0;Data Source=サンプル1.mdb"; //接続するDBを指定
da = new OleDbDataAdapter("Select * From week_table", cn);
da.Fill(ds, "曜日情報");
da = new OleDbDataAdapter("Select * From test_table", cn);
da.Fill(ds, "テスト情報");

dataGridView1.DataSource = ds.Tables["テスト情報"];
}

private void button4_Click(object sender, EventArgs e)
{
for (int i = 0; i < ds.Tables["テスト情報"].Columns.Count; i++)
{
ds.Tables["テスト情報"].Rows[ds.Tables["テスト情報"].Rows.Count - 1][i] = dataGridView1[i, 0].Value.ToString();
}
OleDbCommandBuilder cmd = new OleDbCommandBuilder(da);
da.Update(ds, "テスト情報");
}

何故主キーだけ更新できないのでしょうか orz

247 :デフォルトの名無しさん:2008/11/09(日) 12:39:47
VisualStadio2003では.NET2.0以降の開発はできないんでしょうか?
2005でないとダメ?

248 :246:2008/11/09(日) 12:43:36
書き忘れました。
練習段階のため、データベースには1行分しかデータが入っておらず、
1行分をちゃんと更新できるか試そうとしています。

249 :243:2008/11/09(日) 12:54:41
あちこちHPを見ていたのでDESCryptoServiceProviderを使う所を
TripleDESCryptoServiceProviderを使っていたのが原因みたいです。

>このアルゴリズムは、64 ビットのキー長をサポートしています。
この差なのですね。

250 :デフォルトの名無しさん:2008/11/09(日) 13:03:58
うん。
ただ、パスワードをそのままキーにするなんてのは本当はやっちゃいけない。

良くないサンプルばっかなんだけどね。


251 :デフォルトの名無しさん:2008/11/09(日) 13:15:50
>>246
DataSet系ではできない。書き換えが必要な場合は直接SQLのUpdateを使う。
主キーの書き換えはRDB上はできるが、
書き換えを前提としたシステムデザインは避けるべきだというのが一般的で、
DBのフレームワークやミドルウェアでは許してないことが多い。

252 :246:2008/11/09(日) 13:39:08
>>251
すいません、まだレベルが低いので仰っている事があまり理解できません。
別のプログラムで、

private void button6_Click(object sender, EventArgs e) //更新処理
{
for (int i = 0; i < ds.Tables["テスト情報"].Columns.Count; i++)
{
ds.Tables["テスト情報"].Rows[Rcnt][i] = arrtxt[i].Text;
}
dataGridView1.DataSource = ds.Tables["テスト情報"];

OleDbCommandBuilder cmd = new OleDbCommandBuilder(da);
da.Update(ds, "テスト情報");
}

Rcntは現在アクティブなセルの行のインデックス番号、arrtxt[i]は更新用のテキストボックスの内容が入っており、
こちらでは主キーも更新できるようになっています。
今回は、datagridviewに直接入力して更新(主キー含む全てできるよう)をかけたいのです。
上記のプログラムを参考に246に書いたプログラムを作ったのですが、
どこをどうすれば主キーも更新できるようになるのか、
理解力に乏しいので分かりません orz

253 :デフォルトの名無しさん:2008/11/09(日) 13:50:52
>>252
OleDbCommandBuilderを使わず.UpdateCommandなどを自前で実装する。

254 :デフォルトの名無しさん:2008/11/09(日) 15:59:14
VC#2005でエクスプローラにある「名前」「サイズ」「種類」「更新日時」のような
オブジェクト内の情報を分割?して表示させるコンポーネントはありますか?

255 :デフォルトの名無しさん:2008/11/09(日) 16:00:38
DataGridView とか?

256 :デフォルトの名無しさん:2008/11/09(日) 16:07:07
エクスプローラのはListViewだがデータバインドできないからなー

257 :デフォルトの名無しさん:2008/11/09(日) 16:23:19
インクリメンタル検索というかコンボボックスの絞り込みについて質問です。
http://msdn.microsoft.com/ja-jp/library/envdte80.incrementalsearch.aspx
に、テキスト検索のインクリメンタル検索は見つけました。
コンボボックスの場合は、どの辺りを探せばいいですか?

もしないとすると、
キー入力を監視する。
KeyDown
KeyUp
で入力されたキーを得る。
それにマッチする行だけ抜き出す。
をくり返すのかな、と思うのですが(実装できるかどうかは心もとない)、それで方針的にはオーケー?

258 :デフォルトの名無しさん:2008/11/09(日) 17:01:37
>>257
その見つかったってやつVSの機能の話じゃないの?
もしないとすると、じゃなくてそんなのないだろ

「combobox インクリメンタル」でぐぐってみた?

259 :デフォルトの名無しさん:2008/11/09(日) 19:26:31
>>258
あるよ。ただ機能の名前が間違ってるだけ。
>>257が言ってるのはオートコンプリート機能のことだろう。

260 :デフォルトの名無しさん:2008/11/09(日) 19:28:29
あーでもYoutubeの検索みたいな機能のことを言ってるとしたら全然違うか。

261 :デフォルトの名無しさん:2008/11/09(日) 19:48:28
絞り込みさせる程一つのコンボボックスに詰めるなといいたい

262 :デフォルトの名無しさん:2008/11/09(日) 20:43:19
じゃなくて、だから通常のコンボボックスの使い方ではなくて
ドロップダウン部分を候補一覧の表示に使いたいって意味かもよ。

263 :デフォルトの名無しさん:2008/11/09(日) 21:20:22
オートコンプリートとインクリメンタルサーチの区別もできないって……

264 :デフォルトの名無しさん:2008/11/09(日) 22:08:51
>>259
ばっちりGoodそのとおりでした。
名前を間違えていました。
というか、普通インクリメンタルサーチだろうと思っていたんだけど、これ、オートコンプリートっていうんですね。
まさかこんな簡単にできるとは…。
大感謝です。


265 :246:2008/11/09(日) 22:16:57
原因が判明したので一応報告に。
SQLで"text"が予約語?だったらしく、列名を"text1"に変えたら、
問題は解消されました。

>>253
返答ありがとうございます。
私が作ろうとしているシステム(学校の課題ですが)では、
ビルダーより253さんの仰っている、UpdateCommandなどを自前で実装する
というやり方を使ったほうが良さそうなので、そちらを使おうと思います。

またお世話になると思いますが、その節は宜しくお願い致します。

266 :デフォルトの名無しさん:2008/11/09(日) 22:17:54
>>260
Youtubeの検索ってどんなのでしたっけ。あ、そうそう、これこれ。これを実現できたと思います。
>>262
そうです。ドロップダウン部分のリストを候補に使いたいと思ってました。


267 :デフォルトの名無しさん:2008/11/09(日) 22:22:25
これって合ってます?。ディレクトリなのにディレクトリとして結果が出ないフォルダがある。

ttp://msdn.microsoft.com/en-us/library/system.io.filesysteminfo.attributes.aspx

if (fsi.Attributes == FileAttributes.Directory)
{
entryType = "Directory";
}


268 :デフォルトの名無しさん:2008/11/09(日) 22:30:39
列挙体がFlagだからね……

if ( ( fsi.Attributes & FileAttributes.Directory ) == FileAttributes.Directory )

こうでしょう?


269 :デフォルトの名無しさん:2008/11/09(日) 22:55:25
BackColor を LightPink 、 TransparencyKey を LightPink にしているのですが
輪郭部分になぜかピンクの線が写ってしまいます
どうやれば線を消せますか?
http://www2.imgup.org/iup726588.png

フォルダの画像は
http://www.iconspedia.com/icon/folder-3548.html
PNGの256x256 pxを使っています

270 :デフォルトの名無しさん:2008/11/09(日) 22:56:51
糞アプリ作ったんだけど使用メモリ20MBも使ってた
何でこんなに大きいの

271 :デフォルトの名無しさん:2008/11/09(日) 22:57:49
ウィンドウを最小化してみようね

272 :デフォルトの名無しさん:2008/11/09(日) 23:01:11
>>269
100%透明ではない部分が残ってるんだよ
アルファでフォームの背景透過は無理

273 :269:2008/11/09(日) 23:02:18
>>271
ウィンドウを最小化・・・?
すみません、意味がよくわからないです・・

274 :デフォルトの名無しさん:2008/11/09(日) 23:09:32
>>271>>270に対して

275 :デフォルトの名無しさん:2008/11/09(日) 23:17:41
フォームに何も貼らないでも10MBくらいだった気がするんだが

276 :デフォルトの名無しさん:2008/11/09(日) 23:21:33
>>272
透過は不可能なのですか・・?

>>274
すみません、一昨日からずっとこれがわからなくて早とちりしてしまいました><

277 :デフォルトの名無しさん:2008/11/10(月) 01:16:47
>>271
Vistaでは効かん罠。
もちろん、Vistaがまともに動く性能があれば20MBくらいなんてことないけど。

278 :デフォルトの名無しさん:2008/11/10(月) 01:31:29
string temp = ">゚";
bool b = temp.StartsWith(">");

とするとなぜかbはfalseになります。

゚が悪いようでこれがないか他の文字なら何とかなるのですが,
なぜこんなことになるのかがわかりません.
文字コードとか何か関連しているのでしょうか?


279 :デフォルトの名無しさん:2008/11/10(月) 01:47:11
>>278
temp.StartsWith(">", StringComparison.OrdinalIgnoreCase);ならtrueになるんだな。

280 :デフォルトの名無しさん:2008/11/10(月) 03:08:09
このメソッドは、現在のカルチャを使用して、単語 (大文字/小文字を区別し、カルチャに依存した) 比較を実行します。

bool b = "か゛".StartsWith("か"); //false
bool b2 = "か゛".StartsWith("が"); //true

カルチャに依存した比較だと次の文字に濁点、半濁点が付いてるかも判断するみたいだな

281 :デフォルトの名無しさん:2008/11/10(月) 04:08:00
>>277
Vistaなら既定ではprivateワーキングセットしか表示しないからガタガタ言う奴もあんまいないっしょ

282 :デフォルトの名無しさん:2008/11/10(月) 05:44:57
>>269
アイコンにアンチエイリアスがかかっているのが原因。
それを取り除くか、P/InvokeでUpdateLayeredWindow()を呼び出す。

283 :280:2008/11/10(月) 09:09:53
半濁音がついているとしてfalseになってしまったのですね.
記号の判別の関数だったので思いもよりませんでした.

ありがとうございました.

284 :デフォルトの名無しさん:2008/11/10(月) 12:23:38
プラグイン機能のあるアプリケーションを作成しているのですが、
プラグインからの外部プロセスの起動を抑制するにはどうしたらいいでしょうか?
ファイルやレジストリなどは該当するSecurityPermissionAttributeがあったので
それでアクセスを禁止することができたのですが、外部プロセスに関するものは
見あたりません。
ネイティブコードからのアクセスならDllImportなどをリフレクションで調べて弾けるのですが…

285 :デフォルトの名無しさん:2008/11/10(月) 13:19:19

おまいら、これ聴いとけ!

ビデオ音声
小沢代表 勝谷誠彦 ニコニコ動画 一万人ネット会見 ニコ動 小沢 勝谷 ≪ Scrap Japan
http://scrapjapan.wordpress.com/2008/11/05/ozawa/

これ見とけ!

『史上初!1万人ネット会見』 Part.1‐ニコニコ動画(秋)
http://www.nicovideo.jp/watch/so4847502


286 :デフォルトの名無しさん:2008/11/10(月) 13:26:24
コ(ry

287 :デフォルトの名無しさん:2008/11/10(月) 16:10:58
環境アクセス権限みたいのでいけなかったかいな?

288 :デフォルトの名無しさん:2008/11/10(月) 17:52:26
VC#2008でWindowsアプリケーションを作ってるんだが、
DataGridView内の特定の行だけ罫線のスタイルを変更することって可能?

289 :284:2008/11/10(月) 18:42:26
>>287
ためしに

[EnvironmentPermission(SecurityAction.Deny, Unrestricted = true)]

と基底クラスに付けてみましたが、Process.Start()で普通に
外部プロセスを起動できてしまいます orz

290 :デフォルトの名無しさん:2008/11/10(月) 19:13:23
>>289
Process.Start()はFullTrustをLinkDemandで要求している。
LinkDemandはJIT時に一回チェックするだけなので既定クラスでセキュリティを
制限した時には既にJITが終わっていると考えられる。
プラグインが独立したアセンブリならアセンブリの属性で制限をかけたらだめかな?

291 :デフォルトの名無しさん:2008/11/10(月) 21:42:53
C#である程度形の見えたプログラムができかけたときにとある機能を付け加えようと思いAPIを調べたらPHP用しか見つかりませんでした。
C#から一時的にPHPのプログラムを呼び出す形でそのPHP用のAPIを使ってみたいのですが、C#から呼び出すことはできるのでしょうか?


292 :デフォルトの名無しさん:2008/11/10(月) 21:44:59
>>291
Process.Start()
何の API かしらんが多分よく探せば C# 用のやつもあるだろうけどな。

293 :デフォルトの名無しさん:2008/11/10(月) 21:46:06
とある機能というのを晒せばだれか教えてくれるよ

294 :デフォルトの名無しさん:2008/11/10(月) 21:50:46
>>289-290
そうことをするためにアプリケーションドメインというものがあるのだと思うんだけど

295 :デフォルトの名無しさん:2008/11/10(月) 21:50:53
>>292
ありがとうございます。

>>293
Asteriskを用いたSIPサーバの機能管理ができるAsterisk Managerというものを使用しようとしてAPIを探していました。
自分の英語力不足でPHP用しか見つからなかったのですorz

296 :デフォルトの名無しさん:2008/11/10(月) 21:51:33
STAだかなんだかしらんが、マルチスレッドで呼び出せないメソッドとかいい加減にしろよ
大きなお世話だっつの・・

297 :284:2008/11/10(月) 22:00:09
>>290
ちょっとよくわからないのですが、プラグインのインターフェースが定義されているアセンブリ
にこの属性を適用するということでしょうか?

試しに

[assembly: EnvironmentPermission(SecurityAction.LinkDemand, Unrestricted = true)]

を付けてみましたが、

アセンブリの生成に失敗しました -- アセンブリの SecurityAction 型が無効です。

と怒られてしまいました。どうやらRequest〜という物しか適用できないみたいですが、
RequestOptionalをつけてReadで読み取れるものを指定してやればいいのでしょうか?
Readを指定しないと元のプログラムからもファイルアクセスができなくなってしまうみたいですが…

298 :デフォルトの名無しさん:2008/11/10(月) 23:05:33
いやちがう、だから後から制約を適用することはできないって話。
まー>>294みたいにやればできると思うけど、なれてないとイヴバラの道かもな…

っていうかLinkDemandうざすぎるぜ。
パフォーマンス上の理由なんだろうけど。


299 :デフォルトの名無しさん:2008/11/10(月) 23:06:22
>イヴバラ
イバラだよっ


300 :284:2008/11/11(火) 00:00:57
>>298
調べてみましたがますます?が増えるばかり… orz
LinkDemandの説明を見てて思ったのですが、プラグインのローダーを動的にコンパイルし、
そいつに[assembly: SecurityPermission(SecurityAction.RequestOptional)]を当てておけば
プラグインのロード時にはFullTrustは取れないと思うのですがこれでいけますかね?

301 :デフォルトの名無しさん:2008/11/11(火) 08:42:46
特定のフォルダ以下のフォルダ名とファイル名及び内容を暗号化したいと考えております。
DESCryptoServiceProvider、CryptoStreamで暗号化した場合に出力される文字でフォルダ
またはファイル名として使用した場合に問題のある文字は含まれているのでしょうか?。
また出力される文字範囲はどういうものでしょうか?。

302 :デフォルトの名無しさん:2008/11/11(火) 09:12:02
文字って
出力されるのはバイト列だよ。
どんなバイト列でもあり得る。
16進文字列にでもしな。


303 :デフォルトの名無しさん:2008/11/11(火) 09:17:28
>>302
たしかにバイト列でした、ありがとうございます。

304 :デフォルトの名無しさん:2008/11/11(火) 10:01:57
>>300
// AbstractPlugIn.cs プラグイン抽象クラス ここでLocalIntranetに制限
using System.Security.Permissions;
[assembly: PermissionSet(SecurityAction.RequestOptional, Name="LocalIntranet")]
public abstract class AbstractPlugIn {
 public abstract void Start();
 public void SecStart() { Start(); } // LocalIntranetの制限下でStart()を実行
}
// MyPlugIn.cs プラグイン実装クラス
public class MyPlugIn : AbstractPlugIn {
 public override void Start() {
   System.Diagnostics.Process.Start("notepad");
 } 
}


305 :304:2008/11/11(火) 10:05:22
/*
csc /t:library AbstractPlugIn.cs
csc /t:library /r:AbstractPlugIn.dll MyPlugIn.cs
csc /r:AbstractPlugIn.dll testa.cs
testa
*/
using System;
using System.Reflection;
class Startup {
 [STAThread] static void Main() {
   try {
     AbstractPlugIn plugIn = (AbstractPlugIn) Activator.CreateInstance(Assembly.LoadFrom("MyPlugIn.dll").GetType("MyPlugIn"));
     // plugIn.Start();
     plugIn.SecStart();
   } catch (Exception ex) { Console.WriteLine(ex); }
}}


306 :304:2008/11/11(火) 10:14:58
今回の問題解決のためにプラグインを動的に読み込む必要はないのだが、
プラグインは一般的に動的に読み込むことが多いのでそうしている。

307 :デフォルトの名無しさん:2008/11/11(火) 12:49:53
ディレクトリの削除は出来るのに名前を変えようとすると共有違反になるのはどうしてでしょう?

if (Directory.Exists(node.Name))
{
Directory.Move(node.Name, path_move);
}


308 :デフォルトの名無しさん:2008/11/11(火) 13:00:52
>>307
node.Nameとpath_moveのパス名の親ディレクトリが違うだけじゃねーの?

309 :デフォルトの名無しさん:2008/11/11(火) 13:30:48
>>308
ヒントありがとうございます。
path_moveの内容がnode.Nameの子フォルダになっていました-;。
すいません。

310 :269:2008/11/11(火) 16:36:04
>>282
ありがとうございます
Win32APIの呼び出しなんてやったことがないのでできるかわかりませんが、がんばってみます(`・ω・´)

311 :デフォルトの名無しさん:2008/11/11(火) 17:26:07
質問です。

Webページから、クライアントのローカルのEXEかDLL内のAPIをコールしたいと思ってます。
通常のブラウザのセキュリティでは無理だと思いますので、そのWebサイトは信頼済みサイトに登録してあるのは前提です。

ローカル資産にアクセスするDLLかなにかをインストールしてIEのプラグインのようなものを作りたいのですが、
C#で可能ですか?
また、ヒントとなるサイト等ありましたら、教えてください。

312 :デフォルトの名無しさん:2008/11/11(火) 17:33:15
>>311
ActiveXコントロール

313 :311:2008/11/11(火) 17:42:55
>>312
ありがとうございます。
C#でActiveXコントロールを作り、ローカルへインストールしておけばよいということですね。

314 :284:2008/11/11(火) 17:43:13
>>304
おお、うまくいきました!
ですが、本体のDLLに組み込んだところ起動時にエラーが… orz
書いてくださったサンプルではうまくいったので、もう少し悩んでみます。ありがとうございました。

315 :デフォルトの名無しさん:2008/11/11(火) 18:29:12
>>313
せっかくだからVC++で作ったらよか

316 :デフォルトの名無しさん:2008/11/11(火) 18:58:15
path_outのファイルの最後にゴミがついてしまうのですが原因は
while ((readLen = cs.Read(bs, 0, bs.Length)) > 0)
{
fs_out.Write(bs, 0, readLen);
}
にあるのでしょうか?

FileStream fs = new FileStream(path_in, FileMode.Open, FileAccess.Read);
CryptoStream cs = new CryptoStream(fs, transform, CryptoStreamMode.Read);
FileStream fs_out = new FileStream(path_out, FileMode.Create, FileAccess.Write);

byte[] bs = new byte[256];
int readLen;
while ((readLen = cs.Read(bs, 0, bs.Length)) > 0)
{
fs_out.Write(bs, 0, readLen);
}

fs_out.Close();
cs.Close();
fs.Close();



317 :316:2008/11/11(火) 19:04:40
別件でした


318 :311:2008/11/11(火) 19:12:50
>>315
C++だと、
ttp://d.hatena.ne.jp/propella/20061027/p1
こことか、
ttp://www14.big.or.jp/~ken1/tech/tech17.html
ここに作り方があったんで、わかったんですけど、
C#だと、Yahooツールバーみたいなのを作る参考サイトはあったんですが、Webページで使用するActiveXを作るのに
参考になるサイトがなくて…

319 :デフォルトの名無しさん:2008/11/11(火) 19:14:55
C++にしなさいよ

320 :デフォルトの名無しさん:2008/11/11(火) 19:18:46
C++でやってることをC#でやればいいんじゃね?
ActiveXってCOMインターフェイス実装して
regasmのときにレジストリに書くだけじゃね

321 :デフォルトの名無しさん:2008/11/11(火) 19:21:22
あれこれ悩んでる間にVC++で簡単に作れるよ

322 :デフォルトの名無しさん:2008/11/11(火) 19:37:15
動画編集で使うようなタイムラインを編集するアプリを作りたいのですが、
タイムラインのグラフを表わすオブジェクトをどうやって実装しようか悩んでいます。
動作としては、
 ・横に細長い単色で塗りつぶしたオブジェクト
 ・ドラッグすることにより左右にのみ動かせる
 ・左右のみ端をドラッグすることによってサイズ変更ができる
 ・移動とサイズの変更は8ドット単位
 ・ダブルクリックすることによりイベントを発生させる
実装方法としては
 ・描画からイベント処理まですべて自分で実装する
 ・いずれかのコントロールを継承して実装する
のどちらがよいのか、
コントロールを継承する場合は、
 ・どのコントロールを継承して、
 ・どのようにプロパティを設定して、
 ・どのイベントを処理すればよいのか
どなたかヒントを下さるとありがたいです。


323 :デフォルトの名無しさん:2008/11/11(火) 19:48:42
どちらがよいかと言われたら、Controlから継承して全部自前で完璧に作った方がいいに決まってる

324 :デフォルトの名無しさん:2008/11/12(水) 00:04:52
>>322
そういうのは大人しくControlから派生したほうがいいよ

325 :322:2008/11/12(水) 11:24:46
>>323 >>324
 どうもありがとうございます。Controlを継承してやってみることにします。


326 :デフォルトの名無しさん:2008/11/12(水) 15:29:01
Visual Studio 2008のデザイナで、突然
「○○○(コントロール名)は宣言されていないか、または割り当てられていません」
というエラーが出てデザイナで表示されなくなってしまうことがあります。
.Designer.csを見るとちゃんと宣言されているし、InitializeComponent()の中でnewされている
ようなのですが…
直接このファイルを変更したわけでもありません。
どうすればいいのでしょうか?

327 :デフォルトの名無しさん:2008/11/12(水) 15:48:51
いったんそのデザイナウインドウを閉じて再度デザイナを表示。
それでだめならウインドウを閉じてからプロジェクトをコンパイル後、再度デザイナウィンドウを開く。

328 :デフォルトの名無しさん:2008/11/12(水) 16:03:21
>>326
この前同じ感じになって結局OS入れなおしたよ

329 :デフォルトの名無しさん:2008/11/12(水) 17:01:31
なぜフォームだけformではなくFormなんでしょうか?

エスパーよろしく

330 :デフォルトの名無しさん:2008/11/12(水) 17:07:24
publicだからかな

331 :デフォルトの名無しさん:2008/11/12(水) 17:29:49
パブリックというだけで特別扱いですか
だったら俺もパブリックに産まれてきたかったな

332 :デフォルトの名無しさん:2008/11/12(水) 17:32:24
君の名前も大文字で始まると思うが。

333 :デフォルトの名無しさん:2008/11/12(水) 18:17:36
デザイナから必要じゃなくなったコントロールを消しても
Designer.csからコードが消えてない時があるね。
コンパイルエラー出るから手作業で消せばいいだけだけど。
でもイベントの削除の時はコードが消えるときと消えないときがあるから面倒。

334 :デフォルトの名無しさん:2008/11/12(水) 18:57:00
>>329
フィールド名じゃなくて型名だから

335 :デフォルトの名無しさん:2008/11/12(水) 21:41:33
ToolStripStatusLabelを一つだけ右に寄せようと思ったらプロパティにAlignmentが無い
そういうコンポーネント買うしかないんですか?

336 :デフォルトの名無しさん:2008/11/12(水) 23:32:11
は?

337 :デフォルトの名無しさん:2008/11/13(木) 00:07:31
>>335
Springプロパティをtrueに設定したダミーのToolStripStatusLabelを左に置く

338 :デフォルトの名無しさん:2008/11/13(木) 00:07:56
かめはめ?

339 :デフォルトの名無しさん:2008/11/13(木) 00:14:45
ほ?

340 :デフォルトの名無しさん:2008/11/13(木) 00:56:31
例外に関する質問です。
例外の発生位置はTargetSiteでわかりますが、
例外のキャッチ位置はわざわざ自分でnewしなおすかRefrection.MethodBase.GetCurrentMethod()しないとだめでしょうか?

341 :デフォルトの名無しさん:2008/11/13(木) 01:14:32
配列の配列について質問です。

firstlinecell1 firstlinecell2 firstlinekeywordcell3
secondlinecell1 secondlinekeywordcell2 secondlinecell3
thirdlinekeywordcell1 thirdlinecell2 thirdlinecell3

とデータがあるとき。keywordにマッチしたセルを出力するには、どうしたらいいですか?

using System.IO;
string fileName = ("c:\celltest.txt");
string[] lines = File.ReadAllLines(fileName, Encoding.GetEncoding("Shift_JIS"));
string[] cell = line.Split('\t');

foreach (string line in lines)
{
Console.WriteLine(cell[2]); //3セル目を出力
if (cell.Contains("keyword")) Console.WriteLine(cell); //ここがうまくいかない。
if (cell.Contains("keyword")) Console.WriteLine(cell.Contains("keyword"));//これもだめ。
Console.WriteLine(cell.Contains("keyword")); //これもだめ。
}
}


342 :デフォルトの名無しさん:2008/11/13(木) 01:25:17
>string[] cell = line.Split('\t');
lineってどっから出てきたの?
linesの各要素を'\t'でSplitしたいんじゃないの?

>if (cell.Contains("keyword")) Console.WriteLine(cell); //ここがうまくいかない。
>if (cell.Contains("keyword")) Console.WriteLine(cell.Contains("keyword"));//これもだめ。
>Console.WriteLine(cell.Contains("keyword")); //これもだめ。
cellじゃなくてlineじゃないの?

343 :デフォルトの名無しさん:2008/11/13(木) 01:28:33
たぶんこういうことだべ
foreach(string line in lines)
foreach(string cell in line.Split('\t'))
if(cell.Contains("keyword"))
Console.WriteLine(cell);


344 :デフォルトの名無しさん:2008/11/13(木) 01:31:34
Collectionが理解できてないと思われる

345 :デフォルトの名無しさん:2008/11/13(木) 01:32:54
質問用に清書してたら書き写し間違えました。

string[] lines = File.ReadAllLines(fileName, Encoding.GetEncoding("Shift_JIS"));

foreach (string line in lines)
{
string[] cell = line.Split('\t');
Console.WriteLine(cell[2]); //3セル目を出力
if (cell.Contains("keyword")) Console.WriteLine(cell); //ここがうまくいかない。
if (cell.Contains("keyword")) Console.WriteLine(cell.Contains("keyword"));//これもだめ。
Console.WriteLine(cell.Contains("keyword")); //これもだめ。
}


346 :デフォルトの名無しさん:2008/11/13(木) 01:41:45
>>343
そうでした。できました。
ありがとうございました。


347 :デフォルトの名無しさん:2008/11/13(木) 01:50:27
清書とかアホか
コピペしろ

348 :デフォルトの名無しさん:2008/11/13(木) 02:05:28
検索文字列を渡して、その文字列によって絞り込んだIEnumerable<hoge>を返すメソッド名はどのようなものが適切でしょうか?

349 :デフォルトの名無しさん:2008/11/13(木) 02:16:29
>>348
Where を使えば良いのに。

350 :デフォルトの名無しさん:2008/11/13(木) 15:28:01
C#はマウスでミドルクリックを使うことを想定して設計されていないのでしょうか?

351 :デフォルトの名無しさん:2008/11/13(木) 15:33:08
ポインティングデバイスを想定に入れた言語ってどんなんだ
ブロックを組み合わせてってやつとかか?

352 :デフォルトの名無しさん:2008/11/13(木) 15:34:17
MouseClick等のMouseEventHandler/MouseEventArgをとるイベントを使いなされ

353 :デフォルトの名無しさん:2008/11/13(木) 15:34:24
そんなことはないよ

354 :デフォルトの名無しさん:2008/11/13(木) 15:41:26
>>351 Visulanワロタ

355 :デフォルトの名無しさん:2008/11/13(木) 20:05:09
テキストの背景を透明にしたくて、WPFに足を踏みいれました。
xamlではオブジェクト(?)を、xmlみたいに書きますが、
マウスのドラッグで、重なりを変えたいときには、
直書きしているとむずかしいと思います。
XAMLプログラミング WPFアプリケーションの概要と開発
エッセンシャルWPF
はざっとめくったのですが、いまいちよくわからん。
<Grid>
<Image Margin="0,0,0,0" Name="background"
Source="/View;component/background.png" />
<Image Margin="0,152,0,-34" Name="lines"
Source="/View;component/lines.png" />
<TextBox Background="Transparent"
Name="TextBox1" FontSize="14">
</TextBox>
<TextBox Background="Transparent"
Height="23" HorizontalAlignment="Right" Margin="0,117,94,0"
Name="TextBox2" VerticalAlignment="Top" Width="120" />
</Grid>
とあるときに、クリックやドラッグで重ねの順番を変えたいときには、なにをしたらいいんでしょう?


356 :デフォルトの名無しさん:2008/11/13(木) 20:11:45
Panel.ZIndex添付プロパティを使う

357 :デフォルトの名無しさん:2008/11/13(木) 21:44:09
>>356
早速ありがとうございます。
Panel.ZIndex添付プロパティ、使ってみました。
おお、すごい。こうなるんですね。おなじ値だと、おなじレイヤーになるとか、番号が飛んでも平気とか、かなり柔軟ですね。

つづいて、ここに変数を使うにはどうするんだと考えて、
Panel.ZIndex="m"
と書き、
.csのフィールドに、
Int32 m = 6;
とか入れてみたのですが、

Int32 m = 6;
エラー 1 無効なトークン '=' が クラス、構造体またはインターフェイスのメンバ宣言で使用されています。 D:\smartcalendar\PileDesktop\simpleView\simpleView\view.xaml.cs 35 7 simpleView

Panel.ZIndex="m"
エラー 2 m は Int32 の有効な値ではありません。

とエラーになってます。これはどのようにしたらよいでしょう?


358 :デフォルトの名無しさん:2008/11/13(木) 21:48:03
添付プロパティは
Panel.GetZIndex(element);
Panel.SetZIndex(element, m);
の形で使う

359 :デフォルトの名無しさん:2008/11/13(木) 21:58:34
すみません、質問いいですか?

会社のPCでスクリーンセーバーをカットしたいのですが
(アドミニ権限がありません)
いい方法が見つかりません。

どなたか良いお知恵をお貸し下さい。
お願いします。

360 :デフォルトの名無しさん:2008/11/13(木) 22:02:53
仕事してればスクリーンセーバーは動かない
働け

361 :デフォルトの名無しさん:2008/11/13(木) 22:10:49
それってC#と関係ある質問なの?

362 :デフォルトの名無しさん:2008/11/13(木) 22:27:34
C#でプログラム作って解決したいんじゃないの?
SS起動フラグ立てたり定期的にマウスを1ドットずらしたり使ってないキーを押下するエミュレーションを作ったり
いや俺は作り方知らんけど

363 :デフォルトの名無しさん:2008/11/13(木) 22:33:02
それNETでできるの?

364 :デフォルトの名無しさん:2008/11/13(木) 22:36:51
.NETでは可能だがC#で可能かは知らん

365 :デフォルトの名無しさん:2008/11/13(木) 22:43:09
とりあえずwinapi使えばできるだろ

366 :デフォルトの名無しさん:2008/11/13(木) 22:45:58
http://www.yoshibaworks.com/ayacy/inasoft/autokeyb/chapter3.html
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=13924&forum=7


367 :デフォルトの名無しさん:2008/11/13(木) 22:48:47
そんな糞みたいな方法じゃなくて
WM_SYSCOMMANDに応答するだけのウィンドウ作ればいいんじゃね?

368 :デフォルトの名無しさん:2008/11/13(木) 22:51:27
スクリーンセーバーってユーザーは止めれないんだっけそもそも?
だとしたらそんな設計っておかしくないか?
まあここで言っても仕方がないことだが

369 :デフォルトの名無しさん:2008/11/13(木) 23:00:34
ゲームなんかではスクリーンセーバー抑止してくれるのあるよね。
どうやってるのかは知らないけど。

370 :デフォルトの名無しさん:2008/11/13(木) 23:00:42
SC_SCREENSAVE ってフォアグラウンドのウィンドウにしか来なかった記憶が

371 :デフォルトの名無しさん:2008/11/13(木) 23:01:02
プログラムで省電力モードを起動させないのは楽だけど、
スクリンセーバーを起動させないのはめんどくさかった記憶がある。
ちとメモを探してみるよ。

372 :デフォルトの名無しさん:2008/11/13(木) 23:02:47
マウス動かすソフト作れ

373 :デフォルトの名無しさん:2008/11/13(木) 23:06:29
SystemParametersInfo でだめなん?
SPI_SETSCREENSAVEACTIVE を FALSE に。

C# じゃないけど。

374 :デフォルトの名無しさん:2008/11/13(木) 23:17:57
>>358
msdnを見ました。
UIElementってなんだ…?
public static int GetZIndex (UIElement element)

わからないのでとりあえず
Panel.GetZIndex(element);
Panel.SetZIndex(element, m);
を.csのフィールドに書いたら、

エラー 1 無効なトークン '(' が クラス、構造体またはインターフェイスのメンバ宣言で使用されています。
とかいわれてます。
もうすこしアドバイスを。


375 :デフォルトの名無しさん:2008/11/13(木) 23:24:52
>>374
メソッドの中に書けw
Get/SetZIndexメソッドとその引数の意味はMSDNに書いてある。

376 :デフォルトの名無しさん:2008/11/13(木) 23:43:06
パラメータはわかりました!
element プロパティ値を適用する要素。
value この要素が z 面で表示される順序。
あり、パラメータの定義はわかったけど、「プロパティ値を適用する要素。」ってなんだ!?

コードのほうは、.csに、

public static void SetZIndex(UIElement element, int value){
int m = 5;
Panel.GetZIndex(element);
Panel.SetZIndex(element, m);}

として、とりあえずコンパイルは通ったけど、起動しない…。

マウスのドラッグで、重なりを変えたいので、マウスイベントをメソッドにする必要があります。
マウスのクリックのイベントとは、
・MouseDownイベント
・Clickイベント
・MouseClickイベント
・MouseUpイベント
からなるそうなので、ドラッグのイベントとは、
・MouseDownイベント
・Clickイベント
・MouseClickイベント
・MouseMoveイベント(そんなのあるの?)
・MouseUpイベント
ということでしょうか。


377 :デフォルトの名無しさん:2008/11/13(木) 23:46:08
普通のプロパティなら
m = button.ZIndex + 1;
button.ZIndex = m;
と書くところを、添付プロパティでは次のように書く
m = Panel.GetZIndex(button);
Panel.SetZIndex(button, m);

378 :デフォルトの名無しさん:2008/11/13(木) 23:57:43
デバイスマネージャ内の任意のドライバのバージョン等を取得するにはどうしたらいいんでしょうか。

379 :デフォルトの名無しさん:2008/11/14(金) 00:00:13
wmi

380 :デフォルトの名無しさん:2008/11/14(金) 00:46:37
TreeViewのスクロールに関する質問です。

TreeViewのScrollableを有効にして、Drag&Drop中にTreeViewの上部や
下部にマウスを移動したときにスクロールするようにしたいのですが、
ScrollBarクラスのValueのようなものがなくてやり方が分かりません。

よろしくお願いします。

381 :デフォルトの名無しさん:2008/11/14(金) 00:48:16
wmiの中のどれなのか...

382 :デフォルトの名無しさん:2008/11/14(金) 01:09:31
vstoに関する質問です。OSはWinXPPro、VS2005、c#を使って開発しています。
Office2007に関する内容です。

Word2007で表を追加すると、画面上部にレイアウトリボンが表示され、
レイアウトリボンの中では、表の各セルのサイズがわかります。
このサイズ(特に高さ)をC#でプログラム的に取ってきたいのですが、どのようにすればよいでしょうか?

教えていただけると幸いです。

383 :デフォルトの名無しさん:2008/11/14(金) 08:57:07
C#とASP.NETって同じなの?

384 :デフォルトの名無しさん:2008/11/14(金) 09:10:45
>>383
その疑問に至れる発想力はすごい。

385 :デフォルトの名無しさん:2008/11/14(金) 09:24:25
同じものに別の名前を付けると思ったんだね

386 :デフォルトの名無しさん:2008/11/14(金) 10:04:59
>>383
C#は言語だけどASP.NETは言語じゃないよ

387 :デフォルトの名無しさん:2008/11/14(金) 19:22:15
俺がお前でお前が俺なの?

388 :デフォルトの名無しさん:2008/11/14(金) 19:54:53
>>384
超初心者の質問って脳をものすごく活性化させてくれるよね

389 :デフォルトの名無しさん:2008/11/14(金) 20:56:53
C#2008ExpressEdition
GetWindowRect()を使ってみたくて
Windowsフォームアプリケーションで生成されるFrom1の
using System.Windows.Forms; と namespace WindowsFormsApplication1 の間に検索した
[StructLayout(LayoutKind.Sequential)]
private struct RECT
{
public int left;
public int top;
public int right;
public int bottom;
}
[DllImport("user32.dll")]
private static extern int GetWindowRect(IntPtr hwnd, ref RECT lpRect);
をコピペしました
ほかにボタンをForm1に貼り付ける等の手を加えていませんがエラーがでます
「」で囲んだ部分がエラーの波線が表示されたところです
private struct 「RECT」 {→名前空間で定義された要素は明示的に private、protected、または protected internal に宣言することはできません。
[DllImport("user32.dll")「]」→修飾子 'extern' がこの項目に対して有効ではありません。
private static extern 「int」 GetWindowRect(IntPtr hwnd, ref RECT lpRect);→クラス、デリゲート、列挙型、インターフェイス または構造体が必要です。
外部dllの関数を使うためにはこれらをどのように修正すればいいですか?

390 :デフォルトの名無しさん:2008/11/14(金) 21:10:05
>>389
一瞬どこがおかしいのか分からなかったが、そこに貼っちゃいかんw

partial class Form1 : Form
{
【ここに貼る】
...
}

あと、 using System.Runtime.InteropServices; も忘れずにね。

391 :デフォルトの名無しさん:2008/11/14(金) 21:11:42
internal static class NativeMethods
{
 internal struct RECT {略}
 [DllImport("user32.dll")] internal static extern int GetWindowRect(IntPtr hwnd, ref RECT lpRect);
}
こうするのがMS推奨

392 :デフォルトの名無しさん:2008/11/14(金) 21:13:06
ワラタ

393 :デフォルトの名無しさん:2008/11/14(金) 21:25:23
user32.dllって64bit版にもあるの?

394 :デフォルトの名無しさん:2008/11/14(金) 21:32:03
あるよ

395 :デフォルトの名無しさん:2008/11/14(金) 21:32:06
>>393
同じ名前である。
だからIntPtrなどを使ってうまく書けば32ビット64ビット両方で動くプログラムが書ける。

396 :デフォルトの名無しさん:2008/11/14(金) 22:00:09
というかサポ切れ以外の DLL はまったく同じ名前で基本ある。
… 〜32 と付いた 64 bit の DLL が。

397 :デフォルトの名無しさん:2008/11/14(金) 22:14:53
質問です。P/Invokeで
System.Runtime.InteropServices.ComTypes.FILETIME
をメンバに持つ構造体があるのですが、これから直接DateTimeを得る方法がわかりません。

DateTime.FromFileTimeは引数がlong型一つだけですし、
現状では、FileTimeToSystemTimeで一度SYSTEMTIMEに変換し、
年からミリ秒までを、DateTimeのコンストラクタの引数に与えているのですが、回りくどいような気がするのです。

398 :デフォルトの名無しさん:2008/11/14(金) 22:17:34
ビット演算でhighとlowをあわせてlongにする

399 :デフォルトの名無しさん:2008/11/14(金) 22:19:47
*(long*)(void*)

400 :デフォルトの名無しさん:2008/11/14(金) 22:32:34
と、new DateTime(1601, 1, 1).Ticks を足せば Ticks になるな

401 :397:2008/11/14(金) 22:57:21
ビット演算にアンセーフコード!
自分の理解ではハードルが高いですが、一つ一つ試してみます。
回答ありがとうございました。

402 :デフォルトの名無しさん:2008/11/15(土) 00:06:11
>>390-391
ありがとうございました

403 :デフォルトの名無しさん:2008/11/15(土) 01:42:01
C#でpopを作ろうとしています。
codezineのソースを元にしようと思って改良しているのですが、
http://codezine.jp/article/detail/477?p=1
じっさいに受信しようとしたら、
private static void Mailtest_Sample1()
となっていて、staticになっているため、変数を使用できません。
string = mailtext
で設定した変数に、1通ごとのメールの本文を入れようとしています。
private void Mailtest_Sample1()
のようにstaticを削除すると、
エラー 1 静的でないフィールド、メソッド、またはプロパティ 'PopMail.PopMailMain()' で、オブジェクト参照が必要です
static void Main(string[] args) { PopMail(); }
とエラーになります。
staticを削除してかつ動くようにするには、どうすればいいんでしょう?

404 :デフォルトの名無しさん:2008/11/15(土) 02:17:26
日本語でおk

>staticになっているため、変数を使用できません。
意味分からん。いつからstatic変数が使用できないようになったんだよ。

>string = mailtextで設定した変数に
意味分からん。いつから予約語に代入できるようになったんだよ。

>staticを削除すると
意味分からん。いつから静的メソッドからインスタンスメソッドが呼び出せるようになったんだよ。


405 :デフォルトの名無しさん:2008/11/15(土) 02:20:23
とりあえず中断して入門書を読め

406 :デフォルトの名無しさん:2008/11/15(土) 02:24:30
多分
new Program().PopMail()
かなんかにすりゃ動くと思うけど

407 :デフォルトの名無しさん:2008/11/15(土) 02:42:02
static void Main(string[] args)
{
 PopTest();
 MailTest();
}
private static void PopTest(){ ... }
private static void MailTest()
{
  MailTest_Sample1();
  MailTest_Sample2();
}
private static void MailTest_Sample1(){ ... }
private static void MailTest_Sample2(){ ... }


408 :デフォルトの名無しさん:2008/11/15(土) 02:44:21
いくらコピグラマでもスタティックメンバとインスタンスメンバの違いぐらいわからないとダメだろ

409 :デフォルトの名無しさん:2008/11/15(土) 02:58:00
2008になってから、プロジェクトをはじめて読み込んだときなどにエラーが誤検出されるのですが、
これを回避する方法はあるでしょうか?

具体的には、System.Drawingを参照設定に含めているにもかかわらず、
CS0234が表示されたりします。ビルドすればすべて消えるのですが、なんだか気持ちが悪いです。

410 :デフォルトの名無しさん:2008/11/15(土) 03:00:24
いいじゃねえかビルドすれば

411 :デフォルトの名無しさん:2008/11/15(土) 08:58:27
コメントありがとうございます。
>>404
string mailtext = null;
mailtext = pop.GetMail((string)list[i]);
でした。

静的メソッドからインスタンスメソッドって呼べないですよね?
でも、Mainメソッドは静的メソッドですよね?
じゃどうしてMainメソッドからインスタンスメソッドは呼べるんですか?

>>406
とりあえず動かなかった…です。


412 :デフォルトの名無しさん:2008/11/15(土) 08:59:04
>>407
string mailtext = null;
static void Main(string[] args) //ここでアセンブリ参照がないエラー。
{
PopTest(); //受信処理
//MailTest(); //表示処理
}
private void PopTest(){
mailtext = pop.GetMail((string)list[i]);
if (テキストの場合) MailTest_Sample1();
elseif (mimeの場合) MailTest_Sample2();
}
/*private static void MailTest()
{
MailTest_Sample1();
MailTest_Sample2();
}*/
private void MailTest_Sample1(){
Console.WriteLine(mailtext);
}//テキストの場合
private void MailTest_Sample2(){
Console.WriteLine(mailtext);
Console.WriteLine();//添付部分
}//mimeの場合

のように書き換えてます。
受信したときに取得したmailtextをそのまま表示で使おうと思ったら、staticではだめだったので、staticを削除しました。


413 :デフォルトの名無しさん:2008/11/15(土) 09:08:50
>>408
static void Main(string[] args)
private static void PopTest()
private static void MailTest()
private static void MailTest_Sample1()
private static void MailTest_Sample2()
は、ぜんぶスタティックメンバですか?

インスタンスメンバにするには、
private void PopTest()
private void MailTest()
private void MailTest_Sample1()
private void MailTest_Sample2()
と、staticをとればいいかと思ったけど、それじゃだめ?


414 :デフォルトの名無しさん:2008/11/15(土) 09:18:51
>>412
>>405

415 :デフォルトの名無しさん:2008/11/15(土) 10:53:57
とりあえず何かやる前に基本的な言語仕様くらいは勉強してもらいたいもんだ…w

416 :デフォルトの名無しさん:2008/11/15(土) 11:13:49
型とインスタンスくらいは理解してないとVBすら使えないよ

417 :デフォルトの名無しさん:2008/11/15(土) 13:18:42
>>413
あってるよ。

418 :デフォルトの名無しさん:2008/11/15(土) 13:21:08
インスタンスメソッドはそのクラスをnewしないと使えない

419 :デフォルトの名無しさん:2008/11/15(土) 13:26:45
クラス内でプロパティかなんかでインスタンス生成すれば
スタティックみたいに使えないことも無いけどな

420 :デフォルトの名無しさん:2008/11/15(土) 13:46:44
インスタンスを生成しまくるとどうなるんですか?

421 :デフォルトの名無しさん:2008/11/15(土) 13:50:14
たくさんインスタンスが作られる
参照が残ってなければガベコレが起きる

422 :デフォルトの名無しさん:2008/11/15(土) 14:02:19
状態を保持する必要があるからインスタンスメンバにしてるんであって

423 :デフォルトの名無しさん:2008/11/15(土) 14:13:50
すべての間違いのもとは>>411にある。

>静的メソッドからインスタンスメソッドって呼べないですよね?
呼べません。

>でも、Mainメソッドは静的メソッドですよね?
そうです。
もしインスタンスメソッドならフレームワークから呼び出せません。

>じゃどうしてMainメソッドからインスタンスメソッドは呼べるんですか?
new演算子でインスタンスを作成し、そのインスタンスメソッドを呼び出し
てるからです。

424 :デフォルトの名無しさん:2008/11/15(土) 14:20:00
ミイラ取りが(ry

425 :デフォルトの名無しさん:2008/11/15(土) 16:09:46
>>417>>418>>423、ありがとうございます。
静的メソッドからインスタンスを呼ぶときには、new インスタンスの所属するクラス名とする。たとえば、メインからFormのクラスを呼ぶときには、
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form());
}
とする、という理解でよいでしょうか?
そうなると、先の例(>>412>>407)でいうと、これはクラスはひとつしかない。したがって、クラスを呼ぶことはできない? となってしまうのですが。
それとも、静的メソッドからインスタンスを呼ぶときには、new インスタンス名でいいんでしょうか?
それなら、
string mailtext = null;
static void Main(string[] args) //ここでアセンブリ参照がないエラー。
{
new PopTest(); //受信処理
//MailTest(); //表示処理
}
private void PopTest(){ ... }

でよい、ということになる?? ためしたけどならない。

付随する疑問。
インスタンスからインスタンスを呼ぶときには、newは必要なの? 必要ないように思いますが。
インスタンスから静的メソッドを呼ぶときには、単にメソッド名をかけばいい?
インスタンスの作成は、
データ型 変数名 = new コンストラクタ;でおこない、コンストラクタ名はクラス名とおなじにする、とあります。
Application.Run(new Form());
の場合、データ型と変数名は省略されている、と考えればいいの?
省略されているとして、なにが省略されているの?


426 :デフォルトの名無しさん:2008/11/15(土) 16:17:42
いやほんと本じゃなくてどっかの入門サイトで良いからまず基本を与えられてくれ

427 :デフォルトの名無しさん:2008/11/15(土) 16:21:16
Application.Run
これはstaticメソッド
Applicationで始まってるのは全部そう

List<int> list = new List<int>();
list.Add(1);
これはインスタンスメソッド
インスタンスメソッドはインスタンスをnewしてから呼び出す

PopTestだったら、そのメソッドがあるクラスをHogeとすると
Hoge hoge = new Hoge();
hoge.PopTest()
こうやって呼び出す

428 :デフォルトの名無しさん:2008/11/15(土) 16:21:18
初心者スレでそんな事を言うな

429 :デフォルトの名無しさん:2008/11/15(土) 16:23:36
class Hoge
{
public void Run()
{
}

430 :デフォルトの名無しさん:2008/11/15(土) 16:24:38
ミスって送信しちまった

431 :デフォルトの名無しさん:2008/11/15(土) 16:34:05
もうこれでいいよ

static void Main(string[] args)
{
 Hoge hoge = new Hoge();
 hoge.Run(args);
}

class Hoge
{
 public void Run(string[] args)
 {
  // thisは自分自身のインスタンスを指す(省略可能)
  this.PopTest();
  this.MailTest();
 }

 private void PopTest() {略}
 private void MailTest() {略}
}

432 :デフォルトの名無しさん:2008/11/15(土) 16:35:19
>>425
インスタンスは型(クラス)をもとにして作られた実体
stringと"この文字列"の関係が、型とインスタンスの関係
インスタンスに関連付けられたメソッドがインスタンスメソッド
>>428
理屈がわからないならともかく、書き方の形式がわからないのは
どっかのサンプル打ち込んで動かして慣れろとしか言えないでしょ

433 :デフォルトの名無しさん:2008/11/15(土) 16:49:34
>>425みたいな思考をするタイプって時々いるねw

なにか「ゲームの世界を支配するルール」を捕らえることに興味があるようだけど、
プログラミング言語の学習方法としてはそういうアプローチはダメ過ぎる。

静的メソッドとかインスタンスとかクラスといったものの意味を鍵カッコに入れて

・[静的メソッド]から[インスタンスメソッド]を呼ぶことはできない。

みたいなものををつらつら並べて記憶することなんかに何の意味も意味もないんだよ。

それは「ゲームのルール」じゃなくて、基本法則から論理的に導かれる
ただの論理的必然に過ぎないんだから。

大事なのはプログラミングの世界の基本法則(そもそもクラスって何よ?、とか)
をきちんと理解することなんだよ。

434 :デフォルトの名無しさん:2008/11/15(土) 16:55:03
たかが各言語の規則にすぎないものを、何を大げさな

435 :デフォルトの名無しさん:2008/11/15(土) 16:55:29
ゲームの世界を支配するルールと
世界の基本法則の違いがわかりますん

まあ帰納と演繹ってことなんだろうけど

436 :デフォルトの名無しさん:2008/11/15(土) 19:04:57
論よりRun

437 :デフォルトの名無しさん:2008/11/15(土) 19:08:34
おっさんくさいけど上手いこと言った

438 :デフォルトの名無しさん:2008/11/15(土) 19:39:39
初めまして。よろしくお願いします。
C#を使って、 ttp://smdn.invisiblefulmoon.net/mnemorepos/20050216-00.html
を書いてみたのですが、AxWebBrowser::GetOcx( ) の参照から SetClientSite(this as IOleClientSite) すると、
その後OcxのContainerがAccessViolation状態になり、Navigate2を使用すると、TargetInvocationExceptionが発生してしまいます。
これは移植の時にミスをしているのでしょうか?それともサンプルの時点で発生する問題なのでしょうか。

インターフェースの実装部分は、GetContainer以外は NOTIMPL(=-2147467263)などを返したりしていますが、どれも呼び出された形跡はありませんでした。
COMの定義などはReflectorを使って、FrameworkのDLLから必要部分を抜き出して使用しています。

439 :デフォルトの名無しさん:2008/11/15(土) 19:43:49
>>438
VB のサンプルで試してみればいいじゃん・・・

440 :デフォルトの名無しさん:2008/11/15(土) 20:11:48
>移植の時にミスをしているのでしょうか

ソースみないとナントモカントモ

441 :デフォルトの名無しさん:2008/11/15(土) 22:26:25
オリジナルのメソッド作りたいんですけど、CSファイル分けたとこから呼び出すとusing が必要なんですか?

442 :デフォルトの名無しさん:2008/11/15(土) 22:56:51
名前空間が別ならね

443 :デフォルトの名無しさん:2008/11/15(土) 23:04:37
そこからかよ

444 :438:2008/11/15(土) 23:17:32
>441
最初に書いてあるusingは、「名前空間.クラス名」と書くと長くなるのを「クラス名」と書けるようにする為のものです。
ソース内で単にクラス名だけを書くと、「同じ名前空間内」→「usingで指定されている名前空間内」の順に検索されます。
つまり、同じ名前空間にあればusingは必要ありません。
それより、メソッドはクラスに属していないと駄目とか、そっちのほうに引っかかりそう。
入門サイトで基本的な文法を勉強して、あとはVisualStudioに任せて書いてみるのが一番の近道かと。

>439 VBで今書いてるのですが、今まで書いたことがないのでなかなかコンパイルまで辿り着けません。
>440 このスレで使ってるロダってありますか?後、あげるときはソリューションごとの方がいいでしょうか?

445 :デフォルトの名無しさん:2008/11/15(土) 23:52:55
>>444
気にしないでどこでもいいからとりあえず一式上げてみればいいんじゃね?
個人特定されるような情報は入れないようにしてさ・・・

たぶんこのスレの人間なら大体の人間一瞬でわかると思うぞ


446 :デフォルトの名無しさん:2008/11/16(日) 00:12:04
某有名なサイトで、コンストラクタについて勉強していたのですが、
分からないところが出てきたので教えてください。

public Person(string name, int age)
{
this.name = name;
this.age = age > 0 ? age : UNKNOWN;
}
↑この部分は分かります。

public Person(string name) : this(name, UNKNOWN)
{
}
↑この部分の、「:」がどういう意味を持って使われているのか、明確にしたいです。
以降の用法はなんと呼ばれているのでしょうか?

447 :デフォルトの名無しさん:2008/11/16(日) 00:25:30
コンストラクタを実行する前にそのクラスにある別のコンストラクタを実行する
thisの他にbaseなんてのもあるけどこっちは基本クラスのコンストラクタを実行
http://msdn.microsoft.com/ja-jp/library/ms173115(VS.80).aspx

448 :デフォルトの名無しさん:2008/11/16(日) 00:28:26
>>446
クラスを継承させた場合、親クラスのどのコンストラクタを呼ぶのかを指定するため、「:base(...)」と書いて上げます。

何も書かなければ、デフォルトコンストラクタ(引数無いヤツ)が呼ばれます。


親クラスではなく、自クラスの別のコンストラクタを呼ばせたい時は、「: this(...)
と書きます。

呼び名は知りません。


449 :デフォルトの名無しさん:2008/11/16(日) 00:35:13
>>446
どういう使い方なのかわからないけど、クラスを派生させる場合は
コンストラクタを継承できないので、基本クラスのコンストラクタを明示的に
呼び出す必要がある。そのためのキーワードが【:】。
基本クラスのコンストラクタが既定(引数なし)の場合は呼び出さなくても使える。
コンストラクタが無い場合はコンパイラが勝手に用意する。
コロンはラベルなんかにも使うからちゃんと入門本などで理解を深めた方がよい。


450 :デフォルトの名無しさん:2008/11/16(日) 00:40:15
>>446
C++ だとそれは initializer 構文とかいうけども。
C# だとメンバー変数のイニシャライズに : 使わなくなったしなぁ。
なんて呼べばいいんだろう。

451 :デフォルトの名無しさん:2008/11/16(日) 00:48:26
@ITだと、 : this 構文、 : base 構文って感じで言ってるなぁ。

C# の仕様書確認してみたら、「constructor initializers」という言葉はあった。

452 :438:2008/11/16(日) 00:50:28
ttp://www.uploda.org/uporg1786957.zip.html あげました。
受信pass:
csharp
>>446
以前外人さんとのトークで、コンストラクタのconjunction(連結)なんて呼ばれてたような記憶があります。
正式なものかは知りませんが、そういわれた時に自分はピンときたのでおそらく通じると思います。
用法はほかの方が書いている通りです。

453 :デフォルトの名無しさん:2008/11/16(日) 00:52:29
コンストラクタの委譲(delegation)でいいと思うよ。

454 :デフォルトの名無しさん:2008/11/16(日) 01:07:27
別にそのまんま「(オーバーロードされた)別のコンストラクタの呼び出し」
とでも明示的に呼べばいいと思うんだけど。

ところで、C#でもVBでもこの別のコンストラクタの呼び出しの前には
コードを一切書けないわけだけど、これはどうしてなんだっけ?

別のコンストラクタを呼ぶときのパラメータの値を作りたいときなんかに
それ専用のメソッドを作らなきゃならなくて不便で仕方がないと思うんだけど。

455 :デフォルトの名無しさん:2008/11/16(日) 01:13:06
Javaみたいにすればよかったのにね

456 :デフォルトの名無しさん:2008/11/16(日) 01:16:44
手元のオライリー見たけど構文の呼び名は書いてないなあ

457 :446:2008/11/16(日) 01:39:10
>>447->>451, >>453->>456さん、ありがとうございます。

自分で調べたかったのですが、手元にある参考書のどの章を
参考にしたらいいか分からなくて困っておりました。

みなさんに教えていただいたことで、理解が深まりました。
ありがとうございました。


458 :デフォルトの名無しさん:2008/11/16(日) 02:21:51
お世話になります。
環境:C# 2005 VisualStadio

datagridviewでエクセルのようにコピー&ペーストがしたくて、
以下のサイトを参考にしているのですが…、
ttp://dobon.net/vb/dotnet/datagridview/clipboardcopy.html#paste

とりあえず、コードをそのままコピペして動作を見ようと思い、
コピーはできますが、何故かペーストされません。
プログラミングの経験が少ない為、どこが原因かすら分からない状況で
厚かましくて申し訳ないのですが、どこをどうすればいいのかご教授下さい orz
また、ペースト機能について参考になるHPがあれば教えて頂けると助かります。

459 :デフォルトの名無しさん:2008/11/16(日) 02:37:00
>>458
○ご教示ください
×ご教授ください

まずは日本語からやり直せ

460 :デフォルトの名無しさん:2008/11/16(日) 04:35:19
>>458
ひとまずテキストボックスとかの単一のデータがコピーペーストは出来るんだろうな?
出来ないんだったらそこから始めるべきだと思う

461 :269:2008/11/16(日) 05:10:52
1週間前にきれいに透過できないということで質問させていただいたものです

http://www.pinvoke.net/default.aspx/user32/UpdateLayeredWindow.html
このページを参考に(といってもコピペですが)書いてみたのですが画像が表示されません
一応フォームのサイズは画像のサイズに変更されています
呼び出し元?は下記のようになっています

private void Form1_Load(object sender, EventArgs e)
{
this.FormBorderStyle = FormBorderStyle.None;
Bitmap bitmap = new Bitmap(@"C:\aaa.png");
Class1 class1 = new Class1();
class1.SetBackground(this, bitmap);
}


よろしくお願いいたします

462 :デフォルトの名無しさん:2008/11/16(日) 05:21:35
Control.CreateParamsをオーバーライドしてExStyleにWS_EX_LAYEREDを指定しておく必要がある。

463 :デフォルトの名無しさん:2008/11/16(日) 10:20:49
>>452
もう流れてるよ

464 :デフォルトの名無しさん:2008/11/16(日) 11:13:26
クラスにはフィールドを宣言してそこに必要なパラメータとか記憶させられるわけだけど、
基本的にその数って有限でしょ?


Class Hoge

  private int status1;
  privete int status2;
  ・・・・
  private int statusn;


でも実際は状況に応じて記憶させるべきパラメータの数は変わるわけでそう言う場合には
どう対処したらいいんだろうか?

465 :デフォルトの名無しさん:2008/11/16(日) 11:14:38
Dictionaryでも使えば

466 :デフォルトの名無しさん:2008/11/16(日) 11:50:43
メーンフォームを持つForm1.csのファイルサイズが大きくなるような書き方は推奨されていないのでしょうか?

467 :デフォルトの名無しさん:2008/11/16(日) 12:02:37
>>464-465
それよりもListじゃね?

468 :デフォルトの名無しさん:2008/11/16(日) 12:22:05
>>467
すべての状態が埋まるのなら、Listでもいいと思うけど、
1, 3, 5の状態だけのような、疎な配列になるのなら、Dictionaryの方が適しているだろうね。


469 :デフォルトの名無しさん:2008/11/16(日) 12:24:09
IExpando

470 :デフォルトの名無しさん:2008/11/16(日) 12:24:12
>>466
推奨されていないかどうかは知らないが、
巨大になるとメンテしづらくなるから、適度に分割しといた方がいいよ思うよ


471 :デフォルトの名無しさん:2008/11/16(日) 12:51:15
>>466
region を上手く使ってあれば、ファイルサイズが大きくても気にならないと思う。
ただ、クラスとしてまとめられる処理はまとめた方が可読性は向上する。

472 :デフォルトの名無しさん:2008/11/16(日) 13:02:07
便乗ですが、たとえばForm1のコントロールのプロパティなんかがたくさんあるとき
外部からのアクセス手段としてはどこに書くのがオススメですか

473 :デフォルトの名無しさん:2008/11/16(日) 13:13:12
#region プロパティ

#endregion

#region パブリックメソッド

#endregion

とか纏めておくとわかりやすい。
いらないときは閉じておけるのがいい。

474 :デフォルトの名無しさん:2008/11/16(日) 13:19:40


475 :デフォルトの名無しさん:2008/11/16(日) 13:25:38
>>472
(Formの)外部からコントロールのプロパティにアクセスする、
などという絵に描いたような糞設計はまともな神経してたらしません。

476 :デフォルトの名無しさん:2008/11/16(日) 13:35:34
先人の方々のプログラムを眺めていると、しばしばClass Aを定義して、そのClass Aの中の
メソッドで、さらにClass Aのオブジェクトを作ってるという素人目にはカオスにしか見えない
テクニックを披露している方々をよくお見受けするんですが、このようにクラスの中でその
クラスを使うという手法は一般的どういうときに使えるんでしょうか?

477 :デフォルトの名無しさん:2008/11/16(日) 13:45:52
意味が分からん
シングルトンのことか?

478 :デフォルトの名無しさん:2008/11/16(日) 13:50:35
ファクトリ?

479 :デフォルトの名無しさん:2008/11/16(日) 13:54:04
たとえば

Class A
{
 void Method()
 {
  A objA = new A();
  (以下objAをつかった処理)
 }
}

みたいな感じのことです

480 :デフォルトの名無しさん:2008/11/16(日) 13:56:12
>>479
そのメソッドはstaticになってないの?

481 :デフォルトの名無しさん:2008/11/16(日) 13:57:19
>>480
そこらへんはよく覚えていません(´・ω・`)・・・

482 :デフォルトの名無しさん:2008/11/16(日) 14:02:51
Regex.Matchみたいな形か?
利便性を考えて静的メソッドとしても公開しとくみたいな

483 :デフォルトの名無しさん:2008/11/16(日) 14:04:11
Classの中でそのClassのオブジェクトを生成するテクニックは
静的メソッドと関係があったりするんでしょうか?

>>479の void Method() が静的だったかまでは覚えていないんですが(´・ω・`)・・・

484 :デフォルトの名無しさん:2008/11/16(日) 14:06:22
例えば、短いプログラムで見かけるのはこんな感じ
class Startup {
 void Test() { System.Console.WriteLine(this); }
 static void Main() { new Startup().Test(); }
}


485 :デフォルトの名無しさん:2008/11/16(日) 14:15:34
ファクトリクラス、条件によってHogeの実装クラスを切り替えたいときなどに使う。
abstract class Hoge {
  public class Hage : Hoge {}
  public class Page : Hoge {}
  public static Hoge MakeInstance(bool b) { if (b) return new Hage(); else return new Page(); }
}
class Startup {
 static void Main() {
   Hoge hoge1 = Hoge.MakeInstance(true);
   System.Console.WriteLine(hoge1);
   Hoge hoge2 = Hoge.MakeInstance(false);
   System.Console.WriteLine(hoge2);
 }
}


486 :デフォルトの名無しさん:2008/11/16(日) 14:22:33
IClonable の Clone メソッドとかで使いそう。

487 :デフォルトの名無しさん:2008/11/16(日) 14:26:02
メッセージボックスみたいなのを自作したとき。
コンストラクタをprivateにして
publicなShow(...)メソッドでインスタンス化、みたいな

488 :デフォルトの名無しさん:2008/11/16(日) 14:29:15
>>486
Cloneでnew使うと継承に対応できなくなるので、
MemberwiseCloneを使ったあとディープコピーや追加の初期化を追加するのが常套。

489 :デフォルトの名無しさん:2008/11/16(日) 14:35:29
>>488
ああ、なるほど。継承まで頭が回ってなかった。
この辺もう少し勉強してみるわ。

490 :デフォルトの名無しさん:2008/11/16(日) 15:03:34
というよりもどういうときだとCloneは活用できるんでしょうか?

491 :デフォルトの名無しさん:2008/11/16(日) 15:04:33
ある処理を行った数秒後にテキストボックスの文字を空にしたいんだけど、
タイマーとかを使えばいいのかな?


492 :デフォルトの名無しさん:2008/11/16(日) 15:05:36
うん

493 :269:2008/11/16(日) 15:48:02
何度もすみません

>>462様のアドバイス通りやってみたつもりなのですが、うまくいきません
厚かましいお願いですが、ファイルをアップしたのでどこを直せばいいのか教えていただけないでしょうか
http://www.death-note.biz/up/img/30723.zip

494 :デフォルトの名無しさん:2008/11/16(日) 16:13:43
オーバーロードとオーバーライドの違いがわからん

495 :デフォルトの名無しさん:2008/11/16(日) 16:18:05
override キーワードをつけるのがオーバーライド。

496 :デフォルトの名無しさん:2008/11/16(日) 16:18:16
オーバーライド=継承元のメソッドを上書き
オーバーロード=同一メソッドの別バージョン(シグネチャ違い)を定義

497 :デフォルトの名無しさん:2008/11/16(日) 16:18:32
load → 積む。オーバーロードで、いっぱい積む。
ride → 乗る。 オーバーライドで、上に乗っかる。


498 :デフォルトの名無しさん:2008/11/16(日) 16:20:48
クラスの中に
stirng[]型
bool型
からなる構造体を宣言し、さらにそれをList<T>で配列化しようと思っています。

しかし聞くところによるとC#では構造体の出番はあまりないとのことです。
上記のようなケースを構造体無しで実現するにはどうしたらいいでしょうか?

499 :デフォルトの名無しさん:2008/11/16(日) 16:23:23
クラスで。

500 :デフォルトの名無しさん:2008/11/16(日) 16:25:20
overlord エラーになります^^

501 :デフォルトの名無しさん:2008/11/16(日) 16:39:16
>>497
なんか本気で言ってそうで怖いんだけどw

502 :デフォルトの名無しさん:2008/11/16(日) 16:48:59
class A
{
 void Func(int i)
 {
  System.Console.Wirte(i);
 }

 //オーバーロード(引数が違う)
 void Func(string s)
 {
  System.Console.Wirte(s);
 }
}

class B : A
{
 //オーバーライド
 override void Func(int i)
 {
  System.Console.Wirte(i * 2);
 }
}

503 :デフォルトの名無しさん:2008/11/16(日) 17:31:16
簡単で、かつ、議論の余地のない質問ほど回答レスが付く

504 :デフォルトの名無しさん:2008/11/16(日) 17:33:34
ふらっとで何をw

505 :デフォルトの名無しさん:2008/11/16(日) 17:38:33
超アクロバティックなコードばっか目にするんだが

506 :デフォルトの名無しさん:2008/11/16(日) 17:47:00
>>499
クラスの中にクラスを新たに定義するんですか?

507 :デフォルトの名無しさん:2008/11/16(日) 17:53:23
>>473
これいいですね

>>475
たとえばForm2で処理したテキストデータをForm1のコントロールに渡したいときは
どうするのが最善ですか?

508 :デフォルトの名無しさん:2008/11/16(日) 17:53:48
>503
ここは基本、沼に足を踏み入れようとしてる奴と一歩目を踏み入れた奴の相互援助スレだから仕方ない。
で、>438 はどうなったんだ?
ロダのファイルも流れてて見れないんだが。
本人か拾った奴カモン。

>506
>クラスの中にstirng[]型bool型からなる構造体を宣言し
の設計に問題ないと思うならそう。
>C#では構造体の出番はあまりない
自分で定義した構造体は、.NETの中で利用する限りでは(ry

509 :デフォルトの名無しさん:2008/11/16(日) 18:55:54
>>508
なんというか、構造体的使用目的のためにクラスを使ってしまうのはコードの可読性を
下げる要因にもつながりそうな気がするんですが。

510 :デフォルトの名無しさん:2008/11/16(日) 19:12:05
>>493
ここで修正内容書くと長くなるので、修正したのを上げておいた。これでいい?

http://www.death-note.biz/up/img/30745.zip

サンプルコードが何をしようとしているのかを見極めるのが大事だよ。
自分の元のコードと比べてみて、何を間違ってたかよく考えてみてね。

511 :デフォルトの名無しさん:2008/11/16(日) 19:14:43
>>509
多分君が思ってるよりclassの適用範囲は大きいよ

512 :デフォルトの名無しさん:2008/11/16(日) 19:57:54
>構造体的使用目的

ってのがだいたい、メモリの連続した領域をラベルでアクセスしたいってなもんでしょ?
その感覚はC#の構造体とは遠いからね

513 :デフォルトの名無しさん:2008/11/16(日) 20:04:39
簡単で、かつ、議論の余地のない質問ほど回答レスが付く量が多い(マジレス・ネタレス・クソレス・話題派生レスetc)

514 :デフォルトの名無しさん:2008/11/16(日) 20:12:30
難しい質問の方がレスがたくさん付くスレってあるのか?

515 :デフォルトの名無しさん:2008/11/16(日) 20:18:18
素直にもう一度アンカーを付けて回答を促すがよろし
答えが得られなくても仕方なし
どうせ煽りは1,2人でやっているので無視

516 :デフォルトの名無しさん:2008/11/16(日) 20:27:22
>>507
INotifyPropertyChanged を実装したビジネスオブジェクトを作成し、
そのインスタンスを各コントロールのプロパティにバインド

ビジネスオブジェクトは必要ならISupportInitializeなども実装

517 :デフォルトの名無しさん:2008/11/16(日) 20:59:45
>>473
他人のソース読むとき
ソリューションを開くとregionが全部閉じていていちいち開くのが面倒

csファイルを大量に分割し過ぎているのも可読性を損なう

518 :デフォルトの名無しさん:2008/11/16(日) 22:02:37
まさか一つ一つクリックして開いてたりはしないよね・・?
普通ショートカットか、メニュー・右クリックのアウトラインから展開するよな。

適切なregionは可読性向上に繋がる。

>csファイルを大量に分割し過ぎている
個人的には定義に移動で飛んでいけるから問題に感じる事はない。
分割が足りないより、しっかり分割されている方が好ましく感じる。

519 :デフォルトの名無しさん:2008/11/16(日) 22:03:40
むしろregion閉じてた方が読みやすいんだが

520 :デフォルトの名無しさん:2008/11/16(日) 22:09:36
>>518
まあそうなんだけど、他人の書いたコードを読むとき
ソリューションエクスプローラにファイルがズラっと並んでるの見ると
それだけで戦意を喪失させるものがあるから>>517の気持ちもわかる。

せめて適切なフォルダにグルーピングくれると助かるんだけど。

521 :デフォルトの名無しさん:2008/11/16(日) 22:20:17
分割は大雑把(例えばイベントハンドラ、デザイナ、その他)にやって、その下の階層を region で分けてる。
分割しすぎると、いつの間にかエディタ上部のファイル選択タブにどんどん貯まっていってだるい。
あそこ多段表示にできればいいのに。

522 :デフォルトの名無しさん:2008/11/16(日) 22:22:12
名前空間や機能別に整理せず、そのまま乱雑に置かれてると確かに戦意喪失するな。
コードも同じように混沌としてそうな気がしてくる。

523 :デフォルトの名無しさん:2008/11/16(日) 23:31:14
拡張Methodのnamespaceってどう定義してる?
全部分けた方がいいのかな?

524 :デフォルトの名無しさん:2008/11/16(日) 23:35:19
>>523
Utility とかその辺に。

525 :デフォルトの名無しさん:2008/11/16(日) 23:40:27
>>524
Utility.xxxって分けてる?
using Utility で丸々ッと使えるようにする?

526 :デフォルトの名無しさん:2008/11/16(日) 23:49:54
>>525
汎用的なものについては Utility でマルッと使えるようにしてる。
それ以外の特異的なものは単に xxx で Utility は付けない。

527 :デフォルトの名無しさん:2008/11/17(月) 00:35:44
おちんちん、気持ちいいお(;ω;)

最近、聞くことなくて、このスレの人たちとコミュニケーションとれなくて、
さみしいお(;ω;)また、わからないことあったら、聞きにくるからよろしくだお(;ω;)

528 :269:2008/11/17(月) 00:36:06
>>510
ありがとうございます!

>>510様に書き直して頂いたものをマネてForm1_Loadに書いていたものをForm1に書いて
SetBackgroundを同じクラス内に書くとうまくいきました

が、数時間無い頭を使って考えてみましたがなぜ最初のでは動かないのかがわかりませんでした


今まで私の質問に丁寧に答えてくださった皆様、本当にありがとうございました

529 :デフォルトの名無しさん:2008/11/17(月) 00:42:55
おまんまん、気持ちいいお(;ω;)

最近、聞くことなくて、このスレの人たちとコミュニケーションとれなくて、
さみしいお(;ω;)また、わからないことあったら、聞きにくるからよろしくだお(;ω;)

530 :デフォルトの名無しさん:2008/11/17(月) 00:53:56
>>526
d 参考にするわ

531 :デフォルトの名無しさん:2008/11/17(月) 00:57:48
>>529
d 参考にするわ

532 :デフォルトの名無しさん:2008/11/17(月) 01:57:38
for文で初期化子を2こ以上書くときってどうすればいいですか?

↓こんなかんじにやりたいんです

for(int i=0,int j=0;i<i_max;i++,j++)

533 :デフォルトの名無しさん:2008/11/17(月) 02:00:35
そんな書き方見たことないんだが・・・
というかみにくいと思うがどういう使い道があるのか…・

別に管理したいなら変数切ってやればいいんじゃね?


いや、おれの無知ならすまないことなんだが

534 :デフォルトの名無しさん:2008/11/17(月) 02:03:36
>>532
その条件ならこれですむわけだが。

for(int i=0;i<i_max;i++)
{
  int j=i;
}

535 :デフォルトの名無しさん:2008/11/17(月) 02:08:55
>>532の例は適当です
本当はiとjは別の初期値でやりたいです

↓こんなかんじでやればできるんでしょうけど
for文にひとまとまりにできないのかと思って

inti,j;
for(i=i0,j=j0;i<i_max;i++,j++)

536 :デフォルトの名無しさん:2008/11/17(月) 02:14:37
自己解決しますた

537 :デフォルトの名無しさん:2008/11/17(月) 02:16:18
自己解決したようだが

for (int i = 0, j = 0; i < length; i++, j++)
みたいな感じでいけるけど、可読性最悪でオススメできない。
for内で使うのは一つに制限した方が良い。

538 :デフォルトの名無しさん:2008/11/17(月) 02:30:38
フィールドにアクセスする時って
全部プロパティとかのアクセサでやんなきゃいけないもんなんですか?
いちいちアクセサ書くのがめんどいし
何の意味があるんかよくわかりません
特に配列とかテンプレートへアクセスするときのやりかたがよくわかりません

539 :デフォルトの名無しさん:2008/11/17(月) 03:06:37
初歩的な事だと思うんですが、以下のコードを入れたとき


[StandardModuleAttribute()]
public sealed class Information
{
}

型または名前空間名 'StandardModuleAttribute' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
とエラーが出て、どんなusingを追加すれば消えるのか調べているのですが見つかりません。
どんなusingを加えればエラーが解消されるのでしょうか。
また、usingについて詳しく記載されているHP(MS公式以外)があれば教えて下さい。

540 :デフォルトの名無しさん:2008/11/17(月) 03:28:19
>>539
.NET Framework クラスライブラリ中のものなら MSDN で検索すれば所属する名前空間が書いてある。
ちなみに、クラス名を入力したときに出てくるリファクタ用メニュー(茶色い四角形)を使えば簡単に追加できる。

541 :デフォルトの名無しさん:2008/11/17(月) 03:33:49
>>539
ていうか、何でStandardModule属性なんか使おうとしてるん?
役割を知ってるのかは知らんけど、それは普通使わない(使うべきでない)物だぞ

StandardModuleAttribute クラス - msdn
http://msdn.microsoft.com/ja-jp/library/microsoft.visualbasic.compilerservices.standardmoduleattribute(VS.95).aspx

542 :デフォルトの名無しさん:2008/11/17(月) 03:34:05
流石にネタか?
StandardModuleAttributeでググれば先頭に出てくるんだがな・・。MSDNだけど。
そのusingの意味は>444辺りに書いてるじゃん。
DLL参照が足りない?それもどのDLL追加すればいいかMSDNにあるじゃん。
まず自分で少し調べれ。

543 :デフォルトの名無しさん:2008/11/17(月) 03:36:55
MSDNって読みにくくないですか?初心者や中級車にも不親切ですし、上級者向けというかなんか中の人専用の情報という感じがしませんか?

544 :デフォルトの名無しさん:2008/11/17(月) 03:42:21
MSDNを読みやすいと感じてる奴は誰もいないだろうな
事務的で冷たいし

545 :デフォルトの名無しさん:2008/11/17(月) 03:44:20
自動翻訳された文章に何を言っている

546 :デフォルトの名無しさん:2008/11/17(月) 03:46:02
>>537
これが.NET世代か・・・

547 :デフォルトの名無しさん:2008/11/17(月) 03:47:00
このスレ一々煽る奴が雰囲気わるい

548 :デフォルトの名無しさん:2008/11/17(月) 03:47:13
確かに機械翻訳された文書はイミフだし、重いし。ちょっと前の文書はほとんどリンク切れしてるし(ry。
でもクラス名で検索すると、.NETのものなら大体先頭に来るし、
winのAPIとかCOMとかの、ちょっとコアな部分に入ると結構MSDN頼り(+英語)になることも多いし、慣れておいて損はないかと。
必要な部分だけ読んで、後は流せばいい。
・・名前空間見るくらいはいいじゃんw

549 :デフォルトの名無しさん:2008/11/17(月) 03:47:36
MS のライブラリ使ってる以上 MSDN からは逃れられないと覚悟するべき。
個人的には英語版の方が読みやすくて好き。英語出来るならオススメ。

550 :デフォルトの名無しさん:2008/11/17(月) 03:52:29
英語なんかよんでニュアンスを取り違えるよりは
あの変な日本語の方がましだな

つーか、専門の翻訳スタッフぐらい雇えよな

551 :デフォルトの名無しさん:2008/11/17(月) 03:53:20
俺にとっては一番すらすら読める英文がMSDNライブラリになってしまった。

552 :デフォルトの名無しさん:2008/11/17(月) 04:05:15
マイクロソフトは自社製品よりもMSDNに資金使ってくれないかな。
自分のところの仕様やドキュメントを適当にしておくなんて一体何をする会社だか分からんw

553 :デフォルトの名無しさん:2008/11/17(月) 04:06:50
>>550
いや、あの日本語で理解できるかw?
主語・目的語が何なのかすら分からん文とかが延々と並んでるんだぜw。技術文書として致命的じゃね?
サンプルコードが付いてたりするからそこから読み解けなくも無いけど、日本人がアレから読み取れるニュアンスがまともなものになるとは思えないぞ。
.NETのライブラリ部分とか、基本的な部分の技術文書なんかは人間が翻訳してるから普通に読めるが。
上に機械翻訳の免責云々って書いてあったら軽く読んでから英語表示。

554 :デフォルトの名無しさん:2008/11/17(月) 04:07:54
KBってMSDNライブラリに含まれるの?

555 :デフォルトの名無しさん:2008/11/17(月) 04:10:39
RichTextBox コントロールを使用すると、ユーザーはテキストを入力および編集できます。
このコントロールには、標準の TextBox コントロールよりも高度な書式設定機能も用意されています。
テキストは、このコントロールに直接割り当てることも、リッチ テキスト形式 (RTF: Rich Text Format)
ファイルやプレーンテキストファイルから読み込むこともできます。コントロール内のテキストには、
文字書式または段落書式を割り当てることができます。


ひっでえ日本語w

556 :デフォルトの名無しさん:2008/11/17(月) 04:16:35
どこに問題があるのか全くわからない俺は
翻訳文書に飼いならされてしまったのだろうか・・・

557 :デフォルトの名無しさん:2008/11/17(月) 04:18:24
初めてマジマジと読んだけど、英語をそのまま日本語に訳してみました的な文だよな…w
技術文章だから原本を大事にしてるのかね?



それとも MSKK がさb

558 :デフォルトの名無しさん:2008/11/17(月) 04:23:27
555だけを見てちょっと考えてみた。でも片言臭さがまだまだ抜けていないと思う。

RichTextBoxはテキストを入力および編集できるコントロールです。
TextBoxコントロールよりも高度な書式設定機能が用意されており、
コントロール内のテキストには、文字書式と段落書式を指定できます。

このコントロールにテキストを設定する方法は、次のような方法があります。
・プログラムから直接指定する
・リッチ テキスト形式 (RTF: Rich Text Format)ファイルから読み込む
・プレーンテキストファイルから読み込む


559 :デフォルトの名無しさん:2008/11/17(月) 04:25:22
ttp://msdn.microsoft.com/ja-jp/library/system.windows.forms.richtextbox.aspx
ttp://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.aspx

読み比べてみたが、読みやすい訳じゃないか
代替訳があるなら提示しておくれ

560 :デフォルトの名無しさん:2008/11/17(月) 04:26:47
ああ、代替訳が出てたか
そこまで行くと意訳だから技術文書として望ましくないんじゃないか

561 :デフォルトの名無しさん:2008/11/17(月) 04:31:30
>>554 KBもMSDN検索に出てくるからいいんじゃね?

プログラム経験の浅い人使って翻訳する場合、解釈して書き直すと意味が変わる恐れがあるから、英語丸投げにも納得は出来る。
マ集めて翻訳させてたら日本語ライブラリ作るのが遅れるし。そういう意味では>555は十分な文書だと思う。

マには伝わる単語のニュアンスが、一般人には伝わらないことは結構多い。それが英語版で読める強み。
それが大きな支障になることは少ないと思うけど、コイツ・・分かってないな(ニヤッ。って感じに楽しめる。

562 :デフォルトの名無しさん:2008/11/17(月) 04:57:05
この例文でいくと、「テキストは〜」の一文は読みづらいな。
英語だと違和感ないんだけど、日本語だとすごい読みづらくなってる。

まあ、>>561 が言っているとおり、勝手に意訳されて意味が違ってくるとそれはそれで困るけどね。

563 :デフォルトの名無しさん:2008/11/17(月) 06:47:12
英語を直訳してるから、「〜は〜だ」の形がしつこく感じるな

564 :デフォルトの名無しさん:2008/11/17(月) 08:06:47
愚かな日本人用に翻訳があるだけましだこのやろう
MSはまだよくやってる方だぜ。S(略)Nなんか……

565 :デフォルトの名無しさん:2008/11/17(月) 08:17:08
SUNのドキュメントの翻訳とかはオープンソース(ボランティア)に移行したんじゃなかったか?
デベロッパ・コミュニティーに優しいのはMSよりSUNの方だと思うけどねえ。

566 :デフォルトの名無しさん:2008/11/17(月) 08:48:20
それはない

567 :デフォルトの名無しさん:2008/11/17(月) 09:01:53
SUNはWindows版Javaクライアントをわざと重くしてるから大嫌い

568 :デフォルトの名無しさん:2008/11/17(月) 09:13:13
おまえのPCが旧式なだけだろw

569 :デフォルトの名無しさん:2008/11/17(月) 09:25:35
新型でも思い

570 :デフォルトの名無しさん:2008/11/17(月) 10:03:11
Twitterクライアントを作ろうと思ってます。
http://blogs.wankuma.com/kazuki/archive/2008/04/24/135133.aspx
から、com.csと、Program.csを作ったところ、
エラー 1 型または名前空間名 'TwitterStatus' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
となります。
なにを参照すればよいんでしょう?

571 :デフォルトの名無しさん:2008/11/17(月) 10:46:23
TwitterStatusクラスの定義がそのURLのコードには書いてないってだけ
本人に聞けよ

572 :デフォルトの名無しさん:2008/11/17(月) 11:50:24
XmlSerializer で、object 型のプロパティが XMLに Serialize することは出来ても、
Deserialize すると null になってしまうのですが、仕様ですか?

573 :デフォルトの名無しさん:2008/11/17(月) 12:02:31
そりゃobject型としてシリアライズすればそうなるに決まってる
objectには読み書き可能なプロパティなど存在しないからな
XmlSerializeによるシリアライズ結果に型情報は載らないのよ

574 :デフォルトの名無しさん:2008/11/17(月) 12:05:23
>>573
出来ました。XmlSerializer のコンストラクタに object に入る可能性のあるオブジェクトの型を
指定しておくことで解決しました。

//XmlSerializerオブジェクトの作成
Type[] extraTypes = new Type[1];
extraTypes[0] = typeof(int);

XmlSerializer serializer = new XmlSerializer(this.GetType(), extraTypes);

575 :デフォルトの名無しさん:2008/11/17(月) 20:12:18
個人的にはこんなの作ってる
このやり方が普通かどうかはしらん

public class XmlAccessor
{
    public static void XmlSerialize<Type>(string filePath, Type value)
    {
     using (FileStream fs = new FileStream(filePath, FileMode.Create)) {
        XmlSerializer xs = new XmlSerializer(typeof(Type));
        xs.Serialize(fs, value);
     }
    }

    public static Type XmlDeserialize<Type>(string filePath)
    {
     Type value = default(Type);

     if (File.Exists(filePath)) {
        using (FileStream fs = new FileStream(filePath, FileMode.Open)) {
         XmlSerializer xs = new XmlSerializer(typeof(Type));
         value = (Type)xs.Deserialize(fs);
        }
     }
     return value;
    }
}


576 :デフォルトの名無しさん:2008/11/17(月) 20:22:37
話とはずれるけど>>575みたいに型を2回書くのを避けるためだけにジェネリック使うのは好きじゃないなあ
静的に完結しないならTypeを引数に取ってobject返しちゃう

577 :デフォルトの名無しさん:2008/11/17(月) 20:31:38
>>575
まあたぶんみんな同じようなやつを私的なライブラリに持ってるでしょ。
俺は呼び出し側で例外処理書くの面倒だからシリアライズの方はbool返すようにしてる。

>>576
すれてるのは話じゃなくて論点の方じゃないのかな?

578 :デフォルトの名無しさん:2008/11/17(月) 20:37:27
ブラウザでこれから開くページがすでに開いていたら、閉じるか、そのページをリロードしたいのですが、どのようにしたらよいでしょう?

Shell sh;
SHDocVw.ShellWindows o;

sh = new Shell();
o = new SHDocVw.ShellWindows();
foreach (SHDocVw.InternetExplorer ie in o){
if (ie.LocationURL.Contains("これから開くページのURL")){
//ここでそのページをcloseとかkillとかreloadとかしたい。
}}

579 :デフォルトの名無しさん:2008/11/17(月) 21:53:56
ie.Quit();//閉じる
ie.Refresh();//リロード

580 :デフォルトの名無しさん:2008/11/17(月) 22:48:53
プロジェクトをコピーして
改良版を作る時にどうやればいいか教えてください。
namespaceとかプロジェクト名とかいちいち置換しないとだめですか?

581 :デフォルトの名無しさん:2008/11/18(火) 00:06:06
>>580
version管理ツール使えばいいんじゃね?
亀SVNとか楽だよ。

582 :デフォルトの名無しさん:2008/11/18(火) 00:08:36
へーそんなのあるんだ
サンクス

583 :デフォルトの名無しさん:2008/11/18(火) 00:09:45
>>579
Thanks!!!

584 :デフォルトの名無しさん:2008/11/18(火) 09:09:50
#region〜#endregionはなんでエディタに統合されないの?

585 :デフォルトの名無しさん:2008/11/18(火) 10:09:33
どういうの望んでるの

586 :デフォルトの名無しさん:2008/11/18(火) 10:17:04
ワンキーで開始と終わりを設定できたら楽じゃん。
ブレークポイントやブックマークだってわざわざその行に
「#breakpoint」
なんて一々書いてたら面倒だし視認性だって下がるでしょ。

587 :デフォルトの名無しさん:2008/11/18(火) 11:38:26
言語設計の段階に文句言ってるの?
それとも、VC# のアップデートでそれがサポートされないことに文句言ってるの?

region〜endregion は、C# 言語の一部分で、組み込まれてる。
他の IDE でも同様の用途に使えるんだから、VC# でのみ使える region のようなものを新設する意味がない。

ただ、region の表示方法を工夫してもらいたいなとは思う。
括った部分はインデントするとか、しないとか。

588 :デフォルトの名無しさん:2008/11/18(火) 11:51:28
教えてください。
ディスクの空き容量が少ないのですが、
Microsoft SQL Server 2008関係
は、C#のFormやWPFの開発に必要なんですか?
使わなければ消してもよいですか?

同じく、.NET Frameworkが1.1、2.0、3.0、3.5と入っているのですが、
3.0と3.5だけ残して1.1と2.0は消してもよいですか?

589 :デフォルトの名無しさん:2008/11/18(火) 11:54:17
ついでに、
MSDN Library for Mycrosoft Visual Studio 2008 Express Edition
というのは、WebでMSDNを検索すれば必要ない?


590 :デフォルトの名無しさん:2008/11/18(火) 11:57:06
加えて、C#の開発に、
Microsoft Visual C++ 2005 Redistributable
Microsoft Visual C++ 2008 Redistributable -x86 9.0.30729
っても不要に思えるのですが…。


591 :デフォルトの名無しさん:2008/11/18(火) 12:07:47
一回で質問しろ
全部消していいよ

592 :デフォルトの名無しさん:2008/11/18(火) 12:11:47
>>588
再インストール出来るんだから、まずは消してみればいいじゃない。
質問するのはそれからだろ?

593 :デフォルトの名無しさん:2008/11/18(火) 12:11:58
とりあえず消してみて不自由なら入れなおせばいい

594 :デフォルトの名無しさん:2008/11/18(火) 12:24:09
しかし開発機で空き容量不足は不便だよ。
抜本的な対策したほうがいいと思う。

595 :デフォルトの名無しさん:2008/11/18(火) 12:27:43
gpartedで空き容量は自由時際

596 :デフォルトの名無しさん:2008/11/18(火) 12:32:50
>>587
文字を書いてエディタの機能を有効にするなんて明らかに変じゃない?違和感ない?
#endregionって書いて数秒経つと+が現れるとか…

597 :デフォルトの名無しさん:2008/11/18(火) 12:43:33
マウスで選択してブロックの挿入でいいじゃん

598 :デフォルトの名無しさん:2008/11/18(火) 14:21:01
>>596
何か勘違いしてない?
region は言語に組み込まれてる機能だよ?

それを VC# 側で解釈してるだけ。

599 :デフォルトの名無しさん:2008/11/18(火) 14:40:21
>>596
とりあえず、議論したいなら何がどうあって欲しいのかを明確にするべきじゃね?
何に対して文句言ってるのかよくわからんし。

600 :デフォルトの名無しさん:2008/11/18(火) 15:58:13
テキストエディタでC#の言語機能であるregionを書いても意味がないおかしいってことだろ

601 :デフォルトの名無しさん:2008/11/18(火) 16:09:11
レギオンなんて使ってる奴いるのか?
いちいち開いたり閉じたり、逆に読み難いだけだろ(^m^)ププ

602 :デフォルトの名無しさん:2008/11/18(火) 16:11:20
#region 変数aを宣言する
int a;
#endregion

#region 変数aに1を代入する
a = 1;
#endregion

603 :デフォルトの名無しさん:2008/11/18(火) 16:11:44
だって、ガメラはレギオンを許さない

604 :デフォルトの名無しさん:2008/11/18(火) 16:12:18
>>601
古代ローマの人?
レギオンとリージョンって語源一緒なんだろか。

605 :デフォルトの名無しさん:2008/11/18(火) 16:14:53
レギオンってリージョンのことだったのか。マジで何言ってるのかわからんかった。

606 :デフォルトの名無しさん:2008/11/18(火) 16:22:23
今、ガメラの目が光った!

607 :デフォルトの名無しさん:2008/11/18(火) 16:40:00
>>602
コメントwwwwwwwww

http://ja.wikipedia.org/wiki/レギオン

608 :デフォルトの名無しさん:2008/11/18(火) 16:40:24
>>601
レギオン(^m^)ププ 


609 :デフォルトの名無しさん:2008/11/18(火) 16:53:47
レギオンとリージョンって同じものだったのか

610 :デフォルトの名無しさん:2008/11/18(火) 17:01:57
レーギョン

611 :デフォルトの名無しさん:2008/11/18(火) 17:15:20
なんか赤っ恥掻いてる人いてワラタ

612 :デフォルトの名無しさん:2008/11/18(火) 17:17:10
結構釣れたな
語源は同じだから強ち釣りでもないが

613 :デフォルトの名無しさん:2008/11/18(火) 17:21:08
釣り宣言キタコレw

614 :デフォルトの名無しさん:2008/11/18(火) 17:23:38
"シュミ"レーションに食い付くタイプだな。
ネイティブな発音も知らずに無知をさらしまくる奴。

615 :デフォルトの名無しさん:2008/11/18(火) 17:31:02
>>614
kwsk

俺は英検1級もってるんだが、"シュミレーション"に対しては食いつくぞ?

616 :デフォルトの名無しさん:2008/11/18(火) 17:33:03
英検1級w

617 :デフォルトの名無しさん:2008/11/18(火) 17:34:07
TOEIC受けろw
英検より役に立つぞw

618 :デフォルトの名無しさん:2008/11/18(火) 17:35:23
釣れたw
本当はTOEIC700点ですが何か?

619 :デフォルトの名無しさん:2008/11/18(火) 17:36:08
#region


620 :デフォルトの名無しさん:2008/11/18(火) 17:38:39
>>618
英検1級って700点レベルなのか。
意外と大したことないな。

釣られてみる。

621 :デフォルトの名無しさん:2008/11/18(火) 17:39:38
いちいち「釣られてみる」とか予防線張らないと何も言えんのか

622 :デフォルトの名無しさん:2008/11/18(火) 17:39:58
#endregion

623 :デフォルトの名無しさん:2008/11/18(火) 17:40:31
だって釣りだったんだろ?w

あと #region 書くときは名前も付けてやろうぜ。

624 :デフォルトの名無しさん:2008/11/18(火) 17:40:44
>>621
だってヘタレなんだもんw

625 :デフォルトの名無しさん:2008/11/18(火) 17:41:19

#endregion

626 :デフォルトの名無しさん:2008/11/18(火) 17:45:45
>>625
エラー: 不適切なプリプロセッサ ディレクティブです。

627 :デフォルトの名無しさん:2008/11/18(火) 17:46:54
where句って、Generics時の型<T>に参照型か値型かを要請する
という解釈で合ってますか?

628 :デフォルトの名無しさん:2008/11/18(火) 17:47:25
#region 釣り堀

629 :デフォルトの名無しさん:2008/11/18(火) 18:02:01
#endri-jon

630 :デフォルトの名無しさん:2008/11/18(火) 18:02:18
>>627
それだけじゃないけどそういう制約もできるね

631 :デフォルトの名無しさん:2008/11/18(火) 18:09:01
>>630
それだけじゃないとは?

632 :デフォルトの名無しさん:2008/11/18(火) 18:12:25
あまりのひどさに鼻糞が吹き飛んだじゃないか!

633 :デフォルトの名無しさん:2008/11/18(火) 18:22:55
>>631
ヘルプやMSDNで「where (ジェネリック型制約)」を調べて

634 :デフォルトの名無しさん:2008/11/18(火) 18:24:34
>>633
確かにここの糞どもと会話するより検索したほうが早そうだ

635 :デフォルトの名無しさん:2008/11/18(火) 18:29:41
いや、そんなのは当たり前だろ
ここが2chじゃなくてMSDNフォーラムだろうが@IT会議室だろうが変わらん
「ヘルプ見れば明らか」ってもんなんだから

636 :デフォルトの名無しさん:2008/11/18(火) 18:31:17
いちいち反応するなよ

637 :デフォルトの名無しさん:2008/11/18(火) 18:42:27
unsafeは余り使わない方がいいんですか?

638 :デフォルトの名無しさん:2008/11/18(火) 18:45:08
いちいち反応しないでくれる?

639 :デフォルトの名無しさん:2008/11/18(火) 18:48:49
あんまり俺をなめない方がいいよ(・∀・)
言っとくけどVIPPERで固定ハンドルネームやってるしこのスレットを潰すくらいの
影響力は持ってるから くだらん事で俺を刺激しないように(・ω・)/

640 :デフォルトの名無しさん:2008/11/18(火) 18:49:47
一つ上にアホがおる

641 :デフォルトの名無しさん:2008/11/18(火) 18:49:47
潰れても誰も困らないというオチ

642 :デフォルトの名無しさん:2008/11/18(火) 18:52:24
>>637
使わずに済むなら使わないに越したことはない
それ自体の危険性は置いといても,Silverlightで使えないとかいろいろ余計な制約がかかる

643 :デフォルトの名無しさん:2008/11/18(火) 19:04:27
もう頭来た
おい>>639このスレにvipper呼ぼうぜ

644 :デフォルトの名無しさん:2008/11/18(火) 19:17:08
さあこい

645 :デフォルトの名無しさん:2008/11/18(火) 20:56:35
話かわってもうしわけないですが、質問させてください。今週C#はじめたものです。
3年程前にVB6やってたときは、スプレッド(GrapeCityの)つかって表インターフェース
作成していましたが、いまどき、有料のコンポーネント買いたいといっても、予算が
おりません。(どとねと版16マンもしてるみたいでしたし。。。)
ぐぐった感じでは、OfficeコンポーネントをつかってExcelをはめ込むのが近いかな?
とおもいましたが、なんかいい方法あるのでしょうか?

646 :デフォルトの名無しさん:2008/11/18(火) 21:00:36
>>645
結局何がしたいのかわからん。
表を作りたいのか? だったら DataGridView を使えばいい。

647 :デフォルトの名無しさん:2008/11/18(火) 21:10:25
>>645
http://www.grapecity.com/japan/support/database/P7_366.htm
FlexGridなら半額だよ

648 :デフォルトの名無しさん:2008/11/18(火) 21:14:47
C#を使うまでもなくエクセル+VBAで全部片付く仕事でしたの巻

649 :デフォルトの名無しさん:2008/11/18(火) 21:15:55
8万なら、固定資産登録せんでいいから話はとおるかもしれません。
が、できれば、無料のでいきたいです。
DataGridViewはためしてみましたが、印刷をおもったようにだすのに苦労するようにおもえました。
根性いれてやれば、そうでもないのかな?

650 :デフォルトの名無しさん:2008/11/18(火) 21:17:32
コントロールをそのまま印刷するというような発想が間違ってる

651 :デフォルトの名無しさん:2008/11/18(火) 21:17:33
Excel+VBAでつくったら200万しかもらえない仕事も
C#で同様の機能つくったら800万になるんですよ。
C#からExcelを別に起動させてはだめで、C#のForm内に表が
でてくるようにするだけでお客さんの払う金額はかわってきます。

652 :デフォルトの名無しさん:2008/11/18(火) 21:19:48
印刷だけFlowDocument使うとかできるんかな。
できればすごい楽そうなんだけど。

653 :デフォルトの名無しさん:2008/11/18(火) 21:20:11
iTextというのが使えそうで、いったん表をPDFにしてから印刷をすれば
確かにおもったとおりのものが出せそうでした。
でも開発が1表あたり半日は追加になりそうですね。

654 :デフォルトの名無しさん:2008/11/18(火) 21:22:22
8万なんて2人日にもならないじゃん

655 :デフォルトの名無しさん:2008/11/18(火) 21:24:26
8万の調達依頼をかける。
GrapeCityなどの窓口が信用でおちる会社とは取引できないので
商社から買うことになる。
実行予算から8マン減る。
たぶん、事務手続きにかかる人件費は+4万はかかるかもしれん。

656 :デフォルトの名無しさん:2008/11/18(火) 21:32:32
商社ってかO塚商会とか通せばもっと安くなるんじゃね?

657 :デフォルトの名無しさん:2008/11/18(火) 21:32:44
まあコンポーネントが購入できない世界の話はわからんな。
うちならサクサク購入しちゃうから。

658 :デフォルトの名無しさん:2008/11/18(火) 21:35:24
結局C#でのプログラミングはクラスの組み立てなんですか?

659 :デフォルトの名無しさん:2008/11/18(火) 21:36:23
結局、DataGridViewより、みんなコンポーネント購入して使う人が多そうな感じですね。
ま、そっちのほうが稼働は減らせる。という理由で、明日調達かけてみます。
ありがとん。

660 :デフォルトの名無しさん:2008/11/18(火) 21:51:39
結局やりたいことはなんだったんだ?

661 :デフォルトの名無しさん:2008/11/18(火) 21:57:32
ただで済ませられるならそれに越したことはない、ってことだったんじゃね。

662 :デフォルトの名無しさん:2008/11/18(火) 22:06:26
WindowsのForm上でやってる作業は、Excel
表示は、DBからとってくるという奴かと。。。

663 :デフォルトの名無しさん:2008/11/18(火) 22:07:42
Settings.Default.Save();の中でSettingsSavingEventHandlerが呼ばれるんですか?

664 :デフォルトの名無しさん:2008/11/18(火) 23:04:39
> エラー 1 メソッドは戻り値の型を持たなければなりません。

戻り値の型を持たないメソッドの作り方を教えてください

665 :デフォルトの名無しさん:2008/11/18(火) 23:07:32
void

666 :デフォルトの名無しさん:2008/11/18(火) 23:10:36
>>664
void

667 :デフォルトの名無しさん:2008/11/18(火) 23:15:28
void

668 :デフォルトの名無しさん:2008/11/18(火) 23:15:50
void

669 :デフォルトの名無しさん:2008/11/18(火) 23:17:03
うるせえ三味線にするぞ

670 :デフォルトの名無しさん:2008/11/18(火) 23:19:49
>>669
といいますと?

671 :デフォルトの名無しさん:2008/11/18(火) 23:22:20
ということにしたいのですね

672 :デフォルトの名無しさん:2008/11/18(火) 23:25:43
やべえvoidをずっと見てたらウルトラマンに見えてきた

673 :デフォルトの名無しさん:2008/11/18(火) 23:31:20
>>672
ウルトラマンにしかみえなくなったじゃねーかww

674 :デフォルトの名無しさん:2008/11/18(火) 23:57:01
意味がわからん

675 :デフォルトの名無しさん:2008/11/18(火) 23:57:11
やべぇ、俺もそうにしか見えなくなってきたww

676 :デフォルトの名無しさん:2008/11/19(水) 00:41:54
>>672
これはやばいwww
職場で吹いたらお前のせいだからなwwww

677 :デフォルトの名無しさん:2008/11/19(水) 01:05:52
話についていけない俺涙目。誰か解説してくれwww

678 :デフォルトの名無しさん:2008/11/19(水) 01:07:48
oとdが目に見えればあともう少し

679 :デフォルトの名無しさん:2008/11/19(水) 01:11:06
thx把握したwww

680 :デフォルトの名無しさん:2008/11/19(水) 03:11:10
>>598
言語仕様のことなんてどうでもいいけど
ブレークポイントみたいにVS側がサポートすればいいじゃん。
ちなみに#regionの文法はVSのためにある以外に用途あるの?
無いんだったら尚更。

>>599
相当頭悪いの?

681 :デフォルトの名無しさん:2008/11/19(水) 03:44:04
>>680
最新の言語だし、 IDE で開発されることに特化した機能があってもおかしくない。

それぞれの IDE で独自に整形情報をもたれてしまうと、相互に利用する場合に宜しくない。
(VS ではキレイだったコードが SharpDevelop だと悲惨なコードにとか。)
と言うわけで、整形情報はこうしましょうと言語側で決めてしまえばそんな混乱は起こらず、
互換性を気にせずに使えるようになり、コードのメンテナンス性も高まってみんな幸せになれる。

本当のところはどうなのかはヘルズバーグさんに聞いてくれ。
あと煽りは程々に。

682 :デフォルトの名無しさん:2008/11/19(水) 03:50:55
ヘル「ス」バーグさんだった。
ちょっくら吊ってくる。

683 :デフォルトの名無しさん:2008/11/19(水) 03:54:04
ヴァイパー!viper!ヴァイパー!viper!

さあ、来い!ヴァイパー!

684 :デフォルトの名無しさん:2008/11/19(水) 03:56:22
いや、つまんないから

685 :デフォルトの名無しさん:2008/11/19(水) 04:08:35
Hejlsberg の発音
ttp://jp.youtube.com/watch?v=KzSY9WQXjzg

俺にはエンダース・ハースバーグとしか聞こえん

686 :デフォルトの名無しさん:2008/11/19(水) 04:55:04
StreamWriterだと何で最後に改行が加わるんだ?
明らかに言語的に間違えた仕様だろこれは

687 :デフォルトの名無しさん:2008/11/19(水) 05:02:25
あれをStreamWriterと名づけた奴を銃殺にしてくれと思ったことはある。

688 :デフォルトの名無しさん:2008/11/19(水) 06:50:02
void

ん〜、どれどれ・・・ウルトラマン?

689 :デフォルトの名無しさん:2008/11/19(水) 07:22:44
>>686
最後の改行って何だろう。
WriteLineとWriteを使い分けがわからないとか?


690 :デフォルトの名無しさん:2008/11/19(水) 09:21:08
現在のウィンドウが最前面かどうかを調べるにはどうすればいいでしょうか?
よろしくお願い致します。

691 :デフォルトの名無しさん:2008/11/19(水) 09:42:55
Form.TopMost のこと?
それとも単に一番上?

692 :デフォルトの名無しさん:2008/11/19(水) 09:51:28
C++の頃からずっと疑問に思っていたんだけど
ストリームってどういう意味?StreamWriterとかFileStreamとか。
何となく入出力処理に関係しているんだと思うけど。よく意味がわかりません

693 :デフォルトの名無しさん:2008/11/19(水) 09:55:31
Streamは頭で理解するのは無理なので意味がわからないのは仕方ない。

694 :デフォルトの名無しさん:2008/11/19(水) 09:56:37
ビットが流れるから

695 :デフォルトの名無しさん:2008/11/19(水) 10:00:42
>>691
レスありがとうございます

TopMostのように常に最前面ではなくて、
現在、単純に一番上にあるかどうかです

696 :デフォルトの名無しさん:2008/11/19(水) 10:08:28
>>686
なんか勘違いしてると思うぞ

697 :デフォルトの名無しさん:2008/11/19(水) 10:20:44
>>695
APIのGetWindowかGetForegroundWindowを呼ぶ。

698 :デフォルトの名無しさん:2008/11/19(水) 10:25:19
>>695
Form.ActiveForm と自分自身を比べればいいんじゃないか
中でGetForegroundWindow呼んでるんだが

699 :デフォルトの名無しさん:2008/11/19(水) 10:27:24
>>692
まずオレンジジュースがはいったコップとストローを用意しろ。

コップがファイルでジュースがデータだ。

そこにストローを挿せ。それがbufferだ。

君の頭がCPUとして、ストローを吸ってごらん。これがreadstream。

コップのジュースは減るけどデータの場合読み取るだけだから無くならないけどね。

まだ飲むなよ。

今度は口のジュースをストローから出してごらん。
これがWriteStreamさ。

700 :デフォルトの名無しさん:2008/11/19(水) 10:46:20
ぶくぶくぶくって息をふきこむのは、この場合なに?

701 :デフォルトの名無しさん:2008/11/19(水) 10:50:34
>>697 >>698
タスクトレイのアイコンをダブルクリックするごとに
最前面/最小化をトグルで切り替えたかったのですが、
タスクトレイをクリックした時点でフォームがアクティブじゃなくなるので
Form.ActiveFormがnullになってしまうからだめみたいです
上手い方法ないないものでしょうか

private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
this.WindowState = FormWindowState.Normal;
this.Activate();
}
else
{
if (Form.ActiveForm != this)
{
this.Activate();
}
else
{
this.WindowState = FormWindowState.Minimized;
}
}
}
こんな感じに書いてみたのですが・・・

702 :デフォルトの名無しさん:2008/11/19(水) 11:37:59
バイバー!バイパー!

703 :デフォルトの名無しさん:2008/11/19(水) 12:04:07
アクティブかじゃなくて
最小化されてるか確認すればいいジャマイカ

704 :デフォルトの名無しさん:2008/11/19(水) 12:08:58
Zオーダーを調べるのにZオーダーが変更される方法で調べてどうするって話じゃね?

ダブルクリックする直前に、タスクトレイのMouseEnterとかのイベントとかで
ActiveForm調べて覚えといてMouseLeave等で忘れる。
ダブルクリック時には覚えておいたやつと比較。

705 :デフォルトの名無しさん:2008/11/19(水) 12:09:11
EnumWindowsで列挙して特定の条件(スタイルやウィンドウクラス名等)は省いて検索して
1番目に自分があったら一番上、とかでどうかなあ。
一応動作したけど、特定の条件がすべてを網羅できるかわからんな。

706 :デフォルトの名無しさん:2008/11/19(水) 12:39:01
最小化→最前面
背面→最前面
最前面→最小化
ってことか。

707 :デフォルトの名無しさん:2008/11/19(水) 14:35:14
>>699
蛇口と排水溝あたりの方が分かりやすいと思うがどうよ

>>701
そういう摩訶不思議な設計はユーザの混乱を招きそうだ

タスクトレイのアイコンは最小化の切り替えだけにして、非最小化したときに前面に、
もしくは最初から最前面に表示するというのではいかんのか?

708 :デフォルトの名無しさん:2008/11/19(水) 15:31:54
IPメッセもどきをC#で書いてみてるんですが、例えばIPメッセで
定義されているIPMSG_BR_ENTRY(0x00000001UL)をパケットキャプチャ
で見てみると、10進で6291457、16進で600001となっているんですが
この関係ってどう捉えればいいのでしょうか?

709 :デフォルトの名無しさん:2008/11/19(水) 15:37:37
(0x00000001UL+パケットキャプチャ)×君の勘違い=6291457=0x600001

710 :デフォルトの名無しさん:2008/11/19(水) 15:51:26

if( ( ( (unsigned int&)z & ~( (unsigned int&)x | (unsigned int&)y ) ) & 0x80000000 ) != 0 )

cで書かれた(c++?)上のようなコードがあるんですが、
これをc#に直してください。

何をしてるのかさっぱり分かりませんがコメントにはこうあります。
// Take the bitwise AND of z and the complement of the inclusive OR of x and y,
// then bitwise AND the result with 0x80000000 and return it. A bitwise result
// of zero equals false, while any other value equals true.

x,y,zはfloatです。

711 :710:2008/11/19(水) 15:54:40
あと、コメントを読んでも良くわからないので
上の式が何をしているのかを分かりやすく教えてもらえると助かります。

712 :708:2008/11/19(水) 15:59:43
>>709
すいません。私が見てたのは文字列のようでした。
16進表記では 36 32 39 31 34 35 39 となっていました。
色々勘違いしている気はします…。

713 :デフォルトの名無しさん:2008/11/19(水) 16:00:54
>>704
MouseEnterがなかったので、MouseMoveでやってみましたが、
タイミング的な問題で常にnullになってしまうようでだめでした

>>705
それでうまくいきました
具体的には
http://smdn.invisiblefulmoon.net/ikimasshoy/dotnettips/tips017.html
のサイトを参考にして、自身のキャプションが最初に見つかった場合、
「最前面にいる」という判定で問題なさそうです

>>706
そういうことですね

>>707
摩訶不思議でしょうか?
見えないとき→最前面へ
みえるとき→背面へ
ってだけなんですけどね
まぁ、勝手に仕様を変えるわけにもいかんので

714 :デフォルトの名無しさん:2008/11/19(水) 16:02:48
if (z < 0 && (x < 0 || y < 0))


715 :デフォルトの名無しさん:2008/11/19(水) 16:08:37
>>713
>>摩訶不思議でしょうか?
右クリックでメニューが開く
左クリックでウィンドウ表示、最前面表示
ダブルクリックでメニュー内の太字項目実行

とかが普通な気はするな
まあ仕様じゃしょうがない

716 :デフォルトの名無しさん:2008/11/19(水) 16:12:59
>>714
残念

717 :デフォルトの名無しさん:2008/11/19(水) 16:27:07
if (z < 0 && x >= 0 && y >= 0)


718 :デフォルトの名無しさん:2008/11/19(水) 16:39:43
string txt = "abcde";
string str;

str = (txt.Remove(txt.IndexOf("de")).Substring(txt.Remove(txt.IndexOf("de").IndexOf("c")));

という書き方と

str = txt.Remove(txt.IndexOf("de"));
str = str.Substring(str.IndexOf("c"));

という書き方でわかりやすいのはもちろん下だと思いますが
推奨されるのはどちらですか?

719 :デフォルトの名無しさん:2008/11/19(水) 16:46:43
下だけど
IndexOfが-1返す場合は考えなくていいの?

720 :デフォルトの名無しさん:2008/11/19(水) 16:47:06
IndexOfが-1を返す可能性を考慮するとどれも駄目駄目だな

721 :デフォルトの名無しさん:2008/11/19(水) 16:54:12
>>719
考えなくていいです

722 :デフォルトの名無しさん:2008/11/19(水) 16:55:38
もちろんわかりやすいほう

723 :デフォルトの名無しさん:2008/11/19(水) 16:57:36
ありがとうございます。
ネットでサンプルコードを探しているとたまに上のようなコードを見かけるので
1行で書いた方が良いのかと思ってました。

724 :デフォルトの名無しさん:2008/11/19(水) 18:25:14
鼻くそは食べれるんですか?

725 :デフォルトの名無しさん:2008/11/19(水) 18:35:00
>>707
>蛇口と排水溝あたりの方が分かりやすいと思うが

void <kwsk!
bool <kwsk!   kwsk!> long

726 :デフォルトの名無しさん:2008/11/19(水) 18:36:54
  (\/)
(\)(o由o)(\) フォッフォッ

727 :デフォルトの名無しさん:2008/11/19(水) 18:37:55
(pio)/ ハナクソ!

728 :デフォルトの名無しさん:2008/11/19(水) 19:41:05
>>725
本当はそういう訳のわからないたとえ話じゃなくそのまま理解した方が簡単。

俺の理解ではストリームっていうのはデータの読み書きを、相手が紙テープだろうとメモリだろうと
COMポートだろうとサウンドカードだろうとファイルシステムだろうと透過的に行うための
インターフェイスのことだと思うんだけど。

729 :デフォルトの名無しさん:2008/11/19(水) 19:44:10
Adapterってこと?

730 :デフォルトの名無しさん:2008/11/19(水) 19:51:57

組織票に立ち向かえるだけ投票率が上がり(65%以上だ)、反自公の議員が増えれば革命は成る!!
少なくとも比例区は自民党に入れるな!

  いくらここで殺人なんぞ喜んでいても、
    官僚の天下り利権はそのまんま、国民エイズで殺す悪党もそのまんま、だ!
         全然変わりゃしないんだよ!!

<官僚結託の悪党ジメツントヲーめらどもを、選挙で落とさない限り> ね!!

 YouTube - 国会映像館:4つの天下り例
 1/4 http://jp.youtube.com/watch?v=96W0VYWKKEk&feature=related
 2/4 http://jp.youtube.com/watch?v=TI0laixTvCM&feature=related
 3/4 http://jp.youtube.com/watch?v=O0H5Z6m4Ir8&feature=related
 4/4 http://jp.youtube.com/watch?v=UxZTL4YItpQ&feature=related

悪党システムを廃止するためには選挙にいってしかるべき投票行動を取ればいいだけ!  
殺しなんてとんでもない!!

 さあ、官僚どもを叩き潰せ !!

ただし、選挙でヤルべきだな!ここで喚いてるおまいら、次の衆院選はちゃんと投票しろ!
期日前投票なら近所の人間にも会わずに済むぞ、ニートであっても恥ずかしくない、全員で
投票しに行くんだ!!

 YouTube - 長妻昭議員の講演(200878 岩手県盛岡市) http://jp.youtube.com/watch?v=gx9IWoVz-nE&NR=1
 Part2 http://jp.youtube.com/watch?v=f94gAI5GCQU&feature=channel
 Part3 http://jp.youtube.com/watch?v=ifduT-BoLus&feature=channel

悪党官僚結託ジメツントヲーどもテッテテキにブチ落とすんだ!!官僚の自由にさせず俺らの財産である
税金・保険料を1円も無駄にすることのない、俺らの政府を打ち立てようぜ!!

731 :デフォルトの名無しさん:2008/11/19(水) 19:56:36
ま、警察も鼻糞ってことだったんだな

732 :デフォルトの名無しさん:2008/11/19(水) 19:57:25
コピペ君って馬鹿だな、まで読んだ。

733 :デフォルトの名無しさん:2008/11/19(水) 20:02:23
読み込む元や書き込む先が何かは分からないけどっていうか何でもいいので
とにかくバイト単位で順番にどんどんデータを取り出したり書き込んだりするものがStream

バイト単位でどんどん吸い出したり書き込んだりするもの


読み込む元や書き込む先はファイルだろうがネットワークだろうがメモリだろうが何でも同じ
同じ操作で好きな物から読み込んだり書き込んだりするために作られた抽象的な物がStream


734 :デフォルトの名無しさん:2008/11/19(水) 21:14:01
あい

735 :デフォルトの名無しさん:2008/11/19(水) 22:11:58
FileStreamクラスにReadメソッドとWriteメソッド両方用意するって発想はなかったんだろうか・・・

736 :デフォルトの名無しさん:2008/11/19(水) 22:14:45
両方用意されてるけど何か?

737 :デフォルトの名無しさん:2008/11/19(水) 23:23:09
本当だ・・・

StreamReaderとかStreamWriterとかの生成が必須かと思ってたわ

738 :デフォルトの名無しさん:2008/11/19(水) 23:27:21
C# 4.0はまだですか?

739 :デフォルトの名無しさん:2008/11/19(水) 23:29:13
もうだいたい言語仕様は出てるよ
VS2010/.NET4.0予定

740 :デフォルトの名無しさん:2008/11/20(木) 00:10:37
サーバー上に特定のファイルが存在するかどうか調べるにはどうすればいいですか?

741 :デフォルトの名無しさん:2008/11/20(木) 00:16:34
get に失敗するかどうか拾えばいいんじゃないの

742 :デフォルトの名無しさん:2008/11/20(木) 00:36:15
>>740
HTTP?なら HEAD メソッドで。

743 :740:2008/11/20(木) 00:48:14
すみません、HEADメソッドというのは何というクラスでしょうか?

744 :デフォルトの名無しさん:2008/11/20(木) 01:48:59
>>743
HTTP について少しは調べたらどうだwwww

745 :デフォルトの名無しさん:2008/11/20(木) 10:49:43
超初心者からの質問です。
Window FormのDesignerでWindowをダブルクリックすればForm_Loadingコード
を自動に書いてくれるんですが、Form_Closingはどうやればいいんですか?


746 :デフォルトの名無しさん:2008/11/20(木) 10:59:59
>>745
MSDNを読めよ。
>Closing イベントは、.NET Framework Version 2.0 では使用されません。代わりに FormClosing イベントを使用します。



747 :デフォルトの名無しさん:2008/11/20(木) 11:18:25
>>745
プロパティウィンドウの上の方にある雷みたいなマークをおして
書きたいイベントのところをダブルクリック

748 :745:2008/11/20(木) 11:22:14
すいません、解決しました。
Design View->Event Tool Bar->Form Closingをダブルクリック


749 :デフォルトの名無しさん:2008/11/20(木) 13:40:42
また雷みたいにコンパイラに怒られたのか。

750 :デフォルトの名無しさん:2008/11/20(木) 13:43:48
public bool Visible{
set{
if(visible = value){
//処理
}
else{
//処理
}
}
}
public void Show(){
this.Visible = true;
}
public void Hide(){
this.Visible = false;
}
-------------------------------------------
public bool Visible{
set{
if(visible = value)
Show();
else
Hide();
}
}
public void Show(){
//処理
}
public void Hide(){
//処理
}
上と下どっちが好ましい?

751 :デフォルトの名無しさん:2008/11/20(木) 13:46:53
条件によるんじゃない?
他からShowHideメソドを使うけど処理したくない場合もあるだろうし
ケースバイケースとしか言いようがない

752 :デフォルトの名無しさん:2008/11/20(木) 13:49:04
ListViewコントロールのMultiSelectをTrueにセットして
アイテムを複数同時に選択したとき、
複数選択されたものの中から、マウスで実際に(SHIFTキーを押しながら)クリックされたアイテムを
取得する方法はありませんでしょうか?
ItemSelectionChangedイベントを使ってみたのですが、
実際に選択されたアイテム以外にもイベントハンドラが起動してしまって
判断ができません。よろしくお願いします。


753 :デフォルトの名無しさん:2008/11/20(木) 13:53:23
じゃあClickイベントでいいだろ
あるかどうかしらないけど

754 :デフォルトの名無しさん:2008/11/20(木) 13:54:11
ListView.GetItemAt(int x, int y)

ってのはどう?

755 :デフォルトの名無しさん:2008/11/20(木) 14:03:47
>>753-754
そのような力業(?)になってしまうのですね。
MouseDownとGetItemAtを組み合わせて実装してみます。
ありがとうございました。

756 :デフォルトの名無しさん:2008/11/20(木) 14:06:42
>>755
一応、「マウスで」という条件がなければ SelectedIndices で行ける。
どういう状況かわからんけど。

757 :デフォルトの名無しさん:2008/11/20(木) 14:08:27
は?
クリックされたことを拾いたいんならChangedじゃなくClick使うだろ
力業ってなんだよ

758 :デフォルトの名無しさん:2008/11/20(木) 14:14:56
つまり脳が筋肉で出来ている人が使うような手法だと彼は言っているのですよ

759 :デフォルトの名無しさん:2008/11/20(木) 14:16:51
Changedイベント使おうとしてる人に言われてかわいそうw

760 :デフォルトの名無しさん:2008/11/20(木) 16:15:59
クリップボードが書き換えられたことを検知するイベントはありますか?

761 :デフォルトの名無しさん:2008/11/20(木) 16:28:02
.NETにはたぶん無いけど、クリップボードビューアのチェインとして登録すると通知もらえるAPIはある

762 :デフォルトの名無しさん:2008/11/20(木) 16:39:49
SetClipboardViewerとかWM_DRAWCLIPBOARDでググるといいですよ。

763 :デフォルトの名無しさん:2008/11/20(木) 17:24:32
>>761
>>762
ありがとうございます
なんとなく分かりましたので試して見ます

764 :デフォルトの名無しさん:2008/11/20(木) 17:53:04
[SuppressUnmanagedCodeSecurity]
って付けたらセキュリティホールを発生させる可能性があります、とか怖いこと書いてあるんですが
実際、具体的にはどんな危険があるんでしょうか?

P/Invokeメソッドやそれを使用してるコードに外部からアクセスできなくても問題ありますか?


765 :760:2008/11/20(木) 18:28:37
http://d.hatena.ne.jp/seiunsky/20070411/1176313002
このサイトがとても役に立ち、解決しました。
回答してくださった方、本当にありがとうございました。

766 :デフォルトの名無しさん:2008/11/20(木) 18:41:29
>>764
GACに登録するようなアセンブリを作らない限りは危ないことはない。
デスクトップ上で使う前提のスタンドアロンプログラムならバンバン使ってOK。
P/Invokeのパフォーマンスがよくなる。
ちなみにC++/CLIではデフォルトでその属性がONになってる。


767 :デフォルトの名無しさん:2008/11/20(木) 18:49:45
>>764
それを使うとどうなるか、まず思いつくのは
呼び出し規約を間違えるとたぶん落っこちるようになるだろうということ。

768 :デフォルトの名無しさん:2008/11/20(木) 18:54:59
xamlの質問です。
テキストをスクロールでなくて、ページ切り替えにしようと思って、
<TextBox Background="Transparent"
Margin="0,152,0,0"
Name="TextBox"
TextWrapping="WrapWithOverflow"
AcceptsReturn="True"
AcceptsTab="True"
VerticalScrollBarVisibility="Visible"
FontSize="14"
Panel.ZIndex="5">
</TextBox>

<FlowDocumentReader>
<TextBox Background="Transparent"

</TextBox>
</FlowDocumentReader>

としたところ、
エラー 2 プロパティ 'Document' は、型 'TextBox' の値をサポートしません。
とエラーになっています。値をひとつずつ消してみてもだめでした。
FlowDockmentReaderに背景を透明にして、テキストファイルを読み込むには、どのようにしたらいいんでしょう?


769 :デフォルトの名無しさん:2008/11/20(木) 19:15:21
マウスの左ボタンでスクロールバーとかアイコンとかのオブジェクトをもって移動するときのイベントは、なんというイベントなんですか?
MouseDown?
MouseLeftButtonDown?
MouseMove?
MouseLeftButtonDownして、MouseMoveしているときのイベントに動作を割り当てるには、どう書きゃいいんですか?


770 :デフォルトの名無しさん:2008/11/20(木) 19:18:33
>>768
FlowDocumentReaderの解説読めば、TextBoxが子要素にならないのは分かると思うが

771 :デフォルトの名無しさん:2008/11/20(木) 19:28:38
>>748
後学のために教えてください。
Event Tool Barってどこのこと?

772 :764:2008/11/20(木) 20:15:09
ども。

>>767
CallingConventionのことですか?
ふつうにuser32とかのWin32API呼んでる限り大丈夫ですよね。とくに指定してないんですが

>>766
GACに入れるような奴だと問題あるというのは
どういうストーリーが想定されるんでしょうか

773 :デフォルトの名無しさん:2008/11/20(木) 21:10:57
>>772
No Touch DeploymentやWPF-XBAPのような、本来プラットフォーム呼び出しができない
制限ゾーンで動くアプリケーションから不用意にP/Invokeを使ったメソッドが呼び出されてしまう。
もちろんパラメータを十分吟味して危険でないことが保障できれば使ってもよい。

一般的にはひとつの処理で大量にP/Invokeを使う場合に、
権限チェックを少ない回数で済ませる為に使用する。
[DllImport("Kernel32.dll"),SuppressUnmanagedCodeSecurity]
static extern int Hoge();
[SecurityPermissionAttribute(SecurityAction.Demand, UnmanagedCode = true)]
void OneTask() {
  for (i=0; i<1000; i++) { ...; Hoge(); } // 1000回呼ぶ
}
// OneTask()で1回だけ権限チェックし、1000回分の権限チェックを省略している。

774 :764:2008/11/20(木) 21:24:27
>>773
なるほど。その使い方で分かりました。ありがとうございます。

この属性があるとなしで30〜40倍くらい差があるなんて聞いたもので。。

775 :デフォルトの名無しさん:2008/11/20(木) 21:55:33
データセットとデータテーブルの違いを教えてください。

どちらも、DBにSQLをなげて、戻ってきた結果のかたまり、
と解釈していたのですが、どうやら両者は異なるようなので・・・

776 :デフォルトの名無しさん:2008/11/20(木) 22:15:02
DataSetはDataTableのコレクション
DataTable間のリレーションとかも管理

777 :デフォルトの名無しさん:2008/11/20(木) 22:26:23
C++ってC#みたいにキャストとかToString()とか必要無いんですか?

778 :デフォルトの名無しさん:2008/11/20(木) 22:32:58
なぜC++の質問が?

779 :デフォルトの名無しさん:2008/11/20(木) 22:36:07
知ったか房が答えてくれるからでしょw

780 :デフォルトの名無しさん:2008/11/20(木) 22:37:06
すいません。C++やってる人にキャストとかって通じるのかなと思いまし…。

781 :デフォルトの名無しさん:2008/11/20(木) 22:43:37
通じまし…。

782 :デフォルトの名無しさん:2008/11/20(木) 22:44:08
キャストはC++だろうがjavaだろうが一緒
ToStringは必要ないんじゃなくて標準では無いだけ

783 :デフォルトの名無しさん:2008/11/20(木) 22:46:51
ToStringがないってことは日付をyy-MM-dd形式に編集したいときとかどうすんの?

784 :デフォルトの名無しさん:2008/11/20(木) 22:50:05
ToStringじゃない関数を使うだけのこと。
C++では、書式文字列変換はストリームとロケール周りの仕事。

785 :デフォルトの名無しさん:2008/11/20(木) 22:50:24
>>783
C++ はしらんが ToString に相当するものをつくるだけだろ?

786 :デフォルトの名無しさん:2008/11/20(木) 23:14:17
ライブラリが充実して抽象化されるとそう思うんだろうな。
「文字列っていうものと、それを加工してくれるものがある」くらいな認識なんだろう。
Cから入った人なら「ライブラリ楽すぎる」くらいに思うが。
まあアセンブリとかさらに低級なとこから入った人もCもゆとり仕様なんだろうけどさ。

787 :デフォルトの名無しさん:2008/11/20(木) 23:15:44
Cってアセンブリに含めてる本見かけるんだけどそうなの?

788 :777:2008/11/20(木) 23:50:34
お騒がせしました。きっかけは>>708から引き続きIPメッセンジャーを
C#で書いてみたくて色々調べてた所、IPメッセはプロトコルとして
全て文字列でコマンドを表現しているらしいのですが、ヘッダには
#define IPMSG_BR_ENTRY 0x00000001UL
と定義しているようなコマンドをソースを眺める限り、文字列に変換
しているように見えなかった為、>>777のような事があるのかと質問させて
頂きました。しかし、Cのソースって全然意味が分からない…orz
どっかに.netで書いたサンプルでもあればいいんですが…。。

789 :デフォルトの名無しさん:2008/11/21(金) 00:05:37
C/C++ は文字列とかそういう概念的な「型」が主役じゃなくメモリ
イメージが主役。C/C++ も型はあんだけど結局それの上にある

どういうことかっつーと文字列も整数値も結局ただの「バイト列」
であってそのように扱えるんだべよってこと。

・・・たぶんこういうこと聞きたいんだよね?

790 :777:2008/11/21(金) 00:20:22
>>789
有り難う御座います。いかんせんC#から始めたのでイメージでしか
分かりませんが、そういう事を聞きたかったような気もします…(汗
何処で文字列にしているのかは未だに分かりませんが、コマンド部分の
論理和などを使っている所も見受けられるので、安易にstringなどで
定義せずに、取りあえず必要なところでキャストしつつ試してみたいと
思います。


791 :748:2008/11/21(金) 01:11:53
>>771
747さんが書いてくれた通りです。
デザイン・ビューでプロパティー・ウィンドーをみると
雷みたいなボタンがあります。
プロパティー・ウィンドーがなかったらF4を押してください。


792 :デフォルトの名無しさん:2008/11/21(金) 01:47:45
FileStreamのWriteメソッドについて教えてください。

public override void Write(byte[] array, int offset, int count)

byte[] arrayはバッファと言うことですが指定するバイトサイズは決まりがあるんでしょうか?
多く確保した方がパフォーマンスが上がったりしますか?


793 :デフォルトの名無しさん:2008/11/21(金) 07:21:55
Cのソースも読めないのにプログラマとな

794 :デフォルトの名無しさん:2008/11/21(金) 08:40:08
趣味グラマです

795 :デフォルトの名無しさん:2008/11/21(金) 10:19:17
DllImportのCharSetのC#の既定値がAnsiってどゆこと?
いまさら9x系なんて使わないんだしUnicodeにしとけよって話じゃね?
それともパフォーマンスに関係あるのかな?

796 :デフォルトの名無しさん:2008/11/21(金) 12:13:54
添え字でランダムにアクセスする場合
配列とList<>でどっちが早いですか?

797 :デフォルトの名無しさん:2008/11/21(金) 12:14:18
配列

798 :デフォルトの名無しさん:2008/11/21(金) 12:14:50
>>797
本当ですか?うそですか?

799 :デフォルトの名無しさん:2008/11/21(金) 12:15:53
本当です
測ってみれば

800 :デフォルトの名無しさん:2008/11/21(金) 12:16:35
じゃあめんどくさいので信用します。
ありがとうございました。

801 :デフォルトの名無しさん:2008/11/21(金) 12:17:26
List<>は配列をラップしてるだけだから配列より速いということはありえない
その上,直接配列を触る方が最適化が効きやすい

802 :デフォルトの名無しさん:2008/11/21(金) 12:26:05
Visual C# 2008 Express を使ってコードを書き始めました
格子状にボタンが10×10個あるフォームを作って
ボタン入力があったら押した座標に応じた処理を行う予定ですが
フォーム側で子コントロールの Click イベントを拾う方法はありますか?

Win32 では親ウィンドウでメッセージを拾うだけでしたが
C# では Click イベントを100個追加する必要があるのでしょうか?

803 :デフォルトの名無しさん:2008/11/21(金) 12:29:32
構造体のListのforeachは配列アクセスより遅い?

http://www.atmarkit.co.jp/fdotnet/directxworld/directxworld06/directxworld06_04.html
↑のLightweightList<T>ってどういう実装?
ただのラッパーじゃないよね?

804 :デフォルトの名無しさん:2008/11/21(金) 12:38:05
public void ForEach(LightweightAction<T> action) {
 for (int i = 0; i < this.array.Length; i++) { action(ref this.array[i], i); }
}
こうじゃね
大きい構造体のコピーを避けてるんだろ
配列に直接foreachするときは最適化されるから気にしなくていいよ

805 :デフォルトの名無しさん:2008/11/21(金) 12:39:13
命令上、配列の for ループが一般的に超早いのよ。
だから List<T>.ForEach が 2.0 でだいぶ改善されたデリゲート
呼び出しの分巻き返して foreach より速いんだけど T のサイズ
が大きくなるとコピーコストが問題になってきて遅くなるから
一定サイズコピーしか発生しない ref 渡しになっていると

実装は内部配列で for 回してるだけだと思うよ

806 :デフォルトの名無しさん:2008/11/21(金) 12:45:02
public class LightweightList<T> where T : struct
{
  private T[] array;

  public void ForEach(LightweightAction<T> action)
  {
    for (int i = 0; i < array.Length; i++)
    {
      action(ref array[i], i);
    }
  }

  public void Add(T obj){ ... }
}

こんな感じ?
List<T>にあるメソッドを自前で実装しなきゃならんのか

807 :デフォルトの名無しさん:2008/11/21(金) 12:47:38
フラットとは
http://ja.wikipedia.org/wiki/%E3%83%95%E3%83%A9%E3%83%83%E3%83%88
フラット (flat) - 英語で、平らな・平坦な。
♭ - 音楽で音を半音下げること

808 :デフォルトの名無しさん:2008/11/21(金) 12:48:00
>>802
PictureBoxでやれば

809 :デフォルトの名無しさん:2008/11/21(金) 12:49:12
シャープとは
http://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%A3%E3%83%BC%E3%83%97_(%E6%9B%96%E6%98%A7%E3%81%95%E5%9B%9E%E9%81%BF)
英語で、「鋭い」「尖った」「(坂など)が険しい」「鮮明な」「鋭敏な」という状態を表す形容詞。
♯ - 音楽で音を半音上げること


810 :デフォルトの名無しさん:2008/11/21(金) 12:51:34
C#のforeachもデフォルトでカウンタ持ってればいいのになぁ
Perlとかだとあるよね

811 :デフォルトの名無しさん:2008/11/21(金) 12:53:23
>>792もおねがいします。

812 :デフォルトの名無しさん:2008/11/21(金) 12:55:51
特にない
遅いストリームなら数K
早いストリームなら数M
辺りが基本

813 :デフォルトの名無しさん:2008/11/21(金) 12:56:34
小さすぎるとパフォーマンス落ちるかも知れんが
大きくしたからって早くなるってもんでもないんじゃない

814 :デフォルトの名無しさん:2008/11/21(金) 12:59:02
struct S
{
}

class A
{

public A()
{
LightweightAction<S> list = new LightweightAction<S>();
list.Add(new S());
list.Add(new S());
list.ForEach(F);
}

private void F(ref S s, int index)
{
}

}


デリゲートの渡し方はこれでいいんでしょうか?

815 :デフォルトの名無しさん:2008/11/21(金) 13:02:02
いまだにデリケートってのがよくわからんw

816 :デフォルトの名無しさん:2008/11/21(金) 13:16:27
private delegate void LightweightAction<T>(ref T obj, int index) where T : struct;

public A()
{
LightweightList<S> list = new LightweightList<S>();
list.Add(new S());
list.Add(new S());
LightweightAction<S> action = new LightweightAction<S>(A.F);
list.ForEach(action);
}

private static void F(ref S s, int index)
{
}

817 :デフォルトの名無しさん:2008/11/21(金) 13:20:40
>>812-813

ありがとうございます。
じゃあ、受信する総バイト数ぐらいを指定しておけば問題ないですね。


818 :デフォルトの名無しさん:2008/11/21(金) 13:20:47
>>792
>>811
HDDみたいな遅延書き込みが有効なデバイスだと、
書き込みサイズを増やしすぎると返ってパフォーマンスが下がることが多い。
64KBより増やすのはやめておいた方がベター。
これはWindowsのAPI(WriteFile)の挙動のせい。

サイズが小さすぎる書き込みはFileStreamのキャッシュである程度救われてる。
このサイズがデフォルトでは4096 byte。数字はコンストラクタで指定できる。

FileStreamへのバッファサイズ以下の書き込みは、
バッファサイズまで溜めてから実行される。
バッファサイズよりも大きな書き込みは、直接API(WriteFile)に渡される。

結論としては、小さいサイズの書き込みについてはそこまで神経質になる必要が無くて
大きいサイズについては64KBより増やすのは避けるべき。


819 :デフォルトの名無しさん:2008/11/21(金) 13:20:50
これってデリゲート呼び出しのオーバーヘッドは大丈夫なの?

820 :デフォルトの名無しさん:2008/11/21(金) 13:25:45
構造体のサイズが小さいうちはデリゲートのオーバーヘッドで効果が少ない?

821 :デフォルトの名無しさん:2008/11/21(金) 13:40:12
サイズが小さな構造体なら参照渡しより値渡しが速い。
ゲームのような特殊な最適化が必要なケース以外は使うことはないな。
そこまでの高速化をはかりたいならunsafe使えよと言いたい。

822 :デフォルトの名無しさん:2008/11/21(金) 14:23:44
>>818
詳しい解説ありがとうございます。

FileStreamのキャッシュなんて言うのもあるんですね。
バッファより大きな書き込みはバッファを使わないってことは
大きいサイズのファイルだとWriteByteメソッドとWriteメソッドは
パフォーマンスにそれほど差が出ないと言うことでしょうか?

823 :デフォルトの名無しさん:2008/11/21(金) 16:33:19
ブラウザ搭載型のソフトを作っているのですが、私の開発環境ではエラーを出さないのに、ユーザの環境だと以下のエラーで止まってしまいます。

Just-In-Time (JIT) デバッグを呼び出すための詳細については、
ダイアログ ボックスではなく、このメッセージの最後を参照してください。

************** 例外テキスト **************
System.Reflection.TargetInvocationException: 呼び出しのターゲットが例外をスローしました。 ---> System.Runtime.InteropServices.COMException (0x800700AA): 要求されたリソースは使用中です。 (HRESULT からの例外: 0x800700AA)

具体的にエラーを吐いているのは、AxWebBrowserです。
どこかのページで、Load関数に書いてはいけないというのを見かけて、Load関数から開始直後に動くTimer関数に移動したら一時的に起こらなくなっていたのですが、また再発しました。

すみませんが、根本的な回避法を教えてください。


824 :823:2008/11/21(金) 16:37:37
書き忘れたので補足です。

AxWebBrowser.Navigate(url); で、ページに移動している最中に止まっているようです。

825 :デフォルトの名無しさん:2008/11/21(金) 17:05:34
>>821
unsafe使ったところで配列アクセスは早くならない
つーかunsafeで速度を稼げるケースなんかない
きちんと計測してからものを言えよ

826 :デフォルトの名無しさん:2008/11/21(金) 17:28:03
画像の解析なんかは GetPixcel 使うより unsafe のが早かったけどね

827 :デフォルトの名無しさん:2008/11/21(金) 17:38:53
画像処理は本家も紹介してて有名だよね

Unsafe な画像処理
http://www.microsoft.com/japan/msdn/columns/csharp/csharp11152001.aspx

828 :デフォルトの名無しさん:2008/11/21(金) 18:17:59
web上で実行させるプログラムの代表といったらcgiやphpが挙げられますが
C#でも同じようにweb上で実行させるプログラムを書くことは出来るでしょうか?

既にWindows上で動くC#アプリは書き終わったのですが、同じことをweb上で
実行するために一からcgiやphpで書き直すのは正直しんどいです(´・ω・`)

829 :デフォルトの名無しさん:2008/11/21(金) 18:23:07
StringのTrim()が効かねえええ
と1日悩んでたら

× Name.Trim(' ');
○ Name = Name.Trim(' ');

で解決しました。
俺みたいな馬鹿が他にも居るハズなのでメモ。

830 :デフォルトの名無しさん:2008/11/21(金) 18:40:26
1日も悩むなwww

831 :デフォルトの名無しさん:2008/11/21(金) 19:06:23
>>828
>C#でも同じようにweb上で実行させるプログラムを書くことは出来るでしょうか?
できます。でもCGIは使おうね。

832 :デフォルトの名無しさん:2008/11/21(金) 19:56:25
C#でCGIじゃ、かなり遅そうだ。

833 :デフォルトの名無しさん:2008/11/21(金) 19:57:23
独自のイベントを発行してWndProcで受け取りたいんですが、
メッセージの定数が被らないように決めるには何かルールありますか?

834 :デフォルトの名無しさん:2008/11/21(金) 20:06:16
>>833
WM_APP

835 :デフォルトの名無しさん:2008/11/21(金) 20:06:19
>>833
WM_USER

836 :デフォルトの名無しさん:2008/11/21(金) 20:08:15
>>833
http://akky.cjb.net/mfc/message.html

837 :デフォルトの名無しさん:2008/11/21(金) 20:26:30
>>826
それは例が悪いだろ

GetPixelの代わりならMarshalで十分

838 :デフォルトの名無しさん:2008/11/21(金) 20:27:27
>>802

ボタンを使う必要性が全く感じられない
>>808の言うようにPictureBoxでいいと思う
見た目をボタンっぽくしたかったらButtonRenderer使えばいい

839 :デフォルトの名無しさん:2008/11/21(金) 20:31:39
>>834-836
ありがとうございます
WM_APP(0x8000)以降の番号を使えばいいんですね
WM_USERは危険そうなのでやめときます

840 :デフォルトの名無しさん:2008/11/21(金) 21:31:18
>>831-832
そうですか、フルスクラッチしてでもCGIで一から書き直すべきですか(´・ω・`)

841 :デフォルトの名無しさん:2008/11/21(金) 21:56:46
ASP.NETは使えない?

842 :デフォルトの名無しさん:2008/11/21(金) 21:57:42
Silverlightじゃないの

843 :デフォルトの名無しさん:2008/11/21(金) 22:02:54
Silverlightはクライアント側

844 :デフォルトの名無しさん:2008/11/21(金) 22:24:21
>>840
そういう予定なら、設計時から共通部分、Winアプリ部分、
Webアプリ部分を分けられるようにしておけ。

845 :デフォルトの名無しさん:2008/11/21(金) 22:31:30
ttp://nicoae.if.land.to/index.php?plugin=attach&pcmd=open&file=sample3.zip&refer=%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3

NiVE WikiのFrontPage→プラグイン

サンプルのプラグインをSharpDevelopでビルドしたいんですが、

型または名前空間名 'nicoAE' が見つかりませんでした。
using ディレクティブまたはアセンブリ参照が不足しています。
(CS0246) - B:\Tools\SamplePlugin\Brightness.cs:4,7

のようなエラーがたくさん表示され、ビルドできません。どうすればいいですか?

846 :デフォルトの名無しさん:2008/11/21(金) 22:38:37
>>845
本体に付いてるnivcoAE.History.dllとnicoAE.Plugin.dllを参照設定に追加する
SharpDevelopなんて存在価値無いからVisualC#2008Express使うといいよ

847 :デフォルトの名無しさん:2008/11/21(金) 22:59:26
そういやそんなのあったなぁ
SharpDevelopってC#3.0対応してんの?

848 :845:2008/11/21(金) 23:21:44
>>846
上手くいきました。ありがとうございます。
>>847
Wikipediaを見たら、現在2.0までしか対応していなくて、3.0は未対応である
事が分かりました・・。

849 :デフォルトの名無しさん:2008/11/21(金) 23:51:16
出たばかりの頃に、NiVE用プラグインを作りかけて放置してるのを思い出した。
今見ると色々酷いwww

SharpDevelopで作れるけど、C#2008Express落として.NET2.0ターゲットにして作るのもいいよ

850 :デフォルトの名無しさん:2008/11/22(土) 09:39:50
インデクサの利点ってなんですか?

851 :デフォルトの名無しさん:2008/11/22(土) 09:46:51
たとえば文字列型で
str.Chars(0);
じゃなく
str[0];
みたいにアクセスできる、便利じゃん。

852 :デフォルトの名無しさん:2008/11/22(土) 09:53:34
配列と同じ構文が作れる。
組み込み型である配列と、ユーザー定義のクラスの差が縮まる。

853 :デフォルトの名無しさん:2008/11/22(土) 10:12:02
インデクサが無かったら,たとえばDictionary使うとき
object item = dictionary.Get("キー");
こんなjavaみたいな格好悪いコードになる

854 :デフォルトの名無しさん:2008/11/22(土) 12:04:45
スレッドAで発生したイベントを、メインスレッドを受け取る方法はないでしょうか?
素朴にイベントを投げたらスレッドAで処理されてしまうようで困っています。
よろしくお願い致します。

855 :デフォルトの名無しさん:2008/11/22(土) 12:26:20
メインスレッドがWindowsFomならControl.Invoke、WPFならDispatcherだっけか。
それ以外なら独自にメッセージポンプに近い仕掛けが必要。

856 :デフォルトの名無しさん:2008/11/22(土) 12:44:57
>>854
やったことないんで適当なこと言うけど、
待機ハンドルを使えばとりあえず可能だろうね。
それが最適な方法かどうかは知らんけど

857 :デフォルトの名無しさん:2008/11/22(土) 12:59:43
>>855
>>856
ありがおつございます
Invokeでできました!

858 :デフォルトの名無しさん:2008/11/22(土) 13:41:49
label1.Text = "abc"; で、a と b と c それぞれ色を変えることはできますか?

label を 3 つ用意して

label1.ForeColor = Color.FromArgb(0, 255, 255);
label2.ForeColor = Color.FromArgb(255, 0, 255);
label3.ForeColor = Color.FromArgb(255, 255, 0);

とすればできますが、label1 だけでできるとスマートだなーと。


859 :デフォルトの名無しさん:2008/11/22(土) 13:48:38
自分で描画すれば良いけどそれがスマートだとは思わない

860 :デフォルトの名無しさん:2008/11/22(土) 13:50:12
>>859
やはり簡単な方法はない感じですか?

861 :デフォルトの名無しさん:2008/11/22(土) 13:50:38
>>829

俺もこれははまったことがある。なんか違和感あるよね。
stringはイミュータブルだからこういう実装になってんのかな?

862 :デフォルトの名無しさん:2008/11/22(土) 13:52:36
ElementHostでWPFのTextBlock使うとか

863 :デフォルトの名無しさん:2008/11/22(土) 13:55:14
>>861
ちゃんと理屈が分かってるのに違和感感じることに違和感感じるわ。
stringの性質を考えたらその実装いがいありえないじゃん。

864 :デフォルトの名無しさん:2008/11/22(土) 13:55:48
イミュータブルなのにインプレースで文字列が書き換わったら
そっちのほうが怖いぞ。

865 :デフォルトの名無しさん:2008/11/22(土) 13:57:54
拡張メソッドのthis引数にrefが使えたらできるね

866 :デフォルトの名無しさん:2008/11/22(土) 14:01:44
VBだと可能だな>拡張メソッドの第一引数にByRef

867 :デフォルトの名無しさん:2008/11/22(土) 15:35:49
vs2005,WinXPProです。
↓みたいなことをやりたいのですができるでしょうか?

... testFunction(Hikisuu hikisuu)
{
   //hikisuuにnullはダメよん!
}

....
  //testFunction呼び出し
  testFunction(null);

ってやると、コンパイル時にエラーを吐いてくれるような、そんな事ってできるでしょうか?

868 :デフォルトの名無しさん:2008/11/22(土) 15:40:43
refかoutにするとか。

しかし、必要性を感じないな。
引数にnullを指定しても良いと明確に分かっている時以外に普通は即値のnullなんか指定しないから。

869 :デフォルトの名無しさん:2008/11/22(土) 15:48:34
利用可能なグローバル名前空間の列挙やグローバル名前空間を渡すとその下位の名前空間を返すようなメソッドを教えてください

870 :デフォルトの名無しさん:2008/11/22(土) 15:50:27
void testFunction<T>(T hikisuu) where T : Hikisuu
こりゃないな・・・即値のnullだけはじいてどうなるんだろ。
普通ははDebug.Assertでチェック入れといて、Releaseではずすかね。


871 :デフォルトの名無しさん:2008/11/22(土) 15:53:32
>>869
名前空間はまとめては管理してないから、
reflectionで全Typeを列挙してかったっぱしから調べてゆくしかない。

872 :デフォルトの名無しさん:2008/11/22(土) 15:53:44
>>867
コンパイル時にエラー出すのは無意味だよ
PostSharpとか使えば,コンパイル時(正確にはコンパイル後)に
if (hikisuu == null) throw new ArgumentNullException("hikisuu");
を生成したりできる
AOPってやつだね
>>869
名前空間は文字通り名前なんだよ
たとえばSystem.Collections.ArrayListはSystem名前空間の中にCollectionsが
入ってるわけではなく,Collectionsの中にArrayListが入ってるわけでもない
System.Collections.ArrayListという名前の型があるだけなの
だから,やるとすればアセンブリ内にあるすべての型のTypeオブジェクトを取得して調べるしかない

873 :デフォルトの名無しさん:2008/11/22(土) 15:55:48
>>867
DbC (Design by Contract)としてそういうことができたら良いねって話は昔からあるけど
今のC#ではできない。

FXCopを使ったIL解析である程度は検出できる。

874 :デフォルトの名無しさん:2008/11/22(土) 16:00:07
事前条件を満たしているかチェックするのって
コンパイル時に出来るものなの?
ちょっとFXCop使ってみようかな。

875 :デフォルトの名無しさん:2008/11/22(土) 16:01:44
コンパイル時にできることなんか知れてる
ほとんどの引数の値は実行時までわかるわけないだろ

876 :デフォルトの名無しさん:2008/11/22(土) 16:07:06
>>871,872
そうなんですか・・・てっきりVSのインテリセンスの実装とかで楽なようにそういうのが用意されてるんだと思ってましたorz

877 :デフォルトの名無しさん:2008/11/22(土) 16:44:20
C#のstringっていみゅーたぶるだったの?
string t = "a";
t += "b";
とかできるけど

878 :デフォルトの名無しさん:2008/11/22(土) 16:46:13
string s = "a";
string t = s;
t += "b";
Console.WriteLine(object.ReferenceEquals(s, t));

879 :デフォルトの名無しさん:2008/11/22(土) 16:48:08
あれってことは、追記するたびにオブジェクト作り直されてるのか
ってことは、
string s = "";
foreach(t in list){
  s += t.Text;
}
みたいな処理はやめたほうがいいのかいね

880 :デフォルトの名無しさん:2008/11/22(土) 16:50:36
IEnumerable<string>ならToArrayしてString.Concatが速いよ
一般にはStringBuider使う

881 :デフォルトの名無しさん:2008/11/22(土) 16:52:23
StringBuilderとか使ったら、無駄にオブジェクト作って
重くなると思ってたわー(´;ω;`)
今までのコード全部書き直しだお(´;ω;`)(´;ω;`)(´;ω;`)

882 :デフォルトの名無しさん:2008/11/22(土) 17:02:46
string型ってたとえば

string s = "hoge"

と初期化したら"hoge"自体がインスタンスになるだろ?だから

s += "hoge"

だと"hogehoge"というインスタンスが新たに作成されるよな?
StringBuilderだと"hoge"という参照自体が"hogehoge"に変更されるので
メモリとか節約できて実行速度が速くなるはず

883 :デフォルトの名無しさん:2008/11/22(土) 17:12:35
参照とインスタンスは別物です先生

884 :デフォルトの名無しさん:2008/11/22(土) 17:21:19
string tmpstr = "テスト";
MemoryStream ms = new MemoryStream();
Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS");
byte[] bytes = sjisEnc.GetBytes(tmpstr);
ms.Write(bytes, 0, bytes.Length);

こういう感じでMemoryStreamに書き込んだ後に追加したい場合

byte[] nullbyte = { 0 };
int count = 0;
while (count < nullbyte.Length)
{
ms.WriteByte(nullbyte[count++]);
}

MSDNでは上記のように書いてありましたが、こうやって追加する
以外にないのでしょうか。

885 :デフォルトの名無しさん:2008/11/22(土) 17:26:55
Stream.Write使えば

886 :デフォルトの名無しさん:2008/11/22(土) 17:27:42
>>883
いや、だから"hoge"というStringクラスのインスタンスの参照が
String型の変数に格納されると理解してるんだが違うのか?

887 :デフォルトの名無しさん:2008/11/22(土) 17:35:13
日本語でおk
たぶん間違ってる

888 :デフォルトの名無しさん:2008/11/22(土) 17:36:23
>StringBuilderだと"hoge"という参照自体が"hogehoge"に変更される
おかしいのはこっちでしょ
「参照自体」を「インスタンス」と読み替えたとしても,解ってる人でないと意味不明だと思う
StringBuilderは内部で大きめのStringを確保して直接書き込んでる

889 :デフォルトの名無しさん:2008/11/22(土) 17:44:30
>>888
StringBuilderが持ってるStringってStringクラスのインスタンスじゃないのかの?

890 :884:2008/11/22(土) 17:48:08
>>885
有り難う御座います。offsetの意味を勘違いしていたようです。
普通に以下で追記出来ました。
ms.Write(nullbyte, 0, nullbyte.Length);
そうするとWriteByteの使い道ってなんでしょう?

891 :デフォルトの名無しさん:2008/11/22(土) 17:52:01
>>889
Stringはイミュータブルなんだからそれはない
charの配列で持っているんだろう

892 :デフォルトの名無しさん:2008/11/22(土) 17:56:02
C#ってCみたいにchar[]で文字列扱えないの?
たまにそれが不便に感じるときがある

893 :デフォルトの名無しさん:2008/11/22(土) 18:02:41
>>891
Stringも出所はcharの配列でないの?
StringBuilderも扱ってるのはStringみたいだけどMSDN見ると
持っているインスタンスは同じだけど連結の方法が違うよみたいな?

http://msdn.microsoft.com/ja-jp/library/system.text.stringbuilder(VS.80).aspx



894 :デフォルトの名無しさん:2008/11/22(土) 18:02:57
そういう使い方をしたければ、StringBuilderでもchar[]でもList<char>でも好きに使えばいい。
必要に応じてstringに変換すればいいだけ。

895 :デフォルトの名無しさん:2008/11/22(土) 18:03:08
>>891
違うよ本当にStringだよ
internalメンバ使ったり,ポインタでchar*として扱ったりすれば変更できる

896 :デフォルトの名無しさん:2008/11/22(土) 18:07:06
そういえばたしかプログラミングMicrosoft .NET Frameworkには、
StringBuilder.ToStringは文字列のコピーをしないから
高速だ、みたいなことが書かれていたな。

897 :デフォルトの名無しさん:2008/11/22(土) 18:11:01
バッファのStringをそのまま返す実装になってるみたいだね
その後にAppendされるとバッファを確保し直すみたい

898 :891:2008/11/22(土) 18:24:37
>>895
sscli見た限りではその通りだった。失礼
自分みたいに中途半端に実装を推測しちゃいけないね

899 :デフォルトの名無しさん:2008/11/22(土) 18:48:08
>>895
将来の.NETでも同じとは限らないけどね。

BCLのライブラリ設計ではことごとくstringをimmutableとして扱ってるから
外部からはimmutableとして扱っておけばそれでいいと思う。


900 :デフォルトの名無しさん:2008/11/22(土) 19:09:59
イミュータボーってなんかメリットあるん?
変更できないっつーとゴミオブジェクトがボコボコ生産されるってことだよね?

901 :デフォルトの名無しさん:2008/11/22(土) 19:11:18
ということは>>882は日本語がMSDNの翻訳並ってだけで
説明はあってるよな?

902 :デフォルトの名無しさん:2008/11/22(土) 19:11:42
>>895 は、マーク・パンサー

903 :デフォルトの名無しさん:2008/11/22(土) 19:18:51
>>900
使い回しが利く
他所様に勝手に書き換えられる心配がない

他にもあるかも

904 :デフォルトの名無しさん:2008/11/22(土) 19:19:56
>"hoge"という参照自体
ここの意味が分からん
たぶん間違ってる

905 :デフォルトの名無しさん:2008/11/22(土) 19:27:58
"hoge" と "piyo"でもう一回書いてみてくれ
今度は理解する努力するから

906 :デフォルトの名無しさん:2008/11/22(土) 19:32:00
>>900
こういう話がある。
http://www.atdot.net/~ko1/w3ml/w3ml.cgi/yarv-dev/msg/541

907 :デフォルトの名無しさん:2008/11/22(土) 19:40:38
参照”先”が抜けてるのが原因だな
あとは通じる

908 :デフォルトの名無しさん:2008/11/22(土) 19:44:32
>>906
>可変長変更を重視するなら「木構造、immutable」、
>添字によるアクセスを重視するなら「固定長配列、immutable」が有利です。
後者の意味がよく分からんのだけど・・・
なんでimuutableが関係してくるのか

あと、部分文字列の取り出しがfix/mだと×なのかわからん

909 :デフォルトの名無しさん:2008/11/22(土) 19:48:10
中身変更できるのに長さは固定なのは不自然だろ

910 :デフォルトの名無しさん:2008/11/22(土) 19:52:30
>>900

>>903も書いてるけど、他所様に勝手に
書き換えられる心配がないのはかなりありがたい。

もしstrがimmutableじゃなかったら、

void DoSomething(string str)
{
 str = str ?? string.Empty;

 if( str.Length > 12 ) {
  // エラー処理
  return;
 }

 // 何らかの処理
Hogehoge();
PiyoPiyo();

// Hogehoge()やPiyoPiyo()の中の処理によって
 // strの長さが12より大きくなってる可能性がある
}

C++でconst char*やconst std::string&を使って
文字列の受け渡しをするとこういうことが起こりうる。

911 :デフォルトの名無しさん:2008/11/22(土) 19:58:15
なるほどな

でもconst char*で変更されることなんてあったっけ

912 :デフォルトの名無しさん:2008/11/22(土) 19:59:05
せめて文字数が変わらない変更ぐらいはmutableでやってくれればいいのにね
実装ではそうなってるかも知れないけど

913 :デフォルトの名無しさん:2008/11/22(土) 20:00:55
>>908
添字自体はmutableでもいいが、
直前にmutableのメリットはあまりないと書いているのを踏まえるているだけだろう。
fix/mで部分文字列取り出しが×なのは、>>829を見れば分かる。

914 :デフォルトの名無しさん:2008/11/22(土) 20:02:52
>>913
>>829だとfix/iが×なんじゃないの?

915 :デフォルトの名無しさん:2008/11/22(土) 20:05:40
>>911
char *p; //グローバル変数これでDoSomething(p);とする。
HogeHogeやPiyoPiyoがpを書き換えたら……、というわけ。

916 :デフォルトの名無しさん:2008/11/22(土) 20:06:14
>>911

#include <cstdio>
char g_buf[256] = "piyo";

void HogeHoge() {
  g_buf[0] = 'H';
}
void DoSomething(const char* buf){
  puts(buf);
  HogeHoge();
  puts("const char*はimmutable stringではない");
  puts(buf);
}
int main() {
  DoSomething(g_buf);
}

917 :デフォルトの名無しさん:2008/11/22(土) 20:06:18
これが理由かどうかは知らないけど、
immutableであれば==で値の比較が出来ることと、他の参照型との整合性が
両立するんだってことがartonって人の本には書いてあった。

つまりimmutableであれば、値が等しいことと同一であることを
区別する必要がないからね。

918 :デフォルトの名無しさん:2008/11/22(土) 20:08:20
あーconst char*で呼び出した関数からじゃなくて、
大本のポインタから変更される可能性があるってことか

919 :デフォルトの名無しさん:2008/11/22(土) 20:10:10
imuutableでも
string s = "hoge";
string t = "hoge";
でs==tがtrueになるかfalseになるかは言語によるんじゃないの?

920 :デフォルトの名無しさん:2008/11/22(土) 20:12:29
>>919
そうなんだけど、だから少なくともC#の設計者はs==tがtrueになるようにしたかったんでしょ。
俺もその判断は正しいと思うけど。

921 :デフォルトの名無しさん:2008/11/22(土) 20:13:24
unsafe static void SetChar(this string str, int index, char value) {
fixed (char* pStr = str) { pStr[index] = value; }
}
もうこれで

922 :デフォルトの名無しさん:2008/11/22(土) 20:13:58
でも厳密に言えばfalseだよな

923 :デフォルトの名無しさん:2008/11/22(土) 20:14:32
>>920
あーそういう意味か
immutableだと単純にtrueに出来ないってことか

924 :デフォルトの名無しさん:2008/11/22(土) 20:15:33
>>914
すまん、勘違いした。
StringBuilderやList<>のRemoveで先頭からn文字目取り出すとき、
n文字目以降を先頭に移動する操作が必要だろ。
それでO(n)だ。


925 :デフォルトの名無しさん:2008/11/22(土) 20:15:56
C#のstringの==って文字数がNのときO(1)だっけ?

926 :デフォルトの名無しさん:2008/11/22(土) 20:17:40
>>924
ああそういう意味なのか
>>906は説明をかなり端折ってるからなー

927 :デフォルトの名無しさん:2008/11/22(土) 20:35:49
Cの場合、文字列リテラルはコンパイル時点で静的に配置される。つまり、
str1 = "hoge"; str2 = "hoge";
と書いた場合、strcmpするまでもなく、str1 == str2(ポインタの比較)だ。
誰からも参照されなくなっても、"hoge"という文字列リテラル(なオブジェクト)は
静的に存在し続ける。

このC(C++も同様)におけるふるまいと違和感を持たせないためにも、C#では
今のような実装になってるんじゃないかな。

928 :デフォルトの名無しさん:2008/11/22(土) 20:40:09
>>925
C# のがどうかは知らないけど、一般的なアルゴリズムの場合、
検索対象 N 文字、検索したい文字 M 文字なら O(N/M) だった気が。

929 :デフォルトの名無しさん:2008/11/22(土) 20:42:06
>>928
>>917の理屈でいけばほとんどの場合O(1)に出来ると思ったんだけど

930 :デフォルトの名無しさん:2008/11/22(土) 20:47:02
>>929
・左辺と右辺が同じオブジェクトだった場合にtrueを返すのは高速
・左辺と右辺が異なるオブジェクトで、文字列の長さも異なっていた場合にfalseを返すのは高速
どちらでも無い場合は今まで通り。

931 :デフォルトの名無しさん:2008/11/22(土) 21:14:03
c# で Outlook のアイテムを色々いじっています。
Outlook から仕事や予定表のアイテムをファイルに保存することができましたが、
その出力したファイルを Outlook に読み込む方法が分かりません。
そういうことって出来るんでしょうか。
リファレンスを見てもファイルを開いて読み込むメソッドなどは見当たりませんでした。

932 :デフォルトの名無しさん:2008/11/23(日) 01:54:28
CustomHashSet<int> set = new CustomHashSet<int>();
set.Add(1);

public class CustomHashSet<T> : HashSet<T>
{
HashSet<T> _HashSet = new HashSet<T>();

public void Add(ref T obj)
{
this._HashSet.Add(obj);
}

public void UnionWith(ref IEnumerable<T> other)
{
this._HashSet.UnionWith(other);
}
}

これのAddメソッドの所、refを付けないと実際にAddされない。
まず、なぜ引数でrefを付けてるのに、呼び出す時に付けなくていいの?
C#3.0の仕様??
で、refをはずしたら、public new void Add(T obj)にせねばならず、実際にAddされない。
この辺のカラクリを誰か教えて!


933 :デフォルトの名無しさん:2008/11/23(日) 02:00:29
からくりっつーか……
単に基底の方のAddが呼び出されるだけだろ

934 :デフォルトの名無しさん:2008/11/23(日) 02:06:21
>>933 やっぱりそうでしたか(^^; ありがとうございます

935 :デフォルトの名無しさん:2008/11/23(日) 02:12:12
今から習得するならC#とD言語どちらがおすすめ(´・ω・`)?

936 :デフォルトの名無しさん:2008/11/23(日) 02:14:24
>>935

COBOLって言語がナウい

937 :デフォルトの名無しさん:2008/11/23(日) 02:32:41
超マイナーなD言語やるよりはC#やったほうがいいよ
ドキュメント的な意味で

938 :デフォルトの名無しさん:2008/11/23(日) 02:52:33
C言語の後継をもくろんでD言語という名前を名乗ったはずなのになんでマイナーのままなんだろう?

939 :デフォルトの名無しさん:2008/11/23(日) 03:07:31
// あれをこれの真ん中に表示する
// that.Left = this.Left + (this.Width - that.Width) / 2;
// that.Top = this.Top + (this.Height - that.Height) / 2;

// ロケーションを使う場合の書き方を教えてください
that.Location = this.Location + (Point)(((this.Width - that.Width) / 2), ((this.Height - that.Height) / 2));

これは駄目でした

940 :デフォルトの名無しさん:2008/11/23(日) 03:11:41
>>938
アンサイクロペディアの記述読めばなんとなく分かるんじゃないかw

941 :デフォルトの名無しさん:2008/11/23(日) 05:41:47
>>939
that.Location = this.Location + new Size((this.Width - that.Width) / 2, (this.Height - that.Height) / 2); 


942 :デフォルトの名無しさん:2008/11/23(日) 10:03:39
メソッドの引数に↓こんなのがあるんですが、
この?はなんですか?

out float? result


943 :デフォルトの名無しさん:2008/11/23(日) 10:18:13
Nullable<float> の略記

944 :デフォルトの名無しさん:2008/11/23(日) 10:26:36
>>943
ありがとう

945 :デフォルトの名無しさん:2008/11/23(日) 12:21:53
グレープシティのSpreadって開発マシーンのみインストールしていればいいんでしょうか?
クライアントにもインストールいるならつかえねーな。と。。。

946 :デフォルトの名無しさん:2008/11/23(日) 12:35:56
グレープシティにきくかマニュアルよめ。

947 :デフォルトの名無しさん:2008/11/23(日) 12:47:57
>>945
それくらい自分で調べられないような開発者は使えねーな、と。
つか、WinForm用、WebaForm用、どっちの話なんだよ?

948 :デフォルトの名無しさん:2008/11/23(日) 12:51:53
StringReaderを使ってReadLineした場合に改行が含まれてしまうケースなんてあります?

949 :デフォルトの名無しさん:2008/11/23(日) 12:59:41
ないです

950 :デフォルトの名無しさん:2008/11/23(日) 13:06:19
>>949
ありがと

改行が入ってしまうのですが原因が別にあるらしいので見直してきます

951 :デフォルトの名無しさん:2008/11/23(日) 14:17:10
DateTime型で保存してある期限日と、現在の日付をDateTime.NOWで取ったものを比較して
期限日から3日以内なら〜とか、1日以内なら〜と条件分岐させたいのですが、どのような条件文にすればいいのでしょうか?



952 :デフォルトの名無しさん:2008/11/23(日) 14:41:32
>>951
DateTimeどうしを減算したらTimeSpanが返ってくるだろ?
TimeSpanのメソッドにHoursとかDaysとかあるじゃん。

953 :デフォルトの名無しさん:2008/11/23(日) 14:58:48
>>952
TimeSpanが返ってくること自体を知りませんでした・・・
これで何とか実装できそうです、ありがとうございました。

954 :デフォルトの名無しさん:2008/11/23(日) 15:07:52
再頒布ライブラリがクライアントにいる。
そして、Spreadを開発に使用したこととを銘記する必要がある。

はっきりいって、10万以上だして買う意味わかんね、使わんほうがいいぞ。

955 :デフォルトの名無しさん:2008/11/23(日) 19:51:45
>>950
頭かケツに改行コードつくのなら、String#Trimで取り除けばいいんじゃね?


956 :デフォルトの名無しさん:2008/11/23(日) 23:02:29
>>945
ゴミだからさっさと別を選べ。
もうVB屋さんの知るグレープシティじゃないんだよ。

957 :デフォルトの名無しさん:2008/11/24(月) 00:18:50
C#っておもしろいね。でも、業務で使う文にはJavaやVB.netとそうかわらないね。

C#って文字通りシャープな感じがあるよね。構文とかに。Javaはもっさりした感じでのほほん。
VBはこざかしい。

958 :デフォルトの名無しさん:2008/11/24(月) 00:22:49
VBはアットホーム
C#は殺伐とした職場

959 :デフォルトの名無しさん:2008/11/24(月) 00:58:27
VBのコードの方が俺みたいな血のめぐりの悪い人間には読みやすいな。
タイプ量は若干多いけど。

ところでC#(VS2005)のエディタってVBみたいにabstractとかインターフェイスのメンバの
スケルトンの自動挿入機能ってないの?

960 :デフォルトの名無しさん:2008/11/24(月) 01:00:16
あるよ

961 :デフォルトの名無しさん:2008/11/24(月) 01:10:19
あー右クリのコンテキストメニューでできるんだw
今までリアルで気づかなかった
VBだと問答無用で挿入されるからなあ。


962 :デフォルトの名無しさん:2008/11/24(月) 05:46:30
VB は油断してるといつの間にかセミコロン書いてて怒られる。
あと、無性に If 文の条件式部分を括弧で括りたくなる。
\n と書いても改行されなくてすこし悩む。

963 :デフォルトの名無しさん:2008/11/24(月) 08:41:14
DESCryptoServiceProviderで暗号化したものを間違った鍵で復号しようとすると
正しい鍵で復号しようとした時よりも時間がかかるのはどうして?

964 :デフォルトの名無しさん:2008/11/24(月) 08:57:17
あたりまえだろw

965 :デフォルトの名無しさん:2008/11/24(月) 09:06:15
C#にLike演算子が無いことに今気づいたw
ワイルドカード使うのにRegex必要なのか

966 :デフォルトの名無しさん:2008/11/24(月) 09:34:52
むしろそんなもんわざわざ演算子にして欲しくない

967 :デフォルトの名無しさん:2008/11/24(月) 09:37:39
使いたいならMicrosoft.VisualBasic.CompilerServices.LikeOperator.LikeString
メソッド呼び出しなのですっきりですね

968 :デフォルトの名無しさん:2008/11/24(月) 09:56:47
なんでVBだけそういうシンタックスシュガー的なクラスが入ってるの?

969 :デフォルトの名無しさん:2008/11/24(月) 09:59:25
そりゃ過去との互換性のためだろ

970 :デフォルトの名無しさん:2008/11/24(月) 10:02:24
Like演算子はいいぞおー

971 :デフォルトの名無しさん:2008/11/24(月) 10:06:48
シンタックスシュガーと言ってしまうと元も子もないな

972 :デフォルトの名無しさん:2008/11/24(月) 10:10:20
>>968
IEnumerableを実装してればforeachが使えるとか
IDisposableを実装してればusingが使えるとかも
同じ類じゃなかろうか。
(気持ち悪いからこの際自分で自由に構文追加できるようにしてくれよ
と思うこともある)

973 :デフォルトの名無しさん:2008/11/24(月) 10:11:57
VBにそういう変なのが入ってるせいで
VBのソースをC#に変えるのがめんどうになってるな

974 :デフォルトの名無しさん:2008/11/24(月) 10:49:10
質問。C#3.0の自動プロパティ(int a{get;set;}ってな奴。)のsetって値をコピーしてるの?
それとも変数のアドレスを代入してるの?

975 :デフォルトの名無しさん:2008/11/24(月) 10:57:59
C#の方針は、C/C++文化を受け継いでて、
ライブラリでできることは極力ライブラリでやるからなぁ。

文法の追加(3.0のLINQとか4.0のdynamic)すら、
単純な構文糖衣で、実態はライブラリ呼び出しだし。

976 :デフォルトの名無しさん:2008/11/24(月) 10:59:31
>>974
意味わからんけど、自動プロパティは、

int X{set; get;}
と書くと、
int _x = 0;
int X { set { _x = value; } get { return _x; } }
という匿名のメンバー変数が自動生成されるだけ。

977 :デフォルトの名無しさん:2008/11/24(月) 11:04:41
>>976
その
int _xがポインタかどうか知りたい。

978 :デフォルトの名無しさん:2008/11/24(月) 11:06:24
ポインタなんて/unsafeつけなきゃコンパイルもできません

979 :デフォルトの名無しさん:2008/11/24(月) 11:10:50
>>978
=値コピーしてるでFA?

980 :デフォルトの名無しさん:2008/11/24(月) 11:12:42
>>979
976のコードと等価、という事実以上でも以下でもないと思うんだけど。
頭悪いの?

981 :デフォルトの名無しさん:2008/11/24(月) 11:14:59
>>980
うん。悪い。
thx

982 :デフォルトの名無しさん:2008/11/24(月) 11:18:41
なんでこんな態度悪い質問者おおいん?

983 :デフォルトの名無しさん:2008/11/24(月) 11:22:02
値方と参照型の区別もまだつけれてないと考えられる

984 :デフォルトの名無しさん:2008/11/24(月) 12:22:25
ソート済みのString[]変数があったとして、そこから文字列を検索する場合に打って付けなメソッドを教えてください

985 :デフォルトの名無しさん:2008/11/24(月) 12:27:11
二分探索メソッドを自作

986 :デフォルトの名無しさん:2008/11/24(月) 12:28:37
Array.BinarySearch

987 :デフォルトの名無しさん:2008/11/24(月) 12:52:28
>>985,986
ありがとうございます
キーに適合する複数の値を返して欲しい場合は自分で作るしかないっぽいですね

988 :デフォルトの名無しさん:2008/11/24(月) 12:53:10
>>984
検索のためだけに存在する配列なら、Dictionaryで保持するという方法もある。(値はnullをセットする)

UIに表示するなど、順序も保持したいのなら、SortedDictionary。

検索は、変数.ContainsKey(検索文字列)でチェック出来る。

配列のインデックスを検索したい場合は、Dictionaryの値に、インデックスをセットしておけば、変数.TryGetValueで、存在チェクも兼ねて、取得してくれる。



989 :デフォルトの名無しさん:2008/11/24(月) 12:58:31
>>987
うう...部分一致検索か...

DataTableに突っ込んで、DataTable#Selectで取得してくるのが楽かも。
Selectメソッドフィルタ基準にLIKEがあるので。


990 :デフォルトの名無しさん:2008/11/24(月) 13:30:34
LINQもあるな。
DataTableのほうが速いらしいけど。

991 :デフォルトの名無しさん:2008/11/24(月) 14:15:32
>>988,989
説明不測ですみません、やしたいのはまさにその部分一致検索でした
DataTableでやってみたらforeachで回してた時より大分速くなったのでこれを使っていくことにします
使い方はこんな感じであってますよね・・・?
DataTable t = new DataTable ();
t.Columns.Add("Name",typeof (string));
foreach (string name in NameList) {
DataRow r = t.NewRow ();
r["Name"] = name;
t.Rows.Add (r);
}
t.Select("Name LIKE 'hoge'")


992 :デフォルトの名無しさん:2008/11/24(月) 15:40:54
C#でWEBプログラム書こうと思ったら、
C#.NETになるの?

それとも、C#+ASP.NETになるの?

993 :デフォルトの名無しさん:2008/11/24(月) 15:52:10
「ASP.NET を C# で書く」じゃないかと。

994 :デフォルトの名無しさん:2008/11/24(月) 15:55:15
C#で単発のCGIプログラムを書くことも可能だぞ。

995 :デフォルトの名無しさん:2008/11/24(月) 17:59:01
C#と.NETの切り離しがよくわからない
この二つは常に一緒になってる気がする
わからせないように作ってあるのかもしれんが

996 :デフォルトの名無しさん:2008/11/24(月) 18:01:46
Monoのこと、時々でいいから思い出してください

997 :デフォルトの名無しさん:2008/11/24(月) 18:31:36
>>991
元々どういう実装してたのか分からんが、DataTable.Selectは遅いよ
とりあえず実験してみたから、考察は自分でやってくれ

[実験]
852個の英単語(ソート済み)から、先頭一致で"co"を検索する処理を
以下の実装でそれぞれ10000回実行したときの経過時間を計測
(環境: PenM 1.7GHz, Mem 1GB)

1. DataTable.Select, LIKE演算子 (DataTableは事前に作成)
2. LINQ, where句
3. Array.FindAll
4. Array.FindIndex (範囲の下限と上限を探す)
5. 二分探索 + Array.FindIndex (最初の1個だけ二分探索、あとは4と同様)

[結果]
1: 01:14.5145383
2: 00:03.3538505
3: 00:03.4140853
4: 00:00.6785046
5: 00:00.4187657

998 :デフォルトの名無しさん:2008/11/24(月) 18:33:46
Mono is a cross platform, open source .NET development framework.
ってこんなに大きな文字でうたってるんだから、いいんじゃない?

999 :デフォルトの名無しさん:2008/11/24(月) 18:42:15
http://pc11.2ch.net/test/read.cgi/tech/1224754660/
続きはこちらで

1000 :デフォルトの名無しさん:2008/11/24(月) 18:42:45
終了

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

240 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)