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

VBプログラマ質問スレ(6.0以前) Part46

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/02/03(金) 22:58:33
VisuarlStudio
0516デフォルトの名無しさん2006/02/11(土) 22:47:04
>>515
例えばCだと?

> そもそも C を作り上げてる開発言語って何ですか?
・・・
0517デフォルトの名無しさん2006/02/11(土) 22:50:46
まるで宇宙の七不思議を見てるような感じだな
ムカムカしてくる
05185122006/02/11(土) 22:56:20
>> 513,514
こころからありがとう。
自分が情けなくなってきました。。
0519デフォルトの名無しさん2006/02/12(日) 00:32:02
Formにtoolbarコントロールを貼り付けました。
labelコントロールをコピペしたら、貼り付けたコントロールが
toolbarの後ろに隠れてしまって移動させるのに困っています。
toolbarえお最背面に移動しても出てきません。
なんとかならないでしょうか。
だれかたすけて
0520デフォルトの名無しさん2006/02/12(日) 00:40:45
MSXMLを使用するのに最新のVerから存在するかで順番に指定したいのですが、
Ver4から順にためしていくにはどうしたらよいのでしょうか?
(Ver2から試すのは下記のサンプルをみつけました。)

Set oHttp = CreateObject("MSXML2.XMLHTTP")
If (Err.Number <> 0) Then
Set oHttp = CreateObject("MSXML.XMLHTTPRequest")
End If
05214412006/02/12(日) 00:46:29
ヘッドハンター西脇を完成させたんですが、
もしよかったら触ってみてくれませんか。
0522デフォルトの名無しさん2006/02/12(日) 00:49:21
>>521
ところで、何のヘッド?
05234412006/02/12(日) 00:52:15
>>522
HTTPのヘッダです。それだけです。
0524デフォルトの名無しさん2006/02/12(日) 00:55:38
テスターになれってかよ市ね
0525デフォルトの名無しさん2006/02/12(日) 01:00:25
>>519
labelのLeft・Topをプロパティウィンドウで見ある位置にカエル
あとlabelはFormのDCに直接文字を描画するからコントロールより前には表示できない 覚えておきなさい
0526デフォルトの名無しさん2006/02/12(日) 01:01:49
>>523
あー…
持ってるけど、とりあえずうpしてみれ
ソース込みならみるかもしらん
0527デフォルトの名無しさん2006/02/12(日) 01:12:09
>>515
Visual C++
WindowsOS・ワード・エクセルもコレで作っている

ちなみに Visual C++ を作っているのは Visual C++
0528デフォルトの名無しさん2006/02/12(日) 01:16:53
MS-Cだよ
05294412006/02/12(日) 04:50:17
>>524
テスターになって下さいとは言っていませんが、そう解釈されても仕方ありませんね、ごめんなさい。
>>526
これはどうもありがとう
しかしソースとなるととっても汚い部分を晒す事になりますので、控えときます。
0530デフォルトの名無しさん2006/02/12(日) 10:59:23
なんかソフトウェアの世界でWizardっていったら何を意味するかわかってない奴が
何人かいるような。。w
0531デフォルトの名無しさん2006/02/12(日) 13:47:28
あれだろ、魔法を使ってドラゴンを倒してくれる奴だろ
0532デフォルトの名無しさん2006/02/12(日) 14:19:16
>>515
マシン語です。

>>520
Set oHttp = CreateObject("MSXML4.XMLHTTP")
Set oHttp = CreateObject("MSXML3.XMLHTTP")
Set oHttp = CreateObject("MSXML2.XMLHTTP")
じゃないの?
>>528

VC++が存在しなかった時の一番最初のVC++はMSCで書いたのかな。
0533デフォルトの名無しさん2006/02/12(日) 15:37:12
532 は「開発言語」の意味も分からない池沼か?
0534デフォルトの名無しさん2006/02/12(日) 15:43:53
>>533
うんこは寝て食え
0535デフォルトの名無しさん2006/02/12(日) 16:35:18
>>533
いちいちアホに絡まないほうがいいぞ
0536デフォルトの名無しさん2006/02/12(日) 17:16:59
>>533
先輩は16ビットな開発環境でDB(デファインバイト)でマシン語でプログラムを書き、
それをビルドしてデータセグメントを実行可能にして32ビットなプログラムとして動作させてた。
0537デフォルトの名無しさん2006/02/12(日) 17:43:10
>>536
ちょっとまて
流れ的にVBの開発言語の話なんだが、
つまりおまえの先輩がほろほろVBを一人で開発していたってことでFA?
0538デフォルトの名無しさん2006/02/12(日) 17:54:25
>>537
ほろほろ、って?
0539デフォルトの名無しさん2006/02/12(日) 19:09:49
フォームモジュールに、
---------------------
Dim a#
Private b#
Public c#

Private Sub f(a#, b#, c#)
Print Me.a 'エラー:メソッドまたはデータメンバが見つかりません
Print Me.b 'エラー:メソッドまたはデータメンバが見つかりません
Print Me.c 'OK
End Sub

Private Sub Form_Click()
a = 10
b = 20
c = 30
Call f(1, 2, 3)
End Sub
--------------------
と書いて、フォームをクリックすると10,20,30と表示されることを期待したのですが、
エラーがでてしまいます。
名前を変えずに、スコープ解決できないものでしょうか?
this->aとか::aとかみたいに…
0540デフォルトの名無しさん2006/02/12(日) 19:52:51
言語的に出来たとしてもやらないよな。
可読性が悪くなるし、怪しい要素を持ち込むコードだし。

なんか、出来ない奴ほどこういう知らなくてもよいことにこだわる。
挙句に言語の欠陥だとかいい始めて。
0541デフォルトの名無しさん2006/02/12(日) 20:08:36
>>539
Print a#
Print b#
Print c#
じゃないの?
Me.a とかじゃなくて。
0542デフォルトの名無しさん2006/02/12(日) 20:10:20
>>541
取り消し。
何を勘違いしてたんだ・・・_| ̄|○
0543デフォルトの名無しさん2006/02/12(日) 20:13:07
>>540
お前はVBスレに潜む癌ですか?
0544デフォルトの名無しさん2006/02/12(日) 20:14:54
見る気にもならない糞コードだなおい
0545デフォルトの名無しさん2006/02/12(日) 20:22:36
>>539
無理
0546デフォルトの名無しさん2006/02/12(日) 20:24:13
スコープ被る範囲で同一名称になることを一瞬でも悩むぐらいなら、変数名変える。

もしそんなのがそこらじゅうにあるとすれば、スコープの広い変数が多いって時点で糞プログラム。
0547デフォルトの名無しさん2006/02/12(日) 20:41:20
いや、一部とかそこらじゅうとか手法を問題にしてるんじゃないでしょ・・・
言語の受けずに自由にプログラミングしたいと思うなら自然な疑問だと思うけど・・・
実際に使ってる人にそれを聞くのがそんなに変か?
0548デフォルトの名無しさん2006/02/12(日) 20:48:49
自由に組みたいってのと、無法に組みたいってのは違うわな。
まあ、趣味ならいいけど仕事だとしたら論外。
0549デフォルトの名無しさん2006/02/12(日) 20:59:34
どんなに厳格にスコープがあっても、絶対に同じ変数名になんかしないけどな。
もしするとしても、For カウンタの i 位か。
0550デフォルトの名無しさん2006/02/12(日) 21:26:29
>>549
それが被るってのも、もっとおかしい。
0551デフォルトの名無しさん2006/02/12(日) 21:31:04
おいおい馬鹿が揃ってるな。
なんのためのスコープ解決のメカニズムがあるんだよw

>>539
Private以外のメンバなら普通にMe.aとかでできるよ。
っていうか、それぐらい自分で実験しろよ。

>>549
本気でそう思ってるのならそれはおかしい。議論の余地無くね。
まあ、その程度のコードしか書いたことないからだろうけど。
0552デフォルトの名無しさん2006/02/12(日) 21:34:48
>>551
だからさ、きちんと設計したフォーム、クラスで、
関数内のローカル変数と、フォーム等の変数名称が被る場面がそんなにあるんか?
そうだとしたら、モジュール化が単に出来てないだけだよ。
>>540の指摘がそのままあてはまるよ、あんた。
0553デフォルトの名無しさん2006/02/12(日) 21:42:10
>>552
なら聞くけど、君はFormのFunctionまたはSubの中のローカル変数として
Formのプロパティと名前がバッティングする変数は絶対に使わないんだよね。
WidthもHeightもCaptionもBackColorも。

馬鹿馬鹿しい。
そんじゃなんのためのスコープなのよw
0554デフォルトの名無しさん2006/02/12(日) 21:45:42
>>553
フォームが持っているそれらプロパティと、フォーム内の関数等でそれを使う場合に、
もしフォームの値を使うならローカル変数・引数を作る必要ないし、
関数内でフォーム値じゃない値があるならば、その役割+Widthなどになるよ。
名前が被るってことがまずありえない。
0555デフォルトの名無しさん2006/02/12(日) 21:47:16
>>550
ん?
カウンタに i を使う事がおかしいの?
0556デフォルトの名無しさん2006/02/12(日) 21:48:25
>>555
違う、スコープの異なるiが2つ被るって状態がおかしい。
0557デフォルトの名無しさん2006/02/12(日) 21:48:36
>>551
て佑香、普通にコード書いてて全く同じ変数名なんて出てこないが。
0558デフォルトの名無しさん2006/02/12(日) 21:49:36
>>553
ローカル変数でそんな一致してしまう名前使う奴がこの世に存在するのか?
0559デフォルトの名無しさん2006/02/12(日) 21:50:40
>>556
何か話が噛み合ってないな。
Sub a()
Dim i As Integer
End Sub
Sub b()
Dim i As Integer
End Sub
って i を使うのがおかしいの?
何故??
0560デフォルトの名無しさん2006/02/12(日) 21:52:59
>>558
いや、純粋に関数化とかモジュール化が下手なんだと思うよ。
たとえば彼が出した例だって、それらの値を持つものってそれ自体がクラスになってると思うし。
WidthとかHeightとかが、ばらばらの状態のローカル変数で、フォームにただ存在する場面ってのがそもそもおかしい。

もしそれらの値があるとして、何か意味をもったWidthやHeightだったり、
フォーム自体じゃない別のオブジェクトに属するWidthやHeightでしょ?
前者なら、xxWidthなどの名前、後者ならクラスや構造体のメンバー。
つまり被る場面ってのがそもそも想定しにくい。
0561デフォルトの名無しさん2006/02/12(日) 21:55:12
>>559
スコープ被ってないじゃん。あんたこの流れのの最前提を理解してない。

form1のformのPrivateレベルでiが定義されていて、それと別にローカル変数のiがある状態でしょ?
この議論で流れからして>>449の例は。
0562デフォルトの名無しさん2006/02/12(日) 21:55:32
>>560
ダメだこりゃ。
ローカル変数って意味わかってるのかなw
OOP以前だなこりゃ。
0563デフォルトの名無しさん2006/02/12(日) 21:56:39
VB房同士仲良くしようぜ
0564デフォルトの名無しさん2006/02/12(日) 21:59:37
>>562
じゃあさ、フォームのPrivate関数内で、フォーム値以外の幅・高さをいじる場面ってどういう場面だ?
0565デフォルトの名無しさん2006/02/12(日) 22:05:21
>>564
リアルで聞いてるのなら頭悪すぎます。
たとえば単純な例として、直角三角形の斜辺と底辺の長さを引数にとって
高さを返す関数を考える。

このとき、「普通の」プログラマなら求める「高さ」を意味するローカル変数として、たとえば

  Dim Height as Single

とやるだろうね。
少なくとも俺はそうする。
0566デフォルトの名無しさん2006/02/12(日) 22:06:37
ローカル変数とプライベート変数の名前が被るなんて
そんなアホな話はVBスレならではだなぁw
そもそも、そんな名前を付ける必要はないし、つーか、やっちゃいけないし
言語仕様としては、そんなこと出来ないように設計されているべきだろう
それを自由にプログラムしたいとかアホかとw
0567デフォルトの名無しさん2006/02/12(日) 22:09:34
>>561
理解してないんじゃなくて、話の前提が違ってた。
それとは別の話をしてたので。
0568デフォルトの名無しさん2006/02/12(日) 22:09:43
>>565
普通にフォームのローカル関数なんかにしないから判らん。
それだけでモジュールかクラスに抜き出してるからフォームの変数と被らん。

だから、あんたモジュール分けとか出来てないって最初からいってるじゃん。
0569デフォルトの名無しさん2006/02/12(日) 22:14:06
>>565
そんな名前は糸色文寸に付けないけど。
例えば
Dim Height As Single
じゃなくて
Dim sglSankakuHeight As Single ' 変数名が長くなるけど
とかにする。
ハンガリー記法のプレフィクス+個別の表現+共通の部分、って感じ。
だから、全く同じ変数名が出てくる事なんて有り得ない。
0570デフォルトの名無しさん2006/02/12(日) 22:14:34
ふと、なんとなく思ったんだが変数名を組み立てて参照したがる初心者と似てる気がした
Data1〜Data5の個別の変数に対して
i = 1
Data & i = 3
みたいなことできませんか?って訊いてくる人w

>>565
単純に三角形っていってるけど、何の三角形なんだ?
それが三角形の形したボタンの高さなら「ボタンの高さ」とすればいいだろうし
そのボタンが特別な意味のボタンなら、その意味を付加した名前にすりゃいいだろ?
なんで、そんな漠然とただ「高さ」なんて分かりにくい変数名つかうんだ?
どうしても、そういう単純な名前がいいならハンガリアンでもモンゴリアンでもやればいいだろwww
0571デフォルトの名無しさん2006/02/12(日) 22:15:32
>>568
馬鹿だな本当。
話は何もフォームに限らない。

たとえば'Height'というメンバを持つクラスのPrivateな関数の中で
物理的に全く異なる「高さ」を意味するローカル変数が欲しくことなんて普通にある。
いままでそういうことがないなら、そりゃそれなりのコードしか書いてないだけw
0572デフォルトの名無しさん2006/02/12(日) 22:17:12
いや、やっぱあの例だとそもそも三角型に関する関数が漠然とフォームにあるのがおかしい。
それ自体は共通的な関数だからモジュールにするのがVB6風だし、
普通の言語だったら三角形クラス作るでしょ?
その時点で変数名被らないし・・・。
0573デフォルトの名無しさん2006/02/12(日) 22:17:54
>>571
だからさ、その高さって言葉が被る時点で、そのクラスなりフォームの設計がおかしいの。
理解できないかな?
0574デフォルトの名無しさん2006/02/12(日) 22:19:29
すげぇ馬鹿がいるな・・・
VB厨って言われるわけだ・・・
名前がかぶる時点で設計がおかしいってなんだよ・・・
0575デフォルトの名無しさん2006/02/12(日) 22:20:35
ああ悪い。時代が違うだけかもしれんな。
0576デフォルトの名無しさん2006/02/12(日) 22:21:18
>>574
責務分けができてないじゃん。
>>572と>>574が同一かはしらんが、自分の設計なりつくりが糞なことを自覚してないだけ。

クラスの分割が足りていない、クラス内の特定の値の集合をきちんと括れていないなどなど。
0577デフォルトの名無しさん2006/02/12(日) 22:22:58
おら、何だかワクワクしてきたぞ!
0578デフォルトの名無しさん2006/02/12(日) 22:23:24
>>571
物理的に全く異なる高さなら、同じ名前の変数になることはない
X = (Height / 2) - (Height / 2)
これが、文法的に可能だとしても、どっちがどっちかサッパリ分からんw
こんな可読性のない糞コード誰が書くかw
っていうか、なんか釣りなんじゃないかと思えてきた
この付き抜け具合はちょっと怪しいw
0579デフォルトの名無しさん2006/02/12(日) 22:28:01
議論整頓

・被ってOK派
言語仕様が許すんだし、命名はその直近の場面に対して最適なものでOK。

・被り論外派
そもそも同じ名前にならない。
同じ名前としても命名規則(ハンガリアン等)で避けるべき。
同じ名前わざわざ付けるなんて正気じゃない。
0580デフォルトの名無しさん2006/02/12(日) 22:28:49
>>578
釣りじゃないよ。
っていうか、君馬鹿でしょw

だからスコープを解決するためのメカニズムが(一応VBにも。。)あるから
混乱など起きない。

っていうか、これが釣りだと思う君のセンスって相当ヤバいよ。
そもそもスコープって概念が何のためにあるのかわかってないとしか思えない。
まあVBオンリーの人にありがちなOOPが理解できてないってことだと思うけど。
0581デフォルトの名無しさん2006/02/12(日) 22:29:02
悪いけど俺のは被ってない(ちんこ
0582デフォルトの名無しさん2006/02/12(日) 22:29:11
プライベート変数名なら、Height。
オブジェクト変数ならMe.Height。
それでいいじゃん。
0583デフォルトの名無しさん2006/02/12(日) 22:31:07
OOP言ってればなんでも許されると思ってるのか?
だから、あんたがいうOOPから考えても、責務分けが甘いって。
同じ名前がクラスレベルとローカルレベルに出る時点で、そのローカル側が何故中にいる?ってなる。

それに、プログラム慣れしている人だって、クラスレベル変数には _xxxなどプレフィクスつけて、
可読性を明示するようにしてる。

あんたが複数人である程度以上の規模のプログラムを組んだことないだけだよ。
0584デフォルトの名無しさん2006/02/12(日) 22:31:46
あのねえ、たとえば一度コレクション的な動作をするクラスを自分で書いてみ?
コレクションにはアイテム数を返す'Count'ってメンバが要るよね?

そしたら君はローカル変数に'Count'って命名することを封印するわけ?
そんな奴いたらタワケだと思うわw
0585デフォルトの名無しさん2006/02/12(日) 22:34:31
一つ言えば、ローカル関数の戻り値なんて全てretとかだな。
で、関数が当然1つの機能を有するだけだから、例えば戻り値にCountなんて変数は割り当てられない。
0586デフォルトの名無しさん2006/02/12(日) 22:34:31
これは要するに命名規則の話だな。

コードに height とあったとき
関数の頭を見ればわかるという人は、そのままheightと書く。
ローカル変数なのか、メンバ変数なのか、グローバル変数なのかわからないという人は、
たとえば、ローカル変数の最初か最後に _ (アンダーバー)をつけるとか
グローバル変数にg_、メンバ変数にm_をつけるとか。

要するにコーディングスタイルの話。
どっちでもいい。
0587デフォルトの名無しさん2006/02/12(日) 22:34:33
アイテムを返すのはgetCount
ローカル変数はcnt
0588デフォルトの名無しさん2006/02/12(日) 22:35:06
>>582
しかし質問の件だと無理なのです!
これがVBクオリティ><
0589デフォルトの名無しさん2006/02/12(日) 22:36:08
>>588
>>540
0590デフォルトの名無しさん2006/02/12(日) 22:37:36
>>588
別に無理じゃないでしょ。

混乱する可能性があるから、
ローカル変数(またはグローバル・メンバ変数)名を
工夫しろといっている人がいるだけであって。
0591デフォルトの名無しさん2006/02/12(日) 22:38:50
>>580
スコープはPC(言語環境)の為にある物だよ。
人間の為じゃない。
0592デフォルトの名無しさん2006/02/12(日) 22:40:22
>>589
>>590
いや、そういう場面に出くわして言語仕様的に出来る出来ないの話なのだが・・・
変数名を変えれば解決なんて質問しなくても分かりきってるわけで。
なんでわざわざそれを回答してるのかわからない。

0593デフォルトの名無しさん2006/02/12(日) 22:41:01
>>591
おいおいマジかよw
0594デフォルトの名無しさん2006/02/12(日) 22:41:15
>>591
変数名は人間のためにあるものだよ。
人間がA0001、A0002、A0003・・・とかいう変数名を使えば
スコープなんて要らない。

人間のためにわかりやすい変数名を使えるようにしたから
名前が重なったときに解決するためのスコープというものが出来た。
0595デフォルトの名無しさん2006/02/12(日) 22:42:04
>>592
だったら解決じゃん。いちいちそんな確認が必要なソースなんて書かないのが普通。
だから>>540なわけで。
0596デフォルトの名無しさん2006/02/12(日) 22:43:11
>>592
そういう場面って?
たとえば一つの関数内で、違う意味で同じ変数名を使いたいって事?
意味が違うのに???
0597デフォルトの名無しさん2006/02/12(日) 22:43:35
>>580
はいはい、わかったわかったw
オレがVBしかやったこと無い人ってことにしといていいし
君は、とても複雑で高度で難解なコードをたくさん書けるスーパーハカーでいいから、
早く同名の変数であふれかえったコードを書く作業に戻ってくれw
0598デフォルトの名無しさん2006/02/12(日) 22:43:37
>>594
スコープはあくまで言語を成立させるためのルールであって、
必ずしもそれを推奨してるわけじゃないからね。
どっちをとるか決めないと言語として成立しないし、コンパイラだって書けないし。
0599デフォルトの名無しさん2006/02/12(日) 22:46:23
>>597
> 早く同名の変数であふれかえったコードを書く作業に戻ってくれw
違う関数・オブジェクトでは同名の変数たくさんあるけどなw
全部違う名前にするなんて人間には不可能だし。
多人数で作業していればなおさら。

だからスコープというものがあって、
名前が被っても問題ないようになっているんだけどね。
VBを含めてほとんどの言語が。
0600デフォルトの名無しさん2006/02/12(日) 22:46:41
>>594
変数名とスコープは全然違う物だけど。
0601デフォルトの名無しさん2006/02/12(日) 22:47:35
>>599
逆だよ。
0602デフォルトの名無しさん2006/02/12(日) 22:48:36
>>600
そうだね。
でもスコープというものは人間のために出来たということ。
名前が完全に一意であれば、スコープなんて必要ないから。
0603デフォルトの名無しさん2006/02/12(日) 22:48:49
>>599
だからそれは普通でしょ?
で、スコープが被る場面で同一の名称って何?っていってるわけで。
例えばフォームのheightと被るとして、その中の値って本当に単なるheightなのか?って。
何かに属するheightなら構造体のメンバーだし・・・ってそれに全く答えてないよね。
自分のクラスわけが間違っていないって前提が間違ってるのに・・・。
0604デフォルトの名無しさん2006/02/12(日) 22:48:52
>>600
えー?
さすがにスコープと変数名別にしたらコンパイラ書けんでしょ。
0605デフォルトの名無しさん2006/02/12(日) 22:49:23
>>601
反論無いと信用されませんよ。
0606デフォルトの名無しさん2006/02/12(日) 22:50:46
このなかにコボラーがおる
おまえやろ
0607デフォルトの名無しさん2006/02/12(日) 22:50:51
>>599
>違う関数・オブジェクトでは同名の変数たくさんあるけどなw
んなの、あたりまえだろ
なんでプロジェクト全体でユニークにするなんて極論に行き着くんだよw
0608デフォルトの名無しさん2006/02/12(日) 22:51:02
>>603
あー。わかった。

> で、スコープが被る場面で
このスコープが被る場面ってのを具体的にどういうコードなのか言ってみて。
そうすれば、何を勘違いしているのか(みんなに)わかるだろうから。
0609デフォルトの名無しさん2006/02/12(日) 22:51:55
>>608
それを俺に聞くな。
俺は被らん派なんだから。
0610デフォルトの名無しさん2006/02/12(日) 22:53:21
被らん派ってのも意味がわからんw

どういうのが被らないのか、自分でわかっているから言えるんだよね。
どういう状態が被らないと言っているのか説明してみて。
0611デフォルトの名無しさん2006/02/12(日) 22:55:08
>>610
>>603に書いてあるだろ?
そのHeightなりってのが、そもそも他の何かに属するHeightであるならば、それは構造体のメンバー。
この時点でまず被らない。
そうじゃないとしても、何かのHeightだから、xxxHehghtとなるはず。
0612デフォルトの名無しさん2006/02/12(日) 22:55:13
やっぱ議論は会議室でやらないとな。
ホワイトボード使って。
0613デフォルトの名無しさん2006/02/12(日) 22:57:46
スコープの話と変数名の付け方の話、2つが流れてるのか?
0614デフォルトの名無しさん2006/02/12(日) 22:57:47
長々とやって結局命名規則の話かよ。

グローバル・メンバ・ローカル変数に名前が被らないように
プリフィックスをつける派とつけない派。

そういうことだろ?
0615デフォルトの名無しさん2006/02/12(日) 22:59:32
命名規則でもないだろ?
単なる高さじゃないものに対して、なんでもheightって命名する人って。
それをいっちゃー、変数なんてa,b,cでいいじゃんってのと同レベルと思うけど。
■ このスレッドは過去ログ倉庫に格納されています