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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
        ____
        /     \    
     /   ⌒  ⌒ \   論破くん↓必死だなー
   /    (●)  (●) \     
    |   、" ゙)(__人__)"  )    ___________
   \      。` ⌒゚: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/
2デフォルトの名無しさん:2013/02/01(金) 21:40:00.69
ここは Visual Basic 〜6.0 の質問スレです。
質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。

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

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

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

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

※「まず自分で調べる」クセを身につけよう。
3デフォルトの名無しさん:2013/02/01(金) 21:40:49.42
Part 1 http://piza2.2ch.net/tech/kako/968/968328471.html
Part 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
4デフォルトの名無しさん:2013/02/01(金) 21:43:09.80
Part30 http://pc2.2ch.net/test/read.cgi/tech/1069160036/
Part31 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/
Part59 http://toro.2ch.net/test/read.cgi/tech/1344325875/
5デフォルトの名無しさん:2013/02/01(金) 21:46:48.93
>>1
スレ立てこんなんじゃ全然ダメw
構造化例外処理をなんで>>1書くかな。
普通、テンプレだろ。
6デフォルトの名無しさん:2013/02/01(金) 21:53:24.44
>>5
もう終わった言語で
これだけ伸びてるんだ。
論破くんはいいおもちゃじゃないか。
このスレまるまる晒しあげして遊ぼうよw
7デフォルトの名無しさん:2013/02/01(金) 22:05:32.91
>>6
目くそ鼻くその言い合いは見苦しい。
スレ立てもまともにできないんじゃ、コードもまともに書けないだろ。

ま、力抜けってことだ。
8デフォルトの名無しさん:2013/02/01(金) 22:08:29.13
>>1おつ。

>>5
模範となるものだからに決まってるだろ。前スレの>>792は手本として
掲載されるだけの価値があるものだという結論が前スレで出たに近いだろ。
大勢の技術者が議論して>>792は構造化プログラミングの王道を行くもので
構造化プログラミングの真髄を示す優れたコードだと結論付けられたような
ものだったろ。忘れたのか?思い出せ。
97:2013/02/01(金) 22:13:46.14
>>6
それと、プログラムって言い争うためのものじゃないし。
そこそこやりあうのはわかるけど、とっくに限度超えてるよ。
10デフォルトの名無しさん:2013/02/01(金) 22:14:09.08
久しぶりにカーネルのバージョンが上がる次のWindows 9(Windows Bllue)では
VB6のランタイムがサポートされなくなることは、マイクロソフティーの間では周知の事実になっている。
そんな将来の無い、今年で終わりを告げる言語のスレで、論破を連呼するロンパールーム世代のIT土方構成員。
ドナドナドナ〜♪ 論破の雄叫びも、IT土方再下層の最悪の労働環境からの叫びにしか聞こえない。
11デフォルトの名無しさん:2013/02/01(金) 22:16:03.74
       _,,,...:-‐‐=-.'.:,丶
.      ,r'";; ;;      ;;\,,.....,  
    ,,r'";; ;; ;,,,     ;;; , ;;; ;;;,`'::,、           .................
  ,:r';;; ;; ,;;; ;;      ;;    ;; ;;; ,;; `':,、    ........::::::;;;;;;;;;;;;;;;:::::::.........
,r'";;;,, ,,;; ,,;;;, ,,,,      ;  ;;  ;; ,, ;;, ;;`';;、_:::::::::::::::;;:''      ''';;;:::::::::::::::
;;;  ,,,;;; ;,,,;;; ;; ;,,, - '''' ''';‐-,, ,,   ,,、,,,    ;;`';;、_:::;;;''        '';;- ''""
, ,,,,,,;;;;;                        ...,, -‐- ,... ...--‐‐''''"
                     ( ´-`) ある晴れた 昼さがり
                     | つつ     /l/l
            ______ヽ ヽ\\__ 〆 ´`\
            |――――――|匚JJヽ>ー|-|--‐メ、゚_゚)
            |――――――|ロ匚ニニニニコ .〈コ
            | / ニヽ―/ =ヽ   〉// ̄`ー、ヽヽ
             ヽ゚ノ  ̄ ヽ ゚ノ   〈/ ヽ〉   〈/.ヽ〉


         荷馬車が ゴトゴト
                       ,〜〜     、,,
         _     ー!⌒ー /  ____/ ヽ
      ゝ -ノっ  ̄ ̄ヽ / ̄^ヽっ /,,   ,      '|          ___ ▲
      _|  `   ;;__ヽ__/_ >  | |||   |    /J   ____ |_┌┐,,|___
     | (oo丿 ,  |―――――|  | || ――ー-'       _ _ _ - -
     |―ヽヽ /__.|―――――|ニニニ」ヽ/ヽヽ/    ー ー  ―
   _ .|― し' J   |/ ニヽ―/ =ヽ  |ゝ ∩  7ゝ ―‐− ー−
      ̄ヽニ ̄ ̄ヽヽ゚ノ ̄ヽ ゚ ノ       ,,,,,,,,,, , ,,,, ,,, ,,,, ール''
       ,,  ,,,,, ,, ̄     ̄ ,,,77''''''7'''''''
12デフォルトの名無しさん:2013/02/01(金) 22:16:35.27
      _,..-――-:..、    ⌒⌒
    /.:;;;;;;;;;;;;;;;;;;;;;::.\      ^^
   / .::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::..ヽ   ドナドナドーナードーナー
         __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
14デフォルトの名無しさん:2013/02/01(金) 22:31:36.98
ドナドナドナ〜♪が論破論破論破〜♪に聞こえる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
16デフォルトの名無しさん:2013/02/02(土) 00:04:26.07
>>15
だっせw
17デフォルトの名無しさん:2013/02/02(土) 00:24:58.01
>>16
お前はそれよりスマートなコード書けんの?無理だろ。
なぜなら>>15はこれ以上ないほどに洗練されてるから。
俺ははからずもVBの限界を示したといっても過言ではない。
>>15はVBの限界。はい論破。
18デフォルトの名無しさん:2013/02/02(土) 00:53:31.88
1.まずJava7で加えられたjava7 try-with-resources(リソースの自動機能)は
どんな機能なのか>>17に説明してもらう。

2.その上で、>>15はそれを満たしているのかい?と質問する。
これだけで>>17は自滅すると思う。

じゃ後はよろしく。
19デフォルトの名無しさん:2013/02/02(土) 00:56:27.81
>>18
お前は論破されるのがこわいからできないってわけ。その時点で論破されてるな。はい論破。
20デフォルトの名無しさん:2013/02/02(土) 00:58:34.83
http://dic.nicovideo.jp/l/%E3%81%AF%E3%81%84%E8%AB%96%E7%A0%B4

はい論破とは、相手を論破した際に使用する言葉である。

概要
しかし、実際は論破できておらず単に屁理屈を述べているだけのことが多い。
掲示板等でマジになったときに使うとむしろ醜態をさらしてしまうため、決して顔真っ赤な状態で書き込んではならない。
21デフォルトの名無しさん:2013/02/02(土) 06:08:46.88
>>18
VBスレでJavaの話はナンセンス。
22デフォルトの名無しさん:2013/02/02(土) 06:15:19.29
ここで言い合っている奴らが話の内容はどうであれネット弁慶であることは分かった。
申し訳ないが死ぬまでROMってろください。
23デフォルトの名無しさん:2013/02/02(土) 09:15:07.33
>>15
Classを使っているのに、InitializeもTerminateも無い時点で(プログラマとして)終了してる
24デフォルトの名無しさん:2013/02/02(土) 10:04:00.40
      _,..-――-:..、    ⌒⌒
    /.:;;;;;;;;;;;;;;;;;;;;;::.\      ^^
   / .::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::..ヽ   ドナドナドーナードーナー
         __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
お前ら文句はいっちょまえに言うけど誰一人俺のコードを超える
ことができないな。大勝利すぎてうれしいです。はい論破。
27デフォルトの名無しさん:2013/02/02(土) 10:53:43.59
      _,..-――-:..、    ⌒⌒
    /.:;;;;;;;;;;;;;;;;;;;;;::.\      ^^
   / .::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::..ヽ   ドナドナドーナードーナー
         __AーA    論破論破論破〜♪
      _,ィ´▼⊂ ・ ・⊃
.... .. ..  ' {●.▲ヽ(_⌒)   .. ... ........ ... .. .... ..
:::: :: .,'  i――――――i  ':, :: :::: :::: :::::::: ::::
;; ;; :,"  |______|  `:, :;;; ;;;;;; ;;; ;;;;
w ,.'    i,,i ;;;;;;;;;;;;;;;;;;;; i,,i;;:..  ゙v w゙゙w゙w゙゙w
",i    ,;'' :::::::::::::::::::::::';,::::::... ヾ、 w vw w
./    ,;;:´  :::::::::::::::::::::':;;,::::::::.. i,'、 ww w
28デフォルトの名無しさん:2013/02/02(土) 11:03:57.35
>>25
どんな立派な言い訳をしても、>>15のコードにデストラクタが無いのは致命的
29デフォルトの名無しさん:2013/02/02(土) 11:07:30.19
>>28
デストラクタはJavaにもない。Java 7のすぐれたtryステートメント
を模倣した>>15にデストラクタがないのはきわめて自然なことであり、
>>15はデストラクタが必要ないことを示す有益なコードでもある。致命的なのはお前の頭。はい論破。
30デフォルトの名無しさん:2013/02/02(土) 11:14:13.60
      _,..-――-:..、    ⌒⌒
    /.:;;;;;;;;;;;;;;;;;;;;;::.\      ^^
   / .::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::..ヽ   ドナドナドーナードーナー
         __AーA    論破論破論破〜♪
      _,ィ´▼⊂ ・ ・⊃
.... .. ..  ' {●.▲ヽ(_⌒)   .. ... ........ ... .. .... ..
:::: :: .,'  i――――――i  ':, :: :::: :::: :::::::: ::::
;; ;; :,"  |______|  `:, :;;; ;;;;;; ;;; ;;;;
w ,.'    i,,i ;;;;;;;;;;;;;;;;;;;; i,,i;;:..  ゙v w゙゙w゙w゙゙w
",i    ,;'' :::::::::::::::::::::::';,::::::... ヾ、 w vw w
./    ,;;:´  :::::::::::::::::::::':;;,::::::::.. i,'、 ww w
31デフォルトの名無しさん:2013/02/02(土) 11:28:11.07
>>29
「デストラクタと言う機構はJavaには無い」の間違い

>>15のコードの駄目なところ
まず、Closeメソッドは必要ない
次に、オブジェクトをByValで渡してはならない
32デフォルトの名無しさん:2013/02/02(土) 11:32:32.21
>>31
だな
33デフォルトの名無しさん:2013/02/02(土) 11:35:22.73
>>31
CloseがなければCloseableにならない。CloseableはCloseを
呼ぶからこそCloseableなのであり、それこそがJava 7のtryステートメント
の本質。アリクイがアリを食わなかったらアリクイじゃないだろ。アリクイは
アリを食うからアリクイなんだ。

馬鹿かお前。アリクイさんに耳から下を挿入されて頭の中身ぺろぺろされでもしたのか?
ByValでオブジェクトを渡してはいけないなんてそんなものはない。まったくない。アリクイさんに誓ってない。はい論破。
34デフォルトの名無しさん:2013/02/02(土) 11:45:34.19
>>33
Closeを明示的に呼び出す必要は無い、VBにはCloseを明示的に呼び出さなくても良い仕組みがある

ByValで渡す物が何であるかを考えれば、ByValでオブジェクトを渡してはいけない事は自明
35デフォルトの名無しさん:2013/02/02(土) 11:50:52.36
>>34
Closeはtry関数によって完全に隠蔽されているわけであり、
Closeが隠蔽されたところで呼ばれるということにtryステートメントの本質がある。
お前はアリクイに対してモグラを食べればいいじゃないといっているようなもので
物事の本質を理解していない。アリクイがモグラを食べたらアリクイじゃなくなる。
Closeを呼ばなくなった時点でCloseableじゃないしJavaのベストプラクティスから逸脱した
ワーストプラクティスに成り下がる。ByValが否定される要素などいっさいないがそれを
自明と言いきったお前の頭がイカれていることが自明。はい論破。
36デフォルトの名無しさん:2013/02/02(土) 11:56:49.49
http://dic.nicovideo.jp/l/%E3%81%AF%E3%81%84%E8%AB%96%E7%A0%B4

はい論破とは、相手を論破した際に使用する言葉である。

概要
しかし、実際は論破できておらず単に屁理屈を述べているだけのことが多い。
掲示板等でマジになったときに使うとむしろ醜態をさらしてしまうため、決して顔真っ赤な状態で書き込んではならない。
37デフォルトの名無しさん:2013/02/02(土) 11:57:10.44
      _,..-――-:..、    ⌒⌒
    /.:;;;;;;;;;;;;;;;;;;;;;::.\      ^^
   / .::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::..ヽ   ドナドナドーナードーナー
         __AーA    論破論破論破〜♪
      _,ィ´▼⊂ ・ ・⊃
.... .. ..  ' {●.▲ヽ(_⌒)   .. ... ........ ... .. .... ..
:::: :: .,'  i――――――i  ':, :: :::: :::: :::::::: ::::
;; ;; :,"  |______|  `:, :;;; ;;;;;; ;;; ;;;;
w ,.'    i,,i ;;;;;;;;;;;;;;;;;;;; i,,i;;:..  ゙v w゙゙w゙w゙゙w
",i    ,;'' :::::::::::::::::::::::';,::::::... ヾ、 w vw w
./    ,;;:´  :::::::::::::::::::::':;;,::::::::.. i,'、 ww w
38デフォルトの名無しさん:2013/02/02(土) 12:02:55.53
論破できてないとしてもバカではにと思うけどね
  
まあ、リアルに会って話すと相手の目を見て話さないタイプだとは思うがw 
39デフォルトの名無しさん:2013/02/02(土) 12:04:04.46
>>35
オブジェクトの場合、ByValで渡そうが、ByRefで渡そうが、結果は同じだが...

>>15のコードで、Closeすることに疑問を持たないのは...
40デフォルトの名無しさん:2013/02/02(土) 12:06:48.80
>オブジェクトの場合、ByValで渡そうが、ByRefで渡そうが、結果は同じ

ちょっと違う
41デフォルトの名無しさん:2013/02/02(土) 12:09:01.56
論破くんはJavaも知らないんだね。
42デフォルトの名無しさん:2013/02/02(土) 12:09:37.97
論破くんが見てて哀れだから
もうそろそろヒントあげようか?

インターフェース
43デフォルトの名無しさん:2013/02/02(土) 12:10:44.33
>>39
へ?賛同してくれてんの?結果は同じだがテンテンテンの意味がわかんない。
俺はByValでオブジェクトを渡してはいけないということを否定する立場だから
同じ意見なんだろうけど、結果が同じだからByRefでもいいというのなら
お前はアリクイさんに蹴られてしかるべきだ。VBではByValが基本だ。
必要なときのみByRefにするべきであってByValが基本だ。
Closeすることに疑問をもってどうすんだよ。アリクイがアリを食べてることに
疑問をもてといってるようなものだろうが。アリクイの生態を調べる生態学者
ならそれでもいいだろうが、俺はプログラマだ。はい論破。
44デフォルトの名無しさん:2013/02/02(土) 12:12:08.54
>>41
知ってるよお前より存分に存じ上げている。もしJavaがアリクイだったとしたら
Javaもお前より俺になつくだろうな。はい論破。
45デフォルトの名無しさん:2013/02/02(土) 12:12:14.50
      _,..-――-:..、    ⌒⌒
    /.:;;;;;;;;;;;;;;;;;;;;;::.\      ^^
   / .::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::..ヽ   ドナドナドーナードーナー
         __AーA    論破論破論破〜♪
      _,ィ´▼⊂ ・ ・⊃
.... .. ..  ' {●.▲ヽ(_⌒)   .. ... ........ ... .. .... ..
:::: :: .,'  i――――――i  ':, :: :::: :::: :::::::: ::::
;; ;; :,"  |______|  `:, :;;; ;;;;;; ;;; ;;;;
w ,.'    i,,i ;;;;;;;;;;;;;;;;;;;; i,,i;;:..  ゙v w゙゙w゙w゙゙w
",i    ,;'' :::::::::::::::::::::::';,::::::... ヾ、 w vw w
./    ,;;:´  :::::::::::::::::::::':;;,::::::::.. i,'、 ww w
46デフォルトの名無しさん:2013/02/02(土) 12:12:40.88
>>42
お前が知ってる言葉を言っただけだろ。ふーん。はい論破。
47デフォルトの名無しさん:2013/02/02(土) 12:14:24.80
>VBではByValが基本だ。必要なときのみByRefにするべきであってByValが基本だ。

これ、逆だよね?基本ならデフォにするはずだし。意外とバカかもw
48デフォルトの名無しさん:2013/02/02(土) 12:15:43.19
どちらにせよ基本とか言ってる時点でアウトだろ?
49デフォルトの名無しさん:2013/02/02(土) 12:16:03.52
オブジェクトの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
50デフォルトの名無しさん:2013/02/02(土) 12:17:40.27
>>47
デフォじゃないから基本じゃないとでも思ってんの?俺はプログラマが実装する上での
基本を述べたわけであり、なんの考えも持たず言語仕様的な事柄を述べることしか
できないお前のようなすっからかんとはわけが違う。バカはお前。はい論破。
51デフォルトの名無しさん:2013/02/02(土) 12:18:02.18
      _,..-――-:..、    ⌒⌒
    /.:;;;;;;;;;;;;;;;;;;;;;::.\      ^^
   / .::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::..ヽ   ドナドナドーナードーナー
         __AーA    論破論破論破〜♪
      _,ィ´▼⊂ ・ ・⊃
.... .. ..  ' {●.▲ヽ(_⌒)   .. ... ........ ... .. .... ..
:::: :: .,'  i――――――i  ':, :: :::: :::: :::::::: ::::
;; ;; :,"  |______|  `:, :;;; ;;;;;; ;;; ;;;;
w ,.'    i,,i ;;;;;;;;;;;;;;;;;;;; i,,i;;:..  ゙v w゙゙w゙w゙゙w
",i    ,;'' :::::::::::::::::::::::';,::::::... ヾ、 w vw w
./    ,;;:´  :::::::::::::::::::::':;;,::::::::.. i,'、 ww w
52デフォルトの名無しさん:2013/02/02(土) 12:18:57.12
>俺はプログラマが実装する上での基本を述べたわけ

それってプログラマじゃなくてお前の独断と偏見ってやつじゃん
53デフォルトの名無しさん:2013/02/02(土) 12:19:51.31
>>48
何が?え?何がアウト?プログラマならプログラムを実装する上でやるべき
好ましい事柄くらい把握しておくべきでありそれを基本と述べた俺をお前のような
でくのぼうは目標にするべきだ。はい論破。
54デフォルトの名無しさん:2013/02/02(土) 12:20:41.68
言語仕様上のデフォを基本と考えるか
論破できていない事を論破と言い切るアフォの言う事を基本と考えるか
自ずと答えは出ている罠(笑)
55デフォルトの名無しさん:2013/02/02(土) 12:20:45.56
オレオレ基本の話しなら、チラシの裏にでも書いておけばいいのに…
56デフォルトの名無しさん:2013/02/02(土) 12:23:17.07
>>52
お前のがらんどうの頭で考えた考えなしの考えだったらそれはお前の偏見でしかないが
俺の優れて明晰な頭脳によって導き出され、しかもそれが一般的であり良識であると
十分に推量されるわけであるから、俺の考えはプログラマの一般常識であり、良識である。はい論破。
57デフォルトの名無しさん:2013/02/02(土) 12:24:25.81
良識としての推量だって?
ヲイヲイ、話が逆になってないかい?
冷静になれよリアル貧乏君
58デフォルトの名無しさん:2013/02/02(土) 12:25:42.52
俺の考えはプログラマの一般常識であり、良識である。
俺の考えはプログラマの一般常識であり、良識である。
俺の考えはプログラマの一般常識であり、良識である。
俺の考えはプログラマの一般常識であり、良識である。
俺の考えはプログラマの一般常識であり、良識である。
俺の考えはプログラマの一般常識であり、良識である。
俺の考えはプログラマの一般常識であり、良識である。
俺の考えはプログラマの一般常識であり、良識である。
俺の考えはプログラマの一般常識であり、良識である。
俺の考えはプログラマの一般常識であり、良識である。
俺の考えはプログラマの一般常識であり、良識である。
俺の考えはプログラマの一般常識であり、良識である。
俺の考えはプログラマの一般常識であり、良識である。
俺の考えはプログラマの一般常識であり、良識である。
俺の考えはプログラマの一般常識であり、良識である。
俺の考えはプログラマの一般常識であり、良識である。
俺の考えはプログラマの一般常識であり、良識である。
俺の考えはプログラマの一般常識であり、良識である。
俺の考えはプログラマの一般常識であり、良識である。
俺の考えはプログラマの一般常識であり、良識である。
俺の考えはプログラマの一般常識であり、良識である。
俺の考えはプログラマの一般常識であり、良識である。
俺の考えはプログラマの一般常識であり、良識である。
俺の考えはプログラマの一般常識であり、良識である。
俺の考えはプログラマの一般常識であり、良識である。
俺の考えはプログラマの一般常識であり、良識である。
俺の考えはプログラマの一般常識であり、良識である。
俺の考えはプログラマの一般常識であり、良識である。
俺の考えはプログラマの一般常識であり、良識である。

単に病気であることが判明wwww
 
59デフォルトの名無しさん:2013/02/02(土) 12:25:55.80
>>54
お前は基本の言葉の意味を取り違えているだけ。流れを読んで基本というのは
どういう意味での基本なのかなと前提の方を定義し直すようにしないとわざとかどうかは
知らないけどお前のように物事を曲解することになる。普通の人は大学や会社で
議論の場というのを経験するから問題ないのだけれど、お前のような低学歴は苦労するだろうな。はい論破。
60デフォルトの名無しさん:2013/02/02(土) 12:26:33.91
論破以前に国語力がないじゃんこの人?
61デフォルトの名無しさん:2013/02/02(土) 12:28:03.03
>>57
>>58
お前らのようにコード示せない分際で人格攻撃しかできないやつって情けないと思う。俺はそんなお前らをみてせつなくなる。お前らの親がな。はい論破。
62デフォルトの名無しさん:2013/02/02(土) 12:29:07.17
>>60
えー?どこがー?具体的に言ってー?そんな印象的なことしか言えないんだったら、はい論破。
63デフォルトの名無しさん:2013/02/02(土) 12:36:48.57
>>55
それって結局さお前が俺に論破されたからそれへの反発で
オレオレというレッテルを貼って拒絶してるだけで、俺の考えが
一般的であり良識的であることはわかってるだろ。そういう態度ってとても恥ずかしいことだと思います。はい論破。
64デフォルトの名無しさん:2013/02/02(土) 12:46:39.01
デフォルトがByRefなのは
単に互換性のためだよ。

古いBASICでは関数はなかったサブルーチンだった。
変数はグローバル変数だった。
だから関数の呼び出し先で変更した値は
当然戻ってからも変わっていた。
65デフォルトの名無しさん:2013/02/02(土) 12:47:11.79
今日も論破くんは元気だ。はい論破
66デフォルトの名無しさん:2013/02/02(土) 12:47:28.19
論破君にも色々なタイプがあるけど
これほどまでにコミュニケーション能力に欠ける論破君はあまり見ない
論破の文字が色あせるのはそのせい?
67デフォルトの名無しさん:2013/02/02(土) 12:48:05.94
風邪で首の周りが腫れているんだよね。それリンパ
68デフォルトの名無しさん:2013/02/02(土) 12:48:45.47
性能はいいけど値段は安い。それコスパ
69デフォルトの名無しさん:2013/02/02(土) 12:48:56.25
せめて明らかな間違いくらいは認めないとね
論破くん以前に人間としてな
70デフォルトの名無しさん:2013/02/02(土) 12:52:45.34
          /                               ヽ/   ,,
         /                  ___  |     __   ヾ    /'  ,,ヘ   |
       /                ...:::´::::::::::`:::::ゝ:::/  / ヽ   ヾ  /' //⌒ ヾ::::|
 ど    ∠_____         /\::::::::::::::ヽi~ヾ/   '⌒\\     //     ヾ/~i
             /        /   ~ヽ_::::::::::::ヽ      _\\ / ノ / _      /
            /      / ⌒ ヽ    ~~‐-、::::::ヽ ヽ  (´  。`iヽ/lllヾノi´。  `)   / /\
          /      /      _/^`ヽ    ゝ:::::::| |  `  ̄´ /`^ \ `  ̄ ´   | ノ  ` ̄`ヽ
         ∠      /   /⌒ i  i\_ ,、/:::::::::ヽ i  ,,.__,.,.-' ヾ /' `-,.,.__,,, ノ /
 ど      ∠__   /    ノ´ ミ  i   i" ⌒ヽ::::::::::::::ヽ\     /(` ´)ヽ    / /
            /  /   /ミ /  i   i    |:::::::::::::::::ゝ |ヽ  /|||ヽ_/||||ヽ   ノ |ノi    /"
          /   /   (  ヽ  | i´ `i |  ヾi:::::::::::::::::::::::|  /|||/゛゛,゛゙'ヾ|||ヽ   |:::::ゝ /
         <     |    ゝ  ヽ(´⌒` ) ,、 ノゝ,_::::::::::::::::::|  |||/`'´ ̄`´ヽ|||   |::ノ /
          \    |   (´ \  ヽ,_,ノ( (/   i::::/~‐-_| | ||^i,⌒Y⌒'i^i||| | |⌒
 ん         \  |    \ ヽ,,_,,ノ / ̄     ヽ(   || || ,i  |  i, i|| | |
             \ \    ヽ,,__ノ /             | ゝヽヽ、,_,、/^/,,ノ |
          ___\ ヽ、 ___,,/             ヽ'' \  _,,_ノ   ノ
          \    ̄        ヽ               \   ̄``  /
 ぱ      __\            \               \ `ヾ、 /
71デフォルトの名無しさん:2013/02/02(土) 12:53:02.81
>>69
何も間違ってないにのに間違いを認めろというお前の頭が間違っている。はい論破。
72デフォルトの名無しさん:2013/02/02(土) 12:58:42.05
>>64
へーへーへー。


わかったかお前ら。ByRefは互換性のためにあるんだ。
現代的VBプログラマーの心得としてはByValが基本だ。
100ぺん復唱しろ。はい論破。
73デフォルトの名無しさん:2013/02/02(土) 13:02:02.72
>>43
駄目だな...お前センス無いよ...
値渡しと参照渡しの区別すら付いてないようだな...

VB6系では、オブジェクトの値渡しは出来ないんだよ
74デフォルトの名無しさん:2013/02/02(土) 13:03:13.65
>>73
試してみた?できただろ。じゃあお前が間違ってるんだ。はい論破。
75デフォルトの名無しさん:2013/02/02(土) 13:04:57.51
>>74
だから、VB6系では、オブジェクトの値渡しは出来ないんだよ

値渡しが出来ているなら、>>15のコードは動かないんだよ...残念ながらね...
76デフォルトの名無しさん:2013/02/02(土) 13:05:26.05
ダイナマイトでどっか〜ん。それ発破。
77デフォルトの名無しさん:2013/02/02(土) 13:09:31.32
>>75
意味がわからないんだけど、
VB6はオブジェクトの値渡しができない。
値渡しができるなら>>15のコードは動かない。
>>15のコードはVB6。値渡しができない。
ゆえに>>15のコードは動く?そういうこと?
78デフォルトの名無しさん:2013/02/02(土) 13:11:30.24
Javaもオブジェクトの値渡しができない。それ立派
79デフォルトの名無しさん:2013/02/02(土) 13:12:28.80
>>77
>>15のコードは、VB6だから、意図通りに動作する」が正しい
値渡しが出来るなら「>>15のコードは、絶対に意図通りには動作しない」
80デフォルトの名無しさん:2013/02/02(土) 13:17:01.75
>>79
ByValは値渡しではないと思ってるわけ?
どういうのが値渡しだと思ってるわけ?そこんとこ教えてよ。はい論破。
81デフォルトの名無しさん:2013/02/02(土) 13:17:06.80
今、値渡しの本当の定義を調べています。しばらくお待ちください。もう少ししたら何くわぬ顔で話をねじ曲げます。
82デフォルトの名無しさん:2013/02/02(土) 13:19:17.79
>>80
ByValは値渡しだが
オブジェクトに関して言えば、値渡しにはなっていない

それが理解できないというのは、プログラマとしてのセンスが無い
83デフォルトの名無しさん:2013/02/02(土) 13:19:56.14
論破くんは、ByValは値渡しのはずなのに呼び出し先でオブジェクトの中身が変更できるという事実に混乱しています。
さて論破くんがこの矛盾の理由を理解できるのはいつになるでしょうか?
84デフォルトの名無しさん:2013/02/02(土) 13:21:06.63
論破くん「あーそれ? 知ってた知ってた。で?」
85デフォルトの名無しさん:2013/02/02(土) 13:22:20.22
>>82
どういうのが値渡しだと思ってんの?はい論破。

>>83
参照型だからだろ。俺が聞いてんのはどういうのが値渡しだと思ってるのかってこと。はい論破。
86デフォルトの名無しさん:2013/02/02(土) 13:23:43.27
どうやら勉強してきたようです。さて話を元に戻しましょうか?

>>85
> 値渡しが出来ているなら、>>15のコードは動かないんだよ...残念ながらね...
どうです? この意味、理解出来ましたか?
87デフォルトの名無しさん:2013/02/02(土) 13:25:34.80
>>86
あのまだ答えてもらってないんだけど、どういうのが値渡しだと思ってんの?
俺はByValが値渡しだと思ってる。お前は何が値渡しだと思ってんの?
88デフォルトの名無しさん:2013/02/02(土) 13:43:00.94
論破くんより構ってくんだろコイツ!www
 
リアルじゃ友だちの一人もいないそうだから

じっくり構ってやれよおまいらwww
89デフォルトの名無しさん:2013/02/02(土) 13:48:29.16
論破君のプロファイリング
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12100210832

ww
90デフォルトの名無しさん:2013/02/02(土) 13:49:04.08
>>87
答えも何も、お前俺に質問してないじゃないか。
文句言う相手間違ってるぞ。はい論破w
91デフォルトの名無しさん:2013/02/02(土) 13:49:47.83
>>85
値渡しってのは、値のコピーを渡す事だろ、世間一般普通に考えて
そして、VB6系のオブジェクトは値渡しは出来ない

オブジェクト型は全て参照型だから、値渡しは参照のコピーを渡すので云々と言うのであれば、プログラマとしてのセンスがまるで無い
92デフォルトの名無しさん:2013/02/02(土) 13:51:55.93
> 82 名前:デフォルトの名無しさん [sage]: 2013/02/02(土) 13:19:17.79
> >>80
> ByValは値渡しだが
> オブジェクトに関して言えば、値渡しにはなっていない
>
> それが理解できないというのは、プログラマとしてのセンスが無い


参照型だから値渡しじゃないとでも思ってたのかな。痛いやつがいたもんだな。インドリみたいだ。
インドリと名付けることにしよう。
93デフォルトの名無しさん:2013/02/02(土) 13:53:50.93
Cで言うポインタ渡しのようなもんだろ
値渡しと参照渡しの中間だよ
94デフォルトの名無しさん:2013/02/02(土) 13:58:01.42
>>93
アドレスの値渡しな。中間じゃなくて明確に値渡しだ。はい論破。
95デフォルトの名無しさん:2013/02/02(土) 13:58:44.34
最初っから「”オブジェクト”の値渡しができない」って
書いてあるんだが?

それを見落とした論破くんがおかしい。
96デフォルトの名無しさん:2013/02/02(土) 13:59:44.33
>>95
黙れインドリ、はい論破。
97デフォルトの名無しさん:2013/02/02(土) 14:00:38.77
オブジェクトの参照の値渡しであり
オブジェクトの参照渡しだよ
98デフォルトの名無しさん:2013/02/02(土) 14:00:46.24
いんどりじゃないから、黙る必要はない。はい論破返し
99デフォルトの名無しさん:2013/02/02(土) 14:01:21.45
>>96
言語センスそのものが、まるで無いな...
100デフォルトの名無しさん:2013/02/02(土) 14:05:26.66
>>99
どっちの意味の言語だ?w はい論破。
101デフォルトの名無しさん:2013/02/02(土) 14:09:29.22
>>97
参照型の値渡しを参照渡しと呼んだら
参照型の値渡しと参照型の参照渡しの区別ができない。

ByValは値渡し、ByRefは参照渡しで区別するべきだ。
>>49はそのことを明確に示してるわけ。お前の目は肛門か?はい論破。
102デフォルトの名無しさん:2013/02/02(土) 14:10:30.15
値渡し、参照渡し、という用語自体が唾棄すべきものなんだよ
そこに気付かない時点でオワットル
103デフォルトの名無しさん:2013/02/02(土) 14:11:03.02
>>101
肛門が目の人間はいない。はい論破返し
104デフォルトの名無しさん:2013/02/02(土) 14:11:45.51
はい論破を付けないと自己主張に自信を持てないらしいからw
105デフォルトの名無しさん:2013/02/02(土) 14:13:15.22
>>100
どっちの意味って?
さすが、言語センスが無いだけあるな...
106デフォルトの名無しさん:2013/02/02(土) 14:14:18.43
目が肛門って

* *
 く
 O

こんなイメージで書いたのだと思う。はい論破擁護。
107デフォルトの名無しさん:2013/02/02(土) 14:18:46.42
>>102
どういう言い方をするのがいいと思う?
Variable Referenceで参照変数といってしまったら
参照(型の)変数と読めてしまうから、俺は参照渡しを変数の参照と呼ぶべきだと思う。
値渡しはふつうに変数でいいだろ。たいして違いないから。どうよ?いいだろ?はい論破。
108デフォルトの名無しさん:2013/02/02(土) 14:19:14.17
よくない。はい論破返し
109デフォルトの名無しさん:2013/02/02(土) 14:20:05.87
>>107
特に用語を使わないのが良い
誤解を含む用語を使う方が混乱するわ
110デフォルトの名無しさん:2013/02/02(土) 14:20:45.04
人前でも紙面の娘と話をしているとなると統合失調症の可能性が…
111デフォルトの名無しさん:2013/02/02(土) 14:25:11.46
>>109
それもありだな。うん、その考えはわかる。はい論破。
112デフォルトの名無しさん:2013/02/02(土) 14:25:43.41
論破君が自分が論破された事を認めたw
113デフォルトの名無しさん:2013/02/02(土) 14:25:56.03
馬鹿のお前がわかるわけがない。はい論破返し
114デフォルトの名無しさん:2013/02/02(土) 14:27:06.68
変数が持っているのはオブジェクトへの参照
そもそも、「オブジェクトの値」なぞもってない

値渡しか参照渡しかは変数がもっているものをどう渡すか
持ってないものは渡せない
はい論破

>>91にプログラムのセンスがないことは論をまたない
115デフォルトの名無しさん:2013/02/02(土) 14:33:39.74
>>114
>>15を見るに...
Sub Main()
  Call Try(New Closeable)
End Sub
オブジェクトへの参照ねぇ...
116デフォルトの名無しさん:2013/02/02(土) 14:34:22.42
プログラミングにセンス云々なら分かるが
プログラムには特徴こそあれセンスはない
まずは国語からお勉強してね
117デフォルトの名無しさん:2013/02/02(土) 14:34:47.99
値渡し、参照渡し、という用語を使ってる時点でセンスが無い
118デフォルトの名無しさん:2013/02/02(土) 14:41:50.26
前レスから遡って読んでみたけどなかなか面白いよこの論破くんw
たぶん学生さんだと思うけどね
就職浪人?
119デフォルトの名無しさん:2013/02/02(土) 15:52:53.83
もう10年も前に終わったVB6でこんなに盛り上がれるなんてすごいな。たとえて言うなら絶滅してしまった
動物の保護について熱く語り合っているって感じかな?
120デフォルトの名無しさん:2013/02/02(土) 16:04:50.74
>>119
いまだに開発案件はあるから、死んではないよ。
採用してること自体あれだけどw
121デフォルトの名無しさん:2013/02/02(土) 16:08:18.79
基本Cコンパイラなんで.netでカバーできない分野で使えるからね。
122デフォルトの名無しさん:2013/02/02(土) 16:09:25.35
古いVB6のソフトの保守のために
VB6を使わざるを得ない事があるからなあ
123デフォルトの名無しさん:2013/02/02(土) 16:11:41.50
論破くんを煽っているやつは、論破くんとやってることは大して変わってないことを理解してない。
論破くんと同じで見苦しい。
124デフォルトの名無しさん:2013/02/02(土) 16:31:47.00
なんでこんなスレが勢いトップ・・・?
125デフォルトの名無しさん:2013/02/02(土) 16:36:12.57
スレ始めから炎上したから
126デフォルトの名無しさん:2013/02/02(土) 16:42:32.45
たぶん前スレで途中までOn Error Resume Nextを使うなって意見が多かったところに、
俺が、むしろOn Error Gotoを使うスパゲティーコードよりOn Error Resume Nextを使った方が
今時の構造化例外構文に近い書き方ができるんだって言ったのが事の始まり。

俺は今はVB6全然使ってないし、議論が荒れてきたので途中からまったくフォローしてないが。
127デフォルトの名無しさん:2013/02/02(土) 16:54:06.56
>>126
お前は関係ない。On Error Gotoでスパゲティになると思いこんでるそんな
低レベルな話とはもはや次元が違う。俺がVBの例外処理のベストプラクティスを
示したことにお前の力は一切借りていないし、お前はナポリタンがどうして
赤いのか沈思黙考してればいい。お前レベルのやつがフォローできると思ったら大間違いだ。はい論破。
128デフォルトの名無しさん:2013/02/02(土) 16:56:01.44
      _,..-――-:..、    ⌒⌒
    /.:;;;;;;;;;;;;;;;;;;;;;::.\      ^^
   / .::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::..ヽ   ドナドナドーナードーナー
         __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
130デフォルトの名無しさん:2013/02/02(土) 17:05:01.05
VBのリソース管理は>>15が結論ということでいいな。異論ないだろ。これより優れたコードないだろ。
VBの限界を示した>>15がリミットオブVBということでいいな。はい論破。
131デフォルトの名無しさん:2013/02/02(土) 17:06:45.10
なぜれがリソース管理に?肝心な部分が抜けてるわw
132デフォルトの名無しさん:2013/02/02(土) 17:08:08.96
Javaもよく知らんらしいし無理もなかろう
133デフォルトの名無しさん:2013/02/02(土) 17:10:10.58
>>131
は?何いってんだお前。Java 7のThe try-with-resources StatementをVBで
実装してみせたんだからリソース管理に決まってんだろ、それくらいわかれよイワシ頭。はい論破。
134デフォルトの名無しさん:2013/02/02(土) 17:10:42.53
ドナドナドナ〜♪ 目が肛門♪

* *
 く
  o
135デフォルトの名無しさん:2013/02/02(土) 17:11:22.56
リソース管理にはなってないけど
136デフォルトの名無しさん:2013/02/02(土) 17:13:46.06
今日は雑魚しかいなくて張り合いがない。値渡しがオブジェクトをコピーすることだと
思ってたインドリ野郎しかいねえ。はい論破。
137デフォルトの名無しさん:2013/02/02(土) 17:22:26.33
お前らそんな元気あんなら.Netやろうぜ
C#な
138デフォルトの名無しさん:2013/02/02(土) 17:25:36.27
参照の値渡しを値渡しと思ってる奴がいるって聞いてやってきましたw
139デフォルトの名無しさん:2013/02/02(土) 17:27:43.35
>>136
他の言語なら新人さんかな?なんて思いながら見てるけどここVB6じゃん?
彼の将来がちょっと心配だわ
140デフォルトの名無しさん:2013/02/02(土) 17:29:22.83
>>138
お前もかw
141デフォルトの名無しさん:2013/02/02(土) 17:34:39.39
>>138
値渡しなんだから値渡しだ。当たりきシャリキ、ケツの穴ブリキのトートロジー。
CもJavaも値渡ししかできない。はい論破。
142デフォルトの名無しさん:2013/02/02(土) 17:35:02.72
      _,..-――-:..、    ⌒⌒
    /.:;;;;;;;;;;;;;;;;;;;;;::.\      ^^
   / .::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::..ヽ   ドナドナドーナードーナー
         __AーA    論破論破論破〜♪
      _,ィ´▼⊂ ・ ・⊃
.... .. ..  ' {●.▲ヽ(_⌒)   .. ... ........ ... .. .... ..
:::: :: .,'  i――――――i  ':, :: :::: :::: :::::::: ::::
;; ;; :,"  |______|  `:, :;;; ;;;;;; ;;; ;;;;
w ,.'    i,,i ;;;;;;;;;;;;;;;;;;;; i,,i;;:..  ゙v w゙゙w゙w゙゙w
",i    ,;'' :::::::::::::::::::::::';,::::::... ヾ、 w vw w
./    ,;;:´  :::::::::::::::::::::':;;,::::::::.. i,'、 ww w
143デフォルトの名無しさん:2013/02/02(土) 17:52:34.97
寝て起きたら100もレスが増えててワロタ
144デフォルトの名無しさん:2013/02/02(土) 17:55:15.83
まともな生活しろ
145デフォルトの名無しさん:2013/02/02(土) 18:03:10.71
>>138
さすがに馬鹿だろお前
146デフォルトの名無しさん:2013/02/02(土) 19:09:13.69
>>144
風邪で寝込んでるんだよ。はい論破
147デフォルトの名無しさん:2013/02/02(土) 19:10:23.29
>>141
じゃあVB6のユーザ定義型は値渡しか参照渡しか答えなさい。はい論破
148デフォルトの名無しさん:2013/02/02(土) 19:32:38.48
はい論破が根付いたな
149デフォルトの名無しさん:2013/02/02(土) 19:33:45.38
>>148
お前は語尾に論破が付いてないから根付いていない。はい論破
150デフォルトの名無しさん:2013/02/02(土) 19:44:38.02
みどり先生が出てた奴だな
151デフォルトの名無しさん:2013/02/02(土) 19:52:41.40
アラレちゃん?
152デフォルトの名無しさん:2013/02/02(土) 21:48:29.78
論破部屋
153デフォルトの名無しさん:2013/02/02(土) 21:53:28.04
>>147
ByValが値渡しでByRefが参照渡し。
VB6のユーザ定義型といったらTypeだろ。
クラスもユーザが定義するんだからTypeだけをユーザ定義型と
いうのもどうかと思うけど、Typeは値型。
ByValだったら値型の値渡し。
ByRefだったら値型の参照渡し。
154デフォルトの名無しさん:2013/02/02(土) 22:00:17.58
>>153
サンンプルコードかけば一発で判るんだけど、そんなこともやってないのか?
何か残念だな。
155デフォルトの名無しさん:2013/02/02(土) 22:06:41.84
理解できない自分の頭脳が残念な出来だとは思わないんだ
156デフォルトの名無しさん:2013/02/02(土) 22:07:07.22
>>154
やってないしやる意味もないしお前の頭が残念。何がわかるんだ?はい論破。
157デフォルトの名無しさん:2013/02/02(土) 22:10:13.30
ピーチ姫をいつもさらっていくやつだな
158デフォルトの名無しさん:2013/02/02(土) 22:22:18.69
>>156
話がかみ合ってない理由がよくわかったw
>>147はユーザー定義型は値渡しか参照渡しか聞いてるのに
何故かお前はByRef、ByValの解説してるし。
あさっての話しちゃまずいだろw
159デフォルトの名無しさん:2013/02/02(土) 22:23:12.23
>>157
はいクッパ
160デフォルトの名無しさん:2013/02/02(土) 22:36:35.93
>>158
俺はユーザ定義型が値渡しか参照渡しかを聞くことが間違ってるって思ってる。
だから俺がどう考えてるのかを示した。お前は正座してそれを100ぺん独唱すればいいと俺は思ってる。
ちょっと下品かもしれないけど股間の話をしてる人に対してそれは果物か野菜かと問うことは
愚の骨頂だろ。俺の股間は花鳥風月を愛でる日本の伝統文化の結晶和菓子と呼ばれてしかるべきだ。はい論破。
161デフォルトの名無しさん:2013/02/02(土) 22:36:50.38
>>158
お前の話がかみ合わないのは

値型と参照型の区別がつかない
値渡しと参照渡しの区別がついてない
型の区別と引数の渡し方の区別がついてない

かみ合わないんじゃなくて、正しくはお前が理解してないだけ
162デフォルトの名無しさん:2013/02/02(土) 22:44:52.71
>>158の人はさすがにネタだとうと思ったけど、どうも本気でわかってないのかね。
これだからVBerって馬鹿にされるんだろうな
163デフォルトの名無しさん:2013/02/02(土) 22:49:22.04
そもそもユーザー定義型がどうとか言い出したのは俺なんだが、俺じゃない奴にレスしてるな。論破してみろw
164デフォルトの名無しさん:2013/02/02(土) 22:53:27.17
>>160-161
見えない敵と必死で戦ってご苦労さんって感じなんだがw
VBのスレなんだからVBの仕様をきちんと理解してから書き込もうね。
人の話をきちんと聞かないようだから、こんなこと言っても無駄か。
165デフォルトの名無しさん:2013/02/02(土) 22:54:37.82
そもそも値型参照型と値渡し参照渡しは無関係。はい論破
166デフォルトの名無しさん:2013/02/02(土) 22:59:38.36
>>164
VBの仕様を否定した覚えはないから、お前が言ったことはたぶん無駄だね。
お前は和菓子をかじりながら俺の股間の話を思い出してればいい。はい論破。
167デフォルトの名無しさん:2013/02/02(土) 23:04:40.18
参照渡しといえばドット演算子が使われるときに参照渡しができないのがいやだよな
168デフォルトの名無しさん:2013/02/02(土) 23:07:59.00
>>153
>ByValだったら値型の値渡し。
>ByRefだったら値型の参照渡し。

0点wwwwwwwwwwwwww
ユーザー定義型をByValにすると実行時エラーになる。
169デフォルトの名無しさん:2013/02/02(土) 23:36:39.60
>>168
半分合ってるので50点。はい論破。
170デフォルトの名無しさん:2013/02/02(土) 23:47:39.16
>>169
ってかさVBのコード書いたことがないのがモロバレじゃん。
根っこの考え方が間違ってるわけだから0点wwww
171デフォルトの名無しさん:2013/02/02(土) 23:53:02.44
VBのコード書いたことあるぞ>>15をみろ

Class Closeable
  Public Sub Process()
  End Sub
  
  Public Sub Close()
  End Sub
End Class

はい論破
172デフォルトの名無しさん:2013/02/03(日) 00:18:15.76
>>171
そういうことを言ってるわけじゃない。
そんなので話をすり替えるな。
ユーザー定義型を引数で渡すコードなんて基本中の基本。
そんなことさえも分からず能書きたれるんじゃない。

因みに>>171のコードってVB6で動くとは到底思えないんだけど。
VB6のクラスを全く理解してないようだし。
バージョン間違えてましたとか、スレタイちゃんと見てなかったっていう言い訳は無しね。
173デフォルトの名無しさん:2013/02/03(日) 01:51:20.41
>>172
根っこの考え方?
ただの制約事項だろ、どんな根っこの考え方からユーザー定義型の値渡しが制限される訳?
どう考えても根っこなのは
ByValは変数のコピーが渡されると言う事
その結果として
値型ならデータそのものがコピーされ
参照型ならデータを指し示すアドレスがコピーされると言う事
参照型の参照渡しをする奴はバカだと言う事

それにな

>>153じゃないんだわ

はい、論破。
174デフォルトの名無しさん:2013/02/03(日) 02:01:20.88
>>173
> 参照型の参照渡しをする奴はバカだと言う事

呼び出し先で参照先を変更してもらうこともあるだろ。
応用力ないんか?
175デフォルトの名無しさん:2013/02/03(日) 02:08:30.98
>>174
悪いけどそれはないよ。
普通のプログラマは言語仕様出来てもそんなコードは書かない。

C#みたいに呼び出し元にも明示的にoutを付けないとだめな仕様なら場合によっては
許されるかも知れないがVB(VB.NET以降も含む)の仕様では、少なくとも俺は
そんなコードは書きたくないね
176デフォルトの名無しさん:2013/02/03(日) 02:19:53.44
>>175
VB.NETはByRefて書かないと参照渡しにならないっすよ。
なのであーこれ参照渡しだなーとわかる点はC#と変わんない。
木構造書くときなんかは参照渡し使えると便利なんだけどね。
まあ値をreturnするってのがわかりやすいよな。
177デフォルトの名無しさん:2013/02/03(日) 02:23:55.24
>>175
いや、だから「君の意見」なんてどうでもいいぞ。
178デフォルトの名無しさん:2013/02/03(日) 02:25:59.79
>>174
バカってのは
「引数の値を変えたい場合、参照渡しを使います」
研修を教わったコレをなんの疑問も持たずに使い続けてる奴

あ、でもStringは例外だかんな
179デフォルトの名無しさん:2013/02/03(日) 02:28:47.95
>>177
そんなこといったらお前の意見もどうでもいいわけで
みんなが意見を出しあってあーでもないこーでもないというのが
コミュニティというものだろうが、はい論破。
180デフォルトの名無しさん:2013/02/03(日) 02:29:11.36
>>176
>>175にも書いた通り、C#では呼び出し元にもoutを書く必要があるし、
outとVBのByRefはまったく意味が違う。
181デフォルトの名無しさん:2013/02/03(日) 02:31:18.41
>>180
ああそういうことね。意味的にはrefが同じだろうな。
182デフォルトの名無しさん:2013/02/03(日) 02:39:33.37
は?論破くんって馬鹿なの?

ByRefを使う理由は引数で戻り値を返したい場合の他に
ユーザー定義型や文字列みたいなデータがでかいものを
引数として渡すときに発生するデータのコピーのコストを
下げるためってのがあるんだよ。
183デフォルトの名無しさん:2013/02/03(日) 02:41:25.32
>>182
それは否定しないよ。否定した覚えもないよ。バカはお前だよ。はい論破だよ。
184デフォルトの名無しさん:2013/02/03(日) 02:43:30.75
は?論破くんって馬鹿なの?

>>183
誰もお前にレスしてるんじゃねーよ。勝手に枕詞にレスすんな
185デフォルトの名無しさん:2013/02/03(日) 02:46:14.28
何このやり取りw


182 名前:デフォルトの名無しさん[sage] 投稿日:2013/02/03(日) 02:39:33.37
は?論破くんって馬鹿なの?

183 名前:デフォルトの名無しさん[sage] 投稿日:2013/02/03(日) 02:41:25.32
>>182
それは否定しないよ。否定した覚えもないよ。バカはお前だよ。はい論破だよ。
186デフォルトの名無しさん:2013/02/03(日) 02:53:53.72
>>185
そういうことじゃなくて、ByRefを使う理由について述べただろ、俺はそれを否定しないってこと。はい論破。
187デフォルトの名無しさん:2013/02/03(日) 02:55:28.32
>>186
それじゃつまらない。はい論破
188デフォルトの名無しさん:2013/02/03(日) 02:56:23.61
脱線すんなよ
参照型の値渡しは値渡し
オブジェクトの状態を変更出来るがだからって参照渡しとは呼ばない
それでいいな!
189デフォルトの名無しさん:2013/02/03(日) 02:57:38.70
>>188
いいよ。はい論破。
190デフォルトの名無しさん:2013/02/03(日) 03:09:05.62
>>185
それの対象が異なっていることはわかるわけで、いかにも低学歴なやつがやりそうなことだな。
曲解の典型例であり低学歴の典型例をお前は示した。心からお悔やみ申し上げるとともに
一日も早くご逝去されますことをお祈り申し上げる。はい論破。
191デフォルトの名無しさん:2013/02/03(日) 03:34:54.41
> 一日も早くご逝去されますことをお祈り申し上げる

お前の願いは叶わなかった。はい論破w
192デフォルトの名無しさん:2013/02/03(日) 05:50:55.86
>>171のコードを書いてドヤ顔した奴逃げるな。
193デフォルトの名無しさん:2013/02/03(日) 08:36:00.12
ケロンパスレの予感
194デフォルトの名無しさん:2013/02/03(日) 09:25:33.89
>>178
> 「引数の値を変えたい場合、参照渡しを使います」
じゃなく
「引数の値を変えたくない場合、値渡しを使います」
だぜ
VB6系の仕様的にそうなってるだろ
195デフォルトの名無しさん:2013/02/03(日) 10:55:45.04
まだやってんの?
値渡し、参照渡しなんて誤解を招く表現を使わず
ByVal、ByRef って言えばいいだろアホかおまえら
196デフォルトの名無しさん:2013/02/03(日) 17:06:20.22
>>137
C#も頑張ってはいるんだけど、オブジェクト指向の言語としては
VBとの間はまだいちにちのおさがある。VBの方が洗練されている。
C#の魅力としては.NETの標準ライブラリが充実していることだが、それだけだ。
そのライブラリの品質もそれほど高いものでもない。いうなればまだVBに論破されてる状態だな。
197デフォルトの名無しさん:2013/02/03(日) 17:07:18.04
お、論破くんの釣りきたぞ。はい論破。
198デフォルトの名無しさん:2013/02/04(月) 06:34:38.60
>>196
へ、VB6ってなんちゃってオブジェクトだと思ってたんんだけど。
もしかして>>171のコードがVB6に通用するなんて思ってないよねw
199デフォルトの名無しさん:2013/02/04(月) 06:36:19.32
>>198
×オブジェクト
〇オブジェクト指向
200デフォルトの名無しさん:2013/02/04(月) 12:36:02.22
>>198
もしかしちゃったりするんだなこれが。
俺はオブジェクト指向の話をしたかったんだけど、お前が言ってるのは>>171
コードがVB6で通用するかどうかという話な。>>171は俺じゃないけど、>>171
コードを書いたのは俺だから俺はお前の質問に答えようと思う。
俺は>>171のコードがVB6で通用すると思ってる。そこには疑問をさしはさむ余地は
微塵もないし>>171のコードがVB6で動作することは俺の確信ということをはるかに
超越してこの世の真理といってもいいものだ。はい論破。
201デフォルトの名無しさん:2013/02/04(月) 12:38:50.85
今日もこいつ居るのか
202デフォルトの名無しさん:2013/02/04(月) 12:46:52.08
>>201
おいやめろ、まるでお前は俺がここにいることが迷惑だといわんばかりの
いいぐさじゃないか。心にもないことをいうな。はい論破。
203デフォルトの名無しさん:2013/02/04(月) 13:15:58.99
仕事しろよニートw
204デフォルトの名無しさん:2013/02/04(月) 13:20:59.89
>>202
まるでも何も、迷惑なんですが。
ageるし。
205デフォルトの名無しさん:2013/02/04(月) 13:41:33.76
久しぶりに見たなあ「はい論破。」
206デフォルトの名無しさん:2013/02/04(月) 14:00:07.04
       ∧   ∧
       〈 〉,,..,,〈 〉
      /(・) _ (・)\
    /三   `'   三\  >>204のバカ、もう知らない
   /  ィ― ̄ ̄ ̄―、 \
  /  /  ヘ ヘ ヘ  ヽ  ヽ
207前スレ何番か:2013/02/04(月) 14:53:41.30
>>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()から呼びたい場合、同じようなコードセットを書く必要がある。
208前スレ何番か:2013/02/04(月) 14:53:58.64
もう少し考慮を進めると、例えばあるイベントをトリガーとして、
InsertFoo()
InsertBar()
を呼ばなければならないとする。

さて、A(), B(), C()方式だと
・トランザクションの開始はどこで行うのか
・Commitはどこで行うのか
・エラーが発生した場合、Rollbackはどこで行うのか
という問題が発生する。

ちなみに俺はA(), B(), C()という構造そのものは否定しない。
データベースを使用するアプリケーションでは無い何かのドメインでは、
A(), B(), C()という構造が有効なのかもしれない。
もし、そのような場合があるのであれば、是非教えて欲しい。
209前スレ何番か:2013/02/04(月) 14:55:28.23
誤:Sub GetUsers() As ADODB.Recordset
正:Public Function GetUsers() As ADODB.Recordset
210デフォルトの名無しさん:2013/02/04(月) 14:56:20.86
仕事ないの?
211デフォルトの名無しさん:2013/02/04(月) 14:57:15.09
A(), B(), C()という構造はゴミ。
212デフォルトの名無しさん:2013/02/04(月) 14:58:04.52
データベースの処理をする部分を
関数ではなくクラスにすれば
スッキリと実装できる。
やってみな。
213デフォルトの名無しさん:2013/02/04(月) 15:04:19.73
>>211
お前と同じようなことを言った人間は何人もいた。しかし、ABC構造を
超える優れたコードを示すことができた人間は結局一人もいなかった。
そうであるがゆえに俺が示したABC構造はVBにおける例外処理の
ベストプラクティスとしてこのスレに掲載されるにいたった。
お前は悪口をいっちょまえにいえるだけの半人前以下の4半人前。はい論破。
214デフォルトの名無しさん:2013/02/04(月) 15:17:51.60
> お前と同じようなことを言った人間は何人もいた。しかし、ABC構造を
> 超える優れたコードを示すことができた人間は結局一人もいなかった。

お前が優れていると認識できないだけじゃないのか?
優れている=シンプル。

なのでクラスとInitializeとTerminateを使ってシンプルに
実装した例があったが、それをお前が優れていると認識できてないだけだろ?
215デフォルトの名無しさん:2013/02/04(月) 15:18:42.72
>>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論理を超えるものではなかった。
だからこそそのコードではなくて俺のコードがこのスレに掲載されるにいたった。はい論破。
218前スレ何番か:2013/02/04(月) 15:30:24.54
>>216
前スレでも指摘したが、最も問題なのはOpenをC()で行っていることで、そのコードでは何も解決になっていない。

コードを省略せずにFooテーブルとBarテーブルにレコードをトランザクションでInsertする処理を考えれば、
何故ダメなのかがより明確になる。
219デフォルトの名無しさん:2013/02/04(月) 15:30:26.08
>>216
おいおい、やるに事欠いて、ClassにRecordsetを保持するのかよ...馬鹿じゃないの...
220デフォルトの名無しさん:2013/02/04(月) 15:31:27.34
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を・・・
とするには、どのように書けば良いですか?
221デフォルトの名無しさん:2013/02/04(月) 15:32:15.65
  If Err.Number <> 0 Then
    Debug.Print Err.Description
  End If

これが最悪だよな。
エラーをどこに表示するかはライブラリのユーザー側が決めることで
内部で出しちゃいかんよ。ちゃんとErr.Raiseしろ
222デフォルトの名無しさん:2013/02/04(月) 15:32:47.29
>>216
それVB6のコードじゃないよ。
223デフォルトの名無しさん:2013/02/04(月) 15:33:11.66
>>215
馬鹿にするやつは前のスレに何人かいたが結局そいつらはことごとく
虫けらのごとく俺に論破されたわけで、だからこそ俺の例外処理が
ベストプラクティスであるとスレの総意に近いものが得られるにいたったわけであり、
このスレに掲載されるにいたったわけ。そ・う・い・う・こ・と・な・わ・け。はい論破。
224前スレ何番か:2013/02/04(月) 15:33:35.14
>>217
> 隠蔽してはいきれいとのたまってるやつはいたが、だったらAとBを
> 隠蔽すればいいわけで

だとするなら、そのAとBを隠蔽する場合のコードを提示してくれ。
現状では、A, B, Cで意味的にPublicにできるのは、Aだけだ。
225デフォルトの名無しさん:2013/02/04(月) 15:35:54.46
ファイルの読み書きでShift_JISでエンコードされてるテキストファイルの内容をエンコードせずにLabelやTextBoxで表示できるのは何で?
OpenステートメントやTextStream関連読んでもunicodeかASCIIの二通りの読み込み方しか書いてないのに
226デフォルトの名無しさん:2013/02/04(月) 15:36:01.59
>>218
CでOpenしてなにが悪いのよ。OpenとCloseの階層が異なっていることは
前スレで完全に論破しただろ。はい論破。
227デフォルトの名無しさん:2013/02/04(月) 15:36:21.32
>>216
頼むからVB6のコードで示してくれ。
こっちが恥ずかしくて見てられないよw
228前スレ何番か:2013/02/04(月) 15:38:14.56
>>226
「オープンして」「検索する」関数は、凝集度が低い。
異なるレイヤーの処理をひとまとめにしてしまうと、それだけで使い勝手が悪くなる。

Cでオープンするのが何故ダメのかは、
コードを省略せずにFooテーブルとBarテーブルにレコードをトランザクションでInsertする処理を考えれば、
何故ダメなのかがより明確になる。
229デフォルトの名無しさん:2013/02/04(月) 15:38:30.67
ちょっと論破君無視して
いいコーディングの話しようぜ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
231前スレ何番か:2013/02/04(月) 15:42:26.46
>>230
なぁ、そもそも「データベースのオープンに代表される、リソース管理にまつわる
エラーハンドリングとしてのA, B, Cという構造の提示」じゃなかったのか?
Cを省略して考えても意味が無い。

クライアントコードに公開する関数/メソッドと、リソースを保持する変数(例えばデータベースコネクション)、
そして返すべき戻り値を含めて具体的にコードを考えないと意味が無い。
232デフォルトの名無しさん:2013/02/04(月) 15:43:09.97
>>229
賛成


トランザクションの話をしよう。
「データベースを使った処理」と
「トランザクション」は分離していないといけない。

つまり、

データベースを使った処理開始
 トランザクション開始
 処理
 トランザクション終了
終了

この形は良くない。なぜなら、データベースを使った処理
複数個を一つのトランザクションにまとめられないから。

だから「データベースを使った処理」の中にトランザクション処理は含めるべきではない。
233デフォルトの名無しさん:2013/02/04(月) 15:43:35.21
>>228
なぜダメなのか明確になるけどお前は考えてないからそれを明確に示すことは
できないのね。じゃあダメであることは不明確なままであり、現時点で俺のABC理論が
ベストプラクティスであることに変わりはない。はい論破。
234前スレ何番か:2013/02/04(月) 15:43:51.95
>>229
そろそろ潮時なので、もうやめるよ。
やめても、いいコーディングの話はしないけど。
235デフォルトの名無しさん:2013/02/04(月) 15:45:02.45
また「データベースを使った処理」とコネクションも分離した方がいい。

なぜなら、処理自体は同じでも別のデータベースに対して行うかもしれないから。

処理とコネクションが一体化されてしまうと柔軟性がなくなってしまう。
236デフォルトの名無しさん:2013/02/04(月) 15:47:20.60
237デフォルトの名無しさん:2013/02/04(月) 15:48:45.22
あと当たり前だけど、エラーは例外を基本とすること。
戻り値をエラーに値として使ってはいけない。

これらのことを合わせると以下の様な構造になる。


Sub main
On Error Goto ErrHandler
 コネクション作成
 トランザクション開始

 データベース処理

 コミット
Exit Sub
ErrHandler:
 エラー処理(ロールバック)
End Sub
238前スレ何番か:2013/02/04(月) 15:50:29.48
>>225
VB6では内部コードとしてUnicodeを使ってるから。

『転ばぬ先の文字コード入門(第4回)』
http://itpro.nikkeibp.co.jp/members/ITPro/ITBASIC/20010620/4/
239デフォルトの名無しさん:2013/02/04(月) 15:51:12.78
データベース処理のところはクラスにした方がいい。
そうすることでいちいち引数でコネクション渡す必要はなくなるし、
それでいて複数のコネクションに対応できる。


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
うん、お前は目も当てられないほど見苦しいわ。俺が徳川八代将軍吉宗であったらいさぎよく
腹を切れと喝破して、峰打ちと称して心臓を一突きにしてやってるとこだわ。はい論破。
241220:2013/02/04(月) 15:52:54.47
更新せずに書きこんだら、なんでこんなに流れ速いんだ・・・。
炎上終ったらで良いんで、>>220をお願いします・・・。
242デフォルトの名無しさん:2013/02/04(月) 15:52:57.60
>>240は無視ですね。了解ですw
243前スレ何番か:2013/02/04(月) 15:54:33.75
>>240
これで君にするレスは最後ね。

前スレでA, B, Cという構造を見たとき、正直衝撃を受けたよ。
今まで考えたこともなかった構造だったから。

俺は、他の人と違ってばっさり切り捨てることはしない。
今後も折に触れて、ABC構造が適合するような場面があるのかないのか、個人的に考えていくよ。

じゃね。
244デフォルトの名無しさん:2013/02/04(月) 15:55:29.31
>>241
君のコードが根本的にダメなのは、コードのそのままぺたっと書こうとしている所

> Aを試みてエラーならB試みる。
> Bを試みてエラーならCを・・・
とやりたいことを書いているだろう?
そのとおり書けばいい。

A()
正常なら終了
B()
正常なら終了
C()
正常なら終了
245デフォルトの名無しさん:2013/02/04(月) 15:58:40.30
今回のはエラーかどうか知りたいだけという珍しい例。
これなら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すること。
246デフォルトの名無しさん:2013/02/04(月) 16:00:27.92
>>238
その記事だとShift_JISが主流とか書いてあるけど日本国内PCって意味だよね?諸外国でもShift_JISが標準だったの?
247デフォルトの名無しさん:2013/02/04(月) 16:05:04.56
別解として「エラーなら次の関数を実行する」という関数を作るという方法もある。

VBでは実装しにくいから関数オブジェクトにして

nantoka(new A(), new B(), new C())

A、B、Cはそれぞれrun(名前はなんでもいいけど)メソッドという
インターフェースを持ったクラス。

nantokaって関数は、エラーであれば次の引数のrunを呼ぶみたいな
コードを書けばいい。

A、B、Cそれぞれのクラスができるからちょっと面倒。
CallByName当たりを使えば一つのクラスで実装できるだろう。
248前スレ何番か:2013/02/04(月) 16:05:32.45
>>246
自分で調べろ
249デフォルトの名無しさん:2013/02/04(月) 16:07:35.26
コードを書くときは、やりたいこと(最小限のコード)を書いて
そこに肉付けしていくのではなく、

やりたいことを書いて、それだけで動くように
するにはどうするか?って考えるのがいい。

コードをシンプルに保つ秘訣だ。
250デフォルトの名無しさん:2013/02/04(月) 16:15:52.60
>>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
253220:2013/02/04(月) 17:11:29.13
>>244 >>245
なるほど、On Error Resume NextにしてErr.Numberを調べれば良いのですね。
try{
A();
}catch(...){
try{
B();
}catch(...){
C();
}
}
のように書こうとして、ずっと悩んでおりました。
ありがとうございました。
254デフォルトの名無しさん:2013/02/04(月) 17:12:09.88
こっちのほうがシンプルだった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
255デフォルトの名無しさん:2013/02/04(月) 17:21:26.08
>>253
try-catchのネストはやめたほうがいい
やりたくなったら構造が間違っていると考えたほうがいい。
ほんとうに必要な場合ってのは殆ど無いはずだ。
256デフォルトの名無しさん:2013/02/04(月) 17:25:01.80
>>254
それはやっちゃいけないパターンだ。
Resume NextだからOpenで例外が投げられたとしても
処理が継続されてBeginTransが実行されて例外が投げられて
Openの例外が消失してCommitTransが実行されてBeginTransの例外が
消失する。最低のパターン。ワーストケース。お前のおつむの程度が知れるな。はい論破。
257デフォルトの名無しさん:2013/02/04(月) 17:28:14.19
じゃあこれでいいんじゃね?

  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
258デフォルトの名無しさん:2013/02/04(月) 17:28:43.98
>>251
コネクションが閉じられたら、レコードセットが無効になるよ
259デフォルトの名無しさん:2013/02/04(月) 17:30:12.07
>>258
え、そうなの?じゃあコネクション閉じられないな。はい論破。
260デフォルトの名無しさん:2013/02/04(月) 17:30:39.13
>>258
そりゃそうだろw
261デフォルトの名無しさん:2013/02/04(月) 17:34:08.32
>>257
お前はバカすぎる。例外が発生した時点で処理が中断されるん
だからErr.NumberのチェックもConnection.Stateのチェックも
意味がなくなる。お前だけレベルが低すぎる。インターネットを
利用しちゃいけないレベル。回線切ってゴマでもすりつぶしてろ。はい論破。
262デフォルトの名無しさん:2013/02/04(月) 17:34:11.21
じゃあこれでいいのか。

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
ム板で一番活気のあるスレ
264デフォルトの名無しさん:2013/02/04(月) 17:36:37.42
>>262
さすがだ。たった3秒でそのレスをするとはな。
265デフォルトの名無しさん:2013/02/04(月) 17:38:03.82
>>262
いいわけあるか、例外が発生したときにErrHandlerに飛ばされるが、
Connection.Closeは例外が発生しなくても呼ばれなくてはいけない。
お前のようなさんしたは下手にアレンジしようとせずに俺が示したとおりに
記述するのがベストだ。なぜなら俺がベストを示したからだ。はい論破。
266前スレ何番か:2013/02/04(月) 17:38:11.91
>>255
catch内のtry-catchはいいと思うけど。
267デフォルトの名無しさん:2013/02/04(月) 17:38:43.53
ならこれでよさそうだ。

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
268前スレ何番か:2013/02/04(月) 17:39:44.83
あ、本当に必要な場合か。
catch内でリソースの解放が必要になるときに、その処理自体が例外を発生する可能性がある場合って
良くあることだと思うけど、俺だけなのか?
269デフォルトの名無しさん:2013/02/04(月) 17:40:02.39
論破くんのレスがなくなった時が
完成されたコードになるのだろう。
黙ってみてよw
270デフォルトの名無しさん:2013/02/04(月) 17:40:23.43
>>259
閉じない様に気をつけるのか...頑張ってね...
271デフォルトの名無しさん:2013/02/04(月) 17:42:25.99
>>

つまりこうしろってことですね?

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
272デフォルトの名無しさん:2013/02/04(月) 17:42:59.49
あ、間違って書き込みボタン押しちゃったw
273デフォルトの名無しさん:2013/02/04(月) 17:47:16.87
エラー処理が煩雑になってきたので
こういうのは共通クラスにまとめよう。

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
お前だけだろ。お前だけ。お・ま・え・だ・け。はい論破。
275デフォルトの名無しさん:2013/02/04(月) 17:49:34.00
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
276デフォルトの名無しさん:2013/02/04(月) 17:50:20.41
>>275
うわっ神。超シンプル。
感動した。
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
278デフォルトの名無しさん:2013/02/04(月) 17:55:13.03
>>277
コード減ってる。Newする所も書かないとダメだろう?
279デフォルトの名無しさん:2013/02/04(月) 17:56:41.98
例外処理も消えてるな。
280デフォルトの名無しさん:2013/02/04(月) 17:57:36.73
まあまて、>>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理論に逆らっているだけだったから結末は目に見えていた。
もっとこう合理的にこれがいいと示すことができる骨のあるやつはいないのか。
ここはいつからこんなにレベルの低い連中のたまり場になったんだ。はい論破。
284デフォルトの名無しさん:2013/02/04(月) 20:17:24.90
理論の通じない論破君が出ててきてからだよ
285デフォルトの名無しさん:2013/02/04(月) 20:20:16.87
無視されてるなぁw
286デフォルトの名無しさん:2013/02/04(月) 20:22:12.53
>>285
ぐぬぬ・・・となってるだけだろ。はい論破。
287デフォルトの名無しさん:2013/02/04(月) 21:47:44.16
みんな引数のプリフィックスってどうしてる?
Sub F1(ByVal inValue, ByRef outValue)
とか?
プリフィックス付けなかったらメンバー変数とか関数とかと
被ったりしてなんかいやだろ。どうしてる?
288デフォルトの名無しさん:2013/02/04(月) 21:54:57.44
趣味グラマで1人でやってるから名前付けを気にしたことはないな
289デフォルトの名無しさん:2013/02/04(月) 22:10:34.76
>>287
何でググってみないの?バカなの?死ぬの?
290デフォルトの名無しさん:2013/02/04(月) 22:22:56.39
>>287
メンバ変数にプリフィクス付けてるから
引数はあまり気にしない
小文字で始めれば関数との被りは気にしなくて良い
291デフォルトの名無しさん:2013/02/04(月) 22:31:12.58
>>290
関数と被るときあるじゃん。メンバー変数にプリフィックスつけたら外部から
呼び出すときなんか嫌じゃない?
292デフォルトの名無しさん:2013/02/04(月) 22:34:50.12
>>290
> 小文字で始めれば関数との被りは気にしなくて良い

関数の名前に名詞を使ってるの?
それとも変数に動詞を使ってるの?
293デフォルトの名無しさん:2013/02/04(月) 22:34:58.30
グローバル変数 g
モジュール内変数 m
引数 a
294デフォルトの名無しさん:2013/02/04(月) 22:54:33.83
>>291
メンバー変数なんて全てプライベートだから、外部から直接呼び出したりしない
そもそも、なんのための「Property」やねんと...
295デフォルトの名無しさん:2013/02/04(月) 23:04:28.69
>>294
外部から変更可能なものならプロパティにする意味ないじゃん。
プロパティにしてもプリフィックスつけなきゃ被ることになるじゃん。
296デフォルトの名無しさん:2013/02/04(月) 23:07:12.60
プロパティは大文字で始めるから
被りは気にしなくて良い
297デフォルトの名無しさん:2013/02/04(月) 23:09:49.46
動詞が関数
名詞が変数
なのでかぶることはない。

それにかぶったとしても
たいして問題にならない。

関数か変数かなんて大した問題ではない。
298デフォルトの名無しさん:2013/02/04(月) 23:11:36.88
動詞形と名詞形が同じスペルの英語が困るのか
299デフォルトの名無しさん:2013/02/04(月) 23:13:35.62
>>296
えーそれありえなーい。コンパイラは大文字小文字を区別しないし、
If Value < value Then
比較するときこんなことになるよ。大文字小文字で見分けてたら見にくくない?
ミスを誘発するために地雷埋めてるようなもんじゃん。それって嫌じゃない?
300デフォルトの名無しさん:2013/02/04(月) 23:14:28.91
そんな単純な名前付けして大丈夫か?

大丈夫だ、問題ない。
301デフォルトの名無しさん:2013/02/04(月) 23:15:10.84
神は言っている、ここでバグるようなプログラムじゃないと
302デフォルトの名無しさん:2013/02/04(月) 23:21:00.19
>>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
304デフォルトの名無しさん:2013/02/04(月) 23:25:57.67
VBは糞言語だから仕方が無い
305デフォルトの名無しさん:2013/02/04(月) 23:31:12.50
>>303
引数にもっと適切な名前をつけましょう。
306デフォルトの名無しさん:2013/02/04(月) 23:31:58.81
>>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
レスどれよ?まともなこと書いてないんだろ。
310デフォルトの名無しさん:2013/02/04(月) 23:38:54.53
>>308
プリフィックスなんか付けない。
適切な変数名をつけていればかぶらない。
311デフォルトの名無しさん:2013/02/04(月) 23:42:18.63
>>308
Meを付けなければならない時は付けるし、付ける必要が無いときは付けない
ただ、それだけ

そもそも、メソッドにPublicなSubが必要なのか?
Propertyに押し込めるんじゃないのか?
312デフォルトの名無しさん:2013/02/04(月) 23:42:39.59
>>310
じゃあたとえば二分木のNodeクラスのValueに適切な
引数名てどういうの?
313デフォルトの名無しさん:2013/02/04(月) 23:57:43.23
node_valueでいいだろw
314デフォルトの名無しさん:2013/02/04(月) 23:59:15.57
>>313
それプリフィックスじゃん。
315デフォルトの名無しさん:2013/02/05(火) 00:00:06.54
>>314
は? 単語を二つくっつけただけだろ
316デフォルトの名無しさん:2013/02/05(火) 00:01:53.10
>>315
クラス名を変数の前に付けるんでしょ。単語を二つくっつけることと
プリフィックスは同時に成立することだよ。クラス名を付けるってことね。
317デフォルトの名無しさん:2013/02/05(火) 00:29:28.80
プロパティ Value の実体を表す変数名は
Value そのものか、あるいはメンバである事を表すプリフィクスを付けただけのものが
最も分かりやすい
それ以外の変数名は逆にややこしい

クラス名はプリフィクスとしてはあり得ない部類
クラスが違えばプリフィクスも変わるとか保守し辛い
318デフォルトの名無しさん:2013/02/05(火) 00:30:50.70
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をアンロードできないような事をしてしまったのだろうか?
320デフォルトの名無しさん:2013/02/05(火) 09:49:52.51
VB6ではNothingの代入は不要だって論破自慢してた人がいたが、実際には明らかに挙動が異なる局面があるじゃんw
321デフォルトの名無しさん:2013/02/05(火) 10:23:50.49
>>320
Terminateイベントを早期に発生させる目的でオブジェクトの使用終了時にNothingを代入するプログラマーは多いですよ?
322デフォルトの名無しさん:2013/02/05(火) 11:29:48.67
>>316
> クラス名を変数の前に付けるんでしょ。単語を二つくっつけることと
クラス名を全部につけたら結局一緒だろw
そもそもnodeという単語であってNodeとくクラス名じゃないし
お前馬鹿なんじゃないの?
323デフォルトの名無しさん:2013/02/05(火) 11:54:36.24
>>319
> まるでフォームBがアンロードされていないかのようにふるまう。

アンロードされた=メモリ上から破棄された
というのが勘違い
324デフォルトの名無しさん:2013/02/05(火) 12:21:21.17
>>323
ガーページコレクションなんたらかんたらでNothingせずともメモリー上から破棄されるって言い切ってたような気が汁

素人論破集団怖すぎw
325デフォルトの名無しさん:2013/02/05(火) 12:42:28.78
VB6じゃFormの扱いは特別じゃなかったっけか
その他オブジェクトは、Nothingの代入はいらないよ
326デフォルトの名無しさん:2013/02/05(火) 12:46:21.94
>>324
間違いではない。スコープから抜けて参照がどこからもなくなれば、とメモリから破壊される。

だがフォームの場合は「参照がどこからもなくなれば」という条件が
ややこしいのだ。Unloadは参照がどこからの亡くなるための条件の一つだが
それだけではない。
327デフォルトの名無しさん:2013/02/05(火) 12:50:29.88
>>319
実際のコードを見ないとなんとも言えない。
そのフォームAとかBというのがどういうフォーム名で
どのような変数名で呼び出して、どのような使い方をしているのか
書かないとわからない。

一般的にフォームのアンロードは、フォームをなくすための条件の一つであるが
アンロードされているだけで、フォームは消えない。
そもそもアンロードは、フォームを消す命令ではないからだ。
328デフォルトの名無しさん:2013/02/05(火) 12:51:48.87
>>319
単にStatic変数がメモリ上に保持されているというだけ。
フォームそのものはアンロードされている。
329デフォルトの名無しさん:2013/02/05(火) 12:52:02.39
>>320
> VB6ではNothingの代入は不要だって論破自慢してた人がいたが、実際には明らかに挙動が異なる局面があるじゃんw

それはインスタンスを削除するのにNothingは不要ってことでしょ?

代入してもしなくても挙動が全く同じなんて誰も言ってないですよ。
330デフォルトの名無しさん:2013/02/05(火) 12:54:23.29
>>324
> ガーページコレクションなんたらかんたらでNothingせずともメモリー上から破棄されるって言い切ってたような気が汁

うん、そうだね。

今は、アンロードの話をしている。
アンロードとNothingは別のものだ。Unload、Nothing 単語違うだろ?
331デフォルトの名無しさん:2013/02/05(火) 12:55:48.98
> 通常、プロシージャ内のローカル変数は、プロシージャが停止した直後に削除されます。
> 静的変数はプロシージャの終了後も存在し続け、最後に設定された値を保持します。
> 次回、コードからそのプロシージャを呼び出したとき、変数は初期化し直されることなく、
> 最後に割り当てられた値をそのまま保持します。
332デフォルトの名無しさん:2013/02/05(火) 12:57:08.55
通常、プロシージャ内のローカル変数は、プロシージャが停止した直後に削除されます。
ですがフォームはグローバル変数になっていることがあります。
ローカル変数ではないのでこの二つをごっちゃにしないようにしましょう。
333デフォルトの名無しさん:2013/02/05(火) 12:58:33.55
クラスのstatic変数は
当然クラスがなくなったら
初期化されるよ。
常識だけどね。
334デフォルトの名無しさん:2013/02/05(火) 13:02:06.19
12年以上前に議論済み

フォームアンロードの変数の値保持について 2000-09-18(月) 19:28
http://www.gizcollabo.jp/vbtomo/log/archive/vbqanda_30162_0.html
335デフォルトの名無しさん:2013/02/05(火) 13:02:43.41
>>330
それ違うだろ?

つまりNothingの代入が不要だと言い切って論破したのだから
Nothing代入以外でメモリーからフォームを消してみせる必要があるんじゃないの?
336デフォルトの名無しさん:2013/02/05(火) 13:05:18.16
>>335
> Nothing代入以外でメモリーからフォームを消してみせる

はいUnloadすることでメモリからフォームを消してみせましたよ。
337デフォルトの名無しさん:2013/02/05(火) 13:12:11.77
>>334
Forms コレクションから削除されていながら同名のフォーム指定で変数ごと蘇るとか
なんか悍ましい仕様だなVB6は
338デフォルトの名無しさん:2013/02/05(火) 13:12:15.72
>>335
参照カウンタ方式でメモリ上から破棄されるものに関しては、Nothing代入不要
Formはグローバル変数にアンロード後も保持されるので、本当に破棄したいならNothingの代入が必要
はい論破
339デフォルトの名無しさん:2013/02/05(火) 13:13:07.88
>はいUnloadすることでメモリからフォームを消してみせましたよ。

消えるのはコレクションの登録でメモリーからは消えないんだとよ。VB初心者さんw
340デフォルトの名無しさん:2013/02/05(火) 13:14:20.48
>>338
その「グローバル変数」って何の事を指して言っているのやら・・・。
341デフォルトの名無しさん:2013/02/05(火) 13:14:26.00
>>337
> 同名のフォーム指定で変数ごと蘇るとか

いや今さらそんなこと言われましても。

フォームにかぎらず、

Dim obj As new Class1

って宣言していれば、
objがNothingの時に自動的にnewされますよ。
342デフォルトの名無しさん:2013/02/05(火) 13:15:16.53
>>339
いや、だからコレクションの登録から消えることで
どこからも参照されなくなった時点で
自動的に消えるんだよ。

理解できるよね?
343デフォルトの名無しさん:2013/02/05(火) 13:15:52.77
>>342
バカラだか理解出来ませねん。
屁理屈ですか?それ屁理屈ですかwww
344デフォルトの名無しさん:2013/02/05(火) 13:16:55.47
本当にNothingを代入しなければ絶対に消えないというのなら言語仕様としては合理なんだけど
Unloadしてからしばらくたつとメモリーからきれいさっぱり消えている事がある。この曖昧さが問題。
ある一定時間変数にアクセスが無いと用済みと勝手に判断して自浄するのだろうかねぇ?
345デフォルトの名無しさん:2013/02/05(火) 13:18:15.38
>>344
曖昧なのは、お前がちゃんと理解してないからだよ。
全て説明してやるから、お前が理解できない
(ちゃんと動く)コードを書いてみ。
346デフォルトの名無しさん:2013/02/05(火) 13:19:05.34
>>341
それって前に使ったのと同じオブジェクトがNewされるわけじゃないだろ?
Formは同じもんが使われるところが悍ましいって事だろうに?
国語力大丈夫か?はい論破。
347デフォルトの名無しさん:2013/02/05(火) 13:20:50.75
>>342
>どこからも参照されなくなった時点で
>自動的に消えるんだよ。

アンロード後にどこからも参照されてないフォームが消えない理由は?
348デフォルトの名無しさん:2013/02/05(火) 13:22:43.26
論破できない理由を「フォームは特別だから」と言って誤魔化すのはちょっちねーwwww
349デフォルトの名無しさん:2013/02/05(火) 13:32:19.44
>>347
どこからも参照されないという証拠は?

お前がどこからも参照されていないと勘違いしているだけで
俺なら、どこから参照しているか言えるだろうね。
350デフォルトの名無しさん:2013/02/05(火) 13:33:54.29
>>346
> それって前に使ったのと同じオブジェクトがNewされるわけじゃないだろ?

フォームも同じですよ?
前に使っていたのと同じオブジェクトがnewされることはありません。
その証拠に変数が初期化されます。
351デフォルトの名無しさん:2013/02/05(火) 13:35:49.75
>>346ってまだUnloadとNothingが
別の単語だって気づいてないよ。

どうせUnloadしたのに同じオブジェクトが使われる!
Unload=NothingだからNothingしたはずなのに
同じオブジェクトが使われるおかしい!とか思ってるんだぜ。
352デフォルトの名無しさん:2013/02/05(火) 14:18:57.10
お前ら、論破くんに釣られすぎ
353デフォルトの名無しさん:2013/02/05(火) 15:25:17.43
>>350
>その証拠に変数が初期化されます。

初期化されないというのが今の論点だろうに?
アタマ大丈夫か?
354デフォルトの名無しさん:2013/02/05(火) 15:26:18.66
>>351
Unloadされても同じオブジェクトを使用されるが、Nothingで違うオブジェクトが使用されたって言ってるんじゃないのけ?
355デフォルトの名無しさん:2013/02/05(火) 15:27:14.91
良くわかってないのに答えようとするのが敗因。はい論破。
356デフォルトの名無しさん:2013/02/05(火) 15:32:45.82
つまりNothing代入はFormのプロシージャ―内の変数を初期化する唯一の手段。
Nothing代入はこのように必要不可欠な局面もあるということを再認識せよ。
これが結論でいいんじゃね?
357デフォルトの名無しさん:2013/02/05(火) 15:33:38.38
あ、変数って言ってもStatic変数ね。あとフォーム内に定義されたグローバル変数も然り。
358デフォルトの名無しさん:2013/02/05(火) 16:15:45.39
>>287
ByValは関数で定義されるものだからparameter、
ByRefは変数のエイリアスだからargumentと区別するのはどうだろうか。
ByVal paramValue, ByRef argValue
たとえば羊の皮を被った狼さんがいたとしてその事実を知っているにもかかわらず
その動物を羊さんとして扱ってしまったらパックリやられちゃうだろ。たとえ羊さんの皮を
被っていようと狼さんであると認識できる場合にはそれを狼さんとして扱うべきだ。
ウルフゴート理論と名づけよう。
359デフォルトの名無しさん:2013/02/05(火) 16:16:19.39
比喩の下手な人間
360デフォルトの名無しさん:2013/02/05(火) 16:23:45.46
For N = 1 To 100
Form1.Show
Set Form1 = Nothing
Next
361デフォルトの名無しさん:2013/02/05(火) 16:48:15.77
>>356
なんでこういうアホな俺解釈を垂れ流すのかね
362デフォルトの名無しさん:2013/02/05(火) 17:03:49.12
Nothingは参照カウントを一つ減らすだけ
363デフォルトの名無しさん:2013/02/05(火) 17:38:18.86
>>362
それだけでもない
364デフォルトの名無しさん:2013/02/05(火) 17:39:07.63
Formはどこからも参照されてなくてもNthingなくしては自己消滅できなかった。
365デフォルトの名無しさん:2013/02/05(火) 17:40:03.93
だな
366デフォルトの名無しさん:2013/02/05(火) 17:40:56.78
>>364
グローバルに存在するということだけで、参照カウント+1
367デフォルトの名無しさん:2013/02/05(火) 17:46:31.20
>>366
それが隠れたグローバルって奴かな?フォームには次の4つの状態がある。

 [1] 作成されているが、ロードされていない。
 [2] ロードされているが、表示されていない。
 [3] 表示されている。
 [4] メモリ上に作成されていない。(解放状態)

例えばロード前にグローバル変数にアクセスされた[1] の段階のフォームは
すでに参照カウントが1ということかな?
368デフォルトの名無しさん:2013/02/05(火) 17:48:39.80
その通り。ロードされるかされないかはNothingに関係しない。
逆に言うとUnloadしてもNothingと何の関係もない。
これが模範解答かな?
369デフォルトの名無しさん:2013/02/05(火) 17:52:44.35
うむ
370デフォルトの名無しさん:2013/02/05(火) 18:08:53.15
インスタンス化って単語知らないのかしら
371デフォルトの名無しさん:2013/02/05(火) 18:15:30.90
>>367
確かにフォームの挙動はわかりにくいよな。

Loadしなくてもフォームのグローバル変数にアクセスすればFormsコレクションに登録される。
しかしこの時ロードはされない。つまり[1]の状態

Loadしなくてもフォームのプロパティやコントロールにアクセスすれば自動的にロードされる。
つまり[2]の状態。

一度もShowしなくてもどちらもメモリー上には存在する。前者の場合はNothingの代入で
参照カウントがデクリメントされ、結果メモリーから消える。
後者の場合はUnloadをして[1]の状態となり、Nothingの代入で参照カウントがデクリメントされ、
結果メモリーから消える。
372デフォルトの名無しさん:2013/02/05(火) 18:16:43.16
神経質にメモリから消す必要のない言語、それがVB6
373デフォルトの名無しさん:2013/02/05(火) 18:17:01.23
>>370
単語を知ってる云々ではなく、インスタンス化がわかりにくいのがフォームだって事でしょ
おしゃべりさん
374デフォルトの名無しさん:2013/02/05(火) 18:19:34.51
>>372
しかし、インスタンス化したフォームは神経質にメモリから消さないと
二度目に開いたフォームのActivateイベント内でStatic変数がTrueになっていて
一回しか行われない様に意図した初期化ルーティンが走らないとかいうバグにつながるから要注意だな
375デフォルトの名無しさん:2013/02/05(火) 18:23:45.56
Formのローカルメソッド内のstatic変数に頼った設計なんかするのが糞
376デフォルトの名無しさん:2013/02/05(火) 18:25:05.56
>>374
Formを閉じたら初期化されて欲しい変数なら、Staticにする必要無いじゃん
アホす
377デフォルトの名無しさん:2013/02/05(火) 18:28:27.03
>>376
Activateイベントへの再入を禁止するのが目的だろ?
なるべくグローバル変数を使わないようにする指針は間違ってないだろう。
378デフォルトの名無しさん:2013/02/05(火) 18:29:29.58
>>376
アホ返しは糞の味w
379デフォルトの名無しさん:2013/02/05(火) 18:30:17.32
>>377
一回しか実行したくないんならForm_Loadに書け
380デフォルトの名無しさん:2013/02/05(火) 18:32:08.49
Form.tagとか使えばいいんじゃ
381デフォルトの名無しさん:2013/02/05(火) 18:32:11.18
>>379
Form_Loadに書けない事情があったんだろうよ?
Activate使うときはそんな時くらいだろ。
そんなことも推測できないとか
アホ通り越して経験浅杉だろ?
382デフォルトの名無しさん:2013/02/05(火) 18:32:59.67
Activateイベントへの再入を禁止とか、糞設計もいいとこ
383デフォルトの名無しさん:2013/02/05(火) 18:33:09.44
>>380
それこそ何の意味もないような気が汁www
384デフォルトの名無しさん:2013/02/05(火) 18:34:31.33
>>382
そんなこともないだろ。再入はどうか知らんが上級者のコードでもActivateを使ったコードはよく見るよ。
385デフォルトの名無しさん:2013/02/05(火) 19:26:14.82
>>384
Activateに再入禁止処理書くような奴は上級者じゃねえよ
386デフォルトの名無しさん:2013/02/05(火) 19:32:06.27
俺の思い込みによるとだな
ロードってOS上にウィンドウを作成してFormインスタンスとリンクさせる事だろ?
VBは初心者向けと言う事で必要な時に自動でやってくれる
ただそれだけ
全然良く分からなくないよ
387デフォルトの名無しさん:2013/02/05(火) 19:44:44.24
Formで既定のインスタンス使ってるとロクな事がない。
なぜなら、それをする奴は、たいてい既定のインスタンスが
何かをわかってないからだ。
388デフォルトの名無しさん:2013/02/05(火) 19:59:59.48
>>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だとないじゃん。
インスタンスをグローバルに使いたいときグローバル変数
を用意するしかないじゃん。構造体とか使ってまとめてる?
どうやってる?どうやんの?よくわかんない。
392デフォルトの名無しさん:2013/02/05(火) 20:17:52.78
ActiveXにしてしまえ
393デフォルトの名無しさん:2013/02/05(火) 20:17:58.89
>>334
ファンロードに見えたしにたい
394デフォルトの名無しさん:2013/02/05(火) 20:30:49.02
>>391
日本語で(ry
エスパーすると標準モジュールで済むのでは?
395デフォルトの名無しさん:2013/02/05(火) 20:36:56.34
ム板で最もホットなスレ
396デフォルトの名無しさん:2013/02/05(火) 20:38:48.58
>>394
日本語だよ。エスパー能力にたよるんじゃなくて言語能力を駆使してちゃんと読んで。
ちゃんと書いたんだから。ちゃんと読んで。ちゃんと書いたんだから。
397デフォルトの名無しさん:2013/02/05(火) 20:40:11.65
管理できないからグローバル変数なのに、無茶な事言うよなぁ
398デフォルトの名無しさん:2013/02/05(火) 20:43:09.57
>>391
先頭にPrivateと書いて関数を宣言すれば静的関数ですが何か?
399デフォルトの名無しさん:2013/02/05(火) 20:43:41.12
>>397
無茶じゃないよ。管理できるよ。どうやってんの?教えてよ。
400デフォルトの名無しさん:2013/02/05(火) 20:52:46.11
管理できると言い切ってどうやるのと質問する厨房w
401デフォルトの名無しさん:2013/02/05(火) 20:56:12.29
>>398
わけわかんないこといわないで、イカるよ?
        /.⌒ヽ
       /    .\   
     ../      ヽ. \  
     (./       ヽ. ) 
     /        l" 
    .ノ          l 
   /  \,, ,,/    |
   | (●) (●)|||  |
   |  / ̄⌒ ̄ヽ U.|   
   |  | .l~ ̄~ヽ |   |
   |U ヽ  ̄~ ̄ ノ   |
   |    ̄ ̄ ̄    |
402デフォルトの名無しさん:2013/02/05(火) 20:57:29.10
C言語なら静的関数はスコープの違いだけだからなw
まあイカるなこのイカ臭い青二才がよwww
403デフォルトの名無しさん:2013/02/05(火) 20:58:33.72
            ▅▅▅▅▅▅▅▅▅▅▅
          ▄▇▓::▃▃     ▃▃ ▓▇▄
        ▄█▓░◤   ◥   ◤   ◥ ░▓▇▄
       ▄█▓░ ◢   ◣     ◢    ◣░▓▇▄
     ▄█▓░ ▐  █▋▐    ▐ █▋ ▐ ░▓▇▄
    ▄█▓░:    ◥    ◤      ◥    ◤  ░▓▇▄   なぜか無性にコピペしたくなる
   █▓░▒ ◤▀▀◥ ▃       ▃  ◤▀▀◥▒:░▓█
   █▓░ ::::▒░░::▊     ▲    ▐ :::░░▒::::░▓█   なのに初心者にはコピペできない
   █▓░::      ◥▃▃▅██▅▃▃◤        ░▓█
   ▀█▓░        ███████       ░▓█▀
     ▀█▓░     ▐▓▓▓▓▓▓▌    ░▓█▀
      ▀█▓░     ▀▀▀▀▀▀     ░▓█▀
404デフォルトの名無しさん:2013/02/05(火) 21:28:37.47
            ▅▅▅▅▅▅▅▅▅▅▅
          ▄▇▓::▃▃     ▃▃ ▓▇▄
        ▄█▓░◤   ◥   ◤   ◥ ░▓▇▄
       ▄█▓░ ◢   ◣     ◢    ◣░▓▇▄
     ▄█▓░ ▐  █▋▐    ▐ █▋ ▐ ░▓▇▄
    ▄█▓░:    ◥    ◤      ◥    ◤  ░▓▇▄   なぜか無性にコピペしたくなる
   █▓░▒ ◤▀▀◥ ▃       ▃  ◤▀▀◥▒:░▓█
   █▓░ ::::▒░░::▊     ▲    ▐ :::░░▒::::░▓█   なのに初心者にはコピペできない
   █▓░::      ◥▃▃▅██▅▃▃◤        ░▓█
   ▀█▓░        ███████       ░▓█▀
     ▀█▓░     ▐▓▓▓▓▓▓▌    ░▓█▀
      ▀█▓░     ▀▀▀▀▀▀     ░▓█▀

本当だ!
405デフォルトの名無しさん:2013/02/05(火) 21:29:32.00
あれ? できるじゃん
406デフォルトの名無しさん:2013/02/05(火) 21:39:05.55
&hearts;
407デフォルトの名無しさん:2013/02/05(火) 22:27:21.54
>>396
えっとね、俺は>>394さんじゃないんだけど、
>>394さんの言いたい事はだいたいわかる。


あなたのいう
>インスタンスをグローバルに使いたいとき

って、まあ、オブジェクト指向的に言えば、シングルトンを用意すると
思いますねん。VB6で、お手軽にシングルトン実装したいなら、
標準モジュールという形になりますねん。

まあ俺は、標準モジュールと言えども、そこのフィールドに無制限に
アクセスできないようにPrivateにして、アクセッサ用意するけどね。
408デフォルトの名無しさん:2013/02/05(火) 22:28:57.24
なんつーか、静的 の部分で定義が曖昧なままスレが進んでそうだな。
409デフォルトの名無しさん:2013/02/05(火) 22:30:52.38
>>408
つまり
「うふ〜ん、あは〜ん」
って事だな
410デフォルトの名無しさん:2013/02/05(火) 22:57:57.43
>>407
それはわかる。>>391を読んでそういう答えをしたのなら余裕で納得するけど、
日本語として意味がわからないけどエスパーでこうやればいいなんてそんなものは認めない。
俺はたとえ頑固じじいとののしられさげすまれようともそんなことは絶対に認めない。
>>394は俺が書いた文章をちゃんと読んで答えるべきだ。たとえば手塩にかけて育てた可愛い可愛い
娘がちゃらちゃらした彼氏を家に連れてきて、そのちゃら夫から
「娘さんと結婚する意味がよくわからないんだけど娘さんを僕にください」といわれて
もあげないだろ。あげないと即答するだろ。たとえそのちゃら夫が一流企業に勤めていて
イケメンだったとしてもあげないだろ。そのちゃら夫にほれてる娘をすこし可哀想に思う
気持ちはあれど、娘の幸せを思って心を鬼にしてそのちゃら夫を拒否するのが親としての責務だと心得るだろ。
ちゃら夫に我が最愛の娘をあげるわけにはいかないだろ。俺が言ってることわかるだろ。はい論破。
411デフォルトの名無しさん:2013/02/05(火) 23:11:13.88
>>408
静的関数といってんだからオブジェクトを作らずにアクセスすることができる
関数に決まってんだろ。お前と>>398のイカ野郎の頭にはぼかしでも
かけられてんのか?お前らの脳みそはわいせつ物みたいなものなのか?はい論破。
412デフォルトの名無しさん:2013/02/05(火) 23:26:35.28
ちなみに俺はVB6でも、標準モジュール上に

publicにアクセスできるグローバル変数は使わない。

グローバル「 定数 」なら使う。
413デフォルトの名無しさん:2013/02/05(火) 23:27:59.54
>>411
決まってるのはお前の頭の世界というローカルなスコープの範囲だけであって
静的関数の解釈は処理系で全く異なるものになる。
井の中の蛙は去れ。はい論破。
414デフォルトの名無しさん:2013/02/05(火) 23:29:07.19
俺は趣味グラマで1人で開発してっから
415デフォルトの名無しさん:2013/02/05(火) 23:41:15.48
なんか桃白白っぽい
416デフォルトの名無しさん:2013/02/05(火) 23:41:37.85
>>413
常識で考えればわかるだろ、VBのスレなんだから
VBで考えればおのずと明らかになるだろ。いろんな処理系を語れと
いうスレならまだしもここはVBのスレなんだからVBの処理で
考えるのが常識だろ。カレーの隠し味に何入れる?って話をしてるとき
あたしはアップルかなという話をしてるときに、「アップルってiPhone入れんの?
アップルって言ってもいろいろあるんだから」といってるようなものだろ。
最初にアップルといった人はけして井戸の中のカエルさんじゃないし、
アップルのiPhoneの話をした人はけして高みから広い視野で物事をみることが
できる鳥さんじゃない。ただのマカー。はい論破。
417デフォルトの名無しさん:2013/02/05(火) 23:45:40.81
>>412
変数は書き換えられるからね。うん、定数にできないのはプロパティでとかね。そういうことね。はい論破。
418デフォルトの名無しさん:2013/02/06(水) 00:37:35.66
しかし、今時VB6なんて使ってる人間はかなりのオッサンのはずだと思うけど、
「はい論破」だか何だかしらんけど幼稚臭い奴が多いな。
419デフォルトの名無しさん:2013/02/06(水) 00:39:13.18
>>416
VB6で静的関数っつったらStaticなSubかFunctionのことなんだが
一般的な静的関数はインスタンスメソッドじゃないクラスメソッドのこと
そういう意味でもVB6ではStaticが該当する
ただし、VB6では(俺の記憶では)インスタンスなしでクラスメソッド呼べないけどな
420デフォルトの名無しさん:2013/02/06(水) 00:52:49.98
>>419
そもそもVB6に静的なプロシージャなんて概念はありません。
.NETにはあるが、メソッドが静的であることを表すキーワードはSharedです。
421デフォルトの名無しさん:2013/02/06(水) 00:58:52.34
>>419
お前は俺がStaticの話をしてると思ってレスしてるわけね。よくわかった。解決した。どうもありがと。はい論破。
422デフォルトの名無しさん:2013/02/06(水) 02:01:33.75
>>420
じゃあVBでStaticなSubは何と言う概念なんだ?
423デフォルトの名無しさん:2013/02/06(水) 07:21:20.62
>>415
そんな臭いがプンプンw
424デフォルトの名無しさん:2013/02/06(水) 07:40:07.78
>>412
グローバルな定数にするくらいなら、その定数の値をファイルに書き出すなぁ。
結局グローバル変数使うことになるけど。
定数なんて後で変更したくなることもあるだろうし。

その場合、グローバル変数は初期処理で読み込む以外は参照のみというようにする。
それ以外のグルーバル変数は極力使わないようにするのはもちろんだけど。
425デフォルトの名無しさん:2013/02/06(水) 08:51:22.91
>VBでStaticなSub

こいつ、仮面の忍者赤影だな?
426デフォルトの名無しさん:2013/02/06(水) 11:17:57.64
また、論破君の爆釣り成功だな。
お前ら、なんだかんだ言って論破君が好きなんだな。
427デフォルトの名無しさん:2013/02/06(水) 12:18:05.53
>>426
そうやってなんでもかんでも釣りと認定してあたかも自分は全部わかってます
みたいな態度とるのってカッコ悪いよ。論破されたときにどうせ釣りだとわかって
たしとブロークンハートをリカバリーしようとしているのが見え見えでカッコ悪いよ。
露出の多い服着てカッコいいアピールしようとしたけど陰部まで透けていて
公然わいせつ罪で御用となるようなもんだよ。はたからみればただの露出狂でしかないよ。
露出狂も自分がカッコいいと思ってる一種の陶酔状態にあるのかもしれないな。
俺の臨床心理士としての直感がそう告げている。はい論破。
428デフォルトの名無しさん:2013/02/06(水) 12:47:07.19
こいつちょっと精神的に問題ありなんじゃね?
429デフォルトの名無しさん:2013/02/06(水) 14:19:41.27
>>428
そんなこと一昨日から分かっていたはずでは?
それを承知で構っていたのでは?
430デフォルトの名無しさん:2013/02/06(水) 14:34:22.19
そんなことよりVBの話をしようじゃないか。
VBのString型って速すぎじゃね。C#やJavaにはString型の
遅さを補うためにStringBuilderクラスが用意されているがVBには
そういうのがない。VBのString型がチートすぎるのがその理由
なんじゃないかと思うんだけどどう思う?大量の文字列を扱うために
専用のクラスとか別に作らないだろ?みんなその辺どう?
431デフォルトの名無しさん:2013/02/06(水) 14:54:25.13
>>430
midがあるから必要無い。
この話題終了。
432デフォルトの名無しさん:2013/02/06(水) 14:59:47.82
ただのかまってちゃん化
433デフォルトの名無しさん:2013/02/06(水) 15:10:07.04
>>431
いやいやそれはおかしいでしょ。それをいったらJavaやC#の
StringクラスにはSubstringがあるからStringBuilderクラスは
必要ないということになるわけだけれどもそれはStringBuilderクラスが
存在することと矛盾するだろ。だからMidがあるから文字列を扱う
クラスが必要がないというお前はまともにものを考えてないかぼちゃ頭の万年ハロウィン野郎。はい論破。
434デフォルトの名無しさん:2013/02/06(水) 15:27:57.16
そもそもVBのStringが速いというのがまちがい

文字列結合って遅いよね

midを使えば速い

終了
435デフォルトの名無しさん:2013/02/06(水) 15:31:32.39
>>434
Midって文字列を結合できるんだーへー。はい論破。
436デフォルトの名無しさん:2013/02/06(水) 15:36:50.32
そもそもVBのStringが速いというのがまちがい

文字列結合って遅いよね

midを使えば速い

Midって文字列を結合できるんだーへー

ググレカス

終了
437デフォルトの名無しさん:2013/02/06(水) 15:41:24.35
>>436
だからお前の考えだとMidで文字列を結合できるんだろ、へー、はい論破。
438デフォルトの名無しさん:2013/02/06(水) 15:53:33.05
>>437
できるからググレカス
439デフォルトの名無しさん:2013/02/06(水) 16:06:07.40
midステートメントのことだね。は〜いケ論破
http://talent.c.yimg.jp/images/talent/201301/large/w93/w93-0493-130116.jpg
440デフォルトの名無しさん:2013/02/06(水) 16:45:28.96
>>438
そんなものはとっくにググったよ。>>434を読んで即座にググった。
そしてすぐにMidで結合する方法を見つけた、秒殺だった。それを見たときに
Midで結合するなんてすげーイカしてんじゃん、なんてこったい万年ハロウィン野郎は
俺のほうじゃねえかという思いが俺の脳内を瞬時に駆け巡ったわけ。
へえという感動詞は感心することをあらわすだろ、俺のへーはそういう万感の思いが
こもったへーだということをお前は俺の立場に立って理解するべきだし、
へーの重みを知ったお前は俺にもっと優しくしろ。はい論破。
441デフォルトの名無しさん:2013/02/06(水) 17:02:36.03
ちょっと怖い
442デフォルトの名無しさん:2013/02/06(水) 17:12:09.82
んでMidで結合したら早いのか?
VBでも文字列の結合は遅いからなるべくやるなって言われてた処理だぞ
それでも必要な場合があるからStringBuilderとか作ったわけで
443デフォルトの名無しさん:2013/02/06(水) 17:15:12.13
>>442
ググレカス
444デフォルトの名無しさん:2013/02/06(水) 17:18:00.11
>>442
文字列を高速に連結する(Midステートメント):Excel VBA|即効テクニック|Excel VBAを学ぶならmoug
http://www.moug.net/tech/exvba/0140045.html

Midはえーわ。ドン引きするようなグラフになってるわ。
445デフォルトの名無しさん:2013/02/06(水) 17:25:33.52
また10年前の話題か
446デフォルトの名無しさん:2013/02/06(水) 17:32:00.28
>>445
10年前にこんな高度な議論が行われていたわけがないだろ。
現代に生きる俺が話題を提供したわけであり、現代の議論だ。はい論破。
447デフォルトの名無しさん:2013/02/06(水) 17:59:28.28
MIDが早いんじゃなくて、文字列の連結回数を少なくしてるだけじゃないか
途中で連結してる文字列使いたいときに等価じゃない

MIDがやってるのは連結(=拡張)じゃなくて書き換えてるだけ
しかし早いな。MID直接メモリの文字列書き換えてるのか

MIDの処理結果で文字列拡張することになったらパフォーマンスでないだろ、これ
448デフォルトの名無しさん:2013/02/06(水) 18:03:44.36
>>447
お前は何を言ってるんだ?
449デフォルトの名無しさん:2013/02/06(水) 18:13:01.80
>>448
MIDで連結してない。連結回数を少なくしてる

MIDは書き換えてるだけ。書き換えは早い

MIDで連結したら遅い

あってるかどうか知らんがそういう主張だろ
450デフォルトの名無しさん:2013/02/06(水) 18:15:52.95
まじで何をいってるのかわからん。
MIDで連結したら遅いってどういうこった?
451デフォルトの名無しさん:2013/02/06(水) 18:20:23.74
Stringをそのまま連結したら遅いけど、Midを使えば速いよって流れなんだけど。
452デフォルトの名無しさん:2013/02/06(水) 18:20:41.06
連結ってJoinじゃないの?
453デフォルトの名無しさん:2013/02/06(水) 18:23:23.29
>>424
ファイルに書きだしてまとめる、というのも手だけど、
こういうファイルが増えてくると
ソースコード内に記述した方が手っ取り早く参照できる事に気づいた。
454デフォルトの名無しさん:2013/02/06(水) 18:27:35.58
VBレスキュー(花ちゃん) - 文字列連結の高速化(VB6.0) - Visual Basic 6.0 VB2005 VB2010
ttp://hanatyan.sakura.ne.jp/patio/read.cgi?no=88

高速文字列連結
ttp://homepage1.nifty.com/MADIA/vb/vb_bbs/200408/200408_04080051.html
455デフォルトの名無しさん:2013/02/06(水) 18:28:26.14
文字列連結のパフォーマンスを向上させる方法
http://support.microsoft.com/kb/170964/ja
456デフォルトの名無しさん:2013/02/06(水) 18:29:58.77
昔、グリッドに入ってる文字列を一括出力しようとして
&で文字列結合していくと、すげ遅い事に気づいた。

んで、StringBuilderみたいなの無いかなと思ってぐぐって
ttp://d.hatena.ne.jp/tomorrowkey/20100203/1265200311
これを利用している。

どっか別サイトにも自作StringBuilderクラスがあったが、
中身を見ると&で結合してるだけだったので、そちらは却下。
457デフォルトの名無しさん:2013/02/06(水) 18:32:19.68
>>446
> 文字列連結のパフォーマンスを向上させる方法
> support.microsoft.com/kb/170964/ja - キャッシュ2001年1月31日 - キーワード: kbhowto

12年前
458デフォルトの名無しさん:2013/02/06(水) 18:42:30.86
>>451
そのテクニックは、正確には文字列連結(拡張)は1度ですませて、Midで中身を書き換えてるだけ
Midで高速に連結する、じゃなくて、Midで高速に連結文字列を作成する、ってのが正しいと思う
Midで拡張は解らんな。できるのか?
a = "文字列"
b = "追加文字列"
Mid(a, 4) = b
見たいな事か。VBAではエラーになってるが
459デフォルトの名無しさん:2013/02/06(水) 18:48:05.15
>>457
(; ・`д・´) へーそーなんだ
460デフォルトの名無しさん:2013/02/06(水) 18:51:07.71
>>430
>VBのString型って速すぎじゃね。C#やJavaにはString型の
>遅さを補うためにStringBuilderクラスが用意されているがVBには
>そういうのがない。

正直、バカすぎる。
VB6の文字列も & で連結していくと、超遅い。

VB6のMIDは文字列の置き換えであり、
JavaのStringBuilderクラスも文字列の置き換えである。

MidもStringBuilderもやってる事は同じ。

ちなみにJavaの場合、ソースコードで文字列を + で連結していっても
コンパイルで最適化され、StringBuilderに置き換えられている。
461デフォルトの名無しさん:2013/02/06(水) 18:57:31.06
VBのコンパイラがクソ
462デフォルトの名無しさん:2013/02/06(水) 19:07:30.73
>>453
参照するたびにファイルから読み出そうとするから定数の方が手っ取り早いと思ってるのかな?
起動時に全部読み込んでしまえば参照にかかる時間は大して変わらないと思う。

定数だとファイルから読み込む処理を作る必要がない分一時の楽はできるけど
定数の修正が入るたびにコードの修正が必要だから、コードの手離れがよくない。

ファイルが増えると言ってるけど、ファイルのまとめ方や扱い方をを工夫すれば
そんなに増えるとは思わないけど。
463デフォルトの名無しさん:2013/02/06(水) 19:15:34.62
>>460
"a"をStringで10まんこ結合したら
Javaが32秒
C#が10秒
VBAが2秒だったの。この結果から見ればVBのStringが速いって考えてとうぜんでしょ。なにさ、ふん!はい論破。
464デフォルトの名無しさん:2013/02/06(水) 19:22:23.03
そりゃJavaやC#のStringはクラス・オブジェクトだし旧VBのStringはクラス・オブジェクトじゃないし
465デフォルトの名無しさん:2013/02/06(水) 20:50:53.54
>>460
テンプレ回答乙

StringBuilderによってメモリ確保の回数が減る→処理が速くなる
でもそれは処理の一部にしか過ぎないだろ?
JAVA/C#はそれ以外の部分が遅すぎる
現実にはVB6のが速い

>>463
最適化は切ったか?
466デフォルトの名無しさん:2013/02/06(水) 20:57:37.45
VBAで確認したところは誰も突っ込まないw
467デフォルトの名無しさん:2013/02/06(水) 21:23:28.06
仕事で必要ならともかく
いまどきVB6の環境もってるやつのほうが少ないだろ
468デフォルトの名無しさん:2013/02/06(水) 21:40:32.01
となるとVBAつっても最近のOfficeに搭載されてるやつとなるとVB6より性能改善されてる可能性が
469デフォルトの名無しさん:2013/02/06(水) 21:41:02.60
VBAってインタプリッタ?
470デフォルトの名無しさん:2013/02/06(水) 21:50:10.14
>>467
それは言い訳にできんだろ。
VB6以前のスレなんだし。
471デフォルトの名無しさん:2013/02/06(水) 22:05:47.32
>>468
VB6に近いからいいだろ
472デフォルトの名無しさん:2013/02/06(水) 22:11:11.24
VB6 コンパイルしてから実行
VBA インタプリタで実行
473デフォルトの名無しさん:2013/02/06(水) 22:19:04.97
そう、だから結果が覆されるとは思えないだろ?
VB6が速いと困るの?
474デフォルトの名無しさん:2013/02/06(水) 22:20:59.25
最近のOffceのVBAはVB6より速い可能性は?
475デフォルトの名無しさん:2013/02/06(水) 22:21:49.92
>>474
君はもう寝な
476デフォルトの名無しさん:2013/02/06(水) 22:35:04.34
>>472
VBAはインタプリタだとされることもあるけど、純粋なインタプリタと言うにはちょっと問題が
一応メニューにコンパイルあるぞ

>>474
可能性は否定できない
君がVB6とJAVAとC#動く環境あるなら試してみてくれたまえ
477デフォルトの名無しさん:2013/02/06(水) 22:36:05.33
>>462
ちょっと違うな。
定数をソースコードに記述、VB6だと
標準モジュール→プロパティもしくは定数を返す関数っていう手があるんだけど、
  標準モジュール名 . 定数名
って使う時に記述するから、それがすぐにどこかわかるっしょ。
誤って変数にセットする事もない。

外部のファイルにまとめるのはstrutsの時代に懲りた。
478デフォルトの名無しさん:2013/02/06(水) 22:40:03.21
>>463
だから、文字列の連結は

  Java では + で、VB6 は & だが

Java → StringBuilderがある

VB6 → MID がある

↓これが間違い。

>遅さを補うためにStringBuilderクラスが用意されているがVBには
>そういうのがない。
479デフォルトの名無しさん:2013/02/07(木) 00:01:01.63
>>455のやり方って&使ってるけど問題ないの?
480デフォルトの名無しさん:2013/02/07(木) 00:14:49.97
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))
482デフォルトの名無しさん:2013/02/07(木) 00:17:46.27
C=Join(Array(A,B),"")
483デフォルトの名無しさん:2013/02/07(木) 00:19:52.33
きみ何がしたいの?
484デフォルトの名無しさん:2013/02/07(木) 00:41:33.60
>>479
何が問題なんだ?ソース読めないのか?
あれは毎回文字結合するんじゃなくて、ccIncrement = 50000文字単位で文字列を拡張することにより
連結回数を減らして高速化する、って例だぞ
文字連結そのものは&でやってる。つかMidで文字連結なんて出来ない
485デフォルトの名無しさん:2013/02/07(木) 01:00:42.20
>>455ってオフセットの値を外部に出してんの反則じゃね?
486デフォルトの名無しさん:2013/02/07(木) 01:13:03.80
>>485
反則かどうかまずお前のルールを書いてみろ
487462:2013/02/07(木) 07:25:45.49
>>477
それはグローバル変数でもできる。
それだけだと手っ取り早いという理由にならない。

グローバル変数だと誤って変数にセットするデメリットと
定数だと定数変更の度にコードを修正するデメリット
どっちを取るかはもちろん設計者の考え方一つ。

個人的には前者のデメリットの方が後々コードの修正はない分手離れいいから前者を採用する。
たとえ定数修正であってもコードに手を加えるということは修正の度にバグの可能性はあるわけで
そのリスクをずっと背負うのは御免だ。
488デフォルトの名無しさん:2013/02/07(木) 08:57:34.07
何を言ってるんだか。はい論破。
489デフォルトの名無しさん:2013/02/07(木) 09:12:49.45
グローバルに変数を置いたら、Option Explicitが効き辛くなるから嫌だ
490デフォルトの名無しさん:2013/02/07(木) 09:15:19.39
まーた意味不明な事を
491デフォルトの名無しさん:2013/02/07(木) 10:25:03.43
外部ファイルで設定は嫌とかいってる奴が、Linux文化を知ったらどう思うんだろうか
492デフォルトの名無しさん:2013/02/07(木) 13:50:22.41
今日は、いろんなスレが静か
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
494デフォルトの名無しさん:2013/02/07(木) 14:14:01.02
クラス内メソッド間で引数として引き回すのなら、メンバにする必要無いよね
495デフォルトの名無しさん:2013/02/07(木) 14:19:41.14
>>494
おいやめろ、まるで俺が不必要なことをしている無能みたいじゃないか。
フィールドを引数にしたいときもあるだろ?
そ・う・い・う・と・き・も・あ・る・だ・ろ。はい論破。
496デフォルトの名無しさん:2013/02/07(木) 14:27:53.42
一文字ずつ句切らないといけないような苦しさでも論破なのか…
497デフォルトの名無しさん:2013/02/07(木) 14:44:23.01
ネタが緩すぎて釣れない
498デフォルトの名無しさん:2013/02/07(木) 14:54:19.57
>>497
釣る気は1ミリもないけど、>>493には賛同するだろ。納得するほかないだろ。
じゃあそれを正直に書き込めばいいだろ。さすが論破さんだな正論すぎるとそう
書き込めばいいだろ。はい論破。
499デフォルトの名無しさん:2013/02/07(木) 15:19:04.52
>>493
VB6のコードじゃないね。
500デフォルトの名無しさん:2013/02/07(木) 15:23:38.97
>>499
どこが?はい論破。
501デフォルトの名無しさん:2013/02/07(木) 15:26:27.07
>>499
お前もいい加減うざいわ
502デフォルトの名無しさん:2013/02/07(木) 17:31:07.06
質問に対する回答が正しいか間違っているかを判断するのは、質問した本人です、お気を付けください。
503デフォルトの名無しさん:2013/02/07(木) 17:44:56.37
何が正しいかわからないから質問するんじゃないのか
504デフォルトの名無しさん:2013/02/07(木) 17:45:41.11
リスクだけ論じるのは、自分の都合の良いとこだけ主張してるだけ
それぞれのリスクとメリットを評価しないと正確な判断ではない

まあ、論破君には理論が通じないから言っても無駄なんだろうけど
505デフォルトの名無しさん:2013/02/07(木) 17:46:19.58
はいはい、ケロンパ
506デフォルトの名無しさん:2013/02/07(木) 17:50:42.77
ここは論破ールームだな
507デフォルトの名無しさん:2013/02/07(木) 17:52:04.66
えらくまた懐かしいのというか歳がバレそうなというか
508デフォルトの名無しさん:2013/02/07(木) 17:53:09.56
>>505
ウツミみどりを知っていたら50代
509デフォルトの名無しさん:2013/02/07(木) 17:53:11.08
>504
論破君には理論が通じない……論理破綻、略して論破、か。
510デフォルトの名無しさん:2013/02/07(木) 17:54:03.83
>>504
じゃあお前はどう思ってるわけ?>>493についてどう思ってるわけ?
俺はByRefにするなといってるんじゃなくてByValが基本だといってる
わけであり、たとえByRefを使うことにメリットがあろうと俺はそれを
吸収することができる。いうなれば魔人ブウ。自分の意見さえ述べることができないお前は
俺と同じリングに立つことさえできないミスターサタン。ビーデルの父親であることだけが取り柄のハゲ。はい論破。
511デフォルトの名無しさん:2013/02/07(木) 17:59:21.45
魔人ブウ
ミスターサタン
ビーデルの父親

論破童貞君のプロファイリング完了しますた
512デフォルトの名無しさん:2013/02/07(木) 17:59:48.88
じゃあどうせだからドラゴンボールのキャラで誰が好きかって話する?
俺はピラフかな。あの声がかっこいい。
513デフォルトの名無しさん:2013/02/07(木) 18:02:30.87
ちゃんとしたプログラマならちゃんと使い分けるのが基本にきまってるだろ
514デフォルトの名無しさん:2013/02/07(木) 18:10:24.15
まぁ、ByValを基本とせよというのは、俺も同意できる。
ByRefにしなければならないときのみ、ByRefにする。
515デフォルトの名無しさん:2013/02/07(木) 18:10:56.37
byval記述がいちいち面倒くせえからしてないわ
516デフォルトの名無しさん:2013/02/07(木) 18:13:20.36
ArrayのByValはByValだっけ?ByRefだっけ?
517デフォルトの名無しさん:2013/02/07(木) 18:13:50.96
>>515
VB.NET登場以降は、VB6でもByVal/ByRefを省略しないのが推奨。
518デフォルトの名無しさん:2013/02/07(木) 18:14:05.65
デフォをByRefにしてるVB6がキチガイ
519デフォルトの名無しさん:2013/02/07(木) 18:15:15.23
>>514
きたー正直者きたー。ですよねーですよねーそうですよねー。
やっと良心を持ったまともな人間にめぐり合えた気分だわ。

>>515
その不埒さ度し難いわ。ふとどきものというのはお前のために
ある言葉だと思うわ。>>493のような問題があるんだよ。大変なんだよ。はい論破。
520デフォルトの名無しさん:2013/02/07(木) 18:17:30.09
>>493は単純な設計ミスじゃねえの?Fieldを引数として渡す可能性があるって設計段階でわかるだろし、VB6が省略時ByRefだってのは周知の事実で設計したやつが場間
521デフォルトの名無しさん:2013/02/07(木) 18:18:57.39
教育上ByRefやByVal記述を徹底させると>>493のようなバカな設計ミスやらかしても問題にならないだけであって、>>493は設計した奴が明らかにバカ
522デフォルトの名無しさん:2013/02/07(木) 18:31:54.44
まぁ、適切な例を挙げられなかったというのは、大目に見てやろうぜ
523デフォルトの名無しさん:2013/02/07(木) 18:33:39.47
>>520, >>521
お前ら似たような文章書きやがってさすがの俺もピキるよ。
お前らだって俺を怒らせたくないだろ。>>493の設計はけして間違ってない。
フィールドを渡したいときもある。ByValを書かないというルーズさを
発揮しなければ>>493のコードは全然問題ないわけよ。ByVal付けるだけで
問題なくなるわけよ。じゃあByValを省略する習慣が悪いんであって設計は
悪くないということになるよね。な・る・よ・ね。はい論破。
524デフォルトの名無しさん:2013/02/07(木) 18:34:33.31
byvalを省略する習慣って何だ?
設計・仕様でbyvalが必要なところでわざわざ省略するの?
525デフォルトの名無しさん:2013/02/07(木) 18:37:27.24
ByVal,ByRefを省略せず記述する習慣が無いのであって、ByValを省略する習慣だと日本語的に意味が違う。プログラマが言語に疎くてどうする。
526デフォルトの名無しさん:2013/02/07(木) 18:38:39.69
>>518が全て
527デフォルトの名無しさん:2013/02/07(木) 18:41:38.31
VB6はByRefが既定。その理由も知らずしてByValを語るな。はい論破。
528デフォルトの名無しさん:2013/02/07(木) 18:44:56.04
>>524
ByValを書くのがちょーめんどくさいという理由でByValを記述しないという
行動が生活の中で日常的に見られることをByValを省略する習慣と呼ぶことにすると、
ちょーめんどくさいという理由でByValを省略しているわけであるから、それによって
影響を受ける範囲を予測することは難しいわけであり、わざわざというよりは
そう書いたほうが手っ取り早いと思ったという精神活動が予想されるわけ。
お前がそういうやつだって言ってんじゃないよ。そういう人もいるだろうから
>>493はプログラムの教科書の1ページに載せられてもいいものだろ。はい論破。
529デフォルトの名無しさん:2013/02/07(木) 18:45:27.25
VB以外でメソッドの引数がデフォで参照になってる奴ってあんの?
530デフォルトの名無しさん:2013/02/07(木) 18:46:16.07
たしかに使い方の間違いの例として>>493は教科書に載せてもいいかもね
531デフォルトの名無しさん:2013/02/07(木) 18:48:46.87
デバグして大変だったという経験あるなら普通設計上必要な箇所では省略しないだろな
設計・仕様を全く理解してないか、デバグ経験が無いか、
532デフォルトの名無しさん:2013/02/07(木) 18:49:24.70
関係ないけど上も下も空行一行入れるんだけど入れないのが普通?

Class Class1
空行
 略
空行
End Class
533デフォルトの名無しさん:2013/02/07(木) 18:51:17.51
VB6にClass〜End Classは無い

可読性の問題なら社内規定などルールがあればそれに従えばよい
534デフォルトの名無しさん:2013/02/07(木) 18:51:43.07
>>525
お前は「記述する習慣がないこと」と「省略する習慣」とは
意味が違うというわけ?水が沸くこととお湯が沸くことは違うんだ
といっているようなものだ。同じだ。水を沸かしたらぺヤング食べれ
ないけどお湯を沸かしたらぺヤング食べれるとかないだろ。同じものだ。
どっちもぺヤング食べれる。はいインスタント論破。
535デフォルトの名無しさん:2013/02/07(木) 18:53:35.36
>水が沸くこととお湯が沸くこと
違うだろ
水とお湯が同義なのか?おまえん中では
536デフォルトの名無しさん:2013/02/07(木) 18:54:23.25
>>534
ぺヤングの由来も知らんくせにぺヤング連呼すんなこのともさん説破。はい論破。
537デフォルトの名無しさん:2013/02/07(木) 18:55:24.68
日本語の話なら
>水が沸く
は誤りです
「沸く」という動詞の使い方の誤りです
538デフォルトの名無しさん:2013/02/07(木) 18:56:46.62
>>534
>「記述する習慣がないこと」と「省略する習慣」とは意味が違うというわけ?

おまえ論理的思考大丈夫?
539デフォルトの名無しさん:2013/02/07(木) 18:58:48.42
>>531
だ〜か〜ら〜そんなわからずやなこと言ってたらさすがの
俺も怒るよ。怒らせたくないだろ?必要か必要でないかと
わかる状況であれば省略しないのはそれはそうだろ。省略しては
いけないところでは省略してはいけないといってるだけで
同語反復でしかないだろそんなものは。設計とかそういう問題じゃない。
基本的にはByValを記述するっていう方向で考えるようにしておけば、
プログラミング超はかどるだろ。はい論破。
540デフォルトの名無しさん:2013/02/07(木) 18:59:21.72
>>537
いや、日本語的に間違ってないよ
「水が沸く」は水が泡立ってる様子を指す、泡立っている原因については何でもいいから沸騰である必要もない
541デフォルトの名無しさん:2013/02/07(木) 18:59:57.49
>>533
正しい。

Class〜End Classを書いてドヤ顔してる奴、それを指摘しないで釣られてる奴
はいい加減死ぬまでロムってろください。
542デフォルトの名無しさん:2013/02/07(木) 19:00:36.34
>>540
ボイルシャールの法則を知っていれば気圧でお湯にでも水にでもなるって事知らないの?はい論破。
543デフォルトの名無しさん:2013/02/07(木) 19:00:46.49
>基本的にはByValを記述するっていう方向で考えるようにしておけば

これはこの前提条件満たした人間しかいない場で考える話では
この条件満たしてない奴がいる場で前提として語るのはおかしい
544デフォルトの名無しさん:2013/02/07(木) 19:01:30.14
>>537
どう誤ってんのか言える?え?言えないの?じゃあお前の頭が誤ってる。はい論破。

>>538
お前がな。はい論破。
545デフォルトの名無しさん:2013/02/07(木) 19:02:26.55
値渡しのの方が安全だから初心者向けと思うのは俺だけ?
実効効率を考えてByRefをデフォにするくらいならOLEなんて使うなといいたい。
546デフォルトの名無しさん:2013/02/07(木) 19:03:37.72
>>543
この前提条件てどの前提条件?よくわかんなかった。
何を前提として何を語るのがおかしいの?ちゃんと書いて。はい論破。
547デフォルトの名無しさん:2013/02/07(木) 19:05:18.98
関数の実効前後で変数の内容が変わっているなんて、なぜにエクスタシーを感じないかな?
548デフォルトの名無しさん:2013/02/07(木) 19:06:00.79
ああいま>>545がいいこといった。そうなんだよそういうことなんだよ。
549デフォルトの名無しさん:2013/02/07(木) 19:06:27.56
>>542
それは「沸騰」の話だな

「お湯」には「熱い」という条件があるから沸騰の条件は必要ないが「熱い」がどの程度の温度を指すのかは規定されてない、人が触って暖かく感じれば「お湯」なのだろう

「水」は温度に条件はない、一般用語としては「お湯」も含めて液体の状態のH2Oを指すが、科学的な話をするなら氷も水蒸気も水(H2O)だよ
550デフォルトの名無しさん:2013/02/07(木) 19:09:00.26
>>549
「水」は温度に条件はないというのなら、水が沸くを正当化する事になるぞ?
ちょっと旦那さん、しっかりしろよな。
551デフォルトの名無しさん:2013/02/07(木) 19:09:46.00
水が沸く ・・・ (気圧の関係上必ずしもお湯になっているとは限らない)沸騰して沸いてるのかもしれないし、別の原因で泡立っているのかもしれない
お湯が沸く ・・・ いかな原因で沸騰・泡立ちしていようとお湯であることに変わりはない
552デフォルトの名無しさん:2013/02/07(木) 19:11:45.53
>>550
「水が沸く」は日本語として間違ってはいないが
「水が沸く」=「お湯が沸く」の時もあれば「水が沸く」≠「お湯が沸く」のときもある
こんな単純な表現だけでは同義とするのは無理がある
553デフォルトの名無しさん:2013/02/07(木) 19:14:28.54
>>541
問題の論点を理解してない
何の言語で記述されてるかという問題ではないのだよ
(それが旧VBのコードでないことくらい見りゃ誰だってわかるっしょ)
554デフォルトの名無しさん:2013/02/07(木) 19:15:51.20
なんで水の話してんだよw
555デフォルトの名無しさん:2013/02/07(木) 19:17:26.45
音が聞こえることを耳が聞こえるというのと同じことで、
どこにフォーカスするかの違いでしかない。
水が沸くもお湯が沸くもどっちも正しい日本語だ。
今月一番のバカは>>237に決定な。はい論破。
556デフォルトの名無しさん:2013/02/07(木) 19:17:55.37
長文論破君はちょっと頭がおかしい
本当に論破出来てるかどうかは置いといて、論破行為して何が楽しいのか、
557デフォルトの名無しさん:2013/02/07(木) 19:21:08.37
>>555
アンカーミスった。>>237さん誠に申し訳ございませんでした。
今回このような不祥事をしでかしたことはわたくしの不徳の
いたすところでございます。こんごこのようなことがないよう
注意してまいりたいと思います。このたびはご迷惑をおかけして
まことに申し訳ございませんでした。はい論破。
558デフォルトの名無しさん:2013/02/07(木) 19:21:18.26
>音が聞こえることを耳が聞こえるというのと同じことで、
音が聞こえると耳が聞こえるは意味が違うだろw
前者は事象を感じ取ったという意味だが後者は耳の能力の話だろw
559デフォルトの名無しさん:2013/02/07(木) 19:22:14.51
>>487
グローバル変数を定数として扱うところでもう問題があるんよ。
設計者がそのソフトを一生面倒見るならまだしろ、
どうせいつかは引き継ぐ。
引き継いだ後に、はっきりと「 定数 」である事がわかる方がいいんでないか?

VB6でなければ、コンストラクタでファイルから読み込んだ値をセットして、
後は読み出ししかできないようにできるが、VB6はそれができない。
560デフォルトの名無しさん:2013/02/07(木) 19:24:01.01
>>558
だから音を聞くことができることによって耳の能力を認識することができるんだろ。
だから耳に焦点をあてているのか音に焦点をあてているのかの違いでしかない。
水が沸くというのは水が温まる過程に焦点をあてているのだから
お水さんが主役だが、お湯が沸くといったときは温まったときの状態に焦点を
当てているわけでありお湯さんが主役というそういう違いでしかない。まったく
同じことをあらわしている。はい論破。
561デフォルトの名無しさん:2013/02/07(木) 19:25:04.85
>>463
だから、文字列の連結は

  Java では + で、VB6 は & だが

Java → StringBuilderがある

VB6 → MID がある

↓これが間違い。

>遅さを補うためにStringBuilderクラスが用意されているがVBには
>そういうのがない。
562デフォルトの名無しさん:2013/02/07(木) 19:30:53.39
>>553
スレタイも読めないのかクソが!
問題の論点以前の話w
563デフォルトの名無しさん:2013/02/07(木) 19:31:10.61
論破君の迷言集 はじめようか

>>http://toro.2ch.net/test/read.cgi/tech/1359721249/542
>ボイルシャールの法則を知っていれば気圧でお湯にでも水にでもなるって事知らないの?はい論破

気圧で変化するのは沸点。
「 お湯にでも水にでもなる 」←文脈上、お湯と水を比較しているが、これは化学的な用語でない。

>>http://toro.2ch.net/test/read.cgi/tech/1359721249/430
>C#やJavaにはString型の
>遅さを補うためにStringBuilderクラスが用意されているがVBには
>そういうのがない。

あります。MIDステートメント。
564デフォルトの名無しさん:2013/02/07(木) 19:32:41.12
>>560
耳の能力を問うために音を聞かせるいう前提のもとで
その回答としての「音が聞こえる」と「耳が聞こえる」は耳の能力の有無を知る上では同じ結果を得られるけど
意味としては同義ではないだろ
565デフォルトの名無しさん:2013/02/07(木) 19:33:15.99
言語オタクが論破してるつもりでドヤ顔しても
実生活ではちっとも評価されないのが納得いかんのやろ
人格崩壊の危機というべき
566デフォルトの名無しさん:2013/02/07(木) 19:36:10.07
>>559
クラスモジュールで管理しちゃいけないのかな?
567デフォルトの名無しさん:2013/02/07(木) 19:36:57.36
論破君はメ欄を空欄にしてるのが特徴じゃね

>>562
問題の焦点はそこじゃなくByVal,ByRefの話だからね
VB.NETでも旧VBでも引数の書式が変わらないなら問題は無いだろう
実際に使ってる自分のコードで質問に来たのなら誘導すべき対象にはなるだろうが
568デフォルトの名無しさん:2013/02/07(木) 19:39:33.41
>>562
お前スレタイ読んでその認識というのはやばいんじゃねえの。
Ver6.0までと書いてあるだろ。までということはVer6.0に限定されないってことだ。まずこれが一点目。
VB6.0でそのとおりに書けば動きますっていって載せてるわけじゃねんだから、ああ説明のために
親切丁寧な論破さんがわかりやすく記述してくださったのか、ありがたやありがたやと俺を拝め。これが二点目。はい論破。
569デフォルトの名無しさん:2013/02/07(木) 19:42:44.68
VBの記述のための参考コードとしてVB以外の言語(CやJava)での紹介くらいするだろ
C言語で分からないとこがあるから〜とかVB.NETで分からないとこがあるから〜とかそゆのはスレチだが
570デフォルトの名無しさん:2013/02/07(木) 19:43:37.06
ひとまず
どこのスレでもウザイ「論破」という単語をNGワードに入れることに決意した
571デフォルトの名無しさん:2013/02/07(木) 19:44:09.75
>>567
であるのなら、そもそもClassを使っているのが間違い。
そういったことも含めて誘導すべき対象だろ。
572デフォルトの名無しさん:2013/02/07(木) 19:44:34.45
>>561
Midで文字列は連結できません
573デフォルトの名無しさん:2013/02/07(木) 19:46:24.44
「音が聞こえる」は、実際に音が発生してないと使うことはできないが、
「耳が聞こえる」は、音の発生の有無に関係なく、耳の能力を語る言葉だろ
574デフォルトの名無しさん:2013/02/07(木) 19:46:46.51
>>564
同じだろ。たとえば夏の夜空に花火が打ち上げられて人々に
感動を与えたとして、それをすごくファンタジーでしたという
やつもいれば、爆薬の飛散するさまがすごくリアルでしたというやつ
もいるだろ。見るやつが変われば言い方も変わるが花火が打ち上げられた
ということに変わりはないだろ。そりゃひとりひとりが言ってることの意味は
違うだろうが事実は一つだろ。花火が打ち上げられたんだ。だから音が聞こえることも
耳が聞こえることもまったく同じことだ。はい論破。
575デフォルトの名無しさん:2013/02/07(木) 19:47:52.03
>>571
じゃあ指摘して
わざわざあのコードを旧VB用に直して再度レスし直せってことなの?
そんなことする意味あんの?
576デフォルトの名無しさん:2013/02/07(木) 19:48:56.19
日本語能力がおかしい奴と何をお喋りしても無意味・無価値・無駄
577デフォルトの名無しさん:2013/02/07(木) 19:49:11.83
>>566
クラスモジュールでpublic const の定数にしても良いが、
シングルトン実装すんなら、標準モジュールで良いだろう。
標準モジュールのpublic const で良い。

横から入ってきてるから、流れわかってないっしょ。
578デフォルトの名無しさん:2013/02/07(木) 19:50:31.61
>>575
そもそもあのクソコードにマジレスしてることがアレなんだけどw
ああいうクソコードは一刀両断で十分だろ。
579デフォルトの名無しさん:2013/02/07(木) 19:51:56.61
>>578
どこがクソコードなわけ?え?いえないの?じゃあお前がクソだな。はい論破。
580デフォルトの名無しさん:2013/02/07(木) 19:55:01.96
>>http://toro.2ch.net/test/read.cgi/tech/1359721249/542
>ボイルシャールの法則を知っていれば気圧でお湯にでも水にでもなるって事知らないの?はい論破

気圧で変化するのは沸点。
「 お湯にでも水にでもなる 」←文脈上、お湯と水を比較しているが、これは化学的な用語でない。

>>http://toro.2ch.net/test/read.cgi/tech/1359721249/430
>C#やJavaにはString型の
>遅さを補うためにStringBuilderクラスが用意されているがVBには
>そういうのがない。

あります。MIDステートメント。

>>http://toro.2ch.net/test/read.cgi/tech/1359721249/555
>音が聞こえることを耳が聞こえるというのと同じことで

前者は、聴覚刺激の入力表現であり、後者は聴覚能力の表現です。
ソフト屋らしく、NOT表現すると「耳が聞こえない」→聴覚能力です。
581デフォルトの名無しさん:2013/02/07(木) 20:08:41.30
Java・・・StringBuffer
VB6・・・バイト配列
582デフォルトの名無しさん:2013/02/07(木) 20:16:23.55
>>532
手元のコードいくつか眺めてみたけど俺は入れてないわ。
583デフォルトの名無しさん:2013/02/07(木) 21:12:09.66
>>529
>VB以外でメソッドの引数がデフォで参照になってる奴ってあんの?

メソッドだと記憶にない。

関数/手続きなら、fortran 等の昔の言語は大抵参照 (実装が違うことがあるけど) 型だね。
584デフォルトの名無しさん:2013/02/07(木) 21:57:26.49
fortran 等の昔の言語ってそもそも変数は全部グローバルなんじゃ
585デフォルトの名無しさん:2013/02/08(金) 09:34:08.14
FortranのFを小文字で書く奴はじめてみた
586デフォルトの名無しさん:2013/02/08(金) 10:48:36.09
>>559
いやに「定数」に拘ってるけど、設定項目って「定数」じゃないでしょ。
君が作るアプリケーションには、設定ダイアログが一切ないの?
587デフォルトの名無しさん:2013/02/08(金) 12:25:24.19
ByValは値コピーのコストがポインタコピーと同じ時だけ書いてる。
ByRefは省略可だが、関数内で値を書換えるとき明示的に書く、
って俺ルールにしてる。
588デフォルトの名無しさん:2013/02/08(金) 14:04:18.24
>>587
ByRefが必要なとき以外は全てByVal、って決めといた方がいいよ。
引数コピーが発生して、そのオーバーヘッドが問題になることなんて極々わずかだから。
本当に問題になったときに初めてByRefで渡せばいいよ。
589デフォルトの名無しさん:2013/02/08(金) 15:37:33.78
インライン関数でconst T&を値渡しに最適化してくれるような
言語じゃないと考えると、構造体や文字列は、
アドレス渡したくなるなぁ。
590デフォルトの名無しさん:2013/02/08(金) 16:25:41.82
まあ、ユーザ定義体をByValで渡すことなんかできないんですけどね
591デフォルトの名無しさん:2013/02/08(金) 16:38:34.07
オブジェクトもByValで渡してもコピーされるわけじゃないしね
592デフォルトの名無しさん:2013/02/09(土) 07:18:12.76
>>584
FORTRANはグローバルもローカルもあるぞ。
593デフォルトの名無しさん:2013/02/09(土) 07:47:22.62
>>15
気になってたんだが、objCloseable って、
こういうプリフィクスつける人まだいるの?
Long型なら lHoge とか。
まあVB6なら仕方のない部分も無くもないんだが(IDEが未成熟すぎるから)。

あと、こういう風に関数に区切ってしまうと、
catchしてthrowみたいなのも表現できないし、
可読性も悪いと思う。
try catch finally は一つのメソッド内に置いて、
catchやfinally内の処理を別関数に投げるというならアリだと思うが。
594デフォルトの名無しさん:2013/02/09(土) 07:57:21.91
まだこんなアホなこと言ってる奴がいるのか。
595デフォルトの名無しさん:2013/02/09(土) 08:59:18.81
自分でも馬鹿にできそうな言語を見つけたんだろw
596デフォルトの名無しさん:2013/02/09(土) 12:47:08.51
確かに今の時代、VB6.0は突っ込み所満載だからな。OLEがベースとか笑ってしまう。
Windows BlueでCOMが死んだら消滅する言語なのにな。
597デフォルトの名無しさん:2013/02/09(土) 12:56:54.29
またせたな!
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デフォルトの名無しさん:2013/02/09(土) 16:23:12.08
なんでこのスレ、俺より詳しい奴が一人も居ないんだ?
600デフォルトの名無しさん:2013/02/09(土) 16:27:35.94
>>599
かかってこいよ
お前の疑問に答えて論破してやっから
601デフォルトの名無しさん:2013/02/09(土) 16:33:21.06
いいなバカは
602デフォルトの名無しさん:2013/02/09(土) 16:41:36.80
>>600
俺のほうが先に論破してやる。
お前は馬鹿。はい論破
603デフォルトの名無しさん:2013/02/09(土) 16:45:24.95
焦り杉だろ
604デフォルトの名無しさん:2013/02/09(土) 16:55:56.13
焦ってるのはお前。はい論破
605デフォルトの名無しさん:2013/02/09(土) 18:28:33.31
いや君の方
606デフォルトの名無しさん:2013/02/09(土) 18:31:29.15
オウム返しをするのは焦ってる論破
607デフォルトの名無しさん:2013/02/10(日) 00:52:58.62
>>606
ワイルドだろ〜?

     / ̄ ̄ ̄\_
   /__  ___/__ ヽ
  / /   )ノ     ヽヽ
  | |  ー    ー   | |
 ( V  =・ヽ /・=   V )
  ヽ      ノ       ノ
   |     ヽ_ノ      |
   ヽ     ̄ ̄`   ノ
    \       /
    __/\___/ヽ_
  /ヽ⌒\ /⌒ /\
 (   |__У___|   )
  .\ | |__| |o|__| | /
608デフォルトの名無しさん:2013/02/10(日) 13:03:23.46
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分の条件判定をしてる
の?
610デフォルトの名無しさん:2013/02/10(日) 13:43:41.07
>>609
それだと単なる文字列比較じゃないの?
611デフォルトの名無しさん:2013/02/10(日) 15:17:35.00
文字列比較だね
月日を2桁にしとけば問題はないよ
612デフォルトの名無しさん:2013/02/10(日) 17:39:06.82
>>609
何で日付なのにDate型にしないんだ?
613デフォルトの名無しさん:2013/02/10(日) 21:32:01.76
Date型にして
strDate1 = "2013/1/1"
strDate2 = "2013/1/2"
この代入をすると
あーら不思議
614デフォルトの名無しさん:2013/02/10(日) 23:03:39.92
Date型にするならstrってプリフィクスも変えろ
615デフォルトの名無しさん:2013/02/10(日) 23:14:06.88
Date型のプリフィクスて?
616デフォルトの名無しさん:2013/02/10(日) 23:24:37.83
ええと、なんだ、モンゴリアンチョップ
617デフォルトの名無しさん:2013/02/10(日) 23:31:53.97
dDate1
dtDate1
datDate1
dateDate1

さあどーれだ
618デフォルトの名無しさん:2013/02/11(月) 00:03:29.29
> dtDate1

かな。

プリフィックスだから短い方が良いけど、さすがに一文字じゃ被るから。
619デフォルトの名無しさん:2013/02/11(月) 00:08:01.12
Date型の変数名にDateはどうなの?
620デフォルトの名無しさん:2013/02/11(月) 00:30:18.62
>>619
試してみればいいじゃん。
ものの数分で答えが出るでしょ。
621デフォルトの名無しさん:2013/02/11(月) 00:36:56.95
dtDate1

Date型で名前Dateとかバカじゃん

dt1 ←シンプルでタイプしやすいし超便利!
622デフォルトの名無しさん:2013/02/11(月) 01:25:21.00
単純な名前付けをやめるのが大事
strDate1 → strOnakinKaishiDate
strDate2 → strOnaniiShichattaDate
とか
623デフォルトの名無しさん:2013/02/11(月) 01:41:24.68
状況も考えずに○○するのが大事とか、断定的に物言う奴は大抵バカ
624デフォルトの名無しさん:2013/02/11(月) 04:34:50.49
昔はマイクロソフトお勧めのプリフィクス一覧があったはずなんだが
さすがに今のサイトはVB6の情報なくなってるのか見つけられん
VBScriptのやつならあったから、それによると日付はdtmらしい
http://msdn.microsoft.com/ja-jp/library/cc392255.aspx

dtmって付けたことないわ
625デフォルトの名無しさん:2013/02/11(月) 08:44:02.48
>>624
既にマイクロソフトはVBのハンガリアン記法を勧めなくなったからじゃないかな。

ググると一般的と思われるのが出てくるね。
基本的にはコーディング規約に従うのが一番だけど、無い場合は一般的に
通用しそうなものを選択すればいいんじゃないかな?
http://www.eonet.ne.jp/~aki/vec/vb/vbpre.htm
http://hanatyan.sakura.ne.jp/vbhlp/hensu.htm

マイクロソフトはデータ型のプレフィクスは推奨してないようだけど
コントロール、オブジェクトのプレフィクスは参考としてあるようだ。
http://support.microsoft.com/kb/173738/ja
626デフォルトの名無しさん:2013/02/11(月) 09:45:03.27
大昔の様に、変数名は2文字までとかって決まりは無いんだし...
判りやすい名前を付けようよ...
627デフォルトの名無しさん:2013/02/11(月) 11:19:25.41
> 判りやすい名前を付けようよ...

誰もそんなことに反対してないけど?

ただ、長い名前が必ずしも判りやすいわけじゃないが。
628デフォルトの名無しさん:2013/02/11(月) 11:33:06.45
>>627
>>621が判りやすいように見えるか?
>>622なら...うーんギリギリ合格...ほぼ不合格だけどな...
629デフォルトの名無しさん:2013/02/11(月) 11:47:33.23
「長い名前が必ずしも判りやすいわけじゃない」 が真だからと言って、
「短い名前がわかりやすい」が真じゃないんだが…

プログラマーならこれぐらいの論理が理解できないと辛いと思うんだが…
630デフォルトの名無しさん:2013/02/11(月) 13:32:59.36
>>628
名詞だからそれが一般的だと思うんだけど
KaisiとSichataを後に持ってくればインテリセンスと相性良くなるからどうしたものかねぇ
631デフォルトの名無しさん:2013/02/11(月) 14:35:52.27
>>630
Onakinってクラスを作って、そのプロパティとして、StartDate、FailedDateを持ってればいいんでない?

Set Ore = New Onakin
Ore.StartDate = "2013/02/01"
Ore.FailedDate = "2013/02/10"

見たいなぁ...
632デフォルトの名無しさん:2013/02/11(月) 14:51:43.52
変数名の為にクラス作るなんて本末転倒
633デフォルトの名無しさん:2013/02/11(月) 15:17:47.66
StartDateとEndDateをもった
RangeDateクラスを作ればいい
634デフォルトの名無しさん:2013/02/11(月) 16:03:10.86
>>632
文脈上、一つに纏めるべき物は纏めた方が良いと思うよ
そのクラスが、単純な構造体なのか、複雑なオブジェクトなのかは、取りあえず別の棚に置いておいた方が幸せになれる
635デフォルトの名無しさん:2013/02/11(月) 17:11:22.94
ClassじゃなくてTypeにすりゃええねん
636デフォルトの名無しさん:2013/02/11(月) 17:19:44.76
>>622
日本語と英語を混ぜるなあああああああああああ
637デフォルトの名無しさん:2013/02/11(月) 17:29:26.25
>>635
Classなんてないのだが何か?
638デフォルトの名無しさん:2013/02/11(月) 17:30:34.58
>>635
Typeで作ったって、どうせメソッド付けたくなるんだから、クラスモジュールで作った方が幸せ
639デフォルトの名無しさん:2013/02/11(月) 17:33:35.90
一時変数ならあんまキニスンナ
複数日付が出てから考えろ
640デフォルトの名無しさん:2013/02/11(月) 17:47:15.55
そう旧VBにClassは無い!だからこんなことも出来る!

Dim Class As Integer

Class = 100
641デフォルトの名無しさん:2013/02/11(月) 17:48:44.04
Dim Form As Integer
Form = 100
642デフォルトの名無しさん:2013/02/11(月) 17:52:34.60
>Visual Basic のコードで宣言するプロシージャ、変数、および定数の名前は、次の規則に従って付けます。
>・名前の先頭文字には、数字および記号は使えません。
>・名前には、ピリオド (.) や型宣言文字 (データ型を指定する特殊文字) は使えません。
>・プロジェクト名およびクラス モジュール名には日本語文字は使えません。
>・変数、定数、およびプロシージャの名前は 255 文字以内 (半角の場合) にします。
> コントロール、フォーム モジュール、クラス モジュール、および標準モジュールの名前は 40 文字以内 (半角の場合) で設定します。
>・予約キーワードと同じ名前は使えません。

但し!

>フォームやコントロールを作成するときには、予約キーワードと同じ名前を付けることができます。
>予約キーワードと同じ名前を持つフォームやコントロールを参照するには、名前の前に修飾子を付けるか、または角かっこ ([ ]) で囲む必要があります。

>Loop.Visible = True ' エラーが発生します。

>次のコードではエラーは発生しません。
>MyForm.Loop.Visible = True ' 名前の前にフォーム名を付けます。
>[Loop].Visible = True ' 角かっこを付けます。
643デフォルトの名無しさん:2013/02/11(月) 17:59:33.44
>>642
エスケープ識別子はVB6にはありませんよ。
しかし、コピペマンって例外なく馬鹿だな本当
644デフォルトの名無しさん:2013/02/11(月) 18:02:14.28
エスケープ識別子?
645デフォルトの名無しさん:2013/02/11(月) 18:02:15.28
vb.netとvb6とvbscriptでは、それぞれ違うのだから混ぜるとややこしいぞ。
変数に型のないVBScriptだと、intとかstrとかのプレフィックスを付ける
ハンガリアン記法も意味があるね。
646デフォルトの名無しさん:2013/02/11(月) 18:03:43.15
>>643
VB6付属のMSDNからのコピペなのにVB6に搭載されてないとな?つまり付属MSDNはうそつきってことだな
647デフォルトの名無しさん:2013/02/11(月) 18:09:34.58
VB6
新規プロジェクトにフォームモジュールを追加して
Form2という名前をLoopに
Form1のForm_Loadに
[Loop].Show
を書く
実行できる
648デフォルトの名無しさん:2013/02/11(月) 18:11:10.53
はい嘘
649デフォルトの名無しさん:2013/02/11(月) 18:14:50.77
>>646
すまん、勘違いしてるのは俺の方だったw
VB6の時代から予約語をエスケープする機能ってあったんだな。
650デフォルトの名無しさん:2013/02/11(月) 18:18:05.82
人を馬鹿呼ばわりしといて
その程度の謝罪で許すとでも思ってるわけ?
全くお花畑だな
651デフォルトの名無しさん:2013/02/11(月) 18:20:17.48
こんな程度のことで怒るからコピペマンはおバカさんなんだよ
652デフォルトの名無しさん:2013/02/11(月) 18:44:30.34
「ハンガリアン+日本語」変数
ハンガリアンで補完を起動させて日本語込みの変数を入力するのがすき。VB6とかExcelVBAならね
妙なローマ字英語変数よりは日本語変数のほうがましだろ?
653デフォルトの名無しさん:2013/02/11(月) 18:45:33.75
IMEオンにするとか半角英数の入力の邪魔
654デフォルトの名無しさん:2013/02/11(月) 18:50:57.64
日本語プログラミング言語が普及しないのはそこだな
入力が面倒
655デフォルトの名無しさん:2013/02/11(月) 19:20:26.08
>>598
戻り値でエラー返すのか?
Err.raise しないのか?
656デフォルトの名無しさん:2013/02/11(月) 19:21:15.30
それってthrowみたいな挙動なんだっけ
657デフォルトの名無しさん:2013/02/11(月) 19:28:35.30
>>598
ついでに言うと、構造化は関心の分離の一手法。
OOPでやるならErr.Raise だと思うが。

さらに言えば
Try 〜 Catch 〜 Finally のそれぞれを別関数にしてしまう
ってのは、構造化する部分を間違ってると思うぞ。


try{
  //処理
}catch{
  //やるなら、このcatch節の中を別関数に
}finally{
  //やるならこのfinally節の中を別関数に
}
658デフォルトの名無しさん:2013/02/11(月) 19:33:22.75
>>624
マイクロソフトがもう随分前にシステムハンガリアンを
推奨しなくなった。

ある時、Integer型をLong型に変更というので、単にローカル変数かと
思ってたら、それを途中で別関数の引数で渡してたりが延々と続いてて
変更範囲がかなりの量になった。

変数名にプリフィクス使ってたから、変数名も全部変更になった。
これが世に言うシステムハンガリアンの弊害というのを思い知らされた。
659デフォルトの名無しさん:2013/02/11(月) 19:37:27.66
>>654
そうよね。日本語変数使ったりするといちいちIME切り替えたり、
新人が全角スペース入れてるとか。
660デフォルトの名無しさん:2013/02/11(月) 19:38:55.31
Err.raiseってプロシージャの外にエラーを伝えないからOn Error Gotoと大差なくね?
661デフォルトの名無しさん:2013/02/11(月) 19:46:25.49
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
662デフォルトの名無しさん:2013/02/11(月) 19:48:45.33
'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
663デフォルトの名無しさん:2013/02/11(月) 19:50:45.57
>>661はHogeから抜けてCommand1_Clickでエラーを拾えるが
>>662はHoge内でエラーストップしてしまう
664デフォルトの名無しさん:2013/02/11(月) 19:51:17.82
何故なのか
665デフォルトの名無しさん:2013/02/11(月) 19:55:07.41
ユーザー定義エラーは同一モジュール内でしか捕捉できない、なぜなのか
666デフォルトの名無しさん:2013/02/11(月) 20:21:40.62
手元にVB6がないので検証は出来ないのだけど、
exe作って実行したら補足できてないですか?
667デフォルトの名無しさん:2013/02/11(月) 20:34:52.93
ただの設定だろ。
668デフォルトの名無しさん:2013/02/11(月) 20:50:14.18
メニューバーの「ツール」→「オプション」→「全般」のタブ→「エラートラップ」を「エラー処理対象外のエラーで中断」に設定すればよい
669デフォルトの名無しさん:2013/02/11(月) 21:02:18.34
コード編集画面を右クリックで開くポップアップメニューの「設定・解除」でエラートラップを個別に設定するのが普通です
670デフォルトの名無しさん:2013/02/11(月) 21:27:23.37
そんなことも知らないでVB使ってたのか
飽きれるわ
671デフォルトの名無しさん:2013/02/11(月) 21:53:07.14
C言語でさんざんやってた時は、時には戻り値でエラー返してた。
まあ方法的には参照渡しした引数に格納するとかも。
でもVB6ならErr.raise。

そうそう、引数のByRefだが、俺は基本的に引数の中身を変えて
しまうとかしないので、大半はByRefだろうがByValだろうが構わない。

でも確かに、稀に引数の中身を変えてしまう事もある。
で、コメントで明示してはいるんだが、
そういう時だけByRef使うっていうレスもあったので、そこはなるほどなと思った。
コメントに加え、コードでもプログラマの意図を表現できるのは良い。
672デフォルトの名無しさん:2013/02/11(月) 21:58:14.83
Public Sub Swap(a, b)
Dim c
c = a: a = b: b = c
End Sub
673デフォルトの名無しさん:2013/02/11(月) 22:00:56.81
Letを使う場面ってどんな場面?
674デフォルトの名無しさん:2013/02/11(月) 22:03:24.39
CallでByRefとkByValの指定ができるんだな
675デフォルトの名無しさん:2013/02/11(月) 22:03:58.53
>>673
プロパティを定義するとき
Setとカラム位置を合わせたいとき
676デフォルトの名無しさん:2013/02/11(月) 22:06:02.67
DefStrとかDefBoolとかDefIntとかを使ったことある?便利?
677デフォルトの名無しさん:2013/02/11(月) 22:08:17.51
>>675
d
揃えたいとき、可読性を上げるために使うのか
678デフォルトの名無しさん:2013/02/11(月) 22:11:20.17
>>672
そういう時にa と b にByRefをあえて付けるんだよ。
679デフォルトの名無しさん:2013/02/11(月) 22:14:52.11
CallByNameって動的に呼べるメソッド変えられるのな
680デフォルトの名無しさん:2013/02/11(月) 22:16:08.10
>>672
aとbが互いに異なる変数だったりオブジェクトだったりした場合エラーになるじゃん
681デフォルトの名無しさん:2013/02/11(月) 22:20:04.53
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
682デフォルトの名無しさん:2013/02/11(月) 22:37:59.02
>>676
それな、Windowsでるよりも前の時代の
古いBASICとの互換性のための機能。
683デフォルトの名無しさん:2013/02/11(月) 23:07:12.64
フォームって
Form1.Show

Dim f1 = Form1
Set f1 = New Form1
f1.Show

どっちのコードのほうがいいの?
Form1は複数インスタンスは必要なくて1つだけ起動すればいいんだけど
Javaとかだと後者のような書き方だけどVBだとどっちがいいのかわからない
684デフォルトの名無しさん:2013/02/11(月) 23:23:28.81
Enumで厄介なのは大文字小文字が固定されないこと、タイプミスで全部変わっちまう
685デフォルトの名無しさん:2013/02/11(月) 23:28:32.30
標準モジュールにProperty Get単一で書いて定数に見せかけを作るのってありかな?
686デフォルトの名無しさん:2013/02/12(火) 00:59:08.83
>>683
前者はVB2.0時代の互換性のためにのこってるもの
今時(つってもVBはもう古いが)の書き方なら後者
687デフォルトの名無しさん:2013/02/12(火) 01:52:31.82
d
688デフォルトの名無しさん:2013/02/12(火) 02:18:05.07
参照設定からMicrosoft VBScript Regular Expressions 5.5を追加したんだけど
FSOみたいにRegExpも1つのインスタンスを使い回したほうがいいの?それとも正規表現ごとにインスタンスを作るべき?
689デフォルトの名無しさん:2013/02/12(火) 02:50:51.29
ByRefやByValを付けろって自動生成されるプロシージャには付かないけどそれにも自分で書き足すの?
690デフォルトの名無しさん:2013/02/12(火) 11:09:23.04
>>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

でええやろ?
692デフォルトの名無しさん:2013/02/12(火) 12:24:27.92
>>691
If Clng(Format$("2013/1/1", "YYYYMMDD")) < Clng(Format$("2013/1/2", "YYYYMMDD")) Then

ならええよ
693デフォルトの名無しさん:2013/02/12(火) 16:49:52.73
文字列を暗黙の変換で日付にしFormat$で文字列にしClngでLongにして比較する
何がしたいのか解らんコードだ
694デフォルトの名無しさん:2013/02/12(火) 17:16:25.05
If #1/1/2013# < #1/2/2013# Then

日時型リテラルはアメリカカルチャーで書式固定になるから、
見た目わかりづらいのが難点だな。
695デフォルトの名無しさん:2013/02/12(火) 18:35:31.49
>>691
お疲れ様じゃなくてご苦労様と言いたくなるコードだな。
696デフォルトの名無しさん:2013/02/12(火) 18:42:38.27
>>693
本当に何がしたいのか分からんとしたら、頭大丈夫か?と訊ねざるを得ないがな
697デフォルトの名無しさん:2013/02/12(火) 18:45:03.00
>>694
確かに日が先か月が先かわからんな。特にその例だと。
698デフォルトの名無しさん:2013/02/12(火) 18:46:12.31
>>697
その意味では >>692 は可読性が高いとか?
699デフォルトの名無しさん:2013/02/12(火) 18:46:50.49
普通に仕事してる奴なら、世界標準の日付表記くらい解るだろ?
700デフォルトの名無しさん:2013/02/12(火) 18:47:57.98
Date型の場合、デイトシリアルだけを設定したつもりがタイムシリアルが0でない場合があるので
単純比較だと危険があるよ?
701デフォルトの名無しさん:2013/02/12(火) 18:49:21.91
>>699
当たり前に解っているいるつもりが間違えて銀行のオンラインが止まったりするのも事実だけどね
702デフォルトの名無しさん:2013/02/12(火) 19:28:34.49
CDateの話が無いのが気になるのだが。
703デフォルトの名無しさん:2013/02/12(火) 19:31:51.45
>>696
本気で言ってるならお前こそ頭大丈夫?
日付に変換できる事が保証されているなら、両方を日付に変換して比べれば済む話だろ
704デフォルトの名無しさん:2013/02/12(火) 19:34:14.17
>>699
頭では理解してても、日本ではあまりなじみのない表記だからなぁ
うっかりミスはあり得る

>>700
設定するときにか?具体的な例を教えてくれ
DBとかから取得したデータが日付のみだと思ってたら時刻が入ってたって事はあるが
705デフォルトの名無しさん:2013/02/12(火) 19:47:30.32
>>657
いいや、CATCH FINALLYを別関数にするのは間違ってないと言うだけだったら
水掛け論になるだけだからそれを言うのはやめとこうと思うのだけれども、
どうしてCATCH FINALLYを別関数にするのが間違った構造化だと思う?
構造化プログラミングを提唱したエドガーダイクストラはGOTOを嫌悪していた。
CATCH FINALLYを別関数にしなければGOTOを使うしかないわけで、GOTOを使うことは
エドガーさんにトンカチで殴られてもおかしくない所業なわけ。だからこそ>>15のコードは
構造化プログラミングの王道を行くものなわけ。はい論破。
706デフォルトの名無しさん:2013/02/12(火) 19:51:18.37
>>703
国によって月日が逆転する可能性がある表記のままDate型に変換して比較なんでよくやる気になるな。
香港で作ったソフトを日本に持てくるとかありえない話ではないだろ?
707デフォルトの名無しさん:2013/02/12(火) 20:20:04.06
>>705
Err.raise使えよ糞
708デフォルトの名無しさん:2013/02/12(火) 21:26:45.24
>>705
> どうしてCATCH FINALLYを別関数にするのが間違った構造化だと思う?
冗長で意味が無いから。
709デフォルトの名無しさん:2013/02/12(火) 21:35:17.04
>>708
GOTOを除外するという意味がある。それが構造化。
意味があるから冗長ではない。だから>>15のコードはいい構造化。はい論破。
710デフォルトの名無しさん:2013/02/12(火) 21:38:17.54
On Error Goto は Gotoじゃないよ。
ぜんぜん動きが違うでしょ?
711デフォルトの名無しさん:2013/02/12(火) 21:39:31.49
あー、なるほど。on error gotoを
単語だけ見てgotoだと思っていたわけか。
納得した。その勘違いが根本的な会話のズレだ。
712デフォルトの名無しさん:2013/02/12(火) 21:42:37.31
>>710
Gotoて入ってるんだからGotoだよ。Gotoて入ってるんだから。Gotoて入ってるのが
GotoじゃなかったらじゃあGotoてなんなのってなるだろ。Gotoて入ってるいじょう
それがGotoであるのは疑いようのないことでウォーターメロンはメロンじゃないと
いってるようなもの。てんでおかしなことだよ。はい論破。
713デフォルトの名無しさん:2013/02/12(火) 21:44:24.20
>>712
いや、動きが全く違うでしょ?
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そのものじゃないか。
何いってんだ馬鹿。はい論破。
716デフォルトの名無しさん:2013/02/12(火) 21:47:10.36
> On Error GotoはGotoじゃないならなんだと思ってるわけ?
「On Error Goto」でしょw
717デフォルトの名無しさん:2013/02/12(火) 21:47:45.81
>>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

アルコールを飲んじゃいけませんというお触れが出されて
これはエチルアルコールだからアルコールじゃないと言ってお酒を飲んで警官隊に撃ち殺される愚か者。
禁酒令が出される時代に生まれて来なかったことを神様に感謝しろ。はい論破。
721デフォルトの名無しさん:2013/02/12(火) 22:14:12.21
>>609
DateDif使えば一発やん。
722デフォルトの名無しさん:2013/02/12(火) 22:14:43.80
失敗!DateDiffやったorz
723デフォルトの名無しさん:2013/02/12(火) 22:16:15.92
>>711
> あー、

ださ、はい論破。
724デフォルトの名無しさん:2013/02/12(火) 22:30:20.10
> 711 :デフォルトの名無しさん:2013/02/12(火) 21:39:31.49
> あー、なるほど。on error gotoを
> 単語だけ見てgotoだと思っていたわけか。
> 納得した。その勘違いが根本的な会話のズレだ。

この冬一番の早合点バカwwwww
お前の戒名はタラバガニでいんじゃね。論破さんの提案です、はい論破。
725デフォルトの名無しさん:2013/02/12(火) 22:30:43.06
>>685,688,689
726デフォルトの名無しさん:2013/02/12(火) 22:44:15.50
>>725
ナイスピックアップ

>>685
標準モジュールにProperty Getを書いて定数に見せかけるのはありだ。

>>688
インスタンスを複数作るのはコストがかかるので
RegExpは1つのインスタンスを使い回したほうがいい。

>>689
ByRefやByValは自動生成されるプロシージャに自分で書き足すべきだ。

はい論破完遂。
727デフォルトの名無しさん:2013/02/13(水) 02:33:56.49
>>706
それは>>692にも言える話で暗黙変換のぶんだけよりたちが悪いわけですが
あと、Formatかけるのは月日の前ゼロそろえる意味があるとしても
>>692がIf文の中でClngしてる理由を説明してくれないかな
俺には本気でLongで比較する意味がわからん。日付の大小比較なんだから正規化された文字列比較で事はたりる
728デフォルトの名無しさん:2013/02/13(水) 02:43:25.09
そもそも、Goto使ってないのが構造化だってのが間違ってるんだが
729デフォルトの名無しさん:2013/02/13(水) 02:46:10.26
>>685,726
.NETでは定数はコンパイル時に解決されるがプロパティは実行時に解決されるって違いがあったはず
VB6でその二つが同じとみなせるかどうかは知らないが、一応注意しとくに越したことはないかも
730デフォルトの名無しさん:2013/02/13(水) 03:04:42.85
コンパイル後の話じゃなくてコーディングの際の話じゃないの?
731688:2013/02/13(水) 03:18:31.21
>>726
d
732デフォルトの名無しさん:2013/02/13(水) 08:13:26.77
>>727
>日付の大小比較

文字コードの値で比較してはいけないというのは基本原則。
VB6だから大丈夫と思ってるなら他の言語を使わないでね。
迷惑だから。
733デフォルトの名無しさん:2013/02/13(水) 08:15:28.43
論破君が言っている事は半分くらいは正しいし、中には知らなかったことまであって
目から鱗と思う事さえあるが、とんでもない独断と偏見に満ちた見解も半分あるので
どこからどこまでを吸収するかが初心者には難しい所だな。
734デフォルトの名無しさん:2013/02/13(水) 10:36:18.95
>>732
ごめん、何言ってるのかわからない
735デフォルトの名無しさん:2013/02/13(水) 11:13:16.73
#Dateリテラルのことも、たまには思い出してやってください#
736デフォルトの名無しさん:2013/02/13(水) 14:27:23.96
>>732
例えば、データベースなんかから取得した日付文字列リテラルを比較するとき、いちいち
日付オブジェクトとかに変換してから比較してるの?
737デフォルトの名無しさん:2013/02/13(水) 15:29:30.91
>>736
データベースから取得したらリテラルじゃないだろう。

文字列の大小が数値の大小と同じだと思ってはいけない。

>>692は左と右の桁数が同じだから、文字列の大小と
数値の大小の結果が同じになる、特殊なケース。

特殊なケースだからといって、文字列の大小を
数値の大小の代わりに使っていると、間違いが起こるよ。

桁数の違う数値を文字列にして、比較してみると良い。
?"2001" < "20000"
?2001 < 20000
738デフォルトの名無しさん:2013/02/13(水) 15:32:44.67
CDateしてから比較するよ
739デフォルトの名無しさん:2013/02/13(水) 15:42:12.35
>>737
> データベースから取得したらリテラルじゃないだろう。

リテラルじゃない変数に入れれば何かのオブジェクトになる場合もあるだろうけど、
文字列リテラルに変換される言語/ミドルウェアも多い。
レコードセットが、integerとstringの連想配列の配列になるとか。

> >>692は左と右の桁数が同じだから、文字列の大小と
> 数値の大小の結果が同じになる、特殊なケース。

何言ってるの?
比較できるよう、同じフォーマットに揃えたんだろうが。
740デフォルトの名無しさん:2013/02/13(水) 15:44:54.11
つか、
> 正規化された文字列比較
の「正規化」の意味がわからないのか?
741デフォルトの名無しさん:2013/02/13(水) 16:01:32.90
日付オブジェクトw
VBにそんなオブジェクトあるんだ。初めて聞いたよw
742デフォルトの名無しさん:2013/02/13(水) 16:04:25.21
>>741
言語一般の話をしてるんだけど
743デフォルトの名無しさん:2013/02/13(水) 16:05:49.85
えー
マジでVB厨はCDateしないの?
744デフォルトの名無しさん:2013/02/13(水) 16:09:10.37
>>737だけ、一人レベルが低い
745デフォルトの名無しさん:2013/02/13(水) 16:12:03.83
>>743
なんでCDateするの?
746デフォルトの名無しさん:2013/02/13(水) 16:14:13.30
>>742
VBスレなのだが何か?
747デフォルトの名無しさん:2013/02/13(水) 16:14:16.38
リテラルの意味がおかしい人が若干名
748デフォルトの名無しさん:2013/02/13(水) 16:14:16.71
>>743
CDateだと、"YYYY/HH/MM HH:MM:SS"にならないから滅多に使わない。
749デフォルトの名無しさん:2013/02/13(水) 16:15:21.26
>>746
俺じゃなくて>>732に言え
750デフォルトの名無しさん:2013/02/13(水) 16:17:01.53
YYYY/HH/MMってなんだよw
751デフォルトの名無しさん:2013/02/13(水) 16:19:18.52
なんか話がおかしな方向に行きそうなのでまとめ。

>>727
> 日付の大小比較なんだから正規化された文字列比較で事はたりる

に対して、>>732が文字列比較をするなという主張をしたので、文字列比較でいいだろというのが俺の主張。
(もちろん、>>727の主張でもある)
752デフォルトの名無しさん:2013/02/13(水) 16:20:55.35
さらに言えば、俺もClngする意味がわからんし、CDateして比較するのも全然OK。
753デフォルトの名無しさん:2013/02/13(水) 16:23:06.29
>>734
コンピューター言語を語る前に日本語からだな。
754デフォルトの名無しさん:2013/02/13(水) 16:24:37.75
>>752
CDateでいいならClngでもいいんじゃね?
755デフォルトの名無しさん:2013/02/13(水) 16:25:55.28
>>751

A > a 、 a > A どちらもあり得る。

1 > 2 もあり得る。
756デフォルトの名無しさん:2013/02/13(水) 16:27:06.02
>>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"))
してから比較する意味がわからないということ。
757デフォルトの名無しさん:2013/02/13(水) 16:29:16.91
>>755
正規化した日付文字列を文字列比較してはいけない言語を教えてくれよ。
758デフォルトの名無しさん:2013/02/13(水) 16:37:11.60
日付を文字列比較とかキモイわー
CDateが最高
759デフォルトの名無しさん:2013/02/13(水) 16:48:27.44
ってか日付をString型で扱うシステムが糞。
素直にDate型にしておけばいろんな恩恵が得られるのに。
画面に出力させたり、ファイルに出力する直前に文字列に変換すれば楽なのに。
760デフォルトの名無しさん:2013/02/13(水) 16:49:11.51
DateはDoubleであって、yy/mm/ddのような書式を持っているわけではない。
Stringで入力されたら、すぐにDateに変換すべき。
Stringのまま渡したり保存するから、おかしなことになる。
コード内なら "2013/1/1" などと書かずに #2013/1/1# と書くべき。
761デフォルトの名無しさん:2013/02/13(水) 16:51:45.10
>>759
通信なんかもオブジェクトをやり取りする主義なの?
762デフォルトの名無しさん:2013/02/13(水) 16:53:51.35
通信はインターフェイスだからファイルや画面と同じ扱いでしょ
763デフォルトの名無しさん:2013/02/13(水) 16:56:42.67
DBから日付データを取得して画面に表示するだけなら、CDateが介入する余地はないな
764デフォルトの名無しさん:2013/02/13(水) 17:10:05.45
数回コピーするだけでもDateに変換する価値があるよ
765デフォルトの名無しさん:2013/02/13(水) 17:10:15.39
DBにはDate型で入ってて画面に表示するときに文字列になるってのが
一番自然でしょ?
なんでそう屁理屈ばかりこねるかなぁ。
766デフォルトの名無しさん:2013/02/13(水) 17:28:15.70
画面で入力した文字列をDBに登録するときに、いちいちCDateを経由したがる理由がわからん
767デフォルトの名無しさん:2013/02/13(水) 17:42:35.06
文字列のまま登録したいほうが意味わからんw
おいおいVB厨ってやばくね?
768デフォルトの名無しさん:2013/02/13(水) 17:44:00.08
ひょっとして、DBのDate型のデータを取得すると、日付型になると思ってるのか
769デフォルトの名無しさん:2013/02/13(水) 17:44:36.79
>>767
え?
君は文字列で登録しないの?
770デフォルトの名無しさん:2013/02/13(水) 17:57:24.43
しねーよw
771デフォルトの名無しさん:2013/02/13(水) 17:58:35.83
>>770
んじゃ、どうやって登録するのかコードで教えてよ
772デフォルトの名無しさん:2013/02/13(水) 18:02:02.40
>>771
え?
まさかパラメータクエリで登録しないのか?
773デフォルトの名無しさん:2013/02/13(水) 18:07:34.44
>>772
いいから、コード示してくれよ
774デフォルトの名無しさん:2013/02/13(水) 18:11:24.15
>>767
やばくはないだろ。ミックさんも日付は文字列であつかうべきだって言ってる。
ミックさんが言うんだったらそうなんだろ。

NULL撲滅委員会
http://www.geocities.jp/mickindex/database/db_getout_null.html

> そのためにも、日付の列は文字型で宣言しておくべきです。(確実に NOT NULL制約を付けられる場合なら、数値型でもかまいません。)
> ほとんどの DBMS が日付型を用意していますが、私は個人的に使うメリットを感じません。
> 暦日計算の場合など、必要なときだけキャストしています。
775デフォルトの名無しさん:2013/02/13(水) 18:25:03.03
>>773
嫌だね。めんどくさい。
776デフォルトの名無しさん:2013/02/13(水) 18:26:50.68
逃げたw
777デフォルトの名無しさん:2013/02/13(水) 18:28:41.48
予想通り過ぎてワラタw
778デフォルトの名無しさん:2013/02/13(水) 18:55:50.88
>>774
あくまで個人的な見解でしょw
こういうことでミックさんを盾にするのは良くないと思う。
これがマイクロソフトとかオラクルとかが言っているなら納得するけど。
779デフォルトの名無しさん:2013/02/13(水) 19:10:02.32
日付を文字列として扱うのがベストとかいう悍ましい言語のスレはここですか?
780デフォルトの名無しさん:2013/02/13(水) 19:15:06.71
>>779
> 悍ましい
読めないよ
781デフォルトの名無しさん:2013/02/13(水) 19:19:26.35
>>http://toro.2ch.net/test/read.cgi/tech/1359721249/542
>ボイルシャールの法則を知っていれば気圧でお湯にでも水にでもなるって事知らないの?はい論破

気圧で変化するのは沸点。
「 お湯にでも水にでもなる 」←文脈上、お湯と水を比較しているが、これは化学的な用語でない。

>>http://toro.2ch.net/test/read.cgi/tech/1359721249/430
>C#やJavaにはString型の
>遅さを補うためにStringBuilderクラスが用意されているがVBには
>そういうのがない。

あります。MIDステートメント。

>>http://toro.2ch.net/test/read.cgi/tech/1359721249/555
>音が聞こえることを耳が聞こえるというのと同じことで

前者は、聴覚刺激の入力表現であり、後者は聴覚能力の表現です。
ソフト屋らしく、NOT表現すると「耳が聞こえない」→聴覚能力です。


>>http://toro.2ch.net/test/read.cgi/tech/1359721249/598
>戻り値でエラーを返せば余裕だろ。
782デフォルトの名無しさん:2013/02/13(水) 22:35:03.50
>>766
画面からの入力で、ありえねー日付(例:11月31日)とか、
閏年とか、チェックするにしても何にしても、
一旦はDate型にするだろ?

だったらそのままDBに格納すりゃいいんじゃね?
まさか何もせずに未チェックで文字列のままDBに登録なんてしないよね?
783デフォルトの名無しさん:2013/02/13(水) 22:37:14.44
>>782
とにかく文字列で日付比較とか愚の骨頂と言うか頭が足りないとしか言えないね。
784デフォルトの名無しさん:2013/02/13(水) 22:57:01.59
俺は一応、画面からの日付入力 → CDateでDate型に
 → それを入力文字列の年月日時分秒 とそれぞれ比較して入力値をチェック

DBのテーブルでは、日付は基本的にdatetimeとかのそれ用のデータ型。
登録は基本的にSQL文を利用。
SQL文を作成するところで、Format関数使って文字列に戻してる。

日付として正しいかどうかわかんない日付表示文字列をそのままDB登録するとか
意味わからん。どうしても一旦はDate型にするだろ。
785デフォルトの名無しさん:2013/02/13(水) 23:08:55.06
分からない人は型システムで一度調べてみるといい
日付を意味するデータは基本Date、まれにString
Nullというか未指定を許容する割に日付として比較・演算しないとかね
786デフォルトの名無しさん:2013/02/13(水) 23:10:42.28
文字列で日付比較は有り得ないでしょう
VB6に限らずですが
787デフォルトの名無しさん:2013/02/13(水) 23:11:46.16
SQL文での日付の取り扱いと勘違いしてるアホもいるしなwwww
788デフォルトの名無しさん:2013/02/13(水) 23:12:53.68
日付型にまず変換するよね
789デフォルトの名無しさん:2013/02/13(水) 23:13:57.03
御意
790デフォルトの名無しさん:2013/02/13(水) 23:40:08.53
日付を文字列で管理するっていうのは何かインターフェースの処理と内部の処理を分けたことがないんだろうなと。
内部の処理に都合のいいデータを採用しないと、内部処理として重要じゃない型変換なんていう処理が増える。
これをやると、型変換を忘れたりとかバグを仕込みやすくなる。

型変換なんてまさしくインターフェースの処理の役割でしょ。
791デフォルトの名無しさん:2013/02/14(木) 00:43:41.60
>>785
プログラミング言語全般の話なのか、特定(VB)の言語の話なのか
まあ、どっちの話だとしてもおかしな事いってるが
792デフォルトの名無しさん:2013/02/14(木) 04:12:34.92
>>784
文字にしてSQLで日付渡すと、当然DB側の日付解釈によって判断される
DB側の日付リテラル形式ちゃんと把握してるか?思わぬバグの元だぞ
793デフォルトの名無しさん:2013/02/14(木) 06:27:12.65
Date型で時分秒だけ0クリアするのはどうするの
794デフォルトの名無しさん:2013/02/14(木) 06:52:43.29
>>793
丸投げかよ
795デフォルトの名無しさん:2013/02/14(木) 08:37:20.19
manko = Cdate(Format(manko,"yyyy/mm/dd")+" 0:0:0)
796デフォルトの名無しさん:2013/02/14(木) 09:20:58.16
>>793
Text2 = Int(CDate(Text1))
797デフォルトの名無しさん:2013/02/14(木) 10:32:23.49
>>792
じゃ、CSVのインポートとかできないよね
798デフォルトの名無しさん:2013/02/14(木) 10:38:48.47
>>782
> だったらそのままDBに格納すりゃいいんじゃね?

だからさー、そのままDBに格納するコード書いてよって
799デフォルトの名無しさん:2013/02/14(木) 10:39:38.18
たぶんネタとして楽しんでるんだろうけど
マジなら本当にやばいなw
800デフォルトの名無しさん:2013/02/14(木) 10:45:10.03
>>799
ですよねーw
801デフォルトの名無しさん:2013/02/14(木) 10:46:44.61
>>799
いやいや、マジですから
802デフォルトの名無しさん:2013/02/14(木) 10:47:47.83
やばいよ やばいよーっ!
803デフォルトの名無しさん:2013/02/14(木) 10:51:16.44
で、何がやないか書けない
804デフォルトの名無しさん:2013/02/14(木) 10:52:50.63
やない
805デフォルトの名無しさん:2013/02/14(木) 10:59:15.92
画面で入力したり、外部から(例えば通信で)入力された日付型文字列の妥当性をチェックするとき、
一体どういう関数を書いてるのかな。
例えば、こういう関数が考えられる。
Public Function IsValidDate(ByVal val as String) as Boolen
  ' 実行時例外は出さない
End Function

日付型に変換する派の人は、どういう妥当性チェックするの?
806デフォルトの名無しさん:2013/02/14(木) 11:03:12.35
>>797
日付として正しくないものまでインポートしたいってこと?
それならそのデータは日付ではなくてただのメモじゃないか?
807デフォルトの名無しさん:2013/02/14(木) 11:04:43.95
通常通信プロトコルで日付のフォーマット決めるだろ?前提が適切でないわ。
808デフォルトの名無しさん:2013/02/14(木) 11:09:00.76
>>807
どちらかというと、前提をおかしくしてるのは君らの方なんだけど。
そもそもは、normalizeされた日付文字列を文字列比較していいかどうかって話だ。
で、文字列比較するなという奴が現れて混乱してる。
比較可能なんだから、わざわざDate型にする必要無いよねってこと。
で、さらに言うと、Date型が要求されないなら、文字列型のままで日付を扱っても問題ないよってこと。
809デフォルトの名無しさん:2013/02/14(木) 11:10:07.08
>>807
つか、日付のフォーマットが決まってたら、妥当性チェックしないの?
810デフォルトの名無しさん:2013/02/14(木) 11:19:19.57
>>809
プロトコルで規定されているなら妥当性はチェックしない。
まあ前提として日付のNullは許可しないというのがあるが。
811デフォルトの名無しさん:2013/02/14(木) 11:20:58.06
>文字列型のままで日付を扱っても問題ない

問題無かったら議論になってないだろうに。過去を遡って状況を把握してから発言してね。
812デフォルトの名無しさん:2013/02/14(木) 11:23:34.30
そのデータの意味が日付なら日付型に変換して比較したほうがいいよ。
一桁の数字を比較するときに文字列のまま比較するのかと一緒だけど、
たぶん君はするんだろうな。
813デフォルトの名無しさん:2013/02/14(木) 11:27:22.57
ようするに意味とか関係なくとにかく動けばいいでしょ?
っていう考え方なんだよね。
VBだけやってる人に多い。
814デフォルトの名無しさん:2013/02/14(木) 11:28:44.86
>日付型に変換して比較したほうがいいよ。

御意
815デフォルトの名無しさん:2013/02/14(木) 11:29:26.74
>VBだけやってる人に多い。

御意
816デフォルトの名無しさん:2013/02/14(木) 11:30:27.33
>>810
> プロトコルで規定されているなら妥当性はチェックしない。
妥当でない文字列がわたってきたために、アプリケーションやサーバプロセスが死にますが、
それは相手のせいだからうちは関係有りません、ってことですね。

>>811
> 問題無かったら議論になってないだろうに。過去を遡って状況を把握してから発言してね。
いや、俺最初からいるけど。>>751は俺。

>>812
> 一桁の数字を比較するときに文字列のまま比較するのかと一緒だけど、
全然違う。normalized date stringだっていってるでしょ。
817デフォルトの名無しさん:2013/02/14(木) 11:32:34.26
秀逸なコードとはその前提が如何様なものであっても同じ振る舞いをするものだ。
文字列のバイナリ値がどのような前提でもである。
818デフォルトの名無しさん:2013/02/14(木) 11:33:33.94
違わないでしょ。文字列で比較ってことは文字コードで比較してるんだから。
819デフォルトの名無しさん:2013/02/14(木) 11:34:51.24
もうめんどくさいから、normalized date stringを文字列比較してはいけない理由を明言した人か、
Validationをどうやってるのかコードで示した人以外はコメントしないよ。

>>810
お前は見逃してやるけど、いつでもvalidationしとけ、アホ。
820デフォルトの名無しさん:2013/02/14(木) 11:35:24.38
>それは相手のせいだからうちは関係有りません、ってことですね

プロトコル、いわゆる規約の意味がわかっていない大原の専門学校生のようなノリだな。

>いや、俺最初からいるけど

最初からいてそれかい?

>normalized date string

正規化したところで日付は日付、文字は文字だがな。
821デフォルトの名無しさん:2013/02/14(木) 11:35:57.47
>>818
何故駄目なのかは言えないんだ。
822デフォルトの名無しさん:2013/02/14(木) 11:37:11.60
>>820
> プロトコル、いわゆる規約の意味がわかっていない大原の専門学校生のようなノリだな。

コンビニのATMが止まったのは何故でしたっけ?

お前みたいなプログラマがいるからだよ。
823デフォルトの名無しさん:2013/02/14(木) 11:38:49.63
つまり前提条件としてしっかりと取り決めをしておくことにより
プログラムで無駄なチェックルーティンを書くのを省いているんだがなぁ
専門学校では教えないのか?w

動くだけのプログラムと人につかってもらうプログラムとでは
エラー処理のコード量が全く違うんだ罠。
エラー処理のコード量の方が実アプリのコード量より多いなんて事はザラ。
専門学校生の作るプログラムはザルだがw
824デフォルトの名無しさん:2013/02/14(木) 11:39:58.63
>>823
> つまり前提条件としてしっかりと取り決めをしておくことにより
> プログラムで無駄なチェックルーティンを書くのを省いているんだがなぁ

つまり、ATMがストップしたけど、それは全部相手が悪いってことですね。
825デフォルトの名無しさん:2013/02/14(木) 11:40:56.34
>コンビニのATMが止まったのは何故でしたっけ?

それ、プロトコルを信用したために起こった事故じゃないだろ?論理が破綻してるぞ大原くんwww
826デフォルトの名無しさん:2013/02/14(木) 11:41:36.43
>>821
だからー。それは動くんだからいいだろ?っていう思想だろ。
比較に使ってる文字コードが0123456789の順で割り当てられてる
前提じゃん。まあそうじゃないことなんてないだろうけど
だからって文字列で比較するってことは、動けば問題ないだろ
って言ってるのと同じなんだよ。
827デフォルトの名無しさん:2013/02/14(木) 11:43:14.67
COBOL>おまえら大変だな。
828デフォルトの名無しさん:2013/02/14(木) 11:43:16.70
だいたい正規化された日付文字列ってどういう事だよ
829デフォルトの名無しさん:2013/02/14(木) 11:43:19.72
>つまり、ATMがストップしたけど

ATMの問題はプロトコルで取り決められた日付フォーマットのチェックを行わなかったために起こったの???
830デフォルトの名無しさん:2013/02/14(木) 11:44:34.58
>>825
微妙に主張を変えるなよ。

> プロトコルで規定されているなら妥当性はチェックしない

んだろ?

ATMのシステムではプロトコルが規定されてなかったのか?
規定されているのに落ちた。

で、落ちたのは誰のせいなの?
831デフォルトの名無しさん:2013/02/14(木) 11:46:04.81
>>826
だからさ、プロトコルで決められた日付に関してフォーマットをチェックする必要はないのだよ。
キミはプロトコルの意味をわかっていない。
BSCやHDLCなどコンピュータで処理される前提の通信制御のファームウェアを長年書いていたけど
プロトコルで規定された範囲のデータフォーマットをチェックした事なんて一度もないよ。
832デフォルトの名無しさん:2013/02/14(木) 11:46:14.91
>>826
> だからって文字列で比較するってことは、動けば問題ないだろ
> って言ってるのと同じなんだよ。

えっと、じゃぁ文字列データを辞書順に並べ替えるのはどうするんでしょうか。
833デフォルトの名無しさん:2013/02/14(木) 11:47:03.51
>>831
> BSCやHDLCなどコンピュータで処理される前提の通信制御のファームウェアを長年書いていたけど
> プロトコルで規定された範囲のデータフォーマットをチェックした事なんて一度もないよ。

で、サーバが落ちたら誰のせいなの?
834デフォルトの名無しさん:2013/02/14(木) 11:47:05.34
>>830
なんか滅茶苦茶な展開だな。頭混乱してるだろ?頭冷やして来いよ

ATM坊やw
835デフォルトの名無しさん:2013/02/14(木) 11:48:05.53
>>832
おいおい。それは文字列データの話だろう。
日付データの話じゃないじゃん。もうだめだ。全然だめだ。
836デフォルトの名無しさん:2013/02/14(木) 11:48:07.89
>>833
誰のせいとかもうね

いつも責任の擦り付け合いばかりしてるからそういう発想になるんだろ?(笑)
837デフォルトの名無しさん:2013/02/14(木) 11:50:02.44
>>835
え?"1"と"2"を比較すると信頼性がないんじゃなかったの?
"a"と"b"ならいいわけ?

>>836
> 誰のせいとかもうね

つまり、うちではデータのチェックはしてませんでしたが、悪いのはあなたですってことですね。
838デフォルトの名無しさん:2013/02/14(木) 11:51:41.63
>>837
専門学校でもう一度おそわってこい
839デフォルトの名無しさん:2013/02/14(木) 11:52:25.79
>>828
> だいたい正規化された日付文字列ってどういう事だよ

マジレスしとくが、正規化とはある規則に則ったフォーマットに変換すること。
日付なら、"YYYY-MM-DD"とか"YYYY/MM/DD"とか"YYYYMMDD"とか。
840デフォルトの名無しさん:2013/02/14(木) 11:52:52.31
>>838
つまり、何がどうして駄目なのかは言えませんってことでいいな。
もういいよ。
841デフォルトの名無しさん:2013/02/14(木) 11:54:49.12
>>837
いやだからー。文字列データを並べ替えるなら文字コード順になるでしょ。
日付を並べ替えたときに文字コード順でいいのかよって話だよ。
うそー。なんでこんなに頭固いんだろう。
842デフォルトの名無しさん:2013/02/14(木) 11:55:29.50
>>841
> 日付を並べ替えたときに文字コード順でいいのかよって話だよ。

何故駄目なのかを言え。
何遍言わせるんだ。
843デフォルトの名無しさん:2013/02/14(木) 11:59:00.32
>>842
だからー。結果的にはダメじゃないんだよ。正常に動くんだよ。
文字コードが0123456789の順になってるからな。
だけど動けばいいのかって話なんだよ。なぜこれでわからないのか
わからないんだよ。勘弁してくれ。
844デフォルトの名無しさん:2013/02/14(木) 12:00:57.66
>>843
> だからー。結果的にはダメじゃないんだよ。正常に動くんだよ。
> 文字コードが0123456789の順になってるからな。

文字コードがABC順になっているから、文字列をソートするときに文字列比較でいいのに比べて、
normalized date stringを文字列比較すると何故駄目なのかを言え。
845デフォルトの名無しさん:2013/02/14(木) 12:02:52.88
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
846デフォルトの名無しさん:2013/02/14(木) 12:05:53.49
>>839
ありがとう。
だけど、その正規形が大小比較可能であることはどこで保証されてるの?
847デフォルトの名無しさん:2013/02/14(木) 12:08:58.59
>>844
それはabc順に並べてるんじゃなくて
文字コード順にならべてるんだろ
だからそれはただの結果なんだよ
848デフォルトの名無しさん:2013/02/14(木) 12:22:18.13
>>844
あ、そうだ
例えばさ16進数の文字列があったとするじゃん
それも、文字列のまま比較する?
まあするんだろうけど
違和感ない?やっぱないのかなー
849デフォルトの名無しさん:2013/02/14(木) 12:38:51.67
16進数の文字列ってなんだよ?www
850デフォルトの名無しさん:2013/02/14(木) 12:41:04.48
"01CD"とか"1E73"とかこういうの。
日付と同じことでしょ。
851デフォルトの名無しさん:2013/02/14(木) 12:42:44.05
日付の基準日時って1970/01/01だっけ?
852デフォルトの名無しさん:2013/02/14(木) 12:50:17.67
文字列大好きな人は、Formatに相当する関数を
自分で作ってみると良いよ。
853デフォルトの名無しさん:2013/02/14(木) 12:56:59.99
>"01CD"とか"1E73"とかこういうの。

それって数字とアルファベットが混在する文字列とどうくべつすればええの?
854デフォルトの名無しさん:2013/02/14(木) 12:57:18.66
?year(0) & "/" & month(0) & "/" & day(0)
1899/12/30
855デフォルトの名無しさん:2013/02/14(木) 13:04:03.61
>>853
何を言ってるんだ?日付も同じことだろ。区別する必要などない。
規定のフォーマットであることは確認済みの後の話だ。
856デフォルトの名無しさん:2013/02/14(木) 13:12:16.04
>>855
日付は規則性があるけどそっちは並び順がランダムじゃん
857デフォルトの名無しさん:2013/02/14(木) 13:14:41.17
>>856
並び順?ん?桁数が同じならどうでもいいだろ?
え?マジで意味がわからないんだけど。
858デフォルトの名無しさん:2013/02/14(木) 13:18:01.10
適当に読んでるから間違ってるかもだけど
>通信制御のファームウェアを長年書いていたけど
の人が文字列比較で問題ないっていってるんだよね?
たぶんこういう人は小さく軽く作らないといけなかったり
するだろうから無駄は全部省きたいって考えなんだろう。
規定のフォーマットの文字列を大小比較して済むなら
それで行くと。でもそれは本来あったほうがいい処理を
省いた結果なんだと思うね。
859デフォルトの名無しさん:2013/02/14(木) 13:33:13.06
>たぶんこういう人は小さく軽く作らないといけなかったり
>するだろうから無駄は全部省きたいって考えなんだろう
文字列で処理するほうが何十倍も無駄なんだが・・・。
860デフォルトの名無しさん:2013/02/14(木) 13:36:00.38
>>859
そうかい。じゃあ無駄を省きたくて文字列比較してるっていう
のは違うんだね。そうするとますますわからなくなるな。
861デフォルトの名無しさん:2013/02/14(木) 13:44:26.78
何十倍も無駄なのに文字列で比較するメリット・・・・
うむむ。何だろう。ソースが短くて済むくらい?
いや、これはある意味無駄を省いたことになってしまう。
いや、そうだ、ソースの無駄が省けるといってたんだ。最初から。
やはり結果がOKなら省けるものは省こうと。そういうことだろう。
要するに動けばOK。ってことか。
862デフォルトの名無しさん:2013/02/14(木) 13:58:28.47
伯父列なのかそれ以外の数値や日付なのかってのは煩わしいから
基本的に比較、格納する際には本来の型に直してからってのがある種の癖になるよねうん
ところで1970ry
863デフォルトの名無しさん:2013/02/14(木) 13:58:29.86
というか本当に文字列処理のほうが何十倍も無駄があるのか?
文字列を日付に変換するなら結局文字列を舐めていることには
変わりないから日付に変換するほうが重いのではないか?
俺もCで組むなら面倒だから文字列比較で済ませたいと思うのは確か。
だけどそれはただの横着である。
864デフォルトの名無しさん:2013/02/14(木) 14:33:35.96
また話が変な方にずれてる。

比較可能な文字列が存在したときに、それが「日付」であるが故に文字列比較では駄目だと主張する奴がいて、
駄目だというなら何故駄目なのかを問うてる。

以下のCのコード:
int year1 = 2001;
int year2 = 2002;
if (year1 > year2) { }

この比較が駄目なのかOKなのか、駄目なら何故駄目なのか答えて欲しい。

弥生と五月は単純には比較できないが、3と5なら比較可能。"03"と"05"でも比較可能。
865デフォルトの名無しさん:2013/02/14(木) 14:35:39.90
プロトコルも教えない専門学校大原って・・・www
866デフォルトの名無しさん:2013/02/14(木) 14:37:03.52
>>864
VBスレでCの構文で書いている時点でアウト。

出直して来い。
867デフォルトの名無しさん:2013/02/14(木) 14:37:34.37
>>848
> 例えばさ16進数の文字列があったとするじゃん
> それも、文字列のまま比較する?

それが正規化された文字列で、ただ単純に比較するだけならわざわざ数値化せずに比較する。
16進文字列は、それを文字列として比較しても大小比較ができるような体系になっているからだ。
868デフォルトの名無しさん:2013/02/14(木) 14:37:35.58
>>864
ずれてるのは貴様www
869デフォルトの名無しさん:2013/02/14(木) 14:39:59.36
さて、組み込み型として、日付型や日付オブジェクトがない言語の場合、一体全体どうやって日付を
比較すればいいのだろうか。

「結果としてたまたま動く」ものしか作れないのだろうか。
870デフォルトの名無しさん:2013/02/14(木) 14:40:02.15
ちょっとやってみた。

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文字くらいになるし、
保存・通信にも適してるとは言えないな。
871デフォルトの名無しさん:2013/02/14(木) 14:45:38.65
>>867
マジですか?そうですか。
なんかもう無理な気がするので、俺はあきらめます。
872デフォルトの名無しさん:2013/02/14(木) 14:48:38.70
>>871
つまり、駄目な理由を言えないってことですね。
873デフォルトの名無しさん:2013/02/14(木) 14:50:24.55
>>870
> 保存・通信にも適してるとは言えないな。

通信フォーマットでは、一般に文字列が好まれる。
異なるアーキテクチャ間で使われるのが前提であればなおさら。
通信では、日付も文字列が普通だよ。
874デフォルトの名無しさん:2013/02/14(木) 14:56:36.69
文字列で比較すると危険とかいってるやつは、文字コードも把握してないのか?
たまたま動くんじゃなくて、ちゃんと動く事を把握したうえで正規化した文字列比較で事足りるって言ってるんだぞ
文字列比較が"9">"0"になる言語や環境があれば、そこでは成り立たないのは当たり前
VBでそれが起こりうるなら有用な意見だが、そうじゃないならただのいちゃもん
相手する必要ない
875デフォルトの名無しさん:2013/02/14(木) 14:58:32.21
>>874
ああ、"9"<"0"な
876デフォルトの名無しさん:2013/02/14(木) 14:58:50.76
>>871
md5sumを比較するとき、どうやってんの?
16進文字列だから、数値変換して比較するの?
877デフォルトの名無しさん:2013/02/14(木) 14:58:55.62
>たまたま動くんじゃなくて、ちゃんと動く事を把握した

それはお前にとって都合のいい条件下でって事だろ?
相変わらず馬鹿丸出しだな。
878デフォルトの名無しさん:2013/02/14(木) 15:00:19.21
>>872
はい。それでいいです。
とても無駄な時間をすごしてしまい後悔してます。
879デフォルトの名無しさん:2013/02/14(木) 15:01:02.95
"9" < "0"

"09" = "90"

"0376" = "3760" = "6307"
880デフォルトの名無しさん:2013/02/14(木) 15:08:35.39
>>877
それが俺にとって都合が良い条件だっていうなら
うまくいかない条件を出してみろ
ただし、当然VBの範囲内だぞ、ここVBスレなんだから
VBでそれが起こりうるなら有用な意見として拝聴しよう


正規化をうまく比較できない状態にするとかいうなよ
881デフォルトの名無しさん:2013/02/14(木) 15:13:08.94
>>876
お前、16進数値(の表記)と16進文字列の区別ついてないだろ
いま問題になってるのは表現形式の問題じゃいぞ
882デフォルトの名無しさん:2013/02/14(木) 15:14:38.69
>>881
ごちゃごちゃ言わずに、md5sumを比較するときどうやるのか言え。
883デフォルトの名無しさん:2013/02/14(木) 15:15:56.17
>>882
あーあ、論破されてやんのwww
884デフォルトの名無しさん:2013/02/14(木) 15:16:49.45
>>883
答えられないなら、おとなしくしとけよ。
885デフォルトの名無しさん:2013/02/14(木) 15:19:29.57
>>884
えっ!俺関係ないんだけどwwww
886デフォルトの名無しさん:2013/02/14(木) 15:21:26.17
>>882
まず、md5sumは数字なのに文字列で持ってるって前提がおかしいけど
本来の数字もってればそれで比較するにきまってるだろ

でも文字列でしか持ってないなら、文字列から数字に戻すか、文字列どうして比較するかしかない
適切に正規化されている前提なら数字に戻す必要はないので文字列どうしで比較するのは妥当
887デフォルトの名無しさん:2013/02/14(木) 15:24:25.72
>>886
> まず、md5sumは数字なのに文字列で持ってるって前提がおかしいけど
えっ、普通は文字列で与えられる情報なんだけど。

> でも文字列でしか持ってないなら、文字列から数字に戻すか、文字列どうして比較するかしかない
16進文字列なんだから、数値化しようと思えばできるよね。

> 適切に正規化されている前提なら数字に戻す必要はないので文字列どうしで比較するのは妥当
md5sumを文字列比較でOKとするなら、なぜ日付文字列は駄目なんでしょうか。
888デフォルトの名無しさん:2013/02/14(木) 15:32:36.71
>>887
>>881
文字列で与えられる情報なのは、文字にしてるから
つまり16進数値の表記

誰と勘違いしてるのか知らんが俺は日付文字列の比較はOK派だぞ
889デフォルトの名無しさん:2013/02/14(木) 15:36:33.98
>>888
> 誰と勘違いしてるのか知らんが俺は日付文字列の比較はOK派だぞ
あ、そうなの?
16進文字列の比較は文字列比較でOKだけど、日付文字列を文字列比較するのはNGという奴かと思ったよ。
890デフォルトの名無しさん:2013/02/14(木) 15:52:08.93
ファミコンの桃鉄で、クレジットカードで借金増やしまくると、
あるときマイナスが表示できなくなって、プラスになる
というのを思い出した。
銀行の貯金が文字列で保存されてたら同じことできるかな!
891デフォルトの名無しさん:2013/02/14(木) 15:56:51.17
md5sumってハッシュ値でしょ?
意味的には数値というより文字列だと思うんだけど。
たぶんここら辺でもかみ合わないんだろうなぁ。まあいいけど。
892デフォルトの名無しさん:2013/02/14(木) 16:01:41.82
VBプログラマはデータを文字列表現された形式で扱うのが普通なのか?
893デフォルトの名無しさん:2013/02/14(木) 16:04:50.69
>>892
そいつと一緒にしないでくれ。頼む!
894デフォルトの名無しさん:2013/02/14(木) 16:06:57.59
ハッシュ値の意味は文字列だという剛の者があらわれたと聞いて
895デフォルトの名無しさん:2013/02/14(木) 16:10:22.22
ハッシュにしてもチェックサムにしても、計算で求めるんだぞ
数値とそれを表記した文字(列)と文字列の区別ついてないやつ多すぎ
896デフォルトの名無しさん:2013/02/14(木) 16:12:00.08
なんだかなぁw
897デフォルトの名無しさん:2013/02/14(木) 16:15:29.37
>>892
Date型にする必要がない場合は、日付を表す文字列をDate型に変換せずに扱う、というのが正確な表現。
もちろん、Date型にする必要がある場合はする。
そして、ただ比較するだけなら、Date型にする必要は無い。
898デフォルトの名無しさん:2013/02/14(木) 16:32:28.22
>>897
それ前提として日付が適切に正規化されている場合、な
日付の正規化はVBなら1回日付型にするのが楽

正規化するのに日付変換してるのに気付いてないやつ
正規化された文字列でも日付比較しちゃ駄目と言うやつ
表現形式と内部形式の区別がつかないやつ

こいつらが話をややこしくしてる
899デフォルトの名無しさん:2013/02/14(木) 16:37:33.05
ややこしいなこりゃ
だから正規化ってなんなんだよ?勝手にオレオレ言語使うなっつーの。
900デフォルトの名無しさん:2013/02/14(木) 16:39:44.75
>>898
> それ前提として日付が適切に正規化されている場合、な

もちろん、>>727の時点から、正規化された日付文字列なのが前提での話だよ。
901デフォルトの名無しさん:2013/02/14(木) 16:40:39.84
正規化がオレオレ言語って、日本語の不自由な方は苦労しますな
902デフォルトの名無しさん:2013/02/14(木) 16:41:01.52
>>899
マジレスしとく。

http://ja.wikipedia.org/wiki/%E6%AD%A3%E8%A6%8F%E5%8C%96
> 正規化(せいきか、英: normalization)とは、データ等々を一定のルール(規則)に基づいて変形し、
> 利用しやすくすること。別の言い方をするならば、正規形でないものを正規形(比較・演算などの
> 操作のために望ましい性質を持った一定の形)に変形することをいう。
903デフォルトの名無しさん:2013/02/14(木) 16:46:45.81
>>900
727書いたの俺だが。お前が当然その前提なのは解ってるけど
書いとかないとわけわからんいちゃもん付けるやつが出るからな

と思ったけど、書いてもその意味がわからんやつがいちゃもん付けるのか(笑)
>>898に正規化の意味がわからんやつ 追加
904デフォルトの名無しさん:2013/02/14(木) 16:47:11.60
>>902
おまえら俺のことからかってんの?
日付の表現形式なんて、いくらでもあって全てが日付の大小比較出来る
ものばかりじゃないぞ?そこ分かってんの?
905デフォルトの名無しさん:2013/02/14(木) 16:50:38.89
>>904
わかってるから前提として正規化されているって話をしてるんだが
ここまで説明しても馬鹿はいちゃもん付けるのか
906デフォルトの名無しさん:2013/02/14(木) 16:53:25.38
俺が想像するに、"YYYY-MM-DD"と"YYYY/MM/DD"じゃ比較できないじゃん!とか、
月や日付が一桁の時に比較できないじゃん!とか思ってたりするんだろうけど、
それもこれも、正規化の意味がわからなかっただけだと思うよ。
907デフォルトの名無しさん:2013/02/14(木) 16:58:28.66
分からんやつらだな。
おまえらの言う正規形は、プロジェクトなりなんなりで日付の表現形式の正規形として
認められたものか?その形式で限定された形で大小比較可能であると認められたものか?
そうでなければ、プレゼンテーション層の表現形式がたまたま比較可能であるだけだ。
その違いが分かるか?
まあ、分かってんなら始めからそういう説明するんだろうけど。
908デフォルトの名無しさん:2013/02/14(木) 16:58:47.86
例えば月が英語で入ってるのとかあるよね?
909デフォルトの名無しさん:2013/02/14(木) 17:04:26.39
だから、「たまたま比較可能」ではなく、比較可能なように正規化するという話をしているんだが。
どれだけ説明すればわかるんだろうか。
910デフォルトの名無しさん:2013/02/14(木) 17:07:32.99
今問題にしてるのは比較する際の形式で、
プレゼンテーション層の形式など問題にしてないんだが?
さらに言うなら、正規化の話はしてるがその正規形には言及してない

前提として、プレゼンテーション層の表現形式が正規化されていて、日付比較可能な形式なら
その形式で比較すればいい。それが適切に正規化されてるってこと
それはたまたまじゃなくて、ちゃんと前提条件を確認した上での話

その前提が満たされないなら、自分で正規化した文字列にするか日付形式で比較する
でも自分で正規化するなら日付形式で比較した方が楽で早いだろ、って話
911デフォルトの名無しさん:2013/02/14(木) 17:09:12.27
まだ言うかね
「正規化」に大小比較を可能にするという意味は含んでないぞ。
912デフォルトの名無しさん:2013/02/14(木) 17:11:07.52
結論としては、文字列比較は可能。
だが、使う側の身になって、文字列で格納とか転送とか
メモリ、HDDや帯域の無駄だから、やめてくれってことだ。
913デフォルトの名無しさん:2013/02/14(木) 17:12:15.09
>>911
じゃぁ、Wikipedia書き換えてきてよ。

> 正規形でないものを正規形(比較・演算などの
> 操作のために望ましい性質を持った一定の形)に変形することをいう。

が気にくわないんだろ?
914デフォルトの名無しさん:2013/02/14(木) 17:13:32.11
>>912
> メモリ、HDDや帯域の無駄だから、やめてくれってことだ。

まだ言うかね。
通信フォーマットは、通常テキストベースなんだってば。
HDDに保存する場合はバイナリで保存することはあるが。
915デフォルトの名無しさん:2013/02/14(木) 17:13:33.28
「適切に」正規化されている場合って書いてあるの解る?
つまり、大小比較可能な形式に正規化するって話をしてるんだが
916デフォルトの名無しさん:2013/02/14(木) 17:16:56.03
>>911
こういうアホがでるからわざわざ適切に正規化されている場合って書いたのにな
日付比較に適さない形に正規化されてても適切じゃないってわからんのか
917デフォルトの名無しさん:2013/02/14(木) 17:24:27.17
 
  正規化キチガイのスレはココでつか?
918デフォルトの名無しさん:2013/02/14(木) 17:25:27.08
今日も一日、おつかれさま。なんとなく春めいてきました。

                         _______
                      ../|:┏━━━━┓|
                      /. |:|今度の土||
                      |.. |:|日も雨…|.|
                      |.. |:┗━━━━┛|
                      \_|  ..┌──┐ |
                         ̄ ̄ ̄ ̄ ̄ ̄ ̄
____   (  )     かぁちゃん..            
     |   ( )    <貰ったチョコ           ∧∞ヘ      
バスルーム| ( )  ∧のヘ  食べていいぞ  ~ 田    (   )  
     |    (( (* ^ω)            □■  ̄ ̄(_  )
     | テチテチ (つ |)            □〓□    \_)
     |。 。。。u-θ            |二二二二二二|
                           | |     | |
貰ったことは貰ったけど・・当然義理だけどね。
年齢とともに減って気がする・・まだ貰えるうちが華かな。o((*^▽^*))o
919デフォルトの名無しさん:2013/02/14(木) 17:25:39.52
>>912,914
その辺はケースバイケース。前提を絞らんと何とも言えん
日付時刻がテキストベースで送られる場合が多いのは、プラットフォームにより内部形式が違う場合が多いから
場合によってはUNIX時刻が当たり前な世界もあるし
920デフォルトの名無しさん:2013/02/14(木) 17:26:49.03
                         _______
                      ../|:┏━━━━┓|
                      /. |:|今度の土||
                      |.. |:|日も雨…|.|
                      |.. |:┗━━━━┛|
                      \_|  ..┌──┐ |
                         ̄ ̄ ̄ ̄ ̄ ̄ ̄
____   経費ではおとせないから、レシートは    
     |         捨てておきましたから >  ∧∞ヘ      
バスルーム|    ∧_∧           ~ 田    (   )  
     |    (・ω・;) ハッ         □■  ̄ ̄(_  )
     |    (つ と)            □〓□    \_)
     |     u-u            |二二二二二二|
                          | |     | |
921デフォルトの名無しさん:2013/02/14(木) 17:31:25.76
>>919
数値も文字列な場合が多いけどね。
922デフォルトの名無しさん:2013/02/14(木) 17:34:58.37
それは昔の通信プロトコルがテキストベースが多かったせい
923デフォルトの名無しさん:2013/02/14(木) 17:36:57.13
見おとしてた。

>>910
> 前提として、プレゼンテーション層の表現形式が正規化されていて、日付比較可能な形式なら
> その形式で比較すればいい。
文字列比較がだめだって言ってる人は、元々これをやっちゃイカンという意図だったんじゃないの?
924デフォルトの名無しさん:2013/02/14(木) 17:49:55.96
文字列比較がダメだって言うやつの主張は

比較できる形に正規化するという前提を無視
文字列比較が"0"<"9"ならないというVBではあり得ない仮定

の上で成り立ってる主張
925デフォルトの名無しさん:2013/02/14(木) 17:56:56.72
全然違う
926デフォルトの名無しさん:2013/02/14(木) 17:58:31.63
日付データなんだから、Date型使うべきってだけでしょ
そっちの方が頭堅いわ
927デフォルトの名無しさん:2013/02/14(木) 18:00:20.71
>>924
根本的に分かってないねw
928デフォルトの名無しさん:2013/02/14(木) 18:01:27.50
>>926
唯一Date型だけが日付を比較できるんだけど?
数字の大小なら他でも比較する手段はいくらでもあるけどね。
929デフォルトの名無しさん:2013/02/14(木) 18:01:52.00
>>927
誰もお前になんか興味無いから、お前のことなんか分かりたくないんだよ
930デフォルトの名無しさん:2013/02/14(木) 18:02:51.63
>>928
日付型がない言語はどうしたらいいですか、先生
931デフォルトの名無しさん:2013/02/14(木) 18:03:08.44
日付の比較は値の大きさの比較ではなくて時間の早い遅いの比較だという事がわかってない。
932デフォルトの名無しさん:2013/02/14(木) 18:04:01.47
>>930
それは日付が比較できない処理系と言う事で終わりです。
例えばC言語やアセンブラがそうですね。
933デフォルトの名無しさん:2013/02/14(木) 18:05:35.46
文字コードからいって現実的には文字列比較でも問題は無いことはわかってて
それでも日付として比較しようよって話。
データの意味をもう少し重く考えようよって話。理想。
934デフォルトの名無しさん:2013/02/14(木) 18:11:12.81
で、必要のないCDateを使いまくると
935デフォルトの名無しさん:2013/02/14(木) 18:13:27.93
使いまくることにはならないと思うけど使いまくってもいいよ。
936デフォルトの名無しさん:2013/02/14(木) 18:16:21.23
なんだ、>>926が正解か
だったら最初からそう言え馬鹿
937デフォルトの名無しさん:2013/02/14(木) 18:17:49.24
>>936
それも違うと思われます
938デフォルトの名無しさん:2013/02/14(木) 18:20:01.38
>>933
外部から入力された日付文字列の妥当性チェックはどう書いてる?
俺は>>805
939デフォルトの名無しさん:2013/02/14(木) 18:20:42.88
>>933
それは元が文字列だっていう前提を出したやつに言ってくれ
940デフォルトの名無しさん:2013/02/14(木) 18:34:10.34
ちょっと言っときたいけど、プリペアードステートメント最強と勘違いしてる奴がいるみたいだが、
繰り返しそのステートメントを使う必要がなく、セキュリティリスクも無い場合は、文字列として
クエリを組み立てるのが最強だから。

プリペアードステートメントだと、コストベースの実行計画が立てられないRDBMSが多いと思う。
そうじゃないRDBMSもあるかもしれないけど。

これ、VBの話ね。
941デフォルトの名無しさん:2013/02/14(木) 19:07:07.93
>>940
セキュリティリスクをがないときってどんなときなんだ。
犯罪者がいない国なら警察がいない社会システムが最高だと言ってる
ようなものでしょうが。永遠の命が約束された地におくりびとはいらない
と言ってるようなものでしょうが。逝ってよしと送り出してくれる
ナイスガイはいないほうがいいと言ってるようなものでしょうが。
話にならないよ。はい論破。
942デフォルトの名無しさん:2013/02/14(木) 19:28:28.03
ようやく論破君が絡めるレベルの話になったのか
943デフォルトの名無しさん:2013/02/14(木) 19:31:57.53
>>805
そのバリデートで妥当と判断したら、後はDate型に変換してそのまま扱う
944デフォルトの名無しさん:2013/02/14(木) 19:38:29.87
そういえば、昔会社のエラいさんから渡された糞VB6のプログラムだが、
DBにaccess使うまではいいんだけど、
年・月・日・時 がそれぞれ別レコードになってた。
頭痛くなった。
945デフォルトの名無しさん:2013/02/14(木) 19:41:58.45
別カラムじゃなく別レコード?
946デフォルトの名無しさん:2013/02/14(木) 19:50:27.76
>>945
すまん、別カラム
947デフォルトの名無しさん:2013/02/14(木) 20:03:15.77
>>942
いいかげんにしなよ、そうやって論破さんをおとしめる陰湿な書き込みばかりやってると
ちんちんにカビ生えるよ。お前はそのカビから未知の抗生物質が発見されて
病理学上のサンプルとして自分が有名になれると夢見てるのかもしれないけれども、
せいぜいかびるんるんとしてばいきんまんの手先になるのが関の山、愛と勇気がともだちの
論破さんに痛烈に論破されて世界の中心でばいばいきんと叫んでろ。ば・い・ば・い・き・ん・と・な。はい論破。
948デフォルトの名無しさん:2013/02/14(木) 20:05:57.71
病理学の意味がわかってないのに使うから恥をかく
949デフォルトの名無しさん:2013/02/14(木) 20:06:19.21
950デフォルトの名無しさん:2013/02/14(木) 20:22:33.51
寝て起きたらレスが157も増えててワロタ
951デフォルトの名無しさん:2013/02/14(木) 20:45:23.19
>寝て起きたら
VBerの成れの果てか
952デフォルトの名無しさん:2013/02/14(木) 21:00:04.03
なんかある雑誌で今一番熱い言語がVB6.0って書かれてんだけど
このスレのせいじゃねーの?

おまいら責任とれよなw
953デフォルトの名無しさん:2013/02/14(木) 21:05:24.72
Win7ProにXPモードがあるのはそのためかw
954デフォルトの名無しさん:2013/02/14(木) 21:29:21.50
なんて雑誌だよ
955デフォルトの名無しさん:2013/02/14(木) 21:29:43.17
VBマガジン
956デフォルトの名無しさん:2013/02/14(木) 21:30:49.35
VB6 ワイルドだろ〜?

     / ̄ ̄ ̄\_
   /__  ___/__ ヽ
  / /   )ノ     ヽヽ
  | |  ー    ー   | |
 ( V  =・ヽ /・=   V )
  ヽ      ノ       ノ
   |     ヽ_ノ      |
   ヽ     ̄ ̄`   ノ
    \       /
    __/\___/ヽ_
  /ヽ⌒\ /⌒ /\
 (   |__У___|   )
  .\ | |__| |o|__| | /
957デフォルトの名無しさん:2013/02/14(木) 21:36:10.99
VBって日付型ってあるんだな。

Dim d As Date
958デフォルトの名無しさん:2013/02/14(木) 21:44:28.05
>>957
何を今さら。
959デフォルトの名無しさん:2013/02/14(木) 22:46:13.54
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
960デフォルトの名無しさん:2013/02/14(木) 22:47:07.45
犬臭い
961デフォルトの名無しさん:2013/02/15(金) 10:32:58.97
http://msdn.microsoft.com/ja-jp/vstudio/ms788708.aspx

> コアとなる Visual Basic 6.0 ランタイムがサポートされるのは、Windows Vista、Windows Server 2008、
> Windows 7、および Windows 8 の有効期間、つまり 5 年間のメインストリーム サポート フェーズに、
> 5 年間の延長サポート フェーズを加えた期間となります

あと10年はVB6で戦えるね
962デフォルトの名無しさん:2013/02/15(金) 10:54:39.47
>>961
Windows BlueではVB6.0ランタイムをサポートことが社内で正式に決定された。
USでは一部報道されているが、ほとんど問題視されていない。
963デフォルトの名無しさん:2013/02/15(金) 10:59:16.09
>>962
>サポートことが

サポートしないことが

サポートされることが

どっちだよ?w
964デフォルトの名無しさん:2013/02/15(金) 14:20:51.64
15年ぶりに来たんだが
VB6ってもうランタイムをインストールしなくても使える状態になってるの?
965デフォルトの名無しさん:2013/02/15(金) 14:22:27.08
誰かこの質問に答えてやれよ。少なくとも論破君ならできるだろ?
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11101991591
966デフォルトの名無しさん:2013/02/15(金) 14:23:04.38
>>964
XP SP2からできるようになっているよ。旦那。
967デフォルトの名無しさん:2013/02/15(金) 15:04:39.67
2chって15年前からあったんだ
968デフォルトの名無しさん:2013/02/15(金) 16:33:04.31
>>941
> セキュリティリスクをがないときってどんなときなんだ。

Webアプリケーションでプリペアードステートメントが推奨されるのは、SQLインジェクション対策の
唯一の根本対策だからだ。Webアプリケーションではその性質上、不特定多数にアプリケーションを
公開するため、攻撃される可能性も高い。

一方、スタンドアローンアプリケーションであることが多いVBアプリの場合は、不特定多数からの
攻撃は無い場合が多い。
考えられるのは、そのアプリケーションを操作するユーザが悪意を持っている場合に限る。

ここから先は、そのVBアプリがデータベースに対してどのようなデータを送るのかによる。
SQLインジェクションが起こらないようなクリーンなデータのみを取り扱えるのなら問題は無い。

また、RDBMSが機能として持っている場合のクエリキャッシュ機能や、外部ツールとして連携して
実現されるクエリキャッシュ機能を使うとき、プリペアードステートメントの場合は一部制限があったり、
全く使えなかったりする。
969デフォルトの名無しさん:2013/02/15(金) 16:37:28.16
もっと盛り上がる題材は無いものか
970デフォルトの名無しさん:2013/02/15(金) 16:48:20.07
>>965
機能数267×1人月=267人月
--
終わり
971デフォルトの名無しさん:2013/02/15(金) 16:55:45.21
次スレ

VBプログラマ質問スレ(Ver.6.0 まで) part62
http://toro.2ch.net/test/read.cgi/tech/1360914852/
972デフォルトの名無しさん:2013/02/15(金) 18:23:03.12
セキュリティがどうのこうの言うんだったら、
まず日付の文字列なんか捨てろよ。
余計なバッファオーバーランの可能性が増えるだけだろ。
973デフォルトの名無しさん:2013/02/15(金) 18:25:22.92
ちょっと何いってるのかわかりません
974デフォルトの名無しさん:2013/02/15(金) 19:53:55.47
>>969
・バリアント型が存在することの弊害について
・漢字の変数名、関数名はアリか
・新しいOSで使える凄いAPIの宣言文と使い方について
975デフォルトの名無しさん:2013/02/15(金) 22:17:25.76
> ・バリアント型が存在することの弊害について

