VBプログラマ質問スレ(Ver.6.0 まで) part62at TECH
VBプログラマ質問スレ(Ver.6.0 まで) part62 - 暇つぶし2ch1:デフォルトの名無しさん
13/02/15 16:54:12.79
ここは Visual Basic ~6.0 の質問スレです。
質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。

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

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

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

MSDN Online Japan ホーム
 URLリンク(www.microsoft.com)
Visual Studio 6.0 Service Pack 6
 URLリンク(msdn.microsoft.com)
Google
 URLリンク(www.google.co.jp)

前スレ VBプログラマ質問スレ(Ver.6.0 まで) part61
スレリンク(tech板)

※「まず自分で調べる」クセを身につけよう。

2:デフォルトの名無しさん
13/02/15 16:54:45.93
Part 1 URLリンク(piza2.2ch.net)
Part 2 URLリンク(piza2.2ch.net)
Part 3 URLリンク(piza2.2ch.net)
Part 4 URLリンク(pc.2ch.net)
Part 5 URLリンク(pc.2ch.net)
Part 6 URLリンク(pc.2ch.net)
Part 7 URLリンク(pc.2ch.net)
Part 8 URLリンク(pc.2ch.net)
Part 9 URLリンク(pc.2ch.net)
Part10 URLリンク(pc.2ch.net)
Part11 URLリンク(pc.2ch.net)
Part12 URLリンク(pc3.2ch.net)
Part13 URLリンク(pc3.2ch.net)
Part14 URLリンク(pc3.2ch.net)
Part15 URLリンク(pc3.2ch.net)
Part16 URLリンク(pc3.2ch.net)
Part17 URLリンク(pc3.2ch.net)
Part18 URLリンク(pc3.2ch.net)
Part19 URLリンク(pc3.2ch.net)
Part20 URLリンク(pc2.2ch.net)
Part21 URLリンク(pc2.2ch.net)
Part22 URLリンク(pc2.2ch.net)
Part23 URLリンク(pc2.2ch.net)
Part24 URLリンク(pc2.2ch.net)
Part25 URLリンク(pc2.2ch.net)
Part26 URLリンク(pc2.2ch.net)
Part27 URLリンク(pc2.2ch.net)
Part28 URLリンク(pc2.2ch.net)
Part29 URLリンク(pc2.2ch.net)

3:デフォルトの名無しさん
13/02/15 16:55:08.89
Part30 スレリンク(tech板)
Part31 スレリンク(tech板)
Part32 スレリンク(tech板)
Part33 スレリンク(tech板)
Part34 スレリンク(tech板)
Part35 スレリンク(tech板)
Part36 スレリンク(tech板)
Part37 スレリンク(tech板)
Part38 スレリンク(tech板)
Part39 スレリンク(tech板)
Part40 スレリンク(tech板)
Part41 スレリンク(tech板)
Part42 スレリンク(tech板)
Part43 スレリンク(tech板)
Part44 スレリンク(tech板)
Part45 スレリンク(tech板)
Part46 スレリンク(tech板)
Part47 スレリンク(tech板)
Part48 スレリンク(tech板)
Part49 スレリンク(tech板)
Part50 スレリンク(tech板)
Part51 スレリンク(tech板)
Part52 スレリンク(tech板)
Part53 スレリンク(tech板)
Part54 スレリンク(tech板)
Part55 スレリンク(tech板)
Part56 スレリンク(tech板)
Part57 スレリンク(tech板)
Part58 スレリンク(tech板)
Part59 スレリンク(tech板)
Part60 スレリンク(tech板)

4:デフォルトの名無しさん
13/02/15 20:00:43.00
Part61 スレリンク(tech板)

5:デフォルトの名無しさん
13/02/16 00:38:58.57
>>1
おつ

6:デフォルトの名無しさん
13/02/16 07:45:27.47
>>1
おつ

7:デフォルトの名無しさん
13/02/16 15:20:12.53
>>1
おつ

8:デフォルトの名無しさん
13/02/16 17:29:02.07
マジかよ
VB6で動的にDLLを使うの無理なのかよ
Susieプラグインとか使えねえじゃn

9:デフォルトの名無しさん
13/02/16 17:33:01.35
>>8
使えるが?

たとえばExcelオブジェクトをCreateObjectするとか
そういうことだろ

10:デフォルトの名無しさん
13/02/16 17:33:38.36
VBPs of Visual Basic
URLリンク(www1.koalanet.ne.jp)
タイトル Susie Plug-inを動的に利用する
分類 VB6で作成したクラス化を伴うサンプル
特徴 VBのランタイムとWindowsAPI関数のみを使って、実行時にロードした
DLL内の関数を利用します。

11:デフォルトの名無しさん
13/02/16 17:40:16.75
cdeclで呼び出されているDLL関数をVB6で使う方法ってある?
今とても困ってます。

12:デフォルトの名無しさん
13/02/16 18:41:28.43
あるわけねーだろ。はい論破。

13:デフォルトの名無しさん
13/02/16 18:46:19.34
>>11
VB6で使えるように(他の言語で)
ラッピングすれば良い。

バインディングってやつさ。

14:デフォルトの名無しさん
13/02/16 19:08:40.37
>>13
理論的にはできても実際には不可能だよ

15:デフォルトの名無しさん
13/02/16 19:11:11.13
はい論破

1. Declareステートメントではstdcall呼び出し規約しか使えない?
→ 「VB6.0 で swprintf を使ってみる +α」、「VB で機械語を実行する - プログラミングの丘」より、cdecl呼び出し規約の関数も呼び出すことが出来ます。

16:デフォルトの名無しさん
13/02/16 19:16:12.90
記事としてはよく見るが宣伝だろ?
実際に出来たというコードを見た事がないな

17:デフォルトの名無しさん
13/02/16 19:22:09.18
あるdllのエクスポート関数がstdcallで宣言されているかcdeclで宣言されているか
簡単に見極める方法ってないかな?

18:デフォルトの名無しさん
13/02/16 19:24:11.25
>>16
見たことがある。はい論破。

19:デフォルトの名無しさん
13/02/16 19:25:35.81
>>17
そんな事ができれば苦労はないわ。カットアンドトライでどっちかが動くかやってみろ。
確率1/2だろうがwww はい論破。

20:デフォルトの名無しさん
13/02/16 19:27:16.48
VB6でアセンブラって・・・。
なんか昔のボーランド Turbo Cのインラインアセンブラを彷彿とさせるね。
これは目から鱗ですわw

21:デフォルトの名無しさん
13/02/16 19:33:46.52
昔からBASICと機械語はよく組み合わせられる。

昔有名だったベーシックマガジン
通称ベーマガの投稿プログラムでも
DATA文で機械語を入力実行していた

22:デフォルトの名無しさん
13/02/16 19:47:01.48
>>21
一見水と油の関係のように思えるが面白いもんだね。

23:デフォルトの名無しさん
13/02/16 19:53:09.39
>>17
逆アセンブルすればええやん。リバースエンジニアリングってやつよ。

24:11
13/02/16 20:04:35.17
CallCdeclFunctionを使ってみました。完璧です!
これだとcdecl DLLをラップしたstdcall DLLを作成する必要がなく
ダイレクトに使えて非常に使いやすいです。

心より感謝申し上げますm(_ _)m

25:デフォルトの名無しさん
13/02/16 20:06:24.72
俺も今までこの手の事をするのにVC++ 6.0でラッパーDllを作ってたわ
世の中には頭イイ人がいるもんだな

26:デフォルトの名無しさん
13/02/16 20:07:00.15
認めない。VBでcdeclは呼び出せない。絶対に認めない。はい論破。

27:11
13/02/16 20:29:21.38
>>26
cdeclで呼び出されているDLL関数をVB6で使う方法が知りたかったので
VB6の機能としてcdeclが直接呼び出せなければならないことはありませんでした。

28:デフォルトの名無しさん
13/02/16 20:36:16.25
そのCallCdeclFunctionは圧巻だな。理論上は可能だが実現したのはその人がはじめてだろうな。
まさかメモリー上に展開して機械語を組み込むとは・・・。

29:デフォルトの名無しさん
13/02/16 21:43:52.39
POKEとPEEKだっけか

30:デフォルトの名無しさん
13/02/16 21:44:19.64
それってデータ実行防止にひっかからんのか?

31:デフォルトの名無しさん
13/02/16 21:50:57.52
>>30
スレッドを作成しているから問題無いよ。
システム上はコード領域のページ内で実行される。
つ、初心者が鼻息荒くしてみっともないぜ?はい論破。

32:デフォルトの名無しさん
13/02/16 21:53:03.57
>>30
ここでのキーポイントは VirtualAlloc と CreateThread です。

VirtualAlloc は、通常は大きなサイズのメモリを割り当てるときに使いますが、
コードをコピーして実行することが可能なメモリを割り当てるときにも使えます。
通常のメモリでは「実行」の属性が無いので、場合によってはエラーが発生しますが、
この関数を、PAGE_EXECUTE_READWRITE などの保護モードで呼び出せば欲しいメモリのアドレスがもらえます。

CreateThread は、本来は「スレッド」を作成し、メインのコードを実行している傍ら別の作業を行う、というときなどに使います。
ここでは、単にメモリ上にあるコードを呼び出すという目的にのみ使っています。
これは、VB にはアドレスを指定して関数を呼び出す(Quick BASIC でいう CALL ABSOLUTE 命令)が無いためで、
CreateThread 以外の関数を使うなら EnumWindows 関数など、引数にコールバック関数を指定でき、
且つ他の動作に影響を与えない関数を使用してください。

33:デフォルトの名無しさん
13/02/16 21:55:39.08
>>31
あはは、スレッドの作成とコード実行は関係ないじゃん。論破君もたいしたことないね。あはははは。

34:デフォルトの名無しさん
13/02/16 21:58:53.87
VB6.0でCreateThreadを使うのはかなり怖い。
ミッションクリティカル気分を味わえるな。

35:デフォルトの名無しさん
13/02/16 22:03:22.54
VBで関数ポインタを呼び出す
URLリンク(nienie.com)

これはどうなの?

36:デフォルトの名無しさん
13/02/16 22:08:42.86
>>35
それはデータ実行防止にひっかかるね。アウト。

37:デフォルトの名無しさん
13/02/16 22:23:18.44
Windows 8はハードウェアでDEP強制だから厳しい罠

38:デフォルトの名無しさん
13/02/16 22:24:45.31
Microsoft Visual Basic Version 5.0 で使用する DLL の開発に関する注意
URLリンク(www.microsoft.com)

39:デフォルトの名無しさん
13/02/16 22:27:04.23
関数ポインタと引数リストを引数にして渡せばそれを実行してくれる関数と作ってDLLにすればいいの?

40:デフォルトの名無しさん
13/02/16 22:30:12.66
>>39
日本語でおk

41:デフォルトの名無しさん
13/02/16 22:34:47.61
VBAで関数ポインタを利用する方法
URLリンク(akihitoyamashiro.com)
これはどうなの?

42:デフォルトの名無しさん
13/02/16 22:37:50.20
機械語無しでwsprintfWをVBから呼び出すてるのな

43:デフォルトの名無しさん
13/02/16 22:40:36.33
VBAでの関数ポインタの利用方法 (1/4):CodeZine
URLリンク(codezine.jp)

44:デフォルトの名無しさん
13/02/16 22:41:46.11
>>41
それは元々DLLの関数を呼び出すものなのでDEPは問題無い。
しかもcdeclな関数を呼び出せる。

45:デフォルトの名無しさん
13/02/16 22:44:01.27
機械語というリスキーな操作は無駄だった

46:デフォルトの名無しさん
13/02/16 22:46:41.36
つまりどういうことだってばよ?

47:デフォルトの名無しさん
13/02/16 22:47:45.84
>>43
チクショー!3ページ目からは会員限定かよ!

48:デフォルトの名無しさん
13/02/16 22:50:03.78
URLリンク(akihitoyamashiro.com)

このInputBoxのキャンセル確認方法って結構有名なの?

49:デフォルトの名無しさん
13/02/16 22:51:26.61
>>41
引数をすべてVariant で指定するところが何とも気持ち悪いな

50:デフォルトの名無しさん
13/02/16 22:52:05.53
機械語のほうがスマートだな

51:デフォルトの名無しさん
13/02/16 22:54:05.85
>>50
安定さで言えばVBAの方だな。

52:デフォルトの名無しさん
13/02/16 22:56:54.01
どちらもトリッキーな手法なのには違いない

53:デフォルトの名無しさん
13/02/16 22:58:52.59
しかし最近のこのスレ、真面目にすごくタメになる内容になってないか?
昨今の論破君荒らしの状況に比べるとまるで別スレだわねぇw

54:デフォルトの名無しさん
13/02/16 23:00:39.23
こういうTipsを個人個人が自身のHPで細々と紹介するにとどまってるから普及しない

55:デフォルトの名無しさん
13/02/16 23:02:33.70
>>41使えば動的にDLL関数使い放題ってことか

56:デフォルトの名無しさん
13/02/16 23:05:47.87
>>55
恐れ入ったね。VC++6をDLLをラップするためだけにビルドしていた俺は
いったい何をやっていたのかと情けなくなる。

57:デフォルトの名無しさん
13/02/16 23:10:21.90
VB6よりVBAのほうが普及率高いからVBAからのアプローチで技巧的なコードを探したほうがいいってことか?

58:デフォルトの名無しさん
13/02/16 23:14:00.84
>>57
VB6.0は終わった言語だが、VBAはOfficeで進化しつづけている言語なので
VB6.0のスキルは実は非常に貴重なのさ。
JavaとかC#とか言語の首位を競い合っている連中は
会社がリストラをはじめたら真っ先に処分される連中だが
VBAを押さえておけば社内で尊重される
実は俺がそれでバレンタインにはチョコを17個もらった
関係ない?いやあるんだよこれがね

59:デフォルトの名無しさん
13/02/16 23:16:14.71
>>58
こいつらか?w

じだいおくれの糞言語
スレリンク(tech板)

60:デフォルトの名無しさん
13/02/16 23:18:40.57
有用な情報載せてる個人サイトで一番困るのは突然の閉鎖で参照できなくなることだな

61:デフォルトの名無しさん
13/02/16 23:24:51.96
>>60
俺は有用な情報をみつけたら片っ端からInfoPathに入れてSkyDriveにシンクしてるから
いつ閉鎖されても大丈夫

62:デフォルトの名無しさん
13/02/16 23:26:39.36
個人サイトだろうが企業サイトだろうがストレージサービスだろうが
いつ閉鎖するかも知らんリスクは当然ついてまわる
いいもん見つけたら即ローカルに保存すべし

63:デフォルトの名無しさん
13/02/16 23:27:36.76
>>62
ローカルもいいけどクラウドもねっ♪

64:デフォルトの名無しさん
13/02/16 23:28:51.87
InfoPathのあいまい検索が威力を発揮するな。

65:デフォルトの名無しさん
13/02/17 05:35:45.83
>>41の話って前にも出なかったか?

66:デフォルトの名無しさん
13/02/17 08:27:24.44
この流れだと、TypeLib Informationを出しておかないといけないかな?
他の言語で言えばリフレクション。
クラスが持っているメソッド一覧を取得したり
特定のメソッドを文字列で呼び出したりできる。

さすがにもう随分と情報が減ってしまっているな。
URLリンク(msdn.microsoft.com)

67:デフォルトの名無しさん
13/02/17 08:48:09.62
>>62
つウェブ魚拓 URLリンク(megalodon.jp)

68:デフォルトの名無しさん
13/02/17 21:39:30.09
>特定のメソッドを文字列で呼び出したりできる

CallByNameじゃあかんのか?

69:デフォルトの名無しさん
13/02/17 21:43:50.98
オブジェクトブラウザで非表示のメンバを表示するとstrptrとか隠し関数とか出てくんのな

70:デフォルトの名無しさん
13/02/18 09:01:24.78
>>69
なにを今更・・・。

キミにオススメの隠し関数は

strYourIQ

71:デフォルトの名無しさん
13/02/19 19:11:23.00


72:デフォルトの名無しさん
13/02/21 16:57:07.53
>>70
何故にstr?
そして相手に使わせるならYourではなくMyだろ?

君も自分のIQの低さを知っておいた方が良いのでは?

73:デフォルトの名無しさん
13/02/21 17:10:21.38
>>72
よくわからないけど、お前みたいにファビョって噛みついてくる奴を指して Your なんじゃね?
strなのは小数点以下が丸められるのを防ぐためだろう
おそらく 0.0000000001とかだろうからw

74:デフォルトの名無しさん
13/02/21 17:26:34.11
最近、論破君はやられっぱなし

75:デフォルトの名無しさん
13/02/21 18:34:18.10
苦しすぎる言い訳w

76:デフォルトの名無しさん
13/02/21 18:43:51.16
妥当な見解じゃね?

77:デフォルトの名無しさん
13/02/21 21:56:27.25
あっ、はい論破。

78:デフォルトの名無しさん
13/02/21 22:16:35.68
ロンパールームかよ?うつみみどりを呼んで来い!w

79:デフォルトの名無しさん
13/02/21 23:33:07.14
ろんぱり

80:デフォルトの名無しさん
13/02/21 23:42:29.22
はい、ろんぱり。

81:デフォルトの名無しさん
13/02/21 23:51:25.94
ケロンパ、ケロンパ

82:デフォルトの名無しさん
13/02/23 12:50:42.11
Windows Blue リリースと同時にVB6.0 ランタイムサポート終了の噂

出元が広報なところが信憑性の高い理由だと?

83:デフォルトの名無しさん
13/02/23 12:52:09.75
Windows Blue リリースと同時にVB6.0 ランタイムサポート終了の噂

でもと = >>82

84:デフォルトの名無しさん
13/02/23 13:54:50.95
今までに何度同じような未公式発表があっただろうか

85:デフォルトの名無しさん
13/02/23 18:14:39.81
今度は公式発表じゃない?SVから情報っぽいし

86:デフォルトの名無しさん
13/02/23 19:19:20.83
さすがにもう退役でしょう。何の不思議もない。
逆に今までサポートされていた事が脅威だよ。

87:デフォルトの名無しさん
13/02/23 19:23:39.31
VB.NETもそこそこ普及したし、C#も来てるし、もう旧VBのサポを停止すりゃいい

88:デフォルトの名無しさん
13/02/23 19:28:22.12
結局C#は失敗だったね。Javaユーザーからは相手にされなかった。
Javaのオープンソース資産をC#へ移植しドヤ顔で商用化しているオフショアが後を絶たず
日本企業が元はJavaの資産だとは知らずに金払って使っている実態とかね。
業界からはとにかく嫌われ者のC#ですが、VB.netは徐々にシェアを伸ばしていますね。
ここでVB6のサポートが終了すればJavaに迫る勢いになるのは必至どす。

89:デフォルトの名無しさん
13/02/23 19:33:26.61
旧VBでしかできないこと、普通のCやC++でしかできなこと、Javaでしかできなこと、.NET系のVBでしか出来ないこと、C#でしかできないこと、C++でしかできないこと

これらを比較して旧VBのメリット・デメリットを明確にし、旧VBを使うべき事案を絞り見つけだすんだ!

90:デフォルトの名無しさん
13/02/23 19:43:15.12
VB6.0はOLEを使わなければCコンパイラと変わらない実行性能のコードを吐くことが可能。
net系はJITにしようがどうしようがバイナリレベルでは重複コードや冗長コードが満載となる。
でもプログラマーが糞だとどっちも糞言語でしかない。これは何を使っても同じって事。

91:デフォルトの名無しさん
13/02/23 22:24:12.47
そうやってVBしか使えない自分を必死で擁護して虚しくないのかね。
まあたぶんそういう自覚がないから虚しさも感じないんだろうけど。
馬鹿って幸せでいいよね。俺は不幸でも賢いほうがいいけど。

92:デフォルトの名無しさん
13/02/23 22:27:18.84
《参考》 プログラミング言語開発の歴史 Ver1.21

1950||||1960.|||1970.||||1980||1990|||| 2000.||||2010||||

ALGOL→ FORTRAN → BASIC ─→ Sinclair BASIC ──→ DarkBASIC → DarkBASIC Professional [ 独立系 / Windows ]
│││      │     │││
│││      │     ││└──→ MSX-BASIC ──→ 99BASIC → 終了 [ 独立系 / Windows ]
│││      │     │└─→ GW-BASIC ─→ QuickBASIC → 終了 [ Microsoft / DOS ]
│││      │     └─→ CBM-BASIC ─→ AMIGA BASIC → 終了 [ 独立系 / AMIGA ]
│││      │
│││      └─→ FORTRAN77 → FORTRAN90 → FORTRAN95 → 終了 [ 独立系 ]
│││              └─→ FORM → 終了 [ 独立系 / MZ-80K ]
│││
││└───→ PASCAL ──→ C ─→ C++ → VC++ → 終了 [ Microsoft / Windows ]
││               │││││       │    └──→ VC# [ Microsoft / Windows ]
││               │││││       └────→ Objective C [ Apple / iOS / Mac ]
││               │││││
││               ││││└─────→ Visual BASIC → 終了 [ Microsoft / Windows ]
││               ││││                      └─→ GLbasic [ 独立系 / マルチプラットフォーム ]
││               ││││
││               │││└─────────→ AppGAME Kit [ 独立系 / マルチプラットフォーム ]
││               │││
││               ││└───→ Delphi → 終了 [ 独立系 / DOS / Windows ]
││               │└───→ TL/1 → 終了 [ 独立系 / MSX ]
││               └───→ PALL → 終了 [ 独立系 / MZ-80K ]
││
│└──→ PL/1 → 終了 [ 独立系 ]
└─────→ VTL → GAME-MZ [ MZ-80K ] ─→ GAME-86 → RVTL [ 独立系 / Windows / Linux ]

93:デフォルトの名無しさん
13/02/23 22:31:24.92
>>91
> 自分を必死で擁護して虚しくないのかね。
> ま あたぶんそういう自覚がないから虚しさも感じないんだろうけど。
> 馬鹿って幸せでいいよね。

実体験に裏づけされた、説得力ある文章だな (w

94:デフォルトの名無しさん
13/02/23 22:36:32.79
>>91
「VBしか使えない自分」ってもしかしたらお前自身の事じゃないのか?
なぜならそうでない俺からするとそういう発想さえ浮かんでこないからだ。
まあ確かにそういう人もこの世の中にはいるかも知れないが
涙拭いてガンバレよ。

95:デフォルトの名無しさん
13/02/23 22:38:09.87
問題はVB6しか使えない人が、なぜかVB.netへ移行できない事なんだがなw

96:デフォルトの名無しさん
13/02/23 22:39:43.00
>>92
VB.netを抜いたのはわざとか?wwwwww

97:デフォルトの名無しさん
13/02/23 22:41:37.65
たとえばStringBuilderもなければコレクションに代表されるライブラリも何もない、
かと言ってポインタ使って生のメモリを操作することもできないVBがCと同じぐらい高速って、
こういうのを必死の擁護と言わなくて何をそういうのかね。

まあ言って分かるようならVBerなわけがないんだけど。

98:デフォルトの名無しさん
13/02/23 22:42:18.10
>>92
Delphi 終了してねーぞゴルァ!

99:デフォルトの名無しさん
13/02/23 22:44:42.58
>>97
そういう問題でもない。
VB6のソフトウェア資産は単純にコンパイラが吐いたものだけでなく
ActiveXやCOM、DLLなどの集合体になって資産と化している。
言語は言語であって資産ではない。StringBuilderの有無など鼻糞に過ぎない。

100:デフォルトの名無しさん
13/02/23 22:46:34.33
>>99
そういう問題じゃないと君が思うのは、君が「そういうのが問題になる」ような
コードを書いたことがないVBerだから。馬鹿じゃないのか。
だいいち自分がVBはC並に高速だと言い出したのじゃないのかよ。

101:デフォルトの名無しさん
13/02/23 22:47:11.12
ポインタ使って生のメモリを操作することができるのがすごいなら
俺はMSDOSでMicrosoft Cコンパイラ ver4.0くらいが一番すごいと思うな。
ver 5になると過度な最適化で変な事になる。
何事もバランスが大切って事ですわ。高速論議は経験の浅い
未熟なプログラマがすることだもんね。

102:デフォルトの名無しさん
13/02/23 22:48:22.34
>>101
あんた60代だろ?www

103:デフォルトの名無しさん
13/02/23 22:50:28.22
>>101
> 何事もバランスが大切って事ですわ。高速論議は経験の浅い
> 未熟なプログラマがすることだもんね。
全力で同意せざるをえない。

104:デフォルトの名無しさん
13/02/23 22:55:20.55
StringBuilder基地概って周期的に沸くよな?

105:デフォルトの名無しさん
13/02/23 22:57:26.71
>>92
C#がC++からの派生とはどうしても考えられない俺がここにイル

106:デフォルトの名無しさん
13/02/23 23:18:29.05
>>105
GLBasicをVBから派生させている段階で
専門学校生の発案であることがわかりそうなもん

107:デフォルトの名無しさん
13/02/23 23:18:34.07
VBってBASICからの派生じゃなくてPASCALからの派生だったのか

108:デフォルトの名無しさん
13/02/23 23:19:50.17
>>107


109:デフォルトの名無しさん
13/02/23 23:23:51.95
C#の血統はこんなところだな。

C++ 戸籍上の父親
VB6 代理母
java 卵子提供者
J++ 書類上の卵子提供者
Delphi 精子提供者
ヘルスバーグ 受胎告知

110:デフォルトの名無しさん
13/02/23 23:31:14.31
>>109
良くわかってらっしゃる。熟練プログラマーとお見受けしますた!

111:デフォルトの名無しさん
13/02/23 23:38:58.95
>>109
C++Builder 異母兄弟

112:デフォルトの名無しさん
13/02/24 11:55:26.62
VB.net 一卵性双生児

113:デフォルトの名無しさん
13/02/25 13:54:42.52
>>112
それは違う。同姓同名の赤の他人だろ。

114:デフォルトの名無しさん
13/02/25 19:39:17.92
>>113
109からの流れを見よ

115:デフォルトの名無しさん
13/02/25 20:53:29.88
ゴスリンとヘルスバーグでウケとかタチとかの薄い本見たときはぶっ飛んだぞ。

116:デフォルトの名無しさん
13/02/26 03:42:17.69
GetPrivateProfileStringで全角文字使えないかんじ?

117:デフォルトの名無しさん
13/02/26 03:48:14.84
s = String(20, " ")
r = GetPrivateProfileString(ap,ky,df,s,20,fl)
n = len(s)
としたとき
全角文字が無いとき、例えば abcdefg だったとすると
r=7 n=20 ってなって8文字目がNullコードになってるんだけど
全角文字があるとき、例えば あいう だったとすると
r=6 n=17 ってなって4文字目がNullコードになって
sの変数のサイズが変わっちゃうんだけど
sの消えた3文字分のメモリはどこいっちゃったの?って感じで
これってヤバイの?大丈夫なの?

118:デフォルトの名無しさん
13/02/26 03:49:47.13
sには固定サイズの文字列渡したほうがいいの?
Dim s As String * 20
みたいな

119:デフォルトの名無しさん
13/02/26 06:59:19.24
文字数とバイト数は違うぞ
LenじゃなくてLenB使ってみ

120:デフォルトの名無しさん
13/02/26 10:59:04.17
>>117
全角を使うときは値をダブルクォーテーションで囲えアホが

121:デフォルトの名無しさん
13/02/26 19:59:22.42
>>119
それに何の意味があるのだろうか

Len("abc") > 3
LenB("abc") > 6
Len("あいう") > 3
LenB("あいう") > 6
Len("abあ") > 3
LenB("abあ") > 6

122:デフォルトの名無しさん
13/02/26 20:01:48.31
>>120
ダブルクオーツで囲っても>>117と結果同じだったんだけど・・・

123:デフォルトの名無しさん
13/02/26 20:09:29.55
GetPrivateProfileStringは最初の=以降から文末までを読み込むようで
"あいう"えお"
という二重引用符を間に挟んでやると
文頭と文末の引用符を除いた
あいう"えお
を返してくれたよ

124:デフォルトの名無しさん
13/02/26 20:12:51.87
>キー名に関連付けられている文字列が単一引用符や二重引用符で囲まれている場合、GetPrivateProfileString 関数はこれらの引用符を取り除きます。

単一引用符でも取り除かれるのか
これは意外だ

つかVB6付属のMSDNには文字列書き込むときには引用符でくくれとは書いてないように見えるのだが

125:デフォルトの名無しさん
13/02/26 20:22:42.95
今どきiniとかないわー
xmlにしろよ

126:デフォルトの名無しさん
13/02/26 20:25:59.25
っていうか質問の内容を勘違いしないで
全角文字が取得できないなんて一言も言ってないし
20文字分(40bytes)のメモリを割り当てた変数が
全角含む文字列渡すと全角1文字につき1byte分減って戻ってくるけど
これってメモリ関連のトラブルの発生源になったりしないか聞きたいんだけど

127:デフォルトの名無しさん
13/02/26 20:28:31.08
固定長文字列にしたら元の文字列サイズ分ちゃんと戻ってくるのな
可変長文字列をGetPrivateProfileStringに渡しちゃまずいのか?

128:デフォルトの名無しさん
13/02/26 20:35:35.69
>>125
少量のキーと値の関連付け保持に便利じゃん
レジストリは使いたくないし、xmlだと一部の文字にエスケープとか使って配慮しないといけないし

129:デフォルトの名無しさん
13/02/26 20:58:55.89
>>126
ANSIとUNICODEの変換でそう見えるだけ
UNICODEでの文字数とANSIの文字数(バイト数)は一致しない

130:デフォルトの名無しさん
13/02/26 21:17:03.54
固定長文字列でもちゃんと戻ってくるかと思ったけど違ったわ
"A"で初期化したけど可変長文字列と同様に減って戻ってきてるわ
減った分が32、半角スペースで埋まって戻ってきた
やはり仕様なのか、もしくは全角使うのがまずいのか
GetPrivateProfileStringAじゃなくGetPrivateProfileStringWを使うべきなのか

>>129
APIが全角1文字を半角2文字分としてよこしてVBが2文字分の領域を確保するけど
バイトコードからVBが全角文字だと判断して2文字分を1文字分に減らすってこと?

131:デフォルトの名無しさん
13/02/26 21:25:24.91
あ=82A0
をAPIが 82 と A0 の1バイト文字(半角)2文字分としてVBに渡して
がVBで確保した2文字分の領域4バイト 0000 0000 に上書きされて
0082 00A0 となったところをVBが全角文字と判断して
0082 00A0 → 82A0 という1文字分(2バイト)減らして変数に戻すってこと?

132:デフォルトの名無しさん
13/02/26 21:57:53.94
VBが確保した領域10文字なら10バイト分をAPIに渡して
文字列が「あAA」なら
APIは10バイトの最初2バイトを82、A0で埋めて3バイト目を65、4バイト目を65、5バイト目を0にしてVBに返し
VBは10バイトを1バイトずつ解釈していってunicodeに変換して変数に再割り当てしてるってことなのか?
でもそれだと適当な文字で初期化した固定長文字列の減った部分が半角スペースで初期化されてるのはおかしいし
どうなってんだこれ

133:デフォルトの名無しさん
13/02/26 22:05:41.59
何このバカ?
値が取れればそれでいいだろ?頭使えよ。

134:デフォルトの名無しさん
13/02/26 22:06:22.11
>>129
なんかわけわかんねえレスだなと思ってたらGetPrivateProfileStringの戻り値の話?
戻り値は書き込んだバイト数返すはずだからLenやLenBした値と違うのは当たり前じゃね?
そうじゃなくて変数の割り当てメモリが減ってるって話なんだけど

135:デフォルトの名無しさん
13/02/26 22:10:14.91
GetPrivateProfileString自体がVB6の関数でも何でもないのに戻り値が理不尽だと騒ぐバカ。
相手にする方がどうかしてる。

136:デフォルトの名無しさん
13/02/26 22:12:23.64
だれも戻り値の話なんかしてないだろ
確保しておいた変数のサイズがAPIに渡したら変数のサイズが変わったって言ってんだよ
文字列の長さの話じゃねえし戻り値の話でもない

137:デフォルトの名無しさん
13/02/26 22:14:00.99
>>136
冷静に。
サイズなんか変ってないよ。
BSTRとみなした時の文字数が変っただけ。

138:デフォルトの名無しさん
13/02/26 22:14:30.29
変数の割り当てメモリはどうやって調べた?
文字列の長さ=割り当てメモリじゃねーぞ。

139:デフォルトの名無しさん
13/02/26 22:15:56.02
>>136
なに興奮してんだこのアホ。関係ない戻り値で反応しやがったw

140:デフォルトの名無しさん
13/02/26 22:26:25.87
>>137-138
Dim s As String * 10
s = String(10, "A") ' s="AAAAAAAAAA" Len(s)=10, LenB(s)=20
GetPrivateProfileString(ap,ky,df,s,10,fl)
のコードで

文字列が"AAAA"の場合
s="AAAA0AAAAA" ( 0 はNull文字)

文字列が"あAA"の場合
s="あAA0AAAAA_" ( 0 はNull文字 _ は半角スペース)

固定長文字列を渡した場合、全角含む文字が渡された場合に後部に半角スペースが入るのは何でなの?
これって確保した変数サイズが変わったってことじゃないの?

141:デフォルトの名無しさん
13/02/26 22:29:01.06
>>140
半角スペースだって分かってるならTrimすればええやん 初心者?

142:デフォルトの名無しさん
13/02/26 22:30:12.12
> これって確保した変数サイズが変わったってことじゃないの?
違います。終了。

143:デフォルトの名無しさん
13/02/26 22:33:16.70
>>141
Trimする意味がわからんのだが?

>>142
全部Aで埋めたはずなのに何で後部の文字が半角スペースになるの?APIの仕様に書かれてない処理なんだけど

144:デフォルトの名無しさん
13/02/26 22:33:18.57
>>140
とりあえず2つの問題を区別しよう。

(1) なぜ最後に半角スペースが付くのか
(2) 「変数のサイズ」(確保されたメモリ領域のバイト数)は変ったのか

(1)は本当だと仮定して理由は分からない。
(2)は変ってません。変ったのは、20バイトのメモリ内のデータをUTF-16の文字数と
みなした時の文字数だけ。

145:デフォルトの名無しさん
13/02/26 22:44:53.79
>>144
Lenしたときの文字数が変わるのは可変長文字列を使った>>117のケースで
>>140は固定長文字列を使ってるからAPI通したあともLenした文字数は変わってない
可変長のときなら減った文字数分の半角スペースが固定長文字列のときに後部に埋まってるという話なんだけど

固定長のとき
確保したメモリいっぱいにAの文字を埋めたんだから
APIが前部のデータを上書きしても後部はいじってないのだから
メモリをそのまま引き出したのなら後部はAのままのはずなのに半角スペースが入ってる
これでメモリに異常は起きてないっておかしいんじゃないの?

146:デフォルトの名無しさん
13/02/26 23:07:10.72
つかもういいよ
仕組み知ってる人いなさそうだし
ここで質問した俺が大馬鹿だったてことでいいよ
VBでAPIを使うときVBがAPIとどうやりとりしてるかの知識が足りない俺がバカでした
さよなら

147:デフォルトの名無しさん
13/02/26 23:10:48.17
VB6っていうか、もうWin9x時代のこと大分忘れてるから混乱するな...
冷静に考えるとBSTRはUTF-16だから、ポイントしている領域が同じなら「文字数」が
変るのは確かに変だ。

質問者はひょっとして(今時)Aの付く方のAPIを呼んでるのかね。
VBはこの辺りブラックボックスだから困るんだけど、この場合は、恐らく
関数の呼び出しの前後で.NETでいうマーシャリングが入るんだろう(想像)。

呼出し後に文字数が変るのはこのためか?

148:デフォルトの名無しさん
13/02/27 02:48:18.10
APIではバッファの最大長を指定する
戻りでヌルターミネートされた先の領域なんて保障されてないだろ

API呼び出し後にANSI-UNICODEの変換が入ってるから
その変換時に(VBとしての)変数のサイズが変わっても不思議も問題もない

149:デフォルトの名無しさん
13/02/27 03:02:32.75
VB6からWのほうって呼び出せるのか?

150:デフォルトの名無しさん
13/02/27 03:05:23.37
呼べることは呼べる
でもA呼び出すよりメンドクセ

151:デフォルトの名無しさん
13/02/27 04:26:45.46
呼び出せんのか
知らなかったわ
どうやんの?

152:デフォルトの名無しさん
13/02/27 04:46:20.16
呼び出すだけなら普通に~WまでDeclareして呼ぶだけ
文字列渡したらどうなるかは知らん

153:デフォルトの名無しさん
13/02/27 05:00:16.69
当然ながらメンドクセと言ってる部分のことを尋ねているのだが

154:デフォルトの名無しさん
13/02/27 05:03:47.90
Visual Basicに関するメモ
URLリンク(homepage3.nifty.com)

APIとの文字列のやりとり(ANSI vs UNICODE変換)

を嫁

155:デフォルトの名無しさん
13/02/27 12:27:49.61
declare function GetPrivateProfileStringW lib "kernel32" ( _
byval ap as long, byval ky as long, byval df as long, byval s as long, byval l as long, byval fl as long) as long
dim s as string
s = string(10, vbnullchar)
l = GetPrivateProfileStringW(strptr(ap), strptr(ky), strptr(df), strptr(s), 10, strptr(fl))
s = left(s, l)

156:デフォルトの名無しさん
13/02/27 16:02:58.71
正解!

157:デフォルトの名無しさん
13/02/27 21:39:47.58
%TEMP%フォルダに
DF~.tmpというゴミファイルが大量にたまってると思ったら
旧VBのせいかよ!

158:デフォルトの名無しさん
13/02/27 21:42:33.26
いつの間にかVB.netをVBって呼ぶようになったのね。
VBできますか?って言われたから、てっきりVB6.0の事かと思って「ハイ!」と答えたら
あとでVB.netだったと分かりさあ大変。納期は3週間しかないけど対応できるだろうか?

バカだなおれorz

159:デフォルトの名無しさん
13/02/27 21:46:01.33
アイコン使ってる旧VB製のやつが原因か
まぁIE9でも作られてるが・・・

160:デフォルトの名無しさん
13/02/27 21:53:10.31
アイコンなんて使ってないけど?

161:デフォルトの名無しさん
13/02/28 21:41:42.10
変数のポインタアドレス渡すとか何か怖いな

162:デフォルトの名無しさん
13/02/28 21:43:47.88
>>155
ていうかこれ書き込まれる文字コードはunicodeってわけじゃないのな
引数としてunicodeが渡せるってだけなのな

どっちみちファイルにANSIで書き込まれるのならAとWどっちを使っても同じやん旧VBからは

163:デフォルトの名無しさん
13/02/28 21:57:08.78
INIファイルの先頭にBOMがあるかないかで動作が変わったような記憶が。
違ってたらごめん。

164:デフォルトの名無しさん
13/02/28 22:13:13.73
>>161
ポインタアドレスってなんだよ?ポインタ自体がアドレスだろうが?
それともポインタのポインタか?そんなもん渡してませんが何か?

これだからVB6オンリープログラマは怖いわ・・・。

165:デフォルトの名無しさん
13/02/28 22:24:36.72
ポインタってアドレスを指す変数のことじゃなかったのか・・・勉強になるなこのスレ

166:デフォルトの名無しさん
13/02/28 22:43:02.98
おとなしくxmlを使えばいいのに

167:デフォルトの名無しさん
13/02/28 23:04:23.74
>>165
いつからポインタが変数になったんだよ?w

168:デフォルトの名無しさん
13/02/28 23:06:05.49
配列なら変数だな

169:デフォルトの名無しさん
13/02/28 23:18:06.38
普通の変数は値を保存しているけど
ポインタは変数の値を保存しているメモリのアドレスを保存している変数

170:デフォルトの名無しさん
13/02/28 23:21:17.55
ポインタは変数ではないよ。そんな風に教えたのは一体どこの専門学校だよ?大原か?

171:デフォルトの名無しさん
13/02/28 23:23:23.90
>>170
ググるとポインタは変数ですと説明しているサイトが山のようにひっかかるからだろ?
アホの仲間入りをさせておけばええやんw

172:デフォルトの名無しさん
13/02/28 23:24:10.45
語義を考えれば分かると思うが、ポインタとはもともとは左辺値が入る変数やレジスタのこと。
左辺値そのもののこともポインタと言ったりするが、それは派生的用法だろう。

173:デフォルトの名無しさん
13/02/28 23:24:30.44
>>169

ポインタ (プログラミング) - Wikipedia
URLリンク(ja.wikipedia.org)(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)

174:デフォルトの名無しさん
13/02/28 23:26:02.52
変数のように扱えるから、初心者はアドレス専用変数と考えると分かりやすいからでしょう。
言語仕様は関係ないでしょうから。

175:デフォルトの名無しさん
13/02/28 23:28:59.80
>>172
>ポインタとはもともとは左辺値が入る変数やレジスタのこと。

一体どんな言語を前提として言ってるのかね?アセンブラかい?
だったらWORD PTRとかQWORD PTRとかを変数と呼ぶのかい?
少なくともC言語では言語仕様上ポインタは変数ではないぞ。
変数と同じように値を代入する事はできるがな。

176:デフォルトの名無しさん
13/02/28 23:30:23.30
VB6でポインタを語っている時点で終わってる訳だが?

177:デフォルトの名無しさん
13/02/28 23:31:46.23
前スレに関数ポインタをVBから実行するテクがあったな

178:デフォルトの名無しさん
13/02/28 23:33:29.67
StrPtrとかなんで隠し関数なんだ?

179:デフォルトの名無しさん
13/02/28 23:35:23.62
>>175
だから、君が本来の意味と派生的な意味の区別がついてないだけ。
馬鹿はこれだからな。人が言ってるそばからまったく。

180:デフォルトの名無しさん
13/02/28 23:35:36.60
AddressOf 演算子を変数だと言い出す奴が出現しそうだなw

181:デフォルトの名無しさん
13/02/28 23:35:47.31
仕様と実装は別じゃね
Cコンパイラがポインタを変数のように扱うかもしれんだろ

182:デフォルトの名無しさん
13/02/28 23:36:37.23
本来の意味と派生的な意味をごっちゃにしてる奴が話を混乱させているだけだろ?

183:デフォルトの名無しさん
13/02/28 23:42:34.41
「ポインタ変数」と書いてるサイト大杉ワロタ

184:デフォルトの名無しさん
13/02/28 23:50:09.01
>>183
Cの場合はポインタは型。
つまり「ポインタ変数」はポインタ型の変数と言う意味。
だから何もおかしくない。

185:デフォルトの名無しさん
13/02/28 23:51:12.24
この辺り、ポインタ変数もムーミン村とかバカボンパパと同じ系統のネーミングだなw

186:デフォルトの名無しさん
13/02/28 23:55:05.08
関数へのポインタ = 関数ポインタ
変数へのポインタ = (変数)ポインタ

ポインタを入れる変数 = ポインタ変数

関数へのポインタ = 関数ポインタ
関数へのポインタを入れる変数 = 関数ポインタ変数

ここまでいえば、ポインタとポインタ変数の
違いぐらいわかるだろ。

187:デフォルトの名無しさん
13/02/28 23:58:07.54
WORD pointer ← WORD型変数

WORD型

WORD* pointer ← WORDポインタ型変数

WORDポインタ型

188:デフォルトの名無しさん
13/03/01 00:00:57.25
WORD* pointer

WORDポインタ型

int* pointer

intポインタ型

void* pointer

voidポインタ型


?* pointer

型名を省略して、ポインタ型
そしてpointerはポインタ型変数
変数の中に入っている値 ・・・ ポインタ

189:デフォルトの名無しさん
13/03/01 00:03:24.02
>>186
まだ言ってるのか。
概念としては、アドレスを入れる入れ物としてのポインタがあくまで先。

Cには型の概念があるから、ポインタ変数の型のことをポインタと呼ぶことにした、
という順番。まさにムームン村。

190:デフォルトの名無しさん
13/03/01 00:04:59.38
> ポインタ変数の型のことをポインタと呼ぶことにした、
してない。

ポインタは変数の中に入っている値。

ポインタと
ポインタ型と
ポインタ変数は
それぞれ別

数値と
数値型と
数値型変数
といえば理解できるだろ?

191:デフォルトの名無しさん
13/03/01 00:06:20.94
だから語義を考えろって。生きてるうちに少しは頭使えよ。
pointer = point + er。

192:デフォルトの名無しさん
13/03/01 00:06:50.89
それで?

193:デフォルトの名無しさん
13/03/01 00:08:11.73
位置を支持するもの(変数)だからpointerって言うんだよ。
位置だけならただのpointじゃねえか。
こんな簡単な話がわからない奴がいるんだからな。

194:デフォルトの名無しさん
13/03/01 00:08:23.58
おまえら旧VBでポインタ扱うことあるの?ならこの話を続けてもいいよ

195:デフォルトの名無しさん
13/03/01 00:10:33.15
URLリンク(wiki.answers.com)

What is a pointer variable?
A pointer variable is a variable that contains the memory
location of another variable or an array (or anything else in memory).
Effectively, it points to another memory location.

196:デフォルトの名無しさん
13/03/01 00:11:31.11
pointerって黒板指す奴だな

197:デフォルトの名無しさん
13/03/01 00:15:49.97
#define BASE 0xA000
WORD *pointer = BASE ← これ(BASE)が位置(ポイント)

BASEがポイントであり、
pointerに入っている値(=0xA000)は
ポイントを指し示すものだから、ポインタ

198:デフォルトの名無しさん
13/03/01 00:17:28.10
>>197
馬鹿だろお前

199:デフォルトの名無しさん
13/03/01 00:19:59.89
反論できなきゃ、お前が馬鹿ってことになる。
口を出したのなら、最期までやらなきゃ自滅だよ。

200:デフォルトの名無しさん
13/03/01 00:20:03.06
defineってマクロじゃん
テキスト的にその文字列を置き換えるってだけのものなのに

201:デフォルトの名無しさん
13/03/01 00:20:59.42
東京タワーの場所 = 位置
その位置を表す数値=ポインター

202:デフォルトの名無しさん
13/03/01 00:27:28.17
2つ3つの意味を持つ言葉ってプログラミング言語にはつきものなのかな
プロセスとかパイプとか

203:デフォルトの名無しさん
13/03/01 00:27:36.24
WORD point;
WORD *pointer = &point;

204:デフォルトの名無しさん
13/03/01 00:28:33.59
>>199
反論てw
>>197に反論が必要だと思ってるのか。
厚顔無恥ってのはすごいことだね。

2行目で自分で「ポイント」だと言ってる同じ0xA000という値が、
5行目では「ポイントを指し示すもの」になってることに何も疑問を感じないのかよ。

205:デフォルトの名無しさん
13/03/01 00:31:45.50
東京タワーの場所 = 位置(BASE) = ポイント
その位置を表す数値(0xA000)=ポインタ

0xA000 = ポインタ
0xA000 を入れるための変数 = ポインタ変数

なにか矛盾でも?

206:デフォルトの名無しさん
13/03/01 00:34:39.31
変数の位置を指し示す値だからポインターだろ。

207:デフォルトの名無しさん
13/03/01 00:34:43.24
>>201
だから違うよ。そういうことじゃない。

その例えでいうのなら、たとえば首相の現在位置を表示する掲示板(そんなものがあるとして)がポインタ。
東経何度北緯何度というのはただの位置情報であって位置の指示者(ポインタ)じゃない。

208:デフォルトの名無しさん
13/03/01 00:36:20.33
結論まだ?

209:デフォルトの名無しさん
13/03/01 00:37:17.49
首相の現在位置 = ポイント

だな。

現在位置を表す値がポインタだ。

210:デフォルトの名無しさん
13/03/01 00:39:31.13
「ポインタ演算」という言葉があることを知っていれば、
ポインタは演算できるものだってわかるはずだがね。

211:デフォルトの名無しさん
13/03/01 00:39:37.77
>>209
だから違うって馬鹿か。
それは「位置情報」であって「位置の指示者」じゃない。

212:デフォルトの名無しさん
13/03/01 00:40:43.81
「位置の指示者」って変な用語だなw

ポインタは演算できるもの、すなわち
値であることは明らかだ。

213:デフォルトの名無しさん
13/03/01 00:41:53.41
>>210
納得した。確かに値だ。

214:デフォルトの名無しさん
13/03/01 00:44:16.42
しかし、「メモリ上の位置をポイントする変数 = ポインタ」というのが
ポインタという概念の出発点で、あとの用法はあくまで派生的なものだ、ってそんなに難しい話か?

まあ世の中馬鹿多いし、だいいちここはVBerのスレだからあれか...

215:デフォルトの名無しさん
13/03/01 00:49:14.63
>>214
だからポインタは演算できる値だって結論でただろ?

メモリ上の位置=ポイント
例えば特定のポイントに変数aがあるとする。
その変数aのポイントを指し示す変数b(ポインタ変数)がある。
ポインタ変数bの中に入っているのがポインタ

×「メモリ上の位置をポイントする変数 = ポインタ」
○「メモリ上の位置(ポイント)を指し示す値 = ポインタ」

ポイント と ポインタ は別物なんだよ。

ポイントが変数aの場所だとして、
ポインタは変数bに入っているんだよ。

216:デフォルトの名無しさん
13/03/01 00:55:30.01
>>215
そういう物の言い方って馬鹿特有だね。
馬鹿って何度言っても「位置情報」と「位置情報の指示者」の区別が付かないんだな。

っていうか、自分でポイントを表す値がポインタだ、って言ってて何の疑問も感じないんだから凄い。
まともな教育受けてるのか君って。

217:デフォルトの名無しさん
13/03/01 00:55:51.07
>>215
その説明読むと、ポインタは型のような気がするか?

218:デフォルトの名無しさん
13/03/01 00:56:46.99
>>216
その文章に反論が含まれてないよ?

簡略化すると、お前はわかってない。としか言ってないよね君。

219:デフォルトの名無しさん
13/03/01 00:58:06.96
>>217
ポインタ と ポインタ型 の違いは
数値 と 数値型 の違いと一緒です。

220:デフォルトの名無しさん
13/03/01 00:58:23.61
馬鹿にも分かるかもしれない別の言い方をしてみるか。

ポインタとは、戸籍(の現住所)みたいなもの。

戸籍は書き換えることができる。
そして、戸籍に載っている情報は住所だが、住所は戸籍じゃない。

実に当たり前の話だと思うんだが、こういう当たり前の話を延々されても
理解できないのが、馬鹿。

221:デフォルトの名無しさん
13/03/01 00:59:29.39
ポインタ と ポインタ型 の違いは
数値 と 数値型 の違いと一緒です。

0、1、2、3、4、5

これは何でしょうか? 数値ですね。
でもメモリアドレスとみなすと
ポインタでもありますね。

222:デフォルトの名無しさん
13/03/01 01:01:55.20
やっぱりポインタは値か。

223:デフォルトの名無しさん
13/03/01 01:06:00.12
値がポインタだとすると、その値を参照する機能は何なの?

224:デフォルトの名無しさん
13/03/01 01:10:58.24
1つの言葉が2つ以上の意味を持っちゃいけないんですか!

225:デフォルトの名無しさん
13/03/01 01:14:00.88
だったら変数でも値でもいいじゃん

226:デフォルトの名無しさん
13/03/01 01:15:17.01
>>223
ポインタ値の参照じゃね?

それともポインタ値で指し示す先にある変数を参照したいのかな?

227:デフォルトの名無しさん
13/03/01 01:16:07.78
ポインタ値で指し示す先にある変数を参照 = 間接参照

228:デフォルトの名無しさん
13/03/01 01:19:45.14
やはりポインタは値と考えるのが
一番しっくり来るな。
ポインタは計算できるものだし。
型や変数は、計算出来ない。

229:デフォルトの名無しさん
13/03/01 01:20:07.33
>>227
間接参照とは単にポインタがポイントしているデータを参照することw
恐らく機械語のindirect addresssingから来ている

230:デフォルトの名無しさん
13/03/01 01:21:26.36
>>229
ん? だからポインタが指し示すポイントにある変数を参照することでしょ?

231:デフォルトの名無しさん
13/03/01 01:23:04.59
>>230
ポインタがポイントするのは変数なんですか?

232:デフォルトの名無しさん
13/03/01 01:24:14.89
>>231
型って言いたいんでしょ?w

233:デフォルトの名無しさん
13/03/01 01:25:15.83
やっばり値がポインタだと言われても、しっくりこないなあ。
ポインタの値はただのアドレスじゃないの?

234:デフォルトの名無しさん
13/03/01 01:25:26.85
変数を参照 と 値を参照 って違うものでしたっけ?

235:デフォルトの名無しさん
13/03/01 01:26:07.88
> ポインタの値はただのアドレスじゃないの?
つまり、ポインタの値はただのアドレス(0xA000)とかってことでしょ?

236:デフォルトの名無しさん
13/03/01 01:27:09.38
>>232
mallocで確保した場所に変数なんかない

237:デフォルトの名無しさん
13/03/01 01:28:09.43
C言語においてポインタはただのメモリアドレスの値ですが
誰か違うって言っていた人いましたっけ?

238:デフォルトの名無しさん
13/03/01 01:29:45.71
>>233
全然違う概念なんだからしっくりくる方がおかしい。

ポインタ(戸籍)の値はアドレス(住所)かもしれないが、
住所が戸籍だなんて奴がいたら、そいつはかなり脳が足りない。

239:デフォルトの名無しさん
13/03/01 01:32:30.72
>>238
そこなんだよな、ポインタは値と言われると
じゃあポインタ=アドレスなのか?と言う気になる。

240:デフォルトの名無しさん
13/03/01 01:47:22.89
値の入れ物や、値を指す方法を示すものがポインタ
アドレスはその示されてる値

241:デフォルトの名無しさん
13/03/01 01:59:45.04
ちょーっと
ここVBスレなんすけど

242:デフォルトの名無しさん
13/03/01 02:00:36.52
>>239

なんでお前>>238にレスしてるの?
>>238は明らかに意味不明、馬鹿だよね。
自作自演にしか見えないよ。

なぜかっていうと、戸籍っていうのはな。
> 人の生年月日や、どこで生れたのか、両親は誰々で、
> 兄弟はいるのかどうか、そして、いつ死亡したのかなどがわかるものです。

243:デフォルトの名無しさん
13/03/01 02:13:19.42
時間が変わってバイさるから復帰か

244: 【豚】
13/03/01 02:17:26.37
そんなことより
おみくじで旧VBの将来を

245:デフォルトの名無しさん
13/03/01 02:25:32.39
多分Windows15とかなってもVBランタイムが付いてくるでしょう

246:デフォルトの名無しさん
13/03/01 02:31:20.98
Windows95くらいになってもな!

247:デフォルトの名無しさん
13/03/01 04:02:55.16
荒らしに反応する奴も荒らし

荒らしに反応する奴に反応する奴も荒らし ←俺か

248:デフォルトの名無しさん
13/03/01 04:07:40.39
ポインタ(戸籍)なんて奴がいたら、そいつはかなり脳が足りない。

249:デフォルトの名無しさん
13/03/01 04:10:36.00
もう少しタメになる話をしておくれよ
旧VBを扱わなきゃいけない案件はまだまだあるんだし
四月になれば新卒で入った新人君たちがそれらに関わるかもしれんじゃないか
有益な情報だけたのむ

250:デフォルトの名無しさん
13/03/01 08:18:43.68
pointerとpointeeの違いが分からない低能がいるのが悲しい
理解力が無く最低限の英語すら分からないで、この先技術者として生きていけるの?

251:デフォルトの名無しさん
13/03/01 09:06:43.52
話を >>161の原点に戻そう。

>変数のポインタアドレス渡すとか何か怖いな

つまりコイツが、「変数のポインタ渡すとか何か怖いな」と言っていればこのポインタ議論は発生しなかった。
「変数のポインタアドレス」と言ってしまったので、アドレスを示すポインタ+アドレスという意味不明な重複が発生した。
そこで、このバカがもしかしたらポインタの事を変数だと思っているのかも?という疑惑が生まれた。
しかしそれにしてもこれだけスレが伸びるとは・・・。
しかも最もポインタに縁遠いVB6のスレでwww

252:デフォルトの名無しさん
13/03/01 09:09:11.98
それいうなら、「変数のアドレス」だろw

253:デフォルトの名無しさん
13/03/01 09:09:55.21
ダメダメなC#と比べればVB6.0にいかにノビシロがあるかがわかるな。

254:デフォルトの名無しさん
13/03/01 09:11:10.40
>>252
「変数のアドレス」ならC言語風で言うなら &a でもいいはず。これはポインタではない。はい論破。

255:デフォルトの名無しさん
13/03/01 09:12:47.51
まだ ポインタ = アドレス だと思ってるアホちゃんがいるらしいw

256:デフォルトの名無しさん
13/03/01 09:17:57.88
ハードウェアで言うならプログラムカウンタ(PC)を変数と考えるかどうかという事だな。
JMPやCALL、PUSH、POP命令はPCの値を変更してプログラムの流れを変える。
まさにこの時、PCが変数かのようにふるまう。では代入演算命令でPCに値を入れられる命令があるかというと
そんな機械語は存在しない。なのにPCを変数と考えるのか?という談義に近い。

257:デフォルトの名無しさん
13/03/01 09:18:13.28
ポインタはアドレスだけじゃなくて型も持ってるんだよ。
だから
int* hoge;
hoge++;
とするとhogeは4足されたりする。

258:デフォルトの名無しさん
13/03/01 09:19:32.04
>>257
やっと少しまともな奴が現れたなw

259:デフォルトの名無しさん
13/03/01 09:23:42.38
気を付けなければならないのはポインタは型の属性を持っているがそれ自身に型は無いという事かな。
つまりポインタが16bitとか32bitとか64bitとかの固有のサイズを所持することはない。
もちろんsizeofで見ればバイト数は明確になるが、言語仕様上それに依存したコードを書くのは好ましくない。
(制御系では頻繁にやるが)

260:デフォルトの名無しさん
13/03/01 09:29:15.22
例えばint* hoge;で確保されるメモリは4バイト?
それとも4バイト+型情報分のバイト数?
それとも型情報はまったく別なとこで管理されてるの?

261:デフォルトの名無しさん
13/03/01 09:45:18.14
Cに限っていえば、型はコンパイラが知ってるから
コンパイルされた後に型の情報は必要ない。

262:デフォルトの名無しさん
13/03/01 09:49:16.97
なるほど

263:デフォルトの名無しさん
13/03/01 10:16:23.43
ということはポインタは型を持っているというわけではないのか。

264:デフォルトの名無しさん
13/03/01 10:22:14.45
やがて配列のポインタへの成り下がりに話題が進むのであった。
もはやVB関係ね~な。

265:デフォルトの名無しさん
13/03/01 11:51:12.83
制御系だとCのポインタのサイズはCPUのプログラムカウンタのサイズ、
いわゆるアドレス幅とイコールであることに何の疑問も抱かないのは
Cをマクロアセンブラの発展形くらいの感覚で使っているからなんだな。
同じプログラマでもアプリケーションプログラマとは感性がちがうな。

266:デフォルトの名無しさん
13/03/01 12:06:43.12
16bitのx86にはラージポインタという恐ろしいものがあってな

267:デフォルトの名無しさん
13/03/01 12:14:04.83
スレが進んでると思ったら、たいてい
VB6以外の言語の知識でVB6を説明しようとする話題だw

268:デフォルトの名無しさん
13/03/01 12:23:21.84
オワコンなんだから仕方ない

269:デフォルトの名無しさん
13/03/01 13:36:37.60
>>266
ヒュージポインタに比べたらそんなもん糞でしょ?w

270:デフォルトの名無しさん
13/03/01 17:05:31.50
オワコンだからといって荒らしていいわけではないでしょ。
スレを立てられないアホ、スルー力ゼロのアホがどれだけいるんだか。

271:デフォルトの名無しさん
13/03/01 17:55:08.31
プログラム云々関係なく俺の純粋思考の導き出す推論によると
変数とは値概念。ポインタとはベクトル概念
ただしこの両者は明確に概念として切り分けられないはず
何故なら空間的位置と数量的位置は同じものとみなすことも可能だからだ

272:デフォルトの名無しさん
13/03/01 18:51:30.62
哲学者ぶっても所詮は専門学校卒
文盲甚だしい

273:デフォルトの名無しさん
13/03/01 19:55:01.53
>>161の言葉の間違いというか認識の間違いを指摘するためだけに100以上伸びるスレとかw

274:デフォルトの名無しさん
13/03/01 20:12:38.37
>>273
かと言ってレス乞食が狙おうとすると意外に難しいんだよなぁ

275:デフォルトの名無しさん
13/03/02 07:34:05.77
>88J#の間違いでしょ

276:デフォルトの名無しさん
13/03/02 07:43:45.28
VB6の同世代ならJ++だろ

277:デフォルトの名無しさん
13/03/02 09:13:56.66
>>275
いや、C#で間違いない。J#は論外だろ?

278:デフォルトの名無しさん
13/03/02 10:02:09.27
C#は利用者数が伸びないね
インドのオフショア企業が使用しているけど
あれはJavaのソースをぶっこ抜いてC#に移植するとライセンスを隠ぺいできるため。
Javaのオープンソース資産をライセンスフリーで流用するための手段に過ぎない。
それに比べると中国系のオフショア企業はC++を使用するケースが多いように思う。
インドより中国の方が正当な事をするなんて、ちょっと信じ難いけどね。

279:デフォルトの名無しさん
13/03/02 12:32:14.48
Xamarin、C#言語によるiOS/Androidアプリ開発を実現する“Xamarin 2.0”を発表 - 窓の杜
URLリンク(www.forest.impress.co.jp)

むしろVB不遇じゃね

280:デフォルトの名無しさん
13/03/02 12:33:22.10
VBSやVBAなどで一般にも認知度の高い旧VBなんだからもっと優遇されるべき

281:デフォルトの名無しさん
13/03/02 13:04:55.86
>>279
XamarinがVisualStudio級の開発環境を提供するなんてどこにも書いてないけど?
こんなのが普及すると本気で思ってるのだろうか?

C#って基本はコマンドラインコンパイラだよ?

282:デフォルトの名無しさん
13/03/02 13:12:23.39
>>281
XamarinがVisualStudio級の開発環境を 提供する必要がないだろw

普通にVisual Studioで作ればいい。

ソースコードはあるんだ、最後に違うコンパイラを使えばいい。

283:デフォルトの名無しさん
13/03/02 19:24:59.68
わかってないなこの人

284:デフォルトの名無しさん
13/03/02 22:44:08.81
自称わかってる人が、
説明しないんだもんな。
面白いw

285:デフォルトの名無しさん
13/03/03 00:14:47.47
>>284
      - -―- 、.                          - -―- 、.
   :/..::::::::::::::::::.丶:        . . ..         :/...::::::::::::::.. ヽ:
  :/..::::::::::::::::::::::::::: ヽ:.      :,r"´⌒`゙`ヽ:       :/ ..:::::::::::::::::::/\ ヽ:
  :i.::::::::::::」:::」:::」::」」i l:     :/ ,   -‐- !、:     :/..:::/::::/::::// ヽ l:. l.:
  :|::::::::::o゚▲   ▲o:    :/ {,|f  -‐- ,,,__、):    :l:::::!:o゚(●)  (●)゚o:|:
  :|:::::::::| "" .♭""l |:  :/   /  .r'~"''‐--、):    :!:::l::::l ~"  ,,   ~ l:i:l:
  :|::::::::|、 r‐― ァノ :|::,r''"´⌒ヽ{   o゚(●)ハ(●)゚o:    :ヽ:i::!、 r‐― ァ ノノ':
:, -‐(⌒)\ヽ⌒ノイ::::::|:/:    :\  (⊂`-'つ)i-、: :, -‐(⌒)\ヽ⌒ノ/.
:l_j_j_j と)\__フヽ::::::|:       : `|. (__,,ノヽ_ノ,ノ :\:l_j_j_j と)\__フヽ:
  :|::::ヽ    :i |:::::|: :, -‐(⌒)   :l  ヽ⌒ソ ,ノ   :ヽ   :ヽ    :i |:
  :|::::::|   :⊂ノ|:::::|: :l_j_j_j と)  :| 、、_フj''  :⊂ノl:   :|  :⊂ノ|:

286:デフォルトの名無しさん
13/03/04 01:06:12.18
以上の事なんか全く解らなくても適当に作れちゃうのが旧VB
困ったもんだ

287:デフォルトの名無しさん
13/03/04 09:01:19.81
まあC#がノビシロのない言語であることは認める。
JavaもOracleになってから先が見えてきた。
VBが一番良いとは思わないが
プラットフォームがWindowsオンリーなら最強だろう

288:デフォルトの名無しさん
13/03/04 13:42:58.25
つC++

289:デフォルトの名無しさん
13/03/04 14:04:23.11
C#はC++よりマイナー

290:デフォルトの名無しさん
13/03/07 00:23:06.31
テキストブラウザでも作るか

291:デフォルトの名無しさん
13/03/07 20:46:49.84
あの頃の勢いはもう無い

292:デフォルトの名無しさん
13/03/09 01:54:36.75
虫籠(ホイホイ)に入れました。

293:デフォルトの名無しさん
13/03/09 15:28:39.37
phpもJavaもVBもCもC#もも経験してきた俺が言う。

C#は良い。

.NETになってからのVBとC#を単に比較すると、
ラムダ式とかの機能的な面で違いはあるが、オブジェクト指向的な
面でどっちでもいい。

ただし、

  If(条件){
  }

と書くか

  If 条件 Then
  End If

と書くかで、タイプ量の違いで、俺はC#が好みである。

294:デフォルトの名無しさん
13/03/09 15:34:40.49
vb.net使ってると毎日のように
もうC#でいいじゃんって思うな

295:デフォルトの名無しさん
13/03/09 15:43:13.29
旧VBでC#の宣伝するなウィルス野郎が!

296:デフォルトの名無しさん
13/03/09 16:11:56.25
>>293
タイプ量って重要ですよね。

僕もタイプ遅いから文字数が倍違うと
仕事の速さも倍違います。

297:デフォルトの名無しさん
13/03/09 16:13:18.73
.NETはインテリセンスとかいうので自動補完してくれんじゃねーの?
ここは旧VBスレだ.NETは巣に帰れ

298:デフォルトの名無しさん
13/03/09 18:14:00.03
c#は
if ()
{
}
ってなるから嫌い

299:デフォルトの名無しさん
13/03/09 18:30:53.65
プログラミングの本質ともいえる要素のブロック化をもっとも端的に表現できるのが{ }という記号だろう

() という記号も実はその派生形なわけだが ()と { }の違いは?

300:デフォルトの名無しさん
13/03/09 18:49:05.09
>>299
態々VBスレでやる必要ないだろ。
というよりスレタイが読めないくらい日本語できないってことか。

301:デフォルトの名無しさん
13/03/09 19:19:59.29
>>299
どの位置にカーリーブラケットが来るかって話じゃないの?
if () {
}

if ()
{
}

302:デフォルトの名無しさん
13/03/09 19:28:47.23
>>301
スレタイを死ぬまで声出して読め。

303:デフォルトの名無しさん
13/03/09 21:12:13.30
If *** Then
End If

If *** _
Then
End If

304:デフォルトの名無しさん
13/03/09 21:19:53.72
>>302
こwとwわwるw

305:デフォルトの名無しさん
13/03/09 21:50:11.56
インタプリタならなんでもいい。
VB6のインタプリタIDE環境に慣れた体には
エディット、コンパイル、リンクのビルド型環境にはもう戻れない。

306:デフォルトの名無しさん
13/03/09 22:38:52.76
そんなあなたにF#
インタープリタ付だぜ

307:デフォルトの名無しさん
13/03/09 22:39:59.56
インタプリタIDEって何のこっちゃ。
言っちゃ悪いが馬鹿丸出しだな。

308:デフォルトの名無しさん
13/03/09 23:39:25.87
>>307
そんな事にバカ丸出しで反応してるお前が滑稽で笑えるんだが?

309:デフォルトの名無しさん
13/03/09 23:40:45.52
普通はスルーだろ なにが癇に障ったとか

310:デフォルトの名無しさん
13/03/09 23:41:17.50
放っておいてやれよ

311:デフォルトの名無しさん
13/03/09 23:41:49.64
うむ

312:デフォルトの名無しさん
13/03/09 23:42:37.06
>>307
滑稽というかアホ猿w

313:デフォルトの名無しさん
13/03/09 23:48:42.96
触るとはじけるホウセンカの種
インタプリタIDEではじけたホウセンカの種
こっち飛んでくんな!wwwwwwwwwww

314:デフォルトの名無しさん
13/03/12 19:35:10.40
VB6に良いとこはある。
C#に良いとこはある。
VB.NETに良いとこはある。
Javaに良いとこはある。

ガベコレの無いCとC++にも良いとこはあるが
ガベコレの無い時点で、もう関わりたくない言語と言える。
まあガッツリ組み込みで高速な動作させたいんなら必須だけど。

315:デフォルトの名無しさん
13/03/14 02:10:35.06
VB6ぐらい簡素な方が楽だと思った

316:デフォルトの名無しさん
13/03/14 11:11:07.31
windows7で使ってる?

317:デフォルトの名無しさん
13/03/14 14:54:32.31
yes

318:デフォルトの名無しさん
13/03/16 03:14:03.30
サードパーティ製のCOMなんかは怪しい動きするけど
まあ社内用アプリ程度なら管理者権限付けとけば大概動くし
敢えて仕様がガッサリ変わっちゃってる.NETに移行する気は起きないというか
移行プロジェクトで死んだからもうやりたくない
動くものはそのままそっとしておくのが良いな

319:デフォルトの名無しさん
13/03/16 04:28:26.01
動いているシステムは良いシステムだ。
至言だ。

320:デフォルトの名無しさん
13/03/16 12:20:43.28
>>318
VBの場合、.netへ移行なんて無理。移行できるとしたら陳腐なソフトだって事。
Twipsのスケーリングに依存するようなアプリはまず移行不可、つ、大多数がそうだがw
ゼロから作り直した方がいい。いいと言うかそれしかない。
現物のVB6で仕様が明確になっている分新規より楽だろ?

321:デフォルトの名無しさん
13/03/16 16:24:56.77
新規で作り直す価格より旧VBのメンテの料金を吊り上げればいいのだよ

322:デフォルトの名無しさん
13/03/16 20:44:31.47
>>320
現物で仕様が明確になってるが故に数値は全部Long、配列での力技のデータ操作、自作Round関数が移行されるんですね

323:デフォルトの名無しさん
13/03/21 18:58:14.25
Windows Blue はWindows8 RTなんだよね? VB6 が動かないのは当たり前じゃないか

324:デフォルトの名無しさん
13/03/22 00:25:29.20
>>323
え?
Windows8.1だろうと思ってた…

325:デフォルトの名無しさん
13/03/22 07:10:41.68
何でお前ら移行しないの?

326:デフォルトの名無しさん
13/03/22 11:45:44.28
>>325
お客にあわせるから

327:デフォルトの名無しさん
13/03/22 11:48:03.86
Blueといえばブルースクリーン

328:デフォルトの名無しさん
13/03/22 12:18:25.22
Windows8?バージョン8とか古すぎワロタw 俺なんてWindows95だぜバージョン95だ!

329:デフォルトの名無しさん
13/03/22 13:09:41.93
つマンネ

330:デフォルトの名無しさん
13/03/23 09:21:42.50
つマンネどころじゃないだろ?こっちは即死だわ

331:デフォルトの名無しさん
13/03/23 09:41:22.71
死体はしゃべるな

332:デフォルトの名無しさん
13/03/24 00:44:43.72
>>322
自作Round関数は無いけど、配列での力技のデータ操作はやってる。

なぜならば…

VB6のコレクションって、なんでも入るっしょ。
Javaのような静的型付が無い。

いや、専用のCollection作るっていう手もあるけど、
VB6はパッケージの仕組みがないから、モジュールばっかり
やたら増えて管理しにくくなるのよね。

だからJavaでいうところのmodelは、配列で操作してる。

尚、コントロール配列はほとんど使ってない。
なぜならば、別に用意したクラスの中にWithEventsで格納してしまうケースが
多いからだ。コントロール配列にすると、これで不都合が増える。

333:デフォルトの名無しさん
13/03/24 15:23:07.55
332>>
>>配列での力技のデータ操作
もう少し詳しく聞いてみたいかも

334:デフォルトの名無しさん
13/03/24 19:16:04.33
↓のようにobjにCommandButtonを入れておいてobjのClickイベントを呼び出させるようなことはできますでしょうか?

Dim obj As CommandButton
If なんちゃら Then
 Set obj = XXXX
Else
 Set obj = YYYY
End If

335:デフォルトの名無しさん
13/03/24 19:19:43.89
やった事無いけどググったら.Value=Trueで出来るみたい

336:デフォルトの名無しさん
13/03/24 19:22:04.21
>>335


337:デフォルトの名無しさん
13/03/24 19:23:26.69

obj.Value=True
でクリックイベント発生しない?

338:デフォルトの名無しさん
13/03/24 20:53:50.47
Call Command1_Click()
でいいだろ

339:デフォルトの名無しさん
13/03/24 21:30:08.90
>>335
ありがとうございます!

Valueプロパティのヘルプみたら

コマンド ボタン コントロールの場合 - 真 (True) はそのボタンが押されたことを示します。既定値は偽 (False) で、そのボタンが押されていないことを示します。コードで Value プロパティを真 (True) に設定すると、そのボタンの Click イベントが呼び出されます。

と書いてありました。

どうググったらその回答にたどり着いたのかもしよければ検索ワードを教えてくださいませんでしょうか?


>>338
最悪、それぞれにXXXX_ClickやYYYY_Clickとやること考えたのですができればobjでClickイベントを呼べた方がいいなと思ったんです。

340:デフォルトの名無しさん
13/03/24 22:25:36.15
>>334
それ、ローカル変数みたいだけど、
モジュールのメンバにして、

Private WithEvents obj As CommandButton

ってしてやると、イベントを拾ってくれるよん。

341:デフォルトの名無しさん
13/03/24 22:28:43.39
「CommandButton clickイベント 発生させる」でググると検索結果1ページ目の下のほうに「IT工務店 店主のつぶやき日記」サイトがあってVBAでそのクリックの話してるね

342:デフォルトの名無しさん
13/03/24 22:29:22.51
RaiseEventじゃ出来んのか?

343:デフォルトの名無しさん
13/03/25 22:42:34.17
VB6の書籍はいっぱい出てるのに、
コントロールの使い方みたいな本ばっかだから
VB6に手を出してちょこっと動くものができました、
けど難しい事はできません、みたいな人はそれなりにいる。

OPPの基本的なところから、っていう学習の仕方しようとしたら
VB6って絶対向いてない。

344:デフォルトの名無しさん
13/03/25 23:22:30.27
実装継承が出来ない時点でおわってるんだけどね

345:デフォルトの名無しさん
13/03/25 23:50:15.19
>>344
俺はJavaや.NETから入ったんで、OOP的なやり方はもちろん
わざわざVB6で学習し直す事は無かった。

VB6でできるのは、ごくごく簡単なOOPの使い方ぐらいなのはわかってる。
継承が無いから使えるデザインパターンも限られる。
抽象メソッドも使えない、インナークラスも使えない、あれもこれもできない…

が!!!

やっぱOOPの良い所って、Cでいう構造体にメソッドも梱包して
データ処理をものすごく簡潔に記述できる点は大きい。
VB6でクラスが扱えるのは、それだけで助かるとは思う。

基本的にシングルスレッドだから、余計な事も考えずに設計できるのも良い。
まあマルチスレッドを扱いたい事もしばしばあるけどな。

で、VB6の良いところはあるのに、書籍が充実してないから
VB6からプログラム始めて、ロクでもないプログラムしか書けないってところに
>>343の意図がある。

346:デフォルトの名無しさん
13/03/26 00:18:13.02
10年前に終わってる言語に何を言ってるのアホか。
っていうか言っちゃ悪いけど>>343みたいなポエマー丸出しの文章、よく恥ずかしげもなく書けるよな。

347:デフォルトの名無しさん
13/03/26 01:54:33.09
良く解ってないけどなんとなく作れたってのが旧VBの仕様だからな
○○が使えない、ってんじゃなくて使う必要が有るならVBを選ぶなってのが正解
それはMS自身が言っている事だ

348:デフォルトの名無しさん
13/03/26 10:36:53.78
そうそう、そのとおり。
だから今でもVB6が生き残ってる。
VBAも進化させない。

349:デフォルトの名無しさん
13/03/26 10:41:49.16
そもそもOOPとして設計されてない言語を無理やりオブジェクト指向にしたのがVB6
OOPに向いてないのは当たり前

350:デフォルトの名無しさん
13/03/26 13:12:40.47
せめてフォーム名で呼び出しできないようにしてくれてたら
せめてコンストラクタに引数つけることができてたら
せめてオーバーロードができてたら

351:デフォルトの名無しさん
13/03/26 13:14:13.00
VB6はソースがスパゲッティすぎてバージョンアップできなかったらしいな

352:デフォルトの名無しさん
13/03/26 21:19:04.54
>>349
その無理やり部分だけでも、かなり便利なもんだよ。
非OOP時代のVBに比べて。

クラス内にデータ突っ込んで、適宜メソッドで計算結果出せる
っていう設計ができるだけでかなり便利。

構造体と関数でやってると、バラバラになるから…

>>350
フォーム名の呼び出し禁止はForm_Initializeで
  Set フォーム名 = Nothing
で、禁止できる。規定のインスタンスを切るだけだけど。

引数付きコンストラクタとオーバーロードは俺もそう思う。
いや、引数付きコンストラクタだけでもいい。

353:デフォルトの名無しさん
13/03/26 21:33:25.44
既定のインスタンス(だっけ?)なんか使わなければいいだけ。

コンストラクタは、たとえばクラス名がHogeならそれに適当なプリフィクスを付けた
名前(たとえばcHoge)のモジュールをクラスの静的メンバーの入れ物だとみなす
約束にしておけば、ほとんど機能的にも可読性上も同じことができる。

VB6にはメソッドのオーバーロードがなくても名前付き引数がある。

ま、10年以上まともなコードは書いてませんけどw

354:デフォルトの名無しさん
13/03/26 21:34:07.75
逆にシングルトンとか、既定のコンストラクタを隠すことはどうやってもできないけどね

355:デフォルトの名無しさん
13/03/26 22:48:22.77
>>353
そして数年後そのコードをメンテナンスする奴が、Factoryメソッドを無視してNewしたりしちゃうんですよ

356:デフォルトの名無しさん
13/03/27 00:05:57.78
>>354
シングルトンは標準モジュール使えばいいだろう。
ただ、スレッドセーフにはできないけど。

357:デフォルトの名無しさん
13/03/27 00:21:17.85
>>356
VB6に限らないが、そのやり方はstaticおじさんみたいで気持ち悪い...のはまあいいが、
柔軟性が低い(後でインスタンス化する必要が生じた時に簡単にできない)

358:デフォルトの名無しさん
13/03/27 01:58:20.09
下手にVB.NETに機能引き継ぎしないで欲しかった
フォーム名で呼び出せたり暗黙でNewしたりするかもみたいな妙竹林な動作させやがって
そういうのはVB6でしか出来ません!ってなってれば移行なんて無謀な話は出なかった
俺はちゃんとしたプログラマじゃねーんだからなんとなく動いてくれてりゃ良いんだよ
もうVB6最高、アバウトで適当なのが一番だよ
DB参照してデータ表示するだけなんだから厳密もクソもねぇよ

359:デフォルトの名無しさん
13/03/27 02:54:16.07
既定のインスタンスは.NETで一回廃止したのに復活した経緯があるからなぁ
あれは廃止したままにしとくべきだと思うが

360:デフォルトの名無しさん
13/03/27 10:34:59.45
PDFやXPSなどファイルでプリンタに出力するとき、ファイル名まで指定して自動的に保存する方法ないですか?

361:デフォルトの名無しさん
13/03/27 10:41:28.83
iText.netを使う

362:デフォルトの名無しさん
13/03/27 11:10:13.79
J#ですか?

363:デフォルトの名無しさん
13/03/27 12:00:02.56
ファイルに保存するのはプリンタドライバの機能だからドライバによるんじゃね

364:デフォルトの名無しさん
13/03/27 13:02:45.59
VB6用のオブジェクトが市販であるかなと思ったんですが見つからなくて。

365:デフォルトの名無しさん
13/03/27 14:08:15.77
VBプログラマ質問スレ(Ver.6.0 まで) part62

366:デフォルトの名無しさん
13/03/27 14:09:01.13
↑ごめんまちがった^^;

PDFへの保存ならGrapeCityのVSVIEWつかってやったことがあるよ

367:デフォルトの名無しさん
13/03/27 14:14:19.11
>>360
URLリンク(internet.watch.impress.co.jp)

GrapeCityはもう扱ってないので

URLリンク(www.eprintdriver.com)

英語版だが日本語環境でまったく問題ない。

368:デフォルトの名無しさん
13/03/27 14:28:19.38
>>367
ありがとうございます。
これVB6に対応してるんでしょうか?

369:デフォルトの名無しさん
13/03/27 15:04:34.62
>>368
COMに対応しています。画像ファイルで印刷結果を直出させるプリンタドライバをCOMで制御できます。
仕事でVB6はあまり使わないのですが、それでも2回VB6で納品しました。
自分はVB6を使うとき、だいたいクラスが全コードの9割以上を占めます。

決してオブジェクト指向な言語ではないですが、オブジェクト指向の便利な特徴を使えるので
VB6は言語としては悪くないとおもいます。ただ今時使ってたらちょっと恥ずかしい。

370:デフォルトの名無しさん
13/03/27 15:13:22.43
>>369
>>369
ありがとうございます、試してみます。
VB6から移行しなくてはと思ってはいるのですが、どの言語を選んで良いのか迷ったままズルズルときてしまいました。
Cはマイコンレベルでは多少経験がありますが、素直に.NETにするべきですかね?

371:デフォルトの名無しさん
13/03/27 15:17:52.32
ここまできたんだから、そのままズルズル生きていけばいいじゃないか

372:デフォルトの名無しさん
13/03/27 17:32:11.78
>>370
仕事でプログラミングをしている場合、新しい言語の習得は
その言語での開発依頼から始まると言っていいでしょう。
会社で新しい言語を習得したいので勉強する時間をくれとか言って通るはずもなく
また家で勉強しようと思っても休みの日は休みたくなるし
なんだかんだ言って先送りしてしまうのがオチでしょう。

まあ当該言語バージンの担当者に当たったクライアントは可哀そうですが
家電製品や車だってファーストロットは問題アリアリだし、バレないように手直しして
なんとか最後は一流のものに仕立て上げている訳です。

VB6だって始めたころに書いたコーディングなんて恥ずかしくて人に見せられません。
C言語の癖で配列の要素を必ず必要とする数から1つ多く設定してしまったり
Dimでの連続変数宣言で、実は1個しか型指定できてなくて残りは全部バリアントだったとか
それでも動いていて今でもサポート料金を月に30万円も払ってくださるクライアントがいるのですから
とにかくプロならなんとか乗り越えないと恥ずかしいです。

373:デフォルトの名無しさん
13/03/28 09:37:45.93
>>372
全くもっておっしゃるとおりです。
殆どの仕事が、ベースになるプログラムを元に客先のスタイルに合わせて多少のアレンジをするといったスタイルなので、
実績という意味ではVB6で10年以上やってきて、バグフィックスもほぼ終わってるプログラムを維持したいというのが本音です。

新たな言語に移行する場合は、ノウハウはゼロですので、最低でも数ヶ月は社内で稼働させて動作を検証してから製品化するつもりです。
それでも信頼性はがた落ちですが、メーカーがサポートしていない言語を使い続けるよりは良いのでしょうね。

374:デフォルトの名無しさん
13/03/28 10:04:18.08
>>373
>メーカーがサポートしていない言語を使い続けるよりは良いのでしょうね。

これは一概になんとも。。。

たとえばVB6を使用していた期間、かれこれ10年くらいはありましたが
その期間にVB6についてマイクロソフト社にサポートを受けた事は一度もありませんでした。
もちろん、サービスパックは必ず最新のものを導入していましたのでバックグラウンドではサポートを受けていた事になります。
もしVB6を使用する上で何らかの致命的なバグに遭遇したり、新しいWindowsでの振る舞いに対応できなかったり
色々問題に遭遇することはあるかもしれませんが、原因を切り分けし問題を自己解決できれば
可能な限りVB6を使い続けても問題があるようには思えません。

逆にマイクロソフトにサポートされているからその言語は安全かと言えばとんでもない。
開発しソフトウェアの品質を最も大きく左右するのはマイクロソフト社ではなく、プログラマーのあなたご自身です。

375:デフォルトの名無しさん
13/03/28 10:35:40.03
>>374
VB6が動作するOSが問題だと思います。
XPを計測制御関係など専用のOSとして供給し続けてくれるならVB6を使い続けますが、
vista以降、開発環境での動作は保証されてなく、実際に問題も生じています。
動作環境でもprogramfilesや互換性ファイルなどの扱いもあるので、そろそろ潮時かなと。

376:デフォルトの名無しさん
13/03/28 15:26:48.41
>>375
メーカーのサポートが打ち切られた開発環境を使用する以上
自分で工夫して問題を解決できなくなったらその時点でアウト。
アウトになってからでは遅いので、アウトにある前に対応しておくのがプロというもの。

しかし現時点においてWindows 8上でも問題を回避してVB6の開発環境を使用可能。
問題はWindowsよりも64bit対応の方かも知れない。少なくともIDEはまともに動かないし
ランタイムも64bitネイティブでは動作しない。アプリの互換に比べればOLEの互換を保つ
難しさは計り知れない。

377:デフォルトの名無しさん
13/03/29 00:30:50.96
勘違いしてる人が多いようだがVB6はサポートされてます
だって動いてるだろ?わざわざ動くようにしてあるって事だよ。
移行ガイドまで用意してくれてる親切設計だし、普通のメーカーだったらここまでサポートしない。
動かないので乗り換えて下さい、で終わりだよ。

そしてVB6自体は今後のWindowsでもサポートされ続ける可能性が高い
7でも8でも最初はサポートしないと言ってあっさりひっくり返ったからね
周りがそう簡単に止めさせてはくれないのだろう

>>376も言ってるけど問題はそれ以外だよな
ドライバとかドライバーとかDriverとか

378:デフォルトの名無しさん
13/03/29 01:05:22.84
ごちゃごちゃいってないで公式で発表してるんだからそれよめよ

Windows Vista、Windows Server 2008、Windows 7、および Windows 8 に対する Visual Basic 6.0 のサポートに関する声明
URLリンク(msdn.microsoft.com)

Visual Basic チームは、Visual Basic 6.0 アプリケーションが Windows Vista、R2 を含む
Windows Server 2008、Windows 7、およびWindows 8 でも "動作する" よう、その互換性に向けて努力を続けています。


Windows 8

このサポートに関する声明が最初にリリースされた後に Windows 8 オペレーティング システムが発表されました。
このドキュメントは、Windows 8 における VB6 に対するマイクロソフトのサポートを明確にするために更新されています。

VB6 ランタイムは Windows 8 のサポート有効期間中はOSに同梱される形で出荷され、サポートされます。
Visual Basic 6.0 ランタイム ファイルは今後も 32 ビットのみであり、すべてのコンポーネントは
32 ビット アプリケーション プロセスでホストされている必要があります。 開発者の方は、Windows 7 の
場合と同様のサポートが Windows 8 についても受けられると考えていただいてかまいません。

379:デフォルトの名無しさん
13/03/29 01:53:36.65
32bitエミュレータとかそゆの出せば売れるかも

380:デフォルトの名無しさん
13/03/29 09:35:34.79
VB6製品のサポートが継続されているとか調子こいてるバカ。よくみろ。
IDEはすでにVista以降サポートされていない。
開発側ではランタイムは動くみたいだから使ってもいいよ的な考えなのに
カッコつけてガンバッテサポートシテイマス!と言っているのは広報だけ。
実情はVB6のサポートなんか特になにもやってないので
動かなくなったらTHE END
ただそれだけ

381:デフォルトの名無しさん
13/03/29 09:39:26.96
>>378
Windows 8でVB6をサポートしていると言い切るなら
IDEの画面に他の画面が重なった後に画面がリペイントされないで消えてしまう問題を早く解決しろよ
Windows XPからずっとこのまま我慢してるんだけど?
この嘘つき広報さんwww

382:デフォルトの名無しさん
13/03/29 09:51:37.82
XPからって…
ウインドのリフレッシュが甘いWindowsの持病のほうじゃなく?

383:デフォルトの名無しさん
13/03/29 10:26:43.49
>>380
IDEはサポートされない。
ランタイムはサポートされる(Windows 8発売から10年間)。
ただそれだけだ。

384:デフォルトの名無しさん
13/03/29 13:10:22.45
でもサードが壊滅状態だからなぁ

385:デフォルトの名無しさん
13/03/29 13:25:36.77
だからVB.NETがあるじゃねえか

386:デフォルトの名無しさん
13/03/29 13:48:23.14
>>382
テーマを使うと下になった画面がペイントされないんだよ。VisualStyleと関係があるみたい。
パフォーマンスを優先せずにWindows 2000みたいな画面で使えば問題は回避できるけど
まあ普通はやらない罠

387:デフォルトの名無しさん
13/03/29 13:53:31.38
>>384
GrapeCityなんかは海外のコンポーネントの開発元ではActiveX版を出している製品でも
.NET版しか存在しないようなフリをして売っているよね。
アセンブリとActiveXの両方をサポートするとなると人件費コストが嵩むから
消費者のニーズがないように思わせて、今や.NET一択というアピールをしているけど
皮肉なことにその.ユダヤ人的な高慢なビジネスロジックが、最新の開発環境への移行スピードを
めちゃめちゃ後退させている事にまだ気づいていない。

388:デフォルトの名無しさん
13/03/29 14:05:27.82
え?

389:デフォルトの名無しさん
13/03/29 17:03:55.83
真昼間からヒマなプロプログラマさんが多いこと

390:デフォルトの名無しさん
13/03/29 17:52:57.44
ここはVB土方質問スレ(Ver6.0まで)と言った方がいいのはさておいて
当方人件費コスト0だし、製品版ActiveXなど不要だし
好き勝手に使っているだけだし
そうかWindows 8でもIDEとりあえず動くのか、10nenは
それにまだWindows 9でもつかえる可能性も残ってるし、どれだけお気楽なの?

391:デフォルトの名無しさん
13/03/29 18:19:41.23
サードって何?

392:デフォルトの名無しさん
13/03/29 19:51:02.15
>>387
同じ製品の英語版を海外サイトから買った方が安い
日本語問題無く使えるし

393:デフォルトの名無しさん
13/03/29 19:52:17.54
>>390
VB使いにドカタは少なかろう。
ドカタと言えばJavaだ。

394:デフォルトの名無しさん
13/03/29 19:58:38.66
WinHTTP MSXML Tar.libを使って2chブラウザを作ろうと思ふ

395:デフォルトの名無しさん
13/03/29 22:22:30.26
ごちゃごちゃいってないで公式で発表してるんだからそれよめよ

Windows Vista、Windows Server 2008、Windows 7、および Windows 8 に対する Visual Basic 6.0 のサポートに関する声明
URLリンク(msdn.microsoft.com)

Visual Basic チームは、Visual Basic 6.0 アプリケーションが Windows Vista、R2 を含む
Windows Server 2008、Windows 7、およびWindows 8 でも "動作する" よう、その互換性に向けて努力を続けています。



Visual Basic 6.0 IDE
2008 年 4 月 8 日以降、Visual Basic 6.0 IDE はサポートされていません。

Visual Basic 6.0 ランタイム
サポート対象のランタイム ファイル - OS に同梱されているファイル ほとんどの
アプリケーション シナリオで使用される Visual Basic 6.0 ランタイム ファイルの主なものは
Windows Vista、Windows Server 2008、Windows 7、または Windows 8 に同梱されており、
これらの OS の有効期間にわたってサポートされます

396:デフォルトの名無しさん
13/03/29 23:04:47.41
問題はVB6のランタイムそのものじゃなくてVB6のアプリ動かす上で使うその他ライブラリが動かないとかなかったっけ?

397:デフォルトの名無しさん
13/03/29 23:06:43.99
ごちゃごちゃ言うなカス

398:デフォルトの名無しさん
13/03/29 23:15:48.19
会社のコンピュータ一新するなら使ってた業務用アプリも一新して再開発依頼とかすればいいのに、設備投資の一部やろ、VB6のアプリが動くからって使い続けるのがおかしい、
あと古いコンピュータ使い続けるとこもおかしい、普通に新しいマシンにしてアプリなり作り直せば、プログラマ周りの景気が潤うのに

399:デフォルトの名無しさん
13/03/29 23:35:51.61
制御系なんて数千万~億だぜ?簡単に変えられねえよ
作った会社も当時の人間を切ってメンテできないし

400:デフォルトの名無しさん
13/03/30 01:52:40.97
>>398
ひょろっと出来るようなやつは当然そうしてるだろ
そうそう簡単に行かない、移行に年単位が想定されるようなやつの話だよ
ただまあ今だにシステム部門は非生産部門みたいな考え方が生き残ってるのも事実
モノ造り日本も良いけど、その為の下地や周りを整えてるのはシステムだっつー事に気が付いて欲しいやね

ま、現状VB6は動くしこれからもきっとサポートされ続けるよ
ExcelマクロやAccessをこの世から消さない限りね
そしてそれは不可能に近い

401:デフォルトの名無しさん
13/03/30 02:01:06.19
この世界で一番使われているシステム
それはJavaでもCでももちろんVBでもなく、Excelシステムである
企業個人を問わずありとあらゆる場所に入り込んでブラックボックス化している
MS一番の成功にして一番の頭痛の元である

おかげでしがないVB屋でもなんとか食い繋いで行けてるんですが

402:デフォルトの名無しさん
13/03/30 02:01:18.86
そもそも作り直しが難しい仕組みにしている
プログラマ自信の問題。

機能も何も増えないのに、作りなおしだけで大金を
払えといって納得できるわけ無いだろう。

VB6からVB.NETへの移行ツールは存在した。
もとからメンテしやすい仕組みで開発し、
移行ツールで対応できない部分を徐々に
書きなおしたりしていれば安く移行できたはずだ。

もVB6からいきなり最新のVB.NETに変更するのではなく、
VB.NETが出た時点で徐々にバージョンを上げていく。
.NET同士は互換性があるのだから一旦VB.NETにしてしまえば、
モジュール単位でC#に移行することだって可能だったはずだ。

アプリ開発会社が安く移行するための
技術力を持っていないからこうなる。

403:デフォルトの名無しさん
13/03/30 02:45:11.57
作り直しで大金って
設備投資ってそんなもんじゃねえの
大型建設機械だろうがラインロボットだろうが古くなったら一新するだろ
コンピュータやソフトウェアを軽視しすぎなんだよ、古くなったものを一新するのはソフトウェアでも一緒で金がかかるもんであり必要なんだって意識がなさすぎ

404:デフォルトの名無しさん
13/03/30 02:51:14.77
>>403
だがいきなり全部入れ替えることないだろ。
ソフトウェアもそうしろって言ってんの。

新しい部分と古い部分をうまく融合させ
徐々に移行できる体制を整えろってーの。

405:デフォルトの名無しさん
13/03/30 10:26:55.57
電子データは劣化しない

406:デフォルトの名無しさん
13/03/30 10:51:17.92
VB6から.net VBへの移行に関しては、プログラムの組み方とか言う次元以前に難しい問題が山積みなんだよ。
だから移行なんて考えずに、元のソフトを仕様書だと思ってゼロから作り直すのが合理的だって事は
実際に作業をしている人間なら余程のバカでない限りわかるはず。
作り直しが難しい仕組みにしているのが問題とか言ってる奴はたぶん何も知らないで言ってる

                   只野キチガイ

407:デフォルトの名無しさん
13/03/30 14:12:12.19
ソフト開発で一番工数がかかるのが設計だから
VB6から.netへの移植なんてほとんど工数かからない。

408:デフォルトの名無しさん
13/03/30 14:57:22.64
そうだよなVBなんていじってる奴は馬鹿

409:デフォルトの名無しさん
13/03/30 16:33:40.82
おまえら働けよ まったく

410:デフォルトの名無しさん
13/03/30 18:45:00.19
同じ仕様で移行するケースなんてレアじゃね?

411:デフォルトの名無しさん
13/03/30 19:38:56.38
不便だと感じてて改善してほしいとこや
不要な機能を外してほしいとか
仕様が変わるってことか?

412:デフォルトの名無しさん
13/03/30 21:07:08.50
集まるなよVB6時代の老兵どもw

413:デフォルトの名無しさん
13/03/30 21:12:40.11
WinHTTP MSXML Tar.libを使って2chブラウザを作ろうと思ふ

414:デフォルトの名無しさん
13/04/02 01:31:42.57
どっかで見かけた内容だな

415:デフォルトの名無しさん
13/04/02 02:57:16.89
逆に全く同じにって言われるとそれはそれで困ったりとか
基本的な仕様が変わりまくってるからな
いや.NETの方がしっかり決まってるんだけども。
VB6でアバウトにスルーしてた所が軒並みエラー吐くようになって死ねる

>>407
まあ、そういう感覚だよな。
でもほら、VBなんて昔から増改築が繰り返されて今に至るようなもんが多いから
昔は結構フリーダムで、開発者の趣味と気分で仕様決めてたりとか
設計書の類なんて当然無くて、当時の開発者の頭の中にしか仕様が残って無いという
移植なんてまともに出来るはずも無く・・・


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch