[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 02/01 06:17 / Filesize : 260 KB / Number-of Response : 964
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 01:50:27.76 ]
ここは Visual Basic 〜6.0 の質問スレです。
質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。

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

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

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

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

※「まず自分で調べる」クセを身につけよう。

16 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 03:02:52.11 ]
むしろ、継承はないがインターフェースはあるVB6には
DIはぴったりだと思うな。

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

VBはもともと継承が使えない。

17 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 03:05:08.26 ]
VB6での新規案件なんかあるのか?

18 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 03:10:07.03 ]
ああ、コンパイラじゃなくて
別のとこでfsoに代入するコードが書かれてるってことか


19 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 03:18:52.07 ]
>>18
そう。書かれてる。

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

ただし、VB6用のDIコンテはないw

20 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 03:22:28.04 ]
よくわかった

21 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 08:47:23.24 ]
一応、開発にはimplements使ってる。
ListViewとかTreeViewへの表示にはimplementsしたクラスを
利用してる。これだけでもだいぶ助かるけど…

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

VB6やってて不便に思うのは…
引数付きコンストラクタが無い事と、インターフェースのnew実装か。

22 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 11:45:40.71 ]
インターフェースをnewするって意味が分からないけど・・・

引数付きコンストラクタは、適当な関数でも作ればいいと思う。
newして引数を設定する関数でも、newしてクラスのメソッドを呼び出す関数でも。

23 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 11:47:30.26 ]
> Javaだとインターフェースはインターフェースだけで
> その場でインターフェースをnewして、しかもその場で
> 実装を書くことが可能。

あ、無名クラスのことか。
正確にはインターフェースをnewしてるんじゃなくて
名前がないクラス作ってるんだけどな。


24 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 12:34:59.22 ]
VBの場合インターフェース無くても同名のメソッドあれば参照できるんじゃなかったっけ?





25 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 22:42:11.86 ]
インターフェースなくても同名メソッド使えるっていうのは嫌だな。
かといって、インターフェースかぶせても、

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

が、メソッド名になるのも、はっきりいってうっとおしい。

27 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 02:56:19.90 ]
どうでもいいことだけど、些細なミスnew Class2();ね

29 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 04:16:08.27 ]
>>26
> インターフェースなくても同名メソッド使えるっていうのは嫌だな。
そういう言語は他にもあるし(例 JavaScript、Perl)

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

まだまだ経験が足りないようだなw

30 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 04:22:24.58 ]
Javaって
インターフェース名_メソッド名 に
ならないから、
複数のインターフェースで同名のメソッドがあった場合に
困るんだっけ?count()とかありがちなメソッド

31 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 04:38:54.04 ]
vbは優秀だな

32 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 14:16:00.62 ]
まあVB6はともかく、VB.NETのインターフェイスの仕組みは良くできてる。
こればっかりはC#より良い。

33 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 15:20:47.28 ]
VB6のインターフェイスはCOM相互運用のための機能だからああゆう形になるのは仕方が無いね。
VB6のインターフェイスの宣言は中身(実装)の無いクラスを使うことが多いけど、
IDLも使えるあたりもろにCOM相互運用のためのものと分かる。
>>32
VB.NETのインターフェイスは実装のときに
C#の明示的実装のような書き方になるのであんまり好きじゃないけど、
良くできてると思うのはなぜ?

34 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 15:47:40.04 ]
>>33
例えばC#の場合、インターフェイスのメンバーを、

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

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

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

www.atmarkit.co.jp/fdotnet/onepoint/onepoint01/onepoint01_02.html



35 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 00:04:56.75 ]
なんか珍しくオブジェクト指向っぽいスレの流れになってるので
この流れで質問させてほしい。

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

普通にゲッタとセッタで実装できそうなのに、なんでプロパティ用の
アクセッサの書き方があるの?

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

もう一つはプロパティとメソッドが機械から区別できた方がいい事があるから。
例えばVB6でも.NETでもGUIアプリのデザインをデザイナでデザインできるのはこのため。

37 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 05:27:47.95 ]
>>35
メソッドと同じ書式でいちいちゲッタセッタを書くのが面倒だから。
プロパティならとりあえず変数として宣言しておいて、
あとで気が変わったときにゲッタセッタ(プロパティ)を書けば済む。

38 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 13:55:12.47 ]
>>37
答えになってないでしょ。
何故Bが必要かと聞いているのに、何時でもAはBに変更できるからってそれ何だよ。

39 名前:デフォルトの名無しさん [2011/05/03(火) 15:41:07.99 ]
レスキュー花ちゃんはありがたいね

40 名前:デフォルトの名無しさん mailto:sage [2011/05/03(火) 15:51:32.83 ]
わざわざ上げてまで今それを言う理由が理解できない。

あそこは今でも一部tipsは有料でやってるのかな。
そりゃ人がどんな商売しようと自由だけど、個人的にはケツの穴が小さいなと思わずにいられない。

41 名前:デフォルトの名無しさん [2011/05/05(木) 16:01:42.55 ]
コマンドライン引数で日本語パス・ファイル名を受け付けないソフトって諦めるしかない?
渡すファイルを、一旦、日本語を使わないパス・ファイル名にコピーしてから渡す回避策はあるけれど

42 名前:デフォルトの名無しさん mailto:sage [2011/05/05(木) 19:21:33.46 ]
>>35
> 普通にゲッタとセッタで実装できそうなのに、なんでプロパティ用の
> アクセッサの書き方があるの?

人間の感覚だろうなぁ。

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

だけど、これ、ゲッタ、セッタで置き換え可能。
つまり実装するにあたって属性というものは必要ないということになるが、
やっぱり属性ってのは、メソッドとは別ものと人間は考えてしまうようだ。


43 名前:デフォルトの名無しさん mailto:sage [2011/05/05(木) 22:11:51.68 ]
>>35
オブジェクト指向の話になるとオブジェクト指向論と
オブジェクト指向言語の実装についての話がごっちゃになるんだが
メッセージパッシングをメソッド呼び出しで実装したと考えれば
外部公開属性はやっぱ別にしたい


44 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 02:18:50.27 ]
ゲッタ・セッタでは

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

object.setProperty(object.getProperty()+1) こうなる。



45 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 03:06:00.34 ]
VB6にインクリメントの演算子なんてあったっけ?

46 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 15:30:58.47 ]
>>44
>object.property++ なんて書き方ができない

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

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

この方が安全といえば安全と思う。

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

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

ついでに変数をPublicにしたのでは値の取得または設定時に動作を絡ませることができない。

48 名前:デフォルトの名無しさん mailto:sage [2011/05/08(日) 00:32:37.20 ]
インターフェースを変えることなく、
感覚通りに名前をつけられるのが
プロパティのいいところ。

49 名前:デフォルトの名無しさん mailto:sage [2011/05/08(日) 01:42:29.37 ]
>object.setProperty(object.getProperty()+1)
こういうのは
object.addProperty(1)
を作ればいいのでは

50 名前:デフォルトの名無しさん mailto:sage [2011/05/08(日) 17:27:14.50 ]
>>49
まあそれが妥当だろうね。

51 名前:デフォルトの名無しさん mailto:sage [2011/05/08(日) 18:03:11.90 ]
どこが妥当だよw

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

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

ちなみにaddHogeでは「Hogeを足す」になってしまわないか?

52 名前:デフォルトの名無しさん mailto:sage [2011/05/08(日) 19:09:44.58 ]
必要なメソッドは必要な時に記述

53 名前:デフォルトの名無しさん mailto:sage [2011/05/09(月) 00:15:16.20 ]
まずプロパティが100あるっていう前提からしてアホっぽいが
>addHogeでは「Hogeを足す」
まさにそういうメソッドだろう

54 名前:デフォルトの名無しさん mailto:sage [2011/05/09(月) 00:25:56.79 ]
いい歳こいて日本語の「てにをは」が使えないのは恥ずかしいよ。
「Hogeに足す」と「Hogeを足す」の違い分かる?



55 名前:デフォルトの名無しさん mailto:sage [2011/05/09(月) 00:37:15.56 ]
んなもんHogeが実際なんなのかによるだろうと思うが
気にいらんかったらaddHogeValueでもaddHogeCountでも
好きに作ったらええがな

56 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 13:59:16.81 ]
VB2003の質問はここでよろしいでしょうか?

57 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 15:32:38.22 ]
ここはVB6まで

58 名前:デフォルトの名無しさん mailto:sage [2011/05/13(金) 21:57:56.25 ]
プロパティに自由にアクセスできてしまうっていうのはどうかと思うぞ。


59 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 01:39:31.35 ]
>>58
それは、ゲッターとセッターの両方をつけるのと何が違うんだ?

60 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 06:46:10.74 ]
>>59
ゲッター/セッターなら、変な値を設定できないようにしたり、
読み出された回数数えたりできるよ。

