古代VBプログラマ質問スレ(Ver.6.0 まで) part65 [転載禁止]©2ch.net
ここは古代に使われていた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/ ※「まず自分で調べる」クセを身につけよう。 あるツイート ただ、仕事のシステムリプレース案件で、マイグレーションの名のもとに VB 6→VB .NET 自動コンバート手法を採用するのは本当にやめてほしい。 予算と工数の関係もあって、上層部は簡単に考えているようだけど、結果的にメンテナンスが大変になります。 きちんと費用をかけてマイグレーションすべき。 リプレース案件でまともに書かれたVB6のコードを見たことがない >>557 ,558 自動的にコンバート出来ると思ってるんだろ VB6→VB.NET2008→VB.NET最新のしないと移行出来ないからな いよいよVB6も終わるのかよ? VB6しか使えないサンデープログラマは終わりか。 >>559 そのコンバータも出来が悪いからな マイクロソフトはマイグレーションソフトウェアにもっと投資してほしかった >>560 既にセキュリティ的には終わってる 本来VB.NET2008ぐらいの時期にはVB.NETに移行すべきだったよ >>562 そうなんですね。よくセキュリティーの問題云々って言った発表があるけど 攻撃にされて実害にあう可能性ってどのくらいなんだろうね。 今でも毎営業日Xp上のVB6で作ったアプリで金融取引してるよ。 それよか次世代Windows出すとのアナウンスがあったようだが最後だと思ってWin10に乗り換えたのに騙された気分だわ。 次はVB6のIDEは動かないんだろうね。office2000も。 >>563 Win7になった時ぐらいからIDEの挙動がおかしいこともあったけど、Xpモードの環境をそのままWin10でも使ってるよ 古いファイルのメンテナンス用にOFFICE2003も入れてる 会社ではOSを単独で購入したライセンスが少なくて、クライアント環境で使うのはちょっと無理だけど開発環境ではサブスクリプションで導入してたからそのまま使ってる VisualStudioのサブスクリプションで未だに古いOSって入手可能なんだっけ? 開発環境は仮想マシンのXPでIDEにはMZ-Tools等をてんこ盛り、コントロールはMS製を極力排除して、VBCCRとVBFLXGRIDで置き換えて、他に必要ならVCで自作、サブクラス化にはThe Modern Subclassing Thunk、UMMMでmanifest作成、インストーラー作成はWIX Toolsetが今VB6で作る者の標準だと勝手に思ってる。 >>566 それ気になってて色々と検索してるけど、まだ確かな情報が見つからない・・・。 >>565 そこまでしてVB6.0に拘泥することはないと思うわ VBAが切り捨てられない限り保証されないまでも動くには動くんじゃね? >>569 おー、Windows11でも動きそうですね。 https://www.youtube.com/watch?v=J-u_qCEsrmU でもGoogleの翻訳で訳してみたら動いたと書いてるようなので、おそらく大丈夫かな? 自分の公開しているソフトもあと数年は延命できそうだw Windows11では Internet Explorer が廃止されるのが一番問題なんだよねー。 CreateObject("InternetExplorer.Application") からWebページへの自動入力などの操作も行ってるんだけど、これらが出来なくなる。 Edgeで同じことをやろうとするとかなり難しそう。何か良い方法がないものか・・・? Edgeには一応IEモードが付いているけど 実際IE使われてるシステムでそれ使っても結構キツそうな感じだった 後、VBが終わっても出来ればVB.NetじゃなくC#をやるようにした方がいいよ 文法以外はそんなに変わらないしVB.Netは.Net Coreからも.Net Codeからも外されている。 もうあまり先がない言語なんだよ。 Ruby on Rails のテストツールなら、 Selenium Webdriver, Capybara, Nokogiri など 静的なサイトなら、curl でも良いけど、 JavaScript で動的に作られるサイトなら、 Selenium Webdriver で、ブラウザそのものを操作しないといけない Selenium Webdriver や curl などですかー。名前を聞いた程度の知識しかないので、 IEに替えてEdge等で実行させようと思ったら、自分にはやはり敷居が高そうです・・・。 一般公開してるソフトで不特定多数のユーザー環境で実行してもらうのに 最適だと思われるのはどれが良いと考えられるでしょうか? (勉強してみます) ユーザーにインストールしてもらうプログラムや設定変更等が、出来るだけ少ない方がいいもので・・・。 ユーザーが実行する操作は、Webページへの注文入力 (例. 株や馬券みたいな) がメインです。 >>578 ヒントとなるキーワードを有り難う。調べてみます。 しかしIEが廃止になることで、こんな面倒なことになるとは・・・。簡単に出来てたのに。 なにを盛り上がってるのかと思ったら >>569 のことか みんな危機感持ってるんだな VB7を出してくれるといいんだが >>568 いやー、デカくて予算も出ない大規模なVBプログラムのメンテしてるんで、拘る必要はある。 専門職でない人には.NETは敷居が高すぎる これはたぶん世界の多くの人が思っているはず 自分の仕事は別な分野にあって、そこでVBを利用してきた人は古代VBの復活を待っている Windows11にVB6の開発環境をインストールしてみた Windows10の時と同じようにやれば問題なく導入できビルドもできる 画面のRedraw問題もそのまま継承してる ランタイムも入っているので実行時も問題ない VB6発売当時を知らない世代だけど、ググってみたら、DOS時代からデザイナあったのね。 DOS = CUIって印象だったから、今更ながら衝撃受けた。 https://www.cloudwisp.com/exploring-visual-basic-1-0-for-ms-dos/ >>584 Windows11も10と変わらないようだね、良かった。 時代はスマホが主流になって、新らたにVBソフトを作り替えるのも採算合わないから、 このまま行けるとこまでいって、ダメになったら終わりにしようと考えてる。 ここ数か月くらい、Window10が日本語入力処理を色々と変更していて タスクマネージャーを見ても「IME」というプロセスは無くなって 別のものに置き換えられているのが分かる その関係に違いないんだけど、VB6のテキストボックスの日本語変換がちょっとおかしい 「今日は」と打つときに,、漢字モードで 「kyou(SP)ha」と打つと「今日あ」となって「h」キーが無視される 「kyou(SP)(CR)ha」として(CR)で「今日」という変換を確定させる必要がある と言っても、必ずしもそうなるわけではなく、 メモ帳のように普通に(CR)無しで入力できる場合もある (CR)無しでいける場合と、ダメな場合と、何が違うのか ある程度の文字数を扱うとダメなのか、マルチラインにするとダメなのか・・・ そうやって作り替えると、状況も変わるんだけど これをこうすると、こうなるという法則が見つからない Window10が不安定というしかない状況 VBで作ったものだけキー操作が違うと面倒で 誰か回避策見つけた人います? いませんか 全然おかしいですよ フォームにテキストボックス2つ配置します コードなんかなんも無し プロパティはマルチラインTrueにするだけ すると片方だけ上記の現象が出てる で、現象の出ない方では、改行すると現象が出る じゃあ1行目にはその現象が出ないってことか?と思って ↑キーで1行目に戻ったら、そもそも漢字入力ができなくなってる 数か月前はこんな現象無かったのにWin10の更新でボロボロ >>589 実行時に互換モードとかだとどうなりますか? Windows10アップデートの度に動かないプログラムが増えてきてるんですけど、互換モードでどうにか動かしています IMEはなんかいろいろ不具合でてるっぽいから、あきらめるか 前のバージョンのIMEに戻して試せ >>590 互換モードのWin8とXPでやってみたけど状況に変化なしですね たぶん最近のIMEに問題があって、 互換モードではそこまで戻してくれないというこtでしょう ねぇ、IMEは色々不具合出てるよね 突然漢字入力できなくなるのは、メモ帳だったら、それをいっぺん閉じないと治らない 漢字の候補が表で出る奴は、最下行が見えないし なんでそんな単純なバグが発見されずに出荷してるか謎 IMEにバグがあるのは間違い無い しばらく使ってると突然可笑しくなる 何がきっかけかは特定出来ていないが 可笑しくなったら必ずやることは タスクマネージャーから ctfmon.exe を見付けて問答無用でkill これで大抵は治ってる >>587 あるね そのときにIMEを使用しているアプリによっても違うようだ >>587 もれはファイルのエクスプローラーの中でファイル名を変更しているときに遭遇することが多い (それ以外の場合ももちろんある) エディタとかだとあまりならないイメージ あとこれはVBに限った話じゃないから むしろIMEスレとか バグ報告スレでの話題にすべき ム板で話しても良いとは思うが VBスレでこれ以上話すのはなんかずれてるというかもったいない WM_CHAR フリーズ で検索すると microsoftのサイトで当面の回避策が出てきます 「以前のバージョンのMicrosoft IMEを使う」により回避できるようです おお、サンクス 漢字モードを変えるとモニタ中央に「A」とか「あ」とか出るバージョンね 未だにVB6使ってる所はヤバい VB.NETに移行するにも厳しいし VB6@Win10 VBPを開こうとすると、1%か2%程度の確率で、 レジストリなんたらのエラーで失敗する でももう一度やれば正常に開けるので問題は無いのだけど Win10って、そういう不安定なもん? Win10のせいじゃなくて、VBPの問題じゃないかと思うが 10での開発環境はサポートされてなかったはずなので 自力で解決できないなら古いOSつかっとけとしか まだshiftjisで頑張ってるの? 早くunicodeにおいでよ Windows11でもVB6アプリが動くなんて凄いじゃん >>608 セキュリティホール意図的に作ってどうする? >>609 VB6のランタイムに致命的なセキュリティーホールがあるのか? 未だOfficeに搭載されているのはVer幾つなんだ? なにも.netにこだわらなくてもいいじゃない 昔なら数十万もしたようなC++がタダで手に入る時代なんだよ 今更糞重いVSのIDEなんて使ってられるか(会社が貧乏というのもありますがw) .netって成功してるのか? 未だにその存在意義を知らんのだけど VBみたいな古い言語でも.NET上にあれば殺さずメンテし続けられやすい >>614 それなりに.NETの案件は有る しかしJavaやCOBOLやPHPほどでは無い えええ?? VB.NETはコボル以下? それって大失敗じゃん >>617 >>VB.NETはCOBOL以下 そうだよ マイクロソフトがVB.NETよりC#に重点移した時点でVB(.NET含む)は終了した COBOLより案件少ない .NETが出たときに、その勉強を始めたものの 自分はプログラマ専門の仕事ではないんで こんな煩雑な言語仕様に付き合う暇は無いというか その面倒さに見合う恩恵があるとは思えなかったので見送った MSはOSの方でも、変な方向に進んで大ヒンシュクを買っているが VB.NETも失敗だったのだろう? VCに比べて、短いコードで記述できる利点を捨てるなら VCでやればいいじゃないかって話だよ .net6で派遣取る! いやいや、時代はwebアプリでしょ なんかもうネットでもVB6の情報が出てこなくなってきたようなので質問させてください 構造体のメンバも、構造体自身も動的配列にしたいのですが Private Type tt aa As Integer bb() As Integer End Type Dim INF() As tt : ReDim INF(10) ReDim INF(10).bb(10) INF(5).bb(5) = 123 最後の123を代入するところで 「実行時エラー9 インデックスが有効範囲にありません。」となります どなたかご存じの方いらっしゃいますでしょうか そもそも構造体のメンバに動的配列なんぞ使えなった気がするが それコンパイルは通ってbbのRedimは動いてるのか? まあ、それでRedimされているのはINF(10).bbであってINF(5).bbではないがな やっぱりですかね ReDim INF(10).bb(10)の後半のbb(10)は無視されている気がする そこでエラーを出さないから悩んでしまう >>624 >>623 の人が何言ってるのかちゃんと理解した方がいいよw っていうかさあ、どんなポンコツPCでもGB単位のメモリー持ってる時代に KBオーダーのメモリー節約するために本当にそれやる必要あるの?w っていうか今時VB6使ってるってことはもう20年選手だろうに そのレベルの質問はないわ ちょっとVBAで試したけど構造体に動的配列できるっぽいな まあ、なんでわざわざ構造体をサイズ可変にしたいのかわからんが >>624 いやだから、ReDimしてるのはインデックス10の要素だけで、インデックス5の要素はReDimされてないだろ ReDim INF(5).bb(10) しろよ まぁなんてことでしょう そんなことになってたんですか ループで回さないといけないんだ ここで聞いて良かった ありがとうございました 今月のwindows updateのせいでIMEに不具合出るようになったみたい 変換中にスペースキーを押すとカーソルが文字列の最初の方へ勝手に移動する MS-IME不具合は、「全角のカッコの開始終了などの二文字入力後に、その間に「ああああ」とか書いて確定したときに、カーソル位置が前方に行く」という現象 だと認識してたけど、そういうことなのか。 もちろんATOKやGoogle IMEでは発生しないね。 ちなみに、DevExpressの古いActiveXであるdxEditなどを同じFormに配置すると、この現象は消える。 IMEの古い方を使うっていう設定にしてる人だけに起きてるのかな? Win10をクリーンインストールしたPCでも発生してるよ ギコナビでも発生してるらしい ギコナビってVB製? あと、"国"の前にカーソルがあると消えて見えないとかね 勘弁してほしい ギコナビはDelphiじゃなかったかな それにしても相当古いはず 高度IT人材、富士通は最大年収3500万円へ AI人材の獲得に超本気 NECが新人事制度を9人に適用、富士通は最大年収3500万円へ 【年収3500万円も】富士通、「ジョブ型」人事制度を導入 幹部社員から 高度IT人材 来年度から副業解禁 人材多様化へ―大同生命次期社長 第一生命HD、副業解禁 約1万5000人対象 第一生命HD、副業解禁 1万5000人対象―大手生保初 IHI、国内8000人の副業解禁 重厚長大企業も転機 IHI、社外兼業を解禁 社内副業もルール化 https://forest.watch.impress.co.jp/docs/news/1378596.html ここに出てるね。 「Microsoftの日本語IMEだけでなく、他社(サードパーティー)の日本語IMEでも発生する」 とか書いてるけど、Google IMEやATOKでは起きなかったけどなぁ。 24時間以内に修正するってか、気合入ってるじゃん 相当なクレームが入ったのだろう キーボード見ながら打ち込んでると、変なところに書いていてビックリだよ 文章編集中にカーソル位置が飛ぶバグが直ったと思ったら その前ノバグがぶり返した 実行ファイル形式で動かしている時、実行時エラーが発生した際に 何もエラーが表示されずに落ちる様になった 何度もコードを書き換えて原因を確認したところ、 どうやら、UserControl_Paint内でクラスのインスタンスを生成するコードがあると、 実行時エラー発生時にメッセージボックスが表示されずに落ちる様だった 最初はクラスに問題があるのかと思ったのだが、何も実装していないクラスの インスタンスを生成してもでもやっぱり同じだった (ちなみにIDE上でデバッグしているときは実行時エラー発生時に ちゃんとエラーメッセージが表示された) 一応最新のパッチは当たってるけど、これはどうしようもないのでしょうか? (UserControl_Paint内でクラスのインスタンスを生成しないようにするしか ないのでしょうか?) 例) Private Sub UserControl_Paint() Dim objClass1 As Class1 Set objClass1 = New Class1 ' ←クラスを生成するコードがあるとダメっぽい Set objClass1 = Nothing End Sub VBは時折不可解な挙動を示す。そういうもんだと思って諦めれ まあPaintみたいな呼び出し頻度が高い処理で インスタンス生成みたいな重い処理をやるべきではないな objClass1をprivate変数とかにしておいて Paintの中ではその関数使うだけに出来ないのか? >>639 確かにその通りですね 不具合の発生元は分かったので、挙動に合わせて修正することにします ありがとうございました っていうかVBはもう20年も前に死んでるんだってw いつまでゾンビに仕事をさせるんだよw もういい加減墓の下で静かに眠らせてやれよマジでw Officeの中では普通に生き延びてるからなぁ マクロのpython移行計画も潰えたはず >>643 VBAとVBはちがう いまでもVBAの開発環境はたとえばEXCELのVBEとしてサポートされてる VBは、開発環境たとえばVisual Studio6.0とかはすでにサポートされてない それが動くOSもサポートされていない だったらランタイムの動作もさっさとサポート切ってくれればまだいいんだか すくなくともWin10では基本的なランタイムはサポートされてたはず Win11はどうなったかしらん >>643 EXCELのpython搭載なんて、俺が知る限り 単にアンケートとっただけで、一度も正式に開発対象になったことないと思うが python移行計画なんてどっから出てきたんだよ >>640 自己解決しました 今更興味ないかもしれませんが、一応書き込んでおきます 動作ログを取ってみてわかったのですが 実行形式ファイルの時だけ、実行時エラーが発生した後に UserControl_Paintが呼び出されるようです 実行時エラーが発生した後は、多分終了処理に入っていると思いますので、 このタイミングでクラスのインスタンスを生成すると不具合が生じるのだと 思われます 解決策は簡単で、UserControl_Paintの先頭でErr.Numberをチェックし、 実行時エラーが発生していた場合は、Exit Subで抜けるようにしました 上記の対策で、正常にエラーメッセージが表示されるようになりました 最近、VBを使っている話を聞いたのだが、昔は当たり前のように宣言していた Option Explicit On は今ではしないのか? 開発が主務じゃないコンピュータ保守は初めて知ったと言っていたが。 たぶん普通は入れると思う VB6は確かコード先頭に書いていたような気がするけど 以降はVisual Studio のコンパイルオプションにあって 最近のはデフォルトでオンになってるから 意識しないのでは? >>650 今はコンパイルオプションになっているのか? 情報ありがとうございます。 VBなんて10年くらい使ってなかったがこの動画をきっかけに思い出した。 https://youtu.be/h9RqM2fXssY?t=36 >>653 最後のトンネルの下りだと空荷のトレーラーじゃなく 横に止まっているVBが3台あるのだから、それでブロックしておけば良いはず。 というかあの映画の作者はVBを破壊しまくる程VBが嫌いなのか? このままVB6を葬り去るより 中国に売却した方が金になるし得だろう そして中国で取り合えず64ビット対応をする 相当売れるはずだよ VB6でDouble型をLarge_Integer型に変換するにはどうすればいいんでしょうか? ググって以下のソースを見つけたのですが、オーバーフローします。 QuadPart使えないし。。。 Private Function cvtDblToLi(Val As Double) As LARGE_INTEGER Dim foo As LARGE_INTEGER foo.lowpart = Val And &HFFFFFFFF foo.highpart = RightShift(Val, 16) cvtDblToLi = foo End Function read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる