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

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

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

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

■前スレ
ふらっとC#,C♯,C#(初心者用) Part58
http://pc12.2ch.net/test/read.cgi/tech/1270657735/


■関連スレ
C#, C♯, C#相談室 Part58
http://pc12.2ch.net/test/read.cgi/tech/1269261310/
VB.NET質問スレ(Part34)
http://pc12.2ch.net/test/read.cgi/tech/1270998481/
くだすれC++/CLI(初心者用)part2
http://pc12.2ch.net/test/read.cgi/tech/1268613679/


■備考
コードの量が多い場合は下記サイトを使うなどしたほうがいいかも

http://ideone.com/

コードを貼り付けてRun codeのチェックをはずしてsubmitボタンを押すと
コードを鯖側にアップして専用のアドレスが発行されます。
2デフォルトの名無しさん:2010/04/27(火) 07:26:04
Visual C# 2010
3デフォルトの名無しさん:2010/04/27(火) 08:12:56
ソース公開してても、Expressで読めないのが多いね
ライセンスがどうとかで読めるようにできないの?
4デフォルトの名無しさん:2010/04/27(火) 09:31:05
日本語でおk
5デフォルトの名無しさん:2010/04/27(火) 09:46:22
Point p1=new Point(100,100);

Point p2=new Point(100,100);
Point p1=p2

どう違うの?
6デフォルトの名無しさん:2010/04/27(火) 10:26:37
p1とp2が同じインスタンスを指してる。
つまり、p2からの変更がそのままp1にも影響する。逆もしかり
7デフォルトの名無しさん:2010/04/27(火) 10:38:53
いや.NETのPointは値型だからp1とp2は別。
もしPointが自分で作ったclassなら仰るとおり。
8デフォルトの名無しさん:2010/04/27(火) 10:43:46
値型かあ…
9デフォルトの名無しさん:2010/04/27(火) 10:48:35
ざまぁww
10デフォルトの名無しさん:2010/04/27(火) 11:04:39
vs2010expressまだー?
11デフォルトの名無しさん:2010/04/27(火) 12:34:25
ワロタw

が、自分で回答したら同じことを行ったかもしれん
12デフォルトの名無しさん:2010/04/27(火) 12:35:32
4/28: Visual Studio 2010 Express (日本語版) 提供開始

あれ?4/27だったような・・・
13デフォルトの名無しさん:2010/04/27(火) 12:52:41
>>12
それどこ情報?
http://www.microsoft.com/japan/msdn/vstudio/express/
では27日だぞ
14デフォルトの名無しさん:2010/04/27(火) 12:58:49
15デフォルトの名無しさん:2010/04/27(火) 13:01:27
うっそ〜ん
今日はこれがなにより楽しみだったのに…
16デフォルトの名無しさん:2010/04/27(火) 13:15:29
C#は格好いいよね。
17デフォルトの名無しさん:2010/04/27(火) 13:21:42
GWまでに間に合えばいいや
18デフォルトの名無しさん:2010/04/27(火) 13:58:36
なん…だってェ…

wktkしてたのに…
19デフォルトの名無しさん:2010/04/27(火) 15:06:36
FixedToolWindowにしているんだけど
alt,spaceキーをおしたときにMenu画面(拡大縮小などができる)が表示されます
このメニューを表示しないようにできませんか?
20デフォルトの名無しさん:2010/04/27(火) 15:14:43
ControlBox非表示にすれば出ないけど、×ボタンも消えるな
21デフォルトの名無しさん:2010/04/27(火) 15:21:07
キーボードで移動ぐらいさせてくれよ
最大化最小化はMaximizeBox/MinimizeBoxで不可能にしても構わないからさ
22デフォルトの名無しさん:2010/04/27(火) 15:27:52
まぁ実際Windows7からはAlt+Spaceちょこちょこ必須だったりするしなw
23デフォルトの名無しさん:2010/04/27(火) 15:58:43
こうやって初心者の質問を食いつぶされるのであった
24デフォルトの名無しさん:2010/04/27(火) 16:06:15
設計が間違っているという事を教えてもらえるのはありがたいことなんだがな

スマートな方法は無いんじゃないか?
25デフォルトの名無しさん:2010/04/27(火) 16:12:09
>>19
なんで出ちゃいけないの?
それを言えば、何か他の案が出るかも。
26デフォルトの名無しさん:2010/04/27(火) 17:57:41
Alt+Spaceを潰すだけなら、そのFormのProcessCmdKeyをオーバーライドして
該当キーのときに処理済みにしてしまえばいいんだが

他の方法で開いたりすることができるかもしれんしなー
27デフォルトの名無しさん:2010/04/27(火) 18:37:04
タイトルバーの右クリックで出ちゃうよね。

>>19
単に気に入らないから出したくないというなら、あきらめろ。

最大化や最小化を防止したいなら、MaximizeBoxとMinimizeBoxをfalseに設定すれば、
システムメニューの最大化、最小化の項目がグレーアウトして使用できなくなる。
最大化ボタンと最小化ボタンは表示されてないだけで機能が生きているから
システムメニューにも表示される。その機能を無効にしてやればいい。
28デフォルトの名無しさん:2010/04/27(火) 19:33:17
http://codepad.org/7XIDgP0A
27-67行目はちゃんと動いてます
69から後でデータがちゃんとxmlファイルから読み込めてないようです。
ちなみにxmlファイルはhttp://codepad.org/mYsdSZWhです
29デフォルトの名無しさん:2010/04/27(火) 20:31:58
>>28
そのXMLファイルはXmlSerializerで出力したものなの?
30デフォルトの名無しさん:2010/04/27(火) 20:32:32
>>29
そうです
31デフォルトの名無しさん:2010/04/27(火) 20:43:39
まずデバッグしろと
「読み込めてない」は実行時例外が出てるのか、
デシリアライズされたオブジェクトが想定していたのと違う状態なのか、もしそうならどんな状態なのか
32デフォルトの名無しさん:2010/04/27(火) 20:45:03
どう考えても違うだろw
33デフォルトの名無しさん:2010/04/27(火) 20:46:47
>>28
こっちで試したら、XMLファイルの行頭のハイフンを消せば読み込めるね。
34デフォルトの名無しさん:2010/04/27(火) 20:48:41
拾ったプロジェクトソースを開きたいんだけど開けないんだけどどうして?
「無効なライセンスです」
「この種類のプロジェクトをサポートするバージョンを使用して下さい」
というエラーがでます

ソースはC#で作らています

私はVC#EE2008です

VSで作られたものは開けないとかありますか?
もしくは、ProやUltimateとかで作られたものはExpressでは開けないとかありますか?
もしくはライセンス登録してないからとか?
35デフォルトの名無しさん:2010/04/27(火) 21:17:53
>>31
デバッグはしたけど例外はでてませんでした。
ソースからプログラムを動かしてちゃんとロードできてるか試す感じだったので改めて例外は書かなくていいかと思ってたのですが
デバッグの有無は改めて書いておいたほうがよさそうですね
36デフォルトの名無しさん:2010/04/27(火) 21:22:03
>>33
元のソースにハイフンが入ってるわけないなあとチェックしてみたら91行目で調べてたcls.name[0]はxmlではnullでした
xmlに書き込むソースを改善したらうまく動くようになりましたありがとうございます
3719:2010/04/27(火) 21:53:43
レスありがとうございます
ショートカットキーを設定するフォームを作っているのですが
Alt+F4が登録できなかったりするのでどうすればいいのかなと思いまして
38デフォルトの名無しさん:2010/04/27(火) 21:59:13
Alt+F4とかAlt+Spaceぐらいは標準の動作のままで良いと思うけど
一応、さっきも書かれてたProcessCmdKeyのオーバーライドで既定の動作は無視できる
3919:2010/04/27(火) 22:45:10
で!できたー!
ありがとうございます
40デフォルトの名無しさん:2010/04/27(火) 22:52:07
でもさあ、そんなショートカットキーを使えるようにするのはちょっと面倒だぞ。
すべてのフォームで、ショートカットキーが登録されていたら既定の動作を無視する
コードを書かにゃならん。
41デフォルトの名無しさん:2010/04/28(水) 00:08:18
自ウィンドウ内で別プロセスのオブジェクトを表示&操作させるにはどのようにすれば実装できますか?
最近ではGoogleChromeなど、タブがマルチプロセスになっているみたいで。
WCFによるプロセス間通信を見ていますが、
クライアント側(自アプリ)、サーバ側(別プロセス)になってしまうのでは?
と思っています。

理想的な処理の流れとしては
・自ウィンドウで別プロセス作成
・指定の別プロセスのオブジェクトを取得
・取得したオブジェクトを表示
・自ウィンドウで不要になればオブジェクトを非表示・別プロセスを終了

もしかすると見当違いなのか?とも思ってます。
よろしくお願いします。
42デフォルトの名無しさん:2010/04/28(水) 00:13:31
あれって、レンダリングを行うプロセス群と、まとめて描画を行うプロセスに分かれてるんじゃないの?
4341:2010/04/28(水) 00:45:42
>>42
その分かれている所のやりとりがわかりません。
イメージ的にはMDI子フォームが別プロセスになればと思ってます。
44デフォルトの名無しさん:2010/04/28(水) 00:55:03
デスクトップの上にいろいろウィンドウが開かれてる様はまさにそのように見えないかね
45デフォルトの名無しさん:2010/04/28(水) 07:57:08
>>41
それやると自ウィンドウが膨大なメモリを所持することになるよ
どちらにしてもw32でやる話だが
46デフォルトの名無しさん:2010/04/28(水) 08:59:12
>>40
マスタフォーム作ってそこで処理
それを継承したフォームでやればいいんじゃ?
4719:2010/04/28(水) 09:43:20
>>40
>>46
難しいことになるようですね
初心者なので規定のコマンドはそのままにしておきます
48デフォルトの名無しさん:2010/04/28(水) 12:33:01
49デフォルトの名無しさん:2010/04/28(水) 12:43:31
最小構成とか書いてへんやんか
50デフォルトの名無しさん:2010/04/28(水) 13:15:05
>>48
よくやった
ファックしてやる
51デフォルトの名無しさん:2010/04/28(水) 13:37:09
>>48
これインストールするには今の2008をアンインストールするんでしょ?
MS関連のが多すぎてどれをアンインストールすればいいの?
C#だけでいいのかな?
52デフォルトの名無しさん:2010/04/28(水) 13:42:37
アンインストールしなくても入るよ
53デフォルトの名無しさん:2010/04/28(水) 13:45:47
54デフォルトの名無しさん:2010/04/28(水) 13:50:28
なんで二つも入れてるの?
HDDの無駄になるからアンインストールしたいと思ったんだけど
55デフォルトの名無しさん:2010/04/28(水) 13:54:14
>これインストールするには今の2008をアンインストールするんでしょ?

って聞かれたからしなくても入るって答えただけなのに何これ
日本語初心者がいく所は小学校だぞ
56デフォルトの名無しさん:2010/04/28(水) 14:04:20
しなほうがいい場合もあるかもしれないからああいう書き方したんだよ
57デフォルトの名無しさん:2010/04/28(水) 14:06:23
しなほー
58デフォルトの名無しさん:2010/04/28(水) 14:08:23
お前をアンインストールしてやる。
59デフォルトの名無しさん:2010/04/28(水) 14:10:50
前つかってたベータ2バージョンとは激しく違う(動作の軽さ)

快適に動いてくれてよかった。
あと、C#とC++一緒に作ってたが
同じVSで作らないといけないのが不便だったがVC#とVC++同時起動できるから便利。
60デフォルトの名無しさん:2010/04/28(水) 14:12:46
むしろどうしてあんなに重かったのか
61デフォルトの名無しさん:2010/04/28(水) 14:17:28
スーパーπ
62デフォルトの名無しさん:2010/04/28(水) 14:18:57
msdnまだかよ
63デフォルトの名無しさん:2010/04/28(水) 14:41:18
いくらバージョンアップしても2.0の機能しか使ってない俺には無駄だ
64デフォルトの名無しさん:2010/04/28(水) 15:09:18
ヒントが絞込みになったのは凄くいい
65デフォルトの名無しさん:2010/04/28(水) 15:39:27
そこかよw
66デフォルトの名無しさん:2010/04/28(水) 16:29:08
確かにいいな。
67デフォルトの名無しさん:2010/04/28(水) 16:34:31
ヘルプが使い易くなってる
firefoxで開くのがいい
68デフォルトの名無しさん:2010/04/28(水) 16:50:09
なんかC#2010で作ったアプリの起動がやたら速いんだけど
どういうこと?
69デフォルトの名無しさん:2010/04/28(水) 16:56:21
素直に喜べよ
70デフォルトの名無しさん:2010/04/28(水) 16:59:27
喜んでるんだけどさ
今までずっと起動が遅かったじゃない?
バックグラウンドアプリ作りたくても起動遅いから
Python使ってたんだけど、これすごいよw
もう全部4.0に書き換えだわw
71デフォルトの名無しさん:2010/04/28(水) 17:03:01
お、俺も入れ換える!
72デフォルトの名無しさん:2010/04/28(水) 17:34:13
うおお入れるぞおおおおおお
73デフォルトの名無しさん:2010/04/28(水) 17:40:24
インスコ再起動後daemonが起動せず、ドライブ認識できなくて4回やり直したわ
74デフォルトの名無しさん:2010/04/28(水) 18:58:04
2010でGoogleIME完全に使えなくなったわww
75デフォルトの名無しさん:2010/04/28(水) 19:23:40
起動早くなるのはハイエンドのマシン使ってる場合だけで
XP世代のマシンだとむしろ軒並み遅くなる、なんてオチなんだろうなどうせ。
そりゃあそうでしょうとも。
76デフォルトの名無しさん:2010/04/28(水) 19:37:00
>>75
xpだけど速いよ?
ネイティブアプリのようにダブクリした瞬間起動するけど


ToolStripSeparatorがToolStripMenuItemにキャストできなくなってる
プログラミングし直さなきゃ・・・
77デフォルトの名無しさん:2010/04/28(水) 20:01:53
C#ってWin32APIも使える?ドトネトしか無理?
78デフォルトの名無しさん:2010/04/28(水) 20:03:23
使える。
79デフォルトの名無しさん:2010/04/28(水) 23:06:25
ダイアログから受け取ったオブジェクトはDisposeしたあと消えちゃいますか?
object obj=frm2.Obj;
こんな感じで受け取ったら消えているんだけど
80デフォルトの名無しさん:2010/04/28(水) 23:07:49
全部大文字でインテリセンスきくがなんか意味あるんだろうか・・・
たとえばMessageBoxはMBでインテリセンスがMessageBoxを候補してくれるが・・・
81デフォルトの名無しさん:2010/04/28(水) 23:10:22
>>79
受け取り方による。
オブジェクトのコピーが作られるような受け取り方をすれば、ダイアログがどうなろうと
消えないんだけど、そのやり方は型によって違う。
82デフォルトの名無しさん:2010/04/28(水) 23:22:09
>>79
それはfrm2の実装によるので一概には言えない
frm2を作った奴に聞け
83デフォルトの名無しさん:2010/04/28(水) 23:24:03
TreeNode node=frm2.RootNode;
だとどうですか?
84デフォルトの名無しさん:2010/04/28(水) 23:28:46
>>83
消えないとしても保持する意味ないだろ。
85デフォルトの名無しさん:2010/04/28(水) 23:29:59
Microsoft Visual C# 2008 ExpressEdition を使っていて、参照の追加でSystem.Linqを追加しようとしても見つからないのですが、
これはどうすればいいのでしょうか??
86デフォルトの名無しさん:2010/04/28(水) 23:34:12
System.Core.dll
ターゲットフレームワークは3.5にしないとダメ
87デフォルトの名無しさん:2010/04/28(水) 23:35:24
>>85
System.Coreを参照しる
で、Using System.Linq
88デフォルトの名無しさん:2010/04/28(水) 23:35:58
using書けばいいだけじゃないの?
89デフォルトの名無しさん:2010/04/28(水) 23:38:48
>>86-88
レスありがとです
System.Coreを追加、v2.0.50727からv3.5に変えてみた所、Linqなんちゃらエラーはなくなりました
ありがとうございました
90デフォルトの名無しさん:2010/04/28(水) 23:41:13
>>84
どうしてですか?
91デフォルトの名無しさん:2010/04/29(木) 00:03:11
デジタルクロックを作ってみようと思い、フォーム上にラベルとタイマーを追加しコードを以下のようにすると
ビルドやデバッグ開始ではエラーも警告もなく起動するのですが、コンパイルしようとすると「InitializeComponent」「timer1」「label1」は
現在のコンテキスト内に存在しません。とエラーが出るのですがこれは何が間違っているのでしょうか?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace DigitalClock
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void timer1_Tick(object sender, EventArgs e)
{
this.label1.Text = System.DateTime.Now.ToLongTimeString();
}
}
}
92デフォルトの名無しさん:2010/04/29(木) 00:12:53
EEのダウンロードページが勝手にリロードしてカチカチうるさい
93デフォルトの名無しさん:2010/04/29(木) 00:19:09
ダウンロードページなんて閉じよw
94デフォルトの名無しさん:2010/04/29(木) 03:40:07
>>91
Designer.csだかないかい?
それとも訳分からないうちに消しちゃった?
またはForm1にTimerとLabelをついかしてないとか」
ttp://www.dotup.org/uploda/www.dotup.org847078.lzh.html
pass:csharp

こんな構成になってるはず
コンパイルすれば動くよ〜

VSでコンパイルしてるけど大丈夫だよね…うん
95デフォルトの名無しさん:2010/04/29(木) 03:43:02
理由はそのまま
Form1というクラスの中に
label1という変数と
timer1という変数がなくて
InitializeComponent()という関数が定義されてない
まぁ〜Designer.cs消したかそもそもコンソールアプリとか…
96デフォルトの名無しさん:2010/04/29(木) 09:40:53
2008のプロジェクトを2010でビルドしたら
いつのまにか、ソリューションをクリックすると
アクティブ構成という項目が追加されていて
前だとDebugとReleaseをF5,F6を押すことで
自動で切り替わっていたのに
アクティブ構成でdebugとなっているとF6を押しても
Releaseフォルだの方にビルドされてくれない

ツール>オプション>ソリューション>「ビルド構成の詳細を表示」はチェックは入っていない
試しにチェックしてビルド、外してビルドとしてもこの項目が消えてくれなくて
不便なんだけど前のようにF5,F6で自動でフォルダを分けてコンパイルしてくれるように
できないでしょうか?
97デフォルトの名無しさん:2010/04/29(木) 10:06:00
Labelコンポーネントで
文字を斜めとか縦書きで表示したいんだけどどうすればいい?
98デフォルトの名無しさん:2010/04/29(木) 10:14:39
LayoutTransformとかRenderTransformとか
99デフォルトの名無しさん:2010/04/29(木) 11:11:04
WinFormsのLabelでは不可だな
WPFなら>>98だけどWPFだったらそういうのはLabelじゃなくてTextBlock使うべき
100デフォルトの名無しさん:2010/04/29(木) 12:54:05
WinFormだってLabelのOnPaintオーバーライドして必要なら2,3プロパティ
追加するだけなわけで、「不可」とか言い切っちゃうのはどうかと....
101デフォルトの名無しさん:2010/04/29(木) 12:57:24
それLabel関係ないじゃん
102デフォルトの名無しさん:2010/04/29(木) 13:02:59
WAMLとかいうのやってみたけど
なんで数字まで""がついてるんだよ

なんとか.width = "200"とか
text = "Hello"ならわかるが
数字が単なる文字列みたいで気に入らないな。
103デフォルトの名無しさん:2010/04/29(木) 13:05:51
XANLか?
そりゃXMLの仕様だ。
104デフォルトの名無しさん:2010/04/29(木) 13:06:24
実際XMLのフォーマット上は特に区別はない
型はスキーマで決まる
105デフォルトの名無しさん:2010/04/29(木) 13:11:28
>>101
じゃあFormを派生して書くコード(毎日やってるはずだが)は
「Form関係ない」わけね。

よくわからない思考法。
106デフォルトの名無しさん:2010/04/29(木) 13:21:38
Formを表示するのに基底のFormの機能を使ってるだろ
文字を表示するだけだったらLabelから派生する必要はない
107デフォルトの名無しさん:2010/04/29(木) 13:36:11
質問者の質問が読めてないのかな。(>>97)
"Labelから派生する必要"があるかないか、どうして分かるんだろう。

例えばBorderStyleやAutoSizeといったプロパティが必要かもしれないし、
Labelと透過的に扱える必要があるのかもしれない。
108デフォルトの名無しさん:2010/04/29(木) 17:30:40
>>94-95
レスありです
http://www1.axfc.net/uploader/Img/so/80908.jpg
アップロードしていただいたもの(上記画像→)をそのままコンパイルしてみましたが、
左上のようなエラーが出ます。 Designer.csは消えてないはずです。
何をどういじればちゃんとコンパイルできるようになりますでしょうか??
109デフォルトの名無しさん:2010/04/29(木) 17:39:26
死ねよ。
110デフォルトの名無しさん:2010/04/29(木) 17:54:19
>>108
う〜ん
何故かpartialが効いていないような…
あんまりあれな方法ですけど右のDesiner.csを右クリック→コードを表示
カット&ペーストで
最初の
<summary>

private System.Windows.Forms.Timer timer1;
までをForm1.csにうつせば通るんじゃないかなぁ〜
111デフォルトの名無しさん:2010/04/29(木) 17:55:37
何言ってんだお前。

cscで、そのファイルだけコンパイルできるわけないだろ。
112デフォルトの名無しさん:2010/04/29(木) 17:58:00
Form1.Designer.csの中身をここに貼ってさらせw
http://ideone.com/

どこかからコピーしたソース使ってるとかしてる感じ・・・・
113デフォルトの名無しさん:2010/04/29(木) 18:00:01
コピーとか関係ないんだが。
114デフォルトの名無しさん:2010/04/29(木) 18:01:56
あのよ、プロジェクトをcscでコンパイルしようってんなら、cscで
プロジェクト内のすべて.csを指定して、参照してるアセンブリを/referenceで指定して・・・
ってやんないと無理。

普通、そんなことはやらん。せいぜい、msbuildを使うくらい。
115デフォルトの名無しさん:2010/04/29(木) 18:01:58
コピペ君って馬鹿だな、を地で行ってみました、まで読んだ。
116デフォルトの名無しさん:2010/04/29(木) 18:06:03
ああ
できねーって騒いでたのはcscで個別にやってたのか
なんでIDEのビルドを使わないのw
F6押せばいいじゃん
117デフォルトの名無しさん:2010/04/29(木) 18:08:06
>>108
プロジェクト落としてそのままコンパイルしたはずなのに
フォルダのファイルおかしくね?
118デフォルトの名無しさん:2010/04/29(木) 18:32:18
>>110-117
レスありがとです

>>94氏にUPしていただいたフォルダで皆さんの全ての.csを指定というご指摘通りに
「csc Form1.cs Form1.Designer.cs Program.cs」とコンパイルしてみたら無事Program.exeが出来ました

ありがとうございました!
119デフォルトの名無しさん:2010/04/29(木) 20:09:26
何でわざわざプロンプトからコンパイルしているんだろう?
120デフォルトの名無しさん:2010/04/29(木) 21:05:16
>>119
すみませんそれ以外のコンパイル方法がわからなくて・・・
121デフォルトの名無しさん:2010/04/29(木) 21:06:00
>>120
F6キー
122デフォルトの名無しさん:2010/04/29(木) 22:32:25
>>121
レスありです
F6キーを押すとプロジェクトフォルダ\bin\Release\の中にコンパイルされるんですね
活用していこうと思います
123デフォルトの名無しさん:2010/04/29(木) 22:35:07
>>122
F5キー押せばその場でデバックもできるよ
124デフォルトの名無しさん:2010/04/29(木) 22:55:56
上の方にある緑色の右向きの三角形クリックで実行できる…
その前に何でcscを先に知った
125デフォルトの名無しさん:2010/04/29(木) 23:04:35
>>123-124
レスありです
今までファイル名を指定して実行→cmd→・・・ってやってた自分がバカみたいです。。
ビルドとかデバッグはしたことあったのですが、あまり意味がわかっておらず、
cscでコンパイルする前の動作確認のためだけのものかと思ってました・・
プロジェクトフォルダに出力されてるのにも全く気付かなかったです
cscは読んでいたサイトでこうやってコンパイルしますーみたいに書いてあったので使ってました・・
126デフォルトの名無しさん:2010/04/29(木) 23:13:59
そんなことあんのかよ…と思ったが
本当にcmdからcscでコンパイルすると解説しているところもあるんだな。
俺はVS使った後にcscの存在を知ったと言うのに。
127デフォルトの名無しさん:2010/04/30(金) 10:20:29
前にそのクラス内でのみ使えるプロパティの質問でできないと言われたけど
できるじゃない
public int Hoge {private get; private set; }
128デフォルトの名無しさん:2010/04/30(金) 10:32:48
入門書一冊買った方がいいかと・・・
129デフォルトの名無しさん:2010/04/30(金) 10:33:38
private int Hoge{get;set;}となんか違うの?
130デフォルトの名無しさん:2010/04/30(金) 10:51:36
本なんて面倒で読む気しないぞ
PCなら寝ながらでも暗がりでも見れる
出版側も本作るより楽なはずなのにな
131デフォルトの名無しさん:2010/04/30(金) 11:55:11
本を読むのが面倒ってどんだけゆとりなんだよ。
132デフォルトの名無しさん:2010/04/30(金) 11:57:08
本とかネットがどうたらの前に>>127に対して以前回答した奴が悪いw
133デフォルトの名無しさん:2010/04/30(金) 12:00:14
>>129
>>127両方private付きなのであれだがたとえば片方だけとか考えてみ
134デフォルトの名無しさん:2010/04/30(金) 12:07:37
>>133
君よく空気読めない奴だなって言われないかw
135デフォルトの名無しさん:2010/04/30(金) 12:08:44
適当に進んでるスレで空気読む必要あるのか?
136デフォルトの名無しさん:2010/04/30(金) 12:19:23
言ってるそばからなんと「空気読めない」発言....

落語のオチを説明するようで情けないが、空気読めない、っていうのは別に
その場の雰囲気を読めないとか何とか、そういう特殊日本的な能力のことを言ってるわけじゃない。

>>129なんか、誰が読んでも明らかに半分以上「嫌味」で言ってるに決まってるのに
そんなことも読み取れない読解力のなさのことを言ってる。
137デフォルトの名無しさん:2010/04/30(金) 12:20:57
嫌味で言ってるのにマジで答えてどうするんだよ
そんなにしてまで「人に教えを垂れる自分」に酔いたいのかねw
しかもこんな低レベルな話でさ。
かなりおめでたすぎるだろう
138デフォルトの名無しさん:2010/04/30(金) 12:21:16
え、ちゃんとした回答だったの?
139デフォルトの名無しさん:2010/04/30(金) 12:25:47
どうでもいい
140デフォルトの名無しさん:2010/04/30(金) 12:26:38
文字だけの世界で真意なんて完全に読み取れるわけねーだろ
141129:2010/04/30(金) 12:36:25
なんか俺のせいで荒れてるみたいでごめんよ

別に嫌味で聞いたんじゃなくて目から鱗の何かがあるのかと思ったんだ
142127:2010/04/30(金) 12:37:12
http://pc12.2ch.net/test/read.cgi/tech/1269018938/395
>395 :デフォルトの名無しさん :2010/03/24(水) 22:17:27
>自クラスのprivateフィールド変数もプロパティを
>通してでないとアクセスできないようにする方法ありますか?


あ、ごめんごめん、質問の内容違うかったわwww
143129:2010/04/30(金) 12:38:19
>>142

しかもその質問したの俺じゃね?
144デフォルトの名無しさん:2010/04/30(金) 12:39:53
>>142
自分の勘違いを人のせいにするとか最低な奴だ
145デフォルトの名無しさん:2010/04/30(金) 12:41:27
春だねえ〜
146デフォルトの名無しさん:2010/04/30(金) 12:42:31
>>143
それはお前の勘違い
この質問の時そういうのがあればというレスはいくつかあったから
そのうちの一人だろ

privateフィールド変数

みたいな書き方するの俺ぐらいだしw
147デフォルトの名無しさん:2010/04/30(金) 12:52:22
空気嫁と叫んだやつが空気悪くした件
148デフォルトの名無しさん:2010/04/30(金) 13:00:19
空気読めてなかったのは誰だよってやつだな
149デフォルトの名無しさん:2010/04/30(金) 13:03:42
空気読めなんて言ってないけどなだから。
得意になって教え垂れてるけど、「それ」が本当にマジな質問かどうか考えてるのか、
って言っただけだが。
150デフォルトの名無しさん:2010/04/30(金) 13:06:41
ソッスネw
151デフォルトの名無しさん:2010/04/30(金) 13:09:28
寒いギャグで皆沈黙したときに
そのギャグに被せたのが>>129
それに真顔でつっこむ天然アイドル>>133
つまらないと死にゼリフを吐く>>134

一番空気を悪くする人物は間違いなく>>134
152デフォルトの名無しさん:2010/04/30(金) 13:14:22
個人の人格叩いてるわけじゃないので、勘違いして続けないよーに。
さあ、もうやめましょうね。
153デフォルトの名無しさん:2010/04/30(金) 13:18:43
空気読めないって人格攻撃の一つだろ
154デフォルトの名無しさん:2010/04/30(金) 13:21:47
スレを憎んで人を憎まずってやつよ。 続けるなっつーの。
155デフォルトの名無しさん:2010/04/30(金) 13:23:42

イギリス人には 「紳士はこういうときにスルーするものです」
ドイツ人には 「規則ではスルーすることになっています」
イタリア人には 「さっき美女がスルーしました」
アメリカ人には 「スルーするとヒーローになれますよ」
フランス人には 「スルーしないで下さい」
北朝鮮人には「将軍様がスルーしろと仰っています」
日本人には 「みんなもうスルーましたよ」
156デフォルトの名無しさん:2010/04/30(金) 15:24:26
>>154
今年一番感動した名言

として登録した
157デフォルトの名無しさん:2010/04/30(金) 20:53:28
>>129
全然違う!>>129なんかと一緒にするな!
>>127は、なんとCS0274になるんだぞ!凄いだろ!



まあ何というか、そろそろネタバレしてもいいかなあと
初心者スレだから見た瞬間にコンパイルエラーと分からない人もいるだろうし、
あまり放置しすぎるのもどうかと思うわけだ
158デフォルトの名無しさん:2010/04/30(金) 21:13:09
C#2010容れて見た。ツールボックスにChartが追加されてる!
で、どうやって使うんだコレ?
159デフォルトの名無しさん:2010/04/30(金) 21:58:12
ところでみんなC#で何作ってるの?
160デフォルトの名無しさん:2010/04/30(金) 21:59:48
業務アプリ
161デフォルトの名無しさん:2010/04/30(金) 22:30:49
人工知能
162デフォルトの名無しさん:2010/04/30(金) 22:36:11
クローラー+ダウンローダー+重複チェッカー
163デフォルトの名無しさん:2010/04/30(金) 22:38:46
>>160 奴隷

>>161 ニート

>>162 ハカー
164デフォルトの名無しさん:2010/04/30(金) 22:47:37
ただのオナニーマスターだよ
165デフォルトの名無しさん:2010/05/01(土) 02:09:42
フォームにチェックボックスをつけ、CheckedChangedのイベントでチェック時はウィンドウを最前面に表示するようにしたのですが、
チェックボックスのプロパティのCheckedをTrueにしてプログラム起動時からチェックが入ってる状態にしても、
一度チェックし直さなければ最前面表示されないんですが何か解決策はありますか?
166165:2010/05/01(土) 02:12:30
すみません
上の方にthis.TopMost = true;をもう1行追加することで自己解決しました
駄レス申し訳ないです
167デフォルトの名無しさん:2010/05/01(土) 02:15:39
できるだけ書かずにデザイナのプロパティいじれ
168165:2010/05/01(土) 02:40:43
>>167
レスありがとです
フォームのLoad時にCheckedChangedのイベント設定することで書かずになんとかなりました
169デフォルトの名無しさん:2010/05/01(土) 15:56:25
"reverse".Reverse() => "esrever"
とできるように既存のクラス、コンポーネントのメソッドを
外部から拡張する技ってあります?
170デフォルトの名無しさん:2010/05/01(土) 15:57:51
拡張メソッド
171デフォルトの名無しさん:2010/05/01(土) 16:08:24
そのまんまか
トン
172デフォルトの名無しさん:2010/05/01(土) 16:09:02
こんな感じか。

public static class StringEx
{
public static string Reverse(this string value)
{
StringBuilder buf = new StringBuilder();
for (int i = value.Length - 1; i >= 0; --i)
{
buf.Append(value[ i ]);
}

return buf.ToString();
}
}
173デフォルトの名無しさん:2010/05/01(土) 19:41:11
>>169
StringはIEnumerable<char>だからStringに対するReverse自体は可能だよ
"reverse".Reverse().Aggregate("", (s, c) => s + c)
Aggregateが嫌なら>>172みたいに個別に実装するより
IEnumerable<char>を引数にとって連結した文字列を返す拡張メソッドを書いた方がスマート
174デフォルトの名無しさん:2010/05/01(土) 21:32:35
c#のウェブブラウザーコンポーネントってIE入ってない環境でも動作する?
175デフォルトの名無しさん:2010/05/01(土) 21:38:37
IE入ってない環境ってWin95とかか?
176デフォルトの名無しさん:2010/05/01(土) 21:39:46
しない
177デフォルトの名無しさん:2010/05/01(土) 22:29:06
>>176
マジすか・・・ありがとうございます
178デフォルトの名無しさん:2010/05/01(土) 23:43:55
>>177でガッカリしてることにビックリした俺はおかしいか?
179デフォルトの名無しさん:2010/05/01(土) 23:44:33
ああ、頭おかしいね
180デフォルトの名無しさん:2010/05/01(土) 23:47:07
ウェブブラウザーコンポーネントってIEコアを使ってるだけだしなあ
181デフォルトの名無しさん:2010/05/01(土) 23:48:54
>>178
スレタイ読んでも納得いかないなら別のスレいくといいよ
182デフォルトの名無しさん:2010/05/01(土) 23:49:08
>>179==177
183デフォルトの名無しさん:2010/05/01(土) 23:50:54
EUとかクンコカ向けWindowsはIEがバンドルされてないんだっけ?
そういや7からは日本版にもメールクライアント入ってないのな。
184デフォルトの名無しさん:2010/05/02(日) 05:38:27
c#でcの関数、例えばfgetsとかって使えないのですか?
使えたら方法を教えてくだしあ
185デフォルトの名無しさん:2010/05/02(日) 05:42:53
>>184
(σ・∀・)σ<fgetsぽいことはできるよ
c# StreamReader関連かな
一行ずつ
http://dobon.net/vb/dotnet/file/readfile.html#section3
一文字ずつ
http://dobon.net/vb/dotnet/file/readfile.html#section4
186デフォルトの名無しさん:2010/05/02(日) 05:53:07
>>185
ありがとうございます
ぽいことと言うか、c++で作ったメソッドの(charやDirectXの関数を使ってる)コピペをそのまま貼り付けたのですが
エラーが出まくったので、とりあえずchar[]の[]を消して、stringにしたりしたのですが
#includeもできないみたいですし、Cの関数を使ったり、DirectXのライブラリを、オプションとかで設定して使えるようにできないのですか?
全くC#の機能を使って同じ動きがするように書き直すしか無いのでしょうか?

187デフォルトの名無しさん:2010/05/02(日) 05:56:11
>>186
DirectX使いたいならXNAにするとかすればいいんじゃないかな?
あれはDirectXのラッパーのはずだし

それにC++のchar配列はC#の場合Stringで対応かな
文字とか入れてるんでしょ?
188デフォルトの名無しさん:2010/05/02(日) 06:01:10
あーごめんぼけてた
>全くC#の機能を使って同じ動きがするように書き直すしか無いのでしょうか?
そうです。
言語の仕様が違うので書き直しです。
c#の方がスマートに書けるのでそんなに苦労しないと思うけどね
189デフォルトの名無しさん:2010/05/02(日) 06:03:49
>>187
数字です(数字を文字と言ってもいいのかさえわからないレベル)
フォームアプリを作りたかったので、その場合C#が良いと聞いたのでC#で始めようと思ったのですが
使えないならC++/CLIかなんかそんな感じのC++でフォームアプリを作れるのだと多分コピペできるのでそっちでやりたいと思ってます
つか、C++/CLIかなにかとC#はドットネットだから同じ物だよみたいな事を聞いていたので、てっきりcharとかfputとかc用のライブラリとか、使えると思ってました
190デフォルトの名無しさん:2010/05/02(日) 06:05:47
フォームアプリとDirectXがなんで一緒に・・・・
191デフォルトの名無しさん:2010/05/02(日) 06:10:23
C++/CLIはC++とC#を同じソースに同時に書けるといった感じの
二階建て言語だからね〜
192デフォルトの名無しさん:2010/05/02(日) 06:12:32
>>191
あれってそんな仕様なの?w

まあ>>189がどういうものを移植しようとしてるのかが
もうちょっと明確になればなあ
193デフォルトの名無しさん:2010/05/02(日) 06:20:43
使えないんでつか…
C++/CLIでやりまつ(`・ω・´)
ありがとうございまつた
194デフォルトの名無しさん:2010/05/02(日) 06:23:07
いや・・・・
ちょっと書き直せばいいだけでしょw
実際そんな手間じゃないと思うよw

どういうアプリを移植しようとしてるの?
195デフォルトの名無しさん:2010/05/02(日) 07:03:06
>>192
まあ大げさに比喩で言ってみたんだけど
/clr:safeでエラーになら内書き方をすればC#相当ということ。
196デフォルトの名無しさん:2010/05/02(日) 08:09:30
C++/CLIなんか手に負えないと思うけどなw
あれはC++とC#の両方がちゃんとわかってる人が嫌々使うもんだ
197デフォルトの名無しさん:2010/05/02(日) 09:19:12
C/C++の方はDLLにして、P/Invokeする方が楽。
198デフォルトの名無しさん:2010/05/02(日) 10:33:05
C#はC++の拡張じゃねぇ…
C#はC#だ
199デフォルトの名無しさん:2010/05/02(日) 11:39:24
XMLシリアライズでクラスを復元するメソッド内ではクラスの中身が復元されてるんですが
メソッドを出ると消滅するのはなんでですか?
200デフォルトの名無しさん:2010/05/02(日) 11:41:36
>>199
シリアライズは使わない方がいいよ今後のために
普通にXML Documentで吐いたほうがいい
201デフォルトの名無しさん:2010/05/02(日) 11:45:36
INIファイル最強伝説
202デフォルトの名無しさん:2010/05/02(日) 11:47:04
INIとか忘れかけてたwwww
そう言えばあったな・・・・

つうか、設定クラスをバイナリにして保存→復元
てのもあり?
203デフォルトの名無しさん:2010/05/02(日) 11:48:52
プロパティの変更に弱い方式はウンコ
204デフォルトの名無しさん:2010/05/02(日) 11:50:33
XmlSerializerはまだマシ
それ以外のシリアライザは最悪
保存じゃなくて通信に使うもんだあれは
205デフォルトの名無しさん:2010/05/02(日) 12:14:04
DataContractSerializer最強
XmlSerializerは柔軟性なさ過ぎてまじゴミ
206デフォルトの名無しさん:2010/05/02(日) 12:39:02
XmlSerializerはシリアライザというよりXML文書の読み書きに使うものだからなあ
逆にDataContractSerializerはフォーマット固定なのでシリアライズにしか使えない
シリアライズ方式はXmlSerializerに近くて変更の影響を受けにくいのでシリアライザとしては最強
207デフォルトの名無しさん:2010/05/02(日) 12:41:15
オーノー
.netではシリアライズが標準なのかと思って勉強しまくってます
208デフォルトの名無しさん:2010/05/02(日) 13:04:17
メソッドを出ると消滅、とか、何のことだか俺にはサッパリなんだけど
このスレはエスパーが揃ってるのか
209デフォルトの名無しさん:2010/05/02(日) 13:08:43
ローカル変数に入れててスコープから抜けてるんだろ
210デフォルトの名無しさん:2010/05/02(日) 13:09:22
単にスコープはずれたとかそんなんじゃないの?
211デフォルトの名無しさん:2010/05/02(日) 13:20:59
スコープ外れたらアクセスできないし
どうやって消滅してることを確認するんだよ
212デフォルトの名無しさん:2010/05/02(日) 13:25:18
確認したわけじゃなくてデバッガのウォッチペインから消えただけとか予想
213デフォルトの名無しさん:2010/05/02(日) 13:30:37
ほんとに確認しようと思ったらWeakReferenceで追跡するとか
COMでCLRホストしてコールバックさせるとかくらいしないと
214デフォルトの名無しさん:2010/05/02(日) 13:33:56
すいませんメソッドの外にひとくくりにする時にメソッド内の宣言部分を消し忘れてました
シリアライズ関係ありませんでしたすいません
215デフォルトの名無しさん:2010/05/02(日) 13:45:08
お前はまずC#の仕様を勉強してこい
216デフォルトの名無しさん:2010/05/02(日) 13:49:20
すいません
217デフォルトの名無しさん:2010/05/02(日) 13:59:33
吸います
218デフォルトの名無しさん:2010/05/02(日) 20:36:17
.netFramework4.0って劇的に変わったところあるんすかね
219デフォルトの名無しさん:2010/05/02(日) 20:37:21
あんまりない。
220デフォルトの名無しさん:2010/05/02(日) 20:45:08
dynamicとoptional parameterでついにExcelを操作するのにVBがいらなくなった
221デフォルトの名無しさん:2010/05/02(日) 20:45:16
parallel関係は面白そうだけど目を見張るほどではないね
222デフォルトの名無しさん:2010/05/02(日) 20:50:05
>>220
C#から容易にExcel操作できるん?
223デフォルトの名無しさん:2010/05/02(日) 20:51:49
>>220
どっちも.NET Frameworkの新機能じゃなくてC#の新機能だけどなw
224デフォルトの名無しさん:2010/05/02(日) 20:54:21
>>220
ニワカ乙
225デフォルトの名無しさん:2010/05/02(日) 21:06:58
dynamicは.NETの新機能だぞ
DLRがないと動きません
226デフォルトの名無しさん:2010/05/02(日) 21:13:27
どーせ社内システムとかでしか使わんのでバージョン揃ってるから、事前
バインディングで問題なかった。
227デフォルトの名無しさん:2010/05/02(日) 21:16:47
勘違いしてる人が多そうだけどdynamicはリフレクションじゃないよ
でもCLRにそういう命令が追加されたわけでもない
対象の操作を行うメソッドを動的に生成してデリゲートで差し替えてるの
228デフォルトの名無しさん:2010/05/02(日) 22:23:14
SortedListから値を取り出すときに、求めるキーそのものがなくても一番近いインデックスを教えてくれるような機能が欲しいんですが
そういうのってないですか?
229デフォルトの名無しさん:2010/05/02(日) 22:24:55
>>222
元から出来るじゃん
簡単にってのが引っかかるが
230デフォルトの名無しさん:2010/05/02(日) 22:29:02
>>228
List<T>使う
追加や検索は常にBinarySearchで
231デフォルトの名無しさん:2010/05/02(日) 22:54:22
>>230
なるほどありがとうございます
232デフォルトの名無しさん:2010/05/03(月) 02:58:37
>>229
C#だと引数の省略ができなくて大変だったんだよ
233デフォルトの名無しさん:2010/05/03(月) 04:48:39
System.Web.dllを追加したく「参照の追加」の.NETタブの一覧を探したんですが、
見つからないので参照タブにて直接DLLを指定したら
「アセンブリ "System.Web" を解決できませんでした。このアセンブリは、現在のターゲット フレームワーク ".NETFramework,Version=v4.0,Profile=Client" 内にありません。
ターゲット フレームワーク内にないアセンブリへの参照を削除するか、プロジェクトを再ターゲットしてください。」
とエラーが出たのですがこれはどうすれば解決できますか?
234デフォルトの名無しさん:2010/05/03(月) 04:54:02
IDEのバージョンは何を使っててターゲットバージョンは.netバージョンいくつなの?
235デフォルトの名無しさん:2010/05/03(月) 04:58:55
2010Expressです
すみませんターゲットバージョンっていうのはどれのことでしょうか??
236デフォルトの名無しさん:2010/05/03(月) 05:05:11
VC#2010Express?
VWD2010Expressとかいわないよね?
237デフォルトの名無しさん:2010/05/03(月) 05:07:12
Visual C# 2010 Expressです
238デフォルトの名無しさん:2010/05/03(月) 07:05:17
いまいち状況がよくわからんが余計な参照入れたのならはずすだけじゃないの?
239223:2010/05/03(月) 07:32:15
>>238
もちろん削除したらエラーは消えるんですが、System.Webはどのように追加すればいいでしょうか?
240233:2010/05/03(月) 07:33:36
すみません>>223じゃなくて>>233です
241デフォルトの名無しさん:2010/05/03(月) 07:35:32
コードの上に
using System.Web;
って入れるだけちゃうの?
どんな機能を使いたかったの?
242233:2010/05/03(月) 08:30:38
>>241
具体的には下記URLの「より高度な電子メール送信」の部分をやりたかったのですが、
using System.Web;って入れてもエラーが出て、下記記事の中に
「このクラスは、クラス・ライブラリのDLLであるSystem.Web.dllの中に含まれているので、
これが参照されていない場合は参照をプロジェクトに追加する必要がある。」
とあったので、System.Web.dllを追加しようとしたら見つかりませんでした・・
*ttp://www.atmarkit.co.jp/fdotnet/dotnettips/017sendmail/sendmail.html
243デフォルトの名無しさん:2010/05/03(月) 08:46:08
System.Web.dllって.net2.0が最新かな・・・いれてる?
VC#2008Expressでみたら参照にはあるねえ・・・
ttp://tsushima.2ch.at/s/news2ch61959.png
244デフォルトの名無しさん:2010/05/03(月) 08:53:22
>>242
その方法は古いみたいね。
新しい方はこっちでやるみたい
http://dobon.net/vb/dotnet/internet/smtpmail.html
245デフォルトの名無しさん:2010/05/03(月) 09:00:54
これなら動くんじゃないかな
http://ideone.com/UCjUS
246233:2010/05/03(月) 09:03:14
>>243-244
.NET3.5とか4.0のほうばかり見てました
2.0のフォルダにあったSystem.Web.dllを入れてみたら正常に追加されました
ただ今度は「古い形式です」と出たので1.1の方のフォルダにあったものを追加したら無事コンパイル出来ました
多分2.0の方だと>>244さんが書いてくださった方法が使えるんですね
ありがとうございました!
247デフォルトの名無しさん:2010/05/03(月) 09:05:36
>>246
.netもなんだかんだで歴史あるしネットのサンプルコードが書かれた時代と
仕様が変わってるケースがあるので、掲載年月日とかも見た方がいいね
248233:2010/05/03(月) 09:06:47
>>245
すみませんレスかぶりました・・
書いていただいたソースを使ってみたらコンパイル出来ました
System.WebじゃなくSystem.Netというのもあるんですね
また機会があったら使ってみたいと思います
ありがとうございましたー!
249デフォルトの名無しさん:2010/05/03(月) 09:13:04
.NETのメール関連のクラスは、日本特有のメール文化からくる
エンコードの問題に対処できないので業務ではぶっちゃけ使えない
250デフォルトの名無しさん:2010/05/03(月) 13:35:21
フォトショップをジャバスクリプトとDOMで制御するのを始めて1年目の者です。
職場の生産システムに導入して、効率を上げる事を目的にしています。
(金にならない自主作業ですが)

DOM利用のドキュメント処理はもちろん、ファイルの扱い、GUIも
一応理解して、システムを構築できるレベルにあります。

しかしだんだん欲が出てきて、もっと速く画像処理できる
プログラムを開発できないかと考えるようになりました。
それで、現在言語を物色中なのです。

それで、C#が取っ付きやすそうだと単純に思ったのですが、
C#で、2Dの画像処理を開発経験のある方のご意見を伺いたいのです。
フォトショップのDOMは理解しやすくて簡単なのですが、
C#で2D処理する場合、DOMみたいなものを利用できるのでしょうか
その辺りの情報が初心者なので皆無なのです。

C#の2D処理に関する、学習の筋道をお教えください。
お願いします。
251デフォルトの名無しさん:2010/05/03(月) 13:47:42
そんなんないし、そもそもC#で画像って、どこかでライブラリ買ってこないと
話にならないと思うよ。
252デフォルトの名無しさん:2010/05/03(月) 13:50:19
何がしたいかによる
写真に特殊効果かけたりするようないわゆる画像処理は大変だし
そもそもPhotoshopの速度を超えるのはまず不可能だけど
図形や文字描いたりするだけなら簡単だよ
253デフォルトの名無しさん:2010/05/03(月) 14:26:41
現状では

JavaScript→AdobeのDOMレイヤー→ソース

ってアクセスしてるのでしょう?
レイヤーがないんだからソースを直に読めるかどうかによるが
ソースが何なのか書いてないからできるとも言えない
254デフォルトの名無しさん:2010/05/03(月) 14:39:20
>>251
>>252
早速、ありがとうございます

DirectXは、確か画像処理用のライブラリ(なのでしょうか?)
だったかと思いますが、それを利用するというのはできませんか?

やりたい事の一つは、大量の画像をトリミングする作業です
被写体の位置と大きさを一定にするのが条件です。
なので、必要な機能は、以下になります。

1:ウインドー上の画像をマウスで位置調整できる
2:画像のどの位置にマウスポインタがあるか把握できる
3:拡大縮小による画像の補完機能。

スクリプトでしか処理し得ない部分と
フォトショップの基本機能による手作業を分離すれば
できる事ではあるのですが、専用のソフトで一括処理できれば
よいなと考えています。
255デフォルトの名無しさん:2010/05/03(月) 14:42:45
余裕
.NETの標準のライブラリの範囲(System.Drawing/WPF)でできる
DirectXはリアルタイム処理のためのものなのでこの場合はいらん
256デフォルトの名無しさん:2010/05/03(月) 14:57:30
それって画像認識が必要じゃないの?
257デフォルトの名無しさん:2010/05/03(月) 15:04:03
手作業だろ
258デフォルトの名無しさん:2010/05/03(月) 15:09:18
>>255の通りだが
>DirectXはリアルタイム処理のためのものなのでこの場合はいらん
これに関しては古い知識なので相手にしないように
259デフォルトの名無しさん:2010/05/03(月) 15:12:35
>>253
ソースはjpgメインで、時々tiffという感じです。

(psdも扱えたらいいのですが、贅沢ですね)

>>255
希望が出てきましたー。
260デフォルトの名無しさん:2010/05/03(月) 15:19:38
>>256
>>257
手作業の部分がどうしても残ります。
画像認識による自動トリミングは、夢ですね。
261デフォルトの名無しさん:2010/05/03(月) 15:23:47
自動化するにしても認識(recognize)する必要はないな
検出(detect)する必要はあるけど
262デフォルトの名無しさん:2010/05/03(月) 15:38:13
> やりたい事の一つは、大量の画像をトリミングする作業です
> 被写体の位置と大きさを一定にするのが条件です。

なら、被写体の位置と大きさを検出して、画像を切り取り&拡大&縮小、
だろ? 検出が一番大変だと思う。
263デフォルトの名無しさん:2010/05/03(月) 15:59:33
例えば、大量に直立不動の人が立っている画像が沢山あるとします。
それぞれの人の身長はまちまちですし、フレーミングも変動している
とします。これを以下のようにします

1:一定の画像サイズ
2:人物を中心に配置する
3:頭上の空間と、足の下の空間の幅を一定にする
 (画像内における人寸を一定にする)

なので、一番欲しい情報は、
1:人物の高さの情報(座標情報)
になります。

座標情報をマウスポインタを使い検出できれば
高さ情報を元に必要な拡大縮小率を導き出せます。

これは難しいですか?
264デフォルトの名無しさん:2010/05/03(月) 16:01:55
どこからどこまでがプログラムの処理で、
どこからどこまでがユーザーの操作なのか、
その辺をきっちり考えた方がいいよ。
265デフォルトの名無しさん:2010/05/03(月) 17:39:07
難しく考えなくてもこれだけだと思うが

1. 群集が収まる最小矩形を手動で選択 → R
2. 矩形Rを上下に一定の比率で拡張 → R'
3. アスペクト比が一定になるように矩形R'を左右に拡張 → R''
4. 矩形R''で切り出して、サイズが一定になるように拡大縮小

とりあえず、アドバイスとしては

・Rを保存しておくと何かと都合が良い (2,3の比率を変えたくなったときとか.)
・4は専門のアプリ・ツールに任せるのが良い (拡大縮小は特に)
266デフォルトの名無しさん:2010/05/03(月) 21:25:06
間が空いてしまいました。すみませんでした。

>>265
ありがとうございます。
C#では、取り敢えず3までの選択範囲の設定が可能ということですね。
問題は4なのですが、そのような機能を提供してくれるライブラリー
は、無いのでしょうか。(>>255情報もあります)

あればすぐにでも、C#の勉強を始めようと思うのですが。
267デフォルトの名無しさん:2010/05/03(月) 21:26:38
あるよ。.NET Frameworkってライブラリが。
268デフォルトの名無しさん:2010/05/03(月) 21:30:46
4もC#でいいよ
ごく一般的なアルゴリズムが使えるから他のツール使っても同じ
269デフォルトの名無しさん:2010/05/03(月) 21:56:21
>>267
>>268
msdnの.NET Frameworkを検索してみました。
「イメージ、ビットマップ、アイコン、およびメタファイルの操作」
のグループに、画像の補間に関する情報がありました。
これなら、いけそうです。

決意しました。C#を勉強します。

そこでなんですが、お勧めの書籍があったら
お教えください。
270デフォルトの名無しさん:2010/05/03(月) 21:59:09
ある程度スクリプトとかの経験があるなら、MSDNだけで十分だと思うよ。
271デフォルトの名無しさん:2010/05/03(月) 22:26:18
C#の勉強=ドトネトの勉強だから
C#の勉強はVB.netの勉強にもnaる
272デフォルトの名無しさん:2010/05/03(月) 22:55:48
>>271
.NET Frameworkを共通に使うからですね
273デフォルトの名無しさん:2010/05/03(月) 23:47:17
93%同じ言語
274デフォルトの名無しさん:2010/05/03(月) 23:48:07
えw
VB.netなんて糞構文でしょ
なんで存在するのかわからない言語
275デフォルトの名無しさん:2010/05/04(火) 00:02:48
VB6の人達向けに、あるいは混乱させるために
276デフォルトの名無しさん:2010/05/04(火) 00:05:11
別に言語でどうのこうの言いたくないんだけど
VBはネストが深いと読む気が失せる
277デフォルトの名無しさん:2010/05/04(火) 00:16:04
>>276
それはむしろ逆。
よく知らずに何かを貶すのは馬鹿っぽいよ。
278デフォルトの名無しさん:2010/05/04(火) 00:19:25
>>274
既存のVBerを逃したくないという、マーケティング上の理由でしょ
279デフォルトの名無しさん:2010/05/04(火) 00:21:08
>>277
知らんがな。俺が読みにくいと思っただけだよ
280デフォルトの名無しさん:2010/05/04(火) 00:34:55
VBとC#なんて、言語で言えば五十歩百歩だろ。
281デフォルトの名無しさん:2010/05/04(火) 00:45:42
>>280
C#にしかない機能も結構あるし、総合的に見ればC#の方が使いやすいのは確かだとは思うけどね。
まあ構文についてはどっちもどっちでしょ。
それぞれ利点と欠点があるから、一概にどっちが良いとは言えんと思う。

ただ今の20代以下だとC系の言語から入ってる人が多いからC#の方が読みやすいんだろうな。
282デフォルトの名無しさん:2010/05/04(火) 00:47:19
俺も>>280と同意見
匿名メソッドやその辺が違うとしても
結局やれることに差は無い
283デフォルトの名無しさん:2010/05/04(火) 00:48:06
Javaとかも含めた手続き型オブジェクト指向言語なんて、
どれも大して変わらんよ。
284デフォルトの名無しさん:2010/05/04(火) 00:49:24
新Ver提供延び延びになってるJavaなんかもうどうでもいい
285デフォルトの名無しさん:2010/05/04(火) 00:52:54
伸び伸びBoy
286デフォルトの名無しさん:2010/05/04(火) 01:17:25
>>283
静的型と動的型
クラスベースとプロトタイプベース
全然違うと思う
287デフォルトの名無しさん:2010/05/04(火) 07:00:17
.NET4でManaged DirectX使おうとすると、
FileLoadExceptionが出たり、デバッガで止まったり、.NETじゃない例外が出て落ちたりするんですが
一番いい回避策はSlimDXですか?
ジョイパッド読みたいだけなのでDirectInputが使えればいいんですが。
288デフォルトの名無しさん:2010/05/04(火) 07:03:13
vistaで管理者権限で動いているプロセスから、
別のexeを標準権限で実行するにはどうすればよいでしょうか?

Process.Start(パス)で実行すると権限を継承してしまいます><
289デフォルトの名無しさん:2010/05/04(火) 07:52:06
>>287
>ジョイパッド読みたいだけなのでDirectInputが使えればいいんですが。

joyGetPosをP/Invokeじゃだめなの?
「C# joyGetPos」で検索したら色々でてくるよ。
290デフォルトの名無しさん:2010/05/04(火) 08:23:20
>>289
DirectX使わなくても読む方法があったとは
ありがとうございます
291デフォルトの名無しさん:2010/05/04(火) 11:27:54
すくしょをとるめそっどってどれだけあるの?
描画のサーフェスを取得するってことにはぜんぶかわりないの?
292287:2010/05/04(火) 11:42:31
>>289
リモコン的操作に使いたいのでリアルタイムじゃないほうがいい
→joySetCaptureを使おうと送られてくるメッセージを調べる
→どうやらボタンは4つまでしか認識できないらしいので使えない
とラッパーライブラリを作った後で気づきました
293デフォルトの名無しさん:2010/05/04(火) 11:47:50
XNA使えばいいじゃん
簡単だよー
294デフォルトの名無しさん:2010/05/04(火) 11:58:27
>>288
DuplicateTokenEx()でトークンを複製して、CreateProcessWithTokenW()とかで
実行、で行けるみたい。
295デフォルトの名無しさん:2010/05/04(火) 12:33:55
>>293
シェーダ縛りがあるので却下
296デフォルトの名無しさん:2010/05/04(火) 12:34:14
>>283
主旨違うかもしれないけど
プロパティなかったら未だにget,setアクセサ殆ど作らなかったと思う
GetValue,SetValue面倒くさかった
297デフォルトの名無しさん:2010/05/04(火) 12:48:30
>>286
Javaの語でいきなりJavaScriptの話にするのはちょっと
298デフォルトの名無しさん:2010/05/04(火) 13:58:09
ファイルが存在するかどうか調べるメソッドは?

たとえば、C:\新しいファイル
の中にエロ画像.jpgがある場合

exist(@"C:\新しいファイル\エロ画像.jpg");
でtrueを返して
エロ画像が無い場合falseを返すようなメソッドは
どこにありますか?
299デフォルトの名無しさん:2010/05/04(火) 14:00:22
FileInfo.Exists
300デフォルトの名無しさん:2010/05/04(火) 14:06:25
ファイル操作なんだから、System.IO から辿っていけばそのうち見つかるわな。
301デフォルトの名無しさん:2010/05/04(火) 14:15:26
2010でコマンドラインパラメータの解析を簡単にやる方法ないですか?
相変わらずループまわして地道にやるんですかね。
302デフォルトの名無しさん:2010/05/04(火) 14:18:18
Splitするくらい?
303デフォルトの名無しさん:2010/05/04(火) 14:18:22
ない
みんな作ってるから適当にweb漁ってパクれ
304287:2010/05/04(火) 14:56:35
XNAはXBOX360コントローラしか使えないらしいのでだめ
Windows API Code PackにはDirectInputが入っていないらしい
ということでSlimDXを試そうとしたのですが、
配布されているdllをそのまま使おうとするとやはりFileLoadExceptionが出る

ということで原点に返りこれの例外対策をキーワードを変えながらいろいろググって
app.configのstartup にuseLegacyV2RuntimeActivationPolicy="true"を追加すれば回避できる
ことがやっとわかったので当面これで行くことにしました。

ttp://nky-tech-sdt.blogspot.com/2010/02/net-framework-40.html
ttp://msdn.microsoft.com/ja-jp/library/bbx34a2h.aspx
305デフォルトの名無しさん:2010/05/04(火) 15:01:13
対応はしていないが、認識はちゃんとする
ボタン配置がめちゃめちゃなだけ
306デフォルトの名無しさん:2010/05/05(水) 11:06:22
>>292
>>304
扱えるボタンの数ならjoyGetPosExで増えてるよ。
ttp://msdn.microsoft.com/en-us/library/dd757108.aspx
ttp://msdn.microsoft.com/en-us/library/dd757112.aspx

一定時間ごとにjoyGetPosEx呼んで状態変化を見ればいいんじゃないかな。
joySetCaptureも内部的にはタイマでポーリングだったりするんじゃないの?
どうせUSBレベルでは結局はポーリングなんだし。
307デフォルトの名無しさん:2010/05/05(水) 12:25:29
今までプログラミング経験もない今日から始めた超絶初心者なんですが
C#を学ぶのに良いサイト・書籍を教えてください

ちなみに今はここを見てるんですが難しい…
http://ufcpp.net/study/csharp/index.html
308デフォルトの名無しさん:2010/05/05(水) 12:31:27
そこは初心者向けというよりはある程度慣れてきた人が
辞書的に使うところかも

お題に沿ってとりあえずやれる方がいいんだけどなあ・・・
309デフォルトの名無しさん:2010/05/05(水) 12:48:12
十分初心者向けだと思うけどな
310デフォルトの名無しさん:2010/05/05(水) 12:54:59
>>307
僕も学習中ですがとりあえず大まかに学んで、プログラムらしいものを作ってみる方がいいんではないでしょうか?
秀和システム:作って覚えるVisual C# 2008 Express Edition入門
ttp://www.shuwasystem.co.jp/products/7980html/2109.html
これが一番とっつきやすかったです。

逆に日経プログラミングの入門コーナーとか読んじゃダメですね。はしょりすぎてわかりにくい。
プログラミングの雰囲気を味わうにはとっつきやすい雑誌ではあるけど。
311デフォルトの名無しさん:2010/05/05(水) 12:57:29
>>307はプログラマとしての基礎体力がある人向けな気がする
ifって何?くらいのレベルの人のための解説ってC#には少ないと思う
312デフォルトの名無しさん:2010/05/05(水) 13:26:12
>>308-311
レスありがとうございます

うーむ、ifとかさっぱり分からないですねw
入門用の解説が少ないとなるとまずは言語選択から考えなきゃいかんのかなー…
なにかソフトを作るってレベルじゃなくてPC上の操作(ファイルの移動やリネーム)をやりたいだけだから
単純で分かりやすいのが良いんだけれども
313デフォルトの名無しさん:2010/05/05(水) 13:31:15
C#の絵本 とか
314デフォルトの名無しさん:2010/05/05(水) 13:34:04
ifわからないってのなら言語はどれ選ぼうが関係ないw
C#で勉強しろw
315デフォルトの名無しさん:2010/05/05(水) 13:42:47
>>313
C#の絵本とか欲しすぎる…

甘えすぎてた、四の五の言わず勉強します
316デフォルトの名無しさん:2010/05/05(水) 13:52:55
VBだと結構良書があるんだが
C#になると入門者向け良書がビックリするほど少なくなるね
言語初心者は出来るだけGUIを使ったサンプル作成を主眼に置いた
テキスト使った方が視覚的にコードの結果が分かるので良いと思う
GUIの無駄なコードが増えるけどCUIでいきなり勉強してもつまんないし

「Visual C# 2005 [実践]プログラミングテクニック 応用できる基本の書き方」

.NETの代表的な機能をテキストエディタや画像ビューワと言った
具体的なサンプルコード書きながら説明されていてイメージを掴みやすかった
この後にオライリー買い増したけどね
317デフォルトの名無しさん:2010/05/05(水) 16:34:31
独習C#でいいじゃん
318デフォルトの名無しさん:2010/05/05(水) 16:52:43
俺もC++始めたときにC前提にしてるのが多くて躓いたのを思い出した
319デフォルトの名無しさん:2010/05/05(水) 16:53:02
まず軽くCをやったらいいのかもね
320デフォルトの名無しさん:2010/05/05(水) 16:54:54
C++に進まないんだったらJavaのほうが
321デフォルトの名無しさん:2010/05/05(水) 17:12:16
Cのソースを読む機会は多いからCをやっといて損はない。
322デフォルトの名無しさん:2010/05/05(水) 19:31:14
他スレから誘導されてきたんだけど、
C#のおすすめの学習サイトある?
323デフォルトの名無しさん:2010/05/05(水) 19:31:53
MSDN
324デフォルトの名無しさん:2010/05/05(水) 19:35:12
初心者向けのサイトをヨロ
325デフォルトの名無しさん:2010/05/05(水) 19:46:06
@ITに腐るほどあんだろ……
326デフォルトの名無しさん:2010/05/05(水) 19:48:35
後出しで申し訳ないですけど
ブログっぽいサイトや広告が気になるサイトはNGでつ
327デフォルトの名無しさん:2010/05/05(水) 19:54:42
>>307を分かるまで見てろ
328デフォルトの名無しさん:2010/05/05(水) 19:57:30
>>322
そのスレにスクリプト打ち込んでやるから教えろ
329デフォルトの名無しさん:2010/05/05(水) 19:58:37
>>327
かなり内容が充実してそう
読んでみます
ありがとう
330デフォルトの名無しさん:2010/05/05(水) 19:59:29
いやどう考えても誘導元は相談室だろ。
331デフォルトの名無しさん:2010/05/05(水) 19:59:54
332デフォルトの名無しさん:2010/05/05(水) 20:01:58
これなんかは〜
http://wisdom.sakura.ne.jp/programming/cs/index.html

APIスレでの評価は良くないが
333デフォルトの名無しさん:2010/05/05(水) 20:09:45
>>332
おっ、そっちのほうがとっつきやすそう
どうもカムサハムニダ謝謝Danke
334デフォルトの名無しさん:2010/05/06(木) 08:53:07
DataTableと連結してるデータグリッドビューのセルに下のように直接値を設定すると
カレントセルを上下に移動しないとDataTableに反映されないんだけど
どうしたらいいですか?

dataGridView1[1, dataGridView1.CurrentCell.RowIndex].Value = newForm.textBox6.Text;
335334:2010/05/06(木) 10:29:31
dataGridView1とDataTableの間にBindingsourceを入れて
値設定後に、bindingSource1.EndEdit();をすると解決しました。
336デフォルトの名無しさん:2010/05/06(木) 17:07:42
C#っていうのとC#.NETっていうのは別物?
337デフォルトの名無しさん:2010/05/06(木) 17:27:06
>>336
一緒
338デフォルトの名無しさん:2010/05/06(木) 17:35:36
VB.NETの.NETと C#.NETの.NETではニュアンスというか、
多く使われている例の数が違う気がする。 C#.NETって、開発環境指すことあるでしょ。
339デフォルトの名無しさん:2010/05/06(木) 17:38:53
一緒か、ありがと☆
340デフォルトの名無しさん:2010/05/06(木) 18:33:51
そういう言い方をしてたのは2003まで。
341デフォルトの名無しさん:2010/05/06(木) 18:34:40
初期の商品名がC#.NET。
C#.NET(2002) / C#.NET 2003 / C# 2005 Express 〜
342デフォルトの名無しさん:2010/05/06(木) 18:45:40
正式には、「Visual C# .NET」ね。
343デフォルトの名無しさん:2010/05/06(木) 20:08:51
OS/2の頃のIBMが何にでも/2付けてたのと一緒だな
344デフォルトの名無しさん:2010/05/06(木) 20:34:12
.net framework2.0向けにコンパイルされた実行ファイルは
4.0だけがインスコされてるPCでは実行できない?
345デフォルトの名無しさん:2010/05/06(木) 20:39:03
もちろん
346デフォルトの名無しさん:2010/05/06(木) 20:40:02
4.0を使って動くはず。
347デフォルトの名無しさん:2010/05/06(木) 20:48:57
MSは異常なほどに後方互換を重視する会社
348デフォルトの名無しさん:2010/05/06(木) 20:51:53
注:XP以降に限る
349デフォルトの名無しさん:2010/05/06(木) 20:55:05
もともと.NET4はXP以降でしか動かん
350デフォルトの名無しさん:2010/05/06(木) 21:11:36
技術的には互換はあるが、マーケティング上の理由で動かないようにするMS。
351デフォルトの名無しさん:2010/05/06(木) 21:15:48
>>350
サポートのコストばかになんないもん。
Apple なんかほんとバッサリ切るし。
352デフォルトの名無しさん:2010/05/06(木) 21:15:49
注:Zガンダム以降に限る
353デフォルトの名無しさん:2010/05/06(木) 21:18:56
10年サポートしてくれれば充分だろ。
354デフォルトの名無しさん:2010/05/06(木) 21:31:52
なるほどさっきエラー吐いて動かなかったのでびっくりしたがやっぱ動かんのね
readme.txtには.net2.0以降が必要ですじゃなくて
.net2.0が必要ですと書く必要があるな
355デフォルトの名無しさん:2010/05/06(木) 21:35:23
ちなみに、どんなエラーを吐いたん?
356デフォルトの名無しさん:2010/05/06(木) 21:37:56
そっか。app.config で

<configuration>
<startup>
<supportedRuntime version="v4.0.30319" />
</startup>
</configuration>

とかってしないといかんのね。
357デフォルトの名無しさん:2010/05/06(木) 21:40:36
>>347
後方重視があるからここまで繁栄してるんだと思うよw
切り捨てする会社なら他も選択肢になるからねえw
358デフォルトの名無しさん:2010/05/06(木) 21:46:47
>>355
おぼえてないけど英語でたぶん.nef framework2.0が必要ですとかそんな感じのダイアログが出た

>356
それやれば動いたのか、どうせなら試せばよかったな、もう3.5sp1まで入れちゃった
359デフォルトの名無しさん:2010/05/06(木) 22:22:17
面倒くさいんで複数並べてるよ。
<supportedRuntime version="v4.0.30319">
<supportedRuntime version="v2.0.50727" sku="client"/>
<supportedRuntime version="v1.1.4322"/>
<supportedRuntime version="v1.0.3705"/>

ところで.NET4.0のコードプロファイルの場合 sku="client"の指定はいらなくなったんだっけ?
360デフォルトの名無しさん:2010/05/06(木) 22:23:35
というか、プロジェクトのプロパティにターゲットバージョンの設定があるやろが
361デフォルトの名無しさん:2010/05/06(木) 22:32:30
それは最低バージョンの指定だから違う
362デフォルトの名無しさん:2010/05/08(土) 15:29:50
キャストのとき、あるクラスのプロパティの型を取得して、その型にキャストするにはどう書けばいいでしょうか?

int a = 1;

public string b{ get; set; }

b = (string)a; // stringへのキャストの部分を、bの型を取得して指定したい
363デフォルトの名無しさん:2010/05/08(土) 15:51:01
日本語でおk
サンプルだとキャストじゃなくて型変換になってるようだが、
int型をstring型に変換する方法を聞いてるの?
364デフォルトの名無しさん:2010/05/08(土) 15:51:17
>>362
プロパティの型(のTypeオブジェクト)の取得
PropertyInfo.PropertyType

Typeオブジェクトの型へのキャスト
Convert.ChangeType

でも、君は単に何か勘違いしてるだけだと思うなw
コンパイル時に「あるクラスのプロパティの型」は確定してるんじゃないの?
だったら素直にその型へキャストするコード書くだけだと思うけど
365デフォルトの名無しさん:2010/05/08(土) 16:29:22
>>363
型変換とキャストて同じ意味だと思ってました
intをstring〜というのではありません。うまく伝えられなくて申し訳ないです

>>364
>コンパイル時に「あるクラスのプロパティの型」は確定してるんじゃないの?
>だったら素直にその型へキャストするコード書くだけだと思うけど

確かに確定しているのですが、ループで回したいので・・

正直、どう説明したらいいか自分でも分かってないので書いたものを上げました。
http://ideone.com/L97Ih 後出しになってしまいすいません。
詰まってるのは38行目です。
366デフォルトの名無しさん:2010/05/08(土) 16:37:55
PropertyInfo.SetValueの第二引数はどうせobjectじゃん
367デフォルトの名無しさん:2010/05/08(土) 17:16:39
>>366
わざわざキャストしなくてOKてことでいいのでしょうか..

キャストせずそのままで書いてみましたが、foreachが回らないんです。
コメントアウトすると回るんですが。
368デフォルトの名無しさん:2010/05/08(土) 17:21:07
だから、Convert.ChangeTypeじゃダメなの?
369デフォルトの名無しさん:2010/05/08(土) 17:25:36
> System.Reflection.PropertyInfo[] pInfoLists = properties.GetProperties
>   (System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
非staticなプロパティ一覧を取得してるのに、

> p.SetValue(null, ()(getRegistryValue(settingRootKey, settingSubKey, p.Name), null);
設定する段になってプロパティ設定する先のインスタンスがnullってどういうことさ。
370デフォルトの名無しさん:2010/05/08(土) 17:58:38
>>368-369
Convert.ChangeType(getRegistryValue(settingRootKey, settingSubKey, p.Name), p.GetType()) で試してみました

なぜか1回でループを抜けてしまう
p.SetValue(null, Convert.ChangeType(getRegistryValue(settingRootKey, settingSubKey, p.Name), p.GetType()), null);
p.SetValue(TestClass.testClass, getRegistryValue(settingRootKey, settingSubKey, p.Name), null);
p.SetValue(testClass, Convert.ChangeType(getRegistryValue(settingRootKey, settingSubKey, p.Name), p.GetType()), null);

ダメ元でやって無限ループ
p.SetValue(TestClass.Settings, Convert.ChangeType(getRegistryValue(settingRootKey, settingSubKey, p.Name), p.GetType()), null);
p.SetValue(TestClass.Settings, getRegistryValue(settingRootKey, settingSubKey, p.Name), null);
371デフォルトの名無しさん:2010/05/08(土) 19:01:03
p.GetType() == typeof(PropertyInfo)

何がしたいんだ?ちゃんと、MSDN読めよ
372デフォルトの名無しさん:2010/05/08(土) 20:06:15
馬鹿にリフレクションを与えるな
373デフォルトの名無しさん:2010/05/09(日) 00:17:22
引数を書き換えるメソッドって作らないほうがいいんだっけ

void 書き換え(MyClass MC){
MC.val=20;
}

みたいな
374デフォルトの名無しさん:2010/05/09(日) 02:33:35
それって引数を置き換えてるの?
375デフォルトの名無しさん:2010/05/09(日) 04:10:38
おそらく、ガイドラインにあるref/out使うなという話しのことじゃないのか
376デフォルトの名無しさん:2010/05/09(日) 04:19:46
>>373
そういうことやると混乱を招くには招くけど、OOP ってオブジェクトの状態が書き換わっちゃうもんだからねぇ。

MC の中身を書き換えられたくないんなら、MyClass を immutable に作っておくべき
プロパティを全部 get だけにして、コンストラクターでしかメンバーの初期化しないようにしとく)。

MyClass が単純なデータを表すものなんだったら immutable に作っておくこと推奨。
本質的に中身がコロコロ変化するようなものなんだったら、メソッドの中で書き換わることはしょうがない。
377デフォルトの名無しさん:2010/05/09(日) 06:53:01
オブジェクトの書き換えはそんなに前じゃないここか初心者で
すでに質問もでてて理想のコードがでてたような気がする
ただし、数値型を方みてごにょごにょするコードだったけど
378デフォルトの名無しさん:2010/05/09(日) 12:26:27
ごにょごにょとか気持ち悪い言葉遣いだなw
ご〜にょご〜にょごにょヲタクの子〜
379デフォルトの名無しさん:2010/05/09(日) 23:49:45
int.MaxValueがint型ってどういうこと
380デフォルトの名無しさん:2010/05/09(日) 23:51:32
intの最大値がintより大きかったらまずいだろ。
381デフォルトの名無しさん:2010/05/10(月) 00:02:50
>>379
上界(inferimum)ならともかく、最大値が int で何かまずい?
382デフォルトの名無しさん:2010/05/10(月) 00:54:03
上界(upper bound)
下界(lower bound)
上限(supremun)
下限(infimun)
383デフォルトの名無しさん:2010/05/10(月) 01:16:18
>>382
いや、ポイントはそこじゃなくて・・・
といいたいけど、要所で単語間違えた自分も悪いな。
384デフォルトの名無しさん:2010/05/10(月) 10:25:26
MemoryMappedFileてどんなケースで有効な使い方ができるの?
385デフォルトの名無しさん:2010/05/10(月) 10:40:25
マルチスレッドとか
386デフォルトの名無しさん:2010/05/10(月) 10:45:16
>MemoryMappedFile
こんな機能が.net4.0から標準で入るんだね

これって読み込みキャッシュとしては当たり前すぎる機能だけど
書き込みとか変更かけてもOSなりクラスなりがやってくれるので
あればかなり便利だよね
387デフォルトの名無しさん:2010/05/10(月) 12:32:12
便利そうだな。
自前で作ったやつを置き換えようかどうしようか・・・
388デフォルトの名無しさん:2010/05/10(月) 12:53:59
APIのMemoryMappedFileとの整合性はあるんだろうか
389デフォルトの名無しさん:2010/05/10(月) 13:02:19
>>385
あるファイルのReadとかを
物理ファイルから各スレッドが読み出しを行うのではなく
メモリマップドファイルから各スレッドが読みだすってこと?
390デフォルトの名無しさん:2010/05/10(月) 13:05:34
マルチスレッドでどう使うのかはわからんが、プロセス間通信って言えば分かるかな
391デフォルトの名無しさん:2010/05/10(月) 13:06:19
>>389
そうみたいだね
まあ直接読みにいくよりはアクセスロスを減らせるんじゃないかな?
392デフォルトの名無しさん:2010/05/10(月) 13:12:00
>>390
内部的な動きってどうなってるんだろう

ページに対する変更があった場合はストレージへのフラッシュを
行うスレッドとかがいるんだろうか?

フラッシュをメインスレッドでやってると意味ないだろうし
393デフォルトの名無しさん:2010/05/10(月) 13:14:59
>>388
メンバにSafeHandleがあるから単なるラッパーだろう
394デフォルトの名無しさん:2010/05/10(月) 13:21:48
>>392

メモリマップドファイルって、大抵はファイル使わないでメモリ空間で使うっぽい

ファイル使う場合はどうなんだろうな
395デフォルトの名無しさん:2010/05/10(月) 13:31:59
ファイルへはファイルマッピングオブジェクトを明示的にフラッシュしない限り遅延書き込みされる
アクセスはビューを介して行われるので、変更のあったビューだけ記録しておけば現在値を返せるようになっている
396デフォルトの名無しさん:2010/05/10(月) 13:39:47
>>395
じゃああれか
専ブラのようにちまちましたデータを扱うけど最終的にアプリ終了時に
全部書き込まれてればいいような場合だとメモリマップドは有効かな?
397デフォルトの名無しさん:2010/05/10(月) 13:56:30
いやいやいや、、、
メモリマップドファイルってのはメモリ上にエリアを確保して、そのエリアに自分で名前を付ける。
その名前がわかってればどのアプリからでも自由に読み書きできる、って仕組みだから、
物理ドライブに対するディスクキャッシュとはちょっと違うぞ。
ファイルが1つしかないRAMディスクって考えた方がイメージとしては近い。
398デフォルトの名無しさん:2010/05/10(月) 14:17:56
いやいやいや、、、
それは直接ファイルを指定しないからそういうふうに動くように見えるだけだ。
そもそも厳密には、メモリ上に確保するというよりページングファイル上に確保する。
399デフォルトの名無しさん:2010/05/10(月) 14:21:01
>>397
アクセス用の名称さえちゃんとわけておけば複数使えるんじゃないの?
使い方次第では自前でbyte配列に入れてどうこうするより便利そうじゃん
400デフォルトの名無しさん:2010/05/10(月) 14:27:46
下手な比喩ごっこほど有害なものはない
401デフォルトの名無しさん:2010/05/10(月) 14:31:59
いやいやいやいやいやいやいやいやいや、、、、、、、、、

えっ
402デフォルトの名無しさん:2010/05/10(月) 14:47:36
ところでさ
MS製品はなんでインストール先ドライブをC以外にさせてくれないんだ?
ユーザーの自己責任でDとかにさせてよ
403デフォルトの名無しさん:2010/05/10(月) 14:49:21
カスタムインストール選べばたいてい選べるだろ
404デフォルトの名無しさん:2010/05/10(月) 14:49:33
自己責任でいいならファイル移動させて
パスつなぎ直せばいいんじゃない?
405デフォルトの名無しさん:2010/05/10(月) 14:51:36
>>403
選べるのもあるけど.netの基礎部分とかはCじゃないと入らないとか
いろいろあるのよ
406デフォルトの名無しさん:2010/05/10(月) 15:20:08
System32にゴニョゴニョしてるんだから無理というもの
407デフォルトの名無しさん:2010/05/10(月) 15:59:48
読み間違えてるひと多いみたいだから指摘しておく
x メモリマップドファイル
o メモリマップトファイル
408デフォルトの名無しさん:2010/05/10(月) 16:00:59
>>402
そもそもいつまでもOSがドライブレター依存なのをなんとかして欲しいんだがw
409デフォルトの名無しさん:2010/05/10(月) 16:05:06
>>408
最近のWindowsはダイナミックボリュームにすれば
ハードディスクのパーティションからドライブ名ではなく
ディレクトリ名にマウント出来るようになってる

>>402
どうしてもCの容量が足りなくなって困るときは
C:\Program Files\Hoge 以下全部を
別のパーティションに割り当てていけばいい
410デフォルトの名無しさん:2010/05/10(月) 16:32:05
あれ
XP Homeってダイナミックボリュームできないとか調べるとでてくるんだが
管理機能使うとマウントできるなw
これは違うんだっけ?
411デフォルトの名無しさん:2010/05/10(月) 16:36:06
いまどきHDD不足で悩むようなしょぼPCで開発すんなよ
412デフォルトの名無しさん:2010/05/10(月) 17:28:25
こんにちは。
VisualC#2008で開発しています。
pictureboxに表示している画像をダブルクリックで180度回転して、おなじpictureboxに表示するにはどうしたらよいでしょう?
private void pictureBox_MouseDoubleClick(object sender, MouseEventArgs e){
PictureBox pictureBoxnew = sender as PictureBox;
Graphics g = pictureBoxnew.CreateGraphics();
g.RotateTransform(180F);
g.DrawImage(pictureBoxnew.Image, new Rectangle(0, 0, pictureBoxnew.Image.Width, pictureBoxnew.Image.Height));
g.Dispose();
}

とか、
private void pictureBox_MouseDoubleClick(object sender, MouseEventArgs e){
PictureBox pictureBoxnew = sender as PictureBox;
Bitmap rotatebmp = new Bitmap(pictureBoxnew.Image);
rotatebmp.RotateFlip(RotateFlipType.Rotate180FlipNone);
pictureBoxnew.Image = rotatebmp;
rotatebmp.Dispose();
}
と試しているのですが、なかなかおなじpictureBoxに表示できません。
よろしくご教示お願いします。
413デフォルトの名無しさん:2010/05/10(月) 17:32:18
VisualC#2010の導入方法について教えてください。
現在、.NET1.1、2.0、3.0、3.5とそれぞれのサービスパック、VisualC#2008が入っています。
このうち、削除する必要があるものはありますか? or 削除したほうがいいものはありますか? or 削除してもよいものはありますか?
ご意見お聞かせください。
414デフォルトの名無しさん:2010/05/10(月) 17:37:02
HTMLを動的に生成するのに良い方法はありますか?

メインPCで簡易ローカルサーバ?(2010のヘルプとかkkcaldのような)を立て
自宅LAN内のクライアントからちょっとした確認と操作をできるようなツールを作ろうと思っています。
HttpListenerを使えば比較的簡単に作れるのを確認したのですが
HTMLを動的に生成するのが結構面倒くさそうです。
今はStringBuilderを使い、生のHTMLを直接作っています。

IIS入れてWeb Developer+ASP.NETにするのが開発は一番楽そうですが
そこまで大袈裟な運用をする予定はいまのところないので。
415デフォルトの名無しさん:2010/05/10(月) 17:38:31
xml+xslt
416デフォルトの名無しさん:2010/05/10(月) 17:39:11
>>413
別に消す必要はないし消した方がいいものもないと思う
.NET4はランタイムから変わってるから
.NET4でしか作らないのなら全部消しても良かったような
417デフォルトの名無しさん:2010/05/10(月) 17:39:32
>>412
pictureBox.ImageをRotateしてpictureBox.Invalidateで再描画要求とか

>>413
別に削除しなくていいし数十Mぐらいけちけちするな
HDD容量に心底困ってるならVC#2008からだけど
それならマイドキュメントとかどうでもいいデータを適当に外部に移動した方がいい
418デフォルトの名無しさん:2010/05/10(月) 17:40:51
>>413
なし、なし、あり

2008は消してもいいけど2010のVSが読めるとは限らない
読めると思うけど、バグがないとも言い切れない

.NET使うのは別にVSに限らないからこの話の流れで消すのは不適切だろう
419デフォルトの名無しさん:2010/05/10(月) 17:41:10
>>414
簡易でも自分でHTTPd作る方がよほど大袈裟な気がせんでもない
420デフォルトの名無しさん:2010/05/10(月) 17:47:01
>>417
ありがとうございます。
できました。
421デフォルトの名無しさん:2010/05/10(月) 18:00:12
このスレもRotateFlipしっちゃうぞ★
422デフォルトの名無しさん:2010/05/10(月) 18:10:27
やってみろよこの野郎ッッッッッッッッッッッッッッッッッッッッ!!
423デフォルトの名無しさん:2010/05/10(月) 19:28:19
妙なテンション
424デフォルトの名無しさん:2010/05/10(月) 19:29:41
classの中に入ってるのがゴローバル変数
メソッドに入ってるのがローカル変数なの?

class Sample{
int a;
void func(){
int b;
}
}

この例だとaがゴローバル変数、bがローカル変数
って感じ?
425デフォルトの名無しさん:2010/05/10(月) 19:31:57
>>424
悪い事言わないから入門書嫁
426デフォルトの名無しさん:2010/05/10(月) 19:33:10
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ [ゴローバル変数]
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /
427デフォルトの名無しさん:2010/05/10(月) 19:35:23
ゴロ-バルでもプロパピーでも察してやれよ
428デフォルトの名無しさん:2010/05/10(月) 19:36:26
プロパピーww
ゴローバルじゃなくグローバルね
429デフォルトの名無しさん:2010/05/10(月) 19:47:05
ゴローニャ
430デフォルトの名無しさん:2010/05/10(月) 20:44:52
>>246
念のため言っとくけど解決方法が思い切り間違ってるぜ。
原因は .NET 4のClient Profile をターゲットにしてるからだ。
Client Profileを外せば問題なく参照設定できる。
もちろんClient Profileだけの環境では動作しなくなるけどな。

とはいえ、.NET 4はClient Profileでもフルでも対してサイズが変わらないので、
あえてClient Profileだけを入れるメリットはあまりないと思う。
431デフォルトの名無しさん:2010/05/10(月) 20:54:09
>>410
ややこしいことしないでもジャンクションで十分じゃん。
432デフォルトの名無しさん:2010/05/10(月) 20:58:16
>>414
System.Web.Hosting.ApplicationHost
433デフォルトの名無しさん:2010/05/10(月) 20:59:30
>>415
なるほど。XslCompiledTransformってのがあるんですね。考えてみます。
434デフォルトの名無しさん:2010/05/10(月) 21:27:22
>>429
スプーンおばさん乙
435デフォルトの名無しさん:2010/05/10(月) 21:40:51
質問です

ドラッグアンドドロップの処理を行うアプリを作成しています。
やりたいのは画面のテキストボックスに表示しているファイルパスをドラッグして、
MicrosoftExcel等の既成品の画面にドロップするとそのファイルを表示できるというものを作りたいんですが
ドラッグは出来てもドロップができません。(カーソルがドロップ不可の状態です)

ドロップされる側のアプリを作って確認したところドロップは出来てもDragEnterイベントにはDataObject型で渡されていないようでした。
あと、同じアプリ同士でドロップした場合は何故かきちんと渡されていました。

ドロップする側はMouseMoveイベント内でボタンが押されたらDoDragDropメソッドを作って、
その中にはDataObjectにパスを設定したものを渡しています

長くてすいません何かわかる方がいるなら教えていただきたいです
436デフォルトの名無しさん:2010/05/10(月) 21:44:02
> ドロップされる側のアプリを作って確認したところドロップは出来てもDragEnterイベントにはDataObject型で渡されていないようでした。
勘違いか変なことしてるかどっちかだ
437デフォルトの名無しさん:2010/05/10(月) 22:15:12
つまりドロップが上手くいっていないってことなんでしょうか?

ドロップする側はMouseMoveイベント内でDoDragDropメソッドにDataObjectとenumを渡すだけで良いのですか?
438デフォルトの名無しさん:2010/05/10(月) 22:19:53
C#でも、細かくWindowsの制御したいなら結局Win32の勉強必須なんだね。
なら最初からC++やったほうがよさそう
439デフォルトの名無しさん:2010/05/10(月) 22:22:18
受け取る側がどう解釈するかはまた別の問題だがね。
つかenumて。ちゃんと型名出してくれよ。

ま、なんにせよこれ以上は実際のソースがないとどうにもなんないな。
ソースがあってもどうにかなるとは限らないけど。おいらはOffice持ってないし。
440デフォルトの名無しさん:2010/05/10(月) 22:28:29
>>433
Linq to Xmlで作るのも手。
StringBuilderでHTML作るよりは数億倍良い。
441デフォルトの名無しさん:2010/05/10(月) 22:28:46
頭が凄く良いならC++からでも良い
そうでなければC#からがオススメ
442デフォルトの名無しさん:2010/05/10(月) 22:30:58
なんだその分類は
443デフォルトの名無しさん:2010/05/10(月) 23:02:18
void textBox2_MouseMove(object sender, MouseEventArgs e)
{
if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
{
IDataObject iData = new DataObject(DataFormats.FileDrop, "C:\\Documents and Settings\\Book1.xls");
DragDropEffects abc = textBox2.DoDragDrop(iData, DragDropEffects.Copy);
}
}

一応簡単なソースなんですがドロップする側はこれだけで十分なんですかね?
444デフォルトの名無しさん:2010/05/10(月) 23:09:15
FileDropはstring[]
445デフォルトの名無しさん:2010/05/10(月) 23:12:03
唖然
446デフォルトの名無しさん:2010/05/10(月) 23:12:22
くだらなすぎワロタ
447デフォルトの名無しさん:2010/05/10(月) 23:17:19
あ、すいませんありがとうございました
448デフォルトの名無しさん:2010/05/11(火) 07:34:11
クラスや構造体の配列を初期化する場合ってどうかけばいいんだろう
449デフォルトの名無しさん:2010/05/11(火) 09:41:41
クラスは何も悩むことないだろ
フィールドを直接初期化するなりコンストラクタでやればいい

構造体の配列の場合引数なしのコンストラクタでは初期化できない
適当に引数を与えてオーバーロードする
450デフォルトの名無しさん:2010/05/11(火) 10:10:57
つ Struct1 struct1 = new Struct1 { v1 = 1, v2 = 2 };

3.0以降かな

配列も型省略できるようになったんだ

string[] strs = new[] { "あ", "い" };;
451デフォルトの名無しさん:2010/05/11(火) 10:12:39
それの配列だからこうだ

Struct1[] structs = new[] { new Struct1 { v1 = 1, v2 = 2 }, new Struct1 { v1 = 3, v2 = 4 } };
452デフォルトの名無しさん:2010/05/11(火) 10:16:17
俺的には可読性悪すぎだろ と思う
453デフォルトの名無しさん:2010/05/11(火) 10:16:24
>>449>>450>>451
ありがとうございます。
454デフォルトの名無しさん:2010/05/11(火) 10:35:14
>>452
どっからみてもJava並みだよな
455デフォルトの名無しさん:2010/05/11(火) 12:51:10
クラスのときはオブジェクト初期化子使うけど
構造体に対してはコピーが発生するのがどうにも気持ち悪くて使ってない
>>451の場合はstructsへの代入がアトミックだからコピーしなくていい気がするけど
実際どんなコードにコンパイルされるんだろ
456デフォルトの名無しさん:2010/05/11(火) 17:48:20
多分C#の可読性ってVC#の機能含みで考えられてると思う
457デフォルトの名無しさん:2010/05/11(火) 18:04:25
(キリッ
458デフォルトの名無しさん:2010/05/11(火) 18:10:46
WindowsFormで、ウィンドウの枠を消しつつウィンドウのサイズをマウスで変えられるようにしたいです。
調べて見るとどうも一筋縄ではいかないようなのですが、

http://homepage3.nifty.com/midori_no_bike/CS/index.html?form.072
ここを見ると
// Note: 枠を消す別の方法として「 this.ControlBox = false ; this.Text = "" ; 」
// が存在する(マウスドラッグによる Form のリサイズも可能)。

また下の
// Note: Form の プロパティ FormBorderStyle が、Sizable または SizableToolWindow
// のものだけが、サイズ変更グリップの表示が可能。
// なお、FormBorderStyle が None でも、サイズ変更グリップを表示させた
// FormBorderStyle 状態から None へ変更した場合に限り、表示の継続が可能。

などを見る限り出来そうな感じがします。
しかし、書いてあるように設定してみましたがうまくいきませんでした。

枠線を消しつつウィンドウサイズを変更出来るようにすることは出来ますか?
459デフォルトの名無しさん:2010/05/11(火) 18:15:22
「オブジェクト」と「変数」は違うんですか?

Form frm = new Form();
があったとしたら
frmがオブジェクトですか?それとも変数?
460デフォルトの名無しさん:2010/05/11(火) 18:16:46
>>459
人それぞれかもしれないけど

frm自体はオブジェクト変数
new された段階でオブジェクト変数に実態が入る

とかじゃだめ?
461デフォルトの名無しさん:2010/05/11(火) 18:38:38
>>458
WM_NCHITTEST 関連で何とかなるかも
462デフォルトの名無しさん:2010/05/11(火) 19:16:15
>>461
http://bbs.wankuma.com/index.cgi?mode=al2&namber=25467&KLOG=47
ここでもそういうことが書かれてますね。
どうもC++をやってなかった人間なので、メッセージというのに少し抵抗があって避けたかったのですが、
やらなければいけないみたいですね。がんばってみます。
463デフォルトの名無しさん:2010/05/11(火) 19:48:31
初歩的なことで悪いんだが、C#でGUIつくろうと思ったらvisualC#でwindowsFormかWPF使って作ればいいんだよね?
464デフォルトの名無しさん:2010/05/11(火) 19:57:57
うん
465デフォルトの名無しさん:2010/05/11(火) 21:14:52
.NET FrameworkがいらないSilverlightというのもある
もともとWebのクライアント用の技術だけど最新版はWebを介さずにインストールできたりファイルアクセスもできたり
466デフォルトの名無しさん:2010/05/11(火) 21:24:05
それどこの Activex
467デフォルトの名無しさん:2010/05/11(火) 21:31:12
ActiveXコントロールの上で動く.NETだよ
Flashみたいなもん
ローカルにインストールして権限昇格モードにしない限りは厳しいセキュリティ制限があるので安全
468デフォルトの名無しさん:2010/05/11(火) 22:43:08
Flashに例えられると危なそうだけどな
469デフォルトの名無しさん:2010/05/11(火) 22:56:31
たかがメディアプレイヤーごときになんであれだけ穴を作り込めるのか不思議だ
470デフォルトの名無しさん:2010/05/11(火) 23:01:56
ネット上で直リン禁止な画像を作ったアプリにダウンロードさせたい場合どうしたらいいでしょうか?
C#上のウェブブラウザでHTMLごと表示して、キャッシュからコピーか画像をクリップボードに貼り付けて保存を考えているのですが
キャッシュの取得の仕方、画像のクリップボードへの貼り付け方がわかりません。

471デフォルトの名無しさん:2010/05/11(火) 23:04:52
もうすこしHTTPとHTNLの仕組みを勉強した方がいいんじゃないの

直リン禁止はリファラ、クッキー、hidden属性を見るくらいのパターンしかない
全部WebBrowserなんか使わずに対応できる
472デフォルトの名無しさん:2010/05/11(火) 23:16:34
C#でデータをPOSTしたいんですが
DOBONさんの所を参考にしてもうまくいきません。

POSTするデータの指定が悪いんだと思うんですが
HTMLがどんなデータをPOSTするか確認する方法はありませんか?
473デフォルトの名無しさん:2010/05/11(火) 23:18:25
Wiresharkとか

ソース晒した方が早いぞ
474デフォルトの名無しさん:2010/05/11(火) 23:18:59
>>471
リファラを設定することで無事ダウンロードできました!!
ありがとうございました!
475デフォルトの名無しさん:2010/05/11(火) 23:23:44
//POST送信する文字列を作成
string postData =
"v[date][Y]=" + dateTimePicker1.Value.ToString("yyyy") +
"&v[date][m]=" + dateTimePicker1.Value.ToString("MM") +
"&v[date][d]=" + dateTimePicker1.Value.ToString("dd") +
"&v[date][H]=" + comboBox1.Text +
"&v[date][i1]=" + comboBox3.Text +
"&v[date][i2]=" + comboBox4.Text +
"&v[title]=" + System.Web.HttpUtility.UrlEncode(((Form1)this.Owner).textBox2.Text, enc) +
"&v[body]=" + System.Web.HttpUtility.UrlEncode(((Form1)this.Owner).textBox1.Text, enc) +
"&v[abody]=" + System.Web.HttpUtility.UrlEncode(((Form1)this.Owner).textBox3.Text, enc) +
"&v[tpv_ps]=" + textBox2.Text +
"&v[abv_ps]=" + textBox3.Text +
"&ps=" + Pass +
"&id=" + ID +
"&cn=" + Nikki_ID;

Peps!日記にPOSTするデータですが…。
Peps!日記のソースも見ないと分からないですかね?
476デフォルトの名無しさん:2010/05/11(火) 23:26:56
application/x-www-form-urlencodedとかちゃんと指定してんの?
まずエンコードしてPOSTしてるのか怪しそうだが
477デフォルトの名無しさん:2010/05/11(火) 23:29:27
http://c.peps.jp/pc/new_diary.php?_ipn=pch
見た感じIDとPASS要求してるくらいだから普通にPOSTしてどうなるもんでもなさげ
ちゃんと認証から書け
478デフォルトの名無しさん:2010/05/11(火) 23:31:22
応答のステータスコードはなんと言ってるのか。
479デフォルトの名無しさん:2010/05/11(火) 23:36:20
>>476
DOBONさんのC#でPOSTの一番上を参照しているので
そこら辺は大丈夫です。

>>477
認証とは…?
480デフォルトの名無しさん:2010/05/11(火) 23:36:47
ログインしていないんじゃないの
481デフォルトの名無しさん:2010/05/11(火) 23:38:18
hidden使う直リン禁止ってどういうの?
482デフォルトの名無しさん:2010/05/11(火) 23:39:41
>>479
IDとパスワードをログインページのフォームが指定する通りにPOSTしてセッションクッキーを受け取ることですよ

と言われて理解できないなら諦めるべし
まだ早い
483デフォルトの名無しさん:2010/05/11(火) 23:42:34
ブラウザで認証を含めた通信中のログをWiresharkでとって研究しろ
それしか言えない

あとログは絶対晒すなよw
484デフォルトの名無しさん:2010/05/12(水) 00:12:11
Formを最大化して表示しているのですがWindowsキーやAlt+Tabで
他のプロセスに移動されたり出来ないようにするにはどうするのが良いですか?
Win32APIでキーボードフックする以外に方法があったら教えてください
485デフォルトの名無しさん:2010/05/12(水) 00:15:25
スクリーンセーバーにしてしまう
486デフォルトの名無しさん:2010/05/12(水) 00:38:53
>>484
KeyDownで
e.SuppressKeyPress = true;
とかやればいいじゃないの?試してないから出来るかわからないけど。
487デフォルトの名無しさん:2010/05/12(水) 00:44:52
そんなオレオレなアプリが2つ以上あったらどうなっちゃうことやら。
タスクバーがチカチカしまくり千代子ってか
488デフォルトの名無しさん:2010/05/12(水) 00:58:35
AAAAAのような文字列があった時に、AAABAのように右から2番目のAだけを置換することって出来ますか?
開始から何文字目というような指定ではなく、どんな文字列でもとにかく右から2番目だけ置換というふうにしたいのですが・・
489488:2010/05/12(水) 01:02:00
すみません読み返してわかりにくかったので例を・・
右から2番目のAをBに置換
ABCABC→BBCABC
AAAAAB→AAABAB
みたいな感じです
490デフォルトの名無しさん:2010/05/12(水) 01:10:22
ToCharArrayして最後から走査して置換すれば
491デフォルトの名無しさん:2010/05/12(水) 01:16:42
位置決めうちなら走査も必要ないな
492デフォルトの名無しさん:2010/05/12(水) 01:17:53
位置は決め打ってないだろ
493デフォルトの名無しさん:2010/05/12(水) 01:22:21
糞グラマーが書いた

string 対象文字列 = "AAAAAAA"; // 調べる文字列
char cTok = 'A'; // 対象文字
char cRp = 'B'; // 置換文字
int iPos = 2; // 後ろから2文字目

if ( 対象文字列[対象文字列.Length - iPos].CompareTo(cTok) == 0 )
{
 対象文字列[対象文字列.Length - 2] = cRp;
}

koredeii?
494デフォルトの名無しさん:2010/05/12(水) 01:34:25
>>489
string 置き換え前 = "ABCABC";
string 置き換え後 = "";
if (置き換え前.Length >= 2)
{
StringBuilder sb = new StringBuilder(置き換え前);
置き換え後 = sb.Replace('A', 'B', 置き換え前.Length - 2, 1).ToString();
}
でもできそう。試してないけど・・・
495デフォルトの名無しさん:2010/05/12(水) 01:40:42
正規表現とか

string 置き換え前 = "ABCABC";
string 置き換え後 = new Regex(@"A(?=.*A)", RegexOptions.RightToLeft).Replace(置き換え前, "B", 1);
496488:2010/05/12(水) 01:57:56
レス下さった皆様ありがとうございます
無事望んだ通りの置換が出来ました
497デフォルトの名無しさん:2010/05/12(水) 05:42:17
>>487
おやじギャグ寒い
498デフォルトの名無しさん:2010/05/12(水) 06:51:10
右から2番目とか言いながら提示したサンプルが左から2番目
寒気がする
499デフォルトの名無しさん:2010/05/12(水) 07:52:39
>>488,489
もう解決したようなのでどうでもいい話だが、
var str = "AAAAAA"; として、

a.Substring(0, a.Length-2)+"B"+a[a.Length-1]
だな。これくらいは1行でできる。
500デフォルトの名無しさん:2010/05/12(水) 07:54:04
ああ、aはstrで置き換えてね。手元では変数aでテストしていた。
501デフォルトの名無しさん:2010/05/12(水) 09:09:56
>>493,494,499は質問者の意図と違うんじゃないの?
それだと、文字列の後ろから2番目の文字が置換されるだけだよ
502デフォルトの名無しさん:2010/05/12(水) 09:10:19
意図分かって無い奴多すぎだろw
503デフォルトの名無しさん:2010/05/12(水) 09:12:10
string str = "ABCABC";
bool looked = false;
for(int i=str.length-1;i>=0;i--)
{
if( str[i] == 'A' )
{
}
504デフォルトの名無しさん:2010/05/12(水) 09:13:13
とちゅうでいったぁあああああ

もういいやめんどい
505デフォルトの名無しさん:2010/05/12(水) 09:17:24
つうかめんどくせぇから

長さのチェック
元のテキストから後ろ2文字までを切り出す
1文字置換するべき文字をつける
元のテキストから最後の1文字だけをくっつける

だけでいいだろ
SubStringとLengthだけあれば十分だ
506デフォルトの名無しさん:2010/05/12(水) 09:21:07
馬鹿ばかり
507デフォルトの名無しさん:2010/05/12(水) 09:44:25
>>501
だって質問者自身が>499のように、
右から2番目の文字を置換するだけでいいって言ってるんだもの。
508デフォルトの名無しさん:2010/05/12(水) 09:50:39
>>489の例見れば右から2番目の文字じゃないのは一目瞭然だろ・・・
509デフォルトの名無しさん:2010/05/12(水) 09:53:04
放っておけ
今までに出した例で出来なかったらもう一回質問してくるでしょ
510デフォルトの名無しさん:2010/05/12(水) 10:04:40
アホな答えばかりだったからあきらめてお礼言って他行ったと思われるw
511デフォルトの名無しさん:2010/05/12(水) 11:00:50
var str = "AAAAAB";
var str2 = "";
var count = 0;
for (var i = str.Length - 1; i >= 0; i--) {
if (str[i] == 'A') {
count++;
}
if (count == 2) {
str2 = str.Remove(i, 1).Insert(i, "B");
break;
}
}
泥臭く書いてみた。もっと短かく書けたらよろしく
512デフォルトの名無しさん:2010/05/12(水) 11:13:19
>>508

ではなんなのだ?
右から2番目と言って、全然違う例出されても困る
513デフォルトの名無しさん:2010/05/12(水) 11:14:08
よーしパパもベタベタに書いちゃうぞ
エラーチェックは無いけど

string str = "AAAB";
int len = str.Length;
string res = str.Substring(0, len - 2) + "B" + str.Substring(len - 1);
514511:2010/05/12(水) 11:17:43
よくみたら495でできてるし、これが一番いいな
515デフォルトの名無しさん:2010/05/12(水) 11:31:55
>>512
文字列中のAの中で右から2番目に出現するAをBにする

だよ
516デフォルトの名無しさん:2010/05/12(水) 11:33:57
迷走ぶりにワロタ
517デフォルトの名無しさん:2010/05/12(水) 11:33:57
>>512
A @
ABCABC→BBCABC

右から数えて2回目に出てくるA
518デフォルトの名無しさん:2010/05/12(水) 11:34:57
日本語初心者スレだな。
519デフォルトの名無しさん:2010/05/12(水) 11:36:19
>AAAAAB→AAABAB

この点だけ見ても>>499の回答は導かれませんな
酔ってんのかおめーは
520デフォルトの名無しさん:2010/05/12(水) 11:37:43
498のレスに悪寒を覚えた
521デフォルトの名無しさん:2010/05/12(水) 11:41:13
その辺にしておきなさい。
522デフォルトの名無しさん:2010/05/12(水) 11:45:25
おい!
ここは初心者が初心者にレスするスレだぞ気にしたら負けだ

俺? へっぽ子PGですよ
523デフォルトの名無しさん:2010/05/12(水) 12:03:59
いくらなんでも低レベル過ぎるぞ
495先生以外のレスはなかったことにしとけ
524デフォルトの名無しさん:2010/05/12(水) 17:44:30
あれ、C#のジェネレータって実行を途中で中断できないのかな。
コルーチン的に。
525デフォルトの名無しさん:2010/05/12(水) 17:45:44
yield break; とかそういうことではない?
526デフォルトの名無しさん:2010/05/12(水) 20:48:35
C#のyieldはまんまコルーチンだよ
コンパイラが勝手にステートマシンを作ってくれる
527デフォルトの名無しさん:2010/05/12(水) 20:55:45
コルーチンなんて単語初めて聞いた

ぐぐってみたが便利そうな機能だなー
こういうことも参考書とかに書いてくれればいいのにな
528デフォルトの名無しさん:2010/05/12(水) 20:58:15
コルーチンの一種
529デフォルトの名無しさん:2010/05/12(水) 21:01:57
名古屋名物だよな
530488:2010/05/12(水) 21:18:13
なんか荒れてるみたいですみません
文字列にある指定した文字の中で右から2番目にあるものという意味でした
うまく説明できずにすみません(↑もちゃんと説明出来てるか・・
>>495氏のRegexを使って解決することが出来ました
たくさんのレスありがとうございました
531デフォルトの名無しさん:2010/05/12(水) 21:21:29
>>529
それはコーラン
532デフォルトの名無しさん:2010/05/12(水) 21:22:44
>>531
断食して来い
533デフォルトの名無しさん:2010/05/12(水) 22:02:06
>>532
それはラマダーン
534デフォルトの名無しさん:2010/05/12(水) 22:45:35
コチーン
535デフォルトの名無しさん:2010/05/12(水) 23:09:20
10回連続で言ってみ
536デフォルトの名無しさん:2010/05/13(木) 02:00:02
チンコーチンコーチンコーチンコーチンコーチンコーチンコーチンコーチンコーチンコー
537デフォルトの名無しさん:2010/05/13(木) 13:05:07
名古屋チンコー
538デフォルトの名無しさん:2010/05/13(木) 13:05:51
「じゃあここは?」
539デフォルトの名無しさん:2010/05/13(木) 13:30:57
こーひー
540デフォルトの名無しさん:2010/05/13(木) 14:20:27
やったーまんこーひーらいたー
541デフォルトの名無しさん:2010/05/13(木) 14:35:39
すかぽんちれさく
542デフォルトの名無しさん:2010/05/13(木) 14:37:14
Formアプリで全ての全テキストボックスをロードした後特定のテキストボックスをアクティブにして入力待機状態にするにはどうすればいいですか?
543デフォルトの名無しさん:2010/05/13(木) 14:40:20
テキストボックスをロードって何?
最初にフォーカスが当たってるコントロールを設定するのはActiveControlで
544デフォルトの名無しさん:2010/05/13(木) 14:49:41
>>542
TextBox.Select() か Shown イベントで TextBox.Focus() とかいう話?
545デフォルトの名無しさん:2010/05/13(木) 14:50:31
>>542
Form.Shownイベントでフォーカスを設定してやればいいんじゃね?
546デフォルトの名無しさん:2010/05/13(木) 14:51:08
テキストボックスを4つ並べて4個目をアクティブにした場合
FormのLoadとShownのどちらも期待通りの動作
this.ActiveControl = textBox4;

FormのShownの時期待通りの動作
textBox4.Focus();
547デフォルトの名無しさん:2010/05/13(木) 14:51:20
>>544
うは……。1分負け。おみそれしました。
548デフォルトの名無しさん:2010/05/13(木) 15:14:34
できましたありがとう!
549デフォルトの名無しさん:2010/05/14(金) 08:34:48
てす
550デフォルトの名無しさん:2010/05/15(土) 09:21:48
BandObjectを使い、IEのツールバーを作ってみたいと考えています。
下記のように参考にできそうなサイトでは新規作成の画面で
「Windowsコントロールライブラリ」
を選択するよう記載しているのですが、VS2010ではコントロールライブラリがありません。
どのような回避策をとればいいのかわからず困っております。
http://codezine.jp/article/detail/58
http://mobiquitous.com/programming/ietoolbar.html
ご教授願えませんでしょうか。
551デフォルトの名無しさん:2010/05/15(土) 09:55:53
むり
552デフォルトの名無しさん:2010/05/15(土) 22:30:11
「VS2010では」じゃなくて「VC#2010EEでは」じゃね?
コンソールアプリケーションあたりで取り敢えずプロジェクト作って
既存のファイル消してユーザコントロール追加して
プロジェクトの出力をクラスライブラリにすればいいんじゃないかな
553デフォルトの名無しさん:2010/05/15(土) 23:07:08
ご教授をご教示って言い直せば願いを叶えてやる
554デフォルトの名無しさん:2010/05/15(土) 23:10:37
なんでコンソールなんだよ
EEにもクラスライブラリプロジェクトはある
555デフォルトの名無しさん:2010/05/15(土) 23:22:53
あ、そうなんか
556デフォルトの名無しさん:2010/05/16(日) 01:58:40
あ、そうなんよ
557デフォルトの名無しさん:2010/05/16(日) 12:53:00
いまどきコンソールってw
558デフォルトの名無しさん:2010/05/16(日) 12:56:37
俺はよく使うよ。
559デフォルトの名無しさん:2010/05/16(日) 12:58:46
マジカ!!
結構使う人多いのかなぁ…・
560デフォルトの名無しさん:2010/05/16(日) 14:22:15
.batなんかよりいろんな事出来るし
GUIなんか必要ないプログラムはコンソールの方が便利だが
561デフォルトの名無しさん:2010/05/16(日) 17:30:49
>>559
君は変人か?
普通使うっしょ
562デフォルトの名無しさん:2010/05/16(日) 17:57:56
そもそも GUI ってちゃんと作ろうとすると面倒くさいしね。
563デフォルトの名無しさん:2010/05/16(日) 19:46:30
http://dotnetzip.codeplex.com/
ここのライブラリを使ってるかたいますかね?

解凍してそのままファイルを再圧縮する際に登録はうまくいくんだけど
saveでこけるんだけどどうすればいいんだろw
564デフォルトの名無しさん:2010/05/16(日) 20:22:17
簡単なのだとGUIの作成の方が本体より時間かかったりしてね
特にC#は…
565デフォルトの名無しさん:2010/05/16(日) 20:24:56
VC#はGUIが簡単に作れるトップクラスの環境だろ
566デフォルトの名無しさん:2010/05/17(月) 05:48:33
お仕着せのGUIならすぐ作れるけど、ちょっと凝ったことをやろうとするととたんにハマる
567デフォルトの名無しさん:2010/05/17(月) 12:11:44
凝ったGUIってたいてい使いにくいよね
568デフォルトの名無しさん:2010/05/17(月) 12:26:11
569デフォルトの名無しさん:2010/05/17(月) 14:17:00
必要な項目が判り易く並んでいればいいだけ
その必要な項目がツリー的に広がるのであれば難しくなってきたりするよね・・・
570デフォルトの名無しさん:2010/05/17(月) 14:46:17
WPFさんはレイアウト得意らしいけどその辺どうなの
571デフォルトの名無しさん:2010/05/17(月) 14:47:50
>>570
htmlのCSSみたいな感じでGUIをいじれる
572デフォルトの名無しさん:2010/05/17(月) 15:01:16
>>566は従来までのC#なら正しい。まさにそれがC#の欠点の一つだった。
だが、今はWPFがあるので、凝ったGUIを自由に作ることができる。
逆に、WPFでも作れないようなGUIがあるなら教えて欲しいくらいだ。

なお、凝ったGUIはたいてい使いにくいという意見については、
使いやすさに重点を置かずに凝るから使いにくくなるというだけの問題だ。
逆に、凝ったほうが使いやすくなる例は、フォーカス位置の記憶、自動補完、
普通はツリー表示できないアイテムのツリー表示などたくさんある。
573デフォルトの名無しさん:2010/05/17(月) 18:00:27
文字列を正規表現で検索して
それを条件に合わせて置換というのをやりたいんですが

例:ABACDからB、C、Dを検索してE、F、Gに置換→AEAFG

string str = "ABACD";
Regex reg = new Regex("B|C|D");
MatchCollection mc = reg.Matches(str);
foreach(Match m in mc) str = reg.Replace(str, func(m.Value), 1, m.Index);

string func(string s)
{
if (s == "B") s = "E";
if (s == "C") s = "F";
if (s == "D") s = "G";
return s;
}

これだと同じ検索をMatchesとReplaceで2回やってて無駄な感じがします・・・
検索がヒットするたびにfuncを実行して置換するようなやり方はないでしょうか
574デフォルトの名無しさん:2010/05/17(月) 18:23:03
その何倍もstring生成してるくせにそんなこと気にすんなよ
575デフォルトの名無しさん:2010/05/17(月) 18:29:37
>>573
検索文字列がAB、AAで置き換え文字列がそれぞれCA、DBの時、
前から順に発見しだい置き換えると

ABACDの1文字目にABがあるのでCAACDに
CAACDの2文字目にAAがあるのでCDBCDに

ってなるけど良いのかしら

Match→Replaceの方では、この2回目の置き換えが発生しない
(ABACD→CAACDとなるだけ)
576デフォルトの名無しさん:2010/05/17(月) 18:37:19
>>575
その程度は置き換えた部分スキップするようにすればええのじゃあないか?

結局のところ回答は「そんなもん無い」だから自分でロジック書かないといかんが。
もしくは気にしないか、だな。

100万回実行されるメソッドでもなければ気にしないの選択肢を薦めたい。
577デフォルトの名無しさん:2010/05/17(月) 19:34:40
というか Regex.Replace に MatchEvaluator とる
オーバーロードがあるだろ。それ使えよ
578デフォルトの名無しさん:2010/05/17(月) 19:40:04
凝ったGUIで使いにくい代表例はVista、7、アプリではWMP。
579デフォルトの名無しさん:2010/05/17(月) 20:34:28
iTunesもな
580573:2010/05/17(月) 21:15:26
すいません、MatchEvaluatorってのは知りませんでした・・・
これ使ったらReplace1回だけでいけますね

str = reg.Replace(str, new MatchEvaluator(func));

string func(Match m) { string m.Value = s; …… return s; }
581デフォルトの名無しさん:2010/05/17(月) 22:17:25
ここが逆だった
×string m.Value = s;
○string s = m.Value;
582デフォルトの名無しさん:2010/05/17(月) 23:29:31
>>580
C#3.0以上ならラムダ式、2.0なら匿名メソッド使おう。
583デフォルトの名無しさん:2010/05/18(火) 00:56:18
ラムダ式はならべく使わないほうがいい。
584デフォルトの名無しさん:2010/05/18(火) 01:11:50
なんで?
585デフォルトの名無しさん:2010/05/18(火) 01:24:43
>>583
お前のとこアレだろ、社内規約で条件演算子( ? : )禁止とかされてるクチの会社だろww
586デフォルトの名無しさん:2010/05/18(火) 02:06:56
”ら”と”る”はなるべく間違わない方がいい
587デフォルトの名無しさん:2010/05/18(火) 02:10:17
俺がわからないから使わないほうがいい
588デフォルトの名無しさん:2010/05/18(火) 02:10:39
ラムダ式使う奴って馬鹿が多い。
589デフォルトの名無しさん:2010/05/18(火) 02:15:58
必ずしも否定できない
590デフォルトの名無しさん:2010/05/18(火) 03:33:38
使っていいだろ。
外部変数のキャプチャを理解してない馬鹿に使わせるべきではないとは思うが。
591デフォルトの名無しさん:2010/05/18(火) 04:04:03
いまだにラムダ式を使えない馬鹿が多いのか。
592デフォルトの名無しさん:2010/05/18(火) 04:54:10
いまだにラムダ式を使えない天才の方が多い。
593デフォルトの名無しさん:2010/05/18(火) 05:17:49
そもそもラムダ計算の概念が生まれたのって何十年も前じゃないか。
関数型言語に触った事すらない天才ねぇ…?それって何の天才なの?
594デフォルトの名無しさん:2010/05/18(火) 05:31:05
馬鹿は知らなくていいよ
595デフォルトの名無しさん:2010/05/18(火) 06:55:40
名前が悪いかもねぇ。
ラムダ式とか言うからラムダ計算とか関数型言語とか過剰に連想して、アレルギー起こす人がいるような。
そんなたいそうなもんでもないのに。
596デフォルトの名無しさん:2010/05/18(火) 08:17:51
お前ら匿名メソッド使わないのかよ
597デフォルトの名無しさん:2010/05/18(火) 08:57:45
別にラムダ使わなくても十分普通に開発できるしな
ヘタに使われると逆に読みにくいいんだよ
598デフォルトの名無しさん:2010/05/18(火) 09:24:07
少なくとも匿名メソッド使う場面ではラムダ使っていいだろ
599デフォルトの名無しさん:2010/05/18(火) 10:35:31
LINQ(ラムダ式利用前提)なしじゃもうプログラム書けない・・・
600デフォルトの名無しさん:2010/05/18(火) 10:53:36
20年前のポインタに似てるな
"ラムダの使い方"じゃなくてこういう場面ではラムダを使ってこんな風に書けるって説明が
……って普通に転がってるな やっぱ似てないわ
601デフォルトの名無しさん:2010/05/18(火) 11:09:01
ラムダ式はなんとなく速記と同じ匂いを感じる
議会速記もはっきり言って無駄
602デフォルトの名無しさん:2010/05/18(火) 14:22:54
ラムダ式でちゃちゃっと書いて、適当なタイミングでリファクタすればいいだけ
アドインの機能を使えば、「匿名メソッドに名前を付ける」で終了
603デフォルトの名無しさん:2010/05/18(火) 14:24:45
納品した後だったらたとえリファクタでもあんまりしたくねぇな・・・
604デフォルトの名無しさん:2010/05/18(火) 14:28:58
どうでもいいよ
605デフォルトの名無しさん:2010/05/18(火) 14:30:47
と、大学生が申しております。
606デフォルトの名無しさん:2010/05/18(火) 14:34:33
いや、納品する前にリファクタしろよw
てか、それは「適当なタイミング」を逃してるだけじゃん
607デフォルトの名無しさん:2010/05/18(火) 14:36:49
ちゃっちゃと書くんなら最初からちゃんと書くわ
デスマで時間が無い時以外ありえねぇ

そしてそのコードはそのままそのソフト終焉の時か、大規模改修まで放置されるのさorz

608デフォルトの名無しさん:2010/05/18(火) 14:37:26
expressionタイプのラムダはどんどん使っていいと思うよ。
statementタイプの場合はメンバ関数のdelegateにしたほうが見やすいケースが多い。
609デフォルトの名無しさん:2010/05/18(火) 16:27:01
どうでもいいけど、ちゃっちゃとって何?方言?
610デフォルトの名無しさん:2010/05/18(火) 16:30:53
手早く とかになるかな
何気なく使ってるけど方言なのかな?

@関西住みより
611デフォルトの名無しさん:2010/05/18(火) 17:33:10

簡単な文字列をユーザーにGUIから打ち込んでもらい、
その文字列、例えば(a+b)*c
などを数式として、計算して、計算結果を表示する様なプログラムを作りたいのですが、
文字列から数式にスムーズに返還する便利な方法とかってありますでしょうか?
それとも、そんなの無くて、文字列を解釈して、計算するプログラムを自分で作るしか
無いのでしょうか?
だとしたら、かなり大変ですよね。特にかっこの辺り。
こんなプログラム俺に作れるか?とか思ったりしますが。
とにかく知ってる人教えてください。
612デフォルトの名無しさん:2010/05/18(火) 17:35:20
例えばInt型なら
int.TryParse
とかでしらべてみては?

小数とかいるならdecimal.TryParse
613デフォルトの名無しさん:2010/05/18(火) 17:38:21
>>612
それは数字だけの話だよね

数式全部を文字列で与えてそれを解析して計算する感じか
ポケコンなんかの関数電卓みたいな感じか
614デフォルトの名無しさん:2010/05/18(火) 17:40:52
そういうことじゃないだろw

流れとしては、文の解析→ツリー構造化→計算

と言うかスレチ?
615デフォルトの名無しさん:2010/05/18(火) 17:41:56
>>そういうことじゃないだろw
は、612に対してね
616デフォルトの名無しさん:2010/05/18(火) 17:42:58
すまん、勘違いしてた
そりゃ自分で解析するしかないだろ・・・

手軽にやりたいなら
JScript.NETかなんかのEval使うって方法もあるんじゃね?
複雑な式でも解析できるかどうかは知らんが
617613:2010/05/18(火) 17:43:23
たぶん
>>611がやりたいのはこういうのだと思う
618613:2010/05/18(火) 17:44:42
619デフォルトの名無しさん:2010/05/18(火) 17:52:34
とりあえずスタックを上手く使う必要がありそうだとは思った
620613:2010/05/18(火) 17:55:57
そのものずばりの内容がMSにあった
http://msdn.microsoft.com/ja-jp/academic/cc998600.aspx
621デフォルトの名無しさん:2010/05/18(火) 18:30:02
>>611
ポーランド記法を逆ポーランド記法に変換してから、スタックで計算するのセオリーだったような気がする
622デフォルトの名無しさん:2010/05/18(火) 18:43:39
中置記法を、だよね?
623デフォルトの名無しさん:2010/05/18(火) 20:52:40
AST作って再帰的に評価するのが綺麗で簡単でしょ
LINQのExpression Treeを吐くようにすればインタプリタ書かなくて済むし爆速
624デフォルトの名無しさん:2010/05/18(火) 23:36:31
専門学校あたりでやってそうなアルゴリズム
625デフォルトの名無しさん:2010/05/18(火) 23:50:05
abstract class ExpressionNode { public abstract int Eval(); }
class AddExpression : ExpressionNode {
public ExpressionNode Left; public ExpressionNode Right;
public override int Eval() { return Left.Eval() + Right.Eval(); }
}
構文木に変換できてしまえば評価自体はこんな感じでとっても簡単わかりやすい
そのための解析は再帰下降パーサとか書くことになって結構難しい
626デフォルトの名無しさん:2010/05/18(火) 23:58:26
>>620
関西大学の講座ですねわかります
627デフォルトの名無しさん:2010/05/19(水) 02:19:42
>>620
1.一番最後の(を探して、その直後の)までの文字列を取り出す。
2.1の結果中の*/を検索して計算。*/が無くなるまで。
3.2の結果中の+-を検索して計算。+-が無くなるまで。
4.1の()内の文字列を3の結果の数字で置き換えて1に戻る。

斜め読みだがこんな処理か。
おっと思ったけど、やらせ方が分かればどおってことないな。
628デフォルトの名無しさん:2010/05/19(水) 03:00:20
CSharpCodeProviderを使ったあまりおすすめしないバージョン。
ttp://ideone.com/2sB1Y
629デフォルトの名無しさん:2010/05/19(水) 10:43:11
ふーん
あっそ
へー
630デフォルトの名無しさん:2010/05/19(水) 11:05:18
MessageBoxで出力した文字列はマウスで選択できないしコピーもできないけど,
これをできるようにするにはどうすればいいでしょうか。
めんどくさがらず新しくFormを作るしかないのかな・・
631デフォルトの名無しさん:2010/05/19(水) 11:12:14
え?Ctrl+C押してみなよ
632デフォルトの名無しさん:2010/05/19(水) 11:25:05
おおっ,文字列選択してなくてもCtrl+Cでコピーできるんですね。
ありがとうございます。

ただ自分も含めてこれでコピーできることを知ってる人は少ないと思うので,
マウスで文字列選択→右クリックメニューでコピー
という手順を踏めるようにしたいのですが,
この場合はやはりForm使うしかないでしょうか。
633デフォルトの名無しさん:2010/05/19(水) 11:27:26
教えてあげりゃいいじゃないの
634デフォルトの名無しさん:2010/05/19(水) 11:28:46
Form使わないでメッセージボックスを選択して右クリックできるようにする方法もあるが
独自Form使うほうがはるかに簡単な。
635デフォルトの名無しさん:2010/05/19(水) 11:39:58
どうもありがとうございます。
Formで対応します。
636デフォルトの名無しさん:2010/05/19(水) 12:40:00
>>631
こんな機能あったのか
知らなかった
637デフォルトの名無しさん:2010/05/19(水) 14:15:09
>>636
お気の毒に・・・
638デフォルトの名無しさん:2010/05/19(水) 14:58:42
>>634-635みたいな無駄なことしなくても、>>633がベストだと思うが?
メッセージの最後に「Ctrl-C でこのメッセージをコピーできます」とか書くだけだろ
639デフォルトの名無しさん:2010/05/19(水) 15:00:45
そのメッセージまでコピーされて邪魔かもw
640デフォルトの名無しさん:2010/05/19(水) 15:10:52
メッセージボックスがコピーできることを知らせるメッセージボックスを出せばいいだろ
641デフォルトの名無しさん:2010/05/19(水) 15:49:14
バルーンを出すとかっこいいよ!
「このダイアログの内容はCtrl+Cでクリップボードにコピーできます」
642デフォルトの名無しさん:2010/05/19(水) 15:51:10
でもたまにコピーできないメッセージボックスがあるんだよな。うっとおしい。
ああいうのはやっぱ自前でフォーム出してんのかね。
しょうがないのでコピット!のお世話になる。
643デフォルトの名無しさん:2010/05/19(水) 18:31:44
ALT+スペースや
メニューバーの上の青くなってるラインとかで右クリックしたときに出てくる

元のサイズに戻す
最小化
最大化
移動
閉じる

みたいなポップアップウィンドウを改変したいんだけど
ツールバーの何をやればいいの?
MenuStripじゃできないよね?
644デフォルトの名無しさん:2010/05/19(水) 18:42:51
自分で考えなさい
645デフォルトの名無しさん:2010/05/19(水) 19:07:56
このスレいらねーじゃん
646デフォルトの名無しさん:2010/05/19(水) 19:38:44
>>643
そういうのは普通には変えられないかもね・・・
Formのプロパティとか調べたけどそれっぽいのがなかった
647デフォルトの名無しさん:2010/05/19(水) 19:48:06
>>643
GetSystemMenuとInsertMenuItem
648デフォルトの名無しさん:2010/05/19(水) 19:53:27
>>647
API使わないと駄目なのか
649デフォルトの名無しさん:2010/05/19(水) 20:00:37
Windows.Formも結局Win32APIで動いてたのか。
650デフォルトの名無しさん:2010/05/19(水) 20:02:49
>>649
そうだよw
所詮はラッパー
めんどくさいことをしなくていいようにオブラートに包んでるだけだよ
ただいろいろ表に出してない部分があってそういうのだけ直接
APIたたいたりするしかないってだけ
651デフォルトの名無しさん:2010/05/19(水) 20:08:17
つまり細かいことをしなきゃいけないときは
[DLLimport]だっけ?
みたいなことしなきゃいけないんだな。
結局C++も必要かぁ
652デフォルトの名無しさん:2010/05/19(水) 20:10:27
>>651
まあAPI名とC#をセットにしてぐぐれば同じようなことやってる人がいるので
それほどでもないね

ただAPI関連で開発したことない人は関数名がわからなくて探すまでが
大変だったりするw
653デフォルトの名無しさん:2010/05/19(水) 20:15:34
やってみたら簡単だった。
http://codepad.org/goVtqqUF
654デフォルトの名無しさん:2010/05/19(水) 22:51:48
IME関連を隠してあるのを見ると殺意がわいてくるんだが
655デフォルトの名無しさん:2010/05/19(水) 23:51:56
早めに通報した
656デフォルトの名無しさん:2010/05/20(木) 00:11:53
657デフォルトの名無しさん:2010/05/20(木) 00:22:33
君のPCの中に・・・
658デフォルトの名無しさん:2010/05/20(木) 00:49:41
>>656
VisualStudio2008を入れてるなら
C:\Program Files\Microsoft Visual Studio 9.0\VC#\Specifications\1041\CSharp Language Specification.doc
にある
659デフォルトの名無しさん:2010/05/20(木) 01:08:33
>>658
ありがとうございました!
また質問しに来てあげますね
660デフォルトの名無しさん:2010/05/20(木) 06:51:15
二度と来んな
661デフォルトの名無しさん:2010/05/20(木) 06:56:02
EEだと入らないよね?
β2入れてたときにチェックするんだった。
またPro入れるの面倒くさいな
662デフォルトの名無しさん:2010/05/20(木) 15:01:11
c#ってintをとったら、実際には、2バイトだけでなくて、
その他色々と取られたりするのですか?昔、私が使ったデバッガでは、
2002年のだったかな?
トゥストリングメソッドとか、色々とついて来て、
なんか、一つのintだけで4バイト位とってた気がしましたが。
実際にはどうなんでしょうか?
663デフォルトの名無しさん:2010/05/20(木) 15:18:52
CPUのレジスタサイズに関係なく決まってるよ。
byte = 8 / short = 16 / int = 32 / long = 64
664デフォルトの名無しさん:2010/05/20(木) 15:24:03
v-tableの話をしてるのならintなどのプリミティブ型は特別扱いで、
boxingした場合だけ4byte(32bit)以上の領域がキープされる。
665デフォルトの名無しさん:2010/05/20(木) 15:33:39
結構シビアに管理する必要あるのかな?
666デフォルトの名無しさん:2010/05/20(木) 15:36:05
そんな環境ならCとかC++使った方がええんでないの
667デフォルトの名無しさん:2010/05/20(木) 16:03:44
いや、すんません、ただ、ちょっと気になったもんですから。
普通、intって言ったら16ビットですよね。
なのに、昔のデバッガで見たら、なんか、32ビット位で、そんなの必要ないよ
ってのまでついて来て、
俺は、一応、dos時代からのプログラマーなので、
あの頃の感覚からすると信じられない取り方をしてるなと思ったもので、つい聞いておきたくなっただけです。

まあ、今はメモリ空間だけで昔のハードディスクよりも広大な空間があったりする時代なので、
こう言う取り方になるんでしょうね。

量の節約より、便利さを優先した方が色々と結果として効率が良いと言う時代なんでしょう。

ところで32ビットの内、記憶領域以外の16ビットは何のために使っているのですか?



668デフォルトの名無しさん:2010/05/20(木) 16:09:25
つ663
669デフォルトの名無しさん:2010/05/20(木) 16:10:15
過去の普通だな
現代の普通じゃない
670デフォルトの名無しさん:2010/05/20(木) 16:10:54
Cでintはレジスタサイズなのが一般的で
16bit CPUなら short = int = 16bit, long = 32bit だけど
32bit CPUなら short = 16bit, int = long = 32bitになる。
C#ではCPUに関係なく決まっている。
671デフォルトの名無しさん:2010/05/20(木) 16:21:16
ほへー、そうだったのですか。
わかりました。
672デフォルトの名無しさん:2010/05/20(木) 16:23:42
浦島さんですか。
673デフォルトの名無しさん:2010/05/20(木) 16:43:04
64bitCPUならintも64bitになる理屈か
OSが32bitなら?
674デフォルトの名無しさん:2010/05/20(木) 16:49:19
DOS時代からのヘボグラマか
675デフォルトの名無しさん:2010/05/20(木) 16:57:20
CのintはCPUのレジスタサイズが建前だったが、
大抵の事は32bitで間に合い、
64bitにすると無駄にメモリとバス帯域を圧迫するので、
64bit CPUでのintの64bit化は、あまり行われていない。
676デフォルトの名無しさん:2010/05/20(木) 17:17:56
へぇ
677デフォルトの名無しさん:2010/05/20(木) 17:32:33
色の処理とかbyteで間に合っても型あわせるの面倒だからintで宣言しちゃうよ
678デフォルトの名無しさん:2010/05/20(木) 17:44:37
RGB要素が1バイトだなんて決まってないから、
その方がいいんじゃね?
679デフォルトの名無しさん:2010/05/20(木) 17:48:19
色に関してはケースによるとしかいえないだろ
色深度で1色の表現が違うんだし
680デフォルトの名無しさん:2010/05/20(木) 19:19:20
>>676
真に受けるな
681デフォルトの名無しさん:2010/05/20(木) 19:21:30
ほぉ
682デフォルトの名無しさん:2010/05/20(木) 19:50:03
レジスタサイズとかバス帯域ってのが何のことかよくわからんなw
683デフォルトの名無しさん:2010/05/20(木) 19:52:49
CPUに対して型のサイズが決まってるとか妄言もいい所
684デフォルトの名無しさん:2010/05/20(木) 20:13:02
ちがうんか
まあCPUが違ったら数の範囲レベルで挙動が違うとか、正気の沙汰じゃないもんな
685デフォルトの名無しさん:2010/05/20(木) 20:18:40
ああ、C/C++のはなしね
C#は決まってる
686デフォルトの名無しさん:2010/05/20(木) 20:56:52
CPUに合わせてサイズを決めるなんて常識。
それ無視したらJavaみたいに遅くなる。
687デフォルトの名無しさん:2010/05/20(木) 21:05:14
インスタンスメソッドがインスタンスのメモリ領域取るって…
よく今までそれで生きてこられたな
688デフォルトの名無しさん:2010/05/20(木) 21:07:25
何を言ってんだお前は?
689デフォルトの名無しさん:2010/05/20(木) 22:40:27
ストリームの一部分だけを切り出して別のストリームにしたいんだけど
いったんbyte[]に読みだしてMemoryStreamにする以外にスマートなやり方があれば教えてください
690デフォルトの名無しさん:2010/05/20(木) 22:46:52
>>689
ストリームをメンバに持たせたIStream継承の自作クラスを作成する。
IStreamが要求するメソッド/プロパティをそれぞれ定義してやる。
大抵はメンバのストリームのを加工するだけでいいはず。

オレはそうやって自作アーカイブの内容物のストリームを返すクラスを作成している。
691デフォルトの名無しさん:2010/05/20(木) 22:58:29
>>688
何を言ってんだお前は?
692デフォルトの名無しさん:2010/05/20(木) 23:00:41
問1

レス番号687の書き込みにはレスアンカーが抜けています。
正しいアンカーを書き入れなさい。
693デフォルトの名無しさん:2010/05/20(木) 23:16:00
>>690
IStreamはCOMのインターフェイスだw
.NETではStream抽象クラスな
694デフォルトの名無しさん:2010/05/21(金) 00:11:49
JavaとC#がわかる人がいれば教えてください。

Javaで下記のように書く事がありますが
C#ではこのような書き方はできますか?

また、この書き方ができないとしたら
どうやって似たような事を実現しますか?

HashSet<String, String> = new HashSet<String, String>();
695デフォルトの名無しさん:2010/05/21(金) 00:14:39
HashSet<String, String> hs = new HashSet<String, String>();
696デフォルトの名無しさん:2010/05/21(金) 00:16:31
Dictionary<string, string>
Java のジェネリクスと違ってちゃんと型安全。
697デフォルトの名無しさん:2010/05/21(金) 00:19:36
HashSetなら<String>だろ
バージョン3.5以降なら.NETでもHashSet<T>は使える
.NETのジェネリックに慣れるとJavaのジェネリクスに戻ると発狂する
698デフォルトの名無しさん:2010/05/21(金) 00:25:03
696が正解
読むだけで理解しないバカは死ね
699デフォルトの名無しさん:2010/05/21(金) 00:39:40
HashSetとDictionaryは別物
700デフォルトの名無しさん:2010/05/21(金) 00:45:45
<String, String> ってなってたからハッシュテーブルのことかと思ったけど、
Java でもそれは HashTable だな。
701デフォルトの名無しさん:2010/05/21(金) 00:47:44
結局どれが正解?
702デフォルトの名無しさん:2010/05/21(金) 00:50:23
そもそもjavaとして間違ってるのでわからない
703デフォルトの名無しさん:2010/05/21(金) 00:55:31
まあ、HashSet<T>もDictionary<T, T>もあるよって言っとけばそれでいいだろ。
704デフォルトの名無しさん:2010/05/21(金) 01:01:10
javaのジェネリクスはできそうなことができなくて絶妙にイライラする
理屈ではわかってても直感に反する罠だらけ
705デフォルトの名無しさん:2010/05/21(金) 01:15:00
>>695
ミスです

>>696
ありがとう
706デフォルトの名無しさん:2010/05/21(金) 02:22:21
セーブデータなどの事について知りたいのですが、
方法はいくつかあると思います。
例えば、ファイルにして保存するとか、レジストリに保存するとかですが、
エグゼファイルの中に保存するとかって言う方法は無いのでしょうか?
707デフォルトの名無しさん:2010/05/21(金) 02:32:45
ゲーム作りたいのならHSPでもやっててくれ
708デフォルトの名無しさん:2010/05/21(金) 02:51:19
なぜお前らはすぐそういう反応をする。
パパとママの愛情が足りなかったのか?
709デフォルトの名無しさん:2010/05/21(金) 03:45:52
パパには沢山愛してもらいました
710デフォルトの名無しさん:2010/05/21(金) 05:06:10
2008のプロジェクトを2010に変換したら

相互運用型XXXを埋め込むことができません。
代わりに適用可能なインターフェイスを使用してください。

とかエラー吐くんだけど何じゃこりゃ。
CS1752とかアメ公のMSDNにも載ってないんですけどぉぉぉぉ。
711デフォルトの名無しさん:2010/05/21(金) 05:45:45
DataGridView で、データベースのテーブルを参照する部分を実装しているのですが、
DataGridView上でセルの値を変更した際「Enter」キーを押し、
カーソルが一つ下のレコードへ移動すると、DataRowのカラムの値を書き換えた事を示す
RowStateプロパティにDataRowState.Modifiedがセットされます。

しかし、DataGridView1にユーザーが新しい行を追加できないようにする為に

DataGridView1.AllowUserToAddRows = false;

として、かつデータベースレコードが「1件」の場合、「Enter」キーを押しても
フォーカスカーソルが下へ移動できない為、RowStateプロパティにDataRowState.Modifiedが
セットされません。

プログラム上で DataGridView1 から Form上の別のコントロールへフォーカスを移すと、
RowStateプロパティにDataRowState.Modifiedがセットされましたが、
フォーカスを強制的に動かす意外に、DataRowState.Modified がセットされる
方法は無いのでしょうか?
712デフォルトの名無しさん:2010/05/21(金) 06:39:08
ないよ
713デフォルトの名無しさん:2010/05/21(金) 12:15:44
form1でプロパティを変更したときに、
form2で、そのタイミングでプロパティを取得して動作するようにするには、どんなイベントハンドラを準備すればよいですか?

form1
private void ok_Click(object sender, EventArgs e){
Properties.Settings.Default.ID = this.ID.Text;
Properties.Settings.Default.Save();
}

form2
public form2(){
//ここにたぶんイベントハンドラ
}

private void ID_changed(){
//Propertyの変更になったときの処理
}
714デフォルトの名無しさん:2010/05/21(金) 12:22:14
イベントが発生するのはForm1なんだからハンドラはForm1の方に作る
715デフォルトの名無しさん:2010/05/21(金) 12:24:41
VisualC#2008から2010にバージョンアップしたところ、
'Microsoft.JScript.Vsa.VsaEngine' は古い形式です: '"Use of this type is not recommended because it is being deprecated in Visual Studio 2005; there will be no replacement for this feature. Please see the ICodeCompiler documentation for additional help."'
という警告が出るようになったのですが、
これってどう対処したらよいのですか?
additional helpってどこにあるんでしょう?
716デフォルトの名無しさん:2010/05/21(金) 12:27:02
>>713
ApplicationSettingsならINotifyPropertyChangedで変更通知するから、
Settings.Default.PropertyChangedイベントに+=する
でe.PropertyNameで目的のプロパティかどうか判断
717デフォルトの名無しさん:2010/05/21(金) 12:28:36
>>715
Please see the ICodeCompiler documentation
VsaEngineなんて.NET 2.0からすでにObsoleteだったはずだが、使ってたの?
718デフォルトの名無しさん:2010/05/21(金) 12:50:31
つうかそれぐらいすぐに探せるだろう・・・・

'Microsoft.JScript.Vsa.VsaEngine' は古い形式です: '"

でググったら一撃じゃねぇか

http://msdn.microsoft.com/ja-jp/library/ee461503.aspx

でこれじゃねぇか

http://msdn.microsoft.com/ja-jp/library/ee461503.aspx#jscript
719デフォルトの名無しさん:2010/05/21(金) 15:04:22
>>710
COM使ってるなら参照などの設定をやり直してみたら
720デフォルトの名無しさん:2010/05/21(金) 15:08:50
>>719
一回まっさらにしても変わらんね
COM型の埋め込みには条件があるみたいでそれに引っかかってるっぽい
素直に旧式の相互運用アセンブリ使うことにするよ
721デフォルトの名無しさん:2010/05/21(金) 15:09:52
あるマスタデータをコレクションに保持しようとしています。

このコレクションは
以下のような構造のマスタデータをメモリに保持します。
Key1(0-99までと決まっている)
Key2(0-99までと決まっている)
Name

上記の一覧データを保持してKey1,Key2からName検索させたいのですが
コレクションjはキーを1つしか持てません。
そこで

Dictionary<String,String> _hogehoge = ... とし

データを入れるときに
string pk = Key1.ToString("00") + "_" + Key2.ToString("00")
_hogehoge.Add(pk,Name);

のようにしてデータを入れています。

もちろん検索するときも
ContaintsKeyで
string pk = Key1.ToString("00") + "_" + Key2.ToString("00")
のようにしています。

このような構造のデータをDB等参照せずメモリに保持し、高速で検索させたいような場合
このような泥臭い方法はありなのでしょうか?

ただし、DB接続・DataTableを保持 などは出来るだけしないようにしたいと思っています。

よろしくお願いいたします。
722デフォルトの名無しさん:2010/05/21(金) 17:08:14
>>721
KeyedCollectionを継承したコレクション作るとか

class Hoge
{
  public int Key1 { get; set; }
  public int Key2 { get; set; }
  public string Name { get; set; }
}
class HogeCollection : System.Collections.ObjectModel.KeyedCollection<string, Hoge>
{
  protected override string GetKeyForItem(Hoge item)
  {
    return GetKey(item.Key1,item.Key2);
  }
  private static string GetKey(int key1, int key2)
  {
    return string.Concat(key1.ToString("00"), key2.ToString("00"));
  }
  public Hoge this[int key1, int key2]
  {
    get { return this[GetKey(key1, key2)]; }
  }
}
723デフォルトの名無しさん:2010/05/21(金) 17:08:43
たかだか最大一万件ぐらいならどうでもいいんじゃね
724デフォルトの名無しさん:2010/05/21(金) 17:12:20
実際に試してみて遅かったら言ってくれると助かるなあ
725デフォルトの名無しさん:2010/05/21(金) 17:35:50
>>721
string にしなくても Dictionary<ushort, string> で良いんじゃない?
var key = (ushort)(key1 << 8 | key2); _values.Add(key, name)
取り出すとき。
var key1 = (byte)(key >> 8); var key2 = (byte)key;
726デフォルトの名無しさん:2010/05/21(金) 22:02:50
じゃあ俺はキーの方を作るか

struct HogeKey {
  private ushort _key;
  public HogeKey(byte key1, byte key2) { _key = (ushort)(key1 << 8 | key2); }
  public byte Key1 { get { return (byte)(_key >> 8); } }
  public byte Key2 { get { return (byte)_key; }}
  public override bool Equals(object obj) { return (obj is HogeKey) && (_key == ((HogeKey)obj)._key); }
  public override int GetHashCode() { return _key; }
}

--
Dictionary<HogeKey, Hoge> dictionary;
727デフォルトの名無しさん:2010/05/21(金) 23:24:34
struct ComplexKey<TKey1, TKey2> : IEquatable<ComplexKey<TKey1, TKey2>>
とか作ったな。
728デフォルトの名無しさん:2010/05/22(土) 01:20:28
System.TimerやSystem.Form.TimerってIntervalがdouble型になってるけど
1μsレベルの精度ってあるん?
729デフォルトの名無しさん:2010/05/22(土) 01:21:50
>>725,726
細かいことだけど、整数型を意味もなくushortやbyteにして使うことはお勧めできないよ。
バイナリファイルみたいに固定バイト長でどうしても読み書きしないといけない場合は除いて。

そういうC言語的な発想は捨ててしまった方がいい。
730デフォルトの名無しさん:2010/05/22(土) 01:25:25
>>728
あるわけないじゃないか
あとFormsのほうのTimerはInt32な
731デフォルトの名無しさん:2010/05/22(土) 01:28:09
>>728
System.Form.Timerは50ms単位くらいの精度しかない。
これは.NETができる以前からのWindowsの仕様。

System.Timers系は十分に正確。
だが1μsレベルかどうかは話は別。一言で答えれば、無い。
そもそもそんな精度をリアルタイムOSでない通常のOSに求めることが間違い。
732デフォルトの名無しさん:2010/05/22(土) 01:47:52
OnPaintイベントを処理中に例外が起きるとバツが表示されて、デバッカーで捕捉できない
非常に不便なのでどうにかしたいんだが、補足する方法はある?
733デフォルトの名無しさん:2010/05/22(土) 01:50:44
catchすればいいじゃん
734デフォルトの名無しさん:2010/05/22(土) 01:55:54
MessageBox
を使って、止めたいところで止めて、表示させたい文字を表示させる事が出来る。
735デフォルトの名無しさん:2010/05/22(土) 02:09:58
なぜか発生箇所で捕捉されない例外ってそういえばあるな。
あれ何だろう
736デフォルトの名無しさん:2010/05/22(土) 02:16:29
この辺かな。
DebuggerNonUserCodeAttribute
DebuggerHiddenAttribute
DebuggerStepThroughAttribute

Paintイベントはフレームワークがイベントを投げる前にtry-catchしてるはず。
737デフォルトの名無しさん:2010/05/22(土) 02:30:02
C#をやってる大学ってないかな。
ある程度レベルの高い国立大学はどこの情報学科もCやC++必須なんだよなぁ。
738デフォルトの名無しさん:2010/05/22(土) 02:33:07
>>737
というか、OS開発でもやるっていうんじゃあるまいし、
いまどきCやC++みたいな開発効率の悪い言語を教えててどうするんだろうか。
もっと良い言語がいくらでもあるんだから選んで使えばいいのにね。
739デフォルトの名無しさん:2010/05/22(土) 02:36:19
教えてる方は割とお年を召してるのでそんな最新言語知らない
740デフォルトの名無しさん:2010/05/22(土) 02:41:32
学生の間はCとJavaを勉強したらいいんじゃない
Javaが出来ればC#に乗り換えるのもそんなに苦労しないでしょ
741デフォルトの名無しさん:2010/05/22(土) 02:41:35
C#で覚えたら悲惨だろ
そんな奴いらねぇよ
742デフォルトの名無しさん:2010/05/22(土) 02:43:51
趣味や日曜プログラマならともかく
職業グラマになるんだったら学部レベルのCやC++くらい
できないとバカにされるからな。

プログラムを組むときは「型」があるから注意してくださいー
int と doubleは違いますよー
同じ処理が何度も出てくるときは関数として処理するといいですよー
演算子は優先順位があるから気をつけましょう

みたいなCだろうがJavaだろうがC#だろうがやらなきゃいけないことしか勉強しないし。
743デフォルトの名無しさん:2010/05/22(土) 02:45:41
うーん
C++はともかくCである必要性はイマイチよくわからん
744デフォルトの名無しさん:2010/05/22(土) 02:48:27
C#には歴史が無い。それが全て。

C/C++よりも、言語仕様、ライブラリ仕様などの些末なことに気を取られて、
肝心のプログラミングに割ける脳内メモリが削られるということも無いのは良い点。
なのに、なぜかC/C++の人の方がプログラミングに絡んだ難しい数学の話とかしてることが多い。
このレベルの違いは歴史だと思うよ。例えば、高度な3D処理などの数学が絡んだ
ライブラリは、C#には用意されてないが歴史あるC/C++には充実している。
だから優秀な人はC#の素晴らしさを理解しつつも、C#よりC/C++を選んでしまうということがままある。
745デフォルトの名無しさん:2010/05/22(土) 02:50:09
ベテランがいないわけだからな
746デフォルトの名無しさん:2010/05/22(土) 02:50:35
>>737
宿題スレの質問者にどこの学校か聞いてみたら
747デフォルトの名無しさん:2010/05/22(土) 03:05:18
日本で売ってるキーボードは
打ちやすさを最優先で作られてるとはいえないqwert配列が大多数
みたいなものだな
歴史あるものが優位になるのは仕方ない
C/C++が優位
748デフォルトの名無しさん:2010/05/22(土) 03:12:31
>>747
プログラミング言語と手で触れるデバイスを一緒にするなよ。
例えばメガネだって基本的な機能とデザインは何十年も替わってないだろ。
749デフォルトの名無しさん:2010/05/22(土) 03:55:38
つ コンタクトレンズ
750デフォルトの名無しさん:2010/05/22(土) 03:59:08
つ レーシック
751デフォルトの名無しさん:2010/05/22(土) 06:55:18
WebBrowserでリンク先のURLを取得するとき
Document.Links[0].GetAttribute("href") だと相対パス表記のリンクは相対パスの取得になりますが
絶対パスを取る方法はないでしょうか?
752デフォルトの名無しさん:2010/05/22(土) 07:00:38
試してないけどこんな感じでできない?
new Uri(webBrowser.Url, relativeUri).AbsoluteUri;
753デフォルトの名無しさん:2010/05/22(土) 07:06:50
HTMLに<base href=があるとそれじゃだめだな
754デフォルトの名無しさん:2010/05/22(土) 08:49:44
>>752
ありがとうございます、それで行けました
base href があるときは全部絶対パスになるみたいなので大丈夫そうです
755デフォルトの名無しさん:2010/05/22(土) 12:06:52
IDEでデザインしたフォームの日本語文字列を
他言語の文字列に置き換える楽な方法はないでしょうかorz
やっぱりIDE利用は諦めて、ユーザーに見せる文字列をコードで逐一リソース文字列から引っ張り出すしかない?
756デフォルトの名無しさん:2010/05/22(土) 12:07:49
誤爆したorz
757デフォルトの名無しさん:2010/05/22(土) 12:18:48
>>755
Formsのフォームで使用する文字列リテラルは、デザイナー上で逐一文字列リソースに切り替えられたはず。
758デフォルトの名無しさん:2010/05/22(土) 12:46:49
>>757
dクスできると分かったので探したら見つかった
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/314winmultilang/winmultilang.html

既存のフォームについて途中からLocalizable=Trueに切り替えて無問題か確認中なう
759デフォルトの名無しさん:2010/05/22(土) 12:48:44
>>758
質問前に調べろよ。
俺を誰だと思ってるんだw。
760デフォルトの名無しさん:2010/05/22(土) 12:52:44
>>759
シャッチョサンワタシホシイモノアルヨ
761デフォルトの名無しさん:2010/05/22(土) 16:36:19
string[] st = {"みかん","りんご","うさぎ"};
のように、
List<string> lt
に一括して代入する方法を教えてください。
762デフォルトの名無しさん:2010/05/22(土) 16:39:45
C#3.0/.NET 3.5以降ならコレクション初期化子 それ以前ならコンストラクタの引数に配列渡すぐらい
763デフォルトの名無しさん:2010/05/22(土) 17:00:06
>>762
ありがとうございました。
ところで、この
List<string> lt = new List<string>{"みかん","りんご","うさぎ"};
の内容を、ファイルに書き出して保存したいのですが、それにはどうしたらよいでしょう?
764デフォルトの名無しさん:2010/05/22(土) 17:02:50
765デフォルトの名無しさん:2010/05/22(土) 17:05:02
ファイルの出力くらいはできます。
一括して、
File.Save(filename, lt,);
とかみたいにできないか、という質問です。
766デフォルトの名無しさん:2010/05/22(土) 17:07:50
>>762
コレクション初期化子はC#3.0のみが必要で、.NET 3.5は関係ない。
その証拠に、Visual Studio 2008以降で.NET 2.0ターゲットでビルドできる。
767デフォルトの名無しさん:2010/05/22(土) 17:08:46
住人を激怒されるような質問方法だな
わざとかもしれんが
768デフォルトの名無しさん:2010/05/22(土) 17:09:07
>>765
XMLSerializerを使え。
769デフォルトの名無しさん:2010/05/22(土) 17:16:39
>>765
>>768のいうのはここを参考にしてね
http://dobon.net/vb/dotnet/file/xmlserializer.html

サンプルコード
http://ideone.com/9LA5g

とその結果
<pre name="code" class="csharp"><?xml version="1.0"?>
<moji xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<lt>
    <string>みかん</string>
    <string>りんご</string>
    <string>うさぎ</string>
</lt>
</moji>
</pre>
770デフォルトの名無しさん:2010/05/22(土) 17:20:57
xml宣言の位置がおかしいぞw

最近はDataContractSerializer押しの声が大きいな
771デフォルトの名無しさん:2010/05/22(土) 18:28:45
>>768
thanks!!
772デフォルトの名無しさん:2010/05/22(土) 18:39:38
申し訳ありませんがご教授願いたいのですが
ユーザコントロールを作り、ボタンを3つ作ります
□ □ □ のような並びです
ユーザコントロールをフォーム上に貼り付ける
ユーザコントロールのサイズを変更する
その時にボタンの大きさ、ボタンの位置をユーザコントロールのサイズに合わせて
□□ □□ □□
□□ □□ □□
のようにボタンの位置と大きさが比例させたいです。

現在考えている処理としては、ユーザコントロールのResizeイベントで
計算すると言う方法を考えておりますが、
他にも何か良い方法がありましたらご教授お願い致します。
773デフォルトの名無しさん:2010/05/22(土) 18:46:12
>>772
コントロールのサイズは計算するほかにうまい手は思いつかないが
位置についてはAnchorを外すという裏技(?)がある
特に縦位置も横位置もフォームサイズに比例させたいなら、Anchorプロパティーを空にする
774デフォルトの名無しさん:2010/05/22(土) 18:47:27
>>772
えーっと、比例計算(小学校の算数だと思うけど)が分からないってこと?

まあ、MSによると非推奨の方法らしいけどテーブルレイアウトパネルを使えば
ユーザーコードなしでもできると思うけど....
775デフォルトの名無しさん:2010/05/22(土) 18:49:58
解像度がまちまちなのがいけないんや〜。゜。゜(ノД`)゜。゜。

windows上で優れたUIがでないのはこの辺にあると思う
776773:2010/05/22(土) 18:53:20
>テーブルレイアウトパネル
そうかその手があったorz
これで大きさも位置も解決できる
非推奨なのはテーブルレイアウトパネルを入れ子にして使うこと、
ジャマイカ
777デフォルトの名無しさん:2010/05/22(土) 20:05:49
>>775
プログラムやめていいんだからね
778772:2010/05/22(土) 21:34:03
>>773>>774
ありがとうございます
tableLayoutPanelを使って見た所
自分の設定方法が悪いのかもしれませんが
以下の状態からユーザコントロールを小さくした場合
□□ □□ □□
□□ □□ □□
以下の様に右端のボタンサイズが変化する現象が発生致しました
□ □ □□
□ □ □□
Anchorは全方向チェックしております
全方向空だと小さくした際にコントロールが
ユーザコントロールの外側に隠れてしまう為です
何か他に設定するべき項目がありましたらご指摘お願い致します
779772:2010/05/22(土) 21:35:14
連投申し訳ありません
訂正
×以下の様に右端のボタンサイズが変化する現象が発生致しました
○以下の様に右端のボタンサイズが変化しない現象が発生致しました
780デフォルトの名無しさん:2010/05/22(土) 22:17:07
「全方向空」ってどういう意味?
っていうか、ボタンはコンテナ(つまりテーブルレイアウトパネルの各セル)に
Dockさせるんだよ。アンカーを使うんじゃなくて。
781772:2010/05/22(土) 22:25:58
>>780
説明不足でした 申し訳ありません
各ボタンはtableLayoutPanelにDockをさせております(設定項目はFill)
tableLayoutPanelのAnchorは「Top, Bottom, Left, Right」に設定しております
782デフォルトの名無しさん:2010/05/22(土) 22:54:10
>>777
仕様かどうか知らないが、tableLayoutPanelは最後の行と最後の列についてAuto sizeが効かない
だから、余分な行と列を追加して、そいつの大きさを固定値0にすると良い

VS2008でいま確かめたが、ボタンの配列が3x3なら、
1. セル配列4x4のtableLayoutPanelを用意し、Anchorを上下左右に設定(位置とサイズを確定させる)
2. 列の編集で最も右の列を「絶対サイズ 0ピクセル」に設定、それ以外は「パーセント 50.00%」とする(全て同じ値なら何でも良い)
3. 行の編集で最も下の列を「絶対サイズ 0ピクセル」に設定、それ以外は「パーセント 50.00%」とする(全て同じ値なら何でも良い)
4. 見かけ上3x3のtableLayoutPanelになるので、そこにボタンを配置
で逝けるハズ

なお4.まで済ませた後tableLayoutPanelのサイズを変更しようとすると再び2.と3.が必要のでちうい
783782:2010/05/22(土) 23:02:34
アンカーミスったorz >>778
あと、語弊がありそうなので補足しとくと、>782でtableLayoutPanelの位置とサイズと言っているのは
デザイナ上で与える位置とサイズの意
>782の1.〜4.を済ませた後、プログラムの実行状態でフォームサイズを変更する分には問題無くボタンサイズが比例する
784デフォルトの名無しさん:2010/05/22(土) 23:06:25
そろそろサンプルコードでやり取りしようぜ
785デフォルトの名無しさん:2010/05/22(土) 23:06:53
ListViewのDetail表示とかDataGridViewもダミーのカラム入れないと
いろいろ不都合があったりするけど、MS様のコントロールってそういうの多いのかね。

っていうか、TableLayoutPanelってそんな仕様だったかな....
786772:2010/05/22(土) 23:21:02
>>783
動作確認の結果うまく行きました
詳細な説明ありがとうございました

>>784
自分の理解が遅くスレ消費してしまって申し訳ない
787デフォルトの名無しさん:2010/05/23(日) 01:14:27
>>731
>System.Form.Timerは50ms単位くらいの精度しかない。
>これは.NETができる以前からのWindowsの仕様。
>
>System.Timers系は十分に正確。

っていうほどSystem.Form.Timerと変わるとは思えないんだけど。
788デフォルトの名無しさん:2010/05/23(日) 02:37:29
実際にタイマーの精度が上がるのはVista以降
XPまではカーネルの構造上、どんなラッパーを用意したところで精度は期待できない
789デフォルトの名無しさん:2010/05/23(日) 03:24:22
WebBrowserコントロールで表示したページのソース内を検索したくて、ソースをStringに変換したいのですが、
string souce = WebBrowser.Docment.All.ToString();
これで取り出せませんでした。どうすればいいんですか
790デフォルトの名無しさん:2010/05/23(日) 03:25:58
>>789
デバッガで動きを止めて、アクセスできるプロパティを眺めて考えるんだ。
791デフォルトの名無しさん:2010/05/23(日) 03:32:12
textbox とブラウザ貼り付けてブラウザのurlにこのスレを入れてみた
<pre name="code" class="csharp">        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            textBox1.Text = webBrowser1.DocumentText;
        }
</pre>
これでいけるね

でもこのスレを読み込ませて上のロジックを走らせると文字化けしたので
文字コード関連も調整する必要あるかな
webBrowser1.DocumentStreamってのもあるからこれを使えばStreamで
読み出しできると思うのでエンコード指定すればいいか
792デフォルトの名無しさん:2010/05/23(日) 03:32:52
        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            textBox1.Text = webBrowser1.DocumentText;
        }

ごめん
ゴミが付いたw
793デフォルトの名無しさん:2010/05/23(日) 03:38:33
できましたずっとDocmentの中で探してました
ありがとうございます!
794デフォルトの名無しさん:2010/05/23(日) 03:47:06
795デフォルトの名無しさん:2010/05/23(日) 21:37:37
Twitterクライアントに興味があってOAuth認証にいきついてふと思った
これってクライアント毎に固有のキーを発行して貰ってそれを使ってアクセスする形みたいだけど
ひょっとしてこのキーをそのまま内部に持ったらまずいのかな?

自分は大々的に配布する予定はないから関係ないけど
誰にも偽装されたくなかったらそれなりの対策を考えるのかな?

796デフォルトの名無しさん:2010/05/23(日) 22:59:13
>>795
それ、俺も悩んだけど隠すのは無理が結論だと思う。
リフレクタで見れば秘密キーすぐ分かるもんね……。
797デフォルトの名無しさん:2010/05/23(日) 23:35:00
AWSのSecreatKeyでも似たような問題にあったなぁ
その部分だけC++で書いて事無きを得たけどね
798デフォルトの名無しさん:2010/05/23(日) 23:41:34
>>797
ちょっと気合いの入った人はディスアセンブルぐらいすぐやっちゃうと思うの
799デフォルトの名無しさん:2010/05/23(日) 23:48:40
さすがにそんな人対策でやってんじゃないよw
規約で見えないように努力すれば配布してよし!ってことになってるから
一応対策はしてますよー的な意味合い

漏れたら漏れたで再取得すればいいだけだしキニシナイ
800デフォルトの名無しさん:2010/05/24(月) 00:03:05
簡単な業務アプリでRSACryptoServiceProviderとか使ってPKI……って
作ったことあるけど完全なのは無理だったよね
.netって生産性高いしC#って言語も素晴らしいと思うけど
リバースエンジニアリング対策がむずすぎる
801デフォルトの名無しさん:2010/05/24(月) 00:07:19
カジュアルハック対策に難読化しとけば十分だろ。
それで足りないような機密情報は絶対にクライアントに渡すな。
802デフォルトの名無しさん:2010/05/24(月) 00:08:29
つかどの言語だろうとリバースエンジニアリングからは逃げられないし、
どうしても知られたくないなら外部に持つしかない。
803799:2010/05/24(月) 00:11:27
駄目になったら署名だけ外部鯖に移すし問題ないない
804デフォルトの名無しさん:2010/05/24(月) 00:18:22
簡単な方法がある。
暗号を使うコードと暗号をセットするコードを分離しておいて、
DIで結びつければいい。
805デフォルトの名無しさん:2010/05/24(月) 00:28:00
>>804
イミフ
806デフォルトの名無しさん:2010/05/24(月) 00:32:02
俺も昔は秘密鍵も暗号化させたりと頑張っていたが
結局リバースエンジニアリング対策はほぼ無理なんだよな。
MSも難読化ツールは出しているが、あれでも鍵を隠すことは難しいし。
807デフォルトの名無しさん:2010/05/24(月) 00:34:15
まあリバースエンジニアリングは気にしたら負けだな。
808デフォルトの名無しさん:2010/05/24(月) 00:48:51
>>805
Dependency Injection。依存性注入のこと。
暗号を使っている場所がわかっても
使用する暗号コードを定義してる部分や
取り出す部分がわからなければ問題ない。

これら2つの部分を静的、動的に結合するのがDIの概念。
809デフォルトの名無しさん:2010/05/24(月) 00:50:50
>>808
面白そうだな
簡単ならサンプル書いてくれ URLでもいい
810デフォルトの名無しさん:2010/05/24(月) 00:56:50
dllを参照に入れても.の後にいつものtostringしか出てこないんですがどうしてですか?
811デフォルトの名無しさん:2010/05/24(月) 00:57:47
ちゃんとpublicにしてる?
812デフォルトの名無しさん:2010/05/24(月) 01:06:36
>>808
しかし、その「2つを結合する部分」のコードだって見えるのだから、
所詮複雑度を一段増やしただけの意味しか持たないのでは?
813デフォルトの名無しさん:2010/05/24(月) 01:20:21
>>812
確かに、このアイデアは本質的な改善策ではない。
だからこそ一般的に語られるソリューションではないわけで。
たぶん実務的にはそれぞれのコードをインターフェイス化しておいて、
それを繋ぐ形で実装することになるんじゃなかろうか。
(もちろんDIツール使ってもいいけど)

で、実用レベルとしては呼び出し部をIronPythonで書いてあげるだけで十分だったりする。
あれをリバースエンジニアリングするのはかなり無理(試してみた)。
814デフォルトの名無しさん:2010/05/24(月) 01:20:59
>>804
ようは使用時に結合するわけだから結局は結合時のコードを横から保存して横取りするコードを書けばいいだけ
1900年代のパターン乙
815デフォルトの名無しさん:2010/05/24(月) 01:22:42
DIか…
5年前のJavaやってた時に流行ってたなw
今じゃ考えが廃れて他の物に変わってしまったが
816デフォルトの名無しさん:2010/05/24(月) 01:26:12
>>814
で、それを.NET Frameworkに対して可能なんかね、それ。
817デフォルトの名無しさん:2010/05/24(月) 01:29:21
>>808
>暗号を使うコードと暗号をセットするコードを分離
ここが意味不明なんだよ
何を守りたいのかさえわからない
DIの概念ぐらい今時小学生でもわかるわ
818デフォルトの名無しさん:2010/05/24(月) 01:35:20
結局のところ、実行時はバイナリコードになっちゃうんだから、メモリダンプを取って
逆アセンブルすることは技術的には可能。
あとはコストの問題よね。

というか、隠蔽に依存したセキュリティは無意味って、今時専門学校出の新人でも知っとるわ。
819デフォルトの名無しさん:2010/05/24(月) 01:50:46
何万回もループするなかで
string a = "b";
と宣言付きで書く場合はメモリがやばくならないですか?
ガベージコレクションがよくわかってないので不安です
820デフォルトの名無しさん:2010/05/24(月) 01:56:32
stringは変更不可なクラスなので単純な代入でコピーやインスタンスの生成は発生しない。
821デフォルトの名無しさん:2010/05/24(月) 01:56:34
>>819
そのくらいなら心配ないでしょ
822デフォルトの名無しさん:2010/05/24(月) 01:56:45
>>819
リテラルを格納してるだけなら最適化が効くかも。
一応、const 付けとけ。

最適か効いてなくて毎度 new されてる場合、
まあ、GC が働いてる分にはメモリ不足になることはない。
無駄な GC 働く分パフォーマンスは落ちるんで、ループの外に出せるならその方が無難だけど。
823デフォルトの名無しさん:2010/05/24(月) 01:56:55
火病ってるやつがいるな。もっと建設的な議論すればいいのに。

>>819
メソッド内のローカル変数はスタックに積まれるので基本的には問題ない。
ただし文字列変数は各言語、.NETやJavaの場合は仮想マシンのレベルで
特別な扱いをされることが多いのでこの限りではない。

延々と文字列を結合していくならば結合結果の文字列データより多くのメモリを消費することはありうる。
それ以前にstringを生で使うと遅いのでStringBuilderを使うことになるだろうが。
824デフォルトの名無しさん:2010/05/24(月) 02:02:11
>>823
>火病ってるやつがいるな。もっと建設的な議論すればいいのに。
だねえ〜
まあ便所の落書きなので荒れるのも仕方ないけど
825デフォルトの名無しさん:2010/05/24(月) 02:14:03
つまりガベージコレクションは不要になった最速地点で解放されるのではなく
解放される前に積み重なっていくような数万回newした場合はメモリの危険があるかもしれないという考えは
捨ててもいいということですか?
これを潔癖にクリアするにはusingで宣言を囲んでその外でループするかループ外に宣言するしかないんでしょうか?
826デフォルトの名無しさん:2010/05/24(月) 02:17:08
>>825
PC上でやる上ではメモリの空きについては気にしなくていいよ
むしろ>>823>>824あたりが言ってるように速度面かなあ

差し支えない範囲で気になる部分のコードをさらしてみなよ
>>1のコード晒しサイト使って
827デフォルトの名無しさん:2010/05/24(月) 02:27:56
>>825
C/C++で有効な高速化手法と.NET(C#)で有効な高速化手法はかなり違うので注意。
例えば配列の列挙はfor文よりforeachの方が圧倒的に早いとか、
カウンタ(int i)の判定条件はローカル変数で受けるよりも
毎回arr.Lengthと直接比較した方が却って動作が早くなる、とか。

総じて素直に書いた方が却って早くなる。
基本的には素直に書いてみて、遅いようなら高速化手法を考える程度でいいはず。
828デフォルトの名無しさん:2010/05/24(月) 02:36:22
> 基本的には素直に書いてみて、遅いようなら高速化手法を考える程度でいいはず。
これは言語に係わらない基本だろう
829デフォルトの名無しさん:2010/05/24(月) 02:39:41
>>822
constが無理な場合があるとして、そのアプリでメモリ不足になることはなくても
他のアプリのメモリ不足を考慮してるとはおもえないんですが、
GCには完全に頼れないから外で宣言するとして
その分岐点は何ですか?GCに頼るのは動けばいいやプログラミングなんでしょうか?
830デフォルトの名無しさん:2010/05/24(月) 02:46:19
おいおい、今時のPCで他のアプリのメモリ不足とかなんの話だよ
831デフォルトの名無しさん:2010/05/24(月) 03:23:16
>>830
数ギガ単位のファイルを扱う用途だと問題になる
832デフォルトの名無しさん:2010/05/24(月) 03:41:48
>>831
数ギガ単位のファイルをメモリに読み込むのか?それってGCあってもなくてもメモリ不足になるだろw
833デフォルトの名無しさん:2010/05/24(月) 04:19:22
GCのコストはデストラクタの有無で極端に差が出る。
デストラクタやDisposeがないオブジェクトではほとんど気にしなくていい。

string a = "b"; では新しいオブジェクトは作られない。以下はその検証コード。
コメントの部分と入れ替えると毎回新しいstringを生成するコードになる。
string sv = "";
for (int i=0; i<10; i++) {
  string a = "b";
  //string a = new string(new char [] {'b'});
  Console.WriteLine(object.ReferenceEquals(a, sv) ? "O" : "X");
  sv = a;
}
834デフォルトの名無しさん:2010/05/24(月) 04:24:10
>>833
char[]は外で一回だけ作るようにした方が検証として正しい気がする
835デフォルトの名無しさん:2010/05/24(月) 06:09:42
ループの中でhoge[i]のプロパティなりメソッドなりに何回もアクセスする場合は
毎回インデックス位置を計算されたりインデクサにアクセスされるんじゃないかと思って
そのまま書かずに、一旦
var item = hoge[i];
みたいに保存してから使ってるんだけどやらなくてもいいの?
最適化ONにしたら勝手にキャッシュしてくれる?
836デフォルトの名無しさん:2010/05/24(月) 06:19:24
hoge[i]をキャッシュしても誤差程度の違いしかない。
最適化はプロファイル取ってからボトルネックになってる箇所を重点的にやれと
837デフォルトの名無しさん:2010/05/24(月) 08:57:14
string a = "b"; の話、今コンパイル結果の IL 見てみたけども、
ldstr "b" って命令になってるな。
new されてない。JIT 結果もたぶん、定数領域のポインター代入だけになると思う。
GC 働かない。
838デフォルトの名無しさん:2010/05/24(月) 09:02:16
>>837
そりゃあそうだ。stringはimmutableなオブジェクトだから
定数リテラルをそのまま指せるし。
あくまで文字列演算を大規模にループでおこなうという意味で書いてたんだが、
string a = "b";
を繰り返すことだけを質問してたの?
839デフォルトの名無しさん:2010/05/24(月) 09:08:15
>>838
一番大元の質問が、ループ中の string a = "b"; はどういう結果招きますか
1. GC かかって大変になる?
2. GC かかった場合のパフォーマンスってどうなの?他のアプリに迷惑かけない?
だったかと。
840デフォルトの名無しさん:2010/05/24(月) 09:12:07
これもテンプレ質問だよなー
完成して実用に耐えなかったら言えと
空が落ちてくる心配をした昔の人みたいだよ
841デフォルトの名無しさん:2010/05/24(月) 11:49:07
XElementを初めて使ってみた
なんだこれ
なんでXmlDocumentなんて使ってたんだ
842デフォルトの名無しさん:2010/05/24(月) 12:25:31
>>840
趣味マか?
843デフォルトの名無しさん:2010/05/24(月) 12:36:28
プロが初心者スレで質問してたら笑うだろ
844デフォルトの名無しさん:2010/05/24(月) 12:47:05
いえてるw
845デフォルトの名無しさん:2010/05/24(月) 13:19:54
身分がプロでも心が主人公ならば問題ありません(青春18きっぷ的に)
846デフォルトの名無しさん:2010/05/24(月) 13:44:10
プロと初心者は相容れない概念じゃないな
847デフォルトの名無しさん:2010/05/24(月) 14:10:47
じゃないな
848デフォルトの名無しさん:2010/05/24(月) 14:11:38
じゃね
849デフォルトの名無しさん:2010/05/24(月) 14:32:26
じゃ
850デフォルトの名無しさん:2010/05/24(月) 14:33:10
>>GCに頼るのは動けばいいやプログラミング
>>GCに頼るのは動けばいいやプログラミング
>>GCに頼るのは動けばいいやプログラミング
851デフォルトの名無しさん:2010/05/24(月) 14:37:20
箱の中で何やってんだかw
C#では戦争も終わらないし食糧不足も解決できない
そもそもプログラムで解決できること自体が箱の中の事象でしかない
趣味もプロも糞もない
どこからが企業の戦略なのかを読み違えるのは良くない
852デフォルトの名無しさん:2010/05/24(月) 14:46:07
動けばいいやの前に動くもの作ってみろよ
口だけが
853デフォルトの名無しさん:2010/05/24(月) 14:48:35
たとえば、ソフトを作っても何も生み出さない。株の売買が仕事だと思ってるのと同次元。
生み出しているものは失業率の増加と貧富の格差でしかない
人間が時間と交換に取り組むようなことじゃない
これを踏まえた上で初心者スレであえて聞いているのでは?
854デフォルトの名無しさん:2010/05/24(月) 14:50:21
そのうち人間の労働時間は一日4時間程度になる
855デフォルトの名無しさん:2010/05/24(月) 14:59:42
読み取り専用のプロパティが定義されてる基底クラスを継承したクラスに、
同じ名前のプロパティで書き込みを可能にすることって出来ないのかな
856デフォルトの名無しさん:2010/05/24(月) 15:05:46
>>853
一体何の話してんの?
857デフォルトの名無しさん:2010/05/24(月) 15:11:45
痛い子にいちいち構うなって
858デフォルトの名無しさん:2010/05/24(月) 15:28:33
>>855
override new
すればいけるが、そんなインターフェイスはお勧めできないな。
859デフォルトの名無しさん:2010/05/24(月) 15:58:20
>>858
やらないほうがいいから出来ないってことか。ありがとん

>>856
分からないなら黙ってればいいのに
860デフォルトの名無しさん:2010/05/24(月) 16:03:21
>>856
彼によれば2chの初心者質問スレを荒らすのが、人間が時間と交換に取り組むようなことらしい。
861デフォルトの名無しさん:2010/05/24(月) 16:06:32
ごめんなさい以下は無視してください

>>>>856
>>分からないなら黙ってればいいのに
862デフォルトの名無しさん:2010/05/24(月) 16:10:55
嵐だと無職は引きこもるしかないだろうからな
863デフォルトの名無しさん:2010/05/24(月) 16:26:23
>>861
アンカー先もろくにみないで書いたんだろうが
そういう間抜けなとこを無視はできないな
864デフォルトの名無しさん:2010/05/24(月) 16:28:35
( ゚д゚ )
865デフォルトの名無しさん:2010/05/24(月) 17:00:20
VSC2008で開発しています。
webBrowserについて質問です。
Form1にwebBrowserを設置して使うと、普通はa hrefタグの場合はクリックでそのウィンドウ内でリンクを開きますが、new windowなどのタグにかかわらず、リンクをクリックしたら、別のForm2を開くようにしたいです。
どのようにしたらよいか皆目見当がつかないので、どなたかご教示いただけないでしょうか。
866デフォルトの名無しさん:2010/05/24(月) 17:03:01
NewWindow2 またはNewWindow3
867デフォルトの名無しさん:2010/05/24(月) 17:10:02
>>865
http://cs2ch.blog123.fc2.com/blog-entry-68.html
サンプルコードの113行〜139行までがそれぽく使えるかな
System.Diagnostics.Process.Start(link);
のところをForm2なりを起動するコードに書き換えて置けばいいかも
868デフォルトの名無しさん:2010/05/24(月) 17:34:58
>>867
HtmlElement clickedElement = this.Document.GetElementFromPoint(e.MousePosition);
'Form1.Form1' に 'Document' の定義が含まれておらず、型 'Form1.Form1' の最初の引数を受け付ける拡張メソッドが見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
と出るんですが、どうしたらいいですか?
869デフォルトの名無しさん:2010/05/24(月) 17:37:26
そのサンプルコードはwebBrowserクラスを継承した別クラスにしてあるから・・・
というかその辺も説明しないと駄目なレベルなの?
870デフォルトの名無しさん:2010/05/24(月) 17:43:36
thisをWebBrowserのインスタンスに変えて味噌
871デフォルトの名無しさん:2010/05/24(月) 17:49:26
この調子だとイベントハンドラの設定も説明しないと動かないんでけど〜
とか言ってきそうだな
872デフォルトの名無しさん:2010/05/24(月) 17:57:19
「皆目見当がつかない」というのはそういうことかとw
873デフォルトの名無しさん:2010/05/24(月) 18:04:41
まあできないならできないで早めにギブアップした方がいいぞ
874デフォルトの名無しさん:2010/05/24(月) 18:09:11
諦めたら試合終了だけどまずルールブックよめ
875デフォルトの名無しさん:2010/05/24(月) 18:17:27
ですね
876デフォルトの名無しさん:2010/05/24(月) 18:30:02
アマゾンの出品価格更新がつらいので自動で更新したいんですが、
テキストボックスに金額入れて更新ボタン押しても変更はありませんとでるんですが
DomElement.InnerText と SetAttribute のどっちで入力しても変更できません
どうなってるんですか?
877デフォルトの名無しさん:2010/05/24(月) 18:30:54
起動してから一番最初の処理をしたいんだけど、
コンストラクタからだと、まだ、他のコントロールの作成が終わって居なくて、
処理できないって時は、どうしたら一番自然ですかね?
878デフォルトの名無しさん:2010/05/24(月) 18:32:30
InitializeCompornetの後に書けばいいんじゃね?
879デフォルトの名無しさん:2010/05/24(月) 18:38:25
その場所だと、
this.ActiveControl.TabIndex
このプロパティにアクセスできないんですよね。

起動した直後に、アクティブコントロールは設定されてて、実際、文字入力できるように
カーソルが出てくるのにな。
なんでだろ?

880デフォルトの名無しさん:2010/05/24(月) 18:40:08
表示される前にアクティブもクソも

いや何でもないです
881デフォルトの名無しさん:2010/05/24(月) 18:41:12
フォームだったらShownでいいんじゃね
882デフォルトの名無しさん:2010/05/24(月) 18:42:58
>>876
どうなってるといわれてもわからねえ

>>877
>>878のいうようにコンストラクタの中で呼び出してる
InitializeComponent();
の後ならデザイナーで貼り付けたコントロールの実体はできてる
呼び出し前だとできてない
でもこのタイミングだとうまくいかない場合は
Loadイベントかその後のShownイベントとかでやるといいかも
883デフォルトの名無しさん:2010/05/24(月) 18:44:07
>>882
あなたには言ってません
884デフォルトの名無しさん:2010/05/24(月) 18:48:34
おれもわからねえ
885デフォルトの名無しさん:2010/05/24(月) 18:49:03
エスパーでお願いします!
886デフォルトの名無しさん:2010/05/24(月) 18:50:48
HtmlElementで取り込んだ後、値を変更したら戻さないとだめじゃね?
887デフォルトの名無しさん:2010/05/24(月) 19:00:21
>>882
ありがとうございました。
888デフォルトの名無しさん:2010/05/24(月) 19:00:24
>>870
できました。ありがとうございます。
で、次のようにして、ブラウザでリンクをクリックしてみましたが、

if (link != null && link != "")
{
MessageBox.Show("test");
System.Diagnostics.Process.Start(link);
}
普通にリンクをおなじウィンドウ内で開いてしまいます。
MessageBoxも表示されないということは、この
void WebBrowserExDocument_Click(object sender, HtmlElementEventArgs e)
のイベントハンドラをどこかで作る必要があるのかなと思うのです。
[デザイン]のwebBrowserでイベントハンドラを見ても、DocumentConpletedとかはあるのですが、それらしいものがありません。
どのようにしたらよいですか?
889デフォルトの名無しさん:2010/05/24(月) 19:51:44
>>888
ご所望の動作ぽいのはできた
http://ideone.com/uFKR0

でもなぜかイベントが3回呼ばれるw
890デフォルトの名無しさん:2010/05/24(月) 20:27:56
クリップボードにttp://***.com/のような文字列があった場合、ttpをhttpに書き換えてくれるような
ツールを作りたいのですが、クリップボードの内容の変更を検知するにはどうするのがいいのでしょうか?
891デフォルトの名無しさん:2010/05/24(月) 20:32:09
>>890
クリップボード C#
でググれ
892デフォルトの名無しさん:2010/05/24(月) 20:32:35
タイマー使って一定サイクルで監視して・・・とかになるんじゃないの?
イベントがあったかはわからんw
893デフォルトの名無しさん:2010/05/24(月) 20:40:47
クリップボードビューアチェイン
894889:2010/05/24(月) 21:06:50
思い出した
DocumentCompletedだとメインのhtmlで1回、jsがあればその個数分イベントが起きるんだった
Navigatedだと多分1回になると思う
895デフォルトの名無しさん:2010/05/24(月) 21:21:00
>>890
確かイベントがあったはず
Clipboard C#でくぐれ
896デフォルトの名無しさん:2010/05/24(月) 21:28:47
>例えば配列の列挙はfor文よりforeachの方が圧倒的に早いとか、
でたらめもいいとこ。
897デフォルトの名無しさん:2010/05/24(月) 21:29:57
>>889、894
たいへんありがとうございます。
早速試してみています。

private void GmailChcker_Load(object sender, EventArgs e)
{
this.webBrowser.Navigate("http://pc12.2ch.net/test/read.cgi/tech/1272309948/");
}
private void webBrowser_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
webBrowser.Document.Click += new HtmlElementEventHandler(WebBrowserExDocument_Click);
}
でなんとかなってきたのですが、2chだとオーケーだけど、Gmailだとだめなんです。
なぜでしょう?
898デフォルトの名無しさん:2010/05/24(月) 21:30:29
>>896
コードで示せ
899デフォルトの名無しさん:2010/05/24(月) 21:33:35
>例えば配列の列挙はfor文よりforeachの方が圧倒的に早いとか、
必ずしも間違いじゃないよ
forだと回し方によっては最適化が効かないけどforeachは確実に最適化される
900889:2010/05/24(月) 21:34:11
gmailはajaxだからなあ
2chの場合js使ってるといっても基本的にはhtmlよりのことしかしてないはず
901デフォルトの名無しさん:2010/05/24(月) 21:35:41
int[] iForeach = new int[10000];
int ibuff = 0;
foreach ( int i in iForeach )
{
ibuff += i;
}


ibuff = 0;
for( int i ; i < iForeach.Length; i++)
{
ibuff += i;
}

どっちが速いん
902デフォルトの名無しさん:2010/05/24(月) 21:37:46
forとforeachは途中でエラーが出たときに安全かどうかも違うのかな
903デフォルトの名無しさん:2010/05/24(月) 21:38:19
GMailのフル機能版じゃなくて、モバイル向けのやつでやってみれば?
904889:2010/05/24(月) 21:38:41
>>901
それなんかおかしくね?
905デフォルトの名無しさん:2010/05/24(月) 21:45:59
for( int i ; i < iForeach.Length; i++)
{
ibuff += iForeach[i];
}

こうか。これだとForの方が遅い気はする
906デフォルトの名無しさん:2010/05/24(月) 22:01:17
IL見りゃ一目瞭然。コード示せとか、なに馬鹿言ってんだか。
907デフォルトの名無しさん:2010/05/24(月) 22:02:31
実際>>901のforeachと>>905のforはほぼ完全に同じコードになる
forはfor(int i = 0; i < iForeach.Length; i++)の形が崩れると途端に遅くなる
基本的に自由度が低い方が最適化しやすいんだよ
908デフォルトの名無しさん:2010/05/24(月) 22:09:24
>>890-893
昔、ClipboardWatcherとか作ったなぁ
SetClipboardViewerとNativeWindow使うやつ
909デフォルトの名無しさん:2010/05/24(月) 22:19:41
>>906
一目瞭然だから突っ込まれてんだろ
馬鹿か
910デフォルトの名無しさん:2010/05/24(月) 22:37:58
こんな感じのコードで試してみた。

const int SIZE = 100;
Random rnd = new Random();
Stopwatch sw1 = new Stopwatch();
Stopwatch sw2 = new Stopwatch();
int[] array1 = new int[SIZE];
for(int i = 0; i < array1.Length; ++i){
array1[i] = rnd.Next(100);
}
int[] array2 = new int[SIZE];
for(int i = 0; i < array2.Length; ++i){
array2[i] = rnd.Next(100);
}

int sum = 0;
sw1.Start();
for(int i = 0; i < SIZE; ++i){
sum += array1[i];
}
sw1.Stop();
TimeSpan ts1 = sw1.Elapsed;
Console.WriteLine(ts1 + "(for)");

sum = 0;
sw2.Start();
foreach(int i in array2){
sum += i;
}
sw2.Stop();
TimeSpan ts2 = sw2.Elapsed;
Console.WriteLine(ts2 + "(foreach)");
911デフォルトの名無しさん:2010/05/24(月) 22:39:24
結果

SIZE=100のとき
00:00:00.0000025(for)
00:00:00.0000006(foreach)
SIZE=10000のとき
00:00:00.0000243(for)
00:00:00.0000173(foreach)

確かにforeachのほうが少し速いようだ
912デフォルトの名無しさん:2010/05/24(月) 22:44:34
i < SIZEはダメ
forは絶対にfor(int i = 0; i < array.Length; i++)の形を崩してはいけない
913デフォルトの名無しさん:2010/05/24(月) 22:49:11
SIZEを外に出すと配列の範囲チェックで最適化効かなくなるからね。
914デフォルトの名無しさん:2010/05/24(月) 22:50:38
効かなくなるね
915デフォルトの名無しさん:2010/05/24(月) 22:54:47
なるね
916デフォルトの名無しさん:2010/05/24(月) 22:55:44
なるね
917デフォルトの名無しさん:2010/05/24(月) 22:57:02
array.Lengthにしても結果はほとんどかわらなかった。
SIZE=100のとき
00:00:00.0000023(for)
00:00:00.0000006(foreach)
918デフォルトの名無しさん:2010/05/24(月) 22:58:02
forの方が早いって言ったら馬鹿にされたので逆恨みして荒らしてるのか
919デフォルトの名無しさん:2010/05/24(月) 22:59:39
>>903
モバイル版って、BasicHTMLというものですか?
それでためしたところ、ソースでは、次のようになっていました。

<tr bgcolor="#E8EEF7">
<td>
<input type=checkbox name=t
value="123abcd45cd1234b">
<img src="/mail/images/star_on_2.gif"
width=15 height=15 border=0 alt=Starred>
</td>
<td>
name</td>
<td>
<a href="?v=c&th=123abcd45cd1234b">
<span class=ts><font size=1><font color=#006633>
</font></font>
タイトル
<font color=#7777CC> 本文</font></span>
</a></td>
<td nowrap>
May 19

これで、本文をクリックしても、clickedElement.TagNameには、fontという名前しか入らないのです。
920デフォルトの名無しさん:2010/05/24(月) 23:00:35
最低だな
921デフォルトの名無しさん:2010/05/24(月) 23:02:41
100は少なすぎる
forがforeachを超えられないのは事実だけど
きちんと書けば同じコードになるのも事実なので絶対にそんなに差は出ない
922デフォルトの名無しさん:2010/05/24(月) 23:09:56
なんとなく俺もやってみた。

俺の環境だと何か 10000 以上の配列に対しては
for の方が何故か早かった。
それ以下はforeach
まあ、(1000, 10000)の範囲内で正確に測ってみないと具体的な長さはわからんが。
923デフォルトの名無しさん:2010/05/24(月) 23:14:29
>>919
その辺になってくるとスレチだからJavascriptやhtml関連を勉強した方がいいよ
その辺を理解してないと無理
924デフォルトの名無しさん:2010/05/24(月) 23:46:09
もうだめ(´・ω・`)
925デフォルトの名無しさん:2010/05/24(月) 23:49:12
よしあきらめろ
そして二度と来るな
926デフォルトの名無しさん:2010/05/25(火) 07:18:28
C#の勉強を昨日始めた者です。
Javaとよく似てるので順調に参考書を半分ほど読み進めましたが、
下のサンプルの実行結果が納得できません。
927926:2010/05/25(火) 07:21:10
すみません、コードを書かずに送信してしまいました。

using System;
namespace CS9_5
{
class Program
{
static void Main(string[] args)
{
Recurrence x = new Recurrence { Depth = 8 };
x.Execute();
Console.ReadLine();
}
}
class Recurrence
{
public int Depth { get; set; }
public void Execute() { Stack(0); }
private void Stack(int value)
{
++value;
Show(value);
if (value < Depth) Stack(value);
Show(value);
}
private void Show(int value)
{
for(int i = 0; i < value; ++i) Console.Write("○");
Console.WriteLine();
}
}
}
928926:2010/05/25(火) 07:22:23
実行すると、


○○
○○○
○○○○
○○○○○
○○○○○○
○○○○○○○
○○○○○○○○
○○○○○○○○
○○○○○○○
○○○○○○
○○○○○
○○○○
○○○
○○


と表示されます。
丸が増えていって8つに達するのは理解できますが、
その後なぜ減っていくのでしょうか?
929デフォルトの名無しさん:2010/05/25(火) 07:25:36
Stack(0); の動作は

valueを0で初期化
valueに1を足し、1にする
○をvalue個(1個)出力する
Stack(1);を実行する
○をvalue個(1個)出力する

だから
これを続けていけばそうなる
930デフォルトの名無しさん:2010/05/25(火) 07:51:49
>>929
ありがとうございます。
その動作の五行目は「○をvalue個(2個)出力する」ですよね?

わかった気がするので確認させていただきますが、
以下のような動作でしょうか。

valueの値が一つずつ増えていって8になると
if (value < Depth)のところで偽となって
次の行のShow(8)が実行される。
つまり、○が8つ表示されて改行。

その後なんですけど、
Stack(8)より先に実行していたStack(7)が
「if (value < Depth) Stack(value);」のところで止まったままになってて、
Stack(8)が終わったとたんに続きが動き出すってことでしょうか?
Stack(7)が終わるとStack(6)の続き、
Stack(6)が終わるとStack(5)の続き、というように・・・。
難しいですね。
931デフォルトの名無しさん:2010/05/25(火) 07:58:13
>>927
そりゃStack(int value)が受け取ってるのは値渡しされたコピーだからでしょ
932デフォルトの名無しさん:2010/05/25(火) 07:59:34
>>930
難しくないだろw
933デフォルトの名無しさん:2010/05/25(火) 08:02:36
>>930
ブレークポイント設定して動かしてみ
よく分かるから
934デフォルトの名無しさん:2010/05/25(火) 08:04:50
Javaはほとんど知らないんだけど、intも参照渡しされたりするのか?
935デフォルトの名無しさん:2010/05/25(火) 08:07:47
>>899
状況によってというか処理によってはそうなりうることはわかってる。

でも
>例えば配列の列挙はfor文よりforeachの方が圧倒的に早いとか、
「配列の列挙」にもいろいろあるかもしれんが、普通に読んだら普通の列挙処理だろ。

まあ試してみればわかるけど、誤差レベル。
圧倒的なんてことにはならない。

>>917
100回て、今どきのマシンなら数100ナノ秒以内で終わるぜ。
ちなみにStopwatchで時刻を取得するのにかかる時間は目安としてマイクロ秒オーダだw

あと極端に差があるなら測る順番を変えてみ、逆転したりするから。
936926:2010/05/25(火) 08:10:55
>>931
それは理解してましたが、
Stack(1)〜Stack(7)が終わらずに残っていることを
見落としてました。

>>932
理解すれば簡単なことだったんだなと思いますけど、
自分で>>927のような風に書けるようになる気がしません…。

>>933
ブレークポイント設定して確認してみました。
これわかりやすいですね。
今後困ったときはまた使ってみます。

>>934
いえ、Javaでもintは値渡しです。
937デフォルトの名無しさん:2010/05/25(火) 08:12:28
>>936
これって再帰のサンプルでしょ?
938デフォルトの名無しさん:2010/05/25(火) 08:12:35
>>930
>Stack(8)より先に実行していたStack(7)が
>「if (value < Depth) Stack(value);」のところで止まったままになってて、
>Stack(8)が終わったとたんに続きが動き出すってことでしょうか?

典型的な、オブジェクト指向のいろんな記述を変な風に理解してしまったクチだろう。
オブジェクトや、あるいはメソッドの呼び出しを、なんというか完全に独立した実行単位というか、実行主体というか、
そんな風に思ってしまってる感じ。
ただ一連の処理の流れ、内部的には単なるサブルーチン呼び出しという感覚が分かっていない。
939デフォルトの名無しさん:2010/05/25(火) 08:14:27
ああ、つまり、止まってるとかじゃなくて、今まさにStack(8)を実行中なんだ。
940デフォルトの名無しさん:2010/05/25(火) 08:18:12
>>937
クラスのメンバの部分のまとめのサンプルです。
突然再帰を使って例示されてます。

>>938
そうですね。
他のメソッドを呼び出してそっちが一通り動いた後で戻ってきただけですよね。
オブジェクト指向に初めて触れるわけでもないのに、こんなのがわかってなくて恥ずかしいです。
このサンプルでよく理解できたので、その意味ではよくできたサンプルかもしれませんね。
941デフォルトの名無しさん:2010/05/25(火) 08:20:40
>>940
いや、どっちかっていうとオブジェクト指向から入った人間が勘違いしやすい。
手続型から入った人間はそういう勘違いはないんだよね。
942デフォルトの名無しさん:2010/05/25(火) 08:21:36
とりあえず言語の勉強と並行してアルゴリズム・データ構造の勉強もした方がいいと思うよ
943935:2010/05/25(火) 08:22:45
ちなみに100万回ループで試してみた実行時間ミリ秒
for 1回目:02.247
foreach 1回目:02.148
for 2回目:02.203
foreach 2回目:02.099
for 3回目:02.179
foreach 3回目:02.147
for 4回目:02.117
foreach 4回目:02.137
944デフォルトの名無しさん:2010/05/25(火) 08:22:57
ref つけるとintも参照渡しできたっけ?
945926:2010/05/25(火) 08:25:48
>>942
アドバイスありがとうございます。
悲しいことに、昔Cをやったときにアルゴリズムの勉強もしたことがあるんです。
身についてないってことですよね。
横に「Cによるはじめてのアルゴリズム入門」っていう本が転がってるので
読み直してみます。
946デフォルトの名無しさん:2010/05/25(火) 08:26:37
Cやってたんかいw
947デフォルトの名無しさん:2010/05/25(火) 08:29:54
ちなみにRecurrenceクラスをこんな風に変更すると

    class Recurrence
    {
        public int Depth { get; set; }
        public void Execute() 
        {
            int value = 0;
            Stack(ref value);
        }
        private void Stack(ref int value)
        {
            ++value;
            Show(value);
            if (value < Depth) Stack(ref value);
            Show(value);
        }
        private void Show(int value)
        {
            for (int i = 0; i < value; ++i) Console.Write("○");
            Console.WriteLine();
        }
    }

続く
948947:2010/05/25(火) 08:31:07

○○
○○○
○○○○
○○○○○
○○○○○○
○○○○○○○
○○○○○○○○
○○○○○○○○
○○○○○○○○
○○○○○○○○
○○○○○○○○
○○○○○○○○
○○○○○○○○
○○○○○○○○
○○○○○○○○

こうなる
949935:2010/05/25(火) 08:44:25
ちなみに俺のマシンで
Stopwatch watch;
watch = Stopwatch.StartNew();
watch.Stop();
Console.WriteLine(watch.Elapsed.TotalMilliseconds.ToString("0,0.000000"));
watch = Stopwatch.StartNew();
watch.Stop();
Console.WriteLine(watch.Elapsed.TotalMilliseconds.ToString("0,0.000000"));
watch = Stopwatch.StartNew();
watch.Stop();
Console.WriteLine(watch.Elapsed.TotalMilliseconds.ToString("0,0.000000"));
watch = Stopwatch.StartNew();
watch.Stop();
Console.WriteLine(watch.Elapsed.TotalMilliseconds.ToString("0,0.000000"));

これを実行すると、
00.000600
00.000600
00.000600
00.000600
つまり計測に600ナノ秒ほどかかってる(一昔前のマシンでは数マイクロ秒くらいかかってた)。
100万回ループで約2ミリ秒だから、100回ループなら約200ナノ秒。
950デフォルトの名無しさん:2010/05/25(火) 08:52:25
俺の00.001900
だった

まぁどっちにしろそこまで敏感になる問題じゃないな
951デフォルトの名無しさん:2010/05/25(火) 09:11:42
>>927
> for(int i = 0; i < value; ++i) Console.Write("○");
どこのサンプルか知らんけど、アホなことしてるな
.NETならstring(char, int)コンストラクタ使えと
952デフォルトの名無しさん:2010/05/25(火) 09:52:40
昨日のコマ大の問題

各桁の数字が相異なり、どれも0でないような3桁の正の整数nがある。
nの各数字を並べて出来る6つの数の最大公約数をgとする。
gとして考えられる最大の値を求めよ。
953デフォルトの名無しさん:2010/05/25(火) 10:38:06
18
954デフォルトの名無しさん:2010/05/25(火) 10:38:17
("○")
(^○^)
(-○-)
955デフォルトの名無しさん:2010/05/25(火) 10:59:29
C#初心者です。
マウスの右クリック(コンテキストメニュー)と右ドラッグ(ダウン-移動-アップ)で、
異なる処理を割り当てるにはどうしたらよいですか?
956デフォルトの名無しさん:2010/05/25(火) 11:14:34
どのレベルで処理するのかわからんけど、
ダウン後移動があったらドラッグ扱いでいいんじゃないかな
957デフォルトの名無しさん:2010/05/25(火) 11:35:37
C#つうかPG初心者と言ったところか・・・

1.マウスダウンでフラグセット・マウス位置記憶

2.マウス移動で移動量を記憶

3.アップで
 A.移動量が既定の移動量に達していない場合はコンテキストメニューを表示
 B.移動量が既定の移動量に達している場合、右ドラッグの処理

みたいなんじゃいかんのかな?

コントロールの移動とかからむとめんどくさそうだけど
958デフォルトの名無しさん:2010/05/25(火) 11:57:55
>>956、957
右クリックすると、コンテキストメニューが開いちゃうのですが、それをどうキャンセルすればいいんでしょう?
まずは、
private void img_MouseRightButtonDown(object sender, MouseButtonEventArgs e){
MessageBox.Show("mousedown");
}

private void img_MouseRightButtonUp(object sender, MouseButtonEventArgs e){
MessageBox.Show("mouseup");
}
としてみたんですけど、MessageBoxが開かず、コンテキストメニューが開いてます。
959デフォルトの名無しさん:2010/05/25(火) 12:03:53
コンテキストメニューを割り当てないようにしたらいいんじゃないかな・・・・
960デフォルトの名無しさん:2010/05/25(火) 12:11:41
ContextMenuStripプロパティにセットするのをやめて
イベント時にShowするとかかな
961デフォルトの名無しさん:2010/05/25(火) 12:22:25
>>935
配列に対してfor文でカウンタを回しながら要素アクセスを行うと、
添字の範囲チェックが行われる。
これはtry〜catchの例外処理が挟まれることに相当するので、単独でこの部分だけを見ると差は大きい。

処理時間の差が大きくなるかどうかはループあたりの処理量とループ回数の比によって異なる。
ベンチマーク的な空ループに近い処理や、巨大なbyte[]に対する処理などではバカにならないぞ。

>>949,950
ちげーよ。Stopwatchは計測にパフォーマンスカウンタを使用する。

パフォーマンスカウンタは一般的に精度がシステムごとに固定値(例えば100万分の1秒)になっているか
CPUのクロック数に依存するかなので、
それ未満の経過時間の場合はそんなふうに固定時間ずれているように見える。
実際はそうじゃないかもしれないんだぞ。
.NETの場合はどういう実装になっているのかは誰か調べといてください。
962デフォルトの名無しさん:2010/05/25(火) 12:24:19
>>958
ContextMenuプロパティを設定するのをやめて、MouseDown/MouseUpを独自に実装するのはどうだ?
963デフォルトの名無しさん:2010/05/25(火) 12:28:26
>>960
bool mousemove = false;
private void img_MouseRightButtonDown(object sender, MouseButtonEventArgs e){
mousemove = true;
//マウス位置取得
MessageBox.Show("mousedown" + mousemove);
}

private void img_MouseRightButtonUp(object sender, MouseButtonEventArgs e){
//マウス位置取得
//マウス位置計算
if (移動量 > たとえば20ピクセル) MessageBox.Show("mouseup");
else ContextMenu.Show();
}
とかですか?
コンテキストメニューって、どこでプロパティにセットしているんでしょう?
964デフォルトの名無しさん:2010/05/25(火) 12:32:16
>>963
マウスの位置はMouseButtonEventArgsに入ってるべ?
ContextMenuStripはそのコントロールのプロパティの動作あたりに無いか?
965デフォルトの名無しさん:2010/05/25(火) 12:38:31
>>961
QueryPerformanceCounterの替りに実装できるて書いてるくらいだから
内部でそれつかってんじゃね?
966デフォルトの名無しさん:2010/05/25(火) 13:21:32
>>964
bool mousemove = false;
int startX;
int startY;
private void img_MouseRightButtonDown(object sender, MouseButtonEventArgs e){
mousemove = true;
//マウス位置取得
startX = e.X;
startY = e.Y;
MessageBox.Show("mousedown" + mousemove);
}

private void img_MouseRightButtonUp(object sender, MouseButtonEventArgs e){
//マウス位置取得。マウス位置計算
//if (移動量 > たとえば20ピクセル)
if ((e.X - startX) * (e.Y - startY) > 20 || (e.X - startX) * (e.Y - startY) < -20 MessageBox.Show("mouseup");
else ContextMenu.Show();
}
こんな感じでしょうか。
967947:2010/05/25(火) 13:24:42
面倒なことやってるねw

なんで左を使わないの?
968デフォルトの名無しさん:2010/05/25(火) 13:28:05
好きにやってみて思った通り動かないところを聞いてくれ
マウスアップがコントロールから外れると来なくなるから
Captureプロパティも使った方がいいかも

メニュー表示はこんな感じかな
ContextMenu.Show(img.PointToScreen(e.Location));
969デフォルトの名無しさん:2010/05/25(火) 13:30:44
>>964,968
コンテキストメニューのイベントハンドラが見つからないんですけど、
<Grid Name="img" MouseRightButtonDown="img_MouseRightButtonDown" MouseRightButtonUp="img_MouseRightButtonUp">
<Grid.ContextMenu>
<ContextMenu Name="contextMenu">
<MenuItem Header="コピー" Name="copy" Click="copy_Click" />
</ContextMenu>
</Grid.ContextMenu>
</Grid>
の場合、どうキャンセルすればいいんでしょう?
単に<Grid.ContextMenu>から</Grid.ContextMenu>までをコメントアウトしちゃうと、.csのコンテキストメニュー関係が全滅しちゃうのですが…。

>>967
左は描画に使う予定です。
http://homepage3.nifty.com/midori_no_bike/CS/graphics.html
を参考にしてます。
970947:2010/05/25(火) 13:32:27
>>969
なるほど〜なんだけどさw
WinFormじゃなくてWPFなの?
971デフォルトの名無しさん:2010/05/25(火) 14:07:18
確かにMouseButtonEventArgsはWPF用のイベント引数だったなw

<ContextMenu>は<Window.Resources>辺りで宣言
C#のコードからはthis.Resources[]で取得
とかする

あとWPFでそのページはあんま役に立たんと思うぞ
972デフォルトの名無しさん:2010/05/25(火) 14:21:07
>>971
ありがとうございます。
<Window.Resources>
<Window.ContextMenu>
<ContextMenu Name="contextMenu">
<MenuItem Header="コピー" Name="copy" Click="copy_Click" />
</ContextMenu>
</Window.ContextMenu>
</Window.Resources>
<Grid Name="img" MouseRightButtonDown="img_MouseRightButtonDown" MouseRightButtonUp="img_MouseRightButtonUp">
</Grid>
ってことですか?
これだと、「アタッチ可能なプロパティContextMenuが型Windowに見つかりませんでした」とエラーです。

WPFで、よい入門ページってご存じありませんか?
973947:2010/05/25(火) 14:24:24
>WPFで、よい入門ページってご存じありませんか?
ない

<Grid Name="img"

とかやって名前付けておけば従来のwinformのように

img.

ってやれば候補がでてくるので自分でそれっぽいの探してがんばるしかない
974デフォルトの名無しさん:2010/05/25(火) 14:30:25
>>973
Gridには名前つけましたが、Windowにも名前が必要ってことでしょうか?
975947:2010/05/25(火) 14:32:54
>>973
MSDNで調べてもいいけどざっくり見る場合の手段なだけだよw

XAMLの方でも候補は見えるけどやりにくいので
XAML側にはとりあえずNameつけておいてC#側で何が使えるか見るってだけ
976デフォルトの名無しさん:2010/05/25(火) 14:34:35
んー、WPFの基礎もできてない…
<Window.***> はWindowの***プロパティにセットする記述
C#のコードでWindow.*** = ...って書くのと同じ
だから
<Window.Resources>
  <Window.ContextMenu>
はイミフ
WindowのContextMenuにしたいわけじゃないんだからWindow.ContextMenuは関係ない
977デフォルトの名無しさん:2010/05/25(火) 14:40:06
>>969のイベントハンドラはXAMLに書かない方がいいんじゃね?
978デフォルトの名無しさん:2010/05/25(火) 15:12:46
VC#2010で同じことやろうとしたらGridのContextMenuがでねえw
979デフォルトの名無しさん:2010/05/25(火) 16:02:02
yieldを使用した反復子methodで、外部から入力を受け取ることは可能でしょうか?
Pythonにおけるgenerator.send(value) のようなものが欲しいんですが。
980デフォルトの名無しさん:2010/05/25(火) 16:48:06
>>979
IEnumerable<int> f(int i)
{
for (int j = 0; j < 10; j++)
{
yield return i * j;
}
}
こういう話?
981デフォルトの名無しさん:2010/05/25(火) 16:50:25
>>976
基礎がないから初心者ってことで…。

<Window.Resources>
あたりで宣言ってのはどうやるんですか?

>>977
イベントハンドラを、C#側に書くにはどうしたら?
982デフォルトの名無しさん:2010/05/25(火) 17:00:40
>>980
その例に合わせると、こんな感じでしょうか。
// 反復子メソッドの例
IEnumerable<int> f(int i)
{
bool continuation = true;
for (int j = 0; j < 10; j++)
{
continuation = yield return i * j;
if(!continuation)
break;
}
Console.WriteLine("iterater ended!");
}

// ユーザーコード
var g = f(5);
for (int m = 0; m < 3; m++)
{
k.MoveNext();
Console.WriteLine(k.Current);
}
k.send(false);
983デフォルトの名無しさん:2010/05/25(火) 17:04:50
>>961
知らないなら適当なこと言うなよ。
言っとくが、>>943のループの中身は足し算一回だぜ(配列の値を取り出して別の変数に足す)。

中身を足し算すらなしの、別変数への格納だけにしても、
01.325 for
01.046 foreach
00.730 for
00.719 foreach
00.701 for
00.696 foreach
00.697 for
00.709 foreach
こんな感じだ。
どこにバカにならない差があるって?
範囲チェックも、JITコンパイル時点で、オーバーすることはないことが確認できた場合は省かれるんだよ。
最初から、そうなるから差なんてないって話なのに今更何言ってるの?
984デフォルトの名無しさん:2010/05/25(火) 17:11:24
だから最初から状況によってって書いてあるじゃねえか
985デフォルトの名無しさん:2010/05/25(火) 17:12:30
あとパフォーマンスカウンタの話だが、まあ>>949のコード自体はよくなかった、
あの結果だけじゃ確かに何の説明にもならないからな。
※こっちはかかる時間を知ってるから、あれでも確認できるって分かってるだけだから。

で、これなら納得いくかい?
※Stopwatch.GetTimestampの中身はほぼ単なるQueryPerformanceCounterの呼び出しな
long[] t = new long[10];
for (int i = 0; i < t.Length; i++)
{
t[i] = Stopwatch.GetTimestamp();
}
for (int i = 1; i < t.Length; i++)
{
Console.WriteLine(((t[i] - t[i - 1]) * 1000.0 / Stopwatch.Frequency).ToString("0,0.000000000"));
}
結果、
00.000628572
00.000628572
00.000558730
00.000628572
00.000628572
00.000628572
00.000628572
00.000628572
結局QueryPerformanceCounterで600ナノ秒程度かかってるっていう結果には変わりないってこと。
そしてそんなので200ナノ秒程度しかかからない処理の時間を計測すること自体があほだってこと。
986デフォルトの名無しさん:2010/05/25(火) 17:19:05
>>984誰に言ってるのかわからないけど、
>>961はこう言ってる。

>>935
配列に対してfor文でカウンタを回しながら要素アクセスを行うと、
添字の範囲チェックが行われる。
これはtry〜catchの例外処理が挟まれることに相当するので、単独でこの部分だけを見ると差は大きい。

処理時間の差が大きくなるかどうかはループあたりの処理量とループ回数の比によって異なる。
ベンチマーク的な空ループに近い処理や、巨大なbyte[]に対する処理などではバカにならないぞ。
987デフォルトの名無しさん:2010/05/25(火) 17:21:09
>>982
〜〜の◯◯みたいな、だけじゃなくて具体的にどういう動作させたいのか書いてくれよ
その例もよく分からんが、fの第二引数にFunc<int, bool>でも持たせるとかするのはどう?
f()の中でi*jを計算してFunc<int,bool>を呼び出しyield breakする
988デフォルトの名無しさん:2010/05/25(火) 17:30:47
>>987
いただいた例が私のやりたかった処理にあまり似ていなかったためか、
うまく伝わらなかったようです。ごめんなさい。
こんな感じです。

// 反復子メソッドの例
void somework(...)
{
bool continuation = true;
for (int j = 0; j < **; j++)
{
// ターン処理
// ...
continuation = yield return ***;
if(!continuation)
break;
}
// 終了処理
// ...
return
}

// ユーザーコード
var g = somework();
var k = g.GetEnumerator();
while(k.MoveNext())
{
if(中断するかどうか)
k.send(false);
}
989デフォルトの名無しさん:2010/05/25(火) 17:30:54
>>985でもやっぱり納得いかないなら、こうだ。
watch = Stopwatch.StartNew();
long tmp;
for (int i = 0; i < 10000; i++)
{
tmp = Stopwatch.GetTimestamp();
}
watch.Stop();
Console.WriteLine(watch.Elapsed.TotalMilliseconds.ToString("0,0.000000"));
で、結果がこんな感じ。
06.734900
少なくとも平均的には、間違いなく1回の呼び出しで600〜700ナノ秒かかってる。
990デフォルトの名無しさん:2010/05/25(火) 17:36:40
>>988
で、987はどうよ
IEnumerable<int> f(int i, Func<int, bool> pred) {
  for (int k = 0; k < 10; ++k) {
    int x = i * k;
    if (pred(x))
      yield break;
    yield return x;
  }
}

foreach (var x in f(10, n => n > 30)) {
  Debug.WriteLine(x.ToString());
}
991デフォルトの名無しさん:2010/05/25(火) 17:43:14
>>988
http://ideone.com/l1Ypn
こういう感じに、状態を持ちつつyield returnするクラスが作りたいっていう話なんだろうか
992デフォルトの名無しさん:2010/05/25(火) 17:50:02
>>991
すばらしい!
まさにこういう事がしたかったんです。
ありがとうございます。
993デフォルトの名無しさん:2010/05/25(火) 18:09:15
>>981
xaml
<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525"
        Loaded="Window_Loaded">
    <Grid Name="img">
        
    </Grid>
</Window>
こんな感じでwindowにLoadedイベントを追加して

cs
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            img.MouseRightButtonDown += new MouseButtonEventHandler(img_MouseRightButtonDown);
        }

        void img_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
        {
            throw new NotImplementedException();
        }
こんな感じでイベントハンドラ追加
この方法だとwinformでやってたやり方に近くなる

完成イメージがつかめたらWPFらしい記述に直すとか
994デフォルトの名無しさん:2010/05/25(火) 18:15:39
xaml側でとりあえず名前付けてC#側でなんとかしなよ
って書いたのは理解してなかったのね・・・
995デフォルトの名無しさん:2010/05/25(火) 18:32:50
初心者スレでこんな議論が起きようとはw
996デフォルトの名無しさん:2010/05/25(火) 18:36:45
>>995
よくあるよw
最近は行ってないけどC/C++関連でもよくあった
997デフォルトの名無しさん:2010/05/25(火) 18:39:00
次たててくるわ
998デフォルトの名無しさん:2010/05/25(火) 18:42:59
ふらっとC#,C♯,C#(初心者用) Part60
http://pc12.2ch.net/test/read.cgi/tech/1274780512/
999デフォルトの名無しさん:2010/05/25(火) 18:46:49
>>998
1000デフォルトの名無しさん:2010/05/25(火) 18:54:29
うめ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。