VB.NET質問スレ (Part7)at TECH
VB.NET質問スレ (Part7) - 暇つぶし2ch175:デフォルトの名無しさん
04/10/18 21:15:52
>>170
そもそもLoadイベントでなにか処理をするなんて根本から間違い。
別のタイミング(たとえばActivatedイベントなどで)行うべき。

さらに、そんな重い処理なら別スレッドで実行するようにするべき。
>>172には悪いが、DoEventsなんて下策中の下策。
というか、>>170の問題はDoEventsでは恐らく解決しないだろう。

176:デフォルトの名無しさん
04/10/18 21:57:26
質問です。
Dim Class1 As ClassName
...
Class1 = New ClassName(0)
...しばらくClass1を使う
Class1 = New ClassName(1)

こんなことしてもVBさんは勝手にお掃除してくれるのでしょうか?


177:デフォルトの名無しさん
04/10/18 22:06:37
しばらくしたら掃除してくれる

178:176
04/10/18 23:54:05
>>177
ありがとうございました。

179:デフォルトの名無しさん
04/10/19 01:46:45
その、GCの仕組みってどうなってるのかなぁ

180:デフォルトの名無しさん
04/10/19 01:50:42
ガベージをコレクトするのだよ。

181:デフォルトの名無しさん
04/10/19 01:58:07
できる!VisualStudio.NETには
参照が解除された後に適当な時期に破棄される
とある



182:170
04/10/19 10:29:39
>>175
ありがとうございました。
別スレッドで実行できる事を知りませんでした。
(Activated はFocusが移る度に実行されてしまうので向いていませんでした)


183:デフォルトの名無しさん
04/10/19 15:00:46
スクロールバー付きのテキストボックスで
キーボードからの入力は不可、表示はプログラムからのみ。

この時、テキストボックスの大きさより表示行が増えた時に、
一番下の行を常に表示したいのですが、
どういう設定をしたらいいのか教えてください。

現状は、行数が増えても同じ場所を表示してしまいます。
お願いします。

184:デフォルトの名無しさん
04/10/19 16:01:33
>>183
テキストの入力位置をSelectメソッドで一番最後に指定して、
ScrollToCaretメソッドでその位置を表示させる

具体的にソースを書けば、以下のような感じ
MyTextBox.Select(MyTextBox.Text.Length, 0)
MyTextBox.ScrollToCaret()


185:デフォルトの名無しさん
04/10/19 16:54:03
久々に回答らしい回答を見た希ガス

186:183
04/10/19 17:07:42
>>184
ありがとうございます。
早速試してみます。

187:デフォルトの名無しさん
04/10/19 18:11:22
っていうか久しぶりにVB.NETの問題を見たから答えただけだけどね

188:デフォルトの名無しさん
04/10/19 20:13:04
引数の数を可変にする方法があったら教えてください。

Function x(a As String,b As String,c As String,d As String)
という感じのファンクションを呼び出す時に、
ある部分からは、aのみ設定して
ある部分からは、a,b,c,を設定する
という様な処理をしたいのですが。

よろしくお願いします。

189:デフォルトの名無しさん
04/10/19 20:17:31
>>188
Overloads

Optionalってキーワードもあるが、これは旧VBの負の遺産だから
使わないほうがいいと思う。

190:デフォルトの名無しさん
04/10/19 23:56:34
すいません、ASP.NETを使えるレンタルサーバーを借りたのですが、使用時の心得に、
「共有サーバーとしてのデバッグ知識のない方はASPは絶対に利用しないでください!
ローカルテストと共有サーバーは環境が全く違います」
という内容がありました。
これは、VisualSTudio.netのデバッガと、@pageやTrace.write()の相違のことを言っているのでしょうか?

191:デフォルトの名無しさん
04/10/20 00:24:13
せめてそのレンタルサーバのアドレスぐらい書いてくれれば・・・

192:デフォルトの名無しさん
04/10/20 00:31:05
>191
190の2行目そのまま、ぐぐるとヒットするようね。


193:デフォルトの名無しさん
04/10/20 00:42:48
190です。
すいません,上記内容はメールで送られてきたものです。
ASPの使用心得は、以上のみでした。
常識的には、VisualSTudio.netのデバッガと、@pageやTrace.write()の相違ということでいいのでしょうか?


194:デフォルトの名無しさん
04/10/20 07:09:10
要するに>190はASP使うなってことでしょ。
わかってないんだから。

195:188
04/10/20 08:32:22
>>189
ありがとうございます

196:デフォルトの名無しさん
04/10/21 00:27:49
VB.netって、コントロール配列のやり方が、VB6.0と違いますよね。
VB6.0では、コピーアンドペーストでできたけど・・・
みなさんは、どうやってコントロール配列を作っていますか?
俺が見つけた方法は、どれもコードが汚くなる。
コードがきれいになる方法をご存知ないでしょうか

197:デフォルトの名無しさん
04/10/21 00:55:08
>>196
質問は明確に。

どうやってもこうやっても、ないものは作りようがない。
つまりまったく同じ機能を享受したい、というわけにはいかない。
それはわかってるんでしょ?

だったらなぜ、コントロール配列のこの機能と同じことができないか?
という風に質問しないの?

198:デフォルトの名無しさん
04/10/21 08:49:37
>>196
コントロール配列を使うことがあまり無いかな

たまに使うときはコンストラクタで
MyButton(1) = MyButton1
MyButton(2) = MyButton2
MyButton(3) = MyButton3
ってしておく

あとは実行時に複数登録する場合もあり

Dim i As Integer

For i = 1 To 10

   Dim item As MenuItem = New MenuItem("MenuText")
   AddHandler item.Click, AddressOf MyMenuItem_Click
   MyMenu.MenuItems.Add(item)
Next


199:K
04/10/21 16:24:03
メールソフトを作ろうと思っているのですが、
POPサーバーにログインするにはどうしたらいいかわかりません。

どなたか、教えてくれませんか~?

200:デフォルトの名無しさん
04/10/21 16:47:10
>>199
C#でちょこっと作ってみた。
URLリンク(www.asahi-net.or.jp)

もし読んでなければ、RFCを読むのがおすすめ。
URLリンク(www.goto.info.kanagawa-u.ac.jp)

201:デフォルトの名無しさん
04/10/21 16:48:18
URLリンク(www.goto.info.kanagawa-u.ac.jp)
単純なプロトコルだけあって短いな

202:ぬるぽ大明神
04/10/21 16:52:37
ここは初心者にやたらと優しいスレですね。

203:K
04/10/21 16:57:32
>>200,201
POPサーバーにログインだけするにはどうすればいいですか?

204:デフォルトの名無しさん
04/10/21 17:11:43
>>203
USERとPASSを送って待機(かQUITで終了)。
なんの意味があるかわからんが(POP before SMTPのためか?)。

205:K
04/10/21 17:18:18
>>204
>なんの意味があるかわからんが(POP before SMTPのためか?)。
その通りです。
ソース作ってもらえませんか?

206:デフォルトの名無しさん
04/10/21 17:21:26
URLリンク(dobon.net)
( ゚Д゚)ウボォアー

207:K
04/10/21 17:27:09
>>206
ソースがほしかったんですけど、なかなか聞き出せなくて…
ごめんなさい。

208:デフォルトの名無しさん
04/10/21 17:34:02
死刑確定ですか?

209:K
04/10/21 17:46:47
で、POPサーバーにログインするにはどうしたらいいのですか?

210:デフォルトの名無しさん
04/10/21 18:09:17
ググりゃ出てくるがな

211:デフォルトの名無しさん
04/10/21 18:28:49
VB.NETで縁取りした文字列の形にコントロールを切り抜きたいと思ってます。
GraphicPathに文字列を追加して、DrawPathで太めの縁を描画すると、
元のパスから外側に少しはみ出しますよね?
このはみ出た分も収まるようにコントロールのRegionを設定したいのですが、
何か方法ありますでしょうか?

212:デフォルトの名無しさん
04/10/21 23:47:49
>>211
やったことないんで間違ってたらゴメン。
これ使ってパスを「膨張」させといて、そのパスからリージョンを
作ればいいんじゃないかな。
URLリンク(www.microsoft.com)

213:K(偽者)
04/10/22 05:17:14
で、ログインのソースはまだですか?

214:デフォルトの名無しさん
04/10/22 10:05:14
>>213
今作っています。2年程待って下さい。

215:デフォルトの名無しさん
04/10/22 10:26:29
>213
2年もまてませんよね?
ソースあります。1行100円でどうですか?
全体で30万行ほどあります。

216:211
04/10/22 10:37:29
>>212
ほぼ思った通りのことができました。
ありがとうでした。

217:デフォルトの名無しさん
04/10/22 10:52:44
チェックボックス状態の配列参照の仕方について教えてください。

チェックボックスが複数あり、そのcheckd状態を
check(1),check(2)・・・といった感じの配列として参照したいのですが、
方法が分かりません。
お金は払えませんが、よろしくお願いします。

218:デフォルトの名無しさん
04/10/22 12:29:28
>217
ちょっとは過去ログ嫁

219:デフォルトの名無しさん
04/10/22 12:42:48
>>196=217?


220:K(偽者2)
04/10/22 12:52:07
>>215
分かりました、3000万円ですね。
バイトで貯めますので、3年待ってください。

221:217
04/10/22 18:00:14
>>218
検索のヒントとなるキーワードだけでもお願いします。
ちなみに、フォームのデザイン上CheckListBoxでは無く、
CheckBoxでの配列参照を考えています。
お願いします。

222:デフォルトの名無しさん
04/10/22 18:27:01
現在ログオンしているユーザーを取得するのはどうすんの?
GetUserNameだとユーザー切り替えに対応してないから無理なんだけど....
教えてエロイ人

223:デフォルトの名無しさん
04/10/22 18:30:07
デジャヴを感じる・・・

224:デフォルトの名無しさん
04/10/22 23:16:56
VB.NET のプロジェクトに、VB(というかWindowsプログラミング)経験無しで
いきなりつっこまれました(いままで Unix で C か Java)

VB.net で業務画面アプリを作っていて、サーバにXMLで電文を
送っているんだけど、xsd というファイルは XML スキーマですよね。
xsx と resx っていうのがセットであるんだけど、この二つはなに?
たとえばソースコードを VSS なり CVS で管理するとき、
xsd は必要だけど、xsx や resx もあった方がいいの?

225:デフォルトの名無しさん
04/10/23 01:25:34
通信処理で、非同期スレッド内で受信データを読込み、読込みが完了したら、イベントを発生させ
フォームでそのイベントを受け取ろうとしています。
で、フォームでイベントを受けた時に、TextBoxのプロパティをウォッチウィンドウで参照しようと
するとプロパティの欄が全て"Error:Cannot obtain value"となります。
いろいろ試したのですが、なぜこのようなエラーが発生するか見当もつきません。
どんな些細なことでもかまいませんので、皆様の意見をお聞かせください。
簡単なソースを付けておきます。(フォーム上にテキストボックスとボタンを貼り付けてください。)

226:225
04/10/23 01:26:00
Public Class Form1
Inherits System.Windows.Forms.Form
WithEvents test_cls As New test
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
test_cls.Start()'受信スレッド実行
End Sub
Private Sub test_cls_test_Event(ByVal count As Integer) Handles test_cls.test_Event'受信完了したイベント
TextBox1.Text = count'ここで、TextBox1をウォッチウィンドウでデバックしようとすると、"Error:Cannot obtain value"となる
End Sub
End Class

Class test'簡単な通信クラスのつもり
Public Event test_Event(ByVal count As Integer)
Private m_Thread As Threading.Thread
Public Sub Start()'スレッド開始ポイント
m_Thread = New Threading.Thread(AddressOf test_Thread)
m_Thread.Start()
End Sub
Sub test_Thread()'受信データチェックスレッド
Dim Count As Integer
While (1)
RaiseEvent test_Event(Count)'受信データが有りとみなして、イベントを発生させる
Count += 1
System.Threading.Thread.Sleep(10000)
End While
End Sub
End Class

227:デフォルトの名無しさん
04/10/23 01:35:36
>>225
たぶんDOBON.NETさんのメルマガの25号に書いてあるようにすればいいんじゃないかな。

228:225
04/10/23 01:58:55
>>227
ありがとうございます。まさに、行いたい事がそのまま書いてありました。
以前BeginInvokeも試したのですが、
その時は、サンプルもほとんどなかったのでどうやら使い方が間違っていたみたいです。
サンプルも豊富に載っているみたいなので、ちょっと勉強してきます。

229:デフォルトの名無しさん
04/10/23 12:06:14
>>222
ここにその方法がある
URLリンク(forums.belution.com)

でもVC用なので俺はわからん
誰かVB用に書き直してくれ

230:デフォルトの名無しさん
04/10/23 17:01:05
仮に王とジンの強さが同じくらいとする。
でも、ネテロや他のハンターが王を倒したら、ジンの強さって何?ってことになる。
しかも、その後の展開で、旅団との強さのバランスが取りにくい。

よって、
ジン>>>王=クロロ>ネテロ>>>ネフェルピトー、シャウアプフ、モントゥトゥユピー>カイト>>>ゴン、キルアほか討伐メンバー

これくらいが妥当。

231:デフォルトの名無しさん
04/10/23 23:22:16
VB.NETでADO.NETを扱う質問です。
ACCESSデータベースに接続して編集をする場合
OleDbParameterを
CurrentパラメーターとOriginalパラメーターと2つ用意することは
わかったのですが、
パラメータ自動生成を使った場合
OleDbUpdateCommandのパラメーターに
NAMEカラムなら
NAMEというCurrentパラメーターと
Original_NAMEというOriginalパラメーターと
Original_NAME1というOriginalパラメーターができています。
3つ目のOriginal_NAME1は何の目的で生成されているのですか?


232:デフォルトの名無しさん
04/10/23 23:26:07
>>230
すざましい誤爆だな。

233:デフォルトの名無しさん
04/10/24 15:27:55
すいません、初心者の質問をさせてください(初心者質問スレはないようなので)。

3個の数字をタイムラグをつけて次々と表示させたいのですが、
      number1.Text = number1
      (空ループorTimer プロパティ)
number2.Text = number2
      (空ループorTimer プロパティ)
number3.Text = number3
としても、3つの数字・ラグ・数字・ラグ・数字のようにはならず、ラグのあとに
3つの数字がまとめて出てきてしまいます。
当方通常のBASICは使ったことがあるので同じノリでこのようにやってみた
のですが、なぜそうなってしまうのか全く分かりません。

どうすればいいのか、何故そうなるのかを教えていただければ幸いです。




234:デフォルトの名無しさん
04/10/24 17:47:19
number1.Text = number1
(空ループorTimer プロパティ)
number2.Text = number2
(空ループorTimer プロパティ)
number3.Text = number3
(画面の描画)

となってるから。

235:224
04/10/24 21:19:59
>>224
すみません、レスをいただければうれしいです。

236:デフォルトの名無しさん
04/10/25 19:12:56
Dim ApplicationFolder As String = "\\192.168.100.1\ftp\"
Dim fileName As String = nekomimi
Dim codeNo As String = 67890
Dim WriteFileStream As FileStream = New FileStream(ApplicationFolder & a & ".mit", FileMode.Create, FileAccess.Write)
Dim TextStreamWriter As StreamWriter = New StreamWriter(WriteFileStream, Encoding.GetEncoding("Shift_JIS"))
TextStreamWriter.WriteLine(b)
TextStreamWriter.Close()



237:デフォルトの名無しさん
04/10/25 19:13:21
上記のようなプログラムで、ファイル名”nekomimi.mit”を作成してから、ネットワークで共有されたディスク内に格納
しておき、メールで【\\192.168.100.1\ftp\nekomimi.mitをクリックしてください。】というリンクつきのアナウンスを
流し、アドレスクリック一発で.mitに関連付けておいた.exeを起動、codeNoを読み取ってから変数aに代入したいのですが
初心者用の書籍には、こういう使い方が出ていません。

どなたか、こういう使い方をされた事のある方、ヒントをいただけないでしょうか?

238:233
04/10/25 19:50:03
>>234
それは何故なんでしょう?
何かいい手はありますでしょうか?



239:デフォルトの名無しさん
04/10/25 22:20:18
>>238
明らかに
> (空ループorTimer プロパティ)
のところが悪さしてるのだから、その部分のソースをupするべし。

240:デフォルトの名無しさん
04/10/25 22:22:50
>>238
間に application.doeventsだったかな?
それいれたらいけるんじゃないかな


241:デフォルトの名無しさん
04/10/26 01:08:39
DataGridのHeaderのHeightはどうやったら調整できますか?

242:233
04/10/26 01:33:11
>>240
それを入れたらうまく行きました。ありがとうございます。
ただ、それってラグの間に操作を受け付けるようにする処理ですよね?
全然関係ないように思えるんですが、なぜそれでうまく行くんでしょう…?

243:デフォルトの名無しさん
04/10/26 02:59:53
WebClient.DownloadFileを使用して
1本のファイルをダウンロードするプログラムを作っています。
ダウンロード中にプログレスバーで進捗を表示したいのですが、
ファイルの何%をダウンロードしたかを取得してリアルタイムに表示する方法ってあるのでしょうか?


244:デフォルトの名無しさん
04/10/26 03:28:00
>>243
WebClient.DownloadFileじゃ無理。
WebRequest, WebResponseを使ったストリーム受信を行う必要がある。

245:243
04/10/26 03:43:46
>>244
ありがとうございます。さっそく調べてみます。

246:でき
04/10/26 08:54:03
すいませんが、どなたか、VB.netにてwin2000、winXPの端末がコンピュータロック中か取得する方法をご存知でしょうか?


247:デフォルトの名無しさん
04/10/27 21:24:01
NULL文字で終わるANSI文字列を受け取る関数を、CのDLLで実装しました。

void __stdcall Func(const char *s);

VB.NETから利用するために、以下のように定義したところ、

Declare Sub Func Lib "testdll" (ByVal s As String) ' (1)

文字列変数に"あいうえ"という文字列を格納し、この変数をFunc()に渡すと、
関数呼出し後、文字列変数の中身が"あい"に変わってしまいました。

MSDNを読んだところ、そもそも(1)の宣言だと文字列がBSTRに解釈されてしまうため、

Declare Sub Func Lib "testdll" ( _
 <MarshalAs(UnmanagedType.LPStr)> ByVal s As String) ' (2)

と宣言すべきである、という事がわかり、試しに(2)のとおり宣言してみたところ、
関数呼出し後も文字列変数の中身は変わりませんでした。

ただ、(1)の形式で変数の中身が変わってしまう理由が分かりません。
なぜ(1)の形式だと、このような現象が発生するのでしょうか?

248:デフォルトの名無しさん
04/10/27 22:18:29
>>247
症状は全然ちがうけど、同じように.NET側で確保した領域をポインタ渡しする処理で
原因不明のトラブルで悩んだことがあったけど、(.NET FrameworkはVer1.1)
このあいだでたSP1のFrameworkをインストールしたら解消した。

もしまだSP1にしてなければ試してみては?

249:デフォルトの名無しさん
04/10/27 22:59:05
>>248
ソレダッ!と思い、早速SP1を当ててみました。
しかし、現象変わらずでした。

250:240じゃないけど
04/10/28 01:22:38
>>242
>ただ、それってラグの間に操作を受け付けるようにする処理ですよね?

いやいや、メッセージ・ループからメッセージを取ってくるんでしょ?キューに
たまったメッセージが処理できないで待ってるんだから。

この説明でわかりますか? Windowを扱うシステムってメッセージ駆動に
なっているのだという基礎が出来てないと理解できないと思うが。


251:デフォルトの名無しさん
04/10/29 01:47:20
VB.netでMIDI音源に、音を出させるにはどうすればいいですか?
MIDIファイルの再生でなく、指定した音、又は音列を再生させたいんですけれど。

252:デフォルトの名無しさん
04/10/30 01:01:45
>>251
URLリンク(wisdom.sakura.ne.jp)
ここ見ればわかるはず。現に俺はここ見ただけでその手のコードが書けた。
見てもわからなかったら諦めるよろし。

ま、普通このぐらいのことGoogleで検索して調べるわけで、
そんな手間すら惜しむお方には無理に5万両。

253:251
04/10/30 01:23:22
すまん。
"VB.net" MIDI
でしか検索してなかったんで、Cのコードを参考にするって考えが浮かばなかった。
が、今一よくわからん……。

とりあえず、DirectX SDK落としてきたよ。

254:251
04/10/31 01:25:31
ダメだorz。やっぱりわからん。
環境は
言語:VB.net
IDE:SharpDevelop
SDK:DirectX 9.0 SDK Update (October 2004)
で、>>251に書いた様なコトをしたいんですけど……。

255:251
04/10/31 01:51:11
URLリンク(gpwiki.org)
まずは↑ここを参照しつつ、WAVを再生させる事には成功したんで、
なんとか頑張ってみます。

256:デフォルトの名無しさん
04/10/31 01:59:14
Managed DirectXがDirectMusicをサポートしない以上WinAPIの方が手っ取り早そうだけどなぁ……。

257:フナ太郎
04/10/31 03:07:02
マネージド、マネージド うっせーんだよ

258:252
04/10/31 11:26:26
>>251
貶すだけじゃ後味悪いんで一言。

どうしてもDirectX使わなきゃダメなの?
>>256も書いてるけどWinAPI使えばびっくりするぐらい簡単だよ。
いろいろ調べながらでも1,2時間もあればとりあえず音を出すことは出来ると思う。

とりあえず使う関数はmidiOutOpen,midiOutShortMsg,midiOutReset,midiOutClose
これだけだったはず。(実際に音を出したり止めたりするときに使うのはmidiOutShortMsgだけ)

APIの宣言の仕方がわからないなら、APIの関数名にVBってキーワード付けて
検索すればVB6での宣言が出てくるはずだから、それを少し改変するだけでいい。
定数の値も同じ要領で調べられるはず。

気をつける点は、

(1)VB6の LongはVB.NETではIntegerになっている。(2)引数の渡し方のデフォルト、
つまり明示的に書かなかった場合VB6ではByRefなのに対しVB.NETではByVal
(3)引数のうちデバイスハンドルは、VB6ではLongになっているがVB.NETでは
IntegerではなくIntPtrにしたほうがいいかも。

こんなところかな。

259:デフォルトの名無しさん
04/11/01 00:32:06
.NETでWinAPIを使うのは良くない、みたいに聞いていたので、DirectXを使おうとしてたのですが。

で、色々と弄ってみましたが、エラーは起きないものの、
再生されない……。参考にしたVBのサンプル(URLリンク(tokyo.cool.ne.jp))付属のexeでは出てるのにOrz。

こんな感じなんですが↓

260:デフォルトの名無しさん
04/11/01 00:38:12
Private hMid As IntPtr
Private Note As Integer
~~
Public Declare Function midiOutOpen Lib "winmm.dll" _

    Alias "midiOutOpen" _

    (lphMidiOut As IntPtr, _

    ByVal uDeviceID As Int32, _

    ByVal dwCallback As Int32, _

    ByVal dwInstance As Int32, _

    ByVal dwFlags As Int32) As Int32



261:デフォルトの名無しさん
04/11/01 00:38:49
Public Declare Function midiOutClose Lib "winmm.dll" _

    Alias "midiOutClose" _

    (ByVal hMidiOut As IntPtr)As Int32

    

Public Declare Function midiOutShortMsg Lib "winmm.dll" _

    Alias "midiOutShortMsg" _

    (ByVal hMidiOut As IntPtr, _

    ByVal dwMsg As Int32) As Int32
~~

262:デフォルトの名無しさん
04/11/01 00:39:17
Private Sub schmerzFormLoad(sender As System.Object, e As System.EventArgs)

    Dim Ret As Int32
    Ret = midiOutOpen(hMid,-1,0,0,0)

End Sub



Private Sub schmerzFormClosed(sender As System.Object, e As System.EventArgs)

    Dim Ret As Int32

    Ret = midiOutClose(hMid)

End Sub

263:デフォルトの名無しさん
04/11/01 00:39:43
Private Sub Button1MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs)

    Dim Note, Inst, Vol As Long
    Note = 70       '音階(&H00から&H7F(127))
    Inst = 30       '楽器No(GM音色番号に準拠?)
    Vol = &H7F      '音量(&H00から&H7F(127))
    
    '楽器の変更(1バイト目:データの種類&チャンネル番号
    '            2バイト目:音色番号)
    midiOutShortMsg(hMid, &HC0 + Inst * 256)
    
    '音を鳴らす(1バイト目:データの種類&チャンネル番号
    '            2バイト目:音階
    '            3バイト目:ボリューム)
    midiOutShortMsg(hMid, &H90 + Note * 256 + Vol * 256 * 256)

End Sub


264:デフォルトの名無しさん
04/11/01 00:40:29
Private Sub Button1MouseUp(sender As System.Object, e As System.Windows.Forms.MouseEventArgs)

    '消音
    midiOutShortMsg(hMid, &H80 + Note * 256)

End Sub

265:デフォルトの名無しさん
04/11/01 00:43:04
ぐわ、改行が倍増してるOrz。なんだこれ……。
荒らしみたいになってまってすまない。

266:252
04/11/01 08:28:03
動かない理由はまず第一にmidiOutOpen で取得したデバイスハンドルを
捨ててしまっているから。
デバイスハンドルで、メッセージを送信するデバイスをOSに指示するんでしょ。

267:デフォルトの名無しさん
04/11/01 11:43:59
すいません、少しお聞きしたいのですが
ファイル(画像データ、テキストファイル)を16進数に変換したいのですが
なんか、いい方法はありませんでしょうか?
目的は友人と暗号化の勉強をしようと思いまして
ファイル→16進数化→暗号化→復号化→16進数化→ファイル
という流れなのですが・・・
自分が使用できる言語はC,Java,VB.netです

268:デフォルトの名無しさん
04/11/01 11:48:04
>>267
釣りはよせ

269:デフォルトの名無しさん
04/11/01 11:50:23
>>268
たぶんマジなんじゃない?

270:デフォルトの名無しさん
04/11/01 12:06:27
stringSize = e.Graphics.MeasureString("”  名医  ”", f)
MeasureString でお尻にスペースがあると正常にサイズを返さない。
なんとかする方法はないんでしょうか?


271:デフォルトの名無しさん
04/11/01 12:23:09
お尻に.を付けて求めたサイズから少し減らす

272:252
04/11/01 12:40:51
>>259

>>258に書いたとおり、VB.NETではデフォが値渡しに変更されているから

midiOutOpen の
>lphMidiOut As IntPtr
ここはByRefを指定してやる必要がある。

それでも音がでなければ、メッセージのフォーマットが間違ってるか
OSの規定のMIDI音源が設定されてないんじゃないかな。

273:デフォルトの名無しさん
04/11/01 13:00:47
>>270
StringFormatオブジェクトのFormatFlagsにStringFormatFlags.MeasureTrailingSpacesを設定し、
MeasureStringのStringFormatをパラメータに使うオーバーロードを使って測定する。

274:270
04/11/01 17:06:04
>273
ありがとう。やってみますしかしなんか難しそうですね。

275:270
04/11/01 17:08:15
>お尻に.を付けて求めたサイズから少し減らす
 点をつけて求めて、1文字分は引くわけですね。なるほど。


276:デフォルトの名無しさん
04/11/01 17:09:13
PrintPreViewDialogとPrintDocumentコントラールを使ってプリントをおこないます。
この場合
PrintDocument1_PrintPage でプリント処理をおこないますが、1ページ以上の
データがある場合は、1ページ出力完了で再度このプログラムに飛んでくる
ようにする必要がありますが、どうやって実現するのでしょうか


277:デフォルトの名無しさん
04/11/01 17:15:27
引数PrintPageEventArgsのHasMorePageをtrueにしてやれば自動的にもう一度PrintPageイベントが発生する。

278:デフォルトの名無しさん
04/11/01 17:17:10
HasMorePagesだった。
最後のページになったら一応明示的にHasMorePagesをfalseにしておく。

279:デフォルトの名無しさん
04/11/01 17:31:04
>278
ありがとう。やってみます。


280:デフォルトの名無しさん
04/11/01 17:45:52
 VB.netではFilestreamというのが新しく出てきましたが、
 Fileアクセスでランダムアクセスはどのようにやるのでしょう。
20Kの固定長レコードが10000件ありますが、適当なIOコントロール
関数といえば、どれになるのでしょうか?


281:デフォルトの名無しさん
04/11/01 17:48:49
FileStream.Position

282:259
04/11/01 22:31:17
>>252
つきあっていただいてありがとうございました!

>動かない理由はまず第一にmidiOutOpen で取得したデバイスハンドルを 
>捨ててしまっているから。 
というのが、今一よくわからないのですが。
Ret = midiOutOpen(hMid,-1,0,0,0)

Private hMid As IntPtr 
に入ったんじゃないんですか?

……ってか、それは関係なかったみたいで、
>midiOutOpen の 
>>lphMidiOut As IntPtr 
>ここはByRefを指定してやる必要がある。 
を勘違いして、3つの宣言全部By Ref lphMidiOut As IntPtrにしてまったが、
直したら音出ました!
停止がされなかったが、Noteが中と外で重複してたのが原因でした。

283:デフォルトの名無しさん
04/11/02 21:52:05
>281
ありがとう。 
 ストリングをFilestreamで保存して、指定のPositionに
seekしたいのですが、このようとではバイト配列に変換する必要が
あるようです。
 Stringをバイト配列に変換する方法はどうやるのでしょう?


284:デフォルトの名無しさん
04/11/02 22:14:48
StreamWriter で FileStream をラップしてやるか、System.Text.Encoding クラスを使う。
前者の方が簡単。

285:デフォルトの名無しさん
04/11/03 03:49:22
>284
ありがとう。 なんとかできそうです。

286:デフォルトの名無しさん
04/11/03 10:54:06
見つけられなかったので、教えて下さい。
VB.NETに正規表現を判定する関数ってないでしょうか?
英大3文字なら[A-Z]{3}ってヤツです。

287:デフォルトの名無しさん
04/11/03 11:06:17
Regexp()

288:286
04/11/03 13:37:28
>>287
即レスどもです。
これってVBScriptのObjectだけど、
VBから使えるのですか?

289:デフォルトの名無しさん
04/11/03 13:51:33
>>288
君頭おかしいの?
MSDNすら検索しない奴に今日を生きる資格なし。

290:デフォルトの名無しさん
04/11/03 14:00:57
ああうん、正しくはRegexクラスだな。

291:286
04/11/03 15:45:42
>>289-290
ありがと。
MSDNにそのまんま有りますね。
検索済みと勘違いしてた、スマン。

292:デフォルトの名無しさん
04/11/04 20:50:24
ストアドの戻り値を数値で受け取る方法をご存知の方いらっしゃったら教えて下さい。
Count(*)を打ってその結果件数を受け取りたいのですが(´・ω・`)
SQLServer2000でやっております。

パラメータを渡した後にExecuteReaderを実行してストアドを呼び出し
Console.ReadLineで結果を読み取ろうと思ってたのですが、
根本的に間違えてたらすいません。

宜しくお願いします。

293:デフォルトの名無しさん
04/11/04 20:57:15
ええと何でConsoleが出てくるのかな……?

294:デフォルトの名無しさん
04/11/04 21:08:54
>>293
いきなり違うんですか Σ(´Д`:)
初めてなんで色々ネットで調べてみたんですが orz

MSサイトで

