くだすれ.NET(超初心者向け)at TECH
くだすれ.NET(超初心者向け) - 暇つぶし2ch426:デフォルトの名無しさん
08/03/26 20:45:24
宿題は自分でやりましょう



※この上にチェックボックス用のフィールドを追加する行を一行記述
dt.Columns.Add("あ", Type.GetType("System.String"))

※このイコールの後にチェックボックスの値をStringでデリミタ込みで追加記述
row.ItemArray = parser.ReadFields

427:422
08/03/28 08:37:23
<426
ありがとうございます!
宿題ではないのですが、そう思われないような質問の仕方に気をつけたいと思います。

428:デフォルトの名無しさん
08/03/28 10:09:27
>>427
それ以前に、自分が書いているコードの1行1行が
何を意味しているのかくらい、理解してから来なさいよね

429:デフォルトの名無しさん
08/03/28 22:07:27
それが出来たら初心者スレに来ねーだろw

430:デフォルトの名無しさん
08/03/28 23:28:11
それをしようとしないのを初心者とは呼ばない
自助努力を促すのも、初心者救済の一手だと思う

431:デフォルトの名無しさん
08/03/29 01:53:11
ヒントも与えんで自助努力も無いと思うがねw

432:デフォルトの名無しさん
08/03/29 10:02:11
妙な流れの中すんません。
>418 ですがレスもらえないでしょうか。
PanelのAutoScrollに任せずに、自分でPictureBoxにスクロールバー貼り付けた方が
いんでしょうか?

433:デフォルトの名無しさん
08/03/29 15:00:16
>>432
そこのサイトちゃんと読んでないでしょ?w

> これによりPanelコントロールの中に配置されたコントロール(本稿の場合ではPictureBoxコントロール)がPanelコントロールのサイズよりも大きい場合に、自動的にスクロールバーが表示されるようになる。

434:デフォルトの名無しさん
08/03/29 15:06:11
>>433
君恥ずかしい奴だね。
ちゃんと読んでない?
それ誰のこと言ってんだよw

435:デフォルトの名無しさん
08/03/29 21:33:21
>>434
>>418どうした?w

436:418
08/03/29 21:50:44
>>433
あの、ちょっと違うくてスクロールバーの表示/非表示の話じゃなくて、スクロールバーの
動作の話なんです。(>>433さんはわかっておらてるようですが)
BCBからやっとこさ移行しようかなと思ったんですが、BCBならスクロールバーのプロパティ
で Tracking = true; ってやればできたんですが、なんか似たやり方無いのかな?と思って。

いろいろ試してみますが、ゆっくりやってますので、わかる方がいらっしゃれば思いついた
ときにでもレスお願いします。

437:418
08/03/29 21:53:18
>>435
再読込したら変なのが湧いてるな。氏ねよ。

438:デフォルトの名無しさん
08/03/29 23:09:16
>>437
ビンゴだったようだなw

439:デフォルトの名無しさん
08/04/03 14:53:07
.NET Framework 3.5をインストールしておけば、
2.0と3.0用に開発したソフトも
正しく完全に動作するとおもっていいのでしょうか?
MSのホームページをみると、
実行することができます、と書いてましたが、
MSの言うことなのでイマイチ不安です・・・

440:デフォルトの名無しさん
08/04/03 14:59:22
もちろんMSの言うことですからおもってはいけません。
バージョンが同じでも仕様と現実とに差異があるくらいですから。

441:デフォルトの名無しさん
08/04/03 15:02:31
3.5をインストールするのは2.0と3.0と3.5を順にインストールしたのと一緒だよ

442:デフォルトの名無しさん
08/04/03 15:03:17
やっぱりですか・・・
まんどくさいですが、2.0と3.0も
一緒にインストールするようにします・・・

443:デフォルトの名無しさん
08/04/03 15:04:35
>>440
>>441

ど、どっちが正しいのでしょうか?w


444:デフォルトの名無しさん
08/04/03 15:08:07
>>443
URLリンク(msdn2.microsoft.com)
つまり古いのを入れる意味はない

445:デフォルトの名無しさん
08/04/03 15:22:27
>>444
ありがとうございます。
そのページは見てませんでした。


446:デフォルトの名無しさん
08/04/03 20:34:06
>>440
今回は、その違いがあるということが(2.0と3.0の)SP1として表れている。

447:デフォルトの名無しさん
08/04/03 21:48:04
だからといってMSを疑っても全く意味がない
1.1と2.0系の関係とは違う

448:デフォルトの名無しさん
08/04/04 16:32:23
1.1と3.5だけでいいってことね

449:デフォルトの名無しさん
08/04/04 16:34:14
また、次でドトネトじゃないものに変わっちゃうんじゃね?
時代はRIA。

450:デフォルトの名無しさん
08/04/07 10:29:10
このスレの住人なら知っていますね、あの糞開発ツールのことを

・自分のプログラムのバグなのかコンパイラのバグなのかわからない
・他の仕事に応用できない糞開発ツールの独自世界を必死に学習している
・テキストエディタで書いたほうが効率的なのに糞UIツールを懸命に使っている
・糞開発ツールを批判すると「性格が悪いから糞ツールを批判するんだ」と言われる

糞だけど、政治的な理由で無理やり使わされているんですよね。
もう、あんな厨の作った糞ツールを我慢して使うのはやめましょう。

・糞開発ツールを部下に押し付ける上司の命令は無視しましょう。
 上司は糞開発ツールが使われる実績を作ることであの会社のごきげんをとっているのです。
・糞開発ツールを使わせる上司の下では働けません、と上司の上司に直訴しましょう。
・あの糞開発ツール提供会社には「おたくの糞開発ツールは話にならない」と突き放しましょう。
 バグレポートなどしてはいけません。改善要求などもってのほかです。
 あの会社はあなたたちのことをテスター/モルモットとしか思っていません。
・あの会議で「糞開発ツールを使ったら生産性がxx%アップしました」
 なんて話が出たら力強く机を叩き、会議室を出ましょう。
 あの人たちは糞開発ツールをマンセーすることで立場を確保しているのです。

糞な開発ツールを糞だと言える、そんな当たり前の環境をみんなの力で取り戻しましょう。

451:デフォルトの名無しさん
08/04/07 10:37:57
質問です。長文失礼します。

1つのソリューション内に、
2つ以上のプロジェクトがあり、
それぞれのプロジェクトから、
同じクラスモジュールのファイルを参照したいのですが、
どうすればいいのでしょうか?

たとえばSol1というソリューション内に、
Pro1,Pro2というプロジェクトがあり、
2つのプロジェクトの両方から、Class1.vbという
クラスモジュールを使用したいのです。
「追加」-「既存の項目」で追加すると、
Pro1,Pro2のフォルダの下ににそれぞれ違う
Class1.vbができてしまいます。

別プロジェクトを作ってDLLを作るほうが
いいのでしょうか?
あまり外部依存ファイルを増やしたくないのです・・・

よろしくおねがいします。

452:デフォルトの名無しさん
08/04/07 11:24:11
既存項目の追加ダイアログでファイルを選んだら,
追加ボタンの右にある下向きの三角ボタンをクリックしてリンクとして追加を選ぶ
お勧めはしない
クラスライブラリのプロジェクトを作って既存プロジェクトを追加でソリューションに追加した方がいい
DLLは増えるけどまったく変わらん

453:デフォルトの名無しさん
08/04/07 11:56:50
>>452
すばやいレスありがとうございました。
目的のことができました。

やはりDLL増やしたほうがいいんですねぇ。
その案も考慮して進めていきたいとおもいます。


454:デフォルトの名無しさん
08/04/07 17:17:04
エラー発生時のExceptionから取得したStackTraceから各関数の引数の値って取得できますか?

455:デフォルトの名無しさん
08/04/07 18:23:42
ラベルが100個くらいあるフォームで
(ここはつっこまないでw顧客の要望なんです・・・w)
BackgroundImageを設定すると、
フォームの表示がむちゃくちゃ遅くなるんですが、
どうにかならないでしょうか?
BackgroundImageを無しにするとそれなりに早くなります。
ちなみにラベルの背景色はTransparentで透過するようになっています。

というかもうデザインの時点でかなり重い・・・

456:デフォルトの名無しさん
08/04/07 19:28:07
文字を全部BackgroundImageにGraphicsで書き込めば?

457:デフォルトの名無しさん
08/04/07 20:25:06
>>455
BackgroundImageを使わないで済むよう顧客を説得する

458:デフォルトの名無しさん
08/04/07 22:56:24
もうー最後
VBとC#どっちがいい?

459:デフォルトの名無しさん
08/04/07 23:57:24
C#

460:デフォルトの名無しさん
08/04/08 07:50:39
C#

461:デフォルトの名無しさん
08/04/08 07:58:35
じゃあ俺はVBで

462:デフォルトの名無しさん
08/04/08 09:38:17
こうじゃね
VBで十分な人>>C++を使いたい人>C#を使いたい人

463:デフォルトの名無しさん
08/04/09 10:00:16
オヒス2007にしたら、氏ぬ程モッサリなんだが。。。
起動も20年前のUNIX+X-Windowワークステーション、
ウィンドウの描画もIME起動も1瞬止まったかのよう。

まさか、ドトネトで開発した?

464:デフォルトの名無しさん
08/04/09 11:26:58
気持ち悪い文章だ

465:デフォルトの名無しさん
08/04/14 17:22:08
コレクションをジェネリックで実装するときに
コレクションの値を
キーとインデックスを両方つかって参照したいのですが、
List(Of T)だとインデックスだけだし
Dictionary(Of T)だとキーだけ・・・
両方つかえるコレクションは作れないのでしょうか?

466:デフォルトの名無しさん
08/04/14 18:55:20
KeyedCollection

467:デフォルトの名無しさん
08/04/14 19:17:50
ありがとうございます。
Listとは違う名前空間だったので、
気がつきませんでした・・・


468:デフォルトの名無しさん
08/04/19 14:46:26
>>462
できるよ。
以上。
はい、次。

469:デフォルトの名無しさん
08/04/19 17:49:23
えらそうに仕切る前にレス番くらい確認しような

470:デフォルトの名無しさん
08/04/20 21:16:08
なんで.NETアプリはメモリ使用量が大きいんですか?
例えばtwintailという.NETの2chブラウザはスレッド1個見ただけで60MBぐらいメモリを食いますが、
これはプログラムの作り方の問題なのか、.NETの欠点なのかどちらでしょう?
この程度の小さいデータを扱うアプリなら5~10MB程度のメモリ使用が妥当だと思うんですが。

471:デフォルトの名無しさん
08/04/20 21:47:01
共有ライブラリをロードするから

472:デフォルトの名無しさん
08/04/20 21:57:04
クラスライブラリの使う分だけをスタティックリンクして、
frameworkなしで動くネイティブアプリを作るコンパイルオプションはありますか?

473:デフォルトの名無しさん
08/04/20 21:57:13
メモリ食いなのは確かだが、タスクマネージャのメモリ使用量は
指標として役に立たないことは覚えておいたほうがいい。

474:デフォルトの名無しさん
08/04/20 21:57:41
>>472
ない

475:デフォルトの名無しさん
08/04/20 22:08:56
>>474
ないのか・・・。じゃ使えんな。

476:デフォルトの名無しさん
08/04/20 22:15:30
そう、使えるときは使って、
使えないときは潔く諦めるのも大事だよ。

477:デフォルトの名無しさん
08/04/20 23:05:34
>>470
Live2chもちょっと長く立ち上げてると150MBくらい逝くから
アプリの特性じゃね?
IEコンポ使わないと作るの大変だしな

478:デフォルトの名無しさん
08/04/20 23:47:56
2chブラウザでIEコンポーネントなんか使う訳ないだろ。
dat取得とか知らないのか。

479:デフォルトの名無しさん
08/04/20 23:52:00
>>478
dat取得したのをローカルにhtml加工してから、IEコンポーネントで表示してるはず。
すくなくともギコナビは使ってる。

480:デフォルトの名無しさん
08/04/20 23:54:45
IEコンポーネントはなんかリークしてる気がするんだよね

481:デフォルトの名無しさん
08/04/20 23:55:38
>>479
貴方みたいな姿勢は尊敬するけど華麗にスルーしていいよ。
胃が痛い・・・

482:デフォルトの名無しさん
08/04/21 01:26:53
>>479
URLリンク部分を色変えて表示したりするためだけに、馬鹿でかいIEコンポを内部に組み込むのか。
「瓦一枚必要だから家を一軒買ってきました」みたいなノリだな。

483:デフォルトの名無しさん
08/04/21 01:49:52
>>482
IEコンポーネントを使っちゃった以上、
CSSやJavaScriptでスキンを作れるなんて機能もある始末。

484:デフォルトの名無しさん
08/04/21 11:37:04
>>482
>URLリンク部分を色変えて表示したりするため

しかしこれがFAQなのも事実。
RichTextで文字列の色変えたり、リンク貼ったりしたいという質問は多い。
リソース使用量に対するパフォーマンスを考えるとブラウザのレンダリングエンジンは相当優秀だよ。

485:デフォルトの名無しさん
08/04/21 12:33:51
>リソース使用量に対するパフォーマンスを考えるとブラウザのレンダリングエンジンは相当優秀だよ。

パフォーマンスじゃなくて技術力の問題だろ。
2chブラウザごときにIEコンポを使おうと判断する奴が無能すぎるだけ。
テキスト中のURL部分の抽出なんか正規表現使えば簡単にできるのに、それすら知らない無知無能。

だいたい.NETを使う奴は、使うパーツのコストをまるで考えない奴が多い。
これ使えばどんだけメモリを食うのか、どんだけ処理が重くなるのか考えもしない。

486:デフォルトの名無しさん
08/04/21 12:43:23
なんか訳のわからないこと言ってる奴がいる気がするけど気のせい?
IE使うな、って自前で描画しろっての?
車輪の再発明、って言うんじゃないのそういうの。
っていうかコピーにも対応するって結構面倒そうに思うけど。

つーかIE使うとメモリそんなに消費するのかなw

487:デフォルトの名無しさん
08/04/21 12:49:47
会社に必ず一人はこういうのがいるよな

488:デフォルトの名無しさん
08/04/21 12:56:14
↑こんな奴ばかりだから.NETはモッサリで嫌われるんだよ。
コストを考えて使えと言ってるだけなのに。

489:デフォルトの名無しさん
08/04/21 12:58:13


490:デフォルトの名無しさん
08/04/21 13:06:48
調べてみるとtwintailはIEコンポーネントを使ってないと書いてある。
だがそれにも関わらずメモリ食いまくりで起動が遅い。
.NET frameworkを読み込むこと自体が元凶なんだろうな。
Vista仕様のパソコンじゃないと使う気になれない糞重いソフトしか作れないのは痛いな。

491:デフォルトの名無しさん
08/04/21 13:16:46
WebClientも使ってないのかねえ?
それに限らず.NETFRAMEWORKの中からIE使ってる場合もあるのではないか
まあどっちみちメモリ食うのには変わらんがw

それとHTMLレンダリング甘く見てる知ったかちゃんが湧いてるようだがw
自分で作ってみるといいよ
間違いなく認識改まるからw
まったく最近は日本語処理舐めて掛かる奴が多くて困る


492:デフォルトの名無しさん
08/04/21 13:31:57
HTMLレンダリングとかそんなオーバーなものは要らない。
2chブラウザが解釈すべきタグは<a href="xxx">と<br>の2つだけだろ。
それをわざわざIEコンポーネントで表示させるほどのもんか?
頭使えよ。

493:デフォルトの名無しさん
08/04/21 15:47:30
>>492
実際に作ってみてよ

494:デフォルトの名無しさん
08/04/21 15:47:51
まあその程度の認識だろうとは思ったよ(笑)
実際やってみれば分かるが、.NETの文字列系処理だけで組み上げようとするとかなりのコスト
それで得られるものは僅かなメモリとでっかいセキュ穴
あ、あと自己満足かw
物の分かる奴ならどっちを取るかは自明だがね


495:デフォルトの名無しさん
08/04/21 15:49:31
表示とdatの解釈で話が噛み合ってないな

496:デフォルトの名無しさん
08/04/21 16:03:10
俺ならIEコンポーネントを選ぶ

497:デフォルトの名無しさん
08/04/21 16:05:38
Linuxで自前レンダリングが通のやり方。
IE使うよりずっと楽。
emacsen使って楽々コーディング+スクリプトで自動化。

498:デフォルトの名無しさん
08/04/21 16:08:41
>>494
IEコンポ使うとセキュリティーだらけ。
標準に準拠してないしな。
M$を信じたらだめだw

499:デフォルトの名無しさん
08/04/21 16:18:55
>>497
スレチあっちいけ

500:デフォルトの名無しさん
08/04/21 17:10:15
>>498
2chのスレ表示なら、
標準に準拠していないことはそう問題にならないはず。

だって>>492が言っているように
最低限aとbrが使えれば十分で、
さすがにIEコンポでもそれくらいは使える。

501:サイタマン ◆mYN3wsz7vE
08/04/21 17:27:09
perlで2chブラウザ作ったけど
簡単だったなぁ。
まず、板URLゲット
板選択したら、スレッドdatを取って
スレッド表示
スレッド選択したら
スレッドdat取ってスレ表示
書き込みはpostで。
4時間で作れた。

502:サイタマン ◆mYN3wsz7vE
08/04/21 17:31:12
ちなみに、これがSSです。
URLリンク(pict.or.tp)


503:サイタマン ◆mYN3wsz7vE
08/04/21 17:33:28
IEコンポが無いと、デザインがね。
それと、Javascript使って、ID一覧表示が出来ない
Widestudioで作ったんですが、
IEコンポがperlに対応して無いようで
残念です。

504:デフォルトの名無しさん
08/04/21 17:39:49
普通に考えてRichEditで十分だな。
IEコンポ使う奴は素人。

505:サイタマン ◆mYN3wsz7vE
08/04/21 17:43:55
今の時代ブラウザ用途でJavascript使えないとおもちゃのようになるよ。
俺の作った2chブラウザもJavascript使えないから
便利に動かない。
richeditなんて役に立たないよ。
実際に2chブラウザ作ってないから問題点が見えてないんだろうけど。

506:デフォルトの名無しさん
08/04/21 18:12:55
>>504
Win使ってる時点で素人
プロは全員りなつかてる

507:デフォルトの名無しさん
08/04/21 18:22:03
>>503
Win32::OLEはだめなのか?

508:デフォルトの名無しさん
08/04/21 19:07:59
>>505
ブラウザ用途って、2ch専用だぞ?
HTMLのフル機能を備える必要がなんである?
javascriptで機能を実装する必要がなんである?

不必要に馬鹿でかいオブジェクトを組み込んでしまった罪滅ぼしに、
javascriptを使おうとしてるだけじゃないか。

509:サイタマン ◆mYN3wsz7vE
08/04/21 19:20:15
>>507
OLEでGUIデザインは・・・
>>508
そこがね、卓上の空論と言うのかな。。
俺のSSのような2chブラウザならいらないけど
より便利にして行こうとすると、どうしても、必要になってくる。
あの機能が足りない、この機能が欲しいとなってくるんだよね。

510:デフォルトの名無しさん
08/04/21 19:30:02
>>509
Perlやったことないんだけど、
IEコンポ部分だけWin32::OLEってのも無理?

511:サイタマン ◆mYN3wsz7vE
08/04/21 19:32:59
>>510
widestudio使ってるから無理だと思います。
TKだとIEコンポ付いてますが共存できません。。

512:デフォルトの名無しさん
08/04/21 19:44:54
>>509
×卓上の空論
○机上の空論(「きじょうのくうろん」と読む)

perlなんかやっててWindowsプログラミングの机上の論理すら分かってない奴には用はない。
分かってるならきちんと論理的に反論できるはず。

513:サイタマン ◆mYN3wsz7vE
08/04/21 19:51:22
数時間あれば2chブラウザなんて作れるんだから
実際に作ってから言えと言いたいですね。
そこで問題点が分かると思いますよ。
IDにフォーカス当てるとそのIDの発言が表示されるとか
いろんな機能が欲しいと思うはずです。

514:デフォルトの名無しさん
08/04/22 03:48:30
そんなの自分で描画すればいいじゃん。やってみると結構簡単だよ

515:デフォルトの名無しさん
08/04/23 02:07:56
.NETアプリのexeが、MSILかJITコンパイル済みかを見分ける方法ってありますか?
初回起動が激遅のソフトがあって、それがMSILだから遅いのか、フレームワークを読み込むので遅いのかを
調べたいんですけど。

516:デフォルトの名無しさん
08/04/23 03:18:22
>>515
>それがMSILだから遅いのか、フレームワークを読み込むので遅いのかを
>調べたいんですけど。

プロファイラがあるから調べてみれば?
URLリンク(msdn2.microsoft.com)

517:デフォルトの名無しさん
08/04/23 03:22:40
>>515
ngenのこといってる?
ならngen displayコマンドで調べられる。

518:デフォルトの名無しさん
08/05/05 17:58:05
HTMLのオートインデント実装しようと思ってるんだけど、XMLのDOMについて質問です

XmlNodeクラスにはすべての子供のデータを取得するInnerText,InnerXmlはありますが
直下の子供のTextは取得できないんでしょうか

DirectoryInfoのGetFilesとGetDirectoriesみたいに
直下のXmlとTextだけが取得できる方が便利だと思うんですが・・


519:デフォルトの名無しさん
08/05/05 19:00:47
>>518
Textもノードの種類の一つだから、
子ノードを列挙してNodeTypeがTextのを探せばいい

520:518
08/05/05 19:21:28
うまくいきました。thx

521:デフォルトの名無しさん
08/05/11 02:40:27
ViEMUなるVisual Stdio内で動くViエミュレータが動きません。
設定の仕方がまずいんでしょうか。それともVisual Stdio Express じゃそもそも動きませんか?

メンバー、フィールド、プロパティ、変数のそれぞれの単語の厳密な使い分けがようわかりません。
ヘルプ読めばなんとなくはわかるんだけど。何か気の利いた分け方ありますか。

522:デフォルトの名無しさん
08/05/11 21:42:39
Expressではアドインは使えません。諦めましょう。
型の直下に宣言された要素の総称がメンバ(メソッド,プロパティ,フィールド,イベント)

523:デフォルトの名無しさん
08/05/12 03:12:27
>>522
サンクス

524:デフォルトの名無しさん
08/05/20 01:38:38
よくある、タブで文書を複数開く系のアプリを作ろうとしています。C#です。

TabPageの派生クラス(仮にMyTabPage)をTabControlにぽこぽこ追加、
みたいなイメージで考えてるんですが、この場合MyTabPage上の
コントロールの配置をデザイナで行うことは可能でしょうか。

525:524
08/05/20 01:39:51
あげときますです

526:デフォルトの名無しさん
08/05/20 20:36:11
ユーザコントロールを作ってタブページの上に乗せるようにした方がいいと思う

527:デフォルトの名無しさん
08/05/22 20:08:34
FileStream や IO::File::WriteAllText で
新規ファイルを作成して書き込んだとき、
サイズが0になってしまうことがあるのですが、
どんな理由が考えられるでしょうか?
ディスクの空き容量は充分にありますし、
特に例外も出ていません。
元データのサイズもゼロではありません。

528:デフォルトの名無しさん
08/05/23 00:51:40
closeしてない

529:デフォルトの名無しさん
08/05/23 00:57:29
横から補足
WriterとStreamの両方でcloseしないとダメ
disposeでcloseもされるとかMSDNには書いてあるが信じたらあかん

530:デフォルトの名無しさん
08/05/23 07:36:16
>>529
MSDNに書いてあるとは信じようよ。System.IO.StreamWriterのCloseの実装。
public override void Close()
{
    this.Dispose(true);
    GC.SuppressFinalize(this);
}
ただし、GC任せにした場合はDispose(false)になり正常に書き出しされない。


>WriterとStreamの両方でcloseしないとダメ
こちらはMSDNになぜか書いてないので両方Close/Disposeしておいたほうが安全だが、
実装上はwriterの元になったStreamは自動的に閉じられる。
ちなみにClose/Disposeは2度以上呼び出しても例外は起きない。

531:デフォルトの名無しさん
08/05/23 10:22:35
ふうむ…?
昔、StreamWriterとその元のFileStreamをそれぞれusingで括ってcloseなしにしたら
見事にサイズ0喰らったんだけどな
usingってスコープから外れた瞬間にdisposeするよな?

532:デフォルトの名無しさん
08/05/23 10:32:58
原因は別にあると考えるべきだろう。再現性のある最小限のコードをアップしてみたら。

