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/

※「まず自分で調べる」クセを身につけよう。
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秒フォーカスが移動しない。
グリッドでも同様(同一グリッド内の別セルや別グリッド)
0307デフォルトの名無しさん
垢版 |
2016/06/07(火) 22:57:53.12ID:fcyHNQmx
VBももうそんな歳かぁ
0309デフォルトの名無しさん
垢版 |
2016/06/30(木) 09:57:06.03ID:j4y3K9f+
>>303
当方ではそんな現象でないですけど
0310デフォルトの名無しさん
垢版 |
2016/09/07(水) 04:03:07.30ID:5oBV5n5N
ドラッグ&ドロップして、パスなしのファイル名だけ取得するにはどうしたらよい?
↓だとフルパスで取得してしまう

Private Sub TextBox1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TextBox1.DragEnter

'ドラッグされている内容が文字列型に変換可能な場合
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
'コピーを許可するようにドラッグ元に通知する
e.Effect = DragDropEffects.Copy
End If

End Sub

Private Sub TextBox1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TextBox1.DragDrop

'ドロップされた内容を表示する
TextBox1.Text = e.Data.GetData(DataFormats.FileDrop)(0)

End Sub
0312デフォルトの名無しさん
垢版 |
2016/09/07(水) 05:46:01.84ID:5oBV5n5N
円マークで分割して最後を取得みたいに?
最悪それでもいいんだけどVBさんならちょっとしたオプションで出来るかなと思って
0315デフォルトの名無しさん
垢版 |
2016/10/05(水) 18:51:53.10ID:CThI016C
プログラム保存し忘れたんだけど復活させる方法ありますか?
ソースファイル単位では保存してます
0319デフォルトの名無しさん
垢版 |
2016/10/16(日) 17:22:47.11ID:dK/+e+o+
プロセス単位だとリソースをいくらリークさせても終わった時点でOSが面倒見てくれる
スレッドは自分で管理しないとプロセスが生きてる限りリークし放題
Excel VBAでしょーもない再起動が必要になったりするのはそれが原因
0320デフォルトの名無しさん
垢版 |
2016/10/18(火) 09:13:44.98ID:avoYV2sG
PNGを表示するのに明熊さんのTransG32.dllを使ってる人いる?
4000ピクセル四方程度のPNGは開けたりクラッシュしたり
どういう条件だとクラッシュするのか、
PNGの幅x高さの値と関係するのか調べても境界がはっきりしない
じゃあファイルのバイトサイズかなぁとログをとって気長に調べているのだけど
何か知ってる人はいますか
0321デフォルトの名無しさん
垢版 |
2016/10/18(火) 09:19:02.67ID:avoYV2sG
ああそうだ、開けるPNGファイルを
メモリの少ないPCでも開けるかやってみればいいか
0322デフォルトの名無しさん
垢版 |
2016/10/18(火) 21:27:37.76ID:mFczHo3i
すいません、
VB6の頃のopen文だっけ?に比べてVB.netやC#のファイル操作は遅くて
別のものを使うとVB6より速くなるみたいな
そんな記事をかなり昔みた記憶をふと思い出してググってみたのですが、その記事が見つかりませんでした。

どなたかこれの内容って覚えていませんか?
0323デフォルトの名無しさん
垢版 |
2016/11/21(月) 20:14:13.91ID:P4wVU5YC
誘導されてきました。
質問させてください。以下の現象が解決できず悩んでいます。
何か思い当たる解決方法をご存知の方がいれば、情報提供をお願いします。

■開発言語 : VB6.0(SP6だったと思う)
■プラットフォーム : Windows10(64bit)
■互換モード : Windows2000
■現象 : 「CommonDialog.ShowOpen」時にエラーが発生
■エラー内容 :
Microsoft Visual C++ Runtime Library
Runtime Error!
Program:xxxx\xxxx.exe
abnormal program termination

Windows8.1(64bit)では問題なく動作します。
互換モードをWindows2000以外にした場合、Windows10(64bit)でも問題なく動作します。
コモンダイアログはファイルを開く目的で実装しており、エラーが発生してもダイアログ自体は表示されます。
エラーを無視すればファイルの選択を行うことも可能で後続の処理も問題なく動作します。

以下のことは試したのですが、効果がありませんでした。
・「VB6Runtime」の最新化
・正常に動作する環境(Win8.1等)の「COMDLG32.OCX」を適用
・「VC++Runtime 2005〜2015」のインストール

以上、よろしくお願いします。
0325デフォルトの名無しさん
垢版 |
2016/11/23(水) 03:56:20.37ID:xKXFPlfV
>>324
件のプロセスをキックする親プロセスがいるのですが、
親プロセスがWindows2000互換で動作しているため、引きずられてWindows2000互換で動作してしまいます。

親プロセスの互換モードを変えれば、エラーは発生しないのですが、この親プロセスからは
他に300近いプロセスをキックしているため、変更した互換モードで他のプロセスの動作検証を行う必要が出てきます。

それは避けたいため、Windows2000互換のままでも解決できる方法を探している状況です。
0326デフォルトの名無しさん
垢版 |
2016/12/05(月) 03:32:50.56ID:cV+XaugA
子プロセスの互換モードって絶対親と同じじゃないとダメなんだっけ?
互換性データベースとかいじれば何とかならんのかな
0327デフォルトの名無しさん
垢版 |
2016/12/10(土) 19:10:41.50ID:R0LDy8hm
>>323
本件については、質問してから時間が経ってしまったこともあり
工期の問題もあったため、2003SV互換ですべて検証し直しました。

Win7(64bit)なんかではWScript.Runで呼び出すことで子プロセスに設定された互換モードで動かせていたみたいです。
Win10ではそれも効かなくなっているみたいですが。

>>326
色々調べた中で互換性データベースについては初めて目にしました。調べてみます。
0328デフォルトの名無しさん
垢版 |
2016/12/17(土) 08:36:14.70ID:jn0zESOo
整数型はLongを扱うプロパティが大部分なのとループも4バイト整数が効率的なはずなのに、
他人の書いたコードは大部分がIntegerです。この型を選ぶ理由を教えてください。
0330デフォルトの名無しさん
垢版 |
2016/12/19(月) 00:51:52.04ID:OTfESfoA
>>328
大昔のBASICにlong型がなかったから
当時の人材が今でも活躍してるんで。
0331デフォルトの名無しさん
垢版 |
2016/12/26(月) 08:04:16.12ID:Nfyo2sWs
コモンダイアログは使っちゃだめだよね
将来的に使えなくなる可能性があるからAPIで書いておかないと
という話の「将来」が今田
0332デフォルトの名無しさん
垢版 |
2016/12/26(月) 21:50:52.20ID:Rlq9+0td
将来的にVBは産廃になるから移行しやすいようにレイヤー分割しとけよ
という話が教会に異端認定されて迫害されたから今苦労してるんだよね
0333デフォルトの名無しさん
垢版 |
2017/01/29(日) 11:01:58.46ID:kKew+rKl
質問させてください。
VB初心者です。(普段はもっと古代言語を使用しています)

環境:windows7,office2010,vb6,activereports2.0j

VBのフォームにOLEを配置してEXCELを表示し、
ボタンを押すと、doverbメソッドが実行されてそのEXCELを編集出来るというプログラムがあります。
開発環境では問題無く動いたのですが、
実行環境で編集ボタンを押すと、押した時にはEXCELがアクティブになるのですが、
すぐにフォームのほうがアクティブになってしまい、EXCELを編集出来ません。
何度EXCELのほうにマウスを当てても戻ってしまいます。
環境かな?と思うのですが、何が原因なのか検討もつきません。
どなたか、何か思いつくことがあれば教えていただけないでしょうか?
よろしくお願いします。
0334333
垢版 |
2017/01/29(日) 11:36:27.70ID:kKew+rKl
timerイベントで以下の処理を行っているのが原因でした。
If Me.Enabled = True Then
Me.SetFocus
End If
根本的な原因では無さそうな気がしますが、
特に問題もないようなのでこの処理を削除しました。
0335デフォルトの名無しさん
垢版 |
2017/05/02(火) 07:16:38.64ID:8sTtya12
それはよかたですね
0336デフォルトの名無しさん
垢版 |
2017/05/06(土) 09:27:02.42ID:JeNBh43P
XPか7以降だったか
プロセスやスレッド間をまたがるフォーカス移動の挙動は仕様が変わってるから
SetFocusだけでは意図通り動かないと思う
説明がめんどくさいので解決したならいいけど
0339デフォルトの名無しさん
垢版 |
2018/01/05(金) 03:37:42.39ID:wxVAlpnt
VBで困ったときにネット検索しても余り出てこなくなったんだよ
0340デフォルトの名無しさん
垢版 |
2018/01/05(金) 09:30:37.13ID:7AXx45RK
パーツをペタペタ貼れるVB系は6.0しかないの?
.netでもそれさえあれば移行するのに。
0341デフォルトの名無しさん
垢版 |
2018/01/05(金) 09:51:10.00ID:UOfdxINC
Win7で普通に組めるのは良いが配置したコントロール類を一括ドラッグ、位置調整するのが辛いな
0344デフォルトの名無しさん
垢版 |
2018/01/09(火) 12:37:56.63ID:8WmxSfck
>>343
パーツがボタンやラベルのことならば標準機能で貼れる
お試し版あるからダウンロードして試したらヨカ
0345デフォルトの名無しさん
垢版 |
2018/01/09(火) 14:04:33.78ID:RylW2XZB
Microsoft Team Explorer for Visual Studio 2013のMicrosoft Visual Basic 2013を使ってみたのですけど、コントロールを貼り付けられるようには出来てないような?
VB6でいうところのオブジェクトを表示する事が出来ませんよね?
0347デフォルトの名無しさん
垢版 |
2018/01/10(水) 18:40:35.20ID:zurHFgf/
新規プロジェクトで
Windowsフォームアプリケーション選び
form1.vb選択して、右クリック
ビューデザイナー開いておいて
左側のツールボックス開いたらコントロール群あるから
選んで貼り付け
0348デフォルトの名無しさん
垢版 |
2018/01/10(水) 23:20:26.41ID:YQmlMnP3
ファイルリストボックスって
なまじっか英数字のファイル名だとソートしてるから、そのまま使えると思ってたら
漢字は中途半端なソートするね
0354デフォルトの名無しさん
垢版 |
2018/01/11(木) 18:35:50.09ID:SGG/aWUs
何イライラしてんの?生理?
0357デフォルトの名無しさん
垢版 |
2018/01/13(土) 01:01:21.10ID:Or/J88FT
馬鹿に馬鹿と指摘すると、悔しがってこうやって別IDで食って掛かってくるから楽しい
0358デフォルトの名無しさん
垢版 |
2018/01/13(土) 07:18:55.84ID:odSwvUdp
自称「馬鹿に馬鹿と指摘する」馬鹿さん、馬鹿にされて楽しそう。
0361デフォルトの名無しさん
垢版 |
2018/01/15(月) 12:48:58.31ID:88lrhbw0
俺は気にした方がいいと思うよw
さすがにこのやり取りは質問者が叩かれて当たり前。

これが2002年ならわかる。2018年にもなってこれはない。
さすがに釣りだとと思ったらどうやら大真面目らしいのも何とも
0362デフォルトの名無しさん
垢版 |
2018/01/15(月) 13:46:09.53ID:JizfWv+s
本当は質問があって嬉しかったくせに
0363デフォルトの名無しさん
垢版 |
2018/01/15(月) 15:33:41.73ID:qFZdWehx
好きな子にいじわるしたくなっちゃう小学生男子の気持ち?
0367デフォルトの名無しさん
垢版 |
2018/01/15(月) 20:36:20.49ID:3WbICYQr
>>365
いじってみてもどうなっているか理解できないから馬鹿だろうが。そもそも製品の構成すら理解しとらん馬鹿だし。
0369デフォルトの名無しさん
垢版 |
2018/01/15(月) 21:26:47.29ID:3N9Vi6BJ
知らないこと と 自分の力で理解できないことを一緒にして他人を煽ることしかできない馬鹿

ID:3WbICYQr
0370デフォルトの名無しさん
垢版 |
2018/01/16(火) 16:19:30.22ID:BeNqsycH
開発中に気が触れてしまう人もいるので、そっとしておきましょう
ここでは、開発が本業でなく、例えば八百屋さんがプログラムをいじってるなんて場合もあるのだから
自分の狭い専門分野で人を見下すのはバカ丸出しなんだよね
0371デフォルトの名無しさん
垢版 |
2018/01/16(火) 19:32:19.61ID:sMiE+lp1
>>370
八百屋ナメんなよコラ。お前市場行ってセリで買えるか?セリにsnipetなんかねえんだよ。
全部キロ単位の値段設定だぜ?即座に頭で歩留まり計算しておかないと儲け出ねえんだぜ?
八百屋、魚屋のような生モノ扱う仕事は常にtry-catch-finaryでロスが出ねえように考えて仕入れ販売
しないとあっさり赤字こくんだよ。
コード屋はそりゃ大変だろうが、楽な仕事なんかねえんだよ
0372デフォルトの名無しさん
垢版 |
2018/01/17(水) 01:08:40.33ID:1Qaovn3i
>>370
青果市場のセリで、キャベツを指差しして「これは白菜ですね!」とか大声で叫んでみろよ。
お前のようなゆとりの馬鹿が社会をダメにする。
0374デフォルトの名無しさん
垢版 |
2018/02/03(土) 08:34:10.13ID:nKXUpnsB
Integerが2バイトしかないなんてヒドイ
0376デフォルトの名無しさん
垢版 |
2018/02/16(金) 05:57:15.07ID:W1XJdyx1
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
0377デフォルトの名無しさん
垢版 |
2018/02/26(月) 06:40:53.98ID:eCGyw0Qs
Private Sub Form_Load()
  Text1 = "106.456"
  Command1.Caption = "▲"
End Sub
となっています

1ドルなん円という数字が入っていて
小数2位以下はいらないので▲ボタンを押すごとに
106.456→106.500→106.600→106.700・・・
となるように
Private Sub Command1_Click()
Dim v&
  v& = Int(Val(Text1) * 10) + 1
  Text1 = Format(v& / 10, "0.000")
End Sub
2行のプログラムをつくりましたが、あら不思議、これは動きません
Intが悪さをしている、Intはいらないと分かったのですが
なぜIntが悪さをするのでしょうか
0379デフォルトの名無しさん
垢版 |
2018/02/26(月) 11:36:26.78ID:eCGyw0Qs
整数型に変換してるんですけど
INTの外にある「+1」が無効になる感じです
レスを投稿する