ふらっとC#,C♯,C#(初心者用) Part36
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2009/01/20(火) 21:47:33「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
0002デフォルトの名無しさん
2009/01/20(火) 21:57:46http://pc11.2ch.net/test/read.cgi/tech/1229661915/
WPF(XAML,XBAP,.NET3.5)GUIプログラミング
http://pc11.2ch.net/test/read.cgi/tech/1211453941/
初心者のためのプログラミング言語ガイド Part13
http://pc11.2ch.net/test/read.cgi/tech/1232286278/
0003デフォルトの名無しさん
2009/01/20(火) 22:00:22http://www.google.co.jp/
http://msdn.microsoft.com/ja-jp/library/default.aspx
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/
前スレ
ふらっとC#,C♯,C#(初心者用) Part35
http://pc11.2ch.net/test/read.cgi/tech/1229519838/
0004デフォルトの名無しさん
2009/01/20(火) 22:59:450005デフォルトの名無しさん
2009/01/20(火) 23:11:00HttpWebResponse.ContentLengthでContent-Lengthヘッダ情報を取得できますが
Content-Lengthが設定されていない場合にリモートファイルサイズをHTTPで取得する方法はありますか?
フリーのダウンローダー(Irvine等)などはHTTPでファイルサイズを取得してるようなのですが
解決方法をご存知の方お願いします。
0006デフォルトの名無しさん
2009/01/20(火) 23:19:35その自作のDLLとやらはどうやって作った何者?
>>5
HTTPだと一般的なのはContent-Lengthしかないよ
IrvineもContent-Lengthが存在しない場合サイズは0って表示してるだろ
0007デフォルトの名無しさん
2009/01/20(火) 23:27:36しかしcodeprojectのコードのままでは表示/非表示状態を記憶してくれません。
ログオンする度に毎度毎度タスクバーを右クリックして、
ツールバーを表示させなければいけません。
これをなんとかしたいです。
ttp://blog.mutantbunny.com/2006/03/ideskband-problems.html
ttp://www.eggheadcafe.com/forumarchives/platformsdkshell/Oct2005/post24484805.asp
このへんを見るとIPersistStreamというのを使って状態を保存しなければならないみたいですが、
LoadやSaveがいつ呼ばれているのかさっぱりわかりません。
どなたか、教えて下さい・・・
00084
2009/01/20(火) 23:51:27Visual C++で、WindowsSDKのSampVidサンプルを改造して作った
DirectShowのレンダラーフィルタ
2つか3つぐらいメソッドが追加されている。そのメソッドも使いたい。
ComImportではGUIDを指定するみたいだけど、DLLの名前
指定してもいないのにどうやってDLLに定義してあるGUIDがわかるの??
その辺りがちんぷんかんぷん。
0009デフォルトの名無しさん
2009/01/20(火) 23:54:230010デフォルトの名無しさん
2009/01/20(火) 23:58:020011デフォルトの名無しさん
2009/01/21(水) 00:01:55ComImport は印みたいなものであまり意味はないよ。
基本としてとりあえず2つ。
まずインターフェイスはこんな感じ
[ComImport]
[Guid("IID をここに")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
// ↑DirectShow らしいのでたぶんこう。違ったら変えて
interface IHoge {
// ヘッダ見て「同じ順番で」メソッドを並べる
// IUnknown メンバは必要なし
[PreserveSig] // ←戻り HRESULT がほしいときはこれを付ける。
// エラー時例外でいいならいらない
HRESULT Foo();
}
で、生成のコクラス
[ComImport]
[Guid("CLSID をここに")]
[CoClass]
class Hoge {}
これでこうやって使う。
IHoge hoge = (IHoge)new Hoge();
後は適当にスレッドモデルに気をつけて
0012デフォルトの名無しさん
2009/01/21(水) 00:02:22そのDLLがCOMとして公開されてなきゃ使えないよ?
00137
2009/01/21(水) 00:07:00こちらで解決してました。
0014デフォルトの名無しさん
2009/01/21(水) 00:30:03データアダプターの使い方がわかりません。普通にSQLを記述するのと違うのでしょうか?
0015デフォルトの名無しさん
2009/01/21(水) 12:29:13/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ まピョーん☆
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0016デフォルトの名無しさん
2009/01/21(水) 17:12:18ヘルプの一部が中国語になっているんですけどこれは直りませんか?
自分が確認できている範囲では以下の部分だけです
開発ツールと開発言語→Visual Studio→Visual C#→C# プログラミング ガイドの下の
「コレクション クラス」と「ファイル システムとレジストリ」の間にある項目です
ヘルプの左側のツリー表示してる目次部分と右側のタイトル部分が中国語になっています
0017デフォルトの名無しさん
2009/01/21(水) 17:16:050018デフォルトの名無しさん
2009/01/21(水) 22:43:330019デフォルトの名無しさん
2009/01/21(水) 22:53:48this.Button2.Click += new System.EventHandler(Button2_Click);
//メソッドを追加
private void Button2_Click(System.Object sender, System.EventArgs e)
{
//pictureboxに描画するコード
}
0020デフォルトの名無しさん
2009/01/21(水) 22:55:480021デフォルトの名無しさん
2009/01/21(水) 23:04:21>>20はどういう意味なんでしょうか?
0022デフォルトの名無しさん
2009/01/21(水) 23:06:210023デフォルトの名無しさん
2009/01/21(水) 23:14:04俺とメールでソース交換して、どっちがすげえか白黒つけようじゃねえか!
0024デフォルトの名無しさん
2009/01/21(水) 23:16:280025デフォルトの名無しさん
2009/01/21(水) 23:19:26うpすればいいじゃん
俺よりすごそうだったらちゃんとすごいって認めてやるから
正当な評価をする事を保証するよ
0026デフォルトの名無しさん
2009/01/21(水) 23:41:11// コンストラクタかどこかでPictureBox.Imageに適当なImageオブジェクトをセットしておき、
pictureBox1.Image = new Bitmap(400, 400, PixelFormat.Format32bppArgb);
// イベントハンドラで、PictureBox.Imageに描画を行う
using (Graphics g = Graphics.FromImage(pictureBox1.Image))
{
}
002726
2009/01/21(水) 23:42:35// PictureBoxに直接描画することはできないので、
// コンストラクタかどこかでPictureBox.Imageに適当なImageオブジェクトをセットしておき、
pictureBox1.Image = new Bitmap(400, 400, PixelFormat.Format32bppArgb);
// イベントハンドラで、PictureBox.Imageに対して描画を行う
using (Graphics g = Graphics.FromImage(pictureBox1.Image))
{
// ここで描画
}
pictureBox1.Invalidate();
0028デフォルトの名無しさん
2009/01/22(木) 00:12:56>// PictureBoxに直接描画することはできないので、
これは違うというかミスリード過ぎだろう。
描画できないんじゃなくて描画した画像を保持できないだけ。
0029デフォルトの名無しさん
2009/01/22(木) 01:32:29はずかしい質問です。
オライリーとかを買ってきて勉強してるんだけど、純粋に言語の話ばかりで
初心者なのに、いきなりここまで必要かなあと思うんだけど。
C#を使う場合って、ほとんど、VisualStudio上じゃないの?だったら「VSの使い方」っていう
コンセプトの本が普通だと思うんだけど、そうでもないの?
自動生成されるコードもたくさんあるのに、初心者のうちからそういう仕組みをまったく度外視して
純粋に言語仕様の本を「初めてのC#」として売ってるから怖いんだけど。
そこそこ使う人はIDEに依存しないで使ってるんですか?
初心者にもIDEの使い方より言語そのものの仕様の方が重要だというのは常識なの?
0030デフォルトの名無しさん
2009/01/22(木) 01:37:15C# がはじめての人対象であってプログラミング初心者対象ではないんだろ。
VS の使い方を目的にした本はいくらでもあるのにそういう本を選ばなかったのが悪いんだろ。
オライリーなんて初心者から見ていかにも難しそうなのによく買ったな。
0031デフォルトの名無しさん
2009/01/22(木) 01:51:16べつに理解できないわけじゃないし
内容じたいは全然難しくないんだけど、
これをすぐに応用する機会ってあるのかなあ、
というのが疑問で。。
0032デフォルトの名無しさん
2009/01/22(木) 01:52:500033デフォルトの名無しさん
2009/01/22(木) 02:06:400034デフォルトの名無しさん
2009/01/22(木) 03:33:57オライリーの初心者向けは「プログラミングC#」だが
0035デフォルトの名無しさん
2009/01/22(木) 03:55:30http://www.amazon.co.jp/%E5%88%9D%E3%82%81%E3%81%A6%E3%81%AEC-%E3%82%B8%E3%82%A7%E3%82%B7%E3%83%BC-%E3%83%AA%E3%83%90%E3%83%86%E3%82%A3/dp/487311294X/ref=sr_1_1?ie=UTF8&s=books&qid=1232563660&sr=8-1
目次見る限り、基礎の基礎しか書いてないんだから応用する機会しかないような気がするが
http://www.amazon.co.jp/Visual-2005%E9%80%86%E5%BC%95%E3%81%8D%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9-Windows-XP-Vista%E5%AF%BE%E5%BF%9C/dp/4839924872/ref=sr_1_37?ie=UTF8&s=books&qid=1232563844&sr=8-37
はじめからこういうの買えば良かったのにチョイス間違えただけだと思われる
0036デフォルトの名無しさん
2009/01/22(木) 04:51:090037デフォルトの名無しさん
2009/01/22(木) 04:53:47UTF8エンコードのbyte列を文字列に変換し、string型変数(var1)に代入しました。
その文字列はXMLのデータです。これをXmlLoadし、UN要素のN0属性の値を取得したいのですが、できませんでした。
しかし、var1をTextBoxに表示させ、そのTextBox.TextをXmlLoadすると、値を取得できました。
何故このようになるかがわかりません。また、どのようにすればTextBoxを介さずに解決するのでしょうか。
var1 = Encoding.UTF8.GetString(mStream.ToArray());
XmlDocument doc = new XmlDocument();
doc.LoadXml(var1);
XmlElement root = doc.DocumentElement;
XmlNodeList nodelist = root.GetElementsByTagName("UN");
XmlElement UN = (XmlElement)nodelist.Item(0);
textBox2.Text = UN.GetAttribute("N0");
↑がうまくいかないパターンで、
途中に(たとえば1行目直後)textBox1.Text = var1;を挟み、doc.LoadXml(textBo1.Text)とすると値を取得できました。
0038デフォルトの名無しさん
2009/01/22(木) 06:58:57doc.Load(var1) か
doc.Load(mStream); でどう?
003937
2009/01/22(木) 07:21:07レスありがとうございます。
Loadメソッドは
XmlDocument.Load(string filename)
なので、やはり使うのはLoadXmlメソッドだと考えています
今回の場合、XMLデータがgzipで圧縮されているファイルがあり、その中身を見るプログラムを書いています。
なので、ファイルを一度gzip解凍してからXMLとして読み込まないといけないので、ファイルの直接指定ができないのです。
0040デフォルトの名無しさん
2009/01/22(木) 07:23:35Load(Stream)もあるだろ
というかうまくいかないってのは実行できるけどどこかでnullが返るのか
例外が出るのか出るのならどんな例外がどこで出るのか
0041プログラム歴2週間
2009/01/22(木) 12:25:09�Aダイアログを出力して確認 OKかキャンセル
�Bキャンセルなら本処理終了 OKなら引数を渡して画面遷移する
プログラムを書きたいのですが、わかりません。よろしくお願いします。
0042デフォルトの名無しさん
2009/01/22(木) 12:28:560043デフォルトの名無しさん
2009/01/22(木) 12:29:51いや自己紹介だよ。
>>41
こちらこそよろしくお願いします。
0044プログラム歴2週間
2009/01/22(木) 12:39:49protected void ButtonCancel_Click(object sender, EventArgs e) //キャンセルボタン押すとき
{
Response.Redirect("遷移先のページ名"); //飛びたいページ
}
だけです。Visual Studio2005を使ってボタンとか配置しました
0045デフォルトの名無しさん
2009/01/22(木) 12:46:16こういうくだらない皮肉をすぐにレスする奴って
何が原因でここまで卑屈になったのか疑問。
0046デフォルトの名無しさん
2009/01/22(木) 12:50:500047デフォルトの名無しさん
2009/01/22(木) 13:00:05こういうくだらない皮肉をすぐにレスする奴って
何が原因でここまで卑屈になったのか疑問。
0048デフォルトの名無しさん
2009/01/22(木) 13:03:11引数ってなんだ?
0049デフォルトの名無しさん
2009/01/22(木) 13:27:500050デフォルトの名無しさん
2009/01/22(木) 13:28:36{
Response.Redirect("遷移先のページ名");
}
0051プログラム歴2週間
2009/01/22(木) 13:29:54とあるコードを渡してそのコードを選択する画面に戻る
編集画面ABCDE→Bを選択した(Bを編集したい)→Bの詳細画面 そこで編集ボタン押すと→B編集画面→B編集画面でキャンセルボタンを押すとBというコードを引数としてB詳細画面に戻りたい
初プログラミングで何がなんだかって感じなのですが。
0052デフォルトの名無しさん
2009/01/22(木) 13:38:41どこぞの変数にでも放り込んでおけ
0053デフォルトの名無しさん
2009/01/22(木) 13:41:32{
Texture tex=null;
SetTexture(tex);
(ブレークポイント)
}
SetTexture(tex)
{
tex = new Texture(Static.device, w, h, 0, Usage.Dynamic, Format.A8R8G8B8, Pool.Default);
〜
}
(ブレークポイント)のところで止めてもtexがnullになります。
SetTexture内ではその値を保持していますが…
0054プログラム歴2週間
2009/01/22(木) 13:47:080055デフォルトの名無しさん
2009/01/22(木) 13:47:19じゃないか?
0056デフォルトの名無しさん
2009/01/22(木) 13:52:46これで出来たテクスチャを色々なところで使い回したいのです。
なので
Texture getTexture(){
retrun tex
}
として引っ張ってきたテクスチャをtex.Dispose()とした方が良いのか
全部描画後にtex.Dispose()とした方が良いのか…
tex1=getTexture();
(tex1描画)
tex1.Dispose();
tex2=getTexture();
(tex2描画)
tex2.Dispose();
とした方が良いのか
tex1=getTexture();
(tex1描画)
tex2=getTexture();
(tex2描画)
tex2.Dispose();
とした方が良いのか
0057デフォルトの名無しさん
2009/01/22(木) 13:56:06内容がさっきと全然違うじゃないか。
0058デフォルトの名無しさん
2009/01/22(木) 14:00:35そのテクスチャを>>56でgetTexture()で引っ張ってきて(tex1)描画した直後にDispose();すると
最初に作ったテクスチャ(tex)の方が消えてしまうのでしょうか?
0059デフォルトの名無しさん
2009/01/22(木) 14:02:400060デフォルトの名無しさん
2009/01/22(木) 14:04:590061デフォルトの名無しさん
2009/01/22(木) 14:07:17疑問ならメッセージ出力するようにしておいて観察してみるといい。
0062デフォルトの名無しさん
2009/01/22(木) 14:10:030063デフォルトの名無しさん
2009/01/22(木) 18:55:400064デフォルトの名無しさん
2009/01/22(木) 19:40:200065デフォルトの名無しさん
2009/01/22(木) 20:31:41それも合ってるんだけどね
0066デフォルトの名無しさん
2009/01/22(木) 21:00:210067デフォルトの名無しさん
2009/01/22(木) 21:02:020068デフォルトの名無しさん
2009/01/22(木) 21:04:200069デフォルトの名無しさん
2009/01/22(木) 21:06:250070デフォルトの名無しさん
2009/01/22(木) 22:05:04ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=33131&forum=7&7
ここに、Bitmapの内容を読み書きするときは
Bitmap.LockBits
Marshal.Copy
処理
Marshal.Copy
Bitmap.UnlockBits
とするのが基本と書かれていますが、コピーしないで処理するのは無理でしょうか?
0071デフォルトの名無しさん
2009/01/22(木) 22:08:57自分で張ったリンク先くらい全部読んでから来い。
0072デフォルトの名無しさん
2009/01/22(木) 22:09:44コピーせずに速いのはunsafeでポインタ使う方法
0073デフォルトの名無しさん
2009/01/22(木) 22:32:32T* p = (T*)bitmapData.Scan0.ToPointer();
T は好きな blittable な型で。
007470
2009/01/22(木) 22:55:51すいません、読んでいませんでした・・
>>72-73
回答ありがとうございました。
NiVEのサンプルのプラグイン、
Marshal.Copy使っているのをunsafe使ったコードに変えたら速くなるかな
0075デフォルトの名無しさん
2009/01/22(木) 23:04:37コピーのコストが無視できるような重い画像処理なら一回マネージ配列にコピーした方が速い
0076デフォルトの名無しさん
2009/01/22(木) 23:09:570077デフォルトの名無しさん
2009/01/23(金) 04:17:17できあがったファイルに、わけわからんのがあるんだけど。
メインのexeファイルの他に、--.vshost.exeとかいうexeファイルもできてるし
--exe.configとかいうファイルが二つも出来ちゃった。
こんなの全部まとめて一つのexeファイルにするのが本当なんじゃないの?
一応アプリは正常に動作してるみたいだけど、何か気に入らない。
将来もっとスキルがあがってちょい立派なソフトを作って人に使ってもらうときに
なんかこういうのは格好悪い気がするんだけど。
ベクターのソフトとかは、exe以外だとbinとか、なんかいろいろ意味がありそうなファイル
ばかりじゃん。
どうして俺の場合はへんなファイルばかりなの?
何かやり方が間違ってる可能性はない?
0078デフォルトの名無しさん
2009/01/23(金) 04:22:470079デフォルトの名無しさん
2009/01/23(金) 04:54:54のオブジェクトを受け取るコンストラクタに渡して、Triangleオブジェクトt2を作成しているのですが、その際
t2を作る過程で、コンストラクタ内で、t1の“private”なはずのstyleにアクセスできてしまうの理由が分からず
悩んでいます。
同じクラスから生成されたインスタンス同士なら、privateな部分も見れるってことなのでしょうか・・・。
ご教授お願いします。
(独習C#第2版という本の抽象クラスの部分を読んでいるときに出くわした疑問ですが、抽象クラスには関係ないので、
370-373ページのコードを参考に短いコードを書きました。)
class Triangle {
string style;
public Triangle(string s) {
style = s;
}
public Triangle(Triangle ob) {
style = ob.style; //t2のインスタンスを作っているとき、t1のprivateなメンバにアクセスできてしまう!
}
}
class Demo {
public static void Main() {
Triangle t1 = new Triangle("right");
Triangle t2 = new Triangle(t1);
}
}
0080デフォルトの名無しさん
2009/01/23(金) 05:15:24うん
008177
2009/01/23(金) 05:20:26少しバカ度を下げて質問しなおします。
ビルドによって--.vshost.exeというようなファイルができるのは正常なんですか?
あと、初心者から脱した人には、生成される各ファイルがどんな働きをするものなのか
たいてい想像できるもんなのですか?
--.vshost.exeとか--exe.configはどういうファイルなんでしょうか?
申し訳ありませんが、できるだけ長い回答をお願いします。
0082デフォルトの名無しさん
2009/01/23(金) 05:26:36privateはクラスプライベートであってインスタンスプライベートではないから
0083デフォルトの名無しさん
2009/01/23(金) 05:33:43質問する手間でなぜぐぐらない・・
0085デフォルトの名無しさん
2009/01/23(金) 05:39:45VSホスト・プロセス(*.vshost.exe)とは何か?
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/410vshost/vshost.html
難しいことは他の人にまかせる。
誰かレスよろ。
0086デフォルトの名無しさん
2009/01/23(金) 10:58:230087デフォルトの名無しさん
2009/01/23(金) 10:59:06って何をやっているんですか?
0088デフォルトの名無しさん
2009/01/23(金) 11:05:01public … クラスがアセンブリ外から参照できます
partial … クラスの定義が複数のファイルにまたがっています
: System.Web.UI.Page … クラスはSystem.Web.UI.Pageクラスを継承します
0089デフォルトの名無しさん
2009/01/23(金) 11:12:19適当にぐぐったのを翻訳すると、
「ページ名という名前のデータと処理を宣言して、コンパイル済みのコード群外から参照でき、複数のファイルのデータと処理を扱い、System.Web.UI.Pageのデータと処理を使えるようにする」
???????頭が壊れる。これがないと何ができなくなるのでしょう?
0090デフォルトの名無しさん
2009/01/23(金) 11:15:27クラス定義がないと何もできない
0091デフォルトの名無しさん
2009/01/23(金) 11:21:03すみません、「クラス定義」すら理解できていません・・・
0092デフォルトの名無しさん
2009/01/23(金) 11:26:18入門サイトや入門書読んで勉強しましょう
0093デフォルトの名無しさん
2009/01/23(金) 12:02:03切り替える形のもの)を作成したいのですが、
その実装方法がわからず悩んでいます。
MDIにして子フォームのFormBorderStyleをnoneに設定し
切り替える方法でやってみたところ、ちらつきが出てしまいダメでした。
Firefoxのオプションダイアログにかぎらず、ウィンドウがひとつで中の描画だけ
切り替えるようなアプリの実装方法には、MDIの他にどういったものがありますでしょうか?
長文ですみませんが、よろしくお願いいたします。
0094デフォルトの名無しさん
2009/01/23(金) 12:10:41・TabControlを使う
・Panelを重ねて置いて、ボタンを押したら該当Panel.BringToFrontで最前面にもってくる
とか
0095デフォルトの名無しさん
2009/01/23(金) 12:11:30{
なんらかの処理
}
これがクラスで合ってますか?C#ではこれが必要だと。
publicは他のページでこのページの処理を使えるようにしている。
partialの意味がよくわからないのですが、1つのクラスを2つのファイルに分けると何かいいことあるのですか?
あと、System.Web.UI.Pageってなんでしょう?ぐぐってもよくわからなかったのですが、そういう処理名ですか?
0096デフォルトの名無しさん
2009/01/23(金) 12:20:52これは違う。クラスの前に付くpublicについては今は気にしなくてもいい。
クラスライブラリを作ったりするときに重要になる。
>1つのクラスを2つのファイルに分けると何かいいことあるのですか?
VisualStudioのデザイナが自動生成したコードを分離できる。
>System.Web.UI.Pageってなんでしょう?
あらかじめ用意されてるクラスの名前。継承元として指定してる。
こんなところでいちいち聞いててもキリないでしょ?
まとめて勉強した方が早いよ
0097デフォルトの名無しさん
2009/01/23(金) 12:42:20partialを使う事によって「ページ名.aspx.designer.cs」が生成されるって事ですかね?
System.Web.UI.PageはASP.NETが用意していて、それを基盤に動かしたいと。
0098デフォルトの名無しさん
2009/01/23(金) 13:17:34partialを付けなくても「ページ名.aspx.designer.cs」は生成されるが、
その場合、「同じクラスが2つもあるぞゴルァ!!」と怒られてしまう。
partialを付けることで、二つのファイルに分かれたクラス定義を1つにまとめることが可能になる。
> 1つのクラスを2つのファイルに分けると何かいいことあるのですか
コードジェネレータが生成するコードと、ユーザーが編集するコードを分けることで、
ユーザーが編集したコードがコードジェネレータに上書きされてしまう危険性が無くなるし、
ユーザーが編集するコードに余計なものが混じらないので、コードも見やすくなる。
ところで、本見ても理解できないって、どんな本を読んでるんだ?
0099デフォルトの名無しさん
2009/01/23(金) 13:28:56と言ってたのですが、同じ人が、「いつまでもWindowsの時代ではない。他の
OSがたくさんでてくるから誰もWindowsなんて使わなくなる」とも言ってました。
これ矛盾してないですか?
C#はWindows上でしかコンパイル(というの?作ること)できないできないですよね?
0100デフォルトの名無しさん
2009/01/23(金) 13:33:210101デフォルトの名無しさん
2009/01/23(金) 13:33:520102デフォルトの名無しさん
2009/01/23(金) 13:34:020103デフォルトの名無しさん
2009/01/23(金) 13:34:33基本的には聞き流しておけばおk
0104デフォルトの名無しさん
2009/01/23(金) 13:42:17もっと詳しく解説して
>>102
知らないなら黙ってろばか
0105デフォルトの名無しさん
2009/01/23(金) 13:53:27しかし
> 「いつまでもWindowsの時代ではない。他のOSがたくさんでてくるから誰もWindowsなんて使わなくなる」
これはもう10年以上前から聞いてるような台詞だな
0106デフォルトの名無しさん
2009/01/23(金) 13:58:48失せろゴミ
0107デフォルトの名無しさん
2009/01/23(金) 13:59:11103さんのでよく分かりました。
0108デフォルトの名無しさん
2009/01/23(金) 14:00:19安心しろ
新しいハードウェアが出なくなってみんなが同じ構成のマシンを使うようになったら
俺がパーフェクトなOSを作る
0109デフォルトの名無しさん
2009/01/23(金) 14:24:47作って覚えるVisual C#2005exples edition入門だと
クラス…共通の目的を持ったデータと処理を集めたもの
public…外部に公開する。他のクラスから呼び出すことができる
System.Web.UI.Page…本にないのでぐぐってもよくわからず
partial…1つのクラスを2つのファイルで分けて管理できるようにする宣言
ハァ!?!?って感じですた。
0110デフォルトの名無しさん
2009/01/23(金) 14:30:56「クラスとは、オブジェクトの性質や動作を規定するDNAです。」
「DNAの遺伝情報をもとに生命が形成され、生命は活発に活動することができます。この、実際の生物がオブジェクトに担当します。」
「つまり暮らすを具体化して、物理的な実態となったものがオブジェクトです」
はあ?死ねよって感じでしたね・・・なにいってんだこれ
0111デフォルトの名無しさん
2009/01/23(金) 14:38:210112デフォルトの名無しさん
2009/01/23(金) 14:49:02そんな感じの説明って多いよな。
人とか動物とか例えている・・・。実際、人とか動物とかプログラムに関係ないのにな。
0113デフォルトの名無しさん
2009/01/23(金) 14:57:03ハァ!?!?と思ったら本屋に行くといい。
ハァ!?と思った部分の解説を見比べることで
良い本と悪い本の見分けがつくよ。
全ての本でハァ!?と思うなら・・・ご愁傷様と言うしかないな。
0114デフォルトの名無しさん
2009/01/23(金) 15:15:50Aaa aaa = new Aaa(Global.WebConfig);
のGlobal.WebConfigってなんですか?
()の中が何もないのは、aaaの箱を作って使えるようにしてるってことだと思うのですが
0115デフォルトの名無しさん
2009/01/23(金) 15:20:26WebApplication webApp = new WebApplication(設定ファイル)
0116デフォルトの名無しさん
2009/01/23(金) 15:27:02aaa = インスタンス変数
Global.WebConfig = 何らかの値
aaaというオブジェクト(インスタンス変数)を作る際にGlobal.WebConfigの値で初期化しているもの。
インスタンスの生成時にコンストラクタが呼び出されるため、そのコンストラクタの引数として渡す。
日本語でわかりやすく説明すると、 赤色で軽自動車を生成するには、こんな感じ。
自動車 自家用車 = new 自動車(赤色,軽自動車);
そんなことよりaaaとかいう名称は、つけてはいけない。
今だけではなく、あとからデバッグする時に何これ?になる。
0117みんなどっちの書き方が好き?
2009/01/23(金) 15:35:42value = default(string);
if(node == null)
return false;
HtmlNode aNode = node.SelectSingleNode(xpath);
if(aNode == null)
return false;
HtmlAttribute attribute = aNode.Attributes[attrString];
if(attribute == null)
return false;
value = attribute.Value;
return true;
}
private static bool TryGetAttributeValue(HtmlNode node, string xpath, string attrString, out string value){
value = default(string);
if(node == null)
return false;
HtmlNode aNode = node.SelectSingleNode(xpath);
if(aNode != null){
HtmlAttribute attribute = aNode.Attributes[attrString];
if(attribute != null){
value = attribute.Value;
return true;
}
}
return false;
}
0118デフォルトの名無しさん
2009/01/23(金) 15:41:25インデントがされていないのでどっちも嫌。
上のほうが改行がされてて見やすい。
if(aNode == null)
return false;
という書き方は、どうも嫌なので…
if(aNode == null){
return false;
}
と書いてる・・・。
0119デフォルトの名無しさん
2009/01/23(金) 15:43:13自分は
if(〜){
}
でなれた頃にその構文知ったから
ほとんど↑
0120デフォルトの名無しさん
2009/01/23(金) 15:44:120121デフォルトの名無しさん
2009/01/23(金) 15:46:44たとえ1命令でも2行にまたがるときは{ }をつけることにしてる。
0122デフォルトの名無しさん
2009/01/23(金) 15:50:420123デフォルトの名無しさん
2009/01/23(金) 15:52:58あとはswitch使う
0124デフォルトの名無しさん
2009/01/23(金) 16:00:140125117
2009/01/23(金) 16:39:21まあ{つけるかとか{の位置とかは別の話として
0126デフォルトの名無しさん
2009/01/23(金) 16:41:47「出口は一つであるべき」とか言って
returnを複数書くのを嫌ったりする人もいるね
0127デフォルトの名無しさん
2009/01/23(金) 16:49:22該当項目をすべてDisposeするといった便利な使い方が出来ないのは言語的なバグですか?
0128デフォルトの名無しさん
2009/01/23(金) 16:49:350129デフォルトの名無しさん
2009/01/23(金) 17:00:05どんどんだらしなくなる性格だし後から読むとき楽なので、あえて決め事してる
コード量増えることもあるのはご愛敬
0130デフォルトの名無しさん
2009/01/23(金) 17:08:28列挙体って何のこと。俺様用語は止めてくれる?
Disposeすることは例外発生の原因じゃないよ
どうせコントロールコレクションから要素をDisposeしようとしたんでしょ。
DisposeするとコレクションからRemoveされる実装もあるから。
while( collection.Items.Count > 0 ){
collection.Items[0].Dispose();
}
みたいにしたらどう
0131デフォルトの名無しさん
2009/01/23(金) 17:08:38>列挙体
なのか?用語間違ってないか?
0132デフォルトの名無しさん
2009/01/23(金) 17:12:25自分の無能は棚上げですか?
0133デフォルトの名無しさん
2009/01/23(金) 17:13:28察してやれよw
0134デフォルトの名無しさん
2009/01/23(金) 17:15:42性格に難あり
どういう環境で育ったんですか?
0135デフォルトの名無しさん
2009/01/23(金) 17:21:35アンカー間違えてんじゃねえよksg
0136デフォルトの名無しさん
2009/01/23(金) 17:29:00性格に難あり
どういう環境で育ったんですか?
0137デフォルトの名無しさん
2009/01/23(金) 17:44:43バグがあるのは、おまえだ。
0138デフォルトの名無しさん
2009/01/23(金) 19:56:220139デフォルトの名無しさん
2009/01/23(金) 21:20:090
1
2Dispose
3
4Dispose
5
C#ではこういったことが出来ない
0140デフォルトの名無しさん
2009/01/23(金) 21:42:09分かるように実行可能なソースをアップしてくれんか
0141デフォルトの名無しさん
2009/01/23(金) 22:02:00どうしたらいいっすか?
0142デフォルトの名無しさん
2009/01/23(金) 22:03:46自分でネイティブコンパイラ作るなりCLI実装しちゃうなりすればおk
0143デフォルトの名無しさん
2009/01/23(金) 22:05:590144デフォルトの名無しさん
2009/01/23(金) 22:07:390145デフォルトの名無しさん
2009/01/23(金) 22:12:180146デフォルトの名無しさん
2009/01/23(金) 22:39:520147デフォルトの名無しさん
2009/01/23(金) 22:41:03""で括ると候補でないし
0148デフォルトの名無しさん
2009/01/23(金) 22:41:400149デフォルトの名無しさん
2009/01/23(金) 23:06:04ありがとうございます
0150デフォルトの名無しさん
2009/01/23(金) 23:07:46ワラタ
0151デフォルトの名無しさん
2009/01/24(土) 03:43:080152デフォルトの名無しさん
2009/01/24(土) 05:28:05C#からExcelのセルの幅や高さを変更したり、新しいシートを追加して
そのシートの名前を変更、新しく追加したシートを操作するにはどうすれば良いのでしょうか?
0153デフォルトの名無しさん
2009/01/24(土) 09:35:530154デフォルトの名無しさん
2009/01/24(土) 10:52:01色々やってシートの追加と名前の変更はできたのですが、Sheet1しか名前の変更ができない上に
セルの幅、高さの変更、追加したシートの操作ができません。
Sheet1のみの操作と名前の変更だけしかできないです。
0155デフォルトの名無しさん
2009/01/24(土) 11:12:330156デフォルトの名無しさん
2009/01/24(土) 11:17:190157デフォルトの名無しさん
2009/01/24(土) 11:19:040158デフォルトの名無しさん
2009/01/24(土) 11:26:49ttp://www.officepro.jp/excelvba/sheet_edit/index1.html
上記ページを読んでいるのですが、このVBAをどのように書き換えたら
C#で使えるようになるのでしょうか?
0159デフォルトの名無しさん
2009/01/24(土) 11:29:180160デフォルトの名無しさん
2009/01/24(土) 11:37:04すいません。まったく意味が分かりません…
コードでこのように書き換えたら良いという例を挙げてはいただけないでしょうか?
0161デフォルトの名無しさん
2009/01/24(土) 12:15:19とりあえず、シート2の名前を変更して、それらのセルを操作する例
シート1は既に起動している物として話を進める
自分で設定したシートコレクション名を以下のコードに置き換えて試してみて
//シート2を追加
Excel.Worksheet sheet2 = (Excel.Worksheet)シートコレクション名.Add(before, after, 1, Excel.XlSheetType.xlWorksheet);
//シート1とシート2の名前を設定
シートコレクション名.Name = "シート1の名前です";
sheet2.Name = "シート2の名前です";
//セルに文字を入力自動化
シートコレクション名.Cells[1, 1] = "シート1のセルA1";
sheet2.Cells[1, 1] = "シート2のセルA1";
0162デフォルトの名無しさん
2009/01/24(土) 12:15:38どうしたらいいでしょうか。
Cのstrstr()や、Pythonのbuf.index(sub_buf)のような処理です。
0163デフォルトの名無しさん
2009/01/24(土) 14:46:09バカ正直に検索する作業に戻るんだ。たとえばこんな風に。
private static int FindSubArray<T>(T[] array, T[] subArray) where T : IComparable
{
int match = 0;
for (int i = 0; i < array.Length; ++i)
{
if (array[ i ].CompareTo(subArray[ match ]) == 0)
{
match++;
if (match == subArray.Length)
{
return i - match + 1;
}
}
else
{
match = 0;
}
}
return -1;
}
0164デフォルトの名無しさん
2009/01/24(土) 14:48:43IComparable<T>にするんだ
0165デフォルトの名無しさん
2009/01/24(土) 14:51:27それもwhereで指定すると単純に参照比較で探したいときなんかに困るから
EqualityComparer<T>.Default使えば
0166デフォルトの名無しさん
2009/01/24(土) 14:53:17string s1 = Encoding.ASCII.GetString(buf);
string s2 = Encoding.ASCII.GetString(sub_buf);
int p = s1.IndexOf(s2, StringComparison.Ordinal);
0167デフォルトの名無しさん
2009/01/24(土) 15:05:430168162
2009/01/24(土) 15:38:37関数丸ごと書いてもらえるとは・・・感謝です。
バカ正直に検索する作業に戻ります。
>>164-165
すいません、マニュアルを読んでみましたが
不勉強でまともなレスが付けられません。
メモしたので後日振り返りたいと思います。
>>166
そういう方法もあるんですね。
byte[]からStringの変換にEncodingを使うとは
思っていなかったので参考になりました。
0169デフォルトの名無しさん
2009/01/24(土) 15:41:29byte[]の途中に0が入ってたら?
0170デフォルトの名無しさん
2009/01/24(土) 15:47:33>>163よりは桁違いに速いはず
private static int FindSubArray<T>(T[] array, T[] subArray)
{
EqualityComparer<T> comparer = EqualityComparer<T>.Default;
int match = 0;
for (int i = 0; i < array.Length; ++i)
{
if (comparer.Equals(array[ i ], subArray[ match ]))
{ //あとは同じ
0171デフォルトの名無しさん
2009/01/24(土) 15:52:15無問題
0172デフォルトの名無しさん
2009/01/24(土) 16:30:20無理矢理でもnew string(a.Cast<char>().ToArray())とか、
a.Aggregate(new StringBuilder(a.Length), (sb, c) => sb.Append((char)c)).ToString()とかで持っていくほうがいい。
0173デフォルトの名無しさん
2009/01/24(土) 16:35:140174デフォルトの名無しさん
2009/01/24(土) 21:45:07受け付けるよ。
0175デフォルトの名無しさん
2009/01/24(土) 22:28:030176デフォルトの名無しさん
2009/01/24(土) 22:28:04foreachで列挙しながらRemoveすると、列挙子が無効になって例外が発生します。
あらかじめ削除する要素を全部列挙してから、その後にRemoveするしかないんでしょうか?
0177デフォルトの名無しさん
2009/01/24(土) 22:39:520178デフォルトの名無しさん
2009/01/24(土) 22:40:34それ以上にスマートな方法は思いつかないなあ。
List<AAA,BBB>に投射しておいてRemoveAll()とか、考えられなくもないけど。
0179178
2009/01/24(土) 22:41:060180デフォルトの名無しさん
2009/01/24(土) 22:44:29を静的クラスに書いておけば拡張メソッドで呼び放題だよ!
0181デフォルトの名無しさん
2009/01/24(土) 22:56:480182デフォルトの名無しさん
2009/01/24(土) 23:02:46こんな感じか? メモ帳で書いただけで検証してないけど。
public static void RemoveAllByValue<TKey, TValue>(
this Dictionary<TKey, TValue> dictionary, Predicate<TValue> match)
{
List<TKey> keys = new List<TKey>();
foreach (TKey key in dictionary.Keys)
{
if (match(dictionary[key]))
{
keys.Add(key);
}
}
foreach (TKey key in dictionary.Keys)
{
dictionary.Remove(key);
}
}
0183176
2009/01/24(土) 23:27:22削除するのに別途メモリ確保するのは違和感あったのですが、仕方ないんですね。
0184デフォルトの名無しさん
2009/01/24(土) 23:33:23削除するんじゃなくて最初から条件を満たす要素を Dictionary に入れなければいいんじゃね?
0185デフォルトの名無しさん
2009/01/24(土) 23:35:110186デフォルトの名無しさん
2009/01/24(土) 23:35:48そんなことよりyahooきっず「どんな''ジャンボ''が食べたい?」に投票しようぜwwwwwwwww
ジャンボピーマンを一位にして餓鬼共を泣かせようwwwwwwwwww
現在1位 yahooの工作開始までに2位のたこ焼きを突き放す
http://kids.yahoo.co.jp/ _人人人人人_
>鶴職人募集中<
 ̄ Y^Y^^Y^Y^ ̄
↓本スレ
http://takeshima.2ch.net/test/read.cgi/news4vip/1232801214/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
0187デフォルトの名無しさん
2009/01/25(日) 00:20:010188デフォルトの名無しさん
2009/01/25(日) 00:30:05Thread.CurrentThread.PriorityをデフォルトのNormal以外に変更してみたところ
問題なく変更でき、優先順位もちゃんと反映されているようです。
終わった後はNormalに戻されてました。
この挙動を期待して書いてもいいのでしょうか?
MSDNをざっと見たところ、この事について書いてないようなのですが…
0189デフォルトの名無しさん
2009/01/25(日) 02:50:47文書化されてない以上その性質に頼るべきではない。
ちなみに.NET1.1では再利用したスレッドに変更したプライオリティやスレッド名は引き継がれている。
あとMonoの場合はLowestから変更できなかった。いろいろ複雑だ。
0191デフォルトの名無しさん
2009/01/25(日) 21:02:05using System;
using System.Windows.Forms;
というのがあったんだけど、一行目だけでよくないですか?
Systemの中にWindowsもあるんでしょ?
0192デフォルトの名無しさん
2009/01/25(日) 21:06:29名前空間はそれぞれ独立してる
見易さのためにピリオドで区切ってるだけ
0193デフォルトの名無しさん
2009/01/25(日) 21:07:200194デフォルトの名無しさん
2009/01/25(日) 21:09:41ダメ。
0195デフォルトの名無しさん
2009/01/25(日) 21:15:29名前空間を分けた意味がないじゃないか。
0196デフォルトの名無しさん
2009/01/25(日) 21:18:25何も書かなくても全てインポートされるはずだな
0197デフォルトの名無しさん
2009/01/25(日) 21:20:03ごもっとも
0198デフォルトの名無しさん
2009/01/25(日) 21:33:050199デフォルトの名無しさん
2009/01/25(日) 21:35:050200デフォルトの名無しさん
2009/01/25(日) 21:36:57Systemだけで指定されてるのって何だとなるわな。
0201デフォルトの名無しさん
2009/01/25(日) 21:39:090202デフォルトの名無しさん
2009/01/25(日) 21:55:23コレッ。 手元にVSない状態で、妄想で会話するな。
0203デフォルトの名無しさん
2009/01/25(日) 21:58:210204デフォルトの名無しさん
2009/01/25(日) 22:10:43MethodInfoとかを静的フィールドにいちいち持っておきたくなるけど、
システムでキャッシュしてるそうだから効果なかったりする?
使うたびに作り直すのとどっちがいいかな?
0205デフォルトの名無しさん
2009/01/25(日) 22:12:25C++だと、using System;相当のものを書けば、Windows.Forms.Hogeと使えるという風に
入れ子の名前空間にもusingの効果が及ぶ。
C++から来た人間としてはそこにはまりそうになった。
0206デフォルトの名無しさん
2009/01/25(日) 22:12:47CreateDelegateで取得したデリゲートをキャッシュするのが最速
0207デフォルトの名無しさん
2009/01/25(日) 22:13:18全部同じレベルなんだよ。
0208デフォルトの名無しさん
2009/01/25(日) 22:18:12Systemフォルダの中にWindowsがあってその中にFormsがある。
SystemフォルダにアクセスしたからってFormsにアクセスするわけではない。
0209デフォルトの名無しさん
2009/01/25(日) 22:20:50でも宣言はさらに下位のフォルダの中には及ばないってことなんだろう。
0210デフォルトの名無しさん
2009/01/25(日) 22:21:190211デフォルトの名無しさん
2009/01/25(日) 22:21:32だからマイコンピューターなんだよ
0212デフォルトの名無しさん
2009/01/25(日) 22:25:00C#でこういう風に書けるのは単なるシンタックスシュガーみたいなもの。
本当に階層になってるわけではない。名前空間はあくまで型の前に付く名前。
0213デフォルトの名無しさん
2009/01/25(日) 22:26:28例えば、C:\Windows\System\ を開いてるなら
その中のファイルにしかアクセスできない。
その下のC:\Windows\System\Form\ にあるファイルを開きたいならC:\Windows\System\Form\を開かないといけない。
ただ、わかりやすいようにカテゴリーに分けられているだけ。
極端に言えば
System.Windows.Forms ではなくWindowsForm という名前でも良かった。
・・・しかし、それではわかりにくく管理しにくいことからSystemのWindowsのFormsというように分類したまでの話。
0214デフォルトの名無しさん
2009/01/25(日) 22:28:13ネストしてるのか(フォルダ的)
別もんなのか
0215デフォルトの名無しさん
2009/01/25(日) 22:29:04なら理解してくれるんじゃまいか?
0216デフォルトの名無しさん
2009/01/25(日) 22:29:54コンソールでパスを通したことがあるなら、イメージ的にはusingはそれと同等って感じ。
0217デフォルトの名無しさん
2009/01/25(日) 22:32:28もっといえば,名前空間なんてものは単なる飾りなの
0218デフォルトの名無しさん
2009/01/25(日) 22:35:18その評価でBPSを出してくるのは認められているの?。
グレーゾンも粉飾紛いに見えてしまう。
0219218
2009/01/25(日) 22:35:500220デフォルトの名無しさん
2009/01/25(日) 22:38:07Systemの下にSystem.Windowsがあるのかと思ってた。
0221191
2009/01/25(日) 22:38:53というか、ここの人でも議論になるような疑問を持ててちょっとうれしかったです。
0222デフォルトの名無しさん
2009/01/25(日) 23:12:57C#の概念ではネストしてる(フォルダ的)
MSILの概念(=リフレクションで扱える情報)ではネストしていない
(SystemとSystem.Windowsの間に親子関係はない)
0223デフォルトの名無しさん
2009/01/25(日) 23:14:11using System.Text;と書いておけば毎回System.Text.StringBuilderと
書かなくて済むというだけの話でしょ。
で、using System;とだけ書いても、Text.StringBuilderと書けるようには
ならない、と。
0224デフォルトの名無しさん
2009/01/25(日) 23:23:22おお
確かにDelegate実行は大分速いみたいですね
だけどこれMethodInfoにしか使えませんね
プロパティだって結局メソッドなのにPropertyInfoに使えないというのは
0225デフォルトの名無しさん
2009/01/25(日) 23:26:37プロパティにも使えるよ
PropertyInfoのGetGetMethodやGetSetMethodでアクセサのMethodInfoが取れる
フィールドの場合は面倒だけどEmit使ってメソッドを動的に生成してやるしかない
0226デフォルトの名無しさん
2009/01/25(日) 23:34:12各々どうなっているか眺めてみれ
ちなみに >>225 のフィールドの場合のヒントは DynamicMethod な
0227デフォルトの名無しさん
2009/01/25(日) 23:40:360228デフォルトの名無しさん
2009/01/26(月) 04:22:230229デフォルトの名無しさん
2009/01/26(月) 04:51:02TypeLoadExceptionHolderがなんとかというエラーが出てきてデシリアライズできないのですが、
シリアライズができてデシリアライズができないというのはどんな原因が考えられるのでしょうか?
0230デフォルトの名無しさん
2009/01/26(月) 08:22:32それか、テスト用として、保存直後に読み込んでて、
using とか Close とかしてなくてちゃんとフラッシュされてないか。
あとは、保存する時に、
ファイルを Create とか Truncate じゃなくて、
Append とか Open で保存しちゃってて不正なバイナリになってるとか。
0231デフォルトの名無しさん
2009/01/26(月) 09:59:07多分そこら辺は問題ないと思います。というのも、それが起こるのがこのアセンブリで定義した
型をシリアライズした時のみで、それ以外の本体やプラグインで保存したデータについては全く問題ない
ためです。試しに、
[Serialize]
class TestData { }
というクラスをシリアライズして保存してみましたがそれでも上のエラーが飛んできます orz
BinaryFormatterを使っていてSerializeAttributeをつけ忘れてSerializationExceptionが飛ぶ
ということはありますが、ArgumentExceptionなんて飛んできたことないよ orz
0232デフォルトの名無しさん
2009/01/26(月) 10:22:23[Serialize]→[Serializable]
でした orz
0233デフォルトの名無しさん
2009/01/26(月) 10:27:370234デフォルトの名無しさん
2009/01/26(月) 11:09:20エラーメッセージは
型 'System.Runtime.Serialization.TypeLoadExceptionHolder' のオブジェクトを
型 'PluginTest.IPluginData' に変換できません
と…
変換先の型名はちょっと変えてますが、それ以外は全く一緒で、SerializationExceptionではなく
ArgumentExceptionで飛んできます。InnerExceptionはnullでした。
0235デフォルトの名無しさん
2009/01/26(月) 12:24:02そのコードを新しいプロジェクトとかで書いても同じ例外が投げられるの?
だったらそのコードをさらしてくれ。
0236デフォルトの名無しさん
2009/01/26(月) 16:26:58新しくプロジェクトを作成し、すべて同一にすると同じ例外が飛んできますが、
名前空間を変えると飛ばなくなりました。
プロジェクト全体を確認してみましたが、名前空間とクラス名がダブっている訳でもなかったのですが…
なんだこれ orz
0237デフォルトの名無しさん
2009/01/26(月) 16:39:38ローカルのアセンブリよりGACのが優先してロードされるので、
期待したのと違う動きをすることがある。
0238デフォルトの名無しさん
2009/01/26(月) 17:07:14してないです。ngenとかも動かしてないのでキャッシュされたのがロード
されてるわけではないと思います。
.NETのインストールでもミスったんでしょうか…
0239デフォルトの名無しさん
2009/01/26(月) 17:12:490240デフォルトの名無しさん
2009/01/26(月) 19:22:56IConvertible<T>みたいな
0241デフォルトの名無しさん
2009/01/26(月) 19:53:380242デフォルトの名無しさん
2009/01/26(月) 21:12:350243デフォルトの名無しさん
2009/01/26(月) 23:19:27たとえばContainerOfImage、ContainerOf3D、といった感じの名前の付け方。似た機能のクラスの頭文字が統一されて見やすいとは思うんだけど。
0244デフォルトの名無しさん
2009/01/26(月) 23:25:42英語としてどうかは置いといて,普通は見かけないから激しく違和感を感じる
Ofのかわりにアンダーバー使ったりする方がまだ綺麗な気がする
0245デフォルトの名無しさん
2009/01/26(月) 23:25:56List(Of T) http://msdn.microsoft.com/ja-jp/library/6sh2ey19.aspx
Of キーワード http://msdn.microsoft.com/ja-jp/library/067b2z78.aspx
0246デフォルトの名無しさん
2009/01/26(月) 23:31:140247デフォルトの名無しさん
2009/01/26(月) 23:32:15先にカテゴリを記述する命名スタイルは普通にある。
Of を名前に入れるのは、Of 込みで1つの熟語になってるようなものくらい。
0248デフォルトの名無しさん
2009/01/26(月) 23:35:220249デフォルトの名無しさん
2009/01/26(月) 23:51:310250デフォルトの名無しさん
2009/01/27(火) 00:09:30変換出来るかどうかを知るだけなら、TypeConverter拾ってきて
CanConvertTo(), CanConvertFrom()で良いと思う
0251デフォルトの名無しさん
2009/01/27(火) 00:37:45例えば、次の3ファイルを1ファイルに纏めるにはどうすれば良いでしょうか?
※また、一纏めにするだけではなく、パスワードを入力する事により暗号化した上で1ファイルに纏めたい
と思っています。当然複合化もしたいです。
【暗号化_前】
AAA.xls
BBB.xls
CCC.xls
【暗号化_後】
ABC.xls
【パスワード】
abc_dayo
0252デフォルトの名無しさん
2009/01/27(火) 00:43:070253デフォルトの名無しさん
2009/01/27(火) 01:01:41あざーす。ぐぐってみます。
0254デフォルトの名無しさん
2009/01/27(火) 01:02:410255デフォルトの名無しさん
2009/01/27(火) 10:13:080256デフォルトの名無しさん
2009/01/27(火) 12:26:20{
なんらかの処理
}
ボタン処理
のプログラムでなんらかの条件に当てはまったときにボタン実行が行えないようにするにはどうすればいいでしょう?
プログラム自体わけわかめで日本語でおkは重々承知ですが、エスパーさん助けて;;
0257デフォルトの名無しさん
2009/01/27(火) 12:40:25{
なんらかの処理
}
else
{
ボタン処理
}
0258デフォルトの名無しさん
2009/01/27(火) 12:59:42if なんらかの条件 �@
{
if なんらかの条件�A
{
なんらかの処理A
}
else
{
なんらかの処理B
}
}
ボタン処理
となっていて、なんらかの条件�Aのときにボタン処理させないようにしたいので、頭ぐちゃぐちゃーとなっています。
0259デフォルトの名無しさん
2009/01/27(火) 13:02:410260デフォルトの名無しさん
2009/01/27(火) 13:05:030261デフォルトの名無しさん
2009/01/27(火) 13:05:44{
if なんらかの条件�A
{
なんらかの処理A
}
else
{
なんらかの処理B
}
}
else
{
if なんらかの条件�A
{
なんらかの処理A
}
else
{
ボタン処理
}
}
0262デフォルトの名無しさん
2009/01/27(火) 13:20:290263デフォルトの名無しさん
2009/01/27(火) 13:38:36どんな場合でも対応したいのならば、
bool b = なんらかの条件 �@;
if (b)
{
なんらかの処理
とかいろいろ
}
if (b)
{
ボタン処理
}
みたいに保存しておいて後で使ったりできるぞ。
0264デフォルトの名無しさん
2009/01/27(火) 13:39:14{
ボタン処理
}
だった。。。
0265デフォルトの名無しさん
2009/01/27(火) 13:48:20bool ボタン処理するフラグ = true;
if なんらかの条件 �@
{
if なんらかの条件�A
{
なんらかの処理A
ボタン処理するフラグ = false;
}
else
{
なんらかの処理B
}
}
if (ボタン処理するフラグ)
{
ボタン処理
}
0266デフォルトの名無しさん
2009/01/27(火) 13:57:51単純に牡丹を押した時の処理を分岐させたいだけだったのか、
それとも一定条件下ではボタンそのものを押せないようにしたかったのか・・・
なんだっけ、MVCの類似だか発展版みたいなやつで
こういうのをスマートに解決する方法があったような。
0267デフォルトの名無しさん
2009/01/27(火) 13:59:420268デフォルトの名無しさん
2009/01/27(火) 14:02:57具体的に言うと、保存ボタンなので、データベース更新させないようにする、ですかね。
権限チェックをして、誰々なら見ることはできるけど、保存はできないという。
0269デフォルトの名無しさん
2009/01/27(火) 14:12:37と思ったら何か起きるのか
でも保存ボタンで保存されないのは嫌ね
0270デフォルトの名無しさん
2009/01/27(火) 14:18:520271デフォルトの名無しさん
2009/01/27(火) 14:19:340272デフォルトの名無しさん
2009/01/27(火) 14:37:51で、ダイアログに出るメッセージを変数に変えて、変数の中身を表示させるにはどうすればいいのでしょう。
ButtonSubmit.Attributes.Add("onclick", "return confirm('MSG01');");
でMSG01の中身をメッセージとして出したいのですが
0273デフォルトの名無しさん
2009/01/27(火) 14:56:00do { ... } while(false);
にして、breakすれば良い
0274デフォルトの名無しさん
2009/01/27(火) 14:57:36ボタンのEnabledプロパティをfalseにするんだ
0275デフォルトの名無しさん
2009/01/27(火) 15:09:47ButtonSubmit.Attributes.Add( "onclick", "return confirm('" + MSG01 + "');" );
0276デフォルトの名無しさん
2009/01/27(火) 15:13:09ButtonSubmit.Enabled = false;
たったこれ追加すれば使用不可にできました。ありがとう〜
0277デフォルトの名無しさん
2009/01/27(火) 15:17:02データグリッドビューの列を1から10まではユーザーが任意で追加する事ができるが、
それ以上は追加できなく(メッセージなどで「追加できません」と表示)するにはどうすれば良いのでしょうか?
0278デフォルトの名無しさん
2009/01/27(火) 15:20:51引数で渡されたデリゲートが、匿名メソッド・ラムダ式かそうでないかを判別する方法って無いですよね・・・?
0279デフォルトの名無しさん
2009/01/27(火) 15:22:290280デフォルトの名無しさん
2009/01/27(火) 15:24:080281デフォルトの名無しさん
2009/01/27(火) 15:36:59それを判別してどうしたいんだ?
0282デフォルトの名無しさん
2009/01/27(火) 15:40:35メソッドを持つ型の名前でも見れば
0283282
2009/01/27(火) 15:54:54じゃあ、メソッド名の方で
0284デフォルトの名無しさん
2009/01/27(火) 16:04:28this.dataGridView.AllowUserToAddRows = false;
1〜10まではあらかじめデフォルトの数値を入力しておけばおkだと思う。
0285デフォルトの名無しさん
2009/01/27(火) 18:02:13A=〜; B=〜; C=〜; ・・・
変数が正しいかチェック (日付や金額の桁)
正しかったらBoolでTrueを返す
if全部正しいとき
保存処理を行う
else
本処理終了
みたいな感じでプログラムを組みたいのですが、全部正しいときって
A==True && B==True &&・・・・・
みたいな感じでやっていくのですか?
またもうまく説明できない(´ω´)
0286デフォルトの名無しさん
2009/01/27(火) 18:05:340287デフォルトの名無しさん
2009/01/27(火) 18:10:030288デフォルトの名無しさん
2009/01/27(火) 18:12:06&&でつないだら全てtrueの場合だけ条件に一致するよ
0289デフォルトの名無しさん
2009/01/27(火) 18:13:25仕事じゃねーのそれ?
本でも買って読めや低能
0290デフォルトの名無しさん
2009/01/27(火) 18:25:11どうして&で繋ぐとtrueになるかわからないのですが、そういう仕様なのですか?
0291デフォルトの名無しさん
2009/01/27(火) 18:28:440292デフォルトの名無しさん
2009/01/27(火) 18:30:21A || B AかBのどちらかがtrueのときtrue 両方falseならfalse
0293デフォルトの名無しさん
2009/01/27(火) 18:31:270294デフォルトの名無しさん
2009/01/27(火) 19:09:05public static bool IsDate(int iYear, int iMonth, int iDay) {
if ((DateTime.MinValue.Year > iYear) || (iYear > DateTime.MaxValue.Year)) {
return false;
}
if ((DateTime.MinValue.Month > iMonth) || (iMonth > DateTime.MaxValue.Month)) {
return false;
}
int iLastDay = DateTime.DaysInMonth(iYear, iMonth);
if ((DateTime.MinValue.Day > iDay) || (iDay > iLastDay)) {
return false;
}
return true;
を参考にしようと思うのですが、どう自分で作った変数を当てはめていいのかわからないのですが、わかる方ご教授ください。
0295デフォルトの名無しさん
2009/01/27(火) 19:16:20ってやれば間違ってた時例外かなんか投げてくれるんじゃないの
0296デフォルトの名無しさん
2009/01/27(火) 19:17:140297デフォルトの名無しさん
2009/01/27(火) 19:23:26という理由で、テキストボックスとかで入力した値を変数に入れるそうです。あんまりよくわかってないですが
0298デフォルトの名無しさん
2009/01/27(火) 19:55:57>>289
0299デフォルトの名無しさん
2009/01/27(火) 20:04:36その覚え方は危険。
&&と||は論理積ではなくショートカット演算子。
まずAを評価して、その結果によってはBも評価する。
A&&B デフォルトはfalse。Aがtrueの時のみBが評価される。Bがtrueならtrue。
A||B デフォルトはtrue。Aがfalseの時のみBが評価される。Bがfalseならfalse。
0300デフォルトの名無しさん
2009/01/27(火) 20:11:50わからない単語とか検索すると、たいていトップにマイクロソフトのヘルプみたいな解説が出てくるけど、すごいわかりにくいですな
0301デフォルトの名無しさん
2009/01/27(火) 20:15:220302デフォルトの名無しさん
2009/01/27(火) 20:50:57論理積は論理積だよ
ショートサーキット評価するだけで
0303デフォルトの名無しさん
2009/01/27(火) 22:53:39何でもっと早く読まなかったんだろう
0304デフォルトの名無しさん
2009/01/27(火) 22:58:09ということは
if(A()&&B()){
〜
}
とあったとき
A()でfalseが帰ってきたら
B()が呼ばれないんですか?
0305デフォルトの名無しさん
2009/01/27(火) 23:00:55if( A() & B() )
ならBも呼ばれる
0306デフォルトの名無しさん
2009/01/27(火) 23:02:08そのとおり。
if (A()) {
if (B()) {
〜
}
}
と等価です。
0307デフォルトの名無しさん
2009/01/27(火) 23:03:07成る程
順番によっては値が変わることもあるのか…
ありがとうございます
0308デフォルトの名無しさん
2009/01/27(火) 23:03:44だからってobserverとかinterpreterとかはそのまま使っちゃダメだよ
イベントやforeachとしてC#に組み込まれてるからな
他にもデリゲート使うと非常に簡単になるパターンは多い
0309デフォルトの名無しさん
2009/01/27(火) 23:06:14A()&B()の場合、両方呼ばれるが、(結合規則とは無関係に)どちらが
先に呼ばれるかは不定。
0310308
2009/01/27(火) 23:07:420311デフォルトの名無しさん
2009/01/27(火) 23:08:15A == B
と
A.Equals(B)
ってどっちがお勧めなの?
0312デフォルトの名無しさん
2009/01/27(火) 23:10:06逆じゃないの?
0313デフォルトの名無しさん
2009/01/27(火) 23:12:350314デフォルトの名無しさん
2009/01/27(火) 23:16:14目的による
参照比較したいならObject.ReferenceEqualsが確実
値の比較がしたい場合は
==, IEquatable<T>.Equals, Object.Equals (左ほど優先)
の中から実装されているものを使えばいいと思う
0315デフォルトの名無しさん
2009/01/27(火) 23:17:00>>313
コード書いて確かめりゃ一発だろハゲ
0316デフォルトの名無しさん
2009/01/27(火) 23:19:29オライリーのやつ?
0317デフォルトの名無しさん
2009/01/27(火) 23:20:00めんどくさいんじゃチンカス
0318デフォルトの名無しさん
2009/01/27(火) 23:20:59開いたウィンドウを閉じたいと思います。
アプリケーションの場合は、
Process hProcess = Process.Start("Notepad");
if (! hProcess.CloseMainWindow()) {hProcess.Kill();}
でできるのですが、エクスプローラの場合、
Process hProcess = Process.Start("explorer");
とすると、ハンドルされていない例外が発生し、「オブジェクト参照がオブジェクトインスタンスに設定されていません。」となります。
どのようにしたらよいか教えてください。
0319デフォルトの名無しさん
2009/01/27(火) 23:22:05ならばヘルプ読め。あるいは他人の解答を信じるか。
|| http://msdn.microsoft.com/ja-jp/library/6373h346.aspx
&& http://msdn.microsoft.com/ja-jp/library/2a723cdk.aspx
> ただし、x が true の場合、y は評価されません。この場合、OR 演算の結果は y の値にかかわらず true になるためです。
> ただし、x が false の場合、y は評価されません。この場合、AND 演算の結果は y の値にかかわらず false になるためです。
> これは、"ショートサーキット" 評価と呼ばれます
0320デフォルトの名無しさん
2009/01/27(火) 23:25:30hProcessがnullなんじゃね?
Process.Startの戻り値は
>プロセス リソースに関連付けられた新しい Process コンポーネント。
>プロセス リソースが起動されなかった場合は null (既存のプロセスを再利用した場合など)。
シェル(explorer.exe)の場合、新しいフォルダを新規プロセスで開く設定にしてないと
プロセスは作られないよ
0321デフォルトの名無しさん
2009/01/27(火) 23:26:050322デフォルトの名無しさん
2009/01/27(火) 23:27:540323デフォルトの名無しさん
2009/01/27(火) 23:34:01これだけど、糞味噌に書かれててワラタ
ttp://www.amazon.co.jp/C-%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3-%E3%82%B8%E3%82%A7%E3%83%BC%E3%83%A0%E3%82%BA%E3%83%BBW-%E3%82%AF%E3%83%BC%E3%83%91%E3%83%BC/dp/4822281698/ref=sr_1_1?ie=UTF8&qid=1233066091&sr=8-1
アレな感じのコメントもいくつかあるけどw
0324デフォルトの名無しさん
2009/01/27(火) 23:43:52たしかにレビューはあれだw
でも書名出してくれてありがとう
0325デフォルトの名無しさん
2009/01/27(火) 23:49:35おお。なるほど。explorerを新規プロセスで開く方法は?
0326デフォルトの名無しさん
2009/01/27(火) 23:53:260327デフォルトの名無しさん
2009/01/28(水) 00:12:24レスサンクス。参考になった。
0328デフォルトの名無しさん
2009/01/28(水) 05:02:41dataGridViewから入力した内容を取り出し、Excelに出力をしたいのですが
以下のコードの時、数値を入力した場合のみ、「数値が文字列として保存されています」と表示され、エラーが発生します。
どのようにすれば文字列ではなく数値で出力をする事ができるのでしょうか?
string[,] table = new string[10,1];
for (int c = 0; c < 10; c++)
{
table[c, 0] = dataGridView1.Rows[c].Cells[0].Value.ToString();
}
sheet.get_Range("A1", "A10").Value2 = table;
0329デフォルトの名無しさん
2009/01/28(水) 08:15:480330初心者
2009/01/28(水) 14:28:58MVCアーキテクチャでWebサイトを構築していますが、XMLファイルより、
使用クラス名を読み取り、動的に使用クラスのインスタンスを生成する為に、リフレクション
機能を使用したいのですが、Type.GetType()メソッドやAssembly.GetType()メソッドなどの
戻り値がNULLになってしまいます。GetType()メソッドを使用するクラスと同じファイルに、
インスタンス生成したいクラスのクラス定義を書くとうまくいくのですが、別ファイルにすると、
うまくいきません。
詳しい方ご教授お願いします。
0331デフォルトの名無しさん
2009/01/28(水) 14:41:07初心者名乗る奴がリフレクションとかどうよと思うけど
0332デフォルトの名無しさん
2009/01/28(水) 15:31:31ValuesプロパティがObservableCollectionみたいに変更通知機能がある
そんなコレクションってありませんか?
0333デフォルトの名無しさん
2009/01/28(水) 16:52:04IDictionary<,>の実装クラスを作ればいいよ
ほとんど丸投げだからそんなに手間はかからない
0334デフォルトの名無しさん
2009/01/28(水) 17:22:34ってどういう意味ですか?初心者にはさっぱり
0335デフォルトの名無しさん
2009/01/28(水) 17:31:180336デフォルトの名無しさん
2009/01/28(水) 17:51:080337デフォルトの名無しさん
2009/01/28(水) 20:22:0064bit環境だとどうなるの?
アドレス空間が64bitになっても4GBに縛られるの?
0338デフォルトの名無しさん
2009/01/28(水) 20:37:22uintでないから2Gだな。
しかし、ストリームなら2GBずつRead/Writeすればいいし、
List<T>でもTが例えば16バイトの構造体なら全部で32GBまでいける。
もっとも、そんな大量のメモリを一度に扱おうというのなら、
まだまだネイティブなコードのほうがいいだろうと思うのは俺だけか?
0339デフォルトの名無しさん
2009/01/28(水) 20:43:200340デフォルトの名無しさん
2009/01/28(水) 21:49:420341デフォルトの名無しさん
2009/01/28(水) 22:02:410342デフォルトの名無しさん
2009/01/29(木) 01:22:12配列の添え字にはlong型の値も使える。
そのため、配列にはint型のLengthプロパティに加えてlong型のLongLengthプロパティもある。
32bit環境でも一応、
int[] arr = new int[ long.MaxValue ];
と書けるし、コンパイルもできるのだが、>>341の言うとおり、NET.Framework内部では配列の
添え字をNativeIntで処理しているので、実行するとOverflowExceptionが発生する。
内部でNativeIntの範囲を超える添え字を扱えるようにしても、そんな配列を確保した時点で
メモリ不足に陥るのは自明なので、合理的な仕様なんじゃないだろうか。
0343テラ初心者
2009/01/29(木) 17:01:11なんのことかサッパリわかりません。メソッドもなんかの処理なんだろうなあ位にしかわかってません。
何がなんのために何に何の情報を渡しているのですか????
0344デフォルトの名無しさん
2009/01/29(木) 17:04:070345デフォルトの名無しさん
2009/01/29(木) 17:05:560346デフォルトの名無しさん
2009/01/29(木) 17:41:470347デフォルトの名無しさん
2009/01/29(木) 17:46:240348デフォルトの名無しさん
2009/01/29(木) 17:51:56なんで使いにくくするんだ。
0349デフォルトの名無しさん
2009/01/29(木) 17:52:470350デフォルトの名無しさん
2009/01/29(木) 17:55:29チャンネルでいうと、8ちゃんボタン押しても数字が入っていないので何も起こらないのかな。
0351デフォルトの名無しさん
2009/01/29(木) 17:57:23値を返すメリットがないからvoidなんだろ
0352デフォルトの名無しさん
2009/01/29(木) 18:04:060353デフォルトの名無しさん
2009/01/29(木) 18:10:46{
}
作って覚えるC#の本より引用なのですが、これからVoid取っちゃうと何か不具合ありますかね?
0354デフォルトの名無しさん
2009/01/29(木) 18:11:340355デフォルトの名無しさん
2009/01/29(木) 18:11:510356デフォルトの名無しさん
2009/01/29(木) 18:12:01戻り値が分からなくてエラー出る
0357デフォルトの名無しさん
2009/01/29(木) 18:15:196年前のPCにVisualStudio入れたら重くなって挫折してしまいました
0358デフォルトの名無しさん
2009/01/29(木) 18:17:082CHよりひでーな。
0359デフォルトの名無しさん
2009/01/29(木) 18:18:33csc.exeのあるディレクトリにPATHだけ通せば
あとはコマンドプロンプト+エディタで最低限の環境が揃うぞ
ネットで適当に調べてやってみるといい
0360デフォルトの名無しさん
2009/01/29(木) 21:40:32newを使うのって速度かなり落ちますか?
画像データ用の領域で、一度に640*480*4バイト確保します。
0361デフォルトの名無しさん
2009/01/29(木) 21:42:020362デフォルトの名無しさん
2009/01/29(木) 21:44:47日本語読めますか?
0363デフォルトの名無しさん
2009/01/29(木) 21:45:07newを使うかどうかよりも1MBを頻繁に確保するのは重いかもね
ワーキングセットも大きくなるだろうし
0364デフォルトの名無しさん
2009/01/29(木) 21:48:19まずは率直な書き方で作ればいい。
0365デフォルトの名無しさん
2009/01/29(木) 21:49:23手間かかるものでもなし
0366デフォルトの名無しさん
2009/01/30(金) 01:03:05日本語で書いてどうする?
0367デフォルトの名無しさん
2009/01/30(金) 01:18:14日本語通じてなくてワロタ
0368デフォルトの名無しさん
2009/01/30(金) 08:50:41アイちゃん乙
0369デフォルトの名無しさん
2009/01/30(金) 08:52:34>>361な
0370デフォルトの名無しさん
2009/01/30(金) 10:57:19list.Add(new T())
といった感じで配列に追加している場合、
削除系メソッド(Clear、Remove、RemoveAllなど)実行したときに配列内のクラスのインスタンスは
開放されないのでしょうか?
0371デフォルトの名無しさん
2009/01/30(金) 11:01:050372デフォルトの名無しさん
2009/01/30(金) 11:09:48そういうことなのですね。ありがとうございました。
0373デフォルトの名無しさん
2009/01/30(金) 15:09:36設定されたカルチャに応じて取得できるクラスないですか?
0374デフォルトの名無しさん
2009/01/30(金) 15:22:26複数形とか考えると多分作るのは不可能に近い
0375デフォルトの名無しさん
2009/01/30(金) 18:15:540376デフォルトの名無しさん
2009/01/30(金) 18:46:52渦中って読めますか?
0377デフォルトの名無しさん
2009/01/30(金) 18:51:34標準であってもいいよね
関係ないけど「OK」「キャンセル」「適用」 とかも欲しかった
0378デフォルトの名無しさん
2009/01/30(金) 19:14:29しょうがないから、ASP.NETもじもじやってる。
0379デフォルトの名無しさん
2009/01/30(金) 19:47:320380デフォルトの名無しさん
2009/01/30(金) 19:54:310381デフォルトの名無しさん
2009/01/30(金) 20:20:230382デフォルトの名無しさん
2009/01/30(金) 20:21:56dirフォルダ内のサブフォルダの中身も含めたファイルの個数を出したいです。
using System.IO;
string[] files = Directory.GetFiles( dir, "*", SearchOption.AllDirectories);
として、files.Length を数えてるんだけど、ファイル数が5000とかあるフォルダを
検索しなくちゃならないので、さすがに遅いです。
この段階ではファイル名のstringは使わないので、個数だけで良いのですが、
サクっと出せるような方法ありませんか?
0383デフォルトの名無しさん
2009/01/30(金) 20:48:30遅いのは結局IOであってファイル名とかはほぼ関係ない
0384デフォルトの名無しさん
2009/01/30(金) 20:49:49了解しました。
我慢します。
0385デフォルトの名無しさん
2009/01/30(金) 21:01:30rect = null;
としたところ、Rectangle 型なのでnullは入れられないと言われました!
VB.NETだと、どんな型の変数にも Nothing を入れられるのでつい同じかと
思っていました。どうやったら同等の処置が可能でしょうか、よろしくお願いします。
0386デフォルトの名無しさん
2009/01/30(金) 21:04:19Rectangle? rect;
rect = null;
※使うときはRectangleにキャストすること
0387デフォルトの名無しさん
2009/01/30(金) 21:05:31Rectangleは値型だっけか。これでどうだ。
Rectangle? rect = null;
0388デフォルトの名無しさん
2009/01/30(金) 21:13:03VB の Nothing は null じゃなくて Zero Fill な値(既定値)だからな
C# 的には null と既定値は区別される。C# 的には VB の Nothing
は default(T)。
なので VB の Nothing 代入に近いのは
var rect = default(Rectangle);
だぁね
0389デフォルトの名無しさん
2009/01/30(金) 21:15:16どうもです。やってみましたところ、キャストを入れた上で一応解決かと思った
のですが、一つだけ問題がでました。Contains()メソッドを使っているところで
'System.Nullable<System.Drawing.Rectangle>' に 'Contains' の定義がありません
というエラーとなりました。これは
if ((Rectangle)rect.Contains(e.Location))
{・・・}
のように使ってみたのですが、他の書き方しないとだめでしょうか。
0390デフォルトの名無しさん
2009/01/30(金) 21:18:27ご教示どうもです、知りませんでした。
>なので VB の Nothing 代入に近いのは
>var rect = default(Rectangle);
こういうのもあるんですか!この場合は
if (rectG != null){・・・}
のように使えるでしょうか。そうだ、やってみます。
0391デフォルトの名無しさん
2009/01/30(金) 21:19:56>>390
できません
rectG!=default(Rectangle)ならできるけど(0, 0, 0, 0)とは区別できないよ
0392デフォルトの名無しさん
2009/01/30(金) 21:23:29Rect(0,0,0,0)に初期化することが目的なら
var rect = new Rectangle();
未初期化のRectangleが欲しいのなら
Rectangle rect;
でいい。
0393デフォルトの名無しさん
2009/01/30(金) 21:24:41おおっと。
いや VB 使っているうちは VB の流儀でいっていいと思うんだが
C# に来たんだから C# の流儀にあわせて区別しような。
Rectangle? val = null;
のほうを使えってことだけど。
>>389 のほうは rect.Value.Contains(e.Location) な。
null だったら例外出るが。例外がいやなら
if( rect.HasValue && rect.Value.Contains(e.Location) )
かね。
0394デフォルトの名無しさん
2009/01/30(金) 21:24:56>((Rectangle)rect).Contains
早速ありがとうございます、これで大丈夫でした、助かりました。
>rectG!=default(Rectangle)ならできる
わかりました。いろいろご教示ありがとうございました!
皆様本当にありがとうございました!またよろしくお願いします!!
0395デフォルトの名無しさん
2009/01/30(金) 21:26:18(rect ?? new Rectangle()).Value.Contains(
0396デフォルトの名無しさん
2009/01/30(金) 21:26:39ゼロ初期化されたものと同じとわかっててやるならいいけど,>>394はわかってなさそう
0397デフォルトの名無しさん
2009/01/30(金) 21:31:15>>393
>>395
C#の凄い表現のバリエーションにびっくりです、またこれから勉強致します。
>>396
わかってなかったです。すみません・・・。
ではまた。
0398デフォルトの名無しさん
2009/01/30(金) 21:33:380399デフォルトの名無しさん
2009/01/30(金) 21:40:02Rectangle rect;
bool isRectAssigned;
みたいなのってよく出てくるだろ
これを一つにまとめたのがnullable
0400デフォルトの名無しさん
2009/01/30(金) 21:43:05とかやってたら、IListの方にはForEach()がなくて涙目なんだけど、そういうもんなの?
0401デフォルトの名無しさん
2009/01/30(金) 21:55:520402デフォルトの名無しさん
2009/01/30(金) 22:07:07すこし慣れてみるか……
0403デフォルトの名無しさん
2009/01/30(金) 22:09:46でもEnumerable.ForEachが無いことを考えると,素直にforeach書けということなんだろうと思う
0404デフォルトの名無しさん
2009/01/30(金) 22:26:010405デフォルトの名無しさん
2009/01/30(金) 22:48:24BackgroundWorker+System.Timers+AutoResetEventでいいですか?
他にもっといいやり方があるんなら教えて欲しいのですが…orz
0406デフォルトの名無しさん
2009/01/30(金) 22:57:49> 正確に20ms
まずこれが難しい。timeBeginPeriod か MMCSS 使えば
ある程度いけるかもしれないけど、あくまである程度。
さらにいいやり方となると Forms 使うのが間違ってる。
0407デフォルトの名無しさん
2009/01/30(金) 22:58:20更新間隔は20msよりも長くして,
そのつど経過時間を計測してそれから計算してその結果をもとにしてPictureBoxを更新したほうが
0408デフォルトの名無しさん
2009/01/30(金) 23:06:23その中でStopwatch使って時間計測すればある程度正確にできるけど
フォームの更新が20msでは絶対無理
0409デフォルトの名無しさん
2009/01/30(金) 23:27:55測定機械のタイミングとか?
GUIの更新は後回しにした方がいいんじゃね?
0410デフォルトの名無しさん
2009/01/31(土) 00:53:40割り込み上がっても、処理が間にあわん気がするんだけどね
リアルタイムOSでというのなら分からんでもないけど。
#組み込み用が対象なのかな?
割り込み->データをFIFOQueueに追加->queueのデータをGUI処理
になるんだろうけど(sharedメモリ経由か)
#割り込みコンテキストってWinにはあるのかな?
0411デフォルトの名無しさん
2009/01/31(土) 02:40:33(というより、回答する側も他人の文章を正確に読解する能力がないだけ、という方が
より真相に近いと思うんだが)回答する奴が多すぎないかね。
>>405
「正確に20msで処理をして」とはどういう意味?
正確に20ms間隔でイベント処理をしたい、って意味なの?
いずれにしても、「正確」という表現はもっと定量的な表現にする必要があるだろ?
仮に20ms間隔でGUIを更新したい、って意味だとしたら、
今時のPCなら単純にSystem.Timers.Timer使っても±5ms以内の誤差で可能だと思うけど。
少なくとも、平均速度として50回/秒が実現できればいいということなら
(意味があるかどうかは別として)ほぼ確実に出来ると思う。
もちろん糞重い描画処理をしてたらあっという間に破綻するけど。
いざとなったらスレッドでThread.Sleep(0)と、Stopwatchをポーリングして
20msごとにControl.BeginInvoke()を実行する無限ループで実装したっていいし。
0412デフォルトの名無しさん
2009/01/31(土) 04:51:35System.Timers.Timerなんて無茶苦茶ばらつくじゃないか
0413デフォルトの名無しさん
2009/01/31(土) 09:07:3220msecでコントロールのアップデートはありえないから、
CreateGraphics()で得たGraphicsで直接描こうとしている。
CreateGraphics() + GDI+メソッドは別スレッドからでも使える。
こういう用途にはFormかPanelが適当なのだけどVB6以来の伝統かPictureBoxを使いたがる人が多い。
Timers.Timerはタイマーイベントの処理時間分、間隔がずれてゆくはずだからその分の解消をしたい。
そんなとこだろ。
0414デフォルトの名無しさん
2009/01/31(土) 11:17:09>CreateGraphics()で得たGraphicsで直接描こうとしている。
じゃあオフスクリーンにも20msecで描画する必要ないじゃん
0415デフォルトの名無しさん
2009/01/31(土) 11:41:59とくに>>411
0416デフォルトの名無しさん
2009/01/31(土) 11:52:58オフスクリーン
というのはどこから出てきたんだ?
0417デフォルトの名無しさん
2009/01/31(土) 11:58:290418デフォルトの名無しさん
2009/01/31(土) 11:58:360419デフォルトの名無しさん
2009/01/31(土) 11:59:47>20msecでコントロールのアップデートはありえない
のなら20msec間隔で描画する必要がない
0420デフォルトの名無しさん
2009/01/31(土) 12:01:130421デフォルトの名無しさん
2009/01/31(土) 12:02:120422デフォルトの名無しさん
2009/01/31(土) 12:06:590423デフォルトの名無しさん
2009/01/31(土) 12:09:33フォームにパネルとSystem.Timers.Timerはって、20msecに設定でこれ。
Font stockFont = new Font(FontFamily.GenericMonospace, 14);
int locs = 0;
private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
using (Graphics g = panel1.CreateGraphics())
{
g.FillRectangle(Brushes.Blue, new Rectangle(8, 8 + 28 * locs, 14 * 20, 28));
g.DrawString(Environment.TickCount.ToString(), stockFont, Brushes.Yellow, 10, 10 + 28 * locs);
locs++; if (locs >= 5) locs = 0;
}
}
0424デフォルトの名無しさん
2009/01/31(土) 12:24:110425デフォルトの名無しさん
2009/01/31(土) 12:24:57ありえないとか言いながら20msecでコントロール(panel)のアップデートしてんじゃねーよ
0426デフォルトの名無しさん
2009/01/31(土) 12:33:10ありえないのは、Control.Invokeを使うこと。
他のスレッドからだからPanel1.Update()も使えない。
Timers.Timerをフォームに貼り付けてと書いたけど、実際はコードでnewしてる。
フォームに張りつけた場合は、ここだけthisからnullに変更してくれ。
this.timer1.SynchronizingObject = null;
0427デフォルトの名無しさん
2009/01/31(土) 12:36:52フォルダの[ツール]-[フォルダオプション]で表示できるフォルダオプションのウィンドウを開くには、なにを呼び出せばいいですか?
可能なら、表示オプションのタブをクリックした状態にしたいです。
どなたかご教示ください。よろしくお願いします。
この中身を編集するということは、レジストリをいじるということかと思いますが、その場合、どのような方法を取ればよいでしょう?
違っていたらご指摘いただけないでしょうか。
0428デフォルトの名無しさん
2009/01/31(土) 12:37:52>>423くらいの処理なら間に合わないこともないかもしれないけど一時的に遅れることだってあるだろ
0429デフォルトの名無しさん
2009/01/31(土) 12:46:55それで>>405がAutoResetEventと書いてるのだと思うよ。
つまり間に合わなかった場合は、その分間隔を遅延させるか1回か数回とばすか。
実現する方法はいくつかあるが、AutoResetEventを使うのはとばす方のロジックで使える。
この辺は普通にゲームの描画のアルゴリズムだと思うんだけどな。
0430デフォルトの名無しさん
2009/01/31(土) 13:17:19Vistaだったら
::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{6DFD7C5C-2451-11D3-A299-00C04F8EF6AF}
なんだけど。これをShellExecute。
XPはシラネ
あとはRegistryクラスで編集、WM_SETTINGCHANGEDをブロードキャストとかかのう
0431デフォルトの名無しさん
2009/01/31(土) 14:38:100432デフォルトの名無しさん
2009/01/31(土) 14:41:32頻繁に式木作って評価するならインタプリタ作った方がいいのかな
0433デフォルトの名無しさん
2009/01/31(土) 14:50:43関連付けされたクラスのコンストラクタが、
関連元クラスに追加されるみたいだけど、何につかうんだべ。
0434デフォルトの名無しさん
2009/01/31(土) 14:56:27コールバックは、
・1000回呼ばれたら終了イベント上げる
・開始前と最後のコールバック時に時刻表示
メインは
・1秒後から20msecでコールバックするようにタイマーセット
・終了イベントが上がってきたらタイマーをdisposeして終了
という事実上タイマーが使われるだけで何もしないサンプルをためしに
作ってみたが、32秒かかるよ。最初の1秒待ち差し引いても、平均31msec
呼ばれるのにかかってる。
0435デフォルトの名無しさん
2009/01/31(土) 15:36:1420msecといってるのは>>405でTimers.Timerにこだわる必要もないのだが。
ただ1000回で31秒かかるというのはおかしいな。
長いがコードはるね。Celeron1.4G WinXPで00:00:20.0493193だった。
using System;
using System.Threading;
class Startup {
void Test() {
using (var timer1 = new System.Timers.Timer()) {
timer1.Interval = 20;
int counter = 0;
timer1.Elapsed += (o, e) => {
if (++counter >= 1000) lock (this) Monitor.Pulse(this);
};
var sw = System.Diagnostics.Stopwatch.StartNew();
timer1.Start();
lock (this) Monitor.Wait(this);
timer1.Stop();
sw.Stop(); Console.WriteLine(sw.Elapsed);
}
}
static void Main() { new Startup().Test(); }
}
0436デフォルトの名無しさん
2009/01/31(土) 16:30:27private Directory<int,int> _dic;
public Directory<int,int> dic{
get ...
set ...
}
みたいにそのままプロパティにしちゃうと、外からdic[key]=1;って叩けないですよね?
0437デフォルトの名無しさん
2009/01/31(土) 16:37:42public int this[int key] { get { return _dic[key]; } }
みたいに隠蔽して必要な値を取得できるメソッドとかだけ公開すれば操作はしようがないので堅いよ。
0438デフォルトの名無しさん
2009/01/31(土) 16:47:53外から叩けちゃうと隠蔽にならないんだが、そのコードなら別に外から叩けるな。
0439デフォルトの名無しさん
2009/01/31(土) 16:48:300440デフォルトの名無しさん
2009/01/31(土) 16:58:52>ただ1000回で31秒かかるというのはおかしいな。
>長いがコードはるね。Celeron1.4G WinXPで00:00:20.0493193だった。
ハードウェア割り込みタイマーの周期次第じゃないの?
この周期はどこかのアプリがtimeBeginPeriodを使うだけで
簡単に変わるから、単純にOSとCPUだけ並べて
おかしい/おかしくないとは言えないよ。
Windowsだとデフォルトの割り込み間隔が16msecってのはよくある値だし
20msecのタイマーを仕掛けたら32msecごとにコールバックされていた
と考えればむしろ辻褄があう。(32msec×1000で約32s)
>>434 の環境でメディアプレイヤーなんかを同時に起動してるだけで
結果は変わるんじゃないかね。
0441デフォルトの名無しさん
2009/01/31(土) 17:05:310442デフォルトの名無しさん
2009/01/31(土) 17:12:00例えば、ファイルコピーをするメソッドで、コピー元が無ければ例外を発生する場合
public bool CopyTo(string fromFileName, string toFileName)
1)
if (!this.GetIsFileExistsfromFileName,
throw new FileNotFoundException();
System.IO.File.Copy(fromFileName, toFileName, true);
return true;
2)
if (this.GetIsFileExists(fromFileName),
{
System.IO.File.Copy(fromFileName, toFileName, true);
return true;
}
else
throw new FileNotFoundException();
上下のどちらがいいのかな。
0443デフォルトの名無しさん
2009/01/31(土) 17:13:15public bool CopyTo(string fromFileName, string toFileName, bool canOverride)
1)
if (!this.GetIsFileExists(fromFileName))
throw new FileNotFoundException();
if (!canOverride)
{
if (this.GetIsFileExists(toFileName))
return false;
}
System.IO.File.Copy(fromFileName,toFileName, false);
return true;
2)//ビルド時にエラーになるかも
if (this.GetIsFileExists(fromFileName))
{
if (canOverride)
{
System.IO.File.Copy(fromFileName,toFileName, false);
return true;
}
else
{
if (this.GetIsFileExists(toFileName))
return false;
}
}
else
throw new FileNotFoundException();
0444デフォルトの名無しさん
2009/01/31(土) 17:13:52if (this.GetIsFileExists(fromFileName))
{
if (!canOverride)
{
if (!this.GetIsFileExists(toFileName))
{
System.IO.File.Copy(fromFileName,toFileName, false);
return true;
}
}
}
else
throw new FileNotFoundException();
return false;
こんな書き方があると思うんだけど、見やすいというか、わかりやすい書き方が思いつかない。
なんかいいアイデアないかな・・
0445デフォルトの名無しさん
2009/01/31(土) 17:14:350446デフォルトの名無しさん
2009/01/31(土) 17:15:190447デフォルトの名無しさん
2009/01/31(土) 17:18:020448434
2009/01/31(土) 17:21:02using System;
using System.Threading;
using System.Collections.Generic;
class TimerExample
{
static void Main()
{ AutoResetEvent autoEvent = new AutoResetEvent(false);
StatusChecker statusChecker = new StatusChecker(1000);
TimerCallback timerDelegate = new TimerCallback(statusChecker.CheckStatus);
Timer stateTimer = new Timer(timerDelegate, autoEvent, 1000, 20);
autoEvent.WaitOne(60000, false);
stateTimer.Dispose();
}
}
class StatusChecker
{
int invokeCount, maxCount;
public StatusChecker(int count)
{ invokeCount = 0;
maxCount = count;
Console.WriteLine(DateTime.Now);
}
public void CheckStatus(Object stateInfo)
{ AutoResetEvent autoEvent = (AutoResetEvent)stateInfo;
if(++invokeCount == maxCount){
Console.WriteLine(DateTime.Now);
autoEvent.Set();
}
}
}
0449デフォルトの名無しさん
2009/01/31(土) 17:27:03Pentium4@2G WinXP .NET 3.5SP1
結果 00:00:31.2455778
というわけで31秒かかる環境はここにもある。
0450434
2009/01/31(土) 17:34:00Vista Home Premium
Core2 Duo [email protected]
0451デフォルトの名無しさん
2009/01/31(土) 17:38:53こちらは、21-22秒で完了。起動時の1秒待機があるから20.5秒くらい。
>>440の説が正しいなこりゃ。
0452デフォルトの名無しさん
2009/01/31(土) 17:45:430453デフォルトの名無しさん
2009/01/31(土) 17:50:320454434
2009/01/31(土) 18:08:02private void timer1_Tick(object sender, EventArgs e)
{
label3.Text = (Convert.ToInt32(label3.Text) + 1).ToString();
}
というカウントアップをリアルタイム描画。
1000回回して31.24秒だった。
もういいや。
>>453
それは、(ひょっとすると元質問者以外は)百も承知でしょ。
0455デフォルトの名無しさん
2009/01/31(土) 18:47:05ごめん、例が悪かったね。返り値が必要/不必要という点でなくて、
そういう返り値を出したいとき、どう書くのがいいのかなと思って。
別の例を出したほうが理解してもらいやすいのかな。
public int GetType(string word) 例えばword=="nullpo"の時0で、それ以外1を返すとき、
わかりやすいのはどれだろう。
if (word == "nullpo") ■1
return 0;
else
return 1;
if (word == "nullpo") ■2
return 0;
return 1;
int type = 1;
if (word == "nullpo") ■3
type = 0;
return type;
0456デフォルトの名無しさん
2009/01/31(土) 18:48:24public int GetType(string word, bool canAcceptNullpo)
if (word == "nullpo") ■a
if (canAcceptNullpo)
return 1;
else
return 0;
else
return 1;
if (canAcceptNullpo) ■b
return 1;
else
if (word == "nullpo")
return 0;
else
return 1;
if (canAcceptNullpo) ■c
return 1;
if (word == "nullpo")
return 0;
else
return 1;
などあると思うけど、もしわかりやすいアイデアあったら頼みます。
0457デフォルトの名無しさん
2009/01/31(土) 19:02:09return (word == "nullpo") ? ((canAcceptNullpo) ? 1: 0) : 1;
というのは冗談として、
事前条件的なものは早めにチェックして単独でreturnしたほうがいいと思いますよ。
引数の検査、つまりnullチェックのや範囲チェック的なものはそれ。
0458デフォルトの名無しさん
2009/01/31(土) 19:05:44どうでもいいだろそんなの。
そもそも最初の質問者の質問意図と全然違うこと言ってるのに「それを踏まえて」
ってどういう神経?
0459デフォルトの名無しさん
2009/01/31(土) 19:11:33素直に受け止めておいたほうがいいとおも
例外の役割のうちに一貫したエラー処理メカニズムの提供があるんだから
>>455-456よりよほど重要だ
0460デフォルトの名無しさん
2009/01/31(土) 19:12:190461デフォルトの名無しさん
2009/01/31(土) 21:02:03デバックなしで実行。
開いたウィンドウをクリックすると
そのウィンドウが最小化されてしまう。
つまり最大化やら最小化ができない。
複雑でも何でもないんだが教えてくれ…
0462デフォルトの名無しさん
2009/01/31(土) 21:03:230463デフォルトの名無しさん
2009/01/31(土) 21:09:12フォームのプロパティを確認しろ
0464デフォルトの名無しさん
2009/01/31(土) 22:13:49>>457
単独で、returnできるうちにしてしまうってのが正解なのかな。やっぱり。
>>458
>どうでもいいだろそんなの。
それならいいんだけどね。なら動けばなんだっていいみたいな感じが自分ではするので、
何か可読性がよく、わかりやすい方法が内かなと思って。
「それを踏まえて」の前はif文によって異なるreturn値を返す方法についての方法論を示したということ。
「それを踏まえて」の後は、その異なるreturn値に、さらに例外がでてきた場合の例なんだけど、
書いていて旨い例が見つからず、何かもっと言い例がないかなと思ったの。
>>459
了解、心にとめておきます。
ただ、手近にあってソースで例を書いたので、戻り値と例外が一緒くたの例になってしまった。
例が悪かった。すまない。よければ、>>455と>>456の書き方で、
自分はこうしてるみたいな理由があったら教えてほしい。
0465デフォルトの名無しさん
2009/01/31(土) 22:25:50もう、そんな些細なことに固執して宗教論争してても飯が食えるような
牧歌的な時代じゃないんだから。
もっと他に理解したり習得したりすべきことが山ほどあるだろ。
0466デフォルトの名無しさん
2009/01/31(土) 23:21:19そういう些細なことまで書いてあるCode Completeって本がある
複数リターンについても記述があったはずだからまずは立ち読みで
0467デフォルトの名無しさん
2009/01/31(土) 23:49:29どうでも良くないだろ。こういうのは大事だぞ。
生産性や可視性の観点から重要。
最近はPCの性能が良くなったからか、
同じスコープでインスタンスを返すループを伴うメソッドやプロパティを、
何の資源も消費せずに、いくらでもインスタンスが出てくる
打ち出の小槌みたいに簡単に使う傾向があるしな。
0468デフォルトの名無しさん
2009/02/01(日) 00:12:10動詞に対する結果を示すbool型変数の名前はどうしてますか
IsCreated IsClosed 等、Is○○○だと英文法的におかしいので
0469デフォルトの名無しさん
2009/02/01(日) 00:14:590470デフォルトの名無しさん
2009/02/01(日) 00:15:53英文法的にも別におかしくない
0471468
2009/02/01(日) 00:25:580472デフォルトの名無しさん
2009/02/01(日) 02:31:400473デフォルトの名無しさん
2009/02/01(日) 03:09:39戻り値を受け取ることは出来ますか?
0474デフォルトの名無しさん
2009/02/01(日) 03:10:500475デフォルトの名無しさん
2009/02/01(日) 05:30:49引数やインスタンス名まで含めて一つのセンテンスと捉えると、寧ろ自然なことが多い
0476デフォルトの名無しさん
2009/02/01(日) 10:03:38Genericの中でこいつだけdllが違うのか
しかもSystem.Coreはデフォルトでは参照設定に追加されてないという罠。
0477デフォルトの名無しさん
2009/02/01(日) 10:24:45一応csc.rspには入ってるけどな
0478デフォルトの名無しさん
2009/02/01(日) 11:21:440479デフォルトの名無しさん
2009/02/01(日) 11:30:00>しかもSystem.Coreはデフォルトでは参照設定に追加されてないという罠。
プロジェクトテンプレートの設定次第。
デフォルトで参照設定に追加されている人も結構多いはず。
LINQ用のクラスもSystem.Coreに含まれてるから。
LINQを使うのにいちいち参照設定が必要だったって人はあんまり見ないよね?
そういう人ははHashSetも最初からIntelliSenseに表示されるように見えているはず。
0480デフォルトの名無しさん
2009/02/01(日) 11:36:44bool型のプロパティの名前をisやhasで始まるのは定番中の定番。
isなしで形容詞or過去分詞のみのパターンも、それはそれで定番。
0481デフォルトの名無しさん
2009/02/01(日) 11:55:080482デフォルトの名無しさん
2009/02/01(日) 12:37:390483デフォルトの名無しさん
2009/02/01(日) 12:39:360484デフォルトの名無しさん
2009/02/01(日) 13:18:35過去分詞じゃなくて動詞の過去形(ガイドライン参照)
0485デフォルトの名無しさん
2009/02/01(日) 15:50:100486デフォルトの名無しさん
2009/02/01(日) 17:28:110487デフォルトの名無しさん
2009/02/01(日) 17:49:530488デフォルトの名無しさん
2009/02/01(日) 18:15:04(1)
this.openProcess = new System.Diagnostics.Process();
this.openProcess.StartInfo.Arguments = @"C:\略\My Documents\";
this.openProcess.StartInfo.FileName = @"C:\Wnidows\explorer.exe";
openProcess.Start();
(2)
System.Diagnostics.Process openProcess = System.Diagnostics.Process.Start(@"C:\略\My Documents\");
(3)
System.Diagnostics.Process.Start(@"C:\略\My Documents\");
(2)と(3)では、My Documentsを開くことができます。
(1)の場合は、引数をうまくとれず、C:\が開いてしまいます。
この理由と、引数としてフォルダを指定する方法を教えてください。
0489デフォルトの名無しさん
2009/02/01(日) 18:15:51○がコレクションの場合は一つのコレクションとみなす
0490デフォルトの名無しさん
2009/02/01(日) 18:19:21半角空白を含む引数は" "で括る
基本だよ
0491デフォルトの名無しさん
2009/02/01(日) 18:28:18えっ?
this.openProcess.StartInfo.Arguments = @"C:\略\My Documents\";
と""でくくってあると思うんですけど…。
違ってたらごめんなさい。
というか、C:\Windowsとかの半角空白を含まないフォルダも開けないのです。
0492デフォルトの名無しさん
2009/02/01(日) 18:34:02そのダブルクォーテーションはC#の文字列を作る意味しかない。
その中身の文字列にダブルクォーテーションを入れないといけない。
"\"C:\\略\\My Documents\\\""のように。
0493デフォルトの名無しさん
2009/02/01(日) 18:53:58なるほど!
そうでしたか。できました。ありがとうございました。
0494デフォルトの名無しさん
2009/02/01(日) 20:46:31BegunかBeganか迷った末にStartedでお茶を濁すのですね。わかります。
0495デフォルトの名無しさん
2009/02/01(日) 22:18:17あるある
0496デフォルトの名無しさん
2009/02/02(月) 00:07:25public static const Define{
public const string Type0 = "hoge0";
public const string Type1 = "hoge1";
....
}
これだと文字列と比較するときにで
string temp = "bar";
if( bar == Define.Type0){
...
}
else if( bar == Define.Type1){
...
}
といちいち書かなくちゃならんのです。
かといって
public static const Define{
public const int numofNames = 10;
public const string[numofNames] Names = { "hoge0", "hoge1", ...., "hoge9"};
}
みたいな定義はstaticクラスないでは出来ないみたいだし・・・
何か良い方法ないですかね
0497デフォルトの名無しさん
2009/02/02(月) 00:10:460498デフォルトの名無しさん
2009/02/02(月) 00:11:370499デフォルトの名無しさん
2009/02/02(月) 00:11:58Type0, Type1, ... みたいにしてるけど、
何かいい方法ない? って聞いてる、
と、よく分かるけど
0500デフォルトの名無しさん
2009/02/02(月) 00:17:42497 じゃないけどお前の説明でやっと意味がわかった。
それなら、
public static readonly ReadOnlyCollection<string> Type =
new ReadOnlyCollection<string>(new [] {
"hoge01",
"hoge02",
});
こういうことかな?ReadOnlyCollection<string> は本当は継承したクラスにしたほうがいいんだけども
0501デフォルトの名無しさん
2009/02/02(月) 00:23:04public static readonly string[] Names = { "hoge0", "hoge1", ...., "hoge9"};
}
じゃだめなのか?
これだと、文字列との比較は
if(bar == Define.Names[ "hoge0" ])
のように書くことになる。
0502デフォルトの名無しさん
2009/02/02(月) 00:29:23おー、どっちもできました。
constだとnewできなくて、readonlyだとnewできるんですね。
0503デフォルトの名無しさん
2009/02/02(月) 01:18:52テキストエディタでコーディング中に表示されるポップアップヘルプの中身が英語なんです。
前使ってたヴァージョンでは日本語だった気がしますが、どうやったら日本語化できますか。
ちなみにメニュー等は全て日本語です。
0504デフォルトの名無しさん
2009/02/02(月) 01:24:35http://blogs.msdn.com/dd_jpn/archive/2008/11/26/9143673.aspx
これか?
0505デフォルトの名無しさん
2009/02/02(月) 01:56:30開発環境をインストールしていないターゲットマシン(XP)で、
エラーメッセージをファイルに落とすには、
どのようにコンパイルしたらよいのでしょう?
0506デフォルトの名無しさん
2009/02/02(月) 04:05:05コンパイルをしてexeファイルが出来上がるのですが、
これの会社名や著作権の情報を変更するにはどうすれば良いのでしょうか?
0507デフォルトの名無しさん
2009/02/02(月) 04:12:290508デフォルトの名無しさん
2009/02/02(月) 05:34:260509デフォルトの名無しさん
2009/02/02(月) 05:39:500510デフォルトの名無しさん
2009/02/02(月) 06:53:14再帰で一覧取得しようとしてるんだけど
たかだか3000ファイル程度でもAPIのFind***Fileに比べて遅くてたまらねえっす
0511デフォルトの名無しさん
2009/02/02(月) 07:06:310512デフォルトの名無しさん
2009/02/02(月) 07:27:01…最終的に解決しなきゃそうします多分
0513デフォルトの名無しさん
2009/02/02(月) 09:59:53XX:XXではなくXX時XX分と表示させたいのですが、簡単な方法ありますでしょうか?
0514デフォルトの名無しさん
2009/02/02(月) 10:15:19MessageBox.Show(DateTime.Now.ToString("HH時mm分"));
ってやってみ
0515デフォルトの名無しさん
2009/02/02(月) 10:27:10って何をやっているんですかね?Rowってのはテーブル1行分使う意味らしいのですが
()とかRows、[0]がわかりません。配列?
0516デフォルトの名無しさん
2009/02/02(月) 10:33:41[0]はインデクサ
元が何型かは知らんけど
Rowsコレクションの最初の要素をXmlsAa.AaRow型にキャストしてるだけ
分からんならキャストとインデクサでググれ
0517513
2009/02/02(月) 10:34:17無駄な書き込み申し訳なかったです。
0518デフォルトの名無しさん
2009/02/02(月) 10:35:490519デフォルトの名無しさん
2009/02/02(月) 10:36:270520514
2009/02/02(月) 10:37:15____
/ \
/ _ノ ヽ、_ \
/ o゚⌒ ⌒゚o \
| (__人__) |
\ ` ⌒´ /
0521デフォルトの名無しさん
2009/02/02(月) 10:44:28>DirectryクラスのGetFilesより早く一覧を取得する方法
>再帰で
DirectoryInfoクラスのGetFiles使ってるよね?
再帰で取得することよくあるけど、そんなに差はなかったような気がするが
0522513
2009/02/02(月) 10:45:000523デフォルトの名無しさん
2009/02/02(月) 10:48:400524デフォルトの名無しさん
2009/02/02(月) 10:50:200525デフォルトの名無しさん
2009/02/02(月) 11:07:550526デフォルトの名無しさん
2009/02/02(月) 11:43:29WinXP SP3
C# 2.0
今度デルファイで作られたソフトkらソケット通信(TCP)を利用してデータの受信を行うことになりました。
相手は1情報を512バイト固定で送信してくるそうです。
例えば相手が以下のようなデータを送信してきて受信完了した場合
どのように受信したデータを展開すればよいのでしょうか?
形式はなんでもかまわないので受信データをひとまず展開できれば構わないのですが・・・
一応受け取ったデータを同じような構造をもったクラスに展開して内部で処理用と考えています。
i1 integer;
i2
・
・
25回(100バイト分)
d1 double
d2
・
・
8回(72バイト分)
yobi : array[0..339] of shortint
(340バイト分)
計512バイト
こんな感じなのですが、なにかこういう展開のヒントや情報でも構わないのでお教え願えませんか?
0527デフォルトの名無しさん
2009/02/02(月) 12:07:350528デフォルトの名無しさん
2009/02/02(月) 12:22:27ソースコードを見られてしまうの?
0529デフォルトの名無しさん
2009/02/02(月) 12:27:340530デフォルトの名無しさん
2009/02/02(月) 12:30:01さああなたも御開帳
0531デフォルトの名無しさん
2009/02/02(月) 12:55:11そんな感じで出来るんならやってみようと思います。
ありがとうございました。
0532デフォルトの名無しさん
2009/02/02(月) 12:58:59形式は何でも構わないってことはDelphiで作られたソフトってのも変更可能なわけ?
その割に512バイト固定とか言ってるけど
.NET的にはバイナリの塊を処理するのは
BinaryReaderで読み取っていったり一つずつBitConverterで変換していくのが基本
0533デフォルトの名無しさん
2009/02/02(月) 13:21:480534デフォルトの名無しさん
2009/02/02(月) 13:27:350535デフォルトの名無しさん
2009/02/02(月) 14:34:06今日の話ですけど?w
0536デフォルトの名無しさん
2009/02/02(月) 14:43:260537デフォルトの名無しさん
2009/02/02(月) 14:45:40質問したいなら質問の体裁を取れ
みたいな
0538デフォルトの名無しさん
2009/02/02(月) 14:47:43変更は可能と言えば可能なんですが・・・
出来るだけデルファイ側は変更しないようにとのことなので…orz
例えばa1,a2辺りを処理するのは
おとなしく受け取ったバイト配列を BitConverter.ToInt32
で一個づつ自分用にばらしていくのが妥当という感じでしょうか?
0539デフォルトの名無しさん
2009/02/02(月) 15:14:40直接構造体に当てはめるなんてメモリイメージに縛られすぎ
というのがC#の方針
.NET間ならBinaryFormatterのシリアライズとかで十分だからな
0540デフォルトの名無しさん
2009/02/02(月) 15:31:15テキストベースのプロトコルにすることが多くなった。
固定レコードは流行らなくなったな。
0541デフォルトの名無しさん
2009/02/02(月) 15:33:40毛テスタ
0542デフォルトの名無しさん
2009/02/02(月) 15:35:440543デフォルトの名無しさん
2009/02/02(月) 15:37:300544デフォルトの名無しさん
2009/02/02(月) 15:39:400545デフォルトの名無しさん
2009/02/02(月) 15:43:210546デフォルトの名無しさん
2009/02/02(月) 15:49:38セミコロンはありまふ
メソッドの中で宣言・・・これかもです。ありがとう。
Protected voidなんちゃらの処理の中の変数宣言で、privateはダメなのですかね
0547デフォルトの名無しさん
2009/02/02(月) 15:53:37ヽ(・ω・)/ ズコー
\(.\ ノ
、ハ,,、  ̄
 ̄
0548デフォルトの名無しさん
2009/02/02(月) 16:10:49ヽ(・ω・)/ ズコー
\(.\ ノ
、ハ,,、  ̄
 ̄
∧∧
ヽ(・ω・)/ ズコー
\(.\ ノ
、ハ,,、  ̄
 ̄
0549デフォルトの名無しさん
2009/02/02(月) 16:59:36503です。
ターゲットマシン(XP)でのFormアプリケーションのデバッグ方法、助言お願いします。
いまのところMessageBoxでいくつか変数を表示しようとしているます。
問題はMessageBoxさえ表示されないことで、ということはその前でエラーが起きていることはわかるのです。
かといって頭からぜんぶMessageBoxというのもなかなか途方にくれる話ですし。
デバッグのときに表示されるような情報を、一括してテキストファイルに落とせれば楽だと思うのです。
そういう方法ってあるんですか?
0550デフォルトの名無しさん
2009/02/02(月) 17:04:050551デフォルトの名無しさん
2009/02/02(月) 18:07:36なるほど
その方向で進めていくことにしました。
確かにマネージド同士なら楽なんですが・・・
そうでないものは初めてでちょっと色々 orz
0552デフォルトの名無しさん
2009/02/02(月) 18:26:36ありがとうございました。
がっ。
エラー情報やいずこ!?
0553デフォルトの名無しさん
2009/02/02(月) 18:51:48構成ファイルのapp.configにこれをぶち込んどけ
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add name="Text" type="System.Diagnostics.TextWriterTraceListener"
initializeData="c:\log\TraceSample.txt" />
<!-- <add name="Text" type="System.Diagnostics.ConsoleTraceListener" /> -->
<!-- <remove name="Default" /> -->
</listeners>
</trace>
</system.diagnostics>
</configuration>
0554デフォルトの名無しさん
2009/02/02(月) 19:19:38ワロタ
0555デフォルトの名無しさん
2009/02/02(月) 20:10:05今日知ったんなら今日の話だよなw
>>534の負けww
0556デフォルトの名無しさん
2009/02/02(月) 20:12:09それじゃDEBUGの意味がないだろ
TraceクラスとTRACE使え
0557デフォルトの名無しさん
2009/02/02(月) 21:59:350558デフォルトの名無しさん
2009/02/02(月) 22:01:470559デフォルトの名無しさん
2009/02/02(月) 23:11:00やめろ!やめるんだ!
そ、そんなソースは認めないぞ
#define ノシ throw
calss 三旦 : System.Exception {..}
if ( this.Value < this.Min ) ノシ 三旦;
0560デフォルトの名無しさん
2009/02/02(月) 23:14:170561デフォルトの名無しさん
2009/02/02(月) 23:14:37C# で define は値を定義できないぞ
0562デフォルトの名無しさん
2009/02/02(月) 23:19:06{
public abstract int Hoge { get; }
}
というクラスがあり、これを継承したBでgetの実装をします。
そしてクラスB内から値をセットするのにprivate setを追加したいのですが
CS0546になりできません。
こいうことはできないのでしょうか?
class B : A
{
public override int Hoge
{
get { 〜 }
private set { 〜 } // CS0546
}
}
0563デフォルトの名無しさん
2009/02/02(月) 23:19:480564デフォルトの名無しさん
2009/02/02(月) 23:29:260565デフォルトの名無しさん
2009/02/03(火) 01:23:41ビューアーを作り、それをデフォルト起動アプリケーションにしました。
string[] args = Environment.GetCommandLineArgs();
if (args.Length != 1) {Title = System.IO.Path.GetFileName(args[1]);}
で、ファイル名をタイトルにしてウィンドウに表示しようとしています。
exeファイルにデータファイルのアイコンをドラッグするとファイル名を取得できますが、データファイルを単独でダブルクリック起動する場合には取得できません。
デフォルト起動の場合、データファイルのファイル名は、exeファイルにどのように渡されていて、exeからはどのように取得できるのですか?
ご教示願います。
0566デフォルトの名無しさん
2009/02/03(火) 01:44:01ありがとうございます。
app.configがなかったので、新規項目の追加で構成ファイルを追加してApp.configを作り、そこに追加しました!
で、早速exeを作成し、相変わらずエラーが出ていますが、ログは記述されず…。
ログファイルも作成されていません。
>>556
ありがとうございます。
Traceクラスについて勉強してみます。
いま
http://www.atmarkit.co.jp/fdotnet/dotnettips/757debugview/debugview.html
を読んでます。
0567Charles Petzold
2009/02/03(火) 02:36:35My name is Charles Petzold.I write one book. That name is Windows programming by C#.
This book cover most part of Programming Windows by C#.So if you read this book, you can write many system.
By the way, I have three words for Japanese Programmer.
[Don't use Linux.]
Do you understand?
Good bye.
0568デフォルトの名無しさん
2009/02/03(火) 02:51:160569デフォルトの名無しさん
2009/02/03(火) 02:57:20でも今見ると古いかもなあ
0570デフォルトの名無しさん
2009/02/03(火) 06:07:37レジストリにどういう風に登録されてるかによる。
普通、「アプリのパス "%1"」 なんで、そのまま取れるけどね。
0571デフォルトの名無しさん
2009/02/03(火) 07:55:20いちいちネットに繋ぎに行くんでウザいのですが…
0572デフォルトの名無しさん
2009/02/03(火) 08:03:55探せば見つかるだろうけど親切な人が教えてくれるかも
0573デフォルトの名無しさん
2009/02/03(火) 09:34:12Expressだとサブセット版だけども。
あとはWindowsSDKインスコ。
0574デフォルトの名無しさん
2009/02/03(火) 10:09:43ヘルプを既にインストールしているならヘルプ(Micorosoft Document Explorer)の
「ツール」->「オプション」->「ヘルプ」->「オンライン」で「オンラインではなくローカルのみで実行」にチェック。
インストールしてなくて、必要最小限で良いなら >>573。
全部入れたいならコレ。2GBちょっとあるけどね。
MSDN Library for Visual Studio 2008 SP1 (2008年12月更新版)
http://www.microsoft.com/downloads/details.aspx?FamilyID=7bbe5eda-5062-4ebb-83c7-d3c5ff92a373&DisplayLang=ja
ISO イメージなのでインストールするには、仮想ドライブが使えるソフト(CloneDrive や DAEMON とか)も必要。
0575デフォルトの名無しさん
2009/02/03(火) 11:16:28PropertyInfo.GetAccessors()を呼び出すと、
getアクセサ、setアクセサ、およびその他のアクセサが返ってくるとありますが
その他のアクセサってなんですかね
0576デフォルトの名無しさん
2009/02/03(火) 11:20:19intとかparseとかその他もろもろ、何て読むのですか?
読み方サイトみたいのってありますか?
読めなくても構わないんですがなんとなく喉の骨が取れない感じです。
0577デフォルトの名無しさん
2009/02/03(火) 11:24:54ttp://dictionary.goo.ne.jp/search.php?MT=Integer&kind=ej
ttp://dictionary.goo.ne.jp/search.php?MT=Perse&kind=ej
本質的には通じりゃいい
0578576
2009/02/03(火) 11:31:04みんなそんなもんなんですね
適当に脳内処理しときます。
今仕事が開店休業状態で暇つぶしにC#ってものを勉強始めたけど
突き詰めたらどんな高度なwindowsアプリでも作れるようになれるのですか?
たとえばosとかofficeとかw
このままだと会社が倒産しそうだから、C#勉強してそっちに働き口みつかるかなぁ・・・
0579デフォルトの名無しさん
2009/02/03(火) 11:33:04フレームワークより下にはいけない
0581デフォルトの名無しさん
2009/02/03(火) 11:42:160582デフォルトの名無しさん
2009/02/03(火) 11:57:21ハ_ハ
('(゚∀゚∩ 飛べるよ!
ヽ 〈
ヽヽ_)
0583デフォルトの名無しさん
2009/02/03(火) 13:18:520584デフォルトの名無しさん
2009/02/03(火) 13:23:03寝不足は生産性も減退させる
0585デフォルトの名無しさん
2009/02/03(火) 13:25:25一週間くらいほったらかしといたら、うまく動いてたときのコード忘れてしまた orz
全く思い出せない
0586デフォルトの名無しさん
2009/02/03(火) 13:27:280587デフォルトの名無しさん
2009/02/03(火) 13:38:590588デフォルトの名無しさん
2009/02/03(火) 16:50:25おかげさまで「〜〜実装前.txt」が10個以上あるが。
0589デフォルトの名無しさん
2009/02/03(火) 17:01:44おそらく、VB6/COMで、setアクセサ相当が値のLetと参照のSetに分かれていた名残。
Letが.NETのsetアクセサで、Setがその他に対応すると思う。
0590デフォルトの名無しさん
2009/02/03(火) 17:16:13バージョン管理システム使って履歴残せ。
0591デフォルトの名無しさん
2009/02/03(火) 17:16:35言語によっては他の種類のアクセサを定義することもできるということじゃないの
プロパティって複数のアクセサメソッドの情報をまとめたメタデータにすぎないから
0592デフォルトの名無しさん
2009/02/03(火) 17:26:52・Panel1にテキストボックスとボタン
・Panel2にデータグリッドビュー
を置いてあるんすけど、テキストボックスとボタンってどのコレクションになるんすかね?
this.Controls だとコレクションは SplitContainer しか入ってないし
this.SplitContainer.Panel1.Controls だとコレクションは Panel1 しか入ってない
this.SplitContainer.Panel2.Controls ってやるとちゃんと DataGridView1 が入ってるのに
わけわかめ
0593592
2009/02/03(火) 17:31:470594デフォルトの名無しさん
2009/02/03(火) 17:32:54Panel1.Contols に Panel1 が入ってるわけねーだろ。
0595デフォルトの名無しさん
2009/02/03(火) 17:38:18あわてんぼさんめ
0596デフォルトの名無しさん
2009/02/03(火) 19:20:410597デフォルトの名無しさん
2009/02/03(火) 19:30:320598風来坊
2009/02/03(火) 20:48:10C#にて 音声録音の機能を実装したいと思っています。
.NET 1.1,2.0,3.5は問いません。
デフォに設定されている出力(再生)デバイスの音声信号を
wav(wavにこだわる必要は無い)ファイルとして保存したいのですが、
どうすれば実現できますか?
どなたかご教授ください。お願いします。
0599デフォルトの名無しさん
2009/02/03(火) 21:22:400600デフォルトの名無しさん
2009/02/03(火) 21:35:080601デフォルトの名無しさん
2009/02/03(火) 21:36:450602デフォルトの名無しさん
2009/02/03(火) 21:42:390603デフォルトの名無しさん
2009/02/03(火) 21:46:320604デフォルトの名無しさん
2009/02/03(火) 21:50:210605デフォルトの名無しさん
2009/02/03(火) 21:55:420606デフォルトの名無しさん
2009/02/03(火) 22:03:050607デフォルトの名無しさん
2009/02/03(火) 22:06:26↓
(´・ω・`)しらんがな
こうやったんだけど上手くいきません。どうしたらいいですか?
↓
(´・ω・`)オジサンが教えたるがな
0608デフォルトの名無しさん
2009/02/03(火) 22:21:14Debugモードでは問題なく動くのにReleaseモードではフリーズする場合、
どういった原因が考えられますでしょうか?
大量の計算を連続してさせているプログラムで、フリーズする箇所は毎回違うようです。
調べようにも取っ掛かりすらなくて困っています。
よろしくお願いします。
0609デフォルトの名無しさん
2009/02/03(火) 22:21:520610デフォルトの名無しさん
2009/02/03(火) 22:26:04100万行くらいのtxtファイルを読んできて、数分間延々と処理させてます。
CPUに負荷がかかりすぎるのが問題なんですかね?
0611デフォルトの名無しさん
2009/02/03(火) 22:28:310612608
2009/02/03(火) 22:36:59処理開始から1〜2分はCPU使用率50%前後で、メモリ使用量が徐々に増加。
メモリが180MBくらいに達したところでCPU使用率が0%になってフリーズしました。
メモリ食いすぎってことでしょうか?
debugモードでは動くのに。。。
0613デフォルトの名無しさん
2009/02/03(火) 22:38:250614デフォルトの名無しさん
2009/02/03(火) 22:38:37リリースビルドでデバッグでも同じ?
0615デフォルトの名無しさん
2009/02/03(火) 22:44:20Thunder Forceの戦闘AI?
0616571
2009/02/03(火) 22:45:47ありがとうございます。
VMwareでLive版のLinux立ち上げてISOイメージをマウントしてから、
ローカルディスクに全コピーしてみます。
0617608
2009/02/03(火) 23:00:46マルチスレッド処理なので可能性はあるかもしれません。
ただ、デバッグで起こらないのでどうやって調べればいいのか。。。
>>614
>リリースビルドでデバッグ なんてことができるんですね。
試してみましたが、問題なく動きました。
\Releaseフォルダ内のexeを直接起動したときだけフリーズします。
0618デフォルトの名無しさん
2009/02/03(火) 23:03:370619デフォルトの名無しさん
2009/02/04(水) 00:49:06いずれにせよ質の悪いバグだ。詳しく設計がわからないとアドバイスのしようがない。
0620デフォルトの名無しさん
2009/02/04(水) 01:32:14レジストリですか。
すこし見てみたものの、まったく手がかりがありませんでした。
情報サンクスです。
0621デフォルトの名無しさん
2009/02/04(水) 02:01:40エクスプローラのメニューからツール→フォルダ オプションを選択
ファイルの種類タブで、データファイルの拡張子がどう登録されているか確認
0622デフォルトの名無しさん
2009/02/04(水) 04:07:18コンボボックスに二つの項目があり、項目1を選ぶと変数+変数、
項目2を選ぶと変数-変数といったような処理をしたいのですが
if文でどのようにコンボボックスを設定すればそのような処理ができるのでしょうか?
0623デフォルトの名無しさん
2009/02/04(水) 07:57:000624デフォルトの名無しさん
2009/02/04(水) 08:20:10ComboBox.SelectedIndexChangedでSelectedIndex見て判断しろ
0625デフォルトの名無しさん
2009/02/04(水) 10:06:230626デフォルトの名無しさん
2009/02/04(水) 10:39:03どうやって関連づけやったのよ?
関連づけやってるところのソース見せて
0627デフォルトの名無しさん
2009/02/04(水) 10:47:57↓でも読んでろ
ttp://dobon.net/vb/dotnet/system/associatedapp.html
どうせ実行ファイルのパスに空白が混じってるとかそういうオチだろうけど
0628デフォルトの名無しさん
2009/02/04(水) 11:37:58パネルに配置したボタン色がパネルの色に同化してしまいました。
xpでは正常に表示されます
対処方法などあれば教えてください。
0629デフォルトの名無しさん
2009/02/04(水) 12:09:00おマイには聞いてないってw
レジストリを触ったこと無い人がどうやって関連づけしたのかな〜っと
それに実行パスに空白があるからどうなるの?
0630デフォルトの名無しさん
2009/02/04(水) 12:14:360631デフォルトの名無しさん
2009/02/04(水) 14:02:29なんで粘着してんの?親切に教えてるだけじゃない
そもそもの質問者も、プログラムで関連付けをしたいなんて書いてないし
回答者も、レジストリを触ったこと無いとも書いてない
実行パスの空白はCUIのOS触ったことあるなら解るだろ
0632デフォルトの名無しさん
2009/02/04(水) 16:05:30felicap = felica_polling(pasorip, (ushort)systemcode, 0, 0);
この処理でfelicapに値が入るのですが、この処理の意味が根本的にわかりません。
ここではどういった処理が行われているのでしょうか?
0633デフォルトの名無しさん
2009/02/04(水) 16:09:18http://pc11.2ch.net/test/read.cgi/tech/1210717455/
0634デフォルトの名無しさん
2009/02/04(水) 16:18:21felicap = felica_polling(pasorip, (ushort)systemcode, 0, 0);
この処理でfelicapに値が入るのですが、この処理の意味が根本的にわかりません。
ここではどういった処理が行われているのでしょうか?
連続で同じカードの読み取りができなくて困っています。
0635デフォルトの名無しさん
2009/02/04(水) 16:19:31すみません。
該当スレに書き込むつもりが同じところに書き込んでしまいました。
0636デフォルトの名無しさん
2009/02/04(水) 17:28:30クラスAとBがあります。
クラスAにStack型stackがあります。
クラスBにString型stringがあります。
クラスBでクラスAをインスタンス化して、stackにstringをpushします。
そして変更されたstackをクラスAに戻して作業を進めたいのですが、
クラスAではstackは元のままになっています。
どのような問題があるのでしょうか?
0637デフォルトの名無しさん
2009/02/04(水) 17:30:180638デフォルトの名無しさん
2009/02/04(水) 17:32:05pushするメソッドをAに定義するべき
0639デフォルトの名無しさん
2009/02/04(水) 17:34:00たぶんnewして渡してるとかじゃないかw
0640デフォルトの名無しさん
2009/02/04(水) 17:40:32戻すじゃなくて戻したいの意味でした。すみません。
ClassA
{
public void ClassA()
{ }
public Stack stack = new Stack();
}
ClassB
{
public String string = 〜;
ClassA a = new ClassA()
a.stack.push(string);
}
これだけだとクラスAでは変更できてないです。
pushしたあとにどのような作業が必要でしょうか?
0641デフォルトの名無しさん
2009/02/04(水) 17:41:500642デフォルトの名無しさん
2009/02/04(水) 17:43:05生まれて半年だし
0643デフォルトの名無しさん
2009/02/04(水) 17:43:280644デフォルトの名無しさん
2009/02/04(水) 17:44:380645デフォルトの名無しさん
2009/02/04(水) 17:45:02staticにすればいいのかもしれないけど実際は絶対やっちゃダメなパターン
0646デフォルトの名無しさん
2009/02/04(水) 17:47:02「○○したいんだ」
って言ってる奴に勉強しろっても回答になってない気がするぜー
0647デフォルトの名無しさん
2009/02/04(水) 17:47:08{
public String string = 〜;
ClassA a = new ClassA()
//↓これメソッド内だよね?
a.stack.push(string);
}
↑でインスタンス化された a の stack にはちゃんとPushされている。
ただそのせっかく作ったClassAのインスタンスaは参照されないまま消えてしまっただけ
0648デフォルトの名無しさん
2009/02/04(水) 18:10:59timeが11:00と入力されなかった場合(たとえば1100と入力された場合)、コロンを追加しようとしています。
string time;
if (!(time.Contains(":"))) {
time = time[0] + time[1] + ":" + time[2] + time[3];
}
で、この値を見ると、11:00ではなくて98:00になっちゃうのですが、なんでこんな数字になっちゃうんでしょう。
原因と改良方法をご示唆いただけないでしょうか。
0649636の者です。
2009/02/04(水) 18:15:02ボタンをダブルクリックすれば、プログラムを書く場所を自動で作ってくれますが、
クラスBにあるボタンを押したときの動作を、クラスAに書くことは可能でしょうか?
0650デフォルトの名無しさん
2009/02/04(水) 18:17:59char同士の文字コードの加算になってるから
time = '1' + '1';
でやってみるとわかるよ
time = time[0].ToString() + time[1].ToString() + ":" + time[2].ToString() + time[3].ToString();
にすればいい
>>649
+=を使ったイベントハンドラの登録方法が理解できていればできる
0651デフォルトの名無しさん
2009/02/04(水) 18:23:58くどすぎる。
StringBuilder つかおうぜ。
0652デフォルトの名無しさん
2009/02/04(水) 18:27:280653デフォルトの名無しさん
2009/02/04(水) 18:27:30あ〜昔同じ失敗したな〜
0654デフォルトの名無しさん
2009/02/04(水) 18:27:37早速ありがとうございました。
ToString()でできました。
0655デフォルトの名無しさん
2009/02/04(水) 18:28:11そこで、StringBuilderは使わないだろ。
time = time.Substring(0, 2) + ":" + time.SubString(2, 2);
0657デフォルトの名無しさん
2009/02/04(水) 18:44:37ツール-フォルダオプションは、真っ先に見ました〜。
>>626、636
というか、ここで手動で関連づけを登録しました。
そうしたら、登録したとたん、「詳細設定」のボタンが消え、「元に戻す」というボタンに変化しちゃったのです。
詳細設定のボタンがあれば、アプリケーションの挙動を見れるかと思ったのですけど。
たとえば、txtの詳細設定のopenアクションを見ると、アクションを実行するアプリケーションの項目に、「C:\Windows\system32\NOTEPAD.EXE %1」とあり、これを修正すればよいことがわかります。
ところがなにしろボタンがないから、手も足もでない…。
空白かな〜。う〜〜む。
アプリケーションじたいはデータファイルのダブルクリックで起動しているのですが…。
ま、C#とはあまり関係なさそうなので、この件はこれで。
お騒がせしました。ありがとうございました。
0658デフォルトの名無しさん
2009/02/04(水) 18:57:25System.Text.RegularExpressions.Regexを使って
[ok] 100
[ok] 0.001
[ng] 00 → 0
[ok] 0.1000
前ゼロ入力をReplaceで""に置き換えたいのですが、正規表現が上手く書けませぬ
教えてエロい人
0659デフォルトの名無しさん
2009/02/04(水) 19:00:35正規表現 Part5
http://pc11.2ch.net/test/read.cgi/tech/1212498448/
0660デフォルトの名無しさん
2009/02/04(水) 19:02:220661デフォルトの名無しさん
2009/02/04(水) 21:49:44他クラスからアクセスする変数には手当たり次第static使ってるんだが…
何を勉強すればいいんですか?
0662デフォルトの名無しさん
2009/02/04(水) 21:52:530663デフォルトの名無しさん
2009/02/04(水) 21:55:560664デフォルトの名無しさん
2009/02/04(水) 21:57:38privateなstaticメソッドが最高だ
0665デフォルトの名無しさん
2009/02/04(水) 21:58:06構造化プログラミングを学んだら、中規模以上のプログラムをたくさん書く。
それからでもオブジェクト指向は遅くないよ。
0666デフォルトの名無しさん
2009/02/04(水) 21:59:25ただ1個しか存在しないもんな。
2つ作りてええええええええ!!!! と思っても
1つしか存在できない。
不便過ぎ。
0667デフォルトの名無しさん
2009/02/04(水) 22:02:020668デフォルトの名無しさん
2009/02/04(水) 22:02:420669デフォルトの名無しさん
2009/02/04(水) 22:02:49深いとこに行くと実用的じゃない宗教じみたものがうじゃうじゃ出てくるから
そこに行ってしまわないように気をつけないと
0670デフォルトの名無しさん
2009/02/04(水) 22:12:08>>665みたいな意見はありがちだけど、構造化プログラミングなんて
中身のないスカスカな話で馬鹿でなければ「畳の上の水泳」で十分だと思う。
っていうか、俺も含めてたかがOOP理解したぐらいで鬼の首とったように語るのは
とても恥ずかしいよなw
0671デフォルトの名無しさん
2009/02/04(水) 22:16:29継承は失敗だしインターフェースの実装もそんなに上手くない感じだと思う
そういった抽象化はクロージャにした方がシンプルで分かりやすい
0672デフォルトの名無しさん
2009/02/04(水) 22:19:30> 生まれて半年の者です。
おいおい、生後半年でプログラミングかよ。
たいしたもんだな!
0673デフォルトの名無しさん
2009/02/04(水) 22:21:380674デフォルトの名無しさん
2009/02/04(水) 22:24:22使いこなせない人にとって上手くないだけなんだろ
0675デフォルトの名無しさん
2009/02/04(水) 22:26:16いったいどんな子に育つやら
0676デフォルトの名無しさん
2009/02/04(水) 22:28:11正直違うかなと思うよ
今のC#にはもっとよい道具があるから
ただオブジェクト指向の基本的なところは抑えておかないとまずいけど
0677デフォルトの名無しさん
2009/02/04(水) 22:29:440678デフォルトの名無しさん
2009/02/04(水) 22:31:190679デフォルトの名無しさん
2009/02/04(水) 22:32:17それはC#が、最近になってより初心者向けの機能を実装をしてるってこと?
0680デフォルトの名無しさん
2009/02/04(水) 22:33:25>今のC#にはもっとよい道具があるから
ないってw
知ったようなこというなよ。
クラスベースのOOPが万能じゃないのは確かだけど、現時点でそのオルタナティブが
C#に限らず発案されているとは思えん。
0681デフォルトの名無しさん
2009/02/04(水) 22:33:31クロージャはインターフェースよりも初心者にとって使いやすいと思うよ
直観的だし
0682デフォルトの名無しさん
2009/02/04(水) 22:35:26クロージャーとインターフェイスって「代替財」か?
わけがわからんよ。
0683デフォルトの名無しさん
2009/02/04(水) 22:37:16自分が通ってきた道についてしか語れないだろ。
0684デフォルトの名無しさん
2009/02/04(水) 22:38:00クロージャは実際には一つのメソッドを持ったインターフェースを
実装したオブジェクトを簡易に作り出す機能だけど
それさえあればオブジェクト指向の抽象化は全部出来る
オブジェクト指向の継承にまつわるややこしいところはすっ飛ばして
そっちに行くのが今は正解なんじゃないかねえ
0685デフォルトの名無しさん
2009/02/04(水) 22:39:360686デフォルトの名無しさん
2009/02/04(水) 22:44:52それって、昔の1ファンクション1機能の構造化プログラミングと同じじゃないの?
静的なメソッドとは何がちがうのけ?
0687デフォルトの名無しさん
2009/02/04(水) 22:53:45C#でプログラムを作り始めて半年くらいになります。
ようやく身の回りのソフトは、だいぶ自作できるようになってきました。
ところで、それをリリースしようと思うと、プログラムのなかに直接書いてあるパスワードなどを設定ファイルに移動したり、自分用のディレクトリ構造にあわせて作った部分を汎用にする必要が出てきます。
それはまあやる気になればできそうなのですが、設定不要のかんたんなソフトを知人10人ほどにテストしてもらったところ、だれひとりとして.NETを入れていないため、動作しなかった、ということがわかりました。
ひょっとして、.NETやC#って、すごくマイナーなんでしょうか。
このままC#をつづけた方がよいのか(けっこう使いやすくて気に入ってます)、それとも別の言語に移ったほうがよいのか。
移るとしたら、もっとメジャーな言語ってなんですか?
Webベースのプログラムとか、Ajaxとかですか?
.NETを組み込んだ状態でコンパイルするとかできないんですかね〜?
0688デフォルトの名無しさん
2009/02/04(水) 22:55:38イメージ的には「C#で書けるFlash」
ランタイムは超小さいので配布が手軽
0689デフォルトの名無しさん
2009/02/04(水) 22:57:55ただ一部の機能が競合関係にあるだけ。
たぶん従来ICompareをわざわざ用意していたようなのがデリゲートでスッキリ
書けるようになった、みたいな例を見て短絡したんだろうけど。
0690デフォルトの名無しさん
2009/02/04(水) 23:03:14.netFrameworkをインストールしないって人は多いよね
vista以降は.netはインストされてるから、ある程度は問題なくなると思うけど
なんのインストもなくて利用可能なのは、VisualStudioのC++のネイティブコードか、
Delphiぐらいじゃないのかな。
0691デフォルトの名無しさん
2009/02/04(水) 23:13:21クラス内のメンバの初期化はどこでしてますか?
宣言時に初期化してしまうか、コンストラクタ内で初期化するか迷ってます。
///以下抜粋
internal sealed class 通信
{
private UdpClient UDP;
private Thread スレッド;
private List<byte[]> 受信リスト= new List<byte[]>();///宣言時か
private List<IPEndPoint> クライアントリスト= new List<IPEndPoint>();
public 通信(int ポート)
{
UDP= new UdpClient(ポート);///コンストラクタ内か
スレッド = new System.Threading.Thread(new System.Threading.ThreadStart(受信));
///抜粋以上
0692デフォルトの名無しさん
2009/02/04(水) 23:18:16基本は宣言時じゃないかな。
コンストラクタでもいいけど、コンストラクタをオーバーロードしているときには、
複数のコンストラクタで初期化しなくちゃいけなくなるから。
別のメソッドを用意して、そこで初期化してもいいけど、意味ない気がするし。
条件によるけど。
0693デフォルトの名無しさん
2009/02/04(水) 23:18:50http://pc11.2ch.net/test/read.cgi/tech/1229661915/
埋まったけど立てられなかった。
誰か頼む。
0694デフォルトの名無しさん
2009/02/04(水) 23:22:330695デフォルトの名無しさん
2009/02/04(水) 23:22:51あっちは相談室と名乗りながら、
質問の揚げ足を取って悦に浸っている常連ばかりだから嫌い
0696デフォルトの名無しさん
2009/02/04(水) 23:23:14Cとの比較で言うと、クロージャは「状態のある関数ポインタ」といえると思う
Xの値が欲しい時に
void Hoge(Func<int> getX){ int x = getX(); }
C#ならこう書ける。getXにはintを返す関数がなんでも入れられるしその場で作れる
Cで書くと
struct Func_int{
int (*func)(void*);
void* args;
};
void Hoge(Func_int fi)
{
int x = fi.func(fi.args);
}
こんなんだけど引数の型も作らなきゃいけないし関数はvoid*をとらなきゃいけないしで大変だ
オブジェクト指向で書くと
class Func<int> : IFunc<int>
{
int x, y;
public Func(int x, int y){ this.x = x; this.y = y; }
public int Method(){ return x + y; }
}
クロージャだと
Hoge(() => x + y);
こうだ。
これが進化だよ。
0697デフォルトの名無しさん
2009/02/04(水) 23:25:53でも作っとかないと、そういう人らがここに常駐されたら困る
0698デフォルトの名無しさん
2009/02/04(水) 23:31:25その前になんちゅうソースだコレ。
0699デフォルトの名無しさん
2009/02/04(水) 23:31:36心配無用
既に常駐してる
0700デフォルトの名無しさん
2009/02/04(水) 23:36:15C#, C♯, C#相談室 Part51
http://pc11.2ch.net/test/read.cgi/tech/1233757615/l50
0701デフォルトの名無しさん
2009/02/04(水) 23:36:42その例だと従来の方法でもStaticなメソッドを使えば
int x = Class.Method(a, b);
で代用がきくから同じことだと思うんだけど。何が違うの?
0702デフォルトの名無しさん
2009/02/04(水) 23:37:330703デフォルトの名無しさん
2009/02/04(水) 23:40:36VC++ も今は CRT が DLL 推奨だから配るならインストーラ作るべき
なんやけどな。msm があるしサイズも小さいので格段に楽だから
.NET と比べるレベルじゃないけど。
0704デフォルトの名無しさん
2009/02/04(水) 23:42:54基本的にはできるだけコンストラクタに書いたほうが、読みやすいコードになるよ。
#regionと組み合わせるとなお良い。
指すものがコンパイル時点で決まっていて、利用者側のコードに左右されない要素(リテラル的なもの)は宣言と初期化を一緒にしてもいいと思う
上の固定長バッファはあてはまらないけど…
0705デフォルトの名無しさん
2009/02/04(水) 23:44:00「.net Frameworksインストールしてね」で終わりじゃないか?
むしろ、Windows Updateで配布されてるんじゃないのか?.netぐらい
0706デフォルトの名無しさん
2009/02/04(水) 23:45:31乙
0707デフォルトの名無しさん
2009/02/04(水) 23:47:58「めんどくせえなぁ・・・なんでこんな糞プログラムを・・・。そうだ!インストールしてない事にすればいいんだ!」
0708デフォルトの名無しさん
2009/02/04(水) 23:49:28void Hoge()
{
int x = Class.Method(a,b);
}
これだとxはMethod(a,b)から返ってくる値しかとれないでしょ。
void Hoge(Func<int> getX)
こうしておけば
Hoge(() => x + y);
Hoge(() => x * y);
外部から自由な演算を入れられる。
ハッシュテーブルのキーが欲しいということになっても
Dictionary<TKey, TValue> CreateDictionary<TKey, TValue>(TValue[] array, Func<TValue, TKey> getKey)
{
Dictionary<TKey, TValue> dic = new Dictionary<TKey, TValue>();
foreach(var item in array)
{
dic.Add(getKey(item), item);
}
return dic;
}
var dic = CreateDictionary(array, item => item.Name);
その型のKeyにしたいものを自由に選べる
0709デフォルトの名無しさん
2009/02/04(水) 23:52:03http://msdn.microsoft.com/ja-jp/library/xak0tsbd.aspx
ちなみにWindows Server 2003、Windows Vista、Windows 7にはリリース時点で最新の.NET Frameworkが入っている。(より新しいバージョンが出て、それが必要な場合は更に入れる必要がある)
0710デフォルトの名無しさん
2009/02/04(水) 23:53:570711デフォルトの名無しさん
2009/02/04(水) 23:57:24かなり簡単に実装できるよな
0712デフォルトの名無しさん
2009/02/04(水) 23:58:26それみると、君の主張するところの直感的でもないし、
初心者にもわかりにくいと思うよ
0713デフォルトの名無しさん
2009/02/05(木) 00:02:11じゃあオブジェクト指向や構造化でもっと直感的に、
初心者に分かりやすく書ける?
0714デフォルトの名無しさん
2009/02/05(木) 00:04:46よそで存分に議論してくれ
0715デフォルトの名無しさん
2009/02/05(木) 00:05:140716デフォルトの名無しさん
2009/02/05(木) 00:07:060717デフォルトの名無しさん
2009/02/05(木) 00:07:421:public class Foo{
2: private readonly int[] test = new int[]{1,2,3,4,5};
3: public Foo(){
4: int[] test2 = test1;
5: test2[0]=2;
6: Console.WriteLine(@"test[0]=" + test[0].ToString());
7: }
8:}
上記 2行目readonlyにしてるtestが、5行目で書き換えられてしまいます。
0718デフォルトの名無しさん
2009/02/05(木) 00:09:03ぐぐった方がいいと思うよ。
>>708
2ch で説明するのはさすがに難しいと思う
0719デフォルトの名無しさん
2009/02/05(木) 00:09:15のまちがいです
0720デフォルトの名無しさん
2009/02/05(木) 00:09:370721デフォルトの名無しさん
2009/02/05(木) 00:14:312chで説明するのが難しいことが、初心者向けなの?
0722デフォルトの名無しさん
2009/02/05(木) 00:15:02ググっても関数型言語ユーザーの宗教じみた言論に圧倒されるばかりだと思う
0723デフォルトの名無しさん
2009/02/05(木) 00:18:22匿名関数は生成したスコープの変数をそのまま取り込める(環境を渡してるって言うんだっけ?)
副産物的な物だけど、遅延評価的な振る舞いも持ち合わせてる
0724デフォルトの名無しさん
2009/02/05(木) 00:19:56ttp://java-house.jp/ml/archive/j-h-b/001955.html
ttp://www.google.co.jp/search?hl=ja&q=%E3%82%AF%E3%83%AD%E3%83%BC%E3%82%B8%E3%83%A3+interface+site%3Ajava-house.jp
>>718
むしろ近年のクロージャブームはLLの方が先に火をつけた気もするけどね。
JavaScriptの無名関数とかやっぱり初心者泣かせなのかねぇ?
0726デフォルトの名無しさん
2009/02/05(木) 00:31:46public static class Class
{
static int i;
public static int Method() { return i++; }
}
0727デフォルトの名無しさん
2009/02/05(木) 00:37:50でもさ、C#でクラスそのものを引数に渡すって面倒事が多いでしょ。
だからデリゲートでもインタフェースでもインスタンスを生成して引数に渡していたのに。
0728デフォルトの名無しさん
2009/02/05(木) 00:41:240729デフォルトの名無しさん
2009/02/05(木) 00:41:29staticだからclassそのものを渡す必要なんてないよ
どこでも自由に
this.label1.Text = Class.Method().ToString();
でいいんじゃない?
0730デフォルトの名無しさん
2009/02/05(木) 00:43:56private void button1_Click(object sender, EventArgs e)
のobjectはクラスじゃん?
0731デフォルトの名無しさん
2009/02/05(木) 00:48:040732デフォルトの名無しさん
2009/02/05(木) 00:48:560733デフォルトの名無しさん
2009/02/05(木) 00:49:270734デフォルトの名無しさん
2009/02/05(木) 00:50:410735デフォルトの名無しさん
2009/02/05(木) 00:51:26{
int i;
public int Method() { return i++; }
}
これの方がいいだろ
たくさん作れるし
0736デフォルトの名無しさん
2009/02/05(木) 00:54:51この流れって話の本筋なわけ?
0737デフォルトの名無しさん
2009/02/05(木) 00:56:27それだと元のコードの引数を変えれば動作を変えられるという点が失われているじゃないか。
0738デフォルトの名無しさん
2009/02/05(木) 01:34:39その引数を、Staticなメソッドで渡してあげればいいじゃない
public static class test
{
static int i;
public static int Method1() { return i++; }
public static void Method2(int k) { i = i + k; }
}
0739デフォルトの名無しさん
2009/02/05(木) 01:36:47いや、>>708とか足し算が掛け算になったり、辞書引いたりするような変化なんだけど。
0740デフォルトの名無しさん
2009/02/05(木) 01:45:46つまり
>だからデリゲートでもインタフェースでもインスタンスを生成して引数に渡していたのに。
というのは
>708とか足し算が掛け算になったり、辞書引いたりするような変化なんだけど。
と同義ということ?
0741デフォルトの名無しさん
2009/02/05(木) 01:58:26.NET Frameworkに似たようなクラスライブラリはありませんか?
0742デフォルトの名無しさん
2009/02/05(木) 02:41:42http://89.234.50.65/default.aspx/kernel32/CreateToolhelp32Snapshot.html
0743デフォルトの名無しさん
2009/02/05(木) 02:43:110744デフォルトの名無しさん
2009/02/05(木) 03:24:45いや、同義というより1つの具体例と言うべきかな。
>>696みたいに別の場合だってある。
0745デフォルトの名無しさん
2009/02/05(木) 04:17:38objectはキーワードだ
0746デフォルトの名無しさん
2009/02/05(木) 06:18:49どのようにすればfor文でアルファベットを数値のようにAからZを表示する事が出来るのでしょうか?
0747デフォルトの名無しさん
2009/02/05(木) 06:20:05一番分かりやすいのは配列にすればいいと思うよ
0748デフォルトの名無しさん
2009/02/05(木) 06:22:37Console.WriteLine((char)('A'+i));
0749デフォルトの名無しさん
2009/02/05(木) 06:47:260750デフォルトの名無しさん
2009/02/05(木) 09:26:15> >>739
> つまり
>
> >だからデリゲートでもインタフェースでもインスタンスを生成して引数に渡していたのに。
>
> というのは
>
> >708とか足し算が掛け算になったり、辞書引いたりするような変化なんだけど。
>
> と同義ということ?
>
0751デフォルトの名無しさん
2009/02/05(木) 09:31:27インスタンスを作ることでコンテキストの別な関数オブジェクトができる(イベント処理の時にstaticだとマズいだろう)
値を変えるのと振る舞いを変えるのとでは大違いだし…
デリゲート(委譲)はその名の通り、実行するタイミングを相手に委ねてる
渡すことを意図しているのは値(狭義の)ではなく動作
0752デフォルトの名無しさん
2009/02/05(木) 14:00:29Formが描画される際に画面の上から順に
貼り付けてあるコントロールが表示される感じで、
Closeする場合も同様にもっさり感があるのだが、回避する方法はある?
ちなみにForm2がLoadされるとDataGridViewにMDBから
データを読込んで表示させているのだけど。
0753デフォルトの名無しさん
2009/02/05(木) 14:15:240754デフォルトの名無しさん
2009/02/05(木) 14:17:26デバックでも実行ファイルでも描画速度にあまり変化がない感じ・・・
0755デフォルトの名無しさん
2009/02/05(木) 14:20:020756デフォルトの名無しさん
2009/02/05(木) 14:20:35描画を手動でやる
↓ソース開始↓
[コントロール名].SuspendLayout() //コントロールの描画停止
//(この間に処理を書く)
[コントロール名].ResumeLayout() //コントロールの描画再開
↑ソース終了↑
コントロール名をthisにすればForm全体の描画を停止できる
0757デフォルトの名無しさん
2009/02/05(木) 14:20:44フローレイアウトパネルにコントロール配置してFillしたりAnchorしたり
推奨されてないことやってないだろうね?
0758デフォルトの名無しさん
2009/02/05(木) 14:21:410759752
2009/02/05(木) 14:36:21VS2008でつ。
GUIの設計はVB(.Netじゃないヤツ)みたいに
Formにコントロールを貼り付けるだけではダメなのかしら?
Formにあるのは、DataGridViewとButtonとTextBoxとLabelだけ。
DataGridViewコントロールを外して純粋にFormだけでShowすると
幾分早く描画されるって事はDataGridViewの処理が適切でないのかな?
今から756氏と758氏を参考に試してみます。
みんな優しいな。ありがたい!
0760デフォルトの名無しさん
2009/02/05(木) 14:47:04それでも遅いのならSQL文を見直すしかない
0761752
2009/02/05(木) 15:01:31今は、OleDbConnection使ってMDBへ接続しているんだけど、
もっと早い方法はあるんですか?
SQL文に関しては単なるSELECT文なのでどうにもならないと思われ。。
0762デフォルトの名無しさん
2009/02/05(木) 15:02:32こういう症状はあまり経験も聞いたこともないけど
0763デフォルトの名無しさん
2009/02/05(木) 15:08:400765デフォルトの名無しさん
2009/02/05(木) 15:14:45コードはこんな感じ(抜粋)
strSelectSQL(変数)へSELECT文を入れてます。
dba = new OleDbDataAdapter(strSelectSQL, dbc);
OleDbCommandBuilder builder = new OleDbCommandBuilder(dba);
dba.Fill(dtset);
dataGridView1.DataSource = dtset.Tables[0];
0767デフォルトの名無しさん
2009/02/05(木) 15:18:280768752
2009/02/05(木) 15:36:30実行速度はこの位って事で満足したことにまつ。
なんか引っかかるけど・・・
ところでbindingSource下記で使い方間違ってない??
dba = new OleDbDataAdapter(strSelectSQL, dbc);
OleDbCommandBuilder builder = new OleDbCommandBuilder(dba);
dba.Fill(dtset, "TEST");
bindingSource1.DataSource = dtset;
bindingSource1.DataMember = "TEST";
dataGridView1.DataSource = bindingSource1;
教えて君で非常に申し訳なかったです。
0769760
2009/02/05(木) 15:36:38すべて妄想ですw
↓ソース開始↓
OleDbConnection odc = new System.Data.OleDb.OleDbConnection();
OleDbDataAdapter odda;
DataSet ds = new DataSet("GetData"); //データセットの名称を指定
//接続情報を指定
odc.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " + @"\DUMMYDATA.mdb";
//実行SQL文と接続先情報を設定してアダプタを作成
odda = new OleDbDataAdapter("SELECT * FROM DUMMYDATA", odc);
//データを取得しテーブルを作成
//テーブル名称を設定(任意)
odda.Fill(ds, "tm_DUMMYDATA");
//データソースに設定
dataGridView1.DataSource = ds.Tables["m_DUMMYDATA"]; //インデックス値でもいい
↑ソース終了↑
いろいろ勘違いしてたらごめんね
反省はしないけど
0771636の者です。
2009/02/05(木) 16:40:08クラスが3つあります。クラスBは3つコンストラクタがあります。
ClassA
{
ClassB b = new ClassB(〜);
}
ClassB
{
public ClassB(N n){}
public ClassB(N n, M n){}
public ClassB(N n, M m, O o){}
}
ClassC
{
ClassB b = new ClassB( );
b.〜
}
クラスAからクラスBを呼び出すときは、if文で分けてコンストラクタを1つだけ呼び出すことが
できたのですが、クラスCからクラスBを呼び出すときはどのように呼び出したら良いでしょうか?
0772デフォルトの名無しさん
2009/02/05(木) 16:42:45ClassAとClassCは何が違うんだ
0773636の者です。
2009/02/05(木) 16:47:41クラスAのwindowフォームからクラスBのwindowフォームを呼び出すんですが、
そのクラスBのフォームの選択欄を別のクラスCで使いたいのです。
0774デフォルトの名無しさん
2009/02/05(木) 16:49:37>>772の答えになってないだろ
0775デフォルトの名無しさん
2009/02/05(木) 16:51:35class A()
{
public B b;
C c;
public A(){b=〜;c=C(this)}
}
public class C()
{ public C(A a){} }
とかじゃだめ?
0776デフォルトの名無しさん
2009/02/05(木) 16:52:32逆に聞く。
ClaaAからClassBを呼んだときと同じように、ClassCからClassBを呼ぶとどうなったんだ?
0778デフォルトの名無しさん
2009/02/05(木) 17:02:160779デフォルトの名無しさん
2009/02/05(木) 17:03:42確認だが、同一form(B)の情報をAとCで共有したいってことでいいの?
だったら両方でnewしてるから
今のコードだったら、AとCがそれぞれ別のform(B1,B2みたいな)を持ってることになる。
違うなら、そもそもやりたいことが分からん。
0780636の者です。
2009/02/05(木) 17:13:57クラスAで入力したテキストの個数によってクラスBのコンストラクタをShow()を使って
1つ呼び出すだけですが、クラスBではリストボックスなどをSelectedItemで選んで、
その選んだ項をクラスCで使いたいのですが、クラスCでクラスBの変数を使いたいときに、
クラスBのインスタンス化を行うときに、どのコンストラクタを選択すればよいのかが分かりません。
0781デフォルトの名無しさん
2009/02/05(木) 17:25:000782デフォルトの名無しさん
2009/02/05(木) 17:33:580783デフォルトの名無しさん
2009/02/05(木) 17:47:52(1)
a → b1
c → b2
(2)
a → b ← c
どっちなんだ
ちなみに(1)はフォームが2つできる。そしてb1とb2は別物だからリストボックスなんかの情報は共有できない。
俺には(2)を実現したいのに(1)のコードを書いちゃってるように見えるんだが・・・
0784デフォルトの名無しさん
2009/02/05(木) 18:16:590785デフォルトの名無しさん
2009/02/05(木) 18:32:58○固定観念
0786デフォルトの名無しさん
2009/02/05(木) 18:46:17>クラスBのインスタンス化を行うときに、どのコンストラクタを選択すればよいのかが分かりません
クラスBは自分で書いたんでしょう? だったら自分で知ってるはず。
そうじゃなくてたぶんあなたの質問は、
「データをどうやってクラス間で渡したらいいですか?」というやつではないのかい?
なんか書いても書いても返答がないので手応えのない質問者だ
0787デフォルトの名無しさん
2009/02/05(木) 18:54:380788デフォルトの名無しさん
2009/02/05(木) 18:54:43「時間計るときに、System.Environment.TickCountを良く使うけど、
24.9日たったら一周しちゃうから、なんとかならないかなー」
なんて書き込みがよくありますが、
なんでSystem.Diagnotics.Stopwatchを使わないんでしょうか?
数十日間もパフォーマンスカウンタ取得し続けたら、CPUとかハード的に
負担(たとえばやりすぎたら故障しやすいとか)があるんでしょうか?
もしそうだとしたら、なんとかSystem.Environment.TickCountを64bit化する
コーディング方法はあるんでしょうか?
0789デフォルトの名無しさん
2009/02/05(木) 18:59:27一周したかどうか、チェックすればいいんじゃないでしょうか。
0790デフォルトの名無しさん
2009/02/05(木) 19:01:240791デフォルトの名無しさん
2009/02/05(木) 19:05:27なんかCPUのクロックからどうのこうのって言われるとCPUに悪そうなきがして。
0792デフォルトの名無しさん
2009/02/05(木) 19:05:450793デフォルトの名無しさん
2009/02/05(木) 19:09:02Vista/Server2008なら、API関数のGetTickCount64()が使える。
まあ、System.Environment.TickCountで間に合う程度の精度での時間計測なら、
DateTime.Now.Ticks / TimeSpan.TicksPerMillisecondでも問題ないだろうけど。
0794デフォルトの名無しさん
2009/02/05(木) 19:10:390795デフォルトの名無しさん
2009/02/05(木) 19:23:05Stopwatchの中身QueryPerformanceCounterだよ。
0796デフォルトの名無しさん
2009/02/05(木) 19:58:46はいこれ使ってくれ つSystem.Diagnotics.Stopwatch
.NET Framework1.0「おkおk」
.NET Framework2.0「そんな古臭いコード保障できねーからいらねーよ」
0797デフォルトの名無しさん
2009/02/05(木) 20:05:510798デフォルトの名無しさん
2009/02/05(木) 20:35:48System.Diagnotics.Stopwatchって2.0からじゃなかったっけ
0799デフォルトの名無しさん
2009/02/05(木) 20:42:39遅くなりましたが、ありがとうございました。
0800デフォルトの名無しさん
2009/02/05(木) 20:47:57ごめん 間違えた
訂正
はいこれ使ってくれ つSystem.Diagnotics.Stopwatch
.NET Framework2.0「おkおk」
.NET Compact2.0「サポートしてませ〜ん」
申し訳」ない
0801デフォルトの名無しさん
2009/02/05(木) 21:31:23{
}
DataGridViewCellEventArgs(e.RowIndex,e.ColumnIndex)で
どこがクリックされたかは取得できるのはわかるのですが
クリックした場所が選択中(SelectedRows)かどうかを調べる方法はないでしょうか?
選択中の行の上でクリックしたときだけカスタムストリップを表示したいのですが
と書いてるうちに自己解決しました。ありがとうございます。
0802デフォルトの名無しさん
2009/02/05(木) 21:33:570803デフォルトの名無しさん
2009/02/05(木) 21:36:480804デフォルトの名無しさん
2009/02/05(木) 21:38:17タスクマネージャの情報ほぼ全部そっから取ってんだぞ
0805デフォルトの名無しさん
2009/02/05(木) 21:55:050806デフォルトの名無しさん
2009/02/05(木) 21:57:20システムの起動(CPUの電源ON)からのカウント数だから、プロセスの起動時間は関係ない
0807デフォルトの名無しさん
2009/02/05(木) 21:59:57BM法
0808デフォルトの名無しさん
2009/02/05(木) 22:01:24byte境界を越えてるのも探したいの?
ビットパターンを頭から見てくしかないんじゃね?
0809デフォルトの名無しさん
2009/02/05(木) 22:02:42適切なスレがありましたら指摘して下さい。
VisualStudio2005 C# で Webアプリケーション 及び Webサービス を作ろうとしていたのですが、
パケットをキャプチャする為にはIIS上で動かさなければいけないのでしょうか?
「とりあえず動かすのが先だ」と考えて、VSを複数立ち上げて.NET開発サーバー間でやりとりしていたのですが、
いざパケットを見ようと思ったら見方が解らなく、ネットも自分の解る範囲で検索してみたのですがそれらしい情報を
見つける事が出来ませんでした・・・
localhost内でやりとりする(?)パケットを見る事は出来ないのでしょうか・・・?
0810デフォルトの名無しさん
2009/02/05(木) 22:04:03byte[100]ならBM法でもたいしたコストかからないよ
0811デフォルトの名無しさん
2009/02/05(木) 22:05:53WinPCap
0812805
2009/02/05(木) 22:11:43便利なクラスが用意されていればと思ったのですが…
0813デフォルトの名無しさん
2009/02/05(木) 22:13:34ローカルじゃ無理じゃね? 無料の VirtualPC でも使いなよ。
0814デフォルトの名無しさん
2009/02/05(木) 22:18:46Array.Find()
0815デフォルトの名無しさん
2009/02/05(木) 22:19:02{
StringBuilder sbSrc = new StringBuilder(src.Length);
for (int i = 0; i < src.Length; i++)
{
sbSrc.Append(src[i].ToString(@"X2"));
}
StringBuilder sbTarget = new StringBuilder(target.Length);
for (int i = 0; i < target.Length; i++)
{
sbTarget.Append(target[i].ToString(@"X2"));
}
return sbSrc.ToString().IndexOf(sbTarget.ToString());
}
(∪^ω^)わんわんお!
0816デフォルトの名無しさん
2009/02/05(木) 22:24:33勘違い
0817デフォルトの名無しさん
2009/02/05(木) 22:26:12http://elend.sakura.ne.jp/?p=117
0818デフォルトの名無しさん
2009/02/05(木) 22:26:55Array.Find()だと任意の並びは検索できないんじゃね
原文01122334
↓
検索対象112233
だとヒットしない
0819デフォルトの名無しさん
2009/02/05(木) 22:31:58{
return System.Text.Encoding.ASCII.GetString(src).IndexOf(System.Text.Encoding.ASCII.GetString(target));
}
0820815
2009/02/05(木) 22:33:29ASCIIにするの思いつかなかった
0821デフォルトの名無しさん
2009/02/05(木) 22:36:00いや、君の見て思いついた。
0822デフォルトの名無しさん
2009/02/05(木) 22:36:070823デフォルトの名無しさん
2009/02/05(木) 22:37:470824デフォルトの名無しさん
2009/02/05(木) 22:45:450825デフォルトの名無しさん
2009/02/05(木) 22:47:210826デフォルトの名無しさん
2009/02/05(木) 22:49:510827デフォルトの名無しさん
2009/02/05(木) 22:50:390828デフォルトの名無しさん
2009/02/05(木) 22:51:47そうか
UTF7でどうだ?
0829デフォルトの名無しさん
2009/02/05(木) 22:52:30>>824へのレス
0830デフォルトの名無しさん
2009/02/05(木) 22:52:43まったくだ・・・
0831809
2009/02/05(木) 22:55:46試してみたいと思います。
>>813
どうも自分も調べていてそうなのかもと思い始めた所でした・・・
OSが内部で処理しているみたいですね。
今日中に解決できなければその方法で行こうと思います。
>>817
ありがとうございます。
そのサイトは自分も行ったのですが、
ARPの追加が出来なくて諦めました(汗
(エントリを追加できませんでした:5って奴です)
もう少し知識があれば色々突っ込んでやりたい所なんですが、
勝手にARPをイジっても大丈夫なのかよくわかってないので、
その方法はやめておきます・・・。
みなさんありがとうございます。
とりあえず今日中は頑張ってみようと思います。
0832デフォルトの名無しさん
2009/02/05(木) 22:58:060834デフォルトの名無しさん
2009/02/05(木) 23:11:10{
IEnuemrator<T> e;
public Helper(IEnumerable<T> e)
{
this.e = e.GetEnumerator();
e.MoveNext();
}
Result{ Accept, Reject, 保留 }
public Result Add(T item)
{
if(e.Current.Equals(item))
{
if(e.MoveNext() == false)
return Result.Accept;
return Result.保留;
}
return Result.Reject;
}
}
こんなんを自作して、一つめが合っていたらこれを作って入れるみたいな感じじゃない?
0835デフォルトの名無しさん
2009/02/05(木) 23:15:340836デフォルトの名無しさん
2009/02/05(木) 23:37:160837817
2009/02/05(木) 23:40:31該当の記事には要点しかなので、そのまま説明内容を打ち込んでも
ダメなのは理解してるのかな?
事前に
http://blogs.yahoo.co.jp/akio_myau/34370200.html
とかで説明してるようなMicrosoft Loopback Adapterを追加してやらなければ
ならない
これはローカル通信専用の仮想のネットワークカードのようなもの
するとネットワークが1つ追加されるので、これにIPなどを設定することで、
初めて817の記事内容にあるarpコマンドを受け付けるようになる
デフォルトのローカル通信はキャプチャできないけど、追加した仮想ネットワークは
ローカル通信には違いないけど仕組みが若干違うのでキャプチャできるってことだと思う
なお、arpテーブルはアドレス解決のキャッシュみたいなものなので自分で
設定する分には特に心配はない
0838デフォルトの名無しさん
2009/02/06(金) 00:02:27>>805へのレスだよ
0839デフォルトの名無しさん
2009/02/06(金) 00:03:350840デフォルトの名無しさん
2009/02/06(金) 00:07:110841デフォルトの名無しさん
2009/02/06(金) 00:08:230842デフォルトの名無しさん
2009/02/06(金) 00:17:39| ノ\ ヽ |
/ ●゛ ● | |
| ∪ ( _●_) ミ j
彡、 |∪| | J
/ ∩ノ ⊃ ヽ
( \ / _ノ | |
.\ “ /__| |
\ /___ /
0843デフォルトの名無しさん
2009/02/06(金) 00:19:150844デフォルトの名無しさん
2009/02/06(金) 00:20:410845デフォルトの名無しさん
2009/02/06(金) 00:21:58IEnumerator<T> が何を実装しているかもう少し見たほうがいい
foreach 使わないと無駄に長くなる理由でもあるんだけど
0846デフォルトの名無しさん
2009/02/06(金) 00:29:48嫌だよめんどくさい
0847デフォルトの名無しさん
2009/02/06(金) 00:32:39|
∩___∩ |
| ノ _, ,_ ヽ (( | プラプラ
/ ● ● | (=)
| ( _●_) ミ _ (⌒) J ))
彡、 |∪| ノ
⊂⌒ヽ / ヽノ ヽ /⌒つ
\ ヽ / ヽ /
\_,,ノ |、_ノ
0848デフォルトの名無しさん
2009/02/06(金) 00:34:56Windows Forms1.1(VS.NET2003)のLabelのTextに
"‐"(シフトJISの815D)を設定すると表示されなくて困ってます。
仕様なんでしょうか?
WinForms2.0やVB6.0(Label.Caption)では表示されます。
Buttonとか、"&"のアクセスキー処理ができるコントロールでは
みんなこの現象が出るようです。.NET1.1はSP1入れています。
"‐"や"815D"で検索しても情報がなくて。。。
0849809
2009/02/06(金) 00:36:08ipconfigにloopbackというのが無い事に気づき、インストールしてarpまではたどり着けました。
ただ、routeするとすでに登録されているとの事で、route PRINTで確認したのですが登録されてました。
これでキャプチャできるのかな?と思ったのですが、やはり見れませんでした・・・
これは見ながらやった設定が間違っていたのか、もしくは自分がNetworkMonitorの使い方を正しく把握していからかのどちらかではないかと思います。
ためしにブラウザにloopbackと入れるとIISのページが表示されたので、loopback == localhost???とか、正常にloopbackされているという事?と、色々頭に?が浮かんでます笑
後一息の様な気がするのですが、明日朝もう一度試してみてダメならダメでまた時間のある時に試してみようと思います。
私の様な初心者に細かに解説していただき、本当にありがとうございました。
0850デフォルトの名無しさん
2009/02/06(金) 00:46:46これだな。Shift_JISの0x815D == U+2010
Windows Server 2008、Windows Vista、Windows Server 2003、および Windows XP で
GDI+ API 関数を使用するアプリケーションを使用すると、Unicode ハイフン文字 (U+2010) が描画されない
http://support.microsoft.com/kb/956807/ja
.NET 1.1はコントロールの描画にGDI+を使う。
.NET 2.0で標準だとそこにはGDI+を使わなくなったので、.NET 2.0だと問題が起こらなかったというわけ。
0851デフォルトの名無しさん
2009/02/06(金) 00:48:28http://www.atmarkit.co.jp/fdotnet/vblab/appqa_04/appqa_04_01.html
http://support.microsoft.com/kb/956807/ja
0852デフォルトの名無しさん
2009/02/06(金) 13:02:06WEB参照の追加でアマゾンにアクセスしているのですが
ItemSearchRequest を使用してキーワードにISBNコードを入力するときちんと対象の書籍情報を得ることが出来ます。
ところが ItemLookupRequest を使用して ItemLookupRequestIdType にどんな指定を行っても ASIN を入力しないと
null になってしまいます。
ItemLookupRequest LR = new ItemLookupRequest();
LR.ItemId = new string[] { "4150204845" }; //ASIN
これだと取得できますが
LR.ItemId = new string[] { "9784150204846" };//ISBN
これではnullになります
LR.IdType = ItemLookupRequestIdType.ISBN;
指定はISBNにしているのですが関係は内容です
LR.Condition = Condition.All;
LR.ConditionSpecified = true;
LR.MerchantId = "All";
LR.ResponseGroup = new string[] { "Large", "OfferFull" };
どこが間違っているのかをご教授頂ければ幸いです
0853デフォルトの名無しさん
2009/02/06(金) 13:06:220854デフォルトの名無しさん
2009/02/06(金) 16:50:10他のクラスのディスプレイをクリックするというイベントを起こすことは可能ですか?
0855デフォルトの名無しさん
2009/02/06(金) 17:02:350856デフォルトの名無しさん
2009/02/06(金) 17:39:310857デフォルトの名無しさん
2009/02/06(金) 17:43:012.0でもUseCompatibleTextRendering プロパティをいじったら
再現しました。納得しました。ありがとうございます。
0858デフォルトの名無しさん
2009/02/06(金) 17:43:58可能です
0859デフォルトの名無しさん
2009/02/06(金) 17:53:33いまいちどっちなのか分からんな。イベントって呼び出すものじゃないから。
consumerなのかproviderなのか? まぁどっちでもいいけど。どうせ分からんから。
・他のクラス
ディスプレイ(笑)があるってことはコントロールなんだろうな。違うかもしれんが。
このクラスのコードには触れるの?
触れるならOnClickを呼ぶメソッドを公開すればいいんじゃない?
触れないななら難しいね。ButtonとかだったらPerformClickすればいいけど。
WM_LBUTTONDOWN / WM_LBUTTONUPをウィンドウにポストするとか
0860デフォルトの名無しさん
2009/02/06(金) 19:18:35タブにする方法を学べるサイトを教えてください。
0861デフォルトの名無しさん
2009/02/06(金) 20:17:490862デフォルトの名無しさん
2009/02/06(金) 20:30:470863デフォルトの名無しさん
2009/02/06(金) 20:33:03form.IsHandleCreated && !form.Disposing && !form.IsDisposed
とかかね〜? IsWindowを調べたくなるが
0864デフォルトの名無しさん
2009/02/06(金) 21:01:350865デフォルトの名無しさん
2009/02/06(金) 21:05:050866デフォルトの名無しさん
2009/02/06(金) 21:12:38みたいなスレ無いかな
0867デフォルトの名無しさん
2009/02/06(金) 21:15:380868デフォルトの名無しさん
2009/02/06(金) 21:27:49.exe?
0869デフォルトの名無しさん
2009/02/06(金) 21:32:280870デフォルトの名無しさん
2009/02/06(金) 22:27:07どなたかご存知ありませんか?
英語のサイトでも全然構わないんで
0871デフォルトの名無しさん
2009/02/06(金) 22:32:230872デフォルトの名無しさん
2009/02/06(金) 22:49:590873デフォルトの名無しさん
2009/02/06(金) 22:54:36思い浮かばないんだけど、他に便利な使い方ってあんのかな
極端に言えば、イベント発生元に実行させるオブジェクトを渡しておいて
そこで実行させればいいだけのような気がするんだが。
0874デフォルトの名無しさん
2009/02/06(金) 22:57:03そんな感想にはならない
0875デフォルトの名無しさん
2009/02/06(金) 23:05:12ENTITYは別物で関係なくね?
0876デフォルトの名無しさん
2009/02/06(金) 23:10:500877デフォルトの名無しさん
2009/02/06(金) 23:18:010878デフォルトの名無しさん
2009/02/06(金) 23:29:470879デフォルトの名無しさん
2009/02/06(金) 23:31:49>そこで実行させればいいだけ
そもそもこれが面倒だからデリゲートが導入された
javaの惨状を見ればわかる
0880デフォルトの名無しさん
2009/02/06(金) 23:32:130881デフォルトの名無しさん
2009/02/06(金) 23:32:25デリゲートもオブジェクトだよ。
それだけ。
0882デフォルトの名無しさん
2009/02/06(金) 23:32:43UDP受信クラスと受信データクラスを作りました。
UDP受信クラスでバイト配列を受信し、受信データクラスにデータをセットし、キューに登録する仕様です。
ソースはこちらです。
ttp://www3.uploda.org/uporg1995578.zip.html
一応ちゃんと動きます。
エロい人添削してください。
0883デフォルトの名無しさん
2009/02/06(金) 23:35:480884デフォルトの名無しさん
2009/02/06(金) 23:37:04フレームワーク内ではたくさん使われてるから無意味ということはないだろう
俺はGUIにイベントを登録する時ぐらいしか使わなかったが
0885デフォルトの名無しさん
2009/02/06(金) 23:37:28君にこれを上げよう
java.beans.EventHandler
0886デフォルトの名無しさん
2009/02/06(金) 23:39:27参照オブジェクトがないから
もうデリゲートとは全然違う
0887882
2009/02/06(金) 23:41:220888デフォルトの名無しさん
2009/02/06(金) 23:42:33参照オブジェクトがあるから
もうCの関数ポインタとは全然違う
0889デフォルトの名無しさん
2009/02/06(金) 23:52:24ソースファイルの名前に日本語を使わないこと
0890デフォルトの名無しさん
2009/02/06(金) 23:56:130891882
2009/02/06(金) 23:58:24ソースを見てもらうのに視覚的にわかりやすいかなと思いそうしました。
自分的に気になるというか心配なのは
受信データ.GetBytes()内のreturnValueが開放されるタイミングです。
0892デフォルトの名無しさん
2009/02/07(土) 00:18:07おい、catch{}して例外握りつぶすのやめろ
自分で処理しきれないのはrethrowしとけ
0893デフォルトの名無しさん
2009/02/07(土) 00:18:53そんなもんガーベジコレクタが適当になんとかしてくれるだろう
0895デフォルトの名無しさん
2009/02/07(土) 00:37:090896デフォルトの名無しさん
2009/02/07(土) 00:42:05いろいろ雑すぎる
致命的な部分だけでも、
スレッドの無限ループの明示的な終了条件がないとか
Disposeの中でjoinしてるとか
通信パケットの受信タイミングとるのにイベント使ってないとか
人に評価してもらうよりも、まず、本やインターネットで基本を
おさえることを考えたほうがよい
まず、以下のあたりから
- スレッドの生成の仕方、終了判定の基本パターン
- 通信における、受信時の基本パターン(イベントを使うやり方)
- ついでに、C#のコーディング規約をどれでもよいのでインターネットでさがして
それに従って書いてみるのとよい
ついでに
>短時間に数千回処理してもメモリ圧迫しないか検証してみます。
ReadLineのタイミングで受信データ1つ読み出すんじゃ、数千の処理なんで
できないのでは?
0897デフォルトの名無しさん
2009/02/07(土) 00:46:34>>881
イベント発生で実行させたいメソッドをIInterfaceで規定して、
イベント発生元で、イベント発生したら、そのメソッドを実行させればいいじゃない
0898882
2009/02/07(土) 00:53:38でなおします。
0899デフォルトの名無しさん
2009/02/07(土) 00:55:49だからそれが面倒なんだよw
インターフェイスだと関連する複数のメソッドをまとめて宣言したくなるけど
そうやると後からメンバを追加できなくなる
だから結局メソッド一つのインターフェイスになって,デリゲートと同じ
0900デフォルトの名無しさん
2009/02/07(土) 01:05:03それにインスタンスそのものを渡すわけだから、もっと応用が利くじゃない
0901デフォルトの名無しさん
2009/02/07(土) 01:08:22記述が合理的になるからインスタンスで出来ることよりも幅広い細かいことを
やらせられる
0902デフォルトの名無しさん
2009/02/07(土) 01:10:19無名内部クラスみたいなキチガイじみたものを産み出したしな
0903デフォルトの名無しさん
2009/02/07(土) 01:13:55javaでもイテレータやEnumなどは言語に取り込でるだろ
0904デフォルトの名無しさん
2009/02/07(土) 01:25:00暗黙的な型指定や無名関数は、使用頻度の高い定着したパターンじゃないじゃない
0905デフォルトの名無しさん
2009/02/07(土) 01:30:50Javaも無名関数を取り込もうとしてるじゃない
あって当然のものをC#がまず取り入れたって話でしょ
0906デフォルトの名無しさん
2009/02/07(土) 01:34:21インスタンスを直接渡す事もできるのがC#、それしかできないのがJava
0907デフォルトの名無しさん
2009/02/07(土) 01:46:14単に機能の選択肢が多いほうが良いというわけではないじゃない
ex 多重継承することもできるのがc++ 多重継承が許されないのが・・C# Java
0908デフォルトの名無しさん
2009/02/07(土) 01:54:22おしまい
0909デフォルトの名無しさん
2009/02/07(土) 01:56:48で無名関数はこれからそうなる
いずれ暗黙の型指定もJavaに入れざるを得なくなるんじゃないか
そのころにはScalaがJava VMのメイン言語の座を乗っ取ってるかもな
0910デフォルトの名無しさん
2009/02/07(土) 02:13:48どうしたらいいでしょう?
プロセスみたいに "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"
ではできませんでした。
0911デフォルトの名無しさん
2009/02/07(土) 02:56:470912デフォルトの名無しさん
2009/02/07(土) 02:58:01OO言語でもDとか普通に使ってる。
0913デフォルトの名無しさん
2009/02/07(土) 03:14:06かつコンパイラと人間の間で1:1の意味にとれない書き方が認められて煩雑になってるじゃない
存在理由が他言語にあるからなんてのは単なる思考の放棄じゃない
そしてC#は関数型言語じゃないじゃない
0914デフォルトの名無しさん
2009/02/07(土) 03:28:48Javaの無名内部クラスがいい例だ
デリゲートは人間に分かりやすくコンパイラにも分かりやすい
無名内部クラスはその逆だ
0915デフォルトの名無しさん
2009/02/07(土) 03:33:02アセンブラ以外は言語として例外なく煩雑と言ってるのと同じじゃない
>存在理由が他言語にあるからなんてのは単なる思考の放棄じゃない
>そしてC#は関数型言語じゃないじゃない
C#は関数型言語じゃないから他言語からの概念の導入が
適切じゃないというのは単なる思考の放棄じゃない
0916デフォルトの名無しさん
2009/02/07(土) 03:38:14関数型言語なら必須だとするのはおかしいといってるだけで、適切じゃないなんて述べて無いじゃない
0917デフォルトの名無しさん
2009/02/07(土) 03:39:19なんでアホはあるもの全部使わなきゃ気がすまねーの?
0918デフォルトの名無しさん
2009/02/07(土) 03:42:43変数の解釈のあいまいさってどういう意味よ
0919デフォルトの名無しさん
2009/02/07(土) 03:45:230920デフォルトの名無しさん
2009/02/07(土) 03:46:060921デフォルトの名無しさん
2009/02/07(土) 04:01:35デリゲート仕様の是非について述べてるのに、言語全般に解釈して論じるのは論理のすり替えじゃない
0922デフォルトの名無しさん
2009/02/07(土) 04:06:480923デフォルトの名無しさん
2009/02/07(土) 04:11:14あれ? 使い分けるなら一言語に過ぎないC++だけを拡張して使えばいいとか
大統一宣言してるの誰でしたっけwww
0924デフォルトの名無しさん
2009/02/07(土) 04:30:54導入されている面もあるということに対するアンチテーゼじゃない
0925デフォルトの名無しさん
2009/02/07(土) 05:55:300926デフォルトの名無しさん
2009/02/07(土) 07:24:540927デフォルトの名無しさん
2009/02/07(土) 08:12:57スレがすぐに埋まってしまう
0928デフォルトの名無しさん
2009/02/07(土) 12:48:510929デフォルトの名無しさん
2009/02/07(土) 12:54:040930デフォルトの名無しさん
2009/02/07(土) 13:25:27実際に存在するディレクトリじゃないとカレントにできんです
0931デフォルトの名無しさん
2009/02/07(土) 13:28:250932デフォルトの名無しさん
2009/02/07(土) 14:21:55なんでアホはあるもの全部使わなきゃ気がすまねーの?
0933デフォルトの名無しさん
2009/02/07(土) 14:26:51多分、向こうはほんとに複雑だなんて思ってないだろ。
単に、自分の無知をとがめられたのに切れて難癖つけてるだけ。
0934デフォルトの名無しさん
2009/02/07(土) 14:37:57>>932はなんか知らないがマルチ。
くだすれPython(超初心者用) その3
http://pc11.2ch.net/test/read.cgi/tech/1232055225/332
Rubyについて Part 34
http://pc11.2ch.net/test/read.cgi/tech/1233686068/91
0935デフォルトの名無しさん
2009/02/07(土) 14:58:43表示させた後にフォームの四隅の矢印で大きさを変えたら、
画像が途中で切れたりするのですが、どのような対処法がありますか?
0936デフォルトの名無しさん
2009/02/07(土) 14:59:540937デフォルトの名無しさん
2009/02/07(土) 15:12:52http://pc11.2ch.net/test/read.cgi/tech/1232455653/917
0938デフォルトの名無しさん
2009/02/07(土) 15:14:080939デフォルトの名無しさん
2009/02/07(土) 15:21:38t=0になってたんですけど
これはどうしてでしょう
(デバックでちゃんとその値が入っていることは確認しました)
更に試しに↑の式でそのまま入れてみましたがやはり0でした
0940デフォルトの名無しさん
2009/02/07(土) 15:21:55画像の表示はどうしてますか。
ImageプロパティやPaintイベントを正しく使ってればおきない現象なのだけど。
もしCreateGraphicsを使ってるなら何か勘違いがあると思う。
0941デフォルトの名無しさん
2009/02/07(土) 15:25:00t = 1.0 / -300
0942デフォルトの名無しさん
2009/02/07(土) 15:27:48あ、そっか…
1/300だと1/300がintで計算されちゃうんですね
分かりました有り難うございます。
(実際角度が欲しかったのでAtan2にしてしまいました…)
0943デフォルトの名無しさん
2009/02/07(土) 15:28:13int / int = int
0944デフォルトの名無しさん
2009/02/07(土) 15:36:02なんか原因は分かった気がします。ただ解決法が・・・。
フォームのサイズ変更に対して、pictureBoxのサイズが連動してくれないみたいです。
一応Ancher?みたいなのはいじったんですが。
0945デフォルトの名無しさん
2009/02/07(土) 15:37:030946デフォルトの名無しさん
2009/02/07(土) 15:46:02Dock=Fillで連動するのはpictureboxの枠だけで中の画像の大きさはそのまま。
表示しているのがBitmapやjpegなどのイメージなら、
BackgroundImageに設定してBackGroundImageLayout=Zoomにすればいい。
0947デフォルトの名無しさん
2009/02/07(土) 15:51:18ありがとうございます。
if文の判定でtrueかfalseで場合分けすると思いますが、
ある変数が未定義かどうかで場合分けすることは可能でしょうか?
0948デフォルトの名無しさん
2009/02/07(土) 15:58:55前者なら,今のC#では存在しない変数には絶対にアクセスできないので考え方が間違ってる
後者なら,参照型の場合はnullと比較,値型の場合は用意されたEmpty用の値を使うかnullable使う
0949デフォルトの名無しさん
2009/02/07(土) 17:30:41ファイルシステムによって大文字小文字が区別されたりされなかったりしますよね?
0950デフォルトの名無しさん
2009/02/07(土) 18:08:48あなたが自身が大文字小文字の区別をしたいのかしたくないのか。
0951デフォルトの名無しさん
2009/02/07(土) 18:10:290952デフォルトの名無しさん
2009/02/07(土) 18:11:400953デフォルトの名無しさん
2009/02/07(土) 18:44:500954デフォルトの名無しさん
2009/02/07(土) 18:55:56ディレクトリのパス渡すと適切なIComparerを返してくれるものがあればいいんですけど
ないですかね?
0955デフォルトの名無しさん
2009/02/07(土) 19:00:57表示されるような、画面最前列に表示されるけど、ユーザーの入力を
奪わないようにするような窓を表示させるにはどうすればいいでしょうか?
0956デフォルトの名無しさん
2009/02/07(土) 19:15:260957デフォルトの名無しさん
2009/02/07(土) 19:34:28スレがすぐに埋まってしまう
0958デフォルトの名無しさん
2009/02/07(土) 19:42:230959デフォルトの名無しさん
2009/02/07(土) 19:43:56自分は何もしないで言うだけ番長かよ
0960デフォルトの名無しさん
2009/02/07(土) 19:56:07ありがとうございました
0961デフォルトの名無しさん
2009/02/07(土) 21:06:200962デフォルトの名無しさん
2009/02/07(土) 21:15:010963デフォルトの名無しさん
2009/02/07(土) 21:23:420964デフォルトの名無しさん
2009/02/07(土) 21:26:07C#じゃなくてもいいわ
0965デフォルトの名無しさん
2009/02/07(土) 21:30:110966デフォルトの名無しさん
2009/02/07(土) 21:32:11ありがとうございました
何とかしてマイ コンピュータにあるファイル(?)を取得できませんか?
0967デフォルトの名無しさん
2009/02/07(土) 21:32:180968デフォルトの名無しさん
2009/02/07(土) 21:33:220969デフォルトの名無しさん
2009/02/07(土) 21:34:07string moji = "string";
という代入ができますが、自作のクラスで、これと同じようなことができますか?
例えば
MyClass myClass = new MyClass();
myClass = "string";
みたいにmyClassのメンバに"string"を渡したいのですが
0970デフォルトの名無しさん
2009/02/07(土) 21:34:52すこしでも反応すると、そこから情報読み取られるよ
(なにがすごいか書けるもんなら書いてみろ!両方わかってる俺が正論でつぶしてやる)
CLIがダメだってすごい伝わってくるから気をつけた方がいいよ
0971デフォルトの名無しさん
2009/02/07(土) 21:38:37演算子オーバーロード
0972デフォルトの名無しさん
2009/02/07(土) 21:38:530973デフォルトの名無しさん
2009/02/07(土) 21:40:310974デフォルトの名無しさん
2009/02/07(土) 21:42:47MyClassがStringの派生クラスなら出来るんじゃない?
若しくはStringからMyClassへキャストできるようにするとか。
下手にex/implicitするよりもコンストラクタをもう一つ作って
myClass = new MyClass ("string");
した方が良いと思うけどね。
0975デフォルトの名無しさん
2009/02/07(土) 21:42:54Disposeが自動的に実行されるのは確かに便利なだ
0976デフォルトの名無しさん
2009/02/07(土) 21:43:02IShellFolder
0977デフォルトの名無しさん
2009/02/07(土) 21:47:490978デフォルトの名無しさん
2009/02/07(土) 21:50:040979デフォルトの名無しさん
2009/02/07(土) 21:52:28学者がおれがおれが、っていいたいだけだろ
0980デフォルトの名無しさん
2009/02/07(土) 21:52:35frameworkの開発にも関わってたのかな まんまVCLだからな
0981デフォルトの名無しさん
2009/02/07(土) 21:57:520982デフォルトの名無しさん
2009/02/07(土) 21:59:41戻り値の型がbyte[]のWebServiceのメソッドを
SOAPで直に実行してるんですけど、
戻って来たxmlのxsdデータ型がbase64Binaryなんですね。
innertextの文字列をbyte[]に変換したいんですけど
Encodingクラスでは無理っぽいし
System.Runtime.Remoting.Metadata.W3cXsd2001.SoapBase64Binary
を見てみましたがValueプロパティ自体がbyte[]なんですよ。
どうすればいいでしょうか?
0983デフォルトの名無しさん
2009/02/07(土) 22:05:280984デフォルトの名無しさん
2009/02/07(土) 22:06:06http://msdn.microsoft.com/ja-jp/library/ms182142.aspx
公開の範囲が微妙なんだけどね
自分で開発してる範囲内でなら渡しても問題無いと思う
ArrayListなら別に問題ないっぽいし
0985982
2009/02/07(土) 22:11:15使えました!ありが�d!
0986デフォルトの名無しさん
2009/02/07(土) 22:15:250987デフォルトの名無しさん
2009/02/07(土) 23:04:49ありがとう。演算子のオーバーロードで
MyClass myClass = "string";
は実現できましたが、string moji = MyClassは不可能ですか?
>>974
stringやintを継承するとsealなので無理といわれます(´・ω・`)ショボーン
0988デフォルトの名無しさん
2009/02/07(土) 23:06:50MyClass:String
でいけなかったっけ?
0989デフォルトの名無しさん
2009/02/07(土) 23:08:46VisualStudio 2005です (´;ω;`)ブワッ
0990デフォルトの名無しさん
2009/02/07(土) 23:10:280991デフォルトの名無しさん
2009/02/07(土) 23:13:06{
public static implicit operator string( MyClass myclass )
{
return myclass.ToString(); //など
}
}
0992デフォルトの名無しさん
2009/02/07(土) 23:21:30んーintでやってみたけど、無理ですね(´Д⊂グスン
MyClass myClass = 1;
int myInt = myClass;
型intを型MyClassに暗黙的に変換できません
0993デフォルトの名無しさん
2009/02/07(土) 23:24:34さすがに応用力なさ杉じゃないか?w
っていうか、少しはMSDNライブラリとか読もうよ
0994デフォルトの名無しさん
2009/02/07(土) 23:24:45ごめんちょっと勘違いしてた
0995デフォルトの名無しさん
2009/02/07(土) 23:27:10MyClass myClass = 1; はできてるんですよ
int myInt = myClass; はできないのかなと思って。
0996デフォルトの名無しさん
2009/02/07(土) 23:28:06Windowsなんだから大文字・小文字の違いは常に無視でいいと思う。
ファイルシステムが区別して、お前のプログラムが区別するとしても、
Windowsカーネル・シェルが区別してくれなければ意味がない。
というわけでStringComparison.OrdinalIgnoreCaseを使いましょうという話。
http://blogs.msdn.com/michkap/archive/2005/10/17/481600.aspx
http://blogs.msdn.com/michkap/archive/2006/08/12/696284.aspx
0997デフォルトの名無しさん
2009/02/07(土) 23:31:11class MyClass
{
private int i;
public static implicit operator int( MyClass myclass )
{
return myclass.i;
}
public static implicit operator MyClass( int i )
{
return new MyClass();
}
}
0998デフォルトの名無しさん
2009/02/07(土) 23:38:02なるほど!そういうことか!!
正確にはこうですね?ありがとう
class MyClass
{
private int mInt = 10;
public MyClass(int i)
{ this.mInt = i; }
public static implicit operator int(MyClass myclass)
{ return myclass.mInt; }
public static implicit operator MyClass(int i)
{ return new MyClass(i); }
}
0999998
2009/02/07(土) 23:41:16ふらっとC#,C♯,C#(初心者用) Part37
http://pc11.2ch.net/test/read.cgi/tech/1234017654/l50
1000デフォルトの名無しさん
2009/02/07(土) 23:41:53出来るけど、多用はオススメはしない。
知らない間に情報が欠落してるって事もあるし…
つうか、>>993 を嫁よ
>>984
サンクス。ブックマークに追加した。
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。