VB.NET質問スレ(Part35)
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/09/14(火) 09:20:53VB.NET質問スレ(Part34)
http://hibari.2ch.net/test/read.cgi/tech/1270998481/
テンプレは >>2-4 あたり
0232デフォルトの名無しさん
2010/10/27(水) 19:10:21オブジェクト参照がオブジェクト インスタンスに設定されていません。
というエラーが出てフォームも立ち上がらない状態です。
untilの外側で宣言したXがインスタンスオブジェクトと認識されてるとかなんとか
そこまでしか情報がわかりませんでした。
Nothingで解決かと思ったら解決せず。
0233デフォルトの名無しさん
2010/10/27(水) 20:33:20確保するコードを追加しよう。
だけど、行数わかる?ファイル読み込まないと分からないよな?
つまりこの処理に配列は合わない。
随時メモリを拡張してくれるListの方が適切
0234デフォルトの名無しさん
2010/10/27(水) 21:14:070235デフォルトの名無しさん
2010/10/27(水) 21:22:19>えw
あんまり役に立つ場面てないよね、に言いかえよう。
0236デフォルトの名無しさん
2010/10/27(水) 21:43:46ありがとうございます!
配列の最大数を宣言しないとだめなんですね。
Dim field-A(10,2) As String
と数値を入れて宣言したら思い通り動作しました。
それからListが良いということですので使ってみます。
全て解決です。皆さんありがとうございました。
0237デフォルトの名無しさん
2010/10/28(木) 01:54:46配列が向かないのはまあ同意するが
たまには ReDim Preserve の事も...いや、思い出さなくてもいいか
0238デフォルトの名無しさん
2010/10/28(木) 08:22:50msdnによると
ttp://msdn.microsoft.com/ja-jp/library/w8k3cys2(VS.80).aspx
>Preserve を使った初期化。Preserve 修飾子を指定した場合、Visual Basic では、
>既存の配列から新しい配列に要素がコピーされます。
とあるから、結局はコピー、つまり遅いんでしょ?
0239デフォルトの名無しさん
2010/10/28(木) 10:38:43List(Of T)は容量があふれるたびに内部の配列のサイズが2倍になる
同じことを自分でやってもいいけど時間の無駄
0240デフォルトの名無しさん
2010/10/28(木) 12:49:22VB6では桁違いに速い。
0241デフォルトの名無しさん
2010/10/28(木) 19:46:52VB6は内部でListみたいなことをやってるだけ
0242デフォルトの名無しさん
2010/10/28(木) 20:48:49実はその辺自信無くて試したんだけど、10倍ぐらい違ったからそうだろって…
0243デフォルトの名無しさん
2010/10/28(木) 20:52:08なんか物凄く馬鹿っぽいご意見ですいこと....
0244デフォルトの名無しさん
2010/10/28(木) 21:09:43List(Of T)は再割り当て時には現在の倍の容量を確保して新しい領域に現在の要素をすべてコピーする
要素が追加されるたびに再割り当てというような馬鹿なことはしない
0245デフォルトの名無しさん
2010/10/28(木) 22:17:260246242
2010/10/28(木) 23:27:06確かに要素数の増加に伴って拡張に必要な時間が増えますね・・・
にしても.net遅すぎる気が・・・
.netはinteger、VBA(VBが手元に無い為)はlongの一次元配列で、
要素数を0から350000まで1づつ増やすコードをそれぞれで実行した結果、
書くのも恥ずかしいぐらいの差がついちゃいました。
コード間違えたかなぁ・・・
0247デフォルトの名無しさん
2010/10/28(木) 23:45:54ループの中でRedim Preserveしたりするバカが多いから変な最適化してるんじゃないの
0248デフォルトの名無しさん
2010/10/30(土) 00:48:22.NETの場合はメモリ管理上確実に再確保とコピーが必要。
0249デフォルトの名無しさん
2010/10/31(日) 01:26:31変数に代入したいと思っています
Dim BBB As Byte
Dim III As Integer
という宣言で、BBBに「10」と入っている時に、IIIにどうにかして「16」と、10進数に
変換した結果を代入させたいと思っているのですが、どうしたらよいのでしょう?
III = CInt(BBB)とかIII = ToInt16(BBB)とかやってみたのですが、うまくいかず…
ToInt16とかを実行するために、2バイトのバイト列とかにしないとダメなのでしょうか?
0250デフォルトの名無しさん
2010/10/31(日) 01:38:32III=BBB
0251デフォルトの名無しさん
2010/10/31(日) 01:46:55それは何度も試しててムリぽ…と思ってもう一度やってみたら、できました…
ありがとうございました
何でできないって思ったんだろ?
もう寝ます…
0252デフォルトの名無しさん
2010/10/31(日) 07:39:59できなくね?
何か勘違いしてると思われ
16進数というのは16進数表記の事で、中身の数値じゃないよ。
5という数値を表す場合、"5"、"�X"、"五"、"○○○○○"、
といろいろあるが、そのひとつが16進数で、どれもStringで表現される。
III = Convert.ToInt32("10", 16)
が正解。
>III = CInt(BBB)とかIII = ToInt16(BBB)とかやってみたのですが、うまくいかず…
ToInt16の16は16bit整数型(Short)で16進数という意味は無いよ。
0253デフォルトの名無しさん
2010/10/31(日) 10:49:33>10進数に変換し
人間が見えるように出力するときにやるもんだろ
>BBBに「10」と入っている時に
まずここは何進数で「10」のつもりなんだ?
BBBに値を代入したコードはどうなってるんだ
0254デフォルトの名無しさん
2010/10/31(日) 14:57:34単にバイト変数の中身を整数変数に代入したかっただけの話だろ?
0255デフォルトの名無しさん
2010/10/31(日) 20:24:40どの案件みても、C++とかJavaとかC#とかPHPとか
0256デフォルトの名無しさん
2010/10/31(日) 20:28:42どっちかというとVB6上がりでC触れないとかネガティブな理由で使う言語だからね
0257デフォルトの名無しさん
2010/10/31(日) 21:36:47やたら融通の効く所はいいと思うんだけど。
0258デフォルトの名無しさん
2010/10/31(日) 22:45:44Microsoft的には非IT系のGeekなプロフェッショナル向けの言語。
要は会計士とか医師でプログラミングもしちゃうぜ的な人向け。
0259デフォルトの名無しさん
2010/10/31(日) 22:52:280260デフォルトの名無しさん
2010/10/31(日) 22:57:06往々に.net移行が遅れてたりする
0261デフォルトの名無しさん
2010/10/31(日) 23:08:41実際JavaやC#ならVBと変わらん。MSの囲い込みイメージ戦略に騙されてるだけ。
0262デフォルトの名無しさん
2010/11/03(水) 17:01:160263デフォルトの名無しさん
2010/11/04(木) 00:28:54http://hibari.2ch.net/test/read.cgi/tech/1288035953/137
0264デフォルトの名無しさん
2010/11/04(木) 03:23:01急にプログラマーに仕事が決まり、ASP.NETが必要になったのですが、
適当なスレがなかったようなのでマルチになってしまいました。
謝罪をさせていただいた上でまた質問させてください。
みなさんはASP.NETの勉強はどうしてるんですか?
おしえてください。使ってない人もいるかもしれませんが・・
0265デフォルトの名無しさん
2010/11/04(木) 11:05:310266デフォルトの名無しさん
2010/11/04(木) 11:06:54なんでもできるし。
0267デフォルトの名無しさん
2010/11/04(木) 13:30:28時間と金の無駄だ
0268デフォルトの名無しさん
2010/11/04(木) 13:56:280269デフォルトの名無しさん
2010/11/04(木) 16:22:03ただ学歴高い方が発注元に単金を高く請求できるので
0270デフォルトの名無しさん
2010/11/04(木) 16:48:570271デフォルトの名無しさん
2010/11/04(木) 17:20:450272デフォルトの名無しさん
2010/11/04(木) 18:17:440273デフォルトの名無しさん
2010/11/04(木) 18:27:340274デフォルトの名無しさん
2010/11/04(木) 20:51:45自分のサイトを読み込んでリンクさせるてリンクをクリックすると規定のブラウザで開く方法ってありますか?
要はリファラを残したい。。。
0275デフォルトの名無しさん
2010/11/04(木) 21:00:440276デフォルトの名無しさん
2010/11/04(木) 21:04:490277デフォルトの名無しさん
2010/11/04(木) 21:10:54HTTPヘッダだよ
それがわかればどうとでもできることがわかるよ
0278デフォルトの名無しさん
2010/11/04(木) 21:32:250279デフォルトの名無しさん
2010/11/05(金) 11:19:49Visual Studioエディタ内で子ウインドウをキーボードで切り替えるとき、
Ctrl+Tabキーで一覧が表示されますが、ここで
Enterキーまたはマウスでクリックしなくても切り替えられますか?
0280デフォルトの名無しさん
2010/11/05(金) 19:45:34念力でもOK(エスパーなら)
っていうか、何が聞きたいんだ
0281デフォルトの名無しさん
2010/11/05(金) 20:50:48VisualStudio2003proとSqlserver2005developerを持っているのですが、
この組み合わせではADO.NET2.0の機能を使うことはできませんか?
0282test.vb
2010/11/05(金) 21:44:14意味わからないけど
既定のブラウザでURLを開くだけなら
Process.Start("http://example.com/")
0283デフォルトの名無しさん
2010/11/05(金) 23:39:21今までは、オブジェクトというのは変数とメソッドが一緒になった固まりだと思ってました。
しかし、VBのサンプルコードを読むと、
Dim fm As Object
fm = 2.73
という構文が出てきたんですが、どうやらこれはVBでは間違っていないようなんです
fmをオブジェクト宣言したのなら、まずはそこからインスタンスを作って、さらに
インスタンスの変数。つまりfm.hensuu =2.73 みたいな形ならわかるのですが、
いきなりオブジェクトとして数値が宣言されて、いきなり数字が代入されるなんて・・
VBではオブジェクトの意味がJAVAと違うんでしょうか・・おしえてください
0284デフォルトの名無しさん
2010/11/05(金) 23:45:07それJavaでもできるよ(Java5以降)。オートボクシングという。
.NETではボクシングは実行エンジン自体に組み込まれてて、Javaのオートボクシングよりももっと柔軟。
0285デフォルトの名無しさん
2010/11/06(土) 00:07:27JAVAにもあるん・・・なんだかわからない・・
まずはインスタンス化しないと変数は代入できないんじゃなかったけ?
ましてオブジェクトは固有だから、変数がいくつあるかわからないし・・
0286デフォルトの名無しさん
2010/11/06(土) 00:12:25VB(というか.net)にはobject型という型があるんだよもん
つーか入門書ぐらいけちらず買えよ
それかMSDN読むか
Javaと違ってMSDNの日本語化はわりと深い所までちゃんとされてるからいいぞ
0287デフォルトの名無しさん
2010/11/06(土) 00:13:58Object fm;
fm = 2.73;
2行目は省略形で書かれていて、省略せずに書けば次のようになる。
fm = Double.valueOf(2.73);
Double.valueOf(2.73)の処理はボクシングと呼ばれる。
.NETでもこれと同じような処理が自動的に行われている。
これでわかんないならVBと比べる以前にJavaを入門書からやり直すべき。
0288デフォルトの名無しさん
2010/11/06(土) 00:15:33Object型のインスタンスなんて、スレッドの同期オブジェクトが欲しいときぐらいしか作らないよw
0289デフォルトの名無しさん
2010/11/06(土) 00:31:43全てオブジェクトとして扱うのがオブジェクト指向的には自然なんだよ
Javaは設計が古いのでそうなってないが.NETは実際に全部オブジェクトとして扱えるということ
0290デフォルトの名無しさん
2010/11/06(土) 00:36:520291デフォルトの名無しさん
2010/11/06(土) 13:37:13最近のは割とまともにローカライズされて見やすくなったよな
新しく使うクラスとかはとりあえずF1押して概要とかメンバーとか見るのが癖になってる
0292デフォルトの名無しさん
2010/11/06(土) 15:26:46>>287
>>288
>>291
ありがご当皆さん・・勉強してみます・・・
0293デフォルトの名無しさん
2010/11/07(日) 01:58:54注文番号(PK) 都道府県コード 市区町村コード 以下、注文日時とか商品IDとか諸々
・都道府県マスター
都道府県コード(PK) 都道府県名
・市区町村マスター
都道府県コード(PK1) 市区町村コード(PK2) 市区町村名
とこんなテーブルがあったとして、DataGridViewにBindingSourceを設定して、都道府県を
表示させるまでは良いのですが、市区町村に複合キーを投げる方法が分からず。
仕方がないのでテーブルアダプタにWHERE 都道府県コード=@都道府県コードみたいなメソッドを用意して、
データテーブルを取得するようにコードを書いたのですが、もっとスマートなやり方ってないもんですか?
0294デフォルトの名無しさん
2010/11/09(火) 00:22:51http://dobon.net/vb/dotnet/internet/webclientopenread.html
ここの方法でダウンロードは出来たのですが、javascriptがソースコードのままになってしまいます。
javascriptによってhtmlが生成された後のhtmlをダウンロードするにはどうすればいいでしょうか?
0295デフォルトの名無しさん
2010/11/09(火) 01:57:19いい加減、ドボンはもういいよ。
俺なんか、7年前に買ったものを大事に使うあまり、
流行から取り残されていってるんだぞ?
7年以上も続けているドボンを見てるとイライラしてくる。
そろそろ身を引いたらどうなのよ、って。
ドボンはアーカイブ(過去ログ)だけ残して、
後は若い奴らに譲ろうぜ?
若い奴らに新しいVBサイトを構築させていこうぜ。
0296デフォルトの名無しさん
2010/11/09(火) 07:15:460297デフォルトの名無しさん
2010/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
こんな感じにやりましたが、ダメでした。
そもそも、ハンドルが取得できない。
何かよい方法はないでしょうか??
0298デフォルトの名無しさん
2010/11/09(火) 10:30:53http://msdn.microsoft.com/ja-jp/library/cc410472.aspx
0299デフォルトの名無しさん
2010/11/09(火) 11:40:35そんなの無理じゃね?
0300デフォルトの名無しさん
2010/11/09(火) 11:54:15javascriptのdocument.writeなどで書き出すhtmlを展開したいと言ってるの?
WebBrowserコントロールにいったん読み込んで、
それのdomから取得すればできるかもしれないな。
0301デフォルトの名無しさん
2010/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;
0302301
2010/11/11(木) 10:31:21efreedom.com/Question/1-442465/InvalidOperationException-Executing-SqlCommand-Transaction
にスレッド処理でエラーが発生したんだよって報告があったので。
0303デフォルトの名無しさん
2010/11/11(木) 11:50:460304デフォルトの名無しさん
2010/11/13(土) 09:22:420305デフォルトの名無しさん
2010/11/13(土) 21:58:19初歩的なことですみません。
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を拡張するにはどうしたら良いのでしょうか?
0306デフォルトの名無しさん
2010/11/13(土) 22:46:290307デフォルトの名無しさん
2010/11/13(土) 23:38:530308デフォルトの名無しさん
2010/11/13(土) 23:44:18小学生じゃないんだから相手にエスパー能力を期待しているとしか思えないような
質問するなよと。
0309デフォルトの名無しさん
2010/11/14(日) 00:13:24ControlPaint.DrawBorder/DrawBorder3D
0310デフォルトの名無しさん
2010/11/15(月) 01:35:26BindingSourceとTextBoxをバインドしています。
BindingSourceのカレントレコードが変更される際に入力をチェックして、
入力のキャンセルや、レコード移動のキャンセルを行いたいのですが、
どうしたらいいでしょうか。
PositionChangedやCurrentChangedイベントで出来るかと思ったのですが、
これらは移動後に発生するみたいですし。
よろしくお願いします。
0311デフォルトの名無しさん
2010/11/15(月) 13:19:240312デフォルトの名無しさん
2010/11/15(月) 22:51:39意味が分からん
0313デフォルトの名無しさん
2010/11/15(月) 23:13:580314デフォルトの名無しさん
2010/11/16(火) 00:25:02ttp://www.eggheadcafe.com/software/aspnet/30776891/how-to-cancel-bindingsourcepositionchanged-event.aspx
0315デフォルトの名無しさん
2010/11/17(水) 02:34:48どなたか参考になりそうな日本語サイトをご存じないですか?
0316デフォルトの名無しさん
2010/11/17(水) 09:06:22WPFで作ったコンボをVBに読み込むとか。
正攻法は大変だと思う
0317デフォルトの名無しさん
2010/11/17(水) 09:07:200318デフォルトの名無しさん
2010/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晩悩んで試行して解決できず、エロい人知識を貸してください
0319デフォルトの名無しさん
2010/11/17(水) 22:00:14ByRef As TUSBAI1616Config
って定義するだけなんだけど
0320デフォルトの名無しさん
2010/11/17(水) 22:23:02Declareの宣言は勝手に変えるな馬鹿と言われて来たせいもあってか、その発想には至りませんでした。
明日試してみます。
オンラインマニュアル無いと思ってたらありましたので一応
ttp://accesio.com/MANUALS/AIOUSB_API_Reference.html#ADC_SetConfig
※サンプルプログラム(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のように私が構造体を定義しなおしました。
0321デフォルトの名無しさん
2010/11/17(水) 22:49:570322デフォルトの名無しさん
2010/11/19(金) 01:09:46テーブルアダプタの共通化についてサンプルがあるWebサイトかなんかありますか?
0323デフォルトの名無しさん
2010/11/19(金) 20:41:50どうせUpdateメソッドしか使わないからねぇ
0324デフォルトの名無しさん
2010/11/21(日) 21:31:09取得する方法がいまいち分りません
どのようにすれば良いのでしょうか?
0325デフォルトの名無しさん
2010/11/21(日) 21:35:410326デフォルトの名無しさん
2010/11/21(日) 21:48:11以下の方法で取得できました
お騒がせしました
Dim returnValue As String()
returnValue = Environment.GetCommandLineArgs
0327デフォルトの名無しさん
2010/11/21(日) 21:50:47起動時のコマンドライン引数を取得する
ttp://dobon.net/vb/dotnet/programing/commandline.html
@IT:.NET TIPS コマンドライン引数を取得するには?
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/030cmdargs/cmdargs.html
【VB.NET】外部から引数を受け取るプログラムを作成する
ttp://blog.livedoor.jp/akf0/archives/51333101.html
コマンドライン引数の取得
ttp://go2vb.cocolog-nifty.com/blog/2007/04/post_1b46.html
.NET 入門 VB.NET - コマンドライン引数を扱うには... (2)
ttp://itnandemolab.blog70.fc2.com/blog-entry-2364.html
0328デフォルトの名無しさん
2010/11/21(日) 23:22:350329デフォルトの名無しさん
2010/11/21(日) 23:38:350330デフォルトの名無しさん
2010/11/22(月) 09:43:01でぐぐれば出てくるのにマジでぐぐる前にここで
質問してるのか
いい加減にしとけよ
0331デフォルトの名無しさん
2010/11/22(月) 12:43:48■ このスレッドは過去ログ倉庫に格納されています