VB.NET質問スレ (Part16)

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
[前スレ] VB.NET質問スレ (Part15)
http://pc8.2ch.net/test/read.cgi/tech/1143631763/
2デフォルトの名無しさん:2006/06/04(日) 23:52:39
>>1000(前スレ)
CType(sender, TextBox).Nameが"textBox1"か"textBox2"で判断したら?
3デフォルトの名無しさん:2006/06/04(日) 23:52:46
4デフォルトの名無しさん:2006/06/04(日) 23:53:52
どぼん!のVB道のトップページとTipsページ
http://dobon.net/vb/
http://dobon.net/vb/dotnet/index.html
Microsoftクイック スタート チュートリアル
http://ja.gotdotnet.com/quickstart/default.aspx
Insider.NET
http://www.atmarkit.co.jp/fdotnet/index.html
宇宙仮面の C# プログラミング
http://ukamen.hp.infoseek.co.jp/
.NET のつぼ
http://park16.wakwak.com/~mimi/dotnet/top.html
.NET TIPS
http://www.atmarkit.co.jp/fdotnet/dotnettips/index/index.html
緑のバイク ★ 初めてのC# プログラム全般
http://homepage3.nifty.com/midori_no_bike/CS/
VB.NETとC#でデザインパターン
http://hccweb1.bai.ne.jp/tsune-1/
匣の向こう側
http://www.ne.jp/asahi/nami/mei/index.html
WisdomSoft
http://wisdom.sakura.ne.jp/
じゃんぬねっと
http://jeanne.wankuma.com/
どっとねっとふぁん - C# Tips And Samples -
http://homepage3.nifty.com/dotnetfan/index.html
C#プログラミングTips
http://www.atmarkit.co.jp/fdotnet/csharptips/index/csharptips_index.html
CodeProject
http://www.codeproject.com/vb/net/

5デフォルトの名無しさん:2006/06/04(日) 23:55:31
The Code Project
http://www.codeproject.com/vb/net/
the GotDotNet Home Page
http://www.gotdotnet.com/
KEN's .NET
http://www5b.biglobe.ne.jp/~yone-ken/VBNET/index.html
Cetus Links: 19,498 Links on Objects and Components / .NET
http://www.cetus-links.org/oo_dotnet.html
HIRO's.NET
http://vbdotnet.fc2web.com/index.html
@IT:特集 .NET開発者のためのオンライン・リソース・ガイド
http://www.atmarkit.co.jp/fdotnet/special/onlineres/onlineres_01.html
.NETでいきまっしょい!
http://santamartadotnet.hp.infoseek.co.jp/
これがほしかった!厳選サンプルツール集
http://anetm.com/dev/tools/vbdotnet.htm
ぬーやんのdotNET講座
http://www.geocities.jp/nuu_yan/dotNET/index.html
PINVOKE.NET
http://www.pinvoke.net/
WinAPI Database for VB Programmer
http://www.geocities.co.jp/SiliconValley-Cupertino/5872/
Windows Api programming in C# , VB.NET, and VB6. Examples of P/Invoke and DllImport with Source code
http://custom.programming-in.net/
6デフォルトの名無しさん:2006/06/04(日) 23:56:29
7デフォルトの名無しさん:2006/06/04(日) 23:58:01
テンプレが貼られないようだから、悪いけど勝手に追加させてもらい
ました。過去スレリンクは前スレと同様に外してます。
8デフォルトの名無しさん:2006/06/05(月) 00:12:44
全スレ1000
そもそも名前である必要はあるのか?
単純に sender と TextBox1 の参照を比較するだけじゃ駄目なのか?
9デフォルトの名無しさん:2006/06/05(月) 01:13:25
それを調べて何をしたいのかによるなあ。
10デフォルトの名無しさん:2006/06/05(月) 10:37:27
Stackクラスについて質問です。

Stackに格納できる要素の数を制限する方法はないでしょうか?
Pushするたびに、ある数以上の要素になった場合、
古いものから削除したいのです。(常に最新のx個からだけPOPできればよい)
何か良い方法はないでしょうか?
11デフォルトの名無しさん:2006/06/05(月) 12:38:07
なんのためにかなあ。必要なきゃpopしなきゃいいだけだと思うけど。。
12デフォルトの名無しさん:2006/06/05(月) 12:45:33
Queueが欲しいんでしょ
1310:2006/06/05(月) 12:49:17
>>11
>必要なきゃpopしなきゃいいだけだと思うけど。。

いえ、最新のもののPOPはしばしば必要なのです。
Undoちっくな動作をさせたいのですが、
追加する要素の一つ一つ(実際には数M単位のクラスの実体)が結構大きいため、
メモリの消費を少なくするために、せいぜい最新3,4個の要素だけ
保持しておきたいのです。

>>12
あくまでさせたい動作はFIFOではなく、LIFOです。
14デフォルトの名無しさん:2006/06/05(月) 18:30:02
>>13
そこはかとなくウンコ設計の匂いがする。。
なんで参照のコピーじゃいかんの?
本当にクローンをバッファにぶち込む必要なんてあるのか?

質問に関してはStackじゃそれはできないと思う。
っていうかそれ既に純粋なスタックじゃないし。

多分自分でも分かってると思うけど、
配列をラップしてそういうクラスを作るしかないんじゃないかな。
15デフォルトの名無しさん:2006/06/05(月) 23:07:56
クローンじゃなくて、消してしまうか参照をスタックに保持しとくかって
話だと思うが。
まあどっちにしても自作かな、やっぱり。
16最凶VB厨房:2006/06/05(月) 23:31:59
個数が固定なら循環バッファをちょっと変えたのがいいかもね。

|○○○○
push操作
|●○○○
push操作
|●●○○
pop操作
|●○○○
---------------
|●●●●
push操作
●|●●●
push操作
●●|●●
pop操作
●○|●●

こんなイメージかねぇ・・・。
デクがあるともっと楽チンに作れそうな感じだけどね
17デフォルトの名無しさん:2006/06/05(月) 23:53:47
treeviewのノードを複数展開してトレイにアイコン化して復元するとカレントノード以外が
閉じてしまうのは仕様ですか?
18デフォルトの名無しさん:2006/06/06(火) 00:58:44
トイレでアイコン化しないとだめだよ
19デフォルトの名無しさん:2006/06/06(火) 10:21:00
VB.netでタイピングゲームを作りたいのですが、
基礎しか習っていないので何をしたらいいのか全然わかりません
アルゴリズム等、簡単に教えてもらえるとありがたいです。
参考になるHPや本なども紹介してくれるとうれしいです
2010:2006/06/06(火) 10:42:24
10です。

>14-16
やっぱ自作しかないかな〜とは思ってました。

ウンコ設計の可能性は否定できません。。。
当方どうも論理的思考回路が欠如してるのは自覚しております。
もちろんクラス変数でStack定義してるので中身はクラスへの参照です。
ただ、参照のコレクションってことは、その先に当然実体があるわけで、
その実体の数を減らしたいために、コレクションの要素数を制限したかったのです。

Stackそのまま使えたら楽だな〜と思ったんですが、やっぱ自作しますです。

レスありがとう!
21sage:2006/06/06(火) 15:15:02
VB.netで条件(文字列)を入力して、csvファイルを読み込んで条件に当てはまる
ものをcsvファイルの中から検索するプログラムを作ってみようと
思ったのですが、どうやってcsvファイルと条件(文字列)を比較して
いいかわかりません。
また、csvファイルを何行何列で指定して比較できるか。などわかりません。
やり方をご存知の方、またはこれに使えそうなサイトを知っている人
がいましたら、教えていただけると幸いです。
22デフォルトの名無しさん:2006/06/06(火) 15:30:25
>>21
CSVファイルと言えども、単純なファイルの読み書きと文字列の操作で処理ができる。
CSVファイルの大きさに制限が入ってよいならCSVファイルを1行ごと読み込んで
それをカンマで区切って(splitメソッドなどを使用)配列にいれるなり、コレクションに入れるなりすればよい
23デフォルトの名無しさん:2006/06/06(火) 17:04:57
>>21
こんな感じじゃなかろうか。実行してないから動くかしらねw


'TextFieldParserでファイル開く
Dim reader As New Microsoft.VisualBasic.FileIO.TextFieldParser("c:\test.csv")

reader.TextFieldType = FileIO.FieldType.Delimited
reader.SetDelimiters(",")   'デリミタはカンマ

’現在行をフィールドに分解した結果を格納するString配列
Dim currentRow() As String

Dim colCount As Integer   ’カレント列

While Not reader.EndOfData
currentRow = reader.ReadFields()

colCount = 1
For Each field As String In currentRow

If field.Contains("条件") Then   ’検索したい条件をこんな感じで検索する

Debug.Print(reader.LineNumber - 1 & "行目の" & colCount & "列目にあるお!")

End If
colCount += 1

Next

End While
End Sub
2423:2006/06/06(火) 17:15:07
ageちった&tabが潰れてるorz
25デフォルトの名無しさん:2006/06/06(火) 17:30:26
コントロールを配列にする方法についてなんですが、
http://dobon.net/vb/dotnet/control/buttonarray.html
ここに書いてある方法(newして、サイズ指定して、場所指定して・・・を繰り返す)ではなく、
既存の、デザイナで配置したコントロールを配列にしたいんですが、どうやるんでしょうか?
おねがいします。
26デフォルトの名無しさん:2006/06/06(火) 17:42:51
自分で配列作って放り込め
27デフォルトの名無しさん:2006/06/06(火) 17:45:45
具体的な方法を教えてもらえると嬉しいです・・・
普通にtextbox1とかを配列にほうりこんでも、型○○の値を○○の1次元配列に変換できませんってでます。
28デフォルトの名無しさん:2006/06/06(火) 18:04:21
まず MSDN で配列のお勉強からだな。
Visual Basic における配列 以下一通り目を通せ。
29デフォルトの名無しさん:2006/06/06(火) 18:40:23
そんなこと言わずに教えてくださいよぉ〜〜〜
30デフォルトの名無しさん:2006/06/06(火) 19:44:31
25はVB6以前のコントロール配列相当のことをしたいって意味じゃないの?
(正直、だったらそのように書けよ、と思う)

旧VBのコントロール配列に相当する機能は.NETにはないよ。
つーか、そんなへっぽこならMSにある移行ガイドぐらい読めよ
31デフォルトの名無しさん:2006/06/06(火) 20:06:32
>>27
>>26は十分具体的だと思うんだが。
つーか、参照先のアドレスに書かれているソース、ちゃんと読んでる?
2番目に配列作って放り込むソースが書いてあるんだが。
32デフォルトの名無しさん:2006/06/06(火) 21:51:15
>>21
ほんとだ!見逃してました。どうもありがとう!
33デフォルトの名無しさん:2006/06/06(火) 22:07:25
おまいのうっかりさんぶりが、図らずも証明されてしまったわけだが。
34デフォルトの名無しさん:2006/06/07(水) 13:53:16
Graphicsクラスに単純に点を描画するメソッドがないのですが・・・
.Net Frameworkの範囲内で(WindowsAPIを呼ばずに)
点を描く方法はないでしょうか?
35デフォルトの名無しさん:2006/06/07(水) 14:42:41
FillRectangle
数学的には点というのは幅も高さも0なので意味がない、と言う判断のようだな
3634:2006/06/07(水) 15:00:46
>>35
やっぱりFillRectangleとか使うしかないんですかねぇ
まあ内部処理的には点を描くのも、幅・高さが1のFillRectangle描くのも
あんまかわんないだろうからいいとするか(*´д`*)

ありがとう〜
37デフォルトの名無しさん:2006/06/07(水) 16:40:26
ピクセル単位の操作が必要なときはBitmapオブジェクトの GetPixel, SetPixel を使う。
38デフォルトの名無しさん:2006/06/08(木) 08:47:39
VB2003を使用しています。

MDI親フォームから子フォームを呼び出して動作するアプリを開発しています。
Windowsタスクマネージャを見ていると、子フォームを開くとメモリ使用量が
増えるのですが、そのフォームを閉じてもメモリ使用量が元に戻りません。

MDI親フォームでは下記のようにして子フォームを呼び出しています。

Sub Form_Show()
 Dim f As New Form1
 With f
  .MdiParent = Me
  .Show()
 End With
 f = Nothing
End Sub

この f を Dispose してしまうと子フォームは閉じてしまうし。。。
子フォーム側で閉じる際に何か処理をしなくてはいけないのでしょうか?
39デフォルトの名無しさん:2006/06/08(木) 09:12:58
気にすんな。
そのうち GC が片づけてくれる。
4038:2006/06/08(木) 09:29:14
そんなもんスか・・・?
なんかアプリを使用し続けているとだんだんと動きがモッサリしてきます。
さらに長時間使用していると「仮想メモリの値が(ry」となります。

GCが片付けてくれる「そのうち」って、もしかしてアプリ終了時?
41デフォルトの名無しさん:2006/06/08(木) 09:30:07
基本的には後始末不要だけど、何か必要なら
作った子フォームのクローズイベントとかに、親側の関数をAddHandlerしとけばいいんじゃないの?
そうすれば作った子供が死んだら、風の便りが届くようになる。
42デフォルトの名無しさん:2006/06/08(木) 10:40:59
IHTMLElement とかを適当に食い散らかしてたらそうなるかもな
4338:2006/06/08(木) 11:15:23
MDI親フォームを最小化すればなぜかメモリ使用量はかなり少なくなります。
そして元のサイズに戻すと、最小化する前と比較するとかなり少なくなっています・・・

>41 これから試してみます。
>42 そういうものは使用していないんですが・・・でもAdo.Netを使用しているので
その後処理も再確認してみます。
44デフォルトの名無しさん:2006/06/08(木) 12:41:00
っていうか、>>40みたいな現象が起こるとしたら、
そりゃチミが書いたコードが腐ってるんだよw
あたりまえだろ

ダメな奴の特徴として、何でもかんでもMSのせいにするんだよなw
問題の切り分けもろくにしないうちから
45デフォルトの名無しさん:2006/06/08(木) 12:55:14
VBでvolatile使いたいんですぅ
46デフォルトの名無しさん:2006/06/08(木) 13:00:39
あきらめれ。
47デフォルトの名無しさん:2006/06/08(木) 14:38:54
>>45
SyncLockやら同期オブジェクトを使う。volatileは手軽そうに見えて割と制約が多い。
その上C/C++のvolatileは動作が違ったりするので混乱のもと。
48デフォルトの名無しさん:2006/06/08(木) 14:56:27
>>43
CLRのメモリの状況を見たいならパフォーマンスモニタの.NET CLR Memoryを見る。
タスクマネージャのメモリ使用量はワーキングセットなので指標にならない。
MDIの子フォームを閉じるタイミングで開放されてない非マネージドリソースがあるんじゃないか?
コンポーネントの非マネージドな部分が確保したメモリが大きくてもマネージドな部分は小さいことが多いので、
自然なGCにたよっててもなかなか開放されずにメモリ不足に陥ることがある。
GCはマネージドなヒープが不足したとき初めて起きるもので、非マネージドのメモリが足りなくなってもGCは発生しない。
49デフォルトの名無しさん:2006/06/08(木) 15:24:09
まあ普通は Disposed なり Closed なり Protected Overrides Dispose なりで片づけるもんなんだがな
50デフォルトの名無しさん:2006/06/08(木) 16:21:50
ファイルが画像かどうかって拡張子以外で調べる方法ありますか?
51デフォルトの名無しさん:2006/06/08(木) 16:26:13
バイナリでヘッダを読んで識別するとか。
52デフォルトの名無しさん:2006/06/08(木) 16:29:05
Image.FromFile で例外が出るか確認するという強引な手を取るとか
53デフォルトの名無しさん:2006/06/08(木) 17:02:28
そういうメソッドは用意されていないんですね。
tyr&catchで対応しました。
ありがとうございます。
54デフォルトの名無しさん:2006/06/08(木) 17:51:00
そうかtry&catchでファイル画像かどうかわかるんだ
55デフォルトの名無しさん:2006/06/08(木) 18:34:15
すいません、また質問なんですが、
画像に線などを描画して、保存してみたのですが、描画したものが反映されません。
どうすれば反映されるんでしょうか?
56デフォルトの名無しさん:2006/06/08(木) 18:37:05
>>54
それでいけたんだけど、画像じゃないファイルを表示しようとまずtryするんで、
catchするまでに2秒ほどスリープされます。
57デフォルトの名無しさん:2006/06/08(木) 18:57:09
>>55
Graphics.FromImage
58デフォルトの名無しさん:2006/06/08(木) 19:02:26
質問する奴が馬鹿なら回答者もしったかぶり野郎かw

同じ初心者のする質問でも共感できるのとできないのがあるよ。
自分でろくに調べも考えもせず、安直に人に聞いてるのがミエミエの質問になんか
普通死んでも答えたくないだろ。
59デフォルトの名無しさん:2006/06/08(木) 19:23:40
回答できないやつにそんなこと言われてもなぁ。
まあそんなの自分を責めるなって。
60デフォルトの名無しさん:2006/06/08(木) 20:21:19
環境:.NET 2003&Oracle
SQLのSYSDATEでOracleサーバから日付を取得し、「yyyy/mm/dd」という形で変数に格納したいのですが、うまくいきません。

SQLの使い方が悪いのでしょうか?よろしくお願いします。

StrHiduke = String型
dbDataTable = DataTable型

dbAdapter = New OracleDataAdapter("select to_char(sysdate,'yyyy/mm/dd') from Table名", dbConnect)
dbAdapter.Fill(dbDataTable)
StrHiduke = dbDataTable.Rows(0).Item(0)
61デフォルトの名無しさん:2006/06/08(木) 20:46:02
「うまくいきません」じゃわからないよ。
どのタイミングで、どんなエラーが出るのか明記してくれ。
62デフォルトの名無しさん:2006/06/08(木) 20:48:48
StrHiduke = dbDataTable.Rows(0).Item(0)
でDBNULLとか言われます。
63デフォルトの名無しさん:2006/06/08(木) 20:50:26
型"DBNull"から型"String"へのキャストが有効ではありません。
こうでます。
64デフォルトの名無しさん:2006/06/08(木) 21:49:28
問題はキャストできないことではなくて、DBNullが帰ってくることだ。

SQL自体に問題は無いだろうか?

SQLを生成した時点でブレークして、どんなSQLが実行されようとして
いるのか確認してみよう。

‥‥と、ふつうなら考えるだろうな。
つか、簡単に取得できるクライアント側のシステム日付を使わないのは
なぜ?
65デフォルトの名無しさん:2006/06/08(木) 21:53:40
SQL Plusでselect to_char(sysdate,'yyyy/mm/dd') from Table名
を実行するとちゃんとに日付が出ます。

SYSDATEを使えとの仕様なので、なぜと言われても(^_^;)
66デフォルトの名無しさん:2006/06/08(木) 22:03:56
じゃ、dbDataTable.Rows(0).Item(0)の中身はなに?
67デフォルトの名無しさん:2006/06/09(金) 01:09:58
Oracleの環境が無いから試せないが、フィールド名に名前をつけるとか、特定の型にキャストするとかその辺でどうでしょう。

もしDUAL表を使った1行1項目の問い合わせならAdpaterなんて使わずに
OracleCommand.ExecuteScalar で済ませない?
68デフォルトの名無しさん:2006/06/09(金) 02:55:37
>>64
C/Sならサーバサイドの時間を使うなんて普通だろ
むしろクライアントサイドの時間なんて動作ログや乱数のシード以外に使い道は無い
69デフォルトの名無しさん:2006/06/09(金) 09:10:18
おはようございま〜す。
質問があるんですけど〜

VB.netのトラックバーコントロールを
かっこよくデザインする方法ってどうやればいいんでしょうか。
たとえばWMPの音量バーみたいな感じにしたいんですけど。

70デフォルトの名無しさん:2006/06/09(金) 09:24:39
一から書く
7169:2006/06/09(金) 09:26:48
なんかカッコいいコントロールバーのライブラリ置いてあるページとかないですかね〜
72デフォルトの名無しさん:2006/06/09(金) 12:26:37
>>71
お前のかっこいい基準はなんなんだ?
73デフォルトの名無しさん:2006/06/09(金) 12:27:51
72っす

>>71
ごめ、69だったのか 見落としてた
グラフィック自作でやればいいんでね?
74デフォルトの名無しさん:2006/06/09(金) 18:36:44
つまみが困徒労瑠婆になってるような奴か
75デフォルトの名無しさん:2006/06/09(金) 19:55:35
iniファイルを操作するクラスが見当たらないのですけど、
ないのでしょうか?
76デフォルトの名無しさん:2006/06/09(金) 19:58:41
基本クラスライブラリにはないな
77デフォルトの名無しさん:2006/06/09(金) 20:00:34
78デフォルトの名無しさん:2006/06/09(金) 20:07:08
わかりました。
xmlを使ってみます。
79デフォルトの名無しさん:2006/06/09(金) 22:31:06
すいません、VBマクロが少し分かる程度の初心者です。

テキストエディタで”31”と打ったテキストファイルを読み込み、
VBで変換して、ファイルに書き込み、バイナリエディタで開いたときに
31と表示させたいのですが、どのように変換したら宜しいでしょうか?

文字列「31」⇒変換⇒「1」
文字列「80」⇒変換⇒「・」
など

上記の変換の方法が分かりません。


ちなみに、ファイルのopen , close , read , writeはプログラムできました。
80デフォルトの名無しさん:2006/06/09(金) 22:44:11
全角→半角変換とバイナリデータの書き込み方法を調べる
81デフォルトの名無しさん:2006/06/09(金) 22:46:45
Asc関数もな
82デフォルトの名無しさん:2006/06/10(土) 01:04:37
GraphicPathで作りあげた図形を回転させることって可能ですか?
RotateTransformっていうそれっぽいのを使ってみたんですが、一部しか回転しませんでした。
83デフォルトの名無しさん:2006/06/10(土) 22:08:46
オンラインゲームを作っているのですが、
ネットワークプログラミングの知識が劣るので助け舟をください。

ネットワークゲームでTCPサーバー、クライアントプログラムを作るとき、
やはり非同期接続式にしないとだめでしょうか?
84デフォルトの名無しさん:2006/06/10(土) 22:12:02
そんなレベルで作られたゲームやりたくねーなー
85デフォルトの名無しさん:2006/06/10(土) 22:16:28
やりたい、やりたくないを聞いてるのではないのですがorz
86デフォルトの名無しさん:2006/06/10(土) 22:30:14
おまえがどんなゲーム作るかなんて知ったこっちゃない
87デフォルトの名無しさん:2006/06/10(土) 22:32:31
知りたい、知りたくないを聞いてるのではないのですが
88デフォルトの名無しさん:2006/06/10(土) 22:36:18
いや、知りたいから質問スレで質問をしています。
大人気ない煽りは止めていただきたいです。
89デフォルトの名無しさん:2006/06/10(土) 22:43:46
サーバーエクスプローラーで接続のテストは成功したのに、OKを押すと

データベースに接続できません
このバージョンのVisual Studioを使った場合に限り、SQL Server Desktop Engine
データベースおよびMicrosoft Accessデータベースに接続することができます。

ってでます。これってひょっとして(も何も)MySQLにはVB.Net 2003では
MySQLに接続できないってこと????
90デフォルトの名無しさん:2006/06/10(土) 22:46:10
そんなレベルで作られたデータベース使いたくない
91デフォルトの名無しさん:2006/06/10(土) 22:55:53
煽り、煽られのスレに改名しろ
92デフォルトの名無しさん:2006/06/10(土) 23:02:36
93デフォルトの名無しさん:2006/06/10(土) 23:20:21
文体が同じだから同一人物だな
94デフォルトの名無しさん:2006/06/10(土) 23:21:42
>>83
>>非同期接続
そのあたりは好みだと思うんだが。

駄目とか聞いてるけど、つまり非同期接続は嫌だってことか?
95デフォルトの名無しさん:2006/06/10(土) 23:29:42
VBのフリーの開発ツールってありますか?
96デフォルトの名無しさん:2006/06/10(土) 23:51:55
>>95
.net faramework2.0SDK+SharpDevelopは?

俺はこれしか知らないがこれって意外とマイナー?
97デフォルトの名無しさん:2006/06/11(日) 00:01:19
Express Edition がある以上、最早……
98デフォルトの名無しさん:2006/06/11(日) 00:04:44
>>97
開発環境はないんじゃないか?
9995:2006/06/11(日) 00:09:13
>>96-97
調べてみたいと思います、ありがとうございました。
100デフォルトの名無しさん:2006/06/11(日) 00:16:28
だれか>>82よろしくおねがいします。
101デフォルトの名無しさん:2006/06/11(日) 00:18:58
GraphicsPath.Transform 使え。
102デフォルトの名無しさん:2006/06/11(日) 00:32:16
>>98
な、何を言っているのかね?
103デフォルトの名無しさん:2006/06/11(日) 00:39:01
>>101
ありがとうございます。
これは移動するだけで回転はできないんでしょうか??
104デフォルトの名無しさん:2006/06/11(日) 01:08:30
105デフォルトの名無しさん:2006/06/11(日) 01:24:39
Express EditionってWindowsSP2必須かよ
106デフォルトの名無しさん:2006/06/11(日) 01:40:35
それって次世代OS?
107デフォルトの名無しさん:2006/06/11(日) 01:42:05
WindowsXP SP2
108デフォルトの名無しさん:2006/06/11(日) 02:04:36
Vistaの無償ダウンロードはじまってるよ
109デフォルトの名無しさん:2006/06/11(日) 02:25:47
>>108
プロダクトキーのメールは届いたが、込み合っててダウンロードできねぇ
込み合ってますのが面が文字化けしてるし
110デフォルトの名無しさん:2006/06/11(日) 13:41:58
かなり必死に探したものの見つからないので、質問させてください。
株なんかの取引を自動化したいのですが、どうしても、
「特定の座標にマウスを移動させて、クリックする」という作業が発生するのですが、
これを簡単に実行するには、どうも「なでしこ」ぐらいしかみあたらないのです。
なでしこだと、ちょっと安定性に不安が残るのと、ちょっとした計算ぐらいはするし、
なんとなくですが、VBとかWSHみたいなものでも簡単に出来そうな気がするので、
何かヒントになりそうな情報がありましたら、是非ご教授ください。
111デフォルトの名無しさん:2006/06/11(日) 14:19:44
>>110
514 名前: デフォルトの名無しさん [sage] 投稿日: 2006/06/11(日) 13:41:24
かなり必死に探したものの見つからないので、質問させてください。
株なんかの取引を自動化したいのですが、どうしても、
「特定の座標にマウスを移動させて、クリックする」という作業が発生するのですが、
これを簡単に実行するには、どうも「なでしこ」ぐらいしかみあたらないのです。
なでしこだと、ちょっと安定性に不安が残るのと、ちょっとした計算ぐらいはするし、
なんとなくですが、VBとかWSHみたいなものでも簡単に出来そうな気がするので、
何かヒントになりそうな情報がありましたら、是非ご教授ください。
515 名前: デフォルトの名無しさん [sage] 投稿日: 2006/06/11(日) 13:47:46
>>514
っmouse_event API
112デフォルトの名無しさん:2006/06/11(日) 16:53:11
マルチすんなヴォケ なんて言葉が飛び交わないここは平和だなぁ
113デフォルトの名無しさん:2006/06/11(日) 17:26:38
3角形の1辺がカーブしているような図形を描いているんですが、うまくいかないんです。

myPath.StartFigure()
myPath.AddLine(60, 10, 10, 10)
myPath.AddLine(10, 10, 10, 60)
myPath.AddArc(10, 10, 100, 100, 180, 90)
g.FillPath(Brushes.White, myPath)
myPath.CloseFigure()
g.DrawPath(Pens.White, myPath)

これは、うまくいくんですが、

myPath.StartFigure()
myPath.AddLine(10, 110, 60, 110)
myPath.AddArc(10, 10, 100, 100, 180, -90)
myPath.AddLine(10, 60, 10, 110)
g.FillPath(Brushes.White, myPath)
myPath.CloseFigure()
g.DrawPath(Pens.White, myPath)

角度を変えた、こっちがうまくいきません。
2つ目のコードだけ、三角形のカーブさせたいところに直線が引かれてしまいます。
なんででしょうか??分かる方、お願いいたします。
114デフォルトの名無しさん:2006/06/11(日) 17:28:26
スイマセン。質問させてください

VB.NETでボタンを作成し7バイトで改行するように幅を調節したのですが、「12345678」と言った文字だと「7」と「8」の間で改行するのですが、
「いわし(バラ)」のような文字列だと「し」と「(」の間で改行されてしまいます。
これを「(」と「バ」の間で改行させるためのプロパティや方法は有りますでしょうか?
ちなみにフォントは「MSゴシック」
115113:2006/06/11(日) 17:33:32
自己解決しました。
addArcの角度の指定に誤りがあったようです。
ありがとうございました。
116デフォルトの名無しさん:2006/06/11(日) 17:47:19
>>114
button1.Text = "いわし(" + Environment.NewLine + "バラ)"
117デフォルトの名無しさん:2006/06/11(日) 19:14:55
VBを勉強しようと思いフリーの開発ソフトを調べてみたら
.NET FrameWork SDKと、VisualStudio EEの二つを見つけることができました
ですが、VS EEはSP2環境必須だったので諦めざる終えず、FrameWorkという物にしようと思うのですが
こちらはどうやら毎回DOS環境でしかコンパイルできないみたいで少々不憫に思いました
それでもしこの他に便利なものがあればそれに越した物が無いと思い、VBを扱えるフリーの開発ソフトはあれば教えていただけないでしょうか?
よろしくお願いします。
118デフォルトの名無しさん:2006/06/11(日) 19:53:48
釣れますか?
どうやら入れ食いとはいかないようですなw
119デフォルトの名無しさん:2006/06/11(日) 19:58:43
>>118
WIN98ユーザーをなめんな
120デフォルトの名無しさん:2006/06/11(日) 19:59:59
121デフォルトの名無しさん:2006/06/11(日) 20:38:47
いや釣りではないんですが・・・
SP2は場合によっては不都合が出るらしくて入れていない人は多いみたいですよ
122デフォルトの名無しさん:2006/06/11(日) 20:50:10
SP1はあと4ヶ月でサポート終了だから諦めてSP2入れろ。
123デフォルトの名無しさん:2006/06/11(日) 20:55:13
SP1サポート終了しても使い続ける人↓

ノシ
124デフォルトの名無しさん:2006/06/11(日) 20:58:52
>>117
SharpDevelopでぐぐれ。

>>120
なんて言うか、ヒューマンスキルって大切だよなと気付かせてくれた。
125デフォルトの名無しさん:2006/06/11(日) 23:24:38
いまどき、SP2じゃ動かないソフトを使い続けるのはどうかと思うがね
126デフォルトの名無しさん:2006/06/12(月) 01:28:53
遅くなりました

>>124
>SharpDevelop
こんな便利なツールがあったんですね、感謝します

>>125
SP2でしか動かないソフトの話ですよ>VisualStudioEE
127デフォルトの名無しさん:2006/06/12(月) 17:28:18
vb.net(2003) のグリッドコントロールは、非連結では使用できないでしょうか?
(必ずデータベースとの連結が必要?)
128デフォルトの名無しさん:2006/06/12(月) 17:36:24
WinForm か ASP.NET かどっちだ?
ま、別に連結せんでも使えるがした方が楽。
そもそも連結対象はデータベースじゃなくて DataSet/DataTable 。
129デフォルトの名無しさん:2006/06/12(月) 17:38:35
>>127
DataSetとペアになってればいいから、DBからではなくDataSetオブジェクトを直接コードで生成する。
130127:2006/06/12(月) 19:19:51
>>128
すみません。Windows Forms でした。

>>129
DataSet オブジェクトに直接コードで、という事ですが、グリッドの、行列を指定して直接値を
投入する、という事はできない、という事ですね。

DataSet/DataTable とグリッドをペアで使う必要がある、と。
131デフォルトの名無しさん:2006/06/12(月) 19:35:33
インメモリのDataSetにも、フォーム上のDataGridにも値を投入する
ことは可能だよ。テンプレサイトで検索したらコードも見つかる。
132デフォルトの名無しさん:2006/06/13(火) 01:58:02
MsFlexGridでUnicodeの表示は可能ですか?
133sage:2006/06/13(火) 14:41:37
>>22
>>23
回答ありがとうございます。
やってみます。
134デフォルトの名無しさん:2006/06/13(火) 19:37:58
すみません。どなたか教えてください。
不特定の長さの文字列に、4文字毎にスペースを入れる
為にはどのようなコードをかけばいいでしょうか?
例えば
"ABC_EFG_HIJKLMN_OPQ"
(_はスペース)
などとありましたら、"ABC__EFG__HIJK_LMN__OPQ" と出力したく思います。
よろしくお願いします。
135デフォルトの名無しさん:2006/06/13(火) 20:25:57
for i=0 to len(x)/4: mid(x, p*4, 1) = mid(x, p*4, 1)+" ":next
136デフォルトの名無しさん:2006/06/13(火) 20:44:54
正規表現でもよさげ
y = Regex.Replace(x, "(....)", "$1_")
137134:2006/06/14(水) 10:48:24
>135
>136
おふた方どうもありがとうございます。
正規表現面白そうですね。調べてみます。
138デフォルトの名無しさん:2006/06/14(水) 16:27:44
VB.NETにおけるRaiseEventステートメントは
C#だと
if (handler1 != null)
{
handler1(this, e);
}
と同じだと思っているのですが、
C#で以下の様に書いたのをVB.NETのEventでもやりたいのですが
できるでしょうか??
if (handler1 != null)
{
handler1(this, e);//イベントハンドラがセットされている場合呼ぶ
}
else
{
otherProc();//セットされていない場合別の処理を呼ぶ
}
139138:2006/06/14(水) 16:37:22
自分で調べた感じでは
Event EClick As System.EventHandler
のようにEventとして宣言してしまうと
VB.NETではできない(C#ではできるのに)
という結論になりつつあるのですが。。。
Eventではなく単なるDelegateとして
Dim EClick2 As System.EventHandler
のように宣言すると可能ですが、もちろん「Event」として
扱ってくれないのでVS上で雷マークで出てきてくれません。
140デフォルトの名無しさん:2006/06/14(水) 16:40:47
VB8(VB2005) でカスタムイベント使えばできる。
でも正直それはイベントの使い方が変。
裸のデリゲート使った方が良いかも。
141138:2006/06/14(水) 17:39:31
カスタムイベントですか、調べてみます。
2003ではこれは仕様ですね。。。
142デフォルトの名無しさん:2006/06/14(水) 18:51:43
Public Sub Mona(ByVal a As Object)
 Dim b as 引数の型
End Sub

引数aがintegerだったら、Monaの中でbはintegerを宣言
引数aがdoubleだったら、Monaの中でbはdoubleを宣言のようなことってできますか?
143デフォルトの名無しさん:2006/06/14(水) 18:56:31
オーバーロード作れ。
144デフォルトの名無しさん:2006/06/14(水) 18:58:17
>>142
オーバーロードについて調べた方がいいよ。
っていうか、最低入門書ぐらい一通り目を通せよ。
人に質問なんてそれからだろ。
145デフォルトの名無しさん:2006/06/14(水) 19:03:04
あ、でもオーバーロードは継承を理解してないと危ない場合があるから
継承もついでに勉強しましょう。
146デフォルトの名無しさん:2006/06/14(水) 19:08:56
2005ならジェネリックもあるけどな
147デフォルトの名無しさん:2006/06/14(水) 19:12:03
型パラメータで受け取った引数に対して算術演算はできないんだよ……。
148142:2006/06/14(水) 19:20:36
>>143-147
THXです
オーバーロードでやってみます
149デフォルトの名無しさん:2006/06/14(水) 21:05:36
>>144 ←えらそうな奴だな( ゚д゚)、ペッ
150デフォルトの名無しさん:2006/06/14(水) 22:24:35
>>149
常識を言っただけだろ。

ところで、論理シフトって組み込みの機能で用意されてないのかな
やっぱり、例えば次のようにやるしかない?

Public Shared Function LogicShiftRight(ByVal x As Integer, ByVal amountOfShift As Integer) As Integer
Dim bitMask As Integer = &H7FFFFF >> amountOfShift

Return ((x >> amountOfShift) And bitMask)
End Function
151デフォルトの名無しさん:2006/06/14(水) 22:28:23
あ、微妙に正しくないな。たぶんこう修正しないとダメだ。

Public Shared Function LogicShiftRight(ByVal x As Integer, ByVal amountOfShift As Integer) As Integer

If amountOfShift < 0 Then Return LogicShiftLeft(x, amountOfShift)

Dim bitMask As Integer = &H7FFFFF >> (amountOfShift - 1)

Return ((x >> amountOfShift) And bitMask)
End Function
152デフォルトの名無しさん:2006/06/15(木) 10:20:53
windowsアプリでのDBConnectionはSQL実行するたびにopen closeするものなのでしょうか?

それともアプリ起動時に1回openして終了時にcloseという感じなのでしょうか?
153デフォルトの名無しさん:2006/06/15(木) 10:46:57
>>152
SQL実行後とにopen/closeは論外だろうが
フォーム単位とかイベント処理の単位とかならあり
最近のはコネクションプールされてるからopen/closeのコストもたいしたこと無い
無用なセッションの増加やトランザクションの維持を避ける事と秤に掛けて検討するのが良い
154デフォルトの名無しさん:2006/06/15(木) 13:03:16
ADO.netならコネクションぷーリングが働くと思うが。
だから、毎回(検索の場合、更新はトランザクション単位で)開閉するのが当然。
155デフォルトの名無しさん:2006/06/15(木) 18:04:47
156デフォルトの名無しさん:2006/06/15(木) 20:24:25
誰か継承を説明してくれないですか?
本とか読んでてもいまいち理解不能・・・
157デフォルトの名無しさん:2006/06/15(木) 20:32:28
本読んでも分からないのに掲示板のレス数行で説明されて理解できると考えるあなたの頭がいっそ愛おしい
158デフォルトの名無しさん:2006/06/15(木) 20:41:13
>>156
そういう技術を一から解き明かすようなことを掲示板に求めたって無理だろw

MSDNライブラリのチュートリアルとか、案外丁寧に書いてあるからあれ読めば
理解できるでしょ。

あとMSDNライブラリに『プログラミング Microsoft Visual Basic .NET』って本の、
ちょうど継承の部分を抜粋した奴が入ってるけど、けっこういい文章だよ。
アメリカのエンジニアらしく、論理的で網羅的に書いてあるし。

http://www.microsoft.com/japan/msdn/net/books/ProgVBNET/chapter5.asp
159デフォルトの名無しさん:2006/06/15(木) 22:23:35
Javaの入門書を買って読むといいよ
160デフォルトの名無しさん:2006/06/15(木) 23:13:35
vb.net(visual studio 2003) の windows forms で質問です。

1) フォーム内で FLASH の SWF ファイルを再生する事はできますか?
2) Windows エクスプローラのように、コピー中などのアニメーションを表示させたいのですが
どうやって実現したらよいかわかりません。
アニメーションはどうやって実現できますでしょうか?

アドバイスを頂けるとうれしいです。よろしくお願いします。
161デフォルトの名無しさん:2006/06/16(金) 10:42:39
>>160
1) AxWebBrowser
2) SHFileOperation
162160:2006/06/16(金) 11:02:52
>>161
ありがとうございます。

1)AxWebBrowser を調べてみましたが、ブラウザコントロールだと思うのですが Flash Player のプラグインが
インストールされている前提が必要になるようです。
そういった前提条件なく flash を再生する方法はないでしょうか?
(VB.NET のコントロールで flash を再生できるとベストなのですが)

2) SHFileOperation ですが、私の説明がまずかったのですが、
ファイルのコピーや移動が行ないたいのではなく、例えばエクスプローラなどで
ファイルのコピーを行なうと、アニメーションが表示されると思います。

これを、自前のアプリの中で同じように、何かの処理中にアニメーションを表示したいのですが
vb.net のアプリの中でアニメーションを表示させる定石みないな事があれば教えてください。

アドバイスのほど、よろしくお願いします。
163デフォルトの名無しさん:2006/06/16(金) 11:10:18
>>162
1)無理
でも、古いバージョンのSWFなら標準のflashプラグインで行けるよ

2)AVIファイルを貼り付ける
164デフォルトの名無しさん:2006/06/16(金) 11:10:25
>>162
> そういった前提条件なく flash を再生する方法はないでしょうか?
> (VB.NET のコントロールで flash を再生できるとベストなのですが)
Flash は Microsoft の製品じゃない。

> これを、自前のアプリの中で同じように、何かの処理中にアニメーションを表示したいのですが
> vb.net のアプリの中でアニメーションを表示させる定石みないな事があれば教えてください。
アニメーションGIF 使うかタイマで書き換え。
165デフォルトの名無しさん:2006/06/16(金) 12:33:15
しかしなあ、160みたいな人がプログラミングって……

パソコンの存在を前提とせずにエクセルを使いたいのですが、
みたいな電波な質問をする人はこの世界入っちゃダメだと思うけど。
166デフォルトの名無しさん:2006/06/16(金) 12:46:32
プログラミングってそんな特別な作業でもない。
誰にでもできるよ!できるよ!(AA略
167デフォルトの名無しさん:2006/06/16(金) 13:11:01
>>166
それはプログラミングでは無い
コードの編集作業だ
プログラミンは選ばれた者だけが行える至高の労働だ
168デフォルトの名無しさん:2006/06/16(金) 13:54:27
まあ、上から指示された通りにコーディングするだけじゃプログラマ
とは言えない罠。仕様書に沿ってアルゴリズムを組み上げて、ムダな
くムリなくバグも少ないコードが書けてこそだ。
169デフォルトの名無しさん:2006/06/16(金) 15:03:21
上から指示された通りにコーディングするだけ=コーダー≠プログラマ

死んだじいちゃんに言われた。「コーダーだけにはなっちゃなんねぇ・・・」って
170デフォルトの名無しさん:2006/06/16(金) 15:16:38
いまどきコーダなんて存在するのか?
171デフォルトの名無しさん:2006/06/16(金) 15:34:29
172デフォルトの名無しさん:2006/06/16(金) 17:39:15
お願いします。教えてください。
宿題で、 「与えられた半角文字列中に含まれる単語のうち、       最も多く出現する単語を返す関数(MostFrequentWord) を作成しろ。条件として大文字、小文字を区別しない。
      返される文字は最初に出現した表記。2つ以上の単語が
      同数の場合、先に登場したものとする。 配列の考え方を利用せよ。」
という問題があるのですが、
 この問題の前に、与えられた文字列中に含まれる単語の数を返す関数CountWords を作れという問題もあり、それは、何とか出来たのですが、  今回の問題に、この関数CountWords を利用して作成する。みたいな事らしいのです。
 最終的に作成した関数MostFrequentWord を用いるとprint FrequentWord("I love you. You love me.")

実行結果 love となるように作るみたいです。
また 、 作成した CountWords を用いると、この場合 

CountWords("I love you. You love me.")
実行結果は 6 と返されます。

 分からない事があるのですが、 この与えられた文字列 "I love you. You love me."

は配列として考えることはできるのですか?

どなたか 教えて下さい
173デフォルトの名無しさん:2006/06/16(金) 17:47:59
単語一つ一つを分けて配列に入れるという意味だと思う
174デフォルトの名無しさん:2006/06/16(金) 17:49:36
CountWordsで用意する配列の数を求めるんだと思う
175デフォルトの名無しさん:2006/06/16(金) 17:56:38
VB関係ない気がする。
文字列を配列として考えるのではなく、単語を配列の要素として考える。
6個の単語があるのだから、要素数6の配列が出来るよね。
6はループの回数とでもして使わせようとしてると予想。

既に答えが上がっているけど、せっかく書いたのでうp
176デフォルトの名無しさん:2006/06/16(金) 19:33:17
問題の意味を質問するスレ
177デフォルトの名無しさん:2006/06/16(金) 20:12:43
>>160
プログレスバーだっけ?
あれ使えばできる
178デフォルトの名無しさん:2006/06/17(土) 21:27:55
にゅ
179デフォルトの名無しさん:2006/06/17(土) 22:12:21
VB.NETでGAMEって作れますか
180デフォルトの名無しさん:2006/06/17(土) 22:51:32
GAMEの定義次第
181デフォルトの名無しさん:2006/06/17(土) 22:57:52
問題の意味を質問するスレ
182デフォルトの名無しさん:2006/06/17(土) 23:39:07
マリオみたいなアクション系&グラディウスみたいなシューティング系
スマブラ(ネット対戦)
この3つ出来ますかね?
183デフォルトの名無しさん:2006/06/17(土) 23:53:26
できん事は無かろうが、おまいさんにその技術があるようには見えないな
184デフォルトの名無しさん:2006/06/17(土) 23:55:47
C#だけどMSにQuakeIIがソース付きであったよね。
185デフォルトの名無しさん:2006/06/18(日) 00:09:58
まずはブロック崩しを作ってみればいい。
コントローラやボールの移動、衝突判定など盛り沢山だ。
186デフォルトの名無しさん:2006/06/18(日) 00:21:39
商用ゲーム作ってるとこって実際どんな言語使ってるんだろ
187デフォルトの名無しさん:2006/06/18(日) 16:10:59
コンシューマのはCやC++だろ
188デフォルトの名無しさん:2006/06/18(日) 16:50:18
メーカからライブラリがCインターフェースのAPIで提供されるからな
189デフォルトの名無しさん:2006/06/18(日) 20:03:38
ゲームって基本的に全体をループさせて、その中で色々な処理させてるの?
移動とか当たり判定とか
190デフォルトの名無しさん:2006/06/18(日) 22:04:11
初心者が作るとそうなる
191デフォルトの名無しさん:2006/06/18(日) 22:06:31
初心者じゃない人が作るとどうなる?
192デフォルトの名無しさん:2006/06/18(日) 22:07:27
VBの宿題を教えてもらえるスレってないのでしょうか?
193デフォルトの名無しさん:2006/06/18(日) 22:49:47
初心者が作らなくてもそうなる
194デフォルトの名無しさん:2006/06/18(日) 22:52:29
DirectX もそう言う作りだしな
195デフォルトの名無しさん:2006/06/19(月) 16:55:22
VBでWindowsフォームを使用したアプリケーションを作成しています。
そのフォームで処理をすると、フォームが固まってしまいます。入力も受け付けてくれません。画面も真っ白になってしまいます。
ただ、バグを起こしているとか無限ループとかではありません。
途中で、メールを送るような処理をさせているのですが、メールもちゃんと送られています。
これでは、ユーザーからは、バグっているように見えてしまいます。これは何が原因なのでしょうか?また、対処法はあるのでしょうか?
ご存知の方、よろしくご教授願います。

196デフォルトの名無しさん:2006/06/19(月) 16:59:42
処理に時間掛かってるだけじゃねーの
197デフォルトの名無しさん:2006/06/19(月) 17:48:55
>>195
ループしてる処理があるなら、DoEvents入れてみるとか。
198197:2006/06/19(月) 17:50:35
>>195
http://www.atmarkit.co.jp/fdotnet/dotnettips/136doevents/doevents.html

こんな状態になってると思われる。
199デフォルトの名無しさん:2006/06/19(月) 18:36:35
>>195
どう贔屓目に見てもそういうのバグっていうんだよw
少なくともユーザーから見たらバグ以外のなんでもない。
こんなとこで自分を正当化して何になるんだよ
200デフォルトの名無しさん:2006/06/19(月) 18:38:52
ついでに対処法について。
DoEventsとかいってるヨタは無視してよろしい。
普通にスレッド起動して、重い処理はそこで実行するようにしましょう。
201デフォルトの名無しさん:2006/06/19(月) 18:46:53
.NET 2.0/VB2005 なら BackgroundWorker マジオススメ
202デフォルトの名無しさん:2006/06/19(月) 20:30:42
本当に重くてそうなってるんかが問題だがな
CPU使用率見てみ
低ければリフレッシュで再描画とかしてみ
203デフォルトの名無しさん:2006/06/19(月) 20:52:59
処理に時間が掛かってるのと CPU の使用率とは関係あるまい
Thread.Sleep(10000) とかな
204デフォルトの名無しさん:2006/06/19(月) 22:19:15
>>195
>>メールを送るような処理をさせているのですが、メールもちゃんと送られています。
かなり勘で言うけど、メールを送った後の応答待ちでフリーズかましているだけとか?
205195:2006/06/20(火) 10:22:49
195です。
みなさん、ご回答ありがとうございます。
処理には、確かに2時間かかります。それを一日に何度も繰り返します。
この処理中でも、バックアップ処理や他の業務アプリは正常に動いていました。
私もスレッドで処理したいのですが、設計書に「同期処理で行う」と書いてあるので
諦めました。
こういうのは、Windowsサービスにした方がいいと思うんですが、SEがWindowsサービスの
存在を知らないようです。
DoEvents、リフレッシュで再描画、BackgroundWorkerを試してみます。
みなさん、ありがとうございました。
206ボンちゃん:2006/06/20(火) 10:26:45
マスターページにMenuコントロールを配置し、StaticSelectedStyle内の
プロパティに値を設定しております。(色情報等)
ソースにはSiteMapDataSourceを使用しています。
Menuコントロール内のあるボタンをクリックすると、上記の設定が適用され
ボタンの色が変わります。

が、問題はその後なのです。
Menuボタンクリックによりコンテンツが表示されるのですが、その中で
違うページへ移動(ハイパーリンク等)すると、マスターメニューの
StaticSelectedStyleが適用されなくなってしまいます。(選択状態とならない)

具体的に表現すると。。。
・Menuコントロールによって大分類を選択する。
・選んだ大分類のボタン色が変わる。
・表示されたページ内で、小分類のリンクを選択する。
・小分類のページへ遷移すると、さきほど選んだ大分類のボタン色が初期状態に。
・本当は小分類のページへ遷移しても、大分類は選択されたままの状態にしたい。
といった感じです。
コンテンツページで遷移を行ってもマスターページのMenuコントロールボタン選択状態を
保つ方法はないでしょうか?

リクエストのurlとweb.sitemapを照らし合わせて、選択状態を管理しているのではと
考えているのですが、urlが変わると選択状態にならないみたいなので困っております。。。

根本的に間違っている可能性もあるので、似たような事を実現されている方、解決方法が分かる方
情報がありましたらよろしくお願いいたします。
207デフォルトの名無しさん:2006/06/20(火) 11:46:05
マスターとスレーブはDIPスイッチで切り替えるのか
208デフォルトの名無しさん:2006/06/20(火) 12:19:50
VB6.0を今まで使ってましたが、今度VB.NET2003を使う予定です。
VBとVB.NETってどう違うんでしょう?
209デフォルトの名無しさん:2006/06/20(火) 12:33:28
色々
210デフォルトの名無しさん:2006/06/20(火) 12:46:34
さらに2005でも色々変わる。
211デフォルトの名無しさん:2006/06/20(火) 12:54:16
今更 2003 導入ってのは無いよなー
212206:2006/06/20(火) 13:10:59
あれれ?俺ってばスレ違いの質問しちゃってるです?
213デフォルトの名無しさん:2006/06/20(火) 13:14:34
>>212
良いけど、「実際に〜」って聞いてるから実際そうなった人がいないだけじゃない?
あと、再現する最少のソースをどっかに乗せるとかしないと
そういう質問はスルーされるよ
214ボンちゃん:2006/06/20(火) 13:41:46
我が名はボンちゃん。いずれこの板を牛耳る男ぞ?
その朕の質問に答えられないと申すか
215デフォルトの名無しさん:2006/06/20(火) 14:12:38
サブプロシージャ1の引数が整数値で、その1をオーバーロードした2の引数を文字列にして、
option strict = onにしてから、
そのサブプロシージャに文字列なり数値なりを渡すと文字列の場合でも数値の場合でも怒られるんですが、なぜ??
オーバーロードを解釈してないのかな?
216デフォルトの名無しさん:2006/06/20(火) 18:27:31
お前さんがタコだから。
再現可能なコードぐらい出せよ。
217デフォルトの名無しさん:2006/06/21(水) 17:44:05
ネットワーク上のあるコンピュータで、あるサービスが起動しているか、していないかを
調べる方法はありますか?

PC_A のプログラムにて PC_B であるサービスが起動しているかを判断したいのですが。
方法があればアドバイス、よろしくお願いします。
218デフォルトの名無しさん:2006/06/21(水) 19:07:54
GetProcessesByName(あるサービス,PC_B)
219VB初心者:2006/06/22(木) 09:56:09
DLLの呼び出し(宣言)で質問させてください。Vb2005

あるDLLを利用するのに、VB6では Anyキーワードを使っていました。軽い気持ちでAnyをそれぞれByRef B as Byte(),ByRef C as Char() と書き換えました。
※BもCも引数の受け渡しだけでなく、呼び出し先で書き換えられる仕様です。
期待する動きをしないので、デバック用のDLLを作って受け取った値をチェックすると...
紆余曲折をへて、Char配列は素直にString型で良い事が判明しましたが、Byte配列がうまくいきません。どなたか良い方法をご存知の方いませんでしょうか?

<DllImport("hBTR.DLL", EntryPoint:="TESTCALL", _
SetLastError:=True, CharSet:=CharSet.Unicode, ExactSpelling:=True, _
CallingConvention:=CallingConvention.StdCall)> _
Public Shared Function TESTCALL( _
<MarshalAs(UnmanagedType.U2)> ByVal op As Int16, _ '値渡 OK
<MarshalAs(UnmanagedType.LPArray)> <[In](), Out()> ByRef pBP() As Byte, _'参照バイト配列 X
<MarshalAs(UnmanagedType.LPStr)> ByRef pDB As String, _ 'String ○
)as integer
Byte配列もStringで渡せば! と思ったのですが、戻り値に0が含まれると、そこで切れてしまいます。
呼び出し部分
dim b() as string:redim b(127)
dim c as string
c="ABC":b(0)=1
Ret = TESTCALL(0, b, c)
RetはDLLからの値を受け取っている。1番目の引数0も正しくDLLに送られている。2番目の引数は受け渡しは成功するが、受け取りに失敗。3番目の引数は受け渡し、受け取り成功

たかが128バイト
本番で利用するDLLはこの128バイトを設定領域として利用。
ユーザーが保持しなければいけない仕様orz
テストDLL側で本番のDLLをコールしたら成功w(DLLの機能は問題なし)
VB2005<byte配列>DLL
いい方法をご存知なかた教えてください。
220デフォルトの名無しさん:2006/06/22(木) 10:07:49
.NET では配列はクラス、つまり参照型。
なので ByRef As Byte() を渡すと言う事は byte** を渡すという事。
221VB初心者:2006/06/22(木) 10:18:46
>>220
レス有難うございます。
ポインタのポインタですよね^^
バイト配列のポインタ(引数の受け渡し)は成功している(呼び出し先のDLLで確認)ので、問題はアンマネージコードとの関連部分
<MarshalAs(UnmanagedType.LPArray)> <[In](), Out()> ByRef pBP() As Byte, _'参照バイト配列 X
このあたりだと推測されます。


上のスレへの追加情報
DLL呼び出しで、呼び出し先で引数の値を変更する場合。ByValは利用できない。

222デフォルトの名無しさん:2006/06/22(木) 10:20:38
C の定義を見せろ。
223デフォルトの名無しさん:2006/06/22(木) 10:24:42
このレベルの呼び出しになるとP/InvokeはあきらめてC++/CLIのInteropに逃避している。DLLが一つ増えるがすっごく楽っす。
224VB初心者:2006/06/22(木) 10:40:54
>>222
Delphi7ですが

type
tPB = record
pb:array[0..127] of byte;
end;
ptpb = ^tpb;//tPBの配列へのポインタ宣言

function TESTCDLL(op:word; var PPB:ptpb;var PDB:pchar): Integer; stdcall;
var
_PPB:tpb;
begin
 copymemory (@_PPB.pb,PPB,128);//デバックの為ローカルへCopy
//本番のDLL
 ret:=MainDLL(_op,_PPB.pb,_PDB.db);//_PPB.pbのバイト配列が戻ってくる
copymemory (PPB,@_PPB.pb,128);//ローカル領域のデータをバイト配列のポインタ領域へコピー

//引数と戻り値の内容が、一致している事を確認
225デフォルトの名無しさん:2006/06/22(木) 11:08:58
Delphi はさっぱり分からんなしかし。

PDB 周りは不明だが、C に翻訳するとこんな感じか?

typedef struct _tPB {
   char pb[128];
} tPB, *ptpb;

int TestCall(short op, ptpb PPB, char* PDB) {
   int ret;
   tPB _PPB;
   CopyMemory(&(_PPB.pb), PPB, 128);
  ret = MainDLL(op, _PPB.pb, _PDB.db);
   CopyMemory(PPB, &(_PPB.pb), 128);
   return ret;
}

だとしたらやはり ptpb はポインタのポインタにはならんな。ただのポインタだ。
226VB初心者:2006/06/22(木) 11:29:08
>>225
レス有難うございます。大変ありがたい....
delphiの特徴として 関数定義の引数にVar 宣言をするとそれが「参照型」になります

PPB:ptbp |(C)ptpb PPB //varをつけない場合 値渡し
var PPB:ptbp |(C) ptpb* PPB //var をつけた場合 <このようになります

※しかし、呼び出し元からは値を受け取れているのですよねorz...
同じ場所へ同じくCopyMemoryで値を戻して受け取れないのは何故だろう

このようなデバックコードを試しましたが、呼び出し元では
PPB.pb[0]:=100;NG //byte配列
PDB:="ABC";//String OK
と言う結果ですね...
http://msdn2.microsoft.com/ja-jp/library/23acw07k.aspx
このあたりの話なのでしょうか? 
128byteで深遠に足を踏み入れてしまったw

227デフォルトの名無しさん:2006/06/22(木) 11:41:51
つまり PPB は ptpb*/tPB** である、と?
とすると今度は copymemory の引数がおかしいという事にならんか?
> copymemory (@_PPB.pb,PPB,128);//デバックの為ローカルへCopy
の第二引数が PPB になってるって事はコピー対象が ptpb/tPB* であって、
頭の 4 バイトに tPB へのポインタを含み残り 124 バイトは意味不明の 128 バイト、をコピーする事になるような。
228VB初心者:2006/06/22(木) 12:14:25
>>227
ちょっと整理してみました。少し戻ってVB2005のバイト配列にこのようなデバックコードを用意しました。
間違いがあればご指摘ください

Dim sbb() As Byte
ReDim sbb(128)
For i = 0 To 16
sbb(i) = CByte(i)
Next
DLLインポート部分の宣言
<MarshalAs(UnmanagedType.LPArray)> <[In](), Out()> ByRef pBP() As Byte,
バイト配列の参照型を宣言。バイト配列のポインタを受け渡している
Ret = TESTCALL(sbb)

○delphi 側
function test (var PPB:ptpb)//
var _PPB:tpb//変数部に実体を同じ大きさのメモリ確保
begin
copymemory (@_PPB.pb,PPB,128);//@はCの&に当たる

ウオッチによる参照
PPB addressの値
PPB^ 0,1,2,3,4,5,6,...
_PPB.pb 0,1,2,3,4,5,6,...

正しく呼び出し元から値が入ってきています。
問題はこの値が呼び出し元に戻らないのですorz

copymemory (PPB,@_PPB.pb,128);
Delphiからのメモリコピーは正しく終わっているように思われますが
VB側に戻らないようです... 
229デフォルトの名無しさん:2006/06/22(木) 12:16:19
んー、しかし var とやらが C++ の参照に相当するならおかしくはないか……。

Byte() 持った構造体書いて(MarshalAs で固定長配列を指示して)、
Marshal.AllocCoTaskMem/Marshal.StructureToPtr でメモリにコピーして、
その IntPtr を ByRef で渡す。
てのが妥当かな。
230デフォルトの名無しさん:2006/06/22(木) 12:37:35
面倒なのでろくに読まずにレス。
たぶん、

<[In](), Out()> ByVal pBP As Byte()
でいいんじゃない?

呼び出し先がずっとバッファのアドレスの値を保持していて、
好き勝手なタイミングで書き換えるとかじゃなければ。
(この場合、ガベコレを抑制しないとまずかったはず)

MarshalAs属性はいらないと思う。
231VB初心者:2006/06/22(木) 12:42:00
>>229
構造体については試してみました。いろいろ有難う

<MarshalAs(UnmanagedType.Struct)> この宣言をおこなうと参照型が使えなくなりますorz
Lptstructにすると実行時に Structを使いなさいとコンパイラに怒られる
Structを使う(byValになる)と保護しているメモリーに書き込みをしましたエラー...


話を単純化すると 
バイト配列をDLLに渡して[バイト配列の帰り値]を受け取りたいだけなんですが....
MSの責任者教えてくださいw
232VB初心者:2006/06/22(木) 12:47:04
>>230 
レス有難う 
<[In](), Out()> ByVal pBP() As Byte, _
で試してみました。
ByVal はメモリ保護で実行時エラー ... orz
233デフォルトの名無しさん:2006/06/22(木) 12:53:18
そりゃ Delphi の方で ** で受け取ってるんだから当然だが。
ていうか Delphi の方を var で受ける意味あるの?
今でてるの見る限り一切無いはずなんだけど。
ptpb で受ける限り、var の有無にかかわらず pb への変更は呼び出し元でも有効なはず。
それともつけなきゃ暗黙で const になるとでも言うのか。
それならそれで ptpb じゃなくて var の tPB で受ければいい話のはずだし。
234VB初心者:2006/06/22(木) 13:02:20
>>233
var 演算子をつけない場合、delphiはヒープに引数を丸ごとコピーします。
ポインタの場合はどしているんだろう?汗
もともとVBからはポインタ、サイズは4Byteしかないので意味がないといえばそうかもしれません。

いずれにしてもVARを外して試してみますね。
235VB初心者:2006/06/22(木) 13:20:35
>>234
VAR をつけないと引数の受け取りも失敗します

さて、その後も調査した結果 Byte配列の1バイト目はデーターが
戻っていることが判明しました。
しかしながら、配列サイズが1となっていました。
ReDim Preserve sbb(127)このようにサイズを戻しても先頭以外は0になっていました。

やはりDLLのインポート宣言に何かが必要なようです...


236VB初心者:2006/06/22(木) 18:30:59
自己解決できました
方法は配列を以下のように宣言して
Public Structure pBPstruc
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=128)> <FieldOffset(0)> Public ByteB() As Byte
End Structure 'pBPstruc
DLL インポート部では
<MarshalAs(UnmanagedType.LPArray)> ByRef pBP() As pBPstruc, _

ということでした。
StringやChar Stringbuffでは配列に0が入った場合、長さが小さくされてしまう。


今回、調査して感じた事ですが
DLLの多くは(供給)された物が多い中、VB6のコードでDLL呼出は成功しない。
今回、多言語でテストDLLを作って動作をシミュレーションする事が出来たので、VB側からの
データーの流れを確認できたのですが、VBだけの環境では厳しかったかもしれません。
ポインタがない言語ではいろいろとねorz...

なぜC# C++を使わないのか? それは(笑...

237デフォルトの名無しさん:2006/06/22(木) 18:44:20
>VB初心者
バッファの先頭アドレスを渡す方法は>>230に書いた通りで間違ってないと思うよ。
MSDNライブラリにもそのように書いてあるし、今までそれで問題は出てないから。
それでエラーが出るとすれば、原因は他の部分でしょう。

後C文字列の先頭アドレスを渡すときもStringをByValで渡さないとだめね。
ただし、これは呼んだ先で文字列を変更しない場合だけね。(つまりOut属性は不可)
呼んだ先で文字列を変更したい場合はStringBuilderをByValで渡すようにする。
この辺りもMSDNライブラリに書いてあるよ。
非常に散漫で分かりにくいけど。
238VB初心者:2006/06/22(木) 20:17:33
>>237
レス有難うございます。
ポインタの値そのものは書き換えることはないので ByValということですね。

※以下アンマネージドコード DLLコールに限った話
<MarshalAs(UnmanagedType.LPStr)> ByRef pKb As String

ByRefでString文字列をDLLに渡して、又、受け取ることも出来ました。
String のままでは、ByValではコンパイラが実行時に止めてしまいますw

byref Stringを ByVal StringBufferでにしたほうが良いという理由はどういった事でしょうか?
よろしければ理由を書いていただけると助かります。

239デフォルトの名無しさん:2006/06/22(木) 20:37:14
ん、?
コンパイラはコンパイル時にしか仕事しないはずだよ。
コンパイラだからねw

>byref Stringを ByVal StringBufferでにしたほうが良いという理由はどういった事でしょうか?
StringBuilderね。
上の方で誰か既に書いてるみたいだけど、参照型をByrefで渡すってことは
Cで言えばポインタ変数のアドレスを渡すってことになるから。

ちなみに参照型をByValで渡すことはポインタ変数の値(つまりアドレス)を
渡すことになる。(Stringの場合は例えばUTF8をANSIに変換したりする必要があるから
完全に正確な表現じゃないと思うけど。)
VB初心者さんが欲しいのはこっちなんじゃ?
240VB初心者:2006/06/22(木) 23:48:07
>>239
デバック時における実行時エラーがありますよw

最大の難関? をクリアーして現在VB2005で色々と楽しんでいます。
ちなみにストリング変換はマネージドコントロールにANSI変換を指定しているので、
変換する手間はかかりません。
DLLを通じてDBからのANSI2バイトコードが変換作業なしに
そのまま表示されまして、これはちょっと感動w

VB6では byte<>UniCode(String)が必要でしたからね(苦笑

ByRef と ByVal についてはマネージコードとの兼ね合いと実行時の動作で決めました。
ByValにすると 引き渡す型とマネージコードの不一致、もしくは実行時エラーが起こります(謎

いすれにしてもバイト配列の相互受け渡しができれば、あとは何がおきても拡張すれば出来ると確信しております。

241デフォルトの名無しさん:2006/06/23(金) 00:20:02
コンパイラが実行時エラー出すって言う人初めてみたよw

っていうか、そんな姿勢じゃ遠からず痛い目見るよ間違いなく
242デフォルトの名無しさん:2006/06/23(金) 00:55:45
コンパイル中に実行時エラー出して止まっちゃうコンパイラならみたことあるよ
243VB初心者:2006/06/23(金) 00:56:05
>>241
ソースデバック時のエラーは実行時エラーではないのでしょうか?(汗
コンパイラが出すわけではないですが、統合環境(デバッカ)が出すものですね。

244デフォルトの名無しさん:2006/06/23(金) 02:12:00
>VB初心者 殿
C++でDLLを作ってみました。
void PiTest(int mul, unsigned char *buf, char *msg) {
    for (int i = 0; i<PITEST_BUFSIZE; i++) buf[i] = buf[i] * mul;
    strcpy_s(msg, PITEST_MSGSIZE, "PiTest - PiTestDLL Complited !"); }
VB2005からはこれでOKでした。
Declare Sub PiTest Lib "PiTestDLL.dll" (ByVal mul As Integer, _
    <[In](), Out()> ByVal buf() As Byte, ByVal msg As StringBuilder)

DelphiはよくわからないがC++で書くと次のようになってるので話がややこしくなっていると思われます。
void test(int op, unsigned char **buf, char **msg)

文字列の戻りにStringBuilderを使わなくてもよかったのはchar **になっていたためでしょう。
stringは変更不可ですが別のstringに入れ替えるのはByRefで出来たというわけです。
245デフォルトの名無しさん:2006/06/23(金) 07:47:35
>>244
>   <[In](), Out()> ByVal buf() As Byte, ByVal msg As StringBuilder) 
そこの<[In](), Out()>も省略できるはず。
246デフォルトの名無しさん:2006/06/23(金) 08:28:42
いや、参照型を値渡しした場合はデフォだとInだから
呼び出し先で文字列をmodifyするときは本来Out属性つけないとまずいでしょ
247デフォルトの名無しさん:2006/06/23(金) 09:20:20
統合開発環境はデバッカでもコンパイラでもない罠。
それらを統合したものってそのものなんだから。
248デフォルトの名無しさん:2006/06/23(金) 12:20:41
>>247
そんな餌で俺様が(
249デフォルトの名無しさん:2006/06/23(金) 12:23:30
>>246
StringBuilder はデフォで In, Out だよー。
250デフォルトの名無しさん:2006/06/23(金) 16:57:53
>>249
byte配列の方のことを言ってるのだと思う。MSDNに記述あり
>blittable 型の配列と、blittable 型のメンバだけを含むクラスは、最適化のために、
>マーシャリング時にコピーされるのではなく固定されます。
>これらの型は、呼び出し元と呼び出し先が同じアパートメントに属する場合には、
>In/Out パラメータとしてマーシャリングされるように見えることがあります。
>ただし、そのような型は実際には In パラメータとしてマーシャリングされるため、
>引数を In/Out パラメータとしてマーシャリングする必要がある場合には、
>InAttribute 属性と OutAttribute 属性を適用する必要があります。

blittableって辞書に無いけどMSの造語?
251デフォルトの名無しさん:2006/06/23(金) 17:06:39
>>250
> blittableって辞書に無いけどMSの造語?
ttp://www.answers.com/blit&r=67
Computer Jargon、IT俗語。

で、私もそう思ってたんだが、
実際にはプリミティブ型配列は(属性の指定にかかわらず)強制的に In, Out になるっぽいんだよね。
非プリミティブな構造体の配列だと In だけなんだけど。
252デフォルトの名無しさん:2006/06/23(金) 18:45:20
>>249
あそっかそいうやStringBuilderは例外扱いだったね。
253デフォルトの名無しさん:2006/06/23(金) 19:49:48
visual studio 2003 の vb.net ですが、
32x32 の画像を二つ読み込んで、64x32 になるように、それぞれの画像を横に結合したいのですが、
結合するよい方法があれば教えてください。
254デフォルトの名無しさん:2006/06/23(金) 19:54:37
Graphics.DrawImage
255VB初心者:2006/06/23(金) 23:53:54
>>244
テストプログラムまで書いて頂いて恐縮です。 まさにChar** でした... さて1難去ってまた1難、こんな事がおきました。
Public Class Api32 'INIファイルから取得
<DllImport("kernel32", EntryPoint:="GetPrivateProfileStringW", _
SetLastError:=True, CharSet:=CharSet.Unicode, ExactSpelling:=True, _
CallingConvention:=CallingConvention.Winapi)> _
Public Shared Function GetPrivateProfileString( _
<MarshalAs(UnmanagedType.LPTStr)> ByVal lpApplicationName As String, _
<MarshalAs(UnmanagedType.LPTStr)> ByVal lpKeyName As String, _
<MarshalAs(UnmanagedType.LPTStr)> ByVal lpDefault As String, _
<MarshalAs(UnmanagedType.LPTStr)> ByVal lpReturnedString As System.Text.StringBuilder, _
ByVal nSize As UInt32,<MarshalAs(UnmanagedType.LPTStr)> ByVal lpFilename As String) As UInt32
End Function
End Class 'このAPIのコードは他の掲示板から借用したものです。もちろん動作します
Public Function GetPathDataforINITDLL(ByVal Head As String, ByVal Value As String, ByVal Df As String) As String
 dim s as string
'引数を受け取って動作させようとすると動かない >NG
ret = CInt(Api32.GetPrivateProfileString(Head, Value, Df, DLLBuff, CUInt(DLLBuff.Capacity), IniFileName))
s = DLLBUFF.toString 'Sには"DEF"

'関数内にStringを宣言して動かすと動く...
 dim HEAD2 as string ="H"
dim VALUE2 as string ="V"
ret = CInt(Api32.GetPrivateProfileString(Head2, Value2, Df, DLLBuff, CUInt(DLLBuff.Capacity), IniFileName))
s = DLLBUFF.toString'Sには INIファイルの内容 動作するorz...
end function
呼び出し元
API= New API32 'インスタンス化
GetPathDataforINITDLL("H","V","DEF")
感覚的には単に文字列を渡しているだけなのですが、何が抜けているのでしょうか?
VBは難しいなぁ... デバッカーでポインターの値が参照できれば...
256デフォルトの名無しさん:2006/06/23(金) 23:59:49
きたよ、「動かない」
257デフォルトの名無しさん:2006/06/24(土) 00:35:16
ここら辺は俺も理解が怪しいのであんまり突っ込まれると困るんだけど、
とりあえず〜WのWin32APIを使うのに引数に<MarshalAs(UnmanagedType.LPTStr)>
指定するのは矛盾してるんじゃないの?

つーか、自分で理解して使おうって気がないなら素直にコピペに徹すればいいのに。
こういう馬鹿なくせにどうでもいいところにこだわるのがプライドだと思ってる奴っているよなw
258VB初心者:2006/06/24(土) 01:26:12
>>257
すまん...DLL記章部分。その部分がコピペなんだorz...

DLL用の引数Stringを
DLL呼び出しFunction内部で作るとOK
関数の引数で受け取るとNG

こんな事ってあるのでしょうかw
どんな理屈なんだろう...まったく動かないならまだ理解できるのですが...
259デフォルトの名無しさん:2006/06/24(土) 01:43:33
いやそんなことは絶対ありえんから。

君にはダメグラマの特徴の一つが現れてるよ。
その特徴とは、冷静に論理的な原因分析をせず、単なる思い付きをバグの原因だと
思い込んで疑わないという奴ね。
260デフォルトの名無しさん:2006/06/24(土) 02:24:46
>>257
> とりあえず〜WのWin32APIを使うのに引数に<MarshalAs(UnmanagedType.LPTStr)>
> 指定するのは矛盾してるんじゃないの?
いや、それは正しい。LPTStr の場合どの文字セットを使うかは DllImport/Declare で指定される。
ま、普通は省略するけどな。
261デフォルトの名無しさん:2006/06/24(土) 02:49:38
>>255
UPしてる分のコードには怪しいところはなさそうだ。省略してる部分でものすごい凡ミスしてると予想。
262VB初心者:2006/06/24(土) 10:27:26
>>255
それもかなり疑ったのですがorz...

確認した事
引数の文字列が間違っていないか?
 動作する場合、動作しない場合、いずれも直前のデバック停止で確認
 メッセージダイアログ等に出力 相違ない事を確認

動作する場合と動作しない場合、何が違うか?
 動作する場合は、問題のAPI呼び出し関数の直前で引数のStringが作られている
 
元呼び出しf("ABC")
function f(H)
apicall(H) < NG
H="ABC"
apicall(H) < OK
'順番を入れ替えても同じ
end function

If String.Equals(Head, Head_) = True Then MsgBox(Head)'テストコード
結果はFalse orz... VBには魔物が住んでいる...
263VB初心者:2006/06/24(土) 10:33:38
orz... パとバ のまちがいでした...  しばらくショックで動けないかもorz..
264デフォルトの名無しさん:2006/06/24(土) 11:19:08
頼むからこれ以上コードをコピペするつもりなら
せめてインデントが表示に反映されるように工夫してくれよ。

一度適当なエディタにコード貼り付けてから
タブ(またはスペース2N文字)をN文字の全角スペースに置換するだけだからさ。
265デフォルトの名無しさん:2006/06/24(土) 11:44:43
おまいのコーディングに魔物が住んでるんだろ
266デフォルトの名無しさん:2006/06/24(土) 16:04:00
お前のソースじゃIniFileNameをどこから持ってきているかわからないが、これが違ってないか。
ファイルが無くてもこのAPIはエラーにはならない。
そのままコンパイルして再現できるコードをどこかのアップローダにアップしてurlをはる。
小出しはしないほうがよい。
267デフォルトの名無しさん:2006/06/24(土) 16:14:24
いや、俺はたぶんStringBuilderを初期化してない(使いまわしてる)、
なんてオチだと想像するよw

デバッグの基本は実験と同じ『変数の分離』にあるのに、
それがわからないんだよねこういう人は。

「結果」(つまり意図しない動作)をもたらしている原因を探るためには
疑わしい要素のみを変え、その他の全要素を完全に同じにして実験を行って
結果が変わるかどうかをみないといけないのに、ダメグラマはそういうこと
基本に忠実にやらないんだよな。

複数の要素をいっぺんに変えて実験して結果が変わったのを見て、
全く見当違いの要素をその変化の原因だと思い込んでしまう。
268デフォルトの名無しさん:2006/06/24(土) 16:44:29
xp で、LAN内で、TCPを使って、クライアント、サーバーとして通信するプログラムを作りました。

ただ、使用しているポートをサーバー側の XP の、Windows ファイアウォールを無効にするか
例外にて追加しないと通信できません。

vb.net 側で Windows ファイアウォールの該当ポートを許可するように設定する事はできますか?
当然一般ユーザでそういった設定をできたらまずいと思うので、管理者ユーザーのみと限定しても
構いません。

利用者がわざわざ設定しなくても、プログラムが勝手に通信を許可できるようにする方法はありますか?

悪意をもったソフトウェアを想定するとそのような機能は用意されておらず、手動で設定しなければならない
ような気もしますが、もし方法があれば教えてください。
269デフォルトの名無しさん:2006/06/24(土) 17:14:50
>>268
クライアントのセキュリティは各自が設定を弄るしかないと思う。

というのは、XPのファイヤーウォールだけど、シマンテックやらのそういったセキュリティ系のソフトを
導入している場合、Windows標準の設定は無効にされて、セキュリティソフトのファイヤーウォールが
適応される場合が多い。

特に、企業の場合、こういったソフトを導入している場合が多いので、
Windows標準だけでなく、こういったソフトのセキュリティまで勝手に設定できるようにするのか?
という問題も出てくる。

また、こういった企業が導入しているのはコーポレート版なので、管理用のサーバがあり、
ユーザが勝手に設定できないようにとかアンインストールする場合にも管理者が
直接PCにパスワードを打たないといけない場合がある。

ハッキリ言って、場合によりけりなのでプログラムで設定することはお勧めできない。
Windows標準のファイヤーウォールの設定手順書を書いて終わりのような気がする。
それ以外の場合は、その会社のシステム管理者やらセキュリティ管理者に出てもらわないと、
何も出来ん。
270268:2006/06/24(土) 17:46:27
>>269
アドバイス感謝します。

仰る通りなんですよね、確かに…。
実際は設定手順書でカバーするしかないのかな、と思います。

単純な技術的な興味なのですが、vb.net などのプログラムで実装を行なう方法はあるのでしょうか?
なければ、「手作業でやるしか方法はありません、以上」ですむのですが、技術的に解決する方法が
あるのであれば、それを踏まえつつ、手作業を行なうように方針を決定しなければ
なりません。

私の質問がちょっとずれてきてしまっている気もしますが、Windowsファイアウォールの設定を
vb.net もしくはなんらかの方法で設定変更する術は用意されていますか?
271デフォルトの名無しさん:2006/06/24(土) 18:24:09
>>270
SP2限定かもしれんが
http://www.atmarkit.co.jp/fwin2k/win2ktips/483sp2admin/sp2admin.html
管理者Onlyで良ければレジストリいじるのが早いんじゃないか?
272デフォルトの名無しさん:2006/06/24(土) 21:27:36
WindowsFormsで一部が透過しているアニメーションGIFを
表示するにはどうしたらよいでしょう??
FORMにPICTUREBOXをおいてPICTUREBOXのIMAGEプロパティ
に設定するとアニメーションはしますが、透過部分がフォームを透過しません。
回避策があれば教えて頂けないでしょうか?
273デフォルトの名無しさん:2006/06/24(土) 22:02:38
>>270
つうか、簡単にプログラムから設定できるとそれをウィルスやワームが使うだろ
>>271のやり方なんかも別のツールなどでリモート管理をチェックするなりしてないと危ないよ
274デフォルトの名無しさん:2006/06/25(日) 12:30:48
VB.NETでちょっとしたテキストエディタを作っているのですが、
普通エディタには、テキストエリアの左側に、灰色等の文字で現在行が表示されていますが、
この機能はどのようにして表示させているのでしょうか?
いろいろ試したのですが、描画速度が遅かったり、重すぎて使い物にならなかったり・・・
この問題を解決してくれるコントロールやプロパティがあるのでしょうか?
解決策があれば教えてください。
275デフォルトの名無しさん:2006/06/25(日) 12:37:09
最初に誤爆したスレには何の謝罪もしないんだなw

っていうか、ステータスバーすらも知らない人間にエディタ作成なんて無理。
見た目が地味だから俺でもできそう、とか思ってるんだろうが
勘違いもいいところ。
276デフォルトの名無しさん:2006/06/25(日) 13:07:11
ここは質問スレですよ
277274:2006/06/25(日) 13:17:12
ステータスバーは知っていますが、あれはステータスバーなのでしょうか?
↓こういう機能を実装したいのですが
1 Public Class Form1
2 Inherits System.Windows.Forms.Form
3
4 #Region " Windows フォーム デザイナで生成されたコード "
5
6 Public Sub New()

あと、エディタ作成が大変難しいことは重々承知の上です。
278デフォルトの名無しさん:2006/06/25(日) 13:24:29
分かってる人間がこんなアホな質問をするとは絶対思えんけど。。

ああ、エディタの作業領域の左隅に行番号の表示したいわけねスマン。
それを実現するコントロールやプロパティー?
あるわけないでしょ。質問スレっていったって馬鹿をいうにも程があると思うけど
279デフォルトの名無しさん:2006/06/25(日) 13:37:17
「エディタ」ってVisualStudioのエディタのこと?
それなら設定の項目にあるけど。
テキストボックスみたいなコントロールのことを言ってるなら、多分無い。
280デフォルトの名無しさん:2006/06/25(日) 13:57:37
>>277
そんな都合のいいコントロールはないので、自分で実装する必要が
ある。本文のスクロールと同期して行番号も再描画したりとかまで
やるのは、エディタ自体をたいへん難しいと感じている時点で高望
みかと。

現在のカーソル位置をステータスバーに表示するくらいでいいんで
ないの?
281デフォルトの名無しさん:2006/06/25(日) 14:02:34
>>277
http://www.vector.co.jp/soft/winnt/prog/se366984.html
こんなの見つけた。試してないけど
282280:2006/06/25(日) 14:19:05
>>281
うわー、ずいぶんニッチってかピンポイントな。(w
今回の要望には向いてるっぽいから、試してみてもいいんでね?
283デフォルトの名無しさん:2006/06/26(月) 10:45:04
VB2003+バンドルのクリレポについて質問です。

レポート上のTextオブジェクトにコードで値を渡しているんですが
改行コードが無視されてしまいます。
レポートのデザイン時に直接改行コードを入れて、コード側で何もしなければ
印刷やプレビュー時にはちゃんと改行も出力されるのですが、
コードで改行コードを含む文字列を渡すと改行が無視されてしまいます。

しかし、ステップ実行でTextオブジェクトの値を確認すると、ちゃんと
改行コードも含まれています。

レポートのTextオブジェクトの書式で「複数行に出力」にチェックを付けても
結果は変わりません。

どこを弄ればコードから複数行出力することができるでしょうか?
284デフォルトの名無しさん:2006/06/26(月) 11:18:15
チソコを弄れば、あるいは複数行出力することができるやもしれぬ。
285デフォルトの名無しさん:2006/06/26(月) 13:28:49
286283:2006/06/26(月) 15:05:49
ありがとさんです。
287デフォルトの名無しさん:2006/06/28(水) 03:39:36
VB2005のリッチテキストボックスの質問です。

2chブラウザを作っているのですが、
レスアンカーのポップアップ方法のところで詰まっています。
スレッドの表示にwebbrowserを使うとリロードの度にカチカチ言うので、
richtextboxに挿入していく形を取ろうと考えています。

レスアンカーをリンクにして、LinkClickedイベントで
ポップアップを表示させようと思っているのですが、
レスアンカーにリンク指定を出来るのか分かりません。
MSのリッチテキストフォーマットを見てみたのですがよく分かりませんでした。

どのようにしたらレスアンカーにリンクを指定できるのでしょうか?
288デフォルトの名無しさん:2006/06/28(水) 20:32:29
よろしくお願いします。 VB2005です。
プログラムに画像を埋め込むと、ソリューションエクスプローラーで
「Resources」というフォルダに入るものと入らないものがあるみたいですが、
違いが全くわかりません。コンパイル後に、何か違いはあるのでしょうか? 
289デフォルトの名無しさん:2006/06/28(水) 20:38:14
>>287
RichTextBox じゃリンクは URL 形式のにしかやれない。
もちろん色とアンダーバーを付ければそれっぽくはなるがイベントは発生しない。
それの判定をやろうとなると MouseUp とかで判定する必要があるな。
290デフォルトの名無しさん:2006/06/28(水) 21:42:10
>>289
そうだったのですか。
高度な技術が必要そうですね。
勉強してきます。
ありがとうございました。
291デフォルトの名無しさん:2006/06/28(水) 21:43:12
質問させて頂きます。VB2005です。

テキストラベルが配置してある新しいフォームをタイマーで開く時、
フォーカスがそのフォームに取られてしまいます。

フォーカスが取られるタイミングは別なプログラム
(たとえばIE等でネットをしているとき)で
何かのボタン(マウスのホイール、バックスペース、etc...)
を押しっぱなしにしている時です。
visible,show,showdialog全て取られてしまいました

ボタンを押しっぱなしにしているときに新しいフォームを開いても
フォーカスが取られないいい方法はないでしょうか。
292デフォルトの名無しさん:2006/06/28(水) 22:18:29
このスレの質問大賞は君に決定
293デフォルトの名無しさん:2006/06/29(木) 00:05:13
VB2005でボタンを押したときにTabPageをtextbox付きで追加したいんですがどうすればいいんでしょうか?
タブ型のテキストエディタみたいな奴です
294デフォルトの名無しさん:2006/06/29(木) 00:25:31
>>293
TabControl
295デフォルトの名無しさん:2006/06/29(木) 00:33:57
VB2005のMy機能についでなのですが。

たとえば、起動時にコマンドラインを受け取って、それをTextBoxに表示するだけのアプリがあるとします。

VB2005で単一インスタンスのアプリケーションを作成すると、ApplicationEvents.vbに
StartupNextInstance:単一インスタンスアプリケーションが起動され、それが既にアクティブであるときに発生します。
こういうのが出てきます。

そこで、すでに起動している時にコマンドライン引数付きで再度起動が行われた場合、
StartupNextInstance内でうまくやれば、起動中のウインドウに引数を渡して表示できそうな
気がするのですが、そういったことは可能でしょうか?
296デフォルトの名無しさん:2006/06/29(木) 00:52:05
>>294
よければもう少し突っ込んで教えてもらえるとありがたいのですが
Dim tab As New TabPage
TabControl1.TabPages.Add(tab)
とかでやると何もないtabpageが出来るだけですよね

仮にtabpage1にボタンとテキストボックスがあったら同じコントロール配置で新しいタブを作りたいのです
言葉足らずで伝わりにくいかもしれませんがよろしくお願いします
297デフォルトの名無しさん:2006/06/29(木) 01:45:09
Visual studio 2003 の VB.NET です。

Str += "<" + ds.Tables("tb_n").Columns(num).ColumnName + ">"
Str += ds.Tables("tb_n").Rows(j)(num).ToString()
Str += "</" + ds.Tables("tb_n").Columns(num).ColumnName + ">" + vbCrLf

のように、Dataset からの値をフィールド名、値として文字列に結合して
いるのですが、あるフィールドにおかしな値?、NULL? がはいっているらしく、
そのフィールドの発生以降、文字列が連結されなくなってしまいます。
デバッグ中は str += ... の行は実行しているのですが、実際 Str の中身に、文字列は
連結されていません。

イミディエイトウィンドウで ?ds.Tables("tb_n").Rows(j)(num).ToString() の結果は
"" となるんですが、
if ds.Tables("tb_n").Rows(j)(num).ToString() <> "" then とやっても
デバッグすると、なぜか、True となり、if 文のブロックが実行されてしまいます。

なにがなんだかわかりません。何かアドバイス頂けることがありましたら、
よろしくお願いします。
298VB初心者:2006/06/29(木) 06:40:52
>>297
lengthでチェックしてみるとか
NULL<インスタンス化されていないセルデーター?

299デフォルトの名無しさん:2006/06/29(木) 07:12:05
DBNull.Value と比較したら良いんじゃね

>>296
tab.Controls.Add(New TextBox())
と書くと次の質問が目に見えるようだ
300297:2006/06/29(木) 09:19:33
>>298
length でチェックは試みたのですが、
If (ds.Tables("tb_n").Rows(j)(num).ToString().Length > 0) Then
MessageBox.Show("Length IS ZERO")
End if

の場合、Length IS ZERO が表示されます。
で、ブレークポイントを設定して、イミディエイトウィンドウで
?ds.Tables("tb_n").Rows(j)(num).ToString().Length を実行すると
0
がかえってきます。実際のコードのデバッグ中と、イミディエイトウィンドウで
確認する内容が異なるので、わけがわからなくなっています。

>>299
上記同様なのですが、ds.Tables("tb_n").Rows(j)(num) Is DBNull.Value
でチェックすると FALSE がかえってきます。
しかし、文字列を結合すると、それ以降、結合されません

何か気になる事があれば教えてください。
301デフォルトの名無しさん:2006/06/29(木) 09:25:05
>>295
上手くやれば可能なんじゃないの?
別プロセスだからプロセス間通信が必要になると思うけど。
302デフォルトの名無しさん:2006/06/29(木) 09:27:38
>>300
ひとつずつ分解して調べれば?
そのそも、DataSetを二次元配列のように扱うことのって余りメリット無いような。
型付DataSetにしてきちんと定義してこそのDataSetだと思うし。
303七資産:2006/06/29(木) 12:03:09
>>295
たとえば、コマンドラインを起動中のForm1.Textbox1に表示する場合...

My.Forms.Form1.TextBox1.Text = e.CommandLine.Item(0)
304デフォルトの名無しさん:2006/06/29(木) 13:25:54
時間経過で背景や画像を変更するにはどうしたらいいと思いますか?

背景や画像の変更方法はわかりますけど・・・時間経過を判断する方法がわかりません・・・

たとえば3秒ごとに切り替えというようなことをやりたいです。

どういった方法がありますか?どうかご教授お願いします。
305デフォルトの名無しさん:2006/06/29(木) 13:38:52
タイマーつかうとか
306デフォルトの名無しさん:2006/06/29(木) 13:43:46
そうでしたね・・・
まだはじめて3日ほどで初日に習ったのにうっかりしてました、すみませんm(_ _)m
307295:2006/06/29(木) 14:53:11
>>303
できました! ありがとうございます!!

>>301
ありがとうございます。プロセス間通信は良くわからなかったんですが、
そのへんもMyでできるみたいですね。
308デフォルトの名無しさん:2006/06/29(木) 14:58:57
DataGridViewで複数の行を選択し、その行達のフォーカス位置が欲しいのですが
どなたか教えてください
309デフォルトの名無しさん:2006/06/29(木) 15:18:50
>>308
いまいち読み取れないんだけど、こんな感じ?

ttp://dobon.net/vb/dotnet/datagrid/selectedrows.html
310デフォルトの名無しさん:2006/06/29(木) 20:30:45
間違って他スレで質問してしまったので再度よろしくお願いします。

言語はVisual Studio Express .VB2005です。
 ________
|名前|年齢|性別|
  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
という列を持ったテーブルがありまして、
そのうちの年齢をGROUP BYでまとめてコンボボックスに表示されるようにしました。

そこから選択→実行ボタンを押すと、WHERE = 選択年齢 の一覧を表示させたいのです。

できれば
○○○.○○○ = "SELECT 名前,性別 FROM table WHERE = 選択された年齢"
のように直接SELECT文をかけるような方法を知りたいです。

コンボボックスは ComboBox
表示部には DataGridView を使用しています。
コンボの値はComboBox.text で取得するのだと思うのですが
グリッド部のDataset Adapter BindingSource などのプロパティに対して
どうすればよいのかわかりません。

どうぞよろしくお願いします。
311デフォルトの名無しさん:2006/06/29(木) 20:39:29
DataGridView の DataSource に、目的の DataTable の DefaultView を設定、
その DataView の RowFilter に条件文書けばいけるだろう。SQLにちょっとだけ似てるが全く別物。
312デフォルトの名無しさん:2006/06/29(木) 23:36:34
なんかの宿題か?
自分でやっとかないと後で苦労するぞ

Select文はそのまま
  Dim strSqlCommand as string=""
  strSqlCommand ="SELECT 名前,性別 FROM table WHERE = " & ComboBox.Text
ってやればいいんでは?

あと
  Dim con As New SqlConnection(接続文字列)
  Dim da As New SqlDataAdapter(strSqlCommand , con)
でDBに問い合わせ準備して、

  Dim ds As New DataSet
  da.Fill(ds, "table")
でDataSetにデータ読み込んで

  BindingSource1.DataSource = ds
  BindingSource1.DataMember = "table"
でDataSet を BindingSource と連結して

  BindingNavigator1.BindingSource = BindingSource1
  DataGridView1.DataSource = BindingSource1
でBindingSource を BindingNavigator および DataGridView と連結する。
BindingSource1とDataGridView1は適当に書き換えろよ
313310:2006/06/30(金) 01:42:07
>>311
>>312

レスありがとうございます!
宿題ではなく実は就職のためなんです(^^;
実務未経験のJAVA使いだったのですが、一週間でこういったプログラムをVBで組めたら採用とのことで必死になっています。

参考になる本もなく本当に助かりました。
今日は徹夜でやりとげます!ありがとうございました!
314デフォルトの名無しさん:2006/06/30(金) 02:10:12
どなたか、VB.NETでビリヤード程度のゲームのソースを
お持ちの方、またサイトを知っておられる方
教えていただけませんか??
315デフォルトの名無しさん:2006/06/30(金) 09:43:20
e.Graphics.FillEllipse(Brushes.Black, 0, 0, 200, 200)

Dim a As Graphics = PictureBox1.CreateGraphics
a.FillEllipse(Brushes.Black, 0, 0, 200, 200)

の、違いは大まかにどういうことなのでしょうか?
*前者は再描写をしてくれることは分かっています。

PictureBox1.Paintのイベントでは
前者は動作するのですが、後者はここに書いても動作しません。
ただ、後者はボタンのスイッチイベントだと動作します。
なぜなのでしょうか?
316デフォルトの名無しさん:2006/06/30(金) 11:03:17
>>314
ビリヤード程度って簡単に言うけど、運動方程式や摩擦係数が入り乱
れる大規模シミュレーションになるよ。ブロック崩しでも入射角と反
射角をマメにチェックしないと単調なゲームになるしさ。

ttp://www.core.kochi-tech.ac.jp/math/highschool/billiards/
317デフォルトの名無しさん:2006/06/30(金) 11:07:08
すごい初歩的な質問させてください。
subとFunctionの使い分けです。
あるサイトに値を返さないならsub、返すならFunctionと書いてました。
僕は自分で作るメソッドは値を返す返さないにかかわらずFunctionを使ってたんですが、
これは明確に使い分ける必要がありますか?
318デフォルトの名無しさん:2006/06/30(金) 13:01:26
戻り値が冗長と思うなら使い分ければよい
319デフォルトの名無しさん:2006/06/30(金) 13:02:06
>>317
判らないならファンクションにしとけば?
明らかに結果を返さなくて良いならサブ、それ以外はファンクション、どちらも責務上処理しないエラーは例外で返す。
320デフォルトの名無しさん:2006/06/30(金) 13:13:31
値を返さないFunctionの戻り値の型ってどうしてんだ?
適当にIntegerとかにしてんのか、それともOption Strict Offで省略してんのか…
321317:2006/06/30(金) 13:27:31
値を返さない時戻り値の型は省略してます。何も書いてません。
Private Function メソッド名()
当然returnもありません。
今までなんの気なしにこれでやってきてちゃんと動いてはいますけど省略するとまずいですか?
322デフォルトの名無しさん:2006/06/30(金) 13:34:02
フォームを最大化した時にフォーム内に配置していたボタンやラベルなども自動的に大きさにあったいちに調節してくれる機能はありませんか?
323317:2006/06/30(金) 13:34:07
Option Strict
これ知りませんでした。今ググってああ、なるほどと思いました。
無知ですいませんでした。
324デフォルトの名無しさん:2006/06/30(金) 13:43:45
>>322
Anchor
325デフォルトの名無しさん:2006/06/30(金) 14:01:06
>>324
アンカーだと
上と右を設定すると最大化したときに全体的に右よりになり
アンカーを全方位解除すると最大化したときに全体的に真ん中よりになってしまいます

最大化したときに、全方位にバランスよく均等に再配置したいのですが、何かいい方法ないでしょうか?汗
326デフォルトの名無しさん:2006/06/30(金) 14:08:16
間違えました

上と右=上と左

全体的に右より=全体的に上と左より




あ あ
 あ
あ あ

これを最大化したとして

あ     あ

   あ

あ     あ

こういう風にやりたいのです。
実際はもっとコントローラが多くて複雑ですが・・
327デフォルトの名無しさん:2006/06/30(金) 14:10:58
連投すみません

あ あ あ
ああ
ああ
ああ
ああ



あ     あ     あ

あ  あ

あ  あ

あ  あ

あ  あ

こんな感じです
328デフォルトの名無しさん:2006/06/30(金) 14:55:12
ソリティアがいい例でした

起動してから最大化をすると、各カードの間の横間隔のスペースがウィンドウ拡大したサイズに合わせて広がってくれるじゃないですか?
これをやりたいのですが、間のスペースの自動調整が・・・。
329デフォルトの名無しさん:2006/06/30(金) 15:04:19
>>328
各コントロールの位置指定を、フォームのClientRectangleプロパティ
から算出してそれぞれ定義する関数を自作するとか。

つか、どんな機能をどんなデザインで作ってるのかわからんからなん
とも。機能説明があれば、もっと抜本的な方法があるかもしれないし。
330デフォルトの名無しさん:2006/06/30(金) 15:32:04
>>329
どもです
一応、標準と最大化の2通り以外のサイズには変更できないようにしてますので
やはり最大化時の配置を直接指定するしかないんでしょうかね・・

機能はボタンとラベルとピクチャーボックスだけです
デザインは>>327みたいな並びです
331デフォルトの名無しさん:2006/06/30(金) 15:51:47
>>330
標準と最大化の2通りしかないのなら、いちいち計算しなくても決め
打ちで位置指定ができるね。真ん中にくるコントロールなど、Anchor
で位置決めができるものがあるなら、そこを基準にしてその周囲にあ
るコントロールを、そこから相対位置で求めるのが比較的楽かも。
332デフォルトの名無しさん:2006/06/30(金) 16:46:03
Select case data
case 1
timer1.start()
button1.enabled=ture
case 2
timer2.start()
button2.enabled=ture
case 3
timer3.start()
button3.enabled=ture
case 4
timer4.start()
button4.enabled=ture
End Select

こういった流れで、timer数字.start()の数字部分をdata内の数字で判断してくれるようにするにはどうすればいいでしょうか?

333デフォルトの名無しさん:2006/06/30(金) 16:46:54

Select case data
case 1
timer&button()
case 2
timer&button()
case 3
timer&button()
case 4
timer&button()
End Select

private sub〜timer&button()
timer「data内の数字」.start()
button「data内の数字」.enabled=ture
end sub

という風に全体的に短くしたいのが目的です。
334デフォルトの名無しさん:2006/06/30(金) 17:09:25
配列
335デフォルトの名無しさん:2006/06/30(金) 19:11:59
なおtureはちゃんと定義してます
Const ture = True
336291:2006/06/30(金) 20:26:23
待っている間自分でも調べてみましたが、どうも解答が見つからないようですので失礼させて頂きます。
ありがとうございました。
337デフォルトの名無しさん:2006/07/01(土) 12:36:20
ソケット通信でSocket.BeginReceiveを利用して非同期受信しています。
ある時間受信がされなかったら、BeginReceiveを中止したくなったのですが
EndReceiveを使用すると、受信するまでブロックしてしまうので困っています。
一応ブロックされずに中止するにはSocket.Closeすればできるの分かったのですが
他にCloseしなくてもできる方法はありませんか。
338デフォルトの名無しさん:2006/07/01(土) 13:50:48
動画を全画面表示で再生させながら、そこにテロップを入れたいと思っているのですが、
どのようにやるのが一番簡単でしょうか?
動画は固定ですが、テロップは随時変わるのでテキストファイルなどに保存させたいと思っています。
ご存じの方がいらっしゃったら是非教えて下さい。
339デフォルトの名無しさん:2006/07/01(土) 13:58:33
>>337
なんでCloseじゃ駄目なの?
340デフォルトの名無しさん:2006/07/01(土) 23:54:15
お勧めの書籍教えてください
341デフォルトの名無しさん:2006/07/02(日) 06:58:52
ウィンドウズ標準の電卓が起動してない場合Label1に電卓動いてないよ。起動してるときに電卓動いてるよ。[ここにProcessID]を表示したいと考えています。
電卓起動している場合にボタンを押すとエラーが出てしまいます。

PInvokeStackImbalanceが検出されました。
PInvoke 関数 'calcChecker!calcChecker.Form1::GetWindowThreadProcessId' がスタックを不安定にしています。
PInvoke シグネチャがアンマネージ ターゲット シグネチャに一致していないことが原因として考えられます。
呼び出し規約、および PInvoke シグネチャのパラメータがターゲットのアンマネージ シグネチャに一致していることを確認してください。

実際のコードは以下です。(フォームはLabel1とButton1だけです)
Public Class Form1
Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
Private Declare Function GetWindowThreadProcessId Lib "user32" _
(ByVal hwnd As Long, _
ByVal lpdwProcessId As Long) As Long
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim hWnd As Long
Dim hThread As Long
Dim ProcID As Integer
Dim PID As Long
hWnd = FindWindow(vbNullString, "電卓")

If hWnd = 0 Then
Label1.Text = "電卓動いてないよ。"
Else
hThread = GetWindowThreadProcessId(hWnd, PID)
ProcID = CType(PID, Integer)
Label1.Text = "電卓動いているよ。" & CStr(ProcID)
AppActivate(ProcID)
End If
End Sub
End Class
342デフォルトの名無しさん:2006/07/02(日) 07:20:38
>>341
メッセージ通り、シグネチャ(引数/返値の型)がまちがっとる
VB6 までのをそのままコピっても駄目だぞ
ついでに言うと Declare せんでも System.Diagnostics の Process クラス使えば何とでもなりそうだが
343デフォルトの名無しさん:2006/07/02(日) 12:34:33
MSFlexGridにあったredrawプロパティのような
ものはDataGridViewにはないのでしょうか?
344デフォルトの名無しさん:2006/07/02(日) 13:08:21
出た! 「のようなもの」
345デフォルトの名無しさん:2006/07/02(日) 13:35:22
>>343
なにをしたいのかもっとはっきり書かないと。
再描画でチラツキが発生するのを回避したいってこと?
346デフォルトの名無しさん:2006/07/02(日) 14:18:37
>>245
すいません、まさにその通りです。
画面スクロール時の再描画を抑止したいと考えています。
347デフォルトの名無しさん:2006/07/02(日) 20:21:03
>>342
System.Diagnostics の Process クラス使うことにしました、ありがとうございました
348デフォルトの名無しさん:2006/07/02(日) 22:09:58
他のアプリケーションのフォームのボタンのキャプションを取得する方法って何かありますか?
349デフォルトの名無しさん:2006/07/02(日) 22:30:42
WM_GETTEXT
350デフォルトの名無しさん:2006/07/02(日) 22:30:44
>>348
GetWindowText もしくは SendMessage
351デフォルトの名無しさん:2006/07/02(日) 22:54:09
>>349-350
ググってきます
352デフォルトの名無しさん:2006/07/03(月) 04:58:29
>>346
「画面スクロール時に再描画を抑止」

画面ってグリッドのことだよね?
スクロールバーをドラッグしてる間はグリッドを描画させないってこと?
スクロール時は再描画しないとダメじゃないの?

なんか redraw とは違うような…
一応、貼っとくけど(Control.DoubleBuffered プロパティ)

ttp://msdn2.microsoft.com/ja-jp/library/system.windows.forms.control.doublebuffered.aspx

っていうか、2chに書き込む前にgoogleとかしてみないのか?w
353352:2006/07/03(月) 05:03:36
まてよ、もしかして

「グリッド行を追加する毎に描画したくない」

ってことか?

SuspendLayout()
ResumeLayout()
354デフォルトの名無しさん:2006/07/03(月) 10:16:03
ボタンがNo1、No2、No3と3つ、画像もNo1、No2、No3と3つあり
各対応したボタンを押すと、それに対応した画像が点滅するというようなプログラムがあるのですが

スイッチを押して画像が点滅するタイミングをすべて揃えるにはどうしたらいいと思いますか?
現状では各ボタンを押すごとに各画像が1秒づつ点灯していて、ボタンを押したタイミングでバラバラに点灯してしまいます。
355デフォルトの名無しさん:2006/07/03(月) 10:21:02
点滅に使うタイマを一つに統一すればいいだろ
356デフォルトの名無しさん:2006/07/03(月) 10:28:05
各タイマー内でスイッチに番号に対応した画像の点滅のオンオフをしているので
タイマーを統一したらNo1を押してTimerが作動したら他の所も点灯し始めてしまいます・・・
357デフォルトの名無しさん:2006/07/03(月) 10:34:41
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

Select Case s1

Case 1

画像有の処理

s1 = 2

Case 2

画像無の処理

s1 = 1

End Select


End Sub


こうやってこれを3つ用意して処理してます。
s○の変数もグローバル5つ用意してます。
358デフォルトの名無しさん:2006/07/03(月) 11:09:04
引数に関数名を渡したい場合はどうすればいいんでしょうか?

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

Dim g As Graphics = AutoGraphics(「ここ」)

中略

End Select

End Sub


「ここ」に、↓のbtn1というオブジェクトだったらpic1という風なオブジェクト名を入れたいのです。
btn1(pic1)はオブジェクトによりbtn2(pic2)、btn3(pic3)といろいろ変わります。

Private Sub btn1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn1.Click

Timer1.Start()

中略

End Sub
359デフォルトの名無しさん:2006/07/03(月) 11:09:51
>>356
タイマーは常時駆動、ボタンの状態に応じてリンクさせれば?
タイマーが動いてる and ボタンが押されてる then 画像点滅とか。
360デフォルトの名無しさん:2006/07/03(月) 11:20:16
>>359
レスありがとございます。

timer内の画像変更メソッドにボタン毎に対応した引数を渡してやれば各自に対応した動作ができそうですが>>358・・・それは可能ですか?
361デフォルトの名無しさん:2006/07/03(月) 11:32:50
>>359
おっしゃるとおりにやってみたら1秒間隔で統一することができました!ありがとうございます
ですが・・・まだ1秒間隔で交互になってしまうことがあります

前は押したタイミングで無統一にバラバラだったのですが、今度はひとつのタイマーを1秒感覚でオンオフになるので、裏か表かで点滅する間隔がばらばらになってしまうことがあります・・
362デフォルトの名無しさん:2006/07/03(月) 11:55:19
>>361
ボタンを押した時点で他の画像の状態をチェックして、これから操作
する画像にも適用させればいいじゃん。

各ボタンの状態をチェック→どれかが既に点滅してるなら、それに同
期して表裏を指定 or そうでないなら現状から点滅開始とか?

もしくはタイマー自体に表裏の情報を持たせて、各画像はその状態を
再現するだけにすれば? この場合、画像がタイマーにひっぱられて、
多少不揃いな挙動をするかもしれないけれどね。
363デフォルトの名無しさん:2006/07/03(月) 12:02:21
質問させてください。
フォルダの中にタイムスタンプ「yyMMdd.txt」で命名されたファイルがいくつか(50個ほど)あるとします。
これを時系列でソートして、もっとも古いものを探したいのですが、何かスマートな方法はないでしょうか。

Directory.GetFilesの返り値からファイル名を切り出して、キャストして、各々比較しか思いつきませんでした。
364デフォルトの名無しさん:2006/07/03(月) 12:08:45
timer.start()に引数を渡すことはできますか?
365デフォルトの名無しさん:2006/07/03(月) 12:11:11
>>363
配列に入れてArray.Sort。
366デフォルトの名無しさん:2006/07/03(月) 14:07:29
>>362
毎回ボタンを押すたびに画像オンオフを判断する変数を初期化することで無事動作させることができました
お付き合いいただきありがとうございました
367デフォルトの名無しさん:2006/07/03(月) 14:47:25
自作メソッドにオブジェクトを引き継ぐ場合はどうしたらよいですか?
例を挙げると、ボタンを押したらそのボタンを無効にしたいのですが数が多いのでそれを一括してくれるボタン無効メソッドを作り、そこで無効の処理をしてくれるようにします。
Buttom8を無効にする場合は、Buttom(8)でまず自作メソッドを呼び出して8という引数を渡してあげます
自作メソッドの処理は以下のとおりです。

Private Sub Buttom(ByVal ButtomNo As Integer)

Dim btn() As Object
'ボタンの数だけの配列の宣言

buttomn(ButtomNo).Enabled = False
  'buttom(8)をFalseにする

End Sub

こうすると実行時に「オブジェクト参照がオブジェクトインスタンスに設定されていません。」とエラーがでます

368デフォルトの名無しさん:2006/07/03(月) 14:49:43
buttomn(ButtomNo).Enabled = False

訂正

btn(ButtomNo).Enabled = False
369デフォルトの名無しさん:2006/07/03(月) 15:23:03
「メソッドにオブジェクトを引き継ぐ」の意味がわかんない(´・ω・`)
370デフォルトの名無しさん:2006/07/03(月) 15:23:20
配列からボタンへの参照がどこにも定義されてないから。
371デフォルトの名無しさん:2006/07/03(月) 15:36:07
>>369
すみません
自作メソッドにオブジェクト名を引き継ぎ、それを元にオブジェクトを操作するということです
オブジェクト名は渡せるのですが、実行するとエラーが出てしまいます;

