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

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

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

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

なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。

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

ふらっとC#,C♯,C#(初心者用) Part55
http://pc12.2ch.net/test/read.cgi/tech/1265288563/1

関連スレ
C#, C♯, C#相談室 Part55(実質56)
http://pc12.2ch.net/test/read.cgi/tech/1260111240/1

VB.NET質問スレ(Part33)
http://pc12.2ch.net/test/read.cgi/tech/1263738929/1

C++/CLI part3
http://pc12.2ch.net/test/read.cgi/tech/1206447234/1

2 :デフォルトの名無しさん:2010/02/28(日) 18:30:08
F#最強wwwwwww

3 :前スレ988:2010/02/28(日) 18:44:15
>>1さん ありがとうございます。

前スレのクリップボードについての質問者です。

MDIEというファイラーの挙動を見てみたのですが、切り取りはアプリ外にも
できましたが、終了するとクリップボードは空にされました。
切り取りかコピーかの情報をアプリケーション側が保持しているっぽいですね。

エクスプローラと同じ挙動をするように、切り取り情報をOS側に投げられたら
よいのですができなさそうですね・・・

ほぼプライベートで使うアプリケーションなので、こんなところにしておきます。
みなさんありがとうございました。

4 :デフォルトの名無しさん:2010/02/28(日) 19:13:56
>>3
SHFileOperationでググれ

5 :4:2010/02/28(日) 19:24:56
ごめん、コピペには対応していなかったみたいだ

6 :デフォルトの名無しさん:2010/02/28(日) 20:04:14
弱いなおいw


7 :デフォルトの名無しさん:2010/03/01(月) 00:19:29
>>4よりつええやついねえのか?

8 :デフォルトの名無しさん:2010/03/01(月) 00:31:43
>>3
切り取り/コピーの情報もクリップボードに入っている
アプリ終了すると消えるのは、終了しても残すように指定されていないから

// StringCollection fileDropList;
var buf = BitConverter.GetBytes((int)DragDropEffects.Move);
var memStream = new MemoryStream(buf);
var data = new DataObject();
data.SetFileDropList(fileDropList);
data.SetData("Preferred DropEffect", memStream);
Clipboard.SetDataObject(data, true);

9 :デフォルトの名無しさん:2010/03/01(月) 00:39:51
麻生だ。>>1乙。だが、リンクにゴミ(/1$/)が付いてる。あと、リンク修正も

C#, C♯, C#相談室 Part55(実質57)
http://pc12.2ch.net/test/read.cgi/tech/1265283175/

10 :前スレ988:2010/03/01(月) 00:52:50
>>8 さん

ありがとうございます!
うまくいきました。
クリップボードに情報が入っていたのですね。


11 :デフォルトの名無しさん:2010/03/01(月) 19:59:37
過疎が酷いw

12 :デフォルトの名無しさん:2010/03/01(月) 22:01:04
くそ韓国のせい

13 :デフォルトの名無しさん:2010/03/01(月) 22:24:02
こうやって韓国がどんどん嫌われるのは嬉しい

14 :デフォルトの名無しさん:2010/03/02(火) 20:57:16
スレチ

15 :デフォルトの名無しさん:2010/03/02(火) 21:00:22
exploerのように3桁づつカンマを入れたリストビューを
ソートしようと思っているんですが
(例)123,456,789(右揃え)を数値に変換するにはどうすればいいでしょうか?

文字列でソートしてもうまくいかないので数値に変換しようと思ってます

16 :デフォルトの名無しさん:2010/03/02(火) 21:04:49
NumberStyles 使った Int32.Parse 使えば変換できるけどさ
それよりTagとかにソート用の情報オブジェクト持たせた方が楽よ

17 :デフォルトの名無しさん:2010/03/02(火) 21:19:43
System.Net.Mail.SmtpClient でメールを送るプログラムを書こうと思います。
このクラスを使うとして、envelope from を設定することは可能でしょうか?

TcpClient とかを使って自分でサーバとやりとりをすれば出来そうなのですが、
出来れば楽をしたいな、と。w

18 :デフォルトの名無しさん:2010/03/02(火) 21:20:24
NumberStylesでぐぐったら
ぴったりのとこ見つけました
ありがとうございました
http://www.atmarkit.co.jp/fdotnet/dotnettips/001atoi/atoi.html

19 :デフォルトの名無しさん:2010/03/02(火) 21:41:03
>>17
http://www.diaryofaninja.com/blog/2009/10/02/sending-encrypted-email-with-c

20 :デフォルトの名無しさん:2010/03/02(火) 22:45:04
>>19
ありがとうございます。

いまはちょっと寝ぼけているので、明日チャレンジします。
こんなにすぐに教えていただいたのに、ごめんなさい。

21 :デフォルトの名無しさん:2010/03/03(水) 03:47:03
前からプログラムっていうのがやってみたくて、重い腰をあげてC#Expressというのを
苦労してインストールしてみたお。だいぶGUI画面とかできるようになったお。

だけど、今日、本屋いったらF#って言う本が出ててVisualStudio2010から正式にうんちゃらかんちゃらって
かいてあったお。

C#はこの先置いてけぼり食らうのかお・・

22 :デフォルトの名無しさん:2010/03/03(水) 04:31:27
衝撃的なデビューから早10年
結局メジャーにはならず、プログラム初心者向けの言語にしかならなかった

そして時代はF#

23 :デフォルトの名無しさん:2010/03/03(水) 04:53:59
public string Name
{
set
{
_name = value;
}
}

こういったプロパティって何か意味があるんですか?
サイトのTIPS見てもよくわからない
ただ単にデータを格納するだけなら直接publicな_nameに格納してもいいものだけど

24 :デフォルトの名無しさん:2010/03/03(水) 06:36:32
>>21
C#とF#は棲み分けが違う

>>23
オブジェクト指向では直接フィールドメンバにアクセスすることを嫌う。
カプセル化でぐぐりなさい。といっても、意味が広いからすぐに理解はできないと思うけど。

25 :デフォルトの名無しさん:2010/03/03(水) 10:24:20
>>24
オブジェクト指向というよりコンポーネント指向。
C#など最近の言語はこの二つが混ざり合ってるけど、
interfaceやpropertyはコンポーネント由来の機能。

26 :デフォルトの名無しさん:2010/03/03(水) 11:15:50
WEBページで右クリックして出るIEショートカットメニューに
自作ソフト登録して、自作ソフトにそのWEBページのURLが
送られるようにしたいんだけどどうすればいいですか?

27 :デフォルトの名無しさん:2010/03/03(水) 11:35:46
IEMenuExt入れてヘルプ見ながら色々弄ってみれば何やってるか分かるよ
ちなみに登録できるのはあくまでJavaScript

28 :デフォルトの名無しさん:2010/03/03(水) 11:50:29
>>27
ありがとう
調べてみます

29 :デフォルトの名無しさん:2010/03/03(水) 11:54:53
>>25
コンポーネント指向っていうのはキャッチコピーみたいなもので
具体的にどこがどうコンポーネント指向かというのは難しい
あえていうなら、MSのようにクラスの利用者を「お客様」として扱う考え方かな
あくまでオブジェクト指向がベース

30 :23:2010/03/03(水) 12:22:18
>>24
内部を隠蔽化とかそういう説明は沢山あるけど
具体的にどういう場合に支障があるんでしょうか?
ただ代入するだけなら意味がないと思うんだけど

例えば>>23だとフィールドメンバの型を変更することになった場合

public string Name
{
  set
  {
    _nameNumber =int.Parse(value);
  }
}

こんな感じにできるということ?

31 :デフォルトの名無しさん:2010/03/03(水) 12:33:14
まあそれはかなり極端な場合だがそういうのもある
他にも入力値チェックしたくなったりとか値変更時にイベント発生させたりとか

で、「初めはフィールドにしといて何かしたくなったらプロパティにすればいいじゃん」については
取り敢えずこう返す、「今なら自動実装プロパティがあるからフィールドにする意味ないじゃん」

32 :デフォルトの名無しさん:2010/03/03(水) 12:36:03
プロパティは遅いやん

33 :デフォルトの名無しさん:2010/03/03(水) 12:46:31
オブジェクト指向の真髄は多態であって、
カプセル化なんてのは構造化プログラミング時代でも普通にやってた。モジュール化とか。

34 :デフォルトの名無しさん:2010/03/03(水) 13:09:02
つい最近某所のベンチマークソースで試してみたら、デバッグビルドではプロパティが数倍遅かったけど、リリースビルドなら誤差レベルだったな

35 :デフォルトの名無しさん:2010/03/03(水) 13:09:44
>>32
それは実際できたものを動かしてみたら遅くて、その原因箇所を探したら
プロパティアクセサだったとき(まずありえないけど)に考えること

36 :デフォルトの名無しさん:2010/03/03(水) 13:15:53
SilverlightやらWPFやらで流行りのMVVMパターンで組むなら
Setterの中であれこれやる事になるからプロパティ必須

37 :デフォルトの名無しさん:2010/03/03(水) 13:23:07
リモートオブジェクトで値を受け渡す場合の方法に
値渡しとインターフェイスポインタ渡しがあって、
プロパティはインターフェイスポインタ渡しで必要になった技術なんだよね。
現在ではリモート処理以外でも広く使われるようになった。


38 :23:2010/03/03(水) 14:16:55
エラーチェックと言っても普通呼び出す側でチェックするのに
プロパティでする意味が有るのかな?
エラーチェックを2回することになるんですよね?

39 :デフォルトの名無しさん:2010/03/03(水) 14:25:51
int[] a = new int[1];
int b = 2;
a[b] = 4;
bがa.Length未満かどうかはそりゃ呼び出し側はチェックするだろうけど
だからといってint[]側がチェックしないわけないだろ?

40 :デフォルトの名無しさん:2010/03/03(水) 14:37:35
規約をチェックして例外投げるのはかまわないけど
利用者が例外をキャッチしないといけないような設計はダメだよ
プロパティが例外を投げることは普通想定しない
利用者が事前にチェックできないような条件なら、代入時じゃなくて
そのプロパティの値が内部で使用されるときに例外を投げるべき

41 :23:2010/03/03(水) 15:08:27
例えば

@ファイル入出力クラスを利用するクラス

Aファイル入出力をするクラス

エラーメッセージとして"ファイル名を入力してください"と出す場合
この場合両方のクラスでファイルが存在するかチェックすべき?
それともAに一旦ファイルパスを送って例外が出された場合@のクラスでエラーメッセージを表示すべき?

42 :デフォルトの名無しさん:2010/03/03(水) 15:13:08
両方

43 :23:2010/03/03(水) 15:19:34
うーん、こういうことってやっていくうちにわかるのかな
なんとなくわかったようなわからないような
とにかく、ありがとうございました

44 :デフォルトの名無しさん:2010/03/03(水) 15:20:55
>>23は頭固いというか誰かの洗脳でも受けたのか?

45 :23:2010/03/03(水) 15:27:31
オブジェクト志向って同じ機能をまとめることでしょ?
同じ機能が他のクラスに合ったらまとめたくなるじゃない?

46 :デフォルトの名無しさん:2010/03/03(水) 15:30:35
今度のMicrosoftの新言語はG♭

47 :デフォルトの名無しさん:2010/03/03(水) 15:32:11
>>45
機能をまとめるってのがなあ・・・
まあそういうのはクラスわけができてないっていうんだろうけど

48 :デフォルトの名無しさん:2010/03/03(水) 15:38:15
Aのクラスはファイル名が与えられなかったので、ファイルを開けませんでした
というエラー報告を、例外として利用クラスに投げるだけにとどめるべき

どう扱い、どう表示するかは、ファイルクラスには関係ない

デバッグ時ならAクラスがエラー表示してもかまわんと思うけど

49 :デフォルトの名無しさん:2010/03/03(水) 15:53:43
流れぶった切ってすいません。
ちょっと教えて。

System.Diagnostics.Trace クラスで出力したデータを
VSの出力windowみたいな感じにモニタするソフトってあります?


50 :デフォルトの名無しさん:2010/03/03(水) 16:02:04
あったな、そういうの
syslogに投げるやつもあったな

51 :デフォルトの名無しさん:2010/03/03(水) 16:17:45
DebugViewが定番
「VSの出力windowみたいな感じ」かどうかは自分で確認してくれ
何を持ってそう判断するのかは>>49にしか分からんので

52 :49:2010/03/03(水) 16:23:50
>>50さま
レス有り難う御座います。

ログを出力する側に手を加えてTextやEventLogへ出力する方法は
ググると結構見つかるのですが・・・

TraceListenerを自作するべきか、悩んでます。
苦労して作った後に、いやこんなツールはあるんだけどね。知らなかったの?
ってなるのが、怖わかとです。


53 :デフォルトの名無しさん:2010/03/03(水) 16:25:06
>>52
>TraceListenerを自作するべきか、悩んでます。
>苦労して作った後に、いやこんなツールはあるんだけどね。知らなかったの?
それも勉強だろ

54 :49:2010/03/03(水) 16:36:32
>>51さま

DebugView(DbgView)
http://www.atmarkit.co.jp/fdotnet/dotnettips/757debugview/debugview.html
http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx

やっぱり聞いて良かったです。

そうそう、こんなツールが欲しかったんです。!!
なんでMSはVS2008にデフォルトで付いてくれないんだろう(怒

助かります。
有り難う御座います♪ 

>>53
何事も勉強ですよね・・

ただこの場合はオリジナルのデバックIFを作っても、
発展性も望めないので・・


55 :デフォルトの名無しさん:2010/03/03(水) 17:01:33
WEBページのボタンを自動でクリックしたい・・・

56 :デフォルトの名無しさん:2010/03/03(水) 17:02:20
>>55
ぐぐれ
その辺は結構情報あるよ

57 :デフォルトの名無しさん:2010/03/03(水) 17:51:17
ピクピク
webbrowserでやればいいのかな?
第一歩の踏み出すためのぐぐる検索キーワード教えて

58 :デフォルトの名無しさん:2010/03/03(水) 17:55:15
HTTPとかPOSTとかGETとか・・・

59 :デフォルトの名無しさん:2010/03/03(水) 17:56:53
え!?そこから勉強しないとダメなんだ・・・orz

60 :デフォルトの名無しさん:2010/03/03(水) 17:58:17
魔法じゃないんだからすこしはやれよ

61 :デフォルトの名無しさん:2010/03/03(水) 20:29:07
webbrowserでナビゲート終了後にhtmlドキュメントを調べるだけだろ
javascriptとかでボタンの列挙とかあるしやることはそれほどかわらん

62 :デフォルトの名無しさん:2010/03/03(水) 20:32:45
webbrowser click
でググルだけで出てくる

63 :デフォルトの名無しさん:2010/03/03(水) 20:57:20
>>61
>>62
ありがとうございます
これでいけそうです
http://www.atmarkit.co.jp/fdotnet/dotnettips/860controlwb/controlwb.html

64 :デフォルトの名無しさん:2010/03/03(水) 21:03:09
web 自動運転 ボタン Document.GetElementById HtmlElement

とかで必死にぐぐってたのになかなか目的サイトが見つからなかった
これで半日かかってしまった

webbrowser click

で検索すると大量に目的のサイトが出た
初心者はこういうので時間かかるんだよなぁ

65 :デフォルトの名無しさん:2010/03/03(水) 21:08:30
自動運転はねーよww

66 :デフォルトの名無しさん:2010/03/03(水) 21:09:42
どうでもいいなりよ

67 :デフォルトの名無しさん:2010/03/03(水) 21:52:45
TraceListenerはなんか変。
なんであんな派生しにくいんだよ。


68 :デフォルトの名無しさん:2010/03/03(水) 21:53:02
>>23 >>32
最近出版されたEffective C#嫁。
そのプロパティのことがずばり書かれている。

69 :デフォルトの名無しさん:2010/03/03(水) 21:54:47
>>52
TraceListener使うのが一番。
ログの吐き出しはlog4netで。

70 :デフォルトの名無しさん:2010/03/03(水) 22:27:56
log4netいまいち
NLogのがいい気がする

71 :デフォルトの名無しさん:2010/03/03(水) 23:13:59
>>68
スバリ教えて

72 :デフォルトの名無しさん:2010/03/03(水) 23:17:05
C#2008EE使っているのですが
デザイン画面のコントロールのプロパティで
boolの値をドロップダウンで選択しようとしても
一瞬開いて閉じてしまう症状があるのですが
こういった症状になったことある方いますでしょうか?

何度か連打していれば元に戻るのだけど

73 :デフォルトの名無しさん:2010/03/03(水) 23:19:41
boolならドロップダウンさせずともダブルクリックで切り替えれば十分な希ガス

74 :デフォルトの名無しさん:2010/03/03(水) 23:39:58
>>71
やーだお(´・ω・`)

75 :デフォルトの名無しさん:2010/03/03(水) 23:58:27
>>33
それはただのフィールドの隠蔽化。カプセル化はもっと深い。

76 :デフォルトの名無しさん:2010/03/04(木) 00:02:22
>>71
プロパティ、中身がシンプルなものは JIT 時にインライン化される。
プロパティにすることで、フィールドをpublicにするよりも変更に強くなる。

77 :デフォルトの名無しさん:2010/03/04(木) 00:04:39
>>75
いやいや>>33の言うとおりでしょ。
(OOPの真髄が多態という見解には異論があるが)

カプセル化なんてOOPよりずっと昔からある概念なんだけど。

78 :デフォルトの名無しさん:2010/03/04(木) 00:06:54
インライン化されてもコピーが入るからまったくコストが無くなるわけじゃないよ

79 :デフォルトの名無しさん:2010/03/04(木) 00:23:52
へえ

80 :デフォルトの名無しさん:2010/03/04(木) 00:24:15
>>23
まあごく例外的な場合とか「フィールドは公開すべきでない」という精神論を別にすれば、
プロパティにする必要性が出た時点でプロパティにする、という方針でも
別に悪くはないと個人的には思う。別にたいした手間でもないし。

ただ、今時プロパティ書くのもフィールド書くのも手間はあまり違わないわけで、
そういう現状を前提にすると「なぜ<あえて>プロパティなのか」っていう疑問は
あまり自明じゃなくなって来てるな。

81 :デフォルトの名無しさん:2010/03/04(木) 00:31:26
>>78
コピーって何?


82 :デフォルトの名無しさん:2010/03/04(木) 01:30:41
>>77
オブジェクト指向のこころを読めば世界が広がるよ。

83 :デフォルトの名無しさん:2010/03/04(木) 03:44:00
クラスの内部から、フィールドには直接アクセスすることもプロパティが実装されていれば
プロパティからフィールドにアクセスすることもできますが、プロパティが
実装されている場合、積極的にプロパティを使ってフィールドにアクセスすべきですか?
Javaのアクセッサ(getter/setter)では記述のコストが高くてやってられないのですが、
C#ではどうなんでしょうか?

84 :デフォルトの名無しさん:2010/03/04(木) 03:47:22
自分でテストコード書けばいいじゃねえか

85 :デフォルトの名無しさん:2010/03/04(木) 04:05:28
>>84
速度だけの話じゃないです。

クラスの内部からフィールドへのアクセスもプロパティを通すことで、
カプセルとその他もろもろの恩恵を受けられると思ったんだけど、
そういった形でプロパティを使うってありですか?

86 :デフォルトの名無しさん:2010/03/04(木) 04:08:28
自分でテストコード書けばいいじゃねえか

87 :デフォルトの名無しさん:2010/03/04(木) 04:12:48
いや、あんたに聞いてない

88 :デフォルトの名無しさん:2010/03/04(木) 04:17:18
ママにでも聞けばいいじゃねえか

89 :デフォルトの名無しさん:2010/03/04(木) 04:28:11
論外さようなら

90 :デフォルトの名無しさん:2010/03/04(木) 04:29:53
二度と来るなよ

91 :デフォルトの名無しさん:2010/03/04(木) 04:32:50
日本語分かる?ちんぱん

92 :デフォルトの名無しさん:2010/03/04(木) 06:14:19
webbrowser

<input type="image" onclick="hoge" name="homo">

GetAttribute("onclick")でonclickの値(hoge)が取得できないのですが、普通はできるのでしょうか?
値は"System.__ComObject"というのが返ってくるだけです
同じやり方でtypeの値はちゃんと取得できます

93 :デフォルトの名無しさん:2010/03/04(木) 06:19:16
vc# 2005使い始めたんだけど、
デフォルトのインデントがタブじゃなくて、スペースなのね。

c#ではこれが流儀?
これに慣れた方がいい?


行をBSで逆インデントする時に、
BSを連打しないといけないのが、苦痛。
Shift+tabは面倒。



94 :デフォルトの名無しさん:2010/03/04(木) 06:26:08
>>92
その周辺のコードは晒せる?

>>93
設定で切替できなければタブとスペースの切替はできないってことだろ

それにVC#の場合オートインデントなのでガシガシ打ってもどうにかなるだろ

95 :デフォルトの名無しさん:2010/03/04(木) 06:30:13
トイレに行ってきます(´・ω・`)

96 :94:2010/03/04(木) 06:31:20
どこでもいいので

{
int aaaa = 10;
aaaa++;
}

を書いた上で

//{
int aaaa = 10;
aaaa++;
//}

という感じでネストをいじった上で

上記4行を一旦切り取って同じ位置に貼り付けてみると勝手にインデント調整してくれるよ

97 :デフォルトの名無しさん:2010/03/04(木) 06:32:16
C#で生ソケットについて経験者いたら教えてください。
下記のコーディングで間違いとか、抜けとか、ありますか?

Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Tcp);
TCPヘッダ作成
IPヘッダ作成
ヘッダ連結
チェックサム
int nBytes = socket.SendTo(sendbuf, sendbuf.Length, SocketFlags.None, endpoint);

SendToメソッドの箇所でエラーが発生します
エラーコード:10022
エラーメッセージ:無効な引数が提供されました

原因分かる方、教えてください。

98 :デフォルトの名無しさん:2010/03/04(木) 06:34:13
>>97
デバックでとまった際に引数みてみなよ

99 :デフォルトの名無しさん:2010/03/04(木) 06:37:08
>>98
といいますと?

100 :デフォルトの名無しさん:2010/03/04(木) 06:38:19
TCPヘッダ作成
IPヘッダ作成
ヘッダ連結
チェックサム

あと可能な限りここも書きなよ

固有情報は適当に書き換えて

101 :デフォルトの名無しさん:2010/03/04(木) 06:45:31
TCPヘッダ作成は下記の通りです。

/********************************************************************************
* TCPヘッダ取得
*******************************************************************************/
public byte[] getTcpHeader(Int16 selfport, Int16 destport)
{
TcpHeader header = new TcpHeader();
header.selfport = (UInt16)IPAddress.HostToNetworkOrder(selfport);
header.destport = (UInt16)IPAddress.HostToNetworkOrder(destport);
header.seq_num = 1;
header.ack_num = 0;
header.offset_and_reserved_and_flags = 5; // offset
header.offset_and_reserved_and_flags <<= 6; // reserved
header.offset_and_reserved_and_flags |= 0;
header.offset_and_reserved_and_flags <<= 1; // URG
header.offset_and_reserved_and_flags <<= 1; // ACK
header.offset_and_reserved_and_flags <<= 1; // PSH
header.offset_and_reserved_and_flags <<= 1; // RST
header.offset_and_reserved_and_flags <<= 1; // SYN
header.offset_and_reserved_and_flags |= 1;
header.offset_and_reserved_and_flags <<= 1; // FIN
header.window = (UInt16)IPAddress.HostToNetworkOrder((Int16)32767);
header.checksum = 0;
header.urgent_pointer = 0;

return header.getBytes();
}


102 :デフォルトの名無しさん:2010/03/04(木) 06:49:03
IPヘッダ作成は下記の通りです(パート1)

/********************************************************************************
* IPヘッダ取得
*******************************************************************************/
public byte[] getIpHeader(byte[] databuf, string selfAddress, string destAddress, byte protocol)
{
Ipv4Header header = new Ipv4Header();
header.version_and_length = 69;
header.service_type = 0;
if (protocol == 4)
{
header.packet_length = 20;
}
else
{
header.packet_length = 40;
}
Random rand = new Random();
header.identifier = (short)rand.Next(32767);
header.flagment_offset = 0;
header.ttl = 64;
header.protocol_no = protocol;
header.checksum = 0;


103 :デフォルトの名無しさん:2010/03/04(木) 06:50:08
IPヘッダ作成は下記の通りです(パート2)

int startpoint = 0;
int endpoint = selfAddress.IndexOf(".");
header.self_ip1 = byte.Parse(selfAddress.Substring(startpoint, (endpoint-startpoint)));
startpoint = endpoint + 1;
endpoint = selfAddress.IndexOf(".", startpoint);
header.self_ip2 = byte.Parse(selfAddress.Substring(startpoint, (endpoint - startpoint)));
startpoint = endpoint + 1;
endpoint = selfAddress.IndexOf(".", startpoint);
header.self_ip3 = byte.Parse(selfAddress.Substring(startpoint, (endpoint - startpoint)));
startpoint = endpoint + 1;
endpoint = selfAddress.IndexOf(".", startpoint);
header.self_ip4 = byte.Parse(selfAddress.Substring(startpoint, (selfAddress.Length - startpoint)));

startpoint = 0;
endpoint = destAddress.IndexOf(".");
header.dest_ip1 = byte.Parse(destAddress.Substring(startpoint, (endpoint - startpoint)));
startpoint = endpoint + 1;
endpoint = destAddress.IndexOf(".", startpoint);
header.dest_ip2 = byte.Parse(destAddress.Substring(startpoint, (endpoint - startpoint)));
startpoint = endpoint + 1;
endpoint = destAddress.IndexOf(".", startpoint);
header.dest_ip3 = byte.Parse(destAddress.Substring(startpoint, (endpoint - startpoint)));
startpoint = endpoint + 1;
endpoint = destAddress.IndexOf(".", startpoint);
header.dest_ip4 = byte.Parse(destAddress.Substring(startpoint, (selfAddress.Length - startpoint)));

104 :デフォルトの名無しさん:2010/03/04(木) 06:52:03
IPヘッダ作成は下記の通りです(パート3)

if (protocol == 4)
{
header.checksum = this.calcCheckSum(header.getBytes());
}
else
{
header.checksum = this.calcCheckSum(header.getBytes().Concat(databuf).ToArray());
}

return header.getBytes();
}


105 :デフォルトの名無しさん:2010/03/04(木) 06:53:41
チェックサム計算は下記の通りです。

/********************************************************************************
* チェックサム計算
*******************************************************************************/
public short calcCheckSum(byte[] buf)
{
Int32 checksum = 0;
byte[] wrkbyte;
if (buf.Length == 1)
{
checksum += buf[0];
}
else if (buf.Length >= 2)
{
for (int i = 0; i < buf.Length; i += 2)
{
if ((i + 1) == buf.Length)
{
checksum += buf[i];
}
else
{
wrkbyte = new byte[] { 0, 0 };
Array.Copy(buf, i, wrkbyte, 0, 2);
checksum += Convert.ToInt32(BitConverter.ToInt16(wrkbyte, 0));
}
}
}
checksum = (checksum >> 16) + (checksum & 0xFFFF);
return (short)((~checksum) & 0xFFFF);
}

106 :デフォルトの名無しさん:2010/03/04(木) 07:32:22
処理の流れは下記の通りです。

// Initialize a Socket of Type TCP
socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Tcp);
byte[] tcpheaderbuf = Common.getInstance().getTcpHeader(Int16.Parse(this.selfPort), Int16.Parse(this.destPort));
byte[] ipheaderbuf = Common.getInstance().getIpHeader(tcpheaderbuf, this.selfAddress, this.destAddress, 6);
byte[] sendbuf = ipheaderbuf.Concat(tcpheaderbuf).ToArray();
// Send the Packet over the socket
IPEndPoint ipendpoint = new IPEndPoint(IPAddress.Parse(this.destAddress), UInt16.Parse(this.destPort));
EndPoint endpoint = (ipendpoint);
this.iStartTime = Environment.TickCount;
socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, 1);
int nBytes = socket.SendTo(sendbuf, sendbuf.Length, SocketFlags.None, endpoint);
if (nBytes == -1)
{
return false;
}
return true;


107 :デフォルトの名無しさん:2010/03/04(木) 07:33:42
書き込み制限食らってました^^;
以上がソースですが、まだネットワーク系を勉強中なため、基本的なことが抜けてたらご指摘ください。


108 :デフォルトの名無しさん:2010/03/04(木) 07:44:23
SocketType.Rawは使ったこと無いけどConnectしてないのが悪いみたいだな
変更後の例でもsocket.Connectをコメントにするとエラーになるし

Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Tcp);
TCPヘッダ作成
IPヘッダ作成
ヘッダ連結
チェックサム
int nBytes = socket.SendTo(sendbuf, sendbuf.Length, SocketFlags.None, endpoint);



Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
TCPヘッダ作成
IPヘッダ作成
ヘッダ連結
チェックサム
socket.Connect(endpoint);
//int nBytes = socket.SendTo(sendbuf, sendbuf.Length, SocketFlags.None, endpoint);
//ソースみたら内部でoffset指定タイプを呼んでるだけだった
int nBytes = socket.SendTo(sendbuf, 0,sendbuf.Length, SocketFlags.None, endpoint);

109 :デフォルトの名無しさん:2010/03/04(木) 07:46:10
EEじゃないのならMSからソースなどを入手して
自分のプログラムと一緒にトレースしてみた方がいいかもね

110 :デフォルトの名無しさん:2010/03/04(木) 08:01:14
2chに貼られても読む気がしねー
うpろだに丸々うpしる!

111 :デフォルトの名無しさん:2010/03/04(木) 08:26:39
>>92
onclickのスクリプトコードそのものが欲しいのならOuterHtmlから切り出すくらいしかないはず
コード手に入れて何したいのか知らんけど

112 :デフォルトの名無しさん:2010/03/04(木) 08:37:02
関係ないけど、offset_and_reserved_and_flagsはflagsなenumか定数にでもしとけ

113 :デフォルトの名無しさん:2010/03/04(木) 15:08:35
>>111
そこにクリック後のURLの一部が書いてあって
それを使えばわざわざクリックしてページを開かなくてもいいことに気づいたので
利用しようと思っていたのです

OuterHtmlでいけました
ありがとうございます

114 :デフォルトの名無しさん:2010/03/04(木) 16:36:28
デザイナーで配置したコントロールのNameを一括変換とかする方法はありますか?
プロパティ開いてNameをシコシコ書き換え?

115 :デフォルトの名無しさん:2010/03/04(木) 17:08:36
もとの名前に何かルールがあるなら
フォーム名.csとフォーム名.Designer.csを正規表現置換
ないなら一括変換機能がもし仮にあったとしても無理だと思うよ

116 :デフォルトの名無しさん:2010/03/04(木) 17:11:25
>>115
レスありがとうございます。
やっぱり外部ツールとかで正規表現かけるかデザイナーのプロパティのところでNameを変更して
デザイナーに関連項目の名称置換を行ってもらうとかになりますかね・・・

117 :デフォルトの名無しさん:2010/03/04(木) 17:19:36
>>72なんですが
ドロップダウンで選択するものは全部すぐ閉じます
あと、スニペット挿入時で出るウィンドウを一瞬で閉じます

どなたかこの対処法ご存じないでしょうか?

118 :デフォルトの名無しさん:2010/03/04(木) 17:48:49
どこかキーボード押しっぱなしになってない?

119 :デフォルトの名無しさん:2010/03/04(木) 17:49:38
っマウスを買い換える

120 :デフォルトの名無しさん:2010/03/04(木) 17:50:32
>>116
いや普通に>>115の2つのファイルをエディタで開いて
VSの置換機能で置換するだけ
ただしコントロールのアクセスレベルがprivateの場合に限る

121 :デフォルトの名無しさん:2010/03/04(木) 19:47:48
>>118
特に何もしてないdす
久しぶり起動してそれまでにいくつか常駐ソフトやいろいろなソフトいれたので
それが影響してるのかもしれないが、一応常駐しているのはすべて切ったけどだめだった
コンテキストメニューはちゃんと開くんだけど、スニペットのウィンドウだけ違う方法で開いているのかな

>>119
買ったばかりです・・

スニペット挿入はどういう操作で閉じるか教えていただけませんか?

122 :デフォルトの名無しさん:2010/03/04(木) 22:36:27
C#4.0ではExcel2007みたいなリボンとか作れるようになるけど
どうせある程度慣れたらCtrl+Dみたいなキーボード操作しかしなくなるからでっかいボタン表示してもうざいだけだな・・・

リボンとか意味のない機能だ

123 :デフォルトの名無しさん:2010/03/04(木) 22:40:58
Officeくらい機能盛りだくさんでないとあんまり使い道ないわねぇ、リボン。

124 :デフォルトの名無しさん:2010/03/04(木) 22:43:46
>>123
候補はある>2chブラウザ

あとwindowsを搭載したタッチパネル系デバイスがイマイチ普及しないのは
windowsの基本UIが小さすぎるのでペンなどの先が細い物じゃないと使いにくい
というところがあったからなんだよね・・

タッチ前提になると変わると思うよ
ただおofficeはそもそもタッチで使うことはないので意味ないだろうけどw

エンターテイメント要素がある物には有効だよ

125 :デフォルトの名無しさん:2010/03/04(木) 23:26:31
いやリボンはタッチパネルを想定してアイコンでかくなってるわけではないでしょ。

っていうか、汎用OS上のアプリに限れば、タッチパネルは指をポインティングデバイスに
しようって発想じゃなくて、むしろマウスジェスチャー的な補助的操作の
延長線上のものでしかないと思うけど。

あと、リボンは、たとえカスタマイズ可能になっても作業領域や表示領域を
広くとりたい用途(例えばワード)には全然向かないね。

126 :デフォルトの名無しさん:2010/03/05(金) 00:06:23
ケチくせーこと言うなよ。
じきにモニターの解像度が20000*10000とかになるって

127 :デフォルトの名無しさん:2010/03/05(金) 00:18:52
使う前は叩いてたけど、実際に触ってみたら結構快適で気に入った。
作業領域を広くしたい時は隠せばいいじゃん。

128 :デフォルトの名無しさん:2010/03/05(金) 00:26:07
>>126
解像度上げてもフォントが読めるサイズでないと話にならないから
モニターのインチが大きくならんと意味なかろう
俺のはすでに24なんだが、この数倍のモニターは部屋に置けねーよw

129 :デフォルトの名無しさん:2010/03/05(金) 00:43:14
>>126
モニタは今くらいでいい
HMDをそれくらいにしてくれ

130 :デフォルトの名無しさん:2010/03/05(金) 01:20:10
>>129
ケチ。

131 :デフォルトの名無しさん:2010/03/05(金) 01:20:32
>>128
文字を大きくすると意味ないしなぁ。
必然的にモニタサイズ大きくする必要があるわけで、27インチが俺の射程距離内
に入ってきますた

132 :デフォルトの名無しさん:2010/03/05(金) 01:53:39
マルチモニタおいしいです

133 :デフォルトの名無しさん:2010/03/05(金) 06:10:53
うん

134 :デフォルトの名無しさん:2010/03/05(金) 07:46:16
リファラ設定していろいろダウンロードできるようになったけど
MMSのストリーミング動画の落とし方がわからない・・・

135 :デフォルトの名無しさん:2010/03/05(金) 07:56:16
GAS使っとけ

136 :デフォルトの名無しさん:2010/03/05(金) 09:42:24
GASでできるけど
タイトル変えたりするのが面倒だから
自分で作ろうと奮闘してるんだが
むりぽww

137 :デフォルトの名無しさん:2010/03/05(金) 10:26:24
//////////////////////////////////////////////////
public void button1_Click(object sender, EventArgs e)
{

int y = int.Parse(textBox1.Text);
int x = int.Parse(textBox2.Text);
int _y = 520 * x / y;
textBox3.Text = Convert.ToString(_y);

}
///////////////////////////////////////////////////

Form1の中なんですけど、デバッグ中にボタンおしてもtextBox3に変化がない
どうすればいいんでしょうか?
よろしくお願いします

138 :デフォルトの名無しさん:2010/03/05(金) 10:29:33
イベントハンドラが設定されてないとか?

buttonのclickイベントでその関数呼ばれるようにしてある?

139 :デフォルトの名無しさん:2010/03/05(金) 10:29:43
public……そのメソッド手で直接追加した?

140 :デフォルトの名無しさん:2010/03/05(金) 10:54:57
>>138
ちょこっと探してきたら,これがあったので大丈夫ですかね?
this.textBox3.TextChanged += new System.EventHandler(this.button1_Click);

>>139
見る人が見れば分かるんですね
元々はprivateで書かれてて、それでいろいろと試行錯誤をしてみたんですよ
まぁ、それの跡ですねw 一応直しておきました

141 :デフォルトの名無しさん:2010/03/05(金) 10:58:21
>>140
ちげーよw

ボタンが押されてもbutton1_Click(object sender, EventArgs e)これが呼ばれてないから
変わらないんだろうw

142 :デフォルトの名無しさん:2010/03/05(金) 10:59:48
メソッドの名前は便宜的なもので、button1_Clickという名前でもbutton1のクリックとは関係ない
で、明らかにtextBox3のTextChangedのときに呼び出されるようにしてるじゃん

143 :デフォルトの名無しさん:2010/03/05(金) 11:00:51
windowsでプログラム組む上での基本的な仕組みを分かってないのは痛いな

144 :デフォルトの名無しさん:2010/03/05(金) 11:03:28
というか分かっててあえて分からないフリして釣ってるようにも見える

145 :デフォルトの名無しさん:2010/03/05(金) 11:04:32
>>141,142
フォームのデザイナでもう一回メッソド作り直したら、
正常に動きました

>>143
おっしゃるとおりだと思います
勉強し直します

ありがとうございました

146 :デフォルトの名無しさん:2010/03/05(金) 12:23:03
>>136
そういう時はGASを制御するアプリを作るんだ

147 :デフォルトの名無しさん:2010/03/05(金) 13:27:58
>>146
ダウンロードするリストだけ自前で作って
MMSをダウンロードするソフトに読み込ませてdlした方が早そうですね

148 :デフォルトの名無しさん:2010/03/05(金) 16:34:44
ねえ。。俺もそれで(>>137)迷ってたんだけど・・・

解決方法がわからん・・誰か教えて。。

Form1_ClosingとnotifyIcon1_DoubleClickを手で直接入力しちゃったんだけど・・
たしか、VB6だと、オブジェクトをフォームデザイナの左のコンボボックスで選択して右のコンボボックスで
適したイベントハンドラを選択できるようになってたんだけど・・

VC#2005Expressだとやり方わかりません。すみません、誰か教えてください。。

149 :デフォルトの名無しさん:2010/03/05(金) 16:37:34
自動プロパティをして、後でフィールド変数が欲しくなった場合
すべての変数を書き換える作業をしないとダメなんですか?

public string Name{get;set;}

public void hoge()
{
  Name="hage"; ←こういうの全部 _name に書きかけなきゃならないの?
}

だったらやっぱり、最初からフィールド変数使った方が楽な気がするんだけど

150 :デフォルトの名無しさん:2010/03/05(金) 16:39:02
>>148
http://uproda.2ch-library.com/219724IPC/lib219724.png
雷マークがイベントハンドラの設定
右下の赤枠のマークを押すと画像の場合はFormのLoadイベントのイベントハンドラを
IDEが候補をだしてくれる

151 :デフォルトの名無しさん:2010/03/05(金) 16:41:24
>>149
別に内部だからってプロパティに代入しちゃダメな訳じゃないが?

152 :150:2010/03/05(金) 16:44:24
まだイベントハンドラが無い場合は作りたいイベントのところでダブルクリックすれば
勝手に作ってくれる

153 :デフォルトの名無しさん:2010/03/05(金) 16:50:33
内部も外部もプロパティで制御するのか・・・その方が便利か

154 :デフォルトの名無しさん:2010/03/05(金) 17:36:22
>>153
ちげーよw

155 :デフォルトの名無しさん:2010/03/05(金) 17:48:01
クラスについて教えてください。
(1)クラスを呼び出すとき、別スレッドにするには、どうしたらよいですか。

おなじ名前空間にあるクラスを呼び出しています。

クラス名 名前 = new クラス名();
名前.メソッド名();

で呼び出すときに、スレッドにするにはどうしたらよいですか?

(2)この処理って、終わったら、呼び出したクラスに関するいろいろはぜんぶ自動的にdisposeされるんですか?
それとも、
名前.Dispose();
と処理する必要があるのですか?

以上2点、よろしくお願いします。


156 :デフォルトの名無しさん:2010/03/05(金) 17:51:11
>>155
おれより賢そうだから>>149の質問ズバリ教えて

157 :デフォルトの名無しさん:2010/03/05(金) 17:55:03
>>156
いや、ぜんぜん賢くないし。
get/setなんて使ったことないです。
ごめんなさい。


158 :デフォルトの名無しさん:2010/03/05(金) 17:56:54
>>155
スレッドとクラスって関係ないし
Disposeなんて所詮そう言う名前のメソッドに過ぎないんだからusingもせずに勝手に呼ばれるとかないし

159 :デフォルトの名無しさん:2010/03/05(金) 17:57:24
はじめから
>public string Name{get;set;}
こんなのしなければいいだけ

160 :デフォルトの名無しさん:2010/03/05(金) 17:57:46
>>149
Nameプロパティをリファクタリングで_nameに名前変更
_nameプロパティの宣言をフィールドの宣言に変更
Nameプロパティを設けてgetとsetを書く

161 :デフォルトの名無しさん:2010/03/05(金) 18:06:35
>>159
・・・え?

162 :デフォルトの名無しさん:2010/03/05(金) 18:08:02
ん?

163 :デフォルトの名無しさん:2010/03/05(金) 18:15:43
>>160
いやいや、それだと外部からそのプロパティを参照しているところも
全部_nameになるじゃない・・・

164 :デフォルトの名無しさん:2010/03/05(金) 18:16:54
>>161
プログラマなんだから英数字や記号は半角にしか変換できないようにIMEセッティングすべき

165 :デフォルトの名無しさん:2010/03/05(金) 18:23:10
>>163
じゃあクラス内の文字列置換なんかですればいい


166 :デフォルトの名無しさん:2010/03/05(金) 18:41:50
public class StreamDataSet
{
  public string URL = "";
  public string Title = "";
}

List<StreamDataSet> SrcList=new List<StreamDataSet>();

StreamDataSet src=new StreamDataSet();
src="ww.google.ne.jp";

if("-同じURLが既に追加していなければ-")
  SrcList.Add(src);

if文の条件式にどのように書けばいいか迷ってます
この場合SrcListに同じURLがあるか探すにはForeachで
ひとつひとつ照らし合わすしかないですか?

List<string>だと.Findメソッドなどで簡単にできるけど
オブジェクトだった場合のやり方がわかりません
よろしくおねがいします

167 :デフォルトの名無しさん:2010/03/05(金) 18:48:04
>>155
[イベント ベースの非同期パターンを使用したマルチスレッド プログラミング]
ttp://msdn.microsoft.com/ja-jp/library/hkasytyf.aspx

[.NET ThreadPool の実行順序を制御する]
ttp://msdn.microsoft.com/ja-jp/magazine/dd419664.aspx

この辺を読むといい。本気で作るなら前者なんだが、おそらく挫折するw
次点のThreadPoolを利用する方法が簡単で、後者はその応用編

168 :デフォルトの名無しさん:2010/03/05(金) 18:56:50
>>166
一般には
if (!SrcList.Any(x => x.URL == src))
でも効率が悪いのでIComparer<T>を実装してBinarySearchを使うのがいいと思う

169 :デフォルトの名無しさん:2010/03/05(金) 19:05:10
>>168
srcは多分StreamDataSetだと思う
その次の、フィッシングサイトみたいなURLのあるコンパイルエラーになる行が気になるけどw

あと、効率考えるならDictionaryを使うことを検討した方がいいと思う

170 :デフォルトの名無しさん:2010/03/05(金) 19:16:00
>>166のケース限定であればListじゃなくてDictionary使うな。

171 :デフォルトの名無しさん:2010/03/05(金) 19:23:34
すいません。書き間違えてました。

× src="ww.google.ne.jp";
○ src.URL="ww.google.co.jp";

ID付きで追加削除したりするならはじめからDictionaryにしておくべきでしたね
使い勝手がいいからList<>を使っていたけど、データ構造はもうちょっと慎重にすべきでした
ありがとうございました

172 :デフォルトの名無しさん:2010/03/05(金) 21:01:03
>>158
?
(2)は自動的にDispose()はされないってことですか?
>>167
ありがとうございます。
挫折しました。
まだぜんぜん読めるレベルでありませんでした。


173 :デフォルトの名無しさん:2010/03/05(金) 21:07:54
されるかもしれないしされないかもしれない
それはクラスの実装次第
後処理が必ず必要になるようなクラスではGCされるときに自動的に後処理が行われるように
作ってあるはずだけど必ずしもそうだともかぎらない
でもそれはクラスを書いた奴が悪いのでそこまで考えても意味がない

174 :148:2010/03/05(金) 21:25:13
>>150さん
どうもありがとうございます。その方法でできました。。
助かった〜。ひさしぶりにプログラムやってみまして、
ウィンドウ右上の×印クリックしたときの挙動が違ったので
困っていました。

ちょっと所要で出かけていたので、お礼が遅くなりました。すみませんでした。
ありがとうございました。

175 :148:2010/03/05(金) 21:28:25
画像までキャプチャーしてアップしてくださり、どうもありがとうございました。

176 :デフォルトの名無しさん:2010/03/05(金) 21:41:51
(´・ω・`)

177 :デフォルトの名無しさん:2010/03/06(土) 00:46:59
よくデスクトップ右下あたりからにょきにょきっとバルーンが出てるけど
C#で作れますか?

178 :デフォルトの名無しさん:2010/03/06(土) 00:58:30
うん

179 :デフォルトの名無しさん:2010/03/06(土) 01:11:10
にょきにょき環を上手く出すにはC#ではどうすればいいですか、

180 :デフォルトの名無しさん:2010/03/06(土) 01:13:46
No results found for "にょきにょき環".
すまん、説明を頼む

181 :デフォルトの名無しさん:2010/03/06(土) 01:28:32
石塚英彦が大山のぶ代の物真似で「ニョキニョキリング!」って叫ぶ声が
聞こえた気がした。

182 :デフォルトの名無しさん:2010/03/06(土) 02:17:23
>>177
アラートウインドウ
ttp://youryella.wankuma.com/Library/ClassLibrary/AlertWindow.aspx

183 :148:2010/03/06(土) 02:48:38
>>177
君の「C#」「バルーン」というキーワードに咥えて「タスクトレイ」という3つを
スペースで区切ってグーグルで検索するとたくさん情報がでてくるよ(´・ω・`)