533:527
08/05/23 10:52:54
みなさんありがとうございました。
FileStream のほうは Close していない部分があったので
Close するようにして様子を見てみます。
WriteAllText のほうは別な原因だと思いますが、
再現性のあるコードをアップするのが難しいので
もうちょっと自力で調べてみます。

534:デフォルトの名無しさん
08/05/23 22:08:58
スレリンク(tech板)

こちらのスレから誘導されてきました。

Windowsアプリケーション学習用にC#をやろうと思っています。
Microsoft Visual C# 2008 Express EditionをSDKとSQL Serverつきでインストールしました。
しかし何をどう作っていったらいいかわかりません。
プログラム経験はPHPでWebプログラム(こちらは趣味で3年以上やっていて2ch風掲示板ぐらいのものは作れます)、
あとオブジェクト指向の勉強にJavaを少しいじった程度です。
Javaでは簡単なファイル操作から、オブジェクトの継承や例外処理など基本的な勉強しかしていません。
Webプログラムはイメージ的にわかるので、ASP.NETあたりはなんとか理解できると思うのですが、
Windowsアプリケーションとなると右も左もわかりません。
まずは何をやったらいいのでしょうか?

とりあえず簡単そうなものとしてメモ帳あたりから作成してみたいと思っています。
また参考になるようなサイトがあれば是非教えてください。

535:デフォルトの名無しさん
08/05/23 22:23:00
お前は三年間何してたんだ?
分からないことは全部人に聞いてたのか?

536:デフォルトの名無しさん
08/05/23 22:45:02
何をしたらいいかわからないを判る様にするプログラムを作ったらいいじゃない

537:534
08/05/23 23:03:21
>>1見て安心したのですが、煽りしかこないようなので質問閉めます。
どうもお邪魔しました。

538:デフォルトの名無しさん
08/05/24 00:13:00
マジレスするとそんな抽象的な質問は、
恐ろしく掲示板という場所と相性が悪くて、誰も答えたがらない。
図書館とか書店行け。

539:デフォルトの名無しさん
08/05/24 00:25:15
>>534
まま。そう気を落とすなよ。
とりあえずフォームにいろいろ貼ってどんなコントロールがあるのか調べてみなさい。

540:デフォルトの名無しさん
08/05/24 01:18:29
まあ正直なところ

  簡単そうなメモ帳

と言ってる時点でWindowsアプリ全般に対する誤解つーか強固な先入観を感じる

まずそっから解きほぐすとなると、面と向かわなきゃ無理だ罠

541:デフォルトの名無しさん
08/05/24 11:39:04
メモ帳って”最低限の機能”が意外と多いきがす

542:デフォルトの名無しさん
08/05/24 13:04:08
印刷・検索・置換以外なら比較的簡単だと思うんだけどなあ……。

543:デフォルトの名無しさん
08/05/24 13:41:27
>>542
Windows標準のメモ帳に実装されている機能を「最低限」と言ってるんじゃないの?

544:デフォルトの名無しさん
08/05/24 14:51:47
多い少ないと簡単かそうでないかは違う尺度

545:デフォルトの名無しさん
08/05/24 14:53:04
てか「見た目メモ帳」で良ければリッチエディットぺたぺたで終わり
しかし、そこからが地獄
どう考えても学習向け題材ではない
2chブラウザの方がまだマシ


546:デフォルトの名無しさん
08/05/25 00:19:21
リッチはいらんだろ

547:デフォルトの名無しさん
08/05/25 09:17:10
VC++で、ビルドをするとpdbファイルや、ilkファイル、objファイルが生成されるのですが、
これらのようなファイル(exeファイル以外の勝手に生成されるファイル)は配布時には入れなくてもいいのでしょうか?

548:デフォルトの名無しさん
08/05/25 09:17:37
Tab 押したら隣のコントロールに移動してしまいました>< で詰まってみるとかどうよ

549:デフォルトの名無しさん
08/05/25 09:18:40
>>547
Debug ビルド → それらのファイルが出来る、配布不可
Release ビルド → それらのファイルが出来ない、配布可

550:デフォルトの名無しさん
08/05/25 09:26:17
>>549
リリースビルドでもいっぱいでてくるのですが……。
どこかで設定しないといけないのでしょうか?

551:デフォルトの名無しさん
08/05/25 11:01:11
見るとこ間違ってないか?
デフォルトならDebugとReleaseでフォルダ違うぞ

552:デフォルトの名無しさん
08/05/25 11:03:57
でもまあリリースでもobjやpdbはできるだろうな。
実際の配布にはexeだけあれば十分(あと必要に応じてランタイムの用意)。


553:デフォルトの名無しさん
08/05/25 11:20:33
みなさんありがとうございます。

VC#の設定を全部インポートしたから変になったのかな……。
再インストールしてみます。

>>552
objとかpdb生成しないようにはできないのでしょうか?
わざわざ手動でするのですか?

554:デフォルトの名無しさん
08/05/25 11:44:12
再インストールしましたが、
やはり生成されるようです。
こんなものなのですね……。

555:デフォルトの名無しさん
08/05/25 12:06:29
まずはobjファイルが何者であるかググレ
そしたら何故出来るか理解出来るだろ

556:デフォルトの名無しさん
08/05/25 13:06:07
文字列(テキストファイル)をLoadメソッドでXMLDocumentにするような感じで
文字列をHTMLDocument?のような構造化されたオブジェクトに変換する何かってありますか?

557:デフォルトの名無しさん
08/05/25 14:39:14
日本語でおk
で済ませたい所だが一応エスパーってみるとだ
拡張子が.htmlではないけど中身がHTMLなテキストなファイルをHTMLDocumentに読ませたいと
あんまアタマいいやり方じゃないが、WebClientにローカルパス指定して読ませるとかどだろう


558:デフォルトの名無しさん
08/05/25 15:36:31
>>557
分かりづらくてすみません
XMLDocumentだとタグの1つ1つにプロパティのようにアクセスできるじゃないですか
そんな感じでHTMLのテキストを読み込んでそういう感じのオブジェクトに変換してくれる何かがないかなと・・・

559:デフォルトの名無しさん
08/05/25 15:54:46
うわ・・・すみません、HTMLDocumentっていうそのものずばりがあったんですねorz
お騒がせしました

560:デフォルトの名無しさん
08/05/26 23:02:07
.NET Frameworkというのが何なのかググってもわかりません。
易しい言葉で詳しく説明していただけませんか?

561:デフォルトの名無しさん
08/05/26 23:23:41
クラスライブラリとランタイム

562:デフォルトの名無しさん
08/05/27 11:53:26
世に出ているデスクトップアクセサリ/マスコットってどういう仕組みで動いているんでしょうか。
いろいろとググってみましたが、よくわかりませんでした。
フォームを透過し、画像を貼り付け?何かヒントをくださると助かります。。

563:デフォルトの名無しさん
08/05/27 12:03:05
大丈夫。仕組みがわかったとしても君には作れないから。

564:デフォルトの名無しさん
08/05/27 12:05:14
>>563
そんなことおっしゃらず、おねがいいたします。

565:デフォルトの名無しさん
08/05/27 13:46:21
>>563
自分で作るとか作らないとかは関係ありません。
仕組みを聞いているだけです。

566:デフォルトの名無しさん
08/05/27 20:21:03
いもうとデスクトップを実際に作ってみないか?3
スレリンク(tech板)

567:デフォルトの名無しさん
08/06/01 21:08:54
enumってどう発音すんの?

568:デフォルトの名無しさん
08/06/01 21:19:44
適当に発音すればいい

569:デフォルトの名無しさん
08/06/01 22:07:04
エネマって読むんだお

570:デフォルトの名無しさん
08/06/01 22:07:49
浣腸かよ

571:デフォルトの名無しさん
08/06/02 22:19:18
javaのhsqlDBみたいに、フリーで手軽に使えるデータベースは.netにはないのですか?

572:デフォルトの名無しさん
08/06/02 22:41:15
mdbファイル
access無くても使えるし

573:デフォルトの名無しさん
08/06/03 05:41:13
>>572
あーあれ直接扱えるんですね。なるほどありがとうございます。

と思ったけど、うちの自宅マシンにaccess入ってないのでデバッグやデータ作るのめんどくさそう・・
ほかになんかないですかね?
とりあえずXMLがラクそう?ですかね。

574:デフォルトの名無しさん
08/06/03 07:51:23
>>573
そういう用途で実質業界標準なSQLiteでいいんじゃね?
対応環境もめちゃ多いし。

575:デフォルトの名無しさん
08/06/03 21:35:19
SQL Serverでもいいぜ、サービスがいやならCompactとか。


576:デフォルトの名無しさん
08/06/03 22:14:17
msdnのDatagridviewの説明読んでも全然わかんない

577:デフォルトの名無しさん
08/06/04 02:33:04
まあなんだ
取り敢えずDBテーブルからフォームにポトペタしてみ?

578:デフォルトの名無しさん
08/06/04 11:45:38
>>577
表示したいのはDBのレコードじゃなくて自作クラスの配列なんだ
DataSourceに突っ込んだら表示されたけど

何も考えずDataSourceに突っ込んだら一行にこんな感じに表示されるけど
┌─┬─┬─┬─┬─┐
│あ│い.│う.│え.│お│
└─┴─┴─┴─┴─┘

それを下のように一行の中に縦に二つのセルを並べたりはできないの?
┌─┬─┬─┐
│  │い│う │
│あ├─┼─┤
│  │え│お.│
└─┴─┴─┘

579:デフォルトの名無しさん
08/06/04 17:09:44
>>578
DataSourceの形がそんなだから、表示もそんな形になる
DataSourceの形を工夫すれば、できなくはない

DataGridViewの上では2レコードだけど、
コーディング上ではそれを1レコードとみなす、ってことね

580:デフォルトの名無しさん
08/06/06 04:09:46
VB2008についての質問です。
My Projectの設定で作った変数の値は、user.configに保存されますが
これだと、ビルドしたexeを別のフォルダに移した場合、それまでにユーザーが入力した値がリセットされてしまいます。
それで、ユーザー用の設定ファイルを常にexeと同じフォルダに生成し、常に読み込み・保存でそちらを利用したいのですが
これを実現させるにはどのようにすればいいのでしょうか?

581:デフォルトの名無しさん
08/06/06 08:43:47
それはVistaでややこしい事になるからしない方がいい
M$的にはDocuments and Settings内がユーザー個別だから使えと言うこと


582:デフォルトの名無しさん
08/06/06 19:09:39
うーん、そうなんですか、ありがとうございます
仕方ないので、任意のタイミングでデータを読み書きするボタンを置いておいて、
自分でインポート・エクスポートしてもらう事にします

583:デフォルトの名無しさん
08/06/08 00:50:04
質問です。SQL server 2005 と VB.NET2005を使用して簡単なソフトを作っています。
実用的なものではなく、VBとSQLの練習みたいな感じです。
SQLから値を取得しようとコードを書いていたのですが、

SqlExceptionはハンドルされませんでした。
ユーザー '' はログインできませんでした。
このユーザーは SQL Server の信頼関係接続と関連付けられていません

というエラーがでました。

認証がWindows認証だったので、SQL Server認証にしようしても接続することができません。
このような場合どうすれば良いでしょうか?

584:デフォルトの名無しさん
08/06/08 01:31:41
>>583
app.configの接続文字列ってわかるかな?
わかればそれを晒してみよう。

585:デフォルトの名無しさん
08/06/08 08:03:43
583です!返答ありがとうございます。
app.configの接続文字列とはどこで見たらよいのでしょうか?
ソリューションエクスプローラーにapp.configはでてきているんですが、
プロパティに接続文字列がでてきません・・・・。
初歩的な質問からですみません。


586:デフォルトの名無しさん
08/06/08 12:44:31
DBに繋ぐためにapp.configの中の接続文字列を見て
DBと通信してる。とりあえず、app.configの中にDataSourceとかServerとかあると
思うし、それを確認すべき。"(local)"とか書いてると思う。
SQLServerのエディションはなに?

587:デフォルトの名無しさん
08/06/08 13:33:24
つかDBエクスプローラから一遍ポトペタしとけばその辺自動で作ってくれると思ったが
それで出来たDataGridが要らなければ消せばいい

588:デフォルトの名無しさん
08/06/08 22:02:58
説明不足ですみませんでした。
SQL Server Management Studio Expressを使用しています。

app.configの接続文字列についてですが、

connectionString="Data Source=ユーザー名;Initial Catalog=shuwa;Integrated Security=True"