Private Sub Buttom(ByVal ButtomNo As Integer)

 Dim buttom() As Object
 'ボタンの数だけの配列の宣言

 buttom(ButtomNo).Enabled = False
  'buttom(引数(数字))をFalseにする

End Sub

これにこういう風にButtom(8)、数字の8を渡して
自作関数内でbuttom(8).Enabled = Falseを実行したいのです。


>>370
それはどういうことなのでしょうか?
372デフォルトの名無しさん:2006/07/03(月) 15:40:00
メソッド名とオブジェクト名が被ってますので
メソッドのほうを
Private Sub aiueo(ByVal ButtomNo As Integer)とでも読み直してください・・・
373デフォルトの名無しさん:2006/07/03(月) 15:51:09
例えばButton8という名前のボタンがあったとする。
おまいさんはaiueo(8)という表記で引数を渡し、Button8.Enabledを
操作したい。

では、aiueo(8)という「配列の一要素」が「Button8」というインス
タンスを示すという定義を、どこかに書かないとダメだろう?

Dim aiueo() As Objectってのは「まだ個数が決まってないけど、とり
あえず配列を使う準備だけやっておこう」って意味じゃん。VB6.0の
コントロール配列みたいな考え方が、微妙に混入しているような気が
する。

ここの2番目をよーく読んでみるといいよ。
ttp://dobon.net/vb/dotnet/control/buttonarray.html
374デフォルトの名無しさん:2006/07/03(月) 15:56:47
>>371
Handlesとsenderで、何とかならんのか?よくかんがえてみ?
本当にやりたいことが理解できないから、これ以上はなんとも・・・
375デフォルトの名無しさん:2006/07/03(月) 15:59:25
>>373
>>374
そのあたりを勉強してみたいと思います
VBはまだ初めて1週間もないのでVB6の方もほとんど分かりません;
ありがとでした
376デフォルトの名無しさん:2006/07/03(月) 23:20:19
質問があります。

ArrayList はさまざまなデータ型を取り扱いますが、
Borland の VCL のTStringList クラスみたいな文字
列を専用に扱うリストクラスはあるでしょうか?

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  Dim ArrayList1 As New ArrayList
  Dim S As String
  ArrayList1.Add("Str1")
  ArrayList1.Add("Str2")
  S = ArrayList1(1) ← キャストが必要になる
End Sub
377デフォルトの名無しさん:2006/07/03(月) 23:23:08
StringCollection
List(Of String)
378デフォルトの名無しさん:2006/07/03(月) 23:26:51
ああ2005からはそういう無駄なキャストとかボックス化がいらんような
仕組みができたんだよね確か。
ジェネリックって言ったっけ?
379デフォルトの名無しさん:2006/07/03(月) 23:41:41
>>377
ありがとうございます。
380デフォルトの名無しさん:2006/07/04(火) 04:54:07
非アクティブウィンドウをアクティブにしないままキーって送れますか?
381デフォルトの名無しさん:2006/07/04(火) 05:28:18
完全な入力エミュレートは無理。
WM_CHARやらを送るのがせいぜい。
382デフォルトの名無しさん:2006/07/04(火) 09:21:41
キーで情報を送るって発想が間違ってるわけで。

TextBoxと別の経路(プロセス間通信)の入力結果を処理できる共通の関数作ればいいだけじゃん。
それを入り口を無理に一緒にする発想から離れないから変なことを考える。
383デフォルトの名無しさん:2006/07/04(火) 09:38:28
文字を出力するときに「Tab」のインデントを挿入したい場合はどうすればいいんでしょうか?
384デフォルトの名無しさん:2006/07/04(火) 10:16:20
すみません
プログラムが終了時に最後にイベントを起こすにはどうしたらいいですか?
385デフォルトの名無しさん:2006/07/04(火) 11:28:10
熟練者の方にお伺いしたいのですが
フォームのサイズを変更するとそれに合わせてフォーム内に配置しているボタンやラベル、テキストボックスが自動位置調整されるような方法はありませんか?
アンカーを使ってみたんですが、アンカーを使うと害枠にあわせて調整されるため、中央付近が大きく開き配置がばらばらになってしまいます。
どうか助言のほうをよろしくお願いします。
386デフォルトの名無しさん:2006/07/04(火) 11:31:43
あ、それかVB2005EEを使ってるんですが、編集画面内のフォームの中野配置をそのままの形で最大化できれば問題ないです
フォームのプロパティを最大化にしてもこれは起動時に最大化になるので編集画面内の配置とは異なってしまいます。
編集画面内のレイアウトを最大化のレイアウトにするという方法があればそちらの方で構いませんのでよろしくお願いします。
387デフォルトの名無しさん:2006/07/04(火) 12:26:41
こんにちは。
VB.NETをやり始めたばかりの初心者です。

ファイルの中身をダンプ表示するプログラムを作成したいと考えています。
いずれはコンポーネント化したいと思っているのですが、どんな手法で
作ればよいか迷っています。

現在、Panelの上に文字を描画しようと考えていますが、他にスマートなやり方は
あるでしょうか。(まだPanelの上に文字を描画の仕方を調べている最中。とほほ。)
388デフォルトの名無しさん:2006/07/04(火) 12:45:22
何か言ってやれよ、おまいら(・∀・)
389デフォルトの名無しさん:2006/07/04(火) 13:53:48
今まで動いてたのですが今日いきなり、VB内でファイルの書き込みをするとIOExceptionというエラーが出てしまいます。
どうしてでしょうか?
Dim wrt As New IO.StreamWriter("../../test.txt", True, System.Text.Encoding.unicode)
これがそのエラー文だそうです。
今までは普通に動いてましたし、ここは弄っていません。
390デフォルトの名無しさん:2006/07/04(火) 14:07:02
txtファイルのほうにゴミが入った。
391デフォルトの名無しさん:2006/07/04(火) 14:09:56
環境は:WindowsXP,VS2005,.NET Framework version 2.0です。

どなたか教えてください。。

フォルダを圧縮したいのですが、中々できません。
ファイル単体を圧縮することはできたのですが、
フォルダのツリー全体を圧縮かけたいのです。
392デフォルトの名無しさん:2006/07/04(火) 14:12:14
フォルダ一個ずつ圧縮する気はないのか
393デフォルトの名無しさん:2006/07/04(火) 14:25:13
FileOpen関数と、StreamReaderってCSV読み込む場合どっちがおすすめ?
394デフォルトの名無しさん:2006/07/04(火) 14:43:49
フォームにリストを作ってテキストの中身によって行がどんどん追加されていくようにはどうしたらいいでしょうか?
395デフォルトの名無しさん:2006/07/04(火) 14:46:10
例外でたならせめてメッセージくらい読めよ
396デフォルトの名無しさん:2006/07/04(火) 16:25:04
全部ネタに見えてくる
397デフォルトの名無しさん:2006/07/04(火) 17:07:59
ちょっとスレちがいな気もしますが、ご存知の方いましたら教えてください m(_ _"m)ペコリ
strutsでwebアプリを作成するのですが、諸般の事情によりsessionの
タイムアウトを設定できません(永続セッションにします)
なので、セッション領域の解放もれを回避する為に、JavaScriptの
onUnloadを使用して、セッションをinvalidする仕組みを考えて
いるのですが、思ったような動作をしてくれていません。
仕組みとしては、以下のようなscriptを考えています(ブラウザはIE6.0SP2以降限定です)。
function exitForm(){
if(event.clientX <= -8000 && event.clientY <= -9000 || event.clientX >= 32700 && event.clientY >= 32700) {
//ブラウザ閉じられたときの処理(テスト用にalert)
alert("exitForm");
}
}
<BODY onUnload="exitForm()">

↑のscriptをhtmlで試したところ、×ボタンによる画面クローズで
正常にalert出力されたのですが、Tomcat上にJSP化して配置してから
実行したところ、クローズ時のalertが出力されません。
event.clientXとevent.clientYの判定分をはずして試してみても、
結果は同じ(alert出ない)でした。
私の開発&実行環境は以下の通りです。
Windows XP SP2
IE6.0 SP2
Tomcat 5.0.30

よろしくお願いします
398397です:2006/07/04(火) 17:09:11
すみません、javaスレと間違いました m(_ _"m)ペコリ
javaスレに再カキコします
399デフォルトの名無しさん:2006/07/04(火) 17:11:52
悲しいくらいのクソカキココンボだな
400デフォルトの名無しさん:2006/07/05(水) 00:19:29
vb.net で、アクセスの .MDB の中に定義されているクエリを実行する事はできますか?
可能な場合, Access や Access のランタイムが導入されていなくても
vb.net だけの環境でクエリは実行可能ですか?
やはり、Access もしくは Access のランタイムは必要でしょうか?
401デフォルトの名無しさん:2006/07/05(水) 01:48:45
質問があります。
ヘルプの説明によくある「このメソッドは O(1) 操作です。」の
O(1)操作って一体何の事なのでしょうか?
402デフォルトの名無しさん:2006/07/05(水) 02:35:32
定数オーダ
対象件数が増えても処理時間が一定ということ
403デフォルトの名無しさん:2006/07/05(水) 09:48:03
>>400
どんなクエリかわからないが、MDACがインストールされてればできると思うよ
少なくともうちでクロス集計のクエリは動いている
404385=386:2006/07/05(水) 10:57:47
どなたかわかりませんか?
405デフォルトの名無しさん:2006/07/05(水) 11:22:51
>>404
>>322から似たような質問が出てるんで読むと大吉。
406デフォルトの名無しさん:2006/07/05(水) 12:04:06
背景が透明な画像をPictureBoxに貼り付けてもPictureBox内の画像とその周りは透明になるのですが
それを他のPictureBoxの上に乗せても後ろにある画像を透過してくれません
これはどうやれば透過してくれるのでしょうか?

それと、画像を読み込んだりして操作したプログラムをずっと使い続けているとwindows自体が重く感じられるようになるんですが
これは詳しくはわからないのですが、実行中にもある程度の感覚でメモリの開放みたいなものをしないといけないのでしょうか?
407デフォルトの名無しさん:2006/07/05(水) 12:35:35
何度同じ質問するつもりだろうな。

あのねえ、例えば額縁に「透明な」ガラスの板をのせたら額縁の裏板が透明になるか?
そんなガラスあったら怖いだろw
408406:2006/07/05(水) 12:48:41
>>407
>あのねえ、例えば額縁に「透明な」ガラスの板をのせたら額縁の裏板が透明になるか?
額縁に「透明な」ガラスの板をのせても透明なガラスの上から透けて見えるはずの額縁が見えないということですよ

画像ファイルとしては背景が透明なので、Paintなどで他の画像の上に重ねても、その下側になった画像を透過してくれるのに
PictureBoxに乗せて、他のPictureBoxの上に重なるように持っていっても下にあるPictureBoxを透過してくれないということです。
おそらくPictureBoxの下地を透過してるんだと思います。
あ、額縁とはそういうことですね・・。

この下地を透過する方法はないんでしょうか?
409デフォルトの名無しさん:2006/07/05(水) 16:28:55
フォームを自由な形にすることは可能らしいのですが
ボタンやテキストボックス、ピクチャーボックスなどのコントロールの形を好きな形にすることはできますか?
410デフォルトの名無しさん:2006/07/05(水) 18:21:40
.netってデバッグ中にソースの修正できないって事ないですよねぇ?
現在エディタでこのテキストを変更できませんってメッセージがでちゃいます。
調べてもよくわかりません。
どなたか教えてください。
411デフォルトの名無しさん:2006/07/05(水) 19:06:10
2005のVBとC#はできる。2002/2003は不可。
412410:2006/07/05(水) 19:08:21
>>411げっ!できないんですか…
モロ2003じゃん!
2005の購入検討してみます。
ありがとうございました。
413デフォルトの名無しさん:2006/07/05(水) 20:54:31
>>410
実行中に変更してどうするよ
414デフォルトの名無しさん:2006/07/05(水) 21:42:49
普通できてもやらんわなw
415デフォルトの名無しさん:2006/07/06(木) 00:14:09
でもわざわざ変更できるようにしてるんだから、
やろうとする人がいるってことでしょ。
416デフォルトの名無しさん:2006/07/06(木) 00:17:39
VB6 では、
type A
B as long
C(7) as byte
end type
declare function xxx lib "xxx" (ByRef AA as A) as integer

sub D_Click()
Dim wkA As A
Dim Result As Integer

Result = xxx(wkA)
end sub

これでウマくいってたのに、VB2005 では、
structure A
dim B as long
dim C(7) as byte
end structure
declare function xxx lib "xxx" (ByRef AA as A) as integer

sub D_Click()
Dim wkA As A
Dim Result As Integer

Result = xxx(wkA)
end sub
C(7) でエラーになったので、C()になおしたら、
Result = xxx(wkA)のあと、C に値が入ってこなかった・・・。
修正お願いします。
417デフォルトの名無しさん:2006/07/06(木) 00:38:33
>>416
理屈も分からずに対処療法を聞いても危険なだけだから大人しく
MSDNでも熟読したほうがいいよ。

それが嫌ならプログラム書くのは止める事だな。
418デフォルトの名無しさん:2006/07/06(木) 02:06:00
>>416
VB6とVB2005では整数型のサイズが違う
http://msdn2.microsoft.com/ja-jp/library/7f5ztkz3.aspx
配列を含む構造体の渡し方
http://msdn2.microsoft.com/ja-jp/library/eadtsekz.aspx
419デフォルトの名無しさん:2006/07/06(木) 09:40:37
フォームに背景を貼り付けてレイアウトをNoneにした場合、元の画像のサイズそのまま左上に固定されて設定されるのですが
この左上固定って言うのを変更することができますか?
背景の開始位置の変更ということです。
420デフォルトの名無しさん:2006/07/06(木) 11:29:33
アンカーかresizeイベントにコード書く
421デフォルトの名無しさん:2006/07/06(木) 12:46:49
フォームの背景はアンカーできなくない?
422デフォルトの名無しさん:2006/07/06(木) 13:11:57
質問させてください

現在、カーナビの地図のようなプログラムを作っています。
仕組みは簡単で大きな地図が一枚あり、店の種類を明記したボタンを設置しています。
それでそのボタン押すと、たとえばコンビニというボタンを押すと、地図にあらかじめ設置していたコンビニの画像がピカピカ光るというようなものです。

現在は、PictureBox1に地図を貼り付けて、各店の画像もPictureBox(x)に貼り付け、PictureBox1の上に重ねて上乗せしています。
そしてボタンを押すと対応していPictureBoxの画像を点滅するよう元の画像と点灯画像を交互に変更するようにしています。
ですが地図をスクロールすると各店の画像が地図とずれてしまうのですが、これを下地と同じ箇所に固定するにはどうしたらよいでしょうか?

よろしくお願いします。
423デフォルトの名無しさん:2006/07/06(木) 13:47:51
PictureBox(x)の座標軸を、地図のスクロールに合わせて相対移動させ
ればいいんでは?

面倒だったら、透過画像にして地図と同じ大きさに全部配置したものを
用意、丸ごとスクロールに同期させるとか。
424デフォルトの名無しさん:2006/07/06(木) 13:57:11
>>423
早速のレスありがとうございます。
スクロールに同期させるのはちょっと私のレベルではまだ難しそうなので、後者の方を試してみたいと思います。
ありがとうございました
425422:2006/07/06(木) 15:49:54
それと追加ですが・・・

Pictureboxの指定範囲内をクリックしたらイベントを起こせるようなことはできませんか?
通常はボタンならボタン全体PictureboxならPicturebox全体がクリックイベント範囲内だと思うのですが、コントロール内の一部分だけで範囲を指定したクリックイベントを起こさせるようなことです。
426デフォルトの名無しさん:2006/07/06(木) 15:55:50
Dispose()って必要?ってか使う?
427デフォルトの名無しさん:2006/07/06(木) 16:36:16
>>426
必要なときは使う
428デフォルトの名無しさん:2006/07/06(木) 17:00:29
>>425
PictureBoxのMouseClickイベントで
(Rectangle型の特定範囲).Contains(e.Location);
とかやって自分で判定
429416:2006/07/06(木) 19:30:56
>>418
たいへん助かりました。
ありがとうございました。
430デフォルトの名無しさん:2006/07/07(金) 15:49:21
初歩的な質問なんですが、例えばループ文を扱う場合にループ用の変数をグローバルで宣言しているのはあまりよくないと聞くのですが
自作関数を呼び出して、そこでループを繰り返しているのですが、その場合グローバルにしないと自作関数を呼び出す毎に変数を初期化してしまうのですが
こういう場合はどうしたよいのでしょうか?
431デフォルトの名無しさん:2006/07/07(金) 16:07:48
どういうループだよ。
処理状態を覚えとくならメンバに持てばいい。
432デフォルトの名無しさん:2006/07/07(金) 16:27:04
制御変数の初期値を保存しとくのならわかるが
制御変数を保存するってそんなやつおらんやろ
433426:2006/07/07(金) 17:00:47
必要な時かぁ・・・

ピクチャボックスばっかり使ったプログラムを起動、停止ばかり繰り返しているとWindows全体がもっさりしてくるのはこのせい?
あと、Disposeはピクチャボックスを使ったプログラムで終了時にすべてのピクチャボックスをDisposeすればいいよね?
最後までグラフィックを描写してるから途中でDisposeはできないし。
434426:2006/07/07(金) 17:10:54
すんません、フォームのloadイベントの反対ってないんですか?;
フォームを閉じる寸前に起こるイベントみたいな
435426:2006/07/07(金) 17:13:52
思い切りあった、すません;
closedとclosingの違いってなんなんだろうか・・
言葉の意味はわかるけど、それがプログラム上ではどう実行時に違うのか・・
436デフォルトの名無しさん:2006/07/07(金) 17:18:33
closingの方は閉じる前なのでキャンセルできる。

Formに貼り付けたピクチャボックスはFormのDisposeのときに同時にDisposeされる。
自分でnewしたぶんは自分でDispose。
437デフォルトの名無しさん:2006/07/07(金) 17:22:30
ってか、ピクチャボックスを1個1個開放しないで、Me.Dispose()でForm内のコントローラーは全部開放してくれますか?
438デフォルトの名無しさん:2006/07/07(金) 17:23:14
>>436
なるほど・・・勉強になりましたありがとです。
439デフォルトの名無しさん:2006/07/07(金) 20:16:06
っていうか、MSDNちゃんと読めよ。
どういう時にDisposeを呼び出す必要があるのか、
正確に言えばどういうクラスがDisposeを実装する必要があるのかちゃんと書いてあるから。

意味もわからず「おまじない」的コードを書いて平気なセンスは恥ずかしいと思ったほうがいいよ。
440デフォルトの名無しさん:2006/07/08(土) 00:40:44
意味もわからず「おまじない」的コードを書いて平気じゃないから質問してんだろ・・・

意味もわからず「おまじない」的コードを書いて平気な奴はここに来ない
441デフォルトの名無しさん:2006/07/08(土) 01:08:31
MSDNの読み方を教えてください
442デフォルトの名無しさん:2006/07/08(土) 02:43:00
昔ISDNはイスドンと呼んでいたからそれに従え
443デフォルトの名無しさん:2006/07/08(土) 02:47:06
あ、いや、そういう意味じゃなくて中身・・・
444デフォルトの名無しさん:2006/07/08(土) 02:58:06
質問があります。

Dim n(9) As Integer
上の配列は4バイト×10個で合計40バイトですが、
単なる掛け算ではなくこれを取得する方法はあるでしょうか?
445デフォルトの名無しさん:2006/07/08(土) 03:01:24
する意味がどこに?
446デフォルトの名無しさん:2006/07/08(土) 03:07:25
>>444
Buffer.ByteLength(n)
447デフォルトの名無しさん:2006/07/08(土) 04:59:09
>>446
できました。
ありがとうございました。
448VB初心者:2006/07/08(土) 09:21:19
環境の質問をさせてください VB2005

目的
共通ファイル Common.vb を2つのプロジェクトで使いたい

PJ1 PJ2 共に Common.vbより階層が下のディレクトリに存在する(同じドライブ)

「既存のファイルの追加」をおこなうと、ファイルがコピーされます。
----------------------------------------------------------------------

目的2
.com や.net を使わないでvb.netレベルでのライブラリって出来ないものでしょうか?
幾つかのクラス(ファイル)をまとめて機能を実現したライブラリがあるのですが、

利用する場合、全てのファイルを既存追加>しかもファイルがコピーされる
ライブラリの部分を変更した場合、その部分をcommon フォルダへ書き戻し...
他の方はどうしているんだろう? 
VB6だとコピーを作らずモジュールは参照していたのですが...
449デフォルトの名無しさん:2006/07/08(土) 09:46:10
>448
>他の方はどうしているんだろう? 

VB.NETで普通にクラスライブラリ(コンパイルするとDLLになる)を共通機能として実装して、
他のそれぞれのプロジェクトで参照設定して使用する。
450デフォルトの名無しさん:2006/07/08(土) 09:48:06
ソリューション
451デフォルトの名無しさん:2006/07/08(土) 11:10:00
リンク使えばソース共有はできるけど、普通はdllにする。
なんかdll嫌がる人が多いような気がするけど何でか分からん。
リンクファイルの方がいやだけどなあ。
452デフォルトの名無しさん:2006/07/08(土) 11:30:38
1つのWindowsアプリを何人かで分担開発する場合、
いちばん多いやり方は、それぞれの担当部分をDLLとして作成し、
メインを担当している人から参照してもらうようにすることだろうな。
453デフォルトの名無しさん:2006/07/08(土) 11:45:14
そのためのクラスライブラリだろ
454デフォルトの名無しさん:2006/07/08(土) 12:48:34
または、各担当者から使ってもらうような
共通ユーティリティ部分はDLLだろうな。
455デフォルトの名無しさん:2006/07/08(土) 13:05:32
いや、何人かで分割して開発する場合は、規模にもよるが
 メイン・モジュール担当・・・1人
 サブ・モジュール担当・・・・複数人
 共通モジュール担当・・・・1〜2人
で、
プロジェクト的には、1つのソリューションに
メインprj、サブprj、共通prjを配置して
 メインprjから各サブprjと共通prjへ
 各サブprjから共通prjへ
各々プロジェクト参照するのが普通で、
DLLなんて使わないだろう。
456デフォルトの名無しさん:2006/07/08(土) 13:08:53
いや…それも含めてdllって言ってるだろ
457デフォルトの名無しさん:2006/07/08(土) 13:09:40
プロジェクト参照って結局DLLによる結合じゃん
458デフォルトの名無しさん:2006/07/08(土) 13:11:25
わざわざ参照方法で分けて書くつもりなら、
dllとだけ書かずに、dll参照とかプロジェクト参照って書いてる。
459デフォルトの名無しさん:2006/07/08(土) 13:51:17
「DLL参照」と「プロジェクト参照」じゃ参照元プロジェクトが更新されたときの
参照先の対応が天と地ほど違うよ
460VB初心者:2006/07/08(土) 16:43:44
>>449-459
レスありがとう

DLLについて< 
DLLにすれば、他の言語も利用できるという利点もありますが、欠点もあります。
そもそも、単に共通のソースを使いたいというだけなので、エクスポート宣言、
インポート宣言、呼び出しの時のオーバヘッドなどがあり、DLLは望んでいる形とは違います。

API呼び出しをまとめて宣言しているAPIクラスを、DLL化というような事はしたくありません。
またクラス内に定義した、クラス用の列挙定義などはDLLにしても見えるのでしょうか?
DLLでは駄目なんですorz...

クラスライブラリ機能>DLLになる

クラスインポートする? 
インポート宣言した場合、クラスをオブジェクトのイメージで使えるのだろうか?
単に関数なんでしょうか?

やりたい事は、いわいるCommon.vb をリンク参照したいだけなんですけどねorz...
インクルードがないのかなぁ....
461デフォルトの名無しさん:2006/07/08(土) 16:51:37
おまいは一体何語を使ってるんだ
462デフォルトの名無しさん:2006/07/08(土) 16:52:02
>>459んなこた分かっとる。
ソース共有したいっつうからdllでいいんじゃないの?
って言ってるだけだろ。
参照方法でには言及してないだけ。
463デフォルトの名無しさん:2006/07/08(土) 16:53:05
>>460おまえ何か勘違いしてないか?
464デフォルトの名無しさん:2006/07/08(土) 16:54:17
ついでにやりたきゃリンク出来るって言ってるだろ
465デフォルトの名無しさん:2006/07/08(土) 16:58:33
>>460
http://msdn2.microsoft.com/ja-JP/library/9f4t9t92.aspx
これ見てリンクとして追加しろ。後は知らん。
466デフォルトの名無しさん:2006/07/08(土) 17:01:37
基本分かってからやり直せ。
何言っても通じん。
467デフォルトの名無しさん:2006/07/08(土) 17:13:42
確かに基本からやり直せという感じだな。

>>460
言いたい事は分かる。
だけど、それはVB6とかでDLL使う場合の話だ。

.NET(C#やVB.NET)でのクラスライブラリで生成されるDLLは、
それまでのDLLとはちょっと(つうか、可也)別物だから、勉強してみなさい。
468デフォルトの名無しさん:2006/07/08(土) 19:23:37
TCP/IPのLANの設定かえるプログラム作りたいです。
対象はWIN2K、WIN XP
IPアドレス、サブネットマスク、DNS、WINS 等
実現するためのWIN32_APP もしくは.NET のクラスライブラリ
知ってる方がおられましたら、おしえてくらはい。

直接レジストリ編集する方法はわかったのですが、
再起動必要っぽいのでそれは避けたく、
再起動しないですむようなコードも知ってたら
教えてほしいです。





469459:2006/07/08(土) 22:06:06
>>462
別にあなたとか特定の書き込みにレスしたわけじゃないんだが・・・(´・ω・`)
470デフォルトの名無しさん:2006/07/09(日) 04:13:25
どの.NETスレも過疎りすぎ
471デフォルトの名無しさん:2006/07/09(日) 07:08:07
Waveで鳴っている音のレベルを数値で表示するソフトがほしいです。
試しにdebug.writelineにxミリ秒毎に数字を出すようなプログラムを書いてください。
472デフォルトの名無しさん:2006/07/09(日) 07:43:21
プログラム板じゃなくてソフトウェア板行けや
473デフォルトの名無しさん:2006/07/09(日) 12:34:18
>>468
WMIでググレ
474デフォルトの名無しさん:2006/07/10(月) 10:26:32
クリックイベントについて質問させてください。

現状のクリックイベントではクリックしてボタンから指を離した時点で、イベントが作動すると思うのですが
これをクリックした直後に動作させることは可能でしょうか?
475デフォルトの名無しさん:2006/07/10(月) 10:49:51
つ「MouseDown」
476デフォルトの名無しさん:2006/07/10(月) 11:09:25
つ「ありがとう、解決しました」

それとですが
例えば二つのボタンがあり、一つ目のボタンをクリックしてイベントを発生させ、そのままマウスのクリックを「離さず」に二つ目のボタンにずるずるポインタを移動させたら二つ目のボタンのイベントが開始するようなことはできませんか?
調べてみたらポインタがオブジェクト内に入ったらイベント開始はあったのですが、通常時にポインタがオブジェクト内に入ってイベントが開始されてしまい、それでは困るので
クリックしたままポインタがオブジェクト内に入ったらイベント開始のようなことはできないんでしょうか
477デフォルトの名無しさん:2006/07/10(月) 11:53:30
>>476
不安定かもだが、フラグで制御するのが良いんじゃない?
478デフォルトの名無しさん:2006/07/10(月) 12:39:04
>>476
もしマウスのキャプチャーって概念をしらないならそこに解決の糸口があるかもね。

でも、どうせこだわりを持つならもっと他の有意義なことにこだわった方がいいと思う。
経験上、WindowsのGUIのお作法に反逆するような、
そういうどうでもいいことに固執する奴はたいてい無能だ。
479デフォルトの名無しさん:2006/07/10(月) 13:05:14
>>477
そうするしか思いつかないんですかね
クリックしたままだとマウスポインタが乗ったら起きるイベントのフラグがたつってことですよね
数が多いので大変だ。。
480デフォルトの名無しさん:2006/07/10(月) 13:17:46
>>479
逆じゃないか?
押したらフラグ立てて乗った時にそのフラグを見るんだろ
もちろん放したらフラグは下げるの忘れるな

あと、同期化もしといた方が良いな
481デフォルトの名無しさん:2006/07/10(月) 13:35:00
状態遷移と画面設計をもうちょっと詰めたほうがいいと思う。
ボタンを押したままドラッグなんて、どうやって思いついたのかな?
482デフォルトの名無しさん:2006/07/10(月) 14:13:53
「そうするしか思いつかないんですかね」ってすごいな
483デフォルトの名無しさん:2006/07/10(月) 14:36:51
でもみんなができないことをやったって自慢できるじゃないですか
484デフォルトの名無しさん:2006/07/10(月) 14:42:25
で、この糞アプリ使えねえとか言われる訳だな
485デフォルトの名無しさん:2006/07/10(月) 14:47:17
できないことじゃなくて、「やらないこと」だ
486デフォルトの名無しさん:2006/07/10(月) 15:01:05
どんないいアイデアもこうやってつぶされていくのですね
487デフォルトの名無しさん:2006/07/10(月) 15:16:09
いいアイデアと言い切る理由を説明してくれる?
既存の手段と比べて、どこがどう優れているとか。
488デフォルトの名無しさん:2006/07/10(月) 15:25:21
そうするしか思いつかないんですかね

私もそう思いついたんですが、やはりそうするしかないんですかね の間違いです
文の訂正繰り返してたらなぜかそういう風にまとまってる・・

>>481
普通一般に使われるWindowsプログラムじゃないんで^^
489デフォルトの名無しさん:2006/07/10(月) 15:26:19
>>480そうですね・・ありがとうございました。
490デフォルトの名無しさん:2006/07/10(月) 15:30:11
いや、別に不特定多数に向けて配ろうっていうんじゃないなら何やってもいいと思うよ
でも身近な人以外に渡すなら、独自すぎる操作方法は採用すべきでないと思う。
どんなに丁寧なReadme.txtでも、読む人って本当に少ないから。
491デフォルトの名無しさん:2006/07/10(月) 15:33:55
つか、操作方法はマニュアル見なくても直感的に分かるように
他の一般ソフトと揃えてくれと、いつも思う。
あとインターフェースとかもあんま凝らんでいいから・・・
何故かシステム絡みの人って変に凝り性が多いような気がする
492デフォルトの名無しさん:2006/07/10(月) 18:13:25
自分で使うツールとかじゃねーの?
あるいは身内だけで使うとか・・・
493デフォルトの名無しさん:2006/07/10(月) 18:47:15
すみません、ウインドウをスクロールさせるようなメソッドはありますか?
494デフォルトの名無しさん:2006/07/10(月) 18:49:51
あーあだから「マウスのキャプチャ」をまず調べたらって言っているのに。。

操作性が糞かどうか以前に、そういう仕様はベタには実現できんよ。
実際やってみればすぐわかることだと思うけど。
495デフォルトの名無しさん:2006/07/10(月) 21:18:49
>>493
どのウィンドウをスクロールさせるんだ
496デフォルトの名無しさん:2006/07/10(月) 21:49:14
>>493
画像か、それともテキストか?

ウィンドウにスクロールバーが付いて、どんなオブジェクトでも自由
自在にスクロールできるとか考えてるなら、そんなのは無いよ。
497デフォルトの名無しさん:2006/07/10(月) 22:00:57
ウィンドウ自体がスクロールするんだろ
498デフォルトの名無しさん:2006/07/10(月) 22:04:26
いっそのことデスクトップをスクロールさせればいい。
499493:2006/07/10(月) 22:12:55
ウィンドウ全体です
一応、主な中身はデータグリッドビューで
右側にも当然スクロールバーがあるのですが、それをボタンコンロトールのクリックで制御したいのです。
クリックして先送りのような
500493:2006/07/10(月) 22:16:02
あ、補足ですがデータグリッドビューをフォーム全体に引き伸ばしてるので「ウィンドウのスクロール」でも大丈夫だと思って・・
データグリッドビューで指定位置までスクロールできるとかあれば尚いいんですけどね;
501デフォルトの名無しさん:2006/07/10(月) 22:20:45
DataGridView なら行/列単位でスクロールできる
プロパティ&メソッドに一通り目を通せ
502デフォルトの名無しさん:2006/07/11(火) 04:32:41
タブコントロールの質問

タブの内容を全て同じで実行中に新しくタブが作られたときも中のコントロルとか
同じものにしたいんだけどどうすればいいですか?
503デフォルトの名無しさん:2006/07/11(火) 07:29:36
>>502
日本語を正確に

どういう意図かわかりませんが、「新規タブ」を押すとタブページが増える。
増えたタブの内容を、現在アクティブのタブの内容をコピーしたものにしたい。

こういうことですか?



504デフォルトの名無しさん:2006/07/11(火) 09:58:11
DataTableについて教えてください。
現在、変更した行をDataTable.GetChangesで取得しています。
ところが1行しかデータのないDataTableの場合や、複数行でも1行変更して
すぐにユーザーが何か他のアクションを起こした場合に.GetChangesでは
変更した行を取得できません。

私は1行のDataTableだったら、DataTableを複製し、オリジナルのDataTableを
.RejectChanges()で戻してオリジナルと複製を比較するしかないかなと
思っていますが他に良い手段があれば教えてください。
505デフォルトの名無しさん:2006/07/11(火) 10:17:00
>>504
どの時点でGetChangesを使っているのかが問題だ。
MSDNにはこう明記してあるけど、タイミングを間違ってないか?

「前回 DataTable を読み取るか、AcceptChanges を呼び出した以降
 にこのデータセットに対して行われたすべての変更が格納されてい
 るこのデータセットのコピーを取得します。」
506デフォルトの名無しさん:2006/07/11(火) 10:26:39
>>505
レスサンクス

DataTableにデータを読み込んですぐに.AcceptChangeを行っています。
もうちょっと詳しく書くと、行を編集し後に他の行に移らないと.GetChangesで
編集した行を取得出来ないようです。
検索結果で1行しか取得できなかった場合は他の行に移れないので
.GetChangesで取得できないようです。
何かプロパティ無いか探してみます。
507デフォルトの名無しさん:2006/07/11(火) 10:32:08
EndEdit
508デフォルトの名無しさん:2006/07/11(火) 11:13:00
>>507
ヒントサンクス

ちょっと調べてやってみます。
509504:2006/07/11(火) 13:02:44
解決しました。

DataTableをTextBoxとDataGridViewにそれぞれデータバインドしていました。
DataGridViewはEndEdit()を実行して確定、TextBoxの方はDataTableのColumnChangedを利用して
Row.EndEditを実行して確定させました。

ありがとうございました。
510デフォルトの名無しさん:2006/07/11(火) 14:41:49
>>503
そういうことです。説明不足ですみません。

よろしくお願いします。
511デフォルトの名無しさん:2006/07/11(火) 14:45:05
TcpClientでReadする前にデータがあるかどうかを調べる方法を教えてください
512デフォルトの名無しさん:2006/07/11(火) 17:50:31
VB.netでIEから呼び出せるクラスorコントロールライブラリって作れます?
ライブラリを登録してスクリプトから呼び出すと、VBScriptでCreateObjectでは読めますが、
そのスクリプトをhtmlにインポートするとCreateObjectでは作成できなくなっています。

おそらくセキュリティ系のような気もしますが、結構緩く設定しているのでダイアログ表示もなく
いきなり作成不能なんてことは考えられません。

似たような問題に遭遇した人いますか?または解決法ご教授お願いします。
513デフォルトの名無しさん:2006/07/11(火) 18:51:53
>>511
データがあるというのをどう定義すればいいのか謎だが、取りあえず Available
514デフォルトの名無しさん:2006/07/11(火) 22:14:14
VB2005で
ヘルプを選んでButtonとか検索したときにローカルのヘルプが引っかからなくなってしまったのですが
何か解決策につながるような事はありませんか?
515デフォルトの名無しさん:2006/07/11(火) 22:30:45
>>510
コントロールの属性や値を保存して、コピー先に転送する。

ヒントは「イニシャライズコンポーネント」に書かれているコード
コントロール作るとエディタが自動的に書いてるよね?
あれを参考にしてみれば如何でしょう
516デフォルトの名無しさん:2006/07/12(水) 00:50:12
vb2003 windows forms で、a.exe のコンストラクタで、b.dll を Show している
のですが、その時 b.dll のフォームが Active にならずに困っています。

b で Me.Activate() などやってもだめです。

強制的に、自分自身をアクティブにしてしまう、という事はできないでしょうか?
517デフォルトの名無しさん:2006/07/12(水) 04:37:18
>>515
ご丁寧にありがとうございます。
またわからなかったらよろしくお願いします。
518デフォルトの名無しさん:2006/07/12(水) 07:14:22
>>516
コンストラクタの中で他のDLLのSHOWをしても
コンストラクタを抜けてA.EXEのFormLOADイベントで、
アクティブが移っていると
考えられます。

1回きりのタイマーなどを使うのは如何でしょうか?
A.EXEのLoadでトリガーを。
519デフォルトの名無しさん:2006/07/12(水) 08:14:26
ファイルのプロパティの概要のタイトルとかを読むことは出来たのですが、設定するには
どうすればいいのでしょう
520デフォルトの名無しさん:2006/07/12(水) 08:15:28
App.config
521デフォルトの名無しさん:2006/07/12(水) 08:18:14
だから、、、コンストラクタの中で表示にかかわる処理は書いちゃダメだって。。。
522デフォルトの名無しさん:2006/07/12(水) 12:51:53
くぁしく
523デフォルトの名無しさん:2006/07/12(水) 13:57:54
表示が完了する前にコンストラクタの実行が完了するなんて保証はないから
524デフォルトの名無しさん:2006/07/12(水) 23:20:04
何を言ってるの分からん。
525デフォルトの名無しさん:2006/07/12(水) 23:48:11
起動開始
クラスの構築
FORMの構築
FORM Load イベント
コントロールの Load イベント

このような順番で解決されます。
さて、ではクラスのコンストラクタでFORMの内部に触れる事は可能なのでしょうか?
このままだと「ヌルポ」になってしまいます。
起動時のクラスのコンストラクタの処理中に「描画に関わる部分」を触ってはいけないというのは
このような理由なのです。

しかし、限定的ではありますが「my」宣言子がそれを解決しています。
これらも同時に調べて見ては如何でしょう。
526デフォルトの名無しさん:2006/07/12(水) 23:53:38
>>525
人に偉そうな事言う前にまず君自身の日本語の能力をなんとかした方がいいんじゃないか
527デフォルトの名無しさん:2006/07/13(木) 00:10:09
>>525
だけど、 InitializeComponent()の中でサイズとか位置とか色とか
がんがん設定してるじゃない。
InitializeComponentはコンストラクタの中から呼び出されてるはずだよ。
528デフォルトの名無しさん:2006/07/13(木) 00:27:56
流れ的に>>521 >>523 >>525なんだろうけど
そもそも>>521は何に対するレスなんだ?
まさか>>516
529デフォルトの名無しさん:2006/07/13(木) 00:29:47
.NETにぬるぽは無い
530デフォルトの名無しさん:2006/07/13(木) 02:26:52
>表示が完了する前にコンストラクタの実行が完了するなんて保証はないから
意味不明だろ。
531デフォルトの名無しさん:2006/07/13(木) 04:38:10
このスレにはエスパーが必要だ、エスパーまだー?
532デフォルトの名無しさん:2006/07/13(木) 04:54:30
me.esper
533デフォルトの名無しさん:2006/07/13(木) 06:23:17
VS2003を使っています。

TabControlで、マウスがHoverしている位置のTabのIndexを取得する
にはどうすればいいのでしょうか?

ダブブラウザ(IE7のような感じ)で、マウスをHoverするだけでTabPageを
切り替える事が目的です。
ご存知の方いましたら、ご教示していただければ幸いです。
よろしくお願いいたします。
534デフォルトの名無しさん:2006/07/13(木) 07:58:15
GetTabRect
535デフォルトの名無しさん:2006/07/13(木) 08:06:47
>>527
だから> me.演算子が使われています。ok?
536デフォルトの名無しさん:2006/07/13(木) 08:08:39
>>529
インスタンス化しない状態で、
クラスのメンバを参照したり、変数を参照すると実行時エラーで停止します。

それがヌルポ
537デフォルトの名無しさん:2006/07/13(木) 08:10:55
>>535
My演算子???じゃなかったのかよw

画面表示とかコンストラクタのタイミングとか、
全然関係ないじゃねーか。
538デフォルトの名無しさん:2006/07/13(木) 08:24:11
>>535
よく分かってないくせに背伸びするなって。
隠したつもりでも分かってる人間なら絶対にしないような言い回しでバレバレ。
みっともないよ。
539538:2006/07/13(木) 08:25:06
アンカーミス
>>535-537、ね。
540デフォルトの名無しさん:2006/07/13(木) 08:44:23
(誰へのレスというわけじゃないが)

InitializeComponentメソッドの中で
例えば、
 Me.ClientSize = New System.Drawing.Size(200, 100)
とかやってるわけで
このとき、InitializeComponentはコンストラクタの中で
実行されているわけだから、まだこのフォームのオブジェクトは
生成されていないわけで、それなのにMeを使うのは
ヌルポじゃないか

ということに疑問を持っている奴がいる、ってことじゃないか?
541デフォルトの名無しさん:2006/07/13(木) 08:44:38
>>534
できましたーー!
ありがたや、ありがたや。
542デフォルトの名無しさん:2006/07/13(木) 09:57:19
イニシャライズコンポーネント内では、コントロールの生成を行って、その後各プロパティ読み込みでしょ。
その順序を守ってれば、別にコンストラクタ内でも何らかの初期化はOKでしょ。
ただし、イニシャライズコンポーネントの後じゃないと当然コントロールが存在しない。

あと、イニシャライズコンポーネント内では、SyspendLayoutってメソッドで連鎖制御してる。
その辺をきちんと理解すれば、別にコンストラクタ内で初期化してもOKでしょ。

543デフォルトの名無しさん:2006/07/13(木) 10:56:04
>>539
おいおい>>537もかよ。
544デフォルトの名無しさん:2006/07/13(木) 11:04:29
>>516 のフォームのアクティブ化の問題にだけ答えると
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        AddHandler Application.Idle, AddressOf AppEvh_Idle
    End Sub
    Private Sub AppEvh_Idle(ByVal sender As System.Object, ByVal e As System.EventArgs)
        RemoveHandler Application.Idle, AddressOf AppEvh_Idle
        Dim fm2 As New Form2
        fm2.Show()
    End Sub
End Class

MSDNをみるとフォームを表示後すぐCloseする場合もこの手法を使うように書いてある。
545デフォルトの名無しさん:2006/07/13(木) 11:22:12
>>542
おお、目からうろこだ!
546デフォルトの名無しさん:2006/07/13(木) 11:27:05
データベースを使用せずデータセットだけを使ってデータを管理しようと
したのですが、データセットに項目を追加してビルドをすると
自動生成されたデータセットのヘッダーで
「C1004: 予期しない EOF が見つかりました。」
と出ました。ヘルプを見てもこのエラーとは関係ないものばかりでした。
どうしてこのエラーが出るのかが分かりません。
分かる方教えてください。
547デフォルトの名無しさん:2006/07/13(木) 11:53:18
>>データセットに項目を追加してビルドをすると

ここをもっと詳しく具体的に説明してくれないか?
548546:2006/07/13(木) 12:07:58
>>547
データセット名がdataset1で、dataset1.xsd内でツールボックスから
以下を追加しました。
elementで一番上のテーブル名(?)を,DataItemにしました。
その下に、elementで名前をitem1、typeをintにしました。
その後ビルドすると、エラーになりました。
549デフォルトの名無しさん:2006/07/13(木) 12:09:21
VBのコード見るとなごむよね。いやされるっつうか。
550デフォルトの名無しさん:2006/07/13(木) 12:50:44
殺意しか沸いてこないんだが
551デフォルトの名無しさん:2006/07/13(木) 12:58:37
殺意が沸くようなコードを書いてるやつはVBを使ってることが多い
552デフォルトの名無しさん:2006/07/13(木) 13:05:01
>>548
その作業でどんな設計のDBができたつもりなのか、フィールド名や定義
も含めて日本語で詳しく説明してみよう。なんかDB設計もあいまいなま
ま、とりあえずいろいろ触ってなんかできましたって印象を受けるし。

データを外部に置きたくない理由が不明だけど、SQLとか使ってデータ
の操作をするつもりなら、アクセスファイルに素データ入力したやつに
ADO.NET経由で接続したほうが楽だと思うんだがなー。
553デフォルトの名無しさん:2006/07/13(木) 15:31:09
VBの2005とか新しくなっても使いづらさやバグが全然直ってないんだねえ・・・
これまともに開発するツールじゃないなあ
554デフォルトの名無しさん:2006/07/13(木) 15:54:27
自分の能力の無さを開発環境のせいにするのは良くないと思うよ
555デフォルトの名無しさん:2006/07/13(木) 15:58:08
エディタが糞なんだよな、まったく。
勝手に単語間のスペースを詰めちゃったり
余計なことばかりする。。。( ゚д゚)、
556デフォルトの名無しさん:2006/07/13(木) 15:58:09
あ、やっぱりバグを認めない基地外信者に叩かれると思ってたよ!
557デフォルトの名無しさん:2006/07/13(木) 16:37:04
ん、そろそろ夏休みのシーズン?こういうの増えそうだね。
558デフォルトの名無しさん:2006/07/13(木) 18:35:38
「俺はお前らとは違うんだよ!」って卑屈に歪んだ優越感を、存分に
まき散した文章書くから、すぐにわかるよね。
559デフォルトの名無しさん:2006/07/13(木) 20:27:52
VB厨乙
560デフォルトの名無しさん:2006/07/13(木) 22:04:34
DataGridViewでボタンを押すと指定した位置(行)までスクロールしてくれる方法は分かったのですが
最初の行に戻るはスクロールの値を0にでいいとして
最後の行に移動する場合はどう指定してやればいいとおもいますか?
グリッドビューの中身はテキストから読み込んでいるのでグリッドビューを読み込み毎に変わります。
グリッドビューの行数を数えてくれるような事はありますか?それかテキストの行数をどこかに格納してそれを最終行として格納した方がいいんでしょうか?
グリッドビューの行数を数えてくれる方法があればそちらの方が簡単だとは思うのですがないのかな・・・

それとももっと簡単に自動で最終行にまで移動してくれるような方法はあるんでしょうか?
よろしかったら助言の方をよろしくお願いします。

561デフォルトの名無しさん:2006/07/13(木) 22:30:13
最大行までスクロールすれば良いだろ
562デフォルトの名無しさん:2006/07/13(木) 22:31:14
ヒント:行のコレクション
563デフォルトの名無しさん:2006/07/14(金) 11:36:44
すみません、質問ですが・・
ボタンのclickイベントを追加したら、何故かデザイナのコードに追加されてしまいます。
それからプロジェクトツリーからそのフォームをダブルクリックすると画面が開かずに
デザイナのコードが表示されるようになって、画面を開く事ができなくなってしまいました。
プロジェクトツリーをみるとフォームのアイコンではなくてコードのアイコンになってます・・
これ普通に画面表示されるにはどうしたらいいのでしょうか?
564デフォルトの名無しさん:2006/07/14(金) 11:42:00
もしかして継承元を変更した?
565デフォルトの名無しさん:2006/07/14(金) 11:43:55
>>563
別のプロジェクトでフォームを作ってもそうなるか確かめる。
それがうまくいくようなら、うまくいかなくなったコードとよく比べてみる。
どこかクラス名とか大事なキーワードとか消したり変更したりしてない?
566デフォルトの名無しさん:2006/07/14(金) 11:54:35
>>564-565
お答えありがとうございます。
継承元等は一切変更していません。
普通に画面を作ってからプロパティウィンドウからbuttonのclickイベントを追加したら
デザイナのコードにclickイベントが追加されたのが事の発端だと思いますが・・
ほかの画面は普通に開く事ができますし、新たに画面を追加して同じ操作をしても問題なく画面はひらいてくれます。
567デフォルトの名無しさん:2006/07/14(金) 12:23:26
 > デザイナのコードにclickイベントが追加されたのが事の発端だと思いますが・・

それって何かいけないことなの?(・∀・)
568デフォルトの名無しさん:2006/07/14(金) 12:29:48
>>567
デザイナのコードじゃなくて普通のコードの方にイベントが追加されます。
画面を見ずにデザイナのコードだけで画面を作ってイベントを追加するならそれでも問題はないですが・・
569デフォルトの名無しさん:2006/07/14(金) 12:41:35
デザイナーじゃない普通のコードってなんのことだろうな
普通って何だよw

どうせフォームのリソースファイルを誤操作で削除しちゃったとか、
そんなところじゃないの?
リソルーションエクスプローラで「全てのファイルを表示」にして確認した?

あと、開発ツールのバージョンぐらい書くでしょ普通。
IDEの不具合を疑ってるわけでしょ?
570デフォルトの名無しさん:2006/07/14(金) 13:01:50
2005で、パーシャルされたでざいなー。vbファイルじゃないの?
571デフォルトの名無しさん:2006/07/14(金) 13:20:30
>>569
おっと確かにバージョンを言ってなかったですね。
Visual Studio 2005です。

普通のコードって言い方も変ですよね。
デザイナじゃない方のイベント等を書くほうのコード・・

>どうせフォームのリソースファイルを誤操作で削除しちゃったとか
そんな馬鹿げたミスなら最初からここにはきませんよ。

まあ、とにかく言いたいことは、デザイナのコードがちゃんと存在するのに
デザイン画面で出てくれないんですよ、プロジェクトツリーでそもそもその画面は
フォームとして認識してないみたいです、アイコンがフォームのアイコンではなくなっているので。
572デフォルトの名無しさん:2006/07/14(金) 14:06:09
プロジェクトを_別のパソコンに入ってるIDE_に持っていっても、同様
の現象が出るのか確認したか? 出るならファイル自体が、出ないなら
最初のパソコンに入ってるIDEが妙なんだろう。

他にパソコン持ってないってんなら、IDEの新規プロジェクトでボタンク
リックを追加して様子を見るとか、もっと問題の切り分けをしっかりし
たほうがいいよ。

>>そんな馬鹿げたミスなら最初からここにはきませんよ。
ひとに質問するときには、もうちょっと謙虚に発言したほうがいいよ。
573デフォルトの名無しさん:2006/07/14(金) 14:28:26
プロジェクトファイルが壊れてるんだろ
574デフォルトの名無しさん:2006/07/14(金) 14:39:21
>>572
だって、そんな馬鹿みたいな返答するほうもどうかとおもうけど?
あれは答えてるというよりただの煽りにしかみえないし。
>>573
壊れてねーよカス
575デフォルトの名無しさん:2006/07/14(金) 14:53:37
クラスファイルを新規作成して
Public Class Class1
  Inherits System.Windows.Forms.Form
End Class
ってやるだけでフォームのアイコンになるんだけどなあ。
本当に継承壊してない?
576デフォルトの名無しさん:2006/07/14(金) 15:42:41
>>574
ちょっと待てよ。
プロジェクトファイルが壊れてその症状てのは
比較的多いパターンだぞ。確認して言ってんのかどっちだ?
けどもうしるかボケ
577デフォルトの名無しさん:2006/07/14(金) 17:33:06
>>575
それはデザイナのコードですよね?
それは他のコードと比較しても壊れてる様子はなく、実行するとちゃんと画面はでてきます。
ちなみに、画面が出ないのは設計時の話です。
>>576
確認してるつってんだろ!”カスがああ!!
578デフォルトの名無しさん:2006/07/14(金) 17:55:19
>>577
んじゃ、Inheritsの行を1回消して、また元に戻したらどうなる?
579デフォルトの名無しさん:2006/07/14(金) 17:57:46
>>578
おかわりありませんでした
580デフォルトの名無しさん:2006/07/14(金) 18:15:32
>>579
んじゃ、新規フォームを追加してそれのDesiner.vbに
壊れてるフォームのInitializeComponentから下のコードを上書きしたらどうなる?
581デフォルトの名無しさん:2006/07/14(金) 18:23:16
なんでプロジェクトファイルの話だけ
いきなりそんなにつっかかてんだ?
582デフォルトの名無しさん:2006/07/14(金) 18:37:16
近くの人にそういって馬鹿にされた感じで言われたんじゃね?
583デフォルトの名無しさん:2006/07/14(金) 19:02:11
>>580
Desiner.vbは盲点でしたがかわりませんでした。

>>581-582
(´,_ゝ`)プッ
584デフォルトの名無しさん:2006/07/14(金) 19:14:08
だめだ、理解できん。
585デフォルトの名無しさん:2006/07/14(金) 19:17:19
>>583
新規にプロジェクト作成して、その新規プロジェクトのフォルダに
件の問題のあるフォームのファイルを全部コピペしてプロジェクトに追加してみれば
問題がプロジェクトにあるのか、それともフォームのコードにあるのか
問題の切り分けができるんじゃない?
586デフォルトの名無しさん:2006/07/14(金) 19:25:30
>>583
Desiner.vbが盲点て、君が「デザイナのコード」と言ってたのはDesiner.vbのことじゃないの?
まあ、それは置いといて新規フォームは当然フォームのアイコンなんだよね。
で、InitializeComponent以下を置き換えたらコードのアイコンになるのか?
だとしたらそこのコードに問題があるわけだ。どこが悪いかはコードを見なきゃ分からん。
587デフォルトの名無しさん:2006/07/14(金) 19:56:11
>>585-586
ご親切にありがとうございます。
新規フォームはフォームのアイコンになります。
InitializeComponent以下を置き換えてもコードのアイコンになっています。

まず、言われた事をやってみる事と、もうちょいわかりやすく状況を整理したいとおもいます。
588デフォルトの名無しさん:2006/07/14(金) 21:16:26
環境 VB2005、WIN2k
初心者な上で説明下手で申し訳ないですが、
単純なリスナーフォームとセンドフォーム(TCPでもUDPでも
どちらでもよい)を作って、A家からB家に、TextBox の内容を
送るプログラムを作った場合、ADSLモデムで NAT の設定とかしないと
通信できないのでしょうか?

A家もB家も、ADSLモデムにグローバルアドレスがあって、
各PCにローカルアドレスがある状態です。
589デフォルトの名無しさん:2006/07/14(金) 21:27:45
モデム
590デフォルトの名無しさん:2006/07/14(金) 21:58:02
A家でもB家でも普通にインターネットでホームページとか見られる?
だったら全然問題ないでしょ。
TCPにしてもUDPにしてもHTTPより下のレイヤの話だから。
591デフォルトの名無しさん:2006/07/14(金) 22:28:31
いやそれ理屈が逆
592デフォルトの名無しさん:2006/07/14(金) 22:44:59
>>588
スレ違いだよん
593588:2006/07/14(金) 22:48:30
実際に作って試しているのですが、自分のPCのローカルIPで
実験すると成功するんです。で、ヘンな事だとは思うんですが、
ADSLモデム(言い方変ですか?)のグローバルIPを指定すると、
うまくいかない。いっかい外を通って自分に返ってくる(?)みたいな
イメージで試してるんですが。

>>590
普通に見ることができます。
594デフォルトの名無しさん:2006/07/14(金) 22:50:43
>>588
リスナーフォームが動いているPCのIPアドレスと
リスナーフォームが待ち受けに使用しているポート番号を
リスナ側ADSLモデム(ルータ機能ありだろ?)上でポート転送を設定する。
リスナ側ADSLモデムのIPアドレスと上記で設定した済みのポート番号に対して
センドフォームからSocket通信する。
595デフォルトの名無しさん:2006/07/14(金) 22:53:27
>>593
AとB、どっちがホストか知らないけど、クライアント側がホスト側のグローバルIP(+ポート)を指定してやれば出来るんじゃないの?
596デフォルトの名無しさん:2006/07/14(金) 23:07:55
>>595
それってホストのどのPCに届くんだ
597デフォルトの名無しさん:2006/07/14(金) 23:30:26
>>577
おまえプロジェクトファイル見ておかしくないって判断できるのか?
どこを確認しておかしくないって判断したのかいってみろよ。
598デフォルトの名無しさん:2006/07/14(金) 23:33:57
文字化け等してない=壊れてない
って判断だろ、きっと
599デフォルトの名無しさん:2006/07/14(金) 23:34:15
こんなとこで当たり散らすよりもさっさとあきらめてプロジェクトファイルを作り直したほうが早い気がする
600デフォルトの名無しさん:2006/07/14(金) 23:38:06
Desiner.vbとは何か?オレは知らない
601588:2006/07/14(金) 23:42:33
>>595
その方法だと、グローバルIPの先にPCが複数台繋がっていた場合、
どこに届ければよいか判断できないのでは?
そこで、594氏のアドバイスを受けてモデム側のポートマッピング設定で
ポートを登録して試してみましたが、ダメでした。

>>592
VB外のポート設定なのか、VB内部のソースでWAN通信用のコマンド等が
あるか判断がつかなかったので書かせてもらいました。
VB関係なく、モデム側の設定でしたらスレ違いですが、だとすると
またまた疑問がわいてきて、winny などのP2Pは、そういう設定が
いりませんよね?プログラムから直接そういうのを行ってると思われる
のですが、VBじゃムリ(もしくは難解)なんでしょうか。
602デフォルトの名無しさん:2006/07/15(土) 00:01:55
>>591
何がどう逆なんだよ?
603デフォルトの名無しさん:2006/07/15(土) 00:27:27
>>601
>>winny などのP2Pは、そういう設定がいりませんよね?

質問の内容から思うに、そういう設定は必要だと思うが。

つーか、使用しているそのモデムって奴の製品名は何?
604588:2006/07/15(土) 00:35:12
>>603
AtermDR205C デス。
605デフォルトの名無しさん:2006/07/15(土) 01:06:40
>>604
ttp://www.losttechnology.jp/Tips/aterm.html

この系統だと思われるが、この手の設定がきちんと行われている「あて先ローカルIPも間違ってない」のに、接続できないのなら
ファイアーウォールが邪魔している可能性があるが。
やっぱり、激しくルーターの設定の問題だと思うが、

VBの問題だと思うなら
ttp://codezine.jp/a/article.aspx?aid=22
ここで公開されているサンプルで一度テストしてみた方が手っ取り早いかと。
606デフォルトの名無しさん:2006/07/15(土) 01:09:44
Windows上のファイヤーウォール設定も必要だろうな。
607デフォルトの名無しさん:2006/07/15(土) 01:29:31
>>602
下位のレイヤでつながっているなら上位のレイヤはつながるといえるが、
上位のレイヤでつながっていても下位のレイヤでつながるとはいえない。

てのがまあ一般的な話。
608デフォルトの名無しさん:2006/07/15(土) 08:50:32
>>607
おまい、言ってることが逆だろw
下位レベルのプロトコルで正常に通信できていても
上位のレイヤでアプリ同士がプロトコル守っていなかったら
正しく通信はできないだろうが
609デフォルトの名無しさん:2006/07/15(土) 09:33:39
プロトコルまもってなかったらてそんな話してんのかよ。
守った上での話しだろ普通。

IPより下のレイヤでネットワーク間の通信ができるか?
HTTPレベルでプロキシ使っているときにTCPレベルで通信できるか?
レイヤの上下ってのは普通そういう話。
610デフォルトの名無しさん:2006/07/15(土) 12:45:59
>>609

 > HTTPレベルでプロキシ使っているときにTCPレベルで通信できるか?

できるよ。つか、できなかったらおかしいじゃんよ。TCPはHTTP専用か?ww
HTTPプロキシは文字通りHTTPプロトコル上での話し。TCPのレイヤとは何の関係もない。
HTTPのレイヤで正常に通信できているなら、それより下のTCPやさらに下のIPのレイヤで
通信ができていないわけがない。
611デフォルトの名無しさん:2006/07/15(土) 12:51:05
レイヤの概念とかピンとこないひとは、ここ読むといいよ。
ttp://www5e.biglobe.ne.jp/~aji/3min/06.html
612デフォルトの名無しさん:2006/07/15(土) 16:37:40
>>610
んー、じゃなくてさ、
HTTPよか単純にIPとその下のレイヤのが意味分かりやすいか…

IPによってインターネットでの通信ができるんだから、
それより下のレイヤでもインターネットでの通信できてるに決まってるだろ
ってあんたは言ってるんだぜ。

ってか、俺が言ってる意味は上のような意味。
あんたが言ってるのはちょっと違う意味。
あんたの言いたいことはそれはそれでまあ分かるんだけど、
俺はそういう意味では言ってない、てだけか。
613デフォルトの名無しさん:2006/07/15(土) 16:44:20
>>612

 > IPによってインターネットでの通信ができるんだから、
 > それより下のレイヤでもインターネットでの通信できてるに決まってるだろ
 > ってあんたは言ってるんだぜ。

ちょっw、そんなこと言ってないよ。困っちゃうなぁ・・・もういいやw
614デフォルトの名無しさん:2006/07/15(土) 17:11:44
おれは最初からレイヤの上下の話をしてるだろうが。
レイヤの上下ってのは一般にそういうものという話。

>できるよ。つか、できなかったらおかしいじゃんよ。TCPはHTTP専用か?ww
>HTTPプロキシは文字通りHTTPプロトコル上での話し。TCPのレイヤとは何の関係もない。
>HTTPのレイヤで正常に通信できているなら、それより下のTCPやさらに下のIPのレイヤで
>通信ができていないわけがない。

HTTP専用のプロキシ越しで通信できるのは、HTTPだからだろうが。
TCPやIPのレイヤでは直接はできんだろうが。

なんでIPとそれより下だけ別の話にして
上のレイヤは違うんだ。
615デフォルトの名無しさん:2006/07/15(土) 17:55:56
>ちょっw、そんなこと言ってないよ。困っちゃうなぁ・・・もういいやw
なにが困っちゃうなぁだ。
どっかのD9Nじゃねーだろなおまえ…
616デフォルトの名無しさん:2006/07/15(土) 17:59:43
  ┏┳┳┓     ハイ.     ┏┳┳┓
┏┫┃┃┃  スレ違いは   ┃┃┃┣┓
┃┃┃┃┣┓   ここまで ┏┫┃┃┃┃
┃      ┃┃┏━━━┓┃┃      ┃
┃スレ違い ┣┫ . ・∀・ ┣┫. STOP!┃
┗━━━━┛┗┳━┳┛┗━━━━┛
            ┏┻┓┃
        ┏━┛  ┣┻┓
        ┗━━━┫  ┗━┓
.             ┗━━━┛
617デフォルトの名無しさん:2006/07/15(土) 21:41:05
>>614

 > HTTP専用のプロキシ越しで通信できるのは、HTTPだからだろうが。
 > TCPやIPのレイヤでは直接はできんだろうが。

おまえなぁ、いいかげんにしろよなw
そんなことあたりまえじゃないか。誰が「TCPやIPのレイヤでHTTPプロキシ越しに通信できる」
なんて言った?レスよく嫁よw

最初に戻って言うとだな、>>588>>593のレスで
A家もB家も普通にインターネットでサイトを閲覧できていることがわかってるわけだ。
それならば、TCPレイヤでのパケット通信はできているはずだな。なぜなら、
TCPレイヤの上位で動くHTTPでの通信ができているからだ。
それならば、IPアドレスの解決は当然できているはずだな。なぜなら、
IPレイヤの上位で動くTCPでの通信ができているからだ。
それならば、>>588で言っている「ADSLモデムでNATの設定」云々ということは
必要ないぞ。と言ったわけだ漏れは。
ADSLモデムがルータなら、配下の各PCにローカルIPが割り当てられていたとしても
サイトが見れていると言うんだから、当然NATなり何なりの処理でグローバル⇔ローカル変換が
行われているはずだからだ。

そこで>>588はHTTPじゃなくて、TCPやUDP(これはほとんどIPだな)のプロトコル上で
独自のプロトコルを策定するなりして、テキスト転送をしたいと言ってるわけだな。
それならば、上で言った利用で>>590で「問題ないよ」と言ったわけだ。

もちろん、作成するアプリがバカなら通信はできないよ。あと、特定のIPアドレスを
フィルタリングしてるようなファイヤーウォールがあれば無理だよ。
618デフォルトの名無しさん:2006/07/15(土) 21:58:01
>>593
そのあて先のパケットは通常ルータ(モデム)が遮断するよ。
遮断しないルータ(モデム)もある。
なんか見当ハズレなレスが多くておじさんびっくりだよ。
619デフォルトの名無しさん:2006/07/15(土) 21:58:44
俺は最初からレイヤの上下の一般的な話をしてるって何度言ったら分かる。
今回の細かい話をしてるんじゃなくて、
「上位のレイヤで普通に通信できてるなら下位のレイヤでもできてる」
って言い方が一般のレイヤの理屈と逆だって言ってるだけ。
※最終的に下位のレイヤの組み合わせでで通信できてるのは当たり前だが
 そんなことを言ってるんじゃない。

おれは最初からそういう部分の話をしてるだけ。

>そんなことあたりまえじゃないか。誰が「TCPやIPのレイヤでHTTPプロキシ越しに通信できる」
>なんて言った?レスよく嫁よw

>できるよ。つか、できなかったらおかしいじゃんよ。TCPはHTTP専用か?ww
>HTTPプロキシは文字通りHTTPプロトコル上での話し。TCPのレイヤとは何の関係もない。
>HTTPのレイヤで正常に通信できているなら、それより下のTCPやさらに下のIPのレイヤで
>通信ができていないわけがない。

おんなじことだろが。
HPを普通に見れてるがなんでプロキシ越しじゃないと断言できるんだよ。

てまあ今回の話がどうとかじゃなくて、俺が言いたかったのは、ただ単に
--
「上位のレイヤで普通に通信できてるなら下位のレイヤでもできてる」
って言い方が一般のレイヤの理屈と逆だって言ってるだけ。
--
てことだけ、それ以上のことじゃない。
NATとかのレベルの話もしてない。ただ上のことだけ。
620デフォルトの名無しさん:2006/07/15(土) 22:00:49
少なくとも>>590は全くの検討ハズレ
621デフォルトの名無しさん:2006/07/15(土) 22:09:52
多くのルータは自分のWAN側アドレス宛てのLAN側から来たパケットは遮断する
という機能を実装しています。
622デフォルトの名無しさん:2006/07/15(土) 22:15:01
要はポート空けろってこったろ。
もうレイヤの話はやめろ。うざい。
623デフォルトの名無しさん:2006/07/15(土) 22:28:41
通信の話自体がすれ違い。
その前にひどいまとめ方だな。
624588:2006/07/15(土) 22:36:32
いろいろアドバイスありがとうございました。

LAN内からは、外部から内部への確認、ができない
のは初めて知りました。素直に知り合い(B家)に
協力をあおぎます。

それと平行して、モデム、ファイアウォール等の
設定はせずにVB内だけでできるのか模索してみます。

ありがとうございました。
625デフォルトの名無しさん:2006/07/15(土) 22:40:21
>>619

 > 俺は最初からレイヤの上下の一般的な話をしてるって何度言ったら分かる。
 > 今回の細かい話をしてるんじゃなくて、

どうやら、おまいの言うところの「一般」の認識は、漏れとは激しく食い違ってるようだな。
それだけは了解したww

さっきからずっと漏れが言っている「通信」というのは、インターネット通信とかの
なにか一定のプロトコル上での通信のことじゃなくて、各々のレイヤにおける
プロトコル上での通信(パケットのやり取りもあれば、電気信号や電圧の変化の
ことだってあるだろう)のことだよ。そのような各レイヤでの「通信」が
正しく行われていなければ、それを土台にして積み上がっているレイヤでの
プロトコルに基づく通信は、当然実現し得ないはずだと言ってるんだよ。
だから逆に言えば、あるレイヤ上で動いているアプリでふつうに「通信」できているのなら、
それより下のレイヤはすべて各々の責任を果たしている(つまり「通信している」)と言える。
そういう意味のことを漏れは言っているわけ。
だから、
おまいが(おまいだよな?)>>607で、
 > 下位のレイヤでつながっているなら上位のレイヤはつながるといえるが、
 > 上位のレイヤでつながっていても下位のレイヤでつながるとはいえない。
と言っていることのどこが「一般的な」言い方なんだろうか?と思ったわけよ。
あるレイヤで通信できている(=つながっている)ことが、それより上のレイヤの
通信を保証するわけないだろうが。つか、できないだろうそんなこと。
626デフォルトの名無しさん:2006/07/15(土) 22:45:59
スレ違いどころか板違いの討論を相手が白旗を揚げるまで
延々と繰り返すスレはここですか?
627デフォルトの名無しさん:2006/07/15(土) 22:46:42
ま た V B 厨 か
628560:2006/07/15(土) 23:04:51
>>561
その最大行までスクロールの値が分からないのです
VScroll=0で最小行
最大行の値はなんなんでしょうか?
書いてる通り最大行数は起動毎に変動するので数を指定することはできません


>>562
行のコレクションとは?
629デフォルトの名無しさん:2006/07/15(土) 23:05:17
通信のレイヤに関する話で、
例えば端末同士がIPで通信できてるから、物理層でも端末同士で通信できてるはず。
なんてことは普通言わない。
レイヤの上下の話ってのはそういうレベルの話。
そしてごく当たり前に出てくる話。
それだけ。
630デフォルトの名無しさん:2006/07/15(土) 23:14:37
レイヤをNGワードにしたらすっきりしたw
631デフォルトの名無しさん:2006/07/15(土) 23:15:55
自分で突っ込んどいて何言ってんだか。
632デフォルトの名無しさん:2006/07/15(土) 23:19:45
>>629
「通信のレイヤに関する話」で「IP」とか「レイヤ」とか「物理層」とかの言葉を使うことが
「普通」じゃないと言うのなら、おまいの言う「レイヤの上下の話」ってのは、まったくもって
低レベルな話ってことになるなww
633デフォルトの名無しさん:2006/07/15(土) 23:23:22
どこをどう読んでそうなるのか理解できん。
634デフォルトの名無しさん:2006/07/15(土) 23:28:31
>>628
つ「DataRowCollection.Countプロパティ」

これからは、ヒントを元にぐぐるということを覚えたほうがいいよ。
635デフォルトの名無しさん:2006/07/15(土) 23:55:49
絶対に自分が言い負かさないと引き下がれないカスが多くて困るな、板違いだから失せろ
636デフォルトの名無しさん:2006/07/16(日) 00:20:21
>>634
DataGridViewには残念ながら使えません
637デフォルトの名無しさん:2006/07/16(日) 00:22:06
>>624
>>593
でローカルIPでは成功してるって言ってるんだからVBの問題じゃなくて
ルーターとファイアウォールの設定だけだと思うが
638デフォルトの名無しさん:2006/07/16(日) 00:31:43
だったら DataGridViewRowCollection か。
DataSourceからでもたどれるだろうしどうにでもなろう。

639デフォルトの名無しさん:2006/07/16(日) 00:34:29
コード上はRows.Countだけどな
640デフォルトの名無しさん:2006/07/16(日) 00:35:01
641デフォルトの名無しさん:2006/07/16(日) 00:37:40
ありがとうございました。
642デフォルトの名無しさん:2006/07/16(日) 00:38:47
>>640
DataGridView自体2.0にしかないよ。
643デフォルトの名無しさん:2006/07/16(日) 10:17:47
VB.NETでトランプゲーム(カードの配布はスロットのような感じ)を作っているのですが
例えば
1〜10(整数)に
英文字『J』を加えてランダムに表示させる時に
Label1.Text=((10*Rnd())+1)
↑をどう変形(付け加え)すれば良いでしょうか?
『予め要素を配列に格納して、取得した乱数とインデックスとを対応させれば良いかも』とはお伺いしたのですがよくわからずに
普通の(乱数を使わない)スロットのようにタイマーを使って
Val(123456789)の9の右にJを入れて、Right(1文字)+left(9文字)を使ってみるとエラーになります

また、そのJという英文字に11という数字(と同じ意味;同じ数の大きさ)を与えるには、どのようにすれば良いのでしょうか?

前者の質問も後者の質問も
Val(J)=11としたりJ=11としたり、それらを『Val(123456789)&』の後に付けたりしてもうまくいきません

どうかご指南の程をよろしくお願いします…
644デフォルトの名無しさん:2006/07/16(日) 10:47:10
Card クラス作って配列に格納。カードは完全なランダムじゃないしな。
表示は ToString のオーバーライド。
645デフォルトの名無しさん:2006/07/16(日) 10:51:12
あと、配列じゃなくてList<Card>とか使ったほうがいい
644じゃないけど
646643:2006/07/16(日) 11:05:15
>644
ご親切にありがとうございました!!
647643:2006/07/16(日) 11:07:53
>645
ありがとうございます!
はっきり言って、全く意味がわかりませんが、後は初心者スレで聞いて頑張ってみます。
648デフォルトの名無しさん:2006/07/16(日) 14:30:15
ヘルプには、RichTextBoxの入力文字数制限はMaxLengthでできると書いてありますが、
実際入力してみても全く制限してくれません。
Maxlength=100と設定しても、平然と何百行(何千文字)も表示されてしまいます。

本当はどこで限界文字数を設定できるのでしょうか?
649デフォルトの名無しさん:2006/07/16(日) 14:46:33
MaxLength はユーザからの入力の制限文字数
自前で操作するんだったら自前で考慮して操作
650デフォルトの名無しさん:2006/07/16(日) 14:54:17
あららなるほど
ありがとうございました
651デフォルトの名無しさん:2006/07/17(月) 22:01:59
ドラクエのスライム→スライムベス
の様に、画像の特定の色を別の色に変えて表示したいのですが、どうすればいいのでしょうか?

Dim oTargetImage As System.Drawing.Bitmap
Dim x, y As Integer
Dim c As System.Drawing.Color

oTargetImage = My.Resources.sample

For x = 0 To oMatchImage.Width - 1
For y = 0 To oMatchImage.Height - 1
c = oMatchImage.GetPixel(x, y)
If c = Color.FromArgb(255, 255, 255) Then
oMatchImage.SetPixel(x, y, Color.FromArgb(0, 0, 0))
End If
Next
Next

と書けばいいのかと思ったのですが、
「SetPixel は、インデックス付きピクセル形式のイメージに対してサポートされていません。」
というエラーメッセージが出ます。
652デフォルトの名無しさん:2006/07/17(月) 23:08:46
パレット形式のなら Palette 書き換えればいい話じゃね?
653651:2006/07/17(月) 23:38:05
>>652

Palettesクラスというものがあることを知りませんでした・・・
というわけで

Dim oColorPalettes As System.Drawing.Imaging.ColorPalette
Dim oTargetImage As System.Drawing.Bitmap

oTargetImage = My.Resources.sample
oColorPalettes = oTargetImage.Palette
For i = 0 To oColorPalettes.Entries.Length - 1
If oColorPalettes.Entries(i) = Color.FromArgb(255, 0, 255) Then
oColorPalettes.Entries(i) = Color.FromArgb(0, 0, 0)
End If
Next
oTargetImage.Palette = oColorPalettes
Me.PictureBox.BackgroundImage = oTargetImage

としてみたのですが、パレットが変わりません・・・。
試しに、
For i = 0 To oColorPalettes.Entries.Length - 1
oColorPalettes.Entries(i) = Color.FromArgb(0, 0, 0)
Next
としてみたのですが、やはり変わりません。画像表示部分に問題があるのでしょうか。
654デフォルトの名無しさん:2006/07/18(火) 00:24:27
最近VBの勉強を始めて、ごく簡単なゲームなら作れそうかも、と思ったので挑戦中です。
が、壁にぶつかってしまいました・・・
たくさんのラベルがあって、変数の値によってtextを変化させるラベルを選ぶようにしたいのです。
例えば変数Xに値が入っているとした場合、Label(X).text="略"
みたいな感じでラベルを指定したいのですが、どのような方法がありますか?
上は理想を簡単に書いただけなので、結果が同じであればかまわないのですが・・
今の自分の知識ではSelect文を使うくらいしか思いつかないのですが、非常に冗長になるのでもっと簡単に纏められる方法があると嬉しいのです。
宜しくお願いします。
655デフォルトの名無しさん:2006/07/18(火) 00:33:36
>>653
>             If oColorPalettes.Entries(i) = Color.FromArgb(255, 0, 255) Then
まずこの判断文を通ってるのか確認すれ。
そんな色がないとか実はパレット使ってないとか。

>>654
そもそもそんなに Label を並べるもんじゃないが。直に描画するのが一般的。
どうしてもやりたいなら事前に Label の配列つくっとけ。
656654:2006/07/18(火) 00:45:57
>655
どうも有難う御座います。作ろうとしているゲームってのはマインスイーパでして、Windows付属のものを参考にして出来るだけ似たものをと思っています。
マスの数を変更する方法がわからないので今はおいておいて、とりあえず10*10の100マス固定で作ろうと試みているのですが、
クリックしてマスの外見が押下されたようにする場合、Label以外のもので再現出来るのでしょうか?
もしLabelで良かったとしても、後学の為「直に描画」について教えて頂ければ幸いです。
何に対して直になのかって時点でわかりません・・・
657デフォルトの名無しさん:2006/07/18(火) 00:46:28
>>653
LoadしたImgaeを直接いじるんじゃなくて別にImageを作成してそこに色を変えて描画
658デフォルトの名無しさん:2006/07/18(火) 00:53:14
>>656
コントロールは「重い」から何百もコントロール並べたら描画の負荷も洒落にならない。
のででかいラベルあたりを一枚置いてその上で一コマ一コマ自前で描画していく。
Paint イベントを調べてみな。
659デフォルトの名無しさん:2006/07/18(火) 00:54:46
>>656
buttonにしとけば?
マインスイーパーは押したタイルから空いているタイルを、ずらっと
連鎖反転したり、隣接する爆弾の合計を表示したりする再帰処理がキ
モになるから、表示系でウンウンうなってるヒマはないと思うよ。
660デフォルトの名無しさん:2006/07/18(火) 02:38:36
そもそもColorは単純に比較しちゃいかん。
661デフォルトの名無しさん:2006/07/18(火) 05:27:45
ちょっと質問させてもらいます・・・

起動したフォーム以外の部分(デスクトップとか)を操作させないように
したいのですが、何か良い方法はあるのでしょうか?

今はdeactivateを使用して、ノンアクティブになった時点でフォームを閉じて
新しいフォームを開き直すようにしているのですが、なにぶん動きがみっとも
ないので・・・;
662651:2006/07/18(火) 07:51:06
>>655
通過していることは確認しております。

>>657
これはどうすればいいんでしょうか?
663デフォルトの名無しさん:2006/07/18(火) 08:42:50
いまどきパレットなんて使わなくても・・・
つペイント
664651:2006/07/18(火) 11:25:32
>>663
ペイントで画像の対象の色を別の色に描きかえて、別のリソースとして用意しておくということですか?
最終的に変える色を動的にする必要があるので、パレットを使って描きかえないといけないのです。
665デフォルトの名無しさん:2006/07/18(火) 11:29:53
Structure AA
 Structure BB
  Dim Name as String
 End Structure
End Structure
上記の構造体でAAの中のBBを定義する方法を教えてください。
例えばCなら
AA::BB c;
みたいな感じでBasicでの変数の定義方法を知りたいです。
666デフォルトの名無しさん:2006/07/18(火) 11:41:55
>>665
その構造体宣言はエラーになるが Dim c As AA.BB
667デフォルトの名無しさん:2006/07/18(火) 11:51:34
>>666
あ、すみません。
AAのなかでBBの変数はとってます。
ありがとうございました!!
668デフォルトの名無しさん:2006/07/18(火) 12:05:17
さきほどの構造体入れ子の宣言はうまくいきました。
ありがとうございます。
もう1つ質問なのですが、フォームのNewコンストラクタの引数を取り
それをButtonイベント等でその引数に値を入れて返す方法はどうすればいいのでしょうか?
例えば引数が構造体だとすると

Dim aa As New BB  ←構造体
Dim from As New Form2  ←フォーム
form.Show()

Form2にとりあえず変数宣言
Dim cc As BB

Form2のNew
Public Sub New( ByRef aa As BB )  ←ByRefでいいのかわからないけど・・
 cc = aa
End Sub

Private Sub Button_Click(・・・)
 ここでccに値をいれるとNewの引数のaaに値が入るみたいな・・
End Sub
669デフォルトの名無しさん:2006/07/18(火) 12:36:06
>>668
そういう使い方をするならクラスにしたほうがいいと思うが。
構造体でなきゃいけない理由があるの?
670デフォルトの名無しさん:2006/07/18(火) 12:36:35
>>668
参照型と値型の違いについて勉強する。
それが理解できてないうちはそういうことは考えない方が身のため。

っていうか、あんた多分まだ人に質問をしようって段階じゃないだろ。
基本すら押さえずに人に質問しまくっても埒明かないし物にならんよ。
671デフォルトの名無しさん:2006/07/18(火) 13:14:51
>>669
フォームはクラスじゃないんですか?
>>670
そんなことお前に言われる筋合いはない。
知らないならレスしないでくださいよ。
どこにでも荒らしはいるんだなあ
672デフォルトの名無しさん:2006/07/18(火) 13:28:59
参照渡しするんだったらBBを構造体ではなくクラスにしたほうがいいってことでしょ
ここで逐一質問するよりとりあえず入門書くらいは終えようよ
673デフォルトの名無しさん:2006/07/18(火) 14:15:51
VBやC#で型値を表すキーワードにStructを使ったのは失敗だよな。
素直にValueTypeにすればよかったと思う。誤解する人間が多すぎる。
674デフォルトの名無しさん:2006/07/18(火) 14:50:30
その点C++/CLIのref classとvalue classは良いね
675デフォルトの名無しさん:2006/07/18(火) 15:10:44
親切な回答もされてるのに全然通じてないみたいだから時間の無駄だね。
ケケケ
676デフォルトの名無しさん:2006/07/18(火) 16:52:03
VB2005Expressを使っています。
リッチテキストボックスにファイルをドロップできるようにする方法を探して、
http://msdn2.microsoft.com/ja-JP/library/fkw1hc6t.aspx
このページにたどり着いたのですが、RichTextBoxのプロパティにAllowDropがありません。
DragDropイベントも無いです。どうしたらそれらの項目が表示されるのでしょうか?
677デフォルトの名無しさん:2006/07/18(火) 17:28:27
>>676
RichTextBoxのDragDrop関係のメンバはデザイナから見えないようになっているので
自分でコードを書く必要がある。
AllowDropはフォームのコンストラクタかLoadイベントでTrueにする。
イベントはコードエディタの上にあるクラス名とイベントのコンボボックスから
選択すればハンドラが作られる。
678651:2006/07/18(火) 18:01:22
自己解決しました。役にはたたないかもしれませんが、情報を載せておきます。
>>653のソースの
Me.PictureBox.BackgroundImage = oTargetImage

Me.PictureBox.Image = oTargetImage
に変えると上手くいきました。
どうもありがとうございました。
679676:2006/07/18(火) 18:01:28
>>677
ありがとうございます! やってみます!
680676:2006/07/18(火) 18:18:36
>>677
できました! ありがとうございました。

なんでこんな隠し設定みたいになってるんでしょうね。
何か思想があるのか…
681デフォルトの名無しさん:2006/07/18(火) 18:30:04
ComboBoxで選択された文字列を取得して、String型の変数に入れたいのですが
DataRowView型はString型への変換は無効ですと出てしまいます。

Dim str As String
str = ComboBox1.SelectedItem

どう変更を加えたらComboBoxで選択された文字列を取得することができるでしょうか。
682デフォルトの名無しさん:2006/07/18(火) 18:33:15
>>681
ComboBox1.Text
じゃダメ?
683681:2006/07/18(火) 18:34:06
すいません自殺モノの勘違いをしていました。
申し訳ない。
684681:2006/07/18(火) 18:35:30
>>682
まさにその通りでした。スレ汚し申し訳ないです。
685682:2006/07/18(火) 18:36:43
>>684 質問スレなんだから気にしないで!
686デフォルトの名無しさん:2006/07/19(水) 10:29:40
名前空間とクラスの階層図ポスターってどこかにありませんか?
687デフォルトの名無しさん:2006/07/19(水) 11:10:37
DataGridViewのCurrentCellChangedイベントにプログラムを書いているのですが、
グリッドにデータを表示したときに必ず
System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。
と言うエラーが出ます。

一応Try〜Catchで抜けたらそのまま動くのですが、
根本的に回避するにはどうすればいいんですか?
688デフォルトの名無しさん:2006/07/19(水) 11:42:01
>>687
エラーを出す行には、どんな記述があるのかな?
689デフォルトの名無しさん:2006/07/19(水) 12:01:17
>>688
データテーブルの内容をグリッドに表示しているだけなんです。
690デフォルトの名無しさん:2006/07/19(水) 12:31:03
>>689
と、思っているだけかもしれないから、具体的にコードを出してくれ。
グリッドとテーブルのリンクはウィザードでやった? それとも直打ち
コードでやった?
691デフォルトの名無しさん:2006/07/19(水) 13:28:35
了解です。ちょっとお待ちを。
692デフォルトの名無しさん:2006/07/19(水) 14:09:03
>>690
フォームにはdatagridviewコントロールだけ
Public Class Form1
Private Sub DataGridView1_CurrentCellChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView1.CurrentCellChanged
Try
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim ds As New DataSet("test")
Dim dt As DataTable
Dim dr As DataRow

dt = ds.Tables.Add("table")

dt.Columns.Add("A", Type.GetType("System.String"))

dr = dt.NewRow
dr("A") = "ほげほげ"
dt.Rows.Add(dr)

DataGridView1.DataSource = dt

End Sub
End Class

ごめん。サンプル作ったんだけど普通にエラーが出ずに動くなぁ
もう少し試行錯誤してみます。ありがとうございました。
693337:2006/07/19(水) 15:59:35
DataGridView で列や行のヘッダ行を複数にすることはやっぱり不可能でしょうか?
694デフォルトの名無しさん:2006/07/19(水) 16:05:07
ButtonのClickイベントをコードで呼ぶ場合にSystem.EventArgsには何を入れればいいですか?
695デフォルトの名無しさん:2006/07/19(水) 16:09:22
System.EventArgs.Empty
696デフォルトの名無しさん:2006/07/19(水) 16:12:30
>>695
できました。ありがとうございます
697デフォルトの名無しさん:2006/07/19(水) 16:32:48
フォームのLoadイベントでTextBoxにフォーカスを移動したいのですがなってくれません。
ひょっとしてLoadイベントではダメなんですか?
698デフォルトの名無しさん:2006/07/19(水) 16:43:42
Shownイベントでできました。
699デフォルトの名無しさん:2006/07/19(水) 17:07:30
>>694
Button.PerformClickメソッド呼べばいいんじゃないか?
700デフォルトの名無しさん:2006/07/19(水) 17:36:52
>>699
うっ、そんな便利なメソッドがあったんですか・・・
701デフォルトの名無しさん:2006/07/19(水) 17:52:43
そういう便利なメソッドとかクラスを探し出すにはどうすればいいですか?
702デフォルトの名無しさん:2006/07/19(水) 17:57:56
つMSDN
703デフォルトの名無しさん:2006/07/19(水) 18:05:11
つGoogle
704デフォルトの名無しさん:2006/07/19(水) 18:52:29
つテンプレ
705デフォルトの名無しさん:2006/07/19(水) 20:36:21
つツンデレ
706デフォルトの名無しさん:2006/07/19(水) 22:40:39
>>698
ActiveControlだったかに設定してもいい。
707デフォルトの名無しさん:2006/07/20(木) 01:27:50
VB2005です。
まだあまり詳しくないので質問したいのですが
何かアプリケーションを開いたときにタスクバーにそのアプリケーションのキャプション?の部分が出ますよね?
それをVBで作ったプログラムからアプリケーションを閉じずにそのアプリケーションだけを
タスクバーから取り除くといったものはつくれますか?
VBでやる必要はないといわれればそのとおりなんですが

わかり辛い文章で申し訳ないです
708デフォルトの名無しさん:2006/07/20(木) 04:29:26
それを実現してどんな意味があるの
709デフォルトの名無しさん:2006/07/20(木) 04:41:21
指定座標のRGB取得したいんだけど、-1とか意味不明な数値が返ってくる><
どこが悪いかご指摘願いたいです。

Public Class Form1
Public Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Integer, ByVal yPoint As Integer) As Integer
Public Declare Function GetDC Lib "user32" (ByVal hwnd As Integer) As Integer
Public Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Integer, ByVal hdc As Integer) As Integer
Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Integer, ByVal x As Integer, ByVal y As Integer) As Integer

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim hTargetWin As Integer
Dim hTargetDC As Integer

hTargetWin = WindowFromPoint(20, 20)

hTargetDC = GetDC(hTargetWin)

Dim colorA As Int32

colorA = GetPixel(hTargetWin, 20, 20)

MsgBox(colorA)
ReleaseDC(hTargetDC, hTargetWin)
End Sub
End Class
710デフォルトの名無しさん:2006/07/20(木) 08:24:02
なんで人に聞く前にMSDN読んだりしないのかな。
池沼だろうか

普通Win32APIの戻り値がおかしいと思えば、戻り値の意味を確認するだろ
つまり君は普通じゃないってことだ
711デフォルトの名無しさん:2006/07/20(木) 12:40:39
GetPixelが-1で返ってくるのは良いがその前にWindoFromPointやGetDCの戻り値が正しいのか検証した?
712デフォルトの名無しさん:2006/07/20(木) 12:59:32
みんな人に聞くのと自分で調べるのと平行してやってると思うよ。
すこしでも早く答えが知りたいから。
713デフォルトの名無しさん:2006/07/20(木) 13:27:31
× すこしでも早く
○ すこしでも楽に
714デフォルトの名無しさん:2006/07/20(木) 16:10:20
TabControlのSelectingイベントをコードから呼ぶ方法を教えてください
715デフォルトの名無しさん:2006/07/20(木) 16:37:00
VisualBasic2005+SqlServer2005にて開発をしています。

先日、会社の先輩より、データベースのアクセスにはデータアクセスのコンポーネント(DACとかいってました)を
実装して、そのデータアクセスコンポーネント経由で使うものだといわれました。

このデータアクセスコンポーネントとは何なのでしょうか?
今まで、書籍やインターネット上で勉強した時は、DataSet(xsd)を使って、TableAdapterを使って
データの参照や登録・変更・削除をしていました。

データアクセスコンポーネントとは、このDataSetやTableAdapterの事なのでしょうか?
それとも全く別物?
また、このデータアクセスコンポーネントを使うメリットって何なのでしょうか?
716デフォルトの名無しさん:2006/07/20(木) 16:57:53
>>715
データアクセスコンポーネントとは、このDataSetやTableAdapterの事なのでしょうか?
あたりまえやん

メリット?VBではそれなしにデータベースにアクセスできないだろ
いや、できるか知らんけどめちゃくちゃコードが長くなりそう
717715:2006/07/20(木) 17:05:44
>>716
>>データアクセスコンポーネントとは、このDataSetやTableAdapterの事なのでしょうか?
>あたりまえやん

私も最初、そうかと思ったのですが、どうやら違うらしいのですよ。
データアクセスコンポーネントと呼ばれるクラスライブラリを実装するらしいのです。
でもって、そのクラスライブラリでデータベースとのやり取りを一本化して、
アプリケーション側では直接データベース(この場合だとDataSetTableAdapterだと思います)を
使用せず、このデータアクセスコンポーネント経由で行うらしいのです。

2階層がどうとか3階層がどうとかも言っていました。

正直、今書いてる内容も、言われて覚えているだけなので、
何を言っているのかは意味不明な状態です。
718デフォルトの名無しさん:2006/07/20(木) 17:28:00
>>717
DTO(data transfer object かな)のことじゃないの?
719デフォルトの名無しさん:2006/07/20(木) 18:39:34
少なくとも間違いなくそれは違う。
720デフォルトの名無しさん:2006/07/20(木) 18:43:23
>715
会社の先輩なんだろ
納得いくまで聞けばいいのでは?

うちでもデータアクセス用のクラスを作ってそこで管理してる
メリットと言えるかどうかわからないが、DBへのアクセス関係を纏めることで
DB関連のコードが変更になっても対応が容易

あと結構へのアクセスはよく似た処理が多いから纏めてる
721デフォルトの名無しさん:2006/07/20(木) 18:45:35
うまく書き込めてなかった

>720
誤)あと結構へのアクセスはよく似た処理が多いから纏めてる

正)あとDBへのアクセスは結構よく似た処理が多いから纏めてる
722175:2006/07/20(木) 20:41:10
>>720
納得いくかどうかで言えば、納得できていませんが、
何が納得できないかというと、メリットが感じられないのです。

>うちでもデータアクセス用のクラスを作ってそこで管理してる
>メリットと言えるかどうかわからないが、DBへのアクセス関係を纏めることで
>DB関連のコードが変更になっても対応が容易

この部分については分からないでは無いのですが、逆にデメリットでは?と感じています。
というのは、書籍やインターネット上にあるような1つのExeファイルで
しかも、データベースのテーブルもマスタ系を含めて10テーブルぐらいならいいのですが、
業務系にもなると、画面数にして数百、データベースのテーブルもViewを含めれば
100、200当たり前になります。

この部分の、色々な条件でのデータベース処理をクラスとして実装するとなると、
工数が掛かって仕方ないと思うのですが?

>あと結構へのアクセスはよく似た処理が多いから纏めてる

具体的には、どういった処理なのでしょうか?
IDや条件などの引数を受け取って、DataSetやTableAdapterを返すのでしょうか?
(DataGridViewやその他コントロールのDataSourceと関連付けるのが多いと思うのですが・・・)
723707:2006/07/20(木) 21:36:31
>>708
意味があるかといわれると何ともいえませんが
常駐して使ってる(例えば音楽ソフト)とかランダム+ループとかの場合あんまりウィンド操作しないので
タスクバーを占領してると他のウィンドをたくさん開いたときに邪魔になってくるから便利かなぁと思いついたんですが
中々思うような感じのが見つからなくて
724デフォルトの名無しさん:2006/07/20(木) 21:51:23
725707:2006/07/20(木) 22:21:32
>>724
!!
こんなものがあったのですね・・
まさにこういうものが作りたかったんです
VBでも出来るのでしょうか?
726デフォルトの名無しさん:2006/07/20(木) 22:25:30
あんまりVBでやることじゃねぇな
そりゃAPI呼べるんだから不可能ではないけど
727デフォルトの名無しさん:2006/07/20(木) 22:32:33
あまり詳しくないというレベルの人には無理だと思う
728707:2006/07/20(木) 22:33:25
>>726
VBでやるべきようなことじゃないのはなんとなく自分でも・・
APIも色々WinAPI Database for VB Programmerさんなどで見てみたんですがまだまだ調べるのが足りなかったみたいです。
不可能ではないとのことなのでもう少し頑張ってみようかと思います。

>>727
私の技術的に無理でも実現が出来るという例が分かったので少し勉強してみようと思います
729デフォルトの名無しさん:2006/07/21(金) 11:33:37
VIPで聞いたけどやっぱりわからんかった・・・当たり前か。

UNIX時間を○年○月○日のフォーマットになおしたいのですが、
どういう関数書いたらいいのでしょう。
Excel上で直すやり方は探したらあったんだけど・・・

例:1151783570.171 → 2006/07/01

730デフォルトの名無しさん:2006/07/21(金) 11:49:45
教えてください。
構造体のサイズを測りたいのですが構造体では配列の初期サイズを宣言できないので
例えば Dim aa() as Byte などと定義して、コンストラクタでReDimでサイズを指定しても
SizeOfで見るとやはりポインタ?分しか計算されません・・
そこで、構造体内で初期サイズを指定するかReDim等でサイズを確保した分も
計算する方法を教えてください
731デフォルトの名無しさん:2006/07/21(金) 12:39:20
>>729
もしかしたらそのままズバリがあるかもしれないが計算で出すならこう。
Dim unixDate As DateTime
unixDate = New DateTime(1970, 1, 1).AddSeconds(1151783570.171)
732デフォルトの名無しさん:2006/07/21(金) 13:11:10
VS2005を使っているのですが、
VB2005でMP3を再生することは可能でしょうか?
VB6のは検索で見つかられたのですが、2005のが見当たらなかったので・・・

ご教授よろしくお願いいたします。
733デフォルトの名無しさん:2006/07/21(金) 14:50:00
>>731
Sugeeeeeeeeeeeee!!!!!!!!

どうもありがとう!!!!
734デフォルトの名無しさん:2006/07/21(金) 14:50:58
構造体(同じもの)を比較するにはどうしたらいいでしょうか?
735デフォルトの名無しさん:2006/07/21(金) 15:19:21
>>734がエスパーを探しています
736デフォルトの名無しさん:2006/07/21(金) 16:04:56
>>732
My.Computer.Audio
MP3対応だったと思うけどなぁ。
737デフォルトの名無しさん:2006/07/21(金) 17:14:43
>>736
ご回答ありがとうございます

試してみたところMy.Computer.Audioはwavのみのようでした。
何かほかに良さそうな方法があればよろしくお願いしますm(_ _)m
738720:2006/07/21(金) 17:41:51
>722
答えになってないかもしれないが...

>この部分の、色々な条件でのデータベース処理をクラスとして実装するとなると、
>工数が掛かって仕方ないと思うのですが?
それは設計の良し悪しだと思うよ
少なくともうちでは効率的にやれていると思いたい

あなたが言ってるように100,200のテーブルやビューを扱うからこそ纏めておかない
と収拾つかなくならないか?

例えばDBのプロバイダが変更になったとか、DataReaderを使っていたものを
DataSet(DataTable)で返す必要が出てきたなんてことになったらどうしてるんだ?
739デフォルトの名無しさん:2006/07/21(金) 18:56:31
>>737
VB6と同じようにやればいいんじゃないの?
740デフォルトの名無しさん:2006/07/21(金) 20:21:45
>>730
その値を何に使うかによっても解決方法が変わるんだが。
取りあえず MarshalAs を調べれ。
あと SizeOf で見るってのは一般に意味不明だ。そんなキーワードないし。分かるけどな。
741715:2006/07/21(金) 20:36:28
>>738
>それは設計の良し悪しだと思うよ
>少なくともうちでは効率的にやれていると思いたい

是非、一例としてご教示頂きたいです。

>あなたが言ってるように100,200のテーブルやビューを扱うからこそ纏めておかない
>と収拾つかなくならないか?

特別、苦労はしていません。

>例えばDBのプロバイダが変更になったとか、DataReaderを使っていたものを
>DataSet(DataTable)で返す必要が出てきたなんてことになったらどうしてるんだ?

開発規約として、DataReaderは一切使いません。(今まで使った事すら無いです)
またDBプロバイダも会社としてOracleしか認めていませんので
RDBMS自体が変更になる事は無いです。(今まで10年以上、Oracleだけだそうです)

また、ドライバ自体もOracleクライアントのインストールする必要もない
サードパーティ製のドライバ(当然 .NET対応)を使用していますが、
過去のバージョン(Oracleバージョンアップや.NET1.1から2.0への変更)からの
バージョンアップもソースコード1行も変更無しで対応しております。
742デフォルトの名無しさん:2006/07/22(土) 00:28:31
DataGridViewの行ヘッダ部分のカレントレコードを示す
三角マークを非表示にしたいのですが、どうしたらいいか分かりません。
もしよい方法があれば、ご教授よろしくお願いいたします。
743デフォルトの名無しさん:2006/07/22(土) 00:51:32
縦長で不透明なラベルを上に貼って隠す。
744デフォルトの名無しさん:2006/07/22(土) 05:31:38
DataGridの行の高さって変更できるんですか?
低すぎて窮屈です
745デフォルトの名無しさん:2006/07/22(土) 15:35:35
つ「PreferredRowHeight」
746デフォルトの名無しさん:2006/07/22(土) 16:22:49
どうしても分からない部分があるので教えてください
初心者なんですが

pictureboxで画像を出して、もう一個それより小さい画像を出して
小さいほうの画像を、大きいほうの画像の上を
ある地点からある地点まで動かしたいのですが
その式?みたいなのがよくわかりません。
その場所についたら止まってくれるみたいなものを作りたいのですが・・・
747デフォルトの名無しさん:2006/07/22(土) 17:01:43
ご搭乗のお客様の中にエスパーの方いらっしゃいませんか?
748デフォルトの名無しさん:2006/07/22(土) 17:49:05
TimerのTickイベントでちょっとづつ位置を更新
計算は中学の数学を思い出せ
749デフォルトの名無しさん:2006/07/22(土) 18:06:22
>>748
TimerのTickが関連しているのを自分で見つけたときはうれしかった(ショボ
もう23時間くらい考え中・・・、どしましょう・・・^^;
あぁぁあ時間がない!位置を更新・・・X・・Yをか・・?
うぅぅう、もう無理だよぉ;;
750デフォルトの名無しさん:2006/07/22(土) 18:21:44
If PictureBox2.Left > 75 And PictureBox2.Top > 30 Then Timer1.Enabled = False
PictureBox2.Left = PictureBox2.Left + 1
PictureBox2.Top = PictureBox2.Top - 1
こんなことしたら、とりあえず斜め上に移動してくれるようになったw
けど・・・

ラジオボタンで出発地点と 到着地点を作って
出発地点を 福岡として 到着を広島とすると そこまで移動するようにはできた
ただ、他の出発地点の場合は、このような座標移動を行ってほしいんだけど・・IF?使うのかな
なーんかわけわからなくなってきた
751デフォルトの名無しさん:2006/07/22(土) 18:24:37
X方向距離 = 目標のX座標 - 出発点のX座標
Y方向距離 = 目標のY座標 - 出発点のY座標
X方向速度 = X方向距離 / 適当な値
Y方向速度 = Y方向距離 / 適当な値(上と同じ値にする)

で、TickイベントでX座標とY座標にそれぞれX方向速度とY方向速度を加算。
X方向とY方向に実際に移動した距離がそれぞれX方向距離とY方向距離を超えたら終了。
752デフォルトの名無しさん:2006/07/22(土) 19:14:45
おいおい頭弱いな
753デフォルトの名無しさん:2006/07/22(土) 19:19:57
>>752
ほんとごめんなさい、私頭悪いのですよ

>>ラジオボタンで出発地点と 到着地点を作って
出発地点を 福岡として 到着を広島とすると そこまで移動するようにはできた
ただ、他の出発地点の場合は、このような座標移動を行ってほしいんだけど・・IF?使うのかな
なーんかわけわからなくなってきた

これ日本語おかしいです(自分で言うか・・・w
結局、どの地点から出発しても同じ動きしかしてくれない。
出発地点別にそれぞれの座標移動を行ってほしい・・・・・という内容でした
ただ、なんというか・・・誰かサンプルつくってください(挫折
754デフォルトの名無しさん:2006/07/22(土) 19:35:34
>>753
出発地と到着地を指定して、その間を移動したいってことか?

始点と終点の座標をPoint型にでも入れておいて、各XYを評価。
出発<到着なら加算、逆なら減算で座標を増減すればいい。
755デフォルトの名無しさん:2006/07/22(土) 19:39:11
釣りか?
756デフォルトの名無しさん:2006/07/22(土) 19:51:10
>>754
そのとおりです、指定して移動したいのです・・・・
point型って何でしょう・・・・XY評価・・・5段階評価?←シネ
ほんとすみません・・・ヘタレで
そのコードを晒したりしてくれたりはどうでしょうOrz

>>755
つられたい気分ですが、残念ながらマジです
757デフォルトの名無しさん:2006/07/22(土) 19:55:14
>>754
すみません、また質問ですけど

IF ラジオボタン1クリックして ラジオボタン2クリックしてあったら then
画像1は PictureBox2.Left > 75 And PictureBox2.Top > 30 Then Timer1.Enabled = False
とかなコードってできます・・・?
758デフォルトの名無しさん:2006/07/22(土) 20:45:28
かなコードはunicodeだと思うがなんの関係が
759デフォルトの名無しさん:2006/07/22(土) 20:53:12
ひまわりやなでしこで作れ
760デフォルトの名無しさん:2006/07/22(土) 20:59:52
こんばんは。VB.NETを最近勉強し始めました。
インターネットで色々なコードをみてワクワクしてます。
色々いじって遊んでいるのですが、エクセルファイルの
セルの文字列や数値といった情報をテキストボックスに表示するような
プログラムを作ってみようと、ここ3日程いろいろ情報を探しているのですがうまくいきません。

一番行けそうだな、とと思ったのが下記のサイトなのですが
ttp://www.bcap.co.jp/hanafusa/VBHLP/dao_002.htm
(人様のコードを張ってよいものかどうか迷いましたので張って問題なさそうであれば貼りなおします)

これを貼り付けてデバッグ開始しますと、

Set DB = OpenDatabase(xlFileName, False, False, "Excel 8.0;HDR=NO;")
というところで OpenDatabaseが宣言されていない

MyData = MyData & .Fields(0) & vbTab & .Fields(1) & _
                     vbTab & .Fields(2) & vbCrLf
の部分で 演算子'&'は型'String'およびDAO.Fieldに対して定義されていません。

といった二つのエラーが出てしまいます。

環境はWindowsXP Visual Basic Express Edition 2005 とExcel2000でやっています。
デバッグの段階でエラーが出るという事はExcelは関係ないかと思ったのですが…。

(1)このコードをどのように修正すれば動きそうか
(2)DAOの勉強をするのにコードと実行例などが豊富なよいサイトなどないか

以上2点についてアドバイスいただけないでしょうか?
761デフォルトの名無しさん:2006/07/22(土) 21:07:14
>>760
そのサイトの内容を試してみたいならこっちだねぇ
>VBプログラマ質問スレ(6.0以前) Part49
762デフォルトの名無しさん:2006/07/22(土) 21:09:11
>>760
それはVB6用のコード
VB.NET用のコードは別にあるのでそのサイトのトップから辿るように
763デフォルトの名無しさん:2006/07/22(土) 21:21:03
>>761氏 >>762

お二人ともどうもありがとうございます。
検索している中で.NETになってからの移行がどうのという記事を
数多く見て、判断が付かず質問にいたったところでして大変助かりました。

これからご指摘の通りトップから見直してみようかと思います。
764デフォルトの名無しさん:2006/07/22(土) 23:53:04
>>745
ありがとうございます

最初
DataGrid1.PreferredRowHeight=2*DataGrid1.PreferredRowHeight
とかやっても全然ダメで泣きそうになりましたが
ヘルプで解決しました

MyTblStyl.PreferredRowHeight =
765742:2006/07/23(日) 01:22:16
>>743
ありがとうございます。
アイコンの表示を消すくらい簡単にできるだろうと思っていたのですが、
探し方が悪いのか、非表示す方法が見つけられず困っていました。
一度その方法で試してみたいと思います。
766760:2006/07/23(日) 03:04:47
再び失礼します。先ほどご指摘いただきました通り
こちらのサイト
http://hanatyan.sakura.ne.jp/dotnet/Excel01.htm#no2

を参考にしまして、どうすればよいかと考えてきました。
コード中に
xlRange = xlSheet.Range("A5:A7")
とありまして、ここはA5からA7までを選択するのだろうと予想は付いたのですが
これを例えばA5一つのセルを選択の範囲としてテキストボックスへ表示するには
どのようにすればよいでしょうか?まったく分からないなりに

TextBox1 = xlSheet.
このような形になるのではないかと思いまして
TextBox1 = xlSheet.Cells.Value
などと色々試しては見るのですが当然のことながら上手くいきません。

何かヒントをいただけないでしょうか?
767デフォルトの名無しさん:2006/07/23(日) 07:43:09
directXを使ったプログラムが起動しなくなってしまった。
最新版を入れ直してもだめです

どうしたらよいか、だれか教えてください
768デフォルトの名無しさん:2006/07/23(日) 08:01:16
エスパーの投入を要求します!
769デフォルトの名無しさん:2006/07/23(日) 08:13:56
770エスパー伊東:2006/07/23(日) 08:40:15
>>766
花ちゃんのとこかぁ。相変わらず参照カウンタやGCのことはよく理解してないねぇ。

xlSheet.Range("A5").Value.ToString()
Rangeが複数セルの場合は object ( , ) で値が戻って来てさらに添え字が1から開始だからちょっと迷う。
Dim str As Object( , ) = xlSheet.Range("A1:B1").Value
str(1, 1).ToString
771766:2006/07/23(日) 09:36:38
>>770

おおお!ありがとうございます!全く意図どおりに動きました!!
実はVB導入から1週間これで悩んでいまして…orz
助かりました。どうもありがとうございます。
分かっていただけないとは思うのですが非常に感動してます!!!

後半3行については普通に考えるとB2の値が戻ってきそうだけれども
括弧内のカウントが1から始まる為この場合A1をさすという事ですかね?
B2を指すときは(2,1)ではなく(1,2)とすればよい。この推察であっていますか?
772デフォルトの名無しさん:2006/07/23(日) 10:12:14
>>770
そのRangeはReleaseComObjectしなくていいの?
773デフォルトの名無しさん:2006/07/23(日) 10:51:48
>>771
A1:B2 でRangeをとった場合
A1 (1, 1)    B1 (1, 2)
A2 (2, 1)    B2 (2, 2)

>>772
早期に開放したいならReleaseComObjectを使う。
GCに任せる場合は、いつ開放されるかわからないということと、
アプリの終了時に残っているオブジェクトはGCされないことに注意。
GC.Collectを呼ぶならその前に参照が確実に外れていることを確認。
あとはインプロセスサーバーならあんまり気にしなくていいといったっところかな。
774デフォルトの名無しさん:2006/07/23(日) 11:39:12
>>773
>早期に開放したいならReleaseComObjectを使う。
>GCに任せる場合は、いつ開放されるかわからないということと、

間違い。

COMを使用した場合、ReleaseComObjectを呼ばれない限り永久に開放されない。
(タスクマネージャに何時までもExcelが残る)
775デフォルトの名無しさん:2006/07/23(日) 13:00:11
>>774
>アプリの終了時に残っているオブジェクトはGCされないことに注意。 
いつまでも残ってるのはこのケース。これはたとえ参照を外していても発生しえる。

COMへの参照を完全にはずしたあとGCが発生するような処理をしてみるとExcelが終了するのが見えるはず。
776デフォルトの名無しさん:2006/07/23(日) 13:29:35
>>775
言ってる事分かってる?

>早期に開放したいならReleaseComObjectを使う。
>GCに任せる場合は、いつ開放されるかわからないということと、

に対して、間違ってるって言ってるの。
GCでCOMは開放されないから、『GCに任せるという表現自体』がおかしい。
(お前さんの表現だと、GCにてCOMがReleaseComObjectを呼ばないでも開放されると誤解を生む)

>COMへの参照を完全にはずしたあとGCが発生するような処理をしてみるとExcelが終了するのが見えるはず。

COMへの参照を完全に外す為にReleaseComObjectを使うんだろが。
だから、1つでもReleaseComObjectを忘れるとGCが発生しようがなんだろうが
Excelがタスクマネージャに残ったままになるんだろ。
777デフォルトの名無しさん:2006/07/23(日) 14:38:41
>>776
こういう風に思ってる人多いけどそんなことないよ実際は。
少なくとも参照設定してレイトバインディングでコード書けば。
論より証拠試せばすぐわかるから。
778777:2006/07/23(日) 14:42:04
すまんレイトじゃない方だね
779デフォルトの名無しさん:2006/07/23(日) 14:52:16
http://www.microsoft.com/japan/msdn/enterprise/pag/scalenetchapt07.asp#scalenetchapt07_topic9

主にCOM+について書いてあるが、同じアウトプロセスサーバだからExcelにも同じことが言えると考えていい。
ReleaseComObjectを使うべきときとそうでないときがきちんと書いてある。
Disposeを呼ぶべきかGCに任せるかの議論に似てて、
ReleaseComObjectを使った方がいいケースが多いのは確かだが、
けしてGCでは開放されないという話ではない。
780デフォルトの名無しさん:2006/07/23(日) 15:00:02
暗黙のCOM参照の話だな
781デフォルトの名無しさん:2006/07/23(日) 15:04:42
782デフォルトの名無しさん:2006/07/23(日) 15:15:42
>>777-779
本当にGCでCOMが解放されるのか疑問に思って実験してみた。

実験1:
全部のCOMオブジェクトをUSINGで囲んでみた。
結果1:
COMオブジェクト解放されず。

実験2:
GCを明示的に呼び出す。(GC.Collect)
結果2:
COMオブジェクト解放されず。

本当にGCで解放されるの?
783デフォルトの名無しさん:2006/07/23(日) 15:33:19
>>782
長くなるけどサンプルコードあげてみるよ。意見が分かれるときは環境によって違うとかあるから試してもらえるとうれしい。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim excelApp As New Excel.Application
excelApp.Visible = True
Dim excelBooks As Excel.Workbooks = excelApp.Workbooks
Dim excelBook As Excel.Workbook = excelBooks.Add
Dim excelSheet As Excel.Worksheet = excelBook.ActiveSheet

Dim excelRange As Excel.Range = excelSheet.Range("A1", "B2")
excelRange.Value = New Object(,) {{"hello", "bye"}, {"hello2", "bye2"}}

Dim excelRange2 As Excel.Range = excelSheet.Range("A1:B2")
Dim str As Object(,) = excelRange2.Value
Debug.WriteLine(str(2, 2).ToString)
excelBook.Close(False)
excelApp.Quit()

System.Runtime.InteropServices.Marshal.ReleaseComObject(excelRange2)
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelRange)
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelSheet)
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelBook)
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelBooks)
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp)
End Sub
-- ここまで
excelApp.Quit() を入れ忘れると何をやってもEXCELのインスタンスはあがったままになるから注意ね。
GC.Collectは同じ参照が完全に外れるようにFormClosedに入れといいと思います。
784デフォルトの名無しさん:2006/07/23(日) 15:39:41
>>783
ReleaseComObjectを呼んだら実験の意味が無いんじゃないですか?
ReleaseComObjectを呼ばずにGCで解放されるかが実験の目的だと思うのですが?
785デフォルトの名無しさん:2006/07/23(日) 15:44:13
>>784
テスト1:比較のためReleaseComObjectで実行
テスト2:ReleaseComObjectをコメントにして実行、フォーム閉じるでアプリ終了。
テスト3:ReleaseComObjectをコメントにして実行、別のプロシージャでGC.Collectを実行

うちの環境だとテスト2でもEXCELのインスタンスは落ちる。
786デフォルトの名無しさん:2006/07/23(日) 16:00:13
>>785
テスト3は?
787最凶VB厨房:2006/07/23(日) 16:01:57
dokidokiwakuwaku
788デフォルトの名無しさん:2006/07/23(日) 16:03:18
もっと実験方法を単純化できるでしょ。
例えば予めタスクマネージャを立ち上げておいて次のコードを走らせると、
次のことが確認できる。

(1) プログラムを起動したままエクセルを閉じてもエクセルのインスタンスはのこっている。

(2) しかし次にプログラムを終了すると、エクセルのインスタンスも同時に消滅する。


'予めExcelへの参照設定されている必要がある
Imports Microsoft.Office.Interop

Public Class Form1
  Dim mXL As Excel.Application

  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    mXL = New Excel.Application
    mXL.Visible = True
  End Sub
End Class
789デフォルトの名無しさん:2006/07/23(日) 17:33:53
Imports Microsoft.Office.Interop

Public Class Form1
  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    ExcelTest()
    GC.Collect()
  End Sub

  Private Sub ExcelTest()
    Dim app As New Excel.Application
    Dim wbk As Excel.Workbook = app.Workbooks.Add()
    DirectCast(wbk.Worksheets(1), Excel.Worksheet).Range("A1").Value = "Test"
    wbk.Close(False)
    app.Quit()
  End Sub
End Class

ボタンクリックのたびにExcelのプロセスが終了するのを確認した。

GC.CollectしないとExcelのプロセスがクリックのたびに増えていくが
途中でGCが働いて一気に溜まっていたプロセスが終了するので無限に増えることは無い。
アプリケーション終了時にはExcelのプロセスは全て終了する。
790デフォルトの名無しさん:2006/07/23(日) 18:09:44
何か難しげな流れみたいですけど、すみません、恥知らずな私が通りますよ

form1.exe, form2.exe, form3.exe・・・

どこからでも呼び出せる関数って作れるんでしょうか
つくれるなら、参考になりそうなサイトか何か教えていただけると助かります
791デフォルトの名無しさん:2006/07/23(日) 19:50:37
クラスライブラリをなめんな
792デフォルトの名無しさん:2006/07/23(日) 20:17:33
標準モジュールに書け
793デフォルトの名無しさん:2006/07/23(日) 22:15:11
>>773
>アプリの終了時に残っているオブジェクトはGCされないことに注意。 
この部分は間違いでした。大昔に実際にテストして確認したのでずっとそうだと思っていたのですが、
この動作をしてたのは.NET 1.0 Beta 時代のもので、現在の1.0 1.1 2.0 ではアプリ終了時に
残ってるすべてのオブジェクトのファイナライザはちゃんと呼び出されていました。
ちなみにJava はアプリの終了時に残っているオブジェクトはGCされません。これは本当です(汗
794790:2006/07/24(月) 00:49:11
ダメだー
俺にはこいつは向いていないのかも、という気がしてきた

VBAの経験ちょこっとあり、程度の者です(Accessだけ)
何十個もフォームを使うようなDBアプリをつくろうと思ってるんですけど
何つか、こいつヒエラルキーつか階層つか、は一体どうなってるんでしょう

何かプロジェクトとかいうんですか、その中にいくつもフォームを詰め込むと
とんでもなく重いファイルができあがって、息も絶え絶えって感じの起動ですよね
6個ぐらい詰め込んだところで、ああこりゃダメだと諦めた

しょうがないからフォームごとに分けようかと
でもそうなると各フォームから呼び出してたモジュールのSubやFunctionはどうなるのかなと

そのプロジェクトとやらの上層にソリューションとかいうものがあるんですよね
空のソリューションってのをつくって、中にいくつかプロジェクトを並べてみた
同列で標準モジュール(みたいなもの)が並べられるに決まってると思ってた
でもダメだった
プロジェクトごとにSubやFunction書けってか?
書けっていうならそれでもいいけど
フォーム間の行き来つか開閉はどうするのかなと
ソリューションとか、もっともらしい名前でまとまってるんだから
とてもスマートな行き来の仕方があるに決まってると思った
でも分からない。
まさかCall Shell()?
だったらバラバラに作ったって一緒じゃん。まとめた意味ないじゃん

お願いですから何かヒントください...orz
795デフォルトの名無しさん:2006/07/24(月) 01:02:30
お世話になります。

現在DataGridにDBの値を表示し、
データの追加、修正、削除を行えるプログラムを作成しています。

今問題になっているのは削除の部分で、
行を選択して(複数選択可)Deleteキーを押してもグリッドから行削除されないようにし、
グリッドの中の値のみ削除させたいと思っています。

現在、DataGridの行削除を禁止し、
DataGridのKeyDownイベントでDeleteキーが押されたら
選択された行のセルに空文字を代入させるようにしており、
DBから取得した行に関してはこの通り動いています。

しかし、DataGrid上で追加された行に対して同じ操作を行うと、
選択された中の一番上の行のデータのみ空文字が代入され、
空文字が代入されたセルにフォーカスがあたっている状態になり、
それ以後の行に関しては処理が無視されてしまいます。
また、ブレークポイントで一度処理を止め、
一行ずつ実行していくと全ての行に対して正常に処理が行われていました。

一体どうすれば思い通りの動きになるのでしょうか?
796デフォルトの名無しさん:2006/07/24(月) 02:35:18
>790

DLLって知ってる?
あと、Friend とか Protected とか public とか private とか
797デフォルトの名無しさん:2006/07/24(月) 05:22:42
>>794
.NETの世界に来たんなら、
VB6以前の発想は捨てて
.NETの世界の勉強しろよ。

つうかフォーム6個程度でそこまで重くなるか?大きくなるか?
無駄に分けてもメリットはないぞ。
798デフォルトの名無しさん:2006/07/24(月) 09:39:31
>>796
そこの概念、VB6と決定的に違うからね。
VB6のDLLはVBで作ったら特殊なDLL、Cで作った場合は呼び出しに注意が必要。
.netのDLLは所謂普通のDLL。
フォームもクラスだときちんと理解すれば、DLL化したコンポーネント呼び出しで綺麗になるよね。
799デフォルトの名無しさん:2006/07/24(月) 11:05:33
>>795
>>行を選択して(複数選択可)Deleteキーを押してもグリッドから
行削除されないようにし、 グリッドの中の値のみ削除させたいと

っていう処理自体が、ちょっと考えられないんだが。
データは無いのに行だけが複数残ってる状態って、主キーはどうして
るの? 主キーが無い表だから問題ありませんとか?
800795:2006/07/24(月) 11:37:03
>>799
DBのテーブルには主キーを設定していますが、
DataGridには主キーは設定していません。
また、フォーム上に更新ボタンが配置してあり、
ボタン押下時に全ての項目が空のデータは登録しないようにしています。
DBの更新方法は、
一度全てのデータを削除し、
DataGrid上のデータを登録し直すようにしています。
また、主キーの重複チェックなどのチェック処理はボタン押下時に行っています。
本当はDataGridのデータソースに指定しているDataTableのPrimaryKeyに
主キーを設定したいのですが、
重複エラー時に表示されるエラーダイアログを
自分の指定したボタンやメッセージに書き換える方法がわからなかったため
このような形にしました。
エラーダイアログを書き換える方法はあるのでしょうか?

先ほどの問題ですが、
何となく原因がわかりました。
セルを選択→行ヘッダを選択→Deleteキー押下
という順番で操作した時、
DataGridのKeyDownイベントではなくTextBoxのKeyDownイベントが発生するようです。
ですので、DataGridのKeyDownイベント内でセルの値をクリアする処理を書いても
動作していなかったようです。
TextBoxのKeyDownイベント内で同様のコードを書いてみると、
思った通りの動きになりました。

セルの値のクリアは処理的には問題ないと思うのですが、
指摘された主キーの部分に関しては仕様としておかしいのでしょうか?
801デフォルトの名無しさん:2006/07/24(月) 11:41:10
CAPICOM.DLLを使った文字列の暗号化のサンプルソースがあるHPを教えてください。
802デフォルトの名無しさん:2006/07/24(月) 12:04:19
>>800
書き込み前にチェックしてるなら、とりあえず問題ないとは思うけど。
DataGridで主キーの設定自体は必要なくても、元のDBと整合性を保った
状態にしておいたら、重複チェックしなくても直接書き戻せるじゃん。

第一、更新時に落とすならDataGridで空白行を表示しておく必要もない
んじゃないかな。表示しておく理由ってなんだろう?

あと、DBの更新時に全削除→全登録って、ちょっと強引すぎるような。
件数が増えたらレスポンスにかなり影響しそうな気がするしさ。表結合
しててUpdateメソッドが使えないから、こういう形にしたの?
803795:2006/07/24(月) 14:34:22
>>802
すいません、まだ.netの事をよく把握していないんでいまいち理解していないんですが、
「元のDBと整合性を保った状態にしておいたら」というのはDataGridとDBを直接リンクさせ、
DataGridで入力された内容が即時にDBに反映させる事が出来るという事でしょうか?

空白の行を残している理由ですが、
今作っているのがユーザのマスタメンテ機能なんです。
キー値をユーザIDにしているんですが、
そのユーザIDも変更可能にしたいのです。
そこで、DBから値を取得したときのユーザIDをそれぞれの行に隠して持っており、
もし誤ってログインユーザのデータを削除してしまった時、
行が削除されているともう二度とそのデータを入力しなおす事ができなくなってしまいます。
ですので、空白行を残しておき、
誤ってデータを削除してしまった時でも
もう一度同じセルに入力しなおす事が出来るようにしたかったからです。

全削除→全登録のことですが、
特に表結合は行っていません。
ですので、ちょっとUpdateメソッドというのが良くわからないのですが、
もし他にいい方法があるのであればそちらを使用したいと思います。

ただ、一つ気になっていることがあるんですが、
DBとDataGridの連動をさせることが出来ると仮定した場合ですが、
現在DataSourceには単純にDBから取得したDataTableを入れているわけではなく、
あるカラムのデータが0ならFalse、1ならTrueというように変換し、
別のDataTableに入れなおしてからDataSourceにセットしているのですが、
これでもDBとDataGridの連動は可能なのでしょうか?
804デフォルトの名無しさん:2006/07/24(月) 15:06:03
とりあえず、@ITの記事を読めば?
805デフォルトの名無しさん:2006/07/24(月) 15:08:48
2005でToolStripMenuItemの表示をのっぺりとした白っぽいのから
システムメニューのような灰のやや立体っぽい表示にしたいんですが
どうすればいいのでしょうか?
806デフォルトの名無しさん:2006/07/24(月) 15:15:14
>>803
そういう状態なら、.net関連のDB解説本を一冊読んでみることをお薦め
する。いまの作り方じゃ、遅かれ早かれ破綻しそうだ。作り込んでから
そうなるよりもずっとマシかと。
807795:2006/07/24(月) 15:49:01
>>804
はい、一度読んでみます

>>806
そうですね。
ちゃんと勉強して基礎を固めたいと思います。
しかし、今回は時間もなくDBの更新をするところが少ないため、
今回に限り今の方法で行きたいと思います。

どうもありがとうございました。
808795:2006/07/24(月) 15:51:20
>>804
そうですね、一度読んでみます。

>>806
そうですね。
ちゃんと勉強して基礎を固めたいと思います。
しかし、今回は時間もなくDBの更新をするところが少ないため、
今回に限り今の方法で行きたいと思います。

どうもありがとうございました。
809795:2006/07/24(月) 15:54:40
二重投稿すいませんorz
810デフォルトの名無しさん:2006/07/24(月) 22:24:49
コントロールを後々「Name」プロパティで検索したいと考えているので
「Name」をどこかの構造体か何かで一元管理しようと思っています
しかし、フォームデザイナではコントロールを追加するときに「Name」に定数しか入れられないみたいです
フォームデザイナは使わずに全部こつこつコードを書かなきゃいけないってことになるんでしょうか?
811デフォルトの名無しさん:2006/07/24(月) 22:27:31
はあ?
もう初心者以前の奴は大人しく入門書ぐらい読めよまずは。
812810:2006/07/24(月) 22:30:50
(´Д`;)ヾ ソコヲドウカオネガイシマス
   ∨) 
   (( 

 (;´Д`)  オネガイシマス
 (  八)
   〉 〉

    ヾ
 (´Д`;)、  コノトオリデス
   ノノZ乙
813デフォルトの名無しさん:2006/07/24(月) 22:51:15
ていうか定数って何だろ

そもそも名前で管理なんてやめとけ バグの元だ
特に VB 使いは大好きなようだが
814デフォルトの名無しさん:2006/07/24(月) 23:53:48
配列変数を比較するのに簡単な方法ってありますか?
dim a() as byte = {1,2,3}
dim b() as byte = {1,3,3}
やはり、For〜 で一個づつ見ていくしかない?
if a = b then
ってやったら、Is を使え、とエラーになりました。
815デフォルトの名無しさん:2006/07/24(月) 23:56:41
まあForで調べるのがいいだろう
816790=794:2006/07/25(火) 00:12:04
つまらんグチ書いてごめんなさい

>>DLL
お目にかかったことは何度か
つか
人様がつくったやつをWEB上から無断でいただいていくつか使ってます
モノの正体は良く分かってません(だ〜から〜AccessVBAやったことがあるだけですって。VB6も知りません)
ただ、「どこからでも呼び出せる〜」については、もしかしたらそういうものの力を借りればできるのかな、
ぐらいのことは漠然と考えてはいました

>>797
>>.NETの世界に来たんなら
この自覚は完全に欠落してました
チラ見で、AccessVBAと文法似てるからいけるかも、ぐらいの感じでした
いま職場で使ってるAccessのDBアプリ(フォーム数約80, プログラム部分のサイズは最適化状態で3MB)
こいつをVB.NETで作り替えることが出来たら嬉しいなと
理由はメチャメチャ安いから
使用PCの台数に関わらずVB.NET分だけの1万数千円で済むから
こころざし低くてごめんなさい
ちょっと腰据えて勉強します

>>フォーム6個程度でそこまで重くなるか?
できあがったEXEファイルのサイズは300KB
celeron1100MHz, 384MBのマシンで起動に10秒ちょっと
プロジェクトファイルのほうは30秒近くかかります
(全部バラバラにしようとは思いませんけど、80個は無理ですよね)
817デフォルトの名無しさん:2006/07/25(火) 00:47:27
>>816
そういう考えでも俺はいいと思う

文法が似ていて.NETの敷居が低いのは確かだから
http://www.amazon.co.jp/gp/product/4798005088/
↑この手の本を1冊読めば結構いけると思う

がんがって
818デフォルトの名無しさん:2006/07/25(火) 00:59:54
俺はその本は薦めんな。
初心者が基本を勉強するような本と違うよそれ。

VBの知識があるなら@ITの川俣の連載がいいと思うよ。
まあ著者は2chでは嘲笑の対象になっていて、確かにちょっとアレな人物っぽいけど
内容はまともで分かりやすいよ。
819デフォルトの名無しさん:2006/07/25(火) 01:04:18
逆引きは入門書を終えてから買うほうがよさげだな。
しかし、いま参考書買うにしても2005対応版って全然出てないよう
な気がする。オンライン記事でぽつぽつ取り上げられてるくらい?
820デフォルトの名無しさん:2006/07/25(火) 01:22:17
@ITの記事を当てにしない方がいい

VBAを出来てたんなら
.NET FRAMEWORKとオブジェクト指向が分かれば
VB.NETを使えるはず

それにその人が知りたいのはADO.NETだとかDATAGRIDだろうし


821816:2006/07/25(火) 02:08:22
皆様、いろんなアドバイスありがとうございます
@IT、今ちょこっと見てきました
記事自体は面白く読めました
いや、まだ最初のほうしか読んでないんで、プログラミング云々とは別の
VBがたどってきた歴史とか、そっちの話

>>知りたいのはADO.NETだとかDATAGRID
DBに接続してあれこれやる方法はtips集みたいのを参考にしながらまあ何とか
なりそうかなと
DATAGRIDについてはまだ謎の部分も結構あるけどきっとそのうちなんとかなるんだろうなと

分かんないのは、その全体像つか、いや別にAccessだって分かって使ってたわけ
じゃないけど、Accessでいうところの作業場、1個のmbdファイルが、こっちで
いうところの1個のプロジェクトみたいに考えてたら、あっという間に重くなって
身動きがとれなくなっちゃった

>>.NET FRAMEWORKとオブジェクト指向が分かれば
全然分かってません
オブジェクト指向 ≒ 使い回し
ぐらいの感じ
だからfunction や subが使い回せないことでヤケになったりとか

.NET FRAMEWORKってのもまったく分かってません
先に出てきたDLLファイルの巨大版かな、ぐらいの捉え方
(ぜってー違いますよね)

ちょっとの間、小手先技だけで作る作業休んで、この言語自体のこと勉強します
822デフォルトの名無しさん:2006/07/25(火) 08:07:15
DataGridViewの5列目を0列目に移動したいんだがどこにも載ってねー
やり方キボンヌ

もしくは0列目に新規の列を追加する方法でもいいっす。
DataGridView1.Columns.Add()
では最終列にできてしまう・・・
823デフォルトの名無しさん:2006/07/25(火) 08:11:16
おいおい、Add が見つかったんならすぐだろ?
824デフォルトの名無しさん:2006/07/25(火) 09:11:10
>>823
おぉ、、もうちょっとヒントだけでも・・・
825デフォルトの名無しさん:2006/07/25(火) 11:55:49
rows
826デフォルトの名無しさん:2006/07/25(火) 12:10:04
行は関係ないような
827デフォルトの名無しさん:2006/07/25(火) 16:30:26
VBのランタイム関数と.NETFrameworkに同じ機能をする
ものがあったら、どちらが使われている事の方が多いですか?
828822:2006/07/25(火) 18:23:59
結局今日一日わからなかった orz...
829デフォルトの名無しさん:2006/07/25(火) 18:31:49
>>827
その答えはわからないけど
今後のWindowsプログラミングはランタイムよりBCL推奨。
どちらにしても今後は、.NETFramework上で動くものに統一されていくほうが望ましいわけで、
COMとかOCXもそうだけど、言語依存のあるものはなるべく使わないほうがいい。
っと思ってる。
830デフォルトの名無しさん:2006/07/25(火) 18:41:11
>>828
Insert が目に入らんのか……
831805:2006/07/25(火) 20:49:06
>>805は簡単すぎるんでしょうか・・
Office風?なのがなんか嫌なのでRenderModeを変えても今一よくわからなくて

色々検索してみたのですがよくわからないんで教えていただきたいです。お願いいたします。
832デフォルトの名無しさん:2006/07/25(火) 20:52:55
MenuStrip がイヤなら Menu 使ってれば良いんじゃね?
833831:2006/07/25(火) 21:11:58
>>832
ありがとうございます
MenuStripで外観をかえられると思ってたのでそういうことろまで目がいきませんでした
プログラミング自体をはじめたばかりなので戸惑いましたが
何とか表示を変えることが出来ました
834デフォルトの名無しさん:2006/07/25(火) 21:54:56
MDI親フォームで、クライアント領域がスクロールされている状態だと、
子フォームの位置指定がずれてしまいます。
クライアント領域のスクロール情報の取得は出来ないものでしょうか?
835デフォルトの名無しさん:2006/07/25(火) 23:14:34
現在、VBでマップエディタを作ろうとしているVB初心者ですが
パネルを作ってその中にマップ画像を表示して
横にスクロールバーを作ってスクロールさせようと
考えているのですが
50×50のピクチャーボックスを作るところから
躓いています(;^ω^)

Dim pic(50, 50) As PictureBox
まではいいんですが
パネルの中にpicを配置したい場合はどうしたら
いいですか?
836834:2006/07/25(火) 23:20:43
.MdiParent = Me
.Top = 0
.Left = 0
.BackColor = .Parent.BackColor
.FormBorderStyle = Windows.Forms.FormBorderStyle.None

と、MDI親クライアントの背景色と同じ色のダミーフォームを置いて、
その .top .left でスクロール情報を取得と自己解決しますた。
837835:2006/07/25(火) 23:24:24
パネルに配置するのは自己解決しますた
パネルのsize以上に配置はできないのですな

それよりもVScrollBar1でパネル内の画像のスクロールをさせたいのですが
バーは外に配置すべきでしょうか?
それとも中に配置するほうがいいでしょうか?
838デフォルトの名無しさん:2006/07/25(火) 23:25:27
>>835
パネルの Controls に Add すればいい。
// PictureBox は結構重いから、PictureBox である必然性がないのなら使わない方が良いぞ。
// Label とかでも BackgroundImage を使えば画像は表示できる。
839デフォルトの名無しさん:2006/07/25(火) 23:26:26
>>837
Panel 使ってんだったら AutoScroll 使えばいいんじゃね? 結構癖があるけどな。
840デフォルトの名無しさん:2006/07/25(火) 23:29:09
>>835
っていうか、始めたばっかりの人がビジュアルなもの作りたがる気持ちは
分からんでもないけど、はっきりいって無謀。

そういうグラフィカルなものってのは多分思ってるより全然難しいよ。

ちなみに、パネルに限らずそんなコントロールを50x50も配置して
セルを表現するなんて実装方法は論外だよ。
841デフォルトの名無しさん:2006/07/25(火) 23:29:35
vs.net2003
VC MFC ダイアログベースアプリケーションで

IDC_LIST1 m_list
のリストコントロールの中にいくつかのCString文字例が入っていて
その中に AAA という項目が存在するか調べるにはどうすればいいでしょうか。
これじゃダメみたいですね。

if( -1> m_list.FindItem("AAA",-1))
{
MessageBox("","",MB_OK);
return;
}
842841:2006/07/25(火) 23:32:05
書くスレ間違えました・・すみません
843835:2006/07/25(火) 23:42:11
>>840
VBはほとんど初心者ですが
javaとかなら一応できます(´・ω・`)
気付いたのですが、
例えば画像データの配列10個作って
整数の配列の中に画像の添え字として
数字を格納しておいて
for文使って
順々に画像を表示するみたいな方法は使えないのですか?
844835:2006/07/25(火) 23:43:21
なるほど!
ピクチャーボックスじゃなくても
ラベルなどで画像を表示できるんですか(`・ω・´)
845835:2006/07/25(火) 23:57:56
画像のデータだけを取得したいのですがどうしたらいいですか
846デフォルトの名無しさん:2006/07/26(水) 00:02:35
意味が分かりません
847デフォルトの名無しさん:2006/07/26(水) 00:09:26
Javaみたいに
Imageクラスに画像データを格納しておく方法はありませんか?
初めに画像のデータを一気に取得しておきたいのですが
848デフォルトの名無しさん:2006/07/26(水) 01:09:46
あるフォルダ中のファイルの有無
そのファイルの属性
などを取りたいと思った
以前、vbsで似たようなことをやったなと思い出し
コードをちょっとだけ書き換えて貼ってみた

望んだ通りの結果が得られてしまった

こんなんでいいんですか?
ホントはもっとちゃんとした関数とかあるんじゃないですか?
849デフォルトの名無しさん:2006/07/26(水) 08:18:04
>>848
だからここは『ムー』の投書欄じゃないんだが・・・。
俺様のことは細かい点まで言わずともみんな理解してくれるはずだ、
って前提で文章かかれてもな。
850デフォルトの名無しさん:2006/07/26(水) 08:58:55
>>830
やっとわかったありがとう
851デフォルトの名無しさん:2006/07/26(水) 09:18:42
>>849
「俺ってすごくね?」という青臭いアッピールなんだよ、きっと。
852デフォルトの名無しさん:2006/07/26(水) 12:28:21
>>835
Image使ってGraphics.DrawImageで全部自前描画
853デフォルトの名無しさん:2006/07/26(水) 13:12:48
VBってうんこですよね?
854デフォルトの名無しさん:2006/07/26(水) 13:27:28
書き方によって、軽いうんこにも壮絶なうんこにもなるよ
855デフォルトの名無しさん:2006/07/26(水) 13:37:05
VBがうんこなら、C#もJ#も色違いのうんこだろ。
基本的には何もかわらない。
856デフォルトの名無しさん:2006/07/26(水) 14:04:50
.NETがうんこだからな
857デフォルトの名無しさん:2006/07/26(水) 14:07:54
それならVistaもうんこだな
858デフォルトの名無しさん:2006/07/26(水) 14:56:32
ToolStripでラジオボタン的な事をやりたいんですが
ToolStripRadioButton的なものはないですよねぇ?
ボタンのチェック状態を全部しらべて1個だけ押されてる状態に
するように自分でやらないとダメですか?
859デフォルトの名無しさん:2006/07/26(水) 16:30:13
さっさと教えれよかすども
860デフォルトの名無しさん:2006/07/26(水) 17:47:56
スクロールバーのマウスでスクロールしたときの処理の記述の仕方をおしえてくれー
861デフォルトの名無しさん:2006/07/26(水) 18:03:43
>>856
なに!俺は毎日うんこをずっと見続けて悩んでいたのか!
862デフォルトの名無しさん:2006/07/26(水) 18:36:23
そしてこれからも
863デフォルトの名無しさん:2006/07/26(水) 18:41:40
VBとC#ってどっちが軽い?
.netだとどっちも変わらないか
864デフォルトの名無しさん:2006/07/26(水) 22:37:54
誰も質問してないし寝ようぜ
865デフォルトの名無しさん:2006/07/26(水) 22:54:02
VBが糞重くて使えない気がするんだが
866デフォルトの名無しさん:2006/07/26(水) 22:57:46
その前に自分の腕を疑いましょう
867デフォルトの名無しさん:2006/07/27(木) 06:43:17
IDEのことか
成果物のことか
868デフォルトの名無しさん:2006/07/27(木) 14:03:04
>>865
成果物は作る人で重くも軽くもなる。
開発環境が重いか軽いかはマシンパワーにも依存する。
(テキストエディタとコマンドラインでも開発は可能)
少なくともVBが糞重いと感じるならC#もJ#も糞重いことになる。

君の気持ちは良くわかるが、
格ゲで負けたらボタンのせいにして、
ネトゲで下手糞だと回線のせいにするんだろ?

文句が多い奴は例外なく技術がない。

使えないなら使うな。
869デフォルトの名無しさん:2006/07/27(木) 14:40:08
VS2005のDataGridViewの質問ですが
ここで良いでしょうか?

1レコードを複数行で表示したいのですが
色々調べてみましたがBOCなどの外部コントロールでしかできないのでしょうか?

参考になるURLなどあれば教えて下さい。
スレが違う場合は申し訳ありませんが誘導をお願いします
870デフォルトの名無しさん:2006/07/27(木) 21:31:41
こねくり回せば可能かもしれんが一般には無理だな。
871デフォルトの名無しさん:2006/07/27(木) 21:45:47
質問させてください

GUIはVBで複雑な命令はCで作ればいいと聞いたことがあるんですがこれはどういう事なのでしょうか

Cでプログラムを作りDLLかなにかにして
それをVBでGUIや簡単な命令を組み合わせて作ったプログラムから読み込ませるということでしょうか?

Cで作った命令をどうやってVBで作ったプログラムで扱う事ができるのか教えてください

よろしくお願いします
872デフォルトの名無しさん:2006/07/27(木) 22:46:58
>>871
できるけど、VB2とかVB4の頃のお話ですか?

んで、純粋に.NET上で開発するなら、 どの言語も「記述」の違い程度しか差はないし、GUIもほぼ一緒。
完成品もほぼ同等。

873デフォルトの名無しさん:2006/07/28(金) 11:44:23
つーか、マイ糞ソフトから出てるものってすべて糞重いだろ。
VB.NETとかアホですか?ってくらい糞重いし使えない。
これはまともな開発ツールじゃないねえ。
874デフォルトの名無しさん:2006/07/28(金) 11:48:12
メモリ増やせよ
875871:2006/07/28(金) 12:20:59
>>872
どういうふうにできるのでしょうか?
記述したとおりDLLをCで作成してそれを読み込ませる・・・?

それで、VB2005を使ってるんですが現在はVBもCも機能的には変わらないんですか・・
GUIはVBの方が簡単に作れませんか?
CはWinAPIとかも学ばないといけませんよね
VBはドラッグアンドドロップで・・。
876デフォルトの名無しさん:2006/07/28(金) 13:04:50
>>875
> それで、VB2005を使ってるんですが現在はVBもCも機能的には変わらないんですか・・
> GUIはVBの方が簡単に作れませんか?

自己解決してると思いますが。
あんまねーじどでれがしーなAPI使わなければいけない場面以外では、Cの必然性はなし。
877デフォルトの名無しさん:2006/07/28(金) 15:13:53
>>875
.NET上で開発するなら、
.NET Frameworkが提供するライブラリだけで作成するのが望ましくて、
C#でAPIを呼んだり、VBで、以前のCOMとかOCXを使うような、
言語に依存するライブラリ使用は推奨されない。
そんなにややこしいことしたいなら、.NET上ではなく、VC++かC++builderを使う。

で、VB2〜4ならDLLを作れなかったのでDLLを使いたければC++で作るしかなかっただけで、
VB6なら、ActiveXDLLを自力作成可能。
VB6で作ったActiveXDLLもVC++で作ったActiveXDLLも使い方は一緒
VB2005なら普通のDLLを作成可能。
C#で作ったDLLだろうと、自分で作ったDLLだろうと使い方は一緒。

そもそも他人が作ったものを流用する以外で、多言語を混ぜこねて作る必要はない。
VBでできないものは最初からVBでやらないべき。

解れよ!
878デフォルトの名無しさん:2006/07/28(金) 15:37:51
ぶっちゃけVB2005でWinny作れますか?
879デフォルトの名無しさん:2006/07/28(金) 15:40:10
作れる
ただしソースは丸見え
880デフォルトの名無しさん:2006/07/28(金) 16:04:44
>>878
ネットの接続関係はもちろん、リジュームもノードのクリプトも作りこみがほとんどいらんし
VB2005だと、ほとんど苦労することなく簡単に作れるはず。
プログレスバー付きのViewをどうしようかって思うくらいじゃないか?
881875:2006/07/29(土) 21:00:53
そうなんですか
現在の仕様ではCでできることは全てVBでまかなえるんですね
だったらVB2005が扱いやすいのでマスターしたいと思います。
882デフォルトの名無しさん:2006/07/30(日) 17:07:20
>>881

前からずっと気になってたけど、裸のC、C++、あるいはVC++、そしてC#、それぞれ全部違うからな。
C#のことをCといってるならVBもC#も基本的には変わらない。
C#はむしろCでもC++でもなく、どちらかというとJavaに近い感じかな。

ただしVC++で出来てVBで出来ないことはある。
883881:2006/07/30(日) 21:57:36
裸のCとVBの事です。

Cでやるような複雑な命令がVB2005でもできるのならこの質問は解決です。
884デフォルトの名無しさん:2006/07/30(日) 22:12:43
「Cでやるような複雑な命令」って?
ポインタ演算に限っていえばVBではできないよ(C#ではできる)
885デフォルトの名無しさん:2006/07/30(日) 22:15:18
VB でも事実上可能だよ
886デフォルトの名無しさん:2006/07/30(日) 22:35:08
API叩けばできるけど、だったらC系使ったほうがいいよな
やるとしたら過去の資産を使いつつさらにポインタも使いたい場合ぐらいか
887デフォルトの名無しさん:2006/07/30(日) 22:42:55
いや別に API 使わなくても
多少面倒だけどな
888デフォルトの名無しさん:2006/07/30(日) 23:07:10
>>883
一連の質問内容を見て、貴方の知識や技術が相当低いことは良くわかった。

まずは何を作るか決めて、どんな技術が必要か明確にしてくれ。
それがわからないと答えようがない。
それでVBでできるか、VBに向いてるかどうかという質問をしてくれよ。

話はそれからだ。
889878:2006/07/31(月) 10:34:44
>>880
ちょっと驚いた。
まぁ、技術的には可能でも俺には無理だけどなw
890デフォルトの名無しさん:2006/07/31(月) 15:22:51
VB.NET Framework2.0でソースコードのコメントをXML ドキュメントで
出力できますでしょうか?

MSDNで調べたことろC#のサンプルしかヒットしませんでした。
ご教授願います。
891デフォルトの名無しさん:2006/07/31(月) 16:16:23
普通に出来る。
892デフォルトの名無しさん:2006/07/31(月) 17:29:52
>>890
ご教授野郎には教えたくはないが、ヒント > '''
893デフォルトの名無しさん:2006/07/31(月) 17:47:04
>>892
サンクス
894デフォルトの名無しさん:2006/07/31(月) 19:46:55
すみません。教えてください。
リストビューからリストビューへのアイテムのドラッグ&ドロップで
MultiSelectを有効にして同時に複数アイテムのドラッグを
したいと思っています。
dobon.netのリストボックスのドラッグ&ドロップのサンプルを見ながら
リストビュー用に変更してドラッグ&ドロップ自体はできるように
なったのですが、その後、リストビュー内でアイテムを選択するときの
状態になってしまいます。
ですのでドロップが完了したらリストビューの選択モードを解除したいのですが
どのようにすればよいでしょうか?よろしくお願いいたします。
895デフォルトの名無しさん:2006/07/31(月) 23:47:22
Oracleが8.0.5なんでODP使えないんだけどDataGrid使うにはどうすればいいでしょう
896デフォルトの名無しさん:2006/08/01(火) 02:37:53
>>894
>その後、リストビュー内でアイテムを選択するときの
>状態になってしまいます。
>ですのでドロップが完了したらリストビューの選択モードを解除したいのですが

正しく詳しく書いてくれないかな?
897デフォルトの名無しさん:2006/08/01(火) 03:15:48
>>889
チャットプログラムを作れるならP2Pのプログラムが作れるといえる。
そういう意味ではネットワークゲームも一緒。
大雑把に言うと、
移動パケットを送るのも、会話メッセージを送るのも、キャラ情報送るのもまったく同じ原理。
当然送られてくるのも同じ。
ファイルを送るのも受け取るのも同じ。

当然だけどWeb上のcgiでよくあるチャットは違います。

898デフォルトの名無しさん:2006/08/01(火) 10:30:29
>>895
Oracle8i以降に外部テーブルリンクのシノニムを作り、そいつ経由で操作する
899デフォルトの名無しさん:2006/08/01(火) 11:15:29
自分で作ったメッセージをフォームで受け取る方法を教えてください
900デフォルトの名無しさん:2006/08/01(火) 12:59:03
>>895
別にDataGridはODPと直じゃないだろ?
DataSet経由すればいいんだから問題なし。
DataSetへの突っ込み方はどうとでも。
901デフォルトの名無しさん:2006/08/01(火) 14:12:05
>>899
友達はいないのか
902デフォルトの名無しさん:2006/08/01(火) 18:18:30
http://support.microsoft.com/default.aspx?scid=kb;ja;832679
のサイトのFTPクラスでは日本語ファイル名のファイルが
アップロードできないのですが、どこを修正すればよいか
ご存知の方がおられましたら教えてください。
903デフォルトの名無しさん:2006/08/01(火) 19:21:04
>>896
MicorosoftのページによるとMouseUpイベントが発生しないため
と書いてありました。
http://support.microsoft.com/default.aspx?scid=kb;ja;240946

ただ、これはVB6.0の話のようですので
なぜVB.NET(2003)で同じ問題が発生するのかわかりません。
困りました。
904デフォルトの名無しさん:2006/08/01(火) 19:30:00
マイコロソフト
905デフォルトの名無しさん:2006/08/01(火) 19:47:50
質問です。
Byte型の配列に対して、
ビット単位にて値を取り出すのに良い方法はないでしょうか。
例えばByte配列に対して5ビット目から18ビット分取り出すような形です。
現在はBitArrayに格納してから扱っているのですが、
BitArrayに対するインデックスがByte単位で逆順になっており
使いづらいです。
40ByteのByte配列の場合、BitArrayに格納し、
320ビット分のByte配列を別に設けて
BitArrayから8個づつインデックスを逆順にし、そこから1ビットを
取り出し、320個のByte配列に格納しています。
よろしくお願いいたします。
906デフォルトの名無しさん:2006/08/01(火) 20:16:54
そう言うクラスを作る
907デフォルトの名無しさん:2006/08/01(火) 20:25:56
インデックスを入れ替えるデータを入れた配列をつくりそれ経由でアクセス
or
インデックスを入れ替える関数をつくりそれ経由でアクセス
908デフォルトの名無しさん:2006/08/01(火) 20:29:36
値を取り出すだけならBitArrayを使わずに自分でごりごり計算すれば
909デフォルトの名無しさん:2006/08/01(火) 20:37:19
何を悩む必要があるのか、むしろ理解できんな。
単純にBitArrayなりByte配列なりをラップするだけだと思うんだが。

配列のインデックスを計算するコード書くときに、±1が必要かワカンネ-、
ってタイプの人なのかな?w
910デフォルトの名無しさん:2006/08/01(火) 21:51:39
>>900
そのDynaSet→DataSetの方法が分からない
911デフォルトの名無しさん:2006/08/01(火) 21:58:39
なんかカッコいいな > DynaSet
912デフォルトの名無しさん:2006/08/01(火) 23:04:34
Dynasetから1件ずつReadしてDataSetに1件ずつAddすれば?
913デフォルトの名無しさん:2006/08/02(水) 08:03:46
>>906-909
返答ありがとうございます。
>何を悩む必要があるのか、むしろ理解できんな。
ということはこの方法で良かったのですね。
ビット値を得るのに何か遠回りしているように感じたので
質問しましたが解決して良かったです。
>配列のインデックスを計算...
BitArrayに対するインデックスの計算は
Private Function GetBitIndex(ByVal index As Integer) As Integer
Return ((7 - index Mod 8) + (index \ 8) * 8)
End Function
というふうにしています。
ありがとうございました。
914デフォルトの名無しさん:2006/08/02(水) 08:27:14
っていうか、そもそもByte内のビットオーダーが逆だって言うんだけど、
その発想は変だよ。
逆になんてなってないもんw
ちゃんとLSBが一番若い値で、MSBが一番大きな値になってるでしょ。
915878:2006/08/02(水) 09:05:38
http://www.geocities.jp/takugon/20070719OpenWinnySrc.zip

試しに作ってみたよ
C#だけどな
916905:2006/08/02(水) 10:07:29
>>914
説明不足でした。すみません。
BitArrayにおいて、たしかにLSBが若いインデックスで
格納されているのですが、ハフマン復号などを行う際に、
MSBから読み込むため、MSB→LSBに整列し直しているのです。
そこで整列のし直しが遠回りのような気がしたもので質問しました。
肝心なところを説明せずに申し訳ありません。
914さんありがとうございます。
917デフォルトの名無しさん:2006/08/02(水) 14:36:59
>>914
知らないくせにレスするなよゴミが
918デフォルトの名無しさん:2006/08/03(木) 17:32:43
ごみどもちょっとおしえてくれや
919デフォルトの名無しさん:2006/08/03(木) 18:03:55
おしえてやるぞゴミ
920デフォルトの名無しさん:2006/08/03(木) 18:33:52
じゃあちょっと教えてくださいゴミ野郎さん
コンボボックスのアイテムとそれにあれっするあsふぃd
921デフォルトの名無しさん:2006/08/03(木) 18:35:01
VBってなんでこんなに重いんだ
922デフォルトの名無しさん:2006/08/03(木) 23:58:11
メモリが少ないんだろうさ。
923デフォルトの名無しさん:2006/08/04(金) 10:30:50
メモリはなんぼあっても舞糞ソフトのツールは全て糞重いけど?
こんなのまともな開発環境じゃない。
ごみ
924デフォルトの名無しさん:2006/08/04(金) 12:57:21
アンチMSって品が無いというか、言語イカれてますね。

925デフォルトの名無しさん:2006/08/04(金) 13:41:42
MSのいい所を教えてください。
926デフォルトの名無しさん:2006/08/04(金) 14:18:09
全てのMS製品が明日から一斉に使えなくなったらどうする?
世界経済が破綻するよ
927デフォルトの名無しさん:2006/08/04(金) 14:22:55
使えなくなるよりも、P2Pウイルスみたいに内部資料バラまき活動
とかしてほしい。いろんな意味で平和になるかも。
928デフォルトの名無しさん:2006/08/04(金) 14:29:32
>>926
ようするに、糞だけどみんなが使ってるから仕方がなく使ってるって感じなんですね
929デフォルトの名無しさん:2006/08/04(金) 16:33:16
>>928
否定はできません><
930デフォルトの名無しさん:2006/08/04(金) 16:39:25
糞でもいいけどそれより全ての面でベターな物が無いって所じゃない?
931デフォルトの名無しさん:2006/08/04(金) 17:17:47
ASP.NET(VB)で開発をしております。

ボタンクリックでデフォルト非表示にしているカレンダーを表示し
日付選択後に選択した日付がテキストに入るという処理をしています。

カレンダー表示の間、他のコントロール(例えばテキスト等)が使用可能な状態なので
カレンダーからフォーカス(?)がはずれたらカレンダーを非表示に戻したいと思っています。
例:カレンダー表示→フォームにフォーカス→カレンダー非表示
どのタイミングでイベントを取ればいいのかわからないので詳しいかた教えて下さい。

ダメならカレンダー表示時は他のコントロール全てをReadOnlyとかにするしかないんでしょうか
宜しくお願いします。
932デフォルトの名無しさん:2006/08/04(金) 18:39:15
クライアントスクリプトになるな。
onblur になるのかね。
933デフォルトの名無しさん:2006/08/04(金) 18:52:12
技術のないやつほど文句が多い件
934デフォルトの名無しさん:2006/08/04(金) 19:02:24
遅いと嘆くやつほどスパゲッティコードな件
935デフォルトの名無しさん:2006/08/04(金) 19:38:32
何でも来いに名人なしの件
936デフォルトの名無しさん:2006/08/04(金) 20:34:59
糞VBしか知らない信者は幸せだねえ〜
937デフォルトの名無しさん:2006/08/04(金) 21:47:09
名物にうまい物なしの件
938デフォルトの名無しさん:2006/08/04(金) 22:19:10
VBを批判するのは結構だが、君の批判にはまるで論理性を感じられない。

  = 批 判 で き る ほ ど 、 技 術 が あ る と は 思 え な い 。

たのむから知性を感じられない書込みはやめてくれ。哀れで涙ぐましくなる。
939デフォルトの名無しさん:2006/08/05(土) 00:58:12
技術がないと満足に生産性があがらないのがVB.NET
940デフォルトの名無しさん:2006/08/05(土) 01:14:15
毎日うんこみたいなソース垂れ流して楽しいですよ?
941デフォルトの名無しさん:2006/08/05(土) 02:19:01
PowerBuilderやC++Builderを作った奴がMS社に移って作ったのが .NETシリーズだからな。
これに文句言ってたら、Windowsアプリは生涯作れない。

グダグダ言う暇があるなら新しい環境でプログラミングの一つでもしとけ。
有意義だぞ。
942デフォルトの名無しさん:2006/08/05(土) 10:07:01
俺のうんこを提供してるだけで飯が食えるのは最高です
943デフォルトの名無しさん:2006/08/05(土) 17:51:28
ListViewでマウスの左ボタン押しっぱなしで四角い枠でアイテム選択していくとき
MouseMoveイベントが取れないんだけど、あの時って何のイベントが発生してるんでしょう
SelectedIndexChangedだけ?
944デフォルトの名無しさん:2006/08/06(日) 20:57:07
PowerBuilderは違うだろといってみる
945デフォルトの名無しさん:2006/08/06(日) 21:26:19
暇だからどんどん質問しろよ。


946デフォルトの名無しさん:2006/08/06(日) 21:35:08
ではWinInet.dllを使ってFTPでファイルをアップロード
ダウンロードするサンプルを作ってください。
よろしくです。
947デフォルトの名無しさん:2006/08/06(日) 22:02:10
>>946
WinInet.dllなんて使わなくても、
ここ読め
http://support.microsoft.com/default.aspx?scid=kb;ja;832679
んで、使えるコマンドはこんな感じ
http://www.atmarkit.co.jp/fnetwork/rensai/netpro11/ftp-command.html
とりあえず自力でがんばってわかんなかったらもっかい聞きに来い。

はい次

948デフォルトの名無しさん:2006/08/06(日) 22:09:37
>>947
それはバグだれけで使い物になりません。
なのでWinInet.dllのサンプルをくださいな。
949デフォルトの名無しさん:2006/08/06(日) 22:17:54
>>945 責任取れよw
950デフォルトの名無しさん:2006/08/06(日) 22:20:50
バグだらけって、分かってんなら自分で修正しろ世w
951デフォルトの名無しさん:2006/08/06(日) 22:27:15
暇だからとっとと「質問」しろよ。

952デフォルトの名無しさん:2006/08/06(日) 22:35:19
いや時間がないのですよ。デスマっていうやつです。
昔VC++でWinInet.dllを使ってるから最悪それをDLLにして
使おうとは思ってるんですけどね。
できれば無駄にラップするのも嫌ですから。
953デフォルトの名無しさん:2006/08/06(日) 22:42:27
見積もり表お出ししましょうか?ww
954デフォルトの名無しさん:2006/08/06(日) 22:45:02
とにかくDllImportを書きまくれ
955デフォルトの名無しさん:2006/08/07(月) 20:19:33
チン☆⌒ 凵\(\・∀・)マダ-?
956デフォルトの名無しさん:2006/08/08(火) 03:59:44
VBよりもC#が出来たほうがカッコイイと思い、努力と根性でC#を勉強した。

しばらくたったころ、
ttp://www.ailight.jp/blog/myamyu/archive/2004/09/01/2595.aspx
コレを見てVBのほうがすぐれてるとおもいVBに乗り換えてみた。

そして月日は流れ、俺はナチュラルにVBの達人になっていた・・・

今日から私の燃料は、貴方たちの質問です。
957デフォルトの名無しさん:2006/08/08(火) 05:30:31
>>956
【VB.NET】VS2005 選ぶならどっち?【C♯】 の358−400くらいにそのサイトの話題が出てた。
http://pc8.2ch.net/test/read.cgi/tech/1106538237/358-
958デフォルトの名無しさん:2006/08/08(火) 11:28:39
>>956
スリーサイズを教えてください
959デフォルトの名無しさん:2006/08/08(火) 13:12:46
>>956
両方できる俺は勝ち組ですか?
960デフォルトの名無しさん:2006/08/08(火) 17:38:59
>>959
普通。
961デフォルトの名無しさん:2006/08/08(火) 21:05:43
できるけどほとんど使ってないって言う奴もいるくらいだからなあ。
962デフォルトの名無しさん:2006/08/09(水) 17:18:22
VB6から VB.NET2005に手動コンバートするんですが
注意点とかありましたら教えてください、お前ら。
963デフォルトの名無しさん:2006/08/09(水) 17:33:54
>962
全然違う部分多し
くれぐれも気をつけろ 深みにはまるぞ

ついでに設計やり直してスクラッチから書いた方が早いかも

まあがんがれ
964デフォルトの名無しさん:2006/08/09(水) 19:02:27
>>962
6.0から2003にコンバートするよりは、わりと楽じゃないかな。
コントロール配列やDataGridの使いにくさに辟易したよ。
965デフォルトの名無しさん:2006/08/09(水) 19:54:43
え!?まだVB.NETなんて使ってるの?
966デフォルトの名無しさん:2006/08/09(水) 23:10:30
初めて3週間の初心者です
二重引用符「"」をInStr関数で検索したいのですが、「"""」と入力しても認識してくれません
F1押したり検索したりしましたが解決法は分かりませんでした
どうしたらいいでしょうか
967966:2006/08/09(水) 23:21:23
自己解決しました
ヘルプにありました

Visual Basic は二重引用符が文字列リテラルに 2 つ続けて出現した場合に、文字列内の 1 つの二重引用符として解釈します。

「""""」で解決しました

968デフォルトの名無しさん:2006/08/10(木) 04:37:20
質問スレとしてほぼ機能してない腱
969デフォルトの名無しさん:2006/08/10(木) 15:38:47
ちょっと教えてください。

Try
 func()
Catch
End Try
上記のfunc内で例外が発生した場合にfunc内でCatchしても
上のfunc呼び元のCatchに入ってしまうのですが
これ呼び元のCatchに行かなくする方法はありますか?
970デフォルトの名無しさん:2006/08/10(木) 16:32:56
意味わからん俺がアホだからかorz
971デフォルトの名無しさん:2006/08/10(木) 16:44:36
>>969
Catchにいって正常なのでは?
というか、行かせたくないのに(func内で処理済だから?)Tryを使用する意図は何?
972デフォルトの名無しさん:2006/08/10(木) 16:45:29
>>969
>これ呼び元のCatchに行かなくする方法はありますか?
行かなくなるのが普通の動作。再throwしてるとか何か間違いを犯している。
わからないならfuncの中身をさらすべし。
973デフォルトの名無しさん:2006/08/10(木) 19:31:20
funcの中でもTry〜Catchをやっているだけです。
というか、通常ではfuncの中で例外が発生してCatchすると、呼び元のCatchには行かないのでしょうか?
974デフォルトの名無しさん:2006/08/10(木) 19:38:20
そうだよ
逆にcatchしなかったらエラーが出てその場で終了
975デフォルトの名無しさん:2006/08/10(木) 19:40:10
funcのCatch内でさらに例外が発生してるのでは?
976デフォルトの名無しさん:2006/08/10(木) 19:57:36
それならfuncのcatch内の例外が発生したところでダイアログが出て止まるはず
意図的にthrowしないかぎり外にはいかない
977デフォルトの名無しさん:2006/08/10(木) 20:07:57
vb.net 2005 で、下記の事を両立させるのは無理でしょうか?
方法があれば教えてください。

1) フォーム起動前にある確認を行ない OK の場合のみフォームを表示したい
NG の場合はフォームを表示したくない
(エントリポイントを作成して実装)

2) アプリケーションの2重起動チェック
単一インスタンスのアプリケーションを作成する、にしたい

エントリポイントを変更する為に、アプリケーション フレームワークを有効にするにすると
単一インスタンスのアプリケーションを作成するにチェックが入れられません。

上記を両立する方法があれば教えてください。


978デフォルトの名無しさん:2006/08/10(木) 20:14:47
ぐぐればいくらでも見つかるぞ
979デフォルトの名無しさん:2006/08/10(木) 20:39:04
>>976
funcを呼んでる所でCatchしてればダイアログはでないよ
980デフォルトの名無しさん:2006/08/10(木) 23:26:01
質問です。
親・子画面があるとして、
親画面に子画面があたかもくっついているかのように
親画面を動かすと子画面も動かすには、どうしたらいいでしょうか?

981七資産:2006/08/10(木) 23:45:47
つMDI
982980:2006/08/10(木) 23:52:22
>>981
MDIがヒントですか?
ググってみます
983980:2006/08/10(木) 23:55:25
>>981
ありがとうございます。
何とかなりそうです。

てっきり、親座標位置を求めて、
いろいろ、やらないといけないと思ってました。
984デフォルトの名無しさん:2006/08/11(金) 02:33:49
VB.NETでAccess2000のテーブルを既存のSQLServerに全行INSERTしたいのですが、
どのようにやればよいでしょうか?

googleで検索したのですが、なかなか見つかりません(逆方向は良く見かけます;)
985デフォルトの名無しさん:2006/08/11(金) 02:44:19
逆の逆をやればいいだけなんじゃ
986デフォルトの名無しさん:2006/08/11(金) 02:51:21
VBはもう忘れたが、func()内で発生してる冷害とfunc()内でCatchしてる
例外の種類が違うんじゃないのか?
987デフォルトの名無しさん:2006/08/11(金) 02:56:01
>>985
そう思ってやってはみているのですが、なかなかうまくいかないのです;

そもそもSQL側の接続でAccessのテーブルを呼んでINSERTすればいいのか、
Access側の接続でSQLのテーブルを指定してINSERTすればいいのかがわかりません。
宜しければサンプルなどの場所(検索のヒント)等いただければ幸いです・・・。
988デフォルトの名無しさん:2006/08/11(金) 03:21:40
その程度のサンプルは見たこと無いな。
しかし同じ接続では無理だろ。
きっちり同じスキーマならDataSet位は共通でいけるかもしらんけど。
AccessはAccess(もしくはODBC)のアダプタで読み込んでから
SQLのアダプタで書き込めよ。
てか、SQLのマネージャかなにかでAccessのテーブル読み込めるんじゃないのか?
テーブル指定して右クリック>全タスクから選択>データのインポート
とか調べるほうが早そうだ。
989デフォルトの名無しさん:2006/08/11(金) 03:36:38
>>988
レス有難う御座います。
理由があって手動でのインポートはできません。
どうしてもプログラム上でやる必要がありまして;

>AccessはAccess(もしくはODBC)のアダプタで読み込んでから
>SQLのアダプタで書き込めよ。
アダプタ1にAccess、アダプタ2にSQLのテーブルを読み込むということでしょうか?
アダプタ2へアダプタ1のデータ内容を丸々書き込むにはどうしたらよいでしょうか。
恥ずかしながら、Datasetを使っての一件ずつのデータ更新しかしたことなくて;
990デフォルトの名無しさん:2006/08/11(金) 03:37:18
単にAccessからSQLに変換できればいいだけなら
http://www.microsoft.com/japan/msdn/vbasic/migration/tips/Conversion/

VBプログラムで処理することに拘るなら接続切り替えて詰め替えるだろうな
991デフォルトの名無しさん:2006/08/11(金) 03:55:08
アダプタ使っての書き込み方法なら
http://msdn2.microsoft.com/ja-JP/library/33y2221y.aspx

すまんが異種のアダプタ間でお手軽に丸丸コピーはやったことは無いのでわからん。
スキーマが同じなら(もしくは一旦XML経由か何かで)AccessのDataSet渡せば
いけそうな気もするが、それで無くとも1行ずつ持っていけばいいんじゃないのか?
992デフォルトの名無しさん:2006/08/11(金) 04:14:50
>>991
有難う御座います。
データ総数が1万件以上になるので、1行ずつはちょっと厳しいと思います。
とりあえず、Datasetを渡すようにこれからちょっと組んでみます。
993992:2006/08/11(金) 05:33:40
作ってみましたが、更新できませんでした。
エラーは出ないのですが、処理後にSQL側のテーブルを見ても、レコードが追加されていません。

(接続処理など割愛)
AccessAdp.Fill(AccessDs, "Table")
SqlAdp.Fill(SqlDs, "Table")
SqlDs = AccessDs.Copy()
SqlAdp.Update(SqlDs, "Table")

やはりこれでは無理なのでしょうか。
それとも私の作り方が的外れですか?
994デフォルトの名無しさん:2006/08/11(金) 05:54:12
>>993
データセットの完全なコピーを作ってしまうと、読み込んで何も変更を加えていない状態なので
Adapter.Updateでは全件処理がスキップされる。
コピー後に行ごとのステータスをAdd状態に変更する必要がある。

OleDbCommand/DataReaderで1件ずつ読み込みながらSqlCommandでinsertを繰り返してゆく方法で十分。
DataAdapterを見ればわかるが結局のところ更新処理は1件ずつしかやってないから処理効率は変わらないと思うぞ。
今はメモリを腐るほど積んでるとはいえ上限がはっきりしない大量データをオンメモリー処理するのは抵抗あるな。
995デフォルトの名無しさん:2006/08/11(金) 07:37:25
>>984
つーかそれvbでやらんといかんの?
accessでやった方がよほど簡単じゃね?
SQLserver←→Oracleなんてのも簡単だし
(ま遅いけどw)
996デフォルトの名無しさん:2006/08/11(金) 08:04:51
vb.net 2005 です。
関数の呼び出し記録を全てログファイルに記録したいのですが、
そういった事を行なう便利な仕組みはありますか?

やはり関数の呼び出し前に、ログファイルに書き出す関数を呼び出すよう
自分で書くしか方法はないでしょうか?
997デフォルトの名無しさん:2006/08/11(金) 08:19:46
自分は見たこと無いな。
あと関数の呼び出し前に書くよりは呼び出される関数の
トップにログ出力処理を書くのが一般的。
998デフォルトの名無しさん:2006/08/11(金) 09:48:21
フォーム上のコントロールの入力内容に変化があったら
「変更があります。更新しないで終了しますか?」
というメッセージを出したいのですが
全コントロールのchangedイベントで変更されたことを
逐次保存しておかなければこのような処理はできないのでしょうか?
999デフォルトの名無しさん:2006/08/11(金) 10:13:35
VB.netからsocketsが実装されたというのですが、rawに関するサンプルというものはどこかにないでしょうか。

Public Class Form1
Dim objNetworkStream As System.Net.Sockets.NetworkStream
Dim rawSocket As System.Net.Sockets.Socket

Sub test()
   Dim ipHostInfo As IPHostEntry = Dns.Resolve("localhost")
  Dim ipAddress As IPAddress = ipHostInfo.AddressList(0)
Dim ipe As New IPEndPoint("ipAddress", 0)
Dim rawSocket As System.Net.Sockets.Socket
rawSocket = New System.Net.Sockets.Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP)
rawSocket.Blocking = False
rawSocket.Bind(ipe)

と、バインドまではなんとかなっているとは思うのですが、ここから先がさっぱりです。
サンプルコードかなにか、ご存じの方がいたら教えていただけないでしょうか、お願いします。


MSDNとかを見て回ったのですが、わかりませんでした。
特定のポートで通信している、サーバーとクライアント間の通信ログを取ることが目的です。
1000デフォルトの名無しさん:2006/08/11(金) 10:22:01
初めての1000!
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。