トップページ⇒tech
1001コメント354KB

VBプログラマ質問スレ(Ver.6.0 まで) part64

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2014/02/22(土) 20:50:42.17
ここは Visual Basic 〜6.0 の質問スレです。
質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。

VB.NETは別物なので専門スレで、VBA、APIの質問もそれぞれのスレで。

○ 質問者の心得
 一.質問する前にMSDNやGoogle、過去ログにも目を通してみる。
 二.VBScript、インストーラーなどはこのスレでOK。
 三.質問は第三者にもわかりやすいよう簡潔かつ具体的に。
 四.荒らしは相手しない。

○ 回答者の心得
 一.答えられない質問は無駄に罵倒せずスルー。無理するな。
 二.代用法を強制しない。
 三.回答する上で必須ではない情報をむやみに聞き返さない。
 四.荒らしは相手しない。
 五.VB情報募集中。
 六.回答は質問者が理解できるよう具体的に。

MSDN Online Japan ホーム
 http://www.microsoft.com/japan/msdn/default.asp
Visual Studio 6.0 Service Pack 6
 http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx
Google
 http://www.google.co.jp/

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

※「まず自分で調べる」クセを身につけよう。
0002デフォルトの名無しさん2014/02/22(土) 21:08:49.50
遅い!
0003デフォルトの名無しさん2014/02/23(日) 05:32:58.07
>>1
おつ
0004デフォルトの名無しさん2014/02/23(日) 09:51:32.19
(Ver.6.0 まで)の意味とは
0005デフォルトの名無しさん2014/02/23(日) 15:14:32.42
何でもいいから質問しなよ
0006デフォルトの名無しさん2014/02/23(日) 15:32:26.50
動物にたとえると、何ですか?
0007デフォルトの名無しさん2014/02/23(日) 15:42:12.16
そうですね、越前くらげでしょうか
0008デフォルトの名無しさん2014/02/23(日) 16:22:46.02
わかりやすいw
0009デフォルトの名無しさん2014/02/23(日) 17:46:11.36
求人はありますか?
自宅勤務希望です
0010デフォルトの名無しさん2014/02/24(月) 16:06:39.03
最近VB6使ってないのに、どうしてもこのスレを探してしまう。
0011デフォルトの名無しさん2014/02/25(火) 16:05:29.36
Text1 = "小泉純一郎は北朝鮮人"
とするのだけどChangeイベントプロシージャは実行させたくないという場合があるよね
このスレが無いときにVBAスレで聞いたら

Text1.Enabled = False
Text1 = "小泉純一郎は北朝鮮人"
Text1.Enabled = True

として、Changeイベントプロシージャ先頭でEnabled=Falseなら抜けたらいい
と聞いて、グローバル変数を用意するより賢いなと思ったんだけど
これが普通?
0012デフォルトの名無しさん2014/02/25(火) 16:07:57.42
小泉純一郎は日本人だと思うのが普通
0013デフォルトの名無しさん2014/02/25(火) 16:43:04.55
>>11
たぶん大丈夫なんだろうけど、Text1にフォーカスがあった場合は
Enabled=Falseでちがうとこにフォーカスが移動してしまうぐらいかな。
0014デフォルトの名無しさん2014/02/25(火) 18:59:20.87
>>12
完璧に騙されてるね

>>13
なるほど、注意します
0015デフォルトの名無しさん2014/02/25(火) 22:16:18.62
>>1 謝謝(国産ですけど)
0016デフォルトの名無しさん2014/02/26(水) 02:52:35.74
>>11
なるほどそうゆうやり方もありかとは思った。
が、自分の場合オプションボタンやコンボボックスをまとめて初期設定する
こともあるので共通グローバル変数で制御しています。
0017デフォルトの名無しさん2014/02/26(水) 07:04:16.93
フォームの初期設定中ならMe.Visible=FalseでChangeイベントから抜けるんじゃだめ?
0018デフォルトの名無しさん2014/02/26(水) 07:46:15.70
>>17
16です。
それもいいと思います。
機会があったら使わせていただくかもしれません。
(さすがに新規はないか??)

でもこういうケースって最初のやり方をずっと継続してしまいますよねー。
で、11のように出してもらうと「おっ!」と思ったりする。

とっくにサポートが切れた言語ですけどいろいろあって面白いとゆうか..

マイナーな話題に付き合っていただいてありがとうございます。
0019デフォルトの名無しさん2014/02/26(水) 09:27:46.11
起動時の、前回設定をINIファイルから読み込んで復元してる最中とかに必要になるよね
そういうケースだと、いちいちコントロール毎に設定するのは煩雑だわな
0020デフォルトの名無しさん2014/02/26(水) 10:34:25.78
「Enabled=Falseのときはイベントが発生しない」仕様になっていると
すっきりするかも。
0021デフォルトの名無しさん2014/02/28(金) 12:26:44.42
手入力したときしかChangeイベントが発生しないユーザーコントロールを自分でつくってしまえ。
0022デフォルトの名無しさん2014/03/03(月) 21:26:23.92
アメリカが最も恐れる状況とは、日本が中国やロシアと組むこと
日米関係に関して、日本国民が批判的にならないように細工する必要がある
そのためには日本とその周辺国を適度に争わせるのが効果的だ
アメリカは朝日新聞などメディアを介して日中韓が争うように仕向けている
0023デフォルトの名無しさん2014/03/03(月) 21:31:14.40
ネトウヨきもっ、まで読んだ。
0024デフォルトの名無しさん2014/03/04(火) 17:13:38.14
VB6.0のUserControl内のtextboxにフォーカスが当たってる状態でEnter押下されたらダイアログを出したいんです。
しかし、keydownでは、Enterを拾ってくれず、途方に暮れています。
他のキーは拾ってくれるのですが…

何かご存知でしたら、教えて下さい。よろしくお願いします。
0025デフォルトの名無しさん2014/03/04(火) 20:53:21.57
keydownは?
0026デフォルトの名無しさん2014/03/04(火) 21:02:50.51
>>24
KeyPress が呼ばれると同時に KeyAscii に 13 がかえってくるからそれで判定すれ。
0027デフォルトの名無しさん2014/03/04(火) 21:05:07.80
って、UserControl内?
0028242014/03/04(火) 22:02:00.05
>>27
はい。UserControl内。
でも解決したっぽいです。

担当者いわく「親クラスのイベントにしたら動いた〜!」と言ってます。
多分、自己解決です。ありがとうございました。
0029デフォルトの名無しさん2014/03/06(木) 04:29:56.21
まず東京の郊外に爆弾を落とす
日本人は怖くて逃げ惑った
東京中心部に集まるように爆弾を落とす
集まったところで今度は焼夷弾を落とす
日本の家は木と紙でできてるから良く燃える
東京の人は虫けらのように焼かれて死んだ
明らかに工場ではなく民間人を対象にしたゲームのような作戦
この作戦を指揮した毛唐に勲章を与えたのが日本人に成りすました小泉という北朝鮮人だった
今の自称江戸っ子の多くが朝鮮人
浅草のお寺の息子というあの作家も朝鮮人
0030デフォルトの名無しさん2014/03/10(月) 18:00:08.58
考えてみればVB6はWindowsでずっと動作するな
VB6が動かないから新しいWindowsは買えないという事態は避けたいものな
0031デフォルトの名無しさん2014/03/11(火) 18:42:37.47
>>30
VB6のチャートOCXはXPでセキュリティの更新すると使用できなくなる。
もちろん、XP以降のWindowsでも動作しない。
だから、自作したVBアプリが動作しなくなるので今でもXP使ってます。
0032デフォルトの名無しさん2014/03/18(火) 00:17:46.46ID:KhBumkcV
>>30
FusionCharts, Codejock, Steema, ニュートンとか使えばいいのに
0033デフォルトの名無しさん2014/03/22(土) 00:38:49.61ID:t9yTMNWG
タイマーの定周期でヤフオクをチェックしてるのだけど
いつのまにか終了して消えてる
ずっと動いてることもあるし不安定
どこで落ちるのかとログを吐くようにしたら
タイマーイベントの処理は完了してる
つまり何も動いてないときに、ひっそりと終了してる
ほとんど同じ作りのYoutubeをチェックするプログラムはずっと動いてるし
こういうのは分からんね
0034デフォルトの名無しさん2014/03/22(土) 15:00:25.12ID:fFDa1fn3
エラーで異常終了なのか終了イベントが発生しているかだな
0035デフォルトの名無しさん2014/03/24(月) 12:37:04.15ID:CeLkTsX6
IDEから起動してブレークポイント張っとけば?
0036デフォルトの名無しさん2014/03/24(月) 15:59:47.90ID:iplcONyk
どこで落ちるかわかってないのにどこにブレークポイント張るんだよw
0037デフォルトの名無しさん2014/03/24(月) 18:20:43.49ID:Ivezh9jR
>>33
タイマーイベントの入り口と出口でログ出力してる?
0038デフォルトの名無しさん2014/03/25(火) 12:17:27.96ID:5oElpnR8
Form_Closeとか通らないのであれば
怪しいコンポーネントとかAPIじゃないの?
0039デフォルトの名無しさん2014/03/25(火) 17:41:52.06ID:KEv/8L/6
Win95の頃から使ってたソフトがXPになったらふわっと消えるように落ちるってのが起こるのならあったな
数字が大きすぎて落ちてんのかなーとかなんとなく場所の見当は付くけど面倒だからそのまんまだ
0040デフォルトの名無しさん2014/03/29(土) 19:05:08.32ID:9/GPLcxb
>>37
うn
電源入れっぱなしのPCなんだけど
>>33からもう1週間動き続けてるし取り敢えずOKす
0041デフォルトの名無しさん2014/04/03(木) 11:34:00.74ID:yRRLaFRa
Win8でVB6からF5でデバッグ実行させたら SendKeysで
エラー70が出るんだけど回避方法ありますか?
コンパイルしたEXEでは出ないのですが、SendKeysが
結構多用されててデバッグがままならないです。
0042412014/04/03(木) 11:39:11.89ID:yRRLaFRa
因みに、Win7でも出てましたが、ユーザーアカウントの制御設定でレバーを
一番下に下げて通知しないにすれば回避できた記憶があります。
Win8でも同じ設定にしていますがダメです。
0043デフォルトの名無しさん2014/04/03(木) 12:12:22.04ID:BS8L98jM
昔オレも同じことやったけどもう忘れたな。
とりあえずぐぐってみたらどうだ。
試したことないが、いくらでも出てくるだろ。
0044412014/04/03(木) 13:26:34.89ID:yRRLaFRa
返信どうもです。
当然ここに書き込む前にググってはみたんですが、なかなか
いい記事が見つからなくて・・・
自分、探し方が下手なんです。
0045デフォルトの名無しさん2014/04/03(木) 13:55:09.03ID:AmUogy5S
vb2012で作ったアプリが他のPCで動きません。
フォームが表示されません。

リリースビルドするときに必要な手続きとかありましたっけ?
0046デフォルトの名無しさん2014/04/04(金) 11:54:01.13ID:nM83ZP3Z
>>44
ttp://tunemicky.blogspot.jp/2012/08/windows7-vb6-vba-sendkeys-70.html
これとかどうなん?
msvbvm60.dllをOS付属のものに戻せば良いらしいよ。

vb6で作ったプログラムを他のpcで使おうとすると
OS付属のmsvbvm60.dllでは意味不明なエラーが多くて
結局vectorとかでランタイム落としてくることになるんだが・・・。

>>45
ttp://toro.2ch.net/test/read.cgi/tech/1391334405/
こちらへどうぞ。
0047デフォルトの名無しさん2014/04/04(金) 14:55:47.84ID:GVyymcd4
可変配列をEraseした直後の状態を調べる方法か
配列要素数0にする方法ありますか?

デバッグ実行で Erase 直後にウォッチで見たら
Nothingになっていたので
If文で Is Nothing でチェックしようとしたらエラーになります。

ReDim Results(0) では要素数は1になるし・・・・

ようは、配列単体だけで現在の要素数を0個も含めて取得したいのです。
(配列とは別に配列の要素数を覚えておく変数とセットで管理したくない)

いい方法ないでしょうか?
0048デフォルトの名無しさん2014/04/04(金) 17:03:45.68ID:nM83ZP3Z
Variantに突っ込んでない可変長配列が
Nothingになることはないだろう。
配列はオブジェクトではないからNothingとも比較できない。

配列の要素数はUBound(Result) - LBound(Result) + 1
で取得できる。

Eraseした配列をuboundに入れればエラーになるから
エラーが発生すれば要素数0ということになる。
0049デフォルトの名無しさん2014/04/04(金) 19:35:20.51ID:GVyymcd4
やっぱErrorキャッチせんとダメかぁ・・・
あとはAPI使って、判定ぐらいかなぁ

出来れば例外発生させずにAPIも使わずに、VB6の機能
だけでやりたかったんだけど難しそうだね。

返事どうもっす。
0050デフォルトの名無しさん2014/04/05(土) 00:22:30.89ID:iBtP3adk
>>47
残念ながらない
フラグか要素数を別に持って管理するか、エラートラップして判別するしかない
俺はフラグでやることが多い
0051デフォルトの名無しさん2014/04/05(土) 01:17:34.65ID:0CTN7KbR
今更だがVBってうんこだな本当
0052デフォルトの名無しさん2014/04/05(土) 07:39:51.91ID:Gxm31Mf6
Collectionつかっとけ
0053デフォルトの名無しさん2014/04/05(土) 10:51:43.75ID:yq+Xb2eV
>>51
そりゃあ、10年前に捨てられた言語だからな。腐敗臭、放ってるよ。

ところで、VB7はまだ?
0054デフォルトの名無しさん2014/04/05(土) 11:50:08.70ID:Y7OVjorE
【祝報】次世代C$/VBコンパイラがオープンソースに。最近のMSはユーザーの声をよく聞いている(笑)
http://nozomi.2ch.net/test/read.cgi/pcnews/1396665324/
0055デフォルトの名無しさん2014/04/10(木) 12:15:51.18ID:HRaWKIoy
XPサポート終わったとか言ってるけど
俺らには関係ないよな
0056デフォルトの名無しさん2014/04/10(木) 12:23:24.21ID:qWgB/nmw
そもそも2000が現役だしw
0057デフォルトの名無しさん2014/04/10(木) 17:40:35.66ID:QXBeVdCp
完全互換のvb6.1で
新osはもちろん64bit版もありとかなら
20万出すよ
0058デフォルトの名無しさん2014/04/10(木) 21:17:26.88ID:0VE57ZaG
>>57
完全互換で 64bit 対応とか、アホすぎる。
Integer が 16bit なんだぜ (w
0059デフォルトの名無しさん2014/04/11(金) 08:19:56.13ID:OGXe5fI+
64ビットなんかよりも
.netなみに充実したmsvbvm61.dll
0060デフォルトの名無しさん2014/04/11(金) 12:46:21.84ID:jMd5RFnz
それもう .net使えばええやん!
0061デフォルトの名無しさん2014/04/15(火) 12:27:27.44ID:Mhge0Lhx
COMというところに意味があるのさ
0062デフォルトの名無しさん2014/05/01(木) 15:48:49.01ID:q+xe60/p
1964年(昭和39年)5月1日は、プログラミング 言語のひとつであるBASICが
世界で初めて命令の実行に成功した日であり、BASICは誕生 から50年という
記念すべき日を迎えました。
0063デフォルトの名無しさん2014/05/07(水) 20:08:23.11ID:FbKWdn3j
VB6.0を世界遺産へ登録する活動が活発
ttp://www.slashdot.org/story/14/05/07/0218341/visual-basic6-registeration-activity-to-world-heritage
0064デフォルトの名無しさん2014/05/08(木) 12:53:12.29ID:rolcPd33
?????
どういう事だってばよ
0065デフォルトの名無しさん2014/05/09(金) 23:44:13.36ID:7dZsjX9Z
リンク無いし、つまらないネタ披露だったのでは?
0066デフォルトの名無しさん2014/05/10(土) 13:43:52.07ID:m/AO6ufT
数年前にも似たようなタイミングのズレたエイプリルフールネタを貼って
自作自演で盛り上がってた馬鹿がいたな。

あれは何だったっけ。
MSがVB6を復活させるとかだったかな。
0067デフォルトの名無しさん2014/05/12(月) 17:59:32.73ID:jf5K+NL8
ピクチャボックス1のイメージをピクチャボックス2にドラッグ&ドロップ

�@ドラッグスタート処理(Picture1_OLEStartDrag)
 Data.SetData Picture1.Image, vbCFDIB ・・・送出するイメージをセット

�Aドロップ処理(Picture2_OLEDragDrop)
 If Data.GetFormat(vbCFDIB) Then 
   Picture2.Picture = Data.GetData(vbCFDIB) ・・・受けたイメージを表示
 End if

送出する Picture1.Imageの代わりに、イメージコントロール(Image1.Picture)から送ることはできないのですか?
0068デフォルトの名無しさん2014/05/12(月) 18:47:48.42ID:jf5K+NL8
データをセットする時点でエラーになるからダメぽい
Data.SetData Image1.Picture
0069デフォルトの名無しさん2014/05/12(月) 19:37:20.33ID:gXhYZUV/
>>68
Image1のPictureに何も登録されてなければ、そこでエラーになるみたいですね
0070デフォルトの名無しさん2014/05/12(月) 20:06:07.24ID:jf5K+NL8
>>69
解決しました、ありがとうございました

Picture1だけにJPGを読み込んであって、
Image1には、実行時に
Image1.Picture = Picture1.Picture で表示させていましたが
これだとData.SetData で形式が違うというエラーになり

Image1.Picture = Picture1.Image
に変更したらいけました
0071デフォルトの名無しさん2014/05/12(月) 23:02:23.64ID:jf5K+NL8
そもそも自分を送るなら�@のコードは不要だった
0072デフォルトの名無しさん2014/05/16(金) 10:32:41.98ID:D3ozXe84
Web上の画像をドラッグ&ドロップすると
その画像がJPGであるならJPGのファイル構造そのままのバイナリが
リンクのための画像であるなら、リンク先のアドレスがテキストとしてドロップされる

JPGのバイナリがドロップされる場合、
Data.GetData(vbCFDIB) には、そのバイナリデータが格納されているはず
実際は、ヘルプによるとバリアント型ということで
バリアント型に代入してみてVarTypeで調べるとLong型
バイナリデータを指し示すハンドルではないかと思われます
このドロップデータをなんとかバイト配列で受けれないでしょうか?
PictueBoxにロードしてBMPやJPGで保存し直すでのはなく、そのままのバイナリが欲しい
APIを探してますが、VBだけでできる方法をご存知の方・・
0073デフォルトの名無しさん2014/05/16(金) 10:40:03.38ID:rRN/Z/gP
バイナリ… 鯖なりフォルダにある[ xxxx.jpg ]とかのファイルを直接バイナリエディタで開いたような、そんな情報がほしいと…
0074デフォルトの名無しさん2014/05/16(金) 17:08:34.76ID:724paaYo
いえ、そんな難しい話じゃなくて
単にネット上の画像をそのまま保存したいだけなんです
ポップアップメニューから「名前を付けて保存」ができないサイトでも
そうするとドラッグ&ドロップで保存できるんです

一旦、ピクチャボックスで受けて、JPG保存する方法があるんですが
低圧縮であまり劣化しないようにしても気分悪いなーという話でして
0075デフォルトの名無しさん2014/05/16(金) 22:35:31.64ID:aHDMTE2w
>>74
VBプログラマーってバカしかいないんだな。
0076デフォルトの名無しさん2014/05/17(土) 08:52:14.59ID:ErlAw5/l
VBプログラマーをバカにするやつは、その99.9999999%が使えない人材。


ttp://i-break.net/article/68901897.html

ここを参照。

Picture.PictureにData.GetData(vbCFDIB)が突っ込めるということは、
Property Picture As IPictureDisp
VB.PictureBox のメンバ

なので、SavePictureJpgにそのままつっこめる。
0077デフォルトの名無しさん2014/05/17(土) 20:17:06.60ID:wiA8Rul4
説明が悪くてゴメンナサイ
クローズします
0078デフォルトの名無しさん2014/05/18(日) 11:30:05.48ID:8sUjGOQw
初歩的な質問で申し訳ございません
ここにあるスクリーンキーボードを枠なし+マウスで移動可能にするにはどうすればいいですか?
http://homepage1.nifty.com/yasunari/VB/VB2005/ScreenKeyBoardMaking.htm
0079デフォルトの名無しさん2014/05/18(日) 11:57:18.03ID:J4nIq/1H
>>78
そのURLのサンプル、VB.NET2005みたいだけど、書き込むスレ間違ってない?
ここはVB6.0までだよ。
0080デフォルトの名無しさん2014/05/18(日) 12:01:20.67ID:8sUjGOQw
>>79
あちゃ・・・すみません。スレチでした
0081デフォルトの名無しさん2014/05/25(日) 20:45:02.54ID:EwER0mMK
vb5cce
ttps://sites.google.com/site/vbclassicforever/visual-basic-5-0-control-creation-edition
0082デフォルトの名無しさん2014/05/25(日) 20:46:38.73ID:UOeAOsx2
↑ ウイルスの可能性が高いです。ダウンロードしないように。
0083デフォルトの名無しさん2014/05/25(日) 20:47:43.74ID:UOeAOsx2
↑ ウイルスの可能性が高いです。ダウンロードしないように。
0084デフォルトの名無しさん2014/05/27(火) 12:11:26.90ID:D6t3bmO9
ウィルスの可能性が高い>>82に
>>81がウィルスの可能性が高いっていわれてもなぁ
0085デフォルトの名無しさん2014/05/27(火) 14:38:05.77ID:h6DOL/64
出所不詳なVB5CCE使おうって思う奴いるのかよw
0086デフォルトの名無しさん2014/05/27(火) 18:59:07.75ID:3RvxFnTZ
出所はマイクロソフトだろ。
0087デフォルトの名無しさん2014/05/27(火) 19:02:43.07ID:GvncSSLq
そういうことをいってるんじゃないと激しくおもうが
0088デフォルトの名無しさん2014/05/27(火) 19:06:44.20ID:6UmWmLr/
ftp://ftp.microsoft.com/softlib/MSLFILES/

ここには無いんだね
0089デフォルトの名無しさん2014/05/29(木) 00:15:14.85ID:Kg1bZGF5
VBAで関数ポインタを利用する方法
ttp://akihitoyamashiro.com/VBA/FunctionPointer.htm
0090デフォルトの名無しさん2014/06/02(月) 16:54:01.47ID:ZFvxlDIA
Picture1.Image がHBITMAPらしいんだけど
Long型で受けたHBITMAPをPicture1.Imageへ代入すると型が違うのでエラーになります。
キャストすることもできないのですが、どうすればPicture1.ImageへHBITMAPを代入できますか?
0091デフォルトの名無しさん2014/06/02(月) 17:02:06.09ID:RquarvTq
さあ、どうやるんだろうね
俺は大抵BitBltとかでコピーしてたが
0092デフォルトの名無しさん2014/06/02(月) 17:30:10.64ID:RquarvTq
ああ、BitBltはhBitmapじゃなくてhDCか
0093デフォルトの名無しさん2014/06/02(月) 17:43:39.65ID:RquarvTq
これな
http://homepage1.nifty.com/CavalierLab/lab/win/bitmapobject.html
0094デフォルトの名無しさん2014/06/02(月) 18:41:00.91ID:f9GOzSmg
>>93
別に画像が見たいって言ってる訳じゃないんだから描画は必要ないだろ?
Declare定義でhBitmapを引数で受ける時の型をAnyに設定してそのまま代入すればよろし。
0095デフォルトの名無しさん2014/06/02(月) 19:10:56.11ID:NUj2DDjf
>>90
>どうすればPicture1.ImageへHBITMAPを代入できますか?


オブジェクトブラウザより
>Property Image As IPictureDisp
>
読み取り専用

> VB.PictureBox のメンバ

> 継続表示属性を持つグラフィックスに対応するハンドルを返します。ハンドルの値は、Microsoft Windows によって自動的に設定されます。


>
読み取り専用

>
読み取り専用

>
読み取り専用
0096デフォルトの名無しさん2014/06/02(月) 19:15:02.62ID:f9GOzSmg
>>95
すまん。実はVB6なんて骨董品、触ったこともないのでw
0097デフォルトの名無しさん2014/06/02(月) 19:17:16.33ID:NUj2DDjf
VB6のIDEあるならオブジェクトブラウザくらい見るべきなの
0098デフォルトの名無しさん2014/06/02(月) 19:26:53.85ID:Sb+HWHY0
GetDIBitsを使うと24bitカラーになってしまうが
8bitグレースケールのイメージをそのまま扱うならGetBitmapBitsからBMPファイル作成と行きたいが
GetBitmapBitsは16ビットバージョンのWindows(3.x以前)との互換用に残されたもので、使うべきでない?
やはり一旦カラーにしてから8ビットグレーを作成し直すしかないの?
新しい方が不便なんて皮肉な話だな。
0099デフォルトの名無しさん2014/06/02(月) 19:35:58.04ID:9SzfsgEp
古PC板とかでもいちいちスレにきては骨董品だオッサンだらけだと言ってくるひとがいるけど、何がしたいんだろうか?
0100デフォルトの名無しさん2014/06/02(月) 19:50:42.06ID:RquarvTq
> GetDIBitsを使うと24bitカラーになってしまうが

これどこ情報よ
0101デフォルトの名無しさん2014/06/02(月) 19:55:06.94ID:RquarvTq
#3476:フルカラーのBMPファイルを256色で保存する に関連する記事一覧 - VB初心者友の会 - Q&A掲示板
http://www.gizcollabo.jp/vbtomo/boards/vbqanda_spread_3476.html

BMP 画像の扱いかた
http://www.geocities.co.jp/SiliconValley-SanJose/9921/bitmap.htm
0102デフォルトの名無しさん2014/06/02(月) 20:45:08.36ID:Sb+HWHY0
>>100
すまん。今時Windowsの画面設定は24bitカラー以上が常識なんで、勝手に固定してしまったわw

>>101
それはいいサンプルだ。しかしやはり画面表示環境依存なのでアルゴ切り分けないといけないんだな。
俺だったら多態性を使ってもっとうまく実装するがな。
0103デフォルトの名無しさん2014/06/02(月) 21:05:23.73ID:eGnz5SXu
>>102
>画面表示環境依存

いや、依存してないってば

DIB(Device Independent Bitmap)というのはデバイス(ここでは画面の表示色)に依存しないで扱える関数なの。
画面の表示色でビットマップの色数がコロコロ変わるのはDDBだよ。
BitBlt() 関数はDDBだから画面の表示色によって描画色数がカメレオンのように変わってしまうが
同じ描画を繰り返し行うような場合はDIBより遥かに高速なので、一般的な描画処理にはDDBが使われることが多い。
0104デフォルトの名無しさん2014/06/02(月) 22:46:43.22ID:4x3NC5V1
DDBとDIBの違いって、デバイスコンテキストを使うか使わないかの違いって思っていい?
0105デフォルトの名無しさん2014/06/03(火) 09:27:50.00ID:djyKfwIh
>>104
要約するまでもないだろ?
0106デフォルトの名無しさん2014/06/03(火) 18:54:16.29ID:M9d0+DYH
聞かなきゃわからんてことはたぶん理解してない
0107デフォルトの名無しさん2014/06/09(月) 12:18:04.38ID:b2HRq1QX
VC++でCStringで引数を受ける関数があるんだけど
VB6に移植するにはどう実装したら良いですか?
0108デフォルトの名無しさん2014/06/09(月) 12:29:51.68ID:M8Wl6BC9
Convert C Strings to VB Strings
http://www.vb6.us/tutorials/convert-c-strings-vb-strings
0109デフォルトの名無しさん2014/06/09(月) 13:25:09.42ID:b2HRq1QX
>>108
うまくできました。ありがとうございました。
0110デフォルトの名無しさん2014/06/10(火) 22:39:30.78ID:p3jSqJSc
PrintFormだと非表示のFormを印刷できますが、非表示のFormの画像イメージを
取得する方法はありますか?
APIを使ってBitBltでメモリDCにコピーしてみたりしたんですが、PrintFormだとForm
上のControlが更新された状態(表示しているのと同じ)で印刷されますが、Form.Refresh
してもControlの状態がうまく反映されません。

なにか秘密のおまじないがあるのでしょうか?
0111デフォルトの名無しさん2014/06/11(水) 05:42:29.78ID:CVKSa2Re
共有フォルダーに置いたvbのソースを他人が更新したら、
vbpファイルになぜか
DebugStartupOption=0
の行が追加されてた。
Bingでこれを検索しても、日本語のサイトでは、「この行を消す」と書いてる
ページしか見つからんで、これが何を意味するのかまでは書かれていない。
これは何を意味するするものなのか。
0112デフォルトの名無しさん2014/06/17(火) 01:54:25.75ID:kkMibhml
Variantのサイズていくらなん?
ここで言うサイズてのはC言語でいうとしたらsizeofの結果ね
0113デフォルトの名無しさん2014/06/17(火) 02:06:06.96ID:pkDXqnao
LenB()
で分かるんじゃないの?
0114デフォルトの名無しさん2014/06/17(火) 02:27:19.04ID:pkDXqnao
mk:@MSITStore:C:\Program%20Files\Microsoft%20Visual%20Studio\MSDN98\98VS\1041\veendf98.chm::/HTML/defvariantdatatype.htm
>バリアント型 (Variant) は数値を格納する場合、16 バイトの格納領域を持ち、10 進型 (Decimal) の範囲までのデータを格納することができます。
>文字列を格納する場合は、22 バイトに文字列の長さを足した格納領域を持ち、任意のテキストを格納できます。
>バリアント型 (Variant) の変数に格納されている値がどのように扱われるかは、VarType 関数で調べることができます。

サイズ不定だね
0115デフォルトの名無しさん2014/06/17(火) 02:31:34.62ID:pkDXqnao
>>113はLenB()じゃなくてLen()だったね、LenB()は文字列用だた
0116デフォルトの名無しさん2014/06/17(火) 07:40:08.78ID:4TaquwTX
>>115
え゛?
0117デフォルトの名無しさん2014/06/17(火) 09:13:51.33ID:BfmubFCc
>>116
文字列用ではないけど、事実上使う場所が文字列を対象とする場合しか意味を持たないからそう書いたんだしょうな。
0118デフォルトの名無しさん2014/06/17(火) 12:08:06.83ID:Mq+QjSjc
Cでsizeof(VARIANT)したらいいだろ

オブジェクトや配列のポインタを格納していようがsizeofは不変だ
0119デフォルトの名無しさん2014/06/17(火) 14:26:01.52ID:l2MahTzn
>>117
バイナリデータを文字列型で扱ったことないのか?
0120デフォルトの名無しさん2014/06/17(火) 17:07:06.79ID:Ri7Rs8Aq
>>119
バイナリデータでも文字列なんだろ?自分で言ってるじゃん
文字列型(String)なんて誰も言ってないだろうに
あわてんびな初心者乙
0121デフォルトの名無しさん2014/06/17(火) 18:39:29.84ID:l2MahTzn
>>120
じゃあLenBの使いどころ説明してみ
あ、バイナリデータの意味が理解できないか、データと型の区別もつかない初心者さんですか
0122デフォルトの名無しさん2014/06/17(火) 19:14:17.20ID:Ri7Rs8Aq
あーあ、ふぁびょっちゃって変なこと言い出しましたよ?これ以上あいてしないほうがいいかも
0123デフォルトの名無しさん2014/06/18(水) 08:17:06.61ID:KLzf4/QQ
sizeofだって言ってるのに、バイナリデータだとかLenBだとか、
質問者不在で盛り上がりすぎだ。
0124デフォルトの名無しさん2014/06/18(水) 09:17:43.94ID:Z4UW0q9W
LenB君、まだいる?
0125デフォルトの名無しさん2014/06/18(水) 20:48:52.28ID:IPfuBIEm
>>124
こうやってすぐにレッテル張りに走るやついるよな
0126デフォルトの名無しさん2014/06/18(水) 21:47:15.75ID:bqqlXo6l
「レッテル貼り」というレッテルを貼るお前
0127デフォルトの名無しさん2014/06/18(水) 21:57:33.91ID:IPfuBIEm
>>126
レッテル貼り君乙。
0128デフォルトの名無しさん2014/06/18(水) 22:02:52.80ID:bqqlXo6l
>>127
自己紹介乙
0129デフォルトの名無しさん2014/06/18(水) 22:05:22.92ID:IPfuBIEm
>>128
やっぱそう思うよな、間違ってなかった
0130デフォルトの名無しさん2014/06/18(水) 22:06:03.22ID:bqqlXo6l
LenB君よく粘る
0131デフォルトの名無しさん2014/06/18(水) 22:06:03.72ID:cO7v6OhK
で>>125 がLenB君ということで合意していいの?
0132デフォルトの名無しさん2014/06/18(水) 22:06:44.49ID:bqqlXo6l
>>131
うわっ!同時点で俺と同じことを考えてるw
0133デフォルトの名無しさん2014/06/18(水) 22:10:57.42ID:IPfuBIEm
発言の内容に君を付けて発言者の人格を決めつけ貶める
日本人がやることじゃないな
>>124はチョン
0134デフォルトの名無しさん2014/06/18(水) 22:15:31.20ID:w5yPXs6U
レス増えてるとおもって見たらつまらぬ応酬かorz
0135デフォルトの名無しさん2014/06/18(水) 22:42:24.11ID:5dhdejjU
同じ「レッテル貼り」という言葉が含まれていても

レッテル貼りに走る  走るという行為を副詞的に限定化するものではあるが、常なる行為者として、決定・結論付けているとまではいえない。
「レッテル貼り」   常なるレッテルを貼る行為者という意味で名詞化している。 すなわち、決定・結論付けている

ゆえに、意味内容的に同等とはいえないというのが正しい評価だろう
0136デフォルトの名無しさん2014/06/18(水) 22:44:22.83ID:IPfuBIEm
>>135
ごめんだけどアスペっぽいw
0137デフォルトの名無しさん2014/06/18(水) 22:51:54.44ID:bqqlXo6l
アスぺは言い過ぎだと思うが、「レッテル貼り」でなく、「レッテル張り」って書いてしまったこと
つまり、自分に都合が悪い事は無かったことにする、卑怯者だってことは分かった

レッテル引っ張りすぎてプライドが破れちゃったかも
0138デフォルトの名無しさん2014/06/18(水) 22:52:17.96ID:5dhdejjU
>>136
喜んでいただけて、実に光栄です
0139デフォルトの名無しさん2014/06/18(水) 22:54:02.73ID:IPfuBIEm
>>137
ただの打ち間違いにこだわるかなふつう
アスペはいいすぎじゃないと思ったw
0140デフォルトの名無しさん2014/06/19(木) 09:53:42.30ID:trlrXrDN
開き直りやがった
0141デフォルトの名無しさん2014/06/20(金) 07:51:41.50ID:42Cjh3o9
アスペはどうでもいいけど、どうみても >>120 はおかしいだろ

> 文字列型(String)なんて誰も言ってないだろうに

むしろ >>119 は明言してるし

> バイナリデータを文字列型で扱ったことないのか?
0142デフォルトの名無しさん2014/06/20(金) 17:43:20.08ID:D0Z6m0Nf
>>141
だから
>バイナリデータの意味が理解できないか、データと型の区別もつかない初心者さん
なんだろ
0143デフォルトの名無しさん2014/06/20(金) 18:58:15.60ID:jUMxMxY7
もう10年以上VB6触ってないけど、バイナリデータを文字列型で扱う(文字列型の変数に入れるって意味か?)
なんてことはやった記憶ないな。
StrConvか何か使ってエンコード/デコード(Byte()と文字列感の変換)が出来たような
記憶はあるが。

分かってないのは少なくとも>>119も一緒じゃないのか。

っていうか、MSDN読んでもLenBに文字列を渡した場合、何が返ってくるのかさっぱり分からんな。
BSTRってPascal文字列みたいに先頭に自分のサイズを持ってたはずだが、そこや
Null終端を含むのか含まないのか。
0144デフォルトの名無しさん2014/06/21(土) 00:23:25.30ID:KMvjaKi+
>>142
> >バイナリデータの意味が理解できないか、データと型の区別もつかない初心者さんなんだろ

あわてんびとか言ってるやつのこと?

>>143
> もう10年以上VB6触ってないけど、バイナリデータを文字列型で扱う(文字列型の変数に入れるって意味か?)なんてことはやった記憶ないな。

バイナリファイルファイル直接読み書きするとか、通信回線経由でデータの送受信したりすると避けて通れなかったような記憶がある。

> StrConvか何か使ってエンコード/デコード(Byte()と文字列感の変換)が出来たような記憶はあるが。

StrConv( ) は、S-JIS と Unicode 間の変換。

> BSTRってPascal文字列みたいに先頭に自分のサイズを持ってたはずだが、そこや
> Null終端を含むのか含まないのか。

含まないよ。
0145デフォルトの名無しさん2014/06/21(土) 03:56:14.57ID:cHoAUDWh
>>143
>StrConvか何か使ってエンコード/デコード(Byte()と文字列感の変換)が出来たような
VB6ではバイト配列は暗黙的に文字列型に変換可能
StrConvは基本的に文字コード変換。文字列型をうけて文字列型を返す
StrConvがバイト配列から文字列にしてるわけじゃない
暗黙的に文字列型に変換されたものをStrConvでコード変換しただけだろ

で、MSDNの説明が理解できんって、それホントに旧VB用のMSDN見て言ってるのか?
BSTRやNULL文字ターミネートとか、VBには関係ない話だぞ
(API呼び出しするならまったく無関係と言うわけでもないが)

何年かぶりにVB6立ち上げてLen関数のヘルプみたら
>文字列をバイト データとして扱う場合は、LenB 関数を使用します。
と書いてあってワラタ
で、
>LenB 関数は、指定した文字列のバイト数を返します。
これだけだろ(ユーザ定義型を渡した場合のぞいて)
この場合指定した文字列はバイトデータとして扱われるってだけ
0146デフォルトの名無しさん2014/06/21(土) 04:39:10.73ID:EfmviY6O
>>114
オブジェクトを格納した場合のサイズは?
0147デフォルトの名無しさん2014/06/21(土) 13:20:21.84ID:D5Vj2iMw
>>145
馬鹿だろお前。VBerってこんなのばっかりだな本当。
頭が文字コードがANSI(Shift-JIS)しかない時代で止まってるよお前さん。

自分で文字コードを変換、なんて書いてるけど、そんな概念が意味を持つのは、
あるエンコーディングでエンコードされた文字列をバイト列にデコードして、それを
別のエンコーディングで再エンコードする時だけだから。

後半なんか話にならない。
VBの文字列型の内部構造も知らずにいまだにVB使ってるのか。
0148デフォルトの名無しさん2014/06/21(土) 13:27:56.87ID:D5Vj2iMw
なんか変なこと書いたから訂正w

バイト列をあるエンコーディングでエンコードして、それを別のエンコーディングで
デコードする場合、が正解。
0149デフォルトの名無しさん2014/06/21(土) 13:43:10.23ID:5NxEdf68
>>147
お前何一人で、関係ない話してるの?
0150デフォルトの名無しさん2014/06/21(土) 13:58:38.21ID:6UXHBZAi
>>148
> バイト列をあるエンコーディングでエンコードして、それを別のエンコーディングで
> デコードする場合、が正解。

バカはお前だ
S-JIS で書いてあるファイルをバイナリで読んで VB で色々加工するなら変換するのが一番楽だろ
0151デフォルトの名無しさん2014/06/21(土) 14:07:41.44ID:olAW34R3
>>143
VBの文字列というかBSTRはCの文字列と互換性があるように作られてる。
VBの文字列をWindows API(C言語ライブラリとも言える)に渡せるのはそのため

VBの文字列のアドレスはStrPtrで取得できるが、文字列のサイズ情報は
StrPtrで取得したポインタよりも "前" に記録されている。

さらにVBの文字列が終わった "後" のメモリ領域に2バイトの0x00が格納されている。
これはVB6の内部文字コードであるUNICODE(UTF16)のNULL文字

VBは文字列の中にNULL文字などを含められる(その為にサイズ情報が存在する)が
APIとの互換性のために文字列が終わった後のメモリに余分にNULL文字が記録されてる。

LenBは文字列のサイズ情報を返すだけ。(C言語のように実際にNULL文字が
見つかるまで数えているわけじゃないから速度が早い)

文字列のサイズ情報も、API互換性のための0x00 0x00も
文字列そのもの自体のメモリ領域よりも、外側に存在する。


参考
http://bytecomb.com/vba-internals-string-variables-and-pointers-in-depth/
0152デフォルトの名無しさん2014/06/21(土) 18:09:05.93ID:EfmviY6O
最初の質問主はバリアント型の質問だったのにスレで盛り上がるは文字列型
0153デフォルトの名無しさん2014/06/21(土) 19:55:17.61ID:cHoAUDWh
>>147
おまえ、VB6の内部文字コード何だと思ってるんだ?
文字コードが1種類しかないならなんで文字コード変換とか言う話になるんだよ
自分で文字コードを変換しないならStrConvとか要らないだろうが

文字コードがANSI(Shift-JIS)しかない時代で止まってるか
すべてUNICODEで統一された別世界の人ですか
0154デフォルトの名無しさん2014/06/22(日) 02:10:44.30ID:Y+HF0vpz
VB6やWindowsそのものがShift-JISだと思っている人がいるが、
それはUnicode対応でないアプリの話であり、
それはコントロールパネルの設定から変更できる。

日本語版以外のWindowsがShift-JISなわけがないじゃないw

VB6やWindowsそのものはずっと昔からUnicode対応だよ。
0155デフォルトの名無しさん2014/06/22(日) 07:49:14.67ID:RW5621qn
VB6は内部処理はUNICODEかもしれないけど、システムとのやりとりをローカルの
ロケールや各国語専用のDLLがやってたりするんで、内部処理がUNICODEなのに
国際化対応が非常にやっかいだね。というかアプリケーションレベルではヤりたく
ないほど煩雑だ。
0156デフォルトの名無しさん2014/06/27(金) 06:52:10.03ID:xqenH9Sh
ウインドウ上部にある「ファイル(F)」とかのメニューコントロールについてですが
例えば「ファイル」メニューをクリックして
そのクリックイベントで子メニューの配列を増やす(LOAD)することはできないのでしたっけ?

エラー361が出て、ヘルプでは親メニューのクリックイベントで子メニューをアンロードしようとしたろと書いてありますが
アンロードでなくロードしようとしたのにエラーになります

そのロードするコードは、仮にボタンを作って、そこから実行すると問題なく実行されて子メニューが追加されています
0157デフォルトの名無しさん2014/06/27(金) 07:12:51.08ID:xqenH9Sh
Form_Loadで子メニューを30個ロードしておいて
親メニューのクリックイベントで子メニューのVisibleを設定することで
動的に増減させようとしたらVisibleすら設定できないのですね
ありがとうございました
0158デフォルトの名無しさん2014/06/27(金) 08:19:47.31ID:FFmBu7V9
親親メニューで表示するとうまく行った覚えがある
0159デフォルトの名無しさん2014/06/29(日) 00:20:35.54ID:bwCa7Je8
VB6はWindows7ではまともに動かないだろう。
どうしてるんだ?
0160デフォルトの名無しさん2014/06/29(日) 05:04:47.36ID:r3ERVTwD
>>159
古いOSで動かせばいいだけだろ
サポートが切れたからと言って、古いOSが動かなくなるわけではないんだが
0161デフォルトの名無しさん2014/06/29(日) 08:52:43.83ID:KFRMJvcV
>>159
Win7で動かす時には、ちゃんとおまじないがMSから公開されているよ。
0162デフォルトの名無しさん2014/06/29(日) 11:01:04.26ID:xhS0WnDJ
>>161
そのおまじないを探してみたが、これか?
http://msdn.microsoft.com/ja-jp/vstudio/ms788708/
0163デフォルトの名無しさん2014/06/29(日) 22:10:47.34ID:Wr4c52dB
ユーザ定義型の先頭アドレスから各メンバのアドレスへのオフセットを知りたいのですが何か解決案は有りますか?
0164デフォルトの名無しさん2014/07/01(火) 12:11:51.01ID:pNYjplQC
Lenで1つ1つ調べればいいだろ
0165デフォルトの名無しさん2014/07/01(火) 12:17:44.92ID:t5KNleFu
ユーザ定義型って定義順にメモリに格納されるなんて保証あったんだっけ?
VBA._HiddenModule のメンバのObjPtrやStrPtrやVarPtrを使うとかどうよ
0166デフォルトの名無しさん2014/07/01(火) 12:22:33.21ID:2NEwuYNn
VBに備わるMacScript()ってのが気になる
AppleScriptを実行できるってこれなんだ
0167デフォルトの名無しさん2014/07/01(火) 12:36:58.30ID:pNYjplQC
C#のクラスは都合の良い順に並べ替えられるらしいけど
VB6ではないだろ
0168デフォルトの名無しさん2014/07/01(火) 12:55:06.39ID:t5KNleFu
> ユーザ定義型って定義順にメモリに格納されるなんて保証あったんだっけ?

そういや外部APIに渡せるんだから順序は定義順だな
0169デフォルトの名無しさん2014/07/09(水) 17:17:13.65ID:v0gMM/jR
vb2010はここで大丈夫でしょうか?
0170デフォルトの名無しさん2014/07/09(水) 17:22:28.44ID:eXWNbxbH
>>169
VB.NET質問スレ(Part41)
http://peace.2ch.net/test/read.cgi/tech/1391334405/
0171デフォルトの名無しさん2014/07/09(水) 19:18:07.36ID:v0gMM/jR
>>170
すいません
0172デフォルトの名無しさん2014/07/18(金) 13:00:24.96ID:CVQo24HF
イミディエイト窓の横にウォッチ窓を並べたいんだけど
どうやればドッキングできますか?
縦にはドッキングできるんだけど、頑張ってるけど左右にできない・・・
0173デフォルトの名無しさん2014/07/18(金) 13:19:11.05ID:y3wAERO+
どうやって縦にドッキングしたの?ドッキングしたら自動的に横に並ぶと思ってたよ…
0174デフォルトの名無しさん2014/07/18(金) 13:35:16.12ID:zTacBNcy
http://iup.2ch-library.com/i/i1242254-1405658008.png
http://iup.2ch-library.com/i/i1242253-1405657986.png

http://iup.2ch-library.com/i/i1242250-1405657841.png
http://iup.2ch-library.com/i/i1242249-1405657821.png
http://iup.2ch-library.com/i/i1242248-1405657791.png
http://iup.2ch-library.com/i/i1242247-1405657758.png


ウインド掴んで移動させて、細い線になったときがドッキング位置
縦長か横長かで、縦横どっちにドッキングするかがわかる
0175デフォルトの名無しさん2014/07/18(金) 18:50:28.47ID:CVQo24HF
>>174
ありがとうございます。
自分の説明が足りなかったですね。

4枚目のように右にプロジェクトとプロパティが縦に並んで
左の下に左右にイミディエイトとウォッチを配置したいのです。

http://iup.2ch-library.com/i/i1242467-1405676934.jpg

こんな感じです。
これはイミディエイトとウォッチをフローティングの状態に
していますが、これをドッキングさせたいのです。

VB6では無理なんですかね?
0176デフォルトの名無しさん2014/07/18(金) 18:57:29.62ID:zTacBNcy
http://iup.2ch-library.com/i/i1242471-1405677391.png

こういうことだよね?
まず横に2つくっつけてから、枠の下にくっつければいい。
0177デフォルトの名無しさん2014/07/18(金) 18:59:09.21ID:CVQo24HF
>>176

うおおおお!!これです!これ!!!
ありがとうございます。
頑張ってやってみます。
0178デフォルトの名無しさん2014/07/18(金) 18:59:37.74ID:9k7dPjl+
っていうかまだVB6使う気かよ
0179デフォルトの名無しさん2014/07/18(金) 19:16:52.56ID:9lilrWED
負の遺産
0180デフォルトの名無しさん2014/07/18(金) 19:58:59.92ID:R345FHix
>>176
これ特別なの?普段ウォッチ開くと必ずこうなるんだが?
0181デフォルトの名無しさん2014/07/18(金) 20:06:07.32ID:9lilrWED
一度ドッキング解除してウィンドウとして分離させちゃうと
後でドッキングしても元のドッキングの順番に戻らないことがまれにあるよ
0182デフォルトの名無しさん2014/07/19(土) 09:34:30.44ID:klGkDvq+
>>178
マイグレーションの仕事が山ほどあるからな
VB6を知ってる中小がはいっぱぐれない
しかし廃れゆくVB6なんか覚えても労働者に未来はない
0183デフォルトの名無しさん2014/07/29(火) 22:44:38.24ID:bn2IaD23
WinXPで動いていたVB6プログラムをWin7環境に移したら動かなくなりました。
原因を調べてみると、a$ = b$ + c$ の文字列結合で、b$に日本語が入っていると、
b$ + " " + c$ のように余分な半角空白が入ってしまいます。
どなたかこれの回避方法をご存じないでしょうか?
文字列結合をすべて特定の関数で行おうかなとも考えています。
ちなみに、vectorにある日本語VB6ランタイムをWin7機で入れてあります。
もちろん方法として、新しいVBへ移行させるという手はありますが、長いプログラムなので回避方法で動けばそれですませたいのです。
0184デフォルトの名無しさん2014/07/29(火) 22:58:51.55ID:15oRKj17
再現しなかったわ

Private Sub Command1_Click()
Dim a$, b$, c$
b$ = Text1.Text
c$ = Text2.Text
a$ = b$ & c$
Label1.Caption = a$
End Sub
0185デフォルトの名無しさん2014/07/29(火) 23:01:14.51ID:15oRKj17
文字列連結非推奨の+を使ったa$ = b$ + c$に直してやってみたけどそれでも再現しなかった
0186デフォルトの名無しさん2014/07/29(火) 23:02:58.71ID:15oRKj17
謎スペースというとstr()で正の数値を文字列にしたときに符号分のスペースが空く現象なら初心者だった大昔に頭を悩ましたことあったけど
0187デフォルトの名無しさん2014/07/29(火) 23:03:58.00ID:15oRKj17
俺の環境はVB6LearningEdition + Windows7 Starter SP1
どっちも公式の修正は全部適用済み
0188デフォルトの名無しさん2014/07/30(水) 00:29:46.94ID:CdQaW6RK
\0かなんか入ってんじゃねえの?
0189デフォルトの名無しさん2014/07/30(水) 00:43:24.94ID:HMvlfSFZ
a$ = trim(b$) +trim(c$)

これでアカンの?
0190デフォルトの名無しさん2014/07/30(水) 01:57:06.95ID:/sawPdNN
それだと意図的に入れたスペースも削除されるんでねーの
まぁどういう文字列扱うのか知らんけど
0191デフォルトの名無しさん2014/07/30(水) 03:57:04.59ID:k3uJKoPZ
型指定文字って、Dimの型宣言と食い違ってたらどうなるんだろ
エラーか、Dim優先か型指定文字優先かで暗黙変換するのか

b$,c$が実は文字列じゃなかったってオチはないのか
0192デフォルトの名無しさん2014/07/30(水) 09:08:16.09ID:sFaDcVDG
vtが8のVARIANT型
0193デフォルトの名無しさん2014/07/31(木) 08:37:53.68ID:zBkjzOCI
これはちがうか?

Windows 7 における VB6 の Strconv 関数の挙動
http://blogahf.blogspot.jp/2010/12/windows-7-vb6-strconv.html?m=1
0194デフォルトの名無しさん2014/07/31(木) 12:49:59.88ID:rqUYoRIX
win7付属のvbランタイムでは
オレソフトがほとんど動かないから
Vectorとかからいつもランタイム
ダウンロードしてるよ
0195デフォルトの名無しさん2014/07/31(木) 18:15:07.33ID:Ve2gLFMc
ビットマップのパレットの扱いについて質問いたしたく。

Pictureコントロールとかに、パレットモードのビットマップを読み込み → Picture1.Picture = LoadPicture( File )
その色を参照しますと、longのRGB値が返ってきますやね? → ColorData = Picture1.Point(X, Y)

0〜255のパレットで取得する方法ってありますか?
0196デフォルトの名無しさん2014/08/01(金) 00:18:20.63ID:Wruc3mJq
なぜVB.NETに移植しようとするんだ
似てるだけで完全に別の言語だろ…
0197デフォルトの名無しさん2014/08/01(金) 00:32:30.14ID:TigIDjwN
新しい言語を覚えるなら似てる言語を覚えるほうが覚える事少なくて済むから簡単だからじゃね
0198デフォルトの名無しさん2014/08/01(金) 00:33:26.47ID:TigIDjwN
N88BASICからQuickBASICやVisualBasicに乗り換えたときと同程度の衝撃や感覚の違いはあるだろうけんど
0199デフォルトの名無しさん2014/08/01(金) 00:36:34.92ID:Wruc3mJq
>>197
いやなまじ似てるからギャップがあって習得が難しい
1からJavaやる方が楽
0200デフォルトの名無しさん2014/08/01(金) 01:11:02.19ID:FxBBG4fg
>>196
工数だろ
.Netなら不要な共通関数も、配列を使った分かりにくいデータ加工も
大量のドカタを投入するだけで全部ひっくるめて移行できる
進捗管理も楽
0201デフォルトの名無しさん2014/08/01(金) 01:18:57.33ID:PER4Q7A8
新規ならC#にすればいいのにね
VB.NETはVB6を知ってると返って混乱する
いま仕事で使ってるけど
ラムダ、拡張メソッド、匿名クラス、ジェネリックなんかの
構文が無理矢理すぎて気持ち悪い
先進機能はまずC#で実装だし
0202デフォルトの名無しさん2014/08/01(金) 01:29:05.94ID:rO56Z25g
めんどくせえからVBでええわ
先進機能とやらはC#でガンガン実装してもらって
ノウハウが拡散されてコピペできるようになってから
VBに降りて来てくれれば充分
0203デフォルトの名無しさん2014/08/01(金) 04:54:51.83ID:5JZNpp1J
>>201
> ラムダ、拡張メソッド、匿名クラス、ジェネリックなんかの
> 構文が無理矢理すぎて気持ち悪い

使わなきゃいいじゃん...
0204デフォルトの名無しさん2014/08/01(金) 23:18:35.48ID:Wruc3mJq
なぜVB6開発者は設計が破滅的なのか
0205デフォルトの名無しさん2014/08/01(金) 23:24:25.51ID:S5uolvNz
まだVB6を使ってるような人を開発者とは呼びたくないね
0206デフォルトの名無しさん2014/08/01(金) 23:33:23.50ID:TigIDjwN
そもそも設計ができるような開発者はこの業界でも0.01%未満しかいないだろうよ
0207デフォルトの名無しさん2014/08/02(土) 09:18:19.34ID:xQ+kSU9t
>>195
ファイルからそのままXY計算して読むとか
元ファイルからパレット情報を取り出してRGBと比較するとか
読み込んだ時点でパレット情報は失われているわけだから気を付ける必要はあるが
0208デフォルトの名無しさん2014/08/02(土) 10:04:41.04ID:+I+gUQ1l
>>204
それは鶏が先か卵が先かという命題と似ているね。
設計作業自体は本来言語とは無関係に行えるんだけど、VB6はその特性上、
どんなに素晴らしい設計をしても実装段階ですべてをぶち壊しにする程なので
そんな仕事を繰り返しているうちに設計の勘所やセンスを失ってしまううんだろう。
0209デフォルトの名無しさん2014/08/02(土) 12:09:32.60ID:tvZxKsuR
>>208
具体的に何が問題だというの?
0210デフォルトの名無しさん2014/08/02(土) 12:15:08.11ID:Mk2uM7ds
>>208
> どんなに素晴らしい設計をしても実装段階ですべてをぶち壊しにする程なので

語るねー
ひとつでいいから、具体例あげてみ
0211デフォルトの名無しさん2014/08/02(土) 12:56:13.43ID:+I+gUQ1l
例えば、知り合いにこんなコードを書く奴がいる。

On Error GoTo FinalProc
色々やる
FinalProc:
If Err.Number = 0 Then Exit Sub
エラー処理色々やる

まあ、こんな塩梅だ…
0212デフォルトの名無しさん2014/08/02(土) 13:24:35.86ID:pTpTFsb3
>>137
拍子抜けした
0213デフォルトの名無しさん2014/08/02(土) 14:28:39.61ID:P+pWdPkz
>>207
ありがとうー
やはりピクチャーボックスだけでは完結させらでないのですな…

これを機に、BMP読み込みの関数でも作るかな
0214デフォルトの名無しさん2014/08/02(土) 15:19:52.39ID:xQ+kSU9t
BMPでも、フル機能で組むとわりとめんどくさい仕様なんだよな
0215デフォルトの名無しさん2014/08/02(土) 20:46:44.15ID:q/4scjvi
>>211
だから何?
0216デフォルトの名無しさん2014/08/02(土) 21:42:35.40ID:peOjsuVS
>>214
とりあえず、ネットに転がってるサンプルを解析して作ってみた。
VBで初めて構造体なんか使ったぜ… ほとんど読み捨て用だけど。

で。
ヘッダはVBだしWinodws用固定でいいとして、パレットエリアが可変幅ってのはめどい…
今回扱うのは256色固定だから、256x4固定で宣言したけど。
0217デフォルトの名無しさん2014/08/02(土) 22:16:47.28ID:gl/+f0TI
適当なライブラリ拾ってきてやればいいんじゃねーの
0218デフォルトの名無しさん2014/08/05(火) 00:12:56.38ID:CPdPN9K1
On Error Resume Next


死ねと思うわ。つかころ・・・
0219デフォルトの名無しさん2014/08/05(火) 00:17:48.46ID:QOn7u7JW
>>218
またそれか。

ずいぶん前にも書いたはずだけど、重要なことはちゃんと発生しうるエラーを
想定したコードを書くことであって、On Error Resume Nextを使うかどうかは
それと関係ない。

個人的にはむしろGotoで飛びまくるコードより、On Error Resume Nextを使った方が
まだしもまし。
0220デフォルトの名無しさん2014/08/05(火) 00:46:32.77ID:cKkOB6R8
VBScriptでは大変お世話になりました
0221デフォルトの名無しさん2014/08/05(火) 05:52:07.76ID:TYaplwgv
>>個人的にはむしろGotoで飛びまくるコードより、On Error Resume Nextを使った方が
 まだしもまし。

に1票
0222デフォルトの名無しさん2014/08/05(火) 09:33:01.32ID:OnSJwMSk
goto使えない・わない病もやっかいだけどな…
ループの外でもう一回条件チェックするくらいなら、素直にgotoした方がわかりやすいプログラムになるんだがなあ
0223デフォルトの名無しさん2014/08/05(火) 10:42:02.17ID:k82VfZ6w
関数に切り出せよカス
0224デフォルトの名無しさん2014/08/05(火) 10:53:23.66ID:PZ15wcVz
切り出そうとしたら引数が多すぎてたまらないでゴザル
0225デフォルトの名無しさん2014/08/05(火) 10:57:28.17ID:k82VfZ6w
構造体使えよカス
0226デフォルトの名無しさん2014/08/05(火) 12:38:45.56ID:0noCA0db
GOTOで上に飛ぶプログラムは嫌じゃね
0227デフォルトの名無しさん2014/08/05(火) 16:07:50.46ID:A27X/NKX
gotoって、on error goto じゃなくて、素のgotoの事なのか?
0228デフォルトの名無しさん2014/08/05(火) 16:10:58.82ID:+dNJfQuE
VB6で行番号使う香具師
0229デフォルトの名無しさん2014/08/05(火) 22:02:00.61ID:mtzM1eZh
>>226
さすがにそれには速攻ダメ出しするわ
0230デフォルトの名無しさん2014/08/06(水) 02:15:40.39ID:JlXHaWRR
ON_ERROR:
Call 無価値なメッセージを表示してプログラムを止める

↑これやめてくれ
ハンドリングしない方がはるかにマシ
0231デフォルトの名無しさん2014/08/06(水) 09:40:59.09ID:+V/6KFCL
>>230
状況よくわからんが、間違えた結果だしてなにも言わずに正常終了よりマシだと思うが。
0232デフォルトの名無しさん2014/08/06(水) 09:55:36.91ID:nr5KKulL
エラーコードが欲しい、ってはなしじゃね?

  良 ←→ 悪

ちゃんとしたエラー表示>素のエラー>無意味なエラー表示>エラーも出ずスルー
0233デフォルトの名無しさん2014/08/06(水) 17:34:04.62ID:872lHvmj
やたらとOn Errorを使うもんじゃないよ
エラーコードを表示させたにしても、だいたいに於いて不具合の原因が分からなくなることが多い
途中でディスク抜かれるとか、そういう不可抗力の場所を除いて
不測のエラーで止まるなら止まってしまえと思う
客先に行って不測のエラーとやらを見てみたいという気構えが大事
0234デフォルトの名無しさん2014/08/06(水) 17:48:00.90ID:kr9/VG26
予想できるエラーで、それが実行時エラーを発生させる場合は、エラートラップするのが普通
0235デフォルトの名無しさん2014/08/06(水) 18:32:01.79ID:nr5KKulL
とりあえず…232Cポートの設定はエラーでトラップしないとどうしようもないや…
外部ファイルにCOMポート番号もたせて「これ書き換えて」が通用する相手ならいいんだが
0236デフォルトの名無しさん2014/08/06(水) 23:23:59.28ID:Rv/16L6Z
On Error Resume Next、On Error Goto は
どちらが悪いかではなく、またこの行そのものではなく、

On Error Resume Next であれば、次の行
On Error Goto であれば、ジャンプ先の行

でやる処理がちゃんとなっているか、
ちゃんと処理しているのなら、どちらでもいいし
ちゃんとしていないのなら、どちらもダメ。

On Error 〜 はどちらでもこの行だけ見てもなんとも言えない。
0237デフォルトの名無しさん2014/08/07(木) 00:22:26.58ID:5BCVlZMu
行番号使え、行番号
0238デフォルトの名無しさん2014/08/07(木) 09:35:13.67ID:VqO0SR3j
VB6で、ちゃんとプログラミング?とんちですか?
0239デフォルトの名無しさん2014/08/07(木) 10:30:05.40ID:sOXSexQM
マシン語も書けないカスの分際で身の程を知れよ
0240デフォルトの名無しさん2014/08/07(木) 11:16:02.87ID:IdGGKRkY
アセンブリ言語じゃなくて、マシン語? Z80しかできんなー。 変換表片手になら6809もいけるけど。
0241デフォルトの名無しさん2014/08/07(木) 11:27:10.53ID:3lhlpwhc
>>237
どういうこと?
0242デフォルトの名無しさん2014/08/07(木) 15:32:27.11ID:VqO0SR3j
>>241
行番号を使えば相対位置の把握が楽になるからでしょう。
現在行から、どっちの方向をさがせばいいかが直感的にわかるです。
0243デフォルトの名無しさん2014/08/07(木) 18:57:45.92ID:QbecQ1Nn
VBに限らないでまともなコーディング規約あるとこなら上へ飛ぶGOTOは禁止してると思うが
使いどころさえ間違えなければ便利なんだがな、上へ飛ぶGOTO
0244デフォルトの名無しさん2014/08/07(木) 19:12:24.44ID:k5KK9Ayp
イディオムでどうにでもなるじゃん
0245デフォルトの名無しさん2014/08/07(木) 22:07:36.36ID:AKN7fSE6
面倒な処理
on error resume next
エラー処理


resume next要らなくね?
0246デフォルトの名無しさん2014/08/08(金) 00:20:31.68ID:RagQlliS
VBは何で行番号が扱えるようにしてるのかよく分からんな
0247デフォルトの名無しさん2014/08/08(金) 00:37:26.99ID:QcB2BiWF
昔サブルーチンを知らなかった頃
GOTOだけで破綻(スタックオーバーフロー的な)
しないプログラムを作ったのが今の糧になってるなー
0248デフォルトの名無しさん2014/08/08(金) 00:48:28.17ID:ZZsJf1aL
>>245
エラー処理中にエラーでたらまずいんだろ
>>246
昔からの互換だろ
0249デフォルトの名無しさん2014/08/08(金) 18:42:45.19ID:g5wGbrtl
>>243
> 使いどころさえ間違えなければ便利なんだがな、上へ飛ぶGOTO

マジで上に飛ぶ goto が便利な状況が思い付かん
0250デフォルトの名無しさん2014/08/08(金) 19:10:30.97ID:IiTaEzK5
スクレイピングするURLが読み込み不良の時にもう一度読み込み直す時とか
0251デフォルトの名無しさん2014/08/08(金) 20:54:29.14ID:20Fp6vcl
縦にながいプログラムで、上のほうの条件判定をもう一回させたいとき、ぐらいしか思い浮かばないな。
if文のネストを少なくする代わりに、上向きgotoで仕切りなおすの。

昔ながらのBASICだと、条件付きループの中からgosubで呼ぶようなのを、ループ使わない方法が上向きgotoになるイメージだな。
VBなら、gosubじゃなくて関数化してcallだろうけど。


マイコン用のC言語やりだしてから、ほんと上向きのgoto使わなくなったなあ。
OSにいかに早くイベントを返すかが、どうしても気になる…
0252デフォルトの名無しさん2014/08/08(金) 20:56:27.09ID:20Fp6vcl
あ。あとメインループの回帰。
昔のBASICでメインループをループ命令で作るのはやったことないや。
0253デフォルトの名無しさん2014/08/09(土) 00:39:51.42ID:xYeYRWXs
ところでADOとADORは何が違うのですか?
0254デフォルトの名無しさん2014/08/09(土) 10:38:04.64ID:+T7xdrkU
>>250
Do
 読み込み
Loop Until 読み込めた

ではダメなのか?

>>251-252
具体的なコードで示してくれないかな
0255デフォルトの名無しさん2014/08/09(土) 10:48:06.29ID:ffpp7Ige
>>254
確かにその方が良いね
0256デフォルトの名無しさん2014/08/09(土) 16:01:39.53ID:j2iiR/U5
Do
 処理1
 処理2
 処理3
 処理4
Loop Until 条件

処理4で何かあって、処理2とか3とかからやり直したいときとかどうするの?
ネスト深くなるの気にしないとかフラグ増やすの気にしないなら出来なくはないけど
0257デフォルトの名無しさん2014/08/09(土) 16:22:41.93ID:+T7xdrkU
> 処理4で何かあって、処理2とか3とかからやり直したいときとかどうするの?

Do
 処理1
 Do
  処理2
  Do
   処理3
   処理4
  Loop Until 条件1
 Loop Until 条件2
Loop Until 条件3

で、いいだろ。

> ネスト深くなるの気にしないとかフラグ増やすの気にしないなら出来なくはないけど

ネスト気にするなら、そこの処理を関数化するとかすればいいだけ

goto のなにがまずいって、本当は三重ループなのに goto 使えば簡単〜って勘違いする >>256 みたいなアホがでちゃうことだな w
0258デフォルトの名無しさん2014/08/09(土) 16:24:54.51ID:APV/VAva
こう考えようぜ

Do
 処理1
 一連の処理
Loop Until 条件

sub 一連の処理
 処理2
 処理3
 処理4
end sub
0259デフォルトの名無しさん2014/08/10(日) 09:35:13.76ID:PVw8oqHl
忌憚なき意見を聞きたいのだけどVB6.0からVB.NETに移植する意味はあるのかな?
なんだかんだ言って過去の資産やコンパイラはWindows7でも動くよね
0260デフォルトの名無しさん2014/08/10(日) 09:42:24.90ID:52XMA8d+
再帰使え
0261デフォルトの名無しさん2014/08/10(日) 10:14:19.95ID:4/qepZJ7
>>259
うちはUIにGrapeCityのActiveX使ってるから移植する意味が出てきた。
来年8月末でサポート切れるからあせってる。
0262デフォルトの名無しさん2014/08/10(日) 10:24:39.57ID:PVw8oqHl
>>261
サポート切れても動くならいいと思う
なんのためにテストしてるのかわからんよ
0263デフォルトの名無しさん2014/08/10(日) 10:43:09.45ID:zo9IFsz+
企業だと責任問題があるから、サポート切れの奴を動くから〜とかで使うわけにはいかんのよ
0264デフォルトの名無しさん2014/08/10(日) 11:04:11.53ID:9TlyPpyK
んなこといったらVB6を今の時点で使っていること自体大問題だろうに
0265デフォルトの名無しさん2014/08/10(日) 11:35:37.62ID:zo9IFsz+
>>264
なにが問題?
http://msdn.microsoft.com/ja-jp/vstudio/ms788708.aspx
0266デフォルトの名無しさん2014/08/10(日) 11:51:52.34ID:PVw8oqHl
サポート切れでもテストして合格なら使えるし
テスト不合格なら仮にサポートされてても使えない
じゃないのか?この業界わけわからん
0267デフォルトの名無しさん2014/08/10(日) 11:56:29.71ID:Jl3CQOkd
大事なのは動くかどうかじゃなくて
誰が責任を取ってカネを出すかだ
0268デフォルトの名無しさん2014/08/10(日) 12:08:16.42ID:PVw8oqHl
動くなら責任もクソもないじゃん
それを確認するためのテストなんだし
0269桃白白 ◆9Jro6YFwm650 2014/08/10(日) 12:13:59.30ID:ogxmV0hN
>>268
せやねん。テストですべての機能、すべての状態で動作することを
保証できたら責任もクソもないねん。せやけど、それ無理やねん。
だから会社のぶちょーさんは神経使うねん。
0270デフォルトの名無しさん2014/08/10(日) 12:38:51.50ID:Jl3CQOkd
<後で問題が発覚した時に>誰が責任を取ってカネを出すかだ
0271デフォルトの名無しさん2014/08/10(日) 12:47:14.74ID:PVw8oqHl
うちで使ってるライブラリはバグだらけだけど納品して文句言われるのは何故かうち
サポートされてるなんて建前だけじゃ小さな会社は責任逃れ出来ないよ…
0272デフォルトの名無しさん2014/08/10(日) 12:57:54.14ID:y8Gl9/2f
VB6で書いた物を納品するとか有るの?
0273デフォルトの名無しさん2014/08/10(日) 13:00:44.50ID:5LibjjG9
昔はフツーにあったと思うが。
今は保守がほとんどだろうけど、機能追加とかでも新規に起こすよりは安く上がるなら、まだVB6を使わざるを得まい。
0274デフォルトの名無しさん2014/08/10(日) 14:07:54.73ID:zo9IFsz+
>>271
> うちで使ってるライブラリはバグだらけだけど納品して文句言われるのは何故かうち

当たり前だろ
そのライブラリ選んだのはお前だろーが
ライブラリベンダのサポートあるなら、とっとと直させろよ
0275デフォルトの名無しさん2014/08/10(日) 14:46:59.22ID:PVw8oqHl
>>274
そう
それが当たり前なのになぜかサポート切れとかに拘るんだよなぁ
サポートの有無なんてうやむやにされるのに
0276デフォルトの名無しさん2014/08/10(日) 15:26:09.68ID:zo9IFsz+
>>275
ごちゃごちゃ言う前に、バグつきの納品物はよ直せや
0277デフォルトの名無しさん2014/08/10(日) 16:30:42.93ID:Jl3CQOkd
・納品前にバグを見つけられなかったら負け
・サポートというのはバグ修正だけじゃなくて
 アップデート・情報提供や問い合わせへの回答を含む

ちなみに瑕疵対応は普通利用時に契約を結んでおくもの
契約更新・保守料払ってるのなら文句言っていい
0278デフォルトの名無しさん2014/08/10(日) 16:58:32.88ID:/SLE/gAy
>>275
XPを使い続けるとこうなる系の記事でも見てこいよ
それと同じ事だから
0279デフォルトの名無しさん2014/08/10(日) 16:59:31.57ID:38YxP+gO
MSがVB6をオープンソース化すりゃいいんだよ
0280デフォルトの名無しさん2014/08/10(日) 18:28:20.37ID:AYTb8Woz
>>279
.NET戦略を進めてるMSにとってなんかメリットある?

カーネルがほどんど同じなVBAが新OSに対応し続けてるんだから
実際はCOMクライアントとしてのVB6の今バージョンを出すのは
そんなに大変じゃなさそうよね
0281デフォルトの名無しさん2014/08/10(日) 18:36:20.72ID:O6NxgjEg
>>280
いまだにVB6にしがみついてる人には分からないだろうけど、
MSにとってじゃなくて開発者側にメリットがあるんだよ。
0282デフォルトの名無しさん2014/08/10(日) 20:19:01.00ID:tSunEVjr
>>281
それは建前
同じUIで移行したらもっさり過ぎてその対策に工数取られたぞ
0283デフォルトの名無しさん2014/08/10(日) 20:38:26.63ID:VgocPGqd
スペックそのままの無茶ぶり入りました
0284デフォルトの名無しさん2014/08/10(日) 20:58:17.59ID:yPG31S/x
こんなことしてる?
  If Len(File1.Path) = 3 Then
    f$ = File1.Path + File1.List(ix%)
  Else
    f$ = File1.Path + "\" + File1.List(ix%)
  End If
0285デフォルトの名無しさん2014/08/10(日) 21:17:49.20ID:38YxP+gO
文字列の結合に+を使うなんて・・・
0286デフォルトの名無しさん2014/08/10(日) 21:41:50.84ID:AYTb8Woz
>>281
いや、俺はC#メインでどっちかっていうと布教してる側だけど
今の所儲かってないMSがやるメリットがないでしょっていう話。
夏休みの学生さんですか
0287デフォルトの名無しさん2014/08/10(日) 22:51:24.86ID:TGJtyUM2
>>286
ビジネスの基本は、ユーザーの需要にこたえること。
提供している製品やサービスが直接利益を産むとは限らない。
TV局は番組を直接販売してるの?
GoogleはAndroid OSを無料で提供してるけど?

お子様はどっちだよ。
馬鹿じゃないの。
0288デフォルトの名無しさん2014/08/10(日) 23:28:53.26ID:SkkTdbxn
無料化は客寄せパンダ。
開発者を集めるのも、MSの利益につながる

なぜなら、味方が増えると、
その味方がMSをつぶさないように運動するから、
自然と有利になっていく

関係者とWinWinの関係になるので、
利益によるつながりは、まあまあ強い

アサヒのスーパードライがそれ
販売業者に利益が多いので、自然と取扱いが多くなって成功した

MBA・中小企業診断士を勉強して、
より大きなシステムに、無料の部品を組み込んでもうける、
ビジネスモデルを開発して
0289デフォルトの名無しさん2014/08/11(月) 00:10:13.90ID:YkIMsKuQ
>>287
ユーザーの欲しがるものをホイホイ出すのがビジネスなの?
ユーザーも気がついてないのを出す(需要を作る)のがビジネスじゃないの
iPhoneが出たときって酷評されてたし。

スポンサー相手の商売してて広告費がネットに抜かれたテレビ局と
需要のあるReaderをバッサリ切り捨てたGoogleはこの文脈ではおかしいような...

VB.NETを作るんじゃなくてVB6の構文でMSIL吐けるようにするのは無理だったのかなあ

昔のラーニングエディションとかと違って
無料のExpressでも十分商用に耐えうるし
ボタンをポトペタしたあと巷のコードコピペすれば
そこそこの物を作れるFormsは健在だからVB6プログラマは
移行しやすいと思うけどなあ。
DataGridVIewが高機能なお陰で
市販コンポーネント買わなくてもいいのはデカい。
あとは帳票がなんとかなればなあ
0290デフォルトの名無しさん2014/08/11(月) 00:24:00.26ID:3x17zKlk
VB6のCILコンパイラって理論的に可能なのかな
ネイティブコンポーネントの扱いとかどうなるんだろ
0291デフォルトの名無しさん2014/08/11(月) 00:29:02.99ID:8tAQjXl2
>>289
何が言いたいのかさっぱりわからない。

VB6の構文で?そんなのいらない。
2003の時点ですら、一旦VB.NETかC#に移行したらもうVB6には戻る気がしなかった。

このスレにも過去何度も貼られているわんくまの人が言ってる通り、
あれこれ理由を付けてVB6に固執する人は、実はVB6も本当は使いこなせてない人だと思う。
0292デフォルトの名無しさん2014/08/11(月) 00:33:57.79ID:3x17zKlk
いやコンパイラが仮に出来るならめちゃくちゃ需要あるだろ
新規開発はともかく過去の遺物をそのまんま再利用できたら素晴らしいやん
0293桃白白 ◆9Jro6YFwm650 2014/08/11(月) 00:42:01.03ID:FbrqxMgI
>>291
>あれこれ理由を付けてVB6に固執する人は、実はVB6も本当は使いこなせてない人だと思う。

これはこれで極論だと思う。誰なの?桃白白ちょっと説教してくるよ。
0294デフォルトの名無しさん2014/08/11(月) 00:42:06.30ID:oaxRFEAA
VB6で作ったアプリが依存するDLLをAPIの使い勝手を変えずに中身をまるっと作り直せばいいのか?
0295デフォルトの名無しさん2014/08/11(月) 01:05:00.41ID:YkIMsKuQ
>>291
いや、おれは.NET推進派なんだけど
2003の時点から使ってるならVB6からの移行ウィザードのクソっぷり知ってるだろ。
コードを書き換えるんじゃなくて
コードはそのままで動く環境がユーザーとしては
とりあえずあの時点で一番必要だったはずなんだ。
おいおいVB.NETらしいものに書き換えるとしても。

そりゃあそれを機会に書き直せばいい物ができるだろうけど
そこに投資できない所も多いし技術者の数も揃わない。
あなたが戻る気がしないのは機能的なものや先進性かもしれないけど
そこまで素晴らしいものが必要のないユーザーも多い

この人の言うこともわからんでもない
http://social.msdn.microsoft.com/Forums/vstudio/ja-JP/ab5f7e16-dc53-43b7-9dfd-af14698b1fe6/vb6vb2008-?forum=vbgeneralja

MSとしては移行需要つくってやったぜみたいなところもあるかもしれんが
だったらアップルみたいにVistaからはVB6意図的に動かなくするとかすればよかったのに
0296デフォルトの名無しさん2014/08/11(月) 01:26:11.50ID:MeCRvLwR
もうVB6の死亡宣告が出されてから15年近く経ってるのに今頃「NET推進派」だの
「移行需要」だの語るに落ちてる。

一言で言えばアホかと。
一生青春してろよ。
0297デフォルトの名無しさん2014/08/11(月) 01:50:50.75ID:YkIMsKuQ
>>296
そういうあなたは
もうVB6の死亡宣告が出されてから15年近く経ってるのに
なんでこんなスレを読んでレスまでしてるの?
同族嫌悪かな
0298デフォルトの名無しさん2014/08/11(月) 06:46:43.94ID:63aliZJh
>>291
学生さん?
企業だと明確な理由もなしにホイホイ移れないんだよ。
お客さんの都合もあったりするしね。
0299デフォルトの名無しさん2014/08/11(月) 09:43:36.40ID:5LFwGVsl
目に見えてわかるのだと言語じゃないけど
PC-9801とかで動いてる上にCPUどころかクロックだけでも変わるとタイミング取れなくなって動かなくなるイヤなシステムで置き換えるとアホみたいに金かかるとか
そういう…
0300デフォルトの名無しさん2014/08/11(月) 09:47:36.26ID:Q0ffYC3B
とんでもなく巨大なシステムが構築されていて、作り変える時間と費用が出ないとか…
0301デフォルトの名無しさん2014/08/11(月) 18:01:09.94ID:9vJJ4+pv
プログラムの質問しても無視するし
プログラマ板の話してるし
0302デフォルトの名無しさん2014/08/11(月) 21:18:36.16ID:ippTJbIa
>>298
> 企業だと明確な理由もなしにホイホイ移れないんだよ。

それじゃ説明になってないだろ。

サポートが終了するのは、明確な理由にはならないんだよ。

こうでしょ?
0303デフォルトの名無しさん2014/08/13(水) 08:41:30.67ID:GcxYvdY+
いや、それは完全に明確な理由だけど問題なのは、お客さんに使える、または
お客さんが納得する理由じゃないってだけだ。

「そうですか〜サポートが切れるんですかぁ、じゃあすぐサポートがちゃんとしてる
ものに切り替えて下さいね、費用?うちは仕様変更や機能追加はお願いしてません
から、年間保守料の範囲ですよね?当然」
0304デフォルトの名無しさん2014/08/13(水) 09:42:33.54ID:MVRQguVP
サードパーティじゃなきゃダメだなって製品ってそんなないよね
サブセットぐらいなら簡単に作れるような製品しか扱ったことがない僕
0305デフォルトの名無しさん2014/08/14(木) 23:27:02.00ID:7jQjdkml
使用しているOS:Windows XP SP3
VBのバージョン:6.0
サービスパックのバージョン:SP6

すごい初歩的な質問かもしれないんですが分からなかったのでお願いします

Text1という名前のテキストボックスがあって空かもしくは0以下か65535以上の場合
という条件を付けたいんですが型が一致しませんというエラーが出てしまいます

If Text1.Text = "" Or Text1.Text <= 0 Or Text1.Text >= 65535 Then
0306デフォルトの名無しさん2014/08/14(木) 23:38:38.80ID:Vf/hkzp9
>>305
Text1.Text は文字列なので、数字が書いてあっても文字だから

If Text1.Text = "" Or Val(Text1.Text) <= 0 Or Val(Text1.Text) >= 65535 Then

じゃなかろーか。
0307デフォルトの名無しさん2014/08/14(木) 23:44:05.83ID:wROGfWf+
Val()もまったくエラーが発生しない訳ではないのでなんらかのエラー対応は
しておいた方がいいと思う
0308デフォルトの名無しさん2014/08/14(木) 23:49:16.23ID:mP75ikG7
そらVal()はDouble値だからな
0309デフォルトの名無しさん2014/08/14(木) 23:57:35.08ID:pQnmwC1w
て
0310デフォルトの名無しさん2014/08/14(木) 23:58:28.70ID:pQnmwC1w
te
0311デフォルトの名無しさん2014/08/15(金) 00:01:01.24ID:2Sjzb77y
>>306
どうもありがとうございました!
助かりました
0312デフォルトの名無しさん2014/08/15(金) 00:27:07.83ID:wT2TJBaG
なんちゅう低レベルw
0313デフォルトの名無しさん2014/08/15(金) 00:44:10.78ID:9Au/QACl
少数は許容か
0314デフォルトの名無しさん2014/08/15(金) 21:36:25.66ID:ciT38lqo
保守
0315デフォルトの名無しさん2014/08/18(月) 20:24:18.68ID:tUMgI2vR
MsgBox "Hellowork!"
0316デフォルトの名無しさん2014/08/18(月) 20:37:32.45ID:IPiH7YvP
While MsgBox("Go Hellowork!", vbYesNoCancel) <> vbYes
Wend
0317デフォルトの名無しさん2014/08/23(土) 02:18:48.86ID:jh8yRGUv
XPやIEのサポート切りは思い切ったことやったなって思えるのにVB6とVBAは残すのか
0318デフォルトの名無しさん2014/08/23(土) 17:38:07.76ID:VzEIcDK4
切り捨ては互換性がある後継技術が
リリースされてから行う。
0319デフォルトの名無しさん2014/08/23(土) 21:04:56.54ID:AZUadfYz
で、Windows9ではexe動くのか?
0320デフォルトの名無しさん2014/08/23(土) 22:27:36.34ID:/2UCS/A1
動く
0321デフォルトの名無しさん2014/08/23(土) 23:25:24.39ID:AZUadfYz
>>320
サンクス

8.1は試して無いが
さすがに9ではIDEは無理っぽいよな
7を末永く使うことに
0322デフォルトの名無しさん2014/08/24(日) 00:34:45.05ID:St0fghSm
質問があります。
次の面接通ればVBで保険系の仕事になるかもしれんのだが
VB関連の初心者用の本あったら教えてくれんか?
ついでにサイトも
0323デフォルトの名無しさん2014/08/24(日) 00:43:00.63ID:0VnzUyhj
ググってすぐ出てくるようなものということでなく
お勧めを教えてほしいってことか?
0324デフォルトの名無しさん2014/08/24(日) 00:57:39.84ID:St0fghSm
>>323
そんな感じ
自分が初心者時代このサイトとか書籍使ってたーってのあったら知りたい

自分VBAは経験あるんだがいきなり大規模システムに関わりそうなんで不安なんだ…
0325デフォルトの名無しさん2014/08/24(日) 01:24:22.98ID:v7AyIdy6
VB6で大規模システムとな?
0326デフォルトの名無しさん2014/08/24(日) 01:38:41.30ID:St0fghSm
>>325
みたい
知っているのは保険関係のシステム
ASPを使う(ASPって何?)
前任者はもういない
VBで構築されている
0327デフォルトの名無しさん2014/08/24(日) 01:39:07.90ID:v7AyIdy6
ASPってVBScriptやんけ
0328デフォルトの名無しさん2014/08/24(日) 01:42:21.05ID:St0fghSm
>>327
そうなんだ(無知)
どう違うんだ?(切実)
0329デフォルトの名無しさん2014/08/24(日) 01:46:05.23ID:v7AyIdy6
ASPはWebアプリじゃ
VBよりさらに大規模には不向き
0330デフォルトの名無しさん2014/08/24(日) 01:53:29.01ID:St0fghSm
とりあえず面談相手に文句を言いたくなってきた
あと>>329の人ありがと
明日からVBの勉強しようと思っていたのに最初っからズレるところだった…

VBScriptってどんなものか知っている人いたら教えてくれないか?prz
0331デフォルトの名無しさん2014/08/24(日) 02:00:24.74ID:v7AyIdy6
ASPは10年くらいやった。
0332デフォルトの名無しさん2014/08/24(日) 02:03:39.53ID:v7AyIdy6
VBScript自体の知識よりWebアプリ開発の知識のほうが重要だぞ
0333デフォルトの名無しさん2014/08/24(日) 02:09:35.76ID:St0fghSm
>>332
了解です
そっち方面も勉強してみる
度々ありがとうございます

…面接通らない気がしてきたw
0334デフォルトの名無しさん2014/08/24(日) 02:30:19.73ID:0VnzUyhj
古いソフト使ってて新しく作り変える気がない会社はメンテを外注じゃなく自社で囲えばいいのいにって思う
0335デフォルトの名無しさん2014/08/24(日) 03:39:57.62ID:xqGwHcS8
>>334
バイトテロ知らんの?
0336デフォルトの名無しさん2014/08/24(日) 06:30:55.74ID:cqemEsHJ
>>329
クライアント規模で行けば、VBでクラサバでシステム作るより
大規模環境でもいけますよ、Webアプリなんで

>>330
VBScript自体はVBAからさらにいろんなものを省いたもの
VBAできるなら新たに覚えなきゃならん文法はない
それより>>332が言うように、HTMLの最低限の知識と、WEBアプリの基本とASP独自のやり方覚えないと

しかし、未だにASPなのか
それ実はASP.NETでVB.NETだったりしないか?
0337デフォルトの名無しさん2014/08/24(日) 10:10:48.89ID:St0fghSm
>>336
正直こっちが正確な情報を知りたいw
今回の面接、面接の担当官と現場担当の二回あって
どうも情報があんまり通ってないみたいなんだよね…
次の面接ではそこ徹底的に聞かんといかんな……

多分普通の日本人なら知ってるレベルの会社だから
簡単には改装できないんじゃないかな?
イントラのところで未だにWin2000を使っている見たことあるし
0338デフォルトの名無しさん2014/08/24(日) 10:48:15.03ID:MvgqmK5+
>>337
なんか俺はお前の事を知っている気がする
0339デフォルトの名無しさん2014/08/24(日) 12:40:02.33ID:St0fghSm
>>338
そか、この懸案を知っているのは4人ぐらいしかいないから
知り合いだったらこっちも情報を絞り込めるでw
0340デフォルトの名無しさん2014/08/24(日) 13:12:42.96ID:Mh11Tb7V
ド素人の新卒のころ某社のASP+VB6のシステムを独りで担当したけど素人向けの言語だからサクサク作れたよ
ぶっちゃけ高い書籍(絶版が多くてぼったくられる)を読むほどの勉強は必要ない
入門サイトをざっと詰め込んだら後は開発環境のヘルプとGoogle調べるだけで間に会う
VB.NETで共通部品をCIL形式で作ってASP.NET(HTML+VB.NET)から利用してWebサイトを構築するのとやり方は似てるね
VB6で共通部品をCOMコンポーネント形式で作ってASP(HTML+VBS)から利用してWebサイトを構築するのが主な流れ
最も苦労する所は前任のバカが作ったスパゲティを解析する作業だろうね
VB6は書くのは楽でも読むのは辛い言語だから
0341デフォルトの名無しさん2014/08/24(日) 13:15:22.09ID:v7AyIdy6
一人で作るのはとても楽なことだから参考にならない。
どんな言語でも一人で作るなら楽ちん。
0342デフォルトの名無しさん2014/08/24(日) 13:34:48.49ID:1q09/hom
> VB6は書くのは楽でも読むのは辛い言語だから
だめじゃんw

書くのなんてむしろどうでもいい。
重要なのは可読性。

なぜなら、書くのは一回で済むし、
コピペすれば、ほぼ書かなくても良くなる。


だけど、修正するときは読まないといけない。
プログラムの開発は読むことのほうが多い。
コピペなんかされたら、読む量が爆発的に増える。
0343デフォルトの名無しさん2014/08/24(日) 14:36:18.19ID:bq22hvMp
ってか、BASICと名の付く言語のほとんどが、可読性わるくね?
0344デフォルトの名無しさん2014/08/24(日) 14:50:06.21ID:Mh11Tb7V
>>342
コピペは流石にやらないけどコード生成はよくやるわ
あれはジェネレータを持ってない人が保守する時に悲惨な目にあうんだよね
0345デフォルトの名無しさん2014/08/24(日) 15:49:33.60ID:1q09/hom
ジェネレーターを使うときはジェネレーターで
生成した部分は触らないのが鉄則。

だから触らないで保守できるような設計に
ジェネレーターはしないといけない。

そうでないと単なるコピペ製造ツールでしかない。
0346デフォルトの名無しさん2014/08/25(月) 08:40:54.94ID:TlKlYY/Z
>>339
お前その4人間以外にも話してるじゃん
0347デフォルトの名無しさん2014/08/26(火) 23:51:14.33ID:PcXdIX47
…あのすいません、VBに限らないんですけど
ネット使えない開発現場ってどうすればいいんでしょうか?
本は買って持っていくつもりですけど

なにかこれだけは持っていけってありますか?
0348デフォルトの名無しさん2014/08/26(火) 23:56:50.81ID:MPqnbV8V
いみがよくわからない
ようするに、調べ物がネットで出来ない、ってはなしか?

言語にしろCPUにしろ、ネットで調べそうな情報は全部落としてきてUSBメモリにでも入れておく
開発している対象の資料も全て入れておく
ネットがつながる環境がピンポイントでもあることにも賭けて携帯端末も詰め込んでいく
電話がかけられるならリモート調べものしてくれる誰かをキープしておく
開発環境の最終アップデートをかけたもののクローンを用意しておく

そんな話?
0349デフォルトの名無しさん2014/08/26(火) 23:58:37.78ID:PukCCIuX
>>347
つらたん。
タブレット持ち込みもダメなの?
0350デフォルトの名無しさん2014/08/26(火) 23:58:42.30ID:MDxBzSYY
いまどきUSBメモリ持込可能な開発現場なんてないだろ・・・
0351デフォルトの名無しさん2014/08/27(水) 00:00:44.68ID:EIqDBw0y
>>348
そんな話です。どうも
USBメモリは使った時点で首で携帯はトイレの中以外は見れなさそうな感じです。

…ネット使えないのはきついけどがんばろう
0352デフォルトの名無しさん2014/08/27(水) 00:04:05.78ID:EIqDBw0y
>>349
タブレットか…
一応聞いてみます。ありがと
0353デフォルトの名無しさん2014/08/27(水) 00:04:26.03ID:ca9UWwTQ
オブジェクトブラウザで耐え凌ぐとか…完全版のMSDNライブラリがインストールされてることを祈るとか…
0354デフォルトの名無しさん2014/08/27(水) 03:37:41.99ID:WVBb8eJH
USBメモリがダメならファイナライズしたCD-RやDVD-Rで持ち込めばいいんじゃね?
0355デフォルトの名無しさん2014/08/27(水) 20:20:32.73ID:SuVMwAIL
ネット使えなくても開発現場なんだから開発に必要なものは全て揃っているはず、
もしもそうでないとすれば、その現場でネットを使えないことが自体が間違っている。
0356デフォルトの名無しさん2014/08/27(水) 21:27:20.07ID:KL0wurV3
>>355
間違ってる現場なんていくらでもあるし
0357デフォルトの名無しさん2014/08/27(水) 21:28:56.39ID:CQz01kqo
ベネッセのせいでますます厳しくなった
0358デフォルトの名無しさん2014/08/27(水) 21:33:50.68ID:SuVMwAIL
>>356
それは管理者が無知だからだ。管理責任から逃れる為に、とにかく遮蔽すれば
いいと考えるような勉強しない管理者の責任だ。
0359デフォルトの名無しさん2014/08/27(水) 21:59:19.67ID:3o0iprUr
>開発に必要なものは全て揃っているはず
残念ながら、ネットに頼らなくてもプログラムできるプログラマーが足りてないんです
だからって管理者がそれを理由にセキュリティ要件は下げられないんですよ
0360デフォルトの名無しさん2014/08/27(水) 22:06:07.48ID:SuVMwAIL
>>359
開発に必要なもの、の中には物やモノや者も入ってる。
者が足りないならプロジェクトリーダーが無能なのだ。
0361デフォルトの名無しさん2014/08/27(水) 22:35:26.66ID:j7X/JcPX
>>358
だから?
誰かの責任にしても、何も解決しないぞよ。
0362デフォルトの名無しさん2014/08/27(水) 22:46:10.32ID:YlHm9xBL
>>361
だからそれが答え。

理想をすべて満たしていることを
前提するやり方では

「解決しない」
0363デフォルトの名無しさん2014/08/27(水) 22:52:01.04ID:YlHm9xBL
問題を解決したいなら、まず問題点を洗い出さないといけない。

・管理者の問題

これも問題点だ。

だから管理者を改善する。これも問題を改善する方法の一つだ。

それが現実的かどうかは後で考える。
いくつか改善策を出して比較する。

まずは問題点を洗い出すことが大事だ。誰かのせいにするって話じゃない。
問題になっているならば、それをしっかり問題点だと認識する必要がある。
0364デフォルトの名無しさん2014/08/27(水) 23:09:02.33ID:j7X/JcPX
>>363
で、どうするんだ? (w
お前の言ってることぐらいは、大抵わかってる。
その先の解がないから困ってるんだよ。
0365デフォルトの名無しさん2014/08/27(水) 23:18:26.66ID:vxFwWuw8
なんかめんどくさい奴きた
0366デフォルトの名無しさん2014/08/27(水) 23:32:31.96ID:YlHm9xBL
>>364
その先は、時と場合によって変わる。
人によっては転職するも答えだろう。
0367デフォルトの名無しさん2014/08/27(水) 23:43:24.95ID:j7X/JcPX
そんな役に立たない回答は要らんわ w
0368デフォルトの名無しさん2014/08/28(木) 16:55:47.48ID:Rc8dG0V2
現実みてないお花畑なやつか
0369デフォルトの名無しさん2014/08/28(木) 17:55:01.85ID:1btoGk/3
いい加減スレ違いだからお前ら失せろ
0370デフォルトの名無しさん2014/08/28(木) 20:01:05.49ID:vUKaTuTG
VBerってプログラミングの能力だけじゃなくて社会人としてのコミュニケーション能力にも
問題があるんだねw

仕事である以上最終的な成果物がすべてなんだから、

「今時プログラミングに必要はすべてが頭に入っている人はいないので、
WEBで調べものをしながらプログラミングするのが常識です。
WEBが使えないと確かにリスクは減るかもしれませんが、申し訳ないですが仕事の効率は
大幅に落ちることになります。それでも構いませんか?」

とか何とか言えば余程のバカじゃなきゃ許可出すだろう。

それでもゴネるなら、だったら開発用とは別に調べもの専用のWEBにつながった
PCを用意してくれとか、いい歳こいてるのにそのぐらいの交渉できなくてどうすんの。
0371デフォルトの名無しさん2014/08/28(木) 20:12:18.83ID:iLZyX0zb
>>370
頭の程度は関係無くケースバイケースだろうが、普通許可でないだろ

想像で言ってる?
0372デフォルトの名無しさん2014/08/28(木) 20:32:05.22ID:j5jqrXPc
今日「VB6のプログラム改造」案件が来たが、
Windows9のプレビュー版出る直前で
どうしようか迷ってる。

Windows9でもVB6で作り上げたEXE動くん?
もちろん綺麗な作法のEXEという前提で何だけど。
0373デフォルトの名無しさん2014/08/28(木) 20:36:10.36ID:MZewrUTr
>>370
そういうのは自分のブログでやってください
そんな事も分からないとは性格だけじゃなくて脳にも
問題があるんだねw
0374デフォルトの名無しさん2014/08/28(木) 20:38:26.98ID:9FDOfLGs
実行ファイルのexe自体は通常は問題はないだろう
問題があるのはそのexeがリンクするライブラリであるdllだ
vb6のランタイムライブラリであるdllがwin9と互換性があれば動くし
外部のライブラリdllを使ってるならそのdllがwin9と互換性があるかが問題だ
0375デフォルトの名無しさん2014/08/28(木) 22:03:21.06ID:XxtALw5X
>>370
あ〜、こんかい来た人なんかごちゃごちゃ言ってて、全然仕事しないから、来週は違う人寄越してちょうだい
0376デフォルトの名無しさん2014/08/29(金) 01:12:40.36ID:b0G4rJJs
ネイティブのdllを逆アセンブルして命令をILにコンバートすればいいよ
0377デフォルトの名無しさん2014/08/29(金) 01:15:42.14ID:mPGtkQT9
それってリバースエンジニアリング?
0378デフォルトの名無しさん2014/08/29(金) 09:24:37.16ID:7qeXFNLD
本当に感心する人って言語を選ばないよな
何ていうかC++だろうがJavaだろうが、後から拡張に対応出来る固い仕様を決めて
何から手を付けてやれば良いか教えてくれた人は、VBでも綺麗に書いてた
0379デフォルトの名無しさん2014/08/29(金) 11:18:15.51ID:9OWc8ATu
言語の違いは同じことを実現するコードが
冗長になるかならないかで設計自体は同じだからね。
0380デフォルトの名無しさん2014/08/29(金) 16:49:56.58ID:VE8AFzLh
ようプログラミングのセンス次第ってことだね
0381デフォルトの名無しさん2014/08/29(金) 22:41:44.23ID:b0G4rJJs
共通のソースから多言語に展開するだけならDOMとプロバイダ書くだけだろ
0382デフォルトの名無しさん2014/08/29(金) 22:51:01.72ID:bImJspDs
何の話だよ
0383デフォルトの名無しさん2014/08/29(金) 23:55:23.74ID:0CK51z3b
ガンダムの話じゃね?
0384デフォルトの名無しさん2014/08/31(日) 00:08:38.41ID:47nYGZE4
ガンダムって
0385デフォルトの名無しさん2014/08/31(日) 09:22:39.47ID:nLlcyFHN
ってなに?
0386デフォルトの名無しさん2014/08/31(日) 09:43:04.39ID:vjR2LjMT
ジークイオンとかいうやつ
0387デフォルトの名無しさん2014/08/31(日) 13:20:22.25ID:Zj24YvpS
いや、スペースハリヤーの話かも…
0388デフォルトの名無しさん2014/08/31(日) 21:03:04.86ID:9hGKJm1M
Windows9で6のIDE動かないかなー
0389デフォルトの名無しさん2014/08/31(日) 21:20:09.85ID:fFHXuzxL
VB6のコンパイラを開発してる会社って無いのかな
ランタイムは仕方ないにしてもコンパイラの需要はあるよね
0390デフォルトの名無しさん2014/08/31(日) 21:53:30.97ID:ORDwa/D0
これからは、というか結構前から並列処理書けないと需要なんて無いでしょ
0391デフォルトの名無しさん2014/08/31(日) 22:46:35.99ID:fFHXuzxL
え?書けるよね並列処理
0392デフォルトの名無しさん2014/09/01(月) 00:40:21.91ID:kbe3TIwP
>>386
なにそのショッピングモールみたいな単語
0393デフォルトの名無しさん2014/09/01(月) 08:20:00.40ID:OKWJdOVr
ActiveX EXE最強
0394デフォルトの名無しさん2014/09/01(月) 13:22:57.70ID:eGAF+UsM
イオンwwwww

並列処理はVB&だけじゃ書けないっしょ?
DLLなりActiveXなりでスレッド起こさないと。
0395デフォルトの名無しさん2014/09/01(月) 13:23:33.24ID:eGAF+UsM
間違った。
VB& → VB6
0396デフォルトの名無しさん2014/09/01(月) 13:26:39.31ID:gfXsuRkr
ありとあらゆるところに、DoEvent って書くのは違うか…
0397デフォルトの名無しさん2014/09/01(月) 14:16:44.93ID:bxrlea0J
DoEventsは役立たずだから、そんな書き方しても無駄
0398デフォルトの名無しさん2014/09/01(月) 14:22:38.29ID:VOxXOeqr
VBでマルチスレッドする唯一の手段はActiveX
0399デフォルトの名無しさん2014/09/01(月) 15:23:17.59ID:EB1be6UG
DoEventはスレッドじゃなく割り込みって感じじゃね
0400デフォルトの名無しさん2014/09/01(月) 15:40:03.29ID:VOxXOeqr
それはさすがにちょっと理解がおかしい。DoEventsはメッセージループが止まっていることにより
溜まっているメッセージを処理する、だから。スレッドとか割り込みとかVBでは関係ない(関係できない)。
0401デフォルトの名無しさん2014/09/01(月) 16:39:24.95ID:tft5m3BW
だから通常のユーザーコードのフローを中断してシステム側のコードが
割り込むんだからイメージとしては割り込みで間違ってないよ。

そのイメージで言うとDoEventsは割り込み許可フラグをONにする感じだね。
0402デフォルトの名無しさん2014/09/01(月) 17:32:26.29ID:eGAF+UsM
まぁVB単体でスレッドは起こせないけどDoEventsとタイマー使えば
それなりに並列処理的な事はできまっせー。
でいんじゃないか?VB6としては。どうしてもスレッドって処理じゃなければ
なんとかなるよ。特にVB6で作る感じの普通のウィンドウアプリなら。
0403デフォルトの名無しさん2014/09/01(月) 18:27:13.01ID:VOxXOeqr
割り込みとか理解してない予感…まぁいいけど。割り込みって言葉を使わずに説明するといいと思うよ
0404デフォルトの名無しさん2014/09/01(月) 18:30:39.99ID:cKxYpRFq
そうだよねー
別に割り込まないよな
0405デフォルトの名無しさん2014/09/01(月) 18:53:13.50ID:gfXsuRkr
めんどくさいな…
Select Caseで毎回1行動したら抜けてくるような処理を書いたタイマーをタスクにしたい分だけ並べてしまえ
0406デフォルトの名無しさん2014/09/01(月) 19:06:26.88ID:RldIr0J2
DoEventsって関数だったんだな、全然知らなかった

mk:@MSITStore:C:\Program%20Files\Microsoft%20Visual%20Studio\MSDN98\98VS\1041\vbenlr98.chm::/html/vafctDoEvents.htm
> DoEvents 関数は、オペレーティング システムに制御を渡します。
> オペレーティング システムがキュー (処理の待ち行列) に入っているイベントの処理を終了し、SendKeys ステートメントのキューに入っているすべてのキー入力が送られるまで制御は戻りません。
>
> DoEvents 関数は、ファイルの検索などで処理が開始された後で、ユーザーがキャンセルできるようにするときに役立ちます。
> 処理の実行が長い場合、処理プログラムで行う方が、タイマーを使ったり、ActiveX コンポーネントにタスクを渡すよりよい方法です。
> 後の場合、アプリケーションから独立させてタスクを続行できます。
> そしてオペレーティング システムでは、マルチタスクと時間分割を利用します。
>
> 注意 イベント プロシージャから一時的な処理が発生するときは、最初に呼び出した処理から制御が戻ってくるまでは、プロシージャがプログラムの別の場所で実行されることがないように注意する必要があります。
> 別の場所で実行された場合、結果は予測できません。
> また、制御をオペレーティング システムに渡している間、他のアプリケーションが、確認できない方法でプロシージャとやり取りを行う可能性があるときは、DoEvents 関数は使わないでください。
0407デフォルトの名無しさん2014/09/01(月) 20:55:09.59ID:2GXB3w06
機械翻訳の日本語は分かりづらいから原文を読ませろ
0408デフォルトの名無しさん2014/09/01(月) 21:40:33.62ID:PwiZVl7X
>>404
いや割り込んでるの。
何がそうだよねーだよ馬鹿じゃないの。
0409デフォルトの名無しさん2014/09/01(月) 21:52:34.37ID:ve16hqx8
どういう動作してんのか分からんし怖いなDoEvents
0410デフォルトの名無しさん2014/09/01(月) 21:53:56.86ID:ve16hqx8
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.application.doevents(v=vs.110).aspx
> Visual Basic 6.0 とは異なり、DoEvents メソッドは、Thread.Sleep メソッドを呼び出しません。

VB6ではThread.Sleepを内部で呼んでるようだな
0411デフォルトの名無しさん2014/09/01(月) 22:50:39.57ID:yIVXYNme
>>409
>>400に書いてあるまんまだよ
知ったところで怖いのには変わりないけどね
0412デフォルトの名無しさん2014/09/02(火) 15:58:47.41ID:EQrkrul9
VB6卒業したい人は次何を使えばしあわせになれるの?
0413デフォルトの名無しさん2014/09/02(火) 16:00:46.13ID:sRn9xhRV
趣味グラマの話?
0414デフォルトの名無しさん2014/09/02(火) 16:08:29.84ID:EQrkrul9
一応仕事としてです。
0415デフォルトの名無しさん2014/09/02(火) 16:10:49.76ID:sRn9xhRV
求人に多い言語を覚えればいいんじゃね
0416デフォルトの名無しさん2014/09/02(火) 16:29:28.76ID:EQrkrul9
出来るだけ覚えなくて済む言語がいいです、.NETと言うやつですかね?
0417デフォルトの名無しさん2014/09/02(火) 16:30:42.78ID:ja7HZQJ9
覚えなくて済む言語は、幸せになれないよ。

なぜなら、覚えることが多い=覚えることで書くことが減る。
覚えることが少ない=自分で書かないといけない部分が多くなる。

だから。

つまり覚えないならば、どんどん君の仕事は大変になるということさ

アハハハハ
0418デフォルトの名無しさん2014/09/02(火) 16:34:21.73ID:wyGNvL2F
>>416
アセンブリ言語
覚える命令語が少ない
0419デフォルトの名無しさん2014/09/02(火) 16:37:09.33ID:sRn9xhRV
VB.NETを覚えるのは他の言語を覚えるのと大差ないんじゃないの
だったら求人で多い言語を覚えるほうが幸せだろ
0420デフォルトの名無しさん2014/09/02(火) 16:51:38.57ID:EQrkrul9
>>418
ワンチップ系なら書けます。

>>419
VB6で作成してきたアプリを新しい言語に移植する作業が優先で仕事量も多く、
言語は指定されていませんので、今まで蓄積したものを出来るだけ活かせる言語が良いのです。
0421デフォルトの名無しさん2014/09/02(火) 17:22:41.00ID:d+KX6FFE
>>420
そういう事ならVB.NETだな。
つってもVB6とVB.NETは見た目が似てるだけで全然違う言語だからな。
VB6から覚えることの量はVB.NETもC#もJavaもそないに変わらんと思うよ。
ただ、見た目が似てる=コピペがしやすって事なんで移植にかかる
時間は短縮は出来るよ。

例えばVB6でこんな処理があったとして、
Dim aaa As Integer
Dim bbb As Integer
〜〜なにか処理〜〜
If aaa = 0 Then
bbb = aaa * 10
End If

VB.NETだと、Integerのサイズが16バイト→32バイトになったのに気つける
ぐらいでコードはそのままコピペでいける。
でもこれを例えばC#で書くと

Int aaa;
Int bbb;
〜〜なにか処理〜〜
If ( aaa == 0 ) {
bbb = aaa * 10;
}

て書かなきゃダメだからめんどくさいね。
0422デフォルトの名無しさん2014/09/02(火) 17:36:27.17ID:EQrkrul9
>>421
丁寧にありがとうございます。
.NETは文法的にはCとVBの中間って感じですね。

VB.NETで検索してみましたがマイクロソフトの製品ページが見つからないのですが、Visualstudioの中に入ってるのでしょうか?

最新のVisualstudioにはC##しか見つからず、何が何やら分からなくて。
0423デフォルトの名無しさん2014/09/02(火) 17:42:16.74ID:8Y7c5T8U
>>422
.NETは言語じゃない
C##なんて言語はしらない

仕事なら何の言語覚えるかは上司に相談しろよ
0424デフォルトの名無しさん2014/09/02(火) 17:49:04.95ID:EQrkrul9
>>423
すいません、Visualstudioだけでいろいろあって何がどんな内容で何を選べばよいのかすら分かりません。
今、一般に流通している最新版はVisualstudio2013のようなので、もう少し調べてからまた質問させてもらいます。
0425デフォルトの名無しさん2014/09/02(火) 17:51:09.99ID:u6fozIjv
>>424
いや最新の開発環境についてなら、このスレで質問してはいけない
0426デフォルトの名無しさん2014/09/02(火) 17:52:37.09ID:sRn9xhRV
VB.NETは別スレ
VisualStudio2013も別スレ

VB.NET質問スレ(Part41)
http://peace.2ch.net/test/read.cgi/tech/1391334405/

Visual Studio 2013 part4
http://peace.2ch.net/test/read.cgi/tech/1404333757/
0427デフォルトの名無しさん2014/09/02(火) 17:54:38.49ID:sRn9xhRV
VB6からならいっそDelphiに移行してしまえばええねん
0428デフォルトの名無しさん2014/09/02(火) 21:08:59.47ID:HussnK53
UIの操作を止めない、という意味ではDoEventsでもなんとかなる。
しかし俺はそんな事しない。
0429デフォルトの名無しさん2014/09/03(水) 03:25:57.05ID:7inNPD4Z
>>427
Delphi高すぎだろw
しかもあんな閉鎖的な言語
誰が使うっていうんだ?
0430デフォルトの名無しさん2014/09/03(水) 03:38:10.20ID:Bk50IRfN
VB6からならVB.NETよりDelphiのほうが覚えやすそうな気がするけど

ttp://www.embarcadero.com/images/jp/dm/products/delphi-xe7-feature-matrix-jp.pdf
ttp://docwiki.embarcadero.com/RADStudio/XE7/ja/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8
0431デフォルトの名無しさん2014/09/03(水) 03:49:32.21ID:7inNPD4Z
Delphiは将来性がないというか
将来どころか、現時点で終わってる言語だから
0432デフォルトの名無しさん2014/09/03(水) 03:53:35.51ID:7inNPD4Z
まず採用している会社がもう殆ど無いし、

価格を見てみると
http://www.seshop.com/special/embarcadero/delphi

これが仕事で使える最低金額

http://www.seshop.com/product/detail/17240/
¥104,000(税抜)
※モバイル開発機能を含まない

モバイル対応するなら更に跳ね上がる。
http://www.seshop.com/product/detail/17242/
¥258,000(税抜)
0433デフォルトの名無しさん2014/09/03(水) 05:33:30.70ID:2ANinLsJ
今日のニュース
http://www.publickey1.jp/blog/14/xe7.html
プラットフォームごとに人人を雇うなら検討できる価格だよな
Visual Studioの高いエディションに比べたら安いし

しかし求められるのは
Compiler Framework使ってVB.NETでVB6コンパイラを作る酔狂なやつだ!
0434デフォルトの名無しさん2014/09/03(水) 06:14:59.42ID:Bk50IRfN
>>431
ネタバレが速すぎるよ!
0435デフォルトの名無しさん2014/09/03(水) 07:41:18.85ID:BZYkohyr
Delphi 6 Personalにはお世話になった
0436Delphi使いだけど2014/09/03(水) 10:39:44.88ID:Ft8KwrwF
VBやめてDelphiとか10年前ならともかく、いままでVBにしがみついてたようなのには無理だろ。
普通に情報量が多くて落とし穴の少ないC#でいいんじゃね?VB.netは言語的にも案件的にも
ダメダメな話しかきかねぇなぁ。
0437デフォルトの名無しさん2014/09/03(水) 11:34:58.60ID:DLAxkqPS
>>436
VB.Netの言語的にダメダメな点について詳しく
0438デフォルトの名無しさん2014/09/03(水) 11:48:29.22ID:bEJrUZ0m
>>436
> VB.netは言語的にも案件的にもダメダメな話しかきかねぇなぁ。

別に言語的にダメダメとは思わない、できることは C# とたいして遜色ないし。
でも、下手に MS が頑張ったお陰で VB6 しかできない子には難しい言語で、C# できる子には敢えて選択する意味のない言語になっちゃったのは否めない。
0439デフォルトの名無しさん2014/09/03(水) 12:36:41.47ID:HsfQcoul
>>437
VB.Netという選択自体がネガティブなものしか含まないから
0440デフォルトの名無しさん2014/09/03(水) 12:40:13.07ID:ekTu9Izi
ダメダメな子でも安心して使える素晴らしいツールなんじゃないの
0441デフォルトの名無しさん2014/09/03(水) 12:50:50.39ID:IC/yewex
前にも書いたけど、2005まではVBもそれなりに使えた。
2008以降はラムダ式の冗長さだけでもVBを捨ててC#にする理由になりうる。
0442デフォルトの名無しさん2014/09/03(水) 12:57:12.69ID:SlDIUC8t
ラムダ式ねぇ、あってもうれしいわけじゃないし、なくても困らないし、そんなものに頼ってちゃいかんよ。
0443デフォルトの名無しさん2014/09/03(水) 13:50:12.14ID:cW5v+eGV
× あってもうれしいわけじゃないし
○ 俺にはメリットが理解できない
0444デフォルトの名無しさん2014/09/03(水) 14:45:34.06ID:SlDIUC8t
>>443
メリットは理解してるけど、そのメリットを享受できる状況に出会ったことがないだけなんだけどね。
0445デフォルトの名無しさん2014/09/03(水) 15:10:53.09ID:cW5v+eGV
×そのメリットを享受できる状況に出会ったことがない
○ラムダ式を使いこなせない
0446デフォルトの名無しさん2014/09/03(水) 15:16:35.22ID:2W0yNF6k
なんだかよくわかりませんが「状況に出会ったことがない」を否定するのに「使いこなせていない」というのであれば
「使いこなせる」ようになれば「状況に出会える」はずであろうし、そういう状況に実際に出くわしているであろうから
それを説明してみてはどうでしょうか
0447デフォルトの名無しさん2014/09/03(水) 15:33:05.33ID:NhBgxM40
川俣大先生がC#2の時点で匿名メソッドを「デザートではなくごはん」って書いてたけど、
もうラムダ式を使わないプログラミングはありえないね。

そのぐらい頻繁かつ当たり前に使う。
今時ラムダ式の必要性が分からないなんて言ってる奴は話にならない。
0448デフォルトの名無しさん2014/09/03(水) 15:34:37.37ID:cW5v+eGV
>>446
それ俺に言ってるの?
ID:SlDIUC8tは、新しいことがもう頭に入らないじじいだろ。多分LINQも理解できないと思う。
「オブジェクト指向なんてあってもうれしいわけじゃないし、なくても困らないし、そんなものに頼ってちゃいかんよ。」
とかいうじじいと同じ。
0449デフォルトの名無しさん2014/09/03(水) 16:26:11.81ID:SlDIUC8t
お相撲さんならオブジェクト四股で解決できる?
0450デフォルトの名無しさん2014/09/08(月) 16:32:47.10ID:ndMr36Oi
10年以上使ってきて
今更ながらctrl+spaceで補完が出ること知った
0451デフォルトの名無しさん2014/09/08(月) 16:35:57.91ID:ndMr36Oi
しかし名前の候補のみで型から優先順位とかつけてくれるわけじゃないのな
補完機能はWin7のマシンに乗り換えてから使い始めたフリーのテキストエディタやEclipseやVS2010で初めて使い始めたが
まさかVB6のIDEにも補完機能があるとは知らなかった
0452デフォルトの名無しさん2014/09/08(月) 16:37:47.94ID:ndMr36Oi
VB6は図書館で借りたりしてたベーマガで覚えたがやっぱあれだけじゃ情報不足だったか
0453デフォルトの名無しさん2014/09/08(月) 16:39:47.78ID:ndMr36Oi
exit functionとかタイプ量多いのも出て欲しいね
0454デフォルトの名無しさん2014/09/08(月) 23:24:28.42ID:WRBqI71e
>>452
VBがMSのIDEで一番最初に自動補完を搭載したらしいよ。

http://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%B3%E3%83%86%E3%83%AA%E3%82%BB%E3%83%B3%E3%82%B9
> インテリセンス (Intellisense) は、Microsoft Visual Studio の統合開発環境で使用されている、マイクロソフトによる自動補完システム。
> インテリセンスが初めて登場したのは、1996年にマイクロソフトの主力製品として
> 販売されたVisual Basic 5.0 Control Creation Edition
> (実質的に公的に入手可能なVisual Basic 5.0のプロトタイプ)の一機能としてである。
0455デフォルトの名無しさん2014/09/09(火) 09:24:32.78ID:bbe6EelQ
おー、ctrl+spaceいいね
0456デフォルトの名無しさん2014/09/14(日) 01:48:26.98ID:kn6kIRd5
VB6マイグレーションはなぜVB.NETがターゲットなのか
見た目似てるだけで完全にミスマッチだよね
0457デフォルトの名無しさん2014/09/14(日) 01:51:34.53ID:hXoVPBM+
VB.NETを使ってみたがビビるほどのもんじゃなかったぞ
VB6と大差ない
0458デフォルトの名無しさん2014/09/14(日) 02:11:08.42ID:6XmDMWYI
こうして.NETらしからぬプログラムが量産されていくのであった
なまじ文法を似せるから悲劇が
0459デフォルトの名無しさん2014/09/14(日) 05:42:23.94ID:a/rqPd2y
>>458
それはツールじゃなくてプログラマの問題だよ。
変換は既存のものを置き換えるだけ。

だからといって人間が変換したのと
同じようなコードを書く必要はない。
0460デフォルトの名無しさん2014/09/15(月) 00:05:32.20ID:NXex5JUX
>>459
自動変換したのを見て457みたいに考えて
変換したのと同じようなコードを書く人が沢山いたんです。
まあJavaから流れてきた人のC#もそんな感じでしたが

文字列関連はVB6を引きずってるVB.NETのほうが便利かも
0461デフォルトの名無しさん2014/09/15(月) 00:22:42.11ID:456ECQ0N
>>460
だから人の問題だろ?
COBOLやってる人がCOBOLのやり方で
他の言語を使うのと一緒。

ある言語を使ってる人が、別の言語を使う時
あれがない〜とかぶつくさ文句言うのも同じ。

言語を変えたら、その言語に適した書き方をできなければ
プログラマとして未熟。
0462デフォルトの名無しさん2014/09/15(月) 01:56:17.33ID:75pLEfoa
VB.NETらしいコードって何だよ
プログラムなんて動けば問題ないだろJK
0463デフォルトの名無しさん2014/09/15(月) 02:41:58.82ID:NXex5JUX
>>461
人の問題だという話は否定していませんよ?
でもあなたのような優秀な人ばかりで構成できるわけではないので・・・

移行先にC#を選択したプロジェクトは
プログラマが頭をリフレッシュして
VB6でやりきれなかったオブジェクト指向的なコーディングとか
.NET Frameworkを活用方法を模索してたりしてたのに
VBチームはちょろいちょろいといった感じで
VB6っぽいコードが量産されていたので
言語自体が罪作りだなと思った次第です。
0464デフォルトの名無しさん2014/09/15(月) 02:59:02.12ID:EwZbtX7u
VB.NETはC#的な要素を排除して純粋VB6を目指してほしいわ
0465デフォルトの名無しさん2014/09/15(月) 03:02:23.54ID:nXJl5BwU
VB6.NETというのを作ればいいんじゃね
0466デフォルトの名無しさん2014/09/15(月) 04:58:28.77ID:9UWhhSIJ
>>462
書き込み内容がわざとらしいんだよw
0467デフォルトの名無しさん2014/09/15(月) 10:22:20.26ID:hyfdWrFD
いいアイデアですね
真面目な新規開発はC#に任せて
VB.NETはとにかくVB6ソースに手を付けずにCLRで動かすことだけを目指す
違う言語で同じ地点を目指すよりも生産的だと思います
0468デフォルトの名無しさん2014/09/15(月) 21:36:10.33ID:4G6KibiI
VB廃止でいいだろ、誰も困らないから。
0469デフォルトの名無しさん2014/09/15(月) 21:39:57.84ID:9UWhhSIJ
なら別にあったっていいだろw
0470デフォルトの名無しさん2014/09/15(月) 21:48:01.75ID:umAHCw7w
VBRun60sp6.exe による Visual Basic 6.0 SP6 ランタイム ファイルのインストール
http://support.microsoft.com/kb/290887/ja


このページ見て Msvbvm60.dll ってファイル名を見て思った

このファイル名に含まれる vm の文字からして vb6 って仮想マシンなん?
0471デフォルトの名無しさん2014/09/15(月) 21:58:49.52ID:umAHCw7w
impdef.exeでMsvbvm60.dllとVBRJP200.DLLの2つの中身を見てみたけど
どっちも酷いな
0472デフォルトの名無しさん2014/09/15(月) 21:59:42.20ID:9UWhhSIJ
酷い理由は言わないけど?
0473デフォルトの名無しさん2014/09/15(月) 22:12:38.75ID:umAHCw7w
Msvbvm60.dllは大量の関数が定義されてるがVB6で使われるあれやこれが大量に並んでる何でもかんでもライブラリに丸投げ
VBRJP200.DLLは関数がたったの3つしかなくブラックボックスすぎる
0474デフォルトの名無しさん2014/09/15(月) 22:58:51.47ID:bnu8+dqq
JPのほうは言語リソースとかじゃね?

VB6が本来中間言語インタプリタだなんてすげー今更なんだが >>470
0475デフォルトの名無しさん2014/09/15(月) 22:59:04.67ID:lVCjgFoQ
後者はresource Japanese、多分言語パックだろう
0476デフォルトの名無しさん2014/09/15(月) 23:03:37.90ID:umAHCw7w
VBRUN200.DLLもVBRJP200.DLLと同じ関数しかないぞ
0477デフォルトの名無しさん2014/09/16(火) 00:25:10.11ID:fJmUlCeF
そりゃそうだろう
違ってる方が問題だわ
0478デフォルトの名無しさん2014/09/16(火) 00:36:24.03ID:WIo7pizT
9月はまだ夏休みの大学生とかがうろちょろしてるからな
どこのスレも変なのが沸いてて賑やかだわ
0479デフォルトの名無しさん2014/09/16(火) 00:58:52.62ID:zuELja3f
まったく酷いな
0480デフォルトの名無しさん2014/09/16(火) 04:09:03.47ID:1lKEIB+1
>>473
何が悪いのかさっぱりだけど?
0481デフォルトの名無しさん2014/09/17(水) 02:26:12.21ID:BHi/gzqm
RoslynをforkすればVB6.NETが作れるんじゃね?
0482デフォルトの名無しさん2014/09/17(水) 02:30:43.34ID:BHi/gzqm
.NET Compiler Platform ("Roslyn") - Rosyln for VB6 :)
https://roslyn.codeplex.com/discussions/545889

なんかダメぽいか?
0483デフォルトの名無しさん2014/09/17(水) 05:28:21.56ID:ht3+hczy
VB6ソースコードからVB.NETソースコードへのトランスレータ
 メリット
  ソースコードがそのまま使える
  最新の.NET Frameworkのバージョンも使える
 デメリット
  デバッグ等が大変


VB6ソースコードから.NET Frameworkのアセンブリを生成するコンパイラ
 メリット
  ソースコードがそのまま使える
 デメリット
  最新の.NET Frameworkのバージョンが出るたびにコンパイラを作る必要が出る


Msvbvm60.dllなどのVB6まわりのランタイムを最新のWindowsに合わせて再設計する
 メリット
  ソースコードがそのまま使える
  VB6のIDEがそのまま使える
  既存のVB6製アプリでも再コンパイルなしで使えるものも一部ある
 デメリット
  最新のWindowsのバージョンの仕様が変わるたびにライブラリ群を再設計する必要が出る
  リバースエンジニアリングに相当するので特許などの権利問題を孕む
0484デフォルトの名無しさん2014/09/17(水) 22:34:08.41ID:5ucMq7Sk
2はどの.NET言語でも一緒だし
3はインターフェースだけ従来型DLLで実装はGACで済ませられるんじゃないかな
0485デフォルトの名無しさん2014/09/17(水) 22:39:30.04ID:q0kO1DWi
文法を100%互換にしたからって100%同じ動作をするわけではないわけで
欲しいのはどっちですか?
0486デフォルトの名無しさん2014/09/18(木) 09:15:40.56ID:sZppIs7G
VB6SP6のランタイムで開発してて
Win7付属のランタイムで動かないことが結構あるから、
結局Vectorとかからランタイム落としてWin7に入れて使ってる。

Win9でもそれじゃだめなん?
0487デフォルトの名無しさん2014/09/18(木) 12:29:38.72ID:0+D2RILR
>>485
今のソースが 100% 同じ動作して、かつモダンな機能が欲しい
0488デフォルトの名無しさん2014/09/18(木) 22:47:03.03ID:/ELRlOd5
死児の齢を数える、という言葉がぴったりなスレだな…
0489デフォルトの名無しさん2014/09/19(金) 00:32:29.94ID:DgH9TdfU
猫たたきつけた疑いで男逮捕 大量死の関与認める 東京

東京都大田区で猫を路面にたたきつけたとして、警視庁は18日、大田区蒲田1丁目、
プログラマー久保木信也容疑者(33)を動物愛護法違反(愛護動物の殺傷)の疑いで
逮捕し、発表した。

久保木信也
http://yumeijin2ch.wpblog.jp/archives/2189
0490デフォルトの名無しさん2014/09/19(金) 00:37:29.06ID:7/VKQkFn
いや、まだ息してるんだよ
下手すると、成長しようとしてるし w
0491デフォルトの名無しさん2014/09/19(金) 02:10:47.58ID:/lOvQPWO
たたきつけたねこが!?
0492デフォルトの名無しさん2014/09/23(火) 22:38:10.04ID:E1TnEKDY
>>465
とりあえず、引数付きコンストラクタは実現してほしい。
0493デフォルトの名無しさん2014/09/23(火) 22:43:40.55ID:dVimYuzk
VB6の拡張構文の新VBが出てほしいってことか
拡張に拡張を重ねて悲惨になってるJava8のようにならなければよいが
0494デフォルトの名無しさん2014/09/23(火) 23:05:48.86ID:6vsu33Us
また貼っておくか。
VB.NETやC#を否定してVB6に固執する人間ほど、実はVB6も使いこなせてない。

http://blogs.wankuma.com/jeanne/archive/2006/08/02/34597.aspx
0495デフォルトの名無しさん2014/09/23(火) 23:21:45.78ID:7K2DfiJm
非プログラマが言語を使いこなすのに時間を割く必要なく
適当にやってそれっぽいものが手軽に作れるのがVB6の利点なのに
0496デフォルトの名無しさん2014/09/23(火) 23:37:06.03ID:E1TnEKDY
>>494
他言語のスレと比較すると、割りと低レベルなのが
VB6スレなので、そのサイトの言う事には納得できる。
0497デフォルトの名無しさん2014/09/23(火) 23:55:35.97ID:dVimYuzk
個人的にはVB.NETにはBASICを名乗ってほしくないが
VB.NETのどこら辺がBASICの信念を体言しているというのか
0498デフォルトの名無しさん2014/09/24(水) 01:42:43.60ID:AqYGB0E4
>>497
書くスタイルだけじゃね?
0499デフォルトの名無しさん2014/09/24(水) 02:53:02.82ID:qrkn/DsC
BASICの信念とはなんぞや
0500デフォルトの名無しさん2014/09/24(水) 03:28:15.99ID:F0aTw2Ip
さあ?
0501デフォルトの名無しさん2014/09/24(水) 07:14:30.84ID:fN76t18K
>>499
素人にも簡単に組める。
0502デフォルトの名無しさん2014/09/24(水) 08:47:39.81ID:X4p6+nxl
>>494
また VB6 のクラス使える俺スゲー君かよ
いい加減、こいつらも滅べばいいのに
0503u2014/09/24(水) 11:51:42.67ID:Znpi/jan
(CNN 川越信隆) 米航空宇宙局(NASA)は、
光速を超えて宇宙空間を移動する「ワープ航法」の性能をもった宇宙船の設計画像を公開した。
ワープ航法を実現する宇宙船の研究は、NASAの先端推進技術研究チームを率いる物理学者のハロルド・ホワイト氏が
2010年から取り組んできた。
イメージ図は同氏の設計をもとに、アーティストのマーク・レドメーカー氏が制作した。
制作には1600時間以上を要したという。ホワイト氏はSF映画「スター・トレック」に登場する宇宙船にちなんで、
この宇宙船を「IXSエンタープライズ」と命名。
同船の設計も、1965年に描かれたスター・トレックのスケッチを参考にしている。

ホワイト氏は昨年11月に米アリゾナ州フェニックスで開かれた宇宙カンファレンスで、
この宇宙船のデザインやコンセプト、進捗状況を発表していた。
同氏によると、「宇宙ワープ」は一般相対性理論に出てくる抜け穴の法則を利用して宇宙空間を歪曲させ、
何千年もかかって到達するような超長距離を数日で移動できる航法。
この航法を採用すれば光速を超えられるようになり、速度に制限はなくなる。
0504デフォルトの名無しさん2014/09/24(水) 12:51:53.85ID:ykwtiBTN
えらい古いニュースがきたな
なんだこれ
0505デフォルトの名無しさん2014/09/24(水) 14:14:28.96ID:qzC/IE+H
プログラム趣味レベル1年なんですがjavaでandroidなどをいじってるぐらいで
Cもそこそこ低レベルでつかえてるとき
VBって覚えるのどのくらいかかるものなんですか?動かし方覚えるのに1ヶ月ぐらいですか?
0506デフォルトの名無しさん2014/09/24(水) 14:22:53.24ID:ykwtiBTN
Cが出来るなら、コードはそのまま、書き方の置き換えだけで書けると思うが
それより


いまさらVB6覚える気か?
0507デフォルトの名無しさん2014/09/24(水) 14:36:30.62ID:qzC/IE+H
>>506
ありがとう。VB6かなにかはしりませんが
VBってかいてあるんで覚えさせられるみたいでどんなものか聞いてみたんです
0508デフォルトの名無しさん2014/09/24(水) 14:55:37.10ID:ykwtiBTN
VB6と、いまどきのVB(.NET)は、まあ別物だとおもったほうがいい
そしてここはVB6のスレなので、VB6しか話にあがらない
0509デフォルトの名無しさん2014/09/24(水) 15:21:51.41ID:F0aTw2Ip
今さら20年以上昔の開発言語であるVB6のコンパイラを入手とか中古ショップでン十万と払わんと無理だろ
毎年ン万円かかるMSDNのサブスクリプションとかに登録するんか?w
0510デフォルトの名無しさん2014/09/24(水) 16:13:58.82ID:qzC/IE+H
>>508
移動しますありがとう
0511デフォルトの名無しさん2014/09/24(水) 16:15:53.19ID:HYHBSSFj
>>506
C++ならともかく、オブジェクト指向の機能がない
C言語にVB6のオブジェクト指向機能を実装するのは
単なる書き方の置き換えだけじゃ無理で、
大変な作業になると思うが。
0512デフォルトの名無しさん2014/09/24(水) 18:40:08.78ID:4awcA0eB
>>509
Win95ですらまだ20年経ってないだろいい加減なこと言うな
0513デフォルトの名無しさん2014/09/24(水) 20:49:55.62ID:ALc3yB5o
>>509
MSDN 使ったことないのか?
15万ちょい払ってダウンロードすれば、その後ずっと使えるぞ。
まあ、さすがに VB6 だけだともったいないけど、評価用の OS とかもいるだろうし、真面目に開発するなら全然高くないだろ。
0514デフォルトの名無しさん2014/09/24(水) 22:54:14.16ID:1vKhut4O
VB6.0で、[クエリー(U)]と[ダイアグラム(T)]のメニューをまだ一度も使ったことがない。
本にその説明を見たことがない。上級者向けの本には書いてるんだろうか。
MSDNライブラリは、どこを探したら載ってるんだろうか。
[クエリー(U)]は、Microsoft Accessみたいなことができるんだろうか。
[ダイアグラム(T)]は何だろうな、謎だ。
0515デフォルトの名無しさん2014/09/24(水) 23:09:40.85ID:/xh9mRDC
>>514
> [ダイアグラム(T)]は何だろうな、謎だ。

クエリーから類推して、データベースデザイナーかな
https://www.microsoft.com/japan/msdn/vs_previous/vbasic/prodinfo/guide6.0/revguide1.htm
0516デフォルトの名無しさん2014/09/25(木) 00:12:17.06ID:AMI6+bxR
>>514-515

VB 6.0 enterprise "DIAGRAM MENU"
http://www.experts-exchange.com/Programming/Languages/Visual_Basic/Q_10098162.html
0517デフォルトの名無しさん2014/09/25(木) 00:21:53.11ID:AMI6+bxR
mk:@MSITStore:C:\Program%20Files\Microsoft%20Visual%20Studio\MSDN98\98VS\1041\vdbref.chm::/html/dvconintroducingmicrosoftvisualdatabasetools.htm
mk:@MSITStore:C:\Program%20Files\Microsoft%20Visual%20Studio\MSDN98\98VS\1041\vb98.chm::/html/vamnuquerymenu.htm
mk:@MSITStore:C:\Program%20Files\Microsoft%20Visual%20Studio\MSDN98\98VS\1041\vb98.chm::/html/vamnudiagrammenu.htm

Microsoft Visual Database Toolsで
クエリはQuery Designer
ダイアグラムはDatabase Designer
0518デフォルトの名無しさん2014/09/25(木) 00:23:58.77ID:AMI6+bxR
Visual Basic におけるデータ アクセス ツール
mk:@MSITStore:C:\Program%20Files\Microsoft%20Visual%20Studio\MSDN98\98VS\1041\vbcon98.chm::/Html/vbcondataaccesstoolsinvisualbasic.htm

ここでも嫁
0519デフォルトの名無しさん2014/09/30(火) 08:19:35.84ID:IGuhwPxZ
リビジョンのオートインクリメントって需要あったの?
0520デフォルトの名無しさん2014/09/30(火) 08:44:43.20ID:PXu0tCTn
>>519
あったんじゃね?
どっちの実行ファイルが新しいかがわかるし
0521デフォルトの名無しさん2014/09/30(火) 10:43:11.46ID:E9fBcYL0
俺は多用してたよ。
メジャー:大きな機能変更、追加
マイナー:細かい機能追加等
で、リビジョンを自動更新にしてビルド番号っぽくしてる。
バグフィックスとかで機能は変わらずのときはバージョンあげずにこれだけ。

ビルド後にプロジェクトファイルが変更されてセーブしないとダメなのがちょっと気持ち悪かったけどな。
便利に使ってた。

むしろ今の.NETの自動でつくビルド番号、リビジョン番号のが俺的には使いにくいわ。
同一バージョン内で単にビルド毎にインクリメントでいいんだがなぁ。
日付と時間からやたら長いの作ってきやがる・・・・
0522デフォルトの名無しさん2014/09/30(火) 11:04:57.34ID:5/SceaQq
>>521
いつも開発はひとりでやってたの?
0523デフォルトの名無しさん2014/09/30(火) 13:37:38.65ID:E9fBcYL0
コーディング自体は1人が多かったよ。
小さなソフトハウスだったし、何億どころか何千万ってな案件もほぼ無かったし。
1つの開発に、多くても3〜4人てとこ。
しかも、そんなときはVC++でDLLとかOCX作ってそれをVB6から
コールとかなんでVB自体の開発は多くても2人やったなー
で、どっちかがメインで作ってもう一人はbasやclsやfrmやら
を作ってファイル単位でマージする感じ。
VB6のプロジェクトグループだっけ?今でいうソリューションみたいなの、
あれすら使ったの1回しかないなw

まぁ、こんなのも結構あるんですよ。
0524デフォルトの名無しさん2014/09/30(火) 15:21:43.01ID:Z5PEBKaZ
小規模のシステムだったら、ひとりで十分だよね ってか、ある程度の規模になったら、VBを使わないような…
0525デフォルトの名無しさん2014/09/30(火) 18:55:19.08ID:nAT9rUaW
大規模システムでも、保守員が使う設定画面とか、ちょっとしたツール類を VB でやることは結構あったな
0526デフォルトの名無しさん2014/10/01(水) 01:44:11.47ID:a/0Pjuck
大規模なVB6ソリューションを見たが悪夢だった
酷すぎて逆に良く最期まで完成させたなと感心したよ
0527デフォルトの名無しさん2014/10/01(水) 02:23:46.56ID:YvLL/kbZ
1996〜2003年頃まででWindows GUIでの
大規模ソリューションの選択肢が無かったからなあ
Javaは遅い上に見た目がアレだし
MFCやDelphiは頭数揃えられないし

ASP.NETのWebFormsってVB6の志を引き継いでる感じだけど
これまた大規模になると最初から考えて作らないと
VB6と同じような破綻をするのよね
0528デフォルトの名無しさん2014/10/01(水) 08:08:39.42ID:qVIX9n5L
Form2のグローバル変数ってForm2をアンロードしても保持されてるんだ
知らなかったよぅ
てか、それって変な仕様だな
0529デフォルトの名無しさん2014/10/01(水) 08:14:54.14ID:stP8SGwi
Form1とかForm2とかはゾンビ変数だよ
0530デフォルトの名無しさん2014/10/01(水) 11:26:54.61ID:OJSGbkdS
>>528
フムフムヌクヌクアプアアみたいな奴だな
0531デフォルトの名無しさん2014/10/01(水) 13:44:00.46ID:vFIUPSKe
>>528
ほんとだ、知らなかった
Unload Form2しても消えないね
Set Form2 = Nothing
するとインスタンスへの参照が消えるみたいだから新規インスタンスになるけど

Private mForm2 As Form2のモジュール変数にしても同じ挙動だね
Unload mForm2してもmForm2の中身を参照できる

このUnloadがC言語のfreeと同じ挙動なら怖いけどw
0532デフォルトの名無しさん2014/10/01(水) 18:16:51.44ID:jDBNgZ7s
そりゃLoad/UnLoadの効果範囲はOSに対しWindowとして振る舞う部分だからなぁ
0533デフォルトの名無しさん2014/10/01(水) 18:22:36.27ID:2NEK614A
mk:@MSITStore:C:\Program%20Files\Microsoft%20Visual%20Studio\MSDN98\98VS\1041\vb98.chm::/html/vbstmUnload.htm

> メモ フォームをメモリからアンロードするときには、表示されている構成要素だけがアンロードされ、そのフォーム モジュールのコードはメモリに保持されます。

仕様か
0534デフォルトの名無しさん2014/10/01(水) 18:46:03.00ID:iilx0lFQ
生成もしていないフォームのインスタンスが使えたり
FormのLoad,Unloadとインスタンスの寿命が一致してないのは
VBがオブジェクト指向になる前からの仕様との互換性のため
0535デフォルトの名無しさん2014/10/01(水) 18:55:34.09ID:uMhCuCfs
>>528, 531
Unloadしてもインスタンスは消えないからなー
変じゃないし普通の仕様と思うが。

LoadとNewがごっちゃになってない?

Load/Unloadはあくまでフォーム画面のLoad/Unloadだよ。
インスタンス自体はNewで出来るし、Nothingをセットした時点で消える。
なのでUnloadでUnloadイベントはコールされてもTerminateイベントはコールされない。

Dim fff As Form2
Set fff = New Form2 ←Initializeイベント発生
Load fff ←Loadイベント発生
fff.Caption = "タイトル"
Unload fff ←QueryUnload, Unloadイベント発生
Set fff = Nothing ←Terminateイベント発生
fff.Caption = "タイトル"←例外エラー発生

とちゃんとなってる。
そしてVBの仕様でフォームインスタンスの何らかのメンバに最初にアクセス
した時点で勝手にLoadイベントはコールされるんで
Load fff しなくても
fff.Caption = "タイトル" だけでOK。ここの時Loadイベントが発生する。

因みにNew付きで宣言した場合は、最初にメンバにアクセスされた時点でインスタンスが
作成されるので
Dim fff As New Form2 ←ここでは実はまだインスタンスなし(当然Initializeイベントは発生しない)
fff.Caption = "タイトル" ←ここでInitializeイベント、Loadイベント順次発生
となる。

(続く)
0536デフォルトの名無しさん2014/10/01(水) 18:56:21.21ID:uMhCuCfs
面白いのが、その後
Set fff = Nothing
として一旦インスタンス消しても(上記でちゃんとTerminateイベント発生も発生する)最初の宣言が
New付きなので、もう一回
fff.Caption = "タイトル" としても例外発生しない

因みにForm2をそのまま使う暗黙のインスタンスはVBが見えないところで
Public Form2 As New Form2
って宣言してあると思えばわかりやすいと思う。同じ挙動するからね。
でも宣言してもコンパイルエラーにはならないだよねぇ

で、もっと面白いのが
Public Form3 As New Form2
ってモジュールに宣言しておいて
Form3.Caption = "タイトル"
ってやると、Form2のLoadイベントが発生するんだけど、ここでプロジェクトにForm3追加してから実行すると
Form3の方のイベントが発生する。
どうも暗黙のインスタンスの方が優先されるみたい。

これは混乱するのでコンパイルエラーにしておいて欲しかったなかと思う。
0537デフォルトの名無しさん2014/10/01(水) 20:28:04.39ID:ZN685rzJ
Formのロードイベントには、とりあえず

Set FormXX = Nothing

を入れて使ってます。

既定のインスタンスなんてイラネ。
0538デフォルトの名無しさん2014/10/02(木) 01:36:58.46ID:N8qwuwR/
このあたりの仕様は最悪だよ
.NETに移植するときすごい困る
0539デフォルトの名無しさん2014/10/02(木) 01:46:29.84ID:WuAtB8Kn
お前らってForm1とかForm2の名前のままで使ってんの?
0540デフォルトの名無しさん2014/10/02(木) 01:48:19.15ID:N8qwuwR/
使ってるソースをいやいやメンテすることはよくある
0541デフォルトの名無しさん2014/10/02(木) 08:19:54.53ID:4FoM01T7
As Newで宣言されてる変数にNothingいれたあとに
気が付かないで、その変数経由でメンバにアクセスしちゃうと
暗黙にインスタンスが生成されるからバグの元になるよ
0542デフォルトの名無しさん2014/10/03(金) 01:35:53.67ID:dtryJyjm
As New は使わない。
0543デフォルトの名無しさん2014/10/03(金) 09:05:29.86ID:VEe5IQwr
別に使おうが使うまいがどうでもいいが、使うなら使い方をちゃんとしろってことだよ。
そもそも As New した変数に Nothing なんかしない。
0544デフォルトの名無しさん2014/10/03(金) 19:55:44.07ID:dtryJyjm
他言語でAs Newみたいな仕様ないっしょ。
勝手に新しいインスタンス生成されるような。
だから使わない。
0545デフォルトの名無しさん2014/10/03(金) 21:46:39.24ID:aPfbIogc
N88BASICとかだと
DIMで宣言してない変数でも配列として使えるんじゃなかったっけ
それと似たようなもんじゃね
0546デフォルトの名無しさん2014/10/05(日) 12:23:21.81ID:1TdRqStN
低レベルな質問していい?
0547デフォルトの名無しさん2014/10/05(日) 14:17:28.69ID:XEFXDXfI
大丈夫ではありますん
0548デフォルトの名無しさん2014/10/05(日) 17:53:33.36ID:BWhErrhC
シングルスレッドのくせにモードレスダイアログが機能するのは何故?
0549デフォルトの名無しさん2014/10/05(日) 18:00:54.07ID:TPVUn8gD
メッセージを配ってるから
0550デフォルトの名無しさん2014/10/05(日) 18:05:42.22ID:BWhErrhC
>>549
よくわかりません
0551デフォルトの名無しさん2014/10/05(日) 18:09:38.59ID:TPVUn8gD
イベント駆動型
0552デフォルトの名無しさん2014/10/05(日) 18:12:43.76ID:BWhErrhC
ユーザコードがスレッドを占有しているのでモードレスで開いたUIは固まるのでは?
メッセージループが別スレに作られるということでしょうか?
0553デフォルトの名無しさん2014/10/05(日) 18:15:53.76ID:F+6s6Cvz
>>548
VBを使って書かれたプログラムがシングルスレッドになる
(正確に言うとマルチスレッドの機能がない)だけで
VBのライブラリ自体はマルチスレッドを使ってる。
0554デフォルトの名無しさん2014/10/05(日) 20:26:26.19ID:+wiNjh9s
Form2で暴走すると普通にForm1が止まったぞ

'Form1.frm
Private Sub Command1_Click()
Dim mform As Form2
Set mform = New Form2
mform.Show vbModeless
Set mform = Nothing
End Sub
Private Sub Timer1_Timer()
Label1.Caption = Now
End Sub

'Form2.frm
Private Sub Command1_Click()
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
Timer1.Enabled = False
Do
Loop
End Sub
0555デフォルトの名無しさん2014/10/05(日) 20:30:26.61ID:1TdRqStN
マルチウインドウ=マルチタスクではありません
ということです
0556デフォルトの名無しさん2014/10/05(日) 20:31:41.84ID:k8RC2dHp
>>548
そのスレッドを分け合って使うから

>>552
ホントにユーザコードが(UI)スレッドを占有してたらUIは固まるぞ
Form2.Show vbModeless
Do
Loop
見たいなコード実行してみろ
0557デフォルトの名無しさん2014/10/05(日) 20:39:04.46ID:k8RC2dHp
>>555
そしてマルチタスク=マルチスレッドって事でもないがな
どっちにしろシングルコアのCPUなら、一度に実行できるスレッドは一つしかないし
0558デフォルトの名無しさん2014/10/05(日) 20:40:26.49ID:BWhErrhC
つまりシングルスレッドでも常にマルチスレッドのようにリソースの競合を考慮したコードを書く必要があるのですか?
0559デフォルトの名無しさん2014/10/05(日) 21:17:05.86ID:k8RC2dHp
リソースの競合って範囲の広い概念だからなぁ
マルチスレッドに特有な競合はないかもしれんが
DoEventsとか使うと思わぬ再入したりするからな
0560デフォルトの名無しさん2014/10/05(日) 21:45:19.95ID:1TdRqStN
マルチウインドウ=マルチスレッドではありません
に訂正
0561デフォルトの名無しさん2014/10/06(月) 08:19:10.61ID:biGlCJQs
Form1_Loadを抜けたらどこに行くのか考えてみれ
0562デフォルトの名無しさん2014/10/06(月) 15:27:17.75ID:f7RfeMbE
Win32アプリはWinMain関数が呼ばれて
起動されたアプリは延々とGetMessageでシステムからのウィンドウメッセージ待ちをし
ウィンドウメッセージが来たらDispatchMessageでシステム経由でウィンドウプロシージャを呼んでもらう

VB6でやってる部分はウィンドウプロシージャから
イベント用のメソッドを呼び出されているのでは?
0563デフォルトの名無しさん2014/10/06(月) 19:36:33.55ID:kmT79uZZ
ディスパッチがわからん
自分でウィンドウプロシージャ呼ぶようになってない理由ってなに?
0564デフォルトの名無しさん2014/10/06(月) 21:31:17.08ID:5SQO2Mek
コーディングの量を減らしてあげようっていうWindowsさんの気遣いとかじゃね
0565デフォルトの名無しさん2014/10/06(月) 23:19:15.26ID:t5McZ28d
>>563みたいなバカに限ってウィンドウのサブクラスやメッセージフックをやりたがる。
0566デフォルトの名無しさん2014/10/07(火) 00:33:51.72ID:o6+LdOX4
Aの処理
コマンドクリック→モードレスでBを開く→データベースに書き込む長い処理

Bの処理
ロード→データベースから読みとる処理

例えばこのような場合はデータのロックが必要ですか?
0567デフォルトの名無しさん2014/10/07(火) 01:13:51.52ID:IX2gnXHv
>>565
いきなりバカ呼ばわりとか心が貧しい奴だな
0568デフォルトの名無しさん2014/10/07(火) 06:01:51.29ID:G0Zenyqi
VB6って物凄く古い印象が有るんですが、最新のVB.NET使わない理由を教えて下さい。VB6でしか出来ない事が有るのですか?
0569デフォルトの名無しさん2014/10/07(火) 09:26:00.01ID:nsjijZQf
使うなってクライアントに言われたからに決まってんだろ?
馬鹿なの?死ぬの?
0570デフォルトの名無しさん2014/10/07(火) 10:43:32.29ID:pP8u07NL
VB.NET は VB6に似せて作った別言語であって最新とかバージョンアップとかそういうものではない
0571デフォルトの名無しさん2014/10/07(火) 10:52:00.07ID:P3MEEBPn
新規の開発で使うことはないだろうけど
保守のお仕事はあるよ
0572デフォルトの名無しさん2014/10/07(火) 15:14:08.23ID:83CrqE+A
>>566
データの整合性をとるために、ロックなどはDBが行う

テーブルに書き込むと、テーブル全体がロックされる
オラクルなどでは、テーブル全体をロックせず、
書き込むその行だけをロックできる(行ロック)らしい。
よく知らんけど

とにかくプログラムには関係ない
DBの設定で行う
一番厳しい設定にすると、整合性が守られる
ゆるくすると、ファントム(幽霊)などが生じるw

初歩のDBの本を読めば?
0573デフォルトの名無しさん2014/10/08(水) 23:00:13.69ID:BHJ/W60V
Windows10でもvb6動くらしいぞ!
どーするよ…
0574デフォルトの名無しさん2014/10/08(水) 23:09:41.39ID:qFpb2VAv
そういえばwindows9で古いアプリが誤作動するらしいぞ
windows95と98の判定にwindows9までで判定してるのが原因らしい
0575デフォルトの名無しさん2014/10/08(水) 23:32:59.39ID:AQUIEjPo
などと意味不明な供述をしており
0576デフォルトの名無しさん2014/10/09(木) 00:20:05.46ID:IUUlD58Q
Windows8.1にVB6をインストールしたぜいやっはー… あんがい動くんだな…
0577デフォルトの名無しさん2014/10/09(木) 20:00:42.60ID:ewqqMbYf
非標準のコントロールを使わずにAPIでやってきたのは正解だった
0578デフォルトの名無しさん2014/10/11(土) 13:31:12.03ID:spVRUbvr
http://software.harikonotora.net/img/735-52.jpg
水平スクロールバーに2つのピクチャを乗せてるのだけど
スクロールバーのWidthを例えば132ピクセルにすると
両端のボタン部の幅がそれぞれ16ピクセルだから可動部は100ピクセル
例えば、スクロールバーのMinとMaxをそれぞれ0にすると
Valueは0しかありえなくてツマミ部の幅は100ピクセル
Min=0とMax=1にすればツマミ部は50ピクセル
つまり、ツマミ部の幅は100/(Max-Min+1)(但し8以上)で計算できる
これはLargeChange=1の場合で、LargeChangeを大きくするとツマミ部の幅も大きくなる
そこが謎
0579デフォルトの名無しさん2014/10/11(土) 15:22:03.60ID:aOjCrPms
ツマミの幅=(Max - Min) / LargeChange
0580デフォルトの名無しさん2014/10/13(月) 20:27:06.15ID:rP8n9z06
>>573
動いてくれないと、作り直しするの面倒くさい
すでに退職したオッサンの遺物だから、誰も仕様分からんし
0581デフォルトの名無しさん2014/10/14(火) 00:55:28.54ID:H4CFmhAR
仕様書 無し
可読性 皆無
関係者 行方不明
残業代 プライスレス
0582デフォルトの名無しさん2014/10/24(金) 00:00:53.52ID:h6ZlNKq3
http://www.forest.impress.co.jp/docs/news/20141022_672480.html
これってVB6関係ある?
0583デフォルトの名無しさん2014/11/01(土) 06:24:44.35ID:/9f2fySD
> VB6レガシーシステムのiPad/Android対応はどこまでできる?

なんじゃこりゃ?
0584デフォルトの名無しさん2014/11/08(土) 01:38:56.38ID:KezNyf+q
VB上でエクセルシートの編集は可能でしょうか
VBEがあればできるのは知ってるのですがなにぶんないものでして。
ヴィジュアルスツーディオ2013ならあるのでそれで編集したいのですが
なんとかなりませんか?
0585デフォルトの名無しさん2014/11/08(土) 02:11:19.97ID:v0SFyh4V
>>584
スレチ

Visual Studio 2013 SP5?2ch.net
http://peace.2ch.net/test/read.cgi/tech/1414715288/
0586デフォルトの名無しさん2014/11/09(日) 22:40:22.12ID:A8ReNo8X
>>584
ネットで検索すりゃサンプルソースとかジャンジャン出てくるぞ
0587デフォルトの名無しさん2014/12/20(土) 01:15:29.68ID:+gk1gAeU
このスレでは似つかわしくない話題だが、どうにも疑問がある。
どうして、.NET frameworkのCIL
コードを出力するVB6.0のコンパイラが出てこないんだろう?
0588デフォルトの名無しさん2014/12/20(土) 06:22:38.07ID:BUfsBh8W
>>587
発売された年代の違い
0589デフォルトの名無しさん2014/12/20(土) 07:47:13.41ID:wYVJWxVn
>>587
可能だと思うのならYOUが作っチャイナYO!
0590デフォルトの名無しさん2014/12/20(土) 14:21:26.91ID:Si36Gfqv
そうだよな、やれるもんならやってみろだよな。
小規模なシステムならともかく、ある程度のシステムになると、 .NET
への移行が不可能だから、どうやってVB6のプログラムを延命させるか、みんな苦心してると思うんだよな。 .NET
対応にできれば、相当需要がありそうだよ。
0591デフォルトの名無しさん2014/12/20(土) 21:15:21.77ID:JtAcEBQT
これを機に作り直しますかーって提案するのがビジネスだよな
作ったときからは要件も変わってるはずだし
0592デフォルトの名無しさん2014/12/24(水) 16:07:40.92ID:XwO/UkbR
data = Val("&H" & moji & "&")


これ、めんどくさいな
0593デフォルトの名無しさん2014/12/24(水) 19:09:17.62ID:Pe8einXY
>>592

面倒臭ければ自分で関数作れば。
0594デフォルトの名無しさん2014/12/24(水) 19:27:57.78ID:JiYEgYRJ
16進数ってコスト高そう
数字とアルファベットの文字コードが連続してたらよかったのにね
0595デフォルトの名無しさん2014/12/24(水) 19:41:36.24ID:NaIRZcpw
>>593
関数作るのもめんどくさいな
0596デフォルトの名無しさん2014/12/24(水) 23:27:10.34ID:+F1ZKWrO
後ろに&つけないと16bitで符号処理されるって、気づくまで苦労した思い出
0597デフォルトの名無しさん2014/12/24(水) 23:55:38.16ID:PMrDvfos
符号処理?w
単に型文字を付けないリテレルはIntegerとして扱われて、
そしてVBのIntegerは16bit時代を引きずって16ビットなだけ。
0598デフォルトの名無しさん2014/12/25(木) 06:49:34.10ID:R9NNVRim
>>597
同じこと言ってるだけだと思うなあ
いちいち自分の言葉に直さないと理解できないアスペさんかな
0599デフォルトの名無しさん2014/12/25(木) 08:11:49.13ID:iwW5OkLk
「符号処理」ってオレオレ用語だろ
そんなんが通じると思うのはコミュ障の疑いあり
0600デフォルトの名無しさん2014/12/25(木) 12:37:49.65ID:LfWVLz+4
VB自体がMSのおれおれ言語という罠。
0601デフォルトの名無しさん2015/01/19(月) 03:25:20.03ID:AqAYhJO7
ヘルプを書き換えたい
てかヘルプのページごとに掲示板作ったらいいのに
0602デフォルトの名無しさん2015/01/19(月) 03:46:59.56ID:WCeqJ/5h
他のプログラミング言語のオンラインヘルプはそんな感じのがチラホラあるね
0603デフォルトの名無しさん2015/02/01(日) 19:25:26.16ID:o8e0JQaY
CurDirでカレントフォルダを変更すると
そのフォルダを使ってるぞという印がつくみたいで
エクスプローラからそのフォルダを削除できなくなる
もう使ってないよと教えることはできず、他のフォルダに移動するしかない
そしてその移動したフォルダもまた削除できなくなるという
0604デフォルトの名無しさん2015/02/01(日) 19:27:52.17ID:o8e0JQaY
↑ChDirの間違い
0605デフォルトの名無しさん2015/02/01(日) 22:06:29.63ID:sjXjc1T+
つまりアプリ外部から勝手に消されたりしないという素晴らしい仕組みじゃないか
0606デフォルトの名無しさん2015/02/01(日) 22:24:14.09ID:VsSkpSzV
FSO使え
0607デフォルトの名無しさん2015/02/05(木) 19:47:28.29ID:ulWih/d6
10年かけてやっと.NETへ完全移行したぜ。
0608デフォルトの名無しさん2015/02/10(火) 13:27:07.27ID:HJItUlmA
長!!
そんなすげーシステムだったのか。

それとも自分の頭の中、技術力をってことか?w
0609デフォルトの名無しさん2015/02/12(木) 00:47:13.03ID:GjbGDI82
別に・・・
0610デフォルトの名無しさん2015/02/12(木) 09:47:43.55ID:NrPjwkQt
システムとめてられるのが正月の数日で、仕様書も残ってないから解析と移植を正月だけ何度も、とか想像した
0611デフォルトの名無しさん2015/02/28(土) 00:26:16.10ID:E51084cW
完全に移行するぐらいならリファクタリングして新規に作った方がいいよな
vb6は完全に負の遺産だよ
0612デフォルトの名無しさん2015/02/28(土) 23:08:00.73ID:H4GrRwwH
VB6のCILコンパイラはそもそも実現出来るのだろうか
ソース全部あればともかくランタイムはどうしようもないし無理かな
0613デフォルトの名無しさん2015/03/10(火) 00:26:30.38ID:4vRVmU8Z
VB6インスコしようとすると JAVA VMなんたら のメッセージでるけどこれセキュリティ的に危ないのになんで入れなきゃならん
0614デフォルトの名無しさん2015/03/10(火) 08:54:03.47ID:9jR5iZgP
当時は危なくなかったんだから仕方ない
0615デフォルトの名無しさん2015/03/23(月) 20:28:08.39ID:SD2rQl31
JavaVMが危ないって何のことだ?
0616デフォルトの名無しさん2015/03/29(日) 18:11:52.53ID:sbLODQLl
EXEを単体で作ると問題ないんですが、デストリビューションウイザードで
SETUP形式にするとデザインが崩れたEXEが出来てるんですが
なんとかなりませんかね。

WinXP VB6SP6環境。
0617デフォルトの名無しさん2015/03/29(日) 18:15:06.77ID:sbLODQLl
EXE単体で作ると問題ないのですが、デストリビューションウイザードで
SETUP形式にするとデザインが崩れたEXEがCAB内に配置されてるのですが
なんとかなりませんかね。

WinXP VB6SP6環境。
0618デフォルトの名無しさん2015/03/29(日) 18:16:21.15ID:sbLODQLl
連投スマソ
0619デフォルトの名無しさん2015/03/29(日) 20:03:12.75ID:ip65HYOy
VB6をやめればなおりますよ
0620デフォルトの名無しさん2015/03/29(日) 20:56:08.53ID:GIfRQ9M6
依存ファイルだけ書き出して
フリーのインストーラでパッケージ化すればいいんじゃね?
0621デフォルトの名無しさん2015/03/31(火) 13:01:32.91ID:0mEnHG5j
>>620
ありがとうございます。
結局セットアップ後にEXEをコピーして貰うことにしました。
0622デフォルトの名無しさん2015/03/31(火) 21:18:08.27ID:+KfLn/60
5年早かったらVisualStudioInstaller1.1をDLすれば解決、とか言えたんだけどね(´・ω・`)
VS6.0のサポートが終わって2010年頃にDLできなくなったから(´・ω・`)
0623デフォルトの名無しさん2015/04/11(土) 16:45:47.80ID:RAU5f7WL
バイナリ値で409C50C3と並んでいて
このファイルから40000,50000と切り出したいんだけど
うまくいかない。何が不味いのかな。

Dim hoge1 as long
Dim hoge2 as long
Dim FileNo As Integer

FileNo = FreeFile
Open SaveFile For Binary Access Read As FileNo
Get FileNo, 1, hoge1
Get FileNo, 3, hoge2
Close FileNo
0624デフォルトの名無しさん2015/04/11(土) 17:34:09.63ID:LbK5Z9ys
Long は 4 byte 読み込む
Integer は 2 byte 読み込む

hoge1もhoge2もLongなので4byte読み込む
0625デフォルトの名無しさん2015/04/11(土) 17:35:07.96ID:LbK5Z9ys
バイトオーダーまでは知らん
0626デフォルトの名無しさん2015/04/12(日) 09:22:37.77ID:R2DZtWRM
こういう時は先にPutでファイルを作ってみて確かめたらいいんじゃないかな?(´・ω・`)
0627デフォルトの名無しさん2015/04/12(日) 12:43:47.17ID:YnZGkZYr
40000とか50000とかはIntegerには入らんのだよ
そしてVBには符号なし整数はなかったはず
とりあえずIntegerで読んで自分でLongに拡張すれば良いんじゃね
0628デフォルトの名無しさん2015/04/12(日) 14:56:05.69ID:cmDRM8CX
Byte型変数2つで分割して読んでその二つをHex変換で16進数にして文字列連結して
再度10進数に戻すというシチめんどくさい方法で解決しました。
0629デフォルトの名無しさん2015/04/12(日) 15:46:20.94ID:BtEXqKfw
こんにちは!
僕は今VB6言語のParserを探しているんだけど心当たりはないかい?
何か知っていたら教えて欲しいんだ
サンキュー!
0630デフォルトの名無しさん2015/04/12(日) 16:28:06.70ID:YnZGkZYr
>>627
0000FFFFとANDとればいいだけだと思うが
hoge1 = &HFFFF& And int
FFFFの後ろの&はLong型の型宣言文字な

ま、動いてるなら良いけど
いまさらVBでこんなことやるっていったい何が
0631デフォルトの名無しさん2015/04/12(日) 16:29:32.85ID:YnZGkZYr
アンカ間違えた
>>628か
0632デフォルトの名無しさん2015/04/14(火) 11:15:29.24ID:cX2ojR9W
>>629
何するん?
0633デフォルトの名無しさん2015/04/16(木) 09:12:03.28ID:SL3a7UaO
ソフトウェアをVB6SP6で制作してデストリビューションウイザードで
必要ファイルをそろえて配布しているのですが一部の方から

「システムエラーです。&H8007007E(−2147024770)指定されたモジュールが見つかりません。」
というエラーが出て起動しません。

Visual Basic 6.0 SP6 ランタイムファイルを入れてみても
改善されないそうです。

自分のマシンでは再現しないため原因が特定できません。
お助けください。
0634デフォルトの名無しさん2015/04/16(木) 21:48:29.25ID:9Mx2dg5Y
>>633

何かのファイルが足りてないから出てるエラーの様に見えるけど
原因は別なんじゃないかな。
0635デフォルトの名無しさん2015/04/16(木) 21:55:04.63ID:SmxX7Y23
&H8007007E
でググればいいだろ
06366332015/04/17(金) 10:14:13.49ID:/e0YAkQl
SETUPPAD.exeとSETUPJPN.exeをダウンロードして入れて貰ったところ
無事動いたそうです。なんかOffice依存のモジュール使ってるんだろうか。
https://msdn.microsoft.com/en-us/library/ms968493.aspx
06376332015/04/17(金) 11:51:13.75ID:DkfBjpik
どうやらFM20.DLLを参照しているオブジェクトが不味いということは分かったのですが
テキストボックスやラベルがFM2.0かノーマルかをプロパティとかで
後から判別する方法ってないんですかね。
0638デフォルトの名無しさん2015/04/17(金) 18:04:39.25ID:+yzaDsFM
https://support.microsoft.com/en-us/kb/241245/ja
>FM20.DLL を Visual Basic やそのほかの開発者向け製品で使用すると、多くの問題が発生することがわかっています。

標準コントロールが勝手にそんなものを参照してるとは思えんが
0639デフォルトの名無しさん2015/04/17(金) 22:06:35.63ID:atIlsyZS
とりあえずテキストエディタでfrm開いてMSFORM.をVB.に全部置き換えても
FM20.DLLの参照設定はとれず。。。
0640デフォルトの名無しさん2015/04/17(金) 22:10:58.35ID:KxS0evdx
プロジェクトファイルも直さないと駄目なんじゃないかな?(´・ω・`)
0641デフォルトの名無しさん2015/04/17(金) 22:56:54.98ID:atIlsyZS
プロジェクトのコンポーネントのチェックを外したところ
参照設定が外れました。ありがとうございます。
0642デフォルトの名無しさん2015/04/17(金) 23:04:35.85ID:XwaNIzCF
VB6に関わる全ての技術者が死滅したら素敵なのになぁ
0643デフォルトの名無しさん2015/04/20(月) 10:31:51.64ID:Tqkeps+z
移植業者も?
0644デフォルトの名無しさん2015/04/24(金) 20:14:41.53ID:e7xK7URf
VB6でのDateDiffの仕様について質問です。
下記のコードをVB6で実行すると結果はどうなりますか?
'----Start----
Dim resultYer As String
Dim resultMon As String
Dim resultDay As String
Dim resultHor As String
Dim resultMin As String

Dim day1 As Date = Date.Parse("2006/11/1 12:00:00")
Dim day2 As Date = Date.Parse("2006/11/2 11:59:00")

resultYer = DateDiff("y", day1, day2)
resultMon = DateDiff("m", day1, day2)
resultDay = DateDiff("d", day1, day2)
resultHor = DateDiff("h", day1, day2)
resultMin = DateDiff("m", day1, day2)

MsgBox("年の差:" + resultYer + vbNewLine _
+ "月の差: " + resultMon + vbNewLine _
+ "日の差:" + resultDay + vbNewLine _
+ "時の差:" + resultHor + vbNewLine _
+ "分の差:" + resultMin)
'----End----
VB6⇔vb.netでDateDiffの仕様が違うと聞きました。
(情報元)ttp://bbs.wankuma.com/index.cgi?mode=al2&namber=70339&KLOG=120
自宅にはvb.net環境はありますが、VB6の環境がないため、仕様の差を確認できずに困っています。ちなみにvb.netだと以下のメッセージが表示されます。

年の差:0、月の差:0、日の差:0、時の差:23、分の差:0
0645デフォルトの名無しさん2015/04/24(金) 20:29:52.73ID:6BGAt3Sa
VBSかVBAで試してみればいいじゃん
0646デフォルトの名無しさん2015/04/24(金) 20:57:55.27ID:e7xK7URf
>>645
そーいうのもあるんですね。知らなかった。
Excel VBAで試したら
年の差:1、月の差:0、日の差:1、時の差:23、分の差:0
になりました。年の差:1が意味不明だけど、
とりあえず違うのは確認できたからありがとう。
0647デフォルトの名無しさん2015/04/24(金) 21:35:56.88ID:u+PDxy+/
>>646
>年の差:1が意味不明だけど

VBAのヘルプ見ると、yは年間通算日らしい。dとどこが違うのかわからんが
年指定はyyyyらしいぞ

MSDNみると、指定内容は.NETでも同じっぽい
"d"はDateInterval.Day、"y"はDateInterval.DayOfYearだけど
時間の差異の単位はどっちもDayになってる
年指定はDateInterval.Yearで"yyyy"

"yyyy"指定したときにそれぞれの値がどうなるかは知らん
自分で追加検証してくれ
0648デフォルトの名無しさん2015/05/09(土) 17:00:09.47ID:eQeEiCUf
バイナリファイルからイギリスという文字列の位置を調べたいんだが
INSTRBの部分でバイナリ値に変換した"イギリス"という文字列の書き方を教えてください。

Dim xBIN() As Byte
Dim lngFileLenB As Long
Dim str As String

lngFileLenB = FileLen("セーブデータ.BIN")
ReDim xBIN(lngFileLenB)

Open "セーブデータ.BIN" For Binary As #1
Get #1, , xBIN

str = xBIN '<-文字列に代入
msgbox InStrB(xBIN, "イギリス") - 1
0649デフォルトの名無しさん2015/05/09(土) 17:03:31.87ID:eQeEiCUf
Hex(Val("&H" & "イギリス"))
0650デフォルトの名無しさん2015/05/09(土) 17:04:00.31ID:eQeEiCUf
↑だめだった例です。
0651デフォルトの名無しさん2015/05/09(土) 17:47:29.22ID:qZm7gFud
・VB6はstrは予約語なのでstrという変数は作れない
・Val関数は文字列中に文字として現れる数字を数値に変換する関数
0652デフォルトの名無しさん2015/05/09(土) 17:49:48.34ID:qZm7gFud
・strは予約語だから変数は作れない
は勘違いだったスマソ
0653デフォルトの名無しさん2015/05/09(土) 17:51:50.02ID:qZm7gFud
日本語文字列をバイナリファイルから探す場合は文字のエンコードを気にしないとダメな気がする
0654デフォルトの名無しさん2015/05/09(土) 20:47:48.78ID:TxS/HRdk
msgbox InStrB(xBIN, StrConv("イギリス", vbFromUnicode))-1
でいけました。
0655デフォルトの名無しさん2015/05/13(水) 18:27:47.10ID:E3dvKu8T
VB6のランタイムのあるWindows10がマイクロソフトの最終OSだというのなら
VB6はずっと使えそうですね^^;p
0656デフォルトの名無しさん2015/05/13(水) 22:57:34.19ID:C8J+fuN8
終わる終わる詐欺に嵌められて莫大なコストをかけてリプレースした弊社はMSに損害賠償を要求できますか?
0657デフォルトの名無しさん2015/05/14(木) 20:21:26.39ID:lFtLYc9s
>>656
無理。常識で考えようよw
0658デフォルトの名無しさん2015/05/15(金) 09:47:32.26ID:Wsvcza/f
閉店セールかよw
0659デフォルトの名無しさん2015/05/20(水) 15:00:40.79ID:GXJd8FT6
数百万のインスタンスを一度に開放したところ仮想マシン上で数時間たってもgcが終了しません。物理メモリは十分でスラッシングは発生していません。C
言語かなにかでdllを作るしか無いのでしょうか?
0660デフォルトの名無しさん2015/05/20(水) 18:58:47.25ID:qzEPJuIN
VBにはGCは使われていません。
0661デフォルトの名無しさん2015/05/21(木) 08:10:44.04ID:D6D9E2On
リファレンスカウンターはGCではない的主張?
0662デフォルトの名無しさん2015/05/21(木) 21:51:04.17ID:PvdFF4ay
>>661
はい。ローカル変数と同じで使わなくなった時点で消えますから。

GC、ガベージコレクション。つまり、ガベージ(ごみ)を
コレクション(集める人)はいません。
自分自身で消えます。

だから「gcが終了しません」といわれても、
終了させるべきgcが存在しません。
0663デフォルトの名無しさん2015/05/21(木) 23:07:46.02ID:GzVh/YHb
インスタンスが相互に参照してるような状態を作ってないかい?
0664デフォルトの名無しさん2015/05/23(土) 13:49:21.18ID:VxHin33+
他の質問スレでも質問しましたが、こちらを見つけたのでこちらでも質問させてください。

VB初心者ですが、GPIBで装置の制御をしたいと考えています。
制御する装置の取り扱い説明書にインターフェースプログラムが載っていて、その一部が以下のソースです。


CLEAR IBINIT1 = 60000!: IBINIT2 = IBINIT + 3: BLOAD "BIB.M", IBINIT1

装置の動作環境はQuickBasicとGWBasicと書かれており(古い装置ですので)、これをVB6.0で動かしたいのですが、以下のソースに対応するVBコードを教えていただけないでしょうか。
コンパイルの段階でCLEAR文とBLOAD文でエラーがでます。

他にも情報が必要でしたら、インターフェースプログラム全体を載せますので、よろしくお願い致します。
0665デフォルトの名無しさん2015/05/23(土) 13:58:38.22ID:8oQ8jNeY
QuickBasicかGWBasicのリファレンス見ろよ

つか、それサンプルプログラムなんだろ
そのサンプル元の説明見てコードみて何してるか見当もつかないようなら
移植とか諦めた方がいいレベルなんじゃないか
0666デフォルトの名無しさん2015/05/24(日) 11:10:40.95ID:aC7thSOE
IBINIT1変数にBIB.Mを読み込んでるだけじゃないか
0667デフォルトの名無しさん2015/05/25(月) 12:24:05.53ID:B7x2AXB5
PCに挿すGP-IBインターフェースのマニュアルの方が重要じゃね?
0668デフォルトの名無しさん2015/06/05(金) 12:43:40.66ID:duzq6n04
デストリビューションウイザードのDefaultDirの設定ですがどこで保持しているのでしょか。
別のアプリのコピー新規でPGを作成したところ、インストール先もコピー元のアプリの設定になって
困っています。

毎回SETUP.LSTを手動で直してるのですが、面倒くさいです。
0669デフォルトの名無しさん2015/06/05(金) 12:51:52.29ID:duzq6n04
自己解決。プロジェクトのタイトル変えたら変更できました。
0670デフォルトの名無しさん2015/06/19(金) 10:30:05.44ID:P8jv6eWV
windows7でshell関数使って別のexeを立ち上げる際に
呼ばれる側のexeにマニフェストなどで管理者権限に昇格させる設定をしてあるとUACが表示されず起動出来ないです
最近のwindowsupdate入れた端末でのみ発生してるんですが何かこの辺変わったんですかね?
0671デフォルトの名無しさん2015/06/30(火) 18:10:49.69ID:7mN/yCYS
ちょっとしたプログラム作るだけなら
ついついVB6を使ってしまう
簡単だし、IDE軽いし
VB6依存体質が抜けないお
0672デフォルトの名無しさん2015/06/30(火) 20:39:15.24ID:YR8uH3yH
死ねばいいのに
0673デフォルトの名無しさん2015/07/01(水) 10:59:37.77ID:fbUsRR4f
もうちょっとしたものでもVB.NETで作ってしまう。
完全に.NETに依存してしまった。
0674デフォルトの名無しさん2015/07/01(水) 11:34:31.66ID:DRY714aS
もうちょっとしたものでもフライパンで作ってしまう。
完全にフライパンに依存してしまった。
0675デフォルトの名無しさん2015/07/01(水) 12:51:03.77ID:lMyegDBc
それはやばいな
行平もたまに使わないと
0676デフォルトの名無しさん2015/07/02(木) 19:22:52.93ID:Hci5YVEI
ちょっとしたものなら新人虐めるついでに作らせてる
残業お疲れさん!
0677デフォルトの名無しさん2015/07/02(木) 21:04:24.82ID:PhnYLcQw
でもさ、VB6やってて一度VB.Netに慣れて帰ってくると、全然違う組み方するようになるよね。
0678デフォルトの名無しさん2015/07/08(水) 16:03:08.00ID:VEd0guZu
お世話になります。
vb6でwinsock(tcp)って、通信を行っています。このプログラムをWindows7で動かすと、winsock.remorthostipの値(相手のipアドレス)が勝手に変わります。厳密には、連続で受信すると、3回に1回、iPアドレスの最後の一桁が削られます。例 192.168.1.52→192.168.1.5
回避策はあるでしょうか?
0679デフォルトの名無しさん2015/07/08(水) 16:38:28.27ID:1I6F/xtT
c#に移行してください
0680デフォルトの名無しさん2015/07/08(水) 19:18:39.50ID:SdJJqPpn
>>678です。補足します。
vb6はsp5、sp6 両方で再現
Windows7はsp1です。
0681デフォルトの名無しさん2015/07/08(水) 20:00:27.70ID:xcJFdxGm
再現するコードちょうだい
0682デフォルトの名無しさん2015/07/09(木) 16:43:17.49ID:d/7Iu65D
VB6の開発ってWINDOWS XPじゃろ?
頑張っとるねー
0683デフォルトの名無しさん2015/07/09(木) 19:07:44.31ID:OIwshvU3
やめてくれ
負の遺産を増やさないで
0684デフォルトの名無しさん2015/07/10(金) 19:11:03.71ID:zt7/LdpA
Windows10でも動くんだから、まだまだ続くよ!
0685デフォルトの名無しさん2015/07/10(金) 19:53:44.23ID:lRLeeNIl
vb6保守の仕事で一生安泰
0686デフォルトの名無しさん2015/07/10(金) 20:18:38.14ID:jiYZdnGq
死亡確定
0687デフォルトの名無しさん2015/07/10(金) 21:27:18.06ID:89MsCGsS
牢獄に繋がれて無意味な苦役に従事して安泰とは片腹痛い
0688デフォルトの名無しさん2015/07/10(金) 21:34:37.95ID:jiYZdnGq
最近になってVB6の仕事についてしまった。
誰か.Netと両方分かる人、デリゲートの代替え案を教えてくれ。
0689デフォルトの名無しさん2015/07/10(金) 21:59:45.15ID:On7OQ+i/
>>688
(1) Interface
(2) CallByName
0690デフォルトの名無しさん2015/07/10(金) 22:06:21.64ID:89MsCGsS
デリゲートなんてただのオブジェクトとシンタックスシュガーだって何度も言ってるだろ
0691デフォルトの名無しさん2015/07/10(金) 22:08:18.92ID:f9v78y+G
>>689
インターフェースはそのためだけにクラス作らないといけないからちょい不便だな。

Call By Nameってどんなの?
0692デフォルトの名無しさん2015/07/10(金) 23:34:24.08ID:ZUCYWHyX
DispCallFunc使えばできるんじゃね?
0693デフォルトの名無しさん2015/07/11(土) 17:40:29.28ID:jpF4X+wv
>>684
結局、誰もVB6を駆逐できなかったんだね。
0694デフォルトの名無しさん2015/07/12(日) 09:18:01.73ID:eT/zQga3
×結局、誰もVB6を駆逐できなかったんだね。
○結局、誰もVB厨を駆逐できなかったんだね。
0695デフォルトの名無しさん2015/07/12(日) 14:20:39.37ID:SaLxtIrt
カーストの底辺は数だけは多いから駆逐しようとしてもできない
0696デフォルトの名無しさん2015/07/12(日) 16:09:12.26ID:xBd1mM/W
これからは逆だろ。 希少価値が生まれる
0697デフォルトの名無しさん2015/07/13(月) 09:24:43.23ID:O9qWuscS
>>695
それって未だにシェアトップでこの先も安泰って事になるのだが?
0698デフォルトの名無しさん2015/07/13(月) 11:14:03.61ID:awJDyF4B
>>697
シェアてw
競合の中で競争力があるから優勢を占めている(割合)んじゃなくて、
単に希少性がない(どこにでもいる)から絶対量が多いだけだ馬鹿w

だから需給関係で買い叩かれてるだけのことでこれは至極当然のことなのに、頭が悪いからこういう簡単な理屈が分からずに
2chのプログラマー板やニュース系の板で自分の無能を棚に上げて「ブラック企業ガー」とか吠えることになる。
0699デフォルトの名無しさん2015/07/13(月) 12:50:58.75ID:r6h2hC+g
vb6全盛のころのプログラマはもう年金暮らしに入ってないかね。
小遣い稼ぎとしては美味しいのでは? 安泰というのはそういう意味な
0700デフォルトの名無しさん2015/07/18(土) 23:32:08.38ID:t3qSMqNL
VB2010でWEBページのソースを散りこんで、必要なものだけVBに出力したいんです。
どうすればいいでしょうか????
0701デフォルトの名無しさん2015/07/19(日) 00:19:16.62ID:mee78mlo
>>1のテンプレに直接
VB2002,VB2003,VB2005,VB2008,VB2010,VB2012,VB2015はスレチ
って書いておいたほうがいいんじゃねーの
0702デフォルトの名無しさん2015/07/19(日) 06:24:13.13ID:D9aathl+
スレタイも読めないやつがテンプレを読むと思うか?
0703デフォルトの名無しさん2015/07/20(月) 03:01:25.46ID:rZVP7tf0
6.0っていうのがもう何のことか
わからない世代になってきたのだろう。

>>1のテンプレに書くのも当然として
スレタイも変更しよう。

こんなのでどうか?長さ制限がきつくて困る。

旧版VBプログラマ質問スレ (VB2002以降禁止) part65
0704デフォルトの名無しさん2015/07/20(月) 03:34:23.29ID:jyLRfwQm
字数制限うんぬん言うなら
スレタイのプログラマって単語を省けばいいじゃん
何の意味もなしてないんだし
0705デフォルトの名無しさん2015/07/20(月) 03:50:36.71ID:rZVP7tf0
だな。

じゃあこれで

旧版Visual Basic質問スレ (VB2002以降禁止) part65
0706デフォルトの名無しさん2015/07/20(月) 10:47:30.60ID:pTYyCTCw
MSDNは?
0707デフォルトの名無しさん2015/07/23(木) 12:48:24.94ID:p0QCm9pl
>>705 さん
それじゃ結局長くなっちゃってますよ^^;

多分、>>704 さんはそのままプログラムを取って

旧版VB質問スレ (VB2002以降禁止) part65

にすればいいんじゃない?って言ったんだと思いますよ^o^
0708デフォルトの名無しさん2015/07/23(木) 16:29:32.21ID:wgfFiwzt
今のままでいいんじゃないかな?(´・ω・`)
これで間違えるような奴は所詮お呼びじゃないよね?(´・ω・`)
変なスレタイ考えてる暇があったら、VB6をVB.NETに移行する作業に
さっさと戻った方がいいよね?(´・ω・`)
0709デフォルトの名無しさん2015/07/23(木) 19:48:32.54ID:OrJvRiwH
迷子を適当にあしらっていくくらいでちょうどいい保守となる
0710デフォルトの名無しさん2015/07/23(木) 20:15:10.45ID:wJ4dBNqB
VB6とVB.NETって移植性低いよな
0711デフォルトの名無しさん2015/07/23(木) 21:43:09.69ID:fIFeUYpQ
>>710
移植性の高いとか低いとかの基準がどこかによるけど
互換性としては、まあ100%ではないし高くはないと言えるかもしれん
移植性でいえば、たとえばC#に移植するよりははるかに高いと言えると思うが
0712デフォルトの名無しさん2015/07/23(木) 23:38:28.98ID:h4tQPyFC
>>711
VB6.0からVB.Netへの移植が出来る人なら
VB.NetからC#の移植ならへっぽこぴーだと思うのだが。

文法以外8割方変わらん。
0713デフォルトの名無しさん2015/07/24(金) 09:27:56.15ID:aa1NhMid
でもやっぱVB6→C#よりもVB6→VB.NET→C#になっちゃうだろうな。
0714デフォルトの名無しさん2015/07/24(金) 20:46:13.96ID:uaWMhUqq
VB6→× 新規開発→C#

だろ
0715デフォルトの名無しさん2015/07/24(金) 20:49:06.52ID:B25T497v
VB6→ゴミ箱
新しい世界→C#

これが正解
0716デフォルトの名無しさん2015/07/24(金) 21:25:06.14ID:UAOj/YU8
VB6 → VBA → 給料低下 → 自然淘汰

だと思うんだが
0717デフォルトの名無しさん2015/07/25(土) 09:06:14.15ID:otCZYRZm
データ入力画面なら.NETで新規開発のほうが早そげ
データ集計機能とかは既存ロジックを作り直すの馬鹿らしいから
そこはVB6->VB2008コンバートでやるとか
0718デフォルトの名無しさん2015/07/25(土) 10:57:42.04ID:RII5Ktnm
馬鹿らしいといっても大事なところだからなぁ
0719デフォルトの名無しさん2015/07/25(土) 11:18:26.38ID:T2h9ksOT
どう移行しても、テストは必須、ということを考えると、機械的にコンバートするよりも、テスト工数を減らせるように、基本設計から作り直した方が、安上がりだよね
もともと、テストしやすく作られてるなら、話は別だけど、VB6はテストしにくいほど、良い、って文化なんだよね
0720デフォルトの名無しさん2015/07/25(土) 13:33:02.62ID:otCZYRZm
元が糞みたいなプログラムなら新規開発だね
VB6の場合は糞みたいなプログラムのほうが多いけど
0721デフォルトの名無しさん2015/07/27(月) 07:31:09.47ID:iWmK+CKe
vb6ランタイムは今度のWindows10でも搭載されるらしいし、まだまだこの先生きのこるね

http://a.excite.co.jp/News/it_g/20150706/sum_Slashdot_15_07_06_0917202.html
0722デフォルトの名無しさん2015/07/27(月) 19:38:54.63ID:2b71ztG3
Win10にまで移植されるとは
VB6ランタイムには脆弱性がない安定したモンだってことか?
0723デフォルトの名無しさん2015/07/27(月) 19:52:09.66ID:2WdhWmcq
ほとんどウイルスだな
Windowsを侵す病魔
0724デフォルトの名無しさん2015/07/28(火) 08:18:44.44ID:DZHdP61g
成果物が多すぎてサポート切ると反感買うからだろ
0725デフォルトの名無しさん2015/07/28(火) 12:30:00.20ID:5VX8PWDS
VB6ランタイムこそがWindowsの本体
0726デフォルトの名無しさん2015/07/28(火) 16:28:37.06ID:PxXsYeSe
Macとアンドロにも対応すればいいのに
0727デフォルトの名無しさん2015/07/28(火) 17:56:10.15ID:+SKnFJ9Z
脆弱性だらけのFlashやJavaなんかより優秀なVB6
0728デフォルトの名無しさん2015/07/28(火) 18:07:38.34ID:+SKnFJ9Z
Javaのブラウザプラグインなんてデフォルトで無効にされる時代になってそれなりに時間も経つ
FlashはHTML5への移行が進んでいる段階だ。YouTubeなんてHTML5で再生されるようになった
古いクライアントサイド技術が廃止されていく中
VB6だけはWin10でも生き残った
0729デフォルトの名無しさん2015/07/28(火) 20:35:40.83ID:Z+xZWeTf
VB6.NETコンパイラまだ〜?
0730デフォルトの名無しさん2015/07/28(火) 21:23:24.00ID:sFAhL5HY
フリーウェアをダウンロードして起動すると
いきなり画面が文字化けしてたりするのがVB製アプリなわけだが
はやく絶滅してくれないかな
0731デフォルトの名無しさん2015/07/29(水) 09:40:01.83ID:2BCB+WmS
>>730
ビールを賭けてもいい。
Microsoftは今後のWindowsでもVisual Basic 6をサポートしなければならないだろう。
0732デフォルトの名無しさん2015/07/30(木) 03:07:23.73ID:qAED+lXR
いまだに小物はVC6で作るしVS6って神開発環境だな
0733デフォルトの名無しさん2015/07/30(木) 19:17:47.96ID:FRlaAlkY
老害死んでください
0734デフォルトの名無しさん2015/08/01(土) 00:49:29.29ID:Y3XWk9yX
>>732
大多数のエンジニアからしたら
馬鹿だなぁって思われるだけですよ、ソレwww
0735デフォルトの名無しさん2015/08/04(火) 10:20:41.28ID:1t1fv33Z
大多数のエンジニア(笑)
0736デフォルトの名無しさん2015/08/05(水) 07:05:06.11ID:ZbRaDsL0
いまだにVC6で小物は作る×
いまだにVC6で作る奴は小者⚪︎
0737デフォルトの名無しさん2015/08/05(水) 22:47:09.06ID:+BU0Yttl
VC?
0738デフォルトの名無しさん2015/08/06(木) 13:48:54.28ID:I1gutQr/
Vcc
0739デフォルトの名無しさん2015/08/08(土) 00:20:19.11ID:Fe3rcXOX
VBに関わるエンジニアって存在するのか?
0740デフォルトの名無しさん2015/08/08(土) 00:59:34.35ID:TXQqo4N8
存在するも何も、うちでは現役の開発環境ですがナニカ?
0741デフォルトの名無しさん2015/08/09(日) 05:56:35.03ID:nd2w8Mp+
VBAがある限り何度でも甦るさ
0742デフォルトの名無しさん2015/08/09(日) 09:53:19.36ID:/6/RtruA
VBAはなんで.NETにしないんだろな
0743デフォルトの名無しさん2015/08/09(日) 19:16:24.93ID:4nBvoyFz
vb脳でも使えるように
0744デフォルトの名無しさん2015/08/09(日) 19:49:46.42ID:c6qkqvSs
vb脳てw
0745デフォルトの名無しさん2015/08/11(火) 09:29:55.06ID:nrhSjeMn
いまさらVBAを.NETにしたところで誰も得しないよな
0746デフォルトの名無しさん2015/08/11(火) 13:47:21.97ID:bNJWLzix
vb6のideは10にのりますかね?
0747デフォルトの名無しさん2015/08/13(木) 00:05:36.63ID:vA6xyZbh
よ、余裕
0748デフォルトの名無しさん2015/08/13(木) 09:18:46.21ID:FiKzGz/N
画像のサムネイルがマトリクス状に並ぶプログラムを作っていて
どれかを右クリックすると、ポップアップメニューから削除や編集ができるようにしています
それはMouse_Downでどの画像を右クリックされたかを知り、ポップアップメニューで実行される処理に伝えているわけです

それが、ドラッグ&ドロップにも対応するようにOLEDragModeを自動にしたらMouse_Downイベントが発生しなくなったので
OLEStartDragイベントで右クリックされたかを見るようにしたのですが、このプロシージャには座標情報がありません
そこで直前のMouse_Moveで得られた座標を使うことにしたのですが
このMouse_Moveイベントというやつは、ポップアップメニューが出ているときは発生しないのですね
つまり、最初に右クリックしてポップアップメニューを出したときには、どれが選択されたかは分かるのですが
そのポップアップメニューを出したまま、別の画像を右クリックした場合には、
その間にMouse_Moveイベントが発生していないので、どの画像が選択されたか分からないですね
APIでマウス座標を取得するしかないですか?
0749デフォルトの名無しさん2015/08/13(木) 17:41:02.34ID:Woc45Qdi
apiでとればええがな
0750デフォルトの名無しさん2015/08/14(金) 14:45:49.81ID:6LGD7sZv
err.raiseは使ったことないけど、これは何かいな。
On Errorを使う前提で、VB自身が持ってないエラーを自分で発生させて、エラーの
ジャンプ先のラベルに移動させるんかいな。何のために。そんな間接的な動かし方
のプログラムの書き方をやる必要あるんかいな。変数とかを検査して異常を見つけ
たら、その場で、その対策コードを書くのではおかしいのかいな。
0751デフォルトの名無しさん2015/08/14(金) 21:50:31.50ID:p5ZaJdGy
>>750
例えばOn Error Gotoの記述ある関数が、自前エラーを発生させる関数を呼んでいる関数を
呼んでいる関数を呼んでいる関数を・・・呼んでいる関数を呼んでいるとして、
今までその関数たちに戻り値が無かったり、既に別の戻り値を使っていたら直すの面倒臭さいじゃん。

他のエラーと同じように処理を行うなら、エラーとして投げちゃった方が早いよって
話なんじゃないの?
0752デフォルトの名無しさん2015/08/16(日) 20:00:59.96ID:iyw7PDsu
>>750
他の言語では例外と呼ばれている機能。
多くの言語でtry-catch構文のthrowがErr.raiseに相当する。

例外を使わない場合、エラーを戻り値で返すことになるが、
戻り値でエラーを返すと、エラーチェック漏れが起こりやすく、
コードが冗長になるため、ほとんどの言語で例外は取り入れられている。

例えば、関数Aの中から呼び出される、
関数Bの中から呼び出される、関数Cの中から呼び出される
関数Dの中でエラーが起きたら、

関数Aはどうやって処理の途中でエラーが発生したことを
知ればいいのかを考えれば、わかるだろう。

実行時エラーというのは、多くの場合その場で書ける対策コードというは存在しない。
エラーが発生したならば、エラーが起きたと呼び出し元関数に伝えることしか出来ないし必要ない。

ならばそういう動きをする仕組みがあって「何も書かずに」
そういう動きをするならば、安全なコードを簡潔に書けることになる。
0753デフォルトの名無しさん2015/08/16(日) 20:08:07.04ID:UN3LUXRF
>>752の話はもっともだが>>151の方が簡潔で分かり易かった
0754デフォルトの名無しさん2015/08/16(日) 20:17:09.58ID:HJiFPNgh
APIによってエラーの通知方法がバラバラじゃわかりにくいだろ
だから例外で統一してるって基本はそれだけの話
0755デフォルトの名無しさん2015/08/16(日) 23:59:57.45ID:YMuDhPLH
 そうか、俺は勉強不足なのか。
On Errorを使うなら、必ずそのプロシージャの中でGoTo 0で後始末をしなければいけないと思ってた。
 それと、できる限りVBの実行時エラーに頼らず、自分で異常な条件を検出するコードを書くものだと
思ってたがそうでもないか。
 VBの実行時エラーは忌まわしいものというイメージで、最大限の回避努力でも不可能なときの最終手段
の扱いをしてた。それなのに、それとは対照的にErr.Raiseで積極的に活用するとは意外だったな。
 異常を検出した(自分で検出か、VB実行時エラーかを問わず)ときは、エラー用の終了コードを設定
して、Exit Functionで抜けるのが普通だと思ってた。
クラスのInitializeイベントプロシージャで必要があるときは、モジュール変数に終了コードを代入
してから終了して、その直後は呼び出し元は、その終了コードを返すプロパティプロシージャを呼んで
確認するようにしてた。
0756デフォルトの名無しさん2015/08/17(月) 01:01:42.63ID:lZpLktaW
On Errorの二重化(他の言語での例外で言えばtryブロックの中でまた別のtryブロックで構えること)
は可能ですか、不可能ですか。
0757デフォルトの名無しさん2015/08/17(月) 01:19:13.82ID:lZpLktaW
どうやら不可能だな。
0758デフォルトの名無しさん2015/08/17(月) 01:33:52.81ID:lZpLktaW
そうか、プロシージャの呼び出し先でOn Error使ったら、呼び出し元に戻るか、
戻らなくても、On Error GoTo 0の直後は、呼び出し元で使っていたOn Error
に復帰するようだな。
0759デフォルトの名無しさん2015/08/17(月) 06:11:20.16ID:nzUWrzDx
>>755
別に積極的に使ってるんじゃなくて適材適所で使う
0760デフォルトの名無しさん2015/08/17(月) 10:35:49.32ID:HKx5lNza
>>755
> On Errorを使うなら、必ずそのプロシージャの中でGoTo 0で後始末をしなければいけないと思ってた。
必要なときだけやればいい。

> 最大限の回避努力でも不可能なときの最終手段
実行時エラーっていうのは、実行時にならないとわからないから「実行時」エラーなんだよ。
だから原則として回避はできないものであり、それが正しい。

> エラー用の終了コードを設定
> して、Exit Functionで抜けるのが普通だと思ってた。
面倒だろ? プログラム言語っていうのは、簡単に記述できるように
改良されてきたのだから、多くの場合、簡単な記述のほうが正しいやり方。

戻り値は戻り値。その戻り値にエラー値を混ぜ込むと、
戻り値なのかエラー値なのはいちいち判定しなければいけなくなるだろ?

で、次君が悩むのは、何が戻り値で、何がエラーなのか?ってことだろうけど、
それは関数名から導き出されるもの。(だから関数名を適当につけてはいけない)

関数っていうのは、どんなものでも実行できて結果が返ってくるもの
もし結果を返せない自体になれば、それは(実行時)エラー。

関数名が、convertToInt(INTに変換)という名前であれば、Intに変換した結果を返す。
返せなければ実行時エラー。

VB.NETにはInt32.TryParse(INTへの変換を試す)という名前の関数があるけど
https://msdn.microsoft.com/en-us/library/f02979c7(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1
これは「試す」という関数なので戻り値はtrue/false。

どちらも似たようなことをしているが、何をするか、何を返すかは関数名によって変わるものなんだよ。
だけれども関数名から示される「やるべきこと」を関数は必ず実行して実行して実行結果を返す。
でなければ実行時エラーにする。
0761デフォルトの名無しさん2015/08/17(月) 10:40:58.03ID:HKx5lNza
>>756
VB6では不可能。

だけれど、ひとつの関数に、複数のOn Errorがあるときは
コードが複雑だって考えた方がいい。

多くの場合、関数一つに対して、
On Errorは全くないか、一個だけ。

そして基本的にフォームにのみOn Errorが存在する。
フォームから呼び出されるモジュールやクラスには
Err.raiseをやっても、On Errorは存在しない。

On Errorが必要なのは、終了処理が必要な場合とか
内部で勝手にリトライする場合とかだけだから。
0762デフォルトの名無しさん2015/08/17(月) 11:53:08.15ID:ZAOWqUh+
>>761
> そして基本的にフォームにのみOn Errorが存在する。
> フォームから呼び出されるモジュールやクラスには
> Err.raiseをやっても、On Errorは存在しない。
そんな基本ないし。

エラーが発生する関数内でエラートラップが必要ならOn Error Gotoが必要だし、
そうじゃなければ必要ないというだけのこと。

そして、エラーが発生する関数内でエラートラップが必要になることは、
例外的な話ではない。
0763デフォルトの名無しさん2015/08/17(月) 11:58:37.90ID:ZAOWqUh+
>>752
> 実行時エラーというのは、多くの場合その場で書ける対策コードというは存在しない。
その場で書ける対策コードが存在しない場合に限り、実行時エラーが発生するのなら
問題ないが、そうではないコンポーネント多数だよ。

> エラーが発生したならば、エラーが起きたと呼び出し元関数に伝えることしか出来ないし必要ない。
レイヤーが異なるエラーが画面まで戻っても困るんだけど。
0764デフォルトの名無しさん2015/08/17(月) 12:56:50.84ID:HKx5lNza
>>762
> エラーが発生する関数内でエラートラップが必要ならOn Error Gotoが必要だし、

どういう時に必要なのかを考えれば
わかること。

On Errorはフォームのイベントハンドラにあれば良い。
殆どの場合、そこで全て処理できる。

> そして、エラーが発生する関数内でエラートラップが必要になることは、
> 例外的な話ではない。
例外的なこと。
どんな時に必要になるのかを行ってみればよい。
それはフォームのイベントハンドラに書いたOn Errorで処理できる
0765デフォルトの名無しさん2015/08/17(月) 12:58:28.95ID:HKx5lNza
>>763
> レイヤーが異なるエラーが画面まで戻っても困るんだけど。

通常呼び出し元というのは、レイヤーが異なるもの
(レイヤーが異ならないのはプライベート関数ぐらい)

内部で発生したエラーは、呼び出し元に戻すのが原則
でなければ、呼び出し元は、エラーが発生したことを
知ることができずに、エラーが発生しても
そのまま処理を続行してしまうだろ。
0766デフォルトの名無しさん2015/08/17(月) 13:01:56.99ID:HKx5lNza
フォームのイベントハンドラ以外で発生した例外

つまり、イベントハンドラから呼び出された関数の中で
発生した例外。(さらにその中の関数も同様)

この例外は基本的にトラップしない。
そうすることでどんなに深くても呼び出し元に
エラーが発生したことを確実に伝えることができる。

内部の関数でトラップする場合は、
なんらかの終了処理が必要な場合。
例えば作成したテンポラリファイルを削除するとか。

そういう風に、例外的にエラーをトラップしたとしても、
そのエラーハンドラの中で終了処理をしたあと
Err.raiseで同じ例外を再送出する。
そうやって、発生した例外を握りつぶさないようするのが原則。

最終的に例外はフォームのイベントハンドラでトラップする。
0767デフォルトの名無しさん2015/08/17(月) 13:14:11.45ID:xsVtyxk3
>>766
こういう勘違いしてる人は多いねw

例外なんて呼び出し元で捕捉するのが基本。
こういうこと言う人って、呼び出し階層の最上位のメソッドが、何階層も下で起こった
例外を適切に処理できるはずだとか思ってるのかな
0768デフォルトの名無しさん2015/08/17(月) 13:16:10.49ID:xsVtyxk3
っていうか、VB6をまだ「勉強」してる人っているんだな。
0769デフォルトの名無しさん2015/08/17(月) 13:21:34.22ID:0s7fPOLU
Javaカスに多いよね
低レベルレイヤーで例外がっちり捕まえちゃう馬鹿
0770デフォルトの名無しさん2015/08/17(月) 13:33:40.79ID:HKx5lNza
>>767
> 例外を適切に処理できるはずだとか思ってるのかな

呼び出し階層の下の部分では、適切に処理できないから、
呼び出し元に返すんだよ。
何を言ってるんだろうか?


じゃあ一つ問題を出してあげよう。

呼び出し階層の下の部分でデータベースの接続に失敗しました。
呼び出し階層の下の部分は、データベースの失敗に対して
どういう処理をしたらいいでしょうか?
0771デフォルトの名無しさん2015/08/17(月) 13:46:18.47ID:ZAOWqUh+
>>770
> 呼び出し階層の下の部分でデータベースの接続に失敗しました。
> 呼び出し階層の下の部分は、データベースの失敗に対して
> どういう処理をしたらいいでしょうか?

データベースに接続できなかったときに実行時エラーを起こすライブラリ/コンポーネントだった場合。
* まずエラーをトラップする
* アプリケーション層向けのエラーメッセージを編集して戻す
* 必要ならエラーログを出力する
* 必要なら接続のリトライを行う
0772デフォルトの名無しさん2015/08/17(月) 13:52:58.25ID:0s7fPOLU
リトライ判断は上のレイヤーの仕事だろカス
0773デフォルトの名無しさん2015/08/17(月) 13:56:28.11ID:ZAOWqUh+
>>772
画面の関数内で、データベースエラーの内容を見て、リトライ可能なエラーだったら
画面の関数内でリトライするのか?

まあそうしてもいいが、そうすると、データベースを使う30画面全てに同じコードが必要になるね。
0774デフォルトの名無しさん2015/08/17(月) 13:58:32.09ID:HKx5lNza
>>771
はい不正解。

>>772
はい正解。

ログを出力するかどうかは呼び出し元が判断する。
ログはファイルかもしれないし、syslogかもしれない。

呼び出しのメッセージは、詳細をエンドユーザーに明らかにしたら
脆弱性につながる可能性があるから、詳細な情報を出すか出さないか、それは呼び出し元が判断する。

リトライするかどうかも呼び出し元が判断する。

何もする必要もないかもしれない。
例えばネットワークが不安定な環境でエラーが出ることが前提
エラーが出たら自動的にバックアップを使うとかね。

何より、リトライ回数がオーバーした時、
呼び出し階層の下の部分では、何をしたらいいか判断できないから
結局呼び出し元に戻りを返すしか無いですよね?
0775デフォルトの名無しさん2015/08/17(月) 13:59:53.13ID:HKx5lNza
>>773
> まあそうしてもいいが、そうすると、データベースを使う30画面全てに同じコードが必要になるね。
関数にすればいいだろう。

それよりも、お前、データベースを使う30画面全てで
リトライ処理をするのか?

呼び出し元が判断しないから
お前の作るプログラムはそういう柔軟性が無くなる。
0776デフォルトの名無しさん2015/08/17(月) 14:02:57.82ID:ZAOWqUh+
アプリケーション全体のエラー処理を、実行時エラーベースにするのか戻り値ベースに
するのかということと、発生元関数内でエラーとラップが必要かどうかは全く関係ない。

実行時エラーベースにするのであれば、画面がOn Error Gotoでエラートラップしなければ
ならないのは当然のこと。

ただし、自分が発生させる実行時エラーと、ライブラリ/コンポーネントが発生させる
実行時エラーをごっちゃにしてはいけない。

例外クラスを継承して、catchするクラスを指定できる言語とVB6を混同してもいけない。
0777デフォルトの名無しさん2015/08/17(月) 14:04:57.45ID:HKx5lNza
アプリケーション全体のエラー処理を、実行時エラーベースにするのか戻り値ベースに
するのかということと、発生元関数内でエラーとラップが必要かどうかは全く関係ない。

つまり、内部でエラー処理できなければ、
戻り値 or 例外で返すしか無い。

だから「関数の奥深くで処理すればいい」というのは
戻り値でエラーを戻す必要はないということを意味している。

これだけでで反論として成り立つ。
0778デフォルトの名無しさん2015/08/17(月) 14:06:32.02ID:ZAOWqUh+
>>774
> 呼び出し階層の下の部分では、何をしたらいいか判断できないから
> 結局呼び出し元に戻りを返すしか無いですよね?
エラーを戻さないとは言ってない。
もちろん最終的にはエラーを戻す。

>>775
> それよりも、お前、データベースを使う30画面全てで
> リトライ処理をするのか?
データベースの接続にリトライが必要だという要件なら、データベースに接続する箇所
全てでリトライをするが。

> 呼び出し元が判断しないから
画面はデータベースの処理詳細なんか知らないんだよ。
0779デフォルトの名無しさん2015/08/17(月) 14:08:11.09ID:ZAOWqUh+
>>777
> つまり、内部でエラー処理できなければ、
> 戻り値 or 例外で返すしか無い。
内部でエラー処理をするのと、内部でエラー処理を完結するのでは意味が異なる。
誰も内部でエラー処理を完結するなんて言ってない。
0780デフォルトの名無しさん2015/08/17(月) 14:10:38.08ID:HKx5lNza
実行時エラーというのは、戻り値の中にエラーを混ぜ込んで
「戻り値+エラー値」という型にするのが大変だから生まれた
エラー専用の戻り値と考えればいい。

戻り値でエラーに返すにしても、関数の内部でエラーを処理できるのは
例外中の例外で、戻り値でエラーを返さないといけない。

もし内部でエラーを処理できるのであれば、
戻り値でエラーを返す必要もないということになる。

ここからも「エラーは呼び出し元に戻す必要がある」ということになる。

その戻す方法が、戻り値にエラーを混ぜ込んで、呼び出し元に返して
呼び出し元で正常な戻り値とエラーを分離して
エラーだったら更に呼び出し元に返すという処理を書くか、
デフォルトでそれらを自動でやってくれる実行時エラーを使うかの違いしか無い。

もちろんより簡単なのはデフォルトでやってくれる方法。
もちろんデフォルトであって変えようと思えば変えられる。
0781デフォルトの名無しさん2015/08/17(月) 14:12:13.15ID:HKx5lNza
>>778
> データベースの接続にリトライが必要だという要件なら、データベースに接続する箇所
> 全てでリトライをするが。

要件は「一部のみリトライ処理が必要」だ


> 画面はデータベースの処理詳細なんか知らないんだよ。
お前が書いた、その対応方法は
データベースの処理詳細なんか知らなくてもできるが?w

ログを取る・・・データベースの詳細しらなくてできる。
リトライ・・・データベースの詳細しらなくてできる。

お前、俺を笑わかすきかw
0782デフォルトの名無しさん2015/08/17(月) 14:13:18.69ID:HKx5lNza
>>779
> 誰も内部でエラー処理を完結するなんて言ってない。

殆どの場合、内部でエラー処理を完結できない。
だから呼び出し元にエラーを返す。

それをデフォルトで行うのが実行時エラー。
0783デフォルトの名無しさん2015/08/17(月) 14:22:00.28ID:ZAOWqUh+
>>781
> ログを取る・・・データベースの詳細しらなくてできる。
適切なログ出力内容は、それぞれのライブラリ/コンポーネントごとに異なるなる。
また、ユーザレベルのエラーメッセージ生成も、それぞれのライブラリ/コンポーネントごとに異なるなる。
故に、それらは画面からの呼び出し先でやる方が良い。

> リトライ・・・データベースの詳細しらなくてできる。
いや、できないね。
ローカルMDBをオープンして使う場合と、リモートのSQL Serverに接続するのでは、エラー処理が異なる。
また、後者の場合でも、接続リトライ可能かどうかはエラー内容による。

画面の関数内で、下位で使う全てのライブラリ/コンポーネントを把握して、適切なエラー処理を
画面の関数内でやるのか?

>>782
> 殆どの場合、内部でエラー処理を完結できない。
> だから呼び出し元にエラーを返す。
それには別に異論はないが。
0784デフォルトの名無しさん2015/08/17(月) 14:26:40.23ID:HKx5lNza
>>783
お前の各プログラムがクソすぎてワロタw

え?なに?

下位でMDBを使うか、SQL Serverを使うかで
上位の呼び出し元のコードが、違うコードになるわけ?

そういうことだよな?
お前の書いたコードは。

下位で何を使うが、上位はそのことを意識する必要がないように設計する。
これが普通なんだが、

お前は下位で何を使われるかによって、上位のコードが変わるって
言ってるわけだ。

クソすぎ
0785デフォルトの名無しさん2015/08/17(月) 14:29:09.37ID:ZAOWqUh+
>>784
なんか勘違いしてるようだが。

> 下位でMDBを使うか、SQL Serverを使うかで
> 上位の呼び出し元のコードが、違うコードになるわけ?
そうならないように、画面から呼び出す関数内で適切なエラー処理をしてから戻せと言ってる。
で、使用するライブラリ/コンポーネントが実行時エラーを起こす場合は、その呼び出し先で
On Error Gotoが必要。

なので、
>>761
> そして基本的にフォームにのみOn Errorが存在する。
> フォームから呼び出されるモジュールやクラスには
> Err.raiseをやっても、On Errorは存在しない。
そんな基本ないし。

(ループ)
0786デフォルトの名無しさん2015/08/17(月) 14:33:27.80ID:rLKFJTDK
>>785
だから、「画面から呼び出す関数内で適切なエラー処理」ってなんだよ?

適切かどうかは、戻り側しかわからないって言ってるだろ。

ログもそうだり、リトライするかどうかも
戻り側でしか判断できない。

お前が言ったことが呼び出し元で判断するべきだったことかもわかるように
内部で適切なエラー処理はできないから、呼び出し元に変えるのが原則。

呼び出し元って言ったらフォームのイベントハンドラ。
だから基本的に「き・ほ・ん・て・き」にフォームにのみ
On Errorが存在する。フォームから呼び出されるモジュールや
クラスにはErr.raiseをやっても、On Errorは存在しない。って
書いてるんだろうが。
0787デフォルトの名無しさん2015/08/17(月) 14:34:47.97ID:rLKFJTDK
なお勝手にやるリトライの件については、
俺が>>761に書いている。

>>761
> 多くの場合、関数一つに対して、
> On Errorは全くないか、一個だけ。
>
> そして基本的にフォームにのみOn Errorが存在する。
> フォームから呼び出されるモジュールやクラスには
> Err.raiseをやっても、On Errorは存在しない。
>
> On Errorが必要なのは、終了処理が必要な場合とか
> 内部で勝手にリトライする場合とかだけだから。
0788デフォルトの名無しさん2015/08/17(月) 14:39:32.99ID:ZAOWqUh+
>>786
> ログもそうだり、リトライするかどうかも
> 戻り側でしか判断できない。
いやだから、データベースの接続の話で言えば、接続スキームごとの処理なんて
画面の関数内じゃ適切な判断はできないだろって。
言ってることがわかんないかな。

> 呼び出し元って言ったらフォームのイベントハンドラ。
> だから基本的に「き・ほ・ん・て・き」にフォームにのみ
だからそんな基本ないし。

On Error Gotoは必要な場所に書けば良い。
Formのイベントハンドラ以外でも。
0789デフォルトの名無しさん2015/08/17(月) 14:47:30.95ID:rLKFJTDK
>>788
> いやだから、データベースの接続の話で言えば、接続スキームごとの処理なんて
> 画面の関数内じゃ適切な判断はできないだろって。

画面の関数で接続スキームをい考慮する必要が無いように作るんだよ。
お前設計ってわかってるか?

適当に作って長くなったら関数に分ける
程度のことしかしてねーだろ。

> > 呼び出し元って言ったらフォームのイベントハンドラ。
> > だから基本的に「き・ほ・ん・て・き」にフォームにのみ
> だからそんな基本ないし。

あ、基本的と基本の違いがわからない?
0790デフォルトの名無しさん2015/08/17(月) 14:53:35.09ID:ZAOWqUh+
>>789
> 画面の関数で接続スキームをい考慮する必要が無いように作るんだよ。
そうだよ。そういってるじゃん。
画面から呼び出す関数内でエラー処理しろって。

逆に、画面から呼び出す関数内でエラー処理しなければ、画面の関数内の
On Error Gotoの飛び先に、下位で使用するライブラリ/モジュールが発する
実行時エラーやVBのランタイムエラー全てが集まるんだが。
これでどうやって適切なエラー処理ができるのかと。
0791デフォルトの名無しさん2015/08/17(月) 15:05:17.90ID:Z0BDbNEv
とりあえず、DoEvents
0792デフォルトの名無しさん2015/08/17(月) 15:10:46.09ID:5qFxOqag
盛り上がってるな!
0793デフォルトの名無しさん2015/08/17(月) 15:31:28.18ID:w34N0MAp
>>770
だから直上の呼びたし元の責任だって言ってるでしょ。

何階層も下で起こった例外を全部想定して適切な処理なんかできるのかよ。
できるわけないだろ。

出来るのはただ例外を捕捉することだけ。
これも勘違いしてる奴が多いけど、そういうのを俗に「握りつぶす」って言うんだよ。
0794デフォルトの名無しさん2015/08/17(月) 19:42:56.83ID:rLKFJTDK
>>790
だから「エラー処理」の内容はなんだよ?

ログを出力するのは、関数内でやることじゃない。
リトライ処理も、関数内でやることじゃない。

お前は何をやるつもりだ?

>>793
> 何階層も下で起こった例外を全部想定して適切な処理なんかできるのかよ。

「適切な処理」の内容はなんだよ?

例外っていうのは、基本的に関数内でやれることは何もない。
あくまで基本的にな。

戻り値を返すのと同じように、上に例外を返すしか
することはないんだよ。
あくまで基本的にな。
0795デフォルトの名無しさん2015/08/17(月) 19:48:56.10ID:rLKFJTDK
俺「画面の関数で接続スキームを考慮する必要が無いように作るんだよ」

馬鹿「なるほど画面から呼び出す関数内でエラー処理しろって意味か」


何なんだろうねw
0796デフォルトの名無しさん2015/08/17(月) 19:50:38.54ID:rLKFJTDK
>>790
> 実行時エラーやVBのランタイムエラー全てが集まるんだが。
> これでどうやって適切なエラー処理ができるのかと。

戻り値でも実行時エラーでも同じだが、
エラーの種類(エラー番号)を取得して
それに応じて処理を書けばいい。
0797デフォルトの名無しさん2015/08/17(月) 19:55:59.41ID:rLKFJTDK
>>793
> 出来るのはただ例外を捕捉することだけ。
> これも勘違いしてる奴が多いけど、そういうのを俗に「握りつぶす」って言うんだよ。

握りつぶすっていうのは、下の階層で起こった例外を
捉えて、その例外を再送出しないこと。

例外が起こっているのに、上の階層で例外が起こったことが
わからなくすることを「握りつぶす」という。

殆どの場合、例外は常に上の層に戻さなければならない。
最終的にイベントハンドラがそれをキャッチして
画面・ログなどにエラーが発生したことを記録する。

例外が起きても基本的にやれることは何もないので、
フォームにのみOn Errorを書いて、
関数内ではOn Errorは必要ない。

あくまで基本的にだから、>>721にこのように書いている。
> On Errorが必要なのは、終了処理が必要な場合とか
> 内部で勝手にリトライする場合とかだけだから。
0798デフォルトの名無しさん2015/08/17(月) 20:07:37.91ID:dWGxJI3I
よく分かんねーけど、コード量減らすように実装しろよ
0799デフォルトの名無しさん2015/08/17(月) 20:13:29.02ID:rLKFJTDK
>>798
全くだよw

On Errorなんて必要な時に書けばいいだけ。
起きた例外を下位の関数で処理することは殆ど無いのだから
俺は基本的に何も書かなくていいと言ってる。
何も書かない=コード量は少ない。
0800デフォルトの名無しさん2015/08/17(月) 23:12:37.04ID:JZR2Z4Qh
>>794
何か全然会話になってないなw

こっちは例外処理は通常は直接の呼び出し元でやるものだと言ってるのに、
関数内で出来ないから例外投げてるんだとか反論になってないし何を言ってるのかさっぱり分からん。

>>797
お宅も簡単な話が分からないお方。
だから、呼び出し階層の何階層も下で発生した例外に対して適切な処理なんかできるわけないだろ。
出来るのは単に捕捉して何もしないだけ。
そういうのを俗に「握りつぶす」って言うんだよ。
0801デフォルトの名無しさん2015/08/17(月) 23:13:39.65ID:JZR2Z4Qh
しかし、これがVBerのレベルかよ
0802デフォルトの名無しさん2015/08/17(月) 23:16:10.46ID:nzUWrzDx
ええとさ、話が難し過ぎてよく分からないんだけど、
シュチュエーションにもよるかも知れないけど、
そもそもDBを扱うとこらへんでエラーとか起こす場合って
別クラスにして委譲(VB6では委託?)でやらない?

そこの役割に併せて振る舞いなんて変わるもんなんだろうと思うし。

画面の情報が必要な場合は委譲先に画面の参照を渡してやれば別にBLの中で始末出来ると思うんだけど。

考え方おかしい?
0803デフォルトの名無しさん2015/08/18(火) 00:15:54.45ID:jyJvXHy3
>>800
だからお前の言う「例外処理」の中身が何かを言えれば
問題は解決するんだよ。

ログは呼び出し元でやる。
リトライも呼び出し元である。

なぜならログに出すかどうかは
リトライするかどうかは呼び出し元がが決めることで
勝手にやることじゃないからだ。

お前の言う「例外処理」の中身はなんだよ。
見つからないから言えないだろ

> だから、呼び出し階層の何階層も下で発生した例外に対して適切な処理なんかできるわけないだろ。
だからお前の言う「適切な処理」ってなんだよ。

さっき聞いたら、ログとかリトライとか
間違った答えを言ったよな?
0804デフォルトの名無しさん2015/08/18(火) 00:16:07.07ID:XBdAgPin
VBって例外でしか帰ってこないオブジェクトなんてざらだし
必要ならgoto 0で囲むでほぼ問題ないけどな
0805デフォルトの名無しさん2015/08/18(火) 00:17:32.02ID:jyJvXHy3
>>800
> 出来るのは単に捕捉して何もしないだけ。

俺は原則として捕捉すんなって言ってんの。
イベントハンドラ以外でOn Errorを書かないって言ってるんだから
そういうことだろ。

なんで捕捉するんだよ。
捕捉したってできることなにもねーだろ。

あるというのならその具体的な中身
言ってみろって。
0806デフォルトの名無しさん2015/08/18(火) 00:19:32.93ID:idKk+WSR
Sortプロパティで使用してるフィールドの値を変更すると
すぐに並び変わってしまうんだが
何とかならんのか?

Dim rs As New ADODB.Recordset
Dim i As Long

rs.Fields.Append "f1", adVarWChar, 50
rs.Open
For i = Asc("a") To Asc("e")
  rs.AddNew "f1", Chr(i)
Next
rs.Sort = "f1 DESC"
Do While Not rs.EOF
  MsgBox rs.AbsolutePosition & ": " & rs("f1").Value
  If rs("f1").Value = "c" Then
    rs("f1").Value = "z"
    rs.Update
    MsgBox "update後: " & rs.AbsolutePosition & ": " & rs("f1").Value
  End If
  rs.MoveNext
Loop
0807デフォルトの名無しさん2015/08/18(火) 00:20:08.58ID:jyJvXHy3
>>804
> VBって例外でしか帰ってこないオブジェクトなんてざらだし

例外でしか帰ってこないんじゃなくて
エラーは例外で返すのが正しいやり方だからだよ。

内部で発生したエラーは何もすることがなければ
内部でトラップする必要もない。

内部で何かすることがあれば別だが
基本的に何もない。

だから内部でトラップする必要はないし、
例外は呼び出し元で処理する。

ちなみに俺が言ってる処理の内容とは
ログに保存するとかリトライのために再実行するとかだな。
0808デフォルトの名無しさん2015/08/18(火) 00:24:44.04ID:XBdAgPin
今更そんな俺理論展開されてもなあ
0809デフォルトの名無しさん2015/08/18(火) 00:25:20.58ID:jyJvXHy3
という感想はいらないから、レスしてねw
08108062015/08/18(火) 00:25:33.69ID:idKk+WSR
Filterプロパティでも同じだ。
どんどん減っちゃう

Dim rs As New ADODB.Recordset
Dim i As Long

rs.Fields.Append "f1", adVarWChar, 50
rs.Open
For i = 1 To 5
  rs.AddNew "f1", "a"
Next
rs.Filter = "f1='a'"
Do While Not rs.EOF
  MsgBox rs.RecordCount
  If rs.AbsolutePosition = 3 Then
    rs("f1").Value = "z"
    rs.Update
    MsgBox "update後: " & rs.RecordCount
  End If
  rs.MoveNext
Loop
0811デフォルトの名無しさん2015/08/18(火) 00:26:43.68ID:jyJvXHy3
一応話をそらすことが出来ないように、
>>761で俺が言ったことを再掲しておこう。

761 自分:デフォルトの名無しさん[sage] 投稿日:2015/08/17(月) 10:40:58.03 ID:HKx5lNza [2/13]
>>756
VB6では不可能。

だけれど、ひとつの関数に、複数のOn Errorがあるときは
コードが複雑だって考えた方がいい。

多くの場合、関数一つに対して、
On Errorは全くないか、一個だけ。

そして基本的にフォームにのみOn Errorが存在する。
フォームから呼び出されるモジュールやクラスには
Err.raiseをやっても、On Errorは存在しない。

On Errorが必要なのは、終了処理が必要な場合とか
内部で勝手にリトライする場合とかだけだから。
0812デフォルトの名無しさん2015/08/18(火) 00:45:21.31ID:UD1h5Kxm
>>811
素朴な疑問なんだけどさ、
sql1を実行して結果セットを取得しようとして、
何らかしらの要因で実行時エラーが発生したとき、代替としてsql2の結果セットを
取得したい場合はどうするの?
0813デフォルトの名無しさん2015/08/18(火) 00:53:31.94ID:jyJvXHy3
>>812
こう書けばいいじゃん?

VB6を使っていたのはもうずっと昔だから
細かい構文は所は言いっこなしな。

Private Sub Button1_Click()
 Dim ret As MyResult

 On Error Goto Failback
 Set ret = foo()
 PrintData(ret)
 Exit Sub
Failback:
 On Error Goto ErrHandler
 Set ret = bar()
 PrintData(ret)
 Exit Sub
ErrHandler:
 ErrorLog(Err)
End Sub

> 何らかしらの要因で実行時エラーが発生したとき
実行時エラーの種類は問わないってことでいいよね?
問う場合は、エラー番号で処理を変えるだけだけど。
0814デフォルトの名無しさん2015/08/18(火) 00:57:26.53ID:jyJvXHy3
補足しておくと

> 何らかしらの要因で実行時エラーが発生したとき、代替としてsql2の結果セットを
> 取得したい場合はどうするの?

代替の結果セットを使うという処理を透過的。
つまり内部で発生したsql1の結果セット取得のエラー発生を
握りつぶしたい。という場合なら、内部でやるのが正しい。

だがそういうことは例外中の例外。
まずそんな要件が必要になることは殆ど無いない。

だから、基本的に内部でエラーのトラップはしないと
言ったんだ。
0815デフォルトの名無しさん2015/08/18(火) 01:07:22.67ID:UD1h5Kxm
>>813
えー?一つの関数の中にエラーの分岐を2箇所も書くの?抵抗あるなぁ。

あと、こう言うのは仕事場によっては殆どないところもあるけど、
仕事場によっては3.11以来、何げに多用しているところもあるみたいだよ。
0816デフォルトの名無しさん2015/08/18(火) 01:08:42.63ID:jyJvXHy3
>>815
多用するならヘルパー関数を用意すればいいだけ。

そういうのは例外なんで
例外の話を持ちだしても意味は無いよ。
0817デフォルトの名無しさん2015/08/18(火) 01:26:42.47ID:UD1h5Kxm
>>816
例外?何を基準に例外と言ってるんだろう。
結構やってるところは見掛けるけど。

わざわざヘルパー関数持ちださなくても関数切り出して呼び出し元、
または呼び出し元が呼んでる別関数やメソッドで簡単に始末付けられると思うんだけど、
何かこだわりがあるの?
0818デフォルトの名無しさん2015/08/18(火) 01:30:38.65ID:jyJvXHy3
>>817
> 例外?何を基準に例外と言ってるんだろう。

世の中のオープンソースのコード。
でいいんじゃない?

言語が違ってもやりかたは一緒。
見かけるというのなら、オープンソースという
誰もが検証可能な方法で見せてよ。

関数が1000個あったとすれば、
そんなエラーの時に代替関数を呼ぶ
なんてコードは1個あるかどうかでしょう?
0819デフォルトの名無しさん2015/08/18(火) 01:34:46.76ID:jyJvXHy3
>>817
> 何かこだわりがあるの?
そりゃあるでしょw

プログラムっていうのは簡単に複雑になるのだから
よりシンプルになる方法にしないといけない。

よりシンプルっていうのはひとつの関数が
やる役割は一つであるということ。

sql1の結果を返す関数、sql2の結果を返す関数
フォールバック関数。にそれぞれわけて
それぞれの関数を単体テストを行う。

そうすればフォールバック処理を行う関数が
いくらあったとしても、フォールバック部分の
単体テストコードは一つで良くなる。

よりシンプルにするため、関数内で勝手にフォールバックを
行うという処理は極力避けないといけない。
0820デフォルトの名無しさん2015/08/18(火) 01:35:32.92ID:UD1h5Kxm
>>818
あと、握り潰すにしても何か処理を行って握り潰したり、何もしないで握り潰す場合もあるから、
戻りもどの関数を抜けたかログに出すことがあると思うんだけど、
そう言うのも例外?
0821デフォルトの名無しさん2015/08/18(火) 01:44:41.58ID:UD1h5Kxm
>>819
関数に役割を持たせる?
役割を持つのはクラスであって、メソッドはその振る舞いではないの?

まあ、それぞれ単体テストをして、と言うのは同意だけど。

でもVB6にNUNITやJUNITみたいなもんってあったっけ?
0822デフォルトの名無しさん2015/08/18(火) 01:46:16.89ID:jyJvXHy3
> 戻りもどの関数を抜けたかログに出すことがあると思うんだけど、
Err.souceとかerlで取得すればいいじゃん?
0823デフォルトの名無しさん2015/08/18(火) 01:47:01.25ID:jyJvXHy3
>>821
> でもVB6にNUNITやJUNITみたいなもんってあったっけ?

vbUnitがあるだろ
0824デフォルトの名無しさん2015/08/18(火) 01:58:24.84ID:UD1h5Kxm
>>822
>>823
そう言うのがあるとは知らんかったわ。
試してないけど抜けた関数の履歴とか取れるんだ。勉強になったわ。

ところでVB6でDelegateの代替方法知らない?
都度クラスとインターフェース作ってもいいけど、VB6のVBEはフォルダ階層もてないし、管理が大変だし
Delegateなら細やかな設定が出来るからもし知ってたら教えて欲しい。

まぁもう寝るからまた明日。
0825デフォルトの名無しさん2015/08/18(火) 02:01:38.78ID:SkfpggCP
こんな時間に
もう使われてない古い言語のスレが伸びるとは
お前らお盆休みはもっと有効に使えよ
0826デフォルトの名無しさん2015/08/18(火) 03:24:35.49ID:ZPt7Io5y
>>803
例外処理の中身なんて例外ごとに違うのに具体的に言えるわけがない。

>>805
例外を捕捉して適切に処理しない(もちろんそれで十分適切なケースもありうるが)のは
例外を握りつぶしているのと同じ。
馬鹿じゃないのか。


大丈夫かVBer。
0827デフォルトの名無しさん2015/08/18(火) 09:21:28.90ID:+rFwHajx
VB6では例外などどうという事はない、すべて On Error Next と唱えれば解決する(キリッ
0828デフォルトの名無しさん2015/08/18(火) 10:42:52.32ID:sD6hS5G8
>>805
> なんで捕捉するんだよ。
> 捕捉したってできることなにもねーだろ。

ファイルオープンエラーが発生したとき、Errにはエラー番号とその番号に対応したメッセージしか入っていない。
どこで、何のファイルを、どうオープンしようとしたかを取得できないし、もちろんスタックトレースも取れない。

呼び出し先で送信メッセージを構築してどこかに何かの手段で送信するとき、そのメソッド内でトラップしなければ
どこに何を送信しようとしたときに、どういうエラーが起こったのか、あるいは内容がエラーの受信メッセージも
失われるだろう。

要するに、実行時エラーが発生する可能性があるメソッドを呼び出すメソッドでは、基本的にOn Error Gotoで
エラーをトラップしなければならない。
ログ出力一つとっても、そのメソッド内でしか適切なログは出力できない。
0829デフォルトの名無しさん2015/08/18(火) 10:51:30.64ID:sD6hS5G8
>>813
> ErrHandler:
>  ErrorLog(Err)
> End Sub

このErrには何が入っている?
foo()で失敗したのか、bar()で失敗したのか、クエリの内容は何なのか、パラメータは何だったのか
さっぱりわからない。

それとも、データベースアクセスするときは、ログ出力用にグローバルに何かを保存しておくのか?
0830デフォルトの名無しさん2015/08/18(火) 10:55:32.37ID:sD6hS5G8
あ、読み違えてた。

Private Sub Button1_Click()
 On Error Goto Failback
 Set ret = foo()
 Exit Sub

Failback:
 On Error Goto ErrHandler
 Set ret = bar()
 Exit Sub

ErrHandler:
 ErrorLog(Err)
End Sub

という構造か。
bar()で失敗したことはわかるが、いずれにしてもエラーの詳細情報はわからない。
0831デフォルトの名無しさん2015/08/18(火) 11:01:19.55ID:sD6hS5G8
>>813
Private Sub Button1_Click()
 On Error Goto ErrHandler
 foo()
 Exit Sub
ErrHandler:
 '何らかのエラー処理
End Sub

foo()の中で要トランザクションなデータベースアクセスをするとする。
正しく処理が終了すればcommitするし、エラーが発生すればrollbackする。
問題は、一意性制約違反などのような場合も、実行時エラーが発生するような場合だ。

このとき、トランザクション処理は、どこにどういう風に実装するのか?
0832デフォルトの名無しさん2015/08/18(火) 11:15:09.60ID:sD6hS5G8
>>813のコードには重大な問題点が二つある。

ひとつは、下位の実装詳細が染み出ている点。
この実装方針では、○○処理を行うときのデータベースアクセス内容(実装詳細)が変更になったとき、
Formのコードを変更する必要がある。

もうひとつは、テスト容易性の問題。
トランザクション処理をどう実装するつもりなのかわからないが、このままだと自動テストを書こうと思っても、
「foo(), bar()を呼び出す処理」を呼び出すことができない。
0833デフォルトの名無しさん2015/08/18(火) 22:46:33.49ID:jyJvXHy3
>>826
> 例外処理の中身なんて例外ごとに違うのに具体的に言えるわけがない。

自分で適当な例を作ればいいだろ。
0834デフォルトの名無しさん2015/08/18(火) 22:48:27.52ID:jyJvXHy3
>>828
> ファイルオープンエラーが発生したとき、Errにはエラー番号とその番号に対応したメッセージしか入っていない。
> どこで、何のファイルを、どうオープンしようとしたかを取得できないし、もちろんスタックトレースも取れない。

取れるようにすればいいだけじゃん。
しかも、別に取れなくても動作には問題ない。

その機能はオプションだ。
0835デフォルトの名無しさん2015/08/18(火) 22:58:32.11ID:jyJvXHy3
>>831
その例ではfoo()という関数がデータベースを扱っている。
だがfoo()だけでで終わるプログラムはないだろう。bar()やbaz()も存在する。

さて、その例ではfoo()だけを呼んでいるが、
foo()とbar()を実行するとしたらどうなるか?

foo()の中でcommit()してはならないことが多いだろう。
foo()とbar()の両方の処理ができた時commit()を行う。
つまりfoo()やbar()やbaz()関数の中でcommit()やrollback()を
行うのは間違いだということだ。

また外にあることからわかるようにデータベースの接続は関数の引数として渡す。
もちろんクラスにしてインスタンスプロパティとして持たせても良い。

つまり回答はこういうことだ

Private Sub Button1_Click()
 On Error Goto ErrHandler
 Set conn = new DBConnection
 Set logic = new DBLogic
 logic.conn = conn

 conn.begin();
 logic.foo()
 logic.bar()
 conn.commit();
 Exit Sub
ErrHandler:
 conn.rollback();
End Sub
0836デフォルトの名無しさん2015/08/18(火) 23:04:46.25ID:jyJvXHy3
なんか実装詳細とかいっているからこう訂正しておこう

Private Sub Button1_Click()
 On Error Goto ErrHandler
 Set res = new Resource
 Set logic = new Logic
 logic.res = res

 res.init();
 logic.foo()
 logic.bar()
 res.save();
 Exit Sub
ErrHandler:
 res.reset();
End Sub

このコードは内部でデータベースを使うかどうかは関係ない。
ファイルを使っても実装可能。

本来コネクション(リソース)と
そのコネクション(リソース)を使ったロジックは分けるべきもので、
実際各種ライブラリを見れば分かれている。

commitやrollbackは関数内部で呼び出すものじゃない。
そういうことをすると関数に汎用性がなくなり
別の箇所で使いづらくなってしまう。
0837デフォルトの名無しさん2015/08/18(火) 23:10:47.20ID:jyJvXHy3
>>828
> ファイルオープンエラーが発生したとき、Errにはエラー番号とその番号に対応したメッセージしか入っていない。
> どこで、何のファイルを、どうオープンしようとしたかを取得できないし、もちろんスタックトレースも取れない。

これに関してはVBの問題でもある。
この(不完全な)解決策を俺は知っているが、
あんたはどう書くつもりかね?

特にスタックトレースとか、
あんたなら取れるっていうんだろう?

>>834でも書いたように、この機能はオプションだ。
だから欲しいならば追加で書けばいい。
だが書かなくてもいい。情報が得られないだけで正しく動く。
俺の言うとおりの例外を書き方をしていればね。
0838デフォルトの名無しさん2015/08/19(水) 02:13:36.55ID:7dO1dSWy
いやー、画面側でエラー取っ捕まえようが、内部でとっ捕まえようが、
適材適所でいいような気がするんだけどなー。

その場でただログ出せばいいだけならエラー出したメソッドで始末してもいいし、
色々深ーい複数のメソッドでDBに登録していてエラーでロールバックするなら、
トランザクション切ったのと同じ階層で捕まえたいときもあるだろうし、
よく分からないけどまた他の場面だと画面で捕まえたいときもあるんじゃないの?

必ずどっちかでやろうというのは処理の一貫性は取れるかも知れないけど、
ちょっと頭固いかも知れないよ。
0839デフォルトの名無しさん2015/08/19(水) 10:11:00.26ID:P9UlQ5Ns
>>837
> これに関してはVBの問題でもある。

そう。
だから、*VB6*では、実行時エラーを発生する可能性があるメソッドを呼び出す場合は、
基本的にそのメソッド内でエラーをトラップしなければ、まともなログ一つ出力できない。

あくまでも、VB6の実装方針の話だ。

> だが書かなくてもいい。情報が得られないだけで正しく動く。

情報が得られないのは致命的だと俺は思うが、そうは思わないのだとしたらこのやりとりに
意味は全くない。
0840デフォルトの名無しさん2015/08/19(水) 10:13:45.74ID:P9UlQ5Ns
>>836
> なんか実装詳細とかいっているからこう訂正しておこう

実装詳細と言っているのは、アーキテクチャレベルでデータベースを使うかどうかや、
○○処理をするには「foo()を実行し、エラーならbar()を実行する」という内容のこと。

○○処理をするのに、「foo()を実行し、エラーならbar()を実行すし、最後にbaz()
を実行する」に変更になったとき、そのロジックがFrom内にしか存在しないのは問題とは
思わないか?
0841デフォルトの名無しさん2015/08/19(水) 10:24:28.70ID:P9UlQ5Ns
>>838
> いやー、画面側でエラー取っ捕まえようが、内部でとっ捕まえようが、
> 適材適所でいいような気がするんだけどなー。
>
> 必ずどっちかでやろうというのは処理の一貫性は取れるかも知れないけど、
> ちょっと頭固いかも知れないよ。

全く同意。

なんでOn Error GotoをFormのメソッドにしか書いてはいけないと思っているのか、意味がわからない。
0842デフォルトの名無しさん2015/08/19(水) 13:34:47.50ID:xc/++r0f
>>839
> だから、*VB6*では、実行時エラーを発生する可能性があるメソッドを呼び出す場合は、
> 基本的にそのメソッド内でエラーをトラップしなければ、まともなログ一つ出力できない。

トラップしたらまともなログが出せるっていうの?
スタックトレースはトラップしても出せないよね?

それに「まともなログ」はオプションって言ったとおり。
まともなログは出さなくてもいい。

だから「基本」ではトラップは必要ないんだよ
0843デフォルトの名無しさん2015/08/19(水) 13:36:24.21ID:xc/++r0f
>>841
> なんでOn Error GotoをFormのメソッドにしか書いてはいけないと思っているのか、意味がわからない。

書いてはいけないとは言っていない。
なんで勘違いしているのか、こっちのほうが意味がわからない。

↓ 見ての通り基本的には存在しないといってる。

761 自分:デフォルトの名無しさん[sage] 投稿日:2015/08/17(月) 10:40:58.03 ID:HKx5lNza [2/13]
>>756
VB6では不可能。

だけれど、ひとつの関数に、複数のOn Errorがあるときは
コードが複雑だって考えた方がいい。

多くの場合、関数一つに対して、
On Errorは全くないか、一個だけ。

そして基本的にフォームにのみOn Errorが存在する。
フォームから呼び出されるモジュールやクラスには
Err.raiseをやっても、On Errorは存在しない。

On Errorが必要なのは、終了処理が必要な場合とか
内部で勝手にリトライする場合とかだけだから。
0844デフォルトの名無しさん2015/08/19(水) 13:52:46.45ID:P9UlQ5Ns
>>842
> トラップしたらまともなログが出せるっていうの?

出せますね。

> スタックトレースはトラップしても出せないよね?

スタックトレースが取れないからこそ、実行時エラーが発生する可能性があるメソッド内でエラーを
トラップして、少しでもまともなログを出力すべきだと言ってる。

> まともなログは出さなくてもいい。

そういうことですか。
なら、この一連の議論に何の意味もありませんな。
0845デフォルトの名無しさん2015/08/19(水) 13:55:00.62ID:P9UlQ5Ns
>>843
> 書いてはいけないとは言っていない。

そういう言葉遊びはしたくないんですが。

> ↓ 見ての通り基本的には存在しないといってる。

だから、そんな基本なんかないって初めから言ってるでしょう。

On Error Gotoは必要な場所で書けば良い。

これまで対話してわかったのは、君がForm以外で「必要」だと思うことがなかったということ。
なので、これ以上話しても意味ないね。
0846デフォルトの名無しさん2015/08/19(水) 13:57:37.40ID:P9UlQ5Ns
>>842
> だから「基本」ではトラップは必要ないんだよ

まぁ、その「基本」は、プロが書くプロダクションレベルに達してないと言っておきましょか。
俺はプロが相手だと思ってたんだが、どうもそうじゃないらしい。
0847デフォルトの名無しさん2015/08/19(水) 14:03:09.81ID:7dO1dSWy
よく分かんないけど、エラー時にまともなログ出してなかったら、
何かあったとき事象の確定と原因の解明に時間掛かりそう。
0848デフォルトの名無しさん2015/08/19(水) 14:05:50.40ID:P9UlQ5Ns
>>847
まともなログなんて出さなくていいって人だなんて思わなかったら、無駄な議論をしてしまった。
0849デフォルトの名無しさん2015/08/19(水) 14:37:25.12ID:y8EVHyLD
とはいえ、どうでも良いログで埋め尽くされるとイベントビュアーが読みにくい。
0850デフォルトの名無しさん2015/08/19(水) 17:25:41.76ID:iYQ3AJrP
デバイスにアクセスする前に存在を確認したのに
読んでる途中に抜かれてしまうことだってあるわけで
そういう、どうしても必要な狭い範囲で使わないといけない
0851デフォルトの名無しさん2015/08/19(水) 19:56:27.86ID:xc/++r0f
>>844
> スタックトレースが取れないからこそ、実行時エラーが発生する可能性があるメソッド内でエラーを
> トラップして、少しでもまともなログを出力すべきだと言ってる。

えー、スタックトレース取れるとか言ったくせに
取れないのかよ。嘘つきだな。

まともなログを出力するべきということに反対はしないが、
別にまともなログを出力しなくても動作はする。
0852デフォルトの名無しさん2015/08/19(水) 19:57:59.66ID:xc/++r0f
>>848
だから基本的にって言ってるだろ。
なんで応用でログ詳細に出す場合は〜って言ってるんだよw.

ログ出さなくても動くだろ。
違うか?

正しく動く最小限のものを
基本っていうんだよ。

基本的なことだろw
0853デフォルトの名無しさん2015/08/19(水) 20:01:18.66ID:ac5UfI6n
例外を握りつぶすのがくそだってだけだろ
on error でとってももっかいerr.raiseすりゃーいいだけで
それをやらないやつがダメってだけでそ
0854デフォルトの名無しさん2015/08/19(水) 20:03:06.50ID:xc/++r0f
あと、詳細なログを出す場合でも、実行時エラーに変換する。

まず、基本として、フォームにのみOn Errorを書く。
そして応用として、フォーム以外に書いたOn Errorは
トラップしたあと、任意の処理をして
またErr.raiseをして実行維持エラーを発生される。

具体的なコードはこうなる。VB6を使っていたのは
もうずっと昔だから細かい構文は所は言いっこなしな。

まず基本。フォームにOn Errorを書く。
詳細なログとかが必要なければこれだけで正しく動く。

Private Sub Button1_Click()
 On Error Goto ErrHandler

 foo()

 Exit Sub
ErrHandler:
 ErrorLog(Err)
End Sub
0855デフォルトの名無しさん2015/08/19(水) 20:08:48.69ID:xc/++r0f
そして応用として詳細なエラーを出したい場合は
foo()の中をこのように書く。
(手抜き。真面目にやる場合もう少し工夫が必要)

Private Sub foo()
 On Error Resume Next

 hoge()
 If Err.Number Then
   ' ここで新しいnumberとかsourceとかdescriptを生成する
   Err.Raise number, source, description
 End If

 hage()
 If Err.Number Then
   ' 同じくここで新しいnumberとかsourceとかdescriptを生成する
   Err.Raise number, source, description
 End If

End Sub

On Error Resume NextではなくOn Error Gotoを使用してもいいが
On Error Gotoを使う意図しない場所でエラーが発生しても、
同じ場所でトラップしてしまうため、Resume Nextの方がやりやすい。

くれぐれも言っておくが、原則として関数の中でエラーをトラップして
戻り値でエラーを返してはいけない。
特に理由がない限り、エラーをトラップして、また実行時エラーにして
呼び出し元に返す。

この原則を守っていれば、基本のコードから、応用のコードに
スムーズに発展させていくことができる。
0856デフォルトの名無しさん2015/08/19(水) 20:20:04.74ID:6kLJyeKe
>>847
> よく分かんないけど、エラー時にまともなログ出してなかったら、
> 何かあったとき事象の確定と原因の解明に時間掛かりそう。

そのとおりだよ。だからプロダクトレベルにするときは
応用としてまともなログを出すようにする。

今俺が言ってるのは基本の話。
どうもそのことを理解できない人がいるようで(笑)

VBがエラーメッセージを出しているので
基本としてはそれをログとして表示すればいい。
もっと情報が必要なら、コードを追加する。
0857デフォルトの名無しさん2015/08/19(水) 21:34:27.63ID:SDK3VImY
今頃VBのエラー処理について熱く語って何になんの?
0858デフォルトの名無しさん2015/08/19(水) 22:17:26.31ID:KQqDAI1l
そこにVB案件があるからな
0859デフォルトの名無しさん2015/08/19(水) 22:57:36.29ID:Dk4EiQkJ
>>855
それぞれのErr.Raiseの直後にExit Subが必要なのでは
0860デフォルトの名無しさん2015/08/20(木) 01:45:36.47ID:cwNl45xz
>>855
>くれぐれも言っておくが、原則として関数の中でエラーをトラップして
>戻り値でエラーを返してはいけない。
>特に理由がない限り、エラーをトラップして、また実行時エラーにして
>呼び出し元に返す。

これは何で?
0861デフォルトの名無しさん2015/08/20(木) 01:50:02.90ID:cwNl45xz
>>859
それはエラーをRaizeしたら次のトラップにすっ飛ぶだろうから無問題だと思うよ
0862デフォルトの名無しさん2015/08/20(木) 02:14:50.32ID:cwNl45xz
>>855
後、蛇足だけど、手抜きとか真面目にやるにはもう少し工夫が必要とか、そのレベルの前に

> If Err.Number Then

の記述はTrue、FalseはあくまでBooleanでErr.Numberに対して暗黙の変換で0ならFalse、それ以外は
Trueになるということを知ってることが前提の記述だから、ちょっと不親切だとは思った。

ま、俺もよくこう言う書き方をしてコードレビューで引っかかって「あ」と思って直してるんだけどね。
0863デフォルトの名無しさん2015/08/20(木) 02:30:16.16ID:t9QZ04pc
>>861
>それはエラーをRaizeしたら次のトラップにすっ飛ぶだろうから無問題だと思うよ
Err.Raiseの前にOn Error GoTo 0を追加しないとそうならないですが
0864デフォルトの名無しさん2015/08/20(木) 02:44:04.52ID:cwNl45xz
>>863
あ、本当だ。On Error Reume Nextが効いてるか。済まない。
0865デフォルトの名無しさん2015/08/20(木) 10:24:58.26ID:AglhBccO
>>851
> えー、スタックトレース取れるとか言ったくせに
> 取れないのかよ。嘘つきだな。

誰と勘違いしてるのか知らないが、俺が初めてスタックトレースに言及したのは>>828で、
そこでスタックトレースは取れないと書いてる。

> まともなログを出力するべきということに反対はしないが、
> 別にまともなログを出力しなくても動作はする。

まともなログが必要な人たちに対する「基本」の話だと思ったから反論したまでで、
それが必要ないと思ってる人たちの「基本」には興味が無い。

>>852
> 正しく動く最小限のものを
> 基本っていうんだよ。

プロダクションレベルの「基本」もあれば、エラー処理は気にしないレベルの「基本」もある。
君の「基本」が全てのケースの基本だと思わないこと。
0866デフォルトの名無しさん2015/08/20(木) 10:26:43.39ID:AglhBccO
>>855
> そして応用として詳細なエラーを出したい場合は

君の言う「応用」が、プロダクションレベルでは「基本」なんだよ。
Formからの呼び出し先でエラー処理をするのがプロダクションレベルの基本。

念のため書くが、エラー処理というのは、エラーかどうかを判定する、というところ
から始まる処理全て。
0867デフォルトの名無しさん2015/08/20(木) 11:47:50.53ID:AglhBccO
書こうかどうか迷ったが、やっぱり書いておこう。
ちなみに、この件で議論するつもりはない。

>>855
> Private Sub foo()
>  On Error Resume Next
>
>  hoge()
>  If Err.Number Then
>    ' ここで新しいnumberとかsourceとかdescriptを生成する
>    Err.Raise number, source, description
>  End If

この方針だと、hoge()内に何か別の実行時エラーを発生するコードが追加されたとき、
hoge()の呼び出し元全てを変更する必要がでてくる可能性が大きい。

「 ここで新しいnumberとかsourceとかdescriptを生成する」というのは「適切なErrオブジェクト
に変換する」ということだと思うが、何度も繰り返したようにhoge()内でエラーとラップ
しなければ適切なErrオブジェクトは生成できない。
0868デフォルトの名無しさん2015/08/20(木) 15:53:24.10ID:n0ICmDs/
何べんも言うようだけどさ、適材適所にするべきなんじゃないの?

エラーの処理を行おうとして、画面側で必要な情報を収穫出来るとも限らないし、
またエラーが起きた関数やメソッドそのもので情報の収集が出来るとも限らない。

エラーが起きる関数を呼び出してる関数にOn Errorを設置する方法もあるだろうし、
更にそれを呼び出してる関数にOn Errorを設置する方法もあるだろうし、
エラーが起きる関数にOn Errorを設置して、取り敢えずそこで収集出来る情報だけ収集して
戻り値にエラーが発生したかの情報だけ抱えて、エラーが発生していたら呼び元、
更にその呼び元で対応する情報を収集したり、エラーに対応する処理を行う場合もあると思うんだ。

もちろん、戻り値に渡さなくても、ErrorをRaizeしなくても、エラー情報を後続に受け渡す術はあるし、それでもいいと思ってる。

また、エラーが起きた関数やメソッドが必要な情報を収集出来るように、
それらを引数で渡したり、スコープを昇格するんだって、最初の設計の段階で考慮出来てるなら問題ないんじゃない?

要は役割に合わせて適材適所で組めばいいんじゃないかと言うことで、
「こう作らなければいけない」と言うのが確定出来るもんじゃなさそうだし、
きちんとシチュエーションに合わせてそれなりに作らないと、
後で自分の首を絞めるだけになる気がするよ。
0869デフォルトの名無しさん2015/08/21(金) 10:14:32.77ID:JTGJp6CX
厳密なエラー処理を組んでたらResume NextもErr.Raiseも滅多に使わないけどな
つうか、汎用関数レベルだとErr.Raiseとかはまず使わないし、エラーがおきたら
戻り値でエラー値を返すほうがBASICらしくてわかりやすいし
0870デフォルトの名無しさん2015/08/21(金) 10:22:35.34ID:J6Urzezo
>>869
FileSystemObjectのメソッドなんかも気軽に実行時エラーを発生しやがるので、
全部ラップする関数を作ってました。
エラーログはそのラップした関数内で出力してた。
0871デフォルトの名無しさん2015/08/21(金) 11:09:20.05ID:5C1fhfGM
なんかさー、今ざーっと読み返してみると、
>>774辺りでログの出力は呼び出し元が判断するとか書いてあるけど何なんだろうね、これ。

呼び出し元が別で呼び出し先が共通の事しか考慮してないよね。

呼び出し元が共通で呼び出し先が別でもそうするつもりなんかね。

VBはしばらくやってないとか言ってたけど、一体今何の言語やってるんだろと思うわ。
0872デフォルトの名無しさん2015/08/21(金) 11:56:10.53ID:JTGJp6CX
>>871
たぶんだけど、どんな環境でも使える低レベルの汎用的な関数やクラスの話じゃないかな
ログ出力するということは、そのログモジュールなりクラスに依存するわけだから
その時点で汎用性が低下するし、あとは処理速度を優先してログ出す出さないを
呼び出し元が決めるっていう使い方ができるようになる。
0873デフォルトの名無しさん2015/08/21(金) 12:33:32.56ID:5C1fhfGM
>>872
汎用性の低下を心配するなら呼び出し元で同じ呼び出し口で違う振る舞いをするメソッドを呼び出せばいいだけの話。

そもそも何でもかんでも同じところでやろうと言うのが間違い。
0874デフォルトの名無しさん2015/08/21(金) 12:55:35.08ID:J6Urzezo
>>872
> たぶんだけど、どんな環境でも使える低レベルの汎用的な関数やクラスの話じゃないかな
いやいや、Formのイベントハンドラから呼び出すメソッドの話だぜ?
普通それはビジネスロジック層のメソッドだろ。
0875デフォルトの名無しさん2015/08/21(金) 13:12:21.60ID:5C1fhfGM
>>872
処理速度によるログ出力有無の話も呼び出し元が別で呼び出し先が同じ場合を想定してるよね。

呼び出し元が同じで呼び出し先が違ってたらどうやって呼び出し元で判断基準を設けるのさ?

>>874
そこに関しては共通処理としてUI層からもBL層からも呼び出す関数やメソッドもあるだろうから何も言わない。
0876デフォルトの名無しさん2015/08/21(金) 13:19:50.13ID:69XeFtbA
VB6で層とか馬鹿じゃねえの?
0877デフォルトの名無しさん2015/08/21(金) 13:24:13.67ID:J6Urzezo
>>875
> そこに関しては共通処理としてUI層からもBL層からも呼び出す関数やメソッドもあるだろうから何も言わない。
もちろんその通りだが、そういうのを全部ひっくるめてFormでエラートラップするのが基本
とか言い出すからおかしくなる。
0878デフォルトの名無しさん2015/08/21(金) 13:35:08.12ID:5C1fhfGM
>>877
あー、あれね。

あの人が言ってる基本とこっちで考えてる基本と言うのには考え方自体の違いがあったみたいだね。

ま、何でもかんでもフォームで捕まえろって訳ではなかったみたいだけど、
捕まえるときはエラーが起こる関数やメソッドの呼び出し元で必ず捕まえろとか、
その後必ず同じエラーをスローしろとか、何言ってるのかちょっと分からないところはあったよね。
0879デフォルトの名無しさん2015/08/21(金) 14:34:42.14ID:J6Urzezo
まーいずれにしてもド素人の戯言なんで、耳を傾ける意義なし。
0880デフォルトの名無しさん2015/08/21(金) 14:37:54.93ID:J6Urzezo
>>871
> VBはしばらくやってないとか言ってたけど、一体今何の言語やってるんだろと思うわ。
そういや読んでて思ったんだけど、failback(と書いてフォールバックとも書いてた)から、
そういう言葉使いするような言語じゃないの?俺は知らんけど。
0881デフォルトの名無しさん2015/08/21(金) 15:21:30.14ID:cNm3l2b6
>>871
どういうこと?

ログの出力は通常、ロガーと呼ばれるオブジェクトが出力する。

ファイルに出力するロガーとか、デバッグコンソールに出力するロガーとか
syslogに出力するロガーとか、そういうのを設定ファイルで自由に切り替えられるようにする。
0882デフォルトの名無しさん2015/08/21(金) 15:22:15.57ID:cNm3l2b6
>>878
> その後必ず同じエラーをスローしろ
同じエラーってかいてあった?
0883デフォルトの名無しさん2015/08/21(金) 15:39:12.00ID:J6Urzezo
普通とか通常とか人によって全然違うな。
ログ出力なんか標準モジュールにSub PutLog()でいいじゃんか。
0884デフォルトの名無しさん2015/08/21(金) 15:52:02.96ID:5C1fhfGM
>>881
それは方式の話でしょ?

さっき言ってた関数やメソッドの処理速度によるログ出力の是非は処理や関数やメソッドが単位になると思うけど

それも処理や関数やメソッド単位で設定ファイルに設定するわけ?
0885デフォルトの名無しさん2015/08/21(金) 15:59:13.80ID:cNm3l2b6
VBって実行時エラーでしか
現在の行番号わからないでしょ?
0886デフォルトの名無しさん2015/08/21(金) 16:01:46.81ID:J6Urzezo
>> 884
> それも処理や関数やメソッド単位で設定ファイルに設定するわけ?
アホなの?syslogとかの設定しらんの?
そういう概念を織り込んだログ出力関数にすればいいだけじゃん。
0887デフォルトの名無しさん2015/08/21(金) 16:02:02.76ID:5C1fhfGM
>>885
さあ?
でも行番号と今までの話とどんな関連性があるのか分からない
0888デフォルトの名無しさん2015/08/21(金) 16:04:42.52ID:J6Urzezo
>>885
え、現在の行番号どうやって取得するんだ?
俺もVB6から離れて長いから、できてたかどうかすら記憶が曖昧だわ。
0889デフォルトの名無しさん2015/08/21(金) 16:16:33.47ID:5C1fhfGM
>>886
誰がどこでsyslogって限定してるんだ?
0890デフォルトの名無しさん2015/08/21(金) 16:41:41.93ID:lpkbHdP+
関数やSubがファーストクラスじゃないと不便すぎる
配列に関数入れてイベント処理みたいなことしたい
Windowsのサブクラス化はこういうもんだったのになぜか実装されなかったなあ
vbscriptは似たような事できるのに
0891デフォルトの名無しさん2015/08/21(金) 16:56:59.71ID:cNm3l2b6
>>888
> え、現在の行番号どうやって取得するんだ?
現在の行番号っていうか、エラーが発生した時の行番号。
強制的にErr.Raiseすれば、その行がわかるはず。
http://d.hatena.ne.jp/ladybug/20031121

http://www.red.oit-net.jp/tatsuya/vb/Err.htm
あとは、Err.Srouceでエラーの発生元のオブジェクト名も
取得できるみたいね。
0892デフォルトの名無しさん2015/08/21(金) 16:58:00.15ID:cNm3l2b6
>>887
> でも行番号と今までの話とどんな関連性があるのか分からない
取得できないスタックトレースの代わりだよ。
0893デフォルトの名無しさん2015/08/21(金) 16:59:41.09ID:cNm3l2b6
>>890
> 関数やSubがファーストクラスじゃないと不便すぎる
それはCallByNameでできる。

全く同じことは出来ないし、ムダにファイルが増えるけどね。
0894デフォルトの名無しさん2015/08/21(金) 17:30:16.65ID:J6Urzezo
>>889
処理や関数やメソッド単位で設定ファイルに設定するとかアホなこと書いてるから、syslogみたいな概念を
取り入れたログ出力関数作れっていってんだよ。

>>891
VB6でどうだったかなんかもはやどうでもいいことだけど、VBAでやってみたら普通には取れないね。
Sub foo()
  Dim i As Long

  On Error GoTo myerr
  i = 10 / 0
  Exit Sub

myerr:
  Debug.Print Erl
  Debug.Print Err.Source
End Sub

結果:
0
VBAProject
0895デフォルトの名無しさん2015/08/21(金) 17:35:08.89ID:J6Urzezo
Err.Raiseしたらか。

VBAじゃダメだね。VB6は環境がない。
(呼び出し元にもErl付けてみた)

Sub foo()
Dim i As Long

On Error GoTo myerr
Err.Raise 10, "foo " & Erl, "error description"
Exit Sub

myerr:
Debug.Print Erl
Debug.Print Err.Source
Debug.Print Err.Description
End Sub

結果:
0
foo 0
error description
0896デフォルトの名無しさん2015/08/21(金) 17:58:01.34ID:98yANW+M
まだ語り合ってんのかよ
0897デフォルトの名無しさん2015/08/21(金) 18:27:12.51ID:J6Urzezo
アホなこと言い始める奴が多いからね
0898デフォルトの名無しさん2015/08/21(金) 19:06:23.52ID:5C1fhfGM
なんか随分先走ってるけどさー、分かったよー。
実際syslogよく知らないけどさー、そこまで豪語するんならさー、
難癖つけた>>884の処理時間が掛かる処理とかでログを出したり出さなかったりを
呼び出し元が同じ関数で、呼び出し先が違う関数で、呼び出し口が一緒の場合、
syslogとやらの概念をどう盛り込んで実装するのか教えてよー。
0899デフォルトの名無しさん2015/08/21(金) 19:23:29.78ID:5C1fhfGM
>>893
それなー

CallByNameはインスタンスでないと使えないからね。

標準のモジュールならAPI関数使ってコールバックするんだろうけど、
一つの関数内でどちらの場合も吸収させるか、別の呼び出しにするか、両方作るか、切り分けに悩むんだよね。

もっとも、同じ関数でやるとしたら、引数で貰う型もどうすればいいか分からんし、
AdressOfでアドレス貰って来たところでCallByNameで使えるか分からんし、
他に切り分け用のフラグ引数に渡すのもなんか汚らしいし、
やっぱ別関数にするしかないかなって思ってる。
0900デフォルトの名無しさん2015/08/21(金) 19:42:09.82ID:5C1fhfGM
VB.NetやC#ならSheardがあるから、プロジェクトで開始先を標準モジュールに設定でもしない限り、
標準モジュールは使わずにクラス使ってシングトンパターンで作るからCallByNameみたいので問題ないんだけどね。

もっともDelegate使うけど。
0901デフォルトの名無しさん2015/08/21(金) 22:57:29.79ID:g4NiQ7/v
>>898
お前意地が悪いなw

ちなみに分かってて書いてるんだろうけど
VB.Netの場合はモジュール
C#の場合は静的クラスな
0902デフォルトの名無しさん2015/08/22(土) 02:00:17.28ID:BHNfM2Fk
>>901
意地が悪い?なんのことでしょう?

さてさて、syslogの概念だっけ?
呼び出し元が共通で呼び出し先が別、同じ呼び出し口で
どうやってその概念を使って実装するのか凄く楽しみ。

人のことをアホ呼ばわりするくらいだから、それはそれはとても素晴らしい実装方法なんでしょう。
0903デフォルトの名無しさん2015/08/22(土) 09:17:38.80ID:JUnMp7GM
ちょっと見ない間にスレ伸びてるな
VB6ブーム再来か?
0904デフォルトの名無しさん2015/08/22(土) 09:29:07.12ID:q6jIoHSL
阿呆と馬鹿がつまらない漫才しているだけだろ
0905デフォルトの名無しさん2015/08/23(日) 08:18:28.07ID:Sv2KumfA
>>902
鬼だw

まあ確かに処理が掛かるところのログを出したり出さなかったりするのは処理、関数やメソッドの単位だろうな

>>886
>そういう概念を織り込んだログ出力関数にすればいいだけじゃん。

いらんと思うけどな、ログ出力関数にそんな余計な概念

だけど>>902が楽しみにしてるらしいから作ってやったらどうだ?w
0906デフォルトの名無しさん2015/08/23(日) 11:42:19.47ID:BEYfXVp0
呼び出し元とか先とか素人くせえなぁ
ロギングなんて外部から注入が基本だろ
本質と関係ない処理をコードに組み込むんじゃねえよ馬鹿が
0907デフォルトの名無しさん2015/08/23(日) 13:30:43.88ID:HlRns8Dj
大体このスレでの経験則から言うと
素人素人と騒ぎ立てる奴はマジでズブのド素人

突っ込んだことを聞くとすぐに答えられなくなる
0908デフォルトの名無しさん2015/08/23(日) 17:41:31.19ID:MIhiF6BJ
コード注入は高度なトピックだよ
VBerには難しいだろうね
0909デフォルトの名無しさん2015/08/24(月) 03:47:25.18ID:tsoQum4i
コード注入は高度なトピックだよ
VBerには難しいだろうね(キリッ

プッ
09108862015/08/24(月) 10:23:17.73ID:z6YfqKru
アホが一人なのか複数人なのか。

> まあ確かに処理が掛かるところのログを出したり出さなかったりするのは処理、関数やメソッドの単位だろうな
というのがアホだっていってんだよ。

ログを出力する所では全てログを出力するコードを書いておく。
ログを出力するかどうかは設定ファイルや起動パラメータで指定する。
ログを出力するかどうかの判断は、ログ出力関数内で行う。

syslogでは、ident, facility, priorigyという概念があって、それらの組み合わせでログ出力設定をする。

アホにこれ以上説明する時間は無い。
自分で調べろ。
0911デフォルトの名無しさん2015/08/24(月) 12:35:39.18ID:EZ01N8pB
>>910
あー、なるほどね。これはVBerはバカだと罵られても仕方ない。と言うかコイツが元凶か。
なら能書き垂れてないで実装書けよと言おうかと思ったけどいいや。内容が知れている。

>>907
その考え方で合ってると思うよ。でもVB6だと言うことで分からない人の為にこの呼び方は避けてたんだけど、
>>802で言った「別クラスにして委譲」、つまりストラテジーパターンと何が違うの?
高度なトピックだとか言ってたけど、多態性を扱うときの基本中の基本じゃん。
0912デフォルトの名無しさん2015/08/24(月) 12:37:34.40ID:EZ01N8pB
>>907じゃなくて>>906か
09138862015/08/24(月) 12:45:53.54ID:z6YfqKru
>>911
しょうもな。実装手段なんかどうでもいい。

ログ出力関数を呼び出す所で出力するかどうかを判断
↓
ログ出力関数内で出力するかどうかを判断

ということがキモなのに。
0914デフォルトの名無しさん2015/08/24(月) 12:48:37.67ID:EZ01N8pB
>>913
その肝が既にダメダメだということに気づいてないからザバー連中に馬鹿にされる
09158862015/08/24(月) 12:53:49.25ID:z6YfqKru
>>914
ということは、Linuxのsyslogを使うdaemonは全てダメダメだってことか。
そういうことなら価値判断基準が全く異なるから、議論しても意味ないわ。

まあ俺としては>>813から連なる長大なゴミを垂れ流す奴に異議申し立てをしたいだけだから。
つか、ひょっとすると>>813支持派なのか?
09168862015/08/24(月) 12:56:06.98ID:z6YfqKru
ログを出力するかどうかは、
・ログ出力を呼び出す箇所
・処理、関数やメソッドの単位で設定
のどちらかがいいだなんて、俺の想定をはずしすぎてるわ。
0917デフォルトの名無しさん2015/08/24(月) 12:57:13.38ID:EZ01N8pB
>>915
どっちも素人か。話す価値ないな。
09188862015/08/24(月) 12:59:45.08ID:z6YfqKru
>>917
煽ってももう何もでませんよ。
0919デフォルトの名無しさん2015/08/24(月) 14:14:31.59ID:RhxZq3rX
つうかいつのまにかsyslogの話になってんのな
俺は動作トレース用のデバックログの話だと思ってたよ
09208862015/08/24(月) 14:21:54.80ID:z6YfqKru
「例えばsyslogの概念を取り入れたログ出力関数を実装すれば、問題は解決する」
というお話。
09218862015/08/24(月) 15:36:35.59ID:z6YfqKru
見落としてたわ。

>>802
> 画面の情報が必要な場合は委譲先に画面の参照を渡してやれば別にBLの中で始末出来ると思うんだけど。
>
> 考え方おかしい?

うん、おかしい。
お前は別言語でもそんなことやってるのか?
だったら今すぐやめろ。
0922デフォルトの名無しさん2015/08/24(月) 16:34:12.93ID:Hydjp05h
801の話かと思ったら違った
0923デフォルトの名無しさん2015/08/24(月) 19:16:59.33ID:EZ01N8pB
>>921
どうせ情報の取得も、委譲も、参照も、まともに理解しないで
呼び先で画面のコントロールに値設定したり、プロパティ値変えるくらいにしか思ってないんだろ?

ちょっと黙っててくれないかなぁ
09248862015/08/25(火) 10:23:43.30ID:3RTDKyUG
>>923
それだけ自信があるなら、なんで「おかしい?」なんて思うのかな。

ModelがViewを参照すべきでないのは常識。
MVP, MVVM, MVCなんか調べてみたら?

あと、
> どうせ情報の取得も、委譲も、参照も、まともに理解しないで
こういう変な思い込みはやめられないの?
0925デフォルトの名無しさん2015/08/25(火) 12:02:43.43ID:OV1myGLx
>「例えばsyslogの概念を取り入れたログ出力関数を実装すれば、問題は解決する」
俺の知ってるsyslogは、出力された定形のログをフィルタしてるだけなんだが
これでログ出力元のプログラム設計がどう解決するんだろ
09268862015/08/25(火) 12:48:02.24ID:3RTDKyUG
>>925
読むのめんどくさいだろうから纏めると、

> まあ確かに処理が掛かるところのログを出したり出さなかったりするのは処理、関数やメソッドの単位だろうな
こういうことを言う人(たち?)がいて、酷い話になると、画面のイベントハンドラに戻らないとログを出力
するかどうかの判定はできないとか主張してた。
というのが「問題」。

だから、ログを出力する可能性があるところ(下位モジュールでも)では全てログ出力する関数を呼んでおいて、
外部で出力するかどうかの判断をすればいいって話。
その例がsyslogの仕組み。
0927デフォルトの名無しさん2015/08/25(火) 12:57:42.97ID:/bqoSHfA
>>925
横槍だけどそれだとiniファイルが
テキストファイルからxmlファイルや
excelファイルに変わったり
DBからもってくるようになったり
このときはこっちからとかになったら
ログの出力処理は大改修になるよね

だからログの出力処理の中では
あくまでログを出すだけで
他の処理は他に任せればいいと
みんなそう言ってると思う
09288862015/08/25(火) 12:59:13.22ID:3RTDKyUG
一番最初に、実行時エラーは画面のイベントハンドラ以外では基本トラップするなっていう奴がいたが、
そいつは、「ログ出力はオプションだ」って話なので終了。

今俺に絡んでる奴は、何を主張したいのかさっぱりわからん。
09298862015/08/25(火) 13:03:19.24ID:3RTDKyUG
>>927
いやまあ俺はそうは言ってないんだが・・・
0930デフォルトの名無しさん2015/08/25(火) 13:05:46.06ID:/bqoSHfA
>>929
あ ごめん
違う人だった?
09318862015/08/25(火) 13:11:14.97ID:3RTDKyUG
>>927
いや、「みんな」って書いてるので、少なくともログ出力に関する俺の発言の中では、そんな
意図の発言はしてないよってことで。
0932デフォルトの名無しさん2015/08/25(火) 13:55:18.21ID:OV1myGLx
まさか、syslogdが、出力元プログラムのログ出力を制御してるとでも思ってるのだろうか
なんでもかんでもログ出しとけって話なら、適切なログ出力設計の議論にならんわ
09338862015/08/25(火) 14:17:39.36ID:3RTDKyUG
>>932
> まさか、syslogdが、出力元プログラムのログ出力を制御してるとでも思ってるのだろうか
そのログ出力制御の内容が何かによるが、syslogdは
・何をログ出力するかの判定
・ログ出力先の決定
を行う。(それ以外にもいろいろやるが)

それを制御というなら、制御してる。

> なんでもかんでもログ出しとけって話
とかいう話はしていない。
例えば、DEBUGレベルのログも、呼び出すだけはしておいて、ログ出力側で出力するかどうか判定しろってこと。
(いや、そんなの普通でしょとは言わないでくれ。その普通が通じないんだ。)

syslogのような仕組みのログ出力を実装しておけば、
> それも処理や関数やメソッド単位で設定ファイルに設定するわけ?
のようなマヌケな発想はしなくて済むって話。
09348862015/08/25(火) 14:26:50.42ID:3RTDKyUG
というか、syslogdを使えとかいう話じゃなくて、syslogみたいな仕組みのログ出力関数を作れって話ね。
syslog用語で言えば、facilityとpriorityの組み合わせと必要ならidentも含めて、ログ出力判断できるような奴。
0935デフォルトの名無しさん2015/08/25(火) 14:34:02.59ID:OV1myGLx
やっぱりこいつは話にならんな
09368862015/08/25(火) 14:45:30.97ID:3RTDKyUG
なんだ昨日と同じ奴か。
相手して損した。
09378862015/08/25(火) 14:47:59.61ID:3RTDKyUG
まぁ、これ以上800あたりから始まる議論には興味がないんだが、

> 画面の情報が必要な場合は委譲先に画面の参照を渡してやれば別にBLの中で始末出来ると思うんだけど。

とか自信満々に言っちゃう奴が、どういう言語を使ってきて今何の言語を使ってるかということだけには興味がある。
PHPとかですかね。
0938デフォルトの名無しさん2015/08/25(火) 16:23:44.76ID:/bqoSHfA
>>935
ですよね〜
0939デフォルトの名無しさん2015/08/25(火) 18:53:57.21ID:pQl/75c9
データモデルからすればFormの参照をプロパティであっても
受け渡してはいけない気がする。

でも何で?と聞かれると明確な答えはだせない。ごめんね。

ただポリモーフィズムも理解してない人がデータモデルなんて扱えるものなんだね。

まだまだVBで生きて行ける自信が出てきた。ありがとう。
0940デフォルトの名無しさん2015/08/25(火) 19:44:57.74ID:G6kE4eZp
数日前から暴れてる基地外がまだ暴れてんのか
早く夏休み終わってくれないかな
0941デフォルトの名無しさん2015/08/25(火) 20:42:56.98ID:Ty89bAQ9
>>940
そういうのが一番ガキっぽくてみっともない。
馬鹿じゃないの
0942デフォルトの名無しさん2015/08/26(水) 06:18:58.76ID:uXPJoGh6
>>933
それLog4netみたいに元々作られているものを使うなら分かるけど
自作なら普通じゃないよその考え方
0943デフォルトの名無しさん2015/08/26(水) 07:44:44.51ID:8YZPVwis
Visual Basic 14でhttp://blog-imgs-53.fc2.com/x/x/x/xxxtorigoyaxxx/121111-0704-33.jpg
のネットワークの状態の「接続」→「正常に動作」(もしくは「失敗」のようなプログラムを作りたいんですけど
どのように作成すれば良いのか分からないので教えてください
0944デフォルトの名無しさん2015/08/26(水) 08:08:35.58ID:sZSQqR+L
>>939
画面の参照をプロパティとして渡すことは非常に微妙なところだと思う。

ここではデータの取得ということなので、
ビューの操作は行っていないと考えると
責務としては破綻していない。

ただ、メッセージとして洗練された
ふさわしいものなのかという問題がある。
逆に抽象度からいうとこれ以上抽象度の高いものは無いだろう。

上では「常識だ」と言ってる人がいたが、
あくまで「原則として」に留めるべきだと思う。
何故ならビューからモデルの情報取得後をトリガーに、
モデルの情報を条件としてビュー側で何らかの処理を行いたい場合、
モデル側からはそのアドレス情報はビューの
インスタンスからでないと取得出来ないからだ。
0945デフォルトの名無しさん2015/08/26(水) 10:27:16.97ID:b8jwgPh2
正直どうでもいい
つうか、そんな律儀なことを考えならがプログラミングしてると頭禿るぞ
それにコールバックさせようと思ったら、どんな形にせよリファレンスを渡す
必要があるんだから、考えるとしたらどうやって渡せばスマートか、とかだろ
0946デフォルトの名無しさん2015/08/26(水) 10:46:23.81ID:2a2qkYCn
   _____
  ||// 彡 ⌒ミ|彡⌒ ミ
  ||/  (n´・ω・)n   )  おはようイケメン
  ||   (ソ  丿|ヽ   )
    ̄ ̄ ̄ ̄ ̄ u―u'
0947デフォルトの名無しさん2015/08/26(水) 12:25:04.38ID:6Z2aJU9f
>>944
何を言ってるのかさっぱり分からないけど、モデル側のしかるべきタイミングを
ビュー側に伝達するのは.NETならイベント、イベントが使えないならオブザーバーパターンを使う。

ビューの参照をモデルが持つなんて馬鹿なことは絶対にしない。
0948デフォルトの名無しさん2015/08/26(水) 13:30:50.63ID:b8jwgPh2
まあVB6の話をしてんですけどね
0949デフォルトの名無しさん2015/08/26(水) 16:37:02.28ID:Ksv/vtJa
実に不思議だ…
VB6の正しいコードとは、「思った通りに動いたコード」であって、プログラミングとは
関係ないと思っていたのだが…
そんな難しい事考えながら、よくVB6でちゃんと動くものが作れるね?
0950デフォルトの名無しさん2015/08/26(水) 18:41:52.81ID:iFM6oNtQ
>>944
そのへんはまず設計思想に基づいて考えるんだが
暴れてる馬鹿は設計思想をどうこう言えるレベルじゃないし
0951デフォルトの名無しさん2015/08/26(水) 18:44:42.77ID:+V3nc+iF
モデルがビューを参照しちゃダメなんて設計以前の問題ですw
馬鹿じゃないの
0952デフォルトの名無しさん2015/08/26(水) 20:04:11.59ID:sZSQqR+L
>>947
別にイベントや通知をトリガーにしても構わないし、そうでなくても構わない。
ここで着眼するべきはタイミングではない。

得意分野が違ったりすることもあるのだろうが
>>495はすぐに理解してくれたようだ。

そしてビューの参照をメッセージとして
送ることをあり得ないと言っていたが、
それはいいとしても結論ありきで話をするのは
技術者として如何なものだろうか。
0953デフォルトの名無しさん2015/08/26(水) 20:07:43.27ID:Rh5HKPmi
失礼した。>>495ではなく>>945だな。
0954デフォルトの名無しさん2015/08/26(水) 20:10:19.76ID:+V3nc+iF
>>952
君に同意するまともなプログラマは1人もいないよw
もう低レベル過ぎて読んでるこっちが恥ずかしくなるレベル。
0955デフォルトの名無しさん2015/08/26(水) 20:13:44.22ID:+V3nc+iF
理解できないと思うけどついでに言っておけば、>>945が愚かなのは、
ここで話題になっている「依存関係は一方通行でなければならない」と言ったような基本が大事なのは、
プログラムを簡単に書くためにこそプログラムの可読性が重要なのを理解してないことだ。
0956デフォルトの名無しさん2015/08/26(水) 20:16:12.02ID:sZSQqR+L
>>954
俺は別にモデルがビューを参照してはいけないとは一言も言ってないし、
この件に発言したのは今日が初めてで、
2レスしかつけてないので同意もなにもないと思う。

誰かと勘違いしてはいないだろうか。
0957デフォルトの名無しさん2015/08/26(水) 20:34:35.59ID:NbA1pJ88
>>956
バカに触るからいけない
0958デフォルトの名無しさん2015/08/27(木) 08:30:11.51ID:NfXyb/OT
>>951
出来上がったパターン通りにしか設計できない奴は黙ってろな
0959デフォルトの名無しさん2015/08/27(木) 08:58:34.11ID:2sp0pBWm
チームやプロジェクトにこういう頭でっかちがいると大変だろうな
数行コードを追加すれば済むような修正でも、俺の理屈に合わないとか
言いながら、再設計してコード書き直そうとするハタ迷惑な馬鹿
0960デフォルトの名無しさん2015/08/27(木) 10:46:07.85ID:asTtCnh5
VBerならではの恥知らずな意見だねw

依存関係は一方通行でなければならない(モデルがビューを参照してはいけない)なんて
人によって見解が分かれるような話じゃない。

理解できるかどうか(バカかどうか)だけの話。
ほとんど、「俺に理解できないからアインシュタインは間違ってる」ってトンデモ本作者やstaticおじさんのレベル。
0961デフォルトの名無しさん2015/08/27(木) 10:51:33.31ID:asTtCnh5
いま理解って書いたけど、普通の人はなぜモデルがビューを参照してはいけないのか、
論理的に理由を理解してなくてもその必要性は直感的に分かる。

俺もかつてVB5でプログラミングを始めた時、誰にも言われなくても1月ぐらいで気が付いたよ。
VBは言語レベルでイベント機能があるから、本来はこういうことに気が付きやすいはずなんだけど、
ダメな奴はやっぱり何を使ってもどうしようもなくダメなんだね。
0962デフォルトの名無しさん2015/08/27(木) 11:08:12.16ID:2sp0pBWm
そもそも君はVB6のFormオブジェクトの役目がビュー限定だと思い込んでるから
最初から話がかみ合ってないんだけどな
0963デフォルトの名無しさん2015/08/27(木) 11:19:20.13ID:NfXyb/OT
>>960
>ほとんど、「俺に理解できないからアインシュタインは間違ってる」ってトンデモ本作者やstaticおじさんのレベル。
これは笑うとこか?お前、他人の意見を理解できないで間違ってるっていってるんだが
0964デフォルトの名無しさん2015/08/27(木) 11:47:03.00ID:2sp0pBWm
ちなみに自分の場合、Formオブジェクトは基本的にコントローラだと考えている
いうなればビューを兼ね備えたコントローラか、そう考えると結構すっきりと設計が進む
別にこの考え方を押しつけるつもりはないが、もしFormがビューだとしたら
一番最初のモデルはビューから生成されることになり、関係が最初から破たんしてる
VB5も6も同じなんだから、その辺はやってればわかるはずだろ
0965デフォルトの名無しさん2015/08/27(木) 12:16:05.01ID:gdwTy3J6
何を言ってるのかさっぱり分からんが、
重要なのはモデルがビューに依存しないことだ。

まあ言っても無駄か。
0966デフォルトの名無しさん2015/08/27(木) 12:18:55.70ID:gdwTy3J6
プログラムのスタートアップがどこかとか、Formが純粋なビューかとか、そんなことまったく関係がない。
0967デフォルトの名無しさん2015/08/27(木) 12:51:22.02ID:kLiuzcJj
>>961
もしそれが依存関係逆転の原則のことを言っているならとんだお笑いだな
0968デフォルトの名無しさん2015/08/27(木) 13:09:42.00ID:2sp0pBWm
あれ、ぜんぜん通じてない
ひょっとしてこの人って、たとえば汎用モジュール(モデルに相当)から

Call frmMain.cmdTest_Click()

みたいなことをやったらダメよっていう超基本的なことを、
こんなにたくさんのレスを使って説明してくれてる超親切な人なのかな?
0969デフォルトの名無しさん2015/08/27(木) 20:11:11.74ID:FFvlYPxw
VB6なら、それは普通にやってたことだよね?(´・ω・`)
0970デフォルトの名無しさん2015/08/27(木) 20:26:56.38ID:kLiuzcJj
>>968
駄目過ぎて何が言いたいのか分からないけど、
何故駄目なのか思い付くだけ挙げたら
今回の件に関連するものも出て来るかも知れないな。
0971デフォルトの名無しさん2015/08/28(金) 08:21:50.88ID:h/70kqcI
>>955
依存関係が一方通行なのは分かるが、今回のケースでそれが壊れているとは思えない。

フォームに記述したメソッドを取得する為には、フォームの型では取得出来ない。

つまり幾つかの異なるフォームでこのクラスを使うには、
対象であるメソッドを持つインターフェースが必須になる。

つまり、プロパティに設定されるのは、インターフェースで設定された抽象的なものとなり、
Model側は直接Viewを知らない。即ち依存関係に無いのである。
0972デフォルトの名無しさん2015/08/28(金) 08:45:24.51ID:H77JphFM
>>969
そのモジュールがそのフォーム専用なら特に問題はないけど
いろんなフォームから共通に使用されるものなら、やらないほうがいい

>>971
全くその通りなんだけど、彼の中では
オブジェクトのリファレンスを持つこと=そのオブジェクトに依存する
という強い思い込みがあるんだと思うわ
だから、おそらくコールバックなんて概念も存在していない
そうなるとイベントの概念すら正確には把握してないんじゃなかって気もする
0973デフォルトの名無しさん2015/08/28(金) 11:32:14.30ID:Qs0z3drf
>>972
今頃間違いに気づいてこっそり意見を変えるw
頭が悪いだけでなくて姑息ときてる。人間として最悪だな。>>947

.NETのイベントであろうがオブザーバーパターンであろうが、呼び出される側が
自分で自分を呼び出す側に、呼び出す側が要求する型として登録するのであって
>>944が言ってるように呼び出す側のコードが呼び出される側の参照を持つのではない。
0974デフォルトの名無しさん2015/08/29(土) 07:32:07.68ID:zUAPpVfA
>>973
そもそもオブサーバーパターンを少しでも理解していれば>>947みたいな話は出てこない。

>>947はモデルどころかイベントもオブサーバーパターンも
ポリモーフィズムもコールバックもなにも理解していない。

知ってる単語並べて俺スゲーってやってるだけの人って周りから見れば一目瞭然だから
相手にするだけ馬鹿を見るよ。
0975デフォルトの名無しさん2015/08/29(土) 12:25:06.92ID:thOkbo5E
>>974
みっともない馬鹿だ。
0976デフォルトの名無しさん2015/08/29(土) 12:38:21.55ID:W42qk9DF
937 名前:886 [sage] :2015/08/25(火) 14:47:59.61 ID:3RTDKyUG
まぁ、これ以上800あたりから始まる議論には興味がないんだが、

> 画面の情報が必要な場合は委譲先に画面の参照を渡してやれば別にBLの中で始末出来ると思うんだけど。

とか自信満々に言っちゃう奴が、どういう言語を使ってきて今何の言語を使ってるかということだけには興味がある。
PHPとかですかね。

↑
なるほど、確かにブーメランが頭に突き刺さって
血噴き出しててみっともない馬鹿だな
0977デフォルトの名無しさん2015/08/29(土) 13:01:47.41ID:thOkbo5E
何のこっちゃ意味が分からない。それ俺じゃないし。

何にしろ、モデルがビューの参照を持ってはいけない、なんてプログラマ1年生が覚えるような
基本中の基本事項がこんな議論になるのはVBスレだけだろうな。

ついでに言えば、「オブザーバーパターンだって呼ぶ側が呼ばれる側の参照を持ってるじゃないか!!」
なんて言う馬鹿がいるのも恐らくVBスレだけ。

それは実行時だ馬鹿。
重要なのは、呼ぶ側のコードに、呼ばれる側を参照する部分がないことだ。

...って馬鹿なVBerに言っても無駄か。
0978デフォルトの名無しさん2015/08/29(土) 13:18:08.61ID:Ki3h75Q9
>>977
もう悔し過ぎて自分で何を口走ってるのかすらも分かってないんだろうな。

自前の中途半端な持論はどうでもいいから
(*^^*)
0979デフォルトの名無しさん2015/08/29(土) 16:07:50.90ID:Ki3h75Q9
>>977
とにかく、何を当たり前のこと顔真っ赤にしていきり立ってるのか知らないが、
>>971あたりを1000回くらい読み直してから出直してこい
0980デフォルトの名無しさん2015/08/29(土) 16:45:50.96ID:1c8d26Df
>>979
こっちが説明してから後出しで言いだしたことを馬鹿じゃないのか。
0981デフォルトの名無しさん2015/08/29(土) 17:39:11.80ID:Ki3h75Q9
>>980
お前が何を説明したとほざいているか知らないが、
話の発端になった>>802はそこで既にストラテジーパターンの話をしている。
その時から既に抽象の話はとっくに出ていたのに
何言ってんだこいつ?
0982デフォルトの名無しさん2015/08/29(土) 18:24:27.37ID:RKoyrRU3
ストラテージパターンって何のこっちゃ。
馬鹿じゃないの。
0983デフォルトの名無しさん2015/08/29(土) 18:25:39.59ID:RKoyrRU3
っていうか、>>802にはもろ「画面の参照を渡す」と書いてあるんだから二重に大笑いだ
0984デフォルトの名無しさん2015/08/29(土) 18:32:50.07ID:Ki3h75Q9
>>982
ストラテジーパターンも知らんのか。
どうしょうもないなw

>>983
そりゃ渡すだろ。委譲って分かってる?
0985デフォルトの名無しさん2015/08/29(土) 18:59:53.73ID:jQpIcJ58
次スレよろ
0986デフォルトの名無しさん2015/08/30(日) 07:42:05.45ID:NNjESfX6
次スレマダー
0987デフォルトの名無しさん2015/08/30(日) 18:40:54.24ID:204yLqaV
このスレは終了します
0988デフォルトの名無しさん2015/08/30(日) 19:26:40.38ID:ZYoWCo0d
立てました

古代VBプログラマ質問スレ(Ver.6.0 まで) part65 [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/tech/1440930335/
0989デフォルトの名無しさん2015/08/31(月) 09:32:15.36ID:dlg5gx9C
>>988
おつ
0990デフォルトの名無しさん2015/08/31(月) 09:56:12.15ID:84YJanmx
進と守どっちだよ
0991デフォルトの名無しさん2015/08/31(月) 19:04:51.05ID:MDUXcKqu
うめ
0992デフォルトの名無しさん2015/09/01(火) 09:09:44.82ID:5BwJ2/h+
梅
0993デフォルトの名無しさん2015/09/01(火) 12:34:12.92ID:f7+IC0bA
t
0994デフォルトの名無しさん2015/09/01(火) 13:26:18.15ID:xwXw9Uta
r
0995デフォルトの名無しさん2015/09/01(火) 18:18:03.40ID:CTYQHbst
おつうめ
0996デフォルトの名無しさん2015/09/02(水) 11:05:24.46ID:faeeHgup
うめてんてー
0997デフォルトの名無しさん2015/09/02(水) 19:47:35.28ID:40M7sDpr
うめうめ
0998デフォルトの名無しさん2015/09/02(水) 20:01:44.78ID:40M7sDpr
うめうめうめ
0999デフォルトの名無しさん2015/09/02(水) 20:02:10.65ID:40M7sDpr
うめうめうめうめ
1000デフォルトの名無しさん2015/09/02(水) 20:02:38.41ID:40M7sDpr
せんだよー
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。