VBプログラマ質問スレ(6.0以前) Part48
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/05/04(木) 02:55:26質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。
VB.NETは別物なので専門スレで、VBS、APIの質問もそれぞれのスレで。
VBAは、Officeアプリの操作以外ならばこのスレで質問しても大丈夫です。
○ 質問者の心得
一.質問する前に過去ログにも目を通してみる。
二.質問する前に MSDN などで調べてみる。
三.VBScript はこのスレでOK。
四.インストーラーなどの質問もOK。
五.荒らしは相手しない。
六.VB.NETの話題はできるだけひかえる。
七.質問は第三者にもわかりやすいよう簡潔かつ具体的に。
○ 回答者の心得
一.答えられない質問は無駄に罵倒せずスルー。
二.代用法を強制しない。
三.回答する上で必須ではない情報をむやみに聞き返さない。
四.荒らしは相手しない。
五.VB情報募集中。
六.VB.NETの話題はできるだけひかえる。
七.回答は質問者が理解できるよう具体的に。
MSDN Online Japan ホーム
http://www.microsoft.com/japan/msdn/default.asp
Visual Studio 6.0 Service Pack 6 正式リリース
http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx
http://www.google.co.jp/
※「まず自分で調べる」クセを身につけよう。
0002デフォルトの名無しさん
2006/05/04(木) 02:56:46Part 1 http://piza2.2ch.net/tech/kako/968/968328471.html
Part 2 http://piza2.2ch.net/tech/kako/990/990793224.html
Part 3 http://piza2.2ch.net/tech/kako/1000/10005/1000523122.html
Part 4 http://pc.2ch.net/tech/kako/1006/10069/1006922992.html
Part 5 http://pc.2ch.net/tech/kako/1010/10106/1010624646.html
Part 6 http://pc.2ch.net/tech/kako/1013/10138/1013844542.html
Part 7 http://pc.2ch.net/tech/kako/1015/10158/1015836357.html
Part 8 http://pc.2ch.net/tech/kako/1018/10187/1018794901.html
Part 9 http://pc.2ch.net/tech/kako/1020/10208/1020830472.html
Part10 http://pc.2ch.net/tech/kako/1022/10221/1022127528.html
Part11 http://pc.2ch.net/tech/kako/1024/10243/1024380249.html
Part12 http://pc3.2ch.net/tech/kako/1026/10266/1026642565.html
Part13 http://pc3.2ch.net/tech/kako/1029/10292/1029241786.html
Part14 http://pc3.2ch.net/tech/kako/1030/10309/1030947162.html
Part15 http://pc3.2ch.net/tech/kako/1032/10327/1032706491.html
0003デフォルトの名無しさん
2006/05/04(木) 02:57:19Part17 http://pc3.2ch.net/tech/kako/1036/10361/1036154952.html
Part18 http://pc3.2ch.net/tech/kako/1038/10381/1038103769.html
Part19 http://pc3.2ch.net/tech/kako/1039/10398/1039859691.html
Part20 http://pc5.2ch.net/tech/kako/1041/10418/1041879465.html
Part21 http://pc5.2ch.net/tech/kako/1044/10440/1044028945.html
Part22 http://pc5.2ch.net/tech/kako/1046/10463/1046354784.html
Part23 http://pc5.2ch.net/tech/kako/1047/10477/1047743187.html
Part24 http://pc5.2ch.net/tech/kako/1050/10501/1050151126.html
Part25 http://pc5.2ch.net/tech/kako/1052/10526/1052627913.html
Part26 http://pc5.2ch.net/tech/kako/1055/10551/1055145106.html
Part27 http://pc5.2ch.net/tech/kako/1058/10586/1058674927.html
Part28 http://pc5.2ch.net/tech/kako/1061/10612/1061296197.html
Part29 http://pc5.2ch.net/tech/kako/1065/10654/1065446334.html
Part30 http://pc5.2ch.net/test/read.cgi/tech/1069160036/
0004デフォルトの名無しさん
2006/05/04(木) 02:58:34Part32 http://pc5.2ch.net/test/read.cgi/tech/1077216109/
Part33 http://pc5.2ch.net/test/read.cgi/tech/1080606445/
Part34 http://pc5.2ch.net/test/read.cgi/tech/1084544243/
Part35 http://pc5.2ch.net/test/read.cgi/tech/1087519251/
Part36 http://pc5.2ch.net/test/read.cgi/tech/1092906058/
Part37 http://pc5.2ch.net/test/read.cgi/tech/1090286450/
Part38 http://pc5.2ch.net/test/read.cgi/tech/1095673000/
Part39 http://pc5.2ch.net/test/read.cgi/tech/1099737063/
Part40 http://pc5.2ch.net/test/read.cgi/tech/1106748775/
Part41 http://pc8.2ch.net/test/read.cgi/tech/1112414085/
Part42 http://pc8.2ch.net/test/read.cgi/tech/1116924129/
Part43 http://pc8.2ch.net/test/read.cgi/tech/1123952677/
Part44 http://pc8.2ch.net/test/read.cgi/tech/1130231657/
Part45 http://pc8.2ch.net/test/read.cgi/tech/1133977286/
0005デフォルトの名無しさん
2006/05/04(木) 02:59:14Part47 http://pc8.2ch.net/test/read.cgi/tech/1141320612/
0006デフォルトの名無しさん
2006/05/04(木) 03:17:42Visual Basic チームは、Visual Basic 6.0 アプリケーションが WindowsR Vista? でも
"そのまま" 動作する互換性を提供することを表明します。」
Visual Basic チームは、Windows XP で実行できる Visual Basic 6.0 アプリケーションが
Windows Vista でも実行できるようにすることを目標としています。
また、Windows Vista で実行できる Visual Basic 6.0 の開発環境を提供するための取り組みも行っています。
このドキュメントで説明するように、Visual Basic 6.0 ランタイムは、Windows Vista のライフサイクルをとおして
サポートされます (メインストリーム サポートが 5 年、延長サポートが 5 年の合計 10 年になります)。
マイクロソフト プロダクト サポート ライフサイクルの詳細については、http://support.microsoft.com/gp/lifepolicy (英語) を参照してください。
マイクロソフトでは、ユーザーが Windows Vista で Visual Basic 6.0 アプリケーションを実行できるようにするため、
Windows Vista に Visual Basic 6.0 ランタイムの主要コンポーネントを同梱する予定です。
Visual Basic 6.0 ランタイムを使用するように記述されたアプリケーションが Windows XP と Windows Vista の両方で
同様に動作する互換性を確保するため、一連のアプリケーションを使用してテストを行いました。
Visual Basic 6.0 IDE は、延長サポートの一環として、2008 年 3 月まで Windows Vista でサポートされます。
Windows Vista チームと Visual Basic チームでは、Windows Vista で Visual Basic 6.0 IDE のテストを行い、
IDE が以前のオペレーティング システムと同様に機能するようにしています。
0007デフォルトの名無しさん
2006/05/04(木) 03:43:150008デフォルトの名無しさん
2006/05/04(木) 05:54:45インタプリタって釣ってるだけだよな・・・。
0009デフォルトの名無しさん
2006/05/04(木) 06:22:20http://tmp6.2ch.net/test/read.cgi/download/1146675993/
0010デフォルトの名無しさん
2006/05/04(木) 10:41:31遊んでただけか?
0011デフォルトの名無しさん
2006/05/04(木) 10:58:13VC++覚えたばかりの連休厨房でしょ
まあ、いずれにせよ
> 四.荒らしは相手しない。
0012デフォルトの名無しさん
2006/05/04(木) 11:01:15サンクス。
0013デフォルトの名無しさん
2006/05/04(木) 11:04:01いや、一人で八面六臂の活躍wをしているのかもしれんが。
どうみても「必死」なのはVB擁護している奴の方でしょ。
必死が悪いかどうかは別にして。
VBからかってる奴は文字通り「からかってる」んだよ。
つまりネタでやってるの。当たり前だろw
人間ってのはコンプレックスを突かれたときに過剰反応するもんなんだよ。
自分に自信があるか、あるいは逆に自分の無能さを十分に自覚していれば
VB使いが低能だ、みたいな中学生みたいな煽りは無視できるでしょ?
いちいち反応しないと気がすまないのは図星を突かれてるからだ。
悪いけど実際問題VBに固執している奴の大半はVBが便利だからではなく
VBしか使えないから固執しているんだから、まずそれを自覚しろって。
そして下らない煽りにいちいち反応すんなよ。餓鬼じゃあるまいし。
0014デフォルトの名無しさん
2006/05/04(木) 12:01:33eclipseとか使うけど、VBほどの使い勝手のよさを感じられない
まぁ、「慣れ」かも知れないけど…
0015デフォルトの名無しさん
2006/05/04(木) 12:16:13それが俺っち。
一応プログラマやってます。
派遣社員だけど。
0016デフォルトの名無しさん
2006/05/04(木) 12:17:330017デフォルトの名無しさん
2006/05/04(木) 12:22:07その考え方は正しいすな。
目的を達成できる安くて早い手段を採用すればよい。
0018デフォルトの名無しさん
2006/05/04(木) 12:25:530019デフォルトの名無しさん
2006/05/04(木) 12:27:42MSXの時代は、BASICで作られたプログラムより、
C言語で作られたプログラムのほうが見違える速さで、
憧れの的だったけど、今となっては別にVBで十分な場合多いし。
0020デフォルトの名無しさん
2006/05/04(木) 12:31:47すみません、便乗して質問なのですが
どの言語から始めていいのかわかりません。
最終的にはバリバリの3Dゲームを作りたいのですが
VBでも十分でしょうか?
0021デフォルトの名無しさん
2006/05/04(木) 12:33:49今から敢えてVBを選択する意味はないです。
DirectX使いたいなら素直にunmanagedなVC++いっとけ。
0022デフォルトの名無しさん
2006/05/04(木) 12:35:09はじめはともかく最終的にはVBではキツいでしょう。
0023デフォルトの名無しさん
2006/05/04(木) 12:36:40レスありがとうございます。
最終的にはVC++を習得するとして
現時点で、入門用としてVBを使うことは推奨されることなのでしょうか?
0024デフォルトの名無しさん
2006/05/04(木) 12:45:26>>21
0025デフォルトの名無しさん
2006/05/04(木) 12:45:41階段も1段ずつだから、いいと思う。
0026デフォルトの名無しさん
2006/05/04(木) 12:48:15だからこそ一発目にトリッキーな言語を交ぜるのは推奨しないす。
0027デフォルトの名無しさん
2006/05/04(木) 12:49:03まあ、VB6でも使えることは使えるけどね >DirectX
このスレでこんなこと言うのもなんだが、
3Dゲームで画面描画は全部DirectX使うんなら
あえてVB6を使う利点はないと思うよ。
0028デフォルトの名無しさん
2006/05/04(木) 12:49:31ありがとうございます。
それではVBとVC++の間を取ってDelphiから始めたいと思います。
皆さんの意見は大変参考になりました。
0029デフォルトの名無しさん
2006/05/04(木) 12:50:12でも、ピッチの広い階段は大変だぞ。
入門だからまずアプリが作れたという満足感とか楽しさを進める
0030デフォルトの名無しさん
2006/05/04(木) 12:52:00んじゃC#かDelphiで。
0031デフォルトの名無しさん
2006/05/04(木) 12:53:22数当てゲームを作れた満足感より、
スプライトを使って作れたアーチェリーゲームのほうが、
満足感はかなり高かったなぁ。
0032デフォルトの名無しさん
2006/05/04(木) 12:57:43スプライトA 自機
スプライトB 自機の玉
スプライトC 敵機
どのスプライト同士が衝突しても同じ処理しか出来なくて、
挫折したなぁ。
スプライトに一応番号はあるんだけど、
「この番号とこの番号が衝突したら」っていう判定が出来なかった。
0033デフォルトの名無しさん
2006/05/04(木) 12:59:220034デフォルトの名無しさん
2006/05/04(木) 13:01:450035デフォルトの名無しさん
2006/05/04(木) 14:55:500036デフォルトの名無しさん
2006/05/04(木) 16:10:45俺も。
0037デフォルトの名無しさん
2006/05/04(木) 19:21:30実際どうがか知らんけど
0038デフォルトの名無しさん
2006/05/04(木) 21:09:09.NetになってVB使う意味は無くなっちまったよ。
つーことで、環境が許すときはいまだにVB6.0、
.NetのときはC#だな。
0039デフォルトの名無しさん
2006/05/04(木) 21:17:11デッドストックがどこかにある程度だろ。2、3代前の開発環境だろ
>.NetになってVB使う意味は無くなっちまったよ。
これは同意。
0040デフォルトの名無しさん
2006/05/04(木) 22:05:000041デフォルトの名無しさん
2006/05/04(木) 22:30:500042デフォルトの名無しさん
2006/05/04(木) 22:33:17Webアプリケーションだと天国と地獄ほどの違いがあるな。
0043デフォルトの名無しさん
2006/05/04(木) 22:46:18VBでWEBアプリなんて書けたっけ?
004438
2006/05/05(金) 00:11:49ASP.NETでな。
とりあえず、イミディエイトだけでも少しはましにしないと
6.0以降はeclipseにも及ばんなー。
VCでしか物作らないMS様はそんな事きにしませんか。
0045デフォルトの名無しさん
2006/05/05(金) 22:55:52VB6.0ならば「IISアプリケーション」と言う名前の機能で作成できる。
0046デフォルトの名無しさん
2006/05/05(金) 23:45:51へぇ〜
あれがそうなのか。
0047デフォルトの名無しさん
2006/05/08(月) 08:02:56そこでAddressOf演算子でアドレスを表示させ、それを使おうと考えました。
しかしAddressOf演算子はDLLの引き数にしか使えないようです。
なにかよい方法無いですか?
0048デフォルトの名無しさん
2006/05/08(月) 08:08:10> しかしAddressOf演算子はDLLの引き数にしか使えないようです。
DLL の引数、ではなく、関数の引数、ではなかったか?
ダミーの関数をつくってその引数にすればよかったと記憶している。
違ったらごめん。
0049デフォルトの名無しさん
2006/05/08(月) 08:33:31ObjPtr って駄目だっけ?
0050デフォルトの名無しさん
2006/05/08(月) 20:05:43すでにアプリからExcelで帳票が出力できている状態で、
これをPDFでも出力したいなぁってことで1から組むのではなく
単純にxlsファイルをPDF変換して出力しようと思っています。
調べてみたところシェアならActive Reportsで行けそうな感じなのですが
フリーでこういったDLLやOCXあるよーって方います??
0051デフォルトの名無しさん
2006/05/08(月) 20:29:47まずSP6をあてろ。
0052デフォルトの名無しさん
2006/05/08(月) 21:00:10アクロバットで出来るんじゃないの。
005347
2006/05/08(月) 22:02:35原因がわかりました。
アドレスを得ようとした関数がクラスモジュールにあると駄目なようです。
Basファイルにある関数のアドレスなら取れました。
当初の目的から逸れますが、デバック関数をBASに作り、
目的の関数の前後でコイツを呼び出して何とかしようと考えています。
0054デフォルトの名無しさん
2006/05/08(月) 22:54:060055デフォルトの名無しさん
2006/05/09(火) 15:21:09クラスをインスタンス化して無いとか言う落ちじゃないのか?
0056デフォルトの名無しさん
2006/05/09(火) 15:45:03VB6ってVistaでも開発環境できるのかな?
それよりも動かせるのかな?
何よりも自分がVS2005が使えるのか・・・
VB6しか触った事が無い人でもVS2005って扱えるんでしょうかね?
0057デフォルトの名無しさん
2006/05/09(火) 16:01:300058デフォルトの名無しさん
2006/05/09(火) 16:09:13Vistaはまた遅れるらしいよ。
また、Vista上でVB6アプリは動く様にするらしい。
まぁそんな事しなくても、VirtualPC上の2000で動かせばいけど。
0060デフォルトの名無しさん
2006/05/09(火) 18:21:14開発環境
サーバ:Windows2003
クライアント:WindowsXP
IIS4.0
VBランタイム6
目的
Access、またはExcelで帳票を作成して印刷したい。
質問
Set objAccess = Server.CreateObject("Access.Application")
または、
Set objExcel = Server.CreateObject("Excel.Application")
でエラーが起きてしまい、なぜかCreateObjectでAccessとExcelが使えません。
ちなみに"Scripting.FileSystemObject"は使用できました。
どうすればエラーが起きないようにできるのでしょうか。
エラー内容
-2147024891 006~ASP 0178~Server.CreateObject アクセス エラー~許可を確認中に
Server.CreateObject の呼び出しに失敗しました。このオブジェクトへのアクセスは拒否されます。
自分で調べた結果
・VBランタイムのアクセス許可→許可してもだめでした
ttp://support.microsoft.com/kb/278013/ja
・アウトプロセスのアクセス許可→解決方法通りにできない
ttp://support.microsoft.com/kb/198432/ja
よろしくお願いします
0061デフォルトの名無しさん
2006/05/09(火) 18:43:50006260
2006/05/09(火) 22:11:34MSも同じこといってるみたいですね・・・
ttp://support.microsoft.com/kb/257757/ja/
さすがMS。。。。
0063デフォルトの名無しさん
2006/05/09(火) 22:27:51MSの責任ではなく、サーバーでの使用を保証していないものを
使おうって発想の方が遥かに責任が重いかと。
0064デフォルトの名無しさん
2006/05/09(火) 22:54:17そういう危なそうなことをしようとも思わないので、
なにが原因か調べる気が起きない。
0065デフォルトの名無しさん
2006/05/10(水) 00:04:29「設定が悪い」のではなく、そんな使い方は
MSの「想定の範囲外」なので、
原因究明なんて無意味&無駄。
0066デフォルトの名無しさん
2006/05/10(水) 00:59:41また荒れそうな話するけど
「そんな暇あるならさっさと」っていうのはこの件に関してはやばいな。
将来確実に直面する問題を先送りにすればするほどあとで困るのに。
(先取りしすぎてもリスクがあるが、今はそう言う時期でもないだろう)
VB6の次はVB.NETにする予定があるなら、出来るだけ早いうちから
ちょっとずつ移行しておいたほうがいいよ。「お前には無理」かどうかの
調査にもなるし。
けっきょく仕事はVB.NETじゃなくてJavaに移行したとかいうときでも
完全に無駄にはならんだろう。
あとVB6自体はVistaで動いても、他社製のocxなんか使うならそっちの対応も必要だ。
>>58の最後の提案でいいようなきも駿河w
0067デフォルトの名無しさん
2006/05/10(水) 10:04:34MSは、VirtualPC
ttp://www.microsoft.com/japan/windows/virtualpc/default.mspx
じゃなくて、VMWareを買収して欲しかったなー。
0068デフォルトの名無しさん
2006/05/10(水) 10:50:15VMWareだと、旧OSの為のDisplayドライバやチップセットドライバが必要になるけどそれで良いのか?
VirtualPCだと440BXにS3-Trio64Vだから結構古いOSでもドライバが用意されてる
0069デフォルトの名無しさん
2006/05/10(水) 11:16:22そうなんだ。じゃぁVPCでいいや。
しかし「440BXにS3-Trio64V」て、まさに昔使ってたPCだ。w
0070デフォルトの名無しさん
2006/05/11(木) 19:28:25http://pc8.2ch.net/test/read.cgi/tech/1146678926/
から移動してきました。
あるフォルダのサイズを得る為に、ヘルプを参考に
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder("D:\")
MsgBox f.size
の様な VBS を書いて実行すると、「800A0046:書き込み出来ません」
のエラーが出てしまいます。
ディレクトリのサイズを参照しているだけなのに、書き込めないとは
どういう事なのでしょうか・・・?
検索すると、権限の問題らしいのですが、Administrator で実行
していますし・・・
0071デフォルトの名無しさん
2006/05/11(木) 21:01:44どの部分でエラーが出てるのかが分からないけれど、
Dim fso as Object
Dim f as Object
にすればいいのかな?
0072デフォルトの名無しさん
2006/05/11(木) 21:33:40どこから移動してきたってぇ???
それはさておき、そのスクリプトは
どこから起動した?
ブラウザ?それとシェル?
0073デフォルトの名無しさん
2006/05/11(木) 21:46:26"D:\"はフォルダじゃなくてドライブな気がするが
0074デフォルトの名無しさん
2006/05/11(木) 22:09:12ルートはフォルダじゃないから
ドライブの容量見たければ
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
msgbox fso.GetDrive("D").TotalSize
0075デフォルトの名無しさん
2006/05/11(木) 22:52:18マウスの操作が繰り返しなんで、マウスの移動やクリックというのはプログラムで操作できるんでしょうか?
0076デフォルトの名無しさん
2006/05/11(木) 23:01:41エラーは「MsgBox f.size」の部分で出ます。
で、VBS ファイルとして実行してるので、型宣言はないのです。
>>72
VBSファイルとして、Exeとかと同じ様に実行しました。
>>73
ルートフォルダ配下の全ファイルの容量、のつもりでした。
>>74
サンプルなのであのコードでしたが、実際は、GetFolder の引数は可変になります。
色々なサブディレクトリ(フォルダ)の容量を取得したかったのです。
0077デフォルトの名無しさん
2006/05/11(木) 23:19:34自分の環境だと「System Volume Information」フォルダがあるドライブだと
参照できなくて落ちています。
http://support.microsoft.com/default.aspx?scid=kb;ja;309531
で、参照できるようにしたらできました。
「書き込みできません」が出る理由まではわかりませんでした。
0078デフォルトの名無しさん
2006/05/12(金) 00:33:19System Volume Information って全部にあるな・・・
0079デフォルトの名無しさん
2006/05/12(金) 00:41:32リムーバルディスクとか
0080デフォルトの名無しさん
2006/05/12(金) 01:43:54自分の出たことあるきがするんだけど思い出せない。
なんでこのエラーメッセージやねん!って突っ込んだ気がするけど。
よく考えれば、あぁ。そういうことかと思った気がするんだけど。んー?
0081デフォルトの名無しさん
2006/05/12(金) 09:58:390082デフォルトの名無しさん
2006/05/12(金) 10:36:05FAT16にもFAT32にもあるんだけど。
0083デフォルトの名無しさん
2006/05/12(金) 10:49:510084デフォルトの名無しさん
2006/05/12(金) 11:38:50keyword=の<book>をeuc-jpで渡す方法がわかりません。
どこにどのコードを追加すればよいでしょうか?
strSelText = objFrmDoc.selection.createRange().text
strArgments = "" & CHR(34) & "https://www.library.shinjuku.tokyo.jp/opac/cgi-bin/sellist?
type=0&allc=&page=1&keyword=<book>&sentaku=and&title=&sentaku=and&author=&sentaku=or
&publish=&sentaku=or&isbn=&pubydate1=&pubydate3=&bunrui=&syubetu=all&kan=all&media=all
&count=10&order=publish&before=select&authorid=&opacfile=&titleid=&i1=&i2=" & CHR(34) & ""
strArgments = Replace(strArgments, "<book>", strSelText)
objWshShell.Run CHR(34) & EXE_PATH & CHR(34) & " " & strArgments, 1, 0
0085デフォルトの名無しさん
2006/05/12(金) 20:32:43マウスは動かせないけど、こんなのを応用してみてはどう?
http://www.microsoft.com/japan/msdn/columns/scripting/scripting061499.asp
'==========================================================================
'
'
' NAME: Calculater.vbs
'
' COMMENT: calc.exe にキーストロークを送る
'
'==========================================================================
Dim WshSHell
set WshShell = CreateObject("WScript.Shell")
WshShell.Run("calc")
WScript.Sleep(100)
WshShell.AppActivate("Calculator")
WScript.Sleep(100)
WshShell.SendKeys("1{+}")
WScript.Sleep(500)
WshShell.SendKeys("2")
WScript.Sleep(500)
WshShell.SendKeys("~")
WScript.Sleep(500)
WshShell.SendKeys("*3")
WScript.Sleep(500)
WshShell.SendKeys("~")
WScript.Sleep(2500)
0086デフォルトの名無しさん
2006/05/12(金) 22:07:110087デフォルトの名無しさん
2006/05/13(土) 12:37:07VBでオブジェクトをCollectionにぶち込むのと リスト構造でオブジェクトを持つのでは どっちが効率がいいの?
0088デフォルトの名無しさん
2006/05/13(土) 12:49:13意味不明。なんか頭の悪い質問だな。
マウスによる操作とキーボードのどっちが効率がよいかは
「何をするか」によるだろうに。
008987
2006/05/13(土) 13:03:13ごめん ListBox の事じゃなくって 双方向リンクリストの事だ
説明足んなくてすまん
0090デフォルトの名無しさん
2006/05/13(土) 13:19:09どんな状態が「効率が良い」と思ってるのか。
コレクションだろうがリンクリストだろうが、
アルゴリズム次第でどうとでもなるし。
0091デフォルトの名無しさん
2006/05/13(土) 14:21:46インストーラ作成時に無駄にDLLやOCXが梱包されること以外に、
目に付くような弊害って何かありますか
0092デフォルトの名無しさん
2006/05/13(土) 14:35:58そもそも、何でそんな事したいの?
0093デフォルトの名無しさん
2006/05/13(土) 14:54:09その場合、削除が可能なはず。
NTFSドライブに存在するSVIフォルダは削除不可能、閲覧不可能なただのゴミ。
0094デフォルトの名無しさん
2006/05/14(日) 05:23:26圧倒的にVisual Basicが多いのですが。
なんで?
0095デフォルトの名無しさん
2006/05/14(日) 09:51:320096デフォルトの名無しさん
2006/05/14(日) 11:12:19同じ機能のソフトを、生CとVBとVC++とJavaとアセンブラで書いてみやぁ。
0097デフォルトの名無しさん
2006/05/14(日) 11:23:55例えば通信一つとってもスレッドが使えないから、タイマ使うか
UIがフリーズするの覚悟でループでポーリングするかするわけだけど、
いずれにしてもPCや機器の性能を100%生かせない、どっかストレス感のある
アプリになってしまう。
0098デフォルトの名無しさん
2006/05/14(日) 11:39:53イベントドリブンって知ってるか?
0099デフォルトの名無しさん
2006/05/14(日) 11:44:42知らない。解説頼む。
0100デフォルトの名無しさん
2006/05/14(日) 14:16:57いや当然DLLと組み合わせてやるんだよ。
__asm { } とかでCの中に機械語も直接書けるから、
バンバンIn/OutするDLL書いて、VBから
コールしてる。
0101デフォルトの名無しさん
2006/05/14(日) 14:45:21VBで対象プロセスの優先度を変更のやり方を教えてくださいな
検索はしてみたんですがそれらしいものがまったくでなかったもので^^;
0102デフォルトの名無しさん
2006/05/14(日) 14:51:22痛い人だなあ。。
アセンブラ使おうが何使おうが、通常のユーザーモードで動作するアプリが
勝手にIOにアクセスなんてできないんだよ。
Winに限らずマルチタスクOSとはそういうもの。
っていうか、IOにアクセス可能かどうかなんて話はしてないし。
VBが制御に向かない理由の一つとして、ワーカースレッドが使えないと言ってるだけ。
0103デフォルトの名無しさん
2006/05/14(日) 15:06:39Win32 API を使う。SetPriorityClass() かな。
0104デフォルトの名無しさん
2006/05/14(日) 15:11:26お前、何も分かってないな。
まぁいいけど。
0105デフォルトの名無しさん
2006/05/14(日) 23:09:56コンパイルして実行ファイルを作ったのですが
実行ファイルの動作がソースと異なる事態が発生してしまいました。
簡単に書くと
if A=1 then
B=B+1
else
C=C+1
end if
見たいな感じなんですが、A=1にはめったに行かない(ソースで確認しました)はずなのに
実行ファイルではすべてAに行ってしまいます。
何か原因ありますか?
OSはwindows2000,VB6.0です。
0106デフォルトの名無しさん
2006/05/14(日) 23:33:40エスパーはおらんつーのw
0107デフォルトの名無しさん
2006/05/14(日) 23:58:29どこでA=1になってるか調べてみなきゃなんとも言えんでしょ
0108デフォルトの名無しさん
2006/05/15(月) 00:08:32「A=1にはめったに行かない」じゃなくて
「B=B+1にはめったに行かない」だろうが。
日本語もまもとに書けないからバグるんだよ。
0109デフォルトの名無しさん
2006/05/15(月) 00:16:310110デフォルトの名無しさん
2006/05/15(月) 00:57:44そのA、またはAに代入してる関数や変数、またはその関数に使われている
(その変数に代入している)関数や変数・・・のどっかの関数が、IDEとEXEで
返す結果が違うんだろ。さかのぼって追いなさい。
たとえば
Function Hoge()
Hoge = なにか
End Function
...
A=Hoge
If A=1 Then...
ていうときに「なにか」のところが怪しいとか、そんな感じで見ていくの。
EXEでAの中身を調べたかったら、フォーム上のLabelやファイルに出すとか。
じつはEXEではElseの方を通ってるけれど勘違いしてた、という可能性も
あるから、「どっちを通った」みたいな情報も出力するといい。
0111デフォルトの名無しさん
2006/05/15(月) 01:24:33エスパー厨って失礼な奴だな。
あのねえ、そうやって質問者を甘やかすのは本人のためはもちろん
スレの利用者全体の利益に反すると思うぞ。
少なくとも回答者に千里眼的能力を要求するような質問を
許容すべきではないと思うがね。
0112デフォルトの名無しさん
2006/05/15(月) 01:31:09正直に言うと、VBAの宿題出されてまったくわけわからなくて助けてほしかったんです。
甘えてばかりでごめんなさい。
0113107
2006/05/15(月) 01:58:09いや多分あんたじゃなく105ね >エスパー質問
なぜAが1になるのかなんてあれだけで解るわけがないw
ちなみにVBAってことはExcel?
ttp://www.happy2-island.com/
↑ここ逝けば幸せになるかも。
0114デフォルトの名無しさん
2006/05/15(月) 02:03:27Excelです、わざわざありがとうごいます!
0115デフォルトの名無しさん
2006/05/15(月) 08:49:46日本語でおk。
0116デフォルトの名無しさん
2006/05/15(月) 17:43:17このスレに向いてないと思う
0117デフォルトの名無しさん
2006/05/15(月) 22:32:350118デフォルトの名無しさん
2006/05/15(月) 22:41:200119デフォルトの名無しさん
2006/05/15(月) 23:05:51家にはVB2005しかなくVB2005でやろうとしたらなんかアップデートされて
拡張子とか変わっちゃたんですけど、いったんVB2005で編集してそれをVB6でも
編集できるようにすることはできるのでしょうか?
0120デフォルトの名無しさん
2006/05/15(月) 23:07:280121デフォルトの名無しさん
2006/05/15(月) 23:32:05dim as a integer
dim as b integer
dim as c integer
a=5
b=8
c=2
の時、
上記のうち最大値と最小値msgboxにを表示したいんですが、
別の変数としてdを置いて、処理をする際に
dに最大値を保存するやりかたは効率的ですか?
あとmsgboxに二つの値を表示するのってどうすればいいですか?
0122デフォルトの名無しさん
2006/05/15(月) 23:33:50書いてる事が矛盾してるが。
0123デフォルトの名無しさん
2006/05/15(月) 23:41:010124119
2006/05/15(月) 23:43:45つまり学校のVB6で作ったものを家のVB2005で加工したら拡張子とかが
変わってしまったんですけど、それを学校のVB6で加工することは無理なんでしょうか?
0125デフォルトの名無しさん
2006/05/15(月) 23:56:290126デフォルトの名無しさん
2006/05/16(火) 00:13:05無理。
0127デフォルトの名無しさん
2006/05/16(火) 00:13:55文字列を&で繋げばいい。
0128デフォルトの名無しさん
2006/05/16(火) 12:07:01マジレスするとVB6とVB2005ではバージョンが違うからファイルの内容もコードも全部変わっちゃうから無理。
バックアップしてある書き換え前のやつから掘り起こすしかない。なかったら諦める。バックアップ取らないお前が悪い
0129デフォルトの名無しさん
2006/05/16(火) 12:35:36わざわざデリったりしないよ。
当たり前でしょw
どこの世界にそんな意地の悪い魔法使いが
だから、最初からそんな餌(
0130デフォルトの名無しさん
2006/05/17(水) 10:38:58SSPANEL等の読み込みが出来ません。
「ライセンスがありません」といった内容でした。
ネット上で配布されてるランタイム一式をインストーラーを使って
導入したのですが、
なにが問題なのでしょうか?
0131デフォルトの名無しさん
2006/05/17(水) 11:40:21SSPANELって、VB6には添付されてないんじゃないっけ?
今VB6を起動出来ない環境なので確かめられないけど。
MSのサイト見てみ。
別のに置き換えるしかないかと。
0132デフォルトの名無しさん
2006/05/17(水) 11:54:17実行時インストーラーで入れても開発できない。
SS系(3Dコントロール)は確か、CDのToolsの下にあったような。
それもVB5までだっけ?4->6なんてコンバージョンは作り直してたから知らんわ。
0133デフォルトの名無しさん
2006/05/17(水) 12:41:490134デフォルトの名無しさん
2006/05/17(水) 22:26:060135デフォルトの名無しさん
2006/05/17(水) 23:05:54っLoadPicture
0136デフォルトの名無しさん
2006/05/18(木) 03:33:07FindFirstChangeNotification
0137130
2006/05/18(木) 10:07:57>>131-132
それか!
やっぱり、CDに入ってるのと、配布されてるランタイムは別物なんですね。
先方から、「エラーが出たけどこれ入れたら直った」って言われたから
なんで動かないのか悪戦苦闘して状況悪化してました。
# 只、むこうはそれで問題なく開発できてるんだよな…
リドミにはCDには入ってるようなことが書いてあったけど、
其れらしいものがみあたらないので
先方に別物に置き換えて良いか確認します。
あ、SPREADの6.0を入れてるけどそれは関係ないですかね
>>133
其れ聞くとなおさら乗り換えた方がいい気がしてきた
0138デフォルトの名無しさん
2006/05/18(木) 11:54:52APIを使えば出来るのでしょうか?だとしたらAPI名はなんですか?
それとも、イーサネット・ヘッダから何らかの方法で取得するのでしょうか?
0139デフォルトの名無しさん
2006/05/18(木) 12:40:01こういう人って何考えてるのかな。どっか心を病んでるとしか思えん。
俺はVB4からのコンバートなんて全くやったことも無いが、
MSDNライブラリで"sspanel"で検索する手間さえ惜しいのか。
死んだ方がいいと思うよ。
0140デフォルトの名無しさん
2006/05/18(木) 13:00:04解決しました
0141デフォルトの名無しさん
2006/05/18(木) 13:01:14こういう人って何考えてるのかな。どっか心を病んでるとしか思えん。
0142デフォルトの名無しさん
2006/05/18(木) 13:45:45ただ、FDが入っていないときにDriveListBoxでAドライブを指定すると、
「実行時エラー'68':デバイスが準備されていません。」と出てきてしまいます。
メディアが入っていないきは、何もしないようにしたいのですが、下記のコードではエラーを受け取ってくれません。
Dir1.Path = Drive1.Drive
On Error GoTo Aaaa
Aaaa:
If Err.Number = 68 Then
Exit Sub
End If
どうしたらいいいでしょうか?
ご存知の方、お聞かせ下さい。
よろしくお願いします。
0143130
2006/05/18(木) 13:46:08申し訳ありません。
MSDNは勿論参照いたしましたが、
それで解決できなかったので質問させていただきました。
別所ではネット上のランタイム導入等で動作している(らしい)ので
なんとかならないか模索している次第です。
0144デフォルトの名無しさん
2006/05/18(木) 13:57:291行目と2行目を入れ替えろ
0145デフォルトの名無しさん
2006/05/18(木) 14:13:23vb2005でも改行は( _)なのですね
メモ帳でも右端で折り返してくれるのに、
何故こんな記号を使ってるのでしょうか?
0146デフォルトの名無しさん
2006/05/18(木) 14:17:19どう解決したかを書き込むと、同じ事で悩む、
これからここを見る人の役に立つんだが?
>>142
SetErrorMode API とか。
0148デフォルトの名無しさん
2006/05/18(木) 15:09:19いやそんな事で驚かれても・・・
0149デフォルトの名無しさん
2006/05/18(木) 15:09:21自分のアホさ加減に驚いたのか?
そうじゃないなら、On Errorのヘルプくらい見れ
0150デフォルトの名無しさん
2006/05/18(木) 15:42:460151デフォルトの名無しさん
2006/05/18(木) 15:59:20普通は、生まれて初めてヘルプ読んだその時に分かる。
0152130
2006/05/18(木) 16:09:39>>130の表記に問題があるようなので再度疑問点を記載させていただきます。
VB4の機能(SSPANEL等)を利用したVB6プロジェクトを編集する際
ネット上で配布されているTHREED32.ocxを含むパッケージをインストールし
コンポーネントの追加から参照を行いましたが
フォームを表示させようとするとライセンスエラーが表示されます。
先方でも同じ現象が発生しましたが、
同様の方法で回避できたそうです。
ネット上で配布されているTHREED32.ocxは
開発環境では使用できないのでしょうか?
他にも何か必要なファイルが存在するのでしょうか?
また、VS6ではCD内には収録されていないのでしょうか?
0153デフォルトの名無しさん
2006/05/18(木) 17:08:23CDなんか自分で中身見ればいいじゃん。
0154130
2006/05/18(木) 17:18:28CD内を一通り確認しましたが
それらしいのはみつけられませんでした。
もしかしてファイル名が違うのではと思い、追記した次第です。
0155デフォルトの名無しさん
2006/05/18(木) 18:12:27すいませんおっしゃる通りです・・・ SendARP ってので出来るみたいです。
0156デフォルトの名無しさん
2006/05/18(木) 18:28:38DISK2も見れ
0157デフォルトの名無しさん
2006/05/18(木) 19:46:14君本当に病気でしょ?
だからそんなもんMSDNライブラリに書いてあるつーの。
こんなとこにツラツラ書いてる間になんでMSDNライブラリ開いて検索する気にならんの?
0158わけあってVB4を使ってる人
2006/05/18(木) 19:47:39見れるようにしたいんですがどうすればよいのでしょうか?
0159デフォルトの名無しさん
2006/05/18(木) 19:51:250160わけあってVB4を使ってる人
2006/05/18(木) 19:56:18ソフトを起動するときです
0161デフォルトの名無しさん
2006/05/18(木) 19:58:360162わけあってVB4を使ってる人
2006/05/18(木) 20:08:47教えてください
0163デフォルトの名無しさん
2006/05/18(木) 20:12:400164デフォルトの名無しさん
2006/05/18(木) 20:22:01用途を満たすか判らんけど、簡単なのはINIファイルかなぁ?
0165デフォルトの名無しさん
2006/05/19(金) 00:51:01Reserve関数を使わずに作りたいんですけどどうすればいいんでしょうか?
素人過ぎて困ってます。。OSはwindowsXPです。
誰か助けて下さい。
0166デフォルトの名無しさん
2006/05/19(金) 01:02:16学校の課題ってのは20年進歩がないんだなw
だから課題は自分でやらなきゃ意味ないだろ
つーかReserve関数って何?w
0167デフォルトの名無しさん
2006/05/19(金) 02:28:54はぁ、以前からある課題でしたか。
そんなこともできない自分に自己嫌悪・・・
0168デフォルトの名無しさん
2006/05/19(金) 09:04:28( ´・∀・`)へー
0169デフォルトの名無しさん
2006/05/19(金) 10:06:33Dim i As Integer
Dim s As String
s = ""
For i = 0 To 8
s = s & Chr$(&H82A0 + ((i And 7) + CInt(CBool(i And 4)) * 2 * (i And 3)) * 2)
Next i
これでとりあえず s に「あいうえおえういあ」が入る
0170130
2006/05/19(金) 11:23:04リードミーに書かれている手順に従ってレジストリの登録を行ったのですが
相変わらず参照が出来ません。
試しにオブジェクトを挿入してみたところ
実行時エラー713が出ます。
レジストリの登録が正常に出来ていないのでしょうか。
何度かやってみましたが駄目でした
>>154
Disk3に入っていました。
Disk2までは確認したのですが3の存在に気付いておりませんでした。
>>152
MSDNに記載されている情報は一通り参照したけれども、
状態が解決しないので質問させていただいています。
鬱陶しいのは重々承知しておりますが、先方にも匙を投げられて
頼れる所が無かったので。
0171130
2006/05/19(金) 11:34:11他にも同様の症状が出ておりますので、検証してみます。
何度も失礼致しました。
0172165
2006/05/19(金) 14:32:00ありがとうございます。
InputBoxに書いた文字を回文表示したい場合、
どうすればよろしいんでしょうか?
何度もすみません。。
0173デフォルトの名無しさん
2006/05/19(金) 14:54:37Dim i As Integer
Text2.Text = Text1.Text
For i = 1 To Len(Text1.Text) - 1
Text2.Text = Text2.Text + Mid$(Text1.Text, Len(Text1.Text) - i, 1)
Next i
0174デフォルトの名無しさん
2006/05/19(金) 16:28:04および同じく位置とサイズを変更する方法を教えてください。
自フォームなら取得も変更も簡単なのですが、別アプリを操作したいので困っています。
WindowsXP,VB6SP6です。
0175デフォルトの名無しさん
2006/05/19(金) 16:32:47FindWindow
0177デフォルトの名無しさん
2006/05/19(金) 16:42:26アクティブなのでいいのなら GetForegroundWindow で十分だな
0178172
2006/05/19(金) 16:52:14ありがとうございます。
重ねてすみません。
入力した文字が1回のクリックで
MsgBoxに全て表示できるようにするには
どうすればいいのでしょうか。
今後の勉強のためにも、
何故そうなったかという解説もお願いします。
0179デフォルトの名無しさん
2006/05/19(金) 16:57:410181173
2006/05/19(金) 17:46:15教わった方法だと1つのMsgBoxに
1文字ずつしか表示されないんです。
これを1つのMsgBoxに1つの文(回文)
となるようにしたいんです。
>>180
本気でわかってないんです。
はぁぁ、ごめんなさい。。
0182デフォルトの名無しさん
2006/05/19(金) 18:17:42>>173 には MsgBox なんてないが。
0183デフォルトの名無しさん
2006/05/19(金) 18:20:04(゚Д゚)ハァ?
forを抜けたところでMsgBox Text2.Text で出来るでしょ?
0184デフォルトの名無しさん
2006/05/19(金) 18:28:020185デフォルトの名無しさん
2006/05/19(金) 18:59:43ヘルプ見ろよ。
0186デフォルトの名無しさん
2006/05/19(金) 22:10:25semete gugureyo
0187デフォルトの名無しさん
2006/05/20(土) 01:39:33表関数はどうすれば作成できますか?
0188デフォルトの名無しさん
2006/05/20(土) 01:50:310189デフォルトの名無しさん
2006/05/20(土) 03:04:450190174
2006/05/20(土) 05:35:26どうもありがとう。
とりあえずFindWindowは条件的に使えないけど
GetForegroundWindowとSetWindowPos、
そしてSetWindowPosを調べてて見つかったGetWindowRectで
取得も変更も出来ました。
0191デフォルトの名無しさん
2006/05/20(土) 19:56:55どのようにすればできるのでしょうか?
参照した値をテキストボックスに表示したいのですが可能でしょうか?
0192デフォルトの名無しさん
2006/05/20(土) 20:34:29っReadProcessMemory API
0193デフォルトの名無しさん
2006/05/20(土) 21:01:12そちらをググって見たらイロイロ出てきました。
いまから調べてみます。
ありがとうございました。
0194184
2006/05/20(土) 22:25:35に相当することをやるには、もしかして、Format関数を
組み合わせて頭を捻らないとダメ?
0195デフォルトの名無しさん
2006/05/20(土) 22:46:03これでマルチプラットフォーム化
VBはこれからも生きつづけることになった。
http://blogs.sun.com/roller/page/herbertc?entry=project_semplice_visual_basic_for
0196デフォルトの名無しさん
2006/05/20(土) 22:56:2316進数に変換するのが目的なら、Hex。ただし、頭の0はつかない。
0197184
2006/05/20(土) 22:59:31すると、HEX$したあとに文字の数を数えて不足分だけ0を頭に足す、という行為を
3変数それぞれに行って、最後に+で結合する必要がある?
0198デフォルトの名無しさん
2006/05/20(土) 23:37:45そだね。
Right("000" & Hex(a), 4) & ...
0199デフォルトの名無しさん
2006/05/20(土) 23:44:29頭を捻る必要は全くない。
>>195
ん?
よく意味が分からん。
どういう事?
JavaVMって何だ?
0200デフォルトの名無しさん
2006/05/20(土) 23:53:36blogは、本当なのか?それならそれでいいけど
IDEは今の感じがいいな〜
eclipseのプラグインとして動くようになったらデバッグとかが面倒くさいなあ〜
0201デフォルトの名無しさん
2006/05/21(日) 11:08:32http://blogs.sun.com/roller/page/herbertc?entry=project_semplice_visual_basic_for
0202デフォルトの名無しさん
2006/05/21(日) 11:09:050203デフォルトの名無しさん
2006/05/21(日) 16:07:33あるページを特定のリファラーを送って表示する方法を教えてください。
ググってもMicrosoft.XMLHTTPなどでリファラーを送ってファイルをDLする方法とかは分かったのですが
WebBrowserコントロールでの方法が分かりません。
単にあるページを確認のために表示するだけが目的で、まともなブラウザを作ろうってわけではないので
WebBrowserコントロール以外を使うつもりはありませんが、
無料で使えてリファラー指定できるブラウザコントロールがあるなら、そちらの紹介でも構いません。
とにかくやりたいことが単純単一なので、手軽に出来る方法を探してます。宜しくお願いします。
0204デフォルトの名無しさん
2006/05/21(日) 16:25:05出来ない。
0205デフォルトの名無しさん
2006/05/21(日) 17:03:42出来るって言ってた奴居たけど何処行ったかな?
0206デフォルトの名無しさん
2006/05/21(日) 18:27:35素直にWinsockでプロトコル組んだ方が早い思う。
読んだデータをTempファイルに書いてローカルで表示させればOK。
0207デフォルトの名無しさん
2006/05/21(日) 19:51:000209デフォルトの名無しさん
2006/05/22(月) 17:52:11「俺は知らない」という意味だと思って無視した方がいいよ。
今までも出来ないとレスが付いた後に解決方法が書かれたことが何度あったことか…
本当に出来ない場合も多々あったが、
一個人の知識で言う「出来ない」「無理」「不可能」など、なんて不確かなことか。
0210デフォルトの名無しさん
2006/05/22(月) 18:57:23「そんな事はVBではやらない方がいい。別の方法を見つけろ」
という意味だと思った方がいいよ。
0211デフォルトの名無しさん
2006/05/22(月) 19:27:12無知で頭悪い癖に偉そうに人様に意見だけ垂れたい奴がいるんだよw
0212デフォルトの名無しさん
2006/05/22(月) 20:19:42C#.NETはともかくとして、VBはVBのまま、ずっと進化して欲しかった。
0213デフォルトの名無しさん
2006/05/22(月) 20:52:33.NET慣れたらもうVBには戻れんよ、いや本当。
まあIDEの重さだけはちょっとアレだけど。
0214デフォルトの名無しさん
2006/05/22(月) 21:18:01.NET Framework 上で VB 動かす何かをかませればいいのに。
0215デフォルトの名無しさん
2006/05/22(月) 21:52:590216デフォルトの名無しさん
2006/05/23(火) 06:07:09> という意味だと思った方がいいよ。
一理あるようで、実はこういうこと言う奴は視野が狭い。
最良の結果を得るためと言うことなら、全ての処理に置いてVBなんか使わない方がいいし、
「この処理はVBだと面倒なので他の言語でやった方がいい」という部分があったとしても
一部面倒でも全体で見ればやっぱりVBの方が楽だったりする。
そもそもここに質問に来る奴は、ある処理をするのに適した言語・方法を聞きにしてるのではなく
VB言語を使うことを大前提に、どうすればいいかを聞きにしてることが多いので
VBでの解決方法を教えた上で、個人的意見として「〜言語の方が適してるよ」と添えるのはいいが
回答もせずに「その処理にVBなんか使うな」ってのはお門違い。
唯一この台詞を言って良いのは、「もっと処理を速くするには?もっと軽くするには?」という類の質問だけだ。
0217デフォルトの名無しさん
2006/05/23(火) 08:23:580218デフォルトの名無しさん
2006/05/23(火) 08:43:12誰かこれをフリーソフトで公開してよ。
0219デフォルトの名無しさん
2006/05/23(火) 08:54:40何か嫌なことでもあったの?
0220デフォルトの名無しさん
2006/05/23(火) 09:21:38あんたも視野が狭いね。
VBで出来ない、すべきでないことを勧めるのはおかしいでしょ?
APIコールばっかりのプログラムとか、コールバック関数を使うとか。
そういうの使いたければ、こんなところで聞くレベルではないぐらいになるべきじゃないの?
自分で情報に辿り着いて、その上で判断できない奴はさ。
VBでやるっていう前提が、単なる開発環境としてのVBなのか、VBという言語開発環境の通常使用の範囲内なのか。
他の言語なら簡単にできることを、わざわざVBでやるっていうのは、まあ選択肢のない開発下っ端にはしょうがないんだろうね。w
0221デフォルトの名無しさん
2006/05/23(火) 10:04:44なんでたった一つ使おうとしただけで、
「ばっかりのプログラム」になるのだろうな。
> 他の言語なら簡単にできることを、
APIコール部分以外はVBで簡単に出来る。
大部分を簡単に出来る言語を選ぶのは当然。
ちょっと実現しにくいものに出会っただけで、
言語全部置き換えるのはバカだろ。
仕様をすべて分かっていない限り、どの言語がふさわしいか判断することは出来ない。
お前が当事者じゃない限り、お前が選択することは不可能だよ。
0222デフォルトの名無しさん
2006/05/23(火) 10:13:040223デフォルトの名無しさん
2006/05/23(火) 10:31:01そんなの当たり前じゃないのか
0224デフォルトの名無しさん
2006/05/23(火) 11:45:50通常の視野を持つ人の意見は視野が狭く見えるということがわかった。
あとはどうでもいい。220の書き込みにそれ以上の価値はないからw
0225デフォルトの名無しさん
2006/05/23(火) 18:48:54世間には職業プログラマと暇な学生しかいないと思ってるのかな。
本業の傍らでプログラムを書いて業務をまわしている人が実際は結構多いと思うぞ。
そういう人たちに、いろんな言語を学べとか、過去の資産を捨てろなんて
そんな「暇な」時間は無い訳だよ。
仕様をころころ変えるMSやそれについていってるプログラマはある意味「暇」を
もてあましているともいえるぞ。
これら「兼業」プログラマにとってとっつきやすいからVBが伸びてきたと思う。
0226デフォルトの名無しさん
2006/05/24(水) 01:28:38「出来ます厨」とか「VBでやるべきでない厨」とか
「エスパー厨」がウザイだけなんじゃないかと
0227デフォルトの名無しさん
2006/05/24(水) 02:09:18本来は選ばれたプロフェッショナルのみが行えるべき行為を素人が中途半端なレベルでつく(r
0228デフォルトの名無しさん
2006/05/24(水) 09:24:50電波な質問とか、悩み相談もうざいけどね。
質問の体を成していないのとか。
0229デフォルトの名無しさん
2006/05/24(水) 09:56:23テキスト入力はWebBrowser1.Document.getElementsByName
で出来たんだけどボタンがおせない。
<input type=image src="/Img/bt_o_01.gif" name=checkout-balian value="お届け情報入力へ" alt="お届け情報入力へ" border=0>
このボタンと
<input type=radio name=card value="銀行振込(前払い)">
このラジオボタンおすにはどうしたらいいのか教えて頂戴
0230デフォルトの名無しさん
2006/05/24(水) 10:16:23安易に SendKeys とか。
0231デフォルトの名無しさん
2006/05/24(水) 11:22:240232デフォルトの名無しさん
2006/05/24(水) 11:38:02質問なのですが、同じプロジェクトで複数のFormを使っている場合
実行を行うと今作っていたFormではなく別のFormを実行してしまいます。例えば、1-2というFormを実行したいのに
1-1を実行してしまいます。1-3、1-4を実行したい場合も1-1を実行してしまいます。なぜでしょうか?
環境はwin2000proでVB6.0を使っています。
だれか教えてください!
0233デフォルトの名無しさん
2006/05/24(水) 11:41:12「スタートアップの設定」
0234デフォルトの名無しさん
2006/05/24(水) 11:59:44できました!ありがとうございます。。。
0235デフォルトの名無しさん
2006/05/24(水) 12:55:55テキストでもボタンでもラジオボタンでもgetElementsByNameで取得できるはず。
ボタンはClickでOK。ラジオボタンはシラネ。
0236デフォルトの名無しさん
2006/05/24(水) 18:49:39解決しました。ありがとう。
0237助けて
2006/05/24(水) 21:39:300238デフォルトの名無しさん
2006/05/24(水) 21:51:550239デフォルトの名無しさん
2006/05/25(木) 04:01:24データベースとの接続はツールがしていたのでADOとかあんまり使ったことありません。
データベース関係以外は自分で書いてたんでやりたいことは大体出来ます。
VB6.0+データベース(ODBC接続)の本で良いのがあれば教えてください。
入門書探しに行ったのですがVB自体の本ばかりでデータベース関連ってあんまりないんですよね・・・。
0240デフォルトの名無しさん
2006/05/25(木) 07:17:250241デフォルトの名無しさん
2006/05/25(木) 07:40:210242デフォルトの名無しさん
2006/05/25(木) 09:03:00っMSDNと google
0243デフォルトの名無しさん
2006/05/25(木) 13:05:50http://www.amazon.co.jp/gp/product/4774116939/249-7099741-6302713?v=glance&n=465392
http://www.amazon.co.jp/gp/product/4774106992/249-7099741-6302713?v=glance&n=465392
これぐらいしかなかったかな。
>>242
ヒント:本
0244デフォルトの名無しさん
2006/05/25(木) 13:33:46ヒント:役立ち度は
MSDN、google>>>>超えられない壁>>>>本
0245デフォルトの名無しさん
2006/05/25(木) 14:09:28Picture1,Picture2という2つのPictureBoxを作って(プロパティは何も変えてません)
LoadPictureでPicture1,Picture2にグラフィックをロードしたあと、
この2つがロードしたグラフィックが同じかどうかを判定するにはどうすればいいか教えて下さい。
Picture1.Picture = Picture2.Picture でいけるかと思ったんですが、ダメでした。
0246デフォルトの名無しさん
2006/05/25(木) 14:49:21すいません、事故解決しますた。
0247デフォルトの名無しさん
2006/05/25(木) 14:52:030248デフォルトの名無しさん
2006/05/25(木) 15:22:28RichTextBox(以下リッチ)に関して質問です。
実行時のリッチ入力画面で"Ctrl+d"を押すことにより、入力カーソル位置に今日の日付を挿入するプログラムを作りたいのですが、
カーソル位置に挿入する方法がわからず困っています("Ctrl+d"とかの話は大丈夫です)
既存の方法ありましたらご教授ください。よろしくお願いします
0250デフォルトの名無しさん
2006/05/25(木) 15:42:14トンクス
0251デフォルトの名無しさん
2006/05/25(木) 18:54:43トンです。
本買えました。大体思っていた内容で助かりました。
0252デフォルトの名無しさん
2006/05/25(木) 22:30:17諸先輩方に質問がございます。
最近、関数を学んでいます。引数と戻り値があると知りました。
今は発展段階で、"配列を引数にもつ関数"という表現がありつまずいています。
この"配列を引数にもつ関数"とは一体どういうことなのでしょうか。
理解できません。できれば、簡単な例をくださるとありがたいです。
0253デフォルトの名無しさん
2006/05/25(木) 22:37:18その引数が配列になっているだけ。.
0254デフォルトの名無しさん
2006/05/25(木) 22:44:370255デフォルトの名無しさん
2006/05/25(木) 22:47:19VBを独学で学ぶことは可能でしょうか?不可能でしょうか?
やはりプログラムの学校などに行った方が・・・宜しくお願いします。
0256デフォルトの名無しさん
2006/05/25(木) 22:57:14> できれば、簡単な例をくださるとありがたいです。
「できれば」ということは、できなくても構わないということなので例は無し。
> お手数をおかけしますが、具体例を教えてくれませんでしょうか。
はい、お手数なので、具体例は教えてあげません。
つーか何でもかんでもコード欲しがる奴大杉。
解説にコード添えられないとこの程度も理解できないほど理解力に乏しいなら
言語に手を出すのはやめておけ。
無知(知識が無い、少ない)は救いようがあるが、バカ(理解力が乏しい)は救いようが無いから
>>255
「学ぶ」こと自体は独学で出来る。というか独学というもの自体が文字通り「学ぶ」ことだからな。
身に付くかどうかはオマエの理解力と努力次第。
0257デフォルトの名無しさん
2006/05/25(木) 23:01:37初めてここに来て全部ロムってませんがこんな感じなのかな。
コードを望んだわけではなかったのです。
失礼します。
0258デフォルトの名無しさん
2006/05/25(木) 23:03:22気にせず笑って(いや何か痛い奴だなと苦笑ながら)スルーした方がいいよw
0259デフォルトの名無しさん
2006/05/25(木) 23:04:38まあ間違いないと思う
0260デフォルトの名無しさん
2006/05/25(木) 23:05:180261デフォルトの名無しさん
2006/05/25(木) 23:08:430262デフォルトの名無しさん
2006/05/25(木) 23:41:15ここで質問しても解決しないから他行ったほうがいいね
0263デフォルトの名無しさん
2006/05/25(木) 23:42:00Sub Kansuu(a() As Byte)
・
・
・
End Sub
Dim a(5) As Byte
Call Kansuu(a)
>>255
可能。
0264デフォルトの名無しさん
2006/05/26(金) 01:44:04さんくす!
2ちゃんねるって優しいところですね。
0265デフォルトの名無しさん
2006/05/26(金) 09:53:38>>247さん、すいません。
Picture1.Picture = LoadPicture("・・・")
Picture2.Picture = LoadPicture("・・・")
のあとにif文で
Picture1.Picture = Picture2.Picture
を判定してもfalseになってしまいます。
たとえ同じグラフィックでもロードする度に取得する値が違うようです。
理由は分かりませんが。
なんで、
Picture3.Picture = LoadPicture("・・・")
って感じで一回別のPictureBoxにロードして、そのあと
Piuture1.Picture = Picture3.Picture
Piuture2.Picture = Picture3.Picture
と入れればif文判定もtrueになります。
これでいけました。
もっと簡単なやり方がありそうですが、VB初心者なんで今はこれしか思いつかないです。
長文すいません。
0266デフォルトの名無しさん
2006/05/26(金) 10:47:08そんなので同じかどうか判断しては駄目だと思うが・・・
普通にバイナリコンペアしないと。
0267デフォルトの名無しさん
2006/05/26(金) 10:51:200268デフォルトの名無しさん
2006/05/26(金) 12:59:04画像としての同一性か。
プログラム内インスタンスとしての同一性か。
0269デフォルトの名無しさん
2006/05/26(金) 13:22:360270デフォルトの名無しさん
2006/05/26(金) 13:47:16画像の整理をしたいのでは。同じ画像が別名でよくダブる。
どんな画像か知らんが。
0271デフォルトの名無しさん
2006/05/26(金) 13:55:02どんな画像かは言わんが
0272デフォルトの名無しさん
2006/05/26(金) 14:30:590273デフォルトの名無しさん
2006/05/26(金) 14:58:27loadpicture()で取れる値って同じファイル参照しても値が毎回違うのはメモリのアドレス返してるから?
0274デフォルトの名無しさん
2006/05/26(金) 15:39:35LoadPicture が返す値は、ロードした画像を示す
単なる「ある値」であり、その値そのものを比較したり
意味を求めたりするのは無意味。
0275デフォルトの名無しさん
2006/05/26(金) 15:51:510276デフォルトの名無しさん
2006/05/26(金) 22:47:36ビットマップハンドル
IPictureDispの既定メンバがHandleだから
『Debug.Print Picture1.Picture』 は 『Debug.Print Picture1.Picture.Handle』 になる
あと同でもいいんだけど LoadPicture は IPicture を返すから 正しくは
Set Picture1.Picture = LoadPicture("・・・")
って書くんだよ
PictureBox.Pictureに関しては何故か Set が省略できる謎仕様だ
0277デフォルトの名無しさん
2006/05/26(金) 23:10:51直感的じゃないから。
0278デフォルトの名無しさん
2006/05/27(土) 00:47:01サーバ側PGの受信待ち時間を○秒って指定できるんですか?
できるならやり方教えてください。
お願いします。
0279デフォルトの名無しさん
2006/05/27(土) 01:28:14別に謎じゃないよ。
VBの暗黒面に近づいてるのは確かだけどw
'Form1
Private Sub Form_Load()
Dim hoge As New CHoge
hoge.TextBox = Text1
End Sub
'Class Module "CHoge"
Private mTextBox As TextBox
Public Property Let TextBox(txt As TextBox)
Set mTextBox = txt
mTextBox.Text = "hoge"
End Property
0280デフォルトの名無しさん
2006/05/27(土) 04:19:17どなたかヒントください…orz
-1-
長方形を選択したとして実行する。
その右端から、縦と横を入替えて、値を表示するプログラム。
-2-
行列A,Bが、セル範囲に入力されているとする。
この行列の積を求めるプログラムを作る。
※シートマクロで、行列範囲を表す3つの範囲を書くスペースがあったとして、
一つ目がA、二つ目がB、三つ目(これはセルの左上さえ入力されていればいい)を、
入力する部分を作っておき、行列ABの答えを、三つ目のセルを左上として、行列を作ること。
0281デフォルトの名無しさん
2006/05/27(土) 04:22:56無駄な書き込みしてすいませんでした。
0282デフォルトの名無しさん
2006/05/27(土) 10:13:36タイマーコントロールを使えば
0283デフォルトの名無しさん
2006/05/28(日) 00:08:140284デフォルトの名無しさん
2006/05/28(日) 00:21:330285デフォルトの名無しさん
2006/05/28(日) 00:25:28と言っても2005のスレが無いようなのですが・・・・
取り敢えずぐぐります
0286デフォルトの名無しさん
2006/05/28(日) 01:25:122002, 2003, 2005はVB.NETの括りになる。
2005からマーケティング上の理由でVB.NETの名称は使わなくなったが .NET Framework上で動く同じ範疇のもの。
というわけで つ VB.NET質問スレ (Part15)
0287デフォルトの名無しさん
2006/05/28(日) 02:08:50なるほろ、そういう事でしたか。thxです
0288デフォルトの名無しさん
2006/05/28(日) 02:35:39追加するときは、どうしたらいいですか?
どうしても親のフォームの方に載ってしまいます。
0289デフォルトの名無しさん
2006/05/28(日) 08:13:04Set コントロール.Container = Frame1
0290デフォルトの名無しさん
2006/05/28(日) 08:38:07「マーケティング上の理由」ってどんなの?
0291デフォルトの名無しさん
2006/05/28(日) 11:34:02インストールして同一のマシンでの開発環境の混在は可能でしょうか?
0292デフォルトの名無しさん
2006/05/28(日) 11:54:43謹んでお答えしましょう。
一分で調べがつくようなことを人に尋ねないと気がすまないお方は
プログラミングという行為そのものから撤退すべきです。
ご自身のためにも、周囲の人たちのためにも。
-- 以上 --
0293デフォルトの名無しさん
2006/05/28(日) 13:42:03可能じゃないあるよ
0294デフォルトの名無しさん
2006/05/28(日) 14:35:28叶
0295デフォルトの名無しさん
2006/05/28(日) 15:25:10ありがとうございます。
すでにフォーム上に存在しているコントロールを、
マウスのドラッグなどでフレーム内に移せないでしょうか?
0296デフォルトの名無しさん
2006/05/28(日) 17:15:000297デフォルトの名無しさん
2006/05/28(日) 20:48:58その様に作ればできる。
一行でできる方法はない。
0298デフォルトの名無しさん
2006/05/29(月) 01:20:31では、後から気が変わっても、
簡単にフレームに入れることはできないんですね。
0299デフォルトの名無しさん
2006/05/29(月) 02:41:45は静的な話と思って回答している
>>297
は動的な話と思って回答している
>>295
はどちらかはっきりすること
0300デフォルトの名無しさん
2006/05/29(月) 12:46:10フォーム上にあるコントロールを切り取ってフレーム上に貼り付ければ移せれる
0301デフォルトの名無しさん
2006/05/29(月) 22:11:130302デフォルトの名無しさん
2006/05/29(月) 22:26:43うん、だから君はもう来る必要ないよ。
0303デフォルトの名無しさん
2006/05/30(火) 00:01:05明日やってみます!
0304デフォルトの名無しさん
2006/05/30(火) 00:07:50VCやVB.NETのように言語別にダイアログを作成するのは無理なんでしょうか?
0305デフォルトの名無しさん
2006/05/30(火) 00:25:340306デフォルトの名無しさん
2006/05/30(火) 00:32:27MSDNで書かれている
keybd_event(VK_SNAPSHOT, &H79, KEYEVENTF_EXTENDEDKEY, 0)
keybd_event(VK_SNAPSHOT, &H79, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0)
をやってみてもフォーカスがあるフォームのショットしか取れん
他のサイトでも2番目の引数が0とか1とかバラバラに説明されてるからようわからん
↑の方法だとフォーカスがあるフォームのショットしか取れんの??
0307デフォルトの名無しさん
2006/05/30(火) 00:39:330308デフォルトの名無しさん
2006/05/30(火) 00:43:26ならフォーカスor全体を判別しないってことなのかな?
0309デフォルトの名無しさん
2006/05/30(火) 00:53:04試してないけど
ttp://www.bcap.co.jp/hanafusa/VBHLP/snapshot.htm
0310デフォルトの名無しさん
2006/05/30(火) 00:56:18keybd_event(VK_SNAPSHOT, 0x79, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
VC6,W2Kで試したけど、ちゃんと全体のSS撮れるよ。
まぁ、PrintScreenキー(Alt無し)をシミュレートしてるんだから当たり前だし、
Altを押しながら実行すれば、アクティブウィンドウのSSになる。
0311デフォルトの名無しさん
2006/05/30(火) 02:01:02fnキーの仮想コード調べたけどよくわからんかった
ってかあるのか?
0312デフォルトの名無しさん
2006/05/30(火) 07:24:07どういう洒落なのか説明してくれ
0313デフォルトの名無しさん
2006/05/30(火) 07:54:32そのコードを調べるプログラムなんてVBなら5秒で書けるが。
0314デフォルトの名無しさん
2006/05/30(火) 08:08:330315デフォルトの名無しさん
2006/05/30(火) 08:25:140316デフォルトの名無しさん
2006/05/30(火) 09:01:50ノート型モデルかどうか判別するという洒落。
0317デフォルトの名無しさん
2006/05/30(火) 09:20:190318デフォルトの名無しさん
2006/05/30(火) 11:10:430319デフォルトの名無しさん
2006/05/30(火) 11:13:080320デフォルトの名無しさん
2006/05/30(火) 11:14:230321デフォルトの名無しさん
2006/05/30(火) 11:18:01Fnキーと一緒に押さなければならないキーボード(Fnキー)を指してるんではないのか?
0322デフォルトの名無しさん
2006/05/30(火) 12:53:280323デフォルトの名無しさん
2006/05/30(火) 13:12:28うまくいきません。
Set ap = CreateObject(
0324323
2006/05/30(火) 13:15:00Set ap = CreateObject(”Access.Application.9”)
ap.OpenCurrentDatabase( mdbName )
ap.DoCmd.OpenReport( reportName, acViewPreview )
ap.CloseCurrentDatabase
ap.Quit
っとこんなソースで、
acViewPreview をacViewNormal にすると印刷はできるのですが、
プレビュー時には何も起こらないんです。
0325デフォルトの名無しさん
2006/05/30(火) 13:18:56プレビューしたいならQuit呼んじゃだめだよ
プレビューならViewer的なAccessアプリケーションをつくり
外部EXEとして実行をする方がリソース開放とかいろいろ考えなくて楽だよ
0326デフォルトの名無しさん
2006/05/30(火) 13:50:15終了するまでまってQuitするにはこんな感じでいけたと思う。
While Not ap.ActiveSheet Is Nothing Wend
ap.Quit
0327デフォルトの名無しさん
2006/05/30(火) 13:52:19すまん、例がExcelだった・・・まぁ同じ感じで出来ると思うから
0328323
2006/05/30(火) 15:20:02>>326さんの外部EXE形式のViewer作戦を試してみたいとおもいます。
>>327さんのは「ap.ActiveSheet」でひっかかりました。_| ̄|○
0329デフォルトの名無しさん
2006/05/30(火) 15:21:05http://homepage1.nifty.com/rucio/etc/Stations.htm
のプログラムをつくると、
StartStationからEndStationまでの
時間は出るんですけど、
逆にEndStationからStartStationまでの時間って
どうやって出すんですか?
やっぱり新しいプロシージャを
つくるしかないんですか?
ちなみにwindowsXP、VB6.0です。
0330デフォルトの名無しさん
2006/05/30(火) 15:42:430331デフォルトの名無しさん
2006/05/30(火) 16:10:36やはりそういった方法しかないのでしょうか?
0332デフォルトの名無しさん
2006/05/30(火) 16:44:51・駅名を取得する
・2つの駅間の時間を計算する
せめてこの2つはFunction化しないことには、
>>330が最小手順の解決方法になりますよ。
0333デフォルトの名無しさん
2006/05/30(火) 16:56:02またはStartStation と EndStation の値を入換える
If StartStation > EndStation Then
xx = StartStation: EndStation = StartStation: StartStation = xx
End If
0334デフォルトの名無しさん
2006/05/30(火) 17:06:55Dim fStartStation As Integer
Dim fEndStation As Integer
fStartStation = StartStation: fEndStation = EndStation
If StartStation > EndStation Then
fStartStation = EndStation: fEndStation = StartStation
End If
'出発駅から目標駅までの時間を計算する。
For K = fStartStation To fEndStation - 1
0335デフォルトの名無しさん
2006/05/30(火) 18:36:34Accessはこれでいいんじゃね?
ttp://www.mitene.or.jp/~saosao/VB1.html
0336デフォルトの名無しさん
2006/05/30(火) 19:38:35そういう考え方があるんですね!
大変勉強になりました。
ありがとうございます。
0337デフォルトの名無しさん
2006/05/30(火) 20:09:23栗田ゆう子みたいだ。w
0338デフォルトの名無しさん
2006/05/31(水) 00:08:52accessをインストールせずにVBだけでaccessのDBファイルを
最適化できるものなんでしょうか?
access環境のないPCがないので実験不可能です。
すいませんがどなたかお教え下さい・・・
VBはSP6 OSはwin XPです。
0339デフォルトの名無しさん
2006/05/31(水) 00:18:11できました!!
ありがとうございます。
>>311
Fn押しながらPrint Screenだと、
それにAlt組み合わせるのできないかも。
うちのDynabookだとできなかった。
0340デフォルトの名無しさん
2006/05/31(水) 02:15:57出来る。
最適化どころかMDBに対してはほとんどの事が可能。
0341デフォルトの名無しさん
2006/05/31(水) 02:27:57しかも具体的なコードを書いてくださいとか言ってきたりしてw
なので先に言っておく
>>338、とりあえずやり方は自分で調べろ。
それでもどうしても解らなかったら、解った範囲でやり方やコードを書いて再質問すること。
丸投げとか、1週間もしないうちに再質問したりとかしないでね。
0342デフォルトの名無しさん
2006/05/31(水) 07:45:10DAO 関連って、最初っから全部入ってるんだっけ?
0343デフォルトの名無しさん
2006/05/31(水) 07:51:36DAO は配布できる
0344デフォルトの名無しさん
2006/05/31(水) 08:11:24いやそうじゃなくて、Windows をインストールした直後から使・・・って、
VB入れたらインストールされるんだっけか。
0345デフォルトの名無しさん
2006/05/31(水) 14:14:42XPと2003には2.6のライブラリが最初から入ってる
2000は2.1が最初から入ってる
・JRO
XP、2003、2000とも2.6のライブラリが最初から入ってる
・ADO Ext.
XP、2003、2000とも2.7のライブラリが最初から入ってる
故にVBのRumtimeはADO関係同梱版でなくてもいい
しかしMDACは最新のを入れた方がよい
・DAO
どれにも最初から入ってない
再配布可能の3.5を入れた方がよい
0346デフォルトの名無しさん
2006/05/31(水) 14:33:46�d。
しかしJROって初めて聞いた。
ジャロ?w
0347デフォルトの名無しさん
2006/05/31(水) 15:46:39フォルダ選択ダイアログは出せるのですが
ファイル選択ダイアログって出せるんでしょうか?
教えてください
0348デフォルトの名無しさん
2006/05/31(水) 16:14:10こんなんでました。
ttp://hp.vector.co.jp/authors/VA006065/scripts/bat2vbsf.htm
0349デフォルトの名無しさん
2006/06/01(木) 18:11:43'出発駅から目標駅までの時間を計算する。
K = 0
Do
Jikan = Jikan + TrainTime(K)
If K = StartStation - 1 Or K = EndStation - 1 Then
Jikan = 0
End If
K = K + 1
Loop While (K < StartStation - 1 Or K < EndStation - 1)
Jikan = Jikan + TrainTime(K)
Msg(ry
変数増やしたくなければこっち使うべし
あと配列は基本0から使おうな?
'目的地が配列の何番目かを求める。
Target = Text2.Text
K = 0
Do
EndStation = K
If Target = Station(K) Then Exit Do
K = K + 1
If K = 8 Then
MsgBox Target & "!?" & vbCrLf & "そんな名前の駅はありません!"
Exit Sub
End If
Loop
なら0から使っても大ジョブ
0350デフォルトの名無しさん
2006/06/01(木) 18:56:400351デフォルトの名無しさん
2006/06/01(木) 22:38:52配列を0からにしないといけない明確な理由は?
変数を減らすために最初の練習用?サンプルを大幅に変更する意味はなに?
0352デフォルトの名無しさん
2006/06/02(金) 00:02:10俺は349じゃないけど、配列のインデックスの開始を0以外にする、なんて
VB独自の作法は使わない方が無難。
そんなもんコード読む人間(もちろん未来の自分自身も含む)を不要に混乱させるだけ。
配列の開始は常に0から、を暗黙の前提として期待できる方がコードは遥かに読みやすい。
それにまあ頭の悪いVB厨だと思われるの嫌でしょ?w
0353デフォルトの名無しさん
2006/06/02(金) 00:18:10Basicなら前提として1からと決まっている。
0から開始するなんてVB独自の作法は使わないほうが無難。
0354デフォルトの名無しさん
2006/06/02(金) 00:23:030355デフォルトの名無しさん
2006/06/02(金) 00:43:13Basicは1からがデフォ
0356デフォルトの名無しさん
2006/06/02(金) 01:12:590357デフォルトの名無しさん
2006/06/02(金) 01:56:37CやVB.netは0固定だし、わざわざ1からにする理由は無いぞ。
0358デフォルトの名無しさん
2006/06/02(金) 02:01:180359デフォルトの名無しさん
2006/06/02(金) 02:04:08最新の国際標準は1からですが、
個人的には0からの方がいいと思います。
0360デフォルトの名無しさん
2006/06/02(金) 02:51:00MS$も配列の開始を統一してないし、一般(初心者)に開始は1からのほうが解りやすいと思ってみたり・・・
ただ、>>352 が言っているように昨日の自分は他人の自分で、未来の為に統一しといた方がいいと俺も思う。
0361デフォルトの名無しさん
2006/06/02(金) 03:13:42実際の所どうなんだろ。
後ひまわりとか日本語で書けるから初心者向きとか言ってるけど、それもどうなんだろ。
やっぱり初心者はアルファベット難しいのかな。
0362デフォルトの名無しさん
2006/06/02(金) 12:02:200363349
2006/06/02(金) 14:02:05あ、いや煽りなのは分かってるがどうしても言ってみたくなった、許してくれ
>>351
煽りでは無く質問とみて返答させていただきます。
>配列を0からにしないといけない明確な理由は?
俺はそう教えられてきたし他の言語も触ってるんで、そのほうがいいと思っただけ。
>変数を減らすために最初の練習用?サンプルを大幅に変更する意味はなに?
俺はわざわざユーザーが指定した出発駅と目標駅を入れ替えてFor文使うより、
Do使って二つの駅の時間差合計したほうが自然だと思ったからこうした。
たしかに初心者には理解しづらいコードかもしれんが、こういうやり方もある事を示したかったし
これを期にDo~Loop構文覚えてもらえれば幸いだと思う。
「その”自然”とか”配列は0から”とかはお前の価値観だろう」って言われればそれまでだが、
俺はこのほうがプログラマには読みやすいと思ったからこうした。
スレ荒れるのは忍びないので宗教戦争はこのくらいにしておくれ
0364351
2006/06/02(金) 14:41:00俺はどっちでもいいって考えだから質問してみただけなのに・・・書き方が悪かったのか
初心者うんぬんは解りづらくしなくてもと思ったからついでに聞いてみた。
みなさん、これで終了でよろしく。
0365デフォルトの名無しさん
2006/06/02(金) 16:34:04たとえば、
ファイル
・・・新規作成
・・・名前を付けて保存
・・・上書き保存
とかあって、ファイルをクリックしてメニューだして、マウス動かして、
カーソルが「名前をつけて保存」の上にあったら、それを取得する方法です。
0366デフォルトの名無しさん
2006/06/02(金) 17:21:20今VB動かない環境なので確認出来ないけど、
Mouse_Move とかでメニューのプロパティの .Text とか見たら?
0367デフォルトの名無しさん
2006/06/02(金) 18:32:11それは無理だよ。メニューポイント中はmoveイベント発生しないよ。
0368デフォルトの名無しさん
2006/06/02(金) 20:05:41そうなんだ。ゴメン。
じゃぁ、メニューの上でマウスカーソル動かすと、ステータスバーに
それが出てくるくる変わるやつはどうやってるんだろ?
0369デフォルトの名無しさん
2006/06/02(金) 20:06:030370デフォルトの名無しさん
2006/06/02(金) 22:06:480371デフォルトの名無しさん
2006/06/02(金) 22:28:13じゃぁ後はググれば解決だね。
0372デフォルトの名無しさん
2006/06/03(土) 02:58:32何年くらいかかるの?
0373デフォルトの名無しさん
2006/06/03(土) 08:03:09何が何年?
0374デフォルトの名無しさん
2006/06/03(土) 08:43:52質問に答えられるようになるのにじゃね?
もしそうだったら、人それぞれ。知っていること(やったこと)なら1日でも可能(w
0375デフォルトの名無しさん
2006/06/03(土) 09:04:14あぁそういう意味か。
0376デフォルトの名無しさん
2006/06/03(土) 12:29:44上記を参照にVBからエクセルのマクロを削除したいんだけど
プロジェクトプロパティでパスワードがかかってます。
もちろんパスワードを知っているという前提でVBからパスワードを解除する方法ありませんか?
OS:Windows2000
VB6sp6
0377376
2006/06/03(土) 13:22:17くだらない質問申し訳ない
0378デフォルトの名無しさん
2006/06/04(日) 00:31:29その関数の場所に飛ぶといったことはできるのでしょうか?
また、それが可能な場合、いくつかの関数を一まとめにして、階層的に表示することは
可能でしょうか?
イメージとしては下のように表示され、ダブルクリックでその関数のところを編集できると
いった形です。
┬関数A
├関数郡B
│├関数B-1
│└関数B-2
└関数C
0379デフォルトの名無しさん
2006/06/04(日) 00:34:440380デフォルトの名無しさん
2006/06/04(日) 02:33:09文字列と数字列が規則的に混在する文字列中から文字列のみを抜き出すのって
可能ですか?
具体的に・・・
"アイウエオ0123"
"カキクケコ4567"
といった"全角文字列"+"全角or半角が混在する数字列"といった組み合わせ
なのですが、その中から"全角文字列"のみを抜き出すには、どういった方法
がありますでしょうか?
0381380
2006/06/04(日) 02:53:30あ、ちなみに文字+数字の文字列は、文字数が決まっていません。
"さしすせそたちつてと12345"
・・・とか・・・
"なにぬ9876543210"
・・・ってのもあったりします。
0382デフォルトの名無しさん
2006/06/04(日) 02:59:03ループ回して一文字ずつ数字かチェックして数字でないのだけ繋げていって文字列にするとかでいいんじゃね?
あと、sage忘れって、ここって別にsage進行じゃないでしょ?
ageていいんじゃないの。むしろ、質問はageたほうがいいのでは。
0383380
2006/06/04(日) 03:24:02失礼しましたm(_ _)m
あ、そか、Replaceか!
Loopで一文字づつ削ってたんですけど、あまりにもスマートじゃない気がして
たんで・・・助かりましたm(_ _)m
早速やってみます。
0384デフォルトの名無しさん
2006/06/04(日) 03:39:39A ループを使ってReplace関数で数字を空文字に置換
B 正規表現(RegExp)で数字以外を抽出
C 1文字ずつチェックしIsNumeric関数がFalseを返した文字を繋げる
あたりが基本的な処理だが、数値・数字は必ず末尾数桁のみというなら
D 後ろからループ回して1文字ずつIsNumericでチェックし、Falseになった文字位置までをLeft関数で抽出
の方がいいかもな。
まあ正規表現でも数字が1カ所にまとまってるならs/[\d0-9]//一発で終わりだけど。
0385デフォルトの名無しさん
2006/06/04(日) 09:07:25誰かが作ったアドインで、そんなのがあった様な気がする。
ググってみては。
0386デフォルトの名無しさん
2006/06/04(日) 09:58:34XP SP2
別スレつくるAPIで
内部でFunction関数つかったらソフトがおちるんだが・・・・
こんなやついるの?
ググで調べても落ちる情報はない感じ
おとなしく.NETでソフト書いたほうがいいのかいな?
ドトネト使うほどのソフトじゃないので好きなVBでやってたんだが・・・
0387デフォルトの名無しさん
2006/06/04(日) 10:15:140388デフォルトの名無しさん
2006/06/04(日) 10:22:53「別スレつくるAPI」て何?
2chのスレを作る関数??
0389デフォルトの名無しさん
2006/06/04(日) 10:23:39VBはマルチスレッドに対応していない。
0390デフォルトの名無しさん
2006/06/04(日) 12:03:32捕捉すると、スレッド自体は作れてしまうので
VBでマルチスレッドが可能だと勘違いする奴も多いが
スレッドを作れることと、マルチスレッドで処理を行えることは同義ではない。
ぶっちゃけ言うと、VBで作ったスレッドで行える処理はものすごく限られてる。
アレやったら落ちる、コレやったら固まるって事だらけ。
何をしたら落ちるかは明確になってる部分もあれば不明瞭な部分もある。
とにかく対応していないんだから落ちたらそういう物だと思うしかない。
例えば防水仕様じゃない腕時計に、水を1滴垂らしたからと言って
いきなり壊れるとは限らないが、水を被って壊れても
「まー、防水じゃないんだからしょーがないな」って感じだろ。
出来ればVB使いたいにしても、.NETの選択肢があるならそっち使え。
0391デフォルトの名無しさん
2006/06/04(日) 13:54:36おk
じゃぁそうするかww
おとなしくドトネトでやるっす。
まぁ、できないかな?
って感じの疑問だったんで元々選択肢にはいれてたんで。
サンクスでした
0392デフォルトの名無しさん
2006/06/04(日) 21:33:58昔のDDJ辺りでスレッド作ってやっちゃいけない事集みたいなのが有った気がする
というか出来る事集だったかな
0393デフォルトの名無しさん
2006/06/04(日) 22:23:38DDJ・・・何もかも懐かしい・・・
0394デフォルトの名無しさん
2006/06/05(月) 04:30:06この文の最後のByVal 0&の0&ってどういう意味なんですか?
ただの0とは何か違いがあるのでしょうか?
0395デフォルトの名無しさん
2006/06/05(月) 06:38:41型宣言文字
&はLong型をあらわす。
0396デフォルトの名無しさん
2006/06/05(月) 08:18:57宣言が As Any になってるので、「値としてのロングのゼロ」を渡すと明確に書いてる。
0397394
2006/06/05(月) 08:53:49>>396さん
ありがとうございます。理解できました。
GetWindowThreadProcessIdのVB6での宣言を
調べてみると
Declare Function GetWindowThreadProcessId lib "user32.dll" _
(ByVal hWnd As Long, lpdwProcessID) As Long
となっていました。第二引数をAs Anyというより型を宣言しないでVariantに
しているようです。それで0&という風にちゃんと型を指定していたのですね
しかし、それならどうして宣言時にAs Longとしておかないのでしょうか?
いちいち呼び出すときに&を明示しなくてもよくなると思うのですが、
何か事情でもあるのでしょうか.
0398デフォルトの名無しさん
2006/06/05(月) 09:08:18その引数は、本来「プロセスIDを受け取る変数のアドレス」を設定する物。
でも、スレッドIDだけが知りたい場合、ゼロを指定するので、そうなってる。
0400デフォルトの名無しさん
2006/06/06(火) 23:42:32�@hoge.exe ABC XY
�Ahoge.exe "AB C" "X Y"
�Bhoge.exe "AB C" XY
�Choge.exe ABC "X Y"
ってなかんじで起動したときに�@〜�C全部二つの引数として取得したいんだけど、なんかいい方法ないっすか?
要は、""で囲んだ文字列は一つの引数として取り出したい
よろしくおねがいしまっしゅ!
0401デフォルトの名無しさん
2006/06/07(水) 00:10:02普通に文字列操作
サンプルも腐るほど転がってる
0402デフォルトの名無しさん
2006/06/07(水) 00:19:24as0125えet後Etたッワ
のような前半が半角、後半が全角の
ランダムな文字列から前半と後半を分離しようと思うのですが
ASC(2バイト系文字)がおかしくなってしまって困っています
いったいどう対処すればよいかどなたかアドヴァイス頂きたいです。
0403400
2006/06/07(水) 01:01:26おっしゃるとおりです。
探すの面倒だったから自作した、、
まぁ、要はこういうことをしたかったわけで・・・なんかそういうAPI関数みたいの無いかなぁと
Private Function getArgument(ByVal command_line As String) As Variant
command_line = Trim(command_line)
If "" = command_line Then
getArgument = Empty
Exit Function
End If
Dim retArray As Variant, c As String, pre As String, flag As Boolean
ReDim retArray(0)
flag = False
For i = 1 To Len(command_line)
c = Mid(command_line, i, 1)
If """" = c Or flag Then
If Not ("""" = c) Then retArray(UBound(retArray)) = retArray(UBound(retArray)) & c
flag = IIf(flag And """" = c, False, True)
Else
If " " = c And Not (" " = pre) Then
ReDim Preserve retArray(UBound(retArray) + 1)
ElseIf Not (" " = c) Then
retArray(UBound(retArray)) = retArray(UBound(retArray)) & c
End If
End If
pre = c
Next
If IsEmpty(retArray(UBound(retArray))) Then ReDim Preserve retArray(UBound(retArray) - 1)
getArgument = retArray
End Function
0404デフォルトの名無しさん
2006/06/07(水) 06:04:50"みたいの"ならある。
0405デフォルトの名無しさん
2006/06/07(水) 06:39:50あれはCRTがやってるの?それともAPIレベル?
0406デフォルトの名無しさん
2006/06/07(水) 06:56:13けど、だいたいはCRTが処理しているはず
0407デフォルトの名無しさん
2006/06/07(水) 10:55:33何がしたいのかサッパリ分からんが、一文字取り出してから
StrConv でシフトJIS文字にしてバイト数を見るとか。
0408デフォルトの名無しさん
2006/06/07(水) 17:05:28会社で今、まじ困ってる。取得した日付(第二引数に入力された値)が、
ちゃんとした日付型かどうか判定(文字とかが入ってたらだめ)するには、
どうすればいい??どんな関数を使えばいいんでしょうか??
0409デフォルトの名無しさん
2006/06/07(水) 17:11:420410デフォルトの名無しさん
2006/06/07(水) 18:39:24サンクス!
0411デフォルトの名無しさん
2006/06/07(水) 21:43:26異なる2つのセルの値を比較して、値が異なっているなら
両方のセルに色をつけるという関数は作成可能でしょうか。
VBAマクロでは簡単に作れたのですが、ユーザー関数で作成したいんです。
宜しくお願いいたします。
0412デフォルトの名無しさん
2006/06/07(水) 22:46:420413デフォルトの名無しさん
2006/06/07(水) 22:59:140414デフォルトの名無しさん
2006/06/08(木) 02:14:37困ってることがあります。
QueryTablesなのですが、
With ActiveSheet.QueryTables.Add(Connection:= _
url, Destination:=Cells(row_num, 1))
.RefreshStyle = xlInsertDeleteCells
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "19"
.Refresh BackgroundQuery:=False
End With
このように記述して、インターネット上から株価のログを取得しています。
しかし、繰り返し処理をしているうちにだんだん重くなってしまい、
固まってしまうこともしばしばです。
何か良いアドバイスをください。。
0415デフォルトの名無しさん
2006/06/08(木) 12:13:26ある課題なんですが、「与えられた半角文字列中に含まれる、最初の数字列を抽出し
ろ」
という事なんですが、使用する関数はmidのみと指定があります。
そしてfor-next,if関数などを使用することとあります。
アルゴリズムの勉強らしいのですが、色々考えましたが分かりません。
教えてください。
EX, 文字列は " aBc 011 122 Z" 実行結果→011
0416デフォルトの名無しさん
2006/06/08(木) 12:28:010417デフォルトの名無しさん
2006/06/08(木) 12:55:520418デフォルトの名無しさん
2006/06/08(木) 12:58:49問題はおかしくない。
0419デフォルトの名無しさん
2006/06/08(木) 13:48:430420デフォルトの名無しさん
2006/06/08(木) 13:53:14先頭から一文字づつ取り出して、最初に数値が出てきたら、
数値じゃなくなる迄別変数に追加する。
としか言い様がない。
0421デフォルトの名無しさん
2006/06/08(木) 13:54:21そこがCに劣るところ
0422デフォルトの名無しさん
2006/06/08(木) 13:59:37Cでもforやifは関数ではないぞ。
0423デフォルトの名無しさん
2006/06/08(木) 14:01:19エラーログを出力をしたいんだけど、どうやればよいのでしょうか??
誰か助けてください(__)
0424423
2006/06/08(木) 14:09:250425デフォルトの名無しさん
2006/06/08(木) 14:19:030426デフォルトの名無しさん
2006/06/08(木) 14:23:10言語に優劣等ない。
適材適所。
0427デフォルトの名無しさん
2006/06/08(木) 14:30:49どうやって?
解決策を書く気は全くなし?
0428デフォルトの名無しさん
2006/06/08(木) 14:39:12コードをとか言われそうだなぁ(w
0429デフォルトの名無しさん
2006/06/08(木) 15:20:06>420 ありがとうございます
でもうまく書けません
今forで1つずつ取り出しをして それをifや do loopを 組み合わせてるんですが だめです
できれば 詳しく教えて下さいm(__)m
0430デフォルトの名無しさん
2006/06/08(木) 15:31:07あの文章よりもどう詳しくしろと言うのか。
0431デフォルトの名無しさん
2006/06/08(木) 15:42:310432デフォルトの名無しさん
2006/06/08(木) 15:43:36>>425
0433デフォルトの名無しさん
2006/06/08(木) 16:04:42C:\HOKYU.INI
このファイルがあるかどうか判定するには
どのような関数を使えばよいのでしょうか?
0434423
2006/06/08(木) 16:10:29Dim Wsh
Set Wsh = CreateObject("WScript.Shell")
Wsh.LogEvent 1, "XXXのエラーです"
とすることで、
イベントビューアのアプリケーションログにエラーが書き込まれます。
↑
だって、コピペだけど
0435デフォルトの名無しさん
2006/06/08(木) 16:48:48開始フラグクリア
数字列変数クリア
1.1文字取り出す
2.文字の判断
2-1.数字文字である
2-1-1.開始フラグが立っている 数字列変数に追加 1.に戻る
2-1-2.開始フラグが立ってない 数字列変数に設定 開始フラグを立てる 1.に戻る
2-2.数字文字でない
2-2-1.開始フラグが立っている 終了
2-2-2.開始フラグが立ってない 1.に戻る
0436デフォルトの名無しさん
2006/06/08(木) 16:55:54Dir
0437デフォルトの名無しさん
2006/06/08(木) 18:58:17どうか,コ-ドを お願い致します
m(__)m m(__)m
0438デフォルトの名無しさん
2006/06/08(木) 19:06:43バグってても、コンパイルエラーが起きててもいいから、
自分ができるところまで書け。お前が与えられた課題だろうが。
0439デフォルトの名無しさん
2006/06/08(木) 19:16:52>>435
0440デフォルトの名無しさん
2006/06/09(金) 09:23:58それとも、COBOLみたいなことになる?
ぶっちゃけるとそろそろ2005系に移行したほうがいいのかな?
0441デフォルトの名無しさん
2006/06/09(金) 09:52:39適材適所。
0442デフォルトの名無しさん
2006/06/09(金) 11:57:47俺は色々なことがラクになるから2005つかってるけど
0443デフォルトの名無しさん
2006/06/09(金) 12:52:08何が楽になりましたか?
COBOLみたいなことになるなら6ONLYって訳にはいかないかなと思って…
0444デフォルトの名無しさん
2006/06/09(金) 14:14:37誰もやらないし暇だったので(w
もうちとスマートに数字文字判定部分出来るのか?
Const Ex As String = " aBc 011 122 Z"
Dim i As Integer
Dim f As Boolean
Dim c As String
Dim s As String
Debug.Print "[" + Ex + "]"
f = False '一応初期化
s = "" '一応初期化
i = 1
Do While Mid$(Ex, i, 1) <> ""
c = Mid$(Ex, i, 1)
Select Case c
Case Is = "0": s = s + c: f = True
Case Is = "1": s = s + c: f = True
Case Is = "2": s = s + c: f = True
Case Is = "3": s = s + c: f = True
Case Is = "4": s = s + c: f = True
Case Is = "5": s = s + c: f = True
Case Is = "6": s = s + c: f = True
Case Is = "7": s = s + c: f = True
Case Is = "8": s = s + c: f = True
Case Is = "9": s = s + c: f = True
Case Else: If f Then Exit Do
End Select
i = i + 1
Loop
Debug.Print "[" + s + "]"
End Sub
0445デフォルトの名無しさん
2006/06/09(金) 14:35:140446デフォルトの名無しさん
2006/06/09(金) 14:37:55それならcase文はこれだけでいいだろ
Select Case c
Case "0" To "9": s = s + c: f = True
Case Else: If f Then Exit Do
End Select
0447デフォルトの名無しさん
2006/06/09(金) 14:38:28関数はmidだけなんだとさ、意味ない制限だな
0448デフォルトの名無しさん
2006/06/09(金) 14:39:36お前らならどう実装する?
0449448
2006/06/09(金) 14:50:17Const Ex As String = " aBc 011 122 Z"
Private Sub Form_Load()
Debug.Print "--------------------"
Debug.Print "[" & Ex & "]"
Dim arr() As String
arr = Split(Ex, " ")
Dim var As Variant
For Each var In arr
If IsNumeric(a) Then
Debug.Print "[" & a & "]"
Exit Sub
End If
Next
End Sub
0450デフォルトの名無しさん
2006/06/09(金) 15:20:55やっぱりなぁ・・・文字でもOKだったか
0451デフォルトの名無しさん
2006/06/09(金) 15:25:56スペースで区切られている保証はないかも・・・まぁ課題は区切られているけど(w
0452デフォルトの名無しさん
2006/06/09(金) 17:11:14文字列の仕様に基づいてsplitの区切り文字変えればよかろ
まあ、スペース区切りの”囲いとかだったらちょっと処理足りないが
0453デフォルトの名無しさん
2006/06/09(金) 17:45:49区切り文字が無かったら駄目でしょってこと
0455デフォルトの名無しさん
2006/06/09(金) 17:54:00N88BASICでいう
A$(0)="nihon"
A$(1)="amerika"
A$(2)="chuugoku"
はVBだとどうのような配列で作ればよいのでしょうか?
あと、VBで
define A(0)=12.5
みたいなのはありますか?
よろしくお願いします。
0456デフォルトの名無しさん
2006/06/09(金) 18:24:54ぐぐればいくらでもヒットする
0457デフォルトの名無しさん
2006/06/10(土) 01:00:090458デフォルトの名無しさん
2006/06/10(土) 08:15:43P-Codeコンパイルじゃないと即落ちするんですけど
そんなもんでしょうか?
CallBack関数内の処理をほとんど空にしてもなります。
0459デフォルトの名無しさん
2006/06/10(土) 09:52:27コピペするだけで現象が再現する必要最低最小限のコードは?
0460デフォルトの名無しさん
2006/06/10(土) 11:03:34form1にボタンを2個とラベル1個を貼る。どれもプロパティは変更なし。
-------------------form1--------------------
Option Explicit
Private Sub Command1_Click()
Dim timeCapa As TIMECAPS
Call timeGetDevCaps(timeCapa, LenB(timeCapa))
timeCapMax = timeCapa.wPeriodMax
timeCapMin = timeCapa.wPeriodMin
'開始時間取得
staMillSec = timeGetTime()
'タイマー起動
Call timeBeginPeriod(timeCapMin)
TimerID = timeSetEvent(timeCapMin, timeCapMin, AddressOf TimerCallback, 0, TIME_PERIODIC)
End Sub
Private Sub Command2_Click()
'タイマー終了
Call timeKillEvent(TimerID)
Call timeEndPeriod(timeCapMin)
End Sub
-------------------------------------------------------
0461デフォルトの名無しさん
2006/06/10(土) 11:04:14Option Explicit
'時間取得
Public Declare Function timeGetTime Lib "winmm.dll" () As Long
Public staMillSec As Long
Public curMillSec As Long
'タイマー
Public Declare Function timeBeginPeriod Lib "winmm.dll" (ByVal uPeriod As Long) As Long
Public Declare Function timeEndPeriod Lib "winmm.dll" (ByVal uPeriod As Long) As Long
Public Declare Function timeGetDevCaps Lib "winmm.dll" (lpTimeCaps As TIMECAPS, ByVal uSize As Long) As Long
Public Declare Function timeSetEvent Lib "winmm.dll" (ByVal uDelay As Long, ByVal uResolution As Long, ByVal lpFunction As Long, ByVal dwUser As Long, ByVal uFlags As Long) As Long
Public Declare Function timeKillEvent Lib "winmm.dll" (ByVal uID As Long) As Long
Public TimerID As Long
Public Const TIME_PERIODIC = 1 ' program for continuous periodic event
Public Type TIMECAPS
wPeriodMin As Long
wPeriodMax As Long
End Type
Public timeCapMin As Long
Public timeCapMax As Long
'TimerCallback
Public Function TimerCallback(ByVal uID As Long, ByVal uMsg As Long, _
ByVal lngUser As Long, ByVal lng1 As Long, ByVal lng2 As Long) As Long
curMillSec = timeGetTime() - staMillSec '開始からの時刻を取得
Form1.Label1.Caption = CStr(curMillSec) '表示
End Function
0462458
2006/06/10(土) 11:09:12変数の値を変えるとか、フォームのラベルを書き換えるのはOKみたいなので
関数を呼び出すことに問題があるようです。
0463デフォルトの名無しさん
2006/06/10(土) 11:18:240464デフォルトの名無しさん
2006/06/10(土) 11:37:090465458
2006/06/10(土) 11:43:41MIDI再生のためにインターバル1msで使いたいわけですが
最近はタイマーコントロールでも大丈夫なんすかね?
まあ、それはやってみればいいんですが。
0466デフォルトの名無しさん
2006/06/10(土) 12:17:300468デフォルトの名無しさん
2006/06/10(土) 12:42:12マルチメディアタイマ使っても、正確な1msなんて不可能。
WindowsはリアルタイムOSじゃないから。
0469デフォルトの名無しさん
2006/06/10(土) 12:55:141msだと負荷がかかりすぎて落ちるとか言うならともかく、正確に1ms出る出ないは今直接関係なくないか?
数十msもブレるわけじゃないんだし。
0470デフォルトの名無しさん
2006/06/10(土) 13:11:47googleで「vb マルチスレッド timeSetEvent」で検索したとき
最初の方に出てくるいくつかのサイトに参考になりそうな記載があるようだよ
0471デフォルトの名無しさん
2006/06/10(土) 13:11:56私も試したいけど、今起動中のXPにはVB入ってないんだよな・・・_| ̄|○
0472458
2006/06/10(土) 15:29:12>>470さんのおっしゃる通りぐぐってみました。つまり、マルチスレッドになることに問題が
ありそうだということですね。
タイマーなのでマルチスレッドでformの移動などにほぼ影響されずに動いて欲しかったのですが、
CreateThread関数を使って生成されたスレッドと同じように使用に制限があるということですか。
P-Codeでもformを頻繁に移動するなどすると終了時にエラーが出ますが、業務用でもないので
P-Codeコンパイルで当面いってみます。
0473デフォルトの名無しさん
2006/06/10(土) 19:04:45dim b as integer
dim c as double
b=1
a=3*b+1
c=2.6
if a>c then
msgbox "OK a=" & a
else
msgbox "NG a=" & a
endif
というプログラムを作りました。
IDE環境では、当然OK a=3を表示したのですが、
実行ファイルにコンパイルすると、 NG a=0となってしまいます。
何かおかしい点はありますか?
0474デフォルトの名無しさん
2006/06/10(土) 19:05:17dim b as integer
dim c as double
b=1
a=2*b+1
c=2.6
if a>c then
msgbox "OK a=" & a
else
msgbox "NG a=" & a
endif
というプログラムを作りました。
IDE環境では、当然OK a=3を表示したのですが、
実行ファイルにコンパイルすると、 NG a=0となってしまいます。
何かおかしい点はありますか?
0475デフォルトの名無しさん
2006/06/10(土) 19:07:51dim b as integer
dim c as double
b=1
a=2*b+1
c=2.6
if a>c then
msgbox "OK a=" & a
else
msgbox "NG a=" & a
endif
というプログラムを作りました。
IDE環境では、当然OK a=3を表示したのですが、
実行ファイルにコンパイルすると、 NG a=0となってしまいます。
何かおかしい点はありますか?
0476デフォルトの名無しさん
2006/06/10(土) 20:16:32Windows xp home editionに移植したいのですが、
このときVisual studio 6.0をCDからインストールして
そのStudioを最新版にするときの手順を教えてください。
またVB6.0のUpdateで最終形態にしたいのですが
どれとどのパッチを落としたらよいのでしょうか?
よろしく お願いします
0477デフォルトの名無しさん
2006/06/10(土) 20:22:470478デフォルトの名無しさん
2006/06/10(土) 20:53:43何故三回も?
>>476
VB6はXPに対応してないよ。
0479デフォルトの名無しさん
2006/06/10(土) 21:16:373回書き込みはIEでリロードしたんでしょ。
XPでまともに動かないのはIISアプリケーションをデバッグする場合位かな。
(2000でも動かんが。XP、2000とも回避策があるのだが)
とりあえず、VB4の開発環境をNT4.0上で動かした時ほどの問題は出ない。
>476
MSのサイトで検索して、更新日付順に並べたら分かるよね。
手順なんて説明するほど難しい所は何も無い。
0480デフォルトの名無しさん
2006/06/10(土) 21:32:380481デフォルトの名無しさん
2006/06/10(土) 21:37:09http://www.microsoft.com/japan/msdn/vstudio/downloads/sp/VS6SP6.asp
で済むんじゃないの?
0482デフォルトの名無しさん
2006/06/10(土) 22:12:11パソコンソフトを作れるのはもちろんだと思いますが
パソコン外の制御系ソフトウェア、例えばビル監視システムのソフトウェア等
つまりファームウェアを作成する場合は6.0と.netではどちらを活用するべきなのでしょうか?
0483デフォルトの名無しさん
2006/06/10(土) 22:20:26C/C++などをすすめる。
0484デフォルトの名無しさん
2006/06/10(土) 22:24:47VBだと簡単にUIが作れるみたいなので挑戦しようと思っています。
ので、できればVBのどちらかでやるつもりです。
0485デフォルトの名無しさん
2006/06/10(土) 22:29:380486デフォルトの名無しさん
2006/06/10(土) 22:40:28本屋で軽く立ち読みしたら.netはパソコン用ソフトウェアを簡単に・・と書いてあったので
ひょっとしてパソコン用ソフトウェアに特化したものが.netで、パソコン用以外での組み込み系ソフトウェアにも応用が利くのが6.0だと思っていたので確認の為に聞いてみました
現在は.netしか入手できないのならどちらにも応用効くって事ですよね
0487デフォルトの名無しさん
2006/06/10(土) 22:41:31UIはVBで、制御部分は生CでDLLを書けばいい。
0488デフォルトの名無しさん
2006/06/10(土) 22:42:07476とか482みたいな質問のことを言っているのだけど
質問してる奴はそういう馬鹿なくせに、いや馬鹿故に「教えたがり」な君をみて一人密かに
ほくそ笑んでいることと思うぞw
0489デフォルトの名無しさん
2006/06/10(土) 23:37:39質問が素晴らしかろうが、糞だろうが、
自分の気が向いたら適当に答えてるだけ。
0490デフォルトの名無しさん
2006/06/11(日) 00:05:51Win2000 では正常に動作したんですが、WinXP SP2 にプログラムを
インストールしたところ、
>実行時エラー'48': ファイルが見つかりません:xxxx.dll (←自作のDLL)
というエラーが出るようになってしまいました。
.EXE と .DLL は同一ディレクトリにあり、念のため、PATHも通してあります。
IDEから起動しても、エクスプローラから起動しても結果は同じです。
declare 文でフルパス指定しても見つかりませんと言われました。
VS6.0 SP5 でビルドしました。実行時のユーザーは administrator
権限です。
どうしたら良いのでしょうか?
0491デフォルトの名無しさん
2006/06/11(日) 00:14:38VB6のDLLはActiveXだからRegsvr32で登録がいるんじゃない
0492デフォルトの名無しさん
2006/06/11(日) 00:16:35外部の装置をPCから制御するプログラムは、組み込みとかファームウェアとか呼ばない気がする。
0493デフォルトの名無しさん
2006/06/11(日) 00:17:18電化製品に組み込み式の制御系ソフトウェアはwindowsアプリケーションには入らないと思うのですが
やっぱり.netでは作成できそうにないように思えます・・
0494デフォルトの名無しさん
2006/06/11(日) 00:19:15いえ、パソコンから制御するのではなくて専用端末機から制御します。
その専用端末機のファームウェアをVBで作成して組み込むという事です。
0495デフォルトの名無しさん
2006/06/11(日) 00:29:12たとえばさ、何かの検査装置があって単独でも使えるけど、
これをPCからシリアルケーブルを使ってコントロールできるとする。
検査装置は独自のCPUを持っててOSやプログラムは検査装置のROMに書き込まれている。
この検査装置のOSやプログラムのことをファームウェアとか組み込みプログラムと呼ぶのよ。
これの開発に必要なのはその検査装置のCPUにあったクロスコンパイラやエミュレーターなわけで、
VBやVB.NETの出る幕はどこにもないのよ。
んでこの検査装置をPCからコントロールするためには、
シリアルケーブルでの通信のプロトコルの仕様書が提供されてたり、
VBやVCから扱うためのライブラリ(スタティック、ダイナミック)、やActiveXコントロールが提供されてたりするわけで、
これらを使うことになるわけさ。>>486のいってるのはココのことだろ?
0496デフォルトの名無しさん
2006/06/11(日) 00:40:42まさしくそれの事を指していたんですが、言葉の使い方を間違っていたようですみません;
以前、別会社に設計して貰った時はVBでやっていると言ってたのですが
その会社ではまずパソコン上でVBを使いプログラムを作り、それをROMに移して機械本体を実行させる。という流れだったと思います。
あまり知識がないもので言っている事がうまく伝わりませんが・・
こういうことはVBやVB.netではできないのでしょうか?
0497デフォルトの名無しさん
2006/06/11(日) 00:45:280498デフォルトの名無しさん
2006/06/11(日) 00:46:59VB6でもCEプラグイン使って作れるし
0499デフォルトの名無しさん
2006/06/11(日) 00:51:26なにをマジになってw
そんなに人に教えを垂れることに飢えてるのかな
0500デフォルトの名無しさん
2006/06/11(日) 00:51:37それは普通の環境ではないから一般的にVB.NETではどうかと聞かれても答えられないね。
環境で使えるツール類は変わってくるからよくヒヤリングしないと。
0501デフォルトの名無しさん
2006/06/11(日) 00:53:24週末なのにいやなことでもあったのか? かわいそす。
0502デフォルトの名無しさん
2006/06/11(日) 01:05:54>>500
やっぱりこちらの情報不足ですか・・
分かりました、とりあえずもう少し本屋などに行って調べてみたいと思います。
ありがとうございました
0504デフォルトの名無しさん
2006/06/11(日) 08:47:58原因がちゃんとあって、解決出来るならいいんだけど、
もし解決出来ない場合、それが、VB6はXP上で
動作保障されてない、って事。
2000では動くのにXPでは駄目、ってのは幾らでもある。
0505デフォルトの名無しさん
2006/06/11(日) 10:46:36>実行時エラー'48': ファイルが見つかりません:xxxx.dll (←自作のDLL)
そういうことなら、そのエラーはDLLが見つからなかった時だけでなく
何らかの理由でDLLがロードできなかった場合にも起きる。
よくあるケースをいくつか上げると。
1.VC6の場合DLLでDEBUG版でBUILDされており、msvcrtd.dllやmfc42d.dllなどがsystem32やパスの範囲に存在しない。
デバッグ版のランタイムの再配布は許可されてないのでReleaseモードで再コンパイルをすすめる。
2.VC7以降でかつXP以降の場合、crtやmfcランタイムの場所はマニフェストにかかれていなければならない。
VCランタイムDLLの再配布モジュールを別途インストールするのが手軽。
*.minifestはリソースとして埋め込まれているが埋め込まれていない場合はDLLと同じ場所にコピー。
>>504
XPで動かないというトラブルは確かにあるが、たいていはセットアップウイザードが作ったインストーラーが
強引にコピーしてしまう互換のないDLLやActiveXによるトラブル。
MSがXPで動作保障をしていないというのは都市伝説。しかしもうかなり古いのでVistaではどうなるかは知らない。
0506デフォルトの名無しさん
2006/06/11(日) 10:49:51えっそうなんですか?
困ったなあ
>>481
ありがとうございます
>>488
僕はまじめに聞いていますよ
;;;;
教えてくれた人ありがとうございました
0507デフォルトの名無しさん
2006/06/11(日) 10:50:48非常にありがとうございました
0508デフォルトの名無しさん
2006/06/11(日) 11:03:28DLL の実行に必要な DLL を Dependency Walker で調べろ
0509デフォルトの名無しさん
2006/06/11(日) 11:42:54MDIなフォームの右上に表示されているコントロールボックスを
消したいです(最大化、最小化、閉じるのボタン)。
消す事が無理なら無効にしたいんですが、良い方法ないでしょうか?
0510デフォルトの名無しさん
2006/06/11(日) 11:48:43FormのプロパティにMaxボタンとかMinボタンの設定がなかったっけ?
ボタン自体を消すのはAPIにあった気がする
0511509
2006/06/11(日) 11:51:41MDIで無い普通のフォームなら、プロパティーで設定(ボタンを消す)可能でした。
MDIだとそれがありませぬ。APIでできるんでしょうか?
0512デフォルトの名無しさん
2006/06/11(日) 12:12:02@ITのTipsで方法が紹介されている。
ただし、.NET向けの記事ではあるけど。
でも使ってる方法そのものはVBでも恐らく有効でしょう。
0513デフォルトの名無しさん
2006/06/11(日) 12:31:44MSは動作保障してるよ。
まぁ、MSの動作保障なんて全くアテにはならないが。
0514デフォルトの名無しさん
2006/06/11(日) 13:41:24株なんかの取引を自動化したいのですが、どうしても、
「特定の座標にマウスを移動させて、クリックする」という作業が発生するのですが、
これを簡単に実行するには、どうも「なでしこ」ぐらいしかみあたらないのです。
なでしこだと、ちょっと安定性に不安が残るのと、ちょっとした計算ぐらいはするし、
なんとなくですが、VBとかWSHみたいなものでも簡単に出来そうな気がするので、
何かヒントになりそうな情報がありましたら、是非ご教授ください。
0515デフォルトの名無しさん
2006/06/11(日) 13:47:46っmouse_event API
0516デフォルトの名無しさん
2006/06/11(日) 13:48:25484さんの書いてくれたパッチのダウンロードの環境にもxpって入ってました
0517デフォルトの名無しさん
2006/06/11(日) 14:54:29いやだから、保障されてても、まともに動かないのが問題なのであって。
0518デフォルトの名無しさん
2006/06/11(日) 14:59:12DOM 使って HTML 操作の方がいいんじゃね? Web アプリだよね?
0519デフォルトの名無しさん
2006/06/11(日) 15:00:290520デフォルトの名無しさん
2006/06/11(日) 15:34:06VB6で出来ますか?
可能なら方法を教えて頂きたいです。
よろしくお願いいたします
0521デフォルトの名無しさん
2006/06/11(日) 15:48:15サイボウズにきいてくれ
0522どっかのスレの906
2006/06/11(日) 17:44:04ようになったようだぞ。
後で時間作って、VB6厨の漏れが感想書いてみるよ。
0523デフォルトの名無しさん
2006/06/11(日) 19:37:39?
今迄も普通に出来てた様な・・・
0524デフォルトの名無しさん
2006/06/11(日) 19:50:26ステップ実行中の状態でソースを編集できる様になった、と言いたいのでは
なかろうかと。
0525デフォルトの名無しさん
2006/06/11(日) 19:51:170526デフォルトの名無しさん
2006/06/11(日) 21:18:31vbs(wsh利用可)で、現在の状態が省電力モード(スクリーンセーバが動き出すのってこのモードだよね?)かどうかを
検出するってどうやるのでしょうか?
0527デフォルトの名無しさん
2006/06/11(日) 21:19:160528デフォルトの名無しさん
2006/06/11(日) 21:25:10省電力とスクリーンセーバーは直接関係内
0529デフォルトの名無しさん
2006/06/11(日) 21:51:38調べたら確かに省電力モードって定義があいまいみたいですね。
ということで質問を変えます。
vbs(wsh利用可)で
・スクリーンセーバが動いているかどうか
・電源制御によりモニタの電源が切れた状態かどうか
・電源制御によりHDDの電源が切れた状態かどうか
を知るってどうやるのでしょうか?
0530デフォルトの名無しさん
2006/06/11(日) 22:51:45スクリーンセーバは SystemParametersInfo API かな。
0531デフォルトの名無しさん
2006/06/11(日) 22:51:57おそらくVBSとWSH自身の機能だけじゃ無理。
WMIあたりで可能かもしれないが、一番確実なのは
それらの機能を提供するCOMを自作してVBSから使う方法。
これならいろいろ制限のあるスクリプト言語上での実現方法に悩むことなく
制限の少ないまともなプログラミング言語上で普通にやればいいだけなので簡単。
COM使いたくないとか作れないとかいう後出し条件は聞き入れないのでよろしく。
後の質問は、あなたがCOM作るのに使う言語のスレでどうぞ。
但し質問する前に一週間くらいは自分で調べようね。
0532デフォルトの名無しさん
2006/06/11(日) 22:54:39電源関係は ACPI で出来ると思う。
0533529
2006/06/11(日) 23:01:220534522
2006/06/11(日) 23:32:532003と比べると、VB6の便利なところが戻ってきたな。
・ステップ実行中にドラッグでステップを、戻せるようになった。
・イミディエイト使わなくても変数の上にマウスポインタを
持ってくと値の変更が出来る。
・ウォッチウィンドウで補完が働く
・ややモッサリ感がある(Celeron1GHz 512MB)
・新規に作成しても、保存しなければ、MyDocumentの残らないように
なった。
利用者を意識していて結構良い感じだお。
まあ、手軽にCOM作りたい輩はVB6からは離れられないのには
変わらんが、それは.Net開発環境じゃお門違いだな。
0535デフォルトの名無しさん
2006/06/11(日) 23:52:18これはスクリーンセーバーのデスクトップが開かれているかで判定。9x 系は別。
> ・電源制御によりHDDの電源が切れた状態かどうか
GetDevicePowerState() でできるらしい
0536デフォルトの名無しさん
2006/06/12(月) 00:21:24>・ステップ実行中にドラッグでステップを、戻せるようになった。
あれ?2003でも出来ないかそれは
止めれたり戻ったりできる場所が少ないけど
0537529
2006/06/12(月) 08:54:09ヒントをありがとうございました。
0538デフォルトの名無しさん
2006/06/12(月) 09:36:49ググル先生でも
VB web上の文字列を
VB web 文字列
で出てきませんでした
ヒント下さい
0539デフォルトの名無しさん
2006/06/12(月) 09:42:070540デフォルトの名無しさん
2006/06/12(月) 10:34:49スクリーンセーバーのデスクトップて?
0541デフォルトの名無しさん
2006/06/12(月) 10:55:04レスサンクスです
InternetReadFileで詳細をもらってくる
その中から一部の文字列に絞ってクリップボードに入れるorテキスト表示させるorファイルに出力させる
でいきます。
0542デフォルトの名無しさん
2006/06/12(月) 19:52:38先頭に挿入されるのですが、
listbox コントロールのように後から追加するアイテムを
後ろにつけるためのプロパティ、もしくは簡単な方法はありませんでしょうか。。
0543デフォルトの名無しさん
2006/06/12(月) 20:41:14Sort ONなんじゃない?
0544デフォルトの名無しさん
2006/06/13(火) 07:22:300545デフォルトの名無しさん
2006/06/13(火) 08:08:53「APIで顧問コントロール等々を呼び出す」の意味が不明。
0546デフォルトの名無しさん
2006/06/13(火) 09:06:30hogehoge 2006/06/13a
hogehoge 2006/06/12b
hogehoge 2006/06/11c
といった文字データがhoge.textに出力されていて
hogehogeから後ろ12文字だけを出力させたいときはどの関数を使えばいいでしょうか。
0547デフォルトの名無しさん
2006/06/13(火) 09:22:14Mid$
0548デフォルトの名無しさん
2006/06/13(火) 09:41:35サンキュー!
上手くいけた
0549542
2006/06/13(火) 17:44:59いえ、ソートはしていませんが。。
0550デフォルトの名無しさん
2006/06/13(火) 18:11:56毎回indexに1を指定してない?
index を省略すれば最後尾に追加されるはずだか
先頭追加 ListView1.ListItems.Add 1, "key", "Text"
最後尾追加 ListView1.ListItems.Add , "key", "Text"
0551542
2006/06/13(火) 20:07:16ズバリです。。
なるほど。。
本当にありがとうございました 多謝
0552デフォルトの名無しさん
2006/06/13(火) 20:10:02コードはIf b(k).Y4<n.Y2+Teki1.Height and n.Y2 and < b(k).Y4+Tama(k).Height and _
b(k).X4<n.X2+Teki1.Width and n.X2 and < b(k).X4+Tama(k).Width then
Teki1.Visible=False
End If
です。
すみませんが、誰かどこにどのように当たり判定を入れれば良いのか教えていただけませんか?
0553デフォルトの名無しさん
2006/06/13(火) 20:12:47書き忘れすみません。
コマンドボタン名はStart1です。
0554デフォルトの名無しさん
2006/06/13(火) 20:34:48ソース全く見てないけど、試行錯誤してみれよ
0555デフォルトの名無しさん
2006/06/13(火) 20:41:03Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim PlyL As Long, PlyW As Long
Dim EnmL As Long, EnmW As Long
If KeyCode = vbKeyRight Then Image1.Left = Image1.Left + 100
If KeyCode = vbKeyLeft Then Image1.Left = Image1.Left - 100
PlyL = Form1.Image1.Left
PlyW = Form1.Image1.Width + Form1.Image1.Left
EnmL = Form1.Image2.Left
EnmW = Form1.Image2.Width + Form1.Image2.Left
If EnmL >= PlyW Then Exit Sub
If PlyL >= EnmW Then Exit Sub
Beep
End Sub
0556デフォルトの名無しさん
2006/06/13(火) 22:36:20Windows2000でIIS5+VB6作DLL+XLS(xp)で動いてたシステムを
Windows2003でIIS6+VB6作DLL+XLS(2003)で動かしたいんだが
単純に載せ替えただけだと、excelファイルの作成でこけてしまう。
ログをはこうとしてもログはく処理でこけちまう
これはなにかセキュリティーの問題ですか?
(ちなみにユーザは一時的にアドミンにしてます)
0557490
2006/06/13(火) 23:05:04おかげさまで今日無事動きました。
エラーを出している DLL が呼び出している DLL が落ちているのが原因でした。
本当に助かりました。
なお、XP で動く VB6.0 のプログラムは Vista でも "そのまま" 動作するそうです。
ttp://www.microsoft.com/japan/msdn/vbasic/support/vistasupport.aspx
まぁ、ほんとかどうかは vista が出てくるまでわかりませんが。
0558デフォルトの名無しさん
2006/06/13(火) 23:19:392003SVって動作保障されてるの?
0559デフォルトの名無しさん
2006/06/14(水) 00:06:03IISにISAPIの実行設定してないんじゃない?
デフォルトでは何も実行できないはずだよ
0560556
2006/06/14(水) 01:37:28例えば単にSQL SERVERからデータをとってくると行った動作は問題ないんだけども
サーバのローカルにファイルを作成する処理が走るとエラーになる。
エクセルがまずいのかと思って、ログを出して追っていこうとおもったらログすらでない
ただしエラー内容は変わる。
エクセルの時はファイルの作成が出来ない、ログの時は閉じられてないwithブロック〜といった内容。
ちなみにサーバマシンで、ソースから実行してあげれば問題なく動く
クライアントのブラウザから実行したときにダメになるので、何らか権限がからんでるのかなあと。
0561556
2006/06/14(水) 01:39:29動作保証は分からないけど、過去ログ見た限りはofficeはサーバサイドで実行するな
という内容はあるみたいです。
ただ、2000環境では実行出来ていたので、なにが違うのかなと悩んでます。
0562デフォルトの名無しさん
2006/06/14(水) 01:49:56あいかわらずVB6JP.DLLは入ってないな。これがないせいで簡単なプログラムでもインストーラーが必要になる。
もっとも単にコピーするだけでもいいんだけど。
0563デフォルトの名無しさん
2006/06/14(水) 02:16:06VB6でActiveXをレジストリに登録しないでも実行できる方法を貼ってみる ただXP限定だけどね
http://www.microsoft.com/japan/msdn/thisweek/vbxp/vbxp2.asp
VB6ならランタイム郡と必要なActiveXをEXEと同じフォルダに放り込んで配布すればインストール作業無しで実行できる
配布サイズが馬鹿でかくなるが DLLヘル防止にもなるし
Vista で出来るか知らんが β2で試してみ
0564デフォルトの名無しさん
2006/06/14(水) 03:02:58既にあるExcelファイルのあるセルにデータを上書きして
同名で上書き保存したいのですが上手くいきません
お願いします
0565デフォルトの名無しさん
2006/06/14(水) 07:25:01どういうコードを書いたら、どう上手くいかなかったのか?
0566デフォルトの名無しさん
2006/06/14(水) 10:33:56用紙を縦のまま、フォームを90度回転させて印刷する方法はありますか?
http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200310_03100017.html
いろいろ探して、上のを見つけたんですが、解決してないようで・・・。
.NETではできるようなんですが、VB6だとできないんでしょうか?
0567デフォルトの名無しさん
2006/06/14(水) 11:57:08Procedureの引数で"TYPE abc IS TABLE OF VARCHAR2(10) INDEX BY BINARY_INTEGER;"なる
配列を使用したものがあります。これをCreateParameterで引き渡すにはどう書けばよいでしょうか?
0568デフォルトの名無しさん
2006/06/14(水) 12:34:44書き出し先にIISワーカープロセスの実行ユーザーの書き込み権限つけてる?
0569デフォルトの名無しさん
2006/06/14(水) 13:09:56をぅ、荒井さんの記事だ。
>>567
ADO でオラクルなんて問題外。
oo4o 使え。
ADO は、実質SQLサーバ限定みたいなもん。
0571デフォルトの名無しさん
2006/06/14(水) 14:25:00ローカルアドミン?
LocalSystemの事を言ってる?
0572デフォルトの名無しさん
2006/06/14(水) 15:09:54「何らか権限がからんでるのかなあ」と思うなら、あらゆる権限を調べろよ。
そういうシステムって、思わぬプロセスに思わぬ権限が必要だからな。
0573デフォルトの名無しさん
2006/06/14(水) 15:36:52そのローカルアドミンとかいう権限で実際に書き込みしようとしているのか
0575デフォルトの名無しさん
2006/06/14(水) 19:26:18ありまして、それをVBに読み込みたいと考えているので
すがダンプしてみると
000000 00 07 ** ** ** ** ** **
となっていました。
この最初の2バイト分をVBで読み込んで数値(integer)
にしたいのですがどうしたらよいでしょうか?
上のファイルの場合は7にしたいということです。
あとまだCVSで4バイトに書き込んであるデータもあります。
よろしくおねがいいたします。
0576デフォルトの名無しさん
2006/06/14(水) 19:41:07ファイルアクセスなんて基本中の基本。
ヘルプ見ろ。
0577デフォルトの名無しさん
2006/06/14(水) 21:52:03所属ドメインのadministratorじゃなくて
0578デフォルトの名無しさん
2006/06/14(水) 23:02:23根本的にIIS6.0の事を勘違いしているようだ
2003ServerのIIS6.0のオンラインヘルプでワーカースレッド周りの説明を読み直して来い
0579デフォルトの名無しさん
2006/06/14(水) 23:22:51>>573
0580デフォルトの名無しさん
2006/06/15(木) 08:54:25見てもわかりません。
0581デフォルトの名無しさん
2006/06/15(木) 09:39:54君にプログラムを書くのは無理。
0582デフォルトの名無しさん
2006/06/15(木) 16:56:42ファイルを2バイト読み込んで数値化
やるべきことはたったこれだけ。
ヘルプ見てもこれが解らないというなら581の通り精進すら見込めないので
プログラミング止めろ。
0583デフォルトの名無しさん
2006/06/15(木) 20:10:250584デフォルトの名無しさん
2006/06/16(金) 19:53:48課題2.与えられた半角文字列中に含まれる単語(半角スペースで区切られたそれ以外の 文字の塊)のうち、最も頻回に用いられている単語を返す関数MostFrequentWord
を作成せよ。
※条件として、大文字小文字を区別しない、返される文字は最初に出現した表
記、2つ以上
の文字が同数の場合は先に登場
実行結果例: print MostFrequentWord("I love you. You love me.")
love
[3] Windows XP
言語:申し訳ありません。VBです。エクセルのマクロで書いてます。
[5]
この課題の前問に、同じような出題で、関数CountWords を作れと、ありまし
た。
この問題は以下のように作りました。
0585デフォルトの名無しさん
2006/06/16(金) 20:00:48この問題は以下のように作りました。
Function CountWords(A)
A = A +""
For i = 1 to Len(A)
C = Mid(A,i,1)
If(C<>"")Then
F = 1 ' フラグです。
Else
If F = 1 Then X = X + 1
F =0
End If
Next i
CouWords = X
End Function
これを実行しますと
例、 A =”I love you. You love me.”
print CountWords(A)
6
となります。
課題2は この関数CountWordsを用いるみたいなのですが、 文字列の中の 単語を X個とした場合, 配列をどのように考えたらよいのですか?
0586デフォルトの名無しさん
2006/06/16(金) 20:22:25各文字のASCIIコードをそのまま添え字にした配列を用意して、配列にカウント数を保持していく。
最後に頻出文字を探して出力。
個人的には↑なんてやり方しちゃう。
0587デフォルトの名無しさん
2006/06/16(金) 20:22:53単語名そのものが入る配列(words)と、登場回数が入る配列(counts)の二つを作る。大きさはCountWords()の戻り値。
配列に関しては、Dim, Redimのヘルプ参照。
で、文章の単語くぎりながら、配列wordsの全要素を調べて、配列wordsに登録してなければ登録する。
そのとき、その配列wordsの位置(インデックス)と同じ場所の配列countsもカウントアップする。
最後に、配列countsを全部調べて一番大きい数に対応する配列wordsの内容が答え。
大文字小文字を区別しない、に関しては、StrConv関数を使う。
わかんなかったら、またおいで。
0588587
2006/06/16(金) 20:25:26比較するときだけにStrConvを使ってね。
0589586
2006/06/16(金) 20:28:31orz
0590587
2006/06/16(金) 20:37:49ちなみに配列の大きさを調べるのはUbound。
0591デフォルトの名無しさん
2006/06/16(金) 20:53:560592586
2006/06/16(金) 20:54:41たとえば"you"なら文章の最後まで"you"を探して見つかったらカウントして・・・というやり方もある。
この場合、カウントするついでに既にカウントされましたよフラグを立てて処理を減らすこともできる。
最初に単語ごとに区切って配列にいれちゃうことが必須になるけどね。文字列とカウントされましたよフラグの
ユーザー定義型を作って。ちょっとやりすぎかもな。
いずれにしろ基本は人間がやってるのと同じってことだね。
0593デフォルトの名無しさん
2006/06/16(金) 20:58:00丸投げなんてしてないじゃん
0594デフォルトの名無しさん
2006/06/16(金) 20:59:240595585
2006/06/16(金) 21:08:11>>587
>>590
ありがとうございます。 配列RedimやSplit関数などは使わないようにと指示があり
ます。
>>587
私も、登場回数が入る配列(counts)を作ると考えてはいたのですが、単語名そのも
のが入る配列(words)
の作りかたが、いまいち良くわかりません。
関数MostFrequentWord を作成する際、文字列は(”単語 単語 単語・・・・・
”)と分かってない単語を前提として考えるのですよね?
情報としては CountWord() で調べた数の単語数しかわかっていないとして、
その場合の、配列(words) と 出てきた単語の関係の表し方がわからないのです・
・・。
考えているのですが,
Aを文字列だとして
A = ToUpperCase(A)
For i = 0 To (CountWords(A) - 1)
Count(i) = 0
For j = 0 To (CountWords(A) - 1)
If (hairetu(i) = hairetu(j)) Then Count(i) = Count(i) + 1
Next j
Next i
・・よくわからないです
0596デフォルトの名無しさん
2006/06/16(金) 21:12:410597デフォルトの名無しさん
2006/06/16(金) 21:13:40まず、やりたい事全てを細かく順番に文章で書け。
それが出来たら、後はそれを一つ一つコードにするだけ。
0598デフォルトの名無しさん
2006/06/16(金) 21:29:55配列Redim 使っていいのなら出来たけど、使わないのはちこっとまんどくさい
0599デフォルトの名無しさん
2006/06/16(金) 21:30:42自力でスプリットしちゃえ
0600デフォルトの名無しさん
2006/06/16(金) 21:51:44Dim words(100)
word = ""
idx = 0
For i = 1 To Len(s)
If Mid$(s, i, 1) = " " Then
If Right$(word, 1) = "." Then
words(idx) = Left$(word, Len(word) - 1)
Else
words(idx) = word
End If
word = ""
idx = idx + 1
Else
word = word + Mid$(s, i, 1)
End If
Next
If Right$(word, 1) = "." Then
words(idx) = Left$(word, Len(word) - 1)
Else
words(idx) = word
End If
SplitText = words
End Function
0601デフォルトの名無しさん
2006/06/16(金) 22:09:14配列は使っちゃいけないらしいぞ
0602デフォルトの名無しさん
2006/06/16(金) 22:27:54そんな話どこにもないが
0603デフォルトの名無しさん
2006/06/16(金) 22:35:24>配列RedimやSplit関数などは使わないようにと指示があり
配列Redimって配列も含むんじゃと・・・Redimがだめってことかもしれないけど
ただ、Dim words(100) ここ Redimが駄目で100と逃げても・・・
0604デフォルトの名無しさん
2006/06/16(金) 22:38:55>>595をよく読んでみ。
固定の大きさで配列を定義するのは、宿題のような問題ではありがち。
そもそも個定数で作らなきゃ>>595のような発想ができない。
0605デフォルトの名無しさん
2006/06/16(金) 22:54:47Dim s, w, r
Dim l, n, m
s = Replace(A, " ", " ")
Do
While Left(s, 1) = " "
s = Mid(s, 2)
Wend
w = ""
While s <> "" And Left(s, 1) <> " "
w = w & Left(s, 1)
s = Mid(s, 2)
Wend
If w = "" Then Exit Do
l = Len(s) + 2
s = Replace(" " & s & " ", " " & w & " ", " ", , , vbTextCompare)
n = (l - Len(s)) / (Len(w) + 1) + 1
'Debug.Print n, "[" & w & "]", "[" & s & "]"
If m < n Then
m = n
r = w
End If
Loop
CountWords = r
End Function
0606デフォルトの名無しさん
2006/06/16(金) 22:57:29えっと 4行目のReplaceはスペース2個です。
s = Replace(A, "□", "□□")
0607605
2006/06/16(金) 23:07:34・・・あと、尻のスペースが増え続けるが気にするなw
0608デフォルトの名無しさん
2006/06/16(金) 23:13:47課題でやってる>>584のためにならない。
0609デフォルトの名無しさん
2006/06/16(金) 23:23:47・大文字小文字を考慮する必要がある
・ピリオドを考慮する必要がある
Replaceも使っちゃ駄目そうだが。
0610デフォルトの名無しさん
2006/06/16(金) 23:43:42「単語(半角スペースで区切られたそれ以外の 文字の塊)」
にピリオドは含まれないのかな?
記号は文字じゃないだろって言われればそんな気もするけど
あとvbTextCompareで大小無視してます。
>>608
ごめんなさい。はなから役に立とうとは思っていません。
0611デフォルトの名無しさん
2006/06/17(土) 00:05:40大文字小文字は勘違い。スマソ。
単語は普通(つっこみ付加)、ピリオドやセミコロンなどの区切り文字は入れない。
0612デフォルトの名無しさん
2006/06/17(土) 00:09:42Function WordCount(A As String, W As String) As Integer
Dim F As Integer
Dim X As Integer
Dim C As String
Dim i As Integer
Dim n As Integer
Dim s1 As String
Dim s2 As String
s1 = W
For i = 1 To Len(A)
C = Mid(A, i, 1)
If (C <> " ") Then
s2 = s2 + C
F = 1 ' フラグです。
Else
If F = 1 Then
X = X + 1
If StrConv(s1, vbUpperCase) = StrConv(s2, vbUpperCase) Then
n = n + 1
End If
Debug.Print "X=[" + Format(X, "0") + "] n=[" + Format(n, "0") + "] s1=[" + s1 + "] s2=[" + s2 + "]"
End If
F = 0
s2 = ""
End If
Next i
Debug.Print "n=[" + Format(n, "0") + "]"
WordCount = n
End Function
0613デフォルトの名無しさん
2006/06/17(土) 00:10:21Dim X As Integer
Dim F As Integer
Dim C As String
Dim S As String
Dim R As String
Dim i As Integer
Dim n As Integer
Dim m As Integer
Debug.Print "len=[" + Format(Len(A), "0") + "] A=[" + A + "]"
A = A + " " '区切りを追加(最後の単語用)
For i = 1 To Len(A)
C = Mid(A, i, 1)
If (C <> " ") Then
S = S + C
F = 1 ' フラグです。
Else
If F = 1 Then X = X + 1
Debug.Print "S=[" + S + "]"
n = WordCount(A, S)
If n > m Then
R = S
m = n
End If
F = 0
S = ""
End If
Next i
Debug.Print "X=[" + Format(X, "0") + "] m=[" + Format(m, "0") + "] R=[" + R + "]"
MostFrequentWord = R
End Function
0614デフォルトの名無しさん
2006/06/17(土) 00:11:470615デフォルトの名無しさん
2006/06/17(土) 00:17:41'===================
'cWord
'===================
Private mText As String
Private mCount As Long
Public Property Get Count() As Long
Count = mCount
End Property
Public Property Get text() As String
text = mText
End Property
Public Property Let text(txt As String)
mText = txt
mCount = 1
End Property
Public Function IsMatch(txt As String) As Boolean
If LCase(Me.text) = LCase(txt) Then
mCount = mCount + 1
IsMatch = True
End If
End Function
0616615
2006/06/17(土) 00:19:51'cWordCollection
'===================
Private mWords As New Collection
Public Sub Add(text As String)
Dim Word As cWord
For Each Word In mWords
If Word.IsMatch(text) Then
Exit Sub
End If
Next
mWords.Add CreateNewWord(text)
End Sub
Private Function CreateNewWord(text As String) As cWord
Dim nw As New cWord
nw.text = text
Set CreateNewWord = nw
End Function
0617615
2006/06/17(土) 00:20:28'cWordCollection続き
'===================
Public Function MostFrequentWord() As String
If mWords.Count = 0 Then
MostFrequentWord = ""
Else
Dim Word As cWord
Dim MaxCount As Integer
Dim MaxCountItem As cWord
For Each Word In mWords
If Word.Count > MaxCount Then
MaxCount = Word.Count
Set MaxCountItem = Word
End If
Next
MostFrequentWord = MaxCountItem.text
End If
End Function
0618デフォルトの名無しさん
2006/06/17(土) 00:21:33'Form1
'===================
Private Sub Command1_Click()
MsgBox (MostFrequentWord(Text1.text))
End Sub
Private Function MostFrequentWord(Sentence As String) As String
Dim text As String
Dim TextArray() As String
Dim Words As New cWordCollection
Dim i As Integer
TextArray = Split(Sentence, " ")
For i = 0 To UBound(TextArray)
Words.Add (TextArray(i))
Next
MostFrequentWord = Words.MostFrequentWord
End Function
0619デフォルトの名無しさん
2006/06/17(土) 01:05:500620デフォルトの名無しさん
2006/06/17(土) 02:19:49いや、何でもいいんです、解答じゃないからってことなら、SplitとDictionaryでFAじゃあるまいか。
0621デフォルトの名無しさん
2006/06/17(土) 02:31:13Component 'TABCTL32.OCX' or one of its dependencies not correctly registered: a file missing or invarid
というメッセージが出て動かないらしいのです。
ランタイムなども全部最新にしてもらいました。OSは開発環境、テスト環境ともにXPです。
色々ググっても原因がわかりませんでしたので、質問させていただきました。
すみませんが、お力添えをお願いします。
0622デフォルトの名無しさん
2006/06/17(土) 03:17:52駄目って書いてないのならOKでしょ。
よっぽど馬鹿な教師でなければ高得点くれるだろ。
0623デフォルトの名無しさん
2006/06/17(土) 06:10:33ちゃんとインストーラでインストールしたの?
0624デフォルトの名無しさん
2006/06/17(土) 12:29:07動かない環境の方に、ディストリビューションウィザードで作って渡しても、ダメでした。
なお、他の環境(しかも同じくXP)では何もせずに正常に動作してるみたいです。
ますます謎。
0625デフォルトの名無しさん
2006/06/17(土) 12:36:41検索もせずに質問する神経の方が謎だよ
0626デフォルトの名無しさん
2006/06/17(土) 15:10:180627デフォルトの名無しさん
2006/06/17(土) 15:44:40今テストしているのですが、今度は純粋にハングするようになったとのことです。
>>625
本当にありがとうございました。
0628585
2006/06/17(土) 16:39:16昨日は、様々なアドバイスありがとうございました。
また、先生に再度、尋ねてみたのですが、配列Redimは使用しても良いとの事でし
た。
一応、とてもとても汚いコードですが出来ました。
しかし、もっと美しく改善しようと思っているのですが、様々な条件の制約(あまり
様々な関数を使用しない)
のため、どう直したら良いか分かりません。
また、潜在的バグもあると思いますが、まだまだ未熟なため、気づきません。
どうか、チェックをお願いします。
これから、コードをのせます。
0629585 コ-ド1
2006/06/17(土) 16:45:30※汚くてごめんなさい。
また、以下に出てくる、関数ToUpperCaseや、関数CountWords は自作です。
一応、Functionで作る前に sub で作って試しました。
Sub MostFrequentWord()
A = "Hey, You ! I love you. You love me."
Dim Count As Integer
Dim hairetu() As String
Dim Counter() As Integer
A = ToUpperCase(A)
For i = 1 To Len(A)
C = Mid(A, i, 1)
If (C <> " " And C <> "." And C <> "#" And C <> "?" And C
<> "!" And C <> ",") Then
s = s + C
F = 1
Else
If F = 1 Then
Count = Count + 1
F = 0
ReDim Preserve hairetu(1 To CountWords(A))
hairetu(Count) = s
s = ""
Else
End If
End If
Next i
ここまでで文字列中の単語を配列に変換してます
0630585 コ-ド2
2006/06/17(土) 16:49:29For k = 1 To CountWords(A)
If (hairetu(j) = hairetu(k)) Then
ReDim Preserve Counter(j)
Counter(j) = Counter(j) + 1
Else
End If
Next k
Next j
ここまでで 配列に分けた単語数をカウントしてます
0631デフォルトの名無しさん
2006/06/17(土) 16:51:03XP上でVB6は動作保障されてないよ。
MSのサイトでは「一部不具合はあるが、動く」って書かれてるけど、
MSの動作保障なんて全くアテにはなりませんから。
0632585 コ-ド3
2006/06/17(土) 16:52:22check = False
For n = 1 To (CountWords(A) - 1)
E = Counter(n)
F = Counter(n + 1)
G = hairetu(n)
H = hairetu(n + 1)
If (E < F) Then
Counter(n) = F
Counter(n + 1) = E
hairetu(n) = H
hairetu(n + 1) = G
check = True
ElseIf (E = F) Then
Counter(n) = E
Counter(n + 1) = F
hairetu(n) = G
hairetu(n + 1) = H
check = True
End If
Next n
If (check = False) Then Exit For
Next m
Debug.Print hairetu(1)
End Sub
以上です!
汚くて申し訳ありません!
0633デフォルトの名無しさん
2006/06/17(土) 16:53:34とにかく、課題クリアおめでとさん。
0634585 コ-ド3について
2006/06/17(土) 16:55:560635585
2006/06/17(土) 17:00:04ありがとうございます!
0636デフォルトの名無しさん
2006/06/17(土) 17:16:08お里が知れるというか、自分がそれしかできないんだろうな。
C#、VB.NET、Javaなら学生も自分のパソコンで学習できるだろうに。
0637デフォルトの名無しさん
2006/06/17(土) 17:17:440638デフォルトの名無しさん
2006/06/17(土) 17:31:04さい
0639デフォルトの名無しさん
2006/06/17(土) 17:57:460640デフォルトの名無しさん
2006/06/17(土) 20:06:30a(0) = "a",
a(1) = "b",
・…
としかできないの?
もっとまとめて出来ないのでしょうか?
0641デフォルトの名無しさん
2006/06/17(土) 20:08:430642デフォルトの名無しさん
2006/06/17(土) 20:10:570643デフォルトの名無しさん
2006/06/17(土) 20:31:58こんな感じ?
Dim i As Integer
Dim strAlpha() As String
For i = 0 To 25
ReDim Preserve strAlpha(i)
strAlpha(i) = Chr(i + 97)
Debug.Print strAlpha(i)
Next i
0644デフォルトの名無しさん
2006/06/17(土) 20:32:30おお!
思いつかなかった!!
サンクス!
0645デフォルトの名無しさん
2006/06/17(土) 21:16:56代入のことを表記って言うのは常識
0646デフォルトの名無しさん
2006/06/17(土) 22:42:23教えてください
0647デフォルトの名無しさん
2006/06/17(土) 22:54:45http://www.google.co.jp/
0648デフォルトの名無しさん
2006/06/17(土) 22:55:03http://msdn.microsoft.com/library/ja/script56/html/vsgrpNonFeatures.asp?frame=true
> VBA の機能で VBScript に含まれていない機能
> 制御構造
> DoEvents 関数
> GoSub...Return ステートメント、GoTo ステートメント
> On Error GoTo ステートメント
> On...GoSub ステートメント、On...GoTo ステートメント
> 行番号、行ラベル
0649デフォルトの名無しさん
2006/06/17(土) 23:09:040650デフォルトの名無しさん
2006/06/17(土) 23:12:330651デフォルトの名無しさん
2006/06/17(土) 23:56:370652デフォルトの名無しさん
2006/06/18(日) 00:13:570653デフォルトの名無しさん
2006/06/18(日) 00:18:300654デフォルトの名無しさん
2006/06/18(日) 00:19:590655デフォルトの名無しさん
2006/06/18(日) 00:24:36なにこのわかりやすい自演
0656デフォルトの名無しさん
2006/06/18(日) 01:30:260657デフォルトの名無しさん
2006/06/18(日) 02:24:01Form.Controls
Frame.Container
PictureBox.Container
とかって何型なの
タイプライブラリにはIDispatch(VBのObject型)になってるんだけど
動作が VBA.Collection 同じだから TypeOf しても False が返るし
結局Object型だから詳しい型が分からないんだよな
0658デフォルトの名無しさん
2006/06/18(日) 02:54:250659デフォルトの名無しさん
2006/06/18(日) 03:08:49特に理由は無いんだが...
AddとかItemとかのメンバー持ってるから 何か型があるのかと思っただけ
0660デフォルトの名無しさん
2006/06/18(日) 09:09:03ずっと叩かれてたんだと思いますが。
コントロール配列だって実態はなんなのか釈然としないしね
0661デフォルトの名無しさん
2006/06/18(日) 10:21:06Control ctrl = Form1.Controls[0]
とか、そういうコードを書くけど。
いやしかし、それも Object 型が返ってきていると
考えると別にどれに入れてもいいわけか。
確かにちょっと悩む。
0662デフォルトの名無しさん
2006/06/18(日) 10:30:55叩いてたのはお前だけ。
0663デフォルトの名無しさん
2006/06/18(日) 11:22:27TypeNameで名称を見てみれば?
0664デフォルトの名無しさん
2006/06/18(日) 13:58:09さて、Microsoft Script Control を使用せずに、
ある変数(仮に VarTemp と宣言)を
その名前文字列("VarTemp ")で呼び出す方法はないでしょうか?
お手数ですが、ご教示願います。
0665デフォルトの名無しさん
2006/06/18(日) 14:02:57無い。
もっと具体的にやりたいことを書けば、何かアドバイスできるかも試練。
0666デフォルトの名無しさん
2006/06/18(日) 15:23:55何をやりたいかは何となく分かるが、それをやらなければならない設計がおかしい。
それに、「Microsoft Script Control」を使わない理由も。
0667デフォルトの名無しさん
2006/06/18(日) 15:28:03このユーザがどのドメインでログインしたかを知る方法はあるのでしょうか?
どなたかご教授願います。
0668デフォルトの名無しさん
2006/06/18(日) 16:03:34教示 ○
0669デフォルトの名無しさん
2006/06/18(日) 16:19:330670デフォルトの名無しさん
2006/06/18(日) 16:20:280671デフォルトの名無しさん
2006/06/18(日) 16:25:080672デフォルトの名無しさん
2006/06/18(日) 16:29:13どれくらいTabキ-でずらしていくとかです!
0673デフォルトの名無しさん
2006/06/18(日) 16:46:40つGetUserNameEx
0674デフォルトの名無しさん
2006/06/18(日) 17:05:55そういうのはプロジェクト毎に決まってるよ。
0675デフォルトの名無しさん
2006/06/18(日) 17:40:45その決まりがわからないのですよ。
VBでの決まりを教えて下さい。
又は、サイトを
0676デフォルトの名無しさん
2006/06/18(日) 17:41:450677デフォルトの名無しさん
2006/06/18(日) 18:22:45>>675
「コーディング規約」とかで検索してみた?
0678デフォルトの名無しさん
2006/06/18(日) 18:50:05つ「Code Complete」(Steve McConnell著)
0679デフォルトの名無しさん
2006/06/18(日) 19:02:380680デフォルトの名無しさん
2006/06/18(日) 19:39:16だからプロジェクト毎に決めるんだよそれは。
自分だけの趣味プログラムなら、自分が決めればいい。
0681デフォルトの名無しさん
2006/06/18(日) 20:04:41プロジェクトなんか関係ない。
0682デフォルトの名無しさん
2006/06/18(日) 21:39:29残念、ハズレ
0683デフォルトの名無しさん
2006/06/18(日) 22:06:17入れ子一段あたり、タブキー一回分でやってる。
0684デフォルトの名無しさん
2006/06/18(日) 22:33:36実際迷うことあるか?w
{}もifのぶら下がりの問題もないのに。
だから質問者が釣りでなくマジで聞いてるなら、回答としては
そこらにゴロゴロ転がってるサンプル眺めてそのとおり真似しろ、でいいでしょ。
>>683みたいになんでもバカ正直に回答すりゃいいってもんじゃないと思うけど
0685デフォルトの名無しさん
2006/06/18(日) 22:35:150686デフォルトの名無しさん
2006/06/18(日) 22:59:11じゃあそのプロジェクトごとに違うというルールの例を2,3あげてもらおうか。
0687デフォルトの名無しさん
2006/06/18(日) 23:12:550688デフォルトの名無しさん
2006/06/18(日) 23:16:03インデントが3バイトか4バイトか、とか、変数名の付け方とか、
逆に全てのプロジェクトで同じ項目なんて殆どないと思うが。
0689デフォルトの名無しさん
2006/06/18(日) 23:22:400690デフォルトの名無しさん
2006/06/19(月) 00:09:550691デフォルトの名無しさん
2006/06/19(月) 10:29:211バイト空白が何文字分か、って事だろ。
0692デフォルトの名無しさん
2006/06/19(月) 12:56:500693遅いが、これはどう? split、Replaceだけ別で実装
2006/06/19(月) 16:18:48Dim strEx As String: strEx = "Hey, You ! I love you. You love me."
strEx = Replace(strEx, ",", "")
strEx = Replace(strEx, ".", "")
strEx = Replace(strEx, "!", "")
strEx = Replace(strEx, "?", "")
strEx = Replace(strEx, "#", "")
Dim strArr() As String: strArr = Split(strEx, " ")
Dim lngUbound As Long: lngUbound = UBound(strArr)
Dim lngMaxCount As Long: lngMaxCount = 0
Dim strMaxWord As String: strMaxWord = ""
Dim strArr2() As String: ReDim strArr2(0 To 1, 0 To lngUbound)
For i = 0 To lngUbound
strArr2(0, i) = strArr(i)
For j = 0 To i
If (StrConv(strArr2(0, j), vbUpperCase)) = (StrConv(strArr(i), vbUpperCase)) Then
strArr2(1, j) = Val(strArr2(1, j)) + 1
If Val(strArr2(1, j)) > lngMaxCount Then
lngMaxCount = Val(strArr2(1, j))
If (StrConv(strMaxWord, vbUpperCase)) <> (StrConv(strArr(i), vbUpperCase)) Then
strMaxWord = strArr2(0, j)
End If
End If
Exit For
End If
Next
Next
Debug.Print strMaxWord
End Sub
0694デフォルトの名無しさん
2006/06/19(月) 18:03:050695デフォルトの名無しさん
2006/06/19(月) 18:14:11ここで聞いた方が早いと思いまして。
エクスポートしたファイルに「,」が含まれているとエラーメッセージが表示される
というプログラムをつくりたいのですが
どうすればいいでしょうか?
0696デフォルトの名無しさん
2006/06/19(月) 18:36:38一度氏ねばいいと思うよ
0697693
2006/06/19(月) 19:41:47変な制約無かったらどう実装するか
0698デフォルトの名無しさん
2006/06/19(月) 20:20:38先頭から一文字一文字取り出して比較すればいい。
0699デフォルトの名無しさん
2006/06/20(火) 09:59:50コマンドライン引数が入っているか判定するにはどうすればいいんでしょうか?
どんな関数を使えばいいのでしょうか??
お願いいたします
0700デフォルトの名無しさん
2006/06/20(火) 10:04:28っCommand$
0701デフォルトの名無しさん
2006/06/20(火) 10:07:260702デフォルトの名無しさん
2006/06/20(火) 10:25:440703デフォルトの名無しさん
2006/06/21(水) 22:23:35VB6 SP6 で、APIを使ったシリアル通信をしたいのですが、
ここにあるサンプルをネイティブコードでコンパイルすると、
うまく送受信しないのですが、どうしてでしょうか・・・・
http://speana-1.hp.infoseek.co.jp/vb/vb_3/vb_3.htm
http://speana-1.hp.infoseek.co.jp/vb/vb_3/txrx1.lzh
OS 名Microsoft Windows 2000 Professional
バージョン5.0.2195 Service Pack 4 ビルド 2195
OS 製造元Microsoft Corporation
0704デフォルトの名無しさん
2006/06/21(水) 22:53:16Win32API質問箱 Build43
http://pc8.2ch.net/test/read.cgi/tech/1148005509/
0705デフォルトの名無しさん
2006/06/21(水) 23:05:47素直にOCX使った方がいいよ。
0706デフォルトの名無しさん
2006/06/21(水) 23:25:50p-codeで動くならそれでいいじゃん
0707デフォルトの名無しさん
2006/06/22(木) 09:45:12たまに上手くいくよ。
0708デフォルトの名無しさん
2006/06/22(木) 10:31:09結論からすると、とりあえず解決しました。
>>704さん
スレ違いなので参照先で質問をすれば?ということでしょうか。
一応ログは確認してみました。
>>705さん
今までOCXを使っていましたので。今回はAPIでということでお願いします。
>>706さん
なぜ動かないのかが知りたかったのですが・・・
P-CODEでは確かに動いています。
>>707さん
ご指摘のようにネイティブの最適化を切ってみました。
すると、動きました。
このAPIを使用するにあたって、最適化に関与する部分で何か不具合があるということですね。
実行順序とか勝手に変えられてるんでしょうかw
時間があるときに、違いをデバッガで確認してみることにします。
0709デフォルトの名無しさん
2006/06/22(木) 11:22:06多分だけどAPIコールのときに型を厳密に言うと間違ってる部分とかがあるんじゃないの?
最適化を有効にした場合、その辺りでAPIコールが引っかかる場合が昔あった。
0710デフォルトの名無しさん
2006/06/23(金) 04:07:16Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As Long) As Long
で 引数 "lpOverlapped As Long" は "ByVal lpOverlapped As Long" が正しい気がする
このページ書いた人は lpOverlapped に NULLポインタ渡したいんだと思うけど
"lpOverlapped As Long" に 0 入れても 0アドレスは渡せないよ
ポインタアドレスを渡す時は ByVal As Long 出ないと駄目
ポインタのポインタを指定するときは As Long でOKだけど
0711デフォルトの名無しさん
2006/06/23(金) 13:41:33手持ちの書籍では
"ByVal lpOverlapped As Long"
となっていました。
他に気になったのは
http://www.microsoft.com/japan/developer/library/Jpwinpf/_win32_writefile.htm
で戻り値がBOOL型(VB6では2Byte)になっていますが、
Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As Long) As Long
の宣言は戻り地がLong(VB6では4Byte)でサイズが合わないのですが大丈夫でしょうか
0712デフォルトの名無しさん
2006/06/23(金) 13:54:26Win32APIでのBOOLは4バイトなんだけど。
0713デフォルトの名無しさん
2006/06/23(金) 17:18:38YYYY/MM/DDという形式の日付だけ通して
それ以外を弾きたいのですが、
文字数判別はどのような関数を使えばよいでしょうか??
0714デフォルトの名無しさん
2006/06/23(金) 17:18:42Windows APIのBOOLは>>712の言うとおりであって、VBのBooleanとは別物。
0715デフォルトの名無しさん
2006/06/23(金) 17:49:55文字数判定する必要なくね?
ISDATEだけでいいんじゃね?
0716デフォルトの名無しさん
2006/06/23(金) 18:11:43馬鹿ですか?
0717デフォルトの名無しさん
2006/06/23(金) 18:16:40vb使いの癖に偉そうにしないで下さい。
0718デフォルトの名無しさん
2006/06/23(金) 18:23:06Len() じゃないの? VBの事、もう忘れてるけどw
0719デフォルトの名無しさん
2006/06/23(金) 18:34:11っMid$
0720デフォルトの名無しさん
2006/06/24(土) 01:02:50コマンドラインで渡すと遅いし渡すファイルの数に限りがあるみたいで。
SendMessageを使うって所までは分かったんですけど、うまく渡せていないようで、Winampが強制終了してしまいます。
ご存知の方がいらっしゃいましたらお願いします。
0721デフォルトの名無しさん
2006/06/24(土) 01:30:210722デフォルトの名無しさん
2006/06/24(土) 02:21:560723デフォルトの名無しさん
2006/06/24(土) 06:22:28偶々そのSendMessageをVBから呼ぶにしても、VB関係してるのはVBでのAPI宣言の書き方くらいだな。
0724デフォルトの名無しさん
2006/06/24(土) 09:54:09っスレ違い
0725デフォルトの名無しさん
2006/06/24(土) 17:44:48コンボボックスにいくつかの項目があり、項目を選択後に決定ボタンをクリックすると
if文で条件に合致した場合に何らかの動きをするようにしています。
で、コンボボックスの状態をデフォルトのままにした場合にもう一度コンボボックス
を選択させたいのですが、どうすれば良いのでしょうか?
こんな↓感じなのです。
Private Sub Button_Click()
If Combo.ListIndex = 0 Then
したい事1
ElseIf stCombo.ListIndex = 1 Then
したい事2
Else
この時にもう一度コンボボックスを選択させなおしたい
End If
よろしくお願いします。
0726デフォルトの名無しさん
2006/06/24(土) 18:05:510727725
2006/06/24(土) 18:41:56Elseの後に入れてみましたが駄目でした。
そのまま入れるだけでは駄目なんですか?ちょっと調べてみます。
有難うございました
0728デフォルトの名無しさん
2006/06/24(土) 18:49:05SendMessageはVBの機能ではなくAPIなので使い方が解らなければそっちのスレでどうぞ。
0729デフォルトの名無しさん
2006/06/24(土) 18:52:34質問を書いてある通り額面どおり受け取ると、
ユーザーを殴ってでも再入力を強制するロボでも接続しる、
と回答したくなるw
0730725
2006/06/24(土) 19:15:32使い方がよく分からないのでぐぐってみます。有難うございました。
>>729
表現がおかしかったですか?反省です。
言いたかった事は、コンボボックスがデフォルトのままで選択されずに実行ボタンが
押された時にメッセージを出してもう一度選択を促したいだけなんです。
そもそもifを使うのがおかしいのですね?多分。
方法を考えます。有難うございました。
0731デフォルトの名無しさん
2006/06/24(土) 19:19:59なら話は比較的簡単じゃないか。
コンボボックスのアイテムが選択されるまではボタンをEnabled = Falseにしとけばいい。
というか、そもそもそのボタンとやらは本当に必要なんだろうか
0732725
2006/06/24(土) 19:38:17なるほど!確かにその方法でも大丈夫です。
コンボボックスのアイテムが選択されたかどうかを判別する方法が分からない
ので調べてみます。
0733デフォルトの名無しさん
2006/06/24(土) 19:44:45既に選択した状態を消したい、って事?
ちゃんと日本語で質問してくれ。
0734725
2006/06/24(土) 20:05:35既に選択した状態を消したい、とは考えていません。
選択されていない状態の時に「選択されてませんよ」ってメッセージを出して
ユーザーに選択をさせ直すようにしたいのです。
そんなに日本語変?
0735デフォルトの名無しさん
2006/06/24(土) 20:16:25>コンボボックスがデフォルトのまま…
っていうのは、コンボを未選択状態(ListIndex=-1)にしているのか?
それとも、デフォルト状態という設定をコンボボックスにしているのかによって、
判定方法が変わってくると思うのだが…
0736725
2006/06/24(土) 20:20:07未選択状態って言うのは(ListIndex=-1)の状態です。
何かこれ以上続けるとスレ汚しになりそうなので(私が未熟なために)、方法も
含めて最初からやり直してみます。
レス頂いた皆さん、有難うございました。
0737デフォルトの名無しさん
2006/06/24(土) 20:41:15「選択されていない状態」を知りたい、って事なのか?
0738デフォルトの名無しさん
2006/06/24(土) 22:09:540739デフォルトの名無しさん
2006/06/24(土) 22:21:400740デフォルトの名無しさん
2006/06/24(土) 22:33:170741デフォルトの名無しさん
2006/06/24(土) 23:06:480742デフォルトの名無しさん
2006/06/24(土) 23:21:14それ。
0743デフォルトの名無しさん
2006/06/25(日) 01:18:13ElseIf a = 2 Then def
End If
と書いてるんだが実行しようとすると'Elseに対するIfがありません'って出る
それで
If a = 1 Then abc
End If
と書くと'End Ifに対応するIfブロックがありません'て出るんだが
これはif文が間違ってる?
それとも他の場所が間違ってる?
因みにVB5CCE
0744743
2006/06/25(日) 01:25:40thenの後の改行だった
俺の見たサイトで横幅の都合上改行してるのかと思ったorz
0745デフォルトの名無しさん
2006/06/25(日) 11:51:45普通エディタには、テキストエリアの左側に、灰色の文字で現在行が表示されているものですが、
あれはどのようにして表示させているのでしょうか?
いろいろ試したのですが、描画速度が遅かったり、重すぎて使い物にならなかったり・・・
この問題を解決してくれるコントロールやプロパティがあるのでしょうか?
0746デフォルトの名無しさん
2006/06/25(日) 11:54:05まずはスレタイや>>1をじっくり読んでみることを進める。
0747デフォルトの名無しさん
2006/06/25(日) 16:17:06CInt(Math.Rnd()*f1sh)
ってやってランダムにleftとtop決めてオブジェクト流してるんだが、何度実行しても同じ場所にしか出ない
キャッシュみたいなのがあるの?
そうで無ければプログラムのミスかな
0748デフォルトの名無しさん
2006/06/25(日) 16:37:15うん
0749デフォルトの名無しさん
2006/06/25(日) 17:30:500750デフォルトの名無しさん
2006/06/25(日) 17:34:160751デフォルトの名無しさん
2006/06/25(日) 18:14:52そうなのか
ありがとう
>>749
ゲームの背景に星流そうとしてるからそう書いた
0752デフォルトの名無しさん
2006/06/25(日) 18:19:48例えば、テキストボックスに
y=c0*x
と書き、別のテキストボックスでc0とxを与えたときに、yを計算させる、というようなことです。
みなさまの知恵をお貸しください。
よろしくお願いします。
0753デフォルトの名無しさん
2006/06/25(日) 19:27:48つeval
0754デフォルトの名無しさん
2006/06/25(日) 19:28:35Rnd関数の説明に対処方法も書いてある。
0755752
2006/06/25(日) 20:06:39返信ありがとうございます。
"eval"でぐぐってみました。
どうやらVB6.0では使用できない関数らしいですね(VB Script 5.0で使える?)。
書き忘れていて大変申し訳ないのですが、当方VB6.0を使用しております。
もしご存知でしたら、VB6.0でeval関数を使用する方法をお教えいただきたいです。
よろしくお願いいたします。
0756デフォルトの名無しさん
2006/06/25(日) 20:08:33ヒント:VB6からVBSは使える
0757デフォルトの名無しさん
2006/06/25(日) 20:31:10ScriptControlによるeval
ttp://homepage2.nifty.com/Dee/vb/tips/vb/vbscripteval.html
0758デフォルトの名無しさん
2006/06/25(日) 20:35:38マジで?
外部のVBSを実行したり、WSHの公開オブジェクトを参照したり出来るのは知ってるが
VBS自体が使えるのは知らなかった。
>>757みたいにScriptControlオブジェクトのEvalではなく、VBSのEvalを使う方法を紹介してくれ。
0759デフォルトの名無しさん
2006/06/25(日) 20:59:06頭悪いんじゃないの?
つか、ぐぐれよ
0760デフォルトの名無しさん
2006/06/25(日) 21:20:130761752
2006/06/25(日) 21:46:25>>757
ありがとうございます。
紹介していただいた方法を参考に、少し調べてみようと思います。
どうもありがとうございました。
0762デフォルトの名無しさん
2006/06/25(日) 22:13:590763デフォルトの名無しさん
2006/06/25(日) 23:59:09ぷぷぷぷぷ〜〜〜 『VBS Eval』でググッタラ一番上に出てきたよ〜〜〜〜〜ww
0764デフォルトの名無しさん
2006/06/26(月) 00:05:30ま た お 前 か
0765デフォルトの名無しさん
2006/06/27(火) 22:25:34Selectした結果をListViewに表示、かつ
同じく結果をテキストに出力というコードを書いてます。
ダイナセットからレコード件数ずつループしてListViewに追加、
MoveFirstした後にまたレコード件数ループしてテキスト出力。
この時、ListViewとテキストのレコード順が違うのです。
ListViewが勝手にソートしちゃってるとかあるんでしょうか?
初心者な質問ですみませんが、お力をお貸し下さい。
0766デフォルトの名無しさん
2006/06/27(火) 22:29:14Sort有効ならあるよ
0767デフォルトの名無しさん
2006/06/27(火) 22:32:55早い反応ありがとうございます。
書き落としですね、すみません。
えっと、プロパティで確認しても、無効にしてあるんです。
0768デフォルトの名無しさん
2006/06/27(火) 22:35:28VBAの方でユーザーフォームのメニュー選択画面を作っているのですが、
工程毎に幾つも項目があり、この工程と項目を関連付けする為に線を引きたいんですが、
どうすれば良いのでしょうか?
0769デフォルトの名無しさん
2006/06/27(火) 22:52:09>550 みたいに追加の仕方が悪いんじゃないよねぇ?
0770デフォルトの名無しさん
2006/06/27(火) 22:57:49追加する度に追加するテキストと追加後の結果を見ればわかるだろう
0771765
2006/06/27(火) 23:07:52いえ、indexは省略しています。
ソートによる空白の扱いが、テキストと違うのが気になっています。
数字と平仮名があつ時、数字項目に空白があった際、
<ListView> <テキスト>
””,あ 01,あ
"",い 01,い
01,あ 02,あ
01,い 02,,い
02,あ ””,あ
02,,い "",い
こんな風になるんです。
>>770
その通りですね……。
今手元にコードも開発環境もありませんが、確認してみます。
0772デフォルトの名無しさん
2006/06/27(火) 23:57:110773デフォルトの名無しさん
2006/06/28(水) 04:20:190774デフォルトの名無しさん
2006/06/28(水) 09:37:32一つのループで追加と書き出しできないの?
0775デフォルトの名無しさん
2006/06/28(水) 14:50:47これって問題ありなんですかね?
ファンクションの事を調べていたらこんな事があったようなので・・・
http://pc.2ch.net/test/read.cgi/pcnews/1055757832/l50
これってファンクションキーは使っては駄目ということなのでしょうか。
0776デフォルトの名無しさん
2006/06/28(水) 15:15:52駄目じゃないけど普通は使わない。
0777デフォルトの名無しさん
2006/06/28(水) 17:46:08いいのかな)状態か閉じている状態かを取得する方法は無いでしょうか。
0778デフォルトの名無しさん
2006/06/28(水) 19:05:040779デフォルトの名無しさん
2006/06/28(水) 19:54:310780デフォルトの名無しさん
2006/06/28(水) 20:27:59まぁ少なくともフォーカスのない時は閉じてるわな。
0781777
2006/06/28(水) 22:43:35コンボボックスを開く。
開いてるときにEnter押したら、単にコンボボックスを閉じるということをやりたいのです。
0782デフォルトの名無しさん
2006/06/29(木) 01:52:040783デフォルトの名無しさん
2006/06/29(木) 09:23:08誰もそんな話をしてないし。
ここで未だにVB6でやってる時点で前提があるんだから。
0784デフォルトの名無しさん
2006/06/29(木) 10:26:14「閉じてるときに文字列入力」って、何処に入力するか知らんけど、
テキストボックスだとしたら、入力した瞬間に閉じるのでは。
フォーカスが移動するし。
0785デフォルトの名無しさん
2006/06/29(木) 13:18:07VBでやってAJAXよりも遅かったら悲惨
0786デフォルトの名無しさん
2006/06/29(木) 17:28:23と感じる人が居るのは否定しないが、
そう感じない人が居ることも認めようね。
そもそも早さ最優先ならこのスレには来ないだろw
最初から他の言語を選ぶはずだ。
質問には、妥協案や「俺ならこうする」的な自己中回答ではなく
出された条件を満たす回答を心がけよう。
もちろん情報として他の方法を紹介するのは悪くないが
それを紹介して「コレの方がいいからコレでやれ」的なのは止めような。
「コレの方がいい」かどうかは質問者が決めることだから。
0787デフォルトの名無しさん
2006/06/29(木) 17:30:02なぜか知らんが非常にむかつくレスだ。
0788デフォルトの名無しさん
2006/06/29(木) 19:17:02「これの方が良い」との結論に納得するかどうかは質問者の自由だが、
「これの方が良い」と主張する自由が回答者にもある
0789デフォルトの名無しさん
2006/06/29(木) 19:28:150790デフォルトの名無しさん
2006/06/29(木) 20:18:32__ / /
//⌒ヽ / /
_, - '' .i ! /
r==- ´ |,,rt | / 、``_ .┼┐
._. r´ll| | i-|_j | / | / /
\  ̄ ` ー 、!_|_|_,,,,,,.....,,,,____ ! .!
\ ヾ//::::::::;;:'::::::::::;:::\`ヽ、_,ノ
\ /:://::::::/:::::::::/ハ:\ヽ i! \
/" ̄ヲス::|.|:::::/:;r―<|::/--||:::|:::| i! \
:::,",´/ト:::|.|:::://,ィ"ミl l/ r=v||:::|l:| i!
イr::/ !:/~|::// ! ヒ.リ L.l| ||:::||! i!
|l.|::| !|i´レ'|:| 、、、 ,. 、 |ル:| i!
ll.|l::| ヾ,`!/. Fニニi / |! i!
;| ||::| 丶l 丶、 `ー ' / ,i!
;|::|.|::| l i.゛"´ √と"Y
l|::|.|ノ _ノ __ _t--、/ (二` .|
|レ r" ̄!i 〈 ⊂_` |
{ .ノ`ー-=ョ≒t=\ゝ /
0791デフォルトの名無しさん
2006/06/29(木) 23:26:51なんなんだ、この馬鹿は。
読んでてムカムカした。
はっ、釣り?
0792デフォルトの名無しさん
2006/06/30(金) 00:04:01書き方は、まぁ、偉そうだがw
0793デフォルトの名無しさん
2006/06/30(金) 00:07:570794デフォルトの名無しさん
2006/06/30(金) 05:23:09それは786が言ってることと同じだよ。
786は、回答者にも出された条件に合わない方法を主張する自由はあるが、
決定する自由は無いって言ってるだけだし。
0795デフォルトの名無しさん
2006/06/30(金) 09:30:28↓
ポップアップメニュー
↓
項目クリック
↓
Form2をモーダルで起動
↓
Form2のリストボックスを右クリック
↓
ポップアップメニュー ・・・が出ない
この流れを崩せない場合、Form2をモードレスで起動する以外に、
Form2のリストボックスからポップアップメニューを表示させる方法は
ないでしょうか?
0796デフォルトの名無しさん
2006/06/30(金) 09:33:370797デフォルトの名無しさん
2006/06/30(金) 09:57:36モーダルは本当に不具合だらけだから、使わないのが常識。
0799デフォルトの名無しさん
2006/06/30(金) 13:02:41モーダルで不具合って何?
0800デフォルトの名無しさん
2006/06/30(金) 13:14:23Enterなんか使わずにドロップダウンしたら入力されている
文字列の含まれるリストを表示するほうがよいのでは
0801デフォルトの名無しさん
2006/06/30(金) 13:17:56それでもよいのですが、ドロップダウンしたときに発生するイベントがないんですよね。。。
0802デフォルトの名無しさん
2006/06/30(金) 13:53:000803デフォルトの名無しさん
2006/06/30(金) 15:01:56毎回毎回不可思議な現象に巻き込まれるが、
結局何も分からないままほったらかしに・・・
0804デフォルトの名無しさん
2006/06/30(金) 23:14:480805デフォルトの名無しさん
2006/07/01(土) 12:23:12ヒント:X−ファイル
0806デフォルトの名無しさん
2006/07/01(土) 12:55:00実は今、人がジャンプし終わった後、ブロックの上に着地するというコードを書きたいのですがやり方が解りません。
真にすみませんが誰か教えてください。お願いいたします。
オブジェクト名は、
人はHitoで、
ブロックはBlock
です。
0807デフォルトの名無しさん
2006/07/01(土) 13:14:00「Hito」、「Block」、この言葉に何かを感じる人はれ連絡をください。
0808デフォルトの名無しさん
2006/07/01(土) 17:21:30HitoとBlockは、Imageを使っています。
0809デフォルトの名無しさん
2006/07/01(土) 17:40:45お前はVB使うな。そしてゲーム作成板へ行け。
0810デフォルトの名無しさん
2006/07/02(日) 09:33:46「AfterJump」イベントと「BeforeOnBlock」イベント使えばいけると思うよ
0811デフォルトの名無しさん
2006/07/02(日) 12:32:35Hito.Top = Block.Top
0812デフォルトの名無しさん
2006/07/02(日) 14:12:150813デフォルトの名無しさん
2006/07/02(日) 14:24:59ありがとうございます。
やってみます。
0814_
2006/07/03(月) 07:29:30サーバから302 Moved Temporaryが帰ってきた場合に
自動でリダイレクトし移動先に通信してしまいます。
自動リダイレクトを停止して302のページが取得したいのですが、
Inetでできるんでしょうか?
0815デフォルトの名無しさん
2006/07/03(月) 12:26:21socketのAPI使ったらいいんじゃない?
0816デフォルトの名無しさん
2006/07/03(月) 12:59:500817デフォルトの名無しさん
2006/07/03(月) 23:10:27VBScriptの質問もOKとのことなので質問させてください。
2chのdatの更新日を取得しようと
With CreateObject("MSXML2.XMLHTTP")
.Open "HEAD", "http://pc8.2ch.net/tech/dat/1146678926.dat", False
.Send
MsgBox .getResponseHeader("Last-Modified")
End With
というのを書いたところ、きちんと取得出来たのですが、datが無い場合(つまりdat落ちスレの場合)だと
空文字が返るわけでもなく、エラーが出るわけでもなく、Sendのところで止まってしまいます。(10分以上待ったが反応無し)
Sendが終わらないとStatusを調べることも出来ず、非同期で実行しても、いつまでもreadyState=4にならず
困りあぐねているのですが、指定したdatの存在の有無を調べるにはどうすれば良いのでしょうか?
dat( http://pc8.2ch.net/tech/dat/1141320612.dat )ではなく、http://pc8.2ch.net/test/read.cgi/tech/1141320612/1を読み込んで
「このスレッドは過去ログ倉庫に格納されています」という文字列が有るかどうかで判断するという手もあるのですが、
こういった方法ではなくdatの存在の有無を直接判断できる方法を教えてください。上記を含め、処理に時間の掛かる方法は避けたいです。
WindowsXP SP1、WSH5.6、IE6.0 SP1
0818デフォルトの名無しさん
2006/07/03(月) 23:33:45Inet以外でHTTP通信する方法はないでしょうか?
0819デフォルトの名無しさん
2006/07/03(月) 23:39:04あるよ。
0820デフォルトの名無しさん
2006/07/03(月) 23:46:170821デフォルトの名無しさん
2006/07/03(月) 23:53:090822デフォルトの名無しさん
2006/07/04(火) 02:18:49「readyState=4」が書いてあるのでヒントだけ。
・Do〜Exit Do〜Loop
・時間を計る
あんたならこれで分かると思う。
0823デフォルトの名無しさん
2006/07/04(火) 04:15:00VBSで
msgbox "処理中"
↓
(重い処理)
↓
(メッセージボックス閉じる)
ってできるんでしょうか?時間指定で閉じる方法はぐぐって見つけたのですが・・・
0824デフォルトの名無しさん
2006/07/04(火) 10:28:10MsgBox を表示したら、それを閉じる迄
コードは其処で止まるんだが。
0825デフォルトの名無しさん
2006/07/04(火) 10:42:21Main.vbs Msg.vbs
処理開始
├───起動─→msgbox "処理中"
│
↓
処理完了
├───通知─→(メッセージボックス閉じる)
↓ ↓
終了 終了
意地でも1ファイル内で済ませたいなら知らん
0826デフォルトの名無しさん
2006/07/04(火) 11:45:02その部分のコードはどうやって記述すればいいのでしょうか?
例えば
test.exe batch
このようにしたいのです。
0827デフォルトの名無しさん
2006/07/04(火) 11:47:220828デフォルトの名無しさん
2006/07/04(火) 12:59:24それはどこでやればいいのでしょうか?
重ねてソースコード上でどのように書けばいいのかと
バッチファイル自体はどうやって作るかも教えて頂けるとありがたいです。
0829デフォルトの名無しさん
2006/07/04(火) 13:02:36>>825
ありがとうございました。確かにそうですよね
ですが私はメッセージボックス閉じる方法すら判らない厨でして。。。
ぐぐってきます
0830デフォルトの名無しさん
2006/07/04(火) 13:03:49http://pc8.2ch.net/test/read.cgi/win/1116131036/
0831デフォルトの名無しさん
2006/07/04(火) 13:07:50すいません。バッチファイルについてはスレ違いでした。
もう1つ、引数として何が指定されたかを
VBのソースコード上でどのように判断すればいいかわからないのです。
0832デフォルトの名無しさん
2006/07/04(火) 13:14:51答えてもらってるんだから少しは自分で調べろよ
0833デフォルトの名無しさん
2006/07/04(火) 13:35:33お前のブラウザでは >>827 が表示されないのか?
0834デフォルトの名無しさん
2006/07/04(火) 15:30:19例えば、ゼロやスペースがたくさん必要なときは
String$(100,"0")とかSpace$(893)とか書くよね
で、そんな変数やら項目がたくさんある流れのなかで、
数箇所少ない数のゼロやスペースが必要なときって
"000"とか" "
String$(3,"0")とかSpace$(3)とか
普通どっち使うもんかな
何個以上のスペースのときはSpace使うとか、
線引きみたいなの意識してる?
人それぞれ?
0835デフォルトの名無しさん
2006/07/04(火) 17:31:500836デフォルトの名無しさん
2006/07/04(火) 17:36:14普通即値なんて使わないでしょ。
「" "」が必要だとして、その3バイトの空白には
必ず意味がある筈なんだから。
そういう意味では、Space$(893) も失格。
この「893」という値には意味がある筈なので。
0837デフォルトの名無しさん
2006/07/04(火) 19:43:14どゆいみ?
0838デフォルトの名無しさん
2006/07/04(火) 19:52:44「コーディング規約守れ」って事らしい
0839デフォルトの名無しさん
2006/07/04(火) 19:54:410840817
2006/07/04(火) 20:47:07>>822
Sleep取りながらループ回し、有る一定時間readyState=4にならなければ、という処理をしろというなら
その結果が>>817で書いた「(10分以上待ったが反応無し)」であり、
実際には10分も必要なく数秒でじゅうぶんだけど、普通に取得できる場合は1秒以下で処理が終わるため
例え1回数秒でも処理回数が多くなると膨大な時間になり、やはり>>817で書いたように
そういう処理に時間の掛かる方法は避けたいです。
通常1秒以下で取得できるなら、1秒以上をdat無しと判断すれば良いと言うかも知れませんが
鯖が重い場合は正常取得に1〜3秒掛かる場合もあるので、最低5秒くらいは待たないと正しい判断は出来ないと思われます。
>>822の回答がそういう意味じゃないなら、もう少し詳しく教えてください。
また、上記のような解釈でいいのなら、別な回答をお待ちします。
0841デフォルトの名無しさん
2006/07/05(水) 03:00:59tTimeA = この時点での時刻(秒単位でもミリ秒単位でも好きに)
Do
If readyState = 4 Then
好きな事やって
bGetDat = True
Exit Do
End If
tTimeB = この時点での時刻 - tTimeA
If tTimeB > 待てる限界時間 Then
好きな事やって
bGetDat = False
Exit Do
End If
DoEventsを噛ますかどうかは任せる
Loop
もっと集約化できる。Do While〜でもFor To Nextでも書ける。
好きにして。
0842デフォルトの名無しさん
2006/07/05(水) 03:06:03VBSでできるかどうかしらんが、VBなら
・メッセージボックスはMsgBoxじゃなく自分で似たデザインのを作る
・軽い処理ならその似非メッセージボックスに閉じていいかどうか条件判断させる
・重い処理なら重い処理中に似非メッセージボックスを閉じていいかどうか条件判断させる
という感じがいいと思われ。
>834
例えばSpace$(893)の「893」をConstできるか?という観点で
考えたらいいんじゃね?
ConstできるならSpace$使わんでもいいし、
できんなら使った方がよかろうし。
0843デフォルトの名無しさん
2006/07/05(水) 04:35:05ありがとうございました。
VBSではどうやら自分デザインは出来ないみたいなんですよ
今更とか言われてるけどVB覚えてみようかな
0844817
2006/07/05(水) 07:04:38>>841
そういった方法だと、
「待てる限界時間」を基準にすると、鯖が重いときに正常取得出来ず、
正常取得できる時間を基準にすると、「待てる限界時間」を越えてしまうという話です。
datが無いなら無いで、きちんとStatus=404なりなにかを取得出来る方法を探してます。
0845834
2006/07/05(水) 10:22:01普通に即値使うこともあるんだよね
バカでごめんよ
>>842
Constするべきならそうするけど
たった一つのプロシージャ内で、そこでのみ必要だよ、とかいった場合
893ものスペースはベタ打ちせずにSpace$(893)て書くけど
たった3、4のスペースだった場合は、どうなのかなと
0846デフォルトの名無しさん
2006/07/05(水) 11:50:25そのコードを死ぬ迄あんたがメンテするなら好きに書けばいい。
0847デフォルトの名無しさん
2006/07/05(水) 11:50:50たった、3、4でなくてそのスペースにはどういう意味が有るのかが重要
昨日の自分は別人と考えてプログラムを作る習慣をつけろ
0848834
2006/07/05(水) 12:12:39うん
>>847
意味・・・単なるラベル表示のインデントだとか
要するに、そこに"000"かString$(3,"0")かを記述しなきゃいけない場合に、
あなたならどっち使う?
ってことなんだけどさ
それでもそこだけのためにConst準備しとくんだ、とか
絶対そんな状況にならないぞ、とかって人はスルーしてくれ
0849デフォルトの名無しさん
2006/07/05(水) 13:01:153が4になっただけで、コードを精査するわけだし、それが一箇所だという保証もない。
そもそも、その3文字っていうことの論理的な意味づけもできない。
0851デフォルトの名無しさん
2006/07/05(水) 14:52:22ダメか。
んじゃ>825で出てる方法で重い処理内にMsgBoxを閉じるかどうか
判定する箇所を幾つか設けるしかないんじゃないかな。
VB覚えるのは賛成。
VBSやってりゃすぐ使えるようになるだろうし、
何より手数が増えるのは悪い事じゃないでしょ?
>817
だったら最初からそこまで書いてくれ。
こっちゃエスパーじゃないんだから。
>834
となるとやっぱり可読性かな。
流石にSpace$(893)の代わりに1byte spaceを893個書く事はなかろうがw
Space$(1)だったら1回きりなら" "と書いても可読性は落ちん、って感じで。
codeの該当箇所を探すって問題は、俺の場合はソースを直接read onlyでテキストエディタで開いて
正規表現とか使って探しちまうからあんまし参考意見は出せない。
共同作業の場合も相手にそのやり方教えちまうし。
0852デフォルトの名無しさん
2006/07/05(水) 16:45:29Space$だの
" "だの
見やすきゃ何でもいいだろうが
0853デフォルトの名無しさん
2006/07/05(水) 17:43:100854817
2006/07/05(水) 20:52:44>>851
はい、最初から「処理に時間の掛かる方法は避け」て
「datの存在の有無を直接判断できる方法」が知りたいと書いております。
>>851さんの「>817」はおそらく>>844宛てだと思われますが
自分としては、条件を後出ししたわけではなく、こういう理由で
最初書いた条件に合いませんと書いただけのつもりなのですが。
具体的にどの位の時間までOKか書かなかった非は認めますが、
「上記を含め」の「上記」に当たる方法が、正常にヘッダを取得できた場合よりは遅いとは言え
鯖が重くなければ0.5秒以下で終わるようなものなので、それより速い方法を探してるという意味で書きました。
引き続き宜しくお願いします。
0855デフォルトの名無しさん
2006/07/05(水) 21:45:52あたりからして、質問内容ちゃんと読んでないのだろうから、他の回答者を
待った方がいいと思われ。ここは回答者の質も様々だからな。
0856デフォルトの名無しさん
2006/07/06(木) 00:53:34あるプログラムで、
For i = 1 To T
S = S * Exp(mu + sigma * normsrnd())
Next i
というようにSをi=1〜Tで定義するのですが、
このSに対して、i=1〜Tにおいて少なくとも1つの
Sが、S<K なら 1、それ以外なら 0となるような
変数Uを記述したいのですがどう表現すれば
よいのでしょうか。Kやsigmaやmuは定数です。
宜しくお願いいたします。
0857デフォルトの名無しさん
2006/07/06(木) 00:58:42U = 0
For i = 1 To T
S = S * Exp(...)
If S < K Then
U = 1
EndIf
Next i
0858デフォルトの名無しさん
2006/07/06(木) 01:02:12For i = 1 To T
S = S * Exp(mu + sigma * normsrnd())
if(s < k){
u = u or 1;
}
Next i
質問内容が、さすがVBプログラマ。と言いたくなるような内容だな。
0859デフォルトの名無しさん
2006/07/06(木) 01:05:11クマー(AA略
0860デフォルトの名無しさん
2006/07/06(木) 01:28:280861デフォルトの名無しさん
2006/07/06(木) 01:42:38神きぼんぬ・・・
0862デフォルトの名無しさん
2006/07/06(木) 01:54:370863デフォルトの名無しさん
2006/07/06(木) 02:02:06857ので実行すると、目的関数である
CO = Exp(-r * T) * U * max2(0, S - K)
がなぜか0になってしまいます。
max2(a,b)は定義済みです。
宜しくお願いいたします。
0864デフォルトの名無しさん
2006/07/06(木) 02:03:43構文エラーとは、
;
とifのあとの{}です。
0865デフォルトの名無しさん
2006/07/06(木) 02:31:200866デフォルトの名無しさん
2006/07/06(木) 02:37:26お前が説明していない所がバグってる。
0867デフォルトの名無しさん
2006/07/06(木) 02:38:32CO = Exp(-r * T) * U * max2(0, S - K)
死ねよ。こんなこと説明していないだろ。わかるわけが無い。ばーか。
0868デフォルトの名無しさん
2006/07/06(木) 02:39:09どうせお前には何を言ってもわからん。
べ^−。
0869デフォルトの名無しさん
2006/07/06(木) 02:41:15じぶんでやれ。
べろべろばー
∩___∩
| ノ ヽ/⌒)
/⌒) (゚) (゚) | .|
/ / ( _●_) ミ/
.( ヽ |∪| /
\ ヽノ /
/ /
| _つ /
| /UJ\ \
| / ) )
∪ ( \
\_)
0870デフォルトの名無しさん
2006/07/06(木) 05:18:36Uが0なら0になるだろ
0871デフォルトの名無しさん
2006/07/06(木) 09:38:580872デフォルトの名無しさん
2006/07/06(木) 09:42:540873デフォルトの名無しさん
2006/07/06(木) 12:37:420874デフォルトの名無しさん
2006/07/06(木) 14:47:390875デフォルトの名無しさん
2006/07/06(木) 15:27:04かつ元の数値に戻せる簡単な方法があったら教えてください。
(例)
000001 → 916724 → 000001
000002 → 197537 → 000002
000003 → 721495 → 000003
0876デフォルトの名無しさん
2006/07/06(木) 15:38:230877デフォルトの名無しさん
2006/07/06(木) 15:39:270878デフォルトの名無しさん
2006/07/06(木) 16:00:03ハッシュで処理すればいいんじゃない?
0879デフォルトの名無しさん
2006/07/06(木) 16:15:39元の数を全部配列に記憶しておき、適当な乱数で6桁に変換すればいい。
元に戻すのは、配列の当該位置を参照するだけ。
0880875
2006/07/06(木) 16:30:47>>878
可逆でなくなったり、6桁以上になってしまいます。
>>879
元の数は0〜999999すべて発生するため
配列の確保や変換(シャッフル)の時間に問題が発生します。
0881デフォルトの名無しさん
2006/07/06(木) 17:24:220882デフォルトの名無しさん
2006/07/06(木) 18:02:51インストールは可能なんでしょうか?
0883デフォルトの名無しさん
2006/07/06(木) 18:14:18俺が実際に入れて使っているから可能
0884デフォルトの名無しさん
2006/07/06(木) 18:18:10フォームに
textbox * 2
commandbutton * 2
はって、以下のコード張る
Dim a As Long
Dim b As Long
Dim tmp As Long
Dim i As Long
Private Sub Command1_Click()
tmp = Int(Text1.Text)
Call Randomize(tmp)
a = Int(Rnd(0) * 100000)
End Sub
Private Sub Command2_Click()
For i = 0 To 1000
DoEvents
Call Randomize(i)
b = Int(Rnd(0) * 100000)
If a = b Then
DoEvents
Text2.Text = i
Exit For
End If
Next i
End Sub
0885デフォルトの名無しさん
2006/07/06(木) 18:18:59For i = 0 To 1000
を
For i = 0 To 999999
にしてくれ
0886デフォルトの名無しさん
2006/07/06(木) 18:21:43よろしくお願いします。
C:\Program Files\Microsoft Visual Studio\Common\Tools\VS-Ent98\Vanalyzr\VALEC.EXE
でユーザが取得できないというエラーでした。
その時はCDが1枚目で途中終了してしまいました。
ネットに接続したら上手く行くのでしょうか?
0887デフォルトの名無しさん
2006/07/06(木) 18:29:19http://www.google.co.jp/search?hl=ja&rls=GGLG%2CGGLG%3A2005-41%2CGGLG%3Aja&q=VALEC&lr=lang_ja
0888デフォルトの名無しさん
2006/07/06(木) 18:32:54ありがとうございます。
明日会社に出てから、さっそくやってみます。
0889デフォルトの名無しさん
2006/07/07(金) 06:46:28その中から正規表現で_data0602.lzhを
_*.lzhで取得するところまではできたんですが。
取得した値を
rc = bObj.W3get("-d C:\_data -o ")
に代入してダウンロードさせる事ができません。
どうすればよいかご教示願えませんでしょうか?
0890デフォルトの名無しさん
2006/07/07(金) 08:59:240891デフォルトの名無しさん
2006/07/07(金) 09:27:28tmp の値により a は一意にならないから
a から元の値を求めることはできない。
0892デフォルトの名無しさん
2006/07/07(金) 13:10:24○に0〜10の数字を入れた時に正解にしたいのですが、違うになってしまいます。
ところがアルファベットを入れると正解になります。
なぜかわかる人おしえてください。。
chk = ○
if chk = [0-10] then
msgbox "正解"
else msgbox "違う"
end if
0893デフォルトの名無しさん
2006/07/07(金) 13:49:33chk = 5
if ((0 <= chk) Or (chk <= 10)) then
msgbox "正解"
else
msgbox "違う"
end if
0894デフォルトの名無しさん
2006/07/07(金) 14:00:150895デフォルトの名無しさん
2006/07/07(金) 14:11:54OrじゃなくてAndだな。
0896892
2006/07/07(金) 14:12:300897デフォルトの名無しさん
2006/07/07(金) 14:27:10処理(100件/secとか)のログを「LOG.txt」に書き込む「wLOG.EXE」があります。
「wLOG.EXE」は「LOG.txt」を追記モードで開いてデータを書き込みます。
但し、「LOG.txt」にロックがかかっている場合、処理は行いますが
「LOG.txt」にデータを書き込みません。(書き込めない)
※「wLOG.EXE」は既製品なので修正できない。
※上述のように、「LOG.txt」がロック中「wLOG.EXE」は書込みを行ってくれませんが、
「LOG.txt」には"絶対に全てのログ"を書込むようにしたい。
○前提2
上とは別に「LOG.txt」を解析処理する「rLOG.EXE」があります。
これは定期的に(5秒おきとか)「LOG.txt」を「WORK.txt」にリネームし、
「WORK.txt」を解析処理します。
※リネームには Name "LOG.txt" as "WORK.txt" を使用
○疑問
・リネーム処理はファイル状況によって処理時間に違いがあるのでしょうか?
10KBと1GB、あるいは無数に断片化している場合など、どうなるのでしょうか?
・リネーム「Name "LOG.txt" as "WORK.txt"」の処理中のファイルの状態はどうなるのでしょうか?
ロック状態になるのでしょうか?
仮にロック状態になるとすると、前提1にあるようにロック中のログを欠落してしまいます。
よろしくおねがいします
0898デフォルトの名無しさん
2006/07/07(金) 15:16:41リネーム処理なんてディレクトリエントリを書き換えるだけなので一瞬。
リネーム中は、そのファイルに対して何も処理は出来ない。
また、そのファイルが処理中なら、リネームは出来ない。
0899デフォルトの名無しさん
2006/07/07(金) 15:36:54>リネーム処理なんてディレクトリエントリを書き換えるだけなので一瞬。
ですよね?ただ、上にそう言っても、
「一瞬だろうが0ではないから、そのタイミングで「LOG.txt」に対する書込みが来たらどうするんだ」
とか言って納得しないんですよ。
(仮にそのタイミング「LOG.txt」がロック状態だとしたら欠落するから)
MSか何かその辺りの仕様の記されたものってありますかね?(今のトコみつからない
リネーム ■ ■ (リネーム2回
ログ書き ■■■ ■
CPUの割当てがこうなら間違いないと思うんですけど
リネーム ||||| ||||| (リネーム2回
ログ書き ||||||||||||||| |||||
こんな感じだとしたらリネーム中のファイルの状態はどうなっているのか
0900デフォルトの名無しさん
2006/07/07(金) 15:46:58ディレクトリに数千〜数万ファイルあるとその書き込みにも数秒かかる(マジで)
あと、リネーム時のロック状態はネットワーク上のファイルとローカルファイルシステムでも動きが違う
0901デフォルトの名無しさん
2006/07/07(金) 15:50:36ログファイルのオープンはリトライしろとかロックファイルは別に持つとかそんな感じで
0902デフォルトの名無しさん
2006/07/07(金) 15:51:57同一フォルダ内には基本一か月分(30ファイル)です。
あって精々100ファイル程度かと
ファイルはローカルです。
0903デフォルトの名無しさん
2006/07/07(金) 15:53:52「wLOG.EXE」は既製品なので手を加えられないんですorz
0904デフォルトの名無しさん
2006/07/07(金) 15:54:22書き込み中のファイルはリネームなんて出来ない。そんなの数行ですぐ試せるだろ。
逆にリネーム中のファイルはオープン出来ない。そんなの数行ですぐ試せるだろ。
莫迦な「上」には昔本当に苦労したので、その辛さはよぉーーーーーーーーーーーく分かります。
めげないで頑張ってね。
ちなみに私の場合、例えばあるウィンドを開いていて、次に別のウィンドを最大化で開き、
その最大化したウィンドを最小化してアイコンにした場合、さっきのウィンドが下から現われるのは
お前のバグだ、とか色々言われました。
そんな「障害票」を100枚以上書かされたな。
0905デフォルトの名無しさん
2006/07/07(金) 16:00:11> 書き込み中のファイルはリネームなんて出来ない。そんなの数行ですぐ試せるだろ。
はい、実験済みです。
> 逆にリネーム中のファイルはオープン出来ない。そんなの数行ですぐ試せるだろ。
これが実験できないんですよ、
リネームは「Name "LOG.txt" as "WORK.txt"」でやってるんですけど、
これが一瞬でおわるので、どうしたものやら…
Name "LOG.txt" as "WORK.txt"
open "LOG.txt" for append as #FN
debug.print "open"
close #FN
これじゃ意味ないですよね?どうしたらいいでしょうか?
> 莫迦な「上」には昔本当に苦労したので、その辛さはよぉーーーーーーーーーーーく分かります。
> めげないで頑張ってね。
> ちなみに私の場合、例えばあるウィンドを開いていて、次に別のウィンドを最大化で開き、
> その最大化したウィンドを最小化してアイコンにした場合、さっきのウィンドが下から現われるのは
> お前のバグだ、とか色々言われました。
> そんな「障害票」を100枚以上書かされたな。
それはまた…
お互い苦労しますねww
0906デフォルトの名無しさん
2006/07/07(金) 16:20:270907デフォルトの名無しさん
2006/07/07(金) 16:24:08「AAA.Txt ←→ BBB.Txt」とかでひたすらリネームし続けるプログラムを動かしつつ、
その両方のファイルをオープンして何か書いて閉じ続ける別のプログラムも動かせ。
0908デフォルトの名無しさん
2006/07/07(金) 17:26:20・「LOG.txt」から「WORK.txt」にリネームして、「WORK.txt」を削除しつづけるプログラム
・「LOG.txt」を追記モード(append lock read write)で開いて、書いて、閉じるプログラム
上の二つを作って試したところ、
追記に失敗しているケースが多発しました。
要はファイルリネーム中は、ファイルに追記できないということですね。
そうすると
最初の前提1の
※上述のように、「LOG.txt」がロック中「wLOG.EXE」は書込みを行ってくれませんが、
「LOG.txt」には"絶対に全てのログ"を書込むようにしたい。
これは不可能ということになるのかな?
0909デフォルトの名無しさん
2006/07/07(金) 19:17:540910デフォルトの名無しさん
2006/07/07(金) 19:46:13リネームして消すって何だ??
0911デフォルトの名無しさん
2006/07/07(金) 20:26:49経緯が良く分からないので疑問にだけ答える。
> ・リネーム処理はファイル状況によって処理時間に違いがあるのでしょうか?
> 10KBと1GB、あるいは無数に断片化している場合など、どうなるのでしょうか?
リネームはファイルのメタデータに対する更新なので、ファイルサイズや
ファイル本体の断片化などは関係ない。
FATもNTFSも同様。
> ・リネーム「Name "LOG.txt" as "WORK.txt"」の処理中のファイルの状態はどうなるのでしょうか?
> ロック状態になるのでしょうか?
ファイルに対するアクションは、ファイルシステムがキューイングするので、
通常は、アプリケーションから見れば、「リネームされていない状態」か、
「リネームされた状態」のどちらかしかない。
「通常でない」場合というのは、そのアプリケーションが、物理ディスクの読み書きをする
アプリケーションの場合。
0912デフォルトの名無しさん
2006/07/07(金) 20:34:44普通はリネーム前に消す
0913デフォルトの名無しさん
2006/07/07(金) 20:42:080914デフォルトの名無しさん
2006/07/07(金) 23:18:34「WORK.txt」は解析処理後に削除するので、試験プログラムでも削除。
「LOG.txt」-リネーム→「WORK.txt」-解析処理→「WORK.txt」削除 の手順。
>>911
ありがとうございます。
「通常でない」場合は、「リネームされていない状態」「リネームされた状態」の他の状態があるとうこと?
…いや、ちがうか
>>913
「wLOG.EXE」が「LOG.txt」に書き込むときに、
「書き込むことができません。」っていうエラーが吐かれてましたので
0915デフォルトの名無しさん
2006/07/07(金) 23:27:19>「通常でない」場合は、「リネームされていない状態」「リネームされた状態」の他の状態があるとうこと?
通常のアプリケーションから見るとリネームされているが、ディスクには書き込まれてない状態
がありうる。Windowsは、ファイルのキャッシュだけでなく、メタデータも遅延書き込みを行う。
単なるアプリであれば気にする必要はない。
0916デフォルトの名無しさん
2006/07/07(金) 23:45:090917デフォルトの名無しさん
2006/07/08(土) 00:04:59wLOG.exeがどのような処理シーケンス(API呼び出し)でファイルに書き込んで
いるのかがわからなければ、そうはいえない。
>>914
そもそも、内部処理の仕様がわからないwLOG.exeを相手にした解析をするので
あれば、wLOG.exeが起動中に勝手にリネームしたり削除したりするのが間違い。
rLOG.exeは、起動単位ごとに、LOG.txtのどこからどこまでを解析したかを記憶
しておき、次回はその続きから解析するようにすべき。(シークする)
例えばUnixのデーモンプロセスなどは、ログファイルを切り替える通知を外部から
受け付ける機能を初めから実装している。wLOG.exeがそのような機能を持って
なくて、なおかつ内部構造が不明なのであれば、上記のような方法を取るしかない。
0918デフォルトの名無しさん
2006/07/08(土) 00:34:14Windowsの正規手順を無視したディスクアクセスってことかな?
そんなアプリあるの??
>>916
そう思ってましたw
でも処理ぶん回す試験PG作ったら何かエラーでたんですよorz
>>917
「ログファイルを切り替える通知を外部から 受け付ける機能」
は持っていなさそうなので、
> rLOG.exeは、起動単位ごとに、LOG.txtのどこからどこまでを解析したかを記憶
> しておき、次回はその続きから解析するようにすべき。(シークする)
の方法にするとすると、
LOG.txtの読み込みはシーケンシャルリードでは多少時間が掛かる…
(10M超のファイルで全行ループで1.数Secかかった。これはちょっとかかり過ぎ。
ランダムアクセスが可能かどうか、調べてきます…(やったことないもんで
0919デフォルトの名無しさん
2006/07/08(土) 00:40:13> Windowsの正規手順を無視したディスクアクセスってことかな?
そういうこと。たとえばデフラグとかがそういうものに該当する。
0920デフォルトの名無しさん
2006/07/08(土) 00:40:170921デフォルトの名無しさん
2006/07/08(土) 00:50:10どんなエラーが?
>>919
ちゃんとデフラグAPIがあるんだが。
0922デフォルトの名無しさん
2006/07/08(土) 00:56:28>Windowsの正規手順を無視したディスクアクセスってことかな?
>そんなアプリあるの??
別に正規手順を無視しているわけではない。Windowsのキャッシュマネージャと
ファイルシステムを介さずにディスクにアクセスするようなアプリだ。
具体的には、Win32APIのCreateFileで直接Volumeをオープンするようなアプリ。
0923デフォルトの名無しさん
2006/07/08(土) 06:31:57下記みたいにやったのですがうまくいきませんでした。
Data.Files(1)の扱い方が悪いのかなと思うのですが、どなたかご教授頂けないでしょうか?
Private Sub Form_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
Shell "cmd /k copy /b Data.Files(1) + b.txt c.txt", vbNormalFocus
End Sub
0924デフォルトの名無しさん
2006/07/08(土) 11:11:35Shell "cmd /k copy /b " & Data.Files(1) & " + b.txt c.txt", vbNormalFocus
0925デフォルトの名無しさん
2006/07/08(土) 11:49:47ロックされてるファイルをOpenしようとしたときと同じエラーメッセージだった
0926デフォルトの名無しさん
2006/07/08(土) 11:51:24やっぱ、シーケンシャルに読むしかない?
0927デフォルトの名無しさん
2006/07/08(土) 12:37:330928デフォルトの名無しさん
2006/07/08(土) 12:44:12つまりリネーム中でロックされてたのか。
>>926
あるよ。
0929デフォルトの名無しさん
2006/07/08(土) 12:54:240930デフォルトの名無しさん
2006/07/08(土) 13:34:290931デフォルトの名無しさん
2006/07/08(土) 13:57:19処理対象分だけ切り出して、新しいファイルとして保存するみたいな。
Cなら20行もありゃできそうだ。
0932デフォルトの名無しさん
2006/07/08(土) 19:08:38信頼性が欲しいんだと思うよ
0933デフォルトの名無しさん
2006/07/08(土) 21:32:43tmpの値により一意になるはずなんだけど・・・
俺の環境じゃなる
0934デフォルトの名無しさん
2006/07/09(日) 12:01:56どんな手法がありますか?
Open〜for Randomじゃ無理っぽいんですけど
0935デフォルトの名無しさん
2006/07/09(日) 13:20:07いや 無理だよ
長さが変動する以上 ランダムアクセス じゃ無理
テキスト丸ごと読み込んで 先頭から解析するのが 一番簡単かも
0936デフォルトの名無しさん
2006/07/09(日) 13:53:32バイナリとして読んでStrConvすればいいんだから。(S-JISの2バイト文字の
区切りは意識する必要はあるけど。)
任意のm文字目からアクセスしたいとか、n行目からアクセスしたいとかいった場合は
頭から読まないと無理だろうけど。
まあ926はそういう意味で言ってるんだろうから答えはやっぱり無理ということになるのかな。
0937デフォルトの名無しさん
2006/07/09(日) 14:18:09明らかに任意レコードへのランダムアクセスのつもりで聞いてるから無理。
0938デフォルトの名無しさん
2006/07/09(日) 14:59:24最初はLOG.txtを全部WORK.txtにコピーする。
次はLOG.txtのWORK.txtのサイズ+1からさ以後まで全部コピーする。
rLOG.exeはWORK.txtを対象として解析する。
前にも言ったけど、VBでやるのがパフォーマンス的に厳しいなら、Cで書けばいいんじゃない。
0939デフォルトの名無しさん
2006/07/09(日) 15:14:59そりゃ一旦全部よんでリストに置き換えるとか、
インデックスを作るとか、配列にぶち込むとか、
そういう手法ならいくらもあるし、そんなのだれでも思いつくでしょ。
0940デフォルトの名無しさん
2006/07/09(日) 15:41:45いやいやそういう話でしょ。
10MBのファイルを処理した後に20MBのファイルを処理するときに10MB分
読まなきゃならない。次に30MBのファイルを処理するときに20MB分よまなきゃ
ならない。
そうするんじゃなくて、rLOG.exeは常に解析対象ファイルの初めから処理する
ように作っておいて、処理対象のファイルは別途切り出せって話。
0941デフォルトの名無しさん
2006/07/09(日) 15:44:06読み込みながら解析すればいい。
0942デフォルトの名無しさん
2006/07/09(日) 15:58:16のことを、可能な限り効率的に行うための手法の話であって……
0943デフォルトの名無しさん
2006/07/09(日) 16:00:010944デフォルトの名無しさん
2006/07/09(日) 16:06:270945デフォルトの名無しさん
2006/07/09(日) 16:07:140946デフォルトの名無しさん
2006/07/09(日) 16:36:10ちゃんと聞かないと、全く的外れな回答が続くな。
0947デフォルトの名無しさん
2006/07/09(日) 16:57:36データベース使えば簡単なんじゃないの?
freeのだったら、MySQL、PostgreSQL、SQLite、MS SQL 2005 Express
有料のものなら規模に応じて、Access、桐、Oracle
あとはVBとかで好きに加工すればいいでしょう
0948デフォルトの名無しさん
2006/07/09(日) 17:02:33何やりたいかは本人も良く分かってるし、アドバイスしてる奴も一部を除いてよく分かってるでしょ。
0949デフォルトの名無しさん
2006/07/09(日) 17:10:050950デフォルトの名無しさん
2006/07/09(日) 19:17:590951デフォルトの名無しさん
2006/07/09(日) 19:24:40と読むしかないと思いますが。。
仮に本当は同一人物による関連する質問だとしてもね。
最近こういう文章を文面どおり読む能力がないというか、
自分の想像妄想と一緒にしちゃって区別がつかない人って増えてるよね。
0952デフォルトの名無しさん
2006/07/09(日) 19:44:590953926
2006/07/09(日) 19:49:40897の疑問と926の疑問は別ですけど、
897の問題からの派生で926の質問があります。(経緯は>>897->>926のログを…
また、926は、>>937の言うように、任意レコードへのランダムアクセスのつもりで言ってます。
>>932
信頼性を優先し、ある程度の速度も欲してます。
上の方にも書いてますけど、10M超のファイルで1.数Secかかってます。
これをせめて0.5Sec以下にもっていきたい。
>>938
この手法は興味深いので、ちょっと検討してみたます
>>947
まあ、「wLOG.EXE」がDBでインターフェースとってくれればいいんでしょうけど、
それは無理なので…
0954デフォルトの名無しさん
2006/07/09(日) 21:08:470955デフォルトの名無しさん
2006/07/09(日) 21:25:55「やりたい事」と「やる方法」を間違えてる様な気が。
0956デフォルトの名無しさん
2006/07/09(日) 21:43:58ハズカシー
0957デフォルトの名無しさん
2006/07/09(日) 22:17:02いい方法があるなら、教えてあげなよ
0958デフォルトの名無しさん
2006/07/09(日) 22:20:56根本的なところの指摘なんだけどさ、例えば5秒おきに10MBのログを解析するって、
1行80byteだとすると1秒あたり25000行の解析になるんだよ。
VBで大丈夫なの?
0959デフォルトの名無しさん
2006/07/09(日) 22:29:06>>951 は恥ずかしくないよ。正論。
>>952 はちょっと恥ずかしいw
0960デフォルトの名無しさん
2006/07/09(日) 22:37:13自演乙。
0961デフォルトの名無しさん
2006/07/09(日) 22:42:190962デフォルトの名無しさん
2006/07/09(日) 23:04:3036文字程度で。
0963926
2006/07/09(日) 23:53:211日最大(?)40000行くらいいくログで、
その内処理が必要なのは20000行弱(1行の処理は0.23Secくらいかかる)
それで、40000行くらいの中から、処理対象行数を走査するのに1.7Secくらい掛かりました。
タイマーは3秒〜5秒を想定しているので、いちいち頭から読むのはかかり過ぎかなと…
>>955
どういう方法がいいでしょうか?
0964デフォルトの名無しさん
2006/07/09(日) 23:59:50んじゃ、起動しっぱなしにしとけば?
そうすりゃ先頭からシークする必要ない。
0965デフォルトの名無しさん
2006/07/10(月) 00:35:03readモードでOpenしっぱなしにするって言うことですか?
ログの読み込みは
do until EOF(fileno)
line input #fileno strline
loop
ッテ感じでやってますけど、これを定期的にコールする?
0966デフォルトの名無しさん
2006/07/10(月) 08:42:46http://www.gluesoft.co.jp/wlog/Update.aspx
0967デフォルトの名無しさん
2006/07/10(月) 09:07:03いや、それじゃないww
例えで「wLOG.EXE」っていってるだけw
0968デフォルトの名無しさん
2006/07/10(月) 13:32:46お聞きしたいことがあるのですが、VBで1÷7を計算して、
小数点以下50桁まで表示させたいのですが、
どのようにすればよろしいのでしょうか?
0969875
2006/07/10(月) 13:47:51筆算をプログラム化する
途中で同じ数値になったら循環小数にする等の処理を加える
x = 10
For i = 1 To 50
. Debug.Print x \ 7;
. x = (x Mod 7) * 10
Next i
0970デフォルトの名無しさん
2006/07/10(月) 14:49:31そのdo 〜 loop内に解析処理そのもの、あるいは読み込んだログを
メモリ上に保存するのなら、その通りだ。
0971デフォルトの名無しさん
2006/07/10(月) 15:11:00Open FilePath For Input As #intFileNo
Do Until EOF(intFileNo)
Line Input #intFileNo, strLine
'対象行判定
Loop
Close #intFileNo
って感じでやってますけど、
そもそもreadモードでOPENしっ放しができない…
OPEN中に書き込もうとするとエラーになる。
>>964の意味を下のように解釈したんだけど、違うのかな??
<<メイン>>
�@起動 ファイルオープン
�Aタイマー開始 <<Read処理>>
�B終了 ファイルクローズ
<<Read処理>>
Do Until EOF(intFileNo)
Line Input #intFileNo, strLine
'対象行判定
Loop
EOFで処理終了。
次回<<Read処理>>コール時は、
前回EOF位置からLineInputが開始される。
0972デフォルトの名無しさん
2006/07/10(月) 15:18:24> んじゃ、起動しっぱなしにしとけば?
> そうすりゃ先頭からシークする必要ない。
これの意味が分からない。
「rLOG.EXE」は起動しっ放しです。タイマーで数秒置きに解析処理を実行します。
ファイルOPENしっ放しだと「wLOG.EXE」がログを落としてくれないので、都度Closeしなきゃならない。
そうするとシークする必要があるような気がする。
どうやったらシークを省いてダイレクトに増分から読み込めるのでしょうか???
0973デフォルトの名無しさん
2006/07/10(月) 16:17:550974デフォルトの名無しさん
2006/07/10(月) 16:23:45>ファイルOPENしっ放しだと「wLOG.EXE」がログを落としてくれない
そんな重要なことは最初に書けよ。
だったら処理対象範囲のログを切り出すしかないだろ。
0975デフォルトの名無しさん
2006/07/10(月) 16:24:44wLOG.EXEはログを落とさなくなるのか?
だったら解析不能なんじゃね?
0976デフォルトの名無しさん
2006/07/10(月) 16:36:40wLOG.EXEがどんな場合でもログ吐いてくれるようにしてくれてないとダメなんだって
0977デフォルトの名無しさん
2006/07/10(月) 16:41:19取得しちゃうの?なにそのくそしよう
0978デフォルトの名無しさん
2006/07/10(月) 16:56:44ファイルロック中はダメっていうのは試験済みで>>897で書いてますけど、
「Open FilePath For Input As #intFileNo」 でダメっていうのは今日試験したので…
「Open FilePath For Input As #intFileNo」で開いたファイルを
メモ帳で更新すると更新できるので、Readモードでは開けているってことかな?
ただ、>>971の目論見は不可能だったので、どのみちダメか…
>>973
>>975
やっぱ、切り出すためのOPENでも一緒ですかね
実運用の頻度+αで、リネームでの書き込みエラー発生をもう少し調べてきます。
OPENよりはリネームのが早いと思うので…
0979デフォルトの名無しさん
2006/07/10(月) 16:58:49ごめんなさい。使ってたエディタ(EmEditorF)が悪かったみたい。
メモ帳ではOPEN中の更新できた。
0980デフォルトの名無しさん
2006/07/10(月) 17:04:49デフォルトがLock Read Writeじゃなかった?
0981デフォルトの名無しさん
2006/07/10(月) 17:17:31えええええ?
書き込み権のみならず、読み込み権の排他ロックまで獲得しちゃうの?
なんだそりゃ。
0982926
2006/07/10(月) 17:19:14「Seek #intFileNo, lngPos」で出来ました。
lngPosは前回読込終了位置 「lngPos = Seek(intFileNo)」で記憶しとく。
これでシークタイムは高速化できました。
ただ、結局 「Open FilePath For Input As #intFileNo」 でダメだったから意味ないかな…
0983デフォルトの名無しさん
2006/07/10(月) 17:28:490984926
2006/07/10(月) 17:32:05Open FilePath For Binary Access Read Shared As #intFileNo
ともにダメ…
0985デフォルトの名無しさん
2006/07/10(月) 17:43:000986デフォルトの名無しさん
2006/07/10(月) 17:46:580987デフォルトの名無しさん
2006/07/10(月) 17:59:13ファイルIOくらいなら書けると思うけど、Cは経験浅いので。
あとなるたけVBでやりたい。
>>986
FileSystemObjectは分かるけど、APIはどんなのあるか知らないのです。
けど、FSOにしてもAPIにしてもOpenステートメントと違うのかな??
0988デフォルトの名無しさん
2006/07/10(月) 18:11:31言ってんだったらもうあきれめれ。
0989デフォルトの名無しさん
2006/07/10(月) 19:13:11OpenFile ってそのものの名前のAPIがあるよ。
これなら、非常に細かく制御出来る。
0990デフォルトの名無しさん
2006/07/10(月) 21:01:32#include <stdio.h>
int main(int argc,char *argv[]){
FILE *fp;
char line[256];
char c;
if(argc!=2){
exit(1);
}
if((fp=fopen(argv[1],"r"))==NULL){
exit(1);
}
printf("%s開きました\n",argv[1]);
printf("終了しますか?\n");
scanf("%c",&c);
fclose(fp);
return(0);
}
とりあえず、こんなんで試したけど。ダメだったよ。
open中はログ書けない。>>988のいう通りかな。
こっち方面では諦めるしかないのか…
0991デフォルトの名無しさん
2006/07/10(月) 21:32:35調べたらSWP_NOACTIVATEを見つけて以下のコードを書きました。
でも期待通りの動きをしてくれません。
最前面にはなってますが必ずアクティブになってしまいます。
何がいけないのさっぱりです。
よろしくお願いします。
Private Sub Form_Load()
Timer1.Interval = 3000
Me.Hide
End Sub
Private Sub Timer1_Timer()
If Me.Visible Then
Me.Hide
Else
Call SetWindowPos(Me.hWnd, HWND_TOPMOST, Me.Left, Me.Top, Me.Width, Me.Height, SWP_NOACTIVATE Or SWP_NOSIZE Or SWP_NOMOVE)
Me.Show
End If
End Sub
0992デフォルトの名無しさん
NGNG0993デフォルトの名無しさん
2006/07/11(火) 02:09:43現在ブック内に空シートを作成し、Excel側の印刷設定にて両面印刷を指定し、
2つのシートをselectしprintoutする事で両面印刷を行っております。
これをVBでの「Printer.Duplex = 2」のようにコード側(?)で設定してあげる方法はないでしょうか?
ご存知の方やそのヒントになりうる検索ワードをご存知でしたら教えてください。
0994デフォルトの名無しさん
2006/07/11(火) 10:17:310995デフォルトの名無しさん
2006/07/11(火) 10:36:52何が?
0996デフォルトの名無しさん
2006/07/12(水) 02:12:520997デフォルトの名無しさん
2006/07/12(水) 02:19:040998デフォルトの名無しさん
2006/07/12(水) 05:19:380999デフォルトの名無しさん
2006/07/12(水) 10:17:031000デフォルトの名無しさん
2006/07/12(水) 10:18:22(; Д )
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。