2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

VB.NET質問スレ(Part40)

1 :デフォルトの名無しさん:2013/04/13(土) 21:43:35.69
一応立てておいた

前スレ
VB.NET質問スレ(Part38)
http://toro.2ch.net/test/read.cgi/tech/1325083428/
VB.NET質問スレ(Part39)
http://toro.2ch.net/test/read.cgi/tech/1340849001/

2 :デフォルトの名無しさん:2013/04/13(土) 22:46:20.46
糞スレ終了





以降書き込まないてください

3 :デフォルトの名無しさん:2013/04/13(土) 23:06:59.45
>>1
削除依頼出しとけよ

4 :デフォルトの名無しさん:2013/04/14(日) 08:57:23.47
>>1
おつ

5 :デフォルトの名無しさん:2013/04/14(日) 14:22:26.37
>>1
おつ

6 :デフォルトの名無しさん:2013/04/17(水) 20:28:42.87
>>1
けつ

7 :デフォルトの名無しさん:2013/04/18(木) 03:08:39.07
>>1
おつ

8 :デフォルトの名無しさん:2013/04/19(金) 00:10:00.65
画面 <--- ここはXMLで通信 ----> IIS
画面とIISで通信する際にXMLを使っています。
めっちゃ遅いです。なにかいい案ありませんか?

9 :デフォルトの名無しさん:2013/04/19(金) 00:20:00.60
余計なことしないでWCFに丸投げ

10 :デフォルトの名無しさん:2013/04/19(金) 02:36:50.08
そもそもXMLで通信っておかしくね?
XMLってデータフォーマットの規格で通信の規格じゃないだろ

11 :デフォルトの名無しさん:2013/04/19(金) 07:22:43.56
「画面と通信」の意味不明

12 :デフォルトの名無しさん:2013/04/19(金) 07:27:07.55
通信経路が遅いのか、
アプリレベルの通信の手続きが非効率なのか、
前後のXMLの変換処理が遅いのか、
XMLにすることでサイズが膨らみすぎているのか、
それともまた別の問題か、
くらいの切り分けはやれよ
何も自分で考えたくないなら自分でコード書こうと思わないでWCFにでも投げとけ

13 :デフォルトの名無しさん:2013/04/19(金) 16:25:15.06
つか相手IISなら素直にWEBフォームでいいんじゃね
何やってるのか知らんが
XMLってもしかしてXHTMLってことなのか?

14 :デフォルトの名無しさん:2013/04/19(金) 20:23:37.50
form1でnewしたclassを
別のfrom(クラス)で使いまわすには
どうしたらいいのでしょうか?

15 :デフォルトの名無しさん:2013/04/19(金) 20:33:59.30
>>8
gzip圧縮してる?

16 :デフォルトの名無しさん:2013/04/19(金) 21:02:37.81
>>14
他のformで宣言しておいてわたせばよくね?

17 :デフォルトの名無しさん:2013/04/19(金) 21:17:48.12
>>16
ありがとう。
けどすまん。渡すって?
教えて君で申し訳ないが
具体的に教えて下さい。

18 :デフォルトの名無しさん:2013/04/19(金) 21:43:51.63
>>14
まずform1(のインスタンス)は誰がどうやって(作成して)表示したんだ?
別のform(のインスタンス)は誰がどうやって(作成して)表示するんだ?

19 :デフォルトの名無しさん:2013/04/19(金) 22:20:55.37
>>14
モジュール使えよ。楽になるぜ。

20 :デフォルトの名無しさん:2013/04/19(金) 22:41:58.72
どもです。

Public Class Form1

  Private cHoge As ClsHoge 'Hogeクラス

  Private Sub Form1_Load(...

    cHoge = New ClsHoge(string,string )

てな具合でNewしてます。

で、別のクラス、フォームでcHogeを使いたいなって

21 :デフォルトの名無しさん:2013/04/19(金) 22:57:06.37
別のフォームがForm2として、Form1がForm2の参照を持ってるか、
その逆かしないと受け渡しが出来ない。
または、両方が共通に参照できるクラスかモジュールを仲介させる。

22 :デフォルトの名無しさん:2013/04/19(金) 23:03:29.36
>>20
いやだから、Form1は誰かどうやって表示させてるんだ
んでその別のクラスやフォームは誰かどうやって生成するんだ?

23 :デフォルトの名無しさん:2013/04/19(金) 23:04:35.68
>>21
ありがとう。
そうなんだ。結構不便だな。

24 :デフォルトの名無しさん:2013/04/19(金) 23:39:20.07
>>22
どもです。

ごく普通のプロジェクトだったら、スタートアップフォームはform1なので
普通にロードすれば表示っしょ。

別のフォーム、クラスは普通に生成しますが...
クラスをどうやって生成する云々は俺の質問に直接関係あるのかな?
質問の意図がようわからん。コンストラクタがらみ?
普通に別のフォーム、クラスを生成した時、
cHogeはどうやったら使えるの?ってことなんだけど?
俺、勘違いしている?

たとえばform2(subForm)だと

from1から
 Dim f As New subForm()
 f.ShowDialog(Me)
 f.Dispose()

で subForm 側でcHoge をどうやって参照すれば良いのかなぁって
あ、Private cHoge As ClsHoge でPrivate宣言してるから
他からは参照できないってのは無でw

25 :デフォルトの名無しさん:2013/04/19(金) 23:48:44.28
なんで無しなの?

26 :デフォルトの名無しさん:2013/04/19(金) 23:52:56.74
Public Shared cHoge As ClsHoge
これでForm1.cHogeでアクセスできる
はっきり言ってゴミクズコードだが、良いとか悪いとかいう議論をしだしたら
そもそも子フォームが親フォームの具体的な型に依存するのは不適切とかそういう話になる

27 :デフォルトの名無しさん:2013/04/19(金) 23:57:50.72
subFormにpublic cHoge As clsHogeしておいて
Dim f As New subForm()
f.cHoge = cHoge
 f.ShowDialog(Me)
 f.Dispose()
でもいいぞ

28 :デフォルトの名無しさん:2013/04/20(土) 00:07:23.16
マルチレス許せ。

>>25
え、Privateだったら無理なんじゃね?

>>26>>27
ぐぐってたんだけど、やっぱりPublic 系になるよねぇ。

ここらで終わりにします。

レスくれた方々ありがとう。

29 :デフォルトの名無しさん:2013/04/20(土) 00:10:29.91
>>24
>ごく普通のプロジェクトだったら、スタートアップフォームはform1
スタートアップフォームは使わん方が良いんだがな

どうやって生成してるかっていうのは、インスタンスへの参照がどうなってるか知りたいんだよ
たとえば
Dim f As New subForm()
だと、fがsubFormのインスタンス(への参照)を保持してる
その場合ならsubForm側で
Public cHoge As ClsHoge
って宣言しといて
f.cHoge=cHoge
とかすれば行ける
変数直接じゃなくて、受け渡し用のプロシジャでもいいしプロパティでもいいけど
どっちにしてもPrivateじゃだめだぞ
Privateってのは自分の外からアクセスしませんって宣言なんだから

30 :デフォルトの名無しさん:2013/04/20(土) 00:12:28.72
Publicフィールド使わないでコンストラクタの引数で渡すとかプロパティで渡すとかいろいろあるけど
結局デザインの善し悪しの問題なのでここでどうこう言う話ではない
初心者みたいだしVBだし

31 :デフォルトの名無しさん:2013/04/20(土) 00:13:51.94
AndroidのActivityの値渡しみたいに連想配列にするとかっこいいかも

32 :デフォルトの名無しさん:2013/04/20(土) 00:15:08.11
>>31
静的型の意義を理解してない馬鹿
そういうのが好きならスクリプト言語使ってろよ

33 :デフォルトの名無しさん:2013/04/20(土) 00:22:51.57
しかし、PublicとPrivateの使い分けも解らんレベルなら
ググリながらじゃなくて、ちゃんとした本買って読むほうが良いと思うが
ちゃんとした初心者向けの解説サイトにあたれば良いけど、そんなのほとんど見たことないしなぁ
まあ、大きなお世話か

34 :デフォルトの名無しさん:2013/04/20(土) 00:26:36.76
VBでまともにオブジェクト指向の解説してる本なんてあるの?
WebサイトもC#やってないVB専門のとこだとサイト製作者自身が理解してないよね

35 :デフォルトの名無しさん:2013/04/20(土) 01:02:45.25
オブジェクト指向についてはJavaC++C#どれかの文法覚えて勉強するしかない

36 :デフォルトの名無しさん:2013/04/20(土) 01:37:31.55
特定言語の文法覚えて、オブジェクト指向の何をどう勉強するんだろうね

37 :デフォルトの名無しさん:2013/04/20(土) 01:39:18.05
Shell()に渡せる最大文字数について、どこかに説明ない?
とりあえずInt16の最大値辺りで切られるのは確認できたんだが

38 :デフォルトの名無しさん:2013/04/22(月) 00:43:36.67
VBで、"Picture1.Line(50, 50) - (1200, 1000), RGB(100, 180, 230), BF"として
座標X (50,50)と座標Y(1200,1000)を対角線で結ぶ四角形を描画していたとします。

これをVB.NETで実現したいのですが、Graphics.DrawRectangleメソッドを利用すると、
g.DrawRectangle(p, 50, 50, 100, 80)と、座標X(50,50)に100x80の四角形を描画すると、
考え方が変わっております。

与えられる情報は座標Xと座標Yしか無いため、どう直せば良いものか
困っております。

良い処理がありましたら、アドバイスを頂きたく。

お願い致します。

39 :デフォルトの名無しさん:2013/04/22(月) 00:46:28.11
それで困るってどんだけ頭悪いのw
単純な足し算引き算の問題じゃないか

40 :デフォルトの名無しさん:2013/04/22(月) 00:57:31.44
さすがにプログラミングしていいレベルじゃないわなw

41 :デフォルトの名無しさん:2013/04/22(月) 06:53:15.52
さすがに本気でそれがわからん頭ならそこだけクリアしたところで何か意味のあるコードが産み出せるとは思えんな
人生設計を考え直すべき

42 :デフォルトの名無しさん:2013/04/22(月) 07:05:13.96
ちょっとした業務アプリを自前で作るレベルのサンデーなんで、
そんなに危機感は無いです。

座標計算はどうも苦手で、お願いします。

43 :デフォルトの名無しさん:2013/04/22(月) 07:11:42.26
38ですが、何かテクニックのようなものがあればお聞きしたいです。

これで飯食ってはいないので、ベタな処理をすれば書けると思いますが、
きっとスマートなコードにはならないと思います。

プロの方のコード設計を見せて貰えたらと思います。

44 :デフォルトの名無しさん:2013/04/22(月) 07:13:19.58
いやそういうレベルじゃなくて小学校からやり直すレベル

45 :デフォルトの名無しさん:2013/04/22(月) 14:44:49.63
>>38
ベクトルとスカラーって数学で習ったの覚えていますか
ベクトルとは座標系における位置と大きさを持つ値であり
スカラーとは大きさだけを持つ値です
もともとVBではベクトルで四角を描いていました
VB.NETでは基準点ベクトルからのスカラーで四角を描くようになりました
変換したい場合2点間のベクトルの差がスカラーになることを思い出してください
さすれば簡単に実装することができます

46 :デフォルトの名無しさん:2013/04/22(月) 14:51:19.84
>>38はネタでしょw
こんな奴いるわけがないと思いたいwww

47 :デフォルトの名無しさん:2013/04/22(月) 14:51:51.82
>>43
http://dobon.net/vb/dotnet/graphics/drawrectangle.html

48 :デフォルトの名無しさん:2013/04/22(月) 21:52:37.11
いろいろ回答ありがとうございます。

特に、プロがやるようなスマートなコーディングは無いんですね。

こつこつ座標をやりくりして、泥臭くやろうと思います。

49 :デフォルトの名無しさん:2013/04/22(月) 21:58:57.66
そんなもんメソッド一つ作れば済むことだろ

50 :デフォルトの名無しさん:2013/04/22(月) 22:39:30.75
確かに拡張メソッドは便利だなw

public static void DrawRectangle(this System.Drawing.Graphics g, Pen pen, Point point1, Point point2)
{ g.DrawRectangle(pen, Rectangle.FromLTRB(point1.X, point1.Y, point2.X, point2.Y)); }

51 :デフォルトの名無しさん:2013/04/22(月) 23:59:31.46
プロのコーディングは単純明快でわかりやすいコーディングだよ。
お手本どおり、基本に忠実がベスト。

プロって言うのを勘違いして、わけのわからないコーディングをす
るとみんな迷惑する。

52 :デフォルトの名無しさん:2013/04/23(火) 19:49:11.96
来月から仕事で新しく入るプロジェクトがVB.NETでASP.NET?とか言われてよくわからないんですが、入門用の良いサイトあったら教えてください!
オブジェクト指向言語はじめてなので勉強中ですがサッパリわからなくて困っています;;

53 :デフォルトの名無しさん:2013/04/23(火) 21:43:34.54
VBだけでオブジェクト指向を理解するのは不可能だと思う
オブジェクト指向はJavaと一緒に覚えるのがいいよ

54 :デフォルトの名無しさん:2013/04/23(火) 23:30:02.17
オブジェクト指向を理解するのに特定の言語を覚える理由がわからんが

55 :デフォルトの名無しさん:2013/04/23(火) 23:41:46.82
環境の問題だろ
OOに関してVBの書籍やサイトでロクなの見たことない

56 :デフォルトの名無しさん:2013/04/24(水) 00:18:00.59
VB.NETはオブジェクト指向言語になったが、そんなものはVBには不要だから本書では無視する
というようなことが堂々と書いてある本があって衝撃を受けた

57 :デフォルトの名無しさん:2013/04/24(水) 22:05:42.35
オブジェクト指向ってなんだっけ?

58 :デフォルトの名無しさん:2013/04/24(水) 22:09:22.71
ぐぐって自己解決

クラス・メソッッドなどをカプセル化で括る様かな?

59 :デフォルトの名無しさん:2013/04/24(水) 22:51:12.07
これがVBクォリティ…

60 :デフォルトの名無しさん:2013/04/25(木) 01:58:03.76
でもホントそんなもんで良いしそういう人向けだしVB

61 :デフォルトの名無しさん:2013/04/25(木) 10:49:09.10
でもなんでオブジェクト指向っていう中途半端な言葉なんだろうな
オブジェクトオリエンテッドって表記したら長いから?
英語がわかるやつならそのままのが分かりやすいし、日本語にしたいなら「目的重視」って言ったほうが理解しやすいだろうに

コード書くときには機能重視じゃなくて目的重視でまとめといたほうが、後で読みやすいし再利用しやすいよ
って話が基本になってるんだから

62 :デフォルトの名無しさん:2013/04/25(木) 10:51:35.33
業務システムとかは機能重視のほうが保守は楽だな

63 :デフォルトの名無しさん:2013/04/25(木) 10:54:29.62
オブジェクト指向はコード書くときの話だけじゃなくて、設計方法論なんだが
オブジェクトの良い訳がなかったから無理やり訳さないでそのままカタカナ表記にしたんだろうけど
すくなくとも目的とかいう訳よりはよっぽどマシだな

64 :デフォルトの名無しさん:2013/04/25(木) 15:29:52.37
設計方法論でもオブジェクトは目的だろ
「目的」という言葉の意味論になるからオブジェクト指向の訳としては使われなかっただけだ
オブジェクト指向という言葉自体が独自の意味を持つようになってしまった以上
オブジェクト指向を理解するのに「オブジェクト」という言葉の意味論やってもしょうがないわけだが

65 :デフォルトの名無しさん:2013/04/25(木) 20:33:05.67
目的って何だよw
そもそもobjectという言葉を日本語の目的という言葉に対応する意味で使うことは稀だ。

オブジェクト指向のオブジェクトの意味は普通にモノとか対象とかいう意味だよ。
UFOのOと同じ。

66 :デフォルトの名無しさん:2013/04/25(木) 21:53:54.98
大きいか。

67 :デフォルトの名無しさん:2013/04/25(木) 23:42:51.08
VBのソースを公開するときって、どのファイルを公開すればいいの?

.frmとかは明らかに自分で書いたものだからいいのだけど、なんかよく分かんない
バイナリファイルとか中身みると、C:\Document and Settings\〜 みたいな文字列が
含まれてて、これをネットに公開したらログオン名とかダダ漏れじゃんとか思ってまして

68 :デフォルトの名無しさん:2013/04/26(金) 01:31:29.02
>>67
VBプログラマ質問スレ(Ver.6.0 まで) part62
http://toro.2ch.net/test/read.cgi/tech/1360914852/l50

69 :デフォルトの名無しさん:2013/04/29(月) 18:14:44.42
object
ばくぜーんと、対〜、みたいな意味合いだよね。
反対意見を言うなんて意味もあったりして。

70 :デフォルトの名無しさん:2013/05/01(水) 21:38:03.64
FormロードイベントでURLを設定しています。

txt_url_list.Text = "http://google.co.jp" & vbCrLf & _
"http://yahoo.co.jp"

このコードを実行すると、なぜかtextbox内に設定したURLが選択された状態
(青背景に白文字)
になってしまいます。

理由が不明なのですがこれをリセットする方法 or こうならない方法
を知っているかたはいますか?

71 :デフォルトの名無しさん:2013/05/02(木) 01:40:40.42
>>70
ミニマムコード作ってそのテキストボックスの全プロパティ晒せ

72 :デフォルトの名無しさん:2013/05/02(木) 12:44:44.03
>>70
txt_url_list.Text = "http://google.co.jp" & vbCrLf "http://yahoo.co.jp"
txt_url_list.Select(0, 0)

73 :デフォルトの名無しさん:2013/05/05(日) 00:54:27.50
ASP.NET(VB)でマスターページからコンテンツページの
メソッドを実行する方法はありませんでしょうか?
一応以下のページにC#での方法がありますが、
okwave.jp/qa/q5827497.html
上記の回答の
WebForm1 l_frm = (WebForm1)this.Page;

Dim l_frm = DiredctCast(Me.Page,WebForm1)
のようにVBで書きなおすとキャストエラーが発生します。
Me.Pageの指定が間違っているのでしょうか?
他に方法がありますでしょうか?
お手数おかけしますがよろしくお願い致します。

74 :デフォルトの名無しさん:2013/05/05(日) 02:55:09.67
>>73
マスターページでコンテンツページのメソッド実行とか、設計がおかしいとしか思えんが...

エスパーすると、Me.Pageの型がWebForm1じゃないんだろ
そのページのファイル名と@Pageになんて書いてある?
VB.NETってレイトバインド出来た気がするからキャストしなくても呼び出せる気はするが...

これ以上はWebProg板にASP.NETのスレあるからそっち行け

75 :73:2013/05/05(日) 12:28:26.60
>>74
ありがとうございます。確認してみます。
設計はあきらかにおかしいですが、客の要望ゆえというか。。。

76 :デフォルトの名無しさん:2013/05/13(月) 21:10:11.82
VS2008のCheckedListBoxにて、チェックボックスへはシングルクリックで、リストへはダブルクリックをする事で
On/Offを切り替える事は出来るのでしょうか。

VB6.0時代は出来たのですが…。
CheckOnClickプロパティの場合、リストへのクリックもシングルになってしまいます。
(デフォルトはダブルクリック)

微妙に操作性が異なりイライラとしてしまう状況・・・。

77 :デフォルトの名無しさん:2013/05/14(火) 23:08:30.31
あるファイルを読んで項目を取得する。
これをクラス化する時
コンストラクタにファイル名をセットして
コンストラクでファイルをオープン、リード、クローズして項目をプロパティにセット。
としていい?
それとも、コンストラクタはファイル名のセットのみにとどめておいて
あとからreadメソッドのような感じの方が良い?

どっちが定石なのでしょうか?

78 :デフォルトの名無しさん:2013/05/15(水) 13:19:00.62
DataGridviewのヘッダーを2行以上表示させたい時ってどうしてる?

79 :デフォルトの名無しさん:2013/05/15(水) 14:26:31.25
ヘッダーのテキストに改行コード入れたらいいんでないか

80 :デフォルトの名無しさん:2013/05/15(水) 20:45:49.29
高さもオートに出来んかったっけ?

81 :デフォルトの名無しさん:2013/05/15(水) 20:51:32.78
(゚д゚)ハァ?

82 :デフォルトの名無しさん:2013/05/16(木) 00:03:30.92
高さもオートに出来るな
ヘッダー行を2行以上にしたいって事ならググって失望するが良い
FlexGridって便利だったんだなぁ

83 :デフォルトの名無しさん:2013/05/16(木) 09:44:30.12
DataGridviewColumn継承すればいいだけでは

84 :デフォルトの名無しさん:2013/05/16(木) 09:55:54.38
画像ファイルを読み込んでPictureboxに表示して
ドラッグや拡大縮小をしてみているのですが
異常に重いのですが、何か軽くなる方法はないでしょうか?
http://codepad.org/T8SQb82w

85 :デフォルトの名無しさん:2013/05/16(木) 11:21:29.78
失礼しました。
TextureBrushというので速くなりました。

86 :デフォルトの名無しさん:2013/05/16(木) 11:52:40.50
VBAの流れでVB.NETに行きがちだけど、やっぱCなのか

87 :デフォルトの名無しさん:2013/05/16(木) 12:48:46.31
DataGridViewの各セル単位にイベントをハンドルすることって可能?
↓指定した各々のセルに異なるイベント割付みたいな。
Me.DataGridView1(0.1)
Me.DataGridView1(2.1)

DataGridViewのcellClickイベントとかを発生させるように、
DataGridViewTextBoxCellからイベント発生させるのってできないのでしょうか?

88 :デフォルトの名無しさん:2013/05/16(木) 19:00:41.36
普通はカレントがどこか判定して処理をわけるけどなぁ。

89 :デフォルトの名無しさん:2013/05/16(木) 19:58:03.13
>88

レスありがとうございます。
やっぱりそうなんですね...

もしできればソースがスッキリするかな?と思った次第で。
あきらめてDataGridViewのイベントでどうにかします。

90 :デフォルトの名無しさん:2013/05/17(金) 11:28:49.53
ちょい亀レスだけど
>>77
そのどっちかってなら断然後者かな。
前者だとインスタンスだけ作りたい場合でも強制でファイル読込しちゃう。
まーシステム的にそういう事が一切ないって事で、ほんとそれ専用のクラスってなら
前者でもいいけど。クラス使う方でもコードが、readメソッド呼ぶ分1行減るしね・・。

普通に設計するなら9割9分後者だろうなぁ。

91 :デフォルトの名無しさん:2013/05/18(土) 21:05:47.79
VB2008からExcelファイルを操作しようと思って、
参照設定にExcel関連追加しようとしたら、
 COMに Microsoft Excel xx.x ObjectLibrary ってのと
 .NETに Microsoft.Office.Interop.Excel ってのがあった

どちらを参照したらいいの?
この2つって何がちがうの?

92 :デフォルトの名無しさん:2013/05/19(日) 15:06:22.53
しかしこれだけググるという言葉が浸透しても
実際にそれをする人は増えないものなのだなぁ

93 :デフォルトの名無しさん:2013/05/19(日) 15:30:50.91
そりゃまあ
Google先生に検索ワードを打ち込んで
くだらん情報をズラズラ並べ立てられるよりも
専門スレで聞いた方が確実でしょう

94 :デフォルトの名無しさん:2013/05/19(日) 15:43:04.11
チッ役立たずが

95 :デフォルトの名無しさん:2013/05/19(日) 15:48:07.57
レイトバインドのほうがいいと思う

96 :デフォルトの名無しさん:2013/05/19(日) 21:55:06.97
バージョンの差を吸収するのにレイトバインドは必須だね。

97 :デフォルトの名無しさん:2013/05/19(日) 23:54:25.12
>>93
でもinterop .netで一番上に来ててしかも一覧のとこに答え出てるから
わざわざページ開く必要も無いという状態なのに聞いてくるのは
ちょっとどうなのよ?と思わざるを得ない

98 :デフォルトの名無しさん:2013/05/20(月) 02:50:41.32
>>97
それウソやで。だから専門のスレで聞いてるんやで。

99 :91:2013/05/20(月) 21:22:19.61
ググってもわからないから聞いたんだけども

>>97の言う通りだと
--------------------------------------------------------------
自動生成された COM Interop アセンブリのもっと便利な使い方 ...
nyaruru.hatenablog.com/entry/20080319/p1?
2008/03/19 ? 結論から言えば,TLB を経由して生成された Interop アセンブリに,
最適なマーシャリング設定は期待できません. 私がよく使う手は,.NET Reflector で
Interop アセンブリを C# のソースコードに再変換してしまうというものです.得られた ...
--------------------------------------------------------------
この中に答えがあるってこと?
だったらごめんよくわからん


>>95-96
バージョン差異吸収にレイトバインドが良いことは、各所で勧められてるし、
参照名にバージョンが明記されてることからも、なんとなくわかる

でも俺の質問って、そういうこと聞いてるんじゃなくね?

100 :デフォルトの名無しさん:2013/05/20(月) 21:42:54.62
違いはよくわかんないけど、
どっちかでやってみて都合わるけりゃ他方に切り替えませう・・・ってのじゃだめ?
自作クラスかぶせとけば問題あってもそのクラスだけでおさまるんだしさ。

101 :デフォルトの名無しさん:2013/05/20(月) 21:48:23.57
レイトバインド以外は興味ない

102 :デフォルトの名無しさん:2013/05/20(月) 23:10:29.14
>>99
いやだから、参照設定は事前バインドなんだよ。
一度、エクセルの遅延バインドで検索するといいよ。
実行時バインディング(レイトバインディング)すれば参照設定は必要ないです。

103 :デフォルトの名無しさん:2013/05/20(月) 23:11:53.66
>>99
Microsoft Excel xx.x ObjectLibraryは
レジストリに登録されてるCOMのTLBから
相互運用用のDLLを自動生成。

Microsoft.Office.Interop.Excelはあらかじめ
相互運用用に用意されたDLL。

上記の場合、型付けがいい加減だったり(型が単にobjectなど)、
enumとの関連が正確でなかったりする。

104 :デフォルトの名無しさん:2013/05/21(火) 00:27:28.64
officeはまだまだバージョンアップ激しそうだしレイトバインドお勧めてのは同意
開発中はインテリセンス使いたいからアーリーバインドにしといて
終わったらレイトバインドにしとけば良いんじゃね
定数の扱いに気をつけとけば問題は無い
はず

105 :デフォルトの名無しさん:2013/05/21(火) 00:56:09.50 ID:/N4KDjTe!
普通に考えたらネタだろうと思うような話を大真面目でする奴を目撃できるのが
このスレの醍醐味だなw

真に受ける人がいると気の毒だから一応反対意見も書いておく。

Excel97とかはさすがに試してないけど、現実にはExcelオートメーションで
バージョン違いで例外が発生するメソッドやプロパティはほとんどない。
(確かにあることはある)

事前バインドした場合に得られる様々な利益を捨ててまでレイトバインディングを利用するのは、
個人的には羹にこりて膾を噴く不合理にしか思えんな。

106 :デフォルトの名無しさん:2013/05/21(火) 09:20:47.35
VB脳というか、スクリプト脳なんじゃないか
悪いことじゃないがw

現代じゃIDEが強力すぎるからなぁ
レイトバインディングなんてしたくない

107 :デフォルトの名無しさん:2013/05/21(火) 09:28:56.65
まあ思想の違いだからこれは分かり合えることは無い

108 :91:2013/05/21(火) 12:07:34.51
俺、「アーリーとレイトどっちがいい?」なんて質問してないのに、
いつまでもレイトしろレイトがいいってわめいてる人たち、いったいなんなの?


>>103
もともと前者がずっと前からあるCOM参照で、それは今も同じやり方で使える
それをブラッシュアップして.netでパッケージングした完成品を、
VSの中に置いてるのが後者 ってことかな?

バージョンさえ合うなら、後者を使った方がいい加減な部分が少ない、みたいな?

ググってTips探しても前者のコードしか見つからなくて、
後者を使うときもそれに準拠すべきかわからないんだけど、
コード進行は同じと思っていいのかな

109 :デフォルトの名無しさん:2013/05/21(火) 12:21:32.67
いや別に君と話してる訳じゃないんで
自意識過剰じゃないかね?

110 :デフォルトの名無しさん:2013/05/21(火) 13:35:23.08
>>105
>事前バインドした場合に得られる様々な利益
ってのをちゃんと説明しないと説得力がないぞ
俺が思いつくのはIDEでの支援と実行速度ぐらいしかないが
IDEの支援は開発時には事前バインドにしとけばいいし
実行速度なんて体感できるほどの差が出ることはそうそうない

まあ、開発者本人が個人的に使うなら事前バインドでいいよ

111 :デフォルトの名無しさん:2013/05/21(火) 19:02:46.12
オススメだとアドバイスしてただけなので。
噛み付かれる程の事をした覚えはないな。

112 :デフォルトの名無しさん:2013/05/21(火) 20:17:50.97
>IDEでの支援と実行速度ぐらい

レイトバインディングの利点はなんですか?

113 :デフォルトの名無しさん:2013/05/21(火) 20:25:00.06
DLLが要らない
どのバージョンのExcelでも操作できる

114 :デフォルトの名無しさん:2013/05/21(火) 21:04:01.55
>>112-113
論争をはじめるような事でもないだろうw
俺はオススメしただけなので、使う使わないは各自の自由だし。

115 :デフォルトの名無しさん:2013/05/21(火) 21:07:06.31
すげー重要じゃん

116 :デフォルトの名無しさん:2013/05/21(火) 21:19:01.88
>>114
いや別に君と話してる訳じゃないんで
自意識過剰じゃないかね?

117 :デフォルトの名無しさん:2013/05/22(水) 00:27:24.27
他人の意見をネタ扱いして真に受けるなとかいっといて
反論きたら逃げるのですね

118 :デフォルトの名無しさん:2013/05/22(水) 06:24:08.70
4.0からInterOpアセンブリの埋め込みできるし

http://msdn.microsoft.com/ja-jp/library/vstudio/ee317478%28v=vs.100%29.aspx
COM オブジェクトを参照するアプリケーションに型情報を埋め込むと、プライマリ相互運用機能アセンブリ
(PIA: Primary Interop Assembly) を使用する必要がなくなります。 また、埋め込み型情報を使用するこ
とで、バージョンに依存しないアプリケーションを作成できます。 つまり、複数のバージョンの COM ラ
イブラリの型を使用するようにプログラムを記述でき、バージョンごとに固有の PIA が不要になります。
この方法は、Microsoft Office ライブラリのオブジェクトを使用するアプリケーション向けの一般的なシナリオです。
型情報を埋め込むと、プログラムの同じビルドで、異なるコンピューター上にある異なるバージョンの
Microsoft Office と連携できます。Microsoft Office のバージョンごとにプログラムや PIA を再配置する必要はありません。

119 :デフォルトの名無しさん:2013/05/22(水) 07:28:48.57
4.0すげー
でも4.0なんてうちではまだ使えないな

120 :デフォルトの名無しさん:2013/05/22(水) 13:18:55.60
>>91からの流れみてたら、プログラマーって本当にヤバい人種なんだなって改めて思った

121 :デフォルトの名無しさん:2013/05/22(水) 13:27:11.01
ヤバイ人種だからものを作ることができるんだよ

122 :デフォルトの名無しさん:2013/05/22(水) 14:12:35.51
VB.NETでCONTAINING_RECORDってどうやって実装するのが普通?

123 :デフォルトの名無しさん:2013/05/22(水) 14:14:33.53
なにそれ?

124 :デフォルトの名無しさん:2013/05/22(水) 14:45:36.98
CONTAINING_RECORDググってみたが、要は構造体をリンクリストで扱うためのマクロか
.NETにはLinkedListがあるから、そんなもん自分で実装する必要がないと思うが

125 :デフォルトの名無しさん:2013/05/22(水) 14:58:54.25
C厨の時代遅れ感は異常

126 :デフォルトの名無しさん:2013/05/22(水) 15:20:40.38
いや先人のDLLがLinklist返すんでそれ使ってるクラスをVB.NETで書いてって言われてどうしようかと・・・
まさかDLLから書き直しか・・・勘弁して欲しい

127 :デフォルトの名無しさん:2013/05/22(水) 17:03:18.35
たんなるアドレス計算だろ
アンマネージドを扱うんだからある程度泥臭くなっても仕方ない

アドレス計算で生で扱うか
マネージド構造体にコピーして操作→アンマネージドメモリにコピーみたいな非効率なやり方しかないでしょ

128 :デフォルトの名無しさん:2013/05/23(木) 01:46:50.41
泥臭く書きなおしてついでにエレガントに使わない方作って先人に渡してあげれば紳士的に

129 :デフォルトの名無しさん:2013/05/23(木) 08:08:35.31
>>120
2chで世の中が判ったと思い始めたら、色んな意味でヤバイけどな。

130 :デフォルトの名無しさん:2013/05/23(木) 11:01:58.52
>>126
今後更新されない既存ものなら返したい構造体毎にオーバーロード作ってポインタ計算すればいいだけじゃね?

131 :デフォルトの名無しさん:2013/05/23(木) 18:15:18.04
774ЯЯに噛み付いた奴がいたぞwww

ttp://bbs.wankuma.com/index.cgi?mode=al2&amp;namber=66757

確かに、こいつはこの掲示板ではいつも威張っているようだが、
こいつはこの業界では結構エラい人なのか?

132 :デフォルトの名無しさん:2013/05/23(木) 18:53:57.08
>>131
自演乙

133 :デフォルトの名無しさん:2013/05/24(金) 05:21:59.05
ギリシャ文字の人も偉そうにしているね

134 :デフォルトの名無しさん:2013/05/24(金) 06:38:21.83
>>133
インドリ乙

135 :デフォルトの名無しさん:2013/05/24(金) 07:24:36.36
>>131
これは明らかに名無しのミスリードだろ
いわゆる欲嫁ってやつだな

136 :デフォルトの名無しさん:2013/05/24(金) 18:40:14.53
そう、人間のクズとして名を馳せているよ。
だから誰も相手にしない。

137 :デフォルトの名無しさん:2013/05/24(金) 20:39:34.02
初心者です

Public Functionの引き数に
そのFunction専用引き数として列挙型を使いたいのですが
Publicで列挙型宣言するしか無いですか?


Public Enum p引き数
 A = 0
 B = 1
End Enum

Public Function WWWW(a AS p引き数)

…処理

End Function


これだと専用引き数感が無いので
他に良い方法があれば教えて下され

138 :デフォルトの名無しさん:2013/05/24(金) 20:56:21.48
何が専用引数感がないだよハゲ
無駄なことに悩んでないでションベンして寝ちまえ

139 :デフォルトの名無しさん:2013/05/24(金) 21:04:03.95
諦めれ

140 :デフォルトの名無しさん:2013/05/24(金) 21:23:22.94
 ’専用の引数

これを専用引数感が欲しいとこのコード末尾に付けなさい

141 :デフォルトの名無しさん:2013/05/25(土) 04:51:38.87
まず専用引き数感ってのはどういう事なのか詳しく説明してくれ

142 :デフォルトの名無しさん:2013/05/25(土) 05:37:45.74
MessageBox.Showメソッド専用引数の、

MessageBoxButtons
MessageBoxDefaultButton
MessageBoxIcon
MessageBoxOptions

は、System.Windows.Forms名前空間にあるんだぜ?

143 :デフォルトの名無しさん:2013/05/25(土) 07:39:15.25
値さえ用途に合致すれば、別の用途にも使えるしな

144 :デフォルトの名無しさん:2013/05/25(土) 07:49:23.42
>>141
専用引数感とは、コードを見た開発者が抱く、このEnumはこの関数専用の引数なんだなあという思いのこと、
またはその思いを抱かせる性質のことです。専用引数感はどういうことなのか詳しく説明しました。
>>137の質問に答えてください。

145 :デフォルトの名無しさん:2013/05/25(土) 08:54:18.40
>>142のMessagebox関連なんか、まさにお前の要求通りなんじゃね?

146 :デフォルトの名無しさん:2013/05/25(土) 08:57:09.21
>>138
誰がハゲだ。寝てませんし、ションベンもしてません。

>>139
あきらめません。

>>140
そういう解決策を望んでるんじゃないんです。もっとこうコードの書き方で適切なものがないか模索してるんです。
コメントもコードの一部だって考えもあるかもしれませんがコメント以外でお願いします。

>>142
すげーぜー(杉ちゃん)

>>143
そうなんです。

147 :デフォルトの名無しさん:2013/05/25(土) 08:58:34.35
>>144は偽物っぽいけど

enumってのは名前のついた整数にすぎないんだから
enumを使う限り無理、というのが回答

完全に専用()にしたいならクラスなり構造体にすればいい
そのクラスもpublicにしなきゃならないけど。

148 :デフォルトの名無しさん:2013/05/25(土) 08:58:42.37
>>145
どういうことですか?杉ちゃんしか思い浮かびませんでした。
コードではどう書けばいいんでしょうか?

149 :デフォルトの名無しさん:2013/05/25(土) 09:16:39.84
>>148
死ねよ

150 :デフォルトの名無しさん:2013/05/25(土) 09:18:45.43
>>148
MessageBoxほにゃららって名前だろ
ああこれはMessageBox専用なんだなって専用感が出てるじゃん

151 :デフォルトの名無しさん:2013/05/25(土) 09:25:32.83
>>149
なんでですか?

>>150
出てることはわかります。コードではどう書けばいいのでしょうか?

152 :デフォルトの名無しさん:2013/05/25(土) 11:48:42.13 ID:WCSp5Xax!
>>137
あるEnum(というか型)に、その型が特定のメソッド専用であることがわかるようにしたい、
という考えは理解できないでもないが、はっきり言ってその問題意識そのものが間違ってる。

コードを読んでる時に、その型がどこで使われてるか知りたい場面を想定しているのかもしれないが、
それならIDEの機能でできる。

あと、その型を引数として使うメソッドが一つしかないことを明示するメリットなんて何もない。
あると言うならどんなものか言ってみ。

153 :デフォルトの名無しさん:2013/05/25(土) 11:51:02.48
>>151
お前が>>137でEnum宣言している、そのままでいいじゃねえか
p引数という名前をお前が言う専用感ある名前にすればいいだけじゃね?
何がわからないんだデブ

154 :デフォルトの名無しさん:2013/05/25(土) 14:24:55.88
>>151
プロシジャと、必ずセットでその引数用のクラス作れ
たとえば
WWWWってSubかFunction作るなら、WWWWArgってクラスも作れ
それをコーディングルールとしとけ

俺ならそんなコード読みたくないが

155 :デフォルトの名無しさん:2013/05/25(土) 14:46:09.00
自己満足したいだけのようだから多分何を言っても無駄だろう

156 :デフォルトの名無しさん:2013/05/25(土) 15:37:28.98
>>152
あなたが言ってることは、可愛い女の子と付き合いたいと言ってる人に対して
俺の穴を使えばいい、女と付き合うメリットなんてないと言ってるようなものだと思います。
ぼくは可愛い女の子と付き合いたいし、専用引き数感が欲しいんです。

>>153
逆に聞きますけど、名前を変えるだけで専用引き数感が出るんでしょうか?
あと、体型はいま関係ないんじゃないでしょうか。なぜそんな語尾を使うのか不思議です。ただただ不思議です。

>>155
諦念。

157 :デフォルトの名無しさん:2013/05/25(土) 16:00:14.32
>>156
お前の感性を他人に聞かれても困る
一生引きこもってろ

158 :デフォルトの名無しさん:2013/05/25(土) 16:02:32.80 ID:WCSp5Xax!
>>156
「可愛い女の子と付き合いたい」は趣味趣向の世界だから理由を問う必要はないが、
プログラミングは技術であって、そこで問われるのは目的に対する手段の合理性だけ。
趣味趣向の入り込む余地はない。
というか、そんなものを持ち込んでもらっては困る。

「専用引き数感」とやらには、いかなる目的に対する合理性も存在しない。
繰り返すが、異議があるならどうぞ。

159 :デフォルトの名無しさん:2013/05/25(土) 17:20:13.96
いつまでマジレス続けんだよ

160 :デフォルトの名無しさん:2013/05/25(土) 18:03:18.28
途中からキチガイと入れ替わってるだろ

161 :137:2013/05/25(土) 18:53:22.70
大変遅くなりましたが、答えて下さった皆様
ありがとう御座いました。

クラスだとクラス内に書けて、呼び出しも専用という感じで
分かりやすくて良いので
ファンクションでも出来たらいいなという思いからでした。

引き数によって、処理を分岐させるような時は
一般的にはどうしているもんでしょうか?
Byte型とかで1や0を送って、コードにコメントで
対応する処理内容を書き残したり?

もしや、そもそもそんな分岐は
させない方が良いんでしょうか

162 :デフォルトの名無しさん:2013/05/25(土) 19:12:42.73
まあ上げてる時点で読む必要無いし

163 :デフォルトの名無しさん:2013/05/25(土) 21:31:38.24
>>161
擬似的なコードだけどこういう書き方をしたいの?

F(F.Args.One)

Function F(ByVal param As Args)
  Enum Args
    One
    Two
  End Enum
  
  Select Case param
  Case Args.One
    ...
  Case Args.Two
    ...
  End Select
End Function

ポリモで分岐をなくせるならそうするけど、
関数内でパラメータによって分岐するときはあるよ。
Enum使う。Functionの処理をEnumで表したいと思わないので
引数専用感が無くて困ったことが無い。

164 :デフォルトの名無しさん:2013/05/26(日) 01:57:00.90
専用感は個人が勝手に思っているであって俺らには意味がないって事だよ。

165 :デフォルトの名無しさん:2013/05/26(日) 10:58:18.54
>>131

設定どおりの動作という観点では正しい動きかも知れませんが、ソフト的にはこちらの想定通りの動作をしていないので
ソフト側がうまく動いていないという点に対してそのような揚げ足をするのは心外です。

貴方の回答をいくつか拝見しましたが、どれも傲慢で不愉快極まりありません。
おそらく業界では名のある技術者なのだろうと存じ、僭越を承知で申し上げますが、貴方が何の目的でいくつかの質問に
書き込みを行っているのかが全く理解できず、いくらその人が優秀な技術者であろうとも、傲慢でネチケットを感じられない方には
コメントをして頂きたくありません。
(もっとも、それだけの技術者であれば、2ちゃんねるのデフォルト匿名のようなふざけたハンドルは使う必要もないと思いますけれど)

すごいな
逆に拍手を送りたい

166 :デフォルトの名無しさん:2013/05/26(日) 13:08:16.80
質問者: 「WebBrowserだとユーザーの設定によってはPDFを表示できませんよね。
     フォーム上にPDFを表示させるための(WebBrowserを使用する以外に)別方法はありますでしょうか?」

774RR:「ユーザーが表示しないって設定してるんだから問題無いだろ。代案はない」



どうみてもキチガイです。ありがとうございました。

167 :デフォルトの名無しさん:2013/05/26(日) 13:17:40.26
>>166
>どうみてもキチガイです。
質問者が?
774RRが?
166が?
俺かい。

168 :デフォルトの名無しさん:2013/05/26(日) 13:42:54.74
質問者だろ?

169 :デフォルトの名無しさん:2013/05/26(日) 14:01:50.56
やっぱお前が気違いだな
質問者は「ブラウザを使用する以外の方法」を聞いてるのに

170 :デフォルトの名無しさん:2013/05/26(日) 14:13:30.08 ID:ym0zCAVh!
この問題詳しいわけじゃないが、Windows FormはOLEコンテナに対応してないので
難しいんじゃないの。

VB6のOLEコンテナを使えば何とかなるのかもしれないが、ライセンス上の懸念があるし
さすがに15年も前の製品を好んで使いたい人は少ないんじゃないか

171 :デフォルトの名無しさん:2013/05/26(日) 14:46:45.53
OLEとか言い出すその発想がすでにVB脳

普通PDFリーダーのマネージド実装を探すだろ?

172 :デフォルトの名無しさん:2013/05/26(日) 15:03:18.57
ビットマップに変換してからピクチャーボックスに表示すれば
いいだけだろ

173 :デフォルトの名無しさん:2013/05/26(日) 15:29:57.52 ID:ym0zCAVh!
技術以前に人間的に幼稚すぎて話にならない

174 :デフォルトの名無しさん:2013/05/26(日) 17:17:51.80
ななしはキチガイということで文句ないよ

175 :デフォルトの名無しさん:2013/05/26(日) 17:19:10.30
774RRって有名人なの?

176 :デフォルトの名無しさん:2013/05/26(日) 21:24:15.92
那奈死も年をとったものよ

177 :デフォルトの名無しさん:2013/05/27(月) 17:49:52.00
774RRは.netに関しては専門外の筈だから
ただ単に初心者を構いたいだけなんだろう
大して上手ではない、おやじゴルファーの教えたがりと一緒さ

178 :デフォルトの名無しさん:2013/05/27(月) 17:57:08.63
ひとつ相談させてください。
下記のコードでピクチャーボックスに画像ファイルを読み込んで
ドラッグで移動、マウスホイールで拡大縮小をさせたいのですが
マウスホイールで拡大縮小するときに真ん中を中心に
拡大したいのですが微妙にずれていってしまいます。
何か計算に間違いがあるでしょうか?
http://codepad.org/twBbvKgX

179 :デフォルトの名無しさん:2013/05/27(月) 20:14:11.79
誤差が積算してるんだろ

180 :デフォルトの名無しさん:2013/05/27(月) 23:48:59.84
わんくまが氏んだようだ
名無しの祟りだ

181 :デフォルトの名無しさん:2013/05/28(火) 08:35:13.98
>>179
ありがとうございます。
ScaleTransformを後にやるようにしたらうまくいきました。

182 :デフォルトの名無しさん:2013/05/28(火) 12:47:31.11
>>172にもあるのですが、
PDFをVB.netを使ってビットマップ変換する手っ取り早い方法があれば教えてください。

183 :デフォルトの名無しさん:2013/05/29(水) 22:16:34.09 ID:u78+zO3T!
ウェブブラウザを起動して自動で

Dim objeBrowser = New SHDocVw.InternetExplorer()
Thread.Sleep(30000); // 一定時間待機
objeBrowser.Quit()


という処理を流しているのですが、
プログラムから Quit がされる前に手動でターゲットとなる objeBrowser が閉じられていると


ex {"起動されたオブジェクトはクライアントから切断されました。 (Exception from HRESULT: 0x80010108 (RPC_E_DISCONNECTED))"} System.Exception

というエラーメッセージが表示されてしまいます。ブラウザが閉じられている状態で Quit を実行しても
エラーが出ない様にする方法とかはありませんか?

184 :デフォルトの名無しさん:2013/05/29(水) 23:23:25.10
閉じられてるのならQuitの必要が無いんじゃないの?

185 :デフォルトの名無しさん:2013/05/29(水) 23:31:08.75
trycatchしとけばいいんじゃないの?

186 :デフォルトの名無しさん:2013/05/29(水) 23:38:21.89 ID:u78+zO3T!
>>184
閉じられているかどうあの判定が面倒

>>185
取り敢えずその方法で行くことにしました。

187 :デフォルトの名無しさん:2013/05/30(木) 09:18:39.07
>閉じられているかどうあの判定が面倒

ふーん……

188 :デフォルトの名無しさん:2013/05/30(木) 19:44:11.65
マのセンスないな

189 :デフォルトの名無しさん:2013/05/30(木) 23:17:06.60
スミマセンス

190 :デフォルトの名無しさん:2013/06/02(日) 12:51:47.71
× 閉じられているかどうあの判定が面倒
○ やり方が解らないおせーて

191 :デフォルトの名無しさん:2013/06/02(日) 12:55:12.64
trycatchが確実

192 :デフォルトの名無しさん:2013/06/07(金) 22:43:39.56
お前らsshでファイル転送どうやってる
とっとと教えろください

193 :デフォルトの名無しさん:2013/06/07(金) 23:41:00.37
sshでファイル転送できるソフト使ってる

194 :デフォルトの名無しさん:2013/06/08(土) 20:53:35.74
>>193
winscp?

195 :デフォルトの名無しさん:2013/06/10(月) 22:02:59.30
プログラミングど素人です。
訳あって現在プログラムをしています

ボタンを押したときに、DataGridViewの選択した行を消したいんですが、
どうしたら良いですか?
DataGridView1.Rows.RemoveAtかなと思ったんですが上手くいきません
選択できる行は一行だけにしてあるので、その一行を消すだけでいいんですが

ちなみにSelectionModeはFullRowSelectにされています
VisualBasic 2010 Expressです

196 :デフォルトの名無しさん:2013/06/10(月) 23:27:40.96
>>195
無料版だからじゃね

197 :195:2013/06/11(火) 00:03:35.79
DataGridView1.Rows.RemoveAt(DataGridView1.CurrentRow.Index)
で何とかなりましたが
もし間違ってたら訂正お願いします

198 :デフォルトの名無しさん:2013/06/11(火) 00:11:54.04
できたのならそれで間違ってないよ
間違ってたら出来ないからな

199 :デフォルトの名無しさん:2013/06/11(火) 01:14:53.52
『なにもしない』は何て書けばいいですか?

削除ボタンを押す

確認メッセージ(OK、キャンセル)
↓           ↓
OK         その他(×、キャンセル)
↓           ↓
削除        削除しない、なにもしない
           ~~~~~~~~~~~~~~~~~~~~~~~~~
というのをやりたいんですが、Elseのあとに何て書けばいいのか分かりません

200 :デフォルトの名無しさん:2013/06/11(火) 01:28:04.30
何も書かなければいい

201 :デフォルトの名無しさん:2013/06/11(火) 02:02:58.06
>>196
サブっ

202 :デフォルトの名無しさん:2013/06/11(火) 02:27:20.31
>>195
>>197
>>199
悪いが基礎サイトかチュートリアルでも一通りやってから
プログラムに取り掛かってくれ。話はそれからだ。

203 :デフォルトの名無しさん:2013/06/11(火) 21:15:57.10
エクセル2013に変えたら、データグリッドから
エクセルシートへの出力が激遅になってしまった。
たった23列3行のデータ出すのに1分以上かかる。
エクセル2010だと数秒なのに…。

204 :デフォルトの名無しさん:2013/06/11(火) 21:40:46.75
こんなところで愚痴ってないでデバッグしろよVB低能

205 :デフォルトの名無しさん:2013/06/14(金) 02:26:52.06
>>203
どのメソッドで時間かかってるか調べて何がそのメソッドを遅くさせているのか調べる

206 :デフォルトの名無しさん:2013/06/14(金) 10:00:20.84
>>203
だいたいにおいてClipboardにコピーしてペーストするようになると早くなるね。
Clipboardを使って良い場合に限るが。

207 :デフォルトの名無しさん:2013/06/14(金) 15:44:19.32
Excel2010の時も、画像貼り付けが
リンク貼り付けになる不具合あったよな。
ほっといてもMSが対応するだろうと思ってたけど
未だに放置してる。
貼り付け方変えて対応したけど。

208 :デフォルトの名無しさん:2013/06/15(土) 10:06:06.74
CSVで吐いといてVBAで表作ればよくね

209 :デフォルトの名無しさん:2013/06/15(土) 11:29:38.46
新しいエクセルだとWebBrowser上で表示も出来ないな。
別ウィンドウでエクセルが起動するわ。

210 :デフォルトの名無しさん:2013/06/18(火) 09:37:29.10
わんくまが市んだようだ

211 :デフォルトの名無しさん:2013/06/19(水) 13:06:07.73
32ビットとか64ビットとかを意識しないプログラムのつもりで作ってたんだけど32ビット時代のDLLをコールしないといけんくなった
ハンドルとかIntptrで管理してる値をIntegerな引数として渡しちゃっていいのかな?

212 :デフォルトの名無しさん:2013/06/19(水) 13:35:26.41
そもそも64bitアプリケーションから32bitのdllはコールできないだろう

213 :デフォルトの名無しさん:2013/06/19(水) 13:37:46.92
意味がよく分からん
DllImport/Declareなら32bitDLLだろうがIntPtrで定義すればいいだろ
32bitDLLのヘッダが本来HANDLEとかにすべきところをintとかDWORDとかで定義しているってこと?
まあ別にこっちがやることは何も変わらないけど

プラットフォームをx86にさえしとけば問題ない

214 :デフォルトの名無しさん:2013/06/19(水) 19:47:20.00
あら?そうなのか・・・
ハンドルとか64ビットなのかと思っては

215 :デフォルトの名無しさん:2013/06/19(水) 21:28:28.17
x86でビルド → 常に32bitプロセス。64bit環境でも32bitプロセスとして起動
x64でビルド → 常に64bitプロセス。つまり32bit環境では動かない
AnyCPUで〃 → 32なら32、64なら64bitプロセスとして起動する

32bitプロセス→IntPtrのサイズは4
64bitプロセス→IntPtrのサイズは8

216 :デフォルトの名無しさん:2013/06/21(金) 20:41:40.32
>>215
なるほど!わかった!
ありがとう!

217 :デフォルトの名無しさん:2013/07/14(日) NY:AN:NY.AN
thread.startしたスレッドは普通内部で無限ループにするけど、もしリターンしたら
thread.stopしなくても自動的にストップすると考えていいの。
 

218 :デフォルトの名無しさん:2013/07/14(日) NY:AN:NY.AN
あたりまえ

219 :デフォルトの名無しさん:2013/07/14(日) NY:AN:NY.AN
なんであたりまえなの?

220 :デフォルトの名無しさん:2013/07/14(日) NY:AN:NY.AN
あたりまえなものに理由など無い

221 :デフォルトの名無しさん:2013/07/14(日) NY:AN:NY.AN
そもそもThreadクラスにStopなんて存在しない
ワーカーメソッドからのreturnがスレッドの終了を意味する

222 :デフォルトの名無しさん:2013/07/14(日) NY:AN:NY.AN
タスクマネージャでスレッド数見てみれば早い

223 :デフォルトの名無しさん:2013/07/15(月) NY:AN:NY.AN
GetsDataCmd = cmd
RaiseEvent Setreq(Me, EventArgs.Empty)

クラスからのイベントで、こんな感じでCmdストリングを渡したいのだが、いまは
Me.GetsDataCmdにセットしてMeを渡してる。
折角EventoAgsがあるのでこいつにセットできんの?

224 :デフォルトの名無しさん:2013/07/15(月) NY:AN:NY.AN
>221
 終了させないといけないの?

225 :デフォルトの名無しさん:2013/07/15(月) NY:AN:NY.AN
>>223
Setreqって意味分からんイベント名だが
そいつがEventHandler(Of CommandEventArgs)とかそんなイベント発火させる形にする

226 :デフォルトの名無しさん:2013/07/15(月) NY:AN:NY.AN
>>223
イベントの引数は、そのイベントを定義するときに自分で決める
必要な引数をとるように定義しろ

227 :デフォルトの名無しさん:2013/07/16(火) NY:AN:NY.AN
>226
 EventArgsを継承してつくらんといかんとははないの?
 ストリングでもなんでも勝手に定義できんの?

228 :デフォルトの名無しさん:2013/07/16(火) NY:AN:NY.AN
できる
ただしライブラリとして公開するようなのならそんなことすんな

229 :デフォルトの名無しさん:2013/07/16(火) NY:AN:NY.AN
単なるデリゲートだからな

230 :デフォルトの名無しさん:2013/07/16(火) NY:AN:NY.AN
はあ? EventArgsってクラスでしょ。デりゲートじゃないよ。

231 :デフォルトの名無しさん:2013/07/16(火) NY:AN:NY.AN
あっ、Eventの宣言ってデりゲートの宣言と同質ってこと?

232 :デフォルトの名無しさん:2013/07/16(火) NY:AN:NY.AN
>229
 あ、そういうこと! 目からうろこ。

233 :デフォルトの名無しさん:2013/07/16(火) NY:AN:NY.AN
HogeEventHandlerは暗黙にDelegateクラスから派生する型。クラスと同レベル
Event Hoge As HogeEventHandlerはメンバ。プロパティと同レベル
HogeはHogeEventHandlerデリゲートのインスタンス

「デリゲート」はデリゲート型を指す場合とデリゲートインスタンスを指す場合の両方があってめんどい

234 :デフォルトの名無しさん:2013/07/17(水) NY:AN:NY.AN
>>233
>「デリゲート」はデリゲート型を指す場合とデリゲートインスタンスを指す場合の両方があってめんどい
普通は文脈で区別がつく
クラスという言葉だってインスタンスの意味で使われてる場合もあるだろ

235 :デフォルトの名無しさん:2013/07/17(水) NY:AN:NY.AN
>>234
ねーよ
それはVBerだけ

236 :デフォルトの名無しさん:2013/07/17(水) NY:AN:NY.AN
慣れれば文脈で十分だけど問題は初心者なんだよなぁ

237 :デフォルトの名無しさん:2013/07/17(水) NY:AN:NY.AN
初心者にとって型かインスタンスかの違いってあんまり気にしなくて良い気もするが
ちなみにデリゲートってインスタンスなのか?俺のイメージ的には値なんだが

238 :デフォルトの名無しさん:2013/07/17(水) NY:AN:NY.AN
イメージ言われても…
C#の記法だと分かりやすいか?
EventHandler handler = new EventHandler(methodName);
普通のオブジェクトと変わらんよ コンストラクタ引数にメソッド渡すって違いがあるだけだ

ちなみにC#/VB的には参照型でも値型でもインスタンスで良い

239 :デフォルトの名無しさん:2013/07/17(水) NY:AN:NY.AN
値型のインスタンス...(たとえば)Integerのインスタンス...しっくりこないな
間違ってないのは解るんだが
でも構造体のインスタンスは割としっくりする。この感覚はなんだろ
デリゲートの実体はSystem.Delegateクラスらしいから、普通のオブジェクトと同じなのも間違ってないんだが
この感覚がVB脳ってやつなのか

240 :デフォルトの名無しさん:2013/07/17(水) NY:AN:NY.AN
しっくりしっくりしっくりしっくりしっくりしっくりしっくりしっくり

241 :デフォルトの名無しさん:2013/07/17(水) NY:AN:NY.AN
デリゲートは内部的にはSystem.Delegateクラスから派生した特別なクラスとして実装されてるが、
概念的にはデリゲート型はデリゲート型であってクラスとは別物と考えるのが正しい
クラス型、列挙型、構造体型と並んで型の一種なんだよ
つまりEventArgs型を"EventArgsクラス"と呼ぶのと同じようにEventHandler型を"EventHandlerデリゲート"と呼ぶわけ

242 :デフォルトの名無しさん:2013/07/17(水) NY:AN:NY.AN
デリゲートやイベントがわからんという奴は
この辺を読んで自分でイベントをスクラッチで実装してみるといいよ
一目瞭然だから
http://msdn.microsoft.com/ja-jp/library/yt1k2w4e.aspx

243 :デフォルトの名無しさん:2013/07/18(木) NY:AN:NY.AN
Delegateとか
C++のoperator()のように
関数のように振舞えるクラスを作る方法はありませんか?

244 :デフォルトの名無しさん:2013/07/18(木) NY:AN:NY.AN
Expression?
知らんけど。

245 :デフォルトの名無しさん:2013/07/18(木) NY:AN:NY.AN
>>243
関数のように振舞えるクラスってのがどんなのをイメージしてるかわからん
C++のoperator()って演算子オーバーロードだよな?
だったらVB.Netでも出来るぞ

246 :デフォルトの名無しさん:2013/07/18(木) NY:AN:NY.AN
さすがに()演算子のオーバーロードはできないよー

247 :デフォルトの名無しさん:2013/07/18(木) NY:AN:NY.AN
>>246
C++では括弧が演算子でそれもオーバーロードできるってことか
括弧演算子の使いかたが解らんから何とも言えんが、そこまで特殊な事はさすがに出来んのじゃないかな

248 :デフォルトの名無しさん:2013/07/18(木) NY:AN:NY.AN
括弧演算子ググったけど、キャストの演算子か
だったらVB.Netでも出来るはず

249 :デフォルトの名無しさん:2013/07/18(木) NY:AN:NY.AN
型変換はまた別
調べたいなら関数呼び出し演算子とか関数オブジェクトとか調べれ

250 :デフォルトの名無しさん:2013/07/18(木) NY:AN:NY.AN
C++の話とかどうでもいいけど
単にSharedなメソッドで良いんじゃないのか

251 :デフォルトの名無しさん:2013/07/18(木) NY:AN:NY.AN
お勧めしないが標準モジュール使うって方法もあるけど

252 :243:2013/07/19(金) NY:AN:NY.AN
やりたいことは、
@ ()で関数呼出しのように出来る
A . で独自のメンバにアクセス出来る
です。

標準モジュールの関数やメソッド自体は
Aをできないので代替手段になりません。

クラスが関数のように振舞う方法がなければ
関数やメソッドに . をつけて、独自のメンバを実装する
方法がないでしょうか。

Delegateを継承しようかと思ったのですが
できませんでした。

253 :デフォルトの名無しさん:2013/07/19(金) NY:AN:NY.AN
(1)の必然性が不明
MustInheritクラスで十分だろ

254 :デフォルトの名無しさん:2013/07/19(金) NY:AN:NY.AN
>>252
class.func()じゃだめでclass()で呼び出したいのか?
なぜそんな事がしたいのかわからんな。すなおにclass.func()で呼び出せばいいんじゃね

標準モジュールのメンバって、モジュール名.メンバ名で呼び出せた気がするが
インスタンスメソッドじゃないとダメなのか?

どう考えても普通のクラスにFunctionとプロパティで良い気がするんだが

255 :デフォルトの名無しさん:2013/07/19(金) NY:AN:NY.AN
>>252
レス全部読んでないけど何でそんなことがしたいのか理解できない。

C#と違ってVBはクラスの中にクラス名と同じ静的メソッドを書けるから、名前空間のインポートを
工夫すれば見かけ上それっぽいことは可能だと思うけど...

っていうか
>関数やメソッドに . をつけて、独自のメンバを実装する方法

これは何を言ってるんだろう。
メソッドチェーンとは違うの?

256 :デフォルトの名無しさん:2013/07/19(金) NY:AN:NY.AN
VB脳の言うことだ
どうせたいしたことは言ってない

257 :デフォルトの名無しさん:2013/07/19(金) NY:AN:NY.AN
普通の書き方
 obj.Foo = "bar"
 obj.Exec("hoge")

243が欲しい書き方
 obj.Foo = "bar"
 obj("hoge")

ってことなら、「そんなことするな」でFAだろう。

258 :デフォルトの名無しさん:2013/07/20(土) NY:AN:NY.AN
VBで図形と図形を線でつなぐアレやろうとしたら積んだ

259 :デフォルトの名無しさん:2013/07/20(土) NY:AN:NY.AN
リブルラブルか

260 :デフォルトの名無しさん:2013/07/20(土) NY:AN:NY.AN
>>259
また懐かしいゲームを

261 :デフォルトの名無しさん:2013/07/21(日) NY:AN:NY.AN
アクティブウィンドウのキャプションを取得する方法を教えてください

262 :デフォルトの名無しさん:2013/07/21(日) NY:AN:NY.AN
findwindowとかgetwindowtitleとか

263 :デフォルトの名無しさん:2013/07/21(日) NY:AN:NY.AN
getwindowtextを使ってハンドルを渡しても
PInvokeStackImbalanceが検出されました
とでます

264 :デフォルトの名無しさん:2013/07/21(日) NY:AN:NY.AN
P/Invokeの宣言が間違ってるんだろ

265 :243:2013/07/22(月) NY:AN:NY.AN
IndexerNameAttributeでできるみたいです。

書方について否定される方が多いようですが
コレクションでは当り前の書方ですよね。

266 :デフォルトの名無しさん:2013/07/22(月) NY:AN:NY.AN
何言っちゃってんの

267 :デフォルトの名無しさん:2013/07/22(月) NY:AN:NY.AN
>>265
インデクサはVB.NETではデフォルトプロパティとして実装されてる
デフォルトプロパティで出来るんじゃないかと思ったけど、
 デフォルトはプロパティに限られSubやFunctionではむり
 呼び出し時の引数省略不可能(たぶん)
の2点を考えて俺は無理だと判断したんだが
まあ、それで出来てるんなら良いんじゃね

>コレクションでは当り前の書方ですよね。
そもそもどんな書き方したいのかお前ははっきり明示してないわけだが
他の言語で当たり前でも、少なくともVB.NETではあり得ないような書き方を
したがってると皆に判断されてるわけだが

268 :243:2013/07/22(月) NY:AN:NY.AN
おっしゃるとおり、プロパティでしか使えませんでした。
VB6ではSubでもFunctionでもデフォルトにできたので、
当然出来ると勘違いしておりました。

書方は最初にも書きましたが、
Delegateのように関数のように振舞う
または、C++のoperator()のように、関数のように振舞うです。

269 :デフォルトの名無しさん:2013/07/22(月) NY:AN:NY.AN
コレクションのアクセスって「関数のような」ふるまいなのかね
むしろ添字アクセス→ポインタ操作のメタファーじゃないか

270 :243:2013/07/22(月) NY:AN:NY.AN
他の言語や旧バージョンの書方をまねしようとするのが
間違いということですね。
私のつまらぬ要求でみなさんを不快にさせて
すみませんでした。

271 :デフォルトの名無しさん:2013/07/22(月) NY:AN:NY.AN
EventArgsのメンバもっと増やせやゴルァ

272 :デフォルトの名無しさん:2013/07/22(月) NY:AN:NY.AN
継承すりゃいいじゃん

273 :デフォルトの名無しさん:2013/07/22(月) NY:AN:NY.AN
>>268
だから具体的なコード書いて示せよ

274 :デフォルトの名無しさん:2013/07/22(月) NY:AN:NY.AN
>>269
引数をとり、なんらかのオブジェクトを返す
この動作だけを見るなら関数と言えなくはないんじゃないか

275 :デフォルトの名無しさん:2013/07/22(月) NY:AN:NY.AN
>>270
問題はそこじゃなくて、端的に何を言ってるのかよく分か(

276 :243:2013/07/23(火) NY:AN:NY.AN
まだ質問に付合ってくださるようで、感謝します。

具体的には以下のような書方の出来るクラスFuncObjを定義したいです。

Dim a As FuncObj

'関数のように使える
a() '引数なし関数呼出し
Dim x As Long = a(1) '引数あり関数呼出し

'クラスメンバにもアクセス出来る
a.field1 = 1 'メンバフィールドに代入
a.property1 = "aaa" ’メンバプロパティに代入
a.func1(1) ’メンバ関数呼出し

277 :デフォルトの名無しさん:2013/07/23(火) NY:AN:NY.AN
他の言語使えよ

278 :デフォルトの名無しさん:2013/07/23(火) NY:AN:NY.AN
>>276
>a() '引数なし関数呼出し
>Dim x As Long = a(1) '引数あり関数呼出し
これが
a.func()やx=a.func(1)ではダメな理由は何だ?
他の言語で出来るからって理由なら、その言語使えってだけの話だが

279 :243:2013/07/23(火) NY:AN:NY.AN
理由は Collection.Item(n) に Collection(n) という書方が用意されているのと同じです。
もちろん、C++でそのように書けるのも、
旧バージョンで出来たというのも理由です。

280 :デフォルトの名無しさん:2013/07/23(火) NY:AN:NY.AN
>>276
相変らず何を言ってるのかちょっと意味不明な気が...

普通に読む限り、>>243の変数aの動作は、普通にインデクサ(VBの場合はデフォルトのプロパティだけど)
が定義されたクラスFuncObjの普通の動作にしか思えないんだけど...

質問の意図は、Newしなくても、
> Dim a As FuncObj

これだけでaがnullじゃないことを保証したいってこと?
それならクラスじゃなくて構造体にすればそうなりますけど...

281 :デフォルトの名無しさん:2013/07/23(火) NY:AN:NY.AN
コレクションアクセスに()を使うように設計した馬鹿のせいでこういう馬鹿が湧くんだよ
反省しろ

282 :デフォルトの名無しさん:2013/07/23(火) NY:AN:NY.AN
>>279
>理由は Collection.Item(n) に Collection(n) という書方が用意されているのと同じです。
なにとなにがどう同じという主張なのかわからん
コレクションにインデクサがあることと、オブジェクトそのもの(あるいはインスタンス?)が
関数として呼び出せる事がどうつながるんだ?

.NETではインデクサをデフォルトプロパティとして扱う事で、互換性を保とうとしてるが
VB6でのデフォルトプロパティ正確には.NETではなくなっている
VB6の書き方がしたいならVB6使ってください
C++の書き方がしたいならC++使ってください

とここまで書いて思ったんだが、C++/CLIってあったよな
あれで作ったクラスってVB.NETとかC#とかから呼び出せんのかな?
呼び出せるならその関数オブジェクトとかいうメソッドどうやって呼ぶんだろ

>>281
デフォルトプロパティの互換性を最大限実現するためには仕方なかったんじゃない
よくも悪くも過去のVBに引っ張られる言語、それがVB.NET

283 :デフォルトの名無しさん:2013/07/23(火) NY:AN:NY.AN
>>282
> とここまで書いて思ったんだが、C++/CLIってあったよな
> あれで作ったクラスってVB.NETとかC#とかから呼び出せんのかな?
> 呼び出せるならその関数オブジェクトとかいうメソッドどうやって呼ぶんだろ
hoge.op_FunctionCall(...)で呼び出す

284 :243:2013/07/24(水) NY:AN:NY.AN
>>280
すいません、Newの書き忘れです。

インデクサはプロパティにしか適用できないみたいなので
x = a(1)
は出来ても
x = a()
a(1)
という書方が出来ないようです。

285 :243:2013/07/24(水) NY:AN:NY.AN
Delegateの呼出しの実体は、
Invokeというメソッドの呼出しようです。

しかし、Delegateはユーザーが継承できません。

インデクサもプロパティのみで、関数には使えません。

このようにインスタンス名にかっこを付けて、
関数のようなものを呼出す例はいくつかありますが、
それをユーザーが独自に定義できないのは
設計思想なんでしょうね。

286 :デフォルトの名無しさん:2013/07/24(水) NY:AN:NY.AN
くだらねえこと考えてないでクソして寝ちまえ

メソッド->動詞のメタファー
プロパティ->形容詞のメタファー
だとしたら クラス名() はなんなんだよ意味不明だろ死ねよ
それともデフォルト機能に毒されたVB厨かよハゲが

287 :デフォルトの名無しさん:2013/07/24(水) NY:AN:NY.AN
>>285
>このようにインスタンス名にかっこを付けて、
>関数のようなものを呼出す例はいくつかありますが
だからそれ他の言語の話でしょ
独自に定義できないんじゃなくて、VB.NETにはそんなものないの
そんなにC++が好きならC++/CLIでやっとけよ

288 :デフォルトの名無しさん:2013/07/24(水) NY:AN:NY.AN
>>283
おお、貴重な情報をありがとう
op_FunctionCallでググっても日本語1件しかヒットしないぜ
これは
C++/CLIとの相互運用が人気ないのか
C++でも関数オブジェクトとやらはめったに使わないのか
そもそもC++/CLIが使われてないのかw

289 :243:2013/07/24(水) NY:AN:NY.AN
>>このようにインスタンス名にかっこを付けて、
>>関数のようなものを呼出す例はいくつかありますが
>だからそれ他の言語の話でしょ

Collectionのインスタンスにかっこを付けて要素を取出すのも
Delegateのインスタンスにかっこを付けて呼出せるのも
VB.netの話ですよ。

290 :デフォルトの名無しさん:2013/07/24(水) NY:AN:NY.AN
ツマンネ

291 :デフォルトの名無しさん:2013/07/24(水) NY:AN:NY.AN
>>289
少なくとも、VB.NETでは
インデクサはデフォルトプロパティの省略
デレゲートはクラスとは別の型

これらを「関数のようなもの」でひとくくりにするから違和感を感じるんじゃね
違うものは違う書き方するのがVB流なんだが、そう考えると>>281は真実をついてるのか

292 :デフォルトの名無しさん:2013/07/24(水) NY:AN:NY.AN
270でいなくなったと思ったのに、
273とか275が呼び止めるから、
まだいすわってるじゃん。

VBで出来ないことを無理にやろうとしてるやつも、
書き方がおかしいとか言って、全く質問に答えられないやつも、
もう黙っとけ。

293 :デフォルトの名無しさん:2013/07/25(木) NY:AN:NY.AN
画像をクリックするたびに該当Pictureboxを有効化するってので
画像クリック picturebox1有効化
2回目画像クリック picturenox2有効化みたいのやりたいんだけど、
どうすればいいんだろ

294 :デフォルトの名無しさん:2013/07/25(木) NY:AN:NY.AN
あ、なんだ糞簡単な事だった
アホな質問してすまん

295 :デフォルトの名無しさん:2013/07/26(金) NY:AN:NY.AN
dim byteData() as byte
dim byteData as byte()

これ意味的にどう違うの?

296 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
>>295
同じ
前者はVB6脳が染み付いていてオブジェクト指向を理解してない人のために仕方なく用意されているレガシーな書き方
どちらもbyte()型の変数byteDataを宣言しているので、意味的には後者が正しい

297 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
特にない

298 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
VBと似た事情で、C脳が染み付いた連中のためにJavaでも前者とほぼ同じ書き方ができるが、
正しいとされるのは後者の表記
前者は私はオブジェクト指向を理解していませんという宣言になる

299 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
panelに線を描画しようとするとうまく行かないな

300 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
まるで鉛筆でなぞるような線になる

イミフ

301 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
(1)dobonの例から
'ボタンコントロール配列のフィールドを作成
Private testButtons() As System.Windows.Forms.Button

(2)ボタンコントロールと同様に295のbyteDataはbyteオブジェクトの配列と考えられる。

(3)1,2から正しいのは前者と考えられる。
  dim byteData() as byte    正しい。
  dim byteData as byte()
  
 従って
  296,298の説明は真っ赤な嘘、つまり誤りとするのが妥当と思える。

302 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
>>301
間違い。dobonの中の人は理解した上でVBerに馴染みの深い方を使っているんだろうが、
VBerには君みたいに理解せずに前者を使ってる人がいるのが問題なんだよ。
(1)と完全に等価なコードをC#で書くと
private System.Windows.Forms.Button[] testButtons;
こうなる。testButtonsがButton[]型なのは明らか。Button testButtons[]のような表記は許されない。
ちなみにC#の元ネタのJavaではどっちでもいける(>>298)んだが、一般的に前者は意味的におかしいので良くないとされていて
C#ではなるべく過去の負の遺産を整理しようということで前者は許されなくなった。

303 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
C#ではfixed byte byteData[5];なんてのもあって
字面の通り本物のCスタイルの配列を作ってポインタでアクセスできたりするが
VBの Dim byteData(5) As Byte (これはByte[] byteData = new Byte[5];と等価)とは全く意味が違う

304 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
VB.NETなんてどうせ低能しか使わないんだから
どっちでもいくね?

305 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
VBerおなじみの"配列変数"って今もう存在しないんだよな

306 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
MSDNでは、配列の宣言方法は前者とされている
サンプルコード等も配列の宣言は前者の方法でなされてたはず
この辺は言語としての設計思想の問題で、正しいとか間違ってるという問題ではないんだが

他人をけなすと自分が偉く感じれるからな

307 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
ユーザーのレベルや慣習を考慮するのも設計思想のうちだからな
VBから移行する人の敷居を下げるためにあえてC#とは別に作られたのがVB.NETだったんだから
別に間違ってはいない

308 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
>>306
つーか、自分の価値観に反するもの・合わないもの=悪・攻撃対象
と見なす短絡的な人間が多いのだよ、技術者系は特にね。

世の中にあるものは全てつながっていて、何かを攻撃することは
回り回って自分を攻撃することだと気づく日がそのうち来るのだけど、
かなり歳を取ってからだから、無理もないのだがな。

309 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
プログラミング言語の進化なんて「〜言語の〜は糞だから〜にした」の歴史だろう
言語に限らないけど

310 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
敷居を下げるためにVB6に合わせるのも結構だし
非合理だからやめろというのも結構だが
人格だけを攻撃するのはただの思考停止だよ >>308 みたいなの含めてね

311 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
>>308は技術者の性格に対する一般論
>>310>>308への人格攻撃
まあ、どっちもスレ違いなので要りません

312 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
richitextboxでキー入力をするとプププと音がする。
KeyPressイベントやKeyDownイベントで
e.Handled = True
にすると音がでなくなる。
これは何故なの? これをするとなんか他に影響ある?

313 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
>>310
敷居を下げる 大間違い。
鴨居を下げる 大正解。

314 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
>302
宣言の形式とアクセスの形式が同一の方が理解しやすい。
人間が理解しやすいように整理したのがオブジェクト指向の目的の一つなのだから
C#のように宣言の形式とアクセス形式を態々変えるのは間抜けであってオブジェクト指向に
反する。

315 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
態々と書くやつでまともなことを言うやつがいない法則。

316 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
>>306,>>308
言っちゃ悪いけどダメな人の典型だわ。
基本的に>>302の言うとおり。
他人を分析する前に自分がOOも理解してないことを恥じた方がいいと思うけど。

今時OOなんて常識だと思うけどVBの世界じゃそうじゃないんだな。

ちなみに、>>303は何を言ってるのか分からん。
この人はこの人で何か勘違いしてる気がする。

317 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
副詞をわざわざ漢字で書くやつは知的障害者

318 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
()の位置でオブジェクト指向の理解度を判断できるVBはいい言語。

319 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
俺の場合コピペ元による

320 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
俺はDim i() as integer この形式一択。
ずーとこれでやってる。そんだけ。

321 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
俺はリスト使うからもう配列は使ってない。

322 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
C#で構造体のメンバにfixed byte byteData[5];と宣言すると
構造体のレイアウトはbyte型の変数を5つ並べて宣言したのと同じになり、byteDataは先頭要素のポインタを表す
C言語の配列と同じだ
VB.NETにこういうのはなく、配列といえば配列オブジェクトしかない

323 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
配列ってのは言語要素であって、OOと直接関係ないわけだが

324 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
>>323
配列はオブジェクト
昔のVBのように変数が配列なんじゃない

325 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
ちょっと待ってくれ
dim byteData() as byte  
これって配列じゃないの?

326 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
>>325
決してbyteDataが配列なんではなくて配列の入れ物を用意しただけだね
詳しく言うと、byte()という配列型のオブジェクトへの参照を入れるための変数を宣言している
変数が配列なんじゃなくて、あくまでどこかにある配列オブジェクトのハンドルを入れる変数

327 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
>>326
ありがとう。
一応、私の認識で間違ってなかったみたい。
議論の内容に着いて行けずに、混乱してしまった。

328 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
初心者向けの説明でよくある、変数並べるのは大変だから配列にしましょう変数並べたのと同じですってのは
使い方の説明としてはもちろん間違ってなくて、言語仕様上の概念としてもCやVB6の頃はまあその通りだったんだが
最近の言語だと正確には間違いなんだよな

329 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
>>322
構造体中のインライン配列の話か。

VBの場合ポインタが使えないから構造体の中のインライン配列が必要になるのは
アンマネージ関数呼ぶ時だけだけど、その場合はVBFixedArrayAttributeが使えたはず

330 :おい無視すんなよ:2013/07/27(土) NY:AN:NY.AN
richitextboxでキー入力をするとプププと音がする。
KeyPressイベントやKeyDownイベントで
e.Handled = True
にすると音がでなくなる。
これは何故なの? これをするとなんか他に影響ある?

331 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
>>330
それ人に聞かなきゃ分からない話か?

332 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
>>328
言語仕様上の概念があるから配列が規定されてるわけで
実体はSystem.Arrayだけどそれを意識することはないでしょ
純粋なOO言語なら間違いかもしれんが、少なくともVB.NETにおいては間違いではない

とかいうとまたVB脳とか言うやつがいるんだろうな

333 :デフォルトの名無しさん:2013/07/28(日) NY:AN:NY.AN
>>331
配列の実体はSystem.Arrayじゃねえよ
Byteの配列はCLR的にもByte()型だ
型情報によって形式的にSystem.Arrayを継承してるが、
要素の型や次元が異なれば明確に別の型だ

334 :デフォルトの名無しさん:2013/07/28(日) NY:AN:NY.AN
.NETではクラス、値型、ポインタ、デリゲートのように色々な型のグループがあるが
それらと並んで「配列型」というグループがあり、Byte()やString(,)などはそれに含まれる配列型の一つ
言語側でもっと大掛かりな仕組みでVB6のような配列変数を再現してるなら>>331の言ってるようなこともわかるけど、
実際は変数宣言で括弧の場所が違っててもコンパイラが読み替えますよというだけの
非常に薄い構文糖衣にすぎないからなあ

335 :デフォルトの名無しさん:2013/07/28(日) NY:AN:NY.AN
>333
そういうことを断定的に言えるにはどこをどう調べたらわかるんだ?

>334
「構文糖衣」って始めて聴いた。なかなか文学的表現だな。

336 :デフォルトの名無しさん:2013/07/28(日) NY:AN:NY.AN
>>334
そう言う言い方をするのであれば
dim byteData() as byte はVBとしての配列
dim byteData as byte() は.NETの配列型をサポートしてるだけ
まあVBとしての配列は当然.NETの配列型で実装されているわけだが
下は.NETのサポートの一環でVB.NETとしての言語仕様での配列ではない
だからMSDNではVB.NETの配列はすべて上の書き方なわけだ

コンパイル後の結果が同じでも意味合いが違うので単なるシンタックスシュガーという事ではない

337 :デフォルトの名無しさん:2013/07/28(日) NY:AN:NY.AN
糖衣構文という言葉をを初めて聞いたプログラマって...


>>336
何だよVBとしての配列って。
デタラメを言うなって。
>>334の言うとおり単にコンパイラが読み替えてくれてるだけ。

338 :デフォルトの名無しさん:2013/07/28(日) NY:AN:NY.AN
>>337
>何だよVBとしての配列って
Visual Basic における配列
http://msdn.microsoft.com/ja-jp/library/vstudio/wak0wfyt(v=vs.100).aspx
そこにこう書いてあるだろ
>変数名に続けて 1 組以上のかっこを記述することにより、その変数がスカラー (1 つの値を含む変数) ではなく配列を保持することを示します

339 :デフォルトの名無しさん:2013/07/28(日) NY:AN:NY.AN
ちょっと何言ってるのかわかり(w
これがVB脳か

340 :デフォルトの名無しさん:2013/07/28(日) NY:AN:NY.AN
VBとしての配列

これは概念としての話だろ?
コードとかコンパイル結果とは無関係なんだよな?な?

341 :デフォルトの名無しさん:2013/07/28(日) NY:AN:NY.AN
コードは書き方にかかわるから無関係じゃないだろ
その結果二通りの書き方が出来てるわけで

コンパイル結果は同じ
それを糖衣構文と言えるかどうかはしらん

342 :デフォルトの名無しさん:2013/07/28(日) NY:AN:NY.AN
概念もクソも宣言を読み替えてくれるってだけだからな
構文糖衣とよぶのすらおこがましい、表記の揺れ程度のレベル

343 :デフォルトの名無しさん:2013/07/28(日) NY:AN:NY.AN
その読み替えこそが糖衣構文と呼ばれるものの定義そのもの。
何を寝ぼけたこと言ってるの。

344 :デフォルトの名無しさん:2013/07/28(日) NY:AN:NY.AN
特に楽になってるわけでも分かりやすくなってるわけでもないからね
表記のバリエーションだよ

345 :デフォルトの名無しさん:2013/07/29(月) NY:AN:NY.AN
質問: VB.net Trimのバグみたい???。

rxdatには :TIMEREQ**\rのバイトデータが入っている。

'受信データから先頭の10バイトのコマンドを抜き出してストリングに変換する。
Dim cmdbytes As Byte() = New Byte(10) {}
Array.Copy(rdat, cmdbytes, 10)
Dim rxcmd As String = System.Text.Encoding.GetEncoding("SHIFT-JIS").GetString(cmdbytes)

rxcmd = rxcmd.TrimEnd("*", " ", vbCr, vbLf) 'コマンドのケツについている不要文字をトリムする。

Select Case rxcmd
Case ":TIMEREQ"
Case Else
end select

":TIMEREQ"を掴みたいのだが掴めない。何故でしょう?
 というかもっとスマートなコマンド分離ってないんでしょうか?

346 :デフォルトの名無しさん:2013/07/29(月) NY:AN:NY.AN
>>345
スマートなコマンド分離ってのがどういう事かわからんが
おそらくバグってるのはお前だ

元データは11文字、cmdbytesも(0 to 10)で11個
Array.Copyでコピーしてるのは10個
だからrxcmdの最後にヌル文字入ってる
ヌル文字がトリム対象になってないので、最後のヌル文字まで出力される

まあ、こういう事だと
元のデータがどういう形式か知らんが、わざわざArray.Copyとかする理由があるのかね

347 :デフォルトの名無しさん:2013/07/29(月) NY:AN:NY.AN
低能はすぐフレームワークのバグにするよなw
Trimする前のrxcmdはどうなってんだよって話

348 :デフォルトの名無しさん:2013/07/29(月) NY:AN:NY.AN
>346
 そういうことか? 11バイト生成していたのか? それにしてもNULLも
文字列になるんだね。
 
>まあ、こういう事だと
>元のデータがどういう形式か知らんが、わざわざArray.Copyとかする理由があるのかね

先頭だけストリングにするのにコピーしてるんだよ。通常のコマンドは先頭10バイト
につづいてバイナリで2Kバイト位飛んでくるので全部変換すると効率悪そうなんでね。

>スマートなコマンド分離ってのがどういう事かわからんが
>おそらくバグってるのはお前だ

スマートの定義だが、視認性が良くて尚且つ効率もいいということかな。
たとえば10バイト確保するのに、9って書かねばならんのは視認性が悪いので、まあ
スマートでは無いと言えるかも。

349 :デフォルトの名無しさん:2013/07/29(月) NY:AN:NY.AN
>347
 VBってフレームワークなのか?

350 :デフォルトの名無しさん:2013/07/29(月) NY:AN:NY.AN
>>348
スマートの定義を聞いたんじゃなくて、コマンド分離って何だよと言う事だったんだが
まあ好きにしてくれ

351 :デフォルトの名無しさん:2013/07/29(月) NY:AN:NY.AN
コマンド分離がなんだというと、コマンドとそれ以外のデータが合体した通信データ
からコマンドを抽出することだな。コマンドによってそれに続く処理を
切り替えるためだね。

352 :デフォルトの名無しさん:2013/07/29(月) NY:AN:NY.AN
Select caseでバイトコンペアができないのか? ってはなしだな。
Select case bytedata.subbyte(0,10)
case (Byte)":TIMEREQ"
みたいに拡張できんのか?

353 :デフォルトの名無しさん:2013/07/29(月) NY:AN:NY.AN
ステートメントは拡張できんからなぁ
やるなら
Select Case True
Case Myfunc(":TIMEREQ",rxdat)
Case Myfunc(":XXXXXXX",rxdat)
みたいな感じじゃね

354 :デフォルトの名無しさん:2013/07/29(月) NY:AN:NY.AN
データを格納するクラスを作って
コマンドごとに派生クラスつくるか、コマンド種別返すプロパティ作るかしろよ

355 :デフォルトの名無しさん:2013/07/29(月) NY:AN:NY.AN
rxcmd = rxcmd.TrimEnd("*", " ", vbCr, vbLf)

rxcmd = rxcmd.TrimEnd("*", " ", vbCr, vbLf, vbNullChar)
にすればいいんじゃね?

356 :デフォルトの名無しさん:2013/07/29(月) NY:AN:NY.AN
>>349
System.String.TrimEndはmscorlib.dllに実装されている.net frameworkの機能でしょうが

357 :デフォルトの名無しさん:2013/07/31(水) NY:AN:NY.AN
TabControlでタブを押さずにタブを切り替える方法ないですかね?
別のイベントに割り当てるみたいな

358 :デフォルトの名無しさん:2013/07/31(水) NY:AN:NY.AN
意味が分からんが
SelectedIndex変えればタブも変わる

359 :デフォルトの名無しさん:2013/07/31(水) NY:AN:NY.AN
>>358
どうも、解決しました

360 :デフォルトの名無しさん:2013/08/01(木) NY:AN:NY.AN
マウスドラッグで画像を移動させてる途中に他の画像とぶつかったら、すり抜けさせず動かしてる画像を止めるみたいな処理はどうやればできるんだろう
マウスムーブ時に判定させてやりゃいいのかな

361 :デフォルトの名無しさん:2013/08/02(金) NY:AN:NY.AN
>>360
ドラグして画像を動かしていくときの描画処理でやりゃいいんじゃね?

362 :デフォルトの名無しさん:2013/08/03(土) NY:AN:NY.AN
この課題がわかりません。
' S = 1+ 1/2の2乗 + 1/3の2乗 + ・・・ + 1/nの2乗+ 1/(n+1) 2乗 + ・・・ を計算し,
'表示するプログラムを作成してください。計算はS のn項までの和と(n + 1)項までの和の差が
' 1/100000 より小さくなるまで続けるものとし,その時の S と n を表示してください。

363 :デフォルトの名無しさん:2013/08/03(土) NY:AN:NY.AN
むしろ何が分からんのか分からん

364 :デフォルトの名無しさん:2013/08/03(土) NY:AN:NY.AN
>>362
Dim S = 0
Dim n = 1
Do
 Dim i = (1 / n) ^ 2
 If i < 1 / 100000 Then
  Exit Do
 End If
 S += i
 n += 1
Loop

365 :デフォルトの名無しさん:2013/08/03(土) NY:AN:NY.AN
今更vb.netやれと言われたのですがお勧めの入門書なんかありますか。
もともとJavaWebがメイン仕事でExcelとAccessのVBAなら結構わかるというレベルです。

366 :デフォルトの名無しさん:2013/08/03(土) NY:AN:NY.AN
ならwebの情報だけで十分でしょ。

っていうかもし選べるなら、どうせやるならC#の方がいいような。
VBにもいい点はあるが、記述が冗長になる欠点がVB9以降は特に足かせになってる。

367 :デフォルトの名無しさん:2013/08/03(土) NY:AN:NY.AN
JavaとC#はそっくりだからな

368 :365:2013/08/03(土) NY:AN:NY.AN
>>366
C#は会社がvbな事情により無理です・・・。選べないっす…。
とりあえず入門ページいくつか見つけたので触ってみてます。
プログラミング自体は何とかなるかな…。とりあえずは後環境面を勉強しなければ。

サンクス。

369 :デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
そんな会社は潰しちゃったほうがいいな

370 :デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
VBメインの会社なんてあるのか
C#のほうがいろんな面でいいと思うんだけど
いいとこ取りしてるし

371 :デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
それだと日本のITのほとんどが潰れる
理想的にはVBいらないのは同意だが

372 :デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
VBもC#も、ほぼ一緒じゃん
フランス語かドイツ語かの違いでしかないだろ

どちらを選択しようが、成果物に品質の違いが出来ない。

ところで C# に With 実装してくれないのかね
あれが便利きわまりないので、VB 使ってる

C#もC++も使えるけどね。

373 :デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
検討の結果却下されたらしいよ>C#にWith
お前は少数派だったってことだ

374 :デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
Withが便利なんじゃなくて、
WithがないとどうしようもないのがVB

375 :デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
>WithがないとどうしようもないのがVB

??
Using 使ってもいいんだけど
わざわざ変数を宣言するまでもない、ってこと多いんだよね

376 :デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
お前がどう思おうが結構だが
事実として、要望が少なく、設計チームがメリットが少ないと判断したから省かれた
初期化はプロパティ初期化子が付いてWithと変わらなくなったしな

377 :デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
VB.netでSelect Caseの区間指定ができるのはありがたいんだよな。
なんでC#のswitchは区間指定できないんだろ

378 :デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
C# にだけあって VB では出来ない記述方法って何がある?

379 :デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
三項演算子?はあるんだっけ?

あと
int i, j, k, l;
i = j = k = 0;
みたいなの

380 :デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
>>379
3項演算子はあるな
Dim x = If(condition, 10, 20)

Iifとの違いが微妙すぎてわかりづらいが
こちらが ? : 互換

381 :デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
int i, j, k, l;

Dim i, j, k, l As Integer


i = j = k = 0;
って、i、j、k すべて 0 を代入するの?
なんて初めて知ったけど使うヤツいるのか

382 :デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
同時に値を入れるというニュアンスで例示したんじゃなくて、
i = 0 自体が式で値として評価されるという感じ

int c;
while( 0 != ( c = fileStream.Read() ) )
{...}

みたいな感じで使うんだけど

383 :デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
C や C# の場合は代入演算子と比較演算子が
表記上区別されるからそういう書き方が出来るんだよ
VBでは両方とも = だから文脈でどちらか決まる

384 :デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
ああ、評価なら VB も似たように使えるよ

Dim c As Integer
Do While (c = fileStream.Read())

Loop

385 :384:2013/08/04(日) NY:AN:NY.AN
失礼、c に代入したうえで、0 かどうかの評価、ってことか
じゃ>>384 はダメだね

386 :デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
>>380
正確にはIIfは演算子ではなくて関数。Ifは演算子と定義されているけど
違いはショートサーキットするかどうか

>>381-383
C系の言語では代入式が値を持つ
VBでは代入式は値をもたないので、値を評価しようとした式は比較式として評価される

387 :デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
if(!c--) {
  〜
}

の可読性は最悪だろ。
こんな馬鹿げた記述を許しておいて、わざわざVBをけなす理由が分からん

388 :デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
フォーム1をスクロールしても配置されてるパネルとその上におかれた部品がが動かないようにするのはどうしればいい?
ドックさせるとうまくいかない

389 :デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
>>387
だれもけなしてなんかないと思うが

>>388
フォームのスクロールについて詳しく

390 :デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
>>388
AutoScrollでform1をスクロール出来るようにしてあるんだけど、
普通に動かすとパネルが隠れるから、スクロールしてもパネルが隠れないようにする方法です

391 :デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
>>390
スクロールを感知して自分でパネルの位置をずらすとか

まあ、そもそもフォームをスクロールさせるのが間違ってる気がするが
フォームをパネルで分割して必要な領域だけスクロールさせるのが普通じゃないか

392 :デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
自分でスクロールするようにしておいてスクロースしては困るって何を言ってるんだろう。

393 :デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
>>391
>>392
パネル位置ずらす方法でなんとか解決しました

394 :デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
ODP.NET 2.Xを使ってOracleに接続しているのですが
ConectionTimeoutを設定してもタイムアウトが発生しません。
説明を見るとプーリングに対する設定のようで初回の接続には関係ない値のようです。
そこで初回の接続にタイムアウトを設定するにはどのような方法があるでしょうか?

395 :デフォルトの名無しさん:2013/08/04(日) NY:AN:NY.AN
コネクション制御をするのはOracle側
あくまでもDBが主
クライアントは用事が済んだ時点でお帰り下さい

396 :デフォルトの名無しさん:2013/08/06(火) NY:AN:NY.AN
ソースがなく厳密名が決まっていない.NETクラスライブラリをCOMとして再利用したいんだが無理か?

397 :デフォルトの名無しさん:2013/08/06(火) NY:AN:NY.AN
できるよ

398 :デフォルトの名無しさん:2013/08/06(火) NY:AN:NY.AN
ってだけだと語弊があるな
使えるようにされてれば使えるよ
ComVisibleとかデフォルトコンストラクタとか

399 :デフォルトの名無しさん:2013/08/07(水) NY:AN:NY.AN
逆に言えばComVisibleなどの設定やInterfaceを適切にしなければCOMにはできないてことかな
さんくす

400 :デフォルトの名無しさん:2013/08/10(土) NY:AN:NY.AN
Entity Frameworkって使ってる人います?

401 :デフォルトの名無しさん:2013/08/10(土) NY:AN:NY.AN
使ってない情弱なんておるんか?

402 :デフォルトの名無しさん:2013/08/10(土) NY:AN:NY.AN
うちは未だに型付きデータセットや

403 :デフォルトの名無しさん:2013/08/10(土) NY:AN:NY.AN
ウィンドウの透過について質問したいのですが、
TransparencyKey を使って透過するのはとっても簡単でいいと思っていたのですが
この透過方法だと背面にあるアイコンやウィンドウが押せない状態になってしまいます。
穴が空いてるというより透明な板が1枚あるといった感じです。

レイヤードウィンドウを使ってみようとも思ったのですがいまいち使い方がわかりませんでした…

どうすれば、背面にあるアイコンやウィンドウをクリックすることができるでしょうか?

404 :デフォルトの名無しさん:2013/08/11(日) NY:AN:NY.AN
windowの形を変えたらいいんでない?

405 :デフォルトの名無しさん:2013/08/11(日) NY:AN:NY.AN
>>403
フォームの背景色のアルファ値を0にするだけ

406 :デフォルトの名無しさん:2013/08/11(日) NY:AN:NY.AN
>>404
ちょっと調べてみました。なるほどそういう方法もあるんですね。
でも、ウィンドウがAeroじゃなくなってしまう気がします…

>>405
フォームの背景色のアルファ値っていうと
opacityでしょうか?

407 :デフォルトの名無しさん:2013/08/11(日) NY:AN:NY.AN
いま理解しました。こんなかんじかなと思って引っ張ってきた
うまくいきませんでした…

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.BackColor = Color.FromArgb(0, 0, 0, 0)
End Sub

408 :デフォルトの名無しさん:2013/08/11(日) NY:AN:NY.AN
できました!!
ちゃんとTransparencyKeyもやってから
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.BackColor = Color.FromArgb(0, Color.YellowGreen)
End Sub
こんなかんじでやるんですね!
ありがとうございます!!!

409 :デフォルトの名無しさん:2013/08/11(日) NY:AN:NY.AN
連投すいません。ついでに言うと
Control
ControlDark
ControlDarkDark
使うと書かなくてもちゃんと背面クリックできるようになるんですね…
だれかが悩んだ時のために…

410 :デフォルトの名無しさん:2013/08/12(月) NY:AN:NY.AN
Cとかでよくある/**/形式のコメント(複数行)のコメントはないのですか?
なにか擬似的に行うテクニックとかないでしょうか?

411 :デフォルトの名無しさん:2013/08/13(火) NY:AN:NY.AN
>>410
ディレクティブは使えるでしょ。
要は#IF False ... #Endifで囲む。
まあ全くお勧めはしないけど。

ひょっとして選択行をコメントアウトするキーボードショートカットを知らないんじゃないの?
こっちを使った方がいいと思うけど

412 :デフォルトの名無しさん:2013/08/13(火) NY:AN:NY.AN
>>410
または、関数の引数とかのコメントなら

'''

413 :デフォルトの名無しさん:2013/08/14(水) NY:AN:NY.AN
VB.NETになった時に、複数行コメントアウトは用意してくれても良いのにな。とは俺も思った。

414 :デフォルトの名無しさん:2013/08/15(木) NY:AN:NY.AN
vb.netで作ったアセンブリをcom相互運用にしてvbaやasp, vbsから使う時に
visual studioのデバッグ機能(ブレークポイントなど)を使いたいのですが
どうすれば実現出来ますか?

415 :デフォルトの名無しさん:2013/08/16(金) NY:AN:NY.AN
vs2010で作成したWCFをvs2012で開いて、実行したら、指定されたレジストリへのアクセスが拒否されましたってエラーが発生してしまいます。何か変更があったのでしょうか?

416 :デフォルトの名無しさん:2013/08/21(水) NY:AN:NY.AN
VB.netでWEBブラウザを自動操作するプログラムを作っています。
JavaScriptでポップアップ表示されたダイアログに対して

「はい」 or 「いいえ」

ボタンをクリックする為には、

別のポップアップ監視用のプログラム(Windows API)を用意して
クリックするしかないでしょうか?

例)
メインプログラム.exe ← これでブラウザ起動
ポップアップ監視.exe  ← Windows API でポップアップを監視する。

417 :デフォルトの名無しさん:2013/08/22(木) NY:AN:NY.AN
>>414
メッセージボックスなんかで一旦スクリプト止めといて、
VisualStudioでExcelやらWindowsScriptやらにプロセスアタッチすればできるよ

418 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
>>417
ありがとうございます

419 :デフォルトの名無しさん:2013/08/27(火) NY:AN:NY.AN
グループボックス内にコントロールを配置したのですが
グループボックス内のコレクションの順番がばらばらで上手く処理が行えません
順番を綺麗に直す方法などごありませんか?

420 :デフォルトの名無しさん:2013/08/27(火) NY:AN:NY.AN
マルチ

421 :デフォルトの名無しさん:2013/08/27(火) NY:AN:NY.AN
質問です。

Oracleサーバ使ったアプリを作成しています。
デバッグ実行とexeの動作は確認できたのですが、
出力したexeを別のPCに持っていくと、DBへの接続が出来なくなりました。

ODACだかのdllはexeとセットで持って行っており、
もう一方のPCに入っているODACは開発PCと同じものです。

何が原因で接続できないのか分からず困っているので、お知恵を拝借したいです。

422 :デフォルトの名無しさん:2013/08/27(火) NY:AN:NY.AN
例外の型とメッセージくらい書け

423 :デフォルトの名無しさん:2013/08/27(火) NY:AN:NY.AN
>>422
もっともな返答ありがとう。
でもごめんなさい。今、手元にソースが無いのです。

エラーログを覚えている限りでは、DataAdapterのFill関数の呼び出しでエラーが発生していたはず。
OracleExceptionの12154番が発生していたはず…。

曖昧なことばかり書いて申し訳ないですが、よろしくお願いします。

424 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
ora12154てことはoracleに繋げられてないな
tnsnames.ora見てみる
tnsping撃ってみる
sqlplusとかで繋げてみる
環境変数とユニバーサルインストーラのHOMEパスが違ってないか見る
oracleが複数インストールされてないか見てみる
32bitと64bitが混在してる

辺りから探ってみればー
後はOracleさんに聞いとくれ

425 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
.netでもjavaみたいにoracleクライアント入れなくてもojdbc.jarだけで
接続できるみたいになればいいのにねぇ

426 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
単にファイアウォールで蹴られてるだけだったりして

427 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
データテーブルをデータグリッドにバインドさせた時に
日付型の列に値を入れて、その値を消すとDateの初期値の0001/01/01と入ってしまうのですが、
空の場合はDBNullを入れるようにすることは出来ないのでしょうか?
ColumnChangedイベントで初期値ならDBNullを入れるって言うふうにしても初期値が入ってしまいます

428 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
バインドなんかやっちゃダメだよ

429 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
まぁ、データグリッドに表形式でデータを表示したいときは
データテーブルをバインドするのが一番効率的だろうな
これよりもっといい方法が出てくればいいのにな

430 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
お返事ありがとうございました。
お陰様で解決しました。

環境変数TNS_ADMINの最後にセミコロンがついていたことが原因で通信できなかったようです。

問題自体は解決したのですが、環境変数にセミコロンが「ついている事」が原因で問題が発生した経験が無く
このようなことはよくある話なのか、ご意見を伺いたいです。

431 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
PATHならともかく環境変数なんてただの文字列格納スペースなんだから
それをどう扱うかはその環境変数を利用するプログラム次第

432 :421:2013/08/28(水) NY:AN:NY.AN
>>430
あれ?名前出てない…。
421です。昨日はありがとうございました。

>>431
プログラム次第ということは、オラクルのせいですね?
私悪くない!
プログラムしだい

433 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
>>427
イベント間違ってるな
ColumnChangingでやればいけるんじゃね

434 :デフォルトの名無しさん:2013/09/01(日) 02:36:24.44
>>24
そのフォームで生成したクラスは、Privateフィールドで良い。
ただし、ゲッタを用意しておく。

もう一つのフォームにはセッタを用意しとく。

2つのフォームはモジュールから管理。

435 :デフォルトの名無しさん:2013/09/01(日) 02:40:07.95
>>54
オブジェクト指向に関しては、Javaで解説されたテキストがほとんど。
オブジェクト指向の考え方自体は、どんな言語でも同じだと思うが。
VB6のように、言語的にまるまるJavaでの文法を適用するのができない
という事もあるが、基本の考え方は同じ。

436 :デフォルトの名無しさん:2013/09/03(火) 10:16:23.53
VC++.netで作成したプログラムをVB.netからアクセスしているが、メソッドは呼び出せるが
2000バイトほどの配列データをVB.NETに渡したいのだが方法がわからない。
どうしたらいい?
methodでインデックスを渡して1ワードづつ読み込むって方法は考え付くのだが
ポインターを渡してバッサリ渡すってことはできないのか?

437 :デフォルトの名無しさん:2013/09/03(火) 10:21:31.05
マーシャリング

438 :デフォルトの名無しさん:2013/09/03(火) 18:00:54.73
 マーシャリングはアンマネージドとマネージド間の渡しだろ。関係ないな。

439 :デフォルトの名無しさん:2013/09/03(火) 18:05:38.78
まさにマネージアンマネージ間の話に見えるが、
別にマネージコードで完結する範囲内でやってもいいよ?

440 :デフォルトの名無しさん:2013/09/03(火) 21:26:12.99
>>436
ポインタをIntPtrで受け取ってMarshal.Copy

441 :デフォルトの名無しさん:2013/09/03(火) 21:35:11.81
なんか頓珍漢なレスが多いけど、マーシャリング云々以前に、
こういう場合は呼び出し側でバッファを確保してその先頭アドレスを相手に渡すのが常識。

アンマネージの意味分かってるかね。

442 :デフォルトの名無しさん:2013/09/03(火) 21:41:05.03
>>441
向こうで常に保持してるバッファかもしれないだろ?
情報がないんだからこういう場合もクソもあるかよ

443 :デフォルトの名無しさん:2013/09/03(火) 22:14:01.00
何を言ってるのか意味不明だが、GCが付いてない言語で呼び出された側で
バッファを確保するライブラリ、俺は見たことない。

そのバッファ、最終的に誰が解放するんだよ。
馬鹿じゃねえの

444 :デフォルトの名無しさん:2013/09/03(火) 22:19:19.92
馬鹿かお前は
アンマネージ側でずっとメモリが保持されててそのポインタを取得することはあるだろ
C/C++には自分で状態持たないライブラリしか無いとでも思ってるのか?

445 :デフォルトの名無しさん:2013/09/03(火) 22:25:12.55
まず大きなメモリを静的に確保するライブラリというのが非常識だが、

>アンマネージ側でずっとメモリが保持されててそのポインタを取得することはあるだろ
そんな非常識な設計は普通はしません。
馬鹿だろお前

446 :デフォルトの名無しさん:2013/09/03(火) 22:30:06.40
たとえばOpenCVのようなライブラリを使う場合、
アンマネージ側で確保されたメモリ領域に対してポインタ通してアクセスすることになるよね?
System.Drawing.Bitmapなんかもそういう実装ですよ?
何も静的に確保したメモリに限った話じゃない
そういうことを言ってるんだけど馬鹿だろお前

447 :デフォルトの名無しさん:2013/09/03(火) 22:32:07.44
>>443
お、BSTRのCOM全否定か?

448 :デフォルトの名無しさん:2013/09/03(火) 22:32:24.77
Bitmap.LockBitsとか普通にアンマネージメモリのポインタが返ってくるよ

449 :デフォルトの名無しさん:2013/09/03(火) 22:35:02.96
OpenCV知らないけど画像処理みたいな特殊な例を出されても知らんし。

少なくとも言えることは、たった2kBのメモリをコピーするパフォーマンスを惜しんで
そんな無作法な方法を採用するプログラマは1万人に1人もいないよ。

450 :デフォルトの名無しさん:2013/09/03(火) 22:38:33.01
なんだ
経験不足か

451 :デフォルトの名無しさん:2013/09/03(火) 22:43:55.66
Dim hoge As Hoge = new Hoge() 'アンマネージオブジェクトが確保される
Dim p As IntPtr = hoge.GetSomeData()
利用(p)
hoge.Dispose() 'アンマネージリソースが開放される
C++のライブラリのラッパーには普通によくあるよねこういうの

452 :デフォルトの名無しさん:2013/09/03(火) 22:54:00.43
まともなラッパーならポインタを露に扱うことは少ないかもしれないが
内部的に>>451のようなことをしているラッパーはかなり多い
アンマネージリソースを持ってる.NETのクラスも含めて、
ある程度複雑なC++のライブラリのラッパーならほとんど全てじゃね

453 :デフォルトの名無しさん:2013/09/03(火) 22:54:15.02
へぇ
C++はそうなんだぁ

454 :デフォルトの名無しさん:2013/09/03(火) 23:37:44.21
すでに有るライブラリの仕様でポインタ扱いたいとかいっちゃうと
パフォーマンスを惜しむと理解されちゃうのか
仕事頼みたくはない人種だな

455 :デフォルトの名無しさん:2013/09/04(水) 00:05:31.09
どんな負け惜しみだよ。
というか、そもそも自分がどんな頓珍漢なことを言ってるかすら理解してないんだから
話にならんけど。

456 :デフォルトの名無しさん:2013/09/04(水) 00:12:14.07
反例は出てるのにw
「クラスにラップしてインスタンス破棄時に開放する」という考えが頭になかったんだね
マジで多いから有名なライブラリのラッパーを調べてみるといいよ

457 :デフォルトの名無しさん:2013/09/04(水) 00:16:42.50
で、どっちが勝ったの?

458 :デフォルトの名無しさん:2013/09/04(水) 10:59:56.52
パソコンに接続されているWebカメラの名前を取得するにはどのようにしたら良いでしょうか

459 :デフォルトの名無しさん:2013/09/04(水) 14:56:10.52
>>455
>>455

460 :デフォルトの名無しさん:2013/09/04(水) 18:54:18.97
>>456
馬鹿だろお前

461 :デフォルトの名無しさん:2013/09/04(水) 22:48:46.90
>>458
DirectShowで入力デバイスを列挙する。
ICreateDevEnumのインスタンス作って、CreateClassEnumeratorでVideoInputDeviceCategoryを指定
CreateClassEnumeratorでIEnumMonikerのインスタンスが得られるのでwhileで回しながらNextメソッドでIMonikerを取得
BindToStorageでIPropertyBagのインスタンスを取得してReadで "FriendlyName"を指定して取れた値がカメラのデバイス名

ビデオ入力デバイスを列挙するんでキャプチャーボードとか付いてるとそれも列挙されちゃう
.NETでもDirectX使えるらしいから参考になるかしら、もっと簡単な方法があれば知りたい

462 :デフォルトの名無しさん:2013/09/04(水) 23:52:39.22
>>461
DirectShowをインポートするところまでは出来たのですがその後が分かりません
できればソースコードをお願いします

463 :デフォルトの名無しさん:2013/09/05(木) 21:18:01.33
開発環境はVS2008
フォームアプリでスタートアップはSubMain。

アプリ起動時にコンテキストメニューを表示して項目を選択したら処理って流れにしたいんだけど
下のコードだとデスクトップとか、アプリのコントロール以外の場所をクリックしたときコンテキストメニューが出っぱなしなんです。
普通のコンテキストメニューなら閉じますよね。どうにも気持ち悪くて・・・どなたか解決策をご存じないですか?
ちなみにContextMenuStrip1_ClosedイベントでApplication.ExitThread()を実行してアプリ終了させとります。

Public Class MainClass
<STAThread()> _
Shared Sub Main()
Dim myContextMenu As New UserControl1

myContextMenu.ContextMenuStrip1.Show(Cursor.Position)

Application.Run()
End Sub
End Class

464 :デフォルトの名無しさん:2013/09/05(木) 21:29:12.78
>>463
Application.Run()する前にShowとか駄目っしょ

465 :デフォルトの名無しさん:2013/09/05(木) 22:13:56.49
>>462
キーワードは出てるんだから、後はググればサンプルコードくらい山ほど出てくるよ

466 :463:2013/09/08(日) 13:02:33.47
>>464

なんか色々と残念なコードだってことは理解……
もちっと勉強し直してきます

467 :デフォルトの名無しさん:2013/09/08(日) 17:44:10.07
フォームを表示する前に何かする系のプログラムは、
非表示フォームを使うとスマートにかけたりする

468 :デフォルトの名無しさん:2013/09/08(日) 18:45:34.81
例えば?

469 :デフォルトの名無しさん:2013/09/08(日) 23:22:58.97
jsonデータにエンコードされた日本語の文字って\3333\2222みたいになりますよね?
これをVB.NETで復元したいのですがどの様にすれば良いですか?

470 :デフォルトの名無しさん:2013/09/08(日) 23:24:00.26
数字は適当です

471 :デフォルトの名無しさん:2013/09/08(日) 23:31:33.90
正規表現置換でコールバック書く

472 :デフォルトの名無しさん:2013/09/08(日) 23:49:44.89
>>471
コールバックを書く、というのはどういうことでしょうか?

473 :デフォルトの名無しさん:2013/09/09(月) 00:12:17.01
>>469
自分でやるならjsonのフォーマット調べてその通りのプログラム作る
まあ、まずは出来合いのライブラリ探すほうが早いだろうけど
標準だとDataContractJsonSerializerってのがあるらしい。それ以外だと適当にググって探せ

474 :デフォルトの名無しさん:2013/09/09(月) 07:36:12.14
少し前にC#スレかこのスレで見たんだけどなー

475 :デフォルトの名無しさん:2013/09/09(月) 07:41:16.05
見つけた
ふらっとVisual C#,C♯,C#(初心者用) Part104
の304あたりからだ。似てるけど違うか。

476 :デフォルトの名無しさん:2013/09/09(月) 08:06:55.75
System.Jsonってまんまなのがあるぞ

477 :デフォルトの名無しさん:2013/09/09(月) 16:56:39.82
4.5ので語られても困るよな
せめて3.5にしてくれないと

478 :デフォルトの名無しさん:2013/09/09(月) 17:59:20.26
http://stabucky.com/wp/archives/2650
ここを参考にしてある程度はできたのですがString.fromCharCodeのようなメソッドは無いのでしょうか

479 :デフォルトの名無しさん:2013/09/09(月) 18:04:28.34
ChrW()

480 :デフォルトの名無しさん:2013/09/09(月) 18:23:51.39
ありがとうございます
以下のようにしたら出来ました

text &= ChrW(Convert.ToInt32(str.Substring(2, 4), 16))

strには「\uXXXX」の形で入っている

481 :デフォルトの名無しさん:2013/09/09(月) 21:33:24.58
そんな過去の遺物使わなくてもCharacterにキャストするだけだ
っていうかJSONなら自分で実装しなくてもC#製の既存のライブラリは腐るほどある

482 :デフォルトの名無しさん:2013/09/12(木) 18:10:36.14
str = "ABCAEFGHIJKLAN"
という変数があってJの位置から前に検索していって最初に見つけたAの位置を知りたいのですがどのようにしたら良いでしょうか
LastIndexOfだと最後のAの位置になってしまいます

483 :デフォルトの名無しさん:2013/09/12(木) 18:15:15.67
instr(instr(str, "J"), str, "A")

484 :デフォルトの名無しさん:2013/09/12(木) 18:15:54.92
あ、「前に」か
↑のは忘れて

485 :デフォルトの名無しさん:2013/09/12(木) 18:19:44.02
コントロールパネルのアイテムってどうやって取得するの?

486 :デフォルトの名無しさん:2013/09/12(木) 18:25:08.59
jでスプリットしてラストインデックス

487 :デフォルトの名無しさん:2013/09/12(木) 18:38:35.02
>>482
Dim indexOfJ As Integer = str.IndexOf("J") ' str.LastIndexOf("J")
Dim indexOfA As Integer = str.LastIndexOf("A", indexOfJ)
Jが見つからなかったケースは考えてない

488 :デフォルトの名無しさん:2013/09/12(木) 18:46:33.69
>>487
それだと一番最後のAがヒットするよ

489 :デフォルトの名無しさん:2013/09/12(木) 18:54:39.09
str.split("j")(0).lastindex("a")

490 :デフォルトの名無しさん:2013/09/12(木) 18:59:19.63
>>488
しないよ?

491 :デフォルトの名無しさん:2013/09/12(木) 19:04:06.65
>>489
できました
ありがとうございます

492 :デフォルトの名無しさん:2013/09/12(木) 19:18:42.76
>>490
LastIndexOfはstartIndexの位置から後を検索していって一番最後にヒットした位置を返す

493 :デフォルトの名無しさん:2013/09/12(木) 19:22:25.70
>>492
> この検索では、インスタンスの startIndex の文字位置から開始し、
> value が見つかるか、最初の文字位置に到達するまで、インスタンスの先頭へ
> 向かって逆方向に検索を実行します。

494 :デフォルトの名無しさん:2013/09/13(金) 11:07:38.69
Dim str As String = "ABCAEFGHIJKLAN"
MsgBox(str.Substring(0, str.IndexOf("J")).LastIndexOf("A"))

495 :デフォルトの名無しさん:2013/09/15(日) 12:14:51.22
なんかうまくいかないなーって調べてたらmyUpdateとUpdate間違えて実行してた

496 :デフォルトの名無しさん:2013/09/15(日) 13:54:26.86
.lnkのショートカットを起動できません。
Process.Startで直接起動できない。
.lnkのリンク先を
WSHやIPersistFileとIShellLinkWやWScript.Shellなどを使って取得を試みたが、
C:\Program Files内なのに、C:\Program Files (x86)内のパスを返してきます。
これは、バグらしいので対応できないみたい。
何か方法がありますか?

497 :デフォルトの名無しさん:2013/09/15(日) 13:56:14.62
>>496
OS Windows 8 64bitです。
起動できる.lnkショートカットもあって、できないのは、
64bit版のOneNoteをスタートメニュー内のショートカット(.lnk)からです。

498 :デフォルトの名無しさん:2013/09/15(日) 18:47:23.54
結局バイナリで直接開いて中のURL取り出すとこまでできたんですが、
ファイルによってアドレスが違うんだが。

499 :デフォルトの名無しさん:2013/09/15(日) 18:53:53.20
>バグらしい

99%自分のコードにバグがあるんだろうなー

>Process.Startで直接起動できない。

ShellExecuteは使ってるのかなー

500 :デフォルトの名無しさん:2013/09/15(日) 19:24:26.52
http://social.msdn.microsoft.com/Forums/ja-JP/5f0cb5b9-7bd4-4281-8888-d2b965f9522e/desktop-shortcut-changes-to-program-filesx86-folder
ここです。
で、
http://support.microsoft.com/kb/976039
ここに書かれてます。英語読めないんでざっと見た感じだけど。。
ShellExecuteは試した気がするんですが、やってみます。

501 :デフォルトの名無しさん:2013/09/15(日) 20:19:45.58
バグっぽいけど、現状では仕様みたいな感じなのか
http://moondoldo.com/DoldoWorkz/?2000%E3%83%BBXP%E3%81%8B%E3%82%89Vista%E3%83%BB7%E3%81%B8%2F64bit
http://delkedo.blogspot.jp/2011/12/64bitprogram-files.html

ShellExecute自身の問題みたいだし、
とりあえずはショートカットを経由しないとか、場当たり的に解決するしかないんじゃないの

502 :デフォルトの名無しさん:2013/09/15(日) 21:25:46.96
ShellExecuteネット上のソースをコピペしてみたんだけど、やっぱりダメっぽいです。

場当たり的な解決しかないですかね。
.lnkの構造からリンク先のパスをバイナリから取得してみます。位置がわからないんだけど。
もしくは、64bit版のランチャーからならできるのかな?

ランチャー作ってるんですが、32bitと64bit版を分ければいいってことかな?
まぁ、やってみよう。
ありがとう。

503 :デフォルトの名無しさん:2013/09/15(日) 21:32:12.91
すまんかった
Windowsのバグか

リダイレクトしないでいいものまでリダイレクトしちゃうのか

504 :デフォルトの名無しさん:2013/09/15(日) 22:09:46.53
x64でコンパイルしてもダメなのか?

505 :デフォルトの名無しさん:2013/09/15(日) 22:17:08.14
x64でコンパイルしたらいけました。
Process.Start("パス.lnk")
でOKでした。

506 :デフォルトの名無しさん:2013/09/22(日) 01:14:45.49
VB6.0のプログラムをVB.NETへ移行作業をしているのですが、
配列の部分で以下のようなエラーが出ました。

Public Function gf_GetValue(ByRef strData As String, ByRef aFields() As typDatFields,
ByRef astrDat() As String) As Boolean

' aFields() :項目属性情報
' astrDat() :変換後データ配列

Dim lngLenB As Integer
Dim lngPosB As Integer
Dim lngIx As Integer

lngMx = UBound(aFields)
ReDim astrDat(lngMx)

astrDat(lngIx) = StrConv(MidB$(bytDataCnv, .lngPosB, .lngLenB), vbUnicode) ※
astrDat(lngIx) = Trim$(astrDat(lngIx))

上記VB6.0のプログラムの※の行に関し、「MidB$」と「vbUnicode」がVB.NETで使用不可とのことで
以下のように書き換えました

astrDat(lngIx) = System.Text.Encoding.Unicode.GetString(Mid(strData, .lngPosB, .lngLenB))

→上記のように変更したところ、
「型 'Byte'の値を 'String の1次元配列'に変換できません。」というエラーが出ます。
どう書けばいいのでしょうか?
よろしくお願いいたします。

507 :デフォルトの名無しさん:2013/09/22(日) 01:59:53.75
>>506
うんこみたいなコード(しかもバグってる)の解読を人に丸投げするってどういう神経よ。
bytDataCnvとかいう謎の変数はどっから来てどこへ言っちゃったんだ。

丸投げするんじゃなくて、何がしたいのかだけを端的に質問しろよ

508 :デフォルトの名無しさん:2013/09/22(日) 02:07:54.17
StrConv vbUnicode VB.net あたりでぐぐれば色々出てくるんじゃね

509 :デフォルトの名無しさん:2013/09/22(日) 02:11:44.68
なんでMidBに渡してた引数とMidに渡す引数が同じなの?

510 :デフォルトの名無しさん:2013/09/22(日) 02:40:13.28
なんで真剣に答えない上に、上から目線でコード批判してるんですか?

511 :デフォルトの名無しさん:2013/09/22(日) 08:59:40.18
>>506
GetStringの引数はByte()。
Midの戻り値はString。
StringをByte()に変換してByte()をGetStringに渡せばいいはずよ。
こんな感じ。MidBの開始位置は1で、GetStringの開始位置は0。lngPosBは調整する必要があるでしょね。
Dim u As System.Text.Encoding = System.Text.Encoding.Unicode
astrDat(lngIx) = u.GetString(u.GetBytes(strData), .lngPosB, .lngLenB)

512 :デフォルトの名無しさん:2013/09/22(日) 10:49:43.63
仕事を丸投げしてんじゃねーyo!

513 :デフォルトの名無しさん:2013/09/22(日) 17:37:43.16
文字取り扱いの根本的なとこが分かってない気がするんだが

514 :デフォルトの名無しさん:2013/09/22(日) 17:48:32.90
>>513
文字取り扱いの根本的なとこを教えてくれよ

515 :デフォルトの名無しさん:2013/09/22(日) 19:13:51.14
何やってるか知らんが
SHIFT-JISをバイトコードにして、オフセット操作して、(UNICODEの)文字に直さないとダメなんじゃないのか

516 :デフォルトの名無しさん:2013/09/22(日) 20:06:02.73
固定長ファイルの1行を受け取って項目長定義から項目を切り出して配列で返すと予想。
1.入力されたテキストはSHIFT-JISのバイト配列にする
2.項目長定義に従いバイト長で切り出しSHIFT-JISエンコーディングでstringに戻す

こんな感じ。

517 :デフォルトの名無しさん:2013/09/22(日) 20:21:48.14
TextFieldParserが使えないかと思ったが案の定文字数に作用するんだな。
全角文字=2バイトが破綻してるのは分かるが残念。

518 :デフォルトの名無しさん:2013/09/22(日) 20:45:24.19
ようするにこういうことだろ
俺天才すぎるw

Dim str As String = "あいうえお"

Dim bytesData As Byte()
bytesData = System.Text.Encoding.GetEncoding(932).GetBytes(str)

Dim buff As Byte() = New Byte(4) {}
For i As Integer = 0 To 3
buff(i) = bytesData(i + 2)
Next

Dim str2 As String = System.Text.Encoding.GetEncoding(932).GetString(buff)

MsgBox(str2)

519 :デフォルトの名無しさん:2013/09/23(月) 01:12:28.88
なんかスゲー見覚え有るコードなんだけど
ググれば答え有るよねこれ

520 :デフォルトの名無しさん:2013/09/23(月) 02:04:03.64
それは昔オレが書いたコードかもしれない

521 :デフォルトの名無しさん:2013/09/24(火) 00:35:30.02
Visual Studio 2008や2010等のExpressEditionで
VBで開発したプログラムを64bitコンパイル出来ないのでしょうか?

64bit対応するには正規版でないとダメなのでしょうか?

522 :デフォルトの名無しさん:2013/09/24(火) 00:44:57.51
設定の「ビルド構成の詳細を表示」を有効にすれば選べるようになる
64bitコンパイルというが、.NETのアセンブリには32ビットも64ビットも実質的な違いはないぞ
どっちで起動するかという情報があるだけ

523 :デフォルトの名無しさん:2013/09/24(火) 00:52:55.81
>>522
設定の「ビルド構成の詳細を表示」を有効にしたところ、
ビルドに「構成マネージャー」が表示されましたが、
プラットフォームは「AnyCpu」しか選べませんでした。
ビルドしたプログラムを実行すると、タスクマネージャーには
「*32」が付きます。
開発環境は、Windows7 64bitです。

524 :デフォルトの名無しさん:2013/09/24(火) 01:01:30.87
構成マネージャとプロジェクトの設定の関係は、分かってしまえば簡単だけど
知らないと訳分からんだろうなw

ググって調べて自分で理解した方がいいと思う。

525 :デフォルトの名無しさん:2013/09/24(火) 01:06:08.99
AnyCPU以外にメニュー項目あるだろ?
ちなみに両対応したいならx64じゃなくてAnyCPU x64 preferedな

526 :デフォルトの名無しさん:2013/09/24(火) 01:32:40.46
>>525
ありがとうございました。
Visual Studio 2008 Expressでは、
•x86
•Itanium
•x64
•anycpu
の4つの選択肢でしたが、x64を選べたので、大満足です。
ありがとうございました。

527 :デフォルトの名無しさん:2013/09/26(木) 14:09:35.04
教えてほしい。
ワークスペースに
prjM  VBでメイン実行プロジェクト
prjS  VBでパラメータ設定プロジェクト
prjDLL VC++でDLL
の三つのプロジェクトをつくって、prjDLLはprjMとprjSの両方でアクセスする
prjDLLにはスタティックな変数のメモリエリアがあってそこにファイルから設定変数を
ロードしている。
 問題はprjMを実行している時にファイルから設定1をロードして実行しているのに
実行中にprjSを立ち上げて設定2を編集したいことがある。そうすると実行中のprjMは
当然誤動作をする。これを避けたい。

prjDLLを二つ用意すればいいのだが開発中でしょっちゅう編集するので同じ編集を
二つやりたくない。
編修は一か所でDLLはprjMとprjSが独立に使えるように二つできるような仕掛けはできなの
だろうか?

528 :デフォルトの名無しさん:2013/09/26(木) 14:32:48.16
何か偉そうだし上げてるし

529 :デフォルトの名無しさん:2013/09/26(木) 14:35:04.12
ワークスペースというところを見るに、ひょっとしてスレ違いではないでしょうか

530 :デフォルトの名無しさん:2013/09/26(木) 15:23:20.88
>>527
帰れ

531 :デフォルトの名無しさん:2013/09/26(木) 15:38:22.38
業務なんだろうから
見積もりだそうか?

532 :デフォルトの名無しさん:2013/09/26(木) 15:38:45.60
まあまあ、簡潔でいいとおもう。

533 :デフォルトの名無しさん:2013/09/26(木) 15:46:02.01
方法はいろいろあるが、一番簡単なのは設定の従属関係を変えることだ

534 :デフォルトの名無しさん:2013/09/26(木) 15:49:13.87
ワークスペースをソリューションに読み替えるぐらいの優しさはあっていいと思うの

535 :デフォルトの名無しさん:2013/09/26(木) 15:57:51.44
一つのソリューションにしない

536 :デフォルトの名無しさん:2013/09/26(木) 16:04:06.15
prjMとprjSは両方、フォームアプリ?別EXEだよね?
プロセス違うと同じDLLリンクしてもデータ領域のアドレス空間違わない?
M実行中にSでデータ変更してもMのメモリに影響無さそうだけど。

537 :デフォルトの名無しさん:2013/09/26(木) 17:10:59.28
>536
あれっ、そうなの? 両方ともFormアプリだよ。
だけどprjMのフォームからprjS.main.DialogShowで立ち上げている。

DLL(VC++)のなかで
public: static void SetKisyumei( String ^ kisyumei)
{
char c_val[1000];
getCstr(c_val,kisyumei);//ストリングをcharに変換する。
strcpy(param.kisyumei, c_val);
}
とやってる。
static がまずいのか?
このparam.kisyumeiというのは昔に誰かが作ったCのプログラムでparamというデカイ構造体を
持っていてそこにファイルからドバっと読み込んで処理している。
そのCプログラムをVC++でラッパしてそれをVBからアクセスしている。
例のSetKisyumeiをVBから直接呼び出す。

538 :デフォルトの名無しさん:2013/09/26(木) 17:27:05.66
>一つのソリューションにしない
 どうわけるのがいい?
 
1)
 prjM
 prjS + prjDLL

2)
 prjM + prjS 
 prjDLL

例えば1)のようにソリューションを分けると、
prjMで定義を書いたりとかDLLを呼び出すのがめんどくならない?

539 :デフォルトの名無しさん:2013/09/26(木) 17:33:44.43
っていうかDLLをそこまで変更しないといけないとか
設計する気がないってことだろ
もっと考えてからコード書けよって話だよ

540 :デフォルトの名無しさん:2013/09/26(木) 18:25:15.03
別にDLLにしたいわけじゃないんだが、勝手にDLLになってしまう。
古いソフト使いたいわけじゃないんだが、そういう状況だし
VC++使いたいわけじゃないんだが、Cをアクセスするには仕方ない
しかもそのためにDLLに自動的になってしまう。

541 :デフォルトの名無しさん:2013/09/26(木) 18:29:10.28
>539
 じゃあ骨のあるDLLをデバッグするのはどうするんだ? WWWW

542 :デフォルトの名無しさん:2013/09/26(木) 18:31:14.78
>だけどprjMのフォームからprjS.main.DialogShowで立ち上げている。
prjMはメイン処理してて[設定]ボタンとかでprjS.main.DialogShowしてるって事かな?
prjMからprjSをプロジェクト参照して、フォームを表示してると。
それだと別プロセスじゃないからアドレス空間同じだよね。
アドレス空間同じならstaticなら同じアドレス指すよそりゃ。
これはDLLを2つじゃなくてDLLのインスタンスを2つ作ればいいだけでは。

てか別プロジェクトに分けてるってなら、prjSをビルドしたEXEはどういう動きすんの?
設定画面が単独で出るだけ?
もしそうなら、prjMからは、prjS.main.DialogShowしてるところでprjS.exeを立ち上げる
のが無難かと思うけど。

prjS.exe自体で動かさないなら別プロジェクトにしてる意味が分からない。

543 :デフォルトの名無しさん:2013/09/26(木) 18:34:41.76
>>941
俺デバッグ機能とか使ったこと無いから

544 :デフォルトの名無しさん:2013/09/26(木) 19:01:56.21
>prjMからprjSをプロジェクト参照して、フォームを表示してると。
>それだと別プロセスじゃないからアドレス空間同じだよね。
>アドレス空間同じならstaticなら同じアドレス指すよそりゃ。

 あっそういうこと。

>これはDLLを2つじゃなくてDLLのインスタンスを2つ作ればいいだけでは。

 どうやってインスタンスを二つ作るのか解らん。
prjDLL.clsDLL.SetKisyumei("x1000345.kkk")
これはいけるが

Dim aa As New prjDLL.clsDLL
aa.SetKisyume("x1000345.kkk")
これはだめ。コンパイルエラーになる。

>てか別プロジェクトに分けてるってなら、prjSをビルドしたEXEはどういう動きすんの?
>設定画面が単独で出るだけ?

 そう。だけどprjSは非常にデカイソフトでフォームが30個それ以外のクラスが50個くらいある。

>もしそうなら、prjMからは、prjS.main.DialogShowしてるところでprjS.exeを立ち上げる
>のが無難かと思うけど。

>prjS.exe自体で動かさないなら別プロジェクトにしてる意味が分からない。

 処理系を設定系と実行系で意味的に分けてる。混在するとややこしくなるから。

545 :デフォルトの名無しさん:2013/09/26(木) 19:42:38.97
>544
あ〜、prjSにある30個の画面のうち特定の画面だけprjMからShowしてるのか。
ならEXEの起動も難しいな。

ならやっぱり、static止めてクラスインスタンスを作るのがいいと思うが
具体的なやり方スグには分らん。調べて下さいな。
staticじゃなくせば
Dim aa As New prjDLL.clsDLL
aa.SetKisyume("x1000345.kkk")
が出来るかもしれん。できればラッキーやねw

もし、prjSEXEのメイン画面をprjMから起動してるなら前述通りprjMから
System.Diagnostics.Process.Start()でも使ってEXE起動が手っ取り早い。
これだとアドレス空間別になるからね。

546 :デフォルトの名無しさん:2013/09/26(木) 20:09:44.54
C# にはリファクタリング機能があるのになぜVB.netにはないのですか?

547 :デフォルトの名無しさん:2013/09/26(木) 20:22:06.39
難しい技術だからホイホイ付けられるものじゃない
言語との相性ともいうべきものが大きい

548 :デフォルトの名無しさん:2013/09/26(木) 20:24:24.78
Option Strict Offで使ってるバカがいるからだよ
確実に阿鼻叫喚

549 :デフォルトの名無しさん:2013/09/27(金) 09:53:19.30
C#のリファクタリングって何がべんりなの?

550 :デフォルトの名無しさん:2013/09/27(金) 18:30:11.63
初心者解説本にしたがって何も知らないでWPFでプログラミング
したらフォルダ選択ダイアログで躓いた
よ。誰かゲイツの携
帯の番号知らない?

551 :デフォルトの名無しさん:2013/09/27(金) 20:34:42.27
>>549
メソッド名やクラス名を変えても呼び出し元を探し回る手間がいらない
自動でインターフェイス作ってくれる
メソッドの切り出しを全自動でやってくれる

遅延バインディングがあると追跡できないからVBでやると確実に逝くけどね

552 :デフォルトの名無しさん:2013/09/27(金) 23:44:52.15
ツイッタで我慢しろ
http://twitter.com/BillGates

553 :デフォルトの名無しさん:2013/09/28(土) 01:49:31.30
>メソッド名やクラス名を変えても呼び出し元を探し回る手間がいらない

便利そうだね。

>自動でインターフェイス作ってくれる

 これは意味解らん。インターフェースって使ったことが無い。

>メソッドの切り出しを全自動でやってくれる

 これはどういう意味?

VB.NETとC#を比較してどっちにしようかと迷って使ってたことがあるけど、インテリセンス
がVBの方が強かったので最近はVB.NETしか使わないが、C#も使い始めたら便利なのかなー。

554 :デフォルトの名無しさん:2013/09/28(土) 02:02:21.51
これぞVBerクオリティだよな
高尚な機能を付けてもどうせ使いこなせないから投資するだけ無駄だと判断されたんだろ

555 :デフォルトの名無しさん:2013/09/28(土) 05:02:02.61
意味分からん原因が使ったことないなんてしょうもない理由なら黙っとけよ

556 :デフォルトの名無しさん:2013/09/28(土) 08:34:26.53
C#でメソッドの抽出を覚えたときはサルのようにやりまくったよ
もう楽しくてたまらん。

557 :デフォルトの名無しさん:2013/09/28(土) 14:59:10.37
IDEの他の機能はC#よりVBの方が充実してるのに、リファクタリング機能だけいつまでたっても
リネームだけっていうのは謎だな。

まあ2012まではCodeRushExpressを入れれば問題ないけど、2013以降は金払わないと
どうしようもなくなるのか。

558 :デフォルトの名無しさん:2013/09/28(土) 15:09:08.22
他の機能といってもコードスニペットにコピペライブラリが付いてるだけだろう

559 :デフォルトの名無しさん:2013/09/28(土) 15:45:37.30
コードスニペットなんかC#にも普通にある。
まああんなの使わないけど。

VB比でC#で気になるのは、リアルタイムのエラー表示機能がC#のはかなりお馬鹿。

560 :デフォルトの名無しさん:2013/09/28(土) 15:50:48.29
>>559
コードスニペットに定型処理が含まれてると言いたかった
C#だとifとかwhileとかだけだからね
善いか悪いかを議論する気はないが、MSによるとVBはC#に比べてコードをコピペする人が多いかららしいよ

561 :デフォルトの名無しさん:2013/09/28(土) 22:38:16.56
俺らのことか。

562 :デフォルトの名無しさん:2013/09/29(日) 00:27:50.13
うむぅ BackgroundWorkerって、
Form1_FormClosingの中にCancelAsync()書くと処理中のものが正常終了するけど、
Form1_FormClosedの中でCancelAsync()だと、処理が中途半端で終わるのよ。

Form1_FormClosedに書くのは間違ってるのかな・・

563 :デフォルトの名無しさん:2013/09/29(日) 00:53:35.94
CancelAsync呼び出した後でFormがDisposeされて
その途中でBackgroundWorkerもDisposeされてるんだろ

564 :デフォルトの名無しさん:2013/09/29(日) 01:00:02.06
CancelAsyncはキャンセル要求するだけで待たないよ。
また、中途半端で終わるのはAbort(非推奨)かプロセス終了なので、
Thread.CurrentThread.IsBackgroundをfalseにすれば完走すると思う。

画面側で待つかフォアクラウンドスレッドにするかどちらかだね。

565 :デフォルトの名無しさん:2013/09/29(日) 02:47:10.23
>>562です。
ありがとうございました。無事、解決しました。
画面側で待つようにしたら正常に終了しました。

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

566 :デフォルトの名無しさん:2013/09/29(日) 23:30:41.82
そうだ、マルチスレッドならC使えとかゆうな。

567 :デフォルトの名無しさん:2013/09/30(月) 00:32:24.73
.NETになってからはその言い訳が通用しなくなっちゃったからね
かわいそうに

568 :デフォルトの名無しさん:2013/09/30(月) 17:47:05.63
昔、ライン管理ソフトの仕事で触ったHPのBASICは間違った
構造文書くと入力が受け付けなくてビックリしたな。N88しか
知らなかったから。リアル・インタプリターだった。

569 :デフォルトの名無しさん:2013/10/01(火) 00:47:21.28
VSって、自動的にコードを整形してくれますが、部分的にそれを禁止するような
ことは出来ないでしょうか?
例えば以下の例のように、二次元の配列に初期値を代入したい場合に、
わたしとしては、コンマの位置や}の位置がずれていると見づらいので、
Dim array(,) As String = { _
{"1", "aaaaa"}, _
{"20", "bbb"}, _
{"5", "ccc"}, _
{"100", "ggg"}}
この部分だけは自動整形を中止して、適当にスペースを入れて、コンマや}の位置を
揃えたいのですが。
あるいは、何か良い方法ありますか?

570 :デフォルトの名無しさん:2013/10/01(火) 00:50:25.00
体裁ばかり気にする神経質なジャップが使うようにはできてないから諦めろ

571 :デフォルトの名無しさん:2013/10/01(火) 10:17:22.02
vb2010のDataGridViewについて質問です。
DataGridViewButtonColumnに設定し、
列の編集画面から、text=選択 と表示名を設定しているのですが
表示が行われません。

下記しか探せませんでした。
@下記のようにcolumnを追加するか、
Dim column As New DataGridViewButtonColumn()
column.Name = "Button"
column.UseColumnTextForButtonValue = True
column.Text = "選択"
DataGridView1.Columns.Add(column)
ADataGridView1.Rows.Add()時に、textを設定する

Desinger画面でcolumnを追加し、
exe実行時には、セルに文字が入力されると、
次の行が自動で増える。という機能をそのまま使いたいので、
@Aともにあわなくて困ってます。
何か方法はないでしょうか。

572 :デフォルトの名無しさん:2013/10/01(火) 19:08:07.65
>>570
さっさとこの国から出てけ。投げるぞコラ

573 :デフォルトの名無しさん:2013/10/01(火) 19:09:57.42
我々の言葉を使うな。けしからん輩だ。

574 :デフォルトの名無しさん:2013/10/01(火) 21:33:43.54
VB6ではダメなの?

575 :デフォルトの名無しさん:2013/10/01(火) 22:00:04.19
>質問ですがWin7で、動いたソフトがWin8では動くもの
>動かないソフトがあり、動かないソフトは、開発言語
>ビジュアルBASICで最新の統合開発環境でそのまま
>コンパイルしたら、Win8で動くようになるのですか

>手直しが必要なものもある
>ケースバイケース

手直しする場合、コンパイラや 統合開発環境が手直しする
ところを教えてくれるのですか?
それとも、自分で見つけなければならないのですか?

576 :デフォルトの名無しさん:2013/10/01(火) 22:22:33.44
テストしなおす
テストや仕様の文書やテストコードが無いようなものは
どうせ今も動いてないのと同じなゴミだ

577 :デフォルトの名無しさん:2013/10/02(水) 05:58:06.64
>>569
どうしてもというなら・・
{" 1", "aaaaa"}, _
{" 20", " bbb"}, _
{" 5", " ccc"}, _
{"100", " ggg"}}
やっておいて簡単に、array(1,1).trim で駄目なの?

578 :デフォルトの名無しさん:2013/10/04(金) 03:45:19.51
ファイルのアイコンの一番大きいものを取得したい。
256x256があるものはそれを、48x48までしかないならそれを取りたい。

SHGetFileInfoだと32x32までだった。
SHGetImageList.GetIconだとVista以降なら256x256が取れたが、48x48のサイズのものも左上に小さく表示して256でとってしまう。
これだと使えないので、48のものは48pixでとりたい。

579 :デフォルトの名無しさん:2013/10/04(金) 08:27:35.98
SHGetImageList( SHIL_EXTRALARGE,...

じゃねーのかハゲ?

580 :デフォルトの名無しさん:2013/10/04(金) 17:59:44.66
IShellItemImageFactory
を使ってやってみたら、まぁまぁうまくいったので。
>>578

581 :デフォルトの名無しさん:2013/10/05(土) 06:54:27.24
IShellItemImageFactoryでHBITMAP取得すると背景が真っ黒なんだけど
これどうすんの?

582 :デフォルトの名無しさん:2013/10/05(土) 10:34:00.34
Public Function GetShellIcon(ByVal Path As String, MySIIGBF As SIIGBF, Optional ByVal Width As Integer = 256, Optional ByVal Height As Integer = 256) As BITMAP

Dim ppsi As IShellItem = Nothing
Dim hbitmap As IntPtr = IntPtr.Zero
Dim uuid As New Guid("43826d1e-e718-42ee-bc55-a1e261c37bfe")

SHCreateItemFromParsingName(Path, IntPtr.Zero, uuid, ppsi)
DirectCast(ppsi, IShellItemImageFactory).GetImage(New PicSIZE(Width, Height), MySIIGBF, hbitmap)
Dim dibsection As New DIBSECTION
GetObjectDIBSection(hbitmap, Marshal.SizeOf(dibsection), dibsection)
Dim bmwidth As Integer = dibsection.dsBm.bmWidth
Dim bmheight As Integer = dibsection.dsBm.bmHeight
Dim bm As New Bitmap(bmwidth, bmheight, PixelFormat.Format32bppArgb)

For x As Integer = 0 To bmwidth - 1
For y As Integer = 0 To bmheight - 1
Dim i As Integer = y * bmwidth + x
Dim ptr As IntPtr = dibsection.dsBm.bmBits + (i * Marshal.SizeOf(GetType(RGBQUAD)))
Dim rgbquad As RGBQUAD = CType(Marshal.PtrToStructure(ptr, GetType(RGBQUAD)), RGBQUAD)
If rgbquad.rgbReserved <> 0 Then
bm.SetPixel(x, bmheight - 1 - y, Color.FromArgb(rgbquad.rgbReserved, rgbquad.rgbRed, rgbquad.rgbGreen, rgbquad.rgbBlue))
End If
Next
Next
DeleteObject(hbitmap)
Return bm
End Function

とりあえずこんな感じで>>581
ただ、画質が少し悪いんだわ。。色々うまくいかない

583 :sage:2013/10/05(土) 10:41:25.51
http://stackoverflow.com/questions/13369213/getting-transparent-shell-icons-for-files-and-folders-in-c-sharp

長いので宣言部分張れないから、ここに書いてあるのを参考にしてくれ。
VB.netじゃないけど。

584 :sage:2013/10/05(土) 10:43:13.14
>>583
ここの下の方のコードね。

585 :sage:2013/10/05(土) 10:44:52.12
>>583
ごめん、宣言そもそもないね。
がんばってくれ。

586 :sage:2013/10/05(土) 10:45:38.53
<ComImportAttribute(), GuidAttribute("bcc18b79-ba16-442f-80c4-8a59c30c463b"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)> _
Public Interface IShellItemImageFactory
Sub GetImage(ByVal size As PicSIZE, ByVal flags As SIIGBF, ByRef phbm As IntPtr)
End Interface

587 :デフォルトの名無しさん:2013/10/06(日) 16:50:24.80
expect100continueが返ってくる原因が分かりません

Dim req As HttpWebRequest = CType(WebRequest.Create(post_url), HttpWebRequest)
req.Method = "POST"
req.ServicePoint.Expect100Continue = False
req.Referer = Referer
req.UserAgent = UserAgent
req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
req.ContentType = "application/x-www-form-urlencoded"
req.ContentLength = data.Length

Try
Dim reqStream = req.GetRequestStream()
reqStream.Write(data, 0, data.Length)
reqStream.Close()

Dim res As WebResponse = req.GetResponse()
Dim resStream As Stream = res.GetResponseStream()
Dim sr As StreamReader = New StreamReader(resStream, enc)
Dim resall As String = sr.ReadToEnd()

Return resall
Catch ex As Exception
Return "失敗"
End Try

588 :デフォルトの名無しさん:2013/10/06(日) 18:32:01.03
> このプロパティの値を変更しても、既存の接続には影響しません。 変更後に作成された新しい接続だけに影響します。
に引っかかったんじゃね
WebRequest作る前にServicePointManager.FindServicePointからFalseにしとけば?

589 :デフォルトの名無しさん:2013/10/06(日) 23:47:16.08
>WebRequest作る前にServicePointManager.FindServicePointからFalseにしとけば?
具体的にどうやるのでしょうか

Dim uri As New Uri(post_url)
ServicePointManager.FindServicePoint(uri).Expect100Continue = False
を直前につけてみましたがダメでした

590 :デフォルトの名無しさん:2013/10/10(木) 17:52:02.72
ソケット通信を使った物作ってます。
自分は思い通りにソケット接続できるんだけど、友達はソケット通信が全く接続できないみたいなんです
考えられる原因ってありますか?

591 :デフォルトの名無しさん:2013/10/10(木) 18:40:11.63
FW

592 :デフォルトの名無しさん:2013/10/11(金) 02:57:56.68
自分と友達とで違うところが全部考えられる原因です

593 :デフォルトの名無しさん:2013/10/11(金) 23:38:49.27
オーバーライドしたWndProcってフォームレベルスレッドで動作してるん?
直接フォーム操作していいのかな?

594 :デフォルトの名無しさん:2013/10/12(土) 00:21:38.89
それであってるよ

595 :デフォルトの名無しさん:2013/10/12(土) 00:30:48.62
あり

596 : 忍法帖【Lv=5,xxxP】(3+0:5) :2013/10/12(土) 05:16:20.18
クソスレ

597 :デフォルトの名無しさん:2013/10/12(土) 14:12:02.12


598 :デフォルトの名無しさん:2013/10/12(土) 14:17:21.47
? → 笙

599 :デフォルトの名無しさん:2013/10/13(日) 20:55:53.92
篳篥

600 :デフォルトの名無しさん:2013/10/15(火) 04:50:15.40
Shift-JISのテキストファイルをUTF-8指定で開くとどーなんの?

601 :デフォルトの名無しさん:2013/10/15(火) 09:57:47.39
List<T>のFindメソッドって値を返してくるの?
せっかく使い方覚えたから使おうと思ったらList<T>の編集のしかたがわからん・・・

Dim Kotae As Tekito = List<Tekito>.Find(AddressOf sagase)

で検索結果とって(ここまでは上手くいってる)

Kotae.Youso = "修正なう" & Now.ToString

ってやってもList<Tekito>の中身が修正されてない
参照返してるんなら修正できるはずだよな?

602 :601:2013/10/15(火) 10:26:56.76
勘違いだった
デバッグプリントミスってただけでちゃんと修正できてた

603 :デフォルトの名無しさん:2013/10/15(火) 10:40:37.19
参考までに
メソッドの返値は値しか返さない
Kotaeは(TekitoがClassであれば)参照型の値を指す

604 :デフォルトの名無しさん:2013/10/15(火) 10:45:03.15
>>601-602
はやとちりちゃんw

605 :デフォルトの名無しさん:2013/10/15(火) 18:34:04.76
よそのアプリケーションに行っているキーボードフォーカスを取り戻したい
イベントが発生したらキーボードフォーカスが自アプリになるようにする方法って何かない?
フォームをActivateしてみたけど帰ってこないよー><

606 :デフォルトの名無しさん:2013/10/15(火) 19:01:49.08
>>605
GetForegroundWindowでアクティブウィンドハンドルを取得して、
GetWindowThreadProcessIdでそのウィンドウが属するスレッドのIDを取得して、
AttachThreadInputでそのスレッドにアタッチして、
SetForegroundWindowで自アプリのウィンドウを最前面にして、
AttachThreadInputでデタッチしておわり。

607 :デフォルトの名無しさん:2013/10/15(火) 19:26:20.49
>>606
AttachThreadInputでググって見つけたコード貼り付けたらうまくいきました!
ありがとう

608 :デフォルトの名無しさん:2013/10/16(水) 20:45:06.01
正規の画面にパスワード打とうとしたら、知らない違うアプリに入力させられてました、ってか
恐ろしいアプリつくるなぁ

609 :デフォルトの名無しさん:2013/10/19(土) 16:29:28.17
フォーカス移動してもバレないように出来るのか?

610 :デフォルトの名無しさん:2013/10/21(月) 00:31:15.49
お世話になります。初心者です。

Dim RECV_bytesA() As Byte
Dim RECV_bytesB() As Byte

RECV_bytesA = System.Text.Encoding.GetEncoding("SHIFT-JIS").GetBytes("あ")
RECV_bytesB = System.Text.Encoding.GetEncoding("SHIFT-JIS").GetBytes("い")

この二つのバイト型をつなげて、STRING型の変数に"あい"と代入したいのですが
どのようにすればよいのでしょうか。

よろしくお願いします。

611 :デフォルトの名無しさん:2013/10/21(月) 00:47:49.88
Dim enc As Encoding = Encoding.GetEncoding("Shift_JIS")
enc.GetBytes(RECV_bytesA) & enc.GetBytes(RECV_bytesB)

612 :デフォルトの名無しさん:2013/10/21(月) 01:47:21.75
>>610
配列を連結して文字列に戻すか、文字列に戻して連結するか
まあ、やりたいのは文字列とか関係なく配列の連結だろ
純粋な配列を連結するようなものはなさそうだから、自分で要素をコピーするとかLinqのConcat使うとか
ググればいっぱいやり方出てくるぞ

>>611
GetBytesじゃなくてGetStringじゃないのか?

613 :610:2013/10/21(月) 02:23:33.51
結局 BitConverter.ToString(RECV_bytesA) 
で文字列にしてから連結し、改めてByteに戻しました。

今さわっているのが、Windows Compact 7 用の
Frameworkのせいか、微妙にサンプルが動かないものがあって
お聞きしました。

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

614 :デフォルトの名無しさん:2013/10/21(月) 03:30:36.11
普通に考えれば
System.Text.Encoding.GetEncoding("SHIFT-JIS").GetBytes("あ" & "い")
で良いわけだが

文字列にして結合する(そしてまたバイト列にする)にしても、
なぜEncodingつかってバイト配列にしてるのにEncodingで文字列に戻さないのか

特定のエンコーディングで表現できない文字とかどうする気なのかとか
まあ、俺の知った事ではないが

615 :デフォルトの名無しさん:2013/10/21(月) 11:15:00.62
VB2010 .net framework4.0 で開発をしています。
datagridviewで特定のセルのみ、型変更したいです。

目的は、下記の例でいうと、
入金有無(行2,列1)の箇所を、DataGridViewCheckBoxColumnにし、
check=falseの場合は、列2をReadOnlyにするなど処理を行いたいのですが、
特定のセル(入金有無)の型を変更する方法がわかりません。

行列は固定(全てDataGridViewTextBoxColumn)
行1  請求残高  300
行2  入金有無  100
行3    合計  200

説明のあるサイトへの誘導、もしくは、検索用語などお願いできませんでしょうか。

616 :デフォルトの名無しさん:2013/10/21(月) 11:16:29.50
サードパーティのコンポーネントを買いましょう

617 :デフォルトの名無しさん:2013/10/21(月) 11:36:39.21
データグリッドくらい自作しよう

618 :デフォルトの名無しさん:2013/10/21(月) 13:31:00.47
DataGridViewCheckBoxColumn, DataGridViewCheckBoxCellをそれぞれ継承して
セルが特定の状態のときチェックボックスを表示するようにするとか

619 :デフォルトの名無しさん:2013/10/21(月) 20:43:24.65
WPF+VBで通知アイコンやりたくて調べても調べても返り討ちに
遭う俺を何とかしてくれ。

C++やるのは負けだと思ってる。

620 :デフォルトの名無しさん:2013/10/21(月) 20:45:39.66
System.Windows.Forms.dllを参照に追加してデザイナじゃなくて自前でNotifyIconをいじるだけだろ?

621 :デフォルトの名無しさん:2013/10/21(月) 20:48:49.56
その簡単な説明の背後にどんだけの経験を隠してやがる?

622 :デフォルトの名無しさん:2013/10/21(月) 20:50:32.95
サルにも分かる説明をしてくれ。

623 :デフォルトの名無しさん:2013/10/21(月) 20:51:55.15
ウキッウッキッキーウキウキウキッウキウキッキー?

624 :デフォルトの名無しさん:2013/10/21(月) 20:58:28.48
間違って最初にWPFから始めて、目が慣れた後でフォームやるとデザインが
汚く見えるんだよな。フォントもメイリオでなくUIゴシック標準だし。

失敗したわ。

625 :デフォルトの名無しさん:2013/10/21(月) 20:58:43.35
http://homepage1.nifty.com/rucio/main/dotnet/ClassLibrary/L004_System.Windows.Forms.NotifyIcon.htm
これか?

626 :デフォルトの名無しさん:2013/10/21(月) 21:00:19.90
IconをセットしないといけないからSystem.Drawing.dllも参照に追加しないとな

627 :デフォルトの名無しさん:2013/10/21(月) 21:55:32.13
フォームでやるならサルでも出来る。サンプルが幾らでもあるからな。
プログラムはコピペでやるものと勘違いしている怠惰な初心者には
しかしそれは通用しないんだ。

628 :デフォルトの名無しさん:2013/10/22(火) 05:36:46.18
System.Windows.Forms.dllを参照に追加したくないなら
P/Invokeするだけだわな

Shell_NotifyIconとNOTIFYICONDATAでぐぐれ
>C++やるのは負けだと思ってる
なんてカッコイイこと言うくらいならできんだろ? あん?

System.Drawing.dllも参照に追加したくないならHICONの扱いも自前でやらなくちゃな

629 :デフォルトの名無しさん:2013/10/22(火) 12:41:54.32
なーんだw
結局だれも教えれねーんじゃんw

630 :デフォルトの名無しさん:2013/10/22(火) 12:45:28.76
追加したくないとか誰も言ってなくね?

631 :デフォルトの名無しさん:2013/10/27(日) 04:13:49.69
NumericUpDownの上下の矢印って、小さすぎるので押しづらい。
二つの矢印ボタンを横に2個並べて表示するなんて
出来ないのかな?
[    数字][↑][↓]
こんな感じに。

632 :デフォルトの名無しさん:2013/10/27(日) 09:05:36.97
 
 自 分 で つ く れ 
 

633 :デフォルトの名無しさん:2013/10/30(水) 21:29:28.08
TextBoxでEnter押下時に改行させない方法が分からなくて困っています

Private Sub Text1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) _
Handles TextBox1.KeyDown
If e.KeyCode = Keys.Enter Then
Return
End If
Return
End Sub

このような感じに考えたのですが上手く行きません
どなたか助言をお願いします。

634 :デフォルトの名無しさん:2013/10/30(水) 21:46:01.87
Multilineやめる


KeyPressでvbCrをHandledすればいいよ

635 :デフォルトの名無しさん:2013/10/30(水) 23:27:45.03
型付データセットを使ってるんだけど、DBNullの項目を引数で使うとExceptionを発生させない方法ってないですかね?
String型ならNullValueいじってなんとかできるけど、Numberとかは、無理なのかね

636 :デフォルトの名無しさん:2013/10/31(木) 01:11:34.39
何の引数に何を使うと何の例外がでるのかちゃんと書けよ

637 :デフォルトの名無しさん:2013/11/02(土) 08:18:40.61
formのloadが完了するまでイベントを全部停止するような
ことは出来ませんか?
というのは、formがnewで作られる時に
formの上に載っているcheckboxやnumericalupdown
などのchangeイベントが発生して、それらの関数に飛ぶんですが、
それを避けたいのです。
formのloadが完了したらそういうイベントハンドラ関数を
有効化したいんですが。

638 :デフォルトの名無しさん:2013/11/02(土) 09:11:28.69
各イベントでフラグ見てれば
Changedが発生したぐらいで問題になる構成を見直した方が

639 :デフォルトの名無しさん:2013/11/02(土) 13:33:19.53
Handles以降全削除してLoad時にAddHandlerすれば?
初期化中フラグ用意して該当のイベントの先頭で確認するという手もあるにはあるが

640 :デフォルトの名無しさん:2013/11/02(土) 15:11:56.97
>>638,639
やっぱりフラグ使うしかないのかな。
イベントを停止できれば一番簡単なのですが。
皆さんこういう場合どうしています?

641 :デフォルトの名無しさん:2013/11/02(土) 15:16:30.99
だから既に書いてあるじゃんw

Formがロード済みかどうかを表すプロパティを作ってそれを参照するか、
またはHandlesを使わずにイベントの紐付けをコードでやるかだよ

642 :639:2013/11/02(土) 16:39:13.15
>>640
イベント数によるな
1〜2個程度ならフラグでやるかもね
基本AddHandler使うと思う

643 :デフォルトの名無しさん:2013/11/02(土) 17:21:09.53
元質問関係ないけど
Handles のイベントハンドラーの結びつけってどの段階で行われてるんだろ
C#とか実行時に全部AddHandlerする形のはずだが
コンパイル段階で終わってるなら、AddHandlerとかやるより速度的に有利?

644 :デフォルトの名無しさん:2013/11/02(土) 17:50:11.06
コンパイル時には結びつけるべきインスタンスは存在してねえよ

645 :デフォルトの名無しさん:2013/11/02(土) 18:39:19.64
>>643
HandlesはAddHandlerのシンタクスシュガーでしかないんで
プログラマがコードを記述するのは簡単になるけど
処理速度が向上するようなもんじゃないよ。
コンパイル時にコンパイラがHandlesをAddHandlerに書き換えてるだけ。

646 :デフォルトの名無しさん:2013/11/02(土) 18:48:48.98
それってどのタイミングでやってるんだろうな
どうせInitializeComponentでコントロールに値セットしてイベント発生してるんだろうから
そのタイミングをコントロール出来れば良いんじゃないかと思うんだが

647 :デフォルトの名無しさん:2013/11/02(土) 19:15:25.66
>>645
本当はそんなに単純じゃないけどね。

648 :デフォルトの名無しさん:2013/11/02(土) 19:47:52.97
ミニマムのコードを用意してみた
ildasmなどで確かめるといいよ

http://ideone.com/YDCzQU

と気になったんだけど、MSのと動作違うな
outputが表示されない

649 :デフォルトの名無しさん:2013/11/02(土) 19:52:34.31
WithEventsなフィールドは実はプロパティで
setterでAddHandlerしてるんだったはず

650 :デフォルトの名無しさん:2013/11/02(土) 21:23:14.59
それってそのプロパティにセットされたときに
そのオブジェクトに対応するHandles句すべて検索してAddHandlerしてるって事?
それだとそっちの方がパフォーマンス的には悪そうだな
まあ、誤差程度の差だろうしハンドルの対応を動的に変更する必要が無いなら
Handles句のほうがすっきりしてて俺は好きだが

651 :デフォルトの名無しさん:2013/11/02(土) 21:26:04.24
>>650
いや別のオブジェクトがセットされるときに前のからは登録解除するから
検索する必要はない

652 :デフォルトの名無しさん:2013/11/02(土) 21:39:00.25
とにかく全イベントをdisable、enableするみたいな
事が出来るとありがたい。無理かな。

653 :デフォルトの名無しさん:2013/11/02(土) 22:12:28.45
そういう発想VVBerっぽい

654 :デフォルトの名無しさん:2013/11/02(土) 22:17:20.75
ボタンを押した時の処理をコードから実行させたいときに
当然のようにボタンのクリックイベントを発生させようとするのがVBerだからね

655 :デフォルトの名無しさん:2013/11/03(日) 00:24:15.77
いや、subなりfunctionに分けるでしょ

656 :デフォルトの名無しさん:2013/11/03(日) 00:30:36.04
フォームを開くかどうか判断するのは開こうとしてるフォームのLoadイベントで
配列のソートはDataSetで
これがVBerやで

657 :デフォルトの名無しさん:2013/11/03(日) 00:56:33.36
>>646
>>648のコードを逆コンパイルしたらこうなった。コンストラクタで行われるみたい。
https://www.evernote.com/shard/s343/sh/b7741184-24e9-4053-af8d-b20d6e5ccc15/6f8e5f9156d3f5147f7d1a547328716c

658 :デフォルトの名無しさん:2013/11/03(日) 01:35:58.25
>>646
コントロールにはイベントが発生しない状態があるんでInitializeComponentで色々弄っても平気なの

659 :デフォルトの名無しさん:2013/11/03(日) 02:28:04.70
>>654
そりゃVBってそういうもんだしな
きっちり作る場合はVB使うなって話で

>>656
そもそも配列を使わないのでソートとかも無い
FlexGridのソート機能は知ってる

そんなのをVB.NETにコンバートすると
>>637みたいな問題がてんこ盛りになるのよね

660 :デフォルトの名無しさん:2013/11/03(日) 04:11:50.06
>>658
イベントが発生しない状態について詳しく
それで>>652の希望がかなうんじゃないのかね

661 :デフォルトの名無しさん:2013/11/03(日) 09:02:01.64
>>660
ごめんBeginInit/EndInitがそういうものだと思ってたんだけど、イベント発生するわw
となるとイベント割り当ての前にプロパティ設定してるから発生しないってだけだね

662 :デフォルトの名無しさん:2013/11/03(日) 11:32:36.01
VBer脳ばっか

663 :デフォルトの名無しさん:2013/11/03(日) 14:13:18.49
そりゃあVBスレだもの

664 :デフォルトの名無しさん:2013/11/03(日) 14:14:20.57
イベントハンドラにSQLは基本ですよね

665 :デフォルトの名無しさん:2013/11/03(日) 16:11:58.95
顧客は綺麗なソースを求めているんじゃない
動くアプリケーションを求めているんだ

666 :デフォルトの名無しさん:2013/11/03(日) 16:17:49.04
ポエマーきもっ

667 :デフォルトの名無しさん:2013/11/03(日) 18:19:45.66
綺麗なソースて個人レベルじゃ自己満足だよね



数年後に自分で書いたコードを解読する手間を考えなければw

668 :デフォルトの名無しさん:2013/11/03(日) 19:07:19.89
>>667
正論スグルw

669 :デフォルトの名無しさん:2013/11/03(日) 19:39:57.25
>>665
いつの話をしてるんだ?w

670 :デフォルトの名無しさん:2013/11/04(月) 21:50:35.58
TextboxやComboboxをカスタマイズして自作の
コントロールを作りたいのですが、その場合
WndProcをOverrideするのとOnPaintなどを
Overrideするのとで何か違いがありますか?
どっちの方法でも良いですか?何か注意事項
などあれば教えて下さい。

671 :デフォルトの名無しさん:2013/11/04(月) 21:54:49.34
TextBoxやComboBoxの描画はカスタマイズできない
WndProcなら出来るかもしれんが未定義動作だ

672 :デフォルトの名無しさん:2013/11/06(水) 19:21:13.62
漏れわマイクロソフトを信じてVB.NETを勉強したが
スマホわJAVAだったからまいったよ

673 :デフォルトの名無しさん:2013/11/06(水) 20:14:42.08
似たようなもんだろ

674 :デフォルトの名無しさん:2013/11/06(水) 20:18:45.83
CとVBとLISP出来れば大抵の言語は出来る

675 :デフォルトの名無しさん:2013/11/07(木) 07:34:14.15
本当にVB.NETを理解して正しく使えているのなら、言語に関してはJavaで新たに学ぶべきことは何もない
つまりお前はVB.NETを理解していない

676 :デフォルトの名無しさん:2013/11/07(木) 18:23:58.06
VB6で作ったCOMコンポーネントをVB.NETに移植する拷問を受けてるんだけど聞いていいかな
アセンブリのGUIDは元になったCOMコンポーネントのGUIDをそのまま使った方が良いのか?悪いのか?
出来ればだけどもっともらしい理由を添えてくれたら嬉しい

677 :デフォルトの名無しさん:2013/11/07(木) 22:11:50.27
そのコンポーネントを使ってるアプリに変更を要求するようなら
GUID変えたほうがいいし、アプリ側はそのままでおkにしたいなら
GUID変えないほうがいいし

678 :デフォルトの名無しさん:2013/11/08(金) 15:37:13.85
バージョンごとにCLSIDつけれないの?

HKEY_CLASSES_ROOT\KusoApuri ← VB6のAppIDとする
HKEY_CLASSES_ROOT\KusoApuri.1 ← VB.NETのAppID

にして……ってCOMのバージョン管理の基本じゃね?
VB6なんかと共存する気がないというなら上書きしちゃえば

679 :デフォルトの名無しさん:2013/11/09(土) 23:16:20.42
Form1のButton1を押すと、Form2が別プロセスで起動するようにしたいので、
Process.Start("From2.exe")で出来たのですが、この時にいくつかの
パラメータを渡したいのですがどうしたら良いでしょうか?
あるいは、Process.Startを使う以外に良い方法はありますか?

680 :デフォルトの名無しさん:2013/11/09(土) 23:29:31.77
まさかコマンドライン引数を知らないとか?

681 :デフォルトの名無しさん:2013/11/09(土) 23:58:57.76
プロセス間通信でググれと言ってみる

682 :デフォルトの名無しさん:2013/11/10(日) 00:01:53.60
>コマンドライン引数
コメントありがとうございました。
さっそく調べて試したところ、文字列なら渡せたのですが、
もっとたくさんのデータを渡す場合は一般的にどうするのでしょうか?
たとえば、構造体の中身全部とか、配列の中身を全部とか
渡したいのですが。よろしくお願いします。

683 :デフォルトの名無しさん:2013/11/10(日) 00:11:04.53
標準入力使うとかWCF使うとか

684 :デフォルトの名無しさん:2013/11/10(日) 00:33:33.18
根本的な疑問があるんだが
ホントに別プロセスでフォーム起動させる必要があるのか?

685 :デフォルトの名無しさん:2013/11/10(日) 02:01:50.99
業務だとバカばっかりだから、スッパリと分けちゃったほうが破綻しにくいのは確かだよ
COBOLの頃からの伝統的なやり方だ

686 :デフォルトの名無しさん:2013/11/10(日) 03:35:34.84
いや、それはリソースを一手に管理するDCがあるから出来るわけで
データ引き渡しどうしようとか言ってるレベルの人間が設計してうまくいくわけないと思うが

687 :デフォルトの名無しさん:2013/11/10(日) 04:14:22.67
>>683-686
みなさんコメントありがとうございます。
もともとはForm1だけだったのですが、Form1のプロセスで数分かかる計算させると
Form1が操作できなくなるので、別プロセスで計算させるのが目的です。
Form2はCancelボタンなど配置する予定です。とりあえず
データの受け渡しは、小さなものは引数で、大きなデータはファイルでやってみます。

688 :デフォルトの名無しさん:2013/11/10(日) 05:30:31.11
そういうのはスレッドでやれ

689 :デフォルトの名無しさん:2013/11/10(日) 09:38:49.57
.NETじゃないVBならActiveXのexe作って別プロセスでやってたパターンだが
VB.NETならそれ別スレッドでやるのが妥当だと思われ

690 :デフォルトの名無しさん:2013/11/10(日) 11:01:21.07
bgworker使おうぜ

691 :デフォルトの名無しさん:2013/11/10(日) 11:08:26.10
んなもん使うな
Task使え

692 :デフォルトの名無しさん:2013/11/10(日) 14:31:41.69
生スレッド使え

693 :デフォルトの名無しさん:2013/11/10(日) 14:46:39.76
VBerに刃物を握らせちゃいけません!

694 :デフォルトの名無しさん:2013/11/10(日) 22:46:34.26
Formアプリはスレッド使えないだろ
STAThreadだからな

695 :デフォルトの名無しさん:2013/11/10(日) 23:15:21.89
Timerイベントで少しずつやるんだ

696 :デフォルトの名無しさん:2013/11/10(日) 23:29:48.63
>>694
アホか
普通に使えるわ

697 :デフォルトの名無しさん:2013/11/11(月) 01:12:14.11
>>679
>Process.Startを使う以外に良い方法はありますか?
全部一個のプロジェクトにするか、Form1のプロジェクトからForm2のexeかプロジェクトに参照設定して
Form1からForm2のインスタンス生成して表示するなりなんなり

698 :デフォルトの名無しさん:2013/11/11(月) 08:53:16.64
>>696
サードのコンポーネントで問題になる場合があるみたい

699 :デフォルトの名無しさん:2013/11/11(月) 08:57:35.18
強引だけどこんな感じ

Imports System.Threading
Imports System.Windows.Forms
Module Program
 <STAThreadAttribute>
 Sub Main()
  Dim th = new Thread(new ThreadStart(
    Sub() Application.Run(new Form() With { .Text = "Form2" })))
  th.SetApartmentState(ApartmentState.STA)
  th.Start()
  Application.Run(new Form() With { .Text = "Form1" })
 End Sub
End Module

700 :デフォルトの名無しさん:2013/11/11(月) 09:02:39.25
>>698
アパートメントの設定はスレッド単位だから、
STAが必要なら新しくつくるスレッドのアパートメント設定すればいいよ
>>699はそれをやってる

701 :デフォルトの名無しさん:2013/11/11(月) 09:07:11.60
>>700
STAでも、って抜けてたすまん

702 :デフォルトの名無しさん:2013/11/11(月) 10:44:51.79
これがVB脳か
膿んでるな

703 :デフォルトの名無しさん:2013/11/11(月) 13:41:40.71
>>701
それってもしかして、Control.BeginInvokeが必要なケースじゃね?
STA/MTAとは別の話だろ。

704 :デフォルトの名無しさん:2013/11/11(月) 18:27:21.06
スレッドなんか使うなよ
バグを生産するだけ
実行時の効率より開発効率を重視しなさい

705 :デフォルトの名無しさん:2013/11/11(月) 20:09:23.50
>>703
前に見かけたのと違うけどこんなようなやつ。

メインスレッドとは別のスレッドでC1DockingTabを貼り付けたフォームを表示するとエラーが発生する
http://www.grapecity.com/tools/support/technical/knowledge_detail.asp?id=36700

706 :デフォルトの名無しさん:2013/11/11(月) 20:22:48.34
>>698
使える事と、正しく使わないと問題が発生することは矛盾しないぞ

707 :デフォルトの名無しさん:2013/11/11(月) 20:34:41.30
文書種別がBugだから「使えない」のだろう

708 :デフォルトの名無しさん:2013/11/12(火) 00:04:41.64
コントロールパネルの「デバイスとプリンター」に表示される
プリンターのアイコンを「SHGetFileInfo」を使って取得したのですが、
「通常使うプリンター」に設定すると付くチェックマークまで付きます。

このチェックマークのないアイコンを取得する方法があるでしょうか?

709 :デフォルトの名無しさん:2013/11/12(火) 05:27:12.48
どうやってんのか知らんが
SHGFI_SYSICONINDEXでシステムイメージリスト内のインデックスとって
ImageList系API使えばどうよ

710 :デフォルトの名無しさん:2013/11/14(木) 16:48:01.89
現在、各サブ画面はDLL化され、メニュー.EXEから呼ばれるようなシステムの改修をしいてます
諸事情でまだ有償ツールの開発ツール(帳票や画面のグリッド関連)に関してはインストールしていません
だからか、各機能すべてビルド時に「LC.EXEはコード-1を伴って終了しました」とエラーとなってしまいます
その後license.licxをプロジェクトから除外しビルドは正常完了しました
しかし、生成したメニュー.EXEを起動すると「適切なlicenseが与えられていない」とエラーが出て、画面起動できません
有償ツールのDLLがあれば、開発ツールのインストールをしなくてもビルド出来ると思っていたのですが、やはり無理でしょうか?

711 :デフォルトの名無しさん:2013/11/14(木) 18:19:27.10
その有償ツールの販売元に聞けよ

712 :デフォルトの名無しさん:2013/11/14(木) 19:15:12.24
>>710
強いるなよw

LC.exeはライセンスコンパイラ
licxでライセンス有るよって宣言して、ビルド時、
その製品固有の方法で正規購入者かどうかチェックされ、OKならアセンブリにライセンスが付与される。
実行時はそのライセンスが検証され問題あればエラー。

713 :デフォルトの名無しさん:2013/11/14(木) 19:34:26.60
>>711
すみません…
まったくその通りなのですが、色々と事情がありましてorz

>>712
ホワアァア!やはり無理なのですね
回答頂き、ありがとうございました
上司に掛け合ってツール買ってもらいます…

714 :デフォルトの名無しさん:2013/11/14(木) 19:38:57.92
試用版あるでしょ?

715 :デフォルトの名無しさん:2013/11/17(日) 04:11:18.98
Backgroundworkerの RunWorkerCompleted イベントって、メインのスレッドから
実行されるのでしょうか?それともBackgroundworkerのスレッドから実行
されるのでしょか?

716 :715:2013/11/17(日) 04:13:48.93
>>715
表現がおかしかったので訂正します。質問は、

Backgroundworkerの RunWorkerCompleted イベントハンドラ関数内で実行したコマンドは、
メインのスレッドから 実行されるのでしょうか?
それともBackgroundworkerのスレッドから実行されるのでしょか?

717 :デフォルトの名無しさん:2013/11/17(日) 05:03:36.78
RunWorkerCompletedやProgressChangedは
メインスレッドがGUIスレッドならメインスレッドで動作する。
そうでないならDoWorkと同じバックグラウンドスレッドで動作する。

718 :デフォルトの名無しさん:2013/11/17(日) 10:42:25.95
>>717
ありがとうございます。

719 :デフォルトの名無しさん:2013/11/17(日) 11:54:33.49
試してみればすぐ分かることやんな?

720 :デフォルトの名無しさん:2013/11/17(日) 11:57:17.74
試してわかることじゃないな

721 :デフォルトの名無しさん:2013/11/20(水) 19:08:14.82
無知です。

Static num As Integer

↑のような変数宣言ってC#では無いの?

722 :デフォルトの名無しさん:2013/11/20(水) 19:19:02.75
>>721
無い
Staticってキーワードは意味が違う

723 :デフォルトの名無しさん:2013/11/20(水) 19:40:45.47
>>722
ありがと

724 :デフォルトの名無しさん:2013/12/07(土) 00:05:48.76
配列の中身を順番に見ていって中身に特定の値があるかどうかみたいんですが


dim test = new String() {"hoge", "fuga", "piyo"}


If (from t in test where t == "piyo").count > 0 then

end if



こんなのを書こうとしたらコンパイル通りませんでした・・・・
rubyのany?みたいなのはないのでしょうか

725 :デフォルトの名無しさん:2013/12/07(土) 00:27:30.10
これは………
ggrksしかなかろう

726 :724:2013/12/07(土) 01:11:34.77
いい忘れましたが、for eachで書くのは知っていますが
もっといい方法があるか知りたいのです

dim b = false
for each t in tests
if t = 'piyo' then
b = true
break
end if
next


とか

727 :デフォルトの名無しさん:2013/12/07(土) 01:24:21.20
>>726
なぜかこっちは違ってないね

 =

728 :724:2013/12/07(土) 01:27:35.74
>>727
1年前までC#やっていて今年いきなりVBやらされたんです

729 :724:2013/12/07(土) 01:35:17.24
すいません ググったらありました
LINQ(ienumerable)で探していたんですが、それ以前にArrayのクラスメソッドだったんですね

730 :デフォルトの名無しさん:2013/12/07(土) 02:09:01.18
C#やってたんなら、C#で書いた場合のコードを書けばよかったんじゃね

731 :デフォルトの名無しさん:2013/12/07(土) 16:10:04.73
CountよりAnyの方がいいよ

732 :デフォルトの名無しさん:2013/12/08(日) 14:51:55.71
Usingって使わなくてもいいんでしょ?

733 :デフォルトの名無しさん:2013/12/08(日) 15:01:57.83
AnyとAllの違いってなんなんだろな

734 :デフォルトの名無しさん:2013/12/08(日) 15:20:32.67
Anyは条件に合致する行が1つでもあればtrue
Allは条件に合致する行が全てならtrue

Anyは1行目で合致すればそこで終わる分速いはず

735 :デフォルトの名無しさん:2013/12/08(日) 15:35:52.76
Anyはexistsみたいなもんね

736 :デフォルトの名無しさん:2013/12/08(日) 15:39:06.44
containsはないの?

737 :デフォルトの名無しさん:2013/12/08(日) 15:46:29.43
あるじゃん

738 :デフォルトの名無しさん:2013/12/11(水) 21:14:16.41
Process1.Start()を使ってEXCEL.EXEを非表示の状態で起動することは
出来ないでしょうか?

739 :デフォルトの名無しさん:2013/12/15(日) 20:07:17.36
COM使って起動すればデフォルト非表示だけど、それじゃダメですか

740 :デフォルトの名無しさん:2013/12/15(日) 20:09:21.93
COMは死滅させるべきなので利用しない方がいいです

741 :デフォルトの名無しさん:2013/12/15(日) 21:29:54.00
Win8ストアアプリはCOMベースなんですが

742 :デフォルトの名無しさん:2013/12/15(日) 21:34:31.19
COMが分からないアホなオレ、、、orz

勝手に想像すると、フォームクラス以上に偉いクラスな気がする。
ググッて勉強してみるか、、、、

743 :デフォルトの名無しさん:2013/12/15(日) 21:40:51.41
旧式のNET Frameworkみたいだね。

744 :デフォルトの名無しさん:2013/12/17(火) 16:37:00.41
Webブラウザーコントロールで
navigateメソッドをループしてもページが切り替わりません。
ループから出たときに初めて切り替わります。
ループないで切り替わるようにしたいんですが解決策をキボンヌ(´・ω・`)

745 :デフォルトの名無しさん:2013/12/17(火) 17:00:56.54
漏れのbotで俳諧するプログラムでは、こんな感じのコード書いてるけど、もっと良い方法もあるかもね。


WebBrowser1.Document.GetElementsByTagName("A").Item(21).InvokeMember("Click") 'サイトのリンクをクリック
Application.DoEvents() '「命令されたことをすぐやれ」という命令  コレでウェブブラウザーを即時表示させる。
OpenWebWait() '読み込み終わりを待つ

'2秒待機して読み込み終わりかを判断するファンクション
Public Function OpenWebWait() As Boolean
Try
'2秒間ほど待機
System.Threading.Thread.Sleep(2000) '2秒間
'読み込み完了まで待つ
Do While (WebBrowser1.IsBusy OrElse _
WebBrowser1.ReadyState <> WebBrowserReadyState.Complete)
'無処理
System.Windows.Forms.Application.DoEvents()
System.Threading.Thread.Sleep(100)
Loop
Return True
Catch ex As Exception
Return False
End Try
End Function

746 :デフォルトの名無しさん:2013/12/17(火) 17:11:44.64
>>745
745さんありがとう
参考にさせてもらいます!

747 :デフォルトの名無しさん:2013/12/17(火) 17:24:43.75
745さんサンクス!!
ばっちりできました

748 :デフォルトの名無しさん:2013/12/17(火) 19:33:31.05
それはなにより^^

749 :デフォルトの名無しさん:2013/12/17(火) 20:52:52.35
なんか和むな、いいぞ>>745

750 :デフォルトの名無しさん:2013/12/18(水) 12:20:06.85
Oracleを利用するアプリケーションを開発する場合、ODPが使えない環境で、これから開発しようとする時には、oo4oとADOどちらを利用するのがいいですか?

751 :デフォルトの名無しさん:2013/12/18(水) 14:06:53.76
ウェブサービス

752 :デフォルトの名無しさん:2013/12/19(木) 08:57:06.11
どちらも過去の技術です
いつサポートが切れるかわからないので避けた方が良いでしょうね

753 :デフォルトの名無しさん:2013/12/19(木) 10:07:42.38
OCI

754 :デフォルトの名無しさん:2013/12/19(木) 18:04:08.74
OLE DBも切り捨てだし、ODBC一択だな

755 :デフォルトの名無しさん:2013/12/19(木) 18:10:27.95
切り捨てられるのはodbcって何処かで読んだ

756 :デフォルトの名無しさん:2013/12/19(木) 20:20:08.37
VBでLongの下位32ビットのビットイメージをそのままIntegerの変数にコピーする
一番簡単な方法ってどんなのがある?

オーバーフローチェックをOffにする以外で。

757 :デフォルトの名無しさん:2013/12/19(木) 20:33:34.60
BitConverter.GetBytesからBitConverter.ToInt32とか

758 :デフォルトの名無しさん:2013/12/19(木) 22:44:32.08
やっぱりそれかね。
なんかまどろっこしいな。
もう少し直接的な方法がないものかと思うんだけど。

これだけのために共用体作るのもあほらしいし。

759 :デフォルトの名無しさん:2013/12/19(木) 23:49:30.47
負の数をAndでマスクしようとするとオーバーフローだからどうしようもないだろうな
VB内の演算だけでやるんなら符号によって分岐して計算するしかないんじゃね

760 :デフォルトの名無しさん:2013/12/19(木) 23:54:31.81
signed->unsignedのキャストがダメなら
せめてJavaみたいな論理右シフトがあれば何とかなるのにな
せっかく一通りのビット演算子があるのにほとんど使い物にならん

761 :760:2013/12/20(金) 00:25:11.98
いやこれでいいのか
CType(((x << 32) >> 32), Int32)

762 :デフォルトの名無しさん:2013/12/20(金) 19:47:01.33
そもそもLongで持ってるのが設計ミスじゃないのかと

763 :デフォルトの名無しさん:2013/12/20(金) 20:25:57.35
設計ミスって.NETの世界で「設計」するのなら最初からそんな作りにするわけがないでしょ

764 :デフォルトの名無しさん:2013/12/21(土) 07:36:13.81
ちょっと何言ってるのか分からない

765 :デフォルトの名無しさん:2013/12/21(土) 09:54:35.19
意訳すると
人生設計ミスって.Netで設計するような職についたのならいっそ死ねばよかった
ってところかな

766 :デフォルトの名無しさん:2013/12/21(土) 10:09:40.90
vb.netのソースコードで感動するような美しいソースコード
何処かにありませんか?
変数名の付け方や大文字小文字の
使い方など参考にしたいんです。

767 :デフォルトの名無しさん:2013/12/21(土) 10:18:20.02
C#のオープンソースプロジェクトを読むのがおすすめ
ASP.NET MVC なんかMS謹製だし今風で綺麗だよ
そしてC#と同じように書くのがVB.NETの正しい使い方

768 :デフォルトの名無しさん:2013/12/21(土) 12:07:03.97
>>766
vb.netじゃないけど、

x = 1 - x

これでビットもしくはフラグ反転

俺が知ってる最も美しいコードの一つ。

769 :デフォルトの名無しさん:2013/12/21(土) 13:23:35.98
VBだとオーバーフローするな

770 :デフォルトの名無しさん:2013/12/21(土) 15:19:43.68
>>764-765
馬鹿だろお前。
この手のビットフィールド的な処理はアンマネージドコードと連携する時に必要になるに決まってる

771 :デフォルトの名無しさん:2013/12/21(土) 18:26:04.06
で、アンマネージドなコードでは何ビットでそのデータもってるの?
そもそもなんでマネージドな世界でビット長変更してるの?

772 :デフォルトの名無しさん:2013/12/21(土) 18:28:38.28
Nbitの上位と下位で別の情報格納するとかよくあるよね

773 :デフォルトの名無しさん:2013/12/21(土) 18:37:10.49
ビットフィールドなら最初からバイト(配列)で持てば良いのに

774 :デフォルトの名無しさん:2013/12/21(土) 18:37:57.94
ビットフィールドに符号付き数値使うやつもどうかと思うが

775 :デフォルトの名無しさん:2013/12/21(土) 19:21:11.86
>>767
情報ありがとうございます。早速見てみます。
ちなみに、『今風』っていうのは、具体的にどんな書き方を指すんでしょうか?

776 :デフォルトの名無しさん:2013/12/22(日) 01:15:53.89
・もちろん完璧なオブジェクト指向
・ユニットテストを非常に重視
・asyncとかLINQとかラムダとか最近の機能も適切に利用
・MS以外の他のOSSも活用
簡単に言えば全くVBっぽくない書き方ってことだな

777 :デフォルトの名無しさん:2013/12/22(日) 05:31:21.26
それVBである必要も無いよな

778 :デフォルトの名無しさん:2013/12/22(日) 11:05:50.09
HEX()とかVAL()とかの互換関数を使わないって程度かなぁ〜

779 :デフォルトの名無しさん:2013/12/22(日) 12:53:12.20
ユニットテストのコードを読むのってプログラミングの素養を磨くにはいいと思う
MSのコードはかなりきちんとテストしてるしテストしやすいように設計されてる

780 :デフォルトの名無しさん:2013/12/22(日) 13:41:42.95
ユニットテストがしやすいクラスは自然と使いやすいクラスになるからね

781 :デフォルトの名無しさん:2013/12/23(月) 13:00:17.28
WebBrowserの通信内容(生パケットまたはHTTPリクエスト)をTextBoxに書き出す方法は無いですか?

782 :デフォルトの名無しさん:2013/12/23(月) 13:51:59.35
普通にパケットキャプチヤしろよ

783 :デフォルトの名無しさん:2013/12/23(月) 18:41:55.51
そもそも普通は通信内容に関知しなくていいからブラウザのコントロール使うわけだが

784 :デフォルトの名無しさん:2013/12/23(月) 18:45:09.37
>>781
> WebBrowserの通信内容(生パケットまたはHTTPリクエスト)をTextBoxに書き出す方法は無いですか?

httpfox

785 :デフォルトの名無しさん:2013/12/25(水) 00:29:05.78
メリークリスマス

786 :デフォルトの名無しさん:2013/12/25(水) 08:30:18.88
うるさい働け

787 :デフォルトの名無しさん:2013/12/26(木) 13:22:03.06
MDIの子フォーム1にあるButton1をクリックすると子フォーム2にあるTextBox1に文字列を代入したいのですが上手くできません
子フォーム1がForm1で子フォーム2がForm2だとして
Button1のクリックイベントに
Form2.TextBox1.Text = "test"
と書いたのですがTextBox1には表示されません
試しにForm1にButton2を追加して
MessageBox.Show(Form2.TextBox1.Text)
とやると書かれていないはずなのに test が表示されます
どのようにしたらTextBox1に文字が表示されますか?

788 :デフォルトの名無しさん:2013/12/26(木) 13:40:01.62
>>787
MDI自体をupdateかrefreshしたらどう?

789 :デフォルトの名無しさん:2013/12/26(木) 15:02:30.20
MDI自体というのは具体的に何のことですか?

790 :デフォルトの名無しさん:2013/12/26(木) 21:37:04.26
>>787
子フォームを
Dim f As New Form2()
f.Show()
のように New して表示してるなら、
f.TextBox1とForm2.TextBox1は別物。
f.TextBox1.Text = "test" ってしないと変わらない。

791 :デフォルトの名無しさん:2013/12/26(木) 23:12:23.70
VB相変わらずだなぁ
その仕様は誰かを幸せにできたのか?

792 :デフォルトの名無しさん:2013/12/27(金) 01:09:46.59
結局最低限のオブジェクト指向を理解していないと使えないのに
中途半端にデフォルトインスタンスなんて糞を導入したからおかしくなった

793 :デフォルトの名無しさん:2013/12/27(金) 02:21:45.70
>>790
出来ました
ありがとうございます

794 :デフォルトの名無しさん:2013/12/27(金) 02:45:19.07
VB.NET2013の勉強をはじめようと思います
入門サイトを教えてください

795 :デフォルトの名無しさん:2013/12/27(金) 02:46:15.41
WindowsフォームとWPF
どちらを使うべきですか?

796 :デフォルトの名無しさん:2013/12/27(金) 03:28:16.60
デフォルトインスタンスはいったん廃止して復活するという迷走ぶりだったからなぁ

797 :デフォルトの名無しさん:2013/12/27(金) 07:49:49.96
>>795
どっちが優れてるかはともかく、VBでWPF使う奴なんかいない
そもそも先に進めないからかこそVBに固執してるんだから

798 :デフォルトの名無しさん:2013/12/27(金) 07:58:39.96
>>794

799 :デフォルトの名無しさん:2013/12/27(金) 22:27:25.92
>>794
C#の入門サイトや本読んでC#から入るのがおすすめ
その上で必要ならVBに乗り換えるのがベスト
VBから入ると頭悪くなる

800 :デフォルトの名無しさん:2013/12/27(金) 22:37:01.90
VBの解説サイト(C#を扱ってないVB専門のサイト)って
書いてる本人もよく分かってなかったりする
特にオブジェクト指向の学習なんて全く望めない

801 :デフォルトの名無しさん:2013/12/28(土) 00:05:02.12
.NETのライブラリでVB6の構文解析するやつありませんか?
出来ればタダのライブラリがいいです

802 :デフォルトの名無しさん:2013/12/28(土) 02:01:45.16
知らんけど多分パーサジェネレータにBNF記法で表現したVB6構文を与えてパーサを生成する流れかと

803 :デフォルトの名無しさん:2013/12/28(土) 10:17:17.38
ANTLRでも使えば
ランタイムは.NET版あるし文法ファイルも探せばどっかに転がってるでしょ

804 :デフォルトの名無しさん:2013/12/28(土) 15:09:08.01
勿論、俺は、C#なんか学ばず、VB.NETから入門しますた^^

805 :デフォルトの名無しさん:2013/12/28(土) 19:30:37.38
フォームをダブルクリックして自動生成される

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

End Sub

の部分って、不要になったらエディタで削除してしまってもかまいませんか?
それとも削除する為に必要な特別な手順などあるでしょうか?

806 :デフォルトの名無しさん:2013/12/28(土) 19:43:00.95
意味が解らん自由にやりゃ良いじゃねーか
そもそも不要なダブルクリックとかするなよとは思うが

807 :デフォルトの名無しさん:2013/12/28(土) 19:45:53.31
大体Loadって不要にならないよな

808 :デフォルトの名無しさん:2013/12/28(土) 20:05:52.82
BackgroundWorkerのProgressChangedって
ProgressChangedの処理が終わる前に新しいReportProgressで呼ばれた場合どうなるの?
ProgressChangedの処理が終了してから逐次実行?

809 :デフォルトの名無しさん:2013/12/28(土) 20:17:49.56
そだよ

810 :デフォルトの名無しさん:2013/12/28(土) 21:24:53.77
>>809
ありがとう

811 :デフォルトの名無しさん:2013/12/29(日) 04:20:52.72
>>797
俺使ってるけど、何を根拠に言ってんの?

812 :デフォルトの名無しさん:2013/12/29(日) 11:10:45.41
>>811
おこなの?

813 :デフォルトの名無しさん:2013/12/29(日) 11:39:25.75
>>811
ネットで調べるときほとんどC#のコードしかないのは自分でよくわかってるだろ?
無理しなくていいんだぞ

814 :デフォルトの名無しさん:2013/12/29(日) 12:13:07.42
>>813
だから誰も使ってないって何を根拠に言ってんの?
ググれはWPF+VB.NETのコードなんか当たり前に出てくるけど

815 :デフォルトの名無しさん:2013/12/29(日) 12:16:01.89
C#とVBの脳内変換くらいはタイムラグ無しに出来ないと辛いだろう
別にネットの文献がC#だけでも困らないよ普通

816 :デフォルトの名無しさん:2013/12/29(日) 12:19:38.00
まさか>>814はVB専の情報源だけでWPF使ってるんだろうか
むしろ凄いと思うわ

817 :デフォルトの名無しさん:2013/12/29(日) 12:23:14.90
>>814
どっちが優れてるかはともかく、VBでWPF使う奴なんか殆どいない

こうすれば良かったのか?
自然言語なんだから空気や行間読んで欲しい

その前に根拠は書いてあるじゃん
>そもそも先に進めないからかこそVBに固執してるんだから
思い込みだけど否定は出来んな

818 :デフォルトの名無しさん:2013/12/29(日) 12:35:33.53
>>815-817
自演くせぇなぁ

819 :デフォルトの名無しさん:2013/12/29(日) 12:43:15.90
>>815-817のヤツはC#だけしか使えないのか
仕事だったらVBごりってくる客もいるしどっちも使うわ、どっちも使った上で言うけど差なんかねぇよ
C#に夢見過ぎてんじゃねぇの?

820 :デフォルトの名無しさん:2013/12/29(日) 13:12:36.44
「VB6土方の受け皿がVB.Netだからそういった人達がWPFってのは考えにくいよね」
一般論としては正解だと思う
その実、C#とVBは本質的には同じだから、プログラマならどちらでもいけるだろう
というのも正しい

はい論破

821 :デフォルトの名無しさん:2013/12/29(日) 13:23:56.99
WPFってVBと微妙に相性がよくないのは確かだったような...

俺はカーリーブラケットでブロックを表す書き方が好きじゃないからVBには頑張って欲しかったんだが、
2005のジェネリックとかまでは我慢して使ってたけど、2008のラムダが決定的だけど、
最近では何を書くにも冗長なVBの悪いところが目立つ間違った方向に進歩しちゃった印象が強いな。

VB6からのマイグレーションという役割はもう十分果たしたし、初心者にとって
C#より優しいかと言えばそれもない(むしろレガシーを引きずってる分カオスで分かりにくい)
わけで、もうVBは打ち切りでもいいかもと思ってる。

822 :デフォルトの名無しさん:2013/12/29(日) 13:48:12.29
一時期VB側はラムダに制限があったけど2010以降(.NET4以降か)は同じように書ける
とはいえ、VBのラムダ式って分かりやすいけど・・・ソースの見栄え悪いw
MS的には差をなくそうとがんばってるような気がしなくもない

823 :デフォルトの名無しさん:2013/12/29(日) 14:02:49.18
型推論とか理解してない奴が脊髄反射してレビューで絶対叩かれるよな
Dim使うんじゃなくてAutoとかキーワード変えればよかったのに

824 :デフォルトの名無しさん:2013/12/29(日) 14:08:55.32
形推論は邪悪だろ
Objectと大差ない
可読性最悪になるし解析もやりにくくなる

825 :デフォルトの名無しさん:2013/12/29(日) 14:23:55.38
LINQとかラムダとか使ってたら型推論使わないとそれこそノイズだらけで意味不明なコードになるわ
まあ、だからこそVBには不要とも言えるわけだが...

826 :デフォルトの名無しさん:2013/12/29(日) 16:24:43.74
型推論はソース読む分にはObjectと大差ないけど
書く分には推論された型による入力支援とか型チェックとか大きな差があるぞ
俺は型推論専用の型を作るべきだったんじゃないかと思うが、フレームワークの型との整合性を考えてそうしてないのかな

827 :デフォルトの名無しさん:2013/12/29(日) 16:26:29.10
Grepとかもやりにくい
保守性最悪になるよ

828 :デフォルトの名無しさん:2013/12/29(日) 16:52:38.74
C#とVB.NETの翻訳ツールもあるし大して変わらんのだろ

829 :デフォルトの名無しさん:2013/12/29(日) 17:55:13.42
VBはもう一度バカでもチョンでも楽々プログラミングな言語に戻るべき

830 :デフォルトの名無しさん:2013/12/29(日) 17:56:19.71
すいません。VBの入門サイトを教えてください
C#じゃないやつでお願いします

831 :デフォルトの名無しさん:2013/12/30(月) 04:31:24.12
VB.NET2013のプロジェクトの中に、
拡張子 .sdf というファイルが知らないうちに出てきたんですが、
これはなんでしょうか?
消しても勝手に作られます。

832 :デフォルトの名無しさん:2013/12/30(月) 16:58:51.53
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11118683986
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12118670967

知恵袋で質問したんですけどバグで質問一覧に出てきません 誰か見て回答してください

833 :デフォルトの名無しさん:2013/12/30(月) 17:07:05.68
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard28.htm

834 :デフォルトの名無しさん:2013/12/30(月) 17:12:59.55
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard46.htm


努力・根性・粘り   ゆとりよガンガレ!!!

835 :デフォルトの名無しさん:2013/12/30(月) 22:14:06.21
>>831
SQL Server Compact Edition のデータファイルらしいぞ

836 :デフォルトの名無しさん:2013/12/30(月) 23:24:07.83
>>835
45MBもあるんですが、消しても消しても作られます。
何か設定をいじった記憶も無いし、出てくる理由が分からなくて、
困っています。
VB.NETの単純なFormアプリなのでSQLサーバーなんか、全く
関係ありません。困りました。

837 :デフォルトの名無しさん:2013/12/31(火) 00:02:58.61
インテリセンス用のDBじゃなかったかそれ
C++のやつとか平気で100MB超えるぞ

そのファイル生成しないってのはたぶんできない

838 :デフォルトの名無しさん:2013/12/31(火) 00:58:05.65
>>837
コメントありがとうございます。
その.sdfファイルは、ある日突然作られるようになったのです。
私が何かの設定を知らないうちに有効にしてしまったのかもしれません。
困りました。

839 :デフォルトの名無しさん:2013/12/31(火) 01:00:16.68
ほっとけばいいと思うんだが、何に困ってるのさ

840 :デフォルトの名無しさん:2013/12/31(火) 01:12:08.82
>>832
Collection.RemoveAll(Function(a) a=True)
でいいやん

841 :832:2013/12/31(火) 02:17:15.44
解決しました List Of Tってめっちゃ便利ですね

842 :デフォルトの名無しさん:2013/12/31(火) 05:54:23.44
やっぱり、YAHooo知恵遅れはクズだなw

843 :デフォルトの名無しさん:2013/12/31(火) 22:02:35.94
>>840みたいなのはVBerには難しいだろうから仕方ない

844 :デフォルトの名無しさん:2013/12/31(火) 22:05:14.47
RemoveAllがDataTableでも使えたらいいのにな

845 :デフォルトの名無しさん:2013/12/31(火) 22:11:58.42
できるよ

846 :デフォルトの名無しさん:2014/01/04(土) 03:28:38.39
VB.NETのソースをたくさん読んで勉強したいです
どこを探せばいいですか?

847 :デフォルトの名無しさん:2014/01/04(土) 07:37:29.23
MSDNに腐る程有るだろ
つかVSはまずMSDN見ろよ
ググるのはその後だ

848 :某社内SE:2014/01/04(土) 20:29:56.40
基本的な質問ですみません。
VB.netではaccessでいうサブフォームがないのですが、
カスタムコントロールというものでやるのでしょうか?
やりたいことは、一つのもととなるものを作って継承したいのですが。

849 :デフォルトの名無しさん:2014/01/04(土) 20:52:27.14
よくわからないけど、ユーザーコントロールでいいと思う。

850 :デフォルトの名無しさん:2014/01/05(日) 00:58:29.94
http://dobon.net/vb/dotnet/beginner/byvalbyref.html
のページの、
『参照型を値渡しした時と参照渡しした時の違いが分かる例を以下に示します。』
という項目で、実行結果が
'「りんご! / ぶどう」と表示される
という理由が分かりません。
『バナナ』はどこへ行ったんでしょうか?
分かりやすく解説お願いします。

851 :デフォルトの名無しさん:2014/01/05(日) 01:53:26.66
必要な箇所を抜き出してよ
いちいちリンクとか開きたくない

852 :デフォルトの名無しさん:2014/01/05(日) 03:06:21.08
>>850
DoSomething内の話ね
arg1の参照先の内容を変更するのと、
arg1の参照先そのものを変更するのでは違うんだよ

853 :デフォルトの名無しさん:2014/01/05(日) 03:08:15.99
例えると
byvalは家を渡す
byrefは住所を渡す
そんなもんさ

854 :デフォルトの名無しさん:2014/01/05(日) 04:06:12.65
>>850
参照型の変数(ref1)には、データが直接格納されず、データへの参照情報(実体のメモリ位置)が格納される。
それをByValで渡すと「データへの参照情報」のコピーが変数arg1に渡されることになる。
コピーしたものなので参照先を「バナナ」に書き換えても元のref1の参照先は変わらない。

図にするとこんな感じ
ttp://imgur.com/vlsaecd

855 :某社内SE:2014/01/05(日) 04:45:09.26
849さんありがとう。
ユーザコントロールですか。

856 :850:2014/01/05(日) 11:30:41.15
みなさん、解説ありがとうございました。特に854さん、図解までして
頂きまして大変ありがとうございます。
朝からずっと図とソースコードを見比べながら考えていて、
8割くらい理解できたように思うのですが、
まだ完全には分かっていません。
DoSomethingの中で
arg1 = New StringBuilder("バナナ")
としても、呼び出し元のMain()には影響ないのに、
arg1.Append("!")
でarg1に付けた『!』がどうしてMain()の中の『りんご』にくっ付くのでしょうか?

ちなみに、StringBuilderではなくて、全部Stringで試してみたら、実行結果は、

StringBuilderの場合:りんご! / ぶどう
Stringの場合:    りんご / ぶどう

となって『!』はりんごに付きません。だめだ分からない。

857 :デフォルトの名無しさん:2014/01/05(日) 11:40:09.46
代入があるかどうか
StringにAppendメソッドなんてないんだからStringで代用することはできないだろう

858 :850:2014/01/05(日) 11:44:51.58
>>857
>StringにAppendメソッドなんてないんだからStringで代用することはできないだろう
arg1 &= "!"
としてみました。

859 :デフォルトの名無しさん:2014/01/05(日) 11:50:51.80
>>858
それは arg1 = arg1 & "!" と等価
この動作は、
1. 新しい文字列の領域を確保する
2. 1.で確保した場所にarg1をコピーし、続いてその後に"!"をコピーする
2. 1.で確保した領域の場所をarg1へ代入する
コピーして新しいのを作ってるだけなので、
もともとarg1に入っていた値(つまり元々のStringオブジェクトの場所)が指すStringオブジェクトには影響を及ぼさない

860 :デフォルトの名無しさん:2014/01/05(日) 11:58:32.28
arg1.Append("!")の場合だと
1. Appendメソッドを呼び出す
ただし、第一引数(隠し引数)にはarg1の値(つまりarg1が指すStringBuilderオブジェクトの場所)を渡し、
第二引数には文字列"!"の場所を渡す
2. Appendメソッドがarg1が指す場所を参照し、末尾に"!"を追加するようにその内容を変更する
かな

861 :デフォルトの名無しさん:2014/01/05(日) 13:57:33.60
VB2010で質問です

ラジオボタン(8個)やチェックボックス(9個)上にフォーカスがある時にカーソルキーやスペースキーが押されると
コントロールの選択状態が変わりますがこれを無効にしたいと思ってます
ネット上でググると「KeyDownイベントを利用してKeyCodeを判定しe.HandledプロパティをTrueにする」
という方法が載ってたので

Private Sub Controls_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles CheckBox1.KeyDown, _
    CheckBox2.KeyDown, CheckBox3.KeyDown, CheckBox4.KeyDown, CheckBox5.KeyDown, CheckBox6.KeyDown, CheckBox7.KeyDown, _
    CheckBox8.KeyDown, CheckBox9.KeyDown, RadioButton1.KeyDown, RadioButton2.KeyDown, RadioButton3.KeyDown, RadioButton4.KeyDown, _
    RadioButton5.KeyDown, RadioButton6.KeyDown, RadioButton7.KeyDown, RadioButton8.KeyDown

    If (e.KeyCode = Keys.Down Or e.KeyCode = Keys.Up Or e.KeyCode = Keys.Right Or e.KeyCode = Keys.Left Or e.KeyCode = Keys.Enter Or e.KeyCode = Keys.Space) Then
      e.Handled = True
    End If
End Sub

としてみたのですがうまくいきませんでした
プロシージャを宣言した行にブレークポイントを設定後、デバッグしてチェックボックスをクリックした状態でスペースキーを押すとIfのところで実行が止まるので、
KeyDownイベントは発生するけれどキー入力が無効にされる前にチェックボックスのON/OFFが切り替わってるようです
一方でラジオボタンにフォーカスがある状態でカーソルキーを押した場合はブレークポイントで停止しないのでどうもKeyDownイベント自体が発生してない感じで
ちょっとお手上げ状態です

どうにかラジオボタンとチェックボックス上でのこれらのキー入力を無効にしたいので知恵を貸してもらえれば幸いです
長くなりましたがよろしくお願いします

862 :デフォルトの名無しさん:2014/01/05(日) 14:13:10.65
逆にAutoCheckをFalseにしてクリックしたときに値が変更するようにイベントに書いたら?

863 :デフォルトの名無しさん:2014/01/05(日) 14:14:55.50
うわぁ鬱陶しいUI

FormのProcessDialogKeyをオーバーライドしてActiveControlが何か判断した上で
無効化したいときにTrue返すようにすれば良いけど

うわぁ鬱陶しいUI

864 :デフォルトの名無しさん:2014/01/05(日) 14:24:49.74
>>862-863

即レス感謝
AutoCheckをFalseにするのが簡単そうなのでちょっとやってみます

>うわぁ鬱陶しいUI

実際使ってみてキーボード操作でチェックボックスやラジオボタンを変更することはなかったので問題ないかなと
3次元空間で自機を操作するシミュレータで、カーソルキーもスペースキーも自機の操作で使い、チェックボックスと
ラジオボタンは視点変更や描画対象の選択に使うだけなので、自機を操作するたびに視点や描画対象が
コロコロ変わったりするのが鬱陶しかったので入力を無効にしたいと思った次第です

865 :デフォルトの名無しさん:2014/01/05(日) 14:37:31.81
>>864
それならそもそも入力フォーカスを持たないようにするべきだろうね。
方法はCheckBoxを継承してコンストラクタかどこかでSetStyleを呼んでやるだけ。

866 :864:2014/01/05(日) 17:36:29.94
>>865
フォーカスを持たせないようにするのは最初に考えたのですが方法が分からなかったので挫折してました
ただ、チェックボックスについては>>862のやり方でうまくいったのですが、ラジオボタンはAutoCheckをFalseにすると
「複数の中から1つを選ぶ」という機能まで失われてしまってチェック状態の管理がいろいろとカオスになることが発覚
結局>>865のキーワードでググったところそのものずばりのやり方がヒットしたので、その方法でチェックボックスと
ラジオボタンを継承してフォーカスを受け付けないようにすることで解決できました

レスをくれた方々どうもサンクスでした

867 :850:2014/01/06(月) 12:26:24.50
>>859,860
たびたび詳しい説明ありがとうございました。
体調崩して休んでいました。
お礼遅くなりましてみすません。
StringとStringBuilderの場合での挙動のちがいも理解できました。
ありがとうございます。

868 :デフォルトの名無しさん:2014/01/06(月) 22:56:34.85
VBメッセージボックスの「はい」「いいえ」などのボタンを、自分で指定したボタン名に変更できないでしょうか?
やりたいことは、「変更内容を保存しますか?」という質問メッセージを表示して、
これから行うアクションを、例えば、「保存する」「保存しない」「キャンセル」などで表示したいです。

869 :デフォルトの名無しさん:2014/01/06(月) 23:01:08.23
自分でダイアログを作ればいい

870 :デフォルトの名無しさん:2014/01/07(火) 08:25:45.86
うむ。
これはアホな俺でもわかる。

871 :デフォルトの名無しさん:2014/01/08(水) 22:37:45.18
すいません。ボタンをおした時、Textbox1.txtのURLを開くプログラムを作ってたんですが

System.Diagnostics.Process.Start("http://url.com")
↑編集前のモノ こっちは開く
System.Diagnostics.Process.Start(Textbox1.txt)
↑編集後のもの 開かない
これは何故でしょうか。ファイル名が指定されていないため、プロセスを開始できません。とメッセージが出ます。

872 :デフォルトの名無しさん:2014/01/08(水) 22:42:55.78
Process.Startの行にブレークポイント貼って実行して、
該当行でブレークさせてTextbox1.txtとやらを確認してみれば

873 :デフォルトの名無しさん:2014/01/12(日) 18:36:47.86
COMコンポーネントのデフォルトメンバを呼び出すVB.NETコードはどう書くの?

874 :デフォルトの名無しさん:2014/01/13(月) 00:56:47.24
{{0,1},{2,3},{4,5},{6,7},{8,9},{10,11},{12,13},{14,15},{16,17},{18,19}}
という文字列(String型)があってこれを
Dim numbers(9, 1) As Integer
に格納したいのですがどのようにすればいいでしょうか

875 :デフォルトの名無しさん:2014/01/13(月) 01:00:55.71
日本語でおk

876 :デフォルトの名無しさん:2014/01/13(月) 01:03:37.85
CSharpCodeProvider

877 :デフォルトの名無しさん:2014/01/13(月) 03:06:42.86
>>876
どう使うのですか?

878 :デフォルトの名無しさん:2014/01/13(月) 15:11:20.96
コンパイルして実行すればいいよ

879 :デフォルトの名無しさん:2014/01/13(月) 15:29:03.31
関数中で行いたいのですが

880 :デフォルトの名無しさん:2014/01/13(月) 15:33:17.19
じゃあRegexで「{(\d+),(\d+)}」でも探せ

881 :デフォルトの名無しさん:2014/01/13(月) 16:30:19.54
>>879
最初から関数の中でコンパイルするって言ってるんだが

882 :デフォルトの名無しさん:2014/01/13(月) 17:11:15.46
だが

883 :デフォルトの名無しさん:2014/01/13(月) 17:27:11.68
その程度なら一文字ずつ舐めるコードをゴリゴリ書けよ

884 :デフォルトの名無しさん:2014/01/13(月) 17:41:20.84
C言語からやり直せ
今時の若者はjavaや.netを最初に学ぶから圧倒的に自力が足りない
だからこんな簡単な問題も解くことが出来ない

885 :デフォルトの名無しさん:2014/01/13(月) 17:48:48.11
ほれできたぞ
Dim s As String = "{{0,1},{2,3},{4,5},{6,7},{8,9},{10,11},{12,13},{14,15},{16,17},{18,19}}"
s = s.Replace("{", "").Replace("}", "")
Dim numbers(9, 1) As Integer
Dim i As Integer = 0
Dim j As Integer = 0
For Each a As String In s.Split(",")
numbers(i, j) = a
j += 1
If j > 1 Then
j = 0
i += 1
End If
Next

886 :デフォルトの名無しさん:2014/01/13(月) 22:34:23.94
それ昔の俺だわ

887 :デフォルトの名無しさん:2014/01/13(月) 23:22:57.47
パーサジェネレータ使えば

888 :デフォルトの名無しさん:2014/01/14(火) 00:13:41.95
>>884
そもそも、こんな問題を解く必要がないんだよ
APIのひとつでも覚えたほうが、もしくはエクセルを正方形にする方法でも覚えたほうが役に立つ

889 :デフォルトの名無しさん:2014/01/14(火) 01:19:23.15
>>887
サードパーティは使いたくないじゃん
.net fwに無いだろ?

890 :デフォルトの名無しさん:2014/01/15(水) 22:18:14.31
>>888
>エクセルを正方形にする

この言い方をする人達に共通する面白い特徴が有るよね。

891 :デフォルトの名無しさん:2014/01/15(水) 22:58:39.30
>>890
統計的に言ってるだよね?
母数はいかほど?

892 :デフォルトの名無しさん:2014/01/16(木) 00:03:27.45
研ナオコ?

893 :デフォルトの名無しさん:2014/01/16(木) 00:31:59.81
>>892
さん付けぐらいしなさいよ
仮に年上だとしても礼儀よ

894 :デフォルトの名無しさん:2014/01/16(木) 01:01:09.71
>>890
全部俺じゃね?
俺ぐらいになると文章にオーラあるから
エクセルを正方形にしなくても文章みればすぐ俺だってわかるよ
24時間ずっとム板やマ板に張り付いてるし

895 :デフォルトの名無しさん:2014/01/16(木) 02:02:20.05
エクセルの悪口はそこまでだ!

896 :デフォルトの名無しさん:2014/01/16(木) 22:40:31.22
Enum に <Flags()> を付けるとビット・フィールドとして
扱えるということですが、例えば
Public Enum myEnum
A = &H0
B = &H1
C = &H2
End Enum
とすると、<Flags()> を付けても付けなくても
Dim x As Integer = myEnum.A Or myEnum.B
のように計算できるのですが、<Flags()> を付けるのは何のためですか?

897 :デフォルトの名無しさん:2014/01/16(木) 22:43:19.18
ToStringメソッドの挙動が変わる

898 :デフォルトの名無しさん:2014/01/16(木) 22:49:43.00
さっそくのコメントありがとうごいます。
myEnum.A.ToString
をdebug.printしてみたのですが、<Flags()>があっても無くても
A
と表示されます。挙動が変わらないんですが。
私何か勘違いしていますか?

899 :デフォルトの名無しさん:2014/01/16(木) 22:56:01.37
>>898
Orしろよ
何のためのフラグだと思ってるんだ

900 :デフォルトの名無しさん:2014/01/17(金) 10:46:59.12
>>899
おはようございます。
今、さっそくOrしてみたのですが、
Dim x As Integer = myEnum.A Or myEnum.B
Debug.Print("x.ToString={0}", x.ToString)
を実行すると
x.ToString=1
と表示されます。<Flags()> が有っても無くても変わりません。
まだ<Flags()> の意味が分かりません。教えてください。

901 :デフォルトの名無しさん:2014/01/17(金) 10:51:46.69
IntegerをToStringしたらそりゃ数値だろ
あと0 Or 1は1つまりmyEnum.BになるからmyEnum.Aが出現する余地はない

902 :デフォルトの名無しさん:2014/01/17(金) 11:16:27.10
>>901
ありがとうございます。0,1,2ではなく1,2,4にして以下のようにやってみたら
<Flags()> _
Public Enum myEnum
A = &H1
B = &H2
C = &H4
End Enum

Debug.Print("A Or B Or C={0}", myEnum.A Or myEnum.B Or myEnum.C)

A Or B Or C=A, B, C  <--<Flags()>あり
A Or B Or C=7     <--<Flags()>なし

となりました。これで良いのでしょうか?

903 :デフォルトの名無しさん:2014/01/17(金) 18:30:29.09
Enumでもう一つ教えてほしいのですが、与えられたEnumに対して、
i番目のメンバーの名前や値を取り出すにはどうすれば良いのでしょうか?
例えばmyEnum に対して、3番目の "C" やその値4を取り出したいのですが。

904 :デフォルトの名無しさん:2014/01/17(金) 18:44:07.43
メンバに順番は定義されてない
Type::GetFieldsで配列は取れるけどどういう順番で格納されるかは未定義

なんでそんなことしたいのか書けば代案を提案できるかもね

905 :デフォルトの名無しさん:2014/01/17(金) 20:39:57.59
>>903 enumを配列のように使うのは正しくないのだけども・・・

dim strArray() as string = myEnum,getValues()
dim thirdStr as string = strArray(2)
dim thirdKeyVal as integer = [Enum].parse(myEnum,thirdStr)

906 :デフォルトの名無しさん:2014/01/17(金) 21:36:59.15
>>905
正しい正しくないと言い出したらgetValueの大文字小文字が正しくないし
String()じゃなくて変数名の方に()付けて配列にしてるのも正しくない

907 :デフォルトの名無しさん:2014/01/17(金) 21:50:52.76
getValuesなんてインスタンスメソッド存在しないからきっと拡張メソッドなんだろうなぁ

908 :デフォルトの名無しさん:2014/01/17(金) 21:54:58.03
大文字小文字をいい加減にするのって生粋のVBer独特の習性だよな

909 :デフォルトの名無しさん:2014/01/17(金) 21:58:27.76
>>908
ideが自動でメソッド名補完するからいいんだよ。
口ばかりの無能が。

910 :デフォルトの名無しさん:2014/01/17(金) 22:02:07.37
>>907 あるぞ
http://msdn.microsoft.com/ja-jp/library/system.enum.getvalues%28v=vs.110%29.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2

ただ戻り値はArray型だった。
>>906 すまぬ。

911 :デフォルトの名無しさん:2014/01/17(金) 22:05:42.63
Array型じゃない配列なんか無いぞ
変数名に()付けられるのは単なるシンタックスシュガーで、VB.NETに配列変数は無い

912 :デフォルトの名無しさん:2014/01/17(金) 23:33:28.82
FlagsAttributeってEnum.Parseにも影響するんだな

<Flags>
Enum ABC
 XX = 0 : AA = 1 : BB = 2 : CC = 4 : DD = 8
End Enum
Sub Main()
 Dim huga = CType(System.Enum.Parse(GetType(ABC), "AA, CC"), ABC)
 Console.WriteLine("{0:D} : {0}", huga)
End Sub

913 :デフォルトの名無しさん:2014/01/20(月) 21:29:34.12
Namespaceって、どういうふうに使ったらよいかよくわかりません。
Classで分けていればNamespaceで分ける必要があまり感じられないのですが、
一般に、どういう場面で使うのでしょうか?大規模な開発でしか使わないのでしょうか?

914 :デフォルトの名無しさん:2014/01/20(月) 21:34:06.62
ある程度以上汎用性のあるライブラリ作るときには使うかな
アプリケーション作るときはあまり気にしない

915 :デフォルトの名無しさん:2014/01/20(月) 22:25:19.92
C#やVBはnamespaceとアセンブリが別の概念だから、
名前がかぶらないように分類しとく程度の意味しかないな。

916 :デフォルトの名無しさん:2014/01/21(火) 13:46:50.83
>>914,915
説明ありがとうございました。

917 :デフォルトの名無しさん:2014/01/21(火) 21:18:06.36
真に受けない方がいいと思うけどねw

少なくとも開発が身内で閉じてる場合について言えば、
名前空間は名前のバッティングを防ぐためというより、ファイルシステムのディレクトリと同じように
型を意味論的に分類する目的で使う。
(だからC#ではcsファイルを新規作成した時、自動生成されるスケルトンの
名前空間はそのファイルの入っているフォルダの階層になる)

918 :デフォルトの名無しさん:2014/01/21(火) 21:41:19.51
>>917
それはVSの機能であってC#の機能ではないんだが

意味的に分類してるからフォルダ構造にそうわけでもないし
フォルダ構造にそってるから意味的に分類されてるわけではない

意味論的に分類しようが何的に分類しようが好きにしたまえ

919 :デフォルトの名無しさん:2014/01/21(火) 21:43:37.87
何言ってるのか意味がわからん

920 :デフォルトの名無しさん:2014/01/22(水) 11:21:14.07
internalの範囲がnamaspaceじゃなくてアセンブリだしな
javaメインの奴が迷ってた

VBの場合、moduleをnamespaceに押し込める役割があるかな

921 :デフォルトの名無しさん:2014/01/22(水) 12:16:23.50
VB.NETでもnamespaceの理解しているなら使った方が良いと思うけどな

922 :デフォルトの名無しさん:2014/01/22(水) 13:17:23.03
>>920
internalじゃなくてVBはFriend・・・別に友達じゃないがな。

923 :デフォルトの名無しさん:2014/01/22(水) 22:25:56.38
Dim objList As New List(Of Object)
objList.Add("first")
objList.Add("second")
objList.Add("third")
の時に、objListをString配列に変換したいのですが、
スマートな方法ありますか?
objListがList(Of String)ならobjList.toArrayで出来たのですが
List(Of Object)だとうまく行きません。

924 :デフォルトの名無しさん:2014/01/22(水) 22:31:06.07
List(Of String)でいいじゃん

925 :デフォルトの名無しさん:2014/01/22(水) 22:34:32.07
>>923
MSDNライブラリのList<T>のメンバー一覧見た?
それともまだ.NET2.0使ってるの?

926 :デフォルトの名無しさん:2014/01/22(水) 22:37:59.11
objList.Cast(Of String)().ToArray()

927 :デフォルトの名無しさん:2014/01/22(水) 22:51:17.36
みなさんありがとうございます。
>>925
>MSDNライブラリのList<T>のメンバー一覧見た?
ふだん調べるときはググッてサンプルコードを探すことが多いのですが、
MSDNの説明は難しいのであまり見ません。やはり皆さんは何か調べる時には
MSDNの説明をまず最初にチェックするのでしょうか?

>>926
ありがとうございました。無事出来ました。ところで
()
を取っても動いたのですが、この()はどういう意味があるのでしょか?

928 :デフォルトの名無しさん:2014/01/22(水) 22:52:17.22
追加
.NET3.5使っています。

929 :デフォルトの名無しさん:2014/01/22(水) 22:58:47.16
List(Of Object)使ってるってことはString以外のものが入ることが想定されてるんだよな
String以外が入ってたらどうするんだろう

930 :デフォルトの名無しさん:2014/01/22(水) 23:45:02.69
片っ端からToStringで

931 :デフォルトの名無しさん:2014/01/22(水) 23:55:33.39
型名が羅列されるっていう落ち

932 :デフォルトの名無しさん:2014/01/23(木) 06:05:03.10
例外が発生しなければ良しってか

933 :デフォルトの名無しさん:2014/01/23(木) 09:50:30.17
MSDNが難しいって言ってる人の作るものだから……

934 :デフォルトの名無しさん:2014/01/24(金) 15:49:47.88
Try
Catch
End Try
というのは、安全のためには全ての関数に入れておくべきでしょうか?
例外が出そうにない関数にまでTry〜Catchを入れると何か弊害はありますか?

935 :デフォルトの名無しさん:2014/01/24(金) 16:20:21.57
「出そうにない」レベルの認識しかできてないならとりあえず入れとけ。
弊害とか気にするのはもっとまともに使えるようになってからでいい

936 :デフォルトの名無しさん:2014/01/24(金) 18:05:30.96
Mainに入れときゃ良いんじゃね
特殊な例外以外はキャッチできるでしょ

フォーム開始にしてるような奴はしらん

937 :デフォルトの名無しさん:2014/01/24(金) 21:22:59.09
>>934
例外は回復可能なところでキャッチが基本
対処できないならキャッチしてはいけない

938 :デフォルトの名無しさん:2014/01/24(金) 22:12:10.26
On Error Resume Next が最強ね!


これ考えだしたやつをロ兄いたい
更にVB.NETでも使えるようにしたやつもロ兄いたい

939 :デフォルトの名無しさん:2014/01/24(金) 22:21:23.54
常に現在のスタックフレームが例外発生で吹っ飛ぶことを
考慮に入れて作ってあれば>>937でいいんだけど、VBだからなあ
CloseするのにUsingやFinally使ってないなんて普通だし、
とりあえずエラーが出ても継続したほうがまだマシかもしれない

940 :デフォルトの名無しさん:2014/01/25(土) 14:20:15.57
どんなお馬鹿思考よそれ。
捕捉されない例外があればプログラムは強制終了されるのだからDisposeも糞もない。
というか例外という機構のそもそもの目的はこれなんですが。

941 :デフォルトの名無しさん:2014/01/25(土) 14:25:58.43
>>940
例えば深いところの例外をフォームのイベントハンドラでキャッチすれば
エラーメッセージ出して処理続行できるでしょ
深いところのGUIと無関係な箇所でメッセージボックス出したりすると
汎用性が下がってしまう
適切に処理できる場所まで戻って回復できるのが例外の利点だよ
そのためには、例外に直接関知しないコードも例外安全でないといけない

942 :デフォルトの名無しさん:2014/01/25(土) 14:33:24.84
>>941
何を言ってるのかよくわからないが、俺(940)は>>939がいわゆる「例外の握りつぶし」
を推奨するようなことを言ってるから、それは間違ってるよと指摘しただけ。

943 :デフォルトの名無しさん:2014/01/25(土) 14:38:40.10
想定外のエクセプションはちゃんと上にあげてほしいね

944 :デフォルトの名無しさん:2014/01/25(土) 14:39:25.15
>>942
例外安全って例外を無視するってことじゃないぞ?
>>940が例外安全は無意味だと読めてしまうようなことを言ってるから、
それは間違ってるよと指摘しただけ。
上の方でキャッチして適切に回復するには、
その途中経路は例外が起こって突然終了しても問題が残ったままにならないようにしておく必要がある

945 :デフォルトの名無しさん:2014/01/25(土) 14:41:03.78
何を言ってるのかさっぱり分からない。
これだけ会話が成立しない人も珍しいな

946 :デフォルトの名無しさん:2014/01/25(土) 14:46:17.77
君がUsingやFinallyの意味を理解してないだけ

947 :デフォルトの名無しさん:2014/01/25(土) 14:48:57.19
お前がな。
プログラムが終了してもリソースが解放されないとでも思ってるのかよ馬鹿だね

948 :デフォルトの名無しさん:2014/01/25(土) 14:54:00.56
Sub A
 Try
  B()
 Catch ex As HogeException
  エラーメッセージ出す(ex)
 End Try

Sub B
 アンマネージリソース確保()
 C()
 アンマネージリソース解放()

なんで常にプログラムが強制終了する前提になってるの?
これでCがHogeExceptionを投げたらリソースがリークしたまま続行してしまう
だからBのリソース解放はFinallyでやる必要がある
なんか難しいか?

949 :デフォルトの名無しさん:2014/01/25(土) 14:57:54.40
何の話をしてるんだよ馬鹿か。
想定してない例外が発生した場合にそれを握りつぶしてよいかどうかって話をしてるんだけど。

想定してない例外を無理に補足してどうする。
そんなものは放置してプログラムが強制終了されるに任せるべき。
もちろんユーザーにその旨を通知するのは問題ないが、それ以上の処理は何もすべきでない。

950 :デフォルトの名無しさん:2014/01/25(土) 15:02:54.40
>>941はプログラム全体で想定してない回復不能な例外についての話をしていて
>>944はプログラムのどこかでは回復可能だがその場では処理するべきでない例外についての話をしている
だから話が噛み合わない

951 :950:2014/01/25(土) 15:06:33.06
訂正
>>940はプログラム全体で想定してない回復不能な例外についての話をしていて

952 :デフォルトの名無しさん:2014/01/25(土) 15:22:04.43
ボタンクリックのハンドラまで上がってくれば
大抵の例外はエラーメッセージ出して続行しても本来問題ないはずだけどな
>>948のコードみたいなことをしないできちんと作ってあればの話だけど
本当に最悪なのは呼び出し階層の深いところでのいいかげんな握り潰し

953 :デフォルトの名無しさん:2014/01/25(土) 17:23:33.98
とりあえずTry〜Catch〜End Tryは呼び出しの最上位の関数の中に
だけ入れておくようにします。
ありがとうございました。

954 :デフォルトの名無しさん:2014/01/25(土) 18:16:45.24
まぁ、イベントのとこにとりあえず入れておくだけでいいよ

955 :デフォルトの名無しさん:2014/01/26(日) 20:28:07.65
>>948
さすがhoge厨
低品質なコード晒す知恵遅れ

956 :デフォルトの名無しさん:2014/01/26(日) 20:29:10.56
反省捕鯨団体こんなところにも出張してるのか

957 :デフォルトの名無しさん:2014/01/27(月) 15:50:17.40
Dim a As String = "全角”,”"
という文字列を代入したいのですが、うまく行きません。
どうしたら良いでしょうか?

958 :デフォルトの名無しさん:2014/01/27(月) 15:57:07.95
基礎からやれ

959 :デフォルトの名無しさん:2014/01/27(月) 16:00:11.25
Dim a As String = "全角"","""

960 :デフォルトの名無しさん:2014/01/27(月) 19:17:11.64
vbは全角ダブルクオートも演算子なのか

961 :デフォルトの名無しさん:2014/01/27(月) 19:50:57.45
バグっぽいお節介機能だよね。
1.1の頃から気になってたけど、たぶん今更もう直せないんだろう。

962 :デフォルトの名無しさん:2014/01/27(月) 20:59:36.11
質問もうしわけない。教えてください。

業務でエクセル使ってカーブフィッティングして
多項式の係数をはじき出すようなVBAを使っていて

それをVB.netに移植したいのだけど
エクセルにあるようなグラフや解析の機能って
VB.netにはあるでしょうか?それとも自作必須ですか?

963 :デフォルトの名無しさん:2014/01/27(月) 21:14:51.56
グラフはMS公式のライブラリがある
カーブフィッティングくらい自分で実装しろ

964 :デフォルトの名無しさん:2014/01/28(火) 18:53:58.12
関連付けられたアプリを起動する方法で、終了まで待たないのはどういう方法なんでしょうか?

Process.Start('ファイルパス')

上記だと、終了まで待機しないような記事もありますが、実行すると終了するまで待機してしまいます。

965 :デフォルトの名無しさん:2014/01/28(火) 18:58:44.52
待たないよ?
プロセス起こすのに時間掛かってるだけとかじゃない?

966 :デフォルトの名無しさん:2014/01/28(火) 19:12:32.73
>>965
あぁっ!?ぬあんだと!
こちとら何回確認したと思ってんだ!!

って憤慨しつつもレス見たんで仕方なしに改めて再度確認したら待機していませんでした。。
ええ、まったく。


ありがとうございます。

967 :デフォルトの名無しさん:2014/01/28(火) 20:15:29.96
ちょっと不愉快な気分になった^_^;

968 :デフォルトの名無しさん:2014/01/28(火) 20:45:33.22
Dim Y As Double
Y = 1.0 / X
XがいくらよりしたになったらYは1.#infになりますか?

969 :デフォルトの名無しさん:2014/01/31(金) 15:41:47.64
Select Caseを使うときにCase Elseを付けるかどうかでいつも迷います。
明らかにCase Elseの場合は起こらないときには省くべきかなと思いますが、
それが勘違いで、もし万一Case Elseの場合が起きるとバグの原因になりますし。
どうすべきでしょうか?

970 :デフォルトの名無しさん:2014/01/31(金) 15:51:33.96
バグにはならんよ

以降のコードが対応できないだけだろう。

971 :デフォルトの名無しさん:2014/01/31(金) 16:37:37.35
そんな程度のことで悩むぐらいなら、単純に最後のCaseをCaseElseにして自分をごまかしとけばいいんじゃねーの
どの道勘違いしてたらバグで氏ぬことには変わらないんだから

972 :デフォルトの名無しさん:2014/01/31(金) 18:16:14.03
Case Elseに合致する条件が起こるかどうかじゃなくて、起こったときにやりたい処理があるかどうか、ってだけの話なんだが
やりたい処理があるなら書けばいいし、やりたい処理がないなら、Case Else書く必要はないだろ

973 :デフォルトの名無しさん:2014/01/31(金) 19:16:52.92
>もし万一Case Elseの場合が起きるとバグの原因になりますし
って書いてるんだから、Elseだったらバグ出さないためにはやりたくなくてもやらなきゃいけない処理があるんだろう多分

974 :デフォルトの名無しさん:2014/01/31(金) 20:15:14.07
>>973
は?w
勘違いで起こるって書いてあるにゃんよ

975 :デフォルトの名無しさん:2014/01/31(金) 23:14:41.33
そろそろエスパーが必要だな

976 :デフォルトの名無しさん:2014/01/31(金) 23:15:42.15
Case Elseで
throw new NotImplementedException("○○の値が××の時の処理は実装されていません。")
みたいな例外を投げたら?

Caseを書き忘れていた場合など予想していなかった状態になったら
その場で処理を中断させたほうがいいと思う。

977 :デフォルトの名無しさん:2014/01/31(金) 23:23:03.92
どうせそういう例外処理付けるのがめんどくさいとか、動作が重くなるかもとか思ってるんだろ

978 :デフォルトの名無しさん:2014/01/31(金) 23:27:34.41
その場合は未実装の例外じゃないだろ
アサートしろアサート
基本だろうが

979 :デフォルトの名無しさん:2014/02/01(土) 00:08:42.42
誰でも答えれる事を、抽象的に質問されると
全員釣られるなw

980 :デフォルトの名無しさん:2014/02/01(土) 00:51:44.65
>>978
いやのっとさぽーてっどだろjk

981 :デフォルトの名無しさん:2014/02/01(土) 07:15:53.80
>>978
アサートってデバッグビルドのときだけだろ?

982 :デフォルトの名無しさん:2014/02/01(土) 10:33:23.04
>>980
素人は発言するなよ

983 :デフォルトの名無しさん:2014/02/01(土) 11:17:25.12


984 :デフォルトの名無しさん:2014/02/01(土) 12:58:05.61


985 :デフォルトの名無しさん:2014/02/01(土) 13:38:35.90


986 :デフォルトの名無しさん:2014/02/01(土) 14:56:25.76
Module Module1
Enum enum1 As Integer
a = 1
b = 2
c = 3
End Enum
Sub Main()
Dim x As enum1 = 4
test(x)
End Sub
Sub test(ByVal x As enum1)
Select Case x
Case enum1.a
'処理 a
Case enum1.b
'処理 b
Case enum1.c
'処理 c
End Select
End Sub
End Module
例えばこういう場合、どうでしょうか?
予期していない4が来た場合に備えて、Case Elseを使って何かメッセージなど
出すべきでしょうか?

987 :デフォルトの名無しさん:2014/02/01(土) 15:04:18.16
まだ言ってるのかよ。
そんなこと一般論でどうすべきなんて言えない。
ケースバイケースで自分の頭で何が最善か考えろよ馬鹿臭い。

988 :デフォルトの名無しさん:2014/02/01(土) 15:11:56.99
同じモジュール(というかクラス)内で列挙型もメソッドも両方定義されてるなら
列挙型のメンバだけ弄ってメソッドの修正を忘れるというのはまあ無いだろうからどっちでもいいんじゃないの
大事なのは>>987の言ってるように目的を理解して頭で考えることだよ
まあ「〜するべき」という話でいうなら
クラスの下に列挙型をネストしてクラス外に見せるのはそもそもMSのルールに違反するんだが

989 :デフォルトの名無しさん:2014/02/01(土) 15:17:12.99
引数のNULLチェックと同じテーマだな。
責任の境界線がどこにあるかで決まる。
sub testがライブラリの外から使うような代物ならチェックしてしかるべきだろうし、
自分しか使わんとかモジュールの中で完結するようならいちいちチェックはしない。
開発途中ならassertはよい方法。

990 :デフォルトの名無しさん:2014/02/02(日) 08:30:11.04


991 :デフォルトの名無しさん:2014/02/02(日) 08:45:35.16


992 :デフォルトの名無しさん:2014/02/02(日) 12:31:46.85


993 :デフォルトの名無しさん:2014/02/02(日) 12:32:34.57


994 :デフォルトの名無しさん:2014/02/02(日) 15:02:48.20


995 :デフォルトの名無しさん:2014/02/02(日) 15:24:20.31


996 :デフォルトの名無しさん:2014/02/02(日) 15:44:46.38


997 :デフォルトの名無しさん:2014/02/02(日) 16:02:51.08


998 :デフォルトの名無しさん:2014/02/02(日) 18:03:44.69
とんでもなく初心者なんですが、ご質問があります。
プログラムを上げた場合、ご教示願えますか?

999 :デフォルトの名無しさん:2014/02/02(日) 18:16:15.83
背中がすすけてるぜ!
さあ、鳴いて晒すんだ!りゅうよ〜

1000 :デフォルトの名無しさん:2014/02/02(日) 18:27:10.67
ツモ

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

232 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)