デスクトップの右下あたりをタスクトレイというんだよ(´・ω・`) 。

184 :デフォルトの名無しさん:2010/03/06(土) 02:51:41
豪鬼くんありがとう

185 :デフォルトの名無しさん:2010/03/06(土) 02:56:19
右下じゃないが?

186 :デフォルトの名無しさん:2010/03/06(土) 02:57:24
10年間、「タクストレイ」を「タスクレイ」と思ってた

187 :デフォルトの名無しさん:2010/03/06(土) 03:18:01
Windows 8 新機能

 タ ス ク R A Y

188 :デフォルトの名無しさん:2010/03/06(土) 03:55:47
>タスクトレイ
実はそんなものはない。


189 :デフォルトの名無しさん:2010/03/06(土) 04:06:53
正式名称は通知領域だって?
microsoft.comの中の人もうっかり使うぐらい普及してんだからそんな指摘はナンセンス

190 :デフォルトの名無しさん:2010/03/06(土) 04:24:44
タスクバーのプロパティのダイアログにははっきり通知領域と書いてあるんですがね。

191 :デフォルトの名無しさん:2010/03/06(土) 04:34:40
mono2.6.1をインストールしてTPLのParallel.Forを動かそうと思ったのですが。
monoVMで動かすとSystem.TypeLoadExceptionの例外を吐いて落ちます。
そこで"gmcs"でソースそのものをコンパイルしようとしたのですが
error CS0234: The type or namespace name `Tasks' does not exist in the namespace `System.Threading'.
といってきます。

しかし
ttp://www.go-mono.com/status/status.aspx?reference=4.0&profile=4.0&assembly=mscorlib
ここによればParallel.Forは(たぶん)実装済みとの話です。

なにか勘違いをしているのか?
もしくは手順をまちがえているのか、教えてください。

192 :デフォルトの名無しさん:2010/03/06(土) 04:45:09
そもそも.NET 4.0自体まだ製品はでてないのだが
Monoだって.NET4.0相当品はまだRCだろ精々

193 :デフォルトの名無しさん:2010/03/06(土) 08:07:25
>>191
手元にないから確認はできないがコンパイラはdmcsらしい。
gとかdとかどういう基準のネーミングなんだろ。
mcs   # C#1.0
gmcs  # C#2.0-3.0
smcs  # moonlight
dmcs  # C#4.0 preview



194 :デフォルトの名無しさん:2010/03/06(土) 09:36:07
にょきにょきってCravingExplorerのダウンロードが
終わったときにでるやつじゃなくて?
ただのバルーンなの?

195 :デフォルトの名無しさん:2010/03/06(土) 11:13:36
ローカル変数の名前をつけるとき、変数の型が int だったら n とか i とかつけちゃうような
場面で、string[] だったらなんて名前にする?

int n;
string[] ???;

慣用的な名前ってある?

具体的には、
var ??? = text.Split(new[]{'='},2);
var key = ???[0];
var value = ???[1];
みたいな場面で使いたいんだ。

196 :デフォルトの名無しさん:2010/03/06(土) 11:17:06
splitted

197 :デフォルトの名無しさん:2010/03/06(土) 11:19:06
pairとかtmpとかやっちゃうな

198 :デフォルトの名無しさん:2010/03/06(土) 11:20:53
Splitの戻り値はfieldsにしたりする

199 :デフォルトの名無しさん:2010/03/06(土) 11:22:41
parts

200 :デフォルトの名無しさん:2010/03/06(土) 11:23:31
s

201 :デフォルトの名無しさん:2010/03/06(土) 11:25:31
複数のstringだからss

202 :デフォルトの名無しさん:2010/03/06(土) 11:43:16
>>195
string[] って型だけでは、慣用はない。
用途・意図に基づいた名前付けないと。

自分はSplitの戻り値はtokensとか多用。


203 :デフォルトの名無しさん:2010/03/06(土) 11:45:01
tmpStringsかな。
変数名は書く人のポリシーみたいなのが出て面白いな。
俺はnとかiとかは絶対使わない派かな。

204 :デフォルトの名無しさん:2010/03/06(土) 12:14:06
tmpStringsならnやiと一緒じゃね

205 :デフォルトの名無しさん:2010/03/06(土) 12:20:39
一文字じゃなきゃいい、とか訳わかんないルールなんだろ?

206 :デフォルトの名無しさん:2010/03/06(土) 12:43:30
変数名に型情報入れるのはなしだなぁ。
n とか i よりよっぽど悪い。

207 :デフォルトの名無しさん:2010/03/06(土) 12:46:00
itemsとかやってしまうな

208 :デフォルトの名無しさん:2010/03/06(土) 12:52:17
>>204のネーミングはおいらは使わないが、
tmpStringsを型情報というのも賛同できないな

209 :デフォルトの名無しさん:2010/03/06(土) 13:33:28
つってもintだったらtmpIntsなんだろ

210 :デフォルトの名無しさん:2010/03/06(土) 13:42:34
Employee[]をemployeesと名付けることはあってもstringsはないな
漠然としすぎ

211 :デフォルトの名無しさん:2010/03/06(土) 13:46:43
Employee[] な変数に格納するのがほんとに漠然と従業員全員なら employees にするけど、
LINQ とかで条件絞るとまた別の名前にするしね。

漠然と strings はちょっと範囲広すぎると思う。

212 :デフォルトの名無しさん:2010/03/06(土) 13:53:18
単に末尾にsつけたんじゃ配列だかListだかDictionaryだかわからないから
lstとかdicとか頭につけてるが、これもハンガリアン的なアレなんだろうか

213 :デフォルトの名無しさん:2010/03/06(土) 13:58:11
>>212
ハンガリアンそのものでしょ。
今時そんなことやる人いるのか。

「型名」を「略号」で変数名に組み込むより、
「機能」を「明示的に」変数名に組み込む方がずっと合理的だとは思わないのかな。

214 :デフォルトの名無しさん:2010/03/06(土) 14:04:00
にょきにょきってか、もじゃもじゃだろ?
http://www.nhk.or.jp/professional/mogi_moja.html

215 :デフォルトの名無しさん:2010/03/06(土) 14:06:11
ローカル変数のうちでも狭い範囲でしか使わないような変数の名前なのだから
機能うんぬんもちがうんじゃないかい。
配列だったら ar lst dm あたりを使ってるな。


216 :デフォルトの名無しさん:2010/03/06(土) 14:08:33
arrでいいだろ、どうでもいい

217 :デフォルトの名無しさん:2010/03/06(土) 14:13:00
>>215
なんなのその「なのだから」って。
幻聴持ちですか?w

218 :デフォルトの名無しさん:2010/03/06(土) 14:17:13
>>195 からの流れだろ?

219 :デフォルトの名無しさん:2010/03/06(土) 14:22:03
まああまり感情的になって煽りに走ったりせず
冷静に話しましょう

220 :デフォルトの名無しさん:2010/03/06(土) 14:32:34
自分だけかもしれないけど、形式的に名前付けちゃうと
スコープ広くして使いまわしたくなるんだよね
変数名自体よりもそのほうが問題

221 :デフォルトの名無しさん:2010/03/06(土) 14:32:54
>>195
単語帳みたいなイメージでwordsでつける

222 :195:2010/03/06(土) 14:33:11
トン。
慣用されてる名前はないのか。

じゃあ、>>225 が決めてくれ。

223 :デフォルトの名無しさん:2010/03/06(土) 14:44:23
そもそも、intだってiだのnだので必要十分な場面がそう多いとも思えんけど。
まして文字列なんてもっとそうだろう。

もしそんな場面があるなら普通にsでいいと思うけど。

224 :220:2010/03/06(土) 14:50:25
int nとかやると、あとでまたintの変数が欲しくなったときについ
新しい変数を宣言せずにnをそのまま使い回したくならない?
一文字変数がどうとかいうよりそういうのがコードを分かりづらくすると思うんだ
ループカウンタなんかはそもそも使いまわすわけがないのでiでも問題ないけど

225 :デフォルトの名無しさん:2010/03/06(土) 14:52:46
候補は出てるんだから自分で決めろ

226 :デフォルトの名無しさん:2010/03/06(土) 15:00:01
命令口調クンって馬鹿だな、まで読んだ。

227 :デフォルトの名無しさん:2010/03/06(土) 15:05:27
nとかiとかはさすがに使い捨て目的で、それを使いまわすってことは無いだろう

228 :191:2010/03/06(土) 16:02:42
>>193 コマンドのdmcsはおそらくなくなってます。gmcsだけに統一されたのかも?


229 :デフォルトの名無しさん:2010/03/06(土) 16:15:21
TPLってオープンソースじゃないんだな
DLRやMEFみたいにMS-PLで公開されてるのかと思ってた

230 :デフォルトの名無しさん:2010/03/06(土) 16:24:08
この辺じゃねーの
ttp://mono-project.com/Release_Notes_Mono_2.6
> ParallelFx
> To use this code you have to manually enable the .NET 4
> profile using the --with-profile4=yes switch at configure stage.

231 :デフォルトの名無しさん:2010/03/06(土) 17:02:30
(from x in items.AsParallel() where x.A < 3 select x.B).ForAll(x=>時間のかかる処理(x));
もう異次元すぎるな
こんなの書く日が来るんだろうか

232 :デフォルトの名無しさん:2010/03/06(土) 17:50:08
中途半端にクエリ式混ぜないで、全部メソッド形式で書く方がマシ。

233 :デフォルトの名無しさん:2010/03/06(土) 17:58:05
クエリは保守性が一気に落ちるからな。

234 :195:2010/03/06(土) 18:16:42
>>225 がきっとボケてくれると思って振ったのに、
ぼけてくれなくて残念。

ちょい補足。

ruby みたいに多重代入があれば、
key,value = text.Split(new[]{'='},2);
としたいところだが、それができないので一時変数名を決めないといかん。

そんな場合にどうするか。
自分は、ひとに見せる予定がないときは手を抜いて a (arrayの意)。
人に見せる予定があるときは、ary,tokens とかなんだけど、
ソースを読んだ人がわかりやすい名前があればそれに
しとこうと思って、皆に聞いてみました。

235 :デフォルトの名無しさん:2010/03/06(土) 19:12:28
最初の頃はフォームアプリで作成していたんだけど
簡単なプログラムの場合、コンソールで作った方が早いと気づいて
最近はまずコンソールアプリを作って、それを制御するフォームアプリを作るように
しているんですが、おかしいですか?

236 :デフォルトの名無しさん:2010/03/06(土) 19:14:32
うん

237 :デフォルトの名無しさん:2010/03/06(土) 19:18:12
>>235
好みの問題でしょ
VC#ならEEでもGUI作るのは簡単だし

VC++のネイティブとなるとエディションによってはいろいろ面倒だけど

238 :デフォルトの名無しさん:2010/03/06(土) 19:19:19
好みの問題じゃないよ。

239 :デフォルトの名無しさん:2010/03/06(土) 19:19:48
好み、つーか何をつくりたいかある程度明確にしてから作り始めるんじゃないのか、普通は。
途中で変更はあるにしろ。

240 :191:2010/03/06(土) 19:28:48
自己解決です。
SVNからビルドしたらできるようになりました。

241 :デフォルトの名無しさん:2010/03/06(土) 20:34:39
>>204-210
いやいや、>>195の例では何のワークかわからんし、テンポラリの文字列という意味でtmpStringだよ。
もっと何の用途にというのがわかれば、具体的な名前つけるけど。
俺からは>>196とか>>197のようなsplitで分割するからsplitted、keyとvalueのペアだからpairとか
そっちの方があり得ない。

まあ、俺が馬鹿という結論でいいよ、この手の論争は疲れるし。

242 :デフォルトの名無しさん:2010/03/06(土) 20:34:54
コンソールアプリとそれを制御するGUIフロントエンドの形態って
ロジックと外観の分離ができてるから良いかもね

243 :デフォルトの名無しさん:2010/03/06(土) 20:36:22
コンソールアプリっていきなりDOS窓が開かないようにできたっけ?

244 :デフォルトの名無しさん:2010/03/06(土) 20:38:21
子プロセスとして起動するならコンソールが開かないようにはできるな
ていうかDOS窓とかすでに郷愁を誘う言葉だ

245 :デフォルトの名無しさん:2010/03/06(土) 20:39:26
アプリ側では無理。

246 :デフォルトの名無しさん:2010/03/06(土) 20:43:01
データ処理側はローカルproxyのようなスタイルで分離して
テキストを投げてもらうとかもいいかもね

247 :デフォルトの名無しさん:2010/03/06(土) 20:45:02
なんでDOS窓が邪魔なら素直にクラスライブラリにしないのw
意味がわからんよ

248 :デフォルトの名無しさん:2010/03/06(土) 20:46:24
>>241
ばーかばーか

249 :デフォルトの名無しさん:2010/03/06(土) 20:48:40
>>247
まあやり方はいろいろあるからなんでもいいんじゃないの?
処理部分はC/C++で書いて・・・とかあるとDLLとして使うのもいいし
裏でサービスとして起動しておいて汎用的なアクセスにするでもいいし

250 :デフォルトの名無しさん:2010/03/06(土) 20:51:54
>>247
コンソールアプリはコンソールアプリで楽に自動化できるからあればいいじゃない
で、先にコンソールアプリがあるなら一々クラスライブラリ化するより
GUIアプリはコマンドライン用の文字列作ってコンソールアプリに丸投げした方が手っ取り早いじゃない

251 :デフォルトの名無しさん:2010/03/06(土) 20:54:56
ないわぁ

252 :デフォルトの名無しさん:2010/03/06(土) 21:00:00
ハンガリアンやめたのはMSの大失敗
一目で型が分かるアレは便利だった
ハンガリアンに批判的なのは低脳プログラマに多い

253 :デフォルトの名無しさん:2010/03/06(土) 21:05:38
プリミティブな変数は使わない方向なんだから
ハンガリアンはなくなって行く方向なのは間違いない

254 :デフォルトの名無しさん:2010/03/06(土) 21:07:30
プロセス間 I/F のひとつとしてコマンドライン‥‥実行ファイルへのコマンドラインパラメータ?で渡すのはアリじゃないかと。
単純なパラメータで済むなら楽と言えば楽だし。

255 :デフォルトの名無しさん:2010/03/06(土) 21:09:52
>>252
それを.netスレでいうのはかなり痛いぞ
.netで開発してると過去のみみっちい省略がアホくさく思える
タダ単に古参ギークが新参をバカにしたいだけにしか見えない

アセンブラからいろいろやってきてるが古いやり方で駄目な物は変えるべきだし
変わってる以上は受け入れるべき

こだわってるってことは新しいことについていけない昔を懐かしむだけの
老人に見える。

256 :デフォルトの名無しさん:2010/03/06(土) 21:20:32
>>254
普通にメソッド呼び出しできた方がずっと楽だと思いますがw

バッチファイルやWSHとか、.NET以外の言語からも弄れるようにしたいのならともかく、
.NETの世界で完結していいのならわざわざコンソールアプリにする意味ってあるのかしら。


>>255
どうせ釣りだろうにそうムキにならんでも....
ただ、クラス名にCを付ける習慣まで否定しなくてもよかったんじゃないのかなとは
個人的にはちょっと思う時がある。

そのくせなんでインターフェイスだけIでプリフィクス推奨なんだろう。

257 :デフォルトの名無しさん:2010/03/06(土) 22:04:16
IDEでの開発を前提として実用性を第一に考えた時に

インターフェースがIから始まってたらクラスの山の中からすぐ探せて便利。
クラスのPrefixがCだとタイプ数が1回増えるだけで意味ない。

てな結論に至ったんじゃない?

258 :デフォルトの名無しさん:2010/03/06(土) 22:05:21
>>256
>ただ、クラス名にCを付ける習慣まで否定しなくても
クラスの塊なのにC付けたらウザいだろ

259 :デフォルトの名無しさん:2010/03/06(土) 22:05:59
splitted
www



260 :デフォルトの名無しさん:2010/03/06(土) 22:12:38
>>256
だから選べる手段のひとつとしてだってばさ。w
プロセス分割の基準はいくつもあるだろ。

261 :デフォルトの名無しさん:2010/03/06(土) 22:18:48
> バッチファイルやWSHとか、.NET以外の言語からも弄れるようにしたいのならともかく、
そこ除く意味が分からない

262 :デフォルトの名無しさん:2010/03/06(土) 22:22:33
そもそもそんな話は出てなくて、Windows フォームアプリなのにコンソールで作り始める、
ってことだろ。

263 :デフォルトの名無しさん:2010/03/06(土) 22:29:23
この言語より手早くにフォームアプリ作れる言語ってある?
より簡潔な言語とデザイン画面での操作性にすぐれたもの
多分フリーだとこれ以上のものはないよね?

264 :デフォルトの名無しさん:2010/03/06(土) 22:30:41
>>263
フリーはないねえ

265 :デフォルトの名無しさん:2010/03/06(土) 22:35:33
VB

266 :デフォルトの名無しさん:2010/03/06(土) 22:37:17
タダじゃねーだろ

267 :デフォルトの名無しさん:2010/03/06(土) 22:37:48
あれこれやらないのであればAccessの方が簡単に出来るな。
フリーじゃ無いが。

268 :デフォルトの名無しさん:2010/03/06(土) 23:27:16
notifyIconについて質問です。

Windows XP以降のOSでアクティブでない通知アイコンが隠せるようになりましたが、
notifyIconをアクティブな状態にするにはShowBalloonTipしかないのでしょうか。

独自のフォームで通知を行い(メーラーやウィルスチェックソフトのように)
その際に通知アイコンを表示したいのです。




269 :デフォルトの名無しさん:2010/03/07(日) 00:19:08
これだけは言わせてくれ。
tmpString はないわ。

270 :デフォルトの名無しさん:2010/03/07(日) 00:34:01
意味不明だが、その独自のフォームの通知イベントのときにnotifyIcon.Visible = trueにすればいいだけの話ちゃうの?

Formにしろ、notifyIconにしろVisibleプロパティをtrueにすりゃ、アクティプになるだろう・・と思うんだけど

271 :デフォルトの名無しさん:2010/03/07(日) 00:45:54
2001のころからやっているけど
未だにまともなプログラミングができないおれ涙目

272 :デフォルトの名無しさん:2010/03/07(日) 00:47:47
文法からやりなおすんだ

273 :デフォルトの名無しさん:2010/03/07(日) 00:49:45
>>270
Windows 7で確認していますが、

Windowsの通知領域アイコンの設定が「通知のみ」になっているとバルーンを出したとき?にしか
表示されなくなるんです。
これを、バルーンを出さずに一時的に表示する方法がないかな、と。

Visibleの変更は試してみましたがだめでした。

274 :デフォルトの名無しさん:2010/03/07(日) 00:53:35
独学だとつらいだろうね。
いろんなプロジェクトに参加していいところを吸収できれば短期間でもすくすくと成長できる。

275 :デフォルトの名無しさん:2010/03/07(日) 01:07:44
フォームアプリ作る場合いつもProgram.cは手付かずなんだけど
このクラスって何に使うべき?

276 :デフォルトの名無しさん:2010/03/07(日) 01:10:43
例えば重複起動禁止処理とか

277 :デフォルトの名無しさん:2010/03/07(日) 01:11:07
コマンドライン引数の処理とか
二重起動を弾くとか

278 :デフォルトの名無しさん:2010/03/07(日) 01:14:20
while ( true )
{

279 :デフォルトの名無しさん:2010/03/07(日) 01:23:08
new Form1().Show();
}

280 :デフォルトの名無しさん:2010/03/07(日) 01:57:21
ブラクラかよw

281 :デフォルトの名無しさん:2010/03/07(日) 08:24:00
>>271
専ブラでも作れ
GUIの作り方からいろいろ学べるぞ

282 :デフォルトの名無しさん:2010/03/07(日) 09:14:39
.NET 1.1(C#)でFTPクライアントアプリの作成はどのように行えばよいですか?

283 :デフォルトの名無しさん:2010/03/07(日) 09:20:28
誰かライブラリ作ってないか探してみて見つからなかったらTCPを自分で喋る

284 :デフォルトの名無しさん:2010/03/07(日) 09:26:11
KBにあるからそれを使う。

285 :デフォルトの名無しさん:2010/03/07(日) 09:33:56
1.RFC読んでFTPを理解する。
2.System.Net.Sockets で実装する。
3.できあがり。

286 :デフォルトの名無しさん:2010/03/07(日) 10:18:58
wininetを使うのが一番簡単

287 :デフォルトの名無しさん:2010/03/07(日) 11:14:30
英語苦手だとクラスの名前考えるだけで苦労する

urlを与えるとhostとか細かく分解処理して管理するクラスだとなんて名前付ければいいだろうw

288 :デフォルトの名無しさん:2010/03/07(日) 11:19:41
System.Uriじゃだめなの?

289 :デフォルトの名無しさん:2010/03/07(日) 11:21:26
>>288
host+その他
以外もできましたっけ?

290 :デフォルトの名無しさん:2010/03/07(日) 11:25:09
以外が何を指してるのか分からんが取り敢えずメンバ一覧確認すれば

291 :デフォルトの名無しさん:2010/03/07(日) 11:38:53
http://[host]/[aaa]/[bbb]/・・・・
という感じでパスがあったとすれば

[host]
[bbb]

とかurlの一部だけを抜きだしたい場合の話ですね

正規表現かけて処理しないと対応できなかった記憶が・・・

292 :デフォルトの名無しさん:2010/03/07(日) 11:51:51
urlparse

293 :デフォルトの名無しさん:2010/03/07(日) 14:44:03
>>281
2ちゃん専ブラって自分用にいろいろカスタマイズしたいし
作ってみたいんだけど参考サイトがあんまりないんだよね
ツインテールの初期のソースとかあったら見てみたいんだけど
今のソースは規模が大きくてもう理解不能

294 :デフォルトの名無しさん:2010/03/07(日) 15:36:40
規模が小さければ理解できるんなら、時間さえあれば理解できるってことだ。

295 :デフォルトの名無しさん:2010/03/07(日) 16:33:03
>>243
コンソールアプリで作って、プロジェクトの出力の種類をWindowsアプリケーションにすればOK

296 :デフォルトの名無しさん:2010/03/07(日) 17:40:52
コードが時系列に並んでいないので
頭の中で実行プロセスをイメージしながら
ソースを見ていると混乱する

少し時間が経ってからクラスやメソッドを見ているとき
これがどのタイミングで実行されるかすぐにはイメージできない

ある動作をさせるとき多くの手段があり過ぎて迷う

297 :デフォルトの名無しさん:2010/03/07(日) 18:00:09
>>296
なんかダメグラマ具合が文章にも出てるね。
文章力とプログラミング能力って相関がありそうだもんなw

298 :デフォルトの名無しさん:2010/03/07(日) 18:11:46
論理性に長けてるかどうかだもんな。

299 :デフォルトの名無しさん:2010/03/07(日) 18:20:17
>>293
2ch専用ブラウザの作り方
http://pc12.2ch.net/test/read.cgi/tech/1180406037/400
この辺で最近新規にc#で作ってる人がいるみたいなんでこっちも覗いてみては?

300 :デフォルトの名無しさん:2010/03/07(日) 18:48:26
初心者が特にイベントドリブンで混乱するのはわかる気がする
処理が細切れになって頭の中でイメージしにくい

301 :デフォルトの名無しさん:2010/03/07(日) 19:17:15
イメージしにくいですね

302 :デフォルトの名無しさん:2010/03/07(日) 19:28:08
同じ処理が10回あれば10回記述する、とかじゃなきゃ
どんな言語だって多かれ少なかれそんなもんだろ

303 :デフォルトの名無しさん:2010/03/07(日) 19:30:44
それは、たぶん問題の取り違えだと思うよw
イベントドリブン「だから」混乱するんじゃない。
イベントドリブン「ですら」混乱するんだよ。

304 :デフォルトの名無しさん:2010/03/07(日) 19:52:33
大昔の割り込み処理もイベントドリブンといえるんだろうか

305 :デフォルトの名無しさん:2010/03/07(日) 19:57:48
>>304
まあいえるんじゃないの?
マウスが動いたら〜、サウンドボードのバッファーが空になったら〜

306 :デフォルトの名無しさん:2010/03/07(日) 20:50:17
割り込みは(普通は)応答時間を小さくするために使うものだから
目的は全然違うけどね。

っていうか、割り込み処理って別に大昔じゃないだろうw
マルチタスクOS上のアプリのコーディングでは使わないだけでしょ。

307 :デフォルトの名無しさん:2010/03/07(日) 20:52:55
逆に言うと普通のアプリの場合については大昔になるわけで

308 :デフォルトの名無しさん:2010/03/07(日) 20:55:40
何がどう「逆」なのか意味がわかりません。

309 :デフォルトの名無しさん:2010/03/07(日) 21:34:14
とあるテンプレート
<div>
 <h2>[VAR1]</h2>
 <p>[VAR2]<p>
<div>
があるとして、
[VAR〜]に値を流しこんでいきたいのですが、
どんな方法がありますでしょうか。

テンプレートは、
- div:
 - h2: VAR1
 - p: VAR2
のようなYAMLでもJSONでもなんでもいいのですが、
とにかく、同じようなデータセット?をテンプレートに流し込みたいです


310 :デフォルトの名無しさん:2010/03/07(日) 21:36:00
Replace()

311 :デフォルトの名無しさん:2010/03/07(日) 21:49:22
データグリッドビューでカレントセルが変わったときに
private void dataGridView1_CurrentCellChanged(object sender, EventArgs e)
で処理してるんですけど、処理が終わるまでカーソルの移動がわかりません。
先にカーソルを移動させたいんですけど、どうしたらいいでしょうか。

312 :デフォルトの名無しさん:2010/03/07(日) 22:12:01
>>310
ありがとうございます。
なるほど、普通に置換すればいいのか。


連続で申し訳ないんですが、
フォルダのパスなどの定数ってどこに書くのが適切ですか?

313 :デフォルトの名無しさん:2010/03/07(日) 22:33:01
不変値なフォルダパスって一般的ではない気がする
アプリケーション構成ファイルとかに書かない?

314 :デフォルトの名無しさん:2010/03/07(日) 23:06:31
>>311
重い処理するならUIをブロックしないように非同期にする

315 :デフォルトの名無しさん:2010/03/07(日) 23:15:35
>>314
それしかないんですね・・・
ありがとうございます。

316 :デフォルトの名無しさん:2010/03/07(日) 23:37:28
>>315
おお

317 :デフォルトの名無しさん:2010/03/07(日) 23:48:31
(´・ω・`) ………あ!

318 :デフォルトの名無しさん:2010/03/08(月) 05:53:43
Foo f=new Foo();
f.Run();

Foo f=new Foo();
Thread t= new Thread(new ThreadStart(f.Run));
t.Start();
t.join();

はほぼ同じ動きをすると考えていいですよね?
後者にするとすごく遅くなるんですけど
これは余計なことやってるからだけなんでしょうか?

319 :デフォルトの名無しさん:2010/03/08(月) 08:26:13
5月とかまた先延ばしにしたな

320 :デフォルトの名無しさん:2010/03/08(月) 08:29:09
>>313
プロジェクトプロパティの
リソースや、設定っていうタブのことですか?

321 :デフォルトの名無しさん:2010/03/08(月) 11:19:46
すいません、この画像のフォームコントロールの名前がわかりません。
誰か教えてください。
よろしくお願いします。

http://www.dotup.org/uploda/www.dotup.org709383.jpg

322 :デフォルトの名無しさん:2010/03/08(月) 11:22:12
リストビューだろ。

323 :デフォルトの名無しさん:2010/03/08(月) 11:25:19
ありがとうございます!!

324 :デフォルトの名無しさん:2010/03/08(月) 12:14:15
>>320
そう 主に設定の方

325 :デフォルトの名無しさん:2010/03/08(月) 12:17:34
おれは app.config に出して、ConfigurationManager で読み出し、かな。

326 :デフォルトの名無しさん:2010/03/08(月) 15:04:56
>>324
あれってよくわからんが、自分でapp.configとかいう名前のファイル作って
そこに書きだすのとどう違うんだ?

327 :デフォルトの名無しさん:2010/03/08(月) 15:48:13
C#使っててPythonのが楽なときってある?
デスクトップアプリで

328 :デフォルトの名無しさん:2010/03/08(月) 15:52:05
>>326
色々あるけど機能としては
IDEが自動的に型指定されたプロパティとしてSettings.名前でアクセスできるラップクラスSettingsを用意してくれる
ユーザースコープの方はSettings.Default.Saveで簡単に保存できる
とか 自分もこういう基礎的な部分以外は使わんから詳しくないけど

アプリケーション設定でもapp.configを使うんだけど
普通直接app.configに値を埋め込む場合は普通configuration/appSettingsを使うのに対して
configuration/configSections/sectionGroupを使って別ツリーに書き出す

329 :デフォルトの名無しさん:2010/03/08(月) 17:40:09
Dictionaryのキーだけ保持したようなクラスありますか?

330 :デフォルトの名無しさん:2010/03/08(月) 17:46:39
HashSet<T>

331 :デフォルトの名無しさん:2010/03/08(月) 17:49:54
HashSet<T>がそれですか。
ありがとう。

332 :デフォルトの名無しさん:2010/03/08(月) 17:50:34
というか、集合(set)を実現したいというならちゃんとそう説明しないと、

Dictionary<TKey, TValue>.KeyCollection

とか答えちゃうぞ

333 :デフォルトの名無しさん:2010/03/08(月) 17:58:00
>>332
一般的な呼び方がわからなかったので329のように書きましたが
以降はそうさせてもらいます。

334 :デフォルトの名無しさん:2010/03/08(月) 20:11:54
ロギングについて質問です。
例外発生時にエラーログを出力したいのですが、
後で統計などを取るためにプログラムから読みやすい形を考えています。
ただし、バイナリはNGにしたいと思います。

独自のErrorクラスを作って、その配列をXmlSerializerや
SoapFormatterでSerializeというのを考えたのですが、
こういう手法というのは一般的に見てどうでしょうか。

書き込むのにDeserialize→配列に追加→Serializeという手順になるので、
パフォーマンス上は不利だとは思いますが、
試しに3MB位までログ容量を増やしても体感上は遅延は感じませんでした。
本番運用では100KB以内で収まる程度だとは思います。

335 :デフォルトの名無しさん:2010/03/08(月) 20:13:02
専用のTraceSourceというクラスを使う
XMLにも出力できる

336 :デフォルトの名無しさん:2010/03/08(月) 20:15:52
>>327
ないね
かなり小さいコードでもインテリセンスに頼った方が早かったりする
スクリプト言語はコンパイルが不要なことに意義がある

337 :デフォルトの名無しさん:2010/03/08(月) 20:17:05
log4netとか使っちゃうな。

338 :デフォルトの名無しさん:2010/03/08(月) 20:37:42
sage

339 :334:2010/03/08(月) 20:39:59
>>335,337
ありがとうございます。調べてみます。

340 :デフォルトの名無しさん:2010/03/09(火) 10:10:21
>>337
あれ結構便利だとは思うけど
やれる事が多いだけに設定がめんどくせぇ・・・
俺の中では設定ファイルの中身グチャグチャにされるイメージがでかいかな・・
今は必要な機能だけ持った独自のログ機能自作して使ってるわ

341 :デフォルトの名無しさん:2010/03/09(火) 12:45:06
bmpのファイルのロックを解除する方法を教えてください。
WPFでjpg画像を読み込んでいます。
BitmapImage bmp = new BitmapImage();
bmp.BeginInit();
bmp.UriSource = new Uri(fileName);
bmp.CacheOption = BitmapCacheOption.OnLoad;
bmp.EndInit();

これで、jpgが壊れているときに、
bmp.EndInit();
でエラーになります。
そこで、これ全体をtry-catchして、エラーが出たらDisposeしようと考えました。
catch{
bmp.Dispose();
Close();
}
としたのですが、bmpにはDispose()が見当たりません。
どうやってDisposeして終了したらよいでしょう?
WPF掲示板は初心者の質問には答えていただけないようなので、
こちらに来ました。
よろしくお願いします。


342 :デフォルトの名無しさん:2010/03/09(火) 12:46:49
最近この板でキモいC#信者が暴走してるから自重するように

343 :デフォルトの名無しさん:2010/03/09(火) 12:59:43
>>341
以前とあるソフト書いたときはこんな感じにしたな
FileStream fs = new FileStream(save,FileMode.Open);
b = new Bitmap(fs);
fs.Close();
fs.Dispose();

これだと自分でdiposeできるのでロックがかかったままにならない
どこかにこれはあったはず(@ITあたりにサンプルコードあったはず)

344 :デフォルトの名無しさん:2010/03/09(火) 13:03:42
>>343
それSystem.Drawingや、と
まあWPFでも同じ回避方法になるね
UriSourceじゃなくてStreamSourceを使う
ていうかこれはバグだなー

345 :デフォルトの名無しさん:2010/03/09(火) 13:04:37
>>341
StreamSource
考え方は>>343

346 :デフォルトの名無しさん:2010/03/09(火) 13:06:27
>>344
バグというか仕様というか仕様考慮漏れというか
GCをあてにする言語なんでこういう仕様も許容範囲かと
コード書く側でまったく対処できないなら問題だけどね

347 :デフォルトの名無しさん:2010/03/09(火) 13:10:12
>>343の補足
saveってのはこの前のロジックの都合でそうなってるだけで
fileNameとか自分の環境にあったのに書き換えてね

348 :デフォルトの名無しさん:2010/03/09(火) 13:13:34
>>346
いや、内部でStream作ってるんだからそれを例外時にCloseしないのは問題でしょ
「using使えよ」的な話
ストリームをCloseしたときに例外が出たって状況ではないんだから

349 :デフォルトの名無しさん:2010/03/09(火) 14:03:42
>みなさんありがとうございます。
が、下記のコードで、画像が表示されなくなりました。
読み込めていないようです。
どこがまずいでしょう?

BitmapImage bmp = new BitmapImage();
try{
//FileStream fs = new FileStream(fileName, FileMode.Open);
//bmp = new BitmapImage();
//fs.Close();
//fs.Dispose();
bmp.BeginInit();
//bmp.UriSource = new Uri(fileName);
bmp.StreamSource = new FileStream(fileName, FileMode.Open);
bmp.CacheOption = BitmapCacheOption.OnLoad;
bmp.StreamSource.Close();
bmp.StreamSource.Dispose();
bmp.EndInit();
}catch{
Close();
}


350 :デフォルトの名無しさん:2010/03/09(火) 14:07:09
EndInitする前にCloseしたらそりゃダメだろ…
あとCloseとかDisposeとかは明示的に呼ぶんじゃなくてusing構文で

351 :デフォルトの名無しさん:2010/03/09(火) 14:15:21
なんでusingという名前にしたんだろうな?まぎらわしい( ・ω・)y─┛〜〜

352 :デフォルトの名無しさん:2010/03/09(火) 14:20:25
正常な場合はCloseしちゃだめ。
基本的にオープンの状態を維持して読み直せるようにしないといけない。

353 :デフォルトの名無しさん:2010/03/09(火) 14:23:59
>>352
BitmapCacheOption.OnLoadの場合ロード時=EndInit時にデータを全部メモリにコピーしちゃうから
元Streamがどうなろうがしったこっちゃないよ

354 :デフォルトの名無しさん:2010/03/09(火) 14:25:28
その辺うまく使いこなせないならMemoryStreamで読み込みできるように
自分でメモリに上げちゃえばいいんじゃないの?

355 :デフォルトの名無しさん:2010/03/09(火) 14:54:55
>みなさんありがとうございます。
bmp.EndInit();
bmp.StreamSource.Close();
bmp.StreamSource.Dispose();
と順番を変更してうまくいきました。
ありがとうございました。


356 :デフォルトの名無しさん:2010/03/09(火) 15:15:28
配列に入っている値の符合をプラスから全部マイナスにしたいんだけど、簡単に出来る方法はないですか?
もちろんループをつかって全部−1を掛け算すればいいんだけど、ビット演算とかで簡単にできないかなーと思って

357 :デフォルトの名無しさん:2010/03/09(火) 15:17:21
ループが一番簡単だろ

358 :デフォルトの名無しさん:2010/03/09(火) 15:27:46
最近は2の補数とかやらないのか・・・

359 :デフォルトの名無しさん:2010/03/09(火) 15:29:03
それ以前に配列なんだからループ以外にどうしろと

360 :デフォルトの名無しさん:2010/03/09(火) 15:30:25
>>356
int32の場合だと-1かけるっていうのは0xFFFFFFFFをかけるってことだけど
素直に計算したほうがいいんじゃないの?

参考までに

1*-1は0x00000001*0xFFFFFFFF=0xFFFFFFFF
2*-1は0x00000002*0xFFFFFFFF=0xFFFFFFFE
以下略

余計なシフト演算するくらいなら掛け算したほうがいい気がする

361 :デフォルトの名無しさん:2010/03/09(火) 15:30:56
意地でもループを使わずなんとかするって方向ですか?

362 :デフォルトの名無しさん:2010/03/09(火) 15:46:54
うん、ループ怖いし

363 :デフォルトの名無しさん:2010/03/09(火) 15:51:38
>>362
じゃあ、再帰使え

364 :デフォルトの名無しさん:2010/03/09(火) 15:51:42
-1 をかけるって、実際にはループの中で a[i] = -a[i]; だろ。
これより高速な方法なんてある?

365 :デフォルトの名無しさん:2010/03/09(火) 15:54:32
x86だと命令を繰り返すための命令もあったけど
そういうのを除けばすでに言語はあまり関係ないよな・・・

366 :デフォルトの名無しさん:2010/03/09(火) 16:01:42
そんなもん数万回やってやっとms単位の差が分かる程度だろ。意味ない。

367 :デフォルトの名無しさん:2010/03/09(火) 16:16:50
どうしてもループしたくないならこういう感じで行けるんじゃないかな

int[] val = new int[10];
var tmp =
from n in val
select n * -1;

var minus = tmp.ToArray();

368 :デフォルトの名無しさん:2010/03/09(火) 16:18:30
それ結局ループしてね?

369 :デフォルトの名無しさん:2010/03/09(火) 16:19:48
だから言語は関係なくてループを書かないってのはできないんじゃね?といってる
再帰でやるほどでもないだろうし

370 :デフォルトの名無しさん:2010/03/09(火) 16:22:48
できんこたないだろ
a[0] = -a[0];
a[1] = -a[1];
・・・

さあ全部書くんだ

371 :デフォルトの名無しさん:2010/03/09(火) 16:24:50
手段のためなら目的は選ばない

372 :デフォルトの名無しさん:2010/03/09(火) 16:25:00
完全にネタ化してきたな

373 :デフォルトの名無しさん:2010/03/09(火) 16:29:22
>>372
まあネタだよね
釣りともいうかも

374 :デフォルトの名無しさん:2010/03/09(火) 16:36:21
SSEとかそういうの使えばループ無しで出来るんじゃね?

Cとかアセンブラの域になるが。

375 :デフォルトの名無しさん:2010/03/09(火) 16:40:37
無限ループって怖くね?

376 :デフォルトの名無しさん:2010/03/09(火) 16:54:25
えッ!?

377 :デフォルトの名無しさん:2010/03/09(火) 16:59:23
メッセージループは無限ループだから怖い

378 :デフォルトの名無しさん:2010/03/09(火) 17:18:06
まぁその程度の事で難しく考えるより
単純でミスがないような後々わかりやすいコードのが大事だろ

379 :デフォルトの名無しさん:2010/03/09(火) 18:05:45
>>349
今更だけど、FileStream.Close()ってDispose呼ぶだけだから、
CloseとDisposeの両方を呼ぶ必要はなく、片方1つで十分のはず。

380 :デフォルトの名無しさん:2010/03/09(火) 18:16:11
>>379
MSDNには「Disposeのtrueと同じ」って書いてあったから
ちょっと違うのかもと思ってた

381 :デフォルトの名無しさん:2010/03/09(火) 18:25:00
>>380
Dispose()はDispose(true)をよんでいる。

382 :デフォルトの名無しさん:2010/03/09(火) 18:59:18
Stream系は全部using使わないと開放漏れが気になっちゃう

383 :デフォルトの名無しさん:2010/03/09(火) 21:11:15
解放漏れよりも更新されなくて嵌まることがある

384 :デフォルトの名無しさん:2010/03/09(火) 21:49:10
そーいえば、SmtpClient と MailMessage で添付ファイル付きのメールを送ったときに、
添付ファイルとしていたローカルファイルを削除できなくて悩んだことがあったな。w

この時初めて Dispose の重要性を実感した。

385 :デフォルトの名無しさん:2010/03/09(火) 22:21:55
マネージDllに記述したメソッドの説明などに使う///コメントが、Dllを使うプロジェクトで参照できません。
どうやったら参照できるようになりますか。

386 :デフォルトの名無しさん:2010/03/09(火) 22:25:03
プロジェクトのプロパティ→ビルド→XMLドキュメントファイル
プロジェクト参照じゃなくてdllをそのまま配布する場合は必ず生成されたxmlファイルも一緒に

387 :デフォルトの名無しさん:2010/03/09(火) 23:32:07
XmlSerializerを使ってDeserializeするクラスの中に配列があった場合はうまくいかないのかな?

388 :387:2010/03/09(火) 23:47:58
自己解決しました・・・

389 :デフォルトの名無しさん:2010/03/10(水) 00:07:21
死ね

390 :デフォルトの名無しさん:2010/03/10(水) 00:15:45
どうやって解決したか書かない子はほんと自決して欲しい

391 :デフォルトの名無しさん:2010/03/10(水) 00:18:27
>>390
いやです

392 :デフォルトの名無しさん:2010/03/10(水) 00:27:11
>>391
勝手に応えるなw

>>390
ケアレスミスでしたw

393 :デフォルトの名無しさん:2010/03/10(水) 00:28:53
>>392
いやです

394 :デフォルトの名無しさん:2010/03/10(水) 01:51:09
一度覚えたら忘れにくい言語ないですか?

395 :デフォルトの名無しさん:2010/03/10(水) 01:52:31
日本語

396 :デフォルトの名無しさん:2010/03/10(水) 02:05:49
listview.items[].subitems[].text
↑長い
↓こんな感じにできたらいいのに
listview.items[](str,str,str,str)

397 :デフォルトの名無しさん:2010/03/10(水) 02:07:27
>>396
っ 拡張メソッド

398 :デフォルトの名無しさん:2010/03/10(水) 13:43:09
IDisposableの正しい実装方法おしえてちょ

399 :デフォルトの名無しさん:2010/03/10(水) 15:02:56
string型をKeys列挙型に変換する書き方がわかりません。
下のような変換をするにはどのように書けばいいですか?

string "J" → Keys.J
string "Divide" → Keys.Divide
string "NumPad2" → Keys.NumPad2


400 :デフォルトの名無しさん:2010/03/10(水) 15:34:09
スレッドセーフについて教えてください

@private static List<string> sampleList = new List<string>();として
同じクラス内の以下のスレッドを同時に実行します
スレッド1はsampleListに要素を一つずつaddして追加
スレッド2もsampleListに要素を一つずつaddして追加
スレッド3はsampleListの先頭の要素を取得後、RemoveAt(0)で削除
この場合はSynchronizedは必要ですか?

Aprivate static int n1;として
2つの同時進行のスレッドからn1の値を変えたりする場合は
Interlockedが必要ですか?

Bprivate static int n1;として
スレッド1からはn1の値を変更するが、スレッド2からは参照するだけ
ならばInterlockedは必要ないですか?

よろしくお願いします

401 :デフォルトの名無しさん:2010/03/10(水) 15:35:43
>>399
(Keys)Enum.Parse(typeof(Keys), "NumPad2", false);

402 :デフォルトの名無しさん:2010/03/10(水) 15:46:53
書き換えてる途中に参照しようとしたらどうする?

403 :デフォルトの名無しさん:2010/03/10(水) 15:47:21
>>401
できました。ありがとうございます!
他にも色々使えそうなので更に勉強してきます。

404 :デフォルトの名無しさん:2010/03/10(水) 15:58:59
途中ってなんだよw

405 :400:2010/03/10(水) 16:05:14
>>402
ありがとうございます。
Bの場合もInterlockedしておいた方がいいという事ですね。。。

もう一つだけ教えてください。
http://msdn.microsoft.com/ja-jp/library/6sh2ey19(VS.80).aspx
スレッド セーフ
この型の public static (Visual Basic では Shared) メンバは、スレッド セーフです。
と記載せれているのですが、これはSynchronizedが必要ないという意味ですか?

406 :デフォルトの名無しさん:2010/03/10(水) 16:37:15
>>405
>この型の public static (Visual Basic では Shared) メンバは、スレッド セーフです。
>すべてのインスタンス メンバがスレッド セーフになるかどうかは保証されていません。
いらないよ
逆にCountプロパティとかその辺はセーフかどうかなんて保証されてないってこった

>コレクションが変更されない限り、List では、複数の読み込み操作が同時に発生しても問題ありません。
コレクションの列挙処理は、本質的にはスレッド セーフな処理ではありません。
まれに 1 つ以上の書き込みアクセスによって列挙処理で競合が発生する場合、確実にスレッド セーフにするには、列挙処理が完了するまでコレクションをロックします。
コレクションに対し複数のスレッドがアクセスして読み取りや書き込みを行うことができるようにするには、独自に同期化を実装する必要があります。

と書いてあるがこれ読めば参照時にもロックかけるべきかどうかは判断つくと思うんだけど



407 :400:2010/03/10(水) 17:01:26
>>406
ありがとうございます
まとめると、Listをスレッドセーフで使うには
・public static以外はSynchronizedが必要
・For EachやCountプロパティ等を使用する時はロックが必要
ということでいいのかな。
助かりました、サンクス。

408 :デフォルトの名無しさん:2010/03/10(水) 18:46:47
List<T>などのジェネリックコレクションにSynchronizedはない
常にロックが必要

409 :デフォルトの名無しさん:2010/03/10(水) 19:32:29
Form1のボタンを押すと、Form2のテキストボックスにテキストを移すのってどうすればいいですかね?
DOBONさんのTipsを見て

Form2 f = new Form2();
f.ShowDialog(this);
f.Dispose();

な感じでForm2をForm1に所有させてやってるんですが
他にやり方とかないでしょうか?

410 :デフォルトの名無しさん:2010/03/10(水) 19:39:31
>>409
クリップボードを中継する

411 :デフォルトの名無しさん:2010/03/10(水) 19:42:07
>>409
それでできるのに何が問題なのかが
重要なんだと思うが・・・・

412 :デフォルトの名無しさん:2010/03/10(水) 19:42:12
同じ説明をしたなあ
Form2にアクセス用の関数を作って公開する

413 :デフォルトの名無しさん:2010/03/10(水) 20:09:20
ボタンとテキストボックスは自分で配置してくれ
Form1.cs
http://codepad.org/8UBu8se8

Form2.cs
http://codepad.org/ErnDt7Yc

414 :デフォルトの名無しさん:2010/03/10(水) 20:39:55
>>409
テキストボックスのModifiersプロパティをPublicにする

415 :デフォルトの名無しさん:2010/03/10(水) 22:13:29
>>409
状況が分からないのでどういう方法が適切か何ともいえないけど、
Form1とForm2の間に相互に依存関係を持たせたくないのなら、
第三の仲介者役のオブジェクトを間に入れる。

単に依存関係を逆転させたい(Form1はForm2を知るべきでないが、Form2はForm1を知っててもいい)
だけなら、イベントを使ってもいい。

(1) Form1はボタンがクリックされたらテキスト伝達のためのイベント(仮にTransmitTextイベントとする)を発生させるようにする

(2) Form2がForm1の参照を持つ

(3) Form2にForm1のTransmitTextイベントのイベントハンドラを書いて、その中でTextBoxを更新する。

こんな感じ。

416 :409:2010/03/10(水) 22:23:46
Form同士で受け渡しがしたかった理由は
Form1からForm1所有でForm2とForm3を出した際に

Form2の情報をForm3で取得したいときに所有しているのはForm1なので
受け渡しが出来ないのでどうすればいいのか?と考えていました。

417 :デフォルトの名無しさん:2010/03/10(水) 22:39:53
>>416
それは設計がおかしい
と普通の人は考える

418 :デフォルトの名無しさん:2010/03/10(水) 22:43:56
オブジェクト指向の世界は縦割りなんだよ
横の繋がりは必要としない
絶対的な権力を持つボスがすべてを操る

419 :デフォルトの名無しさん:2010/03/10(水) 22:48:05
もう全部static変数にすればいいよ
そんなレベルで頭捻ったって結果は同じだからとりあえず動けばいい
どこが悪いかはそのうちわかってくる

420 :デフォルトの名無しさん:2010/03/10(水) 23:02:07
最初はform2で処理したデータをform1で一旦取得してから
form3に渡すのは不自然だったり、非効率的に思えるかもしれないが
両方のformで利用するデータはform1で管理したほうが
実は安全で効率的なのだ

もしform3がform2とのやり取りだけしかしないなら
form2の子としてform3を宣言すべき

421 :デフォルトの名無しさん:2010/03/10(水) 23:10:58
それならForm1にも直接データは持たせないべきだろ
データを保持するクラスを別に作って持ちまわる形にする

422 :デフォルトの名無しさん:2010/03/10(水) 23:12:54
MVCしろよ

423 :409:2010/03/10(水) 23:24:17
みなさんありがとうございます。
参考にしてC#をちょっとずつやろうと思います。

424 :デフォルトの名無しさん:2010/03/10(水) 23:57:04
>>423
まあ、Formの本来の役割は入力と表示だってことは理解した方がいいよ。

つまりFormの仕事は、ユーザーからの入力を何か別のオブジェクトに伝達したり、
別のオブジェクトからのデータを表示するのが仕事。

PCでいったらモニタやキーボードに相当する部分。
だからそんな部分同士がデータを直接やりとりするのは本来おかしい。

キーボードとモニタの間が配線でつながっててデータやりとりしたらおかしいでしょ?w

キーボードはPCに対して入力データを送るだけ。
モニタはPCからの信号を表示するだけ。

GUIのプログラムも基本同じような考え方で作るべきだ。
Form1はオブジェクトhogeにユーザから入力があったことを伝達するだけ。(ボタンClickイベントハンドラで
hogeの何かのメソッドを呼び出す)

Form2はhogeからの情報を表示するだけ。(hogeからのイベントでTextBoxを更新する)

一見面倒だけどこれが結局シンプルで標準的なやり方。

425 :409:2010/03/11(木) 00:01:00
>>424
なるほど。
もう一度入門書などをちゃんと読みなおしてみます^^;

426 :デフォルトの名無しさん:2010/03/11(木) 00:01:53
複数のFormから一つのオブジェクトにアクセスする方法がわからない

427 :デフォルトの名無しさん:2010/03/11(木) 00:03:26
>>426
アクセス用のクラスでも作ってそのインスタンスを教えておけばいいんじゃないの?
参照型の強みだよ

428 :デフォルトの名無しさん:2010/03/11(木) 01:11:10
>>400
BでInterlockedをどう使うわけ?
せいぜいvolatileじゃないか?



429 :デフォルトの名無しさん:2010/03/11(木) 01:15:08
>>400
Aだって値の更新をどういう風にやるかによる。
読み取りと書き込みを合わせてtアトミックにやりたいならInterlockedとかがいるが、
条件によってはただ書き込むだけでいいかもしれない。
もしくはvolatileにするくらいでいいかもしれない。

@は普通ロックが要るが、それはそれとしてListよりQueueの方が向いてないか?


430 :デフォルトの名無しさん:2010/03/11(木) 13:19:37
>>422
最近多い、GUIでプログラム作らせる初心者用入門書の弊害だと思う

431 :デフォルトの名無しさん:2010/03/11(木) 13:21:01
だってMSの旧来のコントロールだとコントロール自体がデータ持ってる場合が多いんだもんよォォォォォ

432 :デフォルトの名無しさん:2010/03/11(木) 13:22:50
WPFのバインドのようにできれば分けやすいんだけどな
あれできないと小規模な開発ならMVCの境目を考えるのあほらしくなるもん

大きくなればMVCしようかとも思えるけど

433 :デフォルトの名無しさん:2010/03/11(木) 18:20:00
リストボックスを表示中に上下キーを押すと選択中の項目が変わるが、文字を入力するとテキストボックスに文字が入力されるようにしたいんだが、その方法がわからない。
実現する方法があったら教えてほしい。

434 :デフォルトの名無しさん:2010/03/11(木) 18:47:57
>>433
つ[ComboBox]

435 :デフォルトの名無しさん:2010/03/11(木) 19:08:57
>>434
IDEでよくある入力補完を実装したいので、それはNG。

436 :デフォルトの名無しさん:2010/03/11(木) 19:11:30
入力アクションが何かしらんけど入力アクションを検知したらリストボックスの
一つの項目と同じサイズのテキストボックスを表示して制御をそこへ移して
そこから制御が離れたらテキストボックスの中の文字をリストボックスへ反映すればいいんじゃないの?

437 :デフォルトの名無しさん:2010/03/11(木) 19:35:38
>>436
つ http://netbeans.org/features/ide/editor_ja.html
こういう風にしたいので、その方法だとダメ。

438 :デフォルトの名無しさん:2010/03/11(木) 19:38:11
ああいいたいことわかったわ
リストボックスはあくまで候補の表示だけな

サジェストの候補表示とかをやりたいのか

アクティブにならないForm作ってそこへリストボックス張って候補だしゃいいだろう
半透明表示もできるぞ

439 :デフォルトの名無しさん:2010/03/11(木) 20:32:55
>>438
ためしにやってみたが、リストボックスにフォーカスを合わすと、インクリメンタルサーチができなくなって…エディットぼっくにフォーカスを合わせたままだと、リストボックスの選択項目をキーボードで操作できなくなって…となった。

フォームの初期化時
this.autocomplete_box.Visible = false;
this.Controls.Add(this.autocomplete_box);
文字を入力した
this.input_word += e.KeyChar;
int index = this.autocomplete_box.FindString(this.input_word.ToString());
if (index != ListBox.NoMatches)
{
Point current = this.GetPositionFromCharIndex(this.SelectionStart);
this.autocomplete_box.SelectedIndex = index;
this.autocomplete_box.Location = new Point(current.X, current.Y + this.Font.Height);
this.autocomplete_box.Visible = true;
}


440 :デフォルトの名無しさん:2010/03/11(木) 22:07:45
普通にテキストボックスをオートコンプリートにしたいわけではないんだよな?

Googleサジェストのような挙動ではなく、インテリセンスのような挙動にしたい
つまり、

・補完するのはテキスト全体ではなく、その一部(単語など)
・テキスト入力時には候補の絞込みは行わないで、選択項目のみを変更

ということに相違ないか?

441 :デフォルトの名無しさん:2010/03/11(木) 22:08:45
>>440
それで間違いない。

442 :デフォルトの名無しさん:2010/03/11(木) 22:33:59
それでは回答どうぞ

443 :デフォルトの名無しさん:2010/03/11(木) 22:52:42
なら、438で問題ないな

> リストボックスにフォーカスを合わすと、インクリメンタルサーチができなくなって…
リストボックスに、必要な全てのイベントハンドラを設定すればいい

例えば、

文字はそのままテキストボックスにスルー
上下は選択変更
左右はテキストボックスの方のカレット移動
Enterは確定(Tabも?)

とか自分で決めて適当に処理すればいい

444 :デフォルトの名無しさん:2010/03/11(木) 22:58:30
えらそうな質問者に対して、ちゃんと答えるなんてえらいやつだな。

445 :デフォルトの名無しさん:2010/03/11(木) 23:01:18
>>444
オレも思ったw

446 :デフォルトの名無しさん:2010/03/11(木) 23:44:43
>>443
なるほど。
そうすればいいのか。
答えてくれてありがとう。

447 :デフォルトの名無しさん:2010/03/12(金) 03:59:56
ComboBoxのテキスト部分をユーザーからの書き込みをできないようにするには
DropDownStyleプロパティをDropDownListにするといいというのでやってみたところ
たしかにユーザーからの書き込みはできなくなりましたがComboBoxの見た目がTextBox調からButton調になり
Textプロパティをプログラム内部でも書き換えられなくなりました
しかし「DropDownListにするといい」と見つけたいくつかのサイトではそのようになってる様子は見られません
これはVisual C# 2008の仕様か何かなのでしょうか?

448 :デフォルトの名無しさん:2010/03/12(金) 05:05:54
何も言えなくて・・・夏

449 :デフォルトの名無しさん:2010/03/12(金) 05:09:03
そういうやり方じゃなくてユーザーからのテキスト入力イベントが
発生したときに、入力を受付なくさせるメソッドか何かがあったはず
忘れた

450 :デフォルトの名無しさん:2010/03/12(金) 11:03:32
C++と比べるとC#は何がダメなんでしょうか?
GCがあったり色々便利な機能が付いてると思うのですが、ずいぶん叩かれてる印象を受けます
TRUEが1じゃなかったりするのが、あまり好かれないとかそんな感じでしょうか?

451 :デフォルトの名無しさん:2010/03/12(金) 11:07:26
>>450
アンチが多いのは人気の裏返しだよ。
ほんとに悲惨なのはユーザーからの無反応。

TRUE が 1 じゃないとか、たたくポイントじゃないというか、
むしろ TRUE が 1 な方がたたくポイントだろ。

452 :デフォルトの名無しさん:2010/03/12(金) 11:10:06
>>451
ありがとうございます。C#使いたくなってきました
TRUE=1等の暗黙の型変換は悪い意味での慣れでしょうか、
個人的にはちょっと残念なのです

453 :デフォルトの名無しさん:2010/03/12(金) 11:13:22
別に言語ごとのプログラミングパラダイムに従うことは悪いことじゃないよ
C#に使うならC#の作法に従うべきではあるが
これは逆も然り

454 :デフォルトの名無しさん:2010/03/12(金) 11:16:29
1番はC#がC++のスーパーセットだと思って使い始めて落胆するパターンな。
さすがに最近は減ったけど。

455 :デフォルトの名無しさん:2010/03/12(金) 11:29:47
C#実際そんなに叩かれてない
見向きもされてない所がある
あまりに注目されてない不運な言語だ

456 :デフォルトの名無しさん:2010/03/12(金) 11:32:37
ネイティブコンパイルされないのが唯一の欠点だろう。
あとは完璧

457 :デフォルトの名無しさん:2010/03/12(金) 11:33:56
C#はいいとこ取りっていうか中途半端な感じだな
でもC#覚えれば、他の言語にも馴染みやすいと思うし
初心者向きな言語だと思う
すくなくともVB覚えるよりはいい

458 :デフォルトの名無しさん:2010/03/12(金) 11:42:06
そこそこのことするならそこそこのことが出来るC#が「完璧」だろうが、
難しいことするなら難しいことができないC#が「中途半端」になる
見方次第だな

459 :デフォルトの名無しさん:2010/03/12(金) 11:52:08
.net対応のマイコンも出たしもう完璧だろう

460 :デフォルトの名無しさん:2010/03/12(金) 11:56:59
>>459
なんか興味ある 詳しく

461 :デフォルトの名無しさん:2010/03/12(金) 12:04:26
C# 5.0でコンパイラ、メタプログラミング関係整備されて完璧。

462 :デフォルトの名無しさん:2010/03/12(金) 12:24:30
もう一度言うが、完璧。

463 :デフォルトの名無しさん:2010/03/12(金) 12:26:02
しつこいようだけど後もう一回だけ・・・完璧。

464 :デフォルトの名無しさん:2010/03/12(金) 12:29:46
完璧さが周知されてない所がたまに暇。

465 :デフォルトの名無しさん:2010/03/12(金) 12:36:04
>>460
.NETベースのマイクロコントローラー、FEZ Mini
http://jp.makezine.com/blog/2010/03/hands-on_with_fez_mini_a_net-powere.html



466 :デフォルトの名無しさん:2010/03/12(金) 13:05:45
FALSEが0以外なら全力で叩くがTRUEが1以外って処理系によっては昔から普通にあるし
その程度で動かなくなるようなコードを書く方が悪い

467 :デフォルトの名無しさん:2010/03/12(金) 13:08:14
しかし最近はPythonに人気を取られがちのようだが
どうせ最速の言語じゃないんなら
コード記述が短くて、動的なほうが手軽というイメージ
smallbasic、Ironpythonでますます中途半端な存在になったな

468 :デフォルトの名無しさん:2010/03/12(金) 13:17:56
>>465
サンクス
おもしろそうだ!!!
おれもやってみてぇ

469 :デフォルトの名無しさん:2010/03/12(金) 13:42:31
人気ねぇw

470 :デフォルトの名無しさん:2010/03/12(金) 13:48:45
プログラム板の勢いみると
言語ではC#が一番あるけどな

471 :デフォルトの名無しさん:2010/03/12(金) 14:31:19
裾野だけは広いからな


472 :デフォルトの名無しさん:2010/03/12(金) 15:53:07
敷居は低いが仕事は少ない

473 :デフォルトの名無しさん:2010/03/12(金) 15:55:50
まだjavaなのか

474 :デフォルトの名無しさん:2010/03/12(金) 15:59:14
そろそろマ板でやれ

475 :デフォルトの名無しさん:2010/03/12(金) 17:34:50
using(StreamReader sr = new StreamReader(ws.GetResponseStream(), Encoding.GetEncoding("Shift-Jis"))) {
boardListHtml = sr.ReadToEnd();
sr.Close(); ←これいらないですよね?
}

476 :デフォルトの名無しさん:2010/03/12(金) 17:39:58
うん

477 :デフォルトの名無しさん:2010/03/12(金) 17:48:33
>>472
君は・・・世界が狭いようだな

478 :デフォルトの名無しさん:2010/03/12(金) 17:54:40
>>477
一般庶民の話をしてるんだよ

479 :デフォルトの名無しさん:2010/03/12(金) 20:28:17
C#はヴィジュアルスタジオ使うと
WindowsFormアプリケーションってやると
とっぱじめ最初にFormを継承したForm1が出てきて
それにボタンを貼り付けて、「はじめてのC#」とかいうメッセージボックスを出す

これだけのプログラムでも継承、カプセル、ポリモーフといったオブジェクト指向を使ってるな
初心が意識せずにオブジェクト指向できるようになってる言語?

480 :デフォルトの名無しさん:2010/03/12(金) 20:31:33
日本語でOK

481 :デフォルトの名無しさん:2010/03/12(金) 20:32:05
デザイナが勝手にやってるだけで全く使ってないだろ

482 :デフォルトの名無しさん:2010/03/12(金) 20:32:30
むしろ日本語がNGの人

483 :デフォルトの名無しさん:2010/03/12(金) 20:36:51
Visibleのtruefalseかちかちやるだけでメモリ食うのはなんで?

484 :デフォルトの名無しさん:2010/03/12(金) 20:39:35
どうして「メモリ食う」と分かる?
その観測方法がオカシイ可能性は疑ってみた?

485 :デフォルトの名無しさん:2010/03/12(金) 20:49:48
visual studioでbutton1とlabel1と↓作って
private void button1_Click(object sender, EventArgs e)
{
if (label1.Visible == true)
{
label1.Visible = false;
}
else
{
label1.Visible = true;
}
}
Windowsタスクマネージャ開きながらbutton1かちかち押すとメモリ使用量が増えるんだが

486 :デフォルトの名無しさん:2010/03/12(金) 21:04:03
再現できなかった。

487 :デフォルトの名無しさん:2010/03/12(金) 21:04:35
製作中のアプリの一部をクラスライブラリで分離する場合
完全に別プロジェクトでアプリプロジェクト->ライブラリプロジェクト(デバック)
の参照をつけてやったりするのかな?

488 :デフォルトの名無しさん:2010/03/12(金) 21:26:21
>>472
ばかだなぁ。なければ作ればいいじゃないか。
無知なお客さんを言いくるめるくらいワケないだろ。

‥‥ほんとうに生産効率はいいんだから。

489 :デフォルトの名無しさん:2010/03/12(金) 21:37:42
>>487
別プロジェクト以外ってことは、1つのプロジェクトでexeとdllの両方を出力とか?
普通の方法ではそんなことできないと思うけど

490 :デフォルトの名無しさん:2010/03/12(金) 21:54:08
普通はひとつのソリューションでやるわな。

491 :デフォルトの名無しさん:2010/03/12(金) 22:02:36
>>487
普通そうでしょ。
でもプロジェクト参照は循環参照不可だから、、
複雑なプログラムになってくると案外プロジェクトの切り分けが難しかったりする。

>>489
アセンブリが別とは言ってないんじゃない?

492 :487:2010/03/12(金) 22:26:45
>>491
最終的にアセンブリを一つにするかexeとdllに分けるかで
変わってくる感じですかね

493 :デフォルトの名無しさん:2010/03/12(金) 22:37:35
>>492
internalアクセス修飾を有効活用したいから、という、
人によってはちょっと不純に見えるかもしれない動機の場合もあったりする

494 :デフォルトの名無しさん:2010/03/13(土) 02:28:12
今独習C#を一通り読み終わって
C#でWEBアプリケーション作りたいのですがお勧めの本があれば教えてください
ttp://ascii.asciimw.jp/books/books/detail/978-4-7561-4999-2.shtml
上記URLのようなものはあるのですがどうも評判が悪いので・・・

また関連書籍にASP.NETが多いですが、ASP.NETの本≒WEBアプリケーションの本という認識であってますか?

495 :デフォルトの名無しさん:2010/03/13(土) 02:33:26
WEBアプリケーションって自分ブラウザとかじゃなくブラウザ上で動くプログラムということでOK?

496 :デフォルトの名無しさん:2010/03/13(土) 02:39:23
>>495
自分ブラウザです
IEやfirefoxの簡易版を作りたいです。

497 :デフォルトの名無しさん:2010/03/13(土) 02:42:44
それだったらc# WebBrowserでぐぐれば基本的なことは本買わなくてもできるよ

498 :デフォルトの名無しさん:2010/03/13(土) 03:25:09
>>496
それってデスクトップアプリというんだよ
WEBアプリはブラウザをクライアントとするものだから
まったく別物

499 :デフォルトの名無しさん:2010/03/13(土) 04:07:21
たとえば、何の前置きもなしに「WEB開発」って言われたら、
WEBアプリを作るって解釈しておk?
面接でそういう質問があったんだけど。

500 :デフォルトの名無しさん:2010/03/13(土) 04:23:41
>>499
そうだね
JAVA,javascrpt,HTTP,Perl,RCFの知識があるのかってことになる

501 :デフォルトの名無しさん:2010/03/13(土) 05:35:47
どこから突っ込めば

502 :デフォルトの名無しさん:2010/03/13(土) 05:52:56
WEB開発って面接官もへぼいな
WEBに関係することって
・クライアント(webブラウザー)そのもの
・クライアント上で動くスクリプトなど
・サーバー側
大きく分けてもこんな感じだしなあ
ものすごく範囲は広いよ
さすがに最近はhttpのプロトコル処理関連まで作るなんてのはないだろうけど

503 :デフォルトの名無しさん:2010/03/13(土) 06:13:25
その面接官は多分ホームページ作ったことあるか聞いてたんじゃないかな

504 :デフォルトの名無しさん:2010/03/13(土) 09:27:23
いいかげんスレチだけどwebってwwwの略なんだから
全てクライアント上で動作する物はwebアプリとは言わないだろ基本的に
その面接官もwebを理解してるのかあやしいがweb開発なんて言ったら
重箱の隅から隅まで含まれるぞ

505 :デフォルトの名無しさん:2010/03/13(土) 09:30:09
phpくらいしかできないよ

506 :デフォルトの名無しさん:2010/03/13(土) 09:57:46
十分だよ

507 :デフォルトの名無しさん:2010/03/13(土) 10:00:49
つまりズブの素人ってことだよ
言わせんな恥ずかしい(AA略

508 :デフォルトの名無しさん:2010/03/13(土) 11:18:40
こんなスレみるんじゃなかった・・・
ヤホーの知恵袋にでもいってくりゃよかった

なんかゴメン

509 :デフォルトの名無しさん:2010/03/13(土) 11:27:00
つうか、たまたまだろ
平日に仕事しながら見てるやつて結構とレベル高いと思うけど?

510 :デフォルトの名無しさん:2010/03/13(土) 11:34:33
日本語のレベルが低いですね

511 :デフォルトの名無しさん:2010/03/13(土) 11:37:26
ちっ、うっせーな

512 :デフォルトの名無しさん:2010/03/13(土) 11:38:33
うっ、ちっせーな

513 :デフォルトの名無しさん:2010/03/13(土) 11:43:30
ちっ、ちっせーな

514 :デフォルトの名無しさん:2010/03/13(土) 12:37:35
C#だとCの供用体みたいなのをつくるときって
unsafeつかわないと無理?

515 :デフォルトの名無しさん:2010/03/13(土) 12:40:49
StructLayoutとFieldOffsetだけで一応作れるけど
今時共用体とかないわー

516 :デフォルトの名無しさん:2010/03/13(土) 13:57:01
日本語のレベルが低いって、ふだんはC#で他人と会話しているのか?

517 :デフォルトの名無しさん:2010/03/13(土) 14:03:51
は?

518 :デフォルトの名無しさん:2010/03/13(土) 14:25:17
ここは普段他人とはなさずに一日中PCの前でプログラム組んでるオタが来る場所だから
日本語をまともに話せない人がいても仕方ない

519 :デフォルトの名無しさん:2010/03/13(土) 14:37:35
>>516
if (This.Seiyoku >= 95) {
 This.Hand.GetTimpo();
 for (int i = 0;i < 2000;i++) {
  This.Hand.Up();
  This.Hand.Down();
 }
 this.Say("あああああ───────");
}

520 :デフォルトの名無しさん:2010/03/13(土) 14:49:42
MessageBox.Show("ふぅ・・・");

521 :デフォルトの名無しさん:2010/03/13(土) 15:38:49
2000も要らんだろ。


522 :デフォルトの名無しさん:2010/03/13(土) 15:50:02
細胞が壊死するぞ。

523 :デフォルトの名無しさん:2010/03/13(土) 15:50:47
C#を猛プッシュしてるキチガイうぜー

524 :デフォルトの名無しさん:2010/03/13(土) 15:51:42
おまえらは4でじゅうぶん

525 :デフォルトの名無しさん:2010/03/13(土) 16:15:33
C#はWindowsのGUIアプリを作るっていう非常に限定された状況でのみ
CやC++より優秀

526 :デフォルトの名無しさん:2010/03/13(土) 16:18:48
あと初心者にはかなり使いやすい

527 :デフォルトの名無しさん:2010/03/13(土) 16:49:14
>>519
ウィルスコード確認しました

528 :デフォルトの名無しさん:2010/03/13(土) 17:07:20
>>526
それはC#のメリットというよりVC#環境限定の話だろ
最初にインテリセンス体験したとき開発者マジキチって思った

529 :デフォルトの名無しさん:2010/03/13(土) 17:14:36
スニペットのせいで構文覚えられない初心者が多発、という弊害がもれなく付いてくるけどなw

530 :デフォルトの名無しさん:2010/03/13(土) 17:15:01
ただの補完なら大概の言語で使えるけどね

531 :デフォルトの名無しさん:2010/03/13(土) 17:16:54
構文を覚える必要はない

532 :デフォルトの名無しさん:2010/03/13(土) 17:24:03
構文は自然と覚えるものだと思うが

533 :デフォルトの名無しさん:2010/03/13(土) 17:36:34
構文と言うよりも単語が覚えれないかな

534 :デフォルトの名無しさん:2010/03/13(土) 17:36:59
スニペットなんてただの初心者騙しの鬱陶しい機能にしか思えないけど、
あんなの活用してる人いるのか

っていうかPEZみたいな名前が気に入らん。
ラムネ菓子かっ

535 :デフォルトの名無しさん:2010/03/13(土) 17:44:48
>>534
PEZさんディスってんじゃねー

536 :デフォルトの名無しさん:2010/03/13(土) 17:46:51
楽できるなら楽したらいいと思う
いまさら a += 3 を a = a + 3 って書きたいひとはおらんじゃろ

537 :デフォルトの名無しさん:2010/03/13(土) 17:46:58
プロジェクト内だけのスニペットは便利だったりする

538 :デフォルトの名無しさん:2010/03/13(土) 17:53:09
>>536
おまえはおれを怒らせた

539 :デフォルトの名無しさん:2010/03/13(土) 18:19:07
昔はprop->のproperty作成とかやってたな。
private変数作ってから、crtl+r, ctrl+eのリファクタの方が便利だと知ってからは使わなくなった。

540 :デフォルトの名無しさん:2010/03/13(土) 20:33:49
よく入力するパターンは自分で定義して使ってるな

dw: Debug.WriteLine( );
eh: (_sender, _e) => { };

とか

541 :デフォルトの名無しさん:2010/03/13(土) 20:53:42
>>475
なにこのコード
なんでusing使ってるの?
俺がC#触ってない間になんかあったのか

542 :デフォルトの名無しさん:2010/03/13(土) 20:55:57
どれぐらい使ってなかったんだ

543 :デフォルトの名無しさん:2010/03/13(土) 20:59:54
IDisposable

544 :デフォルトの名無しさん:2010/03/13(土) 21:00:20
>>541
button1.Click += (sender, e) => MessageBox.Show("こんなのもできるよ");

545 :デフォルトの名無しさん:2010/03/13(土) 21:01:47
using構文はC#1.0当初からある構文だが
強いて言うなら>>541が触ってない間に>>541からC#の記憶が飛んだんじゃないか

546 :デフォルトの名無しさん:2010/03/13(土) 21:50:11
最初から知らなかっただけだろう


547 :デフォルトの名無しさん:2010/03/13(土) 22:00:41
2.0からだと思ってた俺

548 :デフォルトの名無しさん:2010/03/13(土) 22:03:58
>>512
(´;ω;`)

549 :デフォルトの名無しさん:2010/03/13(土) 22:10:03
2.0からだろ

550 :デフォルトの名無しさん:2010/03/13(土) 22:12:35
>>544
ラムダ士気って便利だよね。

551 :デフォルトの名無しさん:2010/03/13(土) 23:14:10
ちょっと教えてください
文字列が入ったリストデータをTreeViewに表示する場合

TreeViewを継承した自作クラスにリストデータを直接読み込んで表示するようなメソッドを作るべきか
TreeViewのNodesに追加する処理をForm1でするべきか

どちらがいいのでしょうか?

552 :デフォルトの名無しさん:2010/03/13(土) 23:17:31
その程度なら後者

553 :デフォルトの名無しさん:2010/03/13(土) 23:23:28
>>551
どっちでもいいんじゃね?
なんでもかんでもFormに書くのもあれだし継承してあれこれ作れるならそういう練習を兼ねて別途設計してもいいだろうし

554 :デフォルトの名無しさん:2010/03/13(土) 23:28:22
練習も兼ねて自作クラス作ってみようと思います
ありがとう

555 :デフォルトの名無しさん:2010/03/14(日) 01:10:52
うむ

556 :デフォルトの名無しさん:2010/03/14(日) 03:31:22
フォームアプリで処理内容を表示したいのですが
Form1の処理内容ならtextboxなどに表示すればいいですが
form1でインスタンス化したオブジェクト内部の処理内容を表示したい場合
どうすればいいでしょうか?

557 :デフォルトの名無しさん:2010/03/14(日) 03:54:06
オブジェクトに処理状況を返すメソッドを作って
Form1から非同期で動かして定期的に処理状況を調べる

558 :デフォルトの名無しさん:2010/03/14(日) 07:39:47
非同期・・・ちょっと難しそうですね・・・
諦めます

559 :デフォルトの名無しさん:2010/03/14(日) 09:42:11
なんでも試してみるもんさ

と、偉大なゲイは言いました

560 :デフォルトの名無しさん:2010/03/14(日) 11:00:47
もしくはそのオブジェクトに textbox なりを教えてあげて、
オブジェクト内部の処理が終わったら textbox に直に書き換えてさせてしまうとか。

他との兼ね合いがないなら、自分はそうする。

561 :デフォルトの名無しさん:2010/03/14(日) 11:01:51
BackgroungWorker使えばそこまでめんどくもないと思うんよ

562 :デフォルトの名無しさん:2010/03/14(日) 11:43:11
スレッドの扱いやすさ考えるとBW使うのめんどくさくてね・・・

563 :デフォルトの名無しさん:2010/03/14(日) 11:43:44
>>556
>>558のように言ってるって事は、恐らくその「オブジェクト」の処理は
UIと同じスレッドで動くってことなんだろうから、
それなら単純にその「オブジェクト」のクラスに〜Changed系のイベントを実装して、
Formの方はその〜Changedイベントで表示内容を更新すればいいんだよ。

それが面倒で、かつ更新するコントロールの数が少ないなら、
Formにタイマくっつけてタイマのイベントで表示内容を更新してもいい。

何か難しく考えすぎてないか?

564 :デフォルトの名無しさん:2010/03/14(日) 12:09:23
ですね

565 :デフォルトの名無しさん:2010/03/14(日) 12:45:49
>>563
>>560
なるほど、イベントは自前で作った事ないからやってみてもいいかも
簡単なのはtextboxの参照渡すのがいいですね

検討してみます
ありがとうございました

566 :デフォルトの名無しさん:2010/03/14(日) 12:59:28
なんか初心者が間違った知識を覚えるのをほっとくのも気が引けるんで一応突っ込むけど、

>簡単なのはtextboxの参照渡すのがいいですね
こういうやり方は普通は邪道とされている。
馬鹿だと思われたくなければやっちゃダメ。

これがダメな一番の理由はそんなことをしちゃうとそれぞれのクラスの
役割分担が明確じゃなくなるから。

TextBoxの更新を担当するのは、その持ち主であるFormであるべきだとは思わない?
他のオブジェクトがTextBox更新しちゃうのなら、Formの役割って一体何よ。

567 :デフォルトの名無しさん:2010/03/14(日) 14:08:52
それは設計によるとしか言いようがない。

568 :デフォルトの名無しさん:2010/03/14(日) 14:21:32
ただ機能的要件が果たせさえずればOK、と思いつくままにTextBoxの参照を
渡すような馬鹿で間抜けな行為を「設計」とは言わない。

569 :デフォルトの名無しさん:2010/03/14(日) 14:22:43
まぁそれをいっちゃうとMVCとかObserverとか面倒なので

570 :デフォルトの名無しさん:2010/03/14(日) 14:29:27
まあtextboxもクラスだからついついやりがちだけど所詮はGUI部品だからなあ
一番いいのはデリゲートだっけ?

571 :デフォルトの名無しさん:2010/03/14(日) 14:34:01
563の言うようにするかなあ
その処理オブジェクトは、進捗を公開するかしないかを決め、
GUIオブジェクトは、それを見るか見ないか自由にする

572 :デフォルトの名無しさん:2010/03/14(日) 14:50:30
前に別スレッドからメインのFormに貼ってあるtextboxにログを吐く方法を聞いたときに
作ったのならあるわ

Form1.cs
http://codepad.org/1Hh4f1Od

hoge.cs
http://codepad.org/qwrtJJFk

hoge.csは自分でクラスを作ってコード張ってくれ
Form1.csの方はtextboxをDock=Fillで張ってスクロールバーを表示しておけばいいか
あとshownで表示させてるのでイベントハンドラ追加してからコード貼ってくれ

573 :デフォルトの名無しさん:2010/03/14(日) 14:51:23
hogeクラスはスレッド起動部分を書いてないけど移植前の方では動いてるので問題ないと思う。

574 :デフォルトの名無しさん:2010/03/14(日) 15:06:30
PInvokeでもつかえば

575 :デフォルトの名無しさん:2010/03/14(日) 15:08:59
P無しで

576 :デフォルトの名無しさん:2010/03/14(日) 15:10:45
ほうピンボケを

577 :デフォルトの名無しさん:2010/03/14(日) 15:13:03
関数名をhogehogeにするつもりがhogehoeになってたw

hogehoeは本当はスレッド起動をさせる関数なんだけどその辺は端折ったw

578 :デフォルトの名無しさん:2010/03/14(日) 15:23:18
訂正版
http://codepad.org/9LRQpsMq

579 :デフォルトの名無しさん:2010/03/14(日) 15:56:25
http://codepad.org/xOdJsJie
こんな感じで遊んでたんだがApplication.DoEvents入れて経過を分かるようにすると
スレッドの動作が変わった感じなんだが何が変わったんだろう。

Application.DoEvents無し->適度に3スレッドの出力が混じる

Application.DoEvents有り->最初の一回だけ起動した順に結果がでるけど2回目以降は後で起動したスレッドだけ?やってる感じ

580 :デフォルトの名無しさん:2010/03/14(日) 15:58:05
100x3は多いので10x3に絞ってみた
Application.DoEvents有り
[ 0000 ] 0
[ 0001 ] 0
[ 0002 ] 0
[ 0002 ] 1
[ 0002 ] 2
[ 0002 ] 3
[ 0002 ] 4
[ 0002 ] 5
[ 0002 ] 6
[ 0002 ] 7
[ 0002 ] 8
[ 0002 ] 9
[ 0001 ] 1
[ 0001 ] 2
[ 0001 ] 3
[ 0001 ] 4
[ 0001 ] 5
[ 0001 ] 6
[ 0001 ] 7
[ 0001 ] 8
[ 0001 ] 9
[ 0000 ] 1
[ 0000 ] 2
[ 0000 ] 3
[ 0000 ] 4
[ 0000 ] 5
[ 0000 ] 6
[ 0000 ] 7
[ 0000 ] 8
[ 0000 ] 9

581 :デフォルトの名無しさん:2010/03/14(日) 17:43:05
あるインスタンスが同じクラスの別のインスタンスに影響を与えるのは悪いことですか?

582 :デフォルトの名無しさん:2010/03/14(日) 17:45:05
たとえば、Form1の中にButton1とButton2があったとして
Button1.Clickを、Button2のサイズとか名前とかを変える
みたいなイベントにしたら、Button1はButton2に影響を与えてるけど
これっていけないことなの?

インスタンスはすべて独立させたほうがいい
みたいなこと書いてたんだけど

583 :デフォルトの名無しさん:2010/03/14(日) 17:47:20
>>582
ケースによるんじゃない?

584 :デフォルトの名無しさん:2010/03/14(日) 17:57:33
そんなこと真面目に聞いてたら無効にしたボタンは二度と有効にできないな
どこでそんなこと言ってたのか興味あるから教えて欲しい

585 :デフォルトの名無しさん:2010/03/14(日) 18:05:47
Button を継承した Button1 のメソッドで Button2 をいじったらだめだろうけど
実際いじってるのは親の Form なんだから、 Button1 が Button2 に影響を
与えてるわけではない

586 :デフォルトの名無しさん:2010/03/14(日) 18:10:43
>>556の話はインスタンス化したオブジェクト内部なんで
関係としては>>572>>578>>579あたりのコードのような状態だからなあ

buttonが直接外の何かに影響するってことは標準ではなくて
イベントハンドラを登録して処理は別途書くよね

587 :デフォルトの名無しさん:2010/03/14(日) 18:12:54
「影響」というのがメソッド呼び出しの事をさしているのであれば、(それ以外にありえないと思うけど)
影響を与えるなというのはメソッド呼び出しするな、と同義になるわけで、
じゃあprivateなメソッドだけを持つ自律的なクラスだけでコードが書けるのかと。

まあ、要するに愚問過ぎるw

>>585
いや意味わからないしw

588 :デフォルトの名無しさん:2010/03/14(日) 18:48:37
はぁ〜い
ちゃぁ〜ん

589 :デフォルトの名無しさん:2010/03/14(日) 18:48:40
アプリ起動時にフォームとフォーム内のコントロールが
ちゃんと表示されてからプログラムが実行されるようにしたい
shownでもフォームが表示されただけでコントロールが
ちゃんと表示されない状態で実行されるのですが
なにか良い方法はないでしょうか?

590 :デフォルトの名無しさん:2010/03/14(日) 18:52:11
ない。

591 :デフォルトの名無しさん:2010/03/14(日) 18:54:39
Application.Idleが近いかねぇ

592 :デフォルトの名無しさん:2010/03/14(日) 18:54:51
ままっままま、まじっすか

593 :デフォルトの名無しさん:2010/03/14(日) 18:58:10
あるあるよ

594 :デフォルトの名無しさん:2010/03/14(日) 19:00:40
WebBrowserだとnavigatedイベントなんてあるけどそれと似たようなのって聞いたこと無いな

595 :デフォルトの名無しさん:2010/03/14(日) 19:03:10
普通はフォームが表示される前に
事前処理を終了させるのかな
他の言語でもこんな感じ?

596 :デフォルトの名無しさん:2010/03/14(日) 19:04:28
言語の問題じゃなくてWindowsの問題だと思うけどなw

597 :デフォルトの名無しさん:2010/03/14(日) 19:07:45
Formが表示されてからしばらく何か動くのであればshownのタイミングで
Form全体のコントロールを触れないようにして処理した後ユーザーが触れるようにするとか

ちなみにやり方に普通はないよ

ユーザーがフリーズしたんじゃないの?とか
表示されたので触っていいと思ったけどなんか触ったらおかしくなった・・・とか
そういうのを回避できてればいいと思うよ

598 :デフォルトの名無しさん:2010/03/14(日) 19:13:58
activateかなんかなかった

599 :デフォルトの名無しさん:2010/03/14(日) 19:20:26
shownだとユーザーがフリーズしたと思われそうだなー
loadイベントで処理する方がマシか

600 :デフォルトの名無しさん:2010/03/14(日) 19:23:43
うん

601 :デフォルトの名無しさん:2010/03/14(日) 19:28:16
>>599
Loadでやるにしてもスプラッシュウインドウでも出しておかないといらちにはあれだぜ

いらちをだますには適度なタイミングでちびちび変化を見せてあげるほうがいい

602 :デフォルトの名無しさん:2010/03/14(日) 19:29:39
ほとんどビョーキ

603 :デフォルトの名無しさん:2010/03/14(日) 19:31:25
>>602
病気だけどそんなのはいえないしねえw

604 :デフォルトの名無しさん:2010/03/14(日) 19:31:47
いやShownでちゃんと表示されてるはずだし。
でなきゃ"Shown"って名前が嘘になっちゃうし。
何がしたくて何を言ってるのかサッパリ意味がわからんな。

605 :デフォルトの名無しさん:2010/03/14(日) 19:34:57
>>604
FormのShownでしょ
確かに上に乗ってるコントロールはFormのコンストラクタでできてるので
問題はないけどshownの段階ではForm上にのってるコントロールのどれかが
何かしら動いてる?から今回の質問なわけでしょ・・

まあ自分のアプリの処理のタイミング調整でなんとかなりそうだけど

606 :デフォルトの名無しさん:2010/03/14(日) 19:38:41
>>605
ごめん真面目に何言ってるのか理解できん。
っていうか、それ>>589が言ってることと明らかに違わないか?w


607 :デフォルトの名無しさん:2010/03/14(日) 19:51:19
>>601
イラチのおれはスプラッシュウィンドウなんて表示しなければ
もっと起動早いだろって思う

608 :デフォルトの名無しさん:2010/03/14(日) 19:52:05
http://d.hatena.ne.jp/gsf_zero1/20100215/
これじゃね

609 :589:2010/03/14(日) 20:00:28
>>608
おお、まさしくこれだ
ありがとう

610 :デフォルトの名無しさん:2010/03/14(日) 20:01:35
え・・・そんな基本的な話だったの?

611 :デフォルトの名無しさん:2010/03/14(日) 20:08:12
>>608
ブログ主はなんか勘違いしてるな
Appliation.DoEvents()って、そんなもので自分のいってる問題が
本当に解決してると思ってるのかw

悪いけどおめでたすぎるわ。

612 :デフォルトの名無しさん:2010/03/14(日) 20:09:57
>>611
ではズバリ教えて

613 :589:2010/03/14(日) 20:13:33
Application.DoEvents()すげーー

ループ処理の中に記述しただけで
今までListViewが随時更新されずに、処理後結果が一気に表示されてたのに
リアルタイムで再描画してるーーー

これをあっちこっちに入れるとしあわせだな

614 :デフォルトの名無しさん:2010/03/14(日) 20:14:31
でもそれやると処理が遅くなるけどね

615 :デフォルトの名無しさん:2010/03/14(日) 20:18:38
>>612
OnShown()なりOnLoad()なりでApplication.Idleとかに紐付けするのが
正攻法だとは思う。

内緒だが、同じことを簡単にやる方法としてはthis.BeginInvoke()を使う、
なんて手もあったりする。

まあ、これってそもそも下らない問題意識だと個人的には思うけどね。

>>589
Application.DoEvents()なんか必要もないのに(必要な場面がそうあるとも思えんけど)
VB厨って言われるよ。

それはともかく、明らかに悪い作法だ。

616 :デフォルトの名無しさん:2010/03/14(日) 20:22:16
DoEventsはおかしな動作する元だからな

617 :デフォルトの名無しさん:2010/03/14(日) 20:22:44
DoEventsやるとメッセージ処理されるから順番が逆になったり弊害が出る

618 :589:2010/03/14(日) 20:24:43
え・・・

WEBからファイル落とすときにフリーズ状態になるので
Application.DoEvents()で描画更新されるようになったんだけど

本当は非同期でやるべきなんだおろうけど

619 :デフォルトの名無しさん:2010/03/14(日) 20:28:15
>>618
そう端的に言って努力の方向が間違ってるよ。

620 :デフォルトの名無しさん:2010/03/14(日) 20:31:19
WebからファイルってAsyncあるだろーが

621 :デフォルトの名無しさん:2010/03/14(日) 20:46:33
>SystemException は、ユーザープログラムで回復できる致命的ではないエラーが発生した場合に、共通言語ランタイムによってスローされます。

とのことだが、キャッチして回復しようとすると「CA1031汎用的な例外をキャッチすんな」って怒られるんですけどどうしろと
HAL9000もバグっちゃうよ

622 :デフォルトの名無しさん:2010/03/14(日) 21:01:25
ああ、もうSystemExcpetionとかApplicationExceptionとか過去の話だから

623 :デフォルトの名無しさん:2010/03/14(日) 21:05:39
俺の問題解決にはすべて非同期プログラミングの習得するか否かにかかってるとみた
私はあえてこの高度なアルゴリズムに挑むことにする
すべてはより高度なアプリを開発するために

624 :デフォルトの名無しさん:2010/03/14(日) 23:08:51
Console.WriteLine("{0}",intA)
この書式をtextBoxに表示するのに利用するにはどうすればいいですか?

625 :デフォルトの名無しさん:2010/03/14(日) 23:10:38
String.Formatとかどう?

626 :デフォルトの名無しさん:2010/03/14(日) 23:13:41
intA
これって文字通りintの変数?

だったら
textBox1.Text += intA.ToString();

とか

textBox1.AppendText(intA.ToString());

とか

数字の出力パターンを変えたい場合はintA.ToString("0000")
とかすればいいよ

この辺は調べて

627 :デフォルトの名無しさん:2010/03/14(日) 23:47:39
>>625
これこれ、こういうのがほしかった
ありがとう

628 :デフォルトの名無しさん:2010/03/15(月) 00:30:11
クラスが10個ぐらいになるともうわけわかめ
UML導入するか

629 :デフォルトの名無しさん:2010/03/15(月) 00:33:13
UMLでどうにかなる問題じゃないだろ
10個程度のクラスの相関を把握できないでどうするよ

630 :デフォルトの名無しさん:2010/03/15(月) 02:22:09
わけ分からない→じゃあUMLだ、という発想がイミフ。
これまでドキュメントとか無かった現場なんだろか。

631 :デフォルトの名無しさん:2010/03/15(月) 03:25:13
そうだよ

632 :デフォルトの名無しさん:2010/03/15(月) 03:27:51
ユーザーが数字ではなく文字を入力した場合のエラーの取得はこういう感じでいいのでしょうか?
それともUserInputクラス内ではtry文を使わないでProgramクラスだけでやったほうがいいんでしょうか?
 public class UserInput
 {
  public int Input()
  {
   int a = 0;

   try
   {
    a = Int32.Parse(Console.ReadLine());
   }
   catch (Exception e)
   {
    throw e;
   }

   return a;
  }
 }

633 :デフォルトの名無しさん:2010/03/15(月) 03:28:32
>>632の続き
 class Program
 {
  static void Main(string[] args)
  {
   UserInput ui = new UserInput();
   try
   {
    int b = 0;
    b = ui.Input();
   }
   catch (Exception e)
   {
    Console.WriteLine(e);
   }
  }
 }

634 :デフォルトの名無しさん:2010/03/15(月) 04:54:15
>>632
catch { throw; }

とか何がしたいんだか分からんw

635 :デフォルトの名無しさん:2010/03/15(月) 05:52:59
(゚∀゚)

636 :デフォルトの名無しさん:2010/03/15(月) 05:53:23
右から左に受け流したいんだろう

637 :デフォルトの名無しさん:2010/03/15(月) 06:49:17
左から右へ受け流すのはゆるさないからなw

638 :デフォルトの名無しさん:2010/03/15(月) 11:59:14
わざわざコケさせなくてもTryParseとかあるし

639 :デフォルトの名無しさん:2010/03/15(月) 12:10:41
例外ロンダリングだよ。

640 :デフォルトの名無しさん:2010/03/15(月) 13:41:01
入力された文字が数字だけかどうかって面倒なら
Convert.ToInt32(textBox1.Text)
とかやってtry catchで判断すればOKだよ

641 :デフォルトの名無しさん:2010/03/15(月) 13:58:55
try catchなんてするくらいならTryParseでいいだろ
って話だ

642 :デフォルトの名無しさん:2010/03/15(月) 14:14:23
TryCatchなんかでやってたらエラー時のスタック解析の時間とか入れたら劇遅になるじゃねぇか



643 :632:2010/03/15(月) 14:23:37
すいません、これは単純なモデルで表現したくてやったので
この場合だとTryParseを使ったりすればいいですが

本当に聞きたかったのは
ファイル入出力時のエラーや、WEB操作時のエラーや
オブジェクトがnullだったりなど、Formとは別のクラス内部のエラーが
あった場合に別クラスの内部で例外処理をするのか
Form上で例外処理をするのかがよくわからないんです
一般的にどういうやり方をするのか聞きたかったのですが
うまく説明できなくてすいません

644 :デフォルトの名無しさん:2010/03/15(月) 14:26:32
.net時代のエラー処理ってやつですかね?

C/C++時代だと暴走の元なのでポインターがnullかどうかチェックしたりとかやってたようなのをどうしてるのか?
ってところ?

645 :デフォルトの名無しさん:2010/03/15(月) 14:29:44
例外もみ潰しても続行できるなら内部で処理
できないなら外に投げる

646 :デフォルトの名無しさん:2010/03/15(月) 14:38:08
お前らって例に噛み付くよね。
例えばの話に本気になってどうするの。

647 :デフォルトの名無しさん:2010/03/15(月) 14:44:48
一事が万事という
小事に本気になれない奴がどうして大事に本気になれようか

648 :デフォルトの名無しさん:2010/03/15(月) 14:50:34
(^ω^;)

649 :632:2010/03/15(月) 15:05:46
>>644
多分そういう感じです

例えばフォーム上であるクラスのメソッドを呼び出して
nullが返ってくる場合もあるし、例外で投げられる可能性もあります

ResCollection thread_Honbun=bbs.ReadRes(url); ←例外がでる可能性

thread_honbunを利用 //←nullで例外がでる

なぜこういう質問するかというと
別クラス内部でいくら例外処理をしたところで
結局利用する側のformでやはり同じような例外処理を
しなければならないのでみなさんはどうしているのかと思いまして

650 :デフォルトの名無しさん:2010/03/15(月) 15:14:43
まずnullをなるべく返さない所から始めたらいいと思うよ。

651 :デフォルトの名無しさん:2010/03/15(月) 15:32:36
>>649
CodePlexで他人の書いたコード(なるべくメンバーの多い奴がいい)でも読んでみるといいよ
うんこ漏れそうなくらいtrycatch使いまくりだから

例外は昔の言語のnullチェックとエラー値チェックの代替機能なんだから
エラーチェックそのものをを省くための手段じゃないのよ
目的にしているのはエラーに対して画一的に対処できることね

例えばWin32APIにはnullを返すものもあれば、INVALID_HANDLE_VALUEを返すものもあるし
E_OK、E_SUCCESSなんてのを返すのもある
これら全部例外として括ってしまおうって趣旨だから

652 :デフォルトの名無しさん:2010/03/15(月) 15:37:53
うんこは漏れない。

653 :632:2010/03/15(月) 15:42:58
つまりちゃんとデータを返すかもしくはエラーを返すかの
2通りにするほうがいいということかな

確かに今のソースはnullかどうかをform側でも別クラスでも
条件分岐で何重にもやっている状態でしかもやってない場合もあったりと
かなりごちゃごちゃしてます
C#しかやったことないけど、自分は古いやり方をしていたということなのかな

他人のコード見て勉強してみます
どうもありがとう

654 :デフォルトの名無しさん:2010/03/15(月) 15:56:14
エラーコードを例外に置き換えるリファクタリングを思い出した

655 :デフォルトの名無しさん:2010/03/15(月) 16:02:52
この辺か

Replace Error Code with Exception
tp://www.refactoring.com/catalog/replaceErrorCodeWithException.html

Replace Exception with Test
tp://www.refactoring.com/catalog/replaceExceptionWithTest.html

656 :デフォルトの名無しさん:2010/03/15(月) 16:06:21
これはうんこ漏れるわ

657 :デフォルトの名無しさん:2010/03/15(月) 16:06:58
まあ続行しても意味がないようなところで出るエラーはtryで拾ってもいいんじゃねーの?とか思うけどな
コストがかかるとか言っても継続できねーんだからいいだろうと・・・

658 :デフォルトの名無しさん:2010/03/15(月) 16:30:09
テーブル 部
コード 名前
01   営業部
02   開発部

テーブル課
部コード 課コード 名前
01    01    第一営業
02    01    第一開発

テーブル社員
部 課  名前
01 01  山田太郎

といった データ構造で
社員をDataGridViewにデータバインドで表示する場合、
DataGridViewComboBoxColumを用いて課を表示することはできるでしょうか?
部テーブルは一意キーなので表示できますが
課テーブルは複数キーですので無理ですか?
型付データセットを使っているので、手動で余計なカラムを増やしたくなく、
リレーションをComboBox側のデータバインドでやってしまいたいっていう考えです。
どなたか回答お願いします。

659 :デフォルトの名無しさん:2010/03/15(月) 17:03:22
DBで取ってきてるなら
部と課をくっつけた一意な文字列のカラムも加工して取ってくるようにして、
課のキーではなくそれにバインドさせたら駄目だっけ?

660 :デフォルトの名無しさん:2010/03/15(月) 18:41:16
>>572
>>578
>>579
デリゲート使うと非常に便利ですね
参考にさせていただきます
ありがとうございました

661 :デフォルトの名無しさん:2010/03/15(月) 19:59:42
C#はプロパティがめっちゃ便利だな

変数に代入するのと同時に処理ができるってのはすばらしい
C言語だと同じようなことをどうやってたんだろうな。
Privateとかないからポインタを引数にとって参照私とかやってたんだろうか。

662 :デフォルトの名無しさん:2010/03/15(月) 20:04:52
C#を作った人物って
Delphiを作った人と同一人物なの?

663 :デフォルトの名無しさん:2010/03/15(月) 20:07:13
普通にgetter/setterじゃないのか
JavaやC++は今でもそうやってるだろ

664 :デフォルトの名無しさん:2010/03/15(月) 20:16:09
プロパティなんて無い言語のほうがおかしくて、
無いJava, C++, Perl, Rubyが同化してるとだけ言っておこう

C#との類似性がよく指摘されるVisual Basic, JavaScriptにはプロパティが存在する
あとPHPにもプロパティがある

665 :デフォルトの名無しさん:2010/03/15(月) 20:19:45
>>664
古い言語にそんなこといっても仕方ないと思うけどw

666 :デフォルトの名無しさん:2010/03/15(月) 20:43:28
>>662
たしかそう

667 :デフォルトの名無しさん:2010/03/15(月) 20:44:48
>>666
Rubyは新しいぞぞ

668 :デフォルトの名無しさん:2010/03/15(月) 20:50:30
Jeffrey Richterだったと思うけど、プロパティなんてイラネって意見の人もいるんだよね。
俺は同意できんけど

669 :デフォルトの名無しさん:2010/03/15(月) 20:54:02
リッチャーの本大量に持ってるのに・・・
捨てっかな

670 :デフォルトの名無しさん:2010/03/15(月) 20:56:23
でも結局は言語作ったおっさんの思想<多く使われる言語ってことなんだよな
>>664がプロパティ無いって言語は設計も古いし今となってはそれほど拡張もされてないような物だし

C#もそこそこ年数たったけどVBのよい部分は引き継いでるので似てても不思議ではないし

671 :デフォルトの名無しさん:2010/03/15(月) 21:00:10
>>662
アンダース・ヘルスバーグのことか?

672 :デフォルトの名無しさん:2010/03/15(月) 21:18:13
>>664
そういう歴史を無視した発言はゆとりだから?

673 :デフォルトの名無しさん:2010/03/15(月) 21:25:33
>>672
君の方じゃないの?歴史を無視してるの。
例えばBASICなんてCより古いんだけど。
それに、どの言語も日々仕様を拡張して進歩してる。

しかし、「ゆとり」みたいな無意味な言葉を平気で使える奴は例外なく馬鹿だな本当。

674 :デフォルトの名無しさん:2010/03/15(月) 21:31:45
またゆとりの逆ギレか。
「ゆとり世代」実は野心満々ってニュースでやってたなw 努力も勉強もしてない馬鹿なのにw

675 :デフォルトの名無しさん:2010/03/15(月) 21:37:00
         ,,-―--、
        |:::::::::::::;;;ノ  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
        |::::::::::( 」 < MSX-BASICにプロパティがないのはおかしい
        ノノノ ヽ_l   \______________
       ,,-┴―┴- 、    ∩_
     /,|┌-[]─┐| \  (  ノ
      / ヽ| |  ゆ  | '、/\ / /
     / `./| |  と  |  |\   /
     \ ヽ| l, り  |  |  \__/
     \ |  ̄ ̄ ̄   |
      ⊂|______|
       |l_l i l_l |
       |   ┬    |

676 :デフォルトの名無しさん:2010/03/15(月) 21:40:10
わるいけど多分君より年上だぞ。
ちなみに、「ゆとり教育」なんて臨教審前から始まってる。
臨教審っていつだか知ってる?
君が30代以下なら、君自身もその「ゆとり教育」にどっぷり使ってる世代なんだけど。
そんなことも知らないのな。

677 :デフォルトの名無しさん:2010/03/15(月) 21:44:43
ゆとりって言われてゆとり教育について語りだす
定番の行動だな

678 :デフォルトの名無しさん:2010/03/15(月) 21:46:04
>>676
最初に触ったマイコンは?

679 :デフォルトの名無しさん:2010/03/15(月) 21:46:22
恥ずかしいから消えて死ねです

680 :デフォルトの名無しさん:2010/03/15(月) 21:47:47
まあ初めにゆとりと口にして、ツッコまれるやつが一番マヌケなんだけどな

681 :デフォルトの名無しさん:2010/03/15(月) 21:50:07
         ,,-―--、
        |:::::::::::::;;;ノ  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
        |::::::::::( 」 < C言語にプロパティがないのはおかしい
        ノノノ ヽ_l   \______________
       ,,-┴―┴- 、    ∩_
     /,|┌-[]─┐| \  (  ノ
      / ヽ| |  高  | '、/\ / /
     / `./| |  齢  |  |\   /
     \ ヽ| l,  者  |  |  \__/
     \ |  ̄ ̄ ̄    |
      ⊂|__ ____|
       |l_l i l_l  |
       |   ┬     |

682 :デフォルトの名無しさん:2010/03/15(月) 21:50:20
馬鹿な奴って何でも自分中心に考えるのな。
「言われて」?
お馬鹿な手前の吐く言葉にそんな力があると思ってるのかおめでたいねw

ちなみに、>>673を書いた俺は>>664とは別人物なんだけどね。
だから「言われて」すらないんだけど。

ただ、知った風な馬鹿を見ると叩きたくなっちゃう性分なだけ。
木枯紋次郎だなw

683 :デフォルトの名無しさん:2010/03/15(月) 21:51:31
>>682
一々馬鹿の相手すんな馬鹿

684 :デフォルトの名無しさん:2010/03/15(月) 21:53:21
馬鹿に言われたよ

685 :663:2010/03/15(月) 22:01:51
俺はこんな流れにするつもりで発言したんじゃないのになー

686 :デフォルトの名無しさん:2010/03/15(月) 22:04:20
>>685
まあこういうネタはよく荒れるんだよw

ちなみにVC++はgetter/setterぽく書くための機能をMSが用意してるんだっけ?

687 :デフォルトの名無しさん:2010/03/15(月) 22:37:11
>>678
AMDのビットスライスam2900でマイコン開発

688 :デフォルトの名無しさん:2010/03/15(月) 22:47:00
たかがシンタクスシュガーで

689 :デフォルトの名無しさん:2010/03/15(月) 23:07:46
>>685
こんなくだらないことにいちいち突っかかってくるとか
プログラムを組むというのがいかにストレスがたまるかがよくわかるスレであった。

690 :デフォルトの名無しさん:2010/03/15(月) 23:50:48
最近、仕事中にやたら眠くなるのもストレスのせいに違いない。

691 :デフォルトの名無しさん:2010/03/16(火) 00:35:03
バカしかいない

692 :デフォルトの名無しさん:2010/03/16(火) 01:01:30
スニペットが表示されないのなぜかわかった
FileBox eXtenderって奴がwindowsメッセージに割り込んで
いろいろやってるせいだったわ

693 :デフォルトの名無しさん:2010/03/16(火) 01:09:39
と思ったら違うかった
GoogleIMEのせいだったわ

これないと文字打つの面倒なんだよなー
くそおおおお

どうせスニペット使わない機能ないんだろうけど
くそおおお

694 :デフォルトの名無しさん:2010/03/16(火) 01:11:27
GoogleIMEって相性があるソフトおおいな

695 :デフォルトの名無しさん:2010/03/16(火) 01:30:47
スニペットがIMEの機能を使っていて
GoogleIMEがその機能を殺すメッセージを
送ってるんだろうな
だから開いてもすぐ閉じる

696 :デフォルトの名無しさん:2010/03/16(火) 02:17:07
スニペットは英語版VSにもあるんだからIMEとは関係ないと思う

697 :デフォルトの名無しさん:2010/03/16(火) 02:17:33
>>608
これってLoadの動作が一番好ましいんだけど、ShownやShown+DoEventsのほうがいいと感じる人もいるの?

698 :デフォルトの名無しさん:2010/03/16(火) 02:30:14
メンドクサイから終わった話題を掘り返すなよ…

699 :デフォルトの名無しさん:2010/03/16(火) 02:35:07
結論 ちゃんと動けばなんでもいいよ。あと>>597

>ユーザーがフリーズしたんじゃないの?とか
>表示されたので触っていいと思ったけどなんか触ったらおかしくなった・・・とか
>そういうのを回避できてればいいと思うよ
これに尽きる

以上

700 :デフォルトの名無しさん:2010/03/16(火) 02:39:56
デリゲートわかんねええええええええええ

関数ポインタ?はあ?Cやってないんだからそんな説明されてもわかんねーよ
簡単なデリゲートの実装例が書かれているが
こんなの普通にメソッド直接呼び出した方が簡単だろってのばっかり
なんでこんなめんどくさい書き方をわざわざしなければならないのかの説明がどこにもない

あーーもーーわかんねーー

701 :デフォルトの名無しさん:2010/03/16(火) 02:42:55
デリゲートは普段使ってるじゃーか

button.Click += ・・・

とか

702 :デフォルトの名無しさん:2010/03/16(火) 02:43:37
あと>>660みろ
もろサンプルあるから

703 :デフォルトの名無しさん:2010/03/16(火) 02:49:13
最近じゃbutton.Click += も特に理由が無きゃラムダ式だな

704 :デフォルトの名無しさん:2010/03/16(火) 02:58:58
>>703
言語開発者ってなんでこんな省略の仕方好きなんだろう・・・

705 :デフォルトの名無しさん:2010/03/16(火) 02:59:45
だめだ見てもわからなねえええ
それぞれの構文が一体何をしているのか
どうしてそういう記述しているのか
さっぱりわからねえええ
おれのキャパシティはここまでか!

706 :デフォルトの名無しさん:2010/03/16(火) 03:00:57
ああアドレス忘れた
ここ見てたんだけどさ
http://ufcpp.net/study/csharp/sp3_lambda.html

707 :デフォルトの名無しさん:2010/03/16(火) 03:01:02
俺も「よくわかんないけどデリゲートにしないと動かないから使ってる」程度の認識だなぁ・・・

708 :デフォルトの名無しさん:2010/03/16(火) 03:07:03
form1の中にすべてぶち込んで完結するから気にしたことないな

709 :デフォルトの名無しさん:2010/03/16(火) 03:08:05
例えばどういう時にデリゲート使っているの?


イベントはわかる普段使っているし
クリックされるとここのメソッドが使われるんだろうなって
想像できるしわかりやすい

でも、if文の条件式に入れているデリゲートとか
ひとつのメソッド内でデリゲートでいくつかのメソッドを呼び出しているような
多態性?みたいな使い方しているのが実際のプログラミングで必要なのかよって感じ
ただ、二つの振る舞いをするメソッド書けばいいだけじゃない
x*y x+yの2通りできるからってなんだよって感じ

710 :デフォルトの名無しさん:2010/03/16(火) 03:08:14
以前ここかもう一個のスレで教えてもらったマウスホイールでIEの拡大縮小機能を呼び出すコードなんだけど
今これがラムダ式なんだと脳内一致したんだが

this.MouseWheel += new MouseEventHandler((s, e) =>
{
if (this.webBrowser1.Document == null) return;
r += e.Delta / 120 * 25;
object or = r;
object z = Type.Missing;
((SHDocVw.IWebBrowser2)this.webBrowser1.ActiveXInstance).ExecWB((SHDocVw.OLECMDID)OLECMDID_OPTICAL_ZOOM, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT, ref or, ref z);
});

わざわざ関数にしなくても書けるってのは分かる

711 :デフォルトの名無しさん:2010/03/16(火) 03:11:06
>>706
ぐぐって上位にあるサイトのデリゲート説明はすべて読んだ
でもさっぱりわからない
おおお!デリゲートってめちゃくちゃ便利じゃん
おれもデリゲート使おうという説得力が全然ない

712 :デフォルトの名無しさん:2010/03/16(火) 03:11:46
>>711
まあデリゲート使うような動きをするコード書かなきゃいらないかもね

713 :デフォルトの名無しさん:2010/03/16(火) 03:22:25
>>711
上位サイトのデリゲートの説明って端折りすぎなんだよな

そんなにコード量にならないはずなのになんでそんなコードで説明すんの?
それならxxしたほうがいいじゃんと思ってしまうような説明

714 :デフォルトの名無しさん:2010/03/16(火) 03:30:48
既存のデリゲート要求するメソッドで考えた方が分かりやすいと思うよ。
例えば正規表現置換とか。
static string Test(Match match) {
    return String.Format("U+{0:X4}", (int)match.Value[0]);
}
Debug.WriteLine(Regex.Replace("test", ".", new MatchEvaluator(Test)));
結果: U+0074U+0065U+0073U+0074
マッチした文字列をどう変換するかを、呼び出し側が好きにデリゲートで指定できるわけね。

ちなみにラムダ式使うとこう。
Debug.WriteLine(Regex.Replace("test", ".", match => String.Format("U+{0:X4}", (int)match.Value[0])));

715 :デフォルトの名無しさん:2010/03/16(火) 03:37:04
>>579のコードをデリゲート使わないでやるコード書いた
http://codepad.org/s8jnxIC2

分けるの面倒なんで上から
Form1.Designer.cs
Form1.cs
hoge.cs

hoge.csは自分でクラスを追加してくれ


やろうとしてることはあるスレッドがForm1のtextboxにログを吐くってやつなんだが
hoge.csの中でスレッドを立ててるけどtextboxのインスタンスを渡したのではこける

それを回避するためにログを吐きたくなったとき(ここ重要)に呼び出す関数を登録するようにしたのが
元の>>579

716 :デフォルトの名無しさん:2010/03/16(火) 03:48:56
>>714
そういう説明見てもifで分岐すればいいんじゃないの?って思うんだよ
例えばユーザーがタブブラウザみたいにタブを増やせる場合
なんか使えそうな気もするけどよくわからん

>>715
重い処理は別スレッドでという説明もあるけど
コントロールは操作できないんだよね
だからそういうときには使えるのかも
hogehogeばっかりでそこで何がしたいのかよくわからないけど
じっくり見させてもらうわサンクス

717 :デフォルトの名無しさん:2010/03/16(火) 03:50:31
>>716
とりあえずIDEに貼れw
色分けされて分かりやすくなるから
codepadってC#対応してないから色分けされないんだよな

718 :デフォルトの名無しさん:2010/03/16(火) 04:04:03
>>715
このコードは別スレッドのコントロールを使おうとしてエラーが出るだけど
デリゲートの有用性を説明するための意図的ものなんだよね?

719 :デフォルトの名無しさん:2010/03/16(火) 04:06:35
>>718
yes

コメントが近くに残ってるけどそれが元のコード

変更前が>>579

720 :デフォルトの名無しさん:2010/03/16(火) 04:09:01
なるほど、これはわかりやすい
こんな手間隙かけてあなたいいひとですね

721 :デフォルトの名無しさん:2010/03/16(火) 04:10:50
こういうさ、使いたくなるような実例がないとねー
文字の羅列から奇数を導き出すとか、
5以下の数字を見つけるとか
普通にやればいいじゃんって実例は役に立たないよな

722 :デフォルトの名無しさん:2010/03/16(火) 04:11:02
>>720
つーかまあぐぐって上位にでてくるサイトの管理人は頭がいいんだろうけど
頭がいいだけにこういうもうちょっとコード書けば分かりやすいのになあ・・・という
作業をやってなくて理解に悩むことが多いんだよね・・・

atなんとかってサイトのサンプルもひどかったし

723 :デフォルトの名無しさん:2010/03/16(火) 04:18:26
atなんとかのデリゲートのサンプルは本当にクソだったな。
あれ読んだせいで「デリゲートってすごくわかりにくいんだな。別に無理して使わなくていいか」と放置してたw

724 :デフォルトの名無しさん:2010/03/16(火) 04:21:13
おっと手がすべった
http://www.atmarkit.co.jp/fdotnet/csharp_abc/csharp_abc_017/csharp_abc01.html

確かに機能の説明としてはあってるが、それで・・?って感じ

725 :デフォルトの名無しさん:2010/03/16(火) 04:25:03
Hallo worldをインスタンスのメソッドを使ってデリゲートで呼び出して表示できますとかな
そんなの普通に直接メソッド呼び出せばいいだろってのばっかり

726 :デフォルトの名無しさん:2010/03/16(火) 05:26:18
>>725
へえ

727 :デフォルトの名無しさん:2010/03/16(火) 08:09:58
デリゲート使ったのはスレッド間のコントロール操作が初めてだった
そのときついでに匿名メソッドの使い方も覚えた
はっきり言って無理に使う必要のない機能ではあると思う


728 :デフォルトの名無しさん:2010/03/16(火) 08:24:22
取得結果の間に挟むパース処理の時とかよくデリゲート使うんだが。
あとは非同期処理のコールバックもデリゲート。
もうちょい設計を考えて組もうよ…。

729 :デフォルトの名無しさん:2010/03/16(火) 08:35:19
ソフト作るのなんて年に1回か2回だから忘れるんだよ

730 :デフォルトの名無しさん:2010/03/16(火) 08:39:22
>>729
俺は自分サンプルを調べたケースごとにおいておいてあるぞ
だから>>579を出せるんだが・・・

余計なことして寝ないで行かないと・・・
ラジオの解析なんてするんじゃなかったw

731 :デフォルトの名無しさん:2010/03/16(火) 08:51:31
ブログでやれ

732 :デフォルトの名無しさん:2010/03/16(火) 09:00:53
だからよぉ
例は例なんだよ
実際にそういうコードを使うかどうかは別として構文として覚えろってことで安易な内容で書いてんだろ
極端なことを言えば、たかがデリゲートの説明で数百行あるプロジェクト読まされたらたまんねえだろ
どういう用途で使うの?っていちいちうっせーんだよ
微分に文句垂れる文系高校生かお前は


733 :デフォルトの名無しさん:2010/03/16(火) 10:19:27
オブザーバーパタンやコールバックパタンを理解してる人向けの説明と、
それも初めてという人向けの説明は分けてしないといけないな。
前者の場合機能的な説明だけで済む。

734 :デフォルトの名無しさん:2010/03/16(火) 10:27:54
>>579
shownイベントのh.hogehogeの後に
同じようにforループ書いたら
shown内のforループが一方的に処理されるんだが・・

735 :デフォルトの名無しさん:2010/03/16(火) 10:32:26
デリゲート使わないと関数に関数を渡せない、で終了じゃないの?
渡す関数によって処理が変えられるから便利じゃん。

よくある用途としては、
非同期処理、オブザーバパターン(イベントハンドラetc)、コールバック処理(htmlをgetして
ゴニョゴニョする関数にコールバックを渡すことでそのゴニョゴニョ部分の処理を指定できるとか)、
あと上で出てたようにログ吐き関数を渡してその関数内でのログ処理の仕方を指定するとか、
引数チェックする関数を渡して引数チェックさせるとか、たくさんあるけど

736 :デフォルトの名無しさん:2010/03/16(火) 10:34:22
ブログでやれ

737 :デフォルトの名無しさん:2010/03/16(火) 10:34:33
何で必要なの厨はクラスのインスタンス渡せばいいじゃんと言い出すよ
だったらてめーアセンブラ使ってろカス
低機能で高機能賄えると思うなら使わなくていいっつの

738 :デフォルトの名無しさん:2010/03/16(火) 10:51:08
関数って言い方がわからない

739 :デフォルトの名無しさん:2010/03/16(火) 11:26:17
インターフェースを知っとけば、デリゲートはイラネ
すみません、違いがわかりません

740 :デフォルトの名無しさん:2010/03/16(火) 11:29:52
>>739
オブジェクト中心か、メソッド中心かの違いかな。
Javaの匿名クラスよりは、C# のラムダ式の方が書きやすいと思うけどなぁ。
あっ、あと、マルチキャストデリゲートなるものがある。

741 :デフォルトの名無しさん:2010/03/16(火) 11:35:47
Javaの匿名クラスも結局委譲パターンを普通のオブジェクト指向の文法で
サポートするのは煩雑だから追加された機能だしねぇ〜。
委譲のための特殊なサポートを言語に追加したことには変わりに無い。

742 :デフォルトの名無しさん:2010/03/16(火) 12:35:34
デリゲートと委譲は関係ないような
直訳すると委譲だけど

743 :デフォルトの名無しさん:2010/03/16(火) 14:38:32
必要性も感じないうちから勉強する必要はないよ。
Cでも関数ポインタ使わなくてもどんなソフトでも書けるだろ。

744 :デフォルトの名無しさん:2010/03/16(火) 15:05:40
理論上はアセンブラだけあればなんでも作れるもんな

745 :デフォルトの名無しさん:2010/03/16(火) 15:08:30
愚者は経験に学び、賢者は歴史に学ぶ

746 :デフォルトの名無しさん:2010/03/16(火) 15:15:59
しかし、歴史で学んだ知識はそれを信念として行動することはとても難しいが、
経験で学んだ知識は容易にそれを信念として行動することができる。

経済学者が株で失敗する。経営学者が事業で失敗する、よくある話だ。

747 :デフォルトの名無しさん:2010/03/16(火) 15:18:27
経験上はアセンブラだけでやろうとすればちゃぶ台ひっくり返したくなるもんな。

748 :デフォルトの名無しさん:2010/03/16(火) 15:20:39
まずOSを作ります
次にエディタとコンパイラを作ります

749 :デフォルトの名無しさん:2010/03/16(火) 15:21:47
>>747
知識や経験があったらやろうとすら思わない

750 :デフォルトの名無しさん:2010/03/16(火) 15:28:21
そのまえにちゃぶ台を買ってきます

751 :デフォルトの名無しさん:2010/03/16(火) 16:11:27
ちゃぶ台をひっくり返すだけの腕力がない

752 :デフォルトの名無しさん:2010/03/16(火) 16:24:37
まずダンベルを買ってきます

753 :デフォルトの名無しさん:2010/03/16(火) 16:38:55
ダンベルを買う金がない

754 :デフォルトの名無しさん:2010/03/16(火) 16:43:00
ペットボトルに水入れとけw

755 :デフォルトの名無しさん:2010/03/16(火) 16:59:49
筋力がつく間にアセンブラで何か作れるんじゃない?

756 :デフォルトの名無しさん:2010/03/16(火) 17:06:00
プログラミングスキルはあるけどデザインセンスのない奴っているよな

757 :デフォルトの名無しさん:2010/03/16(火) 18:02:55
C#かはちょっと微妙かもしれませんが、Delphiで言うBinToHex、HexToBinはC#には無いのでしょうか?

758 :デフォルトの名無しさん:2010/03/16(火) 18:18:39
>>757
Int32.Parseとか

759 :デフォルトの名無しさん:2010/03/16(火) 18:23:37
ToStringやFormat、Parseが使えるけど
System.Convert でだいたいまかなえる

760 :デフォルトの名無しさん:2010/03/16(火) 18:33:23
ToHexString

761 :デフォルトの名無しさん:2010/03/16(火) 18:34:40
お前ら、みんな外に出ろ

762 :デフォルトの名無しさん:2010/03/16(火) 18:36:36
Convert.ToStringでOK

763 :デフォルトの名無しさん:2010/03/16(火) 18:45:24
バイト列(byte[]) <=> 16進数文字列(string) の変換だろ

BASE64ならメソッド一発だけど、16進数文字列だとそういうのは用意されていない
右方向で辛うじてBitConverter.ToStringが使える程度

764 :デフォルトの名無しさん:2010/03/16(火) 18:48:58
結論:c#では無い。

765 :デフォルトの名無しさん:2010/03/16(火) 18:54:28
byte b=(byte)str;

766 :デフォルトの名無しさん:2010/03/16(火) 18:58:39
それぐらい作ればいいじゃん

767 :デフォルトの名無しさん:2010/03/16(火) 19:04:03
最近似たような処理を作ったときは、

バイト(byte) -> 16進数文字列(string)
byteのToString()

16進数文字列(string)->バイト(byte)
Convert.ToByte()

を使ってた。
ぐぐれば出てくるレベル

768 :デフォルトの名無しさん:2010/03/16(火) 19:09:25
<?xml version="1.0" encoding="UTF-8"?>
<stations area_id="JP13" area_name="TOKYO JAPAN">
こういうxmlの場合どうやって検索かければいいんだろ

769 :デフォルトの名無しさん:2010/03/16(火) 19:10:26
F1押してMSDN見た情報って古いよね
Directory.GetFilesのオーバーロードが二つしか表示されない
公式見た情報だと3つある

770 :デフォルトの名無しさん:2010/03/16(火) 19:15:58
>>769
どんだけ古いの使ってんだよ。さっさとMSDN更新しろよ。

771 :デフォルトの名無しさん:2010/03/16(火) 19:20:50
>>768
独り言は日記帳にでも

772 :デフォルトの名無しさん:2010/03/16(火) 19:26:30
>>770
古いってダウンロードしてないけどね

773 :デフォルトの名無しさん:2010/03/16(火) 20:00:37
H2Viewer これ最悪
レジストリに書き込むくせにアンインストーラついてない

774 :デフォルトの名無しさん:2010/03/16(火) 20:15:10
レジストリに神経質ってPC Japanとか読んでる中学生みたいw
別にレジストリの値なんか削除されなくてもどうってことないだろう。

んなこと言ってたらシステムドライブの中の訳のわからん深いパスの中に
設定値を保存することが推奨されてる.NETアプリだって使えないよ。

775 :デフォルトの名無しさん:2010/03/16(火) 20:18:28
まあレジストリっていう仕組みは失敗だったよな

776 :デフォルトの名無しさん:2010/03/16(火) 20:34:01
スレ違い

777 :デフォルトの名無しさん:2010/03/16(火) 20:38:32
Revo Uninstaller使えば良いから問題無し
H2Viewerはあまり知られてないし非公式だからアレだが良ツール

778 :デフォルトの名無しさん:2010/03/16(火) 20:41:02
そんないいツールだっけあれ。
VS付属のビュワと違ってタダで配れる以外のメリットはないように感じたが

779 :デフォルトの名無しさん:2010/03/16(火) 20:42:58
ローカルに置いとけば便利なんだろうけど、
使い慣れたブラウザでMSDN見ちゃうな。

780 :デフォルトの名無しさん:2010/03/16(火) 20:58:37
2008EEについてくるMSDExplorerがバージョン古いんだよ!
2007のバージョンだから検索する記事の2007年のもの
なんでこんな古臭いの付属するんだよ

で単体で落としたりバージョンアップしたいのにできないし

781 :デフォルトの名無しさん:2010/03/16(火) 21:01:36
誰か最新版のURLを貼ってやれよw

782 :デフォルトの名無しさん:2010/03/16(火) 21:19:08
さっき貼ろうとしたが >>772 の悪態見て止めたんだ。

783 :デフォルトの名無しさん:2010/03/16(火) 21:30:22
2008 SP1用MSDNライブラリならMSDNに入ってなくてもダウンロードできるでしょ。
っていうか、こんなの知らない人いるのか

ガキ臭い2ch用語とか使いたくないけど、そんなことじゃ情弱って言われても
仕方ないな

784 :デフォルトの名無しさん:2010/03/16(火) 21:47:34
>>782
>>783
いや、MSDNのダウンロードの仕方は知っている

F1押した時のヘルプのバージョン見てくれ
それが古いのでリンクも古くて困っているんだ
MicrosoftDocumentExplorerのことをさっきから言っているんだよ
MSDNのことを言っているわけじゃない

MSDNライブラリは新しいのでも最新のライブラリではないから結局オンラインで見ることになる
だからバカでかいのをダウンロードしても意味が無いと思っているんだ

785 :デフォルトの名無しさん:2010/03/16(火) 21:53:08
ん?
F1押してもDirectory.GetFilesは3つでてくるけど?

786 :デフォルトの名無しさん:2010/03/16(火) 21:53:34
pictureboxに画像表示するビュアー作ったが
重ww

787 :デフォルトの名無しさん:2010/03/16(火) 22:02:28
>>784
何を言ってるのかよく分からんが、"Document Exploter"ってのは
あのビューワ自身のプログラムのことなんだけど分かってる?

F1キーに対応してないのは当たり前。
もともとExpress用のじゃないんだから統合できないに決まってる。
っていうか、あんな初心者向けの機能使ってるのか。

788 :デフォルトの名無しさん:2010/03/16(火) 22:13:57
F1はパテで埋めたぜ

789 :デフォルトの名無しさん:2010/03/16(火) 22:17:33
F1押したらDocumentExplorerが立ち上がって当該項目表示されるけど?
Directory.GetFilesは三つ出る。
Express用だけ新しいのに更新できないという意味?

790 :デフォルトの名無しさん:2010/03/16(火) 22:25:25
>>787
(初心者用)

791 :デフォルトの名無しさん:2010/03/16(火) 22:59:03
>>787
え、じゃあ他にどういう方法があるんですか?

>>789
そのヘルプをみてバージョン教えてください
2007Cop 9.0.3...とかじゃないですか?

792 :デフォルトの名無しさん:2010/03/16(火) 23:18:45
>>767
これでできました
ありがとうございます

793 :デフォルトの名無しさん:2010/03/16(火) 23:22:28
>>791
9.0.2.... おれのほうが古い

794 :デフォルトの名無しさん:2010/03/16(火) 23:25:53
おれはこうなってる
ttp://www.e-moe.net.nyud.net/~makimaki/cgi-bin/upload/src/makimaki0047.jpg

795 :デフォルトの名無しさん:2010/03/16(火) 23:30:23
ごみ箱にファイルを移動したものを
アンドゥで戻したいのだけどどうすればいいですか?
*:\RECYCLERの中には数字のファイルがあるだけ

他のソフトの挙動を見ていると、削除後ゴミ箱に実際に送るのは
そのアプリを終了するときにやっているようですが

796 :デフォルトの名無しさん:2010/03/16(火) 23:31:24
さっきから"Document Explorer"はプログラムの名前であってドキュメントとは違うよ、
って言ってるんだけど、こんな簡単なことが理解できない人っているんだな実際。

正直こんな人の書いたプログラムは怖くて使いたくない

797 :デフォルトの名無しさん:2010/03/16(火) 23:54:21
>>796
(初心者用)

798 :デフォルトの名無しさん:2010/03/16(火) 23:55:57
>>796
お前が理解できてないんだろ
誰がドキュメントって言ったよ
おれはMSDNダウンロードしてないって何度も言ってるだろ
だからオンライン検索になってるんだよ
ブラウザの話してるのにおまえらが勝手にMSDNだなんだって言い出してるんだよボケ
ほんと理解力ないな

>>780
これみてみろ、どこにMSDNなって書いてんだよハゲ

799 :デフォルトの名無しさん:2010/03/16(火) 23:57:18
>>796
上級者気取りの馬鹿は黙ってろよw

800 :デフォルトの名無しさん:2010/03/17(水) 00:03:39
単体で落とせるとかいいながら、MSDNのこと言ってたり
コイツらほんとプログラマかw
自分が使ってるブラウザの名前すらわからないのかハゲ

801 :デフォルトの名無しさん:2010/03/17(水) 00:04:27
>>798
Document Explorerにしても、MSDNライブラリをインストールすれば
勝手に(必要なら)アップデートされると思うけど。

というか、Document Explorerのバージョンが古かったら何か問題あるのかね。
よくわからん。

802 :デフォルトの名無しさん:2010/03/17(水) 00:08:41
お前ら荒らしに餌やるなよ

803 :デフォルトの名無しさん:2010/03/17(水) 00:13:15
>>798
おまえがどういう勘違いしてるかやっと分かったよ。
オンライン検索ってのはDocumentExplorerで検索をかけたときに使われる設定で、
F1キーやキーワード検索じゃオンラインに調べにいかないよ。
DocumentExplorerバージョンが古いとか関係ない。そういう仕様。

素直にMSDNライブラリをダウンロードして更新しろ。

804 :デフォルトの名無しさん:2010/03/17(水) 00:17:24
ろくに推敲もしてない日本語でOKな質問で逆切れとか、本当神経疑うよ。

っていうか、逆切れまでないにしても、
日ごろ取引先にこの手のまともな日本語でメール一つ書けない人が多すぎて
疲れるよな本当。

文部省は国語の時間に文学鑑賞ばっかり教えないでもっと説明能力を養成する
カリキュラムに変えてほしいよ。

805 :デフォルトの名無しさん:2010/03/17(水) 00:23:34
>っていうか、逆切れまでないにしても、
>日ごろ取引先にこの手のまともな日本語でメール一つ書けない人が多すぎて

この日本語も相当だと思う

806 :デフォルトの名無しさん:2010/03/17(水) 00:27:41
>>805
君って中学英語は関係代名詞で挫折した口じゃないの?w

807 :デフォルトの名無しさん:2010/03/17(水) 00:46:15
>>803
それはMSDNがインストールされている場合な
おれは入れていないからF1でオンラインに直接検索にいくわけ
で、検索に行くページが2007時点の古い記事ばかりということ

808 :デフォルトの名無しさん:2010/03/17(水) 00:49:23
>>807
ふーん。それは大変だね。
一人で違うことして一人で不便して、でも文句はネットのみんなに言ってw

809 :デフォルトの名無しさん:2010/03/17(水) 00:53:35
>>795
ttp://kazemati.blogspot.com/2009/03/powershell.html
PowerShellの記事だけど。そして「戻す」じゃなくて「元のフォルダに移動」だけど。
Shell.Applicationの代わりにShell32.dllをCOM参照してShell32.Shellをnewすればそう変わらないと思う。

810 :デフォルトの名無しさん:2010/03/17(水) 00:54:23
SplitContainerの分割線についての質問です。

splitContainer1.Panel1の幅がsplitContainer1の幅を変えても
動かないようにしたいのですが、どうしたらいいでしょうか。

よろしくお願いします。

811 :デフォルトの名無しさん:2010/03/17(水) 00:59:23
星空の下のディス・・もとい

常に固定するならIsSplitterFixed
そうじゃないならSplitterDistanceを覚えておくとか?

812 :デフォルトの名無しさん:2010/03/17(水) 01:00:24
>>809
どうもありがとうございます
助かりました

813 :デフォルトの名無しさん:2010/03/17(水) 01:13:27
splitContainer1_SizeChanged に覚えておいた値いれて
splitContainer1.SplitterDistance = splitterDistance; としたら一応できました。
>>811
ありがとうございます。

でも分割線がすっごく(・(・(・(・д・)・)・)・)振れます。

Janeはどうやっているのだろう・・・。

814 :デフォルトの名無しさん:2010/03/17(水) 01:15:09
>>813
タブの部分作ってるの?

815 :デフォルトの名無しさん:2010/03/17(水) 01:17:37
>>814
板ツリーと右側の部分です。

816 :デフォルトの名無しさん:2010/03/17(水) 01:23:26
最近はじまったラジオのサイマル放送、radikoはrtmpというプロトコルが使われています。
このrtmpに関連するライブラリ等について情報があれば教えてください
またC#でこんな応用アプリが作れるよ、っていうのがあれば教えてください。

817 :デフォルトの名無しさん:2010/03/17(水) 01:24:38
Splitterって自分が摘まれたら・・・とかイベントなかったっけ?
同時にSplitterを摘むこともないだろうから摘まれてないSplitterを一時的に固定して
離されたらフリーにするとか

818 :デフォルトの名無しさん:2010/03/17(水) 01:25:36
>>816
>>814が教えてくれます。

819 :デフォルトの名無しさん:2010/03/17(水) 01:32:59
俺が応えるのかよ

rtmpは知らん。アドビの作った物だしね
phpなんかだとフリーのコードはあるみたいだけど

820 :デフォルトの名無しさん:2010/03/17(水) 01:35:27
splitContainer1.FixedPanel で固定するPanelを指定できましたー。

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

821 :デフォルトの名無しさん:2010/03/17(水) 01:40:34
アドビと聞いて地雷と認定しますた

822 :デフォルトの名無しさん:2010/03/17(水) 01:59:45
816 名前:デフォルトの名無しさん[sage] 投稿日:2010/03/17(水) 01:23:26
最近はじまったラジオのサイマル放送、radikoはrtmpというプロトコルが使われています。
このrtmpに関連するライブラリ等について情報があれば教えてください
またC#でこんな応用アプリが作れるよ、っていうのがあれば教えてください。

アイデアとしては、radikoはノイズレスですが、逆にAMのあたたかみを入れるためにノイズ音をわざとのっける
アプリケーションを作りたいとおもっております。
このアイデアはまねしないようにお願いします。(まあだれも作らないとは思いますが。。。)

823 :デフォルトの名無しさん:2010/03/17(水) 02:23:27
わざとノイズを追加するアプリはすでにあったはず…
rtmpの仕様はアドビのサイトで公開されてるってどこかで見たような…

824 :デフォルトの名無しさん:2010/03/17(水) 03:04:53
>>822
http://www.adobe.com/devnet/rtmp/
出来上がったら教えて。

825 :デフォルトの名無しさん:2010/03/17(水) 11:05:29
フォーム1がメインでデータグリッドビューにデータテーブルをバインドして
血圧の表を表示しています。
フォーム1のメニューを選択して、元にサブフォームを表示してフォーム2で
1ヶ月の血圧グラフを表示しようとしてるんですけど、
データの受け渡しがうまくいきません。
どうやりかたがありますか?

826 :デフォルトの名無しさん:2010/03/17(水) 11:07:22
この手の話題は定期的にでるね
(やる夫のチンコ立つねAA貼りたいくらい

827 :デフォルトの名無しさん:2010/03/17(水) 11:23:35
>>825
http://codepad.org/akzX4pKs

828 :デフォルトの名無しさん:2010/03/17(水) 12:48:20
電子カルテがこんな連中のソフトで構成されてると思うと目頭が熱くなるな

829 :デフォルトの名無しさん:2010/03/17(水) 12:53:39
>>828
知らぬが仏ってことです

830 :デフォルトの名無しさん:2010/03/17(水) 13:00:20
>>828
老人に言えよ
元は専門性の高い職だったのに文系大量にいれやがって

831 :デフォルトの名無しさん:2010/03/17(水) 13:08:47
>>828
血圧も上がってるよ

832 :デフォルトの名無しさん:2010/03/17(水) 14:16:39
ですね

833 :デフォルトの名無しさん:2010/03/17(水) 14:27:20
日々の体調管理ソフトだろ。電子カルテなわけがないじゃないか!

834 :デフォルトの名無しさん:2010/03/17(水) 14:38:16
電子カルテって要はDBでしょ

835 :デフォルトの名無しさん:2010/03/17(水) 14:45:01
>>833
まぁそうかもね
血圧計についてるソフトかもしれないし

電子カルテは別に難しくもなんともないんだが薬、検査とか多いからめんどくせぇ
しかも病院毎にちょっとずつ違う上に内科、外科でも違ってくるし・・・
これにレセプトとか加えたらたまんねぇなおい・・・

改正毎にちょこちょこメンテ代とれるからおいしいけどね

836 :デフォルトの名無しさん:2010/03/17(水) 14:45:13
Delphi Borlandか

837 :デフォルトの名無しさん:2010/03/17(水) 14:59:03
はあ?

838 :デフォルトの名無しさん:2010/03/17(水) 15:08:46
こんにちわ
C#でのプログラミング業務に就いてもうじき1年なんですが
椅子に長時間、ほとんど同じ姿勢で座りっぱなしなせいか
どうやら痔になってしまったようです
同様の悩みを持つ同僚・先輩もいるんですが、いわば職業病みたいなものだから
しょうがないといわれました・・・みなさんのお尻はどうですか?
何か対策や気をつけること・なってしまった場合の対策など
アドバイスあればご意見うかがいたいので、よろしくお願いします

839 :デフォルトの名無しさん:2010/03/17(水) 15:11:16
痔になる前から座布団を使う
痔になる前から正しい姿勢で座る
痔になる前から1時間ごとに体操をする
痔になる前からディスプレイやキーボードの位置を調整しておく

これでおれは痔にならない自信がある

840 :デフォルトの名無しさん:2010/03/17(水) 15:14:56
>>827
ありがとうございます。
((Form1)this.Owner). を使うことにしました。^^

841 :デフォルトの名無しさん:2010/03/17(水) 15:45:26
それ最悪の方法
勉強する気がないならどうでもいいけど

842 :デフォルトの名無しさん:2010/03/17(水) 16:07:47
もうしわけないのですが、昼間からRuby初心者スレをあらしてる馬鹿をひきとってもらえないでしょうか?(´・ω・`)

http://pc12.2ch.net/test/read.cgi/tech/1267668057/652
http://pc12.2ch.net/test/read.cgi/tech/1267668057/659
http://pc12.2ch.net/test/read.cgi/tech/1267668057/676
http://pc12.2ch.net/test/read.cgi/tech/1267668057/684

843 :デフォルトの名無しさん:2010/03/17(水) 16:09:07
悪い、、、途中で送信してもた。追加

http://pc12.2ch.net/test/read.cgi/tech/1267668057/638
http://pc12.2ch.net/test/read.cgi/tech/1267668057/659
http://pc12.2ch.net/test/read.cgi/tech/1267668057/662
http://pc12.2ch.net/test/read.cgi/tech/1267668057/675

844 :デフォルトの名無しさん:2010/03/17(水) 16:12:43
こういうマナー違反するがRuby信者か・・・

845 :デフォルトの名無しさん:2010/03/17(水) 16:15:55
C#信者は最近あちこちのスレを荒らし過ぎだろ

846 :デフォルトの名無しさん:2010/03/17(水) 16:18:55
本当のC#信者ならそういうことはしない
そういうことは他所でやってくれ

847 :デフォルトの名無しさん:2010/03/17(水) 16:19:42
他所でやってるやんw

848 :842:2010/03/17(水) 16:21:26
本スレじゃなかった誤爆した

849 :デフォルトの名無しさん:2010/03/17(水) 16:21:57
誤爆と見せかけてコピペ荒しか
これがRuby信者です

850 :デフォルトの名無しさん:2010/03/17(水) 16:35:51
荒らしに言葉通じるわけ無いのに引き取れって無理を言う

851 :デフォルトの名無しさん:2010/03/17(水) 16:42:46
2chで「xxちゃんがあらすんです〜」って言われてもどうしようもないw
スルーしろとw

同じレベルだから気になるんだよと

852 :デフォルトの名無しさん:2010/03/17(水) 16:45:21
荒らされたので荒し返しますかw
Rubyスレで揉めてるだけなのに
他のスレに火種持ってくるなと

853 :デフォルトの名無しさん:2010/03/17(水) 17:02:50
>>841
どうして最悪なんですか?
とりあえず、これで動かして次の段階で他の方法を使うことにしようかと。

854 :デフォルトの名無しさん:2010/03/17(水) 17:03:42
>>853
>>827のコードが理解できなかったとしか思えない

855 :デフォルトの名無しさん:2010/03/17(水) 17:06:48
>>854
たしかにそうなんだけどw

856 :デフォルトの名無しさん:2010/03/17(水) 17:06:55
>>853
最悪ではあるけど
それで問題が出るまでやり続けて自分で気づくしないと思う
プログラミングなんてそういうものだから

ただ、要領の良い人は先人達に見習ってやる

857 :デフォルトの名無しさん:2010/03/17(水) 17:09:05
>>855
わからねえなら聞けよ

Form間でどういう形式でデータ渡すかわからねーから
サンプルとしてstringにしてあるんだよw

858 :デフォルトの名無しさん:2010/03/17(水) 17:14:41
Form2の中でForm1って書いちゃうとForm1からしか使えなくなるでしょ
それが絶対にダメとは言わないが、Form1に依存するならするで
Form2のコンストラクタやプロパティで明示的にForm1のインスタンスを渡したほうがいい
840だとぱっと見ただけではForm1に依存してないように見えるから質が悪い

859 :デフォルトの名無しさん:2010/03/17(水) 17:15:48
>>857
stringだと値のコピーが渡されるから
例としては悪いね

860 :デフォルトの名無しさん:2010/03/17(水) 17:16:14
>>859
stringは参照だろ

861 :デフォルトの名無しさん:2010/03/17(水) 17:17:21
ここで似非グローバル変数ですよ。

862 :デフォルトの名無しさん:2010/03/17(水) 17:20:07
RubyもPythonもすべての変数はグローバルでパブリックで便利だお

863 :デフォルトの名無しさん:2010/03/17(水) 17:21:48
そういうのでスパゲティにならないようにしたのに・・・
その作法を学ばないとは

864 :デフォルトの名無しさん:2010/03/17(水) 17:25:13
スパゲッティって言うのはGoto文だらけのコードを言うのですよ。

865 :デフォルトの名無しさん:2010/03/17(水) 17:26:03
>>840ならむしろグローバル変数のほうがいいと思うよ
Form2が必要としてるのはForm1が表してるデータだけのはずなのに
Form1のUIにまで依存してるから余計に悪い

866 :デフォルトの名無しさん:2010/03/17(水) 17:26:32
>>825
form2.SendForm(form1)
form1.SendForm(form2)
コントロールはすべてpublicに変える

これでおk

867 :デフォルトの名無しさん:2010/03/17(水) 17:28:07
>>865
データを引数で渡したら時間もリソースも食うじゃない

868 :デフォルトの名無しさん:2010/03/17(水) 17:29:02
>>867
それでどれだけ食うっていうんだよw

869 :デフォルトの名無しさん:2010/03/17(水) 17:33:25
きっと数千のオーダーの数のフィールドが並んだ構造体でデータを管理してるんだよ

870 :デフォルトの名無しさん:2010/03/17(水) 18:46:14
714 名前:デフォルトの名無しさん[sage] 投稿日:2010/03/12(金) 16:23:13
では、質問です

RubyやJAVAと比べて
C#にできないことはなんですかぁ?
C#より処理速度速いものってなんですかぁ?


そしてあなたたちは答えます
だからわたしはこういってあげます
linuxやMac限定の話されてもねw

でもこれももう時期払拭します
C#最強時代到来

871 :デフォルトの名無しさん:2010/03/17(水) 18:51:23
756 名前:デフォルトの名無しさん[sage] 投稿日:2010/03/12(金) 16:54:30
あらあらwRubyでは対抗できなくなってC++信者に七変化ですかw
C++は最強ですよ確かに、私も好きですし否定はしません
しかしですよ、もしC++が亡くなったら何使いますか?
何が2番手にきますか?

そう、もちろんC#ですよねw
C#最強

767 名前:デフォルトの名無しさん[sage] 投稿日:2010/03/12(金) 17:12:30
C#スレはプログラミングの話題がほとんどだが
RubyスレもPythonスレも毎日バグ対処の話題ばかりw
これだけ糞面倒なくせに処理速度はC#の足元にも及ばない

872 :デフォルトの名無しさん:2010/03/17(水) 18:53:03
>>870>>871
貼らなくていいよ
お前もレベルは同じ

スルーしろって

873 :デフォルトの名無しさん:2010/03/17(水) 19:46:33
コピペ君って馬鹿だな、まで読んだ。

874 :デフォルトの名無しさん:2010/03/17(水) 20:05:13
なにがしたんだろうなぁ

875 :デフォルトの名無しさん:2010/03/17(水) 21:16:34
日本人で最強のC#使いは誰?

876 :デフォルトの名無しさん:2010/03/17(水) 21:26:01
誰かがわんくま同盟だっていってたお

877 :デフォルトの名無しさん:2010/03/17(水) 21:29:41
宇宙最強は俺だが日本だと誰かな

878 :デフォルトの名無しさん:2010/03/17(水) 22:22:13
検索かけるとよくわんくま同盟関係のページが出るけど、
正直説明がよくわからん

879 :デフォルトの名無しさん:2010/03/17(水) 22:27:10
業界のガンだからなぁ。

880 :デフォルトの名無しさん:2010/03/17(水) 22:55:57
C#には型名に別名をつけるtypedefみたいなのはないの?

881 :デフォルトの名無しさん:2010/03/17(水) 23:00:27
無いよ

882 :デフォルトの名無しさん:2010/03/17(水) 23:00:34
usingならあるよ

883 :デフォルトの名無しさん:2010/03/17(水) 23:08:47
ここでusingを挙げるのはわざととしか思えんw。

884 :デフォルトの名無しさん:2010/03/17(水) 23:11:42
>>880
デリゲート

885 :デフォルトの名無しさん:2010/03/18(木) 00:07:16
>>880
シールクラスか値型じゃなければ、メンバの追加変更なしの空っぽの派生型を作って、
implicitで元の型への暗黙変換だけ定義しとけば機能的には別名と同じかも。

まあ、そうだとしても邪道過ぎるね。

特にVBだとジェネリックの表現が長くて見づらくなるので、こういうことをする誘惑に
駆られたことがある。

886 :デフォルトの名無しさん:2010/03/18(木) 01:52:03
P/Invoke絡みでint型のハンドル値をラップして
値を変更不可能にした構造体を作ったことはある
IntPtrでは型が分からないしだからってクラスにするほどのものでもなかったから

887 :デフォルトの名無しさん:2010/03/18(木) 11:33:29
>>886
で?

888 :デフォルトの名無しさん:2010/03/18(木) 12:13:39
C#を使って、2つ以上のwavファイルを繋げ、1つのwavファイルとして出力するようにしたいのですが、
どのようにコーディングするのが妥当ですか?

889 :デフォルトの名無しさん:2010/03/18(木) 12:16:17
その程度だと妥当も糞もなくね

890 :デフォルトの名無しさん:2010/03/18(木) 12:39:04
なくねくね

891 :デフォルトの名無しさん:2010/03/18(木) 12:39:50
>>888
DirectX使え

892 :デフォルトの名無しさん:2010/03/18(木) 12:41:25
妥当と思えない方法ではできてるってことかな?

893 :デフォルトの名無しさん:2010/03/18(木) 12:41:57
簡単?

まあフォーマットを限定するなら波形データは単なる配列だからなあ
変換するとなると面倒かも

894 :888:2010/03/18(木) 12:51:31
>>891
Direct Soundですよね?
以前触ったことありますが、繋いで保存なんて出来ましたっけ・・・?
調べてみます。
>>892
ググっても方法見つからなかったので、
http://codezine.jp/article/detail/368?p=2
を参考にMMIOで読み込み、データ部だけを繋いで再生してみましたが、
何も再生されず、ファイル出力したものをWMPで開いてみても、エラーで読めませんでした。
妥当って言い方は間違っていましたね。

895 :デフォルトの名無しさん:2010/03/18(木) 12:56:37
>>894
フォーマットがまったく一緒ならdata部分を連結してチャンクの中の長さとかを変更すれば問題ないよ
でもデータが違うとモノラル、ステレオの対応や8bit,16bitの対応もしないといけない
あとサンプリングレートか
この辺絡むとノイズの問題がでてくるんだよな・・・

896 :デフォルトの名無しさん:2010/03/18(木) 12:58:03
WAVファイルのヘッダとデータ部取ってきて
それを2つ分

で、ヘッダーの情報を結合したデータの長さとかそのへん書き換えてデータ部分を連結させる
で、おわりじゃ?

やったことはないけどフォーマット仕様があるから簡単にできそうだけどなぁ

897 :888:2010/03/18(木) 13:06:22
フォーマットは8bitと16bitの両方があるです。。
やっぱり、この方法しか無いんですかね。。チャンクとフォーマットについて、調べ直してきます。

898 :デフォルトの名無しさん:2010/03/18(木) 13:21:55
8bit 16bit変換は楽だよ

たしか8bitは符号なしで管理してて音が鳴ってない場合は127か128あたり
16bitは符号ありで音が鳴ってない場合0だから単純に計算でいいかも

面倒なのはサンプリングレート変換かな

899 :デフォルトの名無しさん:2010/03/18(木) 13:28:17
出来合いのライブラリに逃げちゃうな俺だったら

900 :デフォルトの名無しさん:2010/03/18(木) 14:11:11
>>899
ふっ

901 :デフォルトの名無しさん:2010/03/18(木) 14:18:28
>>899
それがいちばん正解に近い
と思う

902 :デフォルトの名無しさん:2010/03/18(木) 14:52:45
ライブラリどころかフリーソフト拾ってきてProcessで動かすだけでいいや

903 :デフォルトの名無しさん:2010/03/18(木) 14:53:23
いまさら自分で変換する明確な理由でもない限り
実績のあるものに任せるのは正解な気がするな

904 :デフォルトの名無しさん:2010/03/18(木) 14:56:55
バグってても人のせいにできるからね

905 :デフォルトの名無しさん:2010/03/18(木) 15:01:14
GPLの罠

906 :デフォルトの名無しさん:2010/03/18(木) 15:11:47
オープンソースでは非常に緩いライセンスが主流で
GPL汚染が進んでないのは.NETの良いところだな

907 :デフォルトの名無しさん:2010/03/18(木) 15:14:26
C#でwavファイルってどっかで聞いたことあるなと思ったら
そのものずばりな本があったw

WAVプログラミング .NET C#で学ぶ音響処理
http://www.cutt.co.jp/book/978-4-87783-218-6.html

まあ自分でいじるのが目的、ってんじゃないならライブラリ探して利用するのが
いいとオレも思う。C/C++用しかなかったら移植してしまうかDLL化して使えばいいしね

908 :デフォルトの名無しさん:2010/03/18(木) 15:15:38
このレベルで4000円近くするのか

909 :デフォルトの名無しさん:2010/03/18(木) 15:38:29
うひょ〜

910 :デフォルトの名無しさん:2010/03/18(木) 16:09:45
DirectX使えば古いアナログシンセみたいのも作れるのかなあ
どこまで行けるように頑張ろう

911 :デフォルトの名無しさん:2010/03/18(木) 16:30:35
そこまでいくとDirectXなんか小手先の道具に過ぎない
専門の勉強しないと

912 :デフォルトの名無しさん:2010/03/18(木) 16:39:04
サウンドバッファに正弦波書き込んでるだけで感動していた工房の頃

913 :デフォルトの名無しさん:2010/03/18(木) 16:59:57
そう言えば昔はベジエ曲線書くだけで感動したなぁ


914 :デフォルトの名無しさん:2010/03/18(木) 17:14:18
写真屋を超えようと思っていたあの頃

915 :840:2010/03/18(木) 22:06:03
やっと昨日教えてもらったことがわかりました!!!!
ありがとうございました。^^

916 :デフォルトの名無しさん:2010/03/18(木) 22:17:31
割り込みでFM音源ボード2を制御して使いこなす前に終わったあの時代

917 :デフォルトの名無しさん:2010/03/18(木) 22:23:50
最近はじまったラジオのサイマル放送、radikoはrtmpというプロトコルが使われています。
このrtmpに関連するライブラリ等について情報があれば教えてください
またC#でこんな応用アプリが作れるよ、っていうのがあれば教えてください。



918 :デフォルトの名無しさん:2010/03/18(木) 22:30:16
でじゃぶーかと思ったら>>816と同じか

無いと思うよ

919 :デフォルトの名無しさん:2010/03/18(木) 22:33:51
>>915
何をどうしたんだろうな・・・
スゲー気になる


あと




このスレってまだこっちと分離するの?
C#, C♯, C#相談室 Part55
http://pc12.2ch.net/test/read.cgi/tech/1265283175/

レベルもそれほど違わないし両方ペース遅いしでまとめてもいいような・・・

920 :デフォルトの名無しさん:2010/03/18(木) 22:39:28
この板でPart50超えるほど伸びてるのにペース遅いだと…?

921 :デフォルトの名無しさん:2010/03/18(木) 22:43:16
C#ってC/C++より歴史無いのに使いやすい言語なので
ぐぐればそれなりのサンプルでてくるしなあ
2chで聞かれる内容は超初級か、マニアックなところかくらいだしペースは落ちてると思うよ

922 :デフォルトの名無しさん:2010/03/18(木) 22:44:52
18日で900スレオーバーで、ペースが落ちてると・・・?

923 :デフォルトの名無しさん:2010/03/18(木) 22:45:23
速度的にもこっちム板で4位だよ(相談室11位)

924 :デフォルトの名無しさん:2010/03/18(木) 22:46:32
ここより速いスレってC++相談室とJava相談室とゲームプログラミングスレしかないけどな・・・。

925 :デフォルトの名無しさん:2010/03/18(木) 22:48:13
18日で900スレはすごいな。

926 :デフォルトの名無しさん:2010/03/18(木) 22:48:32
別れた経緯的に統合したくないという意見。

927 :デフォルトの名無しさん:2010/03/18(木) 22:52:03
string[] a = Directory.GetFiles(textBox1.Text);
これを配列1つごとに改行を入れてstring型のbに代入したいのですがどうすればよいのでしょうか?

928 :デフォルトの名無しさん:2010/03/18(木) 22:52:35
String.Join

929 :デフォルトの名無しさん:2010/03/18(木) 22:54:29
くっついたらC#相談室が1位になるのか

930 :デフォルトの名無しさん:2010/03/18(木) 22:58:02
コンソールで実行した場合にプログラムを常に最前面に表示するようにできますか?

931 :デフォルトの名無しさん:2010/03/18(木) 23:01:23
>>928
これ配列1つごとに改行を入れるのってどうすればいいんですか?

932 :デフォルトの名無しさん:2010/03/18(木) 23:10:30
>>931
そのくらいMSDN読めよォオオオオオオオオオオオオオオオオオオオオオオオオオオ

String.Join("\r\n",a);
\r\nでも\nでもEnvironment.NewLineでも好きなの使え

933 :デフォルトの名無しさん:2010/03/18(木) 23:11:56
>>930
コンソールってできたっけ?・・・・
コンソールじゃないとだめなの?

934 :デフォルトの名無しさん:2010/03/18(木) 23:12:48
ウィンドウ意識したらコンソールじゃないし
ウィンドウがあるとは限らないし

935 :デフォルトの名無しさん:2010/03/18(木) 23:14:34
自分のウインドウ取得してTopmostにするしかないね。

936 :デフォルトの名無しさん:2010/03/18(木) 23:16:26
標準入力パイプして起動してるかも知れん

937 :デフォルトの名無しさん:2010/03/18(木) 23:17:05
(・∀・)

938 :デフォルトの名無しさん:2010/03/18(木) 23:19:10
>>932
すいませんw
ありがとうございます

939 :デフォルトの名無しさん:2010/03/19(金) 00:29:55
>>930
http://codepad.org/vzVW5CQX
うまく動くかどうかは知らん。

940 :デフォルトの名無しさん:2010/03/19(金) 02:28:03
Dictionaryを途中からforなどで回すことはできますか?
インデックスが指定できればいいんだけどどうやらなさそうなんですが

941 :デフォルトの名無しさん:2010/03/19(金) 02:31:33
Dictionaryは要素が順番に並んではないから途中も糞もない
極端な話、一回目のforeachと二回目のforeachで列挙順が違っても文句は言えない

942 :デフォルトの名無しさん:2010/03/19(金) 02:37:34
>>941
うわーそうなんですか
失敗した・・・
順番も大事なのでList<>で作り直します
ありがとうございました

943 :デフォルトの名無しさん:2010/03/19(金) 04:10:17
visualC#でtextboxに入力した文字をint型で受け取りたいのですが
Parseメソッドを使う以外にどんな方法がありますか?

944 :デフォルトの名無しさん:2010/03/19(金) 04:13:01
Convert.ToInt32
など

945 :デフォルトの名無しさん:2010/03/19(金) 06:56:39
TextBoxじゃなくてNumericUpDownを使う

946 :デフォルトの名無しさん:2010/03/19(金) 10:32:58
>>936が標準入力バイブ起動に見えた

947 :デフォルトの名無しさん:2010/03/19(金) 10:45:29
>>946
お前疲れてるんだよ
AVでもみて一発抜いて寝るべき

948 :デフォルトの名無しさん:2010/03/19(金) 11:12:06
UTF-8のフォルダ名やファイル名を検索する方法はないでしょうか?
Directory.GetDirectoriesなどをやったときに「"ファイル名"の一部が見つかりません」
と例外が出てしまいます
よろしくお願いします

949 :デフォルトの名無しさん:2010/03/19(金) 11:21:49
一体どんな文字を検索しようとしてるんだ…・
単にパス間違えてるとかじゃなくて?

950 :デフォルトの名無しさん:2010/03/19(金) 11:29:28
大体NTFSでもWindowsでもUTF-8なんて使ってないはずだが

951 :デフォルトの名無しさん:2010/03/19(金) 11:44:15
UTF8だからと思っていましたが
フォルダ名などの末尾に全角スペースが入っているからのようです

952 :デフォルトの名無しさん:2010/03/19(金) 11:47:39
ずいぶん前にMSが「ごめんそれバグ」っていってた気がする

953 :デフォルトの名無しさん:2010/03/19(金) 12:08:12
仕様でしたか、では適当にスキップします
ありがとうございます

954 :デフォルトの名無しさん:2010/03/19(金) 12:08:28
先頭末尾に空白があるファイルはファイル名によるアクセスは無理じゃねーかな
.NETじゃ\\.\+フルパスによる指定ができないから

955 :デフォルトの名無しさん:2010/03/19(金) 13:17:14
ちょいと質問。くだらない事だけど、教えてけろ

以下コードだと、宣言が重複していますとコンパイラに怒られます。
@のクラス名かAの公開変数名を変えればいいのですが、
ほかに適切な名前がないので、困っています。
変数名をキャメル表記にすると、内部変数の命名規則とかぶってしまうし。

皆さんなら、どっちをどんな名前に変えますか?

class GlovalData{
class InspectVals{ //--@
...
}
public static InspectVals InspectVals = new InspectVals() //---A
}

956 :デフォルトの名無しさん:2010/03/19(金) 13:19:07
それ本当に内部クラスにする必要あるの?

957 :955:2010/03/19(金) 13:29:11
>>956
現状はデータ種別ごとに階層化させたくて、
こんな構造になってます。

別に外部クラスにしてもいいのですが、
この場合も何も考えずコーディングすると結局クラス名と公開変数が
かぶってしまうのですが、この場合の命名規則についても、
どうすればいいかよくわかっていません。

クラスは先頭にCとかプレサフィックスをつけるべきなんでしょうか?

958 :デフォルトの名無しさん:2010/03/19(金) 13:35:07
その為にプレフィックスつけてたら命名規則守る意味なくね
本末転倒

クラス(構造体)名と識別子名が被ってるのなんか沢山あるから気にしなくていい
たとえばRectangle.Sizeとか

959 :デフォルトの名無しさん:2010/03/19(金) 14:44:20
OpenGLだとかOpenCvとかのC#用のライブラリがどのように作られてるか分かりません
どこか詳しいサイトやぐぐるためのキーワードがあれば教えてください

960 :デフォルトの名無しさん:2010/03/19(金) 14:47:05
公開されてるソース嫁ばいいじゃん

961 :デフォルトの名無しさん:2010/03/19(金) 17:39:48
>>957
まず、内部クラスを外に見せるのはガイドライン違反。
それから、型の名前とプロパティ名を一致させるのはガイドラインではむしろ推奨。

962 :デフォルトの名無しさん:2010/03/19(金) 19:57:23
>>957
まあ既に指摘されてるけど内部クラスを公開するのはおかしいよね。

ただ、内部クラスの「型」を公開するのはよくないけど、
内部クラスのインスタンスを公開するのは別に悪くないと思う。

何が言いたいかっていうと、公開する「型」は名前空間直下で定義して
(つまり内部クラスじゃない)、内部クラスはその型の派生型としてprivateで定義すれば
>>955のやりたいようなことは一応できるよと。

963 :デフォルトの名無しさん:2010/03/19(金) 20:40:19
>>962
言語ヲタさん、説明サンキュー!

964 :デフォルトの名無しさん:2010/03/19(金) 20:58:50
言語ヲタてw
別にそんなヲタ好みのアクロバティックな手法ってことないと思うけど

965 :デフォルトの名無しさん:2010/03/19(金) 21:21:41
>>944-945
thx

966 :デフォルトの名無しさん:2010/03/19(金) 21:32:28
>>962
それ意味無いよ
どうせ余所で勝手に派生型作られたら同じこと
素直に名前空間直下で宣言すればいいと思う
勝手にインスタンス作られるのが嫌ならコンストラクタをinternalに

967 :966:2010/03/19(金) 21:35:26
補足
外側のインスタンスフィールドにアクセスしたいというような
内部クラスが外側に密接に結びついてる場合は別だよ

968 :デフォルトの名無しさん:2010/03/19(金) 21:54:12
今の時代はいいよな
パソコンやっててもオタクと言われなくて
おれが中学のとき丁度初代シムシティが出た頃
プログラミングに熱中してたらオタク扱いされたな

でもその後、パソコンやっていた奴と
パソコンをバカにしていた奴らの差は開くことになたがなw

969 :デフォルトの名無しさん:2010/03/19(金) 22:02:21
そんな考えだから馬鹿にされたんだよ
あ、今もか

970 :デフォルトの名無しさん:2010/03/19(金) 22:08:17
>>966
インスタンスを外に公開するのにあえて内部クラスを選択する理由は、
外側のクラスのpivateメンバ(フィールドに限らない)にアクセスできることぐらいで、
そしてそういう使い方がしたい場合は稀にはあるでしょ。

クラスをネストしてもインスタンスの生成を禁止することはできない。
そういうことがしたい場合も、>>962に書いたように抽象型のみ公開するのが普通じゃないの。

971 :デフォルトの名無しさん:2010/03/20(土) 00:47:01
>>968
こんなスレ居る(プログラム書いてる)時点で、大した差なさそうだけど・・・w

972 :デフォルトの名無しさん:2010/03/20(土) 01:30:44
Directoryみたいな機能があって
それプラスitem追加した順番に並ぶようなクラスは
どうすれば作れますか?

973 :デフォルトの名無しさん:2010/03/20(土) 01:31:56
>>972
>Directoryみたいな機能があって
>それプラスitem追加した順番に並ぶようなクラスは
>どうすれば作れますか?
えw
自分で文字にしたのがすでに仕様じゃん

974 :デフォルトの名無しさん:2010/03/20(土) 01:38:25
>>940
>>941
こういうことしたいんですけど
foge<obj1,obj2>
こんな感じで

975 :デフォルトの名無しさん:2010/03/20(土) 01:39:32
>>974
で?

976 :デフォルトの名無しさん:2010/03/20(土) 01:40:49
えw
DirectoryじゃくDictionaryなの?

977 :デフォルトの名無しさん:2010/03/20(土) 01:50:11
って972=974なのか Directoryとか言うから関連があるとは思わんかった
内部にDictionary<TKey,TValue>とList<TKey>持ったIDictionary<TKey,TValue>実装クラス作ればいいよ

978 :デフォルトの名無しさん:2010/03/20(土) 01:51:43
こういう小さいクラスも作れないのはキツイな・・・

979 :デフォルトの名無しさん:2010/03/20(土) 01:56:39
おっと
書いてる途中で正解が書き込まれてた

980 :デフォルトの名無しさん:2010/03/20(土) 02:00:39
すいませんDirectoryじゃなくてDictionaryで
途中から追加した順番に要素を検索するクラスが
作りたいのです

と言わなくても理解してくれた超能力者がいたので助かりました
>>977のようなクラスは例えば

class foge
{
  Dictionary<TKey,TValue>
List<TKey>
}

みたいになるんですよね?
そうじゃなくて

Foge<string,myclass> f=new Foge<string,myclass>();

for(int idx=9;idx<f.Count;idx++ )
{
  myclass mc=f.items[idx];
}

のようにしたいのです

981 :デフォルトの名無しさん:2010/03/20(土) 02:02:46
そこまでやりたいこと見えてるんなら
自分でできそうなもんだが

982 :デフォルトの名無しさん:2010/03/20(土) 02:06:02
できることはできるんですが、
自分がやるとオシャレじゃないので
もっとスマートに実現してくれるひとはいるかなと
思いまして

983 :デフォルトの名無しさん:2010/03/20(土) 02:07:26
すいません間違いました
こういう感じにしたいのです

for(int idx=9;idx<f.Count;idx++ )
{
  myclass mc=f[idx];
}

984 :デフォルトの名無しさん:2010/03/20(土) 02:07:58
>>980
そこまで分かってるなら検索ワードも浮かびそうだし
ぐぐれば出てきそうだけどな

というかその程度の実装で答えもらってると後で苦労しそうだけどな・・・・

985 :デフォルトの名無しさん:2010/03/20(土) 02:10:38
誰か作ってくれるまで続けるつもりなのか?

986 :デフォルトの名無しさん:2010/03/20(土) 02:12:10
頭悪いな


987 :デフォルトの名無しさん:2010/03/20(土) 02:12:28
>>1
>>980を踏んだ人は新スレを建てて下さい。

988 :デフォルトの名無しさん:2010/03/20(土) 02:15:54
Foge<string,myclass> f=new Foge<string,myclass>();
List<string> g = new List<string>();

for(int idx=9;idx<f.Count;idx++ )
{
  myclass mc=f[g[idx]];
}

989 :980:2010/03/20(土) 02:17:06
ふらっとC#,C♯,C#(初心者用) Part57
http://pc12.2ch.net/test/read.cgi/tech/1269018938/

立てたので教えてくださいお願いします

990 :980:2010/03/20(土) 02:18:46
>>988
それだとスマートじゃないですよね
ひとつの自作クラスだけで実現したいんです

991 :デフォルトの名無しさん:2010/03/20(土) 02:20:44
そう思うのはお前の頭が悪いから


992 :980:2010/03/20(土) 02:22:18
>>988
これだとアイテム追加する度に
二つの変数にそれぞれキーとかインデックスとか入れないとだめですよね

f.Add(string,item)
だけで済むようにしたいんです

>>991
ひとつの行いをするのに二つのクラスを使うなんてスマートじゃないです

993 :デフォルトの名無しさん:2010/03/20(土) 02:23:54
>>992
そこまで分かってるならクラス自分で実装しろよ

お前がわからないのはクラスの作り方だろ?

994 :980:2010/03/20(土) 02:25:17
>>993
そうです
作り方がわからないので教えてください

995 :デフォルトの名無しさん:2010/03/20(土) 02:25:52
自分でわかってる範囲でクラス作って
ふらっとC#,C♯,C#(初心者用) Part57
http://pc12.2ch.net/test/read.cgi/tech/1269018938/2
のサイトに貼って添削してもらう形で動け

996 :980:2010/03/20(土) 02:26:41
>>995
ではそうします

997 :デフォルトの名無しさん:2010/03/20(土) 02:27:33
>ひとつの行い
いや二つだよ

998 :デフォルトの名無しさん:2010/03/20(土) 02:42:20
まあがんばれ

このくらいはできるようにならんと

999 :デフォルトの名無しさん:2010/03/20(土) 03:33:29
m,

1000 :デフォルトの名無しさん:2010/03/20(土) 03:48:40
>>980
バーカ

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

217 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)