X



古代VBプログラマ質問スレ(Ver.6.0 まで) part65 [転載禁止]©2ch.net

0001デフォルトの名無しさん
垢版 |
2015/08/30(日) 19:25:35.12ID:ZYoWCo0d
ここは古代に使われていた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/

前スレ VBプログラマ質問スレ(Ver.6.0 まで) part64
http://peace.2ch.net/test/read.cgi/tech/1393069842/

※「まず自分で調べる」クセを身につけよう。
0208デフォルトの名無しさん
垢版 |
2015/11/26(木) 12:17:17.74ID:ihWl0nOX
あなたが苦労して取得した資格の平均最低月給ランキングは第何位?
民間や国家が認定している仕事の資格や免許。
その求人雇用市場での価値が一目瞭然で分かる。
(全求人情報平均最低月給196,500円)

ぼくらニッポンの民間・国家資格別平均最低月給ランキングはこれだ!

http://jobinjapan.jp/license/
0214デフォルトの名無しさん
垢版 |
2015/11/26(木) 15:17:29.25ID:tFP+JHDf
VB6プログラマがインターフェイスとか背伸びすんな。
おまえらは長年寝かした秘伝のソースを改修すればいいんだよ。
0215デフォルトの名無しさん
垢版 |
2015/11/26(木) 16:14:44.66ID:uG3Gqvd0
VB6ってしばらく触っていないが、知らんうちにスゴイことになっているようだ
インターフェースの継承って一体どんなものなんだろう?
もしかするとインターフェースに抽象クラスの機能でも付いているのかな
0216デフォルトの名無しさん
垢版 |
2015/11/26(木) 16:26:22.56ID:8ZZhqZvl
抽象クラスの定義は中身が無いメソッドが少なくとも1つは含まれていることが条件だから
インターフェースは、すべて中身が無いメソッドので、抽象クラスでもあるよ。
0218デフォルトの名無しさん
垢版 |
2015/11/26(木) 16:34:08.38ID:8ZZhqZvl
そりゃな。

C++では逆にインターフェースはなくて
抽象クラス代用してるし。
0219デフォルトの名無しさん
垢版 |
2015/11/26(木) 16:53:11.94ID:wjty/3s6
>>215
> インターフェースの継承って一体どんなものなんだろう?
本気で言ってるのかネタなのか区別つかんが、VB6/VBAでImplements IFooを
「インタフェース継承」あるいは「インタフェースを継承する」と言う人が結構いるってだけの話

あと、Javaクラスタの人にもいるみたいだ
0220デフォルトの名無しさん
垢版 |
2015/11/26(木) 16:57:24.57ID:wjty/3s6
あー、調べたら、Javaの方は本当にインタフェースの継承だった

interface A {
  void write(String str , int synchro);
}

interface B {
  String third = "逃げちゃだめだ";
}

interface C extends A , B {
  void write(String str);
}
0221デフォルトの名無しさん
垢版 |
2015/11/26(木) 17:10:55.56ID:NexaTKB1
実装継承ができない言語ならまだしも
実装継承とインタフェースの両方が使えるのに
あえてインタ^フェースを選択する人って一体?
0222デフォルトの名無しさん
垢版 |
2015/11/26(木) 17:27:04.53ID:WC2OrCem
JavaはInterfaceに実装も書けるようになってる
AbstractClassと重なる部分をマスクとして除けば、Interfaceの意味はより明確になった
0223デフォルトの名無しさん
垢版 |
2015/11/26(木) 17:41:36.43ID:wjty/3s6
>>221
一時期、実装継承は悪なんて風潮があったね
今考えると、LSP違反になりやすいとかそういうことが理由だったのかも
あと言語にもよるけど、実装継承を繰り返して継承すると、途中クラスの変更が
事実上できなくなったりするというのも理由の一つだと思う
0224デフォルトの名無しさん
垢版 |
2015/11/26(木) 18:27:38.11ID:NexaTKB1
>>223
だからと言って何でもOKのインターフェース継承がおすすめというのは何とも理解しがたい
0226デフォルトの名無しさん
垢版 |
2015/11/26(木) 18:39:02.80ID:tFP+JHDf
よそのスレで相手にされないやつがここに流れてきているのか
0230デフォルトの名無しさん
垢版 |
2015/11/27(金) 15:36:41.66ID:aY4C5YCH
俺みたいに、VB6のプログラムがWin8.1までは動いていたんだけど、
Win10にして動かなくなったって人いる?
0231デフォルトの名無しさん
垢版 |
2015/11/27(金) 16:20:01.62ID:D5B47dYF
インターフェースは継承とはレイヤーが違うので、概念上は制限が無いので、継承を包括し得る。C++のように継承でインタフェースを実現する事もありえるが、概念上は継承自体が制限となる。
0233デフォルトの名無しさん
垢版 |
2015/11/29(日) 06:18:22.07ID:Wjtvnm/I
用語1つで場をこんだけ混乱させてしまうオブジェクト指向ってプログラミングツールとしては最悪の部類だよね
でもそういう最悪をかき集めたものが飯の種になる矛盾を孕んでる
混乱が飯の種ってまるで火事場泥棒みたいなやつだ
0234デフォルトの名無しさん
垢版 |
2015/11/29(日) 08:17:09.97ID:pp/aKq6e
staticおじさん乙
0235デフォルトの名無しさん
垢版 |
2015/11/29(日) 08:19:21.41ID:tYzWNDRy
いやあこの話題の中で委譲の話を持ち出す人が居たのには驚いたわ
確かにインターフェースは委譲出来ないけど、ソレは抽象クラスでも同じことだからね
0236デフォルトの名無しさん
垢版 |
2015/11/29(日) 09:45:04.56ID:mstAENSD
これがニッポンの民間・国家資格別平均最低月給ランキング。

将来有望な資格も見えてくる。
資格別の求人件数と平均最低月給ランキング。
あなたの資格の市場価値が一目瞭然!

http://jobinjapan.jp/license/
プログラマーの大切な資格は正当に評価されているか確認しよう。
0237デフォルトの名無しさん
垢版 |
2015/11/29(日) 18:02:30.56ID:SlphFEdz
古代VB

そういえば、どこに消えちまったんだよ
0239デフォルトの名無しさん
垢版 |
2015/11/30(月) 10:13:29.53ID:aCIh3523
>>237
XP以降、VB6のランタイムはWindowsに包含されているから
EXE配布だけで実行させられるんで意外に重宝してる。
日本語表示させるためにはVBJP.dllとかが必要になるんで面倒だけど
0243デフォルトの名無しさん
垢版 |
2015/12/07(月) 11:18:05.72ID:f02lpWL1
VB6の後継かどうか知らんがVBAを拡張する計画があるみたいね

Excelユーザーに感謝せんとな
0245デフォルトの名無しさん
垢版 |
2015/12/07(月) 17:24:03.74ID:7ldc1+VM
VBAが拡張されるとしたら、おそらくECMAScriptの最新機能を
取り込んでくるだろうな。
0247デフォルトの名無しさん
垢版 |
2015/12/08(火) 23:32:19.35ID:RI/35RNi
何の因果か未経験からVB6でのシステム保守に携わっています。
川口輝久の「Visual basic6 基礎編」は持ってるのですが
何とか理解できるようになったので
生産性向上のため見るべきサイトや本などが
あればお願いします。
漠然とした質問で申し訳ないですが
よろしくお願いします
0250デフォルトの名無しさん
垢版 |
2015/12/09(水) 18:08:39.82ID:QAlRgC9p
Fowlerのリファクタリングなんて良いんじゃないかな
VB6の場合いかにして手に負えないレガシーの塊を解きほぐすかって方針で勉強したほうが役に立つだろう
この方針なら他の言語に移った時にも学んだ事は無駄にならない
方向を誤ってVB6マスターを目指しちゃうと将来的に有意義な経験がなにも残らない
0252デフォルトの名無しさん
垢版 |
2015/12/09(水) 18:49:10.78ID:jSWKuhmJ
今VBってどこで使われてるの?
0254デフォルトの名無しさん
垢版 |
2015/12/09(水) 21:11:05.73ID:mLmT+X7L
>>250
VB6でテスト用意してリファクタリングするのは恐ろしく時間の無駄になる予感がするんだが・・・
0255247
垢版 |
2015/12/09(水) 23:34:53.11ID:qYQrOutA
みなさんありがとうございます。
開発といいましても既存の画面の修正からなのでリファクタリングというのをやってきます
0257デフォルトの名無しさん
垢版 |
2015/12/10(木) 01:10:19.39ID:Ti4G586p
リファクタリングっていうのは解析作業の一種で、
複雑になってしまったコードを解析して
その結果を反映させること。

