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

VBプログラマ質問スレ(6.0以前) Part51

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/01/28(日) 10:57:31
ここは 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/

※「まず自分で調べる」クセを身につけよう。
0478デフォルトの名無しさん2007/03/04(日) 21:46:23
>>472
http://d.hatena.ne.jp/keyword/%CA%D1%BF%F4
http://d.hatena.ne.jp/keyword/%B0%FA%BF%F4
0479デフォルトの名無しさん2007/03/04(日) 21:49:12
>>474
流れ作業的に羅列している点と、引数に関する根本的な勘違い
それ以外は適当じゃないかと

・変数
 :データを記憶するもの
・引数
 ・実引数
 :メソッド/関数に与えるデータ
 ・仮引数
 :メソッド/引数に与えられたデータ
0480デフォルトの名無しさん2007/03/04(日) 22:17:40
>>477>>478>>479
皆さんありがとうございます!皆さんの意見を聞いて自分なりに
考えてみたのですが、ネットであった例題をパクっていうと、
オブジェクトが「テレビ」でメソッドが「画面を映す」「チャンネルを変える」
という操作で、「チャンネルの番号」や「いろんな番組の画面」が引数になるのですか?
もし全然違うことを言ってたらすみません。。。
※変数は完璧分かりました!ありがとうございます!
0481デフォルトの名無しさん2007/03/04(日) 22:29:33
>>480
オブジェクト指向の表面をなぞった理解だと、猫とかイヌとか人とか出てきて抽象化だとか多様化だとかが織り交ぜられるだけ
もっと単純で奇怪だよ

現実問題を片付けられるほど"オブジェクト指向"プログラミングに馴れた人間はそう居ないし、実際オレも良く説明できない
(クラスベース-OOPとメッセージベース-OOPなんて区別がつく?)

ってな分けで、無理やり現実問題を引っ張り出して頭を回すよりも、もっと単純で分かりやすい方法を教えるよ

           コーディングしてろ。
0482デフォルトの名無しさん2007/03/04(日) 23:32:52
>>481
ありがとうございます。例えを探すよりまずコーティングしてみようと思います。
落ち着いてみると考えすぎて露点がずれていました。
あの、引数って()内に書かれているものですか?
すみません。よろしくお願いします。
0483デフォルトの名無しさん2007/03/05(月) 07:52:28
>>482
で、コードはどこいった?
0484デフォルトの名無しさん2007/03/05(月) 15:00:55
引き算の答えをラベルに入力しようとすると
文字型になってしまい、引き算の答えが入力できません。

ラベルを数値型にするにはどうしたらいいですか?
0485デフォルトの名無しさん2007/03/05(月) 15:05:29
a = int(text)
0486デフォルトの名無しさん2007/03/05(月) 15:19:50
>>484
演算の時だけCIntなりCDblなりValなりで数値にしろwww
0487デフォルトの名無しさん2007/03/05(月) 18:23:42
VB6とVBSで実装できて、文字列配列を安定ソートできる一番速いアルゴリズムって何ですか?
配列は二次元配列ですが、ソートのキーとなるのは一次元のみです。

とりあえず一次元配列用のマージソートサンプルを拾ってきて、二次元で使えるように書き換えてみたのですが
もっと高速なソートアルゴリズムがあったら、名前だけでもいいので教えてください。
0488デフォルトの名無しさん2007/03/05(月) 18:30:20
日本語でオッケって書かれるよw
なんだよ、二次元配列のソートって。
四角形の中でどこが始点(終点)か答えよ、ってのと同じ愚問にしか思えんけどw
0489デフォルトの名無しさん2007/03/05(月) 18:56:03
>>488
先にも書いた通り、キーは一次元です。
あなたの例えは、二次元配列の全要素を同列のキーとした場合の話ですね。
二次元配列の全要素をキーとする場合でも、軸と優先順を決めればきちんとソート出来ますし。
0490デフォルトの名無しさん2007/03/05(月) 18:58:36
>>487
クイックソートは?
0491デフォルトの名無しさん2007/03/05(月) 19:05:53
>>487
>>490の言うようにクイックソートが安定ソートのうち定評高いもの
ただ文字列ソートの場合ネックになるのは文字列の大小判定じゃないのか?
そっちはどうでもいい?
0492デフォルトの名無しさん2007/03/05(月) 19:07:21
>>489
だからそれが日本語でオッケだってのw
こういう自分以外はエスパーだと思ってるおめでたい奴って救い難いな。
0493デフォルトの名無しさん2007/03/05(月) 19:10:51
>>492
そこは突っ込まないでやろうぜ
彼なりに考えがあるんだよ(´・ω・`
0494デフォルトの名無しさん2007/03/05(月) 19:15:19
クイックソートって安定だっけ?
0495デフォルトの名無しさん2007/03/05(月) 19:16:53
>>490-491
伝わる人には伝わってるようで良かったです。
しかしクイックソートは安定ソートではないという記述があるのですが。アルゴリズム的に見ても、不安定ソートっぽいですし。
それと大小文字判定は無視していただいて結構です。文字列と言ってもキーに使われてる文字種は数字と英大文字と記号なので。

ttp://ja.wikipedia.org/wiki/%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF%E3%82%BD%E3%83%BC%E3%83%88
> 安定ソートではない。
ttp://www.th.cs.meiji.ac.jp/2005/omoto/quicksort.html
> 安定ソートではない、といったデメリットもある。
ttp://user.ecc.u-tokyo.ac.jp/~tt37103/tips/f90/macro_quick_sort_primitive.html
> 不安定ソートです。
0496デフォルトの名無しさん2007/03/05(月) 19:20:39
とりあえずwikiだよ(´・ω・`つ http://ja.wikipedia.org/wiki/Category:%E3%82%BD%E3%83%BC%E3%83%88

>>495
wikiにも載ってるけど安定ソートにする方法はあるよ
シェーカーソートとかいう面白いのもあるから試してみるのもいいかもね
0497デフォルトの名無しさん2007/03/05(月) 20:32:53
>>495
いや絶対伝わってないからw
その証拠に誰も抽象的にソートというアルゴリズム一般にしか触れてないじゃん。
0498デフォルトの名無しさん2007/03/05(月) 20:36:12
>>497
いやだからそっとしておいてあげて
  ∧_∧ 
  ((.;.;)ω;)=つ≡つ 
  (っ ≡lヽ,,lヽ 
  /   (    )
 ( / ̄と.、   i 
      しーJ 
0499デフォルトの名無しさん2007/03/05(月) 20:40:25
>>497
アルゴリズム一般の名前だけでいいって書いてるからねぇ
0500デフォルトの名無しさん2007/03/05(月) 21:01:52
速度求めるのにVBで実装しようとしてる時点で痛い。

COMなりCなりタイプライブラリなり勉強しろ。
0501デフォルトの名無しさん2007/03/05(月) 21:18:45
>>500
さようなら
0502デフォルトの名無しさん2007/03/05(月) 21:36:35
クイックソートって変態的に速いよな。
なんであんな方法で結果的にソートされていくのか不思議だ。

>>500
コボルや機械語で組めばCOM使ったりCで書くより比べもんにならないほど速くなるぜ
0503デフォルトの名無しさん2007/03/05(月) 21:44:31
この前おいらが機械語で組んだときなんか、無限ループを5秒で抜けたぜ。
0504デフォルトの名無しさん2007/03/05(月) 21:47:23
さすが機械語はファジーだな
0505デフォルトの名無しさん2007/03/05(月) 21:49:04
ハッカー精神があるならObjPtr()でオブジェクトのアドレス引っ張ってそこから目的の関数のメモリ領域を機械語で侵食する
とかいう記事を昔読んだことがある
0506デフォルトの名無しさん2007/03/05(月) 21:57:05
なぜVBで組むのか?

そこにVBがあるから
0507デフォルトの名無しさん2007/03/05(月) 21:58:12
>なんであんな方法で結果的にソートされていくのか不思議だ。
おいおい本気か。
かなり直観的に動作が理解できるアルゴリズムじゃん。
0508デフォルトの名無しさん2007/03/05(月) 22:01:43
いやね、今wiki見て勉強してるんだけど

>初期データ: 8 4 3 7 6 5 2 1
>
>中央付近に位置する7をピボットとする。左から7以上を探索して8を発見。右から7以下を探索して1を発見。前者が左にあるため入れ替え。
>1 4 3 7 6 5 2 8

ここまでは分かるんだけど

>次の位置から探索を継続。7と2を発見して入れ替え。
>1 4 3 2 6 5 7 8

ここがちょっとわかんなくて。

�@ピボットとして一つ選びそれをPとする。
�A左から順に値を調べ、P以上のものを見つけたらその位置をiとする。
�B右から順に値を調べ、P以下のものを見つけたらその位置をjとする。
�Ciがjより左にあるのならばその二つの位置を入れ替え、2に戻る。ただし、次の2での探索はiの一つ右、次の3での探索はjの一つ左から行う。

i = 1, j = 8 だから、
次は4と2がソートされるんじゃないの・・?  ってとこで悩んでる
0509デフォルトの名無しさん2007/03/05(月) 22:07:39
機械語でコード組むプログラムをVBで作ればいいじゃないか。
05105082007/03/05(月) 22:10:09
左からはピボット以上の数か。
ごめん理解した。
0511デフォルトの名無しさん2007/03/05(月) 22:24:59
VBでやるならデータベースに接続するのが一番スマートなやりかた
0512デフォルトの名無しさん2007/03/05(月) 22:32:09
つ リストボックス
0513デフォルトの名無しさん2007/03/05(月) 22:42:35
一方、ODBCやリストボックスはバブルソートを使った。
0514デフォルトの名無しさん2007/03/05(月) 23:04:26
元の順番を第二キーとして保持して、第一キーが同じなら第二キーで
比較判断すればクイックソートでも安定させられるやん。
0515デフォルトの名無しさん2007/03/05(月) 23:06:35
>>514
で?
0516デフォルトの名無しさん2007/03/05(月) 23:07:58
いえなにも
0517デフォルトの名無しさん2007/03/05(月) 23:10:17
いやそんな無駄なことしなくても一つの列を2つの列に分割・再構成する時に
スキャンした順番で再構成するだけだよ
0518デフォルトの名無しさん2007/03/05(月) 23:13:51
で?
0519デフォルトの名無しさん2007/03/06(火) 00:15:35
コメントの自動挿入やウインドウのタブ化など
めっさ当たり前のように使われているアドインツールですが、
くっと作業効率がうpする皆様お勧めのアドイン、ありませんか?
ええのがあったら教えてください。
0520デフォルトの名無しさん2007/03/06(火) 12:15:54
バブルソート大好きな俺が来ましたよ〜〜〜
0521デフォルトの名無しさん2007/03/06(火) 12:17:38
バブルソート大好きな俺は帰りますね〜〜〜
0522デフォルトの名無しさん2007/03/06(火) 17:17:42
そういえば再帰ソートは、非再帰にしてやると大抵いくらか速くなるよな。
0523デフォルトの名無しさん2007/03/06(火) 21:14:52
泡風呂大好きなオレがきましたよ〜
0524デフォルトの名無しさん2007/03/06(火) 21:26:50
泡姫大好きです!
0525デフォルトの名無しさん2007/03/06(火) 21:54:30
だから6.0ユーザはレベルが低いっていわれるんだよ…
0526デフォルトの名無しさん2007/03/06(火) 21:56:22
>>525
よくいう。レベルの高い講義を示せ。
0527デフォルトの名無しさん2007/03/06(火) 22:07:12
>>1
0528デフォルトの名無しさん2007/03/06(火) 22:23:06
>>525
なんという釣り m9(^Д^)
0529デフォルトの名無しさん2007/03/06(火) 22:26:50
すいません,質問よろしいでしょうか?
今,VB6.0を使っています.
picturebox内にグラフを描いた後に,
SavePicture Picture1.Image, FileName & ".bmp"
の文を使って,pictureboxの画像を保存しようとしているのですが,
グラフの線は残らず背景のみが保存されてしまいます.
保存の仕方が悪いのでしょうか?どのように変更すればグラフの線も保存されるようになるでしょうか?
よろしくお願いします.
0530デフォルトの名無しさん2007/03/06(火) 22:44:40
グラフの線がバックグラウンドとか?

あれ・・関係なかったっけ?
要はImageオブジェクトに描画されてないって事だと思うんだけど・・・
0531デフォルトの名無しさん2007/03/06(火) 22:52:07
>>530
529です.回答ありがとうございます.
今,いろいろ試していたのですが,Pictureboxのプロパティで
AutoredrawをTrueにすることで線も保存する事ができるようになりました.
ありがとうございました.
0532デフォルトの名無しさん2007/03/06(火) 22:54:33
AutoRedraw = Trueでないと絵画されたことにならんよ
ためしにFalseの状態で絵画→ウインドウを最小化→元に戻してみるといい
0533デフォルトの名無しさん2007/03/07(水) 00:44:09
フォルダ選択ダイアログを使用したくて、SHBrowseForFolderの使い方を調べて
一応、動くものが出来たのですが、ダイアログの表示位置をどうやって指定すれ
ばよいかわかりません。
どなたかご存じの方、いませんか?
0534デフォルトの名無しさん2007/03/07(水) 00:55:25
起動時の表示位置は指定できないから
表示させてから移動させれば良いのさ
0535デフォルトの名無しさん2007/03/07(水) 01:57:53
>>534
すみません。
それは、コールバック関数の中で処理をするということになりますか?
0536デフォルトの名無しさん2007/03/07(水) 02:19:32
6.0ってサブスクライバで無料DLできるのか?
0537デフォルトの名無しさん2007/03/07(水) 02:30:25
http://www.microsoft.com/japan/msdn/subscriptions/topics/VB6.aspx
0538デフォルトの名無しさん2007/03/07(水) 02:38:09
>>537
ログインしてもどこからDLするのか分からん
URLキボン
0539デフォルトの名無しさん2007/03/07(水) 02:47:56
おいらサブスクライバじゃねーからログインできないヨ。
0540デフォルトの名無しさん2007/03/07(水) 02:53:37
サブスクライバって有料会員じゃねーの?
0541デフォルトの名無しさん2007/03/07(水) 10:48:39
>>319
0542デフォルトの名無しさん2007/03/07(水) 11:55:39
MSDN 会員 (マイクロソフト認定パートナー、プレミアサポートご契約者含む) の内、「ユニバーサル」、「エンタープライズ」、「プロフェッショナル」、「オペーレーティング システム」の各サブスクリプション レベルに該当する MSDN 会員のみがご利用いただけます

これってどうやって登録するの?LiveIDじゃないよね?
0543デフォルトの名無しさん2007/03/07(水) 12:00:01
>>542
年間百万単位のお金を寄付すると会員になれます
0544デフォルトの名無しさん2007/03/07(水) 12:12:53
電話しないと会員IDもらえないんじゃなかったっけ?
0545デフォルトの名無しさん2007/03/07(水) 12:30:23
>>543
そんなにしないプランもあるよw
まあ開発ツールもダウン可能なエディションはフツーの人が手を出しにくい
価格なのは間違いないけど。
0546デフォルトの名無しさん2007/03/07(水) 13:40:58
MSDNは会社に買わせるものと相場が決まっておる
0547デフォルトの名無しさん2007/03/07(水) 14:31:01
Visual Basic 2005 Express Editionを無償公開してるのにVB6.0を一般公開しないのも意味不明だな
0548デフォルトの名無しさん2007/03/07(水) 14:48:36
>>547
わかりやすいと思うけどw>VB2005への誘導
0549デフォルトの名無しさん2007/03/07(水) 14:58:30
VB2005はごちゃごちゃしてて使いにくい。
0550デフォルトの名無しさん2007/03/07(水) 15:06:58
VB2005ってネイティブな実行ファイルもはき出せるの?
ここで聞くのもなんだけど・・・
0551デフォルトの名無しさん2007/03/07(水) 15:18:31
ネイティブっちゃネイティブかな・・・.NETネイティブ。
0552デフォルトの名無しさん2007/03/07(水) 15:48:29
>>550
VB2005で作った実行ファイルは
WindowsVistaのネイティブ環境で実行出来るよ。
0553デフォルトの名無しさん2007/03/07(水) 16:39:55
2005で作られた有名なアプリってなにがある?
0554デフォルトの名無しさん2007/03/07(水) 17:19:23
>>550
聞いたこと無い
ngenもキャッシュ作るだけだしもう聞かなくなったし

質問なんだがなぜネイティブを聞いたのか聞きたい
0555デフォルトの名無しさん2007/03/07(水) 17:59:34
>>554
Win95のOSとかで.net無しで動くプログラム使えるのかな?っと
VB6.0もう売ってないし
0556デフォルトの名無しさん2007/03/07(水) 18:00:38
>>555
×使える
○作れる
0557デフォルトの名無しさん2007/03/07(水) 18:03:13
95はサポート外にすればいいしVB6ほしければ金を出せばいいし.Netも実行時はネイティブだし
何の問題もない
0558デフォルトの名無しさん2007/03/07(水) 18:08:22
>>555
ああ、ネイティブじゃなくて.NETの実行時の依存を少なくしたいのね
これはもう無理だから、.netアプリケーションを古いWin機で動かそうとするのは無茶だと思うよ
Win95をターゲットOSとするなら、VC7で.NET使わない(CLI?)のとか、DelphiくらいがVBに似てていいと思う

しかしスレ違いなのでここまで
0559デフォルトの名無しさん2007/03/07(水) 20:58:03
Win95って動くハードウエア売ってるの?
あ、そうか、仮想化すればいいのか。
0560デフォルトの名無しさん2007/03/07(水) 21:36:56
すみません、お聞きしたいのですが
VB6.0で例えばMSCOMMのコンポーネントを使っていたらMscomm.ocxをシステムフォルダに入れなくてはいけませんよね?
dllとかocxをexeファイルに包括して一つのexeファイルだけで済むようにとか出来ないんですかねぇ・・
0561デフォルトの名無しさん2007/03/07(水) 21:43:46
MSCOMMを使わずにAPIを使えば一つにできないこともないだろうが
そこまでして一つにしたいのか
0562デフォルトの名無しさん2007/03/07(水) 21:49:35
>>561
お前は何をいっているのだ。
0563デフォルトの名無しさん2007/03/07(水) 21:56:22
理解できなかったかな?
0564デフォルトの名無しさん2007/03/07(水) 22:09:45
それってライセンス的にOKなわけ?
0565デフォルトの名無しさん2007/03/07(水) 22:14:23
>>560
できないんです><

しかも多分システムフォルダにおくだけじゃむり
Side-By-Sideは同フォルダにおく必要があるし、特定環境じゃないとそもそもSBSは機能しない
おとなしくディストリビューションウィザード使うといいんでないか?
0566デフォルトの名無しさん2007/03/07(水) 22:14:54
システムフォルダじゃなくてもEXEを同階層に置けば動くからEXEに纏める必要はないのでは。
ただし>>564
0567デフォルトの名無しさん2007/03/07(水) 22:15:11
二つの意味にとれるが、とりあえず
ライセンスがダメだったら世の中のインストーラー作成プログラムはすべてNGだな
0568デフォルトの名無しさん2007/03/07(水) 22:31:27
ラベルに文字を入れる場合
右寄せや中央に寄せることはプロバティでできるのですが
縦の位置を合わせることはできるのでしょうか?
0569デフォルトの名無しさん2007/03/07(水) 22:31:54
ダイアログを何も出さないセットアッププログラムをexeにして、
内包しているMSCOMMをインストール、その後テンポラリにでも
本来の実行ファイルを展開し、そこで実行。

#Vistaでの動作は保証しかねる
0570デフォルトの名無しさん2007/03/07(水) 22:33:45
>>568
VB標準のライトウェイトコントロールであるLabelにはそのような機能は存在しません。
せいぜい改行でごまかすくらいです。
0571デフォルトの名無しさん2007/03/07(水) 22:33:49
>>568
不可。
上手く中央に見えるようにがんばるしかない
0572デフォルトの名無しさん2007/03/07(水) 22:34:53
ど
こ
を
縦
読
み
?
0573デフォルトの名無しさん2007/03/07(水) 22:35:01
>>570
>>571

ありがとうございます
05745602007/03/07(水) 22:52:26
>>561さんの言うようにコンポーネント使わずAPI使って自分で作れば出来るんですかね?
作ったPGがdll、ocxがやたら多かったもんで、スマートに出来ないものかなぁと思いまして・・
回答いただきありがとう御座いました
0575デフォルトの名無しさん2007/03/08(木) 12:21:39
VB2005って.NET使わなかったらVB6と同じなの?
0576デフォルトの名無しさん2007/03/08(木) 12:27:20
>>575
シニカルな意味では同じ。
君の回答に答えるとすれば、違う。
0577デフォルトの名無しさん2007/03/08(木) 17:15:09
Dim A As Integer
Dim B As Single
A = 30
B = 0.4
lblS = A / B

とすると
lblSには75が入るの予定ですが、
lblSに変な小数点の数値が入ってしまいます。

どうしてでしょうか?
■ このスレッドは過去ログ倉庫に格納されています