While AAA.Read()
Console.ReadLine(以下略

という記述を見つけたのでこれを使おうと思ってた次第です。









295:デフォルトの名無しさん
04/11/04 21:15:10
そこと思われる部分のMSDNの記述

> Console.WriteLine((myReader.GetInt32(0) & ", " & myReader.GetString(1)))

……なぜConsole.ReadLine?
SQL文によってmyReader.Get...を適当に書き換えれば良いわけだが。

296:デフォルトの名無しさん
04/11/05 01:31:32
>>295
その記述は初めて見ました orz

調べ方がマズかったのかSQLCommandってのを調べて掘ってたら
Console.ReadLineの記述があったので、ストアドの実行結果を読み取るのかと思い
Console.ReadLineが使えるのかなと思った次第です。

人手不足で開発に回されたばかりなんですが無知で申し訳ないです(;´д⊂)
もっと勉強してから出直します。すいませんでした。


297:デフォルトの名無しさん
04/11/05 02:09:09
>>296
イ㌔。焦るとどんどん正解から遠ざかるものだ。そういうときは一服しる。

298:デフォルトの名無しさん
04/11/05 11:27:47
取りあえずアレだ。

・該当部分のコードを書く
・どこかのページを参考にしたなら参照したページのアドレスを書く
・例外が投げられているなら例外メッセージを書く

をしてくれないとアドバイスもしようがないぞ。

299:デフォルトの名無しさん
04/11/05 11:35:51
>>297
タバコの数だけ増えていきます orz

>>295
ExcuteReaderメソッドの説明を読んだのですが
実行結果をConsoleに「書き込む」という意味合いでしょうか?(つД⊂)

やりたいのはそのConsoleに書き込んだ値を見て処理を分岐させたいのです。
count(*)してその件数で処理変更という具合なのですが。

無知なのは重々承知しておりますが、よろしければ教えて頂けないでしょうか?


300:デフォルトの名無しさん
04/11/05 11:55:30
>>298
確かにそうですね(´・ω・`)
申し訳ないのが作業をするPCが手元に届いておらず、全て机上でのコードなのです。
来週ぐらいにPCが来るそうなのですが、VB.NETもSQLServerも動かしたことないんです。
ワードとエクセルしかやったことがなくて(;´Д⊂)

いきなり開発に回されてメモ書きで作る処理を指示されて色々調べたのですが…。
通るかどうかもわからないのですが、以下にコードを。


Dim mySQLcon As New SqlClient.SqlConnection
Dim myProc As String = "ストアド名称"
Dim myCommand As New SqlCommand(myProc, mySQLcon)
Dim myReader As SqlDataReader

mySQLcon.ConnectString = "接続情報"
mySQLcon.Open
myCommand.CommandType = CommandType.StoredProcedure

myCommand.Parameters.Add("@ユーザID", SqlDbType.VarChar).Value = "ユーザID文字列"
myCommand.Parameters.Add("@パスワード", SqlDbType.VarChar).Value = "パスワード文字列"
myReader = myCommand.ExecuteReader(CommandBehavior, SchemaOnly)

当初はここにストアドの実行結果(count(*)の結果件数)が入ると思っていたので

If myReader = 0 Then
処理1
Else
処理2
End If

というコードを脳内で展開してたのですが、Consoleの記述を見つけ>>292に繋がるのです(´・ω・`)

301:デフォルトの名無しさん
04/11/05 12:05:30
どこに質問を書くべきかわからなかったのですが、一応vb.netのことなのでここに書かせてもらいます。
Microsoft access2000とvb.net2002を使っています。
データベースのアクセス履歴をとってそのアクセスした時間をデータベースに記録する
というプログラムを書いているのですが、日付/時刻型のデータにvb.net側で現在時刻を取ったときは
[年/月/日 時:分:秒]というデータが格納されているのですが、それをaccessに送ると[年/月/日]の部分しか受け取ってくれません。
[時:分:秒]の部分は[00:00:00]となっています。

Dim r As DataRow

r = DsAccess1.T_アクセス履歴マスター.NewRow()
r("アクセス日時") = Date.Now    ←この時点で[年/月/日 時:分:秒]
r("アクセス元") = "制作部"
r("T_商品仮変更マスター") = "開始"
r("T_商品変更履歴") = "開始"
r("T_仕事一覧") = "開始"
DsAccess1.T_アクセス履歴マスター.Rows.Add(r)
odaAccess.Update(DsAccess1, "T_アクセス履歴マスター") ←ここでaccessに渡すと[年/月/日]

こんな感じのプログラムです。
ちなみにaccessの方で「アクセス日時」の設定は、
データ型:日付/日時型
書式:日付(標準) 1994/06/19 17:34:23
値要求:はい
です。
一度、これを解決するために、テキスト型で値を保存するという方法をとったのですが、
これだと並べ替えをしたときに9:55:55の方が10:00:00より未来だと取られてしまってだめでした。

どうすればちゃんと時刻まで渡すことができるかご教授ください。

302:デフォルトの名無しさん
04/11/05 12:57:33
>>300
まず、SqlCommand.ExecuteReaderメソッドは、
CommandTextプロパティに設定されたSQL文/ストアドプロシージャをデータベースに投げて、
その結果のストリームを読み取る為のSqlDataReaderクラス(のインスタンス)を返すわけだ。

SqlDataReaderクラスは、あくまでストリーム(まあ流れのあるデータって事)を読み取るためのクラス。
実際のデータを読み取るのはこのクラスの各種メソッドを使う。

例えばファイル(ファイルもストリームの一種)を読み取るクラスを考えてみて、
ファイルを開けただけでいきなり全部のテキストが返ってきても困るのは分かるよな?
それは実はバイナリファイルだったのかも知れないし、欲しかったのは1行目だけだったかも知れないのに。

そういうわけで、ストリームから読み取るクラスにはどう読み取るかを指定して実行するメソッド群が用意されている。
SqlDataReaderクラスでは、Readメソッド、GetBytesメソッド他の類が用意されている。

Readメソッドは、「今見てるところを次のレコードに進める」メソッドだ。
クエリの結果はレコード一つとは限らないと言うかそっちの方が多いだろう。
多くのサンプルで While (sqlDataReader.Read) となってるのは全てのレコードを読み取る為のコードだ。
ちなみに一番初めにSqlDataReaderが作られた時の「今見てるところ」はクエリ結果の最初のレコードの前。なのでデータを読み取るにはまずReadメソッドを使う必要がある。

さて、一つのレコードには普通複数の行があるわけで、それを取得するのがGet...メソッドだ。
「今見てるところの特定の列の値」をある型として読み取るメソッド群だな。
mySqlDataReader.GetInt32(0) なら今見てるレコードの0列目(最初の列)をInt32(VB.NETではInteger)として取り出すわけだ。

要約すれば、ExecuteReaderから返ってきたSqlDataReaderをReadしてGetInt32(実際はCount(*)が返してくる型に一致するGetなんとか)しろということ。

さて、これで別にConsoleクラスを使う必要が無い事が分かってもらえたかな。

>>301
こいつかね。
URLリンク(www.atmarkit.co.jp)
@ URLリンク(www.google.com)

303:デフォルトの名無しさん
04/11/05 13:45:56
>>302
御丁寧に教えて頂き大変感謝しております(;´Д⊂)

myReader = myCommand.ExecuteReader(CommandBehavior, SchemaOnly)
の後に

While myReader.Read() ←結果の最初のレコードに移動(sqlDataReaderのOpen?)
 Integer型の変数 = mySqlDataReader.GetInt32(0) ←結果をIntger型で格納する
End While

myReader.Close ←sqlDataReaderを閉じる

Integer型の変数にcount(*)の結果が格納される

この解釈で合っておりますでしょうか? orz
複数行数があった場合は型に合わせた変数を作って、Get...を型に合わせて指定し
レコードの何列目かを指定する(GetInt32(1)などのように)とそのレコードのデータが取れる。

と解釈したのですが(´・ω・`)


304:デフォルトの名無しさん
04/11/05 14:03:31
>>303
そんな感じ。

>  myReader = myCommand.ExecuteReader(CommandBehavior, SchemaOnly)
ExecuteReader の引数は CommandBehavior列挙型 一つだけで、列挙型の指定は「型名.メンバ名」。
だから CommandBehavior.SchemaOnly

>  While myReader.Read() ←結果の最初のレコードに移動(sqlDataReaderのOpen?)

ストリームそのものはExecuteReaderから返ってきた時点で開かれている。Closeするかストリームの終わりに達するまで、データはいつでも読みとれる。
//SqlDataReaderは、ストリームの実体ではなくて、ストリームを読み取る処理を簡単にするためのクラスである、というのはここでは余談。
あとはどこを読むかを決めるだけ。
一回目のReadで一番始めのレコードに目をやるわけだ。

>  複数行数があった場合は型に合わせた変数を作って、Get...を型に合わせて指定し
複数列、な。

あと必ずクエリ結果のレコードが一つに限られるならWhileする必要もないとか(一度だけ {ReadしてGet...して} Close)。

305:301
04/11/05 14:57:14
>302
まさにそれでした。ありがとうございます。
ただ、accessの書式が「年/月/日 時間」なのに対しvb側の書式が「日/月/年 時間」だったことが
問題となって「データ型が一致しません」というエラーが出たのですが、これはvb側を「Date.Now.Yera & "/" & Date.Now.Month & …」
とすることでなんとか解決することができました。

306:デフォルトの名無しさん
04/11/05 15:27:47
>>304
ありがとうございます(;´Д`)
訂正も含め助かりました。

>>295のレスの意味もなんとか掴めました。
重ね重ね感謝致します(;´Д⊂)

307:デフォルトの名無しさん
04/11/05 16:20:29
ノータッチデプロイで起動したEXEに引数渡したいんだけど、
http://サーバ名/hoge.exe?a=b
のように起動してもTypeInitializationExceptionが出て画面表示すらされない。
試しに引数処理のロジックをコメントアウトしてもエラーがでる。
というか、?以後を付けるともうエラーがでる。
なぜだか知ってる人いますか?

308:デフォルトの名無しさん
04/11/05 23:05:23
>>307
これ?
URLリンク(msdn.microsoft.com)

309:デフォルトの名無しさん
04/11/05 23:09:57
>>305
そういうときはそんな回りくどいことをせず、DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") とでもしる。

310:デフォルトの名無しさん
04/11/07 01:11:29
質問があります。
SqlCeDataReaderではHasRowsメンバが無いようですが、
レコードが存在しない事を検出するにはどうすれば良いのでしょうか?

311:デフォルトの名無しさん
04/11/07 01:22:25
>>310
.NET Framework1.1でHasRowsプロパティが追加されてるが。
1.0でならReadしたら分かるんじゃないかな。

312:デフォルトの名無しさん
04/11/07 02:26:29
ファイルの保存をするにはButtonコントロールにどんなプログラムを書けばいいんでしょうか?
俺の持ってる教本には載っていなかった・・・
新しい本を買うお金もないし立ち読みしても頭に入らないだろうし
エロイ人教えてください><

313:デフォルトの名無しさん
04/11/07 02:29:45
>>312
漠然としすぎだが取りあえずファイルに書き込む部分はこれ。
URLリンク(dobon.net)

314:デフォルトの名無しさん
04/11/07 03:17:01
>>313
ありがとう!
後で試してみます

315:デフォルトの名無しさん
04/11/07 06:21:19
form1.show vbModalがしたいんですが、VB.NETの場合どうするのでしょう。
1)ボタンを押すたびに新しいフォームが立ち上がります。
2)親フォームは子がshowしているときは黙らせたい
以上よろしく。

316:デフォルトの名無しさん
04/11/07 07:14:52
>>315
.showdialog はだめなんけ?


317:デフォルトの名無しさん
04/11/07 09:55:15
formのコンストラクターってなんなん?
 form_loadか?


318:デフォルトの名無しさん
04/11/07 09:57:02
>316
 ありがと。それです。

319:デフォルトの名無しさん
04/11/07 10:01:43
>>317
フォームもクラスなのでクラスと同じNew。

というかform_load? まさかVB6か?
VB6でも当然フォームもクラスなのでクラスと同じ
クラス(フォーム)名_initialize。

320:デフォルトの名無しさん
04/11/07 10:26:24
>>311
ここをみる限りではHasRowsメンバは無さそうですが・・・。

URLリンク(www.microsoft.com)

SqlDataReaderやOleDataReaderにはあることは知っているんですが・・・。
CompactFrameworkならではの制限なんでしょうか?
そうすると、やはり読んでみて、エラーをcatchするしかないんでしょうか?

321:デフォルトの名無しさん
04/11/07 10:33:18
>>320
いや失敬、2.0からだった。

別にレコードがなくてもReadは例外を投げないはずだが。
単にFalseを返してくるだけで。

322:317
04/11/07 14:26:01
>319
>フォームもクラスなのでクラスと同じNew。
ところが
Public Class frmData
Inherits System.Windows.Forms.Form
Public Sub New()

End Sub

ってやるとNewのところが波線になる。書き方まづいの?


323:デフォルトの名無しさん
04/11/07 14:41:00
>>322
新しいフォームプロジェクトに追加したときに、
既に自動作成されているコード(Regionディレクティブで畳まれてる)見てみ。

324:フナ太郎
04/11/07 14:42:37
>>322
やってみたけど波線になんないよ。もっと
外側に原因がありそうだ。

325:317
04/11/07 15:01:40
>323
Regionに入ってた。ありがと。


326:317
04/11/07 15:05:25
VB6で使ってたDLLを呼び出す関数って、NETではmodule1の中に書いたら
動いたけど、使い方はそれでいいの?


327:323
04/11/07 15:36:45
便乗質問なんだけど、コンストラクタをオーバーロードするときって
どうしてOverloads付けなくていいんですかねえ?

MSDNのどこ見てもこの辺触れられてないように思うんだけど。

328:デフォルトの名無しさん
04/11/07 16:18:57
VB.NETって開発環境を消したらうごかなくなる?
VB6のときは、そのまま出荷ってのが多かったけど。


329:デフォルトの名無しさん
04/11/07 16:29:09
.NET Frameworkを消したら動かない。
VBランタイムみたいなもん。
.NET Frameworkのみで開発もできるから開発環境を消したら動かなくなると言うのは正しい。
VB.NETのIDEやSDKを消しても問題はない。

330:デフォルトの名無しさん
04/11/07 18:18:09
>329
ありがと。も一つ聞きたいんだけど、以前開発が終わったのでVB6.0を削除したのだけど
バグが出たのでもう一度インストールしようとしたら、インストールできなかった。
VisualStudio6.0だけど。 .NETもそんなこと起こるのかなー。
だから怖くて消せない。どうせバグ出るし。なんか対策あるんだろか?

331:デフォルトの名無しさん
04/11/07 18:21:15
>>330
なにが言いたいのかよくわからないけど
まだ起こってもいない問題の対策聞くってどういうこと。。。?

332:最凶VB厨房
04/11/07 19:07:55
>>327
URLリンク(www.microsoft.com)

333:デフォルトの名無しさん
04/11/07 21:48:55
URLリンク(ame.dip.jp)
上のアドレスの画像の赤で囲ってあるコントロールってなんですか?

334:最凶VB厨房
04/11/07 21:49:19
スマン誤読。

基底クラスのコンストラクタが引数なしのみ()
派生クラスのコンストラクタが(a As String)と(a As String,b As String)
のものを作りたいとする。
Overloadsキーワードをメソッドで使うと派生クラスから見た場合、
()と(a As String)と(a As String,b As String)となる。
(仮にコンストラクタにOverloadsをつけるとすると)
Overloadsの意味がメソッドとコンストラクタでは意味が
異なってしまう。
+基本的に基底クラスと派生クラス間の問題を解決するもので
ある(Overrides,Shadows,Mustほにゃららetcも)。
+コンストラクタは特別なメソッドである。
これらのことを考慮すると、コンストラクタにOverloadsはつけないと
いうことに自然となると思われ。推測。

335:デフォルトの名無しさん
04/11/07 21:58:29
>>333
ラジオボタン

336:327
04/11/08 00:19:17
>>334
レスありがとう。
正直勉強不足で書いてもらったこと完全にはわからないけど、
Overloadsつけると継承する場合を考えるとなにか矛盾が起こるのかな?
。。。ん~やっぱりいまいちわからない。

337:デフォルトの名無しさん
04/11/08 13:48:53
.netで組んだシェアウェア売ってる方に質問
.net製のアプリは嫌がられませんか?

338:307
04/11/08 15:33:25
>308さん それを参考にプログラムしました。

どうやら、WEBサービスを参照してると、xxx.exe?param=abcのような起動ができないみたいです。。。
うぅぅ・・・・。

339:デフォルトの名無しさん
04/11/08 18:14:14
.netのアプリってフレムワークのインストールもあるんだろ。
面倒だな。

340:デフォルトの名無しさん
04/11/08 20:52:00
>>339
そうだな

341:デフォルトの名無しさん
04/11/08 21:16:59
VB6のランタイムインスコしろっていうシェアウエアもある哀

342:デフォルトの名無しさん
04/11/08 21:19:22
リッチテキストボックスにかいてある内容を左や右、中央揃えにする方法って
よくわからないんですけど、参考になるサイトなどありませんか?


343:デフォルトの名無しさん
04/11/09 02:10:09
DateTimePickerかMonthCalendarの日付を選択して
配置されてるか、もしくは新しいtextboxを呼び出すことは
できるんでしょうか?



344:デフォルトの名無しさん
04/11/09 02:22:42
>>343
TextBoxを持ったフォームを別に作っといて、
MonthCalendar.DateChangedあたりで、フォームを表示させるとか?

345:デフォルトの名無しさん
04/11/09 02:27:23
>>342
URLリンク(dobon.net)
こんなん?

346:デフォルトの名無しさん
04/11/09 02:49:58
>>344
レスありがとうございます
正しくそのとおりで、おかげさまで
新しいフォームを作りそこにtextboxを配置されて
MonthCalendar.DateChangedの日付をクリックすると
新しいフォームに飛ぶというところまではできました




347:デフォルトの名無しさん
04/11/09 21:08:46
Dim sr As StreamReader = New StreamReader("c:\test.txt")
streamReader でPositionをつけて、たとえば10バイトめから
読むにはどうしたらいいの?

348:デフォルトの名無しさん
04/11/09 21:17:12
>>347
BaseStreamプロパティからPositionをいじる。
でも根本的にStreamReader使うのはシーケンシャルなアクセスだけにしといた方が良いと思う。

349:デフォルトの名無しさん
04/11/09 21:57:18
Magic Dockingを使うために
DockingManagerExtenderを入れたのですが

「MagicLibrary.DLL」が「参照設定」に追加された状態で、
「ツールボックス」の「コンポーネント」に「DockingManagerExtender.DLL」を追加し、
これをフォームに貼り付けてあるパネルに貼り付け,
DockingManagerExtenderのContainerControlプロパティを
パネルの貼り付いているフォームに設定し、
パネルの「DockingManagerExtenderのADockingEnable」プロパティをTrueと
して,パネルの張り付いているフォームをnewしようとすると,
以下のようなエラーが出てしまいます

System.ArgumentNullException: 値を Null にすることはできません。
パラメータ名 : DockingManager
at Crownwood.Magic.Docking.Content.InternalConstruct(DockingManager manager, Control control, String title, ImageList imageList, Int32 imageIndex, Icon icon)
at Crownwood.Magic.Docking.Content..ctor(DockingManager manager)
at DockingManagerExtender.DockingManagerExtender.SetADockingEnable(Control control, Boolean enable)
at SampleListForm.InitializeComponent()

DockingManagerExtenderについて簡単に説明のあった
URLリンク(backno.mag2.com)
に書いてあるとおりにやってるのですが,どこが問題なのでしょうか

350:フナ太郎
04/11/09 23:13:17
>>347
10バイト空読みする。

351:デフォルトの名無しさん
04/11/09 23:19:29
>>350
StreamReaderではバイト単位で読む事はできないよ。あくまで文字単位。
//まあ形式が固定ならそれでいいんだけど。

352:デフォルトの名無しさん
04/11/09 23:53:07
 質問です。
DataAdapterをコントロールボックスから
選択して使用していますが、
その際DataSourceやプロバイダ等を
チュートリアルに従って設定しております。
自動生成されたソースを見ると、
DataSourceのパスは絶対指定となっていますが、
これをソースを直接触らずに相対指定にする方法はありますか?
相対パスにするには自動生成されたソースを
触らなくてはならないのでしょうか?

353:デフォルトの名無しさん
04/11/10 04:33:36
>348
 BaseStreamをStreamReaderがオープンしたファイルと関連付ける方法が分かりません。
おそらく「オーバーロード、オーバーライド、継承」になどVBNETが導入した新しい技術に
関することだとおもいますが、まだ使い方がはっきりと理解できていないのです。

基本的にはリードライトのクラスがあって、それを補うためにリードライトする
データを加工するクラスがあればよいと思うわけです。
そしてこのリードライトのクラスはランダムアクセスとシーケンシャルアクセスを
用意するというのが歴史的つまり基本的方法です。

そうすると、StreamReaderでオープンしたファイルをBaseStreamでアクセスするのは
継承関係からして誤りだと思います。おそらくBaseStreamでオープンしてリードライトは
BaseStreamで行い、データの加工を下位のクラスで行う? そこでStreamReaderは
適当ではない?
では適当な方法は?その具体的方法が分からない。

>10バイト空読みする。
 色のみ読みたいのです。空はいりませんので。

>351
>StreamReaderではバイト単位で読む事はできないよ。あくまで文字単位。
>//まあ形式が固定ならそれでいいんだけど。
形式は固定です。
 固定長レコードのテキストファイルをランダムアクセスするための
具体的な方法が知りたいのです。MSDNには例がありません。


354:デフォルトの名無しさん
04/11/10 07:43:16
>>353
>  そしてこのリードライトのクラスはランダムアクセスとシーケンシャルアクセスを
>  用意するというのが歴史的つまり基本的方法です。

で、そのシーケンシャルとかランダムとか言うのを一緒にしたのがストリーム。
//厳密にはランダムアクセスベースだけど、ランダムアクセスならシーケンシャルなアクセスにも耐えられる。
//そう考えれば両者を分ける必要はどこにもない。

StreamReaderの役割は指定した文字コードを元に文字単位でストリームから読み出すことだ。
本来バイトベースであるストリームを文字ベースで扱いやすくするためのクラスであって、そこにアクセス方法など関係ない。

ところが、文字ベースで考える場合文字コードという問題が生ずる。
例えばShift_jisの場合、「官」の字は8AAFと言う16進コードで表現される。
これを2バイト目から読み出すと、AF、つまり半角カナの促音記号「ッ」ととられてしまう。
これではよろしくないから、「基本的に」先頭から順次読み取りするようになっている。

でも任意の位置から読み込みたい時もあるだろう、とStreamReaderが読み取る対象のストリームをBaseStreamで直接公開してるわけだ。
//ファイルパスを指定してStreamReaderをnewした場合、内部でFileStreamが作成されている。実際に公開するのはこれ。
StreamReaderで文字を読み出すと、読み出した文字分この内部のFileStreamのPositionが読み込んだ文字に応じて動く。
でもあくまで内部のFileStreamが指している所から文字になるバイトデータを読み出すわけで、
いつのまにかこれがさっきまで見てた所と違ってても気にせずそこから読み出すようになっている。

てことで、streamReader.BaseStream.Positionをいじくれって言ったの。


>   固定長レコードのテキストファイルをランダムアクセスするための
>  具体的な方法が知りたいのです。MSDNには例がありません。

固定長かどうかなんかストリームとしては知った事ではない。

355:デフォルトの名無しさん
04/11/10 08:59:20
>354
>てことで、streamReader.BaseStream.Positionをいじくれって言ったの。
これが分からなかった。ありがとう。

Do
Debug.Write(sr.BaseStream.Position)
line = sr.ReadLine()
debug.Write(line)
Loop Until line Is Nothing

Positionの移動をプリントして見ると
ラインは10行あっても最初のReadLine()で全部読み込んじゃうね。
読み出し開始位置はPositionで設定できるけど、一旦ReadLineして
しまうとPositionでは制御できないようです。
 だからstreamReaderではRandomアクセスはできないです。もちろん
Open、Closeを繰り返せばできますが、それはだめですね。
ファイルは一旦オープンすれば、仮想メモリー空間にマッピングされるわけだから
1バイト単位で自由にアクセスできるはずですよね。クラスの制約でわざわざClose
するのはばかげてます。

結局Stringファイルをランダムアクセスする方法は、どうすればいいのでしょう?


356:デフォルトの名無しさん
04/11/10 09:28:54
もともと複数バイトで意味のあるデータを読み込む時に任意のバイトからってのが今一なじまないんだけどな。
.NETのファイルアクセスは十分に高速だから空読みも大したコストにならないし。

どうしてもStreamReaderを使いたいなら、
FileStreamでストリームを開いて、
FileStream.Positionを操作してからそのFileStreamを元にStreamReaderをそのたびに作成。読み込み終わってもStreamReader.Closeは呼び出さない。
一通り処理が済んだらFileStream.Closeを呼び出す。

357:デフォルトの名無しさん
04/11/10 10:13:57
次のような例がVBの本にあるのですが、
Dim st as Stream = New NetworkStream(...)
...
st.Write(buf,0,255)
st.Close()

Dim under_stream as Stream = New NetworkStream(...)
Dim st As Stream = new BufferedStream(under_stream) ....①
...
st.Write(buf,0,255)
st.Close()

①の行を追加するだけで、バッファリング機能を追加しています。これは
非常にスマートですね。

で私のやりたいイメージはこういうことです。(LineSizeは100byte程度です。)
for i=0 to 100
st.WriteLine(linedt(i))
next
...
st.Position = 55*LineSize
linedt = st.Read()
st.Position = 3*LineSize
linedt = st.Read()


358:デフォルトの名無しさん
04/11/10 10:14:49
FileStream.ReadとEncoding.GetStringでいいじゃん。

359:デフォルトの名無しさん
04/11/10 10:17:49
欲を言えば
st.LineSize = 100
linedt = st.Read(55)
...
linedt = st.Read(3)


360:デフォルトの名無しさん
04/11/10 10:20:04
>358
 そうなの? しらべてみますが、もし例があればよろしく。


361:デフォルトの名無しさん
04/11/10 10:29:02
[Visual Basic]
Overloads Public Overridable Function GetString( _
ByVal bytes() As Byte _
) As String

[C#]
public virtual string GetString(
byte[] bytes
);
VBの場合、宣言が複雑ですが、どういう意味があるんですか? 単に多弁?


362:デフォルトの名無しさん
04/11/10 10:30:14
>>360
Dim fs As FileStream = sr.BaseStream
Dim data(55) As Byte
fs.Position = 55 * LineSize
fs.Read(data, 0, 55)
linedt = Encoding.UFT8.GetString(data)

...
sr.Close()

事前にStreamReaderである程度読んでる場合を想定してるけど、そうでないならはなからFileStreamでファイルを開けばいい。

363:デフォルトの名無しさん
04/11/10 10:31:58
>>361
VBの過去のしがらみです。
書くのが嫌ならC#に移れと言うMSの暗黙のプレッシャーもあります。

364:デフォルトの名無しさん
04/11/10 12:44:30
>362
 ご丁寧にありがとう。
Dim fs As FileStream = sr.BaseStream これが分かりませんでした。
FileStreamの場合Positionがリードポジションと同じなんですよね。
やってみます。



365:デフォルトの名無しさん
04/11/10 14:29:09
技術評論者のVisualBasic.NET プログラミングマニュアル
ってもってる人いないですか?
 そこの133ページに
 「委譲を使った問題点(1)の解決」ってのがあって
 Stack ClassはListを継承するのではなくListの実装を内部で利用すれば
 いいのです(つまり委譲のことだと思う)
 Public Class Stack
 Inherits List  ....①
 Private ListField As New List()
 Public Function Pop() as Object
  .....

という様になっているのだけどどうもおかしい。
①のInheritsって継承のことだよね。これってImplementsの間違いか?
 継承の例は1ページしかないのに、間違えられるとさっぱり分からん。
 Inheritsって委譲にも使うのか?
 Implementsって要するに外部クラスの参照のことだよね。要するに
 EXTERNってことだよね。ほかには意味ないですよね。




366:デフォルトの名無しさん
04/11/10 14:35:57
>>365
持ってないけど多分Implements IList辺りの間違いだろうね。
//……継承の例が1ページ? 委譲の例?

367:デフォルトの名無しさん
04/11/10 14:41:03
質問させてください。

a b c と3つの変数があるとして、テキストボックスに
"1:"&a&"2:"&b+c
みたいな式を任意にユーザーが設定できるようにして、
それを実際に他の変数に入れるようにしたいんですけどどうしたらいいのかわかりません。
普通のコードで書くと
kekka="1:"&"2:"&b+C
ってなりますよね。この右辺の部分をテキストボックスから取り出して
直接コードで書いたように動作させたいのですけど、どうしたらできるんでしょうか?

368:デフォルトの名無しさん
04/11/10 16:08:06
>>367
そういうコードを自分で書く。

369:デフォルトの名無しさん
04/11/10 16:49:04
DataGridを使用し、ColumnChangingイベントを使用しています。

項目Aの変更をハンドルし、入力された値でマスタを検索して項目Bにその名称を代入する、
という処理なのですが、項目Bに名称を代入した時もColumnChangingイベントが発生します。
項目BはReadOnlyなので処理自体は無いのですが、なんとなく気になっています。
こういうもんなんでしょうか?それとも私は全く違うことをしているのでしょうか?

DataGridのデータソースはDataSetで特にDB等にはつながっておらず、
値の格納だけに使用しています。

370:デフォルトの名無しさん
04/11/10 16:56:06
ユーザの入力とコードからの操作を区別しないから。
そんなもん。

371:369
04/11/10 17:26:17
>>370
なるほど、そんなもんなんですね。わかりました。
ありがとうございました。

372:369
04/11/10 18:23:51
連続すいません。

おそらく過去にもこういった話題が挙がったとは思いますが、入力後のカーソルについて質問です。
エンターキー押下時には下にしかいけないんでしょうか?横の項目に移るようになるプロパティは無いのでしょうか?

KeyDown、Pressイベントで処理しようとTextボックスと関連付けてイベントをハンドルしようとしたのですが、
エンターキーは捕まえることができませんでした。

これってどうしようもないんですか?

373:369
04/11/10 18:24:59
DataGridの話です。
流れのまま書き込んでしまった・・・(汗

374:デフォルトの名無しさん
04/11/11 05:32:13
VB.NETのコメントの書き方が分かりません。
’これ以外にはないんですか? 複数行をコメントアウトする方法は?

375:デフォルトの名無しさん
04/11/11 05:45:37
>374
VS.NETの上のツールバーのとあるアイコンを押す。

376:デフォルトの名無しさん
04/11/11 05:53:41
あるファイルが他のアプリケーションによって使用されているか
どうか知るには?
一回ファイル名を変更して Try~Catchするしかないんですか?

377:デフォルトの名無しさん
04/11/11 06:53:46
FileShare.None でOpenするというのはどうだ?

378:デフォルトの名無しさん
04/11/11 06:55:46
>375
 REM 
END REM
を知らんの?

379:初心者
04/11/11 09:32:04
すみません。質問させて下さい。
VB.netで、他のサーバ上にあるbatファイルを、クライアントから実行させるには何か方法がありますでしょうか。

Shell("cmd.exe abc.bat")
Process.Start("C:\xxx\xxx.bat")
  ・・等を加工し、フルパスでファイル名を指定したのですが、肝心のサーバ上のbatファイルは動きません。
恐れいリますが、ご教示ください。


380:デフォルトの名無しさん
04/11/11 09:45:04
>>372
これのことか?
Application.MoveAfterReturnDirection = xlDown
Application.MoveAfterReturnDirection = xlToRight


381:デフォルトの名無しさん
04/11/11 09:58:37
>>379
アクセス権が必要です

382:デフォルトの名無しさん
04/11/11 10:08:50
一番自然なのはクライアント/サーバ型にして、クライアント側の要求に従ってサーバ側で処理する事だな。

383:372
04/11/11 11:42:10
>>380
Excelでいうとそれです。
DataGridでなんとかならんもんかと悩んでおります。

384:デリゲート?
04/11/11 12:14:41
VB.NETでVCとWindowsメッセージのやりとりがしたくてURLリンク(homepage2.nifty.com)
このホームページのソース参考にしたんですけどSetWindowLong(Handle.ToInt32, GWL_WNDPROC, AddressOf WndProc)
の1文でデリゲートで宣言されてないから駄目ってエラーがでて意味がわかりません。誰か解決策教えて。


385:デフォルトの名無しさん
04/11/11 12:31:32
>>384
エラーの意味がわからんのじゃなくて、
そもそもやってることの意味がわかってないんだと思う。

VB.NETではサブクラス化を使う必要はなくなった。
問題にぶつかったらとりあえずMSDN検索するクセつけた方がいいよ。
URLリンク(www.microsoft.com)

386:デフォルトの名無しさん
04/11/11 12:57:46
>>383
DataGridを継承してProcessCmdKeyをオーバーライドしてやればいいんじゃないかな。

Imports System.Windows.Forms
Public Class OddHandlingDataGrid
    Inherits DataGrid
    Protected Overrides Function ProcessCmdKey(ByRef msg As Message, ByVal keyData As Keys) As Boolean
        If keyData = Keys.Enter Then
            Me.ProcessGridKey(New KeyEventArgs(Keys.Right))
            Return True
        End If
        Return MyBase.ProcessCmdKey(msg, keyData)
    End Function
End Class

387:デフォルトの名無しさん
04/11/11 13:41:51
>>377
それでなりました。どうもありがとう。

        Try
'一度ファイル名をリネームし可能なら他のアプリケーションで使用されていない
'不可能なら使用中
'Microsoft.VisualBasic.FileSystem.Rename(filename, filename + "a")
'Microsoft.VisualBasic.FileSystem.Rename(filename + "a", filename)
Catch

こんなことしてました↑。

        Try
           Dim s2 As New FileStream(filename, FileMode.Open _
, FileAccess.Read, FileShare.None)
s2.Close()
         Catch

388:デフォルトの名無しさん
04/11/11 14:51:54
123を " 123"のように10桁で表示するのはどうするの?
formatだと数値が変わると桁が変化する。
format(dt,"0000000000")のようにすると数値の桁が変わっても10桁に
なるが"000000123"のように頭に0がつくのでだめ。
なんかいい方法ない?



389:デフォルトの名無しさん
04/11/11 15:02:33
URLリンク(202.208.158.51)

343 :NHK名無し講座 :04/11/11 15:00:25 ID:Xg7Sp9vb
由奈もキタ━━━(゚∀゚)━━━ !!!

URLリンク(202.208.158.51)

390:デフォルトの名無しさん
04/11/11 15:11:59
>>388
.ToString().PadLeft()とか。

391:デフォルトの名無しさん
04/11/11 15:18:03
>390
ありがと。いろいろ探していたのだけど、分からなくて、
助かりました。

392:デフォルトの名無しさん
04/11/11 15:22:17
スレリンク(swf板)

393:初心者
04/11/11 16:21:58
>>381>>382
ご回答、ありがとうございました。
何とか解決できそうな状況になってまいりました。


394:デフォルトの名無しさん
04/11/11 19:28:02
通信対戦ゲームを作りたいのですが、winsockとdirectXはどっちが簡単ですか?

395:デフォルトの名無しさん
04/11/12 08:09:12
フォームのボタンのペケ(X)ボタンを押すとDiposeしますが、
me.hideにしてDisposeしたくない場合どうすればいいのでしょ?


396:デフォルトの名無しさん
04/11/12 08:43:41
listboxのクリアーってどうやるの


397:デフォルトの名無しさん
04/11/12 09:11:14
VB6みたいに途中でブレークしてコードを修正して続けるようなことはできないのですか?


398:デフォルトの名無しさん
04/11/12 10:07:34
>>396

ListBox1.Items.clear

でダメ?

399:デフォルトの名無しさん
04/11/12 10:11:26
>398
あっItemsの下に隠しやがったのか。くっそー。
ありがとう。


400:デフォルトの名無しさん
04/11/12 10:43:42
条件付コンパイルの話なんだけど、設定値がまずいのでコンパイル不能コードにしたいときってどうしたら良い?
Cの#errorみたいのってないの?

401:デフォルトの名無しさん
04/11/12 11:37:08
俺が分かったら答えてやるんだが、わからんなー。
#define Main
#if Main
#else
#end if
見たいなやつだろ。

402:デフォルトの名無しさん
04/11/12 11:57:25
>>400
VB.NETには無いね。C#にはあるんだが。

>>397
VS2005から追加されるようだ。

403:デフォルトの名無しさん
04/11/12 12:11:46
>402
ほんと? そりゃ待ち遠しいね。でもこの遅さに慣れたら、
もうJAVAでもおんなじだし、eclipseとかにいってるかもね。

404:デフォルトの名無しさん
04/11/12 18:45:58
400の者だが、しょうがないからこうした(イメージ)
#if a=0 then
ここに来たらエラー
#endif

405:デフォルトの名無しさん
04/11/12 21:40:31
時間がかかる処理の間に起こったキー入力等はすべて無効にしたいんだけど、
どうしたらいいかな?
処理の最後にフラグを立てて、doEventsメソッドを発行後、フラグを解除。
オーバーライドしたWndProcで、フラグが立っている間のイベント処理は
無効っていうふうにしたんだけど、処理の終わり間際の入力は通ってしまうようで
上手くいかなかったです。


406:デフォルトの名無しさん
04/11/12 21:48:33
>>405
「時間がかかる処理」を別スレッドにするだけでは?

407:デフォルトの名無しさん
04/11/12 23:04:25
時間がかかる処理をしている途中だよフラグを用意するか、
その処理の最初にキー入力ができるコントロールを無効にすれば?

408:デフォルトの名無しさん
04/11/12 23:22:12
>時間がかかる処理をしている途中だよフラグを用意するか、
無意味。

>その処理の最初にキー入力ができるコントロールを無効にすれば?
恐らくそれをしたくないから>>405のように聞いているのだろう。
そのくらいのこと読み取れるでしょ普通。

409:デフォルトの名無しさん
04/11/13 04:58:27
処理が終わっているように見えて実は終わっていない。だから、
処理的に排他的タスクを立てて、そのタスク内でキーを有効にする。

410:最凶VB厨房
04/11/13 12:22:21
別スレッド作って即行でjoin!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

411:デフォルトの名無しさん
04/11/13 17:35:29
マウスポインタの位置を移動させるにはどうすればいいですか?
例えばボタンを押したら次に押させたいボタンにマウスポインタを移動させる、
というような事をさせたいのですが。

412:デフォルトの名無しさん
04/11/13 17:46:03
System.Windows.Forms.Cursor.Position

413:デフォルトの名無しさん
04/11/13 18:45:53
>>412
サンクスです。

414:鈴木
04/11/13 18:54:58
>>408
お前、感じ悪いよ。

415:デフォルトの名無しさん
04/11/14 00:46:59
VBScriptから正常に呼び出せるActiveXのメソッドを
VB.NETから呼び出すと

System.Runtime.InteropServices.COMException
未知のエラー

というエラーが発生しまつ。
いったい何がいけないんでつか?

416:デフォルトの名無しさん
04/11/14 19:37:12
昨日VB6から.net2003にやってきたばかりで右も左もわからん

MainTextBox.Text = "aiueo" & vbCrLf & "aiueo"
FirstText = "aiueo" & vbCrLf & "aiueo"
If MainTextBox.Text = FirstText Then
  Call MsgBox("あ")
End If

MainTextBoxはRichTextBoxです
で、これ実行するとなぜかメッセージボックスが表示されるんですが・・・
明らかに等しい "aiueo" & vbCrLf & "aiueo" なのに何で!?

417:デフォルトの名無しさん
04/11/14 19:42:28
VisualBasic6.0で編集したプロジェクトをVB4.0で読み込むことはできますか?
VB6.0→VB4.0フォーマット変換ソフトなどあったら教えてください

418:デフォルトの名無しさん
04/11/14 20:48:19
>416
釣り?

>417
無理、それ以前にここは「VB.NET質問」であって
「VBプログラマ質問スレ(6.0以前)ではない。

419:417
04/11/14 22:20:05
>>418

いや、無理じゃなく出来た。
vbpプロジェクトをエディタで開いてバージョン箇所あわせと不要コード削除で読み込み可
自己解決。、さいなら

420:416
04/11/14 22:30:14
間違った…

MainTextBox.Text = "aiueo" & vbCrLf & "aiueo"
FirstText = "aiueo" & vbCrLf & "aiueo"
If MainTextBox.Text = FirstText Then
  MsgBox("同じ")
Else
  MsgBox("違う")
End If

ってやっても「違う」と言われてしまうのはどうしてですか?

421:デフォルトの名無しさん
04/11/14 22:51:04
>>420
FirstTextがちゃんとString型の変数として宣言されているなら
“同じ”と出るはず。

URLリンク(www.microsoft.com)
の「値の等価性と参照の等価性」を読むといいかも。


422:デフォルトの名無しさん
04/11/14 22:55:35
>>420
FirstTextをStringにして
同じソースで実行したけど"同じ"って表示されたよ

423:420
04/11/14 23:40:03
Public Class Form1 の直下で
Dim FirstText As String = "" と宣言してあります

何かこれではまずい仕様に変わったんでしょうか?

424:デフォルトの名無しさん
04/11/14 23:50:04
>>423
ああ、いま気づいた。
きっとtextboxのMultiineプロパティがFalseになってるんだよ。

425:デフォルトの名無しさん
04/11/14 23:53:57
RichTextBoxらしいからデフォルトでMultilineはTrueのはずなんだがな……。

426:デフォルトの名無しさん
04/11/15 00:06:59
Java で StringTokenizer と同じような機能のクラスは
VB.NETにもありますか?
MSDN内は探しましたが思っていたものとは違っていたようです
ネットも一応調べたんですが64kbpsのため探し回れない状態です
時間がないため、indexOf と Substring を使って機能を実現しておきますが
作るのは面倒なのでよければ教えて下さい

427:デフォルトの名無しさん
04/11/15 00:19:33
>426
URLリンク(java.sun.com)
 と言う事は、StringクラスのSplitメソッドが近いんじゃないか。

428:デフォルトの名無しさん
04/11/15 00:36:44
>>427
ありがとうございます
使ってみます。

429:yukki
04/11/15 10:41:44
VB.NETのSocket クラスを利用して、UDP通信でデータ受信時にイベントを発生させたいのですが方法がわかりません。
分る方いましたら返信お願いします。

430:デフォルトの名無しさん
04/11/15 11:22:13
どのプロジェクトでも使う汎用的なboku の namespaceはどこに登録
するの?

class の先頭でimports "boku"のように使いたい。



431:デフォルトの名無しさん
04/11/15 14:07:41
Dim myArr() As [String] = {"RED", "orange", "violet", "RED"}
の [String] はStringとはちがうのですよね。
[]はなんの意味ですか?



432:デフォルトの名無しさん
04/11/15 14:22:24
>>431
全く同じで単にコンパイラが無視するだけだが。
どこからそんな書き方が出てきたのかね。

433:フナ太郎
04/11/15 15:20:59
>>431
[ ] で囲むのは、VB.NET の予約語を、クラス名とか構造体名とかに
使えるようにするためだお。

この例だと、たぶんどっかに、

Class [String}

・・・・・

End Class

みたいに定義されてるはずだから、探してみ?

434:431
04/11/15 15:33:47
 そうなんですか? 今一必然性を感じないのですが。
カッコつきストリング、、、、、哲学ではよくカッコつきの何チャラって
やりますが、その影響ですかね。多分カッコいいのでしょうね。
MSドットネットのカッコつきストリングのカッコよさについての考察せよ。
カッコいい!!





435:デフォルトの名無しさん
04/11/15 15:39:51
一生懸命JAVAをまねしても糞がでる。もとい、ボロがでる。

436:デフォルトの名無しさん
04/11/15 18:54:19
>>432-433
なんか微妙に言ってることずれてると思う。あくまで微妙にね。
某所で馬鹿にされてる人の記事だが。。
URLリンク(www.atmarkit.co.jp)

437:最凶VB厨房
04/11/15 20:30:18
>>432
無視しないだろ。結果(生成されるIL)が同じだけだ。この場合。
>>433
[String]はSystem.Stringクラスだ。
自前実装じゃないぞ。

>>436
ってことを言いたかったの?

438:デフォルトの名無しさん
04/11/15 20:55:33
>>437
ああ、>>433は微妙どころじゃないね。だいぶずれてるわやっぱ。

439:フナ太郎
04/11/16 02:04:22
>>437
別に自前である必要はない


440:デフォルトの名無しさん
04/11/16 04:46:23
関数のなかで配列を宣言してその値を返すってOKですか?
Function Test() As Date()
...
Dim cn(2) As Date
cn(0) = c1
cn(1) = c2
Return cn
End Function


441:TEE
04/11/16 07:08:09
>>440
んなもん、簡単にテストできるだろーが。

442:デフォルトの名無しさん
04/11/16 08:18:17
VB.NET2004って出るだろうか

443:デフォルトの名無しさん
04/11/16 12:32:18
北の国から2004
Gold Finger 2004
Kinf of Fighter 2004
Gメン2004
Air Port 2004

444:初心者
04/11/16 15:57:11
vb.netでWMIの機能を使い、クライアントからサーバ上のアプリを起動させようとしています。
以下のようなサンプルコードを動かしているのですが、クライアント上のメモ帳が起動するだけでサーバ上のメモ帳は起動されません。
どのように修正すれば、サーバ上のメモ帳を起動できるのでしょうか。
恐れ入りますが、ご教示願えませんでしょうか。

Options.Username = "administrator"
Options.Password = "password"

Scope.Path.Server = "サーバ名"
Scope.Options = Options

Dim processClass As New ManagementClass("Win32_Process")


Dim methodArgs() As Object = {"notepad.exe", Nothing, Nothing, 0}

Dim result As Object = processClass.InvokeMethod("Create", methodArgs)

Console.WriteLine("Creation of process returned: {0}", result)
Console.WriteLine("Process id: {0}", methodArgs(3))

445:デフォルトの名無しさん
04/11/16 16:05:33
>>444
ManagementObjectのコンストラクタ引数にせっかく作ったManagementScopeとObjectGetOptionsを指定してないのはどうしてかな。

446:初心者
04/11/16 17:42:24
>>445
ご回答頂き、本当にありがとうございます。
ご指摘の概念が良く理解できていないようです。
単純にクライアント側が起動する記述になっていたわけですね。
どのように指定するか考えてみたいと思います。


447:デフォルトの名無しさん
04/11/16 19:13:19
445がManagementClassをManagementObjectと取り違えてるのが混乱に一層の拍車をかけてるな。

448:最凶VB厨房
04/11/16 19:49:57
>>429
Socketクラスは利用してないが・・・。こんな感じかな。
Option Explicit On
Option Strict On
Imports System
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Public Delegate Sub ReceiveEventHandler(sender As object,e As UDPEventArgs)
Public Class udps
Public Event ReceivedUDPPacket As ReceiveEventHandler
Protected Overridable Sub OnReceivedUDPPacket(e As UDPEventArgs)
RaiseEvent ReceivedUDPPacket(Me,e)
End Sub
Public Sub Listen()
Dim client As UdpClient=new UdpClient(10000)
Dim ep As New IPEndPoint(IPAddress.Any, 0)
While True
Dim bb() As Byte=client.Receive(ep)
Dim ueh As UDPEventArgs=New UDPEventArgs()
ueh.ReceivedBytes=bb
OnReceivedUDPPacket(ueh)
End While
End Sub
End Class


449:最凶VB厨房
04/11/16 19:50:48
Public Class UDPEventArgs
Inherits EventArgs
Public ReceivedBytes() As Byte
End Class
Public Class EntryPoint
WithEvents Shared svr As udps
Public Shared Sub Main()
svr=New udps()
AddHandler svr.ReceivedUDPPacket,Addressof UDPReceived
svr.Listen()
End Sub
Public Shared Sub UDPReceived(sender As Object,e As UDPEventArgs)
Dim rs As String=Encoding.UTF8.GetString(e.ReceivedBytes,0,e.ReceivedBytes.Length)
Console.WriteLine("event発生->{0}",rs)
End Sub
End Class


450:416
04/11/16 20:10:59
RichTextBoxじゃなくて普通のTextBoxをMultiLine=Trueにして試したら普通に動いた…
(RichTextBoxにすると相変わらず上手くいかない)
変なの、VB6の時にはこんなことにはなってなかったのに

451:デフォルトの名無しさん
04/11/16 21:49:27
>450
 一度RichTextBoxのTextプロパティに代入した後で、
RichTextBoxのTextプロパティの内容を詳しく調べてみると
何か分かるのでは?
 会社に行かないと開発環境が無いので確認できないが、
改行コードがvbCrLfからvbCrかvbLfに変換されているかも。

452:デフォルトの名無しさん
04/11/16 21:57:00
Hashtableってメモリリークとかしないですか?
解放の手順としては、Clearを呼んでNothingを代入すれば
よいでしょうか。

453:デフォルトの名無しさん
04/11/16 23:42:55
>>452
Hashtable に限らず、IDisposable インターフェースを実装していないマネージドクラスであれば、
後処理などせず放置しておいてOK。というか、プログラマが明示的に後処理することは、基本的には
できない。
Clearを呼んだとしても、その時点でメモリが解放されるわけではない。
Nothingを代入したとしても、そのインスタンスの参照カウンタがひとつ減るだけ。たいていの場合は、
これで参照カウンタが0になって、インスタンスはガベージコレクタの管理下に入るんですが、
これは変数のスコープが終わったときや、その変数に別のインスタンスへの参照が代入されたときと
同じ動作です。Nothingを代入することには意味がありません。
使い終わった変数のスコープがすぐに終わるようにプログラムを組むことの方が大切です。

IDisposableを実装しているクラスなら、クラス内部で使用しているアンマネージドなリソースを
明示的に解放するために Dispose を呼んでおいた方が無難。

454:最凶VB厨房
04/11/17 00:30:54
あひゃ

455:デフォルトの名無しさん
04/11/17 07:20:22
>453
ありがとうございました。

456:デフォルトの名無しさん
04/11/17 08:23:42
>441
>んなもん、簡単にテストできるだろーが。

テストして概ね動作する場合は、それが正しいかどうかの判断は難しいはずです。

「関数の内部で宣言した変数Xはその関数を抜けると開放される」と考えるのは
ごく自然です。ところが変数Xを関数のリターンにした場合は開放されるのか?
それが問題です。実際には開放されたとしてもメモリー上には残っていますから
別のプログラムがそのエリアを使わない限り、変数Xは保存されているように
見えます。普通には動くけれど偶に動かない。そういう動作が起こる可能性が
あるわけです。
 「値を返せば保存され、参照を返せば保存されない。」のか?
 参照されている先のメモリーも保存されるのか?
配列の場合は特に心配ですね。
でどうなんでしょう?


457:デフォルトの名無しさん
04/11/17 10:02:20
FormでKeyPreviewプロパティに左右されず発生する
キー入力のイベント、プロテクトメソッドは無いのでしょうか?

エンターキーで項目間の移動を行いたいのですが、
これをForm側にSelectNextControlを使用して実装させたいと考えています。
ですがKeyPreviewプロパティに依存することなく実装ができません。

458:デフォルトの名無しさん
04/11/17 11:49:35
うぅむ・・・Panelコントロール内でLabelなどを実行中にD&Dで移動できるようにしたいんだが・・・
はて・・

単純にやろうとするとこれってやっぱムリ?

MouseDownでDoDragDrop
DragDropイベントで移動しようと思うんだが・・・

言語は VB.NET 2003




459:デフォルトの名無しさん
04/11/17 11:51:35
>>456
.NETでは参照が残ってる限りガベージコレクトの対象にはならない。(WeakReferenceという例外もあるが)
で、返値として返された時点で参照がメソッド呼出元に渡される事になる。
ほら参照が残ってるからガベージコレクトされる事が無くなった。
//もちろん呼出元で返値をそのまま捨てればそれで参照が無くなるからガベージコレクトの対象行き。

ガベージコレクションの動作を知るべきだね。

>>457
ProcessCmdKeyとかProcessDialogKeyとか。

460:デフォルトの名無しさん
04/11/17 12:12:33
>>458
もっと単純に、
MouseDownイベントでクリック位置を保存、
MouseMoveイベントでLeftプロパティとTopプロパティを変更。

URLリンク(dobon.net)
フォームでの場合のサンプルだが、参考に。

461:デフォルトの名無しさん
04/11/17 12:29:54
>>460
D&Dって言ってるんだからコンテナ変えたいんじゃないの?
まあ、>>458の言葉が足りないだけのような気もするけど。

462:デフォルトの名無しさん
04/11/17 12:54:40
>>460 >>461 説明不足で申し訳ない

確かにコンテナを変えるのが理想なんだが、それはそれで回避方法はあるかな?と
最悪動的にオブジェクトを っててもあるんだけど

でも、とりあえず、460のリンクに逝ってから応用手法でも考えてみるよ

463:デフォルトの名無しさん
04/11/17 13:43:33
すいません。
ブラウザの×ボタンを押した時と同じイベントを取得したい時は
どのようにすればいいんでしょうか?

やりたいのはブラウザの×ボタンを押した時にDB接続していたら
接続を解除するという動きなのですが。
よろしくお願いします。

464:デフォルトの名無しさん
04/11/17 14:58:15
WM_CLOSE

465:デフォルトの名無しさん
04/11/17 23:14:11
かなり初歩的な質問なんですけど
年だけを入力してカレンダーを↓の様な感じで表示させろって言われていて
1  5  9
■ ■ ■

2  6 10
■ ■ ■

■の部分がカレンダー部分

縦一列表示なら出来たのですが
↑の様にはなりません
どなたか助言お願いします

466:デフォルトの名無しさん
04/11/17 23:15:16
>464
もうちょっと質問の意図を汲んでやれよ。

467:デフォルトの名無しさん
04/11/17 23:30:53
>>465
久々にこの台詞を吐かねばなるまい。
自分以外はみんなエスパーか何かだとでも思ってるの?

468:デフォルトの名無しさん
04/11/17 23:32:50
>465
 WebアプリケーションなのかWindowsアプリケーションなのかに
よって回答が変わるがどちらだ?
 Webアプリケーション(Webフォーム)なら、System.web.UI.WebControlsの
TableオブジェクトとTableRowオブジェクト、TableCellオブジェクトを
駆使すれば何とかなるが。

469:デフォルトの名無しさん
04/11/17 23:57:38
>467
こんな糞レベル低いスレの住人をエスパーだと思ってる
わけないじゃん。安心していいよ。

470:デフォルトの名無しさん
04/11/17 23:58:10
>467
どうする?>468氏は君と違って質問の意味が分かってるみたいだよ。

471:デフォルトの名無しさん
04/11/18 00:08:46
>>468サソ
Windowsアプリケーションです

472:デフォルトの名無しさん
04/11/18 00:47:31
>>470
トラの威を借る.....みたいだな。なさけない奴。
お前自身はわかるのかw それが問題だろうが。

ていうか、>>468だって>>465の文章から質問の意図などわかってるはずがない。
現にわかってないから質問してるんだろう。

>>468は親切にも馬鹿な質問者を誘導しようとしているようだが、
俺は自分の知りたいことすら過不足なく説明できないような馬鹿にまで
寛容になれないし、なるべきでないと思ってるのでね。

473:フナ太郎
04/11/18 01:14:49
>>465
これはVB.NETというよりはアプリケーションを作る上でのアイディアに
関する質問だね。こんなところでこっそり聞くよりも、「表示させろ」と言った人に
(もしくは先輩や同僚に)聞いた方がいいと思うよ。
恥を忍んでガンガン質問できるヤツじゃないと伸びないよ、この業界。


474:デフォルトの名無しさん
04/11/18 03:13:12
VB.NETを始めて間もない初心者です。aspxという画面にテキストボックスを
貼り付け、値を入力する際、右揃えにすることは可能なのでしょうか?

テキストボックスには、「-1」などといった数値を入力するため、
右揃えの方が見やすいと思われるのですが、どういった対処を取れば
良いのか全くわからず・・・。

どなたかご存知ではないでしょうか?ご教授願います。
よろしくお願いいたします。



475:デフォルトの名無しさん
04/11/18 03:20:35
format

476:デフォルトの名無しさん
04/11/18 07:16:20
>472
スレ違い

477:デフォルトの名無しさん
04/11/18 07:17:29
>472
相手する気ない奴は書き込んではいけません。
こんなことすら教えないとダメなのか・・・

478:デフォルトの名無しさん
04/11/18 07:18:05
>472
相手する能力がない人も書き込んではいけません。
こういうこともちゃんと教えないとダメだよ・・・

479:デフォルトの名無しさん
04/11/18 07:25:17
>476-478
相手する必要なし。こういう奴はどこのスレでも
同じような書き込みして同じような指摘受けているのに
一向にやめようとしない。放置するしかない。

480:デフォルトの名無しさん
04/11/18 08:20:46
うだうだ言ってる暇があったら答えればいいのにね

481:デフォルトの名無しさん
04/11/18 12:31:37
>>480
馬鹿の特徴は他人に向ける批判的視点を自分に向けられないこと。
それが君。ありていに言えば「オマエガナー」。

ていうか、質問が理解可能かつそれが俺のわかることなら俺は答えてる。
そのように言うってことは、君は>>465の質問の意味がわかるんだよな?

ぜひ>>465の質問の意味を噛み砕いて説明してみてくれ。
いや、出来ないのならいいんだよ別に。

482:デフォルトの名無しさん
04/11/18 12:57:13
>>481
> ていうか、質問が理解可能かつそれが俺のわかることなら俺は答えてる。
じゃ、わかんねーなら口出すなや。
はい、終了

483:デフォルトの名無しさん
04/11/18 17:01:43
ListViewを自分で作るのではなく
画面に表示されているウィンドウ(デスクトップ含む)の
ListViewを取得するにはどうしたらいいのでしょうか?

ListView *listview = GetListView(プロセスID); みたいな
お手軽な方法があるのかと思っていたらなさげなので
全然わからないです(´・ω・`)

484:483
04/11/18 17:14:43
すいません
VCと間違いました

485:デフォルトの名無しさん
04/11/18 17:24:37
ここでの質問が間違っていたらすいません(´・ω・`)

テキストボックスAとボタンBが画面上にあったとします。
それでテキストボックスにフォーカスがあたった時に何故か
ボタンBにも同時にフォーカスがあたっていて原因がわかりません。

同時にフォーカスがあたるのが仕様なら仕方ないのですが
せめて他のボタンに制御したいと思って色々やったのですが
さっぱりわかりません。

詳しい方教えて頂けないでしょうか?

486:デフォルトの名無しさん
04/11/18 17:25:46
追記です。

.NET2003使っております。
宜しくお願いします(´・ω・`)

487:デフォルトの名無しさん
04/11/18 18:06:42
>>485
> ボタンBにも同時にフォーカスがあたっていて原因がわかりません。
どんな現象がでて、ボタンBにもフォーカスがあると判断したの?

488:デフォルトの名無しさん
04/11/18 19:11:17
>>485
だからエスパーはいないといっているのがなぜわからない?

不思議でしょうがないんだけど、どうしていい歳して、
他人が自分の書いた文章を読んだときにどのように思うだろう?
きちんと自分が伝えたいことが伝わるだろうか?って考えて文章かけないの?

はっきりいって情けない。
こんなのプログラミング以前どころか義務教育修了レベル以前の問題だろ。

489:デフォルトの名無しさん
04/11/18 19:31:30
>>488
おまえはエスパーか?

どうして”いい歳”してるってわかるんだ?www

490:デフォルトの名無しさん
04/11/18 19:34:57
>>488
それ以前に
エスパーならプログラムできるのか?
念写できたり念動力があるエスパーが
プログラムの知識を持っているのか?

エスパー伊藤もエスパーだが
とてもできそうにないなwww

491:デフォルトの名無しさん
04/11/18 19:38:58
>>485は表現力がない。
>>490は読解力がない。

踊る阿呆に見る阿呆ってかw

492:清田
04/11/18 20:47:15
これだから素人は...

493:デフォルトの名無しさん
04/11/18 21:06:29
そもそも2chで聞く事自体間違い

494:デフォルトの名無しさん
04/11/18 21:09:15
>488
皆が指摘してくれている事がまだ理解できていないようで・・・
義務教育を受けられなかったのですね。おかわいそうに。

495:デフォルトの名無しさん
04/11/18 21:16:05
VB初心者にうってつけのサイト等ありましたらご教授くださいませんこう

496:デフォルトの名無しさん
04/11/18 21:49:35
 今更だが、RichTextBoxのアレ、検証できたので結果報告をば。

Dim strCompare As String = "aiueo" & vbLf & "aiueo"
RichTextBox1.Text = "aiueo" & vbCrLf & "aiueo"
If strCompare.Equals(RichTextBox1.Text) Then
MsgBox("vbCrLf が vbLfに変換されている!")
Else
MsgBox("vbCrLf は vbLfではない")
End If

 と言う訳で、RichTextBoxの改行コードは「LF」と
言う仕様になっていて、改行コード「CRLF」の文字列を
代入すると、「LF」に変換されてしまうらしい。
 ちなみに、Windows XP(SP1) + VS.NET 2003で確認。

497:デフォルトの名無しさん
04/11/19 14:36:46
ちなみに2002なんすが
[コード表示]から (Base Class Events)     Load
と、選択して雛形を出すと、
_ Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
[デザイン]のForm1をダブルクリックすると、
_ Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

この違いはなんっすか?
エロい人もしくはエスパー教えて厨


498:デフォルトの名無しさん
04/11/19 15:54:19
ドトネを感じるんだお前はそれしかない
May the .NET with you

499:デフォルトの名無しさん
04/11/19 17:00:36
form上をpictureboxがランダムで移動するように
したいのですが,誰かアドバイスお願いします

500:困ったくん
04/11/19 18:25:52
割り算を減算(引き算で)行うプログラムを作っています。

[ Text1 ] ÷ [ Text2 ] = [ Text3 ] 余り [ Text4 ]

のように表示させるのですが、例えば、35÷6をしたときに、
答えが、Text3=1 Text4=29 になってしまいます。
どうすればいいのでしょうか?
よろしくお願いします。 なお、僕の考えたプログラムは以下の通りです。
(※”=”部分がコマンド1です)

Private Sub Command1_Click()
M = Text1.Text
N = Text2.Text
sho = 0

Do
M = M - N
sho = sho + 1
Loop While M >= N

Text3.Text = sho
Text4.Text = M
End Sub

501:デフォルトの名無しさん
04/11/19 18:42:06
>>500
ループ条件が文字列比較になってるから。

あと何故Do Whileループ? 2 / 3 = 1 余り -1 になるぞ。


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