リファクタリングに金を出さないという話であれば、
複雑になったコードを解析するのにも金を出さないって話だぞ。
そのとおりだが。


解析して、コードは修正せずに、バグと戦って、次回も解析するか、
解析して、コードを修正して、バグなく楽に修正、次回も楽になるか
の違いだ。
0258デフォルトの名無しさん
垢版 |
2015/12/10(木) 03:05:39.55ID:lzUGhUsU
質問させてください。
Windows7 pro 32bitにVB6.0Professionalを入れました。
これに適用するべき、MSが配布している更新ファイルを調べてみたのですが、

Vs6sp6B.exe
VB6.0-KB290887-X86.exe(=vbrun60sp6.exe)
VB60SP6-KB2708437-x86-JPN.msi

この3つ以外にもありますでしょうか?
0260デフォルトの名無しさん
垢版 |
2015/12/10(木) 18:54:33.37ID:E5kFv3hh
>>247
解析ツール買ってもらえ
0261デフォルトの名無しさん
垢版 |
2015/12/11(金) 07:04:04.42ID:sydzYF+G
お前ら教えろください

同じフォーム内にあるメソッドから〜_Clickみたいなイベントを呼び出すのってアリですか?

直感的にダメな気がするんですが、なぜダメなのか説明出来ません

どちらにしても誰か理由を説明出来る人いますか?
教えてエロい人
0265デフォルトの名無しさん
垢版 |
2015/12/11(金) 08:57:09.06ID:1J//Ejqv
イベントが発生してないのにイベントハンドラが実行されたら困惑するだろう
平日にハロウィンコスプレするようなもんだ
0266デフォルトの名無しさん
垢版 |
2015/12/11(金) 09:05:05.07ID:x/tmQiPi
どーせイベントの内容をコピペしたメソッド作ってそっちを呼ぶんだろ?
それなら最初からイベント呼んでおけ
0268デフォルトの名無しさん
垢版 |
2015/12/11(金) 09:58:01.96ID:RFBkejq5
普通はイベントの中身をメソッドにして、両方共其のメソッドを呼ぶように作るものだな
0270デフォルトの名無しさん
垢版 |
2015/12/11(金) 10:42:52.95ID:z9XcLK7w
>>261
> 同じフォーム内にあるメソッドから〜_Clickみたいなイベントを呼び出すのってアリですか?
なし

> 直感的にダメな気がするんですが、なぜダメなのか説明出来ません
その直感は正しいよ。理由はいくつか有る。

まず、一般的にフォームというのはユーザーの入力と処理を結びつけるためにある。
結びつけるだけなのでなるべくフォームに処理は書かない。
処理はフォームとは別に(ビジネスロジック用の)クラスに分離する。
このクラスはフォーム関連コードは一切ない。これにより自動テストがしやすくなる。
このように分離するので、二つのイベントハンドラから、共通のクラスのメソッドを呼び出すので
_Clickを直接呼び出すことはない。

これが大きな理由では有るんだが、クラスを使うほどじゃない場合でも
処理はprivateメソッドに書いて、内部的には処理と結びつけるコードは分離させておいたほうがいい。

それから、もう少しわかりやすい理由として、依存関係の話がある。
_Clickというのは、ボタンだったりするわけだが、そのボタンの存在に処理が依存しているのか?ということ。
通常はボタンには依存していないだろう。仮にボタンをなくしたとしても、処理の内容は変わらないだろう?
だが、_Clickを呼ぶと処理の中にそのボタンが紛れ込んでしまってるわけだ。こういうふうに
余計なものが混ざるとUIを変更した時の影響範囲が大きくなる。

