VB.NET質問スレ(Part35)at TECH
VB.NET質問スレ(Part35) - 暇つぶし2ch200:デフォルトの名無しさん
10/10/08 14:43:48
resizeendイベントでもやればいいんじゃないの?

201:デフォルトの名無しさん
10/10/08 14:44:46
なるほど。。。
瞬間にチカチカするのは代償と考えてあきらめるしかないですかね。

202:デフォルトの名無しさん
10/10/08 14:46:51
フォームが透明になるだけでもありがたく思わないと

203:デフォルトの名無しさん
10/10/08 14:49:13
でもまぁ、そうですけど、何も問題がない人との違いは何なのかと・・・。
まぁ、設定で、おかしくなる人ようの設定かなんかをもうけてもいいですし、その辺は臨機応変にやろうと思います。

204:デフォルトの名無しさん
10/10/08 14:50:17
問題ないって書いたのは全部俺だけど
全部うそだよw

205:デフォルトの名無しさん
10/10/08 14:50:35
>>195
ファイル名にコロンや垂直タブって無理じゃね?

206:デフォルトの名無しさん
10/10/08 14:51:31
>>196さん
これでできました。ありがとうございました!

207:デフォルトの名無しさん
10/10/08 14:57:08
>>204も嘘かもしれないので、信じないとしても、
何とか例の現象は解決(?)いたしました。
リサイズができなくなったときのために一応つけておいたステータスバーも取り払うことができ、
当初意図していたとおりのソフトができそうです。
皆様、アドバイス等ありがとうございました。

208:デフォルトの名無しさん
10/10/09 23:22:31
For i As Integer = 1 To 100
Next

の中でiを1から100の間で戻したり進めたりするのは何も問題ないでしょうか?

209:デフォルトの名無しさん
10/10/09 23:25:12
気になるんだったら別の書き方すればいいのに

210:デフォルトの名無しさん
10/10/09 23:49:26
問題ないけどそういう使いかたするならあえてfor nextを
使わないのがいいと思う

211:デフォルトの名無しさん
10/10/10 22:41:57
>>209-210
トンクス

212:デフォルトの名無しさん
10/10/14 11:32:35
宇宙語を話す皆さんに質問です
プログラミング用語の『スロー』ってどういう意味?(”投げる”とか答える人はまだ地球人)

なんか、こう、イメージの掴める解説ってないのかね

213:デフォルトの名無しさん
10/10/14 12:34:30
マルチ乙

214:デフォルトの名無しさん
10/10/14 13:07:36
異常系世界へgotoするってこと
その際のスペースカプセルが例外

215:デフォルトの名無しさん
10/10/14 15:43:35
linux上でunixを使いCUIの環境で、日の丸の国旗の画像を作るプログラミング、教えてください

216:デフォルトの名無しさん
10/10/14 16:20:31
スレチ

217:デフォルトの名無しさん
10/10/14 22:36:51
URLリンク(www.mediafire.com)

↑こんな感じでどう?
即席で作ってみたけど

218:デフォルトの名無しさん
10/10/15 01:19:03
プリンタドライバをインストールしたいのですが、「プリンタ名が無効です」と表示されて上手くいきません。
どこがまずいかご教授お願いします。

必要なファイルは事前に C:\Windows\system32\spool\DRIVERS\W32X86 にコピー済みで、
ファイルをフルパスで指定しても同じ結果になります。

Public Shared Function DriverInstall(ByVal strDriverName As String) As Boolean
Dim di As New DRIVER_INFO_3
With di
.cVersion = 3
.pConfigFile = "ps5ui.dll"
.pDataFile = strDriverName & ".ppd"
.pDependentFiles = "pscript.ntf" & vbNullChar _
& "pscript.hlp" & vbNullChar _
& "ps5ui.dll" & vbNullChar _
& strDriverName & ".ppd" & vbNullChar _
& "pscript5.dll"
.pDriverPath = "pscript5.dll"
.pEnvironment = "Windows NT x86"
.pHelpFile = "pscript5.hlp"
.pMonitorName = String.Empty
.pName = strDriverName
.pDefaultDataType = "RAW"
End With

If AddPrinterDriver(String.Empty, 3, di) = 0 Then
Dim ExcptWin32 As New Win32Exception(Marshal.GetLastWin32Error())
MessageBox.Show(ExcptWin32.Message, "Win32Err", MessageBoxButtons.OK)
Return False
End If
Return True
End Function

219:デフォルトの名無しさん
10/10/15 01:26:27
一応、APIの宣言部分も貼っておきます。
AddPrinterDriverW を AddPrinterDriverA に変えると、エラーメッセージは「パラメータが間違っています」になります。

Private Declare Function AddPrinterDriver Lib "winspool.drv" Alias "AddPrinterDriverW" _
(ByVal pName As String, _
ByVal Level As Integer, _
ByRef pDriverInfo As DRIVER_INFO_3) As Integer

Public Structure DRIVER_INFO_3
Public cVersion As Long
Public pName As String
Public pEnvironment As String
Public pDriverPath As String
Public pDataFile As String
Public pConfigFile As String
Public pHelpFile As String
Public pDependentFiles As String
Public pMonitorName As String
Public pDefaultDataType As String
End Structure

220:デフォルトの名無しさん
10/10/17 00:05:45
あげとく

221:デフォルトの名無しさん
10/10/20 16:20:40
じゃ、俺は下げとく。

222:デフォルトの名無しさん
10/10/21 01:16:55
C#だと拡張メソッドでenumを拡張できるけど、VBはできるん?

223:デフォルトの名無しさん
10/10/21 11:05:07
VBでは拡張メソッド専用の構文を準備していないため次のように属性を直接指定する。
Imports System.Runtime.CompilerServices
Module StringExtensions
    <Extension()> _
    Public Sub Print(ByVal aString As String)
        Console.WriteLine(aString)
    End Sub
End Module

同じ要領でenumでも出来るはず、やってみて。

224:デフォルトの名無しさん
10/10/21 23:34:28
>>223
なるほど、試してみる

225:デフォルトの名無しさん
10/10/26 20:28:20
DLL改ざん出来ないように厳密名付けたんだけど、
この場合バージョン管理ももれなく付いてくるの?
アセンブリバージョン上げたら呼び出し側でエラーが出るんだけど…
対処法としてはバージョン固定にするか、GACに登録してバージョンリダイレクトさせるかって事でOK?

226:デフォルトの名無しさん
10/10/26 21:57:25
基本的には厳密名つける=バージョン管理を行う。

>対処法としてはバージョン固定にするか、GACに登録してバージョンリダイレクトさせるかって事でOK?
もしくはconfigファイルでバージョンリダイレクト。
もしくは全ビルド。


227:デフォルトの名無しさん
10/10/26 21:58:25
>DLL改ざん出来ないように厳密名付けたんだけど、
実はあんまり意味ないよね。


228:デフォルトの名無しさん
10/10/27 00:18:19
>もしくはconfigファイルでバージョンリダイレクト。
これは"呼び出し側exe.config"にバージョンポリシーを記述して配置するイメージですよね?

>実はあんまり意味ないよね。
えw

229:デフォルトの名無しさん
10/10/27 18:23:08
すみません、初歩的で申し訳無いのですが
横2列のcsvを二次配列に入れるプログラムが作れません。

field()でテキストをReadlineして
field-Aに二次配列で入れるループを書いてます。
untilのループ内に変数Xを利用すると下記のエラーが出ます
「Exception.InnerException を参照してください。エラー: オブジェクト参照がオブジェクト インスタンスに設定されていません。」

Dim field() As String
Dim field-A(,) As String
Dim reader As New System.IO.StreamReader("field.csv", System.Text.Encoding.Default)
Dim X As Integer

X = 0

Do Until reader.EndOfStream

line = reader.ReadLine()
field = line.Split(",")

field-A = Nothing
field-A(X, 0) = field(0)
field-A(X, 1) = field(1)

X = X + 1

Loop

csvの中身
フィールドA-01,フィールドB-01
フィールドA-02,フィールドB-02
フィールドA-03,フィールドB-03

230:デフォルトの名無しさん
10/10/27 18:25:30
field-A(X,0)の行でどうもエラーが出るようです。

・他にもっと簡単な方法があると思うが浮かばない
・変数Xのuntil内での使い方がおかしいorスコープがおかしいが、原因がわからない
(UNTIL内でX=0とするとエラーが起きないんですがループでリセットするわけにはいかない)

上記2点、わかる方いらっしゃいますでしょうか?
宜しくお願いします。

231:デフォルトの名無しさん
10/10/27 19:05:03
>>230
>field-A(X,0)の行でどうもエラーが出るようです。
field-Aを使用する前(Do Loopの前)にあらかじめ2次元配列を作成する
field-A = New String(2, 1) {}

>他にもっと簡単な方法
2次元配列使わないでいいのならListとか使ったほうが楽

>変数Xのuntil内での使い方がおかしいorスコープがおかしい
どうおかしいのか分からない

232:デフォルトの名無しさん
10/10/27 19:10:21
>>231
オブジェクト参照がオブジェクト インスタンスに設定されていません。

というエラーが出てフォームも立ち上がらない状態です。
untilの外側で宣言したXがインスタンスオブジェクトと認識されてるとかなんとか

そこまでしか情報がわかりませんでした。
Nothingで解決かと思ったら解決せず。

233:デフォルトの名無しさん
10/10/27 20:33:20
配列っていうのは事前にメモリを確保してから使うんだよ?
確保するコードを追加しよう。

だけど、行数わかる?ファイル読み込まないと分からないよな?
つまりこの処理に配列は合わない。
随時メモリを拡張してくれるListの方が適切

234:デフォルトの名無しさん
10/10/27 21:14:07
太古の時代では一行目にデータ数書いたりしてたな

235:デフォルトの名無しさん
10/10/27 21:22:19
>>実はあんまり意味ないよね。
>えw
あんまり役に立つ場面てないよね、に言いかえよう。


236:デフォルトの名無しさん
10/10/27 21:43:46
>>233
ありがとうございます!
配列の最大数を宣言しないとだめなんですね。

Dim field-A(10,2) As String

と数値を入れて宣言したら思い通り動作しました。
それからListが良いということですので使ってみます。

全て解決です。皆さんありがとうございました。

237:デフォルトの名無しさん
10/10/28 01:54:46
>>233-234
配列が向かないのはまあ同意するが
たまには ReDim Preserve の事も...いや、思い出さなくてもいいか

238:デフォルトの名無しさん
10/10/28 08:22:50
>>237
msdnによると
URLリンク(msdn.microsoft.com)(VS.80).aspx
>Preserve を使った初期化。Preserve 修飾子を指定した場合、Visual Basic では、
>既存の配列から新しい配列に要素がコピーされます。
とあるから、結局はコピー、つまり遅いんでしょ?


239:デフォルトの名無しさん
10/10/28 10:38:43
一要素ずつ拡張してたら糞遅いわな
List(Of T)は容量があふれるたびに内部の配列のサイズが2倍になる
同じことを自分でやってもいいけど時間の無駄

240:デフォルトの名無しさん
10/10/28 12:49:22
拡張と見せかけた再割り当てってのが嫌なんだよ。
VB6では桁違いに速い。

241:デフォルトの名無しさん
10/10/28 19:46:52
いや再割り当てはどっちみち必要だろ
VB6は内部でListみたいなことをやってるだけ

242:デフォルトの名無しさん
10/10/28 20:48:49
そうなの?
実はその辺自信無くて試したんだけど、10倍ぐらい違ったからそうだろって…


243:デフォルトの名無しさん
10/10/28 20:52:08
>>239-240
なんか物凄く馬鹿っぽいご意見ですいこと....

244:デフォルトの名無しさん
10/10/28 21:09:43
>>239は間違ってないよ
List(Of T)は再割り当て時には現在の倍の容量を確保して新しい領域に現在の要素をすべてコピーする
要素が追加されるたびに再割り当てというような馬鹿なことはしない

245:デフォルトの名無しさん
10/10/28 22:17:26
一般的なListの伝統ですな

246:242
10/10/28 23:27:06
もう一度やってみたら、
確かに要素数の増加に伴って拡張に必要な時間が増えますね・・・

