10/03/26 22:50:16
>>490
bool run = true;
while(run){
Application.Run(new Form1());
Application.Run(new From2());
}
どう・・・なんでしょう。
Program.csにData(Document)保存した方がいいような気もします。
493:デフォルトの名無しさん
10/03/26 22:55:01
>>491
ビューと"ロジック"なんですね。 参考になります。
WPFはスケッチブックと色鉛筆渡されたような気持ちになるので触る勇気がまだありません・・・。
ちなみに、Formは大学ノートとシャーペン。
494:デフォルトの名無しさん
10/03/26 22:56:57
ManageForm.Visible =false
495:デフォルトの名無しさん
10/03/26 22:59:11
ManageForm.Visible =true
496:デフォルトの名無しさん
10/03/26 22:59:36
>>494
メモリ×2
でも、それも手段の一つです。
497:デフォルトの名無しさん
10/03/26 22:59:39
>>489
そもそも「フォームの値」などというものが存在していることそれ自体がおかしい。
WPFとか関係ない。
聞いた感じクラスを使ったプログラミングが理解できてないようだから
まずそれを覚えないことには話にならないよ。
498:デフォルトの名無しさん
10/03/26 23:00:18
>>493
そこじゃないw
WPFでいうビューとロジックの分離っていうのは、デザインとコードをはっきり分離できていれば
デザインはデザイナが担当してコードはプログラマが書くという形で分業できるという考え方。
だからDoc-ViewやMVCでいうならXAMLもコードビハインドもViewに属する。
499:デフォルトの名無しさん
10/03/26 23:15:20
>>497
フィールドの受け渡し、と言うべきでしょうか。
500:デフォルトの名無しさん
10/03/26 23:17:30
言い直しても理解できてなけりゃ同じだろう
501:デフォルトの名無しさん
10/03/26 23:24:59
俺だったらフォーム分けないな
Panelか何かに配置して入れ替える
おそらくデザイナ使いたいからその辺を避けようとしてるのだろうけど
だったらUserControlでも継承すればいいんだよ
502:デフォルトの名無しさん
10/03/26 23:26:52
>>492
おかしなことせんとApplicationContext使えば?
503:デフォルトの名無しさん
10/03/26 23:39:01
>>501
>>502
ありがとうございます。
両方試してみます。
504:デフォルトの名無しさん
10/03/26 23:41:08
クラスライブラリ書くとき内部クラスにするの面倒くさいのでinternal使ってよいですか?
505:デフォルトの名無しさん
10/03/26 23:48:20
例えば
今日の朝生の出演者名簿から
今日の討論の流れをシュミレーションするには
どれぐらいの経験がひつようでしょうか?
506:デフォルトの名無しさん
10/03/27 00:20:58
>>501
その方法で解決できました。
ありがとうございます。
507:デフォルトの名無しさん
10/03/27 03:08:31
>>506
だろ
継承すればいいだろ
508:デフォルトの名無しさん
10/03/27 07:26:53
>>505
朝生視聴歴10年くらい
509:デフォルトの名無しさん
10/03/27 11:52:38
ネットの画像を保存する方法は?
タイマーとか使って一定時間ごとに自動的に保存するようなのを作りたいんだけど。
510:デフォルトの名無しさん
10/03/27 11:57:57
画像がJPEGとかなら、普通にダウンロード。
WebBrowserで取ってきて、キャプチャってのもありだね。
511:デフォルトの名無しさん
10/03/27 12:43:16
>>509
URLリンク(dobon.net)
ほい
512:デフォルトの名無しさん
10/03/27 15:42:11
C#にてWindowsフォームアプリケーションを作成しています。
DataGridViewを置き、
実際に内容が表示されている(値のある)行をクリックしたときはその行を選択状態にさせ
実際に内容が表示されていない下部の余白をクリックしたときは、選択状態を解除したいと考えているのですが、
余白をクリックしたことを検知するにはどのようなイベントを行えばよいのでしょうか。
よろしくお願いします。
513:デフォルトの名無しさん
10/03/27 15:43:24
HITTEST系のイベントなかったっけ?
514:デフォルトの名無しさん
10/03/27 15:46:29
>>512
欄外をクリックしてChange系イベントをもらったときに
選択中のindexを問い合せると-1が返ってきたりしない?
ListBoxではそういう動きをする。
515:デフォルトの名無しさん
10/03/27 15:55:19
そのものずばりの HitTest() メソッドがあるな。
516:デフォルトの名無しさん
10/03/27 17:33:14
あっそ
517:デフォルトの名無しさん
10/03/27 17:43:57
できた
private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
{
if (dataGridView1.HitTest(e.X, e.Y).RowIndex < 0)
{
MessageBox.Show("hoge");
}
}
518:デフォルトの名無しさん
10/03/27 18:26:20
できたね
519:デフォルトの名無しさん
10/03/27 18:42:29
おめでとう。
520:デフォルトの名無しさん
10/03/27 18:45:50
Visual Studio C# Express Editionで、
フォームの入った.csをエディタでいじってフォーム部分を壊してしまったとき
なんとか復活させる方法ないでしょうか。
Express Editionのフォームデザイナが異常終了しちゃうんです。
ビルドはできるし、できあがったexeも実行出来るんですけど。
フォームデザイナだけ言う事聞いてくれない。
521:デフォルトの名無しさん
10/03/27 18:47:26
異常終了って何だよ? 赤いバッテンが出るとかか?
522:デフォルトの名無しさん
10/03/27 18:58:49
ソースのほうを直すしかない
523:デフォルトの名無しさん
10/03/27 19:05:55
exeから逆コンパイルすればいいのでは?
524:デフォルトの名無しさん
10/03/27 19:11:20
>>523
一言余計だ
525:デフォルトの名無しさん
10/03/27 19:15:04
何がやねん
526:デフォルトの名無しさん
10/03/27 19:34:25
せやな
527:デフォルトの名無しさん
10/03/27 19:42:22
これだから大阪民国人は・・・
528:デフォルトの名無しさん
10/03/27 19:50:42
せやせや
529:デフォルトの名無しさん
10/03/27 20:05:06
でんがなまんがな
530:デフォルトの名無しさん
10/03/27 20:26:11
日本人の97%は朝鮮人か中国人の直系
531:デフォルトの名無しさん
10/03/27 20:30:55
そういう言い方だと、朝鮮人とか中国人ってのも意味ないんだけどな。
532:デフォルトの名無しさん
10/03/27 20:36:43
全人類はアフリカの女性からだっけ?
全員はアフリカ人だな
533:デフォルトの名無しさん
10/03/27 21:11:33
>>521
うん。そう、それ。
Visual C#でエラーが発生したため終了します。
エラー報告を送信する しない
× データが失われる可能性を防ぐため、デザイナの読み込み前には以下のエラーを
解決する必要があります。
× オブジェクト参照がオブジェクトインスタンスに選定されていません。
534:デフォルトの名無しさん
10/03/27 21:17:26
ちょこちょこ直してくしかないんじゃないかなぁ。
535:デフォルトの名無しさん
10/03/27 21:39:12
初心者なんでどこがエラー原因なのかさっぱりわかりませんよー
536:デフォルトの名無しさん
10/03/27 21:42:03
じゃ、あきらめろ。
537:デフォルトの名無しさん
10/03/27 21:45:05
>>517
マウスでクリックしたときのイベントを書くとき、
MouseDown,MouseClick,Click,MouseUp
どれを使うのが適切なの?
イベントの発生順がちがうのは分かるけども、
どれか1つしか書かないときはどれが望ましいのか分からないっす
(-_-;);
538:デフォルトの名無しさん
10/03/27 21:46:39
クリックでいいじゃん
539:デフォルトの名無しさん
10/03/27 21:47:29
処理による。イベントによって取れる情報が違うし、タイミングが重要なこともあるからね。
540:デフォルトの名無しさん
10/03/27 22:00:13
>>533
実はVSのデザイナーはいろんな理由で落ちる不完全な代物なので、
そういうものだと思っておこう。
落ちた位置自体はレポートされてるから、
それを参考に修正する。大抵はコンストラクタ周り。
541:デフォルトの名無しさん
10/03/27 22:27:52
現在、.net Framework3.5で開発中です。
特定のディレクトリの配下すべてを
1つのファイルにバックアップ・リストアする機能を作成しています。
(イメージ的には、zip圧縮と解凍)
圧縮はSystem.IO.Packageのクラスでどうにかできたのですが、
解凍がうまくいきません。
今やっている考え方は、
packgeのオープン→ファイルパス取得→取得したファイルパスからファイルをコピー
の流れで、パス取得とコピーを繰り返している状態です。
なぜかコピーできるファイルとコピーできないファイルが存在していて困っています。
なお、ソースで圧縮したzipファイルは、laplusで解凍、ファイルが適切に存在していることを確認しています。
誰か理由を知っていますか?
また、代替案をご存知ですか?
#J#のライブラリによる圧縮・解凍や、フリーのライブラリを利用することは現状考えていません。
よろしくお願いします。
542:デフォルトの名無しさん
10/03/27 22:29:46
オセロの盤面のようなものを描きマウスクリックする事で
左1右3とマス目を取得するプログラムを作りたいのですが
参考になるサイトなどがあったら教えてください
543:デフォルトの名無しさん
10/03/27 22:30:27
すみません 左1上3でした
544:デフォルトの名無しさん
10/03/27 22:32:24
>>541
System.IO.Packagingはzipファイル作るためのライブラリじゃないよ
Open Packaging Conventions、つまりxpsとかのためのパッケージ仕様
545:デフォルトの名無しさん
10/03/27 22:34:16
>>541
そもそも ZIP 用ってわけじゃないので、ダメかも知らんね。
まっとうなライブラリ使った方が早いと思うよ。
>>542
たかだか 64マスなんだから、PictrueBoxとか配置しちゃうってのもひとつの手。
546:デフォルトの名無しさん
10/03/27 22:37:03
>>542
void form_MouseUp(object sender, MouseEventArgs e) {
int x = e.X / マス目の幅;
int y = e.Y / マス目の高さ;
}
547:デフォルトの名無しさん
10/03/27 22:39:29
>>544
回答ありがとうございます。
Open Packaging Conventions用のクラスだというのは承知です。
固定のアプリからの圧縮・解凍ができればおkらしいです。
本当ならJ#のライブラリを使ったら簡単というのはわかるのですが、
いかんせん仕様上使わない方向らしいです。
もし完全に無理なら仕様変更を訴えてみます。
548:デフォルトの名無しさん
10/03/27 22:41:40
その仕様を決めた奴に聞けよ。
549:デフォルトの名無しさん
10/03/27 22:43:03
>>545
回答ありがとうございます。
やっぱり無理そうですか…。
まっとうなライブラリとはどんなライブラリですか?
550:デフォルトの名無しさん
10/03/27 22:43:36
GZipStreamでも使って独自フォーマットでまとめて突っ込めばいいじゃん
ヘッダにファイル名とサイズさえ書き込んでおけば充分だろ
551:デフォルトの名無しさん
10/03/27 22:44:44
>>548
仕様を決めた人は、C#を知らないわけでorz。
無理なら無理と言い切りたいのですが、圧縮だけはできてしまったので困った次第です。
552:デフォルトの名無しさん
10/03/27 22:44:51
7zip
553:デフォルトの名無しさん
10/03/27 22:45:46
GZipStreamは単一ファイルにしか使えないからないわ。
>>549
フリーのライブラリがいろいろ転がってるだろ?
サポート云々とか言うなら、PkZipのがいいな。
554:デフォルトの名無しさん
10/03/27 22:47:15
仕様を決めたやつがC#知らないんだったら、「これじゃできません」って言っても
否定はされないだろ。
555:デフォルトの名無しさん
10/03/27 22:47:28
サポートとか無くていいならこれおすすめ
URLリンク(dotnetzip.codeplex.com)
pureC#で使いやすい
556:541
10/03/27 22:51:09
1人1人に返すのが大変なので一括で。
初め、GZipStreamも考えたのですが、
・必須仕様
→アプリ上で圧縮・解凍が可能。
・推奨仕様
→アプリ外でも解凍可能。
という感じだったので、却下した次第です。
あと、フリーのライブラリも検索で引っかかってたのですが、
商用利用のために怖いと上の人間に言われて却下状態です。
無理ぽなら、月曜にでも理由を言って、改善案を作ってもらいます。
557:デフォルトの名無しさん
10/03/27 23:00:28
zlibでもP/Invokeしてきて使えば
いくらフリーといってもさすがにzlibを信用できないなら何も使えないでしょ
558:デフォルトの名無しさん
10/03/27 23:00:40
あの…ここ…初心者用…
559:デフォルトの名無しさん
10/03/27 23:04:41
>>556
プログラムの安定性は実績で決まるのであって、
商用かオープンソースなのかは全然関係ないんだけどな。
オレはアーカイブ内のファイル構成はSQLiteで外部で管理してるよ。
データファイル側はただ単に暗号化して連結してるだけ。
560:デフォルトの名無しさん
10/03/27 23:07:06
怖いのは安定性じゃなくてライセンスだと思うよ、多分
561:541
10/03/27 23:07:51
>>557
了解です。
zlibも検討します。
>>558
知ってるか?
俺はC#はじめてまだ5ヶ月だから初心者なんだぜ。
562:デフォルトの名無しさん
10/03/27 23:09:22
>>553
ちゃんとzip用のヘッダさえ書いてやれば、
ファイル一つ一つの圧縮はGZipStream使ってもれっきとしたzipファイルが作れるんだぜ
563:デフォルトの名無しさん
10/03/27 23:09:25
>>560
ああ、ライセンスね。そのライブラリは調べてなかったな……。
って、Ms-PLじゃねえか!
.NETの世界で一番有名なオープンソースライセンスなのに、
怖いとかモグリだろ。
564:541
10/03/27 23:10:14
>>560
そういうこと。
できたらおkじゃないところが痛い。
565:デフォルトの名無しさん
10/03/27 23:11:26
まあオープンソース=GPL汚染というのはやはり根強い印象があるよねー
566:デフォルトの名無しさん
10/03/27 23:12:59
>>555のようなMS-PLなら全く問題ないだろ
最近のMSのサンプルやMSがオープンソースで公開してるライブラリもほとんどMS-PL
567:デフォルトの名無しさん
10/03/27 23:16:21
C#すげーな
568:541
10/03/27 23:16:46
みなさんいろいろありがとう。
とりあえず結論としては、
・標準ライブラリはやめとけ。
・dotnetzipができるならいい。
・ダメならzlibでどうにかする。
・それでも無理ならあきらめろ。
でおk?
569:デフォルトの名無しさん
10/03/27 23:18:47
まあ自作しろって言われるのがオチだな
570:デフォルトの名無しさん
10/03/27 23:20:17
PKとかのライブラリ買え、ってのが抜けてる。
571:デフォルトの名無しさん
10/03/27 23:20:19
.NET4では大量のMS-PL由来のライブラリが本家.NETに統合されるよ
WPFの新しいコントロールとかDLRとかMEFとか新機能の多くがMS-PL
572:デフォルトの名無しさん
10/03/27 23:22:20
deflateの自作は重すぎ。
573:デフォルトの名無しさん
10/03/27 23:23:06
>>568
541が使用している標準ライブラリは必ずしも選択は間違ってないけど、使い方がおそらく間違っている。
dotnetzipで問題ないだろうけどこのスレのやつが実際に確かめたわけではないので、自分で調べて考えろ。
574:541
10/03/27 23:26:56
とりあえず、自作する方向でも、一度上の人と相談します。
>>573の言うとおり、使い方が間違っている可能性もあるのでそれも含めつつ。
ダメなら即効白旗揚げて、対策考えてもらいます。
ありがとうございました。
575:デフォルトの名無しさん
10/03/27 23:29:24
あのよ、コスト考えろよ。ZIP圧縮・解凍ライブラリなんて自作してたら、
どんだけ時間かかると思ってんだよ。
576:デフォルトの名無しさん
10/03/27 23:31:33
当該アプリで圧縮したものは、他のアプリでも伸張できるけど、
当該アプリで伸張できるのは、当該アプリで圧縮したものだけ
という仕様でよければ、自分で実装するのも然程困難ではない
577:デフォルトの名無しさん
10/03/27 23:36:10
そんな実装するくらいなら、BSDライセンスのライブラリでも探すわw
578:デフォルトの名無しさん
10/03/27 23:38:24
そんなロクにテストもしてない実績もない
バグだらけの糞自作ライブラリなんかそれこそ怖くて使いたくないわ
579:デフォルトの名無しさん
10/03/27 23:38:58
>>540
あれ、レポートされてたっけ。
また今度じっくり向きあってみます。
自分が組み上げたコードじゃなく引き継いだものなので、
どこがどーなってるかさっぱりなんですがねw
580:デフォルトの名無しさん
10/03/27 23:40:47
誤解されそうなので補足しとくけど>>578は拾ってきたライブラリを使うんじゃなくて
自分で実装する場合の話ね
581:デフォルトの名無しさん
10/03/27 23:42:50
よく「設計した人から言われたんで」みたいなこと言うやついるけど、
きちっと筋道建てて論破できない時点で、そいつも同罪。
582:デフォルトの名無しさん
10/03/27 23:42:56
>>576
作るのは簡単だが、世間並の圧縮率にするのと、バグがほとんどないと思えるレベルの安定性にするのが大変
583:デフォルトの名無しさん
10/03/28 02:44:06
Ms-PLのdotnetzipはどう使えばいいの?
黙って実装しても問題にならないの?
584:デフォルトの名無しさん
10/03/28 03:13:13
オレは業務でZIP書庫作る必要があって、結局は自前でやったなぁ
実データはDeflateStreamで済むしヘッダだけ実装すればいいだけだよ
585:デフォルトの名無しさん
10/03/28 03:22:29
シェアード ソース ライセンス
URLリンク(www.microsoft.com)
商用アプリに利用して一緒にバイナリを配布してもOK。詳しくはライセンス原文を参照してくれ。
586:デフォルトの名無しさん
10/03/28 04:28:12
.NET界隈はわりと自由なライセンスが普及してて良い
587:デフォルトの名無しさん
10/03/28 04:29:33
>>586
隠したくても隠せないしねw
588:デフォルトの名無しさん
10/03/28 04:40:44
まぁ、使っていいって言ってくれてるんだから隠す必要はないな。
ライセンスで認められた範囲で堂々と使うといい。
589:デフォルトの名無しさん
10/03/28 05:17:35
許諾者は、著作権、特許権、商標、またはその他の形式の出所をコード内に常に示しておく必要があります
ここがよくわからないんだけど、結局配布する場合どうすればいいの?
590:デフォルトの名無しさん
10/03/28 09:51:03
URLリンク(www.microsoft.com)
今はこっち
>本ソフトウェアに含まれるすべての著作権…の表示を維持する必要があります。
だから元々そういう表示が含まれている場合は消すなってことだろう
591:デフォルトの名無しさん
10/03/28 10:23:35
>>587
隠す方法はいろいろある。ネイティブにもできる。
592:デフォルトの名無しさん
10/03/28 10:36:10
流れを読まずに質問です。
C#で使えるコントロールのライブラリってないでしょうか?
・ゲージやメーター
・Officeっぽい、Vistaっぽいコントロールのスキン表示
・スキン機能
こんな機能があるライブラリがあれば名前だけでもいいので教えてください。
商用ではいくらでもあるのですがライセンス料が高すぎるのでできればオープンソース
のライブラリを教えて頂ければと思います。
日本語・英語は問いませんが、日本語を使用しても問題のない方が望ましいです。
注文だらけですが、もし知っておられる方がいましたらお願いいたします。
593:デフォルトの名無しさん
10/03/28 10:36:58
WPF
594:デフォルトの名無しさん
10/03/28 11:02:22
いやWPFはNFW3.5以降ということなので、NFW2.0以降で使用できるライブラリを
お願いします。
というか最初に言い忘れてました、ごめんなさい
595:デフォルトの名無しさん
10/03/28 11:06:23
NFWって略は初めて見たかもしれない
596:デフォルトの名無しさん
10/03/28 11:17:50
聞いたことないな
.NETのオープンソースが盛り上がりだしたのって最近MSがオープンソースに積極的になってからだからな
WPF使えば一瞬でできる報われないことをわざわざやる人もいないだろ
597:デフォルトの名無しさん
10/03/28 11:40:38
いやNFW3.5にするとWin2000を切り捨てざるを得なくなるので、それを避けたいだけなのです。
フリーではライブラリはないか、または聞いたことがないぐらいマイナーということですね。
昔はいくつかあったみたいですが、今はすべて商用に変わっていてがっくりですorz
598:デフォルトの名無しさん
10/03/28 11:46:22
2000は切り捨ててもいいのよ
599:デフォルトの名無しさん
10/03/28 11:52:05
UIだけActiveXでHTMLやSilverlightベースにしてしまえ
600:デフォルトの名無しさん
10/03/28 11:58:59
jQueryがあるじゃないか
601:デフォルトの名無しさん
10/03/28 12:32:27
ふーん
602:デフォルトの名無しさん
10/03/28 12:57:25
はーん
603:デフォルトの名無しさん
10/03/28 13:37:09
10年前のOSだもんなあ。
IE6も10年前でみんな葬り去りたくてウズウズしてるんだから、2000も葬っていいわな。
604:デフォルトの名無しさん
10/03/28 13:40:24
2000のSP4は、7月にサポート切れだったろ。
そのタイミングで俺的には終了だな。
605:デフォルトの名無しさん
10/03/28 14:25:57
MSだけじゃなくて開発側も古いWindowsサポートって頭があるからな
切っちゃっていいでしょっていうか切っていこうよ。.netなら尚更
606:デフォルトの名無しさん
10/03/28 14:29:06
逆にMSがサポートしないものを「サポートします!」とか、
すごい勇気だなぁ、って思いますよw
607:デフォルトの名無しさん
10/03/28 14:36:27
>>592
RoboFormとか、skinstudioかねぇ?
後者はDirectX用だからやや違うかもしれないけど。
他は皆がレスしてるようにWPF自体がスキン機能そのものの(機能とデザインの分離)だから
それを使うのが一番の王道だな。
608:デフォルトの名無しさん
10/03/28 14:36:45
MSじゃないどこかの企業がそれを大々的にするって言ってたな。
609:デフォルトの名無しさん
10/03/28 14:40:42
DevExpress .NET Windows Forms Skinning Library
SPREAD for .NET Windows Forms Edition
AppStylist for Windows Forms
ぐぐったら色々あるみたいね。もちろん、みんな商用プロダクトだが。
610:デフォルトの名無しさん
10/03/28 14:41:33
スキン突っ立ってオーナードローするだけ出しな
そんなに手間じゃないだろ
611:デフォルトの名無しさん
10/03/28 14:42:28
十分手間だろ
一つやったら全部やらないと空気読めてない感じになる
612:デフォルトの名無しさん
10/03/28 14:42:38
SPREADは違うだろ。
613:デフォルトの名無しさん
10/03/28 14:52:17
とりあえず、オープンソースの範囲ではこんなのがあった。
URLリンク(weys.codeplex.com)
UIのカスタマイズと言うよりか、Windows Media Playerのスキンっぽい感じだな。
614:デフォルトの名無しさん
10/03/28 16:00:47
みなさん、いろいろとありがとうございます。
私が今開発しているのはとあるゲームなのですが、それがWin2000以降に対応していたもので
Win2000ユーザーを切り捨てるのもどうかと考えてたのです。
数年前ならコントロールのライブラリも意味があったかもしれませんが、今ではWPFが一番
いいみたいですね。
WPF検討してみます。
しかし、日本語だと書籍はないですね...
いろいろとありがとうございました。
615:デフォルトの名無しさん
10/03/28 16:18:49
WPFならXPの古いマシンは切り捨てることになるよ
まあゲームなら問題ないな
616:デフォルトの名無しさん
10/03/28 16:35:08
配列に条件によって値を入れたいと思います。
(1) int[] table = {01, 0, 120, 270};
(2) int[] table = {02, 0, 180, 90};
と2種類の値を入れたいとします。
(1)の場合の条件と、(2)の場合の条件が違う場合、
if(条件) int[] table = {01, 0, 120, 270};
else if (条件) int[] table = {02, 0, 180, 90};
//以下tableを使った処理。
とすると、処理をするところで、
tableがないとエラーになります。
int[] table;
if(条件) table = {01, 0, 120, 270};
else if (条件) table = {02, 0, 180, 90};
//以下tableを使った処理。
とすると、この書き方ではだめだと、大量にエラーになります。
配列の書き方という基本的なことなのですが、書けずに悩んでいます。
アドバイスお願いします。
617:デフォルトの名無しさん
10/03/28 16:37:17
>>615
ちょっとそれ詳しくお願いします。
要求スペックが高いから古いマシンでは駄目
XP SP3以降じゃないと駄目
という意味ですか?
618:デフォルトの名無しさん
10/03/28 16:37:19
>>616
そりゃあ、その2箇所を通過してしまうような条件が残ってるからだ。
当たり前のことじゃないか。
619:デフォルトの名無しさん
10/03/28 16:37:58
素直にnew int書くだけでいいと思うの
620:デフォルトの名無しさん
10/03/28 16:38:26
int[] table;
これはifの前に宣言だけして
table = new int[]{02, 0, 180, 90};
とかでできない?
621:デフォルトの名無しさん
10/03/28 16:41:40
>>617
前者
どんな環境でも動くことは動くけどバリバリのDirect3Dで描画されてるから
ハードウェアアクセラレーションが十分に効かない環境では厳しい
622:デフォルトの名無しさん
10/03/28 16:44:30
>>616
これで一応エラーでないけどコメントの箇所何かいれないと何も設定されない条件ができないか?
URLリンク(ideone.com)
623:デフォルトの名無しさん
10/03/28 16:44:41
>>616
int[] table = null;
にするか
if()
~~
else
~~
とするか
お好きなのをどうぞ
624:デフォルトの名無しさん
10/03/28 16:46:13
>>621
回答ありがとうございます。
なるほど、やはりそのような理由ですか。
了解しました。
スレチなのでWPFのことは別スレで聞いてみたいと思います。
みなさん、いろいろとありがとうございました。
625:デフォルトの名無しさん
10/03/28 16:47:21
>>620
new int[]でできました。
ありがとうございました。
これをつけるのとつけないのとでは、どう意味が違うんですか?
626:デフォルトの名無しさん
10/03/28 16:50:23
>>625
いろいろ短縮したのが
table = new int[]{01, 0, 120, 270};
これね
長くかくと
table = new int[4];
int[0] = 01;
int[1] = 0;
int[2] = 120;
int[3] = 270;
こうなる
627:デフォルトの名無しさん
10/03/28 16:50:50
>>625
アホか。エラーメッセージに全部書いてあるだろ。
628:デフォルトの名無しさん
10/03/28 16:53:15
ああああああ
間違えた
table = new int[4];
table[0] = 1;
table[1] = 0;
table[2] = 120;
table[3] = 270;
629:デフォルトの名無しさん
10/03/28 16:57:27
table = new int[]{01, 0, 120, 270};
こうやって書くメリット?は
table = new int[4];
table[0] = 1;
table[1] = 0;
table[2] = 120;
table[3] = 270;
この配列に
table[4] = 100;
とか増やしたい場合は
table = new int[4];
これを
table = new int[5];
としないといけないけど
table = new int[]{01, 0, 120, 270,100};
こうするだけで{}で囲った中の要素分だけ勝手に配列を確保してくれる。
数を知りたければ配列の場合.Lengthでわかるはず
630:デフォルトの名無しさん
10/03/28 17:05:07
>>590
こっちはまだわかりやすいね
訳が適当だとどうにでも解釈できるよな
631:デフォルトの名無しさん
10/03/28 17:11:45
>>616
普通にこれだけでいける
table=new []{0,1,2,3,4}
632:デフォルトの名無しさん
10/03/28 21:49:36
>>631
アホか。
633:デフォルトの名無しさん
10/03/28 23:50:29
配列なんて使わずArrayList使おうよ
634:デフォルトの名無しさん
10/03/28 23:51:52
intの配列の初期化がまともにできないレベルだからなあ
もうちょい先だろ
635:デフォルトの名無しさん
10/03/28 23:53:00
うひゃあうひゃあ
配列とか扱うのはメモリ効率悪いwww
636:デフォルトの名無しさん
10/03/29 00:08:06
男なら配列なんか使うな!
637:デフォルトの名無しさん
10/03/29 00:13:42
いまどき配列を嫌う男の人って…
638:デフォルトの名無しさん
10/03/29 00:28:06
大した弊害なくて使えるなら何だって良いさ
639:デフォルトの名無しさん
10/03/29 00:34:17
ですね
640:デフォルトの名無しさん
10/03/29 03:59:41
volatile の効果が実感できるソースコードの例は無いでしょうか?
簡単なコードでは実感できないような修飾子なのでしょうか。
641:デフォルトの名無しさん
10/03/29 06:16:01
無理
642:デフォルトの名無しさん
10/03/29 06:19:56
そもそも初心者には使う必要のない修飾子
643:デフォルトの名無しさん
10/03/29 06:39:07
VSの設定保存機能って使ってる?
ビルドしたらなんとか.exe.configとかいう名前で生成されるやつ。
自分で用意してるから使わないんだけど、生成させないようにするのはどうするの?
644:デフォルトの名無しさん
10/03/29 06:47:40
App.configを消せばいい。
645:デフォルトの名無しさん
10/03/29 06:51:00
>>644
おー、サンクス。さっそく除外しとこう。
646:デフォルトの名無しさん
10/03/29 09:13:16
ArrayListって内部的にリスト構造なの?
Listとどう違うの?
リスト構造だとインデクサ[]は使えるとしてもアクセス効率
が悪いと思うけど
647:デフォルトの名無しさん
10/03/29 09:18:19
>>646
いや配列
配列の容量あふれると別の容量大きめの配列作ってコピーするから時々追加にO(n)かかる
ArrayListはList<object>だった気がするなぁ~
使わないから覚えてない…
648:デフォルトの名無しさん
10/03/29 09:20:00
ListはArrayListのGenericだから比べるところじゃないだろう
ListとArrayListの中身は配列
>ArrayList は、null 参照 (Visual Basic では Nothing) を有効な値として受け取り、要素の重複を許可します。
>Count が既に Capacity に等しい場合には、内部配列を自動的に再割り当てすることにより ArrayList の容量が増加し、新しい要素を追加する前に既存の要素は新しい配列にコピーされます。
>Count が Capacity より小さい場合、このメソッドは O(1) 操作になります。新しい要素を格納するために容量を増やす必要がある場合、このメソッドは O(n) 操作になります。ここで、n は Count です。
649:デフォルトの名無しさん
10/03/29 09:21:07
ArrayListは過去の遺物。要素がobjectの場合でもList<object>を使った方がいい。
Silverlightでは切り捨てられた。
650:デフォルトの名無しさん
10/03/29 10:13:51
ありがとう。Listという言葉が紛らわしいですね。
C#の参考書を見ると、Windows GUIが簡単にできそう。
MFCを整理してより使い易くしているかんじ。
C++のMFCを勉強してきたけど、きっぱりとあきらめて
C#で作り直した方が早いと思う。
651:デフォルトの名無しさん
10/03/29 10:47:41
ArrayListやHashtableって実装をさらけ出した悪い名前だと思う
652:デフォルトの名無しさん
10/03/29 10:54:34
そこがメリット
653:デフォルトの名無しさん
10/03/29 10:58:07
Java由来の名前だが、実装を示唆するような名前でないと速度の見積もりができないので、あれはあれでよい。
654:デフォルトの名無しさん
10/03/29 11:01:25
>>650
MFCを使ってる人がまだいたことに驚いた
655:デフォルトの名無しさん
10/03/29 11:05:19
listといえばリンクリストを指すのは悪い慣習だな
.NETではインデックスでアクセスできるものをlistと呼ぶ
LinkedListもListと付いてるけどIListを実装してない
656:デフォルトの名無しさん
10/03/29 12:24:01
WPFのC#のコードビハインドでのウィンドウサイズの指定方法を教えてください。
xamlでは、
<Window Height="400" Width="400">
と指定します。
FormのC#では、
this.ClientSize = new System.Drawing.Size(1173, 861);
のようにできます。
WPFのC#の場合がわかりません。
Windowssize = new System.Drawing.Size(1173, 861);
としてみたところ、System.Windows.Window.Windowsizeはアクセスできない保護レベルになっています、
と表示されています。
どこで保護レベルを変更すればよいでしょう?
よろしくお願いします。
657:デフォルトの名無しさん
10/03/29 12:25:00
保護レベル変更は無理
658:デフォルトの名無しさん
10/03/29 12:26:55
this.Width = 1173;
this.Height = 861;
これだけ
それとWPFでSystem.Drawingは使うな
659:デフォルトの名無しさん
10/03/29 12:27:07
>>657
やりたいことはウィンドウサイズの変更なので、
ウィンドウサイズを変更できればよいです。
660:デフォルトの名無しさん
10/03/29 12:29:59
>>658
ありがとうございました。できました。感謝です。
661:デフォルトの名無しさん
10/03/29 17:27:28
>>660
また俺が回答してやるよ
どーんとこい!
662:デフォルトの名無しさん
10/03/29 18:34:08
いや俺が回答した
663:デフォルトの名無しさん
10/03/29 18:40:04
いやいや俺が
664:デフォルトの名無しさん
10/03/29 19:08:57
あ、じゃあ
俺がやったよ
665:デフォルトの名無しさん
10/03/29 20:47:38
質問
現在、C言語で書かれたDLLが提供する関数を
C#から呼び出そうとしています。
悩んでるが、「引数に構造体の配列を持つ関数」の処理です。
下記URLにソースコードを張りました
URLリンク(codepad.org)
上でいう所のC側の「//<- ここで落ちる」というコメントのある所で不正アクセスで落ちてしまいます。
(stSample[0]に値が入ってるのは確認できました)
C#側の構造体の渡し方がおかしいとかなと思ってるのですが、
どこがおかしいのか分からず・・・。
ご存知の方いましたら、教えて下さい。
666:デフォルトの名無しさん
10/03/29 20:52:16
public struct ST_SAMPLEDLL {
public byte cCount;
public fixed byte strBuff[256];
}
こうじゃね
667:デフォルトの名無しさん
10/03/29 21:18:54
文字列にしてそれを渡してパースしてぶっこめば楽だな
668:デフォルトの名無しさん
10/03/29 21:35:23
教えてください。
マルチスレッドを利用したプログラムがあります。
このスレッドのうち1本で、ローカルファイルにデータを出力する処理があり、そのファイル名を
ファイル選択ダイアログ(System.Widows.Forms.SaveFileDialog)を利用して求めることにしたいと思います。
実際にプログラムを組んで実行すると、ShowDialog() を実行する箇所でエラー終了します。
メッセージボックスに表示されるエラーの内容は以下の通りです。
>OLE が呼び出される前に、現在のスレッドが Single Thread Apartment (STA) モードに設定されていなければなりません。
main 関数には STAThread の設定もしてあります。(元からついているようですが)
同じプログラムで、main 関数を実行したスレッド(以下、メインスレッドと記述します)でダイアログを表示すると正常に使用できます。
また、メインスレッドで開けばいいのかと、メインスレッドで表示しているフォームに Invoke を掛けて
ダイアログを表示すると正常に使用‥‥出来るのですが、このフォームは最小化&非表示にしているため
この状態でダイアログを表示しようとしても画面には出てきません。
メインスレッド以外からファイル選択ダイアログを正常に開く方法はないでしょうか。
669:デフォルトの名無しさん
10/03/29 21:44:03
UIスレッド以外から操作すんなよ。
670:デフォルトの名無しさん
10/03/29 21:45:43
ダイアログに見せかけたFormじゃだめなの?
671:デフォルトの名無しさん
10/03/29 21:49:18
メインスレッド側でAPIで呼べばいいんじゃね?
672:デフォルトの名無しさん
10/03/29 21:50:38
あー、Thread.SetApartmentStateってのがあってだね
673:デフォルトの名無しさん
10/03/29 21:50:49
一応、Thread.TrySetApartmentState メソッド ってのはあるけどな・・・。
674:デフォルトの名無しさん
10/03/29 21:52:26
>>669-671
この3人にtaskkillしてあげてください
675:デフォルトの名無しさん
10/03/29 21:53:44
ひどい赤っ恥だ
676:デフォルトの名無しさん
10/03/29 21:56:37
メインのUIスレッド以外からUIいじるのはお勧めできないけどな。
677:デフォルトの名無しさん
10/03/29 21:58:40
>>674
何でtaskkillなんだよ
>ダイアログを表示すると正常に使用‥‥出来るのですが、このフォームは最小化&非表示にしているため
>この状態でダイアログを表示しようとしても画面には出てきません。
ダイアログで出ないとかいうからダイアログに見せかけたForm表示しろっていっただけ
オーナーとの関係で表示がされないだけだろ
678:デフォルトの名無しさん
10/03/29 21:59:11
そのスレッドは自分で作ったスレッド?
それともスレッドプールのスレッド?
自分で作ったスレッドなら、差し支えなければ自分でSTAに設定すればいい(Start前しかできないよ)
もしスレッドプールとかなら、これはMTAから変更することはできない。
汚いけど、必要な部分で自分でスレッド作って、STAに設定してメッセージボックス表示、
元のスレッドでは新しいスレッドを勝ち合わせとかするしかないと思う。
最初からUIスレッドにIncvokeする方が無駄はないけど。
679:デフォルトの名無しさん
10/03/29 22:01:42
そもそもSTAとかMTAって何なの
680:デフォルトの名無しさん
10/03/29 22:02:56
ようやくシンプルだけどまともに動くものが作れるようになってきたけど
未だにマルチスレッドとかよくわからないな
>>679も何のことやら
681:デフォルトの名無しさん
10/03/29 22:05:41
Inside OLE2 嫁。
682:デフォルトの名無しさん
10/03/29 22:09:36
>>681
それ絶版じゃなかったっけ。
683:デフォルトの名無しさん
10/03/29 22:10:41
うん。
684:デフォルトの名無しさん
10/03/29 22:11:22
>STAとかMTA
VC++でATL使ってIEコンポーネント触ったときにちょっとかじった程度だな
ナビゲーション関連がこの辺を理解してないとメッセージが来ないとかなんとか
685:デフォルトの名無しさん
10/03/29 22:24:31
うん。
686:668
10/03/29 22:26:02
みなさん、ありがとうございます。
てか、はやっ。w
>>670
無知ですみません。
ダイアログに見せかけたフォームというのは、Form を継承したファイル選択ダイアログの
ようなフォームクラスを自分で作る、と言うことでしょうか。
だとすると、今回は遠慮できたらいいかな、と。すみません。
>>671
いまの状況からは少し難しく。すみません。
>>678
System.Threading.Thread を利用して自分で作ったスレッドです。
やっとエラーメッセージの意味がわかりました。
あれは必ずしも main 関数でやれってことではなくて、ダイアログを操作するスレッドに
STA を設定しろってことなんですね。
>>672 や >>673 さんの仰ってる方法で出来ると理解しました。明日、確認します。
>>669,676
自分も UI スレッド(この言葉を忘れていました)以外で UI の操作を行うのには抵抗があったのですが。
‥‥気をつけておきます。
687:デフォルトの名無しさん
10/03/29 22:27:30
>>686
わかればよろしい
今後も精進しなさい
688:デフォルトの名無しさん
10/03/29 22:28:10
偉そうに
689:665
10/03/29 22:32:50
>>666
レスサンクス。
バッファの取り方がまずいという事ですか。
今手元に環境がないので試せないですが、
明日試してみます。
良いサイトか何かあれば、いいんですが、
なかなか見つからず・・・orz
ちなみに、環境は
XP,VC# 2008Express
(書き忘れました)
690:デフォルトの名無しさん
10/03/29 22:37:59
バッファの取り方でなくて、C#とCの型の違い。
691:665
10/03/29 22:42:37
>>690
サンクス
それで、最初の構造体はアクセスできるけど(たまたま出来てるように見えてるだけ?)、
次の構造体にアクセスしようとしたら落ちると・・・。
692:デフォルトの名無しさん
10/03/29 22:46:49
型の制約があるものより汎用的なテキストでやり取りする方が無難かもねえ
相談かこっちか忘れたけど以前同じようなdllを呼び出すアプリの相談で
httpでやり取りする形にしてみたら?ってのがあったな
693:デフォルトの名無しさん
10/03/29 22:52:56
>>691
よく見たらST_SAMPLE**だったのか
C#側の引数の型をIntPtr[]にしてそれぞれポインタの参照先に
ST_SAMPLEDLL一つ分のメモリを割り当てておかないと
694:デフォルトの名無しさん
10/03/29 22:53:47
バイト配列が一番わかりやすいよ。
695:665
10/03/29 22:58:22
>>692
時間がたっぷりあって、許されるなら、DLLをC++か何かで
書き換えたいところですが、そうもいかず・・・。
このインターフェースは我慢するしかないですね。
>>693
です。ダブルポインタです。
そこなのですが
URLリンク(codepad.org)
このサイトに張ったソースの37行目でDLLに渡すメモリの実態自体は用意しているので、
大丈夫かと思ってたのですが、それとは別に確保するという事ですか?
あと、宣言は、こっちの方がいいってことですね。
[System.Runtime.InteropServices.DllImport("MY_Dll.dll", EntryPoint = "test")]
unsafe public static extern int test_call( IntPtr[] pstList);
696:デフォルトの名無しさん
10/03/29 23:00:44
IntPtrのみでいいはずだけどな。
Cでは、基本的に配列はメモリ上に整列するし。
697:デフォルトの名無しさん
10/03/29 23:04:37
ダブルポインタだからポインタの配列を渡さないといけない(だからIntPtr[])
しかもC側でポインタの参照先にアクセスしてるから予めそれぞれ実体を割り当てとかないと
698:デフォルトの名無しさん
10/03/29 23:11:52
配列はポインタで受けれるけど、ってやつか。
699:デフォルトの名無しさん
10/03/29 23:12:03
>>696
私もそう思ってて、そこではまってます。。
>>697
>しかもC側でポインタの参照先にアクセスしてるから予めそれぞれ実体を割り当てとかないと
そこなのですが、
testPtr1 = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(ST_SAMPLEDLL)) * (int)10);
これで、領域を確保して、
次に
test_call(testPtr1);
渡してるので、少なくとも構造体ST_SAMPLEDLLを10個分はメモリとして
確保してると思ってますが、この処理のほかに必要とうい事でしょうか?
その後、取れたのをMarshal.PtrToStructure()で取り出す処理になってます。
700:デフォルトの名無しさん
10/03/29 23:15:27
= () => って表記、他に候補なかったのかよ!と書く度に思う。タマゴとコンニャクでオデン喰いたくなるw
701:デフォルトの名無しさん
10/03/29 23:21:09
C#でいう「参照型の配列」と同じだ。
並んでるのは実体じゃなくてポインタで,それぞれのポインタがどこか別の場所にある実体を参照してる。
IntPtr[] testPtr1 = new IntPtr[10];
for (int i = 0; i < 10; i++) { testPtr1[i] = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(ST_SAMPLEDLL))); }
test_call(testPtr1);
こうする。
取り出すときはそれぞれの要素に対してMarshal.PtrToStructureを呼べばおk
702:デフォルトの名無しさん
10/03/29 23:27:48
DLLとC#の間にもう一個DLL挟めばいいんだよ
703:デフォルトの名無しさん
10/03/29 23:29:37
>>701
なんといいますか・・・。
頭が下がるばかりです。
なるほど、納得しました。
704:デフォルトの名無しさん
10/03/29 23:32:31
もともと
x⇒x*2;
みたいな感じではなかったのあれ
1バイト文字に⇒がなかったから代用みたいな
よくしらんけど
705:デフォルトの名無しさん
10/03/29 23:35:16
これで上手くいったと書こうと思ったら>>701に先越された。CallingConvention忘れないでね。
using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, Pack=4)]
public struct ST_SAMPLEDLL
{
public byte cCount;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
public byte[] strBuff;
}
class Hoge
{
[DllImport("u.dll", EntryPoint = "test", CallingConvention=CallingConvention.Cdecl)]
unsafe public static extern int test_call([MarshalAs(UnmanagedType.LPArray), In, Out] IntPtr[] pstList);
static void Main()
{
IntPtr[] stSample = new IntPtr[10];
for (int i = 0; i < stSample.Length; ++i)
{
stSample[i] = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(ST_SAMPLEDLL)));
}
// DLL呼び出し
test_call(stSample);
ST_SAMPLEDLL[] st = new ST_SAMPLEDLL[10];
for (int i = 0; i < st.Length; ++i)
{
st[i] = (ST_SAMPLEDLL)Marshal.PtrToStructure(stSample[i], typeof(ST_SAMPLEDLL));
Marshal.FreeCoTaskMem(stSample[i]);
}
Console.WriteLine((int)st[0].cCount + " " + (int)st[0].strBuff[0]);
Console.WriteLine((int)st[1].cCount + " " + (int)st[1].strBuff[0]);
}}
706:デフォルトの名無しさん
10/03/29 23:40:06
なんでCdecl?
707:デフォルトの名無しさん
10/03/29 23:40:19
>>705
なんていうか・・・俺って頭の回転速いから自然と先越しちゃうんだよ。(笑)
肩を並べる奴は誰も現れないって感じだ。(笑)
708:デフォルトの名無しさん
10/03/29 23:41:32
>>707
おい
俺のフリをするな
709:デフォルトの名無しさん
10/03/29 23:42:58
>>706
URLリンク(codepad.org) で__stdcallが指定されていないから。
まさかコンパイルオプションでstdcallを指定しているなんてオチがあるわけないと思ってCDeclと仮定した。
710:701■Agei32s4
10/03/29 23:44:05
騙りばっかだな。トリつけとくわ。
711:デフォルトの名無しさん
10/03/29 23:44:35
ですね
712:665
10/03/29 23:55:44
>>705
>>709
具体例、サンクス!
少し話しが出たので、質問なのですが、
DLL側で__stdcallが指定されていた場合、話しは違ってくるのでしょうか?
713:デフォルトの名無しさん
10/03/29 23:59:11
うん。
714:デフォルトの名無しさん
10/03/30 00:01:18
文字列でやり取りするのが今時
715:デフォルトの名無しさん
10/03/30 00:02:31
そんなことない。
716:デフォルトの名無しさん
10/03/30 00:03:15
WinFormsのP/Invokeを全部標準入出力に替えたらとんでもないことになるな
717:デフォルトの名無しさん
10/03/30 00:06:56
>>715
ネットワーク越しにwebAPI呼び出してxmlなどのテキストで回答を許容できる時代なんだから
スタンドアロンでやっても問題ないだろ
そうすればGUIだけC#で書いて古いDLLは常駐してhttpをリスナーする小さいプログラム書けば
いいのでVC++の無料でも余裕で開発できる
718:デフォルトの名無しさん
10/03/30 00:07:42
どんだけ遅いと思ってんだよ。バカジャネーノ
719:デフォルトの名無しさん
10/03/30 00:08:00
>>713
実は、会社の帰り際に「WINAPIは__stdcallで宣言するのが標準」という記事を見つけたので、
淡い期待を抱きながら、「明日試そう・・・」と思っていたところでした。
スタックの開放タイミングの違いとうい事ですか(う~ん汗)
720:デフォルトの名無しさん
10/03/30 00:12:45
直接は関係ない。関数から戻るときの問題だし。
721:デフォルトの名無しさん
10/03/30 00:16:05
やれやれ
722:デフォルトの名無しさん
10/03/30 07:25:47
テキストファイルでやりとりすべきだな
723:665
10/03/30 11:56:25
回答を下さった方々、有難う御座いました。
無事、思うような動作が出来ました!
(感謝感謝)
私の後ろの初めてを捧げたいぐらいの感動です。
ここの所、ず~っとこれで悪戦苦闘してましたので・・・。
有難う御座いました。
724:デフォルトの名無しさん
10/03/30 11:57:01
UserControl 作るとツールボックスに表示されますが、
表示させたくない場合はどうすればいいですか?
725:デフォルトの名無しさん
10/03/30 11:59:17
>>723
よしではいくぞ
>>724
無理じゃね?
クラスライブラリで分離しておくとかすれば可能かな・・・
726:デフォルトの名無しさん
10/03/30 12:34:16
>>723
2番目をくれ
727:665
10/03/30 12:55:41
>>725
>>726
夢を打ち砕いてすまないのだが、
一応、私は「男」です
728:デフォルトの名無しさん
10/03/30 12:57:39
>>727
あたりまえだろ。女なんて嫌だ
729:デフォルトの名無しさん
10/03/30 12:58:12
知ってて言ったのにw
マジな返答くるとは思わなかった
ばっちこーいのAAでも貼ってくるかと期待したのに
730:デフォルトの名無しさん
10/03/30 13:05:19
>>724
それらしい属性探して、無ければ諦めれ
731:665
10/03/30 13:25:07
っく・・・
変態ばっかりだったとは・・・。
732:デフォルトの名無しさん
10/03/30 13:30:28
軽いキャッチボールだよw
733:デフォルトの名無しさん
10/03/30 13:58:43
おまえらToolboxItemAttributeもしらねえのかよ・・・
734:デフォルトの名無しさん
10/03/30 19:27:29
さぁって、今日はどんな馬鹿が釣れるかな? 枠々
735:デフォルトの名無しさん
10/03/30 21:15:14
>>724
AutoToolboxPopulate
というのがVSにはあるらしい
でも単独配布のEEにはないんだよな
736:デフォルトの名無しさん
10/03/30 21:18:19
何かうまく動かないなーと思ったらRectangleのBottomってTop+Heightなんだ
原点0で高さ64なら下の座標は63だとばかり思ってたよ…
737:デフォルトの名無しさん
10/03/30 21:26:56
>Bottom プロパティの値は、Rectangle に含まれない、Rectangle の下端にある最初の点の y 座標を表します。
確認を怠るのが悪い。
738:デフォルトの名無しさん
10/03/30 21:43:10
プログラミング自体初心者で、昨日初めてC#を始めて見ました。
visual C# 2008を使ってGUIでグラフを表示させたいんですが、どうすればいいんでしょうか?
参考になりそうなサイトなどあれば教えてください。
739:デフォルトの名無しさん
10/03/30 21:52:02
URLリンク(www.microsoft.com)
実用的なのはこれ
プログラミングの勉強で関数のグラフを自分で描いたりするんだったら C# paint でググる
740:デフォルトの名無しさん
10/03/30 22:04:27
>>739
ありがとうございました。
自己解決しました。
741:デフォルトの名無しさん
10/03/30 22:32:24
C#は.net frameworkと同じ意味?
742:デフォルトの名無しさん
10/03/30 22:34:13
違う
743:デフォルトの名無しさん
10/03/30 22:39:04
同じ
744:デフォルトの名無しさん
10/03/30 22:40:03
.net frameworkは土台
その上で動くプログラムを書けるのがVC#とかVB.netなど
745:デフォルトの名無しさん
10/03/30 22:52:42
言語仕様上はC#は.NET Frameworkとは無関係ということになってる
746:デフォルトの名無しさん
10/03/30 22:53:15
違う
747:デフォルトの名無しさん
10/03/30 22:53:59
Monoはネイティブコード吐けるし…
748:デフォルトの名無しさん
10/03/30 22:56:24
それラインタイム一緒に事前コンパイルしてるだけで無駄が大きいけどね
749:デフォルトの名無しさん
10/03/30 23:00:46
一応言語仕様の上ではCLIにも依存してない
言語仕様に最低限必要なライブラリが書いてあるのでそれを一通り実装しさえすれば
C#と名乗れる
750:デフォルトの名無しさん
10/03/30 23:09:54
名乗れるね
751:デフォルトの名無しさん
10/03/30 23:10:14
違う
752:デフォルトの名無しさん
10/03/30 23:19:03
もう何がなんだかw
753:デフォルトの名無しさん
10/03/31 00:00:07
どこが「違う」か指摘できない馬鹿は放っておけ
754:デフォルトの名無しさん
10/03/31 00:12:05
ですね
755:デフォルトの名無しさん
10/03/31 02:39:38
>>739配布するときにも相手にはそれをインスコさせなきゃ駄目?
それとも、自動的に組み込んでくれる?
756:デフォルトの名無しさん
10/03/31 03:26:39
90
757:デフォルトの名無しさん
10/03/31 04:59:13
>>755
.netその物と同じで相手側にも入ってないとだめかもね
758:デフォルトの名無しさん
10/03/31 06:15:46
だめかもね
759:デフォルトの名無しさん
10/03/31 07:36:45
>>755
ライブラリの dll ファイルは
標準のアセンブリフォルダーの下か、
exe と同じフォルダーにあれば OK なんで
exe と同梱で配布すれば OK。
760:デフォルトの名無しさん
10/03/31 10:55:33
include <stdio.h>
using System
int Main(void){
System::Console::WriteLine("にちゃんねらー死ね");
}
761:デフォルトの名無しさん
10/03/31 11:23:17
>>760
ここはニュー速のプログラミングスレじゃないですよ
762:デフォルトの名無しさん
10/03/31 11:28:37
なんでC++/CLIなんだよイライラするなあ死ね
763:デフォルトの名無しさん
10/03/31 11:37:00
C++/CLIならmainだろ
include <stdio.h>
using System;も必要ない
764:デフォルトの名無しさん
10/03/31 11:39:16
やたら丼を書いている奴だろ
765:デフォルトの名無しさん
10/03/31 12:45:58
同じマシン、同じソフトで印刷プレビューするときにプリンタ2台で
1枚でも40秒と3分の差があるんですけど、印刷の実行速度は
プリンタドライバも関係してくるんですか?
3分かかるのは9年前発売のプリンタで、40秒かかるのは
最近発売のプリンタですけど。
766:デフォルトの名無しさん
10/03/31 12:50:17
そりゃまあレンダリングするのはドライバだしな
767:デフォルトの名無しさん
10/03/31 12:59:46
>>766
なるほど。
ありがとうございます。
768:デフォルトの名無しさん
10/03/31 13:51:04
>印刷プレビューするとき
これはプリンタのほうでプレビューってことだよな?
自分でプレビュー画面作るってわけでもなく
だとしたら>>766の通りだけどC#関係なくね?
769:デフォルトの名無しさん
10/03/31 14:16:03
プレビューの速さの話が途中から印刷の実行速度の話になってるからな
770:デフォルトの名無しさん
10/03/31 14:28:59
フォームプロジェクトに追加したユーザーコントロールをデザイナで配置したいのですが、ツールボックスに表示されません。
調べてみると Windowsフォームコントロールライブラリ という別プロジェクトでDLLを作成し、
それを介する方法しか発見できませんでした。
DLLを介する以外に方法があれば教えてください。
771:デフォルトの名無しさん
10/03/31 14:51:56
メニューのツールのオプションのWindowsフォームデザイナの全般で
ツールボックスのAutoToolboxPopulateをTrueにしてもダメかな?
772:770
10/03/31 14:59:20
>>771
できました。ありがとうございました。
773:765 ◆JdKMFRogo6
10/03/31 15:25:55
>>768 >>769
C#で作ったプログラムで印刷プレビュー出すときのことです。
出るまでにそれだけ時間がかかるんですよ・・・
ここらへんでプリンタも買い替えないと・・・
774:デフォルトの名無しさん
10/03/31 15:28:41
勝手にしろよwww
775:765 ◆JdKMFRogo6
10/03/31 15:35:37
>>774
たしかにwww
776:デフォルトの名無しさん
10/03/31 16:12:56
URLリンク(codepad.org)
上記のコードがあるとします
14行目でリストの0番目のアイテムにGetTypeしてアイテムの型を取得していますが
BindingList<T>のインスタンスが生成された段階でアイテムの型は決まってるので
0番目のアイテムにアクセスしなくても取れるはずです
これの取り方を教えて頂きたいのです
あくまでもテスト用のコードなので「Tから取ればいいだろ」みたいな突っ込みはご容赦下さい
777:デフォルトの名無しさん
10/03/31 16:13:43
今から仕事なので日付変わった頃にお返事します
778:デフォルトの名無しさん
10/03/31 20:50:18
>>776
listType.GetGenericArguments()[0]
779:デフォルトの名無しさん
10/03/31 23:00:29
関数のパラメータについて、教えてください。
デバッグ用にその関数のパラメータの一覧をログなどに出力したいと考えます。
たとえばなのですが、
System.Diagnostics.StackFrame.GetMethod().GetParameters()
を利用すると、特定の関数のパラメータの一覧を得ることが出来ます。
ただ GetParameters() ではパラメータの型や変数名などの情報を取得することは出来ても
パラメータの値そのものは取得できないようです。当然と言えば当然なのですが。
これと同じような方法で、パラメータの値を取得する方法はないでしょうか。
なにをしたいのかというと、デバッグ用に特定の関数のパラメータの各値をログなどに
出力したいのですが、関数個別に "param1 = {0}", param1 などと書いていくのが手間なので、
関数のパラメータのすべての変数名とその値とを文字列にしてくれる関数を作れないものかと。
780:デフォルトの名無しさん
10/03/31 23:16:40
>>778
お答え頂きありがとうございます
質問したかった事とコードが違ってる事に出勤してから気付きました
IBindingListの引数にclass BindingList : BindingList<string>{}のインスタンスを渡して
継承元の型パラメータを取得したいのでした
悩んでる最中は思い至らなかったのですが、単にType.BaseType.GetGenericArguments()すればいいだけでした
下らない質問してすみません
781:デフォルトの名無しさん
10/03/31 23:19:01
>>779
無理
782:デフォルトの名無しさん
10/03/31 23:40:12
>>779
型名でいいなら
public void Trace(params object[] o)
{
foreach(object obj in o)
{
~(o.GetType().Name);
~(o.ToString);
}
}
でいけるとおもうよ~は出力命令ね
783:デフォルトの名無しさん
10/03/31 23:40:35
フォームアプリケーションを作成している時、フォームのコードが長くなったので、
「コードファイル」を新規に作成し、コードの一部を作成したソースに移しました。
その後、フォームへコントロールを配置すると、移したはずの コントロール名_イベント名() が
元のソースに関数の中身が空の状態で生成されてしまうようになりました。
コントロールのプロパティ内でイベントの欄をダブルクリックした時以外は
コードが自動生成されないように設定する方法を教えてください。
784:デフォルトの名無しさん
10/03/31 23:45:55
そんな設定ないよ。
785:783
10/03/31 23:55:44
>>784
設定がないということは、フォームのコードを複数ソースに分けることをやらない方がいいということでしょうか?
それとも「コードファイル」を作成する以外の方法で別のソースを作成すべきなのでしょうか?
786:デフォルトの名無しさん
10/03/31 23:58:30
>>785
> 設定がないということは、フォームのコードを複数ソースに分けることをやらない方がいいということでしょうか?
うん。
787:783
10/03/31 23:59:21
>>786
ありがとうございました。
788:デフォルトの名無しさん
10/04/01 00:14:00
>>787
うん。
789:デフォルトの名無しさん
10/04/01 00:14:02
http;//○○○/~~~
となっているURLの○○○を抽出するにはどうすればいいでしょうか?
正規表現を使ってみたのですが、うまく抽出されません。
例になるコードとかありませんか?
790:779
10/04/01 00:18:59
>>781
>>782
ありがとうございます。
残念ながら型名などではなくて中の値そのものが欲しいので、今回は諦めます。
791:デフォルトの名無しさん
10/04/01 00:19:40
>>789
URIクラスとかじゃねーの?
792:デフォルトの名無しさん
10/04/01 00:22:58
"/"のSplitで[2]とか?
793:デフォルトの名無しさん
10/04/01 00:26:07
>>792
'/'のSplitで[2]でしょ
794:デフォルトの名無しさん
10/04/01 00:29:17
URIクラスのHostでもAuthorityでもDnsSafeHostでも
795:デフォルトの名無しさん
10/04/01 00:39:09
http://~~/△△&pass=○○
のようなURLの場合に○○を取得したい場合はどうすればいいでしょうか?
さすがにこれはURIクラスでは処理しきれないと思うんですが
796:デフォルトの名無しさん
10/04/01 00:43:17
EndOf
797:デフォルトの名無しさん
10/04/01 00:47:17
>>795
System.Web.HttpUtility.ParseQueryString(string query, System.Text.Encoding encoding)
798:デフォルトの名無しさん
10/04/01 00:51:19
>>795
'='のSplitで[1]
799:デフォルトの名無しさん
10/04/01 00:55:35
みなさんありがとうございます。
今までは正規表現でどうにかしようとしてましたがいろいろやり方があることが分かりました。
もうちょっと頑張ってみます。
800:デフォルトの名無しさん
10/04/01 01:00:14
>>799
みなさん?全部俺の回答なんだけどw
801:デフォルトの名無しさん
10/04/01 01:01:48
4/1とはいえ他人の善意を潰す嘘は許さん
802:デフォルトの名無しさん
10/04/01 01:02:52
自己主張したいならコテでもつけてろよ
803:デフォルトの名無しさん
10/04/01 01:03:41
おまえがつけろクソ野郎
804:デフォルトの名無しさん
10/04/01 01:05:51
4/1とはいえコテ付けない奴は許さん(キリッ
805:デフォルトの名無しさん
10/04/01 01:07:38
ここまで全て俺の自演
806:デフォルトの名無しさん
10/04/01 01:08:43
エイプリルフールはどんな嘘でもいいってわけじゃないんだよね。
人を怒らせるような行為はいただけないな。
807:デフォルトの名無しさん
10/04/01 01:09:05
だな
808:デフォルトの名無しさん
10/04/01 01:47:08
>>799
正規表現でも別にそう難しくはない気もしますが、まあ、
一番楽で素直で間違いのなさそうな方法を選ぶのが良いね。
809:デフォルトの名無しさん
10/04/01 02:07:49
(new List<int>()).GetType().GetGenericTypeDefinition().Equals((new List<bool>()).GetType().GetGenericTypeDefinition())
上の評価はtrueになるんだけどさぁ
それを踏まえてMSDNを見ると
URLリンク(msdn.microsoft.com)
>2 つの構築型が同じジェネリック型定義から同じ型引数を使って作成された場合
>GetGenericTypeDefinition メソッドは両方の型に対して同じ Type オブジェクトを返します。
なんかこの説明おかしくね
この場合「違う型引数を指定して作成された場合でも」になるべきじゃね
同じのは同じなんだから当ったり前だろうそんなの
GetGenericTypeDefinition呼ぶまでもない
と思ったけど英語版もsame type argumentsなんだよなあ
なんでだ
810:デフォルトの名無しさん
10/04/01 06:33:16
なんでだろうね
811:デフォルトの名無しさん
10/04/01 15:58:00
未完成の汎用的なクラスを作れたのでいろんなプロジェクトで利用しているんだけど
既存の項目で追加とすると、その汎用クラスの変更がそのプロジェクトでしか行われない
汎用クラスの変更がすべての利用しているプロジェクトで反映される方法などありますか?
もしくは他に方法はありますでしょうか?
812:デフォルトの名無しさん
10/04/01 16:26:28
>>811
既存の項目として追加するときに出てくるダイアログで、追加ボタンの隣にある三角ボタンを押してリンクとして追加すればいいじゃない。
813:デフォルトの名無しさん
10/04/01 18:07:35
おほ~~いけた
ありがとう
814:デフォルトの名無しさん
10/04/01 19:34:31
webclientのイベントハンドラをbuttonのイベントハンドラと同じように一覧から選んで記述ということはできないのでしょうか?
815:デフォルトの名無しさん
10/04/01 19:37:40
わかんね
816:デフォルトの名無しさん
10/04/01 20:13:14
foreach(var item in listview.items)
これだとlistviewitemと認識しないぞM$
817:デフォルトの名無しさん
10/04/01 20:18:03
という独り言
818:デフォルトの名無しさん
10/04/01 21:54:16
XMLにシリアル化の挙動がさっぱりわからん
なんなのこれは?
まったく使い物にならん
シネ
819:デフォルトの名無しさん
10/04/01 22:12:44
無能は車輪の何とかでもやってなさいってこったw
820:デフォルトの名無しさん
10/04/01 22:20:21
>>814
デザイナーからは設定できないぞ
>>816
varって糞VBじゃねーんだからちゃんと型つけろがボケ
URLリンク(ideone.com)
.netはいたるところで型が何か分かるようになってるぞボケ
>>818
publicじゃない要素があるとうまく動かん
c# XmlSerializerでぐぐってサンプルみてこい
public classだし中身もpublic付き
821:デフォルトの名無しさん
10/04/01 22:25:14
>>820
>.netはいたるところで型が何か分かる
それは>>816の問題に関しては間違ってる。
foreach (ListViewItem item in listView1.Items)は
foreach (object _item in listView1.Items) { ListViewItem item = (ListViewItem)_item; と等価。
だからitemの型がListViewItemでなくてもコンパイルエラーにはならない。実行時エラーが出る。
ジェネリックが無かったころの名残の糖衣構文だ。
822:デフォルトの名無しさん
10/04/01 22:37:29
>>821
糖衣構文だとか昔は~とか言われてもよくわからんけど
現在はこう表示されるんだからそれでええんとちゃうの?
URLリンク(uproda.2ch-library.com)
823:デフォルトの名無しさん
10/04/01 22:46:18
>>822
それ今も昔もListViewItemCollectionに普通にインデクサが定義されてるだけ。
ListViewItemCollection.GetEnumeratorがIEnumerator(非ジェネリック)を返すので
foreachを使うと要素がobject型扱いになる。だから>>816はvarの自然な挙動。
824:デフォルトの名無しさん
10/04/01 22:48:34
>>822
この場合インデクサは関係ないだろ
関係あんのはEnumeratorの方
825:デフォルトの名無しさん
10/04/01 23:29:26
JavaScriptでしばしばこういうコード書いているけど、これをC++(QT)で書くとどういう感じになる?
function getValue(Form,Target){
var value = document.getElementById(Form).value; // 変数Form名のIDのフォームの値をvalueに代入
value = window.prompt("文字を入力",value); // 入力フォームを表示。valueを入力プロンプトに渡す。(上の行と1本かできるの事は気にしないで)
document.getElementById(Target).value = value; // 変数TargetのIDのフォームにvalueを代入
}
これをQtで書くとどういう感じになるのかな?
FormとTargetの値(参照元のフォーム名と代入先のフォーム名)が変化するんだけど。
あと、
document.getElementById(Form+'_name').value
みたいな表現ってできない?
C言語は、関数型とかあってわかりにくい・・・。
826:デフォルトの名無しさん
10/04/01 23:39:48
スレチ
827:デフォルトの名無しさん
10/04/02 08:00:37
あ!?
828:デフォルトの名無しさん
10/04/02 09:22:02
どうした?
バグか?
829:デフォルトの名無しさん
10/04/02 10:33:00
richtextboxで指定した行に文字列を追加したいんだけどどうすればいいのでしょう
delphi見たいにrichtextbox.line[i].text=・・・なんてもんはないんですかね
830:デフォルトの名無しさん
10/04/02 11:29:30
あんまRichiTextBox使った事ないけどレスしてみる
改行コードでsplitした配列取得して、指定行の文字列を編集
で、それをStringJoinに改行コード指定してやっちゃうとか
831:デフォルトの名無しさん
10/04/02 11:31:04
その手って内部は行単位のstring管理じゃなかったっけ?
ちと確認してみる
832:デフォルトの名無しさん
10/04/02 11:32:10
richTextBox1.Lines.Length
Lengthってことは配列?
833:デフォルトの名無しさん
10/04/02 11:32:20
Linesプロパティはあるだろ。
834:デフォルトの名無しさん
10/04/02 11:44:31
あれ・・・行指定して書き換えてもかわらねえな・・・
URLリンク(ideone.com)
835:デフォルトの名無しさん
10/04/02 11:48:50
読み取り専用だから。
836:デフォルトの名無しさん
10/04/02 11:49:49
>>835
それは挙動で想像付くが、読み取り専用って書いてる段階か
実行時にエラーになるよな?
これはそれすらないぞw
837:デフォルトの名無しさん
10/04/02 11:53:35
ヘルプ嫁よ
838:デフォルトの名無しさん
10/04/02 11:54:22
コピーして返してるからだろ
839:デフォルトの名無しさん
10/04/02 12:19:36
デザイナでLabelとか貼り付けたら
デフォルトのフォントの大きさが9なんだけど、ちょっと小さいから
デフォルトのフォントを大きさを変えたいんだけどどうやったらいい?
あとタイマーが一番最初にEnableがfalseになってるのとか変えたい
840:デフォルトの名無しさん
10/04/02 12:21:34
無理
841:デフォルトの名無しさん
10/04/02 12:24:02
Labelとかのフォントサイズは、フォームのやつを引き継ぐから、
フォームのフォントサイズを変更しておけばOK。
842:デフォルトの名無しさん
10/04/02 12:56:03
>>839
諦めろ
つうか、タイマなんぞ切り替えるのは普通Pgからやんないか?
LoadとかShownでTrueにして
ClosingとかでStop→タイマの内部処理終了待ちして
843:829
10/04/02 12:59:41
うーんなんていうか、
-----
あいう
あいうえお
あい
-----
ていうrichtextboxがあるとする。
これの2行目の文章(あいうえお)を変数に代入するにはどうすればいいのかわからないんです。
delphiならa:=Memo1.Line[1];(たしかこんな感じ)て感じで取得できたのですが・・・
844:デフォルトの名無しさん
10/04/02 13:05:20
あきらめろよ。
845:デフォルトの名無しさん
10/04/02 13:08:00
ベタにテキストボックスとかでも使うやり方
別に異常なほど文字が多いわけじゃない時こんな感じでやってた
private void button1_Click(object sender, EventArgs e)
{
richTextBox1.Text = GetInsertedText(richTextBox1.Text, 1, "\r\n" + DateTime.Now.ToString());
}
private string GetInsertedText(string baseText, int index, string inserttext)
{
string[] temp = baseText.Split("\r\n".ToCharArray());
temp[index] += inserttext;
return string.Join("\r\n", temp);
}
846:デフォルトの名無しさん
10/04/02 13:09:25
>>843
>>834見て無いのかよ
847:デフォルトの名無しさん
10/04/02 13:09:37
つーか、Linesプロパティって出てんじゃん。
848:デフォルトの名無しさん
10/04/02 13:11:32
読み取りだけじゃなく行単位で書き換えもありそうなんでできるかどうかを試してたのに
読み取りすら理解してないのかよ・・・
849:デフォルトの名無しさん
10/04/02 13:14:37
総攻撃ワロスw
850:デフォルトの名無しさん
10/04/02 13:17:11
>>846
すいません見落としてました
これです!ありがとうございます
851:デフォルトの名無しさん
10/04/02 13:29:39
しかしこれ内部管理が配列なのが勿体無いな
List<>でもやってくれりゃあ部分編集もしやすかったのに
852:デフォルトの名無しさん
10/04/02 13:42:56
中の文書フォーマットがどうなってるか知らんけど
部分的に書き換えられると整合性で困るとかそんな話の予感
TextBoxならできるんだしね…
853:デフォルトの名無しさん
10/04/02 14:44:48
管理も何も、Linesのgetterは持ってるTextをCRLF/LF/CRで分割してるだけだぞ
setterなんかCRLF挟んで連結したものをTextに設定しているだけだし
それにしても、プロパティの型が配列だったり、プロパティでコピーを返したり、
プロパティの中に必要以上の処理を入れていたりと無茶苦茶だなw
854:デフォルトの名無しさん
10/04/02 16:20:07
コントロールは例外だ
デザイナやバインディングなどの都合
855:デフォルトの名無しさん
10/04/03 14:39:53
var x=0.0としたとき、xの型はfloatですか?doubleですか?
組み込み型には使うなと教えられたんですがこれだけは気になったのでお願いします。
856:デフォルトの名無しさん
10/04/03 14:43:58
やってみればいいじゃん。
857:デフォルトの名無しさん
10/04/03 14:44:33
>>855
URLリンク(tsushima.2ch.at)
ちなみに気になる型とか返り値の型とか知りたければ
標準の物なら大体こうやって確認できるよ
858:デフォルトの名無しさん
10/04/03 14:45:27
しもうた
カーソル消えてるけど
x.ToString();
のxの上でカーソル止めてるから
859:855
10/04/03 14:48:37
>>856-858
なるほど、勉強になりました。
どうもありがとうございました。
860:デフォルトの名無しさん
10/04/03 14:51:32
>>859
というかc#で小数点をそのまま書くとdouble,
0.0Fという感じでFをつけるとfloat
861:デフォルトの名無しさん
10/04/03 14:53:24
>>855
860の助言を参考にして、ついでにリテラルとその型の概念も把握しておこう。
862:デフォルトの名無しさん
10/04/03 14:55:24
便乗で悪いんだけど、質問させてくれ
floatの方がdoubleよりも速度が遅くなると聞いたんだけど理由がさっぱりわからん
doubleの方が扱う桁数が大きいんだから遅くなるんじゃないのか?
863:デフォルトの名無しさん
10/04/03 14:57:43
>>862
ならない。最近のCPUじゃ割り算以外の処理はどちらも1クロックで終わってしまい、
速度上の差は見られない事の方が多い。
864:デフォルトの名無しさん
10/04/03 14:59:56
>>862
それはCPUによるよ
865:デフォルトの名無しさん
10/04/03 16:58:41
Microsoft Parallel Extensions to .NET Framework 3.5ってもうDLできませんか?
もし直リンなどあれば教えてください
866:デフォルトの名無しさん
10/04/03 17:04:52
>>865
それは『Parallel Extensions to .NET Framework June 2008 CTP』のことだろう?
Parallel Extensionsが.NET 4.0の機能になったことはMSの公式決定なんだから今更どうにもならんだろう。
ここには「Reactive Extensions を見よ」なんて書いてあるが。
URLリンク(blogs.msdn.com)
仮にそんなコンパチライブラリがあったとしても、余計な混乱を招く結果にしかならないだろうよ。
867:デフォルトの名無しさん
10/04/03 18:13:26
ある程度作ってたプロジェクトの中から部分的に切り離してクラスライブラリを作る場合って
スマートにやる方法ないかな?
868:デフォルトの名無しさん
10/04/03 18:16:15
>>867
名前空間の単位で整理して、
名前空間の単位でクラスモジュール化する。
869:デフォルトの名無しさん
10/04/03 18:23:17
そういうのじゃなくて、クラスライブラリ用プロジェクト作った際のソースの移動とかね・・
870:デフォルトの名無しさん
10/04/03 18:28:49
>>869
基本的に自己完結するようにクラスライブラリを書いていれば、
単にプロジェクトを分けて本体側で参照設定するだけで
そのまま動くようになってるんだから、
スマートにやる方法もないだろ。
上手くいかないなら設計が悪いだけ。
871:デフォルトの名無しさん
10/04/03 18:31:28
変数のインスタンスから、その変数の変数名を取得する方法はある?
int a;
string b = a.(メソッド);
みたいにやると、b に "a" って入るみたいな。
無理だと思うけど、C# だとちょっと期待してしまう。w
872:デフォルトの名無しさん
10/04/03 18:41:00
>>871
変数の名前というのはプログラミングの都合上便宜的に与えるものに過ぎず、
実行時にはなくなってしまうものだ。
一方、デバッガで止めると表示してくれるが、あれはpdbファイルにその情報が記述されている。
873:デフォルトの名無しさん
10/04/03 18:42:43
intとかは無理じゃね?
クラスになるとNameがあるけどあれもつけなくても内部管理的には問題ないから
おそらくハンドルみたいなので管理されてるんだと思うしなあ
intだとそのハンドルに相当するものくらいしかないんじゃね?
874:デフォルトの名無しさん
10/04/03 18:52:45
いや・・・もっとそのプログラム的な話じゃなくて・・・・
プロジェクト作ってフォルダ作って元のソースを移動して
既存の項目としてプロジェクトに入れて・・・という
やり方しかないのかなあって話
あとクラスライブラリとして分離した場合デバック用とリリース用
を別途分けてリンクさせるような設定はないんだろうか?
C++だと普通にあったんだがC#の場合それっぽい項目が見当たらない
875:デフォルトの名無しさん
10/04/03 19:57:02
>>874
>プロジェクト作ってフォルダ作って
それのどこに問題が?
むしろ異なるアセンブリのソースコードはフォルダ分けしておかないと不便だぞ。
>あとクラスライブラリ
同じソリューションでクラスライブラリとメインプログラムを管理しておけば、
ビルドモードの切替で勝手にクラスライブラリの切り替えもやってくれる。
876:デフォルトの名無しさん
10/04/03 20:00:45
>>874
それ以上のどんなバカチョン機能があれば満足するんだろう。
まあ、ファイルの移動はプロジェクトエクスプローラで
ドラッグ&ドロップしてもできるよ。
あと、ソリューション内のプロジェクトの構成(Release/Debug)の連動は
構成マネージャで設定する。
877:デフォルトの名無しさん
10/04/03 20:04:24
>>875
ああ、すまんEEで開発してたのでソリューションの下で複数プロジェクト作れるとは思ってなかった
878:デフォルトの名無しさん
10/04/03 20:06:10
>>876
>>877でも書いたけど俺が想像してたのは
ソリューションA プロジェクトA
とあって
プロジェクトAの一部を
ソリューションB クラスライブラリB
として切り出すしかないと思ってたんだ
すまんすまん
879:デフォルトの名無しさん
10/04/03 20:11:25
複数プロジェクト入れられないソリューションがこの先生きのこるには
880:871
10/04/03 20:40:35
thx
やっぱり無理なんだね。
881:デフォルトの名無しさん
10/04/03 22:00:04
>>863
処理が一律1クロックなのは一部の大型機の話
パソコン用のCPUはそこまで単純じゃないし速くもない
キャッシュがヒットしたという前提で
intの足し算、引き算は0.33クロック、掛け算は0.5クロック、割り算は23クロックかかる
IEEE754形式の浮動小数点だと単精度でも倍精度でも時間は変わらなくて
加減算で1クロック、掛け算が2クロック、割り算が32クロック
882:デフォルトの名無しさん
10/04/03 23:55:24
>>880
URLリンク(blogs.msdn.com)
pdb2xmlのソースコードから学べるものがあると思うけど。
デバッガ作るわけでもなければそんな必要ない気がする。
883:デフォルトの名無しさん
10/04/03 23:55:44
【FPU】 浮動小数点 【SSE】
スレリンク(tech板)
float 使うヤツはドシロートかおぢさん
スレリンク(tech板)
884:デフォルトの名無しさん
10/04/04 06:01:22
>>881
結局のところ大容量キャッシュと高クロック化でごまかしてるだけで
x86の本質はそれほど変わってないのか
885:デフォルトの名無しさん
10/04/04 06:56:58
floatはベクトル演算器を使う場合にはそっちの方が早い。
886:デフォルトの名無しさん
10/04/04 10:11:33
ちと質問させてください。
VS2003.NETのC#を使用してプログラムしています。
参照の追加でdllを読み込み、プロパティでローカルコピーをTrueにして、コンパイル。
この時に、EXEと同じフォルダにdllがコピーされるのですが、
コピーされる場所を変更できるのでしょうか?
EXEと同じフォルダ内に、DLLというフォルダを作成し、
コンパイル時にDLLフォルダにdllがコピーされてほしいのです。
よろしくお願いします。
887:デフォルトの名無しさん
10/04/04 10:16:49
ビルドイベントで移動するとか
888:デフォルトの名無しさん
10/04/04 10:21:08
>>886
アプリケーション設定ファイルでアセンブリの読み込みフォルダを指定することができる。
ただし実行プログラムのサブフォルダのみ。
これはユーザーに配布するときの話で、
開発中はそういったことをやると却って話が面倒になるので
exeとdllを開発中にフォルダ分けしてしまうようなことは考え内容がいいと思うよ。
889:デフォルトの名無しさん
10/04/04 10:25:36
>考え内容がいいと思うよ。
考えないほうがいいと思うよ。
失礼。
890:デフォルトの名無しさん
10/04/04 11:30:53
>>884
クロックを上げるのは、主にコスト面の問題で限界に来てしまったので
今はパイプラインの段数とコア数の増加とバス幅の拡張でごまかす方向になってきてる。
だから1命令が1/2クロックとか1/3クロックなんていう中途半端な時間で処理できてしまう。
あとは実行環境の64bit化でlong/ulongの計算が一気に速くなったぐらい。
891:デフォルトの名無しさん
10/04/04 11:33:14
パイプライン段数はここ数年逆に減少したとか言ってたような
892:デフォルトの名無しさん
10/04/04 11:33:46
いい加減スレ違い。
893:デフォルトの名無しさん
10/04/04 11:36:56
クラスライブラリで公開するクラスってpublicじゃないとだめなんだっけ?
894:デフォルトの名無しさん
10/04/04 11:39:17
,,,_ _ァュ,,..__
ィチュ::ミミ:.:三彡:.:: :.:.:ヽ
/::彡'':.: :.::/:.:{{.::r‐‐ ::_:.: :.:..、
,ィ /:.: /:..: ::{{:..川||::! ヾ::;;:、
,ィ:.: ::.: /:. :: 川:.:ヾ:.:.!{:: ヽ::!
///:.: :.:.:||ll: :.: .::.:.:ヾ::.::.i ':!
!:|:.:::ミ:: :.;;;川:.: :.:巛、ヾ::! 、 l
゙::ミミ h::. :;:.::||l|:.:: :.}}::!l {{ ヾ _,,...ィ r'' 、
゙::ミミ:.: ::.;:.:ミミヾ:.: :.:| ヾ、 '´ , マ
ヾ:: .:.:ミミ三 :.:州リリ _,,..rテ' ヽ
ヾ::;ィ'´ ̄`''ヾ州! ,. ヽ
゙レ '⌒r ィ ,;;. .. .:' ,rィ ’
ヽ し :.: .. 、 ヽ
,,ハ`ー- ..ィ _,.. ィ
ィ:::! \ ヽ. ィ{:::...
/:::::! \ ` - ..__ 丿::::::ヽ
/:::::::ヘ \ ` ーァ-一'::::.:::.:::.::.!ヽ
/:::::.:..:::::::::ヽ \ リ::. :::.:.:.:.:::.:.:.:.::::!:::.::!
轌山相太郎 [そりやまそうだろう]
(群馬.明治一九年~昭和一七年)
895:デフォルトの名無しさん
10/04/04 11:50:18
>>894
さんきゅー
896:デフォルトの名無しさん
10/04/04 13:37:36
ifで済むようなところでも例外を使ったほうがいいんでしょうか?
897:デフォルトの名無しさん
10/04/04 13:38:44
ifで済むならifで済まして下さい
898:デフォルトの名無しさん
10/04/04 13:39:47
状況にもよるんじゃね?
継続可能なところのエラー程度ならifで判断してもいいだろうけど
継続しても仕方ないようなところは例外でいくとか
899:デフォルトの名無しさん
10/04/04 13:58:19
>>896
コールスタックの呼び出し階層から一気に抜け出したい場合は面倒だから
エラーを返さず例外処理で実装してしまう場合もあるよ。
他に、既に例外処理を書いていて、普通にエラーを返すより
エラー自体を例外処理にしてしまった方が楽に実装できる場合か。
そういったことでないなら、通常のエラーを返す実装にしておいた方がいい。
900:デフォルトの名無しさん
10/04/04 14:03:03
例外やエラーに関してもパターンが必要だと思う今日この頃。
俺はpublicメソッドでもなけりゃ自分で投げることは少ないなあ。
引数なんかは渡す前に確認するし。
901:デフォルトの名無しさん
10/04/04 14:05:51
ただprivateメソッドの中でエラーチェックしてないってことはないよ。
Assert入れてるから。
902:デフォルトの名無しさん
10/04/04 14:19:34
そうですかよかったね
903:デフォルトの名無しさん
10/04/05 11:58:36
しかしこの例外ネタは1スレに2回ぐらいは出るな
904:デフォルトの名無しさん
10/04/05 12:01:05
明確な回答を返しづらいからじゃねーの
ほとんどマイルールだもの
905:デフォルトの名無しさん
10/04/05 12:03:31
確かにお決まりパターンてないよな
ソフトの作りで例外でさくっと処理しちゃう場合もあるし
エラーコードとる場合もあるし
みなさんどうしてますかっていうよりこういうコードなんですがって
晒せる範囲でコードを見せてくれるといいんだけどな
質問の仕方の問題もあるな
906:デフォルトの名無しさん
10/04/05 12:33:12
ライブラリとして自分以外に提供するのか
自分で使い切るのかでも変わってくるし
907:デフォルトの名無しさん
10/04/05 12:57:19
こういう時に自称プロが出てきて語ってくれればいいのに。
要らん事にばっか口出すからなー。
908:デフォルトの名無しさん
10/04/05 13:04:44
仕事で3日だけC#のアプリを初めて作った自称プロの俺に言わせれば、
そのときの気分、テキトー
909:デフォルトの名無しさん
10/04/05 13:06:10
そういえば2chのほかに専門系の質問できるような場所ってあります?
なんか人減ってるしすぐ規制するしでw
910:デフォルトの名無しさん
10/04/05 13:09:17
URLリンク(stackoverflow.com)
911:デフォルトの名無しさん
10/04/05 13:09:42
今回のもかなり大規模っぽいねぇ
相談室の方も3日くらい放置状態だわ
912:デフォルトの名無しさん
10/04/05 13:10:33
ブラクラかと思うような名前だ>stackoverflow.com
913:デフォルトの名無しさん
10/04/05 13:33:21
>>909
日本語でもいくらかある
自分でぐぐってると、そんな質問はありえないと思うんだけど
914:デフォルトの名無しさん
10/04/05 13:33:25
まっとうなサイトだし有用な情報もごろごろしてるけど、
如何せん名前のイメージが良くない…というか悪いんだよな
915:デフォルトの名無しさん
10/04/05 15:03:50
>>910
ありがとう
>>913
いやあるにはあるんだが、なんていうかオンラインゲームの古参がいっぱい居るギルドに
入るようなちょっとやりにくさがあるんだよな・・・
その点2chは気軽っていうか
916:デフォルトの名無しさん
10/04/05 15:04:51
NumericUpDown を継承したユーザコントロールを作成しています。
Enterイベント・OnEnter・OnGotFocus 内でそれぞれ、
Select(0,Text.Length)・(Controls[1] as TextBox).SelectAll()・OnDoubleClick を
全ての組み合わせで試してみましたが、
フォーカスを得た時にテキストを全選択させることができません。
その他にしていることはTextAlignをRightにすることと、
配置先(元?)で、小数点5桁・変更幅0.001と設定しているのみです。
前述の機能を実装する方法を教えてください。
917:デフォルトの名無しさん
10/04/05 15:05:37
列挙型(大正、昭和、平成、)を後で追加出来るように
テキストファイルの"大正、昭和、平成、"を読み込んで宣言するにはどうすればいいですか?
918:デフォルトの名無しさん
10/04/05 15:07:36
おっと質問忘れるところだった
fileIo関連でwindowsの改行 0x0d0x0aを0x0aにするにはどこいじってましたっけ?
919:デフォルトの名無しさん
10/04/05 15:21:29
>>918
TextWriter.NewLine
920:デフォルトの名無しさん
10/04/05 15:24:02
>>919
TextWriter.NewLine = "\n";
こんな感じでしたよね?
ありがとうございます。
921:デフォルトの名無しさん
10/04/05 15:59:43
>>887-889
早速の回答ありがとうございました。
結構な手順を踏む必要があり、大変そうですね。
> exeとdllを開発中にフォルダ分けしてしまうようなことは考え内容がいいと思うよ。
なるほど、分かりました。
一通りの開発が完了し、配布する際に読み込み先を指定する事にします。
ありがとうございました。
922:デフォルトの名無しさん
10/04/05 21:09:42
DataGridView で、教えてください。
スクロールバーの表示設定を行う ScrollBars だったかがあったと思うのですが、
これで垂直スクロールバーを消すとマウスのスクロールボタン?による
スクロールを行えなくなります。
垂直スクロールバーを消していてもスクロールボタンによるスクロールを行えるようにすることは出来ませんか?
923:デフォルトの名無しさん
10/04/05 21:11:45
ホイール?
924:922
10/04/05 21:20:12
あ、そう。それです。
925:デフォルトの名無しさん
10/04/05 21:43:34
便乗質問。
DataGridViewでセルをコピーペーストでデータを移せるようにするにはどうしたらいいの?
できれば縦方向に複数のセルを同時に選択した状態で
コピペできるようになるといいんだけど。
926:デフォルトの名無しさん
10/04/05 21:57:42
クリップボードへはDataGridView.ClipboardCopyModeをtるえにすればいい
クリップボードからはシコシコ実装するしかありません
927:デフォルトの名無しさん
10/04/06 11:10:24
質問があります。
WPFで、使わないテキストボックスを、テキストがからのときには表示しないようにしようと考えました。
if (textBox.Text == null || textBox.Text == "") textBox.Hide();
としたら、textBoxにはHideはないらしいんですけど、
こういう場合どうしたらよいでしょう?
928:デフォルトの名無しさん
10/04/06 11:13:15
Visibility
929:デフォルトの名無しさん
10/04/06 11:16:19
WPFは専門じゃないけどさくっと見た限りでは>>928(先を越された
textBox1.Visibility = Visibility.Hidden;
textBox1.Visibility = Visibility.Collapsed;
上二つの違いは要素を表示しない上にレイアウト予約がどうのってあったな
マウスカーソルのせるとざっくりとした説明でたよ
textBox1.Visibility = Visibility.Visible;
930:デフォルトの名無しさん
10/04/06 12:34:44
>>928-929
さすがふらっとC#。
できました。マウスで出ますね。
ありがとうございました。