スクリプト言語はだいたいバリアント型相当
976デフォルトの名無しさん:2013/02/15(金) 22:28:13.72
>>975
それはスクリプト言語とかじゃなくて、型付き言語かそうじゃないか
スクリプト言語の多くが型なしの言語だって話

ここでの論点は型付き言語にも関わらず複数の型を許容する型の存在
977デフォルトの名無しさん:2013/02/15(金) 22:29:18.61
それがバリアント型じゃないのか?
978デフォルトの名無しさん:2013/02/15(金) 22:50:52.33
>>976
基底クラスってのは
そのサブクラスの複数の方を許容するよ。

たとえば真のオブジェクト指向言語(全ての型が基底クラスObjectを継承している)なら
Object型にどんな型でも入れられる。
979デフォルトの名無しさん:2013/02/15(金) 22:55:45.99
>>977
いやだから
・バリアント型が存在することの弊害について
だろ

>>978
VB.NETでもそうだが、だからと言って変数全部Objectで宣言しろとか言うやつはいないだろ
バリアントはたまにそう言う主張する奴がいるからなぁ
980デフォルトの名無しさん:2013/02/15(金) 23:04:09.02
誰が、変数全部Objectで宣言しろとか言ったんだ?
981デフォルトの名無しさん:2013/02/15(金) 23:30:01.37
バリアントはあってもいいけど、頑なにバリアント禁止と言う奴がたまに居るのが、弊害っちゃ弊害だな。
982デフォルトの名無しさん:2013/02/15(金) 23:30:50.95
便利なArray関数がつかえんしな
983デフォルトの名無しさん:2013/02/15(金) 23:31:55.86
唯一の配列初期化手法
しかし宣言と同時には無理
それが限界ぽ
984デフォルトの名無しさん:2013/02/15(金) 23:37:37.18
唯一じゃねーだろw
985デフォルトの名無しさん:2013/02/16(土) 00:38:23.70
>>971
おつ
986デフォルトの名無しさん:2013/02/16(土) 03:42:50.40
今月の人気プログラミング言語ランキングが発表されたぞー(^o^)ノ
http://engawa.2ch.net/test/read.cgi/poverty/1360945162/

VB.NETより旧VBのほうが上だぞ
おまいら
987デフォルトの名無しさん:2013/02/16(土) 03:45:28.69
旧VBってどこで手に入るの?
988デフォルトの名無しさん:2013/02/16(土) 03:54:40.84
新しく入手するんじゃなく
オールドユーザーがいつまでも手放さないんじゃよ
989デフォルトの名無しさん:2013/02/16(土) 04:04:49.36
中古で売ってるとこ頑張って探すしかないな
990デフォルトの名無しさん:2013/02/16(土) 04:06:14.58
MSDN サブスクリプションの会員になればVB2〜VB6まで入手できるよ
991デフォルトの名無しさん:2013/02/16(土) 04:07:03.48
今検索してみたらMSDNにあるじゃん>>VB6
992デフォルトの名無しさん:2013/02/16(土) 05:06:27.31
>>968
なるほどね、よくわかった。
993デフォルトの名無しさん:2013/02/16(土) 05:27:49.99
   / ̄ ̄ ̄ ̄ ̄ ミ
  /   ,――――-ミ
 /  /  /   \ |
 |  /   ,(・) (・) | ┌─────────
  (6       つ  |< んなわけネーヨ
  |      ___  |..└────────
  |      /__/ /
.....|         /
 \ <  ̄ ̄ ̄ ̄............./|
   \.\______//
     \       /
      ∪∪ ̄∪∪
994デフォルトの名無しさん:2013/02/16(土) 07:33:57.99
>>971
おつ
995デフォルトの名無しさん:2013/02/16(土) 07:44:55.15
うめ
996デフォルトの名無しさん:2013/02/16(土) 14:02:24.67
Dim s1, s2 As String
でs1がバリアントになるのは勘弁して欲しい。
あと推論型も欲しい。
997デフォルトの名無しさん:2013/02/16(土) 14:51:37.09
>>996
素直に.NET使え
998デフォルトの名無しさん:2013/02/16(土) 15:15:36.77
うめ
999デフォルトの名無しさん:2013/02/16(土) 15:28:49.03
1000デフォルトの名無しさん:2013/02/16(土) 15:29:44.77
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。