にしても.net遅すぎる気が・・・
.netはinteger、VBA(VBが手元に無い為)はlongの一次元配列で、
要素数を0から350000まで1づつ増やすコードをそれぞれで実行した結果、
書くのも恥ずかしいぐらいの差がついちゃいました。

コード間違えたかなぁ・・・

247:デフォルトの名無しさん
10/10/28 23:45:54
.NETでは確実に額面通りの動作をするから不自然なのはVBAの方だろう
ループの中でRedim Preserveしたりするバカが多いから変な最適化してるんじゃないの

248:デフォルトの名無しさん
10/10/30 00:48:22
たまたま空きが後ろにあればそのまま拡張できる実装になってるんじゃない?
.NETの場合はメモリ管理上確実に再確保とコピーが必要。


249:デフォルトの名無しさん
10/10/31 01:26:31
VB2010、.Net Framework4.0で、Byte型変数の値を、10進数に変換し、Integer型の
変数に代入したいと思っています

Dim BBB As Byte
Dim III As Integer

という宣言で、BBBに「10」と入っている時に、IIIにどうにかして「16」と、10進数に
変換した結果を代入させたいと思っているのですが、どうしたらよいのでしょう?

III = CInt(BBB)とかIII = ToInt16(BBB)とかやってみたのですが、うまくいかず…

ToInt16とかを実行するために、2バイトのバイト列とかにしないとダメなのでしょうか?

250:デフォルトの名無しさん
10/10/31 01:38:32
>>249
III=BBB

251:デフォルトの名無しさん
10/10/31 01:46:55
>>250
それは何度も試しててムリぽ…と思ってもう一度やってみたら、できました…

ありがとうございました

何でできないって思ったんだろ?
もう寝ます…

252:デフォルトの名無しさん
10/10/31 07:39:59
>>251
できなくね?
何か勘違いしてると思われ
16進数というのは16進数表記の事で、中身の数値じゃないよ。
5という数値を表す場合、"5"、"Ⅴ"、"五"、"○○○○○"、
といろいろあるが、そのひとつが16進数で、どれもStringで表現される。
III = Convert.ToInt32("10", 16)
が正解。
>III = CInt(BBB)とかIII = ToInt16(BBB)とかやってみたのですが、うまくいかず…
ToInt16の16は16bit整数型(Short)で16進数という意味は無いよ。

253:デフォルトの名無しさん
10/10/31 10:49:33
>>249
>10進数に変換し
人間が見えるように出力するときにやるもんだろ

>BBBに「10」と入っている時に
まずここは何進数で「10」のつもりなんだ?
BBBに値を代入したコードはどうなってるんだ

254:デフォルトの名無しさん
10/10/31 14:57:34
>>251で解決したって言ってるんだから
単にバイト変数の中身を整数変数に代入したかっただけの話だろ?



255:デフォルトの名無しさん
10/10/31 20:24:40
どうして、VB.NET ってあまり流行らないんですか?
どの案件みても、C++とかJavaとかC#とかPHPとか

256:デフォルトの名無しさん
10/10/31 20:28:42
C#でいいならVBをわざわざ選ぶ意味はないよ
どっちかというとVB6上がりでC触れないとかネガティブな理由で使う言語だからね

257:デフォルトの名無しさん
10/10/31 21:36:47
VB.netも楽しいけど、C#の方が強力だし、VBの文法って汚いし…
やたら融通の効く所はいいと思うんだけど。

258:デフォルトの名無しさん
10/10/31 22:45:44
>>255
Microsoft的には非IT系のGeekなプロフェッショナル向けの言語。
要は会計士とか医師でプログラミングもしちゃうぜ的な人向け。

259:デフォルトの名無しさん
10/10/31 22:52:28
いつの時代のVBのコンセプトだよそれ。

260:デフォルトの名無しさん
10/10/31 22:57:06
システム部門が独立してできたようなところだとVBが主戦力多いよ
往々に.net移行が遅れてたりする

261:デフォルトの名無しさん
10/10/31 23:08:41
非情報系の人にはC系は難しいからVBっていうのはもう古いよ。
実際JavaやC#ならVBと変わらん。MSの囲い込みイメージ戦略に騙されてるだけ。

262:デフォルトの名無しさん
10/11/03 17:01:16
ASP.NETを使うことになったのですが、おすすめの本などありましたら教えてください

263:デフォルトの名無しさん
10/11/04 00:28:54
>>262
スレリンク(tech板:137番)

264:デフォルトの名無しさん
10/11/04 03:23:01
マルチごめんなさい。
急にプログラマーに仕事が決まり、ASP.NETが必要になったのですが、
適当なスレがなかったようなのでマルチになってしまいました。
謝罪をさせていただいた上でまた質問させてください。
みなさんはASP.NETの勉強はどうしてるんですか?
おしえてください。使ってない人もいるかもしれませんが・・

265:デフォルトの名無しさん
10/11/04 11:05:31
ASP.NETなんて勉強しなくても使えるからなぁ。

266:デフォルトの名無しさん
10/11/04 11:06:54
RequestオブジェクトとResponseオブジェクトがあれば
なんでもできるし。

267:デフォルトの名無しさん
10/11/04 13:30:28
プログラムできない奴はプログラマとしての仕事をするな
時間と金の無駄だ

268:デフォルトの名無しさん
10/11/04 13:56:28
誰にでもできる簡単な仕事です。

269:デフォルトの名無しさん
10/11/04 16:22:03
文系理系関係ありません
ただ学歴高い方が発注元に単金を高く請求できるので

270:デフォルトの名無しさん
10/11/04 16:48:57
高卒でプログラマやってます

271:デフォルトの名無しさん
10/11/04 17:20:45
その場合は資格をいっぱい取ればおk

272:デフォルトの名無しさん
10/11/04 18:17:44
オラクルマスターを取りなさい

273:デフォルトの名無しさん
10/11/04 18:27:34
テクデとテクネなら持ってます。

274:デフォルトの名無しさん
10/11/04 20:51:45
知恵袋でも質問したけど回答がつかなのでここでも聞かせてください


自分のサイトを読み込んでリンクさせるてリンクをクリックすると規定のブラウザで開く方法ってありますか?
要はリファラを残したい。。。

275:デフォルトの名無しさん
10/11/04 21:00:44
日本語でおk

276:デフォルトの名無しさん
10/11/04 21:04:49
リファラを残す方法はありますか?

277:デフォルトの名無しさん
10/11/04 21:10:54
リファラが何かわかっているのかい?
HTTPヘッダだよ
それがわかればどうとでもできることがわかるよ

278:デフォルトの名無しさん
10/11/04 21:32:25
リンク元のページのことじゃないの??





279:デフォルトの名無しさん
10/11/05 11:19:49
環境はVB.NET 2008 Express Edition + Windows XPです。
Visual Studioエディタ内で子ウインドウをキーボードで切り替えるとき、
Ctrl+Tabキーで一覧が表示されますが、ここで
Enterキーまたはマウスでクリックしなくても切り替えられますか?

280:デフォルトの名無しさん
10/11/05 19:45:34
スペースキーでもOK(たぶん)
念力でもOK(エスパーなら)
っていうか、何が聞きたいんだ

281:デフォルトの名無しさん
10/11/05 20:50:48
質問です。
VisualStudio2003proとSqlserver2005developerを持っているのですが、
この組み合わせではADO.NET2.0の機能を使うことはできませんか?

282:test.vb
10/11/05 21:44:14
>>274

意味わからないけど
既定のブラウザでURLを開くだけなら
Process.Start("URLリンク(example.com)")

283:デフォルトの名無しさん
10/11/05 23:39:21
私はJAVAしかやったことなくて今度VBもやらないといけないことになったのですが、
今までは、オブジェクトというのは変数とメソッドが一緒になった固まりだと思ってました。
しかし、VBのサンプルコードを読むと、

Dim fm As Object

fm = 2.73

という構文が出てきたんですが、どうやらこれはVBでは間違っていないようなんです
fmをオブジェクト宣言したのなら、まずはそこからインスタンスを作って、さらに
インスタンスの変数。つまりfm.hensuu =2.73 みたいな形ならわかるのですが、
いきなりオブジェクトとして数値が宣言されて、いきなり数字が代入されるなんて・・
VBではオブジェクトの意味がJAVAと違うんでしょうか・・おしえてください

284:デフォルトの名無しさん
10/11/05 23:45:07
ほんとにJavaやってんの?
それJavaでもできるよ(Java5以降)。オートボクシングという。
.NETではボクシングは実行エンジン自体に組み込まれてて、Javaのオートボクシングよりももっと柔軟。

285:デフォルトの名無しさん
10/11/06 00:07:27
>>284
JAVAにもあるん・・・なんだかわからない・・
まずはインスタンス化しないと変数は代入できないんじゃなかったけ?
ましてオブジェクトは固有だから、変数がいくつあるかわからないし・・

286:デフォルトの名無しさん
10/11/06 00:12:25
>>283
VB(というか.net)にはobject型という型があるんだよもん

つーか入門書ぐらいけちらず買えよ
それかMSDN読むか
Javaと違ってMSDNの日本語化はわりと深い所までちゃんとされてるからいいぞ

287:デフォルトの名無しさん
10/11/06 00:13:58
Javaでもこう書ける
Object fm;
fm = 2.73;
2行目は省略形で書かれていて、省略せずに書けば次のようになる。
fm = Double.valueOf(2.73);
Double.valueOf(2.73)の処理はボクシングと呼ばれる。
.NETでもこれと同じような処理が自動的に行われている。
これでわかんないならVBと比べる以前にJavaを入門書からやり直すべき。

288:デフォルトの名無しさん
10/11/06 00:15:33
何が言いたいのかよーわからんけど、
Object型のインスタンスなんて、スレッドの同期オブジェクトが欲しいときぐらいしか作らないよw

289:デフォルトの名無しさん
10/11/06 00:31:43
普通は、intやdoubleなどの単一の値も、
全てオブジェクトとして扱うのがオブジェクト指向的には自然なんだよ
Javaは設計が古いのでそうなってないが.NETは実際に全部オブジェクトとして扱えるということ

290:デフォルトの名無しさん
10/11/06 00:36:52
javaもまともにできてたとは思えんな。

291:デフォルトの名無しさん
10/11/06 13:37:13
.net前のMSDNとかは、変な翻訳とかも混ざって非常に分かり難かったが
最近のは割とまともにローカライズされて見やすくなったよな
新しく使うクラスとかはとりあえずF1押して概要とかメンバーとか見るのが癖になってる

292:デフォルトの名無しさん
10/11/06 15:26:46
>>286
>>287
>>288
>>291
ありがご当皆さん・・勉強してみます・・・

293:デフォルトの名無しさん
10/11/07 01:58:54
・注文テーブル
注文番号(PK) 都道府県コード 市区町村コード 以下、注文日時とか商品IDとか諸々

・都道府県マスター
都道府県コード(PK) 都道府県名

・市区町村マスター
都道府県コード(PK1) 市区町村コード(PK2) 市区町村名

とこんなテーブルがあったとして、DataGridViewにBindingSourceを設定して、都道府県を
表示させるまでは良いのですが、市区町村に複合キーを投げる方法が分からず。
仕方がないのでテーブルアダプタにWHERE 都道府県コード=@都道府県コードみたいなメソッドを用意して、
データテーブルを取得するようにコードを書いたのですが、もっとスマートなやり方ってないもんですか?





294:デフォルトの名無しさん
10/11/09 00:22:51
javascriptを含むhtmlのソースをダウンロードして表示したいです。
URLリンク(dobon.net)
ここの方法でダウンロードは出来たのですが、javascriptがソースコードのままになってしまいます。
javascriptによってhtmlが生成された後のhtmlをダウンロードするにはどうすればいいでしょうか?

295:デフォルトの名無しさん
10/11/09 01:57:19
またドボン!か・・・。
いい加減、ドボンはもういいよ。

俺なんか、7年前に買ったものを大事に使うあまり、
流行から取り残されていってるんだぞ?
7年以上も続けているドボンを見てるとイライラしてくる。
そろそろ身を引いたらどうなのよ、って。

ドボンはアーカイブ(過去ログ)だけ残して、
後は若い奴らに譲ろうぜ?
若い奴らに新しいVBサイトを構築させていこうぜ。


296:デフォルトの名無しさん
10/11/09 07:15:46
そうは言っても若い奴らが好き好んでVBなんか使うと思うか?

297:デフォルトの名無しさん
10/11/09 09:04:25
こんにちは。スレチでこちらに飛んできました。

ディスプレイが省電力モードに移行をしたかを知るために、下記のように作ってみました。

<System.Runtime.InteropServices.DllImport("user32.dll")> Shared Function MonitorFromPoint(ByVal x As Integer, ByVal y As Integer, ByVal dwFlags As Integer) As IntPtr
End Function

<System.Runtime.InteropServices.DllImport("kernel32.dll")> Shared Function GetDevicePowerState(ByVal hDevice As IntPtr, ByVal pfOn As Integer) As Integer
End Function

Public Shared Sub PowerState()

Dim hWnd As IntPtr
Dim Ret As Integer
Dim Pw As Integer

hWnd = MonitorFromPoint(&H0, &H0, &H2)
Ret = GetDevicePowerState(hWnd, Pw)

MsgBox(Pw)

End Sub

こんな感じにやりましたが、ダメでした。
そもそも、ハンドルが取得できない。

何かよい方法はないでしょうか??


298:デフォルトの名無しさん
10/11/09 10:30:53
MonitorFromPointの引数は2つになってるね。
URLリンク(msdn.microsoft.com)


299:デフォルトの名無しさん
10/11/09 11:40:35
>>294
そんなの無理じゃね?

300:デフォルトの名無しさん
10/11/09 11:54:15
>>294
javascriptのdocument.writeなどで書き出すhtmlを展開したいと言ってるの?
WebBrowserコントロールにいったん読み込んで、
それのdomから取得すればできるかもしれないな。

301:デフォルトの名無しさん
10/11/11 10:28:36
データベース接続で質問です。

こんなやり方と
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "接続文字列";

SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = sqlStr;

こっちのやりかた
何が違うのでしょうか。

SqlConnection conn = new SqlConnection("接続文字列");

SqlCommand cmd = conn.CreateCommand();
cmd.CommandText =sqlStr;



302:301
10/11/11 10:31:21
>>301 なぜこんな質問したかというと、
efreedom.com/Question/1-442465/InvalidOperationException-Executing-SqlCommand-Transaction
にスレッド処理でエラーが発生したんだよって報告があったので。


303:デフォルトの名無しさん
10/11/11 11:50:46
同じです。

304:デフォルトの名無しさん
10/11/13 09:22:42
しょぼいPCで開発してる奴は死ね

305:デフォルトの名無しさん
10/11/13 21:58:19
LabelのBorderColorを変更出来るようにする
初歩的なことですみません。
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
Dim aPen As New Pen(m_BorderColor, 1)
Dim aRect As Rectangle() = {New Rectangle(0, 0, Width - 1, Height - 1)}
e.Graphics.DrawRectangles(m_Pen, m_Rect)
MyBase.OnPaint(e)
End Sub

見た目には実装されているのですが、BorderStyleとは無関係に四角を描いてるだけです。
本来のBorderStyleを拡張するにはどうしたら良いのでしょうか?


306:デフォルトの名無しさん
10/11/13 22:46:29
BorderStyleをNoneにする

307:デフォルトの名無しさん
10/11/13 23:38:53
NoneにしてPaddingを全部1とかにするのがやっぱり簡単ですかね

308:デフォルトの名無しさん
10/11/13 23:44:18
「本来のBorderStyleを拡張」ってどういう意味なんだ。

小学生じゃないんだから相手にエスパー能力を期待しているとしか思えないような
質問するなよと。

309:デフォルトの名無しさん
10/11/14 00:13:24
>>305
ControlPaint.DrawBorder/DrawBorder3D

310:デフォルトの名無しさん
10/11/15 01:35:26
Part20にあった質問なんだけど、この答えを知りたいです。

BindingSourceとTextBoxをバインドしています。
BindingSourceのカレントレコードが変更される際に入力をチェックして、
入力のキャンセルや、レコード移動のキャンセルを行いたいのですが、
どうしたらいいでしょうか。

PositionChangedやCurrentChangedイベントで出来るかと思ったのですが、
これらは移動後に発生するみたいですし。

よろしくお願いします。

311:デフォルトの名無しさん
10/11/15 13:19:24
ハゲ以外で。

312:デフォルトの名無しさん
10/11/15 22:51:39
>入力のキャンセルや、レコード移動のキャンセル

意味が分からん


313:デフォルトの名無しさん
10/11/15 23:13:58
Gridのセル編集を開始したら保存ボタンを押すまで他の行の編集が出来ないようにしたいって話なんだけど…

314:デフォルトの名無しさん
10/11/16 00:25:02
自己解決しました
URLリンク(www.eggheadcafe.com)

315:デフォルトの名無しさん
10/11/17 02:34:48
ユーザコントロールをコンボボックス風にドロップダウンで表示させたいんですが、やり方が全く分かりません。
どなたか参考になりそうな日本語サイトをご存じないですか?

316:デフォルトの名無しさん
10/11/17 09:06:22
そういうのはWPFだろ
WPFで作ったコンボをVBに読み込むとか。
正攻法は大変だと思う

317:デフォルトの名無しさん
10/11/17 09:07:20
もうどうでもいいからリストボックスでも表示してやれよ


318:デフォルトの名無しさん
10/11/17 21:44:07
初心者スレに行くべきか悩んだんですが、型変換に関して
とあるAPIの関数を呼び出しているんですが

Public Declare Function ADC_SetConfig Lib "AIOUSB" Alias "VBADC_SetConfig" (ByVal DeviceIndex As UInteger, ByRef pConfigBuf As Byte, ByRef ConfigBufSize As UInteger ) As UInteger

これの第2引数、pConfigBuf。ヘルプには以下のような構造体が書かれていました。
' Config 構造体
<SerializableAttribute()> <ComVisibleAttribute(True)> _
Public Structure TUSBAI1616Config
Dim ChannelRange() As Byte
Public Sub Initialize()
ReDim ChannelRange(0 To &HF)
End Sub
Dim CalibMode As Byte
Dim TrigMode As Byte
Dim StartStopCH As Byte
Dim Oversample As Byte
End Structure

この構造体を第2引数のとおり、Byteとして渡したいんですがどう変換したらいいんでしょうか?
AllocHGlobal→StructureToPtrで取得したポインタを渡したら0除算云々と怒られました
3日3晩悩んで試行して解決できず、エロい人知識を貸してください


319:デフォルトの名無しさん
10/11/17 22:00:14
そのDeclare宣言は変えられんの?
ByRef As TUSBAI1616Config
って定義するだけなんだけど

320:デフォルトの名無しさん
10/11/17 22:23:02
>>319
Declareの宣言は勝手に変えるな馬鹿と言われて来たせいもあってか、その発想には至りませんでした。
明日試してみます。

オンラインマニュアル無いと思ってたらありましたので一応
URLリンク(accesio.com)


※サンプルプログラム(VB6)で使用されていた例
Private Type TUSBAI1616Config
ChannelRange(0 To &HF) As Byte
CalibMode As Byte
TrigMode As Byte
StartStopCH As Byte
Oversample As Byte
End Type

ADC_SetConfig DeviceIndex, Config, ConfigBufSize

これを、.net向けに>>318のように私が構造体を定義しなおしました。

321:デフォルトの名無しさん
10/11/17 22:49:57
VB6サンプルじゃなぁ…

322:デフォルトの名無しさん
10/11/19 01:09:46
テーブルの数だけテーブルアダプタが作成されてコーディングが非常に面倒なんですけど、
テーブルアダプタの共通化についてサンプルがあるWebサイトかなんかありますか?

323:デフォルトの名無しさん
10/11/19 20:41:50
俺はデザイナーからコードを引っこ抜いて、簡易的な汎用テーブルアダプタを作った
どうせUpdateメソッドしか使わないからねぇ

324:デフォルトの名無しさん
10/11/21 21:31:09
VB.netでコマンドライン引数を扱いたいのですが
取得する方法がいまいち分りません
どのようにすれば良いのでしょうか?

325:デフォルトの名無しさん
10/11/21 21:35:41
Environment.GetCommandLineArgsとか、My.Application.Startupイベントの引数とか

326:デフォルトの名無しさん
10/11/21 21:48:11
自己解決しました
以下の方法で取得できました
お騒がせしました

Dim returnValue As String()

returnValue = Environment.GetCommandLineArgs

327:デフォルトの名無しさん
10/11/21 21:50:47
skshggrksg

起動時のコマンドライン引数を取得する
URLリンク(dobon.net)

@IT:.NET TIPS コマンドライン引数を取得するには?
URLリンク(www.atmarkit.co.jp)

【VB.NET】外部から引数を受け取るプログラムを作成する
URLリンク(blog.livedoor.jp)

コマンドライン引数の取得
URLリンク(go2vb.cocolog-nifty.com)

.NET 入門 VB.NET - コマンドライン引数を扱うには... (2)
URLリンク(itnandemolab.blog70.fc2.com)

328:デフォルトの名無しさん
10/11/21 23:22:35
もう解決してるのに嬉しそうに貼らなくていいです

329:デフォルトの名無しさん
10/11/21 23:38:35
なにそれひどい。

330:デフォルトの名無しさん
10/11/22 09:43:01
vb.net コマンドライン
でぐぐれば出てくるのにマジでぐぐる前にここで
質問してるのか
いい加減にしとけよ

331:デフォルトの名無しさん
10/11/22 12:43:48
加減は見たつもり

332:デフォルトの名無しさん
10/11/23 17:40:40
Form1の起動時に(チェック処理に引っ掛かった場合には)
Form2を起動するコードを次の様に記述したのですが
なぜか、Form1が消えません。

※*_Loadイベントだけでは無く*_Shownイベントでも
試したのですが駄目でした。

どうすればForm1を非表示にした状態で、
Form2を起動する事が出来ますでしょうか?

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

  ' ~ チェック処理 ~
  Dim ins As New Form2
   Me.Hide()
   ins.Show()
   Me.Show()
End Sub


333:デフォルトの名無しさん
10/11/23 18:00:05
ins.ShowDialog(Me)

334:デフォルトの名無しさん
10/11/23 18:00:25
ハライテw

335:デフォルトの名無しさん
10/11/23 18:24:41
RitchTextboxの内容を印刷したいんだけど
VB2010でもまだそのまま印刷ってのは実装されてないんだっけ?
サンプル探してもシルバーライトの物しか出てこないから
なにか良いサンプル有ったら教えて欲しい

336:デフォルトの名無しさん
10/11/23 18:33:20
開発環境のバージョンとは何の関係もない話だと思うが
WinFormの話ならEM_FORMATRANGEとか使えば

337:デフォルトの名無しさん
10/11/23 18:45:54
>>333
ありがとうございます!!解決しました!!

338:デフォルトの名無しさん
10/11/23 19:11:24
>>336
ありがとう
調べてみます

339:デフォルトの名無しさん
10/11/23 19:35:12
>>335
Visual Basic .NET または Visual Basic 2005 を使用して RichTextBox コントロールの内容を印刷する方法
URLリンク(support.microsoft.com)

340:デフォルトの名無しさん
10/11/23 20:10:27
>>339
ありがとう
まるまるコピペしてつかってみます

341:デフォルトの名無しさん
10/11/25 12:43:06
VB2010expressでTextboxを配列化して順に配列の文字を入れたいが
どうやってもできない。
NULL扱いされる。

誰か助けて。

342:デフォルトの名無しさん
10/11/25 13:00:22
エスパーすると、配列をNewした後、TextBoxをNewしてないから。

343:デフォルトの名無しさん
10/11/25 14:13:11
Controls.OfType(Of TextBox)().ToArray()
とかでいいよ

344:デフォルトの名無しさん
10/11/25 15:06:27
341です。

すみません。補足説明します。

