VB.NET質問スレ (Part7) ..
151:139
04/10/16 20:26:35
>>150
結果が出ればいいってことだったんで・・・
どの辺り直せばいいでしょうか?
152:デフォルトの名無しさん
04/10/16 20:50:42
そんな宿題をVBで課す意味がわからん
CでやれCで
153:デフォルトの名無しさん
04/10/16 21:16:05
式を表示するだけだが、連結演算子を使って
Console.Write(i & "×" & j & "=" & i * j)
154:139
04/10/16 21:35:16
>>152
教授に言ってくれ・・・
>>153
これをformat使って
綺麗にしたいのですがどうすればいいでしょうか?
155:デフォルトの名無しさん
04/10/17 00:51:03
宿題を人にやらせるのか
156:デフォルトの名無しさん
04/10/17 01:30:57
てきとうに見た目がよくなるボタンコントロールって無いかしら.
157:デフォルトの名無しさん
04/10/17 06:23:36
すいません、ASP.NETって、HTMLのフォームではなくて、.NETのWEBフォームを使用してページ間でデータを共有する方法って、セッションを使うしかないんですね。
もしそうなら、PHPでHTMLのフォームを使っていたのと比べると、隔世の感がありますね。
いかがでしょうか?
ご教授願います。
158:デフォルトの名無しさん
04/10/17 07:36:53
WebClientクラスを使ってHTMLデータをダウンロードしようとしているのですが、
EUCで書かれたページがうまくダウンロードできません。
StreamReaderを作る際に
New StreamReader(wc.OpenRead("URLリンク(www.asahi.com)"), Encoding.GetEncoding("euc-jp"))
こんな感じで書いているのですが、日本語の一部(8割方ちゃんと読める)が
文字化けした状態になってしまいます。
正しく変換するにはどのように書いたらよいのでしょうか。
159:デフォルトの名無しさん
04/10/17 10:23:28
群を抜いてレベルの低いスレだな、ここは。
160:デフォルトの名無しさん
04/10/17 12:05:04
>158
すまん。自己解決。犯人は秀丸だった。
161:デフォルトの名無しさん
04/10/17 13:13:59
>>159
足を入れたとたんに低レベルですよ
162:デフォルトの名無しさん
04/10/18 03:51:53
.netで、XML WEB サービスを作っています。
WebMethodで、引数を与えて、引数から計算をして戻り値を返すという関数を作ったのですが、
WebMethod名に引数を与えたURLを入力すると、
「'/WebServiceSoap' アプリケーションでサーバー エラーが発生しました。
要求形式が認識されません。 」
と出てきてしまいます。
WebMethod名だけを指定したURLにすると、テスト画面になってしまいます。
なぜ、直接、レスポンスがないのでしょうか?
163:デフォルトの名無しさん
04/10/18 10:23:50
>>162
URLリンク(www.google.co.jp)
164:デフォルトの名無しさん
04/10/18 11:33:12
漫才見てるようで面白いスレだ
165:デフォルトの名無しさん
04/10/18 12:11:21
データーを作った後、帳票印刷にエクセルを使おうとして、下のように組んでみました。
印刷するところまでは上手く言ったのですが、閉じようとするとエクセル側に”変更を
保存してもいい?”って聞かれてしまいます。このメッセージを無視して、エクセルを
閉じてしまうにはどうしたらよいのでしょうか?
166:デフォルトの名無しさん
04/10/18 12:12:01
Try
Dim ExcelApp As Excel.Application
Dim ExcelBook As Excel.Workbook
Dim ExcelSheet As Excel.Worksheet
ExcelApp = CreateObject("Excel.Application")
ExcelBook = ExcelApp.Workbooks.Open("\\filesaver\data\printMitsumori.xls")
ExcelSheet = ExcelBook.Worksheets(1)
ExcelApp.Visible = True
ExcelSheet.Cells(1, 1).Value = data1
ExcelSheet.Cells(2, 1).Value = "data2
ExcelSheet.PrintOut()
ExcelApp.Quit()
167:デフォルトの名無しさん
04/10/18 12:12:22
ExcelSheet = Nothing
ExcelBook = Nothing
ExcelApp = Nothing
Catch ex As Exception
MessageBox.Show("印刷処理に失敗しました、暫くしてから再度ボタンを押してください")
ExcelApp.Quit()
ExcelSheet = Nothing
ExcelBook = Nothing
ExcelApp = Nothing
End Try
168:デフォルトの名無しさん
04/10/18 13:37:03
Quitの前にDisplayAlertsをFalseにしる
169:165
04/10/18 13:48:03
できますた。ありがとうママン。
170:デフォルトの名無しさん
04/10/18 14:50:41
フォームの表示に関しての質問です。
Sub Form_Load() Handles MyBase.Load
'処理A(5分程度時間がかかる)
End Sub
この時、処理Aが終了するまで、フォームが表示されません。
処理Aの前にMybase.Showを実行すると、
ウィンド枠と、メニューは表示されるのですが、ボタンやテキストボックスが
白く表示されてしまいます。(処理Aが終了したら正しく表示される)
処理Aの間も正常に表示させるにはどうしたらいいのか教えてください。
お願いします。
171:デフォルトの名無しさん
04/10/18 14:51:32
すみませぬ、スレ違いなんだけど、ココくらいしか聞けそうなところないようなんで。
VB.NET ではなく、C#を利用してasp書いてるんですが、
質問はどこでしたらいいんでしょう?それともそんなスレない?
172:デフォルトの名無しさん
04/10/18 17:44:43
処理中にウインドウを操作されても良いならば、
ループの中でApplication.DoEventsを呼べばいいかと。
173:デフォルトの名無しさん
04/10/18 18:59:21
>>171
WebProg板
スレリンク(php板)l50
174:170
04/10/18 20:55:52
>>172
ありがとうございます。
ただ、処理A(Function のコール)は
外部から提供されている部分で、できれば手を加えたくありません。
他にもなにか方法があればお願いします。
175:デフォルトの名無しさん
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") とでもしる。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4250日前に更新/273 KB
担当:undef