となっています。



589:デフォルトの名無しさん
08/06/08 22:03:38
ユーザー名を「(local)」にしてみたら?

590:デフォルトの名無しさん
08/06/08 23:22:59
(local)にしてみましたが、同様のエラーメッセージがでてしまいました・・・。

今、VBに書いているプログラムです。

Imports System.Data.SqlClient '接続クラスの作成

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Cn As New SqlConnection("server=(local);Data Source=ユーザー名;Initial Catalog=shuwa;")
Dim SQLCm As SqlCommand = Cn.CreateCommand


SQLCm.CommandText = "SELECT かな FROM shuwa WHERE 指文字 = 001 "

Dim Value As String

Cn.Open()
Value = SQLCm.ExecuteScalar
Cn.Close()
MsgBox(Value)
End Sub
End Class
 


591:デフォルトの名無しさん
08/06/08 23:24:32
まず、001って'001'
シングルクオーテーションで囲まないと

592:デフォルトの名無しさん
08/06/08 23:55:29
Valueはstringで大丈夫か?
DBNullの可能性はないのか

593:デフォルトの名無しさん
08/06/09 00:19:00
SQLCm.CommandText = " SELECT かな FROM shuwa WHERE 指文字 = '001' "
という事でしょうか?エラーは相変わらずです。。

さらに、また疑問がありまして・・・自動生成されるプログラムについてもいまいち理解しきず、今まで、コメント扱い
にして作業していたのです。ヘルプや関連サイトを見てはいるんですが、これは必要なんでしょうか?

1 Private Sub Shuwa_Table_1BindingNavigatorSaveItem_Click・・・
2 Private Sub Form1_Load・・・・でTODO: このコード行はデータを 'ShuwaDataSet._shuwa_Table_1' テーブルに読み込みます。必要に応じて移動、または削除をしてください。

コメントを外すとビルドエラーで1でHANDLES句には、それを含む型または基本型の1つの定義されたWithEvents変数が必要です。
とでています。

594:デフォルトの名無しさん
08/06/09 00:32:54
もう、そのままコードうpしちゃいなよ~

595:デフォルトの名無しさん
08/06/09 00:56:05
っ [教えてgoo]

もう来んな。

596:デフォルトの名無しさん
08/06/09 00:58:01
うまく伝えられずすみません。以下がコードになります。
Imports System.Data.SqlClient '接続クラスの作成

Public Class Form1
'自動生成されるプログラム()
Private Sub Shuwa_Table_1BindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Shuwa_Table_1BindingNavigatorSaveItem.Click
Me.Validate()
Me.Shuwa_Table_1BindingSource.EndEdit()
Me.Shuwa_Table_1TableAdapter.Update(Me.ShuwaDataSet._shuwa_Table_1)
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'TODO: このコード行はデータを 'ShuwaDataSet._shuwa_Table_1' テーブルに読み込みます。必要に応じて移動、または削除をしてください。
Me.Shuwa_Table_1TableAdapter.Fill(Me.ShuwaDataSet._shuwa_Table_1)

End Sub


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Cn As New SqlConnection("server=(local);Data Source=ユーザ名;Initial Catalog=shuwa;")
Dim SQLCm As SqlCommand = Cn.CreateCommand
SQLCm.CommandText = " SELECT かな FROM shuwa WHERE 指文字 = '001' "
Dim Value As String
Cn.Open()
Value = SQLCm.ExecuteScalar
Cn.Close()
MsgBox(Value)
End Sub
End Class

597:デフォルトの名無しさん
08/06/09 01:00:19
URLリンク(www.atmarkit.co.jp)

ここ読んでみそ

598:デフォルトの名無しさん
08/06/09 01:02:47
連続すみません。
592さん!StringをSqlDataReaderに変えたところ、ログインエラーはでなくなりました!
ありがとうございます!!

599:デフォルトの名無しさん
08/06/09 01:11:20
エラーメッセージちゃんと読んでたのか?

600:デフォルトの名無しさん
08/06/09 16:13:12
質問させて下さい。

C#にて、.NET Framework 2.0にServis Packが適応済みであるかを調べたいのですが
上手くいきません。

開発環境は Visual Studio 2005
開発環境OS Windows XP Pro SP3
インストール済みの.NET Framework
・2.0
・2.0 lang
・2.0 SP1
・2.0 SP1 lang

System.Runtime.InteropServices.RuntimeEnvironment.GetSystemVersion()
にてバージョンの取得を試みたところ、SP1がインストールされている環境下でも取得されるバージョンは「2.0.50727(SP無し)」

教えてエロい人!


601:デフォルトの名無しさん
08/06/09 16:37:39
バージョンの下にビルド番号があるみたい
2.0.50727.832
2.0.50727.1433

エライ人じゃないから、これ以上はわからん

602:デフォルトの名無しさん
08/06/09 22:30:51
ループを使用する場合、変数の宣言はループの外側ですべきですか、
それとも内側でしょうか。

Dim s as String
For i as Integer = 0 to 10
  s = Cstr( i ) & "回目"
  Console.writeline(s)
Next
か、
For i as Integer = 0 to 10
  Dim s as String = Cstr( i ) & "回目"
  Console.writeline(s)
Next
ということです。前者の方が領域の使い回しにはなりそうですが、
どこかでGCの為には毎回宣言すべきというのも見た気がして…

603:デフォルトの名無しさん
08/06/09 22:33:25
Objectdatasource の insert メソッドをコードから呼んだ時は identity の値って取得出来るの?
insertメソッドってint型しか返さないし select メソッドを直後に呼んだら正しい値が返って来るとは限らないような。

604:デフォルトの名無しさん
08/06/10 00:47:59
>>602
stringをGCw


605:デフォルトの名無しさん
08/06/10 05:15:42
>>602
変数のスコープは小さく

606:デフォルトの名無しさん
08/06/10 06:08:16
>>602
前者でも文字列本体の領域が使いまわされるということは全くないから、
安心しろ。どっちも同じようなもんだ。
というわけで、変数の有効範囲が小さい後者がよしとなる。

607:デフォルトの名無しさん
08/06/10 12:22:38
>>601 ありがとう!エロすぎるよ!!!!1111

608:デフォルトの名無しさん
08/06/10 12:27:20
>>601 ありがとう!エロすぎるよ!!!!1111

609:デフォルトの名無しさん
08/06/10 13:29:10
Thread の扱いについて。

 Thread t = new Thread(new ThreadStart(worker));
 t.Start();

 void worker()
 {
  :
 }

などとしてスレッドをスタートさせ、worker が終了するとスレッドも消滅するそうですが、
インスタンス t はどうなるんでしょうか。t はまだ有効で、t.Start() でまたスレッドをスタート
させることができるのでしょうか。

毎回インスタンス作り直してもガベージコレクタが回収してくれるんでしょうけど、
ちょっとこの辺が気にかかってます。

610:デフォルトの名無しさん
08/06/10 13:53:16
まず試してみればいいじゃない

611:デフォルトの名無しさん
08/06/10 15:05:18
>>602
領域云々では全く差はない。
よってスコープを広げるメリットはない。


612:デフォルトの名無しさん
08/06/10 15:06:35
>>609
インスタンスは残ってるけど再起動はできない。
よってほっとくのが吉。

613:609
08/06/10 15:09:56
>>610
そのつもりではいるんですが、今は手が回らないんで、先行して質問してみました。
また、再スタートできたとして、それでよいのか単なる偶然かも気になるところなんですよね。
…て書いてると回答が。

>>612
ありがとうございます。では再起動させる時は作り直すようにします。
どうも Win32 でやってた頃の癖が染みついてて、作ったインスタンス
後始末しないと気持ち悪かったりするんですよね。

614:デフォルトの名無しさん
08/06/11 07:00:35
一つのFormにTabControlを用い、複数のページをタブで切り替えられるようにしています。
各タブにはスピンボタンがいくつかあり、そこに入力された値はpropertybindingで記録しています。
なのですが、起動時に一番初めに表示されるタブのページに、全タブのスピンボタンの値の合算を
表示するようにしているのですが、これが起動時は正しく合算後の値が表示されているのですが
一度でも初期表示のページのスピンボタンを操作すると、合算の値が起動後に一度でも開いたタブのみの
合算値になってしまいます。

ちょっと分かりづらい説明だと思いますが、要は各タブに貼り付けられたスピンボタンのvalueの値が、
一度でもそのタブを開かないとMy.Settingsから書き戻されないようなのです。
どうも、起動した瞬間はvalueに関連づけたMy,Settingsの値が入っているようなのですが
起動→操作可能になるまでの間にvalueの値が0になっているようなのです。(My.Settingsには値が保持されている)
0にするような操作は一切行っていないのですが、propertybindingの値を読み込み保持させるには、どうすればいいのでしょうか?
もう5時間くらいずっと悩んでいるのですが、何をしても全く解決できません。

615:デフォルトの名無しさん
08/06/11 10:08:38
タブコントロールって最初の奴以外は、選択されない限りインスタンスが作られないんでなかったか
回避策としては、タブの親玉のPreInit?だかで一旦非表示にして、全タブを前面に持ってくる
もっとスマートなやり方あるかもだが

616:614
08/06/12 03:30:42
>>615
ちょっと不格好だとは思いますが、Form1_Loadの中で
Me.TabControl1.SelectedTab = TabPage2
Me.TabControl1.SelectedTab = TabPage3
という風に一度全てのタブに切り替えるようにすると、初めから値が入った状態で操作できるようになりました。
ありがとうございました。

617:デフォルトの名無しさん
08/06/25 00:29:39
visualbasic2008ですが、初期状態でPictureBoxに画像Aを表示させておいて、
クリックすると画像Bに数秒だけ切り替えて音声ファイルを再生し、また画像Aに戻るプログラムを作りたいのですが

Dim strm As System.IO.Stream = My.Resources.se01
Dim player As New System.Media.SoundPlayer(strm)

PictureBox1.Image = My.Resources.B
player.Play()
PictureBox1.Image = My.Resources.A

という風に記述すると上手く画像が切り替えできません。
player.Play()の後にsleepを入れてみましたが、どうも画像を切り替える前に音再生の所で処理が止まっているようです。
要は、
URLリンク(saionji.net)
のフラッシュのような事がしたいのですが、画像を上手く切り替え、かつマウスの連打にも対応させるにはどうすればいいのでしょうか?

618:デフォルトの名無しさん
08/06/25 17:10:26
考え方を切り替えて,ゲームみたいに自分でループ回してフレーム単位でやった方が簡単だよ
もしくはWPF使う

619:デフォルトの名無しさん
08/06/25 20:21:17
DirectX場合、GDI関数のようにGUIスレッドからしか操作できないという制限はあるの?
別に出来るなら自分でループまわすのが一番自然なんだけどな。

620:デフォルトの名無しさん
08/06/30 22:49:53
webサイトを作ろうとやっているわけなんですが、
アップの後に確認してみたところ、どうしても
Parser Error Message: Could not load the assembly 'App_Web_default.aspx.cdcab7d2'. Make sure that it is compiled before accessing the page.
と出てきてしまい
<%@ page language="C#" autoeventwireup="true" inherits="_Default, App_Web_default.aspx.cdcab7d2" %>
が悪いと出てくるわけなんですが、どうすればいいのか理解ができない状況です・・・

もし、ここが悪いんじゃね?っていうのがあれば教えていただければ幸いです。


621:デフォルトの名無しさん
08/06/30 23:21:24
ム板にもASP.NETスレはあるから行ってこいよ。
どうせマルチなら何ヶ所しても同じだろ。

622:デフォルトの名無しさん
08/07/04 15:07:13
C++のマネージ配列を強制的に開放することはできないのでしょうか?

623:デフォルトの名無しさん
08/07/04 17:11:11
参照をはずしてあとは祈れ

624:デフォルトの名無しさん
08/07/04 17:23:26
解放を制御したかったらアンマネージドでやれ

625:デフォルトの名無しさん
08/07/10 03:15:04
C++とかで直接書くのではなく、.NETをつかう利点てなに?


626:デフォルトの名無しさん
08/07/10 05:27:56
マイクロソフトは.NETにユーザー押し込めて囲いたいだけだろな
それに乗るか乗らないかだよね

627:デフォルトの名無しさん
08/07/10 11:49:15
C++は文法が難しすぎて

