VBプログラマ質問スレ(Ver.6.0 まで) part63
1 :
デフォルトの名無しさん :
2013/09/01(日) 16:27:03.73
2 :
デフォルトの名無しさん :2013/09/01(日) 16:30:17.20
もう新規で使ってる会社とか無いんだろうけど、保守的な仕事とかあるだろうから立ててみたよ 次期Windowsで動けばまた数年使われるんだろうな
2年くらいまえ、うちのベテランがVB6なら安くなりますよって客にいって 新規の案件でVB6を使おうとしてたのを目撃した。
使い捨てのちょっとしたソフトならVB6使いたくなるという気もわからんではないが
6 :
デフォルトの名無しさん :2013/09/02(月) 09:20:33.33
フレームワークとミドルの使用は一切禁止というクライアントがいる .netはもとよりJavaもダメ。斬新な開発環境はすべてフレームワーク前提だし C++を使って開発かよ?と思ったらなぜかVB6はおk VB6はフレームワークではなくランタイムライブラリなのだとか 思わぬところでVB6の出番 確かに短納期で抵工数でフレームワークなしというクライアントの条件は満たしたが いまひとつスッキリしないのはなぜだろう?
setup.exeだけがあればインストールができる、という事は配布側としても良い点かも
8 :
デフォルトの名無しさん :2013/09/02(月) 13:18:51.62
.netを使うリリースの場合は動作環境としてWindowsバージョンを制限することで対応している 例えば.net Framework 3.5で開発したものを動作条件Wdows 7以上としてリリースする。 この場合、クライアントからWindows XPでも動くようにと言われるとダメだが そこは伝家の宝刀 「Windows XPは来年サポートが終了した直後、凶悪で危険なソフトに豹変します!」 と、マイクロソフト社のマスコミを使った搖動作戦を利用させてもらうw
OS初期インストール済みの.netってアンインストールできなかったっけ?
>>3 気合入れて金と時間を費やして
「やっぱこのシステム使いにくいから止めよう」
となるよりはマシかもしれない
11 :
デフォルトの名無しさん :2013/09/02(月) 20:20:48.23
あげ
話が無いなら無理にageなくても サーバーが完全に回復すればスレも回復するよ
13 :
デフォルトの名無しさん :2013/09/03(火) 09:39:19.78
VB6ってx64環境でもIDEをインストできたんだね。知らなかった。
14 :
デフォルトの名無しさん :2013/09/05(木) 11:10:30.75
アンマネージド版VBのテスト版が米国でリリースされたけど VB6との互換性はどうなんだろう?
おいおいw
>>14 Twipsが使えるから座標系の互換性は高いかもね
演算の結合規則が一部変わってるので注意が必要かも
VB6では、えっ!これって左結合でないの?ってシチュエーションがいくつかあったけど
アンマネージド版VBではC言語的仕様に変わったみたい
17 :
デフォルトの名無しさん :2013/09/05(木) 23:25:28.86
17 \ 4 + 8 = ? これって新VBではどうなる?
19 :
デフォルトの名無しさん :2013/09/06(金) 09:40:19.59
サンプルコードを見る限りTwipsが使われているんだが 何が遅れたエイプリルフールなのかっつー
Windows 8.1でVB6ランタイムのサポートが終了したと愕然としていたら なんとVB6が新しい仕様で帰ってキタというわけか 納得したわん!
とりあえずその新VBとやらの詳細URLプリーズ
プレミアム会員なら見れるだろ?それとも雑魚なの?
くだらん煽りはいいからURLはよ
24 :
デフォルトの名無しさん :2013/09/06(金) 15:44:11.46
そんな律儀な人がいるものか・・・ といいつつ金持ち喧嘩せずということに期待すればよし
25 :
デフォルトの名無しさん :2013/09/07(土) 23:56:19.83
新しいVB出るのか 今までVBで作ったツールが実行できないと生活できそうにないまでになってるのだけど その新VBに移行すれば当分大丈夫かね
26 :
デフォルトの名無しさん :2013/09/08(日) 00:01:21.29
>>25 568行の自作コードを移行したところではLsetのところで警告が一か所出ただけでビルドして動いたよ
Option Explicitを付けてコーディングしてたなら互換性はかなり高いと思われ
Twips単位系もユーザー定義のScale Modeも使える
インタフェース継承だけでなく実装継承も可能になった
いい加減つまらないから。 そんな話どこのニュースサイトにも出てないぞ
29 :
デフォルトの名無しさん :2013/09/08(日) 15:53:21.17
意外にランクの低いMSDN契約しかしてないのねぇ
MSDNサブスクリプションは、キーの取得やダウンロードにはもちろん契約が必要だが、 ダウンロード可能な製品の一覧は誰でも閲覧できるんですよw 馬鹿じゃなかろうか
英語圏プログラマが大量に集まるフォーラムですら何の音沙汰もない
ホントならURL出せば終わりの話だろ。 そこにアクセスする権限があるかどうかは別問題 それすら出さないのは理由があるのか?
33 :
デフォルトの名無しさん :2013/09/09(月) 09:37:50.09
MSDN関係ないだろ?M<SDNに入っていればプレミアム契約の恩恵が得られるとでも? 顔洗って出直してこいよ。
妄想倶楽部のプレミアム会員か
.net推進派としては許せん暴挙 妄想と申そう
36 :
デフォルトの名無しさん :2013/09/09(月) 15:57:18.63
VB Classicか。VB Legacyと来るかと思ったがw
>>36 「Class」というゴロが欲しかったんだと思うな
VB6はXP以降にIDEをインストするとエディタの文字の上にウィンドウが重なると 上のウインドウが消えると重なった部分の文字が消えたり崩れたりしていた。 消えた文字の上を何かのウインドウを動かして窓を拭くように動かすと消えた文字が再描画される。 これがVB Classicでは起こらなくなっただけでも使う価値はあるでしょう。
39 :
デフォルトの名無しさん :2013/09/09(月) 19:50:55.85
>>38 それはテーマの影響だよ
テーマをWindows クラッシックに変えるか、視覚効果をパフォーマンス優先に設定すれば出ない
長年の夢が実現したのか
コントロールとツールボックスをドラッグしたときに 激重になるのをなんとかしてほしい
ならないけど?
コントロール…チェックボックスでもなんでもいいけど…を、コピーして貼り付けると配列にできるよね。 アレを10回繰り返して、縦に (0)〜(9) って配列で並んだコントロールを作りますわな。 これを全部選択してコピー、貼り付けると、(10)〜(19) って配列のコントロールができるわけだけど、 並びもCaption も、コピー元と同じ並びなのに、なぜか配列が (19)〜(10) になっていて、いちいち場所とCaprionを変えないといかんのだが これなんぞ
どうでもいいだろそんなの
配列の添字がどーでもいいってんなら、チェックボックスとかどーやって参照するん?
数千個もあるわけじゃあるまいし、コントロールの作成方法に気を付ければいいだけだろ
48 :
デフォルトの名無しさん :2013/09/10(火) 15:02:40.91
>>44 その仕様はVB6IDEの仕様じゃなくてWindowsの仕様や!
複数選択するとき選択していった順番になるんや!
よう覚えとき!
49 :
44 :2013/09/10(火) 15:26:23.32
数えたら144個使ってた。
うち24個は元なので、残り120個…めどい。
>>48 今試しに、上から順に選んだ場合と、下から順に選んだ場合をやってみたが、どっちも下から昇順になった。
下から昇順ってのが基本なのかな?
もうForでLoadしなよ・・・
コマンドボタンを (0) (1) (2) (3) (4) (5) (6) (7) (8) を色々な選択の仕方試してコピーして貼り付けたが (9) (10) (11) (12) (13) (14) (15) (16) (17) にしかならなかったぞ 左上から順番にナンバリングされたぞ
52 :
44 :2013/09/10(火) 17:04:39.64
>>51 うーん? と思って何もないところでやってみた。 まじだ orz
とりあえず一番最初の手順と同じ、フレームの中に配したそれらをフレームごとコピーしたら、なった。
フレームか、フレームが悪いんか…
普通100個も同じコントロール配列あったら、デザイン時じゃなくて 実行時にプログラムでコントロール生成して配置するもんだ
グラフィカルデザインの限界
>>52 今時本当にVB6の開発環境をスタンバらせている奴がいるのね。びっくりしたなモーw
MSDNのサブスクリプションでダウンロードできるうちは終わらない
俺も仮想PCにVB6 SP6とセキュリティパッチ導入し、ライセンス所持するすべてのアドインとOCX導入済みの仮想ディスクがある
過去にVB6でシステム組んでるところなら、保守用に環境あるとこは多いだろ
マジレスリアル
60 :
デフォルトの名無しさん :2013/09/17(火) 23:31:04.83
新幹線とかの座席を指定したり変更したりするプログラムをVBで作りたいんだがプログラムのソースを教えてくれ!
>>60 今のJR東○の座席予約発券オンラインリアルタイムシステムは俺がVB6で作った
OSはWindows NTだがプリエンティブな環境としては十分だ
未だにVB6のサポートを継続しているのはそのお蔭かもしれない
62 :
デフォルトの名無しさん :2013/09/19(木) 18:55:33.17
Jetエンジン
テスト中は覚えやすい適当なパスワードでもいいけど、本番は絶対バレないのにしろよ。 パスワードがpassだったら誰でもハッキングできるやんけ。
えー、SQL Serverインスコしなきゃいけないの?(汗
66 :
デフォルトの名無しさん :2013/09/19(木) 19:36:49.77
>>63 MDBはネットで共有するとインデックスだけでなくテーブルそれ自体が壊れるのが何とも・・・
データベースは無料のヤツでOK
実際、MDBが壊れるという理由で必要もないのにSQL Server Expressに移行した人が多いのでは? だとすると実行性能が極端に低下したんじゃないかな? Accessは速度面では暴速だったからね
ネットワークでMDB共有するような環境からSQL Serverに移行して極端に速度低下? サーバによっぽどひどいマシン使ってるか、つくりがおかしいとしか思えん
>>69 郵便番号データベースを作成して見るとよくわかるよ
レコード数が膨大になるシステムであるほど差が分かりやすい
SQL Serverが遅いというよりむしろAccessが異常に速いだけ
無論、この話ではインデックスが効かないようなSQL文を平気で書くアホは除外している。
例えば日付範囲の評価にConvert文を使う奴とか。
通信する分だけ遅くなるってオチじゃないの
72 :
デフォルトの名無しさん :2013/09/19(木) 20:31:46.64
>サーバによっぽどひどいマシン使ってるか、つくりがおかしいとしか思えん Accessでも遅くなるようなコードしか書けないロースキルな人だとしたら かえってSQLServerの方が速く感じるかもしれん
共有しているファイルへのアクセス(MDB)とサービスへの問い合わせ/応答(SQL)とでは 速度差が100倍あってもおかしくなかろう
MariaDBおすすめ
ADO DAO ODBC イミフ
77 :
デフォルトの名無しさん :2013/09/19(木) 20:49:15.87
Oracleはダメ
JDBC
RDO
MySQLにしてもMariaDBにしてもSQL Serverより目に見えて速くはならないよ 小規模ザイズのレコードセットに単純なクエリーなら何を使っても大差ない それを言ったらBtrieve最強って話にもなってしまう
SQLite最強
そもそもMySQLもMariaDBもどれもVB6からアクセスできないんじゃないの
ODBCも知らん雑魚
86 :
デフォルトの名無しさん :2013/09/19(木) 21:26:48.49
ここって初心者スレだっけ?あんまりだわ・・・
SQLiteってDLLからAPI使うんじゃなくてODBCを使うもんなのか
またまたすごいのがキタわん!
楽しいスレですね
90 :
デフォルトの名無しさん :2013/09/19(木) 23:15:25.78
<現 行> → <新> ・サーバOS:Windows server 2003 → Windows server 2008R2(64bit) ・CPU:Xeon X 5260 3.33GHz → Xeon E5-2403 1.80GHz ・メモリ:4GB → 32GB ・データベース:SQL server 2005 → SQL server 2008R2(64bit) 上記のようにサーバを入れ替えたところ、VB6.0で開発したプログラムの 処理時間が倍増しました。 処理は、CSVを取り込んで、SQL serverの特定テーブルを更新します。 何が原因でしょうか??? 処理速度アップに何か試してみた方がいいことありますでしょうか? よろしくお願いします。
よお無能
CPUのスペックが下がってるじゃん
GitHubにVB6製のアプリ公開してもいいのかね
SourceForgeに公開するんだ!
>>90 まさかとは思うけど、SQL Server 2005の時と同じバイナリで2008R2にアクセスしてないよね?
もしADOを使っているなら、ActiveX DBのタイプライブラリとしてに何を登録している?
スレチは全員帰れ!
99 :
デフォルトの名無しさん :2013/09/21(土) 11:18:22.06
>>92 旧サーバは5年前に導入、新サーバは先月導入で、新しいCPUほど
1クロックあたりの効率も上がっているので、遅くならない
はずというのが、うちの会社の本部の見解だったのですが・・・
>>97 MicroSoft ActiveX Data Objects 2.8Library
>>97
100 :
デフォルトの名無しさん :2013/09/21(土) 13:23:38.22
そのMicrosoft ActiveX Data Objects 2.8 Libraryってのが、64ビット版かどうか調べよ。 それから、64ビットが単純に32ビットの二倍以上速くなる訳じゃない。本部の責任者の首を切れ。
101 :
デフォルトの名無しさん :2013/09/21(土) 13:44:20.78
使ってるすべてのライブラリとプログラムが64ビット版か調べなさい
>MicroSoft ActiveX Data Objects 2.8Library なぜ6.0ではないの?
103 :
デフォルトの名無しさん :2013/09/21(土) 17:42:42.51
104 :
デフォルトの名無しさん :2013/09/22(日) 01:10:45.52
>>102 プログラムが5年前のもので、開発環境がXPだったからかもしれません。
6.1に上げてみたものの、スピードは変わりませんでした。
現在の開発環境(Windows7 64bit Corei5 3.1Ghz)では、DBへの接続文字列を
「SQLOLEDB.1」→「SQLNCLI10.1」と変更するとスピードアップしたのですが
新サーバではやはりダメでした。
>>103 プログラムとデータベースは同一サーバ内にいるので、LANは関係ないかと・・・
105 :
デフォルトの名無しさん :2013/09/22(日) 03:07:13.24
カワイソス(´;ω;`)ブワッ
そもそも2005のクライアントって2008R2への接続保証してたか?
107 :
デフォルトの名無しさん :2013/09/23(月) 15:59:09.44
>>106 2012まで問題無く接続できてるよ。
保証も何も2008のSQL Server Management Studio自体が2005どころか2000の管理もサポートしてる。
構造はOLE DBへの参照設定みたいなものだからね。OSならわかるがSQLのバージョンに依存する理由はほとんどない。
108 :
デフォルトの名無しさん :2013/09/23(月) 18:35:43.79
>>107 動くのはしってるが、サポートはしてないと思うんだが
110 :
デフォルトの名無しさん :2013/09/24(火) 00:00:50.19
開発環境:OS Windows7 64bit/CPU Corei5 3.1Ghz/メモリ8GB サーバー:OS Windows server 2008R2 64bit/CPU Xeon E5-2403 1.80GHz /メモリ32GB で、開発環境の方が倍以上処理速度が速いんですよねえ。 何でだろう???
112 :
デフォルトの名無しさん :2013/09/24(火) 09:26:26.64
113 :
デフォルトの名無しさん :2013/09/24(火) 09:34:22.77
>>110 SQL 2005のDBをどうやってSQL Server 2008のDBにコンバートしたの?
2005で吐いたDBスクリプトを2008へ持って行ってCreate DBしてみた?
まさか2005のまんまアタッチして、そのまま使ってたりしてないよね?
>>110 まずネットワーク疑えよ
今時のCPUもディスクも十分早いから、ちょっとした処理なら体感できる差にはならんだろ
どっかでTCP/IP有効にしたら同一マシンでも早くなったっての見た気がするぞ
いやいや、まずプロファイリングしろよ
処理速度が遅い原因はCPU、もしくはHDD、そうでなければDBエンジンかアプリの可能性が高いがそれ以外の可能性もある。
同じ経験が俺にもあるよ。どうやって回避したか教えようか?
C#で作り直せば速くなる
119 :
デフォルトの名無しさん :2013/09/24(火) 20:15:37.11
>>113 まさかのそのままアタッチしました。
というか、うちの会社では、皆その方法でやってるので、
そこに疑問は持ちませんでした。
>>114 データベースとプログラムが同一サーバ内にいるのに、
ネットワークが関係あるのですか?
>>119 同一マシンでも通信はしてる
何で通信してるかによって速度差が出る可能性はある
グダグダ言う前にとりあえず試してみろ
121 :
デフォルトの名無しさん :2013/09/24(火) 21:30:55.46
ちょっと意味がわかりませんね
123 :
デフォルトの名無しさん :2013/09/24(火) 22:26:51.74
>>122 DBの作り直し、やってみます。
ちなみに、SQL Server Management Studio 2008で見たところ、
その他のいくつかの項目がTrueになっている以外、ほぼ同じ状態でした。
>>120 一つ気になったのが、Windows server 2003の旧サーバから新サーバへ
ファイルコピーをすると、尋常ではなく遅かったことです。
この辺も関係ありそうでしょうか?
124 :
デフォルトの名無しさん :2013/09/24(火) 22:35:21.51
hdd bench
126 :
デフォルトの名無しさん :2013/09/25(水) 01:52:48.26
>>122 SQL Server Management Studio 2008で互換性レベルをSQL2008に変更した
だけでも、処理時間が2/3になりました。
ちなみに、VB6.0のプログラムをVB.NETにアップグレードし、64bitでビルド
したプログラムを実行させても、VB6.0とさほど変わりませんでした。
倍ぐらい速くなるのかと思ったのですが、こんなものでしょうか?
>>126 どこがネックで遅いのか分からんのに何とも言えんわ
128 :
デフォルトの名無しさん :2013/09/25(水) 07:47:18.66
>>127 本部の人間から、VB6.0からVB.NETへ移行すれば、マルチスレッド対応が
可能となり、64bit環境下での処理速度が劇的に速くなると聞いたので。
130 :
デフォルトの名無しさん :2013/09/25(水) 10:17:36.90
>>128 マルチスレッドと64bitはSQL Serverのクエリー速度とほとんど相関しないよ
まあ、ほとんどの処理を呼び出し側のプログラムで行いSQLへは単純クエリーとかなら
全く影響しないと言えば嘘になるけど、その場合は作り方の問題であって・・・
明らかに体感的な速度が低下したと感じる場合、実際には2倍以上の遅延が出ているはず
その原因を探るには、単純ファイルコピーで遅かった原因をつきとめてクリアすることから始めるべき
SQLの性能がいくら向上しても、遅延の発生しているLAN経由では10年前の性能に逆戻りだよ
>>126 つか、なんで計測しないんだよ。
イライラするわ。
132 :
デフォルトの名無しさん :2013/09/25(水) 14:50:39.12
スレ違いみたいだけど、VB6からアップグレードウィザード通してVB.NETに移行しただけでマルチスレッド対応になるの?
133 :
デフォルトの名無しさん :2013/09/25(水) 14:56:31.16
134 :
デフォルトの名無しさん :2013/09/25(水) 22:20:34.11
>>133 結局ならないのか。
本部の人が対処法はこれしかないみたいに言ってきたので、頑張って
移行したのにくたびれもうけだったなあ。
>>130 再度お聞きするのですが、VB6プログラムとデータベースが同一サーバー
内で同居している、いわゆる「localhost」の環境でも、LANのスピードと
SQL serverの処理速度に相関関係があるということでしょうか?
なかなか理解が出来ないもので・・・
んなこたーない
136 :
デフォルトの名無しさん :2013/09/25(水) 23:56:13.27
>>134 共有メモリを有効にしていればLANは一切使用しないけど
local設定だとLANに出るよ
LANケーブルを抜いてみなよ
TCP/IP自体が無効になるだろう?
初心者じみた質問で申し訳ありません Windows7でVB6のプログラムをコンパイルしようとしても〜.exeの作成というメニューが灰色のままでコンパイルできません 以前はコンパイルできたはずなのですが… 現象、原因、復旧方法をご存じの方がいましたらご教授の程お願いします
>>134 何度も言うようだが、プロファイラがあればそれで、なければ測定コードを埋め込んでどの部分が
どれだけ遅くなったのかまずはっきりさせろ。
そして遅くなった部分だけを切り出して、別の手段で(例えば別言語で同じことをやってみるなど)
同じ事をやってみたりして、原因を探れ。
データベースアクセス関連のみが遅いということであっても、
・コネクト
・検索
・更新
・コミット
それそれの時間を計測し、どこが遅いのかを絞れ。
140 :
デフォルトの名無しさん :2013/09/26(木) 11:36:22.96
むしろ非管理者で起動できるの?
>>140 管理者として起動しています、アクセス権限もフルコントロール状態です
ちなみにメニューのファイル-コンパイル(〜.exeを作成)の所が灰色になるだけでそれ以外の動作は正常に動きます
新規にプロジェクトを作成しても同じ?
>>144 はい
このままスレを消費させるのも気が引けるので
以前はコンパイルできていたのを勘違いじゃないと信じてシステム復元ポイントを幾つか遡って対応してみます
ライセンスが消滅してビルド制限がかかっているみたいだね もしかしてWindowsが海賊版だったりしてない?
Dim a as Variant a = "0" If a = 0 Then Trueにならないようにする一番シンプルな方法を教えてください
それ以前に何がしたいんだ。 問題設定が間違ってる問題を解いても無駄
VarType関数で
150 :
デフォルトの名無しさん :2013/09/27(金) 08:21:22.65
IDE環境でステップ実行とかの停止中に、 コードウインドウ上の変数にマウスカーソルを乗せると、変数の内容をポップアップで表示するでしょ 久しぶりにVB6を使ってみたらそれが出なくなってる XP、VB6ですがGoogle日本語入力が原因でしょうか 漢字モード切り替えをポップアップで教えてくれるでしょ その機能とバッティングしてるんじゃないのか 私はこれからオナニーで忙しいので誰か調べといて
I コ 久 X 漢 そ 私 ?
>>147 Dim a as Variant
a = "1"
If a = 0 Then
153 :
デフォルトの名無しさん :2013/09/27(金) 19:16:54.24
Dim a as Variant a = "0" If "a" = 0 Then
Dim a as Variant a = "0" If "a" <> 0 Then
間違えた Dim a as Variant a = "0" If a <> 0 Then
156 :
デフォルトの名無しさん :2013/09/27(金) 19:54:28.80
Dim a as Variant a = "0" If "a" = 0 Then Trueにならないようにする一番シンプルな方法を教えました
IfからEnd If(かElse)までを削除すればいいと思うよ コードもすっきりするし一番シンプルじゃないかな
>>147 Dim a as String
a = "0"
If a = 0 Then
VBってしょぼいね
vb6は日本語ドキュメントがしっかりしていた。 今は機械翻訳で適当。 だからvb6はこれだけ根強いんだと勝手に思っている。
162 :
デフォルトの名無しさん :2013/09/28(土) 12:24:38.14
>>160 過去の栄光を声高々に言われましてもねぇ
>>162 過去のソフトなのに今なにを期待してるんだ?
>>164 手元にIDEが無いので確認できないが、
本当にTrueになるの?
Variantじゃなくて、Stringで?
他の言語のような === の厳密な比較じゃなく == の比較だから
VB6って、癖つよくね?
いやVB6はふつーに使いやすいと思う
169 :
デフォルトの名無しさん :2013/09/29(日) 01:20:36.61
>>136 >>138 いろいろとアドバイスありがとうございました。
まずは、Windows server 2003のサーバから、Windows server 2008R2への
コピーが尋常ではなく遅い件は、昨日、「snp 無効化」の実行により解消
され、速くなりましたが、SQL serverの処理速度アップには効果なしでした。
その他対策として、以下のことを行いました。
・データベース接続文字列の変更:SQLOLEDB.1→SQLNCLI10.1
・メンテナンスプランウィザードによる、インデックスの再構成、統計情報の
更新等メンテナンスプランを毎日実行
・tempdbをコア数分追加
・SQL Server Management Studioにて、データベースのプロパティ−オプション
より互換性レベルを変更:SQL2005→SQL2008
・SQL Server Profilerの実行(TSQL_Duration/フィルタ:Duration「1000」以上)
明日の夜中実行される処理のログとトレース数値を月曜の朝に送っていただくことに
なっているので、その後、解析です。
しかし、不可解なのは、同じ完全バックアップファイルをリストアしたデータベース、
同じCSVファイル、同じVB6.0のプログラムを使用し、サーバ機でもない、デバッグ用
パソコン(Windows7 64bit/Corei 5 3.1GHz/8GB)が一番スピードが出ることですねえ。
新サーバ(Windows server 2008R2/Xeon E5-2403 1.80GHz/32GB)の2倍以上の処理
速度が出ます。
また、デバッグ用パソコンには、SQL server 2005がインストールされているのですが、
処理速度はSQL server 2005の方が速いです。これも不可解ですねえ。
>>169 サーバーだけど、ActiveDirectoryのデータベースおいてないよね?
それもSQL Serverのデータベースファイルと同じ物理ディスクに
そこが大丈夫なら、やっぱCPUのクロックの差じゃね?
ディスク構成も接続プロトコルも書かないような馬鹿に何言ってもダメだ
sendkeyでctlきー押しながらスペースキーを押す動作はどう書いたらいい?
SendKeys?とりあえずヘルプ見てみようぜ。
mk:@MSITStore:C:\Program%20Files\Microsoft%20Visual%20Studio\MSDN98\98VS\1041\vbenlr98.chm::/html/vastmSendKeys.htm
ctrlやshiftやaltの組み合わせかた書いてあんじゃん
何度も話題には出てると思うが、配列の数え方だとか 配列なら0からはじまるのに、コレクションなら1からとか。
そこらへん使いづらいよね
QuickBasicはQBasicやQB64が出てるし TurboPascalはFreePascal、 DelphiはLazarusとかあるのに VBにはオープンソースの互換VBが出てこないのが不思議だな
互換作るメリットは?
VBAやVBSがあるし、VB6互換のを作る価値ないんとちゃう
>>179 オプソの寿命は使ってる人間の数だからな
VB6に関してMSのサポートが終わろうが、新OSに未対応になろうが
オプソ版があれば需要がある限り使える
>>180 VBAとVBSとVB6は全然違うじゃんw
182 :
デフォルトの名無しさん :2013/09/30(月) 11:57:39.33
>MSのサポートが終わろうが、 オープンソースの互換VBとやらは誰にサポートされるのかね
VB.Netでええやん?
互換っていうのはソースコードが互換ってこと? バイナリがVB6ランタイムとか使うってこと?
MSDNに載ってるVB6のランゲージリファレンスを適当に満たせば互換?
互換を目指すならVB6にそなわるバグやエラー発生個所をちゃんと再現しないと バグやエラーを意図的に使ったコードとかあるんでしょう?
>>176 >配列なら0からはじまるのに
ダウト
VBでは配列は好きな数字から始めれます
Option なんちゃらだな
Indexの最初の番号が0固定でないVBは使いづらい
190 :
デフォルトの名無しさん :2013/09/30(月) 14:31:57.07
>>188 Option Baseだと0か1しか選べない
Dim Hoge(7 To 53) As Integer
みたいなのじゃね?
空の配列がVariantでしか扱えない
互換とやらの定義が分からない ソースコードがそのまま使えて、挙動もほぼ同じってこと?
193 :
デフォルトの名無しさん :2013/10/01(火) 00:40:58.78
>>171 ディスク→C:300GB×2/D:300GB×2/E:300GB×2(Raid1/SAS 15000prm)
接続プロトコル→共有メモリ(localhost)
※改めてVB6.0プログラム実行時のタスクマネージャーを見てみたら、
4コアの内1つしか動いておらず、残り3つはほぼ休みっぱなし。
それでいて、新サーバの搭載CPUはハイパースレッディングやターボ
ブーストも未対応でクロック数も落ちてるとなると、CPUが原因かなあ?
CPU使用率を引き上げて処理速度を上げるような方策はないですかねえ。
アホだこいつ
VB6ってシングルスレッドだし VB6互換のコンパイラ作るだけならそんなに難しくないんじゃないの IDEまで作るなら苦労も多いだろうけど
互換ってのはあくまで互換であって 性能面までVB6レベルまでに仕上げる必要もないんだし
C#あたりでVB6互換のコンパイラとIDEを作ればいいんじゃね C#って簡単そうだし
199 :
デフォルトの名無しさん :2013/10/01(火) 07:00:35.83
>>198 Windows server 2003のサーバから、Windows server 2008R2への
コピーが尋常ではなく遅かったのですが、「snp 無効化」の実行により解消
され、速くなりましたが、SQL serverの処理速度アップには効果なしでした。
200 :
デフォルトの名無しさん :2013/10/01(火) 07:34:34.38
>>198 1.「snp 無効化」の実行により、Windows server 2003のサーバから、Windows
server 2008R2へのコピーが尋常ではなく遅い件を解消
2.データベース接続文字列の変更:SQLOLEDB.1→SQLNCLI10.1
3.メンテナンスプランウィザードによる、インデックスの再構成、統計情報の
更新等メンテナンスプランを毎日実行
4.tempdbをコア数分追加
5.SQL Server Management Studioにて、データベースのプロパティ−オプション
より互換性レベルを変更:SQL2005→SQL2008
1〜5全て新サーバにおけるVB6プログラムによるSQL server更新処理速度UPに効果なし
2,4,5により、Windows7 64bitのデバッグPCにおけるVB6プログラムによるSQL server
更新処理速度UPに効果あり
(119分→62分/新サーバは同一CSVによる更新処理を行って150分)
SQL Server Profilerを実行(TSQL_Duration/フィルタ:Duration「1000」以上)
したが、88分の処理差につながるような数値は出現せず
202 :
デフォルトの名無しさん :2013/10/01(火) 13:27:17.39
SQLOLEDB と SQLNCLI どっちを使うべきなのかな? VB6でもやっぱり.net用に実装されたNative Clientを使うべきなのだろうか?
細かくミリ秒単位でログだしてどこで時間食ってるか比べてみるべきだよ そうしないと何もわからないよ
>>202 Native ClientはSQL Server2005からバンドルされるようになった専用ドライバーで
OLE/DBやODBCを含むがADOやDAOは含まない。
ADOやDAOが必要な場合は結局MDACも必要になる。
MDAC(ADO)+Native Client(OLE/DB)で使って問題ない。
ちなみに.NETから使う場合は.NET Data Provider for SQL Serverが
.NETに含まれるのでNative Clientは不要。
.NET Data Provider for ODBC + Native Clinrt(ODBC)
.NET Data Provider for OLE/DB + Native Clinrt(OLE/DB)
の組み合わせは推奨されていない。
>>204 簡単なベンチをやってみたんだが
3万件のレコードから抽出、挿入、更新、削除とやってみたところ
SQLNCLIの方が32%〜46%程度高速となったが
なぜこんなに差が出るんだろう?
むしろOLEDBの方がシンプルで高速だと思うんだけど
まあケースバイケースなのだろうが・・・
ADO = OLEDBではないのか?
ADOはOLEDBのラッパー、VBやASPから使いやすくしたもの
>>207 Native Clientの位置づけは?ADOとOLEDBの間?
209 :
デフォルトの名無しさん :2013/10/01(火) 14:38:32.54
|------------------| | SQL Server | |------------------| | Native Client | |------------------| | OLEDB | |------------------| | ADO | |------------------| | VB6 | |------------------|
>>208 ネイティブのCLI(コールレベルインターフェイス)に加えて
OLE/DBのインターフェイスとODBCのインターフェイスを
併せ持ってるモノリシックドライバー
VB6からADO経由でOLEDBを使用してSQL Serverへアクセス |------------------| | SQL Server | |------------------| | OLEDB | |------------------| | ADO | |------------------| | VB6 | |------------------| VB6からは直接Native Clientを使えないがADO経由で使える |--------------------| | SQL Server | |--------------------| | Native Client(OLEDB)| |--------------------| | ADO | |--------------------| | VB6 | |--------------------|
212 :
デフォルトの名無しさん :2013/10/01(火) 14:53:30.49
SQL Server 2012 以降は SQL Server Native Client OLE DB プロバイダーが廃止されたから注意な
213 :
デフォルトの名無しさん :2013/10/01(火) 14:54:57.03
>SQL Server 2012 以降は こめん、SQL Server 2012 まではサポートされてた つまり、SQL Server 2012 の次のバージョンはVB6では使えないって事になる とうとうVB6も終わりに近づいたなw
215 :
デフォルトの名無しさん :2013/10/01(火) 15:01:11.27
>>214 MDAC以来、ODBCは古い仕様だから使うな、OLE-DB Providerにしろ、とリード。
LINQの都合で.NET Frameworkを使え、と誘導。
それが手のひらを返したように、古くさいODBC接続にするだと?
ODBCは他のプラットフォームとの接続に必要だからなくすになくせないのかな MDACのOLEDBドライバが引き続き使えるとかないの?
ODBCをラップする新たなインタフェースがActiveX(COM)でサポートされるとは考えられんしな。 今更SQL ServerへDSNで接続とかありえんわ。
218 :
デフォルトの名無しさん :2013/10/01(火) 15:36:26.17
>>216 >MDACのOLEDBドライバが引き続き使えるとかないの?
たぶんAzureでもその手が使えるだろうが、使えるってだけで機能や性能が制限されるだろうね
こんなアホ企業放っておいてみんなで仲良くJavaへ行こうか?w
こんどはOracleの高額なサポート契約に縛られるのか・・
OLE ADO DAO 何て読むの?
おれ あど だお
俺アドだお!
オリィ アドゥ デイオ
224 :
デフォルトの名無しさん :2013/10/01(火) 21:04:00.73
俺、亜土だぉ
>>199 お前がSQLServerを理解してないのは分かった
ファイルコピーとか聞いてねえよ。SQLServerが使ってるプロトコルどうなってるかって言ってるんだよ
お前には無理だから、素直に金払ってどっかにコンサル頼め
226 :
デフォルトの名無しさん :2013/10/02(水) 22:09:06.60
>>225 ご親切にどうも。
でも、もういいよ。解決したし。
LANとかプロトコルとかやけに拘ってたみたいだけど、全然関係
なかったし。
227 :
デフォルトの名無しさん :2013/10/02(水) 22:21:52.63
解決方法くらい書けや
228 :
デフォルトの名無しさん :2013/10/03(木) 05:33:54.29
229 :
デフォルトの名無しさん :2013/10/03(木) 05:34:39.44
ここの回答者は役立たずばかりのくせにすげえ偉そうにしてるゴミばっか
ボトルネックがCPU、ストレージ、ネットワークのどこにあるのか わからないことには、これ以上アドバイスのしようがない 複数コアのうち1つだけ動いてるということだけど、 その1コアの稼働率はどんなものなの?
>>228 類似トラブルが発生した人が解決方法を見つけやすくなるため
233 :
デフォルトの名無しさん :2013/10/03(木) 18:47:36.82
>>230 4コアの内、稼働しているのは1コアのみで稼働率は25%前後。
本システムは、DBの構造上、バッチ系プログラムによるマルチスレッド処理が
不可であり、コア数を増やしてもパフォーマンスに影響しないことが判明。
故にディスクアクセススピード、CPUのクロック数などに処理速度は依存する。
今回は、ディスクはSASの15000RPM相当のものを積んでおり、CPUのクロック数が
極端に落ちたことが原因と判明。
本システムの推奨CPU(Xeon E5-2637(3.50GHz)以上)を無視して、安い
CPU(Xeon E5-2403(1.80GHz))を購入したのだから、そりゃ処理速度は
落ちますよ、プログラムのマルチスレッド処理化による処理速度UPは
出来ませんので、CPUを高性能なものに交換してくださいという結論になり
ました。
234 :
デフォルトの名無しさん :2013/10/03(木) 18:57:05.73
>>232 なんでそんなことする必要あんの?
てめえの自己中にはつきあえねえな
>>233 なんだ、早くに答え出てたジャン
機器選定で営業トークにのせられたのか
>>234 必要もないし義務でもないよ、法律もないし法的拘束力もないし
解決法書くってのはただのマナーだから
マナーなんてのは守る必要性はないからね
238 :
デフォルトの名無しさん :2013/10/03(木) 20:00:41.81
>>236 てめーがやってんのはただの自己中だ
マナーならもしよろしければと枕詞を添えて丁寧に依頼するべきだ
できないのならてめーにマナーを語る資格はねえ、ちなみに俺は秘書検定一級もってる
お前は中卒資格しかもってないだろ、じゃあお前が完全に間違ってるってことだ
Xeon E5-2403でCPUネックか... 稼働率25%って、単コアの話じゃないよな? 確かクライアントも同一マシンに乗ってたんじゃなかったっけ ま、どうでもいいか
240 :
デフォルトの名無しさん :2013/10/03(木) 20:03:59.54
一瞬VBAスレかと思ったぜ
242 :
デフォルトの名無しさん :2013/10/04(金) 00:03:56.15
>>235 サーバはうちから入ってないんですよ。推奨スペックだけ出したんですけど
結局、コストカットでチープなCPUにされて。
ユーザーからしたら、コア数を増やそう(2コア→4コア)という考えの
もとに選定したようですが、いかんせんうちのシステムがシングルスレッド
稼働が前提で、コア数を増やしてもパフォーマンスに何の影響もないなんて
今回の調査で本部から回答があるまで誰も知らなかったことですから。
今までどのユーザーもクロック数3.5GHZ以上のCPUのサーバしか納品して
こなかったので、誰も気づかなかったようです。
クロック数1.8GHzのCPUなんて、ためらいはなかったのかなあ。
データベースを使ってるのにシングルスレッド前提なのか
フロントがOLTPやWEBなら分散可能だろうけど バッチ系はあらかじめ分散する前提で作らないと分散にならないうえ たいていのケースでは分散化してもパフォーマンスの向上につながらない
245 :
デフォルトの名無しさん :2013/10/04(金) 12:01:18.41
BIOSでCPUの動作をマルチからシングルに切り替えできる場合に限るが ボロプログラムがマルチコアで動作が遅いって場合は シングルにしてみろ、高速で動く場合もあるぞ
だいたい、DBのテーブル設計もボロボロなんだろ キーやインデックスの設定とかボロボロなんじゃないの? いまどきフリーのDBでもかなりのレスポンス叩き出すぞ 不定期にPostgreSQLに100万件ほどのテーブルを取り込んでるけど 30秒ほどで取り込める、前後の処理と合わせても4分かかってないが・・・
winNT3.15のころにSQL ServerへAccessからアタッチして 数万件のデータを処理しようとして 処理時間50分とかかかったのを思い出した、 ODBCがタイムアウトして途中で失敗したりとか散々だったが そんなレベルの話なのか?www
249 :
デフォルトの名無しさん :2013/10/04(金) 13:21:52.87
>コア数を増やしてもパフォーマンスに何の影響もないなんて >今回の調査で本部から回答があるまで誰も知らなかったことですから。 前からちょくちょく出てくる本部の話だけど、かなり頭の悪いスキルの低い集団の匂いがする たとえアプリがシングルスレッドであっても、そのアプリがAPIもドライバーも使わず 本当に純粋に機械語コードのレベルで自分のコード内だけで動く演算プログラムなのであれば シングルスレッドだからマルチコア環境は意味がないと言えるだろうが 実際にはAPIやドライバを通してOSのプロセスやIOプロセッシングなど マルチスレッドで処理されるサービスの走行時間が大半になるのだから 自分が作ったアプリがシングルスレッドでも、マルチコアリソースを十分に使用するのが普通だけどね。 タスクマネージャのCPU負荷のグラフを見れば猿にもわかる事なのだけれども 例えばDBアクセスで高負荷になるようなアプリをシングルスレッド代表なVB6で作って 走行させた場合、各コアのCPU負荷グラフが同じような山なりになって表示されるのはわかるはず。 もしシングルスレッドアプリの走行が1コアしか使わないのなら、どれか1つのグラフだけが動いて 残りのコアのグラフはフラットなまま変わらないはずだろ? そんなスキルも経験もない連中が本部にいる会社ってどこだよ? 伊藤○やC○Kだってもう少しはまともな連中だよ?
252 :
デフォルトの名無しさん :2013/10/04(金) 13:48:09.09
SQL ServerだがマジキチでOLEDB廃止なのな ODBCを残すって一体何考えてんだ? Windows以外のプラットフォームでODBCが使われているからそっちを主流に? アホかよ?Microsofteeのガキどもがwwww でもどうせ.net用にはODBCに最適化したサービスプロバイダが提供されるに違いない。 一番お困りなのはOLEオートメーション、ActiveXが無いと何もできないVB6ユーザーだなwww この時代遅れのアナクロニズム野郎が?いつまで枯草にしがみ付いてんだよ?俺もだがwww
> 4コアの内、稼働しているのは1コアのみで稼働率は25%前後。 なんだから、 > シングルスレッドだからマルチコア環境は意味がない は正しかったんじゃねーの?
> 4コアの内、稼働しているのは1コアのみで稼働率は25%前後。 どうやったらこんな片減りな使い方ができるのかと 逆に意図して3コア停止でもさせなければ無理だろうが? 対称型マルチプロセッシングではブート時に1CPUに固定するくらいだが 最近はUEFIでブート時もマルチコア使うわ
255 :
デフォルトの名無しさん :2013/10/04(金) 15:16:13.07
バグでDoEventせずにループし続けるコードでも書いたんだろうよ 常時CPUに負荷がかかるような
そのうちDoEvents関数を4回実行すると4コアを使用するとか言いだす奴がきそうな悪寒
VBのマルチスレッドはどう考えても冗長で嫌 Dim t As New System.Threading.Thread(New System.Threading.ThreadStart(AddressOf DoSomething)) t.Start() Private Shared Sub DoSomething() : End Sub
DoEventsしないと、スレッドのコンテキストが切り替わらないのか、勉強になりました
259 :
デフォルトの名無しさん :2013/10/04(金) 15:55:50.31
VB6時代のジングルスレッドの呪縛から逃れたい思いがあるのか VB6からnetに移行するとマルチスレッドが不要でもすべてマルチスレッドで書く病気が3年ほど続く そのうち意味のない事に気づき落ち着くけどな
>>258 知らぬが仏で、コントロールに値を設定してDoEventsかけると予期せぬタイミングでイベント発生で泣くことになるよ?
結果、Enabled = Falseにするが、Trueにした瞬間にイベントが発生したり、そうなるともう修羅場よw
262 :
デフォルトの名無しさん :2013/10/04(金) 16:03:14.45
イベントの正体はWindowsメッセージだからなぁ Enabledを切ったところでメッセージは実行されずキューに溜っているだけだから 有効にした瞬間に一斉にイベントが発生しても当然の結果なんだがな かと言って、喪失したメッセージもありで、何が有効になるかはその時のお楽しみって訳よ 修羅場と言うより占いみたいなもんだよ
>>261 イベントの再入と、スレッドは別の問題だろ
フックだフック
>イベントの再入と、スレッドは別の問題だろ べつの問題だが結果的にむずびつくんだなコレガ
Control.Invokeあたりかな スレッドの同期にメッセージポンプを使ってる
267 :
デフォルトの名無しさん :2013/10/04(金) 16:14:44.62
DoEvents → GetThreadContext → SetThreadContext → ReadProcessMemory
たしか前提としてクライアントアプリもサーバと同一マシンだったはず その状態で1コアのみフルで張り付くってことは、 クライアントかサーバか、どっちかしか仕事してないってことだぜ バッチ作業でサーバだけが一生懸命仕事してるって状況はあり得るだろうけど そもそも今のSQLServerはちゃんと複数コア使うんじゃないかね ストアドリコンパイルするとか、その辺でいくらでも早くなりそうな気はするけど
269 :
デフォルトの名無しさん :2013/10/04(金) 18:38:11.91
SQL Serverを使って7年になるが一度もストアドを使ったことが無い 世の中では3フェーズコミットとか言ってビジネスロジックはSQL Server側に構築するのが常識と言われたが バージョンアップの度にヒットしなかったテクノロジーを切り捨ててきたMicrosoft社をどうしても信じる事が出来ない Microsoft Bob、Microsoft At Wor、Windows Printing System、WebTV、Microsoft Money・・・・ 数え上げたらキリが無い
3階層アプリと2フェーズコミットをごっちゃにするなよ〜 3階層だとビジネスロジックはアプリケーションサーバー ストアドプロシージャにビジネスロジック載せるような事はしないぞ
271 :
デフォルトの名無しさん :2013/10/04(金) 18:53:43.69
>>270 あれーっ?そうだっけw
まあ無縁なんで適当な知識ですまん
とにかくSQL Serverを信じてロジック載せたはいいが使えなくなったら悲惨な事になる
だからロジックはクライアント側で、最悪Oracleになってもどうにか対応できるように作っている
SQL Server側でnetで組み上げたらもう他のSQLへの移行は無理だろうからな
ストアドにビジネスロジックのせる奴は必ずいるので ストアド禁止にしてる。 パフォーマンスに問題のある時だけ、こっそりストアド。
最初から読む気もしないので読まないと宣言するが、 SQL ServerのデータをVB6でレコードセットで処理してるってこと? そんなアホな話じゃないんだろ? SQL文投げて応答が帰るまでに時間がかかるだけだろ? テーブル設計がクソなだけじゃないの?
宣言したけどザックリ読んだw CSVを取り込んでテーブル更新するだけかよ CSVの件数もテーブルの件数も更新対象がCSVの全てを対象にするのかも 一対多なのか、キーは貼ってあるのか 何も重要なことは書いてないなw 例えば数万件のCSVをVBで読んで1件1件レコードを読んでUPDATEしたりINSERTしたりの SQLを吐いて処理してたら爆笑できそうだけど
275 :
デフォルトの名無しさん :2013/10/05(土) 00:23:41.97
>>273 トリガーとアクションクエリーにどれだけの差があると思ってる?
どちらも投げたきりではなくてレスポンス待ちになってる。
プログラムがシングルスレッドだと明らかにレスが返るまで走行が止まる。
マルチスレッドにすれば言うまでもない。
実際にはストアドとアクションクエリに通信上のトラフィックでの大きな差は無い
大きな差は処理を分散できるという事だ。
しかし最近はPCの性能が飛躍的に向上したので、一般にハード性能が
数世代昔になりがちなサーバーで処理する方が絶対に高速とも言えなくなっている。
ここ一連のスレの流れはそういう事だったんじゃないのかい?
276 :
デフォルトの名無しさん :2013/10/05(土) 00:33:41.12
>>274 冒頭にOption Explicitを記述してもその程度かw
>例えば数万件のCSVをVBで読んで1件1件レコードを読んでUPDATEしたりINSERTしたり
実際にCSVの一行ごとにINSERT/UPDATEしてもそれほど時間がかからないSQL Serverなのだよ。
それと、アクションクエリーならテーブル上にすでにキーに対応するレコードが存在するかどうか確認する必要が無い
INSERTしてみてAffectedRecordsが0ならUPDATEする、あるいは無条件にINSERTとUPDATEを
エラーを例外処理をスルーさせて強引に実行しまくる手もある
むしろ、書き込むレコードを検索してレコードが存在したらUPDATE、無かったらINSERTなんてコーディングしてる方が
怪しい無駄な事をしていそうな香りがするけどね。
>>275 CSVの内容によりけりだしストアド丸投げで処理ってより
>>276 が書いているようにCSVを読んでテーブルをレコードセットで読み込んで
読み込んだ値を編集してINSERTしたりUPDATEしたり
ゴリゴリやってんじゃねーの?
しかも、WHEREで検索かける部分にインデックスが作られていないとか
そんな問題なんじゃないのか?って話
そもそも、肝心な情報を何も書かずに遅い遅いってアホだろ
>>276 CSV1件毎にVBでなにをしてるかによるだろ
例えばCSV1000件が同じレコードを更新しているのに
ソートすら無でランダムに同じレコードを読み出して更新してたら?
遅い遅いって奴はだいたいプログラムがボロなんだよ
昔見たやつは、超絶に遅いとお物いたらトランザクションかけてないとかもあった、
プログラムを書き直しただけで1時間かかってた処理が5分程度に
なった事もあるよ
278 :
デフォルトの名無しさん :2013/10/05(土) 11:31:58.35
>>277 確かにそうなんだけどね。
でも、同一LAN上にある新旧のサーバで、新サーバのDBは旧サーバの完全バックアップを
リストアしたもので、同じプログラムで同じCSVを処理して、処理速度が違う、しかも
DBの構造上、マルチスレッド処理が不可となると、現プログラムの処理(コード)を見直して
地道に改善していくより、CPUをクロック数の高いものに交換した方が早いかと・・・
ユーザーは旧サーバ並みの処理速度が出ればいいということなので。
システム開発側が推奨環境として高クロックなサーバーを要求してるのだから 低クロックのサーバーを用意したユーザーが糞だわな
280 :
デフォルトの名無しさん :2013/10/05(土) 15:51:17.47
>>279 それでも、生粋のSEである、我がシステム部のリーダーは、CPU交換なんて
安直なことはせずに、まず、プログラムを見直して、現状と同じ程度の処理時間
まで縮められるよう作業すべきだと言う。
で、担当SEの私は、CPUを高性能なものに交換するのに何もリスクはないはずで、
最短距離で本現象が解消されるであろう策を取るべきだと主張したのが、金曜の話。
私は元営業なので、生粋のSEの方とは考え方が根本的に違うのかも。
量がわからんから、なんとも言えないけど... 素直に、DROPしてからなら、UPDATEする必要は無いと思うが...
282 :
デフォルトの名無しさん :2013/10/05(土) 16:29:27.09
CSVを先頭から一行ずつ読んで処理が遅いのか、クエリの処理が遅いのか そのくらいの切り分けも出来てないでただ遅いという問題提起 元営業だろうが元ドカタだろうが、今その仕事を任されているのだから経歴なんて関係ないでしょう? ちょっと、甘えてんじゃないよ坊や
sql server2008からならinsert/updateにmergeが使える
284 :
デフォルトの名無しさん :2013/10/05(土) 16:40:33.31
>>282 CPU交換という手っ取り早い解決策があるのに、プログラムの見直し
なんて面倒くさいことを提起する発想が分からんと言ってるんですよ。
それしかないならやりますけどね。
結果が同じなら、最短距離で解決した方がいいのでは?
まずプログラムを見直そうなんて自己満足にしか思えないけどなあ。
>>284 新規のプログラムならプログラムで何とかするべきだろうけど、
他で動いて実績があるものならマシン増強が正しい選択だろう
最近はPCの性能が飛躍的に進歩っていつの時代の話だよ... 少なくともCPUの性能向上速度はどんどん低下しており、 とうの昔にムーアの法則の適用外の世界になってる。
>>284 本当にCPUの交換で効果があるの?
CPUの交換で効果が無い場合の責任は誰がどうやって取るの?
288 :
デフォルトの名無しさん :2013/10/05(土) 17:45:19.93
>>287 本部、事業部、サーバベンダーともCPU交換による効果に関しては
間違いないと言っている。
その交換費用も、営業サイドでシステム保守料で賄うということに
なっているので、ユーザーに費用負担のリスクもない。
いいかげんVBに関係ないからよそ行ってくれない
飽きたらな
大学の空き教室を学生が勝手に利用してるみたいなもんか
292 :
デフォルトの名無しさん :2013/10/05(土) 18:02:54.34
単純に構って欲しいだけだと誰か気づいてやれよな
293 :
デフォルトの名無しさん :2013/10/05(土) 20:44:00.33
VBプログラマスレに来てCPU性能に頼ろうって話をしているのか SEかプログラマか知らんが一応は場末の技術者なんだろ? プログラムを追ってみて改善してみようとか一切考えもしないのか? 鯖とテスト環境で速度差があるって言うけど サーバと通常のクライアントPCではバックグラウンド処理と プログラムでプライオリティの差があるからじゃないの? 俺なら間違いなくCPUのアップグレードよりも何よりも もっとも手軽な方法としてプログラムの見直しをするわw
餌に食いついたw
295 :
デフォルトの名無しさん :2013/10/05(土) 21:44:03.53
>>293 費用負担の件さえクリアすれば、CPU交換の方が手軽だと思うけど。
営業の処理だけで方が付く。
プログラムを見直したところで、どうせ費用はとれないんだし。
他の金の取れる案件の作業をした方がいいな。
俺はプログラムをチューンする方を選ぶぜ(キリッ なんて奴はそもそもVBを選ばない
297 :
デフォルトの名無しさん :2013/10/06(日) 00:40:13.72
>>295 いくらサーバー向けCPUがバカ高いっても20万もしないだろう。
バカたれにプログラムの見直しやらせたらそれ以上の給料もっていきやがるだろう。
他で速度的に問題が起きてないのなら交換で済ませるのが妥当だな。
はいはい。さっさとハード買い替えて2度と来るな
299 :
デフォルトの名無しさん :2013/10/06(日) 08:45:56.38
>>298 費用対効果や作業効率より自己満足を優先するタイプか?
ビジネスには不向きだな。
>>299 目先の費用対効果・作業効率と今後役に立つであろうノウハウの蓄積を天秤にかけてどっちを取るかだけのことだろ。
最終的な判断は全体を見通せる人間がやること。
判断した人間に不服があるなら屈服させるくらいの情報を提示すればいい。
それができないなら文句言うな。
301 :
デフォルトの名無しさん :2013/10/06(日) 09:29:49.78
VB6で作ったアプリを今になって高速化対応するぐらいなら 他言語への変更に向けた準備をしておくべきで、その中で高速化も検討できる 今はCPU交換でしのげるならそれが妥当
ハード買い替えるならもうソフトの話ですらないから いい加減よそいってくんない
ハードの問題を言語の質問スレで解決しようとしている馬鹿がいると聞いてやってきました! つーか、本当にハードの問題なのか? 適切な質問スレを選べて居ない時点で、色々疑っちゃうよねw
テスト環境がどうとか鯖がどうとか関係ない話はいい いいから足かせになってるプログラムの部分を出してこいよ
ハード入れ替えで生じたパフォーマンスの低下なら そりゃハードだろう。
OSもサーバもミドルも変わってるだろうけどな
307 :
デフォルトの名無しさん :2013/10/06(日) 22:37:14.04
当初はVB6及びプログラムの64bit環境下でのパフォーマンスの問題だと思って いたので質問しました。 しかしその後の調査で、Windows7 64bitのCorei 5パソコンで十分なスピードが 出ること、データベースの構造上の問題でバッチ系プログラムはシングルスレッド で動かすしかないこと、CPUのコア数もパフォーマンスに影響ないこと、故に処理 速度はディスクの回転数やCPUのクロック数に依存することが分かったので、 だったら、プログラムの見直しなんて面倒くさいことはせずに、手っ取り早く、 CPUを高性能なものに交換してもらおうという結論になりました。
>データベースの構造上の問題でバッチ系プログラムはシングルスレッド で動かすしかないこと まあ、DB使うような普通のバッチならそんなことはないけどな とりあえず2度と来るな
話を続けて誘っておいて二度と来るなとは下衆の極み
310 :
デフォルトの名無しさん :2013/10/07(月) 00:06:42.64
ストアドよりインデックスのほうが速いよ
311 :
デフォルトの名無しさん :2013/10/07(月) 00:38:57.08
>>308 何でそんなに偉そうなの?
低く低くという姿勢でいた方が、ギスギスしなくていいよ。
> 何でそんなに偉そうなの? 俺もこんなセリフ言われてみたい。 例えば不良に絡まれてる女の子を助けたとして 不良に「お前正義の味方のつもりか?」みたいに言われてみたい。 そしたら、「え? 俺、君たちから見たら、 正義の味方に見えるの? そんなつもりはないけど、 君たちには正義の味方に見ててしまうのは、 仕方ないかなぁ。どこが正義の味方に見えるんだい?」 って言ってみたいwww
313 :
デフォルトの名無しさん :2013/10/07(月) 05:43:46.55
>>312 なんで正義の味方だいじなとこで噛むん?
プログラムの見直しが面倒くさい? そんな時代なのかね ここはプログラマのスレだから二度とくるな オペレータースレでも行けよ
マのスレ、という前に、ムの板だろう
いやでもコスト考えるとハード買い換えたほうが安いし
CPU変えたけど、多少の改善は見られたが根本的解決にはならなかった …という結末を希望してるのは、俺だけじゃないはずだ。
318 :
デフォルトの名無しさん :2013/10/07(月) 14:47:46.67
VB6で作って8年稼働していたシステムをC#で作り直しました。 さぞかし性能がアップすると思いきや、ほとんど速度が変わらないばかりか 演算プログラムに関してはC#の方が7倍も時間がかかる処理が発生 総じて移行は大失敗と相成りましたが、少なくともCPUを交換してなんとかなるなら Pentium IIIを使っていたとかいうオチがあるに違いありません。
>>318 .netは中間言語もしくは最適化しきれないJITで吐かれた非効率なマシン語で動くんだよ?
Cコンパイラで最適化されたコードで走行するVB6に性能で勝るなんて構造的に無理。
マシンがVB6のままで.NET化したのなら当然遅いだろう そうでなければ、文字列の足し算やってるとかそんな感じかな
戦略レベルの間違いを戦術でどうにかしようとするのは間違いだと言っているんだッ
何でprofileしないのか不思議だったんだが、プログラマじゃなかったというオチか。
323 :
デフォルトの名無しさん :2013/10/07(月) 18:24:20.59
純粋に.netは遅いよ ただベンチマークテストでは速くなるような仕込みがあるから 素人には大きな差が無いと信じ込ませることが可能 実運用に入れば即座にバレることでありんす
x86が欠陥だから .NETのようなVM的なものが出来るんだよ いい加減に優れた命令セットを持つCPUが開発されるべき
やっぱりVBerって頭悪い奴ばっかりなのを再確認したw 7倍も遅くなったのは.NETのせいだ? いや間違いなくそれはコードがウンコだからだ。
.NETに不利な条件設定すれば7倍なんてもんじゃ済まないだろ? 一般的な業務アプリの範疇であればそん色ないというだけであって 何を使ったところで機械語より速くなるはずがないという原点に立ち返れやアホ
327 :
デフォルトの名無しさん :2013/10/07(月) 19:12:33.81
.netを使うとx86の命令セットではなくIntel CPUのマイクロコードを直接使うんですよ? いわゆるCISICではなくRISCに近い性能を発揮するんです。わかりましたか?
VB6はCOMのマーシャリングを発生させないコードならコード走行性能はC++と同等だからな
一度、メモリダンプとって逆汗して最終的に.NETがどんなコードになるのか見た事があったが やたらポインタつなぎのコードが多く、アドレッシングモードの使い方も複雑で解読が難しかった。 PUSH,POPを見て単純に関数の入り口と出口を判別できないコードだよ
馬鹿過ぎて突っ込む気も起こらない
>>330 最終的なコードが人の目から見て見やすいかどうかは問題ではないのでは?
333 :
デフォルトの名無しさん :2013/10/07(月) 20:47:23.05
不要な間接アドレッシング満載で遅くてもしかたないだろって事だろ? 最低限の洞察力も無いようでは.net氏ねと言われても仕方ないだろうよ?
VS2010入れてVB.NETをちょろっとやってみたけど VB6と全然違いすぎてちんぷんかんぷんだ・・・ゼロから勉強しないとダメだこりゃ しかたないからずっとVB6使いつづけます
ぜひそうしてくれ
VB6のネイティブコンパイルはVC++6の2パス目とLINKを使ってるのは確かだけど ステップごとにサポートルーチン呼びまくってるから Cほどのパフォーマンスは出てない 単純な四則演算ではCを10とすると、おおよそVB6が6、VB.NETが8くらいのスピードになる VB.NETの場合起動して動き出すまでが重いから、 exeの起動から終了までを入れて測定するとVB6と逆転することも多いけどね
64bitのOSはトラブル続きという、x86以下のクズCPU
>>336 つまり単純な四則演算だとVB6より.NETが早いのか?
単純な四則演算だけで済むアプリってどんなアプリだ?
>ベンチマークテストでは速くなるような仕込みがあるから 四則演算だけやったってことか
343 :
デフォルトの名無しさん :2013/10/08(火) 00:26:02.32
>>314 それしか方法がなければそうするけど、他に効率のいい方策があるのに
わざわざ面倒くさい方法をとる意味がないと思いません?
とにかく作業効率と採算性が重要なんだし。
VB vs Delphi 的な感じの時期があったろ 正直待った時期もあったが.NETの登場でDelphi逝ったーー!! とか思ってた 蓋を開けれ.NETの中核的な言語のC#ってのは Delphiを設計した奴が引きぬかれて作ったらしい それどころか、VB.NETになり、これがVBなのか?と思えるほど面倒になった 結果的にVB6も逝ってたと気がつくまでに5年かかった これからも死ぬまでよろしくなVB6
C#はヘジたん萌え言語
346 :
デフォルトの名無しさん :2013/10/08(火) 21:21:27.43
うちの会社はソース以外何も残っていないことが多いからなあ。 どのモジュールで何の処理をしているのか、調べるのも大変だ。
ソースがあるのに何と言う贅沢を
348 :
デフォルトの名無しさん :2013/10/08(火) 22:02:27.46
>>347 普通は仕様書とか詳細設計書なんてのが残ってるのではないの?
>>348 仕様書、詳細設計書はアップデートしないから実態と合わない
350 :
デフォルトの名無しさん :2013/10/08(火) 22:13:00.29
>>340 ばーか、騙されるなよ
単純な四則演算ではCを10とすると、おおよそVB6が6、VB.NETが8くらいのスピード・・・
どうみてもアホ丸出しだろw
>>350 「ステップごとにサポートルーチン呼びまくってる」
この表現はもっともらしくていいじゃん?
何か行番号が付いている昔のBASICでステップでデバッグしていた頃のニュアンスだよな
ナツカシスwwww
352 :
デフォルトの名無しさん :2013/10/08(火) 22:19:05.81
VB6はOLEAUTOを呼び出すと極端に遅くなるからベンチで比較するなら単純演算にすべし Stringなんて使った日にはトップギヤからローギヤにぶち込んだくらいのエンブレがかかる
>>351 >「ステップごとにサポートルーチン呼びまくってる」
それは中間言語レベルの話で速度優先で最適化してビルドしてEXE化すればほとんど関係しない
354 :
デフォルトの名無しさん :2013/10/08(火) 22:27:59.81
ここは脳内VBの巣窟ですか
VBだけじゃ何のVBかわからんだろ?この新参がw
Virtual Box
357 :
336 :2013/10/09(水) 02:57:48.18
ソースや数値を出さずに遅い速い言ってもしかたがないので、
根拠にしたプログラムソースを挙げとくよ
特に意味のある処理はしてなくて配列に乱数セットした後、足したりかけたり
http://ideone.com/bTdS3u http://ideone.com/7z8liH VB6はForm1にButton1とTextBox1を貼り付けてClickイベント
VB.NETはコンソールアプリ
VB2005のとき評価用に作ったものなので数値が古いけど結果は次のとおり
VB.NET 3.14秒
VB6 5.50秒
VB6(p-code) 101.5秒
C++ 3.0秒
C++ (/arch:SSE2) 2.2秒
VB.NETもGUIでやれよ、なんでコンソールなんだよ
359 :
デフォルトの名無しさん :2013/10/09(水) 09:12:19.94
>>357 VB6って意外に速いんだね。道理で長い間使われ続けている訳だ。
>VB6はForm1にButton1とTextBox1を貼り付けてClickイベント ここまでVB6に不利な条件を用意しないと歴然とした差が出ないんだね 藪蛇だったなwww
361 :
デフォルトの名無しさん :2013/10/09(水) 09:17:07.18
>VB6(p-code) 101.5秒 .netはすべてJITコンパイル後の結果だけ提示しているのにVB6だけp-codeの時間載せてら(笑)
VB6のコンパイル時の最適化って、現状どのオプションを有効にするのが最も効果的ですか?
363 :
デフォルトの名無しさん :2013/10/09(水) 10:22:37.27
>>357 二つ目のForループをコメントアウトするとどちらも瞬時に終わってしまう。
計測結果はほとんどこのForループの時間だろ。
364 :
363 :2013/10/09(水) 10:28:32.18
計測初めてから二つ目のな。変数の内容をswapしてるとこ。
これ配列の入出力が時間のほとんどなんじゃなかろうか
サーバ交換とかって泣き入れてた奴まだいるかな? CSVだけを読み込んでDBを更新しないように修正して サーバとWin7のテスト環境で比較してみてはどうだろうか
言うだけ無駄だとなぜ学習しない
>>357 ダメな比較テストだな
どうしてもう少し頭を使えないもか
ゆとり世代?
369 :
デフォルトの名無しさん :2013/10/09(水) 12:20:28.27
本人は非の打ちどころがない自信満々のソースなので手加減よろしく
371 :
デフォルトの名無しさん :2013/10/09(水) 12:39:39.38
おk
372 :
デフォルトの名無しさん :2013/10/09(水) 13:58:47.81
配列のソートについてはVB.NETの優位が示せたじゃん。 Array.Sort()ならもっと早くなるし。
そんなレアケースで自慢されましても・・・
100万行のテキストを加工してファイル出力するプログラムとかで比較してみればいいんじゃね
それだとほとんど差が出ない、いや、むしろVB6の方が高速だろう
VB6でのCSV読み込み @input# AFileSystemObjectで1行読んできてSplit Bその他 どれ使ってる?
Line Input # で1行読んできてSplit
378 :
デフォルトの名無しさん :2013/10/09(水) 19:41:50.86
ダブルクォートの中に,が含まれている場合はSplit使えないよね
こんなん作ってみた 'Basic_READ_DATA.bas Dim DataArray() As Variant Dim ReadIndex As Long Dim DataCount As Long Public Sub BASIC_DATA(ParamArray v() As Variant) If UBound(v) < LBound(v) Then Exit Sub End If Dim index As Long Dim i As Long index = DataCount DataCount = DataCount + UBound(v) + 1 ReDim Preserve DataArray(DataCount) For i = LBound(v) To UBound(v) DataArray(index + i) = v(i) Next i End Sub Public Sub BASIC_READ(ParamArray v() As Variant) If UBound(v) < LBound(v) Then Exit Sub End If Dim i As Long For i = LBound(v) To UBound(v) If ReadIndex >= DataCount Then Exit Sub End If v(i) = DataArray(ReadIndex) ReadIndex = ReadIndex + 1 Next i End Sub
古いBASICにあるREADとDATAを作ってみました
テストコード Private Type xy x As Integer y As Integer End Type Dim xymap(3) As xy Sub Init() BASIC_DATA -2, 0 BASIC_DATA 2, 0 BASIC_DATA 0, -2 BASIC_DATA 0, 2 Dim i As Integer For i = 0 To 3 BASIC_READ xymap(i).x, xymap(i).y Next i End Sub
古いBASICみたいにPOINTが扱えないのかVB6は、座標がSingle型だから不正確なのか・・・
は?
windowsのグラフィックスがvolatileだからでないかい いつ消えるかわからなくて、消えたらWM_PAINTで書き直す
385 :
336 :2013/10/09(水) 22:47:14.29
>>363 ご指摘のとおり、昔のソースなんで勘違いしてた
後半の2つのループは最適化除けのためのまじないでした
javaのserver VMだと凶悪な最適化をしてくるので用心した
336の「単純な四則演算では」の部分は撤回
>>359 結論として言いたかったのはソレ
たいした差は無いよってことで、
むしろVB6のほうが起動やFormが軽いので体感ではVB6が速く感じる
386 :
デフォルトの名無しさん :2013/10/10(木) 10:18:34.70
>>385 恥ずかしい奴だな
それに専門学校生の書いたソースじゃあるまいし、、数値はもっと抽象化しろよ
今さらvb5.0の修正対応が発生したんだけど、そもそも環境ない… IDE今さら見つかるわけでもなく、眠ってた保守端末を復旧させることになりそう
MSDNになかったっけ?あれは6.0かな
390 :
ななし :2013/10/11(金) 20:10:53.30
そもそも5.0とか使った覚えがないぞ 4から6だったからなぁ
391 :
デフォルトの名無しさん :2013/10/11(金) 20:18:20.53
>>388 消費税増税に伴うVB業務ソフトの使用変更案件が既に8件来てる
若い奴らはVB5やVB6は出来ないので俺がやるしかない
今更あの原始時代的な言語仕様に立ち返るなんて一種の拷問だよ!
クラスの実装継承ができないとか多態性が無理とか信じられんし
392 :
デフォルトの名無しさん :2013/10/11(金) 22:06:12.01
そういいつつ嬉しそうなのはなんでだ。
393 :
デフォルトの名無しさん :2013/10/11(金) 22:12:06.18
いやーー(^^;)
Aさんの成績が100人中30位だとします。 100人を2グループに分けるとAさんは第1グループに属します。 100人を4グループに分けるとAさんは第2グループに属します。 という感じの関数作りたいんです。 Getグループ番号(成績, 人数, グループ数) 数学に詳しい方お助けを。
同点の具合によってはズレそうだが?
397 :
395 :2013/10/12(土) 10:56:11.74
できちゃった。
Public Function GetRankGroup(lngRank As Long, lngMembers As Long, lngGroupCnt As Long) As Long
Dim lngGroupLimit As Long
Dim i As Long
Dim lngGroup As Long
lngGroupLimit = lngMembers / lngGroupCnt
For i = lngGroupLimit To lngMembers Step lngGroupLimit
lngGroup = lngGroup + 1
If lngRank <= i Then
Exit For
End If
Next
GetRankGroup = lngGroup
End Function
>>396 想定してたのは同点とかないものでした。
上の例だと同点も考慮しないとダメでしたね。すんません。
398 :
395 :2013/10/12(土) 11:12:09.86
修正 Public Function GetRankGroup(lngRank As Long, lngMembers As Long, lngGroupCnt As Long) As Long Dim lngGroupLimit As Long Dim i As Long Dim lngGroup As Long lngGroupLimit = lngMembers / lngGroupCnt For i = lngGroupLimit To lngMembers Step lngGroupLimit lngGroup = lngGroup + 1 If lngRank <= i Then Exit For End If Next If i > lngMembers Then lngGroup = lngGroup + 1 End If GetRankGroup = lngGroup End Function
399 :
デフォルトの名無しさん :2013/10/12(土) 11:27:32.82
>>395 Function GetRankGroup(a, b, c)
GetRankGroup = Roundup(a * c / b)
End Function
Function Roundup(a)
b = Fix(a)
If a - b = 0 Then
Roundup = b
Else
Roundup = b + 1
End If
End Function
400 :
デフォルトの名無しさん :2013/10/12(土) 11:52:27.56
>>395 VB6で宿題かい?
100人を3グループに分けたら
最下位の人は孤独な第4グループでカワイソス?
順位だけでのグループ分けとかワロエルな
なんかどんどんできるようになってきてるよ
403 :
デフォルトの名無しさん :2013/10/13(日) 17:56:14.00
>>391 VB6でもインターフェイスはあるから多態性はどうにかなるんじゃね?
消費税対応程度でそこまでやるかという気はするけどねw
404 :
デフォルトの名無しさん :2013/10/15(火) 12:25:37.59
VB6の場合、ステップごとにサポートルーティンが組み込まれるため Cコンパイラによってコンパイルされたバイナリの性能はCと同じ速度にはならないよ もし出来るだけC言語で作ったコードの性能に近づけたかったら なるべく同じ行内で処理をまとめることだよ。 例えば「:」でステートメントを連結するとコードは読みにくくなるが バイナリレベルでサポートルーティンが入らなくなるので実行性能は向上する。 VBDecompilerで確認したから間違いない。
405 :
デフォルトの名無しさん :2013/10/15(火) 17:23:22.39
VB6で作ったアプリってオープンソースで公開しても大丈夫なん?規約書どっかいっちゃって分からんのよ
>>404 A = 10
B = 20
より
A = 10:B = 20
の方が早いってか?
この程度なら同じバイナリ吐くんじゃないかと思うんだが
そんなにVBコンパイラのオプティマイザ貧弱なのか
407 :
デフォルトの名無しさん :2013/10/15(火) 20:53:58.70
>>406 気になってVB Decompiler 7でマルチ、非マルチの単純コードを逆コンパイルして比較してみたが
明らかに間に余計なサブが入るか入らないかの差が出ているな
昔ながらのマルチで若干速度アップというBasicの悪癖はVB6でも継承しているということかい?
>>405 逆に大丈夫でないとするならその理由を知りたいものだな
コントロールに再頒布に関するうんぬんが書いてなかったっけ?
コロンで結ぶ奴は、アレか?IF文用か?
>>409 コントロールはバイナリなんだから
オープン”ソース”と関係ないじゃん
つまりソースコードのみなら縛りはないけど ビルドしたものも含めての配布は出来ないってこと
ソースとして配布される物から全てビルドできないとオープンソースと言えないからVB6ランタイムとか含めて配布は出来ない
つまりビルドして出来たexeだけなら配布できるけど依存するdllやらocxやらは含められない
ソースコードだけ公開ならオープンソース
GPLはダメってことです
Windows APIを使っているものは オープンソースに出来ない。 これはクロスプラットフォーム アプリでも同じである。
iOSアプリもオープンソースにできない。
Windows APIを使ってるOpenOfficeはどうなるのっと
Windows APIなしでWindowsアプリは作れないんじゃないの? CUIだろうがGUIだろうがWindowsの実行形式exeにはdllアクセスがあるじゃん
421 :
デフォルトの名無しさん :2013/10/15(火) 23:10:35.18
それじゃ、VB6で作ったアプリはフリーソフトとして頒布できないのでは? VB6ランタイムを含む再頒布可能なコンポーネントと一緒にEXEを頒布できないとか? オープンソースとバイナリの頒布は次元が違う問題だろ?
もうVBと関係ない話題じゃね? ようはこういうことでしょ? OSもしくは使用しているライブラリが オープンソースではない場合、 それを使っているソフトは オープンソースできるのかどうか?
>>421 VB6.0に付属しているActiveXコントロールはVB6.0で作成したプログラムと一緒なら再配布することができます。
つまりVB6.0のプログラムと一緒に配布しないケースは禁止されています。
「オープンソース」には定義があって ただソースコードを公開することが「オープンソース」という意味じゃない VB6でディストリビューションウィザードで作ったインストーラにソースコード含めて配布することは可能だが それを「オープンソース・ソフトウェア」だとと呼称することが許されないだけ
ActiveXとか動的リンクになるので、 GPLでよく話題になってる、 動的リンクでもGPL感染するのか?って 話と同じ気がする。
Windows APIがアウトならWindowsでは拡張子comの実行形式以外はオープンソース化無理だね
428 :
デフォルトの名無しさん :2013/10/15(火) 23:24:32.16
>>423 VB6は
「8. 特定製品でのみ有効なライセンスの禁止」
に抵触するからどうあがいてもオープンソースは無理だね
WINEで動けば、オープンソースになるよ。
>>428 ねえ、さっきからお前何必死になってるの?
Windowsアプリはオープンソースに出来るのかとか
動的リンクの場合はどうなるのかとか
そういう話でしょ?
>特定製品でのみ有効なライセンスの禁止 linuxで動くがwindowsで動かないものはオープンソースにならんじゃないか
VBの場合、ソースコードリンクじゃない ライブラリは、すべて動的リンクになるから アプリそのもののソースが公開されていれば オープンソースでいいんじゃないの?
435 :
デフォルトの名無しさん :2013/10/15(火) 23:27:51.25
>>431 いや、VB6で開発したEXEと一緒でないと頒布権が与えられないという時点でアウトでしょ?
>>435 それは外部ライブラリ扱いだから、
無視してOK
そもそも、「オープンソース」に実行ファイルを含めて配布しないといけない決まりはない。 ソースコードがオープンであれば、実行ファイルの有無は関係ない。
>>436 テキストファイルの範疇であればオープンソース化は可能という事かな?
DLLやOCXがないと機能しないが・・・
OSS OK ・ソースコードのみ公開・配布 ・ソースコードとコンパイルしたexeのみ公開・配布 OSS NG ・VB6のランタイムライブラリなどオープンソースでないライブラリを付けての公開・配布
そうだよな。ソースコードだけで公開しているアプリとかあるしな。 ビルドは勝手にしてくださいという形で。
オープンソースの定義下での公開を諦めればOK ただのフリーソフトとしての公開すればいい、ソースコードを添付すればソースコードも公開できる
>>440 >・ソースコードとコンパイルしたexeのみ公開・配布
標準コントロールを一切使わず純粋にVB6のコードだけで作ったアプリなら
Windows 7のようにVB6ランタイムが標準装備のOS下ではオープンソースも機能的に成り立つ罠
今すぐ使いたいアプリがソースコードのみ公開とかムカつくだけだけどな linuxとか使っててブチ切れそうになった
コンパイラが吐きだしたバイナリってコンパイラが機械語で書いたコードなんだから著作権はコンパイラ自身にあるべきだよな
Linux用のオープンソースアプリがある ↓ それをWindowsで動かそうとする。ライブラリがないから動かない。→ オープンソースじゃないのではないか? ↓ Windowsでもライブラリがあれば動くから、オープンソースなのだ! ★ ↓ だったら逆を考えてみよう ↓ Windowsのアプリを、Linuxで動かせれば、オープンソースなのだ! ↓ 動かない? ↓ WINE使えば動くよ。→動くならオープンソースでいいよね! ↓ WINEでWindows APIは実装されているけど、それ以外のライブラリは実装されてないよ。 ↓ でもオープンソースで互換ライブラリ作れば動くよね? ↓ Linuxでもライブラリがあれば動くから、オープンソースなのだ! (★と同じ) 結局さ、こうなるから、オープンソースかどうかの話をするなら、 OSや汎用的なライブラリは無視して、 アプリ本体だけで考えるべきなんじゃねーの?
OS固有の機能つかったらオープンソースにならんとか厳しいな ひとまず言えることは VB6でオープンソースは諦めろ
GPLはオープンソースである。 WindowsアプリでGPLアプリは存在する ゆえに、Windowsアプリで オープンソースを作ることは可能である。
450 :
デフォルトの名無しさん :2013/10/15(火) 23:46:18.57
VB6アプリでEXEだけポツンとあっても意味成さないケースがほとんどじゃね? そんなEXEがソースファイルと一緒に頒布されましてもねぇ・・・・
GPLアプリを作ったとしても、そのGPLの効力が OSや外部ライブラリに及ばないと同様に、 オープンソースに関して、OSや外部ライブラリの ライセンスは関係ない。
452 :
デフォルトの名無しさん :2013/10/15(火) 23:47:46.12
>>449 それはGPLのコンパイラやライブラリを使った場合とか非常にニッチな条件下だけだよね?
>>450 動作に関して意味があるかどうかではなく、
オープンソースであるかどうかが焦点ですよ。
>>453 そういう意味のないオープンソースを広めた連中がオープンソースを弱体化させた訳だが?
>>452 オープンソースのアプリがあったとして、
それをどのOSで動かそうが、
どのコンパイラでコンパイルしようが
どのライブラリと動的リンクしようが、
オープンソースのアプリは、オープンソースのままですよ。
あたりまえじゃないですか。
なんで、オープンソースのアプリが、
アプリとは無関係のものに変えられてしまうと思うの?
>>450 そんなことオープンソースでlinux用のバイナリしか配布してないとこにだって同じこと言えるじゃん
そもそも、オープンソースにバイナリの生成や、 動作保証は義務付けられていないので、 たとえそれがビルドできない状態であったとしても ソースがあるのならそれはオープンソースである。
オープンソース ≠ GPL
オープンソース ⊃ GPL
ソースの公開 ≠ オープンソース ソースの公開 ⊂ オープンソース
逆だた ソースの公開 ≠ オープンソース ソースの公開 ⊃ オープンソース オープンソースはオープンソースのルールに従ってソースを公開することだよ
ソースコードはオープンソースライセンスで バイナリ込みのインストーラは別ライセンスで配布って可能なのか? つかVB6のディストリビューションウィザードで作ったインストーラは配布可能でも インストーラ自体のライセンスがオープンソースじゃないからオープンソースでの配布は無理だろうな
>>462 > オープンソースはオープンソースのルールに従ってソースを公開することだよ
その、オープンソースのルールに
バイナリを一緒に配布することとか
バイナリを生成できること
なんて決まりがないんだよな。
それは当たり前の話で
例えば特定の環境でビルドできても
その他の環境でビルドできないことがある。
すべての環境でビルドできないとしたら、
大きく環境違う場合でもでもビルドできないといけないということになる。
だからビルドできることを条件にすることができないわけ。
Inno Setupというインストーラー作成ソフトはオープンソースだよ
VB6のアプリをライブラリとか全部詰めてインストーラで配布する場合 同梱するライブラリの制限についてしっかり明記しないとアカンよ 一番簡単なのは同梱されるいかなるファイルの再配布も禁止するとか
>>466 単に一緒に頒布されるというだけならば他のソフトウェアには影響しません。
http://www.opensource.jp/osd/osd-japanese.html 9. 他のソフトウェアを制限するライセンスの禁止
ライセンスはそのソフトウェアと共に頒布される他のソフトウェアに制限 を設けてはなりません。
例えば、ライセンスは同じ媒体で頒布される他のプロ グラムが全てオープンソースソフトウェアであることを要求してはなりません。
理由: オープンソースなソフトウェアの頒布者には、
彼ら自身 のソフトウェアについては彼ら自身で選択する権利があります。
もちろんGPLはこの要件を満たしています。GPLが適用されたライブラリとリンクされたソフトウェアは、
それが単一の著作物を形成する場合のみ GPLを継承するのであって、単に一緒に頒布されるというだけならば他のソフ トウェアには影響しません。
>>466 リンクしなければ、たとえ同じインストーラーに
パッケージしたって関係ないんだよ。
同じzipにオープンソースなものと
そうでないのを一緒にまとめて配布するのと同じことだし、
同じDVDにオープンソースなものと
そうでないのを一緒にまとめて配布するのと同じ。
>>463 > つかVB6のディストリビューションウィザードで作ったインストーラは配布可能でも
> インストーラ自体のライセンスがオープンソースじゃないからオープンソースでの配布は無理だろうな
それは基本的すぎることで、
問題ないとはっきり明確になってる。
http://www.gnu.org/licenses/gpl-faq.ja.html#CanIUseGPLToolsForNF. 自由でないプログラムを開発するために、GNU EmacsのようなGPLの及ぶエディタを使っても良いでしょうか?
GCCのようなGPLの及ぶツールを使って自由でないプログラムをコンパイルすることはできますか? (#CanIUseGPLToolsForNF)
はい、なぜならばエディタやツールの著作権はあなたが書くコードには影響しないからです。
法的には、あなたがどんなツールを使っても、あなたがご自分のコードに適用するライセンスに関しては何の制限も課されません。
プログラムによっては、技術的な都合から自身の一部を出力結果にコピーするものがあります。
たとえば、Bisonは標準パーザ・プログラムを出力ファイルにコピーします。そのような場合、
出力結果にコピーされたテキストはそのソースコードに及ぶものと同じライセンスによってライセンスされます。
一方、プログラムに与えられた入力から派生した出力結果の一部は入力側の著作権状態を継承します。
たまたま、Bisonは自由でないプログラムを開発するのにも使うことができます。
これは、わたしたちがBisonの出力結果に含まれるBisonの標準パーザ・プログラムは制限なしに
利用できるということを明確に認めることを決定したからです。わたしたちがこう決めたのは、
Bisonと同様の他のツールで自由でないプログラムでの利用を認めているものがすでに存在したからです。
MSがVSで作ったものをオープンソースとして公開することを禁止してるかもしれんしMSに問い合わせたほうが早い
>>449 ライセンスを明言して配布してるからといって
必ずしもライセンスに準拠して配布しているものばかりというわけじゃない
配布者が気づいてないだけでライセンス違反に抵触してるものもままある
>>467-468 それは同梱ファイルがオープンソースライセンスの場合にそのライセンスの種類を勝手に変えてはいけないって話じゃ?
オープンラインセンスで配布するなら同梱物にプロプライエタリの物含めたらアウトやろ
GNU準拠のDebianだとプロプライエタリな物に依存するアプリはパッケージとして登録できない
>>471 GPLを派生して作ったものは必ずGPLになる。
GPLアプリが、OSや外部ライブラリまでGPLを要求する必要があるならば
それはWindows用のGPLアプリは、一つ残らず存在しないということになる。
だが未だかつて、Windows用のGPLアプリは、
全てライセンス違反であるという話は存在しない。
したがって、Windows用のGPLアプリというのは成り立つし、
OSや外部ライブラリまでGPLである必要がないのも必然である。
>>472 オープンラインセンスが関係有るのは
バイナリとそのソースの話であって、
配布ファイルに関しては一切関係ない。
例えば、MacOSXにはオープンソース由来のプログラムが
いくつか含まれているが、DVDのすべてがオープンなわけではない。
オープンなものと、オープンでないものを一緒に配布しても良い。
一緒に配布したもののうち、オープンなものだけがオープンってだけの話。
VB6はアウト
【License】ライセンス総合【利用許諾】
http://toro.2ch.net/test/read.cgi/tech/1266247461/522-523 522 名前:デフォルトの名無しさん[sage] 投稿日:2013/09/10(火) 00:37:03.16
すいません、GPLにプロプライエタリのコードを追加して、プロプライエタリのライセンス購入済みの特定のエンドユーザー様にソース込みで配布することは問題ないでしょうか?
プロプライエタリにGPLを混ぜて問題になることは良くあると思うんですが、逆の場合、プロプライエタリ側の機密事項の違反にならないかと考えています。
523 名前:デフォルトの名無しさん[sage] 投稿日:2013/09/10(火) 01:08:45.55
>>522 プロプライエタリにGPL混ぜるのも、GPLにプロプライエタリ混ぜるのも結果は同じ。
どっちが主か従かも関係ない。
ユーザに配布する際、GPLに従ってプロプライエタリ側のソースも提供する必要がある。
プロプライエタリのコードというのはソースが無い場合が多いし、改造や再配布を禁じる場合がほとんど。
よって結論は「問題アリ」。
MS謹製のランタイムライブラリとか含めてオープンソースソフトウェアとして配布してMSから訴えられても知らんぞ俺は
>>477 全くお前が理解してなくてワロタw
全然関係ないじゃん。
GPLにプロプライエタリのコードを
追加しない前提の話しかしてないのにさ。
>>478 GPLはソースコードレベルのリンクの話であって
動的リンクに関しては、なんの問題もないんだよ。
でないと、Linux(GPL)のライブラリに動的リンクする
アプリが困るだろう?
VB6でどうしてもオープンソースしたいならソースコード公開だけに留めておけよ
ライセンスの問題は著作権に詳しい法律の専門家と相談しながら決めるもんだ 素人が勝手に考えてやると痛い目にあうよ
オープンソースなものと、オープンソースでないものを 一緒のDVDで配布してもOKだよ。
>リンクしなければ、たとえ同じインストーラーに >パッケージしたって関係ないんだよ。 つまりVB6で作ったアプリなのに同梱のVB6ランタイムとはリンクしてはならないという縛り
>>484 ちゃんと区別出来てるか?
オープンソースの話と
VBの規約は別だぞ。
VB6のランタイムライブラリとかはプロプライエタリだろ?同梱したらオープンソースの一部として配布はいかんよ
この話はやめにしよ
もうVB6は関係なくなってきてるし
>>405 はライセンスの質問したいなら
>>477 へGO
>>486 誰が同梱したら配布したらいけないって言ってるんだ?
静的リンクやソースコードの修正をするわけじゃないだろ。
同梱して配布って要するにDVDに入れて
配布するのと何も変わらんぞ。
勝手にルールを作るんじゃないよ。
自作アプリにソースコードとVB6ランタイムの同梱してのフリーソフトウェアとしての配布がいけないなんて誰も言ってないぞ ただそれを「オープンソースソフトウェア」と称して配布するのが誤解を招くからやめろと言ってるだけだぞ VB6ランタイムはプロプライエタリだからそれを含めたらオープンソースにはならんからな オープンソースとは異なる自分独自のライセンス表示すればいい
誤解してるのはお前だけじゃね? 同梱して配布してもオープンソースでなんの問題もない。 それを勘違いしているのはお前だけだ。 いい加減黙れよ。
492 :
デフォルトの名無しさん :2013/10/16(水) 10:26:48.31
間違ってる人を見ると黙ってはいられないタチなんだろ
494 :
デフォルトの名無しさん :2013/10/16(水) 15:52:03.64
言いだしっぺの人は単純にVB6ソースコードのファイル頒布をオープンソースと称せないかという質問だったように思うが。 結論として可能ということだよね。 機能するために動的リンクするファイルが必須である場合もソースコードのファイルだけであれば頒布は可能だし その動的リンクするファイルでさえ、それ自体がオープンライセンスに帰属するものであれば同梱して頒布可能。 但し、少なくともMicrosoftの著作物である以上はオープンソースとして扱う事は不可能である。 また、サードパーティー製であっても頒布ロイヤリティは不要としてもオープンソースとして認めていないのが一般的。 よって、オープンソースとする場合VB6のソースコード意外に頒布可能なのはコンパイルしたEXEや自作の OCX、DLL等外部リンクするファイルくらいであるのが現実的解釈ということ。
今更VB6のソースとかばら撒くとか意味あるのかねえ
496 :
デフォルトの名無しさん :2013/10/16(水) 17:15:28.50
しかし冗談だと思っていたけど、Windows Azure SQL データベースはVB6からは完全に使えなくされたんだね。 OLEDBが廃止されたけどODBCが使えるというのでSQL Server Native Client から MSDASQL (Microsoft OLE DB Provider for ODBC)が使えると思ったけどサポートされないらしい。 というか、SQL Server ODBC ドライバーがAzure でサポートされないという事態になっている。 結局ADO.netを使うしか道は残されておらず、Azure全盛となるまでに否応なしに.netへ移行しないとまずいね。 まあ今時、.netバージンでVB6しか組めないような人もいないとは思うけど、一応老婆心。
>>496 Windows 7 SP1でVB6でMdac 6.0を使ったDB接続するプログラムをWindows 7 SP1以前で走らせると
DB接続時にエラーになる問題があったけど、今は修正タイプライブラリで問題が発生しなくなっている
あの時はVB6というか非.netでのADO接続がサポート終了を覚悟したもんだが、Azureはガチっぽいね
498 :
デフォルトの名無しさん :2013/10/17(木) 10:04:49.32
VB6 ヲワタ・・・
499 :
デフォルトの名無しさん :2013/10/18(金) 09:09:41.21
>>498 もう10年前に終わっていますが?
何を今更w
500 :
デフォルトの名無しさん :2013/10/18(金) 09:25:17.08
>>498 VBは統合コンパイラじゃなくて、コンパイラとリンカの分離特化型で進化していけば
まだ使えるのにな!
501 :
デフォルトの名無しさん :2013/10/18(金) 09:37:43.38
VB6がどうたらよりも、VBの.net版の言語仕様があまりに半端すぎる。 VB6から新たにC#を勉強するのと同じくらいの手間がかかる。 少なくともVB6ユーザーが使いたいとは思わないだろうが、一体誰が使っているのだろう? 結局VB6プログラマが.netへの移行をスムーズに行えなかったのは.net版VBの影響が大きいと思う。
>>501 VB6プログラマの高齢化による思考力低下の影響のほうが大きいだろ
うちの現場では,NET 1.xは見送って VB6をNET2.0(VS2005)が出るまで使い続けた VB6使った期間が長かったんだよね
504 :
デフォルトの名無しさん :2013/10/18(金) 16:13:43.89
>>502 特に20代、若くて頭の足りない年代も色々問題があるどな。
最低限人間としての心遣いができないものかね?
なぜそんなところにボタンを配置する?そのデザインで使う人が使いやすいと思う?
若くてもトータル的に心配りが出来る奴はいるんだけどね。僅かだが。
旧VBも5あたりまでボロクソ言われてたし 当時の我々も未熟だったし 当時の上司も時代錯誤だったし 歴史は繰り返す
VB6ユーザーはWindows Azureやばいね
507 :
デフォルトの名無しさん :2013/10/18(金) 21:19:33.05
Windows アバズレ?
'Class1.cls
Public Sub func()
Debug.Print "1"
End Sub
'Class2.cls
Public Sub func()
Debug.Print "2"
End Sub
'Form1.frm
Sub call_func(Object o)
o.func
End Sub
Sub Form_Load()
Dim c1 As New Class1
Dim c2 As New Class2
call_func c1
call_func c2
End Sub
同じメソッド名を持つオブジェクトならどんな継承関係になくてもメソッドを呼べるってC++も同じ仕様だったんだな
http://ideone.com/gdhPl6
templateはマクロみたいなものだし そりゃできるよ
代わりに実装継承ができないけどね。 C++はできるけど。
512 :
デフォルトの名無しさん :2013/10/21(月) 10:50:17.25
>>509 C++しらないんだけど、funcメソッドがなかったり引数の型が違ってもビルド通る?
514 :
509 :2013/10/22(火) 10:30:42.14
わりぃ、ソース書き換えてコンパイル通しなおすのめんどくさいからあきらめた。
コピペマン参上!まで読んだ。
517 :
デフォルトの名無しさん :2013/11/03(日) 14:02:11.89
長年VBやってると自分用のライブラリがたくさんできるでしょ 計算用、ファイル操作用、通信用・・ もう30ファイルくらいできてるのだけど そのライブラリ同士で引用しあってて 例えば、計算用のライブラリだけ使うつもりが、コンパイルすると ここが未定義ですとエラーになって、使わないけど足りないライブラリもプロジェクトに含めると さらにそこから未定義の参照があって・・・ 要は実行されないコードは、コンパイラさんだって調べりゃ分かることでしょ 何で無闇に全コードの参照をチェックしてしまうかなぁ ライブラリの構成が悪いっても、それぞれ独立のコードにするのは無理 ライブラリを小さくすると目的のコードを探すのも大変だし、存在を忘れてしまうし これを解決するコンパイラオプションてないよね?
それはライブラリの構成が悪い
それはコピぺ志向プログラミングだな
>>517 それはライブラリの分け方が下手なだけ。
質問に答えない質問スレ
>>522 答えを知ってる人はいないってことでしょ、つまり日本語圏では絶望的
じゃあ英語圏で探せばいいじゃんwww
条件コンパイルで
>>517 なんで、依存関係のあるルーチンを1つのライブラリにしなかったの?
529 :
デフォルトの名無しさん :2013/11/03(日) 22:50:50.52
>>527 新規プロジェクトで開発した小さいライブラリなら可能だろうけど
それぞれのライブラリに30〜100個程度の汎用プロシージャが詰め込まれているんです
自分のモージュール内で完結させようとして、引用したい他のライブラリのコードを
自分の中に書いてしまうのも問題ありだよね
ライブラリといっても常に修正が加えられるものだから、同じコードがあっちこっちにあるのはまずい
こういう汎用プロシージャ群の依存関係ってきれいなツリー構造のようにはならない
網目のように絡み合う
そこんとこ、コンパイラの配慮が足りない
いったいコンパイラになに期待してるんだ?
>>529 いやさ、完璧にツリー状にならないのは、そんなの当たり前だけどさ。
どのモジュールからも参照される、標準ライブラリと役割が近い準標準ライブラリ系とさ
そのアプリからだけしか使われないロジック系ライブラリとにわければ、
ツリー状にはならなくても循環参照なんて起こりえないんだが。
お前の場合、モジュールの役割ごとで分けてるんじゃなくて、
担当者単位で分けてるから、そういう循環的な依存関係が生まれるんだよ。
どうせ担当者単位で分けてるんだろう?
○さんが作った○○機能のライブラリ、△さんが作った△△機能のライブラリ。
便利だから○さんが△△機能の関数を使いました。
便利だから△さんが○○機能の関数を使いました。
こういう開発してるからおかしくなるんだよ。
>>529 あとな、お前の作ってるのは汎用関数じゃねーから。
汎用関数ってのは別のプロジェクトでも使える関数だ。
そして関数ではなく、単なるルーチンになってる。
一つのルーチンが受け持つ処理も多い。
どうせ、Get○○By△△みたいな関数ばっかり有るんだろう?
△△の条件から○○を取ってくるみたいな長ったらしい名前の関数。
>ライブラリといっても常に修正が加えられるものだから ライブラリじゃねえよ、そんなの 単なるコードスニペットだろ
option explicitを取り払えばアバウトに動いてくれるんじゃね?
あまりのレベルの低さに卒倒するけど、それ以前に 10年以上前に死亡宣告されてる言語で議論する話じゃないね。
ライブラリと考えるからそう思うだけでフレームワークと思えば 全部リンクしてしまえばいいと思う
537 :
デフォルトの名無しさん :2013/11/05(火) 10:03:14.46
なんか休み明けの朝の会議でわかったんだがVB6の超巨大案件がキタよ 最終まで入れると約20億円規模の開発になる なぜ今頃時代遅れの性能劣化の糞VB6なんだと思ったが クライアントからの絶対必要条件の一つになってる おそらく、サーバーサイドに巨大なビジネスロジックのActiveX EXEが中核にあるため 全てをVB6で組まないといけないと頑なに信じている可能性がある うちの会社でVB6で組める人間は俺とメンヘラの女の子1人しかいない オブジェクト指向という枠組みで.netアプリケーションの開発環境を知ってしまった人間が 非合理的かつ不完全でメロメロな言語仕様のVB6に下りて来れるはずもなく こりゃ大変かことになったと朝から大騒ぎですわ
会社の社会貢献一環として、浮浪者に食事を与えるというボランティアを年に一回行っている 去年の暮れに俺は焼き芋の担当だったんだけど、焼き芋を包む紙がなくて会社で廃棄する紙を使った ある浮浪者がその包紙を見て、「あああVB6だなこりゃ!懐かしいなあ。昔はよく書いたもんだよ。」 と言ったので色々話を聞いたら、40歳になってすぐ零細ソフト会社でリストラで干されてそれから就職できず 気が付いたら浮浪者になっていたという事だった。 面白そうだったので腕を試してやろうと思って会社に連れてた。部屋中がションベン臭くなって社員から 超ブーイングを受けたが、その浮浪者のプログラマの腕はロジックの完璧さといいコーディングスピードといい半端無かった。 とりあえず仕事をしてみたいというので試用期間3カ月で働かせたものの、今ではC#を使わせたら 社内ナンバーワンのプログラマーと言っても過言ではない状態になった。 浮浪者だからと言って馬鹿にできない。ダイヤはどこに転がっているかわからないよ。
なんで業務の内容をしかも業務時間中に2ちゃんに嬉々として書き込んでるんだろう
540 :
デフォルトの名無しさん :2013/11/05(火) 11:01:03.85
意見がほしいんじゃね?感想はイラネと
20億はうらやましいな VB6は嫌だけどw
VB6いいよ〜 Win2000/VMwareの中で飼ってるけど、あんなに軽くて使いやすい道具はないわ
544 :
デフォルトの名無しさん :2013/11/08(金) 15:37:15.56
>>538 >焼き芋を包む紙がなくて会社で廃棄する紙を使った
情報流出の危険がある危険な行為だな
545 :
デフォルトの名無しさん :2013/11/08(金) 16:11:07.68
30000+30000 はエラーになる 30000&+30000 でおkだ
リテラルにはちゃんと型符号をつけないと
547 :
デフォルトの名無しさん :2013/11/08(金) 17:18:05.31
.netはリリースする時のフレームワークのバージョンでいつも悩む 4.5でいいものか?あるいは広範囲に動く3.5あたりが良いのか さらには2.0まで落とすか・・・ と考えると、最新の機能なんていつまでも使えなくなる.net その意味ではVB6ってランタイムも単純だしとても恵まれた環境だと思う しかし時代は.netなので、こんな爺の集まるスレで俺は一体何を書き込んでいるのか 意味不明であるw
548 :
デフォルトの名無しさん :2013/11/08(金) 18:36:20.39
20億あったらおでんが何個食えるかな。
549 :
デフォルトの名無しさん :2013/11/08(金) 21:30:14.28
>>546 For i = 0% to MAXLENGTH -1%
Next
とか書いてるわけ?
550 :
デフォルトの名無しさん :2013/11/08(金) 21:39:52.83
For i% = 0 to MAXLENGTH -1 Next でおk
551 :
デフォルトの名無しさん :2013/11/08(金) 21:42:19.82
Optionボタンの分岐 Select Case True case Option1(0): a=1 case Option1(1): a=5 case Option1(2): a=9 End Select
なんだそのコロン
553 :
デフォルトの名無しさん :2013/11/08(金) 22:16:26.84
>>552 Caseが一行で終始するときに付けるんだよ
いつも思うんだがOptionってONになっているOptionにIndexを返せないんだよな?
Accessはグループ AにあるOption(0)、Option(1)、Option(2)でOption(1)がTrueのとき
Aの値が1になるという便利な機能があった。
VB6の場合は常にどのOptionがTrueかを順次判別するコードを書かないといけない
Accessに負けてどうすんだっつーのwww
554 :
デフォルトの名無しさん :2013/11/08(金) 22:22:32.89
Option()で複数の要素がTrueになる可能性があるからなぁ。
555 :
デフォルトの名無しさん :2013/11/08(金) 22:34:38.77
>>554 たとえば複数のOptionがコンテナのFrameに入っている時、TrueになるOption要素は1つなのだから
TrueになったOptionのIndexの値がFrameの値にるとか出来なかったのかな?
AccessもVBAになってからは出来るのかどうか知らないけど、以前は使えて便利だったんでそう思った次第
Sub Option1_Click(Index As Integer) Option1(0).Tag = Index End Sub
557 :
デフォルトの名無しさん :2013/11/08(金) 23:25:55.35
Select文にコロンつけてやると他の言語のSwitch文に似た感じになってややこしい
559 :
デフォルトの名無しさん :2013/11/09(土) 08:20:35.69
>>555 VB6が用意してくれない以上は自分でつくるよりないなぁ。
コントロール配列じゃないOptionButtonもあるから単純にIndexを返すってわけにはいかないが
560 :
デフォルトの名無しさん :2013/11/09(土) 09:26:22.98
>>555 Sub Option1_Click(Index As Integer)
Frame1.Tag = Cstr(Index)
End Sub
Private Sub MyTest()
Select Case Frame1.Tag
Case "0" : MsgBox "Option(0) が選択された場合の処理です。"
Case "1" : MsgBox "Option(1) が選択された場合の処理です。"
Case "2" : MsgBox "Option(2) が選択された場合の処理です。"
Case "3" : MsgBox "Option(3) が選択された場合の処理です。"
End Select
End Sub
>>551 VB6で10年開発やってたけど、その方法があることに気が付かなかった
目から鱗だわwww
他にも面白業があったら教えてチョンマゲ!
562 :
デフォルトの名無しさん :2013/11/09(土) 09:42:15.95
意外とって言う割には大したこと無いよね。 C言語ぐらいには勝ってるだけ。
564 :
デフォルトの名無しさん :2013/11/09(土) 09:58:15.87
C言語、カワイソス・・・
565 :
デフォルトの名無しさん :2013/11/09(土) 12:28:59.72
Select CaseのCaseがCのswitchよりも自由でいいじゃん
>>561 こんな馬鹿な「技」に感心してどうする。
これなら普通にIFで書いた方がストレートで可読的だし記述に必用な行数も縮まる。
要するに、こんなコード書く奴は馬鹿丸出し
>>565 cのcaseはジャンプテーブルを使った最適化を念頭に置いた仕様になってる。
単純にif-elseifのシノニムの方が機能的には上なんだけど。
>>567 ジャンプテーブルはVB6でもなる。
いくつか条件はあるだろうけど、
少なくともC言語と同じ使い方をした場合は
きちんとジャンプテーブルになってる。
これは逆アセンブルまでして確認した。
For Index = Option1.LBound To Option1.UBound If Option1(Index).Value Then Exit For End If Next Index MsgBox CStr(Index) & "が選択されました"
570 :
デフォルトの名無しさん :2013/11/09(土) 15:21:17.31
571 :
デフォルトの名無しさん :2013/11/09(土) 15:29:55.47
というわけで少しいじってみた Dim opt As OptionButton For Each opt In Me.Option1 If opt.Value Then MsgBox CStr(opt.Index) & "が選択されました" End If Next
572 :
デフォルトの名無しさん :2013/11/09(土) 16:53:13.66
>>569 ロジックとしてはダメダメだけど
今までLBoundとUBoundって配列の添え字の下限上限評価にしか使ったことが無かったけど
曲がりなりにもこういう使い方が出来るのを初めて知った。ありがとう!
>>571 フォームにあるOptionの値が無条件に評価されるだろそれ?
アホちゃう?
設計の問題やな フレームにオプションボタン乗せまくってからフレーム単位のコピペで作った場合 Frame1(0)に Option1(0) Option2(0) Option3(0) Option4(0) Frame1(1)に Option1(1) Option2(1) Option3(1) Option4(1) Frame1(2)に Option1(2) Option2(2) Option3(2) Option4(2) フレームごとにオプションボタンのコピペ貼り付けで作った場合 Frame1に Option1(0) Option1(1) Option1(2) Option1(3) Frame2に Option2(0) Option2(1) Option2(2) Option2(3) Frame3に Option3(0) Option3(1) Option3(2) Option3(3) フレームごとにオプションボタンのコピペ貼り付けしたあとフレーム単位でコピペ Frame1(0)に Option1(0) Option1(1) Option1(2) Option1(3) Frame1(1)に Option1(4) Option1(5) Option1(6) Option1(7) Frame1(2)に Option1(8) Option1(9) Option1(10) Option1(11) コピペなんてしないでひとつひとつ貼り付けていった場合 Frame1に Option1 Option2 Option3 Option4 Frame2に Option5 Option6 Option7 Option8 Frame3に Option9 Option10 Option11 Option12
574 :
デフォルトの名無しさん :2013/11/09(土) 17:03:46.19
あとは任意のFrameの上にのっかってるかどうかの判断をくっつければいいっすな
>>570 配列風なのに部分的抜けるとかVBはマジキチ
For i = 0 To 10 Load Option1(i) Next i Unload Option1(5) とか
577 :
デフォルトの名無しさん :2013/11/09(土) 17:17:56.77
Indexプロパティで値入力できるものな
>>574 配列の途中が抜ける事ができる言語のほうが多いと思うけど?
配列の順次アクセスとか信用してはならない
安価つけてる奴 おまえはスレを再読み込みしろ レス番が間違ってるぞ
順次チェックをする際はNullチェックとかNothingチェックとかNILチェックは欠かさずやりましょう
EmptyやUndefinedもあるよ!
583 :
デフォルトの名無しさん :2013/11/09(土) 19:18:36.92
初期化していない動的配列を識別する方法知ってたら天才らしいが もちろんココにそんな凄い人がいる訳もなく 大人しくゼロで初期化してから使うしかないのよねぇ・・・あほくさぁぁぁぁ!
天才 変態 非にして似てるものかな
>>583 がいいたいのは
だれか教えてくれってこと。
もちろん俺は教えない。
動的配列の初期化と言うのが何を指してるかわからんが 要素の確保された(動的)配列はその段階で初期化されてるはずだが
Dim hoge() As Integer Redim hoge(100) ' Redimの呼び出しで初期化もなされるhoge(0)〜hoge(100)まで全部0がセットされる!
588 :
デフォルトの名無しさん :2013/11/09(土) 19:49:18.19
>>586 たぶんだけど
Dim intReg() as Integer
If intReg() = ??? then '配列の初期化判定
Resim intReg(0)
Else
Redim Preserve intReg(Ubound(intReg) + 1 )
intReg = intSpecZero(Date)
End if
みたいな事がじたいのでは?
Variantなら空配列があるのにね
590 :
デフォルトの名無しさん :2013/11/09(土) 19:51:01.82
やっちまった Resim → Redim よろしく
>>589 プロなら VariantとGo To分は使いたくないところだな。
実際、ある局面においては喉から手が出るほど使い時がある便利な存在だが
プログラマーとしての品格が疑われるからな
オレはArrey関数さえ使わないぜ?
エラー処理でなんとかすればいいんじゃないの
593 :
デフォルトの名無しさん :2013/11/09(土) 19:54:38.29
>>591 VB6にArrey関数なんて無いから使えんだろ?
面倒なことは考えずフラグ作ればいいじゃん Dim existArr As Booelan Dim arr() As Integer If Not existArr Then Redim arr(100)
If Not existArr Then Redim arr(100): exsitArr = True
598 :
デフォルトの名無しさん :2013/11/09(土) 19:57:32.53
言語仕様でどうにか出来ないか?って事だろ?
プログラマなら、言語仕様の問題を 自作のライブラリで解決しろよ・・・。
安易にフラグを使い始めるのが糞コードの始まりw
うん、だからライブラリを作ればいいと。
こんな感じだろ Function EmptyIntArr(arr() As Integer) As Boolean On Error GoTo ErrorLabel EmptyIntArr = UBound(arr) < 0 Exit Function ErrorLabel: EmptyIntArr = True End Function Private Sub Command1_Click() Dim arr() As Integer Debug.Print IIf(EmptyIntArr(arr), "empty!", "not empty") ReDim arr(10) Debug.Print IIf(EmptyIntArr(arr), "empty!", "not empty") Erase arr Debug.Print IIf(EmptyIntArr(arr), "empty!", "not empty") ReDim arr(5) Debug.Print IIf(EmptyIntArr(arr), "empty!", "not empty") End Sub
GoToが嫌だって?じゃResume Nextしろ Function EmptyIntArr(arr() As Integer) As Boolean On Error Resume Next EmptyIntArr = UBound(arr) >= 0 EmptyIntArr = Not EmptyIntArr End Function
コピペ乙
おら、汎用性出したぞ Function EmptyArray(arr As Variant) As Boolean If Not IsArray(arr) Then Exit Function On Error Resume Next EmptyArray = UBound(arr) >= 0 EmptyArray = Not EmptyArray End Function Function UboundArray(arr As Variant, Optional dimension As Variant = 1&) As Long On Error Resume Next UboundArray = -1 UboundArray = UBound(arr, dimension) End Function Private Sub Command1_Click() Dim arr() As Integer Debug.Print IIf(EmptyArray(arr), "empty", "not empty") Debug.Print UboundArray(arr) ReDim arr(5) Debug.Print IIf(EmptyArray(arr), "empty", "not empty") Debug.Print UboundArray(arr) Erase arr Debug.Print IIf(EmptyArray(arr), "empty", "not empty") Debug.Print UboundArray(arr) ReDim arr(9, 8, 7) Debug.Print IIf(EmptyArray(arr), "empty", "not empty") Debug.Print UboundArray(arr) End Sub
607 :
デフォルトの名無しさん :2013/11/09(土) 21:03:37.85
だからバリアントを使ったら負けだと思ってよ
Variantどころか全てVariant相当の言語が 普通に使われてるのに、何言ってんだ?
イミフ
610 :
デフォルトの名無しさん :2013/11/09(土) 21:47:14.27
動的配列なんてつかわずにCollection使えよといいたかったけど Collectionて基本データ型の相性が悪いよな
612 :
デフォルトの名無しさん :2013/11/09(土) 23:13:58.45
ルールブックにそう書いてあるんでそ
じゃあVal()とかも使わないのか
Left()じゃなくLeft$()とかバリアント返す関数は片っ端から使えないね
バリアントを引数にとる標準関数もダメですね
Variantは使う必要がないところでは 使うべきではないけれど、 使う必用があるところでは普通に使うべきだよ。 例えば、データベースの文字列型(NULL許容)とかね。 文字列型のフィールをString型に入れる。 nullはどうするのかといえば、空文字をnullとみなす。 まあOracleも似たようなものだから、それもありかもしれんが、 じゃあ数値型(NULL許容)はどうする?0をnullとみなす? いやいや、0円とか普通にあるから。じゃあ-1をnullとみなす? それでいいとは限らない。真偽値型(NULL許容)はどうするんだ? 場合よっては0がnullだったり-1がnullだったり-999999がnullだったり。 時と場合により、フラグを使う? Integer型をラップした Integerクラスを作るのもありかもね。 でも、こんなめちゃくちゃだと破綻するのは目に見えてる。 こういう場合、素直にVariant型を使った方がいい。 Variantは気をつけないといけないことがあるが、気をつければいいだけの話。 まあC#ではnull許容型というのも出来たけどね。
Q、ここは質問スレですか?雑談スレですか? A、兼用。
自己解決しますた
まさにバリアントワネット
620 :
デフォルトの名無しさん :2013/11/10(日) 00:29:57.00
バリアントワネットワークってなに?
バリアントワネッワーキングじゃね
>>616 Null のためだけに Variant 使うのはちょっと微妙だな。
俺なら、例えば Integer と Boolean でやるかな。
それより Excel からデータを読み出す時とかは Variant にせざるを得ない。
623 :
デフォルトの名無しさん :2013/11/10(日) 11:59:47.03
構造体をCollectionに入れる方法ないっすか? Classにするのはなしで
VBのCollectionにそんな制限ないと思ったけど... っていうか配列から自分で作ってもたいした手間じゃないと思うけど
構造体の定義位置の問題を解決しないとCollectionには入れられないよ
Private Type Unko val1 As Integer val2 As Long val3() As Byte End Type Private Sub Command1_Click() Dim col As New Collection Dim v As Unko col.Add v End Sub
コンパイルエラー パブリック オブジェクト モジュールで定義されたパブリック ユーザー定義型に限り、 クラス モジュール内のパブリック プロシージャの引数または戻り値、またはパブリック ユーザー定義型の要素として使用することができます。 エラーの原因と対処方法を次に示します。 パブリック ユーザー定義型を、クラス モジュールのパブリック プロシージャの引数または戻り値として使おうとしました。 またはパブリック ユーザー定義型のフィールドとして使おうとしました。 パブリック ユーザー定義型がパブリック オブジェクト モジュール内で定義されている場合にのみ、このような使い方が可能です。. mk:@MSITStore:C:\Program%20Files\Microsoft%20Visual%20Studio\MSDN98\98VS\1041\vbenlr98.chm::/html/vamsgPrivTypeInPubFunc.htm
そのエラーメッセージをみるかぎり、PublicかPrivateなのかが問題なのであって クラスか構造体かは関係ないように見えるが
うろ覚えだけど、VBの関数やクラスというのは COMオブジェクトがベースになってる。 privateなものは、COMオブジェクトではない部分として処理されるから、 COMの仕様を守らなくても良いがpublicなものは、COMの仕様を守る必要がある。 COMの仕様を守るというのは、例えばメソッドの 引数、戻り値の型はCOMと互換性のある型であるということ。 privateなユーザー定義型はCOMではない。 だからCOMを扱うCollectionに入れられない。 ユーザー定義型をpublicにするとCOMになるから Collectionに入れられる。 とまあ、こんな感じだったと思う。
それだとPublicなプロパティアクセスとPrivateなプロパティアクセスで えらい速度差がでるような気がするけど、それホントの話?
COMで使う構造体はMIDLで定義する必要があり、 VB6でこの構造体を定義する場合はpublicなクラスモジュール内で publicのユーザー定義型を宣言する。 ・・・だったと思う。手元にVBの環境がないので確認できない。
>>629 うろ覚えでよくこんな適当なこと書けるなあ...
>>629 多分それActiveXコンポーネントのクラスの場合の話
634 :
デフォルトの名無しさん :2013/11/11(月) 16:11:04.65
>>627 の「パブリック オブジェクト モジュール」てのはなんだろう?
標準モジュールとか言われてたやつじゃないか?
だめだ、標準モジュールに書いてみたが
>>626 と同じ
>>627 のエラーが出るわ
Public Type Unko
value1 As Integer
End Type
Public col As New Collection
Public v As Unko
Public Sub Hoge()
col.Add v
End Sub
Attribute VB_Name = "Form1" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False
Attribute VB_Name = "Class1" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = True Attribute VB_PredeclaredId = False Attribute VB_Exposed = False
拡張子vpsファイルに書いてある各設定値の意味を知りたい
タイプミスった 拡張子vbpファイルに書いてある各設定値の意味を知りたい
Type=Exe Command32="" HelpContextID="0" CompatibleMode="0" AutoIncrementVer=0 ServerSupportFiles=0 CompilationType=-1 OptimizationType=0 FavorPentiumPro(tm)=0 CodeViewDebugInfo=0 NoAliasing=0 BoundsCheck=0 OverflowCheck=0 FlPointCheck=0 FDIVCheck=0 UnroundedFP=0 StartMode=0 Unattended=0 Retained=0 ThreadPerObject=0 MaxNumberOfThreads=1 主にここら辺の設定の意味と設定可能な値を知りたい
ユーザ定義型変数をバリアント型変数に格納することが出来ないのか
Dim u As Unko Dim v As Variant v = u これが出来ないな
mk:@MSITStore:C:\Program%20Files\Microsoft%20Visual%20Studio\MSDN98\98VS\1041\veendf98.chm::/HTML/defvariantdatatype.htm バリアント型 (Variant) 数値および文字列の基本的なデータ型以外に、日付、ユーザー定義型、Empty 値、Null 値などの特別な値を持つことができる特別なデータ型。
646 :
デフォルトの名無しさん :2013/11/11(月) 19:23:52.74
variantにセットできるユーザー定義型は関数の引数渡しだけだった気が汁
Public Type Unko val1 As Integer End Type Public v As Variant Public u As Unko Public Sub foo(ParamArray w() As Variant) v = w End Sub Public Sub bar(w As Variant) v = w End Sub Public Sub hoge() foo u ' エラー bar u ' これもエラー End Sub
Cの構造体未満な価値しかないユーザ定義型
>>636 クラスモジュールのことみたいだな
で、クラスモジュールに定義できるのはクラスだけ
クラスじゃないユーザ定義型は使い物にならんなぁ
いまさらな言語でどうでもいいけど
ByValつけても同じエラーだよ
>>651 なぜ値で渡せば通ると思ったのかと・・・
653 :
デフォルトの名無しさん :2013/11/11(月) 20:13:10.27
Lsetでうまく行った
LSetはヤバイんじゃねの?単純なメモリコピーだろ? Type Unko Value1(100) As Long End Type とかだったら非常にまずいんでねえの
どんなにサイズが大きくなっても大丈夫だよ メモリアドレス渡すだけなんだから
ユーザー定義型をCollectionに入れるやり方はあったはずだよ。 標準モジュールにもクラスモジュールにも書けないなら、 DLLにするんだったかな。 とにかく、ActiveXのCOMオブジェクト 相当にするという発想が重要だったよ。
657 :
デフォルトの名無しさん :2013/11/11(月) 22:30:20.22
>>654 1MBくらいの構造体コピーなんて頻繁に組んでるけどね
最近のPCでは一瞬で終わるよ
バリアント型にユーザ定義型をLSetしてもいいの?知らなかった。今度からガンガン使うわ
ディスクならともかく、 1MBのメモリデータと思えばね。
とはいっても、例えばエクスプローラが 自分の環境では80MB さすがにそれより小さいアプリなら 数十MBは超えたくないな。
mk:@MSITStore:C:\Program%20Files\Microsoft%20Visual%20Studio\MSDN98\98VS\1041\vbenlr98.chm::/html/vastmLSet.htm 警告 LSet ステートメントを使って、あるユーザー定義型の変数を別のユーザー定義型の変数にコピーすることは、できる限りしないでください。 あるデータ型のデータを別のデータ型で予約されている領域にコピーすると、予期しない結果が生じる可能性があります。 あるユーザー定義型から別のユーザー定義型に変数をコピーすると、その領域の要素に対して指定されているデータ型に関係なく、一方の変数のバイナリ データだけが他方のメモリ領域にコピーされます。
つまり、気をつけて使えって話ね。
気を付けろってレベルじゃないだろ無関係メモリ領域への書き込みとか暴走まっしぐらじゃねえか
>>663 C言語とかそれが普通だからさ。
memcpyとか知ってるかい?
気をつければいいレベルさ。
暴走しろってか
脆弱性の原因
気をつければいいだけじゃんw
ってかVBでそんなことするくらいなら素直にC使えって。
AcitveXの中でInstancingがPrivate以外のClassモジュールで Publicなユーザー定義型を宣言したら AcitveXを参照するEXEからはそのユーザー定義型がつかえて Collectionにもぶちこめるようになる みたいな気がする。
>>641 プロジェクトのプロパティで設定されている内容じゃないかい?
名前で想像つきそうなのをいじってみたらすぐわかるだろう。
MSDN会員ならインシデント消費して教えてもらうことができるかも?
672 :
デフォルトの名無しさん :2013/11/12(火) 13:33:57.24
>>661 目算でコピー元の3倍くらいのサイズを用意してLsetすれば大丈夫だろうね
Windows 7にはFault Tolerant Heap機能もあるし、一回目〜二回目は例外落ちしても
メモリーリークが認識され三回目はWindows側で余分にメモリを確保してくれるのでエラー落ちしなくなるだろうから。
Fault Tolerant Heap機能って使用者には便利な機能だけど、開発者にとってはメモリーリーク満載のバグソフトを
平然とリリースする可能性があるから、ある意味致命的な機能になるよなwwww
もうすでに確認する環境が動いてないが
>>669 クラスは普通にコレクションにぶち込めたはずだが
そもそもLSetはサポートされている命令では無かったはずだし 何が起こるか保証できない命令、それがLSet 少なくとも業務で作るプログラムに使える命令では無かったが
電文をunion的に解析するのにlset使った記憶が無くも無い
>>673 クラスじゃなくてユーザー定義型がどうかという話
モジュールで定義したユーザー定義型はエラーになる
COMとして公開したクラスモジュールで定義したユーザー定義型は
どうなのよってのが今の話題
しかしもうVB6の環境ある奴いないのか?
677 :
デフォルトの名無しさん :2013/11/12(火) 16:40:39.08
>>675 C++のコードをVB6へ移植する時、Unionを実現できなくて困った経験がある
構造体はDLL内部に存在するため構造体のデザインは変更できない
その時Lsetで疑似的にUnionを構成して難を逃れた経験がある
危険だから使わない それはある意味正論だが
正論を言ってられない時に抜け道があるか無いかが
言語の価値を大きく左右する
>>676 つまりクラスモジュールでTYPE定義するって事?
そんな事出来たっけ?
環境掘り起こして試しても良いけど、その結果を有効活用する機会はもうないだろうしなぁ
>>677 変換関数を自作しちゃいけない縛りでもあったのか?
LSetのリスクより遥かに安全にできると思うけど。
そんなに過去の栄光にしがみつきたいのかなぁw
↓で動いた。 @ActiveXDLLなプロジェクトのClassで Public Type UserInfo Id As Integer UserName As String End Type A標準EXEなプロジェクトで@のDLLを参照設定して Sub main() Dim c As Collection Dim u1 As UserInfo Dim u2 As UserInfo Dim v As Variant Set c = New Collection u1.Id = 1 u1.UserName = "Hoge" u2.Id = 2 u2.UserName = "Fuga" c.Add u1 c.Add u2 For Each v In c u1 = v Debug.Print u1.Id, u1.UserName Next End Sub
>>669 多分それだと思う。
>>681 で動いたって書いてあるし。
>>678 > つまりクラスモジュールでTYPE定義するって事?
> そんな事出来たっけ?
そう。そんなこと出来るのか?ってのが答だった。
これなら
>>627 の
> パブリック ユーザー定義型がパブリック オブジェクト モジュール内で定義されている場合にのみ、このような使い方が可能です。.
という意味のわからん説明もなんとなく意味が通じる。
で、なんでやねん?って考えた結論が、VBアプリ内で閉じてるユーザー定義型は
COMオブジェクトと互換性がなくて、LSETでメモリコピーできるぐらいだからね。
ActiveX DLLで定義した場合はCOMオブジェクトと互換性がある形になる。
VBは基本的にCOMオブジェクトを基礎としていろんなものが構築されてるんだろうな
っていう結論。
ActiveXDLLか・・・LerningEditionの俺には再現無理だな
684 :
デフォルトの名無しさん :2013/11/12(火) 21:53:57.27
685 :
デフォルトの名無しさん :2013/11/12(火) 22:58:04.51
VB5CCEがあれば似たようなことができるかもと思ったが もうダウンロードできなくなってた
IDLを書いてタイプライブラリを作るだけでできそうだな。
フリーのVB6.0パーサってありますか?
「VB6 parser」でググってみれば
690 :
デフォルトの名無しさん :2013/11/19(火) 00:37:38.30
VB6を以前使ったときに300MBくらいのファイルをOPEN文で読み込めなかったり、LAN上のPCにあるディレクトリをディレクトリリストボックスで扱うとかなり遅かったりと問題がありましたが皆さんはそういうトラブルを回避して使っているのですか?
VB6誕生以降の技術を使うことが間違い Win95あたりの技術だけ使ってればいいのよ
.net使えよ。マジ捗るぞ
VB6を駆逐したいが変換アプリの性能が酷くて困る 高い金だして契約してんのに逆に工数増えてるわ
"駆逐"しようと考えるから高くなる 簡単な部分はツールでも複雑な部分は運用(=人力)で逃げてください そういうもんだろ
なんだかんだで手作業移植が品質もいいし早く納品できるね もとが綺麗な解析しやすいコードなら自動化するけど
696 :
デフォルトの名無しさん :2013/11/21(木) 21:45:34.69
他言語への変換が簡単にできるぐらいなら VB6のシステムがここまで生き延びるわけないんだよねえ
だって、言語だけ変換してもしょうがないもん。 ライブラリまで全部変換しないといけない その中にはサードパーティのライブラリもあるかも知れないしさ。
698 :
デフォルトの名無しさん :2013/11/24(日) 01:08:00.40
.NetFramework亡くしてくれたらVS2013使ってもいい
699 :
デフォルトの名無しさん :2013/11/24(日) 01:30:37.76
700 :
デフォルトの名無しさん :2013/11/25(月) 02:29:45.33
>>699 VB6のランタイムは不変だけど.Netはリビジョンが異なると動かないもの
Ver.1.1からVer.4.5.xまで毎回OSとアプリとの互換性を考えながら複数
ビルドバージョンとインストーラ作るの結構しんどいですよ
VB6の基本ランタイムは今やデフォルトで入っていませんかね
もちろん今後WOW64での動作ですがそれが保障されていれば基本問題無いかと
一人で設計開発運用保守をしながらPDCA回してますがVB6SP6はまだ現役で
CodeJock社など米国にもヘビーな経営者の目の黒いうちは大丈夫かと。
※もちろん2人以上の開発者がいて資金時間マンパワーが有れば上記の限りではありません
(VB6に固執する必要は無いと思います)
うちはVB4,5が現役
DLLヘルを知らない世代なのか
703 :
デフォルトの名無しさん :2013/11/30(土) 14:13:18.18
>>702 DLLヘルは心得ています。
基本的にsystemroot\SysXXX99\ 配下にはCOM抽出したコンポーネントを配置しないようにしています。
それでも問題が起こることはありますがそれなりに対処していますよ。
逆に最近の大手業者の製品は.NetF/W上で動くアプリが多いです。
.NetFrameworkの製品はバージョン間の問題はありませんか?
VB6が作られた時代の環境を知っていれば心得ることなんかできないw
705 :
デフォルトの名無しさん :2013/11/30(土) 15:00:55.17
舌足らずで申し訳ありません。 自作の製品については責任をもって対応しているという意味です。 知識としては当時のVBやCマガジンの特集や米MSサイトで得た程度の内容です。
最近まどかさんを見ませんが元気でしょうか
まーどっかにいるんじゃない?
飛びます飛びますの人だっけ?
とんで、とんで じゃねーの?
とんでとんで、 回って回って、 おちる〜! だっけ? 飛行機事故。
711 :
デフォルトの名無しさん :2013/12/01(日) 02:37:54.04
仕事じゃなくて趣味で、こんな面白いアプリ作ったとか言ってみて
712 :
デフォルトの名無しさん :2013/12/01(日) 04:48:05.55
いまWindows8.1 Pro 64bit 版に VB6.0をインストールしてみました。 Windows8の時と同様に、「データアクセス」 の項目だけ後から追加して 再インストールをキメていく方法で問題なく使えるようになりました。
インストーラが何しでかすか分からんのに勇気あるな
邪悪なVB6使いは滅びよ
715 :
デフォルトの名無しさん :2013/12/01(日) 18:41:56.27
>>714 邪悪なのは、VB6使いではなく
VB6アプリを使ってる会社。
>>715 APIよりWSHを使ったほうが楽かもしれないな。
参照設定 Windows Script Host Object Model (wshom.ocx)
Dim fso As New FileSystemObject
Dim txtstm As TextStream
Set txtstm = fso.GetStandardStream(StdOut)
txtstm.WriteLine "helloあいうえお"
txtstm.Close
どちらの方法でもWindows向けの設定になってるので、
コンソール用に換える
editbin /subsystem:console vbxxx.exe
WSHだと標準入出力が出来るだけでコンソールの画面クリアとか書き込み位置指定とか出来ないんじゃないの
コンソールが使えるからと言ってコンソールアプリではない VB6のコンパイラでは純粋なコンソールアプリにはならないらしいよ
ダメなのか やっぱVB.NETに移る死かないか
AllocConsole()はね
VB6使いに破滅を!
なるほどね、AllocConsole()で取得したコンソールは自由自在に呼び出せるけど 起動元のコマンドプロンプトは取得できないのね
AllocConsole()を呼び出す前にGetStdHandle()を呼び出すと成功はするもののそこで得られたハンドルにWriteConsole()しても失敗する AllocConsole()を呼び出した後の取得したコンソールになら自由自在に操れる やはりVB.NETに素直に移行するしかないか
>>717 の言うとおり
editbin /subsystem:console vbxxx.exe
をしたら
呼び出し元のコンソールに出力した
しかもAllocConsole()も呼び出し後の出力も呼び出し元のコンソール上になった
ナルボドね つまり移行するしかないわけだ
727 :
デフォルトの名無しさん :2013/12/02(月) 00:07:16.08
移行を即している人ってなんなの 即身仏なの?
移行しないなんておかしな人達だなぁ
促←うなぎ
730 :
デフォルトの名無しさん :2013/12/02(月) 23:18:54.05
移行を促している人ってなんなの 促成栽培なの?
>>725 そのAllocConsoleは失敗してるから、ステータス見てみろ
見てみた
くっさい仕様だよなこれ
736 :
デフォルトの名無しさん :2013/12/03(火) 21:34:30.00
VB6でもクラスモジュール活用してProperty GetやProperty Set使うようなことやってきた人は すんなりとC#やVB.NETに移行できるよな
移行できるよなというか、移行したよ。 クラスモジュール活用してたし すんなりとね。
標準モジュールでプロシージャのごった煮をつくってるようなとこは いつまでたっても移行できなさそうw
VB.NETでも標準モジュールはサポートされてしまってるんだがな
まあ、それは標準モジュール相当の事ができる言語が大半なわけで、 グローバル変数はどこから書き換えられているかわからんという点で 問題だけど、グローバル関数はさほど問題はないからな。 JavaScriptにもあるMath.sign()みたいなクラスメソッドのようなもんだし。
僕の書いたコンバータであっと言う間に移行できるよ 正常変換率99.5%のすごいやつさ
そんなにすごいなら商品化して売ればいいのに
VB6 で使えるRegExp オブジェクトの実力ってどの程度なの?
744 :
デフォルトの名無しさん :2013/12/09(月) 01:53:51.05
ターゲットは大量のコピペで成り立つシンプルなソースです
機械翻訳は後の保守コストが高い リファクタリングして作り直しがベスト
フォームが最初に上がって来る前提で作られてるから .NETにコンバートしたら初期化処理でエラー出まくりんぐ そんなとこまで気を使ってくれるコンバータなら是非欲しい。 まあVB6はVB6のまま使うのがベストだと思う
748 :
デフォルトの名無しさん :2013/12/16(月) 14:04:23.28
>>747 まあVB6はVB6のまま使うのがベストだと思う
同感!!
VB6の次は.NET&#10005;でクラウド○かも
そのまま使うとサポート切れが問題になるね
750 :
デフォルトの名無しさん :2013/12/16(月) 18:32:48.31
VB6のサポートだったらとっくに切れてるような?
752 :
デフォルトの名無しさん :2013/12/17(火) 17:38:42.97
753 :
デフォルトの名無しさん :2013/12/19(木) 19:01:00.08
開発はXPとかですればいいってことか なら開発用のマシンが用意できないならバーチャルPCでいいじゃん
真面目な話ADOとかいつサポート切れると思う? ADO.NETに置き換える作業に疲れた
64ビットは禁句ですか?
64だと動かないんだっけ?
すでにVBがサポートされてないんだからADOのサポートを考えてもしょうがない 今のACCESSってまだADOサポートされてるかな?されてればそれが最後じゃないかな
取引先にVB6と決別する英断させろよ、営業
動くならいいじゃないか 高い金をかけるほどじゃない
WSHがあるから、ADOのサポートはまだ続くんでない?
サポートが動くかどうかって事ならまあ当分は動かせるんじゃないの
>>758 が全世界的に進まない限りどうにも
官公庁や教育機関が結構使ってるのもネックだな
所詮はMSも一企業でしかないからね
営業が仕事をしないIT業界
vbunitとか使ってる?
使ったことないや。 うちでは標準モジュールとフォームモジュールしかないので使えないと思ってる。
>>765 には質問を変えた方がいいな。
(質問) クラスモジュールとか使ってる?
(レス) うちは○○○だから使えないと思ってる。
なにが入るんだろうか。
770 :
デフォルトの名無しさん :2013/12/28(土) 15:11:05.83
771 :
【196円】 【大吉】 :2014/01/01(水) 00:45:46.21
今年ことVB6が全駆除されますように
772 :
デフォルトの名無しさん :2014/01/01(水) 22:23:11.03
773 :
デフォルトの名無しさん :2014/01/01(水) 22:26:39.69
InstallShield2013も遂にVB6をサポートしなくなったぞ InstallShield2013を使ってVB6のインストーラを作るには、 旧InstallShieldで提供されていたマージモジュールを ひとつずつ追加して自分で検証しながらこしらえてくださいだって
774 :
デフォルトの名無しさん :2014/01/02(木) 14:43:14.03
今年もこの板で楽しめますように
775 :
デフォルトの名無しさん :2014/01/03(金) 16:01:26.40
Windows8.1の32Bit版、64Bit版でも無事にVB6SP6(IDE)のインストール と動作確認が完了しました。 ※WindowsUpdateによりプログラムの互換性に関する修正プログラムはすべて インストールした状態で実施. ※データアクセスおよびグラフィックのコンポーネントを抜いた状態で インストールし,後からこれらを再インストール.
776 :
デフォルトの名無しさん :2014/01/03(金) 21:29:07.05
なんか面白いアプリ作ったとか聞かせて
結果的に、自分が面白いと思うものしか作らない 趣味アプリでも仕事アプリでも
778 :
デフォルトの名無しさん :2014/01/03(金) 21:55:40.02
自分が面白いと思うアプリしか作らないよね。 プロとして当然だと思う。
業務システムしか作らないよ 家でノートパソコン開くのが辛い タブレットなら大丈夫なんだが 学生の頃は暇さえあればVS開いてたのに 趣味は仕事にしたらダメだね
780 :
デフォルトの名無しさん :2014/01/04(土) 01:13:11.73
動画からアニメGIFを作るとき 繰り返しの繋ぎ目が合うように フレームから取り出す領域を移動させたり伸縮させたりを作ってる フレームの画像からGIFを作るのは市販のアプリにさせるけど
781 :
デフォルトの名無しさん :2014/01/04(土) 01:19:56.58
VBってそういうこともできるんだ。
782 :
デフォルトの名無しさん :2014/01/04(土) 01:31:31.56
銀行のIDやパスワードとか全部、暗号化したファイルに入れてあって サイトに入力する時はそこからクリップボード経由で行うようにしてる それだどキーコードが発生しないから安全だよね
クリップボードとか危険極まりないだろ 別タブで開いてるページとか埋め込みページがクリップボード監視してたらやばいやろ
これは自作アプリ自慢? パスワード管理なんて既成のツールでええやん
785 :
デフォルトの名無しさん :2014/01/04(土) 02:11:22.50
GitHubに上げろ
786 :
デフォルトの名無しさん :2014/01/04(土) 13:54:32.04
まぁ、クリップボード監視するような奴はおらんでしょう キー入力を避けるのが第一 次はその入力画面が成りすましじゃないかどうか
どう考えてもクリップボードのほうがヤバイ
788 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2014/01/04(土) 18:30:23.69
クリッボーはやばいよ ファイルマッピングかメールスロットを使うべき
クリボー監視は雑魚キャラでもできるレベル1のテクだから、はっきり言って危険度高い。
ヘ⌒ヘ /(・)(・)\ ( △――△ )  ̄/ ̄ ̄| ̄ (⌒\_ノ⌒)  ̄ ̄  ̄ ̄
ポリンキーかニコチャン大王に見える
>>791 それはない
_,∩_ _,∩_ _,∩_
(_____)ゝ、 (_____) y (_____)
/ :: :: :: ヽ 〉 /-‐:: ::‐-ヽ / / :: :: :: ヽ
_./ (・ )ll(・ ) ∨ _/ 0) i! 0) ∨ _/ ( ・)i!(・ ) ゛、_
// :: :: ∈ゝ :: ::ヽ // :: ‐-‐ :: ヽ // :: ー一 :: ヽ\
. ゝ/:: :: :: :: :: ::ヽ ゝ/ :: :: :: :: :: ヽ ゝ/ :: :: :: :: :: ヽく
?? |?? |?? ?? |?? |?? ?? |?? |??
| | | | | |
⊂! !つ シ! !つ ⊂! !つ
@ @
||_ ___||
/ Y  ̄`ヽ
.| \
/ |__ )(___) ヽ
/_ヽ_゚_ノ ヽ゚_ノ |__|
| ∧ __∧ | |
ヾ__| ̄  ̄ し、_ノ
`ヽ、___ ノ
__|―-| _|―-|
└-ー┘(___)
793 :
デフォルトの名無しさん :2014/01/04(土) 22:57:20.77
サイトの暗証番号入力窓にメールスロットで送れるとは思えにゃいが
794 :
デフォルトの名無しさん :2014/01/04(土) 22:58:58.23
それより話すことも枯れ果てたスレだし どんな面白いアプリ作ったか話てよ
WebページだってGUIパーツで作られてるんだからウィンドウハンドルくらい持ってるやろ
796 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2014/01/05(日) 00:18:23.07
>>795 代表的なブラウザはHTMLのボタンごときにウィンドウハンドルを無駄に消費しないのだよ。ブラウザそのものはウィンドウハンドルを持ってるが
じゃあWebページにキー入力メッセージを直接送るか
パスワード管理ならkeepassを使ってる。 パソコンだけでなく、LinuxやMacでも使えるし iPhone、Android用もある。 自作するのはアホ。
既存のIDマネージャがIDとパスを盗み出してない保障はない
気持ちはわかるがそれじゃ今の世の中生きづらいだろ おれはLastPass使ってる
安全性うんぬんならオープンソースのを自分でソースコードを一読し自分でコンパイルすればええ
>>799 オープンソースなんだから
コードを見ればいいだけの話。
KeePassは当然オープンソース
vb6+ado2.8+sqlserver2000なのですが select * from T where ID = @ID @IDをパラメータにしたいのですがうまくいきません 以前ADO.NETでやった時は確かこんな感じでパラメータクエリを作れたと思ったのですが この環境ではパラメータクエリは使えないのでしょうか?
>>805 ADOのプレースホルダは?
つかヘルプ見るなりググるなりすれば解決するだろうに
807 :
デフォルトの名無しさん :2014/01/08(水) 20:00:10.69
ADO(Microsoft ActiveX Data Objects 2.8)を使用し、 SQL server 2008R2へ接続するVB6.0プログラムを Windwos7及びWindows server 2008R2から実行すると、 問題なくデータベースへ接続するのに対して、 Windows server 2008から同じプログラムを実行すると、 以下のようなエラーになります。 430 : クラスはオートメーションまたは予測したインターフェースをサポートしていません 何故でしょうか???
809 :
デフォルトの名無しさん :2014/01/08(水) 20:40:12.29
>>808 ありがとうございます。
早速やってみます。
つか一連のADO関連のは同一人物か いまさらVB6で、しかもADOとか、正気とは思えん
.NETへのリプレースはまだまだ需要があるからADOを教える価値はある リプレースの案件は.NETだけ知っててもろくな事にならないからね
812 :
デフォルトの名無しさん :2014/01/08(水) 23:33:07.42
>>810 VB6はまだまだ現役
新規案件のカスタマイズプログラムをVB6で開発して納めることも
結構あるよ
>VB6はまだまだ現役 出世? 生涯現役だもんで
それは多分、もう死んでることに自分で気が付いてないだけ
815 :
デフォルトの名無しさん :2014/01/09(木) 00:26:51.11
VB6の亡霊を成仏させなければ
817 :
デフォルトの名無しさん :2014/01/09(木) 23:42:45.92
>>810 VB6SP6, DAO, ADOStream を現役で使っていますが何がダメなのですか?
今夜もビルドして毎日納品していて問題ありませんよ
818 :
デフォルトの名無しさん :2014/01/10(金) 00:43:37.81
↓.NET派の指摘が楽しみ。
819 :
デフォルトの名無しさん :2014/01/10(金) 01:08:41.10
LeftとかTopプロパティって実数だたんだ インチやcmの場合もあるし、そうだわな
vb6は糞みたいな暗黙変換とかデフォのプロパティとか危険がいっぱいで素人には任せられない
821 :
デフォルトの名無しさん :2014/01/11(土) 18:13:11.25
本屋でVBの本を開き、VBのサンプルって時計ばっかりと素人女がわめいていた
822 :
デフォルトの名無しさん :2014/01/12(日) 12:24:38.19
Private Sub HScrollコマ送り_Change() Image1.Picture = Image2(HScrollコマ送り.Value).Picture End Sub Private Sub HScrollコマ送り_Scroll() HScrollコマ送り_Change End Sub 10枚のイメージImage2(0〜9)を用意し、スクロールバーで表示します HScrollコマ送り.Min = 0 HScrollコマ送り.Max = 9 スクロールバーにフォーカスがあるときは[←][→]キーでコマ送りできます
823 :
デフォルトの名無しさん :2014/01/12(日) 12:30:04.47
スクロールバーが右端に来て最後の画像が表示されたところで [→]キーを押しても無反応ですが、それを左端に戻るようにしようと Private Sub HScrollコマ送り_Change() Image1.Picture = Image2(HScrollコマ送り.Value).Picture If HScrollコマ送り.Value = HScrollコマ送り.Max Then HScrollコマ送り.Value = 0 End If End Sub
Min=-1,Max=10にして、 Changeイベントで、 -1になったら9にする 10になったら0にする
825 :
デフォルトの名無しさん :2014/01/12(日) 14:18:30.58
ありがとうございました それしかないですよね
modでいいだろ ただしオーバーフローには関与しない
>>826 今時そういう中二病っぽい「テクニック」を使う奴はダメグラマ。
普通のコードを中二病とかいうのなんで? いや、まさか、これが普通のテクニックってしらないの?w
一般化するならmodだろ
俺もModだな
どのへんが中二病なんだよ
832 :
デフォルトの名無しさん :2014/01/12(日) 16:39:21.85
あんたら問題の核心が分かっとらんね
>>823 のロジックだとImage2(9)の表示に続けてImage2(0)を表示してしまうので
Image2(9)が表示されないという問題だよ
ポインタの計算の問題ではない
ちょっとなに言ってんのかわからない
C++みたいに細かいところまで記述されたVB6.0の言語仕様書って手に入りますか?
MSDNじゃない
836 :
デフォルトの名無しさん :2014/01/14(火) 02:21:49.45
むかし洋書の赤本であったな
MSDNだよなぁ 新人にもF1押せば良いじゃんって教えてるんだけど何故か見ないんだよな なんでだろ
838 :
デフォルトの名無しさん :2014/01/15(水) 03:59:21.16
MSDNがインストールされてるのに見ないのはおかしいな
繰り返し読んで言い回しのクセとかに慣れないと 真っ先に読むべきポイントに自動的に目が動くまでしばらくかかるだろw
プログラミング全くの初心者に、VB6から教えようという人がいるんだが、 賛成できるか? まあ、手軽にwindows上で動作するものを作れるから、 つまらなさを軽減できるかもしれないとは思うけど。 薄めのC言語のテキストやらせて、ちょこちょこ自分の思いついたものを 作りつつ、Cのテキストが済んだらJavaやらせる、てのが良いかと思うんだが。 JavaでOOPの基本がしっかりしたら、ようやくVB6であれ.NETであれ 取り掛かれるイメージがある。特に、VB6はJavaやC#から見れば OOPが中途半端かつ特殊かつ癖が強いので、取り掛かれるとしたら 最後が良いと思うんだ。 やりようによっては、C言語でもwebアプリ作れるし。 (自分が独学でやってる頃はそんな事もした)
HSPからやるべき
目標をどこに定めるかってことでは ・手軽にwindows上で動作するものを作れる ・つまらなさを軽減できる ならVB6でもいいじゃん C→Javaでやると長いし面倒なうえ目標があいまいなら printfとコンパイルだけでで飽きると思うわ
Excel持ってるならExcel VBAからがいいと思う
Cをやる必要性ってポインタの概念ぐらいだから Javaからはじめてもいいかもしれない。 VB6が手軽なのは間違いない。 ただ「プログラミング初心者」対象なら 変数のデータ型すら意識しなくて良いというような言語は 用いるべきじゃないと思う。
JavaとかGUIが腐ってるものは初心者向きじゃないな
初心者にはCUIで学習させるべき
何のためにプログラム覚えたいのかに依るだろ 仕事ならその仕事で必要な言語を覚えればいい 趣味なら、いまさらVB6を一から教えるとか有りえねぇ
初心者にはシンプルでガチガチに型付けされた言語がいい VBみたいなアンチパターン満載の言語はダメ
>>848 「教育」つってんだから、学校か会社だろう。
会社にしても、研修とかそんなんだろうけど。
どっちにしろ、VB6は有りえねえか。
自分の下に新人が入ってきたとして、
いきなり案件にアサインして実戦で教育するとしても
VB6の案件を選択する事は無い。
よくよく考えると841の言う「C→Java」は学習順序としては良いかも。 Cをやって損は無い。それが得意になってくれればそれはそれで 仕事はあるし。得意にならなくても、ポインタわかってくれるだけで良い。 次いでJavaやれば、Cで学習した内容は生きてくるし、 JavaってOOPのテキストで必ず用いられてるぐらい標準的OOPだし。 この2つやっとけば、後はなんとでもなるよね。 C#やってた新人がJavaチームに入って、デザインパターンわかって 無かったとかもよくある話で、やっぱ順序としてはC→Javaが効率的かな。
ただそれをVB6スレで言うのはどうなのかと まあ俺も勧めないけど VB.NETでいいんじゃねw
VB6が真の意味で初心者向けで無い事は元からわかっている。
VB6しか使えないって人を増やした事は、ある意味淘汰の現象を作り出せたという功績かもしれない
VB7以降ってありますか? 何番までありますか? ざっくりVB6と以降で何が違いますか?
VB7は製品名VB2002.NET VB7.1 - VB2003.NET VB8 - VB2005 VB9 - VB2008 VB10 - VB2010 VB11 - VB2012
Twips単位を多用したVB6アプリを.netに移行するのはずげー大変だわ しかもVB6にはScale Modeをユーザー定義して独自の単位系まで作れた。 たとえば、ここからここまでの距離を100にして50に点を打つとちゃんと真ん中に打たれた。 これをピクセル単位系しかない.netへ移行するのはまず不可能に近い。 変換ツールに頼らずアルゴリズムを見直してゼロから作り直す方が早いのでは?
そんなの手間はかかるが難しい作業じゃないだろ
単に、かけたり割ったりするだけだろ... 面倒だとは思うけど。
>Scale Modeをユーザー定義して独自の単位系 これって手間だけでは解決できないだろ?
それ以前に、そんな話10年遅いわ。 今頃何言ってんだ
座標変換すらまともに出来ないコーダーが金とって働いてるのか? 日本大丈夫なのかマジな話 もっと情報教育に力入れないとシナにボコボコにされるぞ
Compatibilityでそのままいけんじゃない? てかOpenGLとか使ったら良くない?
ユーザー定義のScale Modeを理解してない雑魚が簡単に考えてるね コーディングでどうにかできる問題じゃないのに馬鹿だよね
リサイズに自動追従するようなアプリだと移植は無理だろ? 全部コードで作り直すしか手は無い。 無い袖は振れないからw
867 :
デフォルトの名無しさん :2014/01/21(火) 23:53:40.11
>>865 ,866
これがゆとりか
与えられたものしか使うことが出来ない
ハックして使い倒すということが出来ない
869 :
デフォルトの名無しさん :2014/01/21(火) 23:59:01.43
>>868 冷静になれよ かなり恥ずかしいぞ 浮いてるw
>>868 が浮いてるようにように見えるとしたら、それは君のレベルが低いから。
馬鹿じゃないの。
これがVBerか
冷静にならなきゃならないのは ごく当たり前に出来ないといけないことを無理だと諦めて 他人に当たり散らすことしか出来ない三流コーダーの君たちなんだが
連投みっともない
底辺しか居ないスレで普通人が現れたら相対的に天高く浮いてるように見える という皮肉だったらごめんね
逆じゃね?
>>866 いやその通り、作りなおせば良いだけじゃん
その分踏まえた金額貰えば良いだけの話じゃないの?
趣味の自作プログラムなら知らん
それこそ自前でなんとかせぇよ
>>865 だから何ができないんだよ?
コード触らずに何とかしたいとか言ってるんじゃないよな (w
単純コンバートが不可能って言ってるんじゃないの? つまり移行より作り直しが現実的だと。
GrapeCityの開発の人にも下手に変換することを考えるより ゼロから.netで組みなおすことをすすめられた
879 :
デフォルトの名無しさん :2014/01/22(水) 15:23:05.20
>>878 GrapeCityごとき東北の田舎もんに言われるまでもなく
そうしてるわアホ
グレープ・シティってActiveXの新規リリース止めてしまったね。 Spread 8.0とか出るの期待してたのに、仕方がないので英語版を買って使っている。 日本語表示できない部分があって苦慮しているよ。
ぼったくりで稼ぐだけ稼いだからしめるんじゃね?
彼らはCOMを捨てた事を後悔するよ その時は遅いけど
COMは仕様がダサすぎる
884 :
デフォルトの名無しさん :2014/01/23(木) 07:30:08.19
ダサいVBの仕様に合わせたんだから仕方がない。
.netもJavaデベロッパーからするとかなtりダサいけどね COMの方がまだ特化してる分効率が良くていいかも
VBerのくせに聞いたような口をきくな
VBerだがJaverでもありC++erでもある
888 :
デフォルトの名無しさん :2014/01/24(金) 00:03:57.90
COMerで十分。
889 :
デフォルトの名無しさん :2014/01/24(金) 00:06:36.96
>>880 グレープシティには再三言ったけどActiveXやらないね
いかにも感がある。
最近はExcel方眼紙とか言って身内で盛り上がってるよ
再三言ったけどってどんな自我肥大野郎の言い草だよw
891 :
デフォルトの名無しさん :2014/01/24(金) 00:14:55.46
892 :
デフォルトの名無しさん :2014/01/24(金) 00:21:22.70
文化オリエント文明の時代
別にだからどうとは言わないが、いわゆるキリスト看板をそこらに設置してる団体と 関係があるらしいねあそこ。
894 :
デフォルトの名無しさん :2014/01/24(金) 00:39:36.53
FarpointTechnologies社のほうが断然よかった
VB6の鎖切った形変換まわりの仕様を考え出したバカは腹切って謝罪しろ
896 :
デフォルトの名無しさん :2014/01/24(金) 01:56:59.08
VBA6.1, VBA7がサバイバルしているのがせめてもの救い
>>895 よく解ってない人が適当に書いても動くものをってコンセプトだからそれでいいのだ
解ってる人はVB使わなきゃ良いんだシー
>>893 この国はフリーメイソンに牛耳られている。ソースは、深夜枠の萌アニメ
899 :
デフォルトの名無しさん :2014/01/24(金) 05:53:22.67
ーッバコン「ナペロwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww」
900 :
デフォルトの名無しさん :2014/01/24(金) 09:25:42.42
>>891 Spreadに関しては.net版の進化がすさまじい。
セルの中にグラフを表示するとか、確かにオーネードローで実現できなくもないが
オーバーヘッドを考えると列にグラフ表示した時の描画遅延がすさまじいだろうね。
処理中はPaintをしないようにして、処理終了後にPaintするというのは
Spreadでは常識的な技だが、そんなもんでどうにかなるレベルじゃなさそう。
まあSpread 8にもセルへのグラフ表示機能は無いのだけれどねw
901 :
デフォルトの名無しさん :2014/01/24(金) 09:26:36.48
ヤダワァ・・・アタシ、オネードローとか書いちゃったわ ハズカシwwww
そういえば東北の震災の時にアクティベーションが出来なくなってすごく困った事があったな。 あの時すぐにインストールできなくて、ビッグディールへの提案が流れてしまった。 50億円の損失だが誰も担保しない。保障は別としても瑕疵さえも認めずだった。
だが代わりに自分の無能さを他人の責任にすり替えるテクニックがほんの少し向上したのでよしとしておこう
中の人が怒ってるw
>>901 姐さん、この手の技術は何処で学べるんでしょうか
906 :
デフォルトの名無しさん :2014/01/24(金) 21:03:55.55
みんなどんなアプリ作ってるか教えてよ おいらはオンデマンド配信の動画を録画したり 保存した動画を再生したりを作ったぞ ローテクを駆使してな
最近では動画から人の顔を検出して、通路を通るだけで認証できるようにする顔認証プログラムかな すべてをVB6のコードだけで作った 3年前に駐車場の自動ナンバープレート読み取りソフトを作った時よりもかなり難しかった 人間の顔の特徴をとらえて、3D上の角度から距離を算出して行かなければならないから大変だった コードの多くは三角関数で、フーリエを使った重畳積分からサイノグラムを抽出して計算する部分だ
どれをとってみてもVBでやりたくない処理
909 :
デフォルトの名無しさん :2014/01/25(土) 20:21:54.37
凄いな顔認証か おいらは証券会社のツールをキャプってリアルタイム株価を読み取ったが 数字を識別するだけでも大変だったのに、次元のまるで違う話だね
910 :
デフォルトの名無しさん :2014/01/25(土) 21:49:51.99
顔認証をマスクで突破されたので、変顔認証を作った。 生体認証と同時にパスワードと同じ効果もあった。
ミッション イン ポッシブル の 見過ぎ
912 :
デフォルトの名無しさん :2014/01/25(土) 21:53:11.26
タイムマシンを作った。 スタートボタンを押して少し待つと、時間を三秒進めることができた。
913 :
デフォルトの名無しさん :2014/01/25(土) 21:56:56.59
無理目の任務が楽な任務に変わった。
vb.netへのコンバータをvb6で書いた
N88やGW-BASICが現役だ
>>914 まあ、ネタだろうがどうせ書くなら vb.NET で書けよ (w
型変換規則が把握しきれないのですが綺麗にまとまったリファレンスサイトとか無いですか?
そんな複雑と思えんが...
数値、文字列の変換はフォーマットとか考えたら面倒だろ どんな形式なら変換出来るのかとかな
何のこっちゃ。 それは「型変換規則」なんぞではなく、書式設定じゃないのかよ。
変換規則の一部でしょう普通に考えて
まあVBerの君にとってはそうなんだろうねきっと。 っていうかわざわざご丁寧にカギ括弧付けて「型変換規則」って書いてるのに馬鹿なのか本当
型変換規則だろどう考えても 「特定の値を持つ文字列型から数値型に変換出来る」 というルールが型変換規則ならなんなんだよ
何が「どう考えても」かさっぱり分からない。 そもそも、 >数値、文字列の変換はフォーマットとか考えたら面倒だろ この日本語として成立してない文は何なの。 CdblやCSngに渡せる文字列の仕様が知りたいなら最初からそうはっきり書け馬鹿。
バカはてめえだ 関数通さなくても変換される時点で 言語に組み込まれた型変換規則なんだよ
ダメだこりゃ。 VBerは、いや少なくともこの彼は、自分が他人に通じるまともな文章を書けないことを 責められていることが理解できないらしい。 で、逆ギレ。 みっともないことこの上ない恥さらしだな。
馬鹿な彼のために日本語講座をしておいてやると、そういうことを人に尋ねたい場合は例えば、 暗黙的に実数に変換可能な文字列の仕様はどこに書いてありますか? と書くんだよお馬鹿さん。
>>927 まだ気付かんのかアホ
それ型変換しとるやろが
文字列から数値に変換してないってんなら論理的に説明しろ
基地外の相手は疲れるわほんま
>>928 馬鹿だろお前。
文字列から数値に変換してない、なんて言ってない。
俺が言ってるのはこうだ。
『質問は他人に分かるように書け馬鹿』
>>929 普通の文書を理解できる程度の知能を身につけてから2ちゃんやれやカス
まあてめえじゃそりゃ無理な話だから
来世に期待してさっさとサヨナラすのをお勧めするぜ
931 :
桃白白 ◆9Jro6YFwm650 :2014/01/26(日) 21:27:02.40
|ヽ∧_ ゝ __\ ||´・ω・`| > やめなよ VB使ってる珍獣同士なかよくやりなよ! /  ̄ ̄ 、ヽ _______ └二⊃ |∪=| |─── / ヽ⊃ー/ノ  ̄ ̄ ̄ ̄ ̄  ̄`´ ̄
932 :
デフォルトの名無しさん :2014/01/26(日) 21:30:33.78
オッパイが毒吐くとは珍しい。
vectorでランタイム落としてくるのじゃだめなの? ってか実際xpから内蔵してるランタイムじゃ動かないのあるから、結局落としてくることになるし。
ランタイム自体がOSで機能しなくなるという話 OLEAUTOのモジュール内部でサスペンドする
いよいよか・・・
>>933 得意げに貼ってるつもりなんだろうけど、これ読んで馬鹿にされてることに気が付かないなら
かなり重症の馬鹿だと思うけど。
こういの褒め殺しって言うんだよ知らないかな。
938 :
デフォルトの名無しさん :2014/01/27(月) 23:16:58.74
あえて一番の敗者を挙げるなら、馬鹿に反応して何行もレスしてしまう興奮おじさん・・・かな?
939 :
デフォルトの名無しさん :2014/01/28(火) 02:00:45.03
>>933 ちょっとひと言 - 物言わぬ多数派: Visual Basic 6 が今でも成功している理由
今は業界から離れてしまって全然知らないんだが
VBって今でも成功してるの?
なにをもって成功と言うかに依ると思うが... 使われ続けるのを成功と言うなら、結構成功した方じゃね?
.netに慣れたら6には戻れないなぁ
オブジェクト指向で作られた最高傑作ソフトはVB6じゃない?
何を持ってオブジェクト指向と呼ぶかだな。 当時としてはOODとしては先端だったけど、 OOPとしてはまがい物だった。
>>941 >.netに慣れたら6には戻れないなぁ
.netのVBに慣れるとVB6の言語仕様を忘れてしまう。たまにVB6で作ると実行エラーの山。
.netのVBからC#へ変換するコンバータに非常に良いものがあって
これを使って作る時はVBで、提出するときはC#で、社内ではVBとC#の両方できるプログラマーとして
重宝されている。
なぜかC#からVBに変換するソフトはダメダメなものが多い
>.netのVBからC#へ変換するコンバータに非常に良いものがあって お勧めのコンバータを一つ上げて下さい
>>946 WEBでC#へ変換してくれるフリーのサービスがあるけど、使い物にならない
そこれ、俺が常用してるのはコレ
VB.Net to C# Converter
http://www.vbconversions.com/ VB6からC#へ変換する場合はVBTo.Converterを使用している
VB6からMS VC++ MFC, VC++.NET (CLR), VBNET, C#, J#,
Borland C++ Builder, Borland Delphiに変換可能な神ツール
VBTo.Converter
http://www.vbto.net
プロジェクトファイルからの変換だとさすがに綺麗に変換されるな。 アセンブリからの逆コンパイルで作ったソースはかなり見にくい。 不正にシリアルコードを盗もうとして.NET Reflectorを使う事があるが、 逆アセするよりは遥かに楽だが、ソースのメンテには使えないわ。
>>948 >不正にシリアルコードを盗もうとして.NET Reflectorを使う事がある
ちょろい奴だと、バイナリエディタで「シリアル番号が違います」のメッセージを検索して
その付近にシリアル番号がそのまま埋め込まれている事もあるよ。
>>947 どうせそのツールも買わずに割ったんだろ?
割りに対してはVB6は最強レベルってこと? これが理由でVB6を使い続ける向きもあるだろうな
変換ツールでうまくいったためしがない
変換ツールって何をどう変換するの?
954 :
デフォルトの名無しさん :2014/01/29(水) 11:51:31.48
VB6でビットコイン作りたいねんけど
>>952 どの言語使っても一緒じゃーんっていうプレーンなコーディングを心がけるのがよい
956 :
デフォルトの名無しさん :2014/01/29(水) 12:05:29.17
どんな秀逸な変換ツールでも100%完璧な変換は無理 あくまで変換前後の両者の言語で書ける前提で使う物 手間が9割以上省けるのは事実 それにしてもVB6は寿命長いね VS2003時代の.net Framework 1.1なんてとっくにサポート打ち切られたのに・・・ VS2005の.net 2.0も3.5や4.xに比べて中途半端な仕様ゆえ危うい・・・ VB6はVBSと互換性が高い点から、ExcelのVBAを外せないのと同様に 開発プラットフォームから安易に外せないとでも言うのだろうか?
VB6のActiveX EXEもC++に変換してくれるの?
サポート代金払ってくれるお得意様がいるんじゃね
>>957 VB6のソースがプロジェクトレベルで揃っていれば余裕
VB6のユーザーコントロールさえC++どころかDelphiにも移行できたよん
>>958 大企業の開発部門の技術革新は象の様に遅いからな
COBOLしかできない長老がトップに居たりするし
それが既得権益だと思っている
それにひきかえ、俺たちアリはすぐさま新しい物に飛びつく
失敗作となり無駄となったものの方が残ったものよりはすかに多い
しかしそれら数々の失敗作でさえ、今の俺の技術力の肥やしになったと思っている
SUGEE! IDLまで書いてくれるとは
おそらく仕事では絶対に使わないだろうが、自分のためになったものはいくつかある。 最近ではRubyかな?オブジェクト指向を学ぶには.netから外に出る事が本当に大切だと思った JavaがC#に比べてどうのという奴が多いが、そのJavaでさえオブジェクト指向という意味では不完全だ 来年あたりはObjective-Cをやってそうで恐い
VB6は金融サーバー上の巨大なActiveXとして開発に使われた時期があったからね あの複雑怪奇なサーバーサイド ゾンビを他の言語システムへ移行する勇気は俺にはない
FAで使ってて、もうどうしようもないレベルになってる 年に一度サーバを落とすんだが、何台か立ち上がらない
コンバータ使ってコンパイルまでこぎつけても実行時バグだらけ
966 :
デフォルトの名無しさん :2014/01/30(木) 10:11:01.42
そう、VB6は意外と思われるかも知れないがサーバーサイドのCOMとして 基幹システムに君臨しているケースが少なくない。 しかも規模が巨大なため、金融に蔓延るCOBOL同様にそれに変わるものが出現しない。 たとえ革新的なプログラミング技術を身に着けていても、金融の知識が無ければ金融界ではただのゴミ。 金融のしくみやノウハウに精通している人間がCOBOLとVB6しか使えないからこうなっている訳だが 逆に言えば、COBOLやVB6がプロフェッショナルなプログラマーでなくても理解できる平易なプログラム仕様であったといえる。 その意味で、Excel VBAはMicrosoft社の最高傑作と言えよう。
GCではなく参照カウント式のCOMネイティブなC#とかあったら移行するんだが
>>966 VB6のCOMはアパートメントモデルだから
並列処理のパフォーマンスが苦しくなるんだよね。
VB6でWindowsDNAは正直地雷だった。
>>968 それを仮想化を使ってフリースレッドモデルに偽装して逃げる技が流行している。
ある仮想化プロセス内のグローバルデータは他の仮想化プロセスと時間軸上で完全に独立している。
従ってクリティカルセクションもシリアライゼーションも必要ないが、もちろん呼び出し側で区別する必要はある。
>>969 それって単純に分散では?
あくまでCOMは一つって前提で・・・
971 :
デフォルトの名無しさん :2014/01/30(木) 13:46:25.15
>>968 今日の昼飯、築地の寿司大で40分並んで待たされた俺には身に染みてよくわかるw
972 :
デフォルトの名無しさん :2014/01/30(木) 23:08:56.93
【各スレ共通ム板NG推奨リスト】 hoge チョーセン人 片山 QZ uy
973 :
デフォルトの名無しさん :2014/01/31(金) 12:19:20.04
コードの検索でプロジェクトを指定すると全部から検索するのが厄介 自作ライブラリが10ファイル以上読み込んであって、それは除外したいのに
VB6のコンパイラってVisual Studio 6.0しか無いのかな? .NETに移植する案件に回されたからもとの動作を把握したいのだけど 自宅に環境を作れないよ
自宅に持ち帰るとか今時ありえるのか
うちの会社は研修は自費だし課題解決に自習時間使うのも推奨されてる 流石にデータ持ち出しとかは出来ないからテストまでは出来ないけど自宅でプロトタイプ作って会社で試すくらいは日常だね
練習くらいならVBAでいいんじゃないの
vb6のランタイムを解析してvb6のソースコードから動くコードをコンパイルすればいい
>>974 動作確認したいだけならIDEはいらないでしょ。
(あった方がいいけど)
ランタイム突っ込んだら7でも動作はするし、
だめならXP探してくればどうか。
>>979 移植案件だから、関数単位とかで動きを見たいんじゃね?
もっと細かいレベルで挙動を知りたい 仕様書がないから実際に書くしかない
VB6の範囲だけで細かいレベルの動きに疑問なんてあるか? ソースはもちろんあるんだよな
ほ
た
て
>>974 メディア借りるかオークションとかでGETすれば?
MSはVSのサポートは打ち切ったから入れるのは自由だよ
但し何かあっても各自の自己責任だし質問されても答えないよってスタンス
Win7ならまあなんとか動かせるしね
因みに関連する他社ソフトやCOMなんかもちょいと設定すればちゃんと動く事は確認している。
が、責任は取れないので、質問されても「動作保証外なので移行して下さい」としか言っちゃいけないルール。
あとは金とネームバリューの力があれば・・・
以前自分が行った所は、MS技術者の人を呼び寄せて直接この辺りを聞いてた
流石大企業はやる事が違うぜぇーと思った
でもまあ古いのは確かだから、やっぱ可能であれば移行したいよね。
俺らも仕事にありつけるし
>>982 言語知ってたらその言語で作られたソフトの動きがすぐにわかるって?
スゲーな、いまどき中学生でもそんな発言ないわ〜 (w
>>986 > MSはVSのサポートは打ち切ったから入れるのは自由だよ
いつの間にフリーになったんだよ。
自分に都合のいい解釈してんじゃねーよ (w
今正規に入手しようと思ったらMSDNサブスクリプションになっちゃうの?
そうです
あ
もちろん
う
仕事なんだから自分の金じゃね〜し高いの安いの何てどうでもいいんじゃね? つか、Professionalでも新規で30万ちょいだし、Premiumでも70万ちょいだし 安いもんだよ(複数年契約)
.NETトランスレータ(不完全) コンパイラ(開発環境)とランタイム 製品としてあるならどっちが欲しい?
>>995 C++とC#だけのパッケージにしてお安くしたVSなら欲しい。
うめ
998 :
デフォルトの名無しさん :2014/02/04(火) 06:42:26.66
しゃけ
ぬるぽ
1000 :
デフォルトの名無しさん :2014/02/04(火) 09:54:18.66
がんばれVB6
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。