たとえば
Dim A as New Arraylist

For i As integer = 0 To 4
a.Add(i * 10)
TextBox(i).Text = R.ToString  ←ここがNull(Nothing)らしい
Next

簡単に配列にできないものでしょうか?
ネットで色々見ましたが、なぜかうまくできません。
初心者だから・・・?


345:デフォルトの名無しさん
10/11/25 15:15:02
テキストボックスの名前をTextBox1, TextBox2, …と連番にしておいて
Controls("TextBox" & i).Text = R.ToString()
のようにすれば配列にしなくても同じことができる
配列にするには一つずつ配列の要素に自分で代入する必要がある
あとArrayListなんか捨ててList(Of T)使いましょう

346:デフォルトの名無しさん
10/11/25 15:22:38
どうせ R が Nothing なんだろ

347:デフォルトの名無しさん
10/11/25 15:24:04
>>345
それやるくらいなら

Dim TextBoxes() As TextBox = {TextBox1, TextBox2, TextBox3 ...} だろ

348:デフォルトの名無しさん
10/11/25 15:28:37
どうでもいいよ
パフォーマンス的にはTextプロパティの設定に比べれば誤差だしVBでコードの良し悪し議論しても仕方ない

349:デフォルトの名無しさん
10/11/25 15:33:17
おいおい、職業プログラマで >>345 を許しちゃダメだろ
パフォーマンスの問題じゃなくてバグの出やすさ

>>345 は「"TextBox" & i)」が実在するかどうか実行時にしか評価されない最悪なコーディングだ。

350:デフォルトの名無しさん
10/11/25 15:36:17
なあに、その行が 「"TextBox" & i)」が実在するかどうか チェックするIfブロックの中に入っていれば問題ない

351:デフォルトの名無しさん
10/11/25 15:39:30
>>349
そんなこと言い出したらArrayList使うのも間違いだし4決め打ちもまずいし
ToStringの()省略も気になる

352:デフォルトの名無しさん
10/11/25 15:43:13
>>350
「チェックするIfブロック」も実行時にしか通らないだろ
この手のものは、コーディングミスってもコンパイルで引っかけるように考えてコーディングしないと

353:デフォルトの名無しさん
10/11/25 15:44:49
くだらない所に拘って生産性下げるのが一番最悪

354:デフォルトの名無しさん
10/11/25 15:48:07
後でTextBox5を追加したときに配列に追加するのを忘れても
コンパイル時には分からないし実行時のエラーすら出ないよ
>>345が良いとは全く思わないが>>347も万全とはいえない

355:デフォルトの名無しさん
10/11/25 15:52:00
R が何か分からないが

Dim A As New Arraylist   (個人的には Collection.Genelic ~ を使いたいが)
Dim TextBoxes() As TextBox = {TextBox1, TextBox2, TextBox3, TextBox4, TextBox5}

For i As integer = TextBoxes.Lbound To TextBoxes.Ubound
  a.Add(i * 10)
  TextBoxes(i).Text = R.ToString
Next


くらいが最低限だろ

356:デフォルトの名無しさん
10/11/25 15:58:25
>>354の問題が解決できてないじゃん
多重管理するなというのは基本でしょ

357:デフォルトの名無しさん
10/11/25 16:02:01
コントロール名に依存するコーディングというのもなぁ

358:デフォルトの名無しさん
10/11/25 16:08:04
341=344です。

ご教授ありがとうございます。
配列化、できました。


実は配列化したいTextBoxが200個×3種あって
200ずつをTabで切り替えて見られるようにしようとしています。

TextBoxがTab内にあると、この処理がうまくいかないのですが
どういう理由なのでしょうか・・・

359:デフォルトの名無しさん
10/11/25 16:15:01
ちょフォームに TextBox 600個ってさ
新手の拷問かよ

360:デフォルトの名無しさん
10/11/25 16:15:13
さすがに200はありえない。コードから自動でTextBoxを作るようにするべき。
>>345を使ってるんだろうが、Tab内でうまくいかない理由は、テキストボックスは
フォームではなくてタブコントロールのControlsの中に含まれてるから。

361:デフォルトの名無しさん
10/11/25 16:21:02
とりあえずは
コンテナ(フォーム).Controls.Find ~ で子や孫階層まで Find できるが
そもそも Grid 系を検討すべきじゃないのか?


362:デフォルトの名無しさん
10/11/25 17:10:06
ここの人たちは文句言いつつもなんだかんだで優しいな
昔と変わってなくて安心した

363:デフォルトの名無しさん
10/11/25 18:44:51
だってVB.netってだけで他のスレじゃ風当たり強いんだもの

364:デフォルトの名無しさん
10/11/25 18:51:31
>360,361

358です。
やはりTextBox多すぎですよね・・・
200個の測定データを1画面(Form内)で見られるようにしたくて
その表示する場所としててTextBoxを用意しようとしました。

TextBoxよりも良い方法があればよいのですが・・・

たしかにここの住人の方々は皆さんいい方です。



365:デフォルトの名無しさん
10/11/25 19:13:01
TextBox200個置くぐらいなら、DataGridViewのセル200個を使うかなぁ。

366:デフォルトの名無しさん
10/11/26 00:35:56
あははは、今日ちょうどテキストボックスの自動生成をやったよ
改行判定するためにmodなんて演算子を初めて使ったぐらいだ

367:デフォルトの名無しさん
10/11/26 06:34:10
そもそも表示だけなのにテキストボックスって…
普通ラベルだろ
で多くなったらListbox(マルチカラム)
もっと増えたらListView
最後はDataGridView
だな、俺なら

368:デフォルトの名無しさん
10/11/27 13:16:29
同じようなことを得意満面に指摘して悦に入る半可通

369:デフォルトの名無しさん
10/11/27 13:22:55
保守は不要ですよ

370:デフォルトの名無しさん
10/11/28 14:33:59
コンボボックスのドロップダウンリストってどんな仕組み?
下に配置されたコントロールを隠すようにサイズ拡張されるでしょ
もしかしてFormだったりするのかな?
何となく気になっちゃって

371:デフォルトの名無しさん
10/11/29 15:42:36
DataGridViewを使って、配列を1行10列で折り返して表示していく方法は
どうやったら良いですか?

372:デフォルトの名無しさん
10/11/29 15:52:06
バインディング使わずにDataGridViewにデータを表示する方法がわかってるなら
行 = 配列のインデックス / 10
列 = 配列のインデックス Mod 10
で配列のインデックスから行と列を計算するだけ。
バインディングを使いたいならその妙なデータ構造を改めるのが一番簡単だと思います。

373:デフォルトの名無しさん
10/11/29 17:08:45
たとえば、これだと縦にAの数値が並んでしまいます。

Dim A As New ArrayList
Dim Table As New DataTable
Dim Row As DataRow

For i As Integer = 0 To 50
A.Add(i) '仮値を入力
      Table.Columns.Add(i, GetType(Single))
Table.Rows.Add(A(i))
Row = Table.NewRow
Row(i) = A(i)
Next
DataGridView1.DataSource = Table

何か間違ってるのでしょうか?
もうワケがわかりません。

374:デフォルトの名無しさん
10/11/29 17:37:12
突然ですが、Focus()の事で教えてください。
フォームにコンボボックス・ラジオボタンなどを貼り付けて、
Enterキーを押した時フォーカスの移動をするように
KeyPressイベントにコードを書きました。
実行時、フォーカスを示す点線の□枠が出てきません。
Tabによる移動は□枠が出ます。
どなたか対処方法を教えてください。


375:デフォルトの名無しさん
10/11/30 00:32:07
Select()だったらどう?

376:デフォルトの名無しさん
10/11/30 09:01:09
AMDのACMLのライブラリを.NETで使う方法無いですかね?
C++では使えるようなのですがDLLをインポートしようとしても無理でした

377:デフォルトの名無しさん
10/11/30 10:15:41
普通のC++でラッパーを書いてC向けの関数としてエクスポートしてネイティブdllとしてコンパイルして.NETからdllimport
もしくはC++/CLIでラッパーを書く
前者の方がお勧め

378:デフォルトの名無しさん
10/11/30 21:42:23
>>377
ありがとうございます
C++の勉強がてらチャレンジしてみようと思います

379:374
10/12/01 06:35:33
すみません。自己解決しました。
vista , 7 の仕様だったようです。

>375
返答すみませんでした。


380:デフォルトの名無しさん
10/12/02 05:49:32
>>345の方法を始めて知った
コントロール名を変数使って指定できないかと前から思ってたんだ

で、プロパティーはそれで変更できるけど
イベントでそういう記述はなんとか出来ないかな?
イメージとしては
Private Sub Control("Label" & i )_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Control("Label" & i ).Click
こんな感じの何かない?

381:デフォルトの名無しさん
10/12/02 05:53:14
あ、前半はどうでもいいか
Handles Control("Label" & i ).Click の部分です

382:デフォルトの名無しさん
10/12/02 06:34:08
AddHandler

383:デフォルトの名無しさん
10/12/02 08:41:22
普通にデザイナからそのメソッド選択すれば?

384:デフォルトの名無しさん
10/12/02 12:15:50
AddHandlerだな
AddHandler使うならHandles以下はいらん

385:デフォルトの名無しさん
10/12/02 18:12:18
ImmGetCompositionString()を使って入力された漢字のフリガナを取得しています。
普通はフリガナがカタカナで返ってくるはずなのですが、あるときから特定のマシン
でだけ全角ひらがなで返ってくるようになってしまいました。

このサンプルを実行しても同じようになってしまいます。
URLリンク(www.atmarkit.co.jp)

環境の問題なのですが、どんな原因が考えられるでしょうか?

386:デフォルトの名無しさん
10/12/02 18:42:41
IMEが変わった

387:デフォルトの名無しさん
10/12/02 18:51:42
KB436842

388:デフォルトの名無しさん
10/12/02 23:34:46
ちょっと前にVB.NETの開発に参加して思ったんだけど、1ソースファイル(*.vb)に
複数のクラスを記述するのって、可読性が極度に下がって俺は嫌なんだけど、
これって他の開発現場では当たり前?
インターフェース定義クラスみたいな使い方なら納得も出来るんだけど、、、

389:デフォルトの名無しさん
10/12/03 08:56:34
セットで使うクラスなら
同一ソースの中に書くかな

390:デフォルトの名無しさん
10/12/03 09:51:25
>>387 ありがとうございます。

391:デフォルトの名無しさん
10/12/03 11:54:57
このようなエラーが出るのですがどのような原因が考えられますでしょうか?
System.Configuration.ConfigurationException: 構成セクション system.data を認識できません。 (c:\windows\microsoft.net\framework\v1.1.4322\Config\machine.config line 4047)

出るPCと出ないPCがあってどうしたものかと。

392:デフォルトの名無しさん
10/12/03 14:43:11
.net framework 1.1を再インスコしたら出なくなりました。

393:デフォルトの名無しさん
10/12/11 17:42:28
小数点第一位を二捨三入・七捨八入して整数と0.5単位の数値にしたいのですが、関数がわかりません

394:デフォルトの名無しさん
10/12/11 17:48:09
ありません
自分で作りましょう

395:デフォルトの名無しさん
10/12/11 18:06:43
>>394thx

ないのかよ
使えねえな

396:デフォルトの名無しさん
10/12/11 18:14:32
必要なもの全部用意されてたら君の仕事無くなるよ?

397:デフォルトの名無しさん
10/12/11 18:22:30
そんな使いようのない関数がわざわざ用意してあっても無駄なだけだしな。
互換性のために残してあるとかなら仕方ねーなと思うが

398:デフォルトの名無しさん
10/12/11 18:25:37
Int(n * 2.0 + 0.5) / 2.0 で計算できるか。

399:デフォルトの名無しさん
10/12/12 15:11:12
Boolean型の二次元配列をtrueで初期化したいんですがどうすればできますか?

400:デフォルトの名無しさん
10/12/12 15:17:20
すべての要素にtrueを代入します

401:デフォルトの名無しさん
10/12/12 15:27:15
>>400
ループさせるんですか?

402:デフォルトの名無しさん
10/12/12 16:28:41
配列の変数名を逆転させてもいいけどね。

403:デフォルトの名無しさん
10/12/12 17:58:03
>>402
もう少し詳しく教えてくれると助かります

404:デフォルトの名無しさん
10/12/12 19:39:44
縦方向にリサイズ出来ないように
Me.MinimumSize = New System.Drawing.Size(200, 28)
Me.MaximumSize = New System.Drawing.Size(2000, 28)とやっても
何故か縦方向にリサイズ出来るんだけどどうすれば縦方向にリサイズさせないように出来るの

405:デフォルトの名無しさん
10/12/12 20:36:32
イメージを256色PNGで保存するにはどうすればいいんでしょうか

406:デフォルトの名無しさん
10/12/13 10:13:39
>>403
Dim IsFirst() As Boolean

をやめて

Dim IsNotFirst() As Boolean

にする

407:デフォルトの名無しさん
10/12/13 12:07:35
DisabledとかUnlockedとか、たまに使っててイラっとするときがある。
オレだけか?

408:デフォルトの名無しさん
10/12/13 23:46:56
>>405
簡単にやるならたとえば以下

Dim img1 As Bitmap = New Bitmap("in.jpg")
Dim st As IO.Stream = New IO.MemoryStream()
img1.Save(st, Imaging.ImageFormat.Gif)
st.Seek(0, IO.SeekOrigin.Begin)
Dim img2 As Bitmap = New Bitmap(st)
img2.Save("out.png", Imaging.ImageFormat.Png)

ただし、この例はハーフトーンパレットのディザ描画になるため、あまりきれいではない

きれいに減色処理するためには色の量子化などの特殊なテクニックを使って頑張る必要があるが、
これに対する .NET の便利なクラスはない
減色、量子化などのキーワードで検索して、参考になりそうなサンプルを探すしかないと思う

また、減色だけでなく、そもそも256色のパレット付き画像の処理自体、.NETではまともなサポートが
ないので、細かなピクセル処理を行うには LockBits/UnlockBits などを使ってピクセルをバッファとして
読みだして処理する必要があるが、これも簡単には説明できないので、いろいろ検索して調べてみて欲しい

409:408
10/12/14 00:48:59
きれいな減色に対する.NETのサポートはないと思いこんでたけど、
.NET3.0以降だと、

System.Windows.Media.Imaging.GifBitmapEncoder

というクラスが追加されてて、簡単にそれなりの減色結果が得られるようです
一応修正版

Dim src As New System.IO.MemoryStream(System.IO.File.ReadAllBytes("in.jpg"))
Dim enc As New System.Windows.Media.Imaging.GifBitmapEncoder()
enc.Frames.Add(System.Windows.Media.Imaging.BitmapFrame.Create(src))
Dim mem As IO.Stream = New IO.MemoryStream()
enc.Save(mem)
mem.Seek(0, IO.SeekOrigin.Begin)
Dim img As System.Drawing.Bitmap = New System.Drawing.Bitmap(mem)
img.Save("out.png", System.Drawing.Imaging.ImageFormat.Png)

410:デフォルトの名無しさん
10/12/14 02:11:07
WPF/WICありならわざわざGifBitmapEncoder使わなくてもFormatConvertedBitmap挟むだけで良いよ

411:デフォルトの名無しさん
10/12/15 12:58:43
起動中のブラウザの取得がうまくいきません。
IEの取得はできたのですが、Firefoxのウインドウがうまくいかず、原因がわかりません。

Dim ObjShell As Object
Dim ObjFF As Object
Dim n As Integer

Set ObjShell = CreateObject("Shell.Application")
Set ObjFF = Nothing
Set ObjFF = ObjShell.Windows(0)
Set ObjShell = Nothing

IEをひとつだけ起動させると、Set ObjFF = ObjShell.Windows(0)がうまくいくのですが、
Firefoxの場合、ObjFFがNothingのままになってしまいます。

解決方法等、わかる方がいたら教えて下さい。
宜しくお願い致します。


412:デフォルトの名無しさん
10/12/15 13:02:08
Set ObjShell = CreateObject("Firefox.Application")


413:デフォルトの名無しさん
10/12/15 13:07:31
そもそもFirefoxはCOM用の口なんか用意してないっしょ

414:デフォルトの名無しさん
10/12/15 21:36:40
【C#, C♯, C#】 MonoMac 【MonoDevelop】  
スレリンク(mac板)

詳しい奴、ちょっと↑きてくれ

415:デフォルトの名無しさん
10/12/16 19:16:06
ビルドはつかわずにいつもリビルドしかつかわないけどこれでいいの?

416:デフォルトの名無しさん
10/12/16 19:27:37
小規模のプログラムならどっちも一緒だろ

417:デフォルトの名無しさん
10/12/16 20:03:58
修正されたソース、アセンブリのみ対象とするのがビルドだっけ

418:デフォルトの名無しさん
10/12/18 01:19:39
Color.ToArgbメソッドを使ってcolor型のデータを数値化
しているのですが法則がわかりません。
RGB値で(0.0.255)の場合16776961と変換され≒256^3に
なってしまいます。AARRGGBBと並べるのであれば
青の変換値は255になると思うのですが違うのですか?

419:デフォルトの名無しさん
10/12/18 09:11:26
16776961じゃないだろよく見ろ
16進で表示すればもっとわかりやすい

420:デフォルトの名無しさん
10/12/18 09:36:15
>>419 256^3だと16777216になるのかな?
16進ならFF0000FFなので4278190335になってしまうんでしょうか?


421:デフォルトの名無しさん
10/12/18 11:04:13
配列が0からはじまるように
RGBも0からはじまるので
(0.0.255)も実は
0~254なので
254を変化すればよろしい

422:デフォルトの名無しさん
10/12/18 17:27:58
>>418
16776961じゃなくて-16776961だろ?
アルファ値が255なら符号ビットが1で負になる
直感的にわかりやすい値が欲しければConvert.ToUInt32で直接変換してみればいい

423:デフォルトの名無しさん
10/12/20 17:22:48
vb.netを勉強しとけと言われたのですが
おすすめのマニュアルをご存知ないでしょうか?

424:デフォルトの名無しさん
10/12/20 20:26:42
.net tipsでググる

425:デフォルトの名無しさん
10/12/20 20:35:37
VB6のコードが一緒に載せてあるサイトは絶対に見ない

426:デフォルトの名無しさん
10/12/21 13:43:49
一緒にのってるとなにか問題あるの?


427:デフォルトの名無しさん
10/12/21 18:43:15
VB6と同じように書く=.NET的には悪い書き方

428:デフォルトの名無しさん
10/12/22 01:18:19
なんちって

429:デフォルトの名無しさん
10/12/22 04:06:45
Form1に
Public i as integer
と書いても
Form2でiを使えないんだけど

430:デフォルトの名無しさん
10/12/22 13:17:55
Form1はNewしたのか
Sharedはいらないのか
どんなエラーが出てんのか

431:デフォルトの名無しさん
10/12/22 18:32:48
Form2は
Form1からForm2.Show
したもの

432:デフォルトの名無しさん
10/12/22 23:17:17
Form2にForm1インスタンスの参照でも渡してなきゃ無理

433:デフォルトの名無しさん
10/12/23 03:22:08
むずかしす

434:デフォルトの名無しさん
10/12/23 10:25:30
>>429
Form1.iで参照できる かもしれない

>>432
バージョンとかにもよるが、VBには既定のインスタンスってのがあってな
ユーザがインスタンス作成しなくても、勝手に作成されて参照できるインスタンスがあるんだ

本来なら>>432の言うようにForm1のインスタンスへの参照もってないとダメなんだが
Form1だけでForm1の既定のインスタンスを参照できたりするんだ

まあ、既定のインスタンス使うようなコードは書くべきではないと思う

435:デフォルトの名無しさん
10/12/23 10:50:13
VBで使うべきではないとか良くない機能とか言い出したらVBの存在意義って…
VBにあってC#に無い機能のほとんど全部じゃん

436:デフォルトの名無しさん
10/12/23 11:17:51
>>434
既定のインスタンス使ってたら >>429 は発生してないと思う

437:デフォルトの名無しさん
10/12/23 12:10:50
>>435
規定のインスタンスはVB6時代から悪者扱いされてたと思うけど。

438:デフォルトの名無しさん
10/12/23 14:35:09
>>436
>>429が何をどうして使えないっていってるかわからんからな
だからForm1.iで参照って書いてある

>>437
.netで1回廃止しようとしたんだけどな
いきなり廃止するんじゃなくて、使うか使わないか選べるようにしといて
その次ぐらいで廃止すればよかったのにな


439:デフォルトの名無しさん
10/12/23 15:18:28
>>438
ルールを逐次変更するなんて最悪のやり方。

440:デフォルトの名無しさん
10/12/23 15:22:27
2005以降の方針転換は間違ってないと思うよ
オブジェクト指向的に良くないというような考えを持ち込むんだったらそもそもVBなんかいらん

441:デフォルトの名無しさん
10/12/23 23:42:53
はじめてVB.NETやろうと思うんだけどとりあえず何を買えばいいの?
URLリンク(www.amazon.co.jp)
これ買っておけば一応問題ない?

442:デフォルトの名無しさん
10/12/23 23:47:20
買わなくてもフリーのがある。

443:デフォルトの名無しさん
10/12/23 23:59:26
ありがとう、いろいろあるんだね

444:デフォルトの名無しさん
10/12/24 06:35:35
vb5
vb6
2002
2003
2005
2008
2010
と何回も買わなければならないのでそろそろ考えねば

445:デフォルトの名無しさん
10/12/24 07:49:07
QuickBasic 世代から買ってるんだが・・・

446:デフォルトの名無しさん
10/12/24 11:10:13
VB6→2005→2010(予定)

447:デフォルトの名無しさん
10/12/24 11:18:58
N-BASICから

448:デフォルトの名無しさん
10/12/24 11:44:45
>>429
> Form1に
> Public i as integer
> と書いても
> Form2でiを使えないんだけど

手抜きしとらんでプロパティでやりとりしろよ

449:デフォルトの名無しさん
10/12/24 12:45:58
そんなことVBで言ってもしょうがないでしょ
それを言い出すと、フォームのインスタンスをそのまま子フォームに渡すのも、結合が強くなるので悪い手抜きだし
フォームに貼ってあるテキストボックスをむやみに他のクラスに渡したりプロパティで公開したりするのも
フォームの実装をさらけ出してて良くないよ

450:デフォルトの名無しさん
10/12/24 13:01:54
>>448
手抜きはいいとしても・・・
インスタンス化してない可能性のが高くないか?

451:デフォルトの名無しさん
10/12/24 14:26:38
>>449
VBだからとか、お前アホだろ


452:デフォルトの名無しさん
10/12/24 14:29:35
VB も C# も基本的には一緒だが
ここでクダ巻いてるのは VC++ 使いか?

453:デフォルトの名無しさん
10/12/24 14:29:54
プログラミングごときにあんまり真剣になるなよ
気楽に行こうぜ

454:デフォルトの名無しさん
10/12/24 14:37:19
VBだからとか関係なく>>429で悩んでるような段階で善いとか悪いとか気にしてもな
どうせ今練習で書いてるものなんて慣れた後で必ず全部捨てて書き直すことになるんだから

455:デフォルトの名無しさん
10/12/24 20:34:51
me.rry=ch(r is math)

456:デフォルトの名無しさん
10/12/24 21:11:26
LINQって便利だな
ちょっとしたCSVのデータを加工する案件があったんだけど
まさにうってつけの機能だと感じたよ

457:デフォルトの名無しさん
10/12/24 21:22:23
>>453
生活がかかってるんだぜ

458:デフォルトの名無しさん
10/12/24 21:31:47
>>455
スペルが全然違うのは何か理由が?

459:デフォルトの名無しさん
10/12/24 21:54:29
mathのほうがソースコードに出てきそうな感じだから。それだけ

460:デフォルトの名無しさん
10/12/25 19:46:17
SetWindowPosを使用して、Form1を最前面に表示したいんですが、
以下のコードを実行して、Button1をクリックすると、
画面の左上にタイトルバーの未表示されるんですが、
何か間違ってるんでしょうか?
user32.dllはデフォルトで用意されているんですよね?
OSはWindowsXP、
開発環境はMicrosoft Visual Basic 2008 Express Edition SP1 です。
詳しい方よろしくお願いします。

Public Class Form1
Public Declare Function SetWindowPos Lib "user32" _
(ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
ByVal X As Long, ByVal Y As Long, _
ByVal cx As Long, ByVal cy As Long, _
ByVal wFlags As Long) As Long

Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
SetWindowPos(Me.Handle, -1, 100, 100, 500, 500, &H40)
End Sub
End Class


461:デフォルトの名無しさん
10/12/25 21:20:08
「タイトルバーの未表示」意味不明

462:デフォルトの名無しさん
10/12/25 21:25:59
Form.TopMost=Trureじゃダメなん?

463:デフォルトの名無しさん
10/12/25 21:59:11
>>461
タイトルバーのみ表示の間違いです。

>>462
最終的には、別exeで表示されているウィンドウを常に最前面に表示させたいんです。
こんな感じで
Dim hWnd As IntPtr = FindWindow(Nothing, "別ウインドウのタイトル")
If Not hWnd.Equals(IntPtr.Zero) Then
SetWindowPos(hWnd , -1, 100, 100, 500, 500, &H40)
End If
それで、まず自分自身のフォームで試したら、
TopMostにもならずタイトルバーしか表示されない状態で左上に描画されてしまうんです。

どなたか助言お願いします




464:デフォルトの名無しさん
10/12/25 22:03:07
情報の小出しする奴に助言しても、また条件を追加されるからめんどくさい

465:デフォルトの名無しさん
10/12/25 22:48:41
PC98用BasicでPC98ゲーム作るのはどうすれば

466:デフォルトの名無しさん
10/12/26 00:33:07
スレチ

467:デフォルトの名無しさん
10/12/26 02:40:32
>>460
引数LongってVB6のやつでしょw

468:デフォルトの名無しさん
10/12/26 09:11:21
SetWindowPos使わなくてもAppActivate使えばいいんじゃないの
別の実行ファイルを常に最前面にしたいなら、そっちに制御任せりゃいいんだよ

469:デフォルトの名無しさん
10/12/26 09:42:56
これで動いたよ

Public Class Form1
Public Declare Function SetWindowPos Lib "user32" _
(ByVal hwnd As Integer, ByVal hWndInsertAfter As Integer, _
ByVal X As Integer, ByVal Y As Integer, _
ByVal cx As Integer, ByVal cy As Integer, _
ByVal wFlags As UInteger) As Boolean


Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
SetWindowPos(Me.Handle, -1, 100, 100, 500, 500, &H40)
End Sub
End Class

470:デフォルトの名無しさん
10/12/26 10:21:56
VB2010EEで、インスタンス変数のインテリセンスでSharedメソッドを表示しなくする方法と
フォームデザイナが生成するコントロールのアクセス修飾子デフォルトでPrivateにする方法を教えて欲しいです

ウザ過ぎて死にそう

471:デフォルトの名無しさん
10/12/26 10:41:23
Modifiresは駄目そうだなあ
全部選択してPrivate指定するしかないと3年前のこのスレの質問が出てきた

誰に合わせた仕様なんだよこれ
まぁ分かってるけど

472:デフォルトの名無しさん
10/12/26 13:02:11
>>467
>>469
ありがとうございます!
VB6の構文を使っていたんですね、引数の型を直したらうまく動きました。

>>468
AppActivateの存在を知りませんでした。
調べてみます。

473:デフォルトの名無しさん
10/12/26 13:18:25
>>471
気持ちは分かるけど、Formで外から呼ぶパブリックメンバなんてせいぜいShowかShowModalぐらいなんだから
インテリセンスに余計なものが表示されても普通は事実上そう困らないはずだと思うけど。>Modifierの件

474:デフォルトの名無しさん
10/12/26 14:55:29
>>472
469の場合、HandleはIntPtr型を返すから変換するか宣言のhwndをIntPtr型にした方がいい
それとOption StrictはOnにするクセ付けたほうがいい

475:デフォルトの名無しさん
10/12/26 18:08:38
For i = 0 to 100
intSum = intSum + i
i = i +1
Next
0~100までの足し算の結果がバグってるけどなぜ

476:デフォルトの名無しさん
10/12/26 18:14:35
>>475
i = i +1がいらないんじゃ。
それかintSumの初期値が0以外とか。

477:デフォルトの名無しさん
10/12/26 18:21:14
intSumの初期値が合っててもi = i + 1の行があったらだめだろ

478:デフォルトの名無しさん
10/12/26 20:31:53
0~100の偶数を足すにしてもそんな摩訶不思議なコードは書かない

479:デフォルトの名無しさん
10/12/26 20:37:12
すごくC言語っぽいコードだなあ、と思ったのでした

480:デフォルトの名無しさん
10/12/26 20:37:21
Dim i As Integer, intSum As Integer

intSum = 0

For i = 0 To 100
intSum += i
Next


481:デフォルトの名無しさん
10/12/26 20:39:45
intSum = Enumerable.Range(0, 101).Sum()

482:デフォルトの名無しさん
10/12/28 18:08:04
右クリックや左クリックをしても、奥にあるウィンドウの操作をできるようにする方法ってありますか?
クリックした瞬間に最小化や移動→マウスの位置を取得→その位置のウィンドウを左(右)クリック→またウィンドウを元に戻す
ということはAPIというものでできるようなのですが、他に簡単な方法は無いでしょうか

具体的にやりたい事は、デスクトップに時計や画像を少し透過で表示させるけど、
作業の邪魔にはならない・・そんな物を考えています
よろしくお願いします。

483:デフォルトの名無しさん
10/12/28 19:36:29
簡単なやり方はありません
C++でWin32API使ってやってるサンプルを見つけたのなら
それを移植しましょう

484:デフォルトの名無しさん
10/12/28 20:40:12
>>482
マウスが乗った時点で裏に回るとか移動して逃げるってのならどう?


485:デフォルトの名無しさん
10/12/28 20:45:06
マウスが乗ったらポインタの周り10ドット位完全透明の穴を開ければ?

486:デフォルトの名無しさん
10/12/29 02:50:10
なんとかなりそうです。ありがとうございました
>>483
考えついたものを調べたらAPIであったというレベルなので・・C++も面白そうですね。やってみようかな
>>484
おー、なるほど、そんなてもあるんですね
URLリンク(www.gizcollabo.jp)
でイケそうですね
>>485
こんなことができるんですね!DeleteObjectですか、知りませんでした。ありがとうございます

487:デフォルトの名無しさん
10/12/29 14:34:53
>>486
これで実現できるんじゃない?
URLリンク(msdn.microsoft.com)
>ヒット テスト
>レイヤード ウィンドウのヒット テストは、ウィンドウの形状と透明度に基づいています。これは、色分けされているウィンドウの領域やアルファ値がゼロの領域は、マウス メッセージが透過することを意味します。
>レイヤード ウィンドウが WS_EX_TRANSPARENT 拡張ウィンドウ スタイルを持つ場合、レイヤード ウィンドウの形状は無視され、マウス イベントはレイヤード ウィンドウの下の他のウィンドウに渡されます。

488:デフォルトの名無しさん
10/12/29 14:45:08
それをAPIと言ってるんだろ

489:デフォルトの名無しさん
10/12/29 18:03:00
あーでもあれか。透明にしちゃうとポインタの位置分からなくなるから
グローバルフックせんといかんのか

490:デフォルトの名無しさん
10/12/29 19:56:04
グローバルフックでポインタ位置を取得
ポインタがフォームの範囲内ならその座標を中心に
適当な色でFillEllipse
その色をMakeTransparent
そのビットマップを表示

で出来たよ

あ、ただそれを抑制する手段作っておかないと一切操作
出来なくなるからねw

491:デフォルトの名無しさん
10/12/29 19:57:41
グローバルフックはググれば適当なdllがあるから

492:デフォルトの名無しさん
10/12/29 20:49:00
言葉でなく
ソースコードください

493:デフォルトの名無しさん
10/12/29 20:52:41
ソースコードくださいじゃなくて
調べて試せよ

494:デフォルトの名無しさん
10/12/29 21:55:24
ポインタは写って無いけどこんな感じね
青いトコは壁紙
URLリンク(www.gazo.cc)

495:デフォルトの名無しさん
11/01/01 12:47:46
>>429
今更だけど、下記で参照できる。

My.Forms.form1.i (iがpublic宣言)
もちろん、iはコントロールのオブジェクト名でも参照できる。
たとえば、
My.Forms.Form1.TextBox1.Text というような感じです。





496:デフォルトの名無しさん
11/01/01 20:02:08
Select Case って If があれば存在いぎっがないの?

497:デフォルトの名無しさん
11/01/01 20:07:49
そうです。

498:デフォルトの名無しさん
11/01/01 20:10:31
列挙体を使った振り分けとかはselect caseの方がずっと便利。caseを自動生成してくれる。
そんなに気にすることじゃないが、select caseの方が一般に処理が速くなる(可能性がある)

499:デフォルトの名無しさん
11/01/01 20:24:17
else if ~を何度も書くのが面倒じゃなければね

500:デフォルトの名無しさん
11/01/01 22:50:27
>>498
>select caseの方が一般に処理が速くなる(可能性がある)
どういう意味?
IfもSelect Caseも全く同じパフォーマンスになると思うけど
VB6ならまだしも、VB.NETからは短絡評価できるようになったわけだし
全く変わらなくなったと思うけど、ILだと結果が異なってたりするの?
具体的な例を挙げて欲しいんだけど

501:デフォルトの名無しさん
11/01/01 22:53:10
select caseの場合、テーブルで評価してたりするのかな?
だとしたら分岐が多い場合は単純ifより速くなると思うけど

502:デフォルトの名無しさん
11/01/01 23:25:53
最適化されないなら、Ifの方が微妙に遅いだろうな

503:デフォルトの名無しさん
11/01/01 23:37:54
ILにswitch命令(ジャンプテーブル)は存在するよ

504:デフォルトの名無しさん
11/01/01 23:40:39
select caseのほうが可読性高いだろ。

505:デフォルトの名無しさん
11/01/02 07:47:43
vb2010Express  SQLServer2008 でデータのやりとりがしたいのですが、
URLリンク(homepage1.nifty.com)

に書かれているようにやっても
ステップ イン: 非ユーザー コード 'WindowsApplication1.My.MyApplication.New' をステップ オーバーしています
のようなエラーがたくさん出てできません。
これはどういう意味でしょうか?
どのようにすればよいですか?

現在 VBでデータソースとして接続はできました。
その際ユーザーインターフェースとマルチアクティブリザルトセットを
変更したのですが、関係ありますでしょうか?

長文で申し訳ないですがよろしくお願いいたします。

506:デフォルトの名無しさん
11/01/02 09:48:55
do loop
do loop
exit do
loop
A
loop
B
はAとBのどこえジャンプかしら

507:デフォルトの名無しさん
11/01/02 11:45:33
Elseif function()= xx
Else if function()=yy
と羅列していくとpgm上は分岐の数だけ演算を行うのでしょうか?


508:デフォルトの名無しさん
11/01/02 15:26:57
function()が何度も呼ばれるかどうかということかな?
ILにコンパイルする段階では何度も呼ばれる状態のまま。
ILからJITされる段階で関数にI/Oやその他の作用がないかどうか、
毎回同じ値を単純に返すだけの関数かどうかを検査して、
まとめても問題ないようなら最適化される。

509:507
11/01/02 15:42:23
>>508
thx
関数が毎回演算されるか不確定ならelseif文に羅列すべきではないね。
ありがとう。

510:デフォルトの名無しさん
11/01/02 15:43:51
>>508
話が噛み合ってない気がする....
>>507はたぶんそんな高尚なことは聞いてない。

511:デフォルトの名無しさん
11/01/02 15:45:44
>>509
いや、当たり前だがElseまたはElseIf以降の式は対応するIfで評価された値が
Falseの時しか実行されないって。

そうでなきゃ怖くて使えるか。

512:507
11/01/03 15:28:15
分かり難い文章でしたか?本当に知りたかった事は、
If a=100
else if functionA(a,b,c)=100
else if functionA(a,b,c)=50
Else
Endif
(functionは値渡しで他の変数の数値を変える事はないものとする)
という文をかいて、functionA()が1回につき計算が10秒かかった時に
最後のelseに到達するまで10+a秒かかるのか20+a秒かかるのか知りたかったのですが、
回答はJITcompilerで決定されるとのことでした。
最適化されるならどの様に書いても問題はないのでしょうが、
Functionが1回実行か2回実行されるかをプログラマが制御できない様な文章は
書くべきではないなと思っただけです。

直前にif文だけの為に dim a as integer, a=functionA(a,b,c)としてaをif文で評価するのって
あまり美しくない気がしていまして、、、。

513:デフォルトの名無しさん
11/01/03 16:59:21
>>512
なんでやってみないんだ。
Visual Basic 2010 Express もインストール出来ないのか?

514:デフォルトの名無しさん
11/01/03 20:32:21
>直前にif文だけの為に dim a as integer, a=functionA(a,b,c)としてaをif文で評価するのって
>あまり美しくない気がしていまして、、、。

>else if functionA(a,b,c)=100
>else if functionA(a,b,c)=50
俺から見りゃ、こんな書き方する方がよっぽど美しくないし無駄にしか思えないわ。

515:デフォルトの名無しさん
11/01/03 20:33:28
If a=100
Else
 Dim aa as integer = functionA(a,b,c)
 if aa=100
 else if aa=50
 EndIf
Endif

これじゃダメなのか

516:デフォルトの名無しさん
11/01/03 21:13:38
同じメソッドの戻り値を複数評価するなんて気持ち悪すぎだろ
SelectCaseならまだしも、ElseIfで逐次実行して連続評価とか
センスなさすぎ

517:デフォルトの名無しさん
11/01/04 01:57:23
それよりもJITの段階で最適化されるってのはホントなのか?
その段階で最適化されるなら、最適化オンオフ制御できない気がするんだが
もし最適化されることによる弊害がでたらどうするんだ?コード修正しかないのか

最適化するかどうかはコンパイルオプションとかで制御できるのが普通だと思うんだが
>>508のあたり詳しく説明してるところとかあったら教えてくれ

518:デフォルトの名無しさん
11/01/04 02:03:35
ILDASM使って解析(確認)してみればいいんじゃない

519:デフォルトの名無しさん
11/01/04 11:06:44
基本的に最適化はJITだよ
インライン展開なんかもJIT
JITの最適化のONOFFは実行時のオプションや属性などで決まる

520:デフォルトの名無しさん
11/01/04 14:46:15
wshスレにも書き込んでしまったのですが、よく見たら過疎っていたし、VB.NETもインストールされているのでこちらでと思います。
URLリンク(www.miraiz.bz)
にあるテンプレートを一括してダウンロードしたいのですが、可能でしょうか?可能なら誰か作ってくれませんか?

521:デフォルトの名無しさん
11/01/04 15:23:41
>>520

>可能かどうか
出来る

>可能なら誰か作ってくれませんか?
スレ違い つうかベンチャーやる気か知らんが甘えるな

ページのリンク抽出して拡張子を条件にしてファイルダウンロードするようなやついくらでもあるだろ
それくらい探してみれば?

522:デフォルトの名無しさん
11/01/04 15:27:58
>>521
> ページのリンク抽出して拡張子を条件にしてファイルダウンロードするようなやついくらでもあるだろ
> それくらい探してみれば?
それでは無理なので、相談させて頂いています。
尚、ベンチャーやる気はありません。
今後の様々な応用の為のプログラミングの勉強にもなるとも思っての相談です。
だいぶ前にwshで単純なwebページダウンロードを行うプログラムを組んだ事があったのですが、それもどこかに失ってしまいました。

523:デフォルトの名無しさん
11/01/04 15:50:42
>>522
貴方の相談は作ってもらうことですか?

524:デフォルトの名無しさん
11/01/04 16:41:41
>>523
1つずつ質問したり調べたりするよりも合理的に、最も勉強にもなると私は思っていますが。

525:デフォルトの名無しさん
11/01/04 17:09:29
へー

526:デフォルトの名無しさん
11/01/04 23:49:22
>>520
何の会社かしらんけど、減価償却費シュミレーションとか恥ずかしすぎるw

527:デフォルトの名無しさん
11/01/04 23:59:23
プログラムに限らず、1つずつ調べてコツコツ作ったほうが勉強になるに決まってんだろ
いきなり参考書の答えみて勉強になるとでも重ってんのかよ

528:デフォルトの名無しさん
11/01/05 13:34:32
>>526
あまり程度は良く無いという事でしょうか?

>>527
教師有り学習ではそうなりますが、私の様な教師無し学習ではそうとは限りません。
学生時代から他の人のソースで勉強してきましたので。
> いきなり参考書の答えみて勉強になるとでも重ってんのかよ
なりますよ。
15秒わからなければ答えを見ろという和田秀樹さんの数学の学習法の書籍なんかも参考にどうぞ。
教師無し学習で仮説実験的思考回路を養うとすごい勢いで学習できる脳になります。。。という話はスレチなのでおいときますが、
自分の思っている事が全てだと思わないことです。

529:デフォルトの名無しさん
11/01/05 15:09:11
答えがない問題のほうが世の中には多いよ。
そうした場合どうするんだろね。この手の人は?
「くれ!!!」って大声で叫ぶエネルギーがあったら、自分で調べたらいいのに。。。

530:デフォルトの名無しさん
11/01/05 15:39:09
>>529
> 答えがない問題のほうが世の中には多いよ。
本題と無関係の仮定を出して逃げる、、、どこぞのガイドラインのまんまだな

531:デフォルトの名無しさん
11/01/05 15:42:03
能力のない人間の逃げだろ

調べる能力にしろ、作る能力にしろ


532:デフォルトの名無しさん
11/01/05 15:49:27
>>520
どうぞ。
この情報の組み合わせだけで十分可能です。
どうぞ組み合わせておつくりください。

URLリンク(www.google.co.jp)

URLリンク(www.google.co.jp)

URLリンク(www.google.co.jp)



533:デフォルトの名無しさん
11/01/05 15:53:56
>>532
間にユーザ名とパスを入力するフォームがある

534:デフォルトの名無しさん
11/01/05 16:02:16
>>533
そうですか
ではこれでどうぞ

URLリンク(www.google.co.jp)


535:デフォルトの名無しさん
11/01/05 16:12:44
回答できないとgoogleにリンク張るっていうのお決まりパターンだな

536:デフォルトの名無しさん
11/01/05 16:48:25
質問です。
開発環境:VB2008 Express
OS:XP pro SP3

フォームアプリで他のWindowにフォーカスを移さない、という制御は可能でしょうか。

FormイベントのLostFocusの中で、Me.Activate() しても上手く行きません。
MSではあまりLostFocus使うなみたいな記述もあり、
別な方法があるのかと思いましたが見つかりませんでした。

何かヒントだけでも教えて頂けるとありがたいです。
よろしくお願いします。


537:デフォルトの名無しさん
11/01/05 17:46:30
>>535
まんま答えがあるじゃねぇかwww
わざわざ答えるようなもんでもない

ログインして
WEBページのリンク抽出して
ダウンロードする
たったこれだけだろ?


538:デフォルトの名無しさん
11/01/05 18:40:18
ほっとけよ。煽って回答得るって性格の方なんだから。

539:デフォルトの名無しさん
11/01/05 19:23:05
VB.NETでASP.NETを書いてサーバーにaspxファイル置いとけばボーダフォンとかドコモ用のページに自動でなるの?

540:デフォルトの名無しさん
11/01/05 20:30:34
ASP.NETでA、Bという機能があって双方の*.aspxはほとんど同じなので画面だけ共用して処理を書く*.vbは別にする事ってできるの?

541:デフォルトの名無しさん
11/01/05 22:14:00
できるよ

542:デフォルトの名無しさん
11/01/06 09:05:28
>>539
無理じゃないか?
ユーザーエージェントとかその辺使うんだと思うけど

543:デフォルトの名無しさん
11/01/06 10:22:05
イベントハンドラと処理の解決タイミング?について質問です。

①Form1.Load の後に Form1.Shown が発生するように
 同一フォーム内の特定の関数が終了したことを条件として関数を起動させる方法は存在するのでしょうか?

 現在 Hide で隠したフォームを
 AddHandler 【別フォームが閉じた時】, AddressOf 【フォーム表示関数】
 という記述で表記し、【フォーム表示関数】内でフォームの更新と表示を行っています。
 この更新が非常に遅いので、先にフォーム表示のみを行い、その後更新が出来ないものかと考えています。

②また、更新に際してループ処理を行っているのですが、 「X件完了しました」 というアナウンスを
 【Xを示すテキストボックス】.Text = 【現在処理した項目数(=ループカウンタ)】(処理Xとする)
 という形で行おうとした所、処理が完了するまでフォームが表示されないため、途中経過が見れずに
 アナウンスの体を成しませんでした。

フォームの先表示とともに、処理Xに関しては更新処理中も即表示させることで
『フォームはすぐ表示され、更新中も現在の更新件数が随時表示される』
という機能が実現できるのかなぁ、と考えています。

そもそも発想が間違っている、もっと良い手段があるなどアドバイス頂けると嬉しいです。

544:デフォルトの名無しさん
11/01/06 10:25:01
非常に遅い処理なんぞはBackgroundWorkerでも使ってろ

545:デフォルトの名無しさん
11/01/06 10:43:50
マルチスレッドがいいよ

546:デフォルトの名無しさん
11/01/06 11:09:07
質問から察するに
純粋なマルチスレッドよりも
>>544がウヌヌメ

547:sage
11/01/06 11:18:54
アドバイスありがとうございます。

>544 さん
早速ぐぐってみましたが、非常にそれっぽい文章が見つかり大喜びです。
現在、必死に内容を解読中です。
最後に DataGridView の表示を更新しようとすると有効でないスレッド間操作って怒られる・・・。

>555 さん
544さんのように、表の処理と BackgroundWorker の裏処理でマルチって事ですかね?
理解に誤りがあったらごめんなさい。

多分②の進捗アナウンスも検索時に出てきた ProgressChanged あたり調べれば対応できそうなので、
DataGridView の更新手段と BackgroundWorker の理解に取り組んでいます。

取り急ぎお礼のみ

548:デフォルトの名無しさん
11/01/06 11:20:51
>>546 さん
入れ違いですがアドバイスありがとうございます。
やりたい事はこれっぽいので、苦戦中です。

・・・sageさんとか>とかなにこれはずかしい。

549:デフォルトの名無しさん
11/01/06 12:01:21
>DataGridView の更新手段
これはどういうこっちゃ?

察するに

1.データを取得
2.データをDataGridViewに表示
3.編集させる
4.なんか登録ボタンみたいなものを押すとデータを保存
(この処理が重くて時間がかかるので、画面が固まらないように
バックグラウンド処理で行い、進捗だけプログレスバーかなんかで表示したい)

こんな感じ?

釣りじゃないとすれば・・・
2ch sage
2ch アンカー
で調べれば幸せになれると思う

550:デフォルトの名無しさん
11/01/06 12:03:45
バックグラウンド処理の最後や途中でDataGridViewにアクセスしたらエラーになったんだろ
ProgressChangedやCompletedイベントハンドラはUIスレッドで呼び出されるのでそっちでやる

551:543
11/01/06 16:15:29
やっていること

【処理X】
1.メインフォームを隠し、別フォームを開く。
2.別フォームでCSVを指定し、別フォームを閉じる。
3.別フォームが閉じた事にハンドルして、メインフォームを表示し、処理Xを起動。
【処理Y】
1.処理Xで指定したCSVを開き、データを DataTable に取得
2.DataTable のデータを一行ずつ編集し、内容を修正(結合や計算など)
3.2で修正したDataTable の行を DataSet.【テーブル名】DataTable に代入
(2と3をFor文で行数回ループ)
4.DataGridView.DataSource = 4のテーブル と指定してDataGridView を表示(大量データ)