61 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 09:34:59.88 ]
フレックスグリッドコントロールを使ってるんですが、
エクセルみたいにセルの下や右だけ罫線の色を変える、みたいなことはできないんですか?


62 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 10:15:51.49 ]
付属のMSフレックスグリッドでは出来ないけど
フレックスグリッド系コントロールの中には、それが出来るものもある
当然、無料じゃないけどな

あとはラインとかピクチャーコントロールとかに色つけて重ねて
擬似的に実装するとかな

63 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 16:42:05.71 ]
>>60
プロパティプロシージャでもできるやろ

64 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 18:15:27.31 ]
>>63
>>59



65 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 18:23:24.27 ]
>>58以降の流れはどれも何が言いたいのかさっぱり分からん。
特に>>64
個人的にはこういうのは他人がエスパーだと思ってるとしか思えん。

66 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 18:55:36.41 ]
理解したくなければ放置しとけば言いし、
理解したいなら「どういうこと?」って聞けばいいのに。

67 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 13:19:30.97 ]
ファイルサイズ取得ってこんな感じで問題ない?問題ある?

With New FileSystemObject
filesize = .GetFile(filepath).Size
End With

68 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 13:33:41.86 ]
実装してみて実際のファイルサイズを取得してみて合ってるならそれでいいのでは?

69 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 13:53:05.69 ]
okわかった。ありがと

70 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 17:31:59.11 ]
ちゃんと8Gオーバーくらいのサイズで試さないとね

71 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 19:44:45.24 ]
>>67
またWithでNewか。いいけど。

72 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 00:06:52.59 ]
えー、With Newって書き方は初めて見た。
これって、End Withで解放されるの?
ガーベジコレクション的にも大丈夫?

ところで皆さんはガーベジコレクションって言いますか?
ガーベッジコレクションって言いますか?

73 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 18:55:36.37 ]
>>72
End Withの後、アクセスしようが無くなって、たぶんメソッド抜けた時点で開放されるかな。

74 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 22:21:37.18 ]
そういうメモリから解放されたかどうかって知るすべあるの?



75 名前:デフォルトの名無しさん mailto:sage [2011/05/18(水) 07:15:17.07 ]
>>74
自作クラスでやるなら、簡単だよな?

76 名前:デフォルトの名無しさん mailto:sage [2011/05/18(水) 17:14:53.76 ]
おせーてくらさい

77 名前:デフォルトの名無しさん mailto:sage [2011/05/18(水) 19:38:30.99 ]
>>76
terminateイベントプロシージャにDebug,Print "hoge"とでも書けば

78 名前:デフォルトの名無しさん mailto:sage [2011/05/19(木) 01:03:58.16 ]
dd
なるほど

79 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2011/05/20(金) 15:31:26.12 ]
VBを今のところ、ただ勉強目的で始めたいのですが、VBの何をまずダウンロードすればいいのか、わかりません。教えてください。

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

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

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

以上を踏まえ、どなたか何とぞ、お教えねがいます。

81 名前:デフォルトの名無しさん mailto:sage [2011/05/20(金) 16:06:07.83 ]
>>80
スレ違い

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

VB.NET質問スレ(Part36)
hibari.2ch.net/test/read.cgi/tech/1301828549/

82 名前:デフォルトの名無しさん mailto:sage [2011/05/20(金) 16:15:50.20 ]
ftp://ftp.microsoft.com/softlib/
このサイトのMSLFILESにあるVB6用のサンプルプログラムってVB6やるからには見ておいたほうがいいの?

83 名前:デフォルトの名無しさん mailto:sage [2011/05/20(金) 17:55:11.04 ]
ftp://ftp.microsoft.com/のdeveloprフォルダ

84 名前:デフォルトの名無しさん mailto:sage [2011/05/20(金) 17:58:13.02 ]
ftp://ftp.microsoft.com/deskapps/games/public/でゲームでも探して炉



85 名前:デフォルトの名無しさん mailto:sage [2011/05/20(金) 18:06:50.49 ]
なにがしたいんだよ

86 名前:デフォルトの名無しさん mailto:sage [2011/05/21(土) 23:03:28.32 ]
フォーム上のコマンドボタンを押すと1行目に『ビート』、2行目に『たけし』とリストボックスに追加されるプログラムがある。【@】、【A】を埋めて完成させよ。リストボックスのオブジェクト名は『List1』とする。

Private Sub Command1_Clic()

List1.【 @ 】
List1.【 A 】

End Sub


87 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2011/05/21(土) 23:24:53.29 ]
先生、コマンドボックスってなんですか?

89 名前:デフォルトの名無しさん mailto:sage [2011/05/21(土) 23:46:50.70 ]
Redim Preserveだが…なんでこんな問題作ってんの?

90 名前:デフォルトの名無しさん mailto:sage [2011/05/22(日) 00:57:54.89 ]
学校の宿題なんだろ

91 名前:デフォルトの名無しさん mailto:sage [2011/05/22(日) 01:13:59.00 ]
「値を保持したまま」とは書いてないから、ReDimだけで良いのでは?
値の保持が必要ないなら、ReDim Preserveは遅いだけだし

92 名前:デフォルトの名無しさん mailto:sage [2011/05/22(日) 03:21:05.03 ]
Hairetu()(笑)

93 名前:デフォルトの名無しさん mailto:sage [2011/05/22(日) 16:34:01.94 ]
Haiyoru(笑)

94 名前:デフォルトの名無しさん mailto:sage [2011/05/22(日) 17:11:34.88 ]
ググればすぐわかるような基本構文問題には答えんなよw



95 名前:デフォルトの名無しさん mailto:sage [2011/05/22(日) 20:22:20.71 ]
>>86
先生!なに入れてもコマンドボタンが反応しません!

96 名前:デフォルトの名無しさん mailto:sage [2011/05/22(日) 21:00:12.41 ]
確かにあれじゃ反応しないなw
なんてマのヌケた出題なんだろう…

97 名前:デフォルトの名無しさん mailto:sage [2011/05/24(火) 23:15:18.09 ]
1つの配列の中に重複するデータが多数ある
重複するデータを抜き出したい
A,B,A,B,A,A,C,F,C....
欲しいデータは重複データなので上記の場合
A,B,Cとなります
unique以外を取得したいのです

98 名前:デフォルトの名無しさん mailto:sage [2011/05/25(水) 01:01:19.38 ]
>>97
ソートしてから、2つ以上同一の値が連続しているものを抜粋する
Filter掛けて、戻り値のUBoundが1以上のものを列挙する
連想配列を利用する

いろいろ方法はあるので、お好きな物をどうぞ

99 名前:デフォルトの名無しさん mailto:sage [2011/05/25(水) 01:02:11.41 ]
便利なコマンドがVB6以前に存在するのかを尋ねているのか
最速アルゴリズムを尋ねているのか

100 名前:デフォルトの名無しさん mailto:sage [2011/05/25(水) 01:30:36.51 ]
じゃあ両方で

101 名前:デフォルトの名無しさん mailto:sage [2011/05/25(水) 01:34:08.95 ]
99に期待

102 名前:97 mailto:sage [2011/05/25(水) 07:51:55.31 ]
>>98
連想配列でぐぐってきた!
連想配列が何か分かったけど、どうアルゴリズム化していいかわかんねw

>>99
uniqueの逆の関数があれば1番良かったんですけど、なさそうなのでアルゴリズムです

103 名前:97 mailto:sage [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


104 名前:97 mailto:sage [2011/05/25(水) 12:59:17.07 ]
>>103
最後のmsgboxはゴミです




105 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2011/05/25(水) 19:45:31.84 ]
perlだと1行で簡単にできる式があったような気がしたw

107 名前:デフォルトの名無しさん mailto:sage [2011/05/25(水) 19:53:16.45 ]
で?

108 名前:デフォルトの名無しさん mailto:sage [2011/05/25(水) 19:54:26.43 ]
そういや7年くらい前にperlの連想配列と同じことができるVBのクラスを作った記憶があるw

109 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2011/05/25(水) 20:42:36.81 ]
何、この子?

111 名前:デフォルトの名無しさん mailto:sage [2011/05/25(水) 23:23:18.20 ]
ほうほう。それでそれで?

112 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2011/05/26(木) 02:06:32.87 ]
>>97
>>103を見るかぎりhogeArrayの中身は

114 名前:97 mailto:sage [2011/05/26(木) 08:41:35.84 ]
>>105
重複処理でuniqueします



115 名前:デフォルトの名無しさん mailto:sage [2011/05/26(木) 13:00:44.16 ]
VBで動的連想配列ってできるんですか?
ググっても見付かりません

116 名前:デフォルトの名無しさん mailto:sage [2011/05/26(木) 13:12:22.09 ]
ttp://7ujm.net/VB/VB6MAP.html






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<260KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef