トップページ⇒tech
1001コメント367KB

VB.NET質問スレ(Part30)

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2009/05/17(日) 10:00:19
前スレ

VB.NET質問スレ(Part29)
http://pc12.2ch.net/test/read.cgi/tech/1235206416/l50

テンプレは>>2〜
0685デフォルトの名無しさん2009/08/01(土) 02:06:13
>>684
そうだった

みんなありがとう!
これで完成できるよ
0686デフォルトの名無しさん2009/08/01(土) 11:21:20
TwitterにAPIを使わず、ログインしているのですがうまくいきません

流れは最初にtokenを取得して
次にtokenとusernameとpasswordを添えてPOSTしているのですが
認証されていないようです

ソースをうpしましたので、お暇な方は何が原因なのか教えて頂けないでしょうか?

http://pai.no.land.to/up/src/dgz14115.zip
(twitterのテストアカウント設定済です)
0687デフォルトの名無しさん2009/08/01(土) 12:29:35
面倒だから見ないけど、Cookie とか Reffer とか大丈夫?

成功する方法とお前さんの方法で、それぞれ Wireshark とかで
やりとりを見てみて、違いを確認するのがいいよ。
06886862009/08/01(土) 17:13:32
>>687
その当たりは大丈夫でした

他の言語ではいけたので
調べて見たらどうやらこれが原因みたい
http://agloo.blog92.fc2.com/blog-entry-40.html

解決方法はWebBrowserでやる

何だかスマートじゃない…
0689デフォルトの名無しさん2009/08/01(土) 22:19:53
ネットワークドライブをつなげてあるのですが、そのドライブにアクセスするプログラムで
ネットワークドライブの電源を手動で入れてプログラムでアクセスしようとすると
ドライブがないというエラーになってしまいます。
マイコンピュータ上にはすでにあるので、エクスプローラで一度ドライブ内を表示すると
その後はプログラムからもアクセスできるようになります。
最初からプログラムでアクセスできるような方法があったら教えて頂きたいです。
0690デフォルトの名無しさん2009/08/01(土) 23:07:41
WNetAddConnection2で再接続
0691デフォルトの名無しさん2009/08/01(土) 23:16:33
>>689
認証のせいでは?
0692デフォルトの名無しさん2009/08/01(土) 23:23:52
作成したプログラムのインストーラーを作って配布したいです。
セットアッププロジェクトで必須コンポーネントに.NetFramework
とCrystarReportsを選択してビルドを行いました。
出来たファイルの.NetFrameworkとCrystalReportsはわざわざ手動でインストール
が必要なのでしょうか?
セットアップ.exeに全て含める方法を教えてください。
0693デフォルトの名無しさん2009/08/01(土) 23:38:33
>>692
ttp://dobon.net/vb/dotnet/deployment/dotnetbootstrap.html
0694デフォルトの名無しさん2009/08/01(土) 23:44:19
女のこれ系のセンスってホントだめだなw
06956922009/08/01(土) 23:45:36
>>693
setup.exe作ったんですが、CrystalReportsのランタイムが入ってないみたい
なんですよね。
出来たmsiファイルは消去してもいいんですか?
0696デフォルトの名無しさん2009/08/01(土) 23:58:59
みたいいわれても知らんがな
msiは必要
06976922009/08/02(日) 00:25:00
>>696
いろいろ調べたところマージモジュールっていうのが必要みたいなんですよね。
じゃあSetup.exe作る際に必須コンポーネントでチェック入れた
CrystalReporsは意味無いってことになりますよね・・・

よくわからないんです。もしそのへんわかる方いらしたら教えてください。

setup.exe走らせる際は各コンポーネントとmsiは一緒にしておかなきゃ
駄目ということですね。
06986922009/08/02(日) 00:51:40
連投すみません。ちょっと勘違いしてたかもしれません。
setup.exeと一緒に同梱されるCrystalReportsのランタイムを個別に
インストールしてみたら、管理者権限が無い為、インストールできない
というエラーが出ました。
管理者権限でログインしてないってだけみたいだったようです。
setup.exeでインストールを行ったときはエラーは表示されず、
インストール出来るコンポーネントのみインストールするんですね・・・
エラー出ないからてっきり必須コンポーネントはインストール出来てる
ものだと思いました。
0699デフォルトの名無しさん2009/08/02(日) 01:07:58
ドンマイ
07006922009/08/02(日) 01:58:10
もしわかれば教えていただきたいんですが、
setup.exeでインストールできないコンポーネントが見つかった時点
でエラーを出してsetupを終了する方法はありますか?
0701デフォルトの名無しさん2009/08/02(日) 12:36:52
あるけど面倒だな。最初に管理者権限確認すれば?
0702デフォルトの名無しさん2009/08/02(日) 13:37:35
>>690-691
ありがとうございます。WNetAddConnection2でできました。
07036922009/08/02(日) 15:15:47
>>701
管理者権限を確認するダイアログを表示させるんですね。
作ってみます。
0704デフォルトの名無しさん2009/08/02(日) 15:27:23
でなくて、Launch Condition で AdminUser を指定する、とか。
Orca の出番だね。
0705デフォルトの名無しさん2009/08/02(日) 15:49:35
>>700
正攻法かどうか分からないけど、
カスタム動作(System.Configuration.Install.Installerクラス)をつかっても
できそうだね。
0706デフォルトの名無しさん2009/08/02(日) 19:40:18
質問です。
現在HTMLのFILE FILEDからファイルを選択し、
SaveAsメソッドを組み込んだ送信ボタンを押下することで
ローカルのHDDからWebサーバーにファイルをアップロードをする
システムを作っています。

このシステムから、FILE FILEDを使用せず、
送信ボタンを押すとダイアログボックスが開き
ファイルを選ぶ事でファイルを送信できるようにしたいのです。

以上のように1つのボタンで、ファイルの選択〜ファイルの送信まで
行うようにするには、どのようなメソッドを用いればいいのでしょうか。
0707デフォルトの名無しさん2009/08/02(日) 19:42:31
無理。

どうしても、っていうなら、セキュリティの設定を甘くして、クライアントスクリプトでやるか、
ActiveX コントロールを使うしかない。
0708デフォルトの名無しさん2009/08/02(日) 19:48:22
迅速な回答ありがとうございました
0709デフォルトの名無しさん2009/08/03(月) 23:57:47
VBでMFCのCSplitterWndみたいな動的分割ウィンドウは出来ないのでしょうか?
0710デフォルトの名無しさん2009/08/04(火) 00:00:20
ん? Splitter じゃだめなの?
0711デフォルトの名無しさん2009/08/04(火) 00:05:43
>>710
Splitterでは新しいペインを生成したり削除したりは出来ないようです。
0712デフォルトの名無しさん2009/08/04(火) 10:29:55
デザイナで作れるものが
プログラムで作れない筈もなく。
0713デフォルトの名無しさん2009/08/04(火) 14:21:16
すいません、
VB.netで新しいプロジェクトからWindowsコントロールライブラリでDLLを作って
アセンブリをCOM参照可能にするにもチェックを入れているのですが
VB6の参照設定でその.netで作成したDLLを参照しようとすると
「指定したファイルへの参照は登録できません」
とのメッセージが出て参照に追加することができません

VB.netでつくったコンポーネントってVB6でも使うって不可能なんですか?
0714デフォルトの名無しさん2009/08/04(火) 14:58:11
dll直接参照するんじゃないよ
プロジェクトのプロパティでCOM相互運用機能の登録にもチェック
0715デフォルトの名無しさん2009/08/04(火) 21:57:57
Dim t As Date
で
t = Now
と
t = Now()
の違いは何ですか?
0716デフォルトの名無しさん2009/08/04(火) 22:00:48
一緒。
0717デフォルトの名無しさん2009/08/04(火) 22:01:26
Dim t As DateTime
t = DateTime.Now
と書いたほうがいい
0718デフォルトの名無しさん2009/08/04(火) 22:02:26
Now 関数があるんだから、別に構わないよ。
0719デフォルトの名無しさん2009/08/04(火) 22:05:23
関数じゃなくてプロパティなんだな。ごめん。
0720デフォルトの名無しさん2009/08/05(水) 11:30:45
コントロール配列の作り方ってありますか?
コピペで勝手に作れないんです…
0721デフォルトの名無しさん2009/08/05(水) 13:03:42
スレごとに2〜3度は出てくる質問だな。
このスレになってからは初だっけ?
FAQだからググればヒットする。
0722デフォルトの名無しさん2009/08/05(水) 14:55:46
最近はググる前に2ちゃんで聞くのがトレンド
0723デフォルトの名無しさん2009/08/05(水) 16:07:35
ヤフったが、どれも未解決で ? みたいな回答ばっかだった
0724デフォルトの名無しさん2009/08/05(水) 19:03:01
とりあえずコントロール配列はなくなった

MSDN(オンライン)でコントロール配列を検索したら
http://msdn.microsoft.com/ja-jp/library/kxt4418a.aspx
とか出てくるんだがな

まず真っ先にチェックすべきはMSDNだろうJK
0725デフォルトの名無しさん2009/08/05(水) 19:03:55
どう考えても2ちゃんで聞くよりググる方がはやい
0726デフォルトの名無しさん2009/08/06(木) 11:38:02
環境は
Microsoft Visual Studio 2005
Office 2003、2007が入っています

Excel 2003 のファイルを操作したいと思い、参照設定で Object Library 11.0 を追加しましたが、
参照設定に追加された Excel.dll のパスをみると、アセンブリフォルダの 12.0 の dll を見にいってるようです
このままコンパイルして Office 2003 のみがインストールされているPCで実行すると、「12.0 が無いよ」と怒られます
Office 2003 のみが入っている開発PCでコンパイルすると、正常に実行でき、参照設定のパスも 11.0 を見にいっています

これを Office 2007 が入っているPCでコンパイルしても Office 2003 のみが入っているPCで実行できるようにしたいのですが、
��パスを固定にする�≠謔、な方法はあるのでしょうか?
0727デフォルトの名無しさん2009/08/06(木) 12:39:08
>>726
参照設定しないで遅延バインドで作る
0728デフォルトの名無しさん2009/08/07(金) 08:15:41
環境はVisual Studio 2008で質問です

TabPage1と2があってComboBox1と2があり以下の様になっています
TabPage1にComboBox1
TabPage2にComboBox2

Private Sub Combo()を作り、その中でComboBox1.Items.Addをしているのですが、
ComboBox2の場合はComboBox2.Items.Addになってしまい面倒です
どうにか一つのPrivate Subで個別に出来ませんか?
よろしくお願いします
0729デフォルトの名無しさん2009/08/07(金) 12:03:24
Comboを引数受け取るようにして、
引数の値によってComboBox1とVomboBox2のどちらに操作するのか分岐。
0730デフォルトの名無しさん2009/08/07(金) 12:04:13
誤字スマン。

引数の値によってComboBox1とComboBox2のどちらを操作するのか分岐。
0731デフォルトの名無しさん2009/08/07(金) 12:40:10
>>730
なるほど!
ありがとうございます
0732デフォルトの名無しさん2009/08/07(金) 12:51:26
・・・すいません、あまりよく分かりませんでした

引数を1の場合ComboBox1にしたい時はどうするんでしょうか?
0733デフォルトの名無しさん2009/08/07(金) 13:10:22
>>732
コンボボックス型の配列変数を宣言して、コンボボックスの1と2をそれに突っ込んで
配列の添え字に引数の値を設定して使えばいいじゃん

最近VB使ってない素人の即興の書き込みですまんけど、こんな感じでできると思う
0734デフォルトの名無しさん2009/08/07(金) 13:12:39
オレならこうするな。

Private Sub Combo(ByRef cbo As ComboBox)
  cbo.Items.Add 〜
End Sub
0735デフォルトの名無しさん2009/08/07(金) 14:10:16
Dim X , Y As Integer
X=X*1.2
X=X*1.3
Y=Y/2
Y=Y*3
X=X*Y

このような場合、変数に代入される毎の計算結果の値を少数切捨てにするには、
個別に関数を指定する以外にどのように書いたら良いでしょうか?
0736デフォルトの名無しさん2009/08/07(金) 14:34:16
整数除算演算子は?

X = X * 12 \ 10
X = X * 13 \ 10
Y = Y \ 2
Y = Y * 3
X = X * Y

1.2の掛け算とかは1.2が定数じゃなければ無理か
0737デフォルトの名無しさん2009/08/07(金) 14:41:02
XもYも整数型なんだから代入した時点で切り捨てられるっしょ
既に望み通りだと思うんだけど
0738デフォルトの名無しさん2009/08/07(金) 14:49:21
四捨五入されるんじゃない?
07397352009/08/07(金) 14:52:28
要は整数型に少数を代入する際、四捨五入ではなくどうにかして切り捨てたいわけです…
0740デフォルトの名無しさん2009/08/07(金) 15:10:01
素直にMath.Floor()使えばいいと思う
0741デフォルトの名無しさん2009/08/07(金) 15:10:22
演算子のオーバーロードでできないものか
0742デフォルトの名無しさん2009/08/07(金) 15:18:04
バージョン書けってのは
テンプレにしたほうがいい
07437352009/08/07(金) 15:22:29
>>740
うーんそれしか無いですかねぇ
>>735はあくまで例で、実際には変数を代入させる計算式が60行くらいあり
結果が少数になるもの全てに適用させるので他に方法ないかなと思ったんですが…

>>742
すいません、VB2008EEです
0744デフォルトの名無しさん2009/08/07(金) 15:29:27
その計算するところだけCで書けばいいかも
せっかく.netは言語混ぜれるんだし
0745デフォルトの名無しさん2009/08/07(金) 15:34:08
>>744
Cだと整数型は少数切捨てですか?
0746デフォルトの名無しさん2009/08/07(金) 15:40:55
60行ぐらいだったらさっさと直しちゃうな俺なら
下手に楽しようとして訳わからん直し方しても後で困るだけ
0747デフォルトの名無しさん2009/08/07(金) 15:44:17
>>746
だね。
そもそも四捨五入という仕様がおかしいからね
0748デフォルトの名無しさん2009/08/07(金) 15:51:26
C#も切捨てだな
0749デフォルトの名無しさん2009/08/07(金) 15:53:37
>>746
俺も
キーボードマクロ使えば楽にできる品
0750デフォルトの名無しさん2009/08/07(金) 15:55:54
>>746
うーんそうですね…むしろその方が楽でしょうしねぇ。

素直にFixで一つ一つやりたいと思います。
有難うございました。
0751デフォルトの名無しさん2009/08/08(土) 01:39:15
>>734
なんでByRef?
0752デフォルトの名無しさん2009/08/08(土) 01:54:50
>751
0753デフォルトの名無しさん2009/08/08(土) 05:20:32
>>734さんのやり方で出来そうです

Combo()
の引数の指定はどうやるのでしょうか?
0754デフォルトの名無しさん2009/08/08(土) 07:09:39
うおおおできました!!!
ありがとう!
0755デフォルトの名無しさん2009/08/08(土) 08:08:28
>>751
確かに少し変だよな。
呼び出し元のcbo自体を別のComboBoxに置き換えるのでもなければ、
ByRefである必要は全く無いし。
0756デフォルトの名無しさん2009/08/08(土) 08:41:08
ByRefでもByValでも出来るな
どっちが正しいんだ?
0757デフォルトの名無しさん2009/08/08(土) 09:14:34
ByRefはどうしても必要がなければ使うな
混乱のもとになるだけ
0758デフォルトの名無しさん2009/08/08(土) 09:23:33
オブジェクトは全てByRef、つまり参照渡し。
ByValにしたら不変になるなんてこともない。
全く無意味なキーワード。
0759デフォルトの名無しさん2009/08/08(土) 09:26:03
なんという糞仕様
0760デフォルトの名無しさん2009/08/08(土) 09:32:39
VB6でもオブジェクト型は常に参照渡しだっただろ。それと同じ。
参照型は常に参照渡しというのは語弊がある。アドレスの値渡しだ。
だから参照型をByValで渡して呼び出し先でその引数に違うオブジェクトを代入しても
元の変数の参照先のオブジェクトは変わらない。
0761デフォルトの名無しさん2009/08/08(土) 10:35:31
という事はByRefか
VB.NETムズカシイネー
0762デフォルトの名無しさん2009/08/08(土) 10:41:34
どっちでもいいだろ… 処理に影響するわけじゃないし…
0763デフォルトの名無しさん2009/08/08(土) 10:42:31
いやByRefはいらん
0764デフォルトの名無しさん2009/08/08(土) 10:46:04
データを構造体で扱うようなアホな作りにしなければVB.NETではByRefなんか滅多に出てこない
0765デフォルトの名無しさん2009/08/08(土) 10:56:24
>>758
ニヤニヤ
0766デフォルトの名無しさん2009/08/08(土) 15:38:54
ByRefは、戻り値を二つ以上返したいけど、
それだけの為に宣言するのもなあ、って時に地味に便利。
というか、Javaだとどう対応すべきか判らなくて困る。
0767デフォルトの名無しさん2009/08/08(土) 15:43:28
java<全てクラスとして扱うべきです!
   返値が複数ならそれらをメンバに持つ新しいクラスのインスタンスを作りなさい!
0768デフォルトの名無しさん2009/08/08(土) 15:43:51
出力限定,private限定ならたまに使うかも
それ以外に使うと糞コードの出来上がり
0769デフォルトの名無しさん2009/08/08(土) 17:25:34
まあ使うことはかなり少ないけど、
基盤的な部分では使ったりもする。
0770デフォルトの名無しさん2009/08/08(土) 17:39:02
Byrefで値を返すことが有効な場面もあるんだ、って考え方って
俺はヤバいとおもうけどね。

フツーはそんなことを思う時点でどこかそもそもの設計に無理がありそう。
っていうか、まず間違いなく手続き指向のコーディングをしてるんだなそりゃ。
C#ではより「安全な」outがあるけど、これも使いたいと思ったことは一度もないな。
0771デフォルトの名無しさん2009/08/08(土) 17:43:16
つ TryParseパターン

まあ逆に言うとこれぐらいなんだが
0772デフォルトの名無しさん2009/08/08(土) 17:46:06
わざわざ一つのメソッドから複数の値を返すためだけに
構造体かクラスを定義するのが面倒なだけでしょ
出力方向のみで局所的に使うだけならアリだと思うよ
クラス外に見せるのはダメだけど
0773デフォルトの名無しさん2009/08/08(土) 18:12:48
>>772
だから、そもそも一つのメソッドから複数の値を取得したい、
などという考え方がおかしい。

そんな人間の思考パターンにマッチしないコードを書くことの方が、
トータルで見て余程「面倒臭い」はずなんだが。
0774デフォルトの名無しさん2009/08/08(土) 18:22:41
そんなあなたのにF#、タプルを利用した多値関数が使える。

let f n = (3 * n, 5 + n);;
let (a, b) = f 3;;
0775デフォルトの名無しさん2009/08/08(土) 19:24:42
複数返したいからクラス化するのがどう人間の感覚に合ってると言うのか逆に聞きたい。
あと、必要に応じてオブジェクトを入れ替えるって目的で使うことが偶にはある。
0776デフォルトの名無しさん2009/08/08(土) 19:27:11
まあ、複数返したいから使うってことはあまりないけど。
またVBだと呼び出し側で参照ってのが分からないからあまり使いたくはない。
0777デフォルトの名無しさん2009/08/08(土) 19:35:59
普通byvalでやっててなんか動かないときbyrefにしてみたら
動くときあるからそんな感じでやってるw
0778デフォルトの名無しさん2009/08/08(土) 19:49:24
>>775
だから、ちゃんとした設計をしてれば一つのメソッドから複数の値を返したい、
などという場面はまず起こらない。
少なくともOOP言語では。

返り値をパッケージングするためだけのためであっても型を作るべきだ、
などと俺は言ってない。

そういう手続き中心に考える思考法そのものがOOP言語に合ってないんだよ。
0779デフォルトの名無しさん2009/08/08(土) 20:27:32
でもマルチスレッドがからむと>>771が必要になるんだよな
0780デフォルトの名無しさん2009/08/08(土) 20:30:06
マルチスレッドがどう関係するの?
例外と比べてのパフォーマンスの問題だけだと思うんだけど。
0781デフォルトの名無しさん2009/08/08(土) 20:32:42
その例外処理のパフォーマンス低下を避けるために
Tester-Doerパターンを使うとスレッドセーフにならないという…
0782デフォルトの名無しさん2009/08/08(土) 20:48:14
スレッドセーフと何の関係があるんだ?
普通TryParseパターン使う時ってローカル変数渡すから一緒だろ
0783デフォルトの名無しさん2009/08/08(土) 21:52:06
>>778
人間の感覚に合ってないってのが言いすぎじゃないのか

手続き中心に考える思考法は人間の感覚に合ってない
OOP言語にあってないと人間の感覚に合ってない って結論になるぞ
0784デフォルトの名無しさん2009/08/08(土) 22:02:53
オブジェクト馬鹿は人間じゃない、で FA
■ このスレッドは過去ログ倉庫に格納されています