09/11/19 10:06:09
前スレ
VB.NET質問スレ(Part31)
スレリンク(tech板)l50
テンプレは >>2-4 あたり
2:デフォルトの名無しさん
09/11/19 10:07:14
MSDN
URLリンク(msdn.microsoft.com)
どぼん!のVB道のトップページとTipsページ
URLリンク(dobon.net)
URLリンク(dobon.net)
Insider.NET
URLリンク(www.atmarkit.co.jp)
宇宙仮面の C# プログラミング
URLリンク(uchukamen.com)
.NET TIPS
URLリンク(www.atmarkit.co.jp)
緑のバイク ★ 初めてのC# プログラム全般
URLリンク(homepage3.nifty.com)
VB.NETとC#でデザインパターン
URLリンク(hccweb1.bai.ne.jp)
匣の向こう側
URLリンク(www.ne.jp)
WisdomSoft
URLリンク(wisdom.sakura.ne.jp)
じゃんぬねっと
URLリンク(jeanne.wankuma.com)
どっとねっとふぁん - C# Tips And Samples -
URLリンク(homepage3.nifty.com)
URLリンク(dotnetfan.org)
C#プログラミングTips
URLリンク(www.atmarkit.co.jp)
3:デフォルトの名無しさん
09/11/19 10:07:41
CodeProject
URLリンク(www.codeproject.com)
the GotDotNet Home Page
URLリンク(www.gotdotnet.com)
KEN's .NET
URLリンク(www5b.biglobe.ne.jp)
Cetus Links: 19,498 Links on Objects and Components / .NET
URLリンク(www.cetus-links.org)
HIRO's.NET
URLリンク(vbdotnet.fc2web.com)
@IT:特集 .NET開発者のためのオンライン・リソース・ガイド
URLリンク(www.atmarkit.co.jp)
.NETでいきまっしょい!
URLリンク(santamartadotnet.hp.infoseek.co.jp)
これがほしかった!厳選サンプルツール集
URLリンク(anetm.com)
ぬーやんのdotNET講座
URLリンク(www.geocities.jp)
PINVOKE.NET
URLリンク(www.pinvoke.net)
WinAPI Database for VB Programmer
URLリンク(www.winapi-database.com)
4:デフォルトの名無しさん
09/11/19 10:08:14
Windows Api programming in C# , VB.NET, and VB6. Examples of P/Invoke and DllImport with Source code
URLリンク(custom.programming-in.net)
CodeZine
URLリンク(codezine.jp)
ConvertCSharp2VB
URLリンク(www.kamalpatel.net)
@IT:.NET Tools
URLリンク(www.atmarkit.co.jp)
SharpLibrary Redirector
URLリンク(www.sharplibrary.com)
MSDN アカデミック アライアンス 技術資料
URLリンク(www.microsoft.com)
「300 秒でズバリ !!」&「10 行でズバリ !!」シリーズ
(VS2005) URLリンク(www.microsoft.com)
(VS.NET 2003) URLリンク(www.microsoft.com)
PAPA'n VB
URLリンク(papanvb.i-love-vb.net)
(旧コンテンツ) URLリンク(www.mitene.or.jp)
VB レスキュー花ちゃん
URLリンク(www.bcap.co.jp)
VB中学校
URLリンク(homepage1.nifty.com)
初心者から中級者のためのVB
URLリンク(www7b.biglobe.ne.jp)
テンプレここまで
5:デフォルトの名無しさん
09/11/19 13:32:58
すみません。質問です。
VB.NETにおいて、メインメニューから、別のメニューに移る場合の
フォームを開いたり閉じたりするコードは、どのようなものをかいたら
いいのかを教えていただきたいです。
以前、テキストファイルを開いたり、書き込んだりする際に自分で
調べていると、入出力ステートメント(VB.NETではVB専用関数)を用いる方法と、
ファイル・システム・オブジェクトを使用する方法、それとは別に、
.NET Frameworkのクラス・ライブラリを用いる方法がある。
という感じでいろいろな書き方や概念がある事を知ったのですが、
サンプルコードだけではなく、こういう感じに説明がついているサイトを
教えていただきたいです。
なるべくなら、移植性などを考えると.NET Frameworkのクラス・ライブラリを
用いてのコードがいいのですよね?
6:デフォルトの名無しさん
09/11/19 13:44:51
「zedgraph」というクラスライブラリを使ってグラフを描写する
ユーザーコントロールを作りたいと思っています
テストとしてユーザーコントロールを貼り付けたフォームに、
textboxとbuttonを貼り付けて、textboxに入力した値を表示させ
ようと試してみたのですが、値が渡っていてもグラフ自体が表示
されません。グラフをリロードさせるためにはどうすればよいの
でしょうか。よろしくお願いします。
7:デフォルトの名無しさん
09/11/19 14:49:04
>>6
内容は若干異なるけれど、このページが参考になるのではと思います。
URLリンク(www.atmarkit.co.jp)
8:デフォルトの名無しさん
09/11/19 16:52:50
質問です。
フォームを閉じる
URLリンク(dobon.net)
このサイトを見ていると、アプリケーションを終了する際のコードは、
スタートアップフォームに指定しているフォームにて
Me.Close() と記述するか、Application.Exit() を記述する、
という事ですが、これは内部の仕様の関係でどちらを使った方が良い
というのはあるのでしょうか。
ちゃんと終了できなかった際の事も考えて、こういう記述にしておく方法も
あるのではとか思ったのですが、ここまで終了処理には気を配る必要は
無いのでしょうか。
Me.Close()
Application.Exit()
何度かソフトを起動したり終了したりするたびに、その都度メモリが
圧迫されていくという可能性が気になりましたので。
9:デフォルトの名無しさん
09/11/19 17:22:38
普通はCloseで十分
10:デフォルトの名無しさん
09/11/19 17:29:57
プロセスが終了すればメモリは開放される。
気にするな。
11:デフォルトの名無しさん
09/11/19 17:49:58
>>7
ありがとう御座います
取り敢えずやってみます
12:デフォルトの名無しさん
09/11/19 21:11:54
>>9
>>10
ありがとうございます。
closeを使ってコーディングしたいと思います。
13:デフォルトの名無しさん
09/11/19 21:17:51
VBは6から.NETに変わるにおいて大幅な仕様変更&サポートの打ち切りがあり、
さらに、バージョンアップごとに言語の仕様変更がある状況です。
あるソフト開発会社は、これが原因で.NETでの開発は見送り、javaに
切り替える方向で考えている、という方針を聞きました。
VBは、javaなど他の言語に比べて仕様変更が多く、サポート期間が
短い言語なのでしょうか?
14:デフォルトの名無しさん
09/11/19 21:23:37
そうです
C#はむしろそれを売りにしています
VBはそれに追従している感じです
15:デフォルトの名無しさん
09/11/19 21:28:30
>>14
レスありがとうございます。
一つ、念のために確認しておきたいのですが、「C#はむしろそれを売りに
している」というのは、「仕様変更が少なく、サポート期間が長い」という
意味合いでしょうか?
16:デフォルトの名無しさん
09/11/19 21:33:10
言語仕様を拡張しまくって実用最先端を突っ走るということ
17:デフォルトの名無しさん
09/11/20 01:04:37
Labelに数値を表示しているのですが、
数値が変化した場合にそれまでの数値より上か下を判断して
BackColorを変えたいのですが、どのような方法が良いでしょうか?
前スレ998さんレスありがとうございます。解決しました。
18:デフォルトの名無しさん
09/11/20 01:04:57
このスレは、テンプレ以外価値のない書き込みばかりですね
19:デフォルトの名無しさん
09/11/20 05:33:34
>>13
>VBは6から.NETに変わるにおいて だろ
それまでのVB(6以下)と、VB.NETは別物と言っていいほど違う
.NETいちからやるならJavaやるって判断はまああるだろう
VBのサポート期間はかなり長かった
VB.NETの言語仕様の変更ってのはあんまり記憶にない
追加要素ってのはいっぱいあるが、それを変更というならJavaだってずいぶんと変わってきた
20:デフォルトの名無しさん
09/11/20 07:14:27
え? VB6 は Windows 7 でもサポートされますよ?
何言ってるんですか?
21:デフォルトの名無しさん
09/11/20 12:20:24
javaだって滅茶苦茶変わってるぞ。
22:デフォルトの名無しさん
09/11/20 14:32:03
>>16
そっちでしたか。ありがとうございます。
23:デフォルトの名無しさん
09/11/20 14:36:25
>>17
ラベルの数値が変化した場合に色を変えるのだから、
ラベルの数値を変更する(値を代入する)タイミングで、上か下かを判断し、
BackColorを変えるプログラムを記述する方法が適切だと思います。
なんらかの理由でラベルの値が取得できない(表示が文字であるなど)
のであれば、そのフォームのメンバ(数値型変数)にそれに格納し、
その値で判断するしかないでしょう。
24:デフォルトの名無しさん
09/11/20 14:57:56
>>19>>20>>21
ご回答ありがとうございます。
java の場合も、リファレンスには、使用が推奨されないクラスが結構
ある事から、言語の仕様変更は多くあることが推測されます。
検索してみると、Win7でもVB6がサポートされるということでした。
ありがとうございました。
ハードウェアの性能と共に技術的な需要が変わっていくので
仕様変更は仕方が無いとしても、その言語のサポート期間が
気になっていましたが、VBの方もOSが変わってもサポートが続いて
いますので、それでの開発も問題なさそうですね。
25:デフォルトの名無しさん
09/11/20 16:38:52
開発環境はもうサポート終了だけどな
26:デフォルトの名無しさん
09/11/20 16:40:10
なにぃ~
27:デフォルトの名無しさん
09/11/20 19:25:38
セキュリティパッチも提供されないけどな
28:デフォルトの名無しさん
09/11/20 21:14:58
そんなもんどうでもいいよ
VB6プログラマがプログラム自体に作りこんだセキュリティホールのリスクの方が遥かに大きい
29:デフォルトの名無しさん
09/11/20 21:37:39
>>28
まったくもってはげしく同意
30:デフォルトの名無しさん
09/11/20 22:40:39
>>28-29
セキュリティホールって意味わかって言ってるのかそれw
31:デフォルトの名無しさん
09/11/20 22:44:40
?
32:デフォルトの名無しさん
09/11/21 00:43:06
セキュリティホールなんか誰でもいくらでも作れるじゃん
何もおかしくないけど
33:デフォルトの名無しさん
09/11/21 02:25:38
Multimedia Fusion 2が来月発売されるらしい。
マウス操作だけでゲームを制作できるソフト。
プログラミングの知識がなくても、RPG 、シューティング、アクション、パズル、
アドベンチャーなどほぼすべてのジャンルのゲームを制作できる。
作ったゲームを Windows で動作する実行ファイルに変換したり、
Web ブラウザで動く Java アプレットとしても出力可能。
OS 問わずに実行できる Java アプリに変換にすることもできる。
願わくば、豊富な時間に恵まれて、
これからプログラミングを始めようとしている諸君らが、
プログラムの勉強を思いとどまってくれますように。
URLリンク(www.forest.impress.co.jp)
>“Multimedia Fusion 2”は、豊富に用意されたオブジェクトをマウス操作で
>配置していくだけでゲームを制作できるソフト。キャラクターの動きなども、
>あらかじめ用意されたコマンドを組み合わせるだけで表現可能。
>プログラミングの知識がなくても、RPGやシューティング、アクション、
>パズル、アドベンチャーなどほぼすべてのジャンルのゲームを制作できる。
>製品版では、制作したゲームをWindowsで動作する実行ファイルへ変換できるほか、
>Webブラウザーで実行できるJavaアプレットとしても出力可能。
>Mac OSでも利用可能なJavaアプリケーションへ変換することもできる。
34:デフォルトの名無しさん
09/11/21 10:40:43
2回同じ内容を書いているところあたりで、頭が悪そうな印象を受けた。
35:デフォルトの名無しさん
09/11/21 12:23:17
>>30
何を言ってるのか分からない。
36:デフォルトの名無しさん
09/11/21 13:07:27
どなたかDelegateとInvokeの考え方を噛み砕いてもらえませんか?
VS2008のVB環境ですが理解しようと苦心しています。
いくつかサイトを見て
URLリンク(634.ayumu-baby.com)
とかは他よりかなり判り易い気して
「利用方法」部とかは判った気にはなるのですが
「サンプルコード」でコンストラクタ?何するPG??となり
最初からしっかり読もうと最初の「デリゲートとは」の部分で
関数ポインタ?委譲(コンポジション)??
とか、実際にコードを作るまでには至らない状況です。
ドラクエに例えて..とかとかネタで言いたい気もするんですが
なんかこの部分の考え方みたいなモノをどなたかレクチャーしてもらえないでしょうか?
助けて下さい、よろしくお願いします。
37:デフォルトの名無しさん
09/11/21 13:21:07
コンストラクタで疑問符が出ちゃダメだろう そこはデリゲート以前だ
38:デフォルトの名無しさん
09/11/21 13:36:24
まずクラスとかのオブジェクト指向関係をきちんとりかいしないとダメ
その上で、デリゲートやイベントについては本当の意味で理解するにはデザインパターンも必要かも
39:デフォルトの名無しさん
09/11/21 15:13:49
VB.NETの場合、通常はCallを記述したりしないのが流儀なんでしょうか
40:デフォルトの名無しさん
09/11/21 16:10:45
>>39
流儀ということは無いと思う。
ま、場合によっては複数人でそのコードを書く場合、引継ぎを考えて
そういったルールを設ける場合もあるかもしれないけれど。
もしエラーが起きた場合、どこで起きているかを確認する為、
必ず返り値を取得し、確認するというルールがあるというのも
きいたことはある。
41:デフォルトの名無しさん
09/11/21 17:10:41
例外使ってれば全く不要だけどな
42:デフォルトの名無しさん
09/11/21 17:12:57
何でもかんでも例外投げてりゃいい、ってもんじゃないけどな。
43:デフォルトの名無しさん
09/11/21 18:08:39
まあVB6のようにCallの有無で機能が変ったりしないからね。
意味のないものをわざわざ記述する意味は通常ないだろう。
44:デフォルトの名無しさん
09/11/21 18:41:46
&H00としたいんだけど&H0に変換されてしまう
&H0=&H00で合ってる?
45:デフォルトの名無しさん
09/11/21 18:47:13
うん。
46:デフォルトの名無しさん
09/11/21 19:08:23
ありがとう!
47:デフォルトの名無しさん
09/11/21 23:37:24
1秒ごとにタイマーでデータを更新してラベルに数値を表示するようになっているのですが、
文字を変更する際に、数値が変更前より上か下かでラベルの色を変えているのですが、
3秒後に元の色に自動的に戻るようにしたいのですが、どんな方法が良いでしょうか?
3秒未満にまた色の変更があったらそこからまた3秒をカウントしたいです。
たくさんのラベルの色を戻す処理が重なっても負荷が少なく、
フォームがフリーズしたような状態にならないようにしたいのですがどんな方法が良いでしょうか?
>>23さんありがとうございます。
48:デフォルトの名無しさん
09/11/22 01:31:24
>>47
メンバ変数か静的ローカル変数でカウンタ持ってタイマーのイベントが動く毎にカウントアップ
3回目が来たら色を元に戻せばいんじゃないかな?
途中で色が変わったらカウンタをクリアすればいいし
フォームを止めたくないならDoEvents書くかワーカスレッド作るとか
初心者なんで見当違いだったらすいません
というわけで質問させて下さい。
開発環境 :VB2005EE
データベース : SQLSERVER2005EE
接続はSqlClientを利用しています。
データベースに20万件の初期データを生成するのですが
処理開始から終了まで平均して5分ほどかかります
大雑把に処理内容としては、SqlConnectionで接続して
SqlCommandからInsert文をパラメータ差し替える形で発行します
課題として提出したらもうちょっと早くなるようにしてみてと
言われてしまい途方にくれています
やはり作りが問題なのでしょうか?
こういった場合どうするのが一般的なのでしょうか?
また、あくまでVBから実行するようにとのことでストアドプロシージャは
使えません
微妙な内容で申し訳有りませんが宜しくお願いいたします
49:デフォルトの名無しさん
09/11/22 02:28:05
大量データのINSERTならBULK INSERTを検討してみるとか
URLリンク(msdn.microsoft.com)
後、トランザクションは明示的に指定しているかい?
SQL SERVERは既定のトランザクション管理モードを自動コミットとしているから
単純にINSERT文を発行するとその度にAUTO COMMITされる
大量に処理する場合は最初にBEGIN TRANSACTION、最後にCOMMIT TRANSACTIONとして
TRY-CATCHで例外をROLLBACKしてやった方がいい
まぁVB.NETというより内容的にSQL SERVERかな
50:デフォルトの名無しさん
09/11/22 10:18:30
まずは、どこに時間がかかってるのか確認することだな。
ファイルに吐きだして、BCP で突っ込む、ってのが一番速そうだけど。
51:デフォルトの名無しさん
09/11/22 17:44:58
こんな感じのコードなんですけど。Tryで囲んであるのに異常が起きた場合
「WiimoteException はハンドルされませんでした。」のダイアログが出るです。
exをExceptionにしてもcatchされずに↑の例外ダイアログが出るです。
どうなってるの?
Try
' Wii リモコンに接続する
wiimote.Connect()
Catch ex As WiimoteException
MessageBox.Show(ex.Message)
End Try
52:デフォルトの名無しさん
09/11/22 17:55:20
Connect呼び出し以外で投げられてんじゃね?
53:デフォルトの名無しさん
09/11/22 17:57:33
たぶん別スレ
54:デフォルトの名無しさん
09/11/22 17:58:32
そのライブラリ?がマルチスレッドでふぁ
55:デフォルトの名無しさん
09/11/22 18:04:49
ほんとにそこで例外が発生してる?
56:デフォルトの名無しさん
09/11/22 18:19:24
本当にそこで発生してます。
wiimote.Connect()にブレークポイントして調べた。
57:デフォルトの名無しさん
09/11/22 18:20:07
っ URLリンク(www.atmarkit.co.jp)
58:デフォルトの名無しさん
09/11/22 18:25:59
そういう問題ではなかろう…
59:デフォルトの名無しさん
09/11/22 18:29:23
>>56
ブレークポイントしたらどうなったんだ?
普通に考えれば有り得ない気がするんだが。
ちなみにキャッチブロックにブレークポイント仕掛けても止まらないんだよね?
60:デフォルトの名無しさん
09/11/22 19:12:34
DLLの中って落ちだろ
61:デフォルトの名無しさん
09/11/22 19:51:18
>>60
オチというか、たぶんそうだろうねえ。
ならそのまま[F5]押して継続すれば何も問題ない。
62:デフォルトの名無しさん
09/11/22 22:58:38
プログレスバーをオーディオのレベルメーターみたいに3色にしたいのですがどのようにやれば良いでしょうか?
63:デフォルトの名無しさん
09/11/22 23:03:01
プログレスバーにはそんな機能ないから、自作するしかない。
64:デフォルトの名無しさん
09/11/22 23:16:13
プログレスバーを元に改造?することはできますか?
ゼロから自作ですか?
65:デフォルトの名無しさん
09/11/22 23:18:40
ゼロからじゃね?
66:デフォルトの名無しさん
09/11/22 23:18:57
改造できるにしてもゼロから作った方が圧倒的に早いのは確実
67:デフォルトの名無しさん
09/11/22 23:25:35
.NET のプログレスバーは、Windows コモンコントロールのプログレスバーをベースにしてる。
ベースの方でそういう機能がないので、改造は面倒だろうね。
いちから作っちゃった方が早いと思うよ。
68:デフォルトの名無しさん
09/11/22 23:31:13
そうですか
作ると言ってもまるで状況が想像できないのですがすごく難しそうですね
ボタンでも無理そう><
69:デフォルトの名無しさん
09/11/22 23:38:31
数が固定なら簡単だろ?
[][][][][][][][][][][][][][][][][]
みたいに四角を描画していけばいいわけだ。左から、緑・黄・赤で塗りつぶすと。
70:デフォルトの名無しさん
09/11/22 23:46:50
その前の段階も良くわかっていません。
WindowsControlLiblaryというプロジェクトを開いて
フォームの枠(コントロールを何も置かない状態のフォーム)みたいなのを
レベルメーターみたいにしようと思ってやっているのですが、ここまではあってるでしょうか?
71:デフォルトの名無しさん
09/11/22 23:51:53
いやカスタムコントロールの方を使う
いま君が開いてるのはユーザーコントロールだけどどうせデザイナ使えないから意味ない
72:デフォルトの名無しさん
09/11/22 23:56:41
カスタムコントロールで調べてみます。
ありがとうございます。
73:デフォルトの名無しさん
09/11/23 00:01:15
コントロールとして実装する前に、フォーム上でできるようにしてみるほうがいいんじゃね?
できてから、コントロールにすればいいし。
74:デフォルトの名無しさん
09/11/23 00:08:21
まあ挫折するだろうな
オーバーライドとかわかってないだろ
75:デフォルトの名無しさん
09/11/23 00:13:50
もう挫折してました
誰かが作ったのを探し始めてた;(vb レベルメーター コントロール 検索とかw
既存のプログレスバーのコードは見れないでしょうか?
76:デフォルトの名無しさん
09/11/23 00:15:47
未公開
見れても読めるとも思えないけどな、C言語だろうし
77:デフォルトの名無しさん
09/11/23 00:17:55
あきらめろよ。
VB6 だろうけど、こんなのはあった。
URLリンク(www.a1vbcode.com)
78:デフォルトの名無しさん
09/11/23 00:18:15
あ。VB4 って書いてあるな。
79:デフォルトの名無しさん
09/11/23 00:24:15
2002年にこんなもん出したのか
アホだな
80:デフォルトの名無しさん
09/11/23 00:53:08
>>62
暇だったからサンプルコードを書いてみたよ。
ただ、手間だからLED状のブロック表示は諦めて単純な塗りつぶしにして手を抜いてある。
これなら意外と簡単でしょ?
Public Class LevelIndicator : Inherits Control
ReadOnly GreenZoneColor As Color = Color.Green
Const YellowZoneThreshold As Double = 60
ReadOnly YellowZoneColor As Color = Color.Yellow
Const RedZoneThreshold As Double = 90
ReadOnly RedZoneColor As Color = Color.Red
Private mPercent As Double = 0
Public Property Percent() As Double
Get
Return mPercent
End Get
Set(ByVal value As Double)
value = Math.Max(0, value)
value = Math.Min(100.0R, value)
If value <> mPercent Then
mPercent = value
Me.Refresh()
End If
End Set
End Property
Private Function PercentRangeToRect(ByVal percentFrom As Double, ByVal percentTo As Double) As Rectangle
Dim left As Integer = CInt(Me.Width * percentFrom / 100)
Dim right As Integer = CInt(Me.Width * percentTo / 100)
Dim width As Integer = right - left
Return New Rectangle(left, 0, width, Me.Height)
End Function
81:デフォルトの名無しさん
09/11/23 00:54:26
* 80続き *
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
MyBase.OnPaint(e)
Dim g As Graphics = e.Graphics
Dim greenRect As Rectangle = PercentRangeToRect(0, Math.Min(Percent, YellowZoneThreshold))
Using br As Brush = New SolidBrush(GreenZoneColor)
g.FillRectangle(br, greenRect)
End Using
If Percent >= YellowZoneThreshold Then
Dim yellowRect As Rectangle = PercentRangeToRect(YellowZoneThreshold, Math.Min(Percent, RedZoneThreshold))
Using br As New SolidBrush(YellowZoneColor)
g.FillRectangle(br, yellowRect)
End Using
End If
If Percent >= RedZoneThreshold Then
Dim redRect As Rectangle = PercentRangeToRect(RedZoneThreshold, Math.Min(Percent, 100))
Using br As New SolidBrush(RedZoneColor)
g.FillRectangle(br, redRect)
End Using
End If
Dim rect As Rectangle = Me.ClientRectangle
rect.Width -= 1 : rect.Height -= 1
g.DrawRectangle(Pens.DimGray, rect)
End Sub
End Class
82:デフォルトの名無しさん
09/11/23 01:00:17
おおーすごい!
早速やってみます!ありがとう!
83:デフォルトの名無しさん
09/11/23 01:15:42
動いたーー!!
完璧すぎてすご過ぎ
ありがとう!!!!!!!!!!!!!!
さっそくLEDみたいにするのをやってみます。
感謝!感謝!
84:デフォルトの名無しさん
09/11/23 01:59:40
なんという甘やかし・・・
85:デフォルトの名無しさん
09/11/23 03:28:06
ここは暇つぶしにプログラムするお題を探すスレになりましたw
86:デフォルトの名無しさん
09/11/23 09:23:51
>>48
場合によっては具体的なコードをここでさらして、処理過程を見直した方が
良いと思います。
DataTableを使ってまとめてupdateをしてみた場合はどうなのかとか、
いくつか実験をやってみてはいかがでしょうか。
87:デフォルトの名無しさん
09/11/23 11:36:50
質問です。
フォーム上にいくつか連名でオブジェクト(テキストボックス)を配置し、
その各テキストボックスにアクセスする場合のコードの書き方を教えて下さい。
AccessVBAだと、以下のような感じにコードを書く事が出来ますが、VB.NETだと
me(....)を書いた時点でエラーが表示されてしまいます。
dim str1 as string
dim i as integer
str1="textbox"
i=3
me(str1 & i)="a"
ループで処理をしたいので、こんな感じにコードを書きたくない場合の話です。
textbox3.text="a"
88:デフォルトの名無しさん
09/11/23 11:42:02
CType(Controls(str1&i), TextBox).Text = "a"
みたいな感じでできる気がするけどあまり褒められたものではない
VBAとは全く別の言語だからVBAではどうとかいう考え方は捨てた方がいい
89:デフォルトの名無しさん
09/11/23 11:48:45
>>88
すばやいレスありがとうございます。
早速コードを書いて試してみたところ、動作しました。
VBAとは別の言語であるという考えで勉強していこうと思いますが、
一つだけ追加で質問させてください。
VB.NETの場合は、フォーム上にテキストボックスをたくさん配置して
おいて、それらを一括ですべてクリアにするとか、値を取得して
配列に格納するとかいう場合、以下のようなコードを書くのが一般的
ということになるのでしょうか。
Me.TextBox1.Text = "a"
Me.TextBox2.Text = "a"
Me.TextBox3.Text = "a"
Me.TextBox4.Text = "a"
Me.TextBox5.Text = "a"
・
・
・
90:デフォルトの名無しさん
09/11/23 11:49:59
VBAのフォームってこんなデタラメなことが出来たんだw
フォームの既定のプロパティなのかな?
こんなことができて嬉しい場面が思い浮かばないが・・・
91:デフォルトの名無しさん
09/11/23 11:51:54
配列作る
92:デフォルトの名無しさん
09/11/23 11:52:41
配列だな
93:デフォルトの名無しさん
09/11/23 11:55:20
>>90
コードが少なくて済むというメリットがあると思います。
94:デフォルトの名無しさん
09/11/23 11:57:29
>>91>>92
配列とは、どのような意味なのでしょうか?
TextBoxに格納する文字列を、TextBoxとは別に配列を宣言し、
それに格納しておいて・・・その後の処理をどうしたらいいのかの
イメージがつきません。すみません。
95:デフォルトの名無しさん
09/11/23 12:03:09
>>94
配列っていうのは本当はいい答えじゃない。
要は何らかのコレクションになっていれば、そのコレクションが含んでいるアイテムを
「一括ですべて(まとめて)」操作することも出来るでしょ。
例えばVBのコントロール配列だって、君の書いているVBAのMe(コントロール名)だって
そういうアイデアだよね?
要はそのコレクションを自分で用意すればいいってこと。
それはList(Of T)だったり、Dictionary(Of TKey, TValue)だったり、
ただの配列だったり、目的に合わせて適切なものをね。
96:デフォルトの名無しさん
09/11/23 12:21:07
>>95
レスありがとうございます。
となると、VB.NETの場合は、必ず以下のような関数を作らないといけなく
なってくるという考えでよろしいのですよね?
・格納する配列の内容をフォーム上のオブジェクトに反映する。
・フォーム上のオブジェクトの内容を配列に格納する。
VBAでは、直接フォーム上のオブジェクトを操作していたので、
VB.NETのこの、つなぎを行う処理を書かなければならないという
考え方にはちょっと違和感を感じますが、慣れる様にしたいと思います。
97:デフォルトの名無しさん
09/11/23 12:28:33
そもそもまとめて操作する機会なんてそんなにあるか?
98:デフォルトの名無しさん
09/11/23 12:30:34
VB.NET でも、Controls コレクションって用意されてなかったっけ?
99:デフォルトの名無しさん
09/11/23 12:30:36
コントロールそのものをコレクションに入れてもいいけど
一般にはクラスやコレクションでデータだけ別管理にした方がUIと分離できて良い方法
VBAだろうと同じ
100:デフォルトの名無しさん
09/11/23 13:08:29
>>97
全般的に言うと少ないとなるでしょうね。しかし、似たようなコードを
たくさん書かないといけなくなったりすると、何とかならないかなと
おもったりするんですよ。
>>98
詳細をお願いします。
>>99
確かにMVCモデルという言葉があるように、データと表示は分離した
作り方をした方がいいと思いましたが、型指定されたDataSetみたいな
便利機能がないのが、今のところひっかかっています。
(プログラムをしていけば、慣れていくのだと思いますが)
101:デフォルトの名無しさん
09/11/23 13:11:45
>>98
それが>>88のControls
102:デフォルトの名無しさん
09/11/23 13:24:45
DataTable作って各TextBoxバインドすれば
一括クリアーも配列への格納も楽だよー
103:デフォルトの名無しさん
09/11/23 13:29:36
>>101
解説ありがとうございます。
>>102
ああ、その手がありましたね。
104:デフォルトの名無しさん
09/11/23 13:34:10
型付きデータセットなんて、この文脈じゃまったく関係ないだろうに。
頭でっかちになる前に、手を動かせよ。
105:デフォルトの名無しさん
09/11/23 14:45:23
IExtenderProvider実装してやればいろいろできる。
グループ名プロパティ提供してグループ名で一括操作とかな。
106:デフォルトの名無しさん
09/11/23 15:13:45
>>104
私は、コードを書くよりも、いろいろ考えすぎてたようです。
もっといろいろなプログラムを作る事に集中します。
>>105
私の知識不足で、直感的にどのような操作なのかがイメージ出来ません
でしたが、出していただいたキーワードを元に検索などかけて調べて
みます。ありがとうございます。
107:デフォルトの名無しさん
09/11/23 15:48:10
>>106
とりあえずブログラムは経験だから頑張れ
108:デフォルトの名無しさん
09/11/23 16:36:33
すみません、質問です。
VB.NET Express のコントロールには、Lineなどというものはないのでしょうか。
フォーム上に、区切りとして、単に線を引いたり、枠線を描いたりしたいのですが。
109:デフォルトの名無しさん
09/11/23 16:47:34
labelで代用してる
110:デフォルトの名無しさん
09/11/23 16:55:25
VB系の拡張コントロールが提供されてなかったっけ?
Lineとかそういうのが使えるやつ。
111:デフォルトの名無しさん
09/11/23 16:57:33
>>109
レスありがとうございます。
線や四角を描く部分をlabelで代用する場合、具体的にプロパティはどのように設定したら
よいのでしょうか?
BorderStyle を FixedSingle にするとラベルに枠が出来るというまでは思いつくの
ですが、その後、線にしたり、任意の大きさの四角にする部分が分かりません。
112:デフォルトの名無しさん
09/11/23 17:02:02
PowerPack だな。
113:デフォルトの名無しさん
09/11/23 17:07:18
Dim NewPen As New System.Drawing.Pen(System.Drawing.Color.Black)
Dim FormGraphics as System.Drawing.Graphics
FormGraphics = Me.CreateGraphics()
FormGraphics.DrawLine(NewPen, 0, 0, 300, 300)
NewPen.Dispose()
FormGraphics.Dispose()
こんな感じで無理だっけ?
114:デフォルトの名無しさん
09/11/23 17:12:19
URLリンク(www.atmarkit.co.jp)
直線
URLリンク(www.atmarkit.co.jp)
四角
115:デフォルトの名無しさん
09/11/23 17:14:09
失敗
URLリンク(www.atmarkit.co.jp)
こっちが直線
114の直線はlabelで代用した直線
116:デフォルトの名無しさん
09/11/23 17:42:41
かなり早く、多くの回答ありがとうございました。
>>110>>112
拡張コントロールを使うんですね。
>>113
出来れば、フォーム上のオブジェクトとしてマウスで操作する
方法で配置したいと思っていたのです。
もし、その方法が無理であれば、紹介していただいたコードを書く
方法を使うしかないでしょうね。
>>114>>115
labelで代用する場合は AutoSize を false に変えたらよかったのですね。
上手くリサイズが出来なくて苦労してましたが出来ました。
紹介していただいた@ITのサイトも見てみます。
117:デフォルトの名無しさん
09/11/23 18:27:41
イベントプロシージャーの外に宣言した
Dim num As Integer
という変数をTextBoxなどのように変更のイベントを発生させるにはどのようにしたら良いでしょうか?
118:デフォルトの名無しさん
09/11/23 18:29:26
無理。
119:デフォルトの名無しさん
09/11/23 19:10:05
>>117
その変数を自分で変更したら自分で定義した好きなイベントを発生させる
120:デフォルトの名無しさん
09/11/23 20:20:28
これを翻訳するとどうなりますか?
Vector3[] vertexs;
vertices = new Vector3[vertices.Length];
121:デフォルトの名無しさん
09/11/23 20:24:14
知らんがな。
122:デフォルトの名無しさん
09/11/23 20:26:23
DirectXかXNAかなんか?
そんなの自分で調べられないと絶対無理だよ
C#どころかC++も読めないと厳しい
123:デフォルトの名無しさん
09/11/23 20:33:38
2chスレッドのレス抽出をするプログラムを作ろうとしています。
URLからスレッドのHTMLを取得することはできたのですが、そこからどうすればいいのかわかりません。
プログラムの引数に指定範囲の最小、最大を与えてその範囲内のレスの本文とIDを取得したいのですが。
124:デフォルトの名無しさん
09/11/23 20:34:51
>120
VBでは無理
125:デフォルトの名無しさん
09/11/23 20:38:32
>>123
正規表現あたり
.dat取得したほうが解析は楽だと思うけど
126:デフォルトの名無しさん
09/11/23 20:42:52
>>123
Datファイルを調べれば幸せになれるかも
127:デフォルトの名無しさん
09/11/23 20:53:08
レスありがとうございます。
Datファイルからの取得のほうが楽そうですね。
Datファイルからの解析となると、Datファイルのパスを取得、レス番に指定範囲行を代入、ID、本文を格納という流れになるのかな。
128:デフォルトの名無しさん
09/11/23 21:43:33
むかしチャレンジしたが、POSTが分からずに断念した俺登場
129:デフォルトの名無しさん
09/11/24 02:13:58
ログ読むだけなんでしょ。
投稿するわけじゃないんだから、POSTは関係ないでしょ。
130:デフォルトの名無しさん
09/11/24 03:02:39
それは設計レベルの問題。
「ソフト作りたいのですが、設計ができません」
じゃ、教えるというよりも
代わりに考えて、といってるようなもの。
作りたいと思ったなら自分で考えろ。
131:デフォルトの名無しさん
09/11/24 03:03:32
自分で考えるのが嫌なら、既製品を使え。
132:デフォルトの名無しさん
09/11/24 10:09:43
○×ゲームのフィールドにあたるクラスを設計・コードを記述し、
以下のスレに投稿したのですが、コーディングや設計に関する部分で、
経験豊富なプログラマーの方々が思う指摘というものを受けてみたいと思い、
こちらで質問をしてみました。
スレリンク(tech板:52-59番)n
ざっと読んでみたところ、こちらのスレは全般的に、TIPS系の質問が
多いようですので、もし、こういった質問がスレ違いということでしたら
該当スレへの誘導をお願いしたいと思います。
どうぞよろしくお願い致します。
133:デフォルトの名無しさん
09/11/24 10:16:09
>>127
ローカルに保存したdatは、テキストファイルをどのような形式で表示
させるかという話だと思う。
テキストファイルの操作について分からなければ、ファイルのopenやら
closeはどうやったらいいのか、といったレベルから勉強しなおした方が
良いと思う。
134:デフォルトの名無しさん
09/11/24 15:00:44
>>127
とりあえずテキストファイルの操作を学べばおk
135:デフォルトの名無しさん
09/11/24 15:44:43
すみませんが質問です。
コンボボックスやテキストボックスにて、未入力や未選択、任意に入力内容を
消した状態を確認するコードは、
If Me.TextBox1.Text = "" Then
というコードのみでよいのでしょうか?それとも、
If Me.TextBox1.Text = "" Or IsNothing(Me.TextBox1.Text) Then
という感じに、null判定も入れておくべきなのでしょうか?
細かいところですが、ある程度はユーザの操作内容を確実に取得できる
ようなコードを書いておく習慣をつけておきたいと思い、質問してみました。
136:デフォルトの名無しさん
09/11/24 15:54:17
コントロールのTextがnullになることは普通ないけど
(カスタムコントロールでTextをオーバーライドしてnullを返すような実装にわざとしない限り)、
一応String.IsNullOrEmptyで判断しておけば
137:デフォルトの名無しさん
09/11/24 16:06:50
>>136
null判定は不要だったのですね。
String.IsNullOrEmpty で判断したコードを書くように
したいと思います。ありがとうございます。
138:デフォルトの名無しさん
09/11/24 16:33:25
VB.NET2003について教えてください。
URLリンク(dobon.net)
を参考にファイル保存ダイアログを出しているのですが
sfd.OverwritePrompt = True
'存在しないパスが指定されたとき警告を表示する
'デフォルトでTrueなので指定する必要はない
で上書きの警告ダイアログを出したとき
通常は「はい」ボタンがデフォルトになっているのですが
これを「いいえ」ボタンをデフォルトにすることは可能でしょうか?
139:デフォルトの名無しさん
09/11/24 17:06:40
>>138
無理だったと思う
140:デフォルトの名無しさん
09/11/24 17:09:21
>>139
やはりそうですか。ありがとうございました。
141:デフォルトの名無しさん
09/11/24 17:10:50
>>140
ちょっとまて
それをFalseにして自分で警告ダイアログを表示すればいいんじゃね
142:デフォルトの名無しさん
09/11/24 17:30:09
>>140
そもそも 「存在しないパスが指定されたとき警告ダイアログを表示する」
なのに上書き警告ダイアログを表示するってのがよく分からん
143:デフォルトの名無しさん
09/11/24 17:39:46
>>142
それはおそらくコピペする行を間違えているのだろうw
>>138
OverwritePromptは、TrueかFalseしか指定できないので、それを
設定する方法では出来ない。となるが、>>141にあるように、
自作で、上書きしようとしているかどうかをチェックし、
警告ダイアログをMessagebox.Show( で表示すると可能ではある。
144:デフォルトの名無しさん
09/11/24 18:02:53
なるほど
自分でやればいいのか。ありがとうございました。
145:デフォルトの名無しさん
09/11/24 18:49:06
俺は質問者ではないが、実際にどんなコードを書いたらいいのかを
調べてたが、自作する場合はダイアログが一旦閉じてしまう方法
しかなさそうだな。(ま、それでキャンセルしたら再度ダイアログが
開くようにすればいいだけともいえるのだが)
こんな感じになるんだろうな。
If sfd.ShowDialog() = DialogResult.OK Then
If System.IO.File.Exists(sfd.FileName) Then
' filePathのファイルは存在する
MessageBox.Show("上書きしてもよか?")
End If
End If
146:デフォルトの名無しさん
09/11/24 20:30:58
基本的な質問で申し訳ありませんが、お願いします。
一番最初に開くフォーム(Form1)で設定ファイルから値を読込み、それが、
他のフォームにおいても使えるようにしたいのですが、.NETの場合は、
オブジェクト指向言語なので、グローバル変数に値を格納というのは
良くないのですよね?
では、具体的にはどうしたらよいのでしょうか?
VBAの際は、モジュールを追加して、global ~~って感じに
変数を宣言すればよかったのですが。
147:デフォルトの名無しさん
09/11/24 20:36:50
Timerイベントで一秒に一回ファイルストリームに1行ずつ書き込んでいるのですが、
同じ時間が重複して書き込まれることがよくあるのですが、これは何が原因でしょうか?
148:デフォルトの名無しさん
09/11/24 20:47:41
>>146
public 変数 as integer
こんな感じでいけた気がする
149:デフォルトの名無しさん
09/11/24 20:50:46
>>147
>>147
>Timerイベントで一秒に一回ファイルストリームに1行ずつ書き込んでいるのですが、
ファイルストリームに書き込むとは?
>同じ時間が重複して書き込まれることがよくあるのですが、これは何が原因でしょうか?
現在の時間を書き込むってこと?kwskお願い
150:149
09/11/24 20:52:44
ミスったorz
151:デフォルトの名無しさん
09/11/24 20:56:41
>>146
オブジェクト指向言語だからってオブジェクト指向で書く必要はない
オブジェクト指向する気ないんだったら>>147で十分
本当に勉強する気があるならJavaでもやった方がいい
152:デフォルトの名無しさん
09/11/24 21:08:27
>>149
一秒ごとに変化するデータを時間と一緒に書き込んでいます。
今日日中は無人でパソコンを使いながら実行していたのではないのですが
確認したら重複がたくさんありました。
153:デフォルトの名無しさん
09/11/24 21:10:03
>>149
ファイルストリームに書き込むというのは
StreamWriterのWriteLine(Str)という方法です。
連投スマソ
154:デフォルトの名無しさん
09/11/24 21:10:32
System.Windows.Forms.Timerは不正確だから呼び出し間隔を当てにしてはいけない
155:149
09/11/24 21:12:54
>>153
ああ、そういうことね
Timerはそんなに正確じゃなかった気がするよ
156:デフォルトの名無しさん
09/11/24 21:21:03
了解です。
時間がとんだ時に取り戻すように同じ時間を書き込んでいる感じなのですが、
これはパソコンの速度の限界なので回避しようがないでしょうか?
157:149
09/11/24 21:24:26
>>156
パソコンの早さはあまり関係ないと思う
ライブラリ自体が不正確だったかな
158:デフォルトの名無しさん
09/11/24 21:26:23
System.Threading.TimerかSystem.Timers.Timerを使えばかなり精確
どちらも別のスレッドで呼び出されるから扱いには注意
159:デフォルトの名無しさん
09/11/24 21:58:27
試してみます。
どうもありがとうございました。
160:デフォルトの名無しさん
09/11/24 22:06:51
ここにvbNullString vbNullChar ""の違いを説明できるヤシは居ない予感
161:デフォルトの名無しさん
09/11/24 22:13:27
vbNullStringはただのNothing
vbNullCharは0
""は空のStringオブジェクト
162:149
09/11/24 22:27:06
>>160
分からないならそう書けよ
163:デフォルトの名無しさん
09/11/24 22:46:11
>>148>>151
レスありがとうございます。
オブジェクト指向する気が無いコードの書き方があるのも
分かりましたが、もし、オブジェクト指向する気がある場合だと、
どういう考え方になるのでしょうか?
値が格納されたクラス(もしくは構造体)を設定し、そのインスタンスを
Form2がopenする際に渡すという考え方になるのでしょうか?
164:デフォルトの名無しさん
09/11/24 22:49:21
まあそうするのがいいと思う
あと特別な理由(主にパフォーマンス)がなければ構造体は使わずクラスを使う
165:デフォルトの名無しさん
09/11/24 23:16:35
>>162逆に素直に教えてクン丸出しで質問してもググレカスと返される
あえて煽ったり釣ったりした方が、適度なマジレスが的確に返ってくる
度を越すと誰にも相手されずにおじゃんだけどな !
166:デフォルトの名無しさん
09/11/24 23:25:45
>>164
ありがとうございます。
167:デフォルトの名無しさん
09/11/24 23:27:13
>>165
わけのわからんかけひきはしなくていい。
168:デフォルトの名無しさん
09/11/24 23:32:16
>>163
いやいやそんなタコ足配線みたいなコードはOOPしようがしまいが
普通のセンスをしてれば「やりたくない」と思うはず。
冷静に考えてみ?
どうして他のフォームの設定値を"Form1"が管理するの?
なんでその設定値を必要とするフォーム自身で管理しようと思わないの?
その方がずっとわかりやすいじゃない。
169:デフォルトの名無しさん
09/11/24 23:53:05
考えるより体で覚えろ
170:デフォルトの名無しさん
09/11/25 00:53:59
何も考えずに走れ!!!!
171:デフォルトの名無しさん
09/11/25 00:56:38
.NETフレームワークって実は内部でWIN32APIをうごかしてる?
172:デフォルトの名無しさん
09/11/25 01:00:29
まあそりゃWindowsとの対話は基本Win32API越しにするもんだからな
173:デフォルトの名無しさん
09/11/25 14:30:32
昔はDOSやPOSIXやOS/2のAPIも聞いてくれたけどな
174:デフォルトの名無しさん
09/11/25 15:14:02
WindowsサービスにIPCサーバーさせてるんですが、IPCクライアントから接続すると、
「IPCポートに接続できません。アクセスが拒否されました。」と出ます。
TCPの時は問題なかったのですが、IPCだとACL設定がいるようで、その方法がわか
りません。
誰にでもアクセス許可させたいんですが、どのようにACL設定したらよいのでしょうか。
下記のようにしてダメでした(すいません、C#です...)。
SecurityIdentifier allUserSid = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
DiscretionaryAcl dacl = new DiscretionaryAcl(false, false, 1);
dacl.AddAccess(AccessControlType.Allow, allUserSid, -1, InheritanceFlags.None, PropagationFlags.None);
CommonSecurityDescriptor securityDescriptor = new CommonSecurityDescriptor(
false, false,
ControlFlags.GroupDefaulted | ControlFlags.OwnerDefaulted | ControlFlags.DiscretionaryAclPresent,
null, null, null, dacl);
App.configに何か書くサイトもありましたが、Expressで空のプロジェクトから自前でW
indowsサービスにしたので、App.configがなく、自前で下記を追加したら「'application'
のスキーマ情報が見つかりませんでした。」と怒られました。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.runtime.remoting>
<application>
<service>
<wellknown mode="SingleCall" type="Server.MyRemoteObject, Server" objectUri="MyRemoteObject.rem" />
</service>
<channels>
<channel ref="ipc" portName="MyIpcChannel" authorizedGroup="Users"/>
</channels>
</application>
</system.runtime.remoting>
</configuration>
どうしたらよいのか教えてください...
175:361
09/11/25 16:20:34
>>174
スレ違い
C# の質問スレの方がいい答えがかえってくるはず
176:デフォルトの名無しさん
09/11/25 17:24:17
現在オセロ作っていまして
石を置くときにクルッと一回転させてから置くような感じの効果を付けたいのですが
どのように考えればいいんでしょうか?
よろしくお願いします
177:デフォルトの名無しさん
09/11/25 17:27:24
3Dでモデリングとか考えてないなら、
何枚か回転途中の絵を用意しといてタイマで絵を切り替えながら描画する
178:176
09/11/25 17:29:18
あ、石は単純に円で表現してます
本当は円柱で描きたかったのですがそちらの方もやり方がわかりませんでしたので・・・
では改めてよろしくお願いします
179:デフォルトの名無しさん
09/11/25 17:29:42
>>176
石の横幅を小さくしてから大きくする
180:デフォルトの名無しさん
09/11/25 17:31:23
>>178
黒と白の石をずらして重ねてみるとか
181:176
09/11/25 17:32:24
補足書いてある間に回答がきててすれ違いになってしまいました
>>177、>>179
両方のやり方で作ってみて見た目が良かった方でいこうと思います
どうもありがとうございました
182:176
09/11/25 17:35:03
これまたすれ違いに・・
>>180
早速取り入れてみます
ありがとうございました
183:デフォルトの名無しさん
09/11/26 00:32:02
WebRequestとWebResponseクラスを使ってサイトにアクセスしているのですが、
HTMLソースをString変数に読み込んで、内容を正規表現で調べているのですが、
mshtmlクラスのように、GetElementByTagNameなどのメソッドで
データの取得や設定が簡単に扱えるようにするにはどんな方法でやれば良いでしょうか?
184:デフォルトの名無しさん
09/11/26 00:37:25
標準では用意されてない
185:デフォルトの名無しさん
09/11/26 00:51:58
DOM やりたいなら、mshtml で読み込めよ。
186:デフォルトの名無しさん
09/11/26 00:59:56
レスありがとうございます。
DOMというのですか。この方法はAxWebBrowserを使う時の方法しか知らないのですが、
WebRequestとWebResponseクラスを使った方法でも使うことが出来るでしょうか?
ヒントでも良いので方法を教えて頂けると助かります。
187:デフォルトの名無しさん
09/11/26 01:06:38
URLリンク(msdn.microsoft.com)(VS.85).aspx
こーゆーやつ。
188:デフォルトの名無しさん
09/11/26 07:22:24
すいません、質問です。
(VB.NETというよりも、IDEに関係する話かもしれませんが)
プロジェクトを作成し、プログラムを実行すると、ディフォルトでは
Debugにexeが格納されますが、このexeのみを別のPCへコピーして
実行してみる事に問題はありますか?
基本は、インストーラーを作成して・・・となるのでしょうが、
私が作っているプログラムの規模が小さいのもあり、この操作方法で
今のところうまく行っているのですが、これによってどういった不具合が
予測されるかが良く分からない状況です。
どういう問題や不具合が起きると考えられるのかを教えて下さい。お願いします。
189:174
09/11/26 07:44:24
>>175
了解しました。
ありがとうございます。
190:デフォルトの名無しさん
09/11/26 07:44:33
それで動くんなら問題ない。
マナーとして、debug ビルド版じゃなくて、release ビルド版の方を
配布した方がいいかもしれんが。
191:デフォルトの名無しさん
09/11/26 09:37:07
どっかに、汎用の「遺伝的アルゴリズム」のソース落ちてないですか?
192:デフォルトの名無しさん
09/11/26 09:51:45
>>188
Debug版は配布すべきでない。
単にDebug.WriteLineなどのログ情報が必要なだけなら、
ReleaseビルドでDEBUG定数の定義を追加すればよい。
193:デフォルトの名無しさん
09/11/26 10:21:12
>>188
外部ツール使ってなければ
気にするのはFrameworkのバージョン位だな
3.xが入ってれば
明示的に2.0入れなくても動くんだっけ?
194:デフォルトの名無しさん
09/11/26 14:47:31
>>188
Debugビルドの方が、Releaseビルドより容量が大きくなることがあるんじゃなかったっけ?
Debug用の情報が含まれるとかなんとかで。
195:デフォルトの名無しさん
09/11/26 15:02:02
ほとんど変わらんかったと思う。
でかいのはあくまでpdb。
196:デフォルトの名無しさん
09/11/26 15:38:26
pdbって何なの?
ちょこっとプログラム組んだだけで、
ものすごいサイズのpdbファイルができることがあるんだけど・・・
197:デフォルトの名無しさん
09/11/26 17:45:10
どうやってデバッガがソースファイルや行位置やその他諸々を理解してると思う?
198:デフォルトの名無しさん
09/11/26 18:10:26
>>197
???
199:デフォルトの名無しさん
09/11/26 18:32:07
「pdbファイル」というキーワードを自ら出しておきながら
ググれないとか、もうね。
200:デフォルトの名無しさん
09/11/26 21:03:01
>>199
すいません >>198は誤爆なので質問者じゃありません
201:デフォルトの名無しさん
09/11/26 21:27:37
>>187
ありがとうございます。
ほとんど意味がわかりませんがまた調べてみたいと思います。
202:デフォルトの名無しさん
09/11/26 22:22:57
VBはDebug.Break()ないのけ?
203:デフォルトの名無しさん
09/11/26 22:43:32
System.Diagnostics.Debugger.Break()
204:デフォルトの名無しさん
09/11/26 22:59:35
なんか俺みたいな初級者が「開発」なんて言葉こっぱずかしくて使えない
205:デフォルトの名無しさん
09/11/26 23:59:44
関数の戻り値で配列をReturnで返すには1行で書くにはどう書いたら良いですか?
Function Hoge(hoge As String) As String()
Dim res(1) As String
res(0)="hoge"
res(1)="hoge2"
Return res
End Function
と書かずに
Return {hoge,hoge2}
のように書きたいです。
206:デフォルトの名無しさん
09/11/27 00:00:57
Return New String() { hoge, hoge2 }
207:デフォルトの名無しさん
09/11/27 00:06:39
>>206さんありがとうござます。
208:デフォルトの名無しさん
09/11/27 02:10:18
新規フォーム作成時の赤黄青のデフォルトアイコン↓
URLリンク(dobon.net)
これを実行ファイルのアイコンにも使用したいと思っているのですが
どこに存在するか分かる方いますか?
209:デフォルトの名無しさん
09/11/27 03:31:48
Standard以上ならVisualStudioのImageLibraryにあるかもしれんが
そうでなければ勝手に使うのはライセンス違反になる気がする
210:188
09/11/27 07:51:56
debugのexeの質問へのレスをしていただいた方々、ありがとうございました。
なにやら、別の方が割り込んできている様子でしたので念のために断って
おきますが、私は質問の投稿しかしていませんでしたので、それ以外の質問は
別の方だと思われます。
今のところ、特に凝ったものを使ったりはしていないのと、細かいレベルで
プログラムの修正がある関係から、とりあえずは release ビルド版の配布を
行うようにしておきたいと思います。
ありがとうございました。
211:デフォルトの名無しさん
09/11/27 08:09:19
別にdebugビルドをリリースしてもええよ
細かすぎんだよプログラマは
212:デフォルトの名無しさん
09/11/28 09:40:45
質問です。
私はやっと、VB.NET Express Edition をある程度使いこなせるように
なった者です。
このエディションだと印刷機能が低く、Line関数で座標を数値で
指定しながら程度しか帳票を作ることが出来ないようですが、
コストもある程度考えながら、保守性や生産効率性を考えた上で
帳票を作りたい場合は、どのような方法を取るケースが多いのでしょうか?
上位エディションや、Grapeなどのサードパーティー、Accessを使う方法など
いろいろあるようですが、それらをそろえるには資金的な壁がありましたので、
ちょっとここで聞いてみたいと思いました。
213:デフォルトの名無しさん
09/11/28 13:05:15
ActiveReportsとかCrystalReportsとかが一般的だが要は金がないんだろ
WordやExcelをCOM使って帳票の代わりにするとか検討してみれば
小規模であれば差込印刷とかで、アプリ側はCSVだけ作成して
帳票の印字調整はあらかじめWordに設定しておくとかすれば工数も掛からんだろ
後は時間と知識があるなら帳票コントロールの自作とかかね
214:デフォルトの名無しさん
09/11/28 13:17:12
iText.netがいいよ
215:212
09/11/28 19:15:06
>>213>>214
情報提供ありがとうございます。
出していただいたキーワードをもとに調べてみます。
216:デフォルトの名無しさん
09/11/28 19:26:23
自アプリのメッセージボックスをプログラムで消す(キャンセルを押す)にはAPIでハンドルを調べてAPIでメッセージを
送るという方法しかありませんか?
217:デフォルトの名無しさん
09/11/28 19:31:40
MessageBoxTimeOutA/W
218:デフォルトの名無しさん
09/11/28 19:33:28
プログラム側で勝手に「消す」ようなメッセジーボックスなら
最初から表示しなけりゃいいのに。
時限で自動的に閉じる、みたいなことがしたいのかもしれないが、
それならそういうメッセージボックスクラスを自分で作ればいい。
少なくとも俺はそうした。
別にたいした手間じゃない。
219:デフォルトの名無しさん
09/11/28 22:17:07
レスありがとうございます。
MessageBoxTimeOut
で検索したらサンプルが出てきたので今回はそれを使ってみます。
220:デフォルトの名無しさん
09/11/30 11:38:00
Dim gyo As String
Dim moji As Char
Dim sr As New System.IO.StreamReader(Opendonfile.FileName, System.Text.Encoding.Default) '読込みモードでオープン
Do Until sr.Peek = -1 '最終行が終わるまで繰り返す
gyo = sr.ReadLine 'gyoに行を読み込ませる
mojisu = gyo.Length '行の文字数をmojisuに代入
For count = 0 To mojisu Step 1
moji = gyo.Chars(count)
MsgBox(moji)
Next
Loop
1行目までは行くんですが2行目に行くときに
moji = gyo.char...の文で「IndexOutOfRangeExceptionはハンドルされませんでした」と出るのですがどうすればよいのでしょうか?
221:デフォルトの名無しさん
09/11/30 11:44:48
Lengthは文字数を返す
ForはToで指定された値まで繰り返す
例えばLength=3だったとして、For 0 To 3 は何回繰り返す?
222:デフォルトの名無しさん
09/11/30 11:51:51
なるほど、文字数より1つ大きい値まで指定してしまったんですね。
ありがとうございました。
223:デフォルトの名無しさん
09/11/30 18:27:02
すみません、質問です。
クラス(DataBox)をコーディングにおいて、そのクラスの設定状況によって
別の値を取得できるかどうか、変更可能かどうか、などの動作を行うように
したいと思っています。
このような動きにする場合は、プロパティでは不可能で、メソッドにて
行うということでよろしいのでしょか?
イメージ的にはこんな感じです。
IF mSettei = 1 Then
return mColor;
Else
return False;
' もしくは例外を返すとか
End IF
224:デフォルトの名無しさん
09/11/30 18:30:44
プロパティでは「不可能」ではなく、「不適切」でした。
質問したいのは、プロパティとメソッドの使い分けの考え方の部分です。
225:デフォルトの名無しさん
09/11/30 18:56:22
よくわからんが…状況によって、どういう型を返すか解らんよ、ってこと?
226:デフォルトの名無しさん
09/11/30 19:19:11
>>225
ある状況であると、値をちゃんとかえす。
べつな状況であると、値を返さない。
という動きにしようと思っているのです。
箱が閉じて鍵がかかってデータが取れない状態と、
空いていて、データが取れる状態の二つの動作を
持たせようと思っているのです。
もしかすると、このような設計をすること自体が
間違いなのかもしれません。
箱が空いていてデータが取れるかどうかの区別は
DataBoxを使用する側の方が制御するべきなのかな?
227:デフォルトの名無しさん
09/11/30 20:10:58
1. 値を返せるかどうか
2. 値そのもの
の2つを同時に戻したいなら、
A. 「Function Get~(ByRef 戻り値) as Boolean」として
戻り値へ値をセットしたかどうかを返す。
B. 「Property ~() as Nullable(Of 型)」として、返せないときは
Nothing を戻す。
C. 戻り値の型が参照型なら Nothing を、値型なら
(もしあれば) その型の Empty 値を戻す。
D. (プロパティだろうとメソッドだろうと構わないが) 別々に戻す。
228:デフォルトの名無しさん
09/11/30 21:09:56
>>226
それはダメ
Getで失敗させるのはMSのガイドラインに違反する
229:デフォルトの名無しさん
09/11/30 22:25:37
処理に時間がかかる大きな変数を関数に渡して
その後すぐにその変数を書き換えた場合おかしな動作になりますか?
230:デフォルトの名無しさん
09/11/30 22:27:24
ならんよ。
231:デフォルトの名無しさん
09/11/30 22:52:59
了解です。
232:デフォルトの名無しさん
09/11/30 23:34:07
>>226
値を返さない仕様では無く、nullpoを返すとか0や有り得ない数値(時間の分なら59以上とかマイナスの値)を返す様にするんじゃないかな。
233:デフォルトの名無しさん
09/12/01 01:24:22
For Each Str As String In ?????
で、ListViewのSubItem(3)をStrに入れるにはどのように書けば良いでしょうか?
234:デフォルトの名無しさん
09/12/01 01:52:11
> ListViewのSubItem(3)
とかいう謎の言葉は良くない
ListViewの各アイテムの4列目を列挙したいってこと?
ならListView.ItemsをFor EachつかってListViewItem列挙して
それのSubItems(3).Textを取得する
235:226
09/12/01 11:21:31
みなさん、親切にご回答ありがとうございました。
>>227
「値を返せるかどうか」と「値そのもの」を、同時に一つのもの
として処理をするように考えるのではなく、別のものとして
処理するように考えれば良いのですね。
>>228
Getで失敗させてはいけないという設計は知りませんでしたが、
納得はいきました。Getを使用する際は、いちいち Try ~ Catch ~ は
使用しませんしね。
>>232
「値が返せない」状況の場合は、例外よりも、0などを返す
方向で設計するとよさそうですね。
そのクラスを使うプログラムの方は、例外を取得するのではなく、
ちゃんとした値だったら・・・0だったら・・・という
プログラムになるのですね。
236:デフォルトの名無しさん
09/12/01 15:06:10
>>235
エラーコード返すんだったら例外と変わらん
プロパティはあくまでフィールドのように振舞うべき
素直にGetHogeみたいなメソッドにしたほうがいい
237:デフォルトの名無しさん
09/12/01 15:18:54
>>236
レスありがとうございます。
クラス設計を行う場合、カプセル化の実現の為、必ずSetter/Getterを設定し、
外部のプログラムは、フィールドを直接操作しないような方向で考えるべきと
されていますが、VB.NETでは、そのあたりの必要機能すべてをプロパティにて
網羅している、と解釈してしまっていたところで、間違った解釈につながって
しまったようです。
純粋にフィールドの値を代入したり取得したりする場合のみ、プロパティを
使用する。そして、(オブジェクトの状態により振る舞いが変わるなど)
条件付きでデータを取得したり設定したりする場合は、メソッドを作る。
という考えでいるべきなのだなと思いました。
238:デフォルトの名無しさん
09/12/01 18:15:50
外からフィールドのように見えればいいんであって、
中身は自由に実装していいんだぞ。でないとプロパティの意味がない。
返す値が無いからNothingなのはかまわないが、そのNothingは取得操作が失敗したから
Nothingをエラーコードとして返しているのではなく、そのプロパティの値自体がNothingという意味でなければいけない。
239:デフォルトの名無しさん
09/12/01 20:41:49
こういうセオリーだ、とか、これはバッドノウハウだ、とかってのは置いといて、
好きに作ってみればいいじゃん。で、ダメだったらやり直せばいいんだし。
240:デフォルトの名無しさん
09/12/01 21:33:42
1の位や10の位で切り上げや切り捨ては行えますか?
241:デフォルトの名無しさん
09/12/01 21:38:46
>>240
除余を引いてください。
っていうか、小学生でも思いつく知恵だと思うけど・・・
242:デフォルトの名無しさん
09/12/01 21:38:55
足して割って掛ければいいよ
243:デフォルトの名無しさん
09/12/01 21:42:10
int型なら10で割ると切捨てなので1の位が消滅する
105/10→10 これにまた10をかける
244:デフォルトの名無しさん
09/12/01 23:34:39
>>243
Dim val1, val2 As Integer
val1 = 99999 / 100
val2 = val1 * 100
Console.WriteLine(val2)
( ゚Д゚)
Math.Floor()
( ゚Д゚ )
245:デフォルトの名無しさん
09/12/01 23:43:53
\
246:デフォルトの名無しさん
09/12/01 23:44:54
/じゃなくて\ね。
っていうか、だから除余を使おうよ。
247:デフォルトの名無しさん
09/12/02 00:42:24
っていうか、馬鹿相手にレスするなよ。
248:デフォルトの名無しさん
09/12/02 15:03:59
初心者な質問ですが宜しくお願いします。
Button1をクリックしたら、Do While~Loopを使ってi=1から10まで加算して
初回ループ
・Console.WriteLineで標準出力ストリームに「i = 1」
・Form1のLabel1にも「i = 1」
n回目ループ
・Console.WriteLineで標準出力ストリームに「i = n」
・Form1のLabel1にも「i =n」
と表示させる。ということをイメージして書いたのが
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i As Integer = 1
Do While i <= 10
Console.WriteLine("i = {0}", i)
Label1.Text = "i = " & i
i += 1
Loop
End Sub
Button1をクリックした実行結果は
・標準出力ストリームは1度も表示されない。
・Form1のLabel1には1回だけ「i = 10」と表示される。
・ループが回っていることはステップインで確認。
何が問題なのかアドバイスお願いします。
249:デフォルトの名無しさん
09/12/02 15:19:13
フォームアプリケーションだとそもそも標準出力先が用意されてない
デバッガの出力に表示させたいならDebug.WriteLineとか使う
そのループも画面更新も同じスレッドで行われるので、ループが回ってる間画面更新できない
定期的な処理ならタイマを使う
重い処理ならBackgroundWorker辺りを使う
Refreshで強制的に再描画させられるけど普通ではないしそんなループ程度じゃ視認できないだろ
250:デフォルトの名無しさん
09/12/02 16:35:33
>>249
回答有り難うございます。
>フォームアプリケーションだとそもそも標準出力先が用意されてない
>デバッガの出力に表示させたいならDebug.WriteLineとか使う
フォームだと窓表示ができないのですね。なるほど!
>そのループも画面更新も同じスレッドで行われるので、ループが回ってる間画面更新できない
>定期的な処理ならタイマを使う
実行結果を見ると確かにPrivate Sub Button1_Clickを抜けて初めてLabel表示が更新されるので
そうかなあと思ってましたが納得です。
251:デフォルトの名無しさん
09/12/02 16:53:40
Labelに値をセットすることと、フォームを更新することが
異なるタイミングで行われるということなので、
Update()などで更新してやれば実現できる。
Label1.Text = "i = " & i
Label1.Update()
これでも処理中に画面が張り付いてしまうのは変わらないから、
本格的なアプリならTimerやBackgroundworkerをすすめる。
252:デフォルトの名無しさん
09/12/02 17:21:05
質問です。
以前C++で、構造体配列を宣言するために、
typedef struct tagA
{
CString strName;
int iCount;
} tagA;
CArray< tagA, tagA > tagArray;
というように宣言し、構造体要素をAddしたりDeleteしたりしていました。
tagArray.Add(...) のように。
VB.NETではどのように宣言してやればいいのでしょうか?
253:デフォルトの名無しさん
09/12/02 17:32:23
List(Of T)とか使う
254:デフォルトの名無しさん
09/12/02 17:53:03
>> 253
ほんとありがとー。
Cだけしかやったことないっていうのはほんとダメだねぇ・・・
たすかりました。
255:デフォルトの名無しさん
09/12/02 19:35:30
そういう教科書に載ってるようなのはたいがいあらかじめ用意されてるから
自分で書こうとしてはいけない
256:デフォルトの名無しさん
09/12/02 19:38:22
整数の数があるとして、
11個の連続した整数を取り出したいのに
60-50=10なのに
でも50から60には11個の整数がある。
この矛盾はなに?
257:デフォルトの名無しさん
09/12/02 19:43:13
つれますか?
258:デフォルトの名無しさん
09/12/02 19:50:32
>>252
CArray 使うとか…いや、まあいい。
>>255
でもツリーとかグラフはないんだよねえ。
>>256
しょうがっこうの べんきょうは むずかしいですか?
すうじを 5 と 3 にしてみるとわかりますよ。
259:デフォルトの名無しさん
09/12/02 19:51:57
>>256
1-1=0なのに
1から1までは1という1個の整数がある!ふしぎ!
260:デフォルトの名無しさん
09/12/02 20:10:08
マジレスヨクナイ
261:デフォルトの名無しさん
09/12/03 07:36:33
>>238>>239
レスありがとうございます。
とりあえず手を動かしていろいろやってみたいと思います。
262:デフォルトの名無しさん
09/12/03 08:12:54
すいません、もう一つだけ質問です。
メンテナンス目的時のみに使用するメソッドを設定する場合の
命名規則やルールはあるのでしょうか?
コーディング規約ではそういうものは見たことがないので、
質問してみました。
_(アンダーバー)で始まる名前にするなど、適当な考えで
やっておくといいのかな?
細かい事を気にしすぎだという意見が出るかもしれませんが、
多くの人が必ず関係するような事だと思ったので確認しておきたいと
思いました。
263:デフォルトの名無しさん
09/12/03 08:21:45
さすがにメンテ云々までMSのガイドラインは無いんじゃないかな?
もし、あったらごめんね
264:デフォルトの名無しさん
09/12/03 09:28:19
VB.NETっていきなりWindowsアプリじゃなく
C言語が一番最初コマンドプロンプトでprintfだのから始まったように初歩の初歩から学べないの?
265:デフォルトの名無しさん
09/12/03 09:35:51
>>264
プロジェクト作成時に、コンソールアプリケーションを選べばいいと思います。
場合によっては、VB.NETから離れて、BASICを学ぶという選択肢で考えた方が
いいかもしれません。
266:デフォルトの名無しさん
09/12/03 09:45:00
そもそも Visual なのだから、基本はフォームにコマンドボタンと
テキストボックスを配置して、コマンドボタンクリック時のイベントに
コードを書いていくというのが、初歩という考え方でもあると思う。
(GUIを作るまでの過程がマウスによる操作で出来るので簡単っていう
意味合いで、Visualです。)
267:デフォルトの名無しさん
09/12/03 10:07:59
とりあえずこれで
' save hello.vb
module Program
sub main
Console.WriteLine("Hello World !")
end sub
end module
vbc hello.vb
hello
268:デフォルトの名無しさん
09/12/03 10:39:07
デバッグはドM作業っていうのがよくわかったよ
2時間悩んでもわからなかったのに寝て起きたらあっさり見つかったり
269:デフォルトの名無しさん
09/12/03 11:57:53
俺はシャワーのとき解決策を思いつくよ
270:デフォルトの名無しさん
09/12/03 12:05:12
俺はいつも丑三つ時に閃くな
271:デフォルトの名無しさん
09/12/03 14:40:33
正規表現難しいな
数字の桁数が定まってないのは\dでは探せないしなぁ
272:デフォルトの名無しさん
09/12/03 14:44:14
いつからここは愚痴をいうスレになり下がったんだ?w
273:デフォルトの名無しさん
09/12/03 15:20:31
オレは、トイレ入ってる時だな。。 一番思いつくのは
274:デフォルトの名無しさん
09/12/03 15:56:25
>>271
+とか*の量子指定じゃ駄目なの?
せっかくの質スレなんだから聞いてみろよw
275:デフォルトの名無しさん
09/12/03 17:08:18
質問
URLリンク(homepage1.nifty.com)
このサイトを読んでいたのですが、「2.適用範囲」の Friend を
使う場合はどんなケースであるのがいまいちわかりませんでした。
同じプロジェクトであればということですが、基本的にモジュールは
自分が今作成しているプロジェクトに組み込んで使うものではないの
でしょうか。
例えば、AさんがJisakuクラスを作成し、Jisaku.vbファイルに保存。
それをBさんが、新規プロジェクトを作成し、Jisaku.vbファイルをその
プロジェクトフォルダの中にコピーしてForm.vbを記述。
Cさんが自分のPCにて、それとは別に新規プロジェクトを作成し、
Jisaku.vbファイルをそのプロジェクトフォルダの中にコピーして
Form.vbを記述。
という感じにやるのだと思っていたのですが、この考え方が間違いなのでしょうか。
276:デフォルトの名無しさん
09/12/03 17:40:01
>>275
プロジェクト内でも間違いではないが、同一アセンブリ内というのが正確だな。
アセンブリが異なれば例え同じ名前のクラスでも別のクラスという扱いになる。
.NETでは基本的にソースレベルでコピーや共有はしない。
277:デフォルトの名無しさん
09/12/03 19:01:37
>>263
レスありがとうございます。
使う人が使い方を間違えないような感じの名前をつけておきたいと思います。
278:デフォルトの名無しさん
09/12/03 19:18:40
現在VB.NET2005にて
データベースの接続及びSQL文発行を行う
DLLを作成しており、
接続には『SqlDataReader』を使用しています。
Transactionを指定しない場合に
排他制御がどのように行われているのか、がわかりません。
一切排他が行われないのでしょうか?
また、排他制御を実装する場合はどのようにすれば良いのでしょうか?
行いたい制御としては、
①データ取得中(SELECT)にデータ更新を抑止する
②データ更新中(INSERT/UPDATE/DELETE)にはデータの取得/更新を抑止する
です。
279:デフォルトの名無しさん
09/12/03 19:42:34
データベースによる
280:278
09/12/03 19:47:40
>>279
すみません、書き忘れました。
使用するデータベースは
『SQLServer2005 Workgroup Edition』です。
281:デフォルトの名無しさん
09/12/03 19:49:24
その質問の答えは回答者による。
282:デフォルトの名無しさん
09/12/03 19:52:59
SqlDataReader では接続できないんだが
(SqlDataConnection だろ、ってのは置いといて)
MS SQL Server の Isolation Level の設定次第。
283:デフォルトの名無しさん
09/12/03 20:04:11
select * from tab with(xlock)
284:デフォルトの名無しさん
09/12/03 20:04:14
>>278
とりあえず元スレに移動したことを書いとけよ。
マルチとかいわれんぞ。
285:デフォルトの名無しさん
09/12/03 21:19:35
皆プログラミングになんのエディタ使ってる?
俺はPCがカスだから動作が重いけど楽で便利だからVBの統合開発環境をそのまま使ってるんだけど
286:デフォルトの名無しさん
09/12/03 21:21:43
VBでVB使わないとかただのアホかマゾ
287:デフォルトの名無しさん
09/12/03 21:24:04
メモ帳でやりたいけどやり方わからんから仕方なくVisual Basic 2008 Express使ってる
288:デフォルトの名無しさん
09/12/03 21:26:29
edlin
289:デフォルトの名無しさん
09/12/03 21:35:22
.NETのクラスライブラリの糞長い型名やメンバ名なんかいちいちタイプしてられるか
もともとインテリセンス前提で作られてるんであってPythonみたいな書きやすさ重視の言語とはわけが違う
290:デフォルトの名無しさん
09/12/04 07:50:49
>>276
レスありがとうございます。
分かりやすい説明でした。
291:デフォルトの名無しさん
09/12/04 09:34:54
ランダム関数についての質問です。
ランダムに数字を取得する方法は、googleで検索するとすぐに
出てきたりしますが、(例えば以下のサイトなど)
URLリンク(www.atmarkit.co.jp)
ある数字の幅を指定して、その範囲で数字を1回ずつ重複せずに取得する
ことはできないのでしょうか?
(同じ数字であるかのチェックを行うプログラムを書いて工夫をする
しかないのでしょうか)
(例)0~5の数字をランダムに取得する
1回目:2
2回目:1
3回目:4
4回目:0
5回目:3
6回目:5
このような感じに数字が取得でき、6回目の数字の取得まで、
一度出た数字が重複することが無い。
292:デフォルトの名無しさん
09/12/04 09:45:05
URLリンク(dobon.net)
「シャッフル」というキーワードで調べてみるとよかったようですね。
自己解決しました。
293:デフォルトの名無しさん
09/12/04 09:49:11
年末ジャンボシミュレータ作る気ですね?
解ります。(゚ー゚ )(。_。)(゚ー゚ )(。_。)ウンウン
私も考えたのですが、どっかにメモしておくしか考えつかないです。
数学板かアルゴリズムのスレで聞いてみようかと思ってました。
294:デフォルトの名無しさん
09/12/04 14:17:31
質問です。
VB.NETの変数には、値型と参照型がありますが、変数にこういう二つの
概念を持たせて、プログラミングの際に使い分けをさせたりするメリット
とはどういうものがあるのでしょうか?
URLリンク(homepage1.nifty.com)
実際にプログラミングをする際に感じるものがいまいち見えませんでしたので
質問をしてみました。こういうプログラミングをしてみるとわかるよという
ものの紹介でも結構です。よろしくお願い致します。
295:デフォルトの名無しさん
09/12/04 14:22:59
未定のType変数を用意し、それを後から必要に応じてセットしてから
後でそれを使ってオブジェクトを設定したい場合、
たとえば
Dim TypeA as Type = GetType(Integer)
・・・
Dim ObjectA as TypeA = CType(obj, TypeA) ・・・・・(*)
このようにすると(*)でエラーします。こういう使い方はNGのようで、
どういう仕方で行なうものか教えてください。
296:295
09/12/04 14:25:05
(*)ではコーディング状態で「TypeAは定義されていない」となります。
297:デフォルトの名無しさん
09/12/04 14:32:16
>>294
値型の理由は主にパフォーマンス ただし分かって使わないと却って悪化する
自分で定義する分には値型を作ることは(列挙体以外)まずないよ
>>295
Dim ObjectAのところでTypeAはプログラム上確定してないんだろ? 実行時に初めて確定する
ならTypeAにキャストしてどうするの? 何もできないじゃん?
298:295
09/12/04 14:43:11
>>297
>Dim ObjectAのところでTypeAはプログラム上確定してないんだろ?
そうなんですが、たとえば、親のオブジェクトからプロパティで型を受け取って
それを使ってキャストしたいと思いました。それで元々定義されたメソッドを
子の方で叩くなどしたいと。こういうのは無理なものですか?
299:デフォルトの名無しさん
09/12/04 14:55:25
だからさ、TypeAが何型かコーディング時に分からないのに、
どうキャストすんのよ?
VBならレイトバインドでも使っとけ。
おすすめしないけど。
何がしたいか具体的に書けばもっと真っ当な方法がある可能性が高い。
300:295
09/12/04 15:23:55
>>299
コーディング時には実はわかっているのですが、クラス型は親の方で宣言して
おきたく、子の方はいろんな種類があって実行時に型を受け取りたいということ
でした。
ただ、どうも(*)という方法自体が不可能なような感じですかね?Type型のもので
オブジェクトを宣言したりキャストすること自体が間違いなのかなあ・・・
301:デフォルトの名無しさん
09/12/04 16:12:35
親が分かってるからとかそういう問題じゃないんだ。
コーディング時にってのは子のコーディング部分で分かってるかって意味だ。
302:デフォルトの名無しさん
09/12/04 16:19:09
マウスカーソルがフォーム上の指定した座標上に移動したときに
その座標にグラフィックが描画されるようにしたいのですが、
そのようなイベント(?)はあるのでしょうか?
どのようにすればいいのでしょうか?
現在はピクチャーボックスとマウスエンターイベントで実現しているのですが、
たくさんのピクチャーボックスを使うとものすごく重くなってしまうそうで
ダメと言われてしまいました。
303:デフォルトの名無しさん
09/12/04 16:20:26
ひとつのピクチャーボックスでいいだろ
なんでたくさん使うの
304:デフォルトの名無しさん
09/12/04 16:28:33
ポトペタ脳ってうざいよね
305:デフォルトの名無しさん
09/12/04 16:30:37
>>303
レスありがとうございます
現在はフォームにフォームのクライアント領域と同じ大きさのピクチャーボックスをすでに貼り付けていて
その上に一個ずつ麻雀牌のピクチャーボックスを貼り付けている形になっています。
麻雀パイにマウスエンターすると牌が浮き上がって見えるようにしたいのですが、
これもひとつのピクチャーボックスで実現できますか?
306:デフォルトの名無しさん
09/12/04 16:32:37
>>302
こんな感じで領域を指定するんじゃないの?
If MousePosition.X > 250 And MousePosition.Y > 250 Then
Me.PictureBox1.BackColor = Color.Aqua
Else
Me.PictureBox1.BackColor = Color.Blue
End If
307:デフォルトの名無しさん
09/12/04 16:37:10
データとビューはわけろよー
308:デフォルトの名無しさん
09/12/04 16:44:26
>>300
CType や DirectCast は「型名」を指定するものであって、
Type型で指定するわけじゃない。
>キャストすること自体が
動的な型変換は面倒だぞ。
つ[TypeDescriptor.GetConverter]
309:デフォルトの名無しさん
09/12/04 16:48:26
>>305
MouseEnter と MouseLeave のときだけ捕まえて描画したらええやん。
310:デフォルトの名無しさん
09/12/04 16:49:29
>>308
たぶん型変換したいわけではなくてどっちかというとレイトバインディングの方だと思う
311:295
09/12/04 16:55:31
>>308
>CType や DirectCast は「型名」を指定するものであって、
>Type型で指定するわけじゃない。
やっぱりそうだったのですか。わかりました。ありがとうございます。
>動的な型変換
>TypeDescriptor.GetConverter
こういうものがあったのですね。勉強します、またよろしくです。
312:295
09/12/04 17:00:55
>>301
>>310
>レイトバインディング
子のコーディング時にも親を見ているのでわかっているのですが、
子の方ではそのクラスを宣言できないので、クラスの宣言自体をオブジェクト
にして受け取りたいということなのでした。しかしそういうことは簡単では
なさそうな感じので、とりあえず別の方法も考えてみます。
313:デフォルトの名無しさん
09/12/04 17:01:39
>>305がイメージしていることって、例えて言うと、ホームページで
Flashでデザインされたメニューのようなものか?
マウスを動かすとリアルタイムでボタンの色や形が若干変わるという。
314:デフォルトの名無しさん
09/12/04 17:30:16
あるイベントに対して、すでになんらかのハンドラが AddHandler
されていることを知るにはどうすればよいでしょう?それらを全て
列挙することはできるでしょうか。
315:デフォルトの名無しさん
09/12/04 17:35:57
できないと言っていい
そもそもそんなのが必要になるのってどんなときよ
316:デフォルトの名無しさん
09/12/04 17:44:26
ListBox を Form に貼り付けてプログラミングする場合の質問です。
ListBox は、1行につき1件のデータしか表示出来ないのでしょうか?
Access の場合は、ListBox に対してテーブルそのものを貼り付けることが
出来、さらに1件目のデータを非表示にしておいて、クリックした時に
そのデータを取得するということもできたりしたのですが、
そういったことができなさそうなので確認のため、書き込みました。
317:デフォルトの名無しさん
09/12/04 17:47:51
[質問]
Panel の中に複数の RadioButton を貼り付けた場合、
現在、どの RadioButton が選択されているかをチェックするには、
Panel のプロパティからでは確認は出来ない?
貼り付けているすべての RadioButtion において
If Me.RadioButton1.Checked = True Then
みたいなコードを書いてチェックするしかない?
318:デフォルトの名無しさん
09/12/04 17:51:00
>>316
標準のListBoxはそう
まあListBoxだってDataTableをDataSourceにして
DisplayMemberとValueMemberを指定するぐらいならできる
それで不満ならネットでMultiColumnListBoxでも探せば
319:デフォルトの名無しさん
09/12/04 17:53:40
>>317
うん
まあ関数化しとけば便利だね
>>316
ListViewとかDataGridViewとか使うのは?
320:デフォルトの名無しさん
09/12/04 17:54:11
>>318
すばやい回答ありがとうございました。
とりあえずは DisplayMember と ValueMember を使う方法でやってみます。
それでうまくできない場合は、紹介していただいたコントロールや
Grid を使うなど別な方法を検討してみます。
321:デフォルトの名無しさん
09/12/04 17:57:26
>>319
回答ありがとうございます。
紹介していただいた ListView とか DataGridView の機能について
詳しく調べてみます。
初心者にも親切にありがとうございました。
322:デフォルトの名無しさん
09/12/04 17:58:58
arraylist(listbox.listindex)でいいじゃん
323:デフォルトの名無しさん
09/12/04 18:07:24
>>322
arraylist を工夫して使えば、 listbox でクリックした名前に相当する
数値データを取得することが出来るっていう意味かな?
ちょっと私の頭がついていけてなくてどういうコードを書いていけば
いいのかのイメージはついていませんが、いろいろとやってみます。
ありがとうございました。
324:317
09/12/04 18:09:15
>>319
レスありがとうございます。独りで考えていて不安だったけれど、
他の人の考えを聞く事が出来てすっきりとしました。
325:デフォルトの名無しさん
09/12/04 19:24:38
DataSetとDataGridでできるだろ。
DataGridViewじゃなくてDataGridな。