ふらっとC#,C♯,C#(初心者用) Part59
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2010/04/27(火) 04:25:48「どんなにくだらない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ボタンを押すと
コードを鯖側にアップして専用のアドレスが発行されます。
0002デフォルトの名無しさん
2010/04/27(火) 07:26:040003デフォルトの名無しさん
2010/04/27(火) 08:12:56ライセンスがどうとかで読めるようにできないの?
0004デフォルトの名無しさん
2010/04/27(火) 09:31:050005デフォルトの名無しさん
2010/04/27(火) 09:46:22と
Point p2=new Point(100,100);
Point p1=p2
どう違うの?
0006デフォルトの名無しさん
2010/04/27(火) 10:26:37つまり、p2からの変更がそのままp1にも影響する。逆もしかり
0007デフォルトの名無しさん
2010/04/27(火) 10:38:53もしPointが自分で作ったclassなら仰るとおり。
0008デフォルトの名無しさん
2010/04/27(火) 10:43:460009デフォルトの名無しさん
2010/04/27(火) 10:48:350010デフォルトの名無しさん
2010/04/27(火) 11:04:390011デフォルトの名無しさん
2010/04/27(火) 12:34:25が、自分で回答したら同じことを行ったかもしれん
0012デフォルトの名無しさん
2010/04/27(火) 12:35:32あれ?4/27だったような・・・
0013デフォルトの名無しさん
2010/04/27(火) 12:52:41それどこ情報?
http://www.microsoft.com/japan/msdn/vstudio/express/
では27日だぞ
0014デフォルトの名無しさん
2010/04/27(火) 12:58:490015デフォルトの名無しさん
2010/04/27(火) 13:01:27今日はこれがなにより楽しみだったのに…
0016デフォルトの名無しさん
2010/04/27(火) 13:15:290017デフォルトの名無しさん
2010/04/27(火) 13:21:420018デフォルトの名無しさん
2010/04/27(火) 13:58:36wktkしてたのに…
0019デフォルトの名無しさん
2010/04/27(火) 15:06:36alt,spaceキーをおしたときにMenu画面(拡大縮小などができる)が表示されます
このメニューを表示しないようにできませんか?
0020デフォルトの名無しさん
2010/04/27(火) 15:14:430021デフォルトの名無しさん
2010/04/27(火) 15:21:07最大化最小化はMaximizeBox/MinimizeBoxで不可能にしても構わないからさ
0022デフォルトの名無しさん
2010/04/27(火) 15:27:520023デフォルトの名無しさん
2010/04/27(火) 15:58:430024デフォルトの名無しさん
2010/04/27(火) 16:06:15スマートな方法は無いんじゃないか?
0025デフォルトの名無しさん
2010/04/27(火) 16:12:09なんで出ちゃいけないの?
それを言えば、何か他の案が出るかも。
0026デフォルトの名無しさん
2010/04/27(火) 17:57:41該当キーのときに処理済みにしてしまえばいいんだが
他の方法で開いたりすることができるかもしれんしなー
0027デフォルトの名無しさん
2010/04/27(火) 18:37:04>>19
単に気に入らないから出したくないというなら、あきらめろ。
最大化や最小化を防止したいなら、MaximizeBoxとMinimizeBoxをfalseに設定すれば、
システムメニューの最大化、最小化の項目がグレーアウトして使用できなくなる。
最大化ボタンと最小化ボタンは表示されてないだけで機能が生きているから
システムメニューにも表示される。その機能を無効にしてやればいい。
0028デフォルトの名無しさん
2010/04/27(火) 19:33:1727-67行目はちゃんと動いてます
69から後でデータがちゃんとxmlファイルから読み込めてないようです。
ちなみにxmlファイルはhttp://codepad.org/mYsdSZWhです
0029デフォルトの名無しさん
2010/04/27(火) 20:31:58そのXMLファイルはXmlSerializerで出力したものなの?
0030デフォルトの名無しさん
2010/04/27(火) 20:32:32そうです
0031デフォルトの名無しさん
2010/04/27(火) 20:43:39「読み込めてない」は実行時例外が出てるのか、
デシリアライズされたオブジェクトが想定していたのと違う状態なのか、もしそうならどんな状態なのか
0032デフォルトの名無しさん
2010/04/27(火) 20:45:030033デフォルトの名無しさん
2010/04/27(火) 20:46:47こっちで試したら、XMLファイルの行頭のハイフンを消せば読み込めるね。
0034デフォルトの名無しさん
2010/04/27(火) 20:48:41「無効なライセンスです」
「この種類のプロジェクトをサポートするバージョンを使用して下さい」
というエラーがでます
ソースはC#で作らています
私はVC#EE2008です
VSで作られたものは開けないとかありますか?
もしくは、ProやUltimateとかで作られたものはExpressでは開けないとかありますか?
もしくはライセンス登録してないからとか?
0035デフォルトの名無しさん
2010/04/27(火) 21:17:53デバッグはしたけど例外はでてませんでした。
ソースからプログラムを動かしてちゃんとロードできてるか試す感じだったので改めて例外は書かなくていいかと思ってたのですが
デバッグの有無は改めて書いておいたほうがよさそうですね
0036デフォルトの名無しさん
2010/04/27(火) 21:22:03元のソースにハイフンが入ってるわけないなあとチェックしてみたら91行目で調べてたcls.name[0]はxmlではnullでした
xmlに書き込むソースを改善したらうまく動くようになりましたありがとうございます
003719
2010/04/27(火) 21:53:43ショートカットキーを設定するフォームを作っているのですが
Alt+F4が登録できなかったりするのでどうすればいいのかなと思いまして
0038デフォルトの名無しさん
2010/04/27(火) 21:59:13一応、さっきも書かれてたProcessCmdKeyのオーバーライドで既定の動作は無視できる
003919
2010/04/27(火) 22:45:10ありがとうございます
0040デフォルトの名無しさん
2010/04/27(火) 22:52:07すべてのフォームで、ショートカットキーが登録されていたら既定の動作を無視する
コードを書かにゃならん。
0041デフォルトの名無しさん
2010/04/28(水) 00:08:18最近ではGoogleChromeなど、タブがマルチプロセスになっているみたいで。
WCFによるプロセス間通信を見ていますが、
クライアント側(自アプリ)、サーバ側(別プロセス)になってしまうのでは?
と思っています。
理想的な処理の流れとしては
・自ウィンドウで別プロセス作成
・指定の別プロセスのオブジェクトを取得
・取得したオブジェクトを表示
・自ウィンドウで不要になればオブジェクトを非表示・別プロセスを終了
もしかすると見当違いなのか?とも思ってます。
よろしくお願いします。
0042デフォルトの名無しさん
2010/04/28(水) 00:13:310044デフォルトの名無しさん
2010/04/28(水) 00:55:030045デフォルトの名無しさん
2010/04/28(水) 07:57:08それやると自ウィンドウが膨大なメモリを所持することになるよ
どちらにしてもw32でやる話だが
0046デフォルトの名無しさん
2010/04/28(水) 08:59:12マスタフォーム作ってそこで処理
それを継承したフォームでやればいいんじゃ?
0048デフォルトの名無しさん
2010/04/28(水) 12:33:01http://www.microsoft.com/japan/msdn/vstudio/express/
http://www.microsoft.com/express/Downloads/#2010-All
0049デフォルトの名無しさん
2010/04/28(水) 12:43:310050デフォルトの名無しさん
2010/04/28(水) 13:15:05よくやった
ファックしてやる
0051デフォルトの名無しさん
2010/04/28(水) 13:37:09これインストールするには今の2008をアンインストールするんでしょ?
MS関連のが多すぎてどれをアンインストールすればいいの?
C#だけでいいのかな?
0052デフォルトの名無しさん
2010/04/28(水) 13:42:370053デフォルトの名無しさん
2010/04/28(水) 13:45:47http://www.dotup.org/uploda/www.dotup.org845535.png
0054デフォルトの名無しさん
2010/04/28(水) 13:50:28HDDの無駄になるからアンインストールしたいと思ったんだけど
0055デフォルトの名無しさん
2010/04/28(水) 13:54:14って聞かれたからしなくても入るって答えただけなのに何これ
日本語初心者がいく所は小学校だぞ
0056デフォルトの名無しさん
2010/04/28(水) 14:04:200057デフォルトの名無しさん
2010/04/28(水) 14:06:230058デフォルトの名無しさん
2010/04/28(水) 14:08:230059デフォルトの名無しさん
2010/04/28(水) 14:10:50快適に動いてくれてよかった。
あと、C#とC++一緒に作ってたが
同じVSで作らないといけないのが不便だったがVC#とVC++同時起動できるから便利。
0060デフォルトの名無しさん
2010/04/28(水) 14:12:460061デフォルトの名無しさん
2010/04/28(水) 14:17:280062デフォルトの名無しさん
2010/04/28(水) 14:18:570063デフォルトの名無しさん
2010/04/28(水) 14:41:180064デフォルトの名無しさん
2010/04/28(水) 15:09:180065デフォルトの名無しさん
2010/04/28(水) 15:39:270066デフォルトの名無しさん
2010/04/28(水) 16:29:080067デフォルトの名無しさん
2010/04/28(水) 16:34:31firefoxで開くのがいい
0068デフォルトの名無しさん
2010/04/28(水) 16:50:09どういうこと?
0069デフォルトの名無しさん
2010/04/28(水) 16:56:210070デフォルトの名無しさん
2010/04/28(水) 16:59:27今までずっと起動が遅かったじゃない?
バックグラウンドアプリ作りたくても起動遅いから
Python使ってたんだけど、これすごいよw
もう全部4.0に書き換えだわw
0071デフォルトの名無しさん
2010/04/28(水) 17:03:010072デフォルトの名無しさん
2010/04/28(水) 17:34:130073デフォルトの名無しさん
2010/04/28(水) 17:40:240074デフォルトの名無しさん
2010/04/28(水) 18:58:040075デフォルトの名無しさん
2010/04/28(水) 19:23:40XP世代のマシンだとむしろ軒並み遅くなる、なんてオチなんだろうなどうせ。
そりゃあそうでしょうとも。
0076デフォルトの名無しさん
2010/04/28(水) 19:37:00xpだけど速いよ?
ネイティブアプリのようにダブクリした瞬間起動するけど
ToolStripSeparatorがToolStripMenuItemにキャストできなくなってる
プログラミングし直さなきゃ・・・
0077デフォルトの名無しさん
2010/04/28(水) 20:01:530078デフォルトの名無しさん
2010/04/28(水) 20:03:230079デフォルトの名無しさん
2010/04/28(水) 23:06:25object obj=frm2.Obj;
こんな感じで受け取ったら消えているんだけど
0080デフォルトの名無しさん
2010/04/28(水) 23:07:49たとえばMessageBoxはMBでインテリセンスがMessageBoxを候補してくれるが・・・
0081デフォルトの名無しさん
2010/04/28(水) 23:10:22受け取り方による。
オブジェクトのコピーが作られるような受け取り方をすれば、ダイアログがどうなろうと
消えないんだけど、そのやり方は型によって違う。
0082デフォルトの名無しさん
2010/04/28(水) 23:22:09それはfrm2の実装によるので一概には言えない
frm2を作った奴に聞け
0083デフォルトの名無しさん
2010/04/28(水) 23:24:03だとどうですか?
0084デフォルトの名無しさん
2010/04/28(水) 23:28:46消えないとしても保持する意味ないだろ。
0085デフォルトの名無しさん
2010/04/28(水) 23:29:59これはどうすればいいのでしょうか??
0086デフォルトの名無しさん
2010/04/28(水) 23:34:12ターゲットフレームワークは3.5にしないとダメ
0087デフォルトの名無しさん
2010/04/28(水) 23:35:24System.Coreを参照しる
で、Using System.Linq
0088デフォルトの名無しさん
2010/04/28(水) 23:35:580089デフォルトの名無しさん
2010/04/28(水) 23:38:48レスありがとです
System.Coreを追加、v2.0.50727からv3.5に変えてみた所、Linqなんちゃらエラーはなくなりました
ありがとうございました
0090デフォルトの名無しさん
2010/04/28(水) 23:41:13どうしてですか?
0091デフォルトの名無しさん
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();
}
}
}
0092デフォルトの名無しさん
2010/04/29(木) 00:12:530093デフォルトの名無しさん
2010/04/29(木) 00:19:090094デフォルトの名無しさん
2010/04/29(木) 03:40:07Designer.csだかないかい?
それとも訳分からないうちに消しちゃった?
またはForm1にTimerとLabelをついかしてないとか」
ttp://www.dotup.org/uploda/www.dotup.org847078.lzh.html
pass:csharp
こんな構成になってるはず
コンパイルすれば動くよ〜
VSでコンパイルしてるけど大丈夫だよね…うん
0095デフォルトの名無しさん
2010/04/29(木) 03:43:02Form1というクラスの中に
label1という変数と
timer1という変数がなくて
InitializeComponent()という関数が定義されてない
まぁ〜Designer.cs消したかそもそもコンソールアプリとか…
0096デフォルトの名無しさん
2010/04/29(木) 09:40:53いつのまにか、ソリューションをクリックすると
アクティブ構成という項目が追加されていて
前だとDebugとReleaseをF5,F6を押すことで
自動で切り替わっていたのに
アクティブ構成でdebugとなっているとF6を押しても
Releaseフォルだの方にビルドされてくれない
ツール>オプション>ソリューション>「ビルド構成の詳細を表示」はチェックは入っていない
試しにチェックしてビルド、外してビルドとしてもこの項目が消えてくれなくて
不便なんだけど前のようにF5,F6で自動でフォルダを分けてコンパイルしてくれるように
できないでしょうか?
0097デフォルトの名無しさん
2010/04/29(木) 10:06:00文字を斜めとか縦書きで表示したいんだけどどうすればいい?
0098デフォルトの名無しさん
2010/04/29(木) 10:14:390099デフォルトの名無しさん
2010/04/29(木) 11:11:04WPFなら>>98だけどWPFだったらそういうのはLabelじゃなくてTextBlock使うべき
0100デフォルトの名無しさん
2010/04/29(木) 12:54:05追加するだけなわけで、「不可」とか言い切っちゃうのはどうかと....
0101デフォルトの名無しさん
2010/04/29(木) 12:57:240102デフォルトの名無しさん
2010/04/29(木) 13:02:59なんで数字まで""がついてるんだよ
なんとか.width = "200"とか
text = "Hello"ならわかるが
数字が単なる文字列みたいで気に入らないな。
0103デフォルトの名無しさん
2010/04/29(木) 13:05:51そりゃXMLの仕様だ。
0104デフォルトの名無しさん
2010/04/29(木) 13:06:24型はスキーマで決まる
0105デフォルトの名無しさん
2010/04/29(木) 13:11:28じゃあFormを派生して書くコード(毎日やってるはずだが)は
「Form関係ない」わけね。
よくわからない思考法。
0106デフォルトの名無しさん
2010/04/29(木) 13:21:38文字を表示するだけだったらLabelから派生する必要はない
0107デフォルトの名無しさん
2010/04/29(木) 13:36:11"Labelから派生する必要"があるかないか、どうして分かるんだろう。
例えばBorderStyleやAutoSizeといったプロパティが必要かもしれないし、
Labelと透過的に扱える必要があるのかもしれない。
0108デフォルトの名無しさん
2010/04/29(木) 17:30:40レスありです
http://www1.axfc.net/uploader/Img/so/80908.jpg
アップロードしていただいたもの(上記画像→)をそのままコンパイルしてみましたが、
左上のようなエラーが出ます。 Designer.csは消えてないはずです。
何をどういじればちゃんとコンパイルできるようになりますでしょうか??
0109デフォルトの名無しさん
2010/04/29(木) 17:39:260110デフォルトの名無しさん
2010/04/29(木) 17:54:19う〜ん
何故かpartialが効いていないような…
あんまりあれな方法ですけど右のDesiner.csを右クリック→コードを表示
カット&ペーストで
最初の
<summary>
〜
private System.Windows.Forms.Timer timer1;
までをForm1.csにうつせば通るんじゃないかなぁ〜
0111デフォルトの名無しさん
2010/04/29(木) 17:55:37cscで、そのファイルだけコンパイルできるわけないだろ。
0112デフォルトの名無しさん
2010/04/29(木) 17:58:00http://ideone.com/
どこかからコピーしたソース使ってるとかしてる感じ・・・・
0113デフォルトの名無しさん
2010/04/29(木) 18:00:010114デフォルトの名無しさん
2010/04/29(木) 18:01:56プロジェクト内のすべて.csを指定して、参照してるアセンブリを/referenceで指定して・・・
ってやんないと無理。
普通、そんなことはやらん。せいぜい、msbuildを使うくらい。
0115デフォルトの名無しさん
2010/04/29(木) 18:01:580116デフォルトの名無しさん
2010/04/29(木) 18:06:03できねーって騒いでたのはcscで個別にやってたのか
なんでIDEのビルドを使わないのw
F6押せばいいじゃん
0117デフォルトの名無しさん
2010/04/29(木) 18:08:06プロジェクト落としてそのままコンパイルしたはずなのに
フォルダのファイルおかしくね?
0118デフォルトの名無しさん
2010/04/29(木) 18:32:18レスありがとです
>>94氏にUPしていただいたフォルダで皆さんの全ての.csを指定というご指摘通りに
「csc Form1.cs Form1.Designer.cs Program.cs」とコンパイルしてみたら無事Program.exeが出来ました
ありがとうございました!
0119デフォルトの名無しさん
2010/04/29(木) 20:09:260120デフォルトの名無しさん
2010/04/29(木) 21:05:16すみませんそれ以外のコンパイル方法がわからなくて・・・
0121デフォルトの名無しさん
2010/04/29(木) 21:06:00F6キー
0122デフォルトの名無しさん
2010/04/29(木) 22:32:25レスありです
F6キーを押すとプロジェクトフォルダ\bin\Release\の中にコンパイルされるんですね
活用していこうと思います
0123デフォルトの名無しさん
2010/04/29(木) 22:35:07F5キー押せばその場でデバックもできるよ
0124デフォルトの名無しさん
2010/04/29(木) 22:55:56その前に何でcscを先に知った
0125デフォルトの名無しさん
2010/04/29(木) 23:04:35レスありです
今までファイル名を指定して実行→cmd→・・・ってやってた自分がバカみたいです。。
ビルドとかデバッグはしたことあったのですが、あまり意味がわかっておらず、
cscでコンパイルする前の動作確認のためだけのものかと思ってました・・
プロジェクトフォルダに出力されてるのにも全く気付かなかったです
cscは読んでいたサイトでこうやってコンパイルしますーみたいに書いてあったので使ってました・・
0126デフォルトの名無しさん
2010/04/29(木) 23:13:59本当にcmdからcscでコンパイルすると解説しているところもあるんだな。
俺はVS使った後にcscの存在を知ったと言うのに。
0127デフォルトの名無しさん
2010/04/30(金) 10:20:29できるじゃない
public int Hoge {private get; private set; }
0128デフォルトの名無しさん
2010/04/30(金) 10:32:480129デフォルトの名無しさん
2010/04/30(金) 10:33:380130デフォルトの名無しさん
2010/04/30(金) 10:51:36PCなら寝ながらでも暗がりでも見れる
出版側も本作るより楽なはずなのにな
0131デフォルトの名無しさん
2010/04/30(金) 11:55:110132デフォルトの名無しさん
2010/04/30(金) 11:57:080133デフォルトの名無しさん
2010/04/30(金) 12:00:14>>127両方private付きなのであれだがたとえば片方だけとか考えてみ
0134デフォルトの名無しさん
2010/04/30(金) 12:07:37君よく空気読めない奴だなって言われないかw
0135デフォルトの名無しさん
2010/04/30(金) 12:08:440136デフォルトの名無しさん
2010/04/30(金) 12:19:23落語のオチを説明するようで情けないが、空気読めない、っていうのは別に
その場の雰囲気を読めないとか何とか、そういう特殊日本的な能力のことを言ってるわけじゃない。
>>129なんか、誰が読んでも明らかに半分以上「嫌味」で言ってるに決まってるのに
そんなことも読み取れない読解力のなさのことを言ってる。
0137デフォルトの名無しさん
2010/04/30(金) 12:20:57そんなにしてまで「人に教えを垂れる自分」に酔いたいのかねw
しかもこんな低レベルな話でさ。
かなりおめでたすぎるだろう
0138デフォルトの名無しさん
2010/04/30(金) 12:21:160139デフォルトの名無しさん
2010/04/30(金) 12:25:470140デフォルトの名無しさん
2010/04/30(金) 12:26:380141129
2010/04/30(金) 12:36:25別に嫌味で聞いたんじゃなくて目から鱗の何かがあるのかと思ったんだ
0142127
2010/04/30(金) 12:37:12>395 :デフォルトの名無しさん :2010/03/24(水) 22:17:27
>自クラスのprivateフィールド変数もプロパティを
>通してでないとアクセスできないようにする方法ありますか?
あ、ごめんごめん、質問の内容違うかったわwww
0144デフォルトの名無しさん
2010/04/30(金) 12:39:53自分の勘違いを人のせいにするとか最低な奴だ
0145デフォルトの名無しさん
2010/04/30(金) 12:41:270146デフォルトの名無しさん
2010/04/30(金) 12:42:31それはお前の勘違い
この質問の時そういうのがあればというレスはいくつかあったから
そのうちの一人だろ
privateフィールド変数
みたいな書き方するの俺ぐらいだしw
0147デフォルトの名無しさん
2010/04/30(金) 12:52:220148デフォルトの名無しさん
2010/04/30(金) 13:00:190149デフォルトの名無しさん
2010/04/30(金) 13:03:42得意になって教え垂れてるけど、「それ」が本当にマジな質問かどうか考えてるのか、
って言っただけだが。
0150デフォルトの名無しさん
2010/04/30(金) 13:06:410151デフォルトの名無しさん
2010/04/30(金) 13:09:28そのギャグに被せたのが>>129
それに真顔でつっこむ天然アイドル>>133
つまらないと死にゼリフを吐く>>134
一番空気を悪くする人物は間違いなく>>134
0152デフォルトの名無しさん
2010/04/30(金) 13:14:22さあ、もうやめましょうね。
0153デフォルトの名無しさん
2010/04/30(金) 13:18:430154デフォルトの名無しさん
2010/04/30(金) 13:21:470155デフォルトの名無しさん
2010/04/30(金) 13:23:42イギリス人には 「紳士はこういうときにスルーするものです」
ドイツ人には 「規則ではスルーすることになっています」
イタリア人には 「さっき美女がスルーしました」
アメリカ人には 「スルーするとヒーローになれますよ」
フランス人には 「スルーしないで下さい」
北朝鮮人には「将軍様がスルーしろと仰っています」
日本人には 「みんなもうスルーましたよ」
0156デフォルトの名無しさん
2010/04/30(金) 15:24:26今年一番感動した名言
として登録した
0157デフォルトの名無しさん
2010/04/30(金) 20:53:28全然違う!>>129なんかと一緒にするな!
>>127は、なんとCS0274になるんだぞ!凄いだろ!
まあ何というか、そろそろネタバレしてもいいかなあと
初心者スレだから見た瞬間にコンパイルエラーと分からない人もいるだろうし、
あまり放置しすぎるのもどうかと思うわけだ
0158デフォルトの名無しさん
2010/04/30(金) 21:13:09で、どうやって使うんだコレ?
0159デフォルトの名無しさん
2010/04/30(金) 21:58:120160デフォルトの名無しさん
2010/04/30(金) 21:59:480161デフォルトの名無しさん
2010/04/30(金) 22:30:490162デフォルトの名無しさん
2010/04/30(金) 22:36:110163デフォルトの名無しさん
2010/04/30(金) 22:38:46>>161 ニート
>>162 ハカー
0164デフォルトの名無しさん
2010/04/30(金) 22:47:370165デフォルトの名無しさん
2010/05/01(土) 02:09:42チェックボックスのプロパティのCheckedをTrueにしてプログラム起動時からチェックが入ってる状態にしても、
一度チェックし直さなければ最前面表示されないんですが何か解決策はありますか?
0166165
2010/05/01(土) 02:12:30上の方にthis.TopMost = true;をもう1行追加することで自己解決しました
駄レス申し訳ないです
0167デフォルトの名無しさん
2010/05/01(土) 02:15:390169デフォルトの名無しさん
2010/05/01(土) 15:56:25とできるように既存のクラス、コンポーネントのメソッドを
外部から拡張する技ってあります?
0170デフォルトの名無しさん
2010/05/01(土) 15:57:510171デフォルトの名無しさん
2010/05/01(土) 16:08:24トン
0172デフォルトの名無しさん
2010/05/01(土) 16:09:02public 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();
}
}
0173デフォルトの名無しさん
2010/05/01(土) 19:41:11StringはIEnumerable<char>だからStringに対するReverse自体は可能だよ
"reverse".Reverse().Aggregate("", (s, c) => s + c)
Aggregateが嫌なら>>172みたいに個別に実装するより
IEnumerable<char>を引数にとって連結した文字列を返す拡張メソッドを書いた方がスマート
0174デフォルトの名無しさん
2010/05/01(土) 21:32:350175デフォルトの名無しさん
2010/05/01(土) 21:38:370176デフォルトの名無しさん
2010/05/01(土) 21:39:460177デフォルトの名無しさん
2010/05/01(土) 22:29:06マジすか・・・ありがとうございます
0178デフォルトの名無しさん
2010/05/01(土) 23:43:550179デフォルトの名無しさん
2010/05/01(土) 23:44:330180デフォルトの名無しさん
2010/05/01(土) 23:47:070181デフォルトの名無しさん
2010/05/01(土) 23:48:54スレタイ読んでも納得いかないなら別のスレいくといいよ
0182デフォルトの名無しさん
2010/05/01(土) 23:49:080183デフォルトの名無しさん
2010/05/01(土) 23:50:54そういや7からは日本版にもメールクライアント入ってないのな。
0184デフォルトの名無しさん
2010/05/02(日) 05:38:27使えたら方法を教えてくだしあ
0185デフォルトの名無しさん
2010/05/02(日) 05:42:53(σ・∀・)σ<fgetsぽいことはできるよ
c# StreamReader関連かな
一行ずつ
http://dobon.net/vb/dotnet/file/readfile.html#section3
一文字ずつ
http://dobon.net/vb/dotnet/file/readfile.html#section4
0186デフォルトの名無しさん
2010/05/02(日) 05:53:07ありがとうございます
ぽいことと言うか、c++で作ったメソッドの(charやDirectXの関数を使ってる)コピペをそのまま貼り付けたのですが
エラーが出まくったので、とりあえずchar[]の[]を消して、stringにしたりしたのですが
#includeもできないみたいですし、Cの関数を使ったり、DirectXのライブラリを、オプションとかで設定して使えるようにできないのですか?
全くC#の機能を使って同じ動きがするように書き直すしか無いのでしょうか?
0187デフォルトの名無しさん
2010/05/02(日) 05:56:11DirectX使いたいならXNAにするとかすればいいんじゃないかな?
あれはDirectXのラッパーのはずだし
それにC++のchar配列はC#の場合Stringで対応かな
文字とか入れてるんでしょ?
0188デフォルトの名無しさん
2010/05/02(日) 06:01:10>全くC#の機能を使って同じ動きがするように書き直すしか無いのでしょうか?
そうです。
言語の仕様が違うので書き直しです。
c#の方がスマートに書けるのでそんなに苦労しないと思うけどね
0189デフォルトの名無しさん
2010/05/02(日) 06:03:49数字です(数字を文字と言ってもいいのかさえわからないレベル)
フォームアプリを作りたかったので、その場合C#が良いと聞いたのでC#で始めようと思ったのですが
使えないならC++/CLIかなんかそんな感じのC++でフォームアプリを作れるのだと多分コピペできるのでそっちでやりたいと思ってます
つか、C++/CLIかなにかとC#はドットネットだから同じ物だよみたいな事を聞いていたので、てっきりcharとかfputとかc用のライブラリとか、使えると思ってました
0190デフォルトの名無しさん
2010/05/02(日) 06:05:470191デフォルトの名無しさん
2010/05/02(日) 06:10:23二階建て言語だからね〜
0192デフォルトの名無しさん
2010/05/02(日) 06:12:32あれってそんな仕様なの?w
まあ>>189がどういうものを移植しようとしてるのかが
もうちょっと明確になればなあ
0193デフォルトの名無しさん
2010/05/02(日) 06:20:43C++/CLIでやりまつ(`・ω・´)
ありがとうございまつた
0194デフォルトの名無しさん
2010/05/02(日) 06:23:07ちょっと書き直せばいいだけでしょw
実際そんな手間じゃないと思うよw
どういうアプリを移植しようとしてるの?
0195デフォルトの名無しさん
2010/05/02(日) 07:03:06まあ大げさに比喩で言ってみたんだけど
/clr:safeでエラーになら内書き方をすればC#相当ということ。
0196デフォルトの名無しさん
2010/05/02(日) 08:09:30あれはC++とC#の両方がちゃんとわかってる人が嫌々使うもんだ
0197デフォルトの名無しさん
2010/05/02(日) 09:19:120198デフォルトの名無しさん
2010/05/02(日) 10:33:05C#はC#だ
0199デフォルトの名無しさん
2010/05/02(日) 11:39:24メソッドを出ると消滅するのはなんでですか?
0200デフォルトの名無しさん
2010/05/02(日) 11:41:36シリアライズは使わない方がいいよ今後のために
普通にXML Documentで吐いたほうがいい
0201デフォルトの名無しさん
2010/05/02(日) 11:45:360202デフォルトの名無しさん
2010/05/02(日) 11:47:04そう言えばあったな・・・・
つうか、設定クラスをバイナリにして保存→復元
てのもあり?
0203デフォルトの名無しさん
2010/05/02(日) 11:48:520204デフォルトの名無しさん
2010/05/02(日) 11:50:33それ以外のシリアライザは最悪
保存じゃなくて通信に使うもんだあれは
0205デフォルトの名無しさん
2010/05/02(日) 12:14:04XmlSerializerは柔軟性なさ過ぎてまじゴミ
0206デフォルトの名無しさん
2010/05/02(日) 12:39:02逆にDataContractSerializerはフォーマット固定なのでシリアライズにしか使えない
シリアライズ方式はXmlSerializerに近くて変更の影響を受けにくいのでシリアライザとしては最強
0207デフォルトの名無しさん
2010/05/02(日) 12:41:15.netではシリアライズが標準なのかと思って勉強しまくってます
0208デフォルトの名無しさん
2010/05/02(日) 13:04:17このスレはエスパーが揃ってるのか
0209デフォルトの名無しさん
2010/05/02(日) 13:08:430210デフォルトの名無しさん
2010/05/02(日) 13:09:220211デフォルトの名無しさん
2010/05/02(日) 13:20:59どうやって消滅してることを確認するんだよ
0212デフォルトの名無しさん
2010/05/02(日) 13:25:180213デフォルトの名無しさん
2010/05/02(日) 13:30:37COMでCLRホストしてコールバックさせるとかくらいしないと
0214デフォルトの名無しさん
2010/05/02(日) 13:33:56シリアライズ関係ありませんでしたすいません
0215デフォルトの名無しさん
2010/05/02(日) 13:45:080216デフォルトの名無しさん
2010/05/02(日) 13:49:200217デフォルトの名無しさん
2010/05/02(日) 13:59:330218デフォルトの名無しさん
2010/05/02(日) 20:36:170219デフォルトの名無しさん
2010/05/02(日) 20:37:210220デフォルトの名無しさん
2010/05/02(日) 20:45:080221デフォルトの名無しさん
2010/05/02(日) 20:45:160222デフォルトの名無しさん
2010/05/02(日) 20:50:05C#から容易にExcel操作できるん?
0223デフォルトの名無しさん
2010/05/02(日) 20:51:49どっちも.NET Frameworkの新機能じゃなくてC#の新機能だけどなw
0224デフォルトの名無しさん
2010/05/02(日) 20:54:21ニワカ乙
0225デフォルトの名無しさん
2010/05/02(日) 21:06:58DLRがないと動きません
0226デフォルトの名無しさん
2010/05/02(日) 21:13:27バインディングで問題なかった。
0227デフォルトの名無しさん
2010/05/02(日) 21:16:47でもCLRにそういう命令が追加されたわけでもない
対象の操作を行うメソッドを動的に生成してデリゲートで差し替えてるの
0228デフォルトの名無しさん
2010/05/02(日) 22:23:14そういうのってないですか?
0229デフォルトの名無しさん
2010/05/02(日) 22:24:55元から出来るじゃん
簡単にってのが引っかかるが
0230デフォルトの名無しさん
2010/05/02(日) 22:29:02List<T>使う
追加や検索は常にBinarySearchで
0231デフォルトの名無しさん
2010/05/02(日) 22:54:22なるほどありがとうございます
0232デフォルトの名無しさん
2010/05/03(月) 02:58:37C#だと引数の省略ができなくて大変だったんだよ
0233デフォルトの名無しさん
2010/05/03(月) 04:48:39見つからないので参照タブにて直接DLLを指定したら
「アセンブリ "System.Web" を解決できませんでした。このアセンブリは、現在のターゲット フレームワーク ".NETFramework,Version=v4.0,Profile=Client" 内にありません。
ターゲット フレームワーク内にないアセンブリへの参照を削除するか、プロジェクトを再ターゲットしてください。」
とエラーが出たのですがこれはどうすれば解決できますか?
0234デフォルトの名無しさん
2010/05/03(月) 04:54:020235デフォルトの名無しさん
2010/05/03(月) 04:58:55すみませんターゲットバージョンっていうのはどれのことでしょうか??
0236デフォルトの名無しさん
2010/05/03(月) 05:05:11VWD2010Expressとかいわないよね?
0237デフォルトの名無しさん
2010/05/03(月) 05:07:120238デフォルトの名無しさん
2010/05/03(月) 07:05:170241デフォルトの名無しさん
2010/05/03(月) 07:35:32using System.Web;
って入れるだけちゃうの?
どんな機能を使いたかったの?
0242233
2010/05/03(月) 08:30:38具体的には下記URLの「より高度な電子メール送信」の部分をやりたかったのですが、
using System.Web;って入れてもエラーが出て、下記記事の中に
「このクラスは、クラス・ライブラリのDLLであるSystem.Web.dllの中に含まれているので、
これが参照されていない場合は参照をプロジェクトに追加する必要がある。」
とあったので、System.Web.dllを追加しようとしたら見つかりませんでした・・
*ttp://www.atmarkit.co.jp/fdotnet/dotnettips/017sendmail/sendmail.html
0243デフォルトの名無しさん
2010/05/03(月) 08:46:08VC#2008Expressでみたら参照にはあるねえ・・・
ttp://tsushima.2ch.at/s/news2ch61959.png
0244デフォルトの名無しさん
2010/05/03(月) 08:53:22その方法は古いみたいね。
新しい方はこっちでやるみたい
http://dobon.net/vb/dotnet/internet/smtpmail.html
0245デフォルトの名無しさん
2010/05/03(月) 09:00:54http://ideone.com/UCjUS
0246233
2010/05/03(月) 09:03:14.NET3.5とか4.0のほうばかり見てました
2.0のフォルダにあったSystem.Web.dllを入れてみたら正常に追加されました
ただ今度は「古い形式です」と出たので1.1の方のフォルダにあったものを追加したら無事コンパイル出来ました
多分2.0の方だと>>244さんが書いてくださった方法が使えるんですね
ありがとうございました!
0247デフォルトの名無しさん
2010/05/03(月) 09:05:36.netもなんだかんだで歴史あるしネットのサンプルコードが書かれた時代と
仕様が変わってるケースがあるので、掲載年月日とかも見た方がいいね
0248233
2010/05/03(月) 09:06:47すみませんレスかぶりました・・
書いていただいたソースを使ってみたらコンパイル出来ました
System.WebじゃなくSystem.Netというのもあるんですね
また機会があったら使ってみたいと思います
ありがとうございましたー!
0249デフォルトの名無しさん
2010/05/03(月) 09:13:04エンコードの問題に対処できないので業務ではぶっちゃけ使えない
0250デフォルトの名無しさん
2010/05/03(月) 13:35:21職場の生産システムに導入して、効率を上げる事を目的にしています。
(金にならない自主作業ですが)
DOM利用のドキュメント処理はもちろん、ファイルの扱い、GUIも
一応理解して、システムを構築できるレベルにあります。
しかしだんだん欲が出てきて、もっと速く画像処理できる
プログラムを開発できないかと考えるようになりました。
それで、現在言語を物色中なのです。
それで、C#が取っ付きやすそうだと単純に思ったのですが、
C#で、2Dの画像処理を開発経験のある方のご意見を伺いたいのです。
フォトショップのDOMは理解しやすくて簡単なのですが、
C#で2D処理する場合、DOMみたいなものを利用できるのでしょうか
その辺りの情報が初心者なので皆無なのです。
C#の2D処理に関する、学習の筋道をお教えください。
お願いします。
0251デフォルトの名無しさん
2010/05/03(月) 13:47:42話にならないと思うよ。
0252デフォルトの名無しさん
2010/05/03(月) 13:50:19写真に特殊効果かけたりするようないわゆる画像処理は大変だし
そもそもPhotoshopの速度を超えるのはまず不可能だけど
図形や文字描いたりするだけなら簡単だよ
0253デフォルトの名無しさん
2010/05/03(月) 14:26:41JavaScript→AdobeのDOMレイヤー→ソース
ってアクセスしてるのでしょう?
レイヤーがないんだからソースを直に読めるかどうかによるが
ソースが何なのか書いてないからできるとも言えない
0254デフォルトの名無しさん
2010/05/03(月) 14:39:20>>252
早速、ありがとうございます
DirectXは、確か画像処理用のライブラリ(なのでしょうか?)
だったかと思いますが、それを利用するというのはできませんか?
やりたい事の一つは、大量の画像をトリミングする作業です
被写体の位置と大きさを一定にするのが条件です。
なので、必要な機能は、以下になります。
1:ウインドー上の画像をマウスで位置調整できる
2:画像のどの位置にマウスポインタがあるか把握できる
3:拡大縮小による画像の補完機能。
スクリプトでしか処理し得ない部分と
フォトショップの基本機能による手作業を分離すれば
できる事ではあるのですが、専用のソフトで一括処理できれば
よいなと考えています。
0255デフォルトの名無しさん
2010/05/03(月) 14:42:45.NETの標準のライブラリの範囲(System.Drawing/WPF)でできる
DirectXはリアルタイム処理のためのものなのでこの場合はいらん
0256デフォルトの名無しさん
2010/05/03(月) 14:57:300257デフォルトの名無しさん
2010/05/03(月) 15:04:030258デフォルトの名無しさん
2010/05/03(月) 15:09:18>DirectXはリアルタイム処理のためのものなのでこの場合はいらん
これに関しては古い知識なので相手にしないように
0259デフォルトの名無しさん
2010/05/03(月) 15:12:35ソースはjpgメインで、時々tiffという感じです。
(psdも扱えたらいいのですが、贅沢ですね)
>>255
希望が出てきましたー。
0261デフォルトの名無しさん
2010/05/03(月) 15:23:47検出(detect)する必要はあるけど
0262デフォルトの名無しさん
2010/05/03(月) 15:38:13> 被写体の位置と大きさを一定にするのが条件です。
なら、被写体の位置と大きさを検出して、画像を切り取り&拡大&縮小、
だろ? 検出が一番大変だと思う。
0263デフォルトの名無しさん
2010/05/03(月) 15:59:33それぞれの人の身長はまちまちですし、フレーミングも変動している
とします。これを以下のようにします
1:一定の画像サイズ
2:人物を中心に配置する
3:頭上の空間と、足の下の空間の幅を一定にする
(画像内における人寸を一定にする)
なので、一番欲しい情報は、
1:人物の高さの情報(座標情報)
になります。
座標情報をマウスポインタを使い検出できれば
高さ情報を元に必要な拡大縮小率を導き出せます。
これは難しいですか?
0264デフォルトの名無しさん
2010/05/03(月) 16:01:55どこからどこまでがユーザーの操作なのか、
その辺をきっちり考えた方がいいよ。
0265デフォルトの名無しさん
2010/05/03(月) 17:39:071. 群集が収まる最小矩形を手動で選択 → R
2. 矩形Rを上下に一定の比率で拡張 → R'
3. アスペクト比が一定になるように矩形R'を左右に拡張 → R''
4. 矩形R''で切り出して、サイズが一定になるように拡大縮小
とりあえず、アドバイスとしては
・Rを保存しておくと何かと都合が良い (2,3の比率を変えたくなったときとか.)
・4は専門のアプリ・ツールに任せるのが良い (拡大縮小は特に)
0266デフォルトの名無しさん
2010/05/03(月) 21:25:06>>265
ありがとうございます。
C#では、取り敢えず3までの選択範囲の設定が可能ということですね。
問題は4なのですが、そのような機能を提供してくれるライブラリー
は、無いのでしょうか。(>>255情報もあります)
あればすぐにでも、C#の勉強を始めようと思うのですが。
0267デフォルトの名無しさん
2010/05/03(月) 21:26:380268デフォルトの名無しさん
2010/05/03(月) 21:30:46ごく一般的なアルゴリズムが使えるから他のツール使っても同じ
0269デフォルトの名無しさん
2010/05/03(月) 21:56:21>>268
msdnの.NET Frameworkを検索してみました。
「イメージ、ビットマップ、アイコン、およびメタファイルの操作」
のグループに、画像の補間に関する情報がありました。
これなら、いけそうです。
決意しました。C#を勉強します。
そこでなんですが、お勧めの書籍があったら
お教えください。
0270デフォルトの名無しさん
2010/05/03(月) 21:59:090271デフォルトの名無しさん
2010/05/03(月) 22:26:18C#の勉強はVB.netの勉強にもnaる
0272デフォルトの名無しさん
2010/05/03(月) 22:55:48.NET Frameworkを共通に使うからですね
0273デフォルトの名無しさん
2010/05/03(月) 23:47:170274デフォルトの名無しさん
2010/05/03(月) 23:48:07VB.netなんて糞構文でしょ
なんで存在するのかわからない言語
0275デフォルトの名無しさん
2010/05/04(火) 00:02:480276デフォルトの名無しさん
2010/05/04(火) 00:05:11VBはネストが深いと読む気が失せる
0277デフォルトの名無しさん
2010/05/04(火) 00:16:04それはむしろ逆。
よく知らずに何かを貶すのは馬鹿っぽいよ。
0278デフォルトの名無しさん
2010/05/04(火) 00:19:25既存のVBerを逃したくないという、マーケティング上の理由でしょ
0279デフォルトの名無しさん
2010/05/04(火) 00:21:08知らんがな。俺が読みにくいと思っただけだよ
0280デフォルトの名無しさん
2010/05/04(火) 00:34:550281デフォルトの名無しさん
2010/05/04(火) 00:45:42C#にしかない機能も結構あるし、総合的に見ればC#の方が使いやすいのは確かだとは思うけどね。
まあ構文についてはどっちもどっちでしょ。
それぞれ利点と欠点があるから、一概にどっちが良いとは言えんと思う。
ただ今の20代以下だとC系の言語から入ってる人が多いからC#の方が読みやすいんだろうな。
0282デフォルトの名無しさん
2010/05/04(火) 00:47:19匿名メソッドやその辺が違うとしても
結局やれることに差は無い
0283デフォルトの名無しさん
2010/05/04(火) 00:48:06どれも大して変わらんよ。
0284デフォルトの名無しさん
2010/05/04(火) 00:49:240285デフォルトの名無しさん
2010/05/04(火) 00:52:540286デフォルトの名無しさん
2010/05/04(火) 01:17:25静的型と動的型
クラスベースとプロトタイプベース
全然違うと思う
0287デフォルトの名無しさん
2010/05/04(火) 07:00:17FileLoadExceptionが出たり、デバッガで止まったり、.NETじゃない例外が出て落ちたりするんですが
一番いい回避策はSlimDXですか?
ジョイパッド読みたいだけなのでDirectInputが使えればいいんですが。
0288デフォルトの名無しさん
2010/05/04(火) 07:03:13別のexeを標準権限で実行するにはどうすればよいでしょうか?
Process.Start(パス)で実行すると権限を継承してしまいます><
0289デフォルトの名無しさん
2010/05/04(火) 07:52:06>ジョイパッド読みたいだけなのでDirectInputが使えればいいんですが。
joyGetPosをP/Invokeじゃだめなの?
「C# joyGetPos」で検索したら色々でてくるよ。
0290デフォルトの名無しさん
2010/05/04(火) 08:23:20DirectX使わなくても読む方法があったとは
ありがとうございます
0291デフォルトの名無しさん
2010/05/04(火) 11:27:54描画のサーフェスを取得するってことにはぜんぶかわりないの?
0292287
2010/05/04(火) 11:42:31リモコン的操作に使いたいのでリアルタイムじゃないほうがいい
→joySetCaptureを使おうと送られてくるメッセージを調べる
→どうやらボタンは4つまでしか認識できないらしいので使えない
とラッパーライブラリを作った後で気づきました
0293デフォルトの名無しさん
2010/05/04(火) 11:47:50簡単だよー
0294デフォルトの名無しさん
2010/05/04(火) 11:58:27DuplicateTokenEx()でトークンを複製して、CreateProcessWithTokenW()とかで
実行、で行けるみたい。
0295デフォルトの名無しさん
2010/05/04(火) 12:33:55シェーダ縛りがあるので却下
0296デフォルトの名無しさん
2010/05/04(火) 12:34:14主旨違うかもしれないけど
プロパティなかったら未だにget,setアクセサ殆ど作らなかったと思う
GetValue,SetValue面倒くさかった
0297デフォルトの名無しさん
2010/05/04(火) 12:48:30Javaの語でいきなりJavaScriptの話にするのはちょっと
0298デフォルトの名無しさん
2010/05/04(火) 13:58:09たとえば、C:\新しいファイル
の中にエロ画像.jpgがある場合
exist(@"C:\新しいファイル\エロ画像.jpg");
でtrueを返して
エロ画像が無い場合falseを返すようなメソッドは
どこにありますか?
0299デフォルトの名無しさん
2010/05/04(火) 14:00:220300デフォルトの名無しさん
2010/05/04(火) 14:06:250301デフォルトの名無しさん
2010/05/04(火) 14:15:26相変わらずループまわして地道にやるんですかね。
0302デフォルトの名無しさん
2010/05/04(火) 14:18:180303デフォルトの名無しさん
2010/05/04(火) 14:18:22みんな作ってるから適当にweb漁ってパクれ
0304287
2010/05/04(火) 14:56:35Windows 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
0305デフォルトの名無しさん
2010/05/04(火) 15:01:13ボタン配置がめちゃめちゃなだけ
0306デフォルトの名無しさん
2010/05/05(水) 11:06:22>>304
扱えるボタンの数ならjoyGetPosExで増えてるよ。
ttp://msdn.microsoft.com/en-us/library/dd757108.aspx
ttp://msdn.microsoft.com/en-us/library/dd757112.aspx
一定時間ごとにjoyGetPosEx呼んで状態変化を見ればいいんじゃないかな。
joySetCaptureも内部的にはタイマでポーリングだったりするんじゃないの?
どうせUSBレベルでは結局はポーリングなんだし。
0307デフォルトの名無しさん
2010/05/05(水) 12:25:29C#を学ぶのに良いサイト・書籍を教えてください
ちなみに今はここを見てるんですが難しい…
http://ufcpp.net/study/csharp/index.html
0308デフォルトの名無しさん
2010/05/05(水) 12:31:27辞書的に使うところかも
お題に沿ってとりあえずやれる方がいいんだけどなあ・・・
0309デフォルトの名無しさん
2010/05/05(水) 12:48:120310デフォルトの名無しさん
2010/05/05(水) 12:54:59僕も学習中ですがとりあえず大まかに学んで、プログラムらしいものを作ってみる方がいいんではないでしょうか?
秀和システム:作って覚えるVisual C# 2008 Express Edition入門
ttp://www.shuwasystem.co.jp/products/7980html/2109.html
これが一番とっつきやすかったです。
逆に日経プログラミングの入門コーナーとか読んじゃダメですね。はしょりすぎてわかりにくい。
プログラミングの雰囲気を味わうにはとっつきやすい雑誌ではあるけど。
0311デフォルトの名無しさん
2010/05/05(水) 12:57:29ifって何?くらいのレベルの人のための解説ってC#には少ないと思う
0312デフォルトの名無しさん
2010/05/05(水) 13:26:12レスありがとうございます
うーむ、ifとかさっぱり分からないですねw
入門用の解説が少ないとなるとまずは言語選択から考えなきゃいかんのかなー…
なにかソフトを作るってレベルじゃなくてPC上の操作(ファイルの移動やリネーム)をやりたいだけだから
単純で分かりやすいのが良いんだけれども
0313デフォルトの名無しさん
2010/05/05(水) 13:31:150314デフォルトの名無しさん
2010/05/05(水) 13:34:04C#で勉強しろw
0315デフォルトの名無しさん
2010/05/05(水) 13:42:47C#の絵本とか欲しすぎる…
甘えすぎてた、四の五の言わず勉強します
0316デフォルトの名無しさん
2010/05/05(水) 13:52:55C#になると入門者向け良書がビックリするほど少なくなるね
言語初心者は出来るだけGUIを使ったサンプル作成を主眼に置いた
テキスト使った方が視覚的にコードの結果が分かるので良いと思う
GUIの無駄なコードが増えるけどCUIでいきなり勉強してもつまんないし
「Visual C# 2005 [実践]プログラミングテクニック 応用できる基本の書き方」
.NETの代表的な機能をテキストエディタや画像ビューワと言った
具体的なサンプルコード書きながら説明されていてイメージを掴みやすかった
この後にオライリー買い増したけどね
0317デフォルトの名無しさん
2010/05/05(水) 16:34:310318デフォルトの名無しさん
2010/05/05(水) 16:52:430319デフォルトの名無しさん
2010/05/05(水) 16:53:020320デフォルトの名無しさん
2010/05/05(水) 16:54:540321デフォルトの名無しさん
2010/05/05(水) 17:12:160322デフォルトの名無しさん
2010/05/05(水) 19:31:14C#のおすすめの学習サイトある?
0323デフォルトの名無しさん
2010/05/05(水) 19:31:530324デフォルトの名無しさん
2010/05/05(水) 19:35:120325デフォルトの名無しさん
2010/05/05(水) 19:46:060326デフォルトの名無しさん
2010/05/05(水) 19:48:35ブログっぽいサイトや広告が気になるサイトはNGでつ
0327デフォルトの名無しさん
2010/05/05(水) 19:54:420328デフォルトの名無しさん
2010/05/05(水) 19:57:30そのスレにスクリプト打ち込んでやるから教えろ
0329デフォルトの名無しさん
2010/05/05(水) 19:58:37かなり内容が充実してそう
読んでみます
ありがとう
0330デフォルトの名無しさん
2010/05/05(水) 19:59:290331デフォルトの名無しさん
2010/05/05(水) 19:59:54C#, C♯, C#相談室 Part58
http://pc12.2ch.net/test/read.cgi/tech/1269261310/
0332デフォルトの名無しさん
2010/05/05(水) 20:01:58http://wisdom.sakura.ne.jp/programming/cs/index.html
APIスレでの評価は良くないが
0333デフォルトの名無しさん
2010/05/05(水) 20:09:45おっ、そっちのほうがとっつきやすそう
どうもカムサハムニダ謝謝Danke
0334デフォルトの名無しさん
2010/05/06(木) 08:53:07カレントセルを上下に移動しないとDataTableに反映されないんだけど
どうしたらいいですか?
dataGridView1[1, dataGridView1.CurrentCell.RowIndex].Value = newForm.textBox6.Text;
0335334
2010/05/06(木) 10:29:31値設定後に、bindingSource1.EndEdit();をすると解決しました。
0336デフォルトの名無しさん
2010/05/06(木) 17:07:420337デフォルトの名無しさん
2010/05/06(木) 17:27:06一緒
0338デフォルトの名無しさん
2010/05/06(木) 17:35:36多く使われている例の数が違う気がする。 C#.NETって、開発環境指すことあるでしょ。
0339デフォルトの名無しさん
2010/05/06(木) 17:38:530340デフォルトの名無しさん
2010/05/06(木) 18:33:510341デフォルトの名無しさん
2010/05/06(木) 18:34:40C#.NET(2002) / C#.NET 2003 / C# 2005 Express 〜
0342デフォルトの名無しさん
2010/05/06(木) 18:45:400343デフォルトの名無しさん
2010/05/06(木) 20:08:510344デフォルトの名無しさん
2010/05/06(木) 20:34:124.0だけがインスコされてるPCでは実行できない?
0345デフォルトの名無しさん
2010/05/06(木) 20:39:030346デフォルトの名無しさん
2010/05/06(木) 20:40:020347デフォルトの名無しさん
2010/05/06(木) 20:48:570348デフォルトの名無しさん
2010/05/06(木) 20:51:530349デフォルトの名無しさん
2010/05/06(木) 20:55:050350デフォルトの名無しさん
2010/05/06(木) 21:11:360351デフォルトの名無しさん
2010/05/06(木) 21:15:48サポートのコストばかになんないもん。
Apple なんかほんとバッサリ切るし。
0352デフォルトの名無しさん
2010/05/06(木) 21:15:490353デフォルトの名無しさん
2010/05/06(木) 21:18:560354デフォルトの名無しさん
2010/05/06(木) 21:31:52readme.txtには.net2.0以降が必要ですじゃなくて
.net2.0が必要ですと書く必要があるな
0355デフォルトの名無しさん
2010/05/06(木) 21:35:230356デフォルトの名無しさん
2010/05/06(木) 21:37:56<configuration>
<startup>
<supportedRuntime version="v4.0.30319" />
</startup>
</configuration>
とかってしないといかんのね。
0357デフォルトの名無しさん
2010/05/06(木) 21:40:36後方重視があるからここまで繁栄してるんだと思うよw
切り捨てする会社なら他も選択肢になるからねえw
0358デフォルトの名無しさん
2010/05/06(木) 21:46:47おぼえてないけど英語でたぶん.nef framework2.0が必要ですとかそんな感じのダイアログが出た
>356
それやれば動いたのか、どうせなら試せばよかったな、もう3.5sp1まで入れちゃった
0359デフォルトの名無しさん
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"の指定はいらなくなったんだっけ?
0360デフォルトの名無しさん
2010/05/06(木) 22:23:350361デフォルトの名無しさん
2010/05/06(木) 22:32:300362デフォルトの名無しさん
2010/05/08(土) 15:29:50int a = 1;
public string b{ get; set; }
b = (string)a; // stringへのキャストの部分を、bの型を取得して指定したい
0363デフォルトの名無しさん
2010/05/08(土) 15:51:01サンプルだとキャストじゃなくて型変換になってるようだが、
int型をstring型に変換する方法を聞いてるの?
0364デフォルトの名無しさん
2010/05/08(土) 15:51:17プロパティの型(のTypeオブジェクト)の取得
PropertyInfo.PropertyType
Typeオブジェクトの型へのキャスト
Convert.ChangeType
でも、君は単に何か勘違いしてるだけだと思うなw
コンパイル時に「あるクラスのプロパティの型」は確定してるんじゃないの?
だったら素直にその型へキャストするコード書くだけだと思うけど
0365デフォルトの名無しさん
2010/05/08(土) 16:29:22型変換とキャストて同じ意味だと思ってました
intをstring〜というのではありません。うまく伝えられなくて申し訳ないです
>>364
>コンパイル時に「あるクラスのプロパティの型」は確定してるんじゃないの?
>だったら素直にその型へキャストするコード書くだけだと思うけど
確かに確定しているのですが、ループで回したいので・・
正直、どう説明したらいいか自分でも分かってないので書いたものを上げました。
http://ideone.com/L97Ih 後出しになってしまいすいません。
詰まってるのは38行目です。
0366デフォルトの名無しさん
2010/05/08(土) 16:37:550367デフォルトの名無しさん
2010/05/08(土) 17:16:39わざわざキャストしなくてOKてことでいいのでしょうか..
キャストせずそのままで書いてみましたが、foreachが回らないんです。
コメントアウトすると回るんですが。
0368デフォルトの名無しさん
2010/05/08(土) 17:21:070369デフォルトの名無しさん
2010/05/08(土) 17:25:36> (System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
非staticなプロパティ一覧を取得してるのに、
> p.SetValue(null, ()(getRegistryValue(settingRootKey, settingSubKey, p.Name), null);
設定する段になってプロパティ設定する先のインスタンスがnullってどういうことさ。
0370デフォルトの名無しさん
2010/05/08(土) 17:58:38Convert.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);
0371デフォルトの名無しさん
2010/05/08(土) 19:01:03何がしたいんだ?ちゃんと、MSDN読めよ
0372デフォルトの名無しさん
2010/05/08(土) 20:06:150373デフォルトの名無しさん
2010/05/09(日) 00:17:22void 書き換え(MyClass MC){
MC.val=20;
}
みたいな
0374デフォルトの名無しさん
2010/05/09(日) 02:33:350375デフォルトの名無しさん
2010/05/09(日) 04:10:380376デフォルトの名無しさん
2010/05/09(日) 04:19:46そういうことやると混乱を招くには招くけど、OOP ってオブジェクトの状態が書き換わっちゃうもんだからねぇ。
MC の中身を書き換えられたくないんなら、MyClass を immutable に作っておくべき
プロパティを全部 get だけにして、コンストラクターでしかメンバーの初期化しないようにしとく)。
MyClass が単純なデータを表すものなんだったら immutable に作っておくこと推奨。
本質的に中身がコロコロ変化するようなものなんだったら、メソッドの中で書き換わることはしょうがない。
0377デフォルトの名無しさん
2010/05/09(日) 06:53:01すでに質問もでてて理想のコードがでてたような気がする
ただし、数値型を方みてごにょごにょするコードだったけど
0378デフォルトの名無しさん
2010/05/09(日) 12:26:27ご〜にょご〜にょごにょヲタクの子〜
0379デフォルトの名無しさん
2010/05/09(日) 23:49:450380デフォルトの名無しさん
2010/05/09(日) 23:51:320381デフォルトの名無しさん
2010/05/10(月) 00:02:50上界(inferimum)ならともかく、最大値が int で何かまずい?
0382デフォルトの名無しさん
2010/05/10(月) 00:54:03下界(lower bound)
上限(supremun)
下限(infimun)
0383デフォルトの名無しさん
2010/05/10(月) 01:16:18いや、ポイントはそこじゃなくて・・・
といいたいけど、要所で単語間違えた自分も悪いな。
0384デフォルトの名無しさん
2010/05/10(月) 10:25:260385デフォルトの名無しさん
2010/05/10(月) 10:40:250386デフォルトの名無しさん
2010/05/10(月) 10:45:16こんな機能が.net4.0から標準で入るんだね
これって読み込みキャッシュとしては当たり前すぎる機能だけど
書き込みとか変更かけてもOSなりクラスなりがやってくれるので
あればかなり便利だよね
0387デフォルトの名無しさん
2010/05/10(月) 12:32:12自前で作ったやつを置き換えようかどうしようか・・・
0388デフォルトの名無しさん
2010/05/10(月) 12:53:590389デフォルトの名無しさん
2010/05/10(月) 13:02:19あるファイルのReadとかを
物理ファイルから各スレッドが読み出しを行うのではなく
メモリマップドファイルから各スレッドが読みだすってこと?
0390デフォルトの名無しさん
2010/05/10(月) 13:05:340391デフォルトの名無しさん
2010/05/10(月) 13:06:19そうみたいだね
まあ直接読みにいくよりはアクセスロスを減らせるんじゃないかな?
0392デフォルトの名無しさん
2010/05/10(月) 13:12:00内部的な動きってどうなってるんだろう
ページに対する変更があった場合はストレージへのフラッシュを
行うスレッドとかがいるんだろうか?
フラッシュをメインスレッドでやってると意味ないだろうし
0393デフォルトの名無しさん
2010/05/10(月) 13:14:59メンバにSafeHandleがあるから単なるラッパーだろう
0394デフォルトの名無しさん
2010/05/10(月) 13:21:48メモリマップドファイルって、大抵はファイル使わないでメモリ空間で使うっぽい
ファイル使う場合はどうなんだろうな
0395デフォルトの名無しさん
2010/05/10(月) 13:31:59アクセスはビューを介して行われるので、変更のあったビューだけ記録しておけば現在値を返せるようになっている
0396デフォルトの名無しさん
2010/05/10(月) 13:39:47じゃああれか
専ブラのようにちまちましたデータを扱うけど最終的にアプリ終了時に
全部書き込まれてればいいような場合だとメモリマップドは有効かな?
0397デフォルトの名無しさん
2010/05/10(月) 13:56:30メモリマップドファイルってのはメモリ上にエリアを確保して、そのエリアに自分で名前を付ける。
その名前がわかってればどのアプリからでも自由に読み書きできる、って仕組みだから、
物理ドライブに対するディスクキャッシュとはちょっと違うぞ。
ファイルが1つしかないRAMディスクって考えた方がイメージとしては近い。
0398デフォルトの名無しさん
2010/05/10(月) 14:17:56それは直接ファイルを指定しないからそういうふうに動くように見えるだけだ。
そもそも厳密には、メモリ上に確保するというよりページングファイル上に確保する。
0399デフォルトの名無しさん
2010/05/10(月) 14:21:01アクセス用の名称さえちゃんとわけておけば複数使えるんじゃないの?
使い方次第では自前でbyte配列に入れてどうこうするより便利そうじゃん
0400デフォルトの名無しさん
2010/05/10(月) 14:27:460401デフォルトの名無しさん
2010/05/10(月) 14:31:59えっ
0402デフォルトの名無しさん
2010/05/10(月) 14:47:36MS製品はなんでインストール先ドライブをC以外にさせてくれないんだ?
ユーザーの自己責任でDとかにさせてよ
0403デフォルトの名無しさん
2010/05/10(月) 14:49:210404デフォルトの名無しさん
2010/05/10(月) 14:49:33パスつなぎ直せばいいんじゃない?
0405デフォルトの名無しさん
2010/05/10(月) 14:51:36選べるのもあるけど.netの基礎部分とかはCじゃないと入らないとか
いろいろあるのよ
0406デフォルトの名無しさん
2010/05/10(月) 15:20:080407デフォルトの名無しさん
2010/05/10(月) 15:59:48x メモリマップドファイル
o メモリマップトファイル
0408デフォルトの名無しさん
2010/05/10(月) 16:00:59そもそもいつまでもOSがドライブレター依存なのをなんとかして欲しいんだがw
0409デフォルトの名無しさん
2010/05/10(月) 16:05:06最近のWindowsはダイナミックボリュームにすれば
ハードディスクのパーティションからドライブ名ではなく
ディレクトリ名にマウント出来るようになってる
>>402
どうしてもCの容量が足りなくなって困るときは
C:\Program Files\Hoge 以下全部を
別のパーティションに割り当てていけばいい
0410デフォルトの名無しさん
2010/05/10(月) 16:32:05XP Homeってダイナミックボリュームできないとか調べるとでてくるんだが
管理機能使うとマウントできるなw
これは違うんだっけ?
0411デフォルトの名無しさん
2010/05/10(月) 16:36:060412デフォルトの名無しさん
2010/05/10(月) 17:28:25VisualC#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に表示できません。
よろしくご教示お願いします。
0413デフォルトの名無しさん
2010/05/10(月) 17:32:18現在、.NET1.1、2.0、3.0、3.5とそれぞれのサービスパック、VisualC#2008が入っています。
このうち、削除する必要があるものはありますか? or 削除したほうがいいものはありますか? or 削除してもよいものはありますか?
ご意見お聞かせください。
0414デフォルトの名無しさん
2010/05/10(月) 17:37:02メインPCで簡易ローカルサーバ?(2010のヘルプとかkkcaldのような)を立て
自宅LAN内のクライアントからちょっとした確認と操作をできるようなツールを作ろうと思っています。
HttpListenerを使えば比較的簡単に作れるのを確認したのですが
HTMLを動的に生成するのが結構面倒くさそうです。
今はStringBuilderを使い、生のHTMLを直接作っています。
IIS入れてWeb Developer+ASP.NETにするのが開発は一番楽そうですが
そこまで大袈裟な運用をする予定はいまのところないので。
0415デフォルトの名無しさん
2010/05/10(月) 17:38:310416デフォルトの名無しさん
2010/05/10(月) 17:39:11別に消す必要はないし消した方がいいものもないと思う
.NET4はランタイムから変わってるから
.NET4でしか作らないのなら全部消しても良かったような
0417デフォルトの名無しさん
2010/05/10(月) 17:39:32pictureBox.ImageをRotateしてpictureBox.Invalidateで再描画要求とか
>>413
別に削除しなくていいし数十Mぐらいけちけちするな
HDD容量に心底困ってるならVC#2008からだけど
それならマイドキュメントとかどうでもいいデータを適当に外部に移動した方がいい
0418デフォルトの名無しさん
2010/05/10(月) 17:40:51なし、なし、あり
2008は消してもいいけど2010のVSが読めるとは限らない
読めると思うけど、バグがないとも言い切れない
.NET使うのは別にVSに限らないからこの話の流れで消すのは不適切だろう
0419デフォルトの名無しさん
2010/05/10(月) 17:41:10簡易でも自分でHTTPd作る方がよほど大袈裟な気がせんでもない
0420デフォルトの名無しさん
2010/05/10(月) 17:47:01ありがとうございます。
できました。
0421デフォルトの名無しさん
2010/05/10(月) 18:00:120422デフォルトの名無しさん
2010/05/10(月) 18:10:270423デフォルトの名無しさん
2010/05/10(月) 19:28:190424デフォルトの名無しさん
2010/05/10(月) 19:29:41メソッドに入ってるのがローカル変数なの?
class Sample{
int a;
void func(){
int b;
}
}
この例だとaがゴローバル変数、bがローカル変数
って感じ?
0425デフォルトの名無しさん
2010/05/10(月) 19:31:57悪い事言わないから入門書嫁
0426デフォルトの名無しさん
2010/05/10(月) 19:33:10| ノ\ ヽ |
/ ●゛ ● | |
| ∪ ( _●_) ミ j
彡、 |∪| | J
/ ∩ノ ⊃ ヽ [ゴローバル変数]
( \ / _ノ | |
.\ “ /__| |
\ /___ /
0427デフォルトの名無しさん
2010/05/10(月) 19:35:230428デフォルトの名無しさん
2010/05/10(月) 19:36:26ゴローバルじゃなくグローバルね
0429デフォルトの名無しさん
2010/05/10(月) 19:47:050430デフォルトの名無しさん
2010/05/10(月) 20:44:52念のため言っとくけど解決方法が思い切り間違ってるぜ。
原因は .NET 4のClient Profile をターゲットにしてるからだ。
Client Profileを外せば問題なく参照設定できる。
もちろんClient Profileだけの環境では動作しなくなるけどな。
とはいえ、.NET 4はClient Profileでもフルでも対してサイズが変わらないので、
あえてClient Profileだけを入れるメリットはあまりないと思う。
0431デフォルトの名無しさん
2010/05/10(月) 20:54:09ややこしいことしないでもジャンクションで十分じゃん。
0432デフォルトの名無しさん
2010/05/10(月) 20:58:16System.Web.Hosting.ApplicationHost
0433デフォルトの名無しさん
2010/05/10(月) 20:59:30なるほど。XslCompiledTransformってのがあるんですね。考えてみます。
0434デフォルトの名無しさん
2010/05/10(月) 21:27:22スプーンおばさん乙
0435デフォルトの名無しさん
2010/05/10(月) 21:40:51ドラッグアンドドロップの処理を行うアプリを作成しています。
やりたいのは画面のテキストボックスに表示しているファイルパスをドラッグして、
MicrosoftExcel等の既成品の画面にドロップするとそのファイルを表示できるというものを作りたいんですが
ドラッグは出来てもドロップができません。(カーソルがドロップ不可の状態です)
ドロップされる側のアプリを作って確認したところドロップは出来てもDragEnterイベントにはDataObject型で渡されていないようでした。
あと、同じアプリ同士でドロップした場合は何故かきちんと渡されていました。
ドロップする側はMouseMoveイベント内でボタンが押されたらDoDragDropメソッドを作って、
その中にはDataObjectにパスを設定したものを渡しています
長くてすいません何かわかる方がいるなら教えていただきたいです
0436デフォルトの名無しさん
2010/05/10(月) 21:44:02勘違いか変なことしてるかどっちかだ
0437デフォルトの名無しさん
2010/05/10(月) 22:15:12ドロップする側はMouseMoveイベント内でDoDragDropメソッドにDataObjectとenumを渡すだけで良いのですか?
0438デフォルトの名無しさん
2010/05/10(月) 22:19:53なら最初からC++やったほうがよさそう
0439デフォルトの名無しさん
2010/05/10(月) 22:22:18つかenumて。ちゃんと型名出してくれよ。
ま、なんにせよこれ以上は実際のソースがないとどうにもなんないな。
ソースがあってもどうにかなるとは限らないけど。おいらはOffice持ってないし。
0440デフォルトの名無しさん
2010/05/10(月) 22:28:29Linq to Xmlで作るのも手。
StringBuilderでHTML作るよりは数億倍良い。
0441デフォルトの名無しさん
2010/05/10(月) 22:28:46そうでなければC#からがオススメ
0442デフォルトの名無しさん
2010/05/10(月) 22:30:580443デフォルトの名無しさん
2010/05/10(月) 23:02:18{
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);
}
}
一応簡単なソースなんですがドロップする側はこれだけで十分なんですかね?
0444デフォルトの名無しさん
2010/05/10(月) 23:09:150445デフォルトの名無しさん
2010/05/10(月) 23:12:030446デフォルトの名無しさん
2010/05/10(月) 23:12:220447デフォルトの名無しさん
2010/05/10(月) 23:17:190448デフォルトの名無しさん
2010/05/11(火) 07:34:110449デフォルトの名無しさん
2010/05/11(火) 09:41:41フィールドを直接初期化するなりコンストラクタでやればいい
構造体の配列の場合引数なしのコンストラクタでは初期化できない
適当に引数を与えてオーバーロードする
0450デフォルトの名無しさん
2010/05/11(火) 10:10:573.0以降かな
配列も型省略できるようになったんだ
string[] strs = new[] { "あ", "い" };;
0451デフォルトの名無しさん
2010/05/11(火) 10:12:39Struct1[] structs = new[] { new Struct1 { v1 = 1, v2 = 2 }, new Struct1 { v1 = 3, v2 = 4 } };
0452デフォルトの名無しさん
2010/05/11(火) 10:16:170454デフォルトの名無しさん
2010/05/11(火) 10:35:14どっからみてもJava並みだよな
0455デフォルトの名無しさん
2010/05/11(火) 12:51:10構造体に対してはコピーが発生するのがどうにも気持ち悪くて使ってない
>>451の場合はstructsへの代入がアトミックだからコピーしなくていい気がするけど
実際どんなコードにコンパイルされるんだろ
0456デフォルトの名無しさん
2010/05/11(火) 17:48:200457デフォルトの名無しさん
2010/05/11(火) 18:04:250458デフォルトの名無しさん
2010/05/11(火) 18:10:46調べて見るとどうも一筋縄ではいかないようなのですが、
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 へ変更した場合に限り、表示の継続が可能。
などを見る限り出来そうな感じがします。
しかし、書いてあるように設定してみましたがうまくいきませんでした。
枠線を消しつつウィンドウサイズを変更出来るようにすることは出来ますか?
0459デフォルトの名無しさん
2010/05/11(火) 18:15:22Form frm = new Form();
があったとしたら
frmがオブジェクトですか?それとも変数?
0460デフォルトの名無しさん
2010/05/11(火) 18:16:46人それぞれかもしれないけど
frm自体はオブジェクト変数
new された段階でオブジェクト変数に実態が入る
とかじゃだめ?
0461デフォルトの名無しさん
2010/05/11(火) 18:38:38WM_NCHITTEST 関連で何とかなるかも
0462デフォルトの名無しさん
2010/05/11(火) 19:16:15http://bbs.wankuma.com/index.cgi?mode=al2&namber=25467&KLOG=47
ここでもそういうことが書かれてますね。
どうもC++をやってなかった人間なので、メッセージというのに少し抵抗があって避けたかったのですが、
やらなければいけないみたいですね。がんばってみます。
0463デフォルトの名無しさん
2010/05/11(火) 19:48:310464デフォルトの名無しさん
2010/05/11(火) 19:57:570465デフォルトの名無しさん
2010/05/11(火) 21:14:52もともとWebのクライアント用の技術だけど最新版はWebを介さずにインストールできたりファイルアクセスもできたり
0466デフォルトの名無しさん
2010/05/11(火) 21:24:050467デフォルトの名無しさん
2010/05/11(火) 21:31:12Flashみたいなもん
ローカルにインストールして権限昇格モードにしない限りは厳しいセキュリティ制限があるので安全
0468デフォルトの名無しさん
2010/05/11(火) 22:43:080469デフォルトの名無しさん
2010/05/11(火) 22:56:310470デフォルトの名無しさん
2010/05/11(火) 23:01:56C#上のウェブブラウザでHTMLごと表示して、キャッシュからコピーか画像をクリップボードに貼り付けて保存を考えているのですが
キャッシュの取得の仕方、画像のクリップボードへの貼り付け方がわかりません。
0471デフォルトの名無しさん
2010/05/11(火) 23:04:52直リン禁止はリファラ、クッキー、hidden属性を見るくらいのパターンしかない
全部WebBrowserなんか使わずに対応できる
0472デフォルトの名無しさん
2010/05/11(火) 23:16:34DOBONさんの所を参考にしてもうまくいきません。
POSTするデータの指定が悪いんだと思うんですが
HTMLがどんなデータをPOSTするか確認する方法はありませんか?
0473デフォルトの名無しさん
2010/05/11(火) 23:18:25ソース晒した方が早いぞ
0474デフォルトの名無しさん
2010/05/11(火) 23:18:59リファラを設定することで無事ダウンロードできました!!
ありがとうございました!
0475デフォルトの名無しさん
2010/05/11(火) 23:23:44string 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!日記のソースも見ないと分からないですかね?
0476デフォルトの名無しさん
2010/05/11(火) 23:26:56まずエンコードしてPOSTしてるのか怪しそうだが
0477デフォルトの名無しさん
2010/05/11(火) 23:29:27見た感じIDとPASS要求してるくらいだから普通にPOSTしてどうなるもんでもなさげ
ちゃんと認証から書け
0478デフォルトの名無しさん
2010/05/11(火) 23:31:220479デフォルトの名無しさん
2010/05/11(火) 23:36:20DOBONさんのC#でPOSTの一番上を参照しているので
そこら辺は大丈夫です。
>>477
認証とは…?
0480デフォルトの名無しさん
2010/05/11(火) 23:36:470481デフォルトの名無しさん
2010/05/11(火) 23:38:180482デフォルトの名無しさん
2010/05/11(火) 23:39:41IDとパスワードをログインページのフォームが指定する通りにPOSTしてセッションクッキーを受け取ることですよ
と言われて理解できないなら諦めるべし
まだ早い
0483デフォルトの名無しさん
2010/05/11(火) 23:42:34それしか言えない
あとログは絶対晒すなよw
0484デフォルトの名無しさん
2010/05/12(水) 00:12:11他のプロセスに移動されたり出来ないようにするにはどうするのが良いですか?
Win32APIでキーボードフックする以外に方法があったら教えてください
0485デフォルトの名無しさん
2010/05/12(水) 00:15:250486デフォルトの名無しさん
2010/05/12(水) 00:38:53KeyDownで
e.SuppressKeyPress = true;
とかやればいいじゃないの?試してないから出来るかわからないけど。
0487デフォルトの名無しさん
2010/05/12(水) 00:44:52タスクバーがチカチカしまくり千代子ってか
0488デフォルトの名無しさん
2010/05/12(水) 00:58:35開始から何文字目というような指定ではなく、どんな文字列でもとにかく右から2番目だけ置換というふうにしたいのですが・・
0489488
2010/05/12(水) 01:02:00右から2番目のAをBに置換
ABCABC→BBCABC
AAAAAB→AAABAB
みたいな感じです
0490デフォルトの名無しさん
2010/05/12(水) 01:10:220491デフォルトの名無しさん
2010/05/12(水) 01:16:420492デフォルトの名無しさん
2010/05/12(水) 01:17:530493デフォルトの名無しさん
2010/05/12(水) 01:22:21string 対象文字列 = "AAAAAAA"; // 調べる文字列
char cTok = 'A'; // 対象文字
char cRp = 'B'; // 置換文字
int iPos = 2; // 後ろから2文字目
if ( 対象文字列[対象文字列.Length - iPos].CompareTo(cTok) == 0 )
{
対象文字列[対象文字列.Length - 2] = cRp;
}
koredeii?
0494デフォルトの名無しさん
2010/05/12(水) 01:34:25string 置き換え前 = "ABCABC";
string 置き換え後 = "";
if (置き換え前.Length >= 2)
{
StringBuilder sb = new StringBuilder(置き換え前);
置き換え後 = sb.Replace('A', 'B', 置き換え前.Length - 2, 1).ToString();
}
でもできそう。試してないけど・・・
0495デフォルトの名無しさん
2010/05/12(水) 01:40:42string 置き換え前 = "ABCABC";
string 置き換え後 = new Regex(@"A(?=.*A)", RegexOptions.RightToLeft).Replace(置き換え前, "B", 1);
0496488
2010/05/12(水) 01:57:56無事望んだ通りの置換が出来ました
0497デフォルトの名無しさん
2010/05/12(水) 05:42:17おやじギャグ寒い
0498デフォルトの名無しさん
2010/05/12(水) 06:51:10寒気がする
0499デフォルトの名無しさん
2010/05/12(水) 07:52:39もう解決したようなのでどうでもいい話だが、
var str = "AAAAAA"; として、
a.Substring(0, a.Length-2)+"B"+a[a.Length-1]
だな。これくらいは1行でできる。
0500デフォルトの名無しさん
2010/05/12(水) 07:54:040501デフォルトの名無しさん
2010/05/12(水) 09:09:56それだと、文字列の後ろから2番目の文字が置換されるだけだよ
0502デフォルトの名無しさん
2010/05/12(水) 09:10:190503デフォルトの名無しさん
2010/05/12(水) 09:12:10bool looked = false;
for(int i=str.length-1;i>=0;i--)
{
if( str[i] == 'A' )
{
}
0504デフォルトの名無しさん
2010/05/12(水) 09:13:13もういいやめんどい
0505デフォルトの名無しさん
2010/05/12(水) 09:17:24長さのチェック
元のテキストから後ろ2文字までを切り出す
1文字置換するべき文字をつける
元のテキストから最後の1文字だけをくっつける
だけでいいだろ
SubStringとLengthだけあれば十分だ
0506デフォルトの名無しさん
2010/05/12(水) 09:21:070507デフォルトの名無しさん
2010/05/12(水) 09:44:25だって質問者自身が>499のように、
右から2番目の文字を置換するだけでいいって言ってるんだもの。
0508デフォルトの名無しさん
2010/05/12(水) 09:50:390509デフォルトの名無しさん
2010/05/12(水) 09:53:04今までに出した例で出来なかったらもう一回質問してくるでしょ
0510デフォルトの名無しさん
2010/05/12(水) 10:04:400511デフォルトの名無しさん
2010/05/12(水) 11:00:50var 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;
}
}
泥臭く書いてみた。もっと短かく書けたらよろしく
0512デフォルトの名無しさん
2010/05/12(水) 11:13:19ではなんなのだ?
右から2番目と言って、全然違う例出されても困る
0513デフォルトの名無しさん
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);
0514511
2010/05/12(水) 11:17:430515デフォルトの名無しさん
2010/05/12(水) 11:31:55文字列中のAの中で右から2番目に出現するAをBにする
だよ
0516デフォルトの名無しさん
2010/05/12(水) 11:33:570517デフォルトの名無しさん
2010/05/12(水) 11:33:57�A �@
ABCABC→BBCABC
↑
右から数えて2回目に出てくるA
0518デフォルトの名無しさん
2010/05/12(水) 11:34:570519デフォルトの名無しさん
2010/05/12(水) 11:36:19この点だけ見ても>>499の回答は導かれませんな
酔ってんのかおめーは
0520デフォルトの名無しさん
2010/05/12(水) 11:37:430521デフォルトの名無しさん
2010/05/12(水) 11:41:130522デフォルトの名無しさん
2010/05/12(水) 11:45:25ここは初心者が初心者にレスするスレだぞ気にしたら負けだ
俺? へっぽ子PGですよ
0523デフォルトの名無しさん
2010/05/12(水) 12:03:59495先生以外のレスはなかったことにしとけ
0524デフォルトの名無しさん
2010/05/12(水) 17:44:30コルーチン的に。
0525デフォルトの名無しさん
2010/05/12(水) 17:45:440526デフォルトの名無しさん
2010/05/12(水) 20:48:35コンパイラが勝手にステートマシンを作ってくれる
0527デフォルトの名無しさん
2010/05/12(水) 20:55:45ぐぐってみたが便利そうな機能だなー
こういうことも参考書とかに書いてくれればいいのにな
0528デフォルトの名無しさん
2010/05/12(水) 20:58:150529デフォルトの名無しさん
2010/05/12(水) 21:01:570530488
2010/05/12(水) 21:18:13文字列にある指定した文字の中で右から2番目にあるものという意味でした
うまく説明できずにすみません(↑もちゃんと説明出来てるか・・
>>495氏のRegexを使って解決することが出来ました
たくさんのレスありがとうございました
0531デフォルトの名無しさん
2010/05/12(水) 21:21:29それはコーラン
0532デフォルトの名無しさん
2010/05/12(水) 21:22:44断食して来い
0533デフォルトの名無しさん
2010/05/12(水) 22:02:06それはラマダーン
0534デフォルトの名無しさん
2010/05/12(水) 22:45:350535デフォルトの名無しさん
2010/05/12(水) 23:09:200536デフォルトの名無しさん
2010/05/13(木) 02:00:020537デフォルトの名無しさん
2010/05/13(木) 13:05:070538デフォルトの名無しさん
2010/05/13(木) 13:05:510539デフォルトの名無しさん
2010/05/13(木) 13:30:570540デフォルトの名無しさん
2010/05/13(木) 14:20:270541デフォルトの名無しさん
2010/05/13(木) 14:35:390542デフォルトの名無しさん
2010/05/13(木) 14:37:140543デフォルトの名無しさん
2010/05/13(木) 14:40:20最初にフォーカスが当たってるコントロールを設定するのはActiveControlで
0544デフォルトの名無しさん
2010/05/13(木) 14:49:41TextBox.Select() か Shown イベントで TextBox.Focus() とかいう話?
0545デフォルトの名無しさん
2010/05/13(木) 14:50:31Form.Shownイベントでフォーカスを設定してやればいいんじゃね?
0546デフォルトの名無しさん
2010/05/13(木) 14:51:08FormのLoadとShownのどちらも期待通りの動作
this.ActiveControl = textBox4;
FormのShownの時期待通りの動作
textBox4.Focus();
0547デフォルトの名無しさん
2010/05/13(木) 14:51:20うは……。1分負け。おみそれしました。
0548デフォルトの名無しさん
2010/05/13(木) 15:14:340549デフォルトの名無しさん
2010/05/14(金) 08:34:480550デフォルトの名無しさん
2010/05/15(土) 09:21:48下記のように参考にできそうなサイトでは新規作成の画面で
「Windowsコントロールライブラリ」
を選択するよう記載しているのですが、VS2010ではコントロールライブラリがありません。
どのような回避策をとればいいのかわからず困っております。
http://codezine.jp/article/detail/58
http://mobiquitous.com/programming/ietoolbar.html
ご教授願えませんでしょうか。
0551デフォルトの名無しさん
2010/05/15(土) 09:55:530552デフォルトの名無しさん
2010/05/15(土) 22:30:11コンソールアプリケーションあたりで取り敢えずプロジェクト作って
既存のファイル消してユーザコントロール追加して
プロジェクトの出力をクラスライブラリにすればいいんじゃないかな
0553デフォルトの名無しさん
2010/05/15(土) 23:07:080554デフォルトの名無しさん
2010/05/15(土) 23:10:37EEにもクラスライブラリプロジェクトはある
0555デフォルトの名無しさん
2010/05/15(土) 23:22:530556デフォルトの名無しさん
2010/05/16(日) 01:58:400557デフォルトの名無しさん
2010/05/16(日) 12:53:000558デフォルトの名無しさん
2010/05/16(日) 12:56:370559デフォルトの名無しさん
2010/05/16(日) 12:58:46結構使う人多いのかなぁ…・
0560デフォルトの名無しさん
2010/05/16(日) 14:22:15GUIなんか必要ないプログラムはコンソールの方が便利だが
0561デフォルトの名無しさん
2010/05/16(日) 17:30:49君は変人か?
普通使うっしょ
0562デフォルトの名無しさん
2010/05/16(日) 17:57:560563デフォルトの名無しさん
2010/05/16(日) 19:46:30ここのライブラリを使ってるかたいますかね?
解凍してそのままファイルを再圧縮する際に登録はうまくいくんだけど
saveでこけるんだけどどうすればいいんだろw
0564デフォルトの名無しさん
2010/05/16(日) 20:22:17特にC#は…
0565デフォルトの名無しさん
2010/05/16(日) 20:24:560566デフォルトの名無しさん
2010/05/17(月) 05:48:330567デフォルトの名無しさん
2010/05/17(月) 12:11:440568デフォルトの名無しさん
2010/05/17(月) 12:26:110569デフォルトの名無しさん
2010/05/17(月) 14:17:00その必要な項目がツリー的に広がるのであれば難しくなってきたりするよね・・・
0570デフォルトの名無しさん
2010/05/17(月) 14:46:170571デフォルトの名無しさん
2010/05/17(月) 14:47:50htmlのCSSみたいな感じでGUIをいじれる
0572デフォルトの名無しさん
2010/05/17(月) 15:01:16だが、今はWPFがあるので、凝ったGUIを自由に作ることができる。
逆に、WPFでも作れないようなGUIがあるなら教えて欲しいくらいだ。
なお、凝ったGUIはたいてい使いにくいという意見については、
使いやすさに重点を置かずに凝るから使いにくくなるというだけの問題だ。
逆に、凝ったほうが使いやすくなる例は、フォーカス位置の記憶、自動補完、
普通はツリー表示できないアイテムのツリー表示などたくさんある。
0573デフォルトの名無しさん
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を実行して置換するようなやり方はないでしょうか
0574デフォルトの名無しさん
2010/05/17(月) 18:23:030575デフォルトの名無しさん
2010/05/17(月) 18:29:37検索文字列がAB、AAで置き換え文字列がそれぞれCA、DBの時、
前から順に発見しだい置き換えると
ABACDの1文字目にABがあるのでCAACDに
CAACDの2文字目にAAがあるのでCDBCDに
ってなるけど良いのかしら
Match→Replaceの方では、この2回目の置き換えが発生しない
(ABACD→CAACDとなるだけ)
0576デフォルトの名無しさん
2010/05/17(月) 18:37:19その程度は置き換えた部分スキップするようにすればええのじゃあないか?
結局のところ回答は「そんなもん無い」だから自分でロジック書かないといかんが。
もしくは気にしないか、だな。
100万回実行されるメソッドでもなければ気にしないの選択肢を薦めたい。
0577デフォルトの名無しさん
2010/05/17(月) 19:34:40オーバーロードがあるだろ。それ使えよ
0578デフォルトの名無しさん
2010/05/17(月) 19:40:040579デフォルトの名無しさん
2010/05/17(月) 20:34:280580573
2010/05/17(月) 21:15:26これ使ったらReplace1回だけでいけますね
str = reg.Replace(str, new MatchEvaluator(func));
string func(Match m) { string m.Value = s; …… return s; }
0581デフォルトの名無しさん
2010/05/17(月) 22:17:25×string m.Value = s;
○string s = m.Value;
0582デフォルトの名無しさん
2010/05/17(月) 23:29:31C#3.0以上ならラムダ式、2.0なら匿名メソッド使おう。
0583デフォルトの名無しさん
2010/05/18(火) 00:56:180584デフォルトの名無しさん
2010/05/18(火) 01:11:500585デフォルトの名無しさん
2010/05/18(火) 01:24:43お前のとこアレだろ、社内規約で条件演算子( ? : )禁止とかされてるクチの会社だろww
0586デフォルトの名無しさん
2010/05/18(火) 02:06:560587デフォルトの名無しさん
2010/05/18(火) 02:10:170588デフォルトの名無しさん
2010/05/18(火) 02:10:390589デフォルトの名無しさん
2010/05/18(火) 02:15:580590デフォルトの名無しさん
2010/05/18(火) 03:33:38外部変数のキャプチャを理解してない馬鹿に使わせるべきではないとは思うが。
0591デフォルトの名無しさん
2010/05/18(火) 04:04:030592デフォルトの名無しさん
2010/05/18(火) 04:54:100593デフォルトの名無しさん
2010/05/18(火) 05:17:49関数型言語に触った事すらない天才ねぇ…?それって何の天才なの?
0594デフォルトの名無しさん
2010/05/18(火) 05:31:050595デフォルトの名無しさん
2010/05/18(火) 06:55:40ラムダ式とか言うからラムダ計算とか関数型言語とか過剰に連想して、アレルギー起こす人がいるような。
そんなたいそうなもんでもないのに。
0596デフォルトの名無しさん
2010/05/18(火) 08:17:510597デフォルトの名無しさん
2010/05/18(火) 08:57:45ヘタに使われると逆に読みにくいいんだよ
0598デフォルトの名無しさん
2010/05/18(火) 09:24:070599デフォルトの名無しさん
2010/05/18(火) 10:35:310600デフォルトの名無しさん
2010/05/18(火) 10:53:36"ラムダの使い方"じゃなくてこういう場面ではラムダを使ってこんな風に書けるって説明が
……って普通に転がってるな やっぱ似てないわ
0601デフォルトの名無しさん
2010/05/18(火) 11:09:01議会速記もはっきり言って無駄
0602デフォルトの名無しさん
2010/05/18(火) 14:22:54アドインの機能を使えば、「匿名メソッドに名前を付ける」で終了
0603デフォルトの名無しさん
2010/05/18(火) 14:24:450604デフォルトの名無しさん
2010/05/18(火) 14:28:580605デフォルトの名無しさん
2010/05/18(火) 14:30:470606デフォルトの名無しさん
2010/05/18(火) 14:34:33てか、それは「適当なタイミング」を逃してるだけじゃん
0607デフォルトの名無しさん
2010/05/18(火) 14:36:49デスマで時間が無い時以外ありえねぇ
そしてそのコードはそのままそのソフト終焉の時か、大規模改修まで放置されるのさorz
0608デフォルトの名無しさん
2010/05/18(火) 14:37:26statementタイプの場合はメンバ関数のdelegateにしたほうが見やすいケースが多い。
0609デフォルトの名無しさん
2010/05/18(火) 16:27:010610デフォルトの名無しさん
2010/05/18(火) 16:30:53何気なく使ってるけど方言なのかな?
@関西住みより
0611デフォルトの名無しさん
2010/05/18(火) 17:33:10簡単な文字列をユーザーにGUIから打ち込んでもらい、
その文字列、例えば(a+b)*c
などを数式として、計算して、計算結果を表示する様なプログラムを作りたいのですが、
文字列から数式にスムーズに返還する便利な方法とかってありますでしょうか?
それとも、そんなの無くて、文字列を解釈して、計算するプログラムを自分で作るしか
無いのでしょうか?
だとしたら、かなり大変ですよね。特にかっこの辺り。
こんなプログラム俺に作れるか?とか思ったりしますが。
とにかく知ってる人教えてください。
0612デフォルトの名無しさん
2010/05/18(火) 17:35:20int.TryParse
とかでしらべてみては?
小数とかいるならdecimal.TryParse
0613デフォルトの名無しさん
2010/05/18(火) 17:38:21それは数字だけの話だよね
数式全部を文字列で与えてそれを解析して計算する感じか
ポケコンなんかの関数電卓みたいな感じか
0614デフォルトの名無しさん
2010/05/18(火) 17:40:52流れとしては、文の解析→ツリー構造化→計算
と言うかスレチ?
0615デフォルトの名無しさん
2010/05/18(火) 17:41:56は、612に対してね
0616デフォルトの名無しさん
2010/05/18(火) 17:42:58そりゃ自分で解析するしかないだろ・・・
手軽にやりたいなら
JScript.NETかなんかのEval使うって方法もあるんじゃね?
複雑な式でも解析できるかどうかは知らんが
0617613
2010/05/18(火) 17:43:23>>611がやりたいのはこういうのだと思う
0618613
2010/05/18(火) 17:44:42http://tomari.org/main/java/dentaku_kansuu.html
0619デフォルトの名無しさん
2010/05/18(火) 17:52:340620613
2010/05/18(火) 17:55:57http://msdn.microsoft.com/ja-jp/academic/cc998600.aspx
0621デフォルトの名無しさん
2010/05/18(火) 18:30:02ポーランド記法を逆ポーランド記法に変換してから、スタックで計算するのセオリーだったような気がする
0622デフォルトの名無しさん
2010/05/18(火) 18:43:390623デフォルトの名無しさん
2010/05/18(火) 20:52:40LINQのExpression Treeを吐くようにすればインタプリタ書かなくて済むし爆速
0624デフォルトの名無しさん
2010/05/18(火) 23:36:310625デフォルトの名無しさん
2010/05/18(火) 23:50:05class AddExpression : ExpressionNode {
public ExpressionNode Left; public ExpressionNode Right;
public override int Eval() { return Left.Eval() + Right.Eval(); }
}
構文木に変換できてしまえば評価自体はこんな感じでとっても簡単わかりやすい
そのための解析は再帰下降パーサとか書くことになって結構難しい
0626デフォルトの名無しさん
2010/05/18(火) 23:58:26関西大学の講座ですねわかります
0627デフォルトの名無しさん
2010/05/19(水) 02:19:421.一番最後の(を探して、その直後の)までの文字列を取り出す。
2.1の結果中の*/を検索して計算。*/が無くなるまで。
3.2の結果中の+-を検索して計算。+-が無くなるまで。
4.1の()内の文字列を3の結果の数字で置き換えて1に戻る。
斜め読みだがこんな処理か。
おっと思ったけど、やらせ方が分かればどおってことないな。
0628デフォルトの名無しさん
2010/05/19(水) 03:00:20ttp://ideone.com/2sB1Y
0629デフォルトの名無しさん
2010/05/19(水) 10:43:11あっそ
へー
0630デフォルトの名無しさん
2010/05/19(水) 11:05:18これをできるようにするにはどうすればいいでしょうか。
めんどくさがらず新しくFormを作るしかないのかな・・
0631デフォルトの名無しさん
2010/05/19(水) 11:12:140632デフォルトの名無しさん
2010/05/19(水) 11:25:05ありがとうございます。
ただ自分も含めてこれでコピーできることを知ってる人は少ないと思うので,
マウスで文字列選択→右クリックメニューでコピー
という手順を踏めるようにしたいのですが,
この場合はやはりForm使うしかないでしょうか。
0633デフォルトの名無しさん
2010/05/19(水) 11:27:260634デフォルトの名無しさん
2010/05/19(水) 11:28:46独自Form使うほうがはるかに簡単な。
0635デフォルトの名無しさん
2010/05/19(水) 11:39:58Formで対応します。
0636デフォルトの名無しさん
2010/05/19(水) 12:40:00こんな機能あったのか
知らなかった
0637デフォルトの名無しさん
2010/05/19(水) 14:15:09お気の毒に・・・
0638デフォルトの名無しさん
2010/05/19(水) 14:58:42メッセージの最後に「Ctrl-C でこのメッセージをコピーできます」とか書くだけだろ
0639デフォルトの名無しさん
2010/05/19(水) 15:00:450640デフォルトの名無しさん
2010/05/19(水) 15:10:520641デフォルトの名無しさん
2010/05/19(水) 15:49:14「このダイアログの内容はCtrl+Cでクリップボードにコピーできます」
0642デフォルトの名無しさん
2010/05/19(水) 15:51:10ああいうのはやっぱ自前でフォーム出してんのかね。
しょうがないのでコピット!のお世話になる。
0643デフォルトの名無しさん
2010/05/19(水) 18:31:44メニューバーの上の青くなってるラインとかで右クリックしたときに出てくる
元のサイズに戻す
最小化
最大化
移動
閉じる
みたいなポップアップウィンドウを改変したいんだけど
ツールバーの何をやればいいの?
MenuStripじゃできないよね?
0644デフォルトの名無しさん
2010/05/19(水) 18:42:510645デフォルトの名無しさん
2010/05/19(水) 19:07:560646デフォルトの名無しさん
2010/05/19(水) 19:38:44そういうのは普通には変えられないかもね・・・
Formのプロパティとか調べたけどそれっぽいのがなかった
0647デフォルトの名無しさん
2010/05/19(水) 19:48:06GetSystemMenuとInsertMenuItem
0648デフォルトの名無しさん
2010/05/19(水) 19:53:27API使わないと駄目なのか
0649デフォルトの名無しさん
2010/05/19(水) 20:00:370650デフォルトの名無しさん
2010/05/19(水) 20:02:49そうだよw
所詮はラッパー
めんどくさいことをしなくていいようにオブラートに包んでるだけだよ
ただいろいろ表に出してない部分があってそういうのだけ直接
APIたたいたりするしかないってだけ
0651デフォルトの名無しさん
2010/05/19(水) 20:08:17[DLLimport]だっけ?
みたいなことしなきゃいけないんだな。
結局C++も必要かぁ
0652デフォルトの名無しさん
2010/05/19(水) 20:10:27まあAPI名とC#をセットにしてぐぐれば同じようなことやってる人がいるので
それほどでもないね
ただAPI関連で開発したことない人は関数名がわからなくて探すまでが
大変だったりするw
0653デフォルトの名無しさん
2010/05/19(水) 20:15:34http://codepad.org/goVtqqUF
0654デフォルトの名無しさん
2010/05/19(水) 22:51:480655デフォルトの名無しさん
2010/05/19(水) 23:51:560656デフォルトの名無しさん
2010/05/20(木) 00:11:53これの和文って何処かにありませんか?
0657デフォルトの名無しさん
2010/05/20(木) 00:22:330658デフォルトの名無しさん
2010/05/20(木) 00:49:41VisualStudio2008を入れてるなら
C:\Program Files\Microsoft Visual Studio 9.0\VC#\Specifications\1041\CSharp Language Specification.doc
にある
0659デフォルトの名無しさん
2010/05/20(木) 01:08:33ありがとうございました!
また質問しに来てあげますね
0660デフォルトの名無しさん
2010/05/20(木) 06:51:150661デフォルトの名無しさん
2010/05/20(木) 06:56:02β2入れてたときにチェックするんだった。
またPro入れるの面倒くさいな
0662デフォルトの名無しさん
2010/05/20(木) 15:01:11その他色々と取られたりするのですか?昔、私が使ったデバッガでは、
2002年のだったかな?
トゥストリングメソッドとか、色々とついて来て、
なんか、一つのintだけで4バイト位とってた気がしましたが。
実際にはどうなんでしょうか?
0663デフォルトの名無しさん
2010/05/20(木) 15:18:52byte = 8 / short = 16 / int = 32 / long = 64
0664デフォルトの名無しさん
2010/05/20(木) 15:24:03boxingした場合だけ4byte(32bit)以上の領域がキープされる。
0665デフォルトの名無しさん
2010/05/20(木) 15:33:390666デフォルトの名無しさん
2010/05/20(木) 15:36:050667デフォルトの名無しさん
2010/05/20(木) 16:03:44普通、intって言ったら16ビットですよね。
なのに、昔のデバッガで見たら、なんか、32ビット位で、そんなの必要ないよ
ってのまでついて来て、
俺は、一応、dos時代からのプログラマーなので、
あの頃の感覚からすると信じられない取り方をしてるなと思ったもので、つい聞いておきたくなっただけです。
まあ、今はメモリ空間だけで昔のハードディスクよりも広大な空間があったりする時代なので、
こう言う取り方になるんでしょうね。
量の節約より、便利さを優先した方が色々と結果として効率が良いと言う時代なんでしょう。
ところで32ビットの内、記憶領域以外の16ビットは何のために使っているのですか?
0668デフォルトの名無しさん
2010/05/20(木) 16:09:250669デフォルトの名無しさん
2010/05/20(木) 16:10:15現代の普通じゃない
0670デフォルトの名無しさん
2010/05/20(木) 16:10:5416bit CPUなら short = int = 16bit, long = 32bit だけど
32bit CPUなら short = 16bit, int = long = 32bitになる。
C#ではCPUに関係なく決まっている。
0671デフォルトの名無しさん
2010/05/20(木) 16:21:16わかりました。
0672デフォルトの名無しさん
2010/05/20(木) 16:23:420673デフォルトの名無しさん
2010/05/20(木) 16:43:04OSが32bitなら?
0674デフォルトの名無しさん
2010/05/20(木) 16:49:190675デフォルトの名無しさん
2010/05/20(木) 16:57:20大抵の事は32bitで間に合い、
64bitにすると無駄にメモリとバス帯域を圧迫するので、
64bit CPUでのintの64bit化は、あまり行われていない。
0676デフォルトの名無しさん
2010/05/20(木) 17:17:560677デフォルトの名無しさん
2010/05/20(木) 17:32:330678デフォルトの名無しさん
2010/05/20(木) 17:44:37その方がいいんじゃね?
0679デフォルトの名無しさん
2010/05/20(木) 17:48:19色深度で1色の表現が違うんだし
0680デフォルトの名無しさん
2010/05/20(木) 19:19:20真に受けるな
0681デフォルトの名無しさん
2010/05/20(木) 19:21:300682デフォルトの名無しさん
2010/05/20(木) 19:50:030683デフォルトの名無しさん
2010/05/20(木) 19:52:490684デフォルトの名無しさん
2010/05/20(木) 20:13:02まあCPUが違ったら数の範囲レベルで挙動が違うとか、正気の沙汰じゃないもんな
0685デフォルトの名無しさん
2010/05/20(木) 20:18:40C#は決まってる
0686デフォルトの名無しさん
2010/05/20(木) 20:56:52それ無視したらJavaみたいに遅くなる。
0687デフォルトの名無しさん
2010/05/20(木) 21:05:14よく今までそれで生きてこられたな
0688デフォルトの名無しさん
2010/05/20(木) 21:07:250689デフォルトの名無しさん
2010/05/20(木) 22:40:27いったんbyte[]に読みだしてMemoryStreamにする以外にスマートなやり方があれば教えてください
0690デフォルトの名無しさん
2010/05/20(木) 22:46:52ストリームをメンバに持たせたIStream継承の自作クラスを作成する。
IStreamが要求するメソッド/プロパティをそれぞれ定義してやる。
大抵はメンバのストリームのを加工するだけでいいはず。
オレはそうやって自作アーカイブの内容物のストリームを返すクラスを作成している。
0691デフォルトの名無しさん
2010/05/20(木) 22:58:29何を言ってんだお前は?
0692デフォルトの名無しさん
2010/05/20(木) 23:00:41レス番号687の書き込みにはレスアンカーが抜けています。
正しいアンカーを書き入れなさい。
0693デフォルトの名無しさん
2010/05/20(木) 23:16:00IStreamはCOMのインターフェイスだw
.NETではStream抽象クラスな
0694デフォルトの名無しさん
2010/05/21(金) 00:11:49Javaで下記のように書く事がありますが
C#ではこのような書き方はできますか?
また、この書き方ができないとしたら
どうやって似たような事を実現しますか?
HashSet<String, String> = new HashSet<String, String>();
0695デフォルトの名無しさん
2010/05/21(金) 00:14:390696デフォルトの名無しさん
2010/05/21(金) 00:16:31Java のジェネリクスと違ってちゃんと型安全。
0697デフォルトの名無しさん
2010/05/21(金) 00:19:36バージョン3.5以降なら.NETでもHashSet<T>は使える
.NETのジェネリックに慣れるとJavaのジェネリクスに戻ると発狂する
0698デフォルトの名無しさん
2010/05/21(金) 00:25:03読むだけで理解しないバカは死ね
0699デフォルトの名無しさん
2010/05/21(金) 00:39:400700デフォルトの名無しさん
2010/05/21(金) 00:45:45Java でもそれは HashTable だな。
0701デフォルトの名無しさん
2010/05/21(金) 00:47:440702デフォルトの名無しさん
2010/05/21(金) 00:50:230703デフォルトの名無しさん
2010/05/21(金) 00:55:310704デフォルトの名無しさん
2010/05/21(金) 01:01:10理屈ではわかってても直感に反する罠だらけ
0705デフォルトの名無しさん
2010/05/21(金) 01:15:00ミスです
>>696
ありがとう
0706デフォルトの名無しさん
2010/05/21(金) 02:22:21方法はいくつかあると思います。
例えば、ファイルにして保存するとか、レジストリに保存するとかですが、
エグゼファイルの中に保存するとかって言う方法は無いのでしょうか?
0707デフォルトの名無しさん
2010/05/21(金) 02:32:450708デフォルトの名無しさん
2010/05/21(金) 02:51:19パパとママの愛情が足りなかったのか?
0709デフォルトの名無しさん
2010/05/21(金) 03:45:520710デフォルトの名無しさん
2010/05/21(金) 05:06:10相互運用型XXXを埋め込むことができません。
代わりに適用可能なインターフェイスを使用してください。
とかエラー吐くんだけど何じゃこりゃ。
CS1752とかアメ公のMSDNにも載ってないんですけどぉぉぉぉ。
0711デフォルトの名無しさん
2010/05/21(金) 05:45:45DataGridView上でセルの値を変更した際「Enter」キーを押し、
カーソルが一つ下のレコードへ移動すると、DataRowのカラムの値を書き換えた事を示す
RowStateプロパティにDataRowState.Modifiedがセットされます。
しかし、DataGridView1にユーザーが新しい行を追加できないようにする為に
DataGridView1.AllowUserToAddRows = false;
として、かつデータベースレコードが「1件」の場合、「Enter」キーを押しても
フォーカスカーソルが下へ移動できない為、RowStateプロパティにDataRowState.Modifiedが
セットされません。
プログラム上で DataGridView1 から Form上の別のコントロールへフォーカスを移すと、
RowStateプロパティにDataRowState.Modifiedがセットされましたが、
フォーカスを強制的に動かす意外に、DataRowState.Modified がセットされる
方法は無いのでしょうか?
0712デフォルトの名無しさん
2010/05/21(金) 06:39:080713デフォルトの名無しさん
2010/05/21(金) 12:15:44form2で、そのタイミングでプロパティを取得して動作するようにするには、どんなイベントハンドラを準備すればよいですか?
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の変更になったときの処理
}
0714デフォルトの名無しさん
2010/05/21(金) 12:22:140715デフォルトの名無しさん
2010/05/21(金) 12:24:41'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ってどこにあるんでしょう?
0716デフォルトの名無しさん
2010/05/21(金) 12:27:02ApplicationSettingsならINotifyPropertyChangedで変更通知するから、
Settings.Default.PropertyChangedイベントに+=する
でe.PropertyNameで目的のプロパティかどうか判断
0717デフォルトの名無しさん
2010/05/21(金) 12:28:36Please see the ICodeCompiler documentation
VsaEngineなんて.NET 2.0からすでにObsoleteだったはずだが、使ってたの?
0718デフォルトの名無しさん
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
0719デフォルトの名無しさん
2010/05/21(金) 15:04:22COM使ってるなら参照などの設定をやり直してみたら
0720デフォルトの名無しさん
2010/05/21(金) 15:08:50一回まっさらにしても変わらんね
COM型の埋め込みには条件があるみたいでそれに引っかかってるっぽい
素直に旧式の相互運用アセンブリ使うことにするよ
0721デフォルトの名無しさん
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を保持 などは出来るだけしないようにしたいと思っています。
よろしくお願いいたします。
0722デフォルトの名無しさん
2010/05/21(金) 17:08:14KeyedCollectionを継承したコレクション作るとか
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)]; }
}
}
0723デフォルトの名無しさん
2010/05/21(金) 17:08:430724デフォルトの名無しさん
2010/05/21(金) 17:12:200725デフォルトの名無しさん
2010/05/21(金) 17:35:50string にしなくても Dictionary<ushort, string> で良いんじゃない?
var key = (ushort)(key1 << 8 | key2); _values.Add(key, name)
取り出すとき。
var key1 = (byte)(key >> 8); var key2 = (byte)key;
0726デフォルトの名無しさん
2010/05/21(金) 22:02:50struct 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;
0727デフォルトの名無しさん
2010/05/21(金) 23:24:34とか作ったな。
0728デフォルトの名無しさん
2010/05/22(土) 01:20:281μsレベルの精度ってあるん?
0729デフォルトの名無しさん
2010/05/22(土) 01:21:50細かいことだけど、整数型を意味もなくushortやbyteにして使うことはお勧めできないよ。
バイナリファイルみたいに固定バイト長でどうしても読み書きしないといけない場合は除いて。
そういうC言語的な発想は捨ててしまった方がいい。
0730デフォルトの名無しさん
2010/05/22(土) 01:25:25あるわけないじゃないか
あとFormsのほうのTimerはInt32な
0731デフォルトの名無しさん
2010/05/22(土) 01:28:09System.Form.Timerは50ms単位くらいの精度しかない。
これは.NETができる以前からのWindowsの仕様。
System.Timers系は十分に正確。
だが1μsレベルかどうかは話は別。一言で答えれば、無い。
そもそもそんな精度をリアルタイムOSでない通常のOSに求めることが間違い。
0732デフォルトの名無しさん
2010/05/22(土) 01:47:52非常に不便なのでどうにかしたいんだが、補足する方法はある?
0733デフォルトの名無しさん
2010/05/22(土) 01:50:440734デフォルトの名無しさん
2010/05/22(土) 01:55:54を使って、止めたいところで止めて、表示させたい文字を表示させる事が出来る。
0735デフォルトの名無しさん
2010/05/22(土) 02:09:58あれ何だろう
0736デフォルトの名無しさん
2010/05/22(土) 02:16:29DebuggerNonUserCodeAttribute
DebuggerHiddenAttribute
DebuggerStepThroughAttribute
Paintイベントはフレームワークがイベントを投げる前にtry-catchしてるはず。
0737デフォルトの名無しさん
2010/05/22(土) 02:30:02ある程度レベルの高い国立大学はどこの情報学科もCやC++必須なんだよなぁ。
0738デフォルトの名無しさん
2010/05/22(土) 02:33:07というか、OS開発でもやるっていうんじゃあるまいし、
いまどきCやC++みたいな開発効率の悪い言語を教えててどうするんだろうか。
もっと良い言語がいくらでもあるんだから選んで使えばいいのにね。
0739デフォルトの名無しさん
2010/05/22(土) 02:36:190740デフォルトの名無しさん
2010/05/22(土) 02:41:32Javaが出来ればC#に乗り換えるのもそんなに苦労しないでしょ
0741デフォルトの名無しさん
2010/05/22(土) 02:41:35そんな奴いらねぇよ
0742デフォルトの名無しさん
2010/05/22(土) 02:43:51職業グラマになるんだったら学部レベルのCやC++くらい
できないとバカにされるからな。
プログラムを組むときは「型」があるから注意してくださいー
int と doubleは違いますよー
同じ処理が何度も出てくるときは関数として処理するといいですよー
演算子は優先順位があるから気をつけましょう
みたいなCだろうがJavaだろうがC#だろうがやらなきゃいけないことしか勉強しないし。
0743デフォルトの名無しさん
2010/05/22(土) 02:45:41C++はともかくCである必要性はイマイチよくわからん
0744デフォルトの名無しさん
2010/05/22(土) 02:48:27C/C++よりも、言語仕様、ライブラリ仕様などの些末なことに気を取られて、
肝心のプログラミングに割ける脳内メモリが削られるということも無いのは良い点。
なのに、なぜかC/C++の人の方がプログラミングに絡んだ難しい数学の話とかしてることが多い。
このレベルの違いは歴史だと思うよ。例えば、高度な3D処理などの数学が絡んだ
ライブラリは、C#には用意されてないが歴史あるC/C++には充実している。
だから優秀な人はC#の素晴らしさを理解しつつも、C#よりC/C++を選んでしまうということがままある。
0745デフォルトの名無しさん
2010/05/22(土) 02:50:090746デフォルトの名無しさん
2010/05/22(土) 02:50:35宿題スレの質問者にどこの学校か聞いてみたら
0747デフォルトの名無しさん
2010/05/22(土) 03:05:18打ちやすさを最優先で作られてるとはいえないqwert配列が大多数
みたいなものだな
歴史あるものが優位になるのは仕方ない
C/C++が優位
0748デフォルトの名無しさん
2010/05/22(土) 03:12:31プログラミング言語と手で触れるデバイスを一緒にするなよ。
例えばメガネだって基本的な機能とデザインは何十年も替わってないだろ。
0749デフォルトの名無しさん
2010/05/22(土) 03:55:380750デフォルトの名無しさん
2010/05/22(土) 03:59:080751デフォルトの名無しさん
2010/05/22(土) 06:55:18Document.Links[0].GetAttribute("href") だと相対パス表記のリンクは相対パスの取得になりますが
絶対パスを取る方法はないでしょうか?
0752デフォルトの名無しさん
2010/05/22(土) 07:00:38new Uri(webBrowser.Url, relativeUri).AbsoluteUri;
0753デフォルトの名無しさん
2010/05/22(土) 07:06:500754デフォルトの名無しさん
2010/05/22(土) 08:49:44ありがとうございます、それで行けました
base href があるときは全部絶対パスになるみたいなので大丈夫そうです
0755デフォルトの名無しさん
2010/05/22(土) 12:06:52他言語の文字列に置き換える楽な方法はないでしょうかorz
やっぱりIDE利用は諦めて、ユーザーに見せる文字列をコードで逐一リソース文字列から引っ張り出すしかない?
0756デフォルトの名無しさん
2010/05/22(土) 12:07:490757デフォルトの名無しさん
2010/05/22(土) 12:18:48Formsのフォームで使用する文字列リテラルは、デザイナー上で逐一文字列リソースに切り替えられたはず。
0758デフォルトの名無しさん
2010/05/22(土) 12:46:49�dクスできると分かったので探したら見つかった
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/314winmultilang/winmultilang.html
既存のフォームについて途中からLocalizable=Trueに切り替えて無問題か確認中なう
0759デフォルトの名無しさん
2010/05/22(土) 12:48:44質問前に調べろよ。
俺を誰だと思ってるんだw。
0760デフォルトの名無しさん
2010/05/22(土) 12:52:44シャッチョサンワタシホシイモノアルヨ
0761デフォルトの名無しさん
2010/05/22(土) 16:36:19のように、
List<string> lt
に一括して代入する方法を教えてください。
0762デフォルトの名無しさん
2010/05/22(土) 16:39:450763デフォルトの名無しさん
2010/05/22(土) 17:00:06ありがとうございました。
ところで、この
List<string> lt = new List<string>{"みかん","りんご","うさぎ"};
の内容を、ファイルに書き出して保存したいのですが、それにはどうしたらよいでしょう?
0764デフォルトの名無しさん
2010/05/22(土) 17:02:50ちったあ検索サイト使えよ
http://www.google.com/search?num=50&hl=ja&lr=lang_ja&safe=off&tbs=lr%3Alang_1ja&q=C%23%E3%80%80%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%80%80%E5%87%BA%E5%8A%9B&aq=f&aqi=g3&aql=&oq=&gs_rfai=
0765デフォルトの名無しさん
2010/05/22(土) 17:05:02一括して、
File.Save(filename, lt,);
とかみたいにできないか、という質問です。
0766デフォルトの名無しさん
2010/05/22(土) 17:07:50コレクション初期化子はC#3.0のみが必要で、.NET 3.5は関係ない。
その証拠に、Visual Studio 2008以降で.NET 2.0ターゲットでビルドできる。
0767デフォルトの名無しさん
2010/05/22(土) 17:08:46わざとかもしれんが
0768デフォルトの名無しさん
2010/05/22(土) 17:09:07XMLSerializerを使え。
0769デフォルトの名無しさん
2010/05/22(土) 17:16:39>>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>
0770デフォルトの名無しさん
2010/05/22(土) 17:20:57最近はDataContractSerializer押しの声が大きいな
0771デフォルトの名無しさん
2010/05/22(土) 18:28:45thanks!!
0772デフォルトの名無しさん
2010/05/22(土) 18:39:38ユーザコントロールを作り、ボタンを3つ作ります
□ □ □ のような並びです
ユーザコントロールをフォーム上に貼り付ける
ユーザコントロールのサイズを変更する
その時にボタンの大きさ、ボタンの位置をユーザコントロールのサイズに合わせて
□□ □□ □□
□□ □□ □□
のようにボタンの位置と大きさが比例させたいです。
現在考えている処理としては、ユーザコントロールのResizeイベントで
計算すると言う方法を考えておりますが、
他にも何か良い方法がありましたらご教授お願い致します。
0773デフォルトの名無しさん
2010/05/22(土) 18:46:12コントロールのサイズは計算するほかにうまい手は思いつかないが
位置についてはAnchorを外すという裏技(?)がある
特に縦位置も横位置もフォームサイズに比例させたいなら、Anchorプロパティーを空にする
0774デフォルトの名無しさん
2010/05/22(土) 18:47:27えーっと、比例計算(小学校の算数だと思うけど)が分からないってこと?
まあ、MSによると非推奨の方法らしいけどテーブルレイアウトパネルを使えば
ユーザーコードなしでもできると思うけど....
0775デフォルトの名無しさん
2010/05/22(土) 18:49:58windows上で優れたUIがでないのはこの辺にあると思う
0776773
2010/05/22(土) 18:53:20そうかその手があったorz
これで大きさも位置も解決できる
非推奨なのはテーブルレイアウトパネルを入れ子にして使うこと、
ジャマイカ
0777デフォルトの名無しさん
2010/05/22(土) 20:05:49プログラムやめていいんだからね
0778772
2010/05/22(土) 21:34:03ありがとうございます
tableLayoutPanelを使って見た所
自分の設定方法が悪いのかもしれませんが
以下の状態からユーザコントロールを小さくした場合
□□ □□ □□
□□ □□ □□
以下の様に右端のボタンサイズが変化する現象が発生致しました
□ □ □□
□ □ □□
Anchorは全方向チェックしております
全方向空だと小さくした際にコントロールが
ユーザコントロールの外側に隠れてしまう為です
何か他に設定するべき項目がありましたらご指摘お願い致します
0779772
2010/05/22(土) 21:35:14訂正
×以下の様に右端のボタンサイズが変化する現象が発生致しました
○以下の様に右端のボタンサイズが変化しない現象が発生致しました
0780デフォルトの名無しさん
2010/05/22(土) 22:17:07っていうか、ボタンはコンテナ(つまりテーブルレイアウトパネルの各セル)に
Dockさせるんだよ。アンカーを使うんじゃなくて。
0781772
2010/05/22(土) 22:25:58説明不足でした 申し訳ありません
各ボタンはtableLayoutPanelにDockをさせております(設定項目はFill)
tableLayoutPanelのAnchorは「Top, Bottom, Left, Right」に設定しております
0782デフォルトの名無しさん
2010/05/22(土) 22:54:10仕様かどうか知らないが、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.が必要のでちうい
0783782
2010/05/22(土) 23:02:34あと、語弊がありそうなので補足しとくと、>782でtableLayoutPanelの位置とサイズと言っているのは
デザイナ上で与える位置とサイズの意
>782の1.〜4.を済ませた後、プログラムの実行状態でフォームサイズを変更する分には問題無くボタンサイズが比例する
0784デフォルトの名無しさん
2010/05/22(土) 23:06:250785デフォルトの名無しさん
2010/05/22(土) 23:06:53いろいろ不都合があったりするけど、MS様のコントロールってそういうの多いのかね。
っていうか、TableLayoutPanelってそんな仕様だったかな....
0787デフォルトの名無しさん
2010/05/23(日) 01:14:27>System.Form.Timerは50ms単位くらいの精度しかない。
>これは.NETができる以前からのWindowsの仕様。
>
>System.Timers系は十分に正確。
っていうほどSystem.Form.Timerと変わるとは思えないんだけど。
0788デフォルトの名無しさん
2010/05/23(日) 02:37:29XPまではカーネルの構造上、どんなラッパーを用意したところで精度は期待できない
0789デフォルトの名無しさん
2010/05/23(日) 03:24:22string souce = WebBrowser.Docment.All.ToString();
これで取り出せませんでした。どうすればいいんですか
0790デフォルトの名無しさん
2010/05/23(日) 03:25:58デバッガで動きを止めて、アクセスできるプロパティを眺めて考えるんだ。
0791デフォルトの名無しさん
2010/05/23(日) 03:32:12<pre name="code" class="csharp">        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            textBox1.Text = webBrowser1.DocumentText;
        }
</pre>
これでいけるね
でもこのスレを読み込ませて上のロジックを走らせると文字化けしたので
文字コード関連も調整する必要あるかな
webBrowser1.DocumentStreamってのもあるからこれを使えばStreamで
読み出しできると思うのでエンコード指定すればいいか
0792デフォルトの名無しさん
2010/05/23(日) 03:32:52        {
            textBox1.Text = webBrowser1.DocumentText;
        }
ごめん
ゴミが付いたw
0793デフォルトの名無しさん
2010/05/23(日) 03:38:33ありがとうございます!
0794デフォルトの名無しさん
2010/05/23(日) 03:47:06http://ideone.com/xicFb
0795デフォルトの名無しさん
2010/05/23(日) 21:37:37これってクライアント毎に固有のキーを発行して貰ってそれを使ってアクセスする形みたいだけど
ひょっとしてこのキーをそのまま内部に持ったらまずいのかな?
自分は大々的に配布する予定はないから関係ないけど
誰にも偽装されたくなかったらそれなりの対策を考えるのかな?
0796デフォルトの名無しさん
2010/05/23(日) 22:59:13それ、俺も悩んだけど隠すのは無理が結論だと思う。
リフレクタで見れば秘密キーすぐ分かるもんね……。
0797デフォルトの名無しさん
2010/05/23(日) 23:35:00その部分だけC++で書いて事無きを得たけどね
0798デフォルトの名無しさん
2010/05/23(日) 23:41:34ちょっと気合いの入った人はディスアセンブルぐらいすぐやっちゃうと思うの
0799デフォルトの名無しさん
2010/05/23(日) 23:48:40規約で見えないように努力すれば配布してよし!ってことになってるから
一応対策はしてますよー的な意味合い
漏れたら漏れたで再取得すればいいだけだしキニシナイ
0800デフォルトの名無しさん
2010/05/24(月) 00:03:05作ったことあるけど完全なのは無理だったよね
.netって生産性高いしC#って言語も素晴らしいと思うけど
リバースエンジニアリング対策がむずすぎる
0801デフォルトの名無しさん
2010/05/24(月) 00:07:19それで足りないような機密情報は絶対にクライアントに渡すな。
0802デフォルトの名無しさん
2010/05/24(月) 00:08:29どうしても知られたくないなら外部に持つしかない。
0803799
2010/05/24(月) 00:11:270804デフォルトの名無しさん
2010/05/24(月) 00:18:22暗号を使うコードと暗号をセットするコードを分離しておいて、
DIで結びつければいい。
0805デフォルトの名無しさん
2010/05/24(月) 00:28:00イミフ
0806デフォルトの名無しさん
2010/05/24(月) 00:32:02結局リバースエンジニアリング対策はほぼ無理なんだよな。
MSも難読化ツールは出しているが、あれでも鍵を隠すことは難しいし。
0807デフォルトの名無しさん
2010/05/24(月) 00:34:150808デフォルトの名無しさん
2010/05/24(月) 00:48:51Dependency Injection。依存性注入のこと。
暗号を使っている場所がわかっても
使用する暗号コードを定義してる部分や
取り出す部分がわからなければ問題ない。
これら2つの部分を静的、動的に結合するのがDIの概念。
0809デフォルトの名無しさん
2010/05/24(月) 00:50:50面白そうだな
簡単ならサンプル書いてくれ URLでもいい
0810デフォルトの名無しさん
2010/05/24(月) 00:56:500811デフォルトの名無しさん
2010/05/24(月) 00:57:470812デフォルトの名無しさん
2010/05/24(月) 01:06:36しかし、その「2つを結合する部分」のコードだって見えるのだから、
所詮複雑度を一段増やしただけの意味しか持たないのでは?
0813デフォルトの名無しさん
2010/05/24(月) 01:20:21確かに、このアイデアは本質的な改善策ではない。
だからこそ一般的に語られるソリューションではないわけで。
たぶん実務的にはそれぞれのコードをインターフェイス化しておいて、
それを繋ぐ形で実装することになるんじゃなかろうか。
(もちろんDIツール使ってもいいけど)
で、実用レベルとしては呼び出し部をIronPythonで書いてあげるだけで十分だったりする。
あれをリバースエンジニアリングするのはかなり無理(試してみた)。
0814デフォルトの名無しさん
2010/05/24(月) 01:20:59ようは使用時に結合するわけだから結局は結合時のコードを横から保存して横取りするコードを書けばいいだけ
1900年代のパターン乙
0815デフォルトの名無しさん
2010/05/24(月) 01:22:425年前のJavaやってた時に流行ってたなw
今じゃ考えが廃れて他の物に変わってしまったが
0816デフォルトの名無しさん
2010/05/24(月) 01:26:12で、それを.NET Frameworkに対して可能なんかね、それ。
0817デフォルトの名無しさん
2010/05/24(月) 01:29:21>暗号を使うコードと暗号をセットするコードを分離
ここが意味不明なんだよ
何を守りたいのかさえわからない
DIの概念ぐらい今時小学生でもわかるわ
0818デフォルトの名無しさん
2010/05/24(月) 01:35:20逆アセンブルすることは技術的には可能。
あとはコストの問題よね。
というか、隠蔽に依存したセキュリティは無意味って、今時専門学校出の新人でも知っとるわ。
0819デフォルトの名無しさん
2010/05/24(月) 01:50:46string a = "b";
と宣言付きで書く場合はメモリがやばくならないですか?
ガベージコレクションがよくわかってないので不安です
0820デフォルトの名無しさん
2010/05/24(月) 01:56:320821デフォルトの名無しさん
2010/05/24(月) 01:56:34そのくらいなら心配ないでしょ
0822デフォルトの名無しさん
2010/05/24(月) 01:56:45リテラルを格納してるだけなら最適化が効くかも。
一応、const 付けとけ。
最適か効いてなくて毎度 new されてる場合、
まあ、GC が働いてる分にはメモリ不足になることはない。
無駄な GC 働く分パフォーマンスは落ちるんで、ループの外に出せるならその方が無難だけど。
0823デフォルトの名無しさん
2010/05/24(月) 01:56:55>>819
メソッド内のローカル変数はスタックに積まれるので基本的には問題ない。
ただし文字列変数は各言語、.NETやJavaの場合は仮想マシンのレベルで
特別な扱いをされることが多いのでこの限りではない。
延々と文字列を結合していくならば結合結果の文字列データより多くのメモリを消費することはありうる。
それ以前にstringを生で使うと遅いのでStringBuilderを使うことになるだろうが。
0824デフォルトの名無しさん
2010/05/24(月) 02:02:11>火病ってるやつがいるな。もっと建設的な議論すればいいのに。
だねえ〜
まあ便所の落書きなので荒れるのも仕方ないけど
0825デフォルトの名無しさん
2010/05/24(月) 02:14:03解放される前に積み重なっていくような数万回newした場合はメモリの危険があるかもしれないという考えは
捨ててもいいということですか?
これを潔癖にクリアするにはusingで宣言を囲んでその外でループするかループ外に宣言するしかないんでしょうか?
0826デフォルトの名無しさん
2010/05/24(月) 02:17:08PC上でやる上ではメモリの空きについては気にしなくていいよ
むしろ>>823>>824あたりが言ってるように速度面かなあ
差し支えない範囲で気になる部分のコードをさらしてみなよ
>>1のコード晒しサイト使って
0827デフォルトの名無しさん
2010/05/24(月) 02:27:56C/C++で有効な高速化手法と.NET(C#)で有効な高速化手法はかなり違うので注意。
例えば配列の列挙はfor文よりforeachの方が圧倒的に早いとか、
カウンタ(int i)の判定条件はローカル変数で受けるよりも
毎回arr.Lengthと直接比較した方が却って動作が早くなる、とか。
総じて素直に書いた方が却って早くなる。
基本的には素直に書いてみて、遅いようなら高速化手法を考える程度でいいはず。
0828デフォルトの名無しさん
2010/05/24(月) 02:36:22これは言語に係わらない基本だろう
0829デフォルトの名無しさん
2010/05/24(月) 02:39:41constが無理な場合があるとして、そのアプリでメモリ不足になることはなくても
他のアプリのメモリ不足を考慮してるとはおもえないんですが、
GCには完全に頼れないから外で宣言するとして
その分岐点は何ですか?GCに頼るのは動けばいいやプログラミングなんでしょうか?
0830デフォルトの名無しさん
2010/05/24(月) 02:46:190831デフォルトの名無しさん
2010/05/24(月) 03:23:16数ギガ単位のファイルを扱う用途だと問題になる
0832デフォルトの名無しさん
2010/05/24(月) 03:41:48数ギガ単位のファイルをメモリに読み込むのか?それってGCあってもなくてもメモリ不足になるだろw
0833デフォルトの名無しさん
2010/05/24(月) 04:19:22デストラクタや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;
}
0834デフォルトの名無しさん
2010/05/24(月) 04:24:10char[]は外で一回だけ作るようにした方が検証として正しい気がする
0835デフォルトの名無しさん
2010/05/24(月) 06:09:42毎回インデックス位置を計算されたりインデクサにアクセスされるんじゃないかと思って
そのまま書かずに、一旦
var item = hoge[i];
みたいに保存してから使ってるんだけどやらなくてもいいの?
最適化ONにしたら勝手にキャッシュしてくれる?
0836デフォルトの名無しさん
2010/05/24(月) 06:19:24最適化はプロファイル取ってからボトルネックになってる箇所を重点的にやれと
0837デフォルトの名無しさん
2010/05/24(月) 08:57:14ldstr "b" って命令になってるな。
new されてない。JIT 結果もたぶん、定数領域のポインター代入だけになると思う。
GC 働かない。
0838デフォルトの名無しさん
2010/05/24(月) 09:02:16そりゃあそうだ。stringはimmutableなオブジェクトだから
定数リテラルをそのまま指せるし。
あくまで文字列演算を大規模にループでおこなうという意味で書いてたんだが、
string a = "b";
を繰り返すことだけを質問してたの?
0839デフォルトの名無しさん
2010/05/24(月) 09:08:15一番大元の質問が、ループ中の string a = "b"; はどういう結果招きますか
1. GC かかって大変になる?
2. GC かかった場合のパフォーマンスってどうなの?他のアプリに迷惑かけない?
だったかと。
0840デフォルトの名無しさん
2010/05/24(月) 09:12:07完成して実用に耐えなかったら言えと
空が落ちてくる心配をした昔の人みたいだよ
0841デフォルトの名無しさん
2010/05/24(月) 11:49:07なんだこれ
なんでXmlDocumentなんて使ってたんだ
0842デフォルトの名無しさん
2010/05/24(月) 12:25:31趣味マか?
0843デフォルトの名無しさん
2010/05/24(月) 12:36:280844デフォルトの名無しさん
2010/05/24(月) 12:47:050845デフォルトの名無しさん
2010/05/24(月) 13:19:540846デフォルトの名無しさん
2010/05/24(月) 13:44:100847デフォルトの名無しさん
2010/05/24(月) 14:10:470848デフォルトの名無しさん
2010/05/24(月) 14:11:380849デフォルトの名無しさん
2010/05/24(月) 14:32:260850デフォルトの名無しさん
2010/05/24(月) 14:33:10>>GCに頼るのは動けばいいやプログラミング
>>GCに頼るのは動けばいいやプログラミング
0851デフォルトの名無しさん
2010/05/24(月) 14:37:20C#では戦争も終わらないし食糧不足も解決できない
そもそもプログラムで解決できること自体が箱の中の事象でしかない
趣味もプロも糞もない
どこからが企業の戦略なのかを読み違えるのは良くない
0852デフォルトの名無しさん
2010/05/24(月) 14:46:07口だけが
0853デフォルトの名無しさん
2010/05/24(月) 14:48:35生み出しているものは失業率の増加と貧富の格差でしかない
人間が時間と交換に取り組むようなことじゃない
これを踏まえた上で初心者スレであえて聞いているのでは?
0854デフォルトの名無しさん
2010/05/24(月) 14:50:210855デフォルトの名無しさん
2010/05/24(月) 14:59:42同じ名前のプロパティで書き込みを可能にすることって出来ないのかな
0856デフォルトの名無しさん
2010/05/24(月) 15:05:46一体何の話してんの?
0857デフォルトの名無しさん
2010/05/24(月) 15:11:450858デフォルトの名無しさん
2010/05/24(月) 15:28:33override new
すればいけるが、そんなインターフェイスはお勧めできないな。
0859デフォルトの名無しさん
2010/05/24(月) 15:58:20やらないほうがいいから出来ないってことか。ありがとん
>>856
分からないなら黙ってればいいのに
0860デフォルトの名無しさん
2010/05/24(月) 16:03:21彼によれば2chの初心者質問スレを荒らすのが、人間が時間と交換に取り組むようなことらしい。
0861デフォルトの名無しさん
2010/05/24(月) 16:06:32>>>>856
>>分からないなら黙ってればいいのに
0862デフォルトの名無しさん
2010/05/24(月) 16:10:550863デフォルトの名無しさん
2010/05/24(月) 16:26:23アンカー先もろくにみないで書いたんだろうが
そういう間抜けなとこを無視はできないな
0864デフォルトの名無しさん
2010/05/24(月) 16:28:350865デフォルトの名無しさん
2010/05/24(月) 17:00:20webBrowserについて質問です。
Form1にwebBrowserを設置して使うと、普通はa hrefタグの場合はクリックでそのウィンドウ内でリンクを開きますが、new windowなどのタグにかかわらず、リンクをクリックしたら、別のForm2を開くようにしたいです。
どのようにしたらよいか皆目見当がつかないので、どなたかご教示いただけないでしょうか。
0866デフォルトの名無しさん
2010/05/24(月) 17:03:010867デフォルトの名無しさん
2010/05/24(月) 17:10:02http://cs2ch.blog123.fc2.com/blog-entry-68.html
サンプルコードの113行〜139行までがそれぽく使えるかな
System.Diagnostics.Process.Start(link);
のところをForm2なりを起動するコードに書き換えて置けばいいかも
0868デフォルトの名無しさん
2010/05/24(月) 17:34:58HtmlElement clickedElement = this.Document.GetElementFromPoint(e.MousePosition);
'Form1.Form1' に 'Document' の定義が含まれておらず、型 'Form1.Form1' の最初の引数を受け付ける拡張メソッドが見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
と出るんですが、どうしたらいいですか?
0869デフォルトの名無しさん
2010/05/24(月) 17:37:26というかその辺も説明しないと駄目なレベルなの?
0870デフォルトの名無しさん
2010/05/24(月) 17:43:360871デフォルトの名無しさん
2010/05/24(月) 17:49:26とか言ってきそうだな
0872デフォルトの名無しさん
2010/05/24(月) 17:57:190873デフォルトの名無しさん
2010/05/24(月) 18:04:410874デフォルトの名無しさん
2010/05/24(月) 18:09:110875デフォルトの名無しさん
2010/05/24(月) 18:17:270876デフォルトの名無しさん
2010/05/24(月) 18:30:02テキストボックスに金額入れて更新ボタン押しても変更はありませんとでるんですが
DomElement.InnerText と SetAttribute のどっちで入力しても変更できません
どうなってるんですか?
0877デフォルトの名無しさん
2010/05/24(月) 18:30:54コンストラクタからだと、まだ、他のコントロールの作成が終わって居なくて、
処理できないって時は、どうしたら一番自然ですかね?
0878デフォルトの名無しさん
2010/05/24(月) 18:32:300879デフォルトの名無しさん
2010/05/24(月) 18:38:25this.ActiveControl.TabIndex
このプロパティにアクセスできないんですよね。
起動した直後に、アクティブコントロールは設定されてて、実際、文字入力できるように
カーソルが出てくるのにな。
なんでだろ?
0880デフォルトの名無しさん
2010/05/24(月) 18:40:08いや何でもないです
0881デフォルトの名無しさん
2010/05/24(月) 18:41:120882デフォルトの名無しさん
2010/05/24(月) 18:42:58どうなってるといわれてもわからねえ
>>877
>>878のいうようにコンストラクタの中で呼び出してる
InitializeComponent();
の後ならデザイナーで貼り付けたコントロールの実体はできてる
呼び出し前だとできてない
でもこのタイミングだとうまくいかない場合は
Loadイベントかその後のShownイベントとかでやるといいかも
0883デフォルトの名無しさん
2010/05/24(月) 18:44:07あなたには言ってません
0884デフォルトの名無しさん
2010/05/24(月) 18:48:340885デフォルトの名無しさん
2010/05/24(月) 18:49:030886デフォルトの名無しさん
2010/05/24(月) 18:50:480887デフォルトの名無しさん
2010/05/24(月) 19:00:21ありがとうございました。
0888デフォルトの名無しさん
2010/05/24(月) 19:00:24できました。ありがとうございます。
で、次のようにして、ブラウザでリンクをクリックしてみましたが、
if (link != null && link != "")
{
MessageBox.Show("test");
System.Diagnostics.Process.Start(link);
}
普通にリンクをおなじウィンドウ内で開いてしまいます。
MessageBoxも表示されないということは、この
void WebBrowserExDocument_Click(object sender, HtmlElementEventArgs e)
のイベントハンドラをどこかで作る必要があるのかなと思うのです。
[デザイン]のwebBrowserでイベントハンドラを見ても、DocumentConpletedとかはあるのですが、それらしいものがありません。
どのようにしたらよいですか?
0889デフォルトの名無しさん
2010/05/24(月) 19:51:44ご所望の動作ぽいのはできた
http://ideone.com/uFKR0
でもなぜかイベントが3回呼ばれるw
0890デフォルトの名無しさん
2010/05/24(月) 20:27:56ツールを作りたいのですが、クリップボードの内容の変更を検知するにはどうするのがいいのでしょうか?
0891デフォルトの名無しさん
2010/05/24(月) 20:32:09クリップボード C#
でググれ
0892デフォルトの名無しさん
2010/05/24(月) 20:32:35イベントがあったかはわからんw
0893デフォルトの名無しさん
2010/05/24(月) 20:40:470894889
2010/05/24(月) 21:06:50DocumentCompletedだとメインのhtmlで1回、jsがあればその個数分イベントが起きるんだった
Navigatedだと多分1回になると思う
0895デフォルトの名無しさん
2010/05/24(月) 21:21:00確かイベントがあったはず
Clipboard C#でくぐれ
0896デフォルトの名無しさん
2010/05/24(月) 21:28:47でたらめもいいとこ。
0897デフォルトの名無しさん
2010/05/24(月) 21:29:57たいへんありがとうございます。
早速試してみています。
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だとだめなんです。
なぜでしょう?
0898デフォルトの名無しさん
2010/05/24(月) 21:30:29コードで示せ
0899デフォルトの名無しさん
2010/05/24(月) 21:33:35必ずしも間違いじゃないよ
forだと回し方によっては最適化が効かないけどforeachは確実に最適化される
0900889
2010/05/24(月) 21:34:112chの場合js使ってるといっても基本的にはhtmlよりのことしかしてないはず
0901デフォルトの名無しさん
2010/05/24(月) 21:35:41int ibuff = 0;
foreach ( int i in iForeach )
{
ibuff += i;
}
ibuff = 0;
for( int i ; i < iForeach.Length; i++)
{
ibuff += i;
}
どっちが速いん
0902デフォルトの名無しさん
2010/05/24(月) 21:37:460903デフォルトの名無しさん
2010/05/24(月) 21:38:190904889
2010/05/24(月) 21:38:41それなんかおかしくね?
0905デフォルトの名無しさん
2010/05/24(月) 21:45:59{
ibuff += iForeach[i];
}
こうか。これだとForの方が遅い気はする
0906デフォルトの名無しさん
2010/05/24(月) 22:01:170907デフォルトの名無しさん
2010/05/24(月) 22:02:31forはfor(int i = 0; i < iForeach.Length; i++)の形が崩れると途端に遅くなる
基本的に自由度が低い方が最適化しやすいんだよ
0908デフォルトの名無しさん
2010/05/24(月) 22:09:24昔、ClipboardWatcherとか作ったなぁ
SetClipboardViewerとNativeWindow使うやつ
0909デフォルトの名無しさん
2010/05/24(月) 22:19:41一目瞭然だから突っ込まれてんだろ
馬鹿か
0910デフォルトの名無しさん
2010/05/24(月) 22:37:58const 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)");
0911デフォルトの名無しさん
2010/05/24(月) 22:39:24SIZE=100のとき
00:00:00.0000025(for)
00:00:00.0000006(foreach)
SIZE=10000のとき
00:00:00.0000243(for)
00:00:00.0000173(foreach)
確かにforeachのほうが少し速いようだ
0912デフォルトの名無しさん
2010/05/24(月) 22:44:34forは絶対にfor(int i = 0; i < array.Length; i++)の形を崩してはいけない
0913デフォルトの名無しさん
2010/05/24(月) 22:49:110914デフォルトの名無しさん
2010/05/24(月) 22:50:380915デフォルトの名無しさん
2010/05/24(月) 22:54:470916デフォルトの名無しさん
2010/05/24(月) 22:55:440917デフォルトの名無しさん
2010/05/24(月) 22:57:02SIZE=100のとき
00:00:00.0000023(for)
00:00:00.0000006(foreach)
0918デフォルトの名無しさん
2010/05/24(月) 22:58:020919デフォルトの名無しさん
2010/05/24(月) 22:59:39モバイル版って、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という名前しか入らないのです。
0920デフォルトの名無しさん
2010/05/24(月) 23:00:350921デフォルトの名無しさん
2010/05/24(月) 23:02:41forがforeachを超えられないのは事実だけど
きちんと書けば同じコードになるのも事実なので絶対にそんなに差は出ない
0922デフォルトの名無しさん
2010/05/24(月) 23:09:56俺の環境だと何か 10000 以上の配列に対しては
for の方が何故か早かった。
それ以下はforeach
まあ、(1000, 10000)の範囲内で正確に測ってみないと具体的な長さはわからんが。
0923デフォルトの名無しさん
2010/05/24(月) 23:14:29その辺になってくるとスレチだからJavascriptやhtml関連を勉強した方がいいよ
その辺を理解してないと無理
0924デフォルトの名無しさん
2010/05/24(月) 23:46:090925デフォルトの名無しさん
2010/05/24(月) 23:49:12そして二度と来るな
0926デフォルトの名無しさん
2010/05/25(火) 07:18:28Javaとよく似てるので順調に参考書を半分ほど読み進めましたが、
下のサンプルの実行結果が納得できません。
0927926
2010/05/25(火) 07:21:10using 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();
}
}
}
0928926
2010/05/25(火) 07:22:23○
○○
○○○
○○○○
○○○○○
○○○○○○
○○○○○○○
○○○○○○○○
○○○○○○○○
○○○○○○○
○○○○○○
○○○○○
○○○○
○○○
○○
○
と表示されます。
丸が増えていって8つに達するのは理解できますが、
その後なぜ減っていくのでしょうか?
0929デフォルトの名無しさん
2010/05/25(火) 07:25:36valueを0で初期化
valueに1を足し、1にする
○をvalue個(1個)出力する
Stack(1);を実行する
○をvalue個(1個)出力する
だから
これを続けていけばそうなる
0930デフォルトの名無しさん
2010/05/25(火) 07:51:49ありがとうございます。
その動作の五行目は「○を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)の続き、というように・・・。
難しいですね。
0931デフォルトの名無しさん
2010/05/25(火) 07:58:13そりゃStack(int value)が受け取ってるのは値渡しされたコピーだからでしょ
0932デフォルトの名無しさん
2010/05/25(火) 07:59:34難しくないだろw
0933デフォルトの名無しさん
2010/05/25(火) 08:02:36ブレークポイント設定して動かしてみ
よく分かるから
0934デフォルトの名無しさん
2010/05/25(火) 08:04:500935デフォルトの名無しさん
2010/05/25(火) 08:07:47状況によってというか処理によってはそうなりうることはわかってる。
でも
>例えば配列の列挙はfor文よりforeachの方が圧倒的に早いとか、
「配列の列挙」にもいろいろあるかもしれんが、普通に読んだら普通の列挙処理だろ。
まあ試してみればわかるけど、誤差レベル。
圧倒的なんてことにはならない。
>>917
100回て、今どきのマシンなら数100ナノ秒以内で終わるぜ。
ちなみにStopwatchで時刻を取得するのにかかる時間は目安としてマイクロ秒オーダだw
あと極端に差があるなら測る順番を変えてみ、逆転したりするから。
0936926
2010/05/25(火) 08:10:55それは理解してましたが、
Stack(1)〜Stack(7)が終わらずに残っていることを
見落としてました。
>>932
理解すれば簡単なことだったんだなと思いますけど、
自分で>>927のような風に書けるようになる気がしません…。
>>933
ブレークポイント設定して確認してみました。
これわかりやすいですね。
今後困ったときはまた使ってみます。
>>934
いえ、Javaでもintは値渡しです。
0937デフォルトの名無しさん
2010/05/25(火) 08:12:28これって再帰のサンプルでしょ?
0938デフォルトの名無しさん
2010/05/25(火) 08:12:35>Stack(8)より先に実行していたStack(7)が
>「if (value < Depth) Stack(value);」のところで止まったままになってて、
>Stack(8)が終わったとたんに続きが動き出すってことでしょうか?
典型的な、オブジェクト指向のいろんな記述を変な風に理解してしまったクチだろう。
オブジェクトや、あるいはメソッドの呼び出しを、なんというか完全に独立した実行単位というか、実行主体というか、
そんな風に思ってしまってる感じ。
ただ一連の処理の流れ、内部的には単なるサブルーチン呼び出しという感覚が分かっていない。
0939デフォルトの名無しさん
2010/05/25(火) 08:14:270940デフォルトの名無しさん
2010/05/25(火) 08:18:12クラスのメンバの部分のまとめのサンプルです。
突然再帰を使って例示されてます。
>>938
そうですね。
他のメソッドを呼び出してそっちが一通り動いた後で戻ってきただけですよね。
オブジェクト指向に初めて触れるわけでもないのに、こんなのがわかってなくて恥ずかしいです。
このサンプルでよく理解できたので、その意味ではよくできたサンプルかもしれませんね。
0941デフォルトの名無しさん
2010/05/25(火) 08:20:40いや、どっちかっていうとオブジェクト指向から入った人間が勘違いしやすい。
手続型から入った人間はそういう勘違いはないんだよね。
0942デフォルトの名無しさん
2010/05/25(火) 08:21:360943935
2010/05/25(火) 08:22:45for 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
0944デフォルトの名無しさん
2010/05/25(火) 08:22:570945926
2010/05/25(火) 08:25:48アドバイスありがとうございます。
悲しいことに、昔Cをやったときにアルゴリズムの勉強もしたことがあるんです。
身についてないってことですよね。
横に「Cによるはじめてのアルゴリズム入門」っていう本が転がってるので
読み直してみます。
0946デフォルトの名無しさん
2010/05/25(火) 08:26:370947デフォルトの名無しさん
2010/05/25(火) 08:29:54class 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();
}
}
続く
0948947
2010/05/25(火) 08:31:07○○
○○○
○○○○
○○○○○
○○○○○○
○○○○○○○
○○○○○○○○
○○○○○○○○
○○○○○○○○
○○○○○○○○
○○○○○○○○
○○○○○○○○
○○○○○○○○
○○○○○○○○
○○○○○○○○
こうなる
0949935
2010/05/25(火) 08:44:25Stopwatch 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ナノ秒。
0950デフォルトの名無しさん
2010/05/25(火) 08:52:25だった
まぁどっちにしろそこまで敏感になる問題じゃないな
0951デフォルトの名無しさん
2010/05/25(火) 09:11:42> for(int i = 0; i < value; ++i) Console.Write("○");
どこのサンプルか知らんけど、アホなことしてるな
.NETならstring(char, int)コンストラクタ使えと
0952デフォルトの名無しさん
2010/05/25(火) 09:52:40各桁の数字が相異なり、どれも0でないような3桁の正の整数nがある。
nの各数字を並べて出来る6つの数の最大公約数をgとする。
gとして考えられる最大の値を求めよ。
0953デフォルトの名無しさん
2010/05/25(火) 10:38:060954デフォルトの名無しさん
2010/05/25(火) 10:38:17(^○^)
(-○-)
0955デフォルトの名無しさん
2010/05/25(火) 10:59:29マウスの右クリック(コンテキストメニュー)と右ドラッグ(ダウン-移動-アップ)で、
異なる処理を割り当てるにはどうしたらよいですか?
0956デフォルトの名無しさん
2010/05/25(火) 11:14:34ダウン後移動があったらドラッグ扱いでいいんじゃないかな
0957デフォルトの名無しさん
2010/05/25(火) 11:35:371.マウスダウンでフラグセット・マウス位置記憶
2.マウス移動で移動量を記憶
3.アップで
A.移動量が既定の移動量に達していない場合はコンテキストメニューを表示
B.移動量が既定の移動量に達している場合、右ドラッグの処理
みたいなんじゃいかんのかな?
コントロールの移動とかからむとめんどくさそうだけど
0958デフォルトの名無しさん
2010/05/25(火) 11:57:55右クリックすると、コンテキストメニューが開いちゃうのですが、それをどうキャンセルすればいいんでしょう?
まずは、
private void img_MouseRightButtonDown(object sender, MouseButtonEventArgs e){
MessageBox.Show("mousedown");
}
private void img_MouseRightButtonUp(object sender, MouseButtonEventArgs e){
MessageBox.Show("mouseup");
}
としてみたんですけど、MessageBoxが開かず、コンテキストメニューが開いてます。
0959デフォルトの名無しさん
2010/05/25(火) 12:03:530960デフォルトの名無しさん
2010/05/25(火) 12:11:41イベント時にShowするとかかな
0961デフォルトの名無しさん
2010/05/25(火) 12:22:25配列に対してfor文でカウンタを回しながら要素アクセスを行うと、
添字の範囲チェックが行われる。
これはtry〜catchの例外処理が挟まれることに相当するので、単独でこの部分だけを見ると差は大きい。
処理時間の差が大きくなるかどうかはループあたりの処理量とループ回数の比によって異なる。
ベンチマーク的な空ループに近い処理や、巨大なbyte[]に対する処理などではバカにならないぞ。
>>949,950
ちげーよ。Stopwatchは計測にパフォーマンスカウンタを使用する。
パフォーマンスカウンタは一般的に精度がシステムごとに固定値(例えば100万分の1秒)になっているか
CPUのクロック数に依存するかなので、
それ未満の経過時間の場合はそんなふうに固定時間ずれているように見える。
実際はそうじゃないかもしれないんだぞ。
.NETの場合はどういう実装になっているのかは誰か調べといてください。
0962デフォルトの名無しさん
2010/05/25(火) 12:24:19ContextMenuプロパティを設定するのをやめて、MouseDown/MouseUpを独自に実装するのはどうだ?
0963デフォルトの名無しさん
2010/05/25(火) 12:28:26bool 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();
}
とかですか?
コンテキストメニューって、どこでプロパティにセットしているんでしょう?
0964デフォルトの名無しさん
2010/05/25(火) 12:32:16マウスの位置はMouseButtonEventArgsに入ってるべ?
ContextMenuStripはそのコントロールのプロパティの動作あたりに無いか?
0965デフォルトの名無しさん
2010/05/25(火) 12:38:31QueryPerformanceCounterの替りに実装できるて書いてるくらいだから
内部でそれつかってんじゃね?
0966デフォルトの名無しさん
2010/05/25(火) 13:21:32bool 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();
}
こんな感じでしょうか。
0967947
2010/05/25(火) 13:24:42なんで左を使わないの?
0968デフォルトの名無しさん
2010/05/25(火) 13:28:05マウスアップがコントロールから外れると来なくなるから
Captureプロパティも使った方がいいかも
メニュー表示はこんな感じかな
ContextMenu.Show(img.PointToScreen(e.Location));
0969デフォルトの名無しさん
2010/05/25(火) 13:30:44コンテキストメニューのイベントハンドラが見つからないんですけど、
<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
を参考にしてます。
0970947
2010/05/25(火) 13:32:27なるほど〜なんだけどさw
WinFormじゃなくてWPFなの?
0971デフォルトの名無しさん
2010/05/25(火) 14:07:18<ContextMenu>は<Window.Resources>辺りで宣言
C#のコードからはthis.Resources[]で取得
とかする
あとWPFでそのページはあんま役に立たんと思うぞ
0972デフォルトの名無しさん
2010/05/25(火) 14:21:07ありがとうございます。
<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で、よい入門ページってご存じありませんか?
0973947
2010/05/25(火) 14:24:24ない
<Grid Name="img"
とかやって名前付けておけば従来のwinformのように
img.
ってやれば候補がでてくるので自分でそれっぽいの探してがんばるしかない
0974デフォルトの名無しさん
2010/05/25(火) 14:30:25Gridには名前つけましたが、Windowにも名前が必要ってことでしょうか?
0975947
2010/05/25(火) 14:32:54MSDNで調べてもいいけどざっくり見る場合の手段なだけだよw
XAMLの方でも候補は見えるけどやりにくいので
XAML側にはとりあえずNameつけておいてC#側で何が使えるか見るってだけ
0976デフォルトの名無しさん
2010/05/25(火) 14:34:35<Window.***> はWindowの***プロパティにセットする記述
C#のコードでWindow.*** = ...って書くのと同じ
だから
<Window.Resources>
<Window.ContextMenu>
はイミフ
WindowのContextMenuにしたいわけじゃないんだからWindow.ContextMenuは関係ない
0977デフォルトの名無しさん
2010/05/25(火) 14:40:060978デフォルトの名無しさん
2010/05/25(火) 15:12:460979デフォルトの名無しさん
2010/05/25(火) 16:02:02Pythonにおけるgenerator.send(value) のようなものが欲しいんですが。
0980デフォルトの名無しさん
2010/05/25(火) 16:48:06IEnumerable<int> f(int i)
{
for (int j = 0; j < 10; j++)
{
yield return i * j;
}
}
こういう話?
0981デフォルトの名無しさん
2010/05/25(火) 16:50:25基礎がないから初心者ってことで…。
<Window.Resources>
あたりで宣言ってのはどうやるんですか?
>>977
イベントハンドラを、C#側に書くにはどうしたら?
0982デフォルトの名無しさん
2010/05/25(火) 17:00:40その例に合わせると、こんな感じでしょうか。
// 反復子メソッドの例
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);
0983デフォルトの名無しさん
2010/05/25(火) 17:04:50知らないなら適当なこと言うなよ。
言っとくが、>>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コンパイル時点で、オーバーすることはないことが確認できた場合は省かれるんだよ。
最初から、そうなるから差なんてないって話なのに今更何言ってるの?
0984デフォルトの名無しさん
2010/05/25(火) 17:11:240985デフォルトの名無しさん
2010/05/25(火) 17:12:30あの結果だけじゃ確かに何の説明にもならないからな。
※こっちはかかる時間を知ってるから、あれでも確認できるって分かってるだけだから。
で、これなら納得いくかい?
※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ナノ秒程度しかかからない処理の時間を計測すること自体があほだってこと。
0986デフォルトの名無しさん
2010/05/25(火) 17:19:05>>961はこう言ってる。
>>935
配列に対してfor文でカウンタを回しながら要素アクセスを行うと、
添字の範囲チェックが行われる。
これはtry〜catchの例外処理が挟まれることに相当するので、単独でこの部分だけを見ると差は大きい。
処理時間の差が大きくなるかどうかはループあたりの処理量とループ回数の比によって異なる。
ベンチマーク的な空ループに近い処理や、巨大なbyte[]に対する処理などではバカにならないぞ。
0987デフォルトの名無しさん
2010/05/25(火) 17:21:09〜〜の◯◯みたいな、だけじゃなくて具体的にどういう動作させたいのか書いてくれよ
その例もよく分からんが、fの第二引数にFunc<int, bool>でも持たせるとかするのはどう?
f()の中でi*jを計算してFunc<int,bool>を呼び出しyield breakする
0988デフォルトの名無しさん
2010/05/25(火) 17:30:47いただいた例が私のやりたかった処理にあまり似ていなかったためか、
うまく伝わらなかったようです。ごめんなさい。
こんな感じです。
// 反復子メソッドの例
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);
}
0989デフォルトの名無しさん
2010/05/25(火) 17:30:54watch = 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ナノ秒かかってる。
0990デフォルトの名無しさん
2010/05/25(火) 17:36:40で、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());
}
0991デフォルトの名無しさん
2010/05/25(火) 17:43:14http://ideone.com/l1Ypn
こういう感じに、状態を持ちつつyield returnするクラスが作りたいっていう話なんだろうか
0992デフォルトの名無しさん
2010/05/25(火) 17:50:02すばらしい!
まさにこういう事がしたかったんです。
ありがとうございます。
0993デフォルトの名無しさん
2010/05/25(火) 18:09:15xaml
<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らしい記述に直すとか
0994デフォルトの名無しさん
2010/05/25(火) 18:15:39って書いたのは理解してなかったのね・・・
0995デフォルトの名無しさん
2010/05/25(火) 18:32:500996デフォルトの名無しさん
2010/05/25(火) 18:36:45よくあるよw
最近は行ってないけどC/C++関連でもよくあった
0997デフォルトの名無しさん
2010/05/25(火) 18:39:000998デフォルトの名無しさん
2010/05/25(火) 18:42:59http://pc12.2ch.net/test/read.cgi/tech/1274780512/
0999デフォルトの名無しさん
2010/05/25(火) 18:46:49乙
1000デフォルトの名無しさん
2010/05/25(火) 18:54:2910011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。