C♯, C#相談室 Part34

このエントリーをはてなブックマークに追加
507デフォルトの名無しさん
例外をcatchするとデバッグしにくいという問題は、
IDEのメニュー「デバッグ」「例外」で対応できる。
基本的にはSystem.IO系やNullReferenceExceptionの「スルー時中断」にチェックを入れる。
あとは発生したベースで必要な例外を追加していけばいい。
508デフォルトの名無しさん:2007/12/13(木) 04:34:09
今は特に言う事無いけど何か思いついたら次からここに書き込むよ
509デフォルトの名無しさん:2007/12/13(木) 09:26:21
スルー時中断ワロタ
510デフォルトの名無しさん:2007/12/13(木) 18:23:06
にゃるるで言及されてたC#のお偉いさんの話は本当なのだろうか。
もしマジだとしたら、ガクブルもので正直この先も使うか考えてしまう。
511デフォルトの名無しさん:2007/12/13(木) 18:27:37
何の話か言えよ
512デフォルトの名無しさん:2007/12/13(木) 19:09:25
ヘジたんが AOP 嫌いだとかクエリ式嫌いだと書かれてたアレ?
そんなガクブルな話書かれてたか?
513デフォルトの名無しさん:2007/12/13(木) 20:18:43
>>512
そんなことは常識だろ
514デフォルトの名無しさん:2007/12/13(木) 20:52:09
>>513
いや、だから、常識なのに何をガクブルしてんの?と。
515デフォルトの名無しさん:2007/12/13(木) 21:34:46
クエリ式もあれはひどいよな
使い物にならん
516デフォルトの名無しさん:2007/12/13(木) 22:38:37
いやいや、クエリ式は使い出すと便利でしょうがないよ。
517デフォルトの名無しさん:2007/12/13(木) 22:41:45
>>516
LINQのほとんどの演算子が使えないのに?
518デフォルトの名無しさん:2007/12/13(木) 22:59:40
>>517
どういうこと?
「LINQ to SQL では LINQ の標準クエリ演算子を全部サポートしてないのに?」といいたいのかな?
519デフォルトの名無しさん:2007/12/13(木) 23:02:05
>>518
拡張メソッドでは呼び出せて、SQLにも使えるのに
クエリ式では使えないものがいっぱいあるだろ
520デフォルトの名無しさん:2007/12/13(木) 23:11:29
>>519
ああ、そういうことね。

まあ、それでも、let とか2重 from とか使うときはクエリ式便利。

from x in a
from y in b
select new { x, y };
とか、クエリ式使わないと SelectMany 使って書くの大変よ。
521デフォルトの名無しさん:2007/12/13(木) 23:16:59
正直letとか使われるとコードがわけわかんなくなる
拡張メソッドでいいじゃん
522デフォルトの名無しさん:2007/12/13(木) 23:25:31
や、let はむしろ便利だろ
il からコード起こしてみたらすごいことになってたけどw
523デフォルトの名無しさん:2007/12/13(木) 23:26:16
クエリ式この世からなくなってくれればコード読みやすくなるのに
524デフォルトの名無しさん:2007/12/14(金) 00:33:05
csvファイルを読み込んで数値計算をさせたいのですけれど
どうやったらいいのか分かりません。
条件式書くのとcsvファイルを読み込んでそのまま出力することはできます。
むしろそれくらいしかできない初心者です。
アドバイスお願いします。
525デフォルトの名無しさん:2007/12/14(金) 00:34:09
>>524
そのまま出力できるならその値を出力せずに計算すればよかろ
526デフォルトの名無しさん:2007/12/14(金) 00:37:08
>>525
普通に計算式を書いてから、その後出力する処理を書けばいいということでしょうか?
527デフォルトの名無しさん:2007/12/14(金) 00:38:05
>>526
その通りだ
528デフォルトの名無しさん:2007/12/14(金) 00:41:13
>>527
あああああ そうだったんですか。
難しく考えすぎてました。ありがとうございました。ものすごく助かりました。
529デフォルトの名無しさん:2007/12/14(金) 08:35:40
てもその計算式をどうやって解析するかは想像できてるか?
530デフォルトの名無しさん:2007/12/14(金) 08:36:06
天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。
天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。
天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。
天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。
531デフォルトの名無しさん:2007/12/14(金) 10:33:22
WinAPI の DllImport やら、 const int WM_HOGE みたいなのをC++ヘッダファイルから
自動生成するようなツールってないの? VB6 にあったやつみたいな。
それか、WinAPI をひたすらラッピングした .NET Frx 向けライブラリ。
532デフォルトの名無しさん:2007/12/14(金) 10:38:01
>>531
こういうのは?
http://www.pinvoke.net/
533デフォルトの名無しさん:2007/12/14(金) 11:14:51
>>532
おおサンクス。ググっても DllImport の解説やら、WinAPI を使ったサンプルばっか出てきて
困ってたんだよね。これで幸せになれそうだ。
534デフォルトの名無しさん:2007/12/14(金) 12:18:55
たしかアドインでPInvoke関連のヤツがあったはず。
具体的に何を補助してくれるのかしらんが、余裕があれば試してみたらいい。
535デフォルトの名無しさん:2007/12/14(金) 12:23:20
そのアドインも>>532のリンク先にある
536デフォルトの名無しさん:2007/12/14(金) 15:06:38
隔離スレなのにずいぶん機能してるな
537デフォルトの名無しさん:2007/12/14(金) 15:14:57
オライリー プログラミングC#
プログラミング Microsoft Visual C# 2005 言語編

C#の勉強をはじめる場合、どちらがお勧めですか?
538デフォルトの名無しさん:2007/12/14(金) 15:29:59
難しくなさそうなのをちょっと読んで
あとは使ってれば分かる
539デフォルトの名無しさん:2007/12/14(金) 17:47:31
>>537
すでにほかの言語が使えるなら、オライリーが無駄な説明がなく理解しやすい。
下はシラネ。ただ、言語編とかつくのは他のも読む前提で書かれてることが多い。
後、@itのC#入門改訂版ならタダで読める。正直助長な部分もあるが、本を買う前に一度見てみて、
それだけでは不十分だと感じてから本を買っても遅くないんじゃないか?
540デフォルトの名無しさん:2007/12/14(金) 18:58:04
ってかMSDNとかの Microsoft 様のドキュメント読めば十分すぐるだろ・・・
541デフォルトの名無しさん:2007/12/14(金) 20:11:48
>>540
リファレンスには十分だが、携行できないしいろんな意味で不十分
「C#の勉強を始める場合」だからな。
542デフォルトの名無しさん:2007/12/14(金) 20:13:03
>>539
C++は使えるのとJAVAの文法の基本は分かっているので
オライリーにしてみます。MSの本は高すぎるのもネックです。
>>540
基本を押さえたら適宜参照してみます。
543デフォルトの名無しさん:2007/12/14(金) 20:48:26
携行できないのはたしかにその通りだけど、↓あたりとか折角無料なのに
スルーしてしまうのはもったいないと思う。

ttp://msdn2.microsoft.com/ja-jp/library/67ef8sbd%28VS.80%29.aspx
544デフォルトの名無しさん:2007/12/14(金) 20:51:56
>>542
正直、C++ と Java 使えるなら MS のドキュメントだけで十分だと思うけど。
545デフォルトの名無しさん:2007/12/14(金) 21:07:26
MSDNの
・C# プログラミング ガイド
・Java 開発者のための C# プログラミング言語
あたりに一通り目を通しとけば、まあいけると思うけどな。

どうしても紙媒体が好きならオライリーのC#いいと思うよ。
546デフォルトの名無しさん:2007/12/14(金) 21:19:20
以外とWebですますっていう人間多いのか?
俺は新しい言語を勉強するときには、とりあえず一冊本を買うんだが、
Webだけだと記憶しづらくないか?
547デフォルトの名無しさん:2007/12/14(金) 21:20:23
msdnはローカルに入れますよ
548デフォルトの名無しさん:2007/12/14(金) 21:25:51
>>547
ごめん、Webっていうのは言葉のあやで、デジタルデータでってこと。
549デフォルトの名無しさん:2007/12/14(金) 21:30:31
あんまり紙資源を無駄にしたくないから本は買わない
ウラニウムとどっちが無駄かは知らんけど
550デフォルトの名無しさん:2007/12/14(金) 21:42:48
「Web ですます」というより、C# は「Web ですむ」。
それくらい日本語情報充実してる。
551デフォルトの名無しさん:2007/12/14(金) 22:00:43
どっちにしろ公式のドキュメントには目を通しておく必要があるし、
MSの物の場合それだけで十分なことも多いからなぁ・・・
552デフォルトの名無しさん:2007/12/14(金) 22:02:49
俺の場合基本的に本ですべてすませて、必要なところだけ公式のドキュメントを見る。
553デフォルトの名無しさん:2007/12/14(金) 23:18:24
俺も情報をつかむ程度ならweb、じっくり勉強するなら本だな。
論文とかもできるだけ印刷して読む・・・あ、単純に紙媒体が好きなだけかな?結局好みの問題かも。
でもディスプレイとずっと睨めっこするのは辛くない?

というかMSDNは重いのが・・・
動的生成なサイトってイライラが溜まって好きじゃないんだよなw
554デフォルトの名無しさん:2007/12/14(金) 23:30:20
>>553
禿胴。昔はモニター越しの情報も紙媒体も一緒だと考えてたんだが、
長年やってるうちに結局紙媒体の方が覚えやすいっていう結論になった。
555デフォルトの名無しさん:2007/12/15(土) 00:38:52
オライリーの本は二部が難しいな。
のマーシャリングやらアセンブリやら属性、シリアル化とか
わけわからん。
ここはC#というよりは.NETの世界なんだろうけど。
556デフォルトの名無しさん:2007/12/15(土) 00:57:36
>>555
二部って何を指してるの?
557デフォルトの名無しさん:2007/12/15(土) 00:59:39
何らかの言語触ってりゃC#なんか一日で書けると思うが
まークラスライブラリは必要になったときに引くが
558デフォルトの名無しさん:2007/12/15(土) 01:07:27
1日もかかるかよ
559デフォルトの名無しさん:2007/12/15(土) 09:48:19
>>556
本の目次
560デフォルトの名無しさん:2007/12/15(土) 10:01:01
>>557は本当に一日で習得できた?
プログラムを動かすだけならコピペでも出来るし、
それに一通り使えるようになった後ではいままでやってきたことがひどく簡単なことだったと思うもんだよ。
561デフォルトの名無しさん:2007/12/15(土) 10:09:47
何らかの言語触ってりゃ
コボラー
絶対無理w
まあ、かけるだけならアホプログラムでも書けるといえなくもないから、
1日でとか短時間を自慢げに言うのって馬鹿にしか見えんよね。
562デフォルトの名無しさん:2007/12/15(土) 10:13:54
このスレらしいくだらない話だなw
563デフォルトの名無しさん:2007/12/15(土) 10:18:49
>>560
C++やらJavaやらやってたんで、楽勝だったよ。
564デフォルトの名無しさん:2007/12/15(土) 10:20:54
文法理解しただけで「習得」したと思っちゃう人いるよね。
565デフォルトの名無しさん:2007/12/15(土) 10:34:09
何らかの言語と
C++やjavaじゃぜんぜん条件が違うわけだが。
まあそんなことはどうでもいい。
できるって言うレベルが人によって違いすぎて何の意味もないわな。
566デフォルトの名無しさん:2007/12/15(土) 10:42:55
http://blog.livedoor.jp/dankogai/archives/50841173.html
> 私自信、新しいプログラミング言語を3日でマスターできなかったら負けだと思っている。
> もちろん「マスター」にもピンからきりまであるが、ここでいう「マスター」は、もちろんライ
> ブラリーやクラスを端から端まで覚えるということではなく、その言語の特徴をつかんで、
> 一目見てその言語で書かれた事がわかるようなコードを読み書きできることを指す。
567デフォルトの名無しさん:2007/12/15(土) 10:47:36
C#なんて、2.0あたりまでは、メジャーな言語の寄せ集めみたいな文法で、
入門書をパラパラと読んで「ああ、こういう言語ね」と思えないようなヤツは不勉強すぎ。
568デフォルトの名無しさん:2007/12/15(土) 10:48:53
言語自体の割合は小さくなってフレームワークなんかの割合がでかいって
偉い人も言ってたのにね。
569デフォルトの名無しさん:2007/12/15(土) 10:52:31
1.1まででの壁はデリゲートぐらいか
2.0は匿名メソッド(のスコープ)

言語としてはこじんまり
570デフォルトの名無しさん:2007/12/15(土) 11:09:48
あ、こういう言語ね
書ける
ここでいうマスター

はいはいなんの意味もないね。
ほんとに言語固有の部分は少ないしね。
まあそれでも仕様のボリュームはそれなりにあるけど、
ごく基本的な部分だけでもプログラムは書けるしな。
571デフォルトの名無しさん:2007/12/15(土) 11:13:31
そんなんだから、ライブラリでも設計実装させたら
とんでもないことになったりする。
572デフォルトの名無しさん:2007/12/15(土) 11:22:58
深く考えずに、細かいところを検証せずに
やたらマニアックなことする奴も氏ね、
コードは複雑で冗長でそのくせ穴だらけでたいして役にも立たない、
ああもうトラウマだぜ。
573デフォルトの名無しさん:2007/12/15(土) 11:30:57
みんなすごいんだね。
俺なんて、他人のサンプルコード見ては
「なんだよ、このアトリビュート。どうやって学んだんだよ」
「このプログラムの設計ってまず何からどうやって作ったんだ?」
ってな感じで右往左往して
C言語で作ったプログラムをC#で組んでみようと思っても
上手くいかないし。
よし、JAVA宿題スレにそのプログラムの問題投稿して
解いてもらって、そこからJAVA経由で理解しようと
思ったけど、返ってきた答えが答えになってない
不完全なプログラムだったりして、どーしたもんかと考えたり・・・

基本構文はすぐに解ったけどオブジェクト指向が出来てない
自分に辟易する。
574デフォルトの名無しさん:2007/12/15(土) 11:32:45
それは単に自分の頭が悪いだけで、
みんながすごいわけじゃなかろう。
575デフォルトの名無しさん:2007/12/15(土) 11:35:21
>>573
あんまりふらふらせずに一つの言語に専念してみたらどうだろうか?
ここで上がってる多言語使える人間も、基本的には一つの言語を十分に学んでから、
その言語を起点して他の言語を学んでる人が多いはず。
複数の言語を同時に習得しようとすると、文法やメトリックを混同してまったく勉強できないことも多い。
俺は、とりあえずjavaが使えれば、基本的なOOP的言語は文法の違いだけですぐに覚えられると思う。
576デフォルトの名無しさん:2007/12/15(土) 11:42:36
多言語を習得するというのは、実はそれほどすごいことじゃない。
文法とライブラリを使用する程度なら、その言語の主要概念(OOPとか)をすでに習得していればそれこそ丸一日あれば十分。
だから、Javaさえ覚えられればCやC++、C#は使えるも同然だし(言語固有の習慣や文法を除いて)、
言語を習得したっていうのは、言語の設計概念を理解してるかということに直結すると思う。
だから、一日で十分とかいってる人間も、似たような概念で構成された言語を、
今まで覚えた言語の概念を流用して使えるといってるわけで、
関数型言語をまったく知らない状態から、haskellを一日で自由に使えるわけがない。
577デフォルトの名無しさん:2007/12/15(土) 11:53:33
>だから、Javaさえ覚えられればCやC++、C#は使えるも同然だし(言語固有の習慣や文法を除いて)

無茶ゆうなw
ってか、言語固有の習慣や文法を除いて
ってどういうこったよ?それはどう使えるっていうんだ?
C++まともじゃなくてもやったことあるなら
そんな台詞はどうやっても出てこん。
578デフォルトの名無しさん:2007/12/15(土) 11:56:40
java屋がC#始めると変なとこだけ潔癖症でかなわん。
C#の文法でjavaを書く癖が直ってくれない。
579デフォルトの名無しさん:2007/12/15(土) 12:01:02
あるある、チェック済み例外がうじうじとか言い出すよな。
580デフォルトの名無しさん:2007/12/15(土) 12:17:54
>>573
そうだね。
こんだけオブジェクト指向が広まってるのに、たとえば、
「C一筋で10年、それ以外にはまったく興味もなくてすごしてしました。
いまさらC#やJavaなんてできません」
みたいなPGって激しくオワットルね。
581デフォルトの名無しさん:2007/12/15(土) 12:23:13
C++勉強してればオブジェクト指向の概念自体はだいたいわかるんじゃないのかな。
時歳に使いこなせるかどうかは別だけど。
582デフォルトの名無しさん:2007/12/15(土) 12:28:23
C++よりゃよっぽどオブジェクト指向部分に集中し易いjavaでも
結局思い切り人次第だからな〜
583デフォルトの名無しさん:2007/12/15(土) 13:14:59
>>577
同意。C++の複雑度はJAVAの比ではない。C++を知ってる人間なら
JAVAはえらく簡単に覚えられるが、その逆は真ではない。
584デフォルトの名無しさん:2007/12/15(土) 13:34:40
C++は手動でメモリ管理しなきゃならんし
標準ライブラリも足りないものだらけだし
言語自体にも罠がいっぱいある
585デフォルトの名無しさん:2007/12/15(土) 13:44:33
>>584
メモリ管理なら、今やスマートポインタを使わない
なんて考えられない。boostがよりいっそう充実して
ライブラリが進化することを期待する。現にそうなって
きている。
586デフォルトの名無しさん:2007/12/15(土) 13:47:44
いい加減すれ違い。
587デフォルトの名無しさん:2007/12/15(土) 13:50:49
ここを隔離スレと知っての発言か?
588デフォルトの名無しさん:2007/12/15(土) 14:10:25
いや、おまいらまずC#が生まれた背景を理解しろよ。一言だとJavaのパクリだがw
「C#はC++をモデルとしてプログラマーを面倒で煩雑な作業から開放するために
 作られたより効率的開発のしやすい言語」でC++プログラマーが開発者なんだよ。
つまり、C#はC++からメモリ開放や宣言の煩雑さを省いたオートマバージョンなんだよ。
つまらないCopyとCloneの違いなんてC++プログラマーは一瞬で理解できる。
それを勘違いしているC#ヲタはC#はすばらしいと思っているが、
C#でC++より優れたものを作れるかといったら答えはYESでもありNOでもある。
「何に優れたものか」によって尺度が違うからな。
C++⊃C#、VB.NET これは間違いない。C++を極めればどんな言語でも理解できるよな。
ただ、C++を極めると簡単に言ってもSTL、ATLからUNIX系、MS系や
地方言語のマクロ、コンパイラ、デバイスのインターフェースからOS制御、途方もないボリュームだ。
OSを記述する言語としてのC++ではなく、業務アプリを作るC++を学ぶなら
表面だけなら言語経験より開発手法や設計思想なんかの方がよっぽど重要なのかもな。

はい長文ゴメンなさ〜い。
589デフォルトの名無しさん:2007/12/15(土) 14:27:21
痛い
590デフォルトの名無しさん:2007/12/15(土) 14:45:54
C#にはあってC++にはない致命的なもの

一つのクラスを一つのソースファイルに書く機能
リフレクション
object型
クロージャ
式ツリー
自動シリアライズ
そしてもちろんGC

C++にあってC#にない致命的なもの

なし
591デフォルトの名無しさん:2007/12/15(土) 14:49:50
テンプレートがないのは重症だろ
592デフォルトの名無しさん:2007/12/15(土) 14:53:58
素晴らしい!これぞ隔離スレ
593デフォルトの名無しさん:2007/12/15(土) 14:57:30
ファイルのインクルードは?

