VBプログラマ質問スレ(Ver.6.0 まで) part57

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
ここは Visual Basic 〜6.0 の質問スレです。
質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。

VB.NETは別物なので専門スレで、VBA、APIの質問もそれぞれのスレで。

○ 質問者の心得
 一.質問する前にMSDNやGoogle、過去ログにも目を通してみる。
 二.VBScript、インストーラーなどはこのスレでOK。
 三.質問は第三者にもわかりやすいよう簡潔かつ具体的に。
 四.荒らしは相手しない。

○ 回答者の心得
 一.答えられない質問は無駄に罵倒せずスルー。無理するな。
 二.代用法を強制しない。
 三.回答する上で必須ではない情報をむやみに聞き返さない。
 四.荒らしは相手しない。
 五.VB情報募集中。
 六.回答は質問者が理解できるよう具体的に。

MSDN Online Japan ホーム
 http://www.microsoft.com/japan/msdn/default.asp
Visual Studio 6.0 Service Pack 6
 http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx
Google
 http://www.google.co.jp/

※「まず自分で調べる」クセを身につけよう。
2デフォルトの名無しさん:2011/04/30(土) 01:50:49.55
Part 1 http://piza2.2ch.net/tech/kako/968/968328471.html
Part 2 http://piza2.2ch.net/tech/kako/990/990793224.html
Part 3 http://piza2.2ch.net/tech/kako/1000/10005/1000523122.html
Part 4 http://pc.2ch.net/tech/kako/1006/10069/1006922992.html
Part 5 http://pc.2ch.net/tech/kako/1010/10106/1010624646.html
Part 6 http://pc.2ch.net/tech/kako/1013/10138/1013844542.html
Part 7 http://pc.2ch.net/tech/kako/1015/10158/1015836357.html
Part 8 http://pc.2ch.net/tech/kako/1018/10187/1018794901.html
Part 9 http://pc.2ch.net/tech/kako/1020/10208/1020830472.html
Part10 http://pc.2ch.net/tech/kako/1022/10221/1022127528.html
Part11 http://pc.2ch.net/tech/kako/1024/10243/1024380249.html
Part12 http://pc3.2ch.net/tech/kako/1026/10266/1026642565.html
Part13 http://pc3.2ch.net/tech/kako/1029/10292/1029241786.html
Part14 http://pc3.2ch.net/tech/kako/1030/10309/1030947162.html
Part15 http://pc3.2ch.net/tech/kako/1032/10327/1032706491.html
Part16 http://pc3.2ch.net/tech/kako/1034/10343/1034302532.html
Part17 http://pc3.2ch.net/tech/kako/1036/10361/1036154952.html
Part18 http://pc3.2ch.net/tech/kako/1038/10381/1038103769.html
Part19 http://pc3.2ch.net/tech/kako/1039/10398/1039859691.html
Part20 http://pc2.2ch.net/tech/kako/1041/10418/1041879465.html
Part21 http://pc2.2ch.net/tech/kako/1044/10440/1044028945.html
Part22 http://pc2.2ch.net/tech/kako/1046/10463/1046354784.html
Part23 http://pc2.2ch.net/tech/kako/1047/10477/1047743187.html
Part24 http://pc2.2ch.net/tech/kako/1050/10501/1050151126.html
Part25 http://pc2.2ch.net/tech/kako/1052/10526/1052627913.html
Part26 http://pc2.2ch.net/tech/kako/1055/10551/1055145106.html
Part27 http://pc2.2ch.net/tech/kako/1058/10586/1058674927.html
Part28 http://pc2.2ch.net/tech/kako/1061/10612/1061296197.html
Part29 http://pc2.2ch.net/tech/kako/1065/10654/1065446334.html
3デフォルトの名無しさん:2011/04/30(土) 01:51:19.26
Part30 http://pc2.2ch.net/test/read.cgi/tech/1069160036/
Part31 http://pc2.2ch.net/test/read.cgi/tech/1073732636/
Part32 http://pc5.2ch.net/test/read.cgi/tech/1077216109/
Part33 http://pc5.2ch.net/test/read.cgi/tech/1080606445/
Part34 http://pc5.2ch.net/test/read.cgi/tech/1084544243/
Part35 http://pc5.2ch.net/test/read.cgi/tech/1087519251/
Part36 http://pc5.2ch.net/test/read.cgi/tech/1092906058/
Part37 http://pc5.2ch.net/test/read.cgi/tech/1090286450/
Part38 http://pc5.2ch.net/test/read.cgi/tech/1095673000/
Part39 http://pc5.2ch.net/test/read.cgi/tech/1099737063/
Part40 http://pc5.2ch.net/test/read.cgi/tech/1106748775/
Part41 http://pc8.2ch.net/test/read.cgi/tech/1112414085/
Part42 http://pc8.2ch.net/test/read.cgi/tech/1116924129/
Part43 http://pc8.2ch.net/test/read.cgi/tech/1123952677/
Part44 http://pc8.2ch.net/test/read.cgi/tech/1130231657/
Part45 http://pc8.2ch.net/test/read.cgi/tech/1133977286/
Part46 http://pc8.2ch.net/test/read.cgi/tech/1138975113/
Part47 http://pc8.2ch.net/test/read.cgi/tech/1141320612/
Part48 http://pc8.2ch.net/test/read.cgi/tech/1146678926/
Part49 http://pc8.2ch.net/test/read.cgi/tech/1152667953/
Part50 http://pc10.2ch.net/test/read.cgi/tech/1161517193/
Part51 http://pc11.2ch.net/test/read.cgi/tech/1169949451/
Part52 http://pc11.2ch.net/test/read.cgi/tech/1179563617/
Part53 http://pc11.2ch.net/test/read.cgi/tech/1187667616/
Part54 http://pc11.2ch.net/test/read.cgi/tech/1204552981/
Part55 http://pc12.2ch.net/test/read.cgi/tech/1247487156/
Part56 http://hibari.2ch.net/test/read.cgi/tech/1275397597/
4デフォルトの名無しさん:2011/04/30(土) 01:52:22.06
クラス間の依存性は減るけど、XMLへの依存が強いってことは何の問題もないの?
5デフォルトの名無しさん:2011/04/30(土) 01:53:44.88
素人は黙ってネンネしなさい
6デフォルトの名無しさん:2011/04/30(土) 01:57:13.01
>>1000
だからDIはそれを使いやすくフレームワークに
まとめた仕組みのことを言うんだよ。

具体的にはオブジェクトの生成部分を
コード内に書かないでフレームワークに任せる。

多態を使ってても、オブジェクトの生成は
コードに書いてしまうだろ。それじゃだめだってこと。
7デフォルトの名無しさん:2011/04/30(土) 02:02:05.11
>>4
依存をなくすのではなくて依存を分離するのが目的。
クラスから依存が減る。それはなくなるという意味ではなく
XMLに分離するということ。

あなたの言っていることは問題ではなくて、
そもそもそういうふうにしたい事、つまり目的だよ。
8デフォルトの名無しさん:2011/04/30(土) 02:09:57.79
なるほどね
9デフォルトの名無しさん:2011/04/30(土) 02:17:09.59
こういう感じのとは違うん?

Private Sub Command1_Click()
Dim fso As Object
Dim objname$, pth$
objname = "Scripting.FileSystemObject"
Set fso = CreateObject(objname)
pth = CallByName(fso, "BuildPath", VbMethod, "c:\windows", "test.ini")
Debug.Print pth
End Sub

10デフォルトの名無しさん:2011/04/30(土) 02:28:44.10
>>9
やってることはそれに近いけど、それでは
それは普通のやり方よりコードが増えて、面倒になってる。
そういう面倒事をやってくれるのがDIコンテナ

public fso As IFileSystemObject
Private Sub Command1_Click()
pth = fso.BuildPath("c:\windows", "test.ini")
Debug.Print pth
End Sub

これだけじゃ動かない? たしかにfsoがNothingだからね。
でこれを動くようにしてくれるのがDIコンテナ。
11デフォルトの名無しさん:2011/04/30(土) 02:35:52.78
コンパイラがDIコンテナを使うってことか
12デフォルトの名無しさん:2011/04/30(土) 02:39:04.11
>>11
なんかとんでもない勘違いをしてるぞw
13デフォルトの名無しさん:2011/04/30(土) 02:43:07.62
眠いので頭が正常に働いてないのかも
明日昼間もういちど前スレから読み直してみる
ありがと
14デフォルトの名無しさん:2011/04/30(土) 02:54:27.75
実際には、FileSystemObjectはIFileSystemObjectインターフェースを
継承してないから、fsoにFileSystemObjectそのものを入れることはできない。
入れることができるようにした「FileSystemObjectっぽいもの」を作る必要がある。
でもそれは既存のクラスの問題であって、自分で作るクラスには関係ない話。

重要なのは、このコードには new FileSystemObjectっぽいもの というコードが入ってないから
fsoには「FileSystemObjectっぽいもの」だけではなく、たとえば
テスト用のFileSystemObjectを入れたり、ネットワーク対応のFileSystemObjectを入れたりできる。
実際に入れる作業をするのはDIコンテナだけどね。

特にテスト用のFileSystemObjectを入れられるところが重要で、
FileSystemObjectを使わずに単体テストができる
それでいてコードが前と殆ど変わってないところも注目するところ。

で、最初の質問に答えると、VB6用のDIコンテナは知らないが(多分ないと思う)
DIコンテナを作ることは可能
15デフォルトの名無しさん:2011/04/30(土) 02:59:09.66
Windows Script Host Object Model (wshom.ocx)
Microsoft Sripting Runtime (scrrun.dll)
の両方にFileSystemObjectあるけど未だに違いがわからん
16デフォルトの名無しさん:2011/04/30(土) 03:02:52.11
むしろ、継承はないがインターフェースはあるVB6には
DIはぴったりだと思うな。

DIが出てきた背景には(昔の)EJBの継承を強要するやり方は
複雑でテストしにくい。POJO(継承使ってない単純なオブジェクト)を
使いましょう。ってのがあるし。

VBはもともと継承が使えない。
17デフォルトの名無しさん:2011/04/30(土) 03:05:08.26
VB6での新規案件なんかあるのか?
18デフォルトの名無しさん:2011/04/30(土) 03:10:07.03
ああ、コンパイラじゃなくて
別のとこでfsoに代入するコードが書かれてるってことか
19デフォルトの名無しさん:2011/04/30(土) 03:18:52.07
>>18
そう。書かれてる。

ただしDIコンテナというフレームワークが
やってくれるところだから見るべきところではない。
勝手に入れてくれるという認識でOK

ただし、VB6用のDIコンテはないw
20デフォルトの名無しさん:2011/04/30(土) 03:22:28.04
よくわかった
21デフォルトの名無しさん:2011/04/30(土) 08:47:23.24
一応、開発にはimplements使ってる。
ListViewとかTreeViewへの表示にはimplementsしたクラスを
利用してる。これだけでもだいぶ助かるけど…

Javaだとインターフェースはインターフェースだけで
その場でインターフェースをnewして、しかもその場で
実装を書くことが可能。

VB6やってて不便に思うのは…
引数付きコンストラクタが無い事と、インターフェースのnew実装か。
22デフォルトの名無しさん:2011/04/30(土) 11:45:40.71
インターフェースをnewするって意味が分からないけど・・・

引数付きコンストラクタは、適当な関数でも作ればいいと思う。
newして引数を設定する関数でも、newしてクラスのメソッドを呼び出す関数でも。
23デフォルトの名無しさん:2011/04/30(土) 11:47:30.26
> Javaだとインターフェースはインターフェースだけで
> その場でインターフェースをnewして、しかもその場で
> 実装を書くことが可能。

あ、無名クラスのことか。
正確にはインターフェースをnewしてるんじゃなくて
名前がないクラス作ってるんだけどな。
24デフォルトの名無しさん:2011/04/30(土) 12:34:59.22
VBの場合インターフェース無くても同名のメソッドあれば参照できるんじゃなかったっけ?

25デフォルトの名無しさん:2011/04/30(土) 12:52:17.30
Dim c1 As New Class1 'Public Sub Hoge() を持ってる
Dim c2 As New Class2 'Implements Class1 をして Hoge()をオーバーライド
Dim c3 As New Class3 'Public Sub Hoge() を持ってるClass1とは別物
Dim c4 As New Class4 'Implements Class1 してる且つ独自にPublic Sub Hoge()を持ってる
Dim obj As Object
Dim ic1 As Class1

Set obj = c1: obj.Hoge 'OK
'Set obj = c2: obj.Hoge 'Error (Class1_Hogeは呼ばれない)
Set obj = c3: obj.Hoge 'OK
Set obj = c4: obj.Hoge 'OK 自前Hogeが呼ばれる
Set ic1 = c1: ic1.Hoge 'OK
Set ic1 = c2: ic1.Hoge 'OK
'Set ic1 = c3: ic1.Hoge 'Error (クラスが別物で代入できない)
Set ic1 = c4: ic1.Hoge 'OK Class1_Hogeが呼ばれる
26デフォルトの名無しさん:2011/04/30(土) 22:42:11.86
インターフェースなくても同名メソッド使えるっていうのは嫌だな。
かといって、インターフェースかぶせても、

インターフェース名_メソッド名

が、メソッド名になるのも、はっきりいってうっとおしい。
27デフォルトの名無しさん:2011/05/01(日) 02:54:20.11
引数の型をObjectやVariantにせず、ちゃんとインターフェース用のクラスの型を設定すればいいし
Javaとかだとインターフェース無しでインターフェース用のメソッドにアクセスできるんだっけか?
interface Class1 { void hoge(); }
class Class2 implements Class1 { public void hoge(){} }

Class2 c2 = new Class2; c2.hoge();ができちゃうけど
VBだとちゃんとインターフェースかまさなきゃhogeできないのは優秀なんじゃね?
28デフォルトの名無しさん:2011/05/01(日) 02:56:19.90
どうでもいいことだけど、些細なミスnew Class2();ね
29デフォルトの名無しさん:2011/05/01(日) 04:16:08.27
>>26
> インターフェースなくても同名メソッド使えるっていうのは嫌だな。
そういう言語は他にもあるし(例 JavaScript、Perl)

> インターフェース名_メソッド名
インターフェース名::メソッド名 や インターフェース名.メソッド名
と大差ない

まだまだ経験が足りないようだなw
30デフォルトの名無しさん:2011/05/01(日) 04:22:24.58
Javaって
インターフェース名_メソッド名 に
ならないから、
複数のインターフェースで同名のメソッドがあった場合に
困るんだっけ?count()とかありがちなメソッド
31デフォルトの名無しさん:2011/05/01(日) 04:38:54.04
vbは優秀だな
32デフォルトの名無しさん:2011/05/01(日) 14:16:00.62
まあVB6はともかく、VB.NETのインターフェイスの仕組みは良くできてる。
こればっかりはC#より良い。
33デフォルトの名無しさん:2011/05/01(日) 15:20:47.28
VB6のインターフェイスはCOM相互運用のための機能だからああゆう形になるのは仕方が無いね。
VB6のインターフェイスの宣言は中身(実装)の無いクラスを使うことが多いけど、
IDLも使えるあたりもろにCOM相互運用のためのものと分かる。
>>32
VB.NETのインターフェイスは実装のときに
C#の明示的実装のような書き方になるのであんまり好きじゃないけど、
良くできてると思うのはなぜ?
34デフォルトの名無しさん:2011/05/01(日) 15:47:40.04
>>33
例えばC#の場合、インターフェイスのメンバーを、

(1) 同じ名前のシグネチャのメソッドとして実装した場合、どれがインターフェイスを
実装したメソッドか明示的に分からない。(これは個人的に気持ち悪い)

(2) 明示的実装を使った場合は、そのメソッドはインターフェイスを通してしか
呼び出せない。

という問題があるけど、VBの場合はこれがない。
一つのメソッドが普通のクラスメンバでありつつ、同時にインターフェースの
明示的な実装でもありうる。

http://www.atmarkit.co.jp/fdotnet/onepoint/onepoint01/onepoint01_02.html
35デフォルトの名無しさん:2011/05/02(月) 00:04:56.75
なんか珍しくオブジェクト指向っぽいスレの流れになってるので
この流れで質問させてほしい。

マイクロソフト系言語には、プロパティつうものの存在があって
プロパティ用のアクセッサの書き方があるけど、

普通にゲッタとセッタで実装できそうなのに、なんでプロパティ用の
アクセッサの書き方があるの?
36デフォルトの名無しさん:2011/05/02(月) 00:34:33.44
一つはプロパティという概念を導入した方がクラスの構造がわかりやすくなるから。
変数名などa, b, c, ....でも「実装できそうなのに」分かり易い名前を付けるのと同じ動機。

もう一つはプロパティとメソッドが機械から区別できた方がいい事があるから。
例えばVB6でも.NETでもGUIアプリのデザインをデザイナでデザインできるのはこのため。
37デフォルトの名無しさん:2011/05/02(月) 05:27:47.95
>>35
メソッドと同じ書式でいちいちゲッタセッタを書くのが面倒だから。
プロパティならとりあえず変数として宣言しておいて、
あとで気が変わったときにゲッタセッタ(プロパティ)を書けば済む。
38デフォルトの名無しさん:2011/05/02(月) 13:55:12.47
>>37
答えになってないでしょ。
何故Bが必要かと聞いているのに、何時でもAはBに変更できるからってそれ何だよ。
39デフォルトの名無しさん:2011/05/03(火) 15:41:07.99
レスキュー花ちゃんはありがたいね
40デフォルトの名無しさん:2011/05/03(火) 15:51:32.83
わざわざ上げてまで今それを言う理由が理解できない。

あそこは今でも一部tipsは有料でやってるのかな。
そりゃ人がどんな商売しようと自由だけど、個人的にはケツの穴が小さいなと思わずにいられない。
41デフォルトの名無しさん:2011/05/05(木) 16:01:42.55
コマンドライン引数で日本語パス・ファイル名を受け付けないソフトって諦めるしかない?
渡すファイルを、一旦、日本語を使わないパス・ファイル名にコピーしてから渡す回避策はあるけれど
42デフォルトの名無しさん:2011/05/05(木) 19:21:33.46
>>35
> 普通にゲッタとセッタで実装できそうなのに、なんでプロパティ用の
> アクセッサの書き方があるの?

人間の感覚だろうなぁ。

プログラム言語とは関係ないUMLだって、
メソッドとは別に属性(プロパティ)というものがある。

だけど、これ、ゲッタ、セッタで置き換え可能。
つまり実装するにあたって属性というものは必要ないということになるが、
やっぱり属性ってのは、メソッドとは別ものと人間は考えてしまうようだ。
43デフォルトの名無しさん:2011/05/05(木) 22:11:51.68
>>35
オブジェクト指向の話になるとオブジェクト指向論と
オブジェクト指向言語の実装についての話がごっちゃになるんだが
メッセージパッシングをメソッド呼び出しで実装したと考えれば
外部公開属性はやっぱ別にしたい
44デフォルトの名無しさん:2011/05/07(土) 02:18:50.27
ゲッタ・セッタでは

object.property++ なんて書き方ができない

object.setProperty(object.getProperty()+1) こうなる。
45デフォルトの名無しさん:2011/05/07(土) 03:06:00.34
VB6にインクリメントの演算子なんてあったっけ?
46デフォルトの名無しさん:2011/05/07(土) 15:30:58.47
>>44
>object.property++ なんて書き方ができない

この書き方をしたいならメンバ変数をPublicにすれば良いだけ。

>object.setProperty(object.getProperty()+1)

この方が安全といえば安全と思う。
47デフォルトの名無しさん:2011/05/07(土) 21:07:10.24
安全とか危険とか何意味不明なこと言ってるんだw
インクリメント演算子なんてものはないにしても、>>44の言いたいことはまあ半分は分かる。

要するに、
>object.setProperty(object.getProperty()+1)
こういうのは見難いし醜いということ。

ついでに変数をPublicにしたのでは値の取得または設定時に動作を絡ませることができない。
48デフォルトの名無しさん:2011/05/08(日) 00:32:37.20
インターフェースを変えることなく、
感覚通りに名前をつけられるのが
プロパティのいいところ。
49デフォルトの名無しさん:2011/05/08(日) 01:42:29.37
>object.setProperty(object.getProperty()+1)
こういうのは
object.addProperty(1)
を作ればいいのでは
50デフォルトの名無しさん:2011/05/08(日) 17:27:14.50
>>49
まあそれが妥当だろうね。
51デフォルトの名無しさん:2011/05/08(日) 18:03:11.90
どこが妥当だよw

属性(プロパティ)が100あったら、100ごとにセッタ、ゲッタ、>>49相当のものを
一々書くのかw

書く手間のことを言ってるんじゃない。
各属性ごとにその3つなら3つのメソッドを管理するの?
やってられるかよ。

ちなみにaddHogeでは「Hogeを足す」になってしまわないか?
52デフォルトの名無しさん:2011/05/08(日) 19:09:44.58
必要なメソッドは必要な時に記述
53デフォルトの名無しさん:2011/05/09(月) 00:15:16.20
まずプロパティが100あるっていう前提からしてアホっぽいが
>addHogeでは「Hogeを足す」
まさにそういうメソッドだろう
54デフォルトの名無しさん:2011/05/09(月) 00:25:56.79
いい歳こいて日本語の「てにをは」が使えないのは恥ずかしいよ。
「Hogeに足す」と「Hogeを足す」の違い分かる?
55デフォルトの名無しさん:2011/05/09(月) 00:37:15.56
んなもんHogeが実際なんなのかによるだろうと思うが
気にいらんかったらaddHogeValueでもaddHogeCountでも
好きに作ったらええがな
56デフォルトの名無しさん:2011/05/10(火) 13:59:16.81
VB2003の質問はここでよろしいでしょうか?
57デフォルトの名無しさん:2011/05/10(火) 15:32:38.22
ここはVB6まで
58デフォルトの名無しさん:2011/05/13(金) 21:57:56.25
プロパティに自由にアクセスできてしまうっていうのはどうかと思うぞ。
59デフォルトの名無しさん:2011/05/14(土) 01:39:31.35
>>58
それは、ゲッターとセッターの両方をつけるのと何が違うんだ?
60デフォルトの名無しさん:2011/05/14(土) 06:46:10.74
>>59
ゲッター/セッターなら、変な値を設定できないようにしたり、
読み出された回数数えたりできるよ。
61デフォルトの名無しさん:2011/05/14(土) 09:34:59.88
フレックスグリッドコントロールを使ってるんですが、
エクセルみたいにセルの下や右だけ罫線の色を変える、みたいなことはできないんですか?
62デフォルトの名無しさん:2011/05/14(土) 10:15:51.49
付属のMSフレックスグリッドでは出来ないけど
フレックスグリッド系コントロールの中には、それが出来るものもある
当然、無料じゃないけどな

あとはラインとかピクチャーコントロールとかに色つけて重ねて
擬似的に実装するとかな
63デフォルトの名無しさん:2011/05/14(土) 16:42:05.71
>>60
プロパティプロシージャでもできるやろ
64デフォルトの名無しさん:2011/05/14(土) 18:15:27.31
65デフォルトの名無しさん:2011/05/14(土) 18:23:24.27
>>58以降の流れはどれも何が言いたいのかさっぱり分からん。
特に>>64
個人的にはこういうのは他人がエスパーだと思ってるとしか思えん。
66デフォルトの名無しさん:2011/05/14(土) 18:55:36.41
理解したくなければ放置しとけば言いし、
理解したいなら「どういうこと?」って聞けばいいのに。
67デフォルトの名無しさん:2011/05/16(月) 13:19:30.97
ファイルサイズ取得ってこんな感じで問題ない?問題ある?

With New FileSystemObject
filesize = .GetFile(filepath).Size
End With
68デフォルトの名無しさん:2011/05/16(月) 13:33:41.86
実装してみて実際のファイルサイズを取得してみて合ってるならそれでいいのでは?
69デフォルトの名無しさん:2011/05/16(月) 13:53:05.69
okわかった。ありがと
70デフォルトの名無しさん:2011/05/16(月) 17:31:59.11
ちゃんと8Gオーバーくらいのサイズで試さないとね
71デフォルトの名無しさん:2011/05/16(月) 19:44:45.24
>>67
またWithでNewか。いいけど。
72デフォルトの名無しさん:2011/05/17(火) 00:06:52.59
えー、With Newって書き方は初めて見た。
これって、End Withで解放されるの?
ガーベジコレクション的にも大丈夫?

ところで皆さんはガーベジコレクションって言いますか?
ガーベッジコレクションって言いますか?
73デフォルトの名無しさん:2011/05/17(火) 18:55:36.37
>>72
End Withの後、アクセスしようが無くなって、たぶんメソッド抜けた時点で開放されるかな。
74デフォルトの名無しさん:2011/05/17(火) 22:21:37.18
そういうメモリから解放されたかどうかって知るすべあるの?
75デフォルトの名無しさん:2011/05/18(水) 07:15:17.07
>>74
自作クラスでやるなら、簡単だよな?
76デフォルトの名無しさん:2011/05/18(水) 17:14:53.76
おせーてくらさい
77デフォルトの名無しさん:2011/05/18(水) 19:38:30.99
>>76
terminateイベントプロシージャにDebug,Print "hoge"とでも書けば
78デフォルトの名無しさん:2011/05/19(木) 01:03:58.16
dd
なるほど
79デフォルトの名無しさん:2011/05/19(木) 01:08:41.62
'Class1
Public Sub Hoge()
Debug.Print "hoge"
End Sub
Private Sub Class_Initialize()
Debug.Print "initialize"
End Sub
Private Sub Class_Terminate()
Debug.Print "terminate"
End Sub

'Form1
Private Sub Command1_Click()
Debug.Print "click"
With New Class1
Debug.Print "call hoge"
.Hoge
Debug.Print "aftre call hoge"
End With
Debug.Print "end sub"
End Sub

'Result
click
initialize
call hoge
hoge
aftre call hoge
terminate
end sub
80デフォルトの名無しさん:2011/05/20(金) 15:31:26.12
VBを今のところ、ただ勉強目的で始めたいのですが、VBの何をまずダウンロードすればいいのか、わかりません。教えてください。

自宅でWindows7を使っています。インターネット接続環境はありません。そのため、ネットカフェでダウンロードして、自宅でそれをインストールしたいのですが、オフラインの自宅でインストールは可能でしょうか?

また何というものをダウンロードすればいいのですか?

いろいろ調べたら、単なる勉学者は、Express Editionとかいうのをダウンロードすればいいみたいですが、詳しくはわかりません。

以上を踏まえ、どなたか何とぞ、お教えねがいます。
81デフォルトの名無しさん:2011/05/20(金) 16:06:07.83
>>80
スレ違い

ダウンロード出来るのは、VBではなくVB.NET

VB.NET質問スレ(Part36)
http://hibari.2ch.net/test/read.cgi/tech/1301828549/
82デフォルトの名無しさん:2011/05/20(金) 16:15:50.20
ftp://ftp.microsoft.com/softlib/
このサイトのMSLFILESにあるVB6用のサンプルプログラムってVB6やるからには見ておいたほうがいいの?
83デフォルトの名無しさん:2011/05/20(金) 17:55:11.04
84デフォルトの名無しさん:2011/05/20(金) 17:58:13.02
85デフォルトの名無しさん:2011/05/20(金) 18:06:50.49
なにがしたいんだよ
86デフォルトの名無しさん:2011/05/21(土) 23:03:28.32
フォーム上のコマンドボタンを押すと1行目に『ビート』、2行目に『たけし』とリストボックスに追加されるプログラムがある。【@】、【A】を埋めて完成させよ。リストボックスのオブジェクト名は『List1』とする。

Private Sub Command1_Clic()

List1.【 @ 】
List1.【 A 】

End Sub
87デフォルトの名無しさん:2011/05/21(土) 23:11:50.42
動的配列を使い、コマンドボックスを押すたびに配列の数が増えるプログラムを【】を埋めて完成させよ。

Private Max As Long 'データ数を保存する変数
Private Hairetu() As Long '配列


Private Sub Form_Load()
Max = 0 'データ数初期化
End Sub

Private Sub Command1_Click()

Max = Max + 1 'データ数を1つ増やす
【 】'実際に配列の範囲を変更

End Sub
88デフォルトの名無しさん:2011/05/21(土) 23:24:53.29
先生、コマンドボックスってなんですか?
89デフォルトの名無しさん:2011/05/21(土) 23:46:50.70
Redim Preserveだが…なんでこんな問題作ってんの?
90デフォルトの名無しさん:2011/05/22(日) 00:57:54.89
学校の宿題なんだろ
91デフォルトの名無しさん:2011/05/22(日) 01:13:59.00
「値を保持したまま」とは書いてないから、ReDimだけで良いのでは?
値の保持が必要ないなら、ReDim Preserveは遅いだけだし
92デフォルトの名無しさん:2011/05/22(日) 03:21:05.03
Hairetu()(笑)
93デフォルトの名無しさん:2011/05/22(日) 16:34:01.94
Haiyoru(笑)
94デフォルトの名無しさん:2011/05/22(日) 17:11:34.88
ググればすぐわかるような基本構文問題には答えんなよw
95デフォルトの名無しさん:2011/05/22(日) 20:22:20.71
>>86
先生!なに入れてもコマンドボタンが反応しません!
96デフォルトの名無しさん:2011/05/22(日) 21:00:12.41
確かにあれじゃ反応しないなw
なんてマのヌケた出題なんだろう…
97デフォルトの名無しさん:2011/05/24(火) 23:15:18.09
1つの配列の中に重複するデータが多数ある
重複するデータを抜き出したい
A,B,A,B,A,A,C,F,C....
欲しいデータは重複データなので上記の場合
A,B,Cとなります
unique以外を取得したいのです
98デフォルトの名無しさん:2011/05/25(水) 01:01:19.38
>>97
ソートしてから、2つ以上同一の値が連続しているものを抜粋する
Filter掛けて、戻り値のUBoundが1以上のものを列挙する
連想配列を利用する

いろいろ方法はあるので、お好きな物をどうぞ
99デフォルトの名無しさん:2011/05/25(水) 01:02:11.41
便利なコマンドがVB6以前に存在するのかを尋ねているのか
最速アルゴリズムを尋ねているのか
100デフォルトの名無しさん:2011/05/25(水) 01:30:36.51
じゃあ両方で
101デフォルトの名無しさん:2011/05/25(水) 01:34:08.95
99に期待
10297:2011/05/25(水) 07:51:55.31
>>98
連想配列でぐぐってきた!
連想配列が何か分かったけど、どうアルゴリズム化していいかわかんねw

>>99
uniqueの逆の関数があれば1番良かったんですけど、なさそうなのでアルゴリズムです
10397:2011/05/25(水) 12:53:49.58
自己解決

l = Ubound(hogeArray)
For i=0 TO l
For j=i+1 TO l
If hogeArray(i) = hogeArray(j) Then
'同値の場合の処理
end if
next
next

msgbox hoge
10497:2011/05/25(水) 12:59:17.07
>>103
最後のmsgboxはゴミです
105デフォルトの名無しさん:2011/05/25(水) 18:19:25.53
それだけだと、A,B,A,B,A,A,C,F,Cの場合
BやCみたいに2つの場合はいいけど、Aみたいに4つの場合は6回(3+2+1回)実行されちゃうよ
3つの場合は3回(2+1回)、5つの場合は10回(4+3+2+1回)だ

つまり、「A,B,A,B,A,A,C,F,C」が「A,A,A, B, A,A, A, C」になってしまうので、
それで問題ないなら構わないけど、「A,B,C」にしたいという最初の条件とは違うよね
106デフォルトの名無しさん:2011/05/25(水) 19:45:31.84
perlだと1行で簡単にできる式があったような気がしたw
107デフォルトの名無しさん:2011/05/25(水) 19:53:16.45
で?
108デフォルトの名無しさん:2011/05/25(水) 19:54:26.43
そういや7年くらい前にperlの連想配列と同じことができるVBのクラスを作った記憶があるw
109デフォルトの名無しさん:2011/05/25(水) 20:05:42.48
>>107 で?じゃないだろ?

Private data As Object
Set data = CreateObject("Scripting.Dictionary")

For i = 0 To l
 data(hogearray(i)) = data(hogearray(i)) + 1
 If data(hogearray(i)) = 1 Then
  '新しい配列に追加
 End If
Next i
110デフォルトの名無しさん:2011/05/25(水) 20:42:36.81
何、この子?
111デフォルトの名無しさん:2011/05/25(水) 23:23:18.20
ほうほう。それでそれで?
112デフォルトの名無しさん:2011/05/26(木) 01:59:56.98
Private data As Object
Set data = CreateObject("Scripting.Dictionary")

For i = 0 To l
 data(hogearray(i)) = data(hogearray(i)) + 1
Next i

For Each k In data.Keys
 if k>1 then
  '処理
 end if
Next k
113デフォルトの名無しさん:2011/05/26(木) 02:06:32.87
>>97
>>103を見るかぎりhogeArrayの中身は
11497:2011/05/26(木) 08:41:35.84
>>105
重複処理でuniqueします
115デフォルトの名無しさん:2011/05/26(木) 13:00:44.16
VBで動的連想配列ってできるんですか?
ググっても見付かりません
116デフォルトの名無しさん:2011/05/26(木) 13:12:22.09
117デフォルトの名無しさん:2011/05/26(木) 15:41:14.52
x^3-7*x+1の式でニュートンラフソン法を用い、初期解と繰り返しの回数を入力したら
近似解が求められるプログラミングを作りたいんですが、どう作ればよいですか?

もしスレチでしたらすみません
118デフォルトの名無しさん:2011/05/26(木) 20:51:24.73
119デフォルトの名無しさん:2011/05/28(土) 15:26:54.34
VB6でマルチスレッド作るの無理だよね・・?
120デフォルトの名無しさん:2011/05/28(土) 15:47:14.47
複数プロセス起動すれば良い
121デフォルトの名無しさん:2011/05/28(土) 18:11:35.77
>>119
実用的じゃないけど、可能だよ。
122デフォルトの名無しさん:2011/05/28(土) 18:50:02.37
訂正

可能だけど、実用的じゃないよ。
123デフォルトの名無しさん:2011/05/28(土) 19:11:31.96
>>122
ちょwww
訂正って、それじゃ意味変わってないだろ。

訂正するなら「不可能だけど、実用的だよ」か
「可能だし、実用的だよ」のどちらかだろwww
124デフォルトの名無しさん:2011/05/28(土) 22:00:55.94
A = 実用的
B = 可能


元の文章は

not A and B


訂正するなら

not A and not B

A and B

A and not B


もっとも日本語として強調したい部分というのは後にもってくるという
のもあるので、

not A and B



B and not A

と言い換えるのも無い事は無いか。
125デフォルトの名無しさん:2011/05/28(土) 22:17:24.05
>>123
「表現」を「訂正」してるだけだろ。

まあ、いちいち訂正するほどのコトとは思えないけど。
126デフォルトの名無しさん:2011/05/29(日) 01:46:44.64
もっと賢いやりかたったらおせーて

Public Function ToStringB__v2(v As Variant) As String
Const PREFIX$ = " KMGTPEZY"
Dim s$, p#, n&, i&: p = CDbl(v): n = 1
For i = 2 To Len(PREFIX)
If p >= 1000 Then p = p / 1000: n = n + 1 Else Exit For
Next i
s = Format(p, IIf(p >= 100, "0", IIf(p >= 10, "0.0", "0.00")))
ToStringB__v2 = s & " " & IIf(n > 1, Mid(PREFIX, n, 1), "") & "B"
End Function

Public Function ToStringIB__v2(v As Variant) As String
Const PREFIX$ = " KMGTPEZY"
Dim s$, p#, n&, i&: p = CDbl(v): n = 1
For i = 2 To Len(PREFIX)
If p >= 1024 Then p = p / 1024: n = n + 1 Else Exit For
Next i
s = Format(p, IIf(p >= 100, "0", IIf(p >= 10, "0.0", "0.00")))
ToStringIB__v2 = s & " " & IIf(n > 1, Mid(PREFIX, n, 1), "") & "iB"
End Function
127デフォルトの名無しさん:2011/05/29(日) 01:53:17.35
簡単なエラートラップなら
Cdbl(v)する前に
If Not IsNumeric(v) Then Exit Function
を入れる
128デフォルトの名無しさん:2011/05/29(日) 01:59:09.34
On Error Goto ErrorLabel
とかして
End Functionの手前にErrorLabel:って入れればOK
129デフォルトの名無しさん:2011/05/29(日) 09:10:26.34
>>126
n = Int(Log(p)/Log(1000#)): p = p / (1000# ^ n)

# 元のプログラムと n の値が 1 違うので注意 (0 ベースになる)
# v = 0 の時に Log() がエラーになるので、そのケースがあるなら事前に場合分けが必要
130デフォルトの名無しさん:2011/05/30(月) 03:20:52.74
なるほど
勉強になります
ありがとうございました
131デフォルトの名無しさん:2011/05/31(火) 15:32:01.70
ActiveX DLLでCOM作ってるんだけど、ADOのRecordSetやFieldが持ってる
連想配列みたいにアクセスするインターフェースってどうやって作るん?
132131:2011/05/31(火) 16:27:12.11
プロシージャIDを0にすると既定になって、省略可能になったわ。
133デフォルトの名無しさん:2011/05/31(火) 17:00:57.81
?
134デフォルトの名無しさん:2011/06/01(水) 12:34:59.02
VB4なんですがWIN87EM.DLLで一般保護違反が出るのですが、
なかなか再現しません。このエラーを故意に起こすには、どのようにコーディングすればいいですか?
OSはNT4です。
135デフォルトの名無しさん:2011/06/02(木) 21:10:23.48
すいません、質問させてください。

今下記のような感じでテキストファイルを読み込んで
excelに出力するものを作っています。
Array1と10に降順でソートを掛けたいと思っています。

ですが、どう記述するのかわかりませんでした・・・・
どなたかお力お貸しください。
136デフォルトの名無しさん:2011/06/02(木) 21:12:42.14
こんな短期間にたくさん質問くるということは
どこかの大学バカ教授が授業でVB6で課題でも出したのか?
137135:2011/06/02(木) 22:14:17.50
すません、こんなの使ってます。

.Workbooks.OpenText _
FileName:=strFileNm, _
StartRow:=1, _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=True, _
Semicolon:=False, _
Comma:=True, _
Space:=False, _
Other:=False, _
FieldInfo:=Array( _
Array(1, 2), Array(2, 2), Array(3, 2), Array(4, 2), Array(5, 2))〜
138デフォルトの名無しさん:2011/06/03(金) 00:35:50.94
VB6.0で作ったソフトですがディスプレイをブラウン管(1024,768)から液晶(1920,1080)に替えたら
ソフトが動かなくなってしまいました。なぜ?
ブラウン管に戻すと動きます。
139デフォルトの名無しさん:2011/06/03(金) 01:10:39.61
ソース出せや
140デフォルトの名無しさん:2011/06/03(金) 02:17:22.81
VBで作ったアプリって
モニタのど真ん中に可視な属性を持ってるのに大きさがないという
ウインドウというかプロセスがあるね
キャプションで探したウインドウがGetWindowRectでサイズが0でずっと悩んじゃったよ
まるで民主党の朝鮮人たちに騙された気分だよ
141デフォルトの名無しさん:2011/06/03(金) 02:27:53.82
>>138
あー、それ>>140と関係してるかもね
プロセス列挙してウンドウを探すときにLeftが512だったら弾く、とかやってると
モニタサイズが変わったら弾けなくなる
LeftじゃなくてWidthが0だったら弾くようにすればおk
142福盛俊明:2011/06/03(金) 09:09:29.66
23 名前:福盛俊明 :2011/06/02(木) 23:51:15.53
俺はDarkBASICの天才♪”
俺に答えられない質問はない

質問はこちらへ
http://www.geocities.jp/courant_de_console/main_street/index.html

アハアハ〜♪”
143デフォルトの名無しさん:2011/06/03(金) 18:43:25.43
>>137
エクセルを開いてから、オートフィルタで手作業でソート
144デフォルトの名無しさん:2011/06/05(日) 20:08:58.70
VBSで質問です
5分後にシャットダウンするプログラムを作ってます。

MsgBox "5分後にシャットダウンします。"
WScript.Sleep(300000)
'ここにシャットダウンの処理

これで一応シャットダウンできますが、終了一分前にメッセージを出そうとして下記のように変えると、
「1分後に(ry」のメッセージボックスのOKを押すまで処理が止まってしまうので、正確な5分になりません。

MsgBox "5分後にシャットダウンします。"
WScript.Sleep(240000)
MsgBox "1分後にシャットダウンします。"
WScript.Sleep(60000)
'ここにシャットダウンの処理

メッセージボックス出しつつ処理を止めない方法ってありますか?
同じことができれば代用法でもなんでも構いません
145デフォルトの名無しさん:2011/06/05(日) 20:24:31.18
>>144
メッセージボックスやモーダルのフォームではなく、
モードレスのフォームを出せばいい。
146デフォルトの名無しさん:2011/06/05(日) 20:52:18.41
>>145
レスどーも
でも色々調べてたら自己解決してしまった(・_・;)
コマンドラインで
shutdown -s -t 300
って書くと自動で2分前に警告だしてくれたらからこっち使います
147デフォルトの名無しさん:2011/06/06(月) 18:48:24.52
>>146
2分前?
148デフォルトの名無しさん:2011/06/09(木) 22:01:47.41
ここでいいんかな・・・?

imdate(inputManのやつ)で日付を取ってそれに+1日したいんだが
どうしたらいいんでしょうか。

Date + 1に出来たらいいかなと思ったんだが
imdate.Numberで数字で取得するからなんともいかんのかな?
149デフォルトの名無しさん:2011/06/09(木) 23:24:54.45
VBのバージョンを言え
150デフォルトの名無しさん:2011/06/09(木) 23:25:57.17
inputManだったらinputManのヘルプみればいいんじゃないか?
151デフォルトの名無しさん:2011/06/09(木) 23:27:30.00
ジャンジャンバリバリ ジャンジャンバリバリ InputMan
152148:2011/06/09(木) 23:35:56.07
すいません6.0です。
153デフォルトの名無しさん:2011/06/11(土) 00:08:05.03
偉そうにVBのバージョンを言え!
だって
VBのバージョンなんか関係ないのに
その1行しか言えないレベルの奴なんだ
154デフォルトの名無しさん:2011/06/11(土) 09:44:32.95
4行も内容のないこと書いてるやつよりましじゃね?
155デフォルトの名無しさん:2011/06/11(土) 14:01:36.47
で、バージョン聞いといてそれで終わり?
大抵関係ない情報聞くやつは
使いものにならないんだよねw
156デフォルトの名無しさん:2011/06/11(土) 17:48:24.37
俺だったら「VBのバージョンは?」って優しく聞く
それを「VBのバージョンを言え」と字数多くしてまで乱暴に言うのは
まさに超初心者ならではの頭の悪さ
で、imdate.Numberが日付型ならDateAdd、文字ならCDateしてから
157デフォルトの名無しさん:2011/06/11(土) 19:38:30.77
> 質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
> 「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。

というのがルールなんだから、質問内容がバージョン関係有る無しに関わらず
まずは郷に入っては郷に従えってだけのことだろ
158デフォルトの名無しさん:2011/06/11(土) 19:55:06.35
もう黙れば?
159デフォルトの名無しさん:2011/06/11(土) 21:31:12.16
.NETの質問の可能性もあるやろ
160デフォルトの名無しさん:2011/06/11(土) 23:13:06.76
まあ、スレタイちゃんと読んでりゃ .NET はないはずだが、
バージョンも書かないような奴は >>1 もろくろく読んでな
いような奴だから、スレタイも読んでない可能性高いかもね。

て言うか、質問者は後出しながらバージョン答えてるし、
>>153 は一体なにと戦ってるんだ?
161デフォルトの名無しさん:2011/06/11(土) 23:17:29.22
命令口調クン
162デフォルトの名無しさん:2011/06/11(土) 23:23:01.63
ところで>>149は必要だったのかい?
いらないよね。赤っ恥かかされたからって、必死こいて戦うことないよね。
163デフォルトの名無しさん:2011/06/11(土) 23:31:29.55
.NETの質問の可能性もあるやろ!(キリッ
164デフォルトの名無しさん:2011/06/12(日) 05:18:06.48
>>162
顔真っ赤にして、そんなに悔しかったの?
165デフォルトの名無しさん:2011/06/12(日) 09:48:19.38
>>164
敗北宣言乙
166デフォルトの名無しさん:2011/06/12(日) 09:49:17.07
ウェブサイト作成協力して頂けませんか?
http://jpcity.lolipop.jp/phpBBq/viewtopic.php?f=29&t=957#p1595
167デフォルトの名無しさん:2011/06/12(日) 10:03:10.15
>>165
一人相撲で勝利宣言?
168デフォルトの名無しさん:2011/06/12(日) 10:41:59.64
 発 者 同         . 。_   ____           争
 生 同 .じ     .    /´ |  (ゝ___)          い
 .し 士 .レ      .__/'r-┴<ゝi,,ノ   ro、      は、
 .な で .ベ      ∠ゝ (ゝ.//`   ./`|  }⌒j     
 .い し .ル        } ⌒ /`ヽ、_∠l,ノ ・ヽ´
 .! ! か の       /  ´..:.} >、、___,  .r、 ソ、`\
             /   ..:.:.}   /   |∨ ` ̄
            /   ..:.:./    |   丶
           / _、 ..:.:.:.{    .{.:.:.   \
          {   ..:Y  .ゝ、   {.:.:.:.:.    ヽ
          |、  ..:/ 丿 .:〉   >.- ⌒  .  ヽ
          / {. ..:./ ソ ..:./  .(    ..:.:.:`  ..:}
         ./..:.:}.:.:./ ヘ、 ..:./   .\ ..:.:r_,ノ、.:.:}
        ./..:.:/|.:/   {.:./     X.:.:}.}   X X
        /..:.:/ .}.:|    }:/       .Y丶ヽ  Y.:Y
  . __/.:/ { }  《.〈、     _,,__>.:》丶   Y.:\
  /.:.:.:.:.::/   !.:.:ゝ  ゝ.:. ̄ヾ ´:.:.:.:.:.:.:.:.:ヾゝ   \.: ̄>
169デフォルトの名無しさん:2011/06/12(日) 10:46:29.27
いや争ってる (と思ってる) のは、1人だから (w
170デフォルトの名無しさん:2011/06/12(日) 10:52:23.61
争いにもなってないよな
まったく関係のないバージョンの話なんて聞くような馬鹿だしwww
171デフォルトの名無しさん:2011/06/12(日) 11:02:12.26
ルールは守ろうねって言われたことが余程気に入らなかったようだな

反抗期なのかもしれないが、そんなんじゃ社会に出てから困ることになるぞ
172デフォルトの名無しさん:2011/06/12(日) 11:10:17.42
なぜバージョンを聞いたんだい?ルールだからか?必要あったか?空気読まずに聞くほどに?
社会人としてのルールとして、そこの所を答えてくれないか?
173デフォルトの名無しさん:2011/06/12(日) 11:18:56.10
       ____
     /⌒  ⌒\
   /( ●)  (●)\
  /::::::⌒(__人__)⌒::::: \
  |     |r┬-|     |
  \      `ー'´     / このスレ香ばしいNE!
   /` ‐- __ - ‐‐ ´ \
  / .l        _,,ヽ ___ 〉、
  | l       / ,' 3 `ヽーっ
  ヒト- _    l   ⊃ ⌒_つ
.   !__   ̄, ̄ `'ー-┬‐'''''"
   L  ̄7┘l-─┬┘
    ノ  ̄/  .! ̄ ヽ
  └‐ '´   ` -┘
174デフォルトの名無しさん:2011/06/12(日) 11:53:03.08
>>172
なぜ理由を聞いてるんだい?ルールだからか?必要あったか?空気読まずに聞くほどに?
175デフォルトの名無しさん:2011/06/12(日) 12:06:46.28
そこまで追い詰めるつもりはなかったんだが
鸚鵡返しするような状態になっちゃお終いですね
こんな人が社会に出てからとか言ってんだからお笑いです
176デフォルトの名無しさん:2011/06/12(日) 12:34:17.84
一体誰を追い詰めた気になってるんだろう…
まあ、本人満足してるみたいだからいいか (w
177デフォルトの名無しさん:2011/06/12(日) 12:38:25.19
総理大臣のようだNE!
178デフォルトの名無しさん:2011/06/12(日) 12:40:40.77
道化を装う総理ならいいが
近年の人は愚かにしか見えない
179デフォルトの名無しさん:2011/06/12(日) 18:39:16.06
スレ伸びてると思ったら
質問があったとかそれに対する返事だとかそういうのじゃないので伸びてたのか
残念だ
180デフォルトの名無しさん:2011/06/12(日) 18:55:49.70
気づけばもう3日前からずっとこの流れなんだなw
181デフォルトの名無しさん:2011/06/12(日) 19:10:39.68
>>179
同じく。
そもそも、このスレでバージョンは○○ですって書いてる人あんま見ないけどな。
ところで、COM使った開発とか新規でまだやってたりする?
この間.NETじゃないただのASPで動かさなきゃいけない案件があって、
バッチでも使う共通処理があったから、COMで作る事にしたんだが、VB.NET
でも簡単にCOM作れるのな。
中身はマネージドだから、VB6.0で作った方が動作は早かったかな。
182デフォルトの名無しさん:2011/06/12(日) 19:18:18.05
終わった言語なんだし、ひっそりしていたほうが健全なんだ。
183デフォルトの名無しさん:2011/06/13(月) 17:10:31.72
未だに終わった言語で開発させられている俺に謝れw
184デフォルトの名無しさん:2011/06/13(月) 17:41:27.35
フヒヒ
185デフォルトの名無しさん:2011/06/13(月) 20:30:45.05
なんかwordにVBエディタが入ってるんだけど
まさかこれってコンパイラDLしなくでもVBできる?
VBはじめようと思ってんだけど
誰かコレについて教えてくれ
186デフォルトの名無しさん:2011/06/13(月) 20:51:09.21
それは別物です
187デフォルトの名無しさん:2011/06/13(月) 23:10:28.61
>>185
まあ VB と似たようなもんだけど、Word がないと動作しないよ。

まずは word vba あたりでググレ。
188デフォルトの名無しさん:2011/06/14(火) 06:26:34.17
みんなツンデレだなぁw助かってるけど^^
言い方きっついレスポンスは幼馴染みが
照れ隠しで怒っている感じに変換して
読んでる
189デフォルトの名無しさん:2011/06/15(水) 10:20:39.97
質問です。

Set xlBook = xlApp.Workbooks.Open(xlTestFile)で開いた場合
Arrayって使えますか?
読込んだTextを文字列か標準かを指定してデータをExcelに挿入したいのですが・・
190デフォルトの名無しさん:2011/06/15(水) 11:00:48.32
VB6言語すらまともに使えない奴には
日本語での質問もまともに出来ない奴が多い件
191デフォルトの名無しさん:2011/06/15(水) 11:19:07.01
VB6言語?
192デフォルトの名無しさん:2011/06/15(水) 12:23:24.38
WinXP、VB6、SP6です。

Controls.Addで動的に作成したTextBoxのMultiLineプロパティをTrueにする方法を教えてください。
普通にコードで設定しようとすると「値の取得のみ可能なプロパティに値を設定することはできません。」というエラーが出ます。

デザイン時にMultiLine=TrueにしたTextBoxをコントロール配列にしてLoadすれば、
MultiLine=TrueのTextBoxを動的に作ること自体は出来るのですが、都合によりコントロール配列ではダメなので。

最悪、デフォでMultiLine=TrueなTextBoxをユーザーコントロールとして作って、それをControls.Addで動的に作成するという
手法も考えてますが、もっと簡単な方法があればご教示ください。
193デフォルトの名無しさん:2011/06/15(水) 14:40:03.68
VB6LEじゃActiveX作れんからプラグイン作れないんだな…orz
194デフォルトの名無しさん:2011/06/17(金) 00:34:45.03
>>183
うらやましい
次の言語はなんですか
195デフォルトの名無しさん:2011/06/17(金) 03:39:58.92
VB6のランタイムライブラリってぶっ壊れることあるんだな
家族の誰かが何かインストールしたらしくその際にVB6ランタイムが上書きされたかで
VB6およびVB6製アプリが正常動作しなくなった
ベクターにあったVB6ランタイムをインストールしたら直ったけど
ウィルス感染かと思ったわ
196デフォルトの名無しさん:2011/06/17(金) 08:37:41.49
>>195
それは壊れるとは言わない。
古いライブラリに入れ替わっただけ。

そんなのはVB関係ないし、OSだって関係なく
起こり得る話。
197デフォルトの名無しさん:2011/06/17(金) 13:07:36.93
どうせインストーラ型のVB6製アプリ入れる時にシステムに既に同じのあるけど上書きする?って聞かれて、
「なにこれわかんない。とりあえずはいでいいよね」って選択していったんだろ
198デフォルトの名無しさん:2011/06/17(金) 15:32:50.01
spの古いランタイムに変わるとVB起動時およびVB製アプリ動作時にmsiとか起動するもんなの?
199デフォルトの名無しさん:2011/06/17(金) 17:00:17.40
3文字ごとに[,]を打つのに作った↓コレが不具合の原因で
OutputBox.Text = Format(CDec(OutputBox.Text), "#,###.##############")
'[2.0]で持ってくると
'CDecで文字列を数値にしているので
'ただの[2]として認識されて[2]だけが出力される
'[2.03]だとそのまま[2.03]で認識してくれる

別の書き方ってあります?
200デフォルトの名無しさん:2011/06/17(金) 17:30:29.57
OutputBox.Text = FormatNumber(OutputBox.Text)
201デフォルトの名無しさん:2011/06/17(金) 17:33:52.00
Oh…小数第二位までしか表示されないけどこんな方法が。

ありがとうございます
202デフォルトの名無しさん:2011/06/17(金) 17:42:38.47
MSDN
数値表示書式指定文字 (Format 関数)
数値を表すその他の書式 (Format 関数)
定義済み数値書式 (Format 関数)
の項目でも読め
203デフォルトの名無しさん:2011/06/17(金) 17:44:47.98
FormatNumberの仕様読んでから使えよ
204デフォルトの名無しさん:2011/06/17(金) 17:47:38.21
そもそも質問が意味不明
何を知りたいのかよく分からん
205デフォルトの名無しさん:2011/06/17(金) 17:50:27.71
落ち着いてすぐ質問レスするのではなく
一度文章をメモ帖か何かで整理してから
投稿したほうがよい
206デフォルトの名無しさん:2011/06/17(金) 22:02:15.12
ここは俺のメモ帳だ
207デフォルトの名無しさん:2011/06/18(土) 07:13:23.83
メモ :
乱数系列を繰り返すには、数値を指定して Randomize ステートメントを
実行する直前に、負の引数を指定して Rnd 関数を呼び出します。
Number に同じ値を指定して Randomize ステートメントを使用しても、
前の乱数系列を繰り返すことはできません。

Rnd -1
Randomize 1234
208デフォルトの名無しさん:2011/06/18(土) 15:42:55.71
>>207 言っている意味がよくわからんちん

'Rnd -1
Randomize 1234

Dim i
Debug.Print "Start"
For i = 1 To 10
Debug.Print i, Rnd
Next i
Debug.Print "End"
209デフォルトの名無しさん:2011/06/19(日) 09:25:09.86
VB6SP6で、ある文字列値がCBoolで変換できる値か否かを調べる関数とかって無いの?

"0"、"1"、"false"とかならTrueを返し
""、"a"、"t"とかならFalseを返すみたいな

今はOn Error Resume NextでCBoolに掛けちゃってるけど、もっと良い方法ある?
210デフォルトの名無しさん:2011/06/19(日) 12:11:39.83
俺様しか使わないような機能が実装されるはずだとかかもしれんとか思うのは軽い病気だと思う。
っていうか、関数の一覧見れば分かるだろ。
VBってもう死亡宣告されて10年経過してる言語だぞ
211デフォルトの名無しさん:2011/06/19(日) 12:39:11.53
ないなら作ればいいじゃない
212デフォルトの名無しさん:2011/06/19(日) 12:59:22.41
>>210
>>209 の書き込みから、「実装されるはずだとかかもしれんとか思う」と
読み取れちゃうのはちょっと重い病気だと思う。

適切な病院に行くか、小学校からやり直すべき。

>>209
なんでそんなことする必要があるのか気になるが、「CBool() で変換でき
ること」が絶対条件なら On Error にするしかないと思う。
213デフォルトの名無しさん:2011/06/19(日) 13:25:14.89
>212
馬鹿だろお前。
214デフォルトの名無しさん:2011/06/19(日) 13:43:07.32
>>212 の書き込みに対して「馬鹿」としか言えない >>213
ちょっとかわいそうだ。

早い目に、小学校からやり直せよ。(w
215デフォルトの名無しさん:2011/06/19(日) 13:46:09.83
(お前が)言われなきゃ分からない、の間違いじゃないのかしら。

逆に聞くが、存在するはずが無いと思ってる機能が存在するかどうか人に聞く馬鹿がいるのか。
あるはずとかあるかもしれないと思ってるから聞くんだろうが。

本当馬鹿だろお前。
216デフォルトの名無しさん:2011/06/19(日) 14:08:32.40
>>215
ないと思ってても、だめ元で聞いてみる奴はいくらでもいるだろ。

小学校に行って、勉強はもとより友達と会話するところからやり直してこい。
217デフォルトの名無しさん:2011/06/19(日) 14:15:46.08
[だめ元] ⊆ [あるかもしれない]
人に手取り足取り一から十まで全部説明されないと理解できないのは馬鹿の特徴か。
218デフォルトの名無しさん:2011/06/19(日) 14:28:58.25
>>217
>> 存在するはずが (*無いと思って*) る機能が存在するかどうか人に聞く馬鹿がいるのか。
> ないと思ってても、だめ元で聞いてみる奴はいくらでもいるだろ。

自分の書いたことには責任を持ちましょう。(w
219デフォルトの名無しさん:2011/06/19(日) 14:33:26.21
意味不明。
高校の数Iでやるような論理学が理解できないのも馬鹿の特徴の一つだな
220デフォルトの名無しさん:2011/06/19(日) 16:06:27.63
>>219
日本語が理解できてないクズよりましだけどな。
221デフォルトの名無しさん:2011/06/19(日) 16:46:23.41
>俺様しか使わないような機能が実装されるはずだとかかもしれんとか思うのは軽い病気
非常に解りにくい日本語なのですが
実装されるはずだと思う、あるいは、実装されてるかもしれんと思う だと解釈しよう

俺が使いたい機能なんだから絶対に実装されてるはずだ、と思うのは病気かもしれんが
こんな機能があったらいいな、すでに実装されてないかな?と思うのは病気でもなんでもないと思うが
222デフォルトの名無しさん:2011/06/19(日) 16:55:44.86
アスペルガーの人は病識がない。
自分を客観的に見られないという自覚が一切ない。

どう考えても一般性がない(そんな機能お前以外誰が必用とするんだってこと)
機能を、普通の人は「すでに実装されてないかな?」なんて思わないんだよ。
絶対に。

そう思うのは病気だから。
まあ病識がない人に自覚しろって言っても無理だろうけどねえ
223デフォルトの名無しさん:2011/06/19(日) 17:26:57.93
>>222
>アスペルガーの人は病識がない。
>自分を客観的に見られないという自覚が一切ない。

自己紹介乙。
224デフォルトの名無しさん:2011/06/19(日) 17:46:17.47
つか、>222は
ある変数がほかの型に変換可能かどうかチェックする機能
は一般性がないと思うのか
225デフォルトの名無しさん:2011/06/19(日) 18:01:11.11
変数って何だよ。
それを言うなら"値"じゃないのか。

そもそも>>209のいうような機能の需要が一般的かどうかの話をしているのであって、
「ある変数がほかの型に変換可能かどうかチェックする機能」の話なんかしてない。

馬鹿じゃないのか。
226デフォルトの名無しさん:2011/06/19(日) 18:56:17.63
>>208
やっぱり分かり難いでしょ
Randomizeのヘルプの文章なんだけど

×Number に同じ値を指定して Randomize ステートメントを使用しても、
 前の乱数系列を繰り返すことはできません。
○Number に同じ値を指定して Randomize ステートメントを使用しただけでは、
 前の乱数系列を繰り返すことはできません。

昔のBASIC知ってる人には何でRandomizeだけで乱数系列初期化してくれないの?と思ってしまう
ヘルプも分かり難いけどVBの仕様も変
227デフォルトの名無しさん:2011/06/19(日) 18:57:57.97
あのね、二人とも。
そんなに喧嘩する程のものでは無いと思うんだ。
CBoolで変換出来るものを判定すればいいだけでしょ?
それってIsNumericでいいんじゃないかと思うんだ。
たしかCboolで変換出来るものって数値型で、0ならFalse、0以外ならTrueだったんじゃないかと思うんだけど。
もっとも、厳密にTrueやFalseを判定したいなら0か-1と言う条件を付け加えることになるけど、
今回はそうじゃなさそうだし。
違ってたらごめんね。

みんな仲良くやるわさ。
228デフォルトの名無しさん:2011/06/19(日) 19:00:55.40
>>208
あ、毎回同じ乱数を発生させたい場合ね
例えばプロシージャ中で3回乱数を使ったとして
そのプロシージャを何回実行させても、いつも同じ乱数値を使いたい場合
229デフォルトの名無しさん:2011/06/19(日) 19:09:41.30
>>209
Option Compare Text
private function is_bool(byval q$) as boolean
Select Case q$
  Case "1","0","false","true": is_bool = True
  Case else: is_bool = False
end select
end function
230デフォルトの名無しさん:2011/06/19(日) 19:12:16.34
Select Case q$
  Case "1","0","false","true": is_bool = True
end select
231デフォルトの名無しさん:2011/06/19(日) 19:22:02.49
Select Case ucase(q$)
  Case "false","true": is_bool = True
  Case else: is_bool = IsNumeric(q$)
end select
232デフォルトの名無しさん:2011/06/19(日) 19:31:44.23
あら、TrueやFalseは文字列にするとIsNumericに反応しなくなるのね。
じゃ多分>>231の人が言ってるUCaseのをLCaseにしたのがFAだわさ。
233デフォルトの名無しさん:2011/06/19(日) 19:58:20.77
>>225
もうそろそろ引っ込んだら?
どう見ても哀れだよ、君。
234デフォルトの名無しさん:2011/06/19(日) 20:06:36.54
またスレが伸びてるから言い争いしてると予想したが、裏切ってくれなかったか。
毎回同じ人が煽ってんのかな。
235デフォルトの名無しさん:2011/06/20(月) 00:52:07.32
>>226,228
もしかしてVB6より前のVB?
>>208のコードをCommand1_Clickにいれて何度か押したけど
Rnd -1のある場合の10個の数字と、ない場合の10個の数字は違うけれど
Rnd -1のあるなし関わらずコマンド何度クリックしても同じ10個の数字しか出なかった(Randomizeで初期化されてる)けど
236デフォルトの名無しさん:2011/06/20(月) 09:21:33.52
下記サイトを参考に任意の日付までのシリアル値の計算はできたのですが、
逆にシリアル値からyyyy/mm/dd hh:mm:ssというように変換するにはどのように
すればよいのでしょうか?

VB6を使用しています。
よろしくお願いします。

www.happy2-island.com/access/gogo03/capter01001.shtml
'----------------------------------------------------------------------
'任意の日時までのシリアル値を求める
'----------------------------------------------------------------------
Public Function getTimeB(pNow As Date) As Currency

Dim lngTime As Currency

'pNowまでの経過秒数を求める
lngTime = DateDiff("s" _
, "1970/1/1 9:0:0" _
, pNow)

'1/1000秒部分を求める
':元の値を1000倍する
lngTime = lngTime * 1000
':Timer関数で求めた1/1000秒部分を加える
lngTime = lngTime + Fix((CDbl(Timer) - Fix(CDbl(Timer))) * 1000)

getTimeB = lngTime

End Function
237デフォルトの名無しさん:2011/06/20(月) 19:58:50.60
>>236
MSDNの説明ではDate型の実体はDoubleだとあるから、
ある意味Date型そのものが既にシリアル値であるといえる。

自前でシリアル値に変換する意味がわからない。
238デフォルトの名無しさん:2011/06/20(月) 22:25:52.66
Debug.Print CDbl(Now)
Debug.Print CSng(Now)
Debug.Print CDec(Now)
Debug.Print CLng(Now)

Dim v
v = Now
Debug.Print v
Debug.Print CDec(v)
239デフォルトの名無しさん:2011/06/20(月) 23:33:02.67
>>235
VB6だけど何で違うんだろ〜
Private Sub Command1_Click()
Dim i%
  Debug.Print "---"
  Randomize 123
  For i% = 1 To 3: Debug.Print Rnd: Next
End Sub
---
0.7545646
0.5271199
0.3011898
---
0.1030034
0.2489544
0.3967338
-Rndしないと毎回違うパターンがでる
240236:2011/06/21(火) 01:31:17.21
>>237
レスありがとうございます。
私がやりたいのはシリアル値に変換するのではなくて、
シリアル値からyyyy/mm/dd hh:mm:ssというように変換したいのです。
241デフォルトの名無しさん:2011/06/21(火) 02:22:59.69
Win32APIとかでそういうの扱えるの無かったっけ?よく覚えてないけど
242デフォルトの名無しさん:2011/06/21(火) 02:24:20.96
SystemTimeToFileTime
FileTimeToSystemTime
あたり?
243デフォルトの名無しさん:2011/06/21(火) 02:45:14.26
>>236の逆変換をやるの?
dt = DataAdd("s", lngTime \ 1000, "1970/1/1 9:0:0")
これでいい?
244デフォルトの名無しさん:2011/06/21(火) 02:47:55.34
>ngTime = lngTime + Fix((CDbl(Timer) - Fix(CDbl(Timer))) * 1000)

これTimer2回呼び出してるけど問題ないの?
245デフォルトの名無しさん:2011/06/21(火) 02:57:11.65
>>239
もう一度やってみたら貴公の言うとおり再現した
でも>>235のレスしたときは>>235のとおりだった。>>235のレスしたときコメントアウトし忘れてたのかもしれない
疑ってすまなかった
246デフォルトの名無しさん:2011/06/21(火) 03:00:03.19
あれ、でもコメントアウトの問題なら表示される数字はどちらの試行でも同じはずなのに違ってたな。なんでだろう
247デフォルトの名無しさん:2011/06/21(火) 03:04:06.73
あ、原因判明したかも。コメントアウトの問題じゃなくてイミディエイトのカーソル位置の問題だ。おそらく。
カーソルが一番下じゃなく一回分の試行の手前あたりにあったんだなきっと
248デフォルトの名無しさん:2011/06/21(火) 11:47:09.85
あれはカーソル位置から書き始めるから困る
249236:2011/06/21(火) 14:45:46.70
>>243
ありがとうございました。
教えていただいた通り以下の通りで出来ました。
DataAddという物があったのですねー。
236で書いたのは、シリアル値から日付へ変換する方法を
探している際に見つけて、これの逆をやればできるかなと
思ったんですが、差分の部分でつまづいていました。
本当にどうもありがとうございました!

'---------------------------------
'シリアル値から日付へ
'---------------------------------
Function STD(SR As Double)


Dim lngTime As Double
lngTime = SR

Dim DT As Variant
DT = DateAdd("s", (lngTime / 1000), "1970/1/1 9:0:0")

STD = DT


End Function
250デフォルトの名無しさん:2011/06/21(火) 16:13:03.13
>>244
最初のTimerの呼び出し時に 1234.999秒ですぐ次の呼び出しで1235.000になっていた場合、さてどうなるかな?
251デフォルトの名無しさん:2011/06/21(火) 16:15:41.80
その理屈ならミリ秒取得前に引数で日付取得じゃ秒のズレが起きたりしないの?
t1 = Timer
n = Now
t2 = Timer
とかして挟んでt1とt2からミリ秒取得したほうが
252デフォルトの名無しさん:2011/06/21(火) 19:15:05.59
だからData自体が最初からシリアル値になってるのにどこに自前で変換かます必用があるのかと...
頭悪いのかな
253デフォルトの名無しさん:2011/06/22(水) 00:28:38.30
頭悪いのかな
だって
一言多いのねこの人
コンプレックスを抱えてる人間のようです
だから誰かを貶さないといられないのです
自分だって無知な頃があったはずなのに
いや、今も無知だから心が狭くなっているのでしょうか
もっと精進すべきです
254デフォルトの名無しさん:2011/06/22(水) 00:45:52.70
Dataの中身のDouble値そのままじゃ他の言語と互換性無いからじゃね
小数点以下が時間とかどうなの?
255デフォルトの名無しさん:2011/06/22(水) 01:13:50.55
質問です。

JP1(日立の運用ツール)からVBSを起動し、
VBSからExcelマクロを起動しようとしています。

つい最近、WinServer2003からWinServer2008のサーバーへと
環境が移ったのですが、移行後にJP1からVBSを起動したところ、
"Workbooks クラスの Open プロパティを取得できません"
とエラーを吐きExcelマクロが起動できなくなりました。
似たような経験をお持ちの方がいましたら、
どうやって解決したかを教えてもらえないでしょうか。
256255:2011/06/22(水) 01:16:18.70
以下のソースコードの「ワークブックを開く」の箇所で
"Workbooks クラスの Open プロパティを取得できません"
とエラーになるようです。

<VBS ソースコード>

'Excel
Set objExcelApp = CreateObject("Excel.Application")

'ワークブックを開く
Set objExcelBook = objExcelApp.Workbooks.Open("C:\workspace\perl_test\test_vba.xls", , True)

'Excel側マクロ(main)を起動
objExcelApp.Run "'" & "test_vba.xls" & "'!main", 2
257255:2011/06/22(水) 01:18:28.93
<参考>
・手動実行なら問題なく起動します。
・旧環境、新環境ともにJP1がインストールされている
 サーバーにはExcelがインストールされていないが、
 実行先のサーバーにはExcelがインストールされている。

よろしくお願いします。
258249:2011/06/22(水) 01:19:11.34
>>252
わたしへのレスですか?
もしそうだとしたら、HelloWorld!卒業くらいのレベルなので、
おっしゃっている事がさっぱり分からないです。

私がやりたいのは、あるシリアル値があったとして、それが
何年何月何日なのか分からないため、それを日付にしたいんです。

もっとスマート?な方法があったら、ご教示いただければ幸いです。
259デフォルトの名無しさん:2011/06/22(水) 01:23:38.59
>>257
適当だけど、実行元のサーバーにEXCELのランタイムは設定されてる?
260デフォルトの名無しさん:2011/06/22(水) 01:23:53.23
なるほど、自分で>>239に書いた内容はもう忘れたわけですか。
261デフォルトの名無しさん:2011/06/22(水) 01:25:27.92
いや>>239じゃなくて>>236
262255:2011/06/22(水) 01:40:11.91
>>259
確認しないとわからないですが、
ないかもしれません。
明日調べてみます。
ありがとうございます。
263249:2011/06/22(水) 01:53:29.94
>>260-261
失礼ですが、>>249の4-6行目をよく読んでみてください。
それで双方理解できないならば、いづれかもしくは双方の
理解力に問題があるということで。

ちなみに、>>258で書いたスマート?な方法はご存知ないですか。
264デフォルトの名無しさん:2011/06/22(水) 01:57:08.22
"シリアル値"が分からない私も初心者
265デフォルトの名無しさん:2011/06/22(水) 02:47:12.69
>>252
シリアル値の時刻を求める(DateDiff, Timer)
http://www.happy2-island.com/access/gogo03/capter01001.shtml
> JavaScriptのDate/getTimeと同じシリアル値の日時を求める方法です。



266デフォルトの名無しさん:2011/06/22(水) 13:49:31.56
時刻のシリアル値ってふつー秒単位じゃないのか
267デフォルトの名無しさん:2011/06/22(水) 17:25:47.73
なにいってんだこいつ
268デフォルトの名無しさん:2011/06/22(水) 21:38:11.18
VBやエクセルなどのVBAではシリアル値とは整数部が1970/1/1からの日付で、小数部が時間を表すフォーマット
エクセルの普及からシリアル値といったらこっちになることが多い
269デフォルトの名無しさん:2011/06/22(水) 21:48:02.32
>>256
プロジェクト→参照設定
でエクセルのライブラリ参照とかじゃない?
270デフォルトの名無しさん:2011/06/22(水) 22:04:33.32
>>263
文字列に変換するなら
Debug.Print Format(DT, "yyyy/mm/dd(AAA)")
271デフォルトの名無しさん:2011/06/22(水) 22:38:20.41
>>270
いや、俺も最初そう思ったけど、ある年月日から現在までの期間を"YYYY/MM/DD hh:mm:ss"のフォーマットで
何年、何ヶ月、何日の何時間、何分、何秒経ったかを表示したいって言ってるんじゃないの?
272デフォルトの名無しさん:2011/06/22(水) 22:57:14.49
それ、「ある年月日から現在までの期間」が例えば 31日だったとして、
今日だったら、1ヵ月と表示するけど、同じ期間でも来月だったら、
1ヵ月と1日って表示するってこと?

うるう年まで考慮するなると、一発でちゃんとしたものができるか俺
には自信がない...。
273デフォルトの名無しさん:2011/06/22(水) 23:04:35.40
>>255
>サーバーにはExcelがインストールされていないが、
>実行先のサーバーにはExcelがインストールされている。
これ、1行目はJP1の管理サーバーって事で良いんだよね?
Excelは実行先だけで良いはず。気になるのは、手動で動かした
ときは上手くいって、JP1から起動させるとダメだってとこだな。
思いつくのは、JP1からキックしたときの権限じゃないかな。
実行ユーザーを指定できるなら、手動で動かしたときと同じ
ユーザーで起動するようにしてみたらどうだろ。
後は、objExcelAppにちゃんとインスタンスが入ってるか(nullじゃないか)
と、FileSystemObjectで、Excelファイルが開けるか試してみて
CreateObject周りでおかしいのか、Excelオブジェクトの何かが
いけないのかを切り分けるかな。
274デフォルトの名無しさん:2011/06/22(水) 23:13:20.30
ある時刻のt1 as dateがあって、そこから今までの時間なら
Dim sec&
sec& = DateDiff("s", t1, Now)
秒はこれで出るけど
月は30.5日くらいにしとく?って客先に聞かないと

んん?これって求めたいものはt1そのもの・・謎は深まるばかり・・
275デフォルトの名無しさん:2011/06/22(水) 23:50:29.54
>>236のコードは>>265のサイトのコードのようだが
276263:2011/06/22(水) 23:56:16.48
>>270
レスありがとうございます。
エクセルで日付にしていましたが、Format関数?で出来るんですね。
わざわざありがとうございました。

>>271
説明が駄目駄目ですみません。
>>258にも書いたのですが、
このように説明すれば分かりやすいでしょうか。
例えば、Q.次のシリアル値は何年/何月/何日 何時:何分:何秒を表しているかを求めるコードを書け。
という事をお聞きしたかったのです。
日付のデータが記録されているファイルを操作するのに、その中身がシリアル値だったので、日付形式
に変換したかったのです。


ところで、>>252氏は私へのレスではなかったのでしょうか、アンカーもなくIDのないスレッドだったの
でよく分からなくて。
>だからData自体が最初からシリアル値になってるのにどこに自前で変換かます必用があるのかと...
>頭悪いのかな
277デフォルトの名無しさん:2011/06/22(水) 23:59:51.75
>>236 はさ、
>>238を読んでんのかな。

1970/1/1 09:00:00を基準としたのが重要なの?
もしそこにこだわらなくて良いなら、
Dim dateVal As Date
Dim dblVal As Double

dateVal = Now()
dblVal = CDbl(dateVal)

Call MsgBox(dblVal)
Call MsgBox(CDate(dblVal))
これで、やりたい事はできんじゃねーの?
236がいうシリアル値ってのが、万国共通か規格があんのかな。
googleで上位に来るのは1900/01/01なんだけどな。
278デフォルトの名無しさん:2011/06/23(木) 00:07:06.39
>>277
シリアル値の時刻を求める(DateDiff, Timer)
http://www.happy2-island.com/access/gogo03/capter01001.shtml
> JavaScriptのDate/getTimeと同じシリアル値の日時を求める方法です。
279デフォルトの名無しさん:2011/06/23(木) 00:08:31.18
>>276
何か面倒臭そうな人なので一応レスしとくかな....

ひょっとして既に何らかの方式による既存のシリアル値のデータがあって、
それを日付に戻す方法が知りたかったのかも知れないけど、>>236からそれを読み取れって
そりゃ無理難題。

シリアル値っていったっていろんな方式があるんだから、>>236みたいに
日付⇒シリアル値はできたが逆はできないって書かれたら、要は2つの日時の大小比較とかスパンが
計算できる値なら何でもいいはずだと普通は思うんじゃないの?
280263:2011/06/23(木) 00:24:33.93
>>277
無知故にアンカーがないとレス内容だけでは、
私へ対してのレスか分からず>>238自体は見ましたが、
別の人へのレスだと思ってしまいました。
あと、最初に書いたサンプルサイトの値のUTCというのでしょうか、
その値を基準にしたかったのです。
今この書き込みを見るまで、1970年1月1日0時0分0秒がシリアル値
の基準で1つしかないものと思っていました。
(+9されているのは日本時間?をしているようでしたのでそのままに)

>>279
>>252氏でしょうか?
レスありがとうございます。
うまく説明できなくてすみません。
私としては、「任意の日時までのシリアル値」を求められれば、それは
逆を行えばシリアル値からyyyy/mm/dd hh:mm:ssと日時を求められると
単純に思ったのです。

サンプルサイトの例で下記のようにできたので、
2011/06/01 12:34:56 → 1306899296000
上に書いた通り、逆を行えば不明なシリアル値を下記のように日時に
できるものとばかり。
1308799500000(何日の値か不明) → 2011/6/23 12:25:00

続きます。
281249:2011/06/23(木) 00:27:55.96
変な流れにしてしまってすみませんでしたが、
>>243氏のレスで私にも理解でき、>>246の通りできましたので、
皆さんに再度お礼を言って質問を終了させていただきたいと思います。

本当にどうもありがとうございました!
282デフォルトの名無しさん:2011/06/23(木) 00:30:33.31
度々すみません訂正です。

誤:>>246の通りできましたので、
正:>>249の通りできましたので、

失礼しました。
ありがとうございました。
283デフォルトの名無しさん:2011/06/23(木) 00:42:05.54
lngTimeがLong型じゃないことのほうが気になっている俺がいる
284デフォルトの名無しさん:2011/06/23(木) 00:50:59.32
VB6付属のMSDNライブラリのVBの項目の定数と変数の名前付け基準によるとプリフィックスには
Long型はlng
Currency型はcur
Double型はdbl
をつけた方が分かりやすいとある

285デフォルトの名無しさん:2011/06/23(木) 00:51:48.77
Variant型はvnt
Date型はdtm
286デフォルトの名無しさん:2011/06/23(木) 07:08:53.68
お前らさすがにレベル低すぎて開いた口が塞がらないぞ。
287デフォルトの名無しさん:2011/06/23(木) 08:09:18.92
>>286のレベルの高いネタ振りに期待
288デフォルトの名無しさん:2011/06/23(木) 14:05:52.11
>>236はさ、>>278のサイトの掲載されているコードを使ったの?

289デフォルトの名無しさん:2011/06/23(木) 14:14:49.65
>>278のサイトのはVBAっぽいような気がするんだけど
プリフィックスが気持ち悪いな。Long型でもないのにlngを使うのはよくないと思う(誤解を招きかねない)
getTime関数でTimerを2回呼び出すのは時刻の正確さを欠く可能性があると思う
同様の理由でNowとTimerを併用するのも時刻の正確さを欠く可能性があると思う
getTimeB関数は任意の日時とあるのにTimerでミリ秒を補完するのはおかしいと思う
getTime関数はWin32APIのGetSystemTimeAsFileTime関数、getTimeB関数はWin32APIのSystemTimeToFileTime関数を使えばいいと思う
290デフォルトの名無しさん:2011/06/23(木) 20:34:10.83
UTCの事を言っている人がいるのにそれには触れない件。
というか気付いていないんだろうな。
何にでも例外はあるがこのスレの連中はやっぱりほぼ・・・
続く。
291デフォルトの名無しさん:2011/06/23(木) 20:51:46.69
UTCのことは>>278のサイトの冒頭に書いてあるが?
292デフォルトの名無しさん:2011/06/24(金) 12:15:28.11
ここまで>>291の自演。
293デフォルトの名無しさん:2011/06/25(土) 06:08:22.32
Form2.Show vbModal 'Form2をモーダルで呼ぶ

Form2にはボタンが複数あって、状況によってデフォルトのボタンを設定したい
Private Sub Form_Load()
  'Me.Show ' ← Modal時は実行できない
  Command1.SetFocus
End Sub

Form_Load中でSetFocusしようと思ったら、その前にMe.Showしないといけない
でもModalで呼ばれるからMe.Showはできない

★ ModalなForm2のCommand1をSetFocusする方法はありますか?
294デフォルトの名無しさん:2011/06/25(土) 13:32:36.53
>>293
デザイン時にTabIndexの0をあえて欠番にしておいて、Loadイベントで
フォーム表示時に最初にフォーカスを設定したいコントロールのTabIndexを0にする。

VBを2年ぶりで触った俺でもすぐにできたぞ。

ところで、そういうのって「デフォルトのボタン」って言うのか....?
295デフォルトの名無しさん:2011/06/25(土) 13:44:37.84
TabIndexなんか触りたくないと言いそうだから別解

'Form2
Private mShown As Boolean

Private Sub Form_Activate()
  If Not mShown Then
    OnShown
  End If
End Sub

Private Sub OnShown()
  mShown = True
  Command1.SetFocus
End Sub
296デフォルトの名無しさん:2011/06/25(土) 15:57:49.62
>>294,295
なるほどActivateでしたか、ありがとうございました!
Modalなのでその1回だけ実行するというロジックは不要と思います
やるとしたらStatic変数が好きです
デフォルトのボタンと言ったのは、要は自作のメッセージボックスを作っていたので・・
297デフォルトの名無しさん:2011/06/25(土) 16:31:29.25
デザイン時のコマンドボタンのプロパティでDefaultをTrueにすればいいんでないの?
298デフォルトの名無しさん:2011/06/25(土) 16:37:28.78
申し訳ない
コマンドボタンにDefaultプロパティというのがあって、
これをTrueにすることでデフォルトボタンにできるという初歩的な見落としがありました
でもActivateは勉強になりました、Form_Loadの後に来るのはResizeかPaintかとか探してはいたのですが
299デフォルトの名無しさん:2011/06/25(土) 16:51:47.19
Defaultプロパティの本来の使い方は、Enterキー入力を受け取るボタンを決めること。

これは>>293の言っていることと違うと思ったから、Defaultは知ってたけど紹介しなかったんだけど....
300デフォルトの名無しさん:2011/06/25(土) 16:58:50.28
ActivateはそのModalなFormからさらにModalな別のFormを開きそこから戻ってきたときにも発生するよ
例えば下の例ならForm1からForm2を呼び出したときとForm3からForm2に戻ったときにActivateが呼び出されるよ

'Form1
Private Sub Command1_Click()
Form2.Show vbModal
End Sub

'Form2
Private Sub Command1_Click()
Form3.Show
End Sub

Private Sub Form_Activate()
Debug.Print "Activate", Now
End Sub
301デフォルトの名無しさん:2011/06/25(土) 17:00:08.84
>Form2にはボタンが複数あって、状況によってデフォルトのボタンを設定したい

これから察するにプロパティのDefaultじゃちょっと違うよね?
302デフォルトの名無しさん:2011/06/25(土) 17:28:43.40
Default設定したら状況によってとかいうのが出来ないよね
303デフォルトの名無しさん:2011/06/26(日) 02:23:41.63
テストプログラム作ってForm_Load中でボタンのDefultプロパティを設定してみましたが
Form1ではボタン周りに黒枠が表示されてEnterキーが効くのに
Form2ではDefultプロパティの設定が無視される
ヘルプではフォーム毎にEnterを受け付けるボタンが設定できると書いてあるのに
どうもDefultプロパティの挙動がわからない・・
ボタンのキャプション周りのフォーカス枠表示も欲しいし、やはりSetFocusにします
304デフォルトの名無しさん:2011/06/26(日) 22:05:37.83
Defaultってデザイン時だけじゃなくて実行時にも変更可能なのか
知らなかったわ
305デフォルトの名無しさん:2011/06/28(火) 21:39:38.66
アプリの起動時に、ComboBox1に商品の情報を追加したいのですが
「ニンジン」、「かぼちゃ」、「キャベツ」の3品を追加するにはどうすればいいか。
また、初期表示として「ニンジン」が表示されているようにするにはどうすればいいですか
教えていただきたいです。メソッドの部分はどう書けばいいのでしょうか。
Private Sub frmMain_Load(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles MyBase.Load




End Sub
306デフォルトの名無しさん:2011/06/28(火) 22:01:25.21
>>305
vb.netみたいだから、次からはこちらへ
http://hibari.2ch.net/test/read.cgi/tech/1301828549/

'追加
Me.ComboBox1.Items.Add("ニンジン")
Me.ComboBox1.Items.Add("かぼちゃ")
Me.ComboBox1.Items.Add("キャベツ")

'初期表示
Me.ComboBox1.Text = "かぼちゃ"
307デフォルトの名無しさん:2011/06/28(火) 22:04:02.00
すまん
ニンジンが初期表示だった!

Me.ComboBox1.Text = "ニンジン"
308デフォルトの名無しさん:2011/06/28(火) 22:38:14.08
>>306-307
ありがとうございます。
309デフォルトの名無しさん:2011/06/30(木) 15:21:23.15
For i%=1 to 4: Combo1.AddItem Choose(i%, "ニンジン","かぼちゃ","キャベツ","たまねぎ"): Next
310デフォルトの名無しさん:2011/06/30(木) 15:28:29.93
Dim t$,buf$(),i%
t$="ニンジン,かぼちゃ,キャベツ,たまねぎ,セロリ,パセリ,ピーマン,ごぼう"
buf$=Split(t$,",")
for i%=0 to Ubound(buf$):Combo1.AddItem buf$(i%):next
311デフォルトの名無しさん:2011/06/30(木) 15:45:18.92
ひさびさに AS の無い宣言を見たw
312デフォルトの名無しさん:2011/06/30(木) 17:18:31.01
%とか&とか$とか#とか昔のBASICみたいで嫌う人がいるけど
これはコード中で型が判るから絶対に有効だよ
変数名にいちいちstrnameとかlongpointとか入れる人もいるけど実に可読性が悪くて腹立つ
313デフォルトの名無しさん:2011/06/30(木) 17:30:20.52
strnameとname$のどっちが可読性が上かは
読む人の慣れとかクセとかでどっちが上とは言えないと思うが

世の中にはstrnameとかいう名前の数値型の変数を定義するような奴がいたりするからなぁ
314デフォルトの名無しさん:2011/06/30(木) 18:41:31.75
型のある変数を使わなければ解決だな
毎回長文コーディングになるけど
objectとかは知らん
315デフォルトの名無しさん:2011/06/30(木) 19:44:59.73
10年遅れのハンガリアン
っていうか、>>310のようなマクロてんこ盛りのアセンブラみたいなコード読みたくないw
316デフォルトの名無しさん:2011/06/30(木) 23:35:59.77
記号打つときシフトキー押すのしんどい
Dim以外では変数名を途中入力で補完できりゃいいのに
317デフォルトの名無しさん:2011/06/30(木) 23:54:24.40
あずにゃ・・・じゃなくて、As 〜で型によって色が変われば分かりやすくね?
つか、変えられなかったっけ?
おれは、dblExsample lngExsample intExsample strExsample とか先頭みるだけで
すぐわかるけどなー。
%とか&とか$とか#とか初めて知ったw
低レベルでさーせん。
318デフォルトの名無しさん:2011/07/01(金) 00:15:45.44
俺は$が文字型ってくらいしか知らないな。ポケコン世代だけど
319デフォルトの名無しさん:2011/07/01(金) 14:08:40.58
その手の記号もAsと同じだから宣言時だけつけてりゃ使えたような気がする
Dim name$, unko&(10)
name = "namae"
unko(5) = 1000

って

320デフォルトの名無しさん:2011/07/01(金) 14:10:25.36
>>317
>>265のサイト見てみ。lngというプリフィックスが
321デフォルトの名無しさん:2011/07/01(金) 14:20:08.06
format$
とかで明示的にStringだってのも懐かしい話だな・・
MSDNもVariantのString みたいな言い回しがめんどくさかったなぁ
322デフォルトの名無しさん:2011/07/01(金) 19:47:55.35
割り算で結果がどうもおかしいと思ったらIntegerで受けてたとか良くあるじゃん
wari! = a% / b%
ならそんな間違いは起こらないし、なんでこれが流行らなかったのか不思議
323デフォルトの名無しさん:2011/07/01(金) 19:55:21.14
そんな間違いあんただけだってw
324デフォルトの名無しさん:2011/07/01(金) 21:01:31.55
&とか%とかそういので型変換もできたらいいなと思う
325デフォルトの名無しさん:2011/07/01(金) 21:50:12.69
VB6.XまたはSP7に期待ですね
そんなもの出ないけど
326デフォルトの名無しさん:2011/07/04(月) 18:41:27.30
時々、Lineメソッドで間違ってないのにパラメータがどうこうってエラーが出る?
プロジェクトを一旦閉じてから開き直すと直るけど
327デフォルトの名無しさん:2011/07/04(月) 20:27:45.01
>>326
エラーが出るのならば、どこかしらが「間違ってる」と思った方がいいよ。

詳細が分からないから勘だけど、どっかでメモリリーク起こしてるんじゃないかな。
328デフォルトの名無しさん:2011/07/04(月) 20:30:15.50
馬鹿っぽい質問に馬鹿っぽい回答だな....
329デフォルトの名無しさん:2011/07/04(月) 20:38:46.74
>>326
変数はもちろん Variant 型だよな!
330デフォルトの名無しさん:2011/07/04(月) 21:19:46.26
>>326
>使用しているOS、VBのバージョン、サービスパックのバージョン
331327:2011/07/04(月) 22:59:04.79
馬鹿っぽくて悪かったな。
332デフォルトの名無しさん:2011/07/05(火) 03:16:49.63
エスパーか
333デフォルトの名無しさん:2011/07/06(水) 13:05:43.46
LE使いってどれくらいいる?
334デフォルトの名無しさん:2011/07/06(水) 18:53:51.59
>>327
やっぱり、メモリリークとかでしょうね、VBの
Lineメソッドでエラーにはなるけど、決まったコードで出るわけではないし
ある特定のプロジェクトで出るわけでもないので詳細は書きようもないですが
プログラムがある程度大きい場合に、たまに発生するようです
再現したらキャプろうと思ったけど期待すると出てこない・・
335327:2011/07/06(水) 23:13:20.19
>>334
エラー画面をキャプチャーしても原因はそこでは無いだろうから、
途中経過をモニタリングすべきだと思います。
(メモリの消費状況、インスタンスの開放、配列のErase等々)

どうみてもプログラムに間違いが無さそうならば、
Service Packが最新になっているか確認してみてはどうでしょう?
336デフォルトの名無しさん:2011/07/06(水) 23:15:05.01
環境を疑う前にコードを疑えって。
ダメな奴ほど環境を疑う。
337デフォルトの名無しさん:2011/07/07(木) 00:13:49.97
それほど対してソースコードは無いんですが実行速度が遅くて困っています
現状フォーム内にメソッドを記述して全ての処理を動かしているのですが
クラスに書き込めば速度向上が望めるでしょうか
それとも実行速度ってコード量に比例するってだけなのですか

教えてください。
338デフォルトの名無しさん:2011/07/07(木) 00:36:33.41
LE使いなのでよう知らんがコンパイルスイッチとかいうので実行速度を最適化とかいうの使えばいいとちゃうのん?LEそういう機能がないので全くわからないが。ただの独り言です。
339デフォルトの名無しさん:2011/07/07(木) 00:39:22.99
>>337

>クラスに書き込めば速度向上が望めるでしょうか
望めない。理論的にはクラス生成と呼び出しの分遅くなる

>それとも実行速度ってコード量に比例するってだけなのですか
いいえ
起動にかかる時間はコード量(厳密にはコンパイル後のサイズ)に影響されます
起動後の実行速度には関係ありません
340デフォルトの名無しさん:2011/07/07(木) 00:46:51.19
コンパイルスイッチってvbにありましたっけ??
C言語とかだとコンパイラーが持ってたりしますけど・・・
341327:2011/07/07(木) 08:26:20.69
>>337
どのような処理なのか分からないと高速化もアドバイスしにくいですが、
一般的にはAPIの使用、キャッシュ、バッファリング、アルゴリズムの最適化
といったところでしょうか。

フォーム内にコードが大量にあるとすると、ロードに時間が掛かる可能性はあります。

>>340
オプション画面から指定できます。
VB5からネイティブコンパイル可能になったからです。

IDEからの動作ですと、インタプリタ(のような)動作ですので、効かないと思います。
342デフォルトの名無しさん:2011/07/07(木) 16:54:10.83
自分で契約しているサーバの負荷等を調べるものを作っているのですが、
8つ契約しているので、下記のコードで1個1個順番に行っていると遅いので、
マルチスレッド?で行いたいのですが、下記の事をマルチスレッドで同時に
行うにはどのようにすればよいのでしょうか?
(下のソースも部分的にサンプルサイト等を見て書いたものなので、自分は
 ほとんど始めたばかりな感じで、マルチスレッドの基本についても全く分かりません。)

Windows XP SP3 + VB6 SP6を使っています。
もし、やり方が分かる方いましたら教えていただけるとありがたいです。

343342 ◆XuL15E5UEM :2011/07/07(木) 16:55:28.31
Private Sub Server_Check(ByVal MyServer As String, ByVal MyNumber As Integer, ByVal CPU As String)
On Err GoTo Err
'
If MyServer = "" Then Exit Sub
'サーバーチェックを実行
If MyCounter = 1 Then
Set objIE = CreateObject("InternetExplorer.Application")
End If
  '
With objIE
.Navigate "http://" & MyServer & ".example.com/cgi/check.php"
Do Until ((.Busy = False) And (.ReadyState = READYSTATE_COMPLETE))
Loop
End With
' 必要な変数を宣言する
Dim stCsvData As String
'エラー
If objIE.Document.All(0).InnerHTML = "" Then GoTo Err
If InStr(objIE.Document.All(0).InnerHTML, "404 Not Found") <> 0 Then GoTo Err
344342 ◆XuL15E5UEM :2011/07/07(木) 16:55:48.77
'データ取得
stCsvData = objIE.Document.getElementById("status").InnerHTML
' カンマ区切りで分割して配列に格納する
Dim stArrayData() As String
stArrayData = Split(stCsvData, ",")
'
ReDim Preserve stArrayData(UBound(stArrayData()) + 1)
stArrayData(13) = CPU
' データを確認する
Dim i As Integer
For i = 0 To UBound(stArrayData())
MSHFlexGrid1.TextMatrix(MyNumber, i + 1) = stArrayData(i)
Next i
'
If MyCounter = 8 Then
objIE.Quit
Set objIE = Nothing
End If
Exit Sub
Err:
If MyCounter = 8 Then
objIE.Quit
Set objIE = Nothing
End If
End Sub

以上です、よろしくお願いします。
345デフォルトの名無しさん:2011/07/07(木) 17:58:47.53
まて・・・VB6でマルチスレッドはAPI使えばいけるが
確かやばかった記憶が・・・・

どうせなら同じプログラム8つ動かしてマルチプロセス
とかどうよ?w
346デフォルトの名無しさん:2011/07/07(木) 20:52:56.96
VB6はシングルスレッドじゃないのか
347327:2011/07/07(木) 23:21:24.06
>>342
マルチスレッドにするにせよ、プロセスを分けるにせよ、
このプログラムのようなIEのインスタンスが一つしか
作成されないような構造では、上手く行かないでしょう。

まず、IEのインスタンスが8個作成されるように改造してください。
(それ自体が不可能な場合はsocketを使用するなどして、
かなりの部分を自作する必要があるので、かなり難しいかと)

IEのインスタンスが複数作成できたならば、問題は
Do Untilでのブロック動作だと思うので、DoEventsと
タイマーコントロールで問題回避できると思います。

あと、余計なお世話だとは思いますが、動かす際には
無用なリクエストが大量発行されないように注意してください。
意図せずにDoS攻撃になってしまう可能性があります。
348342 ◆XuL15E5UEM :2011/07/08(金) 01:11:18.20
>>347
レスありがとうございます。

IEの部分は8個作成してもOKです。

>IEのインスタンスが複数作成できたならば、問題は
>Do Untilでのブロック動作だと思うので、DoEventsと
>タイマーコントロールで問題回避できると思います。
この部分はどのようにすればよいか、もしよろしければサンプルをお願いできませんでしょうか。

動かす際には、まず自鯖で試しています。
お気づかいありがとうございます。
349デフォルトの名無しさん:2011/07/08(金) 05:04:31.46
>>345
VBのランタイム関数がスレッドセーフである事を保証しないので使えないのと関数を使えないのと、
IDEのインタプリタ上で動かしているとクラッシュするだけで、
大きな問題は無いよ。
350デフォルトの名無しさん:2011/07/08(金) 09:32:46.33
>>349
あと、たしか実行ファイルがPコードコンパイルじゃなかったら不具合がおきたと思うんだが。
351327:2011/07/09(土) 01:00:28.84
>>342
サンプル作ろうと思ったら、環境(と、ついでに時間)がありませんでした。
ゴメンナサイ。
一週間ぐらい待てるならば作りますので、言ってください。

とりあえず、大まかな話を。

恐らく目的を達成するにはタイマーコントロールを使用してタイムスライス
っぽいことを実装するのが一番手っ取り早いと思います。

現在、Do Untilで行っている動作は完全に処理をブロックしてしまっていて
他に何もできなくなっているので、その部分をタイマーコントロールを
使用して一定周期で監視するように改造するのです。
その際、タイマーコントロールのルーチン内で1〜8までのサーバの
状態を順番に監視するようにします。

イメージはこんな感じ↓。

352327:2011/07/09(土) 01:01:08.37
private sub timer1_timer()

select case(server)
case server1
if ((ie1.Busy = False) And (ie1.ReadyState = READYSTATE_COMPLETE))then
server1flag=true
end if
server=server2

case server8
if ((ie8.Busy = False) And (ie8.ReadyState = READYSTATE_COMPLETE))then
server8flag=true
end if
server=server1

end select

if server1flag and … and server1flag then
timer1.enabled=false
end if

end sub

伝わりますかね…?
353デフォルトの名無しさん:2011/07/09(土) 01:07:07.92
While Flag
 DoEvents
Wend
354デフォルトの名無しさん:2011/07/09(土) 04:16:37.55
今から勉強して新規でプログラム作るなら、.NETでやった方がいいと思うんだが...
355342 ◆XuL15E5UEM :2011/07/09(土) 11:52:45.74
>>351
お忙しいところレスどうもありがとうございます。
時間は1ヵ月でも半年、1年でも待ちます。

351自体は説明内容(単語)が分からずさっぱりなのですが、
352で書いていただいたコードを眺めつつ単語も調べて試して
みたいと思います。(今の段階だとさっぱりなもので・・・。)


>>354
れすども!?
なんとなくVB6の方が操作感?というか分かりやすい気がしたもので。
356デフォルトの名無しさん:2011/07/09(土) 11:56:17.52
VB6はもう開発終了
メンテナンスもされない。
新しいOSで動作保証がなくなるかもしれない。

自分専用のツールを作って公開しないというのなら
別に構わないが、将来自信作ができたとき、
VB6で作っていると、作り直すはめになるだけ。
357デフォルトの名無しさん:2011/07/09(土) 11:58:31.05
というか、そもそも、
サーバーの負荷を調べる程度で、
IEを起動しているのがそもそもの間違い。

IEを起動・・・= CreateObject("InternetExplorer.Application") の部分

重いのがいやならマルチスレッドうんぬんではなく
IEを起動しないようにするのが正解。
358デフォルトの名無しさん:2011/07/09(土) 12:55:42.79
よくわかんねーけどサーバのステータスがhtmlで取得できるならGETして中身見るだけですむよね
359デフォルトの名無しさん:2011/07/09(土) 13:40:11.88
回線の負荷か
CPUの負荷ならレジストリ見ればいいらしいが
360デフォルトの名無しさん:2011/07/09(土) 16:28:24.52
馬鹿ばっか
361デフォルトの名無しさん:2011/07/09(土) 20:24:18.66
「バカ」と罵る奴は何がしたいのか分からんな
362デフォルトの名無しさん:2011/07/09(土) 21:07:44.98
バカにはわからんよ。
363デフォルトの名無しさん:2011/07/10(日) 17:27:47.56
>VB6はもう開発終了
NETも汎用性がなさそうだしな
364デフォルトの名無しさん:2011/07/10(日) 18:15:51.91
未だにVB6製のソフトウェア使ってる企業は何で
365デフォルトの名無しさん:2011/07/10(日) 18:48:15.42
バカは自分が理解できないと人をバカという転位行動をとるよ
366sage:2011/07/14(木) 23:02:07.01
テキストボックスにあるカンマで区切られたデータ(CSVデータ)があって
データを逆順に「りんご,ごりら,らっぱ」→「らっぱ,ごりら,りんご」と
途中まではデータが通りここが通ってない
ReDim Preserve data(i + 1)
Array.Reverse(data)
TextBox1.Text = ""
For j = 0 To i + 1
TextBox1.Text &= data(j) & ","
Next
とするのですが動きません。ご教授お願いいたします。
367デフォルトの名無しさん:2011/07/14(木) 23:03:26.62
すいません上げてしまいました
368327:2011/07/15(金) 02:41:19.28
>>366
TextBox1.Text &= data(j) & ","

TextBox1.Text = TextBox1.Text & data(j) & ","
369デフォルトの名無しさん:2011/07/15(金) 09:47:28.63
>Array.Reverse(data)
こんなのVB6にあったっけ?
.netならわかるが・・・

手抜きだと
Private Sub Command1_Click()

Dim text As String
text = "ごりら,りんご,らっぱ"

Dim arr() As String
arr = Split(text, ",")

Dim i As Long

Dim changedText As String

For i = UBound(arr) To LBound(arr) Step -1
changedText = changedText & arr(i) & vbCrLf
Next

MsgBox (changedText)

End Sub
370デフォルトの名無しさん:2011/07/15(金) 10:06:09.68
>>366
そもそも配列をいちいち逆順にソートし直す必要があるのかね?
For を後ろから-1してくればいいのだとおもうが
371デフォルトの名無しさん:2011/07/15(金) 22:47:25.91
>>368-370
ありがとうございました。スレ違いだったみたいです
丁寧なご教授ありがとうございます
372デフォルトの名無しさん:2011/07/15(金) 23:16:24.06
>質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、

これを徹底させず答えるから
373デフォルトの名無しさん:2011/07/22(金) 16:16:59.87
保守
374デフォルトの名無しさん:2011/07/29(金) 11:58:12.94
保守2
375デフォルトの名無しさん:2011/07/29(金) 13:50:46.57
保守なんぞしなくても、この板では落ちないだろ
376デフォルトの名無しさん:2011/07/31(日) 15:34:56.75
http://hibari.2ch.net/news4vip/subject.txt
を取得して動的二次元配列に1行ずつ代入するにはどうしたらいいでしょうか
377デフォルトの名無しさん:2011/07/31(日) 16:54:49.27
ふつうにOPENして読み込めばOK
一気に読み込んでsplitかけるなり一行づつREDIMして読むなりそのまま使うなりご自由に
378デフォルトの名無しさん:2011/07/31(日) 18:09:56.68
splitかけるとして改行コードは何でしょうか
379デフォルトの名無しさん:2011/07/31(日) 18:11:54.16
そんな事いちいち聞くなよ
380デフォルトの名無しさん:2011/07/31(日) 18:13:44.35
vbCrLfでやってみたのですがうまくできなかったので・・・
381デフォルトの名無しさん:2011/07/31(日) 18:33:33.59
>>380
バイナリエディタで開けば、改行にどんなコードが使われているか確認できるお
382デフォルトの名無しさん:2011/07/31(日) 23:58:30.78
>>376,378,380
かなり情報古いけどここの情報も見ておけば?きっとここに書いてあるようなところで躓くはずだから
ttp://age.s22.xrea.com/talk2ch/
383デフォルトの名無しさん:2011/08/01(月) 00:24:54.94
>>380
Dim Kaigyo$, Subject$, Subjects$()

If InStr(1, Subject$, vbNewLine) > 0 Then
 Kaigyo$ = vbNewLine
ElseIf InStr(1, Subject$, vbCrLf) > 0 Then
 Kaigyo$ = vbCrLf
ElseIf InStr(1, Subject$, vbCr) > 0 Then
 Kaigyo$ = vbCr
ElseIf InStr(1, Subject$, vbLf) > 0 Then
 Kaigyo$ = vbLf
Else
 Stop
End If
Subjects$ = Split(Subject$, Kaigyo$)
384デフォルトの名無しさん:2011/08/01(月) 00:28:52.62
>>381-383
vbLfでした!ありがとうございます!
385デフォルトの名無しさん:2011/08/01(月) 14:13:48.49
vb6ってUTF8をそのまま読めたっけか
386デフォルトの名無しさん:2011/08/01(月) 14:16:52.32
vbNewLineって使うのまずいんじゃね
387デフォルトの名無しさん:2011/08/01(月) 14:23:44.49
読んで配列に入れるだけなら問題ないんじゃね?妙な変換されたっけ?
388デフォルトの名無しさん:2011/08/01(月) 23:38:04.61

subject.txtってUTF8になったの?
389デフォルトの名無しさん:2011/08/01(月) 23:46:36.19
フォーム上にPictureBoxを配置しています
PictureBoxの角に○を書くにはどうしたらよいでしょう?
http://uproda.2ch-library.com/lib410514.bmp.shtml
上記が実現したいイメージです。○はペイントで書きました
390デフォルトの名無しさん:2011/08/02(火) 02:38:42.58
画像見れない
391デフォルトの名無しさん:2011/08/02(火) 02:39:14.19
Circleメソッド
392デフォルトの名無しさん:2011/08/02(火) 02:40:41.31
じゃ無理か
393デフォルトの名無しさん:2011/08/02(火) 02:49:33.31
目的や用途が不明だからよく分からんが
4つの白い四角形がそれぞれPictureBoxコントロールなのか?
でかいPictureBoxコントロールにぽつんとその四角描けば円も描けるだろうけど



394デフォルトの名無しさん:2011/08/02(火) 09:19:39.01
61,61以上のPictureBox(以下、Picture1とする)にその□を書いて、
Picture1.Circle(12, 12), 11, RGB(255, 0, 0)とすればいいんでない?
※サイズはその画像から計算

その□の角が中心点だと、その半径分だけ大きいPicture1が必要だよね?
395デフォルトの名無しさん:2011/08/03(水) 00:07:20.45
Line(x, 1)-(x, 5), &hff
って高さ4ピクセルの縦線なんだよ
変な仕様だよね
396デフォルトの名無しさん:2011/08/03(水) 00:12:10.29
全然変じゃない。

ピクセルなどという、表示デバイスの都合に依存したフレームで考えてるから
変に思えるだけ。
397デフォルトの名無しさん:2011/08/03(水) 00:47:37.40
ユーザー定義もできるーVB6標準コントロールどものスケール
398デフォルトの名無しさん:2011/08/03(水) 09:37:18.11
XPでVB6SP6使ってるんですが
実行時エラー9 インデックスが有効範囲にありませんっていうエラーって
配列変数以外で起こる原因ってなんなんでしょうか?
399デフォルトの名無しさん:2011/08/03(水) 09:54:47.09
>>396
じゃあ、ピクセル単位で(x1,y1)から(x2,y2)まで線を引く必要が生じた場合は
Psetを用いる以外にどのような方法が?

>>398
なんか覚えがある
もうちょっと詳しく
400デフォルトの名無しさん:2011/08/03(水) 10:09:28.10
>>399
あるプロシージャ内で配列変数は使ってなく
RDOを使用してMSSQLに対してSELECT文を実行し
OpenStaticで取得したrdoResultsetのRowCountを参照して、
RowCountが1以上だったら実処理用のプロシージャをコールするだけなんですが
コールするプロシージャはそっち側でOnErrorしてますのでコール元にエラーが返ってくることはなく
なぜか配列を使ってないコール元のプロシージャで実行時エラー9が起きてて悩んでるんです
401デフォルトの名無しさん:2011/08/04(木) 17:45:29.59
>>400
あーごめん、思い出すきっかけになるかと思って聞いてみたんだけど
思い出せなくてキリ番オメとしか言ってあげられない
IDEだと発生しないエラーだっけ?
他に心当たりある人がいなければ、コールする部分をコメントアウトしてみるとか
コード1行ごとにログを出力するとかして、どこで発生してるか突き止めるしかないね
402デフォルトの名無しさん:2011/08/07(日) 02:50:32.56
vb6の不思議なとこは
関数の戻り値を関数から出るまでは何回でも変更できるし
CとかJAVAならreturnで即終了だいs
403デフォルトの名無しさん:2011/08/07(日) 12:21:03.79
>returnで即終了だいs

returnで即終了だいすけ?
404デフォルトの名無しさん:2011/08/07(日) 17:02:26.91
>>402
不思議と言うより、そこはVB6の優れているところだね
ただ、戻り値の返し方が関数名への代入ってのは頂けない
やはりここは関数名ではなく固有キーワードの方が良い
405デフォルトの名無しさん:2011/08/07(日) 18:55:29.26
cやjavaなら冒頭で戻り値用の変数用意すれば同じことできるし
VB6は戻り値設定に関数名使ってるのもだるいが
関数からの抜け出しも文字数長くてしんどい
406デフォルトの名無しさん:2011/08/07(日) 20:47:23.43
CやJavaでは、戻り値のあるなしどちらでも関数だが
VB6は片やfunction 方やsub。

これって何か意味あるかな?
407デフォルトの名無しさん:2011/08/07(日) 21:38:00.71
>>406
もともとの行番号がついていた時代のBASICには関数はなかった。
しかし関数はなかったがサブルーチンはあった。
変数はグローバルで、サブルーチンは処理をまとめただけ。
CALLはそのサブルーチンを呼び出す命令。
subはその頃から互換性を保ちながらバージョンアップしてきた時の名残。

そもそもBASICは1964年に作られた初心者用言語で
(ちなみにC言語は1972年) 今のような使われ方、機能は想定されてなかった。

このような結構名残はたくさんあって、昔のBASICは変数を定義する必要はなかった。
ただし配列を使う場合には特別に定義する命令があった。それがVB6では変数を定義するときの
キーワードのDimになっている。DimとはDimension(n次元)の略なのに…の答えがこれ

変数の型も昔のBASICにはAs Integerとかなくて、変数名の最後に
%, &, $をつけて表していた。今も使える。

VB6の不思議な仕様はたいてい昔からの名残(互換性維持のため)と考えれば理解できるよ。
初期のBASICの仕様と、それから大きく発展したQUICK BASICの仕様を調べてみたらどうかな。
408デフォルトの名無しさん:2011/08/07(日) 22:11:16.48
>>406
VBだってどっちにしろプロシージャーでしょ。

同じものを「何も返さない処理」と表現するか「無を返す関数」と表現するかの違いだが、
いずれにせよ深い意味なんてない。

数学的には後者の方が統一的で美しいけど、反面直観的ではないな。
線分を多角形の特殊形態だと言うのに近い。
409デフォルトの名無しさん:2011/08/08(月) 00:10:20.21
.NETに以降したいけど、書き直すのが面倒です!
あの変換するの使っても結構修正箇所が。
(これは自分の作りに問題があるのだと思うけど)

というわけで、Windows7x64にVB6入れて使っている人いますか?
(XPモードじゃなくて)
410デフォルトの名無しさん:2011/08/08(月) 00:19:09.74
411デフォルトの名無しさん:2011/08/08(月) 01:19:35.41
一応、言っておくか....
.NETで作ってあるのもある。
自宅ではVB6だからそれを移行するのが面倒っていう話で。
というか、本題は。
>というわけで、Windows7x64にVB6入れて使っている人いますか?
>(XPモードじゃなくて)
412デフォルトの名無しさん:2011/08/08(月) 09:43:57.90
>>406
単に Pascal に倣っただけでしょ。
「戻り値設定に関数名使ってる」のも同じ。

なんで Pascal は? って聞かれたら Wirth に聞いてくれというしかないが...。
413デフォルトの名無しさん:2011/08/09(火) 00:55:54.03
>>409
MSにガイドが有るだろ
基本はプロテクトかかってないフォルダ、つまりProgram Filesとか以外にインストールでほぼ動くよ。
やってないとは思うがシステムフォルダのパス取得は直書きしないで全部関数使う
基本32bitで動くからその辺は気にしないで大丈夫だが、
COMとかDLLとかは実際に動かしてチェックしないと解らん。
あとはVirtualStoreとかの隠しフォルダに気をつけるぐらいかな

良く解らなければUAC切れ
こいつがファイルからレジストリまでユーザー単位で仮想化してるのがおかしくなる原因だ
後は互換モードを活用する
これは過去Ver.と7のAPI対応表を持ってて裏で変換してくれる

あ、プリンタAPIとか使ってるならそいつも確認
セッション0問題とかその辺が引っかかる可能性が有る。
ドライバ関係はメーカ対応無かったりで結構泣けた

移行やったの去年だから今はもうちょっと改善されてるかも?
414デフォルトの名無しさん:2011/08/09(火) 01:15:13.51
>>413
移行できない、ではなくて、移行が面倒なんでは?
VB6製アプリが動くか、ではなくて、VB6IDE環境が動くかが知りたいたいのでは?
それに、単純にVB6のコードをVB.NETで動くようにしても、
クラス構造や例外やDBの扱いなんかが悲しいことに。

>>409
Win7(x64)で動くのかどうか知らないけど、VB6環境はXPモードでメンテのみに留めて、
メインの環境を変えちゃったほうがいいんじゃない?
415デフォルトの名無しさん:2011/08/09(火) 18:00:56.19
InputManのimTextというコントロールについて知っている人が
いたら教えてください。

imTextをマルチラインで使った場合、半角カナの単語が行末に来る場合
単語が分割されないように自動的に改行されてしまいます。
これを分割されるようにする方法はないでしょうか?
それらしいプロパティが無く困っております。

よろしくお願いします。
416デフォルトの名無しさん:2011/08/09(火) 21:11:56.79
>>415
スレ違い

あれは汎用コントロールであって、「VB6でも使える」だけで
VB6の付随品でもなければ、VB6用というわけでもない

そんな、VB6とは関係ないものの質問はNGです
お引き取り下さい

そもそも、正規に購入しているなら、サポートに問い合わせれば良いだけだ
417デフォルトの名無しさん:2011/08/09(火) 21:17:07.41
書き忘れましたが自己解決しました。
418デフォルトの名無しさん:2011/08/10(水) 00:51:19.04
>>414
あ、>>411か、これは恥ずかしい・・・
え〜と入れてたし動いてたけど>>414が正解だと思う
細かいとこで引っかかっていちいち対応するのがめんどかった
419デフォルトの名無しさん:2011/08/10(水) 15:42:21.66
WebBrowserコントロールに動的に生成したHTMLを
表示したいのですが、最後の行でエラーになってしまいます。
WebBrowserコントロールに生成したHTMLDocumentを
設定するにはどうしたらいいでしょうか?

Dim doc As New MSHTML.HTMLDocument
Dim html As MSHTML.HTMLHtmlElement
Set html = doc.createElement("html")
Dim head As MSHTML.HTMLHeadElement
Set head = doc.createElement("head")
Call html.appendChild(head)
Dim body As MSHTML.HTMLBody
Set body = doc.createElement("body")
Call html.appendChild(body)

Set WebBrowser1.document = doc
420デフォルトの名無しさん:2011/08/11(木) 02:20:37.69
OptionButtonコントロールの選択状態ってどう取得するのがスマートなの?
OptionButtonのClickイベントのたびに選択されたIndexを変数に保持する方法?
それとも状態を知りたいタイミングで一個一個選択された状態か確認する方法?
421デフォルトの名無しさん:2011/08/11(木) 06:24:07.84
スマートさなんてのは、人それぞれの感覚で定義が違ってくるので
君にとってスマートなやり方は、君にしか解らない

VBAスレでも似たような展開になってるが、トリッキーでもコードが短ければ
それを以てスマートと感じる奴も居れば、可読性の高さにスマートさを感じる奴も居る
はたまた、汎用性の高さや、拡張性の高さにスマートさを感じる奴も居る

いそんな取得の仕方はWeb上に腐るほどサンプルとして転がってるから
自分でいろいろ見て、自分がスマートだと思った方法を真似れば良い

以上、さようなら
422デフォルトの名無しさん:2011/08/11(木) 08:42:51.88
>>420
スマートにしたいのなら、UI部分とロジックは分離して
ロジック部分はUIを使わないでも(例えばCUIなどから)
実行できるようにするといい。

分離したロジックは別のクラスに書く
423デフォルトの名無しさん:2011/08/11(木) 09:48:38.09
>>420
なんか愚問だな。

スマートの定義は置いとくとしても、どの方法が適切かは目的しだい。
常にこの方法が適切、なんてものはない。

例えばタブページのタブのように、オプションボタンで、あるコンテナの中に
表示される中身を切り替えたいとする。
こんな時にイベントドリブン以外の方法を採用できるのか。

例えば何かを設定する画面でユーザーがOKボタンをクリックするまで変更された
設定の適用を保留したい場合、イベントドリブンを採用して、ユーザーがオプションボタンを
クリックした時点で直ちに対応する設定値を変更してしまっていいのか。
424デフォルトの名無しさん:2011/08/11(木) 11:23:18.21
以上、スマートなOptionButtonコントロールの選択状態の取得方法を知らない人たちの戯言でした
425デフォルトの名無しさん:2011/08/11(木) 11:35:22.43
それより>>419頼みますよ。
426デフォルトの名無しさん:2011/08/11(木) 21:30:47.51
>>424
その後にスマートな方法をスマートに書いていると格好良かったんだが
その1行だけだとかなり滑稽というか、君のが一番惨めな戯れ言に成り下がってるな
427デフォルトの名無しさん:2011/08/12(金) 00:57:24.17
>>425
WebBrowserコントロールのdocumentプロパティは読み取り専用ではなく設定も可能なプロパティなの?
428デフォルトの名無しさん:2011/08/12(金) 08:38:11.07
>>427
vb.netではできるので高い技術力を持ってすればできるのではないかと。
読み取り専用ごときに怯んではいけないかと。
429デフォルトの名無しさん:2011/08/12(金) 10:30:49.72
>>426
ム板で自己満足のコードも無い長文を垂れ流すのを、タワゴトと言わずして何と言おうか
430まあ、短いだけましだが>:2011/08/12(金) 11:27:57.51
短くても戯言は戯言だし...。
431デフォルトの名無しさん:2011/08/12(金) 21:09:59.41
>>429
悔しかったの?
432デフォルトの名無しさん:2011/08/12(金) 21:41:03.04
>>425
一旦ファイルに保存しちゃおうぜ。
433デフォルトの名無しさん:2011/08/12(金) 22:43:43.55
>>432
今はそれですけど、それは無しだと思うのです。
434 【Dnewsplus1306759181466917】 :2011/08/13(土) 09:02:32.62
Select Case True
Case Option1(0): Debug.? "0"
Case Option1(1): Debug.? "1"

End Select
Dim objopt As OptionButton
For Each objopt In Option1
If objopt.Value Then Debug.? objopt.Index: Exit For
Next

メモ
あと、起動時にどれかが選択状態になってしまうので
全部非選択して、ユーザーに必ず選ばせてから処理を進めたい場合は
Option1(10).Visible=False: Option1(10).Value=True
というようにダミーを隠しておくんだぬ
435デフォルトの名無しさん:2011/08/13(土) 11:57:05.16
そんな「意地悪」をする合理的理由が何もない件。
436デフォルトの名無しさん:2011/08/13(土) 15:14:50.89
好きな女の子に対しては、いじわr(ry
437デフォルトの名無しさん:2011/08/13(土) 16:42:20.74
Private Sub Option1_Click(Index As Integer)
Option1(0).Tag = Index
End Sub

でおけ
438デフォルトの名無しさん:2011/08/14(日) 16:06:29.96
うまくググりゃちゃんと欲しかった情報とか出てくるんだな
以前は見つけられなかったけどキーワード次第で今回すんなり見つけられた
439デフォルトの名無しさん:2011/08/14(日) 16:11:13.33
俺がググるの検索順位を
いじってあげたおかげだよ。
感謝しな。
440デフォルトの名無しさん:2011/08/14(日) 16:11:26.84
うかつにここで質問して叩かれずに済んだという話
441デフォルトの名無しさん:2011/08/14(日) 16:16:44.36
>>440
2ちゃんねる初心者か?

どんな質問でも、叩く奴は叩く。
叩かれることに怯えるな。

とりあえず2ちゃんねるで聞く、そして自分で探す。
たまに2ちゃんねんるで釣れてないか確認する。
これが最も効率がいい。

2ちゃんねるはダメもとで書いて置く場所だよ。
442デフォルトの名無しさん:2011/08/16(火) 00:53:14.25
>>437
tagってそんな風に使って大丈夫なの?
443 【Dnewsplus1306759181466917】 :2011/08/16(火) 06:25:38.36
前回バックアップした時点から更新されたファイルをUSBメモリにコピーして
他のPCにフォローするプログラムを作ってるのですが
何千ファイルものタイムスタンプを片っ端から見ていくのは
時間がかかるのでなんとかしたいのです

フォルダの更新日時というやつが、そのサブフォルダも含めて、
中の最新ファイル更新日時を示しているのなら、
かなり処理をはしょれるのですが、そうはなっていないようです
フォルダの更新メッセージを受け取るような常駐型ソフトではないし
何かいい方法はないですか
444デフォルトの名無しさん:2011/08/16(火) 08:06:00.97
>>443
dir /O-D
445 【Dnewsplus1306759181466917】 :2011/08/16(火) 21:05:02.37
新しい順のファイルリストをリダイレクトして先頭のタイムスタンプを・・・
う〜む
446デフォルトの名無しさん:2011/08/19(金) 00:18:11.64
素直に FindFirstFile, FindNextFile, FindClose API
を使って列挙するのがいいんじゃないかな。

時刻も同時にとれるし。

USB に全ファイルを入れてもいいなら ROBOCOPY を
使って、更新されたファイルのみコピーする方法もある。
447 【Dnewsplus1306759181466917】 :2011/08/19(金) 01:00:25.03
>>446
今はDirループで列挙してますが
コンパイルすると結局そのAPI呼出しに置き換わるのではないかと思っています

毎日ファイリングしてる数百のデータファイルを、今作ってるソフトにかけると
数年前のファイルが置いてあるフォルダでも更新してないかバカみたいに探してるのが悲しい・・
これは、OSがそういう機能を提供してくれない限りしょうがないですね
448デフォルトの名無しさん:2011/08/19(金) 01:20:33.21
>>447
たしかに Dir ループは Find 〜 API を呼び出してるんだろうけど、
ファイル名しか取れないでしょ?

ファイル名をとってきて、FileDateTime 関数あたりで更新時刻を
取得してるんだよね?

Find 〜 API を直接呼べば、WIN32_FIND_DATA 構造体に更新時刻
が入ってくるので、FileDateTime 関数を呼ぶ必要がなくなるんだよ。
449デフォルトの名無しさん:2011/08/19(金) 08:56:08.33
ローカルだとFileDateTimeを呼んでもたいしたオーバーヘッドはないが
ネットワークドライブだと環境によっては悲惨な結果になる
450デフォルトの名無しさん:2011/08/20(土) 14:06:58.70
Dirはいやらしい
Dirループがネスティングできないと知っていても中で使ってる関数の先の先で使ってたりして
あと、最近発見したのはDirでUSBメモリを参照すると、USBが抜けない
某サイトで開放するためにDir ""とするんだと書いてあったが、
それでもカレントディレクトリを参照してるのか開放はしてないようだった
USBメモリを参照し終わったら、それを開放するためにHDDを参照してやらないといけないみたい
451デフォルトの名無しさん:2011/08/20(土) 15:07:48.28
VB6 IDEでマウスホイールでコードをスクロールするアドインが提供されていますが、動作しません。
なぜでしょうか、今はVB6もXPも最新にしてますが、かれこれ何年も思い出す度に下記を実行しているので
VB6のspやOSやPCが原因ではないと思われます
と、ここまで書いてて自分用のセッテイングに問題があるんだなと思い
ツール→オプション→詳細→SDI開発環境のチェックを外したら動作した
なんだこれー、SDIがダメならマウスホイール使えなくてなくてもいいや

http://support.microsoft.com/default.aspx?scid=kb;ja;837910
1.VB6MouseWheel.EXE パッケージをダウンロード (Click!)
2.VB6MouseWheel.EXE を適当な場所に解凍 (C直下がいいかと。)
3.[スタート]→[ファイル名を指定して実行]で以下のコマンドを入力「regsvr32 (解凍先)\VB6IDEMouseWheelAddin.dll」
4.VB6.0を起動し[アドイン] →[アドイン マネージャ]
5.「MouseWheel Fix」を選択
6.[ロード/アンロード] と [起動時にロード]の項目にチェック
452デフォルトの名無しさん:2011/08/20(土) 16:42:32.76
>>451
気づいたとおり、そのアドインはSDI環境には対応してない。
以下のアドインなら、SDI環境でも使えるらしい。

ttp://homepage1.nifty.com/mtj-k/software/office_vb6/addautoscroll_vb6.html

それにしても、SDIで使ってる人いたんだね。
453デフォルトの名無しさん:2011/08/20(土) 19:25:22.98
X wheelとかのホイール支援ソフト入れておけば使えないこともないような気がする
454デフォルトの名無しさん:2011/08/20(土) 23:32:13.58
>>452
おお、SDIでも使えるんですか
後で入れてみます

SDIでないとめちゃめちゃ使い難いではないですか?
VBのIDEだけじゃなくてエクスプローラとかバイナリエディタとか・・
複数のコードウインドウの空いたエリアにあれば参照しながら打てるし
455デフォルトの名無しさん:2011/08/21(日) 06:19:51.46
MDIとSDIを取り違えてないか?
456デフォルトの名無しさん:2011/08/21(日) 15:36:34.65
VBSで質問です。
gethostnameやgethostbynameを使用して
ipアドレスの取得を行いたいのですが実行エラーになります。
使用する方法ありませんか?
457デフォルトの名無しさん:2011/08/21(日) 16:41:26.29
エラーの内容やソースも出さずに質問とは
458デフォルトの名無しさん:2011/08/21(日) 18:31:01.46
>>456
スレ違い

それはActiveXコンポーネントという汎用APIの質問であって、VBSの質問ではない
VBSの制御構文などに関する質問ならここでもOKだが、汎用APIの質問受け付けたら
キリがない(ActiveXはもちろん、Win32APIの質問も、.NET FrameworkやDirectXなどもOKになる)から
>>1の4行目に書いて有る通り、NGってことになってる

というわけでさようなら
459デフォルトの名無しさん:2011/08/21(日) 19:07:23.00
えっと、このスレは VBS は含まれますか?
460デフォルトの名無しさん:2011/08/21(日) 19:11:59.77
一応。
461デフォルトの名無しさん:2011/08/21(日) 19:57:58.57
大雑把な質問には皆エスパーして答えていることを質問者は理解すべき
462デフォルトの名無しさん:2011/08/21(日) 21:12:10.83
いやVBSはどう考えてもスレ違いだろ
463デフォルトの名無しさん:2011/08/21(日) 21:14:47.48
と思ったけど、>>1には
>二.VBScript、インストーラーなどはこのスレでOK。
って書いてあるな。VBSそのものはここでOKらしい
464デフォルトの名無しさん:2011/08/22(月) 00:12:22.56
VBS から直接 API は呼べないので

nslookup の戻り値を取得して解析するとか
ttp://homepage1.nifty.com/MADIA/vb/vb_bbs/200608/200608_06080050.html

API をラップした ActiveX.DLL を探してくるか、VB で作成して利用するとかしかない。
465デフォルトの名無しさん:2011/08/22(月) 02:35:55.69
VB6SP&
リッチテキストボックス6(SP6)のスクロールバーを両方表示に設定してる(ScrollBars=rtfBoth)のに
水平のスクロールバーが使えない
リッチテキストボックスの横幅を越える文字は自動で改行されて表示される
どのプロパティいじれば横スクロールバー有効になるの?
(垂直スクロールバーは問題ないんだけど)
466デフォルトの名無しさん:2011/08/22(月) 04:08:12.61
>>465
ScrollBars プロパティ のヘルプ嫁。

水平スクロール バーは、RightMargin プロパティがコントロールの幅よりも
大きな値に設定されている場合に限り表示されます。
このプロパティの値は、コントロールの幅と同等か、わずかに小さいだけでも
かまいません。
467デフォルトの名無しさん:2011/08/22(月) 04:22:39.48
>>466
トンクス
今度から真っ先にヘルプを探してみます
どうもすみませんでした
468デフォルトの名無しさん:2011/08/22(月) 16:56:45.49
VB6でコレクションにあるクラスが入っています。
項目を取り出すとき、中に入れたデータはクラスですが、返り値はObjectで帰ってくるようになっていると思います。
この項目をあるクラスの変数に復元して入れることは出来ませんか?
469デフォルトの名無しさん:2011/08/22(月) 20:36:27.12
エスパーすれば言いたいことは解るけど、あえて突っ込ませて貰う

>>468
日本語(自然言語)で理路整然とした文章を書けない奴に
プログラム言語は無理
470デフォルトの名無しさん:2011/08/23(火) 09:29:44.30
>>469
あえて突っ込んでおく
意外とそうでもない
471デフォルトの名無しさん:2011/08/23(火) 11:48:36.25
句読点も打てない奴に、んなこと言われたくねーよ。
472デフォルトの名無しさん:2011/08/23(火) 12:04:36.97
>>471
どこに句読点が必要なんですか?
わかりません><
473デフォルトの名無しさん:2011/08/23(火) 14:07:44.66
禿、同。
474デフォルトの名無しさん:2011/08/23(火) 14:24:32.33
コンパイラさんやインタプリタさんって自然言語で文章書けるんだ
475デフォルトの名無しさん:2011/08/23(火) 15:15:13.42
>>471
が、今顔真っ赤にして、恥ずかしがってる、気が、してならない。
476デフォルトの名無しさん:2011/08/23(火) 16:34:28.76
よほど悔しかったと見える。
477デフォルトの名無しさん:2011/08/23(火) 18:00:29.63
>>468
こゆこと?

Dim col As New Collection
Dim c1 As Class1

Set c1 = New Class1
c1.Key = "abc"
col.Add c1, c1.Key

Set c1 = New Class1
c1.Key = "efg"
col.Add c1, c1.Key

Set c1 = New Class1
c1.Key = "hij"
col.Add c1, c1.Key

Set c1 = col.Item("efg")
MsgBox c1.Key

'この例はClass1には Public Key As String のプロパティ作ってある
478デフォルトの名無しさん:2011/08/23(火) 19:29:57.11
>>468
ちゃんと中に入れたクラス型ががわかっているなら
取り出す時に、同じクラス型の変数に入れてやれば良い。
キャストの手間は無い。
479デフォルトの名無しさん:2011/08/24(水) 06:29:00.96
>>476
悔しかったというより、471は恥ずかしかったんじゃねーの?
というか、恥ずかしいという自覚を持てずに悔しがっちゃうようだとお粗末すぎるし・・・
480デフォルトの名無しさん:2011/08/24(水) 10:40:39.57
なんで>>471が叩かれてるのか、さっぱりわからない
481デフォルトの名無しさん:2011/08/24(水) 11:07:34.49
>>477-478
回答ありがとうございます。

なるほど、このような時は明示的なキャストというものはしないのですね。

なんとなく動いてはいたんですが、ちょっと怖い気がして質問させていただきました。
日本語がおかしかった部分に関しては・・・お恥ずかしい限りですが焦っていたのもありました。

ご回答ありがとうございました。
482デフォルトの名無しさん:2011/08/24(水) 19:44:11.09
WebBrowserを使いサイト内のiframeに書かれているURLにアクセスして
テキストを入力するプログラムを作っているのですが、本体とiframeで
ドメインが違っていて「アクセスが拒否されました」とエラーが出てしまいます。

IInternetHostSecurityManager.GetSecurityIdというのを実装すればいいと
いうところまでは調べてわかったのですがどう実装していいものなのかわかりません。

IInternetHostSecurityManager.GetSecurityIdの実装方法もしくは別ドメインへの
アクセス方法が他にあるのであれば教えていただきたいのですが・・・。

よろしくお願いします。
483デフォルトの名無しさん:2011/08/24(水) 23:36:23.52
親のURLからたどればいいんじゃない?
484デフォルトの名無しさん:2011/08/25(木) 02:06:22.17
VB6と関係ない質問ぽくね
485デフォルトの名無しさん:2011/08/25(木) 04:48:59.67
何の話か判らんけど以前、ネット上のサイト読むのに
WinSockでシコシコ読んで文字コード変換までしてたけど
今はアドレス渡すだけで一発でソースをテキストファイルに落とすAPIがあるんだね
486デフォルトの名無しさん:2011/08/25(木) 07:05:54.57
HTTPごときでシコシコはいいすぎだと思う
487デフォルトの名無しさん:2011/08/25(木) 12:46:17.93
html程度ならふつーのOPEN命令でも読めたりするんだよな
タイムアウトなどの処理はどうだったかしらんけど
488デフォルトの名無しさん:2011/08/25(木) 13:55:21.85
Open "http://www.google.co.jp/" For Input As #1
で読めるってこと?
489デフォルトの名無しさん:2011/08/25(木) 14:52:29.18
なぜ自分で試さないのか
490デフォルトの名無しさん:2011/08/25(木) 21:59:14.75
やってる事はほぼ一緒だけど、「メモ帳」でもURL入れて開けばhtmlが出るんだよな
491デフォルトの名無しさん:2011/08/25(木) 23:25:02.10
>>489
なぜ試す前に聞いちゃいけないの?
492デフォルトの名無しさん:2011/08/26(金) 11:47:02.05
復活
493デフォルトの名無しさん:2011/08/26(金) 14:31:56.12
ほんとだw出たw
Windowsの仕様?Win7とかでも出るのかなVB6サポートされてるからって
このOpenの仕様はVB6とは関係ないかんじなのかな
494デフォルトの名無しさん:2011/08/26(金) 14:58:04.76
>>491
別にいけなかないが、自分で試せばすぐにわかることだろ。
>>488書いてから、誰かがレスするまで何時間も待つのか?
495デフォルトの名無しさん:2011/08/26(金) 15:09:24.16
くだらないやりとりやってないで、答えてやれよ

>>488
もちろん、読める
496デフォルトの名無しさん:2011/08/26(金) 15:30:40.24
読めるわけ無いだろ
497デフォルトの名無しさん:2011/08/26(金) 18:53:53.31
少なくともメモ帳ではマジで開けた
498デフォルトの名無しさん:2011/08/27(土) 15:29:03.29
すごーい、OPENで読めた
VB2からやってるけど、これは知らなかったわ
凄い物知りがいるんだなここは

>>486
サーバーからバッファに受信したデータを結合したりチャンク形式に対応したり
かなりシコシコなコードになったよ
でもまぁ、2ちゃんの鯖の時刻を時刻合わせに使ったり、自前のコードは色々と
応用がきくから捨てたもんじゃないけど
499デフォルトの名無しさん:2011/08/27(土) 15:42:48.08
>>376-の時はみんなスルーだったのに…
500デフォルトの名無しさん:2011/08/28(日) 00:20:58.43
つまりOPENでsubject.txtを読み込み、改行コードでsplitしたあと2次元配列にいれていくってことか
501デフォルトの名無しさん:2011/08/28(日) 00:26:50.52
subject.txtの取得時ってUAは関係ないっけ?
openで読む時リクエストヘッダを任意で指定できるのかな
なんかそう言う細かいところはできなさそうな雰囲気で結局WinSock叩く方が早いっていう結論になりそう
502デフォルトの名無しさん:2011/08/28(日) 00:35:52.91
HTTPプロトコルを喋りたいのなら、
HTTP用のライブラリを使えばいい。

WinSockを使う必要はないし、
様々なヘッダの解釈面倒だろ。

それすっ飛ばしてWinSockにいっちゃう人って
逆に知識ないんじゃないかって思う。
503デフォルトの名無しさん:2011/08/28(日) 00:37:05.62
というか.netに行くのが正解
504デフォルトの名無しさん:2011/08/28(日) 08:52:19.46
httpdのログ見るかぎりはIEで接続されてる事になってるよ
505デフォルトの名無しさん:2011/08/28(日) 12:05:28.58
>>502
とりあえずお前のお勧めのVB6用HTTPライブラリ教えてくれ
506デフォルトの名無しさん:2011/08/28(日) 13:56:24.69
>>504
だろうねw

どうせユーザーエージェントなんて
urlmonで変えられるだろ。
507デフォルトの名無しさん:2011/08/28(日) 14:46:47.87
自作のエディタで開けたからOPENで読み込んだと勘違いしてたけど
ファイル名入力のGetOpenFileNameってダイアログのAPIがファイル名にURLを与えると
IEのキャッシュファイル名を返してきて
OPENは単にTemporary Internet Filesの中のファイルを開いてるだけでした
508デフォルトの名無しさん:2011/08/28(日) 15:05:22.59
>>507
でもそれは結局URLを読んでるのと同じだろ?
509デフォルトの名無しさん:2011/08/28(日) 17:09:20.25
単にキャッシュ読むなら相手のhttpdログに残らないわけだが
510デフォルトの名無しさん:2011/08/28(日) 22:01:47.10
キャッシュよむかどうかはインターネット設定によるんじゃ?
キャッシュに無ければ実際にhttpでデータとってくるだろ
511デフォルトの名無しさん:2011/08/28(日) 22:20:40.63
インターネットの画面で右クリックしてプロパティを開くと、
WEBページのサイズを確認することができますよね?

それを利用して、サイズが変わった=ページの更新があった という考えで
更新があると
「チェックしているサイトが更新されました」
という風に画面に表示するようにしたいのですが、
このような動作をVB上で実現することはできるんでしょうか?
実現可能であればどのような関数を使って作成すればよいのかを教えてください。
お願いします。
512デフォルトの名無しさん:2011/08/28(日) 22:53:23.63
Content-Lengthが帰ってくる保証は無いしLast-Modifiedも同じくあてにならない
以前のファイルと取ってきたファイルを比べないと正確な更新があったかはわからない

つか、そういうのはそれなりのスレで聞いた方がいいんじゃないかな
513デフォルトの名無しさん:2011/08/28(日) 22:55:21.54
とりあえず、Content-Lengthでやってみて駄目ならでいいんじゃねっていう。
512さん教えてあげて!w
514デフォルトの名無しさん:2011/08/28(日) 22:57:42.87
だがことわる
515511:2011/08/28(日) 23:09:48.78
>>512
今はとりあえず、サイズでチェックのみの
簡単なもので作りたいと考えています。
ですのでこの際正確に更新があったかどうかは問わないもので大丈夫です
516デフォルトの名無しさん:2011/08/28(日) 23:19:45.45
winsockのTCPの80でHEADかGETを行い読み解析
詳しくはぐぐってくれ
517デフォルトの名無しさん:2011/08/28(日) 23:21:53.15
くれぐれも実在するインターネットのサイトでテストを行わない事
練習用のサーバを建てて実験するように
冗談じゃなく牢屋にブチこまれるぞ
518デフォルトの名無しさん:2011/08/28(日) 23:26:39.75
ETagがあるんならそっちのほうがいいような気がしてきたが、どうなんだろうな
俺はそんなに詳しくないからわからん
519デフォルトの名無しさん:2011/08/29(月) 00:25:42.01
>>517
何で牢屋?
520デフォルトの名無しさん:2011/08/29(月) 00:33:26.48
岡崎市立中央図書館事件というものがあってな
サーバ管理者側が意図しない接続をうけたと警察に被害届を出せばとりあえず逮捕するという前例を作ってしまったんだよ
521デフォルトの名無しさん:2011/08/29(月) 01:11:51.80
なんか2chって得意げにそれを挙げる馬鹿が多いよな
522デフォルトの名無しさん:2011/08/29(月) 01:20:41.29
得意げになるようなものか?これ
523デフォルトの名無しさん:2011/08/29(月) 01:30:04.69
投稿者はドヤ顔してるに違いない
524デフォルトの名無しさん:2011/08/29(月) 01:34:25.23
妬むなよ、気持ち悪い。
525デフォルトの名無しさん:2011/08/29(月) 02:16:03.72
>>520
別にそんな例を出さなくても、
誤認であっても逮捕されるなんて知ってる。
世の中のこと何も知らないんじゃないのか?
526デフォルトの名無しさん:2011/08/29(月) 02:22:03.69
具体例を出したら例を出すなと言い、
出さなかったらソースは?と聞く。
527デフォルトの名無しさん:2011/08/29(月) 02:30:24.39
つまり、元々の発言が、くだらないものだってって結論。

逆に言えば、くだらないものだという証明をするために
証拠を出させたとも言える。
528デフォルトの名無しさん:2011/08/29(月) 02:33:07.31
妬むなよ、気持ち悪い。
529デフォルトの名無しさん:2011/08/29(月) 03:57:31.85
何だこいつw

524 名前:デフォルトの名無しさん[sage] 投稿日:2011/08/29(月) 01:34:25.23
妬むなよ、気持ち悪い。

528 名前:デフォルトの名無しさん[sage] 投稿日:2011/08/29(月) 02:33:07.31
妬むなよ、気持ち悪い。
530デフォルトの名無しさん:2011/08/29(月) 19:57:00.41
これ見るたびに2chネラって頭悪い奴が多いなと思うんだけど、
岡崎の件は普通に考えればケーサツの勇み足っていう文脈で言及されるべき事件であって、
こんなのを「犯意がなくてもお縄になる事例」として挙げる奴は脳が湧いてるのかと。
531デフォルトの名無しさん:2011/08/30(火) 00:25:22.33
別件逮捕のネタとして使われないとは言えない時代だから困る。お前ら、バグは残すなよ
532デフォルトの名無しさん:2011/08/30(火) 02:13:22.64
別件って
何かやましいことでもしてんのかよw
533デフォルトの名無しさん:2011/08/30(火) 16:24:32.19
vbのツールバーのボタンサイズを変更するにはどうすればいいんですか?
534デフォルトの名無しさん:2011/08/31(水) 21:44:17.98
普通にやればいいんじゃないの?
535デフォルトの名無しさん:2011/09/01(木) 08:50:05.40
>>530
実際には当事者であるMDSの嘘を専門家の意見として鵜呑みしている時点で
勇み足というレベルではなく深刻な警察の腐敗が明らかな大問題
536デフォルトの名無しさん:2011/09/02(金) 02:35:40.05
>>535
犯罪だという訴えがあって、逮捕状も出た(んだよな?当然)のに、
逮捕しなかったらそれは警察の怠慢。そっちのが腐敗しとるわ
537デフォルトの名無しさん:2011/09/02(金) 19:58:58.45
逮捕状ってのは警察が請求すれば自動的に出ることになってるんですよw
538デフォルトの名無しさん:2011/09/03(土) 01:28:24.17
結局使ってるのは人間だからなぁ
539デフォルトの名無しさん:2011/09/04(日) 09:18:47.55
再起動するのは
Shell App.Path+App.ExeName+".exe", vbNormalFocus
End

でしょ
このコードで動くのは自分がドライブルートにある場合だけ
ルートにある場合だけApp.Pathの末尾に¥が付く理由とは?
540デフォルトの名無しさん:2011/09/04(日) 10:05:41.94
態度が気に入らないから教えません
541デフォルトの名無しさん:2011/09/04(日) 17:13:42.74
FileSystemObjectのBuildPath使えば\のこと気にせず
542デフォルトの名無しさん:2011/09/05(月) 12:12:14.90
>>540
×態度が気に入らないから教えません
○私は知識がないので教えられません
543デフォルトの名無しさん:2011/09/05(月) 12:46:16.22
自らを正すのではなく相手に逆切れ
そんな朝鮮的な感情、ステキやん?
544デフォルトの名無しさん:2011/09/05(月) 14:22:04.85
つーかさ、教える教えない教えられないとか以前に、>>539に「理由」を回答する必要あるのか?

理由や原因が解れば、ユーザー側で対処改善出来る類の物なら理由を聞くのも解るが
件のはそういう類のものではない。あえて言うなら「仕様だから」で、なぜそういう仕様なのかという「理由」は
MSに聞くべき。

なのでユーザーとしては
「ルートにある場合だけApp.Pathの末尾に¥が付く」理由を聞いたり考えたりするのではなく
「ルートにある場合だけApp.Pathの末尾に¥が付く」前提での対策を考えるべきだ。


因みに俺の場合、基本クラス(全てのプロジェクトに組み込む自作クラス)のInitializeで

変数=App.Path
if right(変数,1) <> "\" then 変数=変数 & "\"

的な処理をして、
「App.Path」相当のものを「クラス.AppCurrentDir」で、ルートでもそれ以外でも
必ず末尾\有りで取得でき、
「App.Path+App.ExeName+".exe"」相当のものを「クラス.AppFullPath」で
ルートでもそれ以外でも正しく取得できるようにしている。


ついでに言うと
Shell App.Path+App.ExeName+".exe", vbNormalFocus
ではなく
Shell App.Path+"\"+App.ExeName+".exe", vbNormalFocus
として
「このコードで動くのは自分がドライブルートにある場合だけ」
ではなく
「このコードでは自分がドライブルートにある場合だけ正常に動かない」
と主張するのが普通でしょ。
545デフォルトの名無しさん:2011/09/05(月) 15:19:29.38
>>544
FileSystemObjectのBuildPath使えよ
546デフォルトの名無しさん:2011/09/05(月) 17:49:27.99
>>544
>「ルートにある場合だけApp.Pathの末尾に¥が付く」理由を聞いたり考えたりするのではなく

「末尾に\が付く」んじゃなくて、ルート="\"だよ。
C:\abcは、「ドライブC」の「ルートからたどって」「abcというフォルダ」
547デフォルトの名無しさん:2011/09/05(月) 18:43:38.85
つか、ルートに\がつく理由は、それが仕様だから
最近決まった仕様でもないし、その仕様にどうこう言っても始まらない

なぜそういう仕様なのか考察するのは別のスレでやってくれ
548デフォルトの名無しさん:2011/09/05(月) 20:17:06.90
>>545
君、お馬鹿さん?
549デフォルトの名無しさん:2011/09/06(火) 02:18:30.69
まあルートがバックスラッシュなのはwinに限らない訳で
それを何故と問われても困るわな
でもそれで起源を辿ってみるのも面白いかもよ?
550デフォルトの名無しさん:2011/09/06(火) 11:30:42.85
>>548
お前のわけのわからん俺クラスを使われるのより、BuildPath使った方がよっぽどいいよ
551デフォルトの名無しさん:2011/09/06(火) 11:35:18.11
>>547
> つか、ルートに\がつく理由は、それが仕様だから

まだ、ルートに\が「つく」とか言ってるのかよ。
「つく」んじゃなくて、ルート="\"だってば。
552デフォルトの名無しさん:2011/09/06(火) 11:51:20.00
C:\A\B
二個目の\はAのルート、BはAのルートの中にある、ってはなしだな?
553デフォルトの名無しさん:2011/09/06(火) 12:36:37.23
何言ってるんだろうか
554デフォルトの名無しさん:2011/09/06(火) 12:39:28.57
ルートは一つ
555デフォルトの名無しさん:2011/09/06(火) 12:58:49.26
>>552
ルート以外の「\」はパス区切り文字。
ディレクトリ構造の概念を知らないのなら、http://ja.wikipedia.org/wiki/%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA
556デフォルトの名無しさん:2011/09/06(火) 13:19:38.94
ディレクトリやパスを扱う場合は、"C:\A\B"のかわりに"C:\A\B\"という入力もValidなので、
いつでもBuildPathを使っといた方がいい。で、どうせFileSystemObjectを使うんだから、FSOの
その他のメソッドも積極的に使う方がいい。
557デフォルトの名無しさん:2011/09/06(火) 19:00:08.68
BuildPathというかFileSystemObjectに拘ってる奴がいるな
\つけて\\を\に置換すればいいだけだろ
558デフォルトの名無しさん:2011/09/06(火) 19:16:04.18
newpath$ =Replace(path1$ & "\" & path2$, "\\", "\")
こう?
559デフォルトの名無しさん:2011/09/06(火) 19:27:57.73
FileSystemObjectのインスタンスあればBuildPath使えばいいし
FileSystemObjectを使ってない場面では自前処理で問題ないだろう
場合場合で使いわければおk
560デフォルトの名無しさん:2011/09/06(火) 21:02:26.90
なんかいかにもVB厨らしいアホな会話w
普通に考えれば>>556の言ってることが一番まとも。

Win98以前の時代なら躊躇する合理的理由もあったが、いまさらWin9x環境のことを考慮する必要もないだろう。

FileSystemObjectのインスタンスあればって何だよ。
ライブラリ化しとけよそんなの。
561デフォルトの名無しさん:2011/09/06(火) 21:58:57.70
VB6で正規表現っぽい処理させるにはどうしたらいいの?
562デフォルトの名無しさん:2011/09/06(火) 22:13:27.42
Microsoft Visual Basic 6.0 で正規表現を使用する方法
http://support.microsoft.com/kb/818802/ja
563デフォルトの名無しさん:2011/09/06(火) 22:47:28.72
>>560
FileSystemObject = ライブラリだよ
564デフォルトの名無しさん:2011/09/06(火) 23:21:14.75
一方、俺はめんどくさいので最初に専用の変数を用意し、
そこにApp.Pathをぶち込んで末尾の"\"を確認してない場合にその変数に"\"を追加して、
以降はずっとその変数を利用している。後悔はしていない。反省もしていない
565デフォルトの名無しさん:2011/09/06(火) 23:29:34.98
A:\
B:\
566デフォルトの名無しさん:2011/09/06(火) 23:44:03.96
>>563
VB厨様には「ライブラリ化する」って表現が通じないことがよく分かった。
567デフォルトの名無しさん:2011/09/06(火) 23:47:10.00
ライブラリ化するという表現は伝わるけど、どうも >>560 の言うライブラリ化は
違う意味のようだ。
568デフォルトの名無しさん:2011/09/07(水) 00:34:30.73
いやまあ概念は知っといて損は無いけど
要は意図した形になってりゃ良いんじゃねーの
問題無く動くならそこから先は自己満足の世界だろ
今のスペックなら悪意でも無きゃ差なんて出ない
569デフォルトの名無しさん:2011/09/07(水) 01:09:59.38
>>557
UNCパスを考慮しない前提に限ればな
570デフォルトの名無しさん:2011/09/07(水) 01:26:19.22
なんか解ってない奴ばかりだな
571デフォルトの名無しさん:2011/09/07(水) 11:03:01.99
>>557
> BuildPathというかFileSystemObjectに拘ってる奴がいるな

ということにしないと、自己崩壊しちゃうの?
572デフォルトの名無しさん:2011/09/07(水) 13:30:35.84
>>570
何が?
573デフォルトの名無しさん:2011/09/08(木) 01:40:34.47
>>566
すでにライブラリになっているものを
ライブラリ化する意味はない。

普通にライブラリを使えばいいだけ。
574デフォルトの名無しさん:2011/09/08(木) 14:10:36.19
>>573
君が作るライブラリには、VBの標準関数しか登場しないんだろうけど、それは君のスタンダードでしか無いよ
575デフォルトの名無しさん:2011/09/08(木) 14:42:53.22
でもFileSystemObject を再度ラップしてライブラリ化する意味はあんまない気がするね。
使う人によるだろ
576デフォルトの名無しさん:2011/09/08(木) 15:01:57.45
FSOに限らず、エラーハンドリングの一元化とか、ログ出力の一元化とか、足りない機能の追加とか
いろいろあるでしょ。ちなみにFSOに足りないのは、再帰処理。
577デフォルトの名無しさん:2011/09/09(金) 12:04:31.43
リストビューをリスト表示にしたとき
ある文字数(15文字くらい)に行くと
途切れてしまうんですが、
文字数を増やす方法って何か無いですか?
578デフォルトの名無しさん:2011/09/09(金) 23:38:15.05
>>574
> 君が作るライブラリには、VBの標準関数しか登場しないんだろうけど、それは君のスタンダードでしか無いよ

何を言ってるんだ?

FSOを使って新たにライブラリを作る意味が無いだろ。

ライブラリを作る場合は、
既存にはない機能を作るんだよ。

VBの標準関数をライブラリしてどうするんだw
579デフォルトの名無しさん:2011/09/09(金) 23:39:01.13
>>576
うん、ならFSOに足りない機能をライブラリとして作ればいいわけで、
FSOはそのまま使えばいい。
580デフォルトの名無しさん:2011/09/09(金) 23:49:07.65
>>578
そういう馬鹿なこと言ってる(もちろん自覚ないんだろうけど)と、
これがVB厨ですって感じでどこかにコピペされちゃうよw

しかし、本当にマジで言ってるのかそれ。
581デフォルトの名無しさん:2011/09/10(土) 09:30:19.38
>>580
反論しろよw だからお前はw
582デフォルトの名無しさん:2011/09/10(土) 12:59:09.34
車輪の再開発は必要ないけど
車輪を応用したものを造るか てのは個人の好みだろ
クラスにするとかしないとか モジュールにするとかしないとか
583デフォルトの名無しさん:2011/09/10(土) 13:05:34.13
話は車輪の再発明じゃないよ

使いやすいキーボードに
キーボードカバーをかけるようなもん。

せっかく完成されたものを使わずにラップしてどうする。
世の中に普及しているライブラリってのは一般によく設計された作られているもの。
理由があってこうなっているのに、それをラップしても使いにくくなるだけ。
ラッパーは作るのがかなり難しいんだぞ。

十分に説得できる根拠がなければ、それは単に機能低下させているに過ぎないものになる。
どうせ、ラップして簡単に使えるよ→それじゃこういう場合に使いにくいだろ→拡張するよ→繰り返す→ラップ前と殆ど変わらいよ。になる。

既存のライブラリが使いにくいのなら、ラップするのではなく使いやすくするヘルパーライブラリを作ればいいだけの話。
そうすれば、あるときはヘルパーライブラリで簡易な操作をしながら、それでいてオリジナルの全機能もそのまま使える。
584デフォルトの名無しさん:2011/09/10(土) 18:46:40.88
長文なわりにレベルは低いな
585デフォルトの名無しさん:2011/09/10(土) 20:39:25.37
ほら、またw 反論しろよ。だからお前はw
586デフォルトの名無しさん:2011/09/10(土) 20:47:17.06
何がほらか知らんけど、複数の人物を同一人物だと妄想してる馬鹿がいるな。

そんなことはどうでもいいが、さすがにFSOを使用した自作のユーティリティー関数(の集まり)
をライブラリーとは言わないだのとか言った話は、馬鹿らしくて話にならない。

反論って、そもそも無知で馬鹿で非常識すぎて話が噛み合ってないのに反論も糞もあるか。
587デフォルトの名無しさん:2011/09/10(土) 20:49:25.01
じゃあ黙ってろよw
言いたいことがあるから、黙らずレスしたんだろ?
なのに、その肝心の言いたいことがかかれてないのだから、馬鹿にされて当然。
588デフォルトの名無しさん:2011/09/10(土) 21:25:52.35
こういう子が居るからVB使いはバカにされる

特に、「バカほど声がでかい(掲示板では必死な文を書く)」の格言通りの奴が多いから
尚更バカが目立つ
589デフォルトの名無しさん:2011/09/10(土) 21:27:05.71
で?
590デフォルトの名無しさん:2011/09/10(土) 21:27:16.58
VBって、VacaBakkaの略ですか?
591デフォルトの名無しさん:2011/09/10(土) 21:28:47.88
>>588
馬鹿にしてるのはお前だろうと
592デフォルトの名無しさん:2011/09/10(土) 22:31:18.60
>>586
>ライブラリーとは言わないだのとか言った話
そんなレベルの話してるやついたのか?

FSOを使うためのライブラリ作るべきか不要かの話してるやつは結構居たがな
まあそんなの環境と要件と個人の趣味で好きにすれば良い話
593デフォルトの名無しさん:2011/09/11(日) 00:34:19.51
こんな感じ?

'FSOEx.Class
Dim mFSO As IWshRuntimeLibrary.FileSystemObject

'フォルダ以下のファイルリストを取得する
Public Function GetFileList(strDirPath$, Optional colFileList As Collection = Nothing) As Collection
Dim f
With mFSO.GetFolder(strDirPath)
For Each f In .SubFolders
GetFileList f.Path, colFileList
Next
If colFileList Is Nothing Then Set colFileList = New Collection
For Each f In .Files
colFileList.Add f
Next
End With
Set GetFileList = colFileList
End Function


Public Property Get FSO() As IWshRuntimeLibrary.FileSystemObject
Set FSO = mFSO
End Property

Private Sub Class_Initialize()
Set mFSO = New IWshRuntimeLibrary.FileSystemObject
End Sub
594デフォルトの名無しさん:2011/09/11(日) 00:55:08.72
IWshRuntimeLibrary.FileSystemObjectのインスタンスをScripting.FileSystemObjectの変数へ代入
595デフォルトの名無しさん:2011/09/11(日) 01:52:14.94
FileSystemObjectのインスタンスは状態を持ってないので
「どこからかデータを書き換えられる」ことがないので
いちいち生成する必要はありませせん。

つまり、標準モジュールにPublic FSO as new FileSystemObjectと書けばいい。
596デフォルトの名無しさん:2011/09/11(日) 04:07:26.29
Set FSO = Nothing
597デフォルトの名無しさん:2011/09/11(日) 04:08:39.04
newで宣言してるからFSOにNothing入れてもFSO呼び出されるときインスタンス生成される
598デフォルトの名無しさん:2011/09/11(日) 04:12:06.75
こうか

'FSOEx.bas
Public FSO As New FileSystemObject

'フォルダ以下のファイルリストを取得する
Public Function GetFileList(strDirPath$, Optional colFileList As Collection = Nothing) As Collection
 Dim f
 With mFSO.GetFolder(strDirPath)
  For Each f In .SubFolders
   GetFileList f.Path, colFileList
  Next
  If colFileList Is Nothing Then Set colFileList = New Collection
  For Each f In .Files
   colFileList.Add f
  Next
 End With
 Set GetFileList = colFileList
End Function
599デフォルトの名無しさん:2011/09/11(日) 04:12:23.35
>>596
そこまで防ぎたいのなら
標準モジュールにperoperty getを
書けばいいだけなんだけどね。

やる意味が無いから俺はやらないけどw
600デフォルトの名無しさん:2011/09/11(日) 04:17:14.23
DimでNewをつけてるから>>596のコードがどこに入ろうとも効果無しだよ
601デフォルトの名無しさん:2011/09/11(日) 04:18:08.82
>>598
mFSOをFSOに直さないとエラーでるよ
602デフォルトの名無しさん:2011/09/11(日) 05:06:51.09
えーとFSOをそこまでしなきゃならない理由を是非
603デフォルトの名無しさん:2011/09/11(日) 05:20:42.96
そこまでって何かすごいことをやってるのか?
604デフォルトの名無しさん:2011/09/11(日) 10:49:29.82
VB6って今SP6だけ入れれば最新の状態ですか?
その後に、何か不具合や脆弱性のあるものの修正パッチとかありましたか?
605デフォルトの名無しさん:2011/09/11(日) 10:50:43.28
あ、言い訳にはならないかもしれませんけど、
まだ中学生でVBもまだほとんど分からないのです。
よろしくお願いします。
606デフォルトの名無しさん:2011/09/11(日) 11:25:29.17
俺が中学生のころはアセンブリとBASICが
バリバリ使えたが。これだからゆとりは。
607デフォルトの名無しさん:2011/09/11(日) 13:06:03.47
それはあなたが特殊なのでは
608デフォルトの名無しさん:2011/09/11(日) 13:24:31.93
それはあなたが特殊隊員なのでは
609デフォルトの名無しさん:2011/09/11(日) 13:51:40.50
>>606
おもちゃをバラしたのはいいが、元に戻せなくなってしまった的な
アセンブリですか?
610デフォルトの名無しさん:2011/09/11(日) 15:39:12.99
特殊じゃねーよ。少なくともパソコン部のもんは
みんなできたし。
611デフォルトの名無しさん:2011/09/11(日) 16:33:06.63
なんかわざとらしい会話が繰り広げられているなぁw 何が目的か。
612デフォルトの名無しさん:2011/09/11(日) 16:37:24.56
ここに棲んでる奴らの回答なんか当てにならんだろ
MSに問い合わせろ
613デフォルトの名無しさん:2011/09/11(日) 16:39:29.15
>>604
ここに棲んでる奴らの回答なんか当てにならんだろ
MSに問い合わせろ


614デフォルトの名無しさん:2011/09/11(日) 18:31:14.08
VBで作ったアプリにVBS(ActiveScript)のマクロを搭載するにはどうしたらいいの?

ActiveX.exeにすれば、VBS側からVBアプリを呼んで、VBアプリ内の関数が返した値をVBS側で取得できるが
逆にVBアプリ側からVBSを呼んで、VBS内の関数が返した値をVBアプリ側で取得したい
VBSをWSCにすれば素で出来るけど、WSCはxmlで定義を書かなければならず使いにくいのでVBSが使えるようにしたい

実際、VBSやJSのマクロを組み込んだアプリは存在しているので間違いなく可能なはずだけど
検索してもVB6とExcelなどのOfficeアプリマクロの連携の話とかばかりで目当ての記事が見つからず・・・・・

VB6-SP6、WinXP-SP3です
615デフォルトの名無しさん:2011/09/11(日) 20:37:36.83
>>613
604です。
すみません、MSもなんか問い合わせ先が沢山あったり、
上手く伝えられないので、知っている人いたらなんとか
教えてもらえませんでしょうか。
616デフォルトの名無しさん:2011/09/11(日) 22:19:04.11
>>615
俺の知ってる範囲ではこの2つ

Microsoft Visual Basic 6.0 Service Pack 6 セキュリティ ロールアップ更新プログラム
ttp://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=e27eebcb-095d-43ec-a19e-4a46e591715c&DisplayLang=ja

Microsoft Visual Basic 6.0 Service Pack 6 累積的な更新プログラム
ttp://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=cb824e35-0403-45c4-9e41-459f0eb89e36&DisplayLang=ja
617デフォルトの名無しさん:2011/09/12(月) 11:49:57.26
>>614
「VBで作ったアプリにVBS(ActiveScript)のマクロを搭載する」って具体的にはどういうこと?
618デフォルトの名無しさん:2011/09/12(月) 17:01:28.39
コンポーネントの追加でMicrosoft Script Control (msscript.ocx) を追加して頑張れ

Private Sub Command1_Click()
 ScriptControl1.Eval "Msgbox(""hoge"")"
End Sub
619デフォルトの名無しさん:2011/09/12(月) 17:36:07.13
NS Basic
http://www.nsbasic.com/app/

元々はPalm用のBasic言語の開発環境だったみたいだけど、これってどうなの?
サイトではモバイルデバイス向けのVBだとホザいてるけどw
一応Visual Basicのサブセットとも謳ってる。
620デフォルトの名無しさん:2011/09/12(月) 20:42:17.59
>>616
ありがとうございました!
621デフォルトの名無しさん:2011/09/13(火) 01:06:36.96
なんでもかんでもサブセットだなぁ
622デフォルトの名無しさん:2011/09/13(火) 01:32:14.03
>>619
VBって商標?
623デフォルトの名無しさん:2011/09/13(火) 07:57:31.56
>>619
それ元々Palmの開発環境だった筈。
その頃もVBユーザーを標的にしてたと思う。
624デフォルトの名無しさん:2011/09/13(火) 14:38:16.12
>>619
もともとPalm用の開発環境だったんだっけな
625デフォルトの名無しさん:2011/09/16(金) 09:14:21.14
windowsメッセージキューをクリアしたいんですが
どうやったらいいでしょうか?
クリックイベントを除去したいのです。
626デフォルトの名無しさん:2011/09/16(金) 09:50:40.08
すみません。除去できました。
627デフォルトの名無しさん:2011/09/18(日) 06:19:00.37
Windows 8 Developer Previewに VB6インストール
628デフォルトの名無しさん:2011/09/20(火) 16:47:55.65
WindowsXPにVB6をインストールとVB6のSP6もインストールしたんだけどさ
インストーラーがwindows\system32フォルダにいろいろとファイルコピーしてたけどさ
あれってちゃんとバージョンチェックしながらコピーしてるんだろうか
XPにもともとあるファイルでこの古いVB6のより新しいファイルを上書きしちゃったりしてないだろうか
してたらどんなトラブルの原因になるかわからん
怖いな
629デフォルトの名無しさん:2011/09/20(火) 18:30:24.25
気にするとハゲるぞ
630デフォルトの名無しさん:2011/09/20(火) 20:04:15.07
インストール前の物と後のものを比較すればいいじゃないか。
でも、dllって問答無用で上書きじゃなかったっけか?
631デフォルトの名無しさん:2011/09/23(金) 12:20:47.13
質問させていただきます。


プロシージャの引数ですが、オブジェクト型であっても、値渡しできますよね?
  Public Sub hogehoge( ByVal obj As Foo)
のように。

この引数で渡されたobjというのは、コピーしたものが渡されるのでしょうか?
632デフォルトの名無しさん:2011/09/23(金) 21:34:20.05
ByValとByRefの比較テスト用プロシージャ作って試してみれば
633デフォルトの名無しさん:2011/09/23(金) 23:20:44.61
>>632
値渡し出来るけど、コピーしたものが渡されるけど、
何がコピーされたかが重要。
Dim obj as object
set obj = new Form1
call hogehoge(obj)
って書いた時、
objはForm1の実体(インスタンス)を参照する為の4バイト(多分)しか持ちません。
hogehogeを呼ぶ際、その4バイトのアドレス情報がコピーされ渡されます。
なので、ByValだからってフォームが2つになるような事はありません。
634デフォルトの名無しさん:2011/09/23(金) 23:21:29.64
訂正
誤)>>632
正)>>631
635デフォルトの名無しさん:2011/09/24(土) 01:01:27.88
こんな感じで検証でもしてみればヨロシ

Public obj2 As Foo

Public Sub hogehogeV(ByVal obj As Foo)
 MsgBox obj Is obj2
 obj.value = 100
 Set obj = New Foo
 obj.value = 200
End Sub

Public Sub hogehogeR(ByRef obj As Foo)
 MsgBox obj Is obj2
 obj.value = 100
 Set obj = New Foo
 obj.value = 200
End Sub

Dim obj As Foo
Set obj = New Foo
Set obj2 = obj
obj.value = 0
Call hogehogeV(obj)
MsgBox obj.value
MsgBox obj Is obj2

Set obj = New Foo
Set obj2 = obj
obj.value = 0
Call hogehogeR(obj)
MsgBox obj.value
MsgBox obj Is obj2
636デフォルトの名無しさん:2011/09/24(土) 01:57:39.24
オブジェクト変数はオブジェクト参照のアドレス値が格納されている変数で
引数でByValで渡すとオブジェクト変数に格納されている値であるアドレス値のコピーが渡されるのであってオブジェクトのコピーが渡されるわけではない
一方ByRefだとオブジェクト変数が参照しているオブジェクトじゃなくて、オブジェクト変数自体への参照が渡される
637デフォルトの名無しさん:2011/10/02(日) 00:37:19.04
ご教授下さい。

AUTOCADというCADソフトのVBAで、コマンドをいろいろ作っているのですが、
コマンド実行中、他のアイコンが選択された場合にだけ Unload Me で終了したい
のですが、他のアイコンが選択されたというイベントを知るにはどうしたらいいのでしょうか?
638デフォルトの名無しさん:2011/10/02(日) 00:38:53.94
配列の先頭インデックスは0だ。
この常識が通じないバカな言語が一匹居る。
それがVB
639デフォルトの名無しさん:2011/10/02(日) 00:58:06.83
alt+タブでウインド選択する機能をデザインしたヤツバカだろうね。
同じアイコンがならんでて選ぶたびに順番変わるし
普通あの機能使うのは順番に列挙したいからだろ?
なんで選ぶたびにどれをえらんで、どれがまだ試してないのかわからないまま
闇雲に操作してんだよ
何年も何年も。
ばかじゃん。
640デフォルトの名無しさん:2011/10/02(日) 01:17:08.22
>>639
突然なんだ? 誤爆か?

ちなみに、ちゃんと「アクティブになった順」っていう「順番」になってるじゃん。
641デフォルトの名無しさん:2011/10/02(日) 02:44:14.86
642デフォルトの名無しさん:2011/10/02(日) 05:36:15.67
普通とか言って普通だった試しが無い法則

使い道間違えたまま何を
闇雲に操作してんだよ
何年も何年も。
ばかじゃん。
643デフォルトの名無しさん:2011/10/02(日) 05:50:35.09
またバカが
644デフォルトの名無しさん:2011/10/02(日) 12:35:27.16
ちょっと何言ってるのかわからないですねー
645デフォルトの名無しさん:2011/10/04(火) 08:11:01.98
複数のファイルを選択またはドラッグドロップして、ある文字列を別のファイルに検索して、書き出したいです。
複数のファイルの参照ができないので、教えてください。
別のファイルの書き出しはできました。
646デフォルトの名無しさん:2011/10/07(金) 13:57:58.06
エクスプローラからドラッグするの
またはリストボックスのセレクテッドを拡張して複数せんたくするの
あるもじれるを別のファイルにけんさくってちかんのことをいってるのだろうか
647デフォルトの名無しさん:2011/10/07(金) 20:40:39.41
おさわりまんこのひとです
648デフォルトの名無しさん:2011/10/07(金) 23:18:58.20
649デフォルトの名無しさん:2011/10/08(土) 12:11:49.33
>>637
他のあいこんとはどkのあいこんでしょか
ですくとっぷのあいこんなら自身がふぉあぐらんどにないことをたいまでみればいいかもー
(かなりいいかげん
650デフォルトの名無しさん:2011/10/09(日) 20:10:14.17
>>649
>他のあいこんとはどkのあいこんでしょか

同じアプリケーション内のアイコンなのです。

651デフォルトの名無しさん:2011/10/10(月) 14:23:40.79
何で作ってるアイコンでしょうか
ImageならImage_Click、PictureBoxならPictuteBox_Click、ButtonならButton_Clickでいいじゃないですか
そこにUnload Meと書けば
652デフォルトの名無しさん:2011/10/18(火) 21:52:09.27
クラスモジュールでEnumWindow関数を使いたい場合
AddressOfが使えないのですが
関数へのポインタを取得する方法がなく困っています
XPSP3でEXCEL2000のVBAで作成していますが
実現したい事はあるWindowと同じプロセスの
Windowがあった場合にWindowTitleによって
異なるMessageを送信する。です
元のWindowはデータ転送アプリで
進捗が進むと不定期にダイアログが表示され
都度進捗が止まるので自動でダイアログに
Messageを送り進捗を進めたいのです
653デフォルトの名無しさん:2011/10/18(火) 22:56:51.42
>>652
なら標準モジュール使えばいいだけでは?
何が聞きたいのかよくわからんよ
654デフォルトの名無しさん:2011/10/21(金) 15:05:39.99
VBScriptについて質問をさせてください
【やりたい事】
1.InternetExoirerで表示されたホームページからデータを取得したい
2.取得したデータの検索結果を自動で入力したい

取得したい部分はサンプル↓の あいうえお! かきくけこ という部分です

<form action="/hogehoge" method="post">
あいうえお! かきくけこ<br>
<input type='submit' name='aaaa value='1' accesskey='1'>
<input type='submit' name='aaaa' value='2' accesskey='2'>
<input type='submit' name='aaaa value='3' accesskey='3'>
<input type='submit' name='aaaa value='4' accesskey='4'>
<input type="hidden" name="mode" value="start">
<input type="hidden" name="ccc" value="2222222222">
<input type="hidden" name="ddd" value="1111111111">
</form>

この部分を取得して、予め作成しているスクリプトの検索にかけて
検索結果によってsubmitで1〜4のいずれかを入力する、というスクリプトを作成したいのです

検索部分について、データを取得できたと仮定してソースはできました
検索元となるhtmlからの取得と、sendkeyの部分がよくわかりません
調べてみましたが、お手上げ状態です
どなたか宜しくお願いします
655デフォルトの名無しさん:2011/10/21(金) 15:37:50.53
素人はそういうことしないの
656デフォルトの名無しさん:2011/10/22(土) 01:26:56.33
俺は8年前までVB6のプログラマーだったが転職して
excel のvbaやsqlでツール作るのが殆んど、、、
最近、処理速度が必要なツール作成にvb.netを使おうと思ってるがどうかね?
657デフォルトの名無しさん:2011/10/22(土) 04:54:45.77
そういう高度な要求が来たら
ちゃんとしたシステム作りましょうよと

あとツールで処理速度が変わる訳じゃ無い
大事なのは設計と作り方、そしてマシンのスペックだ
658デフォルトの名無しさん:2011/10/22(土) 08:21:40.09
>>656
論外。

高速化したいなら設計レベルで対応したほうが効果が高い。
ツールを選ぶのは、それだけでは補えない場合の話だが、
VB.NETは高速なソフトウェアを作るには向かない言語。
659デフォルトの名無しさん:2011/10/22(土) 10:34:02.59
>>658
ベンチマークしてから言えよw
660デフォルトの名無しさん:2011/10/22(土) 14:14:50.66
>>655 同意
>>654 「CreateObject InternetExplorer」「document.forms」でググれ
661デフォルトの名無しさん:2011/10/23(日) 01:44:18.05
新しいのはみんなそうだけど、誰でも比較的簡単に一定のレベルと品質で
ってー方向で作られてるから特に.netだから早いってもんじゃ無いよ
ツール選択って開発効率をどうこうっていう話だろ
速さで言ったらネイティブが一番早いのが当然なんだから。
662デフォルトの名無しさん:2011/10/23(日) 01:45:37.11
.netは実行時はネイティブで動いてるんだってばw

机上の空論言う前に、ベンチマークしろ。
663デフォルトの名無しさん:2011/10/23(日) 02:11:15.29
.netが遅いんじゃなくてwinformsが遅いんだよね
664デフォルトの名無しさん:2011/10/23(日) 03:05:01.57
何とくらべて早いとか遅いとか、向いてるとか向いてないとか言ってるんだ
665デフォルトの名無しさん:2011/10/23(日) 23:17:54.89
比較対象なんて無くても絶対的に遅い物は遅い。
お前は野垂れ死無ければ、裕福だと思うのか?
666デフォルトの名無しさん:2011/10/23(日) 23:35:33.62
>>665
比較対象のない絶対的評価で早いも遅いもない。たんに絶対的な評価がそこにあるだけだ

技術論を主観で語られても困る
お前の例だと、野垂れ死にするやつは、野垂れ死にしないやつより裕福じゃない。それが客観的事実
それを本人がどう思うかは主観問題
667デフォルトの名無しさん:2011/10/23(日) 23:36:00.91
というか>>656がどんな事したいのかによるよな
Excelのデータをセルをグリグリ読んで回してるとかだったらDB使えよって話しだし
いやそんな事はとっくにやってて単純にスピード上げたいってんなら.net化も有りだし
バッチ化してデータ整形だけは夜にやっとくとかまあ色々有るじゃん
処理速度上げたい処理とやらを具体的に書いてくれなきゃなんとも言えん
668のぞみ ◆fv9SHj5ibk :2011/11/01(火) 20:31:40.22
ちょっと質問です 最近VB弄り始めてばかりです 前は日本語プラグry
やってたんですけど
まァ本題へ
パスワードをかけて そのパスワードが違ったら違いますという
成功していたら 成功していますという処理にするにはどうすればいいんですか?
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
(Name).Enabled = False
End Sub

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


If TextBox1.Text = "nozomi" Then

MsgBox("認証成功")
(Name).Enabled = True
Else

MsgBox("違います")

End If

End Sub
と打ったんですが
(Name).Enabled = False
~
ってでてくるんですけど 何がおかしいんですか?
669デフォルトの名無しさん:2011/11/01(火) 20:39:33.35
頭がおかしい
670のぞみ ◆fv9SHj5ibk :2011/11/01(火) 20:43:30.66
わからないならわからないでいいですよ
671デフォルトの名無しさん:2011/11/01(火) 20:55:34.09
【知っているが…】

             「 ̄ `ヽ、   ______
             L -‐ '´  ̄ `ヽ- 、   〉
          /           ヽ\ /
        //  /  /      ヽヽ ヽ〈
        ヽ、レ! {  ム-t ハ li 、 i i  }ト、
         ハN | lヽ八l ヽjハVヽ、i j/ l !
         /ハ. l ヽk== , r= 、ノルl lL」
        ヽN、ハ l   ┌‐┐   ゙l ノl l
           ヽトjヽ、 ヽ_ノ   ノ//レ′
    r777777777tノ` ー r ´フ/′
   j´ニゝ        l|ヽ  _/`\
   〈 ‐ 知ってるが lト、 /   〃ゝ、
   〈、ネ..         .lF V=="/ イl.
   ト |お前の態度が とニヽ二/  l
   ヽ.|l         〈ー-   ! `ヽ.   l
      |l気に入らない lトニ、_ノ     ヾ、!
      |l__________l|   \    ソ
672デフォルトの名無しさん:2011/11/01(火) 20:56:34.61
スレのタイトルと1をもう1度よく読みましょう
673デフォルトの名無しさん:2011/11/01(火) 20:57:49.14
>>668
VB6なら多少わかるけど
見たことない文法だからVB6以前のものなのかな?
それともVBSとかいうやつなのかな?
674のぞみ ◆fv9SHj5ibk :2011/11/01(火) 21:02:00.63
あァ悪い間違えた
Visual Basic 2010だお
パスワードを入れる前はFrom?の有効はオフでパスワード認証成功したら
Fromの有効をオンにする方法はどうやるのですか?
675デフォルトの名無しさん:2011/11/01(火) 21:07:17.34
VB2010ってここのスレが該当なの?
676のぞみ ◆fv9SHj5ibk :2011/11/01(火) 21:18:41.50
>>675 何処に行けばいいのですか?
677デフォルトの名無しさん:2011/11/01(火) 21:22:16.19
>>676
>>1
Google
 http://www.google.co.jp/

※「まず自分で調べる」クセを身につけよう。
678デフォルトの名無しさん:2011/11/01(火) 21:44:49.22
>>676
VB2010はVB.NET

VB.NET質問スレ(Part37)
http://hibari.2ch.net/test/read.cgi/tech/1317448996/l200
679デフォルトの名無しさん:2011/11/01(火) 21:46:46.92
>>1のテンプレにさ
対象外のVBのバージョンも列挙しようよ
あまりにも.NETのやつら来すぎ
680デフォルトの名無しさん:2011/11/01(火) 22:04:43.72
タイトルを読まない人が、ましてテンプレ読むとは思えませんが。
そういうの無駄な努力って言うんだよ。
そもそも、テンプレなんて、言っちゃ何だけど書いてる奴の自己満足。
EULAみたいに読まれなくても書いてあることに法的な意味があるわけじゃないんだから。
681デフォルトの名無しさん:2011/11/01(火) 23:19:44.99
テンプレ書いてあるだろで済ませる為のもんだろ
何も書いてなけりゃいちいち説明せにゃならん
682デフォルトの名無しさん:2011/11/02(水) 00:07:05.89
済ませるって何を済ませるんだよ。
あんたの気が済むかどうかってこと?
ああそうですかw

VBスレらしい知的な会話だな
683デフォルトの名無しさん:2011/11/02(水) 00:50:34.99
>>682
VBは関係ない。VBのせいにするな。

単にお前が馬鹿なだけだ。
684デフォルトの名無しさん:2011/11/04(金) 11:06:53.58
VBで電卓作って、動きは完成したんだけど
メニューバーの表示を押したら、ラベルの計算した数式が表示されるようにしたいんだけど
どうしたらいい?

メニューエディタで表示ってやつは作れた
685デフォルトの名無しさん:2011/11/04(金) 18:04:33.77
>>684
もうちょっと正確な日本語で頼む
686デフォルトの名無しさん:2011/11/05(土) 00:24:34.71
>>685
http://www.asmix.co.jp/product/desk-goods/dg009/c1222c1221c1201.html

こんな感じの計算式をメニューバーの表示を押したら、表示されるようにしたいんだ
687デフォルトの名無しさん:2011/11/05(土) 00:58:51.80
あまり関わりたくない臭いはするが…
表示したい計算式は文字列として存在してるの?
計算結果は自力で計算するの?
ボタンを押して、それぞれのラベルにそれぞれの文字列を代入するだけの話?
688デフォルトの名無しさん:2011/11/05(土) 03:13:04.01
>>687
どうもすみません
ボタンを押してラベルに計算結果を表示させてるんですが

例えば1+2=3って押したらラベルには3って表示されてるんだけど
その答えの計算式である1+2=3をメニューバーの表示に表示させたいんです

689デフォルトの名無しさん:2011/11/05(土) 04:37:41.65
メニューのcaptionのの値を変更とかそんな話題なの?
690デフォルトの名無しさん:2011/11/05(土) 06:41:17.71
>>688

Label1.Caption = 表示したい計算式
691デフォルトの名無しさん:2011/11/05(土) 09:03:11.83
>>687
日本語よめる?
692デフォルトの名無しさん:2011/11/06(日) 09:20:33.01
VB6なのですが。
csv読み込み→リッチテキストボックスに表示→
必要な情報を検索(find)→テキストボックスに表示
というものを作りました。
csvの内容は品番、ロット、その他情報が1行ずつ入力されています。
リッチテキストボックス+findを使ったやり方で以下の問題にぶつかっています。
・リッチテキストボックスに情報を全て読み込ませないと検索できない(情報が多い)
・リッチテキストボックスが狭くて、行が折れていると複数行としてカウントされる。
・列毎に検索対象を絞れない(その他情報に品番が書かれていると対象になる)
初めて作ったプログラムなので根本的な所から間違っている気がするのですが
こういった情報を検索する場合、どういった方法が良いのでしょうか?
一から作り直す覚悟はあるのですが、必要なキーワードが思いつかず
MSDNやgoogleでの検索にも行き詰っています。
どうかお助けを。
693デフォルトの名無しさん:2011/11/06(日) 14:10:32.04
リッチテキストを使わなければ解決するよね?
694デフォルトの名無しさん:2011/11/06(日) 14:44:54.41
>>693
すみません、openで開いたファイルというのは
リッチテキスト等で表示させなくても
読み込んだデータを検索したりすることが出来るということでしょうか?
695デフォルトの名無しさん:2011/11/06(日) 15:30:05.28
csvの内容を読み込んでその読み込んだデータをそのままテキストとしてユーザに見せる必要はあるの?
全てのデータを見せる必要がないなら、csvを変数に読ませておいてその変数の中を検索したら?
findっていうのが俺は使ったことないからどんなのか分からないけど・・・
で、変数の中を検索して見つけたところを別の変数に部分的に書き出すなり何なりして
表示用のテキストボックスでも用意してそこに表示するとか
696デフォルトの名無しさん:2011/11/06(日) 16:08:21.44
>>690
それだったらラベルに計算式が表示されませんか?
ラベルには答えを表示したままで、表示エディタにその答えの計算式を表示させたいのです

計算式というのは電卓なので動的で、必ず決まった計算式というわけではありません

繰り返しになりますが、>>686のような計算式を表示エディタに表示したいです
すみませんが、よろしくお願いいたします
697デフォルトの名無しさん:2011/11/06(日) 16:27:08.77
>>695
>csvの内容を読み込んでその読み込んだデータをそのままテキストとしてユーザに見せる必要はあるの?
ないです。Findで検索するために表示してます。
>変数の中を検索して見つけたところを別の変数に部分的に書き出すなり何なりして
変数の中を検索するとは、Instrを使用するということでしょうか?
698デフォルトの名無しさん:2011/11/06(日) 16:35:02.12
>>697
そんなレベルの人がそんなもの今更VB6などでやる必要あるの?
他の言語やソフトを覚えた方がいいよ、会社でVB6しか使ってはダメでもないかぎり
699デフォルトの名無しさん:2011/11/06(日) 17:47:14.34
>会社でVB6しか使ってはダメでもないかぎり
まさにそのとおりの状況です。
700デフォルトの名無しさん:2011/11/06(日) 17:58:53.69
じゃあ仕方がないな
会社にVB6の入門書やVB6が使える人がいるだろう、じっくり勉強してください
701デフォルトの名無しさん:2011/11/06(日) 18:10:44.36
>>696
表示エディタ.Caption = 表示エディタ.Caption & 押したキー.Caption
702デフォルトの名無しさん:2011/11/06(日) 18:16:20.62
電卓のほう書いてみた
http://ll.la/a5+~
キーワード vbpart56
やりたいのはこういう事?
703デフォルトの名無しさん:2011/11/06(日) 19:46:36.79
>>702
どうもわざわざありがとうございます
動きはこういうことですね

ソースは>>701のような感じなんでしょうか?
>>701もありがとうございます
704デフォルトの名無しさん:2011/11/06(日) 20:36:00.93
>>699
今すぐ離職を考えたほうが良い。
技術者として使い物にならなくされる前に。
705デフォルトの名無しさん:2011/11/06(日) 21:03:19.98
>>703
入力はただのテキストボックス
メニューを押すとテキストボックスの式を計算して
その結果をラベルに代入しているだけ
706デフォルトの名無しさん:2011/11/06(日) 21:53:06.54
>>705
なるほど
どうもありがとうございました!

ちょっとやってみます
707デフォルトの名無しさん:2011/11/07(月) 12:04:47.18
実行って、ビルドしてからしかできませんか?
708デフォルトの名無しさん:2011/11/07(月) 17:06:39.62
>>699
リッチテキストでのプログラムが出来たなら
type,get辺りでググれば出来ると思うよ。
709デフォルトの名無しさん:2011/11/07(月) 21:47:48.66
>>708
ありがとうございました。
簡易的なものは組めましたので
何とかなりそうです。
710デフォルトの名無しさん:2011/11/08(火) 00:59:20.93
でも今からVB6てのはお勧めしないよいや割と本当に
現状でも保障なんて無いしな。
Officeなら2010でもまだVBA生き残ってるから大丈夫だろうけど
711デフォルトの名無しさん:2011/11/08(火) 06:14:48.16
>>708
どうにか作ることが出来ました。
本当にありがとうございました。
712デフォルトの名無しさん:2011/11/09(水) 16:48:23.22
710はキモい文章をお書きになりますね
713デフォルトの名無しさん:2011/11/09(水) 20:46:04.15
仕事で困ってる人間へのアドバイスが
"お勧めしない"ってのは無理な話だよな。
714デフォルトの名無しさん:2011/11/09(水) 21:17:38.00
UNICODEがまともに使えないって時点で終わってるし
仕事でプログラムやってるならVB6だけで食えるという人なんてもういないだろうからどうでもいい話だわな
今の時期に入門としてVB6を指定したのなら鬼畜かそいつを辞めさせたいかどちらかだろう
715デフォルトの名無しさん:2011/11/10(木) 00:49:38.96
FA制御系だとVB6の方が都合良かったりする。
716デフォルトの名無しさん:2011/11/10(木) 16:18:48.15
FA制御って何でやるの?
717デフォルトの名無しさん:2011/11/10(木) 20:55:27.36
>>715
ガベコレの都合だよな?
718デフォルトの名無しさん:2011/11/12(土) 10:42:29.04
>>716
IOやGPIBボードで。こういうことを聞いてる?
ttp://www.interface.co.jp/io/index.asp

メカ自体はPLC(シーケンサー)での制御だけど大量のデータ演算なんかはPCを使う。
最新環境はマイクロソフトやプログラマーの都合だけであって、エンドユーザーからすれば
新規装置でも過去装置との互換を保つ方が何かと都合がいい。

>>699はそういう環境なんじゃないかと思う。
俺なんかもWin95〜XPまではVB6も使ってるけどね。需要は多いよ。
719デフォルトの名無しさん:2011/11/21(月) 02:40:22.80
>>714
VBでUNICODEがまともに扱えないとは
例えばどんな状況でしょう?
VBはUNICODEが基本でしゅが
720デフォルトの名無しさん:2011/11/21(月) 15:04:08.78
VB6のコントロールでUNICODEにまともに対応しているやつってあるのかな
721デフォルトの名無しさん:2011/11/21(月) 20:36:04.41
UIが対応してないんだよね
722デフォルトの名無しさん:2011/12/05(月) 21:50:41.81
古いソフトをVB6で更新する仕事を受けたんだが、
テキストファイルをバイトサイズで分割して〜
というような仕組みだったので
UNICODEにしてしまうVB6ではちょっとめんどくさい事になった。
723デフォルトの名無しさん:2011/12/05(月) 22:01:41.15
そういう仕事を請け負う会社が無くならない限り
VB6は不滅です
724デフォルトの名無しさん:2011/12/05(月) 22:50:02.47
byte区切りならテキスト形式で開かなければいいし
改行で分割するならバイナリで開けばいいし
2バイト文字区切りならバイナリで区切って文字コードで判断すればいいし
VB6のせいなのかねぇ
725デフォルトの名無しさん:2011/12/06(火) 09:23:02.67
2バイト文字の途中で区切ってもいいのか?
だとすると、もはやテキストではないので
バイナリファイルとして考えれ
726デフォルトの名無しさん:2011/12/06(火) 10:56:10.77
単に、固定長テキスト形式ってヤツだと思うが・・
727デフォルトの名無しさん:2011/12/06(火) 20:05:54.86
それが単に固定長でもないのよ。
AパートとBパートがあるとして、
確かにAパートもBパートも固定長だが、Bパートは1〜複数存在する。
改行は無い。
AパートもBパートもそれぞれさらに細かく分割される。

バイナリで読む方法はもちろん試したが、文字化けが生じてしまった。
最終的には、ADODB.streamの文字コード変換を使って解決した。
728デフォルトの名無しさん:2011/12/07(水) 12:55:30.21
Ethernet-シリアルコンバーターを接続した装置への通信プログラムを作成しようとしています。
シリアル通信プログラムは
ttp://www.picfun.com/serial00.html
等のサイトで基本的なコードは書けたのですが、Ethernetを経ているのでどのように装置にアクセスしたら良いのかわかりません。

ルータ(192.168.1.1)
 ┣制御PC((192.168.1.2)
 ┗Ethernet-シリアルコンバンーター((192.168.1.3)━(RS-232C)装置

環境:Visual Basic 2008 Express Edition

よろしくお願いします。
729デフォルトの名無しさん:2011/12/07(水) 13:06:59.23
730デフォルトの名無しさん:2011/12/07(水) 13:12:21.82
>>728
仮想COMポートはないの?
731デフォルトの名無しさん:2011/12/07(水) 13:17:54.26
Visual Basic 2008 ってありなのか?このスレ。
732デフォルトの名無しさん:2011/12/07(水) 13:27:40.57
無しですよ?
733デフォルトの名無しさん:2011/12/07(水) 13:28:53.15
Ethernet-シリアルコンバンーターというのが
どこのメーカーのなんと言う製品なのかによるな
734デフォルトの名無しさん:2011/12/07(水) 23:10:11.38
VB6のIDEでタブを入力するとスペースに変換されてしまうんだけど
これはどこで設定したら良い?
735デフォルトの名無しさん:2011/12/07(水) 23:27:05.55
728です。
Ethernet-シリアルコンバンーターは、CONTECのRP-COM(FIT)H-AFです。
http://www3.contec.co.jp/B2B/ConIWCatProductPage_B2B.process?Merchant_Id=1&Section_Id=54&Catalog_Id=54&Product_Id=1528
当機は、仮想ポートには対応しております。
736デフォルトの名無しさん:2011/12/07(水) 23:49:48.95
じゃあ解決だね
737デフォルトの名無しさん:2011/12/07(水) 23:51:42.93
>>735
マニュアルとドライバぐらいダウンロードしないよ。

制御PCに仮想COMドライバをインストールすればよい。
後は普通のCOMポートと同じように使用できる。

もしくは、もう一台シリアルコンバーターを買ってきて、
制御PCのCOMポートに接続してあげればよい。

もし制御PCからUDPを使って装置を制御する事を期待しているなら、
装置のファームウェアを変更して、RP-COM(FIT)H-AFの専用コマンドに
対応するように作りかえる必要がある。

ただし、この手のハードウェアは制御線の動作に癖があるので、
CS/RSやCTS/RTSを変わった使い方してるとまともに動かない事もある。

738デフォルトの名無しさん:2011/12/08(木) 00:00:45.20
>>734
ない。
739デフォルトの名無しさん:2011/12/08(木) 01:36:46.69
728です。
大変参考になりました。
ありがとうございました。
740デフォルトの名無しさん:2011/12/08(木) 09:43:50.99
VBの総合スレみたいのはないのかな。
コードは出来てる(と思う)んだけど、今VBが使えない環境なもんで、
誰か代わりに実行してULし直して貰えたりしませんか?
http://www1.axfc.net/uploader/Sc/so/298858.zip
同梱ファイルのバイナリを書き換えるだけの物なんだけど、手動じゃちょっと膨大で。
741デフォルトの名無しさん:2011/12/08(木) 10:50:53.13
その程度の内容ならVBじゃなくてもベクターなどから適当なBasicなり他の言語でもひろって作ればええやん
742デフォルトの名無しさん:2011/12/08(木) 12:00:51.92
>>727
>文字化けが生じてしまった
あたりまえだ。
固定バイトで区切るんだから、2バイト文字の間で区切ったら
文字と対応しないバイト列になるんだから
表示できない。

文字コード変換してとか解決したように見えただけだろ。
もし表示できてるなら、指定バイトで区切られてないはず。

表示したものをもう一度書き出すプログラムなんて世に送り出さないでくれ。
743デフォルトの名無しさん:2011/12/08(木) 12:23:58.60
>最終的には、ADODB.streamの文字コード変換を使って解決した。
2バイト文字を切ったとかじゃなくて、そもそも違う文字コードのを
データを表示しようとして化けただけじゃないか

シフトJIS固定長で文字が境界またぐなら、格納時に考慮しとくべき問題だが
744デフォルトの名無しさん:2011/12/08(木) 12:38:34.22
>>741
すみません、スマホしかないもので。
ダメもとで、とりあえずあちこち見ながら書いてはみたものの。
でもそれ程基礎的な物ならスマホ上でも動くアプリあるかもしれないですね。
もう少し勉強し直してみます、ありがとうございました。
745デフォルトの名無しさん:2011/12/08(木) 13:04:46.33
スマホで動くものをVBで作れと?
746デフォルトの名無しさん:2011/12/08(木) 13:06:52.79
Androidのアプリなら作れるけど
747デフォルトの名無しさん:2011/12/08(木) 14:17:19.97
VB6でやろうとするのはどんな苦行だろう
748デフォルトの名無しさん:2011/12/08(木) 20:07:09.17
Windows Mobileと呼ばれる前のPocket PC 2003で動くeVB3用アプリなら作れるけど
749デフォルトの名無しさん:2011/12/08(木) 21:21:16.25
俺はeVC3なら作れる
750デフォルトの名無しさん:2011/12/09(金) 01:46:41.86
いわゆる趣味でプログラミングとかしてんだけど
ちょっとした作業ツールとか作るの慣れたVB6が楽すぎて未だにVB6から離れられない
751デフォルトの名無しさん:2011/12/09(金) 03:19:45.10
すごく初歩的な質問なんだけど、インスタンスの生成方法がさっぱり分からんorz
Dim btn As CommandButton ' コンパイル通るし、実行してもエラー起きない
Dim btnA As New CommandButton ' New キーワードの使い方がだめ とエラーが出る
Set btn = New CommandButton ' 同上
Dim a As New Class1 'Class1は何も書いてない適当なクラスモジュール。 問題ない。

おそらく、CommandButtonは抽象クラスだから生成出来ないのかな?と考えてはいるんですが
エラーメッセージが変だし、Class1でコンストラクタなど定義してないにもかかわらず、生成出来る不思議。

そして、ネット上で探してもノイズ(VB.NET)が多すぎてよく分からんorz
752デフォルトの名無しさん:2011/12/09(金) 03:42:06.27
あと、変数の宣言を強制する方法は分かったけど、
(デフォルトで入れておけよ…デフォルトで入ってないから未定義の変数を読み出す様なひどいソースを引き継ぐことになったorz)
型変換、キャストも強制するオプションはどうすれば?

あと、誰かLongのリテラルの書き方教えてくれ、
Dim j As Long
j = &HFFFF
MsgBox(j) ' -1 !?
MsgBox(&H10000 - 1) ' 65535
とりあえず
Const H0xFFFF = &H1FFFF - &H10000
Const H0x8000 = &H18000 - &H10000
というようなのを定義してごまかしてるけど。
とりあえず、この入門書(笑)は風呂の焚き物にしかならんな…
753デフォルトの名無しさん:2011/12/09(金) 05:08:55.90
私こと初心者が適当な風に回答します

>>751
CommandButtonなどのコントロールは、たしかNewでインスタンスは生成できないとか
「VB6 動的 コントロール」でググるとコントロールの動的追加について記載サイト出てくるかも

>>752
こゆこと?
Dim a As Long, b As Integer, c As Single, d As Double

Dim a&, b%, c!, d#

a = 100& (Long型)
b = 100% (Integer型)
c = 100! (Single型)
d = 100# (Double型)

オプションは分からないけどキャストは
CInt() CLng() CSng() CDbl() とかそういう関数あるよ
754753:2011/12/09(金) 05:10:49.37
勘違いしてたり間違ってたりしてたらごめんなさいね
755デフォルトの名無しさん:2011/12/09(金) 07:12:29.84
>>751
UI部品のインスタンスを動的に作成する場合にはいくつか制限がある。
フォーム上にボタンを張り付けて、Indexに0と指定しておく。
でもってコントロール配列に対して「Load Button1(1)」とすれば、
インスタンスを生成できる。
756デフォルトの名無しさん:2011/12/09(金) 07:27:23.06
>>742

答えは>>743。VB6が勝手にUNICODEにしてしまうところでそうなった。
境界またぎはさせてないよ。
757デフォルトの名無しさん:2011/12/09(金) 08:17:21.17
配列にしなくても動的作成できるなんて始めてしった
http://7ujm.net/VB/VB6Controls.html
758デフォルトの名無しさん:2011/12/09(金) 09:26:32.58
配列でロードする方法ならIndex 0のプロパティがほとんどコピーされるから
実行時に型を変える(TextBoxに入力したコントロール名のを作成)とかで
ない限り、配列ロードでいいんじゃないの。
759デフォルトの名無しさん:2011/12/09(金) 09:28:04.83
えー
ださいよー
760デフォルトの名無しさん:2011/12/09(金) 15:15:33.32
New使ってるからLoadでのコピーは用途違うんじゃねの?知らんけど
761デフォルトの名無しさん:2011/12/09(金) 16:24:09.53
>>753
ああ、なるほど、ケツにつけるから併用出来るのか
MsgBox(&HFFFF&)ででけた

自動でキャストされることになれてないから、キャストを明示的に指定しなきゃいけない様に設定できたら
VB初心者のおいらでも安心してくめるかなと。そうした方が後継者もあんまり混乱しなくてすむし。

>>755-760
thx。要素数に応じて、コントロールを並べることを考えてたからコントロール配列で良さそうだわ。
コントロール配列使えばたぶん必要ないことだと思うけど、
VB6にはまだ匿名関数でクロージャをやったりとか出来ないよね?(確認)
コールバックとか難しそうだな…AddressOfで取得したのを直接実行できないのかよ。
762デフォルトの名無しさん:2011/12/09(金) 16:33:10.59
AddressOfは外部APIに渡すときしか使えなかったような
763デフォルトの名無しさん:2011/12/09(金) 17:08:05.52
何言ってるのかさっぱりわからん
764デフォルトの名無しさん:2011/12/09(金) 18:31:41.95
>>763
いやさ、おまえらみたいになれてる奴には気にならんかもしれんけど
http://d.hatena.ne.jp/snaka72/20100126/1264514893
ここに書いてあるようにCallByNameっていうevalっぽいものじゃなくて
Sub hoge(callback as Method)
 callback()
End Sub
hoge(AddressOf(foonction))
みたいに出来るもんだと思っててさ。まあ、セキュリティ的に直接関数ポインタを実行出来ない方が正しいと思うけど。

しかし、このIDE使いにくいな… &HFFFF& <-コレはいい、 &HFFFFF& <-勝手に&外される &H0FFFF <-勝手に0を消される
765デフォルトの名無しさん:2011/12/09(金) 20:09:16.34
勝手に&が消されるのは指定しなくてもLong型で認識されるからじゃねの
766デフォルトの名無しさん:2011/12/09(金) 20:16:14.63
CallByNameで諦メロン
767デフォルトの名無しさん:2011/12/09(金) 20:33:37.14
(インスタンスとか意識して作ったことないから俺には話の内容が高度すぎて)何言ってるかさっぱりわからん
768デフォルトの名無しさん:2011/12/09(金) 20:36:46.71
ちげーよw
769デフォルトの名無しさん:2011/12/10(土) 21:10:33.06
VBはじめたいのですがもうVB6.0は手に入らないのでしょうか?
VB6用の本を買ったのですがVB2010というのでもいけますかね?
770デフォルトの名無しさん:2011/12/10(土) 21:12:46.13
VB6とVB2010では全然違うから
VB6のやり方ではVB2010では何もできない
VB2010のやり方ではVB6では何もできない
771デフォルトの名無しさん:2011/12/10(土) 21:12:58.41
>>769
6.0と2010は全く違うものです
それに6.0は今から覚えるには古すぎるのでお勧めしない
772デフォルトの名無しさん:2011/12/10(土) 21:14:34.67
数年前はMSDNのイロイロ入りの奴で手に入れるのが通説だったんだが
今はどうなのかねえ。
773デフォルトの名無しさん:2011/12/10(土) 21:15:44.89
>>770>>771

そうなんですか・・・2010用の学習書を買い直しますありがとうございました
774デフォルトの名無しさん:2011/12/10(土) 21:21:16.77
>>769
VB2010はVB6とは全く別物。.netベースになってる。 VC++2010みたいにWin32も開発できるなんてことは”ない”。完全に.net専用。
つか、新しく始めるならなぜにVB6とか苦行するしw

.netでもかまわないならC#とかおすすめよ。C#の方が新機能とかの追加が早いし。
研究とかで.netが使えないなら、C/C++あたりが無難。誰でも使えるしな。
RADツールがほしいならDelphi3〜7という手も悪くない。マイナーだが、プログラム経験があれば1週間もあれば誰でもかけるようになるだろう。
過去の遺産の引き継ぎとか、明確にVB6でなければならない限り、VB6を使う理由もないし、使うべきじゃない。

入手先の前にまず再考を。 別にその本をどぶに捨てたところで全然惜しくないしな。
775デフォルトの名無しさん:2011/12/10(土) 21:31:06.68
>>774
Cはある程度できるんでC++にしようかなと思います。
ただ簡単なソフトを作ったりするのにはVBが一番簡単かな?と思ったんです
776デフォルトの名無しさん:2011/12/10(土) 21:32:18.67
ディスコンになって10年経過してる商品について>>769はさすがにネタ投入(ただし全然面白くないが)
としか思えんけど。

逆にネタじゃないなら相当頭がどうかしてる。
こんなところに書き込んでるわけだから、最低限webにアクセスできる環境にはあるんじゃないの?
777デフォルトの名無しさん:2011/12/10(土) 21:36:23.30
たとえそうだとしてもそのレスをする必要はないような
778デフォルトの名無しさん:2011/12/10(土) 21:38:39.02
いつもイライラしてるIT土方が来たようだな^^
779デフォルトの名無しさん:2011/12/10(土) 21:39:04.41
いつまでもVB6なんて使ってる化石をからかっただけですけどね
780デフォルトの名無しさん:2011/12/10(土) 21:41:04.82
やべえ、真性のアスペかよこいつw
どこに「いつまでもVB6なんて使ってる」なんて書いてあるんだw
781デフォルトの名無しさん:2011/12/10(土) 21:41:39.00
おい、つまらんレスはするなバカども
782デフォルトの名無しさん:2011/12/10(土) 21:42:54.61
>>781
じゃああなたが面白いレスの手本見せて下さいよ〜
783デフォルトの名無しさん:2011/12/11(日) 05:39:23.55
簡単なもの作るだけならExcelでも使っとけ
つかVBマクロて人気なんだな
OpenOfficeに最も望まれてる追加機能がVBA対応とか
これじゃVB無くならんわ
784デフォルトの名無しさん:2011/12/11(日) 16:03:38.31
>>783
Excelっていう土台と、初心者と本格的プログラミングの中間にある
開発環境が他にないからね。

Accessまでいっちゃうと、本格的プログラミング寄りで、何より、データベース
って土台は初心者にキツイ。

ということなのだろう。

ただ、そろそろVBAは、言語体系を.NETに近づけたほうがいいとは思う。
785デフォルトの名無しさん:2011/12/11(日) 16:14:13.29
Excelとかのマクロ言語はVBAやめてJavascript系にしちゃえばいいのに
786デフォルトの名無しさん:2011/12/11(日) 16:34:15.51
学校のVisual Basic 6.0で線形探索とファイル処理を使ったプログラムを作る課題がでました。
Excelでデータを作って対応させるのように指示を受けました。
私は商品名を入力し、実行するとその商品の画像を表示するようにしたいのですが、
この場合、Excelのデータ作成はどのように行えばいいですか?
787デフォルトの名無しさん:2011/12/11(日) 16:44:32.25
商品名と画像ファイル名だけじゃないの?
788デフォルトの名無しさん:2011/12/11(日) 17:39:35.98
学校ってまだVB6使ってるの?
789デフォルトの名無しさん:2011/12/11(日) 17:41:41.90
>>784
近づけるというか、いっそうVBAとCOMを取り除いて、.netベースにしてしまって
VBAの代わりにVB.NET(移植向け)、C#(新参/初心者向け)を使えるようにすればいいんじゃね?

ExcelやAccessでlinqが使えれば、業務系の人にもうけが良いだろうし。(むしろにて異なるものでキモがられるかね?)
>>785
.netって基盤を作ってきたMSだから、今更Javascriptはないと思う。
OOoはVBAとか誰得なものをつけるより、Javascriptでマクロを組めた方が遙かに現実敵だとは思うが。
Google Docsの方はJavascriptだけども、サーバサイドで動くので使いにくいね。 
790デフォルトの名無しさん:2011/12/11(日) 17:43:13.57
>>786
研究室の過去のプログラムの更新にやむなくってのは分かるが
学校で今更VB6を教えてるって、その学校かなりヤバくね?

中学校の部活か何かでVBAでプログラミング体験とかなら分からんでもないが。課題もそのレベルだし。
791デフォルトの名無しさん:2011/12/11(日) 17:48:42.38
情報系じゃないが、若いセンセが嘆いてた
教える老人のノート、数十年前のものいまだに使ってるって
792デフォルトの名無しさん:2011/12/12(月) 02:34:55.91




ワイは日本人やが聞いた情報によると、もうじき中国はバブルがはじけて昔の貧乏な元の中国に戻るらしいで
みんなも知っての通りもう経済は破綻してて、取り戻すのは無理なんだそうや


その世界ではごっつい有名な政府関係者筋から聞いた確かな情報やで

まあお前らほどの頭の良い連中には、今さらなくらいのネタやな、失礼なくらいかもしれん
お前らからすればもう常識的なくらいの知識やろ?







793デフォルトの名無しさん:2011/12/12(月) 10:26:11.26
Windows7で「Microsoft Shell Controls And Automation」を参照設定してexeファイルを作り、XPのパソコンで実行すると、
実行時エラー430(クラスはオートメーションまたは予測したインターフェースをサポートしていません。)が発生しました。

shell32.dllのバージョンが原因なのでしょうか?



Dim oShell As New Shell
Dim oFolder As Folder2

Set oFolder = oShell.BrowseForFolder(0, "選択してください。", 1)

If oFolder Is Nothing Then
Exit Sub
ElseIf oFolder.Title = "デスクトップ" Then
    MsgBox "デスクトップは選択できません。", vbOKOnly + vbCritical
Set oFolder = Nothing
End If

If Not (oFolder Is Nothing) Then
txtFolder.Text = oFolder.Items.Item.path
pFileDir(lstFile.ListIndex + 1) = txtFolder.Text
End If

Set oFolder = Nothing
794デフォルトの名無しさん:2011/12/12(月) 15:51:10.15
VB初心者なのですが、
xlsmファイルって読み取ることができますか?
読み取れるようであれば例文教えていただけると
ありがたいですm(_ _)m
795デフォルトの名無しさん:2011/12/12(月) 15:52:47.84
Excelが入ってれば読めるよ
796デフォルトの名無しさん:2011/12/12(月) 15:58:29.53
>>795
Excelも入れていて読み込めるはずなのですが

xlsmfile = New FileIO.TextFieldParser("ファイル名.xlsm",
System.Text.Encoding.GetEncoding("Shift_JIS"))

xlsmfile.TextFieldType = FileIO.FieldType.Delimited
xlsmfile.SetDelimiters(",")

この文では読みこめないのでしょうか?
797デフォルトの名無しさん:2011/12/12(月) 16:09:00.17
>>796
createobjectして読み込むんだよ
798デフォルトの名無しさん:2011/12/12(月) 16:23:43.16
>>796
ひょっとして.net+VSTO?VSTOは実は単なるCOMラッパーだったりするから微妙だけど。

そもそも、Microsoft.VisualBasic.FileIO.TextFieldParserって、zipしてある奴も読めるのか?
MSDNをさっと目を通すと、CSV/TSVとかのテキストファイル前提っぽいが。

>.GetEncoding("Shift_JIS"))
あれ?普通、xlsx/xlsmの中身のエンコードってUTF-8とかUnicode系じゃねーの?

あと念のために聞くけど、PC初心者?まるで分かってないオーラが漂いまくってるけど。
ついでに、VSTOはそんな便利じゃないよ。イテレートもろくに使えないし。
799デフォルトの名無しさん:2011/12/12(月) 16:27:08.33
>>797

試してみたんですができませんでした。
createobject の使い方教えてくれませんか?
800デフォルトの名無しさん:2011/12/12(月) 16:41:55.33
そういえばExcel2007以降とか見たこと無かった。
801デフォルトの名無しさん:2011/12/12(月) 17:01:08.62
>>798

テキストファイルを読むことを前提にしているので大丈夫です。

>あれ?普通、xlsx/xlsmの中身のエンコードってUTF-8とか
Unicode系じゃねーの?

調べてみます。

PC初心者です。
これから勉強していきたいのでよろしくお願いします。
802デフォルトの名無しさん:2011/12/12(月) 17:01:50.87
>>794
読めます。
中身はZIP形式で圧縮されたテキストファイルです。

試しに拡張子をzipに変更した後、開いて、中のファイルをメモ帳ででも開けばよい。
803デフォルトの名無しさん:2011/12/12(月) 17:02:57.81
>>799
どう試してみたの?
804デフォルトの名無しさん:2011/12/12(月) 17:06:09.39
>>799
ググった? あと、ここはVB6スレなんだが間違いはないか?
805デフォルトの名無しさん:2011/12/13(火) 02:14:57.18
>>796のコードはVB6のコードには見えないな。文法が違う
806デフォルトの名無しさん:2011/12/13(火) 08:17:11.38
細かいこと気にスンナよ
807デフォルトの名無しさん:2011/12/13(火) 12:45:11.56
>>801
ここID出ないから、名前欄に1個前のレス番を毎回入れるか
最初にレスしたレス番を入れるとかしてくれないと誰か分かりづらい。
絞り込みして見る事もできね。

Googleで VB6 XML 読み込み をキーワードに検索して結果の1件目。
t-yoshi-tomi.at.webry.info/200905/article_2.html
>Dim XmlDoc As DOMDocument 'xmlデータ用変数
>Set XmlDoc = CreateObject("Microsoft.XMLDom")
808デフォルトの名無しさん:2011/12/13(火) 22:12:37.25
>>806
言語が全く違うんだから気にスンナレベルじゃねーだろw

>>807
VB6ならExcel COMから読み出せば良いんじゃね?
VB.NETなら、どこかのZIPライブラリ使って中のxmlをlinqで列挙するのがお手軽かと思うけど
809デフォルトの名無しさん:2011/12/14(水) 02:49:46.98
すげー初歩的、ランゲージリファレンス嫁ってレベルだと思うんだが
イベントについてさっぱりなので教えてくれ。

eventキーワードでのイベントの定義については分かった
RaiseEventでのイベントの発生も分かる
だけど、実際にメソッドを結びつける方法が分からん まるでわかめ。
http://privatepaste.com/3e1d507e11
810デフォルトの名無しさん:2011/12/14(水) 03:29:20.92
イヴェントの使い方
'Class1.cls
Public Event EventDaYo()

Public Sub Hoge()
RaiseEvent EventDaYo
End Sub

'Form1.frm
Private WithEvents c1 As Class1

Private Sub Form_Load()
Set c1 = New Class1
End Sub

Private Sub Command1_Click()
Call c1.Hoge
End Sub

Private Sub c1_EventDaYo()
MsgBox "EventDaYo"
End Sub
811デフォルトの名無しさん:2011/12/14(水) 03:46:13.88
>>810
キモの部分は
Private WithEvents c1 As Class1
Private Sub c1_EventDaYo()
これ?
でもコレって、ClassAの中にあるCoClassBのイベントにはどう対処するんだ?
ClassA:
 Public Property Get CoClassB(index as integer) as CoClassB
CoClassB:
 Public Event CoClassScream()
ってあった場合…
ClassAが内包しているクラスのイベントをリレーしないとだめ?

というか単純に配列の中にオブジェクト入れてた場合はどうなるの?
812デフォルトの名無しさん:2011/12/14(水) 04:51:35.30
WithEvents 発生したイベントをキャッチするための入れ子を宣言する
(配列にできない、Newで宣言できない、Moduleでは宣言できない)
WithEventsを宣言したForm(またはClass)内でしかそのイベントをキャッチできない

813デフォルトの名無しさん:2011/12/14(水) 04:55:05.51
>>810
Class1で宣言したイヴェントはClass1内からのみ発生させられる
Class1のインスタンスから発生したイヴェントをキャッチするには
WithEventsでClass1のイヴェントをキャッチする入れ子を宣言し
それにあらかじめインスタンスをつっこめばそのインスタンスから発生したイヴェントをキャッチできるようになる
が入れ子に設定されたインスタンスからのイヴェントしかキャッチできない
814デフォルトの名無しさん:2011/12/14(水) 04:57:03.36
>>812
(配列にできない、Newで宣言できない、Moduleでは宣言できない)
↓訂正
(配列にできない、Newで宣言できない、標準Moduleでは宣言できない)

815デフォルトの名無しさん:2011/12/14(水) 05:05:48.74
内包リレーってこんな感じか?
'Class1.cls
Public Event EventDaYo()
Private WithEvents c2 As Class2
Public Sub c2_EventKaYo()
RaiseEvent EventDaYo
End Sub
Private Sub SetC2(c As Class2)
Set c2 = c
End Sub

'Class2.cls
Public Event EventKaYo()
Public Sub HogeHoge()
RaiseEvent EventKaYo
End Sub

'Form1.frm
Private WithEvents c1 As Class1
Dim c2 As Class2
Private Sub Form_Load()
Set c1 = New Class1
Set c2 = New Class2
c1.SetC2 c2
End Sub
Private Sub Command1_Click()
Call c2.HogeHoge
End Sub
Private Sub c1_EventDaYo()
MsgBox "EventDaYo"
End Sub
816デフォルトの名無しさん:2011/12/14(水) 05:09:59.08
VB6 イベントを作る - RaiseEvent, WithEventsなど
http://homepage1.nifty.com/rucio/main/shokyu/jugyou29.htm
817デフォルトの名無しさん:2011/12/14(水) 05:20:06.22
質問者は質問をわかりやすく明確に
回答者は回答をわかりやすく明確に
カオスな流れになってるぞ
818デフォルトの名無しさん:2011/12/14(水) 05:25:49.38
イヴェントをキャッチしたいForm(またはClass)内でWithEvents入れ子を作れ
Class1内のClass2インスタンスのイヴェントを
そのClass1のインスタンス内でキャッチしたけりゃClass1内にWithEventsを書いてそのClass2のインスタンスへの参照入れろ
Class1以外、たとえばForm1でClass1内のClass2のイヴェントをキャッチしたけりゃ
Form1内にClass2のWithEvents書いてClass1内のClass2のインスタンスの参照を渡すか
Class1内でClass2のイヴェントをキャッチしてClass1でイヴェントをキャッチしたってイヴェント発生させろ

819デフォルトの名無しさん:2011/12/14(水) 05:36:14.32
質問者と回答者の会話が噛み合ってないな
820デフォルトの名無しさん:2011/12/14(水) 08:25:05.62
イベントは別のクラスに書くんだよ
821デフォルトの名無しさん:2011/12/14(水) 11:32:10.37
ヴェとか書くからなんかごちゃごちゃした文章に見える
822デフォルトの名無しさん:2011/12/14(水) 11:36:56.97
これが参考になる
http://oshiete.goo.ne.jp/qa/504573.html
823デフォルトの名無しさん:2011/12/14(水) 16:28:56.24
VBのアプリで、USBメモリにテキストファイルを書きだした後
タスクバーから取り出しを実行すると定番の
 「デバイス'汎用ボリューム'を今停止できません。」
の表記が出て、アプリを終了するまで停止できません。

一応調べましてFileSystemObjectを使い、ファイル保存の際に使用していた
dirからFolderExistsに変更ましたが、"アプリ起動後"にUSBメモリを挿すと
想定通りUSBメモリの取り外しが行えるものの"アプリ起動前"から
USBメモリが刺さっていると上記のエラーが出て取り出しができないのです。

更に調べて、上記に加えて最後にchdir("C)でローカルドライブに変更してやると
アプリ起動前にUSBメモリを挿していても、問題なく取り外しが行えるように
なったもののどうもしっくりきません。

どなたかこの状況から原因をエスパーできる方はおりませんか?
824デフォルトの名無しさん:2011/12/14(水) 16:46:33.22
ローカルに書き出してからUSBにコピーするのがいいよ
825デフォルトの名無しさん:2011/12/15(木) 13:30:43.68
□投稿者/ サテア 一般人(1回)-(2011/12/15(Thu) 10:25:45)

環境/言語:[windows7/visual basic6.0/?] 
分類:[VB6以前] 

4つのテキストボックスに入力した数字をソートしてラベルに小さい順に表示するプログラムを作成するノルマを与えられています。
しかしvisual basic6.0だとあまりい良い文献がなく、ほとんど参考になりません。
ちなみに自分はオブジェクトを配置するくらいの技能までは持っています。そこから先がすすめません。

何だよそのノルマと技能はwww
826デフォルトの名無しさん:2011/12/15(木) 13:34:58.64
リストボックスに入れてソートさせるのがVBっぽい
827デフォルトの名無しさん:2011/12/18(日) 12:22:19.04
>>823
大きな問題として
Dir関数って、フォルダを参照した後で内部的に終了処理がなされてないよね
Loopでファイルの列挙ができるようになってる都合上、参照し続けてしまう
前の方のレスにも書いたけど
Dir ""とすれば開放できるとするサイトがあるけど、それでもカレントフォルダを参照してしまう

で、話は戻るけど
やっぱりDir関数を修正した以外の場所で使ってるんじゃないの?
またはchdirかも知れないけど、
最後にchdirでUSBメモリ以外を参照すれば抜けるっていうのは、その証拠でしょ
828デフォルトの名無しさん:2011/12/18(日) 16:25:51.45
>>825
初心者に対する非常に良い問題なのだが、VB6っていう環境が
初心者の学習に向いてない。

投稿者は明らかに初心者なのだが、こういう掲示板で
どういう言葉遣いで質問するかわからないから変な用語使うハメに。

829デフォルトの名無しさん:2011/12/18(日) 19:37:06.04
単純にソートアルゴリズムの勉強させられてんじゃないの
自分も新人の時に最初の課題として出されたよ
実際自前でソートする事なんかほぼ無いが
あの時色々と調べて得た知識は今も生きている
830デフォルトの名無しさん:2011/12/18(日) 19:47:27.78
そっとしといてやれよ
831デフォルトの名無しさん:2011/12/18(日) 22:16:07.93
実はわざわざVB6でやらせて苦行を強いる上司のパワハラ
832デフォルトの名無しさん:2011/12/19(月) 09:47:21.79
>>827-832
ここはVB6のスレなんだ。
VB6は古いとか.NETやれとか言ってるやつはスレち。
答える気がないなら来るな。

って書こうと思ったら、ここへの質問じゃないのか。
まあいいや。
VB6のスレなんだからVB6かわいがってやってくれ。
833デフォルトの名無しさん:2011/12/19(月) 18:38:55.79
VBでメモ帳を作成しろと言われた
誰かサンプルソースZIPでくれエロい人
834デフォルトの名無しさん:2011/12/19(月) 18:47:11.67
>>833
誰に言われたんだ
835デフォルトの名無しさん:2011/12/19(月) 19:16:57.89
>>832

>>825はな…どっかの掲示板の転載やで…
答えは求めてないだろ。
(かといってヲチする板でもないがな)
836デフォルトの名無しさん:2011/12/19(月) 19:25:46.75
>>834
講師
837デフォルトの名無しさん:2011/12/19(月) 19:36:01.93
VB6でやれって言われたのか?
838デフォルトの名無しさん:2011/12/19(月) 19:50:28.15
>>837
VB2010Expressです
839デフォルトの名無しさん:2011/12/19(月) 21:15:39.13
>>838
ここはVB6.0のスレ。
VB2010はゴミ箱に捨てて、VB6.0で開発したほうが良い。

それが出来ないなら余所のスレに行け。
840デフォルトの名無しさん:2011/12/19(月) 22:44:57.96
うぜえなこいつ
841デフォルトの名無しさん:2011/12/19(月) 22:52:06.76
>>839
スレ違だボケって意見には賛成できるけど
>VB2010はゴミ箱に捨てて、VB6.0で開発したほうが良い。
コレは同意できないw
842デフォルトの名無しさん:2011/12/21(水) 05:57:54.47
じゃ、VB6で
Shell "notepad", VbNormal
843デフォルトの名無しさん:2011/12/21(水) 06:03:46.00
よくサブルーチン(戻り値のないメソッド)をCallで呼び出しているけど
アレは直接呼び出すのと違うの?メリットって何?
844デフォルトの名無しさん:2011/12/21(水) 06:38:04.44
>>843
リファレンスぐらい読めよ。
http://msdn.microsoft.com/ja-jp/library/sxz296wz(v=vs.80).aspx

「コードの読みやすさが向上します」って書いてあるだろ。
メリットはそれだけだ。デメリットはタイピング量が6文字増えることかな。
845デフォルトの名無しさん:2011/12/21(水) 06:49:12.71
>>844
VB6のリファレンスってまだ残ってたのか! と思ったらコレVB.netのじゃん…
>プロシージャを呼び出すときに Call ステートメントを使用する必要はありません。ただし、そうするとコードの読みやすさが向上します。
>argumentList を指定する場合は、かっこで囲む必要があります。
つまり、引数を括弧で囲めるようになるのか…確かにこれは有用だな。

むしろ、括弧を省略しなければいけない仕様の方をdo…おやこんな時間に誰だろう?
846デフォルトの名無しさん:2011/12/21(水) 20:08:03.41
俺はずっと以前からCall使ってる。
理由は、コードが見やすくなるからだ。
847デフォルトの名無しさん:2011/12/21(水) 21:24:27.15
>>846
まぁ、本当はCall命令はFunctionステートメントやSubステートメントが
無かったころの残骸なんだけどな。

VB1.0の頃には、見た目以外にはほとんど意味の無い命令になった。
848デフォルトの名無しさん:2011/12/21(水) 21:42:06.92
だいたい、VBってタイピング量にかけては最悪だろ。

If で開始して、End If で終わる。

Do while〜 Loop で終わる。

CとかJavaとかC#は if で開始して } で終わる。

コードの見やすさからすれば断然C#。

VB6やっててよかったと思う事は、俺にはただ一つ。

VB6 で作ったクラスとかをほぼそのままVBAにも適用して動作可能にできる点だ。
(DB関係はそれでExcelにも使えてる)
849デフォルトの名無しさん:2011/12/21(水) 22:03:11.42
タイプ量=みやすさ とでも思ってるのか
ほんとに綺麗なソースもホントにひどいソースもみたことないんだな、きっと
850デフォルトの名無しさん:2011/12/22(木) 00:30:12.89
見やすい見にくいとかどうでもいいよ。動けば
851デフォルトの名無しさん:2011/12/22(木) 00:54:11.41
>>847
BASICの頃のはラベルへGOTOとかGOSUBじゃなかったっけ?
CALLとか使った覚えなさす。 もっともあの頃のBASICはテキストデータを格納して
マシン語を走らせるためのブートローダー的なものだが。

>>850
お願いだからいろんなモジュールのグローバル変数をごっちゃにして
未定義でなおかつ代入してない変数を読み出して、たまたまうまく動いているプログラムを量産しないでください。

イコールの位置とかそろえなくて良いけど、インデントくらいはまともにやってください。
If a = 0 Then ' インデントレベル 0
If b = 0 Then c = 0 ' レベル 0
 d = 0 ' レベル1
End If ' レベル0
…これ難読化ツールでも使ったんですか?… 
852デフォルトの名無しさん:2011/12/22(木) 01:03:15.42
絶対自分しか見ないってんなら良いけど
他人が見るの前提ならCallは付いてた方が良いよな
つか付けてくれ
あと.Textとか.Valueとかも付けといてくれ
Option Explicitも忘れないでー

変数なんだかオブジェクトなんだかSubなんだかFunctionなんだか
そもそも作った人がtypoミスしたまま気が付いてないとか

解らないから!解らないから!
853デフォルトの名無しさん:2011/12/22(木) 07:28:40.89
>>851
インデントもロクにしないっていうのは
単に初心者かCOBOL文化の名残り?
854デフォルトの名無しさん:2011/12/22(木) 08:21:19.98
>>853
おそらく仕事/上司が気に入らない事への腹いせでやって、逃げていったんだと思う。
一般的に禁忌と言われてることを一通りやってるし、ドキュメントも残ってないし。

ちなみに禁忌って言ってるのはだいたいこのこと。
・インデントをろくにつけない。つけないと言うより、したりしなかったり。全くしないよりたちが悪い。
・リテラル値を多用してハードコーディング
・もちろんファイルハンドル#1なども、一時的、永続的含めて直接指定
・他のモジュールで宣言してあるグローバル変数の多用
・変数の宣言をしてないことは日常
・文字列を数値化したり、文字列化したりしながら使用
・↑と併用して、状態として保持しておくべき値をコントロール(主にラベルなど)のキャプションで保持
・他のモジュールへコントロールを渡してそこでUIを操作
・ロジックとUIの分離? いえいえ当然、積極的に混合してます^q^
・バージョン管理? キチンとしてるよ! ほらここから数行下までのコメン(ry
・適切なコード内ドキュメント
'ファイルをクローズ
Close #1
少なくても初心者なら、ここまでひどい事するか? これは分かってる奴が意図的にやってるようにしか見えないぞ。
855デフォルトの名無しさん:2011/12/22(木) 09:23:27.25
>>854
そのぐらいなら、まだ許せるんじゃね?

・2000行を超える超巨大関数。もちろんバグつき。
・無駄にテクニカル。
  CallByName、AddressOf、VarPtr、ActiveX、etc...
・何処でもやたらとDoEvents。
  DoEventsが無いと長時間応答なし、でもあると落ちるみたいなバグつき。
・何処でもやたらと状態遷移で管理。でも状態遷移図はコーダの頭の中だけ。
856デフォルトの名無しさん:2011/12/22(木) 22:12:39.72
>>855
2000行を超えて無駄にテクニカルってのが笑えるw

>>854
わざとやってる臭いね
857デフォルトの名無しさん:2011/12/23(金) 00:31:59.07
>>854
どっからどうみても俺が今やってるプロジェクトのソースだが
858デフォルトの名無しさん:2011/12/23(金) 01:18:54.82
今VB6でやってるのかよw
どんな会社だよ。
ついでにそんな会社にいるあんたのレベルも知れてるな
859デフォルトの名無しさん:2011/12/23(金) 03:15:29.69
新規はさすがにないだろうが、既存システムの修正はまだあるだろ
860デフォルトの名無しさん:2011/12/23(金) 03:26:43.23
VB6で新規もありうるんじゃね
今もVB6のソフト使ってるなら
そのパソコン(?)で新たに何かしようとその会社が考えてたら
そのパソコンで稼動するソフト制作を要求するんじゃねの
861デフォルトの名無しさん:2011/12/23(金) 09:30:04.25
VB6はMSのサポートが終わってるという建前で小さい新規の開発はお断りしています
862デフォルトの名無しさん:2011/12/23(金) 17:50:08.15
リプレースがあってもVB6の糞コードを
アップグレードウィザードで.netに引き継いでやってたりするから怖い
863デフォルトの名無しさん:2011/12/24(土) 01:29:31.71
なんだかんだVB6ってよく出来てたと思うんだよなー。
.NETはC#だけにしてVBはVB6の延長で進化すればよかったのに。
微妙にC#に出来てVB.NETに出来ないことがあって面倒だ。
864デフォルトの名無しさん:2011/12/24(土) 01:48:11.61
どんな言語でも最初は簡単でも後から難しくなるもんだw
865デフォルトの名無しさん:2011/12/26(月) 00:49:07.79
汎用に使えるプロシージャだと、先頭に機能だけ一言書いて
わざとインデントなくしてコメントも削除して納品することがある
流用されないようにというケチな気持ち
866デフォルトの名無しさん:2011/12/26(月) 01:11:20.72
ねえよカス
867デフォルトの名無しさん:2011/12/26(月) 05:19:47.49
そもそもソース提供してる段階で流用を認めないとかあり得ないと思うが
868デフォルトの名無しさん:2011/12/27(火) 18:23:44.95
ちょこっとしたソフトでも、開発に2人月かけたとして
納めた会社が大量にコピーして使ったりしてるのを見ると
どうかと思う。もっと金とるかライセンス契約にするか。

ま、そういう会社はOFFICE製品とかも海賊版使いまくってたり
するんだけど。
869デフォルトの名無しさん:2011/12/27(火) 18:42:35.68
もしドラブラよろかよ
870デフォルトの名無しさん:2011/12/27(火) 18:51:37.21
もしドラえもんにあったら その時は ブラジャーによろしく
871デフォルトの名無しさん:2011/12/27(火) 19:53:10.25
今なら「もしドラブラよろ」でググれば出てくるな
872デフォルトの名無しさん:2011/12/28(水) 00:44:02.15
もしドラゴンクエストでブライがよろいを着たら?
873デフォルトの名無しさん:2011/12/28(水) 04:05:53.56
もしもし、ドラ焼き100人前ブラックでお願いします よーそろー?
874デフォルトの名無しさん:2011/12/29(木) 01:42:07.29
もしドラ×ブラよろかよレベル高ぇーなオイ
875デフォルトの名無しさん:2012/01/02(月) 14:47:56.67
ゴミのような奴しかいないスレになってるな
876デフォルトの名無しさん:2012/01/02(月) 21:47:31.01
そんなに謙遜するなよ
877デフォルトの名無しさん:2012/01/06(金) 23:34:52.86
初めて書き込みます。

現在、VB6.0でプログラミング機能付きのRPN電卓を作るという課題に取り組んでいます。

電卓機能についてはある程度できたのですが、プログラミング機能の方が全く分かりません。

どこが分からないかというか・・・どのように動いているのかイマイチ理解できていません。

解説していただけたら助かります。
878デフォルトの名無しさん:2012/01/06(金) 23:57:22.55
Scriptlet
879デフォルトの名無しさん:2012/01/07(土) 00:11:57.42
877です。

これを元に作ります。

http://kie.nu/3mI
880デフォルトの名無しさん:2012/01/07(土) 05:22:37.64
いきなり上げられたexeをクリックする勇気は無いな
881デフォルトの名無しさん:2012/01/07(土) 05:59:33.44
学校って進歩とか進化ってしないの?
いつまでVB使うの?
882デフォルトの名無しさん:2012/01/07(土) 10:44:43.23
センセイがくたばるまでだよ?
883デフォルトの名無しさん:2012/01/07(土) 11:43:17.04
実務ならまだしも、学校とかは別にVBでもいいじゃん
VBだとコーディングスキルはさほど身につかないだろうけど
手軽にプログラムを作る楽しみを実感できる

いきなり敷居の高い高等言語を強制して
何も形にならずに「プログラミングってつまんねー」ってなるよりは
下等でも手軽な言語で簡単なものを色々作り
思い通りのプログラム・アプリケーションを作ることの楽しさをまず知ってもらい
高等言語に移るのは下等な言語に自分で限界を感じるくらいのスキルが身についてからで十分
884デフォルトの名無しさん:2012/01/07(土) 11:51:44.95
学校が何の学校かによる。

話の流れからすると、ごく普通の高校レベルを
想定しているようだが、その程度の学校で
プログラミングに何を求めるかだ
885デフォルトの名無しさん:2012/01/07(土) 14:34:46.66
>>883
高等の使い方間違ってね?
886デフォルトの名無しさん:2012/01/07(土) 15:13:08.69
某県立工業高校情報コースだった10年ほど前、PC-98のMS-DOSから動かすたーぼしーでCの実習したの思い出した
887デフォルトの名無しさん:2012/01/07(土) 17:48:58.16
>>881
実を言うと、参照が無くなったら即座に解放するというガベコレ方式のお陰で、
常時動作させる(例えば自動情報収集系)ようなソフトを手軽に作るには
VB6は便利。

.NETとかJavaで同じような事をしようとすると、気軽にインスタンス生成するのが
難しくなる。考えて作らないと。

あと、VB6で作ったクラスはExcelでも「ほぼ」そのまま使えるという利点がある。
.NET以降は、オブジェクト指向の理解が必要なので、学校ならカリキュラム的に
長くなると思う。

個人的には、初心者にはまずCをやらせたい。学校ならやってるとは思うが。
ここは進化しなくて良いよ。
888デフォルトの名無しさん:2012/01/07(土) 17:54:47.30
>>887
ちょっと何言ってるのか(w

それって普通は逆で、循環参照の問題がクリアされてないVB6の方が普通は注意を要する。
ドトネトやジャヴァにはその心配がない。
889デフォルトの名無しさん:2012/01/07(土) 18:56:28.67
>>888
循環参照は気をつけてたら良いよ。
簡単にメモリリークで落ちるよね。
その「気をつける」ってのが、そんなに考えなくても可能。

.NETとかJVMは、ある程度溜まってからガベコレするので
ソフトがひどい時は数秒止まるでしょ。
常時自動で情報収集するとか、FA用途とかみたいに
絶対に停止させたくないものだと、数秒止まるとか致命傷になる。

890デフォルトの名無しさん:2012/01/07(土) 19:19:03.42
>>889
VB6に固執してる人ってすぐそれだけど、そんな事実はないよ。
N88-BASICの時代じゃあるまいしそんな間抜けなことするわけないでしょw

っていうか、それを言うならシングルスレッドのVB6の方が余程リアルタイム性の
要求される処理に向いてない。
話にならん。もうアホかと。
891デフォルトの名無しさん:2012/01/07(土) 19:58:55.81
>>890
俺は.NETでもリアルタイム性の要求のあるモノ作るけど、
何も考えずにJavaのwebアプリ作るのと同じ要領で
ValueObjectの類をどんどんnewするような設計にはしない。
これをやってると、ガベコレによる停止時間がひどくなるから。
ValueObjectをどんどんNewしない設計については大まかに分けて2つの方法がある。
意図的なGCを利用できるというのは前提でな。
http://www.atmarkit.co.jp/fdotnet/directxworld/directxworld06/directxworld06_01.html
一応このへん参考。

VB6で作る場合は、循環参照だけ避けてれば後は楽。
VB6で作るわけだから、そんなに手の込んだものにはしないわけで、
シングルスレッドでもそんなに問題にはならない。
892デフォルトの名無しさん:2012/01/07(土) 20:12:36.09
循環参照って
Dim a New Class1, b New Class1
Set a.value = b
Set b.value = a
みたいな感じのこと?
893デフォルトの名無しさん:2012/01/07(土) 20:37:43.69
まあそんな感じだけど。

>>887の彼の発言が奇妙なのは、俺はVBランタイムのメモリ管理に詳しいわけじゃないが、
どのような方法にしろ自動管理である以上断片化は避けられないはずで、
であれば.NETのガベコレの(括弧つきの)「問題」と同じ問題を抱えているはずだと思うけど。

まあガベコレで数秒処理が止まるとか言ってる時点であれだけど
894デフォルトの名無しさん:2012/01/07(土) 20:49:24.63
レガシーな人なんだろ
負の遺産だけど
895デフォルトの名無しさん:2012/01/08(日) 01:05:36.32
VB6ランタイムのGCは参照カウント方式で、
カウント数が0になったら領域解放。

.NETとかJavaはバーチャルマシンがGCを担当。
マークアンドスイープとかコピーイングの方法の複合に加えて
古い・新しい領域せ世代別にも管理。

ここで、古い領域のGCがFullGCと呼ばれるもので、>>891の説明している
「数秒止まる」だろうと思う。
ヒープの断片化が問題なわけじゃなくて、ある時一気に
@生存オブジェクトのマーキングAマークなしオブジェクトの除去、
Bヒープの再配置 という流れでGCを行うので、GC自体がかなりの処理
で重たかった。ヒープの再配置を行うので、どうしてもアプリケーションの
停止時間が発生する。昔のJavaのwebアプリだと、数秒どころか数分無応
答という事があった。http://www.atmarkit.co.jp/fjava/rensai2/webopt06/webopt06.html
企業の基幹システムだと搭載メモリ量も多く、いったんFullGCがはじまると
手が付けられなかった。チューニングで対応したり、夜中に再起動させたり。

俺は.NETには詳しくないんでJavaで解釈するけど、今のJavaはさらに別
のGC方法があって、VMの起動オプションで指定するんだけど、GCの流れ
が@→A→@→Bみたいになる。アプリケーションを停止するのは@だけ
で、AやBの時はアプリケーションと並列処理される。
だから、以前ほど「数秒止まる」というのは体感しにくくなっている。
かといっても、この方法も万全じゃないんで、上の古い方法と組み合わせ
で使う。だから結局、無応答時間を完全に回避できないんだけどね。

.NETも、IDE使ってると時々プチフリみたいな事が起こって、会社の先輩か
らは、これが.NETのGCって説明されたけど、本当かどうかは知らない。
ただ、プチフリ程度でも、問題になる領域のソフトはあると思うけど。

GCについては詳しく知ろうと思ったら余裕で本一冊になる。売ってる。
896デフォルトの名無しさん:2012/01/08(日) 03:25:46.11
>>883
VB6ってどちらかと言えば
>敷居の高い高等言語
の方に入らないか?まあ、確かに電電の方とかC言語よりアセンブリの方がより直接的で分かりやすいって人も居たが。

今のC#のすべての機能(linq/ラムダ式、型推論)を使いこなすのは難しいかもしれないけど
VB6でやる程度のことなら、C#/VB.netとかの方が遙かに楽に出来ると思う。
それに、オブジェクト指向の説明だって、継承とかその辺の仕組みとかについての説明は難解かもしれないが
すでにあるクラスやメソッドを使う分にはむしろ楽になるだけだろ。 少なくても、今扱ってる変数・値が数値か文字列かはっきりしない言語よりは分かりやすいかと。
GCの事に関しても、それに気を遣わなければならないレベルの事なら、他の言語を検討しても良いわけだし、明示的にコントロールしても良いわけだし。

そもそも、VB6ってExcelのマクロを組むためだけの言語だろ?教育目的で使うなと思うんだが。
RADツールが使える環境なんて.net系以外でもDelphiとかいろいろあるわけで、わざわざVB6を選択する必要は無いし。
897デフォルトの名無しさん:2012/01/08(日) 03:49:13.22
学校側がVB6使いたがるのはVBScriptやExcelのVBAに応用しやすいからという理由からじゃね
898デフォルトの名無しさん:2012/01/08(日) 20:35:16.36
>>896
VB6を糞にしてるのはVariant型だよな。
899デフォルトの名無しさん:2012/01/08(日) 21:11:47.82
Variantは使わなければいいだけの話じゃないのかな
900デフォルトの名無しさん:2012/01/08(日) 23:41:21.77
よくある事だが、VB6で作られたソフトで、標準モジュールもクラスモジュールも無いという事はよくある。
関数への切り出しすらなく、イベントプロシージャに全部長々と書いてあったり。
変数もVariantバリバリ。

初心者がwindowsアプリを作るにはVB6がやさしいのな。
901デフォルトの名無しさん:2012/01/08(日) 23:46:08.75
>>900
それはVBに限らない
902デフォルトの名無しさん:2012/01/09(月) 00:10:36.22
>変数もVariantバリバリ。
おまえコレが言いたかっただけだろ
903デフォルトの名無しさん:2012/01/09(月) 00:56:35.72
>>901
CやJavaでwindowsアプリ作るのはしんどいぞ。
904デフォルトの名無しさん:2012/01/09(月) 03:35:02.26
まあVBAに転化しやすいてのは小規模アプリとしては大きなアドバンテージ
今後ExcelやAccessが消えるとは思えないしねぇ
905デフォルトの名無しさん:2012/01/09(月) 14:01:44.01
>>896
>そもそも、VB6ってExcelのマクロを組むためだけの言語だろ?
VBAの間違いだよな?
906デフォルトの名無しさん:2012/01/09(月) 15:07:25.69
とりあえず、Joel on Softwareの「はじめてのBillGレビューのこと」
でも読んでからVariantに呪いでもかけてみるといいよ
907デフォルトの名無しさん:2012/01/09(月) 15:13:24.45
動的型付け言語って全部Variantだけどなw
908デフォルトの名無しさん:2012/01/09(月) 16:53:37.31
>>905
もちろんVB6系全般だよ。むしろ、それ以外で使い道あるか? 
VB6は特にofficeのCOMを操作するために特化した言語・環境だろ。それ以外の用途なら他にいくらでもマシな選択肢はあるし
909デフォルトの名無しさん:2012/01/09(月) 17:15:03.51
>>908
理由、理由w
910デフォルトの名無しさん:2012/01/09(月) 19:32:45.32
>>908
COM操作に特化したってのはまあ同意できる面もなくはないが
VB6はべつにofficeに特化してるわけではない

VBAはVBのサブセット的な位置づけで、VBAが実質officeの操作に特化してるというなら
同意できる面もなくはない

とりあえずお前がVBとVBAの区別ができてないのが良くわかった
911デフォルトの名無しさん:2012/01/09(月) 20:06:07.35
VB5CCEの話とごっちゃになってそう
912デフォルトの名無しさん:2012/01/09(月) 20:43:37.75
初心者ですが、Visual Basicを始めるにあたって周りに教えてくれる方がいません
簡単な物理計算をして、それを表示できるだけでいいのですがお勧めの指導書などありますか?
913デフォルトの名無しさん:2012/01/09(月) 21:17:08.01
答え : いまの時点でVBを0から始める馬鹿はいない
914デフォルトの名無しさん:2012/01/09(月) 21:20:21.49
>>913
すいません、始めなければならないんです
0からでも
915デフォルトの名無しさん:2012/01/09(月) 21:22:13.19
>>914
現在入手可能な、お勧めの指導書はありません。
0からオンラインヘルプを頼りに始めるのが良いと思います。
916デフォルトの名無しさん:2012/01/09(月) 21:22:50.93
まあ落ち着け

VBとVB.netは別物だぞ
まずこれを理解してないと会話が成り立たない
917デフォルトの名無しさん:2012/01/09(月) 21:28:54.17
単純な計算と表示だったら他のBASICの入門サイトなどで代用できるよ
N88互換のBASICも生きてるものがあるだろうし、そっちから攻めるといいんじゃないかな
918デフォルトの名無しさん:2012/01/09(月) 21:29:07.72
>>915
そうなんですか?オンラインヘルプか...
>>916
自分が使っているのはVisual Basic2010express editionなのでVB.netとはちがいますよね?;
919デフォルトの名無しさん:2012/01/09(月) 21:32:41.26
せつこ、それどっとねっとや
920デフォルトの名無しさん:2012/01/09(月) 21:35:03.64
>>919
え、そうなんですか?
なんということでしょう...
921デフォルトの名無しさん:2012/01/10(火) 01:47:17.97
>>910
VB6とVBAの違いっていっても大してねーじゃん。平等に(ry

僕が言いたいのはVB6自体、COMを扱う、つまり主にofficeを扱うために作られたような言語でしょ?
そりゃ、それ以外の用途にも使えるかもしれないよ?でも向いている訳じゃないだろ。
VB6はVBAと違ってGDIを直接触らなくてもグラフィックを描画出来るかもしれないが、それもおまけみたいなものだし。
922デフォルトの名無しさん:2012/01/10(火) 02:01:34.36
>>921
えとさ、COMってOfficeの事じゃないよ
1から勉強しなおしたほうがいいんじゃない?
923デフォルトの名無しさん:2012/01/10(火) 02:48:07.37
一口にVBって言っても色々あるようですね
少し書店などで立ち読みしただけでは初心者には組めそうにないと思ったので...
やはり大学の授業や講座などを受けるべきなんでしょうか
924デフォルトの名無しさん:2012/01/10(火) 03:24:27.84
>>922
揚げ足とりすぎ
COMとofficeは表裏一体だろ。もちろんoffice意外に使えないわけじゃないけどさ、使わないだろ?それ以外だとIE周りとか?
COMはofficeとVBのための技術といっても過言じゃないし、VBはCOMを扱うための言語、
ならVBはofficeのための言語って言っても差し支えねーじゃん。VB6、COM、Officeこいつらは三つ子の兄弟だよ。

>>923
何をしたいかによる。大学っていっても情報専門の学科以外での授業なんて、中学生の部活でちょっとやる程度のことしかしないよ。
新しくVB6を始めるのはあり得ないが、VB.netなら特に苦も無く学べるんじゃない?
全く経験が無いならC#の方が取っつきやすいとは思う。どっちもほとんど同じものだからどっち選んでも良いけど。

とりあえずここはVB6スレであってVB.netはスレ違だ
925デフォルトの名無しさん:2012/01/10(火) 03:33:55.59
Officeのための言語ならここまで広まらなかっただろうな
926デフォルトの名無しさん:2012/01/10(火) 03:37:49.57
>>924
だからさ、Windowsのあらゆる部分にCOMは使われてるの。
マルチメディア関係、サウンド、動画、もほとんど
COMだぞ。
927デフォルトの名無しさん:2012/01/10(火) 03:51:52.39
>>924
なるほど...
聞いた感じかなり難しそうですね
CもVBもあまりかわらないものなんですか?
928デフォルトの名無しさん:2012/01/10(火) 04:34:58.35
>>924
揚げ足でも何でもなくて本当にお前の理解不足だから
そのていどの理解力でCOMがどうこう言うのはやめれ
929デフォルトの名無しさん:2012/01/10(火) 13:10:03.82
>>926
そうらしいね
レジストリのクラスIDとして登録されてるのがCOM?
930デフォルトの名無しさん:2012/01/10(火) 13:20:37.77
DirectXもCOMだよ
931デフォルトの名無しさん:2012/01/10(火) 14:38:22.59
>>927
CとVBは全く別だよ。C#とVB.netは同じ.netだから、同じように扱えるし、書き方もにてるから
C#の知識がないVB.netの人でもC#のコードが読めるし、逆も読めるよ。
http://blogs.wankuma.com/jeanne/archive/2007/02/26/64122.aspx このあたりにまとめてある

そしてC言語とC#、VB6とVB.netはまるで別だよ。 もうすこし調べたり考えたりしてから書いた方が良い。
要は「英語と中国語では文法(ゴジュン?)が似てる」っていうのを「ラテン語と韓国語はあまりかわらないものなんですか?」って返してるようなもの
それにスレ違だって。
932デフォルトの名無しさん:2012/01/11(水) 03:43:44.63
COMはwindowsの中核を成す技術仕様だぞえ
officeはそれに準拠してるというだけだよ
それにCOM自体はUNIXなんかにも実装されとる
個人法人問わず自作のCOMコンポーネントが大量に配布されてるじゃん
officeとVBだけってんじゃあ勿体無さすぎだなぁ

>>927
VBでって事はwindowsは確定だとして、簡単な物理計算と表示だけで良いのなら
Excelに関数かマクロ突っ込むだけで事足りるんじゃなかろうか?
933デフォルトの名無しさん:2012/01/12(木) 18:15:32.51
コンピュータ動かすんやからCもVBも.NETもJavaも全部ほとんど一緒やろ!
似たようなもんやで〜〜
全部IFとかFORとかそんなんやん!!どや?
934デフォルトの名無しさん:2012/01/12(木) 18:18:56.80
Javaにforってあるん?
935デフォルトの名無しさん:2012/01/13(金) 00:34:01.99
すみません、VB上でWin32APIのSleepを使って、現在のスレッドを
1000ms(1秒)一時停止させる処理を入れたいのですが、その際、
下記のようなソースの場合、DoEventsが実行されるタイミングは、
Sleep 1000でスレッドが停止して1秒たち、再度一時停止していた
スレッドが再開した後でしょうか?

それとも、Sleep 1000で1秒間分のスレッド一時停止が開始された
直後にDoEventsが実行されるのでしょうか?

やりたいことは、Sleep 1000でストップしている間に、他のスレッド
で発生してたまったWindowsメッセージを処理させたいと思っています。

---以下ソースの一部---

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub Command1_Click()
  Sleep 1000
  DoEvents
End Sub
936デフォルトの名無しさん:2012/01/13(金) 01:10:41.27
>>935
「それとも」って接続詞の使い方間違ってない?
どっちも同じ意味にしか聞こえんけど....
937デフォルトの名無しさん:2012/01/13(金) 01:22:59.63
ああ、>>935の意味がやっと分かったw
要するに>>935はスレッドが何か全然分かってないんだね。

コード(当然DoEventsを含む)が実行されるということは、そのスレッドが
制御を持ってる(ブロックされてない)ということ。

〜が実行されるのは眠った後ですか?なんて質問は愚問過ぎ。
実行されない状態を作るのがSleepなんだよw
938935:2012/01/13(金) 01:23:04.80
>>936
わかりにくくてすみません。。

Sleepで一時停止中か、一時停止しスレッドが開始した後か
という意味です。
939デフォルトの名無しさん:2012/01/13(金) 01:25:11.09
停止中はどのような命令も実行されないわけですが
940935:2012/01/13(金) 01:25:28.49
>>937
ありがとうございます
やはり、Sleepが実行されて、そのスレッドが止まると、
当然次の処理であるDoEventsも停止中は、実行されない
と言うことですね。

であれば、DoEventsするスレッドを別に立てるしかないという
ことでしょうか?
941デフォルトの名無しさん:2012/01/13(金) 01:32:12.87
>>940
いやまず最終的に何がしたいのか書かないと何とも言えんと思うけど....

「(重い)処理」を別スレッドでやるのなら普通はDoEventsなんて必用ないですよ。
DoEventsは、UIスレッドで(ビジーループ的な)重い処理を実行しても
UIが無反応になることを避けたい場合だけに使うんですよ。
942935:2012/01/13(金) 01:50:55.91
>>941
説明不足ですみません。

>>935は一例としてあげたソースになります、実際には、、

UI(Form)に配置したTextBoxに時計表示を出して、それを1秒ごとに更新して
表示させたいのですが、同時に3秒ごとに別の処理の繰り返しをしたいと思っています。
その際、3秒待つのに単純にSleep 3000という行を追加すると、UIの時計更新が止まって
しまうので、3秒待っている間でもForm上の時計表示は動かしたままにしておきたいと
思い質問しました。

ちなみに、UIスレッドとは、Formのソース内に書かれているプロシージャ群の
処理が実行されるスレッドということでしょうか?
943デフォルトの名無しさん:2012/01/13(金) 05:47:47.09
x秒ごとに処理したいのにスレッドを止める必要ないでしょ
だいたい処理が瞬間に終わるわけでもあるまいし。
インターバルを設定できるTimerってのがあるんだけど
944デフォルトの名無しさん:2012/01/13(金) 07:19:27.57
VB6でマルチスレッドってActiveXを使うやり方?
945デフォルトの名無しさん:2012/01/13(金) 08:53:01.02
できた

Private cnt As Integer

Private Sub Form_Load()
  cnt = 0
  Timer1.Interval = 1000
End Sub

Private Sub Timer1_Timer()

  cnt = cnt + 1
  Label1.Caption = cnt
  
  If cnt Mod 3 = 0 Then
    Shell "notepad" '重い処理
  End If

End Sub
946デフォルトの名無しさん:2012/01/13(金) 09:21:22.64
VBは1つのスレッドで、DoEventsによって並列処理を
しているように見せているだけ。
Sleepしたらそのスレッドは止まるのだから、VBプログラムの全てが止まる。
DoEventsでそういうことをやっているとデッドロックしやすい。
DoEventsをSwitchToThreadを同じようなものだと思っていると痛い目を見る。
非同期処理したいのであれば、Timerを使うべき。
947デフォルトの名無しさん:2012/01/13(金) 09:38:57.77
マルチスレッドがやりたいならvb.netを使ったほうがいいよ
vb6でやるならマルチプロセスでやったほうがいいな
948デフォルトの名無しさん:2012/01/13(金) 14:16:45.68
ActiveXExeのスレッドでマルチスレッドをやってみたことはある。

非同期で処理しようと思ったら、結局別スレッドで作成した
FormにTimerをおいて、そこから処理をスタートさせなければならない。

メソッドやプロパティはオブジェクト側のスレッドで同期して実行されるので
別スレッドのオブジェクトを呼び出しまくると、全然並列処理にならないw
949デフォルトの名無しさん:2012/01/13(金) 18:56:07.60
>>934
あるよ。
FOR EACH的なものまである。

>>933
制御文レベルだとどれも似たようなもん。
しかし、それをもってほとんど一緒というお前はまだまだ素人。
950デフォルトの名無しさん:2012/01/13(金) 19:08:54.62
>>942
Sleep 3000 は、3秒間何も出来ません、の意味。
やるんなら

Private Sub Timer1_Timer() 'インターバルを1000にしておく
  Static cnt As long
  
  If cnt = 0 Then
    'ここに3秒ごとの処理を入れる
  End If
  
  Text1.Text = Format(DateTime.Now(),"yyyy/mm/dd hh:nn:ss")
  
  cnt = cnt + 1
  If 3 <= cnt Then
    cnt = 0
  End If
End Sub


>>945
それだとcntが32768でオーバーフローになる
951デフォルトの名無しさん:2012/01/14(土) 16:29:09.18
VisualBasicEditor(VB6 や OfficeVBA のエディタ部分)の
初期フォントの決定ルールを教えて欲しいです。分かる方、いますでしょうか。
日本語環境なら、MS ゴシック、英語環境ならCourier Newのようです。

オプションダイアログからフォント設定を変更した後ならレジストリに記録されてましたが、
インストール後からフォント変更するまでは、レジストリには項目がありませんでした。

知りたい理由は、VisualBasicEditor上に同じフォントで文字を描画したいからです。
同じフォントで描画ができればいいので、稼働中のVisualBasicEditorのフォント名などの情報や
HFONT、LOGFONTなどを取得する方法がありましたら、そちらの方が適切に思うのですが、
VBEウィンドウに対してGetDC、GetWindowDCした後、GetTextFaceなどでは駄目でした。

初期フォントや稼働中フォントの取得方法が分かる方、どうぞよろしくお願いします。
952デフォルトの名無しさん:2012/01/14(土) 16:58:49.24
ここってやっぱりVB.NET扱ってませんよね(´・ω・`)?
953デフォルトの名無しさん:2012/01/14(土) 18:48:29.76
>>952
扱ってたら>>1に「VB〜6.0の」なんて書いてありませんよね。日本語理解できてますか(´・ω・`)?
954デフォルトの名無しさん:2012/01/14(土) 19:18:03.31
>>953
いるよねぇ。こういう一言多いやつ
955デフォルトの名無しさん:2012/01/14(土) 19:34:06.91
やっぱり扱ってませんでしたか
お騒がせしました(´・ω・`)
956デフォルトの名無しさん:2012/01/14(土) 20:21:19.59
>>955
もう見てないと思うが、.netはここ

VB.NET質問スレ(Part38)
http://toro.2ch.net/test/read.cgi/tech/1325083428/
957デフォルトの名無しさん:2012/01/27(金) 04:15:41.25
>>951
VBインストール直後はフォント情報がレジストリにないということは
レジストリ読んでみて、登録されてなかったら、そのデフォルトフォントにすればいいのでは?

レジストリ読むAPIはAPIビューアの定義は間違いだらけだから気をつけて
あれってVB5の時から間違ったままだから、初心者に諦めさせるように故意に間違えてるんだろか
958デフォルトの名無しさん:2012/01/27(金) 09:32:31.10
APIの引数はByVal As Longで宣言して
StrPtrとVarPtrで渡す時代
959デフォルトの名無しさん:2012/01/28(土) 00:24:21.02
>>957
レス感謝です。もうレスは無いかと半ば諦めてました。

今のところ、まずはレジストリから取得するようにしています。
デフォルトフォントはOSの言語で決まるようだったので、できれば決め打ちではなく、
VB6と同じような何らかの決定ルールに従いたいと思ってました。
(英語版VB6を日本語版WinXPで試したところ、MS ゴシックがデフォルトフォントになりました)

詳細は読めなかったのですが、中国のサイトでソフトが紹介されているのを見つけたので、
少数ながら、海外にもユーザーがいるみたいなので、それもフォントを決め打ちにしたくない理由の1つです。

色々試してみて、どうやらレジストリから取得しているわけではなさそうなのですが…。
960デフォルトの名無しさん:2012/01/28(土) 08:35:49.31
そうねぇ、外国のOSならMSゴシックはないよねぇ
とするとWindowsのどこかに・・

フォント名が定義されてるレジストリは余りないようだけど
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont
あたりはどうでしょ
こんなのを別のフォント名に変えてVBを新規インストールしてみて
その変えたフォントになるかどうか
ま、人に配布するソフトはそんな推測で作っちゃいけないよね
961デフォルトの名無しさん:2012/01/30(月) 21:50:30.26
>>960
VB6新規インストールは行っていないものの、
レジストリ上の"MS ゴシック"、"MS Gothic"、"msgothic.ttc"を
別のものに変えて試してみたのですが空振りでした。

色々試してみたところ、VB6については、OSの言語に依存しているのではなく、
[コントロールパネル]-[地域と言語のオプション]-[詳細設定]-[Unicode 対応でないプログラムの言語]
の設定に依存していることが分かりました。
また、この項目で「中国語(香港)、(マカオ)、(シンガポール)」を選択すると、
VBEで使用するフォントが必要な状況になるとVB6が強制終了してしまうことが分かりました。
内部でベタで持ってるのかもしれませんね…。

とりあえず、レジストリから取得、取得できない場合はベタ書きにしようと思います。
962デフォルトの名無しさん:2012/01/30(月) 23:31:01.21
961に誤りがあったので、誰かが変に参考にしないように訂正を。

[Unicode 対応でないプログラムの言語]の設定を
「中国語(香港)、(マカオ)、(シンガポール)」にするとVB6が強制終了すると書きましたが
それは英語版VB6の話で、日本語版VB6の場合は問題ありませんでした。
963デフォルトの名無しさん:2012/01/31(火) 21:47:40.78
会社で仕事関係の一切の情報持ち出し、持込禁止になってから止めてたんだけど、PCにVB6インストールしようかなあ。
久しぶりに触りたくなってきた。
964デフォルトの名無しさん:2012/02/01(水) 10:01:00.81
おれはGUIはvb6でしかつくれねーから入れちまった
965デフォルトの名無しさん:2012/02/02(木) 10:30:37.53
そろそろドトネト移行しようよ・・・・
でもメンテとかで久々にVB6触ると限られた環境だからか
色々コーディングするのに頭使って燃えるわ
966デフォルトの名無しさん:2012/02/03(金) 02:17:23.45
久しぶりにVB6のプログラムをメンテしたりすると、よくSet書き忘れるわ
967デフォルトの名無しさん
>>966
ありすぎて困る
ついでにVBに戻ると型から書いたり
今考えるとdimて打つのがめんどくさいなぁ とおもた