1 :
デフォルトの名無しさん :
02/02/09 17:28 If MsgBox("VBを糞言語だと思いますか?",vbYseNo,"2ch") = vbYes Then MsgBox "あなたは正しい。" & vbCrLf & "今すぐこのスレに書き込みをしよう!",vbInformation,"2ch" Else Do While(1) Loop End If
よっこらしょ、っと。 3。
MsgBox "************ 終了 ***********"
4 :
デフォルトの名無しさん :02/02/09 17:39
Dim 2ch As String Dim I As Integer 2ch = "" For I = 1 To 90000 2ch = 2ch & "VBは糞!!" MsgBox 2ch Next I
' xxxをこの世に生成。生成してごめんなさい。 Set aXxx = new Xxx aXxx.Name = "1" aXxx.Say "私はxxxです。言うまでもありませんが。" ' あぼーん Set aXxx = Nothing
∧ ∧___ バカみたい♪ /(*゚ー゚) /\ /| ̄∪∪ ̄|\/ | |/  ̄ ̄ ̄ ̄
Dim programmingLanguage As ProgrammingLanguage Set programmingLanguage = BillGates.getBasicInstance("Visual Basic") If Basic(programmingLanguage).Speed = vbSlow Then MsgBox "それが何か?" End If Set programmingLanguage = Nothing Set programmingLanguage = new Java Set programmingLanguage = new Ruby Set programmingLanguage = Nothing
8 :
デフォルトの名無しさん :02/02/09 18:04
'ここから変数宣言 Dim a As Variant '変数a Dim b As Variant '変数b Dim c As Variant '変数c Dim d As Variant '変数d Dim e As Variant '変数e Dim f As Variant '変数f Dim g As Variant '変数g Dim h As Variant '変数h 'ここまで変数宣言
Dim answer As DialogResult = _ MessageBox.Show("VB.NET使ってる?", "質問", MessageBoxButtons.YesNo, MessageBoxIcon.Question) If answer = DialogResult.Yes Then MessageBox.Show("よろしい。", "( ´∀`)") Else MessageBox.Show("時代遅れ。氏ね", "(゚Д゚)") End If
VBはスクリプトな気がする人〜? (*゚ー゚)ノハーイ
>>9 VB.NETは記述が冗長で生産性が悪いね。
もうわすれちゃった
VBって再帰のコードって書けるの? あと、関数のポインタが無いとつらいんだけど、 VB5からだっけ?
>>14 関数ポインタなんか使えねーよ。
使うんならVC++使え。
AddressOf
19 :
デフォルトの名無しさん :02/02/09 19:03
AddressOfはAPIに引き渡す用で、VB5から使える。
?でも、関数ポインタから自分で呼べたっけ API使うとき専用だったような。
ま、AddressOfは自前の関数のアドレスが分かるだけで VBからじゃあ使えない。呼び出し先には渡せるけど。
>>20 たぶん当り。単に関数のアドレスを引数に取るAPIが使えるだけ。
>>14 再帰は普通にかけるよ。
関数ポインタってどういうときに使う?
代替方法はあると思う。
Dim memory(1) memory= "何か" Debug.print "VB使いは" & memory(1) & "を覚えている。" Redim memory(2) Debug.print "VB使いは" & memory(1) & "を覚えている。" '・・・なにも覚えちゃいない。
26 :
デフォルトの名無しさん :02/02/09 21:57
Dim Mozi(5) As String Dim Str As String Mozi(1) = "VB氏ね氏ね" Mozi(2) = "VC最高!" Mozi(3) = "糞糞VB" Mozi(4) = "VBは反面教師" Mozi(5) = "VBプログラマーは逝ってよし" Radamize Do While (1) Str = Str & Mozi((Rnd * 5) + 1) MsgBox Str Loop
お前ら、VB すら使えんのかよ。
>>25 > Dim memory(1)
> memory= "何か"
何したいのかわからん。天然ボケか ?
>>26 Randamize ってなんだよ ?
memory= "何か" ↓ memory(1)= "何か" の間違い。鬱だ、逝ってくる。
29 :
デフォルトの名無しさん :02/02/09 22:41
>>27 >>Randamize ってなんだよ ?
微妙に26のと違ってるのがワラタ。
30 :
デフォルトの名無しさん :02/02/09 22:43
しぇーかいは、Randomizeな。
>>25 つーかまじで何をやりたいのかわからんコードだな。
Redimで配列のサイズを変えたいんなら、
Dim Memory() で宣言しとかなきゃダメだぞ。
あと Redim Preserve しなきゃ Memory(1)の内容は消えるぞ。
32 :
デフォルトの名無しさん :02/02/09 22:58
>>31 コードがおかしいのはおいといて、25がやりたかったことは
>あと Redim Preserve しなきゃ Memory(1)の内容は消えるぞ。
の部分でわざとだと思われ。
どうでもいいが Do While (1) Loop っつー書き方ってVB的にはノーマルなの?
>26 Arrayツカエ
>32 その通りDeath。 マジで逝って来る。
>>33 俺は
Do
Loop
か
Do While True
Loop
って書く。
37 :
デフォルトの名無しさん :02/02/09 23:41
無限ループはゲーム系ではあえて使うこともあるけど、 それ以外のアプリでは使わないな。
26のだと配列に入れる文章量から考えると Array関数使ってもあんまり見やすくならんかもね。
40 :
デフォルトの名無しさん :02/02/09 23:56
Sub Kakunin() Label1 = "あれ" Label2 = "これ" Call VBProgramar() End Sub Sub VBProgramar() Data1.RecordSource = "サードパーティ製品" Data1.Recordset.MoveFirst Do Until Data1.Recordset.EOF If Data1.Recordset![使いみち] = (Label1 & Label2) Then Label3 = "できます" Exit Sub End If Data1.Recordset.MoveNext Loop Label3 = "できません" End Sub
VBで見やすいコードなんて無駄な努力を・・・
for (int i = 0; i < 10; i++) { if (funcA(i) && funcB()) { continue; } : : } For i = 0 To 9 If Not FuncA(i) Then If Not FuncB() Then : : End If End If Next i 短絡評価も continue もなくてどうやってプログラムを組めと・・・・・・・。
>>短絡評価も continue もなくてどうやってプログラムを組めと・・・・・・・。 ロジックの見直しでなんとかならんか? なんともならんなら、42で書いてるような感じだのう。
45 :
DAO使おうよ :02/02/10 01:25
>>42 ***********************************************************************
For i = 0 To 9
If Not FuncA(i) Then
If Not FuncB() Then
:
:
End If
End If
Next i
短絡評価も continue もなくてどうやってプログラムを組めと・・・・・・・。
***********************************************************************
For i=0 To 9
If Not (FuncA(i) Or FuncB()) Then
:
:
End If
Next
これじゃいけないのかえ? 間違ったら住まん
46 :
デフォルトの名無しさん :02/02/10 01:53
>>27 貴様の方がVB使えてないじゃないかボケェ!
Randamizeも知らないで「VBすら使えんのか」とはなんじゃい。
己のようなアフォは逝ってよし
>>46 27の指摘はどっちも概ね正しいよ。
ちゃんと見な。
49 :
デフォルトの名無しさん :02/02/10 02:37
×Randam ○Random の事を言っているのカイ?
50 :
デフォルトの名無しさん :02/02/10 09:34
>>45 まずは、continue の話...
もちろん...
> If Not (FuncA(i) Or FuncB()) Then
でいいんだけど、条件がたくさんある時 C なら...
if(cond1){ continue; }
...
if(cond2){ continue; }
...
と書けるけど、VB では...
If Not Cond1 Then
...
If Not Cond2 Then
...
と、どんどんネストが深くなっちゃうよね。これがちょっとね...。
で、短絡評価の方だけど...
if (funcA(i) && funcB()) { /* C 言語ね */
と
> If FuncA(i) And FuncB() Then ' VB ね。
って同じじゃないよ。C の方は、funcA(i) が 0 を返したら funcB() が呼ばれ
ないことが保証されている。これに対して、VB は FuncA(i) と FuncB() の両方
を呼んでから AND とるから必ず両方を呼んでしまう。この例じゃちょっとわかり
にくいけど、例えば「配列の中身が 0 だったら何かをする、ただし与えられる添
え字が配列の範囲外の時もある...」って言う時は C なら...
if(0 <= i && i < sizeof(a) && a[i] == 0){
と書けるけど、VB で...
If Lbound(a) <= i And i <= UBound(a) And a(i) = 0 Then
と書いちゃうと、i が範囲外の時に a(i) がエラーになってしまう。だから VB
では...
If Lbound(a) <= i And i <= UBound(a) Then
If a(i) = 0 Then
と書かないといけない。これがちょっと面倒だよね。
>>50 GoTo使ったらダメなの?規則?
規則じゃないなら使いなよ。マシン語レベルじゃ同じこと。
52 :
デフォルトの名無しさん :02/02/10 16:08
Dim File As String Dim nCount As Integer Dim Str As String Dim i As Integer If MsgBox("VB最高ですか〜!",vbYesNo,"2ch") = vbYes Then Do nCount = nCount + 1 File = "C:\Windows\デスクトップ\" & nCount & ".txt" Str = "" For i = 1 To 2000 Str = Str & Chr(Rnd * 25 + 65) Next i Open File For Output As #1 Print #1, Str Close #1 Loop End If
53 :
デフォルトの名無しさん :02/02/10 16:10
54 :
デフォルトの名無しさん :02/02/10 17:25
55 :
デフォルトの名無しさん :02/02/10 19:00
>>50 なぜGOTOを使わん?
Cのcontinueは非構造化制御という意味ではGOTOと同類じゃん。
Cなら非構造化処理を導入してもよいがBASICではだめという論理がわからん。
>50はラベルが思いつかないとか
>>51 まあ、Goto 使うかどうかは、その時次第。処理を途中で打ち切るなんかの場合
は、C なら continue、VB なら Goto だろうね。
>>55 ,
>>56 > C の continue は非構造化制御という意味では GOTO と同類じゃん。
あんたら頭大丈夫 ? continue ってやれること決まってんだよ。どこでも飛べる
Goto となんで同類なんだ ? 大体、そう言うならなんで C に continue がある
んだよ。C だって goto があることぐらい知ってるよな。
なんか暴れ出したぞ
For i = 0 To 9 Do If foo() = False Then Exit Do If bar() = False Then Exit Do Loop While False Next i まっあんまりいいとは思えないテクニックだけどね。 GOTOの方がましかな。
60 :
デフォルトの名無しさん :02/02/10 22:49
何気に良スレ化?
>>59 Goto の方がマシでしょ。結局 Loop まで見ないと何やってるかわからないから。
その点、continue ならそれ見ただけでわかると言うことが優れているんですけど、
これすら理解できない
>>55 ,
>>56 ,
>>58 はヴァカ決定と言うことで良いです
か ?
っていうか Exit For, Exit Do の類を知らないのか?
>>62 頼むから、VB しか知らないんならでしゃばるなよ。C の continue と
break の違いはわかってんの ?
>>50 は電波の香りがする…
ネストが深くなるのが嫌なんじゃなかったのか?
ちなみに、俺は普通こう書いている。 continueであることを名前で判断している For i = 0 To 9 If foo() = False Then Goto Continue If bar() = False Then Goto Continue Continue: Next i
67 :
デフォルトの名無しさん :02/02/10 23:24
>>61 俺は55,56,58じゃないけど、
>その点、continue ならそれ見ただけでわかると言うことが優れているんですけど、
gotoよりは優れているとうだけで、
ループから単に抜ける(cならbreak, VBならExit 〜)よりも、
機能的にgotoに最も近いから、似たようなもんだろうってことが言いたいのでは?
#実際、短いfor文ならいいが、へたれな長いfor文でcontinue連発されたら、
#読むのダルいし。
>>67 まあ、
>>56 ,
>>58 はほっとくとして、
>>55 がおかしいのは...
> C の continue は非構造化制御という意味では GOTO と同類じゃん
と言うところ。構造化という意味において、continue と Goto を同類と言うこと
が本質を理解していないと言いたいだけ。別に俺は、
>>50 のように書いてるわけ
じゃない。
>>45 の書き方について多重ループになったらダメだよって言ってるだ
け。通常は、
>>57 に書いたように、その条件文の意味で書き方を変える。例外処
理みたいなものなら、
>>65 みたいにすると思う。ただ、どうせ Goto 使うなら
Continue なんて言う名前より...
For i = 0 To 9
If foo() = False Then Goto SkipProcess
If bar() = False Then Goto SkipProcess
SkipProcess:
Next i
とかと言う名前にする。
あと、If Foo() = False Then ... と言う書き方はちょっと違和感ある。何で、
If Not Foo() Then と書かないのか ? (まあ、= False ならまだマシだが、
If Foo() = True Then ... とかく奴の気が知れない。)
>>68 >
>>65 みたいにすると思う。ただ、どうせ Goto 使うなら
> Continue なんて言う名前より...
65がContinueって名前にしているのは、Cのcontinueと同じ使い方で
このGoto文は使っているのだという主張を込めていることを表現したいからだと思う。
(って、他のVB使いにそういう意図が伝わるかどうかは別にして(^^;;)
そう考えるとSkipProcessだと名称が汎用的で、どこへジャンプしても
SkipProcessというラベル名に偽りなしなわけで、
本来のGotoの使い方であるかのような意図にも読み取れてしまうよ。
#まぁ代替手段でしかないので、ラベル名がContinueでもSkipProcessでも実際には大差ないけど。
結局、VBしかしらない相手も含めて考えたら、SkipProcessの方がよいのかもしれない。
>If Not Foo() Then と書かないのか ?
複数の条件を書くときにそういう書き方から拡張して
はまっている初心者をよく見かけるよ。
関数のときは問題ないが、ビット演算と絡んだときにはまる。
>>69 > そう考えるとSkipProcessだと名称が汎用的で、どこへジャンプしても
> SkipProcessというラベル名に偽りなしなわけで、
> 本来のGotoの使い方であるかのような意図にも読み取れてしまうよ。
うむ、言われてみればそうだな。どっちがわかりやすいかは読み手のスキ
ルにもよるな。ちょっと反省した。
If Not については...
> 関数のときは問題ないが、ビット演算と絡んだときにはまる。
の意味がわからん。関数からの戻り値がビット演算と絡むこともある
が...。まあ、根本的には、VB が論理演算をビット演算子でやること
にあるとは思う。C みたいに論理演算子とビット演算子をべつべつに
するか、Boolean と言う型があるんだから条件式には Boolean しか
ダメとかすればいいと思う。(まあ、そんなことしたら VB 厨がパニ
くるだろうが...。)
>> 関数のときは問題ないが、ビット演算と絡んだときにはまる。 >の意味がわからん。関数からの戻り値がビット演算と絡むこともある すまん、これは勘違いだ。条件式がTrue/Falseでない場合だ。 なので、関数のときに問題がないのではなく、 >If Not Foo() Then Foo()の戻り値がBooleanのときは問題なしってことで。 > VB が論理演算をビット演算子でやることにあるとは思う。 言いたかったところはこれ。 ただ、条件式で比較演算する部分を省略しなければ、 問題は起きないので、True/Falseでも一貫して省略しない方法を推すと。
>>68 Foo()という名前じゃ何を返すか分からないから。
もしかしたらIntegerを返すかもしれないしBooleanを返すかもしれない。
それが定義を見ないとわからないから=True/Falseって書いてる。
もちろん、名前がIs〜とかだったらIf IsNumeric("123") Thenってかく。
もしFoo()がTrue/False/Nullを返したらどうする?
If Compare(a, b) Thenというのをどのように解釈する?
>>69 > (って、他のVB使いにそういう意図が伝わるかどうかは別にして(^^;;)
俺もそう思う。VBにはないしね。
あとContinueが将来予約語にならないか心配していたけど大丈夫そうだな。
73 :
デフォルトの名無しさん :02/02/11 01:10
VB厨がVBを批判するスレはここですか?
>もしFoo()がTrue/False/Nullを返したらどうする? VBってつくづくうんこですね
>>74 なぜ?データベースとかでもよくあるよね。
はいか、いいえか、未入力か。
そうそう、関数がBooleanを返すようになっていればNullは返らないから。 True/False/Null(とそれ以外)が返るときは関数がVariantに なっている場合のみ。
×関数がVariantになっている場合のみ。 ○関数がVariantを返すようになっている場合のみ。
>>71 俺の意図は、伝わっていると思うが...
> 条件式がTrue/Falseでない場合だ。
がよくわからん。Foo() が Integer を返すように作っておいて、Foo()
の作成を C 厨に任せたら、True の時に 1 を返すように作る可能性大だよ。
で、戻った所に If Foo() = True Then ... ああ恐ろしや...。
>>72 > もしFoo()がTrue/False/Nullを返したらどうする?
そもそもそんな関数仕様にするのがおかしいとは思わない ? そう言う関
数仕様が良いと言う時もあるが、例外的だろ ?
結論として、If Foo() And Bar() Then なんて書く時の Foo() とか
Bar() の型は Boolean であるべきでしょ ?
>>73 何も言えないんだったら、無理して書かんで良いぞ。
>>74 3パターンの値を返すという話なら、C/C++ならintになるだけじゃ?
お前らが何の話で盛り上がってるのかイマイチわからん。 そんなのただのバグじゃん、で済む話じゃないのか?
ざっと見たけど50の「意図」って?
>>42 ←これ?それともこれの話は終わったの?
>>78 > 条件式がTrue/Falseでない場合だ。
条件式がTrue/Falseでない場合に問題になるという意味は、
a = 1
b = 2
If a Then Debug.Print "表示される"
If b Then Debug.Print "表示される"
If a And b Then Debug.Print "表示されない"
If a = 1 And b = 2 Then Debug.Print "表示される"
ということ。
「a = 1」といった比較の式は結果としてTrue/Falseを返すのでOK。
70で50が言っている
> VB が論理演算をビット演算子でやることにあるとは思う。
の通り。
>Foo() が Integer を返すように作っておいて、Foo()
>の作成を C 厨に任せたら、True の時に 1 を返すように作る可能性大だよ。
1を返すように作ったんなら、
>で、戻った所に If Foo() = True Then ... ああ恐ろしや...。
Trueと比較してるのが単なる間違いだし、
Trueと比較したいなら、関数Fooの戻り値がbooleanでないのが間違いなだけでは?
戻り値Integerの1だとして、
If Foo() Then
と書いてたまたま問題なく動いても、それはこの関数単独で条件になっているから
たまたま動いているだけで、余計に怖いよ。
>>83 ますますわからん...
とりあえず、話の前半は理解してるつもり (
>>70 参照) だから良い。後半
は、別にこれが正しいと言ってるわけじゃなくて、こうなりがちだからやば
いと言う話。結論としては、条件式に Boolean 以外を書くのは良くないと
思っている。
で、...
> Trueと比較したいなら、関数Fooの戻り値がbooleanでないのが間違いな
> だけでは?
と書いてあるからには、関数 Foo() の戻り値の型は Boolean なんだよ
ね ? それとも、Boolean 型の Variant ってこと ?
Boolean 型なら、わざわざ True とか False と比較するのか意図がわか
りません。
Variant 型なら、Null = True の結果って何になるか知ってます ?
>>84 >Boolean 型なら、わざわざ True とか False と比較するのか意図がわかりません。
単にBoolean型以外の場合と統一して、一貫性を持たせたいだけっす。
#個人の趣味でやるときは、省略する方です。
でも、仕事でやる場合は、多少くどくても誤解の少なくなる方向性で書きます。
72で59の言っているようにIs〜な関数ならまぁ誤解の生じる余地はないと思いますが、
Foo()のような関数だとその関数名からBoolean型の戻り値かどうか自明じゃないので、
後で見る人が困らないように=Trueなり=Falseを付けると。
#書き換える時間とテストする時間があれば、関数名から変えたいけど、そこは我慢。
>Variant 型なら、Null = True の結果って何になるか知ってます ?
Nullです。
※私は67,83じゃないです。 > と書いてあるからには、関数 Foo() の戻り値の型は Boolean なんだよね ? そう、まさにここが重要なのです。関数の戻り値が分からない。 単に書き忘れなのかもしれないし、意図したことなのかもしれない。 プロジェクト全体で完全に決まっており、全ての人が完全に守っているのなら 問題ないけど、現にあなたはここで混乱しましたね。 だから、=True/Falseを省略するのは書き忘れ。修正すべき。という理由になるのです。 ところで、 If Compare(a, b) Thenというのをどのように解釈する? について誰か答えてくれないかなぁ。結構面白い問題だと思うんだけど。
>>86 解釈・・・というのとは違う?かもしれないけど、
1,0,-1を期待するかな?
しかし、59も50も暇よのぉ。おれもなー。
>>85 ああなるほど、If Foo() = True Then って書いてあったら、Foo() は
Boolean、If Bar() Then って書いてあったら Bar() は数値型ってことね。
まあ、統一されてれば一理あるとは思う。俺は、If Foo() Then って書いて
あったら Foo() は、Boolean で、数値型の Bar() を If Bar() Then と書く
ことは認めない方針だけどね。何故かって言うと、数値型の Bar() を
If Bar() Then って書いた時、意味的には当然 If Bar() <> 0 Then なんだ
けど、If 0 < Bar() なんかでも If Bar() Then なんて書く人がいるから、
ちゃんと書き分けた方が良いと思ってからね。
>> Variant 型なら、Null = True の結果って何になるか知ってます ?
> Nullです。
だよね。だから、
>>72 の...
> もしFoo()がTrue/False/Nullを返したらどうする?
と言うのは、ちょっとまずいと思ってる。Compare() が True/False/Null を
返す時 If Compare(a, b) = True Then と書くと Compare() が Null 返した
時 If Null = True Then → If Null Then となって、結果的には思った通り
Else 側に行くわけだけど、初心者が...
Dim R As Variant
R = Compare(a, b)
If R = Null Then
...
ElseIf R = True Then
...
Else
...
End If
とか、
Select Case Compare(a, b)
Case True:
...
Case False:
...
Case Null:
...
End Select
なんてコーディングしてバグりそう。
>>88 > ああなるほど、If Foo() = True Then って書いてあったら、Foo() は
> Boolean、If Bar() Then って書いてあったら Bar() は数値型ってことね。
ちょっと違います。Bar()って書いてあったら、書き忘れ。修正せよです。
Foo() = True (関数はBooleanを返すんだな。)
Foo() <> 0(関数は数値を返すんだな。)
Foo() (関数何を返すんだ?修正せよ)
となります。
>>67 わーい。答えてくれた。私もCompareは-1,0,1を返すと思っていたんです。
しかしC/C++のSTLのcompareはboolを返すんです。
関数名から何を返すか分からないという一例です。
C#みたいにIf文にかけるのがboolだけなら TrueやFalseと比較する必要ない?
暗黙の型変換はできませんって怒られるね>C# VB.NETのOption Script Onの場合でも同じそうだね。 (Offの場合は怒られないけど)
あっほんとだ。VB.NETでも怒られた。(ScriptじゃなくてScrictですね) Option Script Onはデフォですね。 ところでVB6みたいにファイル追加されたら勝手に 書いてくれる設定はどこにあるんだろう・・・。
>>89 ああなるほど、了解しました。俺的には、若干冗長表現っぽく見えるので採用し
ないけど、そう言う考え方もありですね。
本質的には
>>90 ,
>>91 が書いてるように C# みたいな方向 (If には Boolean
しか書けない) が正しいと思う。
> ScriptじゃなくてScrictですね > Option Script Onはデフォですね。 自分で修正しといて間違えてるし・・・。
つーかScriptでもScrictでもなくてStrictじゃん。 疲れているらしい、月曜だし。
早朝のスケート見ながら書いてたから、 タイプミスにまったく気づかんかった。すまそ。 しかも、Scriptって・・・(--; 頭の中ではStrictのつもりだったんだけど。 遊びに逝ってきます。
97 :
デフォルトの名無しさん :02/02/11 13:24
VB最強 = "んなわきゃねーだろ" MsgBox VB最強
寒 Maiソ() 畏怖 ガイシュツ Then Beep Call MsgBox("ネタです。スマソ。m(_ _)m", vbSystemModal, "(-_-;;") 遠藤 遠藤 畏怖 遠藤 寒
99 :
デフォルトの名無しさん :02/02/11 18:22
If VB = 最悪 Then アンタ = 正しいアルね。 Else アンタ = 逝ってよし End If
100 :
デフォルトの名無しさん :02/02/11 18:24
If VB = 氏ね Then アンタ = 100ゲットしてよし Else アンタ = 氏んどけ End If
101 :
デフォルトの名無しさん :02/02/11 23:31
If VB = ViberatorBondage Then IkuIku! Else NaeNae... End If
102 :
デフォルトの名無しさん :02/02/13 00:53
>99-101 アンタに代入している謎の変数(定数?)の中身が知りたい(w
大文字予約語カコワルイ!
97以降一気にクソ化
>104 クソ化っていうかそれが趣旨じゃん
108 :
デフォルトの名無しさん :02/02/14 02:16
個人的に思うんだけど、 Foo() = True とか Foo() <> 0 とか書いたら コンパイラが勝手に最適化してくれると思ってるんだけど、 もしかして最適化してくれないの?どう考えても最適化の対象だよね? 可読性を高めるために俺はいつもつけてるんだけど。
そもそもVBに速度を求めるのが間違っている
110 :
デフォルトの名無しさん :02/02/14 09:15
VBすら使えない奴が混じってないか、ココ? >4 >Dim 2ch As String 数字アタマの変数なんて使えるわけない。 ・ ・ もしかして、誰もツッコまないのはワナ?ワナなのか?
実はFor〜Nextより、Goto駆使した方が速くなるって知ってた?
>>111 実はヴイビより、C駆使した方がずっと速くなるって知ってた?
>>115 実はC駆使したより、アセンブラ駆使した方がずっと速くなるって知ってた?
118 :
デフォルトの名無しさん :02/02/14 12:17
>>117 最近のWin系じゃないならあるかもね。
>>117 実はアセンブラ駆使するより、CPU買い換えた方がずっと速くなるって知ってた?
>>119 実はプログラム替えるより、プログラマ替えた方がずっと速くなるって知ってた?
才能によりますなぁ
>>120 実はプログラマ替えるより、仕事辞めた方がずっと楽になるって知ってた?
>123 実は仕事辞めるより、首吊ったほうが(略
これが再帰という奴でしょうか
>>108 Foo() = True と書いたら、エラーになるだろうと言うお約束の突っ込みは別にし
て、Foo() <> 0 が最適化されるかなんて気になるんならアセンブラ使うべし。
> 可読性を高めるために俺はいつもつけてるんだけど。
で、良いと思うよ。
127 :
デフォルトの名無しさん :02/02/15 01:13
>>126 >Foo() = True と書いたら、エラーになるだろうと言うお約束の突っ込み
はい?エラーにならんだろ。
実は要求仕様削った方が・・・
129 :
デフォルトの名無しさん :02/02/15 01:17
>>128 何へのレスなのかも、マジレスなのかもネタなのかも
さっぱりぱりぱりぱりっぱり。ぱりぱり。
Option Exit
130の頭がな。
132 :
デフォルトの名無しさん :02/02/15 03:09
>>126 あなた、C言語とかしかやったことないの?
VBでは「Foo() = True」
という文で代入も比較も出来るんです。
記述する場所によって意味が変わるのよ。
AndとかNotも同じね。
133 :
デフォルトの名無しさん :02/02/15 03:34
>>132 前半は正しが、後半は墓穴掘ってるぞ。
>AndとかNotも同じね。
こいつらはビット演算しかしてねーっつうの。
最近のBASICでも、代入の A=B は LET A=B の省略形と解釈されているのだろうか、、、
>>132 >VBでは「Foo() = True」という文で代入も比較も出来るんです。
これ、鬱陶しいよな。予想と違う処理になったりするんだもん。
おかげで評価の中に関数を使わない癖がついちゃったよ。
>>135 評価の中で代入をしなければいいだけじゃないのか?
一体どんな予想をしていたのやら。
Option Base 138
139 :
デフォルトの名無しさん :02/02/16 16:19
Call age Private Function age() Buntton書き込む.SetFocus End Function
個人的に、FunctionをCallするのは好かん。 っつーかFunctionに統一してくれりゃいいのに。
Cでvoidなんざいらん、何か返すようにしろ! ってのと同じことを言っていることになる。
Cプログラマにvoidなんざいらん、誰か帰るように言え! ってのと同じことを言っていることにもなる。
143 :
デフォルトの名無しさん :02/02/18 22:27
VBクソage
144 :
デフォルトの名無しさん :02/02/19 00:36
>25 そりゃそうだ。わらたよ。
Dim VB as Variant Set VB = Nothing End
146 :
デフォルトの名無しさん :02/02/22 16:11
>>146 まさかそれに引っかかるようなコード書いてたの?
表示の仕様が整数値なら、文字列にする前にまずLongに変換するでしょ。
>>147 これはKBからそのまま引用してきただけだけど。
問題はこれを四捨五入するために使ってたの。
ちゃんとVBのヘルプにも「四捨五入する」って
書いてあるのに、XPで「丸め」になるなんて(泣
>>148 >問題はこれを四捨五入するために使ってたの。
やっぱりおかしいよ。
そもそもFormatは文字列整形のために使う関数なんだから、副作用に頼った利用
方法はなるべく避けるべきでしょ。
"#,##0"という書式も小数点以下の扱いには言及してないんだからね。
>>149 確かに本来の目的はそうだけど、「四捨五入する」ってヘルプに書いて
あったのに、その動作がOSで変わるってのが気に入らなかったの。
まあ、ここでグダグダ書いててもしょうがないので、力作業でやるしか
ないんだけどね。この件はもうおしまい。
できればM$にはExcelのRound/RoundUp/RoundDownと同様の関数を
追加して欲しい。自分で用意してもいいんだけど。
PRINT
152 :
デフォルトの名無しさん :02/04/21 15:06
ぷぷ。VB使っている奴ってこの程度なんだ、やっぱ。
>>152 ∧_∧ / ̄ ̄ ̄ ̄ ̄
( ´∀`)< オマエヨリは全員マシだがな(w
( ) \_____
| | |
(__)_)
149はアホ
155 GOTO 155
サイコロを振って 6 が出たら 149 へ戻る
VBスレ上げてるやつ死ね
>>157 ∧_∧ / ̄ ̄ ̄ ̄ ̄
( ´∀`)< オマエガ氏ね(w
( ) \_____
| | |
(__)_)
みんなで一緒に氏のう。
∧_∧ / ̄ ̄ ̄ ̄ ̄ ( ´∀`)< ヒトリで氏ね(w ( ) \_____ | | | (__)_)