ふらっとC#,C♯,C#(初心者用) Part33
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2008/11/03(月) 02:58:21「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
0002デフォルトの名無しさん
2008/11/03(月) 02:58:55http://pc11.2ch.net/test/read.cgi/tech/1224754660/
WPF(XAML,XBAP,.NET3.5)GUIプログラミング
http://pc11.2ch.net/test/read.cgi/tech/1211453941/
Live3
http://pc11.2ch.net/test/read.cgi/tech/1221395634/
初心者のためのプログラミング言語ガイド Part11
http://pc11.2ch.net/test/read.cgi/tech/1218282605/
0003デフォルトの名無しさん
2008/11/03(月) 02:59:26http://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/
0004デフォルトの名無しさん
2008/11/03(月) 04:28:11ふらっとC#,C♯,C#(初心者用) Part32
http://pc11.2ch.net/test/read.cgi/tech/1223791661/
0005デフォルトの名無しさん
2008/11/03(月) 05:02:54削除依頼出しとけよ
0006デフォルトの名無しさん
2008/11/03(月) 06:48:29おつ
>>5 は前スレでも暴れていたようだ
http://pc11.2ch.net/test/read.cgi/tech/1223791661/4-14
0007デフォルトの名無しさん
2008/11/03(月) 06:55:14スレを立てた納得のいく理由を言ってもらおうか?
0008デフォルトの名無しさん
2008/11/03(月) 08:19:05俺は初心者スレが欲しいから。
0009デフォルトの名無しさん
2008/11/03(月) 09:16:090010デフォルトの名無しさん
2008/11/03(月) 09:50:26おまいが来ないように。
0011デフォルトの名無しさん
2008/11/03(月) 09:55:43明らかに不合理以外の何物でもないと俺も思うが、
別に害もないし「二つあってはダメ」ということもないでしょ。
消極的容認という奴だよ。
本音を言えばそこらの本やweb上の情報読めば解決するようなことを
初心者を言い訳にして人に聞くような奴に目なんかないと思うけど。
0012デフォルトの名無しさん
2008/11/03(月) 10:09:39非初心者の質問に初心者が回答するなど、ミスマッチの頻度が増す。
現行の体制にもそれなりのメリットはあるんじゃないか。
0013デフォルトの名無しさん
2008/11/03(月) 10:31:360014デフォルトの名無しさん
2008/11/03(月) 10:56:190015デフォルトの名無しさん
2008/11/03(月) 10:59:120016デフォルトの名無しさん
2008/11/03(月) 11:18:50だから激しく既出だけど、2chだって鬼ばっかりじゃないんだから
どこだろうと回答は返ってくる。
ただし、質問が「まとも」であるならね。
逆を言えば、「お前C#やプログラミングの、ではなく日本語の初心者だろ」
と言いたくなるような杜撰な質問だったり、調べればすぐ分かることを横着して
質問してるとしか思えない怠惰な糞野郎の質問には、どこだろうと回答なんて
返ってくるわけがない。
>>11では「害がない」と書いたけど、本当はこういうスレってそういう連中の
免罪符になっており、連中から自分が反省する機会を奪っている負の側面がある
可能性は大いにある。
0017デフォルトの名無しさん
2008/11/03(月) 11:25:48正論だね。
そういう質問に対しては「華麗にスルー」か「親切に説教」の対応を
適宜選択して行けば良いんじゃね?
スレが2つでも大きな問題じゃないと思う。
0018デフォルトの名無しさん
2008/11/03(月) 11:25:490019デフォルトの名無しさん
2008/11/03(月) 11:31:45自動的に変換にしてくれなかったということですか?
0020デフォルトの名無しさん
2008/11/03(月) 11:34:37いや、普通は動くよ。
0021デフォルトの名無しさん
2008/11/03(月) 11:44:59m3uファイルを関連付けされているアプリケーションで開かせたいのですが
//pathにはm3uファイルのパスが入っている
System.Diagnostics.Process.Start(path);
とした時、WMPが立ち上がるのですが、m3uファイルが開かれておらず、"ただ立ち上がっただけ"の状態になります
以下の状態ならファイルも読み込んでくれるようです
・Process.Start時にWMPが既に実行されていた場合
・Process.Start後にSleep(10000)なりReadKey()なりで時間を稼いだ場合
・Process.Start("wmplayer",path)とした場合
解説サイト等にはファイルを開かせる処理と言うと、ただProcess.Start(ファイルパス)しろとしか書かれていないのですが、それでは何か足りないと言う事でしょうか?
環境は32ビット版Vista+VS2008EEです
0022デフォルトの名無しさん
2008/11/03(月) 11:51:07空気読め
0023デフォルトの名無しさん
2008/11/03(月) 11:58:28path に .txt なファイルのフルパスを指定して、普通にメモ帳が立ち上がるかどうか確認。
立ち上がるなら、プログラムに問題はなし。WMP 側の問題だろうね。
0024デフォルトの名無しさん
2008/11/03(月) 12:05:180025デフォルトの名無しさん
2008/11/03(月) 12:08:12Controls[string]使ってるんだろ
002621
2008/11/03(月) 12:17:38何か問題でしたか?
>>23
pathだけProcess,Startの直前に書き換えてみましたが、普通にテキストファイルがnotepadで開かれました
WMP以外のソフトも試してみます
>>24
普通にファイルが開かれ、再生が始まります
0027デフォルトの名無しさん
2008/11/03(月) 12:25:09Applicaion.DoEvent();
は?
002821
2008/11/03(月) 12:37:11コンソールアプリなんです
起動→m3uファイルを生成→生成したファイルを開く
これだけの処理なんですが・・・
ちなみにMedia Player Classicに関連付けをして試してみましたが、Process.Start(path)だけで普通に立ち上がりました
随分不可解ですが、WMPの問題と見て間違い無いのでしょうか・・・
0029デフォルトの名無しさん
2008/11/03(月) 13:17:42何かよい方法は無いものでしょうか・・・
0030デフォルトの名無しさん
2008/11/03(月) 13:27:54System.Diagnostics.Process.Start(path);
は?
0031デフォルトの名無しさん
2008/11/03(月) 13:46:25System.Diagnostics.Process.Start(path);
Thread.Sleep(5000); //とりあえず5秒まつ
System.Diagnostics.Process.Start(path); //なぜか2回実行しないと正しく動かない
的なコードはヤメレw
Process.Start("wmplayer",path)とした場合動くって書いてるからやるならこっちだろ
0032デフォルトの名無しさん
2008/11/03(月) 13:49:41003321
2008/11/03(月) 13:51:12ダメでした
>>31
何故ダメなのか解らないと言うモヤモヤは残ってしまいますが、関連付けを別個に取得して、Process.Start(hoge,path)の形式で行くことにします
回答して下さった皆さん有難う御座いました
0034デフォルトの名無しさん
2008/11/03(月) 13:55:42オレも動いたからOK派なんだけど、ちょっと疑問に思った。
0035デフォルトの名無しさん
2008/11/03(月) 13:56:33っっw
0036デフォルトの名無しさん
2008/11/03(月) 14:00:400037デフォルトの名無しさん
2008/11/03(月) 14:11:110038デフォルトの名無しさん
2008/11/03(月) 14:22:430039デフォルトの名無しさん
2008/11/03(月) 14:28:280040デフォルトの名無しさん
2008/11/03(月) 17:19:320041デフォルトの名無しさん
2008/11/03(月) 18:29:17WinShotが便利
0042デフォルトの名無しさん
2008/11/03(月) 22:35:05現在,RegistryクラスのOpenSubKeyメソッドを再帰的に呼び出しているのですが,
Windows標準のレジストリエディタにある「エクスポート」機能を
C#から実行することは可能でしょうか?
環境は
VC# 2005 Express
Windows XP Pro
です.
よろしくお願いします.
0043デフォルトの名無しさん
2008/11/03(月) 22:42:18アクセストークンだの何だの色々面倒そうだな
004442
2008/11/03(月) 23:12:27ありがとうございます.
残念ながらCはほとんど読めません;;
調べてみたところ,APIを使わなくても,regeditの引数に/eをつければ
エクスポートできたので,この方法でいこうかと思います.
0045デフォルトの名無しさん
2008/11/03(月) 23:37:350046デフォルトの名無しさん
2008/11/04(火) 01:48:34今の方法はDataGridViewの列にID列をもうけて、そのIDのデータをDataSetオブジェクトから削除するようにしているのですが
IDをDataGridViewに表示しているとスマートじゃないのでできるなら表示したくありません。このような状況下でうまく選択された行を削除する方法はありませんか?
0048デフォルトの名無しさん
2008/11/04(火) 04:14:48つ SelectedRows
0049デフォルトの名無しさん
2008/11/04(火) 11:15:290050デフォルトの名無しさん
2008/11/04(火) 11:37:56EXEやDLLのファイル名
0051デフォルトの名無しさん
2008/11/04(火) 11:40:470052デフォルトの名無しさん
2008/11/04(火) 12:05:47”要求したアドレスのコンテキストが無効です。”
と表示されて、うまく待機状態になりません。
ちなみに、各PCのWindows(Vista)やセキュリティのファイヤーウォールは無効にして行っています。
(よって、もちろんping等も通る状態です。)
IPAddress localAddr = IPAddress.Parse("192.168.11.6");
TcpListener server = new TcpListener(localAddr, 9999);
server.Start();
ちなみにループバックだとうまくいくのですが、
何かまずい点がありますでしょうか?
あれば、教えていただけると助かります。
0053デフォルトの名無しさん
2008/11/04(火) 12:40:110054デフォルトの名無しさん
2008/11/04(火) 13:34:55ipconfig /all なんかで確認を
0055デフォルトの名無しさん
2008/11/04(火) 14:11:20Array.Sort(splitString);
で、逆順にソート結果を表示するにはどうすればいい?
0056デフォルトの名無しさん
2008/11/04(火) 14:26:100057デフォルトの名無しさん
2008/11/04(火) 14:26:18表示だけ変えたいのならそっちの方でどうにかする
0058デフォルトの名無しさん
2008/11/04(火) 14:30:21反転(Reverse)だわなw
0059デフォルトの名無しさん
2008/11/04(火) 15:18:030060デフォルトの名無しさん
2008/11/04(火) 16:13:490061デフォルトの名無しさん
2008/11/04(火) 17:09:57おおお。
Array.Reverse
なんてのがあるんだ。知らなかった。
これは、1行に複数の項目がある場合、項目を指定できるんですか?
1行にはファイル一覧と日付と時刻があり、ファイルの逆順に並びました。
path/tmp.txt 2008/11/04 17:06:37
のようになってます。
2008/11/04 17:06:37 path/tmp.txt
にしてもファイル名の逆順になりました。
日付の逆順にしたいのです。
>>59
今回は、
2008/11/04 17:06:37 path/tmp.txt
にしておいて、
Array.Sort(splitString, (x, y) => -String.Compare(x, y));
でうまくいきました。
ありがとさん。
0062デフォルトの名無しさん
2008/11/04(火) 17:20:10並び替えるのはSortの仕事。
一般的には
日付とパスを持ったクラスを作って、全部のデータをそのクラスの配列に詰替えして、
> Array.Sort(splitString, (x, y) => -String.Compare(x, y));
の-String.Compare(x, y)部分を好きな判定に変更。
0063デフォルトの名無しさん
2008/11/04(火) 17:23:570064デフォルトの名無しさん
2008/11/04(火) 18:53:28ちなみにC#はほぼ初心者で、CとJavaは習ってます。
0065デフォルトの名無しさん
2008/11/04(火) 18:54:370066デフォルトの名無しさん
2008/11/04(火) 19:02:09検索用のスペースを取り付けたのですが、あけたスペースに文字を入力すると、
あるフィールドに、その入力された文字が含まれているなら、その部分のレコードを取り出す。
ということをできるようにボタンのイベントのビルドを設定したいのですが、
どういうふうに設定すればよいのでしょうか。Filterを使うのはわかっています。
説明下手で申し訳ありません。
0067デフォルトの名無しさん
2008/11/04(火) 19:19:43.NET Framework的に
0068デフォルトの名無しさん
2008/11/04(火) 19:22:400069デフォルトの名無しさん
2008/11/04(火) 19:26:150070デフォルトの名無しさん
2008/11/04(火) 20:15:56ボタンのイベント
{
検索処理(スペースに入力された文字);
}
って感じで。
0071デフォルトの名無しさん
2008/11/04(火) 21:20:19VB2005のC#をつかおうかとおもってます
0072デフォルトの名無しさん
2008/11/04(火) 21:23:390073デフォルトの名無しさん
2008/11/04(火) 21:26:180074デフォルトの名無しさん
2008/11/04(火) 22:06:25マジレスすると
どっかのサイトの「はじめてのC#」みたいなところを一通り読みながら
サンプルをコンパイルしてけばいいと思う
0075デフォルトの名無しさん
2008/11/04(火) 22:10:01Cやjavaの超初心者用の本でも買ってOOP以前の基礎を勉強した方がいいんじゃないかなあ
0076デフォルトの名無しさん
2008/11/04(火) 22:11:43マジレスどうもありがとうございます
検索して調べてみます
0077デフォルトの名無しさん
2008/11/04(火) 22:24:44のようなis演算子を使って否定形にするにはどう書けばいいですか?
0078デフォルトの名無しさん
2008/11/04(火) 22:25:39007977
2008/11/04(火) 22:30:060080デフォルトの名無しさん
2008/11/04(火) 23:01:56今考えているのは専用のクラスをつくって
直前または直後のコントロールと状態を丸ごと保存しておく方法です
通常はどのような方法で実装するのが一般的でしょうか?
0081デフォルトの名無しさん
2008/11/04(火) 23:05:02一般的かどうかは知らんけど、memento or(and) command とかのデザインパターンを
使う方法もあるよ。
0082デフォルトの名無しさん
2008/11/04(火) 23:09:10mementoかな
0083デフォルトの名無しさん
2008/11/04(火) 23:16:50例としてはテキストエディタ考えれば分かると思うけど。
0084デフォルトの名無しさん
2008/11/04(火) 23:17:050085デフォルトの名無しさん
2008/11/05(水) 00:00:42IPはもちろんipconfigで確認しました。
ちなみに、IPアドレスを指定せずIPAddress::Anyを使うとうまくつながりました。
理由がさっぱりわかりません ○rz
008680
2008/11/05(水) 00:16:07ちょっと大がかりな気がするので簡略化して実装してみます
ありがとうございました
0087デフォルトの名無しさん
2008/11/05(水) 01:44:29継承先で通常のメソッドとして使用することはできるのでしょうか?
それとも抽象クラスのなかのメソッドは全てabstrctとしてとらえられるのでしょうか?
0088デフォルトの名無しさん
2008/11/05(水) 01:47:44全て抽象だったら中身を定義する意味がないだろ。
0089デフォルトの名無しさん
2008/11/05(水) 03:01:280090デフォルトの名無しさん
2008/11/05(水) 03:49:530091デフォルトの名無しさん
2008/11/05(水) 07:58:01クリップボードのデータをTcpClientを使ってサーバーに送信したいのですが、
Byte[]に変換するところでつまずいています。
ビットマップや音声など、DataFormatsに含まれている形式なら
問題ないのですが、それ以外の場合、取得することもできないので
困っています。
ClipBoard.GetDataObject()で取得したデータをそのままByte[]に
できれば理想的です。よろしくお願い致します。
0092デフォルトの名無しさん
2008/11/05(水) 08:08:18009391
2008/11/05(水) 08:43:04勝手には送信しません
0094デフォルトの名無しさん
2008/11/05(水) 14:38:13ところで複数フォーマットがある場合どうするの?
全部送るのかな。GetDataObjectしたものをGetFormatsして
それぞれをGetDataして送るのでどう?
0095デフォルトの名無しさん
2008/11/05(水) 16:02:240096デフォルトの名無しさん
2008/11/05(水) 16:53:06やはりこれが一番現実的な解ですよね。
ありがとうございました。
009791
2008/11/05(水) 18:11:31GetFormats()みたいに特定の形式に依存したくないんですよね
目的はクリップボードの生データを共有することなので
例えば「01 2f e4 38」みたいななんの脈絡もないバイナリも
そのままの形で取得/設定したいんです
>>95
調べてみました
サンプルコードを見たところ、
クリップボードを自作クラスにシリアライズできるようですね
でもサンプルコードはクリップボードにはアクセスしていないもので
参考にはなりませんでした・・・
クリップボードのメモリ空間に直接アクセスしてbyte[]に入れられればいいのですが
0098デフォルトの名無しさん
2008/11/05(水) 18:40:45だからよー
送った先でも同じ名前(フォーマット)で再構築しなきゃならないだろうが。
タダだのぷしただけだと復元できないだろ。
0099デフォルトの名無しさん
2008/11/05(水) 18:51:070100デフォルトの名無しさん
2008/11/05(水) 18:52:220101デフォルトの名無しさん
2008/11/05(水) 18:52:41ショップ99はこういうこだわりの有る店なんだ。
0102デフォルトの名無しさん
2008/11/05(水) 18:53:520103デフォルトの名無しさん
2008/11/05(水) 18:54:170104デフォルトの名無しさん
2008/11/05(水) 18:57:20初心者から上級者の域まで一気にいける。
0105デフォルトの名無しさん
2008/11/05(水) 18:58:230106デフォルトの名無しさん
2008/11/05(水) 19:00:10つhttp://codezine.jp/article/tag/167
0107デフォルトの名無しさん
2008/11/05(水) 19:03:52そうなんです><; オキニのレジの店員も女子高生なんです><;
0109デフォルトの名無しさん
2008/11/05(水) 20:02:06発信源日本がダントツらしいし
0110デフォルトの名無しさん
2008/11/05(水) 20:08:12書き込むにはフォーマットが必要なわけだが
011191
2008/11/05(水) 21:22:55要するにbyte[]型のメンバだけで構成された
独自フォーマットと考えることはできないんでしょうか?
クリップボードをダンプすることができれば解決するのですが・・・
0112デフォルトの名無しさん
2008/11/05(水) 21:35:23これって、自力で実装するしかないですよね。そういうコントロールとかがあるわけじゃないですよね?
0113デフォルトの名無しさん
2008/11/05(水) 21:46:10IDisplay display = new SevenSegmentDisplay();
DisplayComponent[] components = new SevenDisplayComponent[3];
components[0] = SevenDisplaySegment.A | SevenDisplaySegment.B | SevenDisplaySegment.C | SevenDisplaySegment.F;
components[1] = SevenDisplaySegment.B | SevenDisplaySegment.C;
components[2] = SevenDisplaySegment.B | SevenDisplaySegment.C | SevenDisplaySegment.F | SevenDisplaySegment.G;
display.Show(components);
0114デフォルトの名無しさん
2008/11/05(水) 21:48:480115デフォルトの名無しさん
2008/11/05(水) 21:52:43銭取る仕事じゃないならフリーのフォント使うとか。
銭取る仕事でも、フォントから画像起こしてそれこっそり使っちゃえばいい。
数字なんて10種類しかないんだから。
確かMSのマイグレーション何とかのサンプルでそういうやり方をしてたよ。
0116デフォルトの名無しさん
2008/11/05(水) 21:54:17ttp://www.trojanbear.net/omake.htm#font
これじゃだめぽ?
0117デフォルトの名無しさん
2008/11/05(水) 21:58:430118デフォルトの名無しさん
2008/11/05(水) 21:59:05GetFormats(false)で得た全種類をGetDataするのが
一番形式に依存しない方法だと思うぞ。
強いて言えば、クリップボードの内部形式はIDataObjectそのもの。
ネイティブなAPIでもクリップボードにはIDataObjectを受け渡ししている。
0119デフォルトの名無しさん
2008/11/05(水) 21:59:16wb.Navigate(uri);
を使った場合、読み込まれたページのJavaScriptは勝手に実行されてしまいます?。
IEが勝手に立ち上がって404?を表示してしまいます。
0120デフォルトの名無しさん
2008/11/05(水) 22:00:210121デフォルトの名無しさん
2008/11/05(水) 22:07:04表示しなければ実行されないのかと思ってた。
0122デフォルトの名無しさん
2008/11/05(水) 22:19:30DataSetの方のレコードも確実に削除されるっていう保証ある?
012391
2008/11/05(水) 22:27:30なるほど
正体不明のバイナリデータが出てきたりしたら
扱いに困りそうですが取り敢えずやってみます
APIにもクリップボードをダンプする関数はないみたいですし・・・
0124デフォルトの名無しさん
2008/11/05(水) 22:49:47コンストラクタで初期化した後は変更しないフィールドには付けるべきなんだろうけど
つい忘れちゃうんだよね
0125デフォルトの名無しさん
2008/11/06(木) 10:33:470126デフォルトの名無しさん
2008/11/06(木) 14:25:57http://www.stackasterisk.jp/tech/dotNet/csharp08_02.jsp
のコードを動かして見たのですが、
localhost同士の場合はきちんと通信できるのに、
LAN上の別PC同士では
「接続済みの呼び出し先が一定の時間を過ぎても正しく応答しなかったため、接続できませんでした。または接続済みのホストが応答しなかったため、確立された接続は失敗しました。」
というエラーが出るのですが、これはなにが原因なのでしょうか。
サーバー側は192.168.1.70:1500
クライアント側は
192.168.1.60:1600
で待機するようにしています
よろしくお願い致します。
※むろん、ソースのPortの値やIPアドレスは正しく変更しています
0127デフォルトの名無しさん
2008/11/06(木) 14:37:490128デフォルトの名無しさん
2008/11/06(木) 14:38:49文章が前後したために誤解させて済みません
待機しているのはサーバーです
0129デフォルトの名無しさん
2008/11/06(木) 14:38:580130デフォルトの名無しさん
2008/11/06(木) 14:41:29クライアントが指定しているアドレスとポートはサーバのを指定するんだよ。
クライアントでは通常ソースポートを指定しなければ空いてるポートを使う。
0131126
2008/11/06(木) 15:00:27ファイヤーウォールはポート開けてます
一応、試しに無効にしましたが、だめでした・・・
>>130
ソースのPortの値やIPアドレスは正しく変更しています
0132デフォルトの名無しさん
2008/11/06(木) 15:04:15>クライアント側は
>192.168.1.60:1600
という必要ない情報をわざわざ書いてることなんだよね。
このアドレスとポートはプログラムに書く必要がないのはわかってる?
0133デフォルトの名無しさん
2008/11/06(木) 15:05:500134デフォルトの名無しさん
2008/11/06(木) 15:07:53そういうことですか
それは大丈夫です
サーバーは127.0.0.1で待機していますし、
クライアントは192.168.1.70:1500へつなぎにいってるはずです
クライアントのアドレスを書いたのは環境がおかしいのかを疑ったためです
誤解を与えてすみません
0135デフォルトの名無しさん
2008/11/06(木) 15:09:30これはだめ。
0.0.0.0か、192.168.1.70で待たなくちゃ
0136デフォルトの名無しさん
2008/11/06(木) 15:10:550137デフォルトの名無しさん
2008/11/06(木) 15:11:47動きました!
本当にありがとうございます。
どういうミスだったのでしょうか?
0138デフォルトの名無しさん
2008/11/06(木) 15:17:35クライアントがサーバのアドレスとポートを指定したら
サーバはそのアドレスとポートでListenしていないと届かない。
0139デフォルトの名無しさん
2008/11/06(木) 15:23:23なるほど
つまり、Listenするアドレスとは、サーバーから見て自分のアドレスという意味ではなく、
クライアントからも見えなきゃだめということなんでしょうか
大事なことなのにサンプルには何も説明ないんですよね・・・
0140デフォルトの名無しさん
2008/11/06(木) 15:27:16ネットワークカードに繋がっているインタフェースのアドレスをlistenしなきゃダメ、
(ほかのホストから繋ぐなら)ということ。
0141デフォルトの名無しさん
2008/11/06(木) 15:27:37サーバーをたてる人間にとって常識だからさ。
0142デフォルトの名無しさん
2008/11/06(木) 15:28:170143126
2008/11/06(木) 15:35:18サーバーの待ちアドレスがクライアントから見えなきゃいけない
とは思いませんでした。
サーバーが自分で自分を認識できればいいのかな、と。
(だからサンプルも127.0.0.1になっているのかなと)
0144デフォルトの名無しさん
2008/11/06(木) 15:37:08複数アドレス振れるからね。クライアントがどこにつなぎに行ってサーバがどこで待ってるかは
一致しないとね。TCP/IPの基本だからそのうち当たり前と思うようになるかもね。
0145デフォルトの名無しさん
2008/11/06(木) 16:31:43クライアントがサーバーを認識できなかったらクライアントは何をするんだw
192.168.x.xのアドレスはLAN内でしか使えないことも注意。
0146デフォルトの名無しさん
2008/11/06(木) 16:32:18↑の一文が実行時エラーになるお(;ω;)
題名「InvalidCastExceptionはハンドルされませんでした」
内容「型 'System.Windows.Forms.Binding.Source'のオブジェクトを型'System.Data.DataTable'にキャストできません。」
っていうエラーがでるお(;ω;)
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.binding.datasource(VS.80).aspx
↑このページみるとDataTableに格納できるってかいてあるお(;ω;)
お手上げだお。だれか助けてお。
0147デフォルトの名無しさん
2008/11/06(木) 16:37:040148デフォルトの名無しさん
2008/11/06(木) 16:37:490149デフォルトの名無しさん
2008/11/06(木) 16:39:13質問者がふざけた態度をとるな
鬱陶しい
0150146
2008/11/06(木) 16:42:290151デフォルトの名無しさん
2008/11/06(木) 16:42:430152デフォルトの名無しさん
2008/11/06(木) 16:48:02DataTable tbl = (;ω;)dataGridView1.DataSource;
0153デフォルトの名無しさん
2008/11/06(木) 16:51:440155デフォルトの名無しさん
2008/11/06(木) 16:57:42デバッグで式コピーして貼り付けろよ糞質問者
0156デフォルトの名無しさん
2008/11/06(木) 17:00:14DataSourceはobject、元になるBindingオブジェクトが何を元に作られたかで何であるかは変わってくる。
キャストエラーが出るならDataSetではないということ。
0157146
2008/11/06(木) 17:11:58初心者OKスレに難しい事かくな。糞回答者
>>156
ありがとう。なるほど、DataSetやDataTableをもとに作られたわけじゃないんだね。
おいらには、むずかしいから、ちょっと間をおきます。ありがとう。
0158デフォルトの名無しさん
2008/11/06(木) 17:15:270159デフォルトの名無しさん
2008/11/06(木) 17:26:44質問の時に
〜になるお(;ω;)
ですからwwwwww
微笑ましいのぅ
つうかGetTypeしてみりゃ中が何かわかるだろうに・・・・・
0160デフォルトの名無しさん
2008/11/06(木) 17:33:390161デフォルトの名無しさん
2008/11/06(木) 17:33:570162デフォルトの名無しさん
2008/11/06(木) 18:05:25ふぅはぁはふぁははばばはばぁ
0163146
2008/11/06(木) 18:12:12飯食って頭冷やしてきたらわかりました。BindingSourceっていう型が
DataSourceだったんですね。
DataSet ds = (DataSet)((BindingSource)dataGridView1.DataSource).DataSource;
っていう一文にしたら良かったです。デザイナからDataSetとDataGridViewをくっつけたときは
DataTableを飛び越えてデータの双方の移動があるみたいなのでDataTableはないみたいです。
真摯に教えてくださった方、ありがとうございました。
また、がんばります><;
0164デフォルトの名無しさん
2008/11/06(木) 18:14:310165デフォルトの名無しさん
2008/11/06(木) 19:38:230166デフォルトの名無しさん
2008/11/06(木) 19:57:42(@"C:\test.txt", System.Text.Encoding.GetEncoding(932));
「@"C:\test.txt"」の代わりにパスが格納してある変数を使いたいのですが
どのように書けばいいですか?
Visual C# 2008 w
0167デフォルトの名無しさん
2008/11/06(木) 19:58:26Visual C# 2008 を使っています
0168デフォルトの名無しさん
2008/11/06(木) 19:59:230169デフォルトの名無しさん
2008/11/06(木) 20:11:50string path = @"C:\test.txt";
System.IO.StreamReader sr = new System.IO.StreamReader( path, System.Text.Encoding.GetEncoding(932));
0170デフォルトの名無しさん
2008/11/06(木) 20:17:15無事にできました。
ありがとうございました。
0171デフォルトの名無しさん
2008/11/06(木) 20:25:31DataGridViewに「区分」のコンボボックスを表示させました。
(DB上にコードと区分の内容を持つテーブルがあり、ValueMemberにコード、DisplayMemberに内容が表示されるように設定しました)
区分コード他、約30カラム分のデータをDataTableに取得→DataGridViewのDataSourceに設定
という方法を現在とっているのですが、
DataGridViewが表示される際に区分のコンボボックスが何も選択されていない状態で表示されています。
DataTable内の区分コードに対応する区分をコンボボックスに自動で表示させるにはどのようにすればよいのでしょうか?
どなたかヒントだけでも教えてください...
0172デフォルトの名無しさん
2008/11/06(木) 21:45:44richText.Text += newLog;
richText.SelectionLength = 0;
richText.SelectionStart = richText.Text.Length;
richText.ScrollToCaret();
としているのですが、完全に最新の行を表示することができず、
ログ追加時の RichTextBox のサイズによっては最後の 1 行が半分で切れてしまったり、全く表示されなかったりします。
最新の行を完全に表示させる方法はあるのでしょうか。
0173172
2008/11/06(木) 21:48:51richText.Text += "\r\n" + newLog;
でした。
0174デフォルトの名無しさん
2008/11/06(木) 22:11:21APIを呼ばなきゃむり?
0175デフォルトの名無しさん
2008/11/06(木) 22:25:22なぜですか?
0176デフォルトの名無しさん
2008/11/06(木) 22:40:45ならないけど?
まあ実質10ptっていわれても96dpiだと
9.75em → 13px
10.5em → 14px
だからピクセルの端数をなくすとそうなるんでしょうが
0177デフォルトの名無しさん
2008/11/06(木) 22:40:45http://msdn.microsoft.com/ja-jp/library/system.windows.forms.textboxbase.scrolltocaret(VS.80).aspx
RichTextBox使ったこと無いからわからんけど
ScrollToCaret()メソッドは文字通りCaretまで移動したら終わりみたいだから
それは仕様じゃないかな
richTextBox1.HideSelection = false;
richTextBox1.AppendText("log" + "\r\n");
でいいと思うけど
0178デフォルトの名無しさん
2008/11/06(木) 23:23:190179デフォルトの名無しさん
2008/11/06(木) 23:27:28RichTextBoxかWPFへどうぞ
0180デフォルトの名無しさん
2008/11/06(木) 23:29:290181デフォルトの名無しさん
2008/11/06(木) 23:30:00できないんですか(´・ω・`)
0182デフォルトの名無しさん
2008/11/06(木) 23:45:400183デフォルトの名無しさん
2008/11/07(金) 00:24:39同じ症状だ。仕様かと思ってた。
9pt → 9pt
10pt → 9.75pt
11pt → 11.25pt
12pt → 12pt
13pt → 12.75pt
14pt → 14.25pt
15pt → 15pt
16pt → 15.75pt
18pt → 18pt
3の倍数以外は丸められてるのかな。
0184デフォルトの名無しさん
2008/11/07(金) 00:28:02Visual Studio の話ならスレ違い。
0186デフォルトの名無しさん
2008/11/07(金) 00:51:290187デフォルトの名無しさん
2008/11/07(金) 13:54:33これは.NETのデザインルールでこうなっているのでしょうか?
キャスト回数を最小限にする為に、あるクラス用にジェネリックなハンドラを自作してイベントを定義することに起因する問題はありますか?
public delegate MyEventHandler<TEventArgs>(MyClass sender, TEventArgs e) : where TEventArgs : EventArgs;
0188デフォルトの名無しさん
2008/11/07(金) 14:17:24タイマとボタンクリックで同じハンドラ、みたいな
0189デフォルトの名無しさん
2008/11/07(金) 14:40:03WPFのアプリケーションのある動作(終了処理)に、ショートカットキーを割り当てたいと思います。
http://youryella.wankuma.com/Library/Extensions/Button/ShortcutKey.aspx
を参考に、ボタンbutton1を作り、
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
// Ctrl + W をボタンのショートカットキーとして処理する
if ((int)keyData == (int)Keys.Control + (int)Keys.W)
{
this.button1.PerformClick();
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
public void button1_Click(object sender, CancelEventArgs e){
Close();
}
としてみましたが、この方法は、Formアプリケーションで、
using System;
using System.Windows.Forms;
であるため、WPFではそのままでは動作しません。
エラー 1 型または名前空間名 'Keys' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
となります。
WPFに対応するには、なにを参照すればよいんでしょう?
あるいはそもそも違う方法がありますか?
Formの場合は、プロパティでショートカットを指定できるのですが、WPFではショートカットの項目が見当たらないし。
0190デフォルトの名無しさん
2008/11/07(金) 14:47:29<Window.InputBindings>
<KeyBinding Key="..." Command="..."/>
</Window.InputBindings>
<Window.CommndBindings>
<CommangBinding Command="..." Executed="実行したいメソッド"/>
</Window.CommandBindings>
CommandはApplicationCommandsの中から適当に選ぶか自作するか
あとはWindowのPreviewKeyDownとか
0191デフォルトの名無しさん
2008/11/07(金) 14:50:56もちろん再利用性が限定されるのを認識した上で使用を予定しています。
アクセス権の指定はinternalの方が適切かもしれません。ごめんなさい。
主に、アプリ内部での独自のGUIイベント伝達に使用します。
内部の実装上、そのイベントにはホスト側で確実にハンドラがセットされ、
また、そのハンドラ内でsenderにアクセスするためにキャストが発生するので、
objectで渡すよりはクラスで渡した方が効率的に処理でき、コーディングもしやすいと考えています。
フレームワークでは汎用性を第一に考えた為にobjectになっていることは想像しましたが、
例えば、特定のクラスに特化したWebBrowserDocumentCompletedEventHandlerでもsenderがobjectとされている為
(このハンドラ内ではDOMアクセスを行うことが多いので、senderはWebBrowser型の方が都合が良い様に思える)、
この実装には何か特別な意味があるのかと思い質問した次第です。
0192デフォルトの名無しさん
2008/11/07(金) 15:00:17まあガイドラインは基本的に外から見えるものに対するものだから
そうでないのについては自由にすればいいよ
0193デフォルトの名無しさん
2008/11/07(金) 15:00:310194デフォルトの名無しさん
2008/11/07(金) 15:11:38ありがとうございます。
0195デフォルトの名無しさん
2008/11/07(金) 16:41:54具体的には、内部のリスト(List<>)を外部に渡し、外部からは参照のみが可能としたいんです
どなたかお願いします。
0196デフォルトの名無しさん
2008/11/07(金) 16:55:32そういうとき.NETではList<T>ではなくReadOnlyCollection<T>を返すように実装する
0197デフォルトの名無しさん
2008/11/07(金) 17:02:04早速実装してみます。ありがとうございました
0198デフォルトの名無しさん
2008/11/07(金) 17:12:580199デフォルトの名無しさん
2008/11/07(金) 17:33:27もうすこし教えてください。
<Window.InputBindings>
<KeyBinding Key="W" Command="CloseCommand"/>
</Window.InputBindings>
<Window.CommndBindings>
<CommangBinding Command="CloseCommand" Executed="Close()"/>
</Window.CommandBindings>
としてみましたが、
エラー 1 タグ 'Window.CommndBindings' は、XML 名前空間 'http://schemas.microsoft.com/winfx/2006/xaml/presentation' にありません。
エラー 2 要素 '<Window.CommndBindings>' の終了タグが見つかりませんでした。
エラー 3 アタッチ可能なプロパティ 'CommndBindings' が、型 'Window' に見つかりませんでした。
エラー 4 型 'CommangBinding' が見つかりませんでした。アセンブリ参照が失われていないか、また、すべてのアセンブリがビルドされているかを確認してください。
といろいろエラーが。
なにか参照が必要でしょうか?
0200デフォルトの名無しさん
2008/11/07(金) 17:40:230201デフォルトの名無しさん
2008/11/07(金) 17:45:180202デフォルトの名無しさん
2008/11/07(金) 17:55:26サンプル多いしね
0203デフォルトの名無しさん
2008/11/07(金) 17:57:41あ。そういうことか。
失礼しました。
4種類もエラーが出て、混乱してました。
で、スペルミスは修正して、
http://blogs.wankuma.com/kazuki/archive/2008/03/24/129252.aspx
を参照しつつ、
<Window.InputBindings>
<KeyBinding Key="W" Command="Close"/>
</Window.InputBindings>
<Window.CommandBindings>
<!-- Closeコマンドが発行されたらClose_Executedを呼びます -->
<CommandBinding Command="Close" Executed="Close_Executed" />
</Window.CommandBindings>
としました。
すると、
エラー 2 'Window.Window1' に 'Close_Executed' の定義が含まれておらず、型 'Window.Window1' の最初の引数を受け付ける拡張メソッドが見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
と。
Executedは、メソッドを呼ぶということで、.csには、Closeというメソッドはあるので、
<CommandBinding Command="Close" Executed="Close" />
としてみましたが、
エラー 2 デリゲート 'System.Windows.Input.ExecutedRoutedEventHandler' に一致する 'Close' のオーバーロードはありません。
アドバイスいただきたく。
0204デフォルトの名無しさん
2008/11/07(金) 18:07:31Close_Executedを自分で定義すればいいだけじゃ?
0205デフォルトの名無しさん
2008/11/07(金) 18:23:05それはいちおうやってみていて、
public void Close_Executed(object sender, CancelEventArgs e){
Close();
}
というのは試しているのですが、おなじエラーがなくならないのです。
0206デフォルトの名無しさん
2008/11/07(金) 18:26:57CommandBindingんとこにサンプルもあるのに
0207デフォルトの名無しさん
2008/11/07(金) 18:30:04参考にしてるとこで
private void Close_Executed(object sender, RoutedEventArgs e)
となってるだろ?
実際それでやってみなよ。
0208デフォルトの名無しさん
2008/11/07(金) 19:08:31だから、質問する前にちゃんと彼らの言っていることを理解してやってくれ。
エラーにヒントが山ほど書いてあるのに、無視してる人が多いので一応。
まあ、意味が分かりづらいってのは確かだけど。
0209デフォルトの名無しさん
2008/11/07(金) 19:11:45不足してるなら勝手に追加してくれよ、と
0210デフォルトの名無しさん
2008/11/07(金) 19:36:22エラー 1 Commangは追加されませんでした。
で丸投げしてくるぜ
0211デフォルトの名無しさん
2008/11/07(金) 20:15:24頑なにヘルプを見ようとしないわけでなくて、
なにでどこを見たらいいか、ぴんと来てませんでした。
msdnを
C# CommandBinding
C# InputBinding
で検索して、解決しました。ありがとうございます。
>>207
おっしゃるとおり、そのように修正しました。
ありがとうございます。
>>208
エラーにヒントが書いてあることはわかるんですけど、
なかなか読み下せないんです。
>>209
そうそう。不足してるなら勝手に参照してくれよと。
ほんとにそうです。
0212デフォルトの名無しさん
2008/11/07(金) 20:19:38アセンブリのバージョンもあるし、同じ名前の別の型があるかもしれない
0213208
2008/11/07(金) 21:15:40とりあえず、エラーの内容が分からなければエラー内容中のそれっぽい単語をググ(or MSDN)ってみるべし!
意味の分からない単語もついでにググってみるべし!
意味の分からない単語ググるのは意外と重要。
C# を勉強中なら特に。
0214デフォルトの名無しさん
2008/11/07(金) 21:32:46ダイアログでも出して確認してくれればよくないか?
今みたいにエラーエラー騒ぐよりはずっとまし
0215デフォルトの名無しさん
2008/11/07(金) 22:14:14エラーとだけ告げてくれれば何の問題もない
0216デフォルトの名無しさん
2008/11/07(金) 22:16:06そりゃまあ推測はある程度出来るにしても。
0217デフォルトの名無しさん
2008/11/07(金) 22:21:200218デフォルトの名無しさん
2008/11/07(金) 22:58:32それは組み込みのクラスライブラリのアセンブリだけを特権的に扱うことを
自動的に意味するわけだけど、そういうのはソフトウェアデザインとしてまずいでしょ。
0219デフォルトの名無しさん
2008/11/08(土) 00:34:06エラーをダブルクリックするとGACからそれらしいアセンブリを探し出して
リストアップしてくれるのなら有ってもいいが、
別に無くてもいいな。
0220デフォルトの名無しさん
2008/11/08(土) 02:53:55設定の保存場所が\Local Settings\Application Data\でアプリのあるフォルダじゃないから
たとえばUSBメモリなんかで持ち歩きたいアプリじゃ使えないよね?
そういうのに使いたい場合どうすんのん?
0221デフォルトの名無しさん
2008/11/08(土) 02:57:09終了したときの画面の位置などを記憶させるものなんで、
消えて困るような情報はそこには置かないのがセオリー。
Saveダイアログボックスでセーブ先を指定できるようにする。
0222デフォルトの名無しさん
2008/11/08(土) 14:04:06同プログラミングでチームで開発するという場合、横割りでクラス分担する
とかするという方法では、基本的にメソッドなどのインターフェースを最初に
決めておいて一斉に作成作業に取り掛かるとなったとき、
後から後から次々にここはこうでないとダメだった、こうしよう、あれはああ
でなかったらできない、こうしよう、どうしよう・・・というインターフェースの変更が
とめどもなく現れてくる予感がして、収集が付かなくなる感じがするのですが、
実際にやっておられる方々はそうした点をどうやって乗り越えておられるのですか?
よろしかったら教えてください。
0223デフォルトの名無しさん
2008/11/08(土) 14:08:100224デフォルトの名無しさん
2008/11/08(土) 14:08:32というか、そんな奴に設計をやらせないというのが答えだな。
0225222
2008/11/08(土) 14:23:20そうですか、なるほど、ただ実際にはそれほど少ないインターフェースの
変更で済むものなのかということなのですが、たとえばこれを横割りではなくて
縦割りで任せるという方法でやっておられるところもあるでしょうか、
あるいはこれだと返ってほかに難点が生じるでしょうか。
0226デフォルトの名無しさん
2008/11/08(土) 14:24:330227デフォルトの名無しさん
2008/11/08(土) 15:07:39縦割りでも横割りでもなく、階層化だろ。
0228デフォルトの名無しさん
2008/11/08(土) 15:16:38恥ずかしい奴だな。
0229デフォルトの名無しさん
2008/11/08(土) 15:19:040230デフォルトの名無しさん
2008/11/08(土) 15:22:160231デフォルトの名無しさん
2008/11/08(土) 15:32:260232デフォルトの名無しさん
2008/11/08(土) 19:39:290233デフォルトの名無しさん
2008/11/08(土) 19:57:000234222
2008/11/08(土) 20:49:55縦割り、の意味は、結局、クラスの似たようなもののダブりはある程度許す
ことにして、開発スピードを重視し、手戻りの際の振り回されをできるだけ
すくなくするために自分でやれる範囲をできるだけ閉じた範囲に閉じ込める
方式にできるのではないか、という意味です。
0235デフォルトの名無しさん
2008/11/08(土) 21:12:190236デフォルトの名無しさん
2008/11/08(土) 21:24:01最大化されてたらBoundsじゃなくてRestoreBoundsを保存しろ
0237デフォルトの名無しさん
2008/11/08(土) 21:35:53前回の位置のままだと画面の外になってしまうとか、
考えないといけないことはまだある。
0238デフォルトの名無しさん
2008/11/08(土) 21:41:26意味不明な俺用語使わず最初からそう言えよ。つまり疎結合って言いたいんだろ?
しっかし、>>222のような酷い状況になるのは、単に設計した奴が無能なだけだと思うが・・。
0239デフォルトの名無しさん
2008/11/08(土) 22:20:02もしかしたら俺のソフト未知のマルウェアの被害にあってるかもしれん
0240デフォルトの名無しさん
2008/11/08(土) 22:59:350241デフォルトの名無しさん
2008/11/09(日) 06:34:22どのように調べたらいいのでしょうか?
よろしくお願い致します。
0242デフォルトの名無しさん
2008/11/09(日) 06:44:27stringやcharはunicodeで固定、byte[]やコード変換前の状態で調べないとダメ。
0243デフォルトの名無しさん
2008/11/09(日) 12:23:09といわれるのですがどうしてでしょうか?
byte[] key = Encoding.ASCII.GetBytes("password");
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
des.Key = key;
des.IV = key;
tran = des.CreateEncryptor();
0244デフォルトの名無しさん
2008/11/09(日) 12:33:40っていうかメッセージのまま。
TripleDESCryptoServiceProvider調べな。
つってもまず本当の問題は
byte[] key = Encoding.ASCII.GetBytes("password");
こんなやり方しちゃ駄目ってことだ。
0245デフォルトの名無しさん
2008/11/09(日) 12:36:18http://msdn.microsoft.com/ja-jp/library/system.security.cryptography.tripledes.key.aspx
>このアルゴリズムは、128 ビットから 192 ビットのキー長を 64 ビット単位でサポートしています。
0246デフォルトの名無しさん
2008/11/09(日) 12:38:04データベースはAccess2003で、text,text2,text3という項目名のテキスト列が3列あります。
datagridviewに表示・入力した内容をDBへ反映したいのですが、
検索した情報を元に試してみて、主キーを更新しようとすると
「UPDATE ステートメントの構文エラーです。」と出て更新できません。
主キー以外の列は更新はできるのですが、主キーを更新できない原因が分かりません。
以下のようなコードなのですが、
private void Form1_Load(object sender, EventArgs e)
{
cn.ConnectionString = "Provider=MicroSoft.Jet.OLEDB.4.0;Data Source=サンプル1.mdb"; //接続するDBを指定
da = new OleDbDataAdapter("Select * From week_table", cn);
da.Fill(ds, "曜日情報");
da = new OleDbDataAdapter("Select * From test_table", cn);
da.Fill(ds, "テスト情報");
dataGridView1.DataSource = ds.Tables["テスト情報"];
}
private void button4_Click(object sender, EventArgs e)
{
for (int i = 0; i < ds.Tables["テスト情報"].Columns.Count; i++)
{
ds.Tables["テスト情報"].Rows[ds.Tables["テスト情報"].Rows.Count - 1][i] = dataGridView1[i, 0].Value.ToString();
}
OleDbCommandBuilder cmd = new OleDbCommandBuilder(da);
da.Update(ds, "テスト情報");
}
何故主キーだけ更新できないのでしょうか orz
0247デフォルトの名無しさん
2008/11/09(日) 12:39:472005でないとダメ?
0248246
2008/11/09(日) 12:43:36練習段階のため、データベースには1行分しかデータが入っておらず、
1行分をちゃんと更新できるか試そうとしています。
0249243
2008/11/09(日) 12:54:41TripleDESCryptoServiceProviderを使っていたのが原因みたいです。
>このアルゴリズムは、64 ビットのキー長をサポートしています。
この差なのですね。
0250デフォルトの名無しさん
2008/11/09(日) 13:03:58ただ、パスワードをそのままキーにするなんてのは本当はやっちゃいけない。
良くないサンプルばっかなんだけどね。
0251デフォルトの名無しさん
2008/11/09(日) 13:15:50DataSet系ではできない。書き換えが必要な場合は直接SQLのUpdateを使う。
主キーの書き換えはRDB上はできるが、
書き換えを前提としたシステムデザインは避けるべきだというのが一般的で、
DBのフレームワークやミドルウェアでは許してないことが多い。
0252246
2008/11/09(日) 13:39:08すいません、まだレベルが低いので仰っている事があまり理解できません。
別のプログラムで、
private void button6_Click(object sender, EventArgs e) //更新処理
{
for (int i = 0; i < ds.Tables["テスト情報"].Columns.Count; i++)
{
ds.Tables["テスト情報"].Rows[Rcnt][i] = arrtxt[i].Text;
}
dataGridView1.DataSource = ds.Tables["テスト情報"];
OleDbCommandBuilder cmd = new OleDbCommandBuilder(da);
da.Update(ds, "テスト情報");
}
Rcntは現在アクティブなセルの行のインデックス番号、arrtxt[i]は更新用のテキストボックスの内容が入っており、
こちらでは主キーも更新できるようになっています。
今回は、datagridviewに直接入力して更新(主キー含む全てできるよう)をかけたいのです。
上記のプログラムを参考に246に書いたプログラムを作ったのですが、
どこをどうすれば主キーも更新できるようになるのか、
理解力に乏しいので分かりません orz
0253デフォルトの名無しさん
2008/11/09(日) 13:50:52OleDbCommandBuilderを使わず.UpdateCommandなどを自前で実装する。
0254デフォルトの名無しさん
2008/11/09(日) 15:59:14オブジェクト内の情報を分割?して表示させるコンポーネントはありますか?
0255デフォルトの名無しさん
2008/11/09(日) 16:00:380256デフォルトの名無しさん
2008/11/09(日) 16:07:070257デフォルトの名無しさん
2008/11/09(日) 16:23:19http://msdn.microsoft.com/ja-jp/library/envdte80.incrementalsearch.aspx
に、テキスト検索のインクリメンタル検索は見つけました。
コンボボックスの場合は、どの辺りを探せばいいですか?
もしないとすると、
キー入力を監視する。
KeyDown
KeyUp
で入力されたキーを得る。
それにマッチする行だけ抜き出す。
をくり返すのかな、と思うのですが(実装できるかどうかは心もとない)、それで方針的にはオーケー?
0258デフォルトの名無しさん
2008/11/09(日) 17:01:37その見つかったってやつVSの機能の話じゃないの?
もしないとすると、じゃなくてそんなのないだろ
「combobox インクリメンタル」でぐぐってみた?
0259デフォルトの名無しさん
2008/11/09(日) 19:26:31あるよ。ただ機能の名前が間違ってるだけ。
>>257が言ってるのはオートコンプリート機能のことだろう。
0260デフォルトの名無しさん
2008/11/09(日) 19:28:290261デフォルトの名無しさん
2008/11/09(日) 19:48:280262デフォルトの名無しさん
2008/11/09(日) 20:43:19ドロップダウン部分を候補一覧の表示に使いたいって意味かもよ。
0263デフォルトの名無しさん
2008/11/09(日) 21:20:220264デフォルトの名無しさん
2008/11/09(日) 22:08:51ばっちりGoodそのとおりでした。
名前を間違えていました。
というか、普通インクリメンタルサーチだろうと思っていたんだけど、これ、オートコンプリートっていうんですね。
まさかこんな簡単にできるとは…。
大感謝です。
0265246
2008/11/09(日) 22:16:57SQLで"text"が予約語?だったらしく、列名を"text1"に変えたら、
問題は解消されました。
>>253
返答ありがとうございます。
私が作ろうとしているシステム(学校の課題ですが)では、
ビルダーより253さんの仰っている、UpdateCommandなどを自前で実装する
というやり方を使ったほうが良さそうなので、そちらを使おうと思います。
またお世話になると思いますが、その節は宜しくお願い致します。
0266デフォルトの名無しさん
2008/11/09(日) 22:17:54Youtubeの検索ってどんなのでしたっけ。あ、そうそう、これこれ。これを実現できたと思います。
>>262
そうです。ドロップダウン部分のリストを候補に使いたいと思ってました。
0267デフォルトの名無しさん
2008/11/09(日) 22:22:25ttp://msdn.microsoft.com/en-us/library/system.io.filesysteminfo.attributes.aspx
if (fsi.Attributes == FileAttributes.Directory)
{
entryType = "Directory";
}
0268デフォルトの名無しさん
2008/11/09(日) 22:30:39if ( ( fsi.Attributes & FileAttributes.Directory ) == FileAttributes.Directory )
こうでしょう?
0269デフォルトの名無しさん
2008/11/09(日) 22:55:25輪郭部分になぜかピンクの線が写ってしまいます
どうやれば線を消せますか?
http://www2.imgup.org/iup726588.png
フォルダの画像は
http://www.iconspedia.com/icon/folder-3548.html
PNGの256x256 pxを使っています
0270デフォルトの名無しさん
2008/11/09(日) 22:56:51何でこんなに大きいの
0271デフォルトの名無しさん
2008/11/09(日) 22:57:490272デフォルトの名無しさん
2008/11/09(日) 23:01:11100%透明ではない部分が残ってるんだよ
アルファでフォームの背景透過は無理
0274デフォルトの名無しさん
2008/11/09(日) 23:09:320275デフォルトの名無しさん
2008/11/09(日) 23:17:410276デフォルトの名無しさん
2008/11/09(日) 23:21:33透過は不可能なのですか・・?
>>274
すみません、一昨日からずっとこれがわからなくて早とちりしてしまいました><
0277デフォルトの名無しさん
2008/11/10(月) 01:16:47Vistaでは効かん罠。
もちろん、Vistaがまともに動く性能があれば20MBくらいなんてことないけど。
0278デフォルトの名無しさん
2008/11/10(月) 01:31:29bool b = temp.StartsWith(">");
とするとなぜかbはfalseになります。
゚が悪いようでこれがないか他の文字なら何とかなるのですが,
なぜこんなことになるのかがわかりません.
文字コードとか何か関連しているのでしょうか?
0279デフォルトの名無しさん
2008/11/10(月) 01:47:11temp.StartsWith(">", StringComparison.OrdinalIgnoreCase);ならtrueになるんだな。
0280デフォルトの名無しさん
2008/11/10(月) 03:08:09bool b = "か゛".StartsWith("か"); //false
bool b2 = "か゛".StartsWith("が"); //true
カルチャに依存した比較だと次の文字に濁点、半濁点が付いてるかも判断するみたいだな
0281デフォルトの名無しさん
2008/11/10(月) 04:08:00Vistaなら既定ではprivateワーキングセットしか表示しないからガタガタ言う奴もあんまいないっしょ
0282デフォルトの名無しさん
2008/11/10(月) 05:44:57アイコンにアンチエイリアスがかかっているのが原因。
それを取り除くか、P/InvokeでUpdateLayeredWindow()を呼び出す。
0283280
2008/11/10(月) 09:09:53記号の判別の関数だったので思いもよりませんでした.
ありがとうございました.
0284デフォルトの名無しさん
2008/11/10(月) 12:23:38プラグインからの外部プロセスの起動を抑制するにはどうしたらいいでしょうか?
ファイルやレジストリなどは該当するSecurityPermissionAttributeがあったので
それでアクセスを禁止することができたのですが、外部プロセスに関するものは
見あたりません。
ネイティブコードからのアクセスならDllImportなどをリフレクションで調べて弾けるのですが…
0285デフォルトの名無しさん
2008/11/10(月) 13:19:19おまいら、これ聴いとけ!
ビデオ音声
小沢代表 勝谷誠彦 ニコニコ動画 一万人ネット会見 ニコ動 小沢 勝谷 ≪ Scrap Japan
http://scrapjapan.wordpress.com/2008/11/05/ozawa/
これ見とけ!
『史上初!1万人ネット会見』 Part.1‐ニコニコ動画(秋)
http://www.nicovideo.jp/watch/so4847502
0286デフォルトの名無しさん
2008/11/10(月) 13:26:240287デフォルトの名無しさん
2008/11/10(月) 16:10:580288デフォルトの名無しさん
2008/11/10(月) 17:52:26DataGridView内の特定の行だけ罫線のスタイルを変更することって可能?
0289284
2008/11/10(月) 18:42:26ためしに
[EnvironmentPermission(SecurityAction.Deny, Unrestricted = true)]
と基底クラスに付けてみましたが、Process.Start()で普通に
外部プロセスを起動できてしまいます orz
0290デフォルトの名無しさん
2008/11/10(月) 19:13:23Process.Start()はFullTrustをLinkDemandで要求している。
LinkDemandはJIT時に一回チェックするだけなので既定クラスでセキュリティを
制限した時には既にJITが終わっていると考えられる。
プラグインが独立したアセンブリならアセンブリの属性で制限をかけたらだめかな?
0291デフォルトの名無しさん
2008/11/10(月) 21:42:53C#から一時的にPHPのプログラムを呼び出す形でそのPHP用のAPIを使ってみたいのですが、C#から呼び出すことはできるのでしょうか?
0292デフォルトの名無しさん
2008/11/10(月) 21:44:59Process.Start()
何の API かしらんが多分よく探せば C# 用のやつもあるだろうけどな。
0293デフォルトの名無しさん
2008/11/10(月) 21:46:060294デフォルトの名無しさん
2008/11/10(月) 21:50:46そうことをするためにアプリケーションドメインというものがあるのだと思うんだけど
0295デフォルトの名無しさん
2008/11/10(月) 21:50:53ありがとうございます。
>>293
Asteriskを用いたSIPサーバの機能管理ができるAsterisk Managerというものを使用しようとしてAPIを探していました。
自分の英語力不足でPHP用しか見つからなかったのですorz
0296デフォルトの名無しさん
2008/11/10(月) 21:51:33大きなお世話だっつの・・
0297284
2008/11/10(月) 22:00:09ちょっとよくわからないのですが、プラグインのインターフェースが定義されているアセンブリ
にこの属性を適用するということでしょうか?
試しに
[assembly: EnvironmentPermission(SecurityAction.LinkDemand, Unrestricted = true)]
を付けてみましたが、
アセンブリの生成に失敗しました -- アセンブリの SecurityAction 型が無効です。
と怒られてしまいました。どうやらRequest〜という物しか適用できないみたいですが、
RequestOptionalをつけてReadで読み取れるものを指定してやればいいのでしょうか?
Readを指定しないと元のプログラムからもファイルアクセスができなくなってしまうみたいですが…
0298デフォルトの名無しさん
2008/11/10(月) 23:05:33まー>>294みたいにやればできると思うけど、なれてないとイヴバラの道かもな…
っていうかLinkDemandうざすぎるぜ。
パフォーマンス上の理由なんだろうけど。
0299デフォルトの名無しさん
2008/11/10(月) 23:06:22イバラだよっ
0300284
2008/11/11(火) 00:00:57調べてみましたがますます?が増えるばかり… orz
LinkDemandの説明を見てて思ったのですが、プラグインのローダーを動的にコンパイルし、
そいつに[assembly: SecurityPermission(SecurityAction.RequestOptional)]を当てておけば
プラグインのロード時にはFullTrustは取れないと思うのですがこれでいけますかね?
0301デフォルトの名無しさん
2008/11/11(火) 08:42:46DESCryptoServiceProvider、CryptoStreamで暗号化した場合に出力される文字でフォルダ
またはファイル名として使用した場合に問題のある文字は含まれているのでしょうか?。
また出力される文字範囲はどういうものでしょうか?。
0302デフォルトの名無しさん
2008/11/11(火) 09:12:02出力されるのはバイト列だよ。
どんなバイト列でもあり得る。
16進文字列にでもしな。
0303デフォルトの名無しさん
2008/11/11(火) 09:17:28たしかにバイト列でした、ありがとうございます。
0304デフォルトの名無しさん
2008/11/11(火) 10:01:57// AbstractPlugIn.cs プラグイン抽象クラス ここでLocalIntranetに制限
using System.Security.Permissions;
[assembly: PermissionSet(SecurityAction.RequestOptional, Name="LocalIntranet")]
public abstract class AbstractPlugIn {
public abstract void Start();
public void SecStart() { Start(); } // LocalIntranetの制限下でStart()を実行
}
// MyPlugIn.cs プラグイン実装クラス
public class MyPlugIn : AbstractPlugIn {
public override void Start() {
System.Diagnostics.Process.Start("notepad");
}
}
0305304
2008/11/11(火) 10:05:22csc /t:library AbstractPlugIn.cs
csc /t:library /r:AbstractPlugIn.dll MyPlugIn.cs
csc /r:AbstractPlugIn.dll testa.cs
testa
*/
using System;
using System.Reflection;
class Startup {
[STAThread] static void Main() {
try {
AbstractPlugIn plugIn = (AbstractPlugIn) Activator.CreateInstance(Assembly.LoadFrom("MyPlugIn.dll").GetType("MyPlugIn"));
// plugIn.Start();
plugIn.SecStart();
} catch (Exception ex) { Console.WriteLine(ex); }
}}
0306304
2008/11/11(火) 10:14:58プラグインは一般的に動的に読み込むことが多いのでそうしている。
0307デフォルトの名無しさん
2008/11/11(火) 12:49:53if (Directory.Exists(node.Name))
{
Directory.Move(node.Name, path_move);
}
0308デフォルトの名無しさん
2008/11/11(火) 13:00:52node.Nameとpath_moveのパス名の親ディレクトリが違うだけじゃねーの?
0309デフォルトの名無しさん
2008/11/11(火) 13:30:48ヒントありがとうございます。
path_moveの内容がnode.Nameの子フォルダになっていました-;。
すいません。
0310269
2008/11/11(火) 16:36:04ありがとうございます
Win32APIの呼び出しなんてやったことがないのでできるかわかりませんが、がんばってみます(`・ω・´)
0311デフォルトの名無しさん
2008/11/11(火) 17:26:07Webページから、クライアントのローカルのEXEかDLL内のAPIをコールしたいと思ってます。
通常のブラウザのセキュリティでは無理だと思いますので、そのWebサイトは信頼済みサイトに登録してあるのは前提です。
ローカル資産にアクセスするDLLかなにかをインストールしてIEのプラグインのようなものを作りたいのですが、
C#で可能ですか?
また、ヒントとなるサイト等ありましたら、教えてください。
0312デフォルトの名無しさん
2008/11/11(火) 17:33:15ActiveXコントロール
0314284
2008/11/11(火) 17:43:13おお、うまくいきました!
ですが、本体のDLLに組み込んだところ起動時にエラーが… orz
書いてくださったサンプルではうまくいったので、もう少し悩んでみます。ありがとうございました。
0315デフォルトの名無しさん
2008/11/11(火) 18:29:12せっかくだからVC++で作ったらよか
0316デフォルトの名無しさん
2008/11/11(火) 18:58:15while ((readLen = cs.Read(bs, 0, bs.Length)) > 0)
{
fs_out.Write(bs, 0, readLen);
}
にあるのでしょうか?
FileStream fs = new FileStream(path_in, FileMode.Open, FileAccess.Read);
CryptoStream cs = new CryptoStream(fs, transform, CryptoStreamMode.Read);
FileStream fs_out = new FileStream(path_out, FileMode.Create, FileAccess.Write);
byte[] bs = new byte[256];
int readLen;
while ((readLen = cs.Read(bs, 0, bs.Length)) > 0)
{
fs_out.Write(bs, 0, readLen);
}
fs_out.Close();
cs.Close();
fs.Close();
0317316
2008/11/11(火) 19:04:400318311
2008/11/11(火) 19:12:50C++だと、
ttp://d.hatena.ne.jp/propella/20061027/p1
こことか、
ttp://www14.big.or.jp/~ken1/tech/tech17.html
ここに作り方があったんで、わかったんですけど、
C#だと、Yahooツールバーみたいなのを作る参考サイトはあったんですが、Webページで使用するActiveXを作るのに
参考になるサイトがなくて…
0319デフォルトの名無しさん
2008/11/11(火) 19:14:550320デフォルトの名無しさん
2008/11/11(火) 19:18:46ActiveXってCOMインターフェイス実装して
regasmのときにレジストリに書くだけじゃね
0321デフォルトの名無しさん
2008/11/11(火) 19:21:220322デフォルトの名無しさん
2008/11/11(火) 19:37:15タイムラインのグラフを表わすオブジェクトをどうやって実装しようか悩んでいます。
動作としては、
・横に細長い単色で塗りつぶしたオブジェクト
・ドラッグすることにより左右にのみ動かせる
・左右のみ端をドラッグすることによってサイズ変更ができる
・移動とサイズの変更は8ドット単位
・ダブルクリックすることによりイベントを発生させる
実装方法としては
・描画からイベント処理まですべて自分で実装する
・いずれかのコントロールを継承して実装する
のどちらがよいのか、
コントロールを継承する場合は、
・どのコントロールを継承して、
・どのようにプロパティを設定して、
・どのイベントを処理すればよいのか
どなたかヒントを下さるとありがたいです。
0323デフォルトの名無しさん
2008/11/11(火) 19:48:420324デフォルトの名無しさん
2008/11/12(水) 00:04:52そういうのは大人しくControlから派生したほうがいいよ
0326デフォルトの名無しさん
2008/11/12(水) 15:29:01「○○○(コントロール名)は宣言されていないか、または割り当てられていません」
というエラーが出てデザイナで表示されなくなってしまうことがあります。
.Designer.csを見るとちゃんと宣言されているし、InitializeComponent()の中でnewされている
ようなのですが…
直接このファイルを変更したわけでもありません。
どうすればいいのでしょうか?
0327デフォルトの名無しさん
2008/11/12(水) 15:48:51それでだめならウインドウを閉じてからプロジェクトをコンパイル後、再度デザイナウィンドウを開く。
0328デフォルトの名無しさん
2008/11/12(水) 16:03:21この前同じ感じになって結局OS入れなおしたよ
0329デフォルトの名無しさん
2008/11/12(水) 17:01:31エスパーよろしく
0330デフォルトの名無しさん
2008/11/12(水) 17:07:240331デフォルトの名無しさん
2008/11/12(水) 17:29:49だったら俺もパブリックに産まれてきたかったな
0332デフォルトの名無しさん
2008/11/12(水) 17:32:240333デフォルトの名無しさん
2008/11/12(水) 18:17:36Designer.csからコードが消えてない時があるね。
コンパイルエラー出るから手作業で消せばいいだけだけど。
でもイベントの削除の時はコードが消えるときと消えないときがあるから面倒。
0334デフォルトの名無しさん
2008/11/12(水) 18:57:00フィールド名じゃなくて型名だから
0335デフォルトの名無しさん
2008/11/12(水) 21:41:33そういうコンポーネント買うしかないんですか?
0336デフォルトの名無しさん
2008/11/12(水) 23:32:110337デフォルトの名無しさん
2008/11/13(木) 00:07:31Springプロパティをtrueに設定したダミーのToolStripStatusLabelを左に置く
0338デフォルトの名無しさん
2008/11/13(木) 00:07:560339デフォルトの名無しさん
2008/11/13(木) 00:14:450340デフォルトの名無しさん
2008/11/13(木) 00:56:31例外の発生位置はTargetSiteでわかりますが、
例外のキャッチ位置はわざわざ自分でnewしなおすかRefrection.MethodBase.GetCurrentMethod()しないとだめでしょうか?
0341デフォルトの名無しさん
2008/11/13(木) 01:14:32firstlinecell1 firstlinecell2 firstlinekeywordcell3
secondlinecell1 secondlinekeywordcell2 secondlinecell3
thirdlinekeywordcell1 thirdlinecell2 thirdlinecell3
とデータがあるとき。keywordにマッチしたセルを出力するには、どうしたらいいですか?
using System.IO;
string fileName = ("c:\celltest.txt");
string[] lines = File.ReadAllLines(fileName, Encoding.GetEncoding("Shift_JIS"));
string[] cell = line.Split('\t');
foreach (string line in lines)
{
Console.WriteLine(cell[2]); //3セル目を出力
if (cell.Contains("keyword")) Console.WriteLine(cell); //ここがうまくいかない。
if (cell.Contains("keyword")) Console.WriteLine(cell.Contains("keyword"));//これもだめ。
Console.WriteLine(cell.Contains("keyword")); //これもだめ。
}
}
0342デフォルトの名無しさん
2008/11/13(木) 01:25:17lineってどっから出てきたの?
linesの各要素を'\t'でSplitしたいんじゃないの?
>if (cell.Contains("keyword")) Console.WriteLine(cell); //ここがうまくいかない。
>if (cell.Contains("keyword")) Console.WriteLine(cell.Contains("keyword"));//これもだめ。
>Console.WriteLine(cell.Contains("keyword")); //これもだめ。
cellじゃなくてlineじゃないの?
0343デフォルトの名無しさん
2008/11/13(木) 01:28:33foreach(string line in lines)
foreach(string cell in line.Split('\t'))
if(cell.Contains("keyword"))
Console.WriteLine(cell);
0344デフォルトの名無しさん
2008/11/13(木) 01:31:340345デフォルトの名無しさん
2008/11/13(木) 01:32:54string[] lines = File.ReadAllLines(fileName, Encoding.GetEncoding("Shift_JIS"));
foreach (string line in lines)
{
string[] cell = line.Split('\t');
Console.WriteLine(cell[2]); //3セル目を出力
if (cell.Contains("keyword")) Console.WriteLine(cell); //ここがうまくいかない。
if (cell.Contains("keyword")) Console.WriteLine(cell.Contains("keyword"));//これもだめ。
Console.WriteLine(cell.Contains("keyword")); //これもだめ。
}
0346デフォルトの名無しさん
2008/11/13(木) 01:41:45そうでした。できました。
ありがとうございました。
0347デフォルトの名無しさん
2008/11/13(木) 01:50:27コピペしろ
0348デフォルトの名無しさん
2008/11/13(木) 02:05:280349デフォルトの名無しさん
2008/11/13(木) 02:16:29Where を使えば良いのに。
0350デフォルトの名無しさん
2008/11/13(木) 15:28:010351デフォルトの名無しさん
2008/11/13(木) 15:33:08ブロックを組み合わせてってやつとかか?
0352デフォルトの名無しさん
2008/11/13(木) 15:34:170353デフォルトの名無しさん
2008/11/13(木) 15:34:240354デフォルトの名無しさん
2008/11/13(木) 15:41:260355デフォルトの名無しさん
2008/11/13(木) 20:05:09xamlではオブジェクト(?)を、xmlみたいに書きますが、
マウスのドラッグで、重なりを変えたいときには、
直書きしているとむずかしいと思います。
XAMLプログラミング WPFアプリケーションの概要と開発
エッセンシャルWPF
はざっとめくったのですが、いまいちよくわからん。
<Grid>
<Image Margin="0,0,0,0" Name="background"
Source="/View;component/background.png" />
<Image Margin="0,152,0,-34" Name="lines"
Source="/View;component/lines.png" />
<TextBox Background="Transparent"
Name="TextBox1" FontSize="14">
</TextBox>
<TextBox Background="Transparent"
Height="23" HorizontalAlignment="Right" Margin="0,117,94,0"
Name="TextBox2" VerticalAlignment="Top" Width="120" />
</Grid>
とあるときに、クリックやドラッグで重ねの順番を変えたいときには、なにをしたらいいんでしょう?
0356デフォルトの名無しさん
2008/11/13(木) 20:11:450357デフォルトの名無しさん
2008/11/13(木) 21:44:09早速ありがとうございます。
Panel.ZIndex添付プロパティ、使ってみました。
おお、すごい。こうなるんですね。おなじ値だと、おなじレイヤーになるとか、番号が飛んでも平気とか、かなり柔軟ですね。
つづいて、ここに変数を使うにはどうするんだと考えて、
Panel.ZIndex="m"
と書き、
.csのフィールドに、
Int32 m = 6;
とか入れてみたのですが、
Int32 m = 6;
エラー 1 無効なトークン '=' が クラス、構造体またはインターフェイスのメンバ宣言で使用されています。 D:\smartcalendar\PileDesktop\simpleView\simpleView\view.xaml.cs 35 7 simpleView
Panel.ZIndex="m"
エラー 2 m は Int32 の有効な値ではありません。
とエラーになってます。これはどのようにしたらよいでしょう?
0358デフォルトの名無しさん
2008/11/13(木) 21:48:03Panel.GetZIndex(element);
Panel.SetZIndex(element, m);
の形で使う
0359デフォルトの名無しさん
2008/11/13(木) 21:58:34会社のPCでスクリーンセーバーをカットしたいのですが
(アドミニ権限がありません)
いい方法が見つかりません。
どなたか良いお知恵をお貸し下さい。
お願いします。
0360デフォルトの名無しさん
2008/11/13(木) 22:02:53働け
0361デフォルトの名無しさん
2008/11/13(木) 22:10:490362デフォルトの名無しさん
2008/11/13(木) 22:27:34SS起動フラグ立てたり定期的にマウスを1ドットずらしたり使ってないキーを押下するエミュレーションを作ったり
いや俺は作り方知らんけど
0363デフォルトの名無しさん
2008/11/13(木) 22:33:020364デフォルトの名無しさん
2008/11/13(木) 22:36:510365デフォルトの名無しさん
2008/11/13(木) 22:43:090366デフォルトの名無しさん
2008/11/13(木) 22:45:58http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=13924&forum=7
0367デフォルトの名無しさん
2008/11/13(木) 22:48:47WM_SYSCOMMANDに応答するだけのウィンドウ作ればいいんじゃね?
0368デフォルトの名無しさん
2008/11/13(木) 22:51:27だとしたらそんな設計っておかしくないか?
まあここで言っても仕方がないことだが
0369デフォルトの名無しさん
2008/11/13(木) 23:00:34どうやってるのかは知らないけど。
0370デフォルトの名無しさん
2008/11/13(木) 23:00:420371デフォルトの名無しさん
2008/11/13(木) 23:01:02スクリンセーバーを起動させないのはめんどくさかった記憶がある。
ちとメモを探してみるよ。
0372デフォルトの名無しさん
2008/11/13(木) 23:02:470373デフォルトの名無しさん
2008/11/13(木) 23:06:29SPI_SETSCREENSAVEACTIVE を FALSE に。
C# じゃないけど。
0374デフォルトの名無しさん
2008/11/13(木) 23:17:57msdnを見ました。
UIElementってなんだ…?
public static int GetZIndex (UIElement element)
わからないのでとりあえず
Panel.GetZIndex(element);
Panel.SetZIndex(element, m);
を.csのフィールドに書いたら、
エラー 1 無効なトークン '(' が クラス、構造体またはインターフェイスのメンバ宣言で使用されています。
とかいわれてます。
もうすこしアドバイスを。
0375デフォルトの名無しさん
2008/11/13(木) 23:24:52メソッドの中に書けw
Get/SetZIndexメソッドとその引数の意味はMSDNに書いてある。
0376デフォルトの名無しさん
2008/11/13(木) 23:43:06element プロパティ値を適用する要素。
value この要素が z 面で表示される順序。
あり、パラメータの定義はわかったけど、「プロパティ値を適用する要素。」ってなんだ!?
コードのほうは、.csに、
public static void SetZIndex(UIElement element, int value){
int m = 5;
Panel.GetZIndex(element);
Panel.SetZIndex(element, m);}
として、とりあえずコンパイルは通ったけど、起動しない…。
マウスのドラッグで、重なりを変えたいので、マウスイベントをメソッドにする必要があります。
マウスのクリックのイベントとは、
・MouseDownイベント
・Clickイベント
・MouseClickイベント
・MouseUpイベント
からなるそうなので、ドラッグのイベントとは、
・MouseDownイベント
・Clickイベント
・MouseClickイベント
・MouseMoveイベント(そんなのあるの?)
・MouseUpイベント
ということでしょうか。
0377デフォルトの名無しさん
2008/11/13(木) 23:46:08m = button.ZIndex + 1;
button.ZIndex = m;
と書くところを、添付プロパティでは次のように書く
m = Panel.GetZIndex(button);
Panel.SetZIndex(button, m);
0378デフォルトの名無しさん
2008/11/13(木) 23:57:430379デフォルトの名無しさん
2008/11/14(金) 00:00:130380デフォルトの名無しさん
2008/11/14(金) 00:46:37TreeViewのScrollableを有効にして、Drag&Drop中にTreeViewの上部や
下部にマウスを移動したときにスクロールするようにしたいのですが、
ScrollBarクラスのValueのようなものがなくてやり方が分かりません。
よろしくお願いします。
0381デフォルトの名無しさん
2008/11/14(金) 00:48:160382デフォルトの名無しさん
2008/11/14(金) 01:09:31Office2007に関する内容です。
Word2007で表を追加すると、画面上部にレイアウトリボンが表示され、
レイアウトリボンの中では、表の各セルのサイズがわかります。
このサイズ(特に高さ)をC#でプログラム的に取ってきたいのですが、どのようにすればよいでしょうか?
教えていただけると幸いです。
0383デフォルトの名無しさん
2008/11/14(金) 08:57:070384デフォルトの名無しさん
2008/11/14(金) 09:10:45その疑問に至れる発想力はすごい。
0385デフォルトの名無しさん
2008/11/14(金) 09:24:250386デフォルトの名無しさん
2008/11/14(金) 10:04:59C#は言語だけどASP.NETは言語じゃないよ
0387デフォルトの名無しさん
2008/11/14(金) 19:22:150388デフォルトの名無しさん
2008/11/14(金) 19:54:53超初心者の質問って脳をものすごく活性化させてくれるよね
0389デフォルトの名無しさん
2008/11/14(金) 20:56:53GetWindowRect()を使ってみたくて
Windowsフォームアプリケーションで生成されるFrom1の
using System.Windows.Forms; と namespace WindowsFormsApplication1 の間に検索した
[StructLayout(LayoutKind.Sequential)]
private struct RECT
{
public int left;
public int top;
public int right;
public int bottom;
}
[DllImport("user32.dll")]
private static extern int GetWindowRect(IntPtr hwnd, ref RECT lpRect);
をコピペしました
ほかにボタンをForm1に貼り付ける等の手を加えていませんがエラーがでます
「」で囲んだ部分がエラーの波線が表示されたところです
private struct 「RECT」 {→名前空間で定義された要素は明示的に private、protected、または protected internal に宣言することはできません。
[DllImport("user32.dll")「]」→修飾子 'extern' がこの項目に対して有効ではありません。
private static extern 「int」 GetWindowRect(IntPtr hwnd, ref RECT lpRect);→クラス、デリゲート、列挙型、インターフェイス または構造体が必要です。
外部dllの関数を使うためにはこれらをどのように修正すればいいですか?
0390デフォルトの名無しさん
2008/11/14(金) 21:10:05一瞬どこがおかしいのか分からなかったが、そこに貼っちゃいかんw
partial class Form1 : Form
{
【ここに貼る】
...
}
あと、 using System.Runtime.InteropServices; も忘れずにね。
0391デフォルトの名無しさん
2008/11/14(金) 21:11:42{
internal struct RECT {略}
[DllImport("user32.dll")] internal static extern int GetWindowRect(IntPtr hwnd, ref RECT lpRect);
}
こうするのがMS推奨
0392デフォルトの名無しさん
2008/11/14(金) 21:13:060393デフォルトの名無しさん
2008/11/14(金) 21:25:230394デフォルトの名無しさん
2008/11/14(金) 21:32:030395デフォルトの名無しさん
2008/11/14(金) 21:32:06同じ名前である。
だからIntPtrなどを使ってうまく書けば32ビット64ビット両方で動くプログラムが書ける。
0396デフォルトの名無しさん
2008/11/14(金) 22:00:09… 〜32 と付いた 64 bit の DLL が。
0397デフォルトの名無しさん
2008/11/14(金) 22:14:53System.Runtime.InteropServices.ComTypes.FILETIME
をメンバに持つ構造体があるのですが、これから直接DateTimeを得る方法がわかりません。
DateTime.FromFileTimeは引数がlong型一つだけですし、
現状では、FileTimeToSystemTimeで一度SYSTEMTIMEに変換し、
年からミリ秒までを、DateTimeのコンストラクタの引数に与えているのですが、回りくどいような気がするのです。
0398デフォルトの名無しさん
2008/11/14(金) 22:17:340399デフォルトの名無しさん
2008/11/14(金) 22:19:470400デフォルトの名無しさん
2008/11/14(金) 22:32:340401397
2008/11/14(金) 22:57:21自分の理解ではハードルが高いですが、一つ一つ試してみます。
回答ありがとうございました。
0402デフォルトの名無しさん
2008/11/15(土) 00:06:11ありがとうございました
0403デフォルトの名無しさん
2008/11/15(土) 01:42:01codezineのソースを元にしようと思って改良しているのですが、
http://codezine.jp/article/detail/477?p=1
じっさいに受信しようとしたら、
private static void Mailtest_Sample1()
となっていて、staticになっているため、変数を使用できません。
string = mailtext
で設定した変数に、1通ごとのメールの本文を入れようとしています。
private void Mailtest_Sample1()
のようにstaticを削除すると、
エラー 1 静的でないフィールド、メソッド、またはプロパティ 'PopMail.PopMailMain()' で、オブジェクト参照が必要です
static void Main(string[] args) { PopMail(); }
とエラーになります。
staticを削除してかつ動くようにするには、どうすればいいんでしょう?
0404デフォルトの名無しさん
2008/11/15(土) 02:17:26>staticになっているため、変数を使用できません。
意味分からん。いつからstatic変数が使用できないようになったんだよ。
>string = mailtextで設定した変数に
意味分からん。いつから予約語に代入できるようになったんだよ。
>staticを削除すると
意味分からん。いつから静的メソッドからインスタンスメソッドが呼び出せるようになったんだよ。
0405デフォルトの名無しさん
2008/11/15(土) 02:20:230406デフォルトの名無しさん
2008/11/15(土) 02:24:30new Program().PopMail()
かなんかにすりゃ動くと思うけど
0407デフォルトの名無しさん
2008/11/15(土) 02:42:02{
PopTest();
MailTest();
}
private static void PopTest(){ ... }
private static void MailTest()
{
MailTest_Sample1();
MailTest_Sample2();
}
private static void MailTest_Sample1(){ ... }
private static void MailTest_Sample2(){ ... }
0408デフォルトの名無しさん
2008/11/15(土) 02:44:210409デフォルトの名無しさん
2008/11/15(土) 02:58:00これを回避する方法はあるでしょうか?
具体的には、System.Drawingを参照設定に含めているにもかかわらず、
CS0234が表示されたりします。ビルドすればすべて消えるのですが、なんだか気持ちが悪いです。
0410デフォルトの名無しさん
2008/11/15(土) 03:00:240411デフォルトの名無しさん
2008/11/15(土) 08:58:27>>404
string mailtext = null;
mailtext = pop.GetMail((string)list[i]);
でした。
静的メソッドからインスタンスメソッドって呼べないですよね?
でも、Mainメソッドは静的メソッドですよね?
じゃどうしてMainメソッドからインスタンスメソッドは呼べるんですか?
>>406
とりあえず動かなかった…です。
0412デフォルトの名無しさん
2008/11/15(土) 08:59:04string mailtext = null;
static void Main(string[] args) //ここでアセンブリ参照がないエラー。
{
PopTest(); //受信処理
//MailTest(); //表示処理
}
private void PopTest(){
mailtext = pop.GetMail((string)list[i]);
if (テキストの場合) MailTest_Sample1();
elseif (mimeの場合) MailTest_Sample2();
}
/*private static void MailTest()
{
MailTest_Sample1();
MailTest_Sample2();
}*/
private void MailTest_Sample1(){
Console.WriteLine(mailtext);
}//テキストの場合
private void MailTest_Sample2(){
Console.WriteLine(mailtext);
Console.WriteLine();//添付部分
}//mimeの場合
のように書き換えてます。
受信したときに取得したmailtextをそのまま表示で使おうと思ったら、staticではだめだったので、staticを削除しました。
0413デフォルトの名無しさん
2008/11/15(土) 09:08:50static void Main(string[] args)
private static void PopTest()
private static void MailTest()
private static void MailTest_Sample1()
private static void MailTest_Sample2()
は、ぜんぶスタティックメンバですか?
インスタンスメンバにするには、
private void PopTest()
private void MailTest()
private void MailTest_Sample1()
private void MailTest_Sample2()
と、staticをとればいいかと思ったけど、それじゃだめ?
0414デフォルトの名無しさん
2008/11/15(土) 09:18:51>>405
0415デフォルトの名無しさん
2008/11/15(土) 10:53:570416デフォルトの名無しさん
2008/11/15(土) 11:13:490417デフォルトの名無しさん
2008/11/15(土) 13:18:42あってるよ。
0418デフォルトの名無しさん
2008/11/15(土) 13:21:080419デフォルトの名無しさん
2008/11/15(土) 13:26:45スタティックみたいに使えないことも無いけどな
0420デフォルトの名無しさん
2008/11/15(土) 13:46:440421デフォルトの名無しさん
2008/11/15(土) 13:50:14参照が残ってなければガベコレが起きる
0422デフォルトの名無しさん
2008/11/15(土) 14:02:190423デフォルトの名無しさん
2008/11/15(土) 14:13:50>静的メソッドからインスタンスメソッドって呼べないですよね?
呼べません。
>でも、Mainメソッドは静的メソッドですよね?
そうです。
もしインスタンスメソッドならフレームワークから呼び出せません。
>じゃどうしてMainメソッドからインスタンスメソッドは呼べるんですか?
new演算子でインスタンスを作成し、そのインスタンスメソッドを呼び出し
てるからです。
0424デフォルトの名無しさん
2008/11/15(土) 14:20:000425デフォルトの名無しさん
2008/11/15(土) 16:09:46静的メソッドからインスタンスを呼ぶときには、new インスタンスの所属するクラス名とする。たとえば、メインからFormのクラスを呼ぶときには、
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form());
}
とする、という理解でよいでしょうか?
そうなると、先の例(>>412、>>407)でいうと、これはクラスはひとつしかない。したがって、クラスを呼ぶことはできない? となってしまうのですが。
それとも、静的メソッドからインスタンスを呼ぶときには、new インスタンス名でいいんでしょうか?
それなら、
string mailtext = null;
static void Main(string[] args) //ここでアセンブリ参照がないエラー。
{
new PopTest(); //受信処理
//MailTest(); //表示処理
}
private void PopTest(){ ... }
でよい、ということになる?? ためしたけどならない。
付随する疑問。
インスタンスからインスタンスを呼ぶときには、newは必要なの? 必要ないように思いますが。
インスタンスから静的メソッドを呼ぶときには、単にメソッド名をかけばいい?
インスタンスの作成は、
データ型 変数名 = new コンストラクタ;でおこない、コンストラクタ名はクラス名とおなじにする、とあります。
Application.Run(new Form());
の場合、データ型と変数名は省略されている、と考えればいいの?
省略されているとして、なにが省略されているの?
0426デフォルトの名無しさん
2008/11/15(土) 16:17:420427デフォルトの名無しさん
2008/11/15(土) 16:21:16これはstaticメソッド
Applicationで始まってるのは全部そう
List<int> list = new List<int>();
list.Add(1);
これはインスタンスメソッド
インスタンスメソッドはインスタンスをnewしてから呼び出す
PopTestだったら、そのメソッドがあるクラスをHogeとすると
Hoge hoge = new Hoge();
hoge.PopTest()
こうやって呼び出す
0428デフォルトの名無しさん
2008/11/15(土) 16:21:180429デフォルトの名無しさん
2008/11/15(土) 16:23:36{
public void Run()
{
}
0430デフォルトの名無しさん
2008/11/15(土) 16:24:380431デフォルトの名無しさん
2008/11/15(土) 16:34:05static void Main(string[] args)
{
Hoge hoge = new Hoge();
hoge.Run(args);
}
class Hoge
{
public void Run(string[] args)
{
// thisは自分自身のインスタンスを指す(省略可能)
this.PopTest();
this.MailTest();
}
private void PopTest() {略}
private void MailTest() {略}
}
0432デフォルトの名無しさん
2008/11/15(土) 16:35:19インスタンスは型(クラス)をもとにして作られた実体
stringと"この文字列"の関係が、型とインスタンスの関係
インスタンスに関連付けられたメソッドがインスタンスメソッド
>>428
理屈がわからないならともかく、書き方の形式がわからないのは
どっかのサンプル打ち込んで動かして慣れろとしか言えないでしょ
0433デフォルトの名無しさん
2008/11/15(土) 16:49:34なにか「ゲームの世界を支配するルール」を捕らえることに興味があるようだけど、
プログラミング言語の学習方法としてはそういうアプローチはダメ過ぎる。
静的メソッドとかインスタンスとかクラスといったものの意味を鍵カッコに入れて
・[静的メソッド]から[インスタンスメソッド]を呼ぶことはできない。
みたいなものををつらつら並べて記憶することなんかに何の意味も意味もないんだよ。
それは「ゲームのルール」じゃなくて、基本法則から論理的に導かれる
ただの論理的必然に過ぎないんだから。
大事なのはプログラミングの世界の基本法則(そもそもクラスって何よ?、とか)
をきちんと理解することなんだよ。
0434デフォルトの名無しさん
2008/11/15(土) 16:55:030435デフォルトの名無しさん
2008/11/15(土) 16:55:29世界の基本法則の違いがわかりますん
まあ帰納と演繹ってことなんだろうけど
0436デフォルトの名無しさん
2008/11/15(土) 19:04:570437デフォルトの名無しさん
2008/11/15(土) 19:08:340438デフォルトの名無しさん
2008/11/15(土) 19:39:39C#を使って、 ttp://smdn.invisiblefulmoon.net/mnemorepos/20050216-00.html
を書いてみたのですが、AxWebBrowser::GetOcx( ) の参照から SetClientSite(this as IOleClientSite) すると、
その後OcxのContainerがAccessViolation状態になり、Navigate2を使用すると、TargetInvocationExceptionが発生してしまいます。
これは移植の時にミスをしているのでしょうか?それともサンプルの時点で発生する問題なのでしょうか。
インターフェースの実装部分は、GetContainer以外は NOTIMPL(=-2147467263)などを返したりしていますが、どれも呼び出された形跡はありませんでした。
COMの定義などはReflectorを使って、FrameworkのDLLから必要部分を抜き出して使用しています。
0439デフォルトの名無しさん
2008/11/15(土) 19:43:49VB のサンプルで試してみればいいじゃん・・・
0440デフォルトの名無しさん
2008/11/15(土) 20:11:48ソースみないとナントモカントモ
0441デフォルトの名無しさん
2008/11/15(土) 22:26:250442デフォルトの名無しさん
2008/11/15(土) 22:56:510443デフォルトの名無しさん
2008/11/15(土) 23:04:370444438
2008/11/15(土) 23:17:32最初に書いてあるusingは、「名前空間.クラス名」と書くと長くなるのを「クラス名」と書けるようにする為のものです。
ソース内で単にクラス名だけを書くと、「同じ名前空間内」→「usingで指定されている名前空間内」の順に検索されます。
つまり、同じ名前空間にあればusingは必要ありません。
それより、メソッドはクラスに属していないと駄目とか、そっちのほうに引っかかりそう。
入門サイトで基本的な文法を勉強して、あとはVisualStudioに任せて書いてみるのが一番の近道かと。
>439 VBで今書いてるのですが、今まで書いたことがないのでなかなかコンパイルまで辿り着けません。
>440 このスレで使ってるロダってありますか?後、あげるときはソリューションごとの方がいいでしょうか?
0445デフォルトの名無しさん
2008/11/15(土) 23:52:55気にしないでどこでもいいからとりあえず一式上げてみればいいんじゃね?
個人特定されるような情報は入れないようにしてさ・・・
たぶんこのスレの人間なら大体の人間一瞬でわかると思うぞ
0446デフォルトの名無しさん
2008/11/16(日) 00:12:04分からないところが出てきたので教えてください。
public Person(string name, int age)
{
this.name = name;
this.age = age > 0 ? age : UNKNOWN;
}
↑この部分は分かります。
public Person(string name) : this(name, UNKNOWN)
{
}
↑この部分の、「:」がどういう意味を持って使われているのか、明確にしたいです。
以降の用法はなんと呼ばれているのでしょうか?
0447デフォルトの名無しさん
2008/11/16(日) 00:25:30thisの他にbaseなんてのもあるけどこっちは基本クラスのコンストラクタを実行
http://msdn.microsoft.com/ja-jp/library/ms173115(VS.80).aspx
0448デフォルトの名無しさん
2008/11/16(日) 00:28:26クラスを継承させた場合、親クラスのどのコンストラクタを呼ぶのかを指定するため、「:base(...)」と書いて上げます。
何も書かなければ、デフォルトコンストラクタ(引数無いヤツ)が呼ばれます。
親クラスではなく、自クラスの別のコンストラクタを呼ばせたい時は、「: this(...)
と書きます。
呼び名は知りません。
0449デフォルトの名無しさん
2008/11/16(日) 00:35:13どういう使い方なのかわからないけど、クラスを派生させる場合は
コンストラクタを継承できないので、基本クラスのコンストラクタを明示的に
呼び出す必要がある。そのためのキーワードが【:】。
基本クラスのコンストラクタが既定(引数なし)の場合は呼び出さなくても使える。
コンストラクタが無い場合はコンパイラが勝手に用意する。
コロンはラベルなんかにも使うからちゃんと入門本などで理解を深めた方がよい。
0450デフォルトの名無しさん
2008/11/16(日) 00:40:15C++ だとそれは initializer 構文とかいうけども。
C# だとメンバー変数のイニシャライズに : 使わなくなったしなぁ。
なんて呼べばいいんだろう。
0451デフォルトの名無しさん
2008/11/16(日) 00:48:26C# の仕様書確認してみたら、「constructor initializers」という言葉はあった。
0452438
2008/11/16(日) 00:50:28受信pass:
csharp
>>446
以前外人さんとのトークで、コンストラクタのconjunction(連結)なんて呼ばれてたような記憶があります。
正式なものかは知りませんが、そういわれた時に自分はピンときたのでおそらく通じると思います。
用法はほかの方が書いている通りです。
0453デフォルトの名無しさん
2008/11/16(日) 00:52:290454デフォルトの名無しさん
2008/11/16(日) 01:07:27とでも明示的に呼べばいいと思うんだけど。
ところで、C#でもVBでもこの別のコンストラクタの呼び出しの前には
コードを一切書けないわけだけど、これはどうしてなんだっけ?
別のコンストラクタを呼ぶときのパラメータの値を作りたいときなんかに
それ専用のメソッドを作らなきゃならなくて不便で仕方がないと思うんだけど。
0455デフォルトの名無しさん
2008/11/16(日) 01:13:060456デフォルトの名無しさん
2008/11/16(日) 01:16:440457446
2008/11/16(日) 01:39:10自分で調べたかったのですが、手元にある参考書のどの章を
参考にしたらいいか分からなくて困っておりました。
みなさんに教えていただいたことで、理解が深まりました。
ありがとうございました。
0458デフォルトの名無しさん
2008/11/16(日) 02:21:51環境:C# 2005 VisualStadio
datagridviewでエクセルのようにコピー&ペーストがしたくて、
以下のサイトを参考にしているのですが…、
ttp://dobon.net/vb/dotnet/datagridview/clipboardcopy.html#paste
とりあえず、コードをそのままコピペして動作を見ようと思い、
コピーはできますが、何故かペーストされません。
プログラミングの経験が少ない為、どこが原因かすら分からない状況で
厚かましくて申し訳ないのですが、どこをどうすればいいのかご教授下さい orz
また、ペースト機能について参考になるHPがあれば教えて頂けると助かります。
0459デフォルトの名無しさん
2008/11/16(日) 02:37:00○ご教示ください
×ご教授ください
まずは日本語からやり直せ
0460デフォルトの名無しさん
2008/11/16(日) 04:35:19ひとまずテキストボックスとかの単一のデータがコピーペーストは出来るんだろうな?
出来ないんだったらそこから始めるべきだと思う
0461269
2008/11/16(日) 05:10:52http://www.pinvoke.net/default.aspx/user32/UpdateLayeredWindow.html
このページを参考に(といってもコピペですが)書いてみたのですが画像が表示されません
一応フォームのサイズは画像のサイズに変更されています
呼び出し元?は下記のようになっています
private void Form1_Load(object sender, EventArgs e)
{
this.FormBorderStyle = FormBorderStyle.None;
Bitmap bitmap = new Bitmap(@"C:\aaa.png");
Class1 class1 = new Class1();
class1.SetBackground(this, bitmap);
}
よろしくお願いいたします
0462デフォルトの名無しさん
2008/11/16(日) 05:21:350463デフォルトの名無しさん
2008/11/16(日) 10:20:49もう流れてるよ
0464デフォルトの名無しさん
2008/11/16(日) 11:13:26基本的にその数って有限でしょ?
Class Hoge
{
private int status1;
privete int status2;
・・・・
private int statusn;
}
でも実際は状況に応じて記憶させるべきパラメータの数は変わるわけでそう言う場合には
どう対処したらいいんだろうか?
0465デフォルトの名無しさん
2008/11/16(日) 11:14:380466デフォルトの名無しさん
2008/11/16(日) 11:50:430467デフォルトの名無しさん
2008/11/16(日) 12:02:37それよりもListじゃね?
0468デフォルトの名無しさん
2008/11/16(日) 12:22:05すべての状態が埋まるのなら、Listでもいいと思うけど、
1, 3, 5の状態だけのような、疎な配列になるのなら、Dictionaryの方が適しているだろうね。
0469デフォルトの名無しさん
2008/11/16(日) 12:24:090470デフォルトの名無しさん
2008/11/16(日) 12:24:12推奨されていないかどうかは知らないが、
巨大になるとメンテしづらくなるから、適度に分割しといた方がいいよ思うよ
0471デフォルトの名無しさん
2008/11/16(日) 12:51:15region を上手く使ってあれば、ファイルサイズが大きくても気にならないと思う。
ただ、クラスとしてまとめられる処理はまとめた方が可読性は向上する。
0472デフォルトの名無しさん
2008/11/16(日) 13:02:07外部からのアクセス手段としてはどこに書くのがオススメですか
0473デフォルトの名無しさん
2008/11/16(日) 13:13:12…
#endregion
#region パブリックメソッド
…
#endregion
とか纏めておくとわかりやすい。
いらないときは閉じておけるのがいい。
0474デフォルトの名無しさん
2008/11/16(日) 13:19:400475デフォルトの名無しさん
2008/11/16(日) 13:25:38(Formの)外部からコントロールのプロパティにアクセスする、
などという絵に描いたような糞設計はまともな神経してたらしません。
0476デフォルトの名無しさん
2008/11/16(日) 13:35:34メソッドで、さらにClass Aのオブジェクトを作ってるという素人目にはカオスにしか見えない
テクニックを披露している方々をよくお見受けするんですが、このようにクラスの中でその
クラスを使うという手法は一般的どういうときに使えるんでしょうか?
0477デフォルトの名無しさん
2008/11/16(日) 13:45:52シングルトンのことか?
0478デフォルトの名無しさん
2008/11/16(日) 13:50:350479デフォルトの名無しさん
2008/11/16(日) 13:54:04Class A
{
void Method()
{
A objA = new A();
(以下objAをつかった処理)
}
}
みたいな感じのことです
0480デフォルトの名無しさん
2008/11/16(日) 13:56:12そのメソッドはstaticになってないの?
0481デフォルトの名無しさん
2008/11/16(日) 13:57:19そこらへんはよく覚えていません(´・ω・`)・・・
0482デフォルトの名無しさん
2008/11/16(日) 14:02:51利便性を考えて静的メソッドとしても公開しとくみたいな
0483デフォルトの名無しさん
2008/11/16(日) 14:04:11静的メソッドと関係があったりするんでしょうか?
>>479の void Method() が静的だったかまでは覚えていないんですが(´・ω・`)・・・
0484デフォルトの名無しさん
2008/11/16(日) 14:06:22class Startup {
void Test() { System.Console.WriteLine(this); }
static void Main() { new Startup().Test(); }
}
0485デフォルトの名無しさん
2008/11/16(日) 14:15:34abstract class Hoge {
public class Hage : Hoge {}
public class Page : Hoge {}
public static Hoge MakeInstance(bool b) { if (b) return new Hage(); else return new Page(); }
}
class Startup {
static void Main() {
Hoge hoge1 = Hoge.MakeInstance(true);
System.Console.WriteLine(hoge1);
Hoge hoge2 = Hoge.MakeInstance(false);
System.Console.WriteLine(hoge2);
}
}
0486デフォルトの名無しさん
2008/11/16(日) 14:22:330487デフォルトの名無しさん
2008/11/16(日) 14:26:02コンストラクタをprivateにして
publicなShow(...)メソッドでインスタンス化、みたいな
0488デフォルトの名無しさん
2008/11/16(日) 14:29:15Cloneでnew使うと継承に対応できなくなるので、
MemberwiseCloneを使ったあとディープコピーや追加の初期化を追加するのが常套。
0489デフォルトの名無しさん
2008/11/16(日) 14:35:29ああ、なるほど。継承まで頭が回ってなかった。
この辺もう少し勉強してみるわ。
0490デフォルトの名無しさん
2008/11/16(日) 15:03:340491デフォルトの名無しさん
2008/11/16(日) 15:04:33タイマーとかを使えばいいのかな?
0492デフォルトの名無しさん
2008/11/16(日) 15:05:360493269
2008/11/16(日) 15:48:02>>462様のアドバイス通りやってみたつもりなのですが、うまくいきません
厚かましいお願いですが、ファイルをアップしたのでどこを直せばいいのか教えていただけないでしょうか
http://www.death-note.biz/up/img/30723.zip
0494デフォルトの名無しさん
2008/11/16(日) 16:13:430495デフォルトの名無しさん
2008/11/16(日) 16:18:050496デフォルトの名無しさん
2008/11/16(日) 16:18:16オーバーロード=同一メソッドの別バージョン(シグネチャ違い)を定義
0497デフォルトの名無しさん
2008/11/16(日) 16:18:32ride → 乗る。 オーバーライドで、上に乗っかる。
0498デフォルトの名無しさん
2008/11/16(日) 16:20:48stirng[]型
bool型
からなる構造体を宣言し、さらにそれをList<T>で配列化しようと思っています。
しかし聞くところによるとC#では構造体の出番はあまりないとのことです。
上記のようなケースを構造体無しで実現するにはどうしたらいいでしょうか?
0499デフォルトの名無しさん
2008/11/16(日) 16:23:230500デフォルトの名無しさん
2008/11/16(日) 16:25:200501デフォルトの名無しさん
2008/11/16(日) 16:39:16なんか本気で言ってそうで怖いんだけどw
0502デフォルトの名無しさん
2008/11/16(日) 16:48:59{
void Func(int i)
{
System.Console.Wirte(i);
}
//オーバーロード(引数が違う)
void Func(string s)
{
System.Console.Wirte(s);
}
}
class B : A
{
//オーバーライド
override void Func(int i)
{
System.Console.Wirte(i * 2);
}
}
0503デフォルトの名無しさん
2008/11/16(日) 17:31:160504デフォルトの名無しさん
2008/11/16(日) 17:33:340505デフォルトの名無しさん
2008/11/16(日) 17:38:330506デフォルトの名無しさん
2008/11/16(日) 17:47:00クラスの中にクラスを新たに定義するんですか?
0507デフォルトの名無しさん
2008/11/16(日) 17:53:23これいいですね
>>475
たとえばForm2で処理したテキストデータをForm1のコントロールに渡したいときは
どうするのが最善ですか?
0508デフォルトの名無しさん
2008/11/16(日) 17:53:48ここは基本、沼に足を踏み入れようとしてる奴と一歩目を踏み入れた奴の相互援助スレだから仕方ない。
で、>438 はどうなったんだ?
ロダのファイルも流れてて見れないんだが。
本人か拾った奴カモン。
>506
>クラスの中にstirng[]型bool型からなる構造体を宣言し
の設計に問題ないと思うならそう。
>C#では構造体の出番はあまりない
自分で定義した構造体は、.NETの中で利用する限りでは(ry
0509デフォルトの名無しさん
2008/11/16(日) 18:55:54なんというか、構造体的使用目的のためにクラスを使ってしまうのはコードの可読性を
下げる要因にもつながりそうな気がするんですが。
0510デフォルトの名無しさん
2008/11/16(日) 19:12:05ここで修正内容書くと長くなるので、修正したのを上げておいた。これでいい?
http://www.death-note.biz/up/img/30745.zip
サンプルコードが何をしようとしているのかを見極めるのが大事だよ。
自分の元のコードと比べてみて、何を間違ってたかよく考えてみてね。
0511デフォルトの名無しさん
2008/11/16(日) 19:14:43多分君が思ってるよりclassの適用範囲は大きいよ
0512デフォルトの名無しさん
2008/11/16(日) 19:57:54ってのがだいたい、メモリの連続した領域をラベルでアクセスしたいってなもんでしょ?
その感覚はC#の構造体とは遠いからね
0513デフォルトの名無しさん
2008/11/16(日) 20:04:390514デフォルトの名無しさん
2008/11/16(日) 20:12:300515デフォルトの名無しさん
2008/11/16(日) 20:18:18答えが得られなくても仕方なし
どうせ煽りは1,2人でやっているので無視
0516デフォルトの名無しさん
2008/11/16(日) 20:27:22INotifyPropertyChanged を実装したビジネスオブジェクトを作成し、
そのインスタンスを各コントロールのプロパティにバインド
ビジネスオブジェクトは必要ならISupportInitializeなども実装
0517デフォルトの名無しさん
2008/11/16(日) 20:59:45他人のソース読むとき
ソリューションを開くとregionが全部閉じていていちいち開くのが面倒
csファイルを大量に分割し過ぎているのも可読性を損なう
0518デフォルトの名無しさん
2008/11/16(日) 22:02:37普通ショートカットか、メニュー・右クリックのアウトラインから展開するよな。
適切なregionは可読性向上に繋がる。
>csファイルを大量に分割し過ぎている
個人的には定義に移動で飛んでいけるから問題に感じる事はない。
分割が足りないより、しっかり分割されている方が好ましく感じる。
0519デフォルトの名無しさん
2008/11/16(日) 22:03:400520デフォルトの名無しさん
2008/11/16(日) 22:09:36まあそうなんだけど、他人の書いたコードを読むとき
ソリューションエクスプローラにファイルがズラっと並んでるの見ると
それだけで戦意を喪失させるものがあるから>>517の気持ちもわかる。
せめて適切なフォルダにグルーピングくれると助かるんだけど。
0521デフォルトの名無しさん
2008/11/16(日) 22:20:17分割しすぎると、いつの間にかエディタ上部のファイル選択タブにどんどん貯まっていってだるい。
あそこ多段表示にできればいいのに。
0522デフォルトの名無しさん
2008/11/16(日) 22:22:12コードも同じように混沌としてそうな気がしてくる。
0523デフォルトの名無しさん
2008/11/16(日) 23:31:14全部分けた方がいいのかな?
0524デフォルトの名無しさん
2008/11/16(日) 23:35:19Utility とかその辺に。
0525デフォルトの名無しさん
2008/11/16(日) 23:40:27Utility.xxxって分けてる?
using Utility で丸々ッと使えるようにする?
0526デフォルトの名無しさん
2008/11/16(日) 23:49:54汎用的なものについては Utility でマルッと使えるようにしてる。
それ以外の特異的なものは単に xxx で Utility は付けない。
0527デフォルトの名無しさん
2008/11/17(月) 00:35:44最近、聞くことなくて、このスレの人たちとコミュニケーションとれなくて、
さみしいお(;ω;)また、わからないことあったら、聞きにくるからよろしくだお(;ω;)
0528269
2008/11/17(月) 00:36:06ありがとうございます!
>>510様に書き直して頂いたものをマネてForm1_Loadに書いていたものをForm1に書いて
SetBackgroundを同じクラス内に書くとうまくいきました
が、数時間無い頭を使って考えてみましたがなぜ最初のでは動かないのかがわかりませんでした
今まで私の質問に丁寧に答えてくださった皆様、本当にありがとうございました
0529デフォルトの名無しさん
2008/11/17(月) 00:42:55最近、聞くことなくて、このスレの人たちとコミュニケーションとれなくて、
さみしいお(;ω;)また、わからないことあったら、聞きにくるからよろしくだお(;ω;)
0530デフォルトの名無しさん
2008/11/17(月) 00:53:56�d 参考にするわ
0531デフォルトの名無しさん
2008/11/17(月) 00:57:48�d 参考にするわ
0532デフォルトの名無しさん
2008/11/17(月) 01:57:38↓こんなかんじにやりたいんです
for(int i=0,int j=0;i<i_max;i++,j++)
0533デフォルトの名無しさん
2008/11/17(月) 02:00:35というかみにくいと思うがどういう使い道があるのか…・
別に管理したいなら変数切ってやればいいんじゃね?
いや、おれの無知ならすまないことなんだが
0534デフォルトの名無しさん
2008/11/17(月) 02:03:36その条件ならこれですむわけだが。
for(int i=0;i<i_max;i++)
{
int j=i;
}
0535デフォルトの名無しさん
2008/11/17(月) 02:08:55本当はiとjは別の初期値でやりたいです
↓こんなかんじでやればできるんでしょうけど
for文にひとまとまりにできないのかと思って
inti,j;
for(i=i0,j=j0;i<i_max;i++,j++)
0536デフォルトの名無しさん
2008/11/17(月) 02:14:370537デフォルトの名無しさん
2008/11/17(月) 02:16:18for (int i = 0, j = 0; i < length; i++, j++)
みたいな感じでいけるけど、可読性最悪でオススメできない。
for内で使うのは一つに制限した方が良い。
0538デフォルトの名無しさん
2008/11/17(月) 02:30:38全部プロパティとかのアクセサでやんなきゃいけないもんなんですか?
いちいちアクセサ書くのがめんどいし
何の意味があるんかよくわかりません
特に配列とかテンプレートへアクセスするときのやりかたがよくわかりません
0539デフォルトの名無しさん
2008/11/17(月) 03:06:37[StandardModuleAttribute()]
public sealed class Information
{
}
型または名前空間名 'StandardModuleAttribute' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
とエラーが出て、どんなusingを追加すれば消えるのか調べているのですが見つかりません。
どんなusingを加えればエラーが解消されるのでしょうか。
また、usingについて詳しく記載されているHP(MS公式以外)があれば教えて下さい。
0540デフォルトの名無しさん
2008/11/17(月) 03:28:19.NET Framework クラスライブラリ中のものなら MSDN で検索すれば所属する名前空間が書いてある。
ちなみに、クラス名を入力したときに出てくるリファクタ用メニュー(茶色い四角形)を使えば簡単に追加できる。
0541デフォルトの名無しさん
2008/11/17(月) 03:33:49ていうか、何でStandardModule属性なんか使おうとしてるん?
役割を知ってるのかは知らんけど、それは普通使わない(使うべきでない)物だぞ
StandardModuleAttribute クラス - msdn
http://msdn.microsoft.com/ja-jp/library/microsoft.visualbasic.compilerservices.standardmoduleattribute(VS.95).aspx
0542デフォルトの名無しさん
2008/11/17(月) 03:34:05StandardModuleAttributeでググれば先頭に出てくるんだがな・・。MSDNだけど。
そのusingの意味は>444辺りに書いてるじゃん。
DLL参照が足りない?それもどのDLL追加すればいいかMSDNにあるじゃん。
まず自分で少し調べれ。
0543デフォルトの名無しさん
2008/11/17(月) 03:36:550544デフォルトの名無しさん
2008/11/17(月) 03:42:21事務的で冷たいし
0545デフォルトの名無しさん
2008/11/17(月) 03:44:200546デフォルトの名無しさん
2008/11/17(月) 03:46:02これが.NET世代か・・・
0547デフォルトの名無しさん
2008/11/17(月) 03:47:000548デフォルトの名無しさん
2008/11/17(月) 03:47:13でもクラス名で検索すると、.NETのものなら大体先頭に来るし、
winのAPIとかCOMとかの、ちょっとコアな部分に入ると結構MSDN頼り(+英語)になることも多いし、慣れておいて損はないかと。
必要な部分だけ読んで、後は流せばいい。
・・名前空間見るくらいはいいじゃんw
0549デフォルトの名無しさん
2008/11/17(月) 03:47:36個人的には英語版の方が読みやすくて好き。英語出来るならオススメ。
0550デフォルトの名無しさん
2008/11/17(月) 03:52:29あの変な日本語の方がましだな
つーか、専門の翻訳スタッフぐらい雇えよな
0551デフォルトの名無しさん
2008/11/17(月) 03:53:200552デフォルトの名無しさん
2008/11/17(月) 04:05:15自分のところの仕様やドキュメントを適当にしておくなんて一体何をする会社だか分からんw
0553デフォルトの名無しさん
2008/11/17(月) 04:06:50いや、あの日本語で理解できるかw?
主語・目的語が何なのかすら分からん文とかが延々と並んでるんだぜw。技術文書として致命的じゃね?
サンプルコードが付いてたりするからそこから読み解けなくも無いけど、日本人がアレから読み取れるニュアンスがまともなものになるとは思えないぞ。
.NETのライブラリ部分とか、基本的な部分の技術文書なんかは人間が翻訳してるから普通に読めるが。
上に機械翻訳の免責云々って書いてあったら軽く読んでから英語表示。
0554デフォルトの名無しさん
2008/11/17(月) 04:07:540555デフォルトの名無しさん
2008/11/17(月) 04:10:39このコントロールには、標準の TextBox コントロールよりも高度な書式設定機能も用意されています。
テキストは、このコントロールに直接割り当てることも、リッチ テキスト形式 (RTF: Rich Text Format)
ファイルやプレーンテキストファイルから読み込むこともできます。コントロール内のテキストには、
文字書式または段落書式を割り当てることができます。
ひっでえ日本語w
0556デフォルトの名無しさん
2008/11/17(月) 04:16:35翻訳文書に飼いならされてしまったのだろうか・・・
0557デフォルトの名無しさん
2008/11/17(月) 04:18:24技術文章だから原本を大事にしてるのかね?
それとも MSKK がさb
0558デフォルトの名無しさん
2008/11/17(月) 04:23:27RichTextBoxはテキストを入力および編集できるコントロールです。
TextBoxコントロールよりも高度な書式設定機能が用意されており、
コントロール内のテキストには、文字書式と段落書式を指定できます。
このコントロールにテキストを設定する方法は、次のような方法があります。
・プログラムから直接指定する
・リッチ テキスト形式 (RTF: Rich Text Format)ファイルから読み込む
・プレーンテキストファイルから読み込む
0559デフォルトの名無しさん
2008/11/17(月) 04:25:22ttp://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.aspx
読み比べてみたが、読みやすい訳じゃないか
代替訳があるなら提示しておくれ
0560デフォルトの名無しさん
2008/11/17(月) 04:26:47そこまで行くと意訳だから技術文書として望ましくないんじゃないか
0561デフォルトの名無しさん
2008/11/17(月) 04:31:30プログラム経験の浅い人使って翻訳する場合、解釈して書き直すと意味が変わる恐れがあるから、英語丸投げにも納得は出来る。
マ集めて翻訳させてたら日本語ライブラリ作るのが遅れるし。そういう意味では>555は十分な文書だと思う。
マには伝わる単語のニュアンスが、一般人には伝わらないことは結構多い。それが英語版で読める強み。
それが大きな支障になることは少ないと思うけど、コイツ・・分かってないな(ニヤッ。って感じに楽しめる。
0562デフォルトの名無しさん
2008/11/17(月) 04:57:05英語だと違和感ないんだけど、日本語だとすごい読みづらくなってる。
まあ、>>561 が言っているとおり、勝手に意訳されて意味が違ってくるとそれはそれで困るけどね。
0563デフォルトの名無しさん
2008/11/17(月) 06:47:120564デフォルトの名無しさん
2008/11/17(月) 08:06:47MSはまだよくやってる方だぜ。S(略)Nなんか……
0565デフォルトの名無しさん
2008/11/17(月) 08:17:08デベロッパ・コミュニティーに優しいのはMSよりSUNの方だと思うけどねえ。
0566デフォルトの名無しさん
2008/11/17(月) 08:48:200567デフォルトの名無しさん
2008/11/17(月) 09:01:530568デフォルトの名無しさん
2008/11/17(月) 09:13:130569デフォルトの名無しさん
2008/11/17(月) 09:25:350570デフォルトの名無しさん
2008/11/17(月) 10:03:11http://blogs.wankuma.com/kazuki/archive/2008/04/24/135133.aspx
から、com.csと、Program.csを作ったところ、
エラー 1 型または名前空間名 'TwitterStatus' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
となります。
なにを参照すればよいんでしょう?
0571デフォルトの名無しさん
2008/11/17(月) 10:46:23本人に聞けよ
0572デフォルトの名無しさん
2008/11/17(月) 11:50:24Deserialize すると null になってしまうのですが、仕様ですか?
0573デフォルトの名無しさん
2008/11/17(月) 12:02:31objectには読み書き可能なプロパティなど存在しないからな
XmlSerializeによるシリアライズ結果に型情報は載らないのよ
0574デフォルトの名無しさん
2008/11/17(月) 12:05:23出来ました。XmlSerializer のコンストラクタに object に入る可能性のあるオブジェクトの型を
指定しておくことで解決しました。
//XmlSerializerオブジェクトの作成
Type[] extraTypes = new Type[1];
extraTypes[0] = typeof(int);
XmlSerializer serializer = new XmlSerializer(this.GetType(), extraTypes);
0575デフォルトの名無しさん
2008/11/17(月) 20:12:18このやり方が普通かどうかはしらん
public class XmlAccessor
{
public static void XmlSerialize<Type>(string filePath, Type value)
{
using (FileStream fs = new FileStream(filePath, FileMode.Create)) {
XmlSerializer xs = new XmlSerializer(typeof(Type));
xs.Serialize(fs, value);
}
}
public static Type XmlDeserialize<Type>(string filePath)
{
Type value = default(Type);
if (File.Exists(filePath)) {
using (FileStream fs = new FileStream(filePath, FileMode.Open)) {
XmlSerializer xs = new XmlSerializer(typeof(Type));
value = (Type)xs.Deserialize(fs);
}
}
return value;
}
}
0576デフォルトの名無しさん
2008/11/17(月) 20:22:37静的に完結しないならTypeを引数に取ってobject返しちゃう
0577デフォルトの名無しさん
2008/11/17(月) 20:31:38まあたぶんみんな同じようなやつを私的なライブラリに持ってるでしょ。
俺は呼び出し側で例外処理書くの面倒だからシリアライズの方はbool返すようにしてる。
>>576
すれてるのは話じゃなくて論点の方じゃないのかな?
0578デフォルトの名無しさん
2008/11/17(月) 20:37:27Shell sh;
SHDocVw.ShellWindows o;
sh = new Shell();
o = new SHDocVw.ShellWindows();
foreach (SHDocVw.InternetExplorer ie in o){
if (ie.LocationURL.Contains("これから開くページのURL")){
//ここでそのページをcloseとかkillとかreloadとかしたい。
}}
0579デフォルトの名無しさん
2008/11/17(月) 21:53:56ie.Refresh();//リロード
0580デフォルトの名無しさん
2008/11/17(月) 22:48:53改良版を作る時にどうやればいいか教えてください。
namespaceとかプロジェクト名とかいちいち置換しないとだめですか?
0581デフォルトの名無しさん
2008/11/18(火) 00:06:06version管理ツール使えばいいんじゃね?
亀SVNとか楽だよ。
0582デフォルトの名無しさん
2008/11/18(火) 00:08:36サンクス
0583デフォルトの名無しさん
2008/11/18(火) 00:09:45Thanks!!!
0584デフォルトの名無しさん
2008/11/18(火) 09:09:500585デフォルトの名無しさん
2008/11/18(火) 10:09:330586デフォルトの名無しさん
2008/11/18(火) 10:17:04ブレークポイントやブックマークだってわざわざその行に
「#breakpoint」
なんて一々書いてたら面倒だし視認性だって下がるでしょ。
0587デフォルトの名無しさん
2008/11/18(火) 11:38:26それとも、VC# のアップデートでそれがサポートされないことに文句言ってるの?
region〜endregion は、C# 言語の一部分で、組み込まれてる。
他の IDE でも同様の用途に使えるんだから、VC# でのみ使える region のようなものを新設する意味がない。
ただ、region の表示方法を工夫してもらいたいなとは思う。
括った部分はインデントするとか、しないとか。
0588デフォルトの名無しさん
2008/11/18(火) 11:51:28ディスクの空き容量が少ないのですが、
Microsoft SQL Server 2008関係
は、C#のFormやWPFの開発に必要なんですか?
使わなければ消してもよいですか?
同じく、.NET Frameworkが1.1、2.0、3.0、3.5と入っているのですが、
3.0と3.5だけ残して1.1と2.0は消してもよいですか?
0589デフォルトの名無しさん
2008/11/18(火) 11:54:17MSDN Library for Mycrosoft Visual Studio 2008 Express Edition
というのは、WebでMSDNを検索すれば必要ない?
0590デフォルトの名無しさん
2008/11/18(火) 11:57:06Microsoft Visual C++ 2005 Redistributable
Microsoft Visual C++ 2008 Redistributable -x86 9.0.30729
っても不要に思えるのですが…。
0591デフォルトの名無しさん
2008/11/18(火) 12:07:47全部消していいよ
0592デフォルトの名無しさん
2008/11/18(火) 12:11:47再インストール出来るんだから、まずは消してみればいいじゃない。
質問するのはそれからだろ?
0593デフォルトの名無しさん
2008/11/18(火) 12:11:580594デフォルトの名無しさん
2008/11/18(火) 12:24:09抜本的な対策したほうがいいと思う。
0595デフォルトの名無しさん
2008/11/18(火) 12:27:430596デフォルトの名無しさん
2008/11/18(火) 12:32:50文字を書いてエディタの機能を有効にするなんて明らかに変じゃない?違和感ない?
#endregionって書いて数秒経つと+が現れるとか…
0597デフォルトの名無しさん
2008/11/18(火) 12:43:330598デフォルトの名無しさん
2008/11/18(火) 14:21:01何か勘違いしてない?
region は言語に組み込まれてる機能だよ?
それを VC# 側で解釈してるだけ。
0599デフォルトの名無しさん
2008/11/18(火) 14:40:21とりあえず、議論したいなら何がどうあって欲しいのかを明確にするべきじゃね?
何に対して文句言ってるのかよくわからんし。
0600デフォルトの名無しさん
2008/11/18(火) 15:58:130601デフォルトの名無しさん
2008/11/18(火) 16:09:11いちいち開いたり閉じたり、逆に読み難いだけだろ(^m^)ププ
0602デフォルトの名無しさん
2008/11/18(火) 16:11:20int a;
#endregion
#region 変数aに1を代入する
a = 1;
#endregion
0603デフォルトの名無しさん
2008/11/18(火) 16:11:440604デフォルトの名無しさん
2008/11/18(火) 16:12:18古代ローマの人?
レギオンとリージョンって語源一緒なんだろか。
0605デフォルトの名無しさん
2008/11/18(火) 16:14:530606デフォルトの名無しさん
2008/11/18(火) 16:22:230607デフォルトの名無しさん
2008/11/18(火) 16:40:00コメントwwwwwwwww
http://ja.wikipedia.org/wiki/レギオン
0608デフォルトの名無しさん
2008/11/18(火) 16:40:24レギオン(^m^)ププ
0609デフォルトの名無しさん
2008/11/18(火) 16:53:470610デフォルトの名無しさん
2008/11/18(火) 17:01:570611デフォルトの名無しさん
2008/11/18(火) 17:15:200612デフォルトの名無しさん
2008/11/18(火) 17:17:10語源は同じだから強ち釣りでもないが
0613デフォルトの名無しさん
2008/11/18(火) 17:21:080614デフォルトの名無しさん
2008/11/18(火) 17:23:38ネイティブな発音も知らずに無知をさらしまくる奴。
0615デフォルトの名無しさん
2008/11/18(火) 17:31:02kwsk
俺は英検1級もってるんだが、"シュミレーション"に対しては食いつくぞ?
0616デフォルトの名無しさん
2008/11/18(火) 17:33:030617デフォルトの名無しさん
2008/11/18(火) 17:34:07英検より役に立つぞw
0618デフォルトの名無しさん
2008/11/18(火) 17:35:23本当はTOEIC700点ですが何か?
0619デフォルトの名無しさん
2008/11/18(火) 17:36:080620デフォルトの名無しさん
2008/11/18(火) 17:38:39英検1級って700点レベルなのか。
意外と大したことないな。
釣られてみる。
0621デフォルトの名無しさん
2008/11/18(火) 17:39:380622デフォルトの名無しさん
2008/11/18(火) 17:39:580623デフォルトの名無しさん
2008/11/18(火) 17:40:31あと #region 書くときは名前も付けてやろうぜ。
0624デフォルトの名無しさん
2008/11/18(火) 17:40:44だってヘタレなんだもんw
0625デフォルトの名無しさん
2008/11/18(火) 17:41:19#endregion
0626デフォルトの名無しさん
2008/11/18(火) 17:45:45エラー: 不適切なプリプロセッサ ディレクティブです。
0627デフォルトの名無しさん
2008/11/18(火) 17:46:54という解釈で合ってますか?
0628デフォルトの名無しさん
2008/11/18(火) 17:47:250629デフォルトの名無しさん
2008/11/18(火) 18:02:010630デフォルトの名無しさん
2008/11/18(火) 18:02:18それだけじゃないけどそういう制約もできるね
0631デフォルトの名無しさん
2008/11/18(火) 18:09:01それだけじゃないとは?
0632デフォルトの名無しさん
2008/11/18(火) 18:12:250633デフォルトの名無しさん
2008/11/18(火) 18:22:55ヘルプやMSDNで「where (ジェネリック型制約)」を調べて
0634デフォルトの名無しさん
2008/11/18(火) 18:24:34確かにここの糞どもと会話するより検索したほうが早そうだ
0635デフォルトの名無しさん
2008/11/18(火) 18:29:41ここが2chじゃなくてMSDNフォーラムだろうが@IT会議室だろうが変わらん
「ヘルプ見れば明らか」ってもんなんだから
0636デフォルトの名無しさん
2008/11/18(火) 18:31:170637デフォルトの名無しさん
2008/11/18(火) 18:42:270638デフォルトの名無しさん
2008/11/18(火) 18:45:080639デフォルトの名無しさん
2008/11/18(火) 18:48:49言っとくけどVIPPERで固定ハンドルネームやってるしこのスレットを潰すくらいの
影響力は持ってるから くだらん事で俺を刺激しないように(・ω・)/
0640デフォルトの名無しさん
2008/11/18(火) 18:49:470641デフォルトの名無しさん
2008/11/18(火) 18:49:470642デフォルトの名無しさん
2008/11/18(火) 18:52:24使わずに済むなら使わないに越したことはない
それ自体の危険性は置いといても,Silverlightで使えないとかいろいろ余計な制約がかかる
0643デフォルトの名無しさん
2008/11/18(火) 19:04:27おい>>639このスレにvipper呼ぼうぜ
0644デフォルトの名無しさん
2008/11/18(火) 19:17:080645デフォルトの名無しさん
2008/11/18(火) 20:56:353年程前にVB6やってたときは、スプレッド(GrapeCityの)つかって表インターフェース
作成していましたが、いまどき、有料のコンポーネント買いたいといっても、予算が
おりません。(どとねと版16マンもしてるみたいでしたし。。。)
ぐぐった感じでは、OfficeコンポーネントをつかってExcelをはめ込むのが近いかな?
とおもいましたが、なんかいい方法あるのでしょうか?
0646デフォルトの名無しさん
2008/11/18(火) 21:00:36結局何がしたいのかわからん。
表を作りたいのか? だったら DataGridView を使えばいい。
0647デフォルトの名無しさん
2008/11/18(火) 21:10:25http://www.grapecity.com/japan/support/database/P7_366.htm
FlexGridなら半額だよ
0648デフォルトの名無しさん
2008/11/18(火) 21:14:470649デフォルトの名無しさん
2008/11/18(火) 21:15:55が、できれば、無料のでいきたいです。
DataGridViewはためしてみましたが、印刷をおもったようにだすのに苦労するようにおもえました。
根性いれてやれば、そうでもないのかな?
0650デフォルトの名無しさん
2008/11/18(火) 21:17:320651デフォルトの名無しさん
2008/11/18(火) 21:17:33C#で同様の機能つくったら800万になるんですよ。
C#からExcelを別に起動させてはだめで、C#のForm内に表が
でてくるようにするだけでお客さんの払う金額はかわってきます。
0652デフォルトの名無しさん
2008/11/18(火) 21:19:48できればすごい楽そうなんだけど。
0653デフォルトの名無しさん
2008/11/18(火) 21:20:11確かにおもったとおりのものが出せそうでした。
でも開発が1表あたり半日は追加になりそうですね。
0654デフォルトの名無しさん
2008/11/18(火) 21:22:220655デフォルトの名無しさん
2008/11/18(火) 21:24:26GrapeCityなどの窓口が信用でおちる会社とは取引できないので
商社から買うことになる。
実行予算から8マン減る。
たぶん、事務手続きにかかる人件費は+4万はかかるかもしれん。
0656デフォルトの名無しさん
2008/11/18(火) 21:32:320657デフォルトの名無しさん
2008/11/18(火) 21:32:44うちならサクサク購入しちゃうから。
0658デフォルトの名無しさん
2008/11/18(火) 21:35:240659デフォルトの名無しさん
2008/11/18(火) 21:36:23ま、そっちのほうが稼働は減らせる。という理由で、明日調達かけてみます。
ありがとん。
0660デフォルトの名無しさん
2008/11/18(火) 21:51:390661デフォルトの名無しさん
2008/11/18(火) 21:57:320662デフォルトの名無しさん
2008/11/18(火) 22:06:26表示は、DBからとってくるという奴かと。。。
0663デフォルトの名無しさん
2008/11/18(火) 22:07:420664デフォルトの名無しさん
2008/11/18(火) 23:04:39戻り値の型を持たないメソッドの作り方を教えてください
0665デフォルトの名無しさん
2008/11/18(火) 23:07:320666デフォルトの名無しさん
2008/11/18(火) 23:10:36void
0667デフォルトの名無しさん
2008/11/18(火) 23:15:280668デフォルトの名無しさん
2008/11/18(火) 23:15:500669デフォルトの名無しさん
2008/11/18(火) 23:17:030670デフォルトの名無しさん
2008/11/18(火) 23:19:49といいますと?
0671デフォルトの名無しさん
2008/11/18(火) 23:22:200672デフォルトの名無しさん
2008/11/18(火) 23:25:430673デフォルトの名無しさん
2008/11/18(火) 23:31:20ウルトラマンにしかみえなくなったじゃねーかww
0674デフォルトの名無しさん
2008/11/18(火) 23:57:010675デフォルトの名無しさん
2008/11/18(火) 23:57:110676デフォルトの名無しさん
2008/11/19(水) 00:41:54これはやばいwww
職場で吹いたらお前のせいだからなwwww
0677デフォルトの名無しさん
2008/11/19(水) 01:05:520678デフォルトの名無しさん
2008/11/19(水) 01:07:480679デフォルトの名無しさん
2008/11/19(水) 01:11:060680デフォルトの名無しさん
2008/11/19(水) 03:11:10言語仕様のことなんてどうでもいいけど
ブレークポイントみたいにVS側がサポートすればいいじゃん。
ちなみに#regionの文法はVSのためにある以外に用途あるの?
無いんだったら尚更。
>>599
相当頭悪いの?
0681デフォルトの名無しさん
2008/11/19(水) 03:44:04最新の言語だし、 IDE で開発されることに特化した機能があってもおかしくない。
それぞれの IDE で独自に整形情報をもたれてしまうと、相互に利用する場合に宜しくない。
(VS ではキレイだったコードが SharpDevelop だと悲惨なコードにとか。)
と言うわけで、整形情報はこうしましょうと言語側で決めてしまえばそんな混乱は起こらず、
互換性を気にせずに使えるようになり、コードのメンテナンス性も高まってみんな幸せになれる。
本当のところはどうなのかはヘルズバーグさんに聞いてくれ。
あと煽りは程々に。
0682デフォルトの名無しさん
2008/11/19(水) 03:50:55ちょっくら吊ってくる。
0683デフォルトの名無しさん
2008/11/19(水) 03:54:04さあ、来い!ヴァイパー!
0684デフォルトの名無しさん
2008/11/19(水) 03:56:220685デフォルトの名無しさん
2008/11/19(水) 04:08:35ttp://jp.youtube.com/watch?v=KzSY9WQXjzg
俺にはエンダース・ハースバーグとしか聞こえん
0686デフォルトの名無しさん
2008/11/19(水) 04:55:04明らかに言語的に間違えた仕様だろこれは
0687デフォルトの名無しさん
2008/11/19(水) 05:02:250688デフォルトの名無しさん
2008/11/19(水) 06:50:02ん〜、どれどれ・・・ウルトラマン?
0689デフォルトの名無しさん
2008/11/19(水) 07:22:44最後の改行って何だろう。
WriteLineとWriteを使い分けがわからないとか?
0690デフォルトの名無しさん
2008/11/19(水) 09:21:08よろしくお願い致します。
0691デフォルトの名無しさん
2008/11/19(水) 09:42:55それとも単に一番上?
0692デフォルトの名無しさん
2008/11/19(水) 09:51:28ストリームってどういう意味?StreamWriterとかFileStreamとか。
何となく入出力処理に関係しているんだと思うけど。よく意味がわかりません
0693デフォルトの名無しさん
2008/11/19(水) 09:55:310694デフォルトの名無しさん
2008/11/19(水) 09:56:370695デフォルトの名無しさん
2008/11/19(水) 10:00:42レスありがとうございます
TopMostのように常に最前面ではなくて、
現在、単純に一番上にあるかどうかです
0696デフォルトの名無しさん
2008/11/19(水) 10:08:28なんか勘違いしてると思うぞ
0697デフォルトの名無しさん
2008/11/19(水) 10:20:44APIのGetWindowかGetForegroundWindowを呼ぶ。
0698デフォルトの名無しさん
2008/11/19(水) 10:25:19Form.ActiveForm と自分自身を比べればいいんじゃないか
中でGetForegroundWindow呼んでるんだが
0699デフォルトの名無しさん
2008/11/19(水) 10:27:24まずオレンジジュースがはいったコップとストローを用意しろ。
コップがファイルでジュースがデータだ。
そこにストローを挿せ。それがbufferだ。
君の頭がCPUとして、ストローを吸ってごらん。これがreadstream。
コップのジュースは減るけどデータの場合読み取るだけだから無くならないけどね。
まだ飲むなよ。
今度は口のジュースをストローから出してごらん。
これがWriteStreamさ。
0700デフォルトの名無しさん
2008/11/19(水) 10:46:200701デフォルトの名無しさん
2008/11/19(水) 10:50:34タスクトレイのアイコンをダブルクリックするごとに
最前面/最小化をトグルで切り替えたかったのですが、
タスクトレイをクリックした時点でフォームがアクティブじゃなくなるので
Form.ActiveFormがnullになってしまうからだめみたいです
上手い方法ないないものでしょうか
private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
this.WindowState = FormWindowState.Normal;
this.Activate();
}
else
{
if (Form.ActiveForm != this)
{
this.Activate();
}
else
{
this.WindowState = FormWindowState.Minimized;
}
}
}
こんな感じに書いてみたのですが・・・
0702デフォルトの名無しさん
2008/11/19(水) 11:37:590703デフォルトの名無しさん
2008/11/19(水) 12:04:07最小化されてるか確認すればいいジャマイカ
0704デフォルトの名無しさん
2008/11/19(水) 12:08:58ダブルクリックする直前に、タスクトレイのMouseEnterとかのイベントとかで
ActiveForm調べて覚えといてMouseLeave等で忘れる。
ダブルクリック時には覚えておいたやつと比較。
0705デフォルトの名無しさん
2008/11/19(水) 12:09:111番目に自分があったら一番上、とかでどうかなあ。
一応動作したけど、特定の条件がすべてを網羅できるかわからんな。
0706デフォルトの名無しさん
2008/11/19(水) 12:39:01背面→最前面
最前面→最小化
ってことか。
0707デフォルトの名無しさん
2008/11/19(水) 14:35:14蛇口と排水溝あたりの方が分かりやすいと思うがどうよ
>>701
そういう摩訶不思議な設計はユーザの混乱を招きそうだ
タスクトレイのアイコンは最小化の切り替えだけにして、非最小化したときに前面に、
もしくは最初から最前面に表示するというのではいかんのか?
0708デフォルトの名無しさん
2008/11/19(水) 15:31:54定義されているIPMSG_BR_ENTRY(0x00000001UL)をパケットキャプチャ
で見てみると、10進で6291457、16進で600001となっているんですが
この関係ってどう捉えればいいのでしょうか?
0709デフォルトの名無しさん
2008/11/19(水) 15:37:370710デフォルトの名無しさん
2008/11/19(水) 15:51:26if( ( ( (unsigned int&)z & ~( (unsigned int&)x | (unsigned int&)y ) ) & 0x80000000 ) != 0 )
cで書かれた(c++?)上のようなコードがあるんですが、
これをc#に直してください。
何をしてるのかさっぱり分かりませんがコメントにはこうあります。
// Take the bitwise AND of z and the complement of the inclusive OR of x and y,
// then bitwise AND the result with 0x80000000 and return it. A bitwise result
// of zero equals false, while any other value equals true.
x,y,zはfloatです。
0711710
2008/11/19(水) 15:54:40上の式が何をしているのかを分かりやすく教えてもらえると助かります。
0712708
2008/11/19(水) 15:59:43すいません。私が見てたのは文字列のようでした。
16進表記では 36 32 39 31 34 35 39 となっていました。
色々勘違いしている気はします…。
0713デフォルトの名無しさん
2008/11/19(水) 16:00:54MouseEnterがなかったので、MouseMoveでやってみましたが、
タイミング的な問題で常にnullになってしまうようでだめでした
>>705
それでうまくいきました
具体的には
http://smdn.invisiblefulmoon.net/ikimasshoy/dotnettips/tips017.html
のサイトを参考にして、自身のキャプションが最初に見つかった場合、
「最前面にいる」という判定で問題なさそうです
>>706
そういうことですね
>>707
摩訶不思議でしょうか?
見えないとき→最前面へ
みえるとき→背面へ
ってだけなんですけどね
まぁ、勝手に仕様を変えるわけにもいかんので
0714デフォルトの名無しさん
2008/11/19(水) 16:02:480715デフォルトの名無しさん
2008/11/19(水) 16:08:37>>摩訶不思議でしょうか?
右クリックでメニューが開く
左クリックでウィンドウ表示、最前面表示
ダブルクリックでメニュー内の太字項目実行
とかが普通な気はするな
まあ仕様じゃしょうがない
0716デフォルトの名無しさん
2008/11/19(水) 16:12:59残念
0717デフォルトの名無しさん
2008/11/19(水) 16:27:070718デフォルトの名無しさん
2008/11/19(水) 16:39:43string str;
str = (txt.Remove(txt.IndexOf("de")).Substring(txt.Remove(txt.IndexOf("de").IndexOf("c")));
という書き方と
str = txt.Remove(txt.IndexOf("de"));
str = str.Substring(str.IndexOf("c"));
という書き方でわかりやすいのはもちろん下だと思いますが
推奨されるのはどちらですか?
0719デフォルトの名無しさん
2008/11/19(水) 16:46:43IndexOfが-1返す場合は考えなくていいの?
0720デフォルトの名無しさん
2008/11/19(水) 16:47:060721デフォルトの名無しさん
2008/11/19(水) 16:54:12考えなくていいです
0722デフォルトの名無しさん
2008/11/19(水) 16:55:380723デフォルトの名無しさん
2008/11/19(水) 16:57:36ネットでサンプルコードを探しているとたまに上のようなコードを見かけるので
1行で書いた方が良いのかと思ってました。
0724デフォルトの名無しさん
2008/11/19(水) 18:25:140725デフォルトの名無しさん
2008/11/19(水) 18:35:00>蛇口と排水溝あたりの方が分かりやすいと思うが
void <kwsk!
bool <kwsk! kwsk!> long
0726デフォルトの名無しさん
2008/11/19(水) 18:36:54(\)(o由o)(\) フォッフォッ
0727デフォルトの名無しさん
2008/11/19(水) 18:37:550728デフォルトの名無しさん
2008/11/19(水) 19:41:05本当はそういう訳のわからないたとえ話じゃなくそのまま理解した方が簡単。
俺の理解ではストリームっていうのはデータの読み書きを、相手が紙テープだろうとメモリだろうと
COMポートだろうとサウンドカードだろうとファイルシステムだろうと透過的に行うための
インターフェイスのことだと思うんだけど。
0729デフォルトの名無しさん
2008/11/19(水) 19:44:100730デフォルトの名無しさん
2008/11/19(水) 19:51:57組織票に立ち向かえるだけ投票率が上がり(65%以上だ)、反自公の議員が増えれば革命は成る!!
少なくとも比例区は自民党に入れるな!
いくらここで殺人なんぞ喜んでいても、
官僚の天下り利権はそのまんま、国民エイズで殺す悪党もそのまんま、だ!
全然変わりゃしないんだよ!!
<官僚結託の悪党ジメツントヲーめらどもを、選挙で落とさない限り> ね!!
YouTube - 国会映像館:4つの天下り例
1/4 http://jp.youtube.com/watch?v=96W0VYWKKEk&feature=related
2/4 http://jp.youtube.com/watch?v=TI0laixTvCM&feature=related
3/4 http://jp.youtube.com/watch?v=O0H5Z6m4Ir8&feature=related
4/4 http://jp.youtube.com/watch?v=UxZTL4YItpQ&feature=related
悪党システムを廃止するためには選挙にいってしかるべき投票行動を取ればいいだけ!
殺しなんてとんでもない!!
さあ、官僚どもを叩き潰せ !!
ただし、選挙でヤルべきだな!ここで喚いてるおまいら、次の衆院選はちゃんと投票しろ!
期日前投票なら近所の人間にも会わずに済むぞ、ニートであっても恥ずかしくない、全員で
投票しに行くんだ!!
YouTube - 長妻昭議員の講演(200878 岩手県盛岡市) http://jp.youtube.com/watch?v=gx9IWoVz-nE&NR=1
Part2 http://jp.youtube.com/watch?v=f94gAI5GCQU&feature=channel
Part3 http://jp.youtube.com/watch?v=ifduT-BoLus&feature=channel
悪党官僚結託ジメツントヲーどもテッテテキにブチ落とすんだ!!官僚の自由にさせず俺らの財産である
税金・保険料を1円も無駄にすることのない、俺らの政府を打ち立てようぜ!!
0731デフォルトの名無しさん
2008/11/19(水) 19:56:360732デフォルトの名無しさん
2008/11/19(水) 19:57:250733デフォルトの名無しさん
2008/11/19(水) 20:02:23とにかくバイト単位で順番にどんどんデータを取り出したり書き込んだりするものがStream
バイト単位でどんどん吸い出したり書き込んだりするもの
読み込む元や書き込む先はファイルだろうがネットワークだろうがメモリだろうが何でも同じ
同じ操作で好きな物から読み込んだり書き込んだりするために作られた抽象的な物がStream
0734デフォルトの名無しさん
2008/11/19(水) 21:14:010735デフォルトの名無しさん
2008/11/19(水) 22:11:580736デフォルトの名無しさん
2008/11/19(水) 22:14:450737デフォルトの名無しさん
2008/11/19(水) 23:23:09StreamReaderとかStreamWriterとかの生成が必須かと思ってたわ
0738デフォルトの名無しさん
2008/11/19(水) 23:27:210739デフォルトの名無しさん
2008/11/19(水) 23:29:13VS2010/.NET4.0予定
0740デフォルトの名無しさん
2008/11/20(木) 00:10:370741デフォルトの名無しさん
2008/11/20(木) 00:16:340742デフォルトの名無しさん
2008/11/20(木) 00:36:15HTTP?なら HEAD メソッドで。
0743740
2008/11/20(木) 00:48:140744デフォルトの名無しさん
2008/11/20(木) 01:48:59HTTP について少しは調べたらどうだwwww
0745デフォルトの名無しさん
2008/11/20(木) 10:49:43Window FormのDesignerでWindowをダブルクリックすればForm_Loadingコード
を自動に書いてくれるんですが、Form_Closingはどうやればいいんですか?
0746デフォルトの名無しさん
2008/11/20(木) 10:59:59MSDNを読めよ。
>Closing イベントは、.NET Framework Version 2.0 では使用されません。代わりに FormClosing イベントを使用します。
0747デフォルトの名無しさん
2008/11/20(木) 11:18:25プロパティウィンドウの上の方にある雷みたいなマークをおして
書きたいイベントのところをダブルクリック
0748745
2008/11/20(木) 11:22:14Design View->Event Tool Bar->Form Closingをダブルクリック
0749デフォルトの名無しさん
2008/11/20(木) 13:40:420750デフォルトの名無しさん
2008/11/20(木) 13:43:48set{
if(visible = value){
//処理
}
else{
//処理
}
}
}
public void Show(){
this.Visible = true;
}
public void Hide(){
this.Visible = false;
}
-------------------------------------------
public bool Visible{
set{
if(visible = value)
Show();
else
Hide();
}
}
public void Show(){
//処理
}
public void Hide(){
//処理
}
上と下どっちが好ましい?
0751デフォルトの名無しさん
2008/11/20(木) 13:46:53他からShowHideメソドを使うけど処理したくない場合もあるだろうし
ケースバイケースとしか言いようがない
0752デフォルトの名無しさん
2008/11/20(木) 13:49:04アイテムを複数同時に選択したとき、
複数選択されたものの中から、マウスで実際に(SHIFTキーを押しながら)クリックされたアイテムを
取得する方法はありませんでしょうか?
ItemSelectionChangedイベントを使ってみたのですが、
実際に選択されたアイテム以外にもイベントハンドラが起動してしまって
判断ができません。よろしくお願いします。
0753デフォルトの名無しさん
2008/11/20(木) 13:53:23あるかどうかしらないけど
0754デフォルトの名無しさん
2008/11/20(木) 13:54:11ってのはどう?
0755デフォルトの名無しさん
2008/11/20(木) 14:03:47そのような力業(?)になってしまうのですね。
MouseDownとGetItemAtを組み合わせて実装してみます。
ありがとうございました。
0756デフォルトの名無しさん
2008/11/20(木) 14:06:42一応、「マウスで」という条件がなければ SelectedIndices で行ける。
どういう状況かわからんけど。
0757デフォルトの名無しさん
2008/11/20(木) 14:08:27クリックされたことを拾いたいんならChangedじゃなくClick使うだろ
力業ってなんだよ
0758デフォルトの名無しさん
2008/11/20(木) 14:14:560759デフォルトの名無しさん
2008/11/20(木) 14:16:510760デフォルトの名無しさん
2008/11/20(木) 16:15:590761デフォルトの名無しさん
2008/11/20(木) 16:28:020762デフォルトの名無しさん
2008/11/20(木) 16:39:490763デフォルトの名無しさん
2008/11/20(木) 17:24:32>>762
ありがとうございます
なんとなく分かりましたので試して見ます
0764デフォルトの名無しさん
2008/11/20(木) 17:53:04って付けたらセキュリティホールを発生させる可能性があります、とか怖いこと書いてあるんですが
実際、具体的にはどんな危険があるんでしょうか?
P/Invokeメソッドやそれを使用してるコードに外部からアクセスできなくても問題ありますか?
0765760
2008/11/20(木) 18:28:37このサイトがとても役に立ち、解決しました。
回答してくださった方、本当にありがとうございました。
0766デフォルトの名無しさん
2008/11/20(木) 18:41:29GACに登録するようなアセンブリを作らない限りは危ないことはない。
デスクトップ上で使う前提のスタンドアロンプログラムならバンバン使ってOK。
P/Invokeのパフォーマンスがよくなる。
ちなみにC++/CLIではデフォルトでその属性がONになってる。
0767デフォルトの名無しさん
2008/11/20(木) 18:49:45それを使うとどうなるか、まず思いつくのは
呼び出し規約を間違えるとたぶん落っこちるようになるだろうということ。
0768デフォルトの名無しさん
2008/11/20(木) 18:54:59テキストをスクロールでなくて、ページ切り替えにしようと思って、
<TextBox Background="Transparent"
Margin="0,152,0,0"
Name="TextBox"
TextWrapping="WrapWithOverflow"
AcceptsReturn="True"
AcceptsTab="True"
VerticalScrollBarVisibility="Visible"
FontSize="14"
Panel.ZIndex="5">
</TextBox>
を
<FlowDocumentReader>
<TextBox Background="Transparent"
略
</TextBox>
</FlowDocumentReader>
としたところ、
エラー 2 プロパティ 'Document' は、型 'TextBox' の値をサポートしません。
とエラーになっています。値をひとつずつ消してみてもだめでした。
FlowDockmentReaderに背景を透明にして、テキストファイルを読み込むには、どのようにしたらいいんでしょう?
0769デフォルトの名無しさん
2008/11/20(木) 19:15:21MouseDown?
MouseLeftButtonDown?
MouseMove?
MouseLeftButtonDownして、MouseMoveしているときのイベントに動作を割り当てるには、どう書きゃいいんですか?
0770デフォルトの名無しさん
2008/11/20(木) 19:18:33FlowDocumentReaderの解説読めば、TextBoxが子要素にならないのは分かると思うが
0771デフォルトの名無しさん
2008/11/20(木) 19:28:38後学のために教えてください。
Event Tool Barってどこのこと?
0772764
2008/11/20(木) 20:15:09>>767
CallingConventionのことですか?
ふつうにuser32とかのWin32API呼んでる限り大丈夫ですよね。とくに指定してないんですが
>>766
GACに入れるような奴だと問題あるというのは
どういうストーリーが想定されるんでしょうか
0773デフォルトの名無しさん
2008/11/20(木) 21:10:57No Touch DeploymentやWPF-XBAPのような、本来プラットフォーム呼び出しができない
制限ゾーンで動くアプリケーションから不用意にP/Invokeを使ったメソッドが呼び出されてしまう。
もちろんパラメータを十分吟味して危険でないことが保障できれば使ってもよい。
一般的にはひとつの処理で大量にP/Invokeを使う場合に、
権限チェックを少ない回数で済ませる為に使用する。
[DllImport("Kernel32.dll"),SuppressUnmanagedCodeSecurity]
static extern int Hoge();
[SecurityPermissionAttribute(SecurityAction.Demand, UnmanagedCode = true)]
void OneTask() {
for (i=0; i<1000; i++) { ...; Hoge(); } // 1000回呼ぶ
}
// OneTask()で1回だけ権限チェックし、1000回分の権限チェックを省略している。
0774764
2008/11/20(木) 21:24:27なるほど。その使い方で分かりました。ありがとうございます。
この属性があるとなしで30〜40倍くらい差があるなんて聞いたもので。。
0775デフォルトの名無しさん
2008/11/20(木) 21:55:33どちらも、DBにSQLをなげて、戻ってきた結果のかたまり、
と解釈していたのですが、どうやら両者は異なるようなので・・・
0776デフォルトの名無しさん
2008/11/20(木) 22:15:02DataTable間のリレーションとかも管理
0777デフォルトの名無しさん
2008/11/20(木) 22:26:230778デフォルトの名無しさん
2008/11/20(木) 22:32:580779デフォルトの名無しさん
2008/11/20(木) 22:36:070780デフォルトの名無しさん
2008/11/20(木) 22:37:060781デフォルトの名無しさん
2008/11/20(木) 22:43:370782デフォルトの名無しさん
2008/11/20(木) 22:44:08ToStringは必要ないんじゃなくて標準では無いだけ
0783デフォルトの名無しさん
2008/11/20(木) 22:46:510784デフォルトの名無しさん
2008/11/20(木) 22:50:05C++では、書式文字列変換はストリームとロケール周りの仕事。
0785デフォルトの名無しさん
2008/11/20(木) 22:50:24C++ はしらんが ToString に相当するものをつくるだけだろ?
0786デフォルトの名無しさん
2008/11/20(木) 23:14:17「文字列っていうものと、それを加工してくれるものがある」くらいな認識なんだろう。
Cから入った人なら「ライブラリ楽すぎる」くらいに思うが。
まあアセンブリとかさらに低級なとこから入った人もCもゆとり仕様なんだろうけどさ。
0787デフォルトの名無しさん
2008/11/20(木) 23:15:440788777
2008/11/20(木) 23:50:34C#で書いてみたくて色々調べてた所、IPメッセはプロトコルとして
全て文字列でコマンドを表現しているらしいのですが、ヘッダには
#define IPMSG_BR_ENTRY 0x00000001UL
と定義しているようなコマンドをソースを眺める限り、文字列に変換
しているように見えなかった為、>>777のような事があるのかと質問させて
頂きました。しかし、Cのソースって全然意味が分からない…orz
どっかに.netで書いたサンプルでもあればいいんですが…。。
0789デフォルトの名無しさん
2008/11/21(金) 00:05:37イメージが主役。C/C++ も型はあんだけど結局それの上にある
どういうことかっつーと文字列も整数値も結局ただの「バイト列」
であってそのように扱えるんだべよってこと。
・・・たぶんこういうこと聞きたいんだよね?
0790777
2008/11/21(金) 00:20:22有り難う御座います。いかんせんC#から始めたのでイメージでしか
分かりませんが、そういう事を聞きたかったような気もします…(汗
何処で文字列にしているのかは未だに分かりませんが、コマンド部分の
論理和などを使っている所も見受けられるので、安易にstringなどで
定義せずに、取りあえず必要なところでキャストしつつ試してみたいと
思います。
0791748
2008/11/21(金) 01:11:53747さんが書いてくれた通りです。
デザイン・ビューでプロパティー・ウィンドーをみると
雷みたいなボタンがあります。
プロパティー・ウィンドーがなかったらF4を押してください。
0792デフォルトの名無しさん
2008/11/21(金) 01:47:45public override void Write(byte[] array, int offset, int count)
byte[] arrayはバッファと言うことですが指定するバイトサイズは決まりがあるんでしょうか?
多く確保した方がパフォーマンスが上がったりしますか?
0793デフォルトの名無しさん
2008/11/21(金) 07:21:550794デフォルトの名無しさん
2008/11/21(金) 08:40:080795デフォルトの名無しさん
2008/11/21(金) 10:19:17いまさら9x系なんて使わないんだしUnicodeにしとけよって話じゃね?
それともパフォーマンスに関係あるのかな?
0796デフォルトの名無しさん
2008/11/21(金) 12:13:54配列とList<>でどっちが早いですか?
0797デフォルトの名無しさん
2008/11/21(金) 12:14:180798デフォルトの名無しさん
2008/11/21(金) 12:14:50本当ですか?うそですか?
0799デフォルトの名無しさん
2008/11/21(金) 12:15:53測ってみれば
0800デフォルトの名無しさん
2008/11/21(金) 12:16:35ありがとうございました。
0801デフォルトの名無しさん
2008/11/21(金) 12:17:26その上,直接配列を触る方が最適化が効きやすい
0802デフォルトの名無しさん
2008/11/21(金) 12:26:05格子状にボタンが10×10個あるフォームを作って
ボタン入力があったら押した座標に応じた処理を行う予定ですが
フォーム側で子コントロールの Click イベントを拾う方法はありますか?
Win32 では親ウィンドウでメッセージを拾うだけでしたが
C# では Click イベントを100個追加する必要があるのでしょうか?
0803デフォルトの名無しさん
2008/11/21(金) 12:29:32http://www.atmarkit.co.jp/fdotnet/directxworld/directxworld06/directxworld06_04.html
↑のLightweightList<T>ってどういう実装?
ただのラッパーじゃないよね?
0804デフォルトの名無しさん
2008/11/21(金) 12:38:05for (int i = 0; i < this.array.Length; i++) { action(ref this.array[i], i); }
}
こうじゃね
大きい構造体のコピーを避けてるんだろ
配列に直接foreachするときは最適化されるから気にしなくていいよ
0805デフォルトの名無しさん
2008/11/21(金) 12:39:13だから List<T>.ForEach が 2.0 でだいぶ改善されたデリゲート
呼び出しの分巻き返して foreach より速いんだけど T のサイズ
が大きくなるとコピーコストが問題になってきて遅くなるから
一定サイズコピーしか発生しない ref 渡しになっていると
実装は内部配列で for 回してるだけだと思うよ
0806デフォルトの名無しさん
2008/11/21(金) 12:45:02{
private T[] array;
public void ForEach(LightweightAction<T> action)
{
for (int i = 0; i < array.Length; i++)
{
action(ref array[i], i);
}
}
public void Add(T obj){ ... }
}
こんな感じ?
List<T>にあるメソッドを自前で実装しなきゃならんのか
0807デフォルトの名無しさん
2008/11/21(金) 12:47:38http://ja.wikipedia.org/wiki/%E3%83%95%E3%83%A9%E3%83%83%E3%83%88
フラット (flat) - 英語で、平らな・平坦な。
♭ - 音楽で音を半音下げること
0808デフォルトの名無しさん
2008/11/21(金) 12:48:00PictureBoxでやれば
0809デフォルトの名無しさん
2008/11/21(金) 12:49:12http://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%A3%E3%83%BC%E3%83%97_(%E6%9B%96%E6%98%A7%E3%81%95%E5%9B%9E%E9%81%BF)
英語で、「鋭い」「尖った」「(坂など)が険しい」「鮮明な」「鋭敏な」という状態を表す形容詞。
♯ - 音楽で音を半音上げること
0810デフォルトの名無しさん
2008/11/21(金) 12:51:34Perlとかだとあるよね
0811デフォルトの名無しさん
2008/11/21(金) 12:53:230812デフォルトの名無しさん
2008/11/21(金) 12:55:51遅いストリームなら数K
早いストリームなら数M
辺りが基本
0813デフォルトの名無しさん
2008/11/21(金) 12:56:34大きくしたからって早くなるってもんでもないんじゃない
0814デフォルトの名無しさん
2008/11/21(金) 12:59:02{
}
class A
{
public A()
{
LightweightAction<S> list = new LightweightAction<S>();
list.Add(new S());
list.Add(new S());
list.ForEach(F);
}
private void F(ref S s, int index)
{
}
}
デリゲートの渡し方はこれでいいんでしょうか?
0815デフォルトの名無しさん
2008/11/21(金) 13:02:020816デフォルトの名無しさん
2008/11/21(金) 13:16:27public A()
{
LightweightList<S> list = new LightweightList<S>();
list.Add(new S());
list.Add(new S());
LightweightAction<S> action = new LightweightAction<S>(A.F);
list.ForEach(action);
}
private static void F(ref S s, int index)
{
}
0817デフォルトの名無しさん
2008/11/21(金) 13:20:40ありがとうございます。
じゃあ、受信する総バイト数ぐらいを指定しておけば問題ないですね。
0818デフォルトの名無しさん
2008/11/21(金) 13:20:47>>811
HDDみたいな遅延書き込みが有効なデバイスだと、
書き込みサイズを増やしすぎると返ってパフォーマンスが下がることが多い。
64KBより増やすのはやめておいた方がベター。
これはWindowsのAPI(WriteFile)の挙動のせい。
サイズが小さすぎる書き込みはFileStreamのキャッシュである程度救われてる。
このサイズがデフォルトでは4096 byte。数字はコンストラクタで指定できる。
FileStreamへのバッファサイズ以下の書き込みは、
バッファサイズまで溜めてから実行される。
バッファサイズよりも大きな書き込みは、直接API(WriteFile)に渡される。
結論としては、小さいサイズの書き込みについてはそこまで神経質になる必要が無くて
大きいサイズについては64KBより増やすのは避けるべき。
0819デフォルトの名無しさん
2008/11/21(金) 13:20:500820デフォルトの名無しさん
2008/11/21(金) 13:25:450821デフォルトの名無しさん
2008/11/21(金) 13:40:12ゲームのような特殊な最適化が必要なケース以外は使うことはないな。
そこまでの高速化をはかりたいならunsafe使えよと言いたい。
0822デフォルトの名無しさん
2008/11/21(金) 14:23:44詳しい解説ありがとうございます。
FileStreamのキャッシュなんて言うのもあるんですね。
バッファより大きな書き込みはバッファを使わないってことは
大きいサイズのファイルだとWriteByteメソッドとWriteメソッドは
パフォーマンスにそれほど差が出ないと言うことでしょうか?
0823デフォルトの名無しさん
2008/11/21(金) 16:33:19Just-In-Time (JIT) デバッグを呼び出すための詳細については、
ダイアログ ボックスではなく、このメッセージの最後を参照してください。
************** 例外テキスト **************
System.Reflection.TargetInvocationException: 呼び出しのターゲットが例外をスローしました。 ---> System.Runtime.InteropServices.COMException (0x800700AA): 要求されたリソースは使用中です。 (HRESULT からの例外: 0x800700AA)
具体的にエラーを吐いているのは、AxWebBrowserです。
どこかのページで、Load関数に書いてはいけないというのを見かけて、Load関数から開始直後に動くTimer関数に移動したら一時的に起こらなくなっていたのですが、また再発しました。
すみませんが、根本的な回避法を教えてください。
0824823
2008/11/21(金) 16:37:37AxWebBrowser.Navigate(url); で、ページに移動している最中に止まっているようです。
0825デフォルトの名無しさん
2008/11/21(金) 17:05:34unsafe使ったところで配列アクセスは早くならない
つーかunsafeで速度を稼げるケースなんかない
きちんと計測してからものを言えよ
0826デフォルトの名無しさん
2008/11/21(金) 17:28:030827デフォルトの名無しさん
2008/11/21(金) 17:38:53Unsafe な画像処理
http://www.microsoft.com/japan/msdn/columns/csharp/csharp11152001.aspx
0828デフォルトの名無しさん
2008/11/21(金) 18:17:59C#でも同じようにweb上で実行させるプログラムを書くことは出来るでしょうか?
既にWindows上で動くC#アプリは書き終わったのですが、同じことをweb上で
実行するために一からcgiやphpで書き直すのは正直しんどいです(´・ω・`)
0829デフォルトの名無しさん
2008/11/21(金) 18:23:07と1日悩んでたら
× Name.Trim(' ');
○ Name = Name.Trim(' ');
で解決しました。
俺みたいな馬鹿が他にも居るハズなのでメモ。
0830デフォルトの名無しさん
2008/11/21(金) 18:40:260831デフォルトの名無しさん
2008/11/21(金) 19:06:23>C#でも同じようにweb上で実行させるプログラムを書くことは出来るでしょうか?
できます。でもCGIは使おうね。
0832デフォルトの名無しさん
2008/11/21(金) 19:56:250833デフォルトの名無しさん
2008/11/21(金) 19:57:23メッセージの定数が被らないように決めるには何かルールありますか?
0834デフォルトの名無しさん
2008/11/21(金) 20:06:16WM_APP
0835デフォルトの名無しさん
2008/11/21(金) 20:06:19WM_USER
0836デフォルトの名無しさん
2008/11/21(金) 20:08:15http://akky.cjb.net/mfc/message.html
0837デフォルトの名無しさん
2008/11/21(金) 20:26:30それは例が悪いだろ
GetPixelの代わりならMarshalで十分
0838デフォルトの名無しさん
2008/11/21(金) 20:27:27ボタンを使う必要性が全く感じられない
>>808の言うようにPictureBoxでいいと思う
見た目をボタンっぽくしたかったらButtonRenderer使えばいい
0839デフォルトの名無しさん
2008/11/21(金) 20:31:39ありがとうございます
WM_APP(0x8000)以降の番号を使えばいいんですね
WM_USERは危険そうなのでやめときます
0840デフォルトの名無しさん
2008/11/21(金) 21:31:18そうですか、フルスクラッチしてでもCGIで一から書き直すべきですか(´・ω・`)
0841デフォルトの名無しさん
2008/11/21(金) 21:56:460842デフォルトの名無しさん
2008/11/21(金) 21:57:420843デフォルトの名無しさん
2008/11/21(金) 22:02:540844デフォルトの名無しさん
2008/11/21(金) 22:24:21そういう予定なら、設計時から共通部分、Winアプリ部分、
Webアプリ部分を分けられるようにしておけ。
0845デフォルトの名無しさん
2008/11/21(金) 22:31:30NiVE WikiのFrontPage→プラグイン
サンプルのプラグインをSharpDevelopでビルドしたいんですが、
型または名前空間名 'nicoAE' が見つかりませんでした。
using ディレクティブまたはアセンブリ参照が不足しています。
(CS0246) - B:\Tools\SamplePlugin\Brightness.cs:4,7
のようなエラーがたくさん表示され、ビルドできません。どうすればいいですか?
0846デフォルトの名無しさん
2008/11/21(金) 22:38:37本体に付いてるnivcoAE.History.dllとnicoAE.Plugin.dllを参照設定に追加する
SharpDevelopなんて存在価値無いからVisualC#2008Express使うといいよ
0847デフォルトの名無しさん
2008/11/21(金) 22:59:26SharpDevelopってC#3.0対応してんの?
0848845
2008/11/21(金) 23:21:44上手くいきました。ありがとうございます。
>>847
Wikipediaを見たら、現在2.0までしか対応していなくて、3.0は未対応である
事が分かりました・・。
0849デフォルトの名無しさん
2008/11/21(金) 23:51:16今見ると色々酷いwww
SharpDevelopで作れるけど、C#2008Express落として.NET2.0ターゲットにして作るのもいいよ
0850デフォルトの名無しさん
2008/11/22(土) 09:39:500851デフォルトの名無しさん
2008/11/22(土) 09:46:51str.Chars(0);
じゃなく
str[0];
みたいにアクセスできる、便利じゃん。
0852デフォルトの名無しさん
2008/11/22(土) 09:53:34組み込み型である配列と、ユーザー定義のクラスの差が縮まる。
0853デフォルトの名無しさん
2008/11/22(土) 10:12:02object item = dictionary.Get("キー");
こんなjavaみたいな格好悪いコードになる
0854デフォルトの名無しさん
2008/11/22(土) 12:04:45素朴にイベントを投げたらスレッドAで処理されてしまうようで困っています。
よろしくお願い致します。
0855デフォルトの名無しさん
2008/11/22(土) 12:26:20それ以外なら独自にメッセージポンプに近い仕掛けが必要。
0856デフォルトの名無しさん
2008/11/22(土) 12:44:57やったことないんで適当なこと言うけど、
待機ハンドルを使えばとりあえず可能だろうね。
それが最適な方法かどうかは知らんけど
0857デフォルトの名無しさん
2008/11/22(土) 12:59:43>>856
ありがおつございます
Invokeでできました!
0858デフォルトの名無しさん
2008/11/22(土) 13:41:49label を 3 つ用意して
label1.ForeColor = Color.FromArgb(0, 255, 255);
label2.ForeColor = Color.FromArgb(255, 0, 255);
label3.ForeColor = Color.FromArgb(255, 255, 0);
とすればできますが、label1 だけでできるとスマートだなーと。
0859デフォルトの名無しさん
2008/11/22(土) 13:48:380860デフォルトの名無しさん
2008/11/22(土) 13:50:12やはり簡単な方法はない感じですか?
0861デフォルトの名無しさん
2008/11/22(土) 13:50:38俺もこれははまったことがある。なんか違和感あるよね。
stringはイミュータブルだからこういう実装になってんのかな?
0862デフォルトの名無しさん
2008/11/22(土) 13:52:360863デフォルトの名無しさん
2008/11/22(土) 13:55:14ちゃんと理屈が分かってるのに違和感感じることに違和感感じるわ。
stringの性質を考えたらその実装いがいありえないじゃん。
0864デフォルトの名無しさん
2008/11/22(土) 13:55:48そっちのほうが怖いぞ。
0865デフォルトの名無しさん
2008/11/22(土) 13:57:540866デフォルトの名無しさん
2008/11/22(土) 14:01:440867デフォルトの名無しさん
2008/11/22(土) 15:35:49↓みたいなことをやりたいのですができるでしょうか?
... testFunction(Hikisuu hikisuu)
{
//hikisuuにnullはダメよん!
}
....
//testFunction呼び出し
testFunction(null);
ってやると、コンパイル時にエラーを吐いてくれるような、そんな事ってできるでしょうか?
0868デフォルトの名無しさん
2008/11/22(土) 15:40:43しかし、必要性を感じないな。
引数にnullを指定しても良いと明確に分かっている時以外に普通は即値のnullなんか指定しないから。
0869デフォルトの名無しさん
2008/11/22(土) 15:48:340870デフォルトの名無しさん
2008/11/22(土) 15:50:27こりゃないな・・・即値のnullだけはじいてどうなるんだろ。
普通ははDebug.Assertでチェック入れといて、Releaseではずすかね。
0871デフォルトの名無しさん
2008/11/22(土) 15:53:32名前空間はまとめては管理してないから、
reflectionで全Typeを列挙してかったっぱしから調べてゆくしかない。
0872デフォルトの名無しさん
2008/11/22(土) 15:53:44コンパイル時にエラー出すのは無意味だよ
PostSharpとか使えば,コンパイル時(正確にはコンパイル後)に
if (hikisuu == null) throw new ArgumentNullException("hikisuu");
を生成したりできる
AOPってやつだね
>>869
名前空間は文字通り名前なんだよ
たとえばSystem.Collections.ArrayListはSystem名前空間の中にCollectionsが
入ってるわけではなく,Collectionsの中にArrayListが入ってるわけでもない
System.Collections.ArrayListという名前の型があるだけなの
だから,やるとすればアセンブリ内にあるすべての型のTypeオブジェクトを取得して調べるしかない
0873デフォルトの名無しさん
2008/11/22(土) 15:55:48DbC (Design by Contract)としてそういうことができたら良いねって話は昔からあるけど
今のC#ではできない。
FXCopを使ったIL解析である程度は検出できる。
0874デフォルトの名無しさん
2008/11/22(土) 16:00:07コンパイル時に出来るものなの?
ちょっとFXCop使ってみようかな。
0875デフォルトの名無しさん
2008/11/22(土) 16:01:44ほとんどの引数の値は実行時までわかるわけないだろ
0876デフォルトの名無しさん
2008/11/22(土) 16:07:06そうなんですか・・・てっきりVSのインテリセンスの実装とかで楽なようにそういうのが用意されてるんだと思ってましたorz
0877デフォルトの名無しさん
2008/11/22(土) 16:44:20string t = "a";
t += "b";
とかできるけど
0878デフォルトの名無しさん
2008/11/22(土) 16:46:13string t = s;
t += "b";
Console.WriteLine(object.ReferenceEquals(s, t));
0879デフォルトの名無しさん
2008/11/22(土) 16:48:08ってことは、
string s = "";
foreach(t in list){
s += t.Text;
}
みたいな処理はやめたほうがいいのかいね
0880デフォルトの名無しさん
2008/11/22(土) 16:50:36一般にはStringBuider使う
0881デフォルトの名無しさん
2008/11/22(土) 16:52:23重くなると思ってたわー(´;ω;`)
今までのコード全部書き直しだお(´;ω;`)(´;ω;`)(´;ω;`)
0882デフォルトの名無しさん
2008/11/22(土) 17:02:46string s = "hoge"
と初期化したら"hoge"自体がインスタンスになるだろ?だから
s += "hoge"
だと"hogehoge"というインスタンスが新たに作成されるよな?
StringBuilderだと"hoge"という参照自体が"hogehoge"に変更されるので
メモリとか節約できて実行速度が速くなるはず
0883デフォルトの名無しさん
2008/11/22(土) 17:12:350884デフォルトの名無しさん
2008/11/22(土) 17:21:19MemoryStream ms = new MemoryStream();
Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS");
byte[] bytes = sjisEnc.GetBytes(tmpstr);
ms.Write(bytes, 0, bytes.Length);
こういう感じでMemoryStreamに書き込んだ後に追加したい場合
byte[] nullbyte = { 0 };
int count = 0;
while (count < nullbyte.Length)
{
ms.WriteByte(nullbyte[count++]);
}
MSDNでは上記のように書いてありましたが、こうやって追加する
以外にないのでしょうか。
0885デフォルトの名無しさん
2008/11/22(土) 17:26:550886デフォルトの名無しさん
2008/11/22(土) 17:27:42いや、だから"hoge"というStringクラスのインスタンスの参照が
String型の変数に格納されると理解してるんだが違うのか?
0887デフォルトの名無しさん
2008/11/22(土) 17:35:13たぶん間違ってる
0888デフォルトの名無しさん
2008/11/22(土) 17:36:23おかしいのはこっちでしょ
「参照自体」を「インスタンス」と読み替えたとしても,解ってる人でないと意味不明だと思う
StringBuilderは内部で大きめのStringを確保して直接書き込んでる
0889デフォルトの名無しさん
2008/11/22(土) 17:44:30StringBuilderが持ってるStringってStringクラスのインスタンスじゃないのかの?
0890884
2008/11/22(土) 17:48:08有り難う御座います。offsetの意味を勘違いしていたようです。
普通に以下で追記出来ました。
ms.Write(nullbyte, 0, nullbyte.Length);
そうするとWriteByteの使い道ってなんでしょう?
0891デフォルトの名無しさん
2008/11/22(土) 17:52:01Stringはイミュータブルなんだからそれはない
charの配列で持っているんだろう
0892デフォルトの名無しさん
2008/11/22(土) 17:56:02たまにそれが不便に感じるときがある
0893デフォルトの名無しさん
2008/11/22(土) 18:02:41Stringも出所はcharの配列でないの?
StringBuilderも扱ってるのはStringみたいだけどMSDN見ると
持っているインスタンスは同じだけど連結の方法が違うよみたいな?
http://msdn.microsoft.com/ja-jp/library/system.text.stringbuilder(VS.80).aspx
0894デフォルトの名無しさん
2008/11/22(土) 18:02:57必要に応じてstringに変換すればいいだけ。
0895デフォルトの名無しさん
2008/11/22(土) 18:03:08違うよ本当にStringだよ
internalメンバ使ったり,ポインタでchar*として扱ったりすれば変更できる
0896デフォルトの名無しさん
2008/11/22(土) 18:07:06StringBuilder.ToStringは文字列のコピーをしないから
高速だ、みたいなことが書かれていたな。
0897デフォルトの名無しさん
2008/11/22(土) 18:11:01その後にAppendされるとバッファを確保し直すみたい
0899デフォルトの名無しさん
2008/11/22(土) 18:48:08将来の.NETでも同じとは限らないけどね。
BCLのライブラリ設計ではことごとくstringをimmutableとして扱ってるから
外部からはimmutableとして扱っておけばそれでいいと思う。
0900デフォルトの名無しさん
2008/11/22(土) 19:09:59変更できないっつーとゴミオブジェクトがボコボコ生産されるってことだよね?
0901デフォルトの名無しさん
2008/11/22(土) 19:11:18説明はあってるよな?
0902デフォルトの名無しさん
2008/11/22(土) 19:11:420903デフォルトの名無しさん
2008/11/22(土) 19:18:51使い回しが利く
他所様に勝手に書き換えられる心配がない
他にもあるかも
0904デフォルトの名無しさん
2008/11/22(土) 19:19:56ここの意味が分からん
たぶん間違ってる
0905デフォルトの名無しさん
2008/11/22(土) 19:27:58今度は理解する努力するから
0906デフォルトの名無しさん
2008/11/22(土) 19:32:00こういう話がある。
http://www.atdot.net/~ko1/w3ml/w3ml.cgi/yarv-dev/msg/541
0907デフォルトの名無しさん
2008/11/22(土) 19:40:38あとは通じる
0908デフォルトの名無しさん
2008/11/22(土) 19:44:32>可変長変更を重視するなら「木構造、immutable」、
>添字によるアクセスを重視するなら「固定長配列、immutable」が有利です。
後者の意味がよく分からんのだけど・・・
なんでimuutableが関係してくるのか
あと、部分文字列の取り出しがfix/mだと×なのかわからん
0909デフォルトの名無しさん
2008/11/22(土) 19:48:100910デフォルトの名無しさん
2008/11/22(土) 19:52:30>>903も書いてるけど、他所様に勝手に
書き換えられる心配がないのはかなりありがたい。
もしstrがimmutableじゃなかったら、
void DoSomething(string str)
{
str = str ?? string.Empty;
if( str.Length > 12 ) {
// エラー処理
return;
}
// 何らかの処理
Hogehoge();
PiyoPiyo();
// Hogehoge()やPiyoPiyo()の中の処理によって
// strの長さが12より大きくなってる可能性がある
}
C++でconst char*やconst std::string&を使って
文字列の受け渡しをするとこういうことが起こりうる。
0911デフォルトの名無しさん
2008/11/22(土) 19:58:15でもconst char*で変更されることなんてあったっけ
0912デフォルトの名無しさん
2008/11/22(土) 19:59:05実装ではそうなってるかも知れないけど
0913デフォルトの名無しさん
2008/11/22(土) 20:00:55添字自体はmutableでもいいが、
直前にmutableのメリットはあまりないと書いているのを踏まえるているだけだろう。
fix/mで部分文字列取り出しが×なのは、>>829を見れば分かる。
0914デフォルトの名無しさん
2008/11/22(土) 20:02:52>>829だとfix/iが×なんじゃないの?
0915デフォルトの名無しさん
2008/11/22(土) 20:05:40char *p; //グローバル変数これでDoSomething(p);とする。
HogeHogeやPiyoPiyoがpを書き換えたら……、というわけ。
0916デフォルトの名無しさん
2008/11/22(土) 20:06:14#include <cstdio>
char g_buf[256] = "piyo";
void HogeHoge() {
g_buf[0] = 'H';
}
void DoSomething(const char* buf){
puts(buf);
HogeHoge();
puts("const char*はimmutable stringではない");
puts(buf);
}
int main() {
DoSomething(g_buf);
}
0917デフォルトの名無しさん
2008/11/22(土) 20:06:18immutableであれば==で値の比較が出来ることと、他の参照型との整合性が
両立するんだってことがartonって人の本には書いてあった。
つまりimmutableであれば、値が等しいことと同一であることを
区別する必要がないからね。
0918デフォルトの名無しさん
2008/11/22(土) 20:08:20大本のポインタから変更される可能性があるってことか
0919デフォルトの名無しさん
2008/11/22(土) 20:10:10string s = "hoge";
string t = "hoge";
でs==tがtrueになるかfalseになるかは言語によるんじゃないの?
0920デフォルトの名無しさん
2008/11/22(土) 20:12:29そうなんだけど、だから少なくともC#の設計者はs==tがtrueになるようにしたかったんでしょ。
俺もその判断は正しいと思うけど。
0921デフォルトの名無しさん
2008/11/22(土) 20:13:24fixed (char* pStr = str) { pStr[index] = value; }
}
もうこれで
0922デフォルトの名無しさん
2008/11/22(土) 20:13:580923デフォルトの名無しさん
2008/11/22(土) 20:14:32あーそういう意味か
immutableだと単純にtrueに出来ないってことか
0924デフォルトの名無しさん
2008/11/22(土) 20:15:33すまん、勘違いした。
StringBuilderやList<>のRemoveで先頭からn文字目取り出すとき、
n文字目以降を先頭に移動する操作が必要だろ。
それでO(n)だ。
0925デフォルトの名無しさん
2008/11/22(土) 20:15:560926デフォルトの名無しさん
2008/11/22(土) 20:17:40ああそういう意味なのか
>>906は説明をかなり端折ってるからなー
0927デフォルトの名無しさん
2008/11/22(土) 20:35:49str1 = "hoge"; str2 = "hoge";
と書いた場合、strcmpするまでもなく、str1 == str2(ポインタの比較)だ。
誰からも参照されなくなっても、"hoge"という文字列リテラル(なオブジェクト)は
静的に存在し続ける。
このC(C++も同様)におけるふるまいと違和感を持たせないためにも、C#では
今のような実装になってるんじゃないかな。
0928デフォルトの名無しさん
2008/11/22(土) 20:40:09C# のがどうかは知らないけど、一般的なアルゴリズムの場合、
検索対象 N 文字、検索したい文字 M 文字なら O(N/M) だった気が。
0929デフォルトの名無しさん
2008/11/22(土) 20:42:06>>917の理屈でいけばほとんどの場合O(1)に出来ると思ったんだけど
0930デフォルトの名無しさん
2008/11/22(土) 20:47:02・左辺と右辺が同じオブジェクトだった場合にtrueを返すのは高速
・左辺と右辺が異なるオブジェクトで、文字列の長さも異なっていた場合にfalseを返すのは高速
どちらでも無い場合は今まで通り。
0931デフォルトの名無しさん
2008/11/22(土) 21:14:03Outlook から仕事や予定表のアイテムをファイルに保存することができましたが、
その出力したファイルを Outlook に読み込む方法が分かりません。
そういうことって出来るんでしょうか。
リファレンスを見てもファイルを開いて読み込むメソッドなどは見当たりませんでした。
0932デフォルトの名無しさん
2008/11/23(日) 01:54:28set.Add(1);
public class CustomHashSet<T> : HashSet<T>
{
HashSet<T> _HashSet = new HashSet<T>();
public void Add(ref T obj)
{
this._HashSet.Add(obj);
}
public void UnionWith(ref IEnumerable<T> other)
{
this._HashSet.UnionWith(other);
}
}
これのAddメソッドの所、refを付けないと実際にAddされない。
まず、なぜ引数でrefを付けてるのに、呼び出す時に付けなくていいの?
C#3.0の仕様??
で、refをはずしたら、public new void Add(T obj)にせねばならず、実際にAddされない。
この辺のカラクリを誰か教えて!
0933デフォルトの名無しさん
2008/11/23(日) 02:00:29単に基底の方のAddが呼び出されるだけだろ
0934デフォルトの名無しさん
2008/11/23(日) 02:06:210935デフォルトの名無しさん
2008/11/23(日) 02:12:120936デフォルトの名無しさん
2008/11/23(日) 02:14:24COBOLって言語がナウい
0937デフォルトの名無しさん
2008/11/23(日) 02:32:41ドキュメント的な意味で
0938デフォルトの名無しさん
2008/11/23(日) 02:52:330939デフォルトの名無しさん
2008/11/23(日) 03:07:31// that.Left = this.Left + (this.Width - that.Width) / 2;
// that.Top = this.Top + (this.Height - that.Height) / 2;
// ロケーションを使う場合の書き方を教えてください
that.Location = this.Location + (Point)(((this.Width - that.Width) / 2), ((this.Height - that.Height) / 2));
これは駄目でした
0940デフォルトの名無しさん
2008/11/23(日) 03:11:41アンサイクロペディアの記述読めばなんとなく分かるんじゃないかw
0941デフォルトの名無しさん
2008/11/23(日) 05:41:47that.Location = this.Location + new Size((this.Width - that.Width) / 2, (this.Height - that.Height) / 2);
0942デフォルトの名無しさん
2008/11/23(日) 10:03:39この?はなんですか?
out float? result
0943デフォルトの名無しさん
2008/11/23(日) 10:18:130944デフォルトの名無しさん
2008/11/23(日) 10:26:36ありがとう
0945デフォルトの名無しさん
2008/11/23(日) 12:21:53クライアントにもインストールいるならつかえねーな。と。。。
0946デフォルトの名無しさん
2008/11/23(日) 12:35:560947デフォルトの名無しさん
2008/11/23(日) 12:47:57それくらい自分で調べられないような開発者は使えねーな、と。
つか、WinForm用、WebaForm用、どっちの話なんだよ?
0948デフォルトの名無しさん
2008/11/23(日) 12:51:530949デフォルトの名無しさん
2008/11/23(日) 12:59:410950デフォルトの名無しさん
2008/11/23(日) 13:06:19ありがと
改行が入ってしまうのですが原因が別にあるらしいので見直してきます
0951デフォルトの名無しさん
2008/11/23(日) 14:17:10期限日から3日以内なら〜とか、1日以内なら〜と条件分岐させたいのですが、どのような条件文にすればいいのでしょうか?
0952デフォルトの名無しさん
2008/11/23(日) 14:41:32DateTimeどうしを減算したらTimeSpanが返ってくるだろ?
TimeSpanのメソッドにHoursとかDaysとかあるじゃん。
0953デフォルトの名無しさん
2008/11/23(日) 14:58:48TimeSpanが返ってくること自体を知りませんでした・・・
これで何とか実装できそうです、ありがとうございました。
0954デフォルトの名無しさん
2008/11/23(日) 15:07:52そして、Spreadを開発に使用したこととを銘記する必要がある。
はっきりいって、10万以上だして買う意味わかんね、使わんほうがいいぞ。
0955デフォルトの名無しさん
2008/11/23(日) 19:51:45頭かケツに改行コードつくのなら、String#Trimで取り除けばいいんじゃね?
0956デフォルトの名無しさん
2008/11/23(日) 23:02:29ゴミだからさっさと別を選べ。
もうVB屋さんの知るグレープシティじゃないんだよ。
0957デフォルトの名無しさん
2008/11/24(月) 00:18:50C#って文字通りシャープな感じがあるよね。構文とかに。Javaはもっさりした感じでのほほん。
VBはこざかしい。
0958デフォルトの名無しさん
2008/11/24(月) 00:22:49C#は殺伐とした職場
0959デフォルトの名無しさん
2008/11/24(月) 00:58:27タイプ量は若干多いけど。
ところでC#(VS2005)のエディタってVBみたいにabstractとかインターフェイスのメンバの
スケルトンの自動挿入機能ってないの?
0960デフォルトの名無しさん
2008/11/24(月) 01:00:160961デフォルトの名無しさん
2008/11/24(月) 01:10:19今までリアルで気づかなかった
VBだと問答無用で挿入されるからなあ。
0962デフォルトの名無しさん
2008/11/24(月) 05:46:30あと、無性に If 文の条件式部分を括弧で括りたくなる。
\n と書いても改行されなくてすこし悩む。
0963デフォルトの名無しさん
2008/11/24(月) 08:41:14正しい鍵で復号しようとした時よりも時間がかかるのはどうして?
0964デフォルトの名無しさん
2008/11/24(月) 08:57:170965デフォルトの名無しさん
2008/11/24(月) 09:06:15ワイルドカード使うのにRegex必要なのか
0966デフォルトの名無しさん
2008/11/24(月) 09:34:520967デフォルトの名無しさん
2008/11/24(月) 09:37:39メソッド呼び出しなのですっきりですね
0968デフォルトの名無しさん
2008/11/24(月) 09:56:470969デフォルトの名無しさん
2008/11/24(月) 09:59:250970デフォルトの名無しさん
2008/11/24(月) 10:02:240971デフォルトの名無しさん
2008/11/24(月) 10:06:480972デフォルトの名無しさん
2008/11/24(月) 10:10:20IEnumerableを実装してればforeachが使えるとか
IDisposableを実装してればusingが使えるとかも
同じ類じゃなかろうか。
(気持ち悪いからこの際自分で自由に構文追加できるようにしてくれよ
と思うこともある)
0973デフォルトの名無しさん
2008/11/24(月) 10:11:57VBのソースをC#に変えるのがめんどうになってるな
0974デフォルトの名無しさん
2008/11/24(月) 10:49:10それとも変数のアドレスを代入してるの?
0975デフォルトの名無しさん
2008/11/24(月) 10:57:59ライブラリでできることは極力ライブラリでやるからなぁ。
文法の追加(3.0のLINQとか4.0のdynamic)すら、
単純な構文糖衣で、実態はライブラリ呼び出しだし。
0976デフォルトの名無しさん
2008/11/24(月) 10:59:31意味わからんけど、自動プロパティは、
int X{set; get;}
と書くと、
int _x = 0;
int X { set { _x = value; } get { return _x; } }
という匿名のメンバー変数が自動生成されるだけ。
0977デフォルトの名無しさん
2008/11/24(月) 11:04:41その
int _xがポインタかどうか知りたい。
0978デフォルトの名無しさん
2008/11/24(月) 11:06:240979デフォルトの名無しさん
2008/11/24(月) 11:10:50=値コピーしてるでFA?
0980デフォルトの名無しさん
2008/11/24(月) 11:12:42976のコードと等価、という事実以上でも以下でもないと思うんだけど。
頭悪いの?
0981デフォルトの名無しさん
2008/11/24(月) 11:14:59うん。悪い。
thx
0982デフォルトの名無しさん
2008/11/24(月) 11:18:410983デフォルトの名無しさん
2008/11/24(月) 11:22:020984デフォルトの名無しさん
2008/11/24(月) 12:22:250985デフォルトの名無しさん
2008/11/24(月) 12:27:110986デフォルトの名無しさん
2008/11/24(月) 12:28:370987デフォルトの名無しさん
2008/11/24(月) 12:52:28ありがとうございます
キーに適合する複数の値を返して欲しい場合は自分で作るしかないっぽいですね
0988デフォルトの名無しさん
2008/11/24(月) 12:53:10検索のためだけに存在する配列なら、Dictionaryで保持するという方法もある。(値はnullをセットする)
UIに表示するなど、順序も保持したいのなら、SortedDictionary。
検索は、変数.ContainsKey(検索文字列)でチェック出来る。
配列のインデックスを検索したい場合は、Dictionaryの値に、インデックスをセットしておけば、変数.TryGetValueで、存在チェクも兼ねて、取得してくれる。
0989デフォルトの名無しさん
2008/11/24(月) 12:58:31うう...部分一致検索か...
DataTableに突っ込んで、DataTable#Selectで取得してくるのが楽かも。
Selectメソッドフィルタ基準にLIKEがあるので。
0990デフォルトの名無しさん
2008/11/24(月) 13:30:34DataTableのほうが速いらしいけど。
0991デフォルトの名無しさん
2008/11/24(月) 14:15:32説明不測ですみません、やしたいのはまさにその部分一致検索でした
DataTableでやってみたらforeachで回してた時より大分速くなったのでこれを使っていくことにします
使い方はこんな感じであってますよね・・・?
DataTable t = new DataTable ();
t.Columns.Add("Name",typeof (string));
foreach (string name in NameList) {
DataRow r = t.NewRow ();
r["Name"] = name;
t.Rows.Add (r);
}
t.Select("Name LIKE 'hoge'")
0992デフォルトの名無しさん
2008/11/24(月) 15:40:54C#.NETになるの?
それとも、C#+ASP.NETになるの?
0993デフォルトの名無しさん
2008/11/24(月) 15:52:100994デフォルトの名無しさん
2008/11/24(月) 15:55:150995デフォルトの名無しさん
2008/11/24(月) 17:59:01この二つは常に一緒になってる気がする
わからせないように作ってあるのかもしれんが
0996デフォルトの名無しさん
2008/11/24(月) 18:01:460997デフォルトの名無しさん
2008/11/24(月) 18:31:36元々どういう実装してたのか分からんが、DataTable.Selectは遅いよ
とりあえず実験してみたから、考察は自分でやってくれ
[実験]
852個の英単語(ソート済み)から、先頭一致で"co"を検索する処理を
以下の実装でそれぞれ10000回実行したときの経過時間を計測
(環境: PenM 1.7GHz, Mem 1GB)
1. DataTable.Select, LIKE演算子 (DataTableは事前に作成)
2. LINQ, where句
3. Array.FindAll
4. Array.FindIndex (範囲の下限と上限を探す)
5. 二分探索 + Array.FindIndex (最初の1個だけ二分探索、あとは4と同様)
[結果]
1: 01:14.5145383
2: 00:03.3538505
3: 00:03.4140853
4: 00:00.6785046
5: 00:00.4187657
0998デフォルトの名無しさん
2008/11/24(月) 18:33:46ってこんなに大きな文字でうたってるんだから、いいんじゃない?
0999デフォルトの名無しさん
2008/11/24(月) 18:42:15続きはこちらで
1000デフォルトの名無しさん
2008/11/24(月) 18:42:4510011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。