①の目的は、処理Yを行う前に処理Xを完了させ画面を表示。その後で処理Yを走らせること
だったので、>>544 さんの指摘通り処理Yを BackgroundWorker で行うことで解決しました。

552:543
11/01/06 16:16:27
>>549 >>550 さんアドバイスありがとうございます!

参考資料:下記URLのVB版コード
URLリンク(www.atmarkit.co.jp)

DataGridView については、 >>550 さんの指摘通り手順4に対し発生しました。
これについては

’Invoke を利用するためのおまじない?程度の理解です
Delegate Sub SetDelegate()

’関数をフォーム側で実行させる
Invoke(New SetDelegate(AddressOf 【関数名】))

’処理内容を関数として作成
Sub 【関数名】()
処理内容
End Sub

このような関数を作成し
Invoke(New SetDelegate(AddressOf 【DataGridViewへの書き込み(手順4)】))
という形で対応できました。(この行には下記の致命的な問題あり)

また、プログラムの開始時に
Invoke(New SetDelegate(AddressOf 【Formのロック/プログレスバーなどの表示】))
終了時に
Invoke(New SetDelegate(AddressOf 【Formの開放/プログレスバーなどの非表示】))
を加え『フォームはすぐ表示され、処理は裏で行われる』部分については対応できました。

(・・・Formをロックすると処理中のメッセージもロックされ見えにくくなってしまいますし、
 【処理中表示ラベル.Enabled = True】 では駄目なようなので、 Form はロックせず、ボタン
 などを個別ロックするしかないのかな?と考えています)

553:543
11/01/06 16:17:16
②進捗表示については、サンプルページの方法で動いたことは動きました。
 ただ、問題が数点あり、現在それに取り組んでいる所です。

A:参考資料の System.Threading.Thread.Sleep(100) 部分に処理Yを全て入れると
  参考資料のFor i As Integer = 1 To bgWorkerArg の部分で bgWorkerArg = 0 となり抜けてしまう。

B:そもそも資料の方法では、処理Yの手順3はFor文の『連続した細かい作業』なので対応できるが、
  手順4のような『一つの大きな作業』の進捗を表示できない。(と、私が思っているだけかも)

C:二度目以降 Invoke(New SetDelegate(AddressOf 【DataGridViewへの書き込み(手順4)】))
  を通る際に、フリーズすることが頻繁にあります。

  特徴として
   ・該当行にブレークポイントを挟むと発生しなくなる。
   ・進捗表示部分をコメントアウトすると、発生しなくなる。
    (現在は手順2・3のFor文部分のみ参考資料の方法で進捗を表示している)
   ・データ量が小さいCSV読み込み時は、発生しない。

  このような症状と見受けられるので、現在はこれの原因を探っています。

凄まじい長さになってしまいましたが、ご意見などいただけるとありがたいです。
なお、未熟なもので内容に誤りがあったらごめんなさい。

554:543
11/01/06 16:22:00
あああ誤記が・・・。
処理Xの手順3は『処理Yを起動』です。

AddHandler 【別フォーム】, AddressOf Me.Show
AddHandler 【別フォーム】, AddressOf 【処理Y】

この形だと処理Yが走っている間はフォームが表示されなかったので・・・。

555:デフォルトの名無しさん
11/01/06 16:36:02
1セルごとにデータをセットしていけばいい

556:543
11/01/06 20:03:47
>>555 さんアドバイスありがとうございます

DataGridView.DataSource = DataSet1.TblAddrListDataTable

DataGridView.DataSource = DataSet1.【テーブル名】DataTable
という形にし、Dataset側を毎回初期化することで1行ずつ渡す事は成功しました。

しかし、DataSorce 側に行を追加する機能が見つからず、現状では最後に渡した
行だけが表示されてしまいます。

DataGridView.DataSource『.Rows.Add』
のような機能を探しましたが見つからず、ここで引っかかっています。

もしかして、そもそも方向性が間違っていますか?

557:デフォルトの名無しさん
11/01/06 20:29:39
以前、VB2008でアプリを作ったんですが、その時はDPI設定が100%だったんですけど
今のPCはDPI設定が115%で、文字や画像の表示がずれてしまいます。
自動スケーリングの機能があるみたいなんですが、どこを操作すればよいのでしょうか?

558:デフォルトの名無しさん
11/01/07 09:12:02
>>556
もしそうしたいのならDataGridView.DataSource をDataTableにキャストしてやらにゃぁ…

'データソースがテーブルと決め打ちされているんであれば
dim temp as datatable = directcast(DataGridView.DataSource)

こんな感じだった気がするけど・・・ 今IDEないから構文忘れたが
 

559:デフォルトの名無しさん
11/01/07 10:19:30
環境 OS:XP SP2 VB:2010express(無料ver) SQLServer2008
PC1 にDBのmdfファイルがある。
PC1とPC2は同じLAN内にあり、PC1の共有ファイルに、VBで発行した
windowsアプリケーションがある。

質問
PC2から PC1で発行したアプリケーションを実行すると
DBのデータを参照できませんでした。

コードで c:\programfile\~~ と書いた場合、
PC1の cドライブを参照するのか PC2のcドライブを参照するのか
どちらでしょうか?

560:デフォルトの名無しさん
11/01/07 10:33:56
そりゃローカルだろ・・・・・

\\pc名~

で書かないといけないと思うんだけど・・・

それ以前にSQLSERVER使うんだったらそういう使い方よりは普通にDBにつないだ方が早いんじゃ?

561:デフォルトの名無しさん
11/01/07 10:49:05
>>543
ちょっとやり方違うと思うけど
例えばこんなやり方はどうだろ?

URLリンク(www.dotup.org)

もう見てない可能性のが高いかw

562:543
11/01/07 15:19:45
返信遅れすいません、 >>555 さん、>>558 さんの手段を調べつつ、別の作業に追われていました。

>>558 さん >>561 さん アドバイスありがとうございます。

1:DataSet 内に テーブルA を作成
2:DataGridView のプロパティ DataSource として テーブルA を指定
  (DataGridView の列構造は、テーブルAと完全一致)
3:CSVの値を DataTable テーブルBに取り、様々な編集を加える
4:テーブルB を テーブル?C(宣言した型:DataSet1.【テーブルAの名前】DataTable)に代入
5:DataGridView.DataSource = テーブルC

このような手段で現在は処理を行っています。いっそソース全文載せた方がいいですかね・・・長いですが。

テーブルCを一行取得するごとに手順5を行い、その後テーブルCを初期化する事で、手順5の
段階で常に最新行を取得することができました。
ただ、この場合手順5を行うたびに最新行で上書きされてしまい、最終的な表示が1行のみとなってしまいます。
(初期化を行わないと 1行⇒2行⇒3行・・・・⇒全行)となり、全行最後に代入するならそれ以外の工程が完全に
無駄ですし、そもそもの目的である『全行コピーのような単体(非ループ)の進捗を現す』ことになりません。

現在詰まっているのは、この部分です。

563:543
11/01/07 15:21:58
>> 558 さん
directcast は型の強制変換と認識しているのですが、この場合ですとテーブルCを DataTable に変換するという
解釈で間違っていませんか?

Dim テーブルD As DataTable = directcast(テーブルC , DataTable)
DataGridView.DataSource = テーブルD

この形では上手くいかなかったので、他にも色々調べましたが上手い手段が見つかりませんでした。

>> 561 さん
参考URLを見ましたが、パスワードがかかっているようで落とせませんでした。すいません。

(追記)>>553 の最も致命的な問題Cについて
相変わらず意味不明で未解決ですが
URLリンク(www.pctec.2chmatome.info)
ここの 393 さんと似た症状だったのでビルドしてみたら、完成品では全く発生しませんでした。
原因不明なのが非常に気がかりですが、一応表面上は解決です。

564:デフォルトの名無しさん
11/01/07 15:32:17
>>543
むしろこちらがすみません。
ごめんパス書き忘れてた
PASS:vb



565:543
11/01/07 15:46:48
>>561
なにこれすごい・・・。
ありがとうございます!読解する作業に勤しみます!!

566:559
11/01/07 20:19:16
>>560
自宅からすいません
ありがとうございます。
普通のつなぎかたがわかりませんが、複数台でアプリを使いたかったので、
PC1以外での動作確認をするために、行いました。

567:デフォルトの名無しさん
11/01/08 18:56:59
皆様!たすけてください。
DataGridView関連なのですが、
起動時にDataGridViewをアクティブにしているのですが、
Form.Load イベントでImeModeをonにしているのですが、、
Windows Vista では日本語入力になり、
Windows7 ではなりません。
くぐっても解決方法が見つかりませんでした。
どなたかアドバイスを宜しくお願いします。



568:567
11/01/08 18:59:01
すみません。
Visual Basic 2008 Pro です。

569:デフォルトの名無しさん
11/01/09 00:30:51
>>566
普通てのはDBサーバとしてSQLSERVERを使うことじゃないかな?
ファイルを共有して使うようなやり方ではないて事。

ただ、複数でやる場合クライアントOのライセンスの問題もあるので注意が必要
それはムとは関係ない別件か

570:デフォルトの名無しさん
11/01/09 17:22:04
TextBoxを右クリックした時に表示されるコンテキストメニューに
右から左に読むやUnicode制御文字の表示というメニューがありますが、
これらを選択できないようにする方法はあるでしょうか?
TextBoxのContextMenuプロパティを見てもNothingとなっており、
どこを修正していいか分かりません。
やはり自作するしかないのでしょうか?


571:デフォルトの名無しさん
11/01/09 17:51:16
>>570
dobonさんのところに解答があるよ

572:デフォルトの名無しさん
11/01/09 19:16:02
>>571
ありがとうございます。
コンテキストメニュー自体を表示しないようにする方法は見つかったのですが、
コンテキストメニュー内の一部を選択できないようにする方法は見つかりませんでした。
よろしければ詳しい場所を教えていただけませんか?


573:デフォルトの名無しさん
11/01/09 22:08:07
環境 OS:XP SP2 VB:2010express(無料ver) SQLServer2008
PC1 にDBのmdfファイルがある。

PC1でデバッグしていますが、
接続文字列が、 c:\programfile~ だと接続できるのですが
\\pc1\c$\programfile~ とすると接続できません。
TCP/IPは有効
SQLサーバーのリモート接続は許可
ファイヤーウォールはポート開放済み(現在無効にしてます)

書き方がまずいのか、サーバーになってるPC1からは接続できないのか
設定が何かたりないのか、誰かエスパーお願いします

インスタンス名も
.\インスタンス名  だといけますが
\\PC1\インスタンス名,ポート番号  にすると、接続できなくなります。

こちらについても誰かエスパーお願いします。

574:デフォルトの名無しさん
11/01/10 15:12:53
URLリンク(msdn.microsoft.com)

575:543
11/01/11 11:08:44
休日を挟んだため遅くなりましたが、お陰様で問題が解決したのでお礼を。

>>561
サンプルを組んで下さるとか感激しました。
現在参考にしているコードは巨大すぎ、私のスキルでは必要な情報を探すことが非常に困難でしたが
561さんの洗練されたコードを見て、とても理解の助けとなりました。
質問部分以外でも『Useing』等の使い方など参考になる点が多く、ぜひ味わいつくそうと思います。

動け!動けよ!!と半ギレ状態でキーボードを叩く作業から開放されました。

結局
・CSVの取り込みとDataGridViewへの書き込みは BackgroundWorker にお願いする
・元フォームの全コントロールへのEnable設定により、ロックとロック解除を行う
・更新状況は ProgressBar 及び 進捗状況を表すラベル.Update() による表記で現す
・DataTable 上に CSV データを書き込む際は、Castをループさせると便利。

以上により
『フォームを先に表示し、裏で重い作業を行う。かつ、その進捗状況を随時表示する。』
という目的が達成されました。

>>544 >>545 >>546 >>549 >>550 >>555 >>558 >>561

アドバイスくださった方ありがとうございます。
聞ける相手がおらず困っていたため、とても助かりました。


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