(*´д`*)アハァ… VB初心者質問スレ Part22

このエントリーをはてなブックマークに追加
1HTML化チェック済み

  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/test/read.cgi/tech/1044028945/

VB.net関連スレ
【老若】VB.net質問スレ【男女】 (Part2)
http://pc2.2ch.net/test/read.cgi/tech/1043629429/

心得
壱.質問する前に過去ログにも目を通してみる。
弐.質問する前に MSDN などで調べてみる。
参.VBScript もこのスレでOK。
四.インストーラーなどの質問もOK。
五.下ネタもたまにならOK。
21:03/02/27 23:07
立てますた。
3デフォルトの名無しさん:03/02/27 23:10
6.0のWebBrowserは.netでは何て言うのでしょうか?

≫1乙
41:03/02/27 23:11
暇なんで滑り込んでおくか。



    ズザー

 __('A`)こ=  ==3


>>3
>>1見てよ。せっかくリンク先チェックしてんのに。
【老若】VB.net質問スレ【男女】 (Part2)
http://pc2.2ch.net/test/read.cgi/tech/1043629429/
5デフォルトの名無しさん:03/02/27 23:11
>>1
乙age

つーか、Part22の.Netスレが立ってるよ…。
分岐?
単に重複でしょ。
7デフォルトの名無しさん:03/02/27 23:14
この際.net用はあっちにすれば?
それじゃ
【老若】VB.net質問スレ【男女】 (Part2)
の立場がない。
こっちはhtml化チェックもしてあるしな。
10デフォルトの名無しさん:03/02/27 23:29
11デフォルトの名無しさん:03/02/27 23:53
つーか、VBスレ自体もういらねーよ。
馬鹿が使うVBなんて、、、、さ
>>11
やーい、バ〜カ。
13デフォルトの名無しさん:03/02/28 00:57
VB6でクラス中心でプログラムしてる奴って実際どれだけいるんだろ?
14デフォルトの名無しさん:03/02/28 06:49
クラスは使うけど中心ではないよ。
15デフォルトの名無しさん:03/02/28 08:30
>>13
俺は積極的にクラス&ユーザーコントロール使う手法で
プログラムしてるよ
16ひきプロ:03/02/28 08:34
VBのOCXって他の開発環境で再利用できないんでしょうか?
検索したらDelphiからVBに張る方法ばっかりでてきて
>>13
自分の担当がDLL,OCX作成中心なので必然的にクラス・ユーザコントロール中心に設計するようになってる。

>>16
できないことはないんじゃない? 普通のコントロールと同じように扱えば。
ただVC/DelphiでできなくてVBしかできない処理というのがきわめて少ない以上、あまり需要の無い方法なのかも。
他の環境については知らん。
18ひきプロ:03/02/28 09:30
>>17
ほおほ、ありがとうございます。
いつもVBで開発してるので、もしVBからしかOCXが
使えないんだったら意味ないかなーと思ってました。
確かにVBで作ったのを他の環境で使うって事はなさそうですね。
今まで気にしてなかったんですがVCでもOCX作れるんですか。
VCで作る方法を探してみます
19デフォルトの名無しさん:03/02/28 09:45
>>13
おれはそうだな。複数インスタンスを作成すると効率がいいことが多いから。
>>13
漏れはクラス中心に設計してるよ。
クラス、ユーザーコントロール、(クラスとしての)フォーム…。
作業の切り分けやインスタンスの管理が楽だからね。

ただ、作業員で入ったおじちゃん&おばちゃんプログラマが勝手に、
標準モジュールに書き換えられたり、フォームにベタ書きされたりすることも、しばしば。
設計は守ってくれって言うと、
「何で、フォームとモジュールでできることを、わざわざクラス・コントロール使わないかんねん!!
 このド素人が!!VBにはVBのやり方があるんや。
 クラスやコントロールなんてオマケやぞ。」
と集団で一喝されました。あ〜痛い痛い(w
>>20
どんなコードにケチを付けられたのかわからないけど

| VBにはVBのやり方があるんや。
| クラスやコントロールなんてオマケやぞ。

クラスやコントロールを使わないのがVBのやり方だというのは賛成できないな。
16ビットVB時代の古い頭では理解できないのだろう。
22デフォルトの名無しさん:03/02/28 10:12
アロハPC1を使って電話の着信からDB検索して
顧客情報を表示というプログラムを作成しているのですけど
VBのサンプルってどこかに落ちてないですか?
23ひきプロ:03/02/28 10:17
http://www1.sphere.ne.jp/nikko-ew/seihin/alohapc1/alohapc1_specifications.pdf
8ページ目に仕様が

MSCommコントロールを使うと何とかなるかも知れませんね。
>>20
俺は ActXとかDllとかOCXを作らない場合にはクラスの使い道って知らん。
業務上ActX毎の単体処理になるんで、インターフェース以外は使ってなかった。
 が
最近、内部のテーブルとして使えばパブリック引数に渡せるなぁ・・て利用中。
(メモリ展開させて)
しかし、データプールとしてのみで、処理は持たせてない。正しい使い方ってなんだろう・・
25ひきプロ:03/02/28 10:33
そういえばクラスってリスト構造とか木構造とか
作れますよね。
2620:03/02/28 10:42
>>21
クラスの処理なんか、まさにUMLのクラス図みたいなものだよ。
そのクラスをコレクションにするクラスをラップした、ごくごくフツーのクラスモジュール。
コントロールもいくつものコントロールの処理を統一化した、
インターフェース処理を含めた、またクラス図みたいなものだよ。
そりゃ、たしかに使わなくてもできるが、
何も、多次元配列とSelect〜Case〜の山に書き換えることも無いだろうに。

>>24
漏れはクラス・コントロール自体に特別すごい処理は持たせないよ。
あくまで、存在の切り分け上含まれるプロパティ・メソッド・ファンクション・イベントが乗っかるだけ。
アプリ内のDLL・OCXの配置に近い使い方もするな。
生成すべき形が明確な場合はクラス化するようにしてる。
Form1.visible=Falseにするとクラスになりますた。
.。o(見えててもクラスなんだが...)
2921:03/02/28 11:14
>>25
作れるけど、インスタンスの寿命とかを考えないとハマるおそれあり。

>>26
OOを理解できないオールドタイプか>20のまわり

>>27
ポカーン(AA略
>20に書かれてるおじちゃんたち、ドトネトに移行したら喜びそうだね。
31ひきプロ:03/02/28 11:45
>>29
そうですよね、適当に作ったら解放されないで
メモリ上に残ってしまいそうですね。
3220:03/02/28 11:55
>>29
まさにオールドタイプ。
RDBもほとんど意識して無い。
昔、Accessのマスタテーブルの作成をお願いしたら、
テーブルごとに別ファイルにされた。
「CSVはこうなってるだろ。」と言われたよ。
オイオイ、何のためのDBだよと…。

>>30
たぶん永遠に旧VBマンセーのままのような気がする。
ドトーネトは駄作、使い物にならんと言い張って。
33デフォルトの名無しさん:03/02/28 12:03
>>31
適当に「つかったら」だろ。明示的に解放するのが普通の使い方じゃないか。

おれはRecordset,XMLやFileSysmteObjectは、それ専用のラッパークラスを
作ってる。バージョンの違いもこのクラスの中で吸収できるし、エラーも
大部分吸収できる。
VB.NETはフォームに貼るだけで使えるActiveXコンポーネントが多そうだから初心者のオレはほしい。カレンダーコントロールとかあるからうるう年の計算とかプログラミングする必要ないし。
35デフォルトの名無しさん:03/02/28 12:17
>>34
VB6のDTPickerはダメなん?
業務系でDTPickerいいよなぁ。古い部分がCalendar使ってたけど・・あれは酷いw
3734:03/02/28 12:52
>>35-36
34の意味はカレンダーのことというより
いろいろなコントロールがVB6よりありそうだなーっということでよろしこ
38ひきプロ:03/02/28 13:07
>>33
確かに…。インスタンスの解放をVBに任せる
癖が付いてました。

ラッパークラスって良さそうですね。
何度もエラー処理とか解放とかしてると
いつか間違えてしまいそうだし。
39デフォルトの名無しさん:03/02/28 13:32
\hoge\hoge2\hoge3\ というデータがあって、
この通りのフォルダを掘るにはどうしたらいいでしょうか
shell("mkdir .\hoge")
shell("mkdir .\hoge\hoge2")
shell("mkdir .\hoge\hoge2\hoge3")
>39
頭からループ回しながら、
Dirで確認して、無ければ掘る。
俺なら手抜きして on error でエラー処理抜かしちゃうがな。
4333:03/02/28 13:48
>>38
ですね。Recordsetオブジェクトとか、本にも適当に書かれてることが多いんで
後でリファレンス見て使い方が間違ってたーっていうときにも修正が楽です。
「VB6 Error Coding & Layering」って本からこのやり方にしました。
44ひきプロ:03/02/28 14:29
>>43
英語の本ですか(;´Д`
ラッパークラスについていろいろ検索してみようと
思います。ありがとうございました。
45デフォルトの名無しさん:03/02/28 14:48
WebBrowserコントロール上でのマウスクリックをとりたいです。
どうすればいいでしょうか?
4633:03/02/28 14:58
>>45
SubClass .... かな....
文字列
 あああwww.uploader.com/folder001/いいい
からアドレスらしき文字列を抽出するプログラム。
VBで実際に動かすと
www.uploader.com/folder001/
という文字列を抽出できる。
48968 ◆HLRHHB4j46 :03/02/28 15:49
'On Error Resume Next
Dim RegEx As Object, Match As Object, Matches As Object
Dim StrPattern, StrSource, Str1 As String
Set RegEx = CreateObject("VBScript.RegExp")
If Err Then
MsgBox "エラー"
Else
'実験用Patternメモ
'"[^a-zA-Z0-9]""[a-zA-Z_0-9]|/""[a-zA-Z0-9]|\.|\&|\%|\=|\/|\+""w+\...+\/.+[^!#-;=?-~]"
StrPattern = "[a-zA-Z0-9]|\.|\&|\%|\=|\/|\+"
RegEx.Pattern = StrPattern '検索パターンを設定
RegEx.IgnoreCase = True '大文字と小文字を区別しないように設定
RegEx.Global = True '文字列全体を検索するように設定
StrSource = "あああwww.uploader.com/folder001/いいい" '検索対象の文字列
Set Matches = RegEx.Execute(StrSource) '検索を実行
Debug.Print "--------------"
Str1 = ""
For Each Match In Matches
Str1 = Str1 & Match
'Debug.Print "一致する文字列が見つかった位置は、" & Match.FirstIndex & " です。"
Debug.Print "一致した文字列は、" & Match.Value & " です。"
Next
Debug.Print "それぞれの文字を結合してURL生成" & vbCrLf & Str1
End If
49968 ◆HLRHHB4j46 :03/02/28 15:51
↑プログラムおわり
----------------------------
StrPattern = "[a-zA-Z0-9]|\.|\&|\%|\=|\/|\+"

StrSource = "あああwww.uploader.com/folder001/いいい" '検索対象の文字列
をいろいろ変えると他の目的にも使える。
StrPatternの値はここを参考にする。
ttp://www.microsoft.com/japan/msdn/columns/scripting/scripting051099.asp
日本語ドメインの中の人も大変だな
51968 ◆HLRHHB4j46 :03/02/28 16:48
上のプログラムを実行する前に
Microsoft VBScript Regular Expressions
を参照設定に追加する。
52968 ◆HLRHHB4j46 :03/02/28 16:56
>>50
前スレまで正規表現サバーリわからなかったからそれなりに苦労した。
53968 ◆HLRHHB4j46 :03/02/28 16:59
URLには_もつかわれることがあるので
StrPattern = "[a-zA-Z0-9]|\.|\&|\%|\=|\/|\+"
に|_を追加してみた。
StrPattern="[a-zA-Z0-9]|\.|\&|\%|\=|\/|\+|_"

URLに使われそうな文字が見つかるたびに追加していく。
54968 ◆HLRHHB4j46 :03/02/28 17:01
つまり、
_を追加したことにより、
www.vb_net/
というようなURLもひろえる。
56968 ◆ExGQrDul2E :03/02/28 17:28
>>55
見てきた。その資料より抜粋。
";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | "," | "-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")"
追加しなければならない文字がたくさんあるなあ。
57デフォルトの名無しさん:03/02/28 18:38
6.0のWebBrowserは.netでは何て言うのでしょうか?

59デフォルトの名無しさん:03/02/28 19:29
>>58
誰もこたえてくれないんで・・・。
60デフォルトの名無しさん:03/02/28 21:37
>>39
MakeSureDirectoryPathExists ってAPI
いまさらなんですが
VBの線描画(Line,Pen)について
実線以外の線(点線,破線など)の
線幅を変更して描画する方法を
教えてください。
>>61
正攻法 -> LineDDA API

おまえら質問汁!
土日は質問少ないんだよなぁ…。ヒマだね。
6561:03/03/01 17:49
>>62
サンクス.試してみます
(*´д`*)アハァ…
VB畑でつかまえて
リーチ一発VB
69デフォルトの名無しさん:03/03/02 12:00
少しは目立つように上げるべし!
いや、馬鹿言語に目立たれるとうざいのでsageてくださいよ
71デフォルトの名無しさん:03/03/02 16:23
sendkeysでWindowsキーって送れませんか?

WinampをWindowsキーで操作できるプラグイン入れて、
他のPCからTCP/IPでWinampを遠隔操作できる
ソフトを作りたいんですが。
>>71
送れますよ。
>>いや、送れない。
ガーソ
ミ田キー = "^{ESC}" と思ってたのに、、、
>>74
"^({ESC}F)" != Windowsキー+F
VBkey+任意のキー
例:
VBKeyE
VBKeyRight
失礼します。VB超超初心者です。
ツールバーのボタンにwordなどのように
画像を表示したいのに、できません。
方法はわかるのですが、その画像ファイル(イメージリスト?)を
どこから持ってくるのか全くわかりません。
コンポーネントもざっと調べてみたのですが・・・。
(↑見当違いですか?)
イメージリストがどこにあるか教えてください。
馬鹿らしい質問かもしれませんが、宜しくお願いします。

>>77
たしか本に載ってた記憶があるが、本が見つからないのでオレには答えられない
私も超初心者ですみませんが、
getobject(,"InternetExplorer.Application")を使って、
開いてるIEを扱おうとすると、
普通のPC内のフォルダにつながっちゃうんですけど、
どうすればいいでしょうか、教えてください。
>>77
はあまり反応がイクナイ
81デフォルトの名無しさん:03/03/03 00:38
>>77
イメージリストは自分でフォームに設置しないといけないです。
Windows Common Controls6.0にあります。
VBのdeclare functionってやってDLLを利用するとき、DLL側の呼び出し規約は
cdeclを使えますか?stdcallは使えるのですか?VBでは呼び出し規約はどういう
扱いになっていますか?
>>82
stdcallしか使えないと思ったが…よく覚えてない。
8477:03/03/03 11:22
>>81
ありがとうございました!!
早速やってみます!!
イメージリストを設置するところまでは無事できました!!
でもいざ画像の挿入をしようと思っても肝心の画像
(プリンタとか開いてるフォルダ等の画像)がどこにあるのか・・・
本にはそこまでは書いてなくてわかりませんでした。
一応HDD内は検索してみたのですがありませんでした。
DLとかするものなんですか?
>>85
CDに入ってますよ
8777:03/03/03 12:28
>>86
はぁ〜やっと見つけました…
本当にありがとうございました!!
メニューエディタを使ってメニューをつくるときに、
開く
終了
のように縦にメニューを表示させるのはできますが、
開く 終了
のようにメニューバーの中に2つの項目を横並びに配置する方法がわかりません。
>88

                    ,イ^i
                   ,イ::::  l
                  /::::::::   l
                 /::::::::::    {       /|
               /::::::::      `-、_  /:: {
              /:::::::::::    /       ̄  __ l
             ./:::::::::::         :::::\:::... \ i
             /:::::::::::          ::::::::::\:::: 、 {
             |:::::::::::.            :::::::::_ゝ:::  !
             |::::::::::::.       ):.`ー..____' /:::  |
             .l:::::::::::::.         ヽー─フ::   /   プッ
             ヽ::::::::::. ___           ,/
               \::/`ー---‐^ヽ        /
                l:::      l         /
           _ /,--、l::::.      ノ       l
       ,--、_ノ:: `ー'::   、ミー---‐,,l        \
      ,/   :::         i ̄ ̄  |         \
     /:::::::.        l:::    l:::::::   l           \
    l:::::::::::.   l:::    !::    |:::::::   l            \
    |:::::::::l::::  l:::    |::    l:::::     l              l
    |::::::::::l:::.   }:::   l:::::,r-----    l               l
    ヽ::::::::l::::   ト:;;;;;;;/-/__...........  /
    /\::::`ー‐'  / l__l;;;;;;;;;;;/
  /   `           /

90デフォルトの名無しさん:03/03/03 12:48
>>88
ヘルプ嫁。
(*´д`*)アハァ…
9288 ◆D24s65nhoU :03/03/03 13:53
>>89-91
ヘルプに載ってないテクニックが必要なようで載っていませんでした。
メニュエディターを開いた後の手順を細かく教えてくれたらうれCです。
>>92
テクニックって、、、
たとえば
ファイル(F)
 開く
 終了
というようなものを
ファイル(F)
 開く | 終了
のような感じにするのでしょうか?
9488 ◆D24s65nhoU :03/03/03 14:33
>>93
(青いタイトルバー)ソフト名
(灰色メニューバー)開く 終了
としたいんです。
>>94
ヘルプも真面に読めないのかスカタン
96!88:03/03/03 14:42
>>95
見付けられなかったけど、どのあたりに載っているか教えていただけますか?
97!88:03/03/03 14:54
>>94を読み間違っていた...寝よう
あまりに簡単なので釣りとしか思えんが・・・確かにメニューエディタは
とっつきにくいかもしれないね。

「・・・・」がメニューの階層なのでそれを「←」ボタンで取っ払えばいいってだけ。
9988 ◆D24s65nhoU :03/03/03 15:09
>>98
ありがとうございます。
開く 終了
と横並びに表示する場合も
メニューエディタでは
開く
終了
と縦に登録していくんだなと気がつきました。
えっ、釣りじゃなかったのか
言われてみれば確かに、あのメニューエディタはVBらしからぬ作りだよな・・・
うむ、VB.NETのメニュー作成方法みたいじゃないと
Visualではないね。
103デフォルトの名無しさん:03/03/03 18:51
よろしくお願いします。
汎用機で作成されたデータファイルをExcelに渡す処理を考えています。

汎用機からWindows上に落としてきてきた(この間に文字コードの変換をしています)
テキストファイルの中の、指定した行のiバイト目からjバイトを抜き出す
(その後エクセルに渡す)、という処理で詰まっております。
(この"iバイト目からjバイト"というのは汎用機側の印刷パラメータです。)
対象となる行には数値、日本語が混在しています。i,jは表の項目ですので増加していきます。

Mid,MidB関数で引数にi,jを指定してやればよかろと思っていたのですが、
汎用機側では数値は1バイト、日本語は2バイトで扱っており
Windows上では全て2バイトで扱っているのでこれだと抜き出す時に誤差が生じてしまいます。

で、バイナリで開いて先頭から順次読み込んでやればいいかなと足りない頭で考えたました。
以下、足りない頭で考えたルーチンです。
1.対象行(テキスト)をバイナリで作業ファイルに書き込む
2.作業ファイルをバイナリで指定したバイト数だけ読み込み、配列で宣言したByte型変数に格納

とここまでやったのですが、これを元の数値や日本語に戻すにはどうしたらいいでしょうか
よろしくお願いします。
超FAQです。
LenBとStrConvでドゾ。
105デフォルトの名無しさん:03/03/03 23:28
VBでマルチキャストの送受信を行うべく、
With Winsock1
.Protocol = sckUDPProtocol
.Bind 20002
.RemoteHost = "233.0.0.0"
.RemotePort = 20002
End with
と設定して、他マシンからのマルチキャストを受信してるんですけど、
Winsock1_DataArrivalイベントが発生しません。
試しにVCで作ったマルチキャスト送受信プログラムで受信してみるとうまく受信できました。
VBで受信するには他に何か設定が必要なんでしょうか?
ちなみに、この設定のままWinsock1.SendDataで文字列を送信してみたら、
マルチキャストの送信は、できました。
 VBでHP作ったんですけど、アップロードの仕方が分かりません。
誰か教えてください。
>>105
私の環境では完璧に動きまする…。
Win2ksp3/VB6sp5。
VBにSPはあてた? Winsock.ocxにバグあった気がする。

あと、コード中で入れるんじゃなく、プロパティーページで
Bind以外を設定するとどうなる?
なんか別の所で変なことやってるのかもしれないし。
108105:03/03/03 23:59
>>107
動きましたか。うちの環境はWin2k VB6SP5です。
ちょっといろいろ設定見直してみて、また来ます
109デフォルトの名無しさん:03/03/04 01:54
>>103
「バイト型配列から日本語含めた文字列への変換」でいいのね。
バイト型配列を「byteArray()」とすると、

Dim strBuf As String
strBuf = StrConv(byteArray(),vbUnicode)

でいけるはず。何も見ないで書いたので綴り間違ってるかも。
ためしてみてちょ。
110デフォルトの名無しさん:03/03/04 02:23
マウスカーソルの位置を強制的に固定したいのですが
マウスの位置のプロパティってありますか?
ClipCursorだったかな
ごめん
よく調べたらあった。>MouseCol、MouseRow プロパティ


       / ̄ ̄ヽ     / ̄ ̄ヽ
       l i'´~`ヽ|   l /~`ヽ |
       ヽ.\  ,レ-――-'<、 _ノ /
         `‐/_____\- '         人_ト、__ノ、_,ヘノ\_ノヽノ、
          / ,-、      ,-、 ヾ、       人/                \__
           l  ,..、       ,..、  l     _ノ                    (
     __l  i 0} ,.●、 !0 i  l__  _)
  / ̄| | . |  `~ /___\`~´   |  | __ノ 絶対に許さんぞ>106!!!!!!!
/     | | |l    ‘-イ !_|_!`r’     !|  | ノ
\\   | |. |`、   r{     h   ,/リ <    じわじわとなぶり殺しにしてくれる!!!!!!!
  \\.| |   ヾ\ ヽ二ニ二.ノ  /〃 |  )
、   \ノ^,ニ‐-ァ  ̄`ー-----一' ̄/  | ^ヽ
\  // ,/⌒i、_\\_____//  .|  |  ⌒)
   {   i   |  iヽ`ー-----― '    |  |    ̄ヽヘ/⌒ヽ/\i'\へ/⌒Yヽ'^

ユーザーの環境によっては
Date関数が
2003/02/03
ではなく
2003/2/3
という値を返すことはあるのでしょうか?
115>>103 です:03/03/04 10:24
>>104
>>109

レスありがとうございました。
StrConv関数のヘルプは散々見ていたのに、引数のvbUnicodeを見落としていますた。
これからテストしてみます!!!
>>114
心配ならFormat使え。
>>114
前提が間違ってるぞ。
そもそもDate関数は文字列を返すものじゃなく、Date型を返すもの。
文字列型へ代入した時の形式は、そのマシンの「地域のオプション」の日付形式の設定に
左右される。決まった形式で欲しいならFormat関数を使うのが吉。
118114:03/03/04 10:40
>>116-117
ありがとうございます。
Format関数は使ったこと無いけどマスターしてみます。
119114 成功しました:03/03/04 10:54
Format(Date, "yyyy/mm/dd")
>>117
でも漏れなんかは、N88BASIC時代の人で、Date$とかTime$に慣れてたから
結構そのままやってて、意図しない書式が返ってきたりして面食らったことがあるな。
121デフォルトの名無しさん:03/03/04 11:07
アプリケーションにエラーが出ていないか監視したいのですが、
どうやればいいのでしょうか?
122デフォルトの名無しさん:03/03/04 11:08
この3つで使われているapigid32.dllってのを、標準のwin32APIに置き換えることはできますでしょうか?
copymovememoryとか、該当しそうなAPIがあるので・・・

Public Declare Sub agCopyData Lib "apigid32.dll" (Source As Any, Dest As Any, ByVal nCount As Long)
Public Declare Function agGetAddressForObject Lib "apigid32.dll" (Object As Any) As Long
Public Declare Function agGetStringFromLPSTR Lib "apigid32.dll" (ByVal src As String) As Long

>>121
On Error ステートメントか?

>>122
そもそもそのソースがどこから出てきたか説明するのが筋だと思うが・・・
ググッてみたところ、ダニエル・アップルマンの本のおまけでついていたDLLみたいだな。
それら関数の動作の詳細も書かずにできるかどうかと問われてもどうか?って
感じだが、その関数の中でやってるのと同じことをやればできるだろうw
一応マジレス。
124122:03/03/04 11:15
>123
いやぁ、apigid32.dllは持っているのですが、あまりユーザの環境に入れたくないですよね、余計なDLLは。
というわけで、標準のWin32APIに置き換えはできないかなと思って質問してみました。
ありがとうございます。
125121:03/03/04 11:35
>>123
VB6で作成した実行ファイルを起動していると
アプリケーションエラーがでてしまいます。
で、エラーが出たらそのアプリケーションを再起動したいのです。
126デフォルトの名無しさん:03/03/04 11:44
>>125
なぜそのアプリのバグを取ろうって発想にならないんだろ・・・ (´д`;)
FindWindowあたりでできそうな気はするが。
128:03/03/04 11:59
>>119
「/」 は地域のオプションの区切り記号に置き換えられるので、
それだと期待通りに動作しない場合があります。

Fromat(Date,"yyyy\/mm\/dd") が正解です。
129114:03/03/04 12:07
>>128
むぅ。盲点でした。
世界中のVBアプリにこの手のバグがあるような悪寒を感じてしまいました。
130デフォルトの名無しさん:03/03/04 12:16
すみません、くだらない質問ですが
あんまり簡単すぎて?探しても記述を見つけられないのでお願いします。

1.Space"$"(number)のように、関数の後ろに"$"が入るのはどういう意味を表していますか?
2.myarry() as integer のように、配列の括弧内が空白というのはどういう意味ですか?

よろしくお願いします。

>>130
ヘルプ読めばどっちも書いてあると思うが。
関数名に $ がつくのは、返り血を文字列型で返す関数。
$を省略すると、Variant型で返るので、パフォーマンスのためには
$をつけた方がいいとよく言われる。

myarry()のように空白の配列は、動的配列という。
ReDim myarray(256) などのようにして、コード中で配列の要素数を変更
したい時に使う。
>>131
積年の謎が解けました。
ReDimのヘルプ引いたら意味が分かりました。
ありがとうございます!!!
横からスマソ。
>>130-131
関数定義の段階で
Function Space(number) as String
とやっておけば、関数名に $ をつけなくても返り値は String が保証されるんですよね?
>>113
Yes. その辺は変数定義と一緒。
135134:03/03/04 12:53
×>>113
>>133
my性器
覚えるより忘れる方が早い人はどうすればいいんですか?
>>137
氏ね。
139138:03/03/04 13:10
>>134
ありがとうございます。
>>137
電脳化させろ。
141137:03/03/04 13:17
>>140
どういう意味?
142137 ◆V1kwoShQaI :03/03/04 13:19
>>140
むずかしそうな話だからしばらく電脳化についてはいいや。
とにかく昔の自分のコードをわざわざみないと今現在何も作れない自分がいるのがかなすぃ。
143デフォルトの名無しさん:03/03/04 13:26
>>142
そんな君にはオブジェクト指向&デザインパターン。
コードを見なきゃつくれない→自作のライブラリを使えばすぐできる。(※)
へとステップアップだ!

※自作のライブラリを使わなきゃつくれない、、、とも言う。
144137 ◆V1kwoShQaI :03/03/04 13:30
>>143
ようするに普段から再利用可能でコピペで使えるようなプログラミングを心がけなさいということだね。
あとは貼り付けてつかえるActibeXコンポーネントをうまくつかうっと。
未だに変数名もばらばらにつけてるオラには再利用ライブラリはムリポ。
>>144
漏れが恐ろしいほどコメントつけまくるのは
他人がコード見たときの理解を助けるため・・・ではなく、
自分が後から見たときに分かるようにするためだ。

「この変数なんだっけ?(*´д`*)」
146137 ◆V1kwoShQaI :03/03/04 13:47
>>145
なるほど。オレも変数についてコメント書くことがあるな。英単語の意味を。
Dim Int1 as Integer 'integer=整数という意味
>>145
俺も4年ごしでやってるシステムの根幹部分なんて
自分で組んだのにすっかり忘れてるよ・・・ (*´д`*) アハァ
やっぱコメントは大事だね。
でも自分で書いたソースって、やっぱ他人の書いたソースよりも
はるかに理解がしやすい。
あ、いいソース書いてるって意味じゃなくねw
やっぱ組み方のクセみたいなものがあるから理解しやすいんだと思う。
そろそろお昼ねタイムだ
失礼します。
メニュー項目をクリックすることでテキストボックスの
横スクロールバーの有無を切り替えたいのですが、
スクロールバーは新しく値を設定する事ができない、
と言われてしまいます。
どうすればメニューのクリックで
スクロールバーを切り替えられますか?
(Windowsメモ帳の「右端で折り返す」みたいな感じです)
>>149
あらかじめスクロールバーのあるのと無いのと2つ用意しておいて、
メニュークリック時に表示・非表示を切り替えるとか。
もちろん切り替え時に内容は同期取ってね。
151デフォルトの名無しさん:03/03/04 14:23
すいません、スタンダードでも自分の作ったアプリ配布できるますか?
152149:03/03/04 14:28
>>150
ありがとうございます!!

そういう手も考えてはみたのですが、
何せものすごい初心者なもので…。
その、同期を取るのをどうしたらよいかがわかりません。
本にも載ってないしヘルプファイルも参照できない状態なので、
どうか教えていただけないでしょうか?
宜しくお願いします。
>>152
ヘルプないなら、MSDNオンラインを利用すれ。
ttp://www.microsoft.com/japan/msdn/library/
ちなみに同期を取るとは、下記みたいな感じ。
あんまり答えモロは書きたくないが、簡単すぎるのでたまにはまんま載せてみた。

Private Sub Command1_Click()
If Text1.Visible = True Then
Text2.Text = Text1.Text
Text1.Visible = False
Text2.Visible = True
Else
Text1.Text = Text2.Text
Text1.Visible = True
Text2.Visible = False
End If
End Sub
>>152

sub メニューを押した
  if text1.visible then
    text2.text = text1.text
    text2.visible = false
    text1.visible = true
  else
    '反対のことをする
  end if
end sub

こんな感じー。
つーか漏前、なんでヘルプが無いんだYo!
負けた(ρ_;)クヤシイ
>>154
割れ物でMSDNのディスクがないと思われ。
157149:03/03/04 15:03
>>153-154
何から何まで本当にありがとうございます!!
今度からMSDNオンラインを見てみますね!!
それでもわからなかったらまたよろしくお願いします。

>>156
その通りなんです…
>>157
割れ厨かよ。答えなきゃ良かった。氏ね。
漏れなんか、CD-ROM割れてしまって、バックアップなんか取ってないから
MSDNみれないんだじょ。マイクロソフトのサイトみてますが。

これぞ本物の「割れ」・・・・
>>157
通報スマスタ

>>159
MSのサイトで交換の受付ってなかったっけ…。
あっても、今更古いMSDN来ても困る罠。
MSDN付.net買うが宜し。VS6用も入ってるでしょ。
すみません。
VB6のプログラム作成ソフトってフリーで落ちてないんですか?
>>161
頭大丈夫?
>>161
モデラーのこと言ってんのか?
どっちにしろ、自分の考えを表現するためには、
作成ソフト自体を自作しなければ難しいぞ。
164ひきプロ:03/03/04 16:45
何年か前にVBの体験版とサービスパックを使って
無理矢理EXEを作成するとかいう裏技ありましたね
>>161
ソースだけならメモ帳でも書けるぞ
Form1.Showを実行するとForm1.VisibleがFalseでも画面に表示されるのだけれどこれで正常ですか?
>>166
正常
168166:03/03/04 17:18
>>167さん
ありがとうございます。
>>166-168 (*´∀`*) ホ〜ノボノ♪
170デフォルトの名無しさん:03/03/04 18:38
VBプロジェクトをRBプロジェクトに変換

http://www.realbasic.com/
171デフォルトの名無しさん:03/03/04 18:43
VBScriptで
"ゴルァ"
と""も含めて表現したい場合、

document.write "??? "
???にはどう書けばよいのでしょうか・・・
172ひきプロ:03/03/04 18:44
"""ゴルァ"""
173デフォルトの名無しさん:03/03/04 18:47
ぬおー、できたー アリガトゴザイマス
174:03/03/04 19:08
VB6のLogEventで出力されるログの
"ソース"※ を変更できる方法ってありますか?

※イベントビューアで見れる項目名"ソース"

過去ログ検索する前のカキコ スマソ。
>>174
過去ログみてから発言しましょうね。
心得
壱.質問する前に過去ログにも目を通してみる。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
弐.質問する前に MSDN などで調べてみる。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
参.VBScript もこのスレでOK。
四.インストーラーなどの質問もOK。
五.下ネタもたまにならOK。
>>165
ロジックはともかく、GUIをメモ帳でコーディングするのは生産性が恐ろしく低い罠・・・。
CreateWindowでフォームもコントロール作れ。
だったらCレベルの生産性は維持できるだろ。
WebBrowserコントロールでMouseMoveのようなのできないですかね?
179デフォルトの名無しさん:03/03/04 21:23
誰か、わかりやすくコールバックメソッドを使った非同期通知のやり方を教えておくれ。
イベント通知だとイベント処理メソッドの処理が終わらないと一方が止まってしまうので
困ってしまってね。Coffeeサンプルは複雑で漏れにはわからん。

ヘルプ嫁・・・・はいはい
ピクチャーボックスに文字を出力するのは
Print Picture1 "aiueo"
だと失敗したんだけど・・・正解をキボンヌ。
181ひきプロ:03/03/04 23:21
Picture1.Print "aiueo"
182180:03/03/04 23:28
>>181
ありがとう。微妙におしかった。
>>182
見た目は微妙だが、
考え方は180度間違っている。
184105:03/03/05 00:42
すいません、やはりマルチキャストの受信だけができません。
UDPを使って、お互いのIPをRemoteHostに設定して
ユニキャストで文字列のやりとりはできるし、
マルチキャストを使っての送信はできる(確認は受信側でVC製の別のマルチキャスト受信ソフトで行った)のですが…
>>105の設定だけではだめなんでしょうか?
185182:03/03/05 01:18
>>183
オブジェクト メソッド 引数の順で書いていけばよかったと今頃思った。
186デフォルトの名無しさん:03/03/05 01:29
win98でMicrosoft Windowless Controls 6.0のWL コンボ ボックスを使った
プログラムを作ったのですが、windows2000とXPで、実行しようとすると
「コンポーネントMSWLESS.OCXまたはその依存関係のひとつが適切に
登録されていません。ファイルが存在しないか、あるいは不正です。」
とエラーが出て実行できなかったらしいです。 
どうすれば解決できるでしょうか?
珍しいとは思うけどAccessとの絡みで質問でつ。

Accessのテーブルデータと連携した画面を作っています。
MSHFlexGridにDetaSourxeを設定してデータを表示させるまでは
できるのですが、その中からユーザに選択させるために
左側にチェックボックスを並べたいのです。
普通に並べても、FlexGridのデータをスクロールバーで上下させてしまうと
チェックボックスの選択と同期が取れなくなってしまうし、
かといってテーブルに選択の列を追加しても
DBデータと連携できるチェックボックスコンポーネントなんてないし。

理想は、FlexGridの横一列とチェックボックスを対応付けて
スクロールバーに連携させ、かつ離れた列の複数選択を可能にすることです。
どうにか方法ないものでしょうか?
素直にFlexGridのセルをクリックして選択させたほうが楽でしょうか?
>>184
スマソ、ブロードキャストと勘違いしてた…。
マルチキャストを受信するには、アプリケーションからOSにその旨登録しないと
駄目みたいな様子なので、API使うか何かする必要があるような感じ?
IGMPがどうたらこうたら…。
漏れにはお手上げ(ρ_;)
189189 ◆7WYWM3doQ. :03/03/05 03:18
プログラミングしてるとオレって天才と思うときがたびたびある。
そう思うことは個人の自由だから何も言わないが、
それを公言するのは人間としてなんか間違っていると思う
191デフォルトの名無しさん:03/03/05 04:47
つまり、




(・A・)イクナイ!





192デフォルトの名無しさん:03/03/05 05:02
MXって何ですか?
193デフォルトの名無しさん:03/03/05 08:21
GeForc(ry
>>189
少なくともVB使ってたら思わないな...
>192
アレだろ、ごつごつしたタイヤのオートバイで天高くジャンプしたりする競技?
196デフォルトの名無しさん:03/03/05 09:30
VBで関数ポインタを呼び出すにはこうすればいいと分かったのですが、
CallWindowProcは引数が4つ余計です。他に良いAPIはありませんか?

Option Explicit

Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Sub main()
Dim adr(2) As Long
adr(0) = AddPtr(AddressOf func0)
adr(1) = AddPtr(AddressOf func1)
adr(2) = AddPtr(AddressOf func2)

Dim i As Long
For i = 0 To 2
Call CallWindowProc(adr(i), 0, 0, 0, 0)
Next i
End Sub

Public Function AddPtr(ByVal Address As Long) As Long
AddPtr = Address
End Function

Public Function func0(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Debug.Print "func0"
End Function
Public Function func1(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Debug.Print "func1"
End Function
Public Function func2(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Debug.Print "func2"
End Function
>>196
EnumWindowとか、SetTimerとか試してみたら?
つーか、なんでパラメータを無視するんだよぅ(笑
>>197
EnumWindowで出来ます? SetTimerはタイムラグがありそうだし、
TIMERPROC型がWNDPROCと同じ個数の引数なので意味なさそうです。

> つーか、なんでパラメータを無視するんだよぅ(笑
だって、この場合必要ないし。


たいした問題じゃないんですが、名前を変更してみました。
これで一見、「どうやってるんだ?」って思わせられるはず(w
Option Explicit

Public Declare Function CallFunc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal Param1 As Long, ByVal Param2 As Long, ByVal Param3 As Long, ByVal Param4 As Long) As Long

Sub main()
Dim adr As Long
adr = FuncPtr(AddressOf func)

Debug.Print "ret:" & CallFunc(adr, 0, 0, 0, 0)
End Sub

Public Function FuncPtr(ByVal Address As Long) As Long
FuncPtr = Address
End Function

Public Function func(ByVal Param1 As Long, ByVal Param2 As Long, ByVal Param3 As Long, ByVal Param4 As Long) As Long
Debug.Print "func"
func = 1
End Function
CallWindowProcはメッセージのフックで使うのが普通
(引数がSendMessageと同じところに注目)

例えば func(param1 As String, param2 As Object) の様な引数を持った関数はVBでは呼べません

言い切ってしまえば VB で関数ポインタは扱えません
関数ポインタを呼び出す部分をCでDLLするしか方法は...(以下省略
>>198
いまいち意図がつかみにくいけど、要するに関数のポインタを変数に入れて、
コールバックで扱いたい、ってこと?
こんな感じかい?

Option Explicit
Public Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Public Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long

Sub main()
  Dim ptrFunc As Long
  
  ptrFunc = FuncPtr(AddressOf TimerProc)
  Call SetTimer(0, 0, 1000, ptrFunc)  ' AddressOf TimerProc)'本来はこっちの書き方

End Sub

Function FuncPtr(ByVal AddressOfFunc As Long) As Long
  
  FuncPtr = AddressOfFunc

End Function

Public Sub TimerProc(ByVal hwnd&, ByVal uMsg&, ByVal idEvent&, ByVal dwTime&)
  
  Call KillTimer(0, idEvent)
  Debug.Print dwTime

End Sub
>>199
> 例えば func(param1 As String, param2 As Object) の様な引数を持った関数はVBでは呼べません
そういう時はね、StrPtrやObjPtrでアドレス値に変換してから
呼び出し先でアドレスをローカル変数に代入すればいいんだよ。
202デフォルトの名無しさん:03/03/05 11:27
タイプライブラリって何ですか?


:::::::::::/           ヽ::::::::::::
:::::::::::|  ば  じ  き  i::::::::::::
:::::::::::.ゝ か   つ   み  ノ::::::::::: 
:::::::::::/  だ  に  は イ:::::::::::::
:::::  |  な。       ゙i  ::::::
   \_         ,,-'
――--、..,ヽ__  _,,-''
:::::::,-‐、,‐、ヽ. )ノ      _,,...- 
:::::_|/ 。|。ヽ|-i、      ∠_:::::::::
/. ` ' ● ' ニ 、     ,-、ヽ|:::::::::
ニ __l___ノ     |・ | |, -、::
/ ̄ _  | i     ゚r ー'  6 |:: ←>202
|( ̄`'  )/ / ,..    i     '-
`ー---―' / '(__ )   ヽ 、   
====( i)==::::/      ,/ニニニ
:/     ヽ:::i       /;;;;;;;;;;;;;;;;
>>201 その方法があったのね...

フックとStrPtr思い出したんだが
過去に『TextBoxにタブが入力されたら半角スペースに変換』たる機能を作ろうとした
ペーストされた時・外部アプリからの変更も考えて フックし

@ コールバックの引数(ペーストされる文字列のアドレス)をStringに MoveMemory
   ↓
A String のタブを半角スペースに置換
   ↓
B Aの結果を@のアドレスに入れる(StrPtrを使って)

という方法でやってみたのだが
文字列のサイズが小さいと成功し大きいと失敗(異常終了)します
違うやり方があったら教えてくれ

『入力されたら半角スペースに変換』は簡単なのだが...
>>205
その方法ってAPI呼び出すときに使ってるだろ。
Form1とForm2を持っているソフトのexeファイルを作ると、
exeファイルのアイコンがForm1のアイコンになっちゃうんだけど、
Form2のアイコンをexeに表示させるにはどうすればいいの?
エクスプローラでexeを見てみるとForm1のアイコンしかexeのアイコンとしては表示できないみたい。
208ひきプロ:03/03/05 15:00
EXEを作る時に
オプション → アプリケーション → アイコン
で変更
209デフォルトの名無しさん:03/03/05 15:08
今更ながら、VS6(VB6だけでもいいけど)を買おうと思うんですけど、
もう入手困難?
昔の会社でVB6使ってたけど、転職した会社になかったので
(ソフトハウスではないですので当然ですが)
どーせなら、VB6を買って、アップ版のVS.NETを買おうと
思ってるので。

もし、通販できるサイトがあれば教えてくださいませ
210207:03/03/05 15:13
>>208
本当にこんなことができたなんて。
すごい!すごすぎる!
211デフォルトの名無しさん:03/03/05 15:14
212もう一度書かせて下さい。:03/03/05 15:25
win98でMicrosoft Windowless Controls 6.0のWL コンボ ボックスを使った
プログラムを作ったのですが、windows2000とXPで、実行しようとすると
「コンポーネントMSWLESS.OCXまたはその依存関係のひとつが適切に
登録されていません。ファイルが存在しないか、あるいは不正です。」
とエラーが出て実行できなかったらしいです。 
どうすれば解決できるでしょうか?

213デフォルトの名無しさん:03/03/05 15:53
>>211
どうもありがとう!
VBでzipファイルを解凍するプログラムをキボンヌ
>>214
統合アーカイバプロジェクトに行け(´ー`)
サンプルがたくさん落ちてるぞ。

inflateまで自前で実装したいなら茨の道っていうか漏前には無理。
216ひきプロ:03/03/05 16:04
>>212
アプリのフォルダにMSWLESS.OCXを開発環境からコピーすれば
動くようになると思います。
>>214
http://www.google.co.jp/search?q=zip%E8%A7%A3%E5%87%8DVB&ie=UTF-8&oe=UTF-8&hl=ja&lr=
217214:03/03/05 16:09
>>215-216
キミたちがクレタほんのちょっとの情報だけでオレはつくる!グヘヘ
218214:03/03/05 16:13
>>217
偽者は引っ込んでください。

>>215-216
ありがとうございます。
ここ数日ム板にも厨房が増えたな。やっぱ春休みか。
質問者はなるべくトリップをつけよう!
化学物質だらけの世の中だから生まれつき変な人増えてもおどろくなかれ
222214 zip ◆IKup9Hv/8E :03/03/05 17:00
おーう、できたぞ。
zip解凍先フォルダの指定がこのときは解凍できずになやみになやんだ。
Outdir = App.Path
だがしかし、unzip32.dllで大事なのは、解凍先フォルダの指定でフォルダ文字列の最後に\をつけることだ。
Outdir = App.Path & "\"
とすれば見事に解凍できる。
覚えておくといいぞ、これからVBでzipを扱うのに興味を持ったヤシは。
>>222
そのソースだとダメな場合がある(だろう)ってのを覚えておいたほうがいいぞ。
どういう場合にダメなのかは自分で考えるように。
224214 zip ◆IKup9Hv/8E :03/03/05 17:04
>>223
はっきりいわないと世界中のソフトがバグをかかえたままになるぞ。
なにが悪いんだ?
225214 zip ◆IKup9Hv/8E :03/03/05 17:05
>>223
Right関数使えとかいうだろうな。
>>224
まともなプログラマはそんなソース書かないから大丈夫だw
自分で考えろって言ってるのに2分で即レスとはすげーヤシだな。
ちなみにRight関数は”あまり”関係ない。
227214 zip ◆IKup9Hv/8E :03/03/05 17:10
>>226
今のオレには考えてもなにも思い浮かばん。こたえをズバリ言ってくれ。
つーかな、App.Pathの仕様が腐ってるだけともいえるな。
いちいち面倒だってば。
229214 zip ◆IKup9Hv/8E :03/03/05 17:14
>>228
App.path vb バグ
で検索しても情報がなかったからオレは気にせずにApp.Pathを使うことにする。
>>227
断る

>>228
たしかに・・・
俺は最近は手抜きして、その手の処理にはFSO使うことが多い。何かと便利だし。
バグと仕様の区別もつかないアフォが一匹紛れ込んでるわけだが。
232214 zip ◆IKup9Hv/8E :03/03/05 17:18
けっ。FSOはノートンに実行許可を与えないと使えないぜ。ノートンが反応すればユーザはそれだけで
いいソフトにも拒否反応を示すというのは事実だ。
C:\ で実行すると、App.Path は C:\ になる。
C:\hoge\ で実行すると、App.Path は C:\hoge になる。

ルートで実行するやつなんかシラネ、って考えなら問題なし。
初心者スレだし、ヒントくらい出すか。

*い ろ ん な と こ ろ で* App.Path

以上。
235234:03/03/05 17:22
>233
ぎゃふん
236214 zip ◆IKup9Hv/8E :03/03/05 17:24
>>233
おれはApp.Pathの戻り値の右端に\があるかどうかを求めればいい。
という考えで上記事にRight関数の名を出したわけだから、なにげにもうこちらも解決してたってわけだな。
237214 zip ◆IKup9Hv/8E :03/03/05 17:25
>>230-235
というわけでごくろうさま。
今日はさむいな
             ∧_∧
         .:' ': :..,, .( ´A` )  、_,..ノ⌒ヽ、,
         ゙::...::゙" (ヾ.,,三,.彡'_,,... -‐、.,, 彡
               ヽ くV > ヽ、 \   ゙"
              ヽ<iゝ  l>  )
               〉・ ・ / ./
                 / ・ ・ \イ         、
                  ∧     'i,         〈キ〉
             / 人     'i,         `'
            ,/ / /'i,     ヽ
             l' i'ヽ(  ヽ     >
           / ,|⌒l   |'i,  /
           ヽノ  l   ! レ''.              ,-、,
               |  |                く_ツ
              | .|
              _/  l
    ,.-'l           (___/
    ゝ '
餌を与えるのも程々にしましょう >ALL
まだ間違ってるようだが、本人納得してるようなので放置しよう・・・
>>214
いくつか重要な事実をおしえてくれてるね。おれは感謝してるよ。
Public Function AddBackSlash(Byval strPath As String) As String
If Right$(strPath, 1) <> "\" Then strPath = strPath & "\"
AddBackSlash = strPath
End Function
ノートンか、なるほど。
243214 ◆IKup9Hv/8E :03/03/05 17:47
>>241
もう消える。
ジサクジエンの悪寒・・・ (´д`;)
>237

>238

この流れで話はおわりとおもたのに・・・・。
246214再び ◆IKup9Hv/8E :03/03/05 19:11
Unzip32.dllはスペースを含んだフォルダにzipファイルがあると解凍できないようなんだが
みんなもそうだろうか?
247214 ◆IKup9Hv/8E :03/03/05 19:17
そぅいえば
Unzipするときにパラメータを渡すが、パラメータはスペースで区切っていたな。
つまりパラメータ用デリミッタのスペースとフォルダ名のスペースが混ざったいると。
さてどうしたものか。
248214 ◆IKup9Hv/8E :03/03/05 19:25
パラメータをダブクォで囲ってみる。
249214 ◆IKup9Hv/8E :03/03/05 19:27
うまくいった。
250212:03/03/05 19:28
>>216
ありがとうございます。さっそく相手にメールで送って試してもらいます。
251214 ◆IKup9Hv/8E :03/03/05 21:06
App.pathの詳細とInetコントロールやその他の手段でRefererを変更する方法をキボンヌ。
前スレにもこんなのがいたな
同一人物か?
253デフォルトの名無しさん:03/03/05 22:56
すみません。めっちゃ素人の質問させてもらいます

ある文字列○○○の右から数個目のアルファベットを
アルファベットよって任意の数字をあたえる
プログラムってどうすればいいんですか?


○○○○○(単語)の右から3つ目のアルファベットが
A、b、c…1
d、e、f…2
その他…3
にしたい場合


本当お手数かけてすみません
str = "AbCdEf"
rightOne = Left(Right(str, 3), 1)

あとはてめえでやれ。

255デフォルトの名無しさん:03/03/05 23:15
(・◇・)アヤヤー
>>253
素直にコードにするとこうなるわけだが

Select Case Mid$("ここに対象となる文字列", 3, 1)
Case "A", "b", "c"
hoge = 1
Case "d", "e", "f"
hoge = 2
Case Else
hoge = 3
End Select
257253:03/03/05 23:29
>>254
>>256
何となくわかりました。
お手数かけてすみません

本当すぐおしえていただきありがとうございました
>>252
性器表現と同じお方のようだ
259デフォルトの名無しさん:03/03/05 23:48
イベントの意味を優しく教えて下さい。
>>259
トイレでブツがぼっとんすればはねかえりがある、それがイベントだ
261デフォルトの名無しさん:03/03/06 00:03
>>260
余計意味がわからなくなりそうなのですが・・・。
Form1 が ロード された
Form1 が 表示 された
Command1 が クリック された

こういうのがイベント
263デフォルトの名無しさん :03/03/06 00:09
>>260
お前が「トイレでブツがぼっとん」しても
俺には「はねかえり」を感知できない。

よってそれはイベントではない。
>>261
オブジェクトでクライアントに有益な事象が発生したときに、クラスからクライアントへ通知する方法のこと
コンピュータに何かが起こればそれはすべてイベント
266デフォルトの名無しさん:03/03/06 00:14
>>262がわかりやすい
>>265
アキュームレータがインクリメントされるのもイベントが?
サイモンとガーファンクルが来る、コンサートやる。これがイベント
269265:03/03/06 00:22
>>267
VB限定のイベントという意味では、VBにとってはイベントでない、といえる。
壁がはがれた。色を塗りなおす。これがペイント。
271253:03/03/06 00:23
質問君でごめんなさい
ある単語(例えば「opendata」)という言葉から
あるアルファベット(例えば「o、a」)の数の合計を数えるプログラムってどうすればいいんですか?

本当2回もすみません!!
イベントってイベントドリブンの略じゃねーの?
>>271
あなたの近くに何十人もわかる人がいるが、回答者は、自分以外の誰かが答えるだろうと思って自分では回答を見合わせている状態なのだ。
>>273
本当簡単な質問ですみません
独学でプログラム作り始めたんですけど
参考書のここまでのってなく詰まってしまって…
275273:03/03/06 00:43
>>274
これは必ず答えが返ってくる質問だから、長い間待ってればだいじょぶ。
目的を達成する方法が何通りもありすぎてどれにしようかみんな迷っていると。
276デフォルトの名無しさん:03/03/06 00:55
>>232

>FSOはノートンに実行許可を与えないと使えないぜ。
というのは、VB6.0で作った標準EXEの中で
FSO使うのもダメですか?
それともVBSの話でしょうか?
277232:03/03/06 01:19
>>276
コンパイル後のexeファイルに関しては、
exeのバイナリパターンをノートンが危険だと感じたときだけ反応する。
vbsなんかだと
Dim FS
Set FS = CreateObject("Scripting.FileSystemObject")
FS.deletefile "aaa.txt"
これだけで警告画面が出ちゃうけど、
スクリプトでなくコンパイルしたファイルシステムオブジェクトならよっぽどのプログラム以外は反応しない。
何しろ頻繁に反応するのはノートンのオプションのスクリプト遮断機能だからコンパイルしたファイルは
DeleteFileメソッド程度では反応しない。
>>271
'Len関数をつかって単語の文字数を求める Len("opendata") = 8 この8を単語内の一文字ずつを比較するときのループプログラムで使う。
'o p e n d a t a
'のそれぞれの文字がoまたはaに一致するかどうかを比較する。
Dim i As Integer 'ループカウンタ
Dim n As Integer 'opendataに含まれているoとaの合計数
Dim S As String '一時的に文字を入れておく文字用変数
'Mid関数で一文字ずつ取り出していく。
'Mid("opendata",a,b)というのはopendataのa文字目からb文字取り出すという意味。
'だからMid("opendata",1,1)はopendataの1文字目から1文字だけ取り出すという意味で、1文字目から1文字目だけ取り出すとそれはoという文字になる。
'したがってS=Mid("opendata",1,1)となっているときは文字列変数Sにはoという文字が入っている。
'変数Sがoまたはaであるかどうかは
'If UCase(S)="o" or UCase(S)="a" then
'n=n+1
'End if
'のようにIF文を使って文字が同じかどうかを比較する。
'LCaseは大文字を小文字に変換する関数で、OpenDataというような大文字小文字が混じっている場合に対処する。
'大文字のAと小文字のaは違うものだからだ。
'大文字小文字の区別をつけたいときはLCace関数やUCase関数は使わないようにする。全角文字対処については省略。
For i = 1 To Len("opendata")
S = Mid("opendata", i, 1)
If LCase(S) = "o" Or LCase(S) = "a" Then
n = n + 1
End If
Next
Form1.Caption = n
'この方法のほかにInStr関数を使ったり正規表現を使ったりする方法がある。
279276:03/03/06 02:18
>>277
返答どうもありがとうございます。
これで安心して寝れます。
(ちょうど最近仕事で、FSOを使ったプログラムを書いたので。)
280277:03/03/06 02:23
>>279
詳細はノートン作成会社シマンテックに問い合わせないとなんともいえないけど体験的にはそんなかんじ。とにかくどういたしました。
281105:03/03/06 02:25
>>188
Winsock.dllのAPIをコールする必要があるということですね。
それがわかっただけでも大収穫です。ありがとうございました。
282278:03/03/06 02:28
>>271
281のプログラムは汎用性がないから、281のを多少なりとも改良すべし。
283278 訂正:03/03/06 02:30
>>271
278のプログラムは汎用性がないから、278のを多少なりとも改良すべし。
284デフォルトの名無しさん:03/03/06 09:26
すみません。初心者です。
VB6.0のData Reportですが自分のマシンでレポート込みのEXEを作成し
配布しようとした所別のマシン(VBはインストールされていません)で
「実行時エラー713
アプリケーション定義、またはオブジェクト定義のエラーです。」
と表示されたのですが、
Runtimeか何かをインストールしなくてはいけないのでしょうか。
すみませんが教えて頂けないでしょうか。
>>284
初心者は余計。
ちゃんとディストリビューションウィザードとか使ってセットアップした?
EXEだけ持っていっても、そりゃ動かんよ。
286デフォルトの名無しさん:03/03/06 10:56
マウスを無効にすることってできますか?
EnableWindowってのだとキーボードもだめになっちまう
>>286
サブクラス化でマウス関係のメッセージを全部握りつぶす
288286:03/03/06 11:15
>>287
やっぱそれしかないのか・・・
>>288
それでできると思ってたなら最初から手間を惜しまずに書きんさい。
無駄な解答しなくて済むから。
290253:03/03/06 11:57
>>278
わかりやすく教えて下さってありがとうございました
これでなんとか出来そうです。

本当、わざわざ長文を書いてまで説明していただいて
感謝の2文字で一杯です。
>>286
スクリーンセーバアみたいにマウスポインタ消す。じゃだめかな
>286

マウスを抜け
293278:03/03/06 13:07
>>290
了解。
294294:03/03/06 13:51
>>292
了解。
295284:03/03/06 13:58
>>285

ありがとうございます!試してみます。
FSOでショートカット作ろうとしたらノートン反応するよ。
ノートンはいい迷惑だなっと
298デフォルトの名無しさん:03/03/06 14:36
VB6で、クラスのPublicプロシージャの引数に構造体を使おうとしたら、

「パブリックオブジェクトモジュールで定義されたパブリックユーザー定義型に限り、
クラスモジュール内のパブリックプロシージャの引数または戻り値、
またはパブリックユーザー定義型の要素として使用することができます。」と

エラーメッセージが出てしまいました。
今は標準モジュール内にPublicで構造体を定義しているのですが、
クラス内に定義しても

「プライベートオブジェクトモジュール内ではパブリックのユーザー定義型は
定義できません」

とエラーが出てしまいます。
クラスのPublicなプロシージャの引数に構造体を使うのは無理なのでしょうか?
>>298
標準モジュールのOption Explicitのすぐ下あたりに記述してみ
>>298
ActiveXのパブリッククラスに記述してみ
>298
Friendキーワードを調べよ。
302298:03/03/06 14:45
>>299
今現在その状態でした。
「プライベートオブジェクトモジュール内ではパブリックのユーザー定義型は
定義できません」 のエラーが出てしまいます。

>>300
プロジェクトのタイプをActiveX EXE、クラスをPublicにして、
スタートモードを独立型にしたらエラーが出なくなりました。
ありがとうございました。
303298:03/03/06 14:54
>>301
プロジェクトタイプを変更しないでもFriendキーワードでもうまくいきました。
ありがとうございます。
304304:03/03/06 15:07
僕のVBは♂みたいですがみなさんのはどうですか?
XPユーザーならやってみる価値あり

1.適当なフォルダにあるEXEファイルを右クリック→[スタート]メニューにアイコンを追加を選択
2.先ほどのEXEファイルがあるフォルダ自身の名前を変更する
3.スタートメニューを開いて上記の手順で追加したリンクを右クリック→プロパティを選択
4.無効なリンクになっているので、[変更]ボタンを押す
5.該当ファイルの変更後の正しい場所を指定する
6.・・・なにぃ!!

 感想きぼんぬ

   ※ 一人でニヤニヤした後は設定を元に戻しておきましょう
>>305
試すのめんどくさい。
オチだけ教えて。
なんかアプリが起動するとかしないとか。
いまさらこういうコピペをにやけながら貼ってるヤシがいるかと思うと
頭が痛くなってくるな
309デフォルトの名無しさん:03/03/06 17:17
VBscriptでテキストファイルの整形や保存などをしたいのですが、
できますでしょうか?
もしできるなら参考になりそうなHPを知ってたら教えていただけないでしょうか?
310ひきプロ:03/03/06 17:47
>309
http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/refer/lesson15.htm
こういうのはどうでしょ
311309:03/03/06 17:54
>>310
ありがとうございまーす。勉強してみます。
>>301
友達のいないオレにどうしろと?
313デフォルトの名無しさん:03/03/06 18:45
標準モジュールからフォーム内のプロシジャーへユーザー定義型を渡すとエラーが出ました。
MSDNには
「フォーム モジュールで引数をユーザー定義型として渡す場合、引数を渡されるプロシージャはプライベートである必要があります。」
とかいてあります。
この場合皆さんどうされますか?
1.ユーザー定義型をパブリックにしてしまう。
2.標準モジュールから呼ぶのをあきらめて、ユーザー定義型をフォーム内でモジュールレベルOrローカルレベルで定義し、フォーム内からそのプロシジャーを呼び出す。
3.ほかに方法があるぞこら!教えてやるよしかたねぇなぁ

どれですか?
>>313
クラスを使う
>314

な・・・なるほど・・・・。
しかしユーザー定義型は何でこういう制限があるのだろうか・・・。
ユーザー定義型の使うところがなくなる・・・。
>313
ちょっと前にFriendって話が出てる訳なのだが。
>>315
COM絡みだと思う。ユーザー定義型は特殊な型だからね。
ちなみにクラスはすべてオブジェクト型
>316

いや、あれはクラスにユーザー定義型が渡せないっていってるんでしょ?
私がいってるのはフォームにユーザー定義型が渡せないといってる。
MSDNに書いてある制限だ。
MSDNには
「フォーム モジュールで引数をユーザー定義型として渡す場合、引数を渡されるプロシージャはプライベートである必要があります。」
って書いてるんだぞ?
フレンド使えるなんてどこに書いてる?「フォームは一種のクラスみたいなもんだ」見たいな中途な知識でいってるんじゃないのか?
ああ?ああ?ああ?

>317

それはCの構造体とも若干違うところがあるからということでしょうか・・・。
> 「フォームは一種のクラスみたいなもんだ」
極普通の知識じゃん。
>319

そこにフォーム内のプロシジャーにユーザー定義型を渡させないという知識がないから>316の発言になる
これが中途な知識からくる>316の発言ということだろ?
文章読解能力乏しいやつがいるな。
しったか君もいるしw
とんだ大恥かいちゃったなw
すいませんが、質問があります。
クリスタルレポート7を使ってレポート印刷しているのですが
mdb形式のODEC接続から、SQLServerのADO接続に変更
する際、できるだけクリスタルレポート自体はさわらずに
VBのソース内で変更する方法はあるのでしょうか?

今とりあえず
  CReport1.Connect = "DSN=" & DBNAME & ";UID=" & USER & ";PWD=" & PASS

で接続はできてるようなんですが、クエリの抽出結果のレコードセットなどは
当然ながら反映されていません。
Datasourceを使ってみましたが、うまくいきませんでした。

どうすれば変更できるでしょうか?
>>321
レポート側変えないと無理かと。
323309:03/03/06 20:49
VBscriptってlistboxやcomboxは使えないのでしょうか?
>>323
コンボボックスはHTMLタグでつくり、コンボボックスの内容はVBScriptで出力できる。
325309:03/03/06 20:56
>>324
わかりやした。ども。
>>305

ここにも貼ってるのか。
↓解決法
http://pc2.2ch.net/test/read.cgi/win/1043764586/l50
オーナーWindowに対してModalでないメッセージボックスって作れます?

一応、APIのMessageBoxA の第1引数(HWnd)をゼロにしたら、それっぽいように
見えるのですが、なんかインチキくさくて正しいコーディングとは思えないし、
常に最前面に表示させることができず、オーナーWindow(メモ帳です)をクリック
すると背後に隠れてしまいます。
>>327
補足です。イメージとしては、メモ帳の「検索」画面のような感じです。
要するに、常にオーナーWindowの前面に表示されるが、表示されている
間もオーナーの操作は可能・・・。
Shell で"mailto:Address?Subject=Title"を呼ぶと、「通常使うメールソフト」に
宛先と標題が記入済みの状態で起動できますが、本文にもテンプレートを初期値で
設定した状態で起動することは可能でしょうか?

特定のメーラ(OEとか)限定なら、SendMessageを駆使してできそうな気もするんです
が、「どのメールソフトでも」対応できる方法が可能かどうかわかりません。

ご存知の方、コメントください。
>>328
独自のフォームでいいの?
それなら、
  Form2.Show , Form1
みたいな感じでok。Form2は常にForm1より前面に表示されるはず。

MsgBoxでやる方法はシラネ。
MessageBoxのhWnd=NULLで問題無しならそれでいいんじゃない?
331ひきプロ:03/03/06 23:03
>329
http://www5e.biglobe.ne.jp/~access_r/hp/html/html_016.html
どうでしょか?OEならできそうな予感
>>331,329
OEならbodyでできるね。
でも、Shellでできたっけ? APIのShellExecuteじゃないと駄目じゃない?
333ひきプロ:03/03/06 23:23
>>332
うちの環境ではまずShell "mailto:Address?Subject=Title"が
呼び出せませんでした藁
329さん、どうやってるんだろうか。
2000/XPはしらないけど
Shell "start mailto:Address?Subject=Title"
で動いたかも
Shell "C:\temp.txt"
でファイルは開けるわけ?
みんな学校でVB勉強したの?
337:03/03/07 00:23
>336
半年前から仕事場で使い出した。
こっからどう話しが展開するの?
>335

ひらかない
339316:03/03/07 09:23
>320
たしかにMSDNには
「フォーム モジュールで引数をユーザー定義型として渡す場合、引数を渡される
プロシージャはプライベートである必要があります。」
と書いてあるが、
「Friendであってはいけません」
と書いてはいない。

で、「フォームは一種のクラスみたいなもん」ではなく、明確にクラスだよ。
当然、Friendでプロシージャを定義することも出来る。
俺が中途半端な知識で物を言っているかどうか、試してみればすぐに分かるだろうに・・・
340335:03/03/07 09:23
>>338
エクスプローラでファイルをクリックするみたいにはいかないんだのぅ。
341329:03/03/07 09:26
>>330
コメントありがとうございます。
自アプリではなく、外部アプリ(メモ帳)をオーナーとするメッセージボックスを
出したいのです。(しかも、事情があって、VBではなく、AccessのVBAで)

>>331-332
ありがとうございます。後で調べてみます。(結果は後日・・・)

>>334
9x系ならそれで正解。
NT系ではStartコマンドが内部コマンドなので、
Shell(Environ("ComSpec") & " /C mailto:Address?Subject=Title", vbHide)
としないといけません。
342329:03/03/07 10:01
>>331-332

ブラウザの A href ........ タグからは起動できるんですが、Shellからだと、
body以下を有効なコマンドとして認識しないようです。
(メールソフトは起動するが、本文が入らない)
でも、タグで実行できるなら、何か別の方法がありそう。

土日にでもゆっくり考えて見ます。
343デフォルトの名無しさん:03/03/07 10:44
質問です。
テキストボックスにH2O等の化学記号の数字を小さくし入力、
表示させる事は可能でしょうか?
簡単に出来そうで難しいのですが・・・。
>>343
テキストボックスだと普通は無理
小さい文字を表示できるフォントを使うか
リッチテキストあたりをつかえ
345デフォルトの名無しさん:03/03/07 11:11
>>344
ありがとうございます。
346ひきプロ:03/03/07 11:13
>>342
一回実験的にやってみたら、332さんのおっしゃる通り
ShellExecuteを使うとbody以下も認識しましたよ。(Win2000の時)
347329:03/03/07 11:18
>>346
ありがとうございます。これで解決かな?
>339

    ||
    ||
  ∧||∧
  ( / ⌒ヽ 
   | |   | 
   ∪ / ノ
    | ||
    ∪∪
349デフォルトの名無しさん:03/03/07 13:10
で、結局フレンドって何?
>>349
友達。
>>349

ここ↓を読めばわかるかも(w

ttp://www.hyuki.com/dp/cat_Memento.html
VBユーザにメメントパターン。


幼児にチェーンソーを持たせるような感覚だ。
幼児じゃなきゃいいじゃん。
>>353
幼児である率は高い。
そしてのその原因がチェーンソーに興味を持った幼児から
説明なしにいつまでもチェーンソーを取り上げること。
ナイフはキケンだからと取りあげナイフを使えない子供を
育てる親にならないようにしよう。
チェーンソーは取り上げた方がいいぞ。
>>355
その通りだ。でも、多分腕なくなるぞ。初めはハサミから、次はカッターナイフと教え方にもいくつか方法があると思うんだ。
テキストで値を入れて計算したいのですが、
Text3 = Text1 + Text2
このようにすると
123 + 456 = 123456
と言うように数値を足すのではなく、文字を繋ぎ合わせる形になってしまいます。

Text3 = Text1 * 1 + Text2 * 1
このように * や / を式の中に入れれば
123 + 456 = 579
とちゃんと計算してくれるのですが、+のみでやるにはどうすればいいでしょうか?
>>358
「型」について勉強。
>>357
その通りだ。だが単に取り上げるだけじゃいつまでも使えるようにはならない。
問題があるならまず何が問題かを説明し納得させ、一番良い方法を提示するのが一番大事だ。
自分の基準で決め、結論だけを言い、それに従わせようとする奴が多すぎる。
目標は使えるようになる事だということを忘れてはならない。
>>360
うむ、言いたいことはよくわかる。

>説明し納得させ

しかし、ここでの問題は物の切り方を尋ねる子供にチェーンソーを提示したと言うことではないだろうか?
刃物の特性を示すにはあまりにも強力で熟練を要する道具ではないか。
>>360
初心者には、まずはサブクラス化を習得させるべき、という結論でよろしいでつか?(禿違
>>358
オレでも分かるぞ。
とりあえず本屋逝って
「バカでも分かる簡単VisualBasic」の類のテキスト買ってこい。
またはMSDNで「データ型」と引け。
>>361
尋ねたのが子供だとは限らない。
>>364
公園で遊んでいる者の大半を子供と定義してもそれほど差し支えはないだろう。
>339は問い詰められるべきなの?
厨房なのでわかりません。
>>365
VB=公園という例えはふさわしくない。
>>367
他に何かあるか?
放射性廃棄物貯蔵庫の上に作られた公園。
>>368
C++やJavaだとどう例えるか? それと同じだ。
>>370
Java:全寮制高校
それなりのコミュニティはあるものの所詮は箱庭。外部との接触は制限される。きれい事のまだまだ通用する世界。

C++:社会
何をやっても良い。しかしすべてが自己責任だ。強力だがかなりシビアな世界といえる。
ネタはマ板で。
    _, ._
  ( ゜ Д゜)
374358:03/03/07 14:40
Dim X As Integer, Y As Integer, Z As Integer
X = Text1.Text
Y = Text2.Text
Z = X + Y
Text3.Text = Z

これで正しい?
もっと効率いいやり方あるかな?
>>362
その前に動的配列とコレクションを憶えさせれ(w
376デフォルトの名無しさん:03/03/07 14:50
>>374
X = Val(Text1.Text)
Y = Val(Text2.Text)
Z = X + Y
Text3.Text = CStr(Z)

初心者のくせに効率なんか求めるな!
377デフォルトの名無しさん:03/03/07 14:51
http://www.pink-angel.jp/betu/index.html
★いらっしゃいませ!!ようこそココへ★
>>374
それでよしかと思われます。
> 初心者のくせに効率なんか求めるな!
問題ないだろ。
380358:03/03/07 14:55
d
381デフォルトの名無しさん:03/03/07 14:56
>>378
暗黙のキャストに慣れると、C はとうぶん出来ない。
Cにも暗黙のキャストはありますが何か?
383366:03/03/07 15:12
誰かぁ>366ぅ
解答の催促するヤシうざい
385デフォルトの名無しさん:03/03/07 15:29
クラスモジュールでこうすんのと

Private B As Long
Public Property Let A(ByVal C As Long)
    B = C
End Property
Public Property Get A() As Long
    A = B
End Property

こうすんの何が違うの?

Public A As Long
>>385
おんなじ
>>386
ありがと
もひとつ!>>385のように値の設定・取得だけやる分には
どっちを使ったほうがいいんでしょう?
>386
ヲイヲイ
>>387
意味よくわかんね。

>>386の補足、まったく同じじゃないね。
■クラス外からアクセスする場合
まったく同じ。

■クラス内からアクセスする場合
・Meをつけると、上も下も外部からのアクセス=プロパティ経由=クラス外からの
アクセスと同等になる。
・Meをつけない場合、上はAでアクセスするとプロパティ経由、Bでアクセスすると
メンバ変数経由。下はメンバ変数経由と同等になる。メンバ経由の方が速度は速い。
>>385
通常はフィールド変数はプライベートにして、プロパティでアクセスするのが基本。

同じに見えても、プログラム組んでいく上では基本が大事だと覚えるべし。
それなりに理由がある。
>>390
> 通常はフィールド変数はプライベートにして、プロパティでアクセスするのが基本。
それJavaの話。VBでは特にプロパティのLet、Get内でなにもしないなら
パブリック変数で十分。
Private B As Long
Public Property Let A(ByVal C As Long)
B = C
End Property
Public Property Get A() As Long
A = B
End Property

こうすんの何が違うの?

Public A As Long


この例の場合は結果はほぼ同じ。

Private B As Long
Public Property Let A(ByVal C As Long)
B = C
End Property

こうすることで読み取り専用プロパティが書けたり、

Private B As Long
Public Property Get A() As Long
A = GetNankaData(B)
End Property

の様にプロパティの内容をダイナミックに生成したり出来る。
>>391
アホがいますな。
(*´д`*)アハァ…
>>393
まぁ論理的に考えてみろって。
>>395
いや、お前がな。 
VBのお子ちゃま仕様が、
>>391のような甘ったれた厨房レベルプログラムのできる程度の人を量産している。
もし、>>391が社会人で業務でVBを使っていて、
部下にそのように教えていたとすると、最大の被害者はその部下かもな。
>>397
VBの仕様は関係ねーだろ。
    _, ._
  ( ゜ Д゜)
結果だけが重視される詰め込み型教育の悪影響がここにも・・・
俺は391の意見に賛成。もちろん
>プロパティのLet、Get内でなにもしないなら
場合ってのが前提だけどな。
無論オブジェクト指向的に間違ってるってのは分かるが、
それより実行速度や簡潔性を取りたいケースも多い。
しかし、>385の質問は
>「何が違うの? 」
であって、それに対し
>「同じ」
と答えるのはあきらかに間違っている。

ところで、Javaにもプロパティって考え方あるの?
403385:03/03/07 16:40
皆様どーもです
いやぁ勉強になります
結論は同じじゃないけどこの場合で使うにはどっちゃでもいいようですね

皆様のカキコからこんなんも参照できますた
http://www.microsoft.com/japan/developer/library/VBCon98/vbconproperties.htm
http://www.microsoft.com/japan/developer/library/VBCon98/vbconpropertyproceduresvspublicvariables.htm
>>401
VB5以降は外部からのアクセスは自動でGet/Let相当の動作になったと思うが記憶違いかもしれない。
利便性や簡潔性だけ求めて、
仕様変更や情勢の変化が起こった際に泣きを見てる香具師が多いのも事実。
そんな香具師らは平気な顔をして
「徹夜して対処するから大丈夫。」
笑っちゃうね。最初からもう少し掘り下げて考えて作れば、徹夜する必要も無いのにね。
1日長く考えても、そのような対応を含めると、長く考える方が有利の場合が多い。
日本って馬鹿だから、そこら辺の研究考察時間を開発の工期見積に含めないよね。
正しくないとしても知ってるやり方で、早くできるのが一番偉いと勘違いしてるみたい。
406デフォルトの名無しさん:03/03/07 16:52
質問です。ただいまwinsockをつかって、簡単な、サーバとクライア
ントのソフトを作っております。で、まだLAN内でしか試していないので
すが、IPアドレスを入れれば、インターネットでつながった先のパソコン
とも通信できるのでしょうか?本当にくだらない質問ですいませんがおねが
いします。
あと、ファイルに数値を保存したいのですが、その数値と同じレコードに入れ
というような風にするにはどうすればいいでしょうか?(例えば最初に1が
きたら最初の場所に、次に13が来たら13の所に、そこで5が来たら5の所
にというような風に、で、後で先頭から順に正しい順番(1,5,13)で出力したい)
アイデアお待ちしております。
>>405
プロパティ一つで何を熱くなってるんだおまいは?
なんか鬱憤たまってるみたいだが、そういう文句は自分の現場で言え。
>406
1.試してみればいいだけの話でわ?
2.素直にRDB使ったら?
>>405
>日本って馬鹿だから
アイタタタタ・・・
ほかのどの国で経験積んできたんだろw
>>402
よく知らないが、考え方は同じでアクセッサメソッドってやつでしょ。
>>406
基本的に繋がる。ルーターや火壁によって蹴られる可能性もあるが。

>>409
日本で経験積んでもちょっと回りを見回すだけで日本が馬鹿って分かりますよ。
それは日本がバカなのではなく、おまいの現場がDQN揃い(ry
>406
そのPCにPingが届くのであれば、繋がると考えてオケ。

>412
ほほぅ、ちょっと回りを見渡すだけで日本が見えるのですか。
すごい視力ですね。
>>412
止めとけって。
>>414みたいな視野の狭いヲサーンプログラマ(ともいえないレベル)の人間が反応するぞ。
自分たちのやってきたことを否定されてるんだから、
反応しないはずも無いが。
これほど露骨なジサクジエンも珍しいわけだが・・・ (´д`;)
つーか そこまで”オブジェクト指向的”であることにこだわるヤシが
VBを使ってて発狂しないのか疑問だw
結局この手のもんはトレードオフでしょ。
速度や利便性を取りたい場合もあるし、将来の拡張性のために
あえて今は必要なくても冗長に書くこともある。
使い分けのできないヤシ、どういう場合だろうとどっちかに決めつけて
融通の利かないヤシがDQN
>>414
Pingが届かなくてもつながる場合があるし、届いてもつながらない場合もあるぞ。
適当な事いうなよ。
418414:03/03/07 17:37
>415
ほほぅ、やはり日本を語る人の視野のスケールは違いますなw

>417
いやだから、絶対繋がるとは書いてないじゃん・・・
ここでネトワクの細かい話までするのはそれこそスレ違いだし、
そんな話して>406が理解できるとは思えん。
曖昧な書き方したのは悪かったよ。
>>414
> ほほぅ、ちょっと回りを見渡すだけで日本が見えるのですか。
誰が見えるって? 見えるわけないだろ(藁
>>418
> そんな話して>406が理解できるとは思えん。
所詮あんたの思い込み。
>419
そうですか。じゃあ、それなのに日本を語るのは間違いでは?

>420
そうだね。たしかに私の仮定だった。
つっこみはもういいから、君が>406にしっかりと説明してあげてよ。
ちなみに漏れは390しか書いてないわけだが・・・・

ちなみに漏れは「通常は」と書いたわけであって、絶対そうしろとは書いてない。

ただ、プロパティというのは非常にうまい仕組みなので、それを使わない手はないと思う。
パブリック変数に一度してしまうと、後々面倒なことになる場合もあって、余程のことが
ない限り、やめといた方が無難だと思う。
叩かれているのは>390ではなく>391と>405だと思われ。
>>422
パブリック変数にしても外部からのインタフェースを変えることなく
プロパティに変更できる便利さ。
もうその話はいいじゃん。
結局それぞれのポリシーの問題だし。
それにこれ以上いじくると荒らしに変貌しかねん。
何回>>390を読み直しても、正論だと思うが、なんでこんなに荒れるのだ?
427デフォルトの名無しさん:03/03/07 20:26
質問でつ。
デバッガでスタックトレースを見るにはどうすればいいんでしょうか。
>426
>385の質問に
>390が正論を言ったのだが、>391が反論。
最初は>391が叩かれていたのだが、
で>405あたりのオブジェクト指向狂信者が暴れだした。

ってところだろ。
429デフォルトの名無しさん:03/03/07 20:32
質問です。

Int()関数と同じ働きをするREALbasic用の関数をご存じですか?
REALbasicにはFloor()とRound()とCeil()というものがあるのですが
どれも微妙に違うみたいなんです。
>>402
>ところで、Javaにもプロパティって考え方あるの?
Beanではクラスに

Get〜
Set〜

と言うメソッドを〜というプロパティと見なしたりする。
classA.B というパブリック変数かプロパティーがあって、

sub hoge(byref fuga)
  fuga = hage
end sub
という参照渡しで値をいじる関数があった時、

  hoge classA.B

ってやると結果が腐る、ってのなかったっけ?
パブリック変数の時はclassA.Bはhageになるが、プロパティーの時は
変更されないとかそんな感じの。
そんなことするなヴォケ、って思うけど(笑
>>431
そりゃそうだ。パブリック変数=プロパティGET=メンバ変数とかからの
メソッドの戻り値を変更してもメンバ変数自体が代わることはない。
ようするにhoge Val(a)とやってもaの内容が変わらないのと一緒。
433432:03/03/07 20:49
> パブリック変数の時はclassA.Bはhageになるが、プロパティーの時は
> 変更されないとかそんな感じの。
ちょっとここ見落としていた。
パブリック変数の場合はクラス内から(Meをつけずに)アクセスした場合は
メンバ変数と同等。クラス外もしくはMeをつけた場合はプロパティ経由と同等。
なのでそういう結果になる。
VB6で実験してみた結果、クラスのパブリック変数を外部から呼ぶ時は
Property Let/Getと同じ動作になると分かったよ。

というわけで、クラスの外部から見た場合はパブリック変数とLet/Getの
違いは全くないということでいいかな。
クラスモジュールにパブリック変数を宣言して、
そのクラスを別のクラスでImplementsすると、
パブリック変数をProperty Let/Get扱いになるでしょ。
容易に理由はわかると思うけどクラスにパブリック変数を置いてクラス内から
MeつきとMeなしアクセスしたときの速度を比べるとMeなしの方が速い。
もちろんフォームもクラスの一種なのでMeなしでアクセスした方が速いのだが、
面白いことにフォーム内のコントロールに限っては同じ。
コントロールは特殊な扱いなのだろう。
>>346
動作確認できました。
おかげさまで、解決・・・・のはずが、今度は本文に改行をいれる方法が
わからなくて、悩んでたりする。(w
vbCrLfとか、<BR>とか試してみたんですが・・・。

ご存知の方、コメントください。
>>437

>>331氏が提示してくれたURLに

「改行する際には、「%0D%0A」を指定してください。」と書いてありました。

申し訳ない。m(_ _)m

これで、OEについては完全解決。
あとは、Becky!等での動作確認だけです。
439デフォルトの名無しさん:03/03/07 22:01
リストボックスとチェックボタンが一つずつあったとする。
リストボックスのMultiselectは2の拡張スタイルにしており、
リストボックスには複数のリストが登録されていて、
チェックボタンにチェックを入れたときに、そのリストボックスの
全ての項目が青色に反転するようにしたい(つまり、全ての項目を
選択したと同じに)。


どなたかご教授おねがいします。
>>439

Dim i As Long

For i = 0 To ListBox.ListCount - 1
ListBox.Selected(i) = True
Next

あまり説教じみたことは言いたくないのだが、とにかく、ヘルプとオブジェクトブラウザと
インテリセンス(入力補完)機能を使いこなすことを心がけよう。
(せっかくの便利な機能を使わないのでは、RADツールを使う意味がない)
慣れれば、新しいことをやるときにも戸惑わず、迅速に対応できる。

それでは、がんばってね。
>>440
>インテリセンス(入力補完)機能を使いこなすことを心がけよう。

若いうちから何言ってんだ。
442デフォルトの名無しさん:03/03/07 22:22
>>440
教えてもらってこんなことを言うのもなんだが、、、
俺の言っていることをよく読め。
そして自分で書いたプログラムを一度実行してから
人に言え。
この低脳が。マジで頭にきたぜ。
偽者が煽りだした(藁
>>427
停止中にCtrl+L
もっと細かいレベルで見たいならネイティブコードコンパイル時にデバッグ情報を生成してVCとかを使ってみる。
>>444
なぁなぁ。VBのデバッグ情報上手く使えないような気がするのは気のせい?
>>445
うまく使いこなせない?
>>446
VCで読み込んでも行がずれたりしない?
つーかファイル名とかのせいで素直に読み込んでくれなくなかった?
>>444
おぉthanx
449Not 440:03/03/07 22:54
(439)442 が怒っている理由を考えてみた。
おそらくリストが4万項目あると見た。
450デフォルトの名無しさん:03/03/07 22:55
VBでnetstatコマンドみたいに、ネット接続してるプロセス一覧を取得する事って
可能ですか?
ファイアーウォールもどきみたいに任意のプロセスの接続を停止させたりしたいんですが...
451デフォルトの名無しさん:03/03/07 23:08
Visual Basic 6.0 SP3 Professional Edition のディストリビューションウィザードで
「予期せぬエラー457 このキーは既にコレクションの要素に割り当てられています」と
表示され、パッケージができません。
どなたか対処法もしくは原因しりませんか?
452デフォルトの名無しさん:03/03/07 23:12
VB.NETで、ポインタ変数があり、そのアドレスが示す先に取り出したい8バイト
の値があるのですが、どうやれば取り出すことができますか?
>>452
>VB.NETで、ポインタ変数があり

ありません。
>>453
あったよ!!??
>>452
ここは.Net以外のVBスレなので、ここで聞いてもCopyMemory dst(0),byval srcPtr しれ、
としか返ってこないと思われ。
>>1のリンクからVB.Netスレでドゾ。
456439:03/03/07 23:18
俺は全ての項目が選択され、青色に反転している状態にしたいのだ。
変なヤシが居るみたいだが、>>440のコードちゃんと動くよなぁ…。
まさか、List1.ListIndexが複数になる方法を探してるとかか?

つーか、偽物に反応してもしゃーないか…。
俺は全ての駄レスが削除され、質問・回答のみの状態にしたいのだ。
459439:03/03/07 23:26
俺は変な日本語を書いているのか???

変な奴らが多い・・・・・。
>>458
無理。なぜなら2chだから。
461デフォルトの名無しさん:03/03/08 00:08
オプションボタンをクリックしたときに、Shiftキーを
押したことにすることって出来るのかな?
462444:03/03/08 00:09
>>445
普通に使えていたけど?
ビルド後にソースコードいじったりしてないよね?
あとコンパイルするときは最適化は当然はずしていると。
463デフォルトの名無しさん :03/03/08 00:25
VB開発者は

アメリカでは、VBはプロ用
ジャパンでは、VBは素人用

という地位だそーです(.net magazine 4月号より)。
>>463
その勘違いが日本のVBユーザの技術不足を招いているんだろうね。
どの勘違いが?
>>464
素人が使う−>バカなので技術の積み重ねがない−>素人のまま−>どんどん素人が増える

悪循環だな。
まぁ、全角で「−>」こう書くほど馬鹿じゃないだろうがな。
糞見づらい。
>>467
慣れれば楽。
469デフォルトの名無しさん:03/03/08 00:38
>>466
ちょっと違うよ。
馬鹿が使いやすい−>バカなので技術の積み重ねがない−>馬鹿のまま−>VBをかじった馬鹿がどんどん増える

やはり悪循環だな。
ここでは同じ質問を3回してようやく本当に知りたいんだなとわかる
471デフォルトの名無しさん:03/03/08 00:59
すいません、いま仕事で各PCからプリンターに出力した件数を格納するソフトを作成しています。
それで、その出力したもののなかで、特定のソフトのものだけを抽出したいのですが、
これをジョブ名で特定しようとしたら他のソフトとジョブ名がかぶっちゃってたのです。
2ちゃんねらーのみなさま
なんとかして特定のソフトのみから打ち出したもののみをカウントする方法はありませんでしょうか?
>>461
SendKeys
Sub AAA()
Dim i
BBB
End Sub
-------------
Sub BBB()
Dim i
End Sub
------------
というように、あるプロシージャが別のプロシージャを呼ぶときに、両方で同じ名前の変数を使っちゃっても大丈夫なようなんだけど気のせい?
つまりAAAのiとBBBのiが独立に働いてくれてるような気がする。
>>473
変数の宣言レベルについて勉強しる。
>>474
スコープって言った方がいいと思う
476473:03/03/08 02:19
>>474-475
スコープといってもダブっているiは気になるもの。
AAAのiの期限が切れてないうちにBBBのiを使えるということは、
VBはAAA.iとBBB.iという感じで複数箇所のiを分けて使っていてくれているようだ。
i++
のところでエラーが出た。
このスレには30歳以上が多いと見た
>>476
N88BASICでも使え
480476:03/03/08 04:56
>>479
もういい。
>>476
スコープの意味を 100 万回調べれ。
>>476
山口さんちのツトム君と関口さんちのツトム君は別人ということだ。
483476 ◆0d6Ohf/jLo :03/03/08 07:28
>>481-482
ローカルスコープの意味を知るのは簡単だ。
問題は
Call BBB
が単なるインクルードでないことだな。現在の位置にある情報を置いてけぼりにして別の場所にジャンプする、という感じだ。
一体誰が

Call BBB

をインクルードだと言ったの?
485476 ◆0d6Ohf/jLo :03/03/08 07:45
>>484
だれもイワンが。
勝手にそう思い込むヤツがここにいただけの話。
>>472
初心者にSendKeysを奨めるのって、親切そうに見えてウラに悪意が感じられる(w

# keybd_event じゃダメ?
>>485
凄い勢いで馬鹿
488476 ◆0d6Ohf/jLo :03/03/08 10:21
>>485
ひょっとしたらオレみたいのがいろんなソフトのバグを発見できるんだな。
489476 訂正 ◆0d6Ohf/jLo :03/03/08 10:21
>>487
490 :03/03/08 10:25
プロジェクトを削除したいんだけどさ、〜.vbpと 〜.vbwを削除すればいいの?
なんかいきなりトリップつけ出した偽476が煽っているみたいだが無視するがよろし。
>>490
意味不明。
Formだけ取り出したいなら.frmだけ隔離しる。
>>490
何がやりたいのかいまいちわからないけど、プロジェクトファイルを消したいのなら
それでいいんじゃないの?
もうすっかり春です
495 :03/03/08 10:30
>>493
あんがと
496476 ◆0d6Ohf/jLo :03/03/08 11:02
たくさんの大麻コントロールやDoEventsを使うとシングルスレッドのVBをマルチスレッドのような感じにできるみたいだがどうよ?
>>496
そら、マルチタスクってタイマー割り込みが元だからなぁ。
VB1.0でマターリと勉強してるんですが、なんか使いにくいです
もうこんな馬鹿らしいことは止めにします
499476 ◆0d6Ohf/jLo :03/03/08 11:09
>>497
その裏技的割り込みで、
Timer1イベント。Inet1.OpenURLでjpgをダウンロードしつつ、
Timer2イベント。Inet2.OpenURLでzipをダウソできたりできそう。
>>498 ずいぶんと古いOS使ってるな(プ
>>499
でも、問題は非プリエンティブって事だな。

どこかで時間のかかる処理を入れると他のタイマーイベントの発生が遅れる。
まぁ、そのためのDoEventsか。

そう言えば、DoEventsした後に同じタイマーのイベントが発生したらややこしい気もするなぁ・・・。
再入可能をしっかり頭に入れて設計しないとはまりそう。
502邪神476 ◆0d6Ohf/jLo :03/03/08 11:22
>>501
オレもややこしくなるとは思ってた。

またあとであばれる。
〜476さん外出中〜
リアルタイムシステムをVBで作るなよな〜
Windows自体もあやしいのに。
>>503
>リアルタイムシステムをVBで作るなよな〜

普通にそんな奴はいない。
>>504
ごめんなさい。
自分の思ったとおりに、見せようと思えばリアルタイムではなく、
台本を作って映画のようにプログラムを作らなければいきません。
と言いたかったのです。
>>505
>Windows自体もあやしいのに。

より、彼はハードリアルタイムかかなりシビアなソフトリアルタイムなシステムのことを言ってるんだと思われ。

騙ってまで設計の話に持って行こうとする理由がわからん。
507471:03/03/08 12:57
だれか>>471の質問を答えることのできるかた教えてください(><
508世直し一揆(コピペ推奨):03/03/08 12:59
<血液型A型の一般的な特徴>(見せかけのもっともらしさ(偽善)に騙されるな!!)
●とにかく気が小さい(神経質、臆病、二言目には「世間」(「世間」と言っても、同じA型を中心とした一部の人間の動向に過ぎないのだが・・・)、了見が狭い)
●他人に異常に干渉し、しかも好戦的でファイト満々(キモイ、自己中心、硬直的でデリカシーがない)
●妙に気位が高く、自分が馬鹿にされると怒るくせに平気で他人を馬鹿にしようとする
(ただし、相手を表面的・形式的にしか判断できず(早合点・誤解の名人)、実際にはた
いてい、内面的・実質的に負けている)
●本音は、ものすごく幼稚で倫理意識が異常に低い(人にばれさえしなければOK!)
●権力、強者(警察、暴走族…etc)に弱く、弱者には威張り散らす(強い者にはへつらい、弱い者に対してはいじめる)
●あら探しだけは名人級でウザイ(例え10の長所があってもほめることをせず、たった1つの短所を見つけてはけなす)
●基本的に悲観主義でマイナス思考に支配されているため性格がうっとうしい(根暗)
●単独では何もできない(群れでしか行動できないヘタレ)
●少数派の異質、異文化を排斥する(差別主義者、狭量)
●集団によるいじめのパイオニア&天才(陰湿&陰険)
●悪口、陰口が大好き(A型が3人寄れば他人の悪口、裏表が激しい)
●他人からどう見られているか、人の目を異常に気にする(「〜みたい」とよく言う、
世間体命)
●自分の感情をうまく表現できず、コミュニケーション能力に乏しい(同じことを何度
も言ってキモイ)
●表面上協調・意気投合しているようでも、腹は各自バラバラで融通が利かず、頑固(本当は個性・アク強い)
●人を信じられず、疑い深い(自分自身裏表が激しいため、他人に対してもそう思う)
●自ら好んでストイックな生活をしストレスを溜めておきながら、他人に猛烈に嫉妬
する(不合理な馬鹿)  
●後で自分の誤りに気づいても、強引に筋を通し素直に謝れない(切腹するしかない!)●自分に甘く他人に厳しい(自分のことは棚に上げてまず他人を責める。包容力がなく冷酷)
●男は、女々しいあるいは女の腐ったみたいな考えのやつが多い(例:「俺のほうが男
前やのに、なんでや!(あの野郎の足を引っ張ってやる!!)」)
あまりにもタイマーにこだわっているもので、
ごめんなさい。
spawnすればいいな。
VBのタイマーは、割り込みではないから再入処理は考えなくても可。
コードの実行中には、タイマーは起動すらしません。

リアルタイム処理をやりたい場合は、Interval値を少なめにしておいて、
(たとえばInterval=10)
以下のように自前で実行タイミングを管理すればOK。


'一秒に1回の割合で動く処理の場合
Sub Timer1_Timer()
  Static Old as String

  If Time$ <> Old Then
    Old = Time$
    'ここに目的の処理を書く
  End If
End Sub
>>510
いや、途中でdoeventしたときのお話。
IEみたいな移動できるツールバーってできないんですか?
どなたかお願いします
>>512
こもんこんとろーるず-3のCoolBarのことですか?
>513
どうもありがとうございます
でも使い方が
Google逝k
"aaa + bbb" と言う文字列入力に対して、
変数aaaと変数bbbを合計した数値を出力する方法は無いでしょうか?
ただし、変数名(aaaやbbb)は、
別途に初期化された内、どの変数が指定されてくるか判らないとして。
(aaa + ccc とかもありえる)
よろしくお願いします。
>>516
よく分からないが、別途サブルーチン作って引数として渡せばいいんじゃん?
>>516
直接可能なやり方は知らぬが。
CallByName と Property を使って誤魔化せるかな
めんどくさいが。
>>516
文字列がかならずaaa+bbbという7文字で、さらに数字部分が001のような3桁表示と決まってるなら、Left関数とRight関数を使って、左から3文字、右から3文字抜き出すのが一番簡単だ。
520516:03/03/09 22:49
レスありがとうございます。

>>517
そうです。引数などで渡して、その内容を判別させたいのです

>>518
CallByName・・
どうするにしてもクラスとかを一つ作ってからかぁ、たしかにめんどそうですねぇ
使った事無いのでてさぐりですが。

>>519
いえ、aaaなどは数字では無く、
正に英字の"aaa"などの文字列が来ます。
それを読み、aaaならば、
実際にプログラム内に持ってる変数「aaa」の内容を参照して……
とかしたいので、文字列とを内部変数と結びつける・・というかなんというか、そういう風なやり方知りませんでしょうか?


やはり、変数名を決めて、全てのパターンでif〜とかしかないんでしょうか・・
というか、そんな仕様でいいのかと。
522ひきプロ:03/03/09 23:07
>>520
type VAR_T
  name as string
  var as long
end type
みたいな構造体を作って、
Dim a(100) as VAR_T
で変数作成、実際にいじる時はループでnameを探すとか
コレクション作ってKeyに文字列突っ込め。
524ひきプロ:03/03/09 23:17
あー、コレクションだったら無尽蔵に要素を増やせそうですね。
管理する手間もなさそうだし
525質問者代理:03/03/09 23:36
コレクション?
key?
両方ともよくわからないけど
aaa+bbbをどうプログラミングしていけばいいの?
526デフォルトの名無しさん:03/03/10 01:52
前にも質問したんだけど
やっぱり分からない…だれか助けてくだされ(´・ω・`)

DBのテーブルに連結したMSHFrexGridの横に
チェックボックスを縦に並べて
ユーザに選択させる画面を作りたいんだけど
チェックボックスの状態とグリッドの各列を対応付けるいい方法が思いつかない。
グリッドがスクロールしたらチェックボックスの内容も
スクロールさせないといけないし…
マウス関係のイベントかタイマーでグリッドの表示してる部分(データセット内での位置)を
常に監視するしかないのかなぁ?
VB.NETのDBGridだとセルにチェックボックスが表示できる。
VBは捨てよう。
528デフォルトの名無しさん:03/03/10 02:04
チェックボックス風の絵の切り替えではダメっすか?

529 :03/03/10 02:09
>>526
リストボックスで代用すればいいよ。同時スクロールはAPI使うけども。
API使えないんなら、やめとき。
こんな時間に即レスサンクスコ。・゚・(ノД`)・゚・。

>>527
おぉなるほど!
…って残念ながら無理でつ
業務系アプリだしそんな許可おりないのさ。
なんとかVB6で…((((((^_^;)

>>528
ん〜結局は選択した時点でそのボックスがどのデータを指しているかを
知りたいのです。
Grid1画面分で表示できる件数ならなんとかなるけど、それ以上の件数で
スクロールバーで上下させられるとどうしようもなくてΣ(゚Д゚;≡;゚Д゚)アワアワ

FlexGridには「今表示しているデータの範囲」を知る手段が無いですよね?。
531続いて526:03/03/10 02:20
>>529
なんつーかナイスアイデア!
かなりの手間になりそうですが、仕様決まってるから仕方ないか…
>>516 , >525
Dim vbs As Object
Set vbs = CreateObject("MSScriptControl.ScriptControl")
vbs.Language = "VBScript"
vbs.ExecuteStatement "aaa=1"
vbs.ExecuteStatement "bbb=2"
vbs.ExecuteStatement "ccc=3"
Label1.Caption = vbs.eval("aaa + bbb")
Label2.Caption = vbs.eval("aaa + ccc")
'過去ログから引っ張り出してきた、、、
追記するほどでもないけど
vbs.ExecuteStatement "aaa=" & CStr(a)
などで動的に数値は変えられるし、
Microsoft Script Control 1.0 の方を使っても作りやすいかも。
#Win95でうごいたっけかな、コレ
534デフォルトの名無しさん:03/03/10 09:13
>>408
ありがとうございました。また質問ですが、RDBとは?なんでしょうか?
ヘルプを見てみましたがよくわかりませんでした。よろしければ教えてくだ
さい。
あと、WINSOCKでlistenメソッドで接続待ちをしていれば、特にイン
ターネットに接続する処理などをしなくても接続する事ができるのでしょう
か?
535デフォルトの名無しさん:03/03/10 09:20
質問です。アウトプロセスで呼び出したactivex.exeの方から呼び出し元の
関数や変数を使うにはどうすればよいのでしょう?教えて!!
>>534
1 RDB Relational Data Base
2 試してみればいいだけの話でわ?
>>535
インターフェースを用意する。
538デフォルトの名無しさん:03/03/10 12:02
Right関数ではまっているのですが

strTmp = "あ1い"
strTmp = StrConv(strTmp,vbFromUnicode)

strTmpEven = LenB(strTmp,3)
strChar = Right(strTmpEven,1)

この場合にstrCharに1文字読み込んで
最後が全角文字か判定したいのですが
strCharに"1"が入ってきません
Right関数をしようした場合の1文字ってのは
文字コード変換しても2バイト分取られるものなんですか?

環境はVB6,win2000です。

> strTmpEven = LenB(strTmp,3)

(゚Д゚)ハァ?
>>538
なんかものすごい勘違いが含まれてる気がするがw

  Debug.Print LenB(StrConv("A",vbFromUnicode))
  Debug.Print LenB(StrConv("あ",vbFromUnicode))

この違いを考えてみれ。
541デフォルトの名無しさん:03/03/10 12:30
>>537
インターフェイスを用意するというのがよく分かりません。できれば
具体的に教えて頂けるとうれしいです。
>>538
やりたい事は
LenB(Right("あ1い", 1))
だけちゃうのん?
>>542
LenB(Right("あ1い2", 1))
544538:03/03/10 12:56
>>539
>>540
>>542

激しくタイプミスでした

strTmp = "あ1い"
strTmp = StrConv(strTmp,vbFromUnicode)

strTmpEven = LeftB(strTmp,3)
strChar = Right(strTmpEven,1)

だった

>>544
あんた本当に >>540 見てる?
>>544 は仕様説明が十分でない
「二文字目」を取りたいなら "あ1い" -> "1", "abcde" -> "b"
strChar = Mid(strTmp,2,1)
「SJIS3バイト目」を取りたいなら "あ1い" -> "1", "abcde" -> "c"
strChar = StrConv(MidB(StrConv(strtmp, vbFromUnicode), 3, 1), vbUnicode)
>>546
あんた >>538 見てる?
海栗 <> 筋
>>548
あんたぬるぽ?
550538:03/03/10 13:38
こういう問題なんだけど?

dim hoge as String

hoge = "aあ"
hoge = StrConv(hoge,vbFromUnicode)
debug.print LenB(Right(hoge,1))
'Sjisに変換した文字列より1文字取得する
'1文字なので"あ"を取得しLenBに渡す
'結果は2


hoge = "あa"
hoge = StrConv(hoge,vbFromUnicode)
debug.print LenB(Right(hoge,1))
'Sjisに変換した文字列より1文字取得する
'1文字なので"a"を取得しLenBに渡すのかと思ったら
'Rightは"a"を返さず2バイト返している
'結果は2

hoge = "a"
hoge = StrConv(hoge,vbFromUnicode)
debug.print LenB(Right(hoge,1))
'Sjisに変換した文字列より1文字取得する
'1文字しか無いからか"a"を取得しLenBに渡している
'結果は1

ていうことなんだけど
>>550
もしかして、Right が SJIS を考慮してくれると思ってるの?
Right は Unicode を想定してるから強制的に終端 2 byte を返すよ。
最後の例で 1 になってるのは、単にもともと Right にかける前の文字列長が
1 byte だから。
>>541
こんな感じ。

'----呼出元 Module1
Public TEST2B As String

Public Sub Main()
 Dim TEST3 As New Class2
 TEST2B = "ヅら"
 Set TEST3.C1 = New Class1
 TEST3.TEST
End Sub

Public Sub TEST1B()
 MsgBox "ふが!!"
End Sub


'----呼出元 Class1
Public Sub TEST1()
 Module1.TEST1B
End Sub
Public Property Get TEST2()
 TEST2 = Module1.TEST2B
End Property


'----呼出先 Class2
Public C1 As Object

Public Sub TEST()
 C1.TEST1
 MsgBox C1.TEST2
End Sub

普通は呼出元の値→呼出先のオブジェクトのプロパティに設定
呼出元のプロシージャ呼出→呼出先のイベントに反応とかする方が自然かな。
554551:03/03/10 13:53
補足。

> 最後の例で 1 になってるのは、単にもともと Right にかける前の文字列長が
> 1 byte だから。

つまり、Len(Right("123", 5)) が 5 ではなく 3 になるのと同じ事。
555550:03/03/10 13:59
>>551
あー文字コード変換しようが
Rightは1文字 = 2byteで処理するってことね

一度Unicodeに戻してからRightして
帰って来た値をsjisにしてLenBしたら出来たよ
サンクス
> 一度Unicodeに戻してからRightして

激しく意味ねー
>>540 はどうなったんだよ
ascとかじゃダメなんでしょかね
ニガサンヨ♪
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>549
559550:03/03/10 15:56
>>556
  Debug.Print LenB(StrConv("A",vbFromUnicode))
  Debug.Print LenB(StrConv("あ",vbFromUnicode))
が1と2を返すのは最初から解ってるんだよ

SJISでRight関数使っても正確に1文字取れない
RightBではバイトで取得する、オレはバイト単位では受け取りたくない

Unicodeに戻さないとRightは正常に動作しない仕様になっている
SJISの状態で1文字取得できる関数が有ったら教えてくれ
>>559
????
asc(Right(str, 1))
が0〜255なら半角
それ以外なら全角じゃないの?
#半角全角という分け方もアレだが。
>>559
>   Debug.Print LenB(StrConv("A",vbFromUnicode))
>   Debug.Print LenB(StrConv("あ",vbFromUnicode))
> が1と2を返すのは最初から解ってるんだよ

なら最初から書け。

> SJISの状態で1文字取得できる関数が有ったら教えてくれ

文字列を SJIS で持っていなければならない状況というのがわからんのだが・・・。

しかし、「関数」 だの 「教えてくれ」 だの言うあたり、自分で調べたり作ったりする
つもりは全く無いのね。

1 バイト目が &H81 〜 &H9F または &HE0 〜 &HFC
2 バイト目が &H40 〜 &H7E または &H80 〜 &HFC
これで判定しなさい。
文字列をSJISメインで扱いたいならByte型配列に入れればよい。
563550:03/03/10 16:31
>>561
> なら最初から書け。

的はずれな質問して何怒ってるの?

>文字列を SJIS で持っていなければならない状況というのがわからんのだが・・・。
バカかおまえは?
"dD"とか全角半角混在してる文字列からバイトで取得するのにどうやってUnicodeで取得するんだ?
Debug.print LenB("あ")
Debug.print LenB("A")
として違う値が取れるのか?

> しかし、「関数」 だの 「教えてくれ」 だの言うあたり、自分で調べたり作ったりする
> つもりは全く無いのね。

お前は共通に有ったりしても自分で関数を作るのか?
用意されている物があればそれを使うのが普通

もう解決してるからおまえは書かなくていいよ(ワラ
564550:03/03/10 16:34
>>560
ASCをつかってもいいんですけど
そのRightが正しく1文字を返さないんですよSJISだと
春ですなあ
>>564
申し訳ないが、ascを使って正しく一文字返さないコードをだしてくれないでしょうか?
正直、550 が何に癇癪起こしてるのかわかんねー。
551 も書かなきゃ良かった。
>>563
> > なら最初から書け。
>
> 的はずれな質問して何怒ってるの?

そりゃ怒るでしょ。
ひょっとしてあんた、礼儀を知らないヒッキーさんですか?
ぬるぽキタ━━━━━(゚∀゚)━━━━━!!!!
>>566
>>544 を見れば、何でこんなアフォな話になったかわかる。
571デフォルトの名無しさん:03/03/10 17:18
以下のようなソースで優先度を上げてプログラムを実行したいのですが

Declare Function GetCurrentThread Lib "kernel32" () As Long
Declare Function GetThreadPriority Lib "kernel32" (ByVal hThread As Long) As Long
Declare Function SetThreadPriority Lib "kernel32" (ByVal hThread As Long, ByVal nPriority As Long) As Long
Public Const THREAD_PRIORITY_HIGHEST = 2

ソース
Dim Get_TH As Long
Dim Get_PR As Long
Dim Set_TH As Long
Dim Set_PR As Long
Dim Set_RC As Long

Get_TH = GetCurrentThread
Get_PR = GetThreadPriority(Get_TH)
Set_TH = Get_TH
Set_PR = THREAD_PRIORITY_HIGHEST
Set_RC = SetThreadPriority(Set_TH, Set_PR)

実行後、タスクマネージャみても上がってないょ(´・ω・`)

MSDN見ると
Windows NT: このハンドルは、THREAD_SET_INFORMATION アクセスを持っていなければなりません。

って書いてあるんだけど、これに関して調べても見つからないょ・・・

解かる人いませんか?
572571:03/03/10 17:19
あ、環境はWin2000(SP2)+VB6(SP5)です。
>>571
スレッドを作るときに設定できるアクセス権の話?
既に存在するスレッドのアクセス権を変更できるかは知らんけど。
>>573
スレッドって、マルチタスクOSで言うところのスレッドのこと?
それとも、BBSのスレッドのこと??
>>574
お前ここにスレ立てるときアクセス権なんぞ設定したか?
まぁ、権利関係は確かに存在するか・・・。
>>575
釣れた(w

(^▽^)
>>576
釣れた(w

(^▽^)
578デフォルトの名無しさん:03/03/10 18:50
>>577
釣れた(w

(^▽^)
        /  -‐‐‐‐‐‐‐--´´ ̄ ''''''''''''''''''''''''ー‐----、/
      /   ノ   ▲                 ヽ  ̄ ̄
     .i´    i´     ■  ∧               ヽ
     i    i      ■  .i.●i      ;::;:;:;:;       ヽ
    i     i     ■  ∨ノ   ,-、 ;:;:;/ノヾヽ    ;:;:i
    i     `、    ‐-   ー    ・ ;:;:;《 |  | )   ;:;:;:;::i
    i     ´´    -‐   ‐    ・ ;:;:;:《 |  | )   :;:;:;:;:;)
     i     i     ■  ∧ヽ  `‐´ ;:;丶ヽノノ    :;:;:;::i
     .i    i     .■  i.●i      ;:;;:;::       ;:;:;i 
     i、    i     ■  ∨                ノ
      ヽ   `ゞ   .▼                 /  _
       ヽ、    ‐‐‐‐‐‐‐‐‐‐、____,,,,,,,,,,,,,,,,,,,,,,,,,----‐‐‐ヽ
ニキータ
580516:03/03/10 20:16
色々とありがとう御座いました(^▽^
スクリプトコントロールはつかったことないので、ためしてみようかとおもいます。
581540:03/03/10 20:48
春だなぁ。
ま、風物詩と思えば腹も立たんか。

>>571
漏れが昔書いたソースだと

  hThread = GetCurrentThread()
  ret = SetThreadPriority(hThread, THREAD_PRIORITY_HIGHEST)

こんなんで動いてるな。

  hProcess = GetCurrentProcess()
  ret = SetPriorityClass(hProcess, HIGH_PRIORITY_CLASS)

こーいうのも動いてる。Win2Ksp3+VB6sp5。
VBの DHtmlEdit コントロールで ボタンやテキストボックス などを
貼り付ける方法 ご存知の方いらっしゃいますか

また DHtmlEdit の使い方が説明されているHPも
お願いします
583デフォルトの名無しさん:03/03/10 22:12
VB6からUnixTime(1970/01/01 から数えた秒数)を求めたり
日付時間を指定してそのUnixTimeを作ったりしたいのです。
2chのスレッドIDの決定もこれですよね。

単に秒数を求めればいいのではと思ったのですが
うるう年とかいろいろあってもうどうしたらいいやら、です。
584583:03/03/10 22:14
訂正

VB6からUnixTime(1970/01/01 から数えた秒数)を求めたり
UnixTimeから日時時間を求めたりしたいのです。
(要は Date型<->UnixTime の相互変換関数が作りたい)
>>584
DateDiffで調べれ
586583:03/03/10 22:34
>>585
時間差を秒で返させればいいのね?
ちょいと試してみます。激しく感謝。
  ∋8ノノハ.∩
   川o・-・)ノ <先生!こんなのがありました!
__/ /    /   
\(_ノ ̄ ̄ ̄\
||ヽ|| ̄ ̄ ̄ ̄||
 ...|| ̄ ̄ ̄ ̄||
http://saitama.gasuki.com/saitama/
>>583
time_t ですよね。
わたしならCでDLL作るかな。
589ひきプロ:03/03/10 23:41
>>583
'time_tから文字列へ変換
Public Function GetTimeString(time_t As Long) As String
Dim t As Long, leap As Long, year As Long, month As Long, day As Long, hour As Long, minute As Long, second As Long, s As String, i As Long
Dim m(1 To 12) As Long '各月の日付を入れる
m(1) = 31: m(2) = 28: m(3) = 31: m(4) = 30: m(5) = 31: m(6) = 30: m(7) = 31: m(8) = 31: m(9) = 30: m(10) = 31: m(11) = 30: m(12) = 31
t = time_t
leap = Int(((t / 31536000) + 1) / 4) 'うるう年でずれた日数の計算
year = ((t - leap) \ 31536000) '年の計算
year = year + 1970 '1970年から足す
day = ((t Mod 31536000) \ 86400) - leap '日の計算
hour = (t Mod 86400) \ 3600 '時間の計算
minute = (t Mod 3600) \ 60 '分の計算
second = (t Mod 60) '秒の計算
If (year Mod 4) = 0 Then '2月の日数を計算
m(2) = 29
If (year Mod 100) = 0 Then
m(2) = 28
If (year Mod 400) = 0 Then m(2) = 29
End If
End If
590ひきプロ:03/03/10 23:41
day = day + 1 '1月1日からの経過日数から月・日を求める
For i = 1 To 12
If day > m(i) Then
day = day - m(i)
Else
month = i
Exit For
End If
Next
hour = hour + 9 'UTCから日本の時間分足す
s = year & "年" & month & "月" & day & "日 " & hour & ":" & minute & ":" & second
GetTimeString = s
End Function
>>589
なんでお前はそんなクソ関数作るんだ?
?datediff("s",#1970/01/01 00:00:00#,#1970/01/02 00:00:00#)
?dateadd("s",86400,#1970/01/01 00:00:00#)
time_t = DateDiff("s", #1/1/1970#, dtmVB) - 32400 'JST - 9

これでいいんじゃなかったっけ。
593ひきプロ:03/03/10 23:56
ショック!
VBとはちょっと違う畑の質問になるかもしれませんが
とあるDLLの中の関数の名前一覧を知る方法ってないでしょうか?

VB用の関数仕様の資料はあるのに「その関数が入っているDLLの名前」だけが
書いてない…。
export されてんなら Dependency Walker とかで見れば。
596594:03/03/11 08:31
>>595
有難うございましたm(_ _)m

ついでにもうひとつ質問なのですが
aaa.DLL内のbbbという関数について、

標準モジュールxxxで
Public Declare Function ccc Lib "aaa" Alias "bbb" _
(ByVal 引数 As String, _
) As Long
と記述し、フォームのコードで
Ret_Stats = xxx.ccc(引数)
として呼び出しているのですが、いざ実行すると「ファイルが見つかりません。"aaa"」と
エラーが出てしまいます。
一応aaa.DLLは C:\Program Files\Microsoft Visual Studio\VB98 に放り込んであるのですが
DLLってどこか特定の場所にある必要があるんでしょうか?

>>596
環境変数Pathにないパスなら、Declare宣言でフルパス指定しる。

Public Declare Function ccc Lib "C:\Program Files\Microsoft Visual Studio\VB98\aaa.dll" Alias "bbb" _
(ByVal 引数 As String, _
) As Long

パスが通っているフォルダに配置されているなら、

Public Declare Function ccc Lib "aaa" Alias "bbb" _
(ByVal 引数 As String, _
) As Long

で問題なし。
598571:03/03/11 09:20
>>581
お返事ありがとぅ

でも、そのソース組み込んだEXE実行しても
タスクマネージャの基本優先度は通常のままだょ・・・

も う だ め ぽ (´つω・`)
>>598
タスクマネージャでの優先度表示はプロセスの優先度だったよーな…。
スレッドの優先度を見たいならSpi++でも使ってみて。

プロセスの優先度がまずあって、その中でスレッドの優先度が細分化
されてる、ってな感じだったかと思う。
>>599
sp"y"++

>>569
ガッ
601571:03/03/11 10:41
うわあーいヽ(=´∇`=)ノ、できたょ!

単に
HIGH_PRIORITY_CLASS
の初期値がダメなだけでした・・・

答えてくれた方々、本当にありがとうございました
以下の方法が最善かと
開発環境 → Systemディレクトリ
EXE実行 → EXEファイルと同じ場所

Declare の DLL名 のところはファイル名だけでOK
603596:03/03/11 12:40
>>597,602
ありがd。
やっぱそーだよね。
でも漏れのPCだと、それやっても
同じエラーになるんだよ…なんでだろ?
604602:03/03/11 12:48
>>603

もしやそのDLL VBで作ったやつ?
VBで作ったDLLは Declare で宣言できないよ
>>604
なぬぅ
資料によるとVB4で作ってるらしいのだが…。
(こっちの開発PCはVB6)
「参照設定」で指定しようとしても
「指定されたファイルへの参照は登録できません」
て出るし。

てことは、八方塞がり!?
606602:03/03/11 13:25
>>605
もし DLLのソースがあるのなら再度コンパイル

無かったら REGSVR32.EXE でレジストリから消してから再度登録?
REGSVR32.EXE の 使い方は Windowsディレクトリ を REGSVR32.EXE で検索して実行してみぃ

ちなにに REGSVR32.EXE は ActiveX をレジストリに登録解除するも
607583:03/03/11 14:07
>>588-592
何か流れで直にソースまで出てるしっ・・・
お陰で文句付けようのない動作してます。
どうもありがとうございました。
608デフォルトの名無しさん:03/03/11 15:15
すみません、質問させてください。
下のような感じで、AddDataが呼ばれるたびに
構造体の動的配列の要素数を1つ増やしてデータを入れていくということをやりたいのですが、
このままだと、u(1)から値が入るようになってしまいます。
u(0)から値を代入していくにはどのようにすれば良いのでしょうか?

Type USER
x As String
y As String
End Type

Dim u() As USER

Public Sub InitData()
'初期化
ReDim u(0) As USER
End Sub

Public Sub AddData(s1 As String,s2 As String)
ReDim Preserve u(UBound(u) + 1) As USER
u(UBound(u)).x = s1
u(UBound(u)).y = s2
End Sub

String型だと初期化のところでu=Split("")とやれば空の配列が作れると言うのを
ネット上で見たのですが、構造体の場合はどうすればよいのでしょうか?
よろしくお願いします。
>>608
プロシージャ内に静的変数入れて、条件分けしる。
ReDim u(-1 to -1) As USER

とやれば、一応空(のように見える)配列ができるぞ。
あんまし意味無いけど…。
611デフォルトの名無しさん:03/03/11 15:24
visual basic は買わないと手に入らないですか?
買うならいくらぐらいですか?
>>610
分かっていると思うけど配列の大きさは1だね。
u(-1)としてアクセスできる。
613608:03/03/11 15:27
>>609
>>610

ありがとうございます。やってみます。
>>608
Type USER
x As String
y As String
End Type

Dim u() As USER
Dim f As Boolean

Public Sub InitData()
'初期化
ReDim u(0) As USER
f = False
End Sub

Public Sub AddData(s1 As String, s2 As String)

If f Then
  ReDim Preserve u(UBound(u) + 1) As USER
End If
u(UBound(u)).x = s1
u(UBound(u)).y = s2
f = True
End Sub
>>608
構造体じゃなくてクラスにしてコレクション使うって手もあるけどな。
616608:03/03/11 16:00
条件分けすることによりできました。
みなさん親切にありがとうございました。
617デフォルトの名無しさん:03/03/11 17:47
>>611
買わなくても手に入る場合がある。
そういやCCEってまだ手に入るのかな?
619デフォルトの名無しさん:03/03/11 19:13
pictureをクリックした時に音を出すにはどうしたらいいですか?
>>619
イベントドリブンの基礎です。
>617

つう(r
>>621
>>618のフォローが理解できないなら(略
>>620
なんてやつですか?
>>623
イベントドンブリの基礎です。
C丼( = オブジェクト指向イベントドンブリ言語)で勉強してください。
625デフォルトの名無しさん:03/03/11 20:58
お聞きしたいのですが
16進数のことがいまいち分からなく

a * 256
を十六進数であらわすと
a and &hFF
でいいのでしょうか。
626デフォルトの名無しさん :03/03/11 21:03
>>625
Debug.Print で、お試しあそばせ
hex(256)
628ひきプロ:03/03/11 21:04
積算と論理積は同じモノではないような気が
629デフォルトの名無しさん:03/03/11 21:16
お返事ありがとうございます。
まだまだ勉強が足りないようです。
実際には以下の式を16進数であらわしたいと思っています

Int(a / 65536)

BitwiseAnd(a / &h10000, &hFFFF)

この二つはおんなじ効果でしょうか?それとも微妙に数字がかわってくると考えた方がいいでしょうか。
>>629
REALBasicのほうで聞いては?
631デフォルトの名無しさん:03/03/11 21:21
Mac板のREALbasicスレで以前お聞きしたのち
いろいろ探っていたんですが、微妙に違うのではないかと
int()関数さえあればこんな悩まなくてすむのですが,,,
632デフォルトの名無しさん:03/03/11 21:23
>>625
ぜんぜん違う。

>>629
違う。
それに、BitwiseAnd()は、VB.NETの関数だろ? スレ違いだ。
>>631
違うのではないかという根拠は?
0,0,0,0から255,255,255,255までの数をチェックすればわかることですが。
(from REALbasicスレより)
634632:03/03/11 21:27
VB.NET じゃなくて、.NET Framework か。

>>631
C言語のビット演算について調べみたら?
635デフォルトの名無しさん:03/03/11 21:35
ありがとうございます。
Cのビット関数で検索してみます。
失礼します。VBど素人です。
Sendkeysを使わないで「元に戻す」をできるようにするには
どのようにしたら良いでしょうか。
宜しくお願いします。
>>636
何を元に戻すのだ
Sendkeys"^z" と同じことを別の方法で出来ないかということです。
640636:03/03/11 21:47
>>639
ありがとうございます!
ずっと気になってたんだけど・・・




(*´д`*)アハァ…


このつの名前なんですか?
>>641
あなたの脳内で命名してやって下さい。
6431 ◆ExGQrDul2E :03/03/11 22:46
>>641
ビスケタン
半角二次元版にビスケスレがある。
WindowsXPProSP1 + VB6SP5 の環境で
SHGetValue で REG_DWORD の型の値を取得すると
どんな値でも0になってしまいます。

SHSetValueは正常にセットされるのですが・・・

645デフォルトの名無しさん:03/03/11 23:01
SuperTagEditorみたいな直接編集できるGridは
VBでは無いのでしょうか。

FrexGridにTextbox移動させて重ねるしかないのでしょうか。
646デフォルトの名無しさん:03/03/11 23:04
>>625
a shr 8
>>644
データとコード吊るせ! 話しはそれからだ。
648644:03/03/12 00:18
ソースです。

環境はWindowsXPProSP1 + VB6SP5
testidに数値がセットされていても0が返ってきてしまいます。
よろしくお願いします。

Private Sub DispInfo()

'レジストリから値を取得
Dim lngData As Long

lngData = 0
Call SHGetValue(HKEY_CURRENT_USER, _
"Software\test", _
"testid", _
REG_DWORD, _
ByVal lngData, Len(lngData))

If lngData <> 0 Then
debug.print lngData
End If

End Sub
6491 ◆ExGQrDul2E :03/03/12 00:23
>>641
アポ
VBスレマスコットのこいつ↓
(*´д`*)アハァ…
只今、名前募集中です。

ちなみに、こんなカスタマイズどうよ?

  v(*´д`*)b <アハァ…
ブビタン
>>650
玉造
ブビタンいいね!
語尾はもちろん「ブビ」で。
まだまだ募集中です。
次スレの1でお披露目といきましょうか。
654デフォルトの名無しさん:03/03/12 00:54
>>653
ヴォボタン
(一部地方放送禁止)

655デフォルトの名無しさん:03/03/12 00:58
>>648
Len()は文字列の長さを返す。
Long型の整数に使うのは無茶苦茶。
しかし、そんなレベルでよくAPI使うなあ。
>>655
…?
657655:03/03/12 01:16
>>648はこんなの書いてる。
Dim lngData As Long
Len(lngData)
debug.print lngData
>>648
何故肝心のDLL宣言を示さない!
何故戻り値を見ない!
ポインタの意味を勉強汁!

Dim lngData As Long
Dim dwRet As Long
Dim dwType As Long
Dim cbData As Long

dwType = REG_DWORD
cbData = Len(lngData)

lngData = 0
dwRet = SHGetValue(HKEY_CURRENT_USER, _
"Software\Microsoft\Dialer", _
"Folders", _
dwType, _
lngData, cbData)
>>655
Len 関数

指定した文字列の文字数または >> 指定した変数に必要なバイト数 << を表す長整数型 (Long) の値を返します。
660658:03/03/12 01:34
>>655 ヾ(・・;)
>>636
KeyPressイベントでKeyAscii=26
ま、冗談だけどな。
662デフォルトの名無しさん:03/03/12 02:31
Private Sub Form_Load()
  Picture1.Circle (400, 400), 400
End Sub

ってやっても円がかけません。
どうにかして直す方法はないのでしょうか?
お願いします。
>>662
Private Sub Form_Load()
Picture1.AutoRedraw = True
  Picture1.Circle (400, 400), 400
End Sub
664662:03/03/12 03:05
>>663
ありがとうございます!
665デフォルトの名無しさん:03/03/12 09:18
UserControl オブジェクトを引数として渡すには?
渡した先で次のようなんを実行したいんだけど
UserControl.Controls.Add("VB.PictureBox", "hoge")
655のレベルの高さに感動した!
667(T_T):03/03/12 09:40
なぜ、VB製のソフトは糞だと言われるのでしょうか?
糞ソフトの含有率が高いから。
裾野が広いから、そのぶん糞も増えるのだな。良質/糞ソフト比がとても悪い。
色遣いがものすごいソフトは大抵VBだったりするしなぁ。
プログラム技術以前の問題がある糞も多いと思われ(苦笑
>>668
いや、作る奴が作るとなかなか良いもんをageてくる。
たまに両ソフトがVBで悔しい思いをするよ。

S/Nが激しく低いのは同意。なぜかボタンがでかかったりな。
色づかいとVBは関係ねーだろw

厨房っぽいGUIは大体VB
VBはプログラム界のホームページビルダーだ!
672デフォルトの名無しさん:03/03/12 10:07
VBで作られてた公開されている良ソフトって何かある?
らるち〜
 昔のワレザー必携ツール
未だにらるち〜がでてくるあたりに問題の根深さがありそうな気もするな…
まぁ、VBだと気づかずに使ってるアプリもけっこうありそうだけど。
>673
俺も同じこと考えてた。
極窓
Winのアプリの標準仕様知らん香具師が多いでしょ、
VBしかしない連中には。
一応、Windowsにもできる限り守らなきゃならない標準仕様があるのに、
VBではいとも簡単に無視できる。
よく、無茶で勉強してないGDI作って、OSのバージョンアップの際、ボロが出るソフトって多いよな。
   ∧_∧  / ̄ ̄ ̄ ̄ ̄
  ( ´_ゝ`)< ふーん 、でたとえばどのソフト?
  (    )  \_____
  | | |
  (__)_)
>>677
VCでも簡単に無視できますが、何か?
>>672
Winny BBS Viewer
>677

>一応、Windowsにもできる限り守らなきゃならない標準仕様があるのに、

                    ,イ^i
                   ,イ::::  l
                  /::::::::   l
                 /::::::::::    {       /|
               /::::::::      `-、_  /:: {
              /:::::::::::    /       ̄  __ l
             ./:::::::::::         :::::\:::... \ i
             /:::::::::::          ::::::::::\:::: 、 {
             |:::::::::::.            :::::::::_ゝ:::  !
             |::::::::::::.       ):.`ー..____' /:::  |  そんなの勝手だろ
             .l:::::::::::::.         ヽー─フ::   /   プッ
             ヽ::::::::::. ___           ,/
               \::/`ー---‐^ヽ        /
                l:::      l         /
           _ /,--、l::::.      ノ       l
       ,--、_ノ:: `ー'::   、ミー---‐,,l        \
      ,/   :::         i ̄ ̄  |         \
     /:::::::.        l:::    l:::::::   l           \
    l:::::::::::.   l:::    !::    |:::::::   l            \
    |:::::::::l::::  l:::    |::    l:::::     l              l
    |::::::::::l:::.   }:::   l:::::,r-----    l               l
    ヽ::::::::l::::   ト:;;;;;;;/-/__...........  /
    /\::::`ー‐'  / l__l;;;;;;;;;;;/
  /   `           /
自分の思っている、規約にそぐわないGDIを実現するため、
用途の異なるコントロールを使うヤツ多すぎ。
>667
・ランタイム必須
・OCXが無いと何も出来ない
・実行速度が遅い
等々。

でも、一番大きな理由は
「厨が作ったソフトの比率が異常に高い」
って事だと思われ。
>>681
いや、勝手なのは勝手だけど、
GDIが糞、操作性が糞、バージョンアップにも対応できない糞ソフトを作ってるのは、
オマイみたいな香具師なんだけどな。
間違った使い方した物の、規格が変わったのをM$のせいにして無いか?
>規約にそぐわないGDIを実現するため、規約にそぐわないGDIを実現するため、

意味が不明です。


                    ,イ^i
                   ,イ::::  l
                  /::::::::   l
                 /::::::::::    {       /|
               /::::::::      `-、_  /:: {
              /:::::::::::    /       ̄  __ l
             ./:::::::::::         :::::\:::... \ i   
             /:::::::::::          ::::::::::\:::: 、 {   GDIが糞なのはセンスの問題
             |:::::::::::.            :::::::::_ゝ:::  !  センスないやつは標準仕様で作れ
             |::::::::::::.       ):.`ー..____' /:::  |  あとは>684の妄想話
             .l:::::::::::::.         ヽー─フ::   /   プッ
             ヽ::::::::::. ___           ,/
               \::/`ー---‐^ヽ        /
                l:::      l         /
           _ /,--、l::::.      ノ       l
       ,--、_ノ:: `ー'::   、ミー---‐,,l        \
      ,/   :::         i ̄ ̄  |         \
     /:::::::.        l:::    l:::::::   l           \
    l:::::::::::.   l:::    !::    |:::::::   l            \
    |:::::::::l::::  l:::    |::    l:::::     l              l
    |::::::::::l:::.   }:::   l:::::,r-----    l               l
    ヽ::::::::l::::   ト:;;;;;;;/-/__...........  /
    /\::::`ー‐'  / l__l;;;;;;;;;;;/
  /   `           /
>667

なんどもいわれてるが、
VBは厨房でも触れるソフトだからが最大の理由だよボケ
GDIってグラフィックカードを統一的に扱うためのAPIじゃないの?
コントロールかなんかと(もしくはGUIと)勘違いしてる?
オールAPIで行け!!
690デフォルトの名無しさん:03/03/12 11:19
GDI Graphics Device Interface
GUI Graphical User Interface

>>690
よって


規約にそぐわないGDIを実現


は、直接グラフィックカードを叩いて独自の描画用インターフェースを実装すると言うこと。
VBユーザってすげぇじゃん!





(藁
先生、質問でし。
超大物開発者と自負している、人が作った業務アプリですが
システムカラーとユーザーカラーが共存しています。
ウィンドウの背景を変えると、文字が見えなくなりました。
これってVBでは当たり前の仕様でしか?
使いやすいインターフェースなら規約に従っていようがいまいが文句ないんだけどね。
わけわからんインターフェースにする香具師いるからね。それが、考えた末の努力の
結果ならまだしも、ただ適当にやってる香具師多すぎ。<それ漏れだ(;´Д`)
694ASP初級者:03/03/12 11:32
どなたか教えて下さい(ASPの件です)。
利用者のアドレス情報を収集したいのですが、
Request.ServerVariables("REMOTE_ADDR")や
Request.ServerVariables("REMOTE_HOST")
でやってもxxx.xxx.xxx.xxxの形式で収集されるのですが、
プロバイダ情報のアドレスを収集する場合のはどうすればいいのですか?
例えば東京でOCNの人からの場合はxxxxxx.tokyo.ocn.ne.jpっていう感じの情報が欲しいのです。
サイトの荒らし対策をしていまして、プロバイダ単位の規制をしたいのです・・・。
どなたかご存じの方がいらっしゃいましたら教えて下さい。
よろしくお願いします。
>>692
と、言うか色カスタマイズしてる内は厨房だと最近思うようになった。
>>693
プログラム的なインターフェースとユーザインターフェースをごっちゃに語るのいい加減にやめなさいな。
>>692
VBに限らず当たり前だろ
>>694
VBユーザって絶対的な知識の欠如が見られるよな・・・。

ホスト名とかドメイン名も知らんのにWebアプリなんぞ書けるんかいな・・・。
>>694
ASPスレ逝け。
しょうがないさ、限られた画面の中でいっぱい機能を入れるように客に要求されるから。
VBだと簡単にできるってのだけ客は認識しているから。
もう、そんなときは全て客任せ。
そういえば、Win2Kにバージョンアップしたときに、いろんな灰色が入り乱れてたのを見たときには、
思わず、笑ってしまった。
>>698
>VBユーザって絶対的な知識の欠如が見られるよな・・・。
で、あなたは何でこのスレに? ( ´,_ゝ`)プッ
色カスタマイズして見辛くするのも厨だけど、
誤操作させやすいGUIってのだけは勘弁してください。

そういえば、ある人が作ると、
どんなソフトでも、必ずCPUの占有率が100%になり続けるって人がいたよ。

>694

VBの問題じゃない。ドメイン名とIPの知識を持てこのチンカス
704ASP初級者:03/03/12 11:45
>>699
ASPスレが見あたらなかったので、このスレに書きました。
VBScriptもOKだったので。
>>703
いろいろな参考書やサイトを回ってもう一度勉強してみます。
>>704
頑張れ。
>>704
探し方が足りん。ほれ。

==ASP== Part 2
http://pc2.2ch.net/test/read.cgi/php/1028024916/l50
>>706
しかし、同じ質問投げたら結局バカにされると思われ。
708デフォルトの名無しさん:03/03/12 12:08
VB.NETのように、
c:\aaaというフォルダが無い状態で、
c:\aaa\bbbを一気にこしらえる技は無いでしょうか。

PATH分解して
aaa作成→bbb作成とするしかないのですか?
>708

ある。おまえが関数つくればいい。
710602:03/03/12 12:22
>>708
API 使えないおバカさんは PATHを分解して作るのです
>708

>60
過去を振り返るのも大事かと…。
UNIX界のように、
VB厨が無い状態で、
708を一気にこらしめる技は無いでしょうか。

708を分解して
あぼーーんするしかないのですか?
713708:03/03/12 12:39
>>709 ありがとう。
>>710 ありがとう。
>>711 本当にありがとう。
>>712 プッ!
Dim 708 as 2ch.tyu-bo-
Dim 713 as 2ch.tyu-bo-

set 708 = new 2ch.tyu-bo-

708.質問です = "c:\aaa\bbbを一気にこしらえる技は無いでしょうか。"

708.煽り(709, "ある。おまえが関数つくればいい。")
708.煽り(710, "API 使えないおバカさん")
708.煽り(711, "過去を振り返るのも大事かと…。")
708.煽り(712, "708を一気にこらしめる技は無いでしょうか。")

set 713 = 708

713.れす(709, "ありがとう。")
713.れす(710, "ありがとう。")
713.れす(711, "本当にありがとう。")
713.れす(712, "プッ!")



やめた。。。つまらん
715655:03/03/12 13:23
>>659
そうだったのかぁ。
数値型のメモリサイズは固定で、わざわざLen()を使う必要がないから、
使われないだけだったね。
716デフォルトの名無しさん:03/03/12 15:16
>715
 おまえ、何にも分かってないな(藁
>>715
レアケースだけど、構造体のサイズを取得するのに使いますよね。
具体的には、Win32APIのGetVersionExを使うときとか。

OsVerInfo.dwOSVersionInfoSize = Len(OsVerInfo)

Deiphiなら、

OsVerInfo.dwOSVersionInfoSize := sizeof(OsVerInfo);

みたいな感じ。
>>708
API関数の名前が思い出せない。
名前を知らないと、捜すのが大変かも・・・。
>>718
>711
720665:03/03/12 15:34
お願いします
>>720
結局の所オブジェクト。普通に引数にしちゃって下さい。
MakeSureDirectoryPathExists

ただこんなのもあるらしい?
http://www.izumichan.com/newbbs/programming.html imagehlp APIである MakeSureDirectoryPathExists() で、
「2バイト目が0x5cのダブルバイト文字」で終わるフォルダを一発で作ると、
フォルダ名が化ける。
 Meや2000やXPでは出ない。

こんなのもあるらしい。
http://www.runan.net/program/tips/sdk_08_SHCreateFolders.shtml
良い機会だから再帰を覚えては?
プログラムの幅が広がるよ。
>>717
もしかして、レアケースでも何でもない??
俺は>>717のケースしか例を挙げられないのだが。

>>722
感謝。
技術評論社刊「300」シリーズ(ガリバー著)の第3巻にも確か掲載されていたが、
購入していないので・・・。(汗
725665:03/03/12 15:44
>>721
'UserControl' を引数にすると
ベース クラス名の使用方法が不正です。
とエラーが出てしまいます
UserControl オブジェクトに代替するものも今のところ見つけられません
>>723
再帰で表現可能な処理のほとんどはループでも表現可能。
俺個人のポリシーとしては、

(1) 再帰でしか表現できない処理
(2) 再帰を使うことに明確なメリット(コードが簡潔になる、パフォーマンスが高い、など)がある

のどちらかでなければ再帰は使いたくない。
727デフォルトの名無しさん:03/03/12 16:42
こんなのがわしの作ったプログラムの中にあったYO。今はもう使ってないけどね。

改行規制に引っかかるようなので、二つに分けるね。

Public Function MakeFolda(ByVal psFolda As String) As Boolean
'指定されたフォルダを作成します
'
'説明:
'ドライブ名も含めて指定します。既にあった場合は作成しません。
'ドライブがない場合や、指定できない名前等の場合はFalseを返します。
Dim sDrv As String
Dim sDir() As String
Dim sDirFull As String
Dim sFoldaName As String
Dim vNum As String
Dim iCt As Integer

On Error GoTo MakeFoldaErr:

MakeFolda = True
If Right(psFolda, 1) = "\" Then
psFolda = Left(psFolda, Len(psFolda) - 1)
End If

If Dir(psFolda, vbDirectory) <> "" Then
Exit Function
End If

sDrv = Left(psFolda, 2)
sDirFull = Mid(psFolda, 4)

sDir = Split(sDirFull, "\")

sFoldaName = sDrv
For iCt = LBound(sDir) To UBound(sDir)
sFoldaName = sFoldaName & "\" & sDir(iCt)
If Dir(sFoldaName, vbDirectory) = "" Then
MkDir sFoldaName
End If
Next iCt
Exit Function

MakeFoldaErr:
MakeFolda = False
End Function
ありゃ、空白のインデントが消えちゃった。しらなかったわ。全角スペースか。
見辛くてすまん。意味ない変数もあったりするなぁ(;´Д`)
>>729 そんなことより俺が突っ込みたいのはMakeFoldaって名前だ。
731デフォルトの名無しさん:03/03/12 16:59
>>730
???
732727-729:03/03/12 17:11
>>730
Folderでございますね。失礼いたしました。
>>726
うん、だからといってスタック構造作ってごちゃごちゃするのもバカらしい。
わざわざsplitを使うのもアホに見える
>>727
>On Error GoTo MakeFoldaErr:
ここで「:」はいらんだろ。
SetupKitの MakePathAux でいいじゃん。何をいまさら...
>>736
んなもん使えるか
738727-729:03/03/12 17:26
いいじゃないか!いじめるな!・゚・(つД`)・゚・  

今はAPI一発だよん。不具合がある? しらんしらん
漏れが使ってたのはこんなのだったかな…

If Right$(OutPut, 1) <> "\" Then OutPut = OutPut & "\"
For q = InStr(OutPut, "\") To Len(OutPut)
q = InStr(q + 1, OutPut, "\")
Path = Left$(OutPut, q - 1)
If (GetAttr(Path) And vbDirectory) <> vbDirectory Then MkDir file
Next
×MkDir file ○MkDir Path
APIにバグあったの初めて知ったよ
あかん、儂もアホ晒しとる
>>733
この例じゃスタック構造なんかつかわんだろ。複雑に考えすぎ。
743727-729:03/03/12 17:55
ガリバーの中の人も同じことしてたYO!

http://www.galliver.co.jp/writing/msdn/msdn08/
CommonDialogのShowOpenでファイル名を入力したいのですが
ダイアログを開くとタイマイベントなども止まってしまいます
自作するしか方法がないのでしょうか、、、
>>744
スレッド
ん?タイマイベント止まったか?
APIの方だと止まらなかった筈…
>>746
その間メッセージ処理が行われないんだから止まりそうなもんだけど。
http://www.microsoft.com/japan/developer/library/vbcon98/vbconspecialdebuggingconsiderations.htm
モーダル ダイアログ ボックスとメッセージ ボックスによるイベントの抑止
このような事態が発生するいくつかの例を次に示します。

・タイマー コントロールを持つフォームが開発環境で動作しています。
 [ツール] メニューから [オプション] を選択すると、[オプション]
 ダイアログ ボックスが開きます。このダイアログ ボックスはモーダルで
 あるので、このダイアログ ボックスを閉じるまで、タイマー コントロールの
 Timer イベントが抑止されます。

>>748
うおお、EXEにしたら動きました。情報ありがとうございました。

以下の文を繰り返し呼び出すとgCD.IDの値が0と67305472の間でいったり来たりしたんですが・・・
GETってレコードナンバーを書き換えるのですか?ヘルプには何も書いてないけど、
てっきり読み込み専用で扱ってるとおもってたんですが

Open mFN For Binary As #1 Len = Len(gCD)
Get #1, gCD.ID, gCD
Close #1
>>722関連の話

フォルダ参照のダイアログをAPIで出すとき
初期のフォルダ位置をコールバックで指定できるのはご存知だと思いますが
初期フォルダに半角カタカナが混ざっていると正しく表示できないのはバクですか
それともポインタに弱いVBのがバクですか

初期フォルダを直接 変数で渡すと正しく逝くのですが
>>750
Randomじゃないのか?と逝ってみるテスト
> それともポインタに弱いVBのがバクですか
厨房のような発言は止めとけ。
754デフォルトの名無しさん:03/03/12 23:40
>>750
なんかとてつもなく馬鹿コードかと。
755デフォルトの名無しさん:03/03/13 00:10
VB6で、フォーム(またはユーザコントロール)で
ポップアップメニューが表示されているかを検出する方法を教えて下さい。
また、表示されていた場合それをキャンセルする方法もあわせて教えて下さい。
756デフォルトの名無しさん:03/03/13 00:52
先生、Openステートメントでファイルを指定する時は、絶対参照
じゃなきゃ駄目ですか?
わざわざどこにあるよって指定するよか、同じディレクトリ
のファイルを開くってしたいんだけれども。
7571 ◆ExGQrDul2E :03/03/13 01:02
>>756
絶対でなきゃダメ。
App.Path & "\" & "exeと同じディレクトリにあるファイル"
という感じでApp.Pathを使うと便利。
>>755
そもそも表示させないのが筋じゃないのかと。
>>755
ぱっと思いつくのはサブクラス化してメッセージを処理するとか。
閉じるのはEscキーでも送ると閉じるかな
>>755
検出って、メニューが出ている間に書いたコードが実行されるのでつか?
CBTフックを知らない人多いね。
>>757
カレントディレクトリのファイルなら開けるだろ
>>756
アフォ
>754

lenのこと?
これは気にしないで、binaryモードの時は無視されるから。w
まさかこれだけでとてつもなく馬鹿コードっていってるんじゃないよね?w
もしかして自分の馬鹿をさらけだしちゃった?
>>761
めったに使わないような気がする。
俺が見たことがあるのは、「メッセージボックスを任意位置に表示する」という
サンプルコード。(ガリバー著、技術評論社刊「300」シリーズ)
(MsgBoxに限らず、コモンダイアログ等でも可)

# しかし、VB6では動くが、VB.NETにアップグレードしたら動かない罠・・・。
# (どこが間違うとるのか、よーわからん・・・)
>750

自己レス。
だいたいなぞが解けた。
一度読み込むとファイルへの読み込み位置が変わるからと関係ありますね。
767デフォルトの名無しさん:03/03/13 10:23
既に配布したプログラムに修正をする場合、
どのような手順でしたらよいのでしょうか?
まずは深呼吸してから、質問の仕方を考え直せ。
769デフォルトの名無しさん:03/03/13 11:33
Webを介してデータベースにアクセスするのってどうやんの?
DB先を変える程度でローカルネットワークで作んのと同じにできないもんかな
>>769
モジュール化しながらしっかり組んでるならUIがFormになるだけでそこだけ書き換えればOKだと思われ。
>769
一般的なVB製C/Sアプリが
 クライアント(VBアプリ)←→サーバ(DB)
という形態であったのに対し、
 クライアント(ブラウザ)←→サーバ(Web/アプリサーバ)←→DB
という形態になる。
現状がどんなくみかたをしているのかにもよるが、すんなり行くとは思えない・・・

現システムをインターネット介して使いたいってだけなら、VPN使う手もあるかも。
>769
IPで繋げば繋がる。
壁やルーターがあったら、ポートを空け、それなりの設定をやる必要がある。
セキュはかなり落ちるぞ。

昔、遊びで家のマシンにMSDE入れて、
会社からエンプラマネージャーで繋いだことがある。
繋がるには繋がったが、家のマシンにはかなりのアッタクの痕跡があった。
>>772
知ったかぶるのも楽じゃないな・・・
外から見えるところにDBがあるというのは、
常識ではありえない仕様だ罠
775772:03/03/13 12:39
>773
はぁ?何が?
実際にやったこと書いただけなんだがな。
>774

何も考えずにいれたら外部からアクセスできますよ。
この前のネット障害がものがたってるだろ
>>776
普通はそのようにしないための、
設定やファイアウォールやDMZだと思うのだが…。
778デフォルトの名無しさん:03/03/13 13:03
モザイクのはずし方おしえて
>>778
目を細めろ
>778

↑↑↓↓→←→←AB
超外出
783デフォルトの名無しさん:03/03/13 17:00
質問でございやす。

アプリ内で処理したCSV形式のテキスト行があり、ファイルに出力してエクセルに渡したいと考えています。
一行処理するたびにファイルに出力していたのですが、Output # だと頭に"がついてしまうため
エクセル側で展開する時にうまくいきません。
そこでバイナリで出力したのですが、今度は複数行分出力すると改行ができません。
複数行が一列に繋がってしまい、これまたうまくいきません

ケツに改行文字をくっつけてやればいいのでしょうか・・?力尽きました。
御教授よろしくお願いします。
>783
Write←×
Print←◎
>>781

> Alias "#165"
β版としか思えないような命名やな(w

# 舐めとるんか、MS?
>>786
#ではじまるのは序数指定→非公式APIってことじゃないの?
788769:03/03/13 19:08
>>770-777
ありがとうございます
一から勉強しますです
789デフォルトの名無しさん:03/03/13 20:41
競馬投票用ソフトJRA PATをVBで作成した外部アプリから自動入力したい
のですがSendkeyでは最初のフォーカス位置がわからないのでできません。
どうしたらいいでしょうか?
>>786
プッ、Cの関数名に#が使えるわけないじゃん。それ位気付けよ
>>790
C が何か関係あるのか?
792デフォルトの名無しさん :03/03/14 00:04
テキストボックス中の点滅する縦線を何と言うのですか?
>>791
APIはC言語から使うことを前提に設計されている。
>>792
キャレット
>>793
>APIはC言語から使うことを前提に設計されている。
じゃあWin16がCの標準でないPascal呼出規約を使ってた理由は?

これに答えられずに>>793の様なことをほざいている場合、君は知ったかだよ。
>>793
GetProcAddress() の引数と C の関数名には何ら関係が無いと思ってたけど。
>791
ある。C以外の処理系のリンカが#を含めないかどうか言い切れなかったんでね。
まぁこの場合、APIの話しだから、あえてCの.. は外しても良かったかも知れんが...

798792:03/03/14 00:11
>>794
有難うございます。
799デフォルトの名無しさん:03/03/14 00:12
>>789
PATが何でできているかわからないけど、テキストボックスが相手なら、
ウィンドウハンドルを取得してWM_SETTEXT を投げればいいんじゃないかな。
>>794
”カーソル”もしくは”ピコピコの”だよ
>>795
そっちの方がメモリやディスク容量を食わないからだよ。
>>800
前者:ちょっとパソコン使える人
後者:バカ

なお、どちらもWindowsプログラムを行うものとしては不合格。
>>801
それだとどうとでも取れる。詳しく頼む。
>>803
スタックと言えば分かるかな?
>>804
「スタック」だけでは説明になってないのは分かるよな。

両者ともスタックを使用する。
>>805
俺だけが答えるのはしゃくだから、
C呼出規約とPascal呼出規約のスタックの処理の違いを述べよ。
調べれば分かるはずだ。
いつまでもスレ違いな話題を続けるな。
>>806
いや、知ってて絡んでるんだが。(藁

君を試してるってとこだ。
>>808
教えて君必死だな(藁
>>808
分かってて遊んでるんだが(藁
どっかからコピペすることくらいできるだろ。
>知らないんですね。無理しなくて良いですよ。

ほう、そう来たか。

要はPUSHとPOPがどこで行われるかってのが重要なんだよ。

と、先読みレス。
ぶっちゃけた話、バイナリエディタでエントリ名を書き換えて、"#" で始まる
API を作ることは可能。
そいつを呼び出す事も可能。

ただ、先頭に "#" をつけると序数として判断されてしまう仕様の VB からは
呼び出すのは無理ぽ。

とにかく、>>790 >>793 >>797 が DQN であることはわかった。
>>809-810
相手がDQNだと確信し、自作自演で自分の優位性を確固たる物にしようとした。
>>811
先読みキャッシュ(藁レスが相手を直撃

で、ぐぅの音もでなくなったのか。ワラタ
>>812
呼び出せるって言ったってGetProcAddressを使う方法だろ。
呼び出せるのに#を使ってないのがC言語で使うために
設計されているいい証拠じゃないか。それにMSDNにも次のような文がある。
> 通常、API は Windows アプリケーションを作成する
> C/C++ プログラマ用に記述されていますが、

> とにかく、>>790 >>793 >>797 が DQN であることはわかった。
まず最初に己がDQNであることを疑うんだな。

>>813
おまえもウザイ。
> >>809-810
> 相手がDQNだと確信し、自作自演で自分の優位性を確固たる物にしようとした。
だれも自作自演してねーよ。

先読みキャッシュ? あれだけヒントが出てれば誰だって分かるだろ。
他人のヒントをまって、さも始めからわかっていたような顔をするな。
自分用語作って悦になんなよ。ホント春は変な奴が多いな。
おまいらそろそろSTOPしとけ。
816デフォルトの名無しさん:03/03/14 01:50
たびたびすまんですが質問です。
VB6でACCESSのMDBを使ってます。

ワークテーブルにレコードを挿入し、それをFlexGridで表示する、という画面を
作ったのですが、いざ実行してみると
ワークテーブルにレコードができる前に画面表示が行われてしまい、ADOの
抽出件数0件になってしまいます。
画面表示に行く前にmsgbox出してしばらく待つとレコードができててうまく動く、という次第。

レコードができるまで処理をとめる方法ってないんでしょうか?
このままでは、ループでワークテーブルの件数を監視し続けるしか……
>>814
> 呼び出せるって言ったってGetProcAddressを使う方法だろ。
> 呼び出せるのに#を使ってないのがC言語で使うために
> 設計されているいい証拠じゃないか。それにMSDNにも次のような文がある。

GetProcAddress() を使う以外に API を理由する手段があるのか?
まさか PE のローダーが GetProcAddress() を使ってないとでも言うのか?
API 名と C での関数名を同じにしなければならない理由があるのか?
例えば MoveMemory() なんてものはなく実際には memmove() または
RtlMoveMemory() が呼ばれるって知ってるか?

> まず最初に己がDQNであることを疑うんだな。

オマエモナー
> それにMSDNにも次のような文がある。
> > 通常、API は Windows アプリケーションを作成する
> > C/C++ プログラマ用に記述されていますが、

「通常」 って書いてあるだろ。>>781 が通常の話じゃない。
話を勝手に全般化するな。
おにぎりは 3 つ、具は梅干、しゃけ、たらこにすること。
820デフォルトの名無しさん:03/03/14 02:53
>>816
ADOだとままあることなんだけど、「これ」といった対応策はないんだよね。
ループで待機するってのも、ひとつの解決策だと思うよ。
もしくは、クエリーを投げた後に、コネクションを閉じてみるなんてのはどうだろう?
>>817
>例えば MoveMemory() なんてものはなく実際には memmove() または
>RtlMoveMemory() が呼ばれるって知ってるか?

ヘルプに書いてあることでいばってもなぁ。
そんなことよりRtlの意味から説明してくれや、な。
>>818
要点は、787が言ってる通りだろ。
C/C++向けに設計されている点に変わりはないと思うが。
>>822
この場合の 「C/C++向けに設計されている」 いうのは、ポインタとかゼロ終端
文字列とかコールバックとかそういう機能面での話であって、リンクの方法の
話ではないんでは?
>>821
Rtl: Run-Time Library。以上。
例が悪いような。
MessageBoxAとか出しとけばいいのに。
>>822
要点なんかどうでもよく、>>790を徹底的に叩きたいだけかと。
ここまでの話題をまとめると

  ∧_∧
 ( ´∀`)< ぬるぽ
8281 ◆ExGQrDul2E :03/03/14 08:07
あるファイルをいったんメモリに格納して、
そのファイルをメモリから呼び出すにはどうすればいいの?
音飛びさせたくないマルティメディアファイルなんかはディスクアクセスでなくメモリアクセスを行いたい。
8291 ◆ExGQrDul2E :03/03/14 08:12
VBでやるには・・・
830ひきプロ:03/03/14 08:21
dim buffer() as byte
redim buffer(filelen(filename))
open "file" for binary as #1
  get #1,,buffer
close #1

API呼ぶ時はVerPtr(buffer)でポインタを渡す
831ひきプロ:03/03/14 08:22
間違えた、VarPtrだった…
8321 ◆ExGQrDul2E :03/03/14 08:28
>>830-831サンクス
むっ!オレがコードを理解するのは難しいが、
とにかくVBでメモリアクセスできるということが伝わってきた。
>>832
つぅか、

ファイルサイズ分のメモリを確保。ファイル一気書き。読む。

だけじゃん。どうでも良いけど300MBのファイルとかどうするつもりなんだろう・・・
8341 ◆ExGQrDul2E :03/03/14 08:35
>>833
ハードディスクにスワップした分はあきらめる。
8351 ◆ExGQrDul2E :03/03/14 08:46
VBでアプリを作って以下のような状態になっているとする。
---------------------
\CG(フォルダ)
a.vbp
a.frm
a.bas
a.exe
----------------
ユーザにソフトを配布しようと思いディストリビューションウィザードを使うが、
ディストリではフォルダを読み込むことができないためCGフォルダが配布できない。
フォルダを含んだインストーラを作るときはどうしてる?
836ひきプロ:03/03/14 08:48
インストーラで配布する必要ないと思います。
8371 ◆ExGQrDul2E :03/03/14 08:50
>>836
ユーザのパソコンにVBランタイムが無いときは、
ランタイムの配布と、実行ファイルの配布の2段階になっちゃうでしょ。
だからインストーラで、ランタイムの配布と実行ファイルのセットアップを一気に行いたい。
838ひきプロ:03/03/14 08:52
Windows95でもない限りランタイムが入ってない
ことはないでしょう。フォントが文字化けする時は
明示的にMSゴシックを指定すればいいだけだし
8391 ◆ExGQrDul2E :03/03/14 08:56
>>838
まあ、自作のocxなどの配布も含めた話になるとやはりシステムに必要なファイルをセットアップする作業と、
任意のフォルダに本体実行ファイルをセットアップする二段階になってしまう。
VBではできない、または、フォルダをセットアップするためのユーティリティが発売されていない、
という結論でよい?
840ひきプロ:03/03/14 08:57
自作のOCXはシステムフォルダに入れないでください。
アプリと同じフォルダに入ってれば使えるし。
>という結論でよい?
ダメ
8411 ◆ExGQrDul2E :03/03/14 09:00
>>840
ocxは例えばのはなしで、とにかくシステムにdllを別途登録しないとVBアプリが動かないことは多々あるし。
>ダメ
ということはなにかフォルダをsetup.exeや.cabファイルに含ませるための方法があるということやね。どうやるの?
プログラムがフォルダを作る。
8431 ◆ExGQrDul2E :03/03/14 10:00
>>842
それは今までやってたが、今さっきsetup.exeで方法がわかったのでやりかたをまとめてみる。
これにより、ランタイム&ソフト本体のexeファイル&ソフト本体が扱うデータファイルやフォルダ
を一回でインストールできることになり、
VBを市販の製品用のプログラミングツールとして活用できることに成功した。
ランタイムのセットアップとその他のファイルの別配布をやっているようじゃいつまでたってもフリーソフトや固定客用のアプリしかつくれないものね。
8441 ◆ExGQrDul2E :03/03/14 10:09
自分であみだした方法ゆえ、説明文を書くのも時間がかかる。
長らくお待ちを。
8451 ◆ExGQrDul2E :03/03/14 10:10
自己流ゆえ、これを試して何かが起こっても保障はしない。
'スレ立て日を計算
Dim dteBuilt As Date
dteBuilt = DateAdd("s", 1046354784, #1/1/1970 9:00:00 AM#)
Debug.Print dteBuilt
ディストリビューションウィザードには
 「ファイルの追加」( .xlsや.ini など必要ファイルを登録する)
機能があり、作成されたSetup.lst は
 「設定パスを手書きできる」
んであるわけで
 File10=@CGのファイル.jpg,$(AppPath)\CG,,,7/3/00 3:00:32 PM,49076,0.0.0.0
などと変更すると設定するファイルの置き場所が変わったり・・
( ´〜`).。o~
8481 ◆ExGQrDul2E :03/03/14 11:31
>>846
オレもひろゆきの発言を元にそれを書いたことがある。
>>847
オレもそれについての初心者向け解説文を書いてみた。
-----------------------
開発時のファイル構成が次のようになっているとする。
-----------------------
\File\temp.txt(データファイル)
Form1.frm
Project1.vbp
Project1.exe(コンパイルして作成した実行ファイル)
-----------------------------
今回の目的は\File\temp.txtをインストーラに含ませて、
そのインストーラ(setup.exe)が.txtファイルを
セットアップ先のフォルダの中の\Fileフォルダにインストールすることだ。

・インストーラの作成
ディストリビューションウィザードを起動して、
ディストリビューション ウィザード - 含まれるファイル
というメニューまで進んだら追加ボタンを押して
\File\temp.txt
を追加する。
ウィザードを進めて完了ボタンを押すと、
8491 ◆ExGQrDul2E :03/03/14 11:32
---------------------
Project1.CAB
setup.exe
SETUP.LST
---------------------
というファイルが作成される。
このsetup.exeがインストーラだ。
.CABファイルには配布用ファイルが格納されている。
今setup.exeを実行すると
\Program Files\Project1フォルダの中に、
Project1.exe
ST6UNST.LOG
temp.txt
がセットアップされる。
注目すべきは、
temp.txtは開発環境時は
\Fileフォルダにあったということだ。そしてセットアップ時にも\Fileフォルダに入れたい。
8501 ◆ExGQrDul2E :03/03/14 11:33
それには、
ディストリビューションウィザードが作成した
SETUP.LST
をテキストエディタで開いて編集する。
[Setup1 Files]
[email protected],$(AppPath),,,3/14/03 10:26:12 AM,2,0.0.0.0
[email protected],$(AppPath),,,3/14/03 10:50:26 AM,16384,1.0.0.0
このような場所を探す。
そして、
[Setup1 Files]
[email protected],$(AppPath)\File,,,3/14/03 10:26:12 AM,2,0.0.0.0
[email protected],$(AppPath),,,3/14/03 10:50:26 AM,16384,1.0.0.0
このように編集してみよう。
$(AppPath)

(AppPath)\File
にしただけだ。
そしてこの編集結果を上書き保存する。
そのあとsetup.exeを実行すると、セットアップ先のフォルダの中に
\Fileフォルダ
が作成され、そのなかにtemp.txtがあるのを確認できる。
$(AppPath)\あいうえ お\DeepSub
のように日本語フォルダやスペースを含んだフォルダや階層の深いフォルダも指定できた。
オリジナルの方法はzipを使った方法だ。
UNZIP32.dll
がフリーソフトなのを生かしてこれをsetupファイルに含ませてインストールし、
アプリケーションをはじめて起動したときにzipファイルを自動解凍して
必要なフォルダやファイルをセットアップする。
852デフォルトの名無しさん:03/03/14 11:41
カンマCSVファイルの分解について質問です。
カンマで区切られたデータの分解には成功しているのですが、
ダブルクォーテーションマークでくくられている文字列の扱いがうまくいきません。
なんとかうまい方法はないでしょうか?
うち,150ファイル15Mのセットアップを一発で客先PCに設定できるようにしてるんでなぁ
system32の下に入れて共有にしたり,アプリとはまったく別のパスになったり
仕様変更で差分だけインスト・アンインストできるようにしたり
最初んころは訳解らんかったよ(今も完全とはいえん)

>>851
zipファイルの削除はちゃんとおこなっているか
UNZIP32.dllがすでに登録されていた場合にレジストリ二重登録にならないか
UNZIP32.dllは使用後に削除するかしないか,その時レジストリは大丈夫か
くらいはちょっと気になるな。
>>852
デバッグしたら?
>>852
ダブルクォーテーションも文字列になってしまうってことか?
それなら、
String = Mid(String, 2)
String = Left(String, Len(String) - 1)
とでもすりゃぁ良いのでは?
8561 ◆ExGQrDul2E :03/03/14 11:50
>>853
もちろんUNZIP32.dllが相手のパソコンにすでにあるかどうかのチェックも行っているし、
Windowsのバージョンの違いによる
system
system32
のどちらを使うか、という問題にも対処したあるからだいじょうぶ。
UNZIP32.dllを共有ファイルとして使用するかどうかの設定もバッチシ。
8571 ◆ExGQrDul2E :03/03/14 11:52
Windows9Xだとsystemフォルダーを使い、NTアーキテクチャだとsystem32にUNZIP32.dllをコピーする。
8581 ◆ExGQrDul2E :03/03/14 12:05
UNZIP32.dllを解凍目的(インストール目的)に使うだけならレジストリ登録とかもいらないからレジストリについて心配する必要は無い。
とりあえずNGワード入れといた
ExGQrDul2E
8601 ◆ExGQrDul2E :03/03/14 12:14
>>859
死ね
861852:03/03/14 12:36
>>855
すいません。ちょっと言葉が足りなかったようです。
abc,"123,456,789" というCSVデータがあったとして、そのままカンマ区切りを
してしまうと、abc "123 456 789" というデータになってしまうのです。
"でくくられているところのカンマで区切らないやり方がどうもうまくいきません。
なんとかならないでしょうか?
862デフォルトの名無しさん:03/03/14 12:57
>>861
今どうやってるかによるけど、
Wクオーテーション内かどうかのフラグを立てるだけですむのでは?
>>861
べたなやり方だけど、頭から1文字ずつ取っていって、
”があったらフラグON、次の”でOFFにして、ロジックで文字列くっつけていけば?
それしかないな。うん
>>861
ダブルクォートを含む文字列データはどうするんだ

と言ってみるテスト。
8661 ◆ExGQrDul2E :03/03/14 13:47
>>861
Windowsでもファイル名で使ってはいけない文字があるように、
CSVでも禁止文字があるだろ。
それはどんな文字だ?
>ExGQrDul2E
あのさ、知らない間にVBランタイムなんか入れるようなもん作らないで欲しいんだけど。
最低でもVB製って事だけは明記してくれよ。
DL回避になるから。
868デフォルトの名無しさん:03/03/14 16:13
>>866
ExGQrDul2Eですか?(w
>>861
まともに処理させたいなら Split() を使ってはいけない。
InStr() を駆使してダブルクォーテーションをきっちり調べろ。

>>865
Excel なんかでは、ダブルクォーテーションで囲われた領域の中でダブルクォーテーション
を 2 つ並べると 1 文字のダブルクォーテーションとして認識される。
>>867
CSV の禁止文字? はつみみです。
871GIF:03/03/14 16:15
アニメーションGIFをリソースにしたいのですが、これは可能でしょうか?
BMPしかリソースにする方法がわかりません。
またリソースにできるのでしたらどうやって使うのでしょうか?
8721 ◆ExGQrDul2E :03/03/14 16:22
>>867
おまえはVB使いじゃないな。
>>868
どうした?
>>870
そりゃそうだな。今回はオレがバカだった。
8731 ◆ExGQrDul2E :03/03/14 16:34
>>871
WebBrowserコントロールだとGIFがアニメーションする
>>872
おにぎりは 3 つ、具は梅干し、しゃけ、たらこにすること。
8751 ◆ExGQrDul2E :03/03/14 16:40
>>874
バカなオレにもわかるように言ってくれ。
>>872
VB使いだが問答無用でインストールされるのはいやだな。
8771 ◆ExGQrDul2E :03/03/14 16:45
>>876
スパイウェアとかだったらいやだけど、
アプリの動作に必要で、それ以外にはまったく影響しないdllなら勝手にインストールされても気にならないけどな。
そういう人もいるんだなあと参考にする。
8781 ◆ExGQrDul2E :03/03/14 16:48
2chSoft005
エロといえば森川ゆかり

ttp://www.interq.or.jp/guitar/lead/tripod-vip-eria/user-knight/a020.zip

Windowsスタートメニュー → プログラム → 2chSoft のところのショートカットを起動する。
ソフトの削除はエクスプローラではなくコントロールパネル→プログラムの追加と削除から行う。
画像は\Program Files\フォルダに入っている。
今回はjpgでなくpngファイルなので画質劣化無しの高画質だ。

↑UNZIP32.dllを実際に使ったアプリ
ここはあんたの日記帳じゃない。
8801 ◆ExGQrDul2E :03/03/14 16:52
>>879
個人のホームページの掲示板は荒らさないが、2chでは好き勝手発言させてもらっている。
>>877
VB のランタイム等がシステムとかに 「まったく影響しない」 事は立証できるか?
>>880
あんまり図に乗ってるとアク禁依頼が出るんじゃ?
8831 ◆ExGQrDul2E :03/03/14 16:52
>>881
それはマイクロソフトが悪い、ということにする。
8841 ◆ExGQrDul2E :03/03/14 16:54
>>882
実は2chをやめたく、自分では中毒でやめられないからアクセス禁止になるためにわざとあばれている。
8851 ◆ExGQrDul2E :03/03/14 16:55
2chに寿命を、時間を奪われているが、自分からは絶てない。
だからどうかアク禁にしてオレを楽にしてくれ。
886アシュル ◆adhRKFl5jU :03/03/14 17:09
修行が足りないようだな。
8871 ◆ExGQrDul2E :03/03/14 17:15
>>886
はじめてみるコテハンだな。
オレのソフトのことか?
オレはデスクトップの壁紙変更ソフトも作れるぞ。
見えないけど異常にスレッドが伸びてるなぁ・・・
漏れがランタイムを勝手に入れて欲しくないのは、
VBで作られたソフトなんてロクなもんじゃないから、という理由。
>>884
そう自白すると誰もアク禁依頼出さなくなる罠
891VB最強・だ・ぞ♪:03/03/14 17:53
ウヒンドウズインストールするときに強制的にランタイム入れるようにすれば良かったのにね
>889

こうなったら意地でもおまえのマシンにVBランタイムぶっこんでやる!
893デフォルトの名無しさん:03/03/14 18:30
透明度を指定して描画する方法を教えてください。
藤本
トロ、ワンモア
895デフォルトの名無しさん:03/03/14 18:33

line命令とか使うときに
透明度を指定して描画する方法を教えてください。
>>895
Line単体はしらないが、別のビットマップに線を書いて、
AlphaBlend のAPIで重ねるとかはダメ?
初歩的質問かもしれませんけど…
テキストを印刷するプログラムを作りたいんです。
で、printerオブジェクトを使えば
書体や印刷部数の設定ができることはわかったんですが、
文字の色の設定の仕方がどうしてもわからないんです。
面倒かもしれないですけど教えてください。
>897

オブジェクトのプロパティを見よ
>>897
ヘルプだと、printer.ForeColor がすぐに出てこないな・・・うちだけだろうか
900897:03/03/14 18:59
>>898
> >897
>
> オブジェクトのプロパティを見よ

ん?何ていうプロパティですか?
901897:03/03/14 19:06
>>899
それだ!
私もヘルプに載ってないし、入力候補にも表示されないんです。
でも試しておくべきでした。どうも失礼しました。
902デフォルトの名無しさん:03/03/14 19:54
VB.NETインストールにシステムドライブの空き容量が4Gと有りますが
現在空きは400Mしか有りません。
切り直さなければならないでしょうか?
>>901
オブジェクトブラウザ
904デフォルトの名無しさん:03/03/14 22:48
VBで0.1秒毎に正確に表示するストップウォッチを作るにはどうしたらよいでしょう。
timerプロジェクトを使い、0.1秒毎に表示するとすると、表示の処理に0.02秒ぐらい
かかるためか、誤差が出てしまいます。0.01秒毎だともっと遅くなるのでたぶん
そうでしょう。Load_From()でforを使いずっとループさせておいてtimerの処理は
変数変更のみにし、forの中のifで表示処理をするみたいなのをやりましたが、
落ちてしまいました。
905デフォルトの名無しさん:03/03/14 23:22
俺はVB房だが
ちょっと、質問させてくれ
企業のシステムは生産性を考えVBで組んでいるのが大半だと思う。
同じプログラムを組むのにVBとC++では、労力が違う
では、労力を使ってC++で組むメリットって何?
>>905
自己満足
907デフォルトの名無しさん:03/03/14 23:27
>>905
私しの会社の基幹システムはVB5ですが
ちなみに、一部上場企業です。
でもVC++も慣れたらVBとさほど労力に差はないけどね。
VBで作る業務システムくらいなら。
909デフォルトの名無しさん:03/03/14 23:32
業務システムは、VBが一番だと聞きましたが、何か?
>>909
何が一番なの?
慣れるまでがねえ。
912デフォルトの名無しさん:03/03/14 23:47
顧客にとって言語の選択は関係のない事。
コストを考え見積を検討するだろう
開発側は、コストを考えVBを選択するだろう。
(業務システムの場合)
913デフォルトの名無しさん:03/03/14 23:51
システム開発で需要の多いのはVBでしょ?
VCはGUIとDBアクセスが面倒だからね。
VB.NETは使ったこと無いんですが、VB6と同じコストなんでしょうか
>>904
小さいアイコン位の大きさではどうか?
917デフォルトの名無しさん:03/03/15 00:05
まだ、日本ではC++を使いこなせる人は少ないと聞いた。
たしかに、VBよ++のほうがいいだろう
でも、++が使いこなせないのなら,誰でも出来るVBのほうが安心。
? VBよ++
>>904
「正確に」0.1秒更新を保証する方法はない。
むしろ表示は適当な間隔で停止時の時間だけを正確に取得する方が利口だと思う。


>>905
APIをガリゴリに使ってウインドウズメッセージを自前で処理するようなコードを書くときは
素直にVC使わせろと思いました。
そこまで労力を使わせてまでVBにこだわるなよ>上司
920デフォルトの名無しさん:03/03/15 01:14
Outlookで、VBAとBASPを使っているのですが、
[email protected]」の
最初の8文字だけ(上の例だと「M0002687」)を取得するには
どうすればいいのでしょうか?


以下のようにやったのですが、

EMAILSendername = "[email protected]"
IDMag = objBasp.Match("/^(.{8}) /", EMAILSendername)
msgbox IDMag


「0」と表示されてしまいます
921ひきプロ:03/03/15 01:22
IDMag = Mid(str, 1, InStr(1, EMAILSendername , "@") - 1)
922ひきプロ:03/03/15 01:23
DMag = Mid(EMAILSendername , 1, InStr(1, EMAILSendername , "@") - 1)
間違った…
9231 ◇(略):03/03/15 01:23
>>890
ワシもそうおもうだわさ。
VBしか使えないからVBを使うのか、楽だからVBを使うのか。
とりあえず、VBしか使えない奴のコードは見るとだいたい解るね。
925904:03/03/15 02:03
>>919
お答えありがとうございました。できました。
Private Declare Function GetTickCount Lib "kernel32.dll" () As Long
Dim start As Long, now As Long

Private Sub Form_Load()
  start=GetTickCount
End Sub

Private Sub Timer1_Timer() '間隔は100ミリ秒毎
  now=GetTickCount
  Label1.Caption=now-start
End Sub
926デフォルトの名無しさん:03/03/15 02:22
Windowsの終了時にForm_Unloadでユーザーからの入力待ち(Fileのセーブをするか?など)
の時にWindowsの終了を入力が終わるまで待たせるにはどのようにすればよいのでしょう?
>>925
GetTickCountよりtimeGetTimeの方が正確という噂あり。
928ひきプロ:03/03/15 02:38
>>926
Form_Unloadの引数にCancelというのがあるので
これに1を入れるとアンロードがキャンセルされます。
しかしこの場合、QueryUnloadにこの処理を書くほうが良い気がします。
929デフォルトの名無しさん:03/03/15 03:00
>>928
レスありがとうございます。
Form_QueryUnloadでCancelを1にするとWindowsの終了自体もCancelされて
しまうので都合がよくないのです。
Excelとかみたくファイルの保存のダイアログを出してSAVEが終わったら
そのままWindowsも終了してくれるとありがたいのですが・・・
930ひきプロ:03/03/15 03:44
QueryUnloadで、
if UnloadMode = vbAppWindows then
  '処理を書く
end if
みたいにすればウインドウズの終了時の処理が書けると思います。
Cancel=1なしで書いてみては?
FormのUnloadやらQueryUnloadでCancel=1にしたときに動作って
OSによってちがくない? 気のせいかな?
ポインタがボタンの上に来ると、ステータスバーに
そのボタンの説明が表示されるようにするには
どのようにすればよいのでしょうか。
すごく簡単なことかもしれませんが教えてください。
933デフォルトの名無しさん:03/03/15 11:52
MouseMove捕らえればいいんじゃないの?
934デフォルトの名無しさん:03/03/15 11:56
すみません。
DataReportに関してですが、ツールボックスでShapeという囲み線
を印刷できると思いますが、その線を太くしたいと思ってます。
プロパティを見てもそのような設定が見当たらないのですが、
Data Reportでは無理なのでしょうか?レポート専用の
開発ソフトを買わないで済ませたいのですが。
(*´д`*)アハァ…
936デフォルトの名無しさん:03/03/15 12:19
>>932
み〜くんパパにサンプルがある。
937932:03/03/15 12:42
>>933、936
ありがとうございます。
コードの書きかたがよくわかってないので不安ですが
MouseMoveでやってみます。
938デフォルトの名無しさん:03/03/15 13:02
数十個のボタンが密集して配置してあります。
マウスがボタンの上を通過すると、そのボタンの色が青になります。
マウスカーソルがボタンの上にある限り、そのボタンの色は青のままです。
カーソルを他のボタンの上に移動させると、今まで青かったボタンはデフォルトの灰色に戻り、
現在マウスカーソルが乗っているボタンが青くなります。

・・・・てな感じのものを作りたいんですが、どう書けばいいんでしょう?
ボタンのMouseMoveを使えば色を変えられるんですが、カーソルが離れた際の処理が思い浮かびません。
とりあえず、それぞれのボタン.MouseMoveに、自分以外の色クリアの処理を行う処理を書いてみたんですが、
他のボタンが何十個もあるので、やたら長くなります。
VBでここらへんをスマートに解決するにはどうしたらいいんでしょうか?
直前に青かったボタンを覚えておけばええんでない?
>>938
ボタンをね、コントロール配列にすれば良いのよ(ウフッ
941次スレのテンプレ:03/03/15 13:58

(*´д`*)アハァ… VB初心者質問スレ Part23

v(*´д`*)b アハァ…
ブビタンがどんな厨房疑問でもやさしく答えるブビ。
ブビタンは時に私であり、時には別の人ブビ。
関連スレは>>2ブビ。

  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/test/read.cgi/tech/1044028945/
  Part22 http://pc2.2ch.net/test/read.cgi/tech/1046354784/

VB.net関連スレ
【老若】VB.net質問スレ【男女】 (Part2)
http://pc2.2ch.net/test/read.cgi/tech/1043629429/

心得
壱.質問する前に過去ログにも目を通してみる。
弐.質問する前に MSDN などで調べてみる。
参.VBScript もこのスレでOK。
四.インストーラーなどの質問もOK。
五.下ネタもたまにならOK。
六. ブビタン情報募集中。
次スレのテンプレが出てきて質問するのも気が引けるのですが。

MDIフォームでボタンメニューとツリービューを使いたいと思ってます。
MDIフォーム上でCoolBarを縦に使う方法を知りたいのですが、可能でしょうか?
または、上部にCoolBar、左側にPictureBoxのようなコントロールを張り付けるとか。

エクスプローラのファイルビューのところがMDIの子フォームになっているようなイメージです。

可能、不可能だけでもいいです。
CoolBarでバンドの向きとかverticalのプロパティでは駄目って事は解りました。
MDIフォーム上でイベントを拾えればそれでOKなんでつが・・・。

グレープシティ(旧文化オリエント)では出てるんですけどね。
あれって(自分的に)使いたいコントロールが少ない割にはそれなりの値段するからなぁ。
943932:03/03/15 15:36
すみません。先程の、ツールバーのボタンの説明を
ステータスバーに表示するという件について質問です。
Toolbar1_MouseMoveプロシージャで、ポインタが
今どのボタンの上にあるかを

Select Case Button

Case (ボタンのキー)
StatusBar1.Panels(1).Text = "あいうえお"


End Select

というふうに書いてみました。
一つ目のボタンはうまく表示されたのですが、
残りでも一つ目のボタンと同じ文が表示されてしまいました。
(それぞれのボタンについて異なる文章を書いています)
どのようにしたら他のボタンでも正しく表示されるでしょうか?
↑ものすごく間違ったコードを
書いているかもしれませんがよろしくお願いします。
>>943
MouseDown イベントのヘルプよく読んで
Button 引数の意味を理解しなさい
945944:03/03/15 16:27
×MouseDown
○MouseMove
946デフォルトの名無しさん:03/03/15 18:14
>>921-922
そういう時のために、Left()があるのでは?


>>946
あれ? 突っ込まない約束でみんな来てたんじゃないの?(w
948943:03/03/15 19:15
>>944
一応ヘルプは見ていたつもりでしたが…すみません。
Buttonは押されたボタンなんですね。
では、x、yの座標で位置を知らなければならないんですか?
このボタンはx=0〜いくつまで とか設定して。
949943:03/03/15 20:47
↑ボタンの幅に合わせてScaleWidthを設定して
Case x=1 などとすればよいのでしょうか?
950デフォルトの名無しさん:03/03/15 22:25
>>949
とにかくやってみれ。試行錯誤するのが一番勉強になるわけで。
とりあえず次すれ

(*´д`*)アハァ… VB初心者質問スレ Part23

http://pc2.2ch.net/test/read.cgi/tech/1047743187/
ぬるぽがこのスレに興味を持ったようです。

  ∧_∧
 ( ´∀`)< ぬるぽ
953943:03/03/16 09:55
とりあえずx座標をいちいち設定したら
横の動きには反応するようになりました。
しかしツールバーから縦方向に出たときに反応してくれない…
Accessの質問です。

Win32APIのDeleteMenuを使うと、アプリケーションウィンドウのコントロールメニューを
無効化できますが、この状態でも、[Alt] + [F4]のキーストロークには応答し、終了して
しまいます。コントロールメニューの表示状態に関わらず、WM_CLOSEメッセージそのもの
を受け付けなくする方法はありませんか?
(Access97なので、AddressOf演算子は使用できず、サブクラス化は不可能です)

イメージとしては、VBアプリケーションの

Private Sub Form_QueryUnload (Cancel As Integer)
Cancel = -1
End Sub

のような動作を実現したいのです。
ACCESS総合相談所 その7
http://pc2.2ch.net/test/read.cgi/bsoft/1043996834/
>>955
あっちでまともなコメントが付くとは思えない。
957デフォルトの名無しさん:03/03/17 13:00
まだ終わってないからあげとくYO!
958755:03/03/17 17:33
ポップアップ表示の前にESCを送ることでとりあえず回避しました。
959デフォルトの名無しさん:03/03/27 19:11
ActiveXってWEBサーバがLINUXでもうごきますか?
(もちろんブラウザはIEです)

よろしければ教えてください。
960bloom:03/03/27 19:16
961デフォルトの名無しさん:03/03/27 22:17
VB6.0です。
ListBoxのHeightは、
項目の高さの倍数分しか変更できないみたいなんですが、
これを自由なサイズに変更する方法はありませんか?
>ActiveXってWEBサーバ
なんですかその「WEBサーバ」のActiveXって?
Apache?
>>961 IntegralHeight
964959:03/03/28 15:27
すみません、説明が足りませんでした。
WEBサーバはApache、OSはLinux(Redhat)です。
つまりWebサーバがIISでなくても、ブラウザがIEであれば、
ActiveXは動くのかということを知りたいのです。
>>964
WebサーバとActiveXの関連を教えてください。
966959:03/03/28 16:51
>>965
WebサーバからActiveX(コントロール、が抜けてました)を
DLし、ActiveXを介して画像のやりとりを行います。
DLも画像のやりとりも通常のHTTPに則ってるのなら、サーバには関係ない話だと思うが。
968デフォルトの名無しさん:03/03/28 23:55
テキストボックスのスクロールバーのValueって取得できないよね?
>>968
EM_GETTHUMB なんかじゃだめかい?
EM_* 系のメッセージをさがせば結構色々使えるぞ。
970デフォルトの名無しさん:03/03/29 20:23
あ、TXTBOXやMSFGRIDコントロールでスクロールバーとセルがぴったり
あうようにするにはどうすればいいのでしょうか?
ネットにころがっているコードはほとんど厳密にTWIPを定義している
ようです。スクロールバーのTWIPを知る方法はないもんでしょうか?
>>970
SysInfo コントロールの
.ScrollBarSize じゃないのん?
972デフォルトの名無しさん:03/03/30 06:48
オブジェクトのプロパティ値を取得するのに
プロパティ名を変数で指定することは出来ますか?
Dim A As String
A = "Top"
とでもして
Text1.Top の値を取得したいのよ。




>>972
うまいやり方は知らないけど
Label1.Caption = getpro(Text1, "Top")
などとして読み込める関数でも作っては?

Public Function getpro(ob As Object, pro As String)
Dim Ret
Select Case pro
Case "Top"
Ret = ob.Top
Case "Left"
Ret = ob.Left
Case Else
Ret = ""
End Select
getpro = Ret
End Function
974デフォルトの名無しさん:03/03/30 15:13
WSHをVBSで書いているのですが、
comdlg32.ocxを使わないで
「名前を付けて保存」ダイアログを出す方法が知りたいです。

お客さんにocx等は入れたくないといわれて困ってます。
>>974
GetSaveFileName
976974:03/03/30 15:26
>>975
ありがとうございます。

それって、comdlg32.dllですよね?

APIビューアで拾った定義をそのまま貼ったんですが、
全然動かないんですよ。
vbsだとasとか使えなくていつになってもエラーが消えないんです。

もしよかったら使い方のサンプルとかないでしょうか。
977974:03/03/30 15:30
と思ったら、VBSではDeclare使えないじゃないですか。

どーしよう・・・。
>977
無理。開発環境Orフォームありじゃなきゃ、あのダイアログは出せない。
ActiveX作ってOCXじゃありません。って言い張るのがベストとは言わんがベター。
>>976-977
なんか悪いことしちゃったね。ごめん。
(VBは知ってるが、VBSはほとんど知らないもんで・・・)
980974:03/03/30 17:22
当たり前の質問かもしれませんが、
VBで作ったActiveXのDLLって、

VBランタイムがなきゃ動かないですよね?
>>980
うん。余計酷くなるね…
ある程度 C か C++ がわかるなら、BCC でも拾ってくれば?
コモンダイアログのサンプルも Web に落ちてるでしょ。
>>973
情報Thanks!
やっぱり翻訳する関数を自作するしかないのかなぁ・・・・
984デフォルトの名無しさん:03/03/30 19:32
逆コンパイルってどうやるの?
985デフォルトの名無しさん:03/03/30 19:51
>>984
時間を逆回転させる
>980
ttp://www.seraphyware.jp/dev/prod/seraphyscripttools/
ttp://csx.jp/~tsuchiya/
コモンダイアログを出現させることの出来る、VB製でないCOMラッパー。
987デフォルトの名無しさん:03/03/30 23:14
Picture1に画像を読み込ませたいんですが、コードを以下のようにしたんです。

Pricate Sub Form_Lond()
Picture1.Picture = LoadPicture("画像1.gif")
End Sub

でもエラーが出てしまうんです。

LoadPicture("画像1.gif")のところを
LoadPicture("c:\windows\デスクトップ\画像1.gif")
みたいに入れたら上手くいくんですが、はじめに書いたような方法で
表示する方法は無いのでしょうか?
おしえてください
>>987
ChDir
989デフォルトの名無しさん:03/03/31 08:46
あるHPのハイパーリンク(そのページにあるもの全て)だけ
を何か変数に入れて表示したいのですが、
どのようなコードを書けばいいのでしょうか?
httpを使ってhtmlを取得。
htmlを解析してハイパーリンク先とその文字列を取得。
それを変数に代入。
adodbを使ってデータベース一覧させたいのですが
どうすればいいですか
テーブル一覧とフィールド一覧はできたけど
データベース一覧だけできないので誰か教えてください
埋め埋め
埋め埋め埋め
生き埋め 
(*´д`*)アハァ… VB初心者質問スレ Part23
http://pc2.2ch.net/test/read.cgi/tech/1047743187/l50
ume
梅さん
ぬめり
しっぽり濡れて
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。