VB.NET質問スレ (Part7)at TECH
VB.NET質問スレ (Part7) - 暇つぶし2ch75:デフォルトの名無しさん
04/10/12 20:22:45
>>73
そんな難しい問題か?
それに学校の課題ならテキストにヒントみたいなこと書いてあるんじゃない?

2分法とかのアルゴリズムとか、数学で「はさみうち」を勉強したことがあれば
その考え方の応用でいけるでしょ。

ところで、たぶん>>74は解放が分らないに5万両。


76:73
04/10/12 21:25:43
>>74,75
εに適当な値を代入した時に、
1+εが1より大きいか、等しいかを判別するプログラムは
あらかじめ与えられています。
それ以外のテキストはないに等しいです。
自分でネットで極基本的な文法は勉強しました。
For文で1+εが1より大きくなるまで(1e-10から1e-20位まで)
演算させて、If文で大きくなる直前のεを出力させるプログラムを
組もうと思ったんですが、
For文とIf文の条件式の書き方とか、
どうしたら有効数字三桁で出力できるのかとか、
分からない事が多すぎて立ち止まってます・・・。

77:デフォルトの名無しさん
04/10/12 22:06:56
>>75
解放誤字乙

78:デフォルトの名無しさん
04/10/12 22:09:08
1+(1/(2^n))でnを増やすのが良いと思う

79:デフォルトの名無しさん
04/10/12 22:39:30
>>76
条件式の書き方がわからないんだったらネットで調べる前に文法の本を買ってきたほうがいいと思うぞ
全部ネットで調べようとすると時間がかかってしかたない


80:初心者 ◆qIFvKWN9EM
04/10/12 23:24:56
はじめまして初心者です^^
ヴィジュアルベーシックを扱ってみたいのですが
今流行りなのは.NETと聞きそれを購入してマイピーシーに導入しようと思うんですけど
本体はいくらぐらいするものなのでしょうか?
それと参考書など独学で学んでいくのにお勧めの物などあれば教えてもらえませんか?

81:デフォルトの名無しさん
04/10/12 23:38:40
VB.NETの文法なら
URLリンク(www.atmarkit.co.jp)

でも、本で見るほうが分かりやすいと思われ
このページの元になった本持ってるけど、本のほうがやっぱり見やすい。

82:デフォルトの名無しさん
04/10/12 23:41:47
補足:>>81>>73からの一連の流れに対するレスだからな。

>>80に対するレスは
本は スレリンク(tech板)
本体価格は URLリンク(www.kakaku.com)


83:デフォルトの名無しさん
04/10/12 23:47:33
>>73
こういうことか?「有効数字」の意味とどの型をターゲットにているのかが
よく分らんが。とりあえずDoubleで。

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim BandWidth As Double = 0.5R
    Dim LeftVal, RightVal, CenterVal As Double
    Dim Epsilon As Double = 0
    Do While BandWidth <> 0.0R
      'LeftVal = 1.0R + Epsilon
      'RightVal = 1.0R + Epsilon + BandWidth * 2
      CenterVal = 1.0R + (Epsilon + BandWidth)
      If CenterVal = 1.0R Then
        Epsilon += BandWidth
      End If
      BandWidth /= 2
    Loop


84:デフォルトの名無しさん
04/10/12 23:48:24
83の続き

    Dim FormatString As String = "0."
    Dim NumDigit As Integer = 0
    Do
      FormatString &= "0"
      Dim EpsilonString As String = Epsilon.ToString(FormatString)
      If Epsilon.ToString(FormatString) <> FormatString Then
        Dim TrimedEpsilonString As String = EpsilonString.Substring(0, EpsilonString.Length - 1)
        Dim TrimedFormatString As String = FormatString.Substring(0, FormatString.Length - 1)
        If TrimedEpsilonString = TrimedFormatString Then
          NumDigit = 1
        Else
          NumDigit += 1
        End If
      End If
    Loop While NumDigit < 3
    MsgBox("Epsilon = " & Epsilon.ToString(FormatString))
  End Sub

85:73
04/10/13 00:15:02
皆さんアドバイス本当にどうもありがとうございました。
いただいたアドバイスを元にがんばってみます。
また分からないことがあったらお願いします。

86:初心者 ◆qIFvKWN9EM
04/10/13 01:31:11
>>82
ありがとうございます^^
なるほど、本体のほうは見る限りだと1万~2万前後が相場なんですね
本のほうはよくわかりませんでしたが本屋で立ち読みでもして
気に入ったのを買って家でじっくりとやっていこうと思います
また困ったことがあったらよろしくお願いします^^

87:初心者2
04/10/13 06:03:55
visual basicで
『フォームに6個のピクチャボックスを作成し、
ピクチャボックス番号と色指定をすると、指定された
ピクチャボックスがその色で塗られる』
という課題なのですが教えてください

88:デフォルトの名無しさん
04/10/13 06:07:56
>>87
なぜ朝に…

89:初心者2
04/10/13 06:11:09
明日の課題なのを忘れてました

90:デフォルトの名無しさん
04/10/13 06:16:21
それはVisualBasic6じゃないだろうな?.NETでいいんだな?

91:デフォルトの名無しさん
04/10/13 06:19:39
つーかマルチにはとりあわなくていいじゃん

92:初心者2
04/10/13 06:20:37
6です。ここじゃ無理ですか

93:デフォルトの名無しさん
04/10/13 06:50:12
マルチで6なのかよ。そりゃここじゃ無理だ

94:デフォルトの名無しさん
04/10/13 08:50:13
>>87
こんなの考える余地なんてないだろ
ただの作業だ

95:デフォルトの名無しさん
04/10/13 10:38:17
>>87
解決したらそれもマルチポストしとけよ


96:デフォルトの名無しさん
04/10/13 13:11:28
test


97:デフォルトの名無しさん
04/10/13 13:19:27
フォーム上でmpgファイルはどうやったら再生できますか?
メディア関係には疎いので何もわかりません

98:デフォルトの名無しさん
04/10/13 13:24:00
VB6.0からVB.NETに移行するのマンドクセー
MSに金払ったらやってくれるのかな?


99:デフォルトの名無しさん
04/10/13 13:52:55
>>98
MSに金払ったら移行するための勉強をさせてもらう権利が得られますw

100:デフォルトの名無しさん
04/10/13 13:55:05
>>97
一番手っ取り早いのはメディアプレーヤのコンポーネントを貼り付ける
かな?

101:デフォルトの名無しさん
04/10/13 14:37:40
>>99
5万/Kstep払うから、やらないか?


102:デフォルトの名無しさん
04/10/13 20:22:17
SelectionMode.MultiSimpleにしたListBoxで、
Itemを複数選択し一度に削除する為以下を実行しましたがエラーになります。

For i = 0 To Me.ListBox.SelectedItems.Count - 1
    Me.ListBox.Items.Remove(Me.ListBox.SelectedItems(i))
Next i

上記を

Me.ListBox.Items.Remove(Me.ListBox.SelectedItems(i))

だけにすると、1番上のItemは削除されるのですが、
Forで連続して削除することは出来ないのでしょうか。
宜しくお願いします。

103:デフォルトの名無しさん
04/10/13 20:39:17
>>102
んーなもんiは単なるインデックスであってIDじゃないからでしょ。
例えば10コのアイテムから5コ削除完了してi=5になった時点で
Me.ListBox.SelectedItems(i)なんて存在しないじゃん。

解決法としては、例えばFor Eachつかえばいいんじゃないの?


104:デフォルトの名無しさん
04/10/13 21:18:41
>>103
たしかにSelectedItems(i)では、消したItemによっておかしくなりますね。
だるま落としの容量で、SelectedItems(0)にしたところうまく動きました。

For i = 0 To Me.ListBox.SelectedItems.Count - 1
    Me.ListBox.Items.Remove(Me.ListBox.SelectedItems(0))
Next i

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

105:デフォルトの名無しさん
04/10/13 22:10:07
リッチテキストコントロールの内容をそのまま
printDocument使って印刷する方法を教えてください。

漠然と簡単にできると思ってたら、意外にこの2つを結ぶ線が見つからないんです。

106:デフォルトの名無しさん
04/10/13 22:57:56
今日VB.NET買ってきました。
FrameWorkって何なんですか?
.NETで作ったプログラムが他のPCで動きません。
色々調べた結果FrameWorkに関係あるような気がしました。

どなたかこのプログラミング好きな素人めに救いの手を・・・

107:デフォルトの名無しさん
04/10/13 23:20:17
>>106
何のつもりか知らんが全然面白くないよ。
ナンセンスギャグ?もう80年代じゃないんだけど。

108:デフォルトの名無しさん
04/10/13 23:48:00
>>107
よくわかりませんがここは初心者は来てはいけないわけですね。
わかりました。
もっと貴方にとって有意義な質問ができるようになったらまた来ます。



(´・ω・`)でもせめてどうやったら他のPCで動くか教えて欲しかったな・・・

109:デフォルトの名無しさん
04/10/13 23:59:23
107はこのスレに粘着しているC++厨だから気にするな

110:デフォルトの名無しさん
04/10/14 00:06:27
>>108
初心者がいかんのではなくて、「初心者です」を楯に調べられることも
調べない人が嫌われるのです。
そして、その嫌う様をおもしろがって、誰でも知ってるような調べれば
すぐわかるようなことを、わざと質問する人がいます。
そういう人だと思われたわけです。

111:デフォルトの名無しさん
04/10/14 02:11:13
なにを偉そうに

112:デフォルトの名無しさん
04/10/14 02:26:40
>>106 もう来ないかもしれないが念のため核心だけ

VB 6で作成したプログラムを実行するにはVB 6のランタイムDLLが必要であったが、VB.NETで作成したプログラムを実行するには、.NET Frameworkランタイムが必要である

113:デフォルトの名無しさん
04/10/14 02:56:06
いろいろ試してみれば、ここで不愉快になることもないよ、2chに来る奴バカしかいない

114:デフォルトの名無しさん
04/10/14 03:02:52
VB.NETも移植したいな、マークに

115:デフォルトの名無しさん
04/10/14 08:17:01
「初心者です」を免罪符のようにして調べずに質問するからな
プログラム初めてなのに本一冊も読まないでどうやってプログラム書いてるのかと

116:デフォルトの名無しさん
04/10/14 09:20:49
>>106
君の書いたソースを見てみたいYO!


117:デフォルトの名無しさん
04/10/14 13:48:35
>>113
やーいバカ

118:デフォルトの名無しさん
04/10/14 14:36:16
VB.NETで表データを表示したいのですが、
FlexGrid か DataGrid のどちらを使用したらいいか
迷っています。
表の仕様は、
行列数は固定、プログラムからの表示のみでキー入力不可、
マウスクリックされた表内の行・列番号をプログラムで取り込む機能が必要、
セルの色はプログラムにより変更可
と言った感じです。
FlexGridでもDataGridでも可能なんでしょうが、
どちらがより適切なんでしょうか?
よろしくお願いします

119:デフォルトの名無しさん
04/10/14 15:03:23
クリックしたところを拾うのはどちらでもほぼ同じ動作で出来ると思う
セルの色を任意に変えたいのだったらFlexGridのほうが楽
DataGridだとオーナードロー使っていちいち変えてやる必要がある


120:デフォルトの名無しさん
04/10/14 19:43:52
WebBrowserで開いた新しいウィンドウを
タブに追加するにはどうすれば良いのですか?
タブブラウザみたいなやつです。

121:デフォルトの名無しさん
04/10/14 19:45:06
WebBrowserで出てきた新しいウィンドウを
タブに追加するにはどうすれば良いのですか?

タブブラウザみたいなのです。

122:デフォルトの名無しさん
04/10/14 19:45:56
すまない。ミスった。
-100で書き込んでて、書き込まれて無いと思った。m(__)m

123:デフォルトの名無しさん
04/10/14 20:19:46
だいぶ前に、IEコンポーネントブラウザのスレがあったけど、どこいったの?

124:デフォルトの名無しさん
04/10/14 20:41:11
学校の宿題でてんぱってます・・・
誰か助けてください 

問題
掛け算の99を表示させなさい

どうかお願いします

125:デフォルトの名無しさん
04/10/14 20:51:50
>>124
C#だけどテキトーに。

for(int count = 1; count <= 99; count++)
{
for(int count2 = 1; count2 <= 99; count2++)
{
Console.WriteLine(count.ToString() + " "+"+"+" "+count2.ToString()+" "+"="+ " "+ (count*count2).ToString());
}
}

126:デフォルトの名無しさん
04/10/14 20:53:06
間違った。99じゃなくて9999になってた。しかも*を+にしてた。
for(int count = 1; count <= 9; count++)
{
for(int count2 = 1; count2 <= 9; count2++)
{
Console.WriteLine(count.ToString() + " "+"*"+" "+count2.ToString()+" "+"="+ " "+ (count*count2).ToString());
}
}

127:デフォルトの名無しさん
04/10/14 21:04:40
>>125-126
ありがとうございます
宿題Visual Basicなんです
これをVBでやるとどうなるんでしょう
たびたびすいません

128:デフォルトの名無しさん
04/10/14 21:47:11
>>123
どこか、作り方とか説明してるサイトありませんかね?

129:最凶VB厨房
04/10/14 21:52:49
URLリンク(www.gotdotnet.com)

130:デフォルトの名無しさん
04/10/14 22:03:46
ここは救いようのない初心者が集まるスレですね

131:デフォルトの名無しさん
04/10/14 22:29:16
>>129
VBのソースは・・・

132:デフォルトの名無しさん
04/10/14 22:29:51
空気読めない独りよがりのネタを指摘された奴が逆ギレしてやってるんだったりして(w

133:デフォルトの名無しさん
04/10/14 23:29:31
宿題聞いている輩は本気なのか?
この程度のことが思いつかないようでは、授業を受けている意味がないような・・・

134:デフォルトの名無しさん
04/10/14 23:35:56
文系大学で単位とるための選択口座・・・
OTL
おながいします

135:デフォルトの名無しさん
04/10/14 23:59:52
文法がわからないのかプログラムの流れが思いつかないのか

136:デフォルトの名無しさん
04/10/15 00:06:44
>>134
来年もガンバレ

137:デフォルトの名無しさん
04/10/15 00:10:11
文系にプログラミングの単位なんてあるの?
電算室ある理系の大学でないと無理な気がするんだけど。

138:デフォルトの名無しさん
04/10/15 00:12:24
俺の学生の頃は工学部でもUNIXの授業しかなかった・・・
10年くらい前か

139:デフォルトの名無しさん
04/10/15 00:14:39
>>136
やってみました
添削お願いします

Dim i, j As Integer
For i = 1 To 9
For j = 1 To 9
Console.Write(i * j)
Next
Console.WriteLine()
Next
Console.Read()

>>137
あるんです・・・


140:デフォルトの名無しさん
04/10/15 00:30:48
サーバー監視ソフトを作りたいのですが、
スクリーンショットを保存する方法を教えてください。。

141:デフォルトの名無しさん
04/10/15 00:36:27
「Print Screen」キーを押す
「ペイント」を開いて「クリップボードから貼り付け」
「ファイル名を指定して保存」



142:デフォルトの名無しさん
04/10/15 00:43:08
言語でって意味だとおもう

143:デフォルトの名無しさん
04/10/15 01:23:06
わかってやってんだと思う

144:デフォルトの名無しさん
04/10/15 02:03:35
なんでスクリーンショットがいるのかワカラン。

145:デフォルトの名無しさん
04/10/15 06:45:46
mshtml.HTMLDocumentをAxWebBrowser使わないで単独で使いたいんだけどできるかな?



146:デフォルトの名無しさん
04/10/15 12:43:09
>>140
( ・∀)人(∀・ )通報しますた!

147:デフォルトの名無しさん
04/10/15 21:50:38
>>140
検索しまくればなんとかなるレベルだと思うんだが

148:デフォルトの名無しさん
04/10/15 22:31:23
宿題厨まだー?

149:139
04/10/16 19:59:38
スルーされた
OTL

150:デフォルトの名無しさん
04/10/16 20:12:15
>>139
これだと掛け算の結果が羅列されるだけで不十分だと思う

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") とでもしる。

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)
の「値の等価性と参照の等価性」を読むといいかも。



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