VBプログラマ質問スレ(Ver.6.0 まで) part60
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2012/10/27(土) 17:40:34.69質問者は使用している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
http://www.google.co.jp/
※「まず自分で調べる」クセを身につけよう。
0002デフォルトの名無しさん
2012/10/27(土) 17:46:05.40Part 2 http://piza2.2ch.net/tech/kako/990/990793224.html
Part 3 http://piza2.2ch.net/tech/kako/1000/10005/1000523122.html
Part 4 http://pc.2ch.net/tech/kako/1006/10069/1006922992.html
Part 5 http://pc.2ch.net/tech/kako/1010/10106/1010624646.html
Part 6 http://pc.2ch.net/tech/kako/1013/10138/1013844542.html
Part 7 http://pc.2ch.net/tech/kako/1015/10158/1015836357.html
Part 8 http://pc.2ch.net/tech/kako/1018/10187/1018794901.html
Part 9 http://pc.2ch.net/tech/kako/1020/10208/1020830472.html
Part10 http://pc.2ch.net/tech/kako/1022/10221/1022127528.html
Part11 http://pc.2ch.net/tech/kako/1024/10243/1024380249.html
Part12 http://pc3.2ch.net/tech/kako/1026/10266/1026642565.html
Part13 http://pc3.2ch.net/tech/kako/1029/10292/1029241786.html
Part14 http://pc3.2ch.net/tech/kako/1030/10309/1030947162.html
Part15 http://pc3.2ch.net/tech/kako/1032/10327/1032706491.html
Part16 http://pc3.2ch.net/tech/kako/1034/10343/1034302532.html
Part17 http://pc3.2ch.net/tech/kako/1036/10361/1036154952.html
Part18 http://pc3.2ch.net/tech/kako/1038/10381/1038103769.html
Part19 http://pc3.2ch.net/tech/kako/1039/10398/1039859691.html
Part20 http://pc2.2ch.net/tech/kako/1041/10418/1041879465.html
Part21 http://pc2.2ch.net/tech/kako/1044/10440/1044028945.html
Part22 http://pc2.2ch.net/tech/kako/1046/10463/1046354784.html
Part23 http://pc2.2ch.net/tech/kako/1047/10477/1047743187.html
Part24 http://pc2.2ch.net/tech/kako/1050/10501/1050151126.html
Part25 http://pc2.2ch.net/tech/kako/1052/10526/1052627913.html
Part26 http://pc2.2ch.net/tech/kako/1055/10551/1055145106.html
Part27 http://pc2.2ch.net/tech/kako/1058/10586/1058674927.html
Part28 http://pc2.2ch.net/tech/kako/1061/10612/1061296197.html
Part29 http://pc2.2ch.net/tech/kako/1065/10654/1065446334.html
0003デフォルトの名無しさん
2012/10/27(土) 17:48:06.25Part31 http://pc2.2ch.net/test/read.cgi/tech/1073732636/
Part32 http://pc5.2ch.net/test/read.cgi/tech/1077216109/
Part33 http://pc5.2ch.net/test/read.cgi/tech/1080606445/
Part34 http://pc5.2ch.net/test/read.cgi/tech/1084544243/
Part35 http://pc5.2ch.net/test/read.cgi/tech/1087519251/
Part36 http://pc5.2ch.net/test/read.cgi/tech/1092906058/
Part37 http://pc5.2ch.net/test/read.cgi/tech/1090286450/
Part38 http://pc5.2ch.net/test/read.cgi/tech/1095673000/
Part39 http://pc5.2ch.net/test/read.cgi/tech/1099737063/
Part40 http://pc5.2ch.net/test/read.cgi/tech/1106748775/
Part41 http://pc8.2ch.net/test/read.cgi/tech/1112414085/
Part42 http://pc8.2ch.net/test/read.cgi/tech/1116924129/
Part43 http://pc8.2ch.net/test/read.cgi/tech/1123952677/
Part44 http://pc8.2ch.net/test/read.cgi/tech/1130231657/
Part45 http://pc8.2ch.net/test/read.cgi/tech/1133977286/
Part46 http://pc8.2ch.net/test/read.cgi/tech/1138975113/
Part47 http://pc8.2ch.net/test/read.cgi/tech/1141320612/
Part48 http://pc8.2ch.net/test/read.cgi/tech/1146678926/
Part49 http://pc8.2ch.net/test/read.cgi/tech/1152667953/
Part50 http://pc10.2ch.net/test/read.cgi/tech/1161517193/
Part51 http://pc11.2ch.net/test/read.cgi/tech/1169949451/
Part52 http://pc11.2ch.net/test/read.cgi/tech/1179563617/
Part53 http://pc11.2ch.net/test/read.cgi/tech/1187667616/
Part54 http://pc11.2ch.net/test/read.cgi/tech/1204552981/
Part55 http://pc12.2ch.net/test/read.cgi/tech/1247487156/
Part56 http://hibari.2ch.net/test/read.cgi/tech/1275397597/
Part57 http://toro.2ch.net/test/read.cgi/tech/1304095827/
Part58 http://toro.2ch.net/test/read.cgi/tech/1328782534/
0004デフォルトの名無しさん
2012/10/27(土) 17:49:04.36http://toro.2ch.net/test/read.cgi/tech/1344325875/
0005デフォルトの名無しさん
2012/10/27(土) 23:31:18.860006デフォルトの名無しさん
2012/10/28(日) 12:26:52.821 おつ
0007デフォルトの名無しさん
2012/10/29(月) 02:21:22.30function run(id1,id2) {
var textarea1 = document.getElementById(id1);
var textarea2 = document.getElementById(id2);
var v = textarea1.value.match(/([a-zA-Z][a-zA-Z0-9_]*([\$\#\!\&]|)|[0-9]+(\.[0-9]+|)([\$\#\!\&]|)|\.[0-9]+([\!\#]|)|"[^"]+"|[\>\<]\=|\=[\<\>]|\<\>|\>\<|[\+\-\*\/\\\(\)\=\<\>\.:,_]|'.+| +)/g);
var t = '', i;
for(i=0;i<v.length;i++) {
t += i + ' = "' + v[i] + '"\n';
}
textarea2.value = t;
}
0008デフォルトの名無しさん
2012/10/29(月) 12:10:12.85相変わらずProgram Filesには入れられないが、
他のフォルダなら普通に通った。
まだ現役だ。
0009デフォルトの名無しさん
2012/10/29(月) 12:20:56.030010デフォルトの名無しさん
2012/10/29(月) 13:10:31.72>相変わらずProgram Filesには入れられないが、
入りますが何か?
しれとも入れ方を知りたくてわざと馬鹿なカキコしたのかな?
教えないから安心してね。
0011デフォルトの名無しさん
2012/11/04(日) 03:02:54.100012デフォルトの名無しさん
2012/11/04(日) 08:26:42.19死ねば?
0013デフォルトの名無しさん
2012/11/04(日) 12:57:18.640014デフォルトの名無しさん
2012/11/05(月) 16:28:29.72なんでも一覧を欲しがる奴っているよね?
そういう奴に限ってみんなのために自分が一覧を作ろうとは思わない。
利己主義者。エゴイスト。あーやだやだ。
0015デフォルトの名無しさん
2012/11/05(月) 23:38:08.06久しぶりにVB触ったら、UBoundでとれる配列の数が、配列のindexの最大値か
配列の数そのものか忘れてた。
0016デフォルトの名無しさん
2012/11/06(火) 00:25:12.300017デフォルトの名無しさん
2012/11/06(火) 00:28:13.760018デフォルトの名無しさん
2012/11/06(火) 12:25:12.17これって変じゃね?
0019デフォルトの名無しさん
2012/11/06(火) 14:25:15.950021デフォルトの名無しさん
2012/11/07(水) 11:56:57.50全部俺のカキコじゃねーか?コラ
0022デフォルトの名無しさん
2012/11/07(水) 12:15:11.71移行なんて考えてはダメだ。
0023デフォルトの名無しさん
2012/11/07(水) 22:29:32.720024デフォルトの名無しさん
2012/11/07(水) 23:11:29.69いるのが、このスレの住人の特徴です。
0025デフォルトの名無しさん
2012/11/07(水) 23:18:28.090026デフォルトの名無しさん
2012/11/07(水) 23:40:36.19飼育管理していますので
勝手に猿に餌を与えないよう願います
0027デフォルトの名無しさん
2012/11/08(木) 01:30:50.60>>24に餌を上げていいですか?
毒餌さですがwwww
0028デフォルトの名無しさん
2012/11/08(木) 09:03:12.64元からオブジェクト指向を知らないプログラマの方が
安心して仕事を任せられるから不思議
0029デフォルトの名無しさん
2012/11/08(木) 14:08:55.01Terminateイベントを早めに起こすという理由のためにNothingを入れてる先生がいるけど
あれって正論なのかな?
http://jeanne.wankuma.com/tips/vb6/directory/delete.html
0030デフォルトの名無しさん
2012/11/08(木) 17:07:25.86そのコードを実行する前に開放してくれるんだから効果はあると思う。
冗長にはなりそうだが。
0031デフォルトの名無しさん
2012/11/08(木) 19:46:08.48一つのモジュールにダラダラとクソ長いコードを書く初心者がVB6使いには
多いので、使い終わった時点でNothingしとけよっていう教え方は
せ ざ る を 得 な い
ところだと思う。
0032デフォルトの名無しさん
2012/11/08(木) 20:40:32.29VB6とVB.NETを混同してるでしょw
VB6の場合は議論の余地はない
0033デフォルトの名無しさん
2012/11/08(木) 21:01:16.690034デフォルトの名無しさん
2012/11/08(木) 21:37:07.25VB6までに継承なんてあったっけ?
0035デフォルトの名無しさん
2012/11/08(木) 21:51:14.240036デフォルトの名無しさん
2012/11/08(木) 21:57:50.50いや、その先生はVB6でNothingの早期代入を推奨してるんだが???
.Netはガーページコレクションに任せればいい(任せなければならない)ので
議論の余地がないのは分かるけどね。
0037デフォルトの名無しさん
2012/11/08(木) 21:58:43.97実装継承は無いがインタフェース継承はある。俗に言うテンプレートみたいなやつ。
003834
2012/11/08(木) 22:23:33.85そか。あれも継承っていうんだ。さんくす。
0039デフォルトの名無しさん
2012/11/08(木) 22:31:06.760040デフォルトの名無しさん
2012/11/08(木) 22:33:16.730041デフォルトの名無しさん
2012/11/08(木) 22:34:07.390042デフォルトの名無しさん
2012/11/08(木) 22:50:03.81さらに馬鹿なのは、羹が何か理解できないくせに羹に懲りてる奴w
0043デフォルトの名無しさん
2012/11/08(木) 22:55:59.260044デフォルトの名無しさん
2012/11/08(木) 22:57:44.310045デフォルトの名無しさん
2012/11/09(金) 01:28:53.69今更の話題。とっくに答えは出てるね。
そのコメントだけじゃ判断できなくて、
Nothingを代入する意味が正しくわかっているなら、
Terminateイベントを早めに起こすというのは間違いじゃない。
だけどよくある勘違い、つまりNothingを代入した時点で
Terminalイベントが発生すると思っているのであれば間違い。
Nothingの代入は、Terminalイベントを発生させる命令ではない。
Newしたオブジェクトは、複数の変数に代入することで
複数の変数からオブジェクトを参照することが出来る。
Terminalイベントが発生するのは、どこからも参照されなくなった時。
時間がかかる処理の前に(Nothingを代入することで)どこからも参照されなくなれば
早く開放される。それが目的なら使わなくなったときにNothingを代入するのは意味がある。
(あと循環参照を断ち切ったりグローバル変数を開放するためにNothingを代入することもある)
スコープが終わるタイミング(変数がなくなるのでNothingをするのと同等になる)で
参照を破棄されるのが問題ないのであればわざわざNothingを代入する必要はない。
0046デフォルトの名無しさん
2012/11/09(金) 09:15:20.92>複数の変数からオブジェクトを参照することが出来る。
詭弁だな。
あたかもNEWしたオブジェクトを別の変数に入れる事で
別の用途に同時使用できるかのような書き方だ。
初心者はこういう語学に問題のある筆者の本を読んで間違いに走る。
後で修正するのは我々なんだよな。
0047デフォルトの名無しさん
2012/11/09(金) 09:18:36.38オブジェクトを使用する場合、特に初心者に向けての忠告であれば
宣言1回、SET1回で終わるのが大抵なのだから
あえて複数SETで多参照とか前提にして
簡単な事をあえて難しく見せることに意味はないよね。
単に天邪鬼って事でFA?
0048デフォルトの名無しさん
2012/11/09(金) 09:20:05.66今頃まともなツッコミが入ったので慌ててるんでしょう。
触らぬアホに祟り無しといいます。
0049デフォルトの名無しさん
2012/11/09(金) 09:23:24.65答えが出てなかったから、今頃慌てて補足しているくせにwww
0050デフォルトの名無しさん
2012/11/09(金) 09:27:37.49http://jeanne.wankuma.com/tips/vb6/directory/getfilesystementries.html
どうやら、Objectは不要になった段階でNothingを代入する派に軍配が上がったね。
0051デフォルトの名無しさん
2012/11/09(金) 10:05:59.840052デフォルトの名無しさん
2012/11/09(金) 10:19:17.78気になったんで、その執筆者 「 不要になった時点で参照を解放する (Terminate イベントを早めに起こす)」
について、連絡をするフォームから問い合わせていた件で回答が来た。
要約すると、VB6の場合でもオブジェクトが使い終わった時にどこからも参照されない事を明確にする意味で
Nothingを代入するように心がけた方が良いとのお話。実際に早期にNothingを代入した場合とそうでない場合とで
VB Decompiler でコードを追いかけてみたところ、明らかにリソースの解放タイミングが早期に行われるようになっていた。
ロジック的にはNothingを代入しようとしまいが関係はないが、システムリソースに気を配った優しい設計を
心がけるように自分はしているとの事でした。僕も見習っておうしようと思います。
0053デフォルトの名無しさん
2012/11/09(金) 10:21:42.54だから魔界の仮面弁士たる彼はオペラ座の怪人みたく仮面をかぶってるわけな。
0054デフォルトの名無しさん
2012/11/09(金) 10:26:47.21魔界の仮面弁士さんのVB6スキルは半端なく凄いけど
あの人って一体どんな仕事してるんだろうね。
005551
2012/11/09(金) 10:29:03.15なるほどなぁ。納得。
新規の仕事になら適用してもいいかな。
改修の仕事でそれをやるとソースコードレビューで他とやり方が違うとか叩かれて
元に戻されるのがオチだろうし。
0056デフォルトの名無しさん
2012/11/09(金) 11:35:51.29>ソースコードレビューで他とやり方が違うとか叩かれて
そんな目を皿のようにしてソースを見て叩くクライアントがいるのか?
客選べよw
0057デフォルトの名無しさん
2012/11/09(金) 11:43:24.41malloc/free論争。
0058デフォルトの名無しさん
2012/11/09(金) 11:43:30.97単純に終焉処理を先に行っておけということでしょ?
http://homepage1.nifty.com/CavalierLab/lab/vb/clsmdl/instance_02.html
参照回数がどうたらこうたらとトンチンカンな事をのたわまるアホがいるから複雑なだけで
単純にオブジェクトのデストラクタ処理を前倒しで行っておけば
プロシージャ―~出る時にデストラクタのラッシュを回避できるって事だろう。
平たく言えば、フォームを閉じるときになかなか閉じないキレの悪いソフトでなく
スパッと終了するソフトを作るような心がけって事だろうな。
0059デフォルトの名無しさん
2012/11/09(金) 12:54:12.63何かの強迫観念か。
0060デフォルトの名無しさん
2012/11/09(金) 12:59:43.530061デフォルトの名無しさん
2012/11/09(金) 13:01:04.830062デフォルトの名無しさん
2012/11/09(金) 13:06:06.570063デフォルトの名無しさん
2012/11/09(金) 13:18:49.75>どこからも参照されなくなれば早く開放される。
おまい、オブジェクトと共有DLLをごっちゃにしてないか?頭大丈夫か?
0064デフォルトの名無しさん
2012/11/09(金) 13:23:12.40Nothingの代入がその関数の一番最後に配置するのだったらやり過ぎという感はあるけど
他はNothingを代入しているのにそこだけ代入していなかったら
コーディングミスだと思われても仕方ないだろう。
あるいはコメントに、「ここは関数の最後なのでNothingを代入しても意味が無いので代入しません」
とでも書くか?
0065デフォルトの名無しさん
2012/11/09(金) 15:23:57.690066デフォルトの名無しさん
2012/11/09(金) 15:29:00.69君って、mainの最後でfreeする派?
0067デフォルトの名無しさん
2012/11/09(金) 15:41:32.120068デフォルトの名無しさん
2012/11/09(金) 15:48:13.84string_value = vbNullString
variant_value = Empty
もやってんだろうな?
0069デフォルトの名無しさん
2012/11/09(金) 15:50:53.68その発想はなかったわ
0070デフォルトの名無しさん
2012/11/09(金) 16:30:05.75.net 小僧は i = Nothing とかやってそうで恐いわwww
0071デフォルトの名無しさん
2012/11/09(金) 16:30:48.66次元が違うだろ
精神病?
0072デフォルトの名無しさん
2012/11/09(金) 16:31:48.57空気脳病。
0073デフォルトの名無しさん
2012/11/09(金) 16:32:23.950074デフォルトの名無しさん
2012/11/09(金) 16:51:06.32freeはともかく、smart pointerはわかるよ。
nothing代入派は、生ポつかって早くdeleteしたいんだろ?
0075デフォルトの名無しさん
2012/11/09(金) 16:57:37.700076デフォルトの名無しさん
2012/11/09(金) 16:58:33.27メモリ解放と関係なくね?
0077デフォルトの名無しさん
2012/11/09(金) 17:03:57.46StringやVariantに値を代入したら、メモリが確保されるのだが。
0078デフォルトの名無しさん
2012/11/09(金) 17:09:55.36Empty 値は、初期化されていない (初期値が代入されていない) バリアント型の変数を示します。
Empty 値を含むバリアント型の変数は、数値データと共に使われるときは 0、文字列データと共に使われるときは長さ 0 の文字列 ("") として扱われます。
Empty 値をNull 値と混同しないでください。Null 値は、バリアント型変数に有効なデータが意図的に格納されていないことを示します。
0079デフォルトの名無しさん
2012/11/09(金) 17:12:22.11生ポとか関係のない話題を引き合いに出してまで
自分の意見を通そうとするかふつう?
0080デフォルトの名無しさん
2012/11/09(金) 17:14:40.52x = 5 ' コードは、
' Main のローカル変数である z を
y = 6 ' x と y の 2 とおりの名前で参照します。
End Sub
Sub Main
Dim z As integer
Foo z,z
End Sub
0081デフォルトの名無しさん
2012/11/09(金) 17:17:26.57何を言いたいのかわからないが、Emptyを代入すればVariantに代入されていたものが解放される。
vbNullを代入すると、「vbNull」という値が代入され、その分のメモリが使われる。
>>79
生ポ=生のポインタ
0082デフォルトの名無しさん
2012/11/09(金) 17:27:12.73それより、以前のスレでNothingを代入しないとメモリリーク起こすと言ってた奴はどこいったんだ?
早く根拠示してくれよ。
0083デフォルトの名無しさん
2012/11/09(金) 17:30:37.66> 魔界の仮面弁士 2004/05/29(土) 14:33:26
> Nothingすればリークしない、という物でもありませんし、逆に
> Nothingしなければリークする、というわけでもありません。
魔界の仮面弁士というのはこいつかwww
0084デフォルトの名無しさん
2012/11/09(金) 17:38:37.240085デフォルトの名無しさん
2012/11/09(金) 18:05:23.85単位次元をかえてみろっつーの。物理が分からんプログラマーは話していて疲れる。
0086デフォルトの名無しさん
2012/11/09(金) 18:06:44.61それだとオブジェクトをSetすること自体がメモリーリークになってしまうけど?
0087デフォルトの名無しさん
2012/11/09(金) 18:07:56.24>魔界の仮面弁士というのはこいつかwww
少なくともオマエよりはデキル感じが汁!
0088デフォルトの名無しさん
2012/11/09(金) 18:23:49.30するのはわかったが、ダラダラと糞長いプロシージャを書かなければいいって
事だよな。適切に機能ごとにプロシージャに分けて、スコープ最小になるように。
0089デフォルトの名無しさん
2012/11/09(金) 18:44:17.12そんな事は百も承知だけど、無理な納期設定で
じっくり考える時間もない中で仕上げなければならない現実。
もうかれこれ5年やってるけど、いままで自分が満足するものを作ったことがない。
納期を無視すればいくらでも自己満足なコードは書けるだろうな。
プログラミングを趣味でやれる人たちと俺とでは生きてるステージが違うのかも。
0090デフォルトの名無しさん
2012/11/09(金) 19:16:47.920091デフォルトの名無しさん
2012/11/09(金) 19:47:44.470092デフォルトの名無しさん
2012/11/09(金) 21:00:55.130093デフォルトの名無しさん
2012/11/10(土) 08:41:31.43> オブジェクトを使用する場合、特に初心者に向けての忠告であれば
> 宣言1回、SET1回で終わるのが大抵なのだから
> あえて複数SETで多参照とか前提にして
> 簡単な事をあえて難しく見せることに意味はないよね。
関数を使わない初心者?
さすがにそんな初心者は想定してなかったなw
VBの構文忘れたから適当に書くけど
sub func1
Dim a As Cls
c = new Cls
func2(c)
set c = Nothing '最後の参照がなくなった時点でTerminateが発生する
end sub
sub func2(c)
func3(c)
set c = Nothing ' Nothing代入してもTerminateは発生しない
end sub
sub func3(c)
func4(c)
set c = Nothing ' Nothing代入してもTerminateは発生しない
end sub
0094デフォルトの名無しさん
2012/11/10(土) 08:47:36.45> 君って、mainの最後でfreeする派?
mainとfreeは話が違うだろ。
Nothingを代入する行為は
”全く意味が無い”ことが多いってこと。
関数の最後の直前にNothing入れたって意味ないよ。
閉じるのを早くするためにNothingを早くすると言っている人がいるが、
それをしたいのであればグローバル変数を使わなくするだけでいい。
そうすれば、「一つの関数」の中で中盤に開放されるか
後半に開放されるかの違いでしかないだろ。
0095デフォルトの名無しさん
2012/11/10(土) 08:50:31.59スコープを小さくしておけば、
どっちみちスコープが終わった時に
自動的にNothing代入されるよ。
だからこれ(自動的なNothing代入)も
Nothing代入の一つと考えればいい。
ということで俺はNothing代入を書かずに
スコープを小さくして自動的なNothing代入に任せる派
0096デフォルトの名無しさん
2012/11/10(土) 08:51:47.27自分の技術力の無さを
納期のせいにするな。
0097デフォルトの名無しさん
2012/11/10(土) 09:09:37.88必ずしも踏襲できんだろうが。出来ないケースの方が圧倒的に多いだろうし。氏ねアホ。
0098デフォルトの名無しさん
2012/11/10(土) 09:13:15.72技術力と任される仕事の納期とどんな関係があるとでも?
これだからアマチュアプログラマは困る。
先日3日で図書館のライブラリ管理システムを構築しろと言われたわ。
プログラム組むだけならまだしもDB設計やLAN構築まで3日以内に完了せよだとか。
これ、アシスタント女性一名でやれっつーんだから。うちの会社は。
0099デフォルトの名無しさん
2012/11/10(土) 09:14:49.83VBの構文忘れたという前置きがあねれば
どんだけ未熟なVBプログラマ化と小一時間バカにするところだった。
良かったな。
0100デフォルトの名無しさん
2012/11/10(土) 09:19:50.62そんな会社に居なきゃいけないってことは技術力が無いってことだね。
0101デフォルトの名無しさん
2012/11/10(土) 09:20:41.60文法を忘れたと油断させて、罠を仕掛けている。
0102デフォルトの名無しさん
2012/11/10(土) 09:38:20.330103デフォルトの名無しさん
2012/11/10(土) 09:39:55.06だから関係ないでしょ?
お前の会社なら技術力がある人のところにも
同じような司令が下るでしょ?
0104デフォルトの名無しさん
2012/11/10(土) 09:43:03.85> 必ずしも踏襲できんだろうが。出来ないケースの方が圧倒的に多いだろうし。氏ねアホ。
えっと関数は一画面で見れる程度の行数にするのが普通ですよね?
目指すべき所が間違ってる。
長い関数を見た時、やるべきことはNothing代入とかいう
小手先の技術ではなく、関数を小さくすることだ。
Nothingを代入して置かなければ不安というのは、
関数が長いという問題の兆候かもしれんな。
0105デフォルトの名無しさん
2012/11/10(土) 10:07:53.19>えっと関数は一画面で見れる程度の行数にするのが普通ですよね?
そんな常識論はないよ。解像度によって画面に表示できる行数は違うし。
俺はモニターを縦にして3台並べてコーディングしているが、
一面内に収まらない関数の方が圧倒的に多い。
医療のCT映像処理で縦に撮影した数百枚の画像を
横から輪切りにしたイメージに変換してDICOM化するなんてことを
一週間納期で任される事もあるが、普通のプログラマなら一生涯かけても無理な事を
短期間にやり遂げる俺にとっては関数の行数なんて論旨に足らん話に過ぎない。
0106デフォルトの名無しさん
2012/11/10(土) 10:09:31.16>小手先の技術ではなく、関数を小さくすることだ。
短い関数でもNothingは代入した方がいいのでは?
Terminateイベントを侮るなかれ!
0107デフォルトの名無しさん
2012/11/10(土) 10:10:03.55その罠に気づけない己の未熟さを知れ
0108デフォルトの名無しさん
2012/11/10(土) 10:28:59.80だから代入してるよ。
関数の最後に自動的にNothingが代入される。
0109デフォルトの名無しさん
2012/11/10(土) 10:30:30.94だからその自動で代入されるNothingが罠なんでしょ?
自分で明示的に代入したNothingと暗黙のスコープエスケープ時のNothing代入。
割り当てられるコード量に3倍ちょいの違いがあるって話ではなかったのかい?
0110デフォルトの名無しさん
2012/11/10(土) 10:32:14.28暗黙の代入: レイトバインド(なぜかマーシャリングが発生する)
0111デフォルトの名無しさん
2012/11/10(土) 10:34:49.54暗黙の代入だと、対象がどんなタイプのオブジェクトかわからないので最大公約数で処理する。
この場合、最大と認定されるのはなんとOLEDB。FSOを暗黙でNothing代入しても
システムはOLEDBでも扱えるルーティンで対応するとか馬鹿仕様にも程がある。
0112デフォルトの名無しさん
2012/11/10(土) 11:11:35.09Nothing一つでここまで深い事実があってそれを語ることができる人たちが生き残ってることに驚いた。
もっと驚かせてくれ。
0113デフォルトの名無しさん
2012/11/10(土) 11:19:30.76それは外部DLLを参照する都度アンマネージドのメモリー領域へのマーシャリングが発生すること。
.Netアプリが最大の利点を得られるのはアセンブリしか使わない完全マネージドの閉じた環境のみ。
多くのアプリではこれを踏襲できるから無問題かも知れないが、そうでないアプリは今でもVB6bgっているよ=B
0114デフォルャgの名無しさん
2012/11/10(土) 11:21:11.30> だからその自動で代入されるNothingが罠なんでしょ?
なにが罠なの?
関数を抜けたら変数はなくなって
グローバル変数は関数を抜けても値はそのままってだけだよね?
0115デフォルトの名無しさん
2012/11/10(土) 11:22:48.570116デフォルトの名無しさん
2012/11/10(土) 11:25:03.69なんでOLEDBがでてくるのかわからん。
変数があってその変数がなくなる(=同時にNothing代入される)
そのタイミングでVBはオブジェクトに参照してる人が一人減ったと通知する。
ここまでがVBの仕事なんだが。
その後の仕事はどっちも同じだよ。
オブジェクトはどこからも参照されなくなったと知ることができるから
終了処理をオブジェクトが行う。
0117デフォルトの名無しさん
2012/11/10(土) 11:37:03.540118デフォルトの名無しさん
2012/11/10(土) 11:39:21.98一人減る時の減り方まで考えがおよばないみたいね。十代かな?
リストラを考えてみよう。
ある人は黙っていなくなるが、ある人はジタバタ騒いで訴訟問題にまで発展させて減る。
外見からは同じように一人減っているが内情は大きく異なるって事。
0119デフォルトの名無しさん
2012/11/10(土) 11:50:54.89理解してないようだから(だから変な喩えを言うのかな?w)
もう一度書いておくね。
終了処理自体はオブジェクト自身が行うから
正しく終了処理は行える。
VBはオブジェクトに対して使っているか使っていないかを
通知するだけでいい。
0120デフォルトの名無しさん
2012/11/10(土) 11:53:05.75通知と処理、この違いが同じだと思ってるのね。
アサハカ
0121デフォルトの名無しさん
2012/11/10(土) 11:55:14.00暗黙のNothing導入時: オブジェクトの数だけ開放処理が行われる。
0122デフォルトの名無しさん
2012/11/10(土) 11:56:30.64いや、間違ってるだろ?呼び出し側の処理が殆どでは?
0123デフォルトの名無しさん
2012/11/10(土) 11:57:18.42SetによるNothingの代入と
変数がスコープから消える=Nothingの代入
はどっちも同じでオブジェクトに対して
参照のデクリメントを ”通知” してる。
その後の ”終了処理” はオブジェクト自身が
参照カウンタが0になった時に行うものでどちらも同じ。
俺は明らかに通知と処理を区別して
書きましたよw
0124デフォルトの名無しさん
2012/11/10(土) 11:59:00.82>参照のデクリメントを ”通知” してる。
やっと癌細胞を摘出できましたよ。苦労しました。
0125デフォルトの名無しさん
2012/11/10(土) 11:59:51.960126デフォルトの名無しさん
2012/11/10(土) 12:00:14.17終了処理っていうのは、オブジェクト内部の終了処理だぞ。
オブジェク自身以外の誰が、オブジェクト内部の事を知ってると言うんだ?
>>124
感想を述べるだけで言い返せないのは、負けだって聞きましたw
0127デフォルトの名無しさん
2012/11/10(土) 12:00:53.06でもそういう時期があっても人生、いいと思ふ。
0128デフォルトの名無しさん
2012/11/10(土) 12:02:03.13みかけはそうだが実際のコード進行は全然番うよ?
VB Decopilerで見てみれば分かる。
0129デフォルトの名無しさん
2012/11/10(土) 12:04:08.190130デフォルトの名無しさん
2012/11/10(土) 12:07:40.02例えばこんなコードで証明できます。
Sub Hoge
Dim cls1 As ClassA
Dim cls2 As ClassA
Debug.print 1
Set cls1 = New ClassA 'ここでClassAのInitializeが呼び出される
Debug.print 2
Set cls2 = cls1 'ここは何も表示されない
Debug.print 3
Set cls1 = Nothing 'なにも表示されません
End Sub
'関数が終わったらcls2がなくなる=Nothing代入と同じなので
'ClassAのTerminalが呼ばれます。
[ClassA]
Private Sub ClassA_Initialize()
Debug.print "Initialize"
'初期化処理
End Sub
Private Sub ClassA_Terminate()
Debug.print "Terminate"
'終了処理
End Sub
0131デフォルトの名無しさん
2012/11/10(土) 12:10:59.13意味の無い比喩。何が面白いのか?煙に巻いて逃げる気か?
0132デフォルトの名無しさん
2012/11/10(土) 12:11:46.28いや、俺も関数は1画面内に収まるようっていう指導のもと、今がある。
今では長い関数みかけたらダサく思えるようになった。
まあ、俺も全てが1画面に収まるわけではないけど、
少なくとも2画面には収まる。
関心の分離ってわかるか?
糞長い関数を書く人が多いのもVB6スレの特徴。
0133デフォルトの名無しさん
2012/11/10(土) 12:11:52.75参照カウンタと言えばCOMが持ってるインターフェースAddRef()とRelease()の話になる。
これは以下でも述べられてるようにSetで参照が増えた時にAddRef()が呼ばれ
Nothingを代入した時(スコープから外れた時に行われる暗黙のNothing男優でも同じ)に
Release()が呼ばれる。そしてCOMオブジェクトは内部のカウンタが0になった時に
自分自身の終了処理を行う。
http://stackoverflow.com/questions/7189196/addref-in-vb6
I'm fairly sure that VB6 doesn't support directly accessing the
IUnknown methods. But the workaround is simple. Add this declaration to a Module:
Dim ReferenceHolder As Variant
And then get AddRef() to get called with a simple assignment
Set ReferenceHolder = someObject
Reversely, get Release() to get called with
Set ReferenceHolder = Nothing
This is normal VB6 memory management at work.
0134デフォルトの名無しさん
2012/11/10(土) 12:12:08.13>デクリメントを通知
その言い分だとデクリメント毎にClassAに何らかの通知が行ってる証明にならないだろ
全体を見る脳がなさそうだ
0135デフォルトの名無しさん
2012/11/10(土) 12:13:52.510136デフォルトの名無しさん
2012/11/10(土) 12:14:33.72何かの通知が行われていることは
COMSpyを使えばわかるよ。
SetによるNothing代入でも変数のスコープが外れた時の
暗黙のNothing代入でも、同じようにReleaseが呼ばれてる。
0137デフォルトの名無しさん
2012/11/10(土) 12:15:41.60Sub Hoge
Dim cls1 As ClassA
Dim cls2 As ClassB
Set cls1 = New ClassA
Set cls2 = New ClassB
Debug.print 1
Set cls1 = Nothing 'ClassAのTerminalが呼ばれます。
End Sub
'関数が終わったらcls2がなくなる=Nothing代入と同じなので
'ClassBのTerminalが呼ばれます。
[ClassA]
Private Sub ClassA_Initialize()
Debug.print "Terminate"
'終了処理
End Sub
Private Sub ClassA_Terminate()
Debug.print "Terminate"
'終了処理
End Sub
0138デフォルトの名無しさん
2012/11/10(土) 12:16:12.30>>130のレスの中でそれを言えてないのに言えてる気分になってドヤ顔してるってこと。
0139デフォルトの名無しさん
2012/11/10(土) 12:18:46.89Set cls1 = Nothing 'ClassAのTerminalが呼ばれます。
これってClassAのインスタンスへの参照カウンタが0になったからだね。
もし参照カウンタが0にならないときは
ClassAのTerminalは呼ばれないよ。
Nothingを代入しても、参照カウンタが0にならないときって
どんな時か思いつく?
0140デフォルトの名無しさん
2012/11/10(土) 12:19:57.18気安く質問してんじゃねーぞコラ。厚かましい初心者だわ。
0141デフォルトの名無しさん
2012/11/10(土) 12:19:59.12> どんな時か思いつく?
それが>>130だろ?
0142デフォルトの名無しさん
2012/11/10(土) 12:23:37.14結論付けられることは、Nothing代入(暗黙のNothing代入含む)は
単純なTerminalイベント呼び出しではなく
参照カウンタのデクリメントを行ってるにすぎないということだ。
その結果(参照カウンタが0になった場合に)Terminalイベントが引き起こされる。
実際に行うことと、その結果発生することは
区別して考えた方がいい。
0143デフォルトの名無しさん
2012/11/10(土) 12:24:35.960144デフォルトの名無しさん
2012/11/10(土) 12:26:22.1345 名前:デフォルトの名無しさん[sage] 投稿日:2012/11/09(金) 01:28:53.69
>>29
今更の話題。とっくに答えは出てるね。
そのコメントだけじゃ判断できなくて、
Nothingを代入する意味が正しくわかっているなら、
Terminateイベントを早めに起こすというのは間違いじゃない。
だけどよくある勘違い、つまりNothingを代入した時点で
Terminalイベントが発生すると思っているのであれば間違い。
Nothingの代入は、Terminalイベントを発生させる命令ではない。
Newしたオブジェクトは、複数の変数に代入することで
複数の変数からオブジェクトを参照することが出来る。
Terminalイベントが発生するのは、どこからも参照されなくなった時。
時間がかかる処理の前に(Nothingを代入することで)どこからも参照されなくなれば
早く開放される。それが目的なら使わなくなったときにNothingを代入するのは意味がある。
(あと循環参照を断ち切ったりグローバル変数を開放するためにNothingを代入することもある)
スコープが終わるタイミング(変数がなくなるのでNothingをするのと同等になる)で
参照を破棄されるのが問題ないのであればわざわざNothingを代入する必要はない。
0145デフォルトの名無しさん
2012/11/10(土) 12:27:07.430146デフォルトの名無しさん
2012/11/10(土) 12:27:36.31答えが出てる話題に戻っただけかw
0147デフォルトの名無しさん
2012/11/10(土) 12:28:23.82恥ずかしい人。
0148デフォルトの名無しさん
2012/11/10(土) 12:29:22.65お前ら他の言語もやれ
そしたらGCの動きなんか常識過ぎてこんな話題出ること自体が恥ずかしいことだとわかる
0149デフォルトの名無しさん
2012/11/10(土) 12:29:55.24ま、Terminal君の話の内容に
反論してる人が消えたならそれでいいかなw
0150デフォルトの名無しさん
2012/11/10(土) 12:31:09.330151デフォルトの名無しさん
2012/11/10(土) 12:31:50.560152デフォルトの名無しさん
2012/11/10(土) 12:32:07.7040〜50代だろどうみても…
0153デフォルトの名無しさん
2012/11/10(土) 12:32:50.710154デフォルトの名無しさん
2012/11/10(土) 12:33:55.68おそ松くんとか言いたいのかな?ターミナルは次元が低いな。
0155デフォルトの名無しさん
2012/11/10(土) 12:35:31.430156デフォルトの名無しさん
2012/11/10(土) 12:36:14.50論破というのは、「論旨が破綻している」と
周りに認めさせる行為のことですよ。
論破しない(不要)というのなら
周りは誰も論旨が破綻しているとは
認めてくれません。
0157デフォルトの名無しさん
2012/11/10(土) 12:36:45.68これだけ公衆の面前で恥をかかされたのだからな。
彼の人生にとっては良い出来事であったに違いない。
良かったな。
0158デフォルトの名無しさん
2012/11/10(土) 12:37:43.25言ってることが正しいのに、
いうことがあるわけ無いだろwww
こういう流れで良かったですか?
0159デフォルトの名無しさん
2012/11/10(土) 12:38:33.63それ以前にTerminalイベントなんてこの世に存在しないイベントを誰も認めてはいないよ?
0160デフォルトの名無しさん
2012/11/10(土) 12:38:42.10>>45の内容も忘れないでくださいねw
0161デフォルトの名無しさん
2012/11/10(土) 12:39:51.67>>45の内容は正しくないよ。
Terminalって単語の部分だけだけどな!
こういう流れで良かったですよw
0162デフォルトの名無しさん
2012/11/10(土) 12:40:46.75>論破って>>45の内容にか?
その内容にあるTeminalイベントの数を数えてみろ。論破以前に破綻してるだろ?
大丈夫か?専門学校生よ。
0163デフォルトの名無しさん
2012/11/10(土) 12:41:18.38ターミナルという揚げ足を取る人の
2つにわかれたようだ。
0164デフォルトの名無しさん
2012/11/10(土) 12:42:25.34破綻の内容をちゃんと書いてくれ。
お前の口から「Terminalというスペルミス」について
文句を言ってるんだって。聞きたいよ。
0165デフォルトの名無しさん
2012/11/10(土) 12:43:07.30http://www.transit.ne.jp/contents/info/2011/12/the-terminal.php
0166デフォルトの名無しさん
2012/11/10(土) 12:52:25.84俺は単芝がきもいから最初から揚げ足取りに専念してたよ
どうやって全単芝野郎から生きる気を奪えるかにしか興味ないわ
016745
2012/11/10(土) 13:12:03.16このスレを見た時の、残念感
0168デフォルトの名無しさん
2012/11/10(土) 13:14:30.180169デフォルトの名無しさん
2012/11/10(土) 13:16:37.21別に500円の弁当でも良いのだが、「これで398円は安い!」と思うとつい買ってしまう。
金が貯まってしまって仕方ない。
0170デフォルトの名無しさん
2012/11/10(土) 13:19:52.08書き込み多すぎってやつのことなら
IPアドレス変えて違うブラウザから
やれば大丈夫でしたよ。
IPアドレスもクッキーも違うから
連投判定は難しいと思う。
0171デフォルトの名無しさん
2012/11/10(土) 13:23:34.40VB6初心者ぶりはよくわかったけど、何もここで2chの無知ぶりまで披露しなくてもいいのにね。
恥さらしもいいとこだわ。
0172デフォルトの名無しさん
2012/11/10(土) 13:24:27.11それだと500-398 =102円。一年間で37,230円しかたまらないじゃないか。
俺は別に5000円の弁当でもいいんだけど398円の弁当を買って
一年で約168万円も、金が溜まってしまって仕方ない。
0173デフォルトの名無しさん
2012/11/10(土) 13:25:17.43僕、2ちゃんねるのプロじゃないんでw
君とは違うよ。君は凄いね。いつも何してんの?
あ、プロかw
0174デフォルトの名無しさん
2012/11/10(土) 13:31:48.180175デフォルトの名無しさん
2012/11/10(土) 13:32:58.43安倍のカツカレーを思い出したわ
0176デフォルトの名無しさん
2012/11/10(土) 13:33:51.52ところで、VB6って以下の場合どうなるんだっけ。
下図のようにメインフォームがA、AがBをそれぞれ参照している場合を考える。
A、Bはそれぞれ他からは参照されていないとする。
メインフォーム ← A ← B
こうい場合、必ずしもAのTerminateでBへの参照を開放する必要はないんだっけ?
要するに聞きたいことは、メインフォームがAへの参照を開放した場合にA、Bが
リークするかどうかってことだけど。
っていうか俺はこの話が始まった時に、当然今書いたようなこと話題にしてるんだとばかり
思い込んでたんだけど、とんだ勘違いだったなw
0177デフォルトの名無しさん
2012/11/10(土) 13:34:34.420178デフォルトの名無しさん
2012/11/10(土) 13:36:22.82017945
2012/11/10(土) 13:41:32.51今までの話は、俺が>>45で言った
とっくに答えが出てる話をしていただけ
この前提は間違ってないのだから反論しないでくれ。意味が無い。
100レスかかって>>45にたどり着いたのがその証拠だろ。
それを理解しているのを前提として話をしたい。
君がその前提を理解してるのであれば話ができる。
だが、俺は今から出なきゃいかんw
帰ってくるまでに話が変わっていなければ
続きをしよう。
0180デフォルトの名無しさん
2012/11/10(土) 13:46:52.73幼稚園を早く卒園してこい。話はそれからだ。
0181デフォルトの名無しさん
2012/11/10(土) 15:47:54.85sanba とか言ってる奴が
> 2chの無知ぶりまで披露しなくてもいいのにね。
とか、ウケ狙いか?
0182デフォルトの名無しさん
2012/11/10(土) 16:12:41.220183デフォルトの名無しさん
2012/11/10(土) 18:02:11.34GCの気持ちになって考えろってこった
C++やってるなら参照カウント方式のスマートポインタの動作だ
0184デフォルトの名無しさん
2012/11/10(土) 18:13:13.84clsって予約語じゃなかったっけ?
0185デフォルトの名無しさん
2012/11/10(土) 19:43:27.40カオス状態になる現象のほうがむしろ興味深い。 これはしばしば一般社会にも起こる現象だろう。
頭のいい人が社会科学的に究明していったらノーベル賞のひとつや二つ取れるやもしれんなw
シェークスピア的に言うと、にちゃんねる劇場もいろんな役者が立ち現れては消える舞台ってとこか
カオス状態が必ずしも悪いというわけでもない。その混乱ぶりに我慢できず真打の役者が現れて詔を発する
事態に。すると、急にその場の喧騒が収まり演目は終焉を迎えるというわけだ。
その騒乱の中で出たがりの喜劇大根役者が他の役者の足を引っ張ったり奇声を発したり、
舞台を意味も無く走り回ったりする(本人的には主役のつもりだったりするのが滑稽ではあるがw)
のもいらん存在だがご愛嬌の内だろうw
0186デフォルトの名無しさん
2012/11/10(土) 19:48:50.690187デフォルトの名無しさん
2012/11/10(土) 20:10:02.470188デフォルトの名無しさん
2012/11/10(土) 20:28:57.61本質馬鹿だが小賢しいからノーベルやらシェークスピア等まで引っ張り出す。
お前の文章の一行目を引用すると
本当に物が解っている奴なら、お前の話も二・三行で片付く話だ。
0189デフォルトの名無しさん
2012/11/10(土) 20:42:58.93画面が消えそうな予感w
0190デフォルトの名無しさん
2012/11/10(土) 20:55:12.50一瞬「?」と思ったがああそうかと気づくことができた漏れはオッサン
0191デフォルトの名無しさん
2012/11/10(土) 21:19:59.66このDOS野郎がw
0192デフォルトの名無しさん
2012/11/10(土) 22:02:23.650193デフォルトの名無しさん
2012/11/10(土) 23:01:48.62何歳?Almost 還暦?
0194デフォルトの名無しさん
2012/11/10(土) 23:35:37.020195デフォルトの名無しさん
2012/11/11(日) 03:46:52.550196デフォルトの名無しさん
2012/11/11(日) 03:51:17.170197>>45(ターミネーター)
2012/11/11(日) 03:53:46.34帰ってきたぞ。
フォームの場合はフォーム特有の問題がある。
まずフォームはクラスを拡張したものと考えていい。
だからフォームはクラスの性質をすべて持っているが
それに加えて変な性質が追加されている。
その話の前に先に>>176の答えから。
> 下図のようにメインフォームがA、AがBをそれぞれ参照している場合を考える。
Bを参照しているのが本当にAだけならば(ここ重要な所)
AのTerminateでBへの参照を解放する必要はない。
しかし、ここでフォーム特有の罠がある。(これは古いVBとの互換性維持のための仕様だろう)
まず確認しないといけないことは、フォームBを参照している変数はどこで定義(Dim)されているかということ。
それがちゃんとフォームAのクラス変数かローカル変数にあるのならおめでとう。
それはフォームAが消えた時に自動的に消える変数だ。
もしフォームAのどこにも定義されていないとしたら、それはグローバル変数だろう。
グローバル変数(スコープがアプリケーションスコープである変数のこと)から
参照されているのであれば当然アプリ終了まで参照は続く。
注意が必要なのが、フォームAを作るとDim FormA as New FormAというコードが
見えないところに作られるということ。FormAというクラスのFormAというグローバル変数が自動的にできる。
グローバル変数を定義したつもりはなくても勝手に作られるから注意。
このFormAというクラスとFormAという変数をごっちゃにしている人が結構多い。
Unload Meをしなければいけない場面でUnload FormAをしたり、その逆をしていたりする。
0198>>45(ターミネーター)
2012/11/11(日) 03:56:12.89ロード状態というのは「ウインドウ」が生成された状態と言い換えてもいい。
Windowsからそこにウインドウがあると認識できる状態。
ロード状態になると、グローバル変数のFormsコレクションに参照が勝手に追加される。
フォームBがロード状態にあるのなら、フォームAが消滅することで”フォームAが持つフォームBへの参照”が
なくなっても、別の所が参照しているから注意が必要。
ロード状態かつ非表示になってるフォームが残っていてアプリが終了しないと言ってる人もよくいる。
ロード状態からアンロード状態にするには、フォームを閉じるかUnload命令を使う必要がある。
逆にロード状態にするのは、Load命令と・・・ここがまた罠なんだが、フォームがもともと持っているプロパティと
そのフォームの中にあるコントロール、コントロールのプロパティを読み書きすると勝手にロード状態になる。
(自分でフォームに追加した変数であれば読み書きしてもロード状態にならない)
フォームをUnloadしたはいいが、そのあとでフォームのプロパティを参照してしまったり、
フォームのTerminateでフォームのプロパティを参照してしまい、
終了するつもりが勝手にロードされてしまって終了しないという罠にはまってる人もよくいる。
話をまとめると、本当にフォームAの変数だけからフォームBを
参照しているのであればクラスと同じような動きをする。スコープを抜けたr勝手に消えるしリークもしない。
だけどフォームは勝手に参照が追加されてしまう罠が多いから注意が必要ということ
この罠を理解せずに、「とりあえずNothing入れとけばなんとかる」と言ってる奴は、
「Nothingを入れても解放されないことがある。VBのバグだ」などとよく騒ぐ。
0199デフォルトの名無しさん
2012/11/11(日) 03:57:33.60フォームやコントロールを作成するときには、予約キーワードと同じ名前を付けることができます。たとえば、Loop という名前のコントロールを作成できます。
ただし、Visual Basic では、Loop という名前を使うと Loop キーワードと見なされてしまうので、通常の方法ではコードからこのコントロールを参照することはできません。たとえば、次のようなコードではエラーが発生します。
Loop.Visible = True ' エラーが発生します。
予約キーワードと同じ名前を持つフォームやコントロールを参照するには、名前の前に修飾子を付けるか、または角かっこ ([ ]) で囲む必要があります。たとえば、次のコードではエラーは発生しません。
MyForm.Loop.Visible = True ' 名前の前にフォーム名を付けます。
[Loop].Visible = True ' 角かっこを付けます。
前の例のように予約キーワードと角かっこが使えるのは、予約キーワードと同じ名前のフォームやコントロールを参照する場合です。
ただし、変数の宣言やプロシージャの名前には、角かっこを付けても、予約キーワードと同じ名前を使うことはできません。
角かっこは、ほかのタイプ ライブラリで定義されている予約キーワードと同じ名前を、Visual Basic で使用するときにも使います。
0200デフォルトの名無しさん
2012/11/11(日) 03:59:09.210201>>45(ターミネーター)
2012/11/11(日) 04:00:04.01最後に「要するに」の方への答え
> メインフォーム ← A ← B
>
> 要するに聞きたいことは、メインフォームがAへの参照を開放した場合にA、Bが
> リークするかどうかってことだけど。
メインフォームがAへの参照を開放した場合に、
A、Bはともに開放される。
ただし、罠によって違う場所に参照が残っていないならば。
あと>>178に書いてあるように循環参照がないという前提で話している。
0202>>45(ターミネーター)
2012/11/11(日) 04:02:48.21> 予約キーワードをコントロールやフォームの名前にする利点が分からないのだが
俺の知らない時代の話だが、VBは昔クラスがなかった。
フォームもクラスではなく一つしか作れなかった。
つまり、Form1を作ったら、それはForm1という名前のインスタンスだった。
というかインスタンスという考えもなく、単にForm1を作った。という認識だった。
その頃のコードをそのまま動くようにしつつ、
クラスを導入してフォームもクラスの一種にするには
こうするしかなかったのではないだろうか?
0203>>45(ターミネーター)
2012/11/11(日) 04:03:38.80俺のレスに対する話じゃなかったw
>202は忘れてくれ。
0204デフォルトの名無しさん
2012/11/11(日) 05:02:49.560205デフォルトの名無しさん
2012/11/11(日) 05:47:14.16これは知らなかったわ
0206デフォルトの名無しさん
2012/11/11(日) 07:24:37.490207デフォルトの名無しさん
2012/11/11(日) 14:09:15.81参照カウンタ方式のGCでは他の言語でも一般的な話だから
ここはVBスレなわけで、今話してるのはVB特有の問題の話。
0208デフォルトの名無しさん
2012/11/11(日) 14:43:54.85長文書いて気持ちよくなりたかっただけだよね?
0209デフォルトの名無しさん
2012/11/11(日) 15:19:26.73お前ちゃんと読んでないでしょw
相互参照の話はフォームの話の中にはどこにも出てきてないんだよ。
フォームA → フォームB
フォームAがフォームBを参照しているだけのように見えて
(見えないグローバル変数)
↓ ↓
フォームA → フォームB
気づいていないグローバル変数が存在して
いつの間にかそこから参照されているって話なんだから。
どこにも「相互」な参照は存在しない。
0210デフォルトの名無しさん
2012/11/11(日) 15:26:24.88Q.なんだよ見えないグローバル変数ってわけわからん
A.だからVB特有の話だって言ってんだろ。
Form1フォームを作った時に勝手に作られるForm1変数とか
ロード時に登録されるFormsコレクションのことだよ。
これが他の言語にもある話か?相互参照の話か?
0211デフォルトの名無しさん
2012/11/11(日) 17:09:02.83やっぱりTerminate後にクラスのメンバ変数は自動的にNothingになるんだね。
まあある意味当然か。
あんまり関係ないが、VB.NET使ってると俺が時々やってしまうポカにWitheventsな
フィールドへのNothingの入れ忘れがある。
特にフォームでこれをやるとFormClosed後でも参照してるオブジェクトのイベントを拾ってしまって
既にハンドルが破棄されたコントロールを更新しようとして例外なんてことになるが、
VB6の場合はこれはないわけか。
0212デフォルトの名無しさん
2012/11/11(日) 18:33:22.45その話ならどっかで参照持ってるやつがいるならGCが回収しないのは一般論だし長文書く必要もないだろ
長文オナニー楽しいでしょ
0213デフォルトの名無しさん
2012/11/11(日) 18:46:46.98長文にならない方法で説明して欲しいw
少なくともお前の文章ではForm1のこともFormsのことも
分からない。
0214デフォルトの名無しさん
2012/11/11(日) 21:00:01.39フォームのプロパティに触れると勝手にロードされるから気をつけろ。
あとは、クラスと同じ注意が必要。
と言うだけでしょ。
Forms なんて、システムが勝手にやる話だから、説明してもしょうがない。
0215デフォルトの名無しさん
2012/11/11(日) 21:29:45.86それがNothingの話とどう関係があるんだ?
それが抜けてるだろ。
お前はフォームの話をしているに過ぎない。
0216デフォルトの名無しさん
2012/11/11(日) 21:38:08.080217デフォルトの名無しさん
2012/11/11(日) 22:00:12.57それがどうフォームのロードとつながるのかって
話をしないとダメだろ。
Formsもちゃんと説明しないと、だってそこに
参照ができるんだからさぁ。
元々の話わかってる?
フォームの話じゃなくて参照の話だよ。
0218デフォルトの名無しさん
2012/11/11(日) 22:14:39.08ダメだと思ってるのは君だけ。
0219デフォルトの名無しさん
2012/11/11(日) 22:21:58.74フォームとNothingの関連性が
説明されてないって言ってるんだが。
0220デフォルトの名無しさん
2012/11/11(日) 22:26:34.28> あとは、クラスと同じ注意が必要。
で充分だろ。
頭に血が上ってるのは判るけど、ちょっと冷静になれよ。
0221デフォルトの名無しさん
2012/11/11(日) 22:42:30.83どちらの人も言ってないと思うけど、Formの特殊性は参照されてなくても
生存し続ける必要があるという機能的な要請から来てるんだよね。
0222デフォルトの名無しさん
2012/11/11(日) 22:55:18.010223デフォルトの名無しさん
2012/11/11(日) 23:25:55.74クラスと違う部分の話は?
0224デフォルトの名無しさん
2012/11/11(日) 23:33:57.04不要でしょ。
必要だと思うなら、君が説明すればいい。
0225デフォルトの名無しさん
2012/11/11(日) 23:37:33.12すでに説明済みw
0226デフォルトの名無しさん
2012/11/11(日) 23:53:31.510227デフォルトの名無しさん
2012/11/12(月) 00:04:23.940228デフォルトの名無しさん
2012/11/12(月) 01:17:02.042度手間乙w
0229デフォルトの名無しさん
2012/11/12(月) 01:18:15.580230デフォルトの名無しさん
2012/11/12(月) 11:44:24.40> 医療のCT映像処理で縦に撮影した数百枚の画像を
> 横から輪切りにしたイメージに変換してDICOM化するなんてことを
> 一週間納期で任される事もある
へー、それVB6でやってんだ。
0231デフォルトの名無しさん
2012/11/12(月) 11:50:51.00お前らが話してることなんかどうでもいいんだよ。
問題は、こういう主張してる奴がいるって事。
・Nothingを明示的に代入することと、スコープを外れたときの処理とでは内容が異なる
・Nothingを代入しないとメモリリークする
本当なら、根拠を示してくれよ。
0232デフォルトの名無しさん
2012/11/12(月) 14:03:52.45Nothingキーワードの意味を調べとけって感じだな...
0233デフォルトの名無しさん
2012/11/12(月) 14:18:14.37VB6は医療系に強いよ。
無茶な納期要求、スカラー型を主に使えばネイティブCコンパイラ高速処理が可能だし
医療系OCXも充実している。
0234デフォルトの名無しさん
2012/11/12(月) 14:22:34.91人に聞かないで自分で試して論拠を提示しなよ。能無しの雑魚が。
0235デフォルトの名無しさん
2012/11/12(月) 14:23:17.92CでNothing代入とか言ってる貴様の空気脳にはマイッタヨ。
0236デフォルトの名無しさん
2012/11/12(月) 14:25:50.07ひどいアスペを見た
0237デフォルトの名無しさん
2012/11/12(月) 14:28:56.90C++とCを混同してるんだろ?ほうっておけ。バカが移るぜ?
0238デフォルトの名無しさん
2012/11/12(月) 14:30:18.10C++でも処理系を限定しないならNothingは関係ない。
純粋に言語仕様で物を考えられない初心者と
説明下手な長文さんの巣窟だねここは。
0239デフォルトの名無しさん
2012/11/12(月) 14:41:21.920240デフォルトの名無しさん
2012/11/12(月) 14:43:08.20Cキチガイまで参加してきたらオワルぞココ。
0241デフォルトの名無しさん
2012/11/12(月) 14:51:26.88Terminateイベントを早期に発生させるためにNothingを導入するが正解なのね?
この結論のためにどんだけ無駄スレ消費してるのよ君ら?
そのエネルギーを仕事に使えばいいのに。
0242デフォルトの名無しさん
2012/11/12(月) 16:53:44.24> まとめると、VB6でオブジェクトが不要になった時は
> Terminateイベントを早期に発生させるためにNothingを導入するが正解なのね?
不正解
0243デフォルトの名無しさん
2012/11/12(月) 16:56:50.380244デフォルトの名無しさん
2012/11/12(月) 17:00:16.120245デフォルトの名無しさん
2012/11/12(月) 17:00:27.52正解だろ?
アホかよ?
0246デフォルトの名無しさん
2012/11/12(月) 17:03:19.670247デフォルトの名無しさん
2012/11/12(月) 17:16:48.85また最初から繰り返すつもりか?
不正解だ馬鹿。
0248デフォルトの名無しさん
2012/11/12(月) 17:17:14.980249デフォルトの名無しさん
2012/11/12(月) 17:23:14.780250デフォルトの名無しさん
2012/11/12(月) 17:23:34.410251デフォルトの名無しさん
2012/11/12(月) 17:26:26.41正解にしとけ。WEBサイトで堂々とアピールしている先生様の面子も考えてやれやwwwwww
0252デフォルトの名無しさん
2012/11/12(月) 17:27:09.90つ、mallocしたらfree必須だろうが?アホか貴様は?
0253デフォルトの名無しさん
2012/11/12(月) 17:27:22.71Nothingしてもメモリは解放されない
0254デフォルトの名無しさん
2012/11/12(月) 17:32:13.910255デフォルトの名無しさん
2012/11/12(月) 17:34:13.380256デフォルトの名無しさん
2012/11/12(月) 17:35:20.220257デフォルトの名無しさん
2012/11/12(月) 17:42:38.05質問!
それは、オブジェクトを返す関数を作ると、メモリがリークするって事か?
0258デフォルトの名無しさん
2012/11/12(月) 17:49:43.86なぜそういう疑問になるか意味不明。参照の意味わかってないのね?
0259デフォルトの名無しさん
2012/11/12(月) 17:56:38.38Nothingしなければ参照ポインタが0に(なった時点では)解放されない。
0260デフォルトの名無しさん
2012/11/12(月) 17:59:27.94Nothingすれば参照ポインタが0になっているのならその時点で解放される。
参照ポインタが0になっていないのなら何をどうしようが解放されることはない。これがメモリーリークだ。
0261デフォルトの名無しさん
2012/11/12(月) 18:34:50.03> ずいぶん前、fj.comp.lang.c++で大規模なフレームがあった。malloc/freeについての論争である。
> mallocでメモリを確保した後にfreeをしなければならないのか、そうではないのかという、今でも
> 時々蒸し返される定番の話題だ。
>
> この当時、初心者にはmallocと対応させてfreeをすることを教えない方が良いとする意見が
> Guruたちの間では優勢であり、その中の一人にまつもとさんもいた。
http://handasse.blogspot.com/2008/06/mallocfree.html
0262デフォルトの名無しさん
2012/11/12(月) 19:42:23.90それってmallocで実際にメモリが確保されるタイミングが分からないからという事?
まだ確保されていないのにfreeしたらイカンという事なら
元々そういう確保ディレイが生じるシステムではfreeもディレイされるよう設計されているから問題無い。
逆にそうなっていないとしたらシステム側の問題であってプログラマに責任はない。
つ、そんなシステム、誰も相手にシンクなるから放っておけば淘汰される。
基本、mallocにfreeは絶対必要と考えていい。
0263デフォルトの名無しさん
2012/11/12(月) 19:51:18.14freeしたところで実際にはメモリをシステムに返さないから意味ないから書かなくていいという考え方みたい。
そもそも実装とコーディングは別次元の話なので、freeが不要だという考えは間違っている。
しかし間違えた方がエレガントに見えるので、問題が無いのであれば間違いを受け入れることを
あえて初心者にすすめる人もいる。
世の中で自分目線で正しい事が、必ずしも世の中に対する正義にはならないのと同じ。
0264デフォルトの名無しさん
2012/11/12(月) 20:22:41.33A: 「私は私を眠らす」
B: 「私は眠る」
上では、Bの方がエレガント、みたいな話?
0265デフォルトの名無しさん
2012/11/12(月) 20:41:39.91クラス変数・・・クラスがなくなるときに解放される
ローカル変数・・・関数が終了するときに解放される
・変数の生存時間
(短い)ローカル変数 < クラス変数 < グローバル変数(長い)
ようするにこういうこと。
ローカル変数の場合、変数の生存時間が短いことが多いわけだから
Nothingを代入する必要は殆ど無い。
もし代入した後ですぐに関数が終わるようならやる意味は無いと言い切って良い。
クラス変数の場合、変数の生存時間はローカル変数より長い。
だけど、クラス変数の場合はたいがいクラスが生きてる間は参照先を使う事が多い。
もしTerminateなんかでNothingを代入しているようならそれは意味が無い。
クラスは生きているが参照先が不要になった(ただしローカル変数ではない)って時だけ
Nothingを代入する必要がある。
アプリが終了するまで参照が消えない。これは長時間だが
そもそも、グローバル変数を使うときは、長時間何かのオブジェクトを使いたい時。
長時間使う必要がないのに、グローバル変数になっているのは設計がまずい
結局どのパターンも ”早く解放したいという理由で” 明示的にNothingを代入することはまずない。
0266デフォルトの名無しさん
2012/11/12(月) 20:43:48.05> Nothingしなければ参照ポインタが0になっても解放されない。
細かいようだが、この文では、Nothingしない限りメモリは解放されないと読める
0267デフォルトの名無しさん
2012/11/12(月) 20:45:00.350268デフォルトの名無しさん
2012/11/12(月) 20:45:43.630269デフォルトの名無しさん
2012/11/12(月) 20:46:34.31正しいと言えるのはココだけかな?
0270デフォルトの名無しさん
2012/11/12(月) 20:48:50.420271デフォルトの名無しさん
2012/11/12(月) 20:49:02.59C言語におけるmallocとfreeの話は
VBのNew、Nothingの話とは違う。
なぜならC言語にはGCがないからだ。
http://www.kouno.jp/home/c_faq/c7.html
> 7.24:
> プログラムが終了する前に、確保したメモリを解放しなければならな いか。
> A:
> その必要はない。まともなオペレーティングシステムならきっとプロ グラムが終了した時点で
> すべてのメモリを取り返すだろう。にもかか わらず、個人向けコンピュータ(PC)の中には
> メモリを取り戻すことが 確実にはできないものもあるようである。ANSI/ISO C規格から
> 結論つ けられることは、解放してくれるかどうかは「実装の品質がどれくら い高いかによる」ということだけである。
freeしなくてもいいという理由「まともなOSならOSがやってくれるから」であり、
GCが自動的にメモリ解放してくるからという理由ではない。
0272デフォルトの名無しさん
2012/11/12(月) 20:49:10.13Terminateイベントを早めに出すためにNothingの代入が必要だということは認めてるんじゃね?
あくまでTerminateイベントが出たからってメモリから解放されないと言いたいのでは?
あまり煽るとまたTerminalとか言ってきそうなので程々になwww
0273デフォルトの名無しさん
2012/11/12(月) 20:49:38.18> クラス変数よりローカル変数の方が生存期間が永いケースなんて山ほどある
ないだろw
0274デフォルトの名無しさん
2012/11/12(月) 20:51:47.08クラスに定義した関数の中のローカル変数のほうが
生存時間が長い?
不思議なコードだなw
書いてみて。
0275デフォルトの名無しさん
2012/11/12(月) 20:54:10.56> あくまでTerminateイベントが出たからってメモリから解放されないと言いたいのでは?
Terminateイベントはメモリ解放の直前に発生するんだぞ。
Terminateイベント発生時はメモリ解放されてないの当たり前だし、
イベントが終了したらメモリは解放される。
そしてTerminateイベントが発生するタイミングは
誰からも参照されなくなった時。
0276デフォルトの名無しさん
2012/11/12(月) 20:55:21.78なるほど。
>>273
ほとんどないだろうがシステム側の定義が無い以上絶対にないとは言い切れないな。
たとえばローカル変数と言っておきながらシステム的にはスコ―プが外れても開放しない。
理由はまたプログラムがローカル変数を定義するかもしれないからそのままにしておくという。
CPUのレジスタを使うかメモリを使うかは処理系任せなのだし、コーディング上であれやこれや言っても
机上の空論におわりそうだな。
0277デフォルトの名無しさん
2012/11/12(月) 20:56:32.93わざわざメモリ解放を手動でやったりしないよ。
それが答えじゃないか?
0278デフォルトの名無しさん
2012/11/12(月) 20:58:04.99ローカル変数は、関数が終わったら自動的に消える
(オブジェクトならNothingされる)って知ってますか?
どうやってそのままにするの?
ちょっと具体的にコード書いてみて。
0279デフォルトの名無しさん
2012/11/12(月) 20:58:46.740280デフォルトの名無しさん
2012/11/12(月) 20:58:55.45VB6という処理系に限定してもローカル変数の生存時間が非常に長い事がありますよ。
たとえば局所的にローカル変数を数百個定義した場合などがそれで
VB Decompilerで見るとなんとローカル変数を開放していないばかりかスタックにもなっていない。
そう、mallocで確保したメモリをローカル変数に使ってるのですよ!
こうなるともうfreeが要不要論にまで発展してしまい、それこそ収拾がつかなくなりますわ。
0281デフォルトの名無しさん
2012/11/12(月) 20:59:44.16だからローカル変数と、ローカル変数の参照先の
区別ぐらい付けられるようになれって。
アホ丸出し
0282デフォルトの名無しさん
2012/11/12(月) 21:01:07.49突っ込まれると色んな比喩を使ってくるから分かりやすい人ですね。ふふふ。
0283デフォルトの名無しさん
2012/11/12(月) 21:01:19.020284デフォルトの名無しさん
2012/11/12(月) 21:02:48.46そのうち何でもポインターですとか言ってしまうのだろう?この青ケツ坊やは?
0285デフォルトの名無しさん
2012/11/12(月) 21:02:59.06Dim v001 As Integer
Dim v002 As Integer
:
:
Dim v998 As Integer
Dim v999 As Integer
こんなコードか?w
0286デフォルトの名無しさん
2012/11/12(月) 21:03:42.54なんでそこで切れてるの?
さっきからNothingって話してるだろ。
Nohingってのは参照型にしか代入できないんだが。
0287デフォルトの名無しさん
2012/11/12(月) 21:03:58.980288デフォルトの名無しさん
2012/11/12(月) 21:04:30.44見てればわかるよw
0289デフォルトの名無しさん
2012/11/12(月) 21:06:44.43突っ込まれて慌てて参照型を持ち出す慌てよう。
見ていて滑稽。アホ丸出しですwww
0290デフォルトの名無しさん
2012/11/12(月) 21:07:31.36定義と宣言の意味さえもわからないようでつ
0291デフォルトの名無しさん
2012/11/12(月) 21:07:45.64滑稽なのはお前のことだよ。
みんなわかってるよ。
0292デフォルトの名無しさん
2012/11/12(月) 21:08:21.02C言語のように、定義と宣言が分かれてる言語なら
よかったねw
0293デフォルトの名無しさん
2012/11/12(月) 21:08:24.56大丈夫か?医者いけよw
0294デフォルトの名無しさん
2012/11/12(月) 21:09:21.77うわっ!とんでもないVB6初心者を相手にしてたのね俺。
菌が伝染しそうで恐いわ。
0295デフォルトの名無しさん
2012/11/12(月) 21:09:43.78お前以外は一人だと思ってるの?w
ちょっと頭悪いと思う。
0296デフォルトの名無しさん
2012/11/12(月) 21:11:46.23定義っていうのは○○という名前のものをそこに作りますよって言うこと。
>>285はv001という変数がそこにできるから
これは定義。
0297デフォルトの名無しさん
2012/11/12(月) 21:13:03.99この動作を理解するためにはオブジェクト(変数や関数)の 定義 (definition) と宣言 (declaration)の違いを きちんと区別しておく必要があります.
定義では名前(識別子)が宣言されて,実際にメモリ領域を割り当てる.
宣言では名前(識別子)が宣言されるだけで,メモリ領域は割り当てない.
0298293
2012/11/12(月) 21:13:36.24ええと、あなたに言った覚えはないのですが?見えない敵をつくらないでね。
妄想ちゃん
0299デフォルトの名無しさん
2012/11/12(月) 21:15:19.99え? 違う人がレスしたらダメなの?w
みんなでお前を叩いてるって図なんだがw
0300デフォルトの名無しさん
2012/11/12(月) 21:15:51.69連日頑張るなぁ。
0301デフォルトの名無しさん
2012/11/12(月) 21:16:53.87違うけどw
でもそう思ったお前は
連日このスレに居るってことかなw
でなきゃ連日なんてわからないよね。
0302デフォルトの名無しさん
2012/11/12(月) 21:17:17.82さすがこのスレというか、もう馬鹿丸出しだな
0303デフォルトの名無しさん
2012/11/12(月) 21:17:29.42語尾に草が付くようになっては心理状態がまるみえでつよ?
0304デフォルトの名無しさん
2012/11/12(月) 21:18:00.34Nothingは、オブジェクトが存在しない事を示すオブジェクト型である
Nothingを代入すれば、オブジェクトは解放される場合がある
0305デフォルトの名無しさん
2012/11/12(月) 21:18:13.69いやまったく。ターミナル小僧ときたらもうね。
0306デフォルトの名無しさん
2012/11/12(月) 21:18:18.59俺も>>292でそう言ったんだが
どうやらあの馬鹿は理解できないようでね。
0307デフォルトの名無しさん
2012/11/12(月) 21:19:21.59心理状態がバレないようにわざとwを付けなかったんですねw
0308デフォルトの名無しさん
2012/11/12(月) 21:19:37.25構文はあるけどね
0310デフォルトの名無しさん
2012/11/12(月) 21:20:36.59↓
290 名前:デフォルトの名無しさん[sage] 投稿日:2012/11/12(月) 21:07:31.36
>>285
定義と宣言の意味さえもわからないようでつ
0311デフォルトの名無しさん
2012/11/12(月) 21:21:45.85しようとしてるのバレバレw
>>290だろ。馬鹿なのは。
0312デフォルトの名無しさん
2012/11/12(月) 21:22:36.77ということはターミナル小僧だったんだな?
イヒヒ
0313デフォルトの名無しさん
2012/11/12(月) 21:23:23.52俺のカンは当たっていた!
0314デフォルトの名無しさん
2012/11/12(月) 21:23:52.61区別もつかない奴はどこに行った?
値型と参照型の区別もついてない奴だよ。
ローカル変数ではなく、参照先のオブジェクトが
ヒープに作られてるのを見つけてドヤ顔してても
周りから見ると恥ずかしいだけだよ。
0315デフォルトの名無しさん
2012/11/12(月) 21:24:49.000316デフォルトの名無しさん
2012/11/12(月) 21:27:52.79話を蒸し返すな。
また>>280が暴れだすぞw
279 名前:デフォルトの名無しさん[sage] 投稿日:2012/11/12(月) 20:58:46.74
>>276は「ローカル変数」と「ローカル変数の参照先」の区別がついてないんだろうな。
280 名前:デフォルトの名無しさん[] 投稿日:2012/11/12(月) 20:58:55.45
>>276
VB6という処理系に限定してもローカル変数の生存時間が非常に長い事がありますよ。
たとえば局所的にローカル変数を数百個定義した場合などがそれで
VB Decompilerで見るとなんとローカル変数を開放していないばかりかスタックにもなっていない。
そう、mallocで確保したメモリをローカル変数に使ってるのですよ!
こうなるともうfreeが要不要論にまで発展してしまい、それこそ収拾がつかなくなりますわ。
281 名前:デフォルトの名無しさん[sage] 投稿日:2012/11/12(月) 20:59:44.16
>>280
だからローカル変数と、ローカル変数の参照先の
区別ぐらい付けられるようになれって。
アホ丸出し
0317デフォルトの名無しさん
2012/11/12(月) 21:34:30.49サワルナチュウイ!
0318デフォルトの名無しさん
2012/11/12(月) 21:35:34.55こいつら雁首そろえて馬鹿か?
0319デフォルトの名無しさん
2012/11/12(月) 21:41:03.65free( p )
と勘違いしてるみたいだから馬鹿には違いない
0320デフォルトの名無しさん
2012/11/12(月) 21:51:15.540321デフォルトの名無しさん
2012/11/12(月) 22:29:39.52なぜ枯れたVB6が今これほどまでに熱いのか???
誰が三行で説明してくれ。
0322デフォルトの名無しさん
2012/11/12(月) 22:31:41.02Nothingを代入すると言語がプログラマを見て、メモリを開放するかどうか判断するところだろ?
こんなインテリジェントな言語が他にあるかっつーの。
0323デフォルトの名無しさん
2012/11/12(月) 22:54:53.27VB6使いの仕事
今はもう細かい知識を競い合う以外には
Nothing
0324デフォルトの名無しさん
2012/11/12(月) 22:59:13.460325デフォルトの名無しさん
2012/11/12(月) 22:59:56.164行。ブッブー!!!
0326デフォルトの名無しさん
2012/11/13(火) 00:30:50.970327デフォルトの名無しさん
2012/11/13(火) 09:13:10.99Nothingはメモリを開放しない
0328デフォルトの名無しさん
2012/11/13(火) 09:16:01.390329デフォルトの名無しさん
2012/11/13(火) 09:20:37.58だから、Nothingはメモリを開放しない
Nothingの代入で、メモリが開放されたように見える場合があるだけ
0330デフォルトの名無しさん
2012/11/13(火) 11:45:36.27参照カウンタ一つ減る
参照カウンタがゼロならメモリを解放する
0331デフォルトの名無しさん
2012/11/13(火) 11:45:39.01> C言語におけるmallocとfreeの話は
> VBのNew、Nothingの話とは違う。
> なぜならC言語にはGCがないからだ。
なぜ俺がmalloc/free論争の話を持ち出すかというと、VBでのNothingの話と、
「本質的に必要ではないfreeなのに、なぜfreeしろというのか」という文脈が同じだから。
malloc/free論争では、「使ったのだからfreeするのは当然(思考停止)」「お作法として
必要(思考停止)」と頑固に主張する人がいたため、長大な論争となった。
0332デフォルトの名無しさん
2012/11/13(火) 12:00:26.160333デフォルトの名無しさん
2012/11/13(火) 12:48:27.58オブジェクトを返す関数の場合はどうするの?
0334デフォルトの名無しさん
2012/11/13(火) 13:05:23.64その、オブジェクトを返す関数を呼び出す関数のスコープを抜ける前にNothingの代入が必要かどうか
という問題に置き換わるに決まってるんだけど、そんなこともわからないわけ?
0335デフォルトの名無しさん
2012/11/13(火) 13:09:33.72だからメモリーは解放されるってば。タスクマネージャーで見ていても明白。
バッカジャネーノ?
0336デフォルトの名無しさん
2012/11/13(火) 13:26:27.43明示的にそのメソッドを呼びたくなっちゃうの?
0337デフォルトの名無しさん
2012/11/13(火) 13:31:33.530338デフォルトの名無しさん
2012/11/13(火) 13:45:33.45関数の終わりに自動実行される自動変数のデストラクタも
VB6ではなくてC++で実装されているんじゃないかね。
0339デフォルトの名無しさん
2012/11/13(火) 13:54:11.25そんなことはありません。VB6ではOLEオートメーションが呼び出されます。
その先は何をやっているのかわかりませんが単純にC++ライブラリ渡しではありません。
残念でした。
0340デフォルトの名無しさん
2012/11/13(火) 14:03:37.77ん?
オブジェクトを返す関数の戻り値としてのオブジェクトの参照にたいしてどうやって明示的にNothingを代入するのかと言うのを聞いている
Function TestFunc() as Object
Set TestFunc = New なんかのオブジェクト '<-こいつにどうやって明示的にNothingを入れるの?
'以下なんかの処理
End Function
>>335
Nothingを代入しても、参照カウンタが0にならなければ、オブジェクトの開放は行われない
VB6にはGCは無いので、参照カウンタが0になればオブジェクトは開放される
0341デフォルトの名無しさん
2012/11/13(火) 14:05:07.91アホなの?
sub foo()
set bar = testfunc()
set bar = nothing
end sub
0342デフォルトの名無しさん
2012/11/13(火) 14:08:04.34だから結局「解放される」を否定することはできないだろうって事だよ。
0343デフォルトの名無しさん
2012/11/13(火) 14:13:46.81Nothingを代入しなければいけない場合にのみNothingを代入すれば十分。
Nothingを代入しなければいけない場合の例:
http://homepage1.nifty.com/rucio/main/technique/teq_15.htm
それ以外は不要。
0344デフォルトの名無しさん
2012/11/13(火) 14:15:42.710345デフォルトの名無しさん
2012/11/13(火) 14:26:48.66あの例ならExcelAppを Command1_Clickで宣言すべきじゃねかと思った。
0346デフォルトの名無しさん
2012/11/13(火) 14:28:57.73そもそもVBAとは似て非なりでVBAの方が言語的には進んでいる。
構造的にはVB6が勝るが。
0347デフォルトの名無しさん
2012/11/13(火) 14:30:22.690348デフォルトの名無しさん
2012/11/13(火) 14:31:46.690349デフォルトの名無しさん
2012/11/13(火) 14:34:18.91それは、変数barにNothingを代入しただけじゃん
俺が言っているは、暗黙変数TestFuncにNothingをどうやって代入するのかだ
>>342
Nothingの代入の有無にかかわり無く、開放されるべきときに開放され、開放されるべきではないは開放されない
0350デフォルトの名無しさん
2012/11/13(火) 14:36:16.140351デフォルトの名無しさん
2012/11/13(火) 14:37:10.78その代表が君か!w
0352デフォルトの名無しさん
2012/11/13(火) 14:38:32.230353デフォルトの名無しさん
2012/11/13(火) 14:39:36.06コミュニケーション、つまり意思伝達
このスレの連中は互いに意思伝達が出来てない
自分の言いたいことだけを一方通行的にわめいてるだけ
0354デフォルトの名無しさん
2012/11/13(火) 14:41:31.160355デフォルトの名無しさん
2012/11/13(火) 14:45:47.560356デフォルトの名無しさん
2012/11/13(火) 14:46:52.79両方だろう
0357デフォルトの名無しさん
2012/11/13(火) 14:48:18.16しょうもないことで言い争いになりそうだから
0358デフォルトの名無しさん
2012/11/13(火) 14:49:33.99VB6の説明にC++を引用するアホがいたかと思えば今度はVBAを引き合にだすドアホが出る始末。
黙って見ていれば日本語不自由な奴が日本語叩き。もうなんちゅうとこなの?ココは?w
0359デフォルトの名無しさん
2012/11/13(火) 14:50:00.350360デフォルトの名無しさん
2012/11/13(火) 14:50:01.23> >>341
> それは、変数barにNothingを代入しただけじゃん
> 俺が言っているは、暗黙変数TestFuncにNothingをどうやって代入するのかだ
その、オブジェクトを返す関数(TestFunc)を呼び出す関数(bar)のスコープを抜ける前に(変数barに)Nothingの代入が必要かどうか
という問題に置き換わる
ってことなんだけど理解できないか?
0361デフォルトの名無しさん
2012/11/13(火) 14:51:15.32TerminateをTerminalと間違えるのも幼稚園だから?
0362デフォルトの名無しさん
2012/11/13(火) 14:51:30.18誤: 呼び出す関数(bar)
正: 呼び出す関数(foo)
ところで、参照カウンタの話は理解してるよな?
0363デフォルトの名無しさん
2012/11/13(火) 14:51:34.760364デフォルトの名無しさん
2012/11/13(火) 14:51:46.43コミュ力が無い相手、日本語が通じない相手に何言っても無駄です
0365デフォルトの名無しさん
2012/11/13(火) 14:52:30.35それ以前にお前さんとチームを組む必要がどこにあるんだよ?w
0366デフォルトの名無しさん
2012/11/13(火) 14:53:18.40無駄だと知りながら力説する君のその矛盾は一体なに?
0367デフォルトの名無しさん
2012/11/13(火) 14:54:10.22文面そのままの意味で受け取るとかアスペかよ
0368デフォルトの名無しさん
2012/11/13(火) 14:55:48.28アスペルガーがいることを踏まえて遠回しな表現や婉曲表現や比喩表現などは一切控えてください
0369デフォルトの名無しさん
2012/11/13(火) 14:56:24.570370デフォルトの名無しさん
2012/11/13(火) 14:56:27.790371デフォルトの名無しさん
2012/11/13(火) 14:56:47.05文面そのままの意味で受け取るとアスペだというお前の理論が既に崩壊している件。
0372デフォルトの名無しさん
2012/11/13(火) 14:57:49.31今度はアスペルガーと省略しない理由は別人だからと言い張るであろう予測は的中。
0373デフォルトの名無しさん
2012/11/13(火) 14:58:49.94そのレスでアスペ確定じゃねえかw >>367の真意を理解してねえじゃねえかw
0374デフォルトの名無しさん
2012/11/13(火) 15:05:27.94意味不明、俺は
Function TestFunc() as Object
Set TestFunc = New なんかのオブジェクト '<-こいつにどうやって明示的にNothingを入れるの?
'以下なんかの処理
Set TestFunc = Nothing 'まさか、Nothingを明示的に代入するという人は、こうやってNothingを代入する気なのかい?
End Function
って質問をしてるの
0375デフォルトの名無しさん
2012/11/13(火) 15:09:41.43そのコードだとオブジェクトを返してないじゃん。
アホ?
0376デフォルトの名無しさん
2012/11/13(火) 15:11:19.910377デフォルトの名無しさん
2012/11/13(火) 15:28:42.27ならなんで、食いついてくる?
0378デフォルトの名無しさん
2012/11/13(火) 15:30:59.92多分、君が最初に俺(>>332)にコメントしたからレスしてるんだが。
0379デフォルトの名無しさん
2012/11/13(火) 15:49:07.78Nothing不要だと思ってるなら、「Nothingが必要だと思う人に聞いてくれ」って返せばいいじゃない
わざわざコードまで書いて質問してるんだから、コードの意図も読めよ
0380デフォルトの名無しさん
2012/11/13(火) 16:10:01.74> Nothing不要だと思ってるなら、「Nothingが必要だと思う人に聞いてくれ」って返せばいいじゃない
なんで?
> わざわざコードまで書いて質問してるんだから、コードの意図も読めよ
意図がさっぱりわかんないんだけど。
>>333
> オブジェクトを返す関数の場合はどうするの?
という疑問なら、
>>334
> その、オブジェクトを返す関数を呼び出す関数のスコープを抜ける前にNothingの代入が必要かどうか
> という問題に置き換わる
ってことであって、それ以上でも以下でもないよ?
0381デフォルトの名無しさん
2012/11/13(火) 16:59:25.62Set Bar = TestFunc()
とした場合、変数Barと、TestFunc関数の暗黙変数TestFuncは、同じオブジェクトへの参照を持つ、全く別の変数です
つまり、明示的にNothingを入れなければならないという主張を正しいと言うには、暗黙変数TestFuncへの明示的なNothing代入が出来なければなりません
で、変数Barにオブジェクトを代入した後、暗黙変数TestFuncに明示的にNothingを代入する手段は存在しますか?
まっ、サブルーチンや関数の引数にTestFunc()を直接指定すれば、暗黙変数TestFuncを明示的にNothingできるけど...それは、それでダーティーな手法だろ...
0382デフォルトの名無しさん
2012/11/13(火) 17:04:29.81> >>380
> Set Bar = TestFunc()
> とした場合、変数Barと、TestFunc関数の暗黙変数TestFuncは、同じオブジェクトへの参照を持つ、全く別の変数です
そして、この行の実行中、「なんかのオブジェクト」の参照カウントは一旦2になり、この行の実行が
完了したら自動的にTestFuncがもっていた「なんかのオブジェクト」の参照はなくなり、参照カウントが
1(Barが参照している分)になる。
つまり、>>334
> その、オブジェクトを返す関数を呼び出す関数のスコープを抜ける前にNothingの代入が必要かどうか
> という問題に置き換わる
ってことであって、それ以上でも以下でもないよ?
0383デフォルトの名無しさん
2012/11/13(火) 17:31:43.98つーかさ、勝手に質問を変えないで
俺は、暗黙変数TestFuncに対して明示的にNothingを代入する方法を聞いてるの
明示的にNothingを代入する方法が無いなら、「システムが自動で回収するから問題ない、極一部の場合を除いて明示的なNothingなんて必要ない」で話は終了するの
0384デフォルトの名無しさん
2012/11/13(火) 17:51:07.42いやいや、勝手に意味不明な質問に変えてるのは君なんだけど。
>>332
> Nothingで言うと、スコープ出る前にオブジェクトの解放が必要に決まってるのだからNothing代入が必要、って感じだな
>>333
> オブジェクトを返す関数の場合はどうするの?
>>334
> その、オブジェクトを返す関数を呼び出す関数のスコープを抜ける前にNothingの代入が必要かどうか
> という問題に置き換わる
〜という問題に置き換わるのであって、「オブジェクトを返す関数(の変数)にNothingを代入する」なんて
問題はどこにも存在しないわけだ。
存在しない問題に対しては答えられないよ。
0385デフォルトの名無しさん
2012/11/13(火) 17:53:04.19>>383
> 明示的にNothingを代入する方法が無いなら、「システムが自動で回収するから問題ない、
> 極一部の場合を除いて明示的なNothingなんて必要ない」で話は終了するの
〜で話が終了しないから紛糾してるんだけど。
0386デフォルトの名無しさん
2012/11/13(火) 17:54:35.890387デフォルトの名無しさん
2012/11/13(火) 18:02:31.88Nothingを使う必要が無いというのは同意だが、なぜNothing使う必要が無いのか理解してないんじゃないの?
0388384
2012/11/13(火) 18:06:30.73> なぜNothing使う必要が無いのか理解してないんじゃないの?
ん、主語は俺なの?それとも彼?
彼だとしたら、説明済みなんだけど、理解できてないのかしら。
>>382
> そして、この行の実行中、「なんかのオブジェクト」の参照カウントは一旦2になり、この行の実行が
> 完了したら自動的にTestFuncがもっていた「なんかのオブジェクト」の参照はなくなり、参照カウントが
> 1(Barが参照している分)になる。
0389デフォルトの名無しさん
2012/11/13(火) 18:10:08.09それ君でしょ?
0390384
2012/11/13(火) 18:11:22.350391デフォルトの名無しさん
2012/11/13(火) 18:12:45.860392384
2012/11/13(火) 18:12:50.86> 俺は、暗黙変数TestFuncに対して明示的にNothingを代入する方法を聞いてるの
そのような方法は無いし、そもそもそんな問題は存在しない。
さらには「暗黙変数」とかいう俺用語使うな。
0393デフォルトの名無しさん
2012/11/13(火) 18:15:17.800394デフォルトの名無しさん
2012/11/13(火) 18:16:30.060395384
2012/11/13(火) 18:18:15.27別に自分自身を擁護する必要なんかないわけですが。
つか、君も俺のレスの何かにコメントしたいわけ?だったらしなよ。
別角度の話題になるんだったらレスするから。
0396デフォルトの名無しさん
2012/11/13(火) 18:19:33.740397デフォルトの名無しさん
2012/11/13(火) 18:23:10.13代入必要派の反論ある?
0398デフォルトの名無しさん
2012/11/13(火) 18:33:00.61> オブジェクトを返す関数の戻り値としてのオブジェクトの参照にたいしてどうやって明示的にNothingを代入するのかと言うのを聞いている
多分、オブジェクトを返す関数の戻り値がスタック上にしか存在しないというのがわかってない。
呼び出しが終了すれば、スタックが破棄され参照は消滅する。
0399デフォルトの名無しさん
2012/11/13(火) 18:38:06.33だが住所先の種類や状態によってその意味合いが変わり、自動的に消滅するものは
Nothingは不要って話?
0400桃白白
2012/11/13(火) 18:55:30.33ケースバイケースだろ。しかしまあ、だいたいはそれでいんじゃね。
オブジェクトがメモリを大量に消費して自転車操業的に実行しなければメモリが
やばいです超やばいですってんじゃないなら問題ないだろ。
Dim o As Object
Set o = New BigMemoryConsumer
Call Use(o)
Call SuperLongTimeProcessing()
こんなときは必要なくなった時点で破棄してやらんとまずいわね。桃白白そう思うわね。
0401デフォルトの名無しさん
2012/11/13(火) 19:17:02.76反論じゃないけどNothingの代入は必要だと思ってる。
代入しなくても動くから代入しないとかいう考えはあまりにも稚拙だし。
0402デフォルトの名無しさん
2012/11/13(火) 20:06:05.690403デフォルトの名無しさん
2012/11/13(火) 20:17:58.19.netがだらしないからな。しかたないよ。
0404デフォルトの名無しさん
2012/11/13(火) 20:32:54.49なんでわざわざという気がする。
0405デフォルトの名無しさん
2012/11/13(火) 20:34:06.040406デフォルトの名無しさん
2012/11/13(火) 20:39:43.00質問!
次のコードの場合、オブジェクトForm1は開放されないの?
Set o = New Form1
Set o = New Form2
0407デフォルトの名無しさん
2012/11/13(火) 20:42:19.91されない。
解放タイミングはそれをどこで定義したかによる。
0408デフォルトの名無しさん
2012/11/13(火) 20:49:55.63では、
Set o = New Class1
Set o = New Class2
の場合は?
0409デフォルトの名無しさん
2012/11/13(火) 20:52:05.900410デフォルトの名無しさん
2012/11/13(火) 20:52:41.20Set o = New Class2 の時点でClass1は解放される。
0412デフォルトの名無しさん
2012/11/13(火) 20:56:20.04違う。解放タイミングはシステムの都合で一方的に決められる。
例えばあるサブルーチンで100のオブジェクトを個々の変数にSETした場合
スコープを抜ける時に100のTerminateイベントが一斉に発生する。
このオーバーヘッドはバカにならない。
しかし、Nothingを代入して参照カウントが0になったとしても
そのオブジェクトがメモリから解放されるとは限らない。
そしてその心配を君がする必要はない。
それがVB6プログラミングさ。
0413デフォルトの名無しさん
2012/11/13(火) 21:01:04.99実際にメモリがシステムによって「解放」されるのとでは
時間的に非同期という事なんだね。
0414デフォルトの名無しさん
2012/11/13(火) 21:01:48.79質問ばかりで申し訳ないが、もうちょっと付き合って
Set o = New Form1
Set o = Nothing
Set o = New Form2
この場合は?
0415デフォルトの名無しさん
2012/11/13(火) 21:02:52.92その通り。
だから、せっかくNothingを代入して解放したつもりでもされてないのなら意味が無い。
それならスコープを出たら勝手に解放される事になってるのだから
そもそもNothingを代入する意味はないと考える人たちが多いのさ。
0416デフォルトの名無しさん
2012/11/13(火) 21:03:59.53へぇーそうなのか。でもNothingを代入する人たちがいるのはなぜなの?
0417デフォルトの名無しさん
2012/11/13(火) 21:06:34.23うむ、それはだね。Nothingを代入する事にはもう一つ意味があって
Nothingを代入した時点でTerminateイベントが発生するという特徴があるんだよ。
どうせ空のイベントだからってバカにするかもしれないけど内部的にはメッセージが発生し
他の処理の妨げになることがあるので、できるだけ早めに出させて後でまとまって発生しないように
配慮しているのさ。
0418デフォルトの名無しさん
2012/11/13(火) 21:07:47.79ふーん。では例えばこのような場合、解放とTerminateイベントの発生はどうなるの?
Set o = New Form1
Set o = Nothing
Set o = New Form2
0419デフォルトの名無しさん
2012/11/13(火) 21:10:54.93Set o = Nothing の時点でForm1のTerminateイベントが発生する。
ここでプログラミング上はオブジェクトが解放されるが実際にシステムはメモリーを開放していないかも知れない。
Set o = New Form2 の時点でForm2のInitializeイベントが発生する。
Form2 の開放タイミングとTerminateイベントの発生はこれがどこで定義されているかに依る。
0420デフォルトの名無しさん
2012/11/13(火) 21:11:58.790421デフォルトの名無しさん
2012/11/13(火) 21:14:40.90結局スコープ終端でしかNothingできないコードになっちまう。
0422デフォルトの名無しさん
2012/11/13(火) 21:32:49.05どうせ具体例はないんだろ?
0423デフォルトの名無しさん
2012/11/13(火) 21:49:51.50> スコープを抜ける時に100のTerminateイベントが一斉に発生する。
> このオーバーヘッドはバカにならない。
0.01秒もかからずに終わったけど?
0424デフォルトの名無しさん
2012/11/13(火) 21:51:17.46> 408 名前:デフォルトの名無しさん[sage] 投稿日:2012/11/13(火) 20:49:55.63
> >>407
> では、
>
> Set o = New Class1
> Set o = New Class2
>
> の場合は?
>
>
>
> 410 名前:デフォルトの名無しさん[sage] 投稿日:2012/11/13(火) 20:52:41.20
> >>408
> Set o = New Class2 の時点でClass1は解放される。
あれ? おかしくない? Nothingしてないのに
なんで解放されるの?
0425デフォルトの名無しさん
2012/11/13(火) 21:58:11.14言ってこんなコードを書いたらちゃんとfreeしろって怒られた。
どういうこと?
int foo(void)
{
char *buf = NULL;
buf = (char *)malloc( 100 );
略
/* free( buf ); */
return 0;
}
http://www2s.biglobe.ne.jp/~hig/q_a/Programing_QA03.html
> 2. malloc() した後 free() せずにプログラムを終了するのはまずいのか?
> 問題ない。
矛盾してると思うけど、先輩が間違ってるの?
0426デフォルトの名無しさん
2012/11/13(火) 22:00:12.95先輩は処理系を考えて言ってる。短絡的な後輩はダメだね。
0427デフォルトの名無しさん
2012/11/13(火) 22:00:53.42そこで参照ポインタが0になるんだよ。
0428デフォルトの名無しさん
2012/11/13(火) 22:13:16.81VBと挙動が全く違う。関係ない話。
スレ違いだろ。
専用スレ立ててやったからそっちでやれやw
main以外★mallocの後にfree不要と言うバカいるの?
http://toro.2ch.net/test/read.cgi/tech/1352812333/
0429デフォルトの名無しさん
2012/11/13(火) 22:13:55.86Nothing = 参照ポインタを0にする命令でしょ?
0430デフォルトの名無しさん
2012/11/13(火) 22:14:35.20Nothing = 参照ポインタを一つ減らす命令でしょ?
0431デフォルトの名無しさん
2012/11/13(火) 22:17:18.59> Set o = Nothing の時点でForm1のTerminateイベントが発生する。
ぶっぶー はずれwwww
なぜならForm1のInitializeには
Load MeとかMe.Caption = "タイトル”
とか書いてありましたーw
Set o = NothingしてもTerminateイベントは起こりません。
ざんねーんw
0432デフォルトの名無しさん
2012/11/13(火) 22:22:59.43>ぶっぶー
ガキか
0433デフォルトの名無しさん
2012/11/13(火) 22:23:36.640434デフォルトの名無しさん
2012/11/13(火) 22:24:36.13前提条件を後出しするのは脳の発達に障害があるから
人格形成上の障害も顕著にみられる
親のしつけの問題であることが多い
以上
0435デフォルトの名無しさん
2012/11/13(火) 22:24:48.26はい、ガキですが?
そのガキに反論できないあんたは何?
0436デフォルトの名無しさん
2012/11/13(火) 22:25:26.910437デフォルトの名無しさん
2012/11/13(火) 22:26:09.71前提条件? Form1に何も書いてないなんて
一言も書いてないが?
悔しかったらなぜこの場合はTerminateイベントが
発生しなかったのか、その説明でもしたら?
0438デフォルトの名無しさん
2012/11/13(火) 22:30:09.810439デフォルトの名無しさん
2012/11/13(火) 22:32:12.63関数fooが終了しても、プログラムは終了しない
よって、プログラムが動作し続ける限り、関数fooが呼び出されるたびにメモリーが消費され続ける
0440桃白白
2012/11/13(火) 22:34:54.47俺はさっきじゃんけんという名の近接戦闘において握りこぶしを突き出して
見せたがそれがグーだとは言ってない、俺の頭はパーだみたいなw
0441デフォルトの名無しさん
2012/11/13(火) 22:36:16.64ロード状態になるからだろう?
上のほうで丁寧に説明されていたと思うが?
0443デフォルトの名無しさん
2012/11/13(火) 22:45:09.410444デフォルトの名無しさん
2012/11/13(火) 22:46:46.990445デフォルトの名無しさん
2012/11/13(火) 22:56:34.79お前何がしたいの?
Perlについての質問箱 56箱目
http://toro.2ch.net/test/read.cgi/tech/1348141100/
>
> 746 名前:デフォルトの名無しさん[sage] 投稿日:2012/11/13(火) 09:53:31.25
> >>737
> thx!
>
> 無意味なレスでも、これだけ反応してくれると不思議と嬉しい。
0446デフォルトの名無しさん
2012/11/13(火) 22:57:20.02そいつと違うぞ マジで
0447デフォルトの名無しさん
2012/11/13(火) 23:01:52.79同レベルってだけ。
どっちでもいい。
0448デフォルトの名無しさん
2012/11/13(火) 23:10:45.630449デフォルトの名無しさん
2012/11/14(水) 03:07:23.08Set o=New Form1 したときのoの指すインスタンスって、既定のインスタンスと同一か?
0450デフォルトの名無しさん
2012/11/14(水) 08:09:58.54Newしてるんだから違うものに決まってるさ
0451デフォルトの名無しさん
2012/11/14(水) 12:56:37.48> 例えばあるサブルーチンで100のオブジェクトを個々の変数にSETした場合
> スコープを抜ける時に100のTerminateイベントが一斉に発生する。
一斉には発生しないよね。
順繰りに発生するだけ。
> このオーバーヘッドはバカにならない。
For loopなりで回して自前でNothingを代入する処理時間は問題にしないの?
0452デフォルトの名無しさん
2012/11/14(水) 13:10:05.59.NETのどこかのバージョンで試したときに、初回のインスタンス生成が既定のインスタンス戻した事があったんだが
>>451
ユーザに100を待たせるより、1を100回待たせる方ががユーザの感覚として問題になりにくいって話だろ
0453デフォルトの名無しさん
2012/11/14(水) 13:30:14.86> ユーザに100を待たせるより、1を100回待たせる方ががユーザの感覚として問題になりにくいって話だろ
え、そんな話なの?
ということは、
For i = 0 to Ubound(objs)
Set objs(i) = Nothing
DoEvents
Next
とやれということなの?
一つの配列じゃなければ、set obj = nothingとdoeventsをずらずら書くの?
そんな奴見たこと無いわ。
0454デフォルトの名無しさん
2012/11/14(水) 13:40:11.73それをまとめて破棄しなければならないのだとしたら、それはNothingを
代入する/しないの問題じゃなくて別の問題じゃないの。
0455デフォルトの名無しさん
2012/11/14(水) 13:43:05.480456デフォルトの名無しさん
2012/11/14(水) 13:45:40.03「プロシージャの切り方」というのが何なのかわからないけど、現実世界のリソースを解放しようとしたとき
などは時間がかかったりする。
0457デフォルトの名無しさん
2012/11/14(水) 13:47:52.13物理デバイスに対するクローズ処理とかだからね。
0458デフォルトの名無しさん
2012/11/14(水) 13:50:02.450459デフォルトの名無しさん
2012/11/14(水) 13:52:10.59> どうせ空のイベントだからってバカにするかもしれないけど内部的にはメッセージが発生し
> 他の処理の妨げになることがあるので、できるだけ早めに出させて後でまとまって発生しないように
> 配慮しているのさ。
この、「後でまとまって発生する」のが悪だと思ってる人は、なぜそう思うんだろうか?
0460デフォルトの名無しさん
2012/11/14(水) 13:53:21.76こまめに自分で明示的に呼び出したりしてるんだろうか。
0461デフォルトの名無しさん
2012/11/14(水) 15:14:41.10> ' 不要になった時点で参照を解放する (Terminate イベントを早めに起こす)
とか、もうアホかと。
FileSystemObjectなんか、グローバルに
Dim FSO as New FileSystemObject
と書いときゃいんだよ。
0462デフォルトの名無しさん
2012/11/14(水) 15:20:25.31Nothingが参照カウンタを操作するわけでも、Nothingがメモリを開放するわけでもない
オブジェクト型の変数に、オブジェクトが存在しない事を示すキーワードがNothing
0463デフォルトの名無しさん
2012/11/14(水) 15:32:39.00糞コードとは思わんがな。ここでしか威勢を張れない役立たずのチキン野郎のお前と比べたら神だよ彼は。
0464デフォルトの名無しさん
2012/11/14(水) 15:34:25.00>Nothingが参照カウンタを操作
当たり前だろ?代入値が参照カウンタをどうやって操作すんだよ?
考えてから書けドアホ。
0465デフォルトの名無しさん
2012/11/14(水) 15:35:39.59>Nothingがメモリを開放
当たり前だろ?代入値がどうやってメモリを開放すんだよ?
考えてから書けドアホ。
0466デフォルトの名無しさん
2012/11/14(水) 15:36:40.91>オブジェクト型の変数に、オブジェクトが存在しない事を示すキーワードがNothing
Nothingは「キーワード」じゃねーよ。アホかぁ?コイツwwww
0467デフォルトの名無しさん
2012/11/14(水) 15:39:25.31,.,.,.,.,.,.,.,.,__
,,;f::::::::::::::::::::::ヽ
i::::::::/'" ̄ ̄ヾi
|:::::::| ,,,,,_ ,,,,,,|
|r-==( 。);( 。)
( ヽ :::__)..:: }
,____/ヽ ー== ; ほほう それでそれで?
r'"ヽ t、 \___ !
/ 、、i ヽ__,,/
/ ヽノ j , j |ヽ
|⌒`'、__ / / /r |
{  ̄''ー-、,,_,ヘ^ |
ゝ-,,,_____)--、j
/ \__ /
| "'ー‐‐---''
オブジェクト型の変数に、オブジェクトが存在しない事を示すキーワードがNothing
,.,.,.,.,.,.,.,.,__
,,;f::::::::::::::::::::::ヽ
i::/' ̄ ̄ ̄ヾi::l
|::| / \,|::|
|r-( ・ );( ・ )-|
( ヽ :::(__)..:: } <・・・小学生レベルの嘘だな
,____/ヽ -==- /
r'"ヽ t、 ヽ___/
/ 、、i ヽ__,,/
/ ヽノ j , j |ヽ
|⌒`'、__ / / /r |
{  ̄''ー-、,,_,ヘ^ |
ゝ-,,,_____)--、j
/ \__ /
0468デフォルトの名無しさん
2012/11/14(水) 15:42:23.310469デフォルトの名無しさん
2012/11/14(水) 15:43:30.42>>322,>>330,>>335,>>429-430
とりあえず、この辺の可愛そうな人達に教えてあげて
0470デフォルトの名無しさん
2012/11/14(水) 15:50:24.790471デフォルトの名無しさん
2012/11/14(水) 15:55:22.32「存在しない事」の表現の一つだから、呼び方なんてどうでもようがす
0472デフォルトの名無しさん
2012/11/14(水) 15:59:25.960473デフォルトの名無しさん
2012/11/14(水) 16:18:13.28Emptyは代入できるし...
0474デフォルトの名無しさん
2012/11/14(水) 16:22:48.33やってみてよ先生
0475デフォルトの名無しさん
2012/11/14(水) 16:27:14.73Dim a As Variant
a = "Hello!"
a = Empty
MsgBox TypeName(a)
0476293
2012/11/14(水) 16:27:31.02s = "Empty"
0477デフォルトの名無しさん
2012/11/14(水) 16:29:48.28Option Ecplicit を宣言するとエラーになる。
アマチュアプログラマー乙。
0478デフォルトの名無しさん
2012/11/14(水) 16:35:45.15「Option Explicit」だボケ
0479デフォルトの名無しさん
2012/11/14(水) 16:39:08.58なるほど、正しい事を言ってる。
罠か?w
0480デフォルトの名無しさん
2012/11/14(水) 17:51:00.09Option Explicitを宣言してもエラーにならないけど?
レス乞食?
0481デフォルトの名無しさん
2012/11/14(水) 17:52:06.670482デフォルトの名無しさん
2012/11/14(水) 18:06:14.69「ここでしか威勢を張れない役立たずのチキン野郎のお前と比べたら神」な人が書いたから、糞コードではないと判断してないか?
0483デフォルトの名無しさん
2012/11/14(水) 18:10:27.74とか書くと、「お前もそうだ」とレスする頭悪い奴が釣れそうだが。
0484デフォルトの名無しさん
2012/11/14(水) 19:12:01.050485デフォルトの名無しさん
2012/11/14(水) 19:54:50.720486デフォルトの名無しさん
2012/11/14(水) 19:55:34.84このスレだけオワコン言語なのだが
0487デフォルトの名無しさん
2012/11/14(水) 20:28:13.770488デフォルトの名無しさん
2012/11/14(水) 21:59:37.48Option Ecplicit を宣言するとエラーになるよ。
0489デフォルトの名無しさん
2012/11/14(水) 22:20:37.39>>477は何を目的に Option Ecplicit を宣言したのでしょうか?
0490デフォルトの名無しさん
2012/11/14(水) 22:29:47.85エラーメッセージとエラー番号は何よ
0491デフォルトの名無しさん
2012/11/15(木) 01:29:27.290492デフォルトの名無しさん
2012/11/15(木) 11:08:21.73「アマチュアプログラマー乙」と煽ったつもりだったのが、自分の方がド素人だったことに気づいて
話題をそらそうとしてるのだろうか。
まあ、何にせようざいから消えて欲しいんだけどな。
0493デフォルトの名無しさん
2012/11/15(木) 13:11:16.60しらんが「アマチュア」という言葉が心にグサッと刺さった事はわかった。
0494デフォルトの名無しさん
2012/11/15(木) 13:42:41.62アマチュアプログラマー乙
0495デフォルトの名無しさん
2012/11/15(木) 13:44:59.380496デフォルトの名無しさん
2012/11/15(木) 14:54:09.340497デフォルトの名無しさん
2012/11/15(木) 15:10:08.650498デフォルトの名無しさん
2012/11/15(木) 18:14:39.20やっと飽きたか。
0499デフォルトの名無しさん
2012/11/15(木) 18:50:11.030500デフォルトの名無しさん
2012/11/15(木) 22:05:37.54家で宿題が出来ないだろう
0501デフォルトの名無しさん
2012/11/15(木) 22:23:08.510502デフォルトの名無しさん
2012/11/15(木) 22:39:36.810503デフォルトの名無しさん
2012/11/15(木) 23:35:32.090504デフォルトの名無しさん
2012/11/16(金) 01:30:24.870505デフォルトの名無しさん
2012/11/16(金) 01:35:50.21なお、MSDN サブスクリプションでは、Visual Studio 6.0 を含む新旧のソフトウェアを引き続き提供しますので、旧バージョンである Visual Studio 6.0 が必要な場合は、Visual Studio .NET MSDN Deluxe Edition または MSDN サブスクリプションをお求めください。
0506デフォルトの名無しさん
2012/11/16(金) 08:15:24.171 管理者権限で起動したランチャから
非管理者権限でプロセスを起動する方法
2 非管理者権限のエクスプローラ等からファイルをドラッグして
管理者権限のランチャでOleDragDropを発生させる方法
3 64ビットOSでSystem32内に存在するはずの
ファイルが見つからないというエラーの回避方法
を教えていただけませんか?
0507デフォルトの名無しさん
2012/11/16(金) 09:00:46.79エクスプローラのマニフェストでUIアクセスを要求する必要があると思う。
UIアクセス=trueは署名付きじゃないとダメだったと思う。
以上、自分ならランチャを2プロセス構成にしてUIを非管理者プロセスで起動します。
でもMSマウスは管理者プロセスだとスクロール出来なくなるんです。
それを盾に開き直っても良いと思います。
0508デフォルトの名無しさん
2012/11/16(金) 09:19:35.14http://rarara.cafe.coocan.jp/cgi-bin/lng/vc/vclng.cgi?print+201105/11050013.txt
0509デフォルトの名無しさん
2012/11/16(金) 09:23:46.47http://fow.cocolog-nifty.com/blog/2009/11/1-10db.html
管理者権限への昇格 (2): flow of water ブログ
http://fow.cocolog-nifty.com/blog/2009/11/2-b3c5.html
管理者権限への昇格 (3): flow of water ブログ
http://fow.cocolog-nifty.com/blog/2009/11/3-6adf.html
UAC有効時のプロセス起動時の注意事項メモ: ブログ始めてみました!
http://k63.seesaa.net/article/56034778.html
0510デフォルトの名無しさん
2012/11/16(金) 09:50:04.48VB6で「CreateProcessWithTokenW」を使って
管理者トークンで走行するプロセスから標準モードで別のプロセスを起動したが
どうやっても管理者トークンで走行してしまう。よってドラッグ&ドロップもできない。
これはVB6では無理みたいね。残念。
0511506
2012/11/16(金) 12:15:58.45ドラッグは無理なのですね。
おっしゃるとおり、2プロセス構成にしてみようと思います。
>>508、509、510
紹介していただいた方法で、管理者プロセス起動プロセスを
実行しようと思います。
ありがとうございました。
0512デフォルトの名無しさん
2012/11/16(金) 12:58:40.670513デフォルトの名無しさん
2012/11/16(金) 13:11:22.950514デフォルトの名無しさん
2012/11/16(金) 15:10:08.690515506
2012/11/16(金) 17:10:39.53ActiveXExeを管理者権限で起動する方法を教えていただけませんか?
EXEファイルのプロパティで管理者として実行するようにしたら
インスタンスが作れなくなってしまいました。
0516デフォルトの名無しさん
2012/11/16(金) 17:32:18.62馬鹿かお前?それとも天然か?
プロセスは管理者トークンをもつプロセスから起動されれば何をしなくても自動的に
管理者に昇格するが、管理者トークンをもったプロセスがユーザーレベルに
降格するためには恐ろしいほどのトリッキーな操作が必要って事だよ。
それに比べたら起動されたEXE時の走行レベルが管理者かユーザーかなんて議論はゴミだっつーの。
0517デフォルトの名無しさん
2012/11/16(金) 20:46:30.83http://sysneitf.ifdef.jp/os_vista_uacprocess.html
0518デフォルトの名無しさん
2012/11/16(金) 21:01:29.58その問題は製品版では治ってるよ。
0519デフォルトの名無しさん
2012/11/16(金) 22:42:16.89起動は出来てるがメッセージが遮断されるから無意味って事では?何がしたいの?
(UAC関係無かったら無視してね)
そもそもUACの警告を無視するようにユーザーに促すのは良くない。
たまに「無視して下さい」ってマニュアルを見かけるけど、何かあったらどうするの?
せめてオレンジ色のダイアログだけは回避すべき。
0520デフォルトの名無しさん
2012/11/17(土) 11:40:31.21VB6でDephiみたく横に細長いイメージからイメージを抽出してアイコンのPictureにする方法ないの?
0521デフォルトの名無しさん
2012/11/17(土) 12:08:21.53ボタンに表示されるアイコンは24x24とかってする方法はさすがにありませんよね。
考えあぐねた末にでた結論が無理って事だったので、もし方法があったらショックで自殺してしまうかも。
0522デフォルトの名無しさん
2012/11/17(土) 12:13:26.350523デフォルトの名無しさん
2012/11/17(土) 12:30:09.610524デフォルトの名無しさん
2012/11/17(土) 14:22:55.290525デフォルトの名無しさん
2012/11/17(土) 15:12:22.700526デフォルトの名無しさん
2012/11/17(土) 15:38:32.910527デフォルトの名無しさん
2012/11/17(土) 16:17:11.450528デフォルトの名無しさん
2012/11/17(土) 19:52:02.75VB6の場合、EXEに複数のアイコンを組み込めないから無理って話じゃないのか?
0529デフォルトの名無しさん
2012/11/17(土) 19:55:03.73先週の週末の話題もあまりの低レベルさに大いに呆れたけど、今週はプログラミング以前に
日本語が不自由なんだから話にもならんな。
0530デフォルトの名無しさん
2012/11/17(土) 20:00:19.02理解できてないのはお前だけだったりしてなw
0531デフォルトの名無しさん
2012/11/17(土) 20:06:08.51VB6では無理なの?
0532デフォルトの名無しさん
2012/11/17(土) 20:12:15.33ついでに言えば、ショートカットのアイコンは別にリンクしてるバイナリの
リソースじゃなくていいい。
っていうかボタンって何なんだだから。
0533デフォルトの名無しさん
2012/11/17(土) 20:27:58.10アイコンファイルのフォーマットであり可能
つかVB6付属のイメージエディタでアイコンファイル作れるし
0534デフォルトの名無しさん
2012/11/17(土) 21:08:11.30アイコン自体が複数の解像度を持っていたところで、フォームのアイコンやグラフィックモードに指定したボタンへ
適用するアイコンサイズを任意に指定できないことを指摘しているのではないのか?
俺の読解力が有りすぎるのか、それともよく理解しようともせずに煽ってる人たちが多いのか知らんが。
0535デフォルトの名無しさん
2012/11/17(土) 21:18:22.900536デフォルトの名無しさん
2012/11/17(土) 21:20:21.34なんかどうでもよくてw
0537デフォルトの名無しさん
2012/11/17(土) 21:31:44.26例えばデスクトップには1番の48ドットアイコンが使用され、大きいアイコンで綺麗に表示して
ボタンのアイコンには24ドットアイコンで小さく表示して、フォームの左端のアイコンは16ドットとか
そういう事なんじゃねーの?俺でも分かったぜw
0538デフォルトの名無しさん
2012/11/17(土) 21:40:03.28スタートメニュー用のアイコンなりデスクトップ上のアイコンなり2種類以上表示されるよ
0539デフォルトの名無しさん
2012/11/18(日) 00:14:24.40自殺教唆
0540デフォルトの名無しさん
2012/11/18(日) 01:30:42.90ボタンに表示させるアイコンのサイズは変えられないだろ?
フォームのタイトルバー上のアイコンも変えられないだろ?
あほww
0541デフォルトの名無しさん
2012/11/18(日) 01:47:55.55Delphiで作ればいいじゃん
0542デフォルトの名無しさん
2012/11/18(日) 03:32:28.070543デフォルトの名無しさん
2012/11/18(日) 04:35:52.89Windows版とは違っていたはず。
0544デフォルトの名無しさん
2012/11/18(日) 04:48:46.990545デフォルトの名無しさん
2012/11/18(日) 04:54:24.72これはコンパイル時の話?
0546デフォルトの名無しさん
2012/11/18(日) 09:38:26.04MacやLinuxで動くわけ無いだろw
(エミュレータは話が別)
VBAはWindowsでもMacでも動くが
そもそもスクリプトだからコンパイルはしない。
0547デフォルトの名無しさん
2012/11/18(日) 13:45:51.61えっ
0548デフォルトの名無しさん
2012/11/18(日) 18:56:53.43これってWindows95かWindows98かとかのWindowsのバージョンの違いとかを指してるんじゃないの?
0549デフォルトの名無しさん
2012/11/18(日) 19:07:24.20わざわざ別に用意してるのは、Windows以外のことを考慮してだよ。
0550デフォルトの名無しさん
2012/11/18(日) 19:20:35.90メニューにPコードにコンパイルする項目あるにも関わらず
単芝はダメな子って噂は本当だったんだ
0551デフォルトの名無しさん
2012/11/18(日) 21:02:35.27Pコードはコンパイルには入らねーよ。
0552デフォルトの名無しさん
2012/11/18(日) 21:10:24.51さすがに厳しい状況に自分を置いたけど大丈夫?
0553デフォルトの名無しさん
2012/11/18(日) 21:36:27.92Javaのバイトコードは、バイトコードからさらに
ネイティブコードにコンパイルしてから実行する。
両者は違うもの。
0554デフォルトの名無しさん
2012/11/18(日) 21:46:21.340555デフォルトの名無しさん
2012/11/18(日) 22:08:39.56> VBのコンパイルオプションにP-Codeコンパイルとネイティブコードコンパイル
> の2つがありますが、
P-Codeコンパイルだろ?
ネイティブコンパイルじゃないって
明確に書いてあるよ。
0556デフォルトの名無しさん
2012/11/18(日) 22:23:01.10それは両者がメモリにロードされた後のインタプリタの挙動の違いだろ何言ってるんだ?
javac.exeがやってることとVB/VBAがPコードを生成することはどう違うかって話。
話題すり替える能力はさすがだな。
>>555
明確にコンパイルって書いてるだろ?
ところが>>546は頑なにコンパイルはないって言ってるんだ。
0557デフォルトの名無しさん
2012/11/18(日) 22:23:55.84あれはコンパイルではない。
と言ってる。
0558デフォルトの名無しさん
2012/11/18(日) 22:27:30.010559デフォルトの名無しさん
2012/11/18(日) 22:35:08.890560デフォルトの名無しさん
2012/11/18(日) 22:36:10.650561デフォルトの名無しさん
2012/11/18(日) 22:38:33.03毎度毎度このスレの話題のレベルは何か泣けてくるなしかし
0562デフォルトの名無しさん
2012/11/18(日) 22:41:47.23辞書サイトは古い辞書だから無料で公開しているわけであってだな
最新の辞書は有料でなければ引けないのだよ
0563デフォルトの名無しさん
2012/11/19(月) 00:17:15.49Javaコードとか.NETコードがネイティブで動くボードが出来た(実際存在する)時点でコンパイルされていたということに事実が書き換わることも明らかとなった。
Pコードも同様にネイティブで実行されるボードが開発されればコンパイルされているということに事実が書き換わるらしい。複雑だな。
0564デフォルトの名無しさん
2012/11/19(月) 01:29:14.960565デフォルトの名無しさん
2012/11/19(月) 01:52:16.980566デフォルトの名無しさん
2012/11/19(月) 02:21:40.470567デフォルトの名無しさん
2012/11/19(月) 02:24:32.80ttp://www1.koalanet.ne.jp/akiya/vbindeep/
これか
0568デフォルトの名無しさん
2012/11/19(月) 02:26:52.99ttp://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi
0569デフォルトの名無しさん
2012/11/19(月) 02:29:07.60ttp://www.brainbell.com/tutors/Visual_Basic/Generating_Code.htm
C2.exeの使い方はこれかな
0570デフォルトの名無しさん
2012/11/19(月) 02:44:28.670571デフォルトの名無しさん
2012/11/19(月) 08:48:09.87ボタンに表示されるアイコンは24x24とかってする方法はさすがにありませんよね。
考えあぐねた末にでた結論が無理って事だったので、もし方法があったらショックで自殺してしまうかも。
0572506
2012/11/19(月) 08:55:36.07>起動は出来てるが〜
ActiveXExeは起動すらしていないようです。
>そもそもUACの警告を
ActiveXExe自体の昇級ダイアログをスキップするつもりはありません。
>何かあったらどうするの?
このようなプロセス間通信を認証と暗号化なしにしたら
バックドアになるのは分かっています。
一般公開した時点で、ウィルスが作成できてしまいます。
個人で使用し、ウィルスまがいのプロテクトがかかった近年のゲームの
UACをスルーしたいだけです。
AcriveXExeにするのが、最も簡単な2プロセス構成と思っていましたが
起動できなそうなので、普通の2プロセスにしようかと思います。
0573デフォルトの名無しさん
2012/11/22(木) 18:47:33.54,、'` ( ´∀`) ,、'`
'` ( ⊃ ⊂) '`
0574デフォルトの名無しさん
2012/11/26(月) 12:21:16.48そんな話をあちこちで聞いてるんだけど…
ランタイム系で変更かかったとか、ランタイムが読まれなくなってるとか?ある?
0575デフォルトの名無しさん
2012/11/26(月) 13:12:33.950576デフォルトの名無しさん
2012/11/26(月) 16:39:44.36うちでもそれが大問題に発展している。
VB6で作ったアプリ限定で、OLEAUTOで落ちているので
ランタイムとの不整合性が問題なのは間違いない。
MSもとうとうVB6を排除に出たのかもね。
0577デフォルトの名無しさん
2012/11/26(月) 16:46:10.910578デフォルトの名無しさん
2012/11/26(月) 16:48:23.20マジですか?
なんで排除するのでしょうかね
0579デフォルトの名無しさん
2012/11/26(月) 16:49:13.740580デフォルトの名無しさん
2012/11/26(月) 16:52:50.39.netに移行しろって事だろ?
>>579
IT部門が動作検証後に定期的にWindows Updateを一斉に行うが
5日ほど前に行われたアップデートからおかしくなったと騒ぎが勃発。
よくソフトの動作を検証しなかったIT部門の責任だが、
金融系なので一大事だよ。
0581デフォルトの名無しさん
2012/11/26(月) 17:02:28.48> 金融系なので一大事だよ。
自業自得
0582デフォルトの名無しさん
2012/11/26(月) 17:07:54.55http://msdn.microsoft.com/en-us/magazine/jj133813.aspx
<pre>
As Don’t Get Me Started columnist David Platt recounts in this month’s issue of MSDN Magazine,
Microsoft has formally extended “It Just Works” support for its Visual Basic 6 programming language
through the full lifetime of the Windows Vista, Windows Server 2008, Windows 7 and Windows 8 OSes.
That means the core Visual Basic 6 runtime in each OS will enjoy five years of mainstream support,
followed by another five years of extended support, from the point that a given OS shipped.
</pre>
0583デフォルトの名無しさん
2012/11/26(月) 17:33:39.94それは表向きで実は裏でVB6を抹殺する計画が進んでいる。
VB6を恒久的にサポートするという方針はWindows 8の開発責任者で
「次期CEO」とも言われたスティーブン・シノフスキー(Steven Sinofsky)氏。
ところが彼がマイクロソフトから退社することになってしまった。
公的には単なる退社として扱われていたが、真相はそんなに円満ではなく
事実上「クビ」だったそうだ。
彼がクビになった後、VB6がどのように扱われるかはだれでも想像がつく。
その第一弾が最近のWUであったという噂が飛んでいるが真偽は不明だ。
0584デフォルトの名無しさん
2012/11/26(月) 17:45:42.180585デフォルトの名無しさん
2012/11/26(月) 17:50:06.74ソース出せ
0586デフォルトの名無しさん
2012/11/26(月) 17:56:42.070587デフォルトの名無しさん
2012/11/26(月) 18:37:17.22なんで抹殺する必要があるんだろう
VB6をサポートすることってそんなに大変なんですか?
0588デフォルトの名無しさん
2012/11/26(月) 18:39:42.110589デフォルトの名無しさん
2012/11/26(月) 19:34:04.61VB6を擁護しまくっていたスティーブン・シノフスキーの更迭と同時にVB6も更迭かよ。
まあ確かにかなりの権力がある人がVB6をマンセーしていなければ
いまだにVB6がサポートされるなんて事があり得ないというのは薄々気づいていたが
もう終わりかVB6。長い間ありがとう。
0590デフォルトの名無しさん
2012/11/26(月) 19:35:38.45もしVB6が人間だったら大往生と言われるだろうなww
0591デフォルトの名無しさん
2012/11/26(月) 20:29:31.68分離アプリケーションとSide-by-Sideアセンブリ - Wikipedia
http://ja.wikipedia.org/wiki/%E5%88%86%E9%9B%A2%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A8Side-by-Side%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%AA
0592デフォルトの名無しさん
2012/11/26(月) 21:07:47.150593デフォルトの名無しさん
2012/11/26(月) 21:09:42.82さようならVB6!今までどうもありがとう!
0594デフォルトの名無しさん
2012/11/26(月) 21:23:25.320595デフォルトの名無しさん
2012/11/26(月) 23:30:24.52逆だろ?ボケ男。
0596デフォルトの名無しさん
2012/11/26(月) 23:37:11.180597デフォルトの名無しさん
2012/11/26(月) 23:41:49.030598デフォルトの名無しさん
2012/11/27(火) 00:31:51.360599デフォルトの名無しさん
2012/11/27(火) 02:05:09.120600デフォルトの名無しさん
2012/11/27(火) 09:26:14.88やってみてから言えやこのドアホが
0601デフォルトの名無しさん
2012/11/27(火) 09:36:21.96会社なら、マイクソソフトに高い顧問料払ってるんじゃないの?
直接問いただせばいいんじゃねーの
0602デフォルトの名無しさん
2012/11/27(火) 10:28:17.910603デフォルトの名無しさん
2012/11/27(火) 10:50:20.63そんなことねーよ。
MSDNのサブスクリプションで最高位クラスの待遇受けられるけど
実際にインシデントを使って問い合わせると、KBから問い合わせ内容を参照して
ただ引用して答えるだけで、何の意味もない事がわかる。
MSに金払えば問題が解決するとか、本気で信じている奴がいることに驚きを隠せない。
0604デフォルトの名無しさん
2012/11/27(火) 11:33:04.48> 実際にインシデントを使って問い合わせると、KBから問い合わせ内容を参照して
> ただ引用して答えるだけで、何の意味もない事がわかる。
それって、お前が知らないだけで、既知の問題だからだったからでしょ。
0605デフォルトの名無しさん
2012/11/27(火) 11:51:44.570606デフォルトの名無しさん
2012/11/27(火) 11:56:12.23既知じゃない問題ならわかりませんで終わるんだがな。
>>605
擁護しなき主張もできないのかよ。情けない奴。
0607デフォルトの名無しさん
2012/11/27(火) 12:04:45.260608デフォルトの名無しさん
2012/11/27(火) 12:43:59.840609デフォルトの名無しさん
2012/11/27(火) 12:58:01.62狭すぎだろw
0610デフォルトの名無しさん
2012/11/27(火) 14:13:53.520611デフォルトの名無しさん
2012/11/27(火) 14:26:39.35全く解決にはならないというのはどちらも間違い。
解決になる場合もあればならない場合もある。
自力で解決可能な問題でも、相手がそれを調査してくれるという、時間と金を交換するケースもある。
0612デフォルトの名無しさん
2012/11/27(火) 17:35:24.28http://www.microsoft.com/ja-jp/services/professional.aspx
> サポート対応範囲 Q&A
> 対応範囲やよくあるお問い合わせについて、下記カテゴリにて Q&A 形式でご説明いたします。
>
> ・トラブル原因の調査
> ・複数製品にまたがるトラブルの切り分け
> ・修正プログラム (Hotfix) の作成リクエスト
> ・デバッグ支援、コード レビュー、サンプルコード提供
> ・キャパシティ プランニング
> ・パフォーマンス/チューニング
> ・運用環境診断や製品アップグレード/システム移行の支援
> ・仕様確認
0613デフォルトの名無しさん
2012/11/27(火) 17:38:09.10> Q. 要望の動作を実現するためにどうすればいいか、プログラムやアドインの開発方法、カスタマイズ方法を
> 教えて欲しい。
>
> A. 弊社公開情報 (KB、TechNet、MSDN などの弊社 Web サイトを含む) のご紹介までを範囲として対応します。
> お客様の開発要件にあわせたサンプル コードの提示については、プレミア サポートもしくはアドバイザリー
> サービスにて承ります。
もちろん俺は使ったことないが。
0614デフォルトの名無しさん
2012/11/27(火) 17:44:10.80その他サポート300時間みたいな料金体系で、860万〜2,955万だった(俺調べ)。
やっぱ、金払えばそれなりのものが得られるんじゃないの?
0615デフォルトの名無しさん
2012/11/27(火) 17:46:40.680616デフォルトの名無しさん
2012/11/27(火) 21:09:08.05某一次上場企業のF社に勤務する私がココにイル・・・。
0617デフォルトの名無しさん
2012/11/27(火) 21:14:21.61ソフトハウスに面倒を見させるだけだったと思う。そんな鼻息荒くするようなサービスではないよ。
0618デフォルトの名無しさん
2012/11/27(火) 21:24:31.67とは思うが、会社のマイクソ離れは加速するんじゃないかな。そうなっても
マイクソの自己責任だろw
0619デフォルトの名無しさん
2012/11/27(火) 21:28:16.430620デフォルトの名無しさん
2012/11/28(水) 00:33:29.790621デフォルトの名無しさん
2012/11/28(水) 06:25:07.260622デフォルトの名無しさん
2012/11/28(水) 10:53:07.920623デフォルトの名無しさん
2012/11/28(水) 11:43:00.41> そんな能書きを信じて大金を払ったものの、まともなサポートを一度も受けた事の無い
> 某一次上場企業のF社に勤務する私がココにイル・・・。
まともなサポートが必要な事態がなかっただけじゃないの?
> ・キャパシティ プランニング
> ・パフォーマンス/チューニング
とか、サービス非常停止時のリカバリサポートとか使ってみた?
0624デフォルトの名無しさん
2012/11/28(水) 14:06:14.950625デフォルトの名無しさん
2012/11/28(水) 14:09:41.10ナレッジベースの棒読みと、もう少し金払う相手には外注の窓口へご案内。
0626デフォルトの名無しさん
2012/11/28(水) 14:37:36.29まあ、サポート使いたくないなら自力で頑張ればいいよ。誰も止めないし。
0627デフォルトの名無しさん
2012/11/28(水) 16:23:07.35無償サポート窓口へまくしたてると有償サポート窓口の担当者に回してくれる。
そこに松田さんという人がいて、かなり詳しく調べてくれて事実上有償サポートを
無償で受けることができていた。最近はこの手が使えるか試していない。
0628デフォルトの名無しさん
2012/11/28(水) 17:32:13.810629デフォルトの名無しさん
2012/12/06(木) 09:48:53.19全選択させたいのですができません。
Tabキーによる移動の場合はこれで問題なく全選択させる事ができています。
どのようにしたらいいか教えてください。
Private Sub Text4_Enter(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Text4.Enter
Option2.Checked = True
Text4.SelectionStart = 0
Text4.SelectionLength = Len(Text4.Text)
End Sub
0630デフォルトの名無しさん
2012/12/06(木) 09:55:36.67あるいはVB6とVB.netの違いも分からんなら逝け。
0631デフォルトの名無しさん
2012/12/06(木) 10:04:48.640632デフォルトの名無しさん
2012/12/08(土) 14:50:23.440633デフォルトの名無しさん
2012/12/08(土) 21:01:58.62気持ちまでブルーだわ。
もう.netへ移行するしかないのか?
やだなぁ、あの重たいフレームワーク。
バージョンもいろいろあって4は下位との互換ないし。
0634デフォルトの名無しさん
2012/12/08(土) 21:06:55.660635デフォルトの名無しさん
2012/12/08(土) 22:12:36.380636デフォルトの名無しさん
2012/12/08(土) 22:20:41.66何がもう.NETへ移行するしかないのかだよアホかって
0637デフォルトの名無しさん
2012/12/08(土) 23:19:52.46未だに、COBOLだFORTRANだCだ言ってる世の中だぜ
0638デフォルトの名無しさん
2012/12/08(土) 23:52:49.830639デフォルトの名無しさん
2012/12/09(日) 00:32:44.190640デフォルトの名無しさん
2012/12/09(日) 08:24:34.740641デフォルトの名無しさん
2012/12/09(日) 09:05:33.470642デフォルトの名無しさん
2012/12/09(日) 11:46:23.56.net がヤダって言ってるのに… バカ?
0643デフォルトの名無しさん
2012/12/09(日) 13:15:52.68ってさ、一見話題と関係有りそうで、実際には話題と全く関係無いよね
0644デフォルトの名無しさん
2012/12/09(日) 13:58:03.690645デフォルトの名無しさん
2012/12/09(日) 19:58:46.550646640
2012/12/10(月) 06:09:19.30おまいが.net嫌いとか知らんがな
0647デフォルトの名無しさん
2012/12/10(月) 08:52:11.340648デフォルトの名無しさん
2012/12/10(月) 11:36:27.68> Windows 9ではVB6サポート打ち切るとの正式発表が来たね。
ソースどこ?
0649デフォルトの名無しさん
2012/12/10(月) 12:19:22.88MSDNに入ってないのか?
0650デフォルトの名無しさん
2012/12/10(月) 12:41:17.28個人では入ってない。
ということは、ソースはMSDNということだね。
0651デフォルトの名無しさん
2012/12/10(月) 12:49:39.750652デフォルトの名無しさん
2012/12/10(月) 13:05:10.37自分用のソフトで使うなら勝手だが新規で使うなよって話
0653デフォルトの名無しさん
2012/12/10(月) 13:51:14.53物理的に動かないようにする(なる)という事のようだ。
OKEAUTOが機能しないんじゃないか?
COMとかはどうなるんだろう?
0654デフォルトの名無しさん
2012/12/10(月) 13:52:43.550655デフォルトの名無しさん
2012/12/10(月) 14:42:24.45OLE/COMがダメなら、既存のアプリほぼ全滅じゃないの?
0656デフォルトの名無しさん
2012/12/10(月) 14:48:31.10しかしVB6のランタイムはサポートされないのではなく物理的に動作しない。
可能性としてはやはりoleaut32.dllの機能抑制というところだろうか。
0657デフォルトの名無しさん
2012/12/10(月) 14:50:27.84.net置き換え案件が大量にクルー
0658デフォルトの名無しさん
2012/12/10(月) 14:52:38.08Windows 8の時もVB6を動かなくするかどうかについて議論が重ねられたようで
VB6廃止派の先導を務めていた社長が先日クビになったため
VB6存続派のバルマーがWindows 9でも当然VB6をサポートするかと思いきや
先日の驚愕のアナウンスに違和感を禁じ得ない。
0659デフォルトの名無しさん
2012/12/10(月) 14:54:37.450660デフォルトの名無しさん
2012/12/10(月) 16:34:31.29それとも関係がありそうだね。
MS社内で大改革が行われようとしている…。
0661デフォルトの名無しさん
2012/12/10(月) 16:48:42.26まさか日本では出ないなんてことが無ければいいですけどね。
今後の動きに注目です。( ´・ω・)y─┛~~~oΟ◯
0662デフォルトの名無しさん
2012/12/10(月) 23:13:15.08> おまいが.net嫌いとか知らんがな
スレの流れも追えないバカ (w
>>633 見ろ。
0663640
2012/12/11(火) 06:57:11.950664デフォルトの名無しさん
2012/12/12(水) 23:45:24.980665デフォルトの名無しさん
2012/12/13(木) 12:58:10.910666デフォルトの名無しさん
2012/12/13(木) 22:26:11.77一応、WOW64は搭載されるみたいね。
0667デフォルトの名無しさん
2012/12/14(金) 10:14:08.34Eval, ExecuteStatement, Runで実行中のスクリプトを
VB側から中断させる方法はありませんか?
ScriptControl.AddObjectしたオブジェクトのメソッドを
スクリプトから呼出されている場合や、
MsgBoxで止まっている場合、VBに制御が戻るので、
そのときに、中断できるようにしたいです。
現状は、ShellExecuteとExitProcessで再起動してますが、
それでは困ることが多々。
0668デフォルトの名無しさん
2012/12/25(火) 07:05:35.02INIファイルのアクセスでWritePrivateProfileString/GetPrivateProfileStringを使うよね
右端に半角スペースがあるデータをWrite〜してもGet〜でカットされる仕様だけど
一度、右端に半角スペースがあるデータを書くと右端のスペースは消えない
全く別のデータを上書きしても、前のデータにあったスペースを覚えていて
新しいデータの右にそのスペースを追加してくれちゃう
読むときにカットされるから問題はないんだけど
0669デフォルトの名無しさん
2012/12/25(火) 09:48:18.050670デフォルトの名無しさん
2012/12/25(火) 23:39:31.50以降のデータを書き換えないで済むように小細工してるのだろう
0671デフォルトの名無しさん
2012/12/26(水) 00:50:49.240672デフォルトの名無しさん
2012/12/26(水) 00:54:35.10WritePrivateProfileString 関数
http://msdn.microsoft.com/ja-jp/library/cc429952.aspx
0673デフォルトの名無しさん
2012/12/27(木) 15:01:28.790674デフォルトの名無しさん
2012/12/27(木) 15:17:36.55動くかどうかは別問題だが、仕事として使わないな
仮想PCにXPでも入れて使えばいい
0675デフォルトの名無しさん
2012/12/27(木) 15:40:24.91Superπ 100万桁やってみたら11秒だった。速すぎw
0676デフォルトの名無しさん
2012/12/30(日) 17:48:15.13そこは7しか書いてないぞ。
0677デフォルトの名無しさん
2013/01/04(金) 12:32:14.41msdnで見つけられなかった、、、
url教えてください。
0678デフォルトの名無しさん
2013/01/14(月) 23:31:02.65○○○○.bas(155) : fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'E:\8783\vc98\p2\src\P2\reader.c', line 1994)
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information
○○○○.basの155行は
「 If Sgn(buf1$) <> 0 Then 'buf1$は有効か? 」
buf1$とは、Dim buf1$()と宣言してあって、
Ubound(buf1$)がエラーにならないように
この行で配列が初期化されているかのチェックをしてます(ちょっと裏ワザ的方法)
IDEでは問題なく通るのになんで?VB壊れたかな?
0679デフォルトの名無しさん
2013/01/14(月) 23:53:14.710680デフォルトの名無しさん
2013/01/15(火) 00:17:49.050681デフォルトの名無しさん
2013/01/15(火) 01:06:36.61動的配列で空の配列かどうか確認するには?
ttp://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200911/09110082.txt
0682デフォルトの名無しさん
2013/01/15(火) 06:25:11.05申し訳ない、ネットに出てましたか
以前、同じ事をして上手くいったので何故だろうと思って
前に作ったコードを探してみたところ、Sgn( )は諦めて
ReDimする毎に、配列の大きさを別変数に格納し、UBoundを使わないことで処置してました
0683デフォルトの名無しさん
2013/01/15(火) 12:31:08.66Dim LB As Long, UB As Long
LB = 0
LB = LBound(buf1)
UB = -1
UB = UBound(buf1)
0684デフォルトの名無しさん
2013/01/15(火) 22:29:26.510685デフォルトの名無しさん
2013/01/15(火) 23:01:03.270686デフォルトの名無しさん
2013/01/16(水) 03:56:25.80外部から貰った配列のときにどうしようもないことがあるからなぁ
まあ、Resume Nextじゃなくてラベル切って飛ばすほうが良いけど、見通しはさらに悪くなる
0687デフォルトの名無しさん
2013/01/16(水) 19:58:46.32素人メンバーが単に「落ちない」ようにするだけのResume Nextの使い方を
しはじめる、というのはあるかも。
ただしもう、VB6で新規案件など無いがな。
0688デフォルトの名無しさん
2013/01/16(水) 23:53:35.80On Error Gotoでラベルにジャンプなんてそっちの方がずっとあり得ないよ
0689デフォルトの名無しさん
2013/01/17(木) 00:43:16.48On Error Goto Catch
'処理
On Error Goto 0
Exit Sub
Catch:
'例外時の処理
End Sub
問題はfinallyを実現したい時。
書けない事もないけど、Gotoを記述するところで抵抗がある。
0690デフォルトの名無しさん
2013/01/17(木) 13:32:52.76どんな書き方してるかしらんが
複数エラー発生しても最後のエラーにしか対応してない気がするな
0691デフォルトの名無しさん
2013/01/17(木) 13:36:14.620692デフォルトの名無しさん
2013/01/17(木) 17:20:03.25前スレあたりで動的配列の初期化チェックについて
これは名案と思ったレスがあった
それは動的配列を宣言した直後に取り合えずReDim hogehoge(0)してしまう
0693デフォルトの名無しさん
2013/01/17(木) 19:22:57.59それだと空の配列じゃないだろう
0694デフォルトの名無しさん
2013/01/17(木) 19:29:03.48そんなわけないでしょ。
try...catchと同じように例外を想定している箇所のみOn Error Resume Nextと
On Error Goto 0で囲む。
こんなの当たり前だと思うが...
もっともVB6はもう10年書いてないけど
0695デフォルトの名無しさん
2013/01/17(木) 19:43:31.24On Error Resume Next
文1
文2
On Error Goto 0
こういう風に書いてるんじゃないかと想像したが
これだと文1のエラーはトラップされないんじゃね?って話だが
まあお前がどう書いてるかしらんし実際どうなのか試す気もないけど
0696デフォルトの名無しさん
2013/01/17(木) 20:08:37.830697デフォルトの名無しさん
2013/01/17(木) 20:16:49.63Err.clear
'文1
If Err.Number <> 0 Then
'エラー処理1
End If
Err.clear
'文2
If Err.Number <> 0 Then
'エラー処理2
End If
On Error Goto 0
これだとtry〜catch風ではないよね。
0698デフォルトの名無しさん
2013/01/17(木) 20:55:18.69try{} → finally{} → 次の行へ
想定のエラーあり
try{} → catch{} → finally{} →次の行へ
想定外のエラーあり
try{} → finally{} →プログラム中断
0699デフォルトの名無しさん
2013/01/18(金) 10:47:51.21> こんなの当たり前だと思うが...
コード出せば、一発でみんなを納得させることができるよ。
0700デフォルトの名無しさん
2013/01/19(土) 10:32:42.21ファイル関係と件の動的配列のチェックぐらいしか使ったことないし。
0701デフォルトの名無しさん
2013/01/19(土) 14:00:08.80あとはどこまで事前チェックではじけるかと、どこまで不慮の事態を想定するか
0702デフォルトの名無しさん
2013/01/19(土) 16:51:41.80DB、ネットワーク関係とかも例外発生するでしょ。
0703デフォルトの名無しさん
2013/01/19(土) 21:48:03.840704デフォルトの名無しさん
2013/01/19(土) 22:37:27.27馬鹿だろお前
0705デフォルトの名無しさん
2013/01/19(土) 23:11:29.70基本的に事前チェックで可能な限り例外は排除する。
>>702 が言うような外部とのやり取り等は例外を排除しきれないから、
>>703 が言うように、そう言う奴はプロシージャに閉じ込める。
って言うのが、俺の方針。
0706デフォルトの名無しさん
2013/01/19(土) 23:25:04.60お前も馬鹿か。
その「例外が出るとこを全部まとめた」部分のエラー処理はどうするんだよ。
0707デフォルトの名無しさん
2013/01/19(土) 23:36:00.96誰も言ってない部分とやらに突っ込むアホに言われてもね (w
例外を閉じ込めたプロシージャ内では、普通に On Error Resume Next で処理して、
エラーコード返すなりすれば良いだけ。
0708デフォルトの名無しさん
2013/01/19(土) 23:51:13.43だから馬鹿だろお前。
だからエラーコードを返すためには何らかの方法でエラーを検出するコードを
書かなければならない。
つまり冗長性は少しも減らない。
そもそもエラーコードを返すなんて方法は返り値がない関数にしか使えない。
0709デフォルトの名無しさん
2013/01/19(土) 23:59:24.86バカは自分のことしか考えられないんだな。
> そもそもエラーコードを返すなんて方法は返り値がない関数にしか使えない。
自分の知識のなさをいちいち披露しなくても良いぞ (w
0710デフォルトの名無しさん
2013/01/20(日) 00:00:11.98例外を閉じ込めたプロシジャーが1行しかないなら話は別だがな
そのプロシジャー内でエラーキャッチしてしかるべき処理をするべきで
On Error Resume Nextでは最後に発生したエラーが解るだけで、エラーキャッチできないんだが
0711デフォルトの名無しさん
2013/01/20(日) 00:04:45.86そんな訳ないでしょ。
On Error Resume Nextを使うってことはエラーを自分でチェックすると言うこと。
0712デフォルトの名無しさん
2013/01/20(日) 00:10:31.90> On Error Resume Next ってのは想定外のエラーが出てもプログラムを止めたくないときにしか使えないぞ
想定内のエラーでも使うだろ、「ファイル関係」「DB」「ネットワーク」とか書いてあるのも理解できてないのか?
> On Error Resume Nextでは最後に発生したエラーが解るだけで
最後、最後と連呼してるアホは、文毎にエラーチェックすることも出来ないのかよ。
0713デフォルトの名無しさん
2013/01/20(日) 00:23:09.91つまり>>697のように書くのね
文毎にエラーチェックなんて、出来ても普通はやらないって前提の話をしてるんだよな、712以外のみんな?
0714デフォルトの名無しさん
2013/01/20(日) 00:28:00.17「想定できる例外」が発生する文なんてそんなにないだろ。
0715デフォルトの名無しさん
2013/01/20(日) 01:27:59.06お前だけだろw
0716デフォルトの名無しさん
2013/01/20(日) 01:33:00.00変わらんね
0717デフォルトの名無しさん
2013/01/20(日) 01:35:50.26だね。前提をそろえて話しないと話がすれ違うばかりで、>>713のように
あとだしでどや顔するやからがわいてくる。
0718デフォルトの名無しさん
2013/01/21(月) 00:50:24.460719デフォルトの名無しさん
2013/01/21(月) 14:05:33.60メディアがないとか異常な計測値が入ってきたとか、全て事前にチェックできるじゃん
あ、メディアがあることを確認した後で抜かれるってのがあるな
0720デフォルトの名無しさん
2013/01/21(月) 22:56:16.38メモリ不足とか、非常に予期しにくい例外もあるけどな
0721デフォルトの名無しさん
2013/01/22(火) 00:11:38.14エスパーでも雇えってか?
0722デフォルトの名無しさん
2013/01/22(火) 00:28:27.290723デフォルトの名無しさん
2013/01/22(火) 02:42:04.78対処出来るもの出来ないもの
どれの事言ってるのか曖昧すぎるだろ
0724デフォルトの名無しさん
2013/01/22(火) 05:00:11.780〜100まで変化する数値をある閾値で認識し、ダイアログ表示を出すプログラム
において、同じ値が変化しない間、ダイアログを消そうとしても消えず、困っております。
値の認識を最初の立ち上がり時だけ受け取り、一度ダイアログを消したら次を無視するような記述は
どうしたらよいでしょうか?
宜しくお願い致します。
0725デフォルトの名無しさん
2013/01/22(火) 05:36:47.39if 閾値内 then
if 表示フラグ then
ダイアログ表示
end if
表示フラグ = False
else
表示フラグ = True
end if
0726デフォルトの名無しさん
2013/01/22(火) 08:13:30.910727デフォルトの名無しさん
2013/01/22(火) 08:27:02.83仕事か?
0728デフォルトの名無しさん
2013/01/22(火) 18:32:03.82'処理
On Error Goto 0
Goto Finally
Catch
Select Case Err.Number
Case ●
'エラー処理
Case ▲
'エラー処理
Case ■
'エラー処理
Case Else
'エラー処理
End Select
'Finallyを実装したくない時はここにExit Subを設けるか、ログを吐いて処理を終了させる
Finally
'Finally処理
'Finally終わり----------------------
'処理の続き
End Sub
こんなんでどうよ?Try Catch風
0729デフォルトの名無しさん
2013/01/22(火) 18:37:38.72へ?Finally処理の後に処理が続くのか?
「Finally処理」が最後の処理になってないんだけど。
0730デフォルトの名無しさん
2013/01/22(火) 18:47:04.690731デフォルトの名無しさん
2013/01/22(火) 22:13:09.59自己解決しました。
閾値到達からタイマカウントUPされるまでの間を起動条件にして、それ以外では表示しないようにさせました。
シーケンサのノリでタイマを使ってトリガパルスを作りました。
>>727
おっしゃる通り仕事で最近使い始めました。
昔外注(派遣さん?)に作らせたものを改装しようとして、普段PLCラダーしかやらない私に振られ、困ってましたが
何とかなりました。
ド素人から レ素人くらいにはなれました。
お騒がせしました。
0732デフォルトの名無しさん
2013/01/23(水) 12:40:29.740733デフォルトの名無しさん
2013/01/23(水) 12:45:19.310734デフォルトの名無しさん
2013/01/23(水) 17:33:00.07ダイアログを閉じても異常値は継続しているので、またダイアログが表示されて困ってる
という話か
妙な日本語使うのぅ
0735デフォルトの名無しさん
2013/01/23(水) 18:49:55.73「コンパイルエラー
引数の数が一致していません。または不正なプロパティを指定しています。」
って出るよね
プロジェクトを一旦閉じて開き直すと治るけど
0736デフォルトの名無しさん
2013/01/23(水) 18:57:12.27TryCatchFinallyからは外したい部分じゃね?
例えば
引数がnullの場合はそのまま空のCollectionを
返して、nullじゃない場合はデータベースアクセスして
結果をCollectionに入れて返す。
で、データベースアクセスでfinally内にRecordsetのclose
だとかConnectionのクローズとかを記述。
0737デフォルトの名無しさん
2013/01/23(水) 19:41:25.09> で、データベースアクセスでfinally内にRecordsetのclose
> だとかConnectionのクローズとかを記述。
これこそがFinally処理かと。
TryCatchFinallyから外したい処理があるのなら、それはこの関数内で行う処理じゃなくて
この関数をコールする関数でやることかと思うんだけど。
そうじゃないと関数がぐちゃぐちゃになっちゃう。
0738デフォルトの名無しさん
2013/01/23(水) 21:03:47.90一つのプロシジャ中にTryブロックは一つしか書いちゃいけない教の人ですか?
0739デフォルトの名無しさん
2013/01/24(木) 18:31:08.26ans As Collection: Set ans = New Collection
If aaa = vbNullString Then
'何もしない
Else
On Error Goto Catch
'DBアクセス コネクションの取得とかそんなん
On Error Goto 0
Goto Finally
Catch
'エラー処理
Select Case Err.Number
Case ●
Case ■
Case Else
End Select
Finally
On Error Resume Next
'コネクション持ってたら解放とか
On Error Goto 0
End If
Set hoge = ans '戻り値のセット。一応、Finally以下に処理がくる
End Function
Finallyの後に何かある例
0740デフォルトの名無しさん
2013/01/24(木) 18:39:38.37戻り値のセットもFinally処理に入るんじゃね?
0741740
2013/01/24(木) 18:50:32.72すまん。間違えた。
Catch、FinallyをIfステートメントの中に入れるのかよ。
文法上は問題ないと思うけど、Catch、FinallyをIfステートメントの中に入れなくてはいけない理由は?
0742デフォルトの名無しさん
2013/01/24(木) 19:13:43.55入れてもいいけど、TryCatchのスコープを絞りたい。
TryCatchしたい対象を絞るって感じですね。
人によってはTryCatch使う時、メソッドの中身をガバっと
丸ごと囲ってしまうっていう事をするのはもちろん知ってる。
0743741
2013/01/24(木) 19:34:57.19これじゃダメなの?
Private Function hoge(aaa As String) As Collection
ans As Collection: Set ans = New Collection
'引数のチェック
If aaa = vbNullString Then
'何もしない
Goto Finally
End If
'DBアクセス用オブジェクトや変数の初期化処理
On Error Goto Catch
'DBアクセス コネクションの取得とかそんなん
On Error Goto 0
Goto Finally
Catch
'エラー処理
Select Case Err.Number
Case ●
Case ■
Case Else
End Select
Finally
On Error Resume Next
'コネクション持ってたら解放とか
On Error Goto 0
Set hoge = ans '戻り値のセット。
End Function
0744デフォルトの名無しさん
2013/01/24(木) 22:43:19.53最初のGoto Finallyが、無用で、
その使い方をすると際限なくGoto使うバカが出現しそう。
JavaのTryCatchFinallyと近い形式で記述したい。
0745デフォルトの名無しさん
2013/01/24(木) 23:14:40.69ん?条件後出しかよ。
そんなこと言ったら、Finally使ってる時点でGoToを際限なく使う奴が出てくると思うけど。
そもそもVBをJava風に書くスレでもないわけで、VBの書き方に沿えばいいんじゃねぇの?
確かにGoTo廃止論はあるけど、エラー処理、終了処理についてはGoTo使うと処理がスッキリ書ける。
最初のチェックでGoto Finallyにしたくないのなら、Exit Functionにするやり方もある。
ただし、終了処理となるFinallyラベルがあるのに最後の処理を通らず終了するのは処理の統一感が無くなってしまう。
最初のチェックでGoto Finallyを使ったのはそういった理由がある。
0746デフォルトの名無しさん
2013/01/25(金) 10:31:55.16俺ならこうするな。
Public Function GetDBConnection(connectString as String) As Boolean
On Error Goto FATAL
'DB接続処理
GetDBConnection = True
Exit Function
FATAL:
'接続エラー時の処理
'例外を投げても良し
End Function
0747デフォルトの名無しさん
2013/01/25(金) 10:39:44.66finally相当の仕組みを使いたいなら、Classを使ってデストラクタを定義したら?
0748デフォルトの名無しさん
2013/01/25(金) 10:51:41.16誰もお前に書けなんて要求はしてない。後出しも先出しも中出しも先っちょだけもない。
お前は勝手にゴミのような劣化したコードを書いてこれじゃダメなのと言い出した
勘違いブサイクであることを自覚しろ。
0749デフォルトの名無しさん
2013/01/25(金) 11:06:52.890750デフォルトの名無しさん
2013/01/25(金) 11:10:40.89上げることは特別なことだという価値観がお前の中では形成されているのか?
お前の中では?いんじゃねえのそれでも お 前 の 中 で は な。
0751デフォルトの名無しさん
2013/01/25(金) 11:15:15.33ダメに決まってんだろ。こんなきったねえコード久々に見たわ。
お前の汚い染み付きコードを見せられて気分が悪い。謝罪と賠償を要求する。
0752デフォルトの名無しさん
2013/01/25(金) 11:20:33.63お前はFinallyの意味がわかってない。
関数の終わりだからFinallyじゃねんだよ!Finally句のイディオムも理解せずに適当ぬかしてんじゃねえぞ!
0753デフォルトの名無しさん
2013/01/25(金) 11:22:19.17何お前If文のなかでTry Catchしたらいけないとでも思ってんの?
バカじゃねw
0754デフォルトの名無しさん
2013/01/25(金) 11:23:42.480755デフォルトの名無しさん
2013/01/25(金) 11:26:02.85なんだ、ただのお子様か。
0756デフォルトの名無しさん
2013/01/25(金) 12:07:43.90そもそもこいつがTry Catch Finallyを理解せずにいちゃもんつけてんだよな
>「Finally処理」が最後の処理になってないんだけど
バカすぎるw
構造化例外処理くらい知ってろよ
0757デフォルトの名無しさん
2013/01/25(金) 12:14:49.510758デフォルトの名無しさん
2013/01/25(金) 12:38:36.670759デフォルトの名無しさん
2013/01/25(金) 16:16:47.23Debug.Print DateAdd("d", CDate("2013/1/25"), 7)
は
2013/02/01
ですが
Debug.Print DateAdd("h", CDate("2013/1/25"), 7)
は
1904/09/22 19:00:00
なぜでしょう
0760デフォルトの名無しさん
2013/01/25(金) 16:36:05.11知るかよ
0761デフォルトの名無しさん
2013/01/25(金) 16:53:59.670762デフォルトの名無しさん
2013/01/25(金) 17:12:28.81現実世界で誰かにかまってもらえ
0764デフォルトの名無しさん
2013/01/25(金) 17:17:07.300765デフォルトの名無しさん
2013/01/25(金) 18:03:42.51パラメータの順序が変ってことかな。
Date型は整数部が日数、小数部が時間で実数型と互換があるから、
それなりに動いてしまうわけだ。
Debug.Print DateAdd("h", 7, CDate("2013/1/25"))
0766デフォルトの名無しさん
2013/01/25(金) 20:40:47.570767デフォルトの名無しさん
2013/01/27(日) 09:27:50.56コードはもっと単純に書けよ...
On Error Resume Next
でこんがらがる様なら、そのコードそのものが間違ってんだよ...
0768デフォルトの名無しさん
2013/01/27(日) 12:31:38.78針で刺すような 口づけの後、窓の外、気まずさを逃したの
0769デフォルトの名無しさん
2013/01/28(月) 14:54:04.89> これじゃダメなの?
ダメだよ。ダメダメ。却下。
0770デフォルトの名無しさん
2013/01/28(月) 22:06:14.57逆に良いって事なんじゃないかって思えてしまうな。
2ちゃんねるのやり過ぎかw。
0771デフォルトの名無しさん
2013/01/29(火) 08:33:44.49正論!
0772デフォルトの名無しさん
2013/01/31(木) 01:25:41.60理由はね…Javaの try-catch-finally…の働きを見てみよう。>>752に
>関数の終わりだからFinallyじゃねんだよ!
とある。
もう少し言えば>>756が
>Try Catch Finallyを理解せずに
と言ってる。
finallyってね、tryで囲んだ中で例外が起ころうが起こるまいが
最終的にはfinally内の処理を行うっていう記述なんですよ。
関数の終わりだからfinallyじゃないんですよ。try内の最終処理なんですよ。
tryで囲むという事は>>742が優しく教えてくれているように
>TryCatchしたい対象を絞るって感じですね
こういう事なんですよ。そこに●●の例外が起こる可能性というのを
明確に理解した上で、意図的にtry-catchで囲みます。
finallyの使い方の一例としては、既にデータベースアクセスが例に挙げられているけど
それと同じように、openしたらcloseしなきゃならないような場合、finally内に
closeの記述を入れるのは定番かと思います。例外が生じてcatchしようが
closeは必ずしなゃなんないでしょ。
0774デフォルトの名無しさん
2013/01/31(木) 05:08:51.630775デフォルトの名無しさん
2013/01/31(木) 11:56:25.20Try Catchふうに書くとこうなるねって会話が行われてたわけで
そもそもとかいうのはちゃぶ台を返すようなもの。
将棋で負けそうになって将棋盤をひっくり返すようなもの。
愚かなのはお前だけ。
0776デフォルトの名無しさん
2013/01/31(木) 12:09:48.43どうしてもJava風に書かなければいけない理由があるのか?
その背景がないのなら意味がない。
0777デフォルトの名無しさん
2013/01/31(木) 12:23:43.95会話の前提に従うことができないのならその会話に参加する意味はないな。
そりゃそうだ。
0778デフォルトの名無しさん
2013/01/31(木) 12:53:08.78try...catchはJavaだけじゃないし。モダンな構造化言語には一般的だろ。
0779デフォルトの名無しさん
2013/01/31(木) 12:54:51.82Try-Catch-Finallyを全機能コーディングで実現しようと思ったら
こんなに大変になるって言うのを証明できれば十分。
どっか漏れができるんだよね。
0780デフォルトの名無しさん
2013/01/31(木) 13:55:32.64VBにtry...catchなんてないのにアホか。
0781デフォルトの名無しさん
2013/01/31(木) 13:57:18.19finallyの部分が特に糞だと言われてんだけど
0782デフォルトの名無しさん
2013/01/31(木) 14:03:30.45しておいて
if err then
exit sub
end if
がよい。
0783デフォルトの名無しさん
2013/01/31(木) 17:19:47.590784デフォルトの名無しさん
2013/01/31(木) 17:41:31.73おまえらもセンス無いのな、俺と大差ない
センスある奴ってやっぱごく限られた人間だけなのがよく分かる
0785デフォルトの名無しさん
2013/01/31(木) 17:59:28.69いちいちエラーコードをチェックしなくて良いように、今の実行時エラーの仕組みがあるんだから、
それをやっちゃ元も子もない
0786デフォルトの名無しさん
2013/01/31(木) 18:49:08.65sub Command1_click
on error goto err
いろいろ
exit sub
err:
call 共通エラー処理(err)
end sub
それ以外のコードでは以下のコードを基本として
sub foo
on error goto err
いろいろ
exit sub
err:
終了処理
Err.raise Err.Number
end sub
終了処理が何も要らなければ(ほとんどがこれに当てはまる)
on error gotoしないで、エラーを無視して続行できる場合は
Err.raiseしないで処理を続行させればいいでしょ?
0787デフォルトの名無しさん
2013/01/31(木) 18:54:56.00なぜ終了処理が何も要らない=ほとんど当てはまるかというとね。
たとえばデータベースの切断。
あんなのはクラスにしてしまえば、
関数から抜けた時にfinallyと同じように
terminateが実行されるんだよ。
0788デフォルトの名無しさん
2013/01/31(木) 19:55:49.60try catchできないVBでの例外処理はどうしようかって議論で
finalyな処理が必要かどうかなんて議論してないぞ
あと基本GCにメモリ掃除を任せる言語でデストラクタによるDB切断とか薦められてないからな
0789デフォルトの名無しさん
2013/01/31(木) 20:11:40.95VB6のGCは参照カウンタ式だからterminateのタイミングは
きちんとプログラムで制御できるよ。
0790デフォルトの名無しさん
2013/01/31(木) 20:18:23.02基本GCにメモリ掃除を任せる言語ってのはVBのように単純なGCではない言語って意味だったんだが
まあ、そこも議論の本題ではない
0791デフォルトの名無しさん
2013/01/31(木) 20:29:26.47VB以外の言語の話をしてそれは本題ではないといってんの? バカ?
>>788
finallyはtry catchとセットのものだ。例外処理の議論をしてて
finallyを議論しないやつはにわか。そっこくこのスレを去るべきだ。
0792デフォルトの名無しさん
2013/01/31(木) 20:48:30.54Sub A()
Dim objConnection As ADODB.connection
Set objConnection = New ADODB.connection
Call B(objConnection)
If objConnection.State <> adStateClosed Then
Call objConnection.Close
End If
End Sub
Sub B(ByVal objConnection As ADODB.connection)
On Error Resume Next
Call C(objConnection)
If Err.Number <> 0 Then
Debug.Print Err.Description
End If
End Sub
Sub C(ByVal objConnection As ADODB.connection)
Call objConnection.Open
End Sub
0793デフォルトの名無しさん
2013/01/31(木) 20:51:02.12構造化例外処理のキモは文字通り構造化されていること。
何が起ころうと実行する必要がある終了処理を実行する必要がある構文として
finallyが優れているとは思わない。
現にusingやlockがあるC#ではfinallyってそんなに出番がない。
0794デフォルトの名無しさん
2013/01/31(木) 21:03:36.58VBスレなのに何でJavaの話をする必要があるのか解らんな。
try catchなんて論外だろw
0795デフォルトの名無しさん
2013/01/31(木) 21:08:30.64usingはおろかtry-catchすらないVBで、try-catch-finallyの機能を処理するための構造はどうするかって話をしてたんじゃないの?
だれかあれ張ってくれ、詭弁のガイドライン
0796デフォルトの名無しさん
2013/01/31(木) 21:08:58.800797デフォルトの名無しさん
2013/01/31(木) 21:13:52.58どういうのが論内?
>>793
usingがあればfinallyがいらないという関係のものじゃないだろ。
コンパイラがusingをfinallyに書き換えてんだから。finallyがなければ
usingもない。蒸気機関なんていらない汽車に乗ればいんだからと言ってるようなもの。
パンがなければケーキを食べればいいと言っているようなもの。アンネ・フランクでも気取ってるつもりか!
>>795
でっすよねー
0798794
2013/01/31(木) 21:25:28.14VBが範囲内でしょ。
何で態々Java風な書き方しなくちゃいけないんだよ、VBで。
どうしても議論したいのであれば、どうしてもJava風に書かなければいけない理由を教えてくれ。
0799デフォルトの名無しさん
2013/01/31(木) 21:29:59.87そのVBの範囲内というのはどういうの?
VB.NETにもTry Catch Finallyがあるわけで見慣れた構文なら
一般的な開発者間での意思共有がはかどりまくりだろ。はかどりまくりだろ。
2度言いたかったから2度言いました。
0800デフォルトの名無しさん
2013/01/31(木) 21:44:17.89お前の要望なんてどうでもいいんだよ。
VBはTry Catch Finallyが存在しない言語ってことが理解できないみたいだね。
推測だけど、VBをJava風にアレンジしたのがVB.NETなんじゃねえの?w
0802デフォルトの名無しさん
2013/01/31(木) 21:52:39.15俺の要望て何?俺なんか要望したかな。
なるほど、Try Catch FinallyはVBに存在しない。
VBでは例外処理がどう書かれるべきだと思う?
0803デフォルトの名無しさん
2013/01/31(木) 21:54:15.16どうしてもJavaふうに書かなければいけない理由はないよ。
VBらしいすてき実装方式を教えてもらえるならそれに鞍替え
しようと思う。どう書くべきだと思う?
0805デフォルトの名無しさん
2013/01/31(木) 21:59:42.95/゙ミヽ、,,___,,/゙ヽ
i ノ `ヽ'
/ > ● | ナイヨ☆
彡, ミ(__,▼_)彡ミ
/ 、 |∪| )
/ ヽノ //
ヽ| /
| /
ヽ / /
/ /ヽ
(´_ /ヾ_)
0807デフォルトの名無しさん
2013/01/31(木) 22:15:42.420808デフォルトの名無しさん
2013/01/31(木) 22:22:43.77うん、>>794がTry Catch Finallyにこだわる必要はまったくない。
Try Catch FinallyにこだわらないふつうのVBの例外処理はどういうの?
>>794はVBにTry Catch Finallyがないという理由でTry Catch Finallyを模したもの
よりそれがすぐれていると思っている。普通にといわれても>>792も>>786も
普通といえば普通。>>794の頭の中にある普通のVBの例外処理はどういうの?
0810デフォルトの名無しさん
2013/01/31(木) 22:30:58.34finallyは必須の機能じゃないよ。
finallyがなくても構造化例外処理になる。
C++がそうだ。
0811デフォルトの名無しさん
2013/01/31(木) 22:51:15.34不満はない。>>794の考えを聞いてる。それだけ。議論というのは
ほかの人の意見を聞くことに重きが置かれるべきだと思う。だから聞いてる。
>>792は俺が書いたものだけどそれはJavaでのこの形を参考にしたもの。
try {
try {
} catch {
}
} finally {
}
>>794は普通にVBの例外処理を書けばいいと思っていて>>792を普通のVBの例外処理
と認識するなら>>792のように書けばいいということになるから、VBには
Try Catch FinallyがないからJavaをまねをすべきじゃないということと
はちょっと矛盾するよ。
0812デフォルトの名無しさん
2013/01/31(木) 23:52:01.100813809
2013/01/31(木) 23:53:31.30書いた本人だから>>792はtry catch finallyを参考にしたと言えるけど、
>>792のコード自体Java臭はしないし、普通のVBのコードだと思う。
Javaを意識せずにVBのコードを書いても>>792のようなコードはありえるものだと思う。
>>811の話はプログラムの構造の話なんで言語はそんなに問題じゃない。
今回のTry Catch FinallyをVBのステートメントに強引に置き換えようとしていたから
おかしな話になっていたんで無理にJava風にする必要はないだろと言っていただけのこと。
0814デフォルトの名無しさん
2013/02/01(金) 00:26:24.37たぶんみんな構造の話をしてるんだと思うよ。おかしな話にはなっていなかったと思うよ。
>>794はVBの例外処理をこう書くべきだというのはないの?
俺はtry catchをまねしてこう書くべきだと>>792を示した。
Javaの臭いを嫌悪する立場からこうするべきだという具体的なものはないの?
0815デフォルトの名無しさん
2013/02/01(金) 00:43:37.28まず、try-catchはネストできるからと言ってネストするのは良くない。
なぜなら例外処理というのは正常系の流れと異常系の流れを
分離するものだから、ネストするとそれがごちゃまぜになる。
そしてVBのon errorはネストできないが、それはgotoの飛び先を変えればいい。
try-catchにかぎらずネストは浅くするもの。この程度制御できないわけがない。
そしてうまいコーディングをするのならclassのterminateを使えば
終了処理は不要になる。これはJavaにも当てはまる話。
0816デフォルトの名無しさん
2013/02/01(金) 00:51:12.31これぞまさに漁夫の利
さぁおまえらどんどん白熱してくれ
0817デフォルトの名無しさん
2013/02/01(金) 00:53:58.19微妙なんだよ。
0818デフォルトの名無しさん
2013/02/01(金) 00:58:53.10一般的な会議みたいな形だったら進行役の人がいて
これはこういうことでとまとめていくのだろうけど、
こういう議論の場だとどうなんだろうね。できあがるのは闇鍋コードになっちゃいそう。
0819デフォルトの名無しさん
2013/02/01(金) 01:01:27.29絶妙なJavaのコードはどんな感じ?その機能をVBで実装するとどう?
0820デフォルトの名無しさん
2013/02/01(金) 01:03:32.65関数1()
関数2()
関数3()
関数4()
上から関数が並んだ状態
これだとテストは一つのルートだけ
行えばいい。
条件分岐(try-catch含む)やループが
増えるたびコードは複雑になる。
0821デフォルトの名無しさん
2013/02/01(金) 01:05:50.64なるほど、俺はお前との会話をあきらめた。
0822デフォルトの名無しさん
2013/02/01(金) 02:46:29.84たとえばデータを読み取るような、そのオープンしたコネクションを使う処理はどこに書くべきだとおもってるんだ?
0823デフォルトの名無しさん
2013/02/01(金) 06:41:21.12完全に後出しの話だろw
最初から構造的にどうする?って話じゃなかったし。
いい加減さ、人の話を利用して別の話にすり替えるのやめろよ。
0824デフォルトの名無しさん
2013/02/01(金) 10:12:07.12きたねーコードだな。
お前Javaプログラマに向いてないよ。
0825デフォルトの名無しさん
2013/02/01(金) 10:54:28.79接続済みコネクションを返す関数を作るかするね。
少なくとも、生のADODBという文字列が、コード中の至る所に登場するようなことにはしない。
あと、ByRefじゃないのか?
0826デフォルトの名無しさん
2013/02/01(金) 12:19:37.80オープンしたコネクションを使う処理はCに書かれるべきだと思ってる。
>>825
ByRefは参照渡しだよ。戻り値を複数返したいときにはByRefを使うけどどこをByRefにすべき?
0827デフォルトの名無しさん
2013/02/01(金) 12:28:32.13戻り値を複数返したいときにはByRefを使う
戻り値を複数返したいときにはByRefを使う
戻り値を複数返したいときにはByRefを使う
???
0828デフォルトの名無しさん
2013/02/01(金) 12:29:52.77メモリーを消費したくないという意味だろ?
国語力の無さに突っ込むな
0829デフォルトの名無しさん
2013/02/01(金) 12:30:35.200830デフォルトの名無しさん
2013/02/01(金) 12:39:03.11ここ
> Sub B(ByVal objConnection As ADODB.connection)
> Sub C(ByVal objConnection As ADODB.connection)
0831デフォルトの名無しさん
2013/02/01(金) 12:41:12.97俺がByRefを使うときといったら戻り値を複数返したいときだな〜ていう意味。
>>828
違うよ。俺がByRefを使うときといったら戻り値を複数返したいときだな〜ていう意味だよ。
俺の国語力は108まである。
0832デフォルトの名無しさん
2013/02/01(金) 12:47:59.76ConnectionのインスタンスはAで作られるからB、Cの引数を
ByRefにする必要はないよ。B、Cの引数をByRefにするとB、Cでインスタンスを
入れ替えられる危険性が生じる。B、Cでインスタンスを入れ替えられると
Aでリソースが解放されることが保証されなくなる。だからB、Cの引数は
ByValにすべきだと俺はそう思ってる。
0833デフォルトの名無しさん
2013/02/01(金) 13:05:51.47VB6は参照カウンタでオブジェクトの解放を行うから、リソースの解放漏れはないよ。
0834デフォルトの名無しさん
2013/02/01(金) 13:08:21.16そんな話はしてない。
0835デフォルトの名無しさん
2013/02/01(金) 13:14:40.81え?
> B、Cでインスタンスを入れ替えられると
> Aでリソースが解放されることが保証されなくなる。
って書いてたから、喩えそんなことがあってもリソースが解放されないことなんてないよって書いたんだけど?
0836デフォルトの名無しさん
2013/02/01(金) 13:18:05.80うん、そうなんだろうなとは思うけど、ByValにすべきかByRefにすべきか
という話をしてるんであって、参照カウンタ行うリソースの解放と
俺が書いたAで行われるリソースの解放と言葉の定義が変わってるから
そういうのはやめてくれって意味でそんな話はしてないってこと。
0837デフォルトの名無しさん
2013/02/01(金) 13:21:51.84> 参照カウンタ行うリソースの解放と
> 俺が書いたAで行われるリソースの解放と言葉の定義が変わってるから
いや、君が思ってる通りの意味で、リソースの解放漏れは無いよって書いたつもりだけど。
それともアレなの?ADBDBって、オブジェクトが消滅してもコネクションが残ってたりするの?
0838デフォルトの名無しさん
2013/02/01(金) 13:24:33.89そういうこというと話が発散しちゃうんだよね。現にいまByValをByRefに
すべきかという話がADODBのオブジェクトがどうなんだって話になってる。
そういうのやめてくれっていってんだ。
0839デフォルトの名無しさん
2013/02/01(金) 13:29:25.51国語力の無さは関係ない。
VBという言語をきちんと理解しているかどうかだ。
0840デフォルトの名無しさん
2013/02/01(金) 13:30:18.43俺は、ByValかByRefかはどうでもいいよ。好きにやれよ。
俺はね、「リソースが解放されることが保証されなくなる」とかいう適当なこという奴に敏感なだけなんだよ。
0841デフォルトの名無しさん
2013/02/01(金) 13:32:00.92何が言いたいのかさっぱりw
ByRefってどんなときに使うのか、戻り値とは何なのかきちんと理解してないね。
こういう奴の話を聞くと疲れるだけ。
0842デフォルトの名無しさん
2013/02/01(金) 13:33:06.39あ、ひょっとして「リソースの解放がされない可能性があるから、set obj = nothingは必須」って言ってた人?
0843デフォルトの名無しさん
2013/02/01(金) 13:47:25.52> B、Cでインスタンスを入れ替えられると
> Aでリソースが解放されることが保証されなくなる。だからB、Cの引数は
> ByValにすべきだと俺はそう思ってる。
BもCも自分で書く関数なのに「入れ替えられると」なんて書くから、なんのこっちゃってなる。
書くんなら、「BもCもobjConnectionを再設定しないという表明のためByValにした」みたいに言えよ。
そういうことなんだろ?
0844デフォルトの名無しさん
2013/02/01(金) 14:03:09.15>「BもCもobjConnectionを再設定しないという表明のためByValにした」みたいに言えよ。
そう予測したということは問題なく伝わるってことだ。証明してくれてありがとう。
何かこうさまつなところにばかり噛み付いてくるな。昨日あの店で食べたアイスクリームが
おいしかったって話してたら「違う、それはバニラアイスクリームだ、バニラの香りこそが
あのアイスクリームの味を際立たせるものだからバニラアイスクリームと言うべきだ、
お前らは間違ってる」と激昂するコミュニケーションブレイカーという名前のラスボスだ。俺はビアンカ。
0845デフォルトの名無しさん
2013/02/01(金) 14:28:47.52> 何かこうさまつなところにばかり噛み付いてくるな。
みたいな愚痴いわずに、最初からちゃんと説明できるようにしような。
0846デフォルトの名無しさん
2013/02/01(金) 14:36:25.14きちんと伝わることはお前自身が証明して見せたんだから
それが説明できていることのなによりの証拠だ。
自分でその証拠を提示しておいて説明できてないと言い張る
お前はただのかまってちゃん。ByValとByRefの違いがどうでもいいと
思っているのに俺にレスしてくるお前はタダノ・カマッテ・チャン。
カマッテ・チャンという名のアクションスター。俺はビアンカ。
0847デフォルトの名無しさん
2013/02/01(金) 14:45:24.05話の流れで忖度できただけで、説明が下手なのは変わりない。
言ってくれる奴がいるだけ幸せなんだが。
0848デフォルトの名無しさん
2013/02/01(金) 14:47:17.14> B、Cでインスタンスを入れ替えられると
> Aでリソースが解放されることが保証されなくなる。だからB、Cの引数は
> ByValにすべきだと俺はそう思ってる。
だからリソースの解放はTerminateでやるべきだってことだよ。
参照が0になればリソースの解放が行われる。
0849デフォルトの名無しさん
2013/02/01(金) 14:52:20.46どう見ても、お前がかまってちゃん
長文とageるのやめろ
0850デフォルトの名無しさん
2013/02/01(金) 15:01:21.10同意。
下手な奴は、業務上想定できるエラーも例外として定義して、try-catchをネストさせ、何段階ものcatchを書き、
例外を再スローしたりしなかったりにぎりつぶしたりとか、もう混沌としてたりする。
0851デフォルトの名無しさん
2013/02/01(金) 15:01:40.58話の流れで意味がわかるんなら説明できてるってことじゃねえか。何言ってるんだ。
お前が幸せをあたえてるっていう思いに浸れるんならいんじゃねえの。
俺はそんなお前に絡まれるという不幸な目にあったビアンカだけどな。
>>848
>>832はByValをByRefにするべきかという話だったんだけど、それはどういう話?
前提が違う話をしても話がすれ違うばかりだ。
0852デフォルトの名無しさん
2013/02/01(金) 15:09:35.98何をごちゃごちゃ言ってるんだよって話だ
0853デフォルトの名無しさん
2013/02/01(金) 15:11:53.67何度も説明を重ねないと、人に真意が伝わらないのを、普通は説明下手って言うんです。
0854デフォルトの名無しさん
2013/02/01(金) 15:20:23.88相手がこちらの意図を理解しようと努力する一般的な人であるという前提が
成立するならそのとおりだね。ByValとByRefの話をしてるときにByValとByRefは
どうでもいいといってしまう天然アスペだと前提は成立しない。
0855デフォルトの名無しさん
2013/02/01(金) 15:24:00.92間違った事を理由にしてたから、それは違うと指摘しただけだよ。
いい加減、間違いを認めろよ。
0856デフォルトの名無しさん
2013/02/01(金) 15:26:12.45お前らが理解しようとしてないだけなんだ
ってことですね、わかります
0857デフォルトの名無しさん
2013/02/01(金) 15:27:55.370858デフォルトの名無しさん
2013/02/01(金) 15:38:50.71俺はByValとByRefの話をしていて、お前はそれはどうでもいいという話をしている。
話の前提が違ってるからそもそも論理が展開される筋道が違うわけで、
トマトが甘くておいしいという話をしてる人に
「どこが甘いんだ、甘いというのはメロンのことを言うんだ」と怒りを爆発させている
大噴火おじさんでしかない。俺はビアンカ。
>>856
お前らというよりお前だけど、まあそういうこと。
0859デフォルトの名無しさん
2013/02/01(金) 15:40:25.25能書きはいいからsageろ。
0860デフォルトの名無しさん
2013/02/01(金) 15:40:40.39お前が考える筋のいいコードを見せちゃいな。
0861デフォルトの名無しさん
2013/02/01(金) 15:41:19.880862デフォルトの名無しさん
2013/02/01(金) 15:41:59.050863デフォルトの名無しさん
2013/02/01(金) 15:42:10.68筋が悪い理由聞いた方がいいんじゃないの?
0864デフォルトの名無しさん
2013/02/01(金) 15:46:03.15・全く関係無いたとえをして、話を発散させる
0865デフォルトの名無しさん
2013/02/01(金) 15:46:51.59ど素人か
0867デフォルトの名無しさん
2013/02/01(金) 15:57:01.42メール欄にまで噛み付きだしたよ。天然アスペここに極まれり。
0868デフォルトの名無しさん
2013/02/01(金) 16:49:35.35> Javaのコードとして>>811は
> 微妙なんだよ。
> 857 :デフォルトの名無しさん:2013/02/01(金) 15:27:55.37
> つか、構造化例外の例だかなんだか知らないが、>>792のコードは筋が悪い
お前らは>>811や>>792は筋が悪いと言ったが、それよりすぐれたものを書くことができなかった。
つまり、>>792や>>811を書いた俺はお前らに対して完全勝利をはたした。
いまここに俺が大勝利したことを宣言する。
0869デフォルトの名無しさん
2013/02/01(金) 16:52:07.13>>820に書いてあるだろ。
優れたコードってのは、何かを書くんじゃなくて
何も書かなくていいようにするってことだ。
コードは書くとバグのもとになる。
だからコードを減らすことが、優れたコードなんだよ。
0870デフォルトの名無しさん
2013/02/01(金) 16:57:45.10お前はコードを減らすという名目の元に例外処理を行う具体的なコードを
示すことができずに、条件分岐が増えるほどコードが複雑になるというプログラミング上の
ごくごくあたりまえの一般論を語ることしかできなかった。それはさながら家に火を
つければ火事になるといってるようなものであり、まったく1ミクロンも意味のない空虚な
言葉でしかなかった。つまりお前は>>792を具体的に示した俺に大敗北をきっした。
0871デフォルトの名無しさん
2013/02/01(金) 17:04:16.63まずサンプルとしてダメ。例外以外のことをやってない
例外処理が主になってる。アホらしい。
サンプル書くならこうだろ。
まずデータベースを使ったfoo()という処理を行いたい。
void main() {
foo()
}
これがスタートとなるべきメインの処理だ。
データベース関連のコードを加える
void main() {
Con con = new Connection();
MyClass my_class = new MyClass(con);
my_class.foo();
}
あ、VBじゃないというツッコミはいらんよ。
どの言語でも同じだから。
あとこれに例外処理を加える。
void main() {
try {
Con con = new Connection();
MyClass my_class = new MyClass(con);
my_class.foo();
} catch(e) {
共通例外処理(e);
}
}
これがシンプルな例外処理、無意味に複雑にするのは馬鹿のやること。
0872デフォルトの名無しさん
2013/02/01(金) 17:05:29.22コードレビューしたら、
で? 何がやりたいの? って言われる所。
まず「何がやりたいの?」という質問に日本語で答えろ。
0873デフォルトの名無しさん
2013/02/01(金) 17:06:37.51プ
0874デフォルトの名無しさん
2013/02/01(金) 17:12:48.26例外処理をどう書くかて話なんだから例外処理が主になるのはとうぜん
のことで、fooを追加しただけでなんとかなると思ってるお前の頭は虫に食われてんのか
と心配になる。お前のfooは俺のCでしかない。そしてお前のコードはConnectionのリソースを解放せず
メモリリークするようにしただけだ。つまり俺のコードより数段劣る。俺のコードでは例外処理をした上で
ConnectionのClose処理が行われるようになっている。
0875デフォルトの名無しさん
2013/02/01(金) 17:14:45.15例外処理の正しい書き方とは、
本来のコードとは分離させること。
ネストしている時点でそれは正しい書き方とはいえない。
> Connectionのリソースを解放せず
スコープから消えたら解放される。
0876デフォルトの名無しさん
2013/02/01(金) 17:17:04.23try {
try {
} catch {
}
} finally {
}
これをやりたいのと返す刀で返してレビュワーの頭をレビューするべきなんじゃないかと
手元の紙にメモる。コードレビューしたらそうなる。
0877デフォルトの名無しさん
2013/02/01(金) 17:17:15.29そうでもない
0878デフォルトの名無しさん
2013/02/01(金) 17:17:57.67それは、気のせいだよ...
めんどくさいから詳しい説明は端折るが...ByValでも、ByRefでも、全く同じオブジェクトしか渡せないよ
0879857
2013/02/01(金) 17:18:33.08ダメだしで勘弁。
まず、A()、B()、C()にちゃんとした関数名を付けてみて。
(念のため説明すると、今A, B, Cという名前にしてるというのが悪いというわけじゃ無いぞ)
そして、オープンしたコネクションはC()で使うということだが、その使用するコードをC()に追加することを想像する。
さらに、別のオープンしたコネクションを使う場面を考える。
さて、そのコードはどうなる?
0880デフォルトの名無しさん
2013/02/01(金) 17:18:51.52正しくない。
そもそもどちらがシンプルなコードになってるか見れば答えは明らか。
力を入れる場所が違っている
俺はコードをシンプルにするようにプログラミングしていく。
馬鹿はコードを複雑に書いてどや顔する。
0881デフォルトの名無しさん
2013/02/01(金) 17:20:36.61>>871はスコープを抜けたらリソースが解放されるようになってないよ。
どの言語でも同じだっていってるけど、それは違うよ。それは気をつけないと
メモリリークするよ。
0882デフォルトの名無しさん
2013/02/01(金) 17:23:06.21> スコープを抜けたらリソースが解放されるようになってないよ。
Connectionはただのクラス。
データベースの接続オブジェクトはConnectionクラスに内包されている。
データベースの接続オブジェクトの解放はConnectionクラスの中のTerminateで行なっている。
お前にはそういうコード、作れないの?
0883デフォルトの名無しさん
2013/02/01(金) 17:25:42.30ちょっとお前がなにをいってるのかわからなくなってきた。
> 862 :デフォルトの名無しさん:2013/02/01(金) 15:41:59.05
> 少なくともVB6系では、オブジェクトをByValでは渡せないんだぜ...
> 878 :デフォルトの名無しさん:2013/02/01(金) 17:17:57.67
> >>866
> それは、気のせいだよ...
> めんどくさいから詳しい説明は端折るが...ByValでも、ByRefでも、全く同じオブジェクトしか渡せないよ
ByValではオブジェクトを渡せないと言ってたのが、
ByValでも同じオブジェクトしか渡せないと言ってる。
ByValでオブジェクトを渡せるの?ByValでオブジェクトを渡せないの?どっちなの?
0884デフォルトの名無しさん
2013/02/01(金) 17:27:52.80ある作業をするときにデータを一時ファイルに書き出し、そして処理を行う。
一時ファイルはtempディレクトリ作る。ただし名前は既存のものと被らないようにする
この時途中でエラーが起きたら、一時ファイルは削除する
俺ならこう書くね。
Sub main
On Error Goto err
Dim p as Process
Set p = new Process
Call p.run
Exit Sub
Err:
MsgBox Err.Description
End Sub
Processクラスの内容は省略。作れないわけ無いよね?
0885デフォルトの名無しさん
2013/02/01(金) 17:29:49.47俺にはというかすくなくともJavaではできないよ。デストラクタがないから。
お前はどの言語でも同じだっていってたから、それは違うよってこと。
0886デフォルトの名無しさん
2013/02/01(金) 17:30:47.70馬鹿なの?
0887デフォルトの名無しさん
2013/02/01(金) 17:33:04.28それほど明らかでもない
0888デフォルトの名無しさん
2013/02/01(金) 17:34:25.50言語的に劣っているものと同じコードを書かないといけないのでしょうか?
おかしな話ですね。
Javaではできないから、こんなふうに書かざるをえない。
だからVBでも同じようにするべきだ。
意味がわかりません。
0889デフォルトの名無しさん
2013/02/01(金) 17:34:59.44非常にめんどくさいので、説明は割愛させて欲しい...
要するにオブジェクトに関して言うと、ByValで指定しても、ByRefで指定しても、結果的には全く一緒だって事
内部の処理は、ByValはByValの処理、ByRefはByRefの処理はされているが
ByValで渡しても、ByValに期待する結果にはならない
いやVBを使う人には、ByValで期待する結果になるのか?
0890デフォルトの名無しさん
2013/02/01(金) 17:35:27.58俺終止形で命令するやつって大っ嫌い。
言いたいことあるなら質問という形にするんじゃなくて先に言って。
うぜえだけだから。あたし何歳に見えるー?と同じ。うざいだけ。
0891デフォルトの名無しさん
2013/02/01(金) 17:35:40.84http://d.hatena.ne.jp/shawshank99/20121005/1349395291
4. try-catch + リソース 文ができた。
http://d.hatena.ne.jp/shawshank99/20110808/1312769605
try catch 内でリソースを扱う場合、finaly で resource.close() をする必要がある。
場合によっては try-catch がたくさん出来たり、 try-catch のネストが発生してしまう場合があった。
しかし Java7 様のおかげで、勝手に close してくれるようになります。
C# の using 文とほぼ同等の機能。もちろん、通常終了時だけじゃなく
Exception 発生時にも close してくれる。( close 以外の場所で Exception が発生した場合 )
0892デフォルトの名無しさん
2013/02/01(金) 17:37:34.63無知だってわかったかい?
0893デフォルトの名無しさん
2013/02/01(金) 17:38:02.09>>882のような処理はJava7でできるようになったで。
0894デフォルトの名無しさん
2013/02/01(金) 17:39:06.46> Javaではできないから、こんなふうに書かざるをえない。
> だからVBでも同じようにするべきだ。
これは俺が言ったことじゃなくてお前が言ったこと。
お前は意味がわからない言葉を自分で考えてそれに自分で意味がわからない
といっているだけだよ。むなしいだけだね。
JavaでできることとVBでできることとが違うっていう認識があるんなら
どの言語でも同じっていうのは成り立たないよ。
0895デフォルトの名無しさん
2013/02/01(金) 17:40:36.91のこのコード、
public static void main(String[] args) throws IOException {
try ( FileWriter fw = new FileWriter("sample.txt") ) {
fw.write("hoge");
fw.write("huga");
}
}
発想がまるっきり>>884と同じだね。
スコープが抜けたら自動的にリソースの解放処理を行う。
この発想によってコードはよりシンプルになる。
0896デフォルトの名無しさん
2013/02/01(金) 17:41:50.02どの言語でも同じなのは考え方なw
そりゃ言語が違うんだから書き方は違うに決まってるよw
0897デフォルトの名無しさん
2013/02/01(金) 17:45:51.03> 言いたいことあるなら質問という形にするんじゃなくて先に言って。
まず、A(), B(), C()に具体的な名前を付けることができないとすれば、それはA(), B(), C()の
凝集度が低いことの証明になる。
次に、C()内部でデータベースをオープンするのはまずい。
C()と同じような立場のD()を作る事を想像すると、その呼び出しシーケンスはどうなるか?
D()でデータベースをオープンしないのなら、なぜC()ではオープンするのだろうか?
0899デフォルトの名無しさん
2013/02/01(金) 17:49:04.50コードはシンプルな方がいい。
シンプルなコードを目指すとtry-catchのネストなんて
汚いコード以外の何者でもないのだ。
まあJava6まではリソースの自動解放ができなかったのだから
仕方なくtry-catchのネストなんて汚いコードを書かざるを得なかったかもしれないけど
その汚いコードと同じ書き方をするべきなんてのは間違っているわけだ。
Java7では文法が改良され、リソースの自動解放ができるようになった
それは望まれた機能だったから追加された。
そしてよりシンプルにコードが書けるようになった。
VBでもシンプルなコードにするのがいいに決まっている。
考え方は一緒だが、書き方は違う。
0900デフォルトの名無しさん
2013/02/01(金) 17:49:50.88> うん、で、>>871のJavaで示されたコードはメモリリークするよっていってんの。
Javaのコードなんて一言も言ってないけど?
コンパイル通らないでしょ。
0901デフォルトの名無しさん
2013/02/01(金) 17:49:59.65だからさ、質問という形じゃなくて考えをまとめて自分の頭の中で
結論を出してからそれを書いてよ。こうするべきだというのもあわせて
提示してもらうのが理想だけどもないならないでかまわないから、
これはこういう理由でこうするべきだっていうのを示して。
0902デフォルトの名無しさん
2013/02/01(金) 17:52:34.69ほんとだ、Javaじゃないのね、デストラクタが存在するJavaのような
コードで書くとそうなってどの言語でもそれは変わらないっていってるのね。
どの言語にもデストラクタが存在するといってるわけだから、Javaにデストラクタ
が存在しないことを述べた俺が正しいということでいいね。
0903デフォルトの名無しさん
2013/02/01(金) 17:54:37.81結論は出ている。
A(), B(), C()は凝集度が低いように見える。
だがそれは君がどういうつもりで関数分割したのかにもよる。
だから、具体名を付けてみてと言っている。
そして、C()でデータベースをオープンするのはまずい。
どうすれば良いかはあきらか。
オープンしたコネクションをC()に渡せば良い。
0904デフォルトの名無しさん
2013/02/01(金) 17:55:28.82> が存在しないことを述べた俺が正しいということでいいね。
Java7ではデストラクタの代わりとなるものがあるって
さっきリンク書いただろ。読んでないのか?
0905デフォルトの名無しさん
2013/02/01(金) 17:56:21.05ちょっとこれは誤解を招くので訂正する。
オープンしたコネクションを使う場合は、その関数にオープンしたコネクションを渡す仕組みにするのが良い。
0906デフォルトの名無しさん
2013/02/01(金) 17:56:51.49全くその通り
汚いコードをだして汚いコードを真似して書いてみろと
言われても、なんでお前そんなコード書くんだよ?
まず最初にお前の汚いコードから直そうなとしか思えない。
0907デフォルトの名無しさん
2013/02/01(金) 18:04:31.310908デフォルトの名無しさん
2013/02/01(金) 18:08:33.07関数を分割した意図はこれをやりたかったから。
これで俺がどういうつもりかお前はわかるから俺が名前を変えるまでもなく凝集度がわかるな。
try {
try {
} catch {
}
} finally {
}
>>904
代わりになるものだね、つまりデストラクタは存在しないということでいいね。
>>905
BでコネクションをオープンしたらErr.Numberのチェックが2つ必要になる。
VB.NETやC#ではTryブロックの中でコネクションをオープンするだろ。
つまり俺のコードは直感的にわかりやすい。お前が言ってるのはコードが
増えるだけの悪いコード。
0909デフォルトの名無しさん
2013/02/01(金) 18:11:15.560910デフォルトの名無しさん
2013/02/01(金) 18:11:54.44推して知るべし
0911デフォルトの名無しさん
2013/02/01(金) 18:12:17.71> BでコネクションをオープンしたらErr.Numberのチェックが2つ必要になる。
「Bでコネクションをオープンした」場合のことを言っているのでは無い。
C()でオープンするのなら、その他のコードはどうなるのかということを考えてくれと言っている。
*
もう今日は帰るので、もっと具体的に考えることができる例を書いとく。
ある画面Form1のButton1をクリックしたら、マスターのsectionsとusersを検索して
画面に表示しなければならない。
・sectionsを検索するコードはA(), B(), C()のどこに実装するのか
・usersを検索するコードはA(), B(), C()のどこに実装するのか
・Button1のクリックイベントハンドラは、A(), B(), C()のどれを呼ぶのか
・Button1のクリックイベントハンドラが別の関数を呼んで、その中でデータベースの検索をする場合、
その呼ばれる関数には何という関数名を付け、A(), B(), C()はどう呼ぶのか
・Form2のButton1をクリックしたらusersを検索する必要があるのだが、そのコードはどうなるのか
0912デフォルトの名無しさん
2013/02/01(金) 18:13:01.66> 代わりになるものだね、つまりデストラクタは存在しないということでいいね
デストラクタの代わりになるものがあるから
同等のコードが書けると認めたってことでいいかい?
俺が言いたいのはデストラクタそのものがあるかどうかではないからさ。
VBだってデストラクタではなくTerminateだしな。
0913デフォルトの名無しさん
2013/02/01(金) 18:14:04.29> 関数を分割した意図はこれをやりたかったから。
そもそもなんでそんな汚いコードをやりたいと思うの?
まず話はそこからなんだが。
0914デフォルトの名無しさん
2013/02/01(金) 18:14:10.340915デフォルトの名無しさん
2013/02/01(金) 18:14:53.28> BでコネクションをオープンしたらErr.Numberのチェックが2つ必要になる。
汚いコードを書くお前は、やっぱり汚いコードを思いつく。
なんでそんなチェックが必要になるのか、
やっぱり根本的な発想がダメなんだろうな。
0916デフォルトの名無しさん
2013/02/01(金) 18:15:30.34もういいわお前。俺はお前の意見を聞きたいの。質問を聞きたいんじゃないの。
自分の意見をきちんと述べることができなかったお前が大敗北したということに決定な。
0917デフォルトの名無しさん
2013/02/01(金) 18:16:15.22勝負してたのかね?
0918デフォルトの名無しさん
2013/02/01(金) 18:16:58.190919デフォルトの名無しさん
2013/02/01(金) 18:18:29.20まだ帰ってなかったりして。
>>911の具体例を瞬時に想定できないようなコードだから、筋が悪いと言っている。
悪くないというなら、>>911の回答を月曜までに書いといてくれ。
休みの間は2ch見ないから。
0920デフォルトの名無しさん
2013/02/01(金) 18:19:03.09発想がないのかねぇ。
0921デフォルトの名無しさん
2013/02/01(金) 18:19:36.990922デフォルトの名無しさん
2013/02/01(金) 18:20:16.85それに、大学のレポートかよ?
0923デフォルトの名無しさん
2013/02/01(金) 18:21:14.18正確にはデストラクタじゃなくても
スコープを抜けた時に呼び出される仕組みがあればいいんだよ。
たとえばJava7にはそれがある。
ない言語って?
0924デフォルトの名無しさん
2013/02/01(金) 18:21:52.29他の人も書いてるが、コネクションを取得する関数を別途作る。
Public Function GetConnection(connString as String) as ADODB.connection
End Function
って感じだろうか。
接続できなければ、Nothingを戻す。あるいは、実行時エラーを戻す。
どちらにするかは、そのアプリケーション全体のエラー処理ポリシーによる。
0925デフォルトの名無しさん
2013/02/01(金) 18:22:53.41うん、Java7のリソース付きtry文でcloseが呼ばれることは否定してない。
>>913
汚いコードだと思ってないからお前の質問は意味がない。はい勝利。
0926デフォルトの名無しさん
2013/02/01(金) 18:24:22.600927デフォルトの名無しさん
2013/02/01(金) 18:26:58.25VBもスコープを抜けたらリソースが解放されるんだが、それがわかってないんじゃないだろうか
0928デフォルトの名無しさん
2013/02/01(金) 18:27:41.64> 汚いコードだと思ってないからお前の質問は意味がない。はい勝利。
汚いコードであることは明白なので
お前がどう思っているかどうかは意味が無い。
むしろお前が汚いコードだと思ってないことは承知済み
だろうなぁって生暖かい目で見てる。
0929デフォルトの名無しさん
2013/02/01(金) 18:27:43.480930デフォルトの名無しさん
2013/02/01(金) 18:28:27.71もっと余裕持てよ
0931デフォルトの名無しさん
2013/02/01(金) 18:28:57.82なぜなら質問の意味がないからです
0932デフォルトの名無しさん
2013/02/01(金) 18:29:12.36try-catchのネストを書かせばばいいじゃね?
ちゃんと具体的なコードも含めて
ま、逃げるだろうな。
0933デフォルトの名無しさん
2013/02/01(金) 18:30:03.45ふつう逆だろ、仕事のときは2chを見て、お休みのときに2chを見ないなんて
この罰当たりが!想定できなかったのはお前が悪い。俺のコードは悪くない。
お前の頭が悪い。俺のコードは悪くない。俺のコードが大勝利。早く帰れバカ。
0934デフォルトの名無しさん
2013/02/01(金) 18:31:51.36明白であることを一切示すことできていないお前の発言は
井戸の中に向かって王様の耳はロバの耳と言っているようなもの。
王様の耳はロバの耳じゃない。はい古典文学的論破。
0935デフォルトの名無しさん
2013/02/01(金) 18:32:18.77try {
} catch {
}
} finally {
}
俺ならこう書く
try {
} catch {
} finally {
}
もしかして1段に並べられるのを知らないのではないか?
0936デフォルトの名無しさん
2013/02/01(金) 18:33:08.41> 明白であることを一切示すことできていないお前の発言は
上で書いたでしょw
ネストするのはありえないし、
コードはシンプルにする方がいい。
0937デフォルトの名無しさん
2013/02/01(金) 18:33:42.28ありそうwww
なんかJavaにも詳しくなさそうだし。
0938デフォルトの名無しさん
2013/02/01(金) 18:35:26.62ネストさせることに正当な理由があることを証明できてないのだよ。
多分これからもいろいろな文句を言って書かないつもりだろうね。
0939デフォルトの名無しさん
2013/02/01(金) 18:40:25.26それは知ってるんだけど、それについては>>739がすでに示してるんで、
同じもの書いて俺ならこう書くっていうのはそれこそ変だろ。
だから俺は>>739に対してそれ構造的に変だなんてことは言ってない。はい論破。
0940デフォルトの名無しさん
2013/02/01(金) 18:44:07.03階層を分けることによってああここはFinallyしてるだなー
ああここはCatchしてるんだーなーというのがわかるだろ。
関数の機能を一つに絞るという構造化プログラミングの王道を
示した>>792こそ優れた例外処理だということに異論はないだろ。はい論破。
0941デフォルトの名無しさん
2013/02/01(金) 18:45:51.87AでnewしてAでcloseするのなら
Aでopenしないといけない。
センスが無いとしか言いようが無い。
0942デフォルトの名無しさん
2013/02/01(金) 18:50:21.27AでCloseされるからAでOpenしなければいけない理由が説明されてない。
AでCloseするのが嫌ならCでCloseすればいいだろ。はい論破。
0943デフォルトの名無しさん
2013/02/01(金) 18:53:00.77やっぱりセンス無いとしか言いようが無いな。
openとcloseというような
対応する処理を階層をまたがって実行することで
ここでOpenしてるのだからCloseもここらへんに
あるはずだよなーという想定が全く通用しなくなる。
それはコードがわかりにくいということ。
0944デフォルトの名無しさん
2013/02/01(金) 18:54:57.370945デフォルトの名無しさん
2013/02/01(金) 18:56:35.52ことごとく糞である。
そのことを認められないので
嵐とかしてる。
0946デフォルトの名無しさん
2013/02/01(金) 19:00:18.40こういうことかい?
Sub A()
Dim objConnection As ADODB.connection
Set objConnection = New ADODB.connection
Call B(objConnection)
End Sub
Sub B(ByVal objConnection As ADODB.connection)
On Error Resume Next
Call C(objConnection)
If Err.Number <> 0 Then
Debug.Print Err.Description
End If
End Sub
Sub C(ByVal objConnection As ADODB.connection)
Call objConnection.Open
objConnectionを使った何かの処理
If objConnection.State <> adStateClosed Then
Call objConnection.Close
End If
End Sub
0947デフォルトの名無しさん
2013/02/01(金) 19:02:26.04うん、じゃあその非対称性が気になる問題はCにCloseを記述することで解決するな。
で、その階層をまたがるって話なんだけど、じつはVB.NETやC#ではこれは
見慣れたものだったりするだろ。ほれ、OpenとCloseの階層は異なっている。
msdn.microsoft.com/ja-jp/library/system.data.sqlclient.sqlconnection%28v=vs.80%29.aspx
つまり俺が示した>>792は例外処理のベストプラクティスといっていいわけ。はい論破。
0948デフォルトの名無しさん
2013/02/01(金) 19:03:55.79ベストプラクティスであるという根拠が示されていない。
0949デフォルトの名無しさん
2013/02/01(金) 19:05:37.41うんにゃ、すこし違う。Aで行われるのはあくまでFinallyの処理
なんでAではStateをチェックしてCloseを呼ぶようにしておく。
CではStateをチェックしないでCloseを呼ぶようにする。
0950デフォルトの名無しさん
2013/02/01(金) 19:06:05.47目を凝らしてどこにcloseが書いてあるか言ってみろ。
0951デフォルトの名無しさん
2013/02/01(金) 19:07:08.75はい、じゃあそのコードを書いてください。
お前のやり方は、どんどん複雑になりますねw
0952デフォルトの名無しさん
2013/02/01(金) 19:08:41.49俺が示した>>792はマイクロソフトが示した実装例のコードとシンクロする。
つまり>>792はマイクロソフトお墨付きの例外処理といっても過言ではないわけ。
お前らのちんけな頭で考えられた中身のともなわない空疎なものとはものが違うわけ。はい論破。
0953デフォルトの名無しさん
2013/02/01(金) 19:08:56.410954デフォルトの名無しさん
2013/02/01(金) 19:10:12.530955デフォルトの名無しさん
2013/02/01(金) 19:11:04.19は〜い、論破!w
0956デフォルトの名無しさん
2013/02/01(金) 19:14:23.98usingがfinallyになってdisposeが呼ばれてcloseが呼ばれるだろ。
openとcloseの階層が違うのは明らかなことだろ。>>947はopenとcloseの階層が
異なることを述べたわけ。はい論破。
>>951
何言ってんだお前。1行増えるだけだろ。
Sub A()
Dim objConnection As ADODB.connection
Set objConnection = New ADODB.connection
Call B(objConnection)
If objConnection.State <> adStateClosed Then
Call objConnection.Close
End If
End Sub
Sub B(ByVal objConnection As ADODB.connection)
On Error Resume Next
Call C(objConnection)
If Err.Number <> 0 Then
Debug.Print Err.Description
End If
End Sub
Sub C(ByVal objConnection As ADODB.connection)
Call objConnection.Open
Call objConnection.Close
End Sub
0957デフォルトの名無しさん
2013/02/01(金) 19:16:32.91俺ならこうやるな。
Sub A() 'コールスタックの一番上の場合。
On Error Goto ErrHandler
Call B()
Exit Sub
ErrHandler:
If Err.Number <> 0 Then
Debug.Print Err.Description
End If
End Sub
Sub B()
Call C()
End Sub
Sub C(ByVal objConnection As ADODB.connection)
On Error Goto ErrHandler
Dim objConnection As ADODB.connection ' オブジェクトは必要となる部分で作って解放
Set objConnection = New ADODB.connection
Call objConnection.Open
objConnectionを使った何かの処理
Exit Sub
ErrHandler:
Dim number As Integer: e = Err.Number
If Not objConnection Is Nothing Then
If objConnection.State <> adStateClosed Then
Call objConnection.Close
End If
End If
Err.Rase number
End Sub
0958957
2013/02/01(金) 19:19:18.73Sub A() 'コールスタックの一番上の場合。
On Error Goto ErrHandler
Call B()
Exit Sub
ErrHandler:
ErrLog(Err)
End Sub
Sub B()
Call C()
End Sub
Sub C(ByVal objConnection As ADODB.connection)
Dim myclass As MyClass
Set myclass = new MyClass '内部でデータベースへ接続。スコープから抜けるときにデータベース切断
myclass.foo() 'objConnectionを使った何かの処理
End Sub
0959957
2013/02/01(金) 19:20:05.92Sub A() 'コールスタックの一番上の場合。
On Error Goto ErrHandler
Call B()
Exit Sub
ErrHandler:
ErrLog(Err)
End Sub
Sub B()
Call C()
End Sub
Sub C()
Dim myclass As MyClass
Set myclass = new MyClass '内部でデータベースへ接続。スコープから抜けるときにデータベース切断
myclass.foo() 'objConnectionを使った何かの処理
End Sub
0960デフォルトの名無しさん
2013/02/01(金) 19:28:00.67汚いなぁ。
実際にやりたいことが例外処理コードに
埋もれてしまってるじゃないか。
0961デフォルトの名無しさん
2013/02/01(金) 19:29:58.21見た目はシンプルだけど、MyClassの実装はどうなってんの?
0962デフォルトの名無しさん
2013/02/01(金) 19:32:42.51Connectionを使って実際にやりたいことはCに書かれてる。
きれいに分離されてる。お前の目は節穴か?はい論破。
0963デフォルトの名無しさん
2013/02/01(金) 19:48:30.38> 見た目はシンプルだけど、MyClassの実装はどうなってんの?
private con As ADODB.connection
Private Sub Class_Initialize()
Set con = new ADODB.connection
con.Open
End Sub
Private Sub Class_Terminate()
If Not con Is Nothing Then
If con.State <> adStateClosed Then
con.Close
End If
End If
End Sub
Terminateの処理がわかりづらいと思うなら、ユーティリティ関数を作れば
DbClose(con) という風に一行で書ける。
聞かれたからコード書いたけど重要なのは
見なくていいコードは隠蔽し、見なければいけな本質的な処理を見えるようにすること
そういう点で>>792のようなコードはごちゃごちゃしてるといわれる。
0964デフォルトの名無しさん
2013/02/01(金) 19:53:15.25A = コールスタックの一番上 = ボタンのクリックとかのイベントハンドラ
全てに(汎用処理とはいえ)例外処理コードを書かないといけないってことだけど
今の自分なら、イベントハンドラと特定のクラスのメソッドを結びつけるクラスを作って
その間に例外処理を挟み込むことで、一つで汎用的な例外処理をかけそうな気がする。
0965デフォルトの名無しさん
2013/02/01(金) 19:58:16.97隠蔽してきれいになりましたというのは部屋中の散らかった生活物資を押入れに
しまいこんで、はいきれいといってるようなもの。俺のように整理整頓された>>792こそ
構造化プログラミングの真骨頂でありほんとうにきれいということができるコードだ。
なんならAとBを見なきゃいんだから。それはお前の努力しだいでなんとでもなる。
Openが例外を投げたときが気になるんだよなー。例外投げたけど、閉じてもないよという
ときがありそうでなんかやだ。はい論破。
0966デフォルトの名無しさん
2013/02/01(金) 19:58:51.82整理整頓されたという根拠が無い
やり直し。
0967デフォルトの名無しさん
2013/02/01(金) 20:00:34.21きれいに峻別されてるだろ、ここはFinallyだなー、ここはCatchだなー、
ここが処理の中核だなー。はい論破。
0968デフォルトの名無しさん
2013/02/01(金) 20:01:51.34> Openが例外を投げたときが気になるんだよなー。例外投げたけど、閉じてもないよという
そういうのも隠蔽することでシンプルに書ける
もとのコードはシンプルなままいられる。
それに対してお前のやり方はどうだ?
○○の場合は〜、○○の場合は〜、って
コードを本質的な処理に紛れ込ませていき、
どんどん複雑になるのが目に見えているではないか。
0969デフォルトの名無しさん
2013/02/01(金) 20:02:38.10> きれいに峻別されてるだろ、ここはFinallyだなー、ここはCatchだなー、
> ここが処理の中核だなー。はい論破。
では>>792のコードで示してください。
どこがFinallyでCatchで処理の中核ですか?
0970デフォルトの名無しさん
2013/02/01(金) 20:02:55.12水もったいないかあら水とめてからって思っても、
水止めるボタンは離れたところにありますとかどうよ。
0971デフォルトの名無しさん
2013/02/01(金) 20:09:46.19隠蔽すればいいて押入れに詰め込んどけばいいといってるようなもので
コードが増えることに変わりはないだろ。>>792はOpenが例外投げたときにも
対処されるように書かれているわけで、その点で俺のコードは優れてる。
俺が優でお前が劣。はい論破。
>>969
AがFinally
BがCatch
Cが処理
0972デフォルトの名無しさん
2013/02/01(金) 20:11:43.20それらに相当する関数Aとか関数Bとかできるわけさ。
そういうマヌケなことを言わなければ、関数Aとか関数Bも不要になって
>>963のコードはここまでシンプルになる
Sub main() 'コールスタックの一番上の場合。
On Error Goto ErrHandler
Dim myclass As MyClass
Set myclass = new MyClass '内部でデータベースへ接続。スコープから抜けるときにデータベース切断
myclass.foo() 'objConnectionを使った何かの処理
Exit Sub
ErrHandler:
ErrLog(Err)
End Sub
0973デフォルトの名無しさん
2013/02/01(金) 20:15:38.11finallyやcatchを無理やり真似ようとしてしまったからなわけだな。
例外処理のためだけに関数を二つも増やしてしまったわけか。
よくわかった。
0974デフォルトの名無しさん
2013/02/01(金) 20:21:25.32追加で処理C1とC2とC3が増えました。
A1、B1、A2、B2、A3、B3、が必要です。
処理は4つですが
関数は12個必要です。
恐ろしいw
メンテナンス性低すぎだろ。
0975デフォルトの名無しさん
2013/02/01(金) 20:21:35.74うん、A、Bは不要になるけどMyClassが必要になってるわけで、
記述する量が減りましたというわけじゃない。その隠蔽体質が問題だと
認識しています。はい論破。
0976デフォルトの名無しさん
2013/02/01(金) 20:24:19.40記述量は減ってるよ。
C1とC2とC3が増えた時のことを考えてみ。
MyClassならいくつ増えても
本質的な処理しか増えないけど
お前のやり方では例外処理までも増えていく。
0977デフォルトの名無しさん
2013/02/01(金) 20:29:06.45C1の例外とC2の例外をわけたいときもあるだろ。明確に区別される
俺の記述方がはるかに優れているってことになる。はい論破。
0978デフォルトの名無しさん
2013/02/01(金) 20:30:33.39おいおいオブジェクトは、複雑な事を、単純な事に置き換えるための仕組みだぞ...
0979デフォルトの名無しさん
2013/02/01(金) 20:31:53.63だからなんだよ、はい論破。
0980デフォルトの名無しさん
2013/02/01(金) 20:33:02.72馬鹿でも判るようにする仕組みだって事だよ...
0981デフォルトの名無しさん
2013/02/01(金) 20:43:47.470982デフォルトの名無しさん
2013/02/01(金) 20:45:52.12俺は標準モジュールでコネクションプーリングを実装してる。
0983デフォルトの名無しさん
2013/02/01(金) 20:50:59.57って言ってる馬鹿がいますねw
0984デフォルトの名無しさん
2013/02/01(金) 20:54:21.94負け宣言になってるが。
0985デフォルトの名無しさん
2013/02/01(金) 20:59:37.12それはどうとでもなるところだ。
C1とC2が増えると前提を置けば>>976が成立するし、
C1とC2が増えないと前提を置けば俺が言ってることが成立するし、それは
前提をどう置くかってことだけだから、話としてはつまんない。
何かこう斬新な例外処理とかないかな。はい論破。
>>984
なに勝利って?議論に勝ちも負けもないよ、そういうこというのって恥ずかしいだけだと思う。はい論破。
0986デフォルトの名無しさん
2013/02/01(金) 21:01:23.18例外処理まで増えるしか無いやり方のほうが負けだろう。
クラスに書いておけば、基本増えなくて、
必要があれば、違う例外処理も実行できるし。
0987デフォルトの名無しさん
2013/02/01(金) 21:02:23.250988デフォルトの名無しさん
2013/02/01(金) 21:02:26.2910年ぐらいの技術の差がありますね。
あ、もちろん論破くんのほうが下です。
0989デフォルトの名無しさん
2013/02/01(金) 21:03:21.84仲間になりたいのか?w
0990デフォルトの名無しさん
2013/02/01(金) 21:04:04.130991デフォルトの名無しさん
2013/02/01(金) 21:04:16.99> クラスに書いておけば、基本増えなくて、
> 必要があれば、違う例外処理も実行できるし。
話の流れからして、たぶん奴はそのことに気づいてないと思う・・・
0992デフォルトの名無しさん
2013/02/01(金) 21:04:27.42っていうしょうもない例から、よくこれだけ糞スレ展開したもんだ。
お前ら、例外処理したい範囲ぐらい絞ってtry-catchしろよ。
0993デフォルトの名無しさん
2013/02/01(金) 21:07:33.19関数二つ追加しちゃう
センスが無い人ですからw
0994デフォルトの名無しさん
2013/02/01(金) 21:09:21.14それはプロセッサオブジェクトを作ってその
メソッドをCの変わりに呼ぶこともできるわけで、
別にオブジェクト作るようなことになったら俺は首をくくるしかない
なんていう覚悟を持ってるわけじゃないんで、それはどうとでもなる。
例外処理としては対して違いがあるわけじゃない。ほかになんか知らない?はい論破。
0995デフォルトの名無しさん
2013/02/01(金) 21:10:02.22更に複雑にする気かw
0996デフォルトの名無しさん
2013/02/01(金) 21:11:18.83オレオレ用語出て来ましたよ。
ああいう人ならこんなこと言ってしまう
的な展開ですねw
0997デフォルトの名無しさん
2013/02/01(金) 21:11:43.67tryとかcatch以前にthrowしろよ...
0998デフォルトの名無しさん
2013/02/01(金) 21:12:27.690999デフォルトの名無しさん
2013/02/01(金) 21:13:43.45/ \
/ ⌒ ⌒ \ 論破くん必死だなー
/ (●) (●) \
| 、" ゙)(__人__)" ) ___________
\ 。` ⌒゚:j´ ,/ j゙~~| | | |
__/ \ |__| | | |
| | / , \n|| | | |
| | / / r. ( こ) | | |
| | | ⌒ ーnnn |\ (⊆ソ .|_|___________|
 ̄ \__、("二) ̄ ̄ ̄ ̄ ̄l二二l二二 _|_|__|_
1000デフォルトの名無しさん
2013/02/01(金) 21:14:24.79オレオレだけど、わかるだろ。わからなかったらただのバカ。
オレオレだからというだけで叩こうとしたお前はスーパーバカ。
スーパーバカというのは俺が作った言葉だからお前には理解できない。はい論破。
だれか次スレ建てて。俺レベル低いから無理。
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。