628:デフォルトの名無しさん
08/07/10 12:18:08
C++と.NETの2者選択ってのじゃなくて済み分けてるけどね。
.NETは生産性が高く、実行コストが高い。
C++は生産性が低く、実行コストが低い。
十分テストが出来て広く多数に使ってもらう用途にはC++。
WEBや企業内システムのような用途には.NETが向いてる。

629:デフォルトの名無しさん
08/07/12 01:08:58
array<Byte>の全体にmemset相当のことをしたいんだけど、どうすればいいの?

ループで回して1つずつセットした → かっこ悪い
pin_ptrしてmemsetした → 納得いかん
ForEachした → 大げさ過ぎる

630:デフォルトの名無しさん
08/07/12 02:25:49
>>629
かっこ悪いと一緒なんだが
static class Util {
  public static T [] setAll<T>(this T [] ar, T val) {
    for (int i=0; i<ar.Length; i++) ar[i] = val; return ar;
  }
}

double [] ar = new double[10].setAll(123.45);


631:629
08/07/12 15:36:08
やっぱし、そういう手しかないのね。
0にしたい時だけはClearでいいようだけど。

初期状態を0xffにする時とかがねぇ。

632:デフォルトの名無しさん
08/07/12 18:04:01
System.IO.BinaryReaderで開いたファイルをシークさせるにはどうすればいいのだろう。
素直に考えるとhoge.BaseStream.Seek()なんだろうけど、msdnヘルプ見たら

注意:読み取り中または BinaryReader の使用中に基になるストリームを
使用すると、データの損失や破損の原因になることがあります。
たとえば、同じバイトが 2 回以上読み取られたり、バイトが読み
飛ばされたり、文字の読み取りが予期しない結果になることがあります。

って書いてあるからちょっと不安。

633:デフォルトの名無しさん
08/07/13 07:49:32
>>631
C++でも構造体の初期化にはmemset使うなって流れになってるけど、
配列はどうなんだろ。スレ違ですまそ。

634:デフォルトの名無しさん
08/07/13 11:43:59
>>632
シークが必要になったら、BinaryReaderは破棄して、元になったストリームをシークする。
んで、そのストリームから別のBinaryReaderを作って完了。

FileStream fs( "hogehoge", FileMode::Open);
BinaryReader br1( %fs);

// ここでbr1から好きなだけ読む

fs.Seek( 0, SeekOrigin::Begin);  // 先頭にシーク
BinaryReader br2( %fs);

// ここでbr2から飽きるまで読む


635:デフォルトの名無しさん
08/07/13 11:45:13
NetworkStreamのようにSeekできないのはどうすればいい?

636:デフォルトの名無しさん
08/07/13 11:51:37
メモリなりファイルなり一度どこかに蓄える

637:デフォルトの名無しさん
08/07/13 11:55:10
>>633
C++はプログラマの責任においてできることの範囲が広いわけで、
パフォーマンスや保守性など、各種要因を天秤に掛けて決めるべきかと。

C++/CLIは.NETの制限の中にあるんで、基本的にはmemsetは御法度なんだけど、
せめてArrayにFillメソッドがあってもいいような気もする。


638:デフォルトの名無しさん
08/07/13 22:40:50
>>633
ネイティブC++でも構造体の初期化にmemset非推奨ってーのは、
多分アライメントの関係で下手をすると尻切れになりかねないからだと思われ
例えば合計6バイトの構造体だと、実際のサイズは8バイトになると思うが
この構造体を配列にして初期化しようとすると、sizeofの実装によってはズレが生じかねない
ましてや.NETだと間に何が挟まってるか知れたもんじゃない
スレチだからこの辺で

639:デフォルトの名無しさん
08/07/13 23:11:10
「思われ」みたいなヲタク口調の奴って気持ち悪いな。
なんだよ「思われ」って。
想い想われかw

640:デフォルトの名無しさん
08/07/14 01:11:15
と、何にでも噛み付く狂犬がキャンキャン吠えてます

641:デフォルトの名無しさん
08/07/14 13:28:50
C言語の"%5d"に相当するToStringのフォーマット指定はなんて書くざますか?
"%05d"相当にしかならんのですが。

642:デフォルトの名無しさん
08/07/14 14:03:06
.PadLeft(5) つなぐとか

643:デフォルトの名無しさん
08/07/14 14:05:40
ググったらわかりました。
ToStringじゃできないのでString.Formatを使うらしい。
つか、MSDN分かりにくすぎだろ。

644:デフォルトの名無しさん
08/07/14 21:14:15
>MSDN分かりにくすぎだろ。
そういう感想の人もいるんだな。
いや別に煽ってる訳じゃなないし、たぶん俺が麻痺しちゃってるんだと思うけど
すくなくとも書式指定に関してはそういう不満は覚えなかったな。

だいたい>>641みたいな需要って(DOSの時代ならともかく)いまどきあまり
ない気がするよ。

645:デフォルトの名無しさん
08/07/15 06:22:12
WriteLineやStringFormatで使える書式
位置 ( , 桁数 ) : フォーマット
ToStringで使えるのはファーマットの部分だけ
漢字等の幅広文字も1文字で数えるから総桁数はあんまり使わないよね。

646:デフォルトの名無しさん
08/07/15 09:44:50
ToString().PadLeft(5) は無視か。

647:デフォルトの名無しさん
08/07/15 19:46:28
他に手がないならともかく、さすがにそれはなぁ。

648:デフォルトの名無しさん
08/07/20 21:43:53
すいません質問です。
StringのReplaceを大文字小文字を無視してすべて置換する方法はありませんかね?

649:デフォルトの名無しさん
08/07/20 22:02:03
ない

650:デフォルトの名無しさん
08/07/21 20:11:57
ないな…あってもいいと思ったんだが。
手抜くなら、Regex.Replace関連で代用かな…


651:デフォルトの名無しさん
08/07/22 23:34:14
セットアップウィザードを使ってインストーラーを作成しています。
ReadMe.txtのショートカットをプログラムメニューに配置したいのですが、アイコン関係がよく判りません。

手順としては、
アプリケーションフォルダにReadMe.txtを追加する。
ReadMe.txtのショートカットを作成する。
このショートカットをユーザーのプログラムメニューに配置する。
(プロパティはいじっていません。)


実際にインストールしてみると、問題なくReadMe.txtは表示されるのですが、アイコンが、%APPDATA%\Microsoft\Installer
\xxx.exeにあるアイコンが表示されます。

他のプログラムメニューに登録されているReadMeのように、txtファイルに関連付けられたアプリケーションの
アイコンが表示させたいのですが、どこをいじればよろしいでしょうか?
よろしくお願いします。





652:デフォルトの名無しさん
08/07/23 15:10:07
Microsoft.Office.Tools.ExcelとMicrosoft.Office.Interop.Excelの違いがよくわかりません。
それを知りたいのと、
単純にCUIでExcelファイル(.xls)を読み込んでバイナリデータにコンバートしたい場合、

どちらを使えばいいのでしょうか?


653:デフォルトの名無しさん
08/07/26 17:55:38
Visual Basic 2008 Express Editionをインストールして
新しくプロジェクトを作成してみると、以前までコードが自動生成されていたのが
生成されなくなってしまいました。

ex)
Public Class Form1

End Class

のような感じでしか出力されていない状態です。
何か設定を弄らないといけないのでしょうか?

654:デフォルトの名無しさん
08/07/26 18:41:07
>>653
今頃それに気づくということは以前というのはVS2002とか2003なのか?
プロジェクトのすべてのファイルを表示でForm1.Designer.vbが表示されるからそこにいろいろ入ってる。

Sub Newを書かないときにInitializeComponent()を誰が呼んでるのだという問題だったらまた話が違う。


655:デフォルトの名無しさん
08/07/26 21:21:10
>>654
以前に使用していたのは2005です。

問題の解決ができまして
原因は私の勘違いでボタンオブジェクト作成⇒自動挿入と思っていました。
ボタンオブジェクトでダブルクリックしないといけなかったという…
お答えくださりありがとうございました。


656:デフォルトの名無しさん
08/08/09 15:06:32
質問です。
フォルダAppの中にBase.dllとModA.dllが存在しています。
このフォルダのdllはすべてVB.NET(1.1)で書かれており、
Base.dllの中には継承フォームの親クラスなど、
ModA.dllの中にはBase.dllを利用(参照)して作った実際の画面クラスなどがあります。

Base.dllは頻繁に更新されており、
ModA.dllの参照に設定されているバージョン番号よりもかなり新しい状態です。

現状、この内部だけの動作なら問題なく動いています。

現在、新しいWindowsアプリを作成中で、
C#で作ったアプリからModA.dll内の画面クラスを
System.Reflectionを使用して動的に呼び出したいのですが、
Base.dllを継承したフォームを呼び出そうとした瞬間に
「Base.dllが見つかりません。」というExceptionを投げられてしまいます。

・Base.dllとModA.dllは必ず同じAppフォルダに入っている
・Appフォルダそのものの位置は移動可能
・新アプリでは、Appフォルダの位置をユーザーに指定させる
・新アプリの位置も移動できる方が望ましい。

という条件で、上記のExceptionが出ないようにすることは可能でしょうか?
助言をお願い致します。

657:デフォルトの名無しさん
08/08/09 19:36:19
>>656
いろいろ書いてる割には見事にポイントをはずして要領を得ないね。
とりあえず言えることは、「出来るはず、やり方が悪い」

658:656
08/08/09 20:31:55
>>657
では、正しいやり方を教えてください。

659:デフォルトの名無しさん
08/08/09 20:53:21
それは657にエスパーであれっていってるのと同義だと思うけど

660:デフォルトの名無しさん
08/08/09 20:57:54
C#が1.1なのか他のバージョンなのか。
リフェレクションはAssembly.LoadFromを使っているのかそれとも別の方法か?
リフェレクションで読み込んで呼び出している部分のソースをさらす。
VBで同じ手法のリフレクションを使って実現できているのか。
「Base.dllが見つかりません。」じゃなくてスタックトレースを出せ。
E伊東さんとお知り合いか?

とりあえず、このくらいは書いとけよ。

661:デフォルトの名無しさん
08/08/09 22:44:55
リフェレクションえろいな

662:デフォルトの名無しさん
08/08/09 22:47:14
>>656
無理。
依存してるライブラリが更新されたらコンパイルしなおす必要がある。
さもなくば、動的にクラスを構成しないといかん。

663:デフォルトの名無しさん
08/08/09 23:16:46
厳密名を使ってるなら話は別だがPublicKeyToken=nullのときはVersionのチェックはない。


664:デフォルトの名無しさん
08/08/10 20:55:34
LoadFromが原因だろう。
厳密名とかの話じゃない。

LoadFromで読んだ場合、自動的に同じフォルダのBase.dllを
読んだりはしてくれない。
AssemblyResolveなどで自分でハンドリングして読み込むか、
事前にBase.dllもLoadFromで読んでおくことはできる。

でも、アプリのフォルダを自由に指定とかなってくると、
たぶんどっかでトラぶってにっちもさっちも行かなくなると思うぞ…


665:デフォルトの名無しさん
08/08/11 19:50:24
フォーム1で使っている変数(数字の1~100)を
フォーム2にとばして使いたいのですが、どうすればいいのかわかりません。

自分で調べた所、プロパティを設定すればいいとのことでした。
URLリンク(homepage1.nifty.com)

ここを参考にして色々とやってみたのですが、
どうもうまく実際に使っているXの値を別のフォームに送れません。

どうか、ヒントをください。

666:デフォルトの名無しさん
08/08/11 20:13:58
[ヒント]
プログラミングに王道なし。

いやまじめな話、そのレベルから掲示板で解説しろってそりゃ無理あるぞ。

667:656
08/08/11 22:59:52
>>660
C#は1.1です。
try
{
 Assembly a;
 a = Assembly.LoadFile("C:\App\ModA.dll");
 foreach(Type type in a.GetTypes())
 {
  if(type == typeof(インターフェース))
  {
   return true;
  }
 }
}
catch(Exception e)
{
 MessageBox.Show("エラー発生");
}

ソースはこんな感じです。スタックトレースってのはよく分かりません。
ごめんなさい。

>>664
Base.dllを先に読み込めばいいんですね。
明日試してみます。

668:デフォルトの名無しさん
08/08/11 23:05:34
ってしかもLoadFileじゃねーかよ

669:デフォルトの名無しさん
08/08/11 23:28:49
>a = Assembly.LoadFile("C:\App\ModA.dll");

もしかして~
a = Assembly.LoadFile(@"C:\App\ModA.dll"); 
とか
a = Assembly.LoadFile("C:\\App\\ModA.dll"); 
で直ったりして

670:デフォルトの名無しさん
08/08/11 23:44:47
まさかね
まあBase~っていってるから違うと思うけど。

しかしなー、LoadFromやLoadFile系はトラブるんだよなー
できればフォルダを自由に指定ってのはやめた方が無難だけどなー


671:デフォルトの名無しさん
08/08/11 23:50:07
LoadFileはいろいろ制限が多いし、
LoadFromは署名がないと相対パスしかダメなんだっけ。
やっぱ構成ファイルを書きまくるとか。

672:デフォルトの名無しさん
08/08/12 00:25:37
MSDNから
>LoadFile は、LoadFrom メソッドとは異なり、ファイルを LoadFrom コンテキスト内には読み込みません。
>また、読み込みパスを使用して依存関係を解決することもできません。

ModA.dllのあるディレクトリから依存のあるBase.dllを探してくれない

673:656
08/08/12 00:41:21
>>669
書き込みミスです。@付きになってます。すみません。


LoadFromにすれば直るのでしょうか?
>>664の先に読み込むというのが気になるので、
それをまず試してみようと思います。

どちらにしても今すぐ確認はできませんので、
確認し次第再度書き込みます。

いろいろ助言をありがとうございます。

674:デフォルトの名無しさん
08/08/12 00:45:38
>>664はLoadFileの制限ぽい感じだな


675:デフォルトの名無しさん
08/08/12 00:53:41
C#でアプリ作ってるのですが、.NET Framework入ってない環境で起動した場合、
強制終了になる前に任意のメッセージ出して終了するにはどうすればよいでしょうか?


676:デフォルトの名無しさん
08/08/12 08:07:28
環境を調べるネイティブアプリ作って、入って無ければエラー出して終了、
入っていればC#アプリを起動するとか。

677:デフォルトの名無しさん
08/08/12 13:27:53
>>676
そのつもりでDOSスタブみたいな形で埋め込めればいいなぁと
あれこれ模索してたりしてたんですが、やっぱ分けるしかないでしょうか。

678:デフォルトの名無しさん
08/08/12 14:33:44
>>677
先頭のほうにmscoree.dll::_CorExeMainを呼ぶjmp命令があるから、
その飛び先を変えてやればいいと思う。

ちなみに、XP以降のWindowsローダーはマネージドアセンブリを読み込んだ場合、
このネイティブなスタブコードを実行せずに、_CorExeMainから直接実行し始める。

679:678
08/08/12 15:15:17
何が言いたいのかよく分からない文章になってたけど、
要するにXP,Vistaあたりでは必要なバージョンのランタイムがないときに、
実行前に任意のメッセージを出すことはできない言うことです。

スタブコードを書き換えるのはやったことがないけど、そこに感染するウイルスがいくつかあるんで、
もしかしたらアンチウィルスソフトウェアに文句言われる可能性はあるかもしれないですね。

680:656
08/08/13 00:01:05
LoadFromを使用して、先にBase.dllを読み込んでおけば
無事動くようになりました。

新たな問題はいくつか出てくるようになりましたが、
今のところ少しずつ解決していけてるので大丈夫だと思います。

丁寧な回答ありがとうございました。

681:DD
08/08/20 13:29:19
ASP.NET2.0のGridViewで質問があります。使用言語はC#です。
1つの画面に以下のコントロールがあります。
・TextBox (TextBox1)
・Button (Button1)
・GridView (GridView1)
・SqlDataSource (SqlDataSource1)
TextBox1に検索する主キーの値を入れ、Button1をクリックすると、
その主キーの行の背景色を変更する、といったことをやりたいと思っています。
GridView1のSelectedRowStyleのBackColorに適当な色を指定して
DataBoundイベントでGridView1.DataKeys[i].Valueをループで検索。
見つかったらGridView1.SelectedIndex = iとすることで
ほぼやりたいことは実現できています。

この状態でGridView1のAllowPagingをTrueに設定し、
Button1クリック時に、検索してヒットした行のあるページに
自動的に切り替えるにはどのようにすればよいのでしょうか?
現状のコードでは、現在のGridView1のページしか検索出来ないためうまく出来ません。
どなたかご教授願えないでしょうか?

682:デフォルトの名無しさん
08/08/22 14:15:56
>>681
PageIndexで表示したいページを設定できる

683:デフォルトの名無しさん
08/08/23 09:19:12
VC# 2005とWindows Forms(.Net Framework 2.0)でOfficeライクにお絵かきできるコントロールを探しています。

実はVisioのDrawing Control(ActiveXベース)がやりたいことを網羅しているのですが、
アプリケーションを動作させる全ての端末にVisioを入れなければいけないので
泣く泣くあきらめました。
URLリンク(www.c-sharpcorner.com)

実行環境が無料で何か良いコントロールをご存知の方は
お教え頂けますでしょうか。よろしくお願いします。

684:デフォルトの名無しさん
08/08/23 22:54:37
VC++2005EEとForm(.NET2.0)で作ったアプリを配布したいのですが
どのような配布形式が一般的でしょうか?
VS.net2003bootstrapper plug-inのようなものがあれば使いたいです。

685:デフォルトの名無しさん
08/08/24 02:37:40
.NET2.0はかなり普及してるし、そのままでも良いとは思う。

必要ならこの辺を参考に
URLリンク(dobon.net)

686:DD
08/08/25 18:12:57
>>682
PageIndexで表示したいページを設定できることは分かっております。
問題なのは、DataBoundイベントでGridView1.DataKeys[i].Valueをループで検索した場合、
現在のPageIndex内のデータしか検索できないのです。
やりたいのは、全てのページを検索し、ヒットしたらそのページを表示することです。
DataBoundイベントではなく、何か別のイベントで検索する必要が
あるのではないかと思うのですが、
そのイベントが何なのかが分かりません。
どのようにしたら良いのでしょうか?

687:デフォルトの名無しさん
08/08/25 22:01:53
GridViewではなく、DataSource自体をぐるぐる回って調べていくとか。
泥臭いかw

688:DD
08/08/27 13:39:15
>>687
例えばDataSource自体をぐるぐる回って調べるとしたら、
どのイベントを捕まえればよいんでしょう?
実はそれをやろうとしてみたんですが、どのイベントで処理すればよいのか
分からなくて・・・。


689:デフォルトの名無しさん
08/08/27 23:57:48
一端DataViewに取って、後はそれ使えば?
常識的に考えて並びは一緒だから、現在のページ×1ページあたりの行数+indexで行けるハズ

690:デフォルトの名無しさん
08/08/28 10:34:42
>>687
泥臭いも何もそれが正しいやり方だと思うんだが。
>>688
イベントって、Button1のクリック以外に何があるん?
GridViewのDataSourceにセットしたものがDataTableオブジェクトだった場合、
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
If e.Row.RowIndex = -1 Then Return
If e.Row.Cells(1).Text.Contains(Me.TextBox1.Text) Then
' 検索ワードが入っている行の背景を緑に
e.Row.BackColor = Drawing.Color.LightGreen
End If
End Sub

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim rIndex As Integer
Dim tbl As DataTable = CType(Me.GridView1.DataSource, DataTable)
For rIndex = 0 To tbl.Rows.Count - 1
If tbl.Rows(rIndex)(1).ToString().Contains(Me.TextBox1.Text) Then
' 検索ワードが見つかったらループから抜ける
Exit For
End If
Next
' ページインデックスを算出
Dim pIndex As Integer = rIndex \ Me.GridView1.PageSize
' GridViewに算出したページインデックスをセット
Me.GridView1.PageIndex = pIndex
' 適応実行
Me.DataBind()
End Sub

691:DD
08/08/28 18:27:18
>>689
一端DataViewに取る、その方法が分からないんです(T_T)
そこのところ、ご教授願えないでしょうか。

>>690
Dim tbl As DataTable = CType(Me.GridView1.DataSource, DataTable)
とありますが、当方C#なもので、よく意味が分かりません(^^ゞ
C#で書くと
DataTable tbl = (DataTable)GridView1.DataSource;
なのかな、と思って試してみましたが、GridView1.DataSourceがNULLでうまくいきませんでした。


692:DD
08/08/28 18:42:28
>>689
>>690
おかげさまで解決いたしました!
以下のコードでDataTableに取り出すことが出来ました。
DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
DataTable table = dv.Table;
丁寧な解説、どうもありがとうございました。


693:デフォルトの名無しさん
08/09/01 20:47:23
C#で作ったプログラムからExcelを操作するプログラムを作りたいのですが、
Excelを操作する方法についてインターネットで調べてみると
どうやらExcelのバージョンによって参照設定するCOMってやつのバージョンが違うみたいです。

今作ってるプログラムをそのまま実家にメールで送って使ってもらう予定なのですが、
COMのバージョンが違うと正しく動かない可能性もあるのでしょうか?

使う予定の機能はExcelを読み込んで決まった位置に値を書き込むぐらいなんですが、
不具合を起こしにくいコツなどがあれば教えてください。

694:デフォルトの名無しさん
08/09/01 21:33:36
> 不具合を起こしにくいコツ
.NETでOfficeのCOMを利用しないというのが一番の対策じゃないかw
xlsファイルなどを直接操作できるライブラリを使うのがお勧め

695:デフォルトの名無しさん
08/09/01 21:40:40
>>694
すみません、できれば.NETを使用することを前提にお願いします。
COMって、自分で作ったdllみたいにReflectionで動的に探してきたりはできないんでしょうか?

696:デフォルトの名無しさん
08/09/01 22:17:30
それはできる。
でもメンバアクセスまで全部リフレクションでやる羽目になる。

悪いことは言わないからせめてVB.NETにしとけ。


697:デフォルトの名無しさん
08/09/01 22:59:19
>>696
ありがとうございます。
とりあえずGoogleってた結果、
Type.GetTypeFromProgID()というのを見つけたので実装はできそうです。

VBを1から勉強するかは後で考えるとして、
COMを動的参照するときって、普通はどういうクラスのどういうメソッドで参照先dllを探すのですか?

今までは自分で作ったdllを動的参照することしかしたことがなかった上、
インターフェースは静的に参照してそれを実装したクラスをReflectionで見に行く
ってことしかしたことがないので、COMの一般的な探し方を教えてくれませんか?

名前はともかくとして、COMのdllがある場所ってどうやって調べるんですか?

698:デフォルトの名無しさん
08/09/01 23:11:05
>>697
レジストリ(HKCR)を探せば見つかるが、プログラミング目的では普通やらない。
みんなProgIDとかClsIDとかで識別するから。

それに、DLLなら直接読み込んでオブジェクトを作ることも可能だが、
EXEに実装されているとどの道COMのAPIを介さないといけない。

699:デフォルトの名無しさん
08/09/02 00:19:01
>Type.GetTypeFromProgID()
を使うんだからおかしなことを考える必要はない。

問題は、インターフェイスを参照できないから、
メソッド呼び出しとかまですべてリフレクションでやらなきゃならないこと。


700:DD
08/09/02 11:03:35
>>697
とりあえず、VC#2005なら、ソリューションエクスプローラーの参照設定右クリックから
参照の追加。
COMタブを選択して、Microsoft Excel XX.X Object Library を選択して
OKボタンクリック。
これで一応使える。
COMオブジェクトは最後に必ず開放。こんな感じでどうでしょう。

/// <summary>
/// COM オブジェクトの参照カウントを解放する
/// </summary>
/// <param name="comobj">COMオブジェクト</param>
private void ReleaseComObject(Object comobj)
{
    // COMオブジェクトだったら
    if (comobj != null && System.Runtime.InteropServices.Marshal.IsComObject(comobj))
    {
        try
        {
            System.Runtime.InteropServices.Marshal.ReleaseComObject(comobj);
        }
        catch { }
        finally
        {
            comobj = null;
        }
    }
}



701:デフォルトの名無しさん
08/09/02 12:14:10
>>700
それだと複数バージョンのExcelに対応できないだろ>>693読め。

702:DD
08/09/02 13:11:52
>>701
あ、その通りですね(^^ゞ
以前Excelを扱った時はSpreadsheetGearを使ったので
COMを使った操作は良く分からないです。。。
サードパーティのライブラリを使用したくないとのことですので
これは使えませんね。
お役に立てずm(__)m

703:デフォルトの名無しさん
08/09/02 15:25:27
> comobj = null
意味ないじゃんw

704:DD
08/09/02 15:26:49
>>703
ですね(^^ゞ
はった後私もそう思いました。

705:デフォルトの名無しさん
08/09/02 19:07:53
>>701
バイナリになってしまえば問題ないんだよ。
「複数バージョンのExcelに対応できない」のはあくまで開発環境のみ。

一部バージョンが違うと例外が発生するメソッドがあったりするけど、
そこだけ個別に対応すれば問題ない。


706:697
08/09/02 21:11:51
いろいろなご解答ありがとうございます。

今回は複雑なエクセル操作をするわけではないので、
すべてリフレクションでやるクラスを作って、それを使いまわそうと思います。
ありがとうございました。

707:デフォルトの名無しさん
08/09/02 21:33:39
VBでクラスライブラリ作った方が簡単だと思うけどな。

708:デフォルトの名無しさん
08/09/02 23:26:51
>>705
え?まじで?
うっそーん?


709:デフォルトの名無しさん
08/09/04 20:20:35
VBAではセルの文字列の色をCellsのCharactersで調べられるのですが
.NETではどうればいいのでしょうか?

msdnにはRangeにCharactersがあるのですが
書いてみると定義がありませんと
エラーがでます。
using Excel = Microsoft.Office.Interop.Excel;

var xls = new Excel.Application();
var book = xls.Workbooks.Open(略
var rng = (Excel.Range)book.sheet.Cells[1, 1];

こんな感じでRangeクラスを取得してます。
ちなみにVS2008SP1を使っています。

710:DD
08/09/08 10:36:38
>>709
rng.Font.Color
で取得できるのでは?

711:709
08/09/08 19:52:53
>>710
すいません、質問の内容を微妙に間違えてました。
取得したいのは文字列のn番目の文字の色なんです。
Characters(4, 1).Font.ColorIndex
と書くとVBAでは4文字目の色の取得や設定が
出来るんです。

それだと多分セルに設定された文字列の色になるんですかね?

712:デフォルトの名無しさん
08/09/08 21:09:12
net導入するときはVB6を残したままでもいいですか?

713:DD
08/09/09 11:55:55
現在Visual Studio 2005 C#で以下のようなことを実現したいと考えております。
DropDownList(値にはIDが入っている)で選択した項目に一致するレコードをGridViewに表示する。
DropDownListにはALLという項目があり、これを選択すると
すべてのレコードを表示する。
このようなことをやりたいのですが、どうやったらいいのか分かりません。
現状ではALLを静的に追加しており、その値は0となっています。
また、GridViewのデータソースにSqlDataSourceを割り当て、
SqlDataSourceのSelectParameter(ID)にDropDownListの
SelectedValueを設定し、ALL以外の項目を選択した場合は
正常に動作しています。
どなたかご教授ください。

714:DD
08/09/09 12:06:29
自己解決しました。
URLリンク(bunise.seesaa.net)
このページを参考にしてやってみてはいたのですが、なかなかうまくいかず
質問させていただきました。
結局は、SqlDatasourceのCanselSelectOnNullParameterをFalseにするのを
忘れていただけでした(^^ゞ
お騒がせいたしました。

715:デフォルトの名無しさん
08/09/09 23:36:55
.NET2005環境を利用しています。

Private Sub ShowMsgBox(ByVal PromptText As String, Optional ByVal Type As Integer = 0, _
Optional ByVal Title As String = "")
に対して、配列CmdArgsの1番目(0番目ではない)~3番目の要素を
引数として渡したいのですが、2番目・3番目の要素は省略される可能性があります。

呼び出しについて例としてPerlで書くと、「$ShowMsgBox(CmdArgs[1..$#CmdArgs]);」のように
不定要素数の配列をインデックス1から最後まで指定して投げることが出来ますが、
VBではどのような形で呼び出せばいいでしょうか。

要素数を判別して、条件毎に呼びだし方を変更するしかないでしょうか。

716:デフォルトの名無しさん
08/09/09 23:58:56
>>715
ShowMsgBox(ParamArray args as Object())でも多重定義しとくとか。
まあどのみちその中で要素数を調べてToStringして別のシグネチャのShowMsgBoxを
呼び出すコードを書くわけで、同じといえば同じかもしれないけど。

っていうか趣味の問題かもしれんがOptionalは使わない方がいいんじゃないか?

717:715
08/09/10 00:20:30
>>716
なるほど、即レスありがとうございます。

要素数判定で呼び出し方を返る、という形で書いてみましたが
かなり冗長な呼び出し方になってしまい、本末転倒な感じがしてきました。

If CmdArgs.Length > 3 Then
ShowMsgBox(CmdArgs(1), CmdArgs(2), CmdArgs(3))
ElseIf CmdArgs.Length > 2 Then
ShowMsgBox(CmdArgs(1), CmdArgs(2))
Else '←必ず0、1番目の要素は定義されている
ShowMsgBox(CmdArgs(1))
End If

ShowMsgBox側で配列としてまとめて受け取ってから、
処理した方が良さそうですね・・・。

>Optionalは使わない方がいいんじゃないか?
C感覚で勉強中だったので、多重定義が可能なことを忘れていました。
もう少し勉強してみます(`・ω・´)

718:デフォルトの名無しさん
08/09/10 01:26:13
ドレミファソラシドの周波数を算出するため、十二平均率
URLリンク(ja.wikipedia.org)
の周波数比を計算させたいのですが、ExcelのPOWER関数のような累乗根計算の方法はありませんか?

719:デフォルトの名無しさん
08/09/10 01:36:09
Math.Pow

720:デフォルトの名無しさん
08/09/10 02:17:05
>>719は累乗と累乗根の違いすら分かってないから参考にしないように。

721:デフォルトの名無しさん
08/09/10 03:17:17
ニヤニヤ

722:デフォルトの名無しさん
08/09/10 08:55:11
Math.Pow( >>720, 1.0/12.0);


723:デフォルトの名無しさん
08/09/10 11:37:07
>>720
やる夫

724:718
08/09/10 12:12:07
>>719,722
ありがとうございます!
以下のようにしたら十二平均律の周波数を算出できました。

Dim i As Integer, fr(12) As Double
For i = 0 To 12
    fr(i) = Math.Pow(Math.Pow(2, i), 1.0 / 12.0)
Next

725:722
08/09/10 12:35:12
>>724
素直に
Math.Pow( 2.0 , i / 12.0)
と書くべし

726:デフォルトの名無しさん
08/09/10 12:49:08
ワロタ

727:デフォルトの名無しさん
08/09/10 12:53:46
素直なのは>>724なんじゃない?
整理したら>>725だけどさ

x  _
 √a  = a^(1/x)

であるから、

x  __
 √a^b = (a^b)^(1/x)

となり、十二平均律では、x = 12, a = 2, b = (1から12)となるので、

12 __
 √2^b = (2^b)^(1/12)

bをiとして、

2^i = Math.Pow(2,i)

これにより、

Math.Pow(Math.Pow(2, i), 1.0 / 12.0)

728:デフォルトの名無しさん
08/09/10 13:02:47
意味が分からずに言われたとおりに簡略化して書いてる奴って職場だとホント困るんだよな・・・。

729:デフォルトの名無しさん
08/09/10 13:04:56
中学数学でしょ

730:722
08/09/10 13:09:00
主観入ってたわ。
頭の中で
x  __
 √a^b = a^(b/x)
になってた。

というわけで、>>725を訂正して、
Math.Pow()を2回呼ぶより、整理して1回にしたほうが良いと思う。
分かりにくかったら無視してくれ。

731:デフォルトの名無しさん
08/09/10 13:15:30
Math.Powは見るからに処理長そうだしねえ
慣れるまでは理解するまでベタ書きが無難だが
慣れたら呼び出す回数を減らすことを勧めたい

732:デフォルトの名無しさん
08/09/10 13:44:50
問題にはならないだろうけど、一応精度の問題もある

733:デフォルトの名無しさん
08/09/10 17:19:53
ここぞとばかりにOOoのMath使ってみたんだけど
ほんとハナクソだな・・・('A`)モウツカワネ

URLリンク(www1.axfc.net)

734:デフォルトの名無しさん
08/09/10 17:30:52
404 Not Found

735:デフォルトの名無しさん
08/09/10 17:32:29
すまん、リファラ読んでるっぽいな。
URLリンク(www1.axfc.net)

736:デフォルトの名無しさん
08/09/10 20:34:53
>>727
発想が逆立ちしてるよw
数学できない子にありがちだけど、問題を自分でわざわざ複雑にしてるよ。

12音階というのは2(1オクターブ)を対数軸上で12等分したもの、
というのが全ての出発点で12乗根√2っていうのはそこから導出した値に過ぎないんだよ。

対数軸(y = log(x))上の等差数列はxの世界では等比数列になる、って考えてもいいけど
普通は直感的に基準となる音からn番目の音の周波数は2の(n/12)乗倍だってわかるだろ。

737:デフォルトの名無しさん
08/09/11 16:35:43
すみませんが、質問です。

Googleなどの検索エンジンで .NET の情報を効率よく集めるには、どのような
検索語にすればよいでしょうか?

ただ入力すると、.netというドメイン名にばかりヒットしてしまいます。


738:デフォルトの名無しさん
08/09/11 16:40:29
>>736
>数学できない子にありがちだけど、問題を自分でわざわざ複雑にしてるよ。
>数学できない子にありがちだけど、問題を自分でわざわざ複雑にしてるよ。
>数学できない子にありがちだけど、問題を自分でわざわざ複雑にしてるよ。

739:デフォルトの名無しさん
08/09/11 16:43:02
検索エンジンの使い方までサポートする幅広いスレだな

せめてVBで検索しろ

740:デフォルトの名無しさん
08/09/11 16:53:14
>>739
ありがとうございます。C#で検索することにしました。
.NETは別にC#だけではないのですが、関係ないページばかり見つかるよりマシです。


741:デフォルトの名無しさん
08/09/11 16:55:30
いやVisualStudioだろ

742:デフォルトの名無しさん
08/09/11 17:14:38
VisualStudio は .NET だけじゃないんじゃ?

743:デフォルトの名無しさん
08/09/11 17:23:41
だから.NETと組み合わせるんじゃ?
でもVisualStudioじゃ取りこぼし多そうだがなあ

744:デフォルトの名無しさん
08/09/11 17:40:51
うん、組み合わせのつもりで言ったぞ
VisualStudio .NET 2005 +言語名なら確実だろう

745:デフォルトの名無しさん
08/09/11 17:45:11
マイクロソフトは一般名詞を商標にして
いつの間にか自社製品を示す言葉にするのが得意だからな。

746:デフォルトの名無しさん
08/09/11 17:54:08
そうだね。あれは本当に迷惑。
昔の話だけど .doc という拡張子は元々テキストファイルのものだったのに、
勝手に MS Word のものにされた。
Word という名前といい、いまだに腹が立つ。


747:デフォルトの名無しさん
08/09/11 17:56:00
それはそれとして、ノイズが混じらなくて、取りこぼしをなるべく少なくする
には、どんな検索語がいいかな。
VisualStudioは、ちょと取りこぼし多そう。


748:デフォルトの名無しさん
08/09/11 18:14:16
そろそろスレチじゃね
.NET資料の探し方とは言え、googleの検索仕様に左右される話題だし

749:デフォルトの名無しさん
08/09/11 18:31:12
正規表現を使うって発想がないWindowsの天下で
わざわざ正規表現を実装する検索サイトはないよな

あったら凄まじく便利なんだが

750:デフォルトの名無しさん
08/09/11 18:34:42
有るわけがない。
文化の問題ではない。

751:デフォルトの名無しさん
08/09/11 18:59:48
ここで正規表現が使える奴が居るかも怪しい

752:デフォルトの名無しさん
08/09/11 19:45:57
.NETにも正規表現クラスあるけどちょっと使い方がまどろっこしい

753:デフォルトの名無しさん
08/09/11 23:27:37
正規表現は一種のツールだからな。
プログラミングサイドで実装されてても、
OS側が環境として提供してくれないと・・・

754:デフォルトの名無しさん
08/09/11 23:44:32
>>746
外国だとテキストファイルに.docはマイナーだったって聞いている。
わざわざかぶること前提で.docに決めたわけなかろう。

755:デフォルトの名無しさん
08/09/12 00:04:36
少なくとも.NETはトップレベルドメイン.netとかぶること前提だけどな

756:デフォルトの名無しさん
08/09/12 09:57:40
しかし readme.doc は国内外を問わず添付されてた気が

757:デフォルトの名無しさん
08/09/12 10:03:53
拡張子の制約で使い勝手を縛るのはWindowsとhttpのMIMEtypeだけだよ。

758:デフォルトの名無しさん
08/09/12 10:26:40
知ったようなことを言う


759:デフォルトの名無しさん
08/09/12 11:59:51
反論すら成立してない

760:デフォルトの名無しさん
08/09/12 19:55:34
そういやマックのファイルっていまだにマックバイナリ付いてるの?

761:デフォルトの名無しさん
08/09/13 09:07:27
ビジュアルベーシック.NETでOSは作れますか???

762:デフォルトの名無しさん
08/09/13 09:09:50
>>761
少なくともバカは治せない

763:デフォルトの名無しさん
08/09/14 03:50:40
>>760
マックバイナリが何なのか理解してないね

764:デフォルトの名無しさん
08/09/14 12:43:56
>>763
意味が分からない。
どうせ絡むならはぐらかしたような言い方せずに全部言えよ。
「何なのか理解していない」のが君の方でなければなw

765:デフォルトの名無しさん
08/09/14 12:51:38
調べればいいだろ
「いまだに」とかつける勘違い名人には教えません

766:デフォルトの名無しさん
08/09/14 13:04:24
>>765
一般的事実なら調べれば分かるかもしれないが、
馬鹿なお前さんの独善的「思い込み」の意味をどう調べろって言うのかね。

本当、最近こういうセカイ系的メンタルの奴が多くて困る。

767:デフォルトの名無しさん
08/09/14 13:08:06
というか、何も具体的なこと言えないから最初から人に絡むなよ。

768:デフォルトの名無しさん
08/09/14 23:24:20
C++スレで自分では答えられないザコから誘導されてきました


VC++ 2005 Express
自分のアプリから、別のアプリが起動してるかどうか見たい



207 名前:デフォルトの名無しさん[] 投稿日:2008/09/14(日) 20:48:40
iniファイルは釣りでした。
起動してるプロセス(リスト)の取得教えて

210 名前:デフォルトの名無しさん[sage] 投稿日:2008/09/14(日) 21:59:34
くだすれ.NET逝け

769:デフォルトの名無しさん
08/09/15 03:05:51
うん。見れば

770:デフォルトの名無しさん
08/09/15 04:23:42
>C++スレで
やっぱりC++/CLIとC++の区別が付いてなかったのか、VIPに逝け

771:デフォルトの名無しさん
08/09/15 19:45:31
質問です。
WINDOWS XP使用で、コンパイラはBorlandC++compiler5.5です。
インストールしたあとパスの設定で、
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Common Files\GTK\2.0
とあったところに\bin;c:\Borland\Bcc55\binと付けました。
なのに、実際コマンドラインでメモ帳を開こうと>C:\WINDWS\NOTEPAD.EXEと打ち込んでも、
指定されたパスは見付かりませんとでます。(NOTEPAD.EXEはCディスクの中のWINDWSに入れてあります。)
他にもカレントディレクトリを変えようとして、>cd ○○と打っても、
確かにあるはずなのに指定された(ryになってしまいます。
誰か助け手ください(涙)

772:771
08/09/15 20:08:40
スレ違いのようでしたので、他に聞いて見ます。
すみませんでした。

773:デフォルトの名無しさん
08/09/16 22:58:28
質問ですお願いします。

C#でUDP通信するソフト作ってるんですが、
通信時の暗号化に3DES使おうとプラグロミングして
reflectorで覗いたらキー丸見えで萎えました。

クラックを防げる暗号化ってどう実装したらよいでしょうか
制限事項としては
(制限1)クライアントで暗号化したものをサーバで複合できる(逆も然り)
(制限2)上記制限1のため、暗号化キーは固定する必要あり?

3DESのキーをまた暗号化してしまうとか、
キー生成アルゴリズムを埋め込んで、キー自体を持たないとか
外部にキーを持たせてdll参照するとか色々考えたんですが
結局トレースされたらばれてしまうのでティンときませんでした。

道かよろしくお願いします。


774:デフォルトの名無しさん
08/09/16 23:04:49
3DESじゃなきゃだめなの?
公開鍵じゃだめなの?

775:デフォルトの名無しさん
08/09/16 23:09:06
公開鍵も考えたんですが、ようは、誰かが作った偽クライアントがサーバに接続されるのを防ぎたかったので
鍵自体バレると・・・と思ったけど

今よく考えたらreflectorでソース見れる時点で暗号化どうのこうののまえに偽クライアントは作れてしまいますね。。。
.netで作るのをやめる事にします。

どうもありがとうございました。


776:デフォルトの名無しさん
08/09/16 23:42:59
これは酷い思考停止

777:デフォルトの名無しさん
08/09/16 23:44:50
ネイティブで作ったって一緒。
まあ解析しにくいことは否定しないが。

本当に安全にやるなら、SSLとかでやってるのと同じような仕組みを作らにゃならん。


778:773
08/09/16 23:59:23
すみません775は私です。

私は生産者側なのでクラックにはあまり興味ないですが、.NETの形態上ソースが見えてしまうのは仕方がないんですよね。
今まで、いかに破られない認証をするかを考えてきましたが、認証の部分だけ省いてソースをコピペしたらちゃんと動いてしまうんですよね。

生産対象物がきわめて専門的なBtoBのようなソフトであれば、ソースをほしがるような客先は少ないです。
逆に、保守のことを考え、わざわざソースをセットで渡してしまうこともありますが、
たとえばネットゲームのような、完全なBtoCまたはCtoCの形を取るソフトであれば、不特定多数のクライアントがいるわけで
そのなかには必ず中身を解析したり、場合によっては不正な手順でサーバにアクセスする人たちが出てきます。

そういった人たちのモチベーションに反比例するのが解析の難しさ、めんどうさだと思います。
もちろん従来のネイティブコードでクラックできないわけではないですが、.NETよりはめんどうです。
そうした意味では、.NETという、言ってしまえば実行ファイルのソースが公開されているプラットフォームを避けるのも一つの手かなと思いました。

長くなりましたが、つまり、知りたいことは、
1).NETでClient/Server作ってる人は、どういう実装をされてるんでしょうか。
2)そもそも.NETは使わないんでしょうか。

度々すみませんがもう少し知恵をお貸しください。

779:デフォルトの名無しさん
08/09/17 00:04:57
だから本当に確実な認証が必要なら、パスワードか証明書かICカードかUSB鍵か、
とにかくソースを解析しても不可能な方法をとるわけだよ。

>いかに破られない認証をするかを考えてきましたが、認証の部分だけ省いてソースをコピペしたらちゃんと動いてしまうんですよね。
それってどんな認証だよっていうか認証って言わないだろそんなの。


780:デフォルトの名無しさん
08/09/17 00:12:17
ん?
ひょっとして接続が許可された人間でも偽クライアント(というかその許可情報)を使用した接続とか
できないようにしたいって言ってる?
そんなことは基本的には不可能だよ。

たとえばソース解析するまでもなくそのクライアントアプリをコピーして別のマシンで動かした場合はどうなるんさ?
※パスワードやらその他認証用の情報も基本的に同じようなもの


781:773
08/09/17 00:12:45
>>779
すみません話を混ぜて書いてしまいました。
>いかに破られない認証をするかを考えてきましたが、認証の部分だけ省いてソースをコピペしたらちゃんと動いてしまうんですよね。
これは、キーさえわかっていれば他の部分コピペして新たに偽クライアント作ったらサーバ側からは偽クライアントだとはわからないという意味です。

パスワードか証明書かICカードかUSB鍵がいらない偽クライアントが出来てしまえばサーバ側では対処できないだろうという意味で書きました。
ネットゲームのBOTツールとかがそれにあたるんでしょうか。

782:773
08/09/17 00:15:19
>>780
そうです!それが言いたかったんです。
クライアントアプリの複製は問題ないです。

クライアントアプリを騙って不正なパラメータでアクセスをされるのを防ぎたいんです。

783:デフォルトの名無しさん
08/09/17 00:27:03
不可能。
だってクライアントが正しいかをサーバ確認できるのは通信内容によってのみだから。
基本的にクライアントプログラムが本物かを「確実に」確認する方法はない。


784:773
08/09/17 00:42:33
だとすると、暗号化の議論の中では邪道とされている、処理の隠蔽しか暫定的な回避策は無いですね。
.NETには不可能ですが。

逃げにしかなりませんが、Client側はネイティブな別の言語に移植する事にします。
また、暗号化のクラック対策としては、定期的にClient/Serverともアップデートをかけて、
実行前にキーを変更する仕組みにしようと思います。

勉強になりました。
ありがとうございました。

785:デフォルトの名無しさん
08/09/17 00:47:00
つーか難読化とか耐タンパとかでググれって誰も言わないのは何でなんだぜ?

786:773
08/09/17 01:03:15
>>785
そんなのがあったのですね。勉強不足でした。

早速フリーの難読化ソフトで実験してみたら、実行は出来るのにコンパイルが通らないソースが出来上がり感動しました。
さすがに定数は難読化されなかったですが。
ソフトの種類によっていろいろなのかな。

ちょっと色々調べてみます。ありがとうございました。

787:デフォルトの名無しさん
08/09/17 01:42:37
本格的には使いにくいからじゃね?


788:デフォルトの名無しさん
08/09/17 14:36:03
javaseで掲示板へ投稿するスクリプト作れますか?
ポストリクエストを少々いじるのはjavaeeになるのでしょうか?
よろしくお願いいたします


789:デフォルトの名無しさん
08/09/17 19:48:25
ここ数件の 書き込みに 対して スレタイ 欲嫁 と 言ってやりたい


790:デフォルトの名無しさん
08/09/17 20:29:49
Form2が閉じた時にForm1を更新するにはForm.Closedイベントを使えばいいのはわかるんだけど、
Form1から、Form2が”閉じてる”て状態を捉えるにはどうすればいいのですか?
Form2.Enabled = Falseじゃ駄目みたいなんだけど
VB.NETです

791:デフォルトの名無しさん
08/09/17 21:02:32
Visible

792:デフォルトの名無しさん
08/09/17 21:53:24
IsDisposed

793:デフォルトの名無しさん
08/09/17 22:10:00
どういう動作を意図してるかわからんけど
閉じてるかどうか判断して閉じてたら開きなおすならこんな漢字化

Public Class Form1

  Dim f2 As Form2 = Nothing

  ''' <summary>
  ''' Form2をShowする
  ''' </summary> '''
  Private Sub ShowForm2()
    'Form2をはじめて開く場合
    If f2 Is Nothing Then
      f2 = New Form2
    Else
      'Form2が閉じてた場合
      If f2.IsDisposed Then
        f2 = New Form2
      End If
    End If
    f2.Show(Me)
    f2.Activate()
  End Sub

End Class


794:デフォルトの名無しさん
08/09/17 23:11:49
>>790
Application.OpenFormsで現在開いている(表示されている)フォームのコレクションが取得できる。
こんなかに、Form2が入っているかどうか見ればいいかと思われる。

795:デフォルトの名無しさん
08/09/17 23:21:14
790です
色々ありがとうございました
勉強になりました
意図していた動作は、Form1にある、Form2をshowするボタンを、Form2が開いてる間は無効にする、というものでした。


796:デフォルトの名無しさん
08/09/17 23:42:27
>>795
それだと状態を常に監視する為にコールバックしないといけないような

というかそもそもその動作ならForm2が開いているかどうかは関係ないよ

button1が押されたときに
button1.Enabled=False

Form2が閉じるときに
DirectCast(Me.Owner, Form1).Button1.Enabled = True


797:796
08/09/17 23:44:17
途中で送信してしまった
スマソ

Form2を開くボタン(仮にbutton1)のスコープをForm2から参照可能にしておいて
>>795みたいなかんじでやれば、Form2の状態など監視せずにスマートにいけるんじゃね

798:797
08/09/17 23:45:59
安価間違いグダグダスマソorz

×>>795みたいなかんじ
>>796みたいなかんじ

799:デフォルトの名無しさん
08/09/17 23:46:33
>>795
そういうのはForm1の適当なメソッドにForm2の適当なイベント(例えばFormClosed)を
紐付けするんだよ。

VBならForm2の参照をWithEventsで持つ方法でもいい。

というか、くだすれか何か知らんけど、
こんなレベルの話は入門書を一冊軽く斜め読みすれば分かることで
掲示板で人に聞くような内容じゃない。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch