ふらっとC#,C♯,C#(初心者用) Part29
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2008/07/22(火) 22:56:35「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
前スレ
ふらっとC#,C♯,C#(初心者用) Part28
http://pc11.2ch.net/test/read.cgi/tech/1211688164/
0002デフォルトの名無しさん
2008/07/22(火) 22:58:25http://pc11.2ch.net/test/read.cgi/tech/1214038282/
WPF(XAML,XBAP,.NET3.5)GUIプログラミング
http://pc11.2ch.net/test/read.cgi/tech/1211453941/
Live2
http://pc11.2ch.net/test/read.cgi/tech/1203674757/
初心者のためのプログラミング言語ガイド Part9
http://pc11.2ch.net/test/read.cgi/tech/1210941509/
0003デフォルトの名無しさん
2008/07/22(火) 22:59:15http://www.google.co.jp/
http://homepage3.nifty.com/midori_no_bike/CS/
http://www.atmarkit.co.jp/fdotnet/dotnettips/index/index.html
http://dobon.net/vb/dotnet/
http://jeanne.wankuma.com/tips/
http://www.labasp.net/CsharpNote/
0004デフォルトの名無しさん
2008/07/22(火) 23:09:47乙
0005デフォルトの名無しさん
2008/07/23(水) 01:33:02乙
0006デフォルトの名無しさん
2008/07/23(水) 02:20:41それらの型同士の四則演算をするにはどうすればいいですか?
0007デフォルトの名無しさん
2008/07/23(水) 02:34:39Expressionクラス使って無理矢理やれないこともないけど
0008デフォルトの名無しさん
2008/07/23(水) 02:52:11var paramA = Expression.Parameter(typeof(T), "a");
var paramB = Expression.Parameter(typeof(T), "b");
var body = Expression.Add(paramA, paramB);
var lamdba = Expression.Lambda<Func<T, T, T>>(body, paramA, paramB).Compile();
return lamdba(a, b);
}
こんなかんじ
このまま使ったら毎回メソッド生成してとんでもなく遅いはずだからlamdbaはキャッシュしてね
0009デフォルトの名無しさん
2008/07/23(水) 04:47:19switch(typeof(T)) {
case typeof(int):
case typeof(short):
case typeof(long):
break;
default:
throw new Exception();
// どうせ TypeInitializationException にされるが、
// TypeParameterException とか作ってもいい
}
とかすると、where句で表現できない制限でも
インスタンスを生成/staticメンバを参照しようとした時点でエラーにできる
四則演算の方は、同じくstaticコンストラクタで>>8のデリゲートまでを生成して、
static T Add<T>(T a, T b) {
return AddFunc(T, T); // AddFunc is Func<T, T, T>
}
とか
00109
2008/07/23(水) 04:48:36定義されていない演算は使おうとすると例外投げたり、
元の型と相互に暗黙の型変換できるようにしたりして
// a, b is T
Operand<T> _a = a;
Operand<T> _b = b;
T c = _a + _b;
T d = _a << 8;
というふうにジェネリックで使えるようなやつ
0011デフォルトの名無しさん
2008/07/23(水) 10:52:59ありがとうございます
0012デフォルトの名無しさん
2008/07/23(水) 18:56:41開始すると発表した。その他の地域については2009年から逐次開始する予定。
Xbox LIVE Community Gamesは、XNA Game Studioで開発されたXbox360用ソフトを
Xbox Liveを通じ一般利用者へ販売することを可能とするサービス。
Xbox LIVE Community Gamesでの販売は、XNA開発者コミュニティ「XNA Creators Club」の
有料会員(年額9,800円)であれば誰でも行うことが可能となる。
販売価格については200〜800マイクロソフトポイントの間で自由に設定することができ、
手数料として売上の30%が引かれることとなる。
XNA Game Studioは、マイクロソフトが無償で公開しているVisual Studioをベースとした
ゲーム特化型の統合開発環境。.NET Framework及びDirectXをベースとしたライブラリ
「XNA Framework」を使用し、基本的には設定ひとつでXbox360及びWindowsへの両対応が
可能となる。
XNAについては、RPGツクールが次期バージョンでの対応を表明しており、日本での
普及にも期待がかかる。また、教育機関による学習教材としての採用も増加しており、
月刊ベーシックマガジンの休刊以降問題視されていた日本人ゲーム開発者の急激な
減少に歯止めをかける期待も持たれている。
http://news4xbox.blogspot.com/2008/07/xbox360.html
0013デフォルトの名無しさん
2008/07/23(水) 22:05:03それぞれのノードを判別する方法って
Text値で見分けるしかないのですか?
0014デフォルトの名無しさん
2008/07/23(水) 22:44:340015デフォルトの名無しさん
2008/07/23(水) 22:48:290016デフォルトの名無しさん
2008/07/23(水) 23:01:27TreeNodeそのものを使用とはどういう意味でしょうか?
ノードそれぞれに固有の番号が振り分けられているとか?
だとしたら、その番号はどうやって知ればいいのでしょうか?
最初、Index値を参照しようと思ったら、Index値は各ノードに
個別の値が振り分けられているわけではなかったので、断念しました。
>>15
検索していて、ちょうど今その方法を見つけました。
やはりそれしかないのでしょうか?
よく考えたら、Text値だとテキストの内容がかぶったら
判別できませんね。
0017デフォルトの名無しさん
2008/07/24(木) 02:01:51if (dlgFile.ShowDialog() == DialogResult.OK)
{
dataSet1.ReadXml(dlgFile.FileName);
}
DataGridViewのDataSourceプロパティにdataSet1を指定しているんですが、
このメソッドを実行してもファイル読み込んだきり無反応です。
例外も起こりません
どうすれば表示できるようになるのでしょうか?
0018デフォルトの名無しさん
2008/07/24(木) 02:03:25どこに表示したいの?
0019デフォルトの名無しさん
2008/07/24(木) 02:05:31DataGridView
DataSourceにいれてやると勝手に表示してくれたりしないんですか?
0020デフォルトの名無しさん
2008/07/24(木) 06:04:450021デフォルトの名無しさん
2008/07/24(木) 09:43:36dataSet1に定義されたTableを指定しないと…
0022デフォルトの名無しさん
2008/07/24(木) 11:04:360023デフォルトの名無しさん
2008/07/24(木) 18:06:52現在Microsoft Visual C# 2008 Express Edition を使っています。
特に設定はイジっていませんが、実行すると必ずFormがVisual C#の後ろに隠れてしまいます。
新しくプロジェクトを作っても、毎回後ろに隠れてしまいます。
どうすれば元のようになりますでしょうか?
よろしくお願いします。
0024デフォルトの名無しさん
2008/07/24(木) 19:02:000025デフォルトの名無しさん
2008/07/24(木) 20:20:270026デフォルトの名無しさん
2008/07/24(木) 21:48:39標準出力が止められないんですが、何か止める方法はないでしょうか。
0027デフォルトの名無しさん
2008/07/24(木) 22:22:58double d = 1278.86d;
double d2 = 100d;
double d3 = d * d2;
Console.WriteLine(d3.ToString());
int i = (int)(d3);
Console.WriteLine(i.ToString());
これで、一行目が127886
二行目が127885
になるのですが、これって正常ですか?
0028デフォルトの名無しさん
2008/07/24(木) 22:28:06まずデバッガの使い方を覚えることをお勧めします。
0029デフォルトの名無しさん
2008/07/24(木) 22:47:16むしろConsole.OutにTextWriter.Nullを指定するってのはどう?
0030デフォルトの名無しさん
2008/07/24(木) 23:03:11ありがとうございました。
d3が127885.99999999999になってました。
何故こんなことになるんでしょう?
double 1278.86をint 127886にしたいときはどのようにするのでしょうか?
レベルが低くてすいません・・・
よろしければご教示ください。
0031デフォルトの名無しさん
2008/07/24(木) 23:07:380032デフォルトの名無しさん
2008/07/24(木) 23:16:280033デフォルトの名無しさん
2008/07/24(木) 23:16:34http://e-words.jp/w/E4B8B8E38281E8AAA4E5B7AE.html
0034デフォルトの名無しさん
2008/07/24(木) 23:22:38低レベルな質問にお付き合いいただいて、ありがとうございました。
Math.Round 調べてみます。
0035デフォルトの名無しさん
2008/07/24(木) 23:26:30無難にdecimal使っとくよろし
0036デフォルトの名無しさん
2008/07/24(木) 23:34:42ありがとうございます。
decimalにしときます。
こういう時使うんですね・・・理解してませんでした。
0037デフォルトの名無しさん
2008/07/24(木) 23:51:56for(int i=0;i < 100;i++) d += 0.01;
Console.WriteLine(d);
0038デフォルトの名無しさん
2008/07/25(金) 01:03:060039デフォルトの名無しさん
2008/07/25(金) 05:39:110040デフォルトの名無しさん
2008/07/26(土) 14:39:1110進数で有限小数でも、循環小数になっちゃうことが多々。
http://ufcpp.net/study/csharp/st_embeddedtype.html#decimal
0041デフォルトの名無しさん
2008/07/26(土) 14:53:470042デフォルトの名無しさん
2008/07/27(日) 19:50:52VisualStudioExpressEdition2008のC#入れて勉強しています
Javaからの転向組みなのですが、基本的な部分でわからないことが多いので質問させてください
・プロジェクトの保存場所を変更したい場合はどうすればいいのでしょうか?
・コンソールアプリケーションを作成していますが、成果物をコマンドラインで使う場合はどうすればいいのでしょうか?
・複数のMainメソッドを1個のプロジェクトに作成したいのですが、実行するMainメソッドごとに成果物を作成することは可能でしょうか?
・API仕様集のようなものはどこを読めば良いのでしょうか?
・namespaceを使っているのですが、ソースコードの保存はフォルダ構成を考慮する必要がないのでしょうか?
よろしくお願いします。
すでに、既出でしたら、○○嫁と叱って下さい
0043デフォルトの名無しさん
2008/07/27(日) 20:04:10プロジェクトはソリューションかプロジェクトのフォルダごとコピーでどこへでも。
自分専用のフォルダきってPATH通せばOK。
Mainは複数あってもいいがEXEを作るときにどれをエントリーポイントにするか指定しなくてはならない。
別のMainから起動したいなら別にEXEを作ってそれからキック。
マニュアルはMSDN。オンラインでOK。
namespaceとフォルダの関連性はなし。おまけにinternal scopeとnamespaceの関連性もない。
0044デフォルトの名無しさん
2008/07/27(日) 22:03:22レスありがとうございます
さらにわからない点があるので教えてください
・プロジェクトを作成してから、フォルダを移動するのではなく、最初から作成場所を指定する機能は無いのでしょうか?
・http://www.microsoft.com/japan/msdn/vcsharp/は見ているのですが、そこから、API集にどうやっていけば良いのかわかりません
申し訳ありませんが、よろしくお願いいたします
0045デフォルトの名無しさん
2008/07/27(日) 22:08:39メニューの「ファイル」→「新規作成」→「プロジェクト」で開くダイアログに、フォルダを入力するところがあるよ。
0046デフォルトの名無しさん
2008/07/27(日) 22:10:40http://msdn.microsoft.com/ja-jp/library/default.aspx
0047デフォルトの名無しさん
2008/07/27(日) 22:15:03Javaと違って.exeが出力されるので、.exeを直接起動できる。
>複数のMainメソッドを1個のプロジェクトに作成したいのですが、実行するMainメソッドごとに成果物を作成することは可能でしょうか?
1個のプロジェクトには1個のエントリポイントしか作れない。
Main()メソッドを複数作ることはできるが、エントリポイントとして使用できるのはひとつだけ。
ただし、1つのソリューションに複数のプロジェクトを含めることができるので、プロジェクトを分ければOK。
>プロジェクトを作成してから、フォルダを移動するのではなく、最初から作成場所を指定する機能は無いのでしょうか?
最初に保存するときに、保存場所を決めるように求められるべ?
>API集にどうやっていけば良いのかわかりません
クラス名で直接ググった方が早い。
0048デフォルトの名無しさん
2008/07/27(日) 22:22:29本当にExpressEditonのC#ですか?
>>44は単純に、基準となるディレクトリを設定したいだけだろ
My Document以下にworkspaceってディレクトリがあって下にVisual C#やVisual C++ってディレクトリを作ってそれぞれ管理したいってだけだろ。
Eclipseで言うところの[ワークスペースの変更]とおなじことがしたいんだろ?
僕もしたいけど方法分からない(´・ω・`)
>>44
>・http://www.microsoft.com/japan/msdn/vcsharp/は見ているのですが、そこから、API集にどうやっていけば良いのかわかりません
http://msdn.microsoft.com/ja-jp/library/ms229335%28VS.80%29.aspx とか
MSDNで探すよりネームスペースでぐぐったほうが早い。
0049デフォルトの名無しさん
2008/07/27(日) 22:26:300050デフォルトの名無しさん
2008/07/27(日) 22:29:51ツール→オプション→すべての設定を表示にチェック→プロジェクトおよびソリューション
→作成時に新しいプロジェクトを保存 と 常にソリューションを表示 にチェック
これでプロジェクトを新規作成するときに場所が選べるようになってソリューションも表示される
既定のプロジェクトの場所もそのページで変えられる
0051デフォルトの名無しさん
2008/07/27(日) 22:29:57StandardEditionなら、[ツール]→[オプション]→[プロジェクトおよびソリューション]→[全般]でいける。
EEは知らん。
0052デフォルトの名無しさん
2008/07/27(日) 22:31:350053デフォルトの名無しさん
2008/07/27(日) 22:37:06>本当にExpressEditonのC#ですか?
シラネーヨ。
Expressだけ、メニューやらダイアログの構成が違ってるのか?
0054デフォルトの名無しさん
2008/07/27(日) 22:38:140055デフォルトの名無しさん
2008/07/27(日) 22:52:45http://www-2ch.net:8080/up/download/1217166622395564.caGc4d
http://www-2ch.net:8080/up/download/1217166686705313.OFR8dT (設定適用後)
0056デフォルトの名無しさん
2008/07/27(日) 22:57:40http://www-2ch.net:8080/up/download/1217166887935749.qtG5Gc (デフォルト)
http://www-2ch.net:8080/up/download/1217166972785174.W6zF8Q (設定劇用語)
0057デフォルトの名無しさん
2008/07/27(日) 23:13:37レス色々とありがとうございます
非常に助かりました
>>48
Java+Eclipseの人は同じようなこと悩みますね
>>50
できました
VisualStudio使うの初めてだったので、助かりました
私には、C#以前にVisualStudioの勉強が必要そうですね
Java+Eclipseの時もメニューバーのWindowの中にPreferencesがあったりして、かなり苦戦した記憶が、、、
また何かありましたら、よろしくお願いいたします
0058デフォルトの名無しさん
2008/07/27(日) 23:16:15そんなことで苦戦って、先が思いやられるな
0059デフォルトの名無しさん
2008/07/27(日) 23:23:13ツール類にはいつも苦労させられます
知っている人が周辺にいてくれればすぐにわかることでも結構悩みますし、、、
そんなことありませんか?
Javaの前はHDLやってたのですが、そのときもコーディングよりもツール動かすまでが大変でした
006048
2008/07/27(日) 23:25:50Java+Eclipseの人でも無いし
むしろ、Eclipseがどうして栄えてるのかがわからない。
Eclipseな人ってどんなマシン使ってるの?くそ重たくて使い物にならないとおもうんだけど
Ath X2 4800+ + 4GB RAM (32bit)でWindows使ってるけど、くそ重たかったよ
0061デフォルトの名無しさん
2008/07/27(日) 23:32:47そうですか?
私の環境だとeclipseよりVisualStudio2008の方が重いです
Javaどのバージョンいれてます?
て、スレ違いかな
0062デフォルトの名無しさん
2008/07/27(日) 23:49:21もしスレ違いならお手数をおかけしてすみませんが誘導お願いいたします。
C#を始めるために、,NET再頒布3.5と.NET SDK2.0、.NET再頒布1.1と.NET SDK1.1を
入れたのですが、これで特に問題はありませんでしょうか。
それとも、おとなしくVC#無償版を入れたほうがよいのでしょうか。
またその場合、.NET再頒布3.5とVC#無償版を入れればよいのでしょうか。
あともうひとつ質問なのですが、v2.0フォルダのC#コンパイラでコンパイルしたものは2.0の実行環境で、
v1.1フォルダのC#コンパイラでコンパイルしたものは1.1の実行環境でそれぞれ動作する、
という認識で間違いないでしょうか。
すみませんが、どなたかご存知の方ご教授願います・・・。
0063デフォルトの名無しさん
2008/07/27(日) 23:55:10学習の手助けになるという意味でも VC# 入れとく方が無難。
SDK は別個に入れる必要なし。てか、3.5 の SDK 入れろよ。
あと、VC# 入れれば SDK も入る。
0064デフォルトの名無しさん
2008/07/27(日) 23:59:30v1.1 の方は .NET 1.1 用、V2.0 の方は .NET 2.0 用で間違いないけども。
コンパイラオプションできりかえられたような。
0065デフォルトの名無しさん
2008/07/28(月) 00:04:56また、VC#でもインストーラがもれなく.NETを入れてくる。
だから、そんな何でもかんでもインストールする必要はない(時間の無駄以外に害はないけど)。
0066デフォルトの名無しさん
2008/07/28(月) 00:18:31早速のご回答ありがとうございます!
な、なんとオプションで切り替えられるのですか・・・。
MSの.NET公式を色々と探したのですが、SDK3.5を見つけることができなかったのです・・・。
そ・・・そうなのですか、MS公式のSDK2.0のページに.NETSDK2.0を入れる前に
.NET2.0とLangPackを入れろと書いてあったのでてっきり全部入れないといけないのかと思ってました・・・。
やはりSDKいれれば全部ついてくるんですよね、おかしいとおもいました。
全部アンインストールしてVC#2008無償版を入れてみようと思います。
皆さん本当にありがとうございました!失礼しました。
0067デフォルトの名無しさん
2008/07/28(月) 00:46:470068デフォルトの名無しさん
2008/07/28(月) 00:54:17バージョンってのがちょっと複雑なんだけど・・・
・C# の言語のバージョン(1.0, 1.2, 2.0, 3.0)
・IL と実行環境のバージョン(1.0, 2.0)
・標準ライブラリのバージョン(1.0, 1.1, 2.0, 3.0, 3.5)
があって、IL の 1 と 2 の差は generics の有無。
なので、C# 2.0 以降は IL の方も 2.0 必須。
逆に、ライブラリさえ使わなければ C# 3.0 で書いたプログラムも .NET 2.0 で動く。
0069デフォルトの名無しさん
2008/07/28(月) 01:02:52うん、細かい説明ありがとー
0070デフォルトの名無しさん
2008/07/28(月) 01:12:06VS2002(VS7) - .NET Framework 1.0
VS2003(VS7.1) - .NET Framework 1.1
VS2005(VS8) - .NET Framework 2.0 ※1
VS2008(VS9) - .NET Framework 2.0/3.0/3.5
※1 アドイン追加で、.NET Framework 3.0 向けの開発も可能
対応OS
.NET Framework 1.0/1.1 - 98, 98SE, ME, NT4.0, 2000, 2003, XP,(2008, Vista ※1.1のみ)
.NET Framework 2.0 - 98, 98SE, ME, .2000, 2003, XP, 2008, Vista
.NET Framework 3.0/3.5 - .2003, XP, 2008, Vista
CLRのバージョン
.NET Framework 1.0 - CLR1.0
.NET Framework 1.1 - CLR1.1
.NET Framework 2.0/3.0/3.5 - CLR2.0
C#のバージョン
.NET Framework 1.0 - C#1.0
.NET Framework 1.1 - C#1.1
.NET Framework 2.0/3.0 - C#2.0
.NET Framework 3.5 - C#3.0
0071デフォルトの名無しさん
2008/07/28(月) 01:15:47C#のバージョン
VS2002(VS7) - C#1.0
VS2003(VS7.1) - C#1.1
VS2005(VS8) - C#2.0
VS2008(VS9) - C#3.0
0072デフォルトの名無しさん
2008/07/28(月) 01:33:19推論型、匿名型, 暗黙型付け配列
コレクションのイニシャライザ、オブジェクトのイニシャライザ
パーシャルクラス、パーシャルメソッド
自動プロパティ、ラムダ式
.NET3.xが必要になる機能
ラムダ式でFunc<>やAction<>, Expression<>などの利用
LINQクエリ式他
拡張メソッド - これが意外だったり。
0073デフォルトの名無しさん
2008/07/28(月) 02:37:530074デフォルトの名無しさん
2008/07/28(月) 02:53:48可能ですかね?exeのサイズ大きくなってもいいので・・
0075デフォルトの名無しさん
2008/07/28(月) 02:58:380076デフォルトの名無しさん
2008/07/28(月) 02:58:53ExtensionAttributeがSystem.Coreを使ってるからしょうがない
imports System.Runtime.CompilerServices
public module Foo
<Extension> public function Bar(s as String) as String
0077デフォルトの名無しさん
2008/07/28(月) 03:42:32それを2.0プロジェクトから利用するバッドノウハウ。
前者でコンパイルが通るのは、まぁ理解できる。
後者でインテリセンスに表示されてないのにコンパイルが通るってwww
# CLRの機能に変更を加えず、拡張メソッドを実現している証拠・・か。
0078デフォルトの名無しさん
2008/07/28(月) 03:52:370079デフォルトの名無しさん
2008/07/28(月) 08:20:12普通にコンパイルエラーになるのだけど?
>.NET Framework2.0をターゲットにして拡張メソッドを定義
System.Runtime.CompilerServices.ExtensionAttributeが見つからないため新しい拡張メソッドを定義できません。
System.Core.dll への参照は指定されていますか?
0080デフォルトの名無しさん
2008/07/28(月) 09:22:39実装はなくてOK
0081デフォルトの名無しさん
2008/07/28(月) 09:33:15namespace System.Runtime.CompilerServices { class ExtensionAttribute : Attribute { } }
これを使ったアセンブリをさらに.net 3.0のアセンブリから参照すると、
ExtensionAttributeがダブるとエラーになるが、
これを回避するためにこういうことをするとさらに邪悪さが増す。
// csc /r:hoge=my.dll
extern alias hoge;
0082デフォルトの名無しさん
2008/07/28(月) 14:19:270083デフォルトの名無しさん
2008/07/28(月) 19:31:17MITライセンスだし
0084デフォルトの名無しさん
2008/07/28(月) 20:22:140085デフォルトの名無しさん
2008/07/28(月) 20:42:550086デフォルトの名無しさん
2008/07/28(月) 20:54:34ちなみに.NET Framework 3.0から
対応するSDKはWindows SDKという名称になった。
0087デフォルトの名無しさん
2008/07/28(月) 21:18:25目的は、フォームの外形をマウスで変形したりリサイズする際、
リアルタイムで内部まで追随させずに外形枠の仮想線だけを
追随描画し、マウスのボタンを解放した時点で内部の描画を行う
方式を取ることでした。
これに関し SetStyleやOnPaintなどのアドバイスを頂いたことが
ありました。しかしどうもうまく実現できておりませんでした。
そこで ownerdraw を用いるのかもしれないと思い、調べているのですが、
情報にたどり着いておりません。よろしければアドバイスを頂きたく。
よろしくお願いします。
0088デフォルトの名無しさん
2008/07/28(月) 21:41:280089デフォルトの名無しさん
2008/07/28(月) 21:42:27現在、描画系の処理について勉強していて、
試しにペイントもどきのようなものを作ってみようと思いました。
そこで、以下のようなプログラムを書いてみました。
マウスがクリックされている間に、別スレッドから描画メソッドをInvoke経由でコール。
描画メソッド内にて現在のマウス座標に対して、DrawRectangleで点を打つ。
という簡単な物です。
これを実行すると一応、点が描画されて、マウスを動かしていくと、
線っぽくひけるのですが、マウスを速く動かすと線が、細切れになってしまいます。
これは、描画処理が追いついていないのでしょうか。
スレッドは、1ms単位でクリック情報をポーリングしており、
クリックされていれば、メソッドがコールされます。
スレッドでは、キューに積む。
別スレッドで描画などすれば解決するものなのでしょうか。
(上記も試行してみましたが、上手く動きませんでした・・・実装が悪いのかもしれません)
以上、よろしくお願いいたします。
0090デフォルトの名無しさん
2008/07/28(月) 21:43:500092デフォルトの名無しさん
2008/07/28(月) 21:47:03だよな
早く動く=前の位置よりいきなり座標移動が起きる
だからその間の補完は自分で考えてしないとどうしようもない。
どんな描画系のツールでも同じ現象になるのがほとんどのような。
0093デフォルトの名無しさん
2008/07/28(月) 21:47:26009489
2008/07/28(月) 21:47:40取得できた座標と前回の座標からその中間の線を
計算して描画する処理が必要ということですかね・・・
0095デフォルトの名無しさん
2008/07/28(月) 21:49:20009689
2008/07/28(月) 21:49:56>>93
なるほど!
やはり、そうなのですね。
疑問が解けてすっきりしました。
前回の座標値と今回の座標値を結ぶ線を描画するという
方向で考えてみたいと思います。
ありがとう御座いました。
0097デフォルトの名無しさん
2008/07/28(月) 21:50:27windows標準のペイントだと対策はしてるようだけど
かなり荒い補完なので前回の座標と新しい座標間でラインを引いてる
感じだな。
0099デフォルトの名無しさん
2008/07/28(月) 21:57:15ありがとうございました。OSレベルでの設定変更で対応する方法を
試すことができました。確かにそれで実現することができました。
ところで、それをアプリケーションレベルで実現したいと考えておりました。
そこで先ほど見つけたこちら:
フォームのリサイズが終了するまでコントロールの大きさを変えない .NET Tips C#, VB.NET, Visual Studio
http://dobon.net/vb/dotnet/form/preventcontrolresize.html
にある方法を試してみましたところ、確かにフォームの内部の描画が
Resizeの終了時点で行われることが確認できたのですが、この場合
フォームの外形自体が描画されてしまうため、内部に何の描画もない
領域が見えてしまったりして見栄えがいまひとつなことがわかりました。
Resize操作中は、OSレベルと同じように、フォームの外形線だけを
リサイズしたいのですが、これは不可能でしょうか?何卒アドバイスを
頂きたく!よろしくお願いします。
0100デフォルトの名無しさん
2008/07/28(月) 22:56:490101デフォルトの名無しさん
2008/07/28(月) 23:03:32ありがとうございます。そうなのです、それが
フォームのリサイズが終了するまでコントロールの大きさを変えない .NET Tips C#, VB.NET, Visual Studio
http://dobon.net/vb/dotnet/form/preventcontrolresize.html
(onresizeendを利用する方法は、そこの下の方に記載がありました)
にあったので試したのでしたが、その結果は>>99に通りでした。
やはりフォーム外形枠の”線”だけをスクリーンに描画するというのは
アプリケーション自体では不可能でしょうか?
0102デフォルトの名無しさん
2008/07/28(月) 23:05:28その時、あるグループボックスの中にあるラジオボタンをクリックした際、
指定したグループボックスの中にあるラジオボタンのチェックを解除する方法を教えていただきたいです。
よろしおねがいします。
0103デフォルトの名無しさん
2008/07/28(月) 23:08:29LINQ使わないなら、VS2005のほうがいいんでしょうか?
とりあえず今VS2008を入れてみたんですが、
これはLINQを使うこと前提になってるぽい感じですよね?
自分はADO.NETも理解できてない状態なので、
もしLINQ使うにしても、いきなりLINQより、
ADO.NETやった後のほうが良いかと思うんですが、どうなんでしょうか?
ちなみに、SQLに関しては、PHP+MySQLとAccessの経験があります。
0104デフォルトの名無しさん
2008/07/28(月) 23:12:03VS2008で.NET Framework 3.5/3.0/2.0 は選べる。C# 3.0 2.0 1.0も選べる。
0105デフォルトの名無しさん
2008/07/28(月) 23:12:05じゃあLINQ行くかの時にめんどくさいからそのままでおk
0106デフォルトの名無しさん
2008/07/28(月) 23:16:53そうじゃない。その記事はリサイズ中のコントロールの*レイアウト*の停止
俺が言ってるのはフォーム自体の*描画*の停止
>>102
そのグループボックス内の全てのラジオボタンをChecked=falseにする
もしくは、そのグループボックス内の任意のラジオボタンをChecked=trueにした後で、Checked=falseにする
0107デフォルトの名無しさん
2008/07/28(月) 23:26:02ありがとうございやし!
Frameworkは2.0にしてたんですが、C#まで選択可能とは気付きませんでした。
2008のままでボチボチ勉強してみます。
0108デフォルトの名無しさん
2008/07/28(月) 23:28:020109デフォルトの名無しさん
2008/07/28(月) 23:35:180110デフォルトの名無しさん
2008/07/28(月) 23:36:09Xml.XmlDocument.GetAttribute()では名前がわからないと取得できません・・・
XmlDocumentでXmlReaderのように知らない属性名や値を取得するにはどうしたらいいのでしょうか?
0111デフォルトの名無しさん
2008/07/28(月) 23:37:41んっと、LINQの文法?がちょっと肌に合わなくて、
いきなりLINQからだと、C#自体挫折しそうなんです。。。
0112デフォルトの名無しさん
2008/07/28(月) 23:38:59クエリ式は一切使ってないな
使う場面もない
0113デフォルトの名無しさん
2008/07/28(月) 23:47:55凹んだのはできるんですけど盛り上がってるのはつくれないの
(^9’)
0114デフォルトの名無しさん
2008/07/28(月) 23:51:20どうもです、
>フォーム自体の*描画*の停止
この実現方法についてアドバイスかヒントを
いただけるとありがたく。
resizebegin で SuspendLayout をしてみましたが
できませんでした。
0115デフォルトの名無しさん
2008/07/28(月) 23:54:530116デフォルトの名無しさん
2008/07/28(月) 23:55:33オーナードロー
0117デフォルトの名無しさん
2008/07/29(火) 00:02:150118デフォルトの名無しさん
2008/07/29(火) 00:07:00自分でオリジナルの・・・・・
もしもし^^;さすがにあるでしょ
いけずー
0119デフォルトの名無しさん
2008/07/29(火) 00:08:070120デフォルトの名無しさん
2008/07/29(火) 04:32:03それ拡張メソッドでやる必要ないだろ。
0121デフォルトの名無しさん
2008/07/29(火) 06:41:08ttp://www.atmarkit.co.jp/fdotnet/dotnettips/392notifyicon/notifyicon.html
このサイトの方法で、システムトレイにウィンドウが格納されるような動作を実現したのですが、
作ったプログラムを起動した状態でシステムをシャットダウンしようとすると、
作ったプログラムだけが残ってシャットダウンできません。
おそらく、シャットダウンが始まるってもフォームを閉じることができないのだと思います。
閉じるボタンを押すとシステムトレイに格納しつつ、
シャットダウン時にはちゃんと終了させるにはどうすればよいでしょうか。
0122デフォルトの名無しさん
2008/07/29(火) 07:22:33Closingイベントは非推奨になってなかったかな。
0123デフォルトの名無しさん
2008/07/29(火) 07:43:02はい、そうなんです。
FormClosingイベントを使っていて、フォームが閉じられようとする時に
フォームが閉じられるのをキャンセルしてるから、いつまでたっても終了しないと…
これに替わる策というのはあるのでしょうか?
Closingが非推奨なのは知りませんでした。
0124デフォルトの名無しさん
2008/07/29(火) 08:03:55と >>122 は言っている
0125デフォルトの名無しさん
2008/07/29(火) 08:18:53e.CloseReason == CloseReason.UserClosing
の時だけキャンセルするとかすればいい。
Closingイベントは、VS2005以降は手動で追加しない限り使えないので、気にする必要なし。
0126デフォルトの名無しさん
2008/07/29(火) 08:26:43ありがとうございました。勉強になりました!
0128デフォルトの名無しさん
2008/07/29(火) 13:46:29C#のバージョンまで選べたっけ?
0129デフォルトの名無しさん
2008/07/29(火) 13:48:37アクセスを限定すればちょっと早くなったりしますか?
0130デフォルトの名無しさん
2008/07/29(火) 13:51:29でもいつも意識してるほうがいいぞ。
0131デフォルトの名無しさん
2008/07/29(火) 14:14:26VS2008でC#3.0の機能の使用を制限する方法は無かったと思う。
むしろ何かあったら方法おせーて
0132デフォルトの名無しさん
2008/07/29(火) 16:20:080133デフォルトの名無しさん
2008/07/29(火) 17:21:11ISO-1 - ISO/IEC 23270:2003(C#1.0相当)
ISO-2 - ISO/IEC 23270:2006(C#2.0相当)
0134デフォルトの名無しさん
2008/07/29(火) 18:20:56C#で作られたプログラムの起動が遅すぎる。
でもちょっと興味もある……。
0135デフォルトの名無しさん
2008/07/29(火) 18:22:29この質問定期的にわくね。ゴキブリみたい。
0136デフォルトの名無しさん
2008/07/29(火) 18:23:18そうなのか。みんな同じこと考えてるのな
0137デフォルトの名無しさん
2008/07/29(火) 18:35:280138デフォルトの名無しさん
2008/07/29(火) 18:37:10とりあえずngen.exeについて調べてみろ。
0139デフォルトの名無しさん
2008/07/29(火) 18:38:15どうして関係ない話題でうやむやにしようとするのか
知らないなら黙っとけ
>>134
ngen.exe
0140デフォルトの名無しさん
2008/07/29(火) 18:45:19いやむしろネイティブコード吐けばいいのに
0141デフォルトの名無しさん
2008/07/29(火) 19:19:23でも32ビットでコンパイルしたコードが64ビットで動くのはすごくないか
0142デフォルトの名無しさん
2008/07/29(火) 19:29:310143134
2008/07/29(火) 19:34:020144デフォルトの名無しさん
2008/07/29(火) 19:42:060145デフォルトの名無しさん
2008/07/29(火) 19:43:27関係するDLLやライブラリ類が多くそのロードに時間がかかっている。
特にメモリの少ないPCでは顕著。それに対してJITやngenの影響は相対的に小さい。
通常のアプリではコードのサイズは大きくても常に動いている部分は意外と小さいのに対して、
.NETのアプリはアクティブに使われるコードの分布が広いのでキャッシュが効きにくい。
マネージド内は実行時の最適化で部分的なパフォーマンスはネイティブよりよくなることもあるが、
ネイティブコードの呼び出しのオーバーヘッドが大きい。このためWinFormなどが重くなりがち。
ライブラリ類の互換性やGCの特性を維持したままネイティブコード化を目指しても
スピード的なメリットはない。この辺はGCJが実証済み。
GCをなくして独自のライブラリを準備していいならあれだがそれをC#と呼べるかは不明。
いっぱい書いたが結論。ネイティブコンパイルができれば万事解決というのは短絡思考。
0146デフォルトの名無しさん
2008/07/29(火) 20:35:28初期は本当にひどかった
0147デフォルトの名無しさん
2008/07/29(火) 20:38:340148デフォルトの名無しさん
2008/07/29(火) 20:40:41ライブラリが増えただけで基幹部分は変わってないから
0149デフォルトの名無しさん
2008/07/29(火) 20:40:47多分コンパイラ班が頑張ってるんだと思う
0150デフォルトの名無しさん
2008/07/29(火) 20:50:150151デフォルトの名無しさん
2008/07/29(火) 20:53:162005あたりからstandardでも最適化ついてるんだっけ?
0152デフォルトの名無しさん
2008/07/29(火) 20:56:03IDEとは何にも関係ない。
0153デフォルトの名無しさん
2008/07/29(火) 20:56:32/optimaize+ でコンパイル時の最適化○、JITでの最適化○
無指定 でコンパイル時の最適化×、JITでの最適化○
/debug+ でコンパイル時の最適化×、JITでの最適化×
になる。
0154デフォルトの名無しさん
2008/07/29(火) 21:50:220155デフォルトの名無しさん
2008/07/29(火) 21:51:23そのプロセスは親が死んだのを見届けてから再起動。その後自殺。
0156デフォルトの名無しさん
2008/07/29(火) 22:01:26変わってないわけではない。
0157デフォルトの名無しさん
2008/07/29(火) 22:09:59ちょっと調べたら(って小一時間かかったが)
2003はproから最適化可
2005はstdから最適化可、pgoはpgoから
2008はstdからpgo含め最適化可みたいね
0158デフォルトの名無しさん
2008/07/29(火) 23:21:37ちょうどプロセス関係のことに手こずってたので (つまり、覚えたばかりのことを教えたがる厨(ry
親プロセスのIDを知るには?
http://www.microsoft.com/japan/msdn/netframework/programming/bcl/faq/SystemDiagnosticsProcessFAQ.aspx#Question3
0159デフォルトの名無しさん
2008/07/30(水) 00:10:29ArrayListをmsdnで調べると、IListインタフェースを実装していますよね?
そこで、Javaのように
IList<decimal> list = new ArrayList<decimal>();
とかやったのですが、ArrayListが非ジェネリクス型だのなんだのといわれてエラーになります
IList<decimal> list = (IList<decimal>)new ArrayList();
とか
IList list = new ArrayList();
なら上手くいくのですが、最初のコードは何が悪いのでしょうか?
msdn見てもよくわかりません
よろしくお願いいたします
0160デフォルトの名無しさん
2008/07/30(水) 00:16:29ジェネリック型のはただのList
こんな感じで作る
IList<decimal> list = new System.Collections.Generic.List<decimal>();
あとIList と IList<T>は別物
0161デフォルトの名無しさん
2008/07/30(水) 00:16:30http://msdn.microsoft.com/ja-jp/library/system.collections.generic(VS.80).aspx
0162デフォルトの名無しさん
2008/07/30(水) 00:51:51コンパイルが済むとその情報は消えてしまう。ただし、メタ情報としては残る。
その為バイトコードの拡張が不要な上、旧コードのとの相性も良い。
その反面プリミティブ型についてはオートボクシングで利便性は向上しているが
ボクシングによる低いパフォーマンスはそのままである。
.NETのはIL(バイトコード)をジェネリック用に拡張していてプリミティブ型のパフォーマンスがよい。
そのかわり非ジェネリックのコレクションとの互換性はない。
0163デフォルトの名無しさん
2008/07/30(水) 00:57:53再起動をどう定義するかの問題、になるんだろうけど
何か特殊な事情でもない限り、普通はそんなややこしいことしなくても
フツーに別のプロセスを立ち上げて自分は終了するだけで必要十分だと思うけど。
0164デフォルトの名無しさん
2008/07/30(水) 01:14:54using System.Linq;
ArrayList ar = new ArrayList() { 1,2,3,4,5 };
List<int> lt = ar.Cast<int>().ToList();
0165デフォルトの名無しさん
2008/07/30(水) 01:21:43そんな無駄の多い方法を初心者に教えるのはどうかと思うぞ
0166デフォルトの名無しさん
2008/07/30(水) 01:26:25でいいだろ
0167デフォルトの名無しさん
2008/07/30(水) 01:27:350168デフォルトの名無しさん
2008/07/30(水) 01:37:47ボクのほうがすごいLinq書けるもん!
>>167のおじちゃんよりLinq書けるよ!
0169デフォルトの名無しさん
2008/07/30(水) 01:39:040170デフォルトの名無しさん
2008/07/30(水) 01:44:16ArrayListの使用は非推奨
>>160見て書き直したほうがいいよ
>>164-169
バカじゃねーの?
0171デフォルトの名無しさん
2008/07/30(水) 01:45:200172デフォルトの名無しさん
2008/07/30(水) 01:47:560173デフォルトの名無しさん
2008/07/30(水) 01:54:16バカじゃねーよ?
0174デフォルトの名無しさん
2008/07/30(水) 01:58:23バカじゃねーよ?
0175デフォルトの名無しさん
2008/07/30(水) 01:59:310176デフォルトの名無しさん
2008/07/30(水) 02:01:29非推奨にはなってないな。型が一定でないコレクションでは使う。
まあList<object>でもいいっちゃいいけど。
0177デフォルトの名無しさん
2008/07/30(水) 02:19:19過疎ってるよな・・
0178デフォルトの名無しさん
2008/07/30(水) 03:01:58って思ってたらcomboBoxをtextBoxって書いてた。
0179デフォルトの名無しさん
2008/07/30(水) 03:09:12どんまい
ListとかDictionaryとか使いにくすぎるんだけど
誰かSTL風コレクションライブラリを作った神はいないの?
0180デフォルトの名無しさん
2008/07/30(水) 03:12:570181デフォルトの名無しさん
2008/07/30(水) 04:04:09LINQが分かってないんじゃないかね
0182デフォルトの名無しさん
2008/07/30(水) 04:31:52いきなりXP以降だからなぁ
趣味ならいいけど仕事では使えん…
0183デフォルトの名無しさん
2008/07/30(水) 07:13:14ターゲットが .NET 2.0 でも C# 3.0 使えるけどね。
ライブラリとか売ってるんなら、
Visual Studio 2005 使わざるを得ないとかもあるけども。
0184デフォルトの名無しさん
2008/07/30(水) 07:14:32C++ からこっちくると、
forward iterator 相当しかないのが不思議に感じるのよね。
まあ、foreach 使えりゃそれでいいやとか思い出すとどうでもよくなるんだけど。
0185デフォルトの名無しさん
2008/07/30(水) 19:05:00ってVisual Studioで設定した値に戻るんですか?
それともApp.configに書かれてる値になるんですか?
後者だとReload()と同じですよね
0186デフォルトの名無しさん
2008/07/30(水) 21:29:04型 'ValueList[System.String,System.String[]]' のオブジェクトを
型 'System.Collections.Generic.List`1[System.String[]]' にキャストできません。
という例外が起こるのですが、sortedlistの値だけを別のコレクションに取り出したいときはどうしたら良いのでしょうか?
0187デフォルトの名無しさん
2008/07/30(水) 21:30:030188デフォルトの名無しさん
2008/07/30(水) 21:30:330189デフォルトの名無しさん
2008/07/30(水) 21:31:120190デフォルトの名無しさん
2008/07/30(水) 21:40:32我ながらお恥ずかしいです
0191デフォルトの名無しさん
2008/07/30(水) 22:11:41stringに何が入っているのでしょうか?
たとえば、47だったら、Gになりますよね。
単純にASCII文字だったら00はNULということになりますよね?
stringの場合は、NULは何に相当するのでしょうか?
0192デフォルトの名無しさん
2008/07/30(水) 22:13:16C言語の場合だけど。
0193デフォルトの名無しさん
2008/07/30(水) 22:14:580194191
2008/07/30(水) 22:17:48なるほど、\0で処理したら上手くいきました。
本当にどうも有り難うございました。
0195デフォルトの名無しさん
2008/07/30(水) 22:33:49どうしてあんな意味不明な文章になるのだろうか
0196デフォルトの名無しさん
2008/07/30(水) 22:35:02本人が何がわかってないかをわかってない典型的なパターンじゃね?
0197デフォルトの名無しさん
2008/07/30(水) 23:58:01何文字が入っているかは分からないのです。後ろの方は全部0が入っているだけなので。
それを画面にデバッグ出力出来ればそれで十分な用件があったんです。
普通に、全部をstringにして表示しますよね。1行で書けるし。
それで出力したら、文字列の後ろの方に空白らしきものが沢山表示されるので、
まぁ、Trimで良いかと思ったんですが、どうやら空白ではないので、トリムできないと。
ということで、何をトリムするべきか知りたかったのです。
というか、NUL文字って何の役に立つのですか?
stringでNUL文字が入っていると、何か嬉しいことがあるのですか?
自動的に空白に置換されても良いと思うのですが‥‥
0198デフォルトの名無しさん
2008/07/30(水) 23:59:17だから文字列が入ってる場合に\0は文字列の終了を指すんだってば
C言語の場合
0199デフォルトの名無しさん
2008/07/31(木) 00:02:29長さ固定のバイト列の余りの部分にはどうしたってそれが入ってくるだろ
0200デフォルトの名無しさん
2008/07/31(木) 00:05:01だからC言語では「文字列の終端」として使ってたし、
固定長でデータ送る際に「文字のない場所に埋めておく値」として使う。
0201デフォルトの名無しさん
2008/07/31(木) 00:06:430202201
2008/07/31(木) 00:07:16それに1バイトコードの最初のほうは制御コードで文字としては成立しないからな。
0203デフォルトの名無しさん
2008/07/31(木) 00:10:58このような文があるんですが、string[].Length文だけ
foreachが回ってしまいます。
List.countは1なのにどうしてこうなるのでしょうか?
0204デフォルトの名無しさん
2008/07/31(木) 00:11:58そうはなりません
0205デフォルトの名無しさん
2008/07/31(木) 00:12:45意味わかんない。
とりあえず、元のコードそのまま貼って。
0206デフォルトの名無しさん
2008/07/31(木) 00:19:40もしかしてC#側でbyte配列を確保してライブラリ関数の引数に渡してる?
0207デフォルトの名無しさん
2008/07/31(木) 00:21:51//list[0]にだけstring[3]型の変数が入ってる
//string[] strArray
foreach (string[] strArray in list)
{
for(int i=0; i<2; i++)
{
Console.WriteLine(strArray[i]);
}
}
こうすると
strArray[0]
strArray[1]
strArray[2]
strArray[0]
strArray[1]
strArray[2]
strArray[0]
strArray[1]
strArray[2]
0208デフォルトの名無しさん
2008/07/31(木) 00:27:43i<2なのにstrArray[2]が出てくるわけ?
違うとこの出力が混ざってるんじゃないの
ちゃんとコピペしてよ
0209デフォルトの名無しさん
2008/07/31(木) 00:27:59これが間違いでlist[1]、list[2]にも入ってるかコードが3回実行されてるか
0210デフォルトの名無しさん
2008/07/31(木) 00:29:520211デフォルトの名無しさん
2008/07/31(木) 00:35:26byte[]の代わりにStringBuilderをライブラリ関数に渡せば一発解決するんじゃね?
まだいるなら、ライブラリ関数のシグネチャを晒してみてよ。
0212デフォルトの名無しさん
2008/07/31(木) 00:36:02foreach (string[] execValue in execListValues)
{
writer = execValue;
notice = writer[2] + "\n" + tri + " " + bbt
+ "\n数量:" + writer[5] + "\n" + writer[6];
export.write = writer;
export.trade = tri;
export.baibai = bbt;
showNotice(notice);
}
このshowNotice(notice);メソッドがexecValue.Length回実行されてしまうんです
0213212
2008/07/31(木) 00:38:59ブレークポイント入れて見てみましたが、execListValues.countは1でした
0214デフォルトの名無しさん
2008/07/31(木) 00:40:34foreach (string[] execValue in execListValues)
{
writer = execValue;
notice = writer[2] + "\n" + tri + " " + bbt
+ "\n数量:" + writer[5] + "\n" + writer[6];
export.write = writer;
export.trade = tri;
export.baibai = bbt;
showNotice(notice);
count++;
}
Console.WriteLine(count);
こうしてみ
0215212
2008/07/31(木) 00:45:52showNotice()は画面に表示するメソッドなので
notice = writer[2] + "\n" + trihiki + " " + bbt
+ "\n数量:" + writer[5] + "\n" + writer[6] + "円\n" + count.ToString();
としてみたんですが
全ての表示で0でした
0216デフォルトの名無しさん
2008/07/31(木) 00:47:51次はshowNotice()の中身だ。
0217212
2008/07/31(木) 00:58:34foreachを動かしてるメソッドをtimerで起動しているんですが、
インターバルが小さすぎて次のメソッドに追いつかれてしまったみたいです。
timer1.Intervalを大きくしたら正常な動作になりました。
ありがとうございます。
すみませんでした。
showNoticeはこうなってます
private void showNotice(string notice)
{
notifyIcon1.BalloonTipText = notice;
notifyIcon1.BalloonTipIcon = ToolTipIcon.Info;
notifyIcon1.ShowBalloonTip(Properties.Settings.Default.PopTime);
System.Threading.Thread.Sleep(Properties.Settings.Default.PopTime);
notifyIcon1.Dispose();
}
0218デフォルトの名無しさん
2008/07/31(木) 00:59:550219デフォルトの名無しさん
2008/07/31(木) 01:03:21その説明とそのコードからは、潜在的なバグの存在をひしひしと感じるんだが……
そこまでは、ここではフォローしきれん。
0220デフォルトの名無しさん
2008/07/31(木) 01:04:440221212
2008/07/31(木) 01:19:22ちょっと把握が難しくなってきました。
このメソッドもbackgroundWorkerの中でやってたりします。
どんな所が悪いのかよろしかったら教えてください
経験が浅くてよく分かりません
0222デフォルトの名無しさん
2008/07/31(木) 01:49:04backgroundWorkerを使っているなら、Timerを使う必要はない。
たとえば、backgroundWorker_DoWorkの中で、
while (...)
{
// ほぼ一定間隔でやりたい処理
0223デフォルトの名無しさん
2008/07/31(木) 01:50:18>>221
backgroundWorkerを使っているなら、Timerを使う必要はない。
たとえば、backgroundWorker_DoWorkの中で、
while (...)
{
// ほぼ一定間隔でやりたい処理
Thread.Sleep(1000);
}
とでもすれば、大体一定間隔で処理ができる上に、追いつきを考慮する必要も
なくなるだろ。
0224デフォルトの名無しさん
2008/07/31(木) 01:57:44> notifyIcon1.Dispose();
これは無駄。バルーンはShowBalloonTip()で指定した時間がたてば自動的に消えるから、
わざわざSleepしたりDisposeする必要はない。
というか、notifyIcon1を破棄してしまったら、次に使うときどうするんだ?
あと、これが一番肝心なところなんだけど、こういうコードから推測できるのは、
あなたはクラスの仕様を把握していない。つまり、よくドキュメントを読んでいない、ということ。
どんなクラスにしても、きちんとドキュメントを読んで、仕様を把握して使うようにしないと、
いずれ根深いバグに悩まされることになる。
0225デフォルトの名無しさん
2008/07/31(木) 07:18:39回答者の方々いつもサンクスです。
自分も趣味グラマーなもんでクラス設計の仕方を全然わかってなかったり…。
どうしても動けばいいや適なコードになってしまう。
0226デフォルトの名無しさん
2008/07/31(木) 09:47:32Win32APIで生成するしかないのでしょうか。
0227デフォルトの名無しさん
2008/07/31(木) 09:59:03なるほど、目から鱗です
一定間隔の処理はtimer使うものだと思い込んでました
>>224
Disppose()はどうしてもバルーンが消えないから投げやり的に書いてしまったものです
クラスの仕様を把握していないのは確かにそうです
MSDNは冗長的だったり、概念的なものしか書いて無かったり、
どんな動作するのかわかりにくいです。
しかも鯖が重くてアクセスするのも大変で・・・
非常に参考になりました
次からは気をつけたいと思います、ありがとうございます
0228デフォルトの名無しさん
2008/07/31(木) 10:02:15Popupイベント
0229デフォルトの名無しさん
2008/07/31(木) 10:02:41あとConsole.WriteLineはFormアプリでもVSの出力ウインドウに表示されるぜ
0230デフォルトの名無しさん
2008/07/31(木) 10:07:28表示位置を指定したいので.Showを使っていますが
popupでも可能でしょうか。
0231デフォルトの名無しさん
2008/07/31(木) 10:09:360232デフォルトの名無しさん
2008/07/31(木) 10:15:56焦ってしまいました…。
0233デフォルトの名無しさん
2008/07/31(木) 10:29:06そんなにHDD余ってません><
0234デフォルトの名無しさん
2008/07/31(木) 10:36:590235226
2008/07/31(木) 11:44:100236デフォルトの名無しさん
2008/07/31(木) 12:30:51あれコンソールも出るんだっけか?
Trace使う方がいい気もするが…
0237デフォルトの名無しさん
2008/07/31(木) 12:40:410238デフォルトの名無しさん
2008/07/31(木) 12:47:19さらに以下の2行を追加すると、ファイルとコンソールに出力してくれるようになる
Windowsアプリケーションの場合2行目は無効だが
Trace.Listeners.Add(new TextWriterTraceListener(Application.ExecutablePath + "trace.txt"));
Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));
0239デフォルトの名無しさん
2008/07/31(木) 12:50:020240デフォルトの名無しさん
2008/07/31(木) 22:13:21StreamReaderを使ってstring変換という手順を挟まずにファイル出力って出来ませんか?
0241デフォルトの名無しさん
2008/07/31(木) 22:24:45ふらっと的には WebClient の DownloadFile でも
0242デフォルトの名無しさん
2008/07/31(木) 22:27:51using (Stream rs = webResponse.GetResponseStream())
using (FileStream ofs = File.OpenWrite(...))
{
byte[] buf = new byte[ 1024 * 8 ];
while (true)
{
int len = rs.Read(buf, 0, buf.Length);
if (len == 0) { break ; }
ofs.Write(buf, 0, len);
}
}
でも最適解は>>241の言うとおりWebClient.DownloadFile()だと思う。
0243デフォルトの名無しさん
2008/08/01(金) 19:45:20現在、1個のソリューションに複数のプロジェクトを作成する予定にしています。
その中で複数のプロジェクトから呼ばれるユーティリティ的なクラス群を準備する予定です。
その場合、どこにそれらのクラス群を作るべきでしょうか?
VC#2008のソリューションエクスプローラでは、プロジェクトの中にフォルダは作れるようですが、ソリューション直下にはフォルダが作れないようです
よろしくお願いいたします
0244デフォルトの名無しさん
2008/08/01(金) 19:55:380245デフォルトの名無しさん
2008/08/01(金) 19:57:20プロジェクト
0246デフォルトの名無しさん
2008/08/01(金) 20:18:42どうやって作るのが一番楽ですか?
RichTextBoxのTextChangedを使うのが普通ですか?
それとも他にC#で使えるシンタックスハイライトに対応した
テキストコンポーネントがあるのでしょうか?
0247デフォルトの名無しさん
2008/08/01(金) 20:29:38codeproject.comにいくつかサンプルがあるよ。
http://www.codeproject.com/KB/cs/shadyrichtext.aspx
http://www.codeproject.com/KB/edit/SyntaxHighlighting.aspx
0248デフォルトの名無しさん
2008/08/02(土) 13:06:26すごく基本的なこと聞かせてください
msdnの見方なのですが、クラスに存在するメソッドやクラスの推奨、非推奨などはどこを見ればいいのでしょうか?
たとえば、Stringを調べているのですが、
http://msdn.microsoft.com/ja-jp/library/system.string.aspx
を見ても、Stringに存在するメソッドがよくわかりません
また、コレクションはList、List<>、ArrayListなどありますが、どれが推奨なのかよくわかりません
よろしくお願いいたします
0249デフォルトの名無しさん
2008/08/02(土) 13:10:28その下のほうにある string メンバ のページにメンバ(メソッド、プロパティ、イベント)の一覧がある
非推奨になってるものは解説にはっきりそう書いてあるからそんなに気にしなくていい
コレクションは特に理由がなければSystem.Collections.Generic名前空間の中にあるものを使う
0250デフォルトの名無しさん
2008/08/02(土) 13:11:23msdnが一瞬毎日新聞英語サイトのmdnにみえてドキッとした
0251デフォルトの名無しさん
2008/08/02(土) 13:19:190252デフォルトの名無しさん
2008/08/02(土) 13:23:05あれって内容は同期してることは保証されてるのかな?
0253デフォルトの名無しさん
2008/08/02(土) 13:28:08>>248
左のツリーに「String メンバー」があるし、そのページのコンテツツにも
そこへのリンクがちゃんと存在している。
この書式は基本的にはローカルのMSDNライブラリでも変わらない。
推奨・非推奨の区別の表示は定型化されてない。
ただ、本文には「旧式だからこっちを使え」とか、「こっちを使うことを推奨する」
と明示してあることも多い。
0254デフォルトの名無しさん
2008/08/02(土) 13:32:35出てこなかったっけ?
0255デフォルトの名無しさん
2008/08/02(土) 13:35:07なんで毎日新聞がでてくる
0256デフォルトの名無しさん
2008/08/02(土) 13:35:150257248
2008/08/02(土) 14:11:34おかげさまで助かりました
0258デフォルトの名無しさん
2008/08/02(土) 15:18:27継承クラスで変更できないのですが
こういう場合は素直にメソッドで変更するのが吉ですか?
public { get; protected set; } を public { get; set;
0259デフォルトの名無しさん
2008/08/02(土) 15:19:43public { get; protected set; } を public { get; set; }
にしたいのですがコンパイラに起こられるので
private { get; set; } public GetXXX(), protected SetXXX(hoge);
みたいにするしかないですかね?
0260デフォルトの名無しさん
2008/08/02(土) 15:20:04必要なら新しく作れば
0261デフォルトの名無しさん
2008/08/02(土) 15:23:130262261
2008/08/02(土) 15:24:38public new 型 XXX { get { return base.XXX; } set { なんかセットする処理 } }
0263デフォルトの名無しさん
2008/08/02(土) 15:31:27という関数があって、
listBox1.Items を引数に渡したいんだが
string[] files = new files[listBox1.Items.Count];
listBox1.Items.CopyTo(files);
Hoge(files);
としてるんだけど、もっとシンプルに書く方法ありますか?
0264デフォルトの名無しさん
2008/08/02(土) 15:33:33×string[] files = new files[listBox1.Items.Count];
○string[] files = new string[listBox1.Items.Count];
0265デフォルトの名無しさん
2008/08/02(土) 15:35:39>継承クラスで変更できないのですが
狭くすることは出来たよねたしか?
だったらそれを上手く使えばシャドウイング使わなくても出来そうだね。
っていうか昔やったことがあった気がする。
まあbaseクラスを弄れない場合はどうしようもないけど。
0266デフォルトの名無しさん
2008/08/02(土) 15:39:03普通にIEnumerableを引数にとってString[]を返すstaticメソッドを用意する。
0267デフォルトの名無しさん
2008/08/02(土) 16:52:15C#でコマンドラインから起動するときに、引数を取りたいのです。
Main関数があれば
static void Main(string[] args)
でよいのですが、GUIプログラムで、
namespace Program
{
public partial class Form1 : Form
{
private string appId;
public Form1()
{
InitializeComponent();
}
とかで始まる場合、どのようにしたらよいでしょう?
あと、その引数をテキストボックスにセットするには、
private void keywordTextBox_TextChanged(object sender, EventArgs e)
{
}
になんと書けば?
0268デフォルトの名無しさん
2008/08/02(土) 16:59:30Form1にそのargsを渡しておけばいい
keywordTextBox.Text = args[i];
0269デフォルトの名無しさん
2008/08/02(土) 17:05:09private void keywordTextBox_TextChanged(object sender, EventArgs e)
{
keywordTextBox.Text = args[i];
}
はだめなんですけど、こちらはどうやって渡せばよいでしょう?
0270デフォルトの名無しさん
2008/08/02(土) 17:06:31Environment.GetCommandLineArgs() で取れる。
Main の args とはちょっと違うんだが(先頭に実行ファイル名が入る)。
0271デフォルトの名無しさん
2008/08/02(土) 17:13:33アクセスはこうする
string[] args = Environment.GetCommandLineArgs();
for (int i = 1; i < args.Length; i++)
{
args[i];
}
テキストボックスに値をセットする場合、TextChangedは関係ない
テキストボックスで変更された値を取得したいとき、TextChangedを使う
コマンドラインパラメータをテキストボックスにセットするなら以下のとおり
string[] args = Environment.GetCommandLineArgs();
textBox1.Text = string.Join(", ", args, 1, args.Length - 1);
0272デフォルトの名無しさん
2008/08/02(土) 17:16:18おいらならエントリポイントのクラスにプロパティ用意するかな
0273デフォルトの名無しさん
2008/08/02(土) 17:23:50private void keywordTextBox_TextChanged(object sender, EventArgs e)
{
string[] args = Environment.GetCommandLineArgs();
keywordTextBox.Text = string.Join(", ", args, 1, args.Length - 1);
}
としてビルドは正常に終了しました。
しかしっ!
bin\Release>amazon.exe 岡本玲[リターン]
としてみましたが(アマゾンで検索するソフトを作ってます)、検索用のテキストボックスには文字列入らないです…。
0274デフォルトの名無しさん
2008/08/02(土) 17:27:06public class Foo
{
public static Foo Create()
{
Foo foo = new Foo();
string[] args = Environment.GetCommandLineArgs();
...
return foo;
}
}
0275デフォルトの名無しさん
2008/08/02(土) 17:30:42TextChangedから離れろww
string[] args = Environment.GetCommandLineArgs();
keywordTextBox.Text = string.Join(", ", args, 1, args.Length - 1);
以上をFormのコンストラクタに書いてもう一度試してみたらいいよ
0276デフォルトの名無しさん
2008/08/02(土) 17:33:060277デフォルトの名無しさん
2008/08/02(土) 17:56:43コンストラクタ(初耳)とは、いちばん先頭のことですね。
「クラスのオブジェクトを作成するときに呼び出す特別なメソッドのこと」(勉強中)。
public Form1()
{
InitializeComponent();
string[] args = Environment.GetCommandLineArgs();
keywordTextBox.Text = string.Join(", ", args, 1, args.Length - 1);
}
として、できました!
で、ここでさらにボタン(goButton)を押す(検索を開始する)には?
0278デフォルトの名無しさん
2008/08/02(土) 18:00:16keywordTextBox.Textが空でなかったら、goButtonのClickイベントを呼び出す
0279デフォルトの名無しさん
2008/08/02(土) 18:03:48goButtonってアマゾンのサイトのボタンなんじゃね?
0280デフォルトの名無しさん
2008/08/02(土) 18:09:06ん?そうなのか?ってことはアプリの中身は何もできていない状態ってこと?
0281デフォルトの名無しさん
2008/08/02(土) 18:38:19「C# イベント呼び出し」「C# クリックイベント」で検索し、
public Form1()
{
InitializeComponent();
string[] args = Environment.GetCommandLineArgs();
keywordTextBox.Text = string.Join(", ", args, 1, args.Length - 1);
goButton.PerformClick();
}
としてみましたが、待てど暮らせどクリックできず…。
いや、アプリの中身はできてて動いてますよ〜。
手動でキーワードを入れて、〔検索〕ボタン(名前はgoButton)を押せば、Amazonを検索できてます。
0282デフォルトの名無しさん
2008/08/02(土) 18:57:30なんでもかんでもコンストラクタに書けばいいってもんじゃないぞ。
FormのLoadイベントに書いてみ
0283デフォルトの名無しさん
2008/08/02(土) 19:19:24あとは引数のないときのif文について。
string[] args = Environment.GetCommandLineArgs();
if (args != null)
{
keywordTextBox.Text = string.Join(", ", args, 1, args.Length - 1);
}
で、ビルドはできるようになりました。
bin\Release>amazon.exe 岡本玲[リターン]
で、検索して起動も完璧!(大感謝です)。
が、
bin\Release>amazon.exe[リターン]
だと、引数を設定しろとのパネルが出ちゃいます。
0284デフォルトの名無しさん
2008/08/02(土) 19:27:36どの行でエラーが発生してるのか把握できてる?
ブレークポイントの設定やステップ実行のやり方はわかる?
で、tryとcatchについて調べてみよう。
0285デフォルトの名無しさん
2008/08/02(土) 19:37:50まず引数の数や中身を確認しろという話だ
0286デフォルトの名無しさん
2008/08/02(土) 19:39:51どの行でエラーが起きているか把握してません(よわい…)
ちょっと飯食ってきます。
0287デフォルトの名無しさん
2008/08/02(土) 20:02:19上のほうのツールバーにリリースになってるところがあるからクリックしてデバッグに変えてみ
それからコマンドラインの引数はプロジェクトのプロパティで設定できる
プロジェクトツリーの根元の項目を右クリックしてプロパティ
0288デフォルトの名無しさん
2008/08/02(土) 20:06:20{
string[] args = Environment.GetCommandLineArgs();
if (args.Length != 1)
{
keywordTextBox.Text = string.Join(", ", args, 1, args.Length - 1);
goButton_Click(this, EventArgs.Empty);
}
}
private void goButton_Click(object sender, EventArgs e)
{
// 検索処理
}
0289デフォルトの名無しさん
2008/08/03(日) 00:02:02Stringで渡した方がいいでしょうか?Char[]で渡した方がいいのでしょうか?
0290デフォルトの名無しさん
2008/08/03(日) 00:06:370291デフォルトの名無しさん
2008/08/03(日) 00:18:15あるあ・・・ねーよwww
0292デフォルトの名無しさん
2008/08/03(日) 00:28:39>>289
あくまで文字列操作なんだったら string 渡しとけ。
冗談抜きで「文字コードの配列」として以上の意味を全く持ってない場合なら char[] でもいいけど。
0293デフォルトの名無しさん
2008/08/03(日) 00:29:23どっちでも使いやすい方でいい気もするんだけど、
自分以外の人間も使うメソッドならStrigの方がいいんじゃないの?
char[]だといろいろ余計なチェックが必要になるじゃん。
0294デフォルトの名無しさん
2008/08/03(日) 00:32:24IEnumerable<char>だろjk
0295デフォルトの名無しさん
2008/08/03(日) 00:35:510296デフォルトの名無しさん
2008/08/03(日) 00:36:52いや人から見て面白いと思ってるんだろうか。
こういう下らないヲタ系プログラマは粛清してやりたいよまったく。
0297デフォルトの名無しさん
2008/08/03(日) 00:38:46お前みたいなやつのほうがウザイさ加減が上。
0298289
2008/08/03(日) 01:06:07今のところは自分だけで使うのでStringにしておきます。
0299デフォルトの名無しさん
2008/08/03(日) 01:28:330301マジで初心者
2008/08/03(日) 02:50:32どのような関数?を使用したらよいのですか?
0302デフォルトの名無しさん
2008/08/03(日) 04:19:440303デフォルトの名無しさん
2008/08/03(日) 04:48:30あるある。意味もなく間口の広いメソッドを作って、自分しか使わないとか。
0304デフォルトの名無しさん
2008/08/03(日) 05:13:36FileSystemWatcherだと、完了までは確認できないみたいで。。。
とある掲示板では、コピー中だとファイルが開けないので、
開けるようになるまで試行して、開けたら完了とみなす。みたいな事が
書かれていたのですが、他の方法は無いものでしょうか?
0305デフォルトの名無しさん
2008/08/03(日) 07:05:12Processクラスでcopyコマンドの完了まで待機するんじゃだめなの?
0306デフォルトの名無しさん
2008/08/03(日) 09:32:12>>284
try-catchは、エラーが予測されるある処理を実行して、エラーが出たら別の処理に移るもので、今回は、そのcatchがエラーを出している、ということはたぶんわかっています。
ブレークポイントとステップ実行は、まだこれからです。ちょっとアップアップです。
>>285
ふむふむ。
>>287
ふむふむ。え〜と、たぶんいまのところずっとデバッグモードでコンパイルしていると思います。っていうか、違いがあることを知りました。
ツールバーは使ったことがなかった…。リリース/デバッグ切り替えは見つからなかったのですけど、オプションの設定とかが必要なんでしょうかね。
コマンドラインの引数はプロパティで設定できるんですか!
おお、なんかいろいろ設定できますね。
>>288
これかっ! できました。ありがとうございます。
0307デフォルトの名無しさん
2008/08/03(日) 09:40:060308デフォルトの名無しさん
2008/08/03(日) 09:51:22で、さらに質問。
bin\Release>amazon.exe 岡本玲[リターン]
のときはばっちり動くのですが、
bin\Release>amazon.exe filename.txt[リターン]
として、
filename.txt
岡本玲[リターン]
仮面ライダーキバ[リターン]
とする場合に、その個々の要素で検索するには、たぶん配列の理解が必要、ということでよいんですよね?
ほかにあとはファイルIOも必要か。
このあいだファイルを読んで、行番号をつける、というのを書けたので、行番号の代わりに、amazon.exeと書けばよいわけだから…。
if arg[0] == *.txt
{
readline ://ファイルを読む処理
writer.WriteLine("{0}\t{1}", "amazon.exe ",lines);
//作ったファイルを実行!
}
else
{
//いまの処理
}
とかでよいと思います。
Q ifの条件って、これでよい?
Q これ、テンポラリーのファイルを作らなくても実行できるものですか?
0309デフォルトの名無しさん
2008/08/03(日) 09:58:42じゃあ、初心者用と名乗ってるこのスレは、2ちゃんで嫌われ者なんだね。
0310デフォルトの名無しさん
2008/08/03(日) 10:07:03・Path.GetExtension()
・File.Exists()
・FileStream→StreamReader.ReadLine()
・Process.Start()
0311デフォルトの名無しさん
2008/08/03(日) 10:39:220312デフォルトの名無しさん
2008/08/03(日) 12:32:02要求仕様には忠実だなwww
>>308
「//いまの処理」の所を、検索ワードを引数に取る関数として切り出す。
・ファイルが渡された場合、1行ずつ取得して↑の関数に一つずつ渡して処理させる。
0313デフォルトの名無しさん
2008/08/03(日) 12:47:280314デフォルトの名無しさん
2008/08/03(日) 12:55:210315デフォルトの名無しさん
2008/08/03(日) 13:52:40{
public String Show() { return hoge(); }
protected String hoge() { return "B";}
}
class C:B
{
protected String hoge() { return "C";}
}
で
(new C).Show() がCを返すにはどのようなキーワードを使えばいいんですか?隠蔽するならnewを使えってIDEはいってるけど・・・
それともこの場合はabstruct class Aの中でabstruct String hoge()とpublic String hoge()を用意した方がいいんでしょうか?
0316デフォルトの名無しさん
2008/08/03(日) 13:57:050317デフォルトの名無しさん
2008/08/03(日) 13:57:180318デフォルトの名無しさん
2008/08/03(日) 14:28:140319デフォルトの名無しさん
2008/08/03(日) 15:00:49>>318 残念。デルフィアン(?)です。Delphi.netは糞です。クラス名にTがつかないDelphiなんてDelphiじゃありません。
0320デフォルトの名無しさん
2008/08/03(日) 15:50:510321デフォルトの名無しさん
2008/08/03(日) 17:34:11HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
Uri uri = new Uri(url);
CookieContainer cook = new CookieContainer();
//ここでcookieを追加したい。
req.CookieContainer = cook;
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
サーバーから受け取って保存するんじゃなくて、pythonでいう
cookie_value = 'NAME="a"; MAIL="a"; PON="***";'
req = urllib2.Request(req_url)
req.add_header('Cookie', cookie_value)
みたいなことがしたい。
0322デフォルトの名無しさん
2008/08/03(日) 17:42:13cook.SetCookies(uri,cookieheader);
0323デフォルトの名無しさん
2008/08/03(日) 20:19:40using System.Text;
using System.Collections.Generic;
using System.IO;
string[] args = Environment.GetCommandLineArgs();
List<string> list = new List<string>(args.Length);
for (int i = 1; i < args.Length; i++)
{
if (File.Exists(args[i]))
{
list.AddRange(File.ReadAllLines(args[i], Encoding.GetEncoding("shift-jis")));
}
else
{
list.Add(args[i]);
}
}
keywordTextBox.Text = string.Join(" ", list.ToArray());
goButton_Click(this, EventArgs.Empty);
0324デフォルトの名無しさん
2008/08/03(日) 20:32:50if (StringComparer.CurrentCultureIgnoreCase.Equals(File.GetExtension(args[i]), ".txt") && File.Exists(args[i]))
{}
Q これ、テンポラリーのファイルを作らなくても実行できるものですか?
できる
0325デフォルトの名無しさん
2008/08/03(日) 21:16:16起動したFormを常に先頭(IEより前に)に出すのは可能でしょうか?
0326デフォルトの名無しさん
2008/08/03(日) 21:23:54SetParentは別プロセス禁止って明記されてるからなぁ
0327デフォルトの名無しさん
2008/08/03(日) 21:25:440328デフォルトの名無しさん
2008/08/03(日) 22:09:54できました
ありがとうございます
0329デフォルトの名無しさん
2008/08/04(月) 05:59:35今MSDNライブラリを確認したけど、そんなこと書いてないぞ。
0330デフォルトの名無しさん
2008/08/04(月) 06:19:53> 新しい親ウィンドウと子ウィンドウは、同一アプリケーションに属していなければなりません。
0331デフォルトの名無しさん
2008/08/04(月) 06:38:290332デフォルトの名無しさん
2008/08/04(月) 09:15:07キーワード表示や行番号表示に対応したものってありますか?
今までに見つけたものだと、キーワードが1色しか設定できなかったり
行番号に対応していなかったりしていたんですが。
0333デフォルトの名無しさん
2008/08/04(月) 15:21:09GPLだけどw
0334デフォルトの名無しさん
2008/08/04(月) 17:11:06ButtonなどからhogeForm.Close()とか呼び出すにはどうしたら良いのでしょうか?
Application.Doevents()を書いてみたりしたのですが、効果はありませんでした
0335デフォルトの名無しさん
2008/08/04(月) 17:33:42そもそも普通はGUIは全てGUIスレッド一つで扱うもんだが何故別スレッドにした?
0336デフォルトの名無しさん
2008/08/04(月) 18:03:26メインスレッドは極力軽くしたいと思って、別のスレッドでnewしてたんですが、
GUIの処理はメインスレッドに戻ってやるものだったんですね。
ありがとうございます
0337デフォルトの名無しさん
2008/08/04(月) 22:04:59によると、Main()のアクセス修飾子をpublicにしてはならないそうなのですが、
どうしてでしょうか?
0338デフォルトの名無しさん
2008/08/04(月) 22:08:10小学生でも考えればわかるじゃん。
0339デフォルトの名無しさん
2008/08/04(月) 23:10:20ここを参考にwmpでサウンドファイルの再生をしようとしているのですが、
音が出ません。
具体的にはthis.mediaPlayer.controls.play();
で以下の例外がプロパティに代入されています(何故かスローされない)。
どうすれば再生できるのでしょうか。
{"型 'WMPLib.WindowsMediaPlayerClass' の COM オブジェクトを
インターフェイス型 'WMPLib.IWMPPlaylist' にキャストできません。
IID '{D5F0F4F1-130C-11D3-B14E-00C04F79FAA6}'
が指定されたインターフェイスの COM コンポーネント上での
QueryInterface 呼び出しのときに次のエラーが発生したため、
この操作に失敗しました: インターフェイスがサポートされていません
(HRESULT からの例外: 0x80004002 (E_NOINTERFACE))。"}
0340デフォルトの名無しさん
2008/08/05(火) 00:35:09その弊害を教えろって琴田と思うぞ、うん
0341339
2008/08/05(火) 00:57:38アパートネントモデルがSTAである必要があるんですね・・・
BeginInvokeで呼び出したメソッドからInvokeするのっておかしくないですよね?
0342デフォルトの名無しさん
2008/08/05(火) 20:17:02任意のノードをインデックスで選択状態にしたいのですが、やり方がわかりません。
treeView1.SelectedNode.Indexにインデックスを直接代入しようとしたら、
『読み取り専用』だと言われました。悲しいです。
0343デフォルトの名無しさん
2008/08/05(火) 20:32:05むしろ遅いって事?
0344デフォルトの名無しさん
2008/08/05(火) 21:19:22大丈夫。悪い方向への変化は感じない。
0345デフォルトの名無しさん
2008/08/05(火) 21:23:22TreeView.Nodesの中からインデックスでTreeNode取得してTreeView.SelectedNodeに代入
つかTreeViewは階層があるからインデックスっつってもどんなの指してんのかよく分からんが
0346デフォルトの名無しさん
2008/08/06(水) 08:26:37これをリセットするにはどうしたらいいのでしょうか?
具体的には開業後にも直前にあった文章の位置までスクロール出来てしまい、
意味の無い余白を表示出来てしまいます。
これはnotepad.exeでも変わらないので、Windowsの仕様と言う事になるのでしょうか?
0347デフォルトの名無しさん
2008/08/06(水) 09:55:49つ RichTextBox
0348デフォルトの名無しさん
2008/08/06(水) 11:35:45意味が分からん。
具体例で頼む。
0349デフォルトの名無しさん
2008/08/06(水) 12:29:043行分のMultiLineなTextBoxを作る。
改行を10回打つ。
BSを10回打つ。
スクロールエリアは10行分のままでスクロールバーも消えない。
ってことだろ?
ならTextBoxの仕様。自分で行数数えてフォントの高さをかけて表示・非表示を
制御するか。RichTextBox使う。
0350デフォルトの名無しさん
2008/08/06(水) 12:52:28すでに取り違えてるしw
横スクロールのほうでしょ。
縦はちゃんと動作するよ。
0351デフォルトの名無しさん
2008/08/06(水) 13:02:20すまん。その通りだ。
0352デフォルトの名無しさん
2008/08/06(水) 13:24:22質問するなら推敲して誤字は直せよ。
0353デフォルトの名無しさん
2008/08/06(水) 13:37:40最長の行が短くなってもこれを調整することは無い仕様、ということだろうね。
まあ行が短くなるたびに全行スキャンしなきゃならんし、このコントロールが
できたのは大昔だし、こんなもんなんじゃない?
全部消すとスクロールバー自体が消えるから、入れなおせばたんとなるけどな。
0354デフォルトの名無しさん
2008/08/06(水) 13:42:540355デフォルトの名無しさん
2008/08/06(水) 13:43:560356デフォルトの名無しさん
2008/08/06(水) 16:40:50リセットするにはどうしたらいい?
開業後にスクロール出来てしまい、
意味無いす。
これでWindowsになるの?
0357デフォルトの名無しさん
2008/08/06(水) 16:51:210358デフォルトの名無しさん
2008/08/06(水) 16:52:190359342
2008/08/06(水) 16:59:22ありがとうございます。できました。
階層ごとにインデックス振られてるから、全部いっぺんに指定できると思ったんですが、
一個ずつじゃないとできないんですね。
0360デフォルトの名無しさん
2008/08/06(水) 18:02:28というエラーがstringのSplitで出るんですが、定義を見てもインテリジェンスをみてもint countとあります。
なんでこのエラーが出るんでしょうか?
0361デフォルトの名無しさん
2008/08/06(水) 18:07:11第一引数の型が合ってないから想定外のオーバーロードになってる
0362デフォルトの名無しさん
2008/08/06(水) 18:23:240363デフォルトの名無しさん
2008/08/06(水) 18:35:49setting.Split( "=" ,2 , StringSplitOptions.RemoveEmptyEntries);
って感じです。'='でもやったんですが駄目でした。 インストールしくじってるんでしょうか。
Splitの定義を見てもあってると思うんですが。
0364デフォルトの名無しさん
2008/08/06(水) 18:38:32setting.Split('=', '2','o');
とかでビルドが通る・・・
0365デフォルトの名無しさん
2008/08/06(水) 18:51:44>setting.Split('=', '2','o');
は
setting.Split( new char[] {'=', '2','o'} );
と同義だろう。
ということで、"=" は new string[] {"="} かnew char[] {'='} あたりでどうか。
0366デフォルトの名無しさん
2008/08/06(水) 18:55:56おい、お礼はまだか
0367デフォルトの名無しさん
2008/08/06(水) 19:06:44お礼は当然すべきだと俺も思うし、質問だけしてトンズラする奴に腹が立つ気持ちも
わかるんだが、だからって「お礼しろ」ってのもなんだかなあw
回答する側だって本当の動機は「人に教えを垂れたい」っていうエゴなわけで、
それに気づかない奴ってのもかなり痛い奴だなあと個人的には思うんだよね。
あとdobonさんのとこの掲示板なんかでマルチポストを執拗に報告してる奴とかさあw
0368デフォルトの名無しさん
2008/08/06(水) 19:09:16おおう、できました。
ありがとうございました。
0369デフォルトの名無しさん
2008/08/06(水) 19:09:44回答が役に立ったかどうかは気になるから、報告があると安心するけどね。
0370デフォルトの名無しさん
2008/08/06(水) 19:35:40Static消した途端にあほみたいに重くなるのって理由あるんでしょうか?
0371デフォルトの名無しさん
2008/08/06(水) 19:39:39たぶん、というより確実に、重くなった原因は他にあると思う。
0372デフォルトの名無しさん
2008/08/06(水) 19:44:280373デフォルトの名無しさん
2008/08/06(水) 21:10:01IList<decimal> list = new List<decimal>();
list.add....
とか書いて作成したlistをソートしたいと考えています
decimalですので単に大小を比較してソートするだけなのですが、IList<T>型にはSortとかいうメソッドはないのでしょうか?
APIみてもよくわかりません
よろしくお願いいたします
0374346
2008/08/06(水) 21:19:07何か知らぬ間に話が膨らんでるようで申し訳ないです
RichTextBoxを使えば取りあえずの要求は満たされるんですね。
ありがとう
0375デフォルトの名無しさん
2008/08/06(水) 21:19:53IListとListは違うよ
0376デフォルトの名無しさん
2008/08/06(水) 21:22:19&&と&の違いって何なのでしょうか?
0377デフォルトの名無しさん
2008/08/06(水) 21:30:580378デフォルトの名無しさん
2008/08/06(水) 21:31:490379デフォルトの名無しさん
2008/08/06(水) 21:35:05がif (A && B)って事ですか
C & C = true
って事ですね
0380デフォルトの名無しさん
2008/08/06(水) 21:45:45>if (A){if (B)}がif (A && B)って事ですか
そいう言うこと
>C & C = true
どういうこと?
A && B は(Aがfalseのとき)Bを評価しない分高速だが、Bが実行されるときとされないときが出てくる。
たとえば、Bがobj.Close()というメソッドだった時 obj.Close()が呼び出されない場合がある。
それに対し&は処理が遅い分、どの式も必ず評価される
0381デフォルトの名無しさん
2008/08/06(水) 21:53:08みたいにfunc2()が評価される事を意識して&が使われるのってどうなの?
第三者に対して分かりにくくね?
0382デフォルトの名無しさん
2008/08/06(水) 21:59:31なので俺だったらこうする
bool a = func1();
bool b = func2();
if (a && b ){}
0383デフォルトの名無しさん
2008/08/06(水) 22:24:05そういう風に書くと常にそう書かないと思い込む
教条主義的というか馬鹿の一つ覚えする奴が出るだろう。
0384デフォルトの名無しさん
2008/08/06(水) 22:42:120385デフォルトの名無しさん
2008/08/06(水) 23:16:00って書いておけば間違いないですか?
EventSetter使うべきですか?
イベントの自動生成はどうして無くなっちゃったんでしょうか、便利だったのに・・・
0386デフォルトの名無しさん
2008/08/07(木) 00:04:22それは言わない約束です><
0387デフォルトの名無しさん
2008/08/07(木) 00:33:26上記のソースの<FutureData>の<>ってなんですか?
()は引数だってのはわかるんですが、<>はなに?
0388デフォルトの名無しさん
2008/08/07(木) 00:40:01この程度であわててたらLinqでどうなるかわからんね。
0389デフォルトの名無しさん
2008/08/07(木) 00:48:24DragOverやDropイベントをMSDNで引く
→イベントのデリゲートの型がわかる
→今度はそのデリゲートのページを見る
→適切な引数がわかる
0390デフォルトの名無しさん
2008/08/07(木) 00:59:13コントロールの要素内にイベント名入れたらインテリセンス出てきました。
すみませんでした
0391デフォルトの名無しさん
2008/08/07(木) 01:03:49[Ctrl]+[Key.hoge]を判別するにはどうしたらいいのでしょうか?
System.Windows.Forms.KeyEventArgsでは、
e.ControlでCtrlキー、e.AltでAltキーの押下が判別できましたが・・・
0392デフォルトの名無しさん
2008/08/07(木) 01:17:27>>375
msdn読んで、IList<T>にはSortメソッドが存在せず、List<T>にはSortメソッド存在することは理解しました。
しかし、なぜIList<T>にSortが存在しないのかやはりわかりません
IList<T>の解説を読むと
「IList<(Of <(T>)>) ジェネリック インターフェイスは、ICollection<(Of <(T>)>) ジェネリック インターフェイスの子孫であり、すべてのジェネリック リストの基本インターフェイスです。」
とあります
それなのに、SortメソッドがIList<T>になくList<T>にだけあるのはいまいちぴんときません
そもそも、基本的な質問なのですが、リスト構造を使いたい場合
List<XX> list = new List<XX>
という書き方は間違いなのでしょうか?
インタフェースが存在するなら、生成は実際のクラスで行うにせよ、アクセスはインタフェースを介して行うのが常識だと思っていましたが、違うのでしょうか?
ついでに、さらに質問ですが、IList<T>のAPI読んでも、IList<T>の実装クラス一覧が見当たりません
この辺はどこを見れば良いのでしょうか?
何度もすみませんが、よろしくお願いいたします
0393デフォルトの名無しさん
2008/08/07(木) 02:36:54だから、List<>とIList<>は名前が似てるだけで他に特別な関係があるわけじゃねーんだよ。
0394デフォルトの名無しさん
2008/08/07(木) 02:38:25> インタフェースが存在するなら、生成は実際のクラスで行うにせよ、
> アクセスはインタフェースを介して行うのが常識だと思っていましたが、違うのでしょうか?
どこで聞きかじった知識なのか知らんが、そんな常識は捨ててくれ。今すぐ。
0395デフォルトの名無しさん
2008/08/07(木) 02:46:09MSDN読むとList<T>はIList<T>の実装のように見えますけど、違うのでしょうか?
>>394
じゃ、なんのため、インタフェースがあるのでしょうか?
0396デフォルトの名無しさん
2008/08/07(木) 02:52:040397デフォルトの名無しさん
2008/08/07(木) 03:04:28実際にはそこから派生したListやDictionaryなんかを使うものでしょ?
0398デフォルトの名無しさん
2008/08/07(木) 03:12:49そう。IList<>はただのList<>の親クラス。
お前はどんなクラスでもObjectにキャストしてから使うのか。
0399デフォルトの名無しさん
2008/08/07(木) 03:16:43ぶんまわすだけならその使用法で問題ないと思うが
Sortしたいならそのようなinterfaceを持つものを使うしかないよ
自作でも何でも
0400デフォルトの名無しさん
2008/08/07(木) 03:56:28まあListならSortを使ったほうが効率的だろうけど
0401デフォルトの名無しさん
2008/08/07(木) 05:15:12ソートはリスト(クラス名とかじゃなくて概念そのものね)の構成要素じゃないし、
IList<T>を最小構成にしたかったのでは
インターフェイスは必要だから/必要と考えられたからあるのであって、
必要がなければ無理に使わなくてもいいし、その必要性が理解できていないレベルなら
使うという選択肢自体削っていいと思う
0402デフォルトの名無しさん
2008/08/07(木) 05:22:480403デフォルトの名無しさん
2008/08/07(木) 06:20:130404デフォルトの名無しさん
2008/08/07(木) 06:55:59> それなのに、SortメソッドがIList<T>になくList<T>にだけあるのはいまいちぴんときません
インターフェイスはその機能を実現する最小限の機能セットであるべきだから
IListにSortメソッドが含まれると、IListを実現するすべてのクラスでSortを実装しなければならなくなり、使い回しにくくなってしまう
車が運転できますといった場合、カーナビの操作までは含まれないような感じ
> インタフェースが存在するなら、生成は実際のクラスで行うにせよ、アクセスはインタフェースを介して行うのが常識だと思っていましたが、違うのでしょうか?
局所的に使うだけなら意味ないよ
メソッドの引数、戻り値、クラスのプロパティやフィールドなどで使うなら意味がある
たとえば、メソッドの引数として使えば、以下のように、Listや他のIListから派生したクラスが使えて便利になる
ただし、この場合はIEnumerable<T>を使えばもっと多くの種類のコレクションクラスが使えるようになる
void DoSomething(IList<string> list)
{}
> ついでに、さらに質問ですが、IList<T>のAPI読んでも、IList<T>の実装クラス一覧が見当たりません
> この辺はどこを見れば良いのでしょうか?
リフレクションを使って自分で調べるしかない。俺は自作の検索ツールを使ってる
0405デフォルトの名無しさん
2008/08/07(木) 07:14:28if (a != null && a.Foo())
{}
とかは普通に便利だろ
>>376
'&'は論理演算子じゃなくて、ビット演算子
Booleanを扱う'&&'とは根本的に違う
どっちかというと'+'とか'-'とかに近い
ビット演算子というのは、数字を2進数として扱い、ビットごとにANDをとったりする
010 & 011 = 010
010 & 101 = 000
というような計算を行うもの
[Flags]属性付きの列挙型でよく使う
0406デフォルトの名無しさん
2008/08/07(木) 07:18:29boolに対する&は論理演算だし
0407デフォルトの名無しさん
2008/08/07(木) 07:35:45bool型への'&'は1桁の2進数を処理するビット演算だから論理演算じゃないだろ
副作用の問題だって、論理演算のように見えるビット演算だから混乱を招きやすいわけで、
理解するまで'&&'だけ使っとけって言ってやればいいじゃん
なぜわざわざ初心者を混乱させようとするんだ
0408デフォルトの名無しさん
2008/08/07(木) 07:42:47IList<T> は、単に list[i] で要素を取れることだけ保証したインターフェース。
Sort は要件に入ってない。
どうしてもインターフェース化したいなら ISortable とかを別インターフェースにすべきだろう。
>>405
Perl ではよく使うけどね、短絡 &&, || の副作用を積極的に使うの。
ただ、C# ではコーディングマナーとしてはそれは良くないとされてるはず。
& がビット単位なのは C++。
C# の場合、違いは短絡評価の有無だけ。
a && b は
operator false(a) ? a : operatora & (a, b)
という挙動になる。
0409デフォルトの名無しさん
2008/08/07(木) 08:23:470410デフォルトの名無しさん
2008/08/07(木) 08:56:25おまえが混乱させてんだろーが
0411デフォルトの名無しさん
2008/08/07(木) 09:22:31偉そうに無意味な知識をひけらかして混乱させている連中のことを言ったわけだが
反応するところを見ると自覚はあったわけだw
0412デフォルトの名無しさん
2008/08/07(木) 09:35:27俺は>>406→>>407の流れに対して言っただけ。
うそ言ってるから混乱させてるのはお前だろっておもっただけ。
0413デフォルトの名無しさん
2008/08/07(木) 09:37:033行目は同意。
0414デフォルトの名無しさん
2008/08/07(木) 11:02:36スレッドが消える要件にはどんなものがありますか?
状況
・例外は起こっていません
・ブレークポイントをループ直後のにはさんでいますがそこまで進みません
0415デフォルトの名無しさん
2008/08/07(木) 11:09:000416414
2008/08/07(木) 11:09:33breakと書くところをreturnって書いてましたorz
0417デフォルトの名無しさん
2008/08/07(木) 11:12:060418デフォルトの名無しさん
2008/08/07(木) 16:37:54最近 DI を始めましたって感じかもしれないね。
あれ始めてすぐは何にでもインターフェイスがなければならないと思うようになって、
依存性が高かろうが低かろうが、標準ライブラリのクラスだろうがDIしないと気がすまないようになる。
一過性の病気というか麻疹みたいなものだ。
0419デフォルトの名無しさん
2008/08/07(木) 16:44:01どうやらもう一度Resizeが呼ばれるらしいのですがなんとかなりませんか
0420デフォルトの名無しさん
2008/08/07(木) 20:41:01とりあえずフラグ作って2回目の呼び出しを無視したら?
Resizeって無限に呼び出されずに2回だけ呼び出されるんだな……なんでだろ?
0421デフォルトの名無しさん
2008/08/07(木) 20:46:33サイズが変わったからってImageを弄る必要は普通はないはずだと思うけどな。
ところでふと思ったが、ResizeとSizeChangedって何が違うんだっけ?
0422デフォルトの名無しさん
2008/08/07(木) 21:37:18SizeChangedイベントを使うとうまくいきました
ありがとうございます
0423デフォルトの名無しさん
2008/08/07(木) 21:43:17DI以前にプログラムそのものが始めてです(DIはつい最近知りました)
Java、C#、rubyを触ってます
色々な先生から話を聞きましたが、Collectionのような外部とのやり取りが決まっていて内部の実装方法にたくさんのやり方がある場合インタフェースは有効な手段だと感じています
とりあえず、List<T>はインタフェースを介さずアクセスする方向で進めていきます
0424デフォルトの名無しさん
2008/08/07(木) 22:08:15Sort が必要なら List<T> そのまま使えばOK。
0425デフォルトの名無しさん
2008/08/07(木) 22:14:470426デフォルトの名無しさん
2008/08/07(木) 22:17:13逆に、
List<T>というただ一つの実装方法を使う時には
インターフェイスは不要な手段ということでは?
0427デフォルトの名無しさん
2008/08/07(木) 22:54:49まだ未熟な人間ですが、たとえ、実装が1個しかなくても、リストのような提供する機能がはっきりしていて、実装方法が複数考えられる場合インタフェースでアクセスすることが望ましいと考えています
リスト構造は実装方法が色々と考案されており、これから新たにList<T>と同等の機能を提供する別の実装が提供される可能性があります(もしくは自作する可能性もあります)
その場合、使用するクラスを変更した場合、インタフェースを介してアクセスしていれば、インスタンス生成部を変更するだけで修正が終わるなどの利点があると考えています
0428デフォルトの名無しさん
2008/08/07(木) 23:00:320429デフォルトの名無しさん
2008/08/07(木) 23:06:35std::sort(random_access_iterator begin, random_access_iterator end)
よね。
ただし、std::list なんかは、↑ランダムアクセスイテレータ持ってないけども
list 専用のアルゴリズムでソート可能なんで list::sort を持ってる。
C# もそれに則ってるんじゃないのんだろうか。
整列は Array.Sort とか Enumerable.OrderBy を使うのが基本で、
List<T>.Sort は List<T> 専用のアルゴリズムのソート。
0430デフォルトの名無しさん
2008/08/08(金) 00:07:59インターフェース越しの呼び出しは遅いからなあ
配列にコピーしてからやったほうが早そう
0431デフォルトの名無しさん
2008/08/08(金) 00:43:330432デフォルトの名無しさん
2008/08/08(金) 01:15:35細かすぎる粒度は、全体の見通しを悪くして、仕様を複雑化させるだけだと思うんだ。(要はバランス)
もし自分が納得いかない場合は、納得できる物を自分で作れば良い。
君以外の大多数の人々は現状で満足している事を忘れるべきではない。
0433426
2008/08/08(金) 03:20:54今までの他の人たちのレスを繰り返すことになるかもしれないけど、
単にSort()を持ったインターフェイスが欲しいのならば、
ISortable を作れば良いし、
ISortableList : IList , ISortable みたいなインターフェイスを作ってみてもいいかもしれない。
List<T>と同等の機能の別実装ならば、
普通に継承してオーバーライドしてしまえば、ほとんど問題解決しない?
それ以上の可能性のために冗長な機能を付ける必要はないのでは?
あと、IList<T>自体はSynchronizedCollection<T>にも実装されているし、
「インデックスによって個別にアクセスできるオブジェクトのコレクションを表します。」
となっていて、そういうふうに設計されている。
List<T>.Sort()があるからIList<T>.Sort()を作れ、というのは不自然かなと思う。
0434デフォルトの名無しさん
2008/08/08(金) 03:30:39LINQはそれに気づかせてくれた
0435デフォルトの名無しさん
2008/08/08(金) 03:44:130436デフォルトの名無しさん
2008/08/08(金) 14:55:00class Exercise
{
static void main()
{
Console.Write("input a:");
int a = int.Parse(Console.ReadLine());
Console.Write("input b:");
int b = int.Parse(Console.ReadLine());
Console.Write(a + b);
Console.Write(a - b);
Console.Write(a * b);
Console.Write(a / b);
}
}
と入力すると
エラーをはくのですが、文法で間違っているところはどこでしょうか?
0437436
2008/08/08(金) 14:56:07static void main()の前などには空白を入れています
0438デフォルトの名無しさん
2008/08/08(金) 15:00:310439デフォルトの名無しさん
2008/08/08(金) 15:00:40多分読みもしてないんだろうね
0440デフォルトの名無しさん
2008/08/08(金) 15:02:20それと、
Console.Write(a + b);
Console.Write(a - b);
Console.Write(a * b);
Console.Write(a / b);
だと横一列に結果がでてくるので改行したいのですが
\nはどこに書けばいいんでしょうか?
0441デフォルトの名無しさん
2008/08/08(金) 15:03:250442デフォルトの名無しさん
2008/08/08(金) 15:04:08Console.WriteLine();を使え
0443デフォルトの名無しさん
2008/08/08(金) 15:04:140444デフォルトの名無しさん
2008/08/08(金) 15:05:590445デフォルトの名無しさん
2008/08/08(金) 15:13:10カスの質問にお答えしていただいてありがとうございます
>>443
Console.Write(a + b)\n;
Console.Write(a + b);\n;
Console.Write(a + b,\n);
などを試しているのですができません
くだらなさすぎる質問ですみません
0446デフォルトの名無しさん
2008/08/08(金) 15:14:27書き込むときに更新していなかったで気づきませんでした
ありがとうございます
0447デフォルトの名無しさん
2008/08/08(金) 15:16:000448デフォルトの名無しさん
2008/08/08(金) 15:16:35Console.WriteLine();
0449デフォルトの名無しさん
2008/08/08(金) 15:17:450450デフォルトの名無しさん
2008/08/08(金) 15:23:410451デフォルトの名無しさん
2008/08/08(金) 15:24:030452デフォルトの名無しさん
2008/08/08(金) 15:25:15>>442の意味が全くわかってないの?
0453デフォルトの名無しさん
2008/08/08(金) 15:27:18>>448
>>449
ありがとうございます。
ネットでC#について説明しているところを順番に読んでやっているのですが
Console.Write("{0}\n",a + b); のなかの
{0} の意味が良くわかりません。
例えば、演習の回答に
Console.Write("{0} + {1} = {2}\n", a, b, a + b);
このように書いてあるのですが、良くわかりません
0454デフォルトの名無しさん
2008/08/08(金) 15:28:09わかっています
ただ、\nでやる場合はどうしたらいいかが
気になったので質問させていただきました
0455デフォルトの名無しさん
2008/08/08(金) 15:31:44あと、期待した答えじゃないレスを無視とかしてたら
誰も相手にしてくれなくなっちゃうよ。
0456デフォルトの名無しさん
2008/08/08(金) 15:32:350457デフォルトの名無しさん
2008/08/08(金) 15:34:31無視してるつもりはなかったのですが
そのようにとらえているのであれば、すみません
もうちょっと詳しく説明が載っている本を買って勉強したいと思います
0458デフォルトの名無しさん
2008/08/08(金) 15:35:22ありがとうございます
そのような方法もあるんですね
0459デフォルトの名無しさん
2008/08/08(金) 15:35:32{0}にはaが, {1}にはbが, {2}にはa+bが入る
0460デフォルトの名無しさん
2008/08/08(金) 15:35:34Console.Write(a + " + " + b + " = " + (a + b));と同じ
文字列の後に続く2つ目の引数を0番、それ以降1番, 2番, …として
{0}のところが0番、{1}のところが2番、{2}のところが2番、…にそれぞれ置き換えられる
0461デフォルトの名無しさん
2008/08/08(金) 15:36:070462デフォルトの名無しさん
2008/08/08(金) 15:37:560463デフォルトの名無しさん
2008/08/08(金) 15:39:39ありがとうございます
そういう意味だったんですね
0464デフォルトの名無しさん
2008/08/08(金) 15:42:160465デフォルトの名無しさん
2008/08/08(金) 15:44:10自分は馬鹿なのでそのようなことができませんでした
0466デフォルトの名無しさん
2008/08/08(金) 15:46:150467デフォルトの名無しさん
2008/08/08(金) 15:50:040468デフォルトの名無しさん
2008/08/08(金) 15:52:06二度と来るな
0469デフォルトの名無しさん
2008/08/08(金) 15:53:180470デフォルトの名無しさん
2008/08/08(金) 15:54:540471デフォルトの名無しさん
2008/08/08(金) 15:57:18向上心の無い奴に教えても無駄だね
0472デフォルトの名無しさん
2008/08/08(金) 15:58:120473デフォルトの名無しさん
2008/08/08(金) 15:59:350474デフォルトの名無しさん
2008/08/08(金) 16:05:40それ漱石……
>>473
マッチ文字列によって置換後の文字列を変更する場合
正規表現が"[ab]"だとして、MatchEvaluatorでマッチしたのがaだったらAに変換、bだったらBに変換、とか。
0475デフォルトの名無しさん
2008/08/08(金) 16:11:17Regex.Replace(string, MatchEvaluator)にはその正規表現を受け取る引数が無いんだけど
0476475
2008/08/08(金) 16:11:510477デフォルトの名無しさん
2008/08/08(金) 21:40:17メインスレッドのインスタンスにアクセスしたいのですが、
エラー1 静的でないフィールド、メソッド、またはプロパティ
'System.Windows.Forms.Control.Invoke(System.Delegate)'
で、オブジェクト参照が必要です。
と言われてしまいます。
なので、静的でないフィールドを宣言使用すると、
「静的クラスでインスタンスメンバを宣言することはできません」
と言われます。
要求を満たすにはどうしたらいいのでしょうか?
0478デフォルトの名無しさん
2008/08/08(金) 21:45:09>エラー1 静的でないフィールド、メソッド、またはプロパティ
>'System.Windows.Forms.Control.Invoke(System.Delegate)'
>で、オブジェクト参照が必要です。
この例外のメッセージに書いてあるまんまだと思うんだけど。
0479デフォルトの名無しさん
2008/08/08(金) 21:47:27一般にインスタンスはスレッドに縛られない
コントロールにアクセスする以外はInvokeする必要は無いよ?
0480477
2008/08/08(金) 22:38:51まずメイン(Form1の)スレッドでは無いループ処理のスレッドで、
try~catch文のcatchの中から前述のスタティックメソッドを呼び出したいのですが、
そのメソッドはForm1のパブリックメソッドを呼び出すように記述しており、
ここで
"有効ではないスレッド間の操作: コントロールが作成されたスレッド以外のスレッドから
コントロール 'textBox1' がアクセスされました。"
と、例外を出してしまいました。
そこで、スタティッククラスのスタティックメソッドからInvokeすれば良いんじゃないかと思い、
取りあえず書いてみたところ前述のようにコンパイルエラーが出ました。
0481デフォルトの名無しさん
2008/08/08(金) 22:41:34最小限のコードを晒してくれ
0482デフォルトの名無しさん
2008/08/08(金) 23:01:36またこういうサポセンのお姉さんを泣かせるエスパ召還タイプの人か。
まずチミの言ってるInvokeってのはISynchronizeInvoke.Invokeだってこと分かってる?
つまりISynchronizeInvokeを実装したクラスのインスタンス(早い話がコントロール)
の参照を持ってなきゃ呼べない。
この当たりの当たり前のこと理解してる?
0483こんな感じです
2008/08/08(金) 23:03:50void methodHoge(){
try{
}catch (WebException we){
WebExceptionClass.WebExceptionHandler(we);
return false;
}
}
}
static class WebExceptionClass{
public static void WebExceptionHandler(WebException webException){
switch (webException.Status){
case WebExceptionStatus.ConnectFailure:
Form1.Form1Instance.stringbuilder.Append(webException.Status.ToString());
Form1.Form1Instance.stringbuilderUpdate();
break;
}
}
}
public partial class Form1 : Form{
private static Form1 _form1Instance;
public static Form1 Form1Instance{
get{return _form1Instance;}
set{_form1Instance = value;}
}
public void stringbuilderUpdate(){
TextBox1Text = stringbuilder.ToString();
}
}
0484デフォルトの名無しさん
2008/08/08(金) 23:14:45VBが悪い言語だとは思わんが、VBerってこういうカプセル化もなにもあったもんじゃない
コードを平気で書くんだよななぜか。
しかもコミュニケーション不全症候群ときてるw
文章ってのは読み手の厚意を期待してテキトーに手を抜いて書くものじゃなくて、
どんな意地悪な奴が批判的に読もうと思っても一意に解釈するしかないように推敲して書くんだよ。
0485デフォルトの名無しさん
2008/08/08(金) 23:17:27System.Windows.Forms.Control.Invokeではないんですか?
methodHogeを呼び出すループでもInvokeしているんですがインテリセンスではControl.Invokeになってます
0486デフォルトの名無しさん
2008/08/08(金) 23:24:32VBは全く経験がありません。
Javaを1ヵ月と、Cを1ヵ月の経験があります。
C#は2ヵ月くらいです
テキトーではなく本当にどこが悪いのかわからないんです。
0487デフォルトの名無しさん
2008/08/08(金) 23:41:03まず君の「問題」を他人に正確に伝える努力をしよう。
ひょっとすると君自身は「そうしてる」つもりかもしれないが、
客観的には成功しているとは思えない。
君がやっていることは「俺は困ってるんです助けてください」
と同情を求めているだけ。
誰もエスパーじゃないんだから、君が君自身の問題を正確に表現しない限り
誰も助けようがないだろう。
0488デフォルトの名無しさん
2008/08/09(土) 00:00:47何らかの方法でWebExceptionHandlerがFormインスタンスを参照できるようにプログラムを書かないといけない。
0489デフォルトの名無しさん
2008/08/09(土) 00:09:51Form1Instanceではなぜできないのでしょうか?
シングルスレッドの時は問題なく出来たのですが
0490488
2008/08/09(土) 00:23:03あーすまん。暗黙のインスタンスは関係なかったね。こうでいいんじゃないの?ほか突っ込みどころ満載なのは無視するとして。
Form1.Form1Instance.Invoke((MethodInvoker)Form1.Form1Instance.stringbuilderUpdate);
0491デフォルトの名無しさん
2008/08/09(土) 01:05:49駄目みたいです
InvalidOperationException
Message="有効ではないスレッド間の操作:
コントロールが作成されたスレッド以外のスレッドからコントロール 'textBox1' がアクセスされました。"
他の突っ込み所とはどういったところでしょうか?
0492477
2008/08/09(土) 01:40:01public void text_Rewrite()
{
if (this.textBox1.InvokeRequired)
{
this.Invoke((MethodInvoker)delegate() { stringbuilderUpdate(); });
}
else
{
stringbuilderUpdate();
}
}
を追加してstringbuilderUpdateのかわりに呼び出すようにしたらうまく出来ました。
ありがとうございました
0493デフォルトの名無しさん
2008/08/09(土) 13:05:32いい方法があればご教授ください。
0494デフォルトの名無しさん
2008/08/09(土) 15:06:53foreach (HtmlElement link in webBrowser.Document.Links)
{
link.MouseUp += new HtmlElementEventHandler(link_MouseUp);
}
private void link_MouseUp(object sender, HtmlElementEventArgs e)
{
if (e.MouseButtonsPressed == MouseButtons.Middle)
{
// 色々
}
}
0495デフォルトの名無しさん
2008/08/09(土) 15:12:140496デフォルトの名無しさん
2008/08/09(土) 15:13:46設定ファイルなどで
"#####0"
などと定義しておいて、対象の文字列が、6桁の数値になっている。
みたいな感じで、定義したフォーマットにあっているか判別できるといいなぁと。
Formatなどで、数値などを特定の書式に変換はできますが、
逆に書式に合った数値なのかを判別できないものかと。。。
0497デフォルトの名無しさん
2008/08/09(土) 15:20:530498デフォルトの名無しさん
2008/08/09(土) 15:39:22普通は特定のフォーマットみたいなのは正規表現を使う
System.Text.RegularExpressions 以下に対象のクラスが
ある
MSDN ならココ参照
http://msdn.microsoft.com/ja-jp/library/hs600312.aspx
ちなみに、6桁の数値(ASCII)ならパターンは @"^[0-9]{6}$"
0499デフォルトの名無しさん
2008/08/09(土) 15:52:36ありがとうございます。
まさかそんなところにあったとは・・・。
WebBrowserにMouse周りのイベントがないのに納得
しかし、スクロール機能が先に効いてしまい、MouseUpが取れません。
この機能をキャンセルすることってできますか?
0500デフォルトの名無しさん
2008/08/09(土) 22:30:58度忘れしてしまったので教えてください
VBなどでもループ処理中になるとテキストボックスなどに文字を表示して
も表示がされるように、システム?に一時的に制御を明け渡す命令がありましたよね・・・
あれってなんでしたっけ?orz
0501デフォルトの名無しさん
2008/08/09(土) 22:33:28スレッドを自由に起動できるドトネトでは基本的にこれは「いらない子」のはずだ。
0502500
2008/08/09(土) 22:44:50行うんですが経過が更新されないもんで・・・
0503デフォルトの名無しさん
2008/08/09(土) 22:47:51だからUIスレッドでデータ処理するなよ
0504デフォルトの名無しさん
2008/08/09(土) 22:54:210505デフォルトの名無しさん
2008/08/09(土) 23:01:020506デフォルトの名無しさん
2008/08/09(土) 23:34:29教えろ
0507デフォルトの名無しさん
2008/08/09(土) 23:47:460508デフォルトの名無しさん
2008/08/10(日) 00:01:46>>501で答えは出ているはずだが。
0510デフォルトの名無しさん
2008/08/10(日) 00:18:050511デフォルトの名無しさん
2008/08/10(日) 00:29:14見当外れの質問ならスマン。
0512デフォルトの名無しさん
2008/08/10(日) 00:37:470513デフォルトの名無しさん
2008/08/10(日) 01:09:13backgroundworkerのrunworkerイベントとかprogresschangedイベントって
必ず呼び出し元のスレッド(UIスレッド)で実行されるようになっているけれど
これってどういう実装したらいいんだろう。
Compact Framewrokにはbackgroundworkerがないもんで、似たものを自分で
作りたいんだけど、普通にイベント実装しただけでは当然のことながらbackgroundworker
側のスレッドで実行されてしまうし。
0514デフォルトの名無しさん
2008/08/10(日) 02:03:48こっそりコントロール作ってCreateControlしといてそれのBeginInvoke呼び出せ
0515デフォルトの名無しさん
2008/08/10(日) 02:26:37代わりにHandleを事前に参照しとけばなんとかなるかな。
0516デフォルトの名無しさん
2008/08/10(日) 03:48:090517デフォルトの名無しさん
2008/08/10(日) 04:11:380518デフォルトの名無しさん
2008/08/10(日) 06:42:500519デフォルトの名無しさん
2008/08/10(日) 06:51:47ISynchronizeInvokeインターフェイスを使う
if (ISynchronizeInvoke.InvokeRequired)
{
ISynchronizeInvoke.Invoke.BeginInvoke(デリゲート);
}
else
{
(デリゲート).DynamicInvoke();
}
詳しく知りたければSynchronizingObjectプロパティを実装しているクラスをReflectorで調べる
0520デフォルトの名無しさん
2008/08/10(日) 06:57:33BackgroundWorkerはThreadPoolのスレッドを使い回すので効率的
Threadはスレッドを新規に立ち上げる必要があるので負荷がかかる
0521デフォルトの名無しさん
2008/08/10(日) 07:28:080522デフォルトの名無しさん
2008/08/10(日) 09:52:10私はPCにVisual C# 2005 Express Editionを入れているので、Windowsのコマンドプロンプトで
プログラムをコンパイルするには、
SET Path=%Path%;C:\Windows\Microsoft.NET\Framework\v2.0.50727
というコマンドをコマンドプロンプトを起動するたびに実行しなければなりません。
しかし、以前読んだJavaの入門書では初めにWindowsのユーザー環境変数を設定するように
書いてあり、一度設定するだけで済み、その後のコンパイルが楽チンでした。
そこで、もしかしたらC#でも上記のコマンドを実行する代わりに、新しいユーザー環境変数を以下の
ように設定すれば良いかなと思ったのですが、このような認識で誤りはないでしょうか?
変数名
PATH
変数値
C:\Windows\Microsoft.NET\Framework\v2.0.50727
0523デフォルトの名無しさん
2008/08/10(日) 09:55:14で区切って足していけばOkだよ
0524デフォルトの名無しさん
2008/08/10(日) 09:59:39>>514
いいアイデアかと思ったけどCFではサポートされてないんですねえ。。。
Controlを継承して、BgWorkerCfを作って 非同期処理からイベント発動
するときに this.Invoke(ProgressChanged, new object[]{this, e})
とかやって、コントロールは非表示にしておけばできないこともないすかね…。
>>519
これも 検討したんですが、compact frameworkではdynamicinvokeがサポート
されていないんですよね…。。。。
0525デフォルトの名無しさん
2008/08/10(日) 10:12:010526デフォルトの名無しさん
2008/08/10(日) 10:40:24>>525
回答ありがとうございました。
0527デフォルトの名無しさん
2008/08/10(日) 10:53:17> いいアイデアかと思ったけどCFではサポートされてないんですねえ。。。
ん? 何が? HandleとBeginInvokeはCompact Frameworkでも使えるはずだけど?
コントロールはハンドルさえ作っとけばFormに追加する必要も無いはずだよ、Compact Framework独自の制限が無い限り
0528デフォルトの名無しさん
2008/08/10(日) 11:24:390529デフォルトの名無しさん
2008/08/10(日) 12:05:50・DoWork
ここで色々やる。
Form上のコントロールへのアクセスはできない。
・RunWorkerCompleted
・ProgressChanged
ここでForm上のコントロールに結果を反映させる。
結果はe.Resultまたはe.UserStateで渡される。
何かやって、終わったら(もしくは途中で)結果をobjectとして呼び出し元に反映する。
シンプルで時間がかかる処理には便利。
こんな感じの理解で良いのかな? ツッコミ等あればよろしく
0530デフォルトの名無しさん
2008/08/10(日) 13:19:24開発環境:VisualC#2008Express
デザイン画面を使っているとInitializeComponent()やLoadイベントのハンドラ等が表示時にコンパイルされますよね?
この時に自分で書いたコードの一部をコンパイルされないようにしたいんです。
(そこを通るとコード外のリソースにアクセスしにいって、デザイン画面がバグるので)
デザイン画面用のコンパイル時のみ#defineされているものとかあるのでしょうか?
それがあれば、#if !とかで制御できると思うのですが…。
よろしくお願いします。
0531デフォルトの名無しさん
2008/08/10(日) 13:23:19コンパイルはされるけど実行されなくなる
0532デフォルトの名無しさん
2008/08/10(日) 13:29:36どういったツールを利用すれば可能になるのでしょうか?
0533デフォルトの名無しさん
2008/08/10(日) 13:31:03ありがとうございます。
期待していた動作が得られました。
プリプロセッサか関数属性かどっちかにあるんじゃないかと思ってたんですが、Componentのプロパティなんですね。
なんとなく意外な感じです。
0534デフォルトの名無しさん
2008/08/10(日) 13:33:36Debugger.Launch()とか
0535デフォルトの名無しさん
2008/08/10(日) 14:30:24nunit.exeを、でしょうか。
結構面倒な手順を踏まないといけないんですね...
0536デフォルトの名無しさん
2008/08/10(日) 15:36:04うまくいったらラッキー
0537デフォルトの名無しさん
2008/08/10(日) 16:52:08通常実行かデバッグ実行か選べた気がする
0538デフォルトの名無しさん
2008/08/10(日) 18:00:370539デフォルトの名無しさん
2008/08/10(日) 18:22:370540デフォルトの名無しさん
2008/08/10(日) 18:50:44あ、なるほど
ありがとうございました
0541デフォルトの名無しさん
2008/08/10(日) 21:00:32あるとしたらどのように書けばよいのでしょうか
0542デフォルトの名無しさん
2008/08/10(日) 21:06:33クラス名(int a) : base(a)
{
}
0543デフォルトの名無しさん
2008/08/10(日) 21:08:030544デフォルトの名無しさん
2008/08/10(日) 21:11:090545デフォルトの名無しさん
2008/08/10(日) 22:42:03ありがとうございます
助かりました^^
0546デフォルトの名無しさん
2008/08/10(日) 23:07:44WebClient uploadClient = null;
private void btnUP_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
string filename = openFileDialog1.FileName;
Uri u = new Uri("http://xxxxxxxxx/up/");
if (uploadClient == null)
{
uploadClient = new WebClient();
uploadClient.UploadProgressChanged += new UploadProgressChangedEventHandler(uploadClient_UploadProgressChanged);
uploadClient.UploadFileCompleted += new UploadFileCompletedEventHandler(uploadClient_UploadFileCompleted);
}
uploadClient.UploadFileAsync(u, filename);
}
}
このようなプログラムを実行してもファイルがUPできないんですが、どこがおかしいか教えてもらえないでしょうか
0547デフォルトの名無しさん
2008/08/10(日) 23:10:52メンバ名 内容
Sell 売り
Buy 買い
TradeDivision td;
上記のような列挙体があって、設定されているメンバ名をとりだしたい場合はどうすればいいのでしょうか?
0548デフォルトの名無しさん
2008/08/10(日) 23:13:05日本語ないしC#でおk
0549デフォルトの名無しさん
2008/08/10(日) 23:18:380550デフォルトの名無しさん
2008/08/10(日) 23:34:08clickのツールのアドインを作っているのかな?
それからメンバ名の取り出しじゃなくて、内容の文字列(売り、買い)を取り出したいのかな?
0551デフォルトの名無しさん
2008/08/10(日) 23:45:43VisualStudioのソリューションエクスプローラーでフォルダを作って
作成したファイルを分類すると、勝手に名前空間が書き換えられます。
実際にフォルダができる必要もないんですが、こちらはまあいいとしても名前空間の書き換えは困ります。
コードに影響を与えず、上手いことソリューションエクスプローラー上でファイルを分類する方法は無いでしょうか?
0552デフォルトの名無しさん
2008/08/10(日) 23:58:42どのように作ればいいのかさっぱりわかりません。
どなたか教えていただけないでしょうか?
0553デフォルトの名無しさん
2008/08/11(月) 00:10:340554デフォルトの名無しさん
2008/08/11(月) 00:13:09別に整理しても自動で名前空間は書き換えられないだろ。
フォルダの方に新規にクラス作成すると確かに名前空間付くけど、
それは作ってから消すか、トップレベルに作ったものをドラッグで移動すればいいんだし。
0555デフォルトの名無しさん
2008/08/11(月) 00:37:49ちょっと試してみましたが、書き換えられるものと書き換えられないものがありますね。
・〜.xsd以下のDataSet関連派生クラス群は移動すると書き換えられる。
・Formの場合、デザイナ生成コードの箇所のみ名前空間が書き換えられてビルドできなくなる。
(ということがあったと思うんですが、今試したら再現しませんでした。気のせいだったのかな…)
・単なるコードファイルは問題なし。
自動生成したデータセット関連以外なら移動しても大丈夫なのかな。
上も移動した後、消せばいいのかも知れないけどデザイナで編集したときとかが不安。
まあ、とりあえずテストして大丈夫な場合とそうでない場合をもうちょい調べてみます。
ありがとうございます。
0556デフォルトの名無しさん
2008/08/11(月) 00:45:55おおー そうです。
これだけでclickのツールってよくわかりましたね^^
0557デフォルトの名無しさん
2008/08/11(月) 01:04:04//列挙体の設定
TradeDivision td = TradeDivision.Buy;
//内容の文字列(売り、買い)の取得
string str = CodeService.GetString(td);
で出来ると思う。
質問内容によっては先物板のclickのスレ等で質問で質問したほうが
いいかもしれないけど過疎っているからなあ・・
0558デフォルトの名無しさん
2008/08/11(月) 01:24:16ありがとうございます。助かります!
0559デフォルトの名無しさん
2008/08/11(月) 12:34:130560デフォルトの名無しさん
2008/08/11(月) 12:40:48つ 【System.Text.Encoding】
0561デフォルトの名無しさん
2008/08/11(月) 12:49:21C#でツール書ける環境提供してるのってクリックだけじゃんw
0562デフォルトの名無しさん
2008/08/11(月) 12:52:10thx
0563デフォルトの名無しさん
2008/08/11(月) 13:50:11Controlクラス継承してBackGroundWorkerCf クラスを定義、
↓
呼び出し元で
BackgroundWorker bw = new BackgroundWorker();
IntPtr = bw.Handle;
とハンドル参照してハンドル作成
↓
BackgroundWorkerCfクラスのイベント発動時に
this.Invoke(new Action<ProgressChangedEventArgs>(OnProgressChanged),new object[]{new ProgressChangedEventArgs(progress,null)});
てな具合にしたら、きちんと呼び元のスレッドで実行されました。
0564デフォルトの名無しさん
2008/08/11(月) 14:04:060565デフォルトの名無しさん
2008/08/11(月) 14:05:220566デフォルトの名無しさん
2008/08/11(月) 15:00:51こういうのはUIスレッドへの同期専用に軽量のコントロールをシングルトンで
持つのが普通じゃないのかなあ。俺はそうしてるけど。
チームなり自分個人なりのクラスライブラリってあるでしょ?
そういうのの適当なクラスに静的メソッドとしてもっておけば
毎回くだらないことで悩んで時間つぶさないで済む。
0567デフォルトの名無しさん
2008/08/11(月) 15:15:590568デフォルトの名無しさん
2008/08/11(月) 15:27:59UIスレッドに同期する必要があるオブジェクトのインスタンスの生成をUIスレッドで
行う場合はそもそも何も考える必要はないし、そうでない場合も
いろいろ工夫の仕方はある。
一番簡単なのは、
private static control uiSyncObj = new Control();
とでもしておくこと。
そもそもUIスレッドで起動するアプリならこれで何も問題ないはずじゃないの?
0569デフォルトの名無しさん
2008/08/11(月) 15:30:37new BackgroundWorkerCF(textBox1);
0570デフォルトの名無しさん
2008/08/11(月) 15:32:45普通はありえないけどUIスレッドが複数あった場合はものすっごく混乱する。
0571デフォルトの名無しさん
2008/08/11(月) 15:33:50俺は568だけど、それは問題がある場合が多い。
だって簡単に言えば、イベントを受信する側のフォームの寿命っていいうのは
しばしばアプリの寿命と違うからね。
0572567
2008/08/11(月) 15:42:19あー、ちょっと前提がずれてた。
Form1にInvoke用メンバとして持たすなら問題ないね。
BackgroundWorker代替クラスのメンバとして持たす場合を想定してた。
0573デフォルトの名無しさん
2008/08/11(月) 15:54:02System.ComponentModel.IContainer components
に追加してくれないのは不満だな。
これに追加してくれればスレッドよりも先にフォームが閉じられても対処されるのに。
0574デフォルトの名無しさん
2008/08/11(月) 15:59:17実に不毛だな
0575デフォルトの名無しさん
2008/08/11(月) 17:08:08{
b.DocumentCompleted += delegate(object sender, WebBrowserDocumentCompletedEventArgs e)
{
HtmlDocument doc = b.Document;
Console.WriteLine(doc.Title);
};
b.Navigate("http://www.google.co.jp/");
while (true)
{
Thread.Sleep(100);
}
}
WebBrowserクラスを使ってHtmlDocumentを取得したいのですが、
上のコードがいつまで経っても終わりません
間違っているところとかあるでしょうか……
0576デフォルトの名無しさん
2008/08/11(月) 17:09:530577デフォルトの名無しさん
2008/08/11(月) 17:30:390578デフォルトの名無しさん
2008/08/11(月) 18:53:36FormのDisposedはその名に反して終了時に呼び出されん!?
とりあえず
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1 form1 = null;
AppDomain.CurrentDomain.ProcessExit += (sender, eventargs) => {
if (null != form1) {
form1.Dispose();
}
};
...
}
みたいにしてるんだけどカコワルイ。 終了処理とかどこに書くん? デストラクタもないしorz
0579デフォルトの名無しさん
2008/08/11(月) 18:56:18つか普通はClosedあたりに書くんじゃね?
0580デフォルトの名無しさん
2008/08/11(月) 18:57:58Form.FormClosedとかとかApplication.ApplicationExitとかはだめなの?
0581デフォルトの名無しさん
2008/08/11(月) 19:36:080582デフォルトの名無しさん
2008/08/11(月) 22:13:23C#(.NET 3.5 & WPF)でP2P分散データベースを構築するアプリケーションを作ろうとしているのですが、データベースとしては何を使うべきでしょうか。
# ローカルデータベースやデータセットなどがあると思いますが、どちらを使えばいいのかイマイチわかっていません。。。
データ量は100万以上を想定しています。
よろしくお願いいたします。
0583デフォルトの名無しさん
2008/08/11(月) 22:16:30ありえない
0584デフォルトの名無しさん
2008/08/11(月) 22:17:200585デフォルトの名無しさん
2008/08/11(月) 22:32:48>>584
早速ありがとうございます!
データセットは大量のデータを扱うには難しいということを事前に聞いていたので、ローカルデータベースの方で検討してみようかと思います。
ちなみに、直接的には関係ないのですが、データセットとローカルデータベースでは、いったい何が違うのでしょうか。
# そもそもなぜ同じような機能を持っているものが複数あるのか疑問なのですが…
0586デフォルトの名無しさん
2008/08/11(月) 22:36:22君が言ってるのは普通のOSファイルのことだろ?
データの持ち方によっては単純で有効だよ。
0587デフォルトの名無しさん
2008/08/11(月) 22:38:28Sqlite
0588デフォルトの名無しさん
2008/08/11(月) 22:53:190589デフォルトの名無しさん
2008/08/11(月) 22:54:180590582
2008/08/11(月) 22:56:22すみません。
そこまで理解できていませんでした。
イメージとしては、頻繁に使うデータ(メモリ)・全データ(ディスク/ファイル)と考えています。
# やはり数万〜数十万になるデータをすべてメモリ中に置くのは無理があると思うので、多少パフォーマンスを犠牲にしても、ファイルとして置くのがいいのかなと考えています。
もちろん、クエリや検索条件などはデータセットなどで持つことを考えています。(XMLとして書き出すこともできますし)
もし他に有効なデータの持ち方などがありましたらご指摘くださると幸いです。
0591582
2008/08/11(月) 23:01:12>>588
>>589
皆様ありがとうございます!
今まで全然聞いたことがなかったキーワードが次々と…。
早速調べてみようと思います。
0592デフォルトの名無しさん
2008/08/11(月) 23:03:110593デフォルトの名無しさん
2008/08/12(火) 13:40:100594デフォルトの名無しさん
2008/08/12(火) 13:47:220595デフォルトの名無しさん
2008/08/12(火) 14:46:46byteの場合は何で比較すればいいでしょうか?
0596デフォルトの名無しさん
2008/08/12(火) 14:48:010597デフォルトの名無しさん
2008/08/12(火) 14:50:30i = System.Text.Encoding.ASCII.GetBytes(trackBar3.Value.ToString());
if (!i[0])
i[0] = 48;
これでエラーがでるのです
0598デフォルトの名無しさん
2008/08/12(火) 14:53:08(゚д゚ )
( ゚д゚ )
0599デフォルトの名無しさん
2008/08/12(火) 14:56:030600デフォルトの名無しさん
2008/08/12(火) 15:04:140601デフォルトの名無しさん
2008/08/12(火) 15:05:200602デフォルトの名無しさん
2008/08/12(火) 15:12:02頼むから教えてくれ
0603デフォルトの名無しさん
2008/08/12(火) 15:12:50エラーメッセージは?
0604デフォルトの名無しさん
2008/08/12(火) 15:14:40で
if (i[0 == null])
i[0] = 48;
にしたら
警告 CS0472: 型 'int' の値が型 'int?' の 'null' に等しくなることはないので、式の結果は常に 'false' になります。
になります
0605デフォルトの名無しさん
2008/08/12(火) 15:16:240606デフォルトの名無しさん
2008/08/12(火) 15:17:44書き込みミスです
0607デフォルトの名無しさん
2008/08/12(火) 15:18:56NULLは別の意味じゃねーの?
0608デフォルトの名無しさん
2008/08/12(火) 15:23:01スライダでデータを取得したものを文字コードにして、i[0]とi[1]に格納するのですが、
スライダの値がひとけたになるとi[0]に値がないみたいでエラーが起きてしまいます。
無理なのでしょうか?
0609デフォルトの名無しさん
2008/08/12(火) 15:27:03byte[] i;
i = new int[0];
if (!i[0])
i[0] = 48;
これでエラーがでるのです
0610デフォルトの名無しさん
2008/08/12(火) 15:28:450611デフォルトの名無しさん
2008/08/12(火) 15:28:500612デフォルトの名無しさん
2008/08/12(火) 15:41:35byteは値型なのでnullは代入できない。
i[0]は決してnullになることはない。
エラー云々の前に 整数型を文字列型にしてさらにそれをASCIIバイト配列に
するなんていう無意味かつ変態的な設計を根本から見直せ。
0613デフォルトの名無しさん
2008/08/12(火) 15:44:32byteは数値なのでnullにならない
よってbyteとnullは比較できない
ifの中身は数値ではダメ
if(i[0]) とか if(!i[0]) とかは不正
if(i[0] == 0)とかif(i[0] != 0)とかしないといけない
!はbool型の値をひっくりかえすもので数値に対しては適用できない
0614デフォルトの名無しさん
2008/08/12(火) 15:44:58を文字として取り出して何に使うのか書いたら?
なんか目的を実現するための方法が間違ってる気がする
0615デフォルトの名無しさん
2008/08/12(火) 15:47:540616デフォルトの名無しさん
2008/08/12(火) 15:49:060617デフォルトの名無しさん
2008/08/12(火) 15:51:58C#なりの正解を教えることもできん。
トラックバーの数字を文字として扱いたいならそのまんま
.ToString()
つけておけばいいし書式したければ
ToString("00")
とかすればいいし。
bytでほしけりゃ
Convert.ToByteとかあるしなあ。
0618デフォルトの名無しさん
2008/08/12(火) 16:02:210619デフォルトの名無しさん
2008/08/12(火) 16:03:53CもしくはC++でこういうことをやってたのをc#で実現するにはどうすればいいですか?
と聞いてくれたほうがなんぼかいい
0620デフォルトの名無しさん
2008/08/12(火) 16:13:36できました。ありがとうございました
>>612
>>2のサイトにのってサイトでサンプルでのってたのが、byteでした
>>他
すいませんでした
0621デフォルトの名無しさん
2008/08/12(火) 16:17:26以下だとエラーが出るのですが、正しい書き方を教えてください
const int[,,] sz =new int[5,4,8] {
0,0,0,1,-1,0,-1,1,
0,0,0,1,-1,0,-1,1,
0,0,0,1,-1,0,-1,1,
0,0,0,1,-1,0,-1,1,
0,0,0,-1,0,1,-1,0,
0,0,-1,0,1,0,0,1,
0,0,0,-1,0,1,1,0,
0,0,-1,0,1,0,0,-1,
0,0,0,1,1,0,1,-1,
0,0,0,1,1,0,1,-1,
0,0,1,0,0,-1,-1,-1,
0,0,0,-1,-1,0,-1,1,
0,0,-1,1,0,1,1,0,
0,0,1,1,1,0,0,-1,
0,0,1,-1,0,-1,-1,0,
0,0,-1,-1,-1,0,0,1,
0,0,-1,0,1,0,2,0,
0,0,0,1,0,-1,0,-2,
0,0,1,0,-1,0,-2,0,
0,0,0,-1,0,1,0,2,
};
0622デフォルトの名無しさん
2008/08/12(火) 16:19:10{0,0,0,1,-1,0,-1,1}
{0,0,0,1,-1,0,-1,1}
{0,0,0,1,-1,0,-1,1}
{0,0,0,1,-1,0,-1,1}
},
これが5こ?
0623デフォルトの名無しさん
2008/08/12(火) 16:19:51{0,0,0,1,-1,0,-1,1},
{0,0,0,1,-1,0,-1,1},
{0,0,0,1,-1,0,-1,1},
{0,0,0,1,-1,0,-1,1},
},
こうだ
0624デフォルトの名無しさん
2008/08/12(火) 16:31:290625621
2008/08/12(火) 16:34:02ありがとうございます。
constを外したらとりあえずできました。
このままでもプログラム動作的には問題ないですが、
変更するものではないので、できればconstにしたいです。
constにすると、以下のようなエラーです。>>624
エラー 1 'Tetris.BZ.sz' の型は 'int[*,*,*]' です。文字列以外の参照型のconst は null と共にのみ初期化できます。
0626デフォルトの名無しさん
2008/08/12(火) 16:51:200627デフォルトの名無しさん
2008/08/12(火) 16:52:22static readonlyにしれ。
constは円周率とか自然対数とか絶対不変の定数に使うもので、
変更するものではないからといって使うものではない。
ちょっと前にふらっとか相談室でそんな議論がでていたな。
0628デフォルトの名無しさん
2008/08/12(火) 16:56:25多次元だとReadOnlyCollectionも無理だな。
どうしてもってんなら適当なインデクサを持たせたラップクラス作ることになるな。
0629デフォルトの名無しさん
2008/08/12(火) 17:03:02→リテラルといえるようなもの以外は指定できない。
だったかな。
クラス変数(定数?)に指定するなら>>627の通り。
ブロック内で使うのは良い選択だと思うのだがどうだろう?
0630デフォルトの名無しさん
2008/08/12(火) 18:09:22なのにどちらも使う事が出来たりよくわかりません。
どうしてDelegate.BeginInvokeはインテリセンスも効かないのでしょうか?
0631デフォルトの名無しさん
2008/08/12(火) 18:13:05コンパイラがデリゲート型を作る際MulticastDelegateから派生させてそれらを用意する
0632デフォルトの名無しさん
2008/08/12(火) 18:17:37デリゲートの Invoke, BeginInvoke, EndInvoke は C# コンパイラが生成してるもの。
System.Delegate クラスのメンバじゃない。
Action a1; なら a1.BeginInvoke(callback, obj)、
Action<T> a2; なら a2.BeginInvoke(arg1, callback, obj)
みたいな、デリゲートの方に応じた引数を取れるのは
デリゲートの型を見てコンパイラが自動生成してるメソッドだから。
こういう仕組みはクラスの継承とかでは無理。
0633デフォルトの名無しさん
2008/08/12(火) 18:30:51よくわかりました、ありがとう
0634デフォルトの名無しさん
2008/08/12(火) 19:24:06http://msdn.microsoft.com/ja-jp/library/2e08f6yc.aspx
0635デフォルトの名無しさん
2008/08/13(水) 11:58:38特定のクラスからのみアクセス可能な修飾子などは作成可能でしょうか?
もしくは、同一パッケージ内からのみアクセス可能、同一ファイルからのみアクセス可能などの設定は可能でしょうか?
とあるクラスAを作成し、Aのあるメソッドの戻り値のクラスとしてBを考えています
BはA以外からインスタンス化されることはないので、Aからのみ作成可能にしたいです(そうでなければ、なるべくBを生成可能な範囲を小さくしたいです)
なにか、上手い方法などありましたら、よろしくお願いいたします
0636デフォルトの名無しさん
2008/08/13(水) 12:05:01特定のクラスのみ → 無理
同一パッケージ、というか同一名前空間から → internal
同一ファイル → それもない
A からのみインスタンス化されるクラス B
↓
public なインターフェースを継承した、A 内 private クラスを作れ
0637デフォルトの名無しさん
2008/08/13(水) 12:10:02どのように記述すればよいでしょうか?
0638デフォルトの名無しさん
2008/08/13(水) 12:10:35internalはアセンブリスコープ。DLLやEXEの範囲内。
ちなみにJ#でpackageスコープで定義したクラスはC#からpublicに見える。今日にも使える無駄知識^^;
0639デフォルトの名無しさん
2008/08/13(水) 12:13:14char [] hoge = "HOGE".ToCharArray()
0640デフォルトの名無しさん
2008/08/13(水) 12:45:100641デフォルトの名無しさん
2008/08/13(水) 13:13:57もともとクラスをpublicにして、コンストラクタを特定のクラスからのみ利用可能にしようと考えていました
もうちょっと、勉強してみます
0642デフォルトの名無しさん
2008/08/13(水) 13:45:53ユーザ環境でも.NET3.5が必要なのは当然ですが、
ASP.NETで3.5を使用した場合には、
IISの入っているサーバに3.5を入れるだけで良いのでしょうか?
それとも、ブラウザの入っている各クライアントにも3.5が必要になるのでしょうか?
そんなことになったら、MacやLinuxで見えなくなりますよね。
いや、もしかして、ASP.NETってそういうものなのでしょうか?
0643デフォルトの名無しさん
2008/08/13(水) 13:48:360644デフォルトの名無しさん
2008/08/13(水) 13:53:03どうも有り難うございます。
でも、便利なコントロールあるじゃないですか。
あれも、コントロールはクライアントローカルのものが使用される訳ではなく、
全てIISサーバからJSとして送られているということで良いのでしょうか?
0645デフォルトの名無しさん
2008/08/13(水) 13:56:08一度ソース見てみるといいよ
0646デフォルトの名無しさん
2008/08/13(水) 13:56:420647デフォルトの名無しさん
2008/08/13(水) 14:00:53なるほど、壮大な無駄な気がしましたが、
良く考えると、キャッシュされるから問題ないのかも〜。
ありがとうございました。
0648デフォルトの名無しさん
2008/08/13(水) 14:12:34無駄に重いし却って使いづらいよね
0649デフォルトの名無しさん
2008/08/13(水) 14:24:080650デフォルトの名無しさん
2008/08/13(水) 14:29:450651デフォルトの名無しさん
2008/08/13(水) 14:55:01LINQ to Objectのソートはstable sort。
ただしLINQ to XXX全般では保証されないので注意とのこと。
ttp://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1420485&SiteID=1
0652デフォルトの名無しさん
2008/08/13(水) 16:35:51Windows.Formsでターゲットを.NET 3.5にしてても、
実際に3.5や3.0の機能を使わなければ2.0だけで動くよ
0653デフォルトの名無しさん
2008/08/13(水) 17:02:44private void Form1_Load(object sender, EventArgs e)
{
restartServer();
this.ShowInTaskbar = false;
}
とすると、ウィンドウは表示されませんが、タスクトレイにもアイコンはなく、タスクマネージャで見るとイメージ名はありますが、クライアントからアクセスしても反応がありません。タスクトレイにアイコンがないので終了もできません。
private void Form1_Load(object sender, EventArgs e)
{
restartServer();
this.WindowState = FormWindowState.Minimized ;
}
とすると、起動時にウィンドウは開かないのですが、タイトルバーだけのウィンドウがスタートボタンの上に出ています。
自動生成したProgram.csで、
Application.Run(new Form1());
を、
Application.Run();
にもしてみましたが、これでも
this.ShowInTaskbar = false;
の場合と同じ症状です。
アドバイスいただけるとうれしいです。
0654デフォルトの名無しさん
2008/08/13(水) 17:11:30前提がわからないので、適当に書くけど、
通常、タスクトレイのアイコンはウィンドウとつながってるイメージになるので、
普通にウィンドウを作るんじゃないかな。
ウィンドウ出したくなければ非表示にすればいい。
サーバーというのはサービスにするのとは別の話?
0655デフォルトの名無しさん
2008/08/13(水) 17:13:39ありがとうございます
0656デフォルトの名無しさん
2008/08/13(水) 17:20:15肝心のタスクトレイに表示するブツはどうなってんだ
0657デフォルトの名無しさん
2008/08/13(水) 17:26:520658デフォルトの名無しさん
2008/08/13(水) 17:31:33複数のクラスを超えて有効にしたい固定数値などあるのですが。
0659デフォルトの名無しさん
2008/08/13(水) 17:32:540660デフォルトの名無しさん
2008/08/13(水) 17:42:36>654
restartServer()ですが、起動時にサーバーをリスタートしています。初期化する目的と思います。
サービスにするのとは別の話です。
これについては特に今回の処理とは関係ないかと。
>656
ブツ?
は、notifyIconは、デザイン画面では下のほうにあります。
Form1.csのプログラム上では、次のようになってます。
private void notifyIcon_Click(object sender, EventArgs e)
{
this.Visible = true;
if (this.WindowState == FormWindowState.Minimized)
{
this.WindowState = FormWindowState.Normal;
}
this.Activate();
}
0661デフォルトの名無しさん
2008/08/13(水) 17:58:16のままで、 notifyIcon1.Visible = true はできるだろ?
そもそもプロパティでtrueにしとけばいい話ではあるが。
0662デフォルトの名無しさん
2008/08/13(水) 18:15:18できます。プロパティでtrueになってます。
private void Form1_Load(object sender, EventArgs e)
{
this.ShowInTaskbar = false;
}
private void notifyIcon_Click(object sender, EventArgs e)
{
this.Visible = true;
if (this.WindowState == FormWindowState.Minimized)
{
this.WindowState = FormWindowState.Normal;
}
this.Activate();
}
としました。これだと起動時にウィンドウが開いてしまいます。
ウィンドウを開かずにタスクトレイに入れるにはどうしたらよいでしょう?
0663デフォルトの名無しさん
2008/08/13(水) 18:19:23使うならShowInTaskbar をfalseでminimaizeで起動すれば
ウィンドウ出ないはずだけどな。プロパティで全部設定してみたらどうなる?
0664デフォルトの名無しさん
2008/08/13(水) 18:28:39private void Form1_Load(object sender, EventArgs e)
{
this.ShowInTaskbar = false;
this.WindowState = FormWindowState.Minimized ;
}
としたところ、
ウィンドウ-開かない
タスクバー-表示
タスクトレイ-表示
となりました。
GUIのForm1のプロパティでも、ShowInTaskbarの値はfalseです。
Taskbar=falseなのに、タスクバーに表示されている理由がわからん…。
0665デフォルトの名無しさん
2008/08/13(水) 18:32:370666デフォルトの名無しさん
2008/08/13(水) 18:41:34private void Form1_VisibleChanged(object sender, EventArgs e)
{
this.ShowInTaskbar = this.Visible;
}
というところがあったので、ここをコメントアウトしました。
すると、
private void Form1_Load(object sender, EventArgs e)
{
this.ShowInTaskbar = false;
this.WindowState = FormWindowState.Minimized ;
}
private void Form1_VisibleChanged(object sender, EventArgs e)
{
//this.ShowInTaskbar = this.Visible;
}
すると、最初に書いたとおりで、タスクバーには表示しなくなりましたが、タイトルバーだけのウィンドウが表示されるようになり、終了できなくなります。
0667デフォルトの名無しさん
2008/08/13(水) 21:38:49プロジェクト作って試してみては如何か。
あなたのソース全体は誰も分からない故。
0668デフォルトの名無しさん
2008/08/13(水) 21:58:53NotifyIconはっつけて表示されるようにプロパティ設定
そのMouseClickイベントでthis.Show()するようにする
Mainで
Form1 form1 = new Form1();
Application.Run();
GC.KeepAlive(form1);
最低限でこんぐらいだっけ?
0669デフォルトの名無しさん
2008/08/13(水) 22:04:16Application.Run(form1);じゃね?
0670デフォルトの名無しさん
2008/08/13(水) 22:27:41それじゃform1が表示されちゃう
0671デフォルトの名無しさん
2008/08/13(水) 22:41:540672デフォルトの名無しさん
2008/08/13(水) 23:11:40using System;
using System.Drawing;
using System.Windows.Forms;
class HideForm : Form {
public HideForm() {
ShowInTaskbar = false;
WindowState = FormWindowState.Minimized;
FormBorderStyle = FormBorderStyle.None;
Size = new Size(0, 0);
notifyIcon = new NotifyIcon();
notifyIcon.Icon = new Icon("notify.ico");
notifyIcon.Visible = true;
notifyIcon.DoubleClick += (e, args) => Close();
}
protected override void Dispose(bool disposing) {
if (disposing) notifyIcon.Dispose();
base.Dispose(disposing);
}
NotifyIcon notifyIcon;
}
class Startup {
static void Main() { Application.Run(new HideForm()); }
}
0673デフォルトの名無しさん
2008/08/14(木) 12:29:19みなさまアドバイス感謝です。じっくり見直してみます。
0674デフォルトの名無しさん
2008/08/14(木) 17:35:00ソリューションAの中でプロジェクトA-1とプロジェクトA-2を作っています
プロジェクトA-1の内部は名前空間a.A1以下にしています
プロジェクトA-2の内部は名前空間a.A2以下にしています
プロジェクトA-1でプロジェクトA-2のクラスを使いたい為に、プロジェクトA-1のソースコードで
using a.A2;
と記述していますが、
「型または名前空間名A2はaに存在しません。アセンブリ参照が不足しています。」
とか言われて上手くいきません
VC#2008でプロジェクトA-1を右クリックして、プロジェクトの依存関係でA-2にチェックを入れたりしましたが駄目でした
アドバイスお願いいたします
0675デフォルトの名無しさん
2008/08/14(木) 17:39:200676デフォルトの名無しさん
2008/08/14(木) 17:47:19プロジェクトの依存関係はコンパイルする順番を制御するだけだからこの場合は関係ないよ
0677デフォルトの名無しさん
2008/08/14(木) 17:48:21依存関係は、更新したときに相方を先にビルドしなおすことが必要なときに設定。
0678デフォルトの名無しさん
2008/08/14(木) 18:32:200679デフォルトの名無しさん
2008/08/14(木) 19:10:40レスありがとうございます
参照も確認していました
A-1でA-2のプロジェクトを参照していました
原因はわかりませんが、その後再起動したところ、直っていました
ありがとうございました
0680デフォルトの名無しさん
2008/08/14(木) 19:28:19その節はたいへんありがとうございました。
さて、今回ですが、起動時に引数を取ることはできるのですが、さらに、そのうえで、起動後にも(1)コマンドラインから(2)TCP/IP経由で他のマシンから引数を取得して検索を開始するにはどうしたらよいでしょう?
アドバイスお願いします。
ちなみに、起動時に引数を取る処理は、
static void Main(string[] args)
としたうえで、
string[] args = Environment.GetCommandLineArgs();
if (args.Length != 1)
{
findstring.Text = string.Join(", ", args, 1, args.Length - 1);
startbutton_Click(this, EventArgs.Empty);//〔検索〕ボタンをクリックして検索実行。
}
と処理しています。
0681デフォルトの名無しさん
2008/08/15(金) 00:29:20SystemColorsからは取得できなさそうな雰囲気なのですが、、、
0682デフォルトの名無しさん
2008/08/15(金) 00:59:34そのときのESSIDの取得方法
が分かりません
ヒントでも良いので、教えて下さい
0683デフォルトの名無しさん
2008/08/15(金) 01:43:14文字列に変換する方法として以下の方法は適切でしょうか?イリーガルでしょうか?
System.Diagnostics.FileVersionInfo ver = System.Diagnostics.FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly().Location);
MessageBox.Show(this, "" + ver, "バージョン情報", MessageBoxButtons.OK, MessageBoxIcon.Information);
0684デフォルトの名無しさん
2008/08/15(金) 01:59:18ManagementClass mc = new ManagementClass(@"root\WMI", "MSNdis_80211_BaseServiceSetIdentifier", new ObjectGetOptions());
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
byte[] temp = (byte[])mo["Ndis80211MacAddress"];
String[] token = new String;
String BSSID = null;
for (int i = 0; i < 6; i++)
{
token = Convert.ToString(temp, 16);
token = token.PadLeft(2, '0');
BSSID = BSSID + token;
}
BSSID = BSSID.ToUpper();
Console.WriteLine("BSSID :" + BSSID);
}
}
0685デフォルトの名無しさん
2008/08/15(金) 02:24:18ver.ToString()
String.Concatは暗黙的にToStringを呼んで文字列にしてから連結してる。
0686デフォルトの名無しさん
2008/08/15(金) 02:59:21ありがとうございます。
明示的にToString()した方がスマートですね。
0687デフォルトの名無しさん
2008/08/15(金) 03:47:42それそこまで言うほど重要じゃないから
重要なのは、値型をobjectで渡さないことと、引数が配列になってしまうのを防ぐこと
値型をToString()していないと、ボックス化のコストが余計にかかる
引数を配列で渡すはめになると、配列を生成する分、メモリと時間のコストがかかる
public static string Concat(object[] args)
public static string Concat(string[] values)
文字を連結するときはできるだけ以下の引数と一致するようにすることが大事
public static string Concat(object arg0)
public static string Concat(object arg0, object arg1)
public static string Concat(object arg0, object arg1, object arg2)
public static string Concat(object arg0, object arg1, object arg2, object arg3)
public static string Concat(string str0, string str1)
public static string Concat(string str0, string str1, string str2)
public static string Concat(string str0, string str1, string str2, string str3)
0688デフォルトの名無しさん
2008/08/15(金) 04:05:47メリットを紹介しているサイトとかないでしょうか?
0689デフォルトの名無しさん
2008/08/15(金) 04:07:32設計した人の好み?
自前クラスだと自分で決められなかったっけ?
0690デフォルトの名無しさん
2008/08/15(金) 04:16:550691デフォルトの名無しさん
2008/08/15(金) 04:21:06最近の言語で、パブリックメソッドの先頭を大文字にしないのを
慣習としてるのは、むしろ稀なんじゃないか。
0692デフォルトの名無しさん
2008/08/15(金) 04:27:070693デフォルトの名無しさん
2008/08/15(金) 04:29:200694デフォルトの名無しさん
2008/08/15(金) 04:34:32「最近の言語」ってたとえば何を念頭においてるんだ。
.NET Fx上で動く言語を除いたらそんなにたくさん思い浮かばんぞ。
0695デフォルトの名無しさん
2008/08/15(金) 05:37:21それ、ソース元がmsなんだけど…もしかして信者?
0696デフォルトの名無しさん
2008/08/15(金) 05:39:03メソッドはメモリ上では固定の場所に格納されるんですけど、何が固定されてるんですか?
0697デフォルトの名無しさん
2008/08/15(金) 05:50:550698デフォルトの名無しさん
2008/08/15(金) 08:25:020699デフォルトの名無しさん
2008/08/15(金) 08:27:21所詮はコンパイルまで必要な名称なだけでコンパイルしちゃえば大文字だろうが小文字だろうがどうでもいい。
昔から変数の名前だってそうだろ?
ルールというか慣習なんかもあってメソッドの頭を大文字にするならそれにあわせればいい。
細かいことにこだわってて仕事になるのか?
こだわるならバグが入らないようなコーディングや、テストとかにこだわれ
0700デフォルトの名無しさん
2008/08/15(金) 09:01:570701デフォルトの名無しさん
2008/08/15(金) 09:41:48え、だからそういう流れになって来たのをお前がまた復唱しただけだぞそれ
0702デフォルトの名無しさん
2008/08/15(金) 10:06:120703デフォルトの名無しさん
2008/08/15(金) 10:12:34メインスレッドで負荷のかかることスンナとか言われてたな
0704デフォルトの名無しさん
2008/08/15(金) 11:21:27細かい事(たかた2chの1スレッドで話題にされていること)にこだわってるのは
君自身じゃないの?
俺の意見を言わせてもらえば、答えは案外簡単で、
Camel形式より人にとって自然だからでしょ。
別の言い方を比喩的に言えば、Camel形式の方が「情報量が高い」わけで
それをメソッドみたいな「ありがちな」ものに割り当てるのは合理的じゃないからだ。
>>699的にコンパイラの立場にたったものの言い方はあまり意味はない。
だってコード書くのは人間だからな。
0705デフォルトの名無しさん
2008/08/15(金) 11:32:30CLRにはVBやPascalのような大文字小文字を区別しない処理系向けに、
リフレクションに大文字小文字を区別しないオプションが存在している。
0706デフォルトの名無しさん
2008/08/15(金) 11:36:02その流れを汲んだんだと俺は思っている。
0707デフォルトの名無しさん
2008/08/15(金) 12:09:270708デフォルトの名無しさん
2008/08/15(金) 12:10:240709デフォルトの名無しさん
2008/08/15(金) 12:33:24それがかっこいい
0710デフォルトの名無しさん
2008/08/15(金) 12:37:28ありがとうございました。それでやってみます。
0711デフォルトの名無しさん
2008/08/15(金) 12:39:21WebBrowserを使って自動で数ページ移動するのに時間がかかる場合も
重い処理に入るんですかね
0712デフォルトの名無しさん
2008/08/15(金) 14:52:04SP1にしたらコンパイル通らねええ
勝手に仕様変えるのおかしいだろ、常識的に考えて
0713デフォルトの名無しさん
2008/08/15(金) 14:58:390714デフォルトの名無しさん
2008/08/15(金) 15:28:270715デフォルトの名無しさん
2008/08/15(金) 15:40:430716デフォルトの名無しさん
2008/08/15(金) 15:46:020717デフォルトの名無しさん
2008/08/15(金) 15:54:14プライオリティを下げてもFormの描画も止まり、他のプログラムもCPUをもって
かれてしまいます。
Webアクセスを別スレッドにして、プライオリティを下げれば解決できるのでしょうか?
C#でのやり方もよく分からないので、ご教授お願いします。
0718デフォルトの名無しさん
2008/08/15(金) 15:59:010719デフォルトの名無しさん
2008/08/15(金) 16:00:54プロジェクトの設定でProperties.Settings.Defaultの設定をする部分。
ここで以前はソースコード中のenumの値が設定できたと思うんだけど、
アセンブリ参照しないとユーザー定義の型が設定できない。
前は出来たと思う、って言うかそのままだとコンパイル通らない
0720デフォルトの名無しさん
2008/08/15(金) 16:01:34プライオリティ下げてもメインスレッドのループ部分でApplication.Doeventsを発行しないまま
処理してるとFormの描画とかは行われないですよ。
で、Formとは別のスレッドでループ部分を処理させて、Form部分はそれの監視と状況報告として
再描画などを行う感じで分けるか面倒ならループの中にApplication.Doeventsをいれるか。
0721717
2008/08/15(金) 16:13:33とりあえずDoeventsやってみます。
あと、実はプロセスの優先度をC#だけでやる方法も分かってなかったりします。
API使って…もっとスマートな方法あると思うのですが、いろいろ調べでも分かりませんでした。
たびたびすいませんが、ヒントを教えてもらえないでしょうか?
0722デフォルトの名無しさん
2008/08/15(金) 16:16:47通信なんてもってのほか。
0723717
2008/08/15(金) 16:27:56最初はそんなつもりじゃなかったんだけど、初めてのC#で
ユーザーからの要望が「通信処理入れてくれ」ってので徐々に
肥大化して参ってます。
そのうち1からC++かC#で書き直します。
0724デフォルトの名無しさん
2008/08/15(金) 16:29:03いやだから>>500からその手の説明もしてくれてるから。
目を通してみるといいよ。
0725500
2008/08/15(金) 16:30:38ググってみるとサンプルもでてくるよ。
ちなみに>>500だからw俺w
0726デフォルトの名無しさん
2008/08/15(金) 16:35:18スレッドの優先度いじくって何とか仕様とするのをやめれ。
無駄だから。
UIを固まらせたくないなら、webclientのDownloadAsync系のメソッド使って
非同期で通信してProgressChangedイベントでUIスレッドに通知し、
適宜Control.Refresh()なりを呼ぶのが一番単純だと思う。
0727717
2008/08/15(金) 16:35:23しかし、このスレ凄い親切ですね。
0728デフォルトの名無しさん
2008/08/15(金) 16:54:41将来プログラマとかSEになりたい、とかならわかるけど。
向上心ないよね、頑固だし。
そういう派遣テスターって、仕様書は読めない、
テスト仕様書も作れない、テストプログラムも作れない
やれることは「テキトーにプログラムを触る」ことだけ。
俺は派遣プだけどさ、こういう派遣テスターがいると
派遣全体がバカにされるんだよ。
テスト専門派遣なんて氏んで欲しいよ、まったく。
今日も正社員の人が派遣テスターに仕様書を読んで
テスト仕様書を作ってください、って説教してたよ。
その派遣は頑固に「何故、仕様書が必要なんですか?」って
反論してたから、きっとテスト専門派遣テスターだな。
仕様書も読まず、テスト仕様書も作らず、ただテキトーに
プログラム触るだけで給料もらおうなんて頭おかしいんじゃねーの?
あ〜あ、あの派遣テスターが3ヵ月後に切られるまで、
仕様書も読まねーでテキトーにテストしたバグ票がまわってくんのかよ。
そんな糞なもん、読んで処理する派遣プの身にもなってくれよ。
うわ〜、しかもそいつが切られる3ヵ月以内に中間納品あるじゃねーか!
テスト仕様書もなしにテキトーにテストして納品か。
中間納品後にソッコウクレームでデスマ必至だな。俺の休みも返上かよ。
派遣専門テスターさんよ、少しは向上心持てよ!
頑固な性格直して仕様書読めよ!テスト仕様書作れよ!
0729デフォルトの名無しさん
2008/08/15(金) 16:58:020730デフォルトの名無しさん
2008/08/15(金) 16:58:460731デフォルトの名無しさん
2008/08/15(金) 16:59:190732デフォルトの名無しさん
2008/08/15(金) 17:02:06だまされたぁぁあぁ
0733デフォルトの名無しさん
2008/08/15(金) 17:03:45ttp://society6.2ch.net/test/read.cgi/gline/1139460483/
0734デフォルトの名無しさん
2008/08/15(金) 17:08:42それは仕事じゃないだろw
0735デフォルトの名無しさん
2008/08/15(金) 19:55:08各クラスが持つメソッド等の一覧を探してます。
ActionScriptにおける
http://livedocs.adobe.com/flex/2_jp/langref/
のサイトに相当するようなページってどこにあるんでしょうか。
Visual C#のヘルプとMSDNは探してみたんですが、それらしいものが見つかりませんでした。
0736デフォルトの名無しさん
2008/08/15(金) 20:03:32それ以外ならそれを作った奴に聞け
0737735
2008/08/15(金) 20:49:57.NET開発の下位にあるとは思いませんでした。
お騒がせしました。
0738デフォルトの名無しさん
2008/08/15(金) 23:17:39開発環境:VisualStudio2008
外部のdllを参照しているのですが,出力されるEXEにDLLを組み込むことは可能でしょうか?
0739デフォルトの名無しさん
2008/08/15(金) 23:19:48EXEに組み込んだらそれはダイナミックリンクとはいわない。
0740デフォルトの名無しさん
2008/08/15(金) 23:23:13確かに。
0741デフォルトの名無しさん
2008/08/15(金) 23:39:360742デフォルトの名無しさん
2008/08/15(金) 23:40:58まぁ普通組み込む意味ねーよなとしか個人的に思えないけど
質問に答えてみると、それだけの情報じゃわかんない
答えるには、DLL が .NET なのかそして Pure IL なのかライセ
ンス大丈夫なのかとか細かい条件が必要
0743デフォルトの名無しさん
2008/08/15(金) 23:41:50アセンブリーキャッシュのDLLの静的リンクはできないはず
自前のDLLとEXEならフリーソフトを使って一つのファイルにできる
名前忘れたが
0744デフォルトの名無しさん
2008/08/15(金) 23:43:44アセンブリを2個読み込むより1個読み込むほうが早いしメモリも喰わないから意味はある
ネイティブDLLならしらね
0745デフォルトの名無しさん
2008/08/15(金) 23:48:170746デフォルトの名無しさん
2008/08/15(金) 23:51:430747デフォルトの名無しさん
2008/08/15(金) 23:55:27そういや baseaddress きちんと指定したらどうなんだろう。いつの間にか
オプションに追加されてたから意味ある気がするが・・・
ネイティブ重いのはその辺だった気がするけど CLR のロードはなんか
色々ありそうだし・・・
0748デフォルトの名無しさん
2008/08/16(土) 02:15:29.NETはアセンブリを読み込んだ後ハッシュをチャックしたり、コンパイルの準備をしたりしなきゃならないんだから
読み込むDLLが少ないほうがいいに決まってるだろ
ただ実行すればいいネイティブDLLとはわけが違う
0749デフォルトの名無しさん
2008/08/16(土) 02:22:500750hebolio
2008/08/16(土) 03:01:48仕事中にこっそり自分のサーバと通信するアプリケーションを作りたいと思い、
windowsアプリケーションを作成したくここにたどりつきました。
(ブラウザだとばればれなんですよ。)
C#でサンプルつくるような見本はwebにちらばってるのですが、
.exeファイルにして実行できるようにするにはどうすればいいのですかね。
アプリつくって実行ファイルにして配布するところまでいきたいです。
.csとか言うファイルを変換したりするのですかね。
いい書籍があれば教えてくだ
0751デフォルトの名無しさん
2008/08/16(土) 03:03:440752デフォルトの名無しさん
2008/08/16(土) 03:20:500753デフォルトの名無しさん
2008/08/16(土) 07:20:05よく「あなたが言っているのは処理系の話で、○○とは違う」
と言われます
0754デフォルトの名無しさん
2008/08/16(土) 10:00:19F5を押したあとに、プロジェクトのフォルダを探し回ればexeが見つかるだろ。
0755デフォルトの名無しさん
2008/08/16(土) 11:45:350756デフォルトの名無しさん
2008/08/16(土) 11:59:360757デフォルトの名無しさん
2008/08/16(土) 12:03:10な、何番を読んだら・・・
0758デフォルトの名無しさん
2008/08/16(土) 12:09:270759デフォルトの名無しさん
2008/08/16(土) 12:23:520760デフォルトの名無しさん
2008/08/16(土) 16:25:550761デフォルトの名無しさん
2008/08/16(土) 17:11:090762デフォルトの名無しさん
2008/08/16(土) 17:33:59いいぞ,もっと言ってやれ。
0763デフォルトの名無しさん
2008/08/16(土) 17:53:40URL与えて、WindowsMediaPlayer.start()を呼び出しても再生までに500millisec程ラグがあります。
このラグを短く、せめて半分にしたいのですがMCIやDirectXを使えばもう少し早くなるのでしょうか?
0764デフォルトの名無しさん
2008/08/16(土) 18:47:33SizeChangedイベントとWindowStateプロパティかな
0765デフォルトの名無しさん
2008/08/16(土) 19:04:40ここはふらっとスレなんだから そう言うなよ。
0766デフォルトの名無しさん
2008/08/16(土) 19:11:15SizeChangedとWindowStateですかー、気づきませんでした。
ありがとうございました。
0767デフォルトの名無しさん
2008/08/16(土) 19:28:440768デフォルトの名無しさん
2008/08/16(土) 20:50:07金無いんなら頭使え。
使う頭無いなら氏ね。
0769デフォルトの名無しさん
2008/08/16(土) 20:51:270770デフォルトの名無しさん
2008/08/16(土) 21:09:39テンプレ持ってない低学歴には用はない
0771デフォルトの名無しさん
2008/08/16(土) 21:51:500772デフォルトの名無しさん
2008/08/16(土) 23:19:280773デフォルトの名無しさん
2008/08/17(日) 00:31:36エンターをを押したらメッセージボックスを出す
といったようなプログラムを作るには、どうしたらいいのでしょうか。
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
MessageBox.Show("test");
}
}
これだとフォームがアクティブになってないと反応してくれません。
どうしたらいいでしょうか?
0774デフォルトの名無しさん
2008/08/17(日) 00:32:320775デフォルトの名無しさん
2008/08/17(日) 00:50:370776デフォルトの名無しさん
2008/08/17(日) 00:51:17すいません、これは例えです。
何かキーを押したときに特定の動作をさせたいんです。
0777デフォルトの名無しさん
2008/08/17(日) 00:52:120778デフォルトの名無しさん
2008/08/17(日) 00:57:560779デフォルトの名無しさん
2008/08/17(日) 01:14:19神
ありがとうございます!
0780デフォルトの名無しさん
2008/08/17(日) 01:16:140781デフォルトの名無しさん
2008/08/17(日) 01:17:330782デフォルトの名無しさん
2008/08/17(日) 01:41:050783デフォルトの名無しさん
2008/08/17(日) 01:58:450784デフォルトの名無しさん
2008/08/17(日) 03:56:320785デフォルトの名無しさん
2008/08/17(日) 04:28:200786デフォルトの名無しさん
2008/08/17(日) 08:08:580787デフォルトの名無しさん
2008/08/17(日) 13:51:57felicaのカードのIDをbyte型で取得した数値をStringに変換したのですがどのようにすればいいでしょうか?
また、byte型の数値が1桁の場合0を追加して2桁にして出力したいと考えています。
byte[0] =1
byte[1] =1
byte[2] =6
byte[3] =1
byte[4] =136
byte[5] =11
byte[6] =162
byte[7] =24
の場合、String型で010106011361116224
と出力したいということです。
for(int i=0;i<IDm_No.Length;i++) //IDm_Noにbyte型で上記の数字が入ってます
{
〜
}
私の書き方が悪いんだと思うのですが、System.Text.Encoding.GetEncodingを使用してもうまくできませんでした。
わかる方いましたら教えていただけないでしょうか?
よろしくお願いします。
0788デフォルトの名無しさん
2008/08/17(日) 14:00:06for(int i=0;i<IDm_No.Length;i++)
{
s.Append(IDm_no[i].ToString());
}
string id = b.ToString();
これで、その出力結果とおなじのがidに入ると思う。
felicaのことはまったく知らんけど、>>786はなにか仕様を勘違いしてるような気がするが・・・
0789デフォルトの名無しさん
2008/08/17(日) 14:01:25ToString()のところはToString("D02")だな。
0790デフォルトの名無しさん
2008/08/17(日) 14:02:30それ
s.Append(IDm_no[i].ToString("D2"));
ってしないとダメでしょ。
っていうかせっかくStringBuilder使うならAppendFormat使わなきゃ。
そうすればforループが不要になるよ。
0791デフォルトの名無しさん
2008/08/17(日) 14:03:52StringBuilder b = new StringBuilder();
for(int i=0;i<IDm_No.Length;i++)
{
b.Append(IDm_no[i].ToString("D02"));
}
string id = b.ToString();
0792デフォルトの名無しさん
2008/08/17(日) 14:06:07ってか仕様おかしいよね…
0793デフォルトの名無しさん
2008/08/17(日) 14:07:14byte型の配列が8バイトって決まってないと、使えないジャン。
まあ、見た感じ8バイトっぽいけど。
0794デフォルトの名無しさん
2008/08/17(日) 14:15:100795デフォルトの名無しさん
2008/08/17(日) 14:20:110796デフォルトの名無しさん
2008/08/17(日) 14:25:230797デフォルトの名無しさん
2008/08/17(日) 14:27:04本当の仕様は。
0798デフォルトの名無しさん
2008/08/17(日) 14:36:12実行途中の過程を見たらなぜか10進で表示されていたので気にしないでいました。。。
ちゃんと見たら16進で出力されていたので、10進に直して出力したい。の間違いです。
ごめんなさい orz
0799787
2008/08/17(日) 14:54:30お騒がせしてすいませんでしたorz
0800デフォルトの名無しさん
2008/08/17(日) 14:56:520801デフォルトの名無しさん
2008/08/17(日) 18:57:58ひらがなをタイプして変換しようとしてもカタカナにする事しかできません。
これは仕様なのでしょうか?
0802デフォルトの名無しさん
2008/08/17(日) 19:06:36フォントとかIMEの設定とかどうなってる?
0803デフォルトの名無しさん
2008/08/17(日) 21:38:330804デフォルトの名無しさん
2008/08/17(日) 21:43:44Textbox.IMEControlはNoControlです。
IMEはMS_IME2007で入力モードひらがな、変換モード一般です。
フォントはメイリオです。
Janeなど他のアプリケーションでは問題なく、.NetでTextboxを使うアプリだけで起こります。
ttp://www.uploda.org/uporg1615911.png
0805デフォルトの名無しさん
2008/08/17(日) 23:46:36使わないと困るような事ってあるんでしょうか?
0806デフォルトの名無しさん
2008/08/17(日) 23:57:11クロージャっぽくしたいときとか
0807デフォルトの名無しさん
2008/08/18(月) 02:13:240808デフォルトの名無しさん
2008/08/18(月) 02:24:540809デフォルトの名無しさん
2008/08/18(月) 02:28:30おまえは
なにを
いっているんだ
0810デフォルトの名無しさん
2008/08/18(月) 02:40:30具体的に何がしたいんだ?
ファイルでも検索したいの?
0811デフォルトの名無しさん
2008/08/18(月) 02:46:400812デフォルトの名無しさん
2008/08/18(月) 03:02:470813デフォルトの名無しさん
2008/08/18(月) 07:40:322,3行までのメソッドをデリゲートで呼び出すなら、わざわざdelegateやメソッドを
定義するより 楽ちんだって言うことだとおもうよ。
あと、匿名メソッドの場合は 匿名メソッドの属するスコープのローカル変数を
参照できるというメリットがある。
List<int> il = ......; というList<int>があるとして このうち5以下の数字のみ
取り出したリストを取得するには
List<int> il2 = il.FindAll(delegate(int x) { return x <= 5; });
または List<int> lf = il.FindAll(delegate((x) => x<5);
とできるけど 匿名メソッドの場合、
さらにこのスコープのローカル変数で int maxNumというのがあるとして
List<int> il2 = il.FindAll(delegate(int x) { return x <= maxNum; });
List<int> il2 = il.FindAll((x) => x < maxNum);
という風に匿名メソッド(またはラムダ式)の中から ローカル変数maxNumを参照できる。
これは名前付きメソッドとdelegateでは単純な方法では実現できない。
0814デフォルトの名無しさん
2008/08/18(月) 07:42:44>または List<int> lf = il.FindAll(delegate((x) => x<5);
は、
または List<int> lf = il.FindAll((x) => x<5); のまちがいです。
0815デフォルトの名無しさん
2008/08/18(月) 07:42:520816デフォルトの名無しさん
2008/08/18(月) 07:46:22おれも可読性は落ちると思うよ。
原則1行のメソッドにしか使わない。
でも一回覚えてしまうと 楽ちんなんだよね。
0817デフォルトの名無しさん
2008/08/18(月) 07:53:49ラムダのテストってどうすんの?
0818デフォルトの名無しさん
2008/08/18(月) 08:34:55それだけでテストの対象になるような区切りだったら、
ラムダ式使わないでちゃんとしたメソッドにする。
メソッドをわざわざ書くのもばかばかしいような細かさのものにだけ使う。
0819デフォルトの名無しさん
2008/08/18(月) 10:08:53引数がないとき ヘルプを表示
引数があるとき 実行。
static void Main(string[] args)
if (args[0] == ""){
// ヘルプを表示
Console.WriteLine("Usage: tmp filename");
}
else{
// 実行
Console.WriteLine("execute");
}
だと、ifの条件の行で「ハンドルされていない例外。インデックスが配列の境界外です」が出ます。
ifの条件をどう書けばいいでしょう?
if (args[0] == NULL)
とかは試したけどだめでした。
0820デフォルトの名無しさん
2008/08/18(月) 10:18:12if (args.Length == 0)
でどう?
0821デフォルトの名無しさん
2008/08/18(月) 10:25:04たぶん 引数がないときは argsは長さ0の配列として初期化されているんじゃ
ないの?
だから、 if(args.Length > 0)…(引数有り) 、else…(引数無し)で場合分けすればよいかと。
0822デフォルトの名無しさん
2008/08/18(月) 10:29:490823デフォルトの名無しさん
2008/08/18(月) 10:39:26System.Diagnostics.Process.Start(@"NetHood\ftp.server.com");
0824デフォルトの名無しさん
2008/08/18(月) 10:50:34初期化なんてしたらせっかくもらった引数がきえちまうだろ
0826デフォルトの名無しさん
2008/08/18(月) 14:57:20普通に書いて、エラーが出たらヘルプ表示の方がよくない?
try
catch
だっけか?
0827デフォルトの名無しさん
2008/08/18(月) 15:02:050828デフォルトの名無しさん
2008/08/18(月) 15:04:13普通に書いて、エラーが出たらヘルプ表示の方がよくない?
try
catch
だっけか?」
と言ってる
0829デフォルトの名無しさん
2008/08/18(月) 15:06:14かならず引数を必要とするプログラムなら、
単独で起動することはないので、
単独で起動するときに、かんたんなusageを出し、
helpで詳しいヘルプを出す、というのはありじゃないですか?
ちなみに作ってるのはファイルアップローダーなので、
入力待ちになっても困る。
0830デフォルトの名無しさん
2008/08/18(月) 15:22:24えっと、要はエラーになる要因を最初に探すより、やってみてエラーになったら考えるのはどう?って事です。
以下、Delphiでごめん。
if( a <> 0 )then
b := c / a
else
b := 0;
よりも
try
b := c / a
except
b := 0;
end;
の方が可読性がいいんじゃないかなと・・・
0831デフォルトの名無しさん
2008/08/18(月) 15:25:410832デフォルトの名無しさん
2008/08/18(月) 15:33:22特に初心者は、味をしめて手軽な逃げ道として乱用しがちになる。
深く考えずに例外処理使うから、後々困るし、全然理解が深まらない。
0833デフォルトの名無しさん
2008/08/18(月) 15:33:34C#初心者なので、Delphiは未見だし、
すぐにはまだ使えそうにないですが、
なるほど。とりあえず引き出しに入れときます。
アドバイスには感謝します。
現時点では、可読性というほど複雑なことはできずにいます。
なにしろ、コメント行とシステムが書いてくれた行を抜くと、
12〜3行しかないプログラムです。
0834デフォルトの名無しさん
2008/08/18(月) 15:37:01素晴らしい
0835デフォルトの名無しさん
2008/08/18(月) 15:37:52可読性といいつつも、なんでC#スレでデルファイなわけ?
そのコードだけど、ゼロで割ることについての例外だけど、なんか哲学的だと思う。
0836デフォルトの名無しさん
2008/08/18(月) 15:39:11ファイルを読み、表示しています。
これで任意の行(たとえば3行目だけ)を取り出すには、
なにをどこに書けばいいんでしょうか。
3行目だから、lines[3]かと考え、
Console.WriteLine(lines[3]);
だと3文字目を取り出してしまうのです。
ついでに文字列が一致した行を出力するには?
StreamReader readContents = new StreamReader(filename);
while ((lines = readContents.ReadLine()) != null)
{
Console.WriteLine(lines);
}
readContents.Close();
0837デフォルトの名無しさん
2008/08/18(月) 15:49:30ReadLineは一行読むメソッドなんだから何行読んだか数えればいい。
一致したかどうかなんてそれこそ行ごとにチェックしてけばいいだろ。
……while文は理解できてる?
0838デフォルトの名無しさん
2008/08/18(月) 15:51:21つまり、3回目のループの時が3行目。
一致というのがどの意味での一致かわからないが、String.IndexOfを使うか正規表現Regexあたりで。
0839デフォルトの名無しさん
2008/08/18(月) 16:08:47whileで使い回しているのはわかってきた感じです。
毎回line(旧lines)の内容を書き換えているので、3行目で処理しないと消えてしまうわけです。
>>838
カウントですね!
while ((line = readContents.ReadLine()) != null)
{
}
for (int i = 1; 1 < i ; i++) { //1から数えてるつもり。
Console.WriteLine(line[3]);
}
で近づいてきました?
0840デフォルトの名無しさん
2008/08/18(月) 16:26:170841デフォルトの名無しさん
2008/08/18(月) 16:29:50int i = 0;
while ((line = readContents.ReadLine()) != null)
{
i++;
if(i == 3) Console.WriteLine(line);
}
readContents.Close();
こうかな
0842デフォルトの名無しさん
2008/08/18(月) 16:33:070843デフォルトの名無しさん
2008/08/18(月) 16:57:31ありがと〜。ぜんぜん違ってました。…。
なるほど。こういう風に行を指定するんですね。
0844デフォルトの名無しさん
2008/08/18(月) 16:58:54これでいいでしょうか?
そうだとすると、List<T>の方が Conatins() メソッドなどが在る分便利なので
Collectionは無駄にように感じるのですが、絶対にCollectionを使わないといけない
ようなケースがあるとしたらどんな場合でしょうか。
0845デフォルトの名無しさん
2008/08/18(月) 17:03:510846デフォルトの名無しさん
2008/08/18(月) 17:08:01この場合一般的な意味でのコレクションと言うことになるのだろうか
だがそれにしてはメソッドの有無など具体的な話になっているな
0847デフォルトの名無しさん
2008/08/18(月) 17:09:000848デフォルトの名無しさん
2008/08/18(月) 17:10:29ICollectionはListもDictionaryも含んでる
ICollectionはListにもDictionaryにも使える共通の処理を書くときに使える
まあまず使わないけど
0849844
2008/08/18(月) 17:24:57>Collectionと言われても標準ライブラリにはVB互換用コレクションぐらいしかない
それです、その>Collectionでした。
>>848
>ICollectionはListにもDictionaryにも使える共通の処理を書くときに使える
>まあまず使わないけど
やはり List<T> でいつも決めうちで使うという感じで特に問題ないですか?
0850デフォルトの名無しさん
2008/08/18(月) 17:34:15そんなのの存在は忘れていい
0851デフォルトの名無しさん
2008/08/18(月) 17:55:460852デフォルトの名無しさん
2008/08/18(月) 17:58:47大きなファイルを読み込むとbyte型配列に代入する時にOutOfMemoryになってしまいます。
巨大ファイルを送るいい方法ってありませんか?
0853デフォルトの名無しさん
2008/08/18(月) 18:01:17C#が欲しい機能はSystem.***に入ってくれるので
>>852
一部読み込んで書き込んで一部読み込んで書き込んでを繰り返す
0854デフォルトの名無しさん
2008/08/18(月) 18:03:100855デフォルトの名無しさん
2008/08/18(月) 18:04:370856デフォルトの名無しさん
2008/08/18(月) 18:08:39Microsoft.VisualBasic.Compatibility.dllを使うのは辞めてくれ。
それもC#から
0857デフォルトの名無しさん
2008/08/18(月) 18:14:480858デフォルトの名無しさん
2008/08/18(月) 18:15:07何をやりたいのかよくわからんけど
string[] lines = ReadAllText(filename);
で全行を読み込んでから好きな行を取り出すのが簡単
string s = null;
if (lines.Length > 3)
{
s = lines[2];
}
3行目だけ欲しくて残りはいらない場合は、
using (StreamReader sr = new StreamReader(filename))
{
string line = null;
int i = 0;
do
{
line = sr.ReadLine();
if (i == 2)
{
Console.WriteLine(s);
break;
}
i++;
} while (line != null);
}
using 構文を使っていない人は初心者だからあまり信用しないように
0859デフォルトの名無しさん
2008/08/18(月) 18:15:44byte[] buffer = new byte[1024];
while (true)
{
int readSize = ふぁいるすとりーむ.Read(buffer, 0, buffer.Length);
if (readSize == 0)
break;
}
こう言うことですか?
0860デフォルトの名無しさん
2008/08/18(月) 18:19:06まあそうだが書き込み忘れんなよ
0861デフォルトの名無しさん
2008/08/18(月) 18:24:29助かりました
ありがとうございます
0862836
2008/08/18(月) 19:39:03ありがとうございます。いろいろ方法あるんですね。
全文を読み込む方法も知りたいと思っていました。
ちなみになにをするかというと、
いまはWebから情報をダウンロードしてきて、
必要な行だけ抜き出す、という処理を書いてます。
ほかにもこの処理は基本的なテクニックなので、
テキストファイルから抜き出すとか、
けっこうひんぱんに必要だと思っているのですが、
できなくてこの1カ月くらいトライ&エラーをくり返してました。
基本的なテクニックなので、いろいろな方法を学べて、
応用していきたいと思ってます。
0863デフォルトの名無しさん
2008/08/18(月) 20:37:230864デフォルトの名無しさん
2008/08/18(月) 20:58:58ifは書けてるけどforはなんのこっちゃ分かってないようだし
stringも配列も分かってない
0865デフォルトの名無しさん
2008/08/18(月) 21:36:50ifやswitchだらけで非常に見辛くなってくるのですが
これをもっと減らし、上手く書く為には何を覚えていけばいいのでしょうか。
ある程度のプログラムになってくると、そういう物なんでしょうか…。。
0866デフォルトの名無しさん
2008/08/18(月) 21:38:08if文の深いネストに対抗する手段はただ一つ。
複数の関数に分割せよ。
0867デフォルトの名無しさん
2008/08/18(月) 21:38:420868デフォルトの名無しさん
2008/08/18(月) 21:41:140869デフォルトの名無しさん
2008/08/18(月) 21:45:320870デフォルトの名無しさん
2008/08/18(月) 21:48:320871デフォルトの名無しさん
2008/08/18(月) 22:18:140872デフォルトの名無しさん
2008/08/18(月) 23:00:270873デフォルトの名無しさん
2008/08/18(月) 23:57:25Javaこそきれいなオブジェクト指向言語ではないか。
C#で開発しているが、JAVA派である。
0874836
2008/08/18(月) 23:59:19引数の文字列を含む行を出力しようとしています。
if(lineNumber == 3 ) Console.WriteLine(line);
Console.WriteLine(line.IndexOf(args[0]));
で見ると、args[0]を含む行は+の数字で、それ以外は-だったので、
if (line.IndexOf(args[0]) > 1)
としてみました。
が、これがうまくヒットせず空振りしてます。
どのあたりがまずいでしょう?
0875デフォルトの名無しさん
2008/08/19(火) 00:01:550876デフォルトの名無しさん
2008/08/19(火) 00:34:10void Func ( ) {
if ( frg1 ) { hoge( ) ; ・・・ }
}
を、
void Func( ) {
if( ! frg1 ) { return; }
hoge( ) ; ・・・
}
とすればネストを一つ減らせる。
メソッドの最後まで効く if ブロックにしか使えんが、探すと結構使えるとこがあるはず。
>>874
演算子の使い方がわかってなさそうなのが一番まずい。
それとC#のIndexはすべて0から。つまりIndexOfが返す数値は・・・。
あと、正直>874の間違いを理解してから使うべきだと思うが、StringクラスにはContains(string)っていう便利なメソッドがある。
if ( line.Contains( args[0] ) ) { ・・・ でおk。
0877デフォルトの名無しさん
2008/08/19(火) 01:43:06たしかに綺麗だが、そのせいで不便。
ちょっと汚いくらいがちょうどいい。
0878デフォルトの名無しさん
2008/08/19(火) 05:37:16おいらもDel厨でC#に移行中だけど感動したけどDelphiでもそれはやっちゃ駄目だと思う
0879デフォルトの名無しさん
2008/08/19(火) 08:51:07にゃい
0880836
2008/08/19(火) 12:22:30int lineNumber = 0;
while ((line = readContents.ReadLine()) != null)
{
lineNumber++;
if (line.Contains(args[0]))
Console.WriteLine(line);
else
Console.WriteLine("not一致");
}
現状の結果
19.08.2008 09:53 test
not一致
19.08.2008 09:54 test
not一致
19.08.2008 10:51 test
not一致
求める結果(1)1回でもヒットした場合
テストずみ Console.WriteLine("テストずみ");を1回だけ。
求める結果(2)1回もヒットしなかった場合
not一致 Console.WriteLine("not一致"); を1回だけ。
0881デフォルトの名無しさん
2008/08/19(火) 12:30:11みつかったら、見つかったフラグ=trueにしてbreak
ループ抜けたあとに、見つかったフラグを調べればいい
0882デフォルトの名無しさん
2008/08/19(火) 13:26:430883デフォルトの名無しさん
2008/08/19(火) 14:05:200884デフォルトの名無しさん
2008/08/19(火) 14:09:14bool hit = false;
while ((line = readContents.ReadLine()) != null)
{
lineNumber++;
if (line.Contains(args[0]))
{
hit = true;
Console.WriteLine(line);
}
}
if(hit)
...
else
...
0885デフォルトの名無しさん
2008/08/19(火) 14:34:40public static IEnumerable<string> TextFile(string filename) {
using (var sr = new StreamReader(filename)) {
string s; while ( ( s = sr.ReadLine() ) != null ) yield return s;
}
}
static void Main(string [] args) {
if (args.Length < 2) return;
Console.WriteLine(TextFile(args[0]).Any((s) => s.Contains(args[1]))?"済":"未");
}
0886デフォルトの名無しさん
2008/08/19(火) 14:40:44int lineNumber = 0;
try
{
while ((line = readContents.ReadLine()) != null)
{
lineNumber++;
if (line.Contains(args[0]))
throw new Exception();
}
Console.WriteLine("not一致");
}
catch
{
Console.WriteLine("テストずみ");
}
これじゃただのGOTOです><
0887デフォルトの名無しさん
2008/08/19(火) 15:20:44using 幾つか追加してみたけど、
textfile.cs(7,15): error CS1518: クラス、デリゲート、列挙型、インターフェイス
または構造体が必要です。
textfile.cs(8,23): error CS1518: クラス、デリゲート、列挙型、インターフェイス
または構造体が必要です。
textfile.cs(11,1): error CS1022:
型、名前空間の定義、またはファイルの終わりが必要です。
とか出てうごかないの。csc.exe textfile.cs で実行しますた
0888デフォルトの名無しさん
2008/08/19(火) 15:33:13File.ReadAllLines()使えよ。
0889デフォルトの名無しさん
2008/08/19(火) 15:37:46VS2008かな?
2008で、対象のフレームワークを3.5にして
using System.IO;
using System.Linq;
でいけるかと。
0890デフォルトの名無しさん
2008/08/19(火) 15:44:44どう見てもコマンドラインコンパイル
そして明らかにclassを未定義
0891デフォルトの名無しさん
2008/08/19(火) 16:15:39using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace EasySample
{
class Program
{
static void Main(string [] args) {
if (args.Length < 2) return;
Console.WriteLine(TextFile(args[0]).Any((s) => s.Contains(args[1]))?"済":"未");
}
public static IEnumerable<string> (string filename) {
using (var sr = new StreamReader(filename)) {
string s; while ( ( s = sr.ReadLine() ) != null ) yield return s;
}
}
}
}
見よう見まねでクラスで包んで診た所、やはりコンパイルが通らない…(謎
0893デフォルトの名無しさん
2008/08/19(火) 16:17:22プロジェクトのプロパティ出して、アプリケーションのとこの対象のフレームワークを3.5に
0894デフォルトの名無しさん
2008/08/19(火) 16:23:51csc.exe textfile.cs と打ち込んで
DOS窓からコンパイルしたいです…むりぽですか?
0895デフォルトの名無しさん
2008/08/19(火) 16:25:430896デフォルトの名無しさん
2008/08/19(火) 16:38:420897デフォルトの名無しさん
2008/08/19(火) 16:49:33>csc.exe textfile.cs
Microsoft (R) Visual C# 2008 Compiler version 3.5.30428.1
for Microsoft (R) .NET Framework version 3.5
Copyright (C) Microsoft Corporation. All rights reserved.
エラーメッセージが以下に続く…
ttp://d.hatena.ne.jp/bellbind/20070802/1186020328
ここのサンプルは動かすことできたのですが、
同じ3.5なので動くはず…
1. バージョンが>>891では異なるので失敗する
2. 名前空間とクラスの部分の記述が間違えている
書き換える箇所は、そんなに多くはないと思うのですが
エラー出力からどう直してよいか…難しい…
0898デフォルトの名無しさん
2008/08/19(火) 16:52:19メソッド名(TextFile)が欠けている。
0899デフォルトの名無しさん
2008/08/19(火) 16:53:17コピペ失敗してるだけではないかい。関数名がないぞ。
0900デフォルトの名無しさん
2008/08/19(火) 16:58:110901デフォルトの名無しさん
2008/08/19(火) 16:59:010902デフォルトの名無しさん
2008/08/19(火) 17:00:150903891
2008/08/19(火) 17:02:51>textfile linq1.cs using
済
>textfile linq1.cs TextFile
未
できました…! 簡単にgrep実装できてて驚きますた
あとお騒がせして申し訳ありませんでした…orz
0904デフォルトの名無しさん
2008/08/19(火) 17:05:380905デフォルトの名無しさん
2008/08/19(火) 17:05:540906891
2008/08/19(火) 17:09:2930行くらいエラーが出力されて、よくよく読んでみたら
構文エラーですよね > 無効なトークン
textfile.cs(9,37): error CS1519: 無効なトークン '(' が
クラス、構造体またはインターフェイスのメンバ宣言で使用されています。
textfile.cs(9,53): error CS1002: ; が必要です。
textfile.cs(10,47): error CS1002: ; が必要です。
textfile.cs(12,7): error CS1519: 無効なトークン 'while' が
つかじぶん入門書嫁orz コマンドライン叩けorz
0907デフォルトの名無しさん
2008/08/19(火) 17:21:10IDE使え
0908デフォルトの名無しさん
2008/08/19(火) 17:23:120909デフォルトの名無しさん
2008/08/19(火) 17:25:27正直ちょっとうざい。
0910デフォルトの名無しさん
2008/08/19(火) 17:26:490911デフォルトの名無しさん
2008/08/19(火) 17:36:350912デフォルトの名無しさん
2008/08/19(火) 17:45:45「値を返さない場合がある」
と言われるようになった気がする。
0913デフォルトの名無しさん
2008/08/19(火) 17:53:50ピクチャーボックスにある画像aを表示させ、その画像Aをクリックすると別の画像Bに切り替わり、もう一度クリックすると元の画像Aに戻るという処理をしたいと思っています。
画像の種類によって条件分岐する処理をしたいのですが、以下のように書いたところ、必ず条件式がfalseと判定されてしまいます。
正しい書き方を教えていただけないでしょうか。
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
if (pictureBox1.Image == practiceproject.Properties.Resources.PicA)
{
pictureBox1.Image = practiceproject.Properties.Resources.PicB;
}
else
{
pictureBox1.Image = practiceproject.Properties.Resources.PicA;
}
}
よろしくお願いします。
0914デフォルトの名無しさん
2008/08/19(火) 17:56:57マルチポスト乙
0915デフォルトの名無しさん
2008/08/19(火) 17:57:39PicAとPicBを一旦staticな変数に保存して全てそれを使う
0916913
2008/08/19(火) 18:13:18ありがとうございます。
以下のようにしてみましたが、やはりfalseと判定されるようです。
直接imageと比較しない方法というのは、どのように現在表示されている画像の情報を持ってくるのでしょうか。
もし一般的な方法があれば教えていただきたいです。
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
Bitmap pic1 = practiceproject.Properties.Resources.PicA;
Bitmap pic2 = practiceproject.Properties.Resources.PicB;
if (pictureBox1.Image == pic1)
{
pictureBox1.Image = pic2;
}
else
{
pictureBox1.Image = pic1;
}
}
0917デフォルトの名無しさん
2008/08/19(火) 18:20:01if (pictureBox1.Tag is string && (string)pictureBox1.Tag == "pic2")
{
pictureBox1.Image = pic1;
pictureBox1.Tag = "pic1";
}
else
{
pictureBox1.Image = pic2;
pictureBox1.Tag = "pic2";
}
0918デフォルトの名無しさん
2008/08/19(火) 18:23:43フラグ用に変数を用意し、その変数がfalseならpic1を表示してフラグをtrueに。
trueだったらpic2を表示してフラグをfalseに。
0919913
2008/08/19(火) 18:39:19ありがとうございます。無事できました。
画像の変更の際にその状態を示す変数を変えるのが
普通の方法ということも分かり、非常に参考になりました。
できれば後学のために教えていただきたいのですが、
if (pictureBox1.Image == pic1)という判定がうまくいかない原因はどこにあるのでしょうか?
0920デフォルトの名無しさん
2008/08/19(火) 18:50:30Resourcesクラスは、プロパティが参照されるたびに新しいインスタンスを返すので、
if (pictureBox1.Image == pic1) では、毎回別のインスタンスを比較していることになる。
メソッドの外に、
static Bitmap pic1 = practiceproject.Properties.Resources.PicA;
static Bitmap pic2 = practiceproject.Properties.Resources.PicB;
と書いておいて、FormのLoadイベントあたりで
pictureBox1.Image = pic1;
として画像を設定するようにすれば、Resourcesクラスのプロパティを参照するのは1回だけ
になるので、画像を直接比較しても大丈夫なんじゃないのかなあ。
検証してないけど。
別に、画像を直接比較する方法が、必ずしも間違っているわけじゃないよ。
0921デフォルトの名無しさん
2008/08/19(火) 18:55:44Bitmap pic2 = practiceproject.Properties.Resources.PicA;
if (pic1 == pic2)
これやってみるといい。
0922920
2008/08/19(火) 18:58:35static Bitmap pic1 = Properties.Resources.PicA;
static Bitmap pic2 = Properties.Resources.PicB;
private void Form1_Load(object sender, EventArgs e)
{
pictureBox1.Image = pic1;
}
private void pictureBox1_Click(object sender, EventArgs e)
{
if (pictureBox1.Image == pic1)
{
pictureBox1.Image = pic2;
}
else
{
pictureBox1.Image = pic1;
}
}
0923デフォルトの名無しさん
2008/08/19(火) 19:08:50これを見ながらC#でWebBrowser拡張してるんですが、VB→C#がいまいち分からないのでご教授ください。
1. refと[Out]を同時に指定するとエラーになります。この場合はC#のoutでいいのでしょうか、それとも他の指定がいいのでしょうか?
2. ExHtmlHistory.EnumEntriesの中で、TLEntry.Nextの第三引数(ByRef Integer)にNothingを渡していますが、これにあわせてnullを渡すと怒られます。
この場合何を渡すのが適切でしょうか。
0924913
2008/08/19(火) 19:11:52ありがとうございます。
試してから書き込もうと思ったのですが、先にやられてしまいました。。
こちらでもうまくできました。
Resourcesクラスが参照されるたびに新しいインスタンスを返すというのが
目から鱗でした。
親切に答えていただきありがとうございました。
0925デフォルトの名無しさん
2008/08/19(火) 19:17:05> 1. refと[Out]を同時に指定するとエラーになります。この場合はC#のoutでいいのでしょうか、それとも他の指定がいいのでしょうか?
out このとき属性は不要
> 2. ExHtmlHistory.EnumEntriesの中で、TLEntry.Nextの第三引数(ByRef Integer)にNothingを渡していますが、これにあわせてnullを渡すと怒られます。
> この場合何を渡すのが適切でしょうか。
Nothing渡してるの間違いな気がするが
IntPtrで宣言してIntPtr.Zero渡しとく
0926デフォルトの名無しさん
2008/08/19(火) 19:31:03ttp://smdn.invisiblefulmoon.net/mnemorepos/20050213-00.html
を見てもNothingを渡しているようなのでどうしようか困っていました。
とりあえずIntPtrを渡す方法でコンパイルOKでした。
よく考えると、outにNothing渡そうとしている時点で変数自体はどうでもいいってことですよね・・・。
これから動作検証してみます。ありがとうございました。
0927デフォルトの名無しさん
2008/08/19(火) 19:42:31このような場合、どのような手法をとるのが一番簡単に実現できるでしょうか。
今のところ、Socketのselect()関数が最初の候補として上がっているのですが、もし他に何か賢い方法があればうれしいです。
# NetworkStream単位で管理できるとかなりうれしいのですが、select()はNetworkStreamには適用できないですし…。
0928デフォルトの名無しさん
2008/08/19(火) 19:59:270929デフォルトの名無しさん
2008/08/19(火) 20:35:37一体みんなどうしてるんだ??
0930デフォルトの名無しさん
2008/08/19(火) 20:37:260931デフォルトの名無しさん
2008/08/19(火) 20:52:28意味ねえ
0932デフォルトの名無しさん
2008/08/19(火) 21:01:280933デフォルトの名無しさん
2008/08/19(火) 21:03:060934デフォルトの名無しさん
2008/08/19(火) 21:13:34いや、インターフェイスってそもそも何か分かってる?
0935デフォルトの名無しさん
2008/08/19(火) 21:41:230936デフォルトの名無しさん
2008/08/19(火) 21:49:53内部向けと外部向けを使い分けたいならpublicとinternalのinterfaceをそれぞれ用意すべき。
唯一考えられるのは、publicなクラスがあって、
本来はinternalとして扱いたいメンバーをinternalなinterfaceを通して、
アセンブリ内だけにメンバーを公開したい場合かな。
実装はpublicにする必要があるからクラス経由の場合publicにそのメンバーがアクセスできてしまう。
もっともC#にはこの問題に対応する手段はある。
0937デフォルトの名無しさん
2008/08/19(火) 21:53:02とかあるじゃない?
0938デフォルトの名無しさん
2008/08/19(火) 21:53:37それは許せないな
0939デフォルトの名無しさん
2008/08/19(火) 21:55:25オブジェクト指向の暗黒面に落ちてる
0940デフォルトの名無しさん
2008/08/19(火) 21:57:11>本来はinternalとして扱いたいメンバーをinternalなinterfaceを通して、
>アセンブリ内だけにメンバーを公開したい場合かな。
こういう状況、普通にあるよね?
0941デフォルトの名無しさん
2008/08/19(火) 21:59:10さらにinternalに同名のメソッド作ったっていいし
0942デフォルトの名無しさん
2008/08/19(火) 21:59:32他の人は使ってもしょうがないもの、
使ってほしくないものは、隠したほうが
みんなにとっていいじゃないか。
0943デフォルトの名無しさん
2008/08/19(火) 22:02:390944デフォルトの名無しさん
2008/08/19(火) 22:06:49別にファクトリクラスが必要になるがそれはご愛嬌。
0945デフォルトの名無しさん
2008/08/19(火) 22:12:36その必要性を感じたことがないなあ。
まあそれはともかく、>>931の言ってることからズレてないか?
931は単にインターフェイスの意味がわかってないだけだと思うんだけど。
0946デフォルトの名無しさん
2008/08/19(火) 22:15:31seal とか partial とか private とか internal とか namespace とか
色々あるけど、わかり易く解説キボン。
0947デフォルトの名無しさん
2008/08/19(火) 22:15:59常に1プロジェクトで完結してんの?
0948デフォルトの名無しさん
2008/08/19(火) 22:17:400949デフォルトの名無しさん
2008/08/19(火) 22:24:00その理屈だとモジュールという概念も必要ないという極論に行き着く
0950デフォルトの名無しさん
2008/08/19(火) 22:24:36何でもprivateで隠したがるのはC++で蔓延した悪い習慣。
javaはデフォルトをパッケージスコープ(internal)にしたのに誰も使ってくれなくてさびしい思いをしている。
C#はjavaの状況を観察しつつ現状に合わせてprivateをデフォルトにしたそうだ。
>>945
最初の質問は居酒屋で最初に出てくるアテみたいなもので(汗
0951デフォルトの名無しさん
2008/08/19(火) 22:28:360952デフォルトの名無しさん
2008/08/19(火) 22:29:230953デフォルトの名無しさん
2008/08/19(火) 22:32:51さすがに釣りだよね?
客が厨房に入って料理人に注文出せる料理屋の方がいいんだ、っていうのは
想像力が欠如している発想なんであってさあ。
そんな料理屋、誰に注文だしたらいいのかわかりゃしないってことになりがちでしょ?
だからたいていの料理屋は注文取りのお姉さんとだけコミュニケーションすれば済む
システムを採用してるんだけどなあ。
0954デフォルトの名無しさん
2008/08/19(火) 22:34:36Java はむしろ、今 C# が先にとりいれた機能をパクリまくってる。
C# が複雑で Java が簡単なんてのはもう元もいいとこ。
VB に至っては C# とやれることほぼ一緒。
文法が C ベースが BASIC ベースかの違いしかない。
0955デフォルトの名無しさん
2008/08/19(火) 22:34:42たとえ話がうまくなる
0956デフォルトの名無しさん
2008/08/19(火) 22:36:400957デフォルトの名無しさん
2008/08/19(火) 22:37:090958デフォルトの名無しさん
2008/08/19(火) 22:38:13VBはC#で出来こることは全部でいるように拡張されてるから見たことも無いようなキーワードがわんさか出てくる。
Public Delegate Sub ActChangeOkHandler(ByVal sender As Object, ByVal act As Boolean, ByRef rt As Boolean)
Public Custom Event ActChangeOkHandler As ActChangeOkHandler Implements IHello.ActChangeOk
AddHandler(ByVal actChangeOkHandler As ActChangeOkHandler)
End AddHandler
RemoveHandler(ByVal actChangeOkHandler As ActChangeOkHandler)
End RemoveHandler
RaiseEvent(ByVal sender As Object, ByVal act As Boolean, ByRef rt As Boolean)
End RaiseEvent
End Event
こんなの俺の知ってるVBじゃないや〜〜
0959デフォルトの名無しさん
2008/08/19(火) 22:38:22俺のいきつけの飯屋は厨房の暖簾めくっておっちゃんに注文しないと飯出てこないよ…
0960デフォルトの名無しさん
2008/08/19(火) 22:39:14{
public Program();
private static void Main(string[] args);
}
実行ファイルで、internal 使ってるとこハッケソ
あとは、メソッドはpublic, フィールドはprivate
クラスはpublicみたいなかんじだった。
珠にstaticが付いたメソッドがあるくらい。
public sealed class <- 外部向けAPIクラスでハッケソ
internal class => sealed と internal はどうやらクラスに付ける物らしい…
0961デフォルトの名無しさん
2008/08/19(火) 22:40:410962デフォルトの名無しさん
2008/08/19(火) 22:41:470963デフォルトの名無しさん
2008/08/19(火) 22:44:23文句を垂れる前に、明示的実装あたりでお茶を濁せばいいんじゃないか?
もっともMSDNによれば、
> 明示的な実装について理解するには、高度な専門知識が必要です。
らしいけど。
0964デフォルトの名無しさん
2008/08/19(火) 22:56:15それよりもゆるいレベルで実装してればいいじゃんか
なんでわざわざ public を必須にせにゃならん
0965デフォルトの名無しさん
2008/08/19(火) 23:02:03おまえ、流れを切るなよ。使えない奴だな・・・
0966デフォルトの名無しさん
2008/08/19(火) 23:35:410967デフォルトの名無しさん
2008/08/20(水) 00:06:590968デフォルトの名無しさん
2008/08/20(水) 00:17:33>想像力が欠如している発想なんであってさあ。
>
>そんな料理屋、誰に注文だしたらいいのかわかりゃしないってことになりがちでしょ?
>
>だからたいていの料理屋は注文取りのお姉さんとだけコミュニケーションすれば済む
>システムを採用してるんだけどなあ。
あほだろ。
注文取りのお姉さんは厨房に入って料理人と直接細かい話してもいいじゃんって話だろ。
0969デフォルトの名無しさん
2008/08/20(水) 00:40:250970デフォルトの名無しさん
2008/08/20(水) 00:57:190971デフォルトの名無しさん
2008/08/20(水) 01:07:470972デフォルトの名無しさん
2008/08/20(水) 01:13:070973デフォルトの名無しさん
2008/08/20(水) 01:32:190974デフォルトの名無しさん
2008/08/20(水) 05:28:110975デフォルトの名無しさん
2008/08/20(水) 06:44:500976デフォルトの名無しさん
2008/08/20(水) 10:33:37一通り見たんだが設定項目が見つからないんだ・・・。
0977デフォルトの名無しさん
2008/08/20(水) 10:39:50粘着
死ね
0978デフォルトの名無しさん
2008/08/20(水) 10:48:18{
if (a == b)
{
return 1;
}
else
{
if (a > b) return 2;
if (a < b) return 3;
}
}
値を返さないコードパスがあります。
ってエラーが出るけど網羅してない?
0979デフォルトの名無しさん
2008/08/20(水) 10:49:36できない
>>978
コンパイラはそこまで解析しない
0980978
2008/08/20(水) 10:58:41書くとしたら
public static int f(int a, int b)
{
if (a == b) return 1;
if (a > b) return 2;
if (a < b) return 3;
return -1;
}
みたいに書きますか?
0981デフォルトの名無しさん
2008/08/20(水) 11:01:39if (a == b) return 1;
else if (a > b) return 2;
else return 3;
0982デフォルトの名無しさん
2008/08/20(水) 11:02:030983デフォルトの名無しさん
2008/08/20(水) 11:06:44あーまぁそうですね。
書いてる自分としても条件の見落としが無いように明確に書いたつもりで、
条件の見落としがあった場合にコンパイルエラーを出させようとしたら、
>>978のような結果になる事を知ったわけです。
0984デフォルトの名無しさん
2008/08/20(水) 11:59:010985デフォルトの名無しさん
2008/08/20(水) 12:14:590986デフォルトの名無しさん
2008/08/20(水) 12:23:340987デフォルトの名無しさん
2008/08/20(水) 13:03:48ほかのボタンのチェックが外れるようにしたいんだけど、
それらしきプロパティがありません。
自前で処理するしかないのでしょうか?
0988デフォルトの名無しさん
2008/08/20(水) 14:00:14そんなん自前で実装したとしても、せいぜい3分あれば書けるじゃねえか
0989デフォルトの名無しさん
2008/08/20(水) 14:03:590990デフォルトの名無しさん
2008/08/20(水) 14:04:16キーボードからの入力をテキストボックスに渡したい場合
グローバルフックを仕掛けるような方法以外に無いでしょうか。
キーボードフォーカスを非アクティブウィンドウに渡せれば一番良いのですが…。
0991デフォルトの名無しさん
2008/08/20(水) 14:06:400992デフォルトの名無しさん
2008/08/20(水) 14:07:38フォーカスが変わってくれないと使う人が非常に困るから、普通のやり方じゃ無理じゃない?
0993デフォルトの名無しさん
2008/08/20(水) 14:08:160994デフォルトの名無しさん
2008/08/20(水) 14:53:01キーロガーでも作りたいのかw
つか普通に考えればフック以外には無理だろう
0995デフォルトの名無しさん
2008/08/20(水) 15:48:54あああああいいいいいうううううえええええ
かかかかかきききききくくくくくけけけけけ
と入れたら文字間隔が等間隔になってくれずガタガタになってしまいます
入力した文字を等間隔にするにはどのようにすれば良いのでしょうか?
textboxのプロパティのFontをMSPゴシックにしてみましたが駄目でした。
0996デフォルトの名無しさん
2008/08/20(水) 15:51:080997デフォルトの名無しさん
2008/08/20(水) 15:53:22Pの意味わかってるかw
0998995
2008/08/20(水) 16:01:17ありがとうございます
Pとったらできました
0999デフォルトの名無しさん
2008/08/20(水) 17:08:27横レスだがググってみた。
ひとつお利口さんになれたわ、サンクス。
プロポーショナルフォントなんて聞いたこと無かったよw
1000デフォルトの名無しさん
2008/08/20(水) 17:16:36http://pc11.2ch.net/test/read.cgi/tech/1219220127/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。