VBプログラマ質問スレ(Ver.6.0 まで) part61
____
/ \
/ ⌒ ⌒ \ 論破くん↓必死だなー
/ (●) (●) \
| 、" ゙)(__人__)" ) ___________
\ 。` ⌒゚:j´ ,/ j゙~~| | | |
__/ \ |__| | | |
| | / , \n|| | | |
| | / / r. ( こ) | | |
| | | ⌒ ーnnn |\ (⊆ソ .|_|___________|
 ̄ \__、("二) ̄ ̄ ̄ ̄ ̄l二二l二二 _|_|__|_
構造化例外処理ならこうだろ。 AがFinally、BがCatch、Cが処理
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
End Sub
前スレ VBプログラマ質問スレ(Ver.6.0 まで) part60
http://toro.2ch.net/test/read.cgi/tech/1351327234/
>>1 スレ立てこんなんじゃ全然ダメw
構造化例外処理をなんで
>>1 書くかな。
普通、テンプレだろ。
>>5 もう終わった言語で
これだけ伸びてるんだ。
論破くんはいいおもちゃじゃないか。
このスレまるまる晒しあげして遊ぼうよw
>>6 目くそ鼻くその言い合いは見苦しい。
スレ立てもまともにできないんじゃ、コードもまともに書けないだろ。
ま、力抜けってことだ。
8 :
デフォルトの名無しさん :2013/02/01(金) 22:08:29.13
>>1 おつ。
>>5 模範となるものだからに決まってるだろ。前スレの
>>792 は手本として
掲載されるだけの価値があるものだという結論が前スレで出たに近いだろ。
大勢の技術者が議論して
>>792 は構造化プログラミングの王道を行くもので
構造化プログラミングの真髄を示す優れたコードだと結論付けられたような
ものだったろ。忘れたのか?思い出せ。
9 :
7 :2013/02/01(金) 22:13:46.14
>>6 それと、プログラムって言い争うためのものじゃないし。
そこそこやりあうのはわかるけど、とっくに限度超えてるよ。
10 :
デフォルトの名無しさん :2013/02/01(金) 22:14:09.08
久しぶりにカーネルのバージョンが上がる次のWindows 9(Windows Bllue)では VB6のランタイムがサポートされなくなることは、マイクロソフティーの間では周知の事実になっている。 そんな将来の無い、今年で終わりを告げる言語のスレで、論破を連呼するロンパールーム世代のIT土方構成員。 ドナドナドナ~♪ 論破の雄叫びも、IT土方再下層の最悪の労働環境からの叫びにしか聞こえない。
_,,,...:-‐‐=-.'.:,丶 . ,r'";; ;; ;;\,,....., ,,r'";; ;; ;,,, ;;; , ;;; ;;;,`'::,、 ................. ,:r';;; ;; ,;;; ;; ;; ;; ;;; ,;; `':,、 ........::::::;;;;;;;;;;;;;;;:::::::......... ,r'";;;,, ,,;; ,,;;;, ,,,, ; ;; ;; ,, ;;, ;;`';;、_:::::::::::::::;;:'' ''';;;::::::::::::::: ;;; ,,,;;; ;,,,;;; ;; ;,,, - '''' ''';‐-,, ,, ,,、,,, ;;`';;、_:::;;;'' '';;- ''"" , ,,,,,,;;;;; ...,, -‐- ,... ...--‐‐''''" ( ´-`) ある晴れた 昼さがり | つつ /l/l ______ヽ ヽ\\__ 〆 ´`\ |――――――|匚JJヽ>ー|-|--‐メ、゚_゚) |――――――|ロ匚ニニニニコ .〈コ | / ニヽ―/ =ヽ 〉// ̄`ー、ヽヽ ヽ゚ノ  ̄ ヽ ゚ノ 〈/ ヽ〉 〈/.ヽ〉 荷馬車が ゴトゴト ,~~ 、,, _ ー!⌒ー / ____/ ヽ ゝ -ノっ  ̄ ̄ヽ / ̄^ヽっ /,, , '| ___ ▲ _| ` ;;__ヽ__/_ > | ||| | /J ____ |_┌┐,,|___ | (oo丿 , |―――――| | || ――ー-' _ _ _ - - |―ヽヽ /__.|―――――|ニニニ」ヽ/ヽヽ/ ー ー ― _ .|― し' J |/ ニヽ―/ =ヽ |ゝ ∩ 7ゝ ―‐- ー-  ̄ヽニ ̄ ̄ヽヽ゚ノ ̄ヽ ゚ ノ ,,,,,,,,,, , ,,,, ,,, ,,,, ール'' ,, ,,,,, ,, ̄  ̄ ,,,77''''''7'''''''
_,..-――-:..、 ⌒⌒ /.:;;;;;;;;;;;;;;;;;;;;;::.\ ^^ / .::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::..ヽ ドナドナドーナードーナー __AーA _,ィ´▼⊂ ・ ・⊃ .... .. .. ' {●.▲ヽ(_⌒) .. ... ........ ... .. .... .. :::: :: .,' i――――――i ':, :: :::: :::: :::::::: :::: ;; ;; :," |______| `:, :;;; ;;;;;; ;;; ;;;; w ,.' i,,i ;;;;;;;;;;;;;;;;;;;; i,,i;;:.. ゙v w゙゙w゙w゙゙w ",i ,;'' :::::::::::::::::::::::';,::::::... ヾ、 w vw w ./ ,;;:´ :::::::::::::::::::::':;;,::::::::.. i,'、 ww w
13 :
デフォルトの名無しさん :2013/02/01(金) 22:27:28.10
ドナドナドナ~♪が論破論破論破~♪に聞こえるwww
15 :
デフォルトの名無しさん :2013/02/01(金) 23:11:02.12
お前ら人格攻撃は手馴れてるけど技術的な話になるととたんに雑魚になるよな。 前スレでJava 7のtryステートメントが出てたけどあれをVBでやるならこうだからな。 Sub Try(ByVal objCloseable) Call Process(objCloseable) Call objCloseable.Close() End Sub Sub Process(ByVal objCloseable) On Error Resume Next Call objCloseable.Process() If Err.Number <> 0 Then End If End Sub Class Closeable Public Sub Process() End Sub Public Sub Close() End Sub End Class Sub Main() Call Try(New Closeable) End Sub
17 :
デフォルトの名無しさん :2013/02/02(土) 00:24:58.01
>>16 お前はそれよりスマートなコード書けんの?無理だろ。
なぜなら
>>15 はこれ以上ないほどに洗練されてるから。
俺ははからずもVBの限界を示したといっても過言ではない。
>>15 はVBの限界。はい論破。
1.まずJava7で加えられたjava7 try-with-resources(リソースの自動機能)は
どんな機能なのか
>>17 に説明してもらう。
2.その上で、
>>15 はそれを満たしているのかい?と質問する。
これだけで
>>17 は自滅すると思う。
じゃ後はよろしく。
19 :
デフォルトの名無しさん :2013/02/02(土) 00:56:27.81
>>18 お前は論破されるのがこわいからできないってわけ。その時点で論破されてるな。はい論破。
ここで言い合っている奴らが話の内容はどうであれネット弁慶であることは分かった。 申し訳ないが死ぬまでROMってろください。
>>15 Classを使っているのに、InitializeもTerminateも無い時点で(プログラマとして)終了してる
_,..-――-:..、 ⌒⌒ /.:;;;;;;;;;;;;;;;;;;;;;::.\ ^^ / .::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::..ヽ ドナドナドーナードーナー __AーA 論破論破論破~♪ _,ィ´▼⊂ ・ ・⊃ .... .. .. ' {●.▲ヽ(_⌒) .. ... ........ ... .. .... .. :::: :: .,' i――――――i ':, :: :::: :::: :::::::: :::: ;; ;; :," |______| `:, :;;; ;;;;;; ;;; ;;;; w ,.' i,,i ;;;;;;;;;;;;;;;;;;;; i,,i;;:.. ゙v w゙゙w゙w゙゙w ",i ,;'' :::::::::::::::::::::::';,::::::... ヾ、 w vw w ./ ,;;:´ :::::::::::::::::::::':;;,::::::::.. i,'、 ww w
25 :
デフォルトの名無しさん :2013/02/02(土) 10:43:23.77
>>15 よりスマートなコードを提示できなかった
>>16 は敗北者決定な。はいタイムリミット論破。
>>23 必要なら作ればいいだけであり必要ないからないわけであり、必要ないものであるにもかかわらず
それがないことを気にするお前は凝り固まった既成概念にとらわれたステレオタイプの石頭。
VBではコンストラクタが引数をとることができないからClass_InitializeもClass_Terminateも
実装しないのが常識。はい論破。
26 :
デフォルトの名無しさん :2013/02/02(土) 10:45:42.79
お前ら文句はいっちょまえに言うけど誰一人俺のコードを超える ことができないな。大勝利すぎてうれしいです。はい論破。
_,..-――-:..、 ⌒⌒ /.:;;;;;;;;;;;;;;;;;;;;;::.\ ^^ / .::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::..ヽ ドナドナドーナードーナー __AーA 論破論破論破~♪ _,ィ´▼⊂ ・ ・⊃ .... .. .. ' {●.▲ヽ(_⌒) .. ... ........ ... .. .... .. :::: :: .,' i――――――i ':, :: :::: :::: :::::::: :::: ;; ;; :," |______| `:, :;;; ;;;;;; ;;; ;;;; w ,.' i,,i ;;;;;;;;;;;;;;;;;;;; i,,i;;:.. ゙v w゙゙w゙w゙゙w ",i ,;'' :::::::::::::::::::::::';,::::::... ヾ、 w vw w ./ ,;;:´ :::::::::::::::::::::':;;,::::::::.. i,'、 ww w
>>25 どんな立派な言い訳をしても、
>>15 のコードにデストラクタが無いのは致命的
29 :
デフォルトの名無しさん :2013/02/02(土) 11:07:30.19
>>28 デストラクタはJavaにもない。Java 7のすぐれたtryステートメント
を模倣した
>>15 にデストラクタがないのはきわめて自然なことであり、
>>15 はデストラクタが必要ないことを示す有益なコードでもある。致命的なのはお前の頭。はい論破。
_,..-――-:..、 ⌒⌒ /.:;;;;;;;;;;;;;;;;;;;;;::.\ ^^ / .::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::..ヽ ドナドナドーナードーナー __AーA 論破論破論破~♪ _,ィ´▼⊂ ・ ・⊃ .... .. .. ' {●.▲ヽ(_⌒) .. ... ........ ... .. .... .. :::: :: .,' i――――――i ':, :: :::: :::: :::::::: :::: ;; ;; :," |______| `:, :;;; ;;;;;; ;;; ;;;; w ,.' i,,i ;;;;;;;;;;;;;;;;;;;; i,,i;;:.. ゙v w゙゙w゙w゙゙w ",i ,;'' :::::::::::::::::::::::';,::::::... ヾ、 w vw w ./ ,;;:´ :::::::::::::::::::::':;;,::::::::.. i,'、 ww w
>>29 「デストラクタと言う機構はJavaには無い」の間違い
>>15 のコードの駄目なところ
まず、Closeメソッドは必要ない
次に、オブジェクトをByValで渡してはならない
33 :
デフォルトの名無しさん :2013/02/02(土) 11:35:22.73
>>31 CloseがなければCloseableにならない。CloseableはCloseを
呼ぶからこそCloseableなのであり、それこそがJava 7のtryステートメント
の本質。アリクイがアリを食わなかったらアリクイじゃないだろ。アリクイは
アリを食うからアリクイなんだ。
馬鹿かお前。アリクイさんに耳から下を挿入されて頭の中身ぺろぺろされでもしたのか?
ByValでオブジェクトを渡してはいけないなんてそんなものはない。まったくない。アリクイさんに誓ってない。はい論破。
>>33 Closeを明示的に呼び出す必要は無い、VBにはCloseを明示的に呼び出さなくても良い仕組みがある
ByValで渡す物が何であるかを考えれば、ByValでオブジェクトを渡してはいけない事は自明
>>34 Closeはtry関数によって完全に隠蔽されているわけであり、
Closeが隠蔽されたところで呼ばれるということにtryステートメントの本質がある。
お前はアリクイに対してモグラを食べればいいじゃないといっているようなもので
物事の本質を理解していない。アリクイがモグラを食べたらアリクイじゃなくなる。
Closeを呼ばなくなった時点でCloseableじゃないしJavaのベストプラクティスから逸脱した
ワーストプラクティスに成り下がる。ByValが否定される要素などいっさいないがそれを
自明と言いきったお前の頭がイカれていることが自明。はい論破。
_,..-――-:..、 ⌒⌒ /.:;;;;;;;;;;;;;;;;;;;;;::.\ ^^ / .::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::..ヽ ドナドナドーナードーナー __AーA 論破論破論破~♪ _,ィ´▼⊂ ・ ・⊃ .... .. .. ' {●.▲ヽ(_⌒) .. ... ........ ... .. .... .. :::: :: .,' i――――――i ':, :: :::: :::: :::::::: :::: ;; ;; :," |______| `:, :;;; ;;;;;; ;;; ;;;; w ,.' i,,i ;;;;;;;;;;;;;;;;;;;; i,,i;;:.. ゙v w゙゙w゙w゙゙w ",i ,;'' :::::::::::::::::::::::';,::::::... ヾ、 w vw w ./ ,;;:´ :::::::::::::::::::::':;;,::::::::.. i,'、 ww w
論破できてないとしてもバカではにと思うけどね まあ、リアルに会って話すと相手の目を見て話さないタイプだとは思うがw
>>35 オブジェクトの場合、ByValで渡そうが、ByRefで渡そうが、結果は同じだが...
>>15 のコードで、Closeすることに疑問を持たないのは...
>オブジェクトの場合、ByValで渡そうが、ByRefで渡そうが、結果は同じ ちょっと違う
論破くんはJavaも知らないんだね。
論破くんが見てて哀れだから もうそろそろヒントあげようか? インターフェース
>>39 へ?賛同してくれてんの?結果は同じだがテンテンテンの意味がわかんない。
俺はByValでオブジェクトを渡してはいけないということを否定する立場だから
同じ意見なんだろうけど、結果が同じだからByRefでもいいというのなら
お前はアリクイさんに蹴られてしかるべきだ。VBではByValが基本だ。
必要なときのみByRefにするべきであってByValが基本だ。
Closeすることに疑問をもってどうすんだよ。アリクイがアリを食べてることに
疑問をもてといってるようなものだろうが。アリクイの生態を調べる生態学者
ならそれでもいいだろうが、俺はプログラマだ。はい論破。
>>41 知ってるよお前より存分に存じ上げている。もしJavaがアリクイだったとしたら
Javaもお前より俺になつくだろうな。はい論破。
_,..-――-:..、 ⌒⌒ /.:;;;;;;;;;;;;;;;;;;;;;::.\ ^^ / .::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::..ヽ ドナドナドーナードーナー __AーA 論破論破論破~♪ _,ィ´▼⊂ ・ ・⊃ .... .. .. ' {●.▲ヽ(_⌒) .. ... ........ ... .. .... .. :::: :: .,' i――――――i ':, :: :::: :::: :::::::: :::: ;; ;; :," |______| `:, :;;; ;;;;;; ;;; ;;;; w ,.' i,,i ;;;;;;;;;;;;;;;;;;;; i,,i;;:.. ゙v w゙゙w゙w゙゙w ",i ,;'' :::::::::::::::::::::::';,::::::... ヾ、 w vw w ./ ,;;:´ :::::::::::::::::::::':;;,::::::::.. i,'、 ww w
>>42 お前が知ってる言葉を言っただけだろ。ふーん。はい論破。
>VBではByValが基本だ。必要なときのみByRefにするべきであってByValが基本だ。 これ、逆だよね?基本ならデフォにするはずだし。意外とバカかもw
どちらにせよ基本とか言ってる時点でアウトだろ?
オブジェクトのByRef渡しの実験 Sub Test1 Dim a As Integer, b As Class1 a = 1 Set b = New Class1 Call Test1a(a, b) Debug.Print a, obj Is Nothing Call Test1b(a, b) Debug.Print a, obj Is Nothing Test1c(obj) Debug.Print obj Is Nothing Test1c obj Debug.Print obj Is Nothing End Sub Sub Test1a(ByVal n As Integer, ByVal obj As Class1) n = 0 Set obj = New Class1 End Sub Sub Test1b(ByRef n As Integer, ByRef obj As Class1) n = 0 Set obj = New Class1 End Sub Sub Test1c(ByRef obj As Class1) Set obj = new Class1 End Sub
>>47 デフォじゃないから基本じゃないとでも思ってんの?俺はプログラマが実装する上での
基本を述べたわけであり、なんの考えも持たず言語仕様的な事柄を述べることしか
できないお前のようなすっからかんとはわけが違う。バカはお前。はい論破。
_,..-――-:..、 ⌒⌒ /.:;;;;;;;;;;;;;;;;;;;;;::.\ ^^ / .::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::..ヽ ドナドナドーナードーナー __AーA 論破論破論破~♪ _,ィ´▼⊂ ・ ・⊃ .... .. .. ' {●.▲ヽ(_⌒) .. ... ........ ... .. .... .. :::: :: .,' i――――――i ':, :: :::: :::: :::::::: :::: ;; ;; :," |______| `:, :;;; ;;;;;; ;;; ;;;; w ,.' i,,i ;;;;;;;;;;;;;;;;;;;; i,,i;;:.. ゙v w゙゙w゙w゙゙w ",i ,;'' :::::::::::::::::::::::';,::::::... ヾ、 w vw w ./ ,;;:´ :::::::::::::::::::::':;;,::::::::.. i,'、 ww w
>俺はプログラマが実装する上での基本を述べたわけ それってプログラマじゃなくてお前の独断と偏見ってやつじゃん
>>48 何が?え?何がアウト?プログラマならプログラムを実装する上でやるべき
好ましい事柄くらい把握しておくべきでありそれを基本と述べた俺をお前のような
でくのぼうは目標にするべきだ。はい論破。
54 :
デフォルトの名無しさん :2013/02/02(土) 12:20:41.68
言語仕様上のデフォを基本と考えるか 論破できていない事を論破と言い切るアフォの言う事を基本と考えるか 自ずと答えは出ている罠(笑)
オレオレ基本の話しなら、チラシの裏にでも書いておけばいいのに…
>>52 お前のがらんどうの頭で考えた考えなしの考えだったらそれはお前の偏見でしかないが
俺の優れて明晰な頭脳によって導き出され、しかもそれが一般的であり良識であると
十分に推量されるわけであるから、俺の考えはプログラマの一般常識であり、良識である。はい論破。
良識としての推量だって? ヲイヲイ、話が逆になってないかい? 冷静になれよリアル貧乏君
俺の考えはプログラマの一般常識であり、良識である。 俺の考えはプログラマの一般常識であり、良識である。 俺の考えはプログラマの一般常識であり、良識である。 俺の考えはプログラマの一般常識であり、良識である。 俺の考えはプログラマの一般常識であり、良識である。 俺の考えはプログラマの一般常識であり、良識である。 俺の考えはプログラマの一般常識であり、良識である。 俺の考えはプログラマの一般常識であり、良識である。 俺の考えはプログラマの一般常識であり、良識である。 俺の考えはプログラマの一般常識であり、良識である。 俺の考えはプログラマの一般常識であり、良識である。 俺の考えはプログラマの一般常識であり、良識である。 俺の考えはプログラマの一般常識であり、良識である。 俺の考えはプログラマの一般常識であり、良識である。 俺の考えはプログラマの一般常識であり、良識である。 俺の考えはプログラマの一般常識であり、良識である。 俺の考えはプログラマの一般常識であり、良識である。 俺の考えはプログラマの一般常識であり、良識である。 俺の考えはプログラマの一般常識であり、良識である。 俺の考えはプログラマの一般常識であり、良識である。 俺の考えはプログラマの一般常識であり、良識である。 俺の考えはプログラマの一般常識であり、良識である。 俺の考えはプログラマの一般常識であり、良識である。 俺の考えはプログラマの一般常識であり、良識である。 俺の考えはプログラマの一般常識であり、良識である。 俺の考えはプログラマの一般常識であり、良識である。 俺の考えはプログラマの一般常識であり、良識である。 俺の考えはプログラマの一般常識であり、良識である。 俺の考えはプログラマの一般常識であり、良識である。 単に病気であることが判明wwww
>>54 お前は基本の言葉の意味を取り違えているだけ。流れを読んで基本というのは
どういう意味での基本なのかなと前提の方を定義し直すようにしないとわざとかどうかは
知らないけどお前のように物事を曲解することになる。普通の人は大学や会社で
議論の場というのを経験するから問題ないのだけれど、お前のような低学歴は苦労するだろうな。はい論破。
60 :
デフォルトの名無しさん :2013/02/02(土) 12:26:33.91
論破以前に国語力がないじゃんこの人?
>>57 >>58 お前らのようにコード示せない分際で人格攻撃しかできないやつって情けないと思う。俺はそんなお前らをみてせつなくなる。お前らの親がな。はい論破。
>>60 えー?どこがー?具体的に言ってー?そんな印象的なことしか言えないんだったら、はい論破。
>>55 それって結局さお前が俺に論破されたからそれへの反発で
オレオレというレッテルを貼って拒絶してるだけで、俺の考えが
一般的であり良識的であることはわかってるだろ。そういう態度ってとても恥ずかしいことだと思います。はい論破。
デフォルトがByRefなのは 単に互換性のためだよ。 古いBASICでは関数はなかったサブルーチンだった。 変数はグローバル変数だった。 だから関数の呼び出し先で変更した値は 当然戻ってからも変わっていた。
今日も論破くんは元気だ。はい論破
論破君にも色々なタイプがあるけど これほどまでにコミュニケーション能力に欠ける論破君はあまり見ない 論破の文字が色あせるのはそのせい?
風邪で首の周りが腫れているんだよね。それリンパ
性能はいいけど値段は安い。それコスパ
69 :
デフォルトの名無しさん :2013/02/02(土) 12:48:56.25
せめて明らかな間違いくらいは認めないとね 論破くん以前に人間としてな
/ ヽ/ ,, / ___ | __ ヾ /' ,,ヘ | / ...:::´::::::::::`:::::ゝ:::/ / ヽ ヾ /' //⌒ ヾ::::| ど ∠_____ /\::::::::::::::ヽi~ヾ/ '⌒\\ // ヾ/~i / / ~ヽ_::::::::::::ヽ _\\ / ノ / _ / / / ⌒ ヽ ~~‐-、::::::ヽ ヽ (´ 。`iヽ/lllヾノi´。 `) / /\ / / _/^`ヽ ゝ:::::::| | `  ̄´ /`^ \ `  ̄ ´ | ノ ` ̄`ヽ ∠ / /⌒ i i\_ ,、/:::::::::ヽ i ,,.__,.,.-' ヾ /' `-,.,.__,,, ノ / ど ∠__ / ノ´ ミ i i" ⌒ヽ::::::::::::::ヽ\ /(` ´)ヽ / / / / /ミ / i i |:::::::::::::::::ゝ |ヽ /|||ヽ_/||||ヽ ノ |ノi /" / / ( ヽ | i´ `i | ヾi:::::::::::::::::::::::| /|||/゛゛,゛゙'ヾ|||ヽ |:::::ゝ / < | ゝ ヽ(´⌒` ) ,、 ノゝ,_::::::::::::::::::| |||/`'´ ̄`´ヽ||| |::ノ / \ | (´ \ ヽ,_,ノ( (/ i::::/~‐-_| | ||^i,⌒Y⌒'i^i||| | |⌒ ん \ | \ ヽ,,_,,ノ / ̄ ヽ( || || ,i | i, i|| | | \ \ ヽ,,__ノ / | ゝヽヽ、,_,、/^/,,ノ | ___\ ヽ、 ___,,/ ヽ'' \ _,,_ノ ノ \  ̄ ヽ \  ̄`` / ぱ __\ \ \ `ヾ、 /
>>69 何も間違ってないにのに間違いを認めろというお前の頭が間違っている。はい論破。
>>64 へーへーへー。
わかったかお前ら。ByRefは互換性のためにあるんだ。
現代的VBプログラマーの心得としてはByValが基本だ。
100ぺん復唱しろ。はい論破。
>>43 駄目だな...お前センス無いよ...
値渡しと参照渡しの区別すら付いてないようだな...
VB6系では、オブジェクトの値渡しは出来ないんだよ
>>73 試してみた?できただろ。じゃあお前が間違ってるんだ。はい論破。
>>74 だから、VB6系では、オブジェクトの値渡しは出来ないんだよ
値渡しが出来ているなら、
>>15 のコードは動かないんだよ...残念ながらね...
ダイナマイトでどっか~ん。それ発破。
>>75 意味がわからないんだけど、
VB6はオブジェクトの値渡しができない。
値渡しができるなら
>>15 のコードは動かない。
>>15 のコードはVB6。値渡しができない。
ゆえに
>>15 のコードは動く?そういうこと?
Javaもオブジェクトの値渡しができない。それ立派
>>77 「
>>15 のコードは、VB6だから、意図通りに動作する」が正しい
値渡しが出来るなら「
>>15 のコードは、絶対に意図通りには動作しない」
>>79 ByValは値渡しではないと思ってるわけ?
どういうのが値渡しだと思ってるわけ?そこんとこ教えてよ。はい論破。
今、値渡しの本当の定義を調べています。しばらくお待ちください。もう少ししたら何くわぬ顔で話をねじ曲げます。
>>80 ByValは値渡しだが
オブジェクトに関して言えば、値渡しにはなっていない
それが理解できないというのは、プログラマとしてのセンスが無い
論破くんは、ByValは値渡しのはずなのに呼び出し先でオブジェクトの中身が変更できるという事実に混乱しています。 さて論破くんがこの矛盾の理由を理解できるのはいつになるでしょうか?
論破くん「あーそれ? 知ってた知ってた。で?」
>>82 どういうのが値渡しだと思ってんの?はい論破。
>>83 参照型だからだろ。俺が聞いてんのはどういうのが値渡しだと思ってるのかってこと。はい論破。
どうやら勉強してきたようです。さて話を元に戻しましょうか?
>>85 > 値渡しが出来ているなら、
>>15 のコードは動かないんだよ...残念ながらね...
どうです? この意味、理解出来ましたか?
>>86 あのまだ答えてもらってないんだけど、どういうのが値渡しだと思ってんの?
俺はByValが値渡しだと思ってる。お前は何が値渡しだと思ってんの?
論破くんより構ってくんだろコイツ!www リアルじゃ友だちの一人もいないそうだから じっくり構ってやれよおまいらwww
>>87 答えも何も、お前俺に質問してないじゃないか。
文句言う相手間違ってるぞ。はい論破w
>>85 値渡しってのは、値のコピーを渡す事だろ、世間一般普通に考えて
そして、VB6系のオブジェクトは値渡しは出来ない
オブジェクト型は全て参照型だから、値渡しは参照のコピーを渡すので云々と言うのであれば、プログラマとしてのセンスがまるで無い
> 82 名前:デフォルトの名無しさん [sage]: 2013/02/02(土) 13:19:17.79
>
>>80 > ByValは値渡しだが
> オブジェクトに関して言えば、値渡しにはなっていない
>
> それが理解できないというのは、プログラマとしてのセンスが無い
参照型だから値渡しじゃないとでも思ってたのかな。痛いやつがいたもんだな。インドリみたいだ。
インドリと名付けることにしよう。
Cで言うポインタ渡しのようなもんだろ 値渡しと参照渡しの中間だよ
>>93 アドレスの値渡しな。中間じゃなくて明確に値渡しだ。はい論破。
最初っから「”オブジェクト”の値渡しができない」って 書いてあるんだが? それを見落とした論破くんがおかしい。
オブジェクトの参照の値渡しであり オブジェクトの参照渡しだよ
いんどりじゃないから、黙る必要はない。はい論破返し
>>96 言語センスそのものが、まるで無いな...
>>97 参照型の値渡しを参照渡しと呼んだら
参照型の値渡しと参照型の参照渡しの区別ができない。
ByValは値渡し、ByRefは参照渡しで区別するべきだ。
>>49 はそのことを明確に示してるわけ。お前の目は肛門か?はい論破。
値渡し、参照渡し、という用語自体が唾棄すべきものなんだよ そこに気付かない時点でオワットル
はい論破を付けないと自己主張に自信を持てないらしいからw
>>100 どっちの意味って?
さすが、言語センスが無いだけあるな...
目が肛門って * * く O こんなイメージで書いたのだと思う。はい論破擁護。
>>102 どういう言い方をするのがいいと思う?
Variable Referenceで参照変数といってしまったら
参照(型の)変数と読めてしまうから、俺は参照渡しを変数の参照と呼ぶべきだと思う。
値渡しはふつうに変数でいいだろ。たいして違いないから。どうよ?いいだろ?はい論破。
よくない。はい論破返し
>>107 特に用語を使わないのが良い
誤解を含む用語を使う方が混乱するわ
110 :
デフォルトの名無しさん :2013/02/02(土) 14:20:45.04
人前でも紙面の娘と話をしているとなると統合失調症の可能性が…
>>109 それもありだな。うん、その考えはわかる。はい論破。
論破君が自分が論破された事を認めたw
馬鹿のお前がわかるわけがない。はい論破返し
変数が持っているのはオブジェクトへの参照
そもそも、「オブジェクトの値」なぞもってない
値渡しか参照渡しかは変数がもっているものをどう渡すか
持ってないものは渡せない
はい論破
>>91 にプログラムのセンスがないことは論をまたない
>>114 >>15 を見るに...
Sub Main()
Call Try(New Closeable)
End Sub
オブジェクトへの参照ねぇ...
プログラミングにセンス云々なら分かるが プログラムには特徴こそあれセンスはない まずは国語からお勉強してね
値渡し、参照渡し、という用語を使ってる時点でセンスが無い
前レスから遡って読んでみたけどなかなか面白いよこの論破くんw たぶん学生さんだと思うけどね 就職浪人?
もう10年も前に終わったVB6でこんなに盛り上がれるなんてすごいな。たとえて言うなら絶滅してしまった 動物の保護について熱く語り合っているって感じかな?
>>119 いまだに開発案件はあるから、死んではないよ。
採用してること自体あれだけどw
基本Cコンパイラなんで.netでカバーできない分野で使えるからね。
古いVB6のソフトの保守のために VB6を使わざるを得ない事があるからなあ
論破くんを煽っているやつは、論破くんとやってることは大して変わってないことを理解してない。 論破くんと同じで見苦しい。
なんでこんなスレが勢いトップ・・・?
スレ始めから炎上したから
たぶん前スレで途中までOn Error Resume Nextを使うなって意見が多かったところに、 俺が、むしろOn Error Gotoを使うスパゲティーコードよりOn Error Resume Nextを使った方が 今時の構造化例外構文に近い書き方ができるんだって言ったのが事の始まり。 俺は今はVB6全然使ってないし、議論が荒れてきたので途中からまったくフォローしてないが。
>>126 お前は関係ない。On Error Gotoでスパゲティになると思いこんでるそんな
低レベルな話とはもはや次元が違う。俺がVBの例外処理のベストプラクティスを
示したことにお前の力は一切借りていないし、お前はナポリタンがどうして
赤いのか沈思黙考してればいい。お前レベルのやつがフォローできると思ったら大間違いだ。はい論破。
_,..-――-:..、 ⌒⌒ /.:;;;;;;;;;;;;;;;;;;;;;::.\ ^^ / .::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::..ヽ ドナドナドーナードーナー __AーA 論破論破論破~♪ _,ィ´▼⊂ ・ ・⊃ .... .. .. ' {●.▲ヽ(_⌒) .. ... ........ ... .. .... .. :::: :: .,' i――――――i ':, :: :::: :::: :::::::: :::: ;; ;; :," |______| `:, :;;; ;;;;;; ;;; ;;;; w ,.' i,,i ;;;;;;;;;;;;;;;;;;;; i,,i;;:.. ゙v w゙゙w゙w゙゙w ",i ,;'' :::::::::::::::::::::::';,::::::... ヾ、 w vw w ./ ,;;:´ :::::::::::::::::::::':;;,::::::::.. i,'、 ww w
129 :
デフォルトの名無しさん :2013/02/02(土) 16:58:33.92
目が肛門 * * く o
VBのリソース管理は
>>15 が結論ということでいいな。異論ないだろ。これより優れたコードないだろ。
VBの限界を示した
>>15 がリミットオブVBということでいいな。はい論破。
なぜれがリソース管理に?肝心な部分が抜けてるわw
132 :
デフォルトの名無しさん :2013/02/02(土) 17:08:08.96
Javaもよく知らんらしいし無理もなかろう
>>131 は?何いってんだお前。Java 7のThe try-with-resources StatementをVBで
実装してみせたんだからリソース管理に決まってんだろ、それくらいわかれよイワシ頭。はい論破。
ドナドナドナ~♪ 目が肛門♪ * * く o
リソース管理にはなってないけど
今日は雑魚しかいなくて張り合いがない。値渡しがオブジェクトをコピーすることだと 思ってたインドリ野郎しかいねえ。はい論破。
お前らそんな元気あんなら.Netやろうぜ C#な
参照の値渡しを値渡しと思ってる奴がいるって聞いてやってきましたw
>>136 他の言語なら新人さんかな?なんて思いながら見てるけどここVB6じゃん?
彼の将来がちょっと心配だわ
>>138 値渡しなんだから値渡しだ。当たりきシャリキ、ケツの穴ブリキのトートロジー。
CもJavaも値渡ししかできない。はい論破。
_,..-――-:..、 ⌒⌒ /.:;;;;;;;;;;;;;;;;;;;;;::.\ ^^ / .::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::..ヽ ドナドナドーナードーナー __AーA 論破論破論破~♪ _,ィ´▼⊂ ・ ・⊃ .... .. .. ' {●.▲ヽ(_⌒) .. ... ........ ... .. .... .. :::: :: .,' i――――――i ':, :: :::: :::: :::::::: :::: ;; ;; :," |______| `:, :;;; ;;;;;; ;;; ;;;; w ,.' i,,i ;;;;;;;;;;;;;;;;;;;; i,,i;;:.. ゙v w゙゙w゙w゙゙w ",i ,;'' :::::::::::::::::::::::';,::::::... ヾ、 w vw w ./ ,;;:´ :::::::::::::::::::::':;;,::::::::.. i,'、 ww w
寝て起きたら100もレスが増えててワロタ
まともな生活しろ
>>141 じゃあVB6のユーザ定義型は値渡しか参照渡しか答えなさい。はい論破
はい論破が根付いたな
>>148 お前は語尾に論破が付いてないから根付いていない。はい論破
みどり先生が出てた奴だな
アラレちゃん?
論破部屋
>>147 ByValが値渡しでByRefが参照渡し。
VB6のユーザ定義型といったらTypeだろ。
クラスもユーザが定義するんだからTypeだけをユーザ定義型と
いうのもどうかと思うけど、Typeは値型。
ByValだったら値型の値渡し。
ByRefだったら値型の参照渡し。
>>153 サンンプルコードかけば一発で判るんだけど、そんなこともやってないのか?
何か残念だな。
理解できない自分の頭脳が残念な出来だとは思わないんだ
>>154 やってないしやる意味もないしお前の頭が残念。何がわかるんだ?はい論破。
ピーチ姫をいつもさらっていくやつだな
>>156 話がかみ合ってない理由がよくわかったw
>>147 はユーザー定義型は値渡しか参照渡しか聞いてるのに
何故かお前はByRef、ByValの解説してるし。
あさっての話しちゃまずいだろw
>>158 俺はユーザ定義型が値渡しか参照渡しかを聞くことが間違ってるって思ってる。
だから俺がどう考えてるのかを示した。お前は正座してそれを100ぺん独唱すればいいと俺は思ってる。
ちょっと下品かもしれないけど股間の話をしてる人に対してそれは果物か野菜かと問うことは
愚の骨頂だろ。俺の股間は花鳥風月を愛でる日本の伝統文化の結晶和菓子と呼ばれてしかるべきだ。はい論破。
>>158 お前の話がかみ合わないのは
値型と参照型の区別がつかない
値渡しと参照渡しの区別がついてない
型の区別と引数の渡し方の区別がついてない
かみ合わないんじゃなくて、正しくはお前が理解してないだけ
>>158 の人はさすがにネタだとうと思ったけど、どうも本気でわかってないのかね。
これだからVBerって馬鹿にされるんだろうな
そもそもユーザー定義型がどうとか言い出したのは俺なんだが、俺じゃない奴にレスしてるな。論破してみろw
>>160-161 見えない敵と必死で戦ってご苦労さんって感じなんだがw
VBのスレなんだからVBの仕様をきちんと理解してから書き込もうね。
人の話をきちんと聞かないようだから、こんなこと言っても無駄か。
そもそも値型参照型と値渡し参照渡しは無関係。はい論破
>>164 VBの仕様を否定した覚えはないから、お前が言ったことはたぶん無駄だね。
お前は和菓子をかじりながら俺の股間の話を思い出してればいい。はい論破。
参照渡しといえばドット演算子が使われるときに参照渡しができないのがいやだよな
>>153 >ByValだったら値型の値渡し。
>ByRefだったら値型の参照渡し。
0点wwwwwwwwwwwwww
ユーザー定義型をByValにすると実行時エラーになる。
>>169 ってかさVBのコード書いたことがないのがモロバレじゃん。
根っこの考え方が間違ってるわけだから0点wwww
VBのコード書いたことあるぞ
>>15 をみろ
Class Closeable
Public Sub Process()
End Sub
Public Sub Close()
End Sub
End Class
はい論破
>>171 そういうことを言ってるわけじゃない。
そんなので話をすり替えるな。
ユーザー定義型を引数で渡すコードなんて基本中の基本。
そんなことさえも分からず能書きたれるんじゃない。
因みに
>>171 のコードってVB6で動くとは到底思えないんだけど。
VB6のクラスを全く理解してないようだし。
バージョン間違えてましたとか、スレタイちゃんと見てなかったっていう言い訳は無しね。
>>172 根っこの考え方?
ただの制約事項だろ、どんな根っこの考え方からユーザー定義型の値渡しが制限される訳?
どう考えても根っこなのは
ByValは変数のコピーが渡されると言う事
その結果として
値型ならデータそのものがコピーされ
参照型ならデータを指し示すアドレスがコピーされると言う事
参照型の参照渡しをする奴はバカだと言う事
それにな
俺
>>153 じゃないんだわ
はい、論破。
>>173 > 参照型の参照渡しをする奴はバカだと言う事
呼び出し先で参照先を変更してもらうこともあるだろ。
応用力ないんか?
>>174 悪いけどそれはないよ。
普通のプログラマは言語仕様出来てもそんなコードは書かない。
C#みたいに呼び出し元にも明示的にoutを付けないとだめな仕様なら場合によっては
許されるかも知れないがVB(VB.NET以降も含む)の仕様では、少なくとも俺は
そんなコードは書きたくないね
>>175 VB.NETはByRefて書かないと参照渡しにならないっすよ。
なのであーこれ参照渡しだなーとわかる点はC#と変わんない。
木構造書くときなんかは参照渡し使えると便利なんだけどね。
まあ値をreturnするってのがわかりやすいよな。
>>175 いや、だから「君の意見」なんてどうでもいいぞ。
>>174 バカってのは
「引数の値を変えたい場合、参照渡しを使います」
研修を教わったコレをなんの疑問も持たずに使い続けてる奴
あ、でもStringは例外だかんな
>>177 そんなこといったらお前の意見もどうでもいいわけで
みんなが意見を出しあってあーでもないこーでもないというのが
コミュニティというものだろうが、はい論破。
>>176 >>175 にも書いた通り、C#では呼び出し元にもoutを書く必要があるし、
outとVBのByRefはまったく意味が違う。
>>180 ああそういうことね。意味的にはrefが同じだろうな。
は?論破くんって馬鹿なの? ByRefを使う理由は引数で戻り値を返したい場合の他に ユーザー定義型や文字列みたいなデータがでかいものを 引数として渡すときに発生するデータのコピーのコストを 下げるためってのがあるんだよ。
>>182 それは否定しないよ。否定した覚えもないよ。バカはお前だよ。はい論破だよ。
は?論破くんって馬鹿なの?
>>183 誰もお前にレスしてるんじゃねーよ。勝手に枕詞にレスすんな
何このやり取りw
182 名前:デフォルトの名無しさん[sage] 投稿日:2013/02/03(日) 02:39:33.37
は?論破くんって馬鹿なの?
183 名前:デフォルトの名無しさん[sage] 投稿日:2013/02/03(日) 02:41:25.32
>>182 それは否定しないよ。否定した覚えもないよ。バカはお前だよ。はい論破だよ。
>>185 そういうことじゃなくて、ByRefを使う理由について述べただろ、俺はそれを否定しないってこと。はい論破。
脱線すんなよ 参照型の値渡しは値渡し オブジェクトの状態を変更出来るがだからって参照渡しとは呼ばない それでいいな!
>>185 それの対象が異なっていることはわかるわけで、いかにも低学歴なやつがやりそうなことだな。
曲解の典型例であり低学歴の典型例をお前は示した。心からお悔やみ申し上げるとともに
一日も早くご逝去されますことをお祈り申し上げる。はい論破。
> 一日も早くご逝去されますことをお祈り申し上げる お前の願いは叶わなかった。はい論破w
ケロンパスレの予感
>>178 > 「引数の値を変えたい場合、参照渡しを使います」
じゃなく
「引数の値を変えたくない場合、値渡しを使います」
だぜ
VB6系の仕様的にそうなってるだろ
まだやってんの? 値渡し、参照渡しなんて誤解を招く表現を使わず ByVal、ByRef って言えばいいだろアホかおまえら
196 :
デフォルトの名無しさん :2013/02/03(日) 17:06:20.22
>>137 C#も頑張ってはいるんだけど、オブジェクト指向の言語としては
VBとの間はまだいちにちのおさがある。VBの方が洗練されている。
C#の魅力としては.NETの標準ライブラリが充実していることだが、それだけだ。
そのライブラリの品質もそれほど高いものでもない。いうなればまだVBに論破されてる状態だな。
お、論破くんの釣りきたぞ。はい論破。
>>196 へ、VB6ってなんちゃってオブジェクトだと思ってたんんだけど。
もしかして
>>171 のコードがVB6に通用するなんて思ってないよねw
200 :
デフォルトの名無しさん :2013/02/04(月) 12:36:02.22
>>198 もしかしちゃったりするんだなこれが。
俺はオブジェクト指向の話をしたかったんだけど、お前が言ってるのは
>>171 の
コードがVB6で通用するかどうかという話な。
>>171 は俺じゃないけど、
>>171 の
コードを書いたのは俺だから俺はお前の質問に答えようと思う。
俺は
>>171 のコードがVB6で通用すると思ってる。そこには疑問をさしはさむ余地は
微塵もないし
>>171 のコードがVB6で動作することは俺の確信ということをはるかに
超越してこの世の真理といってもいいものだ。はい論破。
今日もこいつ居るのか
202 :
デフォルトの名無しさん :2013/02/04(月) 12:46:52.08
>>201 おいやめろ、まるでお前は俺がここにいることが迷惑だといわんばかりの
いいぐさじゃないか。心にもないことをいうな。はい論破。
仕事しろよニートw
>>202 まるでも何も、迷惑なんですが。
ageるし。
久しぶりに見たなあ「はい論破。」
206 :
デフォルトの名無しさん :2013/02/04(月) 14:00:07.04
∧ ∧
〈 〉,,..,,〈 〉
/(・) _ (・)\
/三 `' 三\
>>204 のバカ、もう知らない
/ ィ― ̄ ̄ ̄―、 \
/ / ヘ ヘ ヘ ヽ ヽ
>>1 のコードでusersを検索する場合、実際は戻り値をこうする必要がある。
クライアントコードからの入り口をGetUsers()だとしたい場合は、関数名も含めてこうなる。
Sub GetUsers() As ADODB.Recordset
Dim objConnection As ADODB.connection
Set objConnection = New ADODB.connection
Set GetUsers = B(objConnection)
If objConnection.State <> adStateClosed Then
Call objConnection.Close
End If
End Sub
Private Function B(ByVal objConnection As ADODB.connection) As ADODB.Recordset
On Error Resume Next
Set B = A(objConnection)
If Err.Number <> 0 Then
Debug.Print Err.Description
End If
End Sub
Private Function C(ByVal objConnection As ADODB.connection) As ADODB.Recordset
Call objConnection.Open
' usersを検索してRecordsetを戻す
End Sub
Private Sub Command1_Click()
Dim rs As ADODB.Recordset
Set rs = GetUsers()
'rsの内容を画面表示
End Sub
GetSections()を作ってCommand1_Click()から呼びたい場合、同じようなコードセットを書く必要がある。
もう少し考慮を進めると、例えばあるイベントをトリガーとして、 InsertFoo() InsertBar() を呼ばなければならないとする。 さて、A(), B(), C()方式だと ・トランザクションの開始はどこで行うのか ・Commitはどこで行うのか ・エラーが発生した場合、Rollbackはどこで行うのか という問題が発生する。 ちなみに俺はA(), B(), C()という構造そのものは否定しない。 データベースを使用するアプリケーションでは無い何かのドメインでは、 A(), B(), C()という構造が有効なのかもしれない。 もし、そのような場合があるのであれば、是非教えて欲しい。
誤:Sub GetUsers() As ADODB.Recordset 正:Public Function GetUsers() As ADODB.Recordset
仕事ないの?
A(), B(), C()という構造はゴミ。
データベースの処理をする部分を 関数ではなくクラスにすれば スッキリと実装できる。 やってみな。
213 :
デフォルトの名無しさん :2013/02/04(月) 15:04:19.73
>>211 お前と同じようなことを言った人間は何人もいた。しかし、ABC構造を
超える優れたコードを示すことができた人間は結局一人もいなかった。
そうであるがゆえに俺が示したABC構造はVBにおける例外処理の
ベストプラクティスとしてこのスレに掲載されるにいたった。
お前は悪口をいっちょまえにいえるだけの半人前以下の4半人前。はい論破。
> お前と同じようなことを言った人間は何人もいた。しかし、ABC構造を > 超える優れたコードを示すことができた人間は結局一人もいなかった。 お前が優れていると認識できないだけじゃないのか? 優れている=シンプル。 なのでクラスとInitializeとTerminateを使ってシンプルに 実装した例があったが、それをお前が優れていると認識できてないだけだろ?
>>1 みて誰がベストプラクティスだって思うんだ?w
馬鹿にされてるじゃん。
>>1 は晒し上げだろw
216 :
デフォルトの名無しさん :2013/02/04(月) 15:25:01.76
>>207 データベースの処理は検索、挿入、削除くらいなんだから
同じようなコードを書くといってもせいぜい3つだろ。
あとは細かい部分を専用オブジェクトを作るなりして処理すればいいだろ。
こんなんで余裕だろ。はい論破。
Function GetUsers()
Dim u
Set u = New Usersholder
Call A(u)
Set GetUsers = u.Users
End Function
Class Usersholder
Public Users As ADODB.Recordset
Public Sub C(objConnection)
End Sub
End Class
Sub B(ByVal objConnection As ADODB.connection)
On Error Resume Next
Call objProcessor.C(objConnection)
If Err.Number <> 0 Then
Debug.Print Err.Description
End If
End Sub
217 :
デフォルトの名無しさん :2013/02/04(月) 15:28:51.88
>>214 隠蔽してはいきれいとのたまってるやつはいたが、だったらAとBを
隠蔽すればいいわけで、例外処理の美しさでABC論理を超えるものではなかった。
だからこそそのコードではなくて俺のコードがこのスレに掲載されるにいたった。はい論破。
>>216 前スレでも指摘したが、最も問題なのはOpenをC()で行っていることで、そのコードでは何も解決になっていない。
コードを省略せずにFooテーブルとBarテーブルにレコードをトランザクションでInsertする処理を考えれば、
何故ダメなのかがより明確になる。
>>216 おいおい、やるに事欠いて、ClassにRecordsetを保持するのかよ...馬鹿じゃないの...
On Error Goto TRY_B A Exit Sub TRY_B: On Error Goto TRY_C B Exit Sub TRY_C: C と書くと、Bでエラーになったときに、 Cに飛ばずにエラー中断してしまいます。 Aを試みてエラーならB試みる。 Bを試みてエラーならCを・・・ とするには、どのように書けば良いですか?
If Err.Number <> 0 Then Debug.Print Err.Description End If これが最悪だよな。 エラーをどこに表示するかはライブラリのユーザー側が決めることで 内部で出しちゃいかんよ。ちゃんとErr.Raiseしろ
223 :
デフォルトの名無しさん :2013/02/04(月) 15:33:11.66
>>215 馬鹿にするやつは前のスレに何人かいたが結局そいつらはことごとく
虫けらのごとく俺に論破されたわけで、だからこそ俺の例外処理が
ベストプラクティスであるとスレの総意に近いものが得られるにいたったわけであり、
このスレに掲載されるにいたったわけ。そ・う・い・う・こ・と・な・わ・け。はい論破。
>>217 > 隠蔽してはいきれいとのたまってるやつはいたが、だったらAとBを
> 隠蔽すればいいわけで
だとするなら、そのAとBを隠蔽する場合のコードを提示してくれ。
現状では、A, B, Cで意味的にPublicにできるのは、Aだけだ。
ファイルの読み書きでShift_JISでエンコードされてるテキストファイルの内容をエンコードせずにLabelやTextBoxで表示できるのは何で? OpenステートメントやTextStream関連読んでもunicodeかASCIIの二通りの読み込み方しか書いてないのに
226 :
デフォルトの名無しさん :2013/02/04(月) 15:36:01.59
>>218 CでOpenしてなにが悪いのよ。OpenとCloseの階層が異なっていることは
前スレで完全に論破しただろ。はい論破。
>>216 頼むからVB6のコードで示してくれ。
こっちが恥ずかしくて見てられないよw
>>226 「オープンして」「検索する」関数は、凝集度が低い。
異なるレイヤーの処理をひとまとめにしてしまうと、それだけで使い勝手が悪くなる。
Cでオープンするのが何故ダメのかは、
コードを省略せずにFooテーブルとBarテーブルにレコードをトランザクションでInsertする処理を考えれば、
何故ダメなのかがより明確になる。
ちょっと論破君無視して いいコーディングの話しようぜw
230 :
デフォルトの名無しさん :2013/02/04(月) 15:39:05.42
>>224 こんなんでいいだろ、外からはHiderしか見れません。はいきれい。はい論破。
Class Hider
Public Sub A()
End Sub
Public Sub B()
End Sub
End Class
>>230 なぁ、そもそも「データベースのオープンに代表される、リソース管理にまつわる
エラーハンドリングとしてのA, B, Cという構造の提示」じゃなかったのか?
Cを省略して考えても意味が無い。
クライアントコードに公開する関数/メソッドと、リソースを保持する変数(例えばデータベースコネクション)、
そして返すべき戻り値を含めて具体的にコードを考えないと意味が無い。
>>229 賛成
トランザクションの話をしよう。
「データベースを使った処理」と
「トランザクション」は分離していないといけない。
つまり、
データベースを使った処理開始
トランザクション開始
処理
トランザクション終了
終了
この形は良くない。なぜなら、データベースを使った処理
複数個を一つのトランザクションにまとめられないから。
だから「データベースを使った処理」の中にトランザクション処理は含めるべきではない。
233 :
デフォルトの名無しさん :2013/02/04(月) 15:43:35.21
>>228 なぜダメなのか明確になるけどお前は考えてないからそれを明確に示すことは
できないのね。じゃあダメであることは不明確なままであり、現時点で俺のABC理論が
ベストプラクティスであることに変わりはない。はい論破。
>>229 そろそろ潮時なので、もうやめるよ。
やめても、いいコーディングの話はしないけど。
また「データベースを使った処理」とコネクションも分離した方がいい。 なぜなら、処理自体は同じでも別のデータベースに対して行うかもしれないから。 処理とコネクションが一体化されてしまうと柔軟性がなくなってしまう。
あと当たり前だけど、エラーは例外を基本とすること。 戻り値をエラーに値として使ってはいけない。 これらのことを合わせると以下の様な構造になる。 Sub main On Error Goto ErrHandler コネクション作成 トランザクション開始 データベース処理 コミット Exit Sub ErrHandler: エラー処理(ロールバック) End Sub
データベース処理のところはクラスにした方がいい。 そうすることでいちいち引数でコネクション渡す必要はなくなるし、 それでいて複数のコネクションに対応できる。 Sub main On Error Goto ErrHandler コネクション作成 トランザクション開始 Set DB処理インスタンス1 = new クラス名(コネクション) コミット Exit Sub ErrHandler: エラー処理(ロールバック) End Sub
240 :
デフォルトの名無しさん :2013/02/04(月) 15:51:58.53
>>231 お前がAとBを隠蔽する場合のコードを提示してくれと言ったから
俺はAとBを隠蔽するコードを示してお前と同じようにはいきれいといって見せたわけであり、
お前がAとBを隠蔽するコードを要求したから俺がそれを示したわけであり、
Cが省略されているから意味がないというのはこれはひどいいいがかり。
>>234 うん、お前は目も当てられないほど見苦しいわ。俺が徳川八代将軍吉宗であったらいさぎよく
腹を切れと喝破して、峰打ちと称して心臓を一突きにしてやってるとこだわ。はい論破。
241 :
220 :2013/02/04(月) 15:52:54.47
更新せずに書きこんだら、なんでこんなに流れ速いんだ・・・。
炎上終ったらで良いんで、
>>220 をお願いします・・・。
>>240 これで君にするレスは最後ね。
前スレでA, B, Cという構造を見たとき、正直衝撃を受けたよ。
今まで考えたこともなかった構造だったから。
俺は、他の人と違ってばっさり切り捨てることはしない。
今後も折に触れて、ABC構造が適合するような場面があるのかないのか、個人的に考えていくよ。
じゃね。
>>241 君のコードが根本的にダメなのは、コードのそのままぺたっと書こうとしている所
> Aを試みてエラーならB試みる。
> Bを試みてエラーならCを・・・
とやりたいことを書いているだろう?
そのとおり書けばいい。
A()
正常なら終了
B()
正常なら終了
C()
正常なら終了
今回のはエラーかどうか知りたいだけという珍しい例。 これならOn Error Resume Nextが便利 Sub Func On Error Resume Next Call A If Err.Number = 0 Then Exit Sub Call B If Err.Number = 0 Then Exit Sub Call C If Err.Number = 0 Then Exit Sub End Sub AとBとCの内容は好きに書けばいい。 ただしエラーの時はErr.Raiseすること。
>>238 その記事だとShift_JISが主流とか書いてあるけど日本国内PCって意味だよね?諸外国でもShift_JISが標準だったの?
別解として「エラーなら次の関数を実行する」という関数を作るという方法もある。 VBでは実装しにくいから関数オブジェクトにして nantoka(new A(), new B(), new C()) A、B、Cはそれぞれrun(名前はなんでもいいけど)メソッドという インターフェースを持ったクラス。 nantokaって関数は、エラーであれば次の引数のrunを呼ぶみたいな コードを書けばいい。 A、B、Cそれぞれのクラスができるからちょっと面倒。 CallByName当たりを使えば一つのクラスで実装できるだろう。
コードを書くときは、やりたいこと(最小限のコード)を書いて そこに肉付けしていくのではなく、 やりたいことを書いて、それだけで動くように するにはどうするか?って考えるのがいい。 コードをシンプルに保つ秘訣だ。
>>247 お前もVB6じゃないコードだって指摘できないから同罪。
251 :
デフォルトの名無しさん :2013/02/04(月) 16:26:47.05
>>219 クラスでRecordsetを保持したらダメだと思ってんの?馬鹿はお前のほうだ。お前は疑いようのない馬鹿だ。はい論破。
252 :
デフォルトの名無しさん :2013/02/04(月) 16:48:24.53
>>208 ABC理論だとこんなに簡潔にできる。敗北を知りたい。はい論破。
Sub A()
Dim objConnection As ADODB.Connection
Set objConnection = New ADODB.Connection
Call B(objConnection)
If objConnection.State <> ADODB.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
If objConnection.State = ADODB.adStateClosed Then
Call objConnection.RollbackTrans
End If
End If
End Sub
Sub C(ByVal objConnection As ADODB.Connection)
Call objConnection.Open
Call objConnection.BeginTrans
Call objConnection.CommitTrans
End Sub
253 :
220 :2013/02/04(月) 17:11:29.13
>>244 >>245 なるほど、On Error Resume NextにしてErr.Numberを調べれば良いのですね。
try{
A();
}catch(...){
try{
B();
}catch(...){
C();
}
}
のように書こうとして、ずっと悩んでおりました。
ありがとうございました。
こっちのほうがシンプルだったw Dim objConnection As ADODB.Connection Set objConnection = New ADODB.Connection On Error Resume Next Call objConnection.Open Call objConnection.BeginTrans Call objConnection.CommitTrans If Err.Number <> 0 Then If objConnection.State = ADODB.adStateClosed Then Call objConnection.RollbackTrans End If End If If objConnection.State <> ADODB.adStateClosed Then Call objConnection.Close End If
>>253 try-catchのネストはやめたほうがいい
やりたくなったら構造が間違っていると考えたほうがいい。
ほんとうに必要な場合ってのは殆ど無いはずだ。
256 :
デフォルトの名無しさん :2013/02/04(月) 17:25:01.80
>>254 それはやっちゃいけないパターンだ。
Resume NextだからOpenで例外が投げられたとしても
処理が継続されてBeginTransが実行されて例外が投げられて
Openの例外が消失してCommitTransが実行されてBeginTransの例外が
消失する。最低のパターン。ワーストケース。お前のおつむの程度が知れるな。はい論破。
じゃあこれでいいんじゃね? Dim objConnection As ADODB.Connection Set objConnection = New ADODB.Connection Call objConnection.Open Call objConnection.BeginTrans Call objConnection.CommitTrans If Err.Number <> 0 Then If objConnection.State = ADODB.adStateClosed Then Call objConnection.RollbackTrans End If End If If objConnection.State <> ADODB.adStateClosed Then Call objConnection.Close End If
>>251 コネクションが閉じられたら、レコードセットが無効になるよ
259 :
デフォルトの名無しさん :2013/02/04(月) 17:30:12.07
>>258 え、そうなの?じゃあコネクション閉じられないな。はい論破。
261 :
デフォルトの名無しさん :2013/02/04(月) 17:34:08.32
>>257 お前はバカすぎる。例外が発生した時点で処理が中断されるん
だからErr.NumberのチェックもConnection.Stateのチェックも
意味がなくなる。お前だけレベルが低すぎる。インターネットを
利用しちゃいけないレベル。回線切ってゴマでもすりつぶしてろ。はい論破。
じゃあこれでいいのか。 Sub foo() On Error Goto ErrHandler Dim objConnection As ADODB.Connection Set objConnection = New ADODB.Connection Call objConnection.Open Call objConnection.BeginTrans Call objConnection.CommitTrans Exit Sub ErrHandler: If objConnection.State = ADODB.adStateClosed Then Call objConnection.RollbackTrans End If If objConnection.State <> ADODB.adStateClosed Then Call objConnection.Close End If End Sub
263 :
デフォルトの名無しさん :2013/02/04(月) 17:34:48.51
ム板で一番活気のあるスレ
>>262 さすがだ。たった3秒でそのレスをするとはな。
265 :
デフォルトの名無しさん :2013/02/04(月) 17:38:03.82
>>262 いいわけあるか、例外が発生したときにErrHandlerに飛ばされるが、
Connection.Closeは例外が発生しなくても呼ばれなくてはいけない。
お前のようなさんしたは下手にアレンジしようとせずに俺が示したとおりに
記述するのがベストだ。なぜなら俺がベストを示したからだ。はい論破。
>>255 catch内のtry-catchはいいと思うけど。
ならこれでよさそうだ。 Sub foo() On Error Goto ErrHandler Dim objConnection As ADODB.Connection Set objConnection = New ADODB.Connection Call objConnection.Open Call objConnection.BeginTrans Call objConnection.CommitTrans ErrHandler: If objConnection Is Nothing Then Exit Sub If objConnection.State = ADODB.adStateClosed Then Call objConnection.RollbackTrans End If If objConnection.State <> ADODB.adStateClosed Then Call objConnection.Close End If End Sub
あ、本当に必要な場合か。 catch内でリソースの解放が必要になるときに、その処理自体が例外を発生する可能性がある場合って 良くあることだと思うけど、俺だけなのか?
論破くんのレスがなくなった時が 完成されたコードになるのだろう。 黙ってみてよw
>>259 閉じない様に気をつけるのか...頑張ってね...
>> つまりこうしろってことですね? Sub foo() On Error Goto ErrHandler Dim objConnection As ADODB.Connection Set objConnection = New ADODB.Connection Call objConnection.Open Call objConnection.BeginTrans Call objConnection.CommitTrans ErrHandler: If objConnection Is Nothing Then Exit Sub If Err.Number <> 0 Then If objConnection.State = ADODB.adStateClosed Then Call objConnection.RollbackTrans End If End If If objConnection.State <> ADODB.adStateClosed Then Call objConnection.Close End If End Sub
あ、間違って書き込みボタン押しちゃったw
エラー処理が煩雑になってきたので こういうのは共通クラスにまとめよう。 Sub foo() On Error Goto ErrHandler Dim objConnection As MyConnection Set objConnection = New MyConnection Call objConnection.Open Call objConnection.BeginTrans Call objConnection.CommitTrans ErrHandler: If Not objConnection Is Nothing Then Call objConnection.CleanUp End If End Sub
274 :
デフォルトの名無しさん :2013/02/04(月) 17:48:02.36
>>270 は? なに言ってんの? バーカ。はい論破。
>>267 正常時の処理と異常時の処理がごちゃまぜにされた劣化コードだな。
お前にはそれが限界だろうな。俺レベルになると構造化プログラミングの
真髄を示すことができるけどな。それが
>>252 。はい論破。
>>268 お前だけだろ。お前だけ。お・ま・え・だ・け。はい論破。
CleanUp はMyConnectionクラスのTerminateでやればいいか。 Sub Foo() On Error Goto ErrHandler Dim objConnection As MyConnection Set objConnection = New MyConnection Call objConnection.Open Call objConnection.BeginTrans Call objConnection.CommitTrans Exit Sub ErrHandler: ErrorLog(Err) End Sub
277 :
デフォルトの名無しさん :2013/02/04(月) 17:54:17.89
>>275 それは臭いものにふたをするだけの詭弁コードだな。そんなことが許される
のであれば俺はこれでできることになる。はい論破。
Sub C(ByVal objConnection As ADODB.Connection)
Call objConnection.Open
Call objConnection.BeginTrans
Call objConnection.CommitTrans
End Sub
>>277 コード減ってる。Newする所も書かないとダメだろう?
例外処理も消えてるな。
まあまて、
>>277 にnewと例外処理を加えよう
Sub C()
On Error Goto ErrHandler
Dim objConnection As MyConnection
Set objConnection = New MyConnection
Call objConnection.Open
Call objConnection.BeginTrans
Call objConnection.CommitTrans
Exit Sub
ErrHandler:
ErrorLog(Err)
End Sub
よし。これでOKだ
281 :
デフォルトの名無しさん :2013/02/04(月) 17:58:18.88
>>278 俺はMyConnectionの実装を示さないお前と同じことをやってみせただけのことだ。
お前は都合の悪いところは隠せばいいという隠蔽体質を恥じらいもなく見せた
厚顔無恥であることを自覚しろ。正々堂々と勝負している俺の敵ではない。はい論破。
282 :
デフォルトの名無しさん :2013/02/04(月) 18:11:37.17
>>280 MyConnectionにはすくなくともOpen、BeginTrans、CommitTransのメソッドを
用意しなければならず、それは内部のConnectionオブジェクトに処理を委譲する
だけのだっさい実装になってる。お前はコードを書きまくってそれを表に出さず、
きれいになりましたといってる恥知らず。厚顔無恥どころかその汚れまくった精神構造は
睾丸無知と呼ばれるにふさわしい。もうただのキンタマ。はい論破。
283 :
デフォルトの名無しさん :2013/02/04(月) 18:25:23.37
>>269 キンタマコードが示されただけだった。
それもそのはずでベストプラクティスは俺の手によってすでに
示されているわけ。俺への不合理な反発、心理的リアクタンスから
俺のABC理論に逆らっているだけだったから結末は目に見えていた。
もっとこう合理的にこれがいいと示すことができる骨のあるやつはいないのか。
ここはいつからこんなにレベルの低い連中のたまり場になったんだ。はい論破。
理論の通じない論破君が出ててきてからだよ
無視されてるなぁw
286 :
デフォルトの名無しさん :2013/02/04(月) 20:22:12.53
>>285 ぐぬぬ・・・となってるだけだろ。はい論破。
287 :
デフォルトの名無しさん :2013/02/04(月) 21:47:44.16
みんな引数のプリフィックスってどうしてる? Sub F1(ByVal inValue, ByRef outValue) とか? プリフィックス付けなかったらメンバー変数とか関数とかと 被ったりしてなんかいやだろ。どうしてる?
趣味グラマで1人でやってるから名前付けを気にしたことはないな
>>287 何でググってみないの?バカなの?死ぬの?
>>287 メンバ変数にプリフィクス付けてるから
引数はあまり気にしない
小文字で始めれば関数との被りは気にしなくて良い
291 :
デフォルトの名無しさん :2013/02/04(月) 22:31:12.58
>>290 関数と被るときあるじゃん。メンバー変数にプリフィックスつけたら外部から
呼び出すときなんか嫌じゃない?
>>290 > 小文字で始めれば関数との被りは気にしなくて良い
関数の名前に名詞を使ってるの?
それとも変数に動詞を使ってるの?
グローバル変数 g モジュール内変数 m 引数 a
>>291 メンバー変数なんて全てプライベートだから、外部から直接呼び出したりしない
そもそも、なんのための「Property」やねんと...
295 :
デフォルトの名無しさん :2013/02/04(月) 23:04:28.69
>>294 外部から変更可能なものならプロパティにする意味ないじゃん。
プロパティにしてもプリフィックスつけなきゃ被ることになるじゃん。
プロパティは大文字で始めるから 被りは気にしなくて良い
動詞が関数 名詞が変数 なのでかぶることはない。 それにかぶったとしても たいして問題にならない。 関数か変数かなんて大した問題ではない。
動詞形と名詞形が同じスペルの英語が困るのか
299 :
デフォルトの名無しさん :2013/02/04(月) 23:13:35.62
>>296 えーそれありえなーい。コンパイラは大文字小文字を区別しないし、
If Value < value Then
比較するときこんなことになるよ。大文字小文字で見分けてたら見にくくない?
ミスを誘発するために地雷埋めてるようなもんじゃん。それって嫌じゃない?
そんな単純な名前付けして大丈夫か? 大丈夫だ、問題ない。
神は言っている、ここでバグるようなプログラムじゃないと
>>295 「Property」には、「Get」「Let」「Set」の三種類があり、それぞれ名前を重複させる事ができるから、基本的に被る心配なんてない
303 :
デフォルトの名無しさん :2013/02/04(月) 23:24:53.22
>>302 引数と被ることあるじゃん。
Sub Func(ByVal value As String)
'なんかこれ嫌じゃない?
End Sub
Property Get Value() As String
End Property
VBは糞言語だから仕方が無い
>>303 引数にもっと適切な名前をつけましょう。
>>303 何が嫌なの?
Funcから、PropertyのValueにアクセスしたければ、Me.Valueでアクセスできるだろ?
307 :
デフォルトの名無しさん :2013/02/04(月) 23:33:32.04
俺のするレスがことごとく無視されてるとこみると この安価の付け合いのレス合戦は台本通りの自作自演か?
308 :
デフォルトの名無しさん :2013/02/04(月) 23:34:33.08
>>305 だからさ、みんな引数のプリフィックスどうしてるのかなーと思って。
>>306 う、うん、そりゃできるけどさ。Me付けるタイプ?ふーん。
309 :
デフォルトの名無しさん :2013/02/04(月) 23:35:46.10
>>307 レスどれよ?まともなこと書いてないんだろ。
>>308 プリフィックスなんか付けない。
適切な変数名をつけていればかぶらない。
>>308 Meを付けなければならない時は付けるし、付ける必要が無いときは付けない
ただ、それだけ
そもそも、メソッドにPublicなSubが必要なのか?
Propertyに押し込めるんじゃないのか?
312 :
デフォルトの名無しさん :2013/02/04(月) 23:42:39.59
>>310 じゃあたとえば二分木のNodeクラスのValueに適切な
引数名てどういうの?
node_valueでいいだろw
314 :
デフォルトの名無しさん :2013/02/04(月) 23:59:15.57
316 :
デフォルトの名無しさん :2013/02/05(火) 00:01:53.10
>>315 クラス名を変数の前に付けるんでしょ。単語を二つくっつけることと
プリフィックスは同時に成立することだよ。クラス名を付けるってことね。
プロパティ Value の実体を表す変数名は Value そのものか、あるいはメンバである事を表すプリフィクスを付けただけのものが 最も分かりやすい それ以外の変数名は逆にややこしい クラス名はプリフィクスとしてはあり得ない部類 クラスが違えばプリフィクスも変わるとか保守し辛い
valueって書こうと思ってValueとしてしまったが ここはVBスレだからvalueでもダメだったわ VBならプリフィクス一択だな
319 :
デフォルトの名無しさん :2013/02/05(火) 09:41:06.10
フォームBのActivateイベント内にStatic変数blnIsEntを宣言。 フォームAからvbModalでフォームBをShowさせたとき、blnIsEntをTrueに設定しアンロードした。 再度フォームAからvbModalでフォームBをShowさせたとき、なぜかblnIsEntがTrueになったままになっている。 まるでフォームBがアンロードされていないかのようにふるまう。 そこで、フォームAのvbModalでフォームBをShowさせる次のコードに Set frmB = Nothing を記述すると 再度フォームAからvbModalでフォームBをShowさせたとき、blnIsEntがFalseになった。 これはVB6.0の仕様なのか、俺が何かフォームBをアンロードできないような事をしてしまったのだろうか?
VB6ではNothingの代入は不要だって論破自慢してた人がいたが、実際には明らかに挙動が異なる局面があるじゃんw
>>320 Terminateイベントを早期に発生させる目的でオブジェクトの使用終了時にNothingを代入するプログラマーは多いですよ?
>>316 > クラス名を変数の前に付けるんでしょ。単語を二つくっつけることと
クラス名を全部につけたら結局一緒だろw
そもそもnodeという単語であってNodeとくクラス名じゃないし
お前馬鹿なんじゃないの?
>>319 > まるでフォームBがアンロードされていないかのようにふるまう。
アンロードされた=メモリ上から破棄された
というのが勘違い
>>323 ガーページコレクションなんたらかんたらでNothingせずともメモリー上から破棄されるって言い切ってたような気が汁
素人論破集団怖すぎw
VB6じゃFormの扱いは特別じゃなかったっけか その他オブジェクトは、Nothingの代入はいらないよ
>>324 間違いではない。スコープから抜けて参照がどこからもなくなれば、とメモリから破壊される。
だがフォームの場合は「参照がどこからもなくなれば」という条件が
ややこしいのだ。Unloadは参照がどこからの亡くなるための条件の一つだが
それだけではない。
>>319 実際のコードを見ないとなんとも言えない。
そのフォームAとかBというのがどういうフォーム名で
どのような変数名で呼び出して、どのような使い方をしているのか
書かないとわからない。
一般的にフォームのアンロードは、フォームをなくすための条件の一つであるが
アンロードされているだけで、フォームは消えない。
そもそもアンロードは、フォームを消す命令ではないからだ。
>>319 単にStatic変数がメモリ上に保持されているというだけ。
フォームそのものはアンロードされている。
>>320 > VB6ではNothingの代入は不要だって論破自慢してた人がいたが、実際には明らかに挙動が異なる局面があるじゃんw
それはインスタンスを削除するのにNothingは不要ってことでしょ?
代入してもしなくても挙動が全く同じなんて誰も言ってないですよ。
>>324 > ガーページコレクションなんたらかんたらでNothingせずともメモリー上から破棄されるって言い切ってたような気が汁
うん、そうだね。
今は、アンロードの話をしている。
アンロードとNothingは別のものだ。Unload、Nothing 単語違うだろ?
> 通常、プロシージャ内のローカル変数は、プロシージャが停止した直後に削除されます。 > 静的変数はプロシージャの終了後も存在し続け、最後に設定された値を保持します。 > 次回、コードからそのプロシージャを呼び出したとき、変数は初期化し直されることなく、 > 最後に割り当てられた値をそのまま保持します。
通常、プロシージャ内のローカル変数は、プロシージャが停止した直後に削除されます。 ですがフォームはグローバル変数になっていることがあります。 ローカル変数ではないのでこの二つをごっちゃにしないようにしましょう。
クラスのstatic変数は 当然クラスがなくなったら 初期化されるよ。 常識だけどね。
>>330 それ違うだろ?
つまりNothingの代入が不要だと言い切って論破したのだから
Nothing代入以外でメモリーからフォームを消してみせる必要があるんじゃないの?
>>335 > Nothing代入以外でメモリーからフォームを消してみせる
はいUnloadすることでメモリからフォームを消してみせましたよ。
>>334 Forms コレクションから削除されていながら同名のフォーム指定で変数ごと蘇るとか
なんか悍ましい仕様だなVB6は
>>335 参照カウンタ方式でメモリ上から破棄されるものに関しては、Nothing代入不要
Formはグローバル変数にアンロード後も保持されるので、本当に破棄したいならNothingの代入が必要
はい論破
339 :
デフォルトの名無しさん :2013/02/05(火) 13:13:07.88
>はいUnloadすることでメモリからフォームを消してみせましたよ。 消えるのはコレクションの登録でメモリーからは消えないんだとよ。VB初心者さんw
>>338 その「グローバル変数」って何の事を指して言っているのやら・・・。
>>337 > 同名のフォーム指定で変数ごと蘇るとか
いや今さらそんなこと言われましても。
フォームにかぎらず、
Dim obj As new Class1
って宣言していれば、
objがNothingの時に自動的にnewされますよ。
>>339 いや、だからコレクションの登録から消えることで
どこからも参照されなくなった時点で
自動的に消えるんだよ。
理解できるよね?
>>342 バカラだか理解出来ませねん。
屁理屈ですか?それ屁理屈ですかwww
本当にNothingを代入しなければ絶対に消えないというのなら言語仕様としては合理なんだけど Unloadしてからしばらくたつとメモリーからきれいさっぱり消えている事がある。この曖昧さが問題。 ある一定時間変数にアクセスが無いと用済みと勝手に判断して自浄するのだろうかねぇ?
>>344 曖昧なのは、お前がちゃんと理解してないからだよ。
全て説明してやるから、お前が理解できない
(ちゃんと動く)コードを書いてみ。
>>341 それって前に使ったのと同じオブジェクトがNewされるわけじゃないだろ?
Formは同じもんが使われるところが悍ましいって事だろうに?
国語力大丈夫か?はい論破。
>>342 >どこからも参照されなくなった時点で
>自動的に消えるんだよ。
アンロード後にどこからも参照されてないフォームが消えない理由は?
348 :
デフォルトの名無しさん :2013/02/05(火) 13:22:43.26
論破できない理由を「フォームは特別だから」と言って誤魔化すのはちょっちねーwwww
>>347 どこからも参照されないという証拠は?
お前がどこからも参照されていないと勘違いしているだけで
俺なら、どこから参照しているか言えるだろうね。
>>346 > それって前に使ったのと同じオブジェクトがNewされるわけじゃないだろ?
フォームも同じですよ?
前に使っていたのと同じオブジェクトがnewされることはありません。
その証拠に変数が初期化されます。
>>346 ってまだUnloadとNothingが
別の単語だって気づいてないよ。
どうせUnloadしたのに同じオブジェクトが使われる!
Unload=NothingだからNothingしたはずなのに
同じオブジェクトが使われるおかしい!とか思ってるんだぜ。
お前ら、論破くんに釣られすぎ
>>350 >その証拠に変数が初期化されます。
初期化されないというのが今の論点だろうに?
アタマ大丈夫か?
>>351 Unloadされても同じオブジェクトを使用されるが、Nothingで違うオブジェクトが使用されたって言ってるんじゃないのけ?
良くわかってないのに答えようとするのが敗因。はい論破。
つまりNothing代入はFormのプロシージャ―内の変数を初期化する唯一の手段。 Nothing代入はこのように必要不可欠な局面もあるということを再認識せよ。 これが結論でいいんじゃね?
あ、変数って言ってもStatic変数ね。あとフォーム内に定義されたグローバル変数も然り。
358 :
デフォルトの名無しさん :2013/02/05(火) 16:15:45.39
>>287 ByValは関数で定義されるものだからparameter、
ByRefは変数のエイリアスだからargumentと区別するのはどうだろうか。
ByVal paramValue, ByRef argValue
たとえば羊の皮を被った狼さんがいたとしてその事実を知っているにもかかわらず
その動物を羊さんとして扱ってしまったらパックリやられちゃうだろ。たとえ羊さんの皮を
被っていようと狼さんであると認識できる場合にはそれを狼さんとして扱うべきだ。
ウルフゴート理論と名づけよう。
比喩の下手な人間
For N = 1 To 100 Form1.Show Set Form1 = Nothing Next
>>356 なんでこういうアホな俺解釈を垂れ流すのかね
Nothingは参照カウントを一つ減らすだけ
Formはどこからも参照されてなくてもNthingなくしては自己消滅できなかった。
だな
>>364 グローバルに存在するということだけで、参照カウント+1
>>366 それが隠れたグローバルって奴かな?フォームには次の4つの状態がある。
[1] 作成されているが、ロードされていない。
[2] ロードされているが、表示されていない。
[3] 表示されている。
[4] メモリ上に作成されていない。(解放状態)
例えばロード前にグローバル変数にアクセスされた[1] の段階のフォームは
すでに参照カウントが1ということかな?
その通り。ロードされるかされないかはNothingに関係しない。 逆に言うとUnloadしてもNothingと何の関係もない。 これが模範解答かな?
369 :
デフォルトの名無しさん :2013/02/05(火) 17:52:44.35
うむ
インスタンス化って単語知らないのかしら
>>367 確かにフォームの挙動はわかりにくいよな。
Loadしなくてもフォームのグローバル変数にアクセスすればFormsコレクションに登録される。
しかしこの時ロードはされない。つまり[1]の状態
Loadしなくてもフォームのプロパティやコントロールにアクセスすれば自動的にロードされる。
つまり[2]の状態。
一度もShowしなくてもどちらもメモリー上には存在する。前者の場合はNothingの代入で
参照カウントがデクリメントされ、結果メモリーから消える。
後者の場合はUnloadをして[1]の状態となり、Nothingの代入で参照カウントがデクリメントされ、
結果メモリーから消える。
神経質にメモリから消す必要のない言語、それがVB6
>>370 単語を知ってる云々ではなく、インスタンス化がわかりにくいのがフォームだって事でしょ
おしゃべりさん
>>372 しかし、インスタンス化したフォームは神経質にメモリから消さないと
二度目に開いたフォームのActivateイベント内でStatic変数がTrueになっていて
一回しか行われない様に意図した初期化ルーティンが走らないとかいうバグにつながるから要注意だな
Formのローカルメソッド内のstatic変数に頼った設計なんかするのが糞
>>374 Formを閉じたら初期化されて欲しい変数なら、Staticにする必要無いじゃん
アホす
>>376 Activateイベントへの再入を禁止するのが目的だろ?
なるべくグローバル変数を使わないようにする指針は間違ってないだろう。
378 :
デフォルトの名無しさん :2013/02/05(火) 18:29:29.58
>>377 一回しか実行したくないんならForm_Loadに書け
Form.tagとか使えばいいんじゃ
>>379 Form_Loadに書けない事情があったんだろうよ?
Activate使うときはそんな時くらいだろ。
そんなことも推測できないとか
アホ通り越して経験浅杉だろ?
Activateイベントへの再入を禁止とか、糞設計もいいとこ
383 :
デフォルトの名無しさん :2013/02/05(火) 18:33:09.44
>>380 それこそ何の意味もないような気が汁www
>>382 そんなこともないだろ。再入はどうか知らんが上級者のコードでもActivateを使ったコードはよく見るよ。
>>384 Activateに再入禁止処理書くような奴は上級者じゃねえよ
俺の思い込みによるとだな ロードってOS上にウィンドウを作成してFormインスタンスとリンクさせる事だろ? VBは初心者向けと言う事で必要な時に自動でやってくれる ただそれだけ 全然良く分からなくないよ
Formで既定のインスタンス使ってるとロクな事がない。 なぜなら、それをする奴は、たいてい既定のインスタンスが 何かをわかってないからだ。
>>385 何をもって上級者と言っているか知らんが、キミは上級者ではなさそうだね。
389 :
デフォルトの名無しさん :2013/02/05(火) 20:01:26.21
>>386 かなり違っているがまあ意味は通るから良しと汁。
390 :
デフォルトの名無しさん :2013/02/05(火) 20:02:53.50
VB6を使っている時点で上級者なんてあり得ない事に気づけカス いつまで入門者用言語使ってるんだい?せめてC#くらいやれよな
391 :
デフォルトの名無しさん :2013/02/05(火) 20:13:36.81
みんなグローバル変数ってどうやって管理してる? 静的関数が使えればいんだけど、VBだとないじゃん。 インスタンスをグローバルに使いたいときグローバル変数 を用意するしかないじゃん。構造体とか使ってまとめてる? どうやってる?どうやんの?よくわかんない。
ActiveXにしてしまえ
>>391 日本語で(ry
エスパーすると標準モジュールで済むのでは?
ム板で最もホットなスレ
396 :
デフォルトの名無しさん :2013/02/05(火) 20:38:48.58
>>394 日本語だよ。エスパー能力にたよるんじゃなくて言語能力を駆使してちゃんと読んで。
ちゃんと書いたんだから。ちゃんと読んで。ちゃんと書いたんだから。
管理できないからグローバル変数なのに、無茶な事言うよなぁ
>>391 先頭にPrivateと書いて関数を宣言すれば静的関数ですが何か?
399 :
デフォルトの名無しさん :2013/02/05(火) 20:43:41.12
>>397 無茶じゃないよ。管理できるよ。どうやってんの?教えてよ。
管理できると言い切ってどうやるのと質問する厨房w
401 :
デフォルトの名無しさん :2013/02/05(火) 20:56:12.29
>>398 わけわかんないこといわないで、イカるよ?
/.⌒ヽ
/ .\
../ ヽ. \
(./ ヽ. )
/ l"
.ノ l
/ \,, ,,/ |
| (●) (●)||| |
| / ̄⌒ ̄ヽ U.|
| | .l~ ̄~ヽ | |
|U ヽ  ̄~ ̄ ノ |
|  ̄ ̄ ̄ |
C言語なら静的関数はスコープの違いだけだからなw まあイカるなこのイカ臭い青二才がよwww
▅▅▅▅▅▅▅▅▅▅▅ ▄▇▓::▃▃ ▃▃ ▓▇▄ ▄█▓░◤ ◥ ◤ ◥ ░▓▇▄ ▄█▓░ ◢ ◣ ◢ ◣░▓▇▄ ▄█▓░ ▐ █▋▐ ▐ █▋ ▐ ░▓▇▄ ▄█▓░: ◥ ◤ ◥ ◤ ░▓▇▄ なぜか無性にコピペしたくなる █▓░▒ ◤▀▀◥ ▃ ▃ ◤▀▀◥▒:░▓█ █▓░ ::::▒░░::▊ ▲ ▐ :::░░▒::::░▓█ なのに初心者にはコピペできない █▓░:: ◥▃▃▅██▅▃▃◤ ░▓█ ▀█▓░ ███████ ░▓█▀ ▀█▓░ ▐▓▓▓▓▓▓▌ ░▓█▀ ▀█▓░ ▀▀▀▀▀▀ ░▓█▀
▅▅▅▅▅▅▅▅▅▅▅ ▄▇▓::▃▃ ▃▃ ▓▇▄ ▄█▓░◤ ◥ ◤ ◥ ░▓▇▄ ▄█▓░ ◢ ◣ ◢ ◣░▓▇▄ ▄█▓░ ▐ █▋▐ ▐ █▋ ▐ ░▓▇▄ ▄█▓░: ◥ ◤ ◥ ◤ ░▓▇▄ なぜか無性にコピペしたくなる █▓░▒ ◤▀▀◥ ▃ ▃ ◤▀▀◥▒:░▓█ █▓░ ::::▒░░::▊ ▲ ▐ :::░░▒::::░▓█ なのに初心者にはコピペできない █▓░:: ◥▃▃▅██▅▃▃◤ ░▓█ ▀█▓░ ███████ ░▓█▀ ▀█▓░ ▐▓▓▓▓▓▓▌ ░▓█▀ ▀█▓░ ▀▀▀▀▀▀ ░▓█▀ 本当だ!
あれ? できるじゃん
♥
>>396 えっとね、俺は
>>394 さんじゃないんだけど、
>>394 さんの言いたい事はだいたいわかる。
あなたのいう
>インスタンスをグローバルに使いたいとき
って、まあ、オブジェクト指向的に言えば、シングルトンを用意すると
思いますねん。VB6で、お手軽にシングルトン実装したいなら、
標準モジュールという形になりますねん。
まあ俺は、標準モジュールと言えども、そこのフィールドに無制限に
アクセスできないようにPrivateにして、アクセッサ用意するけどね。
なんつーか、静的 の部分で定義が曖昧なままスレが進んでそうだな。
>>408 つまり
「うふ~ん、あは~ん」
って事だな
410 :
デフォルトの名無しさん :2013/02/05(火) 22:57:57.43
>>407 それはわかる。
>>391 を読んでそういう答えをしたのなら余裕で納得するけど、
日本語として意味がわからないけどエスパーでこうやればいいなんてそんなものは認めない。
俺はたとえ頑固じじいとののしられさげすまれようともそんなことは絶対に認めない。
>>394 は俺が書いた文章をちゃんと読んで答えるべきだ。たとえば手塩にかけて育てた可愛い可愛い
娘がちゃらちゃらした彼氏を家に連れてきて、そのちゃら夫から
「娘さんと結婚する意味がよくわからないんだけど娘さんを僕にください」といわれて
もあげないだろ。あげないと即答するだろ。たとえそのちゃら夫が一流企業に勤めていて
イケメンだったとしてもあげないだろ。そのちゃら夫にほれてる娘をすこし可哀想に思う
気持ちはあれど、娘の幸せを思って心を鬼にしてそのちゃら夫を拒否するのが親としての責務だと心得るだろ。
ちゃら夫に我が最愛の娘をあげるわけにはいかないだろ。俺が言ってることわかるだろ。はい論破。
411 :
デフォルトの名無しさん :2013/02/05(火) 23:11:13.88
>>408 静的関数といってんだからオブジェクトを作らずにアクセスすることができる
関数に決まってんだろ。お前と
>>398 のイカ野郎の頭にはぼかしでも
かけられてんのか?お前らの脳みそはわいせつ物みたいなものなのか?はい論破。
ちなみに俺はVB6でも、標準モジュール上に publicにアクセスできるグローバル変数は使わない。 グローバル「 定数 」なら使う。
>>411 決まってるのはお前の頭の世界というローカルなスコープの範囲だけであって
静的関数の解釈は処理系で全く異なるものになる。
井の中の蛙は去れ。はい論破。
414 :
デフォルトの名無しさん :2013/02/05(火) 23:29:07.19
俺は趣味グラマで1人で開発してっから
なんか桃白白っぽい
416 :
デフォルトの名無しさん :2013/02/05(火) 23:41:37.85
>>413 常識で考えればわかるだろ、VBのスレなんだから
VBで考えればおのずと明らかになるだろ。いろんな処理系を語れと
いうスレならまだしもここはVBのスレなんだからVBの処理で
考えるのが常識だろ。カレーの隠し味に何入れる?って話をしてるとき
あたしはアップルかなという話をしてるときに、「アップルってiPhone入れんの?
アップルって言ってもいろいろあるんだから」といってるようなものだろ。
最初にアップルといった人はけして井戸の中のカエルさんじゃないし、
アップルのiPhoneの話をした人はけして高みから広い視野で物事をみることが
できる鳥さんじゃない。ただのマカー。はい論破。
417 :
デフォルトの名無しさん :2013/02/05(火) 23:45:40.81
>>412 変数は書き換えられるからね。うん、定数にできないのはプロパティでとかね。そういうことね。はい論破。
しかし、今時VB6なんて使ってる人間はかなりのオッサンのはずだと思うけど、 「はい論破」だか何だかしらんけど幼稚臭い奴が多いな。
>>416 VB6で静的関数っつったらStaticなSubかFunctionのことなんだが
一般的な静的関数はインスタンスメソッドじゃないクラスメソッドのこと
そういう意味でもVB6ではStaticが該当する
ただし、VB6では(俺の記憶では)インスタンスなしでクラスメソッド呼べないけどな
>>419 そもそもVB6に静的なプロシージャなんて概念はありません。
.NETにはあるが、メソッドが静的であることを表すキーワードはSharedです。
421 :
デフォルトの名無しさん :2013/02/06(水) 00:58:52.34
>>419 お前は俺がStaticの話をしてると思ってレスしてるわけね。よくわかった。解決した。どうもありがと。はい論破。
>>420 じゃあVBでStaticなSubは何と言う概念なんだ?
>>412 グローバルな定数にするくらいなら、その定数の値をファイルに書き出すなぁ。
結局グローバル変数使うことになるけど。
定数なんて後で変更したくなることもあるだろうし。
その場合、グローバル変数は初期処理で読み込む以外は参照のみというようにする。
それ以外のグルーバル変数は極力使わないようにするのはもちろんだけど。
>VBでStaticなSub こいつ、仮面の忍者赤影だな?
また、論破君の爆釣り成功だな。 お前ら、なんだかんだ言って論破君が好きなんだな。
427 :
デフォルトの名無しさん :2013/02/06(水) 12:18:05.53
>>426 そうやってなんでもかんでも釣りと認定してあたかも自分は全部わかってます
みたいな態度とるのってカッコ悪いよ。論破されたときにどうせ釣りだとわかって
たしとブロークンハートをリカバリーしようとしているのが見え見えでカッコ悪いよ。
露出の多い服着てカッコいいアピールしようとしたけど陰部まで透けていて
公然わいせつ罪で御用となるようなもんだよ。はたからみればただの露出狂でしかないよ。
露出狂も自分がカッコいいと思ってる一種の陶酔状態にあるのかもしれないな。
俺の臨床心理士としての直感がそう告げている。はい論破。
こいつちょっと精神的に問題ありなんじゃね?
>>428 そんなこと一昨日から分かっていたはずでは?
それを承知で構っていたのでは?
430 :
デフォルトの名無しさん :2013/02/06(水) 14:34:22.19
そんなことよりVBの話をしようじゃないか。 VBのString型って速すぎじゃね。C#やJavaにはString型の 遅さを補うためにStringBuilderクラスが用意されているがVBには そういうのがない。VBのString型がチートすぎるのがその理由 なんじゃないかと思うんだけどどう思う?大量の文字列を扱うために 専用のクラスとか別に作らないだろ?みんなその辺どう?
>>430 midがあるから必要無い。
この話題終了。
ただのかまってちゃん化
433 :
デフォルトの名無しさん :2013/02/06(水) 15:10:07.04
>>431 いやいやそれはおかしいでしょ。それをいったらJavaやC#の
StringクラスにはSubstringがあるからStringBuilderクラスは
必要ないということになるわけだけれどもそれはStringBuilderクラスが
存在することと矛盾するだろ。だからMidがあるから文字列を扱う
クラスが必要がないというお前はまともにものを考えてないかぼちゃ頭の万年ハロウィン野郎。はい論破。
そもそもVBのStringが速いというのがまちがい ↓ 文字列結合って遅いよね ↓ midを使えば速い ↓ 終了
435 :
デフォルトの名無しさん :2013/02/06(水) 15:31:32.39
>>434 Midって文字列を結合できるんだーへー。はい論破。
そもそもVBのStringが速いというのがまちがい ↓ 文字列結合って遅いよね ↓ midを使えば速い ↓ Midって文字列を結合できるんだーへー ↓ ググレカス ↓ 終了
437 :
デフォルトの名無しさん :2013/02/06(水) 15:41:24.35
>>436 だからお前の考えだとMidで文字列を結合できるんだろ、へー、はい論破。
440 :
デフォルトの名無しさん :2013/02/06(水) 16:45:28.96
>>438 そんなものはとっくにググったよ。
>>434 を読んで即座にググった。
そしてすぐにMidで結合する方法を見つけた、秒殺だった。それを見たときに
Midで結合するなんてすげーイカしてんじゃん、なんてこったい万年ハロウィン野郎は
俺のほうじゃねえかという思いが俺の脳内を瞬時に駆け巡ったわけ。
へえという感動詞は感心することをあらわすだろ、俺のへーはそういう万感の思いが
こもったへーだということをお前は俺の立場に立って理解するべきだし、
へーの重みを知ったお前は俺にもっと優しくしろ。はい論破。
ちょっと怖い
んでMidで結合したら早いのか? VBでも文字列の結合は遅いからなるべくやるなって言われてた処理だぞ それでも必要な場合があるからStringBuilderとか作ったわけで
444 :
デフォルトの名無しさん :2013/02/06(水) 17:18:00.11
また10年前の話題か
446 :
デフォルトの名無しさん :2013/02/06(水) 17:32:00.28
>>445 10年前にこんな高度な議論が行われていたわけがないだろ。
現代に生きる俺が話題を提供したわけであり、現代の議論だ。はい論破。
MIDが早いんじゃなくて、文字列の連結回数を少なくしてるだけじゃないか 途中で連結してる文字列使いたいときに等価じゃない MIDがやってるのは連結(=拡張)じゃなくて書き換えてるだけ しかし早いな。MID直接メモリの文字列書き換えてるのか MIDの処理結果で文字列拡張することになったらパフォーマンスでないだろ、これ
>>448 MIDで連結してない。連結回数を少なくしてる
MIDは書き換えてるだけ。書き換えは早い
MIDで連結したら遅い
あってるかどうか知らんがそういう主張だろ
まじで何をいってるのかわからん。 MIDで連結したら遅いってどういうこった?
Stringをそのまま連結したら遅いけど、Midを使えば速いよって流れなんだけど。
連結ってJoinじゃないの?
>>424 ファイルに書きだしてまとめる、というのも手だけど、
こういうファイルが増えてくると
ソースコード内に記述した方が手っ取り早く参照できる事に気づいた。
455 :
デフォルトの名無しさん :2013/02/06(水) 18:28:26.14
>>446 > 文字列連結のパフォーマンスを向上させる方法
> support.microsoft.com/kb/170964/ja - キャッシュ2001年1月31日 - キーワード: kbhowto
12年前
>>451 そのテクニックは、正確には文字列連結(拡張)は1度ですませて、Midで中身を書き換えてるだけ
Midで高速に連結する、じゃなくて、Midで高速に連結文字列を作成する、ってのが正しいと思う
Midで拡張は解らんな。できるのか?
a = "文字列"
b = "追加文字列"
Mid(a, 4) = b
見たいな事か。VBAではエラーになってるが
459 :
デフォルトの名無しさん :2013/02/06(水) 18:48:05.15
>>430 >VBのString型って速すぎじゃね。C#やJavaにはString型の
>遅さを補うためにStringBuilderクラスが用意されているがVBには
>そういうのがない。
正直、バカすぎる。
VB6の文字列も & で連結していくと、超遅い。
VB6のMIDは文字列の置き換えであり、
JavaのStringBuilderクラスも文字列の置き換えである。
MidもStringBuilderもやってる事は同じ。
ちなみにJavaの場合、ソースコードで文字列を + で連結していっても
コンパイルで最適化され、StringBuilderに置き換えられている。
VBのコンパイラがクソ
>>453 参照するたびにファイルから読み出そうとするから定数の方が手っ取り早いと思ってるのかな?
起動時に全部読み込んでしまえば参照にかかる時間は大して変わらないと思う。
定数だとファイルから読み込む処理を作る必要がない分一時の楽はできるけど
定数の修正が入るたびにコードの修正が必要だから、コードの手離れがよくない。
ファイルが増えると言ってるけど、ファイルのまとめ方や扱い方をを工夫すれば
そんなに増えるとは思わないけど。
463 :
デフォルトの名無しさん :2013/02/06(水) 19:15:34.62
>>460 "a"をStringで10まんこ結合したら
Javaが32秒
C#が10秒
VBAが2秒だったの。この結果から見ればVBのStringが速いって考えてとうぜんでしょ。なにさ、ふん!はい論破。
そりゃJavaやC#のStringはクラス・オブジェクトだし旧VBのStringはクラス・オブジェクトじゃないし
>>460 テンプレ回答乙
StringBuilderによってメモリ確保の回数が減る→処理が速くなる
でもそれは処理の一部にしか過ぎないだろ?
JAVA/C#はそれ以外の部分が遅すぎる
現実にはVB6のが速い
>>463 最適化は切ったか?
VBAで確認したところは誰も突っ込まないw
仕事で必要ならともかく いまどきVB6の環境もってるやつのほうが少ないだろ
となるとVBAつっても最近のOfficeに搭載されてるやつとなるとVB6より性能改善されてる可能性が
VBAってインタプリッタ?
>>467 それは言い訳にできんだろ。
VB6以前のスレなんだし。
VB6 コンパイルしてから実行 VBA インタプリタで実行
そう、だから結果が覆されるとは思えないだろ? VB6が速いと困るの?
最近のOffceのVBAはVB6より速い可能性は?
>>472 VBAはインタプリタだとされることもあるけど、純粋なインタプリタと言うにはちょっと問題が
一応メニューにコンパイルあるぞ
>>474 可能性は否定できない
君がVB6とJAVAとC#動く環境あるなら試してみてくれたまえ
>>462 ちょっと違うな。
定数をソースコードに記述、VB6だと
標準モジュール→プロパティもしくは定数を返す関数っていう手があるんだけど、
標準モジュール名 . 定数名
って使う時に記述するから、それがすぐにどこかわかるっしょ。
誤って変数にセットする事もない。
外部のファイルにまとめるのはstrutsの時代に懲りた。
>>463 だから、文字列の連結は
Java では + で、VB6 は & だが
Java → StringBuilderがある
VB6 → MID がある
↓これが間違い。
>遅さを補うためにStringBuilderクラスが用意されているがVBには
>そういうのがない。
C=Space(Len(A)+Len(B)) Mid(C,1,Len(A)) = A Mid(C,Len(A)+1,Len(B))=B L=Len(A) A=A&Space(Len(B)) Mid(A,L+1,Len(B))=B
481 :
デフォルトの名無しさん :2013/02/07(木) 00:16:55.28
C=Join(Array(A,B))
C=Join(Array(A,B),"")
きみ何がしたいの?
>>479 何が問題なんだ?ソース読めないのか?
あれは毎回文字結合するんじゃなくて、ccIncrement = 50000文字単位で文字列を拡張することにより
連結回数を減らして高速化する、って例だぞ
文字連結そのものは&でやってる。つかMidで文字連結なんて出来ない
485 :
デフォルトの名無しさん :2013/02/07(木) 01:00:42.20
>>455 ってオフセットの値を外部に出してんの反則じゃね?
>>485 反則かどうかまずお前のルールを書いてみろ
487 :
462 :2013/02/07(木) 07:25:45.49
>>477 それはグローバル変数でもできる。
それだけだと手っ取り早いという理由にならない。
グローバル変数だと誤って変数にセットするデメリットと
定数だと定数変更の度にコードを修正するデメリット
どっちを取るかはもちろん設計者の考え方一つ。
個人的には前者のデメリットの方が後々コードの修正はない分手離れいいから前者を採用する。
たとえ定数修正であってもコードに手を加えるということは修正の度にバグの可能性はあるわけで
そのリスクをずっと背負うのは御免だ。
何を言ってるんだか。はい論破。
グローバルに変数を置いたら、Option Explicitが効き辛くなるから嫌だ
まーた意味不明な事を
外部ファイルで設定は嫌とかいってる奴が、Linux文化を知ったらどう思うんだろうか
今日は、いろんなスレが静か
493 :
デフォルトの名無しさん :2013/02/07(木) 14:03:30.68
論破さんのプログラム教室はーじめーるよー。 Class1のTestを見てほしい。Methodに1を渡して Methodではその値を出力するだけなのに2になっちゃうわけ。 ByRefは潜在的リスクがありまくりなわけ。 だからVBでは基本的にByValを記述するべきなわけ。 Class Class1 Private Field As Integer Public Sub Test() Field = 1 Call Method(Field) End Sub Private Sub Method(value As Integer) Field = 2 Debug.Print value End Sub End Class
クラス内メソッド間で引数として引き回すのなら、メンバにする必要無いよね
495 :
デフォルトの名無しさん :2013/02/07(木) 14:19:41.14
>>494 おいやめろ、まるで俺が不必要なことをしている無能みたいじゃないか。
フィールドを引数にしたいときもあるだろ?
そ・う・い・う・と・き・も・あ・る・だ・ろ。はい論破。
一文字ずつ句切らないといけないような苦しさでも論破なのか…
ネタが緩すぎて釣れない
498 :
デフォルトの名無しさん :2013/02/07(木) 14:54:19.57
>>497 釣る気は1ミリもないけど、
>>493 には賛同するだろ。納得するほかないだろ。
じゃあそれを正直に書き込めばいいだろ。さすが論破さんだな正論すぎるとそう
書き込めばいいだろ。はい論破。
500 :
デフォルトの名無しさん :2013/02/07(木) 15:23:38.97
質問に対する回答が正しいか間違っているかを判断するのは、質問した本人です、お気を付けください。
何が正しいかわからないから質問するんじゃないのか
リスクだけ論じるのは、自分の都合の良いとこだけ主張してるだけ それぞれのリスクとメリットを評価しないと正確な判断ではない まあ、論破君には理論が通じないから言っても無駄なんだろうけど
505 :
デフォルトの名無しさん :2013/02/07(木) 17:46:19.58
はいはい、ケロンパ
ここは論破ールームだな
えらくまた懐かしいのというか歳がバレそうなというか
>504 論破君には理論が通じない……論理破綻、略して論破、か。
510 :
デフォルトの名無しさん :2013/02/07(木) 17:54:03.83
>>504 じゃあお前はどう思ってるわけ?
>>493 についてどう思ってるわけ?
俺はByRefにするなといってるんじゃなくてByValが基本だといってる
わけであり、たとえByRefを使うことにメリットがあろうと俺はそれを
吸収することができる。いうなれば魔人ブウ。自分の意見さえ述べることができないお前は
俺と同じリングに立つことさえできないミスターサタン。ビーデルの父親であることだけが取り柄のハゲ。はい論破。
魔人ブウ ミスターサタン ビーデルの父親 論破童貞君のプロファイリング完了しますた
512 :
デフォルトの名無しさん :2013/02/07(木) 17:59:48.88
じゃあどうせだからドラゴンボールのキャラで誰が好きかって話する? 俺はピラフかな。あの声がかっこいい。
ちゃんとしたプログラマならちゃんと使い分けるのが基本にきまってるだろ
まぁ、ByValを基本とせよというのは、俺も同意できる。 ByRefにしなければならないときのみ、ByRefにする。
byval記述がいちいち面倒くせえからしてないわ
ArrayのByValはByValだっけ?ByRefだっけ?
>>515 VB.NET登場以降は、VB6でもByVal/ByRefを省略しないのが推奨。
デフォをByRefにしてるVB6がキチガイ
519 :
デフォルトの名無しさん :2013/02/07(木) 18:15:15.23
>>514 きたー正直者きたー。ですよねーですよねーそうですよねー。
やっと良心を持ったまともな人間にめぐり合えた気分だわ。
>>515 その不埒さ度し難いわ。ふとどきものというのはお前のために
ある言葉だと思うわ。
>>493 のような問題があるんだよ。大変なんだよ。はい論破。
>>493 は単純な設計ミスじゃねえの?Fieldを引数として渡す可能性があるって設計段階でわかるだろし、VB6が省略時ByRefだってのは周知の事実で設計したやつが場間
教育上ByRefやByVal記述を徹底させると
>>493 のようなバカな設計ミスやらかしても問題にならないだけであって、
>>493 は設計した奴が明らかにバカ
まぁ、適切な例を挙げられなかったというのは、大目に見てやろうぜ
523 :
デフォルトの名無しさん :2013/02/07(木) 18:33:39.47
>>520 ,
>>521 お前ら似たような文章書きやがってさすがの俺もピキるよ。
お前らだって俺を怒らせたくないだろ。
>>493 の設計はけして間違ってない。
フィールドを渡したいときもある。ByValを書かないというルーズさを
発揮しなければ
>>493 のコードは全然問題ないわけよ。ByVal付けるだけで
問題なくなるわけよ。じゃあByValを省略する習慣が悪いんであって設計は
悪くないということになるよね。な・る・よ・ね。はい論破。
byvalを省略する習慣って何だ? 設計・仕様でbyvalが必要なところでわざわざ省略するの?
ByVal,ByRefを省略せず記述する習慣が無いのであって、ByValを省略する習慣だと日本語的に意味が違う。プログラマが言語に疎くてどうする。
VB6はByRefが既定。その理由も知らずしてByValを語るな。はい論破。
528 :
デフォルトの名無しさん :2013/02/07(木) 18:44:56.04
>>524 ByValを書くのがちょーめんどくさいという理由でByValを記述しないという
行動が生活の中で日常的に見られることをByValを省略する習慣と呼ぶことにすると、
ちょーめんどくさいという理由でByValを省略しているわけであるから、それによって
影響を受ける範囲を予測することは難しいわけであり、わざわざというよりは
そう書いたほうが手っ取り早いと思ったという精神活動が予想されるわけ。
お前がそういうやつだって言ってんじゃないよ。そういう人もいるだろうから
>>493 はプログラムの教科書の1ページに載せられてもいいものだろ。はい論破。
VB以外でメソッドの引数がデフォで参照になってる奴ってあんの?
たしかに使い方の間違いの例として
>>493 は教科書に載せてもいいかもね
デバグして大変だったという経験あるなら普通設計上必要な箇所では省略しないだろな 設計・仕様を全く理解してないか、デバグ経験が無いか、
532 :
デフォルトの名無しさん :2013/02/07(木) 18:49:24.70
関係ないけど上も下も空行一行入れるんだけど入れないのが普通? Class Class1 空行 略 空行 End Class
VB6にClass~End Classは無い 可読性の問題なら社内規定などルールがあればそれに従えばよい
534 :
デフォルトの名無しさん :2013/02/07(木) 18:51:43.07
>>525 お前は「記述する習慣がないこと」と「省略する習慣」とは
意味が違うというわけ?水が沸くこととお湯が沸くことは違うんだ
といっているようなものだ。同じだ。水を沸かしたらぺヤング食べれ
ないけどお湯を沸かしたらぺヤング食べれるとかないだろ。同じものだ。
どっちもぺヤング食べれる。はいインスタント論破。
>水が沸くこととお湯が沸くこと 違うだろ 水とお湯が同義なのか?おまえん中では
>>534 ぺヤングの由来も知らんくせにぺヤング連呼すんなこのともさん説破。はい論破。
日本語の話なら >水が沸く は誤りです 「沸く」という動詞の使い方の誤りです
>>534 >「記述する習慣がないこと」と「省略する習慣」とは意味が違うというわけ?
おまえ論理的思考大丈夫?
539 :
デフォルトの名無しさん :2013/02/07(木) 18:58:48.42
>>531 だ~か~ら~そんなわからずやなこと言ってたらさすがの
俺も怒るよ。怒らせたくないだろ?必要か必要でないかと
わかる状況であれば省略しないのはそれはそうだろ。省略しては
いけないところでは省略してはいけないといってるだけで
同語反復でしかないだろそんなものは。設計とかそういう問題じゃない。
基本的にはByValを記述するっていう方向で考えるようにしておけば、
プログラミング超はかどるだろ。はい論破。
>>537 いや、日本語的に間違ってないよ
「水が沸く」は水が泡立ってる様子を指す、泡立っている原因については何でもいいから沸騰である必要もない
>>533 正しい。
Class~End Classを書いてドヤ顔してる奴、それを指摘しないで釣られてる奴
はいい加減死ぬまでロムってろください。
>>540 ボイルシャールの法則を知っていれば気圧でお湯にでも水にでもなるって事知らないの?はい論破。
>基本的にはByValを記述するっていう方向で考えるようにしておけば これはこの前提条件満たした人間しかいない場で考える話では この条件満たしてない奴がいる場で前提として語るのはおかしい
544 :
デフォルトの名無しさん :2013/02/07(木) 19:01:30.14
>>537 どう誤ってんのか言える?え?言えないの?じゃあお前の頭が誤ってる。はい論破。
>>538 お前がな。はい論破。
値渡しのの方が安全だから初心者向けと思うのは俺だけ? 実効効率を考えてByRefをデフォにするくらいならOLEなんて使うなといいたい。
546 :
デフォルトの名無しさん :2013/02/07(木) 19:03:37.72
>>543 この前提条件てどの前提条件?よくわかんなかった。
何を前提として何を語るのがおかしいの?ちゃんと書いて。はい論破。
関数の実効前後で変数の内容が変わっているなんて、なぜにエクスタシーを感じないかな?
548 :
デフォルトの名無しさん :2013/02/07(木) 19:06:00.79
ああいま
>>545 がいいこといった。そうなんだよそういうことなんだよ。
>>542 それは「沸騰」の話だな
「お湯」には「熱い」という条件があるから沸騰の条件は必要ないが「熱い」がどの程度の温度を指すのかは規定されてない、人が触って暖かく感じれば「お湯」なのだろう
「水」は温度に条件はない、一般用語としては「お湯」も含めて液体の状態のH2Oを指すが、科学的な話をするなら氷も水蒸気も水(H2O)だよ
>>549 「水」は温度に条件はないというのなら、水が沸くを正当化する事になるぞ?
ちょっと旦那さん、しっかりしろよな。
水が沸く ・・・ (気圧の関係上必ずしもお湯になっているとは限らない)沸騰して沸いてるのかもしれないし、別の原因で泡立っているのかもしれない お湯が沸く ・・・ いかな原因で沸騰・泡立ちしていようとお湯であることに変わりはない
>>550 「水が沸く」は日本語として間違ってはいないが
「水が沸く」=「お湯が沸く」の時もあれば「水が沸く」≠「お湯が沸く」のときもある
こんな単純な表現だけでは同義とするのは無理がある
>>541 問題の論点を理解してない
何の言語で記述されてるかという問題ではないのだよ
(それが旧VBのコードでないことくらい見りゃ誰だってわかるっしょ)
554 :
デフォルトの名無しさん :2013/02/07(木) 19:15:51.20
なんで水の話してんだよw
555 :
デフォルトの名無しさん :2013/02/07(木) 19:17:26.45
音が聞こえることを耳が聞こえるというのと同じことで、
どこにフォーカスするかの違いでしかない。
水が沸くもお湯が沸くもどっちも正しい日本語だ。
今月一番のバカは
>>237 に決定な。はい論破。
長文論破君はちょっと頭がおかしい 本当に論破出来てるかどうかは置いといて、論破行為して何が楽しいのか、
557 :
デフォルトの名無しさん :2013/02/07(木) 19:21:08.37
>>555 アンカーミスった。
>>237 さん誠に申し訳ございませんでした。
今回このような不祥事をしでかしたことはわたくしの不徳の
いたすところでございます。こんごこのようなことがないよう
注意してまいりたいと思います。このたびはご迷惑をおかけして
まことに申し訳ございませんでした。はい論破。
>音が聞こえることを耳が聞こえるというのと同じことで、 音が聞こえると耳が聞こえるは意味が違うだろw 前者は事象を感じ取ったという意味だが後者は耳の能力の話だろw
>>487 グローバル変数を定数として扱うところでもう問題があるんよ。
設計者がそのソフトを一生面倒見るならまだしろ、
どうせいつかは引き継ぐ。
引き継いだ後に、はっきりと「 定数 」である事がわかる方がいいんでないか?
VB6でなければ、コンストラクタでファイルから読み込んだ値をセットして、
後は読み出ししかできないようにできるが、VB6はそれができない。
560 :
デフォルトの名無しさん :2013/02/07(木) 19:24:01.01
>>558 だから音を聞くことができることによって耳の能力を認識することができるんだろ。
だから耳に焦点をあてているのか音に焦点をあてているのかの違いでしかない。
水が沸くというのは水が温まる過程に焦点をあてているのだから
お水さんが主役だが、お湯が沸くといったときは温まったときの状態に焦点を
当てているわけでありお湯さんが主役というそういう違いでしかない。まったく
同じことをあらわしている。はい論破。
>>463 だから、文字列の連結は
Java では + で、VB6 は & だが
Java → StringBuilderがある
VB6 → MID がある
↓これが間違い。
>遅さを補うためにStringBuilderクラスが用意されているがVBには
>そういうのがない。
>>553 スレタイも読めないのかクソが!
問題の論点以前の話w
>>560 耳の能力を問うために音を聞かせるいう前提のもとで
その回答としての「音が聞こえる」と「耳が聞こえる」は耳の能力の有無を知る上では同じ結果を得られるけど
意味としては同義ではないだろ
言語オタクが論破してるつもりでドヤ顔しても 実生活ではちっとも評価されないのが納得いかんのやろ 人格崩壊の危機というべき
>>559 クラスモジュールで管理しちゃいけないのかな?
論破君はメ欄を空欄にしてるのが特徴じゃね
>>562 問題の焦点はそこじゃなくByVal,ByRefの話だからね
VB.NETでも旧VBでも引数の書式が変わらないなら問題は無いだろう
実際に使ってる自分のコードで質問に来たのなら誘導すべき対象にはなるだろうが
568 :
デフォルトの名無しさん :2013/02/07(木) 19:39:33.41
>>562 お前スレタイ読んでその認識というのはやばいんじゃねえの。
Ver6.0までと書いてあるだろ。までということはVer6.0に限定されないってことだ。まずこれが一点目。
VB6.0でそのとおりに書けば動きますっていって載せてるわけじゃねんだから、ああ説明のために
親切丁寧な論破さんがわかりやすく記述してくださったのか、ありがたやありがたやと俺を拝め。これが二点目。はい論破。
VBの記述のための参考コードとしてVB以外の言語(CやJava)での紹介くらいするだろ C言語で分からないとこがあるから~とかVB.NETで分からないとこがあるから~とかそゆのはスレチだが
ひとまず どこのスレでもウザイ「論破」という単語をNGワードに入れることに決意した
>>567 であるのなら、そもそもClassを使っているのが間違い。
そういったことも含めて誘導すべき対象だろ。
「音が聞こえる」は、実際に音が発生してないと使うことはできないが、 「耳が聞こえる」は、音の発生の有無に関係なく、耳の能力を語る言葉だろ
574 :
デフォルトの名無しさん :2013/02/07(木) 19:46:46.51
>>564 同じだろ。たとえば夏の夜空に花火が打ち上げられて人々に
感動を与えたとして、それをすごくファンタジーでしたという
やつもいれば、爆薬の飛散するさまがすごくリアルでしたというやつ
もいるだろ。見るやつが変われば言い方も変わるが花火が打ち上げられた
ということに変わりはないだろ。そりゃひとりひとりが言ってることの意味は
違うだろうが事実は一つだろ。花火が打ち上げられたんだ。だから音が聞こえることも
耳が聞こえることもまったく同じことだ。はい論破。
>>571 じゃあ指摘して
わざわざあのコードを旧VB用に直して再度レスし直せってことなの?
そんなことする意味あんの?
日本語能力がおかしい奴と何をお喋りしても無意味・無価値・無駄
>>566 クラスモジュールでpublic const の定数にしても良いが、
シングルトン実装すんなら、標準モジュールで良いだろう。
標準モジュールのpublic const で良い。
横から入ってきてるから、流れわかってないっしょ。
>>575 そもそもあのクソコードにマジレスしてることがアレなんだけどw
ああいうクソコードは一刀両断で十分だろ。
579 :
デフォルトの名無しさん :2013/02/07(木) 19:51:56.61
>>578 どこがクソコードなわけ?え?いえないの?じゃあお前がクソだな。はい論破。
Java・・・StringBuffer VB6・・・バイト配列
582 :
デフォルトの名無しさん :2013/02/07(木) 20:16:23.55
>>532 手元のコードいくつか眺めてみたけど俺は入れてないわ。
>>529 >VB以外でメソッドの引数がデフォで参照になってる奴ってあんの?
メソッドだと記憶にない。
関数/手続きなら、fortran 等の昔の言語は大抵参照 (実装が違うことがあるけど) 型だね。
fortran 等の昔の言語ってそもそも変数は全部グローバルなんじゃ
FortranのFを小文字で書く奴はじめてみた
>>559 いやに「定数」に拘ってるけど、設定項目って「定数」じゃないでしょ。
君が作るアプリケーションには、設定ダイアログが一切ないの?
ByValは値コピーのコストがポインタコピーと同じ時だけ書いてる。 ByRefは省略可だが、関数内で値を書換えるとき明示的に書く、 って俺ルールにしてる。
>>587 ByRefが必要なとき以外は全てByVal、って決めといた方がいいよ。
引数コピーが発生して、そのオーバーヘッドが問題になることなんて極々わずかだから。
本当に問題になったときに初めてByRefで渡せばいいよ。
インライン関数でconst T&を値渡しに最適化してくれるような 言語じゃないと考えると、構造体や文字列は、 アドレス渡したくなるなぁ。
まあ、ユーザ定義体をByValで渡すことなんかできないんですけどね
オブジェクトもByValで渡してもコピーされるわけじゃないしね
>>584 FORTRANはグローバルもローカルもあるぞ。
>>15 気になってたんだが、objCloseable って、
こういうプリフィクスつける人まだいるの?
Long型なら lHoge とか。
まあVB6なら仕方のない部分も無くもないんだが(IDEが未成熟すぎるから)。
あと、こういう風に関数に区切ってしまうと、
catchしてthrowみたいなのも表現できないし、
可読性も悪いと思う。
try catch finally は一つのメソッド内に置いて、
catchやfinally内の処理を別関数に投げるというならアリだと思うが。
まだこんなアホなこと言ってる奴がいるのか。
自分でも馬鹿にできそうな言語を見つけたんだろw
確かに今の時代、VB6.0は突っ込み所満載だからな。OLEがベースとか笑ってしまう。 Windows BlueでCOMが死んだら消滅する言語なのにな。
またせたな! c# 25707 90 vb 13338 465 vba 13478 265 aを30まん回結合した結果 StringBuilderかMIDで1000まん回結合した結果 ほらVB速いじゃん! でもStringBuilderは見直した
598 :
デフォルトの名無しさん :2013/02/09(土) 14:15:51.03
>>593 戻り値でエラーを返せば余裕だろ。
1つの関数が1つの役割をはたすという構造化プログラミングの王道を行くものであるから可読性は良い。
あーここはFinallyしてるんだーなー、あーここはCatchしてるんだーなーというのが即座にわかるだろ。はい論破。
なんでこのスレ、俺より詳しい奴が一人も居ないんだ?
>>599 かかってこいよ
お前の疑問に答えて論破してやっから
いいなバカは
>>600 俺のほうが先に論破してやる。
お前は馬鹿。はい論破
焦り杉だろ
焦ってるのはお前。はい論破
いや君の方
オウム返しをするのは焦ってる論破
>>606 ワイルドだろ~?
/ ̄ ̄ ̄\_
/__ ___/__ ヽ
/ / )ノ ヽヽ
| | ー ー | |
( V =・ヽ /・= V )
ヽ ノ ノ
| ヽ_ノ |
ヽ  ̄ ̄` ノ
\ /
__/\___/ヽ_
/ヽ⌒\ /⌒ /\
( |__У___| )
.\ | |__| |o|__| | /
h.264のままで、モザイクかけることができるフリーソフト誰か作ってよ セックス動画をアップしたいのさ
609 :
デフォルトの名無しさん :2013/02/10(日) 13:41:37.84
VB6の日付の大小って Dim strDate1 as String Dim strDate2 as String strDate1 = "2013/1/1" strDate2 = "2013/1/2" if strDate1 < strDate2 then なんて出来たっけ? COMの中の人が 1:文字列の日付をバリアントのDateに代えて、 2:演算子< にあわせてバリアントのdouble に代えて 3:if分の条件判定をしてる の?
文字列比較だね 月日を2桁にしとけば問題はないよ
>>609 何で日付なのにDate型にしないんだ?
Date型にして strDate1 = "2013/1/1" strDate2 = "2013/1/2" この代入をすると あーら不思議
Date型にするならstrってプリフィクスも変えろ
Date型のプリフィクスて?
ええと、なんだ、モンゴリアンチョップ
dDate1 dtDate1 datDate1 dateDate1 さあどーれだ
> dtDate1 かな。 プリフィックスだから短い方が良いけど、さすがに一文字じゃ被るから。
Date型の変数名にDateはどうなの?
>>619 試してみればいいじゃん。
ものの数分で答えが出るでしょ。
dtDate1 ↓ Date型で名前Dateとかバカじゃん ↓ dt1 ←シンプルでタイプしやすいし超便利!
単純な名前付けをやめるのが大事 strDate1 → strOnakinKaishiDate strDate2 → strOnaniiShichattaDate とか
状況も考えずに○○するのが大事とか、断定的に物言う奴は大抵バカ
大昔の様に、変数名は2文字までとかって決まりは無いんだし... 判りやすい名前を付けようよ...
> 判りやすい名前を付けようよ... 誰もそんなことに反対してないけど? ただ、長い名前が必ずしも判りやすいわけじゃないが。
「長い名前が必ずしも判りやすいわけじゃない」 が真だからと言って、 「短い名前がわかりやすい」が真じゃないんだが… プログラマーならこれぐらいの論理が理解できないと辛いと思うんだが…
>>628 名詞だからそれが一般的だと思うんだけど
KaisiとSichataを後に持ってくればインテリセンスと相性良くなるからどうしたものかねぇ
>>630 Onakinってクラスを作って、そのプロパティとして、StartDate、FailedDateを持ってればいいんでない?
Set Ore = New Onakin
Ore.StartDate = "2013/02/01"
Ore.FailedDate = "2013/02/10"
見たいなぁ...
変数名の為にクラス作るなんて本末転倒
StartDateとEndDateをもった RangeDateクラスを作ればいい
>>632 文脈上、一つに纏めるべき物は纏めた方が良いと思うよ
そのクラスが、単純な構造体なのか、複雑なオブジェクトなのかは、取りあえず別の棚に置いておいた方が幸せになれる
ClassじゃなくてTypeにすりゃええねん
>>622 日本語と英語を混ぜるなあああああああああああ
>>635 Typeで作ったって、どうせメソッド付けたくなるんだから、クラスモジュールで作った方が幸せ
一時変数ならあんまキニスンナ 複数日付が出てから考えろ
そう旧VBにClassは無い!だからこんなことも出来る! Dim Class As Integer Class = 100
Dim Form As Integer Form = 100
>Visual Basic のコードで宣言するプロシージャ、変数、および定数の名前は、次の規則に従って付けます。 >・名前の先頭文字には、数字および記号は使えません。 >・名前には、ピリオド (.) や型宣言文字 (データ型を指定する特殊文字) は使えません。 >・プロジェクト名およびクラス モジュール名には日本語文字は使えません。 >・変数、定数、およびプロシージャの名前は 255 文字以内 (半角の場合) にします。 > コントロール、フォーム モジュール、クラス モジュール、および標準モジュールの名前は 40 文字以内 (半角の場合) で設定します。 >・予約キーワードと同じ名前は使えません。 但し! >フォームやコントロールを作成するときには、予約キーワードと同じ名前を付けることができます。 >予約キーワードと同じ名前を持つフォームやコントロールを参照するには、名前の前に修飾子を付けるか、または角かっこ ([ ]) で囲む必要があります。 >Loop.Visible = True ' エラーが発生します。 >次のコードではエラーは発生しません。 >MyForm.Loop.Visible = True ' 名前の前にフォーム名を付けます。 >[Loop].Visible = True ' 角かっこを付けます。
>>642 エスケープ識別子はVB6にはありませんよ。
しかし、コピペマンって例外なく馬鹿だな本当
エスケープ識別子?
vb.netとvb6とvbscriptでは、それぞれ違うのだから混ぜるとややこしいぞ。 変数に型のないVBScriptだと、intとかstrとかのプレフィックスを付ける ハンガリアン記法も意味があるね。
>>643 VB6付属のMSDNからのコピペなのにVB6に搭載されてないとな?つまり付属MSDNはうそつきってことだな
VB6 新規プロジェクトにフォームモジュールを追加して Form2という名前をLoopに Form1のForm_Loadに [Loop].Show を書く 実行できる
はい嘘
>>646 すまん、勘違いしてるのは俺の方だったw
VB6の時代から予約語をエスケープする機能ってあったんだな。
人を馬鹿呼ばわりしといて その程度の謝罪で許すとでも思ってるわけ? 全くお花畑だな
こんな程度のことで怒るからコピペマンはおバカさんなんだよ
652 :
デフォルトの名無しさん :2013/02/11(月) 18:44:30.34
「ハンガリアン+日本語」変数 ハンガリアンで補完を起動させて日本語込みの変数を入力するのがすき。VB6とかExcelVBAならね 妙なローマ字英語変数よりは日本語変数のほうがましだろ?
IMEオンにするとか半角英数の入力の邪魔
日本語プログラミング言語が普及しないのはそこだな 入力が面倒
>>598 戻り値でエラー返すのか?
Err.raise しないのか?
それってthrowみたいな挙動なんだっけ
>>598 ついでに言うと、構造化は関心の分離の一手法。
OOPでやるならErr.Raise だと思うが。
さらに言えば
Try ~ Catch ~ Finally のそれぞれを別関数にしてしまう
ってのは、構造化する部分を間違ってると思うぞ。
try{
//処理
}catch{
//やるなら、このcatch節の中を別関数に
}finally{
//やるならこのfinally節の中を別関数に
}
>>624 マイクロソフトがもう随分前にシステムハンガリアンを
推奨しなくなった。
ある時、Integer型をLong型に変更というので、単にローカル変数かと
思ってたら、それを途中で別関数の引数で渡してたりが延々と続いてて
変更範囲がかなりの量になった。
変数名にプリフィクス使ってたから、変数名も全部変更になった。
これが世に言うシステムハンガリアンの弊害というのを思い知らされた。
>>654 そうよね。日本語変数使ったりするといちいちIME切り替えたり、
新人が全角スペース入れてるとか。
Err.raiseってプロシージャの外にエラーを伝えないからOn Error Gotoと大差なくね?
Sub Hoge() Err.Raise vbObjectError + 1001 End Sub Private Sub Command1_Click() On Error GoTo myerror Call Hoge Exit Sub myerror: Dim e e = Err.Number - vbObjectError MsgBox "Errorだよ" & e End Sub
'Class1.cls Public Sub Hoge() Err.Raise vbObjectError + 1001 End Sub 'Form1.frm Private Sub Command1_Click() On Error GoTo myerror Dim c As New Class1 Call c.Hoge Exit Sub myerror: Dim e e = Err.Number - vbObjectError MsgBox "Errorだよ" & e End Sub
>>661 はHogeから抜けてCommand1_Clickでエラーを拾えるが
>>662 はHoge内でエラーストップしてしまう
何故なのか
ユーザー定義エラーは同一モジュール内でしか捕捉できない、なぜなのか
手元にVB6がないので検証は出来ないのだけど、 exe作って実行したら補足できてないですか?
ただの設定だろ。
メニューバーの「ツール」→「オプション」→「全般」のタブ→「エラートラップ」を「エラー処理対象外のエラーで中断」に設定すればよい
コード編集画面を右クリックで開くポップアップメニューの「設定・解除」でエラートラップを個別に設定するのが普通です
そんなことも知らないでVB使ってたのか 飽きれるわ
C言語でさんざんやってた時は、時には戻り値でエラー返してた。 まあ方法的には参照渡しした引数に格納するとかも。 でもVB6ならErr.raise。 そうそう、引数のByRefだが、俺は基本的に引数の中身を変えて しまうとかしないので、大半はByRefだろうがByValだろうが構わない。 でも確かに、稀に引数の中身を変えてしまう事もある。 で、コメントで明示してはいるんだが、 そういう時だけByRef使うっていうレスもあったので、そこはなるほどなと思った。 コメントに加え、コードでもプログラマの意図を表現できるのは良い。
Public Sub Swap(a, b) Dim c c = a: a = b: b = c End Sub
Letを使う場面ってどんな場面?
CallでByRefとkByValの指定ができるんだな
>>673 プロパティを定義するとき
Setとカラム位置を合わせたいとき
DefStrとかDefBoolとかDefIntとかを使ったことある?便利?
>>675 ㌧
揃えたいとき、可読性を上げるために使うのか
>>672 そういう時にa と b にByRefをあえて付けるんだよ。
CallByNameって動的に呼べるメソッド変えられるのな
>>672 aとbが互いに異なる変数だったりオブジェクトだったりした場合エラーになるじゃん
DefInt I DefLng L DefDbl D Public Sub ISwap(ByRef I1, ByRef I2) I3 = I1: I1 = I2: I2 = I3 End Sub Public Sub LSwap(ByRef L1, ByRef L2) L3 = L1: L1 = L2: L2 = L3 End Sub Public Sub DSwap(ByRef D1, ByRef D2) D3 = D1: D1 = D2: D2 = D3 End Sub
>>676 それな、Windowsでるよりも前の時代の
古いBASICとの互換性のための機能。
フォームって Form1.Show と Dim f1 = Form1 Set f1 = New Form1 f1.Show と どっちのコードのほうがいいの? Form1は複数インスタンスは必要なくて1つだけ起動すればいいんだけど Javaとかだと後者のような書き方だけどVBだとどっちがいいのかわからない
Enumで厄介なのは大文字小文字が固定されないこと、タイプミスで全部変わっちまう
標準モジュールにProperty Get単一で書いて定数に見せかけを作るのってありかな?
>>683 前者はVB2.0時代の互換性のためにのこってるもの
今時(つってもVBはもう古いが)の書き方なら後者
㌧
参照設定からMicrosoft VBScript Regular Expressions 5.5を追加したんだけど FSOみたいにRegExpも1つのインスタンスを使い回したほうがいいの?それとも正規表現ごとにインスタンスを作るべき?
ByRefやByValを付けろって自動生成されるプロシージャには付かないけどそれにも自分で書き足すの?
>>673 右辺値がオブジェクトだけど、デフォルトメンバが
呼び出されて値が返ってくることを期待するときに
Setでないことを明示するために
Letって書く、っていう俺ルールにしてる。
'クラスモジュールClass1
'プロシージャ属性でプロシージャIDを(既定値)にする
Public Property Get DefaultMember()
End Property
'呼び出し側
Dim a as New Class1, b, c, d
Set b = a 'cの参照のコピー
Let c = a 'c.DefaultMemberが呼び出される
d = a 'Letと同じだが、Setの書き忘れかも
691 :
デフォルトの名無しさん :2013/02/12(火) 12:22:52.51
>>609 If Clng(Format$("2013/1/1",YYYYMMDD)) < Clng(Format$("2013/1/2",YYYYMMDD)) Then
でええやろ?
>>691 If Clng(Format$("2013/1/1", "YYYYMMDD")) < Clng(Format$("2013/1/2", "YYYYMMDD")) Then
ならええよ
文字列を暗黙の変換で日付にしFormat$で文字列にしClngでLongにして比較する 何がしたいのか解らんコードだ
If #1/1/2013# < #1/2/2013# Then 日時型リテラルはアメリカカルチャーで書式固定になるから、 見た目わかりづらいのが難点だな。
>>691 お疲れ様じゃなくてご苦労様と言いたくなるコードだな。
>>693 本当に何がしたいのか分からんとしたら、頭大丈夫か?と訊ねざるを得ないがな
>>694 確かに日が先か月が先かわからんな。特にその例だと。
698 :
デフォルトの名無しさん :2013/02/12(火) 18:46:12.31
普通に仕事してる奴なら、世界標準の日付表記くらい解るだろ?
Date型の場合、デイトシリアルだけを設定したつもりがタイムシリアルが0でない場合があるので 単純比較だと危険があるよ?
701 :
デフォルトの名無しさん :2013/02/12(火) 18:49:21.91
>>699 当たり前に解っているいるつもりが間違えて銀行のオンラインが止まったりするのも事実だけどね
CDateの話が無いのが気になるのだが。
>>696 本気で言ってるならお前こそ頭大丈夫?
日付に変換できる事が保証されているなら、両方を日付に変換して比べれば済む話だろ
>>699 頭では理解してても、日本ではあまりなじみのない表記だからなぁ
うっかりミスはあり得る
>>700 設定するときにか?具体的な例を教えてくれ
DBとかから取得したデータが日付のみだと思ってたら時刻が入ってたって事はあるが
705 :
デフォルトの名無しさん :2013/02/12(火) 19:47:30.32
>>657 いいや、CATCH FINALLYを別関数にするのは間違ってないと言うだけだったら
水掛け論になるだけだからそれを言うのはやめとこうと思うのだけれども、
どうしてCATCH FINALLYを別関数にするのが間違った構造化だと思う?
構造化プログラミングを提唱したエドガーダイクストラはGOTOを嫌悪していた。
CATCH FINALLYを別関数にしなければGOTOを使うしかないわけで、GOTOを使うことは
エドガーさんにトンカチで殴られてもおかしくない所業なわけ。だからこそ
>>15 のコードは
構造化プログラミングの王道を行くものなわけ。はい論破。
>>703 国によって月日が逆転する可能性がある表記のままDate型に変換して比較なんでよくやる気になるな。
香港で作ったソフトを日本に持てくるとかありえない話ではないだろ?
>>705 > どうしてCATCH FINALLYを別関数にするのが間違った構造化だと思う?
冗長で意味が無いから。
709 :
デフォルトの名無しさん :2013/02/12(火) 21:35:17.04
>>708 GOTOを除外するという意味がある。それが構造化。
意味があるから冗長ではない。だから
>>15 のコードはいい構造化。はい論破。
On Error Goto は Gotoじゃないよ。 ぜんぜん動きが違うでしょ?
あー、なるほど。on error gotoを 単語だけ見てgotoだと思っていたわけか。 納得した。その勘違いが根本的な会話のズレだ。
712 :
デフォルトの名無しさん :2013/02/12(火) 21:42:37.31
>>710 Gotoて入ってるんだからGotoだよ。Gotoて入ってるんだから。Gotoて入ってるのが
GotoじゃなかったらじゃあGotoてなんなのってなるだろ。Gotoて入ってるいじょう
それがGotoであるのは疑いようのないことでウォーターメロンはメロンじゃないと
いってるようなもの。てんでおかしなことだよ。はい論破。
714 :
デフォルトの名無しさん :2013/02/12(火) 21:45:56.87
>>711 On Error GotoはGotoじゃないならなんだと思ってるわけ?
GotoじゃないならGotoなんて入れられないだろ。タラバガニは
カニじゃないならカニなんて言われてないだろ。タラバガニはカニだから
カニって入ってるんだ。あんま世の中舐めたこと言ってると俺も怒るよ。
怒らせたくないだろ。はい論破。
715 :
デフォルトの名無しさん :2013/02/12(火) 21:46:49.78
>>713 全く同じだろ。Gotoで指定したところに飛ぶんだからGotoそのものじゃないか。
何いってんだ馬鹿。はい論破。
> On Error GotoはGotoじゃないならなんだと思ってるわけ? 「On Error Goto」でしょw
>>715 同じならなんでgotoとは別にon error gotoがあるのさw
明らかな間違いぐらい認めなさいよw
718 :
デフォルトの名無しさん :2013/02/12(火) 21:53:12.07
>>716 だからGotoだろ。冷凍みかんはみかんだろ。はい論破。
>>717 飛ぶタイミングが違うからだろ。エラーが発生したときに飛ぶかどうかだ。
甘夏みかんも温州みかんも同じみかんだがどうして2つあるのさなんてバカな質問しないだろ。
お前はそれほどにふざけたことを言ってるわけ。反省しろ。はい論破。
719 :
デフォルトの名無しさん :2013/02/12(火) 21:54:47.66
On Error Gotoは飛ばないとでも思ってたのかバカどもが。こんな雑魚しかいないのかこのスレには。はい論破。
720 :
デフォルトの名無しさん :2013/02/12(火) 22:06:33.37
> 717 :デフォルトの名無しさん:2013/02/12(火) 21:47:45.81
>
>>715 > 同じならなんでgotoとは別にon error gotoがあるのさw
> 明らかな間違いぐらい認めなさいよw
アルコールを飲んじゃいけませんというお触れが出されて
これはエチルアルコールだからアルコールじゃないと言ってお酒を飲んで警官隊に撃ち殺される愚か者。
禁酒令が出される時代に生まれて来なかったことを神様に感謝しろ。はい論破。
失敗!DateDiffやったorz
723 :
デフォルトの名無しさん :2013/02/12(火) 22:16:15.92
724 :
デフォルトの名無しさん :2013/02/12(火) 22:30:20.10
> 711 :デフォルトの名無しさん:2013/02/12(火) 21:39:31.49 > あー、なるほど。on error gotoを > 単語だけ見てgotoだと思っていたわけか。 > 納得した。その勘違いが根本的な会話のズレだ。 この冬一番の早合点バカwwwww お前の戒名はタラバガニでいんじゃね。論破さんの提案です、はい論破。
726 :
デフォルトの名無しさん :2013/02/12(火) 22:44:15.50
>>725 ナイスピックアップ
>>685 標準モジュールにProperty Getを書いて定数に見せかけるのはありだ。
>>688 インスタンスを複数作るのはコストがかかるので
RegExpは1つのインスタンスを使い回したほうがいい。
>>689 ByRefやByValは自動生成されるプロシージャに自分で書き足すべきだ。
はい論破完遂。
>>706 それは
>>692 にも言える話で暗黙変換のぶんだけよりたちが悪いわけですが
あと、Formatかけるのは月日の前ゼロそろえる意味があるとしても
>>692 がIf文の中でClngしてる理由を説明してくれないかな
俺には本気でLongで比較する意味がわからん。日付の大小比較なんだから正規化された文字列比較で事はたりる
そもそも、Goto使ってないのが構造化だってのが間違ってるんだが
>>685 ,726
.NETでは定数はコンパイル時に解決されるがプロパティは実行時に解決されるって違いがあったはず
VB6でその二つが同じとみなせるかどうかは知らないが、一応注意しとくに越したことはないかも
コンパイル後の話じゃなくてコーディングの際の話じゃないの?
731 :
688 :2013/02/13(水) 03:18:31.21
>>727 >日付の大小比較
文字コードの値で比較してはいけないというのは基本原則。
VB6だから大丈夫と思ってるなら他の言語を使わないでね。
迷惑だから。
733 :
デフォルトの名無しさん :2013/02/13(水) 08:15:28.43
論破君が言っている事は半分くらいは正しいし、中には知らなかったことまであって 目から鱗と思う事さえあるが、とんでもない独断と偏見に満ちた見解も半分あるので どこからどこまでを吸収するかが初心者には難しい所だな。
#Dateリテラルのことも、たまには思い出してやってください#
>>732 例えば、データベースなんかから取得した日付文字列リテラルを比較するとき、いちいち
日付オブジェクトとかに変換してから比較してるの?
>>736 データベースから取得したらリテラルじゃないだろう。
文字列の大小が数値の大小と同じだと思ってはいけない。
>>692 は左と右の桁数が同じだから、文字列の大小と
数値の大小の結果が同じになる、特殊なケース。
特殊なケースだからといって、文字列の大小を
数値の大小の代わりに使っていると、間違いが起こるよ。
桁数の違う数値を文字列にして、比較してみると良い。
?"2001" < "20000"
?2001 < 20000
CDateしてから比較するよ
>>737 > データベースから取得したらリテラルじゃないだろう。
リテラルじゃない変数に入れれば何かのオブジェクトになる場合もあるだろうけど、
文字列リテラルに変換される言語/ミドルウェアも多い。
レコードセットが、integerとstringの連想配列の配列になるとか。
>
>>692 は左と右の桁数が同じだから、文字列の大小と
> 数値の大小の結果が同じになる、特殊なケース。
何言ってるの?
比較できるよう、同じフォーマットに揃えたんだろうが。
つか、 > 正規化された文字列比較 の「正規化」の意味がわからないのか?
日付オブジェクトw VBにそんなオブジェクトあるんだ。初めて聞いたよw
えー マジでVB厨はCDateしないの?
リテラルの意味がおかしい人が若干名
>>743 CDateだと、"YYYY/HH/MM HH:MM:SS"にならないから滅多に使わない。
YYYY/HH/MMってなんだよw
なんか話がおかしな方向に行きそうなのでまとめ。
>>727 > 日付の大小比較なんだから正規化された文字列比較で事はたりる
に対して、
>>732 が文字列比較をするなという主張をしたので、文字列比較でいいだろというのが俺の主張。
(もちろん、
>>727 の主張でもある)
さらに言えば、俺もClngする意味がわからんし、CDateして比較するのも全然OK。
>>734 コンピューター言語を語る前に日本語からだな。
>>752 CDateでいいならClngでもいいんじゃね?
>>751 A > a 、 a > A どちらもあり得る。
1 > 2 もあり得る。
>>754 マジレスしとくが、
If Format$("2013/1/1", "YYYYMMDD") < Format$("2013/1/2", "YYYYMMDD") Then
や
If CDate("2013/1/1") < CDate("2013/1/2") Then
なら話はわかるが、
Format$("2013/1/1", "YYYYMMDD")
を
Clng(Format$("2013/1/1", "YYYYMMDD"))
してから比較する意味がわからないということ。
>>755 正規化した日付文字列を文字列比較してはいけない言語を教えてくれよ。
日付を文字列比較とかキモイわー CDateが最高
ってか日付をString型で扱うシステムが糞。 素直にDate型にしておけばいろんな恩恵が得られるのに。 画面に出力させたり、ファイルに出力する直前に文字列に変換すれば楽なのに。
DateはDoubleであって、yy/mm/ddのような書式を持っているわけではない。 Stringで入力されたら、すぐにDateに変換すべき。 Stringのまま渡したり保存するから、おかしなことになる。 コード内なら "2013/1/1" などと書かずに #2013/1/1# と書くべき。
>>759 通信なんかもオブジェクトをやり取りする主義なの?
通信はインターフェイスだからファイルや画面と同じ扱いでしょ
DBから日付データを取得して画面に表示するだけなら、CDateが介入する余地はないな
数回コピーするだけでもDateに変換する価値があるよ
DBにはDate型で入ってて画面に表示するときに文字列になるってのが 一番自然でしょ? なんでそう屁理屈ばかりこねるかなぁ。
画面で入力した文字列をDBに登録するときに、いちいちCDateを経由したがる理由がわからん
文字列のまま登録したいほうが意味わからんw おいおいVB厨ってやばくね?
ひょっとして、DBのDate型のデータを取得すると、日付型になると思ってるのか
しねーよw
>>770 んじゃ、どうやって登録するのかコードで教えてよ
>>771 え?
まさかパラメータクエリで登録しないのか?
774 :
デフォルトの名無しさん :2013/02/13(水) 18:11:24.15
逃げたw
予想通り過ぎてワラタw
>>774 あくまで個人的な見解でしょw
こういうことでミックさんを盾にするのは良くないと思う。
これがマイクロソフトとかオラクルとかが言っているなら納得するけど。
日付を文字列として扱うのがベストとかいう悍ましい言語のスレはここですか?
780 :
デフォルトの名無しさん :2013/02/13(水) 19:15:06.71
>>766 画面からの入力で、ありえねー日付(例:11月31日)とか、
閏年とか、チェックするにしても何にしても、
一旦はDate型にするだろ?
だったらそのままDBに格納すりゃいいんじゃね?
まさか何もせずに未チェックで文字列のままDBに登録なんてしないよね?
>>782 とにかく文字列で日付比較とか愚の骨頂と言うか頭が足りないとしか言えないね。
俺は一応、画面からの日付入力 → CDateでDate型に → それを入力文字列の年月日時分秒 とそれぞれ比較して入力値をチェック DBのテーブルでは、日付は基本的にdatetimeとかのそれ用のデータ型。 登録は基本的にSQL文を利用。 SQL文を作成するところで、Format関数使って文字列に戻してる。 日付として正しいかどうかわかんない日付表示文字列をそのままDB登録するとか 意味わからん。どうしても一旦はDate型にするだろ。
分からない人は型システムで一度調べてみるといい 日付を意味するデータは基本Date、まれにString Nullというか未指定を許容する割に日付として比較・演算しないとかね
文字列で日付比較は有り得ないでしょう VB6に限らずですが
SQL文での日付の取り扱いと勘違いしてるアホもいるしなwwww
日付型にまず変換するよね
御意
日付を文字列で管理するっていうのは何かインターフェースの処理と内部の処理を分けたことがないんだろうなと。 内部の処理に都合のいいデータを採用しないと、内部処理として重要じゃない型変換なんていう処理が増える。 これをやると、型変換を忘れたりとかバグを仕込みやすくなる。 型変換なんてまさしくインターフェースの処理の役割でしょ。
>>785 プログラミング言語全般の話なのか、特定(VB)の言語の話なのか
まあ、どっちの話だとしてもおかしな事いってるが
>>784 文字にしてSQLで日付渡すと、当然DB側の日付解釈によって判断される
DB側の日付リテラル形式ちゃんと把握してるか?思わぬバグの元だぞ
793 :
デフォルトの名無しさん :2013/02/14(木) 06:27:12.65
Date型で時分秒だけ0クリアするのはどうするの
795 :
デフォルトの名無しさん :2013/02/14(木) 08:37:20.19
manko = Cdate(Format(manko,"yyyy/mm/dd")+" 0:0:0)
>>793 Text2 = Int(CDate(Text1))
>>792 じゃ、CSVのインポートとかできないよね
>>782 > だったらそのままDBに格納すりゃいいんじゃね?
だからさー、そのままDBに格納するコード書いてよって
たぶんネタとして楽しんでるんだろうけど マジなら本当にやばいなw
やばいよ やばいよーっ!
で、何がやないか書けない
やない
画面で入力したり、外部から(例えば通信で)入力された日付型文字列の妥当性をチェックするとき、 一体どういう関数を書いてるのかな。 例えば、こういう関数が考えられる。 Public Function IsValidDate(ByVal val as String) as Boolen ' 実行時例外は出さない End Function 日付型に変換する派の人は、どういう妥当性チェックするの?
>>797 日付として正しくないものまでインポートしたいってこと?
それならそのデータは日付ではなくてただのメモじゃないか?
通常通信プロトコルで日付のフォーマット決めるだろ?前提が適切でないわ。
>>807 どちらかというと、前提をおかしくしてるのは君らの方なんだけど。
そもそもは、normalizeされた日付文字列を文字列比較していいかどうかって話だ。
で、文字列比較するなという奴が現れて混乱してる。
比較可能なんだから、わざわざDate型にする必要無いよねってこと。
で、さらに言うと、Date型が要求されないなら、文字列型のままで日付を扱っても問題ないよってこと。
>>807 つか、日付のフォーマットが決まってたら、妥当性チェックしないの?
>>809 プロトコルで規定されているなら妥当性はチェックしない。
まあ前提として日付のNullは許可しないというのがあるが。
>文字列型のままで日付を扱っても問題ない 問題無かったら議論になってないだろうに。過去を遡って状況を把握してから発言してね。
そのデータの意味が日付なら日付型に変換して比較したほうがいいよ。 一桁の数字を比較するときに文字列のまま比較するのかと一緒だけど、 たぶん君はするんだろうな。
ようするに意味とか関係なくとにかく動けばいいでしょ? っていう考え方なんだよね。 VBだけやってる人に多い。
>日付型に変換して比較したほうがいいよ。 御意
>VBだけやってる人に多い。 御意
>>810 > プロトコルで規定されているなら妥当性はチェックしない。
妥当でない文字列がわたってきたために、アプリケーションやサーバプロセスが死にますが、
それは相手のせいだからうちは関係有りません、ってことですね。
>>811 > 問題無かったら議論になってないだろうに。過去を遡って状況を把握してから発言してね。
いや、俺最初からいるけど。
>>751 は俺。
>>812 > 一桁の数字を比較するときに文字列のまま比較するのかと一緒だけど、
全然違う。normalized date stringだっていってるでしょ。
817 :
デフォルトの名無しさん :2013/02/14(木) 11:32:34.26
秀逸なコードとはその前提が如何様なものであっても同じ振る舞いをするものだ。 文字列のバイナリ値がどのような前提でもである。
違わないでしょ。文字列で比較ってことは文字コードで比較してるんだから。
もうめんどくさいから、normalized date stringを文字列比較してはいけない理由を明言した人か、
Validationをどうやってるのかコードで示した人以外はコメントしないよ。
>>810 お前は見逃してやるけど、いつでもvalidationしとけ、アホ。
>それは相手のせいだからうちは関係有りません、ってことですね プロトコル、いわゆる規約の意味がわかっていない大原の専門学校生のようなノリだな。 >いや、俺最初からいるけど 最初からいてそれかい? >normalized date string 正規化したところで日付は日付、文字は文字だがな。
>>820 > プロトコル、いわゆる規約の意味がわかっていない大原の専門学校生のようなノリだな。
コンビニのATMが止まったのは何故でしたっけ?
お前みたいなプログラマがいるからだよ。
つまり前提条件としてしっかりと取り決めをしておくことにより プログラムで無駄なチェックルーティンを書くのを省いているんだがなぁ 専門学校では教えないのか?w 動くだけのプログラムと人につかってもらうプログラムとでは エラー処理のコード量が全く違うんだ罠。 エラー処理のコード量の方が実アプリのコード量より多いなんて事はザラ。 専門学校生の作るプログラムはザルだがw
>>823 > つまり前提条件としてしっかりと取り決めをしておくことにより
> プログラムで無駄なチェックルーティンを書くのを省いているんだがなぁ
つまり、ATMがストップしたけど、それは全部相手が悪いってことですね。
825 :
デフォルトの名無しさん :2013/02/14(木) 11:40:56.34
>コンビニのATMが止まったのは何故でしたっけ? それ、プロトコルを信用したために起こった事故じゃないだろ?論理が破綻してるぞ大原くんwww
>>821 だからー。それは動くんだからいいだろ?っていう思想だろ。
比較に使ってる文字コードが0123456789の順で割り当てられてる
前提じゃん。まあそうじゃないことなんてないだろうけど
だからって文字列で比較するってことは、動けば問題ないだろ
って言ってるのと同じなんだよ。
COBOL>おまえら大変だな。
だいたい正規化された日付文字列ってどういう事だよ
>つまり、ATMがストップしたけど ATMの問題はプロトコルで取り決められた日付フォーマットのチェックを行わなかったために起こったの???
>>825 微妙に主張を変えるなよ。
> プロトコルで規定されているなら妥当性はチェックしない
んだろ?
ATMのシステムではプロトコルが規定されてなかったのか?
規定されているのに落ちた。
で、落ちたのは誰のせいなの?
>>826 だからさ、プロトコルで決められた日付に関してフォーマットをチェックする必要はないのだよ。
キミはプロトコルの意味をわかっていない。
BSCやHDLCなどコンピュータで処理される前提の通信制御のファームウェアを長年書いていたけど
プロトコルで規定された範囲のデータフォーマットをチェックした事なんて一度もないよ。
>>826 > だからって文字列で比較するってことは、動けば問題ないだろ
> って言ってるのと同じなんだよ。
えっと、じゃぁ文字列データを辞書順に並べ替えるのはどうするんでしょうか。
>>831 > BSCやHDLCなどコンピュータで処理される前提の通信制御のファームウェアを長年書いていたけど
> プロトコルで規定された範囲のデータフォーマットをチェックした事なんて一度もないよ。
で、サーバが落ちたら誰のせいなの?
>>830 なんか滅茶苦茶な展開だな。頭混乱してるだろ?頭冷やして来いよ
ATM坊やw
>>832 おいおい。それは文字列データの話だろう。
日付データの話じゃないじゃん。もうだめだ。全然だめだ。
836 :
デフォルトの名無しさん :2013/02/14(木) 11:48:07.89
>>833 誰のせいとかもうね
いつも責任の擦り付け合いばかりしてるからそういう発想になるんだろ?(笑)
>>835 え?"1"と"2"を比較すると信頼性がないんじゃなかったの?
"a"と"b"ならいいわけ?
>>836 > 誰のせいとかもうね
つまり、うちではデータのチェックはしてませんでしたが、悪いのはあなたですってことですね。
>>828 > だいたい正規化された日付文字列ってどういう事だよ
マジレスしとくが、正規化とはある規則に則ったフォーマットに変換すること。
日付なら、"YYYY-MM-DD"とか"YYYY/MM/DD"とか"YYYYMMDD"とか。
>>838 つまり、何がどうして駄目なのかは言えませんってことでいいな。
もういいよ。
>>837 いやだからー。文字列データを並べ替えるなら文字コード順になるでしょ。
日付を並べ替えたときに文字コード順でいいのかよって話だよ。
うそー。なんでこんなに頭固いんだろう。
>>841 > 日付を並べ替えたときに文字コード順でいいのかよって話だよ。
何故駄目なのかを言え。
何遍言わせるんだ。
>>842 だからー。結果的にはダメじゃないんだよ。正常に動くんだよ。
文字コードが0123456789の順になってるからな。
だけど動けばいいのかって話なんだよ。なぜこれでわからないのか
わからないんだよ。勘弁してくれ。
>>843 > だからー。結果的にはダメじゃないんだよ。正常に動くんだよ。
> 文字コードが0123456789の順になってるからな。
文字コードがABC順になっているから、文字列をソートするときに文字列比較でいいのに比べて、
normalized date stringを文字列比較すると何故駄目なのかを言え。
Formatでは秒未満を変換できない。 今回は日付の比較だし、仮に時間の比較だったとしても ミリ秒が問題になることは希かも知れない。 むしろ、ミリ秒を比較する方が問題になることもあるかも知れない。 だが、こういう違いがあることを、文字列比較主義者は 知っていた方が良い。 Dim A As Date, B As Date A = #2/14/2013 1:01:01 AM# B = A + 0.1 / 24 / 60 / 60 '0.1秒追加 Debug.Print A, B '2013/2/14 1:01:01 2013/2/14 1:01:01 Debug.Print A < B 'True Debug.Print Format$(A, "yyyymmddhhnnss") < Format$(B, "yyyymmddhhnnss") 'False
>>839 ありがとう。
だけど、その正規形が大小比較可能であることはどこで保証されてるの?
>>844 それはabc順に並べてるんじゃなくて
文字コード順にならべてるんだろ
だからそれはただの結果なんだよ
>>844 あ、そうだ
例えばさ16進数の文字列があったとするじゃん
それも、文字列のまま比較する?
まあするんだろうけど
違和感ない?やっぱないのかなー
16進数の文字列ってなんだよ?www
"01CD"とか"1E73"とかこういうの。 日付と同じことでしょ。
851 :
デフォルトの名無しさん :2013/02/14(木) 12:42:44.05
日付の基準日時って1970/01/01だっけ?
文字列大好きな人は、Formatに相当する関数を 自分で作ってみると良いよ。
>"01CD"とか"1E73"とかこういうの。 それって数字とアルファベットが混在する文字列とどうくべつすればええの?
?year(0) & "/" & month(0) & "/" & day(0) 1899/12/30
>>853 何を言ってるんだ?日付も同じことだろ。区別する必要などない。
規定のフォーマットであることは確認済みの後の話だ。
>>855 日付は規則性があるけどそっちは並び順がランダムじゃん
>>856 並び順?ん?桁数が同じならどうでもいいだろ?
え?マジで意味がわからないんだけど。
適当に読んでるから間違ってるかもだけど >通信制御のファームウェアを長年書いていたけど の人が文字列比較で問題ないっていってるんだよね? たぶんこういう人は小さく軽く作らないといけなかったり するだろうから無駄は全部省きたいって考えなんだろう。 規定のフォーマットの文字列を大小比較して済むなら それで行くと。でもそれは本来あったほうがいい処理を 省いた結果なんだと思うね。
>たぶんこういう人は小さく軽く作らないといけなかったり >するだろうから無駄は全部省きたいって考えなんだろう 文字列で処理するほうが何十倍も無駄なんだが・・・。
>>859 そうかい。じゃあ無駄を省きたくて文字列比較してるっていう
のは違うんだね。そうするとますますわからなくなるな。
何十倍も無駄なのに文字列で比較するメリット・・・・ うむむ。何だろう。ソースが短くて済むくらい? いや、これはある意味無駄を省いたことになってしまう。 いや、そうだ、ソースの無駄が省けるといってたんだ。最初から。 やはり結果がOKなら省けるものは省こうと。そういうことだろう。 要するに動けばOK。ってことか。
862 :
デフォルトの名無しさん :2013/02/14(木) 13:58:28.47
伯父列なのかそれ以外の数値や日付なのかってのは煩わしいから 基本的に比較、格納する際には本来の型に直してからってのがある種の癖になるよねうん ところで1970ry
というか本当に文字列処理のほうが何十倍も無駄があるのか? 文字列を日付に変換するなら結局文字列を舐めていることには 変わりないから日付に変換するほうが重いのではないか? 俺もCで組むなら面倒だから文字列比較で済ませたいと思うのは確か。 だけどそれはただの横着である。
また話が変な方にずれてる。 比較可能な文字列が存在したときに、それが「日付」であるが故に文字列比較では駄目だと主張する奴がいて、 駄目だというなら何故駄目なのかを問うてる。 以下のCのコード: int year1 = 2001; int year2 = 2002; if (year1 > year2) { } この比較が駄目なのかOKなのか、駄目なら何故駄目なのか答えて欲しい。 弥生と五月は単純には比較できないが、3と5なら比較可能。"03"と"05"でも比較可能。
プロトコルも教えない専門学校大原って・・・www
866 :
デフォルトの名無しさん :2013/02/14(木) 14:37:03.52
>>864 VBスレでCの構文で書いている時点でアウト。
出直して来い。
>>848 > 例えばさ16進数の文字列があったとするじゃん
> それも、文字列のまま比較する?
それが正規化された文字列で、ただ単純に比較するだけならわざわざ数値化せずに比較する。
16進文字列は、それを文字列として比較しても大小比較ができるような体系になっているからだ。
さて、組み込み型として、日付型や日付オブジェクトがない言語の場合、一体全体どうやって日付を 比較すればいいのだろうか。 「結果としてたまたま動く」ものしか作れないのだろうか。
ちょっとやってみた。 C = Format$("2013/1/1 1:01:01", "yyyymmdd") < Format$("2013/1/2 1:01:01", "yyyymmdd") 文字列+Format: 4.33825905247734E-05秒 C = Int(CDate("2013/1/1 1:01:01")) < Int(CDate("2013/1/2 1:01:01")) 日付変換+Int: 4.13611296966514E-05秒 C = Int(#1/1/2013 1:01:01 AM#) < Int(#1/2/2013 1:01:01 AM#) Date+Int: 2.44915286020989E-08秒 FormatとCDateは同じくらい遅い。 だから、文字列でやりとりしないように、入力されたらすぐに変換するべき。 そうすれば、1000倍速い。 C = "20130101" < "20130102" Format済: 4.77197520913971E-08秒 C = #1/1/2013# < #1/2/2013# 時刻0のDate: 1.07614902871734E-08秒 予め正規化して、時刻以下をそぎ落としている場合は Dateの方が4倍速い。 8バイトのDateを文字列にすると16~17文字くらいになるし、 保存・通信にも適してるとは言えないな。
>>867 マジですか?そうですか。
なんかもう無理な気がするので、俺はあきらめます。
>>871 つまり、駄目な理由を言えないってことですね。
>>870 > 保存・通信にも適してるとは言えないな。
通信フォーマットでは、一般に文字列が好まれる。
異なるアーキテクチャ間で使われるのが前提であればなおさら。
通信では、日付も文字列が普通だよ。
文字列で比較すると危険とかいってるやつは、文字コードも把握してないのか? たまたま動くんじゃなくて、ちゃんと動く事を把握したうえで正規化した文字列比較で事足りるって言ってるんだぞ 文字列比較が"9">"0"になる言語や環境があれば、そこでは成り立たないのは当たり前 VBでそれが起こりうるなら有用な意見だが、そうじゃないならただのいちゃもん 相手する必要ない
>>871 md5sumを比較するとき、どうやってんの?
16進文字列だから、数値変換して比較するの?
>たまたま動くんじゃなくて、ちゃんと動く事を把握した それはお前にとって都合のいい条件下でって事だろ? 相変わらず馬鹿丸出しだな。
>>872 はい。それでいいです。
とても無駄な時間をすごしてしまい後悔してます。
879 :
デフォルトの名無しさん :2013/02/14(木) 15:01:02.95
"9" < "0" "09" = "90" "0376" = "3760" = "6307"
>>877 それが俺にとって都合が良い条件だっていうなら
うまくいかない条件を出してみろ
ただし、当然VBの範囲内だぞ、ここVBスレなんだから
VBでそれが起こりうるなら有用な意見として拝聴しよう
正規化をうまく比較できない状態にするとかいうなよ
>>876 お前、16進数値(の表記)と16進文字列の区別ついてないだろ
いま問題になってるのは表現形式の問題じゃいぞ
>>881 ごちゃごちゃ言わずに、md5sumを比較するときどうやるのか言え。
>>883 答えられないなら、おとなしくしとけよ。
>>882 まず、md5sumは数字なのに文字列で持ってるって前提がおかしいけど
本来の数字もってればそれで比較するにきまってるだろ
でも文字列でしか持ってないなら、文字列から数字に戻すか、文字列どうして比較するかしかない
適切に正規化されている前提なら数字に戻す必要はないので文字列どうしで比較するのは妥当
>>886 > まず、md5sumは数字なのに文字列で持ってるって前提がおかしいけど
えっ、普通は文字列で与えられる情報なんだけど。
> でも文字列でしか持ってないなら、文字列から数字に戻すか、文字列どうして比較するかしかない
16進文字列なんだから、数値化しようと思えばできるよね。
> 適切に正規化されている前提なら数字に戻す必要はないので文字列どうしで比較するのは妥当
md5sumを文字列比較でOKとするなら、なぜ日付文字列は駄目なんでしょうか。
>>887 >>881 文字列で与えられる情報なのは、文字にしてるから
つまり16進数値の表記
誰と勘違いしてるのか知らんが俺は日付文字列の比較はOK派だぞ
>>888 > 誰と勘違いしてるのか知らんが俺は日付文字列の比較はOK派だぞ
あ、そうなの?
16進文字列の比較は文字列比較でOKだけど、日付文字列を文字列比較するのはNGという奴かと思ったよ。
ファミコンの桃鉄で、クレジットカードで借金増やしまくると、 あるときマイナスが表示できなくなって、プラスになる というのを思い出した。 銀行の貯金が文字列で保存されてたら同じことできるかな!
md5sumってハッシュ値でしょ? 意味的には数値というより文字列だと思うんだけど。 たぶんここら辺でもかみ合わないんだろうなぁ。まあいいけど。
VBプログラマはデータを文字列表現された形式で扱うのが普通なのか?
894 :
デフォルトの名無しさん :2013/02/14(木) 16:06:57.59
ハッシュ値の意味は文字列だという剛の者があらわれたと聞いて
ハッシュにしてもチェックサムにしても、計算で求めるんだぞ 数値とそれを表記した文字(列)と文字列の区別ついてないやつ多すぎ
なんだかなぁw
>>892 Date型にする必要がない場合は、日付を表す文字列をDate型に変換せずに扱う、というのが正確な表現。
もちろん、Date型にする必要がある場合はする。
そして、ただ比較するだけなら、Date型にする必要は無い。
>>897 それ前提として日付が適切に正規化されている場合、な
日付の正規化はVBなら1回日付型にするのが楽
正規化するのに日付変換してるのに気付いてないやつ
正規化された文字列でも日付比較しちゃ駄目と言うやつ
表現形式と内部形式の区別がつかないやつ
こいつらが話をややこしくしてる
ややこしいなこりゃ だから正規化ってなんなんだよ?勝手にオレオレ言語使うなっつーの。
>>898 > それ前提として日付が適切に正規化されている場合、な
もちろん、
>>727 の時点から、正規化された日付文字列なのが前提での話だよ。
正規化がオレオレ言語って、日本語の不自由な方は苦労しますな
>>900 727書いたの俺だが。お前が当然その前提なのは解ってるけど
書いとかないとわけわからんいちゃもん付けるやつが出るからな
と思ったけど、書いてもその意味がわからんやつがいちゃもん付けるのか(笑)
>>898 に正規化の意味がわからんやつ 追加
>>902 おまえら俺のことからかってんの?
日付の表現形式なんて、いくらでもあって全てが日付の大小比較出来る
ものばかりじゃないぞ?そこ分かってんの?
>>904 わかってるから前提として正規化されているって話をしてるんだが
ここまで説明しても馬鹿はいちゃもん付けるのか
俺が想像するに、"YYYY-MM-DD"と"YYYY/MM/DD"じゃ比較できないじゃん!とか、 月や日付が一桁の時に比較できないじゃん!とか思ってたりするんだろうけど、 それもこれも、正規化の意味がわからなかっただけだと思うよ。
分からんやつらだな。 おまえらの言う正規形は、プロジェクトなりなんなりで日付の表現形式の正規形として 認められたものか?その形式で限定された形で大小比較可能であると認められたものか? そうでなければ、プレゼンテーション層の表現形式がたまたま比較可能であるだけだ。 その違いが分かるか? まあ、分かってんなら始めからそういう説明するんだろうけど。
例えば月が英語で入ってるのとかあるよね?
だから、「たまたま比較可能」ではなく、比較可能なように正規化するという話をしているんだが。 どれだけ説明すればわかるんだろうか。
今問題にしてるのは比較する際の形式で、 プレゼンテーション層の形式など問題にしてないんだが? さらに言うなら、正規化の話はしてるがその正規形には言及してない 前提として、プレゼンテーション層の表現形式が正規化されていて、日付比較可能な形式なら その形式で比較すればいい。それが適切に正規化されてるってこと それはたまたまじゃなくて、ちゃんと前提条件を確認した上での話 その前提が満たされないなら、自分で正規化した文字列にするか日付形式で比較する でも自分で正規化するなら日付形式で比較した方が楽で早いだろ、って話
まだ言うかね 「正規化」に大小比較を可能にするという意味は含んでないぞ。
結論としては、文字列比較は可能。 だが、使う側の身になって、文字列で格納とか転送とか メモリ、HDDや帯域の無駄だから、やめてくれってことだ。
>>911 じゃぁ、Wikipedia書き換えてきてよ。
> 正規形でないものを正規形(比較・演算などの
> 操作のために望ましい性質を持った一定の形)に変形することをいう。
が気にくわないんだろ?
>>912 > メモリ、HDDや帯域の無駄だから、やめてくれってことだ。
まだ言うかね。
通信フォーマットは、通常テキストベースなんだってば。
HDDに保存する場合はバイナリで保存することはあるが。
「適切に」正規化されている場合って書いてあるの解る? つまり、大小比較可能な形式に正規化するって話をしてるんだが
>>911 こういうアホがでるからわざわざ適切に正規化されている場合って書いたのにな
日付比較に適さない形に正規化されてても適切じゃないってわからんのか
正規化キチガイのスレはココでつか?
今日も一日、おつかれさま。なんとなく春めいてきました。 _______ ../|:┏━━━━┓| /. |:|今度の土|| |.. |:|日も雨…|.| |.. |:┗━━━━┛| \_| ..┌──┐ |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ____ ( ) かぁちゃん.. | ( ) <貰ったチョコ ∧∞ヘ バスルーム| ( ) ∧のヘ 食べていいぞ ~ 田 ( ) | (( (* ^ω) □■  ̄ ̄(_ ) | テチテチ (つ |) □〓□ \_) |。 。。。u-θ |二二二二二二| | | | | 貰ったことは貰ったけど・・当然義理だけどね。 年齢とともに減って気がする・・まだ貰えるうちが華かな。o((*^▽^*))o
>>912 ,914
その辺はケースバイケース。前提を絞らんと何とも言えん
日付時刻がテキストベースで送られる場合が多いのは、プラットフォームにより内部形式が違う場合が多いから
場合によってはUNIX時刻が当たり前な世界もあるし
_______ ../|:┏━━━━┓| /. |:|今度の土|| |.. |:|日も雨…|.| |.. |:┗━━━━┛| \_| ..┌──┐ |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ____ 経費ではおとせないから、レシートは | 捨てておきましたから > ∧∞ヘ バスルーム| ∧_∧ ~ 田 ( ) | (・ω・;) ハッ □■  ̄ ̄(_ ) | (つ と) □〓□ \_) | u-u |二二二二二二| | | | |
それは昔の通信プロトコルがテキストベースが多かったせい
見おとしてた。
>>910 > 前提として、プレゼンテーション層の表現形式が正規化されていて、日付比較可能な形式なら
> その形式で比較すればいい。
文字列比較がだめだって言ってる人は、元々これをやっちゃイカンという意図だったんじゃないの?
文字列比較がダメだって言うやつの主張は 比較できる形に正規化するという前提を無視 文字列比較が"0"<"9"ならないというVBではあり得ない仮定 の上で成り立ってる主張
全然違う
日付データなんだから、Date型使うべきってだけでしょ そっちの方が頭堅いわ
>>926 唯一Date型だけが日付を比較できるんだけど?
数字の大小なら他でも比較する手段はいくらでもあるけどね。
>>927 誰もお前になんか興味無いから、お前のことなんか分かりたくないんだよ
>>928 日付型がない言語はどうしたらいいですか、先生
日付の比較は値の大きさの比較ではなくて時間の早い遅いの比較だという事がわかってない。
>>930 それは日付が比較できない処理系と言う事で終わりです。
例えばC言語やアセンブラがそうですね。
文字コードからいって現実的には文字列比較でも問題は無いことはわかってて それでも日付として比較しようよって話。 データの意味をもう少し重く考えようよって話。理想。
で、必要のないCDateを使いまくると
使いまくることにはならないと思うけど使いまくってもいいよ。
なんだ、
>>926 が正解か
だったら最初からそう言え馬鹿
>>933 それは元が文字列だっていう前提を出したやつに言ってくれ
ちょっと言っときたいけど、プリペアードステートメント最強と勘違いしてる奴がいるみたいだが、 繰り返しそのステートメントを使う必要がなく、セキュリティリスクも無い場合は、文字列として クエリを組み立てるのが最強だから。 プリペアードステートメントだと、コストベースの実行計画が立てられないRDBMSが多いと思う。 そうじゃないRDBMSもあるかもしれないけど。 これ、VBの話ね。
941 :
デフォルトの名無しさん :2013/02/14(木) 19:07:07.93
>>940 セキュリティリスクをがないときってどんなときなんだ。
犯罪者がいない国なら警察がいない社会システムが最高だと言ってる
ようなものでしょうが。永遠の命が約束された地におくりびとはいらない
と言ってるようなものでしょうが。逝ってよしと送り出してくれる
ナイスガイはいないほうがいいと言ってるようなものでしょうが。
話にならないよ。はい論破。
ようやく論破君が絡めるレベルの話になったのか
>>805 そのバリデートで妥当と判断したら、後はDate型に変換してそのまま扱う
そういえば、昔会社のエラいさんから渡された糞VB6のプログラムだが、 DBにaccess使うまではいいんだけど、 年・月・日・時 がそれぞれ別レコードになってた。 頭痛くなった。
別カラムじゃなく別レコード?
947 :
デフォルトの名無しさん :2013/02/14(木) 20:03:15.77
>>942 いいかげんにしなよ、そうやって論破さんをおとしめる陰湿な書き込みばかりやってると
ちんちんにカビ生えるよ。お前はそのカビから未知の抗生物質が発見されて
病理学上のサンプルとして自分が有名になれると夢見てるのかもしれないけれども、
せいぜいかびるんるんとしてばいきんまんの手先になるのが関の山、愛と勇気がともだちの
論破さんに痛烈に論破されて世界の中心でばいばいきんと叫んでろ。ば・い・ば・い・き・ん・と・な。はい論破。
病理学の意味がわかってないのに使うから恥をかく
949 :
デフォルトの名無しさん :2013/02/14(木) 20:06:19.21
寝て起きたらレスが157も増えててワロタ
>寝て起きたら VBerの成れの果てか
なんかある雑誌で今一番熱い言語がVB6.0って書かれてんだけど このスレのせいじゃねーの? おまいら責任とれよなw
Win7ProにXPモードがあるのはそのためかw
なんて雑誌だよ
VBマガジン
VB6 ワイルドだろ~? / ̄ ̄ ̄\_ /__ ___/__ ヽ / / )ノ ヽヽ | | ー ー | | ( V =・ヽ /・= V ) ヽ ノ ノ | ヽ_ノ | ヽ  ̄ ̄` ノ \ / __/\___/ヽ_ /ヽ⌒\ /⌒ /\ ( |__У___| ) .\ | |__| |o|__| | /
VBって日付型ってあるんだな。 Dim d As Date
PCでLinuxが普及する訳がないと思った時75
http://engawa.2ch.net/test/read.cgi/linux/1357699296/ 844 名前:login:Penguin[] 投稿日:2013/02/14(木) 20:59:11.02 ID:OeVUytCV
>>843 うちの役所はこうだけどよそは知らないというまさに縦割りの弊害に
陥っておられる。国家運営がこんなことでいいと思いますかみなさん。
国家とOSは違うんだなんて思ってはいけません。それぞれの役割を
担う部署が一丸となって動くシステムだからこそ円滑な運営ができるんです。
つまりWindowsが優れているということなんです。Linuxが劣っているということなんです。はい論破。
850 名前:login:Penguin[sage] 投稿日:2013/02/14(木) 22:42:27.34 ID:f5i2DYt8
>>835 >>836 >>844 ひさしぶりだな、ダダダw
プログラマ板でコテンパンにされたので泣きながら帰ってきたのかw
犬臭い
962 :
デフォルトの名無しさん :2013/02/15(金) 10:54:39.47
>>961 Windows BlueではVB6.0ランタイムをサポートことが社内で正式に決定された。
USでは一部報道されているが、ほとんど問題視されていない。
>>962 >サポートことが
サポートしないことが
サポートされることが
どっちだよ?w
15年ぶりに来たんだが VB6ってもうランタイムをインストールしなくても使える状態になってるの?
>>964 XP SP2からできるようになっているよ。旦那。
2chって15年前からあったんだ
>>941 > セキュリティリスクをがないときってどんなときなんだ。
Webアプリケーションでプリペアードステートメントが推奨されるのは、SQLインジェクション対策の
唯一の根本対策だからだ。Webアプリケーションではその性質上、不特定多数にアプリケーションを
公開するため、攻撃される可能性も高い。
一方、スタンドアローンアプリケーションであることが多いVBアプリの場合は、不特定多数からの
攻撃は無い場合が多い。
考えられるのは、そのアプリケーションを操作するユーザが悪意を持っている場合に限る。
ここから先は、そのVBアプリがデータベースに対してどのようなデータを送るのかによる。
SQLインジェクションが起こらないようなクリーンなデータのみを取り扱えるのなら問題は無い。
また、RDBMSが機能として持っている場合のクエリキャッシュ機能や、外部ツールとして連携して
実現されるクエリキャッシュ機能を使うとき、プリペアードステートメントの場合は一部制限があったり、
全く使えなかったりする。
もっと盛り上がる題材は無いものか
>>965 機能数267×1人月=267人月
--
終わり
セキュリティがどうのこうの言うんだったら、 まず日付の文字列なんか捨てろよ。 余計なバッファオーバーランの可能性が増えるだけだろ。
ちょっと何いってるのかわかりません
974 :
デフォルトの名無しさん :2013/02/15(金) 19:53:55.47
>>969 ・バリアント型が存在することの弊害について
・漢字の変数名、関数名はアリか
・新しいOSで使える凄いAPIの宣言文と使い方について
> ・バリアント型が存在することの弊害について スクリプト言語はだいたいバリアント型相当
>>975 それはスクリプト言語とかじゃなくて、型付き言語かそうじゃないか
スクリプト言語の多くが型なしの言語だって話
ここでの論点は型付き言語にも関わらず複数の型を許容する型の存在
それがバリアント型じゃないのか?
>>976 基底クラスってのは
そのサブクラスの複数の方を許容するよ。
たとえば真のオブジェクト指向言語(全ての型が基底クラスObjectを継承している)なら
Object型にどんな型でも入れられる。
>>977 いやだから
・バリアント型が存在することの弊害について
だろ
>>978 VB.NETでもそうだが、だからと言って変数全部Objectで宣言しろとか言うやつはいないだろ
バリアントはたまにそう言う主張する奴がいるからなぁ
誰が、変数全部Objectで宣言しろとか言ったんだ?
バリアントはあってもいいけど、頑なにバリアント禁止と言う奴がたまに居るのが、弊害っちゃ弊害だな。
便利なArray関数がつかえんしな
983 :
デフォルトの名無しさん :2013/02/15(金) 23:31:55.86
唯一の配列初期化手法 しかし宣言と同時には無理 それが限界ぽ
唯一じゃねーだろw
986 :
デフォルトの名無しさん :2013/02/16(土) 03:42:50.40
旧VBってどこで手に入るの?
新しく入手するんじゃなく オールドユーザーがいつまでも手放さないんじゃよ
中古で売ってるとこ頑張って探すしかないな
MSDN サブスクリプションの会員になればVB2~VB6まで入手できるよ
991 :
デフォルトの名無しさん :2013/02/16(土) 04:07:03.48
今検索してみたらMSDNにあるじゃん>>VB6
992 :
デフォルトの名無しさん :2013/02/16(土) 05:06:27.31
/ ̄ ̄ ̄ ̄ ̄ ミ / ,――――-ミ / / / \ | | / ,(・) (・) | ┌───────── (6 つ |< んなわけネーヨ | ___ |..└──────── | /__/ / .....| / \ <  ̄ ̄ ̄ ̄............./| \.\______// \ / ∪∪ ̄∪∪
うめ
Dim s1, s2 As String でs1がバリアントになるのは勘弁して欲しい。 あと推論型も欲しい。
うめ
千
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。