C#, C♯, C#相談室 Part51

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

前スレ
C#, C♯, C#相談室 Part50
http://pc11.2ch.net/test/read.cgi/tech/1229661915/l50

Visual C# 2008 Express Edition 日本語版
http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/

その他テンプレ>>2-5くらい
2デフォルトの名無しさん:2009/02/04(水) 23:29:58
関連スレ

ふらっとC#,C♯,C#(初心者用) Part36
http://pc11.2ch.net/test/read.cgi/tech/1232455653/l50

Visual Studio 2008 Part 14
http://pc11.2ch.net/test/read.cgi/tech/1230008197/l50

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

【VB.NET】LINQ友の会【C#, C♯, C#】
http://pc11.2ch.net/test/read.cgi/tech/1202568694/

C#,C#の宿題片付けます。
http://pc11.2ch.net/test/read.cgi/tech/1197620454/l50
3デフォルトの名無しさん:2009/02/04(水) 23:35:01
参考リンク

MSDNライブラリ
http://msdn.microsoft.com/ja-jp/library/

@IT Insider.NET
http://www.atmarkit.co.jp/fdotnet/
Insider.NET 会議室 ディレクトリ
http://www.atmarkit.co.jp/fdotnet/index/bbs/
MSDN フォーラム
http://forums.microsoft.com/MSDN-JA/default.aspx?SiteID=7

pinvoke.net: the interop wiki!
http://pinvoke.net/
宇宙仮面の C# プログラミング / C# Programming
http://ukamen.hp.infoseek.co.jp/
WisdomSoft C#入門
http://wisdom.sakura.ne.jp/programming/cs/
WisdomSoft Microsoft .NET入門
http://wisdom.sakura.ne.jp/system/msnet/
どっとねっとふぁん
http://dotnetfan.org/
緑のバイク 初めてのC# 〜 覚え書き 〜
http://homepage3.nifty.com/midori_no_bike/CS/
どぼん!の .NET Tips
http://dobon.net/vb/dotnet/
4デフォルトの名無しさん:2009/02/04(水) 23:53:21
嘘付け。
5デフォルトの名無しさん:2009/02/04(水) 23:57:37
質問する前に"必ず"WikiやFAQ集を参照し、同じような質問がないか確認してください。

初歩的な質問はPC初心者板で・・・
http://pc11.2ch.net/pcqa/
参考リンク(よく出てくる情報リンク)
Windows Vista Wiki
http://windowsvista.ms/index.php
Windows VistaFAQ
http://vistafaq.stdo.net/index.html
インストールから設定・活用まで〜 すべてが分かるWindows Vista大百科
http://journal.mycom.co.jp/special/2007/windowsvista/menu.html
6デフォルトの名無しさん:2009/02/05(木) 00:01:54
質問の揚げ足を取って悦に浸っている常連ばかりのスレだそうですが、
本当ですか?
7デフォルトの名無しさん:2009/02/05(木) 00:03:53
次の質問をどうぞ。
8デフォルトの名無しさん:2009/02/05(木) 00:27:12
他のスレにも常駐して監視してるって本当ですか?
9デフォルトの名無しさん:2009/02/05(木) 00:35:51
次の質問をどうぞ。
10デフォルトの名無しさん:2009/02/05(木) 00:37:49
前スレでお伺いしたのですが、
ちょっと流れてしまったので再度書き込みさせていただきます。

「Webページのビルド コメント」機能を使おうとしたのですが
うまく使えません。。
下記に手順として
ttp://www.atmarkit.co.jp/fdotnet/teamdev/teamdev01/teamdev01_02.html
VS.NETでC#のソリューション(プロジェクト)を開き、統合開発環境のメニューから、[ツール]−[Webページのビルド コメント]を実行する
とあるのですが、
[ツール]の中にWebページのビルド コメントがないです。
私が使ってるVS2005 Professionalでは使えない機能なのでしょうか?
11デフォルトの名無しさん:2009/02/05(木) 00:43:56
2003にはありますが2005にはありません
12デフォルトの名無しさん:2009/02/05(木) 01:48:57
>>6
本当です
13デフォルトの名無しさん:2009/02/05(木) 05:21:39
前スレ979ですが
一番簡単そうな前スレ>>988の方法でやってできました。
14デフォルトの名無しさん:2009/02/05(木) 07:52:00
Managed DirectXの質問もここでおk?
15デフォルトの名無しさん:2009/02/05(木) 09:24:25
だめ
16デフォルトの名無しさん:2009/02/05(木) 11:10:30
C#の勉強しようと本(C#.NETによる実践DBプログラミング)あったので見ながら2008 Express Edition動かしてるんだけど
本に検索したレコードをフォームに表示で、
iPos=dataView.Find("T0001");
dataGrid.CurrentRowIndex=iPos;
ってあったのでDataViewコンポーネントをフォームに貼ろうと思ったらなかった・・・
あるのはポインタ, DataSet, DataGridView, BindingSource, BindingNavigatorだけ。
これはExpress Editionだから?
それとも本がちょっと古いから今のと仕様が違うのかな?
本は平成14年12月25日初版ってなってる。
17デフォルトの名無しさん:2009/02/05(木) 11:21:00
2002/2003の.NET1.xと2005以降の.NET2.0以降でそのへんごっそり変わったから。
// まあ旧来のDataGridも生のDataViewも使えるけども。
素直に2005以降対応の本で勉強することお勧め。
18デフォルトの名無しさん:2009/02/05(木) 11:21:29
DataView は貼れるコンポーネントじゃないだろ。

宣言とかない?
19デフォルトの名無しさん:2009/02/05(木) 12:11:30
>>14
この板に専用スレがあるけど過疎
ゲ製作技術の姉妹スレの方も過疎だけど、あっちの方がまだマシか・・?
20デフォルトの名無しさん:2009/02/05(木) 13:21:38
>>17
やっぱ新しい本買ってきます。

>>18
本には「ツールボックス」の「データ」ってとこから貼り付けてるんだよね。
宣言ってのはまだ勉強始めたばっかりなので分かりません。すいません。
2110:2009/02/05(木) 23:54:03
>>11
え、なくなったのですか!?
魅力的な機能に感じたのにもったいないです。
これで慣れた人は今どうしてるんでしょうかね。
他のいい代替ソフトでもあるのでしょうか。
22デフォルトの名無しさん:2009/02/06(金) 00:01:33
>>941
MFC も正直中身いまいち見えないと思うが…。
というか MFC と比較するんならたぶん WinForms だろうけど
実装正直かなり素直なので中身が見えない?とか思ったことナス
23デフォルトの名無しさん:2009/02/06(金) 00:16:38
OutLookなどのメーラーソフトから、D&Dで自分のListViewなどにメールを
落としてやり、Explorerに落としたときと同じようにメールのファイル化を
行いたい場合、DragDropイベントに自分で処理をいろいろ書いて実現する
ことをせずに、どこかにWebBrowserを貼っておいてC:\Tmpなどのフォルダ
にNavigateしておき、そこへプログラムでD&Dで落としてやることは可能で
しょうか。その場合はWebBrowserのDocumentオブジェクト上にD&Dする
ようなことを擬似的に処理するのでしょうか、ご指導の程よろしくです。
24デフォルトの名無しさん:2009/02/06(金) 00:19:44
>>22
ドンマイ
25デフォルトの名無しさん:2009/02/06(金) 00:19:54
書き直してくれ
26デフォルトの名無しさん:2009/02/06(金) 00:37:24
>>23
IShellFolderからIDropTargetをGetUIObjectOfして
DropされたIDataObjectを渡しつつ DragEnter, DragOver, DragDropを
順に呼んでやればおk

なに言ってんだか理解できないなら諦める
2723:2009/02/06(金) 00:48:41
>>26
おお、ご指導ありがとうございます。お答えの感じからは可能ということ
なのですね!おそらくですが、このIShellFolderが、WebBrowserのDocument部に
該当するオブジェクトの型でしょうか。そこにIDropTargetに割り当てられる
UIObejectがある、という感じなのですね。ありがとうございます、そこから
また調べてやってみます。感謝です。
28デフォルトの名無しさん:2009/02/06(金) 01:47:12
コードの載ったアプリケーションのオススメお願いします
いくつかのサイトで調べたのですがいまいち・・・

VisualStudioで即、ビルドできるソース一式があればお教えください
29デフォルトの名無しさん:2009/02/06(金) 01:49:28
はいはいcodeplex
30デフォルトの名無しさん:2009/02/06(金) 01:51:03
そこの中で条件にあったのありますか?
オススメあったら教えてください
31デフォルトの名無しさん:2009/02/06(金) 08:21:26
お前ら、クラス内のメソッドを
コンストラクタ→メソッド→プロパティの順とか、
アルファベット順に並べかえたりしてる?

こんど、sourceforge に登録しようと思ってるんで
その前にソースをきれいにしたい。

アルファベット順とかにならんでるときれいだけど
それを維持するのも面倒なんでどうしようかな・・・と思ってるんだが。

32デフォルトの名無しさん:2009/02/06(金) 09:20:27
機能の塊順とか
public/protected/private順とか
いろいろありそうだがアルファベット順はないな
33デフォルトの名無しさん:2009/02/06(金) 09:29:03
スタイルはあとでいいからとりあえずFxCopは通しなよ
34デフォルトの名無しさん:2009/02/07(土) 12:52:55
変数・定数→プロパティ→コンストラクタ/デストラクタ→メソッド
中はpublic→protected→private
35デフォルトの名無しさん:2009/02/07(土) 13:37:05
>>31
俺はオブジェクトブラウザやヘルプに出てくる順番を参考にしてます。
36デフォルトの名無しさん:2009/02/07(土) 16:24:47
FxCop+StyleCopで完璧
3731:2009/02/08(日) 02:13:55
お前ら、レスありがとうございました。

手動で並べ替えは面倒なんで、
FxCop と StyleCop で自動化できる範囲で
やることにしました。

今月中に世界を変えるアプリを公開する予定です。
38デフォルトの名無しさん:2009/02/08(日) 04:35:11
公開したらぜひ教えてくらさい
39デフォルトの名無しさん:2009/02/08(日) 05:25:05
世界を変えるアプリ→存在する全暗号の関数を自動的に解析するアプリ
40デフォルトの名無しさん:2009/02/08(日) 10:05:57
FxCopやStyleCopは自動修正できないよ
やたら厳しく文句付けてくるだけのツール
オープンソースにするならFxCop通すのは最低限のマナーだと思うけど結構面倒
41デフォルトの名無しさん:2009/02/08(日) 11:22:49
のちのSkyNetである
42デフォルトの名無しさん:2009/02/08(日) 17:36:55
>>40
まぁ Framework/Style Police だからな。捕まえるまでが仕事。
43デフォルトの名無しさん:2009/02/08(日) 18:58:34
>>39
計算時間を気にしなければ既にあるんじゃね?
44デフォルトの名無しさん:2009/02/08(日) 19:00:11
そんなんじゃ世界を変えられないよ
45デフォルトの名無しさん:2009/02/08(日) 19:08:41
>>39
残念ながら暗号強度と関数の公開性は関連がないよ。
46デフォルトの名無しさん:2009/02/09(月) 09:21:13
「世界」を「world」に置き換える、テキスト変換ツールに1票。
47デフォルトの名無しさん:2009/02/09(月) 10:08:07
既存システムのファイルマッピングメモリにC#でアクセスする方法が分かりません
C# ファイルマッピングで検索してもWin32系の情報しか出てこないのですが、
C#にファイルマッピング系のクラスなどは存在しないのでしょうか?
48デフォルトの名無しさん:2009/02/09(月) 10:16:17
ない
49デフォルトの名無しさん:2009/02/09(月) 10:31:38
うぎゃ!
APIでゴリゴリ書きます^^;
ありがとうございました
50デフォルトの名無しさん:2009/02/09(月) 14:33:03
>>47
.NET Framework 4.0で追加予定
51デフォルトの名無しさん:2009/02/09(月) 15:18:05
質問です。

enum XX : int { ...... }

と列挙した内容を、(int)などのキャストなしで値として得たいと思っています。
何か良い案などございますでしょうか?
52デフォルトの名無しさん:2009/02/09(月) 16:32:02
ございません。

abstract class XX
{
 public const int Hoge = 0;
 public const int Hage = 1;
 ……
}

とか
53デフォルトの名無しさん:2009/02/09(月) 16:36:25
やっぱりそうなっちゃいますか・・・

enumを列挙するときに数え上げてDictionaryにenumをKeyにして、
数値を格納使用とも思ったのですが、列挙の途中で値が代入され
連続性がないenumの場合は使えないナなど悩んでおりました。
54デフォルトの名無しさん:2009/02/09(月) 19:28:47
vs2008なんですがデバッグの時に、ウォッチウィンドウとかで"現在のコードが最適化されているため、式を評価できません"となることがあるんだがなぜ?
最適化してる訳じゃないし他のところだと普通に値が見れるし。
55デフォルトの名無しさん:2009/02/09(月) 19:52:09
>>53
VBならキャストなしでいけるw
しかし、そんなキャストを忌避しなきゃならん理由があると思えんけど。
56デフォルトの名無しさん:2009/02/09(月) 20:44:31
>>51
Enum.GetValues(typeof(XX)) でなくて?
57デフォルトの名無しさん:2009/02/10(火) 03:21:24
C#でCRC32を計算するために外部dllを探しているんですが、ある程度高速な物で何かお勧めはありませんか?
ググればいくつも見つかりますが、どれが高速かいちいち試すときりがないので。
58デフォルトの名無しさん:2009/02/10(火) 03:51:05
10万件くらいのDecimalがあって、参照ばかりで挿入とかはありません。
この場合どういうデータ構造をつかえばいいでしょうか?
59デフォルトの名無しさん:2009/02/10(火) 03:53:42
>>57
条件によるとしか
ライセンスの問題もあるし、unsafeが許可されるのかも知らんし
そもそもIOがボトルネックになるんじゃね?という気もする。
60デフォルトの名無しさん:2009/02/10(火) 05:14:25
C#からモニタの情報をScreen.AllScreensより詳しく取得できないですかね?
USBアダプタでのマルチモニタ環境なんですけど再起動したりするとたまに取得順が変わるようで、出来ればモニタの型番かなにかで一意に対応取りたいんですが・・・。
61デフォルトの名無しさん:2009/02/10(火) 07:55:56
>>57
どれもたいして変わらん。
本当に速いのが必要なときはハードにやらせるし
62デフォルトの名無しさん:2009/02/10(火) 07:57:51
>>58
配列
63デフォルトの名無しさん:2009/02/10(火) 10:01:09
>>60
DeviceName とかじゃダメか?
64デフォルトの名無しさん:2009/02/10(火) 10:09:08
>>57
SSE4.2使え
65デフォルトの名無しさん:2009/02/10(火) 10:11:08
System.Security.Cryptography.HashAlgorithm系のやつじゃあかんの?
66デフォルトの名無しさん:2009/02/11(水) 08:37:13
RadioButtonのCheckedが全てfalseになります。

ApplicationSettingsを使ってRadioButtonのCheckedを覚えさせようとしたんですが、
例えば二つのRadioButtonがあった場合、二つともPropertyBindingとして設定すると
アプリを動かして、UIでチェックをつけたりはずしたりする時に、その二つの
RadioButtonのCheckedが一度外れた状態になります。何故でしょう。

そもそもRadioButtonはApplicationSettingsでCheckedの値を覚えさせる
ものではない?
67デフォルトの名無しさん:2009/02/11(水) 09:14:39
>>63
DeviceNameだと

 "\\\\.\\DISPLAY1" string

っていう値が入ってるだけで、これってPC再起動時に名前が変化する可能性があるので使えないかなぁと
68デフォルトの名無しさん:2009/02/11(水) 12:45:51
 C#には、Effective C++や C++ Primerの様な本が無くてイマイチ。
趣味でプログラミングする身としては余り楽しくない。
 MVPのブログはキモイので肌に合わない。

 今、C#で継承や多態性を有効活用させる為に、Effective Javaを衝動買い
しようかと思ったのだけど、通販しか手が無い。

注文する前に、みんな何読んでるか聞かせて。
69デフォルトの名無しさん:2009/02/11(水) 13:10:30
>>66
イニシャライズはどこでやってる?
Formのコンストラクタじゃなく、Form_Loadでしてみては?
70デフォルトの名無しさん:2009/02/11(水) 13:26:06
>>66
これじゃだめなん?
private void Form1_Load(object sender, EventArgs e)
{
this.radioButton1.Checked = Properties.Settings.Default.radio;
this.radioButton2.Checked = !Properties.Settings.Default.radio;

}

private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
Properties.Settings.Default.radio = this.radioButton1.Checked;
Properties.Settings.Default.Save();
}
71デフォルトの名無しさん:2009/02/11(水) 13:58:35
>>68
あるよ。
Effective C# http://my.safaribooksonline.com/0321245660
More Effective C# http://my.safaribooksonline.com/9780321580481
C# Primer Plus http://my.safaribooksonline.com/0672321521

More...は今読んでる。
Safari大量にC#本あるから、読む本は尽きないよ。
(ただし日本語訳はない)
72デフォルトの名無しさん:2009/02/11(水) 15:20:30
IOleControlとかのインターフェイスを定義したファイルってないの?
Win32APIを定義したのは見つかったのに、、、

不便でしょうがない
73デフォルトの名無しさん:2009/02/11(水) 15:31:51
C++はEffective C++とか読まないとまともに書けないけど
C#は別になくてもどうとでもなるからなあ
74デフォルトの名無しさん:2009/02/11(水) 18:26:46
>>71
thx
和書を見限る線引きが出来た。
やっぱ本はあった方が良いよ。他人と話すときに妥協点としてお互い満足できる。
好きでやってて動けば良いじゃ、可哀想。

問題は俺が、洋書は厨二病時代にFIRST BLOOD1冊読んだだけということなのだがなw
75デフォルトの名無しさん:2009/02/11(水) 19:47:04
「CLR via C#」 (邦題:プログラミング .NET Framework) は、C#使いならEffective C++並に必読といっていいぞ。
邦題のタイトルのせいでスルーされがちだけど。
76デフォルトの名無しさん:2009/02/11(水) 19:58:46
77デフォルトの名無しさん:2009/02/11(水) 20:02:54
>>76
http://www.amazon.com/CLR-via-Second-Pro-Developer/dp/0735621632
これに対応する物だろうけど、MS日本法人はもうちょっと考えたほうが
いいよな。Amazon自体のデザインは日米共通だが、笑っちゃうくらい
印象が違う。
78デフォルトの名無しさん:2009/02/11(水) 20:05:51
>>77
どれ?w
79デフォルトの名無しさん:2009/02/11(水) 20:07:44
>>76
それ

Amazonのリンク張る時は、この短いやつで十分
http://www.amazon.co.jp/dp/4891005238/

>>75
C#使いなら手元に置いて、しっかり読んでおきたい本だね。
80デフォルトの名無しさん:2009/02/11(水) 20:13:21
>>75
第2版なら持ってる。
 そんなにバリバリプログラミングするぞって本とは思えないな。
要らない事書いて恥じ書く前の、転ばぬ先の杖ってヤツ?

…改めて見てみると、かなり付箋や自分のメモ書きが入ってたんだがw
81デフォルトの名無しさん:2009/02/11(水) 20:17:39
>>79
GJ

ん〜買おうかな
迷うぜ
82デフォルトの名無しさん:2009/02/11(水) 20:20:11
Amazonのカスタマーレビューの投稿数からして、日本と米国じゃ圧倒的な差だな
日本は所詮プログラミング後進国ということか・・・
83デフォルトの名無しさん:2009/02/11(水) 20:30:55
まー 古い本だから安く手に入ったり、譲って貰えたりするんでないかな?

 古いからジェネリックとか無いけど、
多分ジェネリックを含む新しい本が今後出ても、
その本にはこれと同じ内容の章を割くことになる。
(逆にその本がILコードの都合にまで言及してくれるかは解らん)
84デフォルトの名無しさん:2009/02/11(水) 20:32:47
ジェネリックは載ってるよ。
85デフォルトの名無しさん:2009/02/11(水) 20:36:48
ごめん。
古いから載ってなかった物がなんかあったような気がするが、覚えとらん。

言い訳にならんが、一昨年の2月に読んでたんで。
86デフォルトの名無しさん:2009/02/11(水) 20:45:27
>>85
うん。原書の第2版は2006年に出たらしいから、.
NET Framework 2.0 までの記述になっているので、それ以降のことは載ってない。
でもジェネリックは2.0では既に導入されているから載ってるよ。

はやく3版出ないかな
87デフォルトの名無しさん:2009/02/11(水) 20:57:19
Essential.NETのことも忘れないで下さい(´・ω・`)
88デフォルトの名無しさん:2009/02/11(水) 22:52:36
>>87
それ日本語版ある?
CLR via C#は買いたいな
89デフォルトの名無しさん:2009/02/11(水) 22:58:14
というか、C#や.netは今後も残るのかな
.netそのものがどうなるか不安だし、言語としてもVBやC++/CLIと比較したらC#はマイナーだし、
なんか漠然とした不安を感じてしまう
だから、いつまでもC#の高い本が買えない 悪い循環になってるorz
90デフォルトの名無しさん:2009/02/11(水) 23:02:22
C++/CLIと比較ww
91デフォルトの名無しさん:2009/02/11(水) 23:05:48
C#>>>VB>>>>>>>越えられない壁>>>>>>C++/CLI

って感じだな。俺の周りでいうと。
92デフォルトの名無しさん:2009/02/11(水) 23:06:30
米のamazon.comだと日本で高い洋書も結構安かったりするんだけど(特に中古)、
自分の住所の英語表記に自信がない(w)のと、送料が不明確なんでずっと買うの
躊躇してるんだよなあ。

実際米のamazon.comで買ってる人いたら送料どのぐらいか教えてくれない?
93デフォルトの名無しさん:2009/02/11(水) 23:11:48
言語としてC++は残ってるからなCLIはその拡張版なだけだし
ユーザ数はVB>C++>C#だし、消えるとしたらC#が真っ先に消えるんじゃないか?
94デフォルトの名無しさん:2009/02/11(水) 23:12:58
>>89
というか何年前から来た人ですか
95デフォルトの名無しさん:2009/02/11(水) 23:15:16
確かにどの現場にいってもC#で開発してるところは少ない
無くならないかもしれないが死に体であることには変わりがないな
少なくとも俺の周りでは
96デフォルトの名無しさん:2009/02/11(水) 23:15:34
>>93
そう思うなら、VBでもC++/CLIでも使えばいいじゃん。
97デフォルトの名無しさん:2009/02/11(水) 23:17:50
すくなくともC++/CLIだけはありえない
それだけは断言できる
98デフォルトの名無しさん:2009/02/11(水) 23:20:58
>>97
なんで?
99デフォルトの名無しさん:2009/02/11(水) 23:23:00
俺もないと思う。.NET のメリットである、「お気楽コーディング」ができないし。
情報も少ないしね。
100デフォルトの名無しさん:2009/02/11(水) 23:25:10
C++/CLIはなくなっても、C++は残るからなぁ
101デフォルトの名無しさん:2009/02/11(水) 23:27:30
C++ じゃないとダメな分野は依然としてあるからね。
102デフォルトの名無しさん:2009/02/11(水) 23:32:04
C++にはC++にしかできないことをやらせるというのがMSの方針
だから間違ってもC++/CLIは主役にならない
103デフォルトの名無しさん:2009/02/11(水) 23:34:51
となると、かつてVB6でクライアントを開発してたようなシステムは、
まさかVB6ってわけでもないだろうから、.netでVBで開発してるのかな?
104デフォルトの名無しさん:2009/02/11(水) 23:35:12
VC++のカバーして他分野はあんまり侵食してない。
VC++と旧VBの間をカバーしてたDelphiやC++Builderといったあたりが弾き出された感じだな。
105デフォルトの名無しさん:2009/02/11(水) 23:37:16
2chでそんな公然の秘密みたいな話されてもな。
一人で仕事して、言語の移り変わりを心配してる人がそんなに沢山いるのかな?

極個人的に、数年前に関数型言語への乗り換えに失敗したので、
Boostのlambda系をやろうと思ったら、
C#ってやつで似たような事をやってた。 現在に至る。
一万円で1日遊べればいいので、本代はペイできたと思う。
106デフォルトの名無しさん:2009/02/11(水) 23:37:50
主役はBasicだから主役には成らないが脇役から外れることもないんじゃない?
ならC++を学んでC++でFrameworkを使うという選択肢は重要な選択肢
107デフォルトの名無しさん:2009/02/11(水) 23:39:49
主役は Basic って何の話?

VB6 まで、MS のファーストランゲージは VB だったけど、今は C# に変わったよ。
108デフォルトの名無しさん:2009/02/11(水) 23:42:12
>>106
だから奴らは、継承を見ると避難して、switchを沢山使うんだな!
109デフォルトの名無しさん:2009/02/11(水) 23:43:50
>>107
今もVBがメインストリームで、C#はマイナーだろ
110デフォルトの名無しさん:2009/02/11(水) 23:46:13
こういっちゃなんだが C#er は C++ からの人も多い
まぁそういう人らすら大抵既存資産流用とか以外で C++/CLI を
使いたがらないわけで押して知るべしっていうか
111デフォルトの名無しさん:2009/02/11(水) 23:47:52
まともなプログラマなら両方使える。たいした差はないだろうに。
使いこなすのに10の労力が必要だとして、
クラスライブラリの理解5、IDEの操作3、言語2くらいだからね。
どうでもいいよ。
112デフォルトの名無しさん:2009/02/11(水) 23:51:02
C++/CLIはともかく,C#できるのにVBできないのはもったいない
1時間触れば使えるぞ
113デフォルトの名無しさん:2009/02/11(水) 23:52:44
F#やbooもよろしく
114デフォルトの名無しさん:2009/02/12(木) 00:03:57
今のVBって今のC#のサブセットにしか見えないんだが、何か違うところある?
構文とキーワード以外で。Variant型ってまだあるんだっけ?
115デフォルトの名無しさん:2009/02/12(木) 00:05:17
わりとC++/CLIに戻る価値があるって言ってる人もおおいじゃん
アレはガゼってこと?

C++: .NET Framework プログラミング最良の言語
http://msdn.microsoft.com/ja-jp/library/ms379617.aspx

いままたC++が熱い!「C++/CLI」として大進化したVisual C++ 2005
http://www.atmarkit.co.jp/fdotnet/special/cppcli/cppcli_01.html

C++/CLIはC#を凌駕するかも知れない…… usingステートメント不要のDisposeメソッド呼び出しの衝撃
http://mag.autumn.org/Content.modf?id=20050506023118

本当は凄いC++!? プログラム比較論 C++ vs C#, Java, Visual Basic
http://mag.autumn.org/Content.modf?id=20050504145851
116デフォルトの名無しさん:2009/02/12(木) 00:08:42
>>115
無知なので申し訳ないが、簡単な質問なので教えてくれ。

テンプレート有りのライブラリを使った後に、idasm使った事ある?
それとも、あの汚いコードはJITが消化してくれるのか?
117デフォルトの名無しさん:2009/02/12(木) 00:08:47
>>115
多くの記事がVS2005つまり.NET2.0リリース直後じゃないかな。
新製品のことは悪くは書かない。つまりそういうこと。
118デフォルトの名無しさん:2009/02/12(木) 00:12:19
それ川ま(ry。
いやあの人の記事嫌いじゃないというかむしろ好きだけどw
119デフォルトの名無しさん:2009/02/12(木) 00:12:22
>>116
それManaged拡張C++じゃね?
120デフォルトの名無しさん:2009/02/12(木) 00:12:47
>>114
VariantはObject型として実装されてる
メンバ呼び出しは全部リフレクションを使った遅延バインディング
>>115
出たばかりのころは騒がれてたね
C++/CLIとC#を両方ともちゃんと使った上でC++/CLIマンセーしてる奴なんて今時いないよ
121デフォルトの名無しさん:2009/02/12(木) 00:13:45
>>114
書き方以上の違いがあるのはインターフェイスの扱いと、
あとOption Strict Offができるぐらいかね。

たしかにC#でしかできないことの方が逆よりずっと多いから、その意味では
サブセット的存在かもしれん。
122デフォルトの名無しさん:2009/02/12(木) 00:14:15
>>114
クエリ式がC#より充実しているとか、VB6時代の暗黙のインスタンス化復活とかかな。
名前付き引数・デフォルト引数はC# 4.0で入るんだよね。
123デフォルトの名無しさん:2009/02/12(木) 00:15:27
んで、結局、今の開発案件はVBとC#のどっちが多いのかな
124デフォルトの名無しさん:2009/02/12(木) 00:15:58
>>115
Managed C++ → C++/CLI は大進化と言える。
Managed C++ はカオスだったなぁ・・。
125デフォルトの名無しさん:2009/02/12(木) 00:17:54
CreateObject とかは楽だね。
126デフォルトの名無しさん:2009/02/12(木) 00:19:04
サブセットというより機能制限により簡易化と捉えるべきだろ
それこそ、昨日のintとuintの会話と同じ
127デフォルトの名無しさん:2009/02/12(木) 00:26:03
どっちが複雑かということならレガシー機能やダメな子のための機能が満載のVBが圧勝だろ
次のバージョンでC#でもVariantみたいなことができるようになるけど,
必要だから使うのと,わかってないのをごまかすために使うのは違う
128デフォルトの名無しさん:2009/02/12(木) 00:29:26
結局、VBユーザが流れ込んでC#の良いところがなくなっていくわけね
言語仕様そのものもVBユーザごのみに変わっていきそうだな
129デフォルトの名無しさん:2009/02/12(木) 00:33:06
ぜんぜんわかってないやつがいます。
130デフォルトの名無しさん:2009/02/12(木) 00:35:30
あれは要するに DLR 対応なんだけど。
C# 4.0 に関して、どうして必要か、どういう風に導入するかとい
われたら、ヘジのプレゼン見れば納得すると思うんだけど、
なんか伝聞でへんな風に伝わっていっている気がする・・・
131デフォルトの名無しさん:2009/02/12(木) 00:38:34
また、そうやって荒れる原因になることをいう
C#がVB化するという意味じゃなくて、造詣に深くなくても使えてしまうから、
結果的にVB化するということだよ
VBみたいな言語の仕様での曖昧化を許すということでなく、
結果的に機能について曖昧なままユーザが使用し続けるということさ。

でも本質的には言語のVB化には変わりがないと思うよ
132デフォルトの名無しさん:2009/02/12(木) 00:39:31
Variantとして使えるのも事実だけどな
COM Interopの強化も合わせて,C#4.0になれば
今までVBのほうがやりやすいと言われていたようなことが無くなって
完全にVBと縁を切れるよ
133デフォルトの名無しさん:2009/02/12(木) 00:45:10
>>132
そうなんだ。
ついでにVBのWithEventsとメソッド内のフィールド(Staticで宣言された
ローカル変数)も欲しい。
134デフォルトの名無しさん:2009/02/12(木) 00:54:24
Variantとして使う奴が同じグループにいたら全部書き直させるわ
135デフォルトの名無しさん:2009/02/12(木) 13:59:21
JavaからC#に移行してきました。

Javaの場合はget/setメソッドでメンバー変数の公開をしていましたが、
C#ではプロパティー機能が存在していますのでこちらを使用しております。

プロパティーを使用していますが使い方としてはget/setメソッドと同様の
使い方しかしてないので、なぜこの仕様が実装されたのか理解できていません。

もしよろしければ理由などについて解説していただけませんでしょうか。
面倒でしたら参考URLをいただければそちらで勉強したいと思います。
136デフォルトの名無しさん:2009/02/12(木) 14:06:20
137デフォルトの名無しさん:2009/02/12(木) 14:46:56
>>135
http://www.atmarkit.co.jp/fdotnet/special/java2cs/java2cs_01.html
「あたかも公開しているかのように振舞う使い方」ができるからでは?
138デフォルトの名無しさん:2009/02/12(木) 15:39:05
単にタイプ数が減るからだろ
139デフォルトの名無しさん:2009/02/12(木) 16:01:24
>>136
>>137

・呼び出しコーディング非効率の改善
・リフレクションを使うにあたっての非効率の改善

この2点を解消しているってことなのでしょうか?

「あたかも公開しているかのように振舞う使い方」は、
呼び出しコーディング非効率の改善と捕らえてよいのかな・・・。
140デフォルトの名無しさん:2009/02/12(木) 16:09:17
リフレクションを使って見るとわかるけれど、プロパティーはフィールド(変数)とも
メソッドとも区別されている。概念として言語レベルでサポートされている。それが
利点の全て。高級言語なのだから。
 
get_foo, set_fooだと、あるパラメタを取得、設定するメソッドである事をプログラマが
名前で示す単なる慣習に過ぎないけれど、C#ではプロパティという概念によって取得、
設定という行為を特別扱いしている。つまり、get, setメソッドという慣習の事をJAVA言語
は``知らない''けれど、JAVAプログラマは``知って''いた。つまりJAVAプログラマも無意識
にプロパティという概念を持っていたわけ。しかしその概念をJAVAは``知らなかった''。
一方でプロパティという概念をC#は``知っている''。たとえば、あるクラスが持っている
プロパティの一覧を取得するなんて事もリフレクションによって可能。プログラマが扱って
いる概念を言語がサポートしているのは、できる事が増えるわけじゃないけど、高級言語では
素直に喜ぶべき事。それだけ構造性が増すのだから。
 
まとめると、JAVAでも同じ事を``プログラマが''やっていたんだから、``言語が''同じ事を
やってくれるのを素直に喜べば良い。新しい事ができるわけではないから、使い方はJAVA
と同様で全然良い。ぶっちゃけ、get_foo, set_booとタイプミスしなくて済む機能くらいの
認識でも良い。
141デフォルトの名無しさん:2009/02/12(木) 16:12:24
追記:get, setの中で取得/設定とは言い難い処理まで書けてしまうという問題点はJAVAと同じ。
ただし、C#というか.NETではむしろ逆にプロパティの設定に伴う副作用を積極的に活用する傾向
がある。時々UI関係で面白い事例に出くわす。たとえば、フォームのClientSizeを設定すると
フォームのサイズがClientSizeに合わせて調節されるので、一度、フォームのサイズがおかしく
なるバグを修正するためにthis.ClientSize=this.ClientSizeという字面上は超怪しいコードを書いた
事がある。(とあるツールのアドイン開発で、ロード側の問題なので対症療法するしかなかった)
 
でも、get, setの副作用は標準ライブラリ以外では濫用すべきではないと思う。そいういう意味
では、JAVAのget_foo, set_fooと本当に同じで良い。自動プロパティなんてのも実装されたし
活用してみたらどうだろう?
142135:2009/02/12(木) 17:34:12
>>140-141

判りやすい説明感謝します。
これからは積極的にプロパティーを使って生きたいと思います!
143デフォルトの名無しさん:2009/02/12(木) 19:56:47
プロパティに関しては否定的な意見もあるけどね。
以下は プログラミング.NET Framework (Jeffrey Richter著, Microsoft Press出版) から
あくまで参考程度に、こういう見解もあるということで。

9.1.1 プロパティを賢く設計する
 個人的には、筆者はプロパティが好きではありません。Microsoft.NET Framework
やプログラミング言語でのサポートがなければよかったと思っています。理由は、
プロパティはメソッドであるのにフィールドのように見えるからです。この問題は
大きな混乱を招いてきています。プログラマがフィールドにアクセスしているコードを
見て仮定してしまうことが、プロパティにおいては誤っていることがあります。例えば、
次のようなことです。

・プロパティは読み取り専用または書き込み専用にできますが、
 フィールドは常に読み書きできます。プロパティを定義するときはgetとset
 のアクセサメソッドを両方提供するのが最善策です。
・プロパティのメソッドは例外をスローすることがあります。
 フィールドは例外をスローしません。
・プロパティはメソッドのoutやrefの引数には渡せません。フィールドは渡せます。
・プロパティのメソッドは実行に長い時間がかかることがありますが、フィールドへの
 アクセスはいつもすぐに実行が完了します。プロパティを利用する一般的な理由は、
 スレッドの同期を取ることです。これはスレッドを永遠に止めてしまうかもしれない
 ことを意味します。したがって、スレッドの同期が必要な時にプロパティを使うべきでは
 ありません。このような状況ではメソッドを利用するほうが好ましいでしょう。また、
 クラスがリモートからアクセスできる(たとえばクラスがSystem.MarshalByRefObjectから
 派生している)場合、プロパティメソッドの呼び出しはとても遅くなることがあります。
 したがって、プロパティよりメソッドの方が好ましいでしょう。筆者の私見ですが、
 MarshalByRefObjectから派生しているクラスではプロパティは使うべきではありません。

(続く)
144デフォルトの名無しさん:2009/02/12(木) 19:57:31
(続き)

・続けて繰り返し呼び出された場合、プロパティは毎回異なる値を返す可能性がありますが、
 フィールドは常に同じ値を返します。System.DateTimeクラスにはNowという読み取り専用の
 クラスがあります。このプロパティは現在の日付と時間を返すため、呼び出されるたびに
 異なる値を返します。この実装は誤りで、MicrosoftでもNowをプロパティではなくメソッドに
 直せるものなら直したいと考えています。
・プロパティメソッドは副作用を持つ場合がありますが、フィールドへのアクセスには
 そのようなことはありません。言い換えると、型のユーザーがさまざまなプロパティに
 値を任意の順序で設定できて、型の動作に違いがでないようにすべきだということです。
・プロパティメソッドは追加のメモリを必要とするか、オブジェクトの状態の一部では
 ない何かへの参照を返して、そのオブジェクトを操作しても元のオブジェクトには
 何の影響もない場合があります。フィールドは常にオブジェクトの状態の一部であることが
 保証されているオブジェクトへの参照を返します。コピーを返すようなプロパティを利用すると
 開発者は混乱します。また、このような仕様がドキュメント化されていないこともあります。

 プロパティは使われすぎているというのが筆者の懸念です。プロパティとフィールドの違いを
一覧すれば、プロパティを定義する方が使いやすく、かつ開発者の混乱を招かないパターンは
非常に少ないことに気づくでしょう。プロパティによって得られるのは、少々単純化された構文
だけです。パフォーマンスの向上もない上に、コードは読みづらくなります。もし筆者が、.NET
Frameworkとコンパイラの設計に関わっていたら、プロパティを提供することはなかったでしょう。
代わりに、開発者にGetXxxやSetXxxというメソッドを必要に応じて定義させるようにしていたこと
でしょう。コンパイラが何か特殊な、単純化された構文でこれらのメソッドを呼び出せるように
したいなら、そうすればよかったのです。ですが、フィールドアクセスとは異なる構文を使って
欲しいと思います。開発者が何をしているのか(つまりメソッドを呼び出しているということを)
しっかり認識できる構文ということです。
145デフォルトの名無しさん:2009/02/12(木) 19:58:19
public class MyGenericClass<T> where T:(Intとかfloat){
  T example(T a,T b){
    return a * b;
  }
}
operator*が使える型を取るときwhereにはなんと書けばいいのでしょう?
146デフォルトの名無しさん:2009/02/12(木) 20:00:13
>>145
今のところできません
147145:2009/02/12(木) 20:08:29
できませんか。コピペでbyte,short,ushot,,,,ulongつくります
148デフォルトの名無しさん:2009/02/12(木) 20:41:14
演算子の実装を表すインタフェースが欲しいってのは常々議論されているけれど、
C#4.0でも解決されないみたいだね。
149デフォルトの名無しさん:2009/02/12(木) 20:49:24
ExpressionTree使う
150デフォルトの名無しさん:2009/02/12(木) 21:14:47
>>144
つまりWPFのSetValue(オブジェクト、型.依存プロパティ)はグッドという事か。
これはこれで超冗長だけど、まあロジカルではある。しかも添付プロパティなんて
芸当も可。
151デフォルトの名無しさん:2009/02/12(木) 21:39:27
>>148
よく知らずに突っ込むけど、そんな議論あるの?
演算子って普通staticじゃないか
152デフォルトの名無しさん:2009/02/12(木) 22:05:41
インタフェースというより、ジェネリック制約が欲しいという話のことが多い気がする。
いずれにせよ、目的は>>145をどうにかしたいということなんだけど。
153デフォルトの名無しさん:2009/02/12(木) 22:12:27
>>151
いやだから>>145みたいなケースで型制約を
where T: Imultiplicative
とか書ければ万事オッケー、みたいな。別に演算子の実装をインタフェースの実装でやりたい
わけじゃなくて、演算子の実装を表す型制約があって欲しいという事。だから
where T: multiplicative
って書けて欲しい、という話とも言える。

「C# 四則演算 ジェネリック」でググると、MSDNフォーラムとかわんくま同盟の人たち
とかの議論がわんさか出てきます。

>>149はどういう風にやるの?ExprssionTree詳しくないのでちょっとイメージできないんだけど。
154デフォルトの名無しさん:2009/02/12(木) 22:34:10
>>151
ここの過去スレでも出てきてるね
http://www.23ch.info/test/read.cgi/tech/1194956418/295-312
他にもあったような
155デフォルトの名無しさん:2009/02/12(木) 22:38:44
>>151
ここの過去スレでもやってた
http://www.23ch.info/test/read.cgi/tech/1194956418/295-312
156デフォルトの名無しさん:2009/02/12(木) 22:40:03
ごめんね
>>154-155は書き込み失敗したかと思った
157デフォルトの名無しさん:2009/02/12(木) 22:53:25
>>153
T example(T a, T b)
{
158デフォルトの名無しさん:2009/02/12(木) 22:53:58
ミスったので帰ります
159デフォルトの名無しさん:2009/02/12(木) 23:16:17
160デフォルトの名無しさん:2009/02/12(木) 23:40:37
ごめんね
次からそうする
161デフォルトの名無しさん:2009/02/13(金) 00:17:39
>>143
プロパティ否定するのなんて、初期のJava信者だけだろ。
そのJavaにもプロパティ実装されて、否定してた連中涙目。
162デフォルトの名無しさん:2009/02/13(金) 00:22:42
java7のプロパティもクロージャもキャンセルのふいんき(なぜかr)らしい。
163デフォルトの名無しさん:2009/02/13(金) 00:34:30
プロパティは属性だから、それを求めるのに特定の機能が使いまわされやすいからな

string mText;
public bool IsEmpty
{ get { return this.GetIsEmpty(this.mText); } }
protected bool GetIsEmpty(string text)
{ return text == ""; }

みたいにGetIsEmptyを基底クラスにまとめて置けば、
継承先ではメンバ変数を渡すプロパティを書けばいいだけで楽。
164デフォルトの名無しさん:2009/02/13(金) 01:08:42
>>153
Expression Tree使うとこういうのが簡単に作れる
static class GenericCalculator<T> {
 private static readonly Func<T, T, T> add;
 static GenericCalculator() {
  var left = Expression.Parameter(typeof(T), "left");
  var right = Expression.Parameter(typeof(T), "left");
  add = Expression.Lambda<Func<T, T, T>>(Expression.Add(left, right)).Compile();
 }
 public static T Add(T left, T right) { return add(left, right); }
 //他の演算子も同様
}
165デフォルトの名無しさん:2009/02/13(金) 03:22:34
153です。
>>164
add=(Func<T,T,T>)((l,r)=>(l+r));って書くのと同じじゃん、と一瞬思ったけど、
Compile()は当然実行時評価なのかー!。
 
型制約が欲しい、というのとは話が違くて、足し算ができないと実行時に例外が投げられるのね。
勉強になった。
 
それなら、CodeDOMでも良いかな?

この手の議論って型制約の話とは別にダックタイピングができればなあ、って話にもなりやすい
けれど、それを無理やりやる方法があるって事だね。
166デフォルトの名無しさん:2009/02/13(金) 04:34:58
書いてみた。ごめん、164を使ってくれ。今は反省している。
    class Multiplier<T>
    {
        public T Mult(T l, T r)
        {
            string nameOfT = typeof(T).FullName;
            string assemblyOfT = typeof(T).Assembly.ManifestModule.FullyQualifiedName;
            CompilerResults cr = null;
167デフォルトの名無しさん:2009/02/13(金) 04:35:44
続き
            using (CodeDomProvider provider
                = new CSharpCodeProvider(new Dictionary<string, string>() { { "CompilerVersion", "v3.5" } })) {
                CompilerParameters cp = new CompilerParameters() {
                    GenerateInMemory = true
                };
                cp.ReferencedAssemblies.AddRange(new string[] { "System.Core.dll", "mscorlib.dll", assemblyOfT });
                string className = "Multiplier_" + nameOfT.Replace('.', '_');
                string namespaceName="GenericTest";
                string qualifiedClassName = namespaceName + "." + className;
                string source = "namespace " +namespaceName+"{ public class " + className + "{public " + nameOfT + " Mult(" + nameOfT + " l, " + nameOfT + @" r){return l*r;}}}";
168デフォルトの名無しさん:2009/02/13(金) 04:36:29
さらに続き
                cr = provider.CompileAssemblyFromSource(cp, source);
                if (cr.Errors.HasErrors) {
                    throw new Exception(String.Join(Environment.NewLine, cr.Errors.OfType<CompilerError>().Select(e => e.ToString()).ToArray()));
                }
                Type typeOfMultiplier = cr.CompiledAssembly.GetType(qualifiedClassName);
                Object multiplier = Activator.CreateInstance(typeOfMultiplier);
                MethodInfo multiplierMethodMult = typeOfMultiplier.GetMethod("Mult");
                return (T)multiplierMethodMult.Invoke(multiplier, new object[] { l, r });
            }
        }
    }
169デフォルトの名無しさん:2009/02/13(金) 06:08:29
同じ話題を
http://d.hatena.ne.jp/NyaRuRu/20060802/p1
で見つけたんだけど、ここに
------------------------------
.NET で動的に実行コードを生成する方法はいくつかあり,またその方法は増えつつあります.

    * (.NET 1.0 以降)CodeDOM やコンパイラによる動的コンパイル
    * (.NET 2.0 以降)Lightweight Code Generation (LCG)
    * (.NET 3.5 以降?)Expression Tree による動的コンパイル
--------------------------------
とあるので、俺のCodeDOMの方法は一応.NET1.0でも使えるという利点はあるみたい。
あと、このサイトではExpression Treeはコードのセマンティクスをデータ構造として保持
するために用いる、という哲学が示されていて、著者的には直ちにExpression Treeをコンパイル
するような使い方はしっくりしないらしい。まあでも>>166-168を書くくらいなら>>164
書くわな。

このサイトには>>164と同じ方針で作った演算子オーバロード付きの四則演算のジェネリック型
とそれを用いた複素数のジェネリック型のサンプルもある。この手の話って頻繁に繰り返されて
いるように見えるのでまとまった解決法はないと思っていたけれど、これはそのまま直ちに
利用可能だね。

夜中に目が覚めてしまったので色々書いてしまった。連投&長文すまない。
170デフォルトの名無しさん:2009/02/13(金) 06:16:59
足し算のためにデリゲート呼び出すのもインターフェース越しにアクセスするのも
現実的ではないでしょう
171デフォルトの名無しさん:2009/02/13(金) 07:58:44
そういう事書いてる奴誰かと思ったらやはりNyaruruか・・・
172デフォルトの名無しさん:2009/02/13(金) 08:26:23
>>170
パフォーマンス的に?

C++のテンプレートみたいな「超高機能なマクロ」にしないと決めてる以上、
それはしょうがない。

>>171
しかも、他のMVPが「いまさら」盛り上がってる中、
NyaRuRu さんだけは「そういえば昔書いたけど」だし。
173デフォルトの名無しさん:2009/02/13(金) 08:42:40
>>170
基本的な値型だけを対象にしたければ、素直に大量にオーバーロード書けば良いのでは?
まあその場合も型制約でOR論理を使いたい、ってな議論はできるけれど、興味深くはない。
174デフォルトの名無しさん:2009/02/13(金) 08:50:03
>>173 みたいな方法も、
ソース冒頭に

using ValueType = System.Double;

とか書いておいて実装して、
このソースをコピって冒頭の1行書き換えるだけで可能だしね。

美しくはないけども、何とかならないレベルじゃない。
175デフォルトの名無しさん:2009/02/13(金) 08:50:09
別にintと、あとdoubleがあれば十分じゃないかと思うけど
176デフォルトの名無しさん:2009/02/13(金) 08:51:09
>>175
あとは BigInteger とか、実装してる人がいるなら Rational とかかな。
177デフォルトの名無しさん:2009/02/13(金) 09:09:42
それこそ遅くて使いものにならないだろうけど
C#4.0ならdynamic使えばそのままleft + rightと書けるな
178デフォルトの名無しさん:2009/02/13(金) 10:47:41
Nyaruruって大学生だっけ?

ガキに「さん」付けか・・・
179デフォルトの名無しさん:2009/02/13(金) 11:12:29
能力も無いのに自分の方が年上ってだけで
見下した態度をとるのはみっともないぞ
180デフォルトの名無しさん:2009/02/13(金) 12:58:20
Nyaruruって大学生だったのか
181デフォルトの名無しさん:2009/02/13(金) 13:24:55
Nyaruruが大学生だったら俺プログラマやめるわ
182デフォルトの名無しさん:2009/02/13(金) 14:26:16
なさけねー。
183デフォルトの名無しさん:2009/02/13(金) 14:34:24
昔はC++を使っていて色々研究とかしてたけど・・・
いろんな言語使っている間に言語の濃い部分を積極的に学ばなくなってしまったな。

これは退化してるのかね・・・
184デフォルトの名無しさん:2009/02/13(金) 14:38:49
羽根が短くなったのを退化ということもあれば進化ということもある。
185デフォルトの名無しさん:2009/02/13(金) 15:26:43
低水準な所を濃いと言ってるならアセンブラかマシン語でもやれば?
186デフォルトの名無しさん:2009/02/13(金) 15:47:23
誰もそんなこと言ってないと思うが
できるだけ楽に扱えるものを使って生産的なことをする人と楽に扱えるようにするために深い部分まで追及する人とどっちが優れてるとかないだろう
前者のが需要あるし
187デフォルトの名無しさん:2009/02/13(金) 16:42:20
>>185
すでにアセンブラは68系と86系をあわせて6年くらいはやってましたよ。
188デフォルトの名無しさん:2009/02/13(金) 16:46:24
ひよっこだな
189デフォルトの名無しさん:2009/02/13(金) 16:49:26
甘い、甘すぎるよ。

俺なんて、C# を15年以上やってるけど、まだまだ力不足を感じてる・・・
190デフォルトの名無しさん:2009/02/13(金) 16:52:11
俺なんてもう100年になるかな
191デフォルトの名無しさん:2009/02/13(金) 17:38:48
紀元前からD言語を触ってるが、まだ完成しない
192デフォルトの名無しさん:2009/02/13(金) 17:41:40
みんなたくましいなw
193デフォルトの名無しさん:2009/02/13(金) 20:59:47
生まれて間もない猛者が、ここに質問してきた事もあったしw
194デフォルトの名無しさん:2009/02/13(金) 21:35:55
>>177
ジェネリクスと同時に使うなら、dynamic よりも式木使い方がお勧め。

>>178
院生だろ。
あと、歳の上下で態度変えてたら見ず知らずの人と付き合いづらいよ。
195デフォルトの名無しさん:2009/02/13(金) 22:23:41
ネット上で「君」とかつけて呼ぶの?
196デフォルトの名無しさん:2009/02/13(金) 22:34:35
厳密にはC#の問題ではないかもしれないけど、ちょっとお助け願います。
Genericコレクション型のインスタンスをリモート処理時に参照渡しにするにはどうすれば良いでしょうか。

例えば、

class OtherSample : MarshalByRefObject {
  List<int> intList;
}

というコードでは、OtherSampleは参照渡しですがintListは自動的にシリアル化され値渡しマーシャリングされてしまいます。
なので、アクセッサを付けてintListを取得しても、リモート化されたインスタンスの値を変更できません。
適宜 intList に対するメソッドをOtherSampleに追加するしかないのでしょうか。
197デフォルトの名無しさん:2009/02/13(金) 23:55:43
メソッド作ってなんか変わる?
198デフォルトの名無しさん:2009/02/14(土) 00:38:48
メソッド作ってから彼女もできるし、ギャンブルでも大当たりだしいいことづくしだよ
199デフォルトの名無しさん:2009/02/14(土) 00:46:04
class OtherSample : MarshalByRefObject {
  List<int> intList;
  public void AddInt( int n ) {
   intList.Add( n );
  }
}

で AddInt を使えばプロキシを介して参照渡しの OtherSample のメソッドが実行される。
そうすっと、OtherSampleの参照 の intList に値が追加される。
200デフォルトの名無しさん:2009/02/14(土) 10:13:33
株価ボード的なアプリを作ろうと思っているのですが質問させてください

FormLoad時に動的にLabelを3000個ぐらい生成してるのですが
起動に1〜2分ぐらいかかってしまいます。

何か良い方法はないでしょうか?
201デフォルトの名無しさん:2009/02/14(土) 10:17:09
自分で描画しろよ(´・ω・`)
202デフォルトの名無しさん:2009/02/14(土) 10:52:05
XNA使ってスプライトテキストで描画でもいいかも。
その場合はフォームとか使えないけどね。
203デフォルトの名無しさん:2009/02/14(土) 11:01:13
GDIで十分じゃね
204デフォルトの名無しさん:2009/02/14(土) 12:37:57
確かにGDIだけでも十分かな、ダブルバッファを有効にすればアニメーションもある程度滑らかだしね。
205デフォルトの名無しさん:2009/02/14(土) 12:50:24
>200
Windows.Formsでコントロールを大量に作るとどうやってもそうなるよ。
そういう使い方ならWPFで同じことやれば結構スムーズに動きそうな気がする。
206200:2009/02/14(土) 12:59:12
>>201-205
皆さん、どうもです。

VC++(MFC)で過去に作ったときは
CStatic の派生クラスを何個も作ってやってたので
Labelの派生クラスで何とかなるかと思ったら起動が遅くて・・・

ありがとうございました
207デフォルトの名無しさん:2009/02/14(土) 13:03:09
そもそも3000個も表示するスペースがあるのか
一文字一個なのか
208デフォルトの名無しさん:2009/02/14(土) 13:14:08
そりゃスクロールするんだろ…
209デフォルトの名無しさん:2009/02/14(土) 13:23:13
ばらけた文字が集まったりとか盛大にアニメーションしたりして。

画面に表示される分だけプールから取得して再利用するようにすれば、
new()のコストかからないし、3000個も作らなくてすむんじゃない?

WPFでも詳しくはしらないけれど、スクロール可能な場合に画面に表示される部分だけ
子コントロールを生成するような仕組みがあったはず。ListViewとかだっけ?
210デフォルトの名無しさん:2009/02/14(土) 13:28:06
それもバーチャンリストの場合だな
211デフォルトの名無しさん:2009/02/14(土) 13:41:02
ウィンドウハンドルの上限って10000くらいじゃなかったっけ
そんな使い方してたらすぐ足りなく
212デフォルトの名無しさん:2009/02/14(土) 13:43:02
.NET のラベルって、ウィンドウもってんだよな。
デスクトップヒープの関係もあるし、3000は多すぎだろ。
213デフォルトの名無しさん:2009/02/14(土) 13:53:05
WPF なら確かにそういう問題ないけども読み込みに時間は
かかるわなぁ
214デフォルトの名無しさん:2009/02/14(土) 13:53:50
いうほどかかんねえよ
215200:2009/02/14(土) 14:29:58
>207
一画面だけで300銘柄(1銘柄辺り10要素)あるので
3000個必要なんですよね
画面サイズ的にはUXGAで余裕ありです。

データ更新時にデータを適当な形に処理して
Redrawする感じでVC++ではやってました。
216デフォルトの名無しさん:2009/02/14(土) 14:51:40
http://www.woodensoldier.info/soft/AlarmTimer.htm

これをReflector使ってソース出して動かせるようにしたいんですが
できる人いませんか?
217デフォルトの名無しさん:2009/02/14(土) 14:53:43
何が知りたいの?
218デフォルトの名無しさん:2009/02/14(土) 14:55:22
>>216
別に難読化されてるわけでもなく、逆アセできたけど?
何が問題なの?
219デフォルトの名無しさん:2009/02/14(土) 14:58:07
フォームの形つくって、ソースをコピペして貼り付けてっても
エラーで出てしまうんです
220デフォルトの名無しさん:2009/02/14(土) 15:00:00
エラーが出るとこ直していけばいいじゃん・・・
221デフォルトの名無しさん:2009/02/14(土) 15:00:13
そうですか。あなたには無理ですね
222デフォルトの名無しさん:2009/02/14(土) 15:00:23
まんま使えるとは限らんよ
ゴミ君
223デフォルトの名無しさん:2009/02/14(土) 15:00:56
Reflector のプラグインで、.cs を吐いてくれるやつがあったな・・・
それ使えばいいんじゃね?
224デフォルトの名無しさん:2009/02/14(土) 15:01:18
その上でソース作ってくれる人いませんか
225デフォルトの名無しさん:2009/02/14(土) 15:02:55
いません。
226デフォルトの名無しさん:2009/02/14(土) 15:03:24
>>223
kwsk!
227デフォルトの名無しさん:2009/02/14(土) 15:06:15
ぐぐれ
228デフォルトの名無しさん:2009/02/14(土) 15:07:37
なにが「kwsk!」だよw
それ質問する態度じゃねえじゃん
エロマンガの作者名じゃねえんだから、もうちょっと考えろよ
229赤西仁:2009/02/14(土) 15:32:19
1年間悩んでます。お力をお貸しください。

アークザラッドUというタイトルのゲームの、ゲーム画像(歩行画像など)を抽出したいのですが、
かれこれ1年ほど経ちますが、なかなかうまくいきません。
*もちろん抽出した画像は個人範囲内で利用するつもりです。

◆試してダメだったこと

 ネット上からダウンロードできる、ありとあらゆる抽出系ツールを試した。
 (ちなみに他のゲームはほとんど抽出可能)

◆教わったこと

 ・アークザラッドUは独自の画像形式を使っているから抽出できない。
 ・PS上で表示されてるということは絶対に摘出はできるはず。

◆抽出は不可能ではないということを知ったとき

 2ちゃんねるで質問したところ、
 ある方が実際にキャラクターの歩行画像を抽出して
 私が立てたスレにアップしてくださいました。

スクリーンショットじゃ嫌なんです。どうか皆さん、お力をお貸しください。
230デフォルトの名無しさん:2009/02/14(土) 15:35:43
アークザラッドII って、C# で作られてるの?
そうでなきゃ、スレ違い、ってことで。
231デフォルトの名無しさん:2009/02/14(土) 17:18:47
>>223
ずっと探してるけど見つかりません
お願いします・・・
232デフォルトの名無しさん:2009/02/14(土) 17:21:33
>>231
Reflector のプラグインなんてあまり数ないのに探して見つからないとかありえない。
233デフォルトの名無しさん:2009/02/14(土) 17:22:50
234デフォルトの名無しさん:2009/02/14(土) 17:34:22
使い方教えてください
童貞なんでう
235デフォルトの名無しさん:2009/02/14(土) 17:51:58
チョコ食って寝ろ
236デフォルトの名無しさん:2009/02/14(土) 19:36:20
>215
DataGridとかListViewを使った方がいいんじゃない?
237デフォルトの名無しさん:2009/02/14(土) 19:44:37
>>233
はやくこれの使い方教えろよグズども
238デフォルトの名無しさん:2009/02/14(土) 19:59:52
まずパンツを被ります
239デフォルトの名無しさん:2009/02/14(土) 20:06:34
次にズボンを脱ぎます
240デフォルトの名無しさん:2009/02/14(土) 20:24:54
おまえら親切すぐる
241デフォルトの名無しさん:2009/02/14(土) 20:26:52
姉ちゃんのパンツを被ってズボンを脱いだので教えてください
242デフォルトの名無しさん:2009/02/14(土) 20:30:13
ケツをバンバン両手で叩きながら白目をむきます。
243デフォルトの名無しさん:2009/02/14(土) 20:47:51
切れて本当にすみませんでした、教えてくださいお願いします
244デフォルトの名無しさん:2009/02/14(土) 22:14:58
まずは>>241の写真をうpしよう。
245デフォルトの名無しさん:2009/02/14(土) 22:27:33
             __
            /-、r-ヽ
            |K>|K7|
          , へ 人ー^ー人 , へ
        / リノノ||  ̄ 7/巛 _ \
   ,.-― '" ゝー、) ||   .// (/ `  ` ー-、
  /    /_    ||  //    _ \   )
 (__/ ̄   |    ',Y/    /    ̄`ー '
  __     \   ||   /    __
 /XXXX<>x,..、_  l  ハ  | _,... rxXXXXXA
 |XXXX|XXX|::::l` ´ Y   ! '´  l::::|XXX|XXXX|
 |XXXX|XXX|::::|   |  |   |::::|XXX|XXXX|
 XXXX/\Xソ::ノ   ゝ-く     ゝ::ゝ/ lXXXX|
246デフォルトの名無しさん:2009/02/14(土) 23:19:10
コピペ君って馬鹿だな、まで読んだ。
247デフォルトの名無しさん:2009/02/15(日) 00:31:01
>>243
[View]-[Add-Ins]
248デフォルトの名無しさん:2009/02/15(日) 02:29:54
>>241
うpまだ〜?
249デフォルトの名無しさん:2009/02/15(日) 04:04:57
       j//      /\ヽ∨//∠ヽ.    \\. \
      _/      ∠≠ニ二ニ≧=<´  ヘ.     ', ヘ\ヽ.      /
 _ -‐ ´/  ,   -‐´、_, '⌒`^  、 \::\ } l     ヽヘ ヽ}     /         _|_ \
   ̄ フ´,  /             丶\::V| |      Vl       ,'             |____
.  //./                   `Vヽl |      ヽ ' .     |         /|    ヽ
  / ,イ/                    Y/,       ヽ.\   |.   l       (_ノ  _ノ
  |/ /       |               ∨ヘ.      ト、 \_ |.   |
.  /     /  /  l:     /  l           ∨i    、   |  ̄   !  l       lヽ│/ /
  l│  /  イ  ,イ.    l  ト、ヽ     / | :l :|   |  l      |   ヽ_ノ   !ー┼‐ |‐┬
  | |   l_メ、」_,;./l     L  l V   ∧ /  :|/   ハ.  ト、   |          |./│ヽ l  |
  | ト.  |.____ ヽ    l´ヽ{ _⊥イ イ /   /    / l/⌒ヽ   .|  ー┼─ └── l  |
  | | ヽ | 、i┘::::i  \  | r┬┬‐┬ァ V  ,∧.   ,'  ´       |   ー┼−
  レ   ヽ!  ゝ- '   \l  i,.┘:::::iノ / ,/〉│ :| {         |    _⊥_     l   |
.      7/l/l/   、     `'ー‐ ' ∠≠r'ノ:jノ :| |         |   (__丿 ヽ    レ  |
     λ    `i`ァー-- 、  /l/l/l ∧‐'.:|:::|  ハ ',        |              l
      `、     レ'    ',     ,/| ::| :|:::| ./ ヽ_>      _|   __|_       _ノ
        ` = 、 '、    ノ  ,.イ∧'|:l.:/l:::|´            \    ._|
              `>-r  =ニi´、.,_`::: |:| { |:::l             |  .(_|
          _,.イ´ヽ.7   /  /:\;八:V:ノ                 |    ノ
       /7:::::!  ○O'´  /::::::::/ヽ.  
250デフォルトの名無しさん:2009/02/15(日) 11:57:16
>>247
なぜかできないので、替わりにgenerateしてもらえませんか
251デフォルトの名無しさん:2009/02/15(日) 13:48:11
>>247
それやってexe選んでも何も起こらないんですけど
252デフォルトの名無しさん:2009/02/15(日) 13:52:24
つか、俺の環境だと、アセンブリ右クリックして、Export でいけるな・・・
253デフォルトの名無しさん:2009/02/15(日) 13:59:54
うpお願いします><
254デフォルトの名無しさん:2009/02/15(日) 14:00:57
      ハ,,ハ
     ( ゚ω゚ )  お断りします
    /    \
  ((⊂  )   ノ\つ))
     (_⌒ヽ
      ヽ ヘ }
 ε≡Ξ ノノ `J
255デフォルトの名無しさん:2009/02/15(日) 14:05:10
AlarmTimer\Property.cs
AlarmTimer\FormMain.cs
AlarmTimer\FormOption.cs
AlarmTimer\Properties\Settings.cs
AlarmTimer\Properties\Resources.cs
AlarmTimer.Properties.Resources.resources
AlarmTimer.FormMain.resources
AlarmTimer.FormOption.resources
AlarmTimer.AlarmTimer16Mono.ico
AlarmTimer.AlarmTimer16.ico
AlarmTimer.csproj
0 error(s).
Done.


こう出たんですがどこにエキスポートされてるんですか
256デフォルトの名無しさん:2009/02/15(日) 14:06:57
んで、警告が一個でるけど、exe の方はビルドもOK。
->VS2008 へアップグレード後

・ライブラリは nunit が必要らしいので、逆アセせずに参照設定を変更して利用

簡単にできるじゃん・・・
257200:2009/02/15(日) 14:08:28
DrawString で右寄せとか出来ますか?
株価が左寄せじゃ見にくい・・・
258デフォルトの名無しさん:2009/02/15(日) 14:12:01
>>257
StringAlignment
259デフォルトの名無しさん:2009/02/15(日) 14:16:19
Far
260デフォルトの名無しさん:2009/02/15(日) 14:59:57
>>256
エクスポートできましたが1エラー2警告出てデバック開始してもだめでした・・・
261デフォルトの名無しさん:2009/02/15(日) 15:01:11
>>260
じゃあ、エラーを修正しろよ。つーか、初心者スレ行けハゲ
262200:2009/02/15(日) 22:21:05
>258-259
本当にありがとう、そこがよくわからなくて困ってました
おかげで外観は完成しました。 ttp://www.uploda.org/uporg2020293.png

263デフォルトの名無しさん:2009/02/15(日) 22:23:37
なんとなくすごそう。これ、コントロールはいくつ使ってるの? 全部 DrawString() で描画?
264デフォルトの名無しさん:2009/02/15(日) 22:37:30
WPF使いたくなるな
265デフォルトの名無しさん:2009/02/15(日) 22:43:43
>>262
DataGridView はなんで使わないんだ?
266デフォルトの名無しさん:2009/02/15(日) 22:48:44
でも個人的に好みだな、この外観はw
267デフォルトの名無しさん:2009/02/15(日) 23:36:52
目に優しいな
268デフォルトの名無しさん:2009/02/16(月) 00:51:39
再うっぷ汁(´・ω・`)
269262:2009/02/16(月) 01:46:53
>>263-265
前の方にアドバイス頂いたので全部
DrawStringとFillRectangleとDrawLinesで書きました。
他のはややこしそうだったので・・・

まあ、こっちは意図通りに動いてくれれば
最新技術だろうと枯れた技術だろうと関係ないので
これで満足しています。

>>267
かなり目に・・・ですw
しかし、この色合いがお金を産み出してくれるんで仕方なしです。
270デフォルトの名無しさん:2009/02/16(月) 22:43:08
動画をタグで管理するソフトを作りたいのですが、
タグ情報はどうやって保存するべきでしょうか?
xml?SQLで?その他?

イメージ的にはiTunesみたいな感じです
271デフォルトの名無しさん:2009/02/16(月) 22:45:43
好きにしろよ
272デフォルトの名無しさん:2009/02/16(月) 22:56:43
…検索速度とかバランス考えると組み込み DB がいいんでない。
エクスポートインポート機能ありな前提で。
273デフォルトの名無しさん:2009/02/16(月) 22:58:48
AdobeReaderのdllを使わない、
C#から操作できるロイヤリティフリーな
PDFビューアコントロールでお勧めありませんか?
274デフォルトの名無しさん:2009/02/16(月) 23:04:28
>>262
再ウプして欲しい。
275デフォルトの名無しさん:2009/02/16(月) 23:13:24
何をだよw
276デフォルトの名無しさん:2009/02/16(月) 23:14:10
SSでしょ。俺も404で見れなかった。
277デフォルトの名無しさん:2009/02/16(月) 23:19:51
278デフォルトの名無しさん:2009/02/17(火) 00:52:51
まともにできてるじゃないか。色遣いは別としてw
279デフォルトの名無しさん:2009/02/17(火) 01:16:55
この色遣いはないわ-
280デフォルトの名無しさん:2009/02/17(火) 01:39:04
せめて赤青黄の三色に統一するくらいの気概がないと。
281デフォルトの名無しさん:2009/02/17(火) 01:43:16
創価乙
282デフォルトの名無しさん:2009/02/17(火) 01:44:01
そうか?
283デフォルトの名無しさん:2009/02/17(火) 02:13:40
じゃあ赤黄緑で。
284デフォルトの名無しさん:2009/02/17(火) 02:13:48
大作だな
285デフォルトの名無しさん:2009/02/17(火) 06:46:12
期待してたけどこの色遣いは・・・
286デフォルトの名無しさん:2009/02/17(火) 09:01:41
この色に意味があるんだろう。なれた色で変えたくないとか。
287デフォルトの名無しさん:2009/02/17(火) 09:04:35
あの色は夢で見た神様のお告げらしいよ
288200:2009/02/17(火) 13:44:31
ttp://uproda.2ch-library.com/src/lib106249.png
金融系は ↑=赤、↓=緑 って決まってるからね・・・

ところで、小数2桁まで表示させたい(2 も 2.00 みたいに)とき
そうすればいいのかな? ToString("0.##") じゃだめみたいね。
289デフォルトの名無しさん:2009/02/17(火) 13:46:07
>>288
別に「決まって」はいない
証券会社のツールいろいろ使ってればデフォルトが逆のやつもある
だから色はカスタマイズできるものが多い
290デフォルトの名無しさん:2009/02/17(火) 13:55:24
291デフォルトの名無しさん:2009/02/17(火) 14:30:11
>>288
"0.##"って書いていて、どうして'0'の意味と'#'の意味を知らないのか謎だ。
292デフォルトの名無しさん:2009/02/17(火) 17:32:39
自作クラスにBeginReceiveやBeginReadのような非同期動作のメソッドを加えたいのですが、どのように実装するものでしょう?
293デフォルトの名無しさん:2009/02/17(火) 17:38:14
>>292
TCPの非同期通信したいの?
だったらググレばいっぱい出てくるよ
一言でレスできる内容じゃないし。
ESPして余計なこというとゲームで使うなら
非同期するよりポーリングしたほうがスマート。
294デフォルトの名無しさん:2009/02/17(火) 17:47:06
>>292
非同期メソッド、非同期デリゲートで検索汁
295デフォルトの名無しさん:2009/02/17(火) 17:55:04
>>293.294さん
レスありです

>>293さん、聞き方がまずくてすいません、通信ではなくて非同期に処理させたいんです
いちいちスレッドつくるのもめんどいなあと思って、そういやBeginなんたらとかはどうやって実装してるんだろ?聞いちゃえ、と

>>294さん、あなたがエスパーでよかった、ありがとうございます
296デフォルトの名無しさん:2009/02/17(火) 22:51:10
297デフォルトの名無しさん:2009/02/17(火) 23:01:12
ウ、ウンコ色!!
298デフォルトの名無しさん:2009/02/17(火) 23:13:33
赤と緑は色盲的に最悪な色使い。全く区別がつかない。
色盲であると告白している小堺一機の
「紅葉が分からない」という言葉によく現れている。
その代わり赤紫と紫の区別はよくつくんだがね。

緑と紫なら色盲の人でもそうでない人でも区別しやすい。
299デフォルトの名無しさん:2009/02/17(火) 23:14:41
赤と緑がわからない って言うけど、その2色は何色に見えるんだろうと思ったことがある

しかし色盲の人のことまで考えるかどうかはさすがに作る人の自由かと
300デフォルトの名無しさん:2009/02/17(火) 23:15:35
>しかし、この色合いがお金を産み出してくれるんで仕方なしです。
から、この色合いが要求仕様なんだろ。
これに文句を言っても仕方がないよ
301デフォルトの名無しさん:2009/02/17(火) 23:16:32
まあ単に個人で作るソフトならそうだわな。
オプションで色盲者のための色使いに切り替えられるようにしておくと優しさを感じるが。
302デフォルトの名無しさん:2009/02/17(火) 23:19:09
>>299
色盲って黄色人種男性の5%、白人男性の8%、黒人男性の4%もいるんだぜ。
日本人男女40人のクラスの1人くらいは色盲ってくらい結構な割合だ。
黒板に赤いチョークで書かれると見辛いって言ってた人はいなかった?
多分その人は色弱か色盲だよ。
303デフォルトの名無しさん:2009/02/17(火) 23:19:41
StreamReader使った後に元のStreamを閉じたくないときは
StreamReaderはDisposeせずに放置していいの?
304デフォルトの名無しさん:2009/02/17(火) 23:21:48
うんそう
305デフォルトの名無しさん:2009/02/17(火) 23:25:49
>>302
で、色盲専用に作り直せっていいたいわけ?
306デフォルトの名無しさん:2009/02/17(火) 23:26:02
そういうとき、Disposeしないことが心配なので、Flushすることにしている。
307デフォルトの名無しさん:2009/02/17(火) 23:26:41
>>305
なんで専用なんだ?
308デフォルトの名無しさん:2009/02/17(火) 23:26:46
StreamReaderそのものはDisposeしちゃってもいいんじゃないの
309デフォルトの名無しさん:2009/02/17(火) 23:28:15
>>307
言い方が悪かったな 訂正する

色盲がわかりやすい色を表示できるように作り直せっていいたいわけ?
310デフォルトの名無しさん:2009/02/17(火) 23:30:08
色盲ネタはいい加減スレ違いだろ・・・
311デフォルトの名無しさん:2009/02/17(火) 23:30:26
>>309
その方が望ましい。
わざわざユーザの幅を狭める利点は無い。
312デフォルトの名無しさん:2009/02/17(火) 23:31:37
>>308
StreamReaderをDisposeしたら元のストリームも一緒に閉じられる
313デフォルトの名無しさん:2009/02/17(火) 23:36:23
>>311
望ましいが、現実には難しいだろうな。
むしろ、OSのユーザ補助機能のレベルで実装すべき
314デフォルトの名無しさん:2009/02/17(火) 23:37:02
>>302
けっこうみんな「みづらい」とは言ってたけどなあw
いつも後ろの席だったからかも知れないけど
315デフォルトの名無しさん:2009/02/17(火) 23:39:15
>>311
お前が作ったいままでのソフトは、全部色盲対応なの?
316デフォルトの名無しさん:2009/02/17(火) 23:41:13
自由に色設定できれば問題ないでしょ。
でも自分専用なら無理にやる必要もないと思うが。
317デフォルトの名無しさん:2009/02/17(火) 23:42:35
なにも色設定しないのが一番
318デフォルトの名無しさん:2009/02/17(火) 23:44:14
見にくいと見えにくいは違うからなぁ
色が見えていて派手で目が疲れるということと、
色そのものが見えなくて困るということは別個
319デフォルトの名無しさん:2009/02/17(火) 23:45:13
いっその事文字も背景も黒でよくね?
320デフォルトの名無しさん:2009/02/17(火) 23:47:01
ソフト自体によって色盲対応の個別の色を設定できるのも問題なんだろうな
だからOSの機能として、既存の色を問題がなく表示する機能を設定すべきなんだよ
ソフトによって赤を青に表示したり、緑に表示したりしちゃったら、利用者に影響が出るだろ?
321デフォルトの名無しさん:2009/02/17(火) 23:49:26
おまいらの理想はよくわかった
だが全部スレ違いだ
322デフォルトの名無しさん:2009/02/17(火) 23:55:20
理想ぐらいかたらせてやれよ
323デフォルトの名無しさん:2009/02/18(水) 00:16:57
>>302
>色盲って黄色人種男性の5%
>日本人男女40人のクラスの1人くらいは色盲
ってことは女性に色盲はいないの?
324デフォルトの名無しさん:2009/02/18(水) 00:19:19
>>323
男性に比べて非常に稀なだけでいることはいる
325デフォルトの名無しさん:2009/02/18(水) 00:30:31
>>323
色盲と色弱がいるからな
完全な色盲だともっと低い

そんなの考えなくていいレベル
もちろんあれば便利だが
326200:2009/02/18(水) 00:38:43
>>289
素人用のツールはそうかもね
>>290
ありがとう、マジ助かりました
327デフォルトの名無しさん:2009/02/18(水) 00:44:11
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=6671f8da-b0cb-41de-ad93-798fc71d344d&DisplayLang=ja

このリンクのMSDN Library for Visual Studio 2005がダウンロードできなくなってるんだけど、
どこに引っ越したか知ってる人いる?
Windwos2000の再インストール後に見つからなくて困ってるのでよろしくお願いします
328デフォルトの名無しさん:2009/02/18(水) 00:48:38
お前ら何で大騒ぎしてんの?

>>323
色覚異常はX染色体で遺伝する。
だからX染色体を1つしか持たない男性(XY)に多く、2つ持ってる女性(XX)に少ない。
500人に1人ぐらいの割合
329323:2009/02/18(水) 01:01:01
>>324-325>>328
そうなんだ。知らなかった。

  ┏┳┳┓   ハイ      ┏┳┳┓
┏┫┃┃┃   スレ違いは  ┃┃┃┣┓
┃┃┃┃┣┓  ここまで ┏┫┃┃┃┃
┃      ┃┃┏━━━┓┃┃      ┃
┃スレ違い ┣┫*・∀・*┣┫. STOP!┃
┗━━━━┛┗┳━┳┛┗━━━━┛
            ┏┻┓┃
        ┏━┛  ┣┻┓
        ┗━━━┫  ┗━┓
                ┗━━━┛
330デフォルトの名無しさん:2009/02/18(水) 01:03:58
素人用のツール(笑)
331デフォルトの名無しさん:2009/02/18(水) 01:04:22
>>327
Visual Studio 2005 は既に販売が終了している製品なので
それに連動して公開停止になったのかも

今は以下が最新版
MSDN Library for Visual Studio 2008 SP1 (2008年12月更新版)

あと、MSDN Subscription に加入すれば過去のバージョンは
一通り入手できるハズ
332デフォルトの名無しさん:2009/02/18(水) 01:05:39
>>328
劣性遺伝なの?
333デフォルトの名無しさん:2009/02/18(水) 01:07:04
伴性劣性遺伝ってやつだな
334デフォルトの名無しさん:2009/02/18(水) 01:08:26
なんで色盲・色弱にそんなにこだわるんだ?

普通に考えて、カスタマイズの余地皆無だったら
誰にとっても使いにくくなる可能性はあるだろ。
ユーザ=制作者のみってのでも無い限り
335デフォルトの名無しさん:2009/02/18(水) 01:17:24
>普通に考えて、カスタマイズの余地皆無だったら
>誰にとっても使いにくくなる可能性はあるだろ。
んなこといったら、あらゆるすべての設定値を備えなければならないじゃん。
毎晩24時にbeep音を鳴らして寝ることを促す設定がないと、
それを必要とする人には使いにくいってーことになる。

そもそも万人向けにオプションの設定項目を多くするということは、
設定項目が多すぎて煩雑になるという点において万人向けでなくなる。
336デフォルトの名無しさん:2009/02/18(水) 01:22:11
>>335
どうせ分かってて言ってんだろ?
アホか
337デフォルトの名無しさん:2009/02/18(水) 01:38:18
韓国語表示がないのはウリナラへの差別ニダ!
338デフォルトの名無しさん:2009/02/18(水) 02:05:00
設定なんて無くても
赤と緑じゃなく赤紫と緑にするだけで解決する問題なのに
なんでそんなに抵抗あるのかね?
339デフォルトの名無しさん:2009/02/18(水) 02:05:54
サイケデリックはプロ用ツールの証ですw
340デフォルトの名無しさん:2009/02/18(水) 02:35:21
>>338
それをする必要があるのかっていう問題じゃないの?
341デフォルトの名無しさん:2009/02/18(水) 02:43:41
もともとの指摘も、色盲の人にとって、ではなくセンスがない色遣いだという点が主だったはず。
おそらく、赤紫と緑にしても、センスのなさそうなデザインであることは変わらないだろうから、
変えるのは無意味だと思う。
342デフォルトの名無しさん:2009/02/18(水) 02:57:51
お前らが超ハイセンスなのは分かったからそろそろ黙って下さいませんかねこのやろう
343デフォルトの名無しさん:2009/02/18(水) 03:00:36
センスとか以前に株とかで儲けやすいようなプログラムを作ってる奴に嫉妬してるだけじゃねえの
うひょひょ
344デフォルトの名無しさん:2009/02/18(水) 03:06:45
おおかた343で図星ってところだろう
345デフォルトの名無しさん:2009/02/18(水) 04:33:34
>>627
このあたりかな
http://support.microsoft.com/kb/814675/en-us

ファイル以外のストリームには言及がないのでなんともいえないけど
少なくともファイルは特別に意識していて、ファイルから生成した
ストリームについてはそれを破棄するとイメージにアクセスできなくなるのが
仕様みたい
346345:2009/02/18(水) 04:34:50
すみません
>>345は誤爆です
347デフォルトの名無しさん:2009/02/18(水) 07:12:31
>>340
お前が思っているより色盲の人は遥かに多いから必要だ。
348デフォルトの名無しさん:2009/02/18(水) 07:18:48
あほみたいに、いつまで青い議論を続けてるんだ。
単なる証券屋店頭の電光掲示板へのオマージュだろあれは。
俺的には文字の真ん中に切れ目のあるパネルがパタパタ音を立てて
回転するタイプのコントロールが欲しいな。
349デフォルトの名無しさん:2009/02/18(水) 07:26:44
WPFのViewport3Dとストーリーボードアニメーションの出番だな。さあリッチインタフェースを
追求するんだ。
350デフォルトの名無しさん:2009/02/18(水) 07:39:43
注文すると、発注内容書いた手紙が取引所まで3Dで飛んでいって届いたら実際に発注されるってどうよ。
351デフォルトの名無しさん:2009/02/18(水) 10:58:31
>>348
俺も欲しい・・・
352デフォルトの名無しさん:2009/02/18(水) 13:30:06
>>350
間違えて疑似嫁のデータを送ってしまうわけですね、わかります。
353デフォルトの名無しさん:2009/02/18(水) 13:33:01
デシリアライズされるときコンストラク呼び出されないけれど同じようにユーザーコードからコンストラク呼び出しなしで生成すること可能?
354デフォルトの名無しさん:2009/02/18(水) 13:35:43
>>353
エスパーしてみるけど
デシリアライズされた時点でオブジェクトのインスタンスは生成されてるんじゃないのか?
355デフォルトの名無しさん:2009/02/18(水) 15:29:45
すまん、説明が悪かった。インスタンスは生成されるんだがコンストラクタは呼び出されないてない。
同じようにコンストラクタ通さずインスタンスだけ生成したいんです。
356デフォルトの名無しさん:2009/02/18(水) 15:36:28
シリアライズされたオブジェクトファイルを自分で記述してデシリアライズすればいいんじゃね?
357デフォルトの名無しさん:2009/02/18(水) 15:40:43
コンストラクタのオーバーロードでも作ってみるとか?
こんなん逃げじゃアカンかな・・・?(;´∀`)

public AAA()
{
 初期化();
}

public AAA(bool isIniti)
{
 if(isIniti == true)
  {
   初期化();
  }
}

private void 初期化()
{ほげ}

というか、コンストラクタに何も書かずに
コンストラクタみたいな感じの処理が
必要な時にSetInitializeみたいな関数作って呼ぶようにしたらダメなんだろうか…
358デフォルトの名無しさん:2009/02/18(水) 15:41:46
いや、すでに独自のシリアライズのような仕組みがを実装していて、コンストラクタを呼ばないですむならそうしたいなと。
359デフォルトの名無しさん:2009/02/18(水) 16:12:59
コピーコンストラクタの一種と思えば
360デフォルトの名無しさん:2009/02/18(水) 17:05:59
>>347
なんで個人用ソフトでそんな対策する必要あるの?
361デフォルトの名無しさん:2009/02/18(水) 18:38:57
あちらの素人馴れ合いスレで聞いても誰も答えてくれなかったのでこちらで質問させていただきます。

Microsoft.Samles名前空間以下のモジュールって自作アプリに組み込んで配布してもライセンス違反にならないでしょうか?
362デフォルトの名無しさん:2009/02/18(水) 18:46:54
>>348
たまに裏返ったら擬似嫁が出てきて、
あわてるアニメーション後、また裏返って正しい表示に変わるやつが欲しいぜ!
363デフォルトの名無しさん:2009/02/18(水) 19:09:26
>>362
自分で作れ
364デフォルトの名無しさん:2009/02/18(水) 19:47:00
>>361
なりま
365デフォルトの名無しさん:2009/02/18(水) 20:35:06
>>364

ありがとう。知らんなら黙っててください。
366デフォルトの名無しさん:2009/02/18(水) 20:37:36
>>361
あー大丈夫だいじょーぶホント―にだいじょーぶw
367デフォルトの名無しさん:2009/02/18(水) 20:43:44
>>361 こんなところに聞きにくるくらいなら自分で調べろ
368デフォルトの名無しさん:2009/02/18(水) 20:54:53
>>365
黙りま
369デフォルトの名無しさん:2009/02/18(水) 21:33:36
ここも素人ばかりですね
無駄口きいてないで少しは勉強したらどうですか?
370デフォルトの名無しさん:2009/02/18(水) 21:37:21
匿名性の弊害
371デフォルトの名無しさん:2009/02/18(水) 21:42:49
そもそもそんな大事なことをここで聞くな。
嘘だったらどうするんだ。
本家本元マイクロソフトさんに聞けばいいだろうに。
372マイクロソフト:2009/02/18(水) 21:48:31
漏れも(゚听)ワカンネ
373デフォルトの名無しさん:2009/02/18(水) 21:51:34
Microsoft.Samples 名前空間すべてを対象にした EULA、なんてものはない。
ということで、各サンプルの EULA に従う必要がある。
374デフォルトの名無しさん:2009/02/18(水) 23:36:34
ぶつからないようにわざわざ名前付けてるのに
同じ名前付けてどうすんだよ
375デフォルトの名無しさん:2009/02/18(水) 23:41:30
>>367
それ言い出したらム板の存在価値が・・
376デフォルトの名無しさん:2009/02/18(水) 23:47:59
まぁでも、ライセンス関係は配布元に直接聞くほうが確実だしな。
377デフォルトの名無しさん:2009/02/18(水) 23:54:43
訴えられた後だと遅いしね
378デフォルトの名無しさん:2009/02/19(木) 00:11:45
すいません、ジェネリックに関しての質問です。

    public struct V2<T>{
        public T x;
        public T y;

        public V2( T x_, T y_ ){
            x = x_;
            y = y_;
        }

        public void Add( V2<T> v_){
            x += v_.x;
            y += v_.y;
        }
    }

このような構造体を作りたいのですが、Addメソッド内の
x、yそれぞれ加算しているところでコンパイルエラーとなってしまいます。

エラーの文言としては下記のものが出力されました。
「演算子 '+=' を 'T' と 'T' 型のオペランドに適用することはできません。」

これはTにどのようなものが指定されるか不明なので、
+=演算子が必ずしも使えない、よってこれをエラーとする。

このような理由でエラーが出ているのでしょうか?

また、宜しければ解決方法がございましたらお教えいただけたらうれしいです。
379デフォルトの名無しさん:2009/02/19(木) 00:13:58
現スレの過去レスくらいは読め
>>145-177あたり参照
380378:2009/02/19(木) 00:19:42
すいませんでした、早速読んできます。
381デフォルトの名無しさん:2009/02/19(木) 00:27:14
その辺F#は華麗に実現できるのでまじお勧め
382デフォルトの名無しさん:2009/02/19(木) 00:34:10
F#知らないんだけどどうやって実現してるの?
結局のところ,CLRで動かす以上は
・DynamicMethodを使ったコード動的生成やリフレクションなどによって動的に
・C++みたいにテキスト的に
の二つしか方法はないはずだけどどちらも華麗とは思えない
383デフォルトの名無しさん:2009/02/19(木) 00:42:26
動的言語向けにCLRを拡張するんだよ。
384デフォルトの名無しさん:2009/02/19(木) 00:47:14
DLRのことを言ってるなら,あれはCLRを拡張してるんじゃなくて
CLRの既存の機能を使用した単なるクラスライブラリにすぎないよ
>>382の上の方法に帰着する
385デフォルトの名無しさん:2009/02/19(木) 08:05:50
今、F# をちょっと試してみたけど、型推論してるだけだな。

コマンドラインの方は触ってないけど、Visual F# で試したら、
全然動的なことしてなかった。
386デフォルトの名無しさん:2009/02/19(木) 08:08:14
F#はちゃんとTに足し算させられるの?
387デフォルトの名無しさん:2009/02/19(木) 08:15:32
手元にある F# の本の、ContentsとIndexをざっと眺めてみたけど、
ジェネリックス自体どこにもない。

>>381 に詳細聞きたい。
388デフォルトの名無しさん:2009/02/19(木) 10:51:25
基本的にはOCamlだから文法上の静的型付けで解決するのでって話だと思ってたけど
それともF#はILのジェネリクスを使うように拡張されてる?
だとしたら同じくエラーになる気がする
389デフォルトの名無しさん:2009/02/19(木) 14:23:06
System.Windows.Controls.TextBoxを160個並べて0.2秒に一回、Textに文字列を入れてるんですが
ときどきアプリ全体が劇重になってしまいます
Textに文字列を入れる部分だけコメントアウトすると重くなりません
これを回避する方法はあるでしょうか?
TextBoxを使ってると諦めるしかないのでしょうか?
390デフォルトの名無しさん:2009/02/19(木) 14:32:53
非同期でぐぐれ
391デフォルトの名無しさん:2009/02/19(木) 14:36:50
非同期処理してます
392デフォルトの名無しさん:2009/02/19(木) 14:46:11
GCの影響?
393デフォルトの名無しさん:2009/02/19(木) 16:00:15
InvokeではなくBeginInvoke使ってみるといいんじゃね?
394デフォルトの名無しさん:2009/02/19(木) 16:29:43
TextBoxは重量級のコントロールだから160も並べたらそういうこともあるだろうな。
Labelじゃだめなん?
395デフォルトの名無しさん:2009/02/19(木) 16:59:09
上のほうでも出てるけど、文字の出力だけでいいなら
LabelかGDIでいんじゃない?
396デフォルトの名無しさん:2009/02/19(木) 17:28:35
Labelに変えたらスムースに動作するようになりました
ありがとうございました

でも右寄せ表示する方法が分からない
困った
397デフォルトの名無しさん:2009/02/19(木) 17:41:09
AutoSizeをfalseにしてTextAlignでいけない?
398デフォルトの名無しさん:2009/02/19(木) 17:47:12
右寄せの方法みつかった
Style style = new Style(typeof(ListBoxItem));
style.Setters.Add(new Setter(ListBoxItem.HorizontalContentAlignmentProperty,
HorizontalAlignment.Stretch));

ほんとWPFわけわからん
みなさん、ありがとうございました〜
399デフォルトの名無しさん:2009/02/19(木) 17:56:58
WPFかよ
プロパティでデザイン時にも指定できるからそこからわかるべ。
400デフォルトの名無しさん:2009/02/19(木) 18:13:17
そもそもItemsControlとか使ってバインディング
コードからコントロール生成しない
データソースを変更すれば勝手に表示が変わる

ってのがWPFの方向性
401デフォルトの名無しさん:2009/02/19(木) 19:58:01
ADOとベタベタ
402デフォルトの名無しさん:2009/02/19(木) 22:30:16
WPFで文字表示するだけならLabelよりもTextBlockのほうが軽いよ
403デフォルトの名無しさん:2009/02/19(木) 23:06:40
ありがとうございます
さっそく修正しました
404デフォルトの名無しさん:2009/02/20(金) 08:59:24
結構みんなWPF使ってるものなの?
405デフォルトの名無しさん:2009/02/20(金) 09:10:51
使われてないよ
406デフォルトの名無しさん:2009/02/20(金) 09:39:04
デフォルトのスタックサイズを変更するにはどうすればいいですか?
407デフォルトの名無しさん:2009/02/20(金) 09:58:52
変更しなくていいよ
408デフォルトの名無しさん:2009/02/20(金) 12:08:48
わろたww
409デフォルトの名無しさん:2009/02/20(金) 12:15:21
わらわなくていいよ
410デフォルトの名無しさん:2009/02/20(金) 12:25:07
吹いたw
411デフォルトの名無しさん:2009/02/20(金) 13:06:39
汚いから拭いとけよ
412デフォルトの名無しさん:2009/02/20(金) 13:08:07
いっぱい釣れたぜ
ショボン
413デフォルトの名無しさん:2009/02/20(金) 16:35:13
キャッチしたらリリースしとけよ
414デフォルトの名無しさん:2009/02/20(金) 20:20:11
海外の掲示板で質問したらすぐに答えがもらえました
ここの馬鹿な人たちとは大違いですね^^;
もう2度と来ません
ノシ
415デフォルトの名無しさん:2009/02/20(金) 20:21:40
おまえだれ?
416デフォルトの名無しさん:2009/02/20(金) 20:45:20
おれおれ
417デフォルトの名無しさん:2009/02/20(金) 20:46:23
>>406
とりあえず、リンカで。
418デフォルトの名無しさん:2009/02/20(金) 21:57:44
シェイラのそっくりさん?
419デフォルトの名無しさん:2009/02/20(金) 22:09:09
>>417
根中 千恵子?
420デフォルトの名無しさん:2009/02/20(金) 22:54:17
海外の掲示板に質問書き込むスキルはあるのにググるスキルはなかったのか・・・
421デフォルトの名無しさん:2009/02/21(土) 00:52:53
この国の人ではないのかもしれん罠
422デフォルトの名無しさん:2009/02/21(土) 01:30:42
つまり海外って日本のことか
423デフォルトの名無しさん:2009/02/21(土) 01:32:33
2chを一つの国と考えてるかも試練
424デフォルトの名無しさん:2009/02/21(土) 18:22:55
C#で省略可能引数の既定値を指定する方法はありますか?
[opt]属性はOptionalAttributeを付けることで付けられるようですが
425デフォルトの名無しさん:2009/02/21(土) 18:27:51
引数のないメソッドでオーバーロードすればいいんでないの?
426デフォルトの名無しさん:2009/02/21(土) 18:29:44
>>424
(1) 素直にオーバーロードを使う
(2) 引数をNullableにする
427デフォルトの名無しさん:2009/02/21(土) 18:35:19
C#4.0をじっと待つ
428424:2009/02/21(土) 18:43:53
省略可能引数をC#で使いたいわけではなくて,
VBで省略可能引数にしたときの既定値のメタデータを付けたいだけなんです
リフレクションで既定値の取得もできるみたいですがやっぱり設定するのは無理なんですかね
429デフォルトの名無しさん:2009/02/21(土) 18:53:19
いや言ってる意味が。。
430423:2009/02/21(土) 18:58:41
ごめんなさい
VBで省略可能引数の既定値を設定した場合,
既定値の情報はメタデータとしてメソッドに付加されます。
それと同じ形式のメタデータをC#で付けたいということです。
具体的にはこういうILです
.param [1] = "既定値"
431デフォルトの名無しさん:2009/02/21(土) 19:08:08
リフレクタで言語をC#にして見てみたらどんな属性を付与しているのか分かるのでは?
432デフォルトの名無しさん:2009/02/21(土) 19:12:59
433424:2009/02/21(土) 19:18:01
>>432
[Optional, DefaultParameterValue("既定値")]でうまくいきました
ありがとうございます
434432:2009/02/21(土) 19:19:19
435デフォルトの名無しさん:2009/02/21(土) 19:21:30
あ、解決済みか。
これやってもC#で省略可能引数が使えるわけじゃないみたいね。
でも、アセンブリをVBから呼び出す時には省略可能になる引数を持つメソッドを
C#で定義できるのは興味深い。
436デフォルトの名無しさん:2009/02/21(土) 23:35:48
逆の例もあるよ。
outはVBにないけど、Out属性付きのByRef引数はC#からout引数として扱われるというもの。
437435:2009/02/21(土) 23:40:52
あーなるほど、ByRefだけだとref引数扱いになるのか。
438デフォルトの名無しさん:2009/02/22(日) 01:49:55
4.0の動的型付け変数と、3.0の暗黙的型付けって、どういうときべんりなの?
大幅に労力が削減されるような利用法が思い浮かばないんだけど。
439デフォルトの名無しさん:2009/02/22(日) 02:02:04
>>438
リフレクションやComInterop、やDLR対応の動的言語と相互運用する場合かな。
いろいろdymamicに期待してる人が要るけど、
dynamic型同士で + - * / などの演算はサポートされていないから、
プリミティブ型をdynamicにするのはナンセンス。
440デフォルトの名無しさん:2009/02/22(日) 02:12:30
>>439
多言語との相互運用という趣旨ならわかるけど、
静的言語として、こういうのを許容しちゃうのって、どうなんだろう
コンパイル時にはエラーにならなくて、実行時にしかエラーにならないんでしょ?

暗黙型付けも、自分で型をしっかり宣言して、それで使うということで、
ユーザの思い込みの余地を減らすことが大事ということで
静的言語のメリットがあると思ってたんだけど、
なんか曖昧的なものを受け入れるような気がしていやな感じがする。
441デフォルトの名無しさん:2009/02/22(日) 02:18:27
いやなのは使わなきゃいいだけ。
442デフォルトの名無しさん:2009/02/22(日) 02:23:28
使わなきゃいいって言われても、
自分だけで成り立つ世界じゃないからなぁ
嫌でも他人のソースを見ることになるわけで
443デフォルトの名無しさん:2009/02/22(日) 02:32:26
ヘジの言葉送ってやるよ。
「静的な型として動的な型を導入するんだ」

機能的には相互運用、さらに相互運用。プレゼンも基本それしか
出てこない。動的型前提な言語との相互運用、ライブラリを使う
ときに死ぬるんだよ現状。
しかも JavaScript だの IronPython だの DLR だの利用ケースが
増えていってやがる。

そういや雑談な話になるんだが、コンポーネントモデル周りは
ほとんど動的な要素で構成されてるよな。
なんでいまさら動的だからどうこうとかなるんだろうな
444デフォルトの名無しさん:2009/02/22(日) 02:34:54
今までだって動的なことできたわけでそれが楽になるだけ
C#はそんなに強い静的型付け言語じゃない
445デフォルトの名無しさん:2009/02/22(日) 02:49:43
そもそも相互運用するのが間違ってないか?
他方の言語は相互運用のために拡張して、他方の制限はない?
C#のいいところが失われているような気がするよ。
446デフォルトの名無しさん:2009/02/22(日) 02:58:36
糊言語に何をいまさら。
あとせっかく DLR で「汎用的な」動的型システムつくってくれる
んだから乗らん手はないし
447デフォルトの名無しさん:2009/02/22(日) 03:02:18
.NET使っておきながら動的はよくないやら相互運用が間違ってるやら
448デフォルトの名無しさん:2009/02/22(日) 03:08:32
それ結果論でしょ
動的言語をnetで使うためのものがDLRなんだから
449デフォルトの名無しさん:2009/02/22(日) 03:17:38
C#やjavaが複雑になって、新しい言語のダージリンdarjeelingができるわけですね
んで、それに対抗してC♭が開発されるわけです

それらの言語は多言語(特にC#)との相互運用性のために、
動的型型付けが導入されていきました。

そしてその間、ロシアはc++を使い続けました。
450デフォルトの名無しさん:2009/02/22(日) 03:27:31
var i = Class;
とかユーザ定義変換とかどうなるんだろ
あと、var j 、Class.Method(out j);とかあったらjは何型?
451デフォルトの名無しさん:2009/02/22(日) 03:38:28
>>450
コンパイルエラー
452デフォルトの名無しさん:2009/02/22(日) 03:40:34
>>449
個人的にヘジの言語設計者としてのすごいところは
ゴチャゴチャ要素を詰め込みまくって許容範囲内に
纏め上げる才能だと思う。

>>450
型システムとしては大きく変わらん。だからそれらはどれも
今までと同じように通らない。
簡単に言うと新しい dynamic 型という「静的型」が導入される
感じ。こいつはディスパッチ周りが特殊に扱われる。
453デフォルトの名無しさん:2009/02/22(日) 03:48:47
んで、後世に残るのは彼の手を離れたObjectPascalなんだろうな
454デフォルトの名無しさん:2009/02/22(日) 03:53:19
Option Explicit OFF Strict OFF/Infer OFFモードのVBも
dynamic対応してくれるのだろうか。
今は毎回律儀にリフレクション使ってるから遅くて遅くて。
455デフォルトの名無しさん:2009/02/22(日) 03:57:59
vbならどうだっていいでしょ なにやったって
456デフォルトの名無しさん:2009/02/22(日) 04:05:00
>>452
ごちゃごちゃ要素を詰めまくって、
複雑になった分の学習に必要な非生産性と、
複雑になった分の楽できるコーディングや設計による生産性の向上を比較したら、
どっちがどうなんだろう

学習はともかく、通常と比較したら生産性はどんだけあがんだろ
457デフォルトの名無しさん:2009/02/22(日) 04:34:42
心配は分かるがvarにしろdynamicにしろ絶妙にコントロールされてて、
想定以外の使い方をされないような工夫はしっかり施されている。
もしdynamicで四則演算の演算子が使えたり、
varがメンバやプロパティで使えたらそういう心配するような状態になるだろう。
458デフォルトの名無しさん:2009/02/22(日) 04:41:15
演算子のオーバーロードで崩壊してるじゃん
足し算なのに引き算とか可能だし (;゚д゚)ァ....
459デフォルトの名無しさん:2009/02/22(日) 04:44:40
gotoと同じく演算子のオーバーロードの乱用などは文法的に抑制しなくても、
常識的なプログラマーなら分かってるよね?といった風に信用してくれてる部分もある。
実際乱用されてるかい?
そういった部分も含めて絶妙と評価している。
460デフォルトの名無しさん:2009/02/22(日) 04:46:51
gotoはifだったりでけっこうできるけど
演算子は無いと面倒くさいJavaやってたからかな〜
461デフォルトの名無しさん:2009/02/22(日) 04:53:45
信用、常識をプログラマーの運用に求めるなら、そもそも静的型付けである必要がないだろ
なにいってんだ?
462デフォルトの名無しさん:2009/02/22(日) 04:59:06
何が常識かは人によって違うからな
そのための強制約と考えるのは普通たよな
463デフォルトの名無しさん:2009/02/22(日) 05:06:19
だからさじ加減が絶妙といってるのさ
464デフォルトの名無しさん:2009/02/22(日) 05:09:16
>>459
つかまぁ、3.0 の丁寧な仕事といい社内で使いまくって叩いた上
出てくるんだろうなって感じがするよな
465デフォルトの名無しさん:2009/02/22(日) 05:33:38
そしてmultiple宣言をしたclassには多重継承が許可されます
c++との相互運用のために

その中では、ポインタの使用も可能です
c++との相互運用のために

代入演算子のオーバーロードも可能にし、
いまではc++と同じ実装になっていますが、問題は発生していません
なぜならみんなが常識的なプログラマなので乱用されてはいないからです。

めでたしめでたし
466デフォルトの名無しさん:2009/02/22(日) 05:37:12
名文なので、さらしあげ
467デフォルトの名無しさん:2009/02/22(日) 05:45:48
代入演算子はキャストで良いだろ
468デフォルトの名無しさん:2009/02/22(日) 11:11:03
>>457
dynamicはインデクサも演算子もinvoke式もなんでもアリだよ
469デフォルトの名無しさん:2009/02/22(日) 11:26:43
ソースきぼう
470デフォルトの名無しさん:2009/02/22(日) 11:29:54
http://code.msdn.microsoft.com/csharpfuture
ここでダウンロードできるNew Features in C# 4.0
471デフォルトの名無しさん:2009/02/22(日) 11:33:57
とりあえずC#にほしいもの。
・多重継承orMixin
・friend
・C++ばりの変態テンプレート
・Lispばりのマクロ
472デフォルトの名無しさん:2009/02/22(日) 11:35:02
ありがとん、読んでみる
473デフォルトの名無しさん:2009/02/22(日) 11:38:14
dynamic<IHoge> hoge =
 IHogeを実装してないけどHogeという名前のメソッドを実装してる型のオブジェクト;
hoge.Hoge();
どうせならこんな感じでダックタイピングできるようにしちゃえばよかったのに
474デフォルトの名無しさん:2009/02/22(日) 11:52:17
>>468
これのことですな。
>dynamic d = GetDynamicObject(…);
>int i = d + 3; // calling operators

出来ないといったのは正確ではなかったので訂正する。
OKのパターン
dynamic d = "abc"; string i = d + "xxx"; // "xxx"のstringが+オペレータを持っている。

NGのパターン
dynamic d = 10; int i = d + 3; // integerはプリミティブなので+オペレータを持ってない
dynamic d = "abc"; dynamic d2 = "XYZ"; string i = d + d2; // dynamic同士の演算

475デフォルトの名無しさん:2009/02/22(日) 11:59:20
>dynamic d = 10; int i = d + 3;
これがなんでNGなのかわからない
>>470のドキュメントによると,コンパイルは通るはずだよね
実行時にエラーになるってこと?
試せないけど,今のExpression Treeの仕様から類推すると大丈夫そうな気がするんだが
あとStringの+は演算子オーバーロードじゃなくて言語組み込みだよ
476デフォルトの名無しさん:2009/02/22(日) 12:00:56
>>474
ちと保留、これだと下の説明が付かないですね。
>dynamic d = GetDynamicObject(…); 
>int i = d + 3; // calling operators 

DynamicObjectが+オペレータをサポートしていれば大丈夫なのか。
それともCTPではまだ未実装の機能なのか。
うむむ・・
477デフォルトの名無しさん:2009/02/22(日) 12:03:32
スレチ
478デフォルトの名無しさん:2009/02/22(日) 13:54:58
なんか、「善意の人間がミスを犯しにくいようなしくみを工夫すること」と、
「悪意の人間の犯罪行為を防止すること」の区別がつかない人が2人ぐらいいるなw
479デフォルトの名無しさん:2009/02/22(日) 14:01:52
この辺は難しいよね。
馬鹿基準に合わせると天才の要求仕様に満たなくなる。自分としては自由度を高めて使う側のスキルアップを要求する方がいい時も多々あるけれど
480デフォルトの名無しさん:2009/02/22(日) 16:24:50
そこで複雑になったC#に変わり、Darjeelingの登場ですよ
Sun様おながいします
481デフォルトの名無しさん:2009/02/22(日) 16:38:39
javaはjava teaではなくてjava coffeeが由来とされてるから、名前を付けるならTorajaがいいと思う。
482デフォルトの名無しさん:2009/02/22(日) 16:44:42
javaの場合はscalaがはっちゃけてるからそっち行く可能性はあるかも。
.NETはC#自身がはっちゃけてるからな。他の言語はニッチ狙いなのがおおいな。booとかF#とか。
483デフォルトの名無しさん:2009/02/22(日) 19:26:02
>>475-476
その話、英語のフィードバックサイトで出てたけど、
現CTP版では “まだ” できないって話だったと思う。
484デフォルトの名無しさん:2009/02/23(月) 01:41:29
>>482
まぁScalaは使ってみると「うーん」という感じが否めないけどな。
JavaやC#に比べると、細かい部分で文法に無理が出まくってる。

やっぱりなんだかんだ言っても言語設計者のセンスって大事だなと思う。

スレチすまん
485デフォルトの名無しさん:2009/02/23(月) 16:22:55
ウイルスバスターみたいに1PC1ライセンスみたいな感じの
個別認証をやりたいんですけど、どんなふうに実装するのが
いいんでしょ…?
486デフォルトの名無しさん:2009/02/23(月) 16:52:17
ネット使ってサーバにアクティベーションするしかないんじゃないの?
487デフォルトの名無しさん:2009/02/23(月) 16:54:34
>>485
「みたい」の指すところが全然分からん。
まずは要件定義とは何かを知ることから始めよう。
488デフォルトの名無しさん:2009/02/23(月) 23:05:45
MACアドレスに対して認証キーを発行とかすればいいんじゃない。
489デフォルトの名無しさん:2009/02/23(月) 23:36:40
簡単なファイラーを作っていて
Windows Vistaなどの検索ボックスのように、
スペースで区切ったキーワードにヒットするファイルの一覧を取得したいのですが、
何かスマート(簡単な)方法はないでしょうか?

今のところ、ファイル名に対して、
スペースで区切られたキーワードの数だけstring.containsを行うくらいしか思いつかないんですが、
この方法だと大量のファイルがあった場合に処理が遅くなってしまうと思うので。
# どんな方法でもファイル数が多ければ多いほど時間は掛かると思いますが、もう少し高速に行える方法があればと考えています。
490デフォルトの名無しさん:2009/02/23(月) 23:49:07
>>489
正規表現をコンパイルしたら速いんじゃないか?知らんけどな
Regex.Match(input, "AAA|BBB|CCC", RegexOptions.IgnoreCase | RegexOptions.Compiled);
491デフォルトの名無しさん:2009/02/23(月) 23:52:32
入力内容は毎回変わるのにその正規表現をコンパイルしたら
検索のたびにメモリを食って解放されなくなるぞ
492デフォルトの名無しさん:2009/02/24(火) 00:01:52
ファイル数なんてどんなに多めに見積もっても百万のオーダーとかじゃないのかな?
だとしたらベタにやっても抽出する処理そのものには1秒掛からないんじゃないか。
むしろボトルネックは言うまでもないんだろうけどディスクアクセスって気がする。
493デフォルトの名無しさん:2009/02/24(火) 00:11:15
index seviceを使う。
494デフォルトの名無しさん:2009/02/24(火) 00:23:49
>>490-493
皆様ありがとうございます。

>>492
なるほど。
一度試してみてパフォーマンスをみることにします。

>>493
そんな方法があったとは思いつきませんでした。
軽くググってみると
http://209.85.175.132/search?q=cache:94DRo_UXXIEJ:repse.blogspot.com/2008/02/c_20.html+C%23+index+service&hl=ja&ct=clnk&cd=14&gl=jp&client=firefox-a
確かに…、少し調べてみようと思います。
495デフォルトの名無しさん:2009/02/24(火) 00:37:43
インデックスサービスってWindowsにある程度詳しいユーザはたいがい止めてるよ
496デフォルトの名無しさん:2009/02/24(火) 00:51:30
api公開されてアプリケーションから使えるあまり素性が怪しくない無料のエンジンって言うと選択肢それぐらいしかないんじゃない?
497デフォルトの名無しさん:2009/02/24(火) 07:31:14
ジェネリックコレクションの保存ってどうしたらいいんですか?

public class MyList<T> : List<T>
{
 public void Load(string fileName)
 {
  using (Stream stream = new FileStream(fileName, FileMode.Create))
  {
   using (BinaryWriter writer = new BinaryWriter(stream))
   {
    foreach (T item in this)
    {
     writer.Write(item);//コンパイルエラー
    }
   }
  }
 }
}
498デフォルトの名無しさん:2009/02/24(火) 07:34:50
シリアライザ
499デフォルトの名無しさん:2009/02/24(火) 07:34:52
>>497の補足
使いたいTはintやlongやdoubleなどの値型だけです。
500デフォルトの名無しさん:2009/02/24(火) 07:40:15
typeidでわけるしかない。
501デフォルトの名無しさん:2009/02/24(火) 07:56:44
おかげで道がひらけました
ありがとうございます
502デフォルトの名無しさん:2009/02/24(火) 08:14:30
>>497
無理やりだけど、

var write = typeof(BinaryWriter).GetMethod("Write", new[] { typeof(T) });
write.Invoke(writer, new object[] { value });
503デフォルトの名無しさん:2009/02/24(火) 08:24:47
LoadでWrite
504デフォルトの名無しさん:2009/02/24(火) 11:45:19
XmlSerializer使えよ

public void Save<T>(List<T> list)
{
byte[] bytes;
using (MemoryStream ms = new MemoryStream(0x10000))
{
new XmlSerializer(typeof(List<T).Serialize(ms, list);
bytes = ms.ToArray();
}

using (Stream stream = new FileStream(fileName, FileMode.Create))
using (BinaryWriter writer = new BinaryWriter(stream))
{
writer.Write(bytes);
}
}
505デフォルトの名無しさん:2009/02/24(火) 17:24:53
>>497
Loadで保存w
506デフォルトの名無しさん:2009/02/24(火) 18:45:49
>>502が簡単でよさそうだがBinaryReaderでもやろうとすると面倒だな
なんでreadとwriteでこんなにも非対称なコードになるんだ
507デフォルトの名無しさん:2009/02/24(火) 18:49:31
objectで返したらボックス化が発生するからな
標準のライブラリでRead<T>//(注)プリミティブ型のみ
なんて素人臭いことするわけにもいかないし
508デフォルトの名無しさん:2009/02/24(火) 18:56:57
プリミティブ型じゃなくても、そんな大げさにならずに簡単にできるの?
509デフォルトの名無しさん:2009/02/24(火) 19:11:28
参照型のフィールドを含まない構造体限定なら
Marshal.StructureToPtrみたいな外道な方法を用いれば簡単にできる
510デフォルトの名無しさん:2009/02/24(火) 19:13:19
ふんじゃあ、素人臭くてもいいじゃんw
511デフォルトの名無しさん:2009/02/24(火) 21:21:41
他のアプリケーションのアイコン上に、あるテキストファイルをドラッグする処理(と同じ事)を
自作アプリケーション内で行いたいのですが、どのような方法があるのでしょうか・・・?
ドラッグ対象となるアプリケーションはコンソールアプリケーションです。
てぃんこでかい人よろしくおねがいします。
512デフォルトの名無しさん:2009/02/24(火) 21:23:31
Main() の String[] args から取れなかったっけ?
513デフォルトの名無しさん:2009/02/24(火) 21:28:21
その「他のアプリケーション」をプログラムから起動したいってことなら
System.DiagnosticsのProcess
エクスプローラで実行ファイルに何かのファイルをドロップするのは
その何かのファイルを引数に実行ファイルを起動するのと同じ
514デフォルトの名無しさん:2009/02/24(火) 21:32:53
>>513
とても有益なヒントありがとうございました。
ちんこもでかくてありがとうございました。
試行錯誤してみます。
515デフォルトの名無しさん:2009/02/24(火) 21:42:24
ちんこ小さいから回答できなかった
516511:2009/02/24(火) 21:49:03
うーーん。以下のようにしても
ファイルを指定せずに実行ファイルを起動したような動作になっちゃう・・・

proc.StartInfo.Arguments ="あるテキストファイルのパス";
proc.StartInfo.FileName ="受け取り側の実行ファイルのパス";
proc.Start();
517デフォルトの名無しさん:2009/02/24(火) 21:51:11
ちんこついてないから答えられない
518デフォルトの名無しさん:2009/02/24(火) 21:51:29
>>516
「あるテキストファイルのパス」に空白が含まれるなら、""で囲まないとダメ。
具体的には、
proc.StartInfo.Arguments = "\"あるテキストファイルのパス\"";
519511:2009/02/24(火) 21:54:34
こんな感じでしょうか?
""ではかこんでいます。

proc.StartInfo.Arguments = @"C:\sample.xml";
proc.StartInfo.FileName = @"C:\Document and setting\APPLE.exe";
proc.Start();
520511:2009/02/24(火) 22:05:58
>>518
あああいけました
いけました。ありがとうございました。
ちんこにもよろしくお伝えください。
521sage:2009/02/24(火) 23:19:27
RichTextBoxのスクロールバーをつまみで移動させると
ピクセル単位で動くのですが、TextBoxのように行単位で動かせるような方法ないですか?

http://wawatete.ddo.jp/exec/program/cs/rtb_scrbarrtb
にあるような別途スクロールバーを作りたくなくて
RichTextBox備え付けのスクロールバーで実現したいのですが。。。

RichTextBoxのWndProcでつまみスクロールのイベントが来たら
SendMessage(rich1.Handle, EM_SCROLL, SB_LINEDOWN, 0)
で独自で1行スクロールとか試みたんですが、微妙にずれてしまって。。。

ちなみに上記URLと同じ目的ですが、RichTextBoxの左に
行番号を作りたいのですが、テキストが中途半端な表示されると
困るために、行単位でスクロールさせたい次第です。

教えてエライ人!
522デフォルトの名無しさん:2009/02/24(火) 23:37:28
>>521
ボクはGDI+を使って書いた
523デフォルトの名無しさん:2009/02/24(火) 23:38:33
さすがに行番行表示までやるならはじめから自前で作るべきだな
524521:2009/02/24(火) 23:48:13
>>522
kwsk・・・、じゃなくておさわりだけでもいいんで
どんな流れか教えてください。

因みに自分は、クライアント領域が表示されてる分だけ左側に
Labelを配置して、スクロールされたら配置されてる全Labelに
メッセージなげて、Label.Textを変えて行番号を表示する方式を
考えてました。
525デフォルトの名無しさん:2009/02/24(火) 23:50:13
>>506
Reader 側はもっと無理やりだけど、↓でできる。

var read = typeof(BinaryReader).GetMethod("Read" + typeof(T).Name, new Type[0]);
return (T)read.Invoke(reader, new object[0]);
526デフォルトの名無しさん:2009/02/24(火) 23:53:45
ググれ若人
527デフォルトの名無しさん:2009/02/25(水) 00:49:32
VS2008EEのC#でwebBrowser使ってpdfを表示したまま終了すると必ずエラー出すんだけど、これってどうにかできないの?
AdobeReader8ならエラー出なくて9だと出るって事はしばらくしたら改善される?

Delphi2006なら大丈夫だけどあっちはunicodeのテキスト読むのめんどいし、いい方法はないものかね?
528デフォルトの名無しさん:2009/02/25(水) 01:10:55
>527
別のページを表示してから終了とか頑張ってみたけどどうしようもなくて
終了時だけなのでエラーを握り潰して無視したよ。
529デフォルトの名無しさん:2009/02/25(水) 10:04:22
>>497
こんなのはどうかね
public abstract class ReaderWriter<T> : IDisposable
{
protected FileStream stream;
protected BinaryWriter writer;
protected BinaryReader reader;
public abstract void Write(T item);
public abstract T Read();
public virtual void Seek(long offset, SeekOrigin origin) { this.stream.Seek(offset, origin); }
public void Dispose()
{
if (this.reader != null) this.reader.Close();
if (this.writer != null) this.writer.Close();
if (this.stream != null) this.stream.Close();
}
}
public class IntReaderWriter : ReaderWriter<int>
{
public IntReaderWriter(string fileName)
{
this.stream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
this.reader = new BinaryReader(this.stream);
this.writer = new BinaryWriter(this.stream);
}
public override void Write(int item) { this.writer.Write(item); }
public override int Read() { return this.reader.ReadInt32(); }
}
530デフォルトの名無しさん:2009/02/25(水) 10:05:22
>>529の続き
public class MyList<T> : List<T>
{
public void Save(ReaderWriter<T> writer)
{
if (writer == null) return;
foreach (T item in this) writer.Write(item);
}
public void Load(ReaderWriter<T> reader, int count)
{
if (reader == null) return;
for (int i = 0; i < count; i++) this.Add(reader.Read());
}
}

static void Main(string[] args)
{
MyList<int> list = new MyList<int>();
using (IntReaderWriter writer = new IntReaderWriter("test.bin"))
list.Save(writer);
using (IntReaderWriter reader = new IntReaderWriter("test.bin"))
list.Load(reader, 100);
}
終わり
531デフォルトの名無しさん:2009/02/25(水) 12:51:34
型ごとにReaderWriter<T>実装しないといけないなら全く意味ないなそれ
普通にSaveInt32とか型ごとに保存・読み込みメソッドを定義するのと変わらん
532デフォルトの名無しさん:2009/02/25(水) 13:53:57
generic<typename TSrc, typename TDst>
where TSrc : value class where TDst : value class
void BlockCopy(
 array<TSrc>^ src, int srcOffset, array<TDst>^ dst, int dstOffset, int count) {
 using namespace System;
 pin_ptr<TSrc> pSrc = &src[0];
 Byte* pSrcByte = reinterpret_cast<Byte*>(pSrc);
 pin_ptr<TDst> pDst = &dst[0];
 Byte* pDstByte = reinterpret_cast<Byte*>(pDst);
 for (int i = 0; i < count; i++) pDstByte[srcOffset + i] = pSrcByte[dstOffset + i];
}
こういうのをC++/CLIで用意しておけば解決w
533デフォルトの名無しさん:2009/02/25(水) 14:35:22
Application.DoEvents();
と等価の処理を別コードで書きたいんだけど
なにかいい方法はないかなぁ…
PeekMessageとかコレ系つかうとたまに応答なし
になってしまう。

timerとかBackGroundworkerだとプログラムが
みにくくなってしまうし悩んでます。
534デフォルトの名無しさん:2009/02/25(水) 14:42:03
AというクラスにAクラスを返す
例えば
public virtual A CreateA(){ return new A(); }
があります。
このAを継承した
BというクラスはこのCreateAをオーバーライドしてBを返すようにしたいのですが
こういう事はできますか?
CreateBを新たに作らないと駄目ですか?
535デフォルトの名無しさん:2009/02/25(水) 14:46:45
>>533
timerやbackgroundworkerで見にくくなる理由も不明だが、
Application.DoEvents()ではだめな理由も謎だな。
536デフォルトの名無しさん:2009/02/25(水) 14:48:25
>>534
class B : A {} だったら
public override A CreateA(){ return new B(); } でいいじゃね。
戻り値の型をBにしたいなら、CreateBを作ることになるだろうけど。
537デフォルトの名無しさん:2009/02/25(水) 14:52:55
そうですか…有り難うございます
538533:2009/02/25(水) 14:58:27
>>535
http://d.hatena.ne.jp/yaneurao/20081125
DoEventsを使うとたまに応答なしになったりひどい挙動を起こすことが
あるんですよ。
これを完全に回避したいんです。
539デフォルトの名無しさん:2009/02/25(水) 15:00:24
class Base{
  public virtual Base Create();
}
class Base<T>:Base where T:Base<T>, new(){
  public override Base Create(){
    return (Base)(new T());
  }
  public T Create(){return new T();}
}
こんな方法もあるかも。未テストかつ変態的なので動くか不明。

なお、使う時は
class B:Base<B>{
 ...
}
class C:Base<B>{
 ...
}
みたいにする。
540デフォルトの名無しさん:2009/02/25(水) 15:00:40
もう一つ良いですか?
同じクラスAに
class A
{
public const int i = 100;
public void D()
{
Console.Write(i);
}
}

とこれを継承したクラスB,に
public const int i=10;
としてBからDを呼び出すとiは10として処理されますか?
100として処理されますか。
541デフォルトの名無しさん:2009/02/25(水) 15:03:18
あ、間違った。
class Base{
  public virtual Base CreateBase();
}
class Base<T>:Base where T:Base<T>, new(){
  public override Base CreateBase(){
    return (Base)(new T());
  }
  public T Create(){return new T();}
}
みたいにメソッド名は変えなきゃ駄目だ。
後、使い方の方も(まあ気が付くと思うけど)
class B:Base<B>{
 ...
}
class C:Base<C>{
 ...
}
ね。
542デフォルトの名無しさん:2009/02/25(水) 15:05:09
>>540
それくらいなら、やってみりゃいいじゃん。
543デフォルトの名無しさん:2009/02/25(水) 15:09:50
>>538
等価のコードを書いたら結局Application.DoEventsと同じ作用をもたらすだろ
素直にイベント駆動の脳になれ
544デフォルトの名無しさん:2009/02/25(水) 15:10:27
>>540
やってみました
継承元の100が入ってきますね

どうにかして10にすることは出来ませんか?
>>539
やってみます
545デフォルトの名無しさん:2009/02/25(水) 15:11:18
virtualなプロパティにすればよろし
546デフォルトの名無しさん:2009/02/25(水) 15:15:34
>>545
できました有り難うございます。
547539,541:2009/02/25(水) 15:44:40
>>544
共通の基底クラスが必要なければ、

class Base<T> where T : Base<T>, new()
{
  public static T Create() { return new T(); }
}
class A : Base<A> { }
class B : Base<B> { }

でも可だと思う。A:Base<foo>と書く時のfooはAのみに制約されて、それ以外を書くとコンパイル
エラーではねられる。継承先のクラスのインスタンスをプロパティの設定などの処理とともに生成
するメソッドを持つクラスを作る(変態的だけど)わりと一般的なテクニック。
548デフォルトの名無しさん:2009/02/25(水) 15:48:35
>>547
成る程
よく分かりました
ついでにやっと何となくwhereが分かりました
549デフォルトの名無しさん:2009/02/25(水) 15:49:24
>>548
class B:Base<B>{}があると、class A:Base<B>はコンパイルエラーにならないので注意してね。
550デフォルトの名無しさん:2009/02/25(水) 22:09:43
>538
タイマーにしておけ。
見やすくなるように整理して書くだけだろ。
551デフォルトの名無しさん:2009/02/25(水) 22:32:27
処理内容にもよると思いますが、

void BigMethod()
{
...
    if (〜) { ...//百行くらい }
    else { ...//百行くらい }
...
}

よりも、

void BigMethod()
{
...
    if (〜) { Method1(...); }
    else { Method2(...); }
...
}

Method1(...);//百行くらい
Method2(...);//百行くらい
...

の方が大抵の場合で速くなるのはなぜでしょう?
552デフォルトの名無しさん:2009/02/25(水) 22:38:57
>>551
気のせいじゃね?
553デフォルトの名無しさん:2009/02/25(水) 22:40:53
↓のようなリストを作成しており、条件としてKeyだけを
用いてそれと一致するbdListのindexを取得したいのですが
foreachなどで一つ一つチェックするしかないのでしょうか。

BindingList<Data> bdList;

public class Data
    {
        private string _Key;
        private string _Value;
        private int _Count;
        public string Key
        {
            set { this._Key = value; }
            get { return this._Key; }
        }
        public string Value
        {
            set { this._Value = value; }
            get { return this._Value; }
        }
        public int Count
        {
            set { this._Count = value; }
            get { return this._Count; }
        }
    }
554デフォルトの名無しさん:2009/02/25(水) 22:47:54
>>553
リスト構造なら辿るしかないだろ

そういう意味じゃないならlinqとか
555デフォルトの名無しさん:2009/02/25(水) 23:08:17
>551
実行時に最適化されてるんだよ。
呼び出しの初回にメソッド全体がJITコンパイルされるか小さなメソッド単位でJITコンパイルされるかだよ。
細かなプロパティやメソッドの呼び出しなんか結構インライン展開されてるしある程度分割した方がいいと思うよ。

試しにBigMethod内で呼び出しているけど条件に合わなくて呼び出されない箇所で
参照してるアセンブリのメソッドを削除してdllを差し替えてそのまま実行すると
上はBigMethodメソッド呼び出しで実行される前のタイミングで落ちるけど、
下はMethod1かMethod2が不完全でも呼ばれなければ動いたりする。

>553
.Select((data, index) => new {Data=data, Index=index}).ToLookup(i => i.Data.Key).ToDictionary(i => i.Key, i.First().Index)["探したいキー"]
とでもすればいいんじゃないかな。
素直にforで辿った方がいいよ。
556553:2009/02/25(水) 23:13:06
>>554
有り難う御座いました。2005環境なのでLinqは使えません…。
.Containsや.IndexOfが内部的にforeachで回しているのであれば
諦めつくのですが、件数が増えてきたときに効率が悪いかと思いまして。
データ構造を見直した方がいいんですかね…。
557デフォルトの名無しさん:2009/02/25(水) 23:13:35
LINQ使う場合、
bdList.OfType<Data>.Where(d=>条件).Select(d=>bdList.IndexOf(d));
が書き方的には自然だけど、IndexOfのコストが絶対に問題になる。
Enumerable.Range(0,bdList.Count).Where(i=>bdList[i].Key==ほにゃらら);
とかすべき。
558デフォルトの名無しさん:2009/02/25(水) 23:15:52
そりゃ普通のリストならO(n)掛かるのはどうにもならんだろ。
559デフォルトの名無しさん:2009/02/25(水) 23:17:52
>>556
LINQ使えないのなら、
Enumerable.Range(0,bdList.Count).Where(i=>bdList[i].Key==ほにゃらら);
と同等の処理をforで書けば良いと思う。.Containsや.IndexOfがO(N)で嫌だという
感覚は正解で、インデックスによる参照がO(1)だから、そっちを使うべき。
560デフォルトの名無しさん:2009/02/25(水) 23:31:07
内部にDictionary<string, Data>持っとくとか
561553:2009/02/25(水) 23:42:04
親切に有り難う御座いました。
Dictionaryでもう少し効率良く出来るのであればそれも
視野に入れて色々試してみます。
562デフォルトの名無しさん:2009/02/25(水) 23:43:42
>>560
Dictionaryって、重複を許すモノホンのハッシュじゃないよね?
563デフォルトの名無しさん:2009/02/25(水) 23:50:29
ごめん、>>562はハッシュについて勘違いしていた。
それと、そもそも異なるValueに同じKeyが対応する事がないのなら、確かにDictionary一択だね。
564デフォルトの名無しさん:2009/02/26(木) 02:16:03
>>555
1回のみしか呼ばれないならJITコンパイル時の時間分だけ短縮しているというのは理解できるのですが、
BigMethod自体が複数回呼ばれる場合でも下の方が速いというのがちょっとわからないのですが…
呼び出し回数は、で、BigMethod1回につきMethod1またはMethod2が1回なのですが、
複数回呼ばれる間にどちらも呼ばれます。回数自体はそこまで多くなく、メソッド呼び出しのオーバーヘッド
は大きくないはずですが、なぜ分割した方が速くなるのでしょうか?
処理をメソッドに分割した方がうまく最適化されやすいのでしょうか?
565デフォルトの名無しさん:2009/02/26(木) 03:28:31
レジスタ変数をうまいこと選択できるとか?
いや知らんけど。
566デフォルトの名無しさん:2009/02/26(木) 03:28:38
>>564
基本的なことだけど速度計測の時に最適化が有効になってるか確かめた?

デバッグビルドは最適化が働かないよ。
リリースビルドでもF5実行の場合は最適化が抑止されるよ。
567デフォルトの名無しさん:2009/02/26(木) 10:20:45
初歩的な質問で恐縮ですが
C++のSTLとかアルゴリズムを利用したコードってC#でも使用できますか?
568デフォルトの名無しさん:2009/02/26(木) 10:28:12
コードってC++のソースコードなのかコンパイル済みのコードなのかどっちなんだ
569デフォルトの名無しさん:2009/02/26(木) 10:28:33
>>565
一応BigMethodをビルドしてからReflectorでILを見てみると、.maxstackの値が22から10に減っていました。

>>566
Debug、Releaseビルドどちらの場合でも分割している方が速かったです。
一応実行時はリビルドを実行してからVS上ではなく直接exeを起動して計測しています。
570デフォルトの名無しさん:2009/02/26(木) 10:46:38
>>568
どちらでも可能であればかまいません
C#でSTLを使いたいのです
571デフォルトの名無しさん:2009/02/26(木) 10:47:56
無理 テンプレートが使えないからな
C++/CLIでSTL/CLRでも使えば?
572デフォルトの名無しさん:2009/02/26(木) 10:53:58
C#使う以上は問答無用でSystem.Collections.Generic使え
573デフォルトの名無しさん:2009/02/26(木) 11:16:30
拝承
574デフォルトの名無しさん:2009/02/26(木) 11:21:53
調べてないのだけど、C++/CLIってunsafeキーワード書かなくても、
ポインター使ったプログラムを掛けるのかな?
575デフォルトの名無しさん:2009/02/26(木) 11:24:05
書けるよ。
manageとunmanageの区別は自分で意識してやらないとならんが。
576デフォルトの名無しさん:2009/02/26(木) 11:31:35
コンパイルオプションでポインタを使えなくすることもできるけどな
577デフォルトの名無しさん:2009/02/26(木) 11:32:18
pinできなくなるってこと?
578デフォルトの名無しさん:2009/02/26(木) 12:05:27
pin_ptrはできる。GCHandleType.Pinned使ったGCHandle.Allocと意味的に同じだし。
でもT*にキャストはできない。
pin_ptrからIntPtr作ることはできてMarshalでアクセスはできる。
つまりは/unsafe使わないC#とほぼ同じ。
579デフォルトの名無しさん:2009/02/26(木) 12:52:53
あくまで相互運用のためにあるので全部がC++/CLIのアプリケーションは作るな莫迦者って誰かが言ってたな
580デフォルトの名無しさん:2009/02/26(木) 13:03:47
MS自身そういうスタンスだからな
STL/CLRとかいう迷惑なものはなかったことにするべき
こんなもんがはびこったりしたら何のための.NETかわからなくなる
581デフォルトの名無しさん:2009/02/26(木) 13:26:44
いや、.NETのジェネリックは糞過ぎるから、
テンプレートとして使えるコレクションライブラリは欲しい。
582デフォルトの名無しさん:2009/02/26(木) 13:40:18
C++コードとの互換性を含めるべきだったんだよ、MSは!
583デフォルトの名無しさん:2009/02/26(木) 15:01:34
プリプロセッサで変態マクロが定義できる言語には二度と触りたくない。マクロのすごい版として
テンプレートを導入したC++は何をかいわんや。オブジェクト指向的な構造さえしっかりしていれば
むやみやたらな自由度なんていらない。.NETのジェネリックはコードが変態にならない点で優れて
いると思う。その分できない事が多すぎるというのは理解するが。
584デフォルトの名無しさん:2009/02/26(木) 15:07:25
そしてやっぱりダージリンの新開発待望論が高まる
585デフォルトの名無しさん:2009/02/26(木) 22:47:21
自分が書いたものですら、昔のものはまるで読めないような変態言語は勘弁して。
586デフォルトの名無しさん:2009/02/26(木) 23:05:07
今の仕事が左から流れてきたデータをより分けたり下から流れてきたデータと組み合わせたりして
右に流すようなやつなんだがLINQ使い倒せて実に気分がいい
趣味でいじる分にはピンと来ないgroup byとか爽快だ
だが後でメンテする人は果たして読めるんだろうかアレ
いやまあできる限り読みやすく書いてるつもりだが

でも最大の責任は同じ名前のクラス3つも4つも作った奴だから文句はそいつに言ってくれ
なんで一つのメソッド内に別々のInformationクラスが3つも出てくるんだ畜生
587デフォルトの名無しさん:2009/02/26(木) 23:30:55
ネームスペース別でも、機能が似たようなInformationが、
3つ同じ名前で実装されてるってか?w
588デフォルトの名無しさん:2009/02/26(木) 23:46:17
それは酷いww
589デフォルトの名無しさん:2009/02/27(金) 00:09:44
まさか担当者ごとにネームスペースを分けちゃいないだろうな。
Kaishamei.Suzuki.Information, Kaishamei.Sato.Information みたいな……
590デフォルトの名無しさん:2009/02/27(金) 00:52:18
苗字だけじゃなくちゃんと名前でわけてるわ!
591デフォルトの名無しさん:2009/02/27(金) 07:51:01
ならおk
592デフォルトの名無しさん:2009/02/27(金) 09:05:09
でも将来的に似てても一部違う機能を実装するならそれもありとかでは?
と素人が申しております
593デフォルトの名無しさん:2009/02/27(金) 20:03:12
便乗質問。

2chにはあまりこういう仕事してる人いないかもしれないけど、
例えばFooTech社のBAR1234というインターフェイスカード(DIOとか
モーションコントローラとかいろいろ)を操作するためのクラスライブラリを
作るときって、名前空間名はどうしてる?

FooTech.BAR1234 ?
MyCompany.BAR1234 ?
MyCompany.FooTech.BAR1234 ?
594デフォルトの名無しさん:2009/02/27(金) 20:26:33
三番目以外にする理由がわからない
595デフォルトの名無しさん:2009/02/27(金) 20:41:43
発注元にもよるんじゃ
596デフォルトの名無しさん:2009/02/28(土) 01:49:05
>593
3番目でやってるよ。
結局名前空間だけじゃなくアセンブリも分けてあって
プラグインのように呼び出せるようにしてある。
597デフォルトの名無しさん:2009/02/28(土) 05:22:52
仮面さんとこから転記

名前空間のネーミング方法
CompanyName.TechnologyName[.Feature][.Design] というパターン。

例: Uchukamen.MultiMedia.Movie.Viewer
.NET Framework 名前空間で使用されている名前は使わない。
Class Console →だめ。
意味的に適切な場合は、複数形の名前空間名を使用する。
例: Collections
例外: 省略形 System.IOs 誤 → System.IO 正。
名前空間とクラスに同じ名前を使用しない。

namespace MySystem;

class MySystem; // 誤り。名前空間とクラスに同じ名前を使用しない。
598デフォルトの名無しさん:2009/02/28(土) 07:02:32
趣味で作ってる場合CompanyNameはどうすればいいんだ・・・
本名使うには抵抗が・・・
599デフォルトの名無しさん:2009/02/28(土) 07:11:28
趣味ならウェブサイト名とか。公開しないなら個人名でもいいだろう。
600デフォルトの名無しさん:2009/02/28(土) 08:09:42
600
601デフォルトの名無しさん:2009/02/28(土) 10:23:05
趣味やオープンソースならプロジェクト名だけでいいと思う
602デフォルトの名無しさん:2009/02/28(土) 11:56:24
メッセンジャーを作ろうと思うのですが、
どうやったらインターネット越しの相手と通信できますか?
603デフォルトの名無しさん:2009/02/28(土) 12:22:53
キミニハムリダ
604デフォルトの名無しさん:2009/02/28(土) 14:00:03
カムサハムニダ
605デフォルトの名無しさん:2009/02/28(土) 14:03:22
ヨンドンサリの
606デフォルトの名無しさん:2009/02/28(土) 14:18:49
UPnPでポートをあけてpushできるようにして、
マイクから音声を取得するようにして、
その音声を圧縮して、tcpかudpで送って、それを受信側で元に戻して再生するお

UPnPつかわないで擬似的にpushしてるソフトあるけど
どうやってんだろ
607デフォルトの名無しさん:2009/02/28(土) 14:23:27
擬似的なpushって受信側からのポーリングじゃね
608デフォルトの名無しさん:2009/02/28(土) 14:28:51
>>599
ニックネーム
609デフォルトの名無しさん:2009/02/28(土) 18:26:02
>>608
じゃおれの場合はHannsamubo-iにすればいいのか
610デフォルトの名無しさん:2009/02/28(土) 22:06:48
おまえ、ハンサムボーイって呼ばれてるのか
イジメじゃないか
611デフォルトの名無しさん:2009/02/28(土) 22:17:46
>>610
ごめんごめんhandsomeboyの間違いだった
612デフォルトの名無しさん:2009/02/28(土) 23:21:45
>>598
GUID
613デフォルトの名無しさん:2009/03/01(日) 01:43:04
>>612
おまえとは仕事したくないなwwwww
614デフォルトの名無しさん:2009/03/01(日) 01:56:29
むしろうちに欲しい
615デフォルトの名無しさん:2009/03/01(日) 01:57:34
仕事欲しい
616デフォルトの名無しさん:2009/03/01(日) 01:58:37
彼女欲しい
617デフォルトの名無しさん:2009/03/01(日) 02:04:12
仕事さえあれば彼女ができる自信はある
618デフォルトの名無しさん:2009/03/01(日) 02:35:51
いたって簡単なことだが、ずっと家に居たって何も始まらない。
2chなんてすぐに断って家を発って職安に行くんだ。
619デフォルトの名無しさん:2009/03/01(日) 02:38:30
いやーん
620デフォルトの名無しさん:2009/03/01(日) 03:52:57
>>618
じゃあ一緒に行こうか
621デフォルトの名無しさん:2009/03/01(日) 15:47:48
現地集合な
622デフォルトの名無しさん:2009/03/01(日) 16:54:25
NEETでなぜ悪いっ
623デフォルトの名無しさん:2009/03/01(日) 18:03:45
悪いに決まってるだろJK
親や周りの人に負担ばかりかけて
無駄に消費するだけして
周囲や社会には何も貢献してないんだから
624デフォルトの名無しさん:2009/03/01(日) 18:34:33
>親や周りの人に負担ばかりかけて
>無駄に消費するだけして
>周囲や社会には何も貢献してないんだから
まさに2ちゃんねるにレスすることとまったく同じだな
625デフォルトの名無しさん:2009/03/01(日) 19:13:01
ばーか
上の世代が貯金ばかりして経済が停滞してるというのに
ニートはそれを消費に回して経済活性化に寄与してるんだよ
626デフォルトの名無しさん:2009/03/01(日) 19:19:21
>>622
.NETでなぜ悪いっ

に見えた
627デフォルトの名無しさん:2009/03/01(日) 19:36:07
悪いに決まってるだろJK
メモリやディスクに負担ばかりかけて
無駄にリソースを消費して
周囲や社会には何も貢献してないんだから
628デフォルトの名無しさん:2009/03/01(日) 20:45:01
>メモリやディスクに負担ばかりかけて
>無駄にリソースを消費して
>周囲や社会には何も貢献してないんだから
まさに2ちゃんねるにレスすることとまったく同じだな
629デフォルトの名無しさん:2009/03/01(日) 20:51:56
NEET、NEETを語る
630デフォルトの名無しさん:2009/03/02(月) 10:40:11
NEETな午後3時
631デフォルトの名無しさん:2009/03/02(月) 21:04:39
TCPListenerを使って接続を受け付けるために、
BeginAcceptTcpClientで接続を受け付けています。

while (isAlive == true)
{
tcpListener.BeginAcceptTcpClient(new AsyncCallback(TCPListenAcceptCallback), tcpListener);

autoResetEventTCPReceive.WaitOne();
}

ここで、プログラムを終了させるためにisAliveをfalseにしているのですが、
BeginAcceptTcpClientでブロックされてしまい、プログラムがいつまでも終了
しない状態になってしまいます。

そもそもプログラムの終了方法が悪いのかもしれませんが、
何か良い方法があれば教えてください。

よろしくお願いいたします。
632デフォルトの名無しさん:2009/03/02(月) 21:30:17
せっかくBegin使ってるのにその直後に無限待機しちゃ意味無いじゃん
適当にWaitOneにタイムアウト秒数与えなよ
633631:2009/03/02(月) 22:02:43
>>632
ありがとうございます。
WaitOneにタイムアウトを持たせることで解決しました。
# 若干プログラムの終了まで時間が掛かりますが、問題になる範囲ではないですよね?
634デフォルトの名無しさん:2009/03/02(月) 23:29:23
CLR ProfilerでFormアプリケーションのメモリ生成を見ようとしいます。CLRプロファイラのメインフォームからアプリケーションをスタートするとアプリケーションはスタートするんですが、
"Waiting for application to start common language runtime" とでたままプロファイラがアプリケーションにアタッチできません。
デバッガーで見るとCLRProFiler.MainForm.WaitForProcessToConnectの中のpipe.Readで毎回IO.Exceptionが発生しています。
例外内容は"プロセスがパイプの他端を開くのを待っています。"とのこと。
ぐぐってみると同じような現象が出ているのはあったんですが、サービスで発生した場合でアイデンテイティをシステムで立ち上げるとかうんたら。
http://forums.asp.net/p/368720/372560.aspx
アプリケーションの場合にどうするのかわかりません・・・
securityがらみぽいのですが、これは環境がVistaだからでしょうか。
635634:2009/03/03(火) 12:30:25
事故解決。
CLRProfiler.exeをエクスプローラから右クリで管理者として実行でいけました(=゚ω゚)ノ
でもタスクマネージャーでワーキングセットが500Mぐらい食って減らないもののプロファイルしたかったんだがProfilerでみても、10Mぐらいしかアロケートしてないといわれる・・・
見方が悪いんだかよくわからん。逝ってくるノシ
636デフォルトの名無しさん:2009/03/05(木) 14:39:07
出来上がったexeをバイナリエディタで覗くとプロジェクトのフルパスが埋め込まれちゃってるんだけど、消す方法ある?
637デフォルトの名無しさん:2009/03/05(木) 14:53:06
バイナリエディタがあるなら消せるだろ。
638デフォルトの名無しさん:2009/03/05(木) 14:53:12
プロジェクトのじゃなくてpdbファイルのじゃね?
pdbファイルの出力ならプロジェクトのプロパティでビルドの詳細設定>デバッグ情報あたりで制御できる
639デフォルトの名無しさん:2009/03/05(木) 17:05:04
>>637
消して動作に影響あるかもしれんのじゃないか?
640デフォルトの名無しさん:2009/03/05(木) 21:28:21
ハッシュで弾かれないか?
641デフォルトの名無しさん:2009/03/05(木) 21:58:53
pdbはデバッグ用だろ
642デフォルトの名無しさん:2009/03/06(金) 00:52:45
>636
デバッグビルドしてない?と思ったけど
VS2005かVS2008からReleaseビルドでもpdbを作るのがデフォルトになってるんだった。
ビルドの詳細設定から出力のデバッグ情報をnoneに変更する。
643デフォルトの名無しさん:2009/03/06(金) 07:37:47
おお本当だ
Release設定のデバッグ情報noneで埋め込まれなくなった
みんなありがとう

しかしこれ気付かずにそのままリリースしたら、プロジェクトのフォルダに個人名使ってたら色々と問題になりそうじゃない?
644デフォルトの名無しさん:2009/03/06(金) 07:45:30
普通の観察力があれば気づく
645デフォルトの名無しさん:2009/03/06(金) 07:48:19
dotfucator使ってればその辺の情報は消えてるだろ
646デフォルトの名無しさん:2009/03/06(金) 08:57:50
"要.NET Framework3"でググって出てきたのをいくつか見てみたけど消してる人は少ないな
647デフォルトの名無しさん:2009/03/06(金) 09:13:34
普通はexe(dll)と設定ファイル以外出さないでしょ
648デフォルトの名無しさん:2009/03/06(金) 10:47:53
pdbファイルがどうこうの話じゃなくて、本名バレしてる人いるんじゃね?って話
本名でユーザー作っててマイドキュメントの下にプロジェクト置いてたらアウアウ
649デフォルトの名無しさん:2009/03/06(金) 11:07:34
そういう事故がままあるからうちではユーザー名に本名を使わなくなった
650デフォルトの名無しさん:2009/03/06(金) 11:20:06
タスマネのユーザー名を消さずにスクショうpしてあうあうとかリアルにあるからな
651デフォルトの名無しさん:2009/03/06(金) 14:12:41
ユーザ名は嫁の名前使ってます。

脳内嫁ですが。
652デフォルトの名無しさん:2009/03/06(金) 14:44:15
>>646
蛇足だが、100%アンマネージドなVC++アプリでも
デフォルトのリリースビルドの設定だとPDBのパスが埋め込まれるのは同じ。
653デフォルトの名無しさん:2009/03/06(金) 15:27:08
リリースするときって、msbuildとか使ってバッチビルドするもんでしょ
654デフォルトの名無しさん:2009/03/06(金) 16:27:40
高度な話題禁止!
655デフォルトの名無しさん:2009/03/06(金) 22:05:03
高度な話はしてないので続けてOK
656デフォルトの名無しさん:2009/03/06(金) 22:43:50
>>653
おれはいまだにGNUのmake
657デフォルトの名無しさん:2009/03/07(土) 03:35:05
俺は何も考えずにReleaseに切り替えてリビルドして出来上がったexeを配布してるな
658デフォルトの名無しさん:2009/03/07(土) 12:01:20
うちは専用のビルド用PCでやってるんで個人名とか入らない。
659デフォルトの名無しさん:2009/03/07(土) 12:13:36
レポジトリにコミットしたらHudsonが自動ビルドしてくれる
660デフォルトの名無しさん:2009/03/08(日) 19:33:22
VS2008のC#でプログラムを組んでいます。

たくさんの線や長方形、円をアルファ値30%ぐらいで重ね合わせて描画しています。
これを印刷しようとして躓いてしまいました。
プリンタへは、きれいに印刷できました。でも、プリンタドライバ型のPDF出力を行うと、
不完全なディザみたいになってしまいます。どうも、PDF自体が半透明な描画ができないようです。

それで、いったんBitmapに描画してから、プリンタに転送しようとしました。
サイズが小さいときにはこれでPDF出力もうまくいったのですが、A3サイズになると、プリンタの
解像度と用紙サイズでBitmapを作成しようとした時点でエラーになってしまいました。
縦横のピクセルサイズが大きすぎるのだと思います。

こんなときはどうすればいいのでしょうか。やっぱりバンディングみたいにすこしずつ処理でしょうか。

661デフォルトの名無しさん:2009/03/08(日) 20:08:52
>>660
大きすぎるならそのBitmapを縮小すれば良いんじゃね?
662デフォルトの名無しさん:2009/03/08(日) 20:36:47
A3が11.7" x 16.5"で、300dpiだと3500px x 5000pxあたりか。

そのくらいでエラーになるのはおかしい。
663デフォルトの名無しさん:2009/03/08(日) 21:23:44
本当に仮想プリンタのせいだとしたら、
まず仮想プリンタを変えて試すべきじゃないんだろうか?

フリーのだけでも数種類あったはずだよね?
664デフォルトの名無しさん:2009/03/08(日) 22:24:47
ありがとうございます。
>>662
仮想プリンタ側で4800dpiみたいな設定ができて、C#プログラムの中からはこれが
そのまま解像度として見えています。
現実的には、600dpiぐらいで良いので、それぐらいで考えてみます。

>>663
Primo、BullZip、Acrobat Pro(これは評価版)を試してみたのですが、色のアルファ
ブレンドはうまくできませんでした。
665661:2009/03/08(日) 23:02:24
>>664
おいてめーw形式だけでも俺様に礼の一文を書けwww
666デフォルトの名無しさん:2009/03/08(日) 23:11:08
>>665
ああっすみません。
4800dpi→600dpiは>>661さんのご提案を取り入れての判断でした。
667デフォルトの名無しさん:2009/03/08(日) 23:43:20
その程度のことで礼を求めるなよ
だせえ
668デフォルトの名無しさん:2009/03/09(月) 00:24:11
さすが大物さんは違いますね。
まあ会社でも鼻つまみ者だろうけどw
669デフォルトの名無しさん:2009/03/09(月) 00:48:19
中学生でも思いつくようなアドバイスで霊を要求するってw
670デフォルトの名無しさん:2009/03/09(月) 01:20:05
661は馬鹿なの?
671デフォルトの名無しさん:2009/03/09(月) 01:39:59
うん
672デフォルトの名無しさん:2009/03/09(月) 02:35:30
冗談もわかんねーのかよwお前らほんと低脳だなwww
673デフォルトの名無しさん:2009/03/09(月) 02:42:08
そんなに悔しかったのか(プ
674デフォルトの名無しさん:2009/03/09(月) 02:52:26
雑誌のグラビア写真でも300dpiくらいだよな
675デフォルトの名無しさん:2009/03/09(月) 09:25:54
661が馬鹿なのはどうでもいい
それより664が大人なのが重要

こんな人間に私はなりたい
676デフォルトの名無しさん:2009/03/09(月) 14:04:49
C# Express2008にてC#を勉強中です。
質問なのですが、ToolStrip上にtoolStripLabelを置いて、そのバックカラーを
変更したいのですが、BackColorプロパティーをいじっても変化ありません。
他のどこをいじれば変更できるのでしょうか?
そもそも、変更できない?
677デフォルトの名無しさん:2009/03/09(月) 14:49:38
あんまり簡単ではないがToolStripRendererの派生クラスで制御できる
一通りヘルプの解説読んでググってみたりしても"さっぱり"理解できないのなら手を出すには早いかもね
678デフォルトの名無しさん:2009/03/09(月) 14:56:15
Visual Styleに依存するのでむやみに変更するのは非推奨
679デフォルトの名無しさん:2009/03/09(月) 15:28:37
皆様、ありがとうございます。

なるほど、そのtoolStripLabelが乗ってるtoolStripのRendererModeで動作が変わるんですね。
RendererModeをSystemにしたら変更が反映されました。
ありがとうございます。

680デフォルトの名無しさん:2009/03/11(水) 14:47:19
ボタンクリックイベントとかで一時的に使ったBitmapとかImageってそこの処理抜ける前にDisposeした方がいいの?
それともそのスコープ抜けたときに勝手に開放してくれる?
681デフォルトの名無しさん:2009/03/11(水) 14:53:40
Disposeしたほうがいい
682デフォルトの名無しさん:2009/03/11(水) 17:24:03
一時的に作ってローカルな範囲だけで使って
外に漏らしてないと断言できるならならあえてDisposeしない理由がない
683デフォルトの名無しさん:2009/03/11(水) 17:47:50
>>680
using使おうや
684デフォルトの名無しさん:2009/03/11(水) 18:24:21
usingといえば、StreamReaderが元のStreamまで根こそぎ閉じるの勘弁して欲しいな
685デフォルトの名無しさん:2009/03/11(水) 19:46:42
複数のオブジェクト間で受け渡したりするときはTextReaderを通すことが多いからな
686デフォルトの名無しさん:2009/03/11(水) 19:53:39
>>684
なんで合理的な仕様じゃん。
そう思えないなら、ふらっとスレの議論じゃないけどDispoeのそもそもの意義が
わかってないんでしょ。
687デフォルトの名無しさん:2009/03/11(水) 20:52:53
実際のとこスコープ外れたオブジェクトって即時消去されずに残ってるもんなの?
例えばこういう場合に明示的にDisposeするべきなのか、しなくてもいいのか迷う

private void hogehoge(string fname)
{
  Bitmap bmp = new Bitmap(fname);
  this.pictureBox0.Image = (Image)bmp.Clone();
  //bmp.Dispose();
}
688デフォルトの名無しさん:2009/03/11(水) 20:54:48
そんなに頻繁に呼ばれないのならしなくても問題にはならないだろうけど
できるのにわざわざしない意味がない
689デフォルトの名無しさん:2009/03/11(水) 21:01:27
>>688
できるのにしないのは、C#ってそもそもそういう部分を気にせずにコーディングできるのが強みだから
使わなくなった変数やオブジェクトはGCで自動的に開放してくれるからC++みたいにメモリ管理で苦労しなくていいって触れ込みだった気がする
690デフォルトの名無しさん:2009/03/11(水) 21:10:08
GCはオブジェクトの生存範囲が分からない場合には有効だけど
>>687ではusingを書くか書かないかだけの違いだろ
691デフォルトの名無しさん:2009/03/11(水) 21:10:13
using!using!
692デフォルトの名無しさん:2009/03/11(水) 21:54:24
メモリで大きな画像を持ってると大変なことになりそうだしな 特にサーバなんかでは
必要無くなったら破棄するのが良いよ
693デフォルトの名無しさん:2009/03/11(水) 22:08:44
>>687
.NETのBitmapは参照用途のつもりでもファイルをロックしてしまう
この例では pictureBox0 にクローンしたものを
わたしているから bmp は不要なんだが、Disposeしないと
GCが動くタイミングまで(いつかは不明)ファイルがロックされたままとなり、
結果、ファイルを削除あるいは移動しようと失敗してしまうことがありうる
よって、Disposeしとくべき
694デフォルトの名無しさん:2009/03/11(水) 23:38:22
質問です。

開発上、とあるライブラリを仕様せよとの指令が下りました。

APIマニュアルはそれなりに整備されています。

しかしメソッドはプロパティーにアクセスした時に、
発行しうるExceptionの記述がまったく無いマニュアルでした。

そこでどのようなExceptionが発生するのか調査したいのですが、
ソースを直接参照できないため行き詰っております。

このような場合は、どのような調査を行ったほうが良いでしょうか・・・
695デフォルトの名無しさん:2009/03/11(水) 23:42:46
逆コンパイル
696デフォルトの名無しさん:2009/03/11(水) 23:47:10
C#をC++に変換してくれるツールないっすか?
697デフォルトの名無しさん:2009/03/11(水) 23:47:44
ないよ
698デフォルトの名無しさん:2009/03/11(水) 23:54:11
C#からC++/CLIへの変換なら簡単なのだけどねぇ

Instant C++ (C# Edition) ってのがあるけど、どの程度使える代物なのかは知らん
699デフォルトの名無しさん:2009/03/12(木) 00:26:12
>>695
アドバイスありがとうございます。

C# 逆コンパイルで引っかかったものに Reflector というものがあるのですが、
こちらはこの手の会席で使う定番ツールみたいですね。
700デフォルトの名無しさん:2009/03/12(木) 00:39:19
このサイトってどうなの?

++C++;// 未確認飛行 C
ttp://ufcpp.net/
701デフォルトの名無しさん:2009/03/12(木) 00:46:02
普通に良いサイト
702デフォルトの名無しさん:2009/03/12(木) 11:23:56
>>693
.NET3.5はその辺大丈夫みたいよ
3.0からなのか3.5からなのかはわからないけどロックされることがなくなったっぽい
703デフォルトの名無しさん:2009/03/12(木) 15:19:06
一度MemoryStreamにコピーすれば問題ない。
704デフォルトの名無しさん:2009/03/12(木) 19:32:35
>>702
むしろロックしない仕様の方に問題があると思うんだが。。
ロックしない仕様の方を大丈夫と表現する感覚が理解できない。
705デフォルトの名無しさん:2009/03/12(木) 19:37:50
本来,メモリに読み込むときにしかファイルアクセスはいらないだろ
706デフォルトの名無しさん:2009/03/12(木) 19:42:25
メモリを占有するのが嫌だからファイルをロックするんだよw
何言ってんだか。
707デフォルトの名無しさん:2009/03/13(金) 09:16:06
質問です
メンバ変数hogeとコンストラクタやメソッドhoge()があるとき
this.a = foo;
とやると曖昧と言われてエラーが出るのですが
名称変更せずにこれを解決する方法はないでしょうか?
708デフォルトの名無しさん:2009/03/13(金) 09:31:12
hogeはどこいった
どこに何があるのか分からん
曖昧と言われてエラーって台詞そのものが曖昧
709デフォルトの名無しさん:2009/03/13(金) 09:36:47
707
なにがなんだかわからない
710デフォルトの名無しさん:2009/03/13(金) 09:47:16
>>707
ぐだぐだ言わずにソースコード出せよ
お前の稚拙な説明では意味不明だ
711デフォルトの名無しさん:2009/03/13(金) 10:19:15
>>707
吹いたwww
712デフォルトの名無しさん:2009/03/13(金) 11:14:40
>>707
ワロタ
赤くしとこ
713デフォルトの名無しさん:2009/03/13(金) 12:31:09
うわー恥ずかしい

class hoge
{
int hoge;

public hoge()
{
}
public void hoge()
{
}

public void hoge(int foo)
{
this.hoge = foo;//エラー
}

}

こんな感じなのですが
714デフォルトの名無しさん:2009/03/13(金) 12:35:31
それthis.hoge = foo;の行がなくてもコンパイルエラーになる
名前変える以外にない
715デフォルトの名無しさん:2009/03/13(金) 12:43:43
・メンバ名と型名を同じにはできない
・メソッドのオーバーロード以外で同じ名前のメンバが複数存在することはできない
716デフォルトの名無しさん:2009/03/13(金) 12:50:35
サンクス
717デフォルトの名無しさん:2009/03/13(金) 12:59:09
それを眺めていてふと思ったんだが
class Hogeで、
public static implicit operator Hoge(int intValue)
 return new Hoge(intValue);
でHoge hoge = 1;みたいにしてインスタンスの生成が可能で、

public static implicit operator int(Hoge hoge)
 return hoge.IntValue;
で、int a = hoge;みたいな定義型変換ができるけど、

インスタンスを生成しないで代入するhoge = 1;ってできたっけ
代入演算子はオーバーロードできないから無理なんだっけ?
718デフォルトの名無しさん:2009/03/13(金) 13:05:27
hogeにインスタンスが入ってるかどうかにかかわらず
hoge = new Hoge { intValue = 1; };と同じ
新しくインスタンスを作らずにintValueだけ変えるのは無理
719デフォルトの名無しさん:2009/03/13(金) 13:10:19
さんくす。なら
hoge.IntValue = 1;
とか
hoge.SetInt(1);
とかしかないのか。
どっちかというこ後者かな?
720デフォルトの名無しさん:2009/03/13(金) 14:07:25
public void this(int hoge)
721デフォルトの名無しさん:2009/03/13(金) 22:15:09
あれ?そうだっけ?

public static implicit operator Hoge(int value)

じゃなかったっけ?

Hoge a = 1;

こう使いたいんでしょ?
XNamespace かなんかで使ってるように
722デフォルトの名無しさん:2009/03/13(金) 22:18:11
あごめん、勘違いしてた。生成しないでか。
723デフォルトの名無しさん:2009/03/13(金) 22:23:47
ようはseal型にどれだけ近づけるかと、
ポインタ的な操作(delegate等)をどう簡単に実装するかのジレンマだな
724デフォルトの名無しさん:2009/03/14(土) 08:16:03
TextBox1に入力された数字をInt型のRAMに取り込むにはどうすればいいんでしょうか?
725デフォルトの名無しさん:2009/03/14(土) 08:51:16
int n = Convert.ToInt32(TextBox1.Text);
726デフォルトの名無しさん:2009/03/14(土) 08:52:52
ありり
727デフォルトの名無しさん:2009/03/14(土) 17:27:22
Textboxに数字のみ入力させようと思い、以下のイベントハンドラーとプログラムを用意しました。
するとコンパイルエラーが発生し困っています。
エラーメッセージも以下に用意しました。
私が用意した文のどこがおかしいのでしょうか?



this.textBox2.KeyPress += new System.EventHandler(this.textBox2_KeyPress);

private void textBox2_KeyPress(object sender,
System.Windows.Forms.KeyPressEventArgs e)
{
if (e.KeyChar < '0' || e.KeyChar > '9')
{
e.Handled = true;
}
}

デリゲート 'System.EventHandler' に一致する 'textBox2_KeyPress' のオーバーロードはありません。 (CS0123) - C:\Users\masamune\Documents\SharpDevelop Projects\Hello\MainForm.Designer.cs:74,30
728デフォルトの名無しさん:2009/03/14(土) 17:32:39
>>727
KeyPressEventArgs

EventArgs
729デフォルトの名無しさん:2009/03/14(土) 17:34:20
> this.textBox2.KeyPress += new System.EventHandler(this.textBox2_KeyPress);

ここがおかしい。

普通に KeyPress イベント作って、Designer.cs の中身を確認してみれば
いいと思うよ。
730デフォルトの名無しさん:2009/03/14(土) 17:38:49
エラーメッセージの通り。
 
そういうエラーメッセージが出たら、とりあえずMSDNで
System.EventHandlerを検索する。
 
http://msdn.microsoft.com/ja-jp/library/system.eventhandler(VS.80).aspx
 
デリゲートのシグネチャが
public delegate void EventHandler (
    Object sender,
    EventArgs e
)
であると書いてある。で、textBox2_KeyPressメソッドはこの
シグネチャと一致していない(第二引数の型が一致しない)。
 
そこを直すとまたエラーメッセージが出ると思うので、そのエラー
に関連すると思われるトピックをMSDNで調べる。これを繰り返す。
731デフォルトの名無しさん:2009/03/14(土) 17:43:26
>>728
>>729

即レスあざーす。
早速試してみます。

Cを数年かじっている経験から感覚的に進めてたら急に壁が出来てしまってw
732デフォルトの名無しさん:2009/03/14(土) 17:44:04
>>730

あざーす
733デフォルトの名無しさん:2009/03/14(土) 20:44:09
あざーす、って何?
734デフォルトの名無しさん:2009/03/14(土) 20:47:32
Azure の開発コード名
735デフォルトの名無しさん:2009/03/14(土) 20:55:34
アザトースのことだろ
736デフォルトの名無しさん:2009/03/14(土) 20:56:34
ASUSだろ
737デフォルトの名無しさん:2009/03/14(土) 21:03:28
パチンコのCMでもりゆきの格好してる奴だよ
738デフォルトの名無しさん:2009/03/14(土) 21:10:01
others
つまり(お前の意見じゃあてにならないから)他の意見くれってことだろ
739デフォルトの名無しさん:2009/03/15(日) 01:32:44
>>734-738
ボケのレベルが低い。
俺様がまぢレスしてやる。







安産です。

740デフォルトの名無しさん:2009/03/15(日) 01:34:28
一番レベル低い奴が満を持して登場
741デフォルトの名無しさん:2009/03/15(日) 01:34:49
うん?
742デフォルトの名無しさん:2009/03/15(日) 01:35:59
安産ですとか勝訴ですとかこの手のギャグに弱い
743デフォルトの名無しさん:2009/03/15(日) 03:38:24
それってギャグなの?
744デフォルトの名無しさん:2009/03/15(日) 09:20:26
最近VB.NETからC#に移行しようとしているものですが質問です

C# の public static class というのはVBで言うところの public shared class みたいなもので
ほぼVB.NETのモジュール的な考え方でいいんでしょうか?
745デフォルトの名無しさん:2009/03/15(日) 09:45:37
SQL SERVER 2005 とか2008のDB作成するときにでてくるパスの変更部分

テキストボックスの横にボタンがあって、1つのセルに組み合わさったようなものをC#で作成したいんですが
何か簡単な方法はありませんか?

Cellを継承して自作するしかないんでしょうか?
746デフォルトの名無しさん:2009/03/15(日) 11:18:35
>>744
たとえば、System.Mathクラスは
public static class なんだけど、じゃあMathクラスはVB.NETのモジュール的なもの?
君のいうところのVB.NETのモジュールが何を指すのか分からんので答えようがないが。
普通に"静的クラス C#"でググったほうが早いよ
747デフォルトの名無しさん:2009/03/15(日) 11:28:01
>>746
VBとC#の両方知ってる人なんて山ほどいるんだから、知らなければ
黙ってればいいと思うんだが。

おれは、ぐぐって
http://www.rocksthoughts.com/blog/archive/2008/03/11/extension-method-implementation-differences-between-c-and-vb.net.aspx
これ見て、ふうんと思ったが、<Extension()>なんてアトリビュート
知らないから、コメントしなかった。
748デフォルトの名無しさん:2009/03/15(日) 11:33:18
>>747
偉い偉い立派だよ君
レスしなければもっと偉かったのにね!
749デフォルトの名無しさん:2009/03/15(日) 11:52:28
>>747
おいおい、2つのコードやページのタイトルを見ればExtensionが属性がなんなのか想像がつくだろうに。
750デフォルトの名無しさん:2009/03/15(日) 12:07:30
>>748,749
746さん、ちーす
751デフォルトの名無しさん:2009/03/15(日) 12:10:50
何このスレ・・・
752デフォルトの名無しさん:2009/03/15(日) 13:13:27
>>749
そりゃ想像はできるさ。ぐぐって見つけて概要を想像したのを、
そのままここに書いたらただの知ったか妄想じゃないか。
要するに、ちゃんとした回答ができればいいけど、
できないから書かなかったということ。

その次にこのスレに来たら、変な回答しかついてなかったから、
あえて留保(=言い訳)付でリンクを提示した。
リンクは提示したんだから、質問者が読みたければ、それを読んで
自分で判断すればいい。
753デフォルトの名無しさん:2009/03/15(日) 13:21:39
ExtentionAttributeなんかC#しかやってない奴はあんまり知らんだろうな
754デフォルトの名無しさん:2009/03/15(日) 14:30:03
>>752
というかそもそも元の質問が拡張メソッドの話でないのだから、
蛇足になる拡張メソッドについて言及しているところは避けようよ。

>>744
少なくとも構文上は、ほぼVB.NETのモジュールのような存在という考え方でいい。
細かい話をすれば、C#の視点から見たVB.NETのModuleとは、
単にStandardModule属性付きの静的クラス。

そもそもVB.NETでClassにSharedは付けられない気がするけど。
755デフォルトの名無しさん:2009/03/15(日) 14:33:43
>>752
ごちゃごちゃ言わずに、
黙ってればいいのに
756デフォルトの名無しさん:2009/03/15(日) 18:51:03
オマエモナー
757デフォルトの名無しさん:2009/03/15(日) 19:11:22
まぁまぁ、ぬるぽぬるぽ
758デフォルトの名無しさん:2009/03/15(日) 19:18:01
がっ
759デフォルトの名無しさん:2009/03/16(月) 00:29:10
Type 型のインスタンスからその型のデフォルト値を取りたいんだがどうすればいい?
つまり default(T) みたいなことをしたいんだが。
760デフォルトの名無しさん:2009/03/16(月) 00:48:09
Assembly.GetAssembly(typeof(T)).CreateInstanceで行けるかな。試してないけど。
761デフォルトの名無しさん:2009/03/16(月) 01:13:14
>>760
それだとインスタンスを生成するのでだめなんだ。
762デフォルトの名無しさん:2009/03/16(月) 01:16:05
intとかstringとかdatetimeでもデフォルト値ってとれたっけ
763デフォルトの名無しさん:2009/03/16(月) 01:18:46
>>762
数値や列挙型だと0、参照型だと null、構造体 T だと new T() と同じになる。
764デフォルトの名無しさん:2009/03/16(月) 01:24:40
インターフェースの場合とか、列挙体の場合とか考えると、結構ややこしいな。
765デフォルトの名無しさん:2009/03/16(月) 01:26:49
これでいけるんじゃまいか。
object o = t.IsValueType ? Activator.CreateInstance(t) : null;
766デフォルトの名無しさん:2009/03/16(月) 01:27:37
Nullable<T>は?
767デフォルトの名無しさん:2009/03/16(月) 01:39:06
>>766
Activator.CreateInstance()がnullを返す。
768デフォルトの名無しさん:2009/03/16(月) 01:42:27
>>765でいけたよ。サンクス。
769デフォルトの名無しさん:2009/03/16(月) 22:47:55
SortedList<double, int> 型でデータがあるとして、
入ってるキーのうち「X以下で最大の数」ってのを
2分法で求めたいんだが自分で書くしかない?
そういう関数があってもよさそうなもんだが。
770デフォルトの名無しさん:2009/03/16(月) 22:57:34
そんな関数大量に作られても邪魔だろ。
771デフォルトの名無しさん:2009/03/16(月) 23:35:23
772デフォルトの名無しさん:2009/03/16(月) 23:51:44
>>771
あんがと
773デフォルトの名無しさん:2009/03/17(火) 01:33:53
>>771
特定の値を探すんならそれでいいだろうけど、
X以下で最大の数 みたいに特殊な条件で検索するには向かないのでは

Array.BinarySearchでなくとも、List.BinarySearchやSortedList.ContainsもO(log n)
774デフォルトの名無しさん:2009/03/17(火) 01:50:51
じゃあどうすればいいの
775デフォルトの名無しさん:2009/03/17(火) 01:58:37
自分で書けばいいじゃないか
776デフォルトの名無しさん:2009/03/17(火) 08:41:16
>>773
汎用性を求めているわけじゃないんだから、
Xのインデックスを求めてそこから範囲指定BinarySearchじゃないかな
777デフォルトの名無しさん:2009/03/17(火) 13:55:39
ちょっとC#ってくくりじゃない質問なんですけど、
ブログとかに使われるWEB認証の歪んだ数字の画像なんだけど
あれってそのURLにアクセスする度に表示される画像変わるじゃん。

サーバー側はどうやって自分が出力した画像に書いてあるナンバーと
クライアントが打ち込んだ数字のナンバーが合致しているかを認証するんだろう。

この仕組みご存じの方居ますか?
778デフォルトの名無しさん:2009/03/17(火) 14:02:28
データベースに保存しとくだけ。
779デフォルトの名無しさん:2009/03/17(火) 14:12:10
データベースに保存(笑)
780デフォルトの名無しさん:2009/03/17(火) 14:18:26
すれち
781デフォルトの名無しさん:2009/03/17(火) 14:29:27
>>777
usernameごとに認証ナンバーを発行してるだけ
782デフォルトの名無しさん:2009/03/17(火) 14:36:11
大体はセッションに保存じゃね?
詳細はCAPTCHAでググるよろし
783デフォルトの名無しさん:2009/03/17(火) 14:48:42
>>781
あー、なるほど。
納得!

じゃあ認証されないって事は
やっぱりリクエスト2回投げちゃってるのかなー。

>>782
有益な情報ありがとう。
調べてみます。
784デフォルトの名無しさん:2009/03/17(火) 20:17:52
PHPのpreg_replace_callback()みたいな実装ってある?
正規表現で複雑な処理がしたくて・・・
785デフォルトの名無しさん:2009/03/17(火) 20:27:02
>>784
string str = Regex.Replace(
 input,
 @"\d+",
 (m) => Int32.Parse(m.ToString()).ToString("000")
);
786デフォルトの名無しさん:2009/03/17(火) 20:33:53
>>784
re.sub()のreplに関数を渡すという話ではなくて?
787デフォルトの名無しさん:2009/03/17(火) 20:40:06
円を描画をしたいです。
プロパティからインスタンスを作成したいのですがどのコンストラクタを選べばいいのでしょうか?
788デフォルトの名無しさん:2009/03/17(火) 21:12:37
C#語でおk
789デフォルトの名無しさん:2009/03/17(火) 21:20:07
System.Drawing.Graphics
790デフォルトの名無しさん:2009/03/17(火) 21:25:18
最近やけに日本語でおkレベルの質問が目に付くな
791デフォルトの名無しさん:2009/03/17(火) 21:28:26
クラスのオブジェクトを作成したらインスタンスですか?
クラスのインスタンスを作成したらオブジェクトと同じで、インスタンスはオブジェクトということでいいでしょうか。
クラスは型で作成したらオブジェクトですか?
792デフォルトの名無しさん:2009/03/17(火) 21:29:24
ワッケワッカラン♪
793デフォルトの名無しさん:2009/03/17(火) 21:39:49
誰かスレのためにクラス・コンストラクタ・メソッド・インスタンスをわかり易くまとめろよ。
そういう基本的な部分があいまいな人かなりいると思うぞ。
俺は今から風呂入ってくる。
794デフォルトの名無しさん:2009/03/17(火) 21:41:09
そうだな
風呂でじっくり纏め上げて来い
795デフォルトの名無しさん:2009/03/17(火) 21:47:35
さすがにそのレベルは半年ROMってろカスとしか言えんわ
796デフォルトの名無しさん:2009/03/17(火) 22:02:35
でも自分がその半年ROMってろのカスのレベルの時に
半年ROMってろカスって言われたらむかつくだろ?
797デフォルトの名無しさん:2009/03/17(火) 22:07:46
半年ROMる暇があったら、まともな本を読んで理解を深めてください。
798デフォルトの名無しさん:2009/03/17(火) 22:21:49
C#以前の問題だろ…
799デフォルトの名無しさん:2009/03/17(火) 22:26:46
でも半年ROM中にまともな本読んで理解を深めていて質問したくなったら困るだろ?
800デフォルトの名無しさん:2009/03/17(火) 22:32:09
円を書きたいんです。
描画の仕方詳しく教えて下さい。
ぐぐってもうまくいきません
801デフォルトの名無しさん:2009/03/17(火) 22:33:00
日本語でおk
802デフォルトの名無しさん:2009/03/17(火) 22:33:41
>>800
よくわからないけど、これを試してみたら?
http://youryella.wankuma.com/Library/Extensions/Control/Default.aspx
803デフォルトの名無しさん:2009/03/17(火) 22:40:35
>>800
Console.WriteLine("○");
804デフォルトの名無しさん:2009/03/17(火) 22:41:44
>>801>>803は質問にすら答えられない低脳かつ荒らしかつ穀潰しかつNEET
805デフォルトの名無しさん:2009/03/17(火) 22:51:04
まずは質問の仕方を勉強してからこようね^^
806デフォルトの名無しさん:2009/03/17(火) 22:54:50
質問に答えられなかったらレスしなくていいんだよ^^
807デフォルトの名無しさん:2009/03/17(火) 22:59:28
>>800
Rect theRect;
PenSize(2,2);
SetRect(theRect,20,20,70,70);
FrameOval(theRect);
808デフォルトの名無しさん:2009/03/17(火) 23:05:18
800は釣りだろ
809デフォルトの名無しさん:2009/03/17(火) 23:09:53
810デフォルトの名無しさん:2009/03/17(火) 23:11:13
スレ違いのレスをしてる荒らしがたくさんいまちゅね
811デフォルトの名無しさん:2009/03/17(火) 23:16:46
>>810
でもさ、>>800みたいな超基本みたいな質問する人ってなんだかな、って気がしない?
こんなことぐらい、本の4,5冊でも見れば簡単にわかるだろうに。
812デフォルトの名無しさん:2009/03/17(火) 23:23:03
そしてこれをきっかけに初心者スレが建ち
そこで同じようなレスが繰り返され
さらなる初心者スレが建つことが繰り返されるのであった
813デフォルトの名無しさん:2009/03/17(火) 23:34:40
>>811
4,5冊もいらんだろw

もし4,5冊読まないと分からないような問題だとしたら
ここで質問するべき問題だと思うんだが。
814786:2009/03/17(火) 23:38:25
すまない…Pythonスレと間違えてたw
815デフォルトの名無しさん:2009/03/17(火) 23:57:19
APIを叩いたことないやつはこれだから困る
816デフォルトの名無しさん:2009/03/18(水) 00:02:32
ニーモニックを知らない若造が何を言うか
817デフォルトの名無しさん:2009/03/18(水) 00:14:11
>>803はとんち的には100点
818デフォルトの名無しさん:2009/03/18(水) 00:29:40
>>817
実際にそれが現実解ってこともなくはないしなw
819デフォルトの名無しさん:2009/03/18(水) 00:42:54
お前ら冷たすぎ

>>800
円を描画するんなら、Controlの派生クラスの中でGraphicsクラスを使えばいい。
例えばこんな感じ。
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.DrawString("円", Font);
}
820デフォルトの名無しさん:2009/03/18(水) 00:43:54
下らないネタをいつまでも引っ張りすぎ
821デフォルトの名無しさん:2009/03/18(水) 12:55:10
略して下ネタ
822デフォルトの名無しさん:2009/03/19(木) 09:26:04
ManagedDirectXつかってシューティングを作っているのですが、
何らかの描画命令(たとえばfont.DrawText)を1フレームに300回くらいやると、
描画命令の増加に従って徐々にFPSが落ちていきます。
描画命令をコメントアウトすると治るのでそれ以外が原因になっているとは考えにくいです。
また、テクスチャの有無やアルファの有効無効、頂点数にも影響されないようです。
デバイスの初期化はこうやっています
Direct3D.PresentParameters param = new PresentParameters();
param.Windowed = true;
param.SwapEffect = SwapEffect.Discard;
param.MultiSample = MultiSampleType.EightSamples;
device = new Direct3D.Device(0,Microsoft.DirectX.Direct3D.DeviceType.Hardware, wind,CreateFlags.HardwareVertexProcessing, param);
device.RenderState.CullMode = Cull.None;
device.RenderState.Lighting = false;
device.RenderState.AlphaBlendEnable = true;
device.SetTextureStageState(0, TextureStageStates.AlphaOperation, (int)Microsoft.DirectX.Direct3D.TextureOperation.Modulate);
device.SetTextureStageState(0, TextureStageStates.AlphaArgument1,(int)Microsoft.DirectX.Direct3D.TextureArgument.TextureColor);
device.SetTextureStageState(0, TextureStageStates.AlphaArgument2,(int)Microsoft.DirectX.Direct3D.TextureArgument.Current);
device.RenderState.SourceBlend = Blend.SourceAlpha;
device.RenderState.DestinationBlend = Blend.InvSourceAlpha;
D3DTex.Direct3DDevice = device;
verts = new CustomVertex.TransformedColoredTextured[10];
vertexBuffer = new VertexBuffer(typeof(CustomVertex.TransformedColoredTextured), 5000, device, 0, CustomVertex.TransformedColoredTextured.Format, Pool.Managed);
sprite_ = new Sprite(device);
ClientSize_ = wind.ClientSize;
どうかご教授願います。
823デフォルトの名無しさん:2009/03/19(木) 11:09:17
多数の描画すれば、描画待ちでフレームレートが
悪化するのは、この手の処理では常識だと思います。
824デフォルトの名無しさん:2009/03/19(木) 11:12:52
あとfont.DrawTextは重い
825デフォルトの名無しさん:2009/03/19(木) 11:36:57
>>823
それはそうなんですが、表示してるのはただのスプライト(4頂点)なんです。
C2DにGeforce8600GTをつんでいるのに400スプライトで15FPSもでないのできっと何かが悪いのだとは思いますが・・・。
スプライトの描画部はこうなってます。これより前にテクスチャの設定や頂点の設定があります。
Draw2Dは使っていません。

triは描画する三角形の数で四角いスプライトなので通常2を設定。
if (device == null) return;
GraphicsStream stm = vertexBuffer.Lock(0, 0, 0);
stm.Write(verts);
vertexBuffer.Unlock();
device.SetStreamSource(0, vertexBuffer, 0);
device.VertexFormat = CustomVertex.TransformedColoredTextured.Format;
device.DrawPrimitives(ptype, 0, tri);
cPolygon += tri;
826デフォルトの名無しさん:2009/03/19(木) 11:46:11
スプライト一枚ごとにそんなことやってたら遅いに決まってる
可能な限り同じテクスチャでまとめて書き込んでまとめて描画しろ
827デフォルトの名無しさん:2009/03/19(木) 11:46:41
GraphicsStream stm = vertexBuffer.Lock(0, 0, 0);
stm.Write(verts);
vertexBuffer.Unlock();

↑この処理を400回やってるなら重くなって当り前かと
DrawPrimitiveで描いてるって事はGRAMをロックしてんだろ?

何れにせよDrawPrimitivesを数百回呼び出したら重い
数百枚のスプライトをオンメモリ上に1つのプリミティブで作成しといて
CPU側で座標指定してDrawPrimitiveUpとかやれば大分違うと思う

Managed DirectXはよく知らないけど
828デフォルトの名無しさん:2009/03/19(木) 11:48:20
DrawTextなどを300回って書いといてそりゃねーだろ

バッチ処理は基本だが、にしても遅すぎるな
マネージコードのGCが暴れている可能性もあるからCLRProfilerとかで要調査
829デフォルトの名無しさん:2009/03/19(木) 11:48:51
お、便乗しよっと

「メモリのロック」の意味がよくわかりません
必要な呪文程度に思ってます
このロックとは具体的にはどういう動作をしてるんでしょうか?
830デフォルトの名無しさん:2009/03/19(木) 11:51:28
>>826-827
なるほど。
DrawPrimitivesの小口多数実行とDrawTextのやりすぎの複合要因だったんですね・・・。
テクスチャごとに1回ずつDrawPrimitivesを実行し、DrawTextの使用を見直してみます。

お答えくださった皆様、本当にありがとうございました。
改良に取り組んでみます!
831デフォルトの名無しさん:2009/03/19(木) 12:06:36
>>829
そこ今から俺が触るからおまえら触るなよ!!
ってこと
832デフォルトの名無しさん:2009/03/19(木) 12:14:45
少し便乗して

テクスチャ毎に描画というのは各頂点をGraphicsStreamに書き込んで

DrawPrimitives(PrimitiveType.TriangleList,0,(描画するテクスチャの場所*2));
で良いのですか?
833デフォルトの名無しさん:2009/03/19(木) 13:12:45
>>831
ググればすぐにわかるだろうにw
ttp://www.stackasterisk.jp/tech/dotNet/csharp07_04.jsp
834デフォルトの名無しさん:2009/03/19(木) 13:29:17
メモリのロックってマルチスレッド絡みの処理だったのかw
理解しました、ありがとう
835デフォルトの名無しさん:2009/03/19(木) 20:17:12
下記いずれかのデータを大量にListに格納する場合、速度面等からいうと
どちらを選択した方が良いのでしょうか。格納するデータが増えることは
無いので拡張性を考慮する必要はありませんが、ググってもイマイチ分からず…。

・KeyValuePair<string,string>
・Key,Valueのstringを持ったクラス
836デフォルトの名無しさん:2009/03/19(木) 20:30:13
Dictionary
837デフォルトの名無しさん:2009/03/19(木) 20:32:15
なんで実測してみないんだ?
838デフォルトの名無しさん:2009/03/19(木) 21:06:17
大量のデータから対象を素早く取り出したいならHashtable一択
.NET2.0以降のHashtable実装はDictionaryクラス

詳しく知りたいなら「データ構造とアルゴリズム」でぐぐればいいよ
839デフォルトの名無しさん:2009/03/19(木) 21:16:08
まあ待てインデックスでのアクセスだけでいいのかも知れん
簡単にHashtable/Dictionaryを挙げるのは早計だ
840デフォルトの名無しさん:2009/03/19(木) 21:19:07
841デフォルトの名無しさん:2009/03/19(木) 21:22:40
純粋に>>835の質問に答えると後者だな
KeyValuePairは構造体だから出し入れ遅いよ
842デフォルトの名無しさん:2009/03/20(金) 07:57:03
2147483647個以上の値を格納できるListみたいなのは
自作するしかない?
843デフォルトの名無しさん:2009/03/20(金) 08:01:54
DB使えよwwww
844デフォルトの名無しさん:2009/03/20(金) 08:12:59
本当にそんな物が必要なのかどうか検討するところからだな。
845デフォルトの名無しさん:2009/03/20(金) 08:16:32
今List型で動いてるプログラムがあるんだが、
「メモリを50GB積むからこのデータを処理できるようにしてくれ」
って要求が来たんだ。
846デフォルトの名無しさん:2009/03/20(金) 08:21:31
50Gとかw
847デフォルトの名無しさん:2009/03/20(金) 08:43:44
単純計算で一オブジェクトあたり25b使えるわけだけど、
そのやり方は上手くいかないと思うわwww

IList<T>インターフェイスを提供するDBオブジェクト自作したほうがいいよwww
848デフォルトの名無しさん:2009/03/20(金) 08:50:10
>>847
DBってディスクに書き込むイメージがあったんだがそうでもない?
金(50GBのメモリ分)がかかっても速いほうがいいんだが。
849デフォルトの名無しさん:2009/03/20(金) 08:53:55
でかいRAMDISKつくってそこにDBおけばいいんじゃね?
850デフォルトの名無しさん:2009/03/20(金) 08:57:42
DBについて勉強してくる
ありがと。
851デフォルトの名無しさん:2009/03/20(金) 11:43:19
でもどっかの企業が全部オンメモリにするデータベースを運用しているっていう話を聞いたことがある。
852デフォルトの名無しさん:2009/03/20(金) 11:44:45
そりゃおらくる
853デフォルトの名無しさん:2009/03/20(金) 11:54:42
SQLiteやMySQLがオンメモリモードもってたとおもった。
854デフォルトの名無しさん:2009/03/20(金) 12:45:42
配列なら添え字にlongが使える。
このため64bitの.NET Frameworkなら4GB越えの配列を扱える。
32bitの.NET Frameworkでもlongが使えるが、intの範囲を使い切る前にmemory不足に陥る。
64bitの.NET FrameworkならListなどのコレクションもトータルで4GB以上使えるが、
添え字がint限定なのでそれが上限になる。
855デフォルトの名無しさん:2009/03/20(金) 13:51:31
すべてのユーザーが毎回50GB相当のデータを要求するわけではないんでしょ
OSのディスクキャッシュとかDBのメモリキャッシュに50GBメモリを活用してもらえば、
十分なパフォーマンスが出ると思うがね
856デフォルトの名無しさん:2009/03/20(金) 14:23:45
>>855
十分なパフォーマンスが要件ではなく、
メモリで動作することなんじゃね?
要件定義を間違えるとそうなる。
857デフォルトの名無しさん:2009/03/20(金) 14:41:19
しかし、仕事でDBを使うはいつものことだが、21億件のデータを突っ込んだことはないなw
一体何をしようとしてるんだ。
858842:2009/03/20(金) 14:56:58
シミュレーション系です。
859デフォルトの名無しさん:2009/03/20(金) 21:46:13
あー・・・ってそういうのもC#でやるもんなのか
860デフォルトの名無しさん:2009/03/20(金) 21:51:47
ものにもよるだろうけど生産性との兼ね合いでそれもありじゃね?
まぁ自分的にはF#を使いたいと子だが
861デフォルトの名無しさん:2009/03/20(金) 22:06:16
要素へのアクセスが添字だけですむなら、ただの配列の方がいいけどね。
普通にC#で書いたプログラムを、64bit環境で実行すればよい。
862デフォルトの名無しさん:2009/03/20(金) 23:18:41
円をformの中でピンポンの様に動かしたいんですがどうすればよいのかご教授下さい。
周期的に座標を変化させていけばいいのか、他になにか方法があるのか・・
現在までのソースを示しておきます。
namespace circ
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();

}

void MainFormPaint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;

Pen pen = new Pen(Color.Green, 1);
g.DrawEllipse(pen, 60, 60, 30, 30);

}
}
}
863デフォルトの名無しさん:2009/03/20(金) 23:40:59
何言ってんのお前?
864デフォルトの名無しさん:2009/03/21(土) 00:08:26
>>862
Forms アプリなら Timer 使え。
865デフォルトの名無しさん:2009/03/21(土) 00:52:33
Managed DirectXでコーディングしていrのですが、
ランタイムが入っていない場合の動作を定義するにはどうしたらよいのでしょうか?

FileNotFoundExceptionがthrowされることはわかったのですが、
どの時点でtry catchするべきかよくわかりません・・・。

using System・・・
(略)
using Microsoft.DirectX.Direct3D;
using Direct3D = Microsoft.DirectX.Direct3D;

    Direct3D.Device = null;
try
{
    Direct3D.Device = new Direct3D(なんとか);
}
catch(Exception e)
{
    System.Diagnostics.Debug.MessageBox.Show(e.ToString());
}
のような書き方をすると、
newをしくじった時のcatchはできるんですがDevice型自体を宣言できなった時にcatchするにはどのようにコーディングすればよいのでしょうか?
866デフォルトの名無しさん:2009/03/21(土) 00:59:06
System.Reflection.Assembly.GetModule()
867デフォルトの名無しさん:2009/03/21(土) 01:00:56
>>866
うおおおお
ああああありがとう!!!
868デフォルトの名無しさん:2009/03/21(土) 01:33:51
>>862
ピンポンの動きはよく分からんが、
こんな感じのものを作りたい?
using System;
using System.Drawing;
using System.Windows.Forms;
namespace circ {
public class MainForm : Form {
Timer timer;
int x;
int y;
public MainForm() {
Paint += new PaintEventHandler(MainForm_Paint);
timer = new Timer();
timer.Tick += new EventHandler(timer_Tick);
timer.Interval = 500;
timer.Enabled = true;
}
void MainForm_Paint(object sender, PaintEventArgs e) {
e.Graphics.DrawArc(Pens.Green, x, y, 10, 10, 0, 360);
}
void timer_Tick(object sender, EventArgs e) {
x = (x + 10) % Width;
y = (y + 20) % Height;
Invalidate();
}
}
}
869デフォルトの名無しさん:2009/03/21(土) 10:09:56
>>868
ありがとう御座います。

動きの基本はそれです。
頂いたソースをベースに以下の仕様を考えています。

@スタート時、円は二個
A円の動きは直線
Bスタート時二個円の直進方向は異なる
C壁にぶつかって跳ね返る
D二個の円がぶつかると円が1個増える。
E増えた円も直線動作を行う。
F繰り返し

円同士がぶつかる判定と円を増やしていくにはどうしたらいいんでしょうか?


870デフォルトの名無しさん:2009/03/21(土) 10:18:29
1.お互いの円の中心が半径の2倍より近づいていたら衝突したと見なす
2.円をList<円>等で保持しておいて、衝突したら新しい円を追加する
871デフォルトの名無しさん:2009/03/21(土) 11:10:16
なんつーかやりたいこととやれることのギャップが激しすぎるんじゃねーの?
全部ココで質問するつもりか?
872デフォルトの名無しさん:2009/03/21(土) 11:14:12
このスレの連中はみんな初心者だろ
873デフォルトの名無しさん:2009/03/21(土) 11:21:49
ふらっとすれもうなくなったんだっけ?
874デフォルトの名無しさん:2009/03/21(土) 11:23:28
あるよ

ふらっとC#,C♯,C#(初心者用) Part39
http://pc11.2ch.net/test/read.cgi/tech/1237051173/
875デフォルトの名無しさん:2009/03/21(土) 12:46:36
まさかとは思うがこれ宿題じゃないだろうな
876デフォルトの名無しさん:2009/03/21(土) 12:47:58
宿題スレもあるね!

C#,C#の宿題片付けます。
http://pc11.2ch.net/test/read.cgi/tech/1197620454/l50
877デフォルトの名無しさん:2009/03/21(土) 12:48:18
宿題じゃなく春休みの課題です
878デフォルトの名無しさん:2009/03/21(土) 12:58:29
どう見ても宿題です。有り難うございました。
879デフォルトの名無しさん:2009/03/21(土) 17:01:24
質問です。課題と宿題の違いってなんですか?
880デフォルトの名無しさん:2009/03/21(土) 18:36:28
辞書ひけやゴミ
881デフォルトの名無しさん:2009/03/22(日) 10:20:32
Tooltipの表示タイミングはそのままに、Tooltip.Showを使わずに
表示位置を制御する方法はないでしょうか。
↓でも議論されていますが、具体的な方法が分かりません…。

ttp://bbs.wankuma.com/index.cgi?mode=al2&namber=1692&KLOG=10
882デフォルトの名無しさん:2009/03/22(日) 10:39:38
デフォルトだと、マウス位置がベースになるんだっけか。
となると、それを誤魔化すか、デフォルトの動作をフックして、
位置を指定して表示するしかないでしょ。
883デフォルトの名無しさん:2009/03/22(日) 10:51:50
Showを使っても問題ないんですが、表示タイミングだけは
準拠したいという所なんです…。良い方法ないものでしょうか。
884デフォルトの名無しさん:2009/03/22(日) 10:59:44
表示されるタイミングで、何かのメッセージが来るだろうから、
そいつを握りつぶしつつ、Show() すればいいんじゃね?
885デフォルトの名無しさん:2009/03/22(日) 13:38:37
今ラジアンで角度を処理するクラスを作っているのですが、次のような動作をさせたいんです
1.値を代入したときは値を正規化してからいれる(負値だったら正値に、2π以上だったら2πで剰余算)
2.値を参照するときはそのまま参照
3.floatと同じように扱える
プロパティを使って実装すると次のようになりますが
  class RegularizedAngle
  {
    private float InAngle;
    public float Angle
    {
      get { return Angle; }
      set
       {
         //Angleが負値だったら正値に
         if (Angle < 0) Angle = PIx2 + Angle;
         //Angleが2π以上だったら2πで剰余算
         Angle %= (float)(Math.PI * 2f);
       }
    }
   }
これを普通のfloatと同じように扱いたいんです。
たとえば
RegularizedAngle Ang = (float)(Math.PI * 2f);   //すなわち6.28・・・の代入
Ang += 1;                         //代入したとき内部で正規化がおこなわれて1になる。

Ang += Ang;
//これで2になる?こんなかんじで見た目を組み込み型みたいにしたいんです。
しかし上記のプロパティをつかった方法だとアクセスするときに
Ang.Angle としなければなりませんし、宣言するときにはnewが必要です
組み込み型へのオーバーライドとかでできるのでしょうか?

886885:2009/03/22(日) 13:54:58
>>885
ですがすいません。初心者スレに移動します。
>>885は無視してください。
887デフォルトの名無しさん:2009/03/23(月) 01:16:27
C#でrubyのWWW::Mechanizeみたいなネットワーク系のライブラリありますか?
888デフォルトの名無しさん:2009/03/23(月) 01:48:39
Mechanizeがネットワーク系とは思わないが、
あとC#じゃなくて.NETのコンポーネントだけど
System.Windows.Forms.WebBrowserが同等かな。
(もしくはWPFでそれに相当する物)
もちろんもっと低レベルのものもあります。
889887:2009/03/23(月) 02:04:56
ありがとうございます
見てみます
890デフォルトの名無しさん:2009/03/23(月) 18:23:08
Vista、VisualStdio2008で開発しているのですが、

hProcess.PriorityClass = ProcessPriorityClass.BelowNormal;

このように外部プロセスの優先度を変更しようとするコードをF5「デバッグ開始」で実行すると、エラーが発生し、
エラーメッセージは「アクセスが拒否されました。」となっています。
また、Ctrl+F5「デバッグなしで開始」で実行すると、問題なく動きます。
デバッグありでこのコードを動かすことはできないのでしょうか?
891デフォルトの名無しさん:2009/03/23(月) 20:14:28
>>890
とりあえず VS(devenv) を昇格起動してみな
892デフォルトの名無しさん:2009/03/23(月) 20:50:03
>>891
レスありがとうごいます。
昇格起動とは管理者権限で実行ということでしょうか?

AdministratorでログインしUACをオフ、devenv.exeを右クリックから管理者として実行を選択しましたが、
依然として「アクセスが拒否されました」になってしまいます。。。
893デフォルトの名無しさん:2009/03/23(月) 20:58:17
>>892
ありゃ、とりあえず昇格すれば大丈夫だった気がするが。
まぁ駄目ならしゃーない。利便性落ちるけどこの手で。
プロジェクトの Properties
 → デバッグ
 → Visual Studio ホスティングプロセスを有効にする
のチェックをはずす。デバッグなしでいけるならこれでどうよ。
これで駄目ならセキュリティとかゾーンの設定見直してとしか
いえん
894デフォルトの名無しさん:2009/03/23(月) 21:12:13
>>893
ホスティングプロセスのチェックを外したところうまく動きました。
現在のところホストプロセスを無効にしても、あまり問題はないようなのでこれでいこうと思います。
ありがとうございました。
895デフォルトの名無しさん:2009/03/24(火) 00:31:48
APIスレの方が良いのかもしれませんが、教えて下さい。
WndProcでWM_KEYDOWNが発生したときに、
StrKey = new StringBuilder();
GetKeyNameText(msg.LParam, StrKey, StrKey.Capacity);
として押されたキー名を取得しているのですが、例えば「Ctrl+A」の時など
StrKeyにCtrlが入ってしまい、「A」が取得できません。
※AやShift+A、Alt+Aの時などは普通に拾えます。

WParamにはAを示す値(65)が入っているので何か方法はあるのでは
無いかと思っているのですが…。宜しくお願いします。
896デフォルトの名無しさん:2009/03/24(火) 08:59:45
と、思いましたが、色々調べたところGetKeyboardStateで
Ctrl+A押下時のイベントが発生していないようでした。
Ctrl+B等は問題無いのですが…。TextBoxを継承しているのが問題なのか…。
もう少し色々調べてみます。失礼しました。
897デフォルトの名無しさん:2009/03/24(火) 10:34:41
SelectAllのショートカットになってるからじゃ?
ShortCutsEnabledをFalseにしてみるとか
898895:2009/03/24(火) 11:23:25
解決しました。↓が参考になりました。
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/243winkeyproc/winkeyproc.html
結果的に、WndProcで行っていた処理をProcessCmdKeyに移すだけで
解決できました。失礼しました。
899デフォルトの名無しさん:2009/03/25(水) 11:33:54
スレ汚しの質問すみません。
ブラウザの仕組みについてなんですが

ブラウザはどうやって同一タイミングでターゲットURLのHTTP情報、
さらにHTTPを解析してその先にある画像データの取得を一意的に行っているのでしょうか。
それをC#でIEコントロールを用いずに実現する方法はありますか?

たとえば今HttpWebRequestを使って試しているのですが
これでは1インスタンスにつき HttpWebRequest req = new HttpWebReqest.Create(url);
といった具合に一つのURLしか指定できません。

これによってサイト全体のHTTPをゲットする事が出来るのですが
1画像を取得しようと思った時には、その画像のURLをもって別インスタンスでCreateしなければならないんですが

一つのリクエストで全ての画像、サイト全体のHTTPを取得する方法はありませんか。
どなたか知恵をお貸しください。
900デフォルトの名無しさん:2009/03/25(水) 11:40:52
無理
自分で作るか誰かが作ったのを使うしか。
サイト全部取得は場所によってはアクセス遮断されるかも。
901デフォルトの名無しさん:2009/03/25(水) 11:49:55
一つのリクエストである必要性がどこにあるのか
って単に手抜きたいだけか
902デフォルトの名無しさん:2009/03/25(水) 11:57:49
>>901
セッション管理を行っているサイトにリクエストした場合に
1セッションと認めさせたいからです。
903デフォルトの名無しさん:2009/03/25(水) 12:01:39
ブラウザだって一つのリクエストで全部取ってきてるわけじゃないんだから
// KeepAliveで接続自体は一つかもしれんが
セッションとは関係ねーよ
904899:2009/03/25(水) 12:03:05
というか、セッション管理をしているサイトというのは
やはりリクエストごとに別セッションと認識する物なんでしょうか。

要は1セッションと認めさせる事が出来、なおかつIEコントロールを使わない方法があれば
HttpWebRequest以外でもなんでもいいんですが・・・><;
905899:2009/03/25(水) 12:04:35
>>903
ああ!やはりそうなんですね!
一つのリクエストじゃないのですねー。
keepAliveを使えば接続は一つになるのか〜!ふむふむ!
906デフォルトの名無しさん:2009/03/25(水) 12:41:57
取り敢えず適当なパケットモニタでも入れて送受信の様子を眺めてれば
907899:2009/03/25(水) 13:40:04
>>906
なるほど・・・!
それは思いつきませんでした!
ありがとうございます!やってみます。
908デフォルトの名無しさん:2009/03/25(水) 17:34:36
出来るだけ高速なファイル処理がやりたいのですが教えてください。
現在

[serializable]
public class A
{
 public int id;
 public datetime date;
 public long data;
 public long data2;
}

のようなクラスが存在し、これを50mSec程度の間隔で追記だけを行います。

このファイルには60万件のクラスAが入る可能性があります。
このとき出来るだけ高速に書き込む方法を教えて頂きたいのです。

また、この書きこんだクラスAの入ったバイナリファイル(60万件)を
例えば List<A> にデシリアライズ?してやるにはどうすればいいのでしょうか?
909デフォルトの名無しさん:2009/03/25(水) 17:37:38
DB使えよ、ってのは駄目なのか
910デフォルトの名無しさん:2009/03/25(水) 17:52:59
シリアライズせずにそのままバイナリデータを書き込んで、
読み込み時にbinaryReaderで読み込見ながらAddしたほうがいいような・・・
911デフォルトの名無しさん:2009/03/25(水) 18:06:25
その程度のクラスなら、自前でバイナリシリアライズを実装すれば十分な速度が得られそうだ。
俺ならSQLite使うけど。
912デフォルトの名無しさん:2009/03/25(水) 18:38:42
>>909-901
レスありがとうございます。

DBに関してはちょっと使えないのです。
>>910と>911を組み込んでみてチェックして速度が出る方を選んでみます。
ありがとうございました。

913デフォルトの名無しさん:2009/03/25(水) 20:49:33
WebBrowserで表示しているコンテンツ内のボタンをクリックして
何かの動作が始まって、それが何かのエラーを起こして制御が
返ってこない場合があり、その結果アプリケーション本体がハング
アップしてしまうことがときどきありました。こういうケースでもその
状態から復帰して他の作業ができるようにしたいのですが良い方法
があれば教えて頂きたく。何卒よろしく。
914デフォルトの名無しさん:2009/03/25(水) 20:57:08
WebBrowser内のコンテンツ上でボタンクリックなどでスクリプトか何か
なのか、あるいは返信待ちなのか、何らかの動作をしているときに
エラーが起きて制御が返って来ないまま、アプリケーション全体が
キーもマウスも受け付けなくなる時があり、対策をどうするべきかわからず
困っております。WebBrowserの外からそうした動作を監視していて
一定時間たったらどうなったか調べるなどといったことをするべきなのか、
あるいはなんらかの方法でそういう応答なしになった状態から復帰可能
なのか、わかっていないのですがアドバイスもしくはご解説をいただけたら
ありがたく。よろしくお願いします!
915913, 914:2009/03/25(水) 21:03:02
すみません、JaneDoeStyle使っているのですが、書き込みした後で
何度かリロードして確認しても反映されておらず、しかも書き込みした
内容がエディタに残らなかったため、同じ質問を再度書いて送信して
こうなってしまいました。再掲申し訳ありません。
916デフォルトの名無しさん:2009/03/26(木) 00:20:58
Formを半透明にすることなどは簡単に出来るのですが
半透明のグラデーションは出来ますか?
具体的に言うと、四角いフォームの場合一番上が不透明で
下に行くに従って透明度が増していく感じのフォームを作りたいのです。
よろしくお願いします。
917デフォルトの名無しさん:2009/03/26(木) 01:08:16
Layered Window と UpdateLayeredWindow 使う方法が思いつくけど、
Form じゃ無理かなぁ。いや、無理というより意味がないというか…。
918デフォルトの名無しさん:2009/03/26(木) 01:10:09
919デフォルトの名無しさん:2009/03/26(木) 01:53:37
XmlReaderで現在の行数を取得することって出来ませんか?
920デフォルトの名無しさん:2009/03/26(木) 03:25:35
質問です。
XmlSerializerを用いて、プログラム内のオブジェクト構造を元に
データの保存と読込を行っています。

このXmlSerializerで、同じオブジェクトを指す複数の参照変数を
シリアライズすると、シリアライズ化されたデータには
その参照数分のデータが重複して書き出されてしまいます。
このオブジェクトを、実際にシリアライズによって書き出されるデータは一つだけとし、
デシリアライズの際に参照変数群へ同じインスタンスへの参照が入るようにしたいです。

一応、あまり良い方法ではないと思うのですが、
複数参照されるオブジェクトは専用にシリアライズされるコンテナに全て格納、オブジェクトのID付けをし、
複数参照されるオブジェクトの変数と対に、そのオブジェクトのIDを持つシリアライズ対象なプロパティを定義し、
そのIDプロパティのsetterにおいてIDを元に、既にデシリアライズされているコンテナから該当オブジェクトを
取り出して変数にセットする、という方法をこれまで取っていました。

これを行うもっと正しい感じの方法はありますでしょうか?ヒントだけでも頂けると有り難いです。
921デフォルトの名無しさん:2009/03/26(木) 09:02:37
>>920
とりあえずIXmlSerializableを実装して同じことを行えば隠蔽できる
もっと賢いやり方があったら俺も知りたいな
922デフォルトの名無しさん:2009/03/27(金) 08:50:14
>>919
IXmlLineInfoにasキャストしてみる
923デフォルトの名無しさん:2009/03/27(金) 10:40:24
>>914の件、どなたかアドバイスかヒントでもいただけたらありがたく。
924デフォルトの名無しさん:2009/03/27(金) 10:46:18
32bit環境でつくってたプログラムのソースを64bit環境にもちこんでコンパイルして実行した場合、
挙動が異なったりする可能性はありますか?
925デフォルトの名無しさん:2009/03/27(金) 10:48:34
ありまqす。
926デフォルトの名無しさん:2009/03/27(金) 10:48:35
>>922
出来ました
しかしインターフェイスにキャストしてどうしてちゃんと行番号が取得できるんですか?
927デフォルトの名無しさん:2009/03/27(金) 10:49:40
そうできてるから。
928デフォルトの名無しさん:2009/03/27(金) 10:56:53
>>927
そうですか
有り難うございます。
929デフォルトの名無しさん:2009/03/27(金) 11:00:32
class Foo {}
interface IHoge { void f(); }
class Bar : Foo, IHoge { public void f() {}}

Fooだと思ってるものがBarだったとしたら
930デフォルトの名無しさん:2009/03/27(金) 11:03:12
>>924
同じソースならどちらの環境でコンパイルしても同じアセンブリが出来る。
どちらのCLRで動かすかが問題でそこで挙動が異なる場合がある。
931デフォルトの名無しさん:2009/03/27(金) 11:04:16
>>930
ありがとうございます
intとか要注意ってことですか?
932デフォルトの名無しさん:2009/03/27(金) 11:06:52
>>931
intは64bit環境でも32bitで固定。違いが出るのはIntPtr。
933デフォルトの名無しさん:2009/03/27(金) 11:08:55
なるほど、ありがとうございました
934デフォルトの名無しさん:2009/03/27(金) 20:21:50
>>932
製品開発統括部ブログだったかな?
WinXP64はintもlongで扱ってると書いていたよ。
935デフォルトの名無しさん:2009/03/27(金) 20:29:52
>>934
URLプリーヅ
936デフォルトの名無しさん:2009/03/27(金) 20:31:00
>>934
System.Int32が64ビットだっていいたいわけ?
937デフォルトの名無しさん:2009/03/27(金) 20:31:56
>>935
前に探した時、アドレスが変わる前の記事だったようで見つからなかった
938デフォルトの名無しさん:2009/03/27(金) 21:35:09
x64は64bit演算のほうが1バイト命令が長い、
ポインタ64、整数32でやる気満々のCPUだからそれはないと思うな。
03 c8      add   ecx, eax
48 03 c8  add   rcx, rax

VC++も int = long = 32bit, long long = 64bitだし。
939920:2009/03/28(土) 03:16:33
>>921
亀レスですみません。
なるほとIXmlSerializableという手がありましたね、すっかり忘れていました。
これを使って解決する機構をGenericsを使って汎用化できるものとして作ってみたいと思います。
940デフォルトの名無しさん:2009/03/28(土) 04:07:45
Windows.Formsについて質問です。

親子関係になっているコントロールにおいて、
親コントロールで子コントロールのイベントを捕獲する方法を知りたいです。
例えば、子コントロールの中にマウスカーソルがあって、
クリックされると通常は子コントロール側のClickedイベントが発生してしまいますが、
それよりも先に親コントロール側でClickedイベントが発生して欲しいのです。

暫定的な対処として、対象コントロールの子コントロール全てを再帰的に探索して
それらのイベントハンドラに、イベント発生を中継通知するメソッドを登録しています。
が、これでは結局通知のみであってイベント発生自体の順序は変わらないし、
またControlAddedイベントでも、追加されたコントロールに対して更に処理を行っており、
こんな力技な方法、絶対間違っているのでは・・と思っています。
941デフォルトの名無しさん:2009/03/28(土) 10:41:13
子.Click += new System.EventHandler(親_Click);
子.Click += new System.EventHandler(子_Click);
てこと?
942デフォルトの名無しさん:2009/03/28(土) 21:23:54
朝生 「不可解な逮捕 東京地検 どうなる?小沢民主党」 (2009年03月28日)
Part1 -75分-
http://www.megavideo.com/?v=TBA1379H
Part2 -75分-
http://www.megavideo.com/?v=JDBPR8XN
943デフォルトの名無しさん:2009/03/28(土) 21:35:40
>>940
WPFをつかう
944デフォルトの名無しさん:2009/03/29(日) 13:08:28
質問です。
これまで以下のように VB6 の ADODB.Recordset Seek メソッドで .mdb 検索を行っていました。

rs.Seek Array(1006, 10), adSeekFirstEQ


C# で再現する場合、
Seek メソッドの第1引数「Array メソッド」に相当するオブジェクトは何なのか教えてください。
945デフォルトの名無しさん:2009/03/29(日) 13:27:57
>>944
データベースへのアクセスモデルからしてまるで変わっちゃってて、
ADOのことはよくわからないからズバリそのものな答えはちょっとわかんない。

Array 相当のものだったら、 new int[] とか new[] { 1006, 10 } とかで作れる。

キーに一致する最初の値をとりたいんだったら、LINQ to SQL 使って
var keys = new[] { 1006, 10 };
var firstEq = table.First(x => keys.Contains(x));
とかでいけると思う。
946944:2009/03/29(日) 13:53:30
>>945
ありがとうございます。
やってみましたが仰るとおり

List<object> values = new List<object>();
values.Add(1006);

object[] array = values.ToArray();
rs.Seek(array, SeekEnum.adSeekFirstEQ);


上記のように配列をそのまま渡すことで通りました、ただし値が単一の場合のみ。
下記のようにキー値を複数設定すると「パラメータが間違っています」っておこられる

values.Add(1006);
values.Add(10);


どうしたらいいんだろな_| ̄|○
947デフォルトの名無しさん:2009/03/29(日) 13:56:29
new object[] { 1006, 10 }

じゃダメなんけ?
948944:2009/03/29(日) 14:07:52
>>947
スマソ。
テーブル名、インデックス名のパラメータを間違えてただけだった。

キー値が複数の場合でもバッチリいけたわ。
ありがとう、無事解決です。
949デフォルトの名無しさん:2009/03/30(月) 05:47:23
ところで、
++
++
で、#ちゅう事なん(´・ω・) スカ?
950デフォルトの名無しさん:2009/03/30(月) 06:25:37
>>949
アンダース・ヘルスバーグはそう言ってる。
951デフォルトの名無しさん:2009/03/30(月) 09:19:47
そんなこじゃれた名前つけるから検索しにくくなるのだ
952デフォルトの名無しさん:2009/03/30(月) 14:23:11
.NETよりはまし。.NETの検索し難さといったら…
953デフォルトの名無しさん:2009/03/30(月) 14:24:12
でもCとかDよりいいよね
954デフォルトの名無しさん:2009/03/30(月) 14:29:13
Bも忘れないであげて
955デフォルトの名無しさん:2009/03/30(月) 17:53:03
VisualC#2008をインストールして、動作確認の為にWindowsFormsApplication1を
作成したのですが、デバッグ実行すると(0xc0000005)で終了してしまいます。
デバッグなしで実行だと、普通にウインドウが表示されます。

どうやら、プロジェクト名の長さが11文字以上だとこういう現象になるようです。
プロジェクト名が10文字以内というのは、ちょっと不便なのでなんとかしたいの
ですが、対策をご存知の方がいましたら教えてください。
956デフォルトの名無しさん:2009/03/30(月) 17:53:44
今の今まで
C,C++,C#相談室
だと思ってた
957デフォルトの名無しさん:2009/03/30(月) 18:17:06
昔はスレタイに # の文字入れると#が消えちゃってたから
しつこく入れるようになったんだっけかw
958デフォルトの名無しさん:2009/03/30(月) 19:11:59
検索用じゃね?

…と思ったら、1つ目と3つ目がどちらも ASCII のナンバ記号だった。
959デフォルトの名無しさん:2009/03/30(月) 20:04:35
いつもは3つ目が全角のナンバー記号だよ。
次スレ立てる人は気をつけて。
960デフォルトの名無しさん:2009/03/30(月) 22:46:02
この Part51 でそろそろ終わりにしようぜ
961デフォルトの名無しさん:2009/03/30(月) 22:52:12
2ヶ月で1スレ消費するようなペースって事は需要はあるのだろう。
Part51にもなって「そろそろ終わりに・・」ってのは今更すぎないかw
962デフォルトの名無しさん:2009/03/30(月) 22:53:50
>>960
来なけりゃいいんじゃね?
963デフォルトの名無しさん:2009/03/31(火) 00:36:10
スレタイに#を3パターンで書くのをこのスレで終わりしないかといってると上の流れを見ると思うのだが
俺がイカれてるのかな。そう解釈する俺が狂ってるだよなやっぱりそうとしか思えないうん
964デフォルトの名無しさん:2009/03/31(火) 00:51:31
他のC#スレも数パターン使ってるとこあるし、検索用に残しといていいんじゃね?
965デフォルトの名無しさん:2009/03/31(火) 01:44:20
ところでおまいらC#で組んだもの、何に利用してるの? 仕事?
966デフォルトの名無しさん:2009/03/31(火) 01:51:26
研究
まあ仕事だけど
967デフォルトの名無しさん:2009/03/31(火) 01:52:50
俺は趣味でちまちま作ってる。
自分専用の痒い所に手が届くような小規模アプリが殆ど
968デフォルトの名無しさん:2009/03/31(火) 02:27:50
C#で孫の手つくれんの?
969デフォルトの名無しさん:2009/03/31(火) 02:30:22
つまんないよ
970デフォルトの名無しさん:2009/03/31(火) 02:49:21
つまらないものを面白くするのがプログラミングだろjk
971デフォルトの名無しさん:2009/03/31(火) 03:14:15
窓の手ってそういう意味だったのか!素で気付かなかった
972デフォルトの名無しさん:2009/03/31(火) 07:47:06
C井でいいんじゃね?
973デフォルトの名無しさん:2009/03/31(火) 08:29:31
思いっきり仕事だな。
来月あたりに客先とおしてそのユーザーに公開される(´・ω・`)
974デフォルトの名無しさん:2009/03/31(火) 08:57:55
趣味コードは全部C#。
仕事だと、社内ツールの類はC#で書いてる。
975デフォルトの名無しさん:2009/03/31(火) 10:08:11
質問です。
PropertyGridで入れ子になっていて展開可能な項目を自動で展開したいです。
まずExpandAllGridItemsメソッドを調べてみましたが、これはカテゴリの展開専用で意味がありませんでした。
次に、GridItem.Expandedプロパティを見つけ、おおこれこそ捜し求めていたものと歓喜したのですが・・・
PropertyGridからGridItemの一覧を得る方法が分かりません。
SelectedGridItemがあって、なぜGridItemsが無いのでしょうか。
976デフォルトの名無しさん:2009/03/31(火) 10:30:55
SelectedGridItemからParentたどってけば
977デフォルトの名無しさん:2009/03/31(火) 11:12:02
Public Type Struct1
  Member1 As String
  Member2 As Byte
  Member3 As Byte
  Member4(20) As String
  Member5(20, 1340) As Byte
End Type

Declare Function ExpFunc1 Lib "Library1.dll" _
  (ByRef a_Struct1 As Struct1, _
  ByVal a_iNumber1 As Long, _
  ByVal a_iNumber2 As Long) As Long

ソースのない「Library1.dll」とそれを利用するための
上のようなVB6のサンプルがあるんですが、
これをC#(2008/.NET3.5)で利用するにはどう書いたら
いいんでしょうか?

よろしくお願いします。
978デフォルトの名無しさん:2009/03/31(火) 12:49:26
>>972
++
ナ+
になっちまう
979デフォルトの名無しさん:2009/03/31(火) 13:02:09
>>977
C#で参照してみれば?
ラッパクラ出来てインテリセンスきくんじゃないかな?
980デフォルトの名無しさん:2009/03/31(火) 13:19:21
>>979
---------------------------
Microsoft Visual C# 2008 Express Edition
---------------------------
'Library1.dll' への参照を追加できませんでした。
ファイルがアクセス可能で、有効なアセンブリまたは
COM コンポーネントであることを確認してください。
---------------------------
OK
---------------------------

COMじゃないとNGっぽいですね。
981デフォルトの名無しさん:2009/03/31(火) 13:22:24
DllImportでぐぐればいいんじゃね
982デフォルトの名無しさん:2009/03/31(火) 13:23:49
>>980
ごめん、VB6のDLLかと思ってた
VB6はDLLはCOMになるから

そういうことならReflection使ってみては?
色々他にもあると思うけど
983デフォルトの名無しさん:2009/03/31(火) 13:25:08
動的に呼び出しさせて何をさせようというんだ俺は・・・
疲れてんだな
984デフォルトの名無しさん:2009/03/31(火) 17:19:48
>>977
2次元配列のマーシャリングってできたっけ?>識者
985デフォルトの名無しさん:2009/03/31(火) 17:35:29
2次元配列はやったことないけど出来るはずだと思う
986デフォルトの名無しさん:2009/03/31(火) 17:43:20
うお、今調べたら出来ないようだった、もうしわけない。
対策はいろいろあるそうだが、ストレートには出来ないそうだ。
987デフォルトの名無しさん:2009/03/31(火) 18:18:17
とりあえずVB6の知識をひけらかすか

Public Type Struct1 
  Member1 As String 'BSTR
  Member2 As Byte '1バイト
  Member3 As Byte '1バイト
  Member4(20) As String 'UTF16な文字が20文字
  Member5(20, 1340) As Byte 'Option Base 0なら21×1341バイト
End Type

何の役にたつかはしらん
988デフォルトの名無しさん:2009/03/31(火) 18:44:38
>>987
>UTF16な文字が20文字 はこれじゃね?
Member4 As String * 20 

Member4(20) As String はStringの配列21 (Option base によるけど)
989デフォルトの名無しさん:2009/03/31(火) 18:52:13
立てれなかったから誰か任せた

C#, C♯, C#相談室 Part52
------------
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ
C#, C♯, C#相談室 Part51
http://pc12.2ch.net/test/read.cgi/tech/1233757615/

Visual C# 2008 Express Edition 日本語版
http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/

その他テンプレ>>2-5くらい
990デフォルトの名無しさん:2009/03/31(火) 18:53:17
「ふらっと」と「VS2008」スレが新スレになってるので更新。
>>3>>5はそのままでおkかな?
-----
関連スレ

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

Visual Studio 2008 Part 15
http://pc12.2ch.net/test/read.cgi/tech/1233853864/

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

【VB.NET】LINQ友の会【C#, C♯, C#】
http://pc11.2ch.net/test/read.cgi/tech/1202568694/

C#,C#の宿題片付けます。
http://pc11.2ch.net/test/read.cgi/tech/1197620454/
991デフォルトの名無しさん:2009/03/31(火) 18:53:59
>>987,988
参考になります。
Option Base は無指定ですので、0ですかね。

UnmanagedType.BStr をヒントにもう少しトライしてみたいと思います。
992デフォルトの名無しさん:2009/03/31(火) 19:15:52
VB、C#混合になってしまうが
VB6で>>877の標準モジュールを含むプロジェクトを作って
VB.NETのアップグレードウイザードにかける。

やってみたがTODOが残るな・・・これもで手を入れないといけないようだ。
993デフォルトの名無しさん:2009/03/31(火) 19:18:16
VB6もC#も中途半端な知識しか持っていないけどこんな感じではないのか、と質問していい?
unsafe struct Struct1
{
[MarshalAs(UnmanagedType.LPStr)]
string Member1;
byte Member2;
byte Member3;
[MarshalAs(SizeConst = 21)]
string Member4[];
fixed byte Member5[21 * 1340];
};

[DllImport("Library1.dll")]
static extern int ExpFunc1(ref Struct1 a_Struct1, int a_iNumber1, int a_iNumber2);

unsafeが嫌なら
[MarshalAs(UnmanagedType.U1, SizeConst = 21 * 1341)]
byte Member5[,];
としてMember5 = new byte[21, 1341];
994デフォルトの名無しさん:2009/03/31(火) 22:01:27
>>988
そうだった
すっかり知識が抜け落ちてて愕然
995977:2009/04/01(水) 09:48:39
UnmanagedType.LPStrとか
UnmanagedType.BStrとか
UnmanagedType.ByValArrayとか
いろいろ試しましたが、どうにもうまく行かないので、
もう諦めてVB6でラップDLL作ってそれをC#で参照して
使うことにしました。
VB6のデバッガでもう少し粘るといいのかもしれませんが
これで妥協しました。

いろいろありがとうございました。
996デフォルトの名無しさん:2009/04/01(水) 09:55:35
MSDN見たか?まあ解決したならいいか
997デフォルトの名無しさん:2009/04/01(水) 10:17:26
998デフォルトの名無しさん:2009/04/01(水) 10:58:25
>>996
MSDNは 見まくり ですね。。

解決というか 逃げ ですけど、とりあえず
やれることはやれるようになったので。

VB6側の状況がよくわからずに
やみくもにやってもダメですね。
暇ができたら、ダミーの Library1.dll を作って
VB6から呼んでみて、中がどうなってるのか
確認してから再挑戦してみたいと思います。
999デフォルトの名無しさん:2009/04/01(水) 12:33:10
MSDNよりPInvoke
1000デフォルトの名無しさん:2009/04/01(水) 13:14:28
1000いただきまーす♪
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。