どちらにも共通することは、その責任が明確に分離されていること。単一責任の原則とも言われている。
自分の担当範囲の処理だけを行うことで、それぞれの処理がシンプルになる。
絡み合わせる必要が無いものを、絡み合わせてはいけない。
0271デフォルトの名無しさん
垢版 |
2015/12/11(金) 12:14:45.33ID:l7b7OwtU
>>261
お前さんの直感は正しくて基本的には良いことじゃないけど、まあ程度問題ではある。

良いことじゃない理由は、メソッドの名前と実態が乖離するから。
(ボタンがクリックされた時に呼ばれるはずのメソッドが、それ以外の時にも呼ばれることになる)

これは、「イベントハンドラが呼ばれるのはイベントが発生した時だけだ」という前提でコードを読んでいる
プログラマの期待を裏切ることになる。

程度問題なのは、そうは言っても十分短いコードなら上記の前提が正しくないことに
プログラマは気づくことができる。
0272266
垢版 |
2015/12/11(金) 22:45:13.70ID:qRgP3PMO
>>269
わざとらしいアンチって俺の事?
0273デフォルトの名無しさん
垢版 |
2015/12/15(火) 16:46:05.07ID:Ac3Besor
せめてインターフェース継承くらい深い議題でないと盛り上がらんな
0274デフォルトの名無しさん
垢版 |
2015/12/17(木) 21:22:44.70ID:AyksyXNq
ああ、また来てほしいな。ああいう変な奴。
0275デフォルトの名無しさん
垢版 |
2015/12/25(金) 21:21:31.76ID:5nmp/yEA
VB6からVB.NETへの移植を体系的にまとめた本は有りませんか?
最悪VBではなく他の言語でも構いません
別言語への移植に関する情報が欲しいのです
0277デフォルトの名無しさん
垢版 |
2015/12/25(金) 22:06:13.40ID:p59n9EPz
>>275
移植元、移植先の両言語をちゃんと理解すれば移植は簡単だろう
0282デフォルトの名無しさん
垢版 |
2016/01/05(火) 17:52:56.18ID:Hprl/h5W
Visual Basic 6.0 が扱えるスレッドについて質問させてください。
私はVB6.0で作られた業務アプリのユーザーです。
プログラミングはかじった程度ですが、訳あってこの周辺を調べています。

第4回 Background Workerで夢のマルチスレッドがついに!
ttp://www.atmarkit.co.jp/fdotnet/vb2005/vb2005_04/vb2005_04_01.html
を読むと、「VB6.0まではスレッドが使えなかった」と書いてあります。

Visual Basic .NET におけるコンポーネント作成の変更点
ttps://msdn.microsoft.com/ja-jp/library/cc437477(v=vs.71).aspx
を読むと、ActiveX に関してはスレッドが使える、旨の記載があります。

これは、「GUIコントロールに関してのみ」スレッドが使えるという解釈で良いのでしょうか?
よろしくお願いします。
0283デフォルトの名無しさん
垢版 |
2016/01/05(火) 18:04:42.84ID:LOW6VHMu
>>282
> これは、「GUIコントロールに関してのみ」スレッドが使えるという解釈で良いのでしょうか?
主語は?

あとt抜きとかやめろ
0285283
垢版 |
2016/01/06(水) 08:22:15.82ID:OZFZrV2d
>>
0286282
垢版 |
2016/01/06(水) 08:30:51.56ID:OZFZrV2d
操作ミス失礼。

>>283
「Visual Basic 6.0 でアプリケーションを組んだ場合、GUIコントロールでのみスレッドが扱える」
という理解で良いかどうか、ということになります。
逆に言えば、
「画面の無いコマンド(VB6.0で作れるかは分かりません)を作る場合、スレッドを使った処理を実装できない」
という理解で良いかどうか、ということになります。
0287デフォルトの名無しさん
垢版 |
2016/01/06(水) 11:41:01.45ID:vwgrq8uH
>>286
一体何が知りたくて質問してるのかしらないが、>>282で自分で答え書いてるじゃん。
「GUIコントロールでスレッドが使える」とか意味わからんし。

・VB6ではスレッドは使えない
・VB .NET以降は使える
0288282
垢版 |
2016/01/06(水) 12:52:44.59ID:OZFZrV2d
>>287
ありがとうございました。
すみません、ActiveX.exe、ActiveX.dll が良く分からなかったので「GUIコントロール」という書き方をしてしまいました。

A Thread to Visual Basic: Multi-Threading In VB5 and VB6
http://www.freevbcode.com/ShowCode.asp?ID=1287

この文献に行き着いたので時間をかけて読んでみます。
0289デフォルトの名無しさん
垢版 |
2016/01/06(水) 14:04:10.34ID:vwgrq8uH
>>288
日本語より英語の方が堪能とかじゃないなら、「VB6 ActiveX DLL」とかで検索した
日本語ページ読んだ方がいいんじゃないの?
0290282
垢版 |
2016/01/06(水) 16:18:49.26ID:OZFZrV2d
>>289
ありがとうございます。調べてみます。
0293デフォルトの名無しさん
垢版 |
2016/01/06(水) 23:20:20.15ID:mlVo0bjp
素人質問で申し訳ありませんが、昨今においてWin7にVB6で組んで納品、という形態は存在するのでしょうか?
0295デフォルトの名無しさん
垢版 |
2016/01/07(木) 03:59:59.40ID:K6WPLAtH
>>286
ActiveXオブジェクトはVB以外でも作成できる
VB6ではマルチスレッドはサポートされてない
(API呼び出しで無理やりやる方法もあるけど、問題になる事もある)
これが全て。GUIとか何とか関係ない

>>291
たしかに非同期で動くけど、それ別EXEだからマルチスレッドじゃなくて別プロセスじゃね
0296291
垢版 |
2016/01/07(木) 08:36:17.81ID:kym8hbuE
>>295
やっぱそういうことですよねm(_ _)m
0297282
垢版 |
2016/01/07(木) 15:30:23.13ID:2ezK4vEQ
やっと分かりました!

1. Visual Basic 6.0 で作成する「アプリケーション」ではスレッドは使えない。

2. Visual Basic 6.0 の開発環境では、「再利用可能コンポーネント」として ActiveX(≒COM)コンポーネントが作れる
 このコンポーネントではスレッドが使用可能。
 ただし、ActiveX は単独では動作できない。他から呼ばれる専用。

ということだったんですね…。
ありがとうございました。
0298デフォルトの名無しさん
垢版 |
2016/01/07(木) 17:44:14.19ID:bnxi5i1z
>>297
つか、やりたいのは「スレッドを使う」ではなくて、非同期処理をしたいんじゃないの?
だったら、スレッドは不要。
0299デフォルトの名無しさん
垢版 |
2016/05/01(日) 11:17:00.72ID:tKi6j9CT
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al

ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw


The Covenant Project
概要

Covenantは、純粋P2Pのファイル共有ソフトです

目的

インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します

特徴

Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)

接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
0300デフォルトの名無しさん
垢版 |
2016/05/14(土) 16:45:37.18ID:0X6SbCZx
Dim a As Date

a = CDate("2016/5/14")
とか
a = DateSerial(2016, 5, 14)
で日付のみ入った状態に、後から時刻を設定するにはどうしたらいいでしょうか

DateAdd("s", h*3600 + m*60 + s, a)
だと、時刻を文字列に持っていた場合はちょっと面倒
0302デフォルトの名無しさん
垢版 |
2016/05/15(日) 00:17:47.00ID:9iZwHJOb
>>301
ありがとうございます
こんなのでいけてしまいました
Dim a As Date
a = CDate("2016/1/2")
a = a & " 12:34:56"
0303デフォルトの名無しさん
垢版 |
2016/05/19(木) 17:45:06.50ID:t2yMcpW4
Windows10 64bitで昔作ったソフトを動かしてみたところ
入力系コントロール→他コントロール (テキストボックス→その他)のフォーカス移動がものすごく遅いことに気付いたんですが
原因わかりますか?

テキストボックAに「123」と入力、入力直後にテキストボックBをクリックしても1〜2秒フォーカスが移動しない。
グリッドでも同様(同一グリッド内の別セルや別グリッド)
レスを投稿する


ニューススポーツなんでも実況