あれがないおかげで、プロジェクト全体から見えるシンボル(#defineで定義するやつ)
を定義しようと思ったらプロジェクトのプロパティーでチマチマやらんといかん。

面倒だし明示的じゃない。
594デフォルトの名無しさん:2007/12/15(土) 15:18:13
C++にあってC#に無い物はわざわざ削った物ばかり
595デフォルトの名無しさん:2007/12/15(土) 15:30:26
>>593
何を言ってるのか分からん
#defineをプロジェクトのプロパティでどう代用するんだ
596デフォルトの名無しさん:2007/12/15(土) 15:36:50
>>595
ただ君が知らないだけなわりになぜか偉そうな口ぶりなのはどうなのw

まあ落ち着いて
http://msdn2.microsoft.com/ja-jp/library/0feaad6z(VS.80).aspx
の「Visual Studio 開発環境でこのコンパイラ オプションを設定するには」でも読め。
597デフォルトの名無しさん:2007/12/15(土) 15:46:21
C#で#defineはそんな使わんと思うんだが
マクロないんだし
598デフォルトの名無しさん:2007/12/15(土) 15:54:10
>>596
この機能のことであればひとかけらも致命的ではないだろ
お前のコードはいろんなシンボルを使った#ifだらけなのかもしらんが
プロパティで設定すればいいだけの話だ
599デフォルトの名無しさん:2007/12/15(土) 15:59:18
C# でも #if SYMBOL はやるけどもな。

#define は、
マクロ型関数は使うな、
プロジェクト全体に渡るシンボル定義はコンパイラオプション+プロジェクト設定でやれ
ってこと。
プロパティはあんまり関係ないと思うが。
600デフォルトの名無しさん:2007/12/15(土) 16:20:24
>>598
たしかに致命的ではないね。
その点は申し訳ない。
601デフォルトの名無しさん:2007/12/15(土) 17:39:33
つ C++/CLI
602デフォルトの名無しさん:2007/12/15(土) 18:19:16
>>590
おまえは本当に痛い。
リソースの乏しい久組み込みではGCが激しく邪魔になる。
一生Winアプリでも作ってろカスが。
603デフォルトの名無しさん:2007/12/15(土) 18:39:26
まるで組込用途でC#使ったことがあるような言いぐさだなw
604デフォルトの名無しさん:2007/12/15(土) 18:43:33
まあ組み込み用途ならCだし
605デフォルトの名無しさん:2007/12/15(土) 19:03:47
>>603
適当に言いました。
すいませんでした。
606デフォルトの名無しさん:2007/12/16(日) 00:34:29
>>591
っジェネリック
607デフォルトの名無しさん:2007/12/16(日) 00:36:45
C#のジェネリックは実体化しなくても型チェックされるから、
肝心なところで使い物にならない。
608デフォルトの名無しさん:2007/12/16(日) 00:38:05
型のチェックがガチガチなのはむしろ好きだがね
ちょっと間違うとコンパイルも通らない
609デフォルトの名無しさん:2007/12/16(日) 00:44:21
CとかC++は何でもかんでも値型にキャストできるのが気持ち悪い。
なんでchar[]とかがintにキャストできるのかと。
ポインタはパフォーマンスアップに繋がるのはわかるがこれだけは
気持ち悪くてしょうがない。
610デフォルトの名無しさん:2007/12/16(日) 00:48:55
C#の将来は明るいですか?
Windowsのソフトを作る予定がなくてもC#
を覚える必要があるか。JAVAとどっちを
勉強すべきか。
611デフォルトの名無しさん:2007/12/16(日) 00:49:47
基本的にC++はメモリ操作が特徴。
型なんてただのメモリの入れ物としてしか認識してないから。
612デフォルトの名無しさん:2007/12/16(日) 00:52:04
>>611
CはともかくさすがにC++にそれは言い過ぎのように思う
613デフォルトの名無しさん:2007/12/16(日) 00:52:26
>>611
C#の型はどうなの?
614デフォルトの名無しさん:2007/12/16(日) 00:53:42
>>611
仮想関数があれば仮想テーブルや型情報、vptrもある。
ただの入れ物とは思えない。
615デフォルトの名無しさん:2007/12/16(日) 01:11:04
Windowsのソフトを作る予定がないならC#使ってもしょうがない
作る予定があるソフトに必要な言語をやるといい
616デフォルトの名無しさん:2007/12/16(日) 01:28:21
>>615
Linuxに移植されたら?
世界は変わるかも?
617デフォルトの名無しさん:2007/12/16(日) 01:33:30
Monoのこと、ときどきでいいから思い出してください
618デフォルトの名無しさん:2007/12/16(日) 01:35:46
>>617
しょっちゅう使ってるよ
ペンケースに入ってる
619デフォルトの名無しさん:2007/12/16(日) 19:00:20
そういえばC++にはbool型をとる安全なifもないな
620デフォルトの名無しさん:2007/12/16(日) 21:28:37
安全
そのようなものはC++の思想に反するのだよ







うそですすみません。
621デフォルトの名無しさん:2007/12/16(日) 21:38:41
むしろif文にbool型しかとらないJava/C#が異端なんじゃねーの?
俺もbool型オンリーの方が好きだが、スクリプト言語してるとそうじゃない方が多い気がする。
622デフォルトの名無しさん:2007/12/16(日) 21:47:50
型に寛容な言語だとboolだけってわけにもいかないから
623デフォルトの名無しさん:2007/12/16(日) 21:48:27
D言語は

bool b = true;
if(b){} // これはいけるけど、
if(b = true) {} // これはだめだお
624デフォルトの名無しさん:2007/12/16(日) 21:48:36
動的型じゃ意味ないわな
625デフォルトの名無しさん:2007/12/16(日) 21:51:33
>>623
やるならここまできっちりやるべきなんだろうな
626デフォルトの名無しさん:2007/12/16(日) 22:05:30
>>623
Dはbool以外の型の値もifに与えられるけど、
代入式を取れないってのは革新的だよね。
627デフォルトの名無しさん:2007/12/16(日) 22:12:14
Dはよく知らんが
while ((line = reader.ReadLine()) != null)
こういうのはOKなの?
628デフォルトの名無しさん:2007/12/16(日) 22:13:29
>>626

メソッドのリターンコードで条件判定するようなプログラミングが簡単に
表現できない欠陥品だろD言語は
629デフォルトの名無しさん:2007/12/16(日) 23:00:27
何を言ってるの君は?
630デフォルトの名無しさん:2007/12/16(日) 23:02:10
bool以外の値をifに与えられちゃダメだと思うがね
boolの代入は規制すべきだと思う
631デフォルトの名無しさん:2007/12/17(月) 11:12:08
そういった人それぞれのプログラミング思想を具現化したものがそれぞれの言語な訳です
632デフォルトの名無しさん:2007/12/17(月) 22:19:44
だな
633デフォルトの名無しさん:2007/12/26(水) 02:04:33
C言語(C++)のDLLを、C#と連携を取ろうと思いました。
char*の受け渡しで、詰まるところがありました。
以下のコードで、環境により、エラーが出たりでなかったりします。
(現在、エラーが出る環境がないため、エラーメッセージ失念……)

--------エラーとなるコード C#側(Form1.cs)---------
[DllImport("Hoge.dll")]
extern static StringBuilder GetHogeMessage();

private void Form1_Load(object sender, EventArgs e)
{
  StringBuilder msg = GetHogeMessage();
  this.label1.Text = msg.ToString();
}

-------エラーとなるコード CのDLL側(Hoge.dll)----------
char msg[255];
extern "C" __declspec(dllexport) char* GetHogeMessage()
{
  sprintf_s(msg, 255, "ホゲホゲプー");
  return msg;
}
--------------------------------------

以下のように、ネットで、よく見かけるコードに変えましたら、
エラーが出なくなりました。

続きます。
634デフォルトの名無しさん:2007/12/26(水) 02:04:57
--------正しく動くコード C#側(Form1.cs)---------
[DllImport("Hoge.dll")]
extern static void GetHogeMessage( StringBuilder name, int len );

private void Form1_Load(object sender, EventArgs e)
{
StringBuilder msg = new StringBuilder(255);
GetHogeMessage(msg, 255);
this.label1.Text = msg.ToString();
}
-------正しく動くコード CのDLL側(Hoge.dll)----------
extern "C" __declspec(dllexport) void GetCurrentName(char* msg, int length)
{
  sprintf_s(msg, length, "ホゲホゲプー");
}

私のよく知る Delphiでは、string ←→ char*(PChar)間では、
コンパイル時に自動で変換コードを入れているのが、
デバッガで逆アセンブルすると、わかります。

同様に、動作を知ろうと、Reflectorで、
ILに変換したのも読んでみたのですが、コンパイラマジックなどなく、
理解にいたりませんでした。

C#は(というか、MSIL?)、内部動作的には、char* → StringBuilderでは、何をやっているのでしょうか?
私は想像では、StringBuilder.pChar のような非公開のプロパティに、char*を代入して処理しているのでは?と思っています。

そうなると、上記のエラーとなるコードでは、インスタンスを生成していないために、
強引なキャストが起き、StringBuilderとして処理はされるものの、
msg.ToString などで、エラーが起きることがある、と。

この辺の、動作に関するドキュメント等ありませんでしょうか?
635デフォルトの名無しさん:2007/12/26(水) 02:05:54
コードミスりました orz

--------正しく動くコード C#側(Form1.cs)---------
[DllImport("Hoge.dll")]
extern static void GetHogeMessage(StringBuilder name, int len );

private void Form1_Load(object sender, EventArgs e)
{
  StringBuilder msg = new StringBuilder(255);
  GetHogeMessage(msg, 255);
  this.label1.Text = msg.ToString();
}
-------正しく動くコード CのDLL側(Hoge.dll)----------
extern "C" __declspec(dllexport) void GetHogeMessage(char* msg, int length)
{
  sprintf_s(msg, length, "ホゲホゲプー");
}
636デフォルトの名無しさん:2007/12/26(水) 02:10:16
マーシャラがStringBuilderが持ってるバッファのポインタをchar*として渡すだけ。
char*を返す関数なら普通にStringで受ければいい。
637デフォルトの名無しさん:2007/12/26(水) 02:12:17
638デフォルトの名無しさん:2007/12/26(水) 03:00:09
>>636-637
サンクス!!
アンマネージドと、マネージドの相互変換をマーシャリングというのですね。

Buffers のサンプル
http://msdn2.microsoft.com/ja-jp/library/x3txb6xc(VS.80).aspx

>>637の文字列のところに書いてありました。
文字列の変更の可能性がある場合は、StringBuilderを使うのはあってるみたいです。
引数などで渡した場合、StringBuilderのバッファのポインタが渡されるだけなんですね。

アンマネージドで確保されたchar* を返却値としてもらう場合は、
自動的に、解放されるのを防ぐために、IntPtr でアンマネージのままもらって、
Marshal.PtrToStringAuto で、stringに変換すればいいのですね。

わかりました!
ありがとうございました。
639デフォルトの名無しさん:2007/12/26(水) 11:48:22
.net のVBコードをC#に変換できるツールってないですか?
640デフォルトの名無しさん:2007/12/26(水) 12:12:05
ありますよ
641デフォルトの名無しさん:2007/12/26(水) 12:21:21
ありがとうです
642デフォルトの名無しさん:2007/12/27(木) 18:45:28
ツールでVBコードをC#に変換して
勉強がてらいじってるけどさっぱり分からん

c++でネイティブ書くなんて一生無理だなこれは
643デフォルトの名無しさん:2007/12/27(木) 18:53:27
それはない
プログラミングが上達しない才能が無い限りいつかできるようになっちゃうよ
644デフォルトの名無しさん:2007/12/28(金) 00:38:35
>>638
char*からなら、PtrToStringAnsiではないのか?
645デフォルトの名無しさん:2007/12/28(金) 01:18:07
こんばんは。質問があります。
[管理ツール]−[データ ソース (ODBC)]-[ユーザDSN]でデータソースの設定を行う際、
表示される画面(例えばアクセスの場合だとデータベースの選択画面)をプログラム上で
出すにはどうすればいいのでしょうか?
ヒントか参考になるサイトでもいいので教えていただけないでしょうか。
よろしくお願いします。
646デフォルトの名無しさん:2007/12/28(金) 02:11:03
GetLastErrorをHRESULTに加工して
それから例外を作る装備はないですか?
647デフォルトの名無しさん:2007/12/28(金) 04:48:09
>>644
そうですね。

Buffers のサンプル
http://msdn2.microsoft.com/ja-jp/library/x3txb6xc(VS.80).aspx

の方でも同じようなやり方で、できるとありました。
どもです。
648デフォルトの名無しさん:2007/12/28(金) 11:10:04
throw Marshal.GetExceptionForHR(Marshal.GetLastWin32Error());
649デフォルトの名無しさん:2007/12/28(金) 11:18:20
LastWin32ErrorはHRESULTじゃないと言うに
GetHRForLastWin32Error
650デフォルトの名無しさん:2007/12/28(金) 21:48:02
>>643
すげぇ才能だなww
逆にそれは見てみたい
>上達しない才能
651デフォルトの名無しさん:2007/12/28(金) 22:17:45
論理的思考を拒否する人。
感情や直感が最優先の人。
自分の思いが総て正しいと思う人。(これはちょっと微妙か
実際居ると思うぞ。
652デフォルトの名無しさん:2007/12/28(金) 22:19:38
急に何の話してるの?
653デフォルトの名無しさん:2007/12/29(土) 08:03:35
>>650
俺いっぱい見てきてるよ・・・
654デフォルトの名無しさん:2008/01/09(水) 05:55:52
655デフォルトの名無しさん:2008/01/13(日) 23:45:17
da.Fill(dt)で取得したデータの内容をColumnNameでダイレクトに取得したいのですが
foreach以外に良い方法があるでしょうか?
656デフォルトの名無しさん:2008/01/13(日) 23:57:24
657655:2008/01/14(月) 00:05:49
>>656
理解が足りてませんでした・・

ありがとうございました
658デフォルトの名無しさん:2008/01/14(月) 12:01:58
質問です

SizeChangedイベントをハンドルしてInvalidateを呼び出して画面全体を再描画したいんですが
領域全体が無効化→背景色クリアが入ってしまい、その後に全体を書くので偉くちらつきます。
で、この背景色クリアを無効化したいんですが、どのようにしたら良いですか?

背景色クリアに関してはWinAPIで叩いてたころは確か
ブラシを入れないとか、Invalidateの引数でRedrawするかしないかを指定できたと思うんですが…

よろしくお願いします。
659デフォルトの名無しさん:2008/01/14(月) 12:13:19
SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.DoubleBuffer,true);
と設定してダブルバッファリングすればいい
660デフォルトの名無しさん:2008/01/14(月) 12:18:12
いやダブルバッファするかどうかは別問題でしょ。
>>658についてはResizeRedrawを有効にすればOKだと思うけど。

なんか>>658はあまりよくわかってなさそうだから一応補足すると、
これは要するにいちいちInvalidateしなくてよくなるって意味ね。
661デフォルトの名無しさん:2008/01/14(月) 12:21:52
用途によって違うだろ
662658:2008/01/14(月) 13:24:59
>>660
ResizeRedraw=trueにしても駄目でした。
おっしゃるとおり、いちいちInvalidateしなくてよくなるんですが、
単に勝手にInvalidateを呼び出しているだけみたいですね。

結局ですが、多分.NETのInvalidateの実装が
InvalidateRect( m_hWnd, NULL, TRUE );
みたいにされちゃってるんだと思ったんで、
直接user32.dllのInvalidateRectをDllImportして
bEraseをFALSEで呼び出したらブラシのクリアが無くなりました。

ご返信していただいた方ありがとうございました。
663デフォルトの名無しさん:2008/01/14(月) 15:07:20
>>658
なにもしない OnPaintBackground は?
664658:2008/01/14(月) 16:11:11
>>663
.NET的にはそれが一番よさそうな実装方法ですね…
ありがとうございます。そちらのコードに修正します。
665デフォルトの名無しさん:2008/01/15(火) 11:05:58
WM_ERASEBKGND をいじった事なかったのか
666デフォルトの名無しさん:2008/01/17(木) 07:35:08
すみませんが教えてください。C#とC++は、.NETで行っても処理速度は
あくまでも同じなのでしょうか?それとも、C++の方が圧倒的に早いのでしょうか?
C#とVBでは処理速度は描画も含めて同じだと思いますが、C++では直接
Win32APIで動かしていて高速動作するようになっているのでしょうか?
よろしくお願いします。
667デフォルトの名無しさん:2008/01/17(木) 08:43:03
>>666
.NETが扱えるのはC++ではなくC++/CLI
C++/CLIが吐き出す中間コードはC#,VBと同じ
よって速度は同じ
668デフォルトの名無しさん:2008/01/17(木) 09:33:13
C++/CLIはネイティブコードを埋め込める
669デフォルトの名無しさん:2008/01/17(木) 11:07:18
>>668
C#もunmanaged使えば同じじゃないの?
670デフォルトの名無しさん:2008/01/17(木) 11:18:37
同じ内容を書けば同じ速さになるはずということで
671666:2008/01/17(木) 11:21:15
>>667-669
解説ありがとうございます。
たとえば、Windowsのエクスプローラはフォルダのフォーカス移動に伴う
ファイル表示でもものすごく高速に実行され、画面の描画もめちゃくちゃ
瞬時に行われ、ノートPCなどの描画が比較的遅いPCですと.NETの
Formアプリケーションなどとはけっこう速度差を体感します。レインボウ
のような現象も顕著に出ていて、ネイティブのアプリケーションとでは
ものすごく遅い感じが否めませんでした。

こうした差は、C++/CLIを使って、すべてをネイティブコードにコンパイル
してしまうと、たとえばエクスプローラ並みにすばらしく高速で動くように
体感できるようになるということなのでしょうか。(長くてすみません)
672デフォルトの名無しさん:2008/01/17(木) 11:22:25
>>669
C#でunmanagedは使えないだろ
673デフォルトの名無しさん:2008/01/17(木) 11:27:32
>>671
それはWindows.Formsが遅いだけ。

C++/CLIを使っても同じGUIライブラリを使う限り、もっさりするのは換わらない
674デフォルトの名無しさん:2008/01/17(木) 11:33:04
>>673
なるほど、そうだったんですか。
ということは、C++/CLIで、Formsを使わずに何かネイティブのGUI処理をする
方法を使う(MFCでしょうか、よくは知らないのですが)などすれば、
エクスプローラ並みの高速処理が実現できるということでしょうか、
そしてそういうことはC#やVBでは実現できないと・・・、この辺がよくわかりません、
よろしくお願いします。
675デフォルトの名無しさん:2008/01/17(木) 12:04:06
>>674
C# と GDI+ でも、あんまり Forms の世話にならないで自前で描画する
大型のコントロール等書いて使えばそこそこ高速になるよ。

下手に Forms で UI 書くより、ブラウザ埋め込んで Ajax でもした方が
高速になるケースもあるだろうし (ブラウザはレンダリングが結構速いから・・・)。

>この辺がよくわかりません
「ネイティブ」の意味が分からないということ?
676デフォルトの名無しさん:2008/01/17(木) 12:10:02
Forms はなんであんなに重いのかね?
677デフォルトの名無しさん:2008/01/17(木) 12:37:29
>>675
たびたびすみません。

>自前で描画する大型のコントロール等書いて

これは要するに、Paintイベントなどでの処理を描くということでしょうか。

>「ネイティブ」の意味が分からないということ?

「自前で描画する大型のコントロール等」という場合に、そこに.NETFramework
のクラスで描画をするだけでよくて、いちいちAPIを使うことなく高速化できるという
ことでしょうか?
678666:2008/01/17(木) 12:41:00
名前入れるの忘れました。

そのようにしてコントロールを高速化した場合、たとえば現在Form の右下を
つまんでリサイズすると、Formのサイズ変更がやたらと遅くてボーダーの移動が
ぱらぱらと目に見えて動きます。こういったことも高速になるでしょうか?
679デフォルトの名無しさん:2008/01/17(木) 12:44:57
GDIのAPIを直接叩くGraphicsクラスみたいなのは作ったことあるぜ
680デフォルトの名無しさん:2008/01/17(木) 12:45:19
たとえばTextBoxを100個WinFormに貼り付けて使うより、
普段はTextBoxの「ハリボテ」を100個描画しておいてユーザーがマウスポインタで
クリックしたときだけ本物のTextBoxを該当位置にひとつだけ表示するような
コントロールを自作した方が早いってことじゃない?

でもこの手のコントロールの自作ってかなり面倒なんだよね。
情報すくないから手探りでいろいろ調べる必要があったり。
681デフォルトの名無しさん:2008/01/17(木) 12:54:09
>>678
そう。
同時にOnPaintBackgroundで一瞬背景色で塗られるなどのUI 的に不快な動作も直す。
Panel を Dock させてあれこれやるより、OnSizeChanged 等で自前でレイアウトする方が速いし。

ただ GDI+ の遅さは非力なPCでは如何ともしがたいところもあるので、低スペックPCでも
超軽快に動くようにしたいなら C++ でネイティブでやるより無いと思う。
682666:2008/01/17(木) 13:03:35
>>679-681
いろいろご指導ありがとうございます!

>>680
>同時にOnPaintBackgroundで一瞬背景色で塗られるなどのUI 的に不快な動作も直す。

あの動きも改善方法があったんですね、うれしいです。自分でも実装できる
かどうかわかりませんが勉強してみます!

>Panel を Dock させてあれこれやるより、OnSizeChanged 等で自前でレイアウトする方が速いし。

このPanelのDockやDocking機能のコントロ-ルは使っていました。
そうすることなく自分でコントロールの移動やリサイズをさせた方が早い
のですね。いまからそれやると大変かとも思いましたが、今後の参考に致します!
勉強になります、ご指導ありがとうございました!!
683666:2008/01/17(木) 13:07:33
>>682(訂正)
すみませんリンク先まちがえました。訂正>>680>>681
>ただ GDI+ の遅さは非力なPCでは如何ともしがたいところもあるので、低スペックPCでも
>超軽快に動くようにしたいなら C++ でネイティブでやるより無いと思う。
この件も頭に置いておきます。どうもでした!
684デフォルトの名無しさん:2008/01/17(木) 23:54:33
フォルダのタイムスタンプについて教えてください。サブフォルダを追加してそこに
ファイルを作成して編集したりしてあるフォルダの中身が変化していましたが、
なぜかそのフォルダのタイムスタンプがその変更よりも前のままになっていました。
こうならずに、更新日時が反映されている場合もありました。これは何か更新される
ために必要な条件のようなものがあってそれが異なっているためなのでしょうか?
685デフォルトの名無しさん:2008/01/18(金) 10:40:29
そりゃディレクトリエントリが更新された時刻だもの
686684:2008/01/18(金) 15:57:46
>>685
そうだったのですか、ということは内部のサブフォルダ内の何かのファイルが変更された
としてもそれの時刻は繁栄されないのですね。わかりました。

すみませんがもう一つお願いします。

アプリケーションのアイコンを探すときにレジストリ内のDefaultIconキーの値のところに、
次のようにマイナスの番号が入っている場合、shell32.dllのファイルの中の番号としては
使えないのでしょうか?kernel32.dllの LoadLibraryExA で検索してアイコンを見つける
ときにも使えるのでしょうか?

HKEY_CLASSES_ROOT\VBSFile\DefaultIcon\"(default)" = "shell32.dll,-298"
HKEY_CLASSES_ROOT\txtfile\DefaultIcon\"(default)" = "shell32.dll,-16"

(これでサウンドの場合の C:\WINDOWS\system32\wmploc.dll,-734 の-734 を
そのまま使ったところ、音符マークのアイコンとは別のものが来たのでした)
687デフォルトの名無しさん:2008/01/18(金) 16:11:30
わからんが、wmploc.dllを開いてみたら 734 に音符のアイコン入ってたけど。
マイナスは別の意味を持たせてるのかも?
688684:2008/01/18(金) 17:24:42
>>687
あ、すみませんでした、一つ間違いがあることに気がつきました。とはいうものの、
プラスとしてやってみたもののそれでも取ることができませんでした。なんだろう、
映画のフイルムの絵のようなアイコンなのですが・・・。まずは、そのアイコンの
ビューワを探して見てみます、ありがとうございました。
689デフォルトの名無しさん:2008/01/18(金) 17:34:14
アイコンはVisualStudioでDLL読んでみたんだけど、
EEだとリソースは無理か
690デフォルトの名無しさん:2008/01/18(金) 18:43:00
>>686-687
0以上の値は、0からの連番で何個目という指定(シェルのアイコン指定のダイアログの順番)。
負の値は、絶対値がリソースIDを表すという指定。
691デフォルトの名無しさん:2008/01/18(金) 19:15:16
>>690
あーそうだったのですか、わかりました。それでもう一度やってみます、
どうもありがとうございました!!
692691:2008/01/18(金) 21:20:38
>>689-690
アイコンの取得に成功しました、ありがとうございました。助かりました!!
693デフォルトの名無しさん:2008/01/19(土) 22:18:09
int / int で小数点が出てこないのはなんでだぜ?
694デフォルトの名無しさん:2008/01/19(土) 22:19:29
その方が速いから
695デフォルトの名無しさん:2008/01/19(土) 23:10:17
>>693
int/intの結果はintになると規格で決まってるから
696デフォルトの名無しさん:2008/01/19(土) 23:11:29
LOG4NETで設定ファイルを使わずに、ソース上で出力先やAppenderの指定をできる方法ってありますか?
クライアントアプリケーションとして扱う場合に、ユーザに勝手に設定を弄られたくないから
LogManagerでApp.Configの設定を読むような方式にはしたくないのです。
ログ出力クラスを自作したほうが早いですかね?
697デフォルトの名無しさん:2008/01/19(土) 23:49:42
そのまんまコードで初期化すりゃいいんでは?
698696:2008/01/20(日) 03:49:16
>697
ログメッセージを出力するためのILogインタフェースを持った
インスタンスを取得するには、LogManagerクラスから取得する
しかないようなんですよね。
LogManagerクラスからはRepositoryやAppenderを取得できても、
設定はできないので、どうしたらいいのか分かりません。

RollingFileAppender appender = new RollingFileAppender();
appender.AppendToFile = true;
appender.File = @"C:\test.log";
appender.Layout = new PatternLayout("%d %5p %c{2} - %m%n");
RootLogger root = new RootLogger(Level.Debug);
root.AddAppender(appender);
root.Log(Level.Debug,"tset", new Exception());

以上のコードでログが出ないか期待しましたがダメでした...
699デフォルトの名無しさん:2008/01/20(日) 04:18:03
>698
log4netのソースを直に書き換えて埋め込んじゃえばいいんじゃない?
700デフォルトの名無しさん:2008/01/20(日) 08:13:51
>>699 あほですか?
701デフォルトの名無しさん:2008/01/20(日) 20:53:54
アホちゃいまんねん
702デフォルトの名無しさん:2008/01/20(日) 20:59:58
パーでんねん
703698:2008/01/20(日) 23:56:26
>699
なるべくOSSのモジュールはソース変更したくないんですよ。
ライセンスに従って公開しなきゃいけなくなっちゃうし。
公開するだけならまだ変更部分だけで済みそうですが、
公開するための環境を維持しておかなきゃいけなかったり、面倒です。
704デフォルトの名無しさん:2008/01/21(月) 00:16:31
>703
log4netはアパッチライセンスだから融通が利くよ。
705デフォルトの名無しさん:2008/01/25(金) 13:26:49
ParallelFXのParallel.Forで実行されるスレッド数はいじることができますか?
706デフォルトの名無しさん:2008/01/25(金) 23:21:36
>>705
System.Threading.Tasks.TaskManagerPolicy
のコンストラクタで、minThreads, idealThreads, maxThreads を指定可能。
707デフォルトの名無しさん:2008/01/29(火) 21:49:38
FlowLayoutPanelにコントロールを追加しているのですが、
下記のようなコードだと一瞬ちらつきます。
FlowLayoutPanelにBeginUpdate、EndUpdateのような描画を一時止めるようなメソッドはないでしょうか?

Panel.BeginUpdate;←のようなものありませんか?
Panel.Controls.Clear();←ここでクリアしてる為、一瞬まっさらになり、ちらつく
for (int i = 0; i < max; i++)
{
 Panel.Controls.Add( コントロール );
}
Panel.EndUpdate;←のようなものありませんか?
708デフォルトの名無しさん:2008/01/29(火) 22:28:31
節穴?

SuspendLayout/ResumeLayout
709デフォルトの名無しさん:2008/01/29(火) 23:21:31
PictureBoxの非同期読み込みみたいに、画像の読み込みを途中でキャンセルしたり
読み込み状況をモニターできるようにしたいです。
Image.FromFile等ではそのようなコールバックを指定できないようです。
どうやればいいのでしょうか?
710デフォルトの名無しさん:2008/01/29(火) 23:26:44
ためしもしないで適当に書くと
Image.FromSteamに非同期Streamを渡せばいいんじゃね
711デフォルトの名無しさん:2008/01/30(水) 00:02:26
>>710
Streamを自分で実装してReadの中でゴニョゴニョ、ってことでしょうか。
そういうやり方しかないんかなあ。
712デフォルトの名無しさん:2008/01/30(水) 06:00:26
画像のデコード程度、キャンセルしたくなるほどの時間もかからんと思うが
713デフォルトの名無しさん:2008/01/30(水) 17:05:46
Image.FromStreamするとImageが生きてる間はStreamも生きてなきゃダメなのか…
と思ってKB309482見て試してみたけど、アニメーションGIFだとダメだった…
714デフォルトの名無しさん:2008/01/30(水) 19:33:03
DataSetを使ってレコード単位にDBを操作する場合に、
DataSet.DataTable.Rows[i]["カラム名"]
のような記述が必要になりますよね。
(DataGridのDataSourceを使えばそんな意識はしないですが)

この、文字列でカラム名を指定するのがイマイチだと思うのです。
文字列だからインテリセンスも効かないですし、打ち間違えの可能性も。

カラム名を入れたenumを作れば解決できるような気もしますが、
DataSetの中に既に定義があるのですから、それを流用できないでしょうか?

要するに、カラムをカラム名で指定する際に、intと文字列以外の方法が
あるでしょうか?
715デフォルトの名無しさん:2008/01/30(水) 20:12:22
>>714
DataSet継承してカラム名をプロパティにしたクラスを作る。
VisualStudioでテーブルから自動生成すればできるだろ。
716デフォルトの名無しさん:2008/01/31(木) 09:26:24
>>713
一旦 MemoryStream に読み込んでそっから Image 作ればいいよ
717714:2008/01/31(木) 10:22:15
>>715
どうも有り難うございます。
しばらく考えているんですけれど、どうもイメージが浮かばないです。
DataSetを継承しても、汎用的なものは出来ないように思うのですが。

VSで自動生成と言う意味は、VSのデザイナで自動生成されたDataSetの
ソースを何らかの方法で解析して、カラム名を格納するという意味なのでしょうか‥‥。
718デフォルトの名無しさん:2008/01/31(木) 13:51:08
>>717
厳密に型指定されたDataSetでググる。

DataSetをそのまま使うならカラムやその型の情報はクエリーの応答があるまでわからない。
その場合はカラム名の文字列か序数で指定するしかないな。
719714:2008/01/31(木) 18:19:17
>>718
なるほど、DataSetを作る段階で別の種類のDataSetだったのですね。
どうも有り難うございます。調べてみます。
720デフォルトの名無しさん:2008/01/31(木) 22:15:17

DBと接続して使うんじゃなく、dataset単独で簡易なデータベースとして使うなら、
プロジェクトに新規でxsd(スキーマ)を追加してテーブルやリレーション、キーを定義して、
いっぺんコンパイルすると、ツールボックスにdatasetを継承したdataset1(xsdファイルで定義した
名前による)コンポーネントが現れる。フォームのデザイナでこいつをD&Dしてやると型付けの
あるdatasetとして使えるよ。
721デフォルトの名無しさん:2008/02/01(金) 02:47:42
表計算ソフトの=REPT(x;y)を模倣した自作関数をfprintfの第3引数以降に使う場合です。
rept(int x,int y)の記述にはfor,while,do〜whileのどれが適任でしょう?
回数を指定するyは0の場合もあります。
722デフォルトの名無しさん:2008/02/01(金) 15:04:16
それは本当にC#の質問ですか
723デフォルトの名無しさん:2008/02/02(土) 09:11:50
ウィンドウを持ったアプリケーションが起動されるのを
監視することはできますか?
724デフォルトの名無しさん:2008/02/02(土) 12:20:47
できます。
725723:2008/02/02(土) 13:09:26
>>724
やり方か調べるためのキーワードを教えていただけませんか?
726デフォルトの名無しさん:2008/02/02(土) 13:19:43
findwindow
727デフォルトの名無しさん:2008/02/02(土) 22:26:37
>712
画像のデコードがそこまで重いことはまずないと思うが、
ファイルアクセスが妙に遅延することはあると思うよ。
ノートンとかウイルスバスターがファイルアクセスに
むやみやたらに割り込むから信じられないくらい応答が返ってこないことがあったり。
728デフォルトの名無しさん:2008/02/02(土) 22:51:34
や、それなら普通に事前にMemoryStreamに(非同期で)読んどけば良いじゃん?
729デフォルトの名無しさん:2008/02/02(土) 22:59:01
画像がWeb上とかにあって数KBダウンロード毎に描画するんならキャンセルとかあってもいいかもしれんが、
既にハードディスクあるものを表示するだけで、わざわざキャンセルとか普通やらないな
730デフォルトの名無しさん:2008/02/05(火) 20:08:01
.NETでATLのCComPtrみたいな
タイプライブラリのないInterfaceを扱う仕組みはあるですか?
731デフォルトの名無しさん:2008/02/05(火) 20:26:03
Managed DirectX
732デフォルトの名無しさん:2008/02/05(火) 21:38:05
自前でinterface再定義はできる Guid属性とかComImport属性とか使う
IDispatchならType.InvokeMemberでレイトバインディングもできる
733デフォルトの名無しさん:2008/02/05(火) 23:35:42
std::exceptionにUNICODE入れると文字が壊れますか?
734デフォルトの名無しさん:2008/02/05(火) 23:37:43
スレ違い
735デフォルトの名無しさん:2008/02/13(水) 00:08:55
すみません、よろしければ
http://pc11.2ch.net/test/read.cgi/tech/1200911737/182-183
について教えてください。何卒よろしくお願いします。
736デフォルトの名無しさん:2008/02/13(水) 00:36:45
その質問には答えるなということか。
了解した。
737デフォルトの名無しさん:2008/02/13(水) 11:45:38
IPCをチャンネルに使ったリモーティングを使って、同一PC内でプロセス間通信を
しているのですが、厳密署名したら少し動かなくなりました。

Clinet.exeとServer.exeとRemote.dllの3つのプロジェクトからなるソリューションです。
それぞれのアセンブリに同一のsnkファイルで署名したところ、
Client.exeが、Server.exeからのコールバックのみを受け取れなくなりました。
クライアントからサーバへのメッセージングは今までどおりに出来ています。

こういうモノなのでしょうか?どなたかご存知の方がいらしたら、宜しくお願いします。

738737:2008/02/13(水) 13:33:40
IpcChannel channel = new IpcChannel(properties,
 null, new BinaryServerFormatterSinkProvider(properties, null));

クライアントとサービスの両方を、上記の書き方で初期化したら出来ました。
739デフォルトの名無しさん:2008/02/13(水) 21:14:32
SqlTransactionのCommit()のタイムアウト時間を変更したいのですが
どこで設定すればいいのでしょうか?
サーバーの負荷がでかいときにCommitのタイムアウト時間だけ短くてタイムアウトしてしまいます。
740デフォルトの名無しさん:2008/02/14(木) 09:36:26
start tran somewhere here

SqlCommand cmd = new SqlCommand(mySqlCommand, conn);
cmd.CommandTimeout = 0; // NO TIMEOUT
cmd.ExecuteNonQuery();

commit here

741デフォルトの名無しさん:2008/02/14(木) 09:58:26
>740
それで変わるのはExecuteNonQuery()のタイムアウト時間だけで
Commit()のタイムアウト時間は変わらないから困ってるんだよ。
742デフォルトの名無しさん:2008/02/14(木) 10:23:36
なるほど。
しかし、"BEGIN TRANSACTION"と"COMMIT"をExecuteNonQueryで実行したら?
743デフォルトの名無しさん:2008/02/14(木) 22:05:21
>742
確かにSqlTransactionのCommitもExecuteNonQueryでCOMMIT叩いてるだけにしか見えないのでそれでもいいかなとか思ってました…。
やってみたらそれで問題なく動いてしまったし。
SqlTransactionの存在意義がなくなってしまうけど仕方がないか。
744デフォルトの名無しさん:2008/02/26(火) 18:18:25
マクロメディアFlashの
タイムラインみたいなウィンドウ作りたいけど

やっぱり自作しなきゃだめかな
なんか楽そうな方法ありませんか?
745デフォルトの名無しさん:2008/02/27(水) 00:20:43
最近どっかで見たな
746デフォルトの名無しさん:2008/02/28(木) 13:04:29
NiVEとか?
747747:2008/02/29(金) 01:44:05
axWindowsMediaPlayerを使ってオーディオファイルを再生しています。
ListBoxにプレイリストの内容を表示しようと

this.listBox1.SuspendLayout();
for(int i = 0; i < wmp.currentPlaylist.count; i++) {
this.listBox1.Items.Add(wmp.currentPlaylist.get_Item(i));
}

として、ListBoxにプレイリストの内容を表示しました。
更に再生中のMediaを選択状態にしたく、続けて

for(int i = 0; i < this.listBox1.Items.Count; i++) {
if(this.listBox1.Items[i].Equals(wmp.Ctlcontrols.currentItem)) {
this.listBox1.SelectedIndex = i;
}
}
this.listBox1.ResumeLayout();

としました。しかし、再生中のMediaが選択されません。
インターフェース同士の比較が上手くいかないからなのかなと思っています。
上手くいく方法がありましたら教えて下さい。もう3時間位悩んでいます。
よろしくお願いします。
748747:2008/02/29(金) 04:47:58
age忘れてました。まだ悩んでます。助けて下さい。orz
749デフォルトの名無しさん:2008/02/29(金) 16:00:56
そもそも、PlayList[]の型とcurrentItemの型が違う。
750747:2008/02/29(金) 16:37:55
wmp.currentPlaylist.get_Item(i)

wmp.Ctlcontrols.currentItem
もWMPLib.IWMPMediaかと思ったのですが、違うのでしょうか?
for(int i = 0; i < this.listBox1.Items.Count; i++) {
if(((WMPLib.IWMPMedia)(this.listBox1.Items[i])).Equals(wmp.Ctlcontrols.currentItem)) {
this.listBox1.SelectedIndex = i;
}
}
this.listBox1.ResumeLayout();
とキャストしても比較出来てないみたいだし、どうしましょ…orz
751デフォルトの名無しさん:2008/02/29(金) 21:39:35
そもそもオブジェクトを比較してどうすんだ
メディアプレイヤーいぢったことないけども、普通に考えて実体はCOMの先だろう
何らかのインスタンスを識別するIDとかがあるだろうからそれで比較汁
752デフォルトの名無しさん:2008/02/29(金) 21:49:27
>>751
何らかのインスタンスを識別するID
o...rz
753747:2008/02/29(金) 22:35:46
解決しますた。
get_isIdenticalの戻り値と引数を見て、
もしかして…と思って試したら当たりですた。
this.listBox1.SuspendLayout();
for(int i = 0; i < wmp.currentPlaylist.count; i++) {
WMPLib.IWMPMedia media = wmp.currentPlaylist.get_Item(i);
int j = this.listBox1.Items.Add(media);
if(wmp.Ctlcontrols.currentItem.get_isIdentical(media)) {
this.listBox1.SelectedIndex = j;
}
}
this.listBox1.ResumeLayout();
754デフォルトの名無しさん:2008/03/05(水) 19:03:45
listViewに大量のデータを設定していると
スクロールした時とか、再描画がとてつもなく重いんです。

プロパティとかで回避方法ってありますか?

また、セル表示で別のコントロールでお勧めのやつってありますか?

755デフォルトの名無しさん:2008/03/05(水) 19:22:28
VirtualMode やや面倒だけどな
DataGridView
756756:2008/03/06(木) 18:09:14
相談があります。
http://forums.fanatic.net.nz/index.php?showtopic=11226&st=0&p=81800&
のCのコードを参考にしてC#で同じ事をしようとコードを書きました。

using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace msnTest {
public partial class Form1 :Form {

private const int WM_COPYDATA = 0x004A;

[DllImport("user32.dll")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

[DllImport("user32.dll")]
private static extern int SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, ref COPYDATASTRUCT lParam);

[StructLayout(LayoutKind.Sequential)]
private struct COPYDATASTRUCT {
public IntPtr dwData;
public int cbData;
public IntPtr lpData;
}

}

続く
757756:2008/03/06(木) 18:13:37

COPYDATASTRUCT sendData = new COPYDATASTRUCT();
sendData.dwData = (IntPtr)0x547;
sendData.lpData = songDataPtr;
sendData.cbData = Marshal.SizeOf(songData);

IntPtr msnHandle = FindWindow("MsnMsgrUIManager", null);
MessageBox.Show(SendMessage(msnHandle, WM_COPYDATA, IntPtr.Zero, ref sendData).ToString());

Marshal.FreeHGlobal(songDataPtr);
}
}
}
758756:2008/03/06(木) 18:16:53
あれ、なぜか書けない…。間が飛んでる…
759デフォルトの名無しさん:2008/03/06(木) 22:39:53
そのまま放置とはどういう了見だ
760デフォルトの名無しさん:2008/03/07(金) 12:40:24
ワロタ
761756:2008/03/08(土) 20:39:33
すみません。何か突然書き込めなくなったので…。
解決しました。リンク先のCのソースは送信データが間違っていて、
Cのままコンパイルしても動かないものでした。
正解が
http://yuuan.net/blog/index.php?itemid=257
にありました。
762デフォルトの名無しさん:2008/03/10(月) 03:11:16
しつもんです。

Graphics g = pictureBox1.CreateGraphics();
mypen = new Pen(Color.White);
fillbrush = new SolidBrush(Color.Black);


g.FillEllipse(fillbrush, 10, 140, 400, 400);
g.DrawEllipse(mypen, 10, 140, 400, 400);


pictureBox1.BackColor = Color.Red;

とやると、せっかくかいた円が消えてしまうのですが、
どうすれば消えないでかけるのでしょうか?

背景の色の設定と、円を書く順番を変えても意味ありませんでした。
763デフォルトの名無しさん:2008/03/10(月) 03:23:50
>Graphics g = pictureBox1.CreateGraphics();
なにこれ
764デフォルトの名無しさん:2008/03/10(月) 03:27:44
>>763
pictureBox1に円を書きたかったのでこうしたんですけれど、
必要ないんですか?
765デフォルトの名無しさん:2008/03/10(月) 03:35:20
コントロールを継承したクラスでOnPaintメソッドをオーバライドする
CreateGraphics()じゃなくてOnPaintに渡されるe.GraphicsのGraphicsで描画する
766デフォルトの名無しさん:2008/03/10(月) 03:44:49
>>765
???
すいません、もう少し分かりやすく説明してもらえませんか?
767デフォルトの名無しさん:2008/03/10(月) 03:53:17
おいおい・・・
768デフォルトの名無しさん:2008/03/10(月) 04:18:29
人間やめろ。
769デフォルトの名無しさん:2008/03/10(月) 05:14:01
>>766
君にはまだ早い
C#の基礎を理解してから来なさい
770デフォルトの名無しさん:2008/03/10(月) 11:55:04
>>768
>>769
「現在のウィンドウのメッセージの存続期間だけ有効です。」
を具体的に説明してくれ。
771デフォルトの名無しさん:2008/03/10(月) 12:59:21
おいおい・・・
772デフォルトの名無しさん:2008/03/10(月) 13:13:41
人間やめろ。
773デフォルトの名無しさん:2008/03/10(月) 14:18:21
>>770
君にはまだ早い
C#の基礎を理解してから来なさい
774デフォルトの名無しさん:2008/03/10(月) 14:48:31
ここ、もう相談スレじゃないよな…
775デフォルトの名無しさん:2008/03/10(月) 17:23:26
本スレ行けよ
776無知な人間:2008/03/10(月) 17:34:46
WinXPのC#.NET2003での質問ですが、
DDLのChangedで動的に選択したインデックスが上手く取得できません
どうしたらよろしいでしょうか?
777デフォルトの名無しさん:2008/03/10(月) 18:11:18
ファイト
778デフォルトの名無しさん:2008/03/10(月) 18:45:10
笑えばいいと思うよ
779デフォルトの名無しさん:2008/03/11(火) 14:30:22
何、このスレ
780デフォルトの名無しさん:2008/03/13(木) 10:59:40
垂直同期をとるためにVsync待ちをしたいと思い調べたところ

C++では
IDirectDraw::WaitForVerticalBlank
IDirectDraw::GetVerticalBlankStatus
IDirentDraw::GetScanLine
などを使うようなのですが、
これらの機能をC#で使用する方法はあるでしょうか?

また、C#で垂直同期をとる手法として一般的なものがあれば
教えていただけないでしょうか
781デフォルトの名無しさん:2008/03/13(木) 12:57:50
Managed DirectX
782デフォルトの名無しさん:2008/03/13(木) 21:40:54
ずいぶん懐かしい言葉だなー。
垂直同期待ちって。
783デフォルトの名無しさん:2008/03/13(木) 21:42:50
液晶全盛、リフレッシュレートいじり放題のこのご時勢にVSync待ちはないだろ
784デフォルトの名無しさん:2008/03/13(木) 21:54:57
へーCRTのリフレッシュレートが「いじり放題」じゃなかったなんて知らなかったよw

むしろ液晶の方がそういう面では不自由なデバイスのはずだと思ってたけど
785デフォルトの名無しさん:2008/03/13(木) 22:43:07
液晶のリフレッシュレートが弄りやすいかどうかなんて話してないんだが
786デフォルトの名無しさん:2008/03/13(木) 23:26:20
へーじゃあ「どんな話」をするつもりだったのかとっくり語ってもらおうじゃないの。
いやまあできないなら無理すんなよw
787デフォルトの名無しさん:2008/03/13(木) 23:51:20
液晶全盛 かつ リフレッシュレートいじり放題という意味で、
液晶全盛 だから リフレッシュレートいじり放題という解釈ではないということだと思う。
788783:2008/03/14(金) 00:07:04
おまえら俺の言葉が足りなくて悪かった
言いたい事は>>787さんのいう通りだ

おやすみ
789デフォルトの名無しさん:2008/03/14(金) 01:33:35
いや普通はそう解釈するよ
揚げ足を取ろうとするなら別だけど
790デフォルトの名無しさん:2008/03/14(金) 04:35:47
>>781
解決しました
有り難うございました
791デフォルトの名無しさん:2008/03/14(金) 08:04:13
>>789
君も頭悪いなw
>>788は図らずも自分を擁護できる発言をする奴がいたからそれを利用してるだけ。

そんなことねえだろ、と言いたいのなら、>>783の意図が>>787の通りだとして(それでも全然かまわないが)
「なぜ」「このご時勢にVSync待ちはない」という結論に繋がるのか説明してみな。
792デフォルトの名無しさん:2008/03/14(金) 08:10:25
必ずいい方向に脳内補完する人と必ず悪い方向に脳内補完する人が
この世の中にはいるんだな。
なぜ分かれるかというと性格がいいか悪いかなんだな。
793デフォルトの名無しさん:2008/03/14(金) 08:37:00
>>788は利用してるのか?
794デフォルトの名無しさん:2008/03/14(金) 11:40:10
Vistaは垂直同期取ってるんじゃなかったっけ
795デフォルトの名無しさん:2008/03/14(金) 12:21:13
もうそろそろカスはほっとこうぜ
796デフォルトの名無しさん:2008/03/14(金) 18:29:31
>>795
Vistaのことをひどく言うのはやめてあげてください。
797デフォルトの名無しさん:2008/03/14(金) 18:34:44
Vistaは、悪くない
悪いのは、サンプルプログラムのフォント関連部分と>>791の頭
798デフォルトの名無しさん:2008/03/14(金) 18:38:22
まあ>>797がそういう「負け惜しみ」はみっともないと思う程度の恥の意識もない奴だ、
というのはよくわかったよw
799デフォルトの名無しさん:2008/03/14(金) 18:39:43
うわ、反応早ww
800デフォルトの名無しさん:2008/03/14(金) 18:50:14
反応早かったら何?
っていうか、どうしてこの手の馬鹿ってのは自分の言葉を自分に適用しようとしないのかねw
一言で言えば恥を知らないからだろうけどさ。

そんなことはどうでもいいから>>791に書いた疑問を説明してみてよ早く。
801783:2008/03/14(金) 20:59:24
ちょっとおまえら俺の事はもうスルーしてC#の話ししてくださいホントお願いします
802デフォルトの名無しさん:2008/03/14(金) 21:22:54
C#の話はC#スレでやりましょう
803デフォルトの名無しさん:2008/03/15(土) 11:31:51
テアリング避けでVsync待ちしたいこともあるけど、
漏れのやり方が悪いのかビジーループになるんで非ゲームでは
あんまり使いたくないな・・・
804デフォルトの名無しさん:2008/03/15(土) 18:57:26
もうリフレッシュレート論争やめようや
805デフォルトの名無しさん:2008/03/15(土) 19:20:24
続けたい奴は続けていいよ
どうせ糞スレだし
806デフォルトの名無しさん:2008/03/15(土) 19:26:10
中途半端に機能してるから紛らわしいw
807デフォルトの名無しさん:2008/03/19(水) 17:02:16
>>784で書いた自分の勘違いを認めたくないだけだろ
こういうバカは何言っても食いついてくるからほっとけばよろし
808デフォルトの名無しさん:2008/03/19(水) 17:35:42
ここで質問ですよ
リッチテキストボックスに画像貼り付けたり、背景を自前で描画したりやりたいんですが
WndProcのWM_PAINTを捕らえても文字の上に描画されてしまいます
文字の下に描画できませんか?
809デフォルトの名無しさん:2008/03/19(水) 18:48:37
つWPF
810デフォルトの名無しさん:2008/03/19(水) 19:44:09
>>809製品?
811デフォルトの名無しさん:2008/03/19(水) 21:14:14
ググレ押忍
812デフォルトの名無しさん:2008/03/19(水) 21:38:24
>>807
それって>>783のことだと思うけどね。
こういうバカ?
それって君とか>>783みたいなバカのこと?w
813デフォルトの名無しさん:2008/03/19(水) 21:39:32
>>808
そんなの簡単だろ・・・と思ってやってみると意外とできないねこれ
814デフォルトの名無しさん:2008/03/21(金) 11:21:46
Func<T,TResult>に共通化されつつある今、
Converter<T>やPredicate<T>などを使う意味はあるのでしょうか?
815デフォルトの名無しさん:2008/03/21(金) 11:22:30
意味を明確にできる
816デフォルトの名無しさん:2008/03/21(金) 13:13:34
>>814
前からいちいち定義するのがいやでDelegate<Result,Param1,Param2>とか普通のメソッドの型の順番にあわせて使ってたんだが、
Funcniそのまま使えないんだよなぁ・・・どうしよう
817デフォルトの名無しさん:2008/03/23(日) 20:49:21
DataGridViewでNullValueが設定されている列のセルの値を、プログ
ラムでDBNull.Valueに設定したとき、セルにNullValueの値を表示す
るにはどうしたらいいのですか?

MSDNライブラリには、DBNull.Valueを設定するだけではできないと書
いてあるけど...

セルの値がDBNull.Valueで、セルの表示はNullValueの値にする方法
を教えてください。
818デフォルトの名無しさん:2008/03/23(日) 21:08:56
変換は行われないってのはDataSourceNullValueがDBNull.Valueで(ryってところの解説だぜ?
819デフォルトの名無しさん:2008/03/23(日) 21:43:29
>>818
ありがとうございます。よく読んだらその通りでした。
その列の型はstringで、DataSourceNullValueを設定してないため、MSDNライブラリの
「DataSourceNullValue が DBNull.Value で、セルの ValueType が参照型」に見事に
合致してました。
DataSourceNullValueをstring.Emptyにして試してみます。

820デフォルトの名無しさん:2008/03/24(月) 18:48:31
コレクション要素の変更をコレクションのオーナーに通知する方法
はないですか?オーナーをコレクションとしてラッピングするくらいしか
思いつかなくて。
821デフォルトの名無しさん:2008/03/24(月) 18:55:21
その方法でいいんでない?
何か問題があるのか?
822デフォルトの名無しさん:2008/03/24(月) 19:09:34
IBindingListでも実装しとけ
823デフォルトの名無しさん:2008/03/24(月) 19:55:39
>>820
そういう用途だとObservableCollection使っておくといいんじゃないかね。
ttp://msdn2.microsoft.com/ja-jp/library/ms668604.aspx
824デフォルトの名無しさん:2008/04/01(火) 14:57:38
配列の配列にアクセスする方法について教えていただけないでしょうか?
 int data = new int[5][5];
に数値データが入っているとして、例えば全要素を表示させることを考えます。
その際あえて、ポインタを使ってアクセスすることを考えてます。
(ポインタなんて使わず、添字を使えばいいというのはわかっていますが、 あくまで、勉強のためということで。。。)
ポインタ(*p)を使う方法はわかるのですが(ソースの上半分)、ポインタのポインタ(**p)を使ったやり方が(ソース下半分)がわかりません。
ちなみに具体的にはソース中の<<<<data>>>の部分の書き方がわかりません。
(もしかしたら、ぜんぜん違うのかもしれませんが。。。) わかる方教えていただけないでしょうか?よろしくお願いします。m(_ _)m

        //とりあえず うまくいった ポインタ を使う方法
fixed (int* p = &data[0][0]) {
for (int* px = p; px != p + 5; px++) {
for (int py = *px; py != *px + 5; py++)
Console.Write("<" + (int)&py + "," + py + ">");
Console.WriteLine();
}
}

        //うまくいかない ポインタのポインタ を使う方法
fixed (int** p = <<<<data>>>) {
for (int** px = p; px != p + 5; px++) {
for (int* py = *px; py != *px + 5; py++)
Console.Write("<" + (int)py + "," + *py + ">");
Console.WriteLine();
}
}
825デフォルトの名無しさん:2008/04/01(火) 16:01:03
>>824
ポインタなんて使わず、添字を使え
こうですか?


C#でわざわざポインタなんて勉強する価値無し
826デフォルトの名無しさん:2008/04/01(火) 16:15:55
int*[] temp = new int*[data.Length];
for (int i = 0; i < temp.Length; i++) {
 temp[i] = (int*)(void*)Marshal.UnsafeAddrOfPinnedArrayElement(data[i], 0);
}
fixed (int** p = temp) { ...
こうじゃね
本気でこんなの書く奴がいたら頭おかしい
827デフォルトの名無しさん:2008/04/01(火) 18:05:17
>>824
上も全然ダメ。めちゃくちゃ。
コンパイル通りゃいいってもんじゃないよ・・・
828デフォルトの名無しさん:2008/04/01(火) 20:47:06
そこまでやるならC++/CLI使えって話しだな
829デフォルトの名無しさん:2008/04/01(火) 23:24:50
830デフォルトの名無しさん:2008/04/01(火) 23:36:12
その記事,すごく客観的で秀逸だよな
831デフォルトの名無しさん:2008/04/01(火) 23:58:45
この記事には続きがあって、その記事とセットで初めて客観的と言える。
http://www.microsoft.com/japan/msdn/columns/csharp/csharp11152001.aspx
832824:2008/04/02(水) 18:38:08
>>826
具体的なソースをご提示いただき、ありがとうございます。

>>827
上のソースも、ポインタの使い方に間違いがありますか。。。
一応、ほしい結果は得られたので、正しいかと思ったのですが。。。

>>828
もちろん、その通りですが、あくまで勉強ということで。。。。

>>829
この記事読みました。
実際に簡単なループをまわして何パターンかのソースで確認したところ、配列とポインタとでそんなに大きく処理時間がかわらないようです。
(逆にポインタが遅い場合もありました。。。)

ポインタのポインタは関数の文字列型の引数に使う程度で、やっぱりあまり出番がないんでしょうか。。。。
833デフォルトの名無しさん:2008/04/02(水) 22:22:26
  |┃三        / ̄\
     |┃         |     |
     |┃          \_/
 ガラッ. |┃            |
     |┃  ノ//   ./ ̄ ̄ ̄ \
     |┃三    /  ::\:::/:::: \   
     |┃     /  <●>::::::<●>  \. 
     |┃     |    (__人__)     |  
     |┃三   \    ` ⌒´    /  
     |┃三   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \
834デフォルトの名無しさん:2008/04/05(土) 11:43:48
C++とC#の違いを教えて下され
835デフォルトの名無しさん:2008/04/05(土) 12:00:13
全然違うので説明が逆に難しい。
836デフォルトの名無しさん:2008/04/05(土) 12:09:15
JAVAとC#の違いを教えて下され
837デフォルトの名無しさん:2008/04/05(土) 12:13:29
中途半端に似てるから鬱陶しい
特にJavaのジェネリックの糞さには発狂しそうになる
838デフォルトの名無しさん:2008/04/05(土) 12:15:36
>>836
Sunが作ったのがJava。
Microsoftが作ったのがC#。
839デフォルトの名無しさん:2008/04/05(土) 12:46:37
JavaとJ#の違いを教えて
840デフォルトの名無しさん:2008/04/05(土) 12:54:39
JavaをWindowsに最適化したのがJ#
841デフォルトの名無しさん:2008/04/15(火) 00:05:48
そーいや大学の研究科目でjavaを使ったGUIとかいうのがあったがどうにもなあ
「最終的には1000行を超えるコード〜」とか「毎年大人気の科目」とか意味の分からん宣伝ばっかで萎えた。
そんなん個人でもうやってるって話だし。チームプログラミングとかを前面に押し出してたなら魅力があっただろうに
842デフォルトの名無しさん:2008/04/15(火) 00:07:50
学部一回生向けの授業?
843デフォルトの名無しさん:2008/04/15(火) 00:21:35
>>841
大学でチームプログラミングなんて教えれる先生がいないって。
844デフォルトの名無しさん:2008/04/15(火) 02:23:01
>>842
三回生向けだからあれなわけで
一回生でそこまでやったらそれは別にいいと思うけどね
845デフォルトの名無しさん:2008/04/15(火) 12:48:39
大学でチーム開発してもできるやつが全部やっちゃうから意味なし。

>>842
学部一回生でそんな高級なことしたら単位が全然でないじゃないか!
学部一回だとこんなもんだ。
・電源の入れ方、終了のしかた。
・エディタのつかいかた
・ファイル操作のしかた
・ほーむぺーじをつくろう
・一番最後に hello world(全角スペース入れてコンパイル通せないヤツ多発)
846デフォルトの名無しさん:2008/04/15(火) 13:05:54
これは酷いww
847デフォルトの名無しさん:2008/04/15(火) 13:11:51
>>845
卒論を二人で一つ書く大学もあるらしいからな
ありえる
848デフォルトの名無しさん:2008/04/15(火) 19:44:54
一回目のCの授業でHelloWorldコンパイルまで行ったけどwwwwwwww
849デフォルトの名無しさん:2008/04/15(火) 20:33:05
どこの底辺専門学校だよ。
850デフォルトの名無しさん:2008/04/15(火) 20:43:21
>>847
XP卒論ですか
新しいな
851デフォルトの名無しさん:2008/04/15(火) 22:14:42
院なら別に共著って普通じゃねえ?
852デフォルトの名無しさん:2008/04/16(水) 00:40:02
>>847
二人で作業したからといって、労力が半分になるわけでもないし、
二人で作業したからといって、二倍の完成度になるわけでもない。

むしろ独りよがりな内容にならなくて良いんじゃないか。まさにXPだな。
853デフォルトの名無しさん:2008/04/16(水) 12:19:14
>>851
普通一人一本じゃないか?
854デフォルトの名無しさん:2008/04/17(木) 22:42:45
え?
855デフォルトの名無しさん:2008/04/17(木) 22:47:26
お菓子を食べながら卒論を書くんですね
わかります
856デフォルトの名無しさん:2008/04/17(木) 23:04:21
いいえビールです
857デフォルトの名無しさん:2008/04/18(金) 00:27:09
早く終えて生ハムメロンでも食べなはれ
858デフォルトの名無しさん:2008/04/18(金) 01:37:06
何だか腹減ってきた
859デフォルトの名無しさん:2008/04/18(金) 10:09:29
>>855
シュークリーム分は大事ですよ?
860デフォルトの名無しさん:2008/04/18(金) 18:40:17
ArrayListのテンプレート版はないの?
861デフォルトの名無しさん:2008/04/18(金) 19:07:11
System.Collections.Generic 名前空間の List<T>
862デフォルトの名無しさん:2008/04/22(火) 17:02:02
C#のおかげで少しだけC++のテンプレートが解ったような気がした
863デフォルトの名無しさん:2008/04/22(火) 17:06:17
>>862
そりゃ気のせいだな、ぶっちゃけ別物できる事の範囲が違いすぎる、つかなんだこのスレ
昔の重複スレの残骸?
864デフォルトの名無しさん:2008/04/23(水) 00:30:32
「すこしだけわかったような気がした」って言っただけなのに・・・
865デフォルトの名無しさん:2008/04/23(水) 00:33:40
気にスンナ
866デフォルトの名無しさん:2008/04/25(金) 11:28:35
C++始めようと思うんだが、C#をから見たC++みたいな都合のいいサイト無いかな?
867デフォルトの名無しさん:2008/04/25(金) 11:30:00
>>866
おお、もうそんなこと言い出す奴がいる時代か。
需要としてはその逆ばっかりだったんだけど。
なので、あんまりそういうサイトないと思うよ。
868デフォルトの名無しさん:2008/04/25(金) 11:37:01
やっぱ無いよねf^^
パイオニアになって勉強がてらまとめサイト作ろうかな・・・。
何から勉強していいか分からんレベルだけどww
869デフォルトの名無しさん:2008/04/26(土) 01:08:58
>>866
C++は歴史がある言語だから、C#から見るより歴史を追った方が分かりやすいかもしれん
そうしないと理不尽と理解できない仕様の塊に悶絶するハメになりそうな予感が・・・
大きなところで C言語 → クラスが実装された初期C++ → 例外・種類の増えたキャスト・テンプレート → それからのクラスライブリの発展(ジェネリック・メタ)と順に。
いきなりクラスとか勉強する人もいるけとね、玉ねぎはむいた方がいいと俺は思う。
870デフォルトの名無しさん:2008/04/26(土) 01:19:16
>>869
構造化プログラミング言語としても、
新しい言語の方が優秀なのよね。

今から勉強するなら、C# で始めて、
C# で構造化プログラミング、C# で OOP、C# で構造化例外、C# でジェネリクス
と勉強する方がいいと思う。

いまさら C++ に戻って欲しくないのよね。
せっかく C++ の負の側面を切り捨てた C# があるのに、
C# から C++ に舞い戻るなんてやめて欲しいなぁと。
871デフォルトの名無しさん:2008/04/26(土) 01:21:41
それは正しいけど、「C++の設計と進化」読んだり、webの解説を読めば載っている事であって

「C#しか知らない人から見たC++」ていう観点で語るのがおもしろいんじゃね

「なんとC++にはGCがありません」みたいな
872デフォルトの名無しさん:2008/04/26(土) 01:22:21
>>871>>869宛ね
873デフォルトの名無しさん:2008/04/26(土) 01:26:51
いや、一度は見てみるべきだな
その時代の思想、その正しいとされる書き方考え方ってやつが見えてくる、
C#の思想だって、いつまでもそのままではいられない、現にどんどん変わっているし。
変わるという前提で何ができるかという事が大事だと俺は思うね。
C++は歴史を追って勉強すべきというのは、予想外の仕様であっても当時は正当と思われる思想の元に考えられているもので、一見無節操に見えても無節操に拡張されているわけではない。
だからその方が憶えやすいと思うんだよ。
874デフォルトの名無しさん:2008/04/26(土) 01:30:02
ただなぁ、過去には常識だったけど、今は非推奨になってる書き方なんかも多くて、
下手に歴史を追うとそういう負の遺産まで覚えちゃうのよね。

それが負の遺産だと認識できる人間にとってはいい勉強なんだけど、
世の中そういう人ばかりではないから・・・
875デフォルトの名無しさん:2008/04/26(土) 01:31:31
いまいちまとまりが悪いので 873 をまとめてみると、
要するに、C++の言語使用は、一見ルールなき言語仕様に見えても、深いところにルールはあるんだよ。
876デフォルトの名無しさん:2008/04/26(土) 01:33:13
mutableなんて最初なんであるのか意味がわからんかったさ
877デフォルトの名無しさん:2008/04/26(土) 01:33:42
>>874
負の遺産を負の遺産と認識できないならプログラマは辞めるべきだな、と俺は思う。
アンチパターンは重要だよ。
878デフォルトの名無しさん:2008/04/26(土) 01:35:10
まあ取り敢えずは書いてみればいいんじゃね?
読み物としてオリジナリティは出るだろう
実用的か?となると疑問符付くが
879デフォルトの名無しさん:2008/04/26(土) 01:38:34
>>877
理想論言えばね。
そりゃ、才能ある人間ばかり集められるなら苦労はしないという話に。

話がずいぶんそれてきたな。
C → C++ の歴史を知った人間が C# 使って入門記事書くのがベストだと思ってる。
なので、C# でプログラミングを覚える → C++ に移行もありだとは思う。
が、できれば C++ 自体が滅んで欲しいなぁとも今となっては思う。
880デフォルトの名無しさん:2008/04/26(土) 02:29:03
俺もC#から始めた口だが、C/C++できないことに多少なりとも劣等感感じるんで、それら学びたいってのはあるけどね
881デフォルトの名無しさん:2008/04/26(土) 04:28:20
C#からはじめる逆に凄いようにも感じちゃうなあ。

俺なんかもし15年遅く生まれて、初めて触るのがいきなりC#とかだったら
ちゃんと順応できただろうかと考えちゃうよ。

構造体も知らない内からクラスの概念を学ぶってのはどういう感覚なのかな
882デフォルトの名無しさん:2008/04/26(土) 04:33:26
俺もC#から始めた口だが、独習Cと独習C++で十分だった。
883デフォルトの名無しさん:2008/04/26(土) 04:34:20
C++のクラスは拡張構造体ではないよ C++ からの人は結構誤解している人が多い。
実は自分も誤解していたクチだったりする訳だが。
884デフォルトの名無しさん:2008/04/26(土) 04:35:44
>>882
そのレベルだと、きっと使えるような気持になっているだけかと思われます。
885デフォルトの名無しさん:2008/04/26(土) 04:36:47
>>883
間違い
C#のクラスは拡張構造体ではないよ C++ からの人は結構誤解している人が多い。
886デフォルトの名無しさん:2008/04/26(土) 04:43:59
>>884
君は勘違いをしてるよ。
C#経験者がC/C++に入門する際に参考にする情報の話をしてるんだよ。
その後もそのレベルに留まってるという君の想像に君が指摘を加えてもこっちはどうしようもないんだけど。
887デフォルトの名無しさん:2008/04/26(土) 04:45:30
まぁ、一度とことんやってC++のとてつもない広い世界をみてみれば思いなおせると思いますよ。
888デフォルトの名無しさん:2008/04/26(土) 07:33:10
C++で二〇〇二年ぐらいまでやっててブランクあけて今C#。F#二手を出し中。
STLまでは知ってるけど、メタは知らん。なんか変態的になってるらしいが。
C#でよいとこは、やはり抽象化度合いがC++よりあがってるところ。C++でそれをやろうとしてトリッキーになるよりもいい。
F#はさらにその抽象化度合いを上げられるのでたぶんマスターしたらそっちに行く。プリミティブなところでトリッキーなことやるよりも自分はそっちの方が好きだ。
889デフォルトの名無しさん:2008/04/26(土) 08:30:11
それがどうしたの
890デフォルトの名無しさん:2008/04/26(土) 11:07:28
意外にC#から入った人いるんだな
>>866の需要は結構あるのかも
891デフォルトの名無しさん:2008/04/26(土) 11:10:29
Javaから入った人は腐るほどいそうだけど
892デフォルトの名無しさん:2008/04/26(土) 11:26:12
>>887
とてつもない広いというより、とてつもなく深いという感じじゃないか?
893デフォルトの名無しさん:2008/04/26(土) 13:58:56
JavaからC++に入っていまはC#やってるけどC++の意味が分からなかったことは
仮想関数
virtual void function() = 0; //なぜ "= 0"

静的メンバ
class hoge{
static int a; //クラス内では宣言しかできない
}

int hoge::a = 100; //定義はクラス外でないとできない

これって歴史的な理由があるのかな?
894デフォルトの名無しさん:2008/04/26(土) 14:02:14
>>893
× 仮想関数
○ 純粋仮想関数
895デフォルトの名無しさん:2008/04/26(土) 15:27:25
>>893
C++の設計段階では出来るだけ新しいキーワードを
付け加えたくなかったという経緯がある

(C++の設計と進化)
896デフォルトの名無しさん:2008/04/26(土) 15:29:37
>>893
ついでに14882:2003では

class hoge {
 static const int a = 100;
};

を許してるから。静的クラス変数のconstのint型に限って
class内で値の定義ができる。
897デフォルトの名無しさん:2008/04/26(土) 16:22:28
>>893
後者は、Cのグローバル変数と同じ方法
(ヘッダには宣言だけ書いて、どこか1ヶ所で定義する)
を踏襲したと考えれば納得がいく。
898デフォルトの名無しさん:2008/04/26(土) 16:43:49
なぜコンパイラの都合に過ぎない「宣言」などというものを廃止する方向で
進化しなかったんだろう
899デフォルトの名無しさん:2008/04/26(土) 16:46:26
C++スレでやれよ
900デフォルトの名無しさん:2008/04/26(土) 18:42:46
>>893
純粋仮想関数は、イメージとしては関数ポインタに NULL 代入してるような感じ。
まあ、分かりにくいから C# では abstract キーワードが導入されたわけだけど。

静的メンバは、C++ では宣言と定義が別だからなぁ。
クラス = ヘッダファイルに書く = 宣言だけ書く。
クラスの外 = .cpp ファイルに書く = 実際の定義(値の代入は定義の方でやる)。
901デフォルトの名無しさん:2008/04/26(土) 18:44:01
>>899
まあ、今のこのスレの流れは、「C# プログラマに C++ を教えるなら」的な空気だから。
全く無関係というわけでも。

C# 入門サイトの管理人の目にでも触れれば、そういう記事が追加されるかもしれないし。
902デフォルトの名無しさん:2008/04/26(土) 20:01:31
さいきんこのスレまともに機能してなかったから、まあいいかと
903デフォルトの名無しさん:2008/04/26(土) 20:06:59
むしろそれなりに機能してることが異常w
904デフォルトの名無しさん:2008/04/26(土) 20:12:55
まあ重複スレの再利用として悪くない
905デフォルトの名無しさん:2008/04/26(土) 22:35:08
>>901
>>893なんかはC#プログラマ向けでもなんでもなくて思いっきりC++の質問だろ
906デフォルトの名無しさん:2008/04/26(土) 22:45:42
少なくとも>>905見たいなレスはいらない
907デフォルトの名無しさん:2008/04/26(土) 22:49:08
どうせいらないスレなんだから
908デフォルトの名無しさん:2008/04/26(土) 22:56:20
>>906
だったら黙れよ
909デフォルトの名無しさん:2008/04/27(日) 00:13:39
>>871
>「なんとC++にはGCがありません」
それちょっと読みたいなww


最初はC++(VS.NETアカデミック)だったけど、当時は.NETは全く眼中に無かった。
VS2005 EE が無償提供されて「タダなら使ってやんよ!」と思ってC#始めた人って結構多いんじゃない?
910デフォルトの名無しさん:2008/04/27(日) 00:37:56
俺はVisualStudio.Netがβ版の頃にC#始めたよ
911デフォルトの名無しさん:2008/04/27(日) 00:50:14
確かECMAで標準化されたときだったかな
そのときC#の言語としての評価が高かったので興味を持った
でVS2002をアカデミックで
912デフォルトの名無しさん:2008/04/27(日) 01:32:49
俺は初めて自分で買ったパッケージがC#2003だった。
半年使って辞めたが2005になってまた始めたよ。
今ではC#オンリーです
913デフォルトの名無しさん:2008/04/27(日) 02:09:10
C#でリクナビ見てみたら案件少ないね
やっぱC++とかJavaが多い
本当にC#なんて需要あるの?
914デフォルトの名無しさん:2008/04/27(日) 02:10:45
C#はWebで需要があるだけです。
915デフォルトの名無しさん:2008/04/27(日) 02:20:37
スタンドアロンのWindowsアプリ開発にC#は需要ないの?
Webだけ?C++と同じぐらいのものを作れると思ってたんだけど
916デフォルトの名無しさん:2008/04/27(日) 02:25:50
作ることはできるしC++より簡単だけど色々と大人の事情があるわけです
917デフォルトの名無しさん:2008/04/27(日) 02:38:16
うちのグループは結構WinFormもC#で作ってるけどね、
社内に配布する場合でもframework入ってないPCあるから意外と嫌がられるけどね
918デフォルトの名無しさん:2008/04/27(日) 11:27:26
>>913
日本は Java が強いみたい。
俺は imode のせいだと思ってるけど。
下手すると、Java が世界的に絶滅した後、日本だけ Java が残るとか変なことになりそうで怖い。

あと、Java が強い国では、C# よりも VB が強くなる傾向があるみたい。
似てるからか、Java が増えると相対的に C# が減る。
919デフォルトの名無しさん:2008/04/27(日) 11:42:10
Javaのメインの用途は鯖だろ
C#はクライアントの案件も結構ある

そんな単純な図式じゃないよ
920デフォルトの名無しさん:2008/04/27(日) 12:01:47
C#とVBで案件食い合ってるんじゃないの?
921デフォルトの名無しさん:2008/04/27(日) 12:09:31
>>919
まあ、学生とか、初学者とかにとっては用途の違いなんてあんまり関係ないし。

そこまで顕著でもないけど、Java が強いと C# が弱くて VB が強くなるのは
↓にちょっと出てると思う。
http://www.google.com/trends?q=c%23%2C+VB%2C+java&ctab=0&geo=all&date=all&sort=0
922デフォルトの名無しさん:2008/04/27(日) 13:17:32
>>921
思い過ごしにしか思えないけどなあw
そもそもデータの信憑性がねえ。。
javaってコーヒーとか島の名前も入ってないかそれ?w
923デフォルトの名無しさん:2008/04/27(日) 13:25:58
>>921
日本のVB率は異常w
924デフォルトの名無しさん:2008/04/27(日) 13:40:01
なんか違うものが混じってるんじゃないかと思うぐらい、日本のVB多いな。
925デフォルトの名無しさん:2008/04/27(日) 14:04:08
C#を実務で選択できない理由の一つとしてVBerの存在があげられるな。
VB→VB.net→C#で「C#使えます」が多すぎる。
リソース調達が出来ないよ・・・
926デフォルトの名無しさん:2008/04/27(日) 15:47:05
>>921
VBじゃなく、VisualBasicに変えたら激減してしまった。
あんまりその統計は参考にならなそうだな。
927デフォルトの名無しさん:2008/04/27(日) 15:54:11
VBだとウィルスバスターも入るね
928デフォルトの名無しさん:2008/04/27(日) 15:54:48
>>925
VB.netができれば、C#は使えますでも問題ない気はするけどね
ちょびっと場数踏めばすぐでしょうし。それと、逆の流れも。
929デフォルトの名無しさん:2008/04/27(日) 16:25:05
>>928
VB.NETが本当にできるのならね
930デフォルトの名無しさん:2008/04/27(日) 16:36:01
VBからVB.NETてのは不安にさせるところだよなw
931デフォルトの名無しさん:2008/04/27(日) 16:50:40
c++やDirectxを勉強したいので
マイクロソフトから出ているVisualStudio2008を購入しようと思うのですが
結構使い勝手いいですか?
932デフォルトの名無しさん:2008/04/27(日) 17:14:33
>>931
勉強するだけなら無償版で十分じゃないの?
933デフォルトの名無しさん:2008/04/27(日) 17:25:24
無償のExpressで足りないというのなら、Professionalも90日評価版がある。
卒業間近で今しかアカデミック買えないというのでもない限り、
それらを使った後で買うかどうか考えればいい。
934デフォルトの名無しさん:2008/04/27(日) 17:43:55
手の届くSTと無償のEEでどの程度出来ることが違うのか分からない
.NET Framework使うんだから一緒じゃないの?
935デフォルトの名無しさん:2008/04/27(日) 18:11:47
express版はマネージ形式(中間言語)アプリしか作れないよ
ネイティブコードのアプリ(MFC)作りたかったら買ってみたら?
936デフォルトの名無しさん:2008/04/27(日) 18:16:15
>>931
勉強ならExpressにしろ。
基礎無い内にProの機能使ったって変な癖つくだけ。
937デフォルトの名無しさん:2008/04/27(日) 18:16:41
いやいや、そんなことはない。
VC++ ExpressにはMFCもATLもリソースエディタもないが、
ネイティブコードを吐くコンパイラはある。

VC++の話が進むようならスレ違いだな。
938デフォルトの名無しさん:2008/04/27(日) 18:16:45
VC++ってコードが気持ち悪いからC#やることにしたよー^ノシ
939デフォルトの名無しさん:2008/04/27(日) 18:20:15
ろくにC++知らない癖に>>938みたいな事言われるとムカつくが
C++/CLIがキモいのは否定できない
940デフォルトの名無しさん:2008/04/27(日) 18:32:42
>>935
有料版になるとC#でもネイティブコードのアプリが作れるのでしょうか?
941デフォルトの名無しさん:2008/04/27(日) 18:33:13
C++/CLI以上に(重度の)テンプレートプログラミングはキモいとは思う
942デフォルトの名無しさん:2008/04/27(日) 18:33:19
作れません
943デフォルトの名無しさん:2008/04/27(日) 18:48:37
>>940
C#は中間言語アプリしかないみたいだからexpress版で十分かも
944デフォルトの名無しさん:2008/04/27(日) 18:56:05
EEだと外部プロセスへのアタッチが出来ないから、DesktopSidebarのプラグインを作ったとき、デバッグが面倒だったな。
どうせ無償なんだからEE入れといて、アップグレードは壁にぶち当たってから考えればいいんじゃない?
945デフォルトの名無しさん:2008/04/27(日) 19:47:12
俺が2005Proの機能で使ってるのって、サーバーエクスプローラぐらいだけどw
946デフォルトの名無しさん:2008/04/27(日) 19:47:53
あとインストーラかな
連投ごめんね
947デフォルトの名無しさん:2008/04/27(日) 19:52:38
Silverlight2SDKドキュメントのサンプルコードはVBよりC#の方が先になってて感動した
948デフォルトの名無しさん:2008/04/27(日) 19:55:03
みんなC#が決定打になる波を心待ちにしてるんだね^^
949デフォルトの名無しさん:2008/04/27(日) 20:00:08
Javaに似てるから習得しやすいんでいっそのこと
C++とVBは全部C#に置き換わってくれるとありがたい
950デフォルトの名無しさん:2008/04/27(日) 21:00:14
つーかMS謹製の言語が何種類もあるのか疑問
951デフォルトの名無しさん:2008/04/27(日) 21:07:01
2005で開発しているのですが
DateTimePickerで
MinDateに2000/1/1を
MaxDateに2000/12/31を設定しています。

このプログラムをVistaで実行すると
▼ボタンでカレンダーを表示した瞬間に
現在の日付が強制的に2000/12/31(MaxDate)に
置き換えられてしまいます。

Vistaではカレンダー自体が2000/XPと異なっていますが
この動作は仕様なのでしょうか?
952デフォルトの名無しさん:2008/04/27(日) 21:17:15
>>927
俺の親はVBといえばVentureBusinessだとか言ってた
953デフォルトの名無しさん:2008/04/27(日) 21:21:46
>>951
再現せんね。Vista/.NET 2.0SP1
Value未設定の場合に起動時にMaxValueに設定されるだけだ。
954デフォルトの名無しさん:2008/04/27(日) 21:22:48
あ、MaxValueじゃなくて今の日付の直近値か。
955951:2008/04/27(日) 21:33:02
>>953
ありがとうございます。

再度検証してみましたところ、下記の条件で再現しています。
条件:MinDate〜MaxDateの範囲に、今の日付が含まれないこと。

上記の範囲が今日の日付より昔の場合はMaxDateに
未来の場合はMinDateに、カレンダーを▼で表示する度に
強制的に設定されてしまいます。
956デフォルトの名無しさん:2008/04/27(日) 23:24:46
取りあえず本当に最小限でやってみろ
あとSP当たってる? 影響するかどうかはわからないけど
こんなのも見かけた
ttp://groups.google.co.jp/group/borland.public.delphi.nativeapi.win32/browse_thread/thread/981ce1712e1c46ab/e6e89b23f3e8d002#e6e89b23f3e8d002
957951:2008/04/28(月) 06:14:40
>>956
新規アプリで、DateTimePickerを配置(&MaxDate、MinDate設定)
しただけでも同じ現象が起こりました。

SPは
Microsoft Visual Studio 2005 Standard Edition 日本語 Service Pack 1 (KB926602)
Windows2000で開発・ビルドしています。
ちなみに、テスト環境のVistaにはVisualStdioはインストールしていません。
.NetFrameworkのバージョンは3.0でも3.5でも同じ現象が出ます。

リンク先はdelphiですが、同様の現象みたいですね…
958デフォルトの名無しさん:2008/04/28(月) 09:17:26
デバッグだと20kのexeが発行すると全部で500kになっちゃうんだけど
20kのexeだけを配布しても問題ないよね?
959デフォルトの名無しさん:2008/04/29(火) 13:32:18
デバッグ版配布すんなw
960デフォルトの名無しさん:2008/04/29(火) 22:23:59
DbConnection conn = new OleDbConnection(string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=・・・");
DbCommand command = conn.CreateCommand();
command.CommandText = query; 
DbDataReader reader = command.ExecuteReader();
while (reader.Read()) {
  int n = reader[0]; // ココ
}

↑みたいな感じで、AccessのmdbファイルにOleDbで接続して、読み込んでいるのだけど、
「ココ」のところの「reader[0]」が、全部文字列を返します。

odbc経由で、下のようなSQLを流して、数値型で作った項目もです。

CREATE TABLE hoge (
  N INTEGER
)

oracle + VB.NET2003で、同じような感じで読みこんだときには、とうぜん数値の項目は数値で、文字列は文字列で
帰ってきました。

mdb(Jet)だと、これで正しい動作なんでしょうか?
それとも自分がどこか間違ってますか?

961デフォルトの名無しさん:2008/04/29(火) 22:44:12
それはどっちかっつとDB板とかで聞いた方がいんじゃね
DB関係のトラブルて大抵環境だし
962デフォルトの名無しさん:2008/04/30(水) 00:18:13
>>960
DB板はどっちかというとアドミン系の人が多いし、
そういったプログラミング系のは、こっちのスレで聞いた方がいいかも。

データベースプログラミング全般スレ
http://pc11.2ch.net/test/read.cgi/tech/1097295557/

一見、過疎ってるように見えるが、自分が質問したときは直ぐに教えて貰えたし。
963デフォルトの名無しさん:2008/04/30(水) 00:51:06
>>960
普通は全部文字列=StringじゃなくObject型だっと思うが?

全てInt32型なら
int n = reader.GetInt32(0);
でおkと思うよ
もしくは
int n = (int)reader[0];
とか
964デフォルトの名無しさん:2008/04/30(水) 23:39:22
スマソ。
>>960 のコードじゃ問題はなかった。(説明用に書いたコードで実際にバグの出てるコードとは違う)

reader[0] まではしっかりDBの型が保存されてて、(int)reader[0]とかやっても、問題ありませんでした。

readerの内容をDataTableに移し変えて、ロジック部分ではそれを利用してたのだけど、移し変える方法が
まずくて、全部文字列に変化してました。

実際はこういう感じのコードでした。

DataTable table = ExecReader("SELECT ・・・"); // SQLを投げると、結果をDataTableに入れて返す関数
DataRow row = table.Rows[0];
(int)row["hoge"]; // ここでキャスト失敗の例外発生
965デフォルトの名無しさん:2008/04/30(水) 23:44:07
> readerの内容をDataTableに移し変えて、
なぜ素直にFillしないんだろう
966デフォルトの名無しさん:2008/04/30(水) 23:48:09
rowに入れるんなら.ToString()付けるかConvart.ToIntじゃないか
967デフォルトの名無しさん:2008/05/01(木) 16:35:59
誰か、より良い方法があったら教えてください。
// 何箇所も変更場所があるのは好ましくない
class MyComponent1
{
 string myProperty = "初期文字列";
 [DefaultValue("初期文字列")]
 public string MyProperty { get { return myProperty; } set { myProperty = value; } }
 public MyComponent1() { }
}

// リファクタリングで MyProperty を書き換えると GetProperty("MyProperty") に変更が入らない
// 結局複数個所を書き換える方が見通しがいい
class MyComponent2
{
 string myProperty;
 [DefaultValue("初期文字列")] // ここを書き換えたら myProperty の初期値にも反映したい
 public string MyProperty { get { return myProperty; } set { myProperty = value; } }
 public MyComponent2()
 {
  var defaultValue = typeof(MyComponent2).GetProperty("MyProperty").GetCustomAttributes(typeof(DefaultValueAttribute), false)[0];
  myProperty = defaultValue.ToString();
 }
}
968デフォルトの名無しさん:2008/05/01(木) 16:36:43
ん、ここは偽スレ?
969デフォルトの名無しさん:2008/05/01(木) 16:49:22
スレを変えるなら両方で一言断っとけ
970デフォルトの名無しさん:2008/05/03(土) 13:18:17
Part46の偽スレで書いてしまったので、こちらで再投稿させてください

iTextSharp使ってテンプレート読込んだけれど、その後の文字描画がテンプレートの下に隠れてしまうが、
レイヤの順序を操作する方法とかあるのでしょうか?
テンプレート読込み後に文字描画しても、その逆でも同じように隠れますが。
971デフォルトの名無しさん:2008/05/03(土) 13:29:26
こっちは廃棄スレ
972デフォルトの名無しさん:2008/05/05(月) 06:22:48
もりあがってまいりました!
973デフォルトの名無しさん:2008/05/05(月) 20:42:47
次スレは↓でいいの?

C#, C♯, C#相談室 Part46
http://pc11.2ch.net/test/read.cgi/tech/1208791919/
974デフォルトの名無しさん:2008/05/05(月) 20:44:26
次スレというか本スレ
975デフォルトの名無しさん:2008/05/05(月) 20:49:38
2つ上のレスすら読めないってどんだけ〜
976デフォルトの名無しさん:2008/05/06(火) 00:49:36
俺に、C#習得者向けのC++の constについて教えてくれ。
C++のconstとかconstとかconstがよくわからない。
前はDelphiやってたからか余計に混乱する。

Effective C++とかModern C++ Designeとか読んでもモヤモヤする。
同じ職場の別プロジェクトのプログラマーはクラス全部(という表現がよいのかわからんが?)
constにしようと時間の無駄に気づかずやっきになっている。

C#風に言えばどうなんだ?
977デフォルトの名無しさん:2008/05/06(火) 00:51:17
引数にconstついているのに、プロパティに書き込みができたり、フィールドをいじることができたりすることが、
おかしい感覚らしい。
978デフォルトの名無しさん:2008/05/06(火) 01:35:54
C#でconstってほとんど出番無いよね
979デフォルトの名無しさん:2008/05/06(火) 01:40:51
>>976
const 使ってる既存のライブラリを利用する際に
問題が発生することがあるんだよ。
const 使わないやつは死刑だ。
980デフォルトの名無しさん:2008/05/06(火) 01:42:26
>>976
全部ってのはメンバ関数全部のことか、メンバ変数のことかどっちだ?
981デフォルトの名無しさん:2008/05/06(火) 02:36:25
C++ではconstには3種類あって、
・変数自身へのconst: 変数を変化しない/させない。定数。
・(ポインタの)ポイント先へのconst: そのポインタからは読み込みしかしない。
・メンバ関数に付く:そのメンバ関数からは(thisに対して)読み込みしかしない。
 で 、ここでmutableの登場。実装上は書くんだけど、意味的には読み込みだけ、みたいな
 (典型的にはキャッシュみたいな)メンバ変数に付けるとconstメンバ関数からも書ける。
982デフォルトの名無しさん:2008/05/06(火) 09:54:56
不変な値ってのには2つの意味があって、

1. 直定数(literal: 1 とか 0.5 みたいな数値)に名前が付いてるだけ。
 コンパイル結果がまさに定数。
2. コンパイラが不変な値と認識してるだけのもの。
 コンパイル結果は通常の変数と変わらないんだけど、
 プログラマが値を変更できないもの。

の2つある。
C# の const は 1 の意味でしか使えない。
readonly が 2 の意味に近いけど、readonly はプロパティとかを書きかえれちゃうんで不完全。

C++ の const は 2 の意味でも使える。
というか、大昔には 2 の意味でしか使えなかった(1 はマクロを使って定義)。
983デフォルトの名無しさん:2008/05/06(火) 10:04:04
>>982
素朴な疑問。
君のいう1と2の区別っていうのは

(a) Cではなくアセンブラレベルの話をしている場合
(b) ROMを持った環境の話をしている場合

でしか意味がない区別のように感じるけどどうなの。
984デフォルトの名無しさん:2008/05/06(火) 10:13:32
>>983
1 は配列の静的なサイズ指定に使えるが
2 は使えない。
985デフォルトの名無しさん:2008/05/06(火) 10:22:51
>>984
なるほど確かに。
986デフォルトの名無しさん:2008/05/06(火) 11:21:13
>>985
あと、まあ、Cみたいにパフォーマンスを気にする言語では、
コンパイル結果が定数になってるかどうかは結構重要。
load 命令が1個増えるだけで実行だいぶ遅くなるから。
987デフォルトの名無しさん:2008/05/06(火) 11:27:20
OOP が絡むとさらに複雑で、

- メモリが不変
- (メソッド呼び出しの結果が変わらないという意味で)
 外部から見て不変に見える

という区別も。
後者は、例えば最初に1回だけ計算して、その値をキャッシュしとくような場合、
外から見た値としては毎度同じ値しか返さない(=不変)なんだけど、
最初のキャッシュ計算のときにメモリ操作は発生しちゃう。

C++ の mutable キーワードはそういうときのためにある。
988デフォルトの名無しさん:2008/05/06(火) 23:02:52
で,複雑面倒な割に利点が少ないから捨てられた
989デフォルトの名無しさん:2008/05/06(火) 23:31:38
>>988
というか、学者肌の人間が導入したけど
実務上ほとんど使わないから一般プログラマーが見向きもしなかった
って感じじゃない?

言語マニアと一般人の温度差ってのはよくある話。
990デフォルトの名無しさん:2008/05/07(水) 07:54:41
メンバ関数のconstはメンバ関数のvolatileよりはだいぶ使われてる
991デフォルトの名無しさん:2008/05/07(水) 10:25:21
>>989
正確には >>982 の1の意味以外の const に意味がないことが判明したんだよ、メタメタしたプログラムを書きまくるなら、すぐに気づける
一切言語のキャスト等を一切使わず、言語の制約にも抵触せずに const 変数を書き換える大技がある、少し頭をひねってみると面白いよ。
constの意味は、自分でコードするときに、仕損じがないようにするためのお呪い以上の意味は無かったんだよ。
新しい言語では削除してしまうのが吉、ややこしくなるだけだから。
992デフォルトの名無しさん:2008/05/07(水) 13:27:22
リテラル以外の意味のconstが最低限必要な箇所というのは
文字列に関する部分で、char配列やstd:stringがそう。
多くの言語では文字列は特別な型として扱うことが多い。
C#やJavaは不変クラスで対応している。
それで必要がなくなった。
不変クラス文字列は文字を編集する操作には向かないが、
広く参照を分散させることやマルチスレッドに非常になじむという特徴を持っている。
993デフォルトの名無しさん:2008/05/07(水) 19:19:11
正直言って、C++勉強すれば良かった。
C#が出来たときに最先端と思って選んだけど
ネイティブコードを吐くC++の方が実用性がある
994デフォルトの名無しさん:2008/05/07(水) 19:46:34
仕損じがないようにするって、すげー重要なことだと思うんだがな・・・。
995デフォルトの名無しさん:2008/05/07(水) 20:19:28
だからって複雑にしすぎたら仕損じの余地が増える
996デフォルトの名無しさん:2008/05/07(水) 20:20:38
このくらいで複雑とか言ってたら
D 2.0 は扱えないぜ・・・
997デフォルトの名無しさん:2008/05/07(水) 20:34:41
あの本末転倒言語ですね
998デフォルトの名無しさん:2008/05/07(水) 20:41:46
あの D 2.0 の const まわりの仕様は流石になんとかして欲しい。
999デフォルトの名無しさん:2008/05/07(水) 20:45:49
隔離スレよ、さようなら
お次はココへ
C#, C♯, C#相談室 Part46
http://pc11.2ch.net/test/read.cgi/tech/1208791919/l50
1000デフォルトの名無しさん:2008/05/07(水) 20:46:33
::::::::::::::::::::::::::::::::::;.' .   ^堰@| +   ';:::::::::::::::::::::::
::::::::::::::::::::::::::::: ;.'     .| |     ';:::::::::::::::::::::
:::::::::::::::::::::::::::;.'         | |     ';:::::::::::::::::::
:::::::::::::::::::::: ;.'  ┼ i   亅_|, -、    ';:::::::::::::::::
::::::::::::::::::::;.'         厂/ ィ ⌒ヽ.  ';:::::::::::::::
::::::::::::::: ;.′      // .|rqミLノ_l | 〉  ';:::::::::::::
:::::::::::::;.'    ー匕 人公┘ ヒ}リ./ 厂}';::::::::::::
:::::::: ;.′       └冖ー> 、 n 火// .':::::::::::    輝かしい1000!
::::::;.'       ゜'    /.に二二二 イ>   ';::::::::
: ;.′       ,  ‐― 、:::{           ';::::::
:'      。  / .:!.:.i:|::ト、 \.ヘ.         ';::::
        ./ .:トLハ忙7| :l. Yヘ         ';::
        {j.:l:忙!   くノ .:.| ∧   ⊥   ';
    f^Y     礼_ ゥ イ .:.:.| ::∧   |
    二.二.rへ. 二.|厂〕 .:.|ーイ
  + o . .   └ヘ \/ /卜トゝ |    .  .
     :   :       \_/ |    .|  :    | :
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。