VBプログラマ質問スレ(6.0以前) Part44
1 :
デフォルトの名無しさん :
2005/10/25(火) 18:14:17
その現象が再現できる最小のコードを
>>前スレ993 えー、 >でもNetwork Addressってどこから出てきたんだろ? これはネットから拾ってきたそのままです。 MSDEが入ってるマシンで >"Network Address=~"を削除して、"Data Source=データベースサーバー名"を入れるといい。 をやってみましたが、つながりませんでした。 リモートはいわずもがな。 で、 Dim strSQL As String Dim ConStr As String Dim Rs As New ADODB.Recordset Dim Cn As New ADODB.Connection ConStr = "Provider=SQLOLEDB.1;Password=test;Persist Security Info=True;User ID=test;Initial Catalog=testdb001" Cn.Open ConStr Debug.Print ConStr strSQL = Text1.Text Cn.Close だと、 ローカルマシンだとつながります。 リモートはつながりません(まぁ当然でしょうが) ConStr = "Provider=SQLOLEDB.1;Password=test;Persist Security Info=True;User ID=test;Initial Catalog=testdb001;Data Source=192.168.0.28" としてもリモートからはだめでした。
ファイアウォールのせいじゃね?
ファイアーウォールは使っておりません。
>>5 すみません、VBで書こうと思ったのですが、再現できませんでした。
その代わり、ExcelのVBAでは再現しました。
前に見たのも、もしかするとVBAだったかもしれません。
新規ブックを作成し、Sheet3にImageコントロールを貼り付けます。
Sheet1を表示した状態で、VBEditorを開き、
Sheet2に
Private Sub Worksheet_Activate()
Sheet3.PrintPreview
End Sub
Sheet3に
Private Sub Worksheet_Activate()
Image1.Visible = False
End Sub
を書き、Sheet2を開きます。
Sheet3のActivateは走りますが、Image1のVisibleはTrueのままプレビューされます。
Image1.Visible = False にブレイクポイントを置いてもらえば、
全然効いていないのが分かります。
つーか、VBAだったらスレ違いですね・・・orz あー、でもやっぱり思い返せば、確かにVB6.0でも同じようなことが起こったんです。
>6 Data Source Windowsの管理ツール「データソース (ODBC)」にて「ユーザーDSN」や 「システムDSN」、「ファイルDSN」のどれかのタグにあるもの。 あらかじめ接続の為の設定をしてある物がデータソース。 この引数で指定するのはそれ。 IPアドレスでサーバーを指定するなら、「Data Source」の記述を削除して 「Server=192.168.0.1」とすると良い。 なお、この場合、SQL Serverは「既定のインスタンス」で作成された物でないと 接続できない。 既定のインスタンスで無い場合は、「Server=192.168.0.1\インスタンス名」で 接続できると思うが未確認。 MSDEなら、通常は「既定のインスタンス」だと思うけども。 なお、「Server」が受け付ける引数は、IPアドレスだけではなく、コンピューター名でも、 FQDNでも、ネットワーク上で名前解決が出来る名前なら何でも良い。
>>11 ConStr = "Provider=SQLOLEDB;Data Source=TOSHIBA-NOTE;Initial Catalog=testdb001; User ID=test;Password=test"
だとローカルだとつながるのですが、リモートはつながりません。
リンク先を自分なりに読んでみて
ConStr = "Provider=SQLOLEDB;Data Source=TOSHIBA-NOTE;Initial Catalog=testdb001; User ID=test;Password=test;catalog location=192.168.0.28"
としてみてもやはりだめでした。ローカルからはこれでも接続できましが、
エラーの内容が「SQLサーバーがないかアクセスが拒否された」
から「接続文字列の属性がおかしい」に変わりました
アイコンにポインタおくと
実行中 - \\TOSHIBA-NOTE - MSSQLSERVER
と出ています。
この期に及んでまだVB6って散り際が悪すぎるな、なんて思ってしまう俺は MSの掌で踊らされてるのかな。 実際今現在VB6で何も問題ない(?)わけだし 次期OSでも.NET Frameworkはネイティブにならんようだし。
しかし次期OSでVB6のアプリが動くとも限らない。 # 詳細は知らんけど
16 :
6 :2005/10/26(水) 00:05:47
>>12 あ、すみません、見逃しておりました。
明日また試してみようと思います。
そもそもそんなうん百Mなテキストデータなんか使うなよ・・・
18 :
17 :2005/10/26(水) 00:15:15
超ゴバク・・・
>>15 とりあえずVistaは動作対象だよ
開発環境の方は一応動くけど保証対象外ってことらしい
>>13 >ConStr = "Provider=SQLOLEDB;Data Source=TOSHIBA-NOTE;Initial Catalog=testdb001; User ID=test;Password=test"
接続文字列はこれであってる。
そもそもリモートのMSDEに接続できるのか確認した方がいいね。
まずはローカル側、リモート側の環境(OS、VB、MSDE、MDACのバージョンとSP)を書いてよ。
MDACのバージョンを見るにはこれを使うといいよ。
ttp://homepage2.nifty.com/digitalcraft/mdacvc/ 当然pingは通っていて、エクスプローラで相手のPCが見えるよね?
ローカル側のPCにもMSDEを入れてるなら、コマンドプロンプトで次のように入力してみて。
C:\>osql -S TOSHIBA-NOTE -U test
パスワード : test
1> use testdb001
2> select * from test
3> go
ローカル側のPCにMSDEを入れてないなら、ODBCデータソースを作って接続テストしてみて。
コントロールパネル→管理ツール→データソース(ODBC)で「ODBCデータソースアドミニストレータ」を開き、
「ユーザーDSN」に「追加」。
ドライバ:SQL Server
データソースの名前:おまかせ
SQL Server サーバー名:TOSHIBA-NOTE
「ユーザーが入力するSQL Server用のログインIDとパスワードを使う」を選択
ユーザー名、パスワード、既定のデータベースを変更する。
他はデフォルトでOK。
>>12 少なくともプロバイダがSQLOLEDBのときはサーバを指定するのにData Sourceを
使用しても大丈夫だよ。
*.udlが作成する文字列もData Sourceを使ってる。
もちろんIPアドレスでも、コンピュータ名でもおけ。
23 :
6 :2005/10/26(水) 10:52:02
>>12 Server=192.168.0.1\TOSHIBANOTE
Server=192.168.0.1
どちらでも接続できませんでした。
>>21 変な表現で申し訳ないのですが
MSDEが入ってるほう(TOSHIBA-NOTE)をローカルと表現しておりました。
お互いにpingは通ります。
リモートと表現しているほうにはMSDEは入っておりません。
リモート側へのODBCデータソースの追加は
データソースの名前[test]、SQL Server サーバー名[TOSHIBA-NOTE]、ID[test]パスワード[test]
を入力して[次へ]をクリックすると、接続エラーが発生して作成できませんでした。
環境は、
ローカル側
OS:W2KSP4
VB6SP6
MSDE:8.00.760
MDAC:2.71.9040.2
リモート側
OS:XPSP2
VB6SP6
MSDE:nothing
MDAC:2.81.1117.0
です。
ODBCデータソースの追加については、いろいろ試してみようと思います。
24 :
6 :2005/10/26(水) 13:50:38
[解決]
>>前スレ993
>>11 ,12,21,22
接続文字は
Provider=SQLOLEDB.1;Password=test;Persist Security Info=True;User ID=test;Initial Catalog=testdb001;Data Source=MSDE
でいけましたが、これだけではだめでした。
ttp://isobe.exblog.jp/i20 ここの真ん中より下にある記事に解決法が載っておりました。
アドバイスありがとうございます。これでがんばれます。
26 :
6 :2005/10/26(水) 16:51:06
時間作って読んでみようと思います。 便利なページがあるもんですね。
27 :
デフォルトの名無しさん :2005/10/26(水) 23:20:43
Winsockコントロールを使ってUDP通信しようと思ったのですが、 Winsock1.SendDataでメッセージを送ろうとすると、 Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim StrData As String Winsock1.GetData StrData ←ここでエラーが発生して、 実行時エラー"10054" リモート側から接続がリセットされます。 と出ます。 ポートの設定は問題無いと思います。 また、参考書のプログラムなのでソースの間違いも無いと思います。 向こうには、メッセージは届いていませんでした。 また、でたらめな相手のIPを指定するとエラーが出ないので、 一応接続しているのかな、なんて思ったりしています。 助けてください、お願いします。
28 :
デフォルトの名無しさん :2005/10/27(木) 00:13:15
29 :
デフォルトの名無しさん :2005/10/27(木) 09:13:10
openステートメントで質問です。VB5で作成しています。 ログを開いて解析するツールなのですが、時々ファイルが壊れているなどして エラーになってしまいます。 本来FreeFileで使えるファイル#を探すのですが、一本一本開いて 処理し、終わったらCloseするため、固定で#1を使用しています。 この時、エラーが発生してOn error Goto~ に処理が飛ばしたとき もし#1のファイルが開かれている状態だったらCloseするというコードを 作成したいのですが、可能でしょうか? 開かれているかどうかの判定方法があれば教えてください。
いきなりの質問で恐縮ですが。 Visual Basicでノベル形式のアドベンチャーゲーム作りたいのですが、 一文字ずつタイピングしていくように文字を表示するにはどのようにすればいいですか? またVBでゲームを作る上で参考になりそうなHPがあれば教えてください。 お願いします。
>>29 エラーナンバー調べれば?
>>30 そのまま一文字ずつ描画すればいい
ていうかゲ製作板行け
32 :
デフォルトの名無しさん :2005/10/27(木) 14:12:08
大変基本的なことで、すいません。 VBのコードで小数点の切り上げの処理はどのようにしたらいいんでしょうか? intやfixは理解できたのですが、切り上げの関数コードがわかりません。 VBって切り上げって出来ないのでしょうか?
切り上げできるよ 切り上げをする関数は無いがな
>>32 切り上げなんてintして+1すりゃええだけじゃん
首の上に乗っかってるデカブツは飾りか?
round
なるほど、1.0を小数第一位で切り上げると2.0になるのか なかなか勉強になりますな
そりゃあ切り上げだからな
だれか頼むといてくれ。[ ]に入るやつ考えて。あたえられた文字を暗号化するプログラム。 Const Table = "QWERTYUIOPASDFGHJKLZXCVBNM?" Private Sub Command1_Click() ango = Text1.Text decode = "" n = Len(ango) For i = 1 To n p = Mid(ango, i, 1) If [ ] Then Index = [ ] Else Index = 26 End If decode = decode + Mid(Table, Index + 1, 1) Next i Text2.Text = decode End Sub Private Sub Form_Load() Text1.Text = "" Text2.Text = "" End Sub
まぁがんばれや
40 :
デフォルトの名無しさん :2005/10/27(木) 15:40:01
32です。 小数点第1を切り上げて、変数をlong型にしたいのですが int()+1だと皆切り上がってしまうので,だめなんです。 小数点がでる場合のみ、皆切り上げしたいのですが・・・ dim x dim y as long x=textbox1 y=x * 1.25 if y mod 1 <>0 then y=y+1 end if って、猿頭でがんばって見たのですが、だめでした。
41 :
デフォルトの名無しさん :2005/10/27(木) 15:44:05
修正です。間違えました。 dim x as long dim y x=textbox1 y=x * 1.25 if y mod 1 <>0 then y=int(y+1) end if
+0.9も思いつかん頭じゃ何考えても駄目だろうな
43 :
デフォルトの名無しさん :2005/10/27(木) 16:00:41
+0.9ですか? int()+0.9ですか? 馬鹿だからわからないです・・・
じゃあわかるまで頑張ってください
>>43 貴方が馬鹿なのは貴方の親のせいなので両親に聞いてください
46 :
デフォルトの名無しさん :2005/10/27(木) 16:38:22
43です。皆様は辛口っすね。 でも、なんとかおかげでわかりました。 42さん、すげーなぁ~ 0.9かぁ~
>>42 なるほど、1.05を小数第一位で切り上げると1.0になるのか
なかなか勉強になりますな
つーか、加数は使用する小数桁によって変わるだろ
対象数値が小数第二位までなら0.999を足さないと
本来なら0.99でも良いはずだけど、小数演算誤差で1.01+0.99は
2にならず1.99999...になるからな
別に0.999ではなく0.991でも大丈夫だけどね
>>47 小数第一位なら1.0だろ
小数点以下全部ならしらねぇがな
はいはい、もうやめようね
もうこのスレ要らない気がしてきた
53 :
デフォルトの名無しさん :2005/10/27(木) 17:32:25
String型の一次元配列から、任意の文字列に一致するものがあるかどうかを高速に調べる方法を教えてください。 ループ回して1つずつ比較するのは遅いし、Filter関数では一致ではなく含むものが抽出され さらにそれに対してループで比較しなくちゃなりません。 どうか「高速」に「一致」が有るかどうかを調べる方法をご教示ください。 文字列は英数記号で文字数、要素数ともに不定です。
>>53 JoinしてからInStrとかダメかね?
ループよりマシだろ
57 :
54 :2005/10/27(木) 18:44:12
うん、俺の取り消しで('A`)
配列でなくてScripting.Dictionary使っちゃあかんのかね
>>32 意地悪で任意のケタで切り捨てするコード書いてみたw
Public Function RoundDown(X As Double, Digit As Integer) As Double
If Digit < 1 Then
RoundDown = X
Else
Dim RounededX As Double
RounededX = Math.Round(X, Digit)
If RounededX <= X Then
RoundDown = RounededX
Else
Dim LeastSignificant As Double
LeastSignificant = 10 ^ (-1 * (Digit + 1))
RoundDown = Math.Round((X - LeastSignificant * 5), Digit)
End If
End If
End Function
一見無駄なIF(特に内側の)は安全のため。本当に無駄かどうかは実際やってみないとわからん。
>>53 配列を検索するのに高速な方法も糞もないでしょ。
普通にループで回す以上に高速な方法なんてありえん。
というか、どこの世界にわざわざ遅くなるような要素を仕込む馬鹿なコンパイラがいるかね。
そういうの高速にやるにはデータ構造を変えるしかないんじゃないの?
アルゴリズムの教科書には大体載ってるよそういう話。
61 :
デフォルトの名無しさん :2005/10/27(木) 19:11:29
BASIC言語について気になる事があるのですが 該当スレが分からず、ここに来ました ここで質問させていただいてもよろしいでしょうか ちなみに携帯のみの環境ですので 新しくBASICスレを立てるのは僕には無理です
>>61 すれ立てるまでもない質問はすれ立てるまでもない質問のスレで
>>60 まあ、Joinして新しく領域作成する処理は遅いし、それに加え元の処理が1句ごとシフトして比較なのに対し、
たぶんだけどInStrは1文字ごとシフトして比較という処理なわけだから、メモリアクセスと計算回数からいっても、
JoinでInStrは速いとは思えない。
ソートしてゴニョゴニョか先頭文字で木を作ってからゴニョゴニョってのが無難だと思う。
サーチ用のキャッシュ作ってもいいという前提だけど。
ケース倍ケースだけど、DB使えたら使うなぁ
65 :
デフォルトの名無しさん :2005/10/27(木) 21:36:01
学校で使用しているコンピュータの教科書(16年改訂)に 各主要言語の特徴が記載されておったのですが BASIC言語の欄に「現在、世界中で最も使用されているコンピュータ言語」 なる記述がありました VBを使用してられる皆様なら、BASICに精通されている方も多いと思います そこで質問です 本当に 現在 最も使用されている言語はBASIC なのでしょうか 私の中では すでに終了している言語なのですが。
BASICの派生も合わせれば、今でも一番使われてるだろうな
>>65 あなたが学生であれば、先生に聞いてください
あなたが先生であれば、出版社に聞いてください
あなたが出版社であれば、著者に聞いてください
あなたが著者であれば、へそ噛んでください
まあネタや釣りにあえて釣られるってのは有りだと思うが、 こんな笑いもアイロニーも何にもないネタに乗っかる奴の気が知れない。 ありていに言えば馬鹿じゃないの。
BASICをVB置き換えて考えれば、業務アプリ開発ではかなり高いシェアを誇る イトーヨーカドー、ローソンのレジ会計・JRの定期発行期(みどりの窓口で係員がたたいてるヤツ)は VBで作られているんだって。 つまりVBは最高なんだよw
>>68 いや、残念ながらネタじゃない
まだ疑うのなら 明日書名、著者名、ページ数を書き込んでも良いぞ
まぁ、VBAなんて派生もあるからな VBAまで含めりゃ、ACCESSやEXCELで作ったシステムでも使われてるからな
-Int(-number)
世界中で使われているBASICの半分はExcelVBAです
エクスプローラから「マイドキュメント」を適当なコントロールにドラッグアンドドロップすると, OLEDragOverなどに引数で送られてくるDataObjectやMSComctlLib.DataObjectに何が入っているか分からない状態です。 どうすれば「マイドキュメント」であると認識できるでしょうか。 他のファイルと同様に処理すると、ピクチャーボックスに入れた場合は「ファイルが見つかりません。」、 treeviewに入れた場合はと「データの形式が一致しません。」と出ます msgboxなどで中身の何かを見ようとすると「データの形式が一致しません。」と出ます。
76 :
予防線 :2005/10/28(金) 14:29:28
**質問者の方へ** 「○○するための具体的な方法」を知りたいときに、 「○○する方法はありますか?」という感じで謙虚に質問すると、 「ある」としか回答してくれません。 質問者のあなたにとっては、あるかどうかすら分からないことについて しょっぱなから「○○するにはどうしたらよいですか?」と、あることを 前提に質問するのはぶしつけに感じるかもしれませんが、 一部の回答者は、質問者の意図を推測するような余計なことはせず、 コンピュータのように言葉を文字通りに理解しますので、「ありますか?」 という質問に「ある」とだけ回答します。 具体的な方法を知りたいときは、「具体的にはどうしたらよいか」という フレーズを質問に含めるようにしてください。お手数をおかけします。
>>76 以前「ある」とだけ回答されて途方に暮れた人か。可哀想に。
「~する方法ありますか? あるならば、その方法を教えて頂きたいのですが」 謙虚じゃないのか?この聞き方
「具体的な方法を」と聞いたところで、 ここには具体的な方法は知らないけど答えたいってヘボい奴が多いから、 回答した奴自身が必死でググって見つけたキーワードを出して 「あとはググれ」とか言われるのがオチだぞ 「具体的な方法」を聞いたところで「具体的な方法」を示せる奴なんてほとんど居ない 俺は解らない場合は無理に答えたり罵倒したりしないで放置するけどな
具体的な方法教えてたらソース書くのと同じじゃん。 方向性を示して、キーになる技術提示して、あとはぐぐれで十分。
> 具体的な方法教えてたらソース書くのと同じじゃん。 答えを求めて来てる奴に、答え(ソース)を示して何が悪い? ここは勉強会場じゃないんだから、答えだけ教えるのは質問者の為にならないなんてのは 具体的な答えを示すだけの知識がない奴の言い訳。 どこまでの回答で「じゅうぶん」かは、回答者が決める事じゃない。
83 :
デフォルトの名無しさん :2005/10/28(金) 17:18:00
自分の欲しい回答が得られないからと言って粘着しまくるのはどうかと思うがね
>>82 どこまで教えるかはこちらの自由。
答えを出したい人もご自由にどうぞ。
85 :
デフォルトの名無しさん :2005/10/28(金) 17:24:41
具体的な方法教えてくれと言われたら 具体的な方法わかる奴が具体的な方法教えればいい ヒントクレと言われたら、ヒントをやればいい 求められたことに答えられる奴が答えて、答えられない奴は黙ってればいい 答えられないのは罪でも恥でも無いし、答えないのも自由だが 求められた内容と違うレス付けて、回答したつもりになってる自称上級者が一番ウザい
> 求められた内容と違うレス付けて、回答したつもりになってる自称上級者 ここはこれの巣窟ですが、何か?
自分の私怨を一般化し過ぎる馬鹿が多すぎるね。 質問者一般を擁護しようとか、回答者一般を擁護しようとか、もうアホかと。 馬鹿な質問者は叩いてよし、馬鹿な回答者は叩いてよし。 正解はこうでしょ。 まあしかしあえて俺の感想を言うと、 質問者の方に問題があるケースの方が圧倒的に多いんじゃないの。 テンプレをどうしろこうしろとか言ってる奴は、恐らく文章をなしていない 意味不明な質問をしたか、ろくに自助努力もしてないことミエミエの質問をして なじられたのを逆恨みしてる奴なんじゃないのw さらに言えば、スレの性質上馬鹿で幼稚な回答は大して害がなく単に無視すれば済むが、 (腐った奴ばかりじゃないんだから、まともな回答者の登場を待てばいいだけ) そもそも質問が馬鹿だったり意味不明だったりでは話にもならんよ。
88 :
デフォルトの名無しさん :2005/10/28(金) 18:49:59
簡単に出来そうなのに,出来ない事なのですが, 画像ファイルをdrag&dropで表示させるには どんなプログラムを書いたら良いのですか? winxp vb6.0です
89 :
デフォルトの名無しさん :2005/10/28(金) 18:57:15
>>88 まず、Drag&Dropして表示したい画像ファイルを表示する手段をお前は持っているか?
持っているか居ないかでその後の対応が変わる。
言ってる側から馬鹿な質問者かよ。 【回答】 そのぐらいのこと自分で調べてなんとか出来ない人はプログラムを書くべきではありません。
>>88 プロパティ:OLEDragMode=手動
イベント:OLEDragDrop and OLEDragOver
GetDropFileName()
あたりで何とかしてください。
色々分かってきたら
>>75 のことを教えてください。
92 :
デフォルトの名無しさん :2005/10/28(金) 19:15:34
>89 手段を持っていないので,その手段を手に入れたいのです. 別にそーゆー機能が欲しいのではなく, そーゆープログラムを書けるようになりたいのです. >90 すんません. 結構調べたけど出て来ないので・・・ 調べ方が悪いのかな・・・ >91 はい. ファイルネームを手に入れて, そのファイルを表示させるという手順は分かります. OLEDragDrop and OLEDragOver GetDropFileName() は試した事が無いので試して見ます.
>>88 MSDNに載っています
人に聞かなきゃ分からないレベルなら
ハードディスク領域をケチらないでキチンとインストールしましょう
・OLEDragDrop
・OLEDragOver
をMSDNで引いてます。
OLEDragDrop ・・・ ソース コンポーネントをターゲット コンポーネントにドロップし、
ソース コンポーネントでドロップ可能と判断されたときに発生します。
OLEDragOver ・・・ コンポーネントがほかのコンポーネント上にドラッグされたときに発生します。
と載っています。
ドロップ操作は OLEDragDrop で処理すればいいかと予想つきます。
画像ファイルを表示させたいなら、ドロップされたファイルを取得できればOKです。次に OLEDragDrop の引数を見てみます。ファイルのパスはStringなので String型の引数を探します。でも String型の引数はありません。
じゃぁ無理だ 諦める前に DataObject という見た事ない型に注目してみます。DataObjectって名前で、いかにもドロップされたデータっぽいではあ~りませんか。今度は DataObject をMSDNで引いてみます。
DataObjectはオブジェクトであります。では次にメンバーを見てみます。Filesっていうプロパティがありました。これがドロップされたファイルであるなと仮定します。
さらに調べると「Files コレクションを参照してファイル名の一覧を取得できます。」ってあります。Filesはコレクションである事も分かります
strFile = DataObject.Files(1)
で解決です。
チョッとは自分で調べようね MSDN に載ってなかったら ググるなりココで聞けばいい。調べよう。マジで調べよう。
ここには本当に中の下レベルばかりが集まってるんだな。 俺も同じレベルだから非難は出来ないけど、 上の下以上のレベルの奴が居ないってのも悲しいな。
.NetやJavaに移ってしまったんだからしょうがないじゃないか
97 :
デフォルトの名無しさん :2005/10/28(金) 20:44:02
>93 ダメだ・・・分からない・・・ ってか、余計分からない・・・ drag&dropしたら,ファイル名表示させる事は出来たのになー
>>97 え?もしかして画像の表示方法が分からないのか?
strFile = DataObject.Files(1)
Set Picture1.Picture = LoadPicture(strFile)
VB6ではPNG読めないから注意してね
>>98 ×VB6ではPNG読めない
○VB6のLoadPicture関数ではPNG読めない
100 :
デフォルトの名無しさん :2005/10/29(土) 01:08:17
タスクトレイに表示したプログラムのアイコンを、 キー入力を監視して、リアルタイムに変更したいのですが、 アイコンにマウスポインタを移さないと、変更されません。 バックグラウンドでも、アイコンを変更できるようにするには、 どうすればいいのでしょうか? ちなみに作っているのは、キーボードのLEDをタスクトレイに表示するものです。
103 :
デフォルトの名無しさん :2005/10/29(土) 17:39:50
vb6+webbrowserでformを自動でsubmitするようなものを 作っているのですが、どうもうまくいきません。 いろいろ調べて Dim AForms As Variant For Each AForms In WebBrowser1.Document.Forms If AForms.Name = "FORM1" Then AForms.submit Exit Sub End If Next というように処理をしてうまくいくページもありますが、 アクセスが拒否されました とエラーになってしまうページがあります。 エラーになるページのform部分は <form action="/xxx" method="GET" name="FORM1" target="_top" onsubmit="return fnc001(this)"> <input type="hidden" name="aa" value="aaa"> <input type="hidden" name="bb" value="bbb"> <input type="text" name="cc" size="46" value=" maxlength="256"> <input type="submit" value="開始"> </form> というふうになっています。 直接submitをクリックするようにしても同じエラーが出てしまいます。 どのようにすればうまくいくのかご教授お願いします。
104 :
100 :2005/10/29(土) 21:34:37
とりあえずタイマーイベントのソースです。 タイマーの間隔は、500ミリ秒です。 キーボードの状態をチェックするために、Win32api使っています。 Private Sub Timer1_Timer() Dim keys(0 To 255) As Byte Dim IconSwitch As Byte 'Ledの8種類の状態をいれる(0~7) < 一部省略> 'アイコン変更 udtNotifyIconData.hIcon = Image1(IconSwitch).Picture Call Shell_NotifyIcon(NIM_MODIFY, udtNotifyIconData) End Sub これを、他のプログラムが動作しているときでも、 LEDが変更になるようにしたのですが、 どうすればいいでしょうか?
プロセス間通信で文字列を送りたい。 方法の一つにWM_SETTEXT を TextBox_Change で受ける という方法があるということまでは分かった。 すると、FindWindowでウィンドウハンドルを探すなりし、 その後、FindWindowExでTextBoxを探すのではないかと考えた。 しかし、FindWindowExでTextBoxを探す方法が分からない。 どなたかご教授いただけませんか。
>>105 VB6のTextBoxのクラス名は「ThunderRT6TextBox」だからコレで探す。
VB以外のTextBoxのクラス名は「Edit」。ってか言語で違う。
複数のTextBoxがある場合は子ウィンドウを列挙して一つずつ。
VB6で作ったアプリ同士の通信なら デフォルトでDDE使えるから こっちの方がスマート。
>>106 ありがとうございます。いけそうな気がします。
DDEは.netではサポートしていないそうで、
すこしでも将来移植が簡単なように考えてとの思いです。
関連する別の質問ですが、
子プロセスで処理した結果(文字列)を親プロセスに返す
ようなものを作りたいのですが、
このとき親プロセスのウィンドウハンドルを取得する方法などあるのでしょうか。
親と子は同じVBの実行ファイルです。
#質問が続いて申し訳ないので
#このあたりが調べられるサイトなどあればお知らせ下さい。
GlobalAddAtom GlobalGetAtomName
>>108 ありがとうございます。
ちょっと調べたところでは
atomに文字列をセットしてIDをもらう
IDでatomにセットした文字列を引き出す
こんな感じですね。
ただ、IDを引き渡す方法がいって
これ自体がプロセス間で文字列をやり取りすることなので
atomを使うと何がうれしいかは私の能力では分かりかねました。
これは何がうれしいのでしょう?
で、この件は分からないまま、
親プロセスが子プロセスを産むときに引数で親のwhndを渡してあげて
うまく会話させるということで解決しようかと思い始めています。
しかし、心配なところがあります。
想定している処理は複数の子が親にメッセージを返し、
親はそのメッセージを処理するというようなものですが、
親は一人の子のメッセージを処理している間に別の子のメッセージが届いて
処理が割り込まれてしまわないかです。
特にTextBox_Changeで受けるようなときでも問題ないのでしょうか。
キューに並ぶならうれしいところですが。
どなたかご存知の方いたらお教え下さい。
Windows2000で VB6 SP5 を使っています。 フォーム内のどこにフォーカスがあってもEscapeキーでソフトを終了させたいのですが やり方がわかりません Public Sub textbox_keydown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyEscape Then End End If End Sub 今の所こんな感じで、特定のコントロールにフォーカスがあるときだけ終了できるんですが textbox の所を Form1 に直すとか単純な話ではなさそうなので、困っています
>>111 うまくできました、ありがとうございます
ts
114 :
デフォルトの名無しさん :2005/10/31(月) 08:56:50
WindowsNT(SP6a)でVB5.0(SP3)+EXCEL97(サービスリリース対応)の 組み合わせで安定してプログラムの作成は行えるでしょうか。 今まではWindowsNT(SP3)+VB5.0(SP3)+EXCEL97(サービスリリース対応)を 使用していましたがハードウェアの都合でWindowsNT(SP6a)を使う必要が 生じました。 どなたかご教授下さいますよう宜しくお願い致します。
大昔(前世紀)の日経オープンシステムにその手の特集記事があったはず。 入手方法は自分で考えてね。
116 :
デフォルトの名無しさん :2005/10/31(月) 11:25:25
>115 ありがとうございます。 調べてみます。 他にも情報がありましたらご教授下さいますよう宜しくお願い致します。
つーか、えらく古い組み合わせだな
118 :
デフォルトの名無しさん :2005/10/31(月) 13:36:57
教えてください。 ssTabのタブの順番を入れ替える。 [ A ] [ B ] [ C ] ↓ [ A ] [ C ] [ D ]
だが断る
>>118 SSTabでは出来ない
TabStripでは [ C ] を削除して [ A ] の後に入れる
それにSSTabは Microsoftは認識しているけど放置されているバグが多いし
Windows・サービスパックのバージョンによっては発生しないイベント・作動いないプロパティとかあるし
だからあれほどSSTabは使うなって言ったのに…
121 :
118 :2005/10/31(月) 16:19:37
>>118 ありがとうございました。
「TabStrip」勉強してみます。
123 :
デフォルトの名無しさん :2005/11/01(火) 11:45:35
> susieに付いてるSpi_api.txtを読んではみたのですが、 > サッパリだったので。。。 つまり、おまえが手を出すのはまだ早いってことだ。
ソース上で指定してるやん・・・・・
126 :
デフォルトの名無しさん :2005/11/01(火) 12:59:37
>122 ご指摘ありがとうございます。
たぶん
>>123 の言うプラグインの設定って、
ifjpgxならDCT演算の方法とか、プラグイン自体の立ち上げをvbからコールする方法は?
って意味なんジャマイカ?
俺は知らんが。
>>123 あぁ 何が言いたいのか俺には分かる
IFJPEGX.SPIの設定を自分でやりたいって事だろ
残念ながら設定を自分でやる事は出来んない(取得も出来ない)
設定ダイアログは IFJPEGX.SPI の中の ConfigurationDlg( )API を使って呼び出せるよ
定義 Declare Function ConfigurationDlg Lib "IFJPEGX.SPI" (ByVal parent As Long, ByVal fnc As Long) As Long
どうしても自分でやりたいなら「HKEY_CURRENT_USER\Software\Takechin\Susie\Plug-in\IfjpegX」以下をいじれ
>サッパリだったので。。。
Spi_api.txt読めない程度なら手を引いた方が良い領域です
あなたにはまだ早過ぎます マジ早過ぎ メモリクラッシュコード書かないようにな
VBが消える前に間に合うかな
130 :
デフォルトの名無しさん :2005/11/01(火) 23:56:28
ファイルのコピーで質問があります。 ファイル名に"#"が入っているとうまくコピーが できず、困っています。 "#"がファイル名に入っていてもコピーする にはどうすればよいのでしょうか? --------------------------------------- dir1 = "c:\AAA\" dir2 = "c:\BBB\" fname = "file#.txt" Filecopy dir1 & fname , dir2 & fname ↑ コピーされません。 ファイル名から#をとるとうまくいきます。 ---------------------------------------
#なんぞファイル名に使うなカス
132 :
デフォルトの名無しさん :2005/11/02(水) 11:24:30
VC++用に作成されたDLLを呼び出したいんだけどうまくいきません int testSub(LPCTSTR p1, WORD p2, WORD p3, WORD P4[3]) ; 上記の関数を呼び出すにはVBのDeclare文はどう宣言すればよいのでしょうか? 下記のように宣言したんですが「DLLが正しく呼び出せません」ってエラーになります ↓こんなふうに宣言して Declare Function testSub Lib "testSub.dll" Alias "?testSub@@YAHPBDGGQAG@Z" ( _ ByVal p1 As String, _ ByVal p2 As Long, _ ByVal p3 As Long, _ p4() As Long _ ) As Long ↓こんなふうに呼んでみたのですが・・・ p1="abc" p2=1 p3=2 p4(0)=0 p4(1)=0 p4(2)=0 ret = testSub(p1, p2, p3, p4()) 助けてください。宜しくお願い致します。
>>132 >int testSub(LPCTSTR p1, WORD p2, WORD p3, WORD P4[3]) ;
~~~~~~ ~~~~~~ ~~~~~~
>ByVal p2 As Long, _
↑なんでやねん
134 :
132 :2005/11/02(水) 11:56:11
>>133 ありがとうございます
WORDは、Integer なんですね
でも結果は同じですね_| ̄|○
>>133 多分配列の渡し方が違う?
配列の場合は先頭のポインタだけ分かってればいいから
ByVal p1 As String, ByVal p2 As Integer, ByVal p3 As Integer, p4 As Integer
ret = testSub(p1, p2, p3, p4(0))
か
ByVal p1 As String, ByVal p2 As Integer, ByVal p3 As Integer, ByVal p4 As Long
ret = testSub(p1, p2, p3, VarPtr(p4(0)))
まぁ試してないから分からんけど
137 :
132 :2005/11/02(水) 12:28:01
>>135 ありがとうございます
2つとも試しましたが 。・゚・(ノД`)・゚・。ウエエェェン 結果は同じでした
>>132 VBのDeclare文はWINAPI(FAR PASCAL)タイプの関数を呼び出すことを想定している。
C/C++形式の関数だとスタックが逆になるうえにスタックの後片付けが呼び出し側になるため呼び出せない。
C側で__stdcallのstubを作れないのん? というかDLLなら普通__stdcallではないのだろうか
140 :
132 :2005/11/02(水) 13:27:01
>>138 >>139 ありがとうございます
WINAPI(FAR PASCAL)タイプの関数をひとつ間に入れて
呼び出してみます。
141 :
デフォルトの名無しさん :2005/11/02(水) 16:10:55
教えてください。 文字列から特定の文字を検索する方法は、キーワードは1つ ですが、キーワードを複数にして、判定させたい。 こんなことができたらなー flg=InStr(文字列, キーワード1,キーワード2)
InStr*InStrでいいじゃん どっちか、若しくはどっちも含まれてなければ*0=0で結果はFalse どっちも含まれてれば1以上が返るのでTrue 一発でやりたければ正規表現でも使うか関数化するかしな
143 :
デフォルトの名無しさん :2005/11/02(水) 17:24:00
Excel2000にてVBAでコードを書いてて、このBOOKを保存→終了→起動とやった所、 二度と開かなくなりました。 「問題が発生したため、Microsoft Excel for Windows を終了します。 ご不便をおかけして申し訳ありません。」 これが毎回出ます。 VBAコードだけでもどうしてもサルベージしたいんですが、何か案はありますでしょうか? C:\Documents and Settings\SystemDev\Application Data\Microsoft\Excel\の 中のファイルを消す方法は試しましたが、症状変わらずでした。
144 :
デフォルトの名無しさん :2005/11/02(水) 17:27:31
>>143 スレ違い
VBAスレで効くべきだが、Excelは単独で開けるのかどうかと他のユーザーでそのブックが開けるのかも追記しといた方が良いぞ
145 :
143 :2005/11/02(水) 17:37:49
>>144 すみません、ただVBAプログラマ質問スレが見あたらなかったもので・・・
Excel自体は単独で開けます、そのBookだけがエラーで落ちます。
他のユーザ-及び他PCでも開けませんでした
ビジネスsoftのExcelスレなら何でもありだぞ。
バグ・不都合関係はダメっぽいぞ
148 :
デフォルトの名無しさん :2005/11/02(水) 21:44:01
・ ・ 上のような点と点を直線で結ぶのはLine命令ですぐできるんですが 曲線で結ぶにはどうすればよいでしょうか? 使用しているOSはXPで、VBのバージョンは6.0です。
>>148 点は地図のマークっぽいイメージでマークとマークの間を
曲線で繋ぎたいのです。
PolyBezierできにいらなきゃスプラインで色々調べる事
VBでエスケープシーケンスの表現ができないYO!
無いからな
155 :
143 :2005/11/03(木) 08:15:03
>>146 なるほど、そっち行って聞きます
どうもです
VB4で作ったプログラムのMOがひょっこりでてきまして、VB5で読もうと思ったら バイナリなので読めませんでした。 VB4をインストールすることなく変換あるいはテキスト化できる手段ってありますか?
>VB4をインストールすることなく変換あるいはテキスト化できる手段ってありますか? VB4をインストールしたってそんなことは出来ません。
ん?もしかして、.exe からソースを起こしたいって話? いや、まさかね…
>>158 そんな馬鹿なことあるわけないじゃないかwwwwwwww
>159 いやー、分からんぞ。こんな世の中じゃ ポイズン
つーか、バイナリって言ってんだから
>>158 が真実だろう
昔のBASICには中間コードのまま保存するバイナリ形式とテキストにして保存するアスキー形式があったな
ウヘヘヘヘヘヘヘヘヘヘヘ 釣れた釣れた(プゲラ
164 :
156 :2005/11/03(木) 20:43:25
出来上がりのexeぢゃなくソースがテキストじゃなくてバイナリ化されちゃってるんですけど・・・
156はつりだろ? 165,166見たいな事素で間違いえるヤシはいないって
VB2ならVB2インスコしてテキスト形式でエクスポートしる。 VB2以外バイナリ形式のソースは読めない。 圧縮なら解凍したらオケ。
VB6.0にて開発をしていますVB初心者です。 最小化ボタンの処理について伺いたいのですが 最小化ボタンを押したときウインドが画面左隅に最小化されてしまうんですが タスク?に格納するにはどのようにすればいいのでしょうか?
さらに質問すいません。 VBにてEXEからEXEを呼ぶことは 可能だと思いますが呼んだEXEが動いている間 呼出もとのEXEを表示できない(画面上)ように制御する ことは可能ですか?
> タスク?に格納するにはどのようにすればいいのでしょうか? 標準でタスクバーに格納されるはず 偶にそういう現象を見るが、変なコード書いたか環境のせいだろ システムがバグった時とか、全てのアプリがタスクバーに格納不可になったりするしな > ことは可能ですか? 可能です やり方は勉強しましょう
MDIにでもしてんじゃないの フォームのタイプを変に弄ったとか
回答ありがとうございます。 もう少し調べてみます・・・
>>169 ShowInTaskbar が False になってるから
>>170 外部EXEのプロセス情報が知りたい場合は CreateProcess( ) でEXEを起動すると幸せになれます
ってか、分からなければ 分からなければなりに タイマーでEXE監視とか 単純な手段も思い浮かばないのか?
もっと柔軟にアルゴリズムを考えられるように頭を訓練しましょう。
某理系板で質問したところ、この板に誘導されてしまい参上仕りました 以下のソースにより、擬似球体を描写しようとしているのですが 見えないはずの『向こう側の線』の判定をどのように扱えば分からず 困り果てております 『向こう側の線』を描写しない方法が分かればご教授下さい ↓ 拙ソース
Public PI,DK As Double Piblic R,K As Integer Function LOC_X(V1 As Integer, V2 As Integer)As Integer Dim X,Y As Double X = V1 * 15 * PI / 180 Y = V2 * 30 * PI / 180 LOC_X = R + Sin(X) * Sin(Y) * R End Function Function LOC_Y(V1 As Integer, V2 As Integer)As Integer Dim X,Y As Double X = V1 * 15 * PI / 180 Y = V2 * 30 * PI / 180 DK= K * PI /180 LOC_Y = R + Sin(X) * Cos(Y) * Sin(DK) * R - Cos(X) * Cos(DK) * R End Function '続きます ご勘弁
Private Sub MAIN() Dim I,J As Integer R = 200 '球半径 K = 20 '前傾角度 PI= 3.14159265358979 For I = 0 To 24 For J = 0 to 6 If (1) Then With ActiveSheet.Shapes .AddLine _ LOC_X(I+0,J+0),LOC_Y(I+0,J+0), _ LOC_X(I+0,J+1),LOC_Y(I+0,J+1) End With With ActiveSheet.Shapes .AddLine _ LOC_X(I+0,J+0),LOC_Y(I+0,J+0), _ LOC_X(I+1,J+0),LOC_Y(I+1,J+0) End With End If Next Next End Sub
もしくわ『R=0』とか
VB6.0だとDataTableに相当するもの存在するのでしょうか?
>>181 んなもん腐るほどあるが、
確認の出来ない情報を掲示板で聞くなよ
ここで嘘教えられたら損するのはおまえだぜ
技術的な話なら、確認もできるけどな
ってことで、goto 本屋
MSFLXGRD.OCXとか あのへんってインスコーラーに含めても大丈夫?
>>184 入れていいものは明記されてる
それ以外は駄目
>>184 えーとどこでしたっけ、そっけない.txtのファイルですよね確か?
187 :
デフォルトの名無しさん :2005/11/05(土) 01:51:51
VBから「ネットの切断」が出来るようにしたいのですが 何か言い方法はありませんか? AirHでダイヤルアップでプロバイダに接続しています。
188 :
187 :2005/11/05(土) 02:05:29
自己解決いたしました。 HangUp!!
>>175 簡単じゃない。「陰線消去」でぐぐれ。
最近は自前で描画しないので、説明サイトも少なくなったけど。
>>176 >Dim X,Y As Double
この書き方だとXはVariantになる。
ネタだと思って読み飛ばしていたけど
>>176-177 を実行できるようにいじって実際に動かしてみたら軽く感動した
解析しようにもSinとかCosとか、ありすぎてうまく理解できない
191 :
190 :2005/11/05(土) 07:50:52
逆質問で悪いが
>>177 の
>If(1)
って無駄じゃね?
超絶無駄だな
そこのIf文の条件式を変えて、質問内容の >見えないはずの『向こう側の線』の判定 に使うんだと思ってた
194 :
デフォルトの名無しさん :2005/11/05(土) 13:32:12
すいません、VB6でWMV等の動画に文字を挿入したり画像を挿入したりするツールを作成することってできるのでしょうか? ソースでもあればと検索してみたのですがさっぱりでてこなかったもので・・
出来ることは出来るけど、ソースそのものを探してるレベルじゃ無理
こにゃにゃちは VB6で作ったソフトをWEB公開しよーかなと製作中です でも同人ソフトっぽいっていうかグレーゾーン?な感じなので 匿名でうpしたいです 実行ファイルに個人情報が入っちゃうことありますか? パソコン所有者名、ログインユーザー名、VBのソフトの登録名、CPUのシリアルNo? コメント文も残るのかな? つうほうとかタイーホされないように対策とかあったら教えてください。
197 :
デフォルトの名無しさん :2005/11/05(土) 17:05:54
198 :
196 :2005/11/05(土) 17:17:25
>197 釣りじゃありませーん;; やはり、いけない事を聞いてしまったのでしょうか
ああ、何か変なもの作って配布したときに逮捕しやすいようにそういう情報を埋め込むようになってるんだよ。諦めれ。
200 :
196 :2005/11/05(土) 18:00:46
そうなのですかぁ。罠にかかるところでした。ありがとうございます。 でも、諦めたらそこで試合終了です とりあえずテキストでソースうpにします。親切な人が実行ファイル再うp してくれるだろうし。
>>196 逮捕されるような内容は作るな
やるんなら仲間内でコッソリやれ
こんな人の多い掲示板で聞くな
ちなみに
>>196 はIPで住所抜けるって信じているタイプ
警察から要請あれば抜けるだろ
つうか、アメリカはIPアドレスから住所を割り出すための要所要所のサイト間のping値のデータベースを既に構築済なので国までは特定できる
俺はアメリカ人だぜ!
206 :
デフォルトの名無しさん :2005/11/06(日) 17:09:55
vbの初心者用の本読んでたら, if drawflg then picture1.line endif って文が出てきたけど,if文の条件式って, drawflg=1 は省けるんですか? 省けるならどーゆー時に省けるんでしょうか?
false → 0 true → 0以外
209 :
デフォルトの名無しさん :2005/11/06(日) 17:25:44
true = -1
210 :
デフォルトの名無しさん :2005/11/06(日) 17:29:21
(条件式) and (真の場合の実行コード) や (条件式) or (偽の場合の実行コード) は使えますか?
よく覚えてないが、VBは両方実行するからAndalsoとかそんな感じのやつ使えば出来た気がする。 なんかそんな感じの。
213 :
212 :2005/11/06(日) 17:35:12
調べてみたらVB.NETの方だった。 ごっちゃになってた。スマン
>>211 >>210 はショートカット演算子の事を言いたいんでしょ。
VBはショートカット演算子ではないね。
糞コードの例 Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) If (MsgBox("終了しますか?", vbYesNo) = vbYes) _ And (MsgBox("本当に終了しますか?", vbYesNo) = vbYes) Then Cancel = False Else Cancel = True End If End Sub
すみません。 VBでフォーム間の変数の値のやりとりは 標準モジュールでグローバル変数を宣言して それを使用するしか方法はないんでしょうか? よくグローバル変数は使うべきではないと 一般にプログラムのコーディングについて言われていますが、 VBでは結構使用されているような気がします。 みなさんはどうされていますか? またスレ違いではありますが.NETではグローバル変数を 使用しないでフォーム間の値のやりとりができるのでしょうか?
普通はアレだな
ども今晩は。質問なんですが、テキストボックスのカーソルをiビームにしたんですけど、スクロールバーや、右クリックででる、メニューにもっていっても、iビームなんすよ(;´Д`)どしたらいんすかね。
>>216 >VBでは結構使用されているような気がします。
プログラマの意識が足りないから。
グローバル変数を使いたい時は その変数を含むクラスを作成して
そのクラスを参照するようにする
例えば
アプリケーションクラス
┃
┣━ フォームコレクションクラス
┃ ┃
┃ ┣━ データ入力フォーム
┃ ┣━ データ印刷フォーム
┃ ┗━ データ登録フォーム
┃
┗━ グローバル宣言クラス
と言った構成で 設計したら時 データ入力フォームからグローバル変数を参照する時は
データ入力フォーム.フォームコレクションクラス.アプリケーションクラス.グローバル宣言クラス.変数
と言うふうにオブジェクト参照でできる用になる。この方法だとグローバル変数は1つも使わないでプログラムが組める。
グローバル変数をアプリケーションが持つデータとして扱う感じ。
まぁVBではあまりこんな風にやらないけどね。
>>216 >使用しないでフォーム間の値のやりとりができるのでしょうか?
ない。あくまでも 組み方・設計。意識しない限りどんな言語使っても結果は同じ。
>フォーム間の値のやりとり
アプリケーションクラス
┃
┣━ フォームコレクションクラス
┃ ┃
┃ ┣━ データ入力フォーム
┃ ┣━ データ印刷フォーム
┃ ┣━ データ登録フォーム
┃ ┗━ フォーム間のデータやり取りクラス(コレクション階層に置くのは変か 勘弁してな)
┃
┗━ グローバル宣言クラス
俺だっからこうするかな…
あまりにも無知すぎて唖然としてしまいましたとさ しかも2連続w
www
>>219 正直、人に教えを垂れようって人間がこんなレベルじゃ。。
「グローバル宣言クラス」なんて絶対に必要ないし、
「フォームコレクションクラス 」こんなものも必要になるのはまず稀。
はっきり言って「策士策に溺れる」糞設計以外のなにものでもないね。
だいいち、糞設計は目を瞑るとしてこの質問者にそんなこと言って理解できるのかよ。
俺ならこう答えるね。
>>216 まずOOP的な考え方を勉強しましょう。
OOP的な考え方っていってもVBプログラマはコントロール操作するのに
意識せずに使っているのだから何も難しくない。
結論から言えば、他からアクセスしたい値はフォームのプロパティか
パブリックメンバにしましょう。
こういうビュー(フォーム)に直接プロパティを書いたりする設計は
よくないという人(言語マニアの学生さんに多い?)もいるが、よほど複雑な
アプリでもない限りこの方がむしろ直観的で簡単。
なんでグローバル変数使おうとするのなんでなんで?
225 :
206 :2005/11/07(月) 00:11:03
if文の中の条件式が boolean型の時ならなんとなく理解できますが、 integer型なのですけど・・・
226 :
212 :2005/11/07(月) 00:12:03
ヒント:文字列も数字も全て0と1で出来ている
>>225 「0」か「0以外」かってのがそんなに難しいか?
>>224 VB6のクラスはやや特種で、その中でもフォームオブジェクトはかなり特殊な位置にあるから
純粋にOOP風にしてしまうと余計にややこしくなる。
グローバル変数も計画的に使えば問題ない。正確には問題ない規模にプログラムを分割しておくことが大事だと思う。
>>228 また意味不明なことを言う。
VBのクラスが特殊だろうがなんだろうがグローバル変数なんてまず使わねえよ。
自分の理解不足や能力不足をVBのせいにしちゃダメだろ。
>>225 Cだと論理型が無くて整数型のゼロと非ゼロで代用。Javaは論理型は整数型との混用は不可、しっかり区別している。
VBはその中間で論理型は別にあるが整数型と互換性がある、そんな言語仕様なのよ。
>>230 純粋なオブジェクト指向というわけでないVBで、COMのためのクラスモジュールを無理にOO風に使うことや
共通モジュールとして正規に存在する機能を使わないことに意味があるか考えてみようというわけですよ。
OOの有用性はわかっているがそれなら.NETや他の言語を用いるべきで、
VB6はBASモジュールやグローバル変数を使う前提で旧来の構造化や変数のネーミングルールの範疇で
整然としたコーディングを目指すべきだと思う。
反論はあるだろうが流れと逆のことが言いたかったのですよ。
Form オブジェクトはNewなしで一つ目のインスタンスは自動生成されるわけだけど、必ずNewするぞという
ひとはどのくらいいるのかな。
VB.NETでMODULEをサポートすることの良し悪しの議論はあったな。
>>231 一応boolあるぜ?
BOOLじゃなくてboolな
どのみちメモリ上は数値だけどな
>>232 俺いつもSub MainからスタートしてNewしてたぜ
>>234 bool は C++から
>>235 俺はSub Main で Form1.Show 派
純粋なオブジェクト指向ってなに?
クラスベースは不純だな 値型も不純
239 :
デフォルトの名無しさん :2005/11/07(月) 12:22:52
VB6(SP6)のフォーム上でflash.ocxを使ってswfファイルを再生しています。 この際、flash部分を印刷するにはどうすればいいのでしょうか? また、どこを調べればよいのでしょうか? ご存知の方、ご教授下さい。
>>232 意味不明。書いてることが何一つグローバル変数を正当化する理由になってない。
だから自分が足らないのをVBのせいにするなって。
>共通モジュールとして正規に存在する機能を使わないことに意味があるか考えてみようというわけですよ。
それを言うなら単に過去の資産との互換性のためやOOPが理解できないPGの
サルベージの為に残されているレガシー機能をわざわ使う意味はあるのか、でしょ。
答えは明白。そんなものは全くない。
で、グローバル変数使わないようにするにはどうしたらいいの?
フォームのインスタンスが2つ以上必要になったとき、グローバル変数でデータのやり取りしているやつは
糞設計にならざるをえないから、普通にフォームにPublicメンバ宣言したほうがいいよね。
グローバル変数は無いほうがいいけど、使ってもいいか悪いかは語るのもマンドクセ
# 気軽に使ってもいいと言う人は再入等に意識を全く回さなかったりするからあまり関わりたくないね
VB6でOOPすると管理が煩雑になるから旧世代的な手法を使いたいっていうのは理解できる。
この辺りは言語設計が糞というより、VB6のIDEが悪いのだけれど。
# ActiveXで分割して管理するというのもできるけど吐き気がしますわ
>>241 フォーム間のデータのやり取りなら、Public変数かイニシャライザでも定義すればよろし。
アプリケーション全体に及ぶ話なら知らん。
田のコンポーネント名教えろや あれだ、クリックすると開いていろんな項目でてくるやつな
245 :
243 :2005/11/07(月) 13:37:33
>>244 出嶋?
クリックしたら、田が日になるやつだぜ?
何とかする方法ねぇの?
アレはダメ、コレは危険と批判するだけで、その理由や正しい手法は提示できない奴が多いな まあ、自分が無知だから突っ込んだ話を出せば自分が非難されるだけとわかってるのかな?
>>245 それを含むコンポーネントなら知ってるがな
まぁそんなに自虐するなよ
249 :
243 :2005/11/07(月) 14:18:02
TreeViewじゃないの?それ
まさか、それがわからなかったってことは無いだろ マじゃなくたって大抵名前は知ってるし
>>246 受け渡し用のデータオブジェクトを使う方法ならこんなとこか。
VBにはレガシーな機能が満載だから、存在する機能をなぜ使ったらいけないかを説明するのには苦労する。
レガシーな機能があることがVBの売りでもあるからなおさら。
■呼び出し側のフォーム
Dim DataObj As New 受け渡し用データクラス
Dim formPopup As New フォーム
DataObj.Data1 = 渡し
formPopup.SetData DataObj
formPopup.Show vbModal
もどり = DataObj.Data1
■呼び出される側のフォーム
Dim SaveDataObj As 受け渡し用データクラス
Public Sub SetData(ByRef DataObj As 受け渡し用データクラス)
Set SaveDataObj = DataObj
受け取り = SaveDataObj.Data1
End Sub
SaveDataObj.Data1 = 戻し
┐(゚~゚)┌
254 :
141 :2005/11/07(月) 15:57:03
142さん ありがとうございました。
フォームにpublic変数置いたら、 それはグローバル変数だ。と思っている奴がいそうな気がする。 VBのクラスが他の言語のクラスに比べて特殊だろうが、 クラスにプロパティを定義できる以上、 「クラスが特殊だからグローバルを使う」なんて結論にはならない。
256 :
デフォルトの名無しさん :2005/11/07(月) 19:28:43
PowerBuilderって簡単ですか? VB→Delphi→PBと来たのですが不安です。
257 :
デフォルトの名無しさん :2005/11/07(月) 19:41:28
test.exeと言うexeと、test.exe.manifestと言うファイルを作って、XPで実行すると フレームに囲まれたラジオボタン(オプションボタン)が真っ黒に描画されてしまいます。 他のコントロールにはちゃんとテーマが適応されています。 回避策があれば、教えて下さい。
話はそれるが、フォーム間のデータのやり取りで直接相手側のプロパティや公開メンバーにアクセスすると
フォーム間の依存性が固定されてしまう。
>>252 の用にデータオブジェクトを別に準備するのがいいと思うが
データオブジェクトの代わりに呼び出し元のフォームの参照を渡すのも手だろうか?
VBにImplementというインターフェイスもどきのステートメントがあったと思うがこれは使えるのかな。
>>257 そもそもVB6はビジュアルスタイルに対応してない
回避策はフレームを使わないことだ
>>258 フォームはクラスだよ? だから...
クラス間のデータのやり取りで直接相手側のプロパティや公開メンバーにアクセスすると
クラス間の依存性が固定されてしまう。
↑自分で言っていて何か変だと思わない?
これって全然問題ないよね。
フォーム内部のテキストボックスとかを外部から
直接アクセスするのはなんか気持ち悪いけどさ。
フォームはクラスだとコード見ただけで実感できるのは.NETからだけどな
実際はそんな違わないけどね、.NETのWindows Formと。 そりゃ細かい点はいろいろ違うが、OOP的に大きな違いといえるのは 引数付きのコンストラクタ作れることぐらいでしょ。 全然違うとかいって騒いでる人はVB6でもOOPしてなかった人なんじゃないの。
263 :
216 :2005/11/07(月) 22:35:47
返事が遅くなりましてすみません。
色々な見解があるみたいですね。
>>252 さんのようにクラスを作成するか、
>>223 さんのようにフォームにパブリックメンバを
宣言して、アクセスするかにしようかなと思います。
自分にも理解できるやり方ですので。
ところで、このようなVBのグロバール変数をしないで
コーディングするやり方を書いたホームページや
書籍はありますでしょうか?
VBの本やホームページでここらへんについて詳しく書いた物を読んだ
ことないのですが…
つーか基本解説はMSDNにあったと思うけど ないのか?w
VBのクラスは特殊って言うけど 何が特殊なの? 暗黙でインスタンスが生成されるフォームが特殊なのは分かるが… 継承出来ないから特殊なの? VBのクラスはオートメーション・COMを使用+作成(IDispatch派生)の為に用意されているにしても 一つクラスから複数のインスタンスを生成できるオブジェクト指向の仕様は 取りあえずクリアしているんだからクラスはもっと積極的に活用するべきだと思う チャンとやればデータを受け渡す為にグローバル変数なんて一切必要ないでしょ VBでOOPするくらいなら他の言語使えってヤツほどオブジェクト指向勉強したほうがいいと思うよ (こーゆーヤツは他言語でも変なの書くよ) 継承=オブジェクト指向 なんて勘違いしてるヤツいるだろ よく使う ListView TreeView TabStrip なんてオブジェクト指向そのまんまだよ 用意されてるモジュールだけオブジェクト指向でなんて何か変だよ お兄ちゃん
今 日付、時間、名前という3つの要素をもつType型のデータ型を作成しました。 これらのデータはユーザからランダムに入力されます。 最終的に日付と時間の昇順でソートしたいのですがVB6だとSORTのメソッドは 自作しないとだめなのでしょうか?継承とかして作るのはムリ?
そもそもCOM自体OOPじゃないのか?
愚痴ばっかりだなこのスレ・・
>>267 COMのオブジェクトモデルには実体継承が無い。
分散用のオブジェクトモデルで、あるのはインターフェイスのみ。このため包含と委譲が基本となる。
今はインターフェイス万歳が時流だからもしかしたらひょっとしたら時代を先取りしていたのかも知れない。
>>260 >フォームはクラスだよ? だから...
>>252 に対して、こういうことがしたいわけです。
■呼び出し側のフォーム
Impliments 受け渡し用データクラス
Dim formPopup As New フォーム
formPopup.SetData Me <-自分への参照が渡せる。
formPopup.Show vbModal
>これって全然問題ないよね。
ごもっとも言葉足らずでした。言いたかったのは呼び出される側のフォームから
呼び出し側のフォームの公開メンバーへ直接アクセスすることが問題で、
呼び出し側が変わっても対応可能なようなコールバックの手段を準備しましょうということです。
>>265 フォームが暗黙でインスタンス作成されるんじゃなくて、
スタートアップに指定されたフォーム「のみ」が暗黙でインスタンス作成されるんだよ
フォーム自体が特殊なんじゃない
>>271 Dim MyForm As New Form1 : MyForm.Show
でなくて
Form1.Show
でインスタンス作成されることを言ってるのだと思う。
VB6なんて賞味期限が過ぎてるのだからもうメンテナンス程度の開発しかやってないだろう。 そうなるとメンテ対象のプログラムがOOで作られてればそれで そうでなければOOなしで作ればいい。 ・・・とわざと煽ってみる。
タブの背景の色を変更する方法教えていただけませんか? デフォは灰色ですよね。 白にしたいと思っているんですが どなたか、お願いします。
>>274 オーナードロー。TCS_OWNERDRAWFIXED とか WM_DRAWITEM でググれ。
276 :
デフォルトの名無しさん :2005/11/08(火) 15:14:23
VB6 SP6です CSVファイルを取り込むプログラムを作っています CSVはカンマで区切られ、全項目(数値項目も)が""で囲まれています ""内にカンマや"がある場合を考慮した場合、 一項目づつ取得するしかないのでしょうか? 効率のよい方法とかありましたら教えてください
> 一項目づつ取得するしかないのでしょうか? はい つーかCSVの仕様って"や,使っちゃいけないんだよな なのに何故かそれらを入れたCSVもどきを吐き出すソフトが結構ある "や,を使いたい場合はTSV使えよ
>>276 ADOでCSVを読み込む。
""内の"は確認してないけど、""内にカンマや改行が入っていてもいける。
""内は純粋な文字列だからな
>>277 CSVの正式な仕様ってのは存在しないよ。
データをカンマで区切っていればそれはCSV。
だから"が入っていてもいい。
カンマは区切り記号だから、そのままではデータとして入れられない。
その場合は"で囲めばOKってのもあるが、もちろん正式な仕様として決まっているわけじゃない。
>>281 そんな負け犬の遠吠えみたいな発言するやつはVB使いじゃないな。
なにか反論したいのなら、ソースでももってこい。
たとえば
http://ja.wikipedia.org/wiki/CSV とかな。
もっとも、俺が言ったことは正しいから、どっちみち何の反論もできないだろうが。
> カンマ区切りテキストには、正式な仕様書が無いため、
> ExcelのCSV出力がデファクトスタンダードとなる事が多い。
> たとえば、項目中にカンマを入れるにはどうすればいいかという問題に対しては、
> 項目をダブルクォート(")で括り、ダブルクォート自体はどうするかというと、
> 二つ重ねることで対処するという。もっとも、全てのソフトが対応しているというわけではない。
毎度のことだが、VBを馬鹿にするやつは、本当に馬鹿だな。さてはて何言語厨なのやら。
豪語してるわりには、ソースが 「素人共が自由に編集できる百科事典」 ってのが素敵だとは思いませんか? しかもそれを得意げに引用しちゃったりしてw
>>283 では素人ではない貴方様に是非書き直していただきとう存じます。
(´-`).。oO( ウィキペディアをソースとして挙げるやつが居るとは・・・・・ )
どうせ自分で書いたんだろw
なるほど
うっわ。wikipediaにまで喧嘩売ってる。 しかも自分は何一つ反論できていないし。 馬鹿アンチって何に対してもアンチなんだね。 ばればれの自演も恥ずかしい。
クダラネ。
オープンな百科事典だから信用できないっていう
後進国的・北朝鮮的なご公儀マンセー的センスもどうかと思うが、
傍証の情報源が怪しかろうがなんだろうが
>>282 が正しい。
> この「カンマ区切りテキスト」は、コンピュータに関連した書きかけ項目です。 > この記事を加筆・訂正などして下さる協力者を求めています。
自分で自分が正しいと思うのは当然だろ
ほら。wikipediaに文句をつけたやつ。 早く修正しろ!w
Wikipedia自体に文句をつけたやつなんて一人も居ないようだが。 現実として間違ったことを書くことも出来る辞典だからソースにはならないって事実だけで。 あそこは調べものの足がかりには便利だけど、鵜呑みには出来ないものだからな
>>293 馬鹿じゃないの?
ソース[source]はもともと単に源という意味。
そういうセンスが後進国的なんだよw
こういう馬鹿が朝日新聞に煽られて無謀な戦争(略
ソースにならないなら、もっと信頼できるソースを出して反論すればいいだけの話。 それをせずに、間違っていることもある(そんなのどの辞書にもあてはまる)というだけで、 反論した気になっている厨さん。こんにちはw
ソースにウィキペディアを挙げちゃったことを後悔しながら 自己フォローに必死な方が居ますね
ネットウヨキタコレw
でさ、結論はどうなの?
この流れを読むと
>>282 が正しいという結論なんだが、
それでいいんだよね。
可哀相な子たち もう暫く踊ってく? |> ・はい ・いいえ
VBスレには、馬鹿なVB叩きがよくよってくる。 その実態はちょっと他の言語を使って初心者脱出したと 思っている初心者である。 煽っている相手をVBしか使えないと勘違いしているが、 そのVBもほかの言語も使いこなしている人たちなので 逆に追い詰められ恥をかく。 今回のやつ(CSVに正式な仕様があるとか思っている人)もその一人だね。
結局wikipediaただしいじゃんかw
頑張ってWikipediaが正しいと言うことに仕立て上げましょうね
静まったな 解読中か(・∀・)ニヤニヤ
>>303 その一個人が書いた資料がどうかしたの?
CSVはかなり昔からあるのに、Copyright 2001って書いてあるから
信頼性がない。
>>304 間違っているのなら修正するのがwikipedia
ほら。さっさと修正して来いw
かなり苦しいな
正式な資料ってのはANSIとかISOとか そういう機関が発行しているものを言うんだよ。 変なソース持ってきて後悔して、いま必死に 自己フォローの手段を考えているころでしょう。
もう自己フォローなんて考えるな Wikipediaを挙げた時点でおまえは終わった
> カンマ区切りテキストには、正式な仕様書が無いため、 これは事実だからソースの挙げようがない。
>>303 は必死に探したんだなぁと思う。
このまま放置されたら、かわいそうだから、
このドキュメントの信頼性でも議論しようよw
>>309 wikipediaは正しい情報もたくさんあるんだが?
間違いだというのなら、それを今修正するべきだし、
修正できないのなら、それは正しいと思われても仕方がない。
> 正しい情報もたくさんある まあ、オープンな百科事典ならその程度のレベルでもいいよね 普通は「正しい情報もたくさんある」なんてレベルじゃ使えないけど
頭が硬いな。 wikipediaは誰でも修正できるために、従来の辞典とは性質が違う。 こうして間違いだと言い張る人は、信頼性があるソースをもとに 修正できる。 間違いを気づかれない情報ならまだしも、今ここで気づかれているのに 今ここで修正されないのなら、その情報は正しいものといっても問題ない。 実際正しいんだがなw ちなみに、英語版のwikipediaにも正式なドキュメントはないって書いてあったよ
> 実際正しいんだがなw
wikipediaを修正するのは国民の義務なのですwwwwwwwwwwwwwwwwwwwww
>>314 そういう発想が先進国的な常識なんだけどね。
オープンであるがゆえに信頼可能っていうね。
それを田舎者はご公儀でない馬の骨の書いた物など信頼に足らぬと来る。
昔タモリが名古屋のことを大いなる田舎って呼んだけど、
本当は日本全体が名古屋なんだよな。
誰も国民の義務だといってないと思うが? 疑いを持った人が修正すべきだし、 それをしなければ本当だと思われても仕方ないという話だと思うが?
319 :
デフォルトの名無しさん :2005/11/09(水) 00:48:30
すみません。クリレポについての質問なのですが・・・。 クリレポ10で「SQLの表示」で表示されるSQLの修正はできないのでしょうか? クリレポ9とかだとできましたよね? 現在VB6+クリレポ9で作成したアプリをVB6+クリレポ10対応させているのですが 上記の処理ができず、どうにもこうにも困っています。 できるのかどうか、もし出来るようでしたら 方法も教えていただけないでしょうか? 教えてちゃんですみませんが、 どうぞよろしくお願いします。
酒が切れた。 折角踊りを見ながら楽しく飲んでたのに。
酒のせいにして逃げたかw
とりあえず両者に対してひとつだけ言っておく。
Wikipediaが正しいと言うなら
>>303 も正しいと言うに足るものだ。
>>303 が正しいと言うならWikipediaも正しいと言うに足るものだ。
Wikipediaが信頼性に劣る言うなら
>>303 も信頼できないものだ。
>>303 が信頼性に劣る言うならWikipediaも信頼できないものだ。
この二つの信頼性は高いか低いかは別として、どちらが上と言えるものではない。
漏れはどっちにも肩入れしないけどね。
人格批判されている
>>282 が必死にwikipediaの信頼性に論点をすり替えようとしている。
反論してる香具師らも
>>282 きんもー☆とだけ書けば良いんだよ。どうせCSVの規格なんかに興味ないんだろ?
別に俺は逃げないよ。逃げる必要もないし。 踊ってくれるなら見ていくし、踊ってくれないなら寝る。
>>282 きんもー☆
と書くとまた自作自演扱いかな
VBの話をしろよ CSVについて語りたいならVIPにでも逝け
>別に俺は逃げないよ。逃げる必要もないし。 >踊ってくれるなら見ていくし、踊ってくれないなら寝る。 きもっ
で、ADO使えばCSVで楽できるの?
329 :
デフォルトの名無しさん :2005/11/09(水) 11:13:07
>>328 ADOで対応している形式のCSVファイルの場合はね
ShowInTaskbarをTrueにしているのに、フォーム実行してもタスクバーに現れないのは、 どんな理由が考えられますか?
フォームのスタイル
332 :
330 :2005/11/09(水) 20:13:23
>>331 BorderStyleでしょうか?
0~5全て試してみましたが、ダメでした・・
>>330 モーダル表示にすると ShowInTaskbar に True してもタスクバーに表示されない
Sub Main( )で フォームをモーダル表してるか見てみ
334 :
デフォルトの名無しさん :2005/11/09(水) 23:09:47
初歩的なことかも知れませんが、ググっても解らないので教えてください 宣言セクションで変数を宣言する場合 Private hoge Dim hoge の違いって何なんですか? もし違いが無いとしたらどちらを使うのが正しいのですか? ググってもPublicとPrivateの違いは腐るほど解説があるけどこれは見つからないです
DimはPublic
336 :
334 :2005/11/09(水) 23:35:03
>>335 Public aPublic
Private aPrivate
Dim aDim
と宣言してみると、外部からはaPublicしか参照できませんでした
なので少なくとも「DimはPublic」というのは間違いなようですが
6.0の話じゃないが、とりあえずVB.NETになると、DimにPublicかPrivateの指定をひっつけて宣言するな
MSDNに書いてあることだが、 Dim:変数を宣言し、メモリ領域を割り当てます。 Private:プライベート変数を宣言し、メモリ領域を割り当てます。モジュール レベルで使用します。 Public:パブリック変数を宣言し、メモリ領域を割り当てます。モジュール レベルで使用します。 恐らく、PrivateとPublicはモジュールレベル、Dimはプロシージャレベルで使うという考えなのだと思う 昨日的にどっちかでしかつかえないような規制は無いけどな
339 :
334 :2005/11/09(水) 23:46:23
すみません、VB6以前専用スレなのでバージョン書かなかったですがVB6の話です
マイクロソフトのムカつくところは、 VB.NET発売と同時にVB6を切り捨てたところだよな。 いちおー、今でもVB6で開発運用されているところはたくさんあるわけだから、 VB.NETにVB6をつけるべきだった。
そもそも根幹が違うんだから仕方ないな
342 :
334 :2005/11/10(木) 00:00:13
>>338 MSDNは読みましたし、他でも大抵同じような解説がされてますが、
>>334 で書いたとおり宣言セクションでのPrivateとDimの扱いの違いを解説してるところが見つからないのです
モジュールレベルの宣言ではPrivateとDimに違いは無いがPrivateを使うべきということなのでしょうか?
自分の持ってるVB6の本では、一方は一律してPrivateでの宣言しか無く、
もう一方ではモジュールレベル変数もDimで宣言してあり、注釈としてPrivateを使っての宣言も出来ると書いてあります
両者とも違いについては触れてませんし、同じものだとも書いてません
最初の行の認識でいいと思うぞ まずそもそも、モジュールレベルの変数は全て、PublicかPrivateの外部からのアクセスに対する設定が必要なのだから Publicに対するにPrivate あとその注釈はおかしいな Privateがまるでオマケのように聞こえる
>両者とも違いについては触れてませんし、同じものだとも書いてません 多分その本のレベルがソレ程度なんだよ。 その本 入門書? 「モジュール内での Private と Dim は機能が同じなんだから 初心者にはその違いを詳しく解説する必要ない」 とかじゃない? 本に書いてないからって あまり気にしない方がいいよ
標準モジュールのDimはPublic、フォームやクラスのモジュールレベルのDimはPrivate Dimはモジュールの種類ごとの標準の動作をするということのようです。 C++のclassが標準Privateでstructが標準publicなのと似ている感じです。
Dimの宣言場所でスコープが違うのをより明示的にしたのがPrivateとかのキーワードだろが MSDNになかったか?
ねぇよ
>>340 あの、そびえたつ糞のような仕様は
もっと早く切り捨てるべきだった。
349 :
デフォルトの名無しさん :2005/11/10(木) 11:22:38
教えてください。 hp basicでは↓VB6.0ではこの計算する方法ありますか? 10 PRINT EXP(CMPLX(0,-1)) 20 END
hp basic知らんし
その計算がどういうものかを書けば誰か答えてくれるかもしれんな
353 :
デフォルトの名無しさん :2005/11/10(木) 14:15:35
>>351 352さんのとおりです。
>>352 やはり、その方法しかないようですね。
自作する能力はないけど、買うのはなー
いづれにしてもありがとうございました。
いづれ→× いずれ→○
355 :
352 :2005/11/10(木) 14:45:19
>>349 とりあえずこの答えだけを求めたいなら
e^(iθ)=cosθ+isinθ(オイラーの公式)
より
e^(-i)=cos(-1)+isin(-1)
cos(-1), sin(-1)はVBでも計算できる。
汎用性を求めたいなら
>>352 p.s.
google に 数式 e^(-i) を入れて「検索」で計算できる
356 :
デフォルトの名無しさん :2005/11/10(木) 15:42:31
355さん ありがとうございました。 googleにそんな機能があるとは・・・ あっ・・354さん も ありがトン。
質問があります。
海外サイトのネット通販したいんですが、決済するところで下記のようなエラーメッセージが
でます。ぐぐって調べたのですが
「adNumeric フィールドを変換するために、 CDbl または CInt 関数を使います。」
とありましたが、CDbl,CIntの使い方が分かりません。ご教授下さい。
Error Type:
Microsoft VBScript runtime (0x800A000D)
Type mismatch: 'rs'
/eshop/cartlib/GetCst.asp, line 34
因みに↓に原因や解決方が書いてありましたが・・・です・・・・orz
ttp://support.microsoft.com/default.aspx?scid=kb;ja;306916 宜しくお願いします。
お帰りください
>>357 どう見ても精子です。
ありがとうございました。
>>357 コントロールパネルの地域設定をU.S.に設定してダメなら諦める。
もともとDimは配列を宣言するための(Dimension)ステートメントで、 QuickBASICから普通の変数宣言にも使われるようになった。 VB2では、まだPrivateとPublicは無く、宣言セクションにはDimとGlobalを 書いた。宣言セクションのDimがモジュールレベルスコープ(後のPrivate)だった。 (フォームモジュールの宣言セクションにはDimしか書けなかった) VB4でPrivateとPublicが導入されて、Globalと、宣言セクションでのDimは 古くなったが、互換性を考慮して、それぞれPublicとPrivateの意味で 残されている。 新参のプログラマーに宣言セクションでのDimを教えるのは推奨されない。
ほー
364 :
デフォルトの名無しさん :2005/11/10(木) 20:42:47
VBからPL/SQLのFUNCTIONを呼び出す方法を教えてください 社員コードを渡すと社員名を返してくれる PL/SQLのFUNCTIONがあります VBでこのFUNCTIONを実行し、社員名を受け取るのはどうすればいいですか
PL/SQL知らんし
366 :
デフォルトの名無しさん :2005/11/10(木) 20:48:22
>新参のプログラマーに おいおいw それを言うならVBやること自体(w
369 :
357 :2005/11/10(木) 21:44:08
>>359-361 レスさんくすです。
地域設定をアメリカにしてみましたが駄目でした。
諦めます。ありがとうございまいした。
>>368 なんだかな。
こういう奴って自分に自信がないから、誰かが自分を否定しないかいつもビクビクしてるのかな。
企業の上司でも学校の先生でもいいけど、
新参者に今からVB教えたりしないだろ。少しでも良心があるなら。
まともな神経してれば、「新参者に~」なんてセリフはギャグにしか聞こえん。
ほーら。やっぱりウザイ。最初っからわかっていたよ。
プログラミングの勉強が趣味のアマチュアじゃあるまいし、 VBの仕事はまだあるっちゅうの。 今使うのに、将来使わないからやらないなんて言っていたらクビになるぞ。
でも自分のウザさには気づけないんだな
>>372 まあ「その人」を使い捨てにするつもりならそれでもいいんじゃないの。
それ以前に機会費用って概念がない甘いお人のようが気がするけどね。
スレ違いの話をいつまでも続ける莫迦が 最もウザいわけだが。
VBを教えると使い捨てになるという理由がわからん。 お前はVB"だけ"を教えるとでも思っているのか。 今VBで作られている物を、誰が保守するんだと。 全部VB.NET作り変えろとでも? 今VB知っている人がいつまでも保守しろと? 言語を勉強のための物としか発想がない、 実践を知らない学生が言いそうなこった。
>>370 > 新参者に今からVB教えたりしないだろ。
今VBを使っている所(沢山ある。特に保守は。)なら教える。
ものすっごーく当たり前のことだと思うが?
Javaとか.NETいじってるだけのベンチャー様か趣味プロ学生か
>>377 プログラマ以前にリーマンとして三流の発想だと思うよ。
人間の能力や気力、それに与えられた時間は有限だから、まともな企業人なら
機会費用というものを考えるべきだし、物事にはプライオリティがある。
だから「新参の」プログラマにVBを教えたりしない。まともな企業人ならね。
そんなものは後々他の仕事の合間か、本当に必要にせまられたときに覚えてもらえればいい。
はっきりいってその程度のことも考えないのは職務不履行だよ。
まあそんなこと考える立場にない人なんだろうけどさ。
380 :
デフォルトの名無しさん :2005/11/10(木) 23:04:35
ここはくだらない人格攻撃が大好きな人たちが集まるスレッドですね
>>379 まとも、まとも うるさいよ。
君が言いたい事はよく分かる。
「俺の理想通りだとまとも。それ以外はまともじゃない。」といいたいんだろ。
自分が気に食わなかったら、それをまともじゃない決め付け
頭っから否定する。話を聞こうともしない。
はっきりいって、君に、まともかどうか判断する能力は無い。
頭が固い人間がよく使う手だよ。宗教関連でもよく使われるね。
信じていないといったら、かわいそうな人と決め付ける。
>>379 本当に必要に迫られたときかもしれんだろ。
機会費用を考えた結果かもしれんだろ。
お前、一体相手の何を知っているというんだ。
なにも状況がわからないくせに、よくそんな偉そうなこといえるな。
スルースルー
似たもの同士、じゃれってんじゃねえよ。気持ちわりイな。 どこかよそでケツでも掘りあってろ。
物事にはプライオリティがある。 だからこそ、旧VBの保守が最優先事項の場合もある。 他言語はやっているが、VBは新参というプログラマーもいる。 これが現実。
まだ踊るんですか?
>>379 が言っていることは間違っていると誰でも分かる。
ま と も な 奴 ならねw
お前ら溜まってますね。俺は溜まってますよ。
390 :
362 :2005/11/11(金) 23:41:45
なんで、そんな揚げ足とられなきゃならんのだ・・・_| ̄|......○)))
そこ論点じゃないよ
>>367 話を広げたいんなら、ここは質問と回答を書くところなんだからスレ違いですよ。
「VBばかりやってると馬鹿になる」スレかどっかでやってくらさい。。。
VB6です。 IEのプロクシの設定はどうやったらいいのでしょうか? 色々調べたのですが、なかなかたどり着きません。 よろしくお願いします。
392 :
デフォルトの名無しさん :2005/11/12(土) 12:20:29
あげておきます。
393 :
デフォルトの名無しさん :2005/11/12(土) 12:35:55
.NETからSQLサーバーのパッケージを実行する方法を教えて下さい
>>391 VB6だからなんなんだ
IEのツール→インターネットオプション→接続タブ→LANの設定ボタン→串鯖
>>393 .netスレ逝け池沼
>>394 VBを使ってIEの設定を変えるって事じゃないんかな?
396 :
391 :2005/11/12(土) 13:14:44
そうです。よろしくお願いします。
しかし一般の掲示板でもそうだが質問するのは結構だと思うがなんでなぞなぞみたいな文章書く奴ばっかなんだ?
句読点を知らない人に言われても。
それと
>>398 で思いだしたが答える奴も
>>398 みたいに妙に揚げ足取りたがったりいかにも性格が捻じ曲がってそうな奴ばっかなんだよな
句読点を知らない人に言われても。
俺には
>>399 の方が性格ねじ曲がっているように見えるな。
毎回粘着して無駄にレス続けてるし。
スレ違いって言うか、存在が無駄だな
いつも心にくだすれを
405 :
391 :2005/11/12(土) 19:09:16
やっぱりVBからプロクシの設定ってムリなんですか?
まあ、無理ではないけど('A`)マンドクセ
>>405 VB自前は無理なんでね?
他言語のサンプル見つけてVBに書き直すのが速いかも
>>405 WMIでできねかい?とシラネのに言ってみるw
VCスレはアレだからWSHスレで聞いてみw
409 :
デフォルトの名無しさん :2005/11/13(日) 08:20:36
10進数の100を16ビットの2進数で表現したときに、その値の中に含まれる0の個数を、メモリに格納するプログラムを作成せよ。という問題を誰か解いてください。
誰か解いてください、じゃなくて君の宿題だろ? 宿題は自分でやれよ。 つーかこんなところで聞かずに友人に聞け。
宿題を他人に解いてもらうようじゃ発展など望めない
釣りだろ
どう見ても精子です
ありがとうございました
>>405 IEの設定ってレジストリの変更だけじゃないのか?
変更前のレジストリをテキストファイルに書き出し、変更後のレジストリをテキストファイルに書き出しその差分を取ってそこで変わった内容と同じ事をプログラムから実行してやれば良い。
知らないのなら黙ってればいいのに
418 :
デフォルトの名無しさん :2005/11/14(月) 02:29:06
×ボタンを押して終了したときのイベントを 取得したいのですが、どのようにすればよいでしょうか? 初歩的な質問で申し訳ありません、よろしくお願いします。
>>418 WM_CLOSE
ウィンドウが閉じられる直前に送られてくる
>>418 QueryUnload イベント
フォームが閉じられる直前に発生する。
Unload Me でも発生する。
Unload フォームが閉じられる時に発生する
あるフォルダの、サブフォルダのリストを配列に取得したく、以下のようなコードを書きました (follist(0)は親フォルダのパスで、1以降にサブフォルダのフルパスを列挙) Private follist(0) As String Private fsfol As Folder Private Sub Command1_Click() Dim MainPath As String MainPath = "\\ServerPath\AB共有\プログラム\開発" follist(0) = MainPath Call sfoldersearch(fso.GetFolder(MainPath)) End Sub Private Sub sfoldersearch(ByRef myfolder As Folder) With myfolder If .SubFolders.Count > 0 Then For Each fsfol In .SubFolders ReDim Preserve follist(UBound(follist) + 1) As String '見つかったサブフォルダをリストに追加 follist(UBound(follist)) = fsfol.Path 'ココがオカシイ '再帰的に関数を呼び出し Call sfoldersearch(fsfol) Next End If End With End Sub 'ココがオカシイ の部分で、サブフォルダのパスが変に取得されてしまいます "\\ServerPath\AB共有\プログラム\開発\新しいフォルダ"があったとしたら、 "\\ServerPath\ABq \プログラム\開発\新しいフォルダ"というように「共有」が 「q 」(後ろのスペースは3桁のスペース・・Nullかもしれません)
423 :
422 :2005/11/14(月) 10:13:48
しかし、fsofol.Drive で取得すると、 "\\ServerPath\AB共有"と、ちゃんと化けずに取得できます これは、どういう現象なんでしょうか ちゃんとパス名を取得するには、どうしたら良いでしょうか
FSO使わずAPI使えよ
っていうかモジュールレベルの変数を 再帰呼び出しされる関数内で使うってどうなのよ。 しかもByRefで。 正直、小手先でどうこうするのがオカシイというより、 プログラミングに対する考え方そのものがオカシイ。
>>397 質問者は一般に質問する事柄について詳しくないんだから
あいまいな記述が出てきて当たり前だろ。
そのなぞなぞも質問のうちだ。
428 :
422 :2005/11/14(月) 14:06:22
>>424 既にある資源を活用したいので、
それはどうにもならなかったときにしたいです
>>425 何がマズいのかもよくわからないです
ごめんなさい
暗黙の了解みたいなのがあるんでしょうか
先生、APIは既にある資源じゃないそうです!
430 :
422 :2005/11/14(月) 15:28:27
>>429 すみません
手元に他の人が書きかけてそのままだったコードがあったので、
新しくAPIとか調べていちから書くよりも、極力それを利用したい、ってことです
というか、質問取り下げます・・・
私のレベルでは、質問もうまく書ききれてないみたいで、ごめんなさい
>>424 さんの言うとおり、APIでの書き方を調べてみます
ありがとうございました
431 :
デフォルトの名無しさん :2005/11/14(月) 17:25:53
pictureboxにスクロールバー付けるには, どーしたら良いのでしょうか?
>>431 スクロールバーのコントロールがあるでしょ?
433 :
デフォルトの名無しさん :2005/11/14(月) 17:30:42
↑ 画像が大きすぎるので何とかしたいのです. さらに解像度はそのままにしたいです
435 :
デフォルトの名無しさん :2005/11/14(月) 17:32:50
スクロールのコントロールバー使って, pictureboxを2つ重ね合わせるのですか? ただ,画像が大きすぎるのか,画像全体を表示出来ないんですが (フォームを最大にしても足らない) どうしたら良いのでしょうか?
>>435 Pictureの中にPicureとスクロールでも貼り付けてイベントとか計算とか書けば?
>>431 VB6.0付属のヘルプ「スクロール バー コントロールの使用例 :
スクロール可能なグラフィックス ビューポートの作成」
VC++6.0付属のOLEサーバーのサンプル(VC98\mfc\tutorial\autoclik\step3)を VB6.0で作成したOLEクライアントから利用する方法を教えてください。 1: Dim Click As Object 2: Set Click = CreateObject("AutoClick.Document") 3: Click.ShowWindow 4: Call Click.SetAllProps(50, 100, "Test") 5: Dim Point As Object 6: Set Point = Click.GetPosition() 7: Point.SetX (200) 8: Point.SetY (50) 9: Click.SetPosition (Point) 10: Set Point = Nothing 11: Set Click = Nothing 4行目までは正常に実行されるのですが、6行目で「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」とエラーが出てしまいます。 OLEメソッドの戻り値をOLEプロパティで受け取る方法がわかりません。
>>422 SCRRUN.DLL最新Verのバグかもしれん。
いっこまえのVer.5.6.7426では起こらなかったが、
5.6.8825だとうちの環境でも同じとこで文字化けした。
API使うのがいいよ。
#なんか昔のバージョンでも、同じバグがあった気がする・・・
>>438 すみません下記のコードで解決しました。
1: Dim Click As Object
2: Set Click = CreateObject("AutoClick.Document")
3: Click.ShowWindow
4: Call Click.SetAllProps(50, 100, "Test")
5: Dim Point As Object
6: Set Point = Click.Position
7: Point.x = 200
8: Point.y = 50
9: Click.Position = Point
10: Set Point = Nothing
11: Set Click = Nothing
VC++のOLEクライアントのサンプルを参考にVBで実装してみたのですが
GetPosition()メソッドはVC++のスタブクラスが用意している物であり、
OLEとして外部に公開している名前は"Position"でした。お騒がせしました。
すいませんどなたか救いの手を 学校の課題が3つ出たのですが意味不明なので力をお借りしたく。 1・繰り返しを利用して、九九の表を表示するプログラムを作成せよ 2・自然数nを入力すると、各i(i=1,2,3,...,n)に対して、1+2+3+...+nを計算するプログラムを作成せよ 3・自然数同士の乗算を加算の繰り返しで計算するプログラムを作成せよ 解かる問題だけでもどなたかお願いします・・・
1がわからんのなら諦めた方がいいよ 出された課題を自力で調べて解決しようともせんやつは何やっても無駄
じゃぁ俺1解くねw Dim I As Long Dim J As Long '1 For I = 1 To 9 Debug.Print CStr(I); "の段 "; For J = 1 To 9 Debug.Print CStr(I * J); " "; Next J Debug.Print Next I Debug.Print "wwwwwwwwwwwwwwwwwwwwwww"
445 :
質問 :2005/11/15(火) 12:51:08
:で行を結べるのですが、IF文でエラーがでてしまいます なんとかなりません?
見づらいから結ばないでくれ。
>>445 どうにでもなるよ
Ifステートメントがどういう物なのかわかってればね
でもマルチステートメントなんか使うなよ
449 :
質問 :2005/11/15(火) 13:30:54
if a then b else c end のようにしたいのですが、間に:を入れても駄目です。 Ifステートメントとはどういったものでしょう?
> のようにしたいのですが 好きにすれば? つーか、それならマルチステートメント使うまでもないじゃん
普通に一行で書けるし、馬鹿じゃね?
>>445 1行でIfを使う場合はEndIFは付けない。
If x = 0 Then y = 1 Else y = 2
1行Ifでのマルチステートメント
If x = 0 Then y = 1: z = 8 Else y = 2: z = 9
453 :
質問 :2005/11/15(火) 14:08:06
馬鹿だった・・・
>>441 2.
Private Sub Test(ByVal n As Long)
Dim i As Long
For i = 1 To n
Debug.Print i, i * (i + 1) \ 2
Next i
End Sub
456 :
デフォルトの名無しさん :2005/11/16(水) 11:42:12
フォーム上にMicrosoft DataGrid Control 6.0(OLEDB)を置いて、 データベースと接続し、データベースを表示させたいのですが、 データベースエンジンがMicrosoft.Jet.OLEDB3.51だとうまく表示してくれますが 4.0だとなぜか表示してくれません。 原因、対策などわかるでしょうか? ソースは以下のように単純なものです。 Private cn As ADODB.Connection Private rs As ADODB.Recordset Private Sub Form_Load() Set cn = New ADODB.Connection cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\パスワード管理.mdb" cn.Open Set rs = New ADODB.Recordset rs.Open "パスワード", cn, adOpenStatic, adLockReadOnly Set DataGrid1.DataSource = rs End Sub
エラーを吐かずに処理がすかしてるのですか?
http://support.microsoft.com/kb/q224192/ 現象
Microsoft.Jet.OLEDB.4.0 と ADO のサーバー サイド カーソルを使用して取得したデータを
DataGrid に連結 (ADO データ コントロールを使って、あるいは直接グリッドに連結) したとき、
DataGrid にデータが表示されません。
原因
Microsoft.Jet.OLEDB.4.0 プロバイダは、DBPROP_LITERALIDENTITY プロパティをサポートしていません。
そのため、IRowsetIdentity インターフェイスをインプリメントする必要があります。
ADO では、このプロパティを行セットのオープン前に設定する必要があります。
解決方法
レコード セットを開く前に、RecordsetObject.Properties("IRowsetIdentity") = True を実行します。
460 :
デフォルトの名無しさん :2005/11/16(水) 14:53:24
質問) VB6.0つかってます。 Open App.Path & "\test.txt" for output as #1 write#1,"Test" close #1 で保存したときtest.txtの内容が "test" となるのですがダブルローテーション消して保存する方法無いでしょうか?
WriteじゃなくPrint使え
462 :
デフォルトの名無しさん :2005/11/16(水) 15:07:11
>>461 ㌧直りマスタ
WriteとPrintの違いでこんなのあったのかOTZ
ダブル ロ ー テ ー シ ョ ン
なんかエロイな
465 :
デフォルトの名無しさん :2005/11/16(水) 18:36:01
質問させてください。 下記tableDefineのような形式でアクセスのテーブル定義が与えられています。 この定義からSELECT文を生成したいと思います。 たとえば下のテーブル定義を用いると次のようになります。 SELECT UserCode, LogonTime , StartTime, ProcessID , EndTme FROM AppEnd_Logs そこで下記createQueryを作成したのですが、カタログオブジェクトのところで ”オブジェクトはもう有効ではありません”というエラーが出てしまいます。 どのような修正をすればよいか教えていただけ無いでしょうか?
'テーブル定義(例) Public Function TableDefine(ByVal strTableName) As ADOX.Table Dim tbl As ADOX.Table 'strTableNameでセレクト文 Set tbl = New ADOX.Table With tbl .Name = "AppEnd_Logs" .Columns.Append "UserCode", adVarWChar, 64 .Columns.Append "LogonTime", adInteger .Columns.Append "StartTime", adInteger .Columns.Append "ProcessID", adInteger .Columns.Append "EndTime", adInteger End With Set TableDefine = tbl Set tbl =Nothing END Function
468 :
デフォルトの名無しさん :2005/11/16(水) 18:56:43
'テーブル定義からSELECT文を作る。 Public Function createQuery(t_tbl As ADOX.Table) As String Dim cat As ADOX.Catalog Dim col As ADOX.Column Dim query As String Set cat = New ADOX.Catalog cat.Tables.Append tblNew '*********** '↑で実行時エラー 3420 "オブジェクトはもう有効ではありません" '*********** 'field名の取得 For Each col In cat.Tables(t_tbl.Name).Columns query = col.Name & "," & query Next col '末尾の","を消す query = Left(query, Len(query) - 1) 'SELECT文を生成 query = "SELECT " & query & " From " & t_tbl.Name createQuery = query Set t_tbl = Nothing Set cat = Nothing End Function
469 :
466-468 :2005/11/16(水) 18:59:33
書き忘れました。 環境はWinXP(SP2),VB6.0(SP5)となっています。
470 :
431 :2005/11/16(水) 19:24:34
>437 ありがとうございます!! 完成しました.
申し訳ありません。
>>468 の訂正です。
×:cat.Tables.Append tblNew
○:cat.Tables.Append t_tbl
472 :
デフォルトの名無しさん :2005/11/17(木) 11:34:10
現在、Win2000、VB6.0(SP5)でActiveX&EXEで構成されたアプリを作成しています。 ActiveX&EXEを同一のマシンAでコンパイルすると動作するのですがActiveXをマシンAでコンパイル、 EXEをマシンBでコンパイルすると、EXEからActiveXを呼び出す際に「型が一致しません」というエラーが 発生してしまいます。 具体的には以下のような感じです。なにか変なことをやってしまっているのでしょうか? ********************** EXE側 ********************** Private Sub MenuFile_Click(Index As Integer) With form1.ActiveX1 Set .Grid = MSHFlexGrid1 'ActiveXにMSHFlexGridを渡しています。 l = .aaa() 'ActiveXのaaaメソッドを呼び出し End With End Sub ********************** ActiveX(ActiveX1.ctl)側 ********************** Private m_Grid As Object 'MSHFlexGrid Public Property Set Grid(ctrGrid As Object) 'MSHFlexGrid Set m_Grid = ctrGrid 'm_Gridに設定 End Property Public Function aaa() As Long Dim lngCount As Long lngCount = bbb(m_Grid) ←ここで、m_Gridの「型が一致しません」エラー PrintStart = lngCount End Function Public Function bbb(ctrGrid As MSHFlexGrid) As Long 略 End Function
473 :
デフォルトの名無しさん :2005/11/17(木) 11:54:11
VBでネットワーク接続状況を取得するツールを作成しています。 可能であればやりかたをお伺いしたいのですが LANボードのリンク状況を示すLEDの点灯、点滅を VB画面で判断し同じように連動させる事はできますか?
474 :
デフォルトの名無しさん :2005/11/17(木) 12:30:02
>>473 バッキャッロー!
できるわけねぇーだろうが
LANボード自作すれば万事OK
>>475 そこまで大げさなことをしなくても、LANボードのLEDの所から信号取り出して
DIOボードに入力してあげればOKだぉ
LEDの光をセンサー使って感知すればいい 簡単なことだぉ
おまえら頭いいな
まじめに質問に答えてくれよぉ
知らないものにどう答えろというんだ
481 :
デフォルトの名無しさん :2005/11/17(木) 14:19:47
>>466-469 Set tbl =Nothing
↑
ここで作ったオブジェクトが無効になる
Nothingの代入がただの代入と思ってはいけない
TableDefineにbyRefでADOX.Table型を渡してそこにNew ADOX.Tableしてやる
>>481 >Nothingの代入がただの代入と思ってはいけない
え、そうなの!?
>>468 はcatのActiveConnectionを設定してないせいだと思うが。接続無しで使えたっけ。
>>481 オブジェクトはTableDefine変数で参照されているので、
オブジェクトは無効にはならない。
484 :
デフォルトの名無しさん :2005/11/17(木) 21:01:05
>>472 >Public Function bbb(ctrGrid As MSHFlexGrid) As Long
↑パラメーターを ctrGrid As Object にすればいいのでは?
>>484 それでも動きそうだけど、MSHFlexGridがインストールされてないとか
バージョンが違うからエラーが出ているんだろうね。
皆さん回答ありがとうございます。 下記のように処理順番を変えて、catにActiveConnectionを設定することで解決しました。 1.サーバ側DBと接続(con) 2.表定義からクエリ作成 3.サーバ側DBにクエリ投げてレコードセット取得 4.ローカルDB作成 5.表定義よりローカルDBテーブル作成 6.ローカルDB接続(con_mdb) ... ↓ 1.サーバ側DBと接続(con) 2.ローカルDB作成 3.ローカルDB接続(con_mdb) 4.表定義からクエリ作成 ← cat.ActiveConnection = con_mdb を追加 5.サーバ側DBにクエリ投げてレコードセット取得 ...
487 :
デフォルトの名無しさん :2005/11/17(木) 22:12:42
VB6.0を始めて勉強する人のための, なにかお勧めの参考書,ホームページを教えて下さい. 一応, 林晴比古さんの新visualbasic入門のビギナー編とシニア編は持ってます.
>>487 そんじゃ漏れも、それがオススメってことで
>>487 林晴比古さんの新visualbasic入門のビギナー編とシニア編って本がお奨め。
いややっぱ 林晴比古さんの新visualbasic入門のビギナー編とシニア編 じゃないかなぁ
WebBrowserコントロールのクローンを作りたいのですが、 VBでコントロールのディープコピーってできますか?
493 :
デフォルトの名無しさん :2005/11/18(金) 01:28:56
出された課題を自力で調べて解決しようともせんやつは何やっても無駄
495 :
472 :2005/11/18(金) 12:52:46
>>484 回答ありがとうございます。
>>Public Function bbb(ctrGrid As MSHFlexGrid) As Long
>↑パラメーターを ctrGrid As Object にすればいいのでは?
やってみましたが、結局参照するMSHFlexGridを生成するところで
同じエラーがでました。
MSで調べてみたら、どうもこんなことはできないっぽいです・・・orz
>>492 コントロール配列にしてLoadしてみたら?
Toolbarで試したけど、Buttonsはインスタンスコピーされたっぽい。
printerオブジェクトについて教えてください。 出力先のプリンターを設定したいのですが Printer.DeviceName = "hoge" ではエラーになってしまいました。 どこが問題かわかるかたがおられましたら教えてください。 よろしくお願いします。
498 :
497 :2005/11/18(金) 17:26:30
できました。
499 :
デフォルトの名無しさん :2005/11/18(金) 17:31:44
イベントプロシージャで引数を受け取る時どーしたら良いのですか? private sub form_load(x as integer) などとすると,エラーが出て来ます.
面白い発想だな 笑わせてもらったよ
こんなところにもゆとり教育の弊害が
イベントプロシージャの引数は勝手に付けたり消したりできないよ( ´ー`)y-~~
その引数を何が送るんだよw
(´-`).。oO( その書き足した引数はどこから貰ってくるつもりなんだろう・・・ )
Optionalでwwwwwwwwwwwwwww
初心者いじめか。さすがVB厨は違うなw
下らない煽りか。さすがVB厨。
>>499 組み込みイベントをラップして独自イベントを起こすか、単純に関数呼び出し
>>495 組み込みコントロール以外のコントロールは
ActiveXを使って参照渡しできないよ。
同じマシンでコンパイルするとなぜかできるのが
謎だが
>>499 たぶんForm_Loadに書いてある処理をまた実行したくなったんじゃないか?
だったらその処理を別のプロシージャにして、それをコールすればよいのですよ。
自作プロシージャの引数はご自由に。
Form_Load時に、呼び出し元のローカルな変数の値が欲しいのかな?
だったらFormにPublic変数を作って、そこに代入してからShowしましょう。
Form_LoadでそのPublic変数を参照すればおk。
それ以外の目的だったら書いてください。それによって手段が変わるから。
511 :
デフォルトの名無しさん :2005/11/19(土) 09:01:15
ComboBox の Appearance プロパティを 3D → フラット に変えても 外見が変わらないのですが、これは仕様ですか?
じゃあ仕様ということで
冷たいなw
まあComboBoxのAppearanceはTextBoxとの統一性を量るための ダミー&読みとり専用プロパティだからね 値を変えても外見が変わらないのは仕様って言えば仕様だな
そうですか、残念… Label や TextBox を全部 フラット にしたのに、ComboBox だけ浮いて見えるw 最初からやり直すことにするか… さっきから画面のデザインばっかりに時間がかかってしまって そういったセンスが無いから正直しんどいw
BorderStyle
518 :
499 :2005/11/19(土) 09:39:40
>508 >510 ありがとうございます。 試してみますわ。
VB.NETのLinkLabelをVB6.0で実現したいのですが、 どのようにするのが一番簡単でしょうか。
Labelを元に自分でコントロールを作る
Public type
ミスったorz public type txt1 as textbox txt2 as textbox blnFlg as boolean end type のようなコントロールを含むユーザ定義型を作成して、 この中のテキストボックスをフォームに表示するにはどうしたらよいのでしょうか? ユーザコントロールも作ってみたのですが、配列にするとうまくいきません。 どなたかヘルプお願いします。
523 :
デフォルトの名無しさん :2005/11/19(土) 16:45:59
OS:WINDOWS XP VB:Excel2003に標準付属のVB 6.0(特にサービスパックなどいれていません。) Excel総合相談所 39 からVBスレで質問を、と誘導をうけてきたものです。 それでは質問させていただきます。 VBAを使用しInternetExprolerを起動させ、 ユーザアカウントとパスワードをフォームに自動入力させ、ログインする。 といったようなプログラムを組みたいのですが、ご教授お願いします。 その後エクセルと連動して、様々なユーザの場合を対応させて行くつもりです。 それではよろしくお願いいたします。
VB:Excel2003に標準付属のVB 6.0(特にサービスパックなどいれていません。) VBじゃねぇ
>>523 InternetExplorer.Application でページを開いて
DHTMLで ユーザアカウントやパスワード の入力欄を探して 値を入れて
送信(ログイン)ボタンをclick( ) で実行でOK
エクセルやアクセスなどの操作法じゃなければ、VBA使いがここで質問するのは構わないんだけど VBA使いはやる気無しの丸投げが多いんだよな。 プログラミングを勉強していこうって奴じゃなくて、VBAで自動化出来るのを知って VBAプログラミングも出来ないのに、なんでもかんでもVBAでやろうとするって奴。 VBAをちゃんと理解出来てれば、回答内容はVB使いに対するものとほぼ変わらないから ここにヒントを貰いに来るのはいいけど、丸投げはNGね。
528 :
519 :2005/11/19(土) 19:52:22
よろしくお願いします。
嫌です
え?
531 :
デフォルトの名無しさん :2005/11/20(日) 00:56:42
すみませんどうしても教えて欲しいことがあるんですが、 select 受注No form 受注M で受注Noを取り出し、 while文で、受注Noごとのレコードをあるだけ表示させようと思うんですが、 終了条件が分かりません。 Nullになれば、終了させればいいと思うんですが、文法が分かりません。 すみませんが教えてください。
DBはDB板へ
VBで200kb位のtxtファイルを読み込んで中に書かれている name ○○○ を探して○○○を抽出したいのですが 一体どーやって実現したら良いんですか。 さっぱりです。
読み込んで探して抽出すればいいじゃない
おはようございます "かきこむ"を"%8F%91%82%AB%8D%9E%82%DE"に変換する方法をおしえてもらいたいのですが。 JavaにあるEncodeのような関数はないのでしょうか?
536 :
535 :2005/11/20(日) 08:33:21
537 :
536 :2005/11/20(日) 08:38:19
自己解決しました ただ、まだ聞きたいことが増えました。 Hex$(bytSingle)のようにHexの右隣に$がついてるのはなぜでしょうか?
自己解決してください
539 :
536 :2005/11/20(日) 09:13:54
自己解決しました
>>540 「簡単」を妥協して「VB6で」を取るなら頑張って勉強しろ
「VB6で」を妥協して「簡単」を取るならVB.NETに移行しろ
どっちも妥協したくなければこういうことを簡単に実現できるだけの知識を身につけろ
以上
542 :
デフォルトの名無しさん :2005/11/20(日) 11:50:29
>>531 If rs.EOF = True Then
Do Until rs.EOF
'ということですか?
rs.MoveNext
Loop
End If
>>533 ’○○○はリテラルの文字列ですか?
Dim iFileNo As Integer
Dim ReadLine as String
Dim GetStr As String
iFileNo = FreeFile
Open "hoge.txt" For Input Shared As #iFileNo
Do While Not EOF(iFileNo)
Line Input #iFileNo, ReadLine
If Instr(1,ReadLine,"○○○") <> 0 Then
GetStr = Mid(ReadLine,Instr(1,ReadLine,"○○○"),Len("○○○"))
Call MsgBox(GetStr)
End If
Loop
Close #iFileNo
543 :
デフォルトの名無しさん :2005/11/20(日) 11:51:30
質問させてください nttkyo******.tkyo.nt.adsl.ppp.infoweb.ne.jpのようなホスト名を取得するには どの関数を呼び出せばいいのでしょうか? ちなみに、Winsockでサーバに接続しています(Winsock1というオブジェクトがあります)
544 :
540 :2005/11/20(日) 12:17:18
あの・・・私がお願いする度に妨害されて他の人が書き込みにくく なるのですが・・・ 520と529と541は同じ人ですよね。 他の方、お願いします。
(俺 = 520) and (俺 = 529) and (俺 = 541) = false (俺 = 520) or (俺 = 529) or (俺 = 541) = true
547 :
デフォルトの名無しさん :2005/11/20(日) 12:35:54
>>544 が死んでくれる方法誰か教えて貰えませんか?
548 :
543 :2005/11/20(日) 12:42:26
誰かご存知なかたいますか?
VB厨 VS 催促厨かwwwwwwwwwwwwwwwwwwwwwww
550 :
デフォルトの名無しさん :2005/11/20(日) 12:45:03
>>544 VB.NET使ったことないんで想像の域なんですけど
LinkLabelってクリックしたらWEBページに飛ぶような仕組みの
コントローラでしょうか?
だとしたらVB6でOCXコンポーネントにしてしまっては如何でしょう?
考え方としたらCtlフォームにラベルかテキストコントロールをデザインして
MouseMoveイベントでカーソルがコントロール上に来た時に
マウスカーソルを変更したり、文字列の色を青くするなりで見栄えは
再現できると思います。肝心のリンクですが
参照設定でMicrosoft Internet Controlsを設定し
Private Sub Text1_Click()
Dim ie As New InternetExplorer
'画面サイズの設定
ie.Left = 10
ie.Visible = True
ie.Height = 2000
ie.Width = 1000
'InternetExplorerの実行
ie.Navigate Text1.text
Exit Sub
End Sub
みたいな感じでいけないでしょうか?意味を取り違ってたらすみません
551 :
デフォルトの名無しさん :2005/11/20(日) 12:55:03
>>551 接続されているサーバ名です
わたしはNiftyで接続してるので、
nttkyo******.tkyo.nt.adsl.ppp.infoweb.ne.jpなんですが・・・・。
これを関数で取得したいのです。
Winsockオブジェクトのプロパティをみたところ、取得関数が見当たらないもので。
553 :
デフォルトの名無しさん :2005/11/20(日) 13:03:39
>>552 Winsockオブジェクトとは
wsock32.dllを利用してるんでしょうか?
接続するIPアドレス等の情報があろうかとおもうのですが
gethostbyname()関数はありませんでしたか?
554 :
552 :2005/11/20(日) 13:27:41
やってみましたが、localhostになってしまいます。
ルータ接続ってオチに100ペソ
556 :
552 :2005/11/20(日) 13:51:58
いったんサーバにPOSTしてから、レスポンスでホストが帰ってくるのでそれを使うらしい。 一応解決。 あと、 ' データ受信 Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) データ受信で、「いつ受信が終わったのか」を知りたいのだが。 てっきり、受信終了のさいは、bytesTotalに0が代入されてるとおもってた・・・。 でも、0が代入されないな。
557 :
544 :2005/11/20(日) 15:56:21
>>545 やめてとお願いしたのにまたやるということは、日本語が
通じなかったということでしょうか?
>>546 =false
間違っている上につまらない書き込みをする意図が分かりません。
>>550 コントローラ?何が言いたいんですか?
再現できると思います、って当たり前でしょ?
つまり 519はネタだから相手にしないで下さい ってことですね さてでは次の話題に行きますか
>>557 なーなー そんな事よかさ
エビフィレオのCMでてる蛯原友里って可愛いとおもわん?
最高だよな。
562 :
デフォルトの名無しさん :2005/11/20(日) 17:48:59
VB厨VS催促厨
563 :
デフォルトの名無しさん :2005/11/20(日) 17:50:35
移植のためにVB4のRATE関数の計算内容が知りたいのですが、 載っている場所等ご存知の方はいらっしゃいませんか?
564 :
563 :2005/11/20(日) 18:00:46
誰かご存知なかたいますか?
今んところはいらっしゃいません 提案なのですが明日まで気長に待ってみてはいかがでしょうか?
>>566 そしたら何が聞きたいんだよ?ちゃんと真面目にレスかえしてくれてる
奴にも喧嘩ごしじゃーん。
>>567 バカを相手にするのが楽しいだけですが何か?
569 :
デフォルトの名無しさん :2005/11/20(日) 19:20:49
なんだ釣りですかぁ。やられた
570 :
デフォルトの名無しさん :2005/11/20(日) 19:47:41
こんばんわ VB6(SP6)で質問なのですが フォームを表示せず、タスクバーに表示させる 方法を探しているのですが、分かりません。 どなたか知ってる方がいましたら、教えてください。
>>570 常にフォームを最小化させとけばどうでしょう。
いったいどういう用途で > フォームを表示せず、タスクバーに表示させる が必要なんだ?
575 :
デフォルトの名無しさん :2005/11/20(日) 20:20:38
>>572 他人が私のフリをした書き込みだったのですが、
その区別もつきませんか?
578 :
デフォルトの名無しさん :2005/11/20(日) 20:26:49
もうどうでもいいや何かムカついたんで もう教えな~い 他のレスまってね。がんばって
>>578 答えられるスキルのない人には初めから期待してませんよ。
はいはい凄いね凄いね
>579 今日俺、女できたんだ、今日は何言われても許す。
>>578 分からないことを隠すときは皆さんそういう態度になりますね。
どの質問よ?俺が教えたる。
おお そうだそうだ ちゃんと質問してみろよ 釣りじゃないならな
ちゅうか暇人でどうせ童貞な厨房の煽りなんだから 放っておけ
どうやらドトネトのコントロールをブイビで再現したいらすぃ けど対して困って無いんでしょ レスの展開が煽りそのものだし 週末の暇潰しに煽りくれてるだけ
そろそろ釣れた釣れた、と言い出す頃か
で?
LinkLabelはVBには無いからなぁ 自作しろ以外言いようが無いよ 「自作しろ」って回答に何が不満なんだ?
596 :
デフォルトの名無しさん :2005/11/20(日) 23:03:18
>どのようにするのが一番簡単でしょうか。 これがポイントだってことだな。 一番簡単なのは諦めることだ。そして死ね。
ある意味本当のつり氏だw
>>595 ちゃんとメインコード書いてくれてるやついるじゃねえか
それで参考ならないなら藻マイは無能のVB厨だ
VBで.Netを補うなら自力でやるしか無いのさ
概要がわからない奴は,Netだけ使いこなせるように励んどけボケ
またまた今日は凄い週末厨が来てるじゃない
600 :
デフォルトの名無しさん :2005/11/21(月) 01:19:54
初回の質問以外全部偽者だろう。じゃなきゃ あ り え な い
>>597 あなたコードを書いた本人ですか?
あんなコードをよく恥ずかしげもなく投稿できますね。
PG1年目の私でも鼻で笑ってしまいましたよ。
604 :
550 :2005/11/21(月) 13:37:04
>>601 >>519 様
550でコードを書いた者です。私自身スキルが無く逆に混乱させるような回答してしまい
すみませんでした。少しでもお役に立てればと思いレスさせていただきます
実際に出来るかどうかの環境が無く、今日少し時間を見て作りこんでみました
エラーや入力条件などガッチリ作っていないですがご希望のOCXベースに
なればうれしいと思います。役に立たなければスルーしてください。
605 :
550 :2005/11/21(月) 13:39:14
Option Explicit
Dim iSize As Integer
Dim sLnkLbl As String
Private Sub Text1_Click() 'クリック時
Dim ie As New InternetExplorer
ie.Left = 10
ie.Visible = True
ie.Height = 2000
ie.Width = 1000
ie.Navigate Text1.Text 'InternetExplorerの実行
End Sub
Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Screen.MousePointer = vbUpArrow
End Sub
Private Sub UserControl_Initialize() '初期化
Text1.ForeColor = vbBlue
Text1.BackColor = vbScrollBars
Me.LinkLabel = "
http:// "
Me.FontSize = 10
End Sub
Private Sub UserControl_Resize() 'デザインされたコントロールのリサイズ時連動リサイズ
Text1.Height = UserControl.Height
Text1.Width = UserControl.Width
End Sub
606 :
550 :2005/11/21(月) 13:40:03
Public Property Get FontSize() FontSize = iSize End Property Public Property Let FontSize(ByVal vNewValue As Variant) 'フォントサイズの変更 Text1.Font.Size = vNewValue iSize = vNewValue End Property Public Property Let LinkLabel(ByVal vNewValue As Variant) '表示するリンクラベル Text1.Text = vNewValue sLnkLbl = vNewValue End Property Public Property Get LinkLabel() LinkLabel = sLnkLbl End Property
607 :
デフォルトの名無しさん :2005/11/21(月) 16:40:57
608 :
550 :2005/11/21(月) 17:01:45
追記です。
①上記の Text1_Click()イベントの最後に
Set ie = Nothingが抜けておりましたすみません。
②マウスカーソルを変更する処理は中途半端になってしまっています。すみません
③VBで新しいプロジェクトの作成Project1(ActiveXコントロール)を開き
UserControl1に上記コードを貼り付けします。コントロールのデザインは
text1のみでOKです。Text1のBorderStyleプロパティを0-なし設定し
MultiLineをTrueに設定します。UserControl1画面とTextコントロールの
サイズを一致させるとデザイン時にキレイにレイアウトできると思います
次に参照設定でMicrosoft Internet Contorolsを設定しコンパイルしてください
④コンパイル後、出来あがったproject1.ocxのRegsvrを行います。
⑤親画面(呼び元のメイン画面)となるプロジェクトを開きコンポーネントの追加にて
project1.ocxを設定し、画面デザインにて当該コンポーネントをデザインします。
Form_Loadイベント内に UserControl1.LinkLabel = "
http://www.yahoo.ne.jp "
のようにURLを設定し、実行するとリンクラベルに似たコントロールが出来上がっています
これをクリックすると、当該URLのIEブラウザに遷移する仕組みです
お兄ちゃん人が来ちゃうよまで読んだ
煽り相手にマジレスすんなよ。時間の無駄無駄無駄無駄あ
611 :
デフォルトの名無しさん :2005/11/21(月) 17:42:43
>>608 の便乗の質問で悪いのだが、Set ie = Nothingというのは必要なのか?
Private Sub Text1_Click() 'クリック時
Dim ie As New InternetExplorer
Set ie = Nothing
End Sub
最後で参照が消えるから自動でGCされると思ってたのだが、
必要だという奴や例を何度も見かけるんで自身がなくなってきた。
VBはそういうものなのか、以前Set NothingしないとGCされないようなバグでもあったのかどうなんでしょう。
Set Nothing は必要ない VBは変数のスコープが外れた時点で勝手に参照数が -1 される 参照数が 0 になった時点で 初めてGCの対象になる でも実際どのタイミングでGCされるのかはVBのみぞ知るといった感じ?(知ってたら教えて) Set Nothing は コードの読解性を高める為に書くんじゃない? 俺も書くよ あとよく間違えてるヤツがいるけど Nothing を代入する事がオブジェクトを開放する作業では無いので要注意
613 :
550 :2005/11/21(月) 18:43:57
>>611 >>612 おっしゃる通りの見解です。おなじないのレベルとして付与しているコードです。
>>608 の補足としてですが、Textコントロールはコントロールからの入力をロックする等
プロパティの設定が厄介なのでLabelコントロールを利用したほうがラクで良いかもしれませんね
614 :
デフォルトの名無しさん :2005/11/21(月) 20:33:54
暇な方手伝ってください。分かりません。学校の宿題です。 ダイオードの点滅のシュミレーションプログラムです ________________________________________ ● ● ● ● ● ● ○ ○ __________________________________ 右から1個ずつ、右から2個ずつといった風に点滅させます。 黒い丸●を消灯、赤い丸○を点灯としてやってきます。 次にそのプログラム書くんで だれか手伝ってください。 Text1.Text = Hex(s1)はテキストボックスに16進数で表示させてるだけで無視でいいです。 Case 4をベースに頼みます 後は Case 5 右から5個ずつ点灯●●●●●●○○→●●●●●○○● →●●●●○○●● ○○●●●●●●→○●●●●●●○ →●●●●●●○○ こんな感じで Case 6 穴の移動(これはできました) Case 7 左から一個ずつ点灯(これはできました) Case 8 (これもいいです) Case 9 左右から点滅○●●●●●●○→●○●●●●○● →●●○●●○●●→●●●○○●●● →●●●○○●●●→●●○●●○●●こんな感じで どなたか暇な方お願いしますm(_ _)m。
615 :
614 :2005/11/21(月) 20:35:36
________________ Dim k As Integer Dim mode As Integer Dim b(8) As Integer select Case mode Case 4 '右から1個 If k < 2 Then k = 8 Else k = k - 1 s = 2 ^ (k - 1) For i = 0 To 7 b(i) = (s \ 2 ^ i) Mod 2 If b(i) = 0 Then FillColor = QBColor(0) If b(i) = 1 Then FillColor = QBColor(12) Circle (1200 * (i + 1), 2000), r Next i s1 = 2 ^ (8 - k) End Select Text1.Text = Hex(s1) End Sub ___________________
宿題は自分でやりましょうね
>シュミレーション
>614 case 7のコード晒してみてくれ 挙動がよくわからんがcase 4 のコードだったら一気に描画されるんじゃない? 結果的にそのLEDだかが赤色になるだけじゃ駄目なんだよな? タイマーとかスリープ使っていいんかいなぁ? 変数の定義あったり無かったり 初期化してたりなかったり すげぇコードだなおいw
つーか つーか つーかさw せめて表示部を関数1つにまとめろと ポケコンBASICでVBソース書いてるかと思ったw
破損Jpegを表示しようとするとLoadPictureでもSUSIEプラグイン使っても 高確率でアプリが落ちちゃうんですが、VB6以前でGDI+を使うのは結構 面倒ですよね。 尚SUSIE プラグインは標準のじゃなくて落ちにくいのでもそうなります。 他に良い方法は無いでしょうか?
623 :
622 :2005/11/22(火) 08:22:49
あ、VB6以前と書きましたけど実際はVB5を使ってます
破損jpegなんて読み込むな
表示前に破損Jpegだって分かればそうしますけどSUSIEプラグインの "IsSupportedJpg"使っても判別できないんですよ 他に読み込む前にやばいのが分かる方法ってありますか?
表示だけならIEでも貼り付ければ?
だが断る
大却下
なお断る
巨大却下
さらに断る
超巨大却下
却下側の語彙が乏しいな
636 :
522 :2005/11/22(火) 12:14:33
(´-`).。oO(誰かお願いしますよ…まじで)
>>622 ファイルの破損状況によると思う
余りのも無残に破損したファイルなら
何しようが無理だと思う
IFJPEGX.SPIを使うといいかも
ファイルをバイナリエディタでワザと壊しても
表示できてたよ(画像はメチャクチャだけど)
>>522 に必要なのはプログラマーではなくエスパーだと思う。
エスパーて禿げワロタ 550に糞コードocx化してもらえw
>641 どうでもいいですよ
お~いエスパー伊東 エスパー伊東はまだか
はい~~っ
645 :
デフォルトの名無しさん :2005/11/22(火) 20:48:20
ユーザー定義型の構造体を他から共有して表示するよう たのむ>エス伊東
>>522 コントロールを含むユーザ定義型というが、
そこコードは、TextBox型の変数が定義されているだけであって、
TextBoxのインスタンスが生成されているわけじゃない。
プログラムで、TextBoxのインスタンスを生成して、
それをフォームに表示するやり方は他の人どうぞ。
ここまで説明すればエスパーじゃなくてもなにがしたいか分かるだろ?
>>611 > VBはそういうものなのか、以前Set NothingしないとGCされないようなバグでもあったのかどうなんでしょう。
昔探したけど、そういうバグがあったとかいう情報は見つからなかった。
バグだ!という情報が無かったわけではないが、それはよく読むとそれはバグではなく勘違い。
昔のVBはクラスやらオブジェクトやらがなかった。それがVB4(?)あたりで導入されたときに、
アプリが終了しないことがある
↓
グローバルなForm1変数がForm1フォームを参照しているためにアプリが終了しない
↓
Form1にNothingを入れると、Form1フォームの参照がなくなるためにアプリが終了する
↓
Nothingを入れると解放。それだ!
という風に、VB4以前のプログラマがちゃんと原因を理解せずに解決してしまった方法 が、普及したのだと思っている。
VBでオブジェクトが解放されないなんてありえない
>>612 > でも実際どのタイミングでGCされるのかはVBのみぞ知るといった感じ?(知ってたら教えて)
どのタイミングでオブジェクトが破棄されるかは、そのコントロール(COMコンポーネント)の実装によるはず。
COMコンポーネント側から見ると、参照数が増える時点で、AddRef関数が即座に呼ばれ、
参照数が減る時点即座にで、Release関数が呼ばれる。
AddRef/Release関数の内部の処理を書くのは、COMコンポーネントプログラマの仕事
(実際はテンプレートそのままだろうけど)
たいていは、参照数が0になった時点で自分を破棄するように実装されている。
ただし、それは決まっているわけではなく、そうなっていないコントロールもあるらしい。
>>648 たとえ、VB側で適切にコードを書いていたとしても、
COMコンポーネント自体にバグがあれば、ありえない話ではない。
COMコンポーネント部分がVBかという疑問は残るが。
COMのライフサイクル管理とVBのガベージコレクションは別物だよ。
VB6以前ならGCは無いのでは?
GCって何だ喰えるのか?
>>649 見方の違いだけじゃないかな。COMの参照ポインタは確かに加算されるが、
下のようにVB内で3つの変数に代入したからといってCOMの参照カウンタは加算されない。
dim x1 as obj1, x2 as obj1, x3 as obj1
set x1 = new obj1
set x2 = x1
set x3 = x1
あくまでもNewされたobj1への参照がなくなったかどうかはVB内のGCによって管理され,
VBがGCするタイミングはx1, x2, x3からの参照がなくなった後任意のタイミング。
VBがこのobj1をGCするときにそれがCOMであれば参照カウンダを減算し開放するのは2次的なこと。
>>653 ふるーいインタプリタBASICの時代からあるよ。
当時はせいぜい0や空文字になった変数や文字列用のワークを片付ける程度だったけどね。
657 :
522 :2005/11/23(水) 06:02:57
変数を宣言して、load とか setとかいろいろやってみたけどできません。 もうちょっとヒントください。
もうちょっとヒントください、もうちょっとヒントください、と言い続けてたら 最後にはコード全部書いてもらっちゃいましたとさ。 という展開を期待してるのか?
659 :
522 :2005/11/23(水) 12:14:02
そういうわけでなないですが、インスタンスを作成して、フォームに表示だけじゃわかりません… 変数を宣言してload とか setでインスタンスを作成→.container .visible等を変更してフォームに表示 だとどこかおかしいですか? ネットでサンプルを探しても全然見つからないんですよorz
オブジェクト参照にとにかくNothingを入れとけって話は たぶんエクセル関連のオブジェクトを突っ込んだときのオマジナイが 馬鹿の一つ覚え的にひろまったものじゃない? 「花ちゃん」とかいう有名なサイトに書かれているようなのね。 VBプログラマだけじゃないけど、経歴だけは無駄に長い(能力が経歴に比例してないw) 人ってプログラミングとはこういうオナジナイを覚えることだと思ってる節があるよね。
>>522 は何がしたいのだろう。
ひょっとすると自分でもよくわかってないんじゃないの?
まず何をしたいのか明確にしないと話始まらないよ。まあネタかもしれないけど。
>>522 を普通に読めば、txt1とtxt2を含むフォームが欲しいなら
デザイナでそういうフォームを作るだけだろ、としか思えない。
663 :
デフォルトの名無しさん :2005/11/23(水) 13:37:34
アクティブレポートの解説ホームページってありますか? 探してみたんですけどなかなか詳しいページが見つからなくてここで質問させていただきました。
>>522 は動的にTextBoxが作りたいんだろ
VBはJAVAではありませんので漠然とTextBoxのインスタンスが存在するんではなく
FormがあってのTextBoxなので
Set udt522.txt1 = New VB.TextBox
With udt522.txt1
Set .Container = Form1
.Visible = True
End With
なんて出来ません Containerも変更できません
Set udt522.txt1 = Form1.Controls.Add("VB.TextBox", "Text1")
Set udt522.txt2 = Form1.Controls.Add("VB.TextBox", "Text2")
udt522.txt1.Visible = True
udt522.txt2.Visible = True
ってやってください
665 :
522 :2005/11/23(水) 15:59:22
おとこわりだ ふぅー!
667 :
522 :2005/11/23(水) 17:31:52
>>664 さん
>Set udt522.txt1 = Form1.Controls.Add("VB.TextBox", "Text1")
あ、なるほど! ちょっとやってみます。ありがとうございました!
で、目的はテキストボックスが二つ乗ったフレームを動的に増減したいんです。
関係するフラグを別配列で持っていたんですが、フラグの種類が多くて管理しにくいのでユーザー定義型でできないのかと思った次第です。
ユーザコントロールを作成したのですが、配列にすると、
コントロール内のイベント定義と、フォーム内のイベントの引数が違い(byref indexがある・ない?)
?でうまくいきませんでした。
ちょっと話がそれるかもなんですが、VB6のコントロールのインスタンスってのは
>>664 さんのおっしゃるとおり漠然としたものなのでしょうか?
変数宣言すればインスタンス? Loadしてからがインスタンスなのでしょうか?
VB6にインスタンスって言葉を持ち込むこと自体がおかしいのでしょうか?
668 :
522 :2005/11/23(水) 17:40:21
一応動かないソースも貼っておきます。 その1 dim obj as object set obj = new udt522 '←ここでエラー with obj.text1 .container=form1 .visible=true end with その2 dim udt as udt522 load udt.text1 '←ここでエラー その2が動かない理由がよくわからないのですが、精進します。ありがとうございました。
669 :
デフォルトの名無しさん :2005/11/23(水) 18:01:25
クリスマスまでに女ができるって感じ のプログラムを VBで作りたいのですが どういう仕様で作ればいいでしょう? ユーザコントロールでもいいとも~
>>667 漠然としてるのはVBのコントロールじゃなくて君の理解でしょ。
馬鹿じゃないの。
コントロールをフォームに追加する方法はググればいくらでも出てくる。
追加した複数のコントロールを一まとめで管理したいなら、
その追加したコントロールを構造体のメンバのオブジェクト変数に代入するだけ。
まあ構造体じゃなくてクラスにした方がいいと思うけどね。
イベントを扱うことやその他いろいろ考えると。
工夫すればフォームにコントロールを追加する処理をクラスの中に隠蔽できるわけだし。
>>669 漠然としてるのはVBのコントロールじゃなくて君の理解でしょ。
馬鹿じゃないの。
C#でDLLを作り、そのDLLをVB(A)で呼び出して使用したいと考えております。 //C#ソース namespace ClassATest { public class Class1 { public Class1() { } public int[] retint(int i, int[] j) { int[] matrix = new int[2]; matrix[0] = i*2; matrix[1] = j[0]+j[1]; return matrix; } } } 次に続く
673 :
162 :2005/11/23(水) 20:50:17
//VB(A)ソース Sub test() Dim obj As ClassATest.Class1 Dim j(2) As Integer, Ans As Variant ReDim Ans(2) j(0) = 10 j(1) = 20 Set obj = New ClassATest.Class1 Ans = obj.retint(5, j) MsgBox Ans(0) End Sub 実行すると、Ans = obj.retint(5, j)の行で「型が一致しません」 と言われてしまうのですが、何故でしょう…? jを配列ではなく、普通のinteger型にするとうまく動くのですが、 C#のDLLに配列型を渡すにはどのようにしたらいいんでしょうか…?
横スレすみませんちょっと暇つぶしにリンクラベルを作ってみてたんですが そういえばVBのマウスポインタでインターネットのURL上に来た時のマウス 「指先」はscreen,NousePointerのプロパティに存在しないんでしょうか
675 :
672 :2005/11/23(水) 20:52:45
インデントがなくなって見にくくなってしまいスイマセン…。 それと上の書き込みの名前は672の間違いです。
>>673 C#のintはVBAのLongではないか?
678 :
672 :2005/11/23(水) 21:24:18
>>676 ありがとうございました!
Longにしたら一発で動きました。
あぁ、こんなことに丸一日使っちゃうなんて…。
そこから、ろくな下調べもせずにいきなりコードを書く怠慢は結局高くつくと学習するか、 ああわかんない事があればダメモトでとにかく人に質問すればいいんだと学習するか。 672が後者のウザい奴にならないことを祈るばかり。
680 :
672 :2005/11/24(木) 01:46:29
次にこのスレに書き込むことは、質問に対する回答であることを誓います。
テキストファイルに出力するところでわからないことがあります。 Open "text.txt" For Output as #1 For i = 1 to 5 print #1, i; next i Close #1 とループカウンタの値をファイルに書き込むと 1 2 3 4 5 と空白が入ります。 ループカウンタの値を使わずに Open "text.txt" For Output as #1 print #1, 1; print #1, 2; … print #i1, 5 Close #1 と出力すると空白が入らずに 12345 となってしまいます。 なぜこうなるのか原因を教えてください。おねがいします。
よくは判らんが、暗黙の型変換が入るからじゃないの?
なぜといわれても、それがVBの挙動だとしか言いようが無いんだがな
俺は下の条件でも空白有りだった
じゃあ俺は空白なしで
じゃあ俺は空白有り無しがランダムで
じゃあ俺は全角スペースで
>>681 ウチだと、どちらでも空白が入るな(VB6 SP6)。
数値型だから符号用に空白が入るんだろ。
print #1, CStr(i);
print #1, "1";
でやってみそ。
VB6.0でWindowsのスタートメニューのようなものを実現したいのですが、相談させてください。 イメージとして、メニュー型ランチャのOrchishのような物を作りたいと考えています。 ググったりして、フォームのあらかじめ用意して置いたラベルにアイコンをドラッグして登録、 それをクリックすると開く、という事はできましたが、なんとなく見当ちがいのことをしている気がしてなりません。 (例えばラベルなんて使わないんじゃないか?とか) スタートメニューのようなメニューの作製には、 なにか適した専用のツール(コンポーネント?)みたいなものがあるのでしょうか? もしそうならそれが何と言うものか教えてください。 VB6.0というより、VB6.0でプログラムの基礎を学んだ程度の知識しかないので、 もしこの質問自体がまったくの見当違いであれば、勉強すべきものを教えてください。
691 :
デフォルトの名無しさん :2005/11/24(木) 18:10:50
ステータスバーのようなコントロールに 文字列を右から表示し左へ消していくような スクロールのような処理をつくりたいですが どのように作ればすっきり動きそうでしょうか? 1秒5カラム(文字?)移動くらいを希望しております。
692 :
デフォルトの名無しさん :2005/11/24(木) 18:44:54
VBの、というよりもアルゴリズムの質問になりますが、 アルゴリズムの質問スレが見つからない & VB6で開発しているので、 こちらで質問します。 ある多角形の中に、点を決められた個数プロットしたいんですが、 効率的にプロットするにはどうすればいいでしょうか? たとえば、台形のような形の中に、点を100個(多くても少なくてもいけない)を ランダムに打ちたいわけです。 今は多角形のリージョンを作成 & XYの最大最小を計算して、 その最大最小の中でランダムに点を発生させ、リージョンに入れば 合格の点としてカウント、それを望みの個数になるまで繰り返していますが、 個数が多くなったり、図形が細長かったりすると、非常に時間がかかります。 うまい解決方法はないでしょうか?
どうやればいいんだろうねえ。俺も興味あるよ。 単純な多角形で、かつ点の密度が均一でなくてもよければ 円内のランダムな点を極座標で作ってそれを多角形内の点に写像することを 考えれば計算量すくなそうだけど。 密度を均一にしたい場合はθの確率密度関数を求めて、 それに基づいてランダムな極座標を作る必要がありそうだけど…どうすりゃいいんだろ このスレに数学的なセンスの持ち主って少なそうだから回答は期待薄だと思う。
694 :
691 :2005/11/24(木) 19:53:39
一応イメージ的に自作してみたんだけど激しくプロセス食ってます。助けてください Sub Main() strMoji = "本日は晴天のもよう" StatusBar1.Panels(1) = " " & strMoji Do Until InStr(1, StatusBar1.Panels(1), Chr(32)) = 0 If chKPrc.Value <> 0 Then Exit Sub DoEvents Call stopp(40000) StatusBar1.Panels(1) = Mid(StatusBar1.Panels(1), InStr(1, StatusBar1.Panels(1), Chr(32)) + 1) '& strMoji Loop strLen = Len(strMoji) i = 2 Do Until strLen = 0 DoEvents StatusBar1.Panels(1) = Mid(strMoji, i) '文字部分本体を前部から除去して詰めていく Call stopp(60000) i = i + 1 strLen = strLen - 1 '文字数のデクリメント Loop End Sub Private Sub stopp(ByVal intWt As Long) Dim h As Long h = 0 Do While h < intWt DoEvents h = h + 1 Loop End Sub
>>694 stopp じゃなくって Sleep 使え
素直にタイマーでやった方が負荷少なくていいと思うよ
ステータスバーの文字スクロールなら JavaScript で山ほどサンプルあるから
VBに書き換えて使ってみ
ステータスバーのどれだけの範囲でスクロールするんかによるけどな サイズ関係無しに、ステータスバーの右端からだったら、 JavaScriptのサンプルなぞ役にたたん
>>694 暇なんで書いてみた。こういう奴でよかったかな。
'Form1のコード
Private mDisplay As New Class1
Private Sub Form_Load()
With mDisplay
Set .Panel = StatusBar1.Panels(1)
Set .Timer = Timer1
.Message = "本日は晴天なり"
.ShiftPerSec = 5
.Start
End With
End Sub
'Class1のコード Private mPanel As Panel Private WithEvents mUpdateTimer As Timer Private mMessage As String Private mCurrentMessageToShow As String Private mLenCurrentMessageToShow As Integer Private mShiftPerSec As Single Public Property Set Panel(pnl As Panel) Set mPanel = pnl End Property Public Property Set Timer(tmr As Timer) Set mUpdateTimer = tmr mUpdateTimer.Interval = 1000 / mShiftPerSec End Property Public Property Let Message(msg As String) mMessage = msg mLenCurrentMessageToShow = Len(msg) End Property
Public Property Let ShiftPerSec(spd As Single) If spd > 0 Then mShiftPerSec = spd End If If Not (mUpdateTimer Is Nothing) Then mUpdateTimer.Interval = 1000 / mShiftPerSec End If End Property Public Sub Start() mUpdateTimer.Enabled = True End Sub
700 :
967 :2005/11/24(木) 21:11:48
コピペ漏れ Private Sub Class_Initialize() mMessage = "No Message !" mLenCurrentMessageToShow = Len(mMessage) mShiftPerSec = 5 End Sub 久々にVB触ったけどやっぱ不便だねいろいろ。 痒い所に手が届かない不条理感というかなんというか。。
701 :
デフォルトの名無しさん :2005/11/25(金) 08:41:22
VB6SP5です。 Delphiで作ったMainForm.exeと、VBで作ったフォーム無しexeが、 同一フォルダにあります。 VBのexeはMainから呼ばれてユーザ権限チェックをしてるんですが、 その結果をメインに返す方法をお教えください
>>692 図形上の点の数なんて、
対象の図形を塗り潰しておいて、描点時に色を調べれば一発じゃない?
>>701 VBでEXEのリターンコード設定するのは推奨されてないので
ファイルやマップ経由でやりとりするかプロセス間通信等で。
704 :
デフォルトの名無しさん :2005/11/25(金) 10:01:13
>>656 そうそう。文字列を大量に使ってると不意に2秒くらい固まったりして
音楽演奏が途切れたり・・・ってもうベーマガ世代ばればれやん。
705 :
692 :2005/11/25(金) 12:36:04
>>693 すみません、自分もご他聞にもれず
数学にうといもので、書かれたこともあまり理解できてません・・(・∀・;)
ゆっくり調べてみます
>>702 や、それはリージョンの内包判定(PtInRegion)の方法を変えただけで、
その部分を問題にしてるわけではないんです。
>個数が多くなったり、図形が細長かったりすると、非常に時間がかかります。
というわけなんです。
ランダムを発生させる範囲を、真四角にしなければいいのかな・・・
>>692 一旦矩形内の全ピクセルを調査し、リージョン内部にあるものを配列等に保存
そこからランダムにn個抽出してみては?
このほうが時間がかかるかもしれないが・・・
707 :
デフォルトの名無しさん :2005/11/25(金) 13:51:41
コマンドボタンに右クリックでメニューが呼び出されるようにしたんだけど、 コマンドボタンを配列にするとコンパイルエラーがでますた。 原因をおしえてね(はぁと) Private Sub command1_Mousemove(Button As Integer, Shift As Integer, X As Single, Y As Single) 'もし、クリックされたのが右ボタンならポップアップメニューを表示する。 If Button = vbRightButton Then Me.PopupMenu mnu End If End Sub
>>705 >XYの最大最小を計算して
1. リージョンに外接する矩形を小さい矩形のメッシュに
分割、それと同要素数の 2次元配列 (Boolean) を作る。
2. 各々のメッシュがリージョンにかかっていれば True。
3. ある点がリージョンの内部かどうか判定する前に
その座標を元に直接この配列を参照する。
分割数によっては 2. でかえって時間が掛かるかも知れず。
>>707 Index As Integer を付加
Private Sub command1_MouseMove(Index As Integer, Button As Integer, …
710 :
707 :2005/11/25(金) 14:29:31
>>709 うわっ!!!!
すっげぇーーーーー
できた!!!!!
おまい天才!!!!!
もう神!!!!!
助かったぜ!!!!
うざ
713 :
デフォルトの名無しさん :2005/11/25(金) 16:23:05
>>712 発想がつまんねぇんだよ
存在ごと消えうせろ
うざ
うわっ!!!! すっげぇーーーーー できた!!!!! おまい天才!!!!! もう神!!!!! 助かったぜ!!!!
716 :
デフォルトの名無しさん :2005/11/25(金) 16:41:32
VBが読めるっていうのはどういうことが出来るまでのレベルなのか、 大体でいいので誰か教えて
ブビ と 読 め れ ば そ れ で 神
VBが読むより空気読む方が先
>>707 >>709 のとおりにしたらIndexがいくつなのか調べるのを忘れないで。
あと次からはエラー番号もお願い(ウフ)
>>716 なにやってるか自然言語で説明できるくらい
ベーマガ移植大作戦
申し訳ない。
>>537 と別人ですが同じ質問です。
VB helpで検索しようとすると、
「ローカルディスクは、"MSDN VS 6.0 local"のファイルを含んでいません。
再度、ファイルの場所を指定してください。
C:\Program Files\Microsoft Visual Studio\MSDN98\98VS\1041\」
と表示されます。
VBの自宅での勉強のため、Microsoft visual studio 6.0 disc1と
MSDN disc1を会社から借り、インストールした状態です
(月曜日の返却時はアンインストールします)。
また、ググろうとすると、$の文字を認識してもらえないようで
$を無視した検索結果となります。
他の文字列での検索で、関数説明などは検索できたのですが、
$付と無しの差の説明は、まだ見つけられておりません。
VB5の入門マニュアルも会社から借りたのですが、
こちらには特に記述は無いようです。
ご教示をお願いしたく思います。
月曜までで辞めるなら覚える必要も無い
>>724 説明足らずでした…。
来週月曜日に一旦会社に出て、12/1(契約開始日)から出勤となります。
>>723 諦めが早すぎる。そういう粘着性が足りない人はプログラマ向かないよ。
現に、今思うに任せて「vb left "left$" 違い」でググってみたけど
ちゃんと解説してるところが見つかったよ。
$付きは文字列で値を返すってだけじゃないの?
>>726 うああ!ありがとう (´;ω;`)
ググる時に、"で囲むことも勉強になりました。
もっと粘着しつつ精進します <(_ _)>
りろーd orz
>>727 ありがとう (´Д⊂
$無しでVariant型、$付でString型と判りました。
>>727 はぁ?
$あろうが無かろうが文字列だよ
どう見ても文字列型の間違いです。ありがとうございました。
はぁ? $があろうが無かろうが文字列型だよ
はぁ? $があろうが無かろうが文字列型だよ
>>729 かつてはそうだったかも知れないが、VB6現在でそうかどうかは疑問だな。
$つきはすでにレガシー構文じゃないかな。
直前のレスも見えない人ですか?
実験してみた 繰り返した回数 20,000,000 格納先をstring型とvaliant型二つ用意してかかった秒数比較 string型 valiant型 Mid$ 3 5 Mid 5 7 Left$ 2 3 Left 5 5 Right$ 3 3 Right 5 5
738 :
729 :2005/11/26(土) 12:14:27
ありゃ?
リファレンスマニュアルが無いとだめか…。
>>736 見て、$付けたままコーディングしてみる。
月曜日に聞いてみるよ。
レスありがとん。
Variant型は嫌いです
>>738 VB6でサーバーにあるテキストファイル(複数)を読み込んで
編集した内容をサーバーのあるフォルダに保存するような物を
作っているのですが、複数のファイルを読み込むにはどうしたら
良いのでしょうか?どなたか教えてください。
複数のファイルにアクセスすれば医院で内科医?
>>741 レス有難うございます。色々本などを見たのですが
下記のような記述を見つけたのですが、これだと複数のファイルは
読み込めるのでしょうか?ファイル番号と言うのが良く分からないのですが,,,
↓
open ファイル名 For input As#ファイル番号
そもそもそれで開けるようなサーバーなのかと
>>740 には早いような希ガス
>>743 やっぱりDAOとかADOって言うのを使わないと
サーバーには接続出来ないんですか?
>>742 ファイル番号は1~511の範囲で勝手につければいい。同時に複数のファイルを
使用する場合は重複しないように気をつけて。
ただ、本とかの例では #1 とか #2 と直値で書いていることが多いけど
できれば FreeFile で、VB に空き番を管理させる方がいい。
以下、サンプル。
Dim File1 As Integer, File2 As Integer
File1 = FreeFile
File2 = FreeFile
Open "file-1" For Input As #File1
Open "file-2" For Input As #File2
INPUT #File1, Data1
INPUT #File2, Data2
Close #File1
Close #File2
2つのイベントが同時に発生したらどうなりますか
>>745 こいつ、質問の意味がわかってんだろうか
>>745 回答有難うございました。
ちなみにもう一つお聞きしたいのですが、ファイルのパス名とかは
どう記述すればよいのでしょうか?
例サーバー:\\j0001
読み込みたいファイルパス:\c:\db\***.txt
\\j0001\C$\db\***.txt
(゚д゚;)
753 :
661 :2005/11/27(日) 19:38:31
以前、一緒にお仕事をしていた方でVBStudioを使用時にカーソル位置に合わせて 縦に線が入るツール?を使っていた方がいたのですが、ご存知でしょうか? 目的としてはインデントを分かりやすくするものだと思うのですが。。。 ネストの連続になると結構便利なのかなと思います。 どうぞよろしくお願い致します。
755 :
デフォルトの名無しさん :2005/11/27(日) 21:45:37
くだらない質問ですいません。 ファイルの作成ってどうするんですか? 具体的にソースを書いてください
>>755 ,-ー──‐‐-、
,! || |
!‐---------‐
.|:::i ./´ ̄ ̄.ヽ.i
|::::i | |\∧/.|..||
|::::i | |__〔@〕__|.||
|::::i |.(´・ω・`)||
|::::i | キング ||
|::::i | カワイソース.||
|::::i L___________」|
|::::i : : : : : : : : : |
`'''‐ー------ー゙
>>756 VB6を使って簡単な物を作ったことがある程度なのですが、
いま下記のようなツールを作っているのですが、ファイルの読み込みと
読み込んだファイルから在庫を減らすことが出来ません。
1.在庫リスト(Excel)を読み込む
2.使用した品物のリスト(txtx)を読み込む
3.読み込んだtxtファイルの使用数から、在庫リストの在庫数を引く
ヒント程度でも良いので、どなたか教えてください。
>>757 ヒント:Excel + VBA
最終的にVB6でやるにしても、
Excel + VBAで同処理が出来るようにならないと始まらない
>>758 在庫リストをtxtファイルにしたら、VB6だけで出来ますか?
>>759 Excelのオートメーションを利用できる環境なら(Excelがインスコされてれば)
在庫リストがExcelファイルでもVB6で出来る
もちろんテキストやcsvでも問題ないけど
どっちにしろ出直してこい
KeyPressイベントでdeleteは使えないんですか
DeleteはKeyDownで
765 :
デフォルトの名無しさん :2005/11/28(月) 00:18:52
VBで作ったプログラムはボタンの上にフォーカスがあるときでも IMEをONにできますよね。 でもIMEがONだとスペースキーでボタンが押せなくなります。 ボタンにフォーカスされたときにIMEをOFFにして ONにできないようにしたいのです。 こういうことは簡単にはできないんでしょうか。 VCプログラムだと何もしなくてもボタンにフォーカスがあるときは IMEをONにすることができません。 これが合理的な仕様だと思います。
次の患者さんどうぞ~
ImmGetContext ImmSetOpenStatus ImmReleaseContext VBからCのAPI呼ぶ方法はそこら辺でぐぐればいっぱい出てくるからあとは自力でどうぞ
押されたキーが全角スペースの場合も同じようにする
769 :
765 :2005/11/28(月) 12:56:40
>>767 ありがとうございます。
IMEModeプロパティのないコントロールについては、
Got_FocusイベントでIMEをOFFにしたり入力モードを設定したりする処理を
全部書いてやる必要があるんですね・・・。
もうちょっと気の利いた仕様にしてほしいですね。VB。
次の患者さんどうぞ~
771 :
次の患者です :2005/11/28(月) 21:19:38
ライブドア証券に買い注文を出すためのヒントを教えて頂けないでしょうか
ログインと買い注文画面まで開くことは出来ました
↓で買い注文画面を表示させてその後どうすれば良いのか全くわかりません
宜しくお願いします。
-------------------------------------------------------
Sub ie_go_ken3()
Dim objIE As Object 'IEオブジェクト参照用
'インターネットエクスプローラーのオブジェクトを作る
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True '見えるようにする
'文字列で指定したURLに飛ぶ
objIE.navigate "
https://trade.kabu.livedoor.com "
'表示終了まで待つ
Do While objIE.busy = True
DoEvents
Loop
End Sub
----------------------------------------------------------
objIE.Document.forms
773 :
771 :2005/11/28(月) 21:52:37
どう見ても自己解決です。本当にありがとうございました。
Private Sub Command1_Click()
WebBrowser1.Navigate "
https://kabu.livedoor.com/login/input "
End Sub
Private Sub Command2_Click()
Dim i, j
For Each i In WebBrowser1.Document.Forms
Debug.Print i.Action, i.method
For Each j In i
If TypeOf j Is IHTMLInputElement Then
Debug.Print , j.Name; "="; j.Value
End If
Next j
Next i
End Sub
Private Sub Command3_Click()
Dim f As MSHTML.IHTMLFormElement
Set f = WebBrowser1.Document.Forms(0)
f.Item("koza1").Value = "xxx" '部店コード
f.Item("koza2").Value = "yyy" '口座番号
f.Item("passwd").Value = "zzz" 'パスワード
f.Item("submit").Click 'ログインボタンを押す (IHTMLInputButtonElement.click)
End Sub
アンケートなどで使われているチェックボックスをONする VBAのIE操作を知りたいのです 宜しくお願い致します。
777 :
771 :2005/11/29(火) 00:01:30
>>773 ソース公開ありがとうございます
VBAで試してみましたがエラーになりログイン出来ませんでした
もう少し研究してみます
ヒント:ユーザーフォーム名.チェックボックスオブジェクト名.Value = True
>>778 IEのって出てるぜ?
WEBサイトのチェックボックスを操作したいんじゃね?
>>771 チェックボックスにチェックを入れるには HTMLInputElement の Checked を True に。 Value では出来ん
エラーの内容も書かないなんてw
タイプライブラリを参照していないから だったりしてなw
スクリプト失敗して変な値段で売買したらやだな。
782 :
デフォルトの名無しさん :2005/11/29(火) 13:56:53
フォルダのフルパスから最下層のフォルダ名のみを取得したいのですがどうすればいいですか?
>>782 たまには脳みそ使った方が良いぞ
InStrRev
Right
>>782 Dim fso As New Scripting.FileSystemObject
Dim f As Scripting.folder
Set f = fso.GetFolder("C:\winnt\system32")
Debug.Print f.Name
785 :
デフォルトの名無しさん :2005/11/29(火) 15:13:41
見直しお願いします。 tmp(秒)をhour(時間)、minute(分)、sec(秒)にしたいときって Dim hour As Long Dim minute As Long Dim sec As Long sec = tmp Mod 60 minute = (tmp / 60) Mod 60 hour = tmp / 60 / 60 で、問題ないですか?
minute = (tmp / 60) Mod 60 ↓ minute = (tmp - sec) Mod 60 折角最初に秒数出してるんだからそれを使わない手は無いと思うんだけどな
787 :
785 :2005/11/29(火) 15:36:45
>>787 Dim t_minute As Long
Dim hour As Long
Dim minute As Long
Dim sec As Long
sec = tmp Mod 60
t_minute = (tmp - sec) / 60
minute = t_minute Mod 60
hour = (t_minute - minute) / 60
これでいい
>>785 minuteとhourでわざわざ同じ計算が中に入ってるのが勿体無いな
/ の結果は四捨五入(銀行丸め)だ \ を使え
つうか、銀行丸めじゃないでしょ。
/ は実数での割り算 \ は整数での割り算 / の計算結果を整数型へ代入するときに丸めか切捨てが発生するはずだが、 どっちだっけ?
>>793 銀行丸めだよ
Dim a As Long
a = 3 / 2
a = 5 / 2
両方とも a は 2 になる
もう面倒だから Dim hour As Long Dim minute As Long Dim sec As Long Dim vtime() As String vtime = Split(Format(tmp / 86400, "hh:mm:ss"), ":") hour = vtime(0) minute = vtime(1) sec = vtime(2) で良いじゃん
>>796 実数で計算されて代入時に銀行まるめ
>>794 が言いたいのはそういうことだろう。
/ の結果は 1.5 と 2.5 Long型に代入した時点で銀行丸めで 両方とも2になる。
おもしろいな、どっちも .5 なのに片方は切り捨て片方は切り上げなのかよ
バカしかいないのかこのスレは
801 :
800 :2005/11/29(火) 18:26:57
どうみても自分が馬鹿です、本当にありがとうございました。
アップローダーを設置してるサイトに、ある件名のファイルがアップロードされたら ダウンロードするというプログラムをVB5で作ることはできますか
\ 演算子 2 つの数値の商を計算し、結果を整数で返します。 除算を実行する前に、数式はバイト型 (Byte)、整数型 (Integer)、または長整数型 (Long) の式に丸められます。 / 演算子 2 つの数値の商を計算し、結果を浮動小数点数で返します。 データ型変換関数 CInt 関数および CLng 関数は常に最も近い偶数に値を丸めます。たとえば、0.5 を 0 に、1.5 を 2 にそれぞれ丸めます。 少しはMSDN読んでから会話しろ
>>802 数分毎にWebBrowser1.Refreshを実行して、
WebBrowser1_DocumentCompleteでWebBrowser1.document.linksを(ry
>>802 可能だよ。
ただ、自動ダウンロードツール対策として見えた文字を記入させるロダもあるからがんばれ。
ちょっと皆さんにお聞きするんですが。 消費税計算含む金額を扱う時ってcurrency型で処理しますよね。 integerとかlongとか織り交ぜて掛けたり割ったりしませんよね。 外注さんに常識だろうと指摘してみたら「仕様変更だ!」と逆切れされちゃったんですが。 どうなんでしょうか。そこまでコーディング規約に書いて渡さなくちゃいけないものなんでしょうか?
いや、悪いのは俺だ
>>806 充分な速度が出て他に影響が無くて出てくる答えが正解ならば、変数の仕様なんざどーでもいい
事後メンテまで外注に投げるつもりなら、答えが正解なのにコードにいちゃもんつけるのはお門違い
メンテをあんたが引き受ける予定なら、最初から細かく規定しておくべき事柄
あくまで「常識」に拘るなら、その外注が「常識」を遵守するかどうかを計れなかった自分のミス
それでも納入後に変更させるなら、それは仕様変更だ
どうみても仕変です。 本当にありがとうございました。
>>806 どういう形式で外注にたのんだか知らないが、関数等を外注に頼む時に精度を仕様に盛り込むのは常識だ。
後、どうみても業務時間内に2chを利用するな。
>>806 まあ
>>809 に同意なんだが、常識かどうかって点では
「未来永劫 .NET に移行するつもりがないのなら
Currency 型でもいいだろう」
とは言える。
' 桁数と小数以下の処理の為に Long/Integer 使って
' 苦労するくらいなら Decimal 型の方がいいかも知らんが、
' 使った事ないんで知らん。
>>811 >どうみても業務時間内に2chを利用するな。
済みません… orz
業務時間中に普通に2ch巡回してる俺がここで二言
>>806 ・自分の思ってる常識が世界共通だと思うな
・言わなきゃ伝わらない
>>811 ごめwwwwwwwwww 俺も仕事中常にJane起動wwwwwwwwwwwww
win98+VS6proであと10年はイケル 文系アマだしw
VS6pro であと10年はなんとかなる鴨試練が win98 はもうだめぽ
818 :
デフォルトの名無しさん :2005/12/01(木) 02:59:59
11月からVB6.0SP6に触れ始めました. VBでOLEを使おうと思っているのですが,必要な情報が なかなか見つからず困っているのでご助力願いたいです. OLEにSolidWorksというCADアプリをいれるのですが, マクロのソースをはっつけてVBから操作することはできました. ですが自分のやりたいこととしては,アプリの操作と VBのフォームなどの操作を同様(?)に行いたいです. DoVerbで編集モードに入ってしまうとVBからの操作が出来ないので. 一つのアプリケーションのようにしたい,というとわかってもらえるでしょうか. 編集モードからイベントが取得できれば,ちょっと不格好ですが なんとかできそうなのですが,そういうことは出来ますか? 自分で色々考えているのですが,OLEでは無理かなという気がしてきています. ご助力お願いします.
820 :
デフォルトの名無しさん :2005/12/01(木) 10:21:12
コマンドボタンにアイコンを表示したいのですが、どうすればできますか? 教えてください(>_<)
>>820 アイコンだけなら標準コントロールで可能。
アイコンのとなりにテキストを入れたい場合は標準ではできない。
どっちだ?
>>820 コマンドボタンの Pictureプロパティ で アイコン を指定すれ。
824 :
820 :2005/12/01(木) 13:30:53
後者です。 コマンドボタンにアイコンと説明のテキストをつけようと思ってます
>>824 > 後者です。
だから何?
どっちの場合だとしても、もう答え出てるんだから後は自分でやれよ
827 :
デフォルトの名無しさん :2005/12/01(木) 18:35:59
すいません。 WSHでVBScriptを使っている人のスレってどこかありませんかね? どなたか誘導よろ。
>>827 WSHスレはこの板とWin板にある
VBScript限定のスレは無いが、
VBScriptは上記2つのWSHスレとこのスレ、
及びWeb制作管理板のいくつかのスレで扱われてるので
VBScriptのスレを作る必要もないだろ
830 :
827 :2005/12/01(木) 21:23:44
ありがとん。VBScriptじゃなくてWSHで引っ張ればよかったのね。
831 :
デフォルトの名無しさん :2005/12/02(金) 00:25:07
環境 VB6 SP6 + XP SP2 + IE6 です。 VB6のインターネットトランスファーコントロールで URLのデータを取得するときに OPENURLメソドを 使用しています。 このコントロールでURL取得時にプロキシ経由での取得を行いたいのですが IEの設定が繁栄されると考えていいのでしょうか?
832 :
デフォルトの名無しさん :2005/12/02(金) 00:31:59
いいです。
833 :
デフォルトの名無しさん :2005/12/02(金) 11:51:05
∩∩ (,,゚Д゚)<先生方、質問です。 仕事で、VBソフトを10個稼動させているんですが、なぜか3~6時間後に1個づつフリーズします。 環境は、XP、セレロン2G、メモリ1G、HD80Gです。 フリーズ前は、CPU使用率は60%前後、PF使用率も200M前後で、フリーズするとCPU使用率 は100%になりました。 受注先に問い合わせても、原因が解らないようです。
>>833 受注先の奴らを問題のPCの前に連れて来て原因究明しろよ('A`)
835 :
デフォルトの名無しさん :2005/12/02(金) 11:56:30
>>833 そんな問い合わせ方じゃ先方も困るだろ
原因を解決したいならきちんと状況を説明しないと
>>833 どうせ DoEvents ループ で止まってるんだろ。
ソース晒してみぃや。
開発元でもないのにソース持ってるわきゃねぇ
>>833 その状態でPCを休止モードに移行汁
休止状態のPCのHDDを、ドライブイメージとかでバックアップ。
あとは休止状態のPC受注先に移送、リジュームしたら受注先を苛める。
842 :
デフォルトの名無しさん :2005/12/02(金) 21:54:03
VBからVB-Reportを使ってエクセル定義ファイルをオープン(start.embed)する時に なぜかエラーになってしまいます。考えられる原因は何でしょうか。 コンポーネントは参照設定されているし、エクセルのパスも問題ありません。 (環境) ・WinXP Pro ・VB6.0 SP2 ・VB-Report1.0
>>842 その状態からすると、オマエの頭が悪いんだろ。
そうでなければ、もう少し状況の説明がいるぐらい判断つくはずだから。
何か事情があるのか、書き間違いなのかしれないが VB6 「SP2」ってのがなんとも。。。
DoCmd.TransferText acImportDelim, ,"インポートデータ", _ "C:\Documents and Settings\デスクトップ\ファイル名.csv" ACCESSSでボタンを作ってこういうのをあてはめたら、 一応押すごとにインポートされるものは出来たんだけど、 ファイル名のところなんだけど、同じフォルダ内にある全ての CSVをインポート処理してくれるようにならないかな? 欲をいえば、 いくつファイルをインポートしたかメッセージ出てくると、なおいいね。 4つのファイルをインポートしました。 とか
847 :
デフォルトの名無しさん :2005/12/03(土) 01:39:42
Dim lstrFile As String Text1.Text = "" lstrFile = Dir("C:\Documents and Settings\Makoto\デスクトップ\適性テスト\*.csv") Do Until lstrFile = "" Text1.Text = Text1.Text & lstrFile & vbCrLf lstrFile = Dir() DoCmd.TransferText acImportDelim, , "インポートデータ", _ "C:\Documents and Settings\Makoto\デスクトップ\適性テスト\$lstrFile$.csv" Loop MsgBox "インポートしました!" ↑これでは出来ない。なんでだー
>>847 Dim lstrDir As String, lstrFile As String
Dim nCount As Integer
Text1.Text = ""
lstrDir = "C:\Documents and Settings\Makoto\デスクトップ\適性テスト\"
lstrFile = Dir(lstrDir & "*.csv")
Do Until lstrFile = ""
Text1.Text = Text1.Text & lstrFile & vbCrLf
nCount = nCount + 1
lstrFile = Dir()
DoCmd.TransferText acImportDelim, , "インポートデータ", lstrDir & lstrFile
Loop
MsgBox nCount & "個のファイルをインポートしました。"
WEBサーバの自作でいろいろ苦労してるのですが そういう人は他に居ない?
VB6.0のプロジェクトファイルから フォーム数やステップ数を出力してくれるような アプリケーションはないでしょうか? できればフリーソフトなどあればうれしいのですが・・・
>>851 自分で作れよ
プロジェクトファイルはテキストなんだからさ
>>852 vectorにいろいろありまいたので試して見ます。
ありがとうございました。
>>849 普通の人はVB6でWEBサーバーを作ったりしないので居ない
>>854 昔DDJな何かでVB5.0使ってWebサーバ作ったという記事を見た事がある
856 :
デフォルトの名無しさん :2005/12/03(土) 15:48:25
857 :
デフォルトの名無しさん :2005/12/03(土) 15:52:09
>>848 様
ただ
変数を宣言したあとの
Text1.Text = ""
が黄色になって「オブジェクトが必要です」
と出てくるのですが。。。。
858 :
デフォルトの名無しさん :2005/12/03(土) 15:52:24
859 :
デフォルトの名無しさん :2005/12/03(土) 16:05:23
3行目のText1.Text = "" と7行目のText1.Text = Text1.Text & lstrFile & vbCrLf は要らないだろ。
>>857 Text1っていうオブジェクトが無いんだろ
キミの出した情報じゃそれしかわからんよ
861 :
デフォルトの名無しさん :2005/12/03(土) 16:11:32
>>860 様
お返事ありがとうございます。
たった今、フォームにテキスト1を追加したんですが、やはりできませぬ。。。
862 :
デフォルトの名無しさん :2005/12/03(土) 16:18:41
こいつ本当に真性バカだな。
864 :
デフォルトの名無しさん :2005/12/03(土) 16:19:29
フォームにテキストボックスを追加して、それのプロパティで名前の部分をtext1にしたんですが、 今度は「コントロールがフォーカスを取得していないときに、コントロールのプロパティまたはメソッドは 参照することができません:エラー2185」と出てしまいました
865 :
デフォルトの名無しさん :2005/12/03(土) 16:20:42
超絶バカ
817 名前:NAME IS NULL[] 投稿日:2005/12/02(金) 21:23:47 ID:FRlIojdR
>>816 できれば、その前に、1つ教えてほしいことがある
access2002からモジュールの新規作成選択したときさ、
普通はVBのフォームとか、ツールボックス出るじゃん。
あれの出し方だけ教えて
866 :
デフォルトの名無しさん :2005/12/03(土) 16:23:14
なんとでもいってもらって、結構なので正直、ドがつく初心者の俺でも分かるくらいの 説明で教えてほしい。。。。。。
A c c e s s か よ !
お前が勉強してこい
869 :
デフォルトの名無しさん :2005/12/03(土) 16:26:24
848さん以外に分かる人いないってこと??
870 :
デフォルトの名無しさん :2005/12/03(土) 16:27:56
だれかーーーーーーーーわかりませんかーーーーーーーーーーーーー
誰が質問して 何の回答求めてるのか分からん 名前くらい入れろ 環境教えろ VBなのかアクセスなのかエクセルなのか 一番最初に質問したレス番号教えろ
872 :
デフォルトの名無しさん :2005/12/03(土) 16:32:38
809 名前:NAME IS NULL[] 投稿日:2005/12/02(金) 17:35:25 ID:azKk0wjH
CSV(カンマ区切りで)、1行目だけに左上詰めから15項目だけあるファイルを、
次々にアクセスのデータベースに追加していく形のものを作ってほしいです。
可能ならば、ボタンをポチっと押しただけで追加して、追加が終わったら、
その抽出したCSVファイルを削除しますか?とかで削除できたらサイコー!
812 名前:NAME IS NULL[] 投稿日:2005/12/02(金) 19:11:57 ID:azKk0wjH
つか、ACCESSのモジュール作成からVBたちあげても、
デザインビューのフォームとかツールボックスが出ない!!!
なんでだよ!!
817 名前:NAME IS NULL[] 投稿日:2005/12/02(金) 21:23:47 ID:FRlIojdR
>>816 できれば、その前に、1つ教えてほしいことがある
access2002からモジュールの新規作成選択したときさ、
普通はVBのフォームとか、ツールボックス出るじゃん。
あれの出し方だけ教えて
822 名前:NAME IS NULL[] 投稿日:2005/12/02(金) 21:50:27 ID:FRlIojdR
>>820 ならんでるよ。そこのモジュールから新規作成してるんだけどなー
826 名前:NAME IS NULL[] 投稿日:2005/12/02(金) 21:56:27 ID:FRlIojdR
フォームあるよー
アクセスでは、ボタン作ってそれをクリックしたら簡単にcsvからaccessに読み込むのできないの?
873 :
accessマン :2005/12/03(土) 16:33:33
私が質問していました。質問内容は
>>846 にあります。
環境はaccess2003です。ドがつくほどプログラムのことは
分からないんです。すいません
874 :
デフォルトの名無しさん :2005/12/03(土) 16:33:35
837 名前:NAME IS NULL[] 投稿日:2005/12/02(金) 23:51:45 ID:FRlIojdR DoCmd.TransferText acImportDelim, ,"インポートデータ", _ "C:\Documents and Settings\デスクトップ\ファイル名.csv" ACCESSSでボタンを作ってこういうのをあてはめたら、 一応押すごとにインポートされるものは出来たんだけど、 ファイル名のところなんだけど、同じフォルダ内にある全ての CSVをインポート処理してくれるようにならないかな? 838 名前:NAME IS NULL[] 投稿日:2005/12/03(土) 00:01:07 ID:2/RezQHy 欲をいえば、 いくつファイルをインポートしたかメッセージ出てくると、なおいいね。 4つのファイルをインポートしました。 とか 841 名前:NAME IS NULL[sage] 投稿日:2005/12/03(土) 14:54:56 ID:??? 分かる人いるなら教えてよ 844 名前:NAME IS NULL[] 投稿日:2005/12/03(土) 15:28:15 ID:2/RezQHy DoCmdの引数にsFileを渡す方法がわからない
875 :
デフォルトの名無しさん :2005/12/03(土) 16:34:19
876 :
デフォルトの名無しさん :2005/12/03(土) 16:34:53
どう見てもAccess初心者でVBのコード以前の問題です。 本当にありがとうございました。
877 :
デフォルトの名無しさん :2005/12/03(土) 16:36:20
835 名前:NAME IS NULL[] 投稿日:2005/12/02(金) 22:26:41 ID:FRlIojdR 今花より団子見てるから、あとでね 836 名前:NAME IS NULL[] 投稿日:2005/12/02(金) 23:00:48 ID:FRlIojdR ただいま、つか出来上がったw
878 :
デフォルトの名無しさん :2005/12/03(土) 16:36:45
819 名前:NAME IS NULL[] 投稿日:2005/12/02(金) 21:38:17 ID:FRlIojdR
>>818 おまえはヴァカ?
879 :
デフォルトの名無しさん :2005/12/03(土) 16:38:02
ここのスレ見てるとプログラマーのだいたいの性格わかるなw
>>861 長くなってもいいから何をどうしてどうなったのか詳しく書け
881 :
デフォルトの名無しさん :2005/12/03(土) 16:40:48
死ねばいいのに
882 :
accessマン :2005/12/03(土) 16:46:42
>>880 様
はい。ありがとうございます。
まずACCESSのフォームの新規作成で コマンドボタンを1つフォームに追加しました。
そのコマンドボタンの右クリックしてイベントのビルドでコードビルダを選択し、
Private Sub コマンド0_Click() と End Sub の間に
>>848 様の
>Dim lstrDir As String, lstrFile As String
>Dim nCount As Integer
>
>Text1.Text = ""
>lstrDir = "C:\Documents and Settings\Makoto\デスクトップ\適性テスト\"
>lstrFile = Dir(lstrDir & "*.csv")
>
>Do Until lstrFile = ""
>Text1.Text = Text1.Text & lstrFile & vbCrLf
>nCount = nCount + 1
>lstrFile = Dir()
>DoCmd.TransferText acImportDelim, , "インポートデータ", lstrDir & lstrFile
>Loop
MsgBox nCount & "個のファイルをインポートしました。"
を追記したんですが、デバッグ画面で text1.Text=""の行が黄色くなっていたので
またAccessのフォーム作成画面に戻りテキストボックスを追加して、
プロパティからtext1という名前に変えて、実行すると今度は
「コントロールがフォーカスを取得していないときに、コントロールのプロパティまたはメソッドは
参照することができません:エラー2185」と出てしまいました
883 :
デフォルトの名無しさん :2005/12/03(土) 16:48:12
884 :
デフォルトの名無しさん :2005/12/03(土) 16:48:50
>>882 お前さ、まずAccessの使い方から学べよアホ
Me付けなきゃどのテキストボックスか分からないだろ死ね
885 :
デフォルトの名無しさん :2005/12/03(土) 16:50:31
Me??
ちんこうんこまんこちんこうんこまんこちんこうんこまんこ ちんこうんこまんこちんこうんこまんこちんこうんこまんこ ちんこうんこまんこちんこうんこまんこちんこうんこまんこ ちんこうんこまんこちんこうんこまんこちんこうんこまんこ ちんこうんこまんこちんこうんこまんこちんこうんこまんこ ちんこうんこまんこちんこうんこまんこちんこうんこまんこ ちんこうんこまんこちんこうんこまんこちんこうんこまんこ ちんこうんこまんこちんこうんこまんこちんこうんこまんこ ちんこうんこまんこちんこうんこまんこちんこうんこまんこ ちんこうんこまんこちんこうんこまんこちんこうんこまんこ ちんこうんこまんこちんこうんこまんこちんこうんこまんこ ちんこうんこまんこちんこうんこまんこちんこうんこまんこ
VB使ったことないんだけどDL方法からアプリ開発まで全部俺に教えてwwwwwwwwwwwwwwwwww
888 :
デフォルトの名無しさん :2005/12/03(土) 16:54:51
早く教えろよカス
890 :
888 :2005/12/03(土) 16:57:15
うそつき・゚・(ノД`)・゚・
892 :
デフォルトの名無しさん :2005/12/03(土) 16:59:03
マルチしただけで、ここまで叩かれた奴はじめて見たw
マルチだからじゃなくバカだから叩かれているだけだろ
894 :
デフォルトの名無しさん :2005/12/03(土) 17:01:38
VBプログラマってバカに厳しいんだなw まぁ、なぜか分かる気もするがw
マルチでバカだからだな
合わせ技で一本か
897 :
デフォルトの名無しさん :2005/12/03(土) 19:14:12
フォルダ内の全てのファイルにある処理をするときはどのような構文を書けばいいですか?
フォルダ内のファイルを列挙して 全部に処理すればいい
質問です。 str = "123123123……"と言う文字列があり、先頭から5文字目を"0"に変更したいとします。 現在は、 x=mid(str,1,4) & "0" & mid(str,6) とやっているのですが、他にスマートな関数が用意されていたら教えてください。
なかなかスマートじゃないか。
901 :
accessマン :2005/12/03(土) 20:06:09
試行錯誤して出来たぜ!w
>>889 mid(s,5,1)="0"
でいいよ。
903 :
902 :2005/12/03(土) 20:11:53
Mid関数知ってるのにMidステートメント知らない奴が居るのかよ
905 :
899 :2005/12/03(土) 20:26:41
ありがとうございました。orz
906 :
デフォルトの名無しさん :2005/12/03(土) 21:01:14
access側のフィールド名を自分で色々とつけていた場合 DoCmd.TransferText acImportDelim を使うときは、どういうふうにすればいいか分かる香具師いる? フィールド名をつけてなきゃ、スムーズにいくんだけどなぁ
907 :
デフォルトの名無しさん :2005/12/03(土) 21:03:12
908 :
デフォルトの名無しさん :2005/12/03(土) 21:04:19
ただいまw
909 :
デフォルトの名無しさん :2005/12/03(土) 21:06:08
試行錯誤して出来たぜ!w
910 :
848 :2005/12/03(土) 21:10:40
なんか漏れのせいで微妙に荒れてしまったな。スマソ。
>>850 マルチとは知らずorz
911 :
デフォルトの名無しさん :2005/12/03(土) 21:13:42
912 :
デフォルトの名無しさん :2005/12/03(土) 21:13:58
849 名前:NAME IS NULL[] 投稿日:2005/12/03(土) 20:08:55 ID:2/RezQHy
>>848 おまえがしねよw
はっはははは、できあがったからには、もうどうでもいいしw
913 :
デフォルトの名無しさん :2005/12/03(土) 21:14:33
914 :
デフォルトの名無しさん :2005/12/03(土) 21:18:06
できたw
915 :
デフォルトの名無しさん :2005/12/03(土) 21:37:22
野ブタをプロデュースみてて ひさびさにドラマにハマりそうになった。 このクソ女め
916 :
デフォルトの名無しさん :2005/12/04(日) 00:01:15
質問です。 VB6でコンパイルエラー「メモリが不足しています」が発生しています。 このプロジェクトはソース量が巨大で、その一部を除くとコンパイルできるようになります。 変数の総数、コード量など何らかのコンパイラの制限に引っかかっているのでしょうか? 誰かご存知の方教えて下さい。
PCにメモリどれくらい積んでるんだ?
918 :
916 :2005/12/04(日) 00:11:35
512MBです
OSがXPだとしたら開発に使うには足りないな 2kだとしてもギリギリか
メモリ64kbでコンパイラ動かしてた時代は遠くなったな
>>916 プロジェクトファイルを右クリックしてコンパイル
923 :
デフォルトの名無しさん :2005/12/04(日) 10:34:18
逆コンパイルはどのツールが良いのでしょうか?
プログラム暦半年の若造です。VB6 SP5でテキストファイルに書かれた文章を いじくるプログラムをつくっているのですが For i = 1 to Len(String) If Mid(String, i, 1) = """ then と二重引用符を見つけたら処理をするというIf文を作りたいのですが 駄目っぽいのは目に見えてるのですがもしこういうのを作るには 文字コードやバイナリ状態のをIf文で処理させたほうがいいのでしょうか? ものすごく馬鹿なことしてるように見えるかもしれませんがお知恵拝借よろしくお願いします。
とりあえず"""ではなく""""な あとMidではなく…(以下略
>>925 根本的な話としてファイル内の文字列をいじくるプログラムは
やりたい処理によって1文字ずつ処理していく方法がよかったり
文字列として処理していく方法がよかったりする。
また、バイナリ形式のまま処理した方が良い場合もある。
要するにどういじくりたいのか解らないのでどうしたら良いのかは回答できない
変数名Stringは使えない
>>928 いや、さすがにそれは書き込むときに変えてるんだろwwwwwwwwwwwwwww
Call Shell("rundll32.exe shell32.dll,Control_RunDLL", vbNormalFocus) この内容でコントロールパネルは起動させることができたのですが、 その他上記の"Contorol"を"Mycomputer"や"Mynetwork"に変えてもマイコンピューターやマイネットワークなどを起動させることができません。 どの用に変更すればいいか教えていただけませんか?
>>930 explorer /root,,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}
explorer /root,,::{208D2C60-3AEA-1069-A2D7-08002B30309D}
932 :
930 :2005/12/05(月) 14:30:04
>>931 Private Sub Command1_Click()
explorer /root,,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}
end sub
これに何が足りないか、もう少し詳しく教えていただけませんか?
ちなみに列挙型だと Enum e [String] End Enum っていうふうに書いて使えたりする。
>>932 足りないのは頭だと思いますが、
まずはぐぐれ
935 :
930 :2005/12/05(月) 14:50:48
explorer /root,,::{20D04FE0-3AEA-1069-A2D8-08002B30309D} ぐぐってもコマンドプロンプトで書いたら起動できるやりかたしかでてこねぇよ!!! VBでどうやるんだよ!?
>>935 Call Shell(文字列) って何やってるか知ってる?
937 :
930 :2005/12/05(月) 15:06:19
でけた!!!!
>>936 マジサンクス!!!!
ホントありがとー(^^)/
930の すごい バカ
ん? Accessマン帰ってきた?
941 :
925 :2005/12/05(月) 16:17:08
>>927 とりあえずAscをつかって文字コードで判別する
やり方で自己解決しちゃいましたが
ファイル内の書式が
[設定1]
AAAAA = "あああああ"
BBBBB = "びびびびび"
のようになってて"~"間の文字を取得したいんです。
For文で1文字ずつ移動させて"がある場合だけ文字を
VB内の変数に記録し続けるって感じのアルゴリズムを考えて
たのですが今の俺じゃ効率悪い方法しか思いつかない・・・
orz
つ[正規表現]
ISNUMERIC関数で、4d9などの文字列がTRUEで返って来るんですが… 何故?
>>943 ヒント:16進数
対処法はWebに腐るほど転がってる
>>941 文字列の書式によるが
InStr とか Replace が使えそう。
946 :
945 :2005/12/05(月) 17:27:28
>>941 iniファイル形式だろうから
GetPrivateProfileString() API を使う方法もある。
947 :
デフォルトの名無しさん :2005/12/05(月) 18:53:38
質問なんですけど、フォームにエクセルのシートを貼り付けて、右クリックのショートカットメニューを消したいんですけど、知ってる人がいたらおしえてください。
948 :
925 :2005/12/05(月) 22:18:42
>>946 ありがとうございます。
GetPrivateProfileString()でいけるようになりました。
iniファイルだってことすっかり忘れてた・・・。orz
逝ってきます。
>>947 Office2000・XPなんかのDeveloperEditionについてきたVBAの説明マニュアルを読め
まずはそれからだ
ソースの改修をしているのですが、 定義未宣言の変数が大量にあって困っています。 OptionExplicit記述をして一つ一つ潰すにしてもあまりに量が多いので せめて一覧出力して修正量がどれくらいか知りたいのですが、 なにかいい方法はありませんか?
952 :
951 :2005/12/06(火) 15:13:57
書き忘れたので追記・・・ OSはWinXPPro VB6+SP6です。どうぞよろしくお願いします(´・ω・)
がんばって下さい。
OptionExplicitを宣言して、コンパイルエラーで潰すのが一番確実で正しいと思うが。 修正量なんて知らないほうが良いんじゃないの?w 全ロジック見直しですっていって工数見積もれば。
955 :
デフォルトの名無しさん :2005/12/06(火) 18:29:36
今、VB6.0でエクセルの帳票を作っているのですが、 コードが変わることによりブレイクして地域名が変わり 改ページの処理をするようにしなくてはいけないんですけれど、 方法がわかりません。 地域名 福岡 --------------------------------------- コード 地域名 --------------------------------------- 0041 福岡 (現状)コードが42になったらブレイクして佐賀に変わる 改ページの処理がわかりません。 地域名 福岡 --------------------------------------- コード 地域名 --------------------------------------- 0041 福岡 0042 佐賀 よろしくお願いします。
956 :
デフォルトの名無しさん :2005/12/06(火) 18:30:25
質問なんですけど、フォームにエクセルのシートを貼り付けて、右クリックのショートカットメニューを消したいんですけど、知ってる人がいたらおしえてください。
マルチ帰れ
958 :
デフォルトの名無しさん :2005/12/06(火) 19:15:48
>>951 VB.NETへのマイグレーションツールを使う
ちなみに、関係ないエラーも数万~数十万件のオーダーででると思うから泣かない様に
>>955 EXCELでの改ページの方法がわからないの?
改ページのタイミングを検出する方法がわからないの?
Excelでマクロ組む場合の基本。 やりたいことをマクロの記録でVBAに吐かせる。 あとはその選択セルとかを変えるだけ。
961 :
デフォルトの名無しさん :2005/12/07(水) 10:29:02
データコンボコントロールの使い方について教えてください。 Form_loadでDBにコネクションを貼り、unloadで切断するアプリケーションを作っています。 このアプリにADODCとデータコンボコントロールを追加しました。 ADODCの接続文字列にはForm_loadで用いるものと同じものを使っています。 データコンボコントロールはこのADODCをRowSourceとしています。 その結果、動作には問題無いのですがFormの起動がえらくもっさりしてしまいました。 余計なDB接続を作ってしまっただと思います。 Form_loadで生成したコネクションオブジェクトを流用することはできないのでしょうか?
962 :
デフォルトの名無しさん :2005/12/07(水) 10:32:47
質問です。ActiveX DLLを作成しているのですが 'Module1 Public Type TestStruct1'ユーザー定義 strIp As String strUser As String strPass As String End Type 'Class1 Public GetHostInfo(stDisk As String) As TestStruct1 End Function でコンパイルエラーが出ます。DLLで持つ共通関数の構造体を 外部モジュールから構造体を丸々参照できるようにしたいです
963 :
デフォルトの名無しさん :2005/12/07(水) 10:34:17
>>959 改ページのタイミングを検出する方法がわからないのです。
もし、よろしければご教授ください。
965 :
デフォルトの名無しさん :2005/12/07(水) 12:08:23
>>962 Public GetHostInfo(stDisk As String) As TestStruct1
↓
Public Function GetHostInfo(stDisk As String) As TestStruct1
966 :
デフォルトの名無しさん :2005/12/07(水) 12:20:14
定数の型指定についてなのですが、 Web上のサンプルを見ると Private Const HOGE As Long = &H1 と、型を指定している場合と Private Const HOGE = &H1 と、型を指定していない場合があり、 型を指定しない方が多いように見受けられますが、 逆に変数では型を指定していないものはほとんど見あたりません。 なぜ変数はほとんどの場合型を指定しているのに 定数だと型を指定しないことが多いのですか?
>>966 変数で型の指定を省略するとVariantになる。
けれどConstでは定数の値から適当な型を選んでくれるはず。
さらに、たしか昔はConstでは型を指定できなかったような気もする。
968 :
デフォルトの名無しさん :2005/12/07(水) 14:12:22
>>965 すみませんFunction は漏れていたのですがFunction追加しても
改善されないようです。
もし駄目な場合はEXE化してcommand()で引数を渡すよう
思索してるんですが、これまた、引数としては一行の文字列になってまして
この引数をそれぞれの型で個別にやりとりさせる方法ってありますか?
>>968 TestStruct1もクラスにしてしまえばどうだ。
もちろんプロパティ使えばTypeと見た目は変わらないように作れるだろ。
>>962 Module1に書いてあるものを、Class2に書いて。
Class2はプロパティInstancing=6(GlobalMultiUse)で。
テンプレ議論はあだ~?チンッチンッ☆(AA省略)
VBで作ったexeファイルにフォントの埋め込みをしたいと思いますが、ムリでしょうか?
>>972 埋め込みって、フォントファイル?文字のBMP?埋め込みってコンパイル時?後から?
VB6.0にてスプレッドの項目をクリップボードに コピーしたんですが2000行(68列)のデータが コピーされず100行の絞込みを行った場合 コピーされたので、何かいい解決方法はないでしょうか?
>>978 質問わかりにくくてすいません。
環境VB6.0
スプレッドにてデータを表示
データレコード数2000件
行数68
列数2000
以上データをClipboard.SetText (.Clip)
にてクリップボードに出力したが出来ませんでした。
データ量を減らすと出来るのですが・・・
行数68
列数100
でクリップボードに出力が成功しています。
980 :
デフォルトの名無しさん :2005/12/08(木) 12:00:24
Excel VBA でMSCommを使おうとしていますが、 On_commイベントでの受信ができません。 Windows XP Pro SP2, Excel 2003 SP1, VBA(VB6.0相当?) PC: Excel使用, 外部装置:何か来ると、ステータスを返す 以下のプロシージャで"hoge"が送れました。 Private Sub Command1_Click() Set mscomm1 = CreateObject("MSCOMMLib.MSComm.1") mscomm1.CommPort = 1 mscomm1.Settings = "9600,N,8,1" mscomm1.PortOpen = True mscomm1.Output = "hoge" mscomm1.PortOpen = False End Sub 外部装置からステータスが返ってきますが、下のイベントは発生しません。 Sub MSComm1_OnComm() MsgBox "fuga" End Sub Comman1_Click() 内で Wait を使うと拾えます。 If Application.Wait(Now + TimeValue("0:00:1")) Then data = mscomm1.Input End If アドバイスお願いします。
>>980 mscomm1のクラスオブジェクト変数のスコープの問題とか?
982 :
962 :2005/12/08(木) 14:40:21
みなさんありがとうございました。色々ご教授いただいた方法を 試みまして、クラスにプロパティを作りました。たすかりました
>>981 , 983
レスありがとうございます。
今まで、クラスモジュールを使ったことがなく、
今回のようなケースで使うのかと初めて知りました。
[ツール]-[参照設定] Microsoft Comm Control 6.0 にチェック
クラスモジュール(Class1)
-------------------------------------------
Public WithEvents mscm As MSCommLib.mscomm
Private Sub mscm_OnComm()
End Sub
-------------------------------------------
標準モジュール(Module1)
-------------------------------------------
Dim mscomm1 As Class1
Sub SetMscommEvent()
Set mscomm1.mscm = MSCommLib.mscomm
End Sub
-------------------------------------------
本に、実際のオブジェクトと関連づける必要がある、
とあったので、上のようにしましたが、
「メソッドまたはデータ メンバが見つかりません。」
とエラーが出ます。
Set mscomm1.mscm = MSCommLib.mscomm
だと、「オブジェクトが必要です」
Set mscomm1.mscm = CreateObject("MSCOMMLib.MSComm.1")
だと、「オブジェクト変数または With ブロック変数が設定されていません。」
あと、少しでうまくいく気がするのですが...
訂正 Set mscomm1.mscm = mscomm だと、「オブジェクトが必要です」
Set mscomm1 = New Class1 を Set mscomm1.mscm = MSCommLib.mscomm の前に追加
>>986 Set mscomm1.mscm = New MSCommLib.mscomm
じゃね?
988 :
980 :2005/12/08(木) 17:56:55
レスありがとうございます。 VBなら簡単なのに。VBAだとここまでてこずるとは。 標準モジュール(Module1) ------------------------------------------- Sub SetMscommEvent() Set mscomm1 = New Class1 Set mscomm1.mscm = New MSCommLib.mscomm End Sub Private Sub SendData() Set mscomm1 = New MSCommLib.mscomm mscomm1.CommPort = 1 mscomm1.Settings = "19200,N,8,1" mscomm1.PortOpen = True mscomm1.Output = "piyo" mscomm1.PortOpen = False End Sub Sub mscm_OnComm() MsgBox "fuga" End Sub ------------------------------------------- SetMscommEvent()を一回実行してから受信すれば、 mscm_OnComm()が実行されると期待したのですが、 まだ、反応なしです。
989 :
デフォルトの名無しさん :2005/12/08(木) 18:26:04
BASP21を利用して メールで添付されてきたCSVファイルを取り出して 指定したフォルダに 自動的に保存したいのですが。 「 output = bobj.ReadMail(file, nobody, Folder) 」を 下のコードの中にどのように追加すればいいでしょうか? Dim bobj, ar Dim Server As String, User As String, Pass As String, Command As String, Folder As String Set bobj = CreateObject("basp21") ''BASP21オブジェクト Server = "pop.xxxxx.com" ''POP3サーバー User = "toru_tanaka" ''アカウント名 Pass = "password" ''パスワード Command = "SAVEALL" ''コマンド Folder = "<" & ThisWorkbook.Path & "\mail" ''保存するフォルダ ar = bobj.RcvMail(Server, User, Pass, Command, Folder) If IsArray(ar) Then MsgBox "メールを受信しました" Else MsgBox "新着メールはありません" End If Set bobj = Nothing
どうも、980はインスタンスの概念がわからないようだな。
991 :
980 :2005/12/08(木) 18:49:38
>>990 すいません。分かってないと思います。
何が悪いか教えてもらえませんか。
>>991 こういう人って不思議でしょうがないんだけど
人に質問する前にやることあるんじゃないの?
VBのコントロールの使い方なんてたいていググればいくらでも見つかるけど。
現に今"oncommイベント"で検索してみたが、順をおって使い方を説明しているところが
山ほど出てくる。
こういうやるべきことやらずにアタフタする人は何やっても多分ダメだね。
少なくともPGには向いてないわ。
まあ貶すだけだと後味悪いんでちょっとヒント。
MSCommのイベントは設定してやらないと発生しない。
RThresholdだと思ったけど、ちゃんと設定してます?
っていうか、MSCommで受信処理にOnCommイベントなんて使っちゃダメだよ。
どんなケースでも絶対使わないとまでいえないけど、普通の通信プログラムじゃ
まず使わない。
OnComm使って受信処理するようなコードを書く人はまあヘッポコだわな。
VBじゃなくてさ、Excel VBAなんだよ。 VBなら検索すればサンプル山ほどあるし、実際動かしている。 こんなとこで時間食っているから、ヘッポコであることは認めるし、 OnCommしか使えないレベルでもあるが、 今回の件はOnCommで十分だと思うね。
意味がわからない。 VBのコントロールの使い方はVBからだろうとVBAからだろうと同じですが。
テンプレ議論まだ~?チンッチンッ☆(脳内AA)
997 :
995 :2005/12/08(木) 22:52:45
>>996 いやいやいやこのスレの行く末を案じて。ちょw
998 :
995 :2005/12/08(木) 23:15:41
次の患者さんどーぞ。 つーか俺様のエピソードを1つ VS6ProにFrontPage98ついてたの知ったのは購入3年後でしたが。 …w
1000
おしい。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。