古代VBプログラマ質問スレ(Ver.6.0 まで) part65 [転載禁止]©2ch.net
>>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 大きさに困ったら通貨型使ったら CCur(31アイスはダブルに限るね) >>657 つかさー VB6のDouble 型ってIEEE754に準拠してるだろうから もっと基数とか指数とか仮数とかちゃんとみて 変換掛けてやらないといけないんじゃない?(鼻ホジ) なんかそれ見てると下位4バイトをlowPartに 上位6バイトをhighPartに突っ込んでるようにしか見えない >>658-659 レスthx どっかのサイトの解説で、Currency型は整数15桁と小数4桁の8バイトで整数精度に問題あり。 LONGLONGと同じ8バイトのDouble型推奨って書いてたから、Double型との相互変換で サンプル探してたけど、Double型が8バイトなのは最近のVBであって VB6のDouble型って4バイトなのね。orz Currency型とLARGE_INTEGER型の相互変換で探したら、すぐ見つかりました。 どうもお騒がせいたしました。 >>660 いやいや、むしろ問題があるのは DOUBLE 型の方だろう。 整数の精度ではなく、浮動小数点で 10進と2進での計算のために誤差が出る。 整数を扱う場合はどちらも問題ないだろうが Currency は通貨型と言われているものだから 計算に誤差があったらヤバいだろ。 国内フリーランス1670万人 1年で57%増 雇用不安背景、労働人口の2割超す 副業・兼業812万人の見通し 去年より100万人余増 コロナ影響か 副業収入、「副業が本業収入を超えた」21.8% 約7割が副業・複業先への転職にも前向き 副業のほうが本業より収入が多い 5人に1人 3000人が回答!「副業・ダブルワーク」実態調査2人に1人が「副業・ダブルワーク」の経験ありと回答。 20代の7割が「副業したい」、興味のある仕事は? ランサーズ、『フリーランス実態調査 2021』を発表 〜フリーランス人口、経済規模は過去最大に〜 仕事は9割外注すれば売り上げが爆増する フリーランス市場規模が20兆円を突破 -副業は8兆円- 新石器時代に合わせて新VB6が爆誕するのでしょうか? VB6は非GCでポトペタ開発ができる稀有な存在なんだがなぁ こういうのをひとつくらい残してほしかったわ ちょこっと変更してVB64として売れば需要あるだろうに 世の中、プログラム作ってるのはプログラマだけではない 本業が別なとこにある人も使う エクセルVBAは色々とうっとうしいしな >>669 興味はあったけど、糞高い割にはバグだらけらしいんだよなぁ 優秀は開発者はみんなM$にぶっこ抜かれるから仕方ないのか・・・ VB6はトライアンドエラーがやりやすいので素人でも扱いやすい コンパイラ言語とスクリプト言語のいいとこ取りした感じ 次は、64bit整数対応、符号なし整数対応、シフト演算対応、ユニコードAPI呼び出し対応、 スレッド対応、継承対応、スクリプト実行(動的実行)対応のVB64か・・・(妄想) そこまでイヂり倒せる人なら既にC♯とかに引っ越ししてるような C#は素晴らしいんだが、GCがあるからなぁ GCの無いお手軽言語が無い状況なのよね VBAさえ開発環境改良してないしなぁ…MSやるきなさすぎ >>676 VBA は変わらないからいいんですよ‥‥ VBはWindows SDKすら使えない人間が使うものとして用意された時点で終わっている。 >>678 あなた、遅れていますね… VB/VBA から win32api は呼び放題なのに >>675 malloc/free地獄はもう嫌じゃぁ >>679 Windows SDKの開発を知らないのに反論するのは意味がわからない。 ネイティブ開発は、VBそのものを作るようなやり方だぞ。 >>680 そんなの忘れるようなコードを書いている方のレベルの問題 >>683 いや、だからさ、VB からでも win32api くらいなら簡単に呼び出せるよ win32api さえ呼び出せるんだったら、それが C/C++ からであろうが、VBA からであろうが、できることはあまりかわらないのでは? そりゃ DLL とかは無理だけどさ、アプリならほとんど同等に作れると思うよ >>685 だから、あんたはWindowsアプリケーションを作る基礎を知らないと言っているんだが? Windowsが発しているメッセージを判断して、どうこうするレベルと、VBみたいにそこがすでに用意されているレベルのものでは、比べても意味がない。 >>685 VBがVBで作られている、ExcelがVBで作られていると説明すれば自分自身が変なことを言っているのかがわかるのかな? >>685 Excelのスレでcomポートの質問してるのは君か? >>686-686 では質問いたしましょう exel VBA から win32api を直接呼び出せるか、それとも呼び出せないか?……① ①の質問に yes または no のいずれかひとつで答えてください。 >>685 よく読まないで横レスするけどwin32apiだけじゃ実用アプリは無理だろ >>689 出来るよ でも出来るのと使えるのは違う >>691 十分使えますよ、この前テトリスを組んだばかりですよ VB6は最近の言語と違って構造がシンプルらしいから、 Windowsがバージョンアップを繰り返しても、 このまま生涯現役でいて欲しいわ >>689 呼び出せるよ。あんたWindowsアプリケーションをVBでしか作ったことがないから、悔しいらしいけど、VBはあくまで簡易的なアプリケーションの作成ツールだ。 だから、VBはいくらこねくり回してもよくはならない。 そりゃVBで簡単なアプリしか作ったことがないってことだぬ マイクロソフトがライブラリの作り方がわからない時期に提供した手段のひとつ Windows 95の時代にVisual Basic 4.0。 Windowsネイティブアプリケーションではないため、マイクロソフトもVBはあくまで仮の言語という位置づけだった。 このスレッドはコボラーと同じような思い込み強いじじいが多い。 VBはコンピューターの仕組みがわからなくても使えるから、コボラーみたいな勘違いが起こる。 仕事でしか興味がなかったから、VBがクソ環境だと思わなかったんだろう。 プログラムなんて簡単に組めればそれに越したことはない VBはできることが少ないのを、無理やり拡張したから、中途半端なものになった。 Windowsを誤解させてしまったという負の面が大きい。 VCなら出来るってのは、マルチスレッドとか 無くても困らないようなものばかり 上の人が言ってるように 手間かけずに作れるてことは 例えば、5年後に手直しが必要になったときに その有難たみが実感できる なんだかんだでExcel VBAとかは未だに使うから、20年前にVB6で作った自作ソフトとか余裕で直せる。 >700 Windowsの、どこをどう誤解させたのか詳しく ちなみにVBの拡張はVB以外でも作れるし、Windowsのアプリ連携機能の根っこだと思うんだがな >>704 高級な言語が低級な処理を覆い隠すのは当然の進化なんだが それがWindowsのどこをどう誤解させたと? >>705 WindowsのようなOSとハードウェアの仕組み インテルの8ビットCPUは、日本人である嶋さんの設計だった IBMですら、その将来性を見通せなかったのだから、 日本政府の無能ぶりは仕方ない しかし日本政府はユダヤの商売を邪魔できないというのがあって 日本製OSは自滅させられてしまった CPUやOSのような、稼げる分野に踏み込むことができないのだ その一方で、中国製CPUはWindows10がサクサク動くまでになってきた その価格で、そこまで動くなら充分だ、という方向に世界は動き インテルのCPUは、一部の愚かなヲタしか購入しなくなるだろう それに加えて、アメリカは基軸通貨の地位を失うことで米国債を売り浴びせられ 国が潰れることになるし、日欧も巻き込んで餓死者が大勢出るほどの大恐慌が目の前に迫っている インテルもMSも先が無い 世界経済はBRICsが引き継ぐ だからVB6は早く中国に売り払ってしまえと言うのだ >>708 VBはフレームワーク Windowsのメッセージをループしながら、取得して判断する部分は初めから出来上がっている。 バカにされていると思っているのかもしれないが、あまりにできることが少ない状態でリリースしたマイクロソフトを恨んでくれ。 >>704 Windows APIが低級ってマジでいってんの? 超高級絢爛豪華APIだろ DOSのころはディスク以外のデバイスは全てアプリケーション側で個別に操作しなくちゃいけなかったのに >>710 できることが少なくても、拡張することが前提だからな ビルゲイツが拡張できるようにしろって言ったらしいが >>711 比較の問題だろ VBのような高級言語からみればOSのAPIは低級だわな >>712 だからVBではWindows SDKの開発と違いが大きすぎて、マイクロソフトは混乱してユーザーも混乱した。 そこにサンマイクロシステムズがJavaといううまく作られたライブラリを持って登場した。 マイクロソフトはMFCというライブラリを提供していたが、Javaのライブラリのような発想はまったく出てこなかったので、サンマイクロシステムズのライブラリに衝撃を受けた。 GUIのライブラリはこういうふうにすれば、いいのかとわかって、VBは6.0で捨てることが決まった。 マイクロソフトは自分でクビをしめていたわけ。 マイクロソフトはWindows SDKをみんな使ってくれると思っていたが、世の中のプログラマのレベルが想像以上に低かったせいで、とりあえずVBでしのいだだけ。 当然、C言語、C++プログラマでネイティブアプリを作るような人間は、Windows SDKの方が自由自在なので、こちらを使った。 DirectXを使うような一般人も当然、Windows SDKを使った開発をしている。 VBは何もかもしょぼくて話にならない。 ただ、なぜか日本の業務システムではVBを使ってしまって、日本はガラパゴスになった。 VBを多用したせいで、日本のWindowsアプリケーションのレベルが下がったとも言える。 プログラマのレベルも下がり、コンピューターがどう動いているのか、Windowsがどう動いているのかすら考えない人間がこんなスレッドを立てて、あたかもWindowsに詳しいかのように発言している。 VBを使っていた時点でまったくわかってねえんだよ! プログラム板の他のスレッドを見ないようなレベルの人間だからな。 やる気なし、関係あることでも調べない、仕事でVBを使っていたから知っているだけという勘違いで、VBが古代などと変なことを言ってしまっているやつらがいるのが、このスレッド。 無制限に時間を使える訳ではないからなぁ 個人的に興味があって、家で調べているならそれでもいいんだろうけど、 会社で調べてたらその分見積もり高くしろと言われてしまうし、 とにかく簡単に出来るほうがよい Windowsの仕組みとか正直どうでもいい >>714 あなたが衝撃を受けたJava GUI って AWT? Swing? JavaFX? Sub Japan_Cleaning() Static Yamagami If 朝鮮自民=0 Then End Del 朝鮮自民 Yamagami++ Japan_Cleaning End Sub VB6を運用続けるのも難しくなって来た VB6→C#やVB.NETへの移行案件いろいろ出て来てるね >>720 移行が終わったら、呼んでくれ。 VB6からの移行なんて絶対やりたくない。w 新規開発用の環境はVB.NETは開発終了みたいだからC#へ移行 >>721 >>VB6からの移行 結構多いよ どんだけVB6のまま放って置いたか分かる VB.NETも終わりなの? じゃあVBとWindowsもひっくるめて中国に売っちゃえばいいのに 例えば、漢字変換が何十年も進歩しないアジア軽視は許せん Windows自体が問題放置のお手上げ状態だし まぁそろそろ人間の手には負えなくなってきたのだろうが VB.NETの進化は止まった 逆を言えば、それだけ完成度が極まった、とも言える Win11でも見捨てられずに動いちゃう(ランタイムとかの個別導入はいるけど)VB6の罪は極刑レベル。 エクセルVBA を買うと損するの? エクセルVBA はこれからどうなるの? >>725 新しい機能はC#使えってことでしょ VB.NETはこれまでも周回遅れだったじゃん ある意味エクセルVBAの勝利だな エクセルVBAはユーザーが多いから無くなることはないだろう Windowsを立ち上げたときの核心部分は、日本のNEC部隊が担当したそうだ 富士通とかもマイクロソフトに出向して、てっきり日本語対応の部分だけを担当してたのだと思ってた インテルにしても初期の8ビットCPUは日本人の設計だしな 孫正義のような日本の足を引っ張る朝鮮人連中が、安倍死から絶賛崩壊中で これから日本復活だよ とはいえ欧米の崩壊に日本も巻き込まれるので暫くは地獄だが なんでWin11って日本語不自由なん? ローカライズは日本語の話せるアジアンが担当して、生粋の日本人は参加してないん? >>731 >>エクセルVBA 無くならないだろうね VBA案件も多い 15年位前からMSIMEの開発は中国に移ってるそうです 当時から精度劣化とか言われてた >>732 22H2の日本語表示はかなり中途半端になってたよ 配信開始したの知らないで、昨年末の21H2だと思ってダウンロードしたんだけど 隣り合ったメニューなのにterminalとターミナル(管理者)とか、インストーラが英語のままだったり 前のバージョンでできてたとこが間違ってた Windowsがオープンソース品質に近くなってきたな・・・ 本当にWindowsは酷い酷いってWindows板に書きまくったら 「他所でやってください」の規制がされてしまった 一例を挙げるなら、ファイルをコピーしようとして 「上書きしていいですか」のダイアログの意味不明さも酷いが それをキャンセルしたら無処理で戻るはずが、プログレスバーがスルスルと伸びるんだよ これ怖いよ、上書きしちゃったか確認が必要だ 漢字変換も使い込んだら30年前の、候補が頻度順で並んでる方が速いよ もうあちこちメチャクチャ macOS や iOS でディレクトリというかフォルダのコピーするとき 同名のフォルダがあったら内容マージされるもんだと思って 確認ダイアログでOK押したら元々のフォルダの中身が消されたのは良い思い出 VB6のシステムをVB.netで書き直す作業をプログラムわからない人に説明したい場合、 どういう例えだせばわかりやすいかな・・・・? VB6とVB.netは名前に同じVBとついていますが、 別の言語です。翻訳の多大な労力が発生します。 日本語から中国語に翻訳する作業を同じ漢字を使う 文化なんだから簡単でしょと言っているようなものです。 とか? 中途半端に知識のある客 「でもVB6で書いてるものをVB.netに自動で変換 出来るって聞いたよ?」 COM、OCXを置き換えたり、 コントロール配列が使われているばあいの置き換え VB6からVB.net2008、Visual Studioへの 2段階アップグレード等をどう説明したらいいんだ。 orz >>741 日本語と中国語の漢字で似て非なるものの説明いいかもしれないですね ありがとうございます 開発期間すごく甘く見積もりされていて辛かったので これで少しでも伸ばせたらいいなぁ・・・ >>741 中途半端に知識のある人には、自動変換ではCOM、OCXといった共通で使われる古い部品はそのままだから、新しい部品に置き換えないとVB6からVB.netに書き換えても今後動作しなくなる可能性が高く、.NETの部品は規格が違うから書き換え作業が増えますよと伝えていた でも実際は、.NET Frameworkのサポート期間の方が短くて、初期のバージョンに移行した方が先に寿命を迎えた コントロール配列の問題はCOM、OCX問題が無ければ、そのままでも機能するから書き換えてないのも見かけるよ セキュリティ面では改善されたのかもしれないけど、VB6からVB.netへの書き換えって、本当に必要だったのかな、新しい機能を使うためには.NET Frameworkへ移行した方が良かったものもあるけど、VB.netの開発は終了されて今後新しい機能が追加されないみたいだから、移植時に新しい機能が必要なかった場合は意味が無かったと思う COM、OCXがそのままでVB.net化されたのなんか、全く移植した意味が無かったと思う >>740 最近のVB.net移植案件の目的ってなんなんでしょか? うちの会社は最近のはC#へ移植してるよ 言語は併用できるから古いコードはVB.netへ移植して、新しい部分はC#でも良いけど、VB知らない人にはVB使う意味って無いよね ところでVB.net化して、VB6名前空間がそのまま残ってるコードをどう思います? >>743 >最近のVB.net移植案件の目的ってなんなんでしょか? 私のケースの場合は、単に担当する私の経験がC#よりVB経験があったためと 依頼側はVB6とVBって似てるからいけるんじゃない?っていう認識のもとでの依頼でしたね ここ数年C#触れてなかったけど、今の主流は次世代とかのこと考えるとC#のほうがいいのかなぁ VB6からの移植はIEみたいに いつMSが切るか分からんのと 保守のVB6エンジニアの確保が難しいからじゃないの? >>743 VB6はランタイムはサポートされていても開発環境はすでにサポートされてないはずだが .NETはサポート切れたら寿命なのに、VB6はサポート切れても寿命じゃないと? >>746 1.VB.NETは、新しい機能追加が終わったから、もしVB6の機能で良いというならVB6で良い 2.VB.NETでできることはC#でもできるから、どうせ移植するなら機能追加のあるC#の方が有利 3.実行環境については、VB6のサポートは続いてるけど、.NETはバージョンによっては終了 たとえば、NETFramework4.0は開発環境(VS2010)のサポートが終了されちゃったし、置き換えられて4.0実行環境もサポート終了された 開発環境のサポートが終了されたのを妥協するとしても、4.0で開発したなら最終バージョンの4.8の動作確認が必要になるけど、VS2010しか持ってないと対応できない うちの職場は社内設備用の開発なんで、新しい開発環境が買ってもらえない MS以外のメーカーから提供されるライブラリが高価で初期導入の時にしか買っていないのも問題なんだけどね うちの職場ではWin11については現在確認中だけど、万一のためにVB6用にXpは仮想化してあるし、Win10までVB6の開発環境は現役で使えてる VB.NETはMSのサポートが必要で、どうしてもVBが使いたい時だけの選択肢でしかない、それなら付加機能のあるC#に移行するよねって話で新しいものはC#に移行しているよ VB6のIDE環境だけどWIN11で普通に使えてるよ。 ランタイムとか自分で入れ直さないといけないけど。 旧VBはXPの仮想マシンで動かしてるわ まるごとコピーすれば5分で準備できる それって、Win10上で、バーチャルXPを動かしてるってこと? XPマシンがあるならVBの開発環境構築にバーチャルPCは不要だものね Win10上でVBPを起動すると、レジストリの登録がなんたら〜とメッセージが出て それはもう一度やれば正常にプロジェクトがロードされたのだけど 昨日は10回近くリトライしてもダメで ダメなときはダメという感じになってきた 何かが不安定で、ネットで調べたら管理者権限で立ち上げるとかあって 今調べている最中だけど なんか古代VBに対する配慮がなくなっているのではないかと不安 バーチャルXPが作れるなら、それも考えておかないといけないかも >>750 VB6 IDEをWin10以降で動かすネット記事は 初回起動時のみ管理者権限で起動って書いてるトコ多いけど レジストリの読み書きするプログラム作る場合は 常に管理者権限で起動するようにしないと 書き込みエラーで怒られるよ。 >>750 うちはHyper-V使ってるよ Xp用の統合環境用ドライバがServer2012R2くらいまでしか対応してなかったから、Server2012R2から持ってきた 多分Win8.1くらいまでは対応してたんだろうけど、Win10以降はWindowsUpdateでドライバ取得するようになって、Xp未対応なんだよね Xpについては、XpモードのVHDをそのまま使ってるのもある なぜかアクティベーションできたPCとできなかったPCがあって、仕方ないから新規に入れた環境もあるよ Hyper-VはWin98やMeは対応できないみたいなんだけど、他社の仮想環境なら使えるのかな VirtualPCやVirtualServerなら実行できるのにね VB6もそうだけど、F-BASICの環境構築にXpは役立ってる Xpより後のOSでは、デバッグができなかった F-BASICはXpすら未対応ってことになってるけど、Xpなら動かすことができた VB6→C#への移行案件が地元で有るけど 募集かけても人が来ないのかずっと募集中 よほどVB6からの移行は皆嫌ってるって事か 単純に古代VB言語を使いこなす現役が少なくなっているんじゃないの? なんでC#にする必要があるのか聞いてみれば たぶん、例えばTreeViewとかの非標準のコントロールを使っているから 起動すらしないということなんでしょ そのコントロール相当のものを自作すれば済む話なんじゃないの 自作コントロールを作っておけば、そういう案件全部食えるのでは 例えばポップアップメニューの項目の中で、使えない項目は Enabled=Falseにすると、エンボス表示になって、これは使えない項目だと瞬時に分かったのに 今時のWindowsはタブレット対応のためか、滲んだフォントを使うので、エンボス表示が使えない そこで文字色を灰色にしたり、背景色を変えたりの統一されていない仕様になって非常に分かりにくい それはほんの一例だが、Windows開発の先人たちが改良を重ねて使いやすくしてきたものを 全否定する今時のWindowsは、GUIが子供が作ったようにバカげたものになっている コントロールパネル関係なんか悲惨すぎる 場当たり的な思いつきの仕様が使われて、もう末期的だろう 開発チームを統括してる奴がいないようだ しかしXP時代のよきGUIがVBランタイムとして残されていくのは救いだな 今やWindowsの売上はMS全体の売上の2〜3割しかないからあまり工数を割けないんだろうねぇ >>758 今のWindowsって今までに蓄積したものをぶっ壊した挙句、 UIが中途半端なキメラ状態になってしまってるんだよな もう、モバイル完敗なんだから、サッサと諦めて 今までのデスクトップ路線に戻してほしいわ XPが完成形だよな。それ以降は劣化だよ。 進数計算とか空で出来ない雑魚文系なので、XPの関数電卓は未だに重宝する。 今のWindowsの電卓は最低だわ フリーソフト以下だ たぶん新人の勉強のために作らせたんだろうが あんなものをよく上司がOK出すなと思う アンドロイドスマホの電卓はセンス良い さすがGoogle >>757 かも知れないね、、 まあ.NET Coreとか視野に有るならVB.NETよりC#にしとく方が良いからね 古いプログラムは余り手を付けずに延命できるならそれに越したことはない 表面化してこなかったバグを掘り起こしてしまいかねない C#に移行なんて話は、どうせ元のソースの全てを理解してやろうとは思ってないだろ 「Internet Explorer 11」は2023年2月の パッチで完全無効化 ~Microsoftがアナウンス/ そろそろクラシックVBも引導渡されるかな。 そもそもプロプライエタリな開発ソフトなんて時代遅れだからっ! これからはフリーなg++またはclang++やろ? もちろんGUIはwxWidgetsッ! Qt?・・・もう知らん AmazonのKindle for PCがQtのようだ edgeをdom操作出来るようになるまではie消すなよ。 VB6の様な実行即起動のP-CODEライクな開発環境はもう出ないのでしょうか? VBだけで出来ることなら簡単だけど、 OSの機能にアクセスしようとすると急に難しくなる VBAにはコントロール配列が無かったから複数の同じコントロールを 操作するのが面倒だった気がする VBってトライ&エラーがやりやすいから やっつけ的な糞コードができやすいというのはあるかも・・・ 難しいかどうかを気にするのって やらない言い訳を探しているように見えるな vbもvbaどちら様も難しいございますわよ。 だってプログラミングなんだもん。 Picture1をコンテナとして、複数のImageコントロールが乗っています そのイメージを Clipboard.Clear Clipboard.SetData Picture1.Picture か Picture1.Image でクリップボードに入らないかと思ったらImageは無視されてしまいます Picture1に直接描かずに、Imageを乗せるのは、 Imageはドラッグで動かすものだからです ウインドウ丸ごとキャプチャは、Picture1がウインドウより大きくて スクロールしながら見るものだからダメです 全Image を BitBild でPicture1にコピーしてから Clipboard.SetData するしかないでしょうか >>781 Picture1のAutoRdrawをTrueにしてもダメでしょうか? >>781 これでどうでしょうか? フォーム上に Picture1 と Command1 を置きました。 Picture1 上には任意の Image を置いてください。 ※ Picture1 の ScaleMode プロパティは、「3 - ピクセル」に設定してください。 Option Explicit Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hDC As Long) As Long Private Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hDC As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long Private Declare Function SelectObject Lib "gdi32" (ByVal hDC As Long, ByVal hObject As Long) As Long Private Declare Function DeleteDC Lib "gdi32" (ByVal hDC As Long) As Long Private Const SRCCOPY = &HCC0020 Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long Private Const CF_BITMAP As Long = 2 Private Declare Function OpenClipboard Lib "user32" (ByVal hWnd As Long) As Long Private Declare Function EmptyClipboard Lib "user32" () As Long Private Declare Function CloseClipboard Lib "user32" () As Long Private Declare Function SetClipboardData Lib "user32" (ByVal uFormat As Long, ByVal hData As Long) As Long Private Sub Command1_Click() Dim hDC As Long Dim hBitmap As Long Dim hBitmapOld As Long hDC = CreateCompatibleDC(Picture1.hDC) hBitmap = CreateCompatibleBitmap(Picture1.hDC, Picture1.ScaleWidth, Picture1.ScaleHeight) hBitmapOld = SelectObject(hDC, hBitmap) BitBlt hDC, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, Picture1.hDC, 0, 0, SRCCOPY If OpenClipboard(Me.hWnd) Then If (EmptyClipboard()) Then SetClipboardData CF_BITMAP, hBitmap End If CloseClipboard End If SelectObject hDC, hBitmapOld 'DeleteObject hBitmap DeleteDC hDC End Sub 全 Image を Picture1 に BitBlt する必要な無いみたいです。 VB6 の Clipboard オブジェクトを使用する場合は、StdPicture にする必要があるみたいですが、 hBitmap を StdPicture に変換するより Clipboard API を使用して hBitmap を渡す方が簡単だと思ったので この様にしました。 ありがとうございます ありがとうございます ありがとうございます できました! 複数のImageは透過Gifでして、重なり合っているので ImageはたぶんBitbldできないから、一旦ワーク用のPictureBoxにコピーして それをZオーダーの下層から順にPicture1にBitbldするのに EnumWindowsとGetNextWindowを調べているところでした でもPicture1はウインドウより大きいので やはり見えない部分は内部では保持していないのでしょうね そこはコードから少しずつスクロールしながらキャプって繋ぎ合わせようと思います 私の趣味に付き合って頂いた善意あるあなた様のご健康を願っていますので一言 「ワクチンは絶対に打ってはなりません」 これから世界は大混乱の終末の様相となり大勢の人々が無くなります もし自由な時間がおありでしたら海外情報を紹介しているサイトをご覧になることをお勧めします オレはワクチン打つたびに副作用が強くなっていったから3回で止めたわ 人によっては1回目で強烈な副作用に襲われたらしいが・・・ マイクロソフトもWindowsアプリケーションの開発手段のひとつを提供しただけで、VB6.0はもともと本流ではない。 それなのに予想以上に人気が出てしまって(ソフトに掛けるお金や時間もなく) 切るに切れずに今に至るのでした 簡易的なものはDelphiに任せてどんと構えていれば良かったのかもしれないな でもVB4〜6の出来は素晴らしい Windows本体やエクセルなんかより頑張ったと思う 文句の付け所がほとんど無い 思うに、MSはある時点で突然スタッフが劣化し その前に終了したVBは良く見えると ホントかウソか分からんが実は日本人が裏で頑張ってた説もあるんだよな ある日突然日本人に触らせなくなってから劣化して逝ったとか・・・ 日本人はソフト開発向かないと言われているが 一部には特別優秀な人が居るんだなぁ MSIMEがうんこになったのは開発拠点を中国に移したせいだと聞いたな 日本から富士通やらNECやらがWindows開発部隊をMSに送り込んでいたのは事実 当時FM-TOWNSを持っていて、富士通系のパソコン雑誌でそういう記事が紹介されてた てっきりWindowsの日本語化、2バイト文字対応をしてるのかと思ってたが Windowsの核の部分から日本人技術者が担当してたと後から聞いた すると松下が加勢した日本のOSであるTRONと、Windowsの戦いは ある意味日本人同士の戦いだったのかも知れんね 戦いというほどではなかったのかも知れないが ゲイツや孫一味によるJAL123便撃墜で終止符が打たれたから アメリカの方では完全に戦いになってた アメリカはスーパー301条を発動したからね ペンタゴンまでTRONには国防上の大問題だとイキってたし 日本人は本当に優秀だよ JAL撃墜のときの中曽根、そして小泉・竹中による日本潰しが始まった こいつら日本人じゃないんだ 海外の調査でも、日本をトップに、香港など東アジア勢が知能指数が高いことが判っている 8ビットCPUの、ザイログZ80やインテル8080は日本人の嶋さんの設計で 嶋さんはインテルに引き抜かれた カナダで製造された世界初の量子コンピューターの原理は日本人の発案 人工知能でブレイクスルーとなったディープ・ラーニングも日本人の発案 しかし日本には白人の言う通りに動く、いわば日本人の足かせとなっている民族がいる 政治家なんか全員そうだ そしてWindows安全神話が始まった (実際は、アメリカに情報抜かれまくってたりして ビルド実行してもエラーもおきずEXEも吐き出されないのはどうやって原因追及すれば 突然VB6やることになってやばいです VB6の寿命半端ねぇっす どうせならWindowsと共に生涯現役で・・・ 同じ機能、同じ性能のアプリを作れるなら 簡単に早く作れる方がいいに決まっているからね Windows10上のVBアプリで テキストボックスに入力していると そのうち漢字入力ができなくなる問題が放置されている もう修正する気は無いのだろう たぶんWindows11上でも同じなんでしょ? VBアプリを再起動すれば復活するのだけど 何かコードを書いて、漢字モードのリセット的なことはできないでしょうか つまり、漢字入力できなくなったら、 それ用のコードを仕込んだボタンをポチッと押すだけで 再び漢字入力できるような・・・ VB6.0なんてマイクロソフトがもう捨てろと言っているのにな マイクロソフトのライバルはマイクロソフトなのである! つまり、VB6の様な手軽に開発出来るソフトを作ってしまったのがいけなかったんや VBが無ければみんな泣きながらVC++使ってたろうから、多分.NETが救世主に見えたんじゃね? >>806 C++も無かった時代を知らないにわかですか? read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる