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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2006/05/04(木) 02:55:26
ここは Visual Basic 〜6.0 の質問スレです。
質問者は使用している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
Google
http://www.google.co.jp/
※「まず自分で調べる」クセを身につけよう。
0002デフォルトの名無しさん2006/05/04(木) 02:56:46
過去ログ
  Part 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:19
  Part16 http://pc3.2ch.net/tech/kako/1034/10343/1034302532.html
  Part17 http://pc3.2ch.net/tech/kako/1036/10361/1036154952.html
  Part18 http://pc3.2ch.net/tech/kako/1038/10381/1038103769.html
  Part19 http://pc3.2ch.net/tech/kako/1039/10398/1039859691.html
  Part20 http://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:34
  Part31 http://pc5.2ch.net/test/read.cgi/tech/1073732636/
  Part32 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:14
  Part46 http://pc8.2ch.net/test/read.cgi/tech/1138975113/
  Part47 http://pc8.2ch.net/test/read.cgi/tech/1141320612/
0006デフォルトの名無しさん2006/05/04(木) 03:17:42
http://www.microsoft.com/japan/msdn/vbasic/support/vistasupport.aspx
Visual 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:15
乙。
0008デフォルトの名無しさん2006/05/04(木) 05:54:45
前スレで遅いと叩かれていたけど、VC厨は比較して言ってるのか?
インタプリタって釣ってるだけだよな・・・。
0009デフォルトの名無しさん2006/05/04(木) 06:22:20
新しいP2Pのテスター求む
http://tmp6.2ch.net/test/read.cgi/download/1146675993/
0010デフォルトの名無しさん2006/05/04(木) 10:41:31
結局前スレの最後のアレ、何だったんだ。
遊んでただけか?
0011デフォルトの名無しさん2006/05/04(木) 10:58:13
>>10
VC++覚えたばかりの連休厨房でしょ
まあ、いずれにせよ

> 四.荒らしは相手しない。
0012デフォルトの名無しさん2006/05/04(木) 11:01:15
>>11
サンクス。
0013デフォルトの名無しさん2006/05/04(木) 11:04:01
このスレも自分が見えてない奴が多いなあ。
いや、一人で八面六臂の活躍wをしているのかもしれんが。

どうみても「必死」なのはVB擁護している奴の方でしょ。
必死が悪いかどうかは別にして。

VBからかってる奴は文字通り「からかってる」んだよ。
つまりネタでやってるの。当たり前だろw

人間ってのはコンプレックスを突かれたときに過剰反応するもんなんだよ。
自分に自信があるか、あるいは逆に自分の無能さを十分に自覚していれば
VB使いが低能だ、みたいな中学生みたいな煽りは無視できるでしょ?

いちいち反応しないと気がすまないのは図星を突かれてるからだ。
悪いけど実際問題VBに固執している奴の大半はVBが便利だからではなく
VBしか使えないから固執しているんだから、まずそれを自覚しろって。

そして下らない煽りにいちいち反応すんなよ。餓鬼じゃあるまいし。
0014デフォルトの名無しさん2006/05/04(木) 12:01:33
VBの凄いところはIDEだと思う。
eclipseとか使うけど、VBほどの使い勝手のよさを感じられない
まぁ、「慣れ」かも知れないけど…
0015デフォルトの名無しさん2006/05/04(木) 12:16:13
VBしか使えないから固執してる図星野郎。
それが俺っち。

一応プログラマやってます。
派遣社員だけど。
0016デフォルトの名無しさん2006/05/04(木) 12:17:33
10倍も20倍も速いVC++で組めなくても、食っていければいいや。
0017デフォルトの名無しさん2006/05/04(木) 12:22:07
>>16
その考え方は正しいすな。
目的を達成できる安くて早い手段を採用すればよい。
0018デフォルトの名無しさん2006/05/04(木) 12:25:53
サンデーpな漏れもVBしか使えんけど目的のものが作れればそれでいいや
0019デフォルトの名無しさん2006/05/04(木) 12:27:42
そうだね。
MSXの時代は、BASICで作られたプログラムより、
C言語で作られたプログラムのほうが見違える速さで、
憧れの的だったけど、今となっては別にVBで十分な場合多いし。
0020デフォルトの名無しさん2006/05/04(木) 12:31:47

すみません、便乗して質問なのですが
どの言語から始めていいのかわかりません。

最終的にはバリバリの3Dゲームを作りたいのですが
VBでも十分でしょうか?
0021デフォルトの名無しさん2006/05/04(木) 12:33:49
>>20
今から敢えてVBを選択する意味はないです。
DirectX使いたいなら素直にunmanagedなVC++いっとけ。
0022デフォルトの名無しさん2006/05/04(木) 12:35:09
>>20
はじめはともかく最終的にはVBではキツいでしょう。
0023デフォルトの名無しさん2006/05/04(木) 12:36:40

レスありがとうございます。
最終的にはVC++を習得するとして
現時点で、入門用としてVBを使うことは推奨されることなのでしょうか?
0024デフォルトの名無しさん2006/05/04(木) 12:45:26
>>23
>>21
0025デフォルトの名無しさん2006/05/04(木) 12:45:41
>>23
階段も1段ずつだから、いいと思う。
0026デフォルトの名無しさん2006/05/04(木) 12:48:15
>>25
だからこそ一発目にトリッキーな言語を交ぜるのは推奨しないす。
0027デフォルトの名無しさん2006/05/04(木) 12:49:03
>>23
まあ、VB6でも使えることは使えるけどね >DirectX

このスレでこんなこと言うのもなんだが、
3Dゲームで画面描画は全部DirectX使うんなら
あえてVB6を使う利点はないと思うよ。
0028デフォルトの名無しさん2006/05/04(木) 12:49:31

ありがとうございます。
それではVBとVC++の間を取ってDelphiから始めたいと思います。
皆さんの意見は大変参考になりました。
0029デフォルトの名無しさん2006/05/04(木) 12:50:12
>>26
でも、ピッチの広い階段は大変だぞ。
入門だからまずアプリが作れたという満足感とか楽しさを進める
0030デフォルトの名無しさん2006/05/04(木) 12:52:00
>>29
んじゃC#かDelphiで。
0031デフォルトの名無しさん2006/05/04(木) 12:53:22
かつてMSX-BASICを楽しんでいた中学生の頃、
数当てゲームを作れた満足感より、
スプライトを使って作れたアーチェリーゲームのほうが、
満足感はかなり高かったなぁ。
0032デフォルトの名無しさん2006/05/04(木) 12:57:43
でも、スプライト衝突判定で、

スプライトA 自機
スプライトB 自機の玉
スプライトC 敵機

どのスプライト同士が衝突しても同じ処理しか出来なくて、
挫折したなぁ。

スプライトに一応番号はあるんだけど、
「この番号とこの番号が衝突したら」っていう判定が出来なかった。
0033デフォルトの名無しさん2006/05/04(木) 12:59:22
おっさん、おっさん、帰ってこい。
0034デフォルトの名無しさん2006/05/04(木) 13:01:45
どのおっさんを呼び出してるの?
0035デフォルトの名無しさん2006/05/04(木) 14:55:50
今はC#使ってるけど、ぶっちゃけクラスはVBAで覚えた。
0036デフォルトの名無しさん2006/05/04(木) 16:10:45
>>35
俺も。
0037デフォルトの名無しさん2006/05/04(木) 19:21:30
Delphiっていうか某ランド系はDirectXとの相性が悪いって聞いた事あるな
実際どうがか知らんけど
0038デフォルトの名無しさん2006/05/04(木) 21:09:09
そういや、VisualStudio6.0ってまだ売ってるの?
.NetになってVB使う意味は無くなっちまったよ。

つーことで、環境が許すときはいまだにVB6.0、
.NetのときはC#だな。
0039デフォルトの名無しさん2006/05/04(木) 21:17:11
>>38
デッドストックがどこかにある程度だろ。2、3代前の開発環境だろ
>.NetになってVB使う意味は無くなっちまったよ。
これは同意。
0040デフォルトの名無しさん2006/05/04(木) 22:05:00
VB可愛いよVB
0041デフォルトの名無しさん2006/05/04(木) 22:30:50
.Netってそんなにいいの?
0042デフォルトの名無しさん2006/05/04(木) 22:33:17
>41
Webアプリケーションだと天国と地獄ほどの違いがあるな。
0043デフォルトの名無しさん2006/05/04(木) 22:46:18
>>42
VBでWEBアプリなんて書けたっけ?
0044382006/05/05(金) 00:11:49
>>43
ASP.NETでな。

とりあえず、イミディエイトだけでも少しはましにしないと
6.0以降はeclipseにも及ばんなー。
VCでしか物作らないMS様はそんな事きにしませんか。
0045デフォルトの名無しさん2006/05/05(金) 22:55:52
>43
VB6.0ならば「IISアプリケーション」と言う名前の機能で作成できる。
0046デフォルトの名無しさん2006/05/05(金) 23:45:51
>>45
へぇ〜
あれがそうなのか。
0047デフォルトの名無しさん2006/05/08(月) 08:02:56
FunctionやSubプロシージャのアドレスをVBのデバッガで調べ、EXEを作りVidualstadioのC++のデバッガで使いたいです。
そこでAddressOf演算子でアドレスを表示させ、それを使おうと考えました。
しかしAddressOf演算子はDLLの引き数にしか使えないようです。
なにかよい方法無いですか?

0048デフォルトの名無しさん2006/05/08(月) 08:08:10
>>47
> しかしAddressOf演算子はDLLの引き数にしか使えないようです。

DLL の引数、ではなく、関数の引数、ではなかったか?
ダミーの関数をつくってその引数にすればよかったと記憶している。
違ったらごめん。
0049デフォルトの名無しさん2006/05/08(月) 08:33:31
>>47
ObjPtr って駄目だっけ?
0050デフォルトの名無しさん2006/05/08(月) 20:05:43
VB6.0 SP3を使っています。

すでにアプリからExcelで帳票が出力できている状態で、
これをPDFでも出力したいなぁってことで1から組むのではなく
単純にxlsファイルをPDF変換して出力しようと思っています。
調べてみたところシェアならActive Reportsで行けそうな感じなのですが
フリーでこういったDLLやOCXあるよーって方います??
0051デフォルトの名無しさん2006/05/08(月) 20:29:47
>>50
まずSP6をあてろ。
0052デフォルトの名無しさん2006/05/08(月) 21:00:10
>>50
アクロバットで出来るんじゃないの。
0053472006/05/08(月) 22:02:35
>>48,49
原因がわかりました。
アドレスを得ようとした関数がクラスモジュールにあると駄目なようです。
Basファイルにある関数のアドレスなら取れました。
当初の目的から逸れますが、デバック関数をBASに作り、
目的の関数の前後でコイツを呼び出して何とかしようと考えています。
0054デフォルトの名無しさん2006/05/08(月) 22:54:06
C++のデバッガ使うなら、VBでシンボリックデバッグ情報を出力しろよ。
0055デフォルトの名無しさん2006/05/09(火) 15:21:09
>>53
クラスをインスタンス化して無いとか言う落ちじゃないのか?
0056デフォルトの名無しさん2006/05/09(火) 15:45:03
そろそろ時期OSも出る頃だし次の案件からVB6をやめてVS2005にしようか悩んでいる。
VB6ってVistaでも開発環境できるのかな?
それよりも動かせるのかな?
何よりも自分がVS2005が使えるのか・・・

VB6しか触った事が無い人でもVS2005って扱えるんでしょうかね?
0057デフォルトの名無しさん2006/05/09(火) 16:01:30
お前には無理だ
0058デフォルトの名無しさん2006/05/09(火) 16:09:13
>>56
Vistaはまた遅れるらしいよ。
また、Vista上でVB6アプリは動く様にするらしい。
まぁそんな事しなくても、VirtualPC上の2000で動かせばいけど。
0059デフォルトの名無しさん2006/05/09(火) 16:29:27
>>57
やっぱそうだよな。
それ以前に相談したらそんな暇あるならさっさと案件進めろと言われた・・・

>>58
安心した。
0060デフォルトの名無しさん2006/05/09(火) 18:21:14
ASPだけど、VBScriptだからこっちで質問していいのかな・・

開発環境
 サーバ: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:50
とりあえず、ASPからExcelやAccessは操作するなって
0062602006/05/09(火) 22:11:34
>>61
MSも同じこといってるみたいですね・・・
ttp://support.microsoft.com/kb/257757/ja/

さすがMS。。。。
0063デフォルトの名無しさん2006/05/09(火) 22:27:51
>62
MSの責任ではなく、サーバーでの使用を保証していないものを
使おうって発想の方が遥かに責任が重いかと。
0064デフォルトの名無しさん2006/05/09(火) 22:54:17
どうせ設定が悪いだけなんだろうけど、
そういう危なそうなことをしようとも思わないので、
なにが原因か調べる気が起きない。
0065デフォルトの名無しさん2006/05/10(水) 00:04:29
>>64
「設定が悪い」のではなく、そんな使い方は
MSの「想定の範囲外」なので、
原因究明なんて無意味&無駄。
0066デフォルトの名無しさん2006/05/10(水) 00:59:41
>>59
また荒れそうな話するけど
「そんな暇あるならさっさと」っていうのはこの件に関してはやばいな。
将来確実に直面する問題を先送りにすればするほどあとで困るのに。
(先取りしすぎてもリスクがあるが、今はそう言う時期でもないだろう)
VB6の次はVB.NETにする予定があるなら、出来るだけ早いうちから
ちょっとずつ移行しておいたほうがいいよ。「お前には無理」かどうかの
調査にもなるし。
けっきょく仕事はVB.NETじゃなくてJavaに移行したとかいうときでも
完全に無駄にはならんだろう。

あとVB6自体はVistaで動いても、他社製のocxなんか使うならそっちの対応も必要だ。
>>58の最後の提案でいいようなきも駿河w
0067デフォルトの名無しさん2006/05/10(水) 10:04:34
>>66
MSは、VirtualPC
ttp://www.microsoft.com/japan/windows/virtualpc/default.mspx
じゃなくて、VMWareを買収して欲しかったなー。
0068デフォルトの名無しさん2006/05/10(水) 10:50:15
>>67
VMWareだと、旧OSの為のDisplayドライバやチップセットドライバが必要になるけどそれで良いのか?
VirtualPCだと440BXにS3-Trio64Vだから結構古いOSでもドライバが用意されてる
0069デフォルトの名無しさん2006/05/10(水) 11:16:22
>>68
そうなんだ。じゃぁVPCでいいや。
しかし「440BXにS3-Trio64V」て、まさに昔使ってたPCだ。w
0070デフォルトの名無しさん2006/05/11(木) 19:28:25
VBプログラマ質問スレ(6.0以前) Part48
http://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
>>70
どの部分でエラーが出てるのかが分からないけれど、

Dim fso as Object
Dim f as Object

にすればいいのかな?

0072デフォルトの名無しさん2006/05/11(木) 21:33:40
>>70
どこから移動してきたってぇ???


それはさておき、そのスクリプトは
どこから起動した?
ブラウザ?それとシェル?
0073デフォルトの名無しさん2006/05/11(木) 21:46:26
>>70
"D:\"はフォルダじゃなくてドライブな気がするが
0074デフォルトの名無しさん2006/05/11(木) 22:09:12
>>70
ルートはフォルダじゃないから
ドライブの容量見たければ
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
>>71
エラーは「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:19
>>77
System Volume Information って全部にあるな・・・
0079デフォルトの名無しさん2006/05/12(金) 00:41:32
>>78
リムーバルディスクとか
0080デフォルトの名無しさん2006/05/12(金) 01:43:54
「書き込みできません」ってなんだっけなぁ?
自分の出たことあるきがするんだけど思い出せない。
なんでこのエラーメッセージやねん!って突っ込んだ気がするけど。
よく考えれば、あぁ。そういうことかと思った気がするんだけど。んー?
0081デフォルトの名無しさん2006/05/12(金) 09:58:39
「System Volume Information」フォルダがあるドライブ=ファイルシステムがNTFS
0082デフォルトの名無しさん2006/05/12(金) 10:36:05
>>81
FAT16にもFAT32にもあるんだけど。
0083デフォルトの名無しさん2006/05/12(金) 10:49:51
「System Volume Information」フォルダがあるドライブ=NTFSを使うOSでマウントしているorしていたことがある
0084デフォルトの名無しさん2006/05/12(金) 11:38:50
IE6でマウスで選択した文字列を検索できるようにしたいのですが、
keyword=の<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
>>75
マウスは動かせないけど、こんなのを応用してみてはどう?
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:11
素直にバッチファイルを使えばいいだろ。
0087デフォルトの名無しさん2006/05/13(土) 12:37:07
ちょいと質問
VBでオブジェクトをCollectionにぶち込むのと リスト構造でオブジェクトを持つのでは どっちが効率がいいの?
0088デフォルトの名無しさん2006/05/13(土) 12:49:13
>>87
意味不明。なんか頭の悪い質問だな。
マウスによる操作とキーボードのどっちが効率がよいかは
「何をするか」によるだろうに。
0089872006/05/13(土) 13:03:13
>>リスト構造
ごめん ListBox の事じゃなくって 双方向リンクリストの事だ
説明足んなくてすまん
0090デフォルトの名無しさん2006/05/13(土) 13:19:09
>>87
どんな状態が「効率が良い」と思ってるのか。
コレクションだろうがリンクリストだろうが、
アルゴリズム次第でどうとでもなるし。
0091デフォルトの名無しさん2006/05/13(土) 14:21:46
使わないコンポーネントや参照設定にチェックを入れている場合、
インストーラ作成時に無駄にDLLやOCXが梱包されること以外に、
目に付くような弊害って何かありますか
0092デフォルトの名無しさん2006/05/13(土) 14:35:58
>>91
そもそも、何でそんな事したいの?
0093デフォルトの名無しさん2006/05/13(土) 14:54:09
>>82
その場合、削除が可能なはず。
NTFSドライブに存在するSVIフォルダは削除不可能、閲覧不可能なただのゴミ。
0094デフォルトの名無しさん2006/05/14(日) 05:23:26
最近の計測機器を制御するソフトをみてみると
圧倒的にVisual Basicが多いのですが。

なんで?
0095デフォルトの名無しさん2006/05/14(日) 09:51:32
簡単だから
0096デフォルトの名無しさん2006/05/14(日) 11:12:19
>>94
同じ機能のソフトを、生CとVBとVC++とJavaとアセンブラで書いてみやぁ。
0097デフォルトの名無しさん2006/05/14(日) 11:23:55
本当はそういう分野にはVBは向いてないんだけどね。

例えば通信一つとってもスレッドが使えないから、タイマ使うか
UIがフリーズするの覚悟でループでポーリングするかするわけだけど、
いずれにしてもPCや機器の性能を100%生かせない、どっかストレス感のある
アプリになってしまう。
0098デフォルトの名無しさん2006/05/14(日) 11:39:53
>>97
イベントドリブンって知ってるか?
0099デフォルトの名無しさん2006/05/14(日) 11:44:42
>>98
知らない。解説頼む。
0100デフォルトの名無しさん2006/05/14(日) 14:16:57
>>97
いや当然DLLと組み合わせてやるんだよ。
__asm { } とかでCの中に機械語も直接書けるから、
バンバンIn/OutするDLL書いて、VBから
コールしてる。
0101デフォルトの名無しさん2006/05/14(日) 14:45:21
すいません、わかる方いればぜひ教えていただきたいのですが、
VBで対象プロセスの優先度を変更のやり方を教えてくださいな
検索はしてみたんですがそれらしいものがまったくでなかったもので^^;
0102デフォルトの名無しさん2006/05/14(日) 14:51:22
>>100
痛い人だなあ。。
アセンブラ使おうが何使おうが、通常のユーザーモードで動作するアプリが
勝手にIOにアクセスなんてできないんだよ。
Winに限らずマルチタスクOSとはそういうもの。

っていうか、IOにアクセス可能かどうかなんて話はしてないし。

VBが制御に向かない理由の一つとして、ワーカースレッドが使えないと言ってるだけ。
0103デフォルトの名無しさん2006/05/14(日) 15:06:39
>>101
Win32 API を使う。SetPriorityClass() かな。
0104デフォルトの名無しさん2006/05/14(日) 15:11:26
>>102
お前、何も分かってないな。
まぁいいけど。
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
とりあえずアサーションなりStopなり使って
どこでA=1になってるか調べてみなきゃなんとも言えんでしょ
0108デフォルトの名無しさん2006/05/15(月) 00:08:32
>>105
「A=1にはめったに行かない」じゃなくて
「B=B+1にはめったに行かない」だろうが。
日本語もまもとに書けないからバグるんだよ。
0109デフォルトの名無しさん2006/05/15(月) 00:16:31
VBAで、MsgBoxで選択範囲の列数・行数を返すやり方すらわからない自分はVB向いてないですか?
0110デフォルトの名無しさん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
>>110
エスパー厨って失礼な奴だな。
あのねえ、そうやって質問者を甘やかすのは本人のためはもちろん
スレの利用者全体の利益に反すると思うぞ。

少なくとも回答者に千里眼的能力を要求するような質問を
許容すべきではないと思うがね。
0112デフォルトの名無しさん2006/05/15(月) 01:31:09
109です、すいませんでした。

正直に言うと、VBAの宿題出されてまったくわけわからなくて助けてほしかったんです。
甘えてばかりでごめんなさい。
01131072006/05/15(月) 01:58:09
>>112
いや多分あんたじゃなく105ね >エスパー質問
なぜAが1になるのかなんてあれだけで解るわけがないw

ちなみにVBAってことはExcel?
ttp://www.happy2-island.com/
↑ここ逝けば幸せになるかも。
0114デフォルトの名無しさん2006/05/15(月) 02:03:27
113の御方

Excelです、わざわざありがとうごいます!
0115デフォルトの名無しさん2006/05/15(月) 08:49:46
>>109
日本語でおk。
0116デフォルトの名無しさん2006/05/15(月) 17:43:17
>>109
このスレに向いてないと思う
0117デフォルトの名無しさん2006/05/15(月) 22:32:35
VB2005で作ったものをVB6.0で編集することできるんでしょうか?
0118デフォルトの名無しさん2006/05/15(月) 22:41:20
そんな餌(
0119デフォルトの名無しさん2006/05/15(月) 23:05:51
本気です。学校で作ったものを編集しようと思ったんですけど
家にはVB2005しかなくVB2005でやろうとしたらなんかアップデートされて
拡張子とか変わっちゃたんですけど、いったんVB2005で編集してそれをVB6でも
編集できるようにすることはできるのでしょうか?
0120デフォルトの名無しさん2006/05/15(月) 23:07:28
やってみればわかるだろ
0121デフォルトの名無しさん2006/05/15(月) 23:32:05
OSはXP、VB6を使ってます。

dim 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
>>119
書いてる事が矛盾してるが。
0123デフォルトの名無しさん2006/05/15(月) 23:41:01
まあ間抜けな質問だとは思うが矛盾はしてないと思うよw
01241192006/05/15(月) 23:43:45
なんどもすいません。
つまり学校のVB6で作ったものを家のVB2005で加工したら拡張子とかが
変わってしまったんですけど、それを学校のVB6で加工することは無理なんでしょうか?
0125デフォルトの名無しさん2006/05/15(月) 23:56:29
そんな餌(
0126デフォルトの名無しさん2006/05/16(火) 00:13:05
>>124
無理。
0127デフォルトの名無しさん2006/05/16(火) 00:13:55
>>121
文字列を&で繋げばいい。
0128デフォルトの名無しさん2006/05/16(火) 12:07:01
>>124
マジレスするとVB6とVB2005ではバージョンが違うからファイルの内容もコードも全部変わっちゃうから無理。
バックアップしてある書き換え前のやつから掘り起こすしかない。なかったら諦める。バックアップ取らないお前が悪い
0129デフォルトの名無しさん2006/05/16(火) 12:35:36
バックアップも何も、ウィザードはオリジナルのソースを
わざわざデリったりしないよ。
当たり前でしょw
どこの世界にそんな意地の悪い魔法使いが

だから、最初からそんな餌(
0130デフォルトの名無しさん2006/05/17(水) 10:38:58
VB6(SP6)でVB4ランタイムを使用したプロジェクトを修正中なのですが、
SSPANEL等の読み込みが出来ません。
「ライセンスがありません」といった内容でした。
ネット上で配布されてるランタイム一式をインストーラーを使って
導入したのですが、
なにが問題なのでしょうか?
0131デフォルトの名無しさん2006/05/17(水) 11:40:21
>>130
SSPANELって、VB6には添付されてないんじゃないっけ?
今VB6を起動出来ない環境なので確かめられないけど。
MSのサイト見てみ。
別のに置き換えるしかないかと。
0132デフォルトの名無しさん2006/05/17(水) 11:54:17
開発ライセンスと実行時ライセンスは別だったような。
実行時インストーラーで入れても開発できない。

SS系(3Dコントロール)は確か、CDのToolsの下にあったような。
それもVB5までだっけ?4->6なんてコンバージョンは作り直してたから知らんわ。
0133デフォルトの名無しさん2006/05/17(水) 12:41:49
SS系は、とにかくバグだらけで、滅茶苦茶評判が悪かった様な。
0134デフォルトの名無しさん2006/05/17(水) 22:26:06
フォルダに随時更新されてくる画像を読み込んで画面に表示させるにはどうすればいい?
0135デフォルトの名無しさん2006/05/17(水) 23:05:54
>>134
っLoadPicture
0136デフォルトの名無しさん2006/05/18(木) 03:33:07
>>134
FindFirstChangeNotification
01371302006/05/18(木) 10:07:57
レスどうもです。

>>131-132
それか!
やっぱり、CDに入ってるのと、配布されてるランタイムは別物なんですね。
先方から、「エラーが出たけどこれ入れたら直った」って言われたから
なんで動かないのか悪戦苦闘して状況悪化してました。
# 只、むこうはそれで問題なく開発できてるんだよな…

リドミにはCDには入ってるようなことが書いてあったけど、
其れらしいものがみあたらないので
先方に別物に置き換えて良いか確認します。

あ、SPREADの6.0を入れてるけどそれは関係ないですかね

>>133
其れ聞くとなおさら乗り換えた方がいい気がしてきた
0138デフォルトの名無しさん2006/05/18(木) 11:54:52
あるIPアドレスのMACアドレスを取得するのはどの様にすれば出来ますか?
APIを使えば出来るのでしょうか?だとしたらAPI名はなんですか?
それとも、イーサネット・ヘッダから何らかの方法で取得するのでしょうか?
0139デフォルトの名無しさん2006/05/18(木) 12:40:01
>>130
こういう人って何考えてるのかな。どっか心を病んでるとしか思えん。

俺はVB4からのコンバートなんて全くやったことも無いが、
MSDNライブラリで"sspanel"で検索する手間さえ惜しいのか。
死んだ方がいいと思うよ。
0140デフォルトの名無しさん2006/05/18(木) 13:00:04
>>138
解決しました
0141デフォルトの名無しさん2006/05/18(木) 13:01:14
>>139
こういう人って何考えてるのかな。どっか心を病んでるとしか思えん。
0142デフォルトの名無しさん2006/05/18(木) 13:45:45
以下のようなコードで、DriveListBoxを使用して、DirListBoxに設定しています。
ただ、FDが入っていないときにDriveListBoxでAドライブを指定すると、
「実行時エラー'68':デバイスが準備されていません。」と出てきてしまいます。
メディアが入っていないきは、何もしないようにしたいのですが、下記のコードではエラーを受け取ってくれません。

Dir1.Path = Drive1.Drive
On Error GoTo Aaaa
Aaaa:
If Err.Number = 68 Then
Exit Sub
End If

どうしたらいいいでしょうか?
ご存知の方、お聞かせ下さい。
よろしくお願いします。
01431302006/05/18(木) 13:46:08
>>139
申し訳ありません。
MSDNは勿論参照いたしましたが、
それで解決できなかったので質問させていただきました。

別所ではネット上のランタイム導入等で動作している(らしい)ので
なんとかならないか模索している次第です。
0144デフォルトの名無しさん2006/05/18(木) 13:57:29
>>142
1行目と2行目を入れ替えろ
0145デフォルトの名無しさん2006/05/18(木) 14:13:23
vb6しかやったことないですけど
vb2005でも改行は( _)なのですね
メモ帳でも右端で折り返してくれるのに、
何故こんな記号を使ってるのでしょうか?
0146デフォルトの名無しさん2006/05/18(木) 14:17:19
>>140
どう解決したかを書き込むと、同じ事で悩む、
これからここを見る人の役に立つんだが?

>>142
SetErrorMode API とか。
0147デフォルトの名無しさん2006/05/18(木) 15:01:07
>>144
>>146
1行目と2行目を入れ替えたら直りました。
でも、ちょっと驚きです。
ありがとうございました。

0148デフォルトの名無しさん2006/05/18(木) 15:09:19
>>147
いやそんな事で驚かれても・・・
0149デフォルトの名無しさん2006/05/18(木) 15:09:21
>>147
自分のアホさ加減に驚いたのか?
そうじゃないなら、On Errorのヘルプくらい見れ
0150デフォルトの名無しさん2006/05/18(木) 15:42:46
こういうことがすぐわかるレベルになるには何年もかかるのでしょうか
0151デフォルトの名無しさん2006/05/18(木) 15:59:20
>>150
普通は、生まれて初めてヘルプ読んだその時に分かる。
01521302006/05/18(木) 16:09:39
何度もすいません。
>>130の表記に問題があるようなので再度疑問点を記載させていただきます。

VB4の機能(SSPANEL等)を利用したVB6プロジェクトを編集する際
ネット上で配布されているTHREED32.ocxを含むパッケージをインストールし
コンポーネントの追加から参照を行いましたが
フォームを表示させようとするとライセンスエラーが表示されます。

先方でも同じ現象が発生しましたが、
同様の方法で回避できたそうです。

ネット上で配布されているTHREED32.ocxは
開発環境では使用できないのでしょうか?
他にも何か必要なファイルが存在するのでしょうか?

また、VS6ではCD内には収録されていないのでしょうか?
0153デフォルトの名無しさん2006/05/18(木) 17:08:23
>>152
CDなんか自分で中身見ればいいじゃん。
01541302006/05/18(木) 17:18:28
リドミの中にあるフォルダがは存在しないかったので、
CD内を一通り確認しましたが
それらしいのはみつけられませんでした。

もしかしてファイル名が違うのではと思い、追記した次第です。
0155デフォルトの名無しさん2006/05/18(木) 18:12:27
>>146
すいませんおっしゃる通りです・・・ SendARP ってので出来るみたいです。
0156デフォルトの名無しさん2006/05/18(木) 18:28:38
>>154
DISK2も見れ
0157デフォルトの名無しさん2006/05/18(木) 19:46:14
>>152
君本当に病気でしょ?
だからそんなもんMSDNライブラリに書いてあるつーの。
こんなとこにツラツラ書いてる間になんでMSDNライブラリ開いて検索する気にならんの?
0158わけあってVB4を使ってる人2006/05/18(木) 19:47:39
記入された文字を保存しておいて次回起動するときに
見れるようにしたいんですがどうすればよいのでしょうか?
0159デフォルトの名無しさん2006/05/18(木) 19:51:25
起動ってなんだ?PCが?OSが?ソフトが?見れるって?なにがやりたいんだ?
0160わけあってVB4を使ってる人2006/05/18(木) 19:56:18
すいません 
ソフトを起動するときです
0161デフォルトの名無しさん2006/05/18(木) 19:58:36
記入された文字を保存しておいて次回起動するときに見せるプログラム書け
0162わけあってVB4を使ってる人2006/05/18(木) 20:08:47
保存の仕方がわからないんです
教えてください
0163デフォルトの名無しさん2006/05/18(木) 20:12:40
古本屋でもまわって入門書買ってきたら?
0164デフォルトの名無しさん2006/05/18(木) 20:22:01
>>158
用途を満たすか判らんけど、簡単なのはINIファイルかなぁ?
0165デフォルトの名無しさん2006/05/19(金) 00:51:01
回文(あいうえおえういあ)プログラムを
Reserve関数を使わずに作りたいんですけどどうすればいいんでしょうか?
素人過ぎて困ってます。。OSはwindowsXPです。
誰か助けて下さい。
0166デフォルトの名無しさん2006/05/19(金) 01:02:16
回文か。
学校の課題ってのは20年進歩がないんだなw
だから課題は自分でやらなきゃ意味ないだろ
つーかReserve関数って何?w
0167デフォルトの名無しさん2006/05/19(金) 02:28:54
ああ、すみません。Reverse関数でした。
はぁ、以前からある課題でしたか。
そんなこともできない自分に自己嫌悪・・・
0168デフォルトの名無しさん2006/05/19(金) 09:04:28
読め。ともかく書いた対角化求めよ!

( ´・∀・`)へー
0169デフォルトの名無しさん2006/05/19(金) 10:06:33
>>165
Dim 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 に「あいうえおえういあ」が入る
01701302006/05/19(金) 11:23:04
CD内のファイルを発見いたしました。
リードミーに書かれている手順に従ってレジストリの登録を行ったのですが
相変わらず参照が出来ません。
試しにオブジェクトを挿入してみたところ
実行時エラー713が出ます。
レジストリの登録が正常に出来ていないのでしょうか。
何度かやってみましたが駄目でした

>>154
Disk3に入っていました。
Disk2までは確認したのですが3の存在に気付いておりませんでした。

>>152
MSDNに記載されている情報は一通り参照したけれども、
状態が解決しないので質問させていただいています。
鬱陶しいのは重々承知しておりますが、先方にも匙を投げられて
頼れる所が無かったので。
01711302006/05/19(金) 11:34:11
直接、手動でOCXのレジストリ登録作業を行った所、認識されました
他にも同様の症状が出ておりますので、検証してみます。

何度も失礼致しました。
01721652006/05/19(金) 14:32:00
>>169
ありがとうございます。
InputBoxに書いた文字を回文表示したい場合、
どうすればよろしいんでしょうか?
何度もすみません。。
0173デフォルトの名無しさん2006/05/19(金) 14:54:37
>>172
Dim 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:47
>>174
FindWindow
01761752006/05/19(金) 16:35:18
>>174
そして SetWindowPos
0177デフォルトの名無しさん2006/05/19(金) 16:42:26
>>174
アクティブなのでいいのなら GetForegroundWindow で十分だな
01781722006/05/19(金) 16:52:14
>>173
ありがとうございます。
重ねてすみません。
入力した文字が1回のクリックで
MsgBoxに全て表示できるようにするには
どうすればいいのでしょうか。

今後の勉強のためにも、
何故そうなったかという解説もお願いします。
0179デフォルトの名無しさん2006/05/19(金) 16:57:41
>>178が何を言いたいのかわからない俺は文盲で良いや。
01801732006/05/19(金) 17:12:37
>>178
もう釣られない・・・(w
01811732006/05/19(金) 17:46:15
>>179
教わった方法だと1つのMsgBoxに
1文字ずつしか表示されないんです。
これを1つのMsgBoxに1つの文(回文)
となるようにしたいんです。

>>180
本気でわかってないんです。
はぁぁ、ごめんなさい。。
0182デフォルトの名無しさん2006/05/19(金) 18:17:42
>>181
>>173 には MsgBox なんてないが。
0183デフォルトの名無しさん2006/05/19(金) 18:20:04
>>181
(゚Д゚)ハァ?
forを抜けたところでMsgBox Text2.Text で出来るでしょ?
0184デフォルトの名無しさん2006/05/19(金) 18:28:02
VB6にはsprintfないの?
0185デフォルトの名無しさん2006/05/19(金) 18:59:43
>>184
ヘルプ見ろよ。
0186デフォルトの名無しさん2006/05/19(金) 22:10:25
>>184
semete gugureyo
0187デフォルトの名無しさん2006/05/20(土) 01:39:33
VB6を使用しているのですが、データを保存する
表関数はどうすれば作成できますか?
0188デフォルトの名無しさん2006/05/20(土) 01:50:31
↑日本語でおk
0189デフォルトの名無しさん2006/05/20(土) 03:04:45
関数に表と裏があることをどこで知ったんだ
01901742006/05/20(土) 05:35:26
>>175-177
どうもありがとう。

とりあえずFindWindowは条件的に使えないけど
GetForegroundWindowとSetWindowPos、
そしてSetWindowPosを調べてて見つかったGetWindowRectで
取得も変更も出来ました。
0191デフォルトの名無しさん2006/05/20(土) 19:56:55
6.0を使用していますが、VBで指定アドレスのメモリ参照は
どのようにすればできるのでしょうか?
参照した値をテキストボックスに表示したいのですが可能でしょうか?
0192デフォルトの名無しさん2006/05/20(土) 20:34:29
>>191
っReadProcessMemory API
0193デフォルトの名無しさん2006/05/20(土) 21:01:12
>>192
そちらをググって見たらイロイロ出てきました。
いまから調べてみます。
ありがとうございました。
01941842006/05/20(土) 22:25:35
sprintf("%04x%04x%04x" ,a ,b, c)
に相当することをやるには、もしかして、Format関数を
組み合わせて頭を捻らないとダメ?
0195デフォルトの名無しさん2006/05/20(土) 22:46:03
VBがとうとうJavaVM上で動くようになったよ。
これでマルチプラットフォーム化
VBはこれからも生きつづけることになった。
http://blogs.sun.com/roller/page/herbertc?entry=project_semplice_visual_basic_for
0196デフォルトの名無しさん2006/05/20(土) 22:56:23
>>194
16進数に変換するのが目的なら、Hex。ただし、頭の0はつかない。
01971842006/05/20(土) 22:59:31
頭の0は簡単につけたいところなのですが。
すると、HEX$したあとに文字の数を数えて不足分だけ0を頭に足す、という行為を
3変数それぞれに行って、最後に+で結合する必要がある?
0198デフォルトの名無しさん2006/05/20(土) 23:37:45
>>197
そだね。
Right("000" & Hex(a), 4) & ...
0199デフォルトの名無しさん2006/05/20(土) 23:44:29
>>194
頭を捻る必要は全くない。

>>195
ん?
よく意味が分からん。
どういう事?
JavaVMって何だ?
0200デフォルトの名無しさん2006/05/20(土) 23:53:36
>>195
blogは、本当なのか?それならそれでいいけど
IDEは今の感じがいいな〜
eclipseのプラグインとして動くようになったらデバッグとかが面倒くさいなあ〜
0201デフォルトの名無しさん2006/05/21(日) 11:08:32
これってどうよ?
http://blogs.sun.com/roller/page/herbertc?entry=project_semplice_visual_basic_for
0202デフォルトの名無しさん2006/05/21(日) 11:09:05
すまぬ既レスだった
0203デフォルトの名無しさん2006/05/21(日) 16:07:33
WebBrowserコントロールについての質問です。
あるページを特定のリファラーを送って表示する方法を教えてください。

ググってもMicrosoft.XMLHTTPなどでリファラーを送ってファイルをDLする方法とかは分かったのですが
WebBrowserコントロールでの方法が分かりません。
単にあるページを確認のために表示するだけが目的で、まともなブラウザを作ろうってわけではないので
WebBrowserコントロール以外を使うつもりはありませんが、
無料で使えてリファラー指定できるブラウザコントロールがあるなら、そちらの紹介でも構いません。
とにかくやりたいことが単純単一なので、手軽に出来る方法を探してます。宜しくお願いします。
0204デフォルトの名無しさん2006/05/21(日) 16:25:05
>>203
出来ない。
0205デフォルトの名無しさん2006/05/21(日) 17:03:42
ちょっと前にその手の話題挙がってたね。
出来るって言ってた奴居たけど何処行ったかな?
0206デフォルトの名無しさん2006/05/21(日) 18:27:35
>>203
素直にWinsockでプロトコル組んだ方が早い思う。
読んだデータをTempファイルに書いてローカルで表示させればOK。
0207デフォルトの名無しさん2006/05/21(日) 19:51:00
NavigateのHeadersに書いてはどうか
02082032006/05/21(日) 20:29:18
>>207
出来ました。どうもありがとうございます。
いきなり「出来ない。」と言われて諦め気味だったけど
しばらく様子見ていて良かった。
0209デフォルトの名無しさん2006/05/22(月) 17:52:11
ここでの「出来ない」「無理」「不可能」は
「俺は知らない」という意味だと思って無視した方がいいよ。
今までも出来ないとレスが付いた後に解決方法が書かれたことが何度あったことか…
本当に出来ない場合も多々あったが、
一個人の知識で言う「出来ない」「無理」「不可能」など、なんて不確かなことか。
0210デフォルトの名無しさん2006/05/22(月) 18:57:23
ここでの「出来ない」「無理」「不可能」は、
「そんな事はVBではやらない方がいい。別の方法を見つけろ」
という意味だと思った方がいいよ。
0211デフォルトの名無しさん2006/05/22(月) 19:27:12
いや、>>209が正しい
無知で頭悪い癖に偉そうに人様に意見だけ垂れたい奴がいるんだよw
0212デフォルトの名無しさん2006/05/22(月) 20:19:42
ところで、VB.NETなんていらないよなぁ。
C#.NETはともかくとして、VBはVBのまま、ずっと進化して欲しかった。
0213デフォルトの名無しさん2006/05/22(月) 20:52:33
それはないw
.NET慣れたらもうVBには戻れんよ、いや本当。
まあIDEの重さだけはちょっとアレだけど。
0214デフォルトの名無しさん2006/05/22(月) 21:18:01
VB.NET いらね。
.NET Framework 上で VB 動かす何かをかませればいいのに。
0215デフォルトの名無しさん2006/05/22(月) 21:52:59
P-CODEをILに変換しよう!
0216デフォルトの名無しさん2006/05/23(火) 06:07:09
> 「そんな事はVBではやらない方がいい。別の方法を見つけろ」
> という意味だと思った方がいいよ。
一理あるようで、実はこういうこと言う奴は視野が狭い。
最良の結果を得るためと言うことなら、全ての処理に置いてVBなんか使わない方がいいし、
「この処理はVBだと面倒なので他の言語でやった方がいい」という部分があったとしても
一部面倒でも全体で見ればやっぱりVBの方が楽だったりする。

そもそもここに質問に来る奴は、ある処理をするのに適した言語・方法を聞きにしてるのではなく
VB言語を使うことを大前提に、どうすればいいかを聞きにしてることが多いので
VBでの解決方法を教えた上で、個人的意見として「〜言語の方が適してるよ」と添えるのはいいが
回答もせずに「その処理にVBなんか使うな」ってのはお門違い。
唯一この台詞を言って良いのは、「もっと処理を速くするには?もっと軽くするには?」という類の質問だけだ。
0217デフォルトの名無しさん2006/05/23(火) 08:23:58
ガキの自己弁護に何をむきになってレスしてるのかね。
0218デフォルトの名無しさん2006/05/23(火) 08:43:12
>>214 >>215
誰かこれをフリーソフトで公開してよ。
0219デフォルトの名無しさん2006/05/23(火) 08:54:40
>>217
何か嫌なことでもあったの?
0220デフォルトの名無しさん2006/05/23(火) 09:21:38
>>216
あんたも視野が狭いね。

VBで出来ない、すべきでないことを勧めるのはおかしいでしょ?
APIコールばっかりのプログラムとか、コールバック関数を使うとか。
そういうの使いたければ、こんなところで聞くレベルではないぐらいになるべきじゃないの?
自分で情報に辿り着いて、その上で判断できない奴はさ。

VBでやるっていう前提が、単なる開発環境としてのVBなのか、VBという言語開発環境の通常使用の範囲内なのか。
他の言語なら簡単にできることを、わざわざVBでやるっていうのは、まあ選択肢のない開発下っ端にはしょうがないんだろうね。w

0221デフォルトの名無しさん2006/05/23(火) 10:04:44
> APIコールばっかりのプログラムとか、コールバック関数を使うとか。
なんでたった一つ使おうとしただけで、
「ばっかりのプログラム」になるのだろうな。

> 他の言語なら簡単にできることを、
APIコール部分以外はVBで簡単に出来る。
大部分を簡単に出来る言語を選ぶのは当然。

ちょっと実現しにくいものに出会っただけで、
言語全部置き換えるのはバカだろ。

仕様をすべて分かっていない限り、どの言語がふさわしいか判断することは出来ない。
お前が当事者じゃない限り、お前が選択することは不可能だよ。
0222デフォルトの名無しさん2006/05/23(火) 10:13:04
VBではちょっと面倒だな、って部分はDLLにすればいいだけじゃん。
0223デフォルトの名無しさん2006/05/23(火) 10:31:01
えっ
そんなの当たり前じゃないのか
0224デフォルトの名無しさん2006/05/23(火) 11:45:50
220の書き込みで、狭すぎる視野を持つ人から見ると
通常の視野を持つ人の意見は視野が狭く見えるということがわかった。
あとはどうでもいい。220の書き込みにそれ以上の価値はないからw
0225デフォルトの名無しさん2006/05/23(火) 18:48:54
>>220
世間には職業プログラマと暇な学生しかいないと思ってるのかな。
本業の傍らでプログラムを書いて業務をまわしている人が実際は結構多いと思うぞ。
そういう人たちに、いろんな言語を学べとか、過去の資産を捨てろなんて
そんな「暇な」時間は無い訳だよ。
 仕様をころころ変えるMSやそれについていってるプログラマはある意味「暇」を
もてあましているともいえるぞ。
 
 これら「兼業」プログラマにとってとっつきやすいからVBが伸びてきたと思う。
0226デフォルトの名無しさん2006/05/24(水) 01:28:38
みんなが言いたいことは
「出来ます厨」とか「VBでやるべきでない厨」とか
「エスパー厨」がウザイだけなんじゃないかと
0227デフォルトの名無しさん2006/05/24(水) 02:09:18
>>225
本来は選ばれたプロフェッショナルのみが行えるべき行為を素人が中途半端なレベルでつく(r
0228デフォルトの名無しさん2006/05/24(水) 09:24:50
>>226
電波な質問とか、悩み相談もうざいけどね。
質問の体を成していないのとか。
0229デフォルトの名無しさん2006/05/24(水) 09:56:23
WebBrowserでボタン押したり、ラジオボタン押したりするにはどうしたらいい?
テキスト入力は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
>>229
安易に SendKeys とか。
0231デフォルトの名無しさん2006/05/24(水) 11:22:24
DOMを極める
0232デフォルトの名無しさん2006/05/24(水) 11:38:02
VB初心者です。
質問なのですが、同じプロジェクトで複数のFormを使っている場合
実行を行うと今作っていたFormではなく別のFormを実行してしまいます。例えば、1-2というFormを実行したいのに
1-1を実行してしまいます。1-3、1-4を実行したい場合も1-1を実行してしまいます。なぜでしょうか?
環境はwin2000proでVB6.0を使っています。
だれか教えてください!
0233デフォルトの名無しさん2006/05/24(水) 11:41:12
>>232
「スタートアップの設定」
0234デフォルトの名無しさん2006/05/24(水) 11:59:44
>>233
できました!ありがとうございます。。。
0235デフォルトの名無しさん2006/05/24(水) 12:55:55
>>229
テキストでもボタンでもラジオボタンでもgetElementsByNameで取得できるはず。
ボタンはClickでOK。ラジオボタンはシラネ。
0236デフォルトの名無しさん2006/05/24(水) 18:49:39
229です
解決しました。ありがとう。
0237助けて2006/05/24(水) 21:39:30
リッチテキストボックスの行間を狭くしたいのですがどなたか分かる方教えてください。
0238デフォルトの名無しさん2006/05/24(水) 21:51:55
ウス目で
0239デフォルトの名無しさん2006/05/25(木) 04:01:24
VB6.0を仕事で使っていたのですが、
データベースとの接続はツールがしていたのでADOとかあんまり使ったことありません。
データベース関係以外は自分で書いてたんでやりたいことは大体出来ます。
VB6.0+データベース(ODBC接続)の本で良いのがあれば教えてください。
入門書探しに行ったのですがVB自体の本ばかりでデータベース関連ってあんまりないんですよね・・・。
0240デフォルトの名無しさん2006/05/25(木) 07:17:25
何で今更、ADOでもOLE DBでもなく、ODBCなわけ?
0241デフォルトの名無しさん2006/05/25(木) 07:40:21
書き方わるかったですね。ADOなんです。
0242デフォルトの名無しさん2006/05/25(木) 09:03:00
>>239
っMSDNと google
0243デフォルトの名無しさん2006/05/25(木) 13:05:50
>>239-240
http://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
>>243
ヒント:役立ち度は
MSDN、google>>>>超えられない壁>>>>本
0245デフォルトの名無しさん2006/05/25(木) 14:09:28
質問です。
Picture1,Picture2という2つのPictureBoxを作って(プロパティは何も変えてません)
LoadPictureでPicture1,Picture2にグラフィックをロードしたあと、
この2つがロードしたグラフィックが同じかどうかを判定するにはどうすればいいか教えて下さい。

Picture1.Picture = Picture2.Picture でいけるかと思ったんですが、ダメでした。
0246デフォルトの名無しさん2006/05/25(木) 14:49:21
>>245です
すいません、事故解決しますた。
0247デフォルトの名無しさん2006/05/25(木) 14:52:03
どうやって解決したかを書かない事故厨はもう来るな
0248デフォルトの名無しさん2006/05/25(木) 15:22:28
環境WinXP,VB6.0Pro

RichTextBox(以下リッチ)に関して質問です。

実行時のリッチ入力画面で"Ctrl+d"を押すことにより、入力カーソル位置に今日の日付を挿入するプログラムを作りたいのですが、
カーソル位置に挿入する方法がわからず困っています("Ctrl+d"とかの話は大丈夫です)
既存の方法ありましたらご教授ください。よろしくお願いします
02491732006/05/25(木) 15:39:50
>>248
ttp://www.bcap.co.jp/hanafusa/VBHLP/TextEdit.htm
0250デフォルトの名無しさん2006/05/25(木) 15:42:14
>>173
トンクス
0251デフォルトの名無しさん2006/05/25(木) 18:54:43
>>243
トンです。
本買えました。大体思っていた内容で助かりました。
0252デフォルトの名無しさん2006/05/25(木) 22:30:17
はじめまして。春からVBをはじめた大学生です。
諸先輩方に質問がございます。
最近、関数を学んでいます。引数と戻り値があると知りました。
今は発展段階で、"配列を引数にもつ関数"という表現がありつまずいています。
この"配列を引数にもつ関数"とは一体どういうことなのでしょうか。
理解できません。できれば、簡単な例をくださるとありがたいです。

0253デフォルトの名無しさん2006/05/25(木) 22:37:18
関数渡す値が引数。
その引数が配列になっているだけ。.
0254デフォルトの名無しさん2006/05/25(木) 22:44:37
お手数をおかけしますが、具体例を教えてくれませんでしょうか。
0255デフォルトの名無しさん2006/05/25(木) 22:47:19
質問する場所が分かりませんので、ここで質問させてください。
VBを独学で学ぶことは可能でしょうか?不可能でしょうか?
やはりプログラムの学校などに行った方が・・・宜しくお願いします。
0256デフォルトの名無しさん2006/05/25(木) 22:57:14
>>252,254
> できれば、簡単な例をくださるとありがたいです。
「できれば」ということは、できなくても構わないということなので例は無し。

> お手数をおかけしますが、具体例を教えてくれませんでしょうか。
はい、お手数なので、具体例は教えてあげません。

つーか何でもかんでもコード欲しがる奴大杉。
解説にコード添えられないとこの程度も理解できないほど理解力に乏しいなら
言語に手を出すのはやめておけ。
無知(知識が無い、少ない)は救いようがあるが、バカ(理解力が乏しい)は救いようが無いから


>>255
「学ぶ」こと自体は独学で出来る。というか独学というもの自体が文字通り「学ぶ」ことだからな。
身に付くかどうかはオマエの理解力と努力次第。
0257デフォルトの名無しさん2006/05/25(木) 23:01:37
ひどいですね。
初めてここに来て全部ロムってませんがこんな感じなのかな。
コードを望んだわけではなかったのです。
失礼します。
0258デフォルトの名無しさん2006/05/25(木) 23:03:22
まあ口調が偉そうな奴は例外なく無能で日ごろ叩かれてストレス溜まってる奴だから
気にせず笑って(いや何か痛い奴だなと苦笑ながら)スルーした方がいいよw
0259デフォルトの名無しさん2006/05/25(木) 23:04:38
っていうかね、いまからプログラミング始めるならVBは最悪の選択の一つといって
まあ間違いないと思う
0260デフォルトの名無しさん2006/05/25(木) 23:05:18
やっぱ暖かくなるとレベルの低い質問者が増えるね。
0261デフォルトの名無しさん2006/05/25(木) 23:08:43
何にでも初めてはあるわけで
0262デフォルトの名無しさん2006/05/25(木) 23:41:15
確かにレベル低いね
ここで質問しても解決しないから他行ったほうがいいね
0263デフォルトの名無しさん2006/05/25(木) 23:42:00
>>254
Sub Kansuu(a() As Byte)
 ・
 ・
 ・
End Sub

Dim a(5) As Byte
Call Kansuu(a)

>>255
可能。
0264デフォルトの名無しさん2006/05/26(金) 01:44:04
>>263
さんくす!
2ちゃんねるって優しいところですね。
0265デフォルトの名無しさん2006/05/26(金) 09:53:38
>>245です
>>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
>>265
そんなので同じかどうか判断しては駄目だと思うが・・・
普通にバイナリコンペアしないと。
0267デフォルトの名無しさん2006/05/26(金) 10:51:20
Picture1とPicture2に同じものをロードしておいて比較する意味ないだろ
0268デフォルトの名無しさん2006/05/26(金) 12:59:04
ファイルとしての同一性を求めてるのか。
画像としての同一性か。
プログラム内インスタンスとしての同一性か。
0269デフォルトの名無しさん2006/05/26(金) 13:22:36
質問者が解決したって言っているんだから良いじゃない。
0270デフォルトの名無しさん2006/05/26(金) 13:47:16
>>268
画像の整理をしたいのでは。同じ画像が別名でよくダブる。
どんな画像か知らんが。
0271デフォルトの名無しさん2006/05/26(金) 13:55:02
俺はそんなときまず同じファイルサイズのものを抽出する。
どんな画像かは言わんが
0272デフォルトの名無しさん2006/05/26(金) 14:30:59
そういう整理なら、専用ツールが幾らでもあるね。
0273デフォルトの名無しさん2006/05/26(金) 14:58:27
質)
loadpicture()で取れる値って同じファイル参照しても値が毎回違うのはメモリのアドレス返してるから?
0274デフォルトの名無しさん2006/05/26(金) 15:39:35
>>273
LoadPicture が返す値は、ロードした画像を示す
単なる「ある値」であり、その値そのものを比較したり
意味を求めたりするのは無意味。
0275デフォルトの名無しさん2006/05/26(金) 15:51:51
比較してこれでいけましたって言ってるんだから良いじゃない。
0276デフォルトの名無しさん2006/05/26(金) 22:47:36
>>273
ビットマップハンドル

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
>>276
直感的じゃないから。
0278デフォルトの名無しさん2006/05/27(土) 00:47:01
VB6でWinsockを使ったソケット通信で、
サーバ側PGの受信待ち時間を○秒って指定できるんですか?
できるならやり方教えてください。
お願いします。
0279デフォルトの名無しさん2006/05/27(土) 01:28:14
>>276
別に謎じゃないよ。
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
280ですが、なかったことにしてください…。
無駄な書き込みしてすいませんでした。
0282デフォルトの名無しさん2006/05/27(土) 10:13:36
>>278
タイマーコントロールを使えば
0283デフォルトの名無しさん2006/05/28(日) 00:08:14
VB2005 Expressの事で質問したいのですが、ここで良いでしょうか?
0284デフォルトの名無しさん2006/05/28(日) 00:21:33
ここはVB6にしがみついて死守するスレなのでやめとけ
0285デフォルトの名無しさん2006/05/28(日) 00:25:28
>>284
と言っても2005のスレが無いようなのですが・・・・
取り敢えずぐぐります
0286デフォルトの名無しさん2006/05/28(日) 01:25:12
>>285
2002, 2003, 2005はVB.NETの括りになる。
2005からマーケティング上の理由でVB.NETの名称は使わなくなったが .NET Framework上で動く同じ範疇のもの。
というわけで つ VB.NET質問スレ (Part15)
0287デフォルトの名無しさん2006/05/28(日) 02:08:50
>>286
なるほろ、そういう事でしたか。thxです
0288デフォルトの名無しさん2006/05/28(日) 02:35:39
すでにあるフレームに新しくコントロールを
追加するときは、どうしたらいいですか?
どうしても親のフォームの方に載ってしまいます。
0289デフォルトの名無しさん2006/05/28(日) 08:13:04
>>288
Set コントロール.Container = Frame1
0290デフォルトの名無しさん2006/05/28(日) 08:38:07
>>286
「マーケティング上の理由」ってどんなの?
0291デフォルトの名無しさん2006/05/28(日) 11:34:02
VB5の開発環境にVB・.NETを含むVisual Studio 2005 Express Editionを
インストールして同一のマシンでの開発環境の混在は可能でしょうか?
0292デフォルトの名無しさん2006/05/28(日) 11:54:43
>>291
謹んでお答えしましょう。
一分で調べがつくようなことを人に尋ねないと気がすまないお方は
プログラミングという行為そのものから撤退すべきです。
ご自身のためにも、周囲の人たちのためにも。

-- 以上 --
0293デフォルトの名無しさん2006/05/28(日) 13:42:03
>>291
可能じゃないあるよ
0294デフォルトの名無しさん2006/05/28(日) 14:35:28
>>291
叶
0295デフォルトの名無しさん2006/05/28(日) 15:25:10
>>289
ありがとうございます。

すでにフォーム上に存在しているコントロールを、
マウスのドラッグなどでフレーム内に移せないでしょうか?
0296デフォルトの名無しさん2006/05/28(日) 17:15:00
ドラッグなどして移せればできる。移せなければできない。
0297デフォルトの名無しさん2006/05/28(日) 20:48:58
>>295
その様に作ればできる。
一行でできる方法はない。
0298デフォルトの名無しさん2006/05/29(月) 01:20:31
うーん。
では、後から気が変わっても、
簡単にフレームに入れることはできないんですね。
0299デフォルトの名無しさん2006/05/29(月) 02:41:45
>>296
は静的な話と思って回答している
>>297
は動的な話と思って回答している
>>295
はどちらかはっきりすること
0300デフォルトの名無しさん2006/05/29(月) 12:46:10
>>295
フォーム上にあるコントロールを切り取ってフレーム上に貼り付ければ移せれる
0301デフォルトの名無しさん2006/05/29(月) 22:11:13
このスレレベル低いね
0302デフォルトの名無しさん2006/05/29(月) 22:26:43
>>301
うん、だから君はもう来る必要ないよ。
0303デフォルトの名無しさん2006/05/30(火) 00:01:05
>>300
明日やってみます!
0304デフォルトの名無しさん2006/05/30(火) 00:07:50
VB6で多言語対応のダイアログを作成したいんですが、どうすればいいんでしょうか?
VCやVB.NETのように言語別にダイアログを作成するのは無理なんでしょうか?
0305デフォルトの名無しさん2006/05/30(火) 00:25:34
ちゃんと方法が書かれてあるが?
0306デフォルトの名無しさん2006/05/30(火) 00:32:27
VB6&XPで(画面全体の)スクリーンショットとりたいんだけど
MSDNで書かれている

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:33
2番目のパラメタは、MSDNによれば、"This parameter is not used."なのだ。
0308デフォルトの名無しさん2006/05/30(火) 00:43:26
not used っちゅーことは使わないってコト?
ならフォーカスor全体を判別しないってことなのかな?
0309デフォルトの名無しさん2006/05/30(火) 00:53:04
>>306
試してないけど
ttp://www.bcap.co.jp/hanafusa/VBHLP/snapshot.htm
0310デフォルトの名無しさん2006/05/30(火) 00:56:18
keybd_event(VK_SNAPSHOT, 0x79, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_SNAPSHOT, 0x79, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
VC6,W2Kで試したけど、ちゃんと全体のSS撮れるよ。

まぁ、PrintScreenキー(Alt無し)をシミュレートしてるんだから当たり前だし、
Altを押しながら実行すれば、アクティブウィンドウのSSになる。
0311デフォルトの名無しさん2006/05/30(火) 02:01:02
notebookだからfnキーを押しながらじゃないと無理っぽい
fnキーの仮想コード調べたけどよくわからんかった
ってかあるのか?
0312デフォルトの名無しさん2006/05/30(火) 07:24:07
>>311
どういう洒落なのか説明してくれ
0313デフォルトの名無しさん2006/05/30(火) 07:54:32
>>311
そのコードを調べるプログラムなんてVBなら5秒で書けるが。
0314デフォルトの名無しさん2006/05/30(火) 08:08:33
keydown とか keypressイベとかでは取れないよ
0315デフォルトの名無しさん2006/05/30(火) 08:25:14
Fnキーってハードウェアレベルでエンコードされちゃってるんじゃないかと思うが。。
0316デフォルトの名無しさん2006/05/30(火) 09:01:50
ハードウエア情報を取得し型式データベースと照合して
ノート型モデルかどうか判別するという洒落。
0317デフォルトの名無しさん2006/05/30(火) 09:20:19
うちのはノートじゃないがFキーあるぞ?
0318デフォルトの名無しさん2006/05/30(火) 11:10:43
強制的にキーコード送ってるのだからノートとかって関係ないんじゃまいか?
0319デフォルトの名無しさん2006/05/30(火) 11:13:08
うちなんかノートじゃないのにFn(n:1〜12)キーがある
0320デフォルトの名無しさん2006/05/30(火) 11:14:23
Fnってのはファンクションキーのことではないと思われ
0321デフォルトの名無しさん2006/05/30(火) 11:18:01
PageUp,PageDownとかがが上下左右キーと同じに割りつけてあるときに
Fnキーと一緒に押さなければならないキーボード(Fnキー)を指してるんではないのか?
0322デフォルトの名無しさん2006/05/30(火) 12:53:28
多くのノートPCに使用されているキーボードでFnキーはコントローラのレベルでキーコード変換がされているのでFnキーの取得はCPU側からはできない
0323デフォルトの名無しさん2006/05/30(火) 13:12:28
VBからAccessのレポートのプレビューを見たいのですが、
うまくいきません。

Set ap = CreateObject(
03243232006/05/30(火) 13:15:00
うぉ、途中で切れた。Σ(゚д゚;)

Set 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
すぐCloseしたりQuitするから何も起こらないように見える
プレビューしたいならQuit呼んじゃだめだよ

プレビューならViewer的なAccessアプリケーションをつくり
外部EXEとして実行をする方がリソース開放とかいろいろ考えなくて楽だよ
0326デフォルトの名無しさん2006/05/30(火) 13:50:15
>>324
終了するまでまってQuitするにはこんな感じでいけたと思う。
While Not ap.ActiveSheet Is Nothing Wend
ap.Quit
0327デフォルトの名無しさん2006/05/30(火) 13:52:19
>>326
すまん、例がExcelだった・・・まぁ同じ感じで出来ると思うから
03283232006/05/30(火) 15:20:02
すぐ閉じてたのが原因だったのですね。ありがとうございます。
>>326さんの外部EXE形式のViewer作戦を試してみたいとおもいます。
>>327さんのは「ap.ActiveSheet」でひっかかりました。_| ̄|○
0329デフォルトの名無しさん2006/05/30(火) 15:21:05
質問です。
http://homepage1.nifty.com/rucio/etc/Stations.htm
のプログラムをつくると、
StartStationからEndStationまでの
時間は出るんですけど、
逆にEndStationからStartStationまでの時間って
どうやって出すんですか?
やっぱり新しいプロシージャを
つくるしかないんですか?

ちなみにwindowsXP、VB6.0です。
0330デフォルトの名無しさん2006/05/30(火) 15:42:43
駅を逆に入力する
0331デフォルトの名無しさん2006/05/30(火) 16:10:36
>>330
やはりそういった方法しかないのでしょうか?
0332デフォルトの名無しさん2006/05/30(火) 16:44:51
>>329
・駅名を取得する
・2つの駅間の時間を計算する
せめてこの2つはFunction化しないことには、
>>330が最小手順の解決方法になりますよ。
0333デフォルトの名無しさん2006/05/30(火) 16:56:02
>>330
またはStartStation と EndStation の値を入換える
If StartStation > EndStation Then
xx = StartStation: EndStation = StartStation: StartStation = xx
End If
0334デフォルトの名無しさん2006/05/30(火) 17:06:55
XXからYY表示が逆になるのがいやなら
Dim 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:34
>>328
Accessはこれでいいんじゃね?
ttp://www.mitene.or.jp/~saosao/VB1.html
0336デフォルトの名無しさん2006/05/30(火) 19:38:35
>>332-334
そういう考え方があるんですね!
大変勉強になりました。
ありがとうございます。
0337デフォルトの名無しさん2006/05/30(火) 20:09:23
>>336
栗田ゆう子みたいだ。w
0338デフォルトの名無しさん2006/05/31(水) 00:08:52
質問なのですが・・
accessをインストールせずにVBだけでaccessのDBファイルを
最適化できるものなんでしょうか?
access環境のないPCがないので実験不可能です。
すいませんがどなたかお教え下さい・・・

VBはSP6 OSはwin XPです。
0339デフォルトの名無しさん2006/05/31(水) 00:18:11
>>300
できました!!
ありがとうございます。

>>311
Fn押しながらPrint Screenだと、
それにAlt組み合わせるのできないかも。
うちのDynabookだとできなかった。
0340デフォルトの名無しさん2006/05/31(水) 02:15:57
>338
出来る。
最適化どころかMDBに対してはほとんどの事が可能。
0341デフォルトの名無しさん2006/05/31(水) 02:27:57
どうやってやるんですかとか聞いてきそうだな。
しかも具体的なコードを書いてくださいとか言ってきたりしてw
なので先に言っておく
>>338、とりあえずやり方は自分で調べろ。
それでもどうしても解らなかったら、解った範囲でやり方やコードを書いて再質問すること。
丸投げとか、1週間もしないうちに再質問したりとかしないでね。
0342デフォルトの名無しさん2006/05/31(水) 07:45:10
>>341
DAO 関連って、最初っから全部入ってるんだっけ?
0343デフォルトの名無しさん2006/05/31(水) 07:51:36
>>342
DAO は配布できる
0344デフォルトの名無しさん2006/05/31(水) 08:11:24
>>343
いやそうじゃなくて、Windows をインストールした直後から使・・・って、
VB入れたらインストールされるんだっけか。
0345デフォルトの名無しさん2006/05/31(水) 14:14:42
・ADO
 XPと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
>>345
�d。
しかしJROって初めて聞いた。
ジャロ?w
0347デフォルトの名無しさん2006/05/31(水) 15:46:39
最近VBScriptを覚え始めた者です

フォルダ選択ダイアログは出せるのですが
ファイル選択ダイアログって出せるんでしょうか?
教えてください
0348デフォルトの名無しさん2006/05/31(水) 16:14:10
>>347
こんなんでました。
ttp://hp.vector.co.jp/authors/VA006065/scripts/bat2vbsf.htm
0349デフォルトの名無しさん2006/06/01(木) 18:11:43
>>336
'出発駅から目標駅までの時間を計算する。
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:40
Train Kept A Rolling
0351デフォルトの名無しさん2006/06/01(木) 22:38:52
>>349
配列を0からにしないといけない明確な理由は?
変数を減らすために最初の練習用?サンプルを大幅に変更する意味はなに?
0352デフォルトの名無しさん2006/06/02(金) 00:02:10
>>351
俺は349じゃないけど、配列のインデックスの開始を0以外にする、なんて
VB独自の作法は使わない方が無難。

そんなもんコード読む人間(もちろん未来の自分自身も含む)を不要に混乱させるだけ。
配列の開始は常に0から、を暗黙の前提として期待できる方がコードは遥かに読みやすい。

それにまあ頭の悪いVB厨だと思われるの嫌でしょ?w
0353デフォルトの名無しさん2006/06/02(金) 00:18:10
>>352
Basicなら前提として1からと決まっている。
0から開始するなんてVB独自の作法は使わないほうが無難。
0354デフォルトの名無しさん2006/06/02(金) 00:23:03
キチガイだなw
0355デフォルトの名無しさん2006/06/02(金) 00:43:13
Cは0から
Basicは1からがデフォ
0356デフォルトの名無しさん2006/06/02(金) 01:12:59
For も1から回すの?
0357デフォルトの名無しさん2006/06/02(金) 01:56:37
おいおい配列のインデックスは古いBASICもVBも指定しなければ0からだろ。
CやVB.netは0固定だし、わざわざ1からにする理由は無いぞ。
0358デフォルトの名無しさん2006/06/02(金) 02:01:18
最新の国際標準は1からですが、
0359デフォルトの名無しさん2006/06/02(金) 02:04:08
スマソ。途中で送信された。
最新の国際標準は1からですが、
個人的には0からの方がいいと思います。
0360デフォルトの名無しさん2006/06/02(金) 02:51:00
>>357
MS$も配列の開始を統一してないし、一般(初心者)に開始は1からのほうが解りやすいと思ってみたり・・・
ただ、>>352 が言っているように昨日の自分は他人の自分で、未来の為に統一しといた方がいいと俺も思う。
0361デフォルトの名無しさん2006/06/02(金) 03:13:42
俺は0からに抵抗無かったからピンとこないんだけど、初心者には1からの方がわかりやすいのかな。
実際の所どうなんだろ。
後ひまわりとか日本語で書けるから初心者向きとか言ってるけど、それもどうなんだろ。
やっぱり初心者はアルファベット難しいのかな。
0362デフォルトの名無しさん2006/06/02(金) 12:02:20
0オリジンと1オリジンの宗教戦争をここでやっても仕方が無かろう
03633492006/06/02(金) 14:02:05
こんなとこまでゆとり教育か
あ、いや煽りなのは分かってるがどうしても言ってみたくなった、許してくれ

>>351
煽りでは無く質問とみて返答させていただきます。

>配列を0からにしないといけない明確な理由は?
俺はそう教えられてきたし他の言語も触ってるんで、そのほうがいいと思っただけ。

>変数を減らすために最初の練習用?サンプルを大幅に変更する意味はなに?
俺はわざわざユーザーが指定した出発駅と目標駅を入れ替えてFor文使うより、
Do使って二つの駅の時間差合計したほうが自然だと思ったからこうした。
たしかに初心者には理解しづらいコードかもしれんが、こういうやり方もある事を示したかったし
これを期にDo~Loop構文覚えてもらえれば幸いだと思う。

「その”自然”とか”配列は0から”とかはお前の価値観だろう」って言われればそれまでだが、
俺はこのほうがプログラマには読みやすいと思ったからこうした。

スレ荒れるのは忍びないので宗教戦争はこのくらいにしておくれ
03643512006/06/02(金) 14:41:00
>>363
俺はどっちでもいいって考えだから質問してみただけなのに・・・書き方が悪かったのか
初心者うんぬんは解りづらくしなくてもと思ったからついでに聞いてみた。
みなさん、これで終了でよろしく。
0365デフォルトの名無しさん2006/06/02(金) 16:34:04
メニューを開いて、ポイントしている項目を取得する方法はありますか?
たとえば、
ファイル
・・・新規作成
・・・名前を付けて保存
・・・上書き保存
とかあって、ファイルをクリックしてメニューだして、マウス動かして、
カーソルが「名前をつけて保存」の上にあったら、それを取得する方法です。
0366デフォルトの名無しさん2006/06/02(金) 17:21:20
>>365
今VB動かない環境なので確認出来ないけど、
Mouse_Move とかでメニューのプロパティの .Text とか見たら?
0367デフォルトの名無しさん2006/06/02(金) 18:32:11
>>366
それは無理だよ。メニューポイント中はmoveイベント発生しないよ。
0368デフォルトの名無しさん2006/06/02(金) 20:05:41
>>367
そうなんだ。ゴメン。
じゃぁ、メニューの上でマウスカーソル動かすと、ステータスバーに
それが出てくるくる変わるやつはどうやってるんだろ?
0369デフォルトの名無しさん2006/06/02(金) 20:06:03
たしか、サブクラス化して読んでた例があったような。
0370デフォルトの名無しさん2006/06/02(金) 22:06:48
WM_MENUSELECTを捕まえればいいんじゃね?
0371デフォルトの名無しさん2006/06/02(金) 22:28:13
>>369
じゃぁ後はググれば解決だね。
0372デフォルトの名無しさん2006/06/03(土) 02:58:32
なんかみんなホントすげぇな
何年くらいかかるの?
0373デフォルトの名無しさん2006/06/03(土) 08:03:09
>>372
何が何年?
0374デフォルトの名無しさん2006/06/03(土) 08:43:52
>>373
質問に答えられるようになるのにじゃね?
もしそうだったら、人それぞれ。知っていること(やったこと)なら1日でも可能(w
0375デフォルトの名無しさん2006/06/03(土) 09:04:14
>>374
あぁそういう意味か。
0376デフォルトの名無しさん2006/06/03(土) 12:29:44
ttp://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_800_200.html
上記を参照にVBからエクセルのマクロを削除したいんだけど
プロジェクトプロパティでパスワードがかかってます。
もちろんパスワードを知っているという前提でVBからパスワードを解除する方法ありませんか?

OS:Windows2000
VB6sp6
03773762006/06/03(土) 13:22:17
シートコピーすりゃ良かったのか
くだらない質問申し訳ない
0378デフォルトの名無しさん2006/06/04(日) 00:31:29
VB6のIDEで、現在プロジェクト内で作成している関数一覧を表示し、ダブルクリックで
その関数の場所に飛ぶといったことはできるのでしょうか?
また、それが可能な場合、いくつかの関数を一まとめにして、階層的に表示することは
可能でしょうか?

イメージとしては下のように表示され、ダブルクリックでその関数のところを編集できると
いった形です。

┬関数A
├関数郡B
│├関数B-1
│└関数B-2
└関数C
0379デフォルトの名無しさん2006/06/04(日) 00:34:44
関数村字関数
0380デフォルトの名無しさん2006/06/04(日) 02:33:09
Excel VBAについての質問です。
文字列と数字列が規則的に混在する文字列中から文字列のみを抜き出すのって
可能ですか?

具体的に・・・
"アイウエオ0123"
"カキクケコ4567"
といった"全角文字列"+"全角or半角が混在する数字列"といった組み合わせ
なのですが、その中から"全角文字列"のみを抜き出すには、どういった方法
がありますでしょうか?
03813802006/06/04(日) 02:53:30
うあ!?すいません。sage忘れてました(^^;;;

あ、ちなみに文字+数字の文字列は、文字数が決まっていません。

"さしすせそたちつてと12345"

・・・とか・・・

"なにぬ9876543210"

・・・ってのもあったりします。
0382デフォルトの名無しさん2006/06/04(日) 02:59:03
Replaceで数字だけ置換しちゃうとか
ループ回して一文字ずつ数字かチェックして数字でないのだけ繋げていって文字列にするとかでいいんじゃね?

あと、sage忘れって、ここって別にsage進行じゃないでしょ?
ageていいんじゃないの。むしろ、質問はageたほうがいいのでは。
03833802006/06/04(日) 03:24:02
あ、ageてよかったんですね(^^;
失礼しましたm(_ _)m

あ、そか、Replaceか!
Loopで一文字づつ削ってたんですけど、あまりにもスマートじゃない気がして
たんで・・・助かりましたm(_ _)m
早速やってみます。
0384デフォルトの名無しさん2006/06/04(日) 03:39:39
>>380
A ループを使ってReplace関数で数字を空文字に置換
B 正規表現(RegExp)で数字以外を抽出
C 1文字ずつチェックしIsNumeric関数がFalseを返した文字を繋げる

あたりが基本的な処理だが、数値・数字は必ず末尾数桁のみというなら
D 後ろからループ回して1文字ずつIsNumericでチェックし、Falseになった文字位置までをLeft関数で抽出
の方がいいかもな。
まあ正規表現でも数字が1カ所にまとまってるならs/[\d0-9]//一発で終わりだけど。
0385デフォルトの名無しさん2006/06/04(日) 09:07:25
>>378
誰かが作ったアドインで、そんなのがあった様な気がする。
ググってみては。
0386デフォルトの名無しさん2006/06/04(日) 09:58:34
環境VB6 SP6
   XP SP2
別スレつくるAPIで
内部でFunction関数つかったらソフトがおちるんだが・・・・
こんなやついるの?
ググで調べても落ちる情報はない感じ

おとなしく.NETでソフト書いたほうがいいのかいな?
ドトネト使うほどのソフトじゃないので好きなVBでやってたんだが・・・
0387デフォルトの名無しさん2006/06/04(日) 10:15:14
ホスト規制とかされてんじゃないの
0388デフォルトの名無しさん2006/06/04(日) 10:22:53
>>386
「別スレつくるAPI」て何?
2chのスレを作る関数??
0389デフォルトの名無しさん2006/06/04(日) 10:23:39
>>386
VBはマルチスレッドに対応していない。
0390デフォルトの名無しさん2006/06/04(日) 12:03:32
> VBはマルチスレッドに対応していない。

捕捉すると、スレッド自体は作れてしまうので
VBでマルチスレッドが可能だと勘違いする奴も多いが
スレッドを作れることと、マルチスレッドで処理を行えることは同義ではない。
ぶっちゃけ言うと、VBで作ったスレッドで行える処理はものすごく限られてる。
アレやったら落ちる、コレやったら固まるって事だらけ。
何をしたら落ちるかは明確になってる部分もあれば不明瞭な部分もある。
とにかく対応していないんだから落ちたらそういう物だと思うしかない。

例えば防水仕様じゃない腕時計に、水を1滴垂らしたからと言って
いきなり壊れるとは限らないが、水を被って壊れても
「まー、防水じゃないんだからしょーがないな」って感じだろ。

出来ればVB使いたいにしても、.NETの選択肢があるならそっち使え。
0391デフォルトの名無しさん2006/06/04(日) 13:54:36
>>389-390
おk
じゃぁそうするかww
おとなしくドトネトでやるっす。

まぁ、できないかな?
って感じの疑問だったんで元々選択肢にはいれてたんで。

サンクスでした
0392デフォルトの名無しさん2006/06/04(日) 21:33:58
>>391
昔のDDJ辺りでスレッド作ってやっちゃいけない事集みたいなのが有った気がする
というか出来る事集だったかな
0393デフォルトの名無しさん2006/06/04(日) 22:23:38
>>392
DDJ・・・何もかも懐かしい・・・
0394デフォルトの名無しさん2006/06/05(月) 04:30:06
ThreadID1 = GetWindowThreadProcessId(h, ByVal 0&)

この文の最後のByVal 0&の0&ってどういう意味なんですか?
ただの0とは何か違いがあるのでしょうか?
0395デフォルトの名無しさん2006/06/05(月) 06:38:41
>>394
型宣言文字
&はLong型をあらわす。
0396デフォルトの名無しさん2006/06/05(月) 08:18:57
>>394
宣言が As Any になってるので、「値としてのロングのゼロ」を渡すと明確に書いてる。
03973942006/06/05(月) 08:53:49
>>395さん
>>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
>>397
その引数は、本来「プロセスIDを受け取る変数のアドレス」を設定する物。
でも、スレッドIDだけが知りたい場合、ゼロを指定するので、そうなってる。
03993942006/06/05(月) 13:10:29
>>398
なるほど!!!ありがとう!!!
0400デフォルトの名無しさん2006/06/06(火) 23:42:32
Command関数のことでちょっと

�@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
>>400
普通に文字列操作
サンプルも腐るほど転がってる
0402デフォルトの名無しさん2006/06/07(水) 00:19:24
すみません、誘導されてきました。excelVBAで質問なのですが
as0125えet後Etたッワ
のような前半が半角、後半が全角の
ランダムな文字列から前半と後半を分離しようと思うのですが
ASC(2バイト系文字)がおかしくなってしまって困っています
いったいどう対処すればよいかどなたかアドヴァイス頂きたいです。
04034002006/06/07(水) 01:01:26
>>401
おっしゃるとおりです。
探すの面倒だったから自作した、、
まぁ、要はこういうことをしたかったわけで・・・なんかそういう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
> API関数
"みたいの"ならある。
0405デフォルトの名無しさん2006/06/07(水) 06:39:50
C/C++ のargsだとその辺のコマンドラインの解析はやってくれてるけど
あれはCRTがやってるの?それともAPIレベル?
0406デフォルトの名無しさん2006/06/07(水) 06:56:13
CommandLineToArgvWというAPIが無いわけでもない。
けど、だいたいはCRTが処理しているはず
0407デフォルトの名無しさん2006/06/07(水) 10:55:33
>>402
何がしたいのかサッパリ分からんが、一文字取り出してから
StrConv でシフトJIS文字にしてバイト数を見るとか。
0408デフォルトの名無しさん2006/06/07(水) 17:05:28
初心者質問だけどカンベンしてくれ・・
会社で今、まじ困ってる。取得した日付(第二引数に入力された値)が、
ちゃんとした日付型かどうか判定(文字とかが入ってたらだめ)するには、
どうすればいい??どんな関数を使えばいいんでしょうか??
0409デフォルトの名無しさん2006/06/07(水) 17:11:42
IsDate()
0410デフォルトの名無しさん2006/06/07(水) 18:39:24
>>409
サンクス!
0411デフォルトの名無しさん2006/06/07(水) 21:43:26
初歩的な質問かも知れないけど教えてください。
異なる2つのセルの値を比較して、値が異なっているなら
両方のセルに色をつけるという関数は作成可能でしょうか。
VBAマクロでは簡単に作れたのですが、ユーザー関数で作成したいんです。

宜しくお願いいたします。


0412デフォルトの名無しさん2006/06/07(水) 22:46:42
おーとめーそんで終わりだろ。
0413デフォルトの名無しさん2006/06/07(水) 22:59:14
関数式の入ったセルに値を入力されても泣かないこと
0414デフォルトの名無しさん2006/06/08(木) 02:14:37
エクセルのVBの仕様なのですが、手持ちの書籍や、参考になるサイトが少なく
困ってることがあります。
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
エクセルのVBでの質問です。

ある課題なんですが、「与えられた半角文字列中に含まれる、最初の数字列を抽出し
ろ」
という事なんですが、使用する関数はmidのみと指定があります。
 そしてfor-next,if関数などを使用することとあります。
 アルゴリズムの勉強らしいのですが、色々考えましたが分かりません。

教えてください。

EX, 文字列は " aBc 011 122 Z" 実行結果→011
0416デフォルトの名無しさん2006/06/08(木) 12:28:01
midのみと言いながらfor-next,ifなどを使えという時点で問題がおかしい
0417デフォルトの名無しさん2006/06/08(木) 12:55:52
文字列操作系の関数はMIDのみってことじゃない?
0418デフォルトの名無しさん2006/06/08(木) 12:58:49
for-nextやifは関数ではないので
問題はおかしくない。
0419デフォルトの名無しさん2006/06/08(木) 13:48:43
for-next,if関数とかいてある時点で問題がおかしい
0420デフォルトの名無しさん2006/06/08(木) 13:53:14
>>415
先頭から一文字づつ取り出して、最初に数値が出てきたら、
数値じゃなくなる迄別変数に追加する。
としか言い様がない。
0421デフォルトの名無しさん2006/06/08(木) 13:54:21
>>418
そこがCに劣るところ
0422デフォルトの名無しさん2006/06/08(木) 13:59:37
>>421
Cでもforやifは関数ではないぞ。
0423デフォルトの名無しさん2006/06/08(木) 14:01:19
vbからデータベースに接続できないときにイベントビューアーに
エラーログを出力をしたいんだけど、どうやればよいのでしょうか??
誰か助けてください(__)
04244232006/06/08(木) 14:09:25
自己解決しますた!!
0425デフォルトの名無しさん2006/06/08(木) 14:19:03
塩まいとけ
0426デフォルトの名無しさん2006/06/08(木) 14:23:10
>>421
言語に優劣等ない。
適材適所。
0427デフォルトの名無しさん2006/06/08(木) 14:30:49
>>424
どうやって?
解決策を書く気は全くなし?
0428デフォルトの名無しさん2006/06/08(木) 14:39:12
>>420
コードをとか言われそうだなぁ(w
0429デフォルトの名無しさん2006/06/08(木) 15:20:06
418です
>420 ありがとうございます

でもうまく書けません

今forで1つずつ取り出しをして それをifや do loopを 組み合わせてるんですが だめです

できれば 詳しく教えて下さいm(__)m
0430デフォルトの名無しさん2006/06/08(木) 15:31:07
>>429
あの文章よりもどう詳しくしろと言うのか。
0431デフォルトの名無しさん2006/06/08(木) 15:42:31
もっとやさしい課題から理解しないと無理では
0432デフォルトの名無しさん2006/06/08(木) 15:43:36
>>427
>>425
0433デフォルトの名無しさん2006/06/08(木) 16:04:42
初歩的な質問だけど、お願いします。
C:\HOKYU.INI
このファイルがあるかどうか判定するには
どのような関数を使えばよいのでしょうか?
04344232006/06/08(木) 16:10:29
VBScriptのオブジェクトを使って

Dim Wsh
Set Wsh = CreateObject("WScript.Shell")

Wsh.LogEvent 1, "XXXのエラーです"

とすることで、
イベントビューアのアプリケーションログにエラーが書き込まれます。
↑
だって、コピペだけど
0435デフォルトの名無しさん2006/06/08(木) 16:48:48
>>429
開始フラグクリア
数字列変数クリア
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:54
>>433
Dir
0437デフォルトの名無しさん2006/06/08(木) 18:58:17
>420

どうか,コ-ドを お願い致します
m(__)m m(__)m
0438デフォルトの名無しさん2006/06/08(木) 19:06:43
>>437
バグってても、コンパイルエラーが起きててもいいから、
自分ができるところまで書け。お前が与えられた課題だろうが。
0439デフォルトの名無しさん2006/06/08(木) 19:16:52
>>437
>>435
0440デフォルトの名無しさん2006/06/09(金) 09:23:58
>>6を見るとVB6はこれからも業務で使われ続ける流れになるのかな?
それとも、COBOLみたいなことになる?

ぶっちゃけるとそろそろ2005系に移行したほうがいいのかな?
0441デフォルトの名無しさん2006/06/09(金) 09:52:39
>>440
適材適所。
0442デフォルトの名無しさん2006/06/09(金) 11:57:47
まぁ保守がメインになるんじゃない?

俺は色々なことがラクになるから2005つかってるけど
0443デフォルトの名無しさん2006/06/09(金) 12:52:08
>>442
何が楽になりましたか?

COBOLみたいなことになるなら6ONLYって訳にはいかないかなと思って…
0444デフォルトの名無しさん2006/06/09(金) 14:14:37
>使用する関数はmidのみと指定
誰もやらないし暇だったので(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:14
IsNumeric
0446デフォルトの名無しさん2006/06/09(金) 14:37:55
>>444
それなら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
>>445
関数はmidだけなんだとさ、意味ない制限だな
0448デフォルトの名無しさん2006/06/09(金) 14:39:36
>>415の関数制限なくしたら
お前らならどう実装する?
04494482006/06/09(金) 14:50:17
おれはこうした

Const 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
>>446
やっぱりなぁ・・・文字でもOKだったか
0451デフォルトの名無しさん2006/06/09(金) 15:25:56
>>449
スペースで区切られている保証はないかも・・・まぁ課題は区切られているけど(w
0452デフォルトの名無しさん2006/06/09(金) 17:11:14
>>451
文字列の仕様に基づいてsplitの区切り文字変えればよかろ

まあ、スペース区切りの”囲いとかだったらちょっと処理足りないが
0453デフォルトの名無しさん2006/06/09(金) 17:45:49
>>452
区切り文字が無かったら駄目でしょってこと
0454デフォルトの名無しさん2006/06/09(金) 17:52:25
>>453
その場合は>>444でいいんじゃね?
0455デフォルトの名無しさん2006/06/09(金) 17:54:00
初心ですいませんが、質問させてください。

N88BASICでいう
A$(0)="nihon"
A$(1)="amerika"
A$(2)="chuugoku"
はVBだとどうのような配列で作ればよいのでしょうか?

あと、VBで

define A(0)=12.5
みたいなのはありますか?
よろしくお願いします。
0456デフォルトの名無しさん2006/06/09(金) 18:24:54
>>455
ぐぐればいくらでもヒットする
0457デフォルトの名無しさん2006/06/10(土) 01:00:09
const
0458デフォルトの名無しさん2006/06/10(土) 08:15:43
APIのSetTimer関数でタイマー処理するとき
P-Codeコンパイルじゃないと即落ちするんですけど
そんなもんでしょうか?

CallBack関数内の処理をほとんど空にしてもなります。
0459デフォルトの名無しさん2006/06/10(土) 09:52:27
>>458
コピペするだけで現象が再現する必要最低最小限のコードは?
0460デフォルトの名無しさん2006/06/10(土) 11:03:34
>>459
form1にボタンを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:14
-----------------------標準モジュール----------------------------
Option 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
04624582006/06/10(土) 11:09:12
どうもコールバック関数内でtimeGetTime()関数を呼び出すのがひっかかってるみたいで、
変数の値を変えるとか、フォームのラベルを書き換えるのはOKみたいなので
関数を呼び出すことに問題があるようです。
0463デフォルトの名無しさん2006/06/10(土) 11:18:24
timeSetEventのコールバック呼び出しって、呼び出しもとのスレッドが違ってなかったっけ?
0464デフォルトの名無しさん2006/06/10(土) 11:37:09
普通にタイマコントロール使えばいいじゃん。
04654582006/06/10(土) 11:43:41
>>464
MIDI再生のためにインターバル1msで使いたいわけですが
最近はタイマーコントロールでも大丈夫なんすかね?
まあ、それはやってみればいいんですが。
0466デフォルトの名無しさん2006/06/10(土) 12:17:30
そもそもWindowsで、協調しながら1ms単位の行動を起こすことは不可能。
04674582006/06/10(土) 12:40:12
>>466
精度が悪いのは当然承知の上で、可能な限り短い割り込み間隔が欲しいわけです。
となるとやはりマルチメディアタイマーかなと。
0468デフォルトの名無しさん2006/06/10(土) 12:42:12
>>465
マルチメディアタイマ使っても、正確な1msなんて不可能。
WindowsはリアルタイムOSじゃないから。
0469デフォルトの名無しさん2006/06/10(土) 12:55:14
>>468
1msだと負荷がかかりすぎて落ちるとか言うならともかく、正確に1ms出る出ないは今直接関係なくないか?
数十msもブレるわけじゃないんだし。
0470デフォルトの名無しさん2006/06/10(土) 13:11:47
興味出たので調べてみたが、
googleで「vb マルチスレッド timeSetEvent」で検索したとき
最初の方に出てくるいくつかのサイトに参考になりそうな記載があるようだよ
0471デフォルトの名無しさん2006/06/10(土) 13:11:56
誰かコード試した?
私も試したいけど、今起動中のXPにはVB入ってないんだよな・・・_| ̄|○
04724582006/06/10(土) 15:29:12
みなさんありがとうございます。

>>470さんのおっしゃる通りぐぐってみました。つまり、マルチスレッドになることに問題が
ありそうだということですね。

タイマーなのでマルチスレッドでformの移動などにほぼ影響されずに動いて欲しかったのですが、
CreateThread関数を使って生成されたスレッドと同じように使用に制限があるということですか。
P-Codeでもformを頻繁に移動するなどすると終了時にエラーが出ますが、業務用でもないので
P-Codeコンパイルで当面いってみます。
0473デフォルトの名無しさん2006/06/10(土) 19:04:45
dim a as integer
dim 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:17
dim a as integer
dim 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:51
dim a as integer
dim 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:32
Visual Studio 6.0の開発環境を
Windows xp home editionに移植したいのですが、
このときVisual studio 6.0をCDからインストールして
そのStudioを最新版にするときの手順を教えてください。
またVB6.0のUpdateで最終形態にしたいのですが

どれとどのパッチを落としたらよいのでしょうか?
よろしく お願いします
0477デフォルトの名無しさん2006/06/10(土) 20:22:47
落とそうとするパッチを全部書けば選んでもらえると思う
0478デフォルトの名無しさん2006/06/10(土) 20:53:43
>>475
何故三回も?

>>476
VB6はXPに対応してないよ。
0479デフォルトの名無しさん2006/06/10(土) 21:16:37
>478
3回書き込みはIEでリロードしたんでしょ。
XPでまともに動かないのはIISアプリケーションをデバッグする場合位かな。
(2000でも動かんが。XP、2000とも回避策があるのだが)
とりあえず、VB4の開発環境をNT4.0上で動かした時ほどの問題は出ない。

>476
MSのサイトで検索して、更新日付順に並べたら分かるよね。
手順なんて説明するほど難しい所は何も無い。
0480デフォルトの名無しさん2006/06/10(土) 21:32:38
VB6入れて、SP6a入れておしまい、じゃないの?
0481デフォルトの名無しさん2006/06/10(土) 21:37:09
VBだけじゃなくてVS全体となると
http://www.microsoft.com/japan/msdn/vstudio/downloads/sp/VS6SP6.asp
で済むんじゃないの?
0482デフォルトの名無しさん2006/06/10(土) 22:12:11
VB6とVB.netの違いについてお伺いさせてください
パソコンソフトを作れるのはもちろんだと思いますが
パソコン外の制御系ソフトウェア、例えばビル監視システムのソフトウェア等
つまりファームウェアを作成する場合は6.0と.netではどちらを活用するべきなのでしょうか?
0483デフォルトの名無しさん2006/06/10(土) 22:20:26
>>482
C/C++などをすすめる。
0484デフォルトの名無しさん2006/06/10(土) 22:24:47
>>483
VBだと簡単にUIが作れるみたいなので挑戦しようと思っています。
ので、できればVBのどちらかでやるつもりです。
0485デフォルトの名無しさん2006/06/10(土) 22:29:38
VB6.0は入手性に難があるぞ
0486デフォルトの名無しさん2006/06/10(土) 22:40:28
あ、そうなんですか;
本屋で軽く立ち読みしたら.netはパソコン用ソフトウェアを簡単に・・と書いてあったので
ひょっとしてパソコン用ソフトウェアに特化したものが.netで、パソコン用以外での組み込み系ソフトウェアにも応用が利くのが6.0だと思っていたので確認の為に聞いてみました
現在は.netしか入手できないのならどちらにも応用効くって事ですよね
0487デフォルトの名無しさん2006/06/10(土) 22:41:31
>>482
UIはVBで、制御部分は生CでDLLを書けばいい。
0488デフォルトの名無しさん2006/06/10(土) 22:42:07
しかしどう考えてもネタとしか思えない質問によく馬鹿正直に答える気になるな。
476とか482みたいな質問のことを言っているのだけど

質問してる奴はそういう馬鹿なくせに、いや馬鹿故に「教えたがり」な君をみて一人密かに
ほくそ笑んでいることと思うぞw
0489デフォルトの名無しさん2006/06/10(土) 23:37:39
>>488
質問が素晴らしかろうが、糞だろうが、
自分の気が向いたら適当に答えてるだけ。
0490デフォルトの名無しさん2006/06/11(日) 00:05:51
VBで作ったプログラムからVBで作ったDLLを呼び出しています。
Win2000 では正常に動作したんですが、WinXP SP2 にプログラムを
インストールしたところ、
>実行時エラー'48': ファイルが見つかりません:xxxx.dll (←自作のDLL)
というエラーが出るようになってしまいました。
.EXE と .DLL は同一ディレクトリにあり、念のため、PATHも通してあります。
IDEから起動しても、エクスプローラから起動しても結果は同じです。
declare 文でフルパス指定しても見つかりませんと言われました。
VS6.0 SP5 でビルドしました。実行時のユーザーは administrator
権限です。

どうしたら良いのでしょうか?
0491デフォルトの名無しさん2006/06/11(日) 00:14:38
>>490
VB6のDLLはActiveXだからRegsvr32で登録がいるんじゃない
0492デフォルトの名無しさん2006/06/11(日) 00:16:35
>>482
外部の装置をPCから制御するプログラムは、組み込みとかファームウェアとか呼ばない気がする。
0493デフォルトの名無しさん2006/06/11(日) 00:17:18
486です。
電化製品に組み込み式の制御系ソフトウェアはwindowsアプリケーションには入らないと思うのですが
やっぱり.netでは作成できそうにないように思えます・・
0494デフォルトの名無しさん2006/06/11(日) 00:19:15
>>492
いえ、パソコンから制御するのではなくて専用端末機から制御します。
その専用端末機のファームウェアをVBで作成して組み込むという事です。
0495デフォルトの名無しさん2006/06/11(日) 00:29:12
>>493
たとえばさ、何かの検査装置があって単独でも使えるけど、
これをPCからシリアルケーブルを使ってコントロールできるとする。
検査装置は独自のCPUを持っててOSやプログラムは検査装置のROMに書き込まれている。
この検査装置のOSやプログラムのことをファームウェアとか組み込みプログラムと呼ぶのよ。
これの開発に必要なのはその検査装置のCPUにあったクロスコンパイラやエミュレーターなわけで、
VBやVB.NETの出る幕はどこにもないのよ。

んでこの検査装置をPCからコントロールするためには、
シリアルケーブルでの通信のプロトコルの仕様書が提供されてたり、
VBやVCから扱うためのライブラリ(スタティック、ダイナミック)、やActiveXコントロールが提供されてたりするわけで、
これらを使うことになるわけさ。>>486のいってるのはココのことだろ?
0496デフォルトの名無しさん2006/06/11(日) 00:40:42
>>495
まさしくそれの事を指していたんですが、言葉の使い方を間違っていたようですみません;
以前、別会社に設計して貰った時はVBでやっていると言ってたのですが
その会社ではまずパソコン上でVBを使いプログラムを作り、それをROMに移して機械本体を実行させる。という流れだったと思います。

あまり知識がないもので言っている事がうまく伝わりませんが・・
こういうことはVBやVB.netではできないのでしょうか?
0497デフォルトの名無しさん2006/06/11(日) 00:45:28
その別会社に聞いたらどう
0498デフォルトの名無しさん2006/06/11(日) 00:46:59
組み込み系のCE.NETでVB.NET動かせばいいじゃないか
VB6でもCEプラグイン使って作れるし
0499デフォルトの名無しさん2006/06/11(日) 00:51:26
だからどう考えても君らみたいなVB厨を嘲笑するためにネタで聞いてる奴に
なにをマジになってw

そんなに人に教えを垂れることに飢えてるのかな
0500デフォルトの名無しさん2006/06/11(日) 00:51:37
善意で考えてだまたまその装置のOSがWindows(CEの線もあり?)でその拡張がVBで出来るとして、
それは普通の環境ではないから一般的にVB.NETではどうかと聞かれても答えられないね。
環境で使えるツール類は変わってくるからよくヒヤリングしないと。
0501デフォルトの名無しさん2006/06/11(日) 00:53:24
>>488,499
週末なのにいやなことでもあったのか? かわいそす。
0502デフォルトの名無しさん2006/06/11(日) 01:05:54
>>498
>>500
やっぱりこちらの情報不足ですか・・
分かりました、とりあえずもう少し本屋などに行って調べてみたいと思います。
ありがとうございました
05034902006/06/11(日) 08:32:47
>>491
すいません、書き間違えました。
.DLL は VB ではなく、 VC で作っています。
0504デフォルトの名無しさん2006/06/11(日) 08:47:58
>>490
原因がちゃんとあって、解決出来るならいいんだけど、
もし解決出来ない場合、それが、VB6はXP上で
動作保障されてない、って事。
2000では動くのにXPでは駄目、ってのは幾らでもある。
0505デフォルトの名無しさん2006/06/11(日) 10:46:36
>>503
>実行時エラー'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
>>478
えっそうなんですか?
困ったなあ
>>481
ありがとうございます
>>488
僕はまじめに聞いていますよ


;;;;
教えてくれた人ありがとうございました
0507デフォルトの名無しさん2006/06/11(日) 10:50:48
>>505
非常にありがとうございました
0508デフォルトの名無しさん2006/06/11(日) 11:03:28
>>503
DLL の実行に必要な DLL を Dependency Walker で調べろ
0509デフォルトの名無しさん2006/06/11(日) 11:42:54
VB6+Windows2000環境です。
MDIなフォームの右上に表示されているコントロールボックスを
消したいです(最大化、最小化、閉じるのボタン)。
消す事が無理なら無効にしたいんですが、良い方法ないでしょうか?
0510デフォルトの名無しさん2006/06/11(日) 11:48:43
>>509
FormのプロパティにMaxボタンとかMinボタンの設定がなかったっけ?
ボタン自体を消すのはAPIにあった気がする
05115092006/06/11(日) 11:51:41
>>510
MDIで無い普通のフォームなら、プロパティーで設定(ボタンを消す)可能でした。
MDIだとそれがありませぬ。APIでできるんでしょうか?
0512デフォルトの名無しさん2006/06/11(日) 12:12:02
>>511
@ITのTipsで方法が紹介されている。
ただし、.NET向けの記事ではあるけど。
でも使ってる方法そのものはVBでも恐らく有効でしょう。
0513デフォルトの名無しさん2006/06/11(日) 12:31:44
>>505
MSは動作保障してるよ。
まぁ、MSの動作保障なんて全くアテにはならないが。
0514デフォルトの名無しさん2006/06/11(日) 13:41:24
かなり必死に探したものの見つからないので、質問させてください。
株なんかの取引を自動化したいのですが、どうしても、
「特定の座標にマウスを移動させて、クリックする」という作業が発生するのですが、
これを簡単に実行するには、どうも「なでしこ」ぐらいしかみあたらないのです。
なでしこだと、ちょっと安定性に不安が残るのと、ちょっとした計算ぐらいはするし、
なんとなくですが、VBとかWSHみたいなものでも簡単に出来そうな気がするので、
何かヒントになりそうな情報がありましたら、是非ご教授ください。
0515デフォルトの名無しさん2006/06/11(日) 13:47:46
>>514
っmouse_event API
0516デフォルトの名無しさん2006/06/11(日) 13:48:25
>>513
484さんの書いてくれたパッチのダウンロードの環境にもxpって入ってました
0517デフォルトの名無しさん2006/06/11(日) 14:54:29
>>516
いやだから、保障されてても、まともに動かないのが問題なのであって。
0518デフォルトの名無しさん2006/06/11(日) 14:59:12
>>514
DOM 使って HTML 操作の方がいいんじゃね? Web アプリだよね?
0519デフォルトの名無しさん2006/06/11(日) 15:00:29
マルチに反応しちゃ駄目
0520デフォルトの名無しさん2006/06/11(日) 15:34:06
サイボウズ6に予定を設定したり取得したりするこは
VB6で出来ますか?
可能なら方法を教えて頂きたいです。
よろしくお願いいたします
0521デフォルトの名無しさん2006/06/11(日) 15:48:15
>>520
サイボウズにきいてくれ
0522どっかのスレの9062006/06/11(日) 17:44:04
もまいら朗報だ。VS2005からVB6みたいにデバッグしながら開発できる
ようになったようだぞ。

後で時間作って、VB6厨の漏れが感想書いてみるよ。

0523デフォルトの名無しさん2006/06/11(日) 19:37:39
>>522
?
今迄も普通に出来てた様な・・・
0524デフォルトの名無しさん2006/06/11(日) 19:50:26
>523
 ステップ実行中の状態でソースを編集できる様になった、と言いたいのでは
なかろうかと。
0525デフォルトの名無しさん2006/06/11(日) 19:51:17
エディトコンティニューがVB.Net2002とか2003とかでは効かなかった話ではないかと
0526デフォルトの名無しさん2006/06/11(日) 21:18:31
すみません、スクリプトの方ですけどvbsのスレなんてわざわざ無いみたいなのでここでお聞きします。
vbs(wsh利用可)で、現在の状態が省電力モード(スクリーンセーバが動き出すのってこのモードだよね?)かどうかを
検出するってどうやるのでしょうか?
0527デフォルトの名無しさん2006/06/11(日) 21:19:16
逆に、VBでは出来てたのに出来なくなってたのがダサ過ぎ。
0528デフォルトの名無しさん2006/06/11(日) 21:25:10
>>526
省電力とスクリーンセーバーは直接関係内
0529デフォルトの名無しさん2006/06/11(日) 21:51:38
>>528
調べたら確かに省電力モードって定義があいまいみたいですね。
ということで質問を変えます。
vbs(wsh利用可)で
・スクリーンセーバが動いているかどうか
・電源制御によりモニタの電源が切れた状態かどうか
・電源制御によりHDDの電源が切れた状態かどうか
を知るってどうやるのでしょうか?
0530デフォルトの名無しさん2006/06/11(日) 22:51:45
>>529
スクリーンセーバは SystemParametersInfo API かな。
0531デフォルトの名無しさん2006/06/11(日) 22:51:57
>>529
おそらくVBSとWSH自身の機能だけじゃ無理。
WMIあたりで可能かもしれないが、一番確実なのは
それらの機能を提供するCOMを自作してVBSから使う方法。

これならいろいろ制限のあるスクリプト言語上での実現方法に悩むことなく
制限の少ないまともなプログラミング言語上で普通にやればいいだけなので簡単。
COM使いたくないとか作れないとかいう後出し条件は聞き入れないのでよろしく。

後の質問は、あなたがCOM作るのに使う言語のスレでどうぞ。
但し質問する前に一週間くらいは自分で調べようね。
0532デフォルトの名無しさん2006/06/11(日) 22:54:39
>>529
電源関係は ACPI で出来ると思う。
05335292006/06/11(日) 23:01:22
ヒントをありがとうございました。
05345222006/06/11(日) 23:32:53
勝手にVB2005の感想。

2003と比べると、VB6の便利なところが戻ってきたな。
・ステップ実行中にドラッグでステップを、戻せるようになった。
・イミディエイト使わなくても変数の上にマウスポインタを
 持ってくと値の変更が出来る。
・ウォッチウィンドウで補完が働く
・ややモッサリ感がある(Celeron1GHz 512MB)
・新規に作成しても、保存しなければ、MyDocumentの残らないように
 なった。

利用者を意識していて結構良い感じだお。

まあ、手軽にCOM作りたい輩はVB6からは離れられないのには
変わらんが、それは.Net開発環境じゃお門違いだな。
0535デフォルトの名無しさん2006/06/11(日) 23:52:18
> ・スクリーンセーバが動いているかどうか

これはスクリーンセーバーのデスクトップが開かれているかで判定。9x 系は別。

> ・電源制御によりHDDの電源が切れた状態かどうか

GetDevicePowerState() でできるらしい
0536デフォルトの名無しさん2006/06/12(月) 00:21:24
>>534
>・ステップ実行中にドラッグでステップを、戻せるようになった。
あれ?2003でも出来ないかそれは
止めれたり戻ったりできる場所が少ないけど
05375292006/06/12(月) 08:54:09
>>535、>>それ以前の方々、
ヒントをありがとうございました。
0538デフォルトの名無しさん2006/06/12(月) 09:36:49
web上の文字列を手に入れるときに何の関数を使えばいいのか分かりません

ググル先生でも
VB web上の文字列を
VB web 文字列

で出てきませんでした
ヒント下さい
0539デフォルトの名無しさん2006/06/12(月) 09:42:07
GetWebStringsという関数を作る
0540デフォルトの名無しさん2006/06/12(月) 10:34:49
>>535
スクリーンセーバーのデスクトップて?
0541デフォルトの名無しさん2006/06/12(月) 10:55:04
>>539
レスサンクスです

InternetReadFileで詳細をもらってくる
その中から一部の文字列に絞ってクリップボードに入れるorテキスト表示させるorファイルに出力させる
でいきます。
0542デフォルトの名無しさん2006/06/12(月) 19:52:38
listview コントロールにて Add でアイテムを追加していくと
先頭に挿入されるのですが、
listbox コントロールのように後から追加するアイテムを
後ろにつけるためのプロパティ、もしくは簡単な方法はありませんでしょうか。。
0543デフォルトの名無しさん2006/06/12(月) 20:41:14
>>542
Sort ONなんじゃない?
0544デフォルトの名無しさん2006/06/13(火) 07:22:30
APIで顧問コントロール等々を呼び出すと無駄なインストーラは必要なくなる?
0545デフォルトの名無しさん2006/06/13(火) 08:08:53
>>544
「APIで顧問コントロール等々を呼び出す」の意味が不明。
0546デフォルトの名無しさん2006/06/13(火) 09:06:30
指定文字列の検出の質問なのですが

hogehoge 2006/06/13a
hogehoge 2006/06/12b
hogehoge 2006/06/11c
といった文字データがhoge.textに出力されていて
hogehogeから後ろ12文字だけを出力させたいときはどの関数を使えばいいでしょうか。
0547デフォルトの名無しさん2006/06/13(火) 09:22:14
>>546
Mid$
0548デフォルトの名無しさん2006/06/13(火) 09:41:35
>>547
サンキュー!
上手くいけた
05495422006/06/13(火) 17:44:59
>>543
いえ、ソートはしていませんが。。
0550デフォルトの名無しさん2006/06/13(火) 18:11:56
>>542
毎回indexに1を指定してない?
index を省略すれば最後尾に追加されるはずだか
先頭追加 ListView1.ListItems.Add 1, "key", "Text"
最後尾追加 ListView1.ListItems.Add , "key", "Text"
05515422006/06/13(火) 20:07:16
>>550
ズバリです。。
なるほど。。
本当にありがとうございました 多謝
0552デフォルトの名無しさん2006/06/13(火) 20:10:02
今VBでアクションゲームを作っているんだけど当たり判定がうまくいきません。(自分で作成したコマンドボタンを押したらTeki1が消えてしまいます。)
コードは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
>>552です
書き忘れすみません。
コマンドボタン名はStart1です。
0554デフォルトの名無しさん2006/06/13(火) 20:34:48
そういえば、昔それらしきものを作ってみたわん
ソース全く見てないけど、試行錯誤してみれよ
0555デフォルトの名無しさん2006/06/13(火) 20:41:03
簡単なアタリ判定(適当な画像を個々に用意)

Private 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:20
上の方で使うなと言われているが、あえて訊きます

Windows2000でIIS5+VB6作DLL+XLS(xp)で動いてたシステムを
Windows2003でIIS6+VB6作DLL+XLS(2003)で動かしたいんだが
単純に載せ替えただけだと、excelファイルの作成でこけてしまう。
ログをはこうとしてもログはく処理でこけちまう

これはなにかセキュリティーの問題ですか?
(ちなみにユーザは一時的にアドミンにしてます)
05574902006/06/13(火) 23:05:04
>>505 >>508
おかげさまで今日無事動きました。
エラーを出している DLL が呼び出している DLL が落ちているのが原因でした。
本当に助かりました。

なお、XP で動く VB6.0 のプログラムは Vista でも "そのまま" 動作するそうです。
ttp://www.microsoft.com/japan/msdn/vbasic/support/vistasupport.aspx
まぁ、ほんとかどうかは vista が出てくるまでわかりませんが。
0558デフォルトの名無しさん2006/06/13(火) 23:19:39
>>556
2003SVって動作保障されてるの?
0559デフォルトの名無しさん2006/06/14(水) 00:06:03
>>556
IISにISAPIの実行設定してないんじゃない?
デフォルトでは何も実行できないはずだよ
05605562006/06/14(水) 01:37:28
ISAPIの実行許可は行っている。
例えば単にSQL SERVERからデータをとってくると行った動作は問題ないんだけども
サーバのローカルにファイルを作成する処理が走るとエラーになる。
エクセルがまずいのかと思って、ログを出して追っていこうとおもったらログすらでない
ただしエラー内容は変わる。
エクセルの時はファイルの作成が出来ない、ログの時は閉じられてないwithブロック〜といった内容。
ちなみにサーバマシンで、ソースから実行してあげれば問題なく動く
クライアントのブラウザから実行したときにダメになるので、何らか権限がからんでるのかなあと。
05615562006/06/14(水) 01:39:29
>>558
動作保証は分からないけど、過去ログ見た限りはofficeはサーバサイドで実行するな
という内容はあるみたいです。
ただ、2000環境では実行出来ていたので、なにが違うのかなと悩んでます。
0562デフォルトの名無しさん2006/06/14(水) 01:49:56
>>557
あいかわらずVB6JP.DLLは入ってないな。これがないせいで簡単なプログラムでもインストーラーが必要になる。
もっとも単にコピーするだけでもいいんだけど。
0563デフォルトの名無しさん2006/06/14(水) 02:16:06
>>562
VB6で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
VBSの質問ですがいいですか?
既にあるExcelファイルのあるセルにデータを上書きして
同名で上書き保存したいのですが上手くいきません
お願いします
0565デフォルトの名無しさん2006/06/14(水) 07:25:01
>>564
どういうコードを書いたら、どう上手くいかなかったのか?
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:08
VB6からADOを使ってOracleのPakageを呼び出そうとしているのですが
Procedureの引数で"TYPE abc IS TABLE OF VARCHAR2(10) INDEX BY BINARY_INTEGER;"なる
配列を使用したものがあります。これをCreateParameterで引き渡すにはどう書けばよいでしょうか?
0568デフォルトの名無しさん2006/06/14(水) 12:34:44
>>560
書き出し先にIISワーカープロセスの実行ユーザーの書き込み権限つけてる?
0569デフォルトの名無しさん2006/06/14(水) 13:09:56
>>563
をぅ、荒井さんの記事だ。

>>567
ADO でオラクルなんて問題外。
oo4o 使え。
ADO は、実質SQLサーバ限定みたいなもん。
05705602006/06/14(水) 13:53:40
>>568
IISの方でローカルアドミンを設定しているし、
書き込みもチェックついています
0571デフォルトの名無しさん2006/06/14(水) 14:25:00
>>570
ローカルアドミン?
LocalSystemの事を言ってる?
0572デフォルトの名無しさん2006/06/14(水) 15:09:54
>>560
「何らか権限がからんでるのかなあ」と思うなら、あらゆる権限を調べろよ。
そういうシステムって、思わぬプロセスに思わぬ権限が必要だからな。
0573デフォルトの名無しさん2006/06/14(水) 15:36:52
>>570
そのローカルアドミンとかいう権限で実際に書き込みしようとしているのか
0574デフォルトの名無しさん2006/06/14(水) 19:08:38
>>552です。
>>554、>>555の方々へありがとうございます。
おかげで当たり判定がうまくいきました。
0575デフォルトの名無しさん2006/06/14(水) 19:26:18
F-BASIC97というののCVIを使って書き込んだファイルが
ありまして、それをVBに読み込みたいと考えているので
すがダンプしてみると
000000 00 07 ** ** ** ** ** **
となっていました。
この最初の2バイト分をVBで読み込んで数値(integer)
にしたいのですがどうしたらよいでしょうか?
上のファイルの場合は7にしたいということです。
あとまだCVSで4バイトに書き込んであるデータもあります。
よろしくおねがいいたします。
0576デフォルトの名無しさん2006/06/14(水) 19:41:07
>>575
ファイルアクセスなんて基本中の基本。
ヘルプ見ろ。
0577デフォルトの名無しさん2006/06/14(水) 21:52:03
ローカルアドミンは、そのマシンのadministratorってことです。
所属ドメインのadministratorじゃなくて
0578デフォルトの名無しさん2006/06/14(水) 23:02:23
>>577
根本的にIIS6.0の事を勘違いしているようだ
2003ServerのIIS6.0のオンラインヘルプでワーカースレッド周りの説明を読み直して来い
0579デフォルトの名無しさん2006/06/14(水) 23:22:51
>>577
>>573
0580デフォルトの名無しさん2006/06/15(木) 08:54:25
>>576
見てもわかりません。
0581デフォルトの名無しさん2006/06/15(木) 09:39:54
>>580
君にプログラムを書くのは無理。
0582デフォルトの名無しさん2006/06/15(木) 16:56:42
F-BASIC97だのダンプだの言うから難しくなるんだよ

ファイルを2バイト読み込んで数値化

やるべきことはたったこれだけ。
ヘルプ見てもこれが解らないというなら581の通り精進すら見込めないので
プログラミング止めろ。
0583デフォルトの名無しさん2006/06/15(木) 20:10:25
バイナリで開いて、ASC関数を使って数値化、桁にあわせて256^nを掛ける
0584デフォルトの名無しさん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
584の続きです。
この問題は以下のように作りました。
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
>>584
単語名そのものが入る配列(words)と、登場回数が入る配列(counts)の二つを作る。大きさはCountWords()の戻り値。
配列に関しては、Dim, Redimのヘルプ参照。

で、文章の単語くぎりながら、配列wordsの全要素を調べて、配列wordsに登録してなければ登録する。
そのとき、その配列wordsの位置(インデックス)と同じ場所の配列countsもカウントアップする。

最後に、配列countsを全部調べて一番大きい数に対応する配列wordsの内容が答え。

大文字小文字を区別しない、に関しては、StrConv関数を使う。

わかんなかったら、またおいで。
05885872006/06/16(金) 20:25:26
あ、戻す単語は最初の表記ってことだから、配列wordsに入れるときにはもともとの文字列を入れて、
比較するときだけにStrConvを使ってね。
05895862006/06/16(金) 20:28:31
いぇ〜い、単語と文字を見間違えてたゼィ



orz
05905872006/06/16(金) 20:37:49
Split関数使えばもっと楽だね。課題の意図的にはNGかもだけど。
ちなみに配列の大きさを調べるのはUbound。
0591デフォルトの名無しさん2006/06/16(金) 20:53:56
そもそも、課題の丸投げって駄目なんじゃなかったっけ?
05925862006/06/16(金) 20:54:41
>>587さんみたいなやり方もあるし、一つの単語に着目して文章の最後まで走査する,
たとえば"you"なら文章の最後まで"you"を探して見つかったらカウントして・・・というやり方もある。
この場合、カウントするついでに既にカウントされましたよフラグを立てて処理を減らすこともできる。

最初に単語ごとに区切って配列にいれちゃうことが必須になるけどね。文字列とカウントされましたよフラグの
ユーザー定義型を作って。ちょっとやりすぎかもな。

いずれにしろ基本は人間がやってるのと同じってことだね。
0593デフォルトの名無しさん2006/06/16(金) 20:58:00
>>591
丸投げなんてしてないじゃん
0594デフォルトの名無しさん2006/06/16(金) 20:59:24
丸チ投げ
05955852006/06/16(金) 21:08:11
>>586
>>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:41
Dictionary オブジェクト使ってしまえ。ゲラゲラ
0597デフォルトの名無しさん2006/06/16(金) 21:13:40
>>595
まず、やりたい事全てを細かく順番に文章で書け。
それが出来たら、後はそれを一つ一つコードにするだけ。
0598デフォルトの名無しさん2006/06/16(金) 21:29:55
>>595
配列Redim 使っていいのなら出来たけど、使わないのはちこっとまんどくさい
0599デフォルトの名無しさん2006/06/16(金) 21:30:42
>配列RedimやSplit関数などは使わないようにと
自力でスプリットしちゃえ
0600デフォルトの名無しさん2006/06/16(金) 21:51:44
Function SplitText(s)
Dim 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
>>600
配列は使っちゃいけないらしいぞ
0602デフォルトの名無しさん2006/06/16(金) 22:27:54
>>601
そんな話どこにもないが
0603デフォルトの名無しさん2006/06/16(金) 22:35:24
>>601
>配列RedimやSplit関数などは使わないようにと指示があり
配列Redimって配列も含むんじゃと・・・Redimがだめってことかもしれないけど
ただ、Dim words(100) ここ Redimが駄目で100と逃げても・・・
0604デフォルトの名無しさん2006/06/16(金) 22:38:55
>>603
>>595をよく読んでみ。
固定の大きさで配列を定義するのは、宿題のような問題ではありがち。
そもそも個定数で作らなきゃ>>595のような発想ができない。
0605デフォルトの名無しさん2006/06/16(金) 22:54:47
Function CountWords(A)
Dim 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
>>605
えっと 4行目のReplaceはスペース2個です。
s = Replace(A, "□", "□□")
06076052006/06/16(金) 23:07:34
ああごめん 関数名は CountWords じゃなくて MostFrequentWord だね。

・・・あと、尻のスペースが増え続けるが気にするなw
0608デフォルトの名無しさん2006/06/16(金) 23:13:47
コード書いちゃうのは今回の場合やりすぎじゃないか?
課題でやってる>>584のためにならない。
0609デフォルトの名無しさん2006/06/16(金) 23:23:47
>>606
・大文字小文字を考慮する必要がある
・ピリオドを考慮する必要がある

Replaceも使っちゃ駄目そうだが。
0610デフォルトの名無しさん2006/06/16(金) 23:43:42
>>609
「単語(半角スペースで区切られたそれ以外の 文字の塊)」
にピリオドは含まれないのかな?
記号は文字じゃないだろって言われればそんな気もするけど

あとvbTextCompareで大小無視してます。


>>608
ごめんなさい。はなから役に立とうとは思っていません。
0611デフォルトの名無しさん2006/06/17(土) 00:05:40
>>610
大文字小文字は勘違い。スマソ。
単語は普通(つっこみ付加)、ピリオドやセミコロンなどの区切り文字は入れない。
0612デフォルトの名無しさん2006/06/17(土) 00:09:42
配列使わないでやってみた
Function 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:21
Function MostFrequentWord(A As String) As String
Dim 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:47
改行多すぎるって言われたから、無用な変数初期化省いてある。
0615デフォルトの名無しさん2006/06/17(土) 00:17:41
遊びで作ってみたけど、VBってやっぱりプログラム書き難いな
'===================
'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
06166152006/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
06176152006/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:50
ポイントだけ三行でまとめられないか
0620デフォルトの名無しさん2006/06/17(土) 02:19:49
Collectionはさすがに使っちゃ駄目だろ。
いや、何でもいいんです、解答じゃないからってことなら、SplitとDictionaryでFAじゃあるまいか。
0621デフォルトの名無しさん2006/06/17(土) 02:31:13
当方SSTabを使っているのですが、テスト環境で

Component 'TABCTL32.OCX' or one of its dependencies not correctly registered: a file missing or invarid

というメッセージが出て動かないらしいのです。
ランタイムなども全部最新にしてもらいました。OSは開発環境、テスト環境ともにXPです。

色々ググっても原因がわかりませんでしたので、質問させていただきました。
すみませんが、お力添えをお願いします。
0622デフォルトの名無しさん2006/06/17(土) 03:17:52
>>620
駄目って書いてないのならOKでしょ。
よっぽど馬鹿な教師でなければ高得点くれるだろ。
0623デフォルトの名無しさん2006/06/17(土) 06:10:33
>>621
ちゃんとインストーラでインストールしたの?
0624デフォルトの名無しさん2006/06/17(土) 12:29:07
>>623
動かない環境の方に、ディストリビューションウィザードで作って渡しても、ダメでした。
なお、他の環境(しかも同じくXP)では何もせずに正常に動作してるみたいです。
ますます謎。
0625デフォルトの名無しさん2006/06/17(土) 12:36:41
検索するといくらでも解決法がみつかるようだけど。。
検索もせずに質問する神経の方が謎だよ
0626デフォルトの名無しさん2006/06/17(土) 15:10:18
SSTabってVB2.0だぞ
0627デフォルトの名無しさん2006/06/17(土) 15:44:40
SSTabを使わない仕様に変更しました。
今テストしているのですが、今度は純粋にハングするようになったとのことです。

>>625
本当にありがとうございました。
06285852006/06/17(土) 16:39:16
585です。

昨日は、様々なアドバイスありがとうございました。
また、先生に再度、尋ねてみたのですが、配列Redimは使用しても良いとの事でし
た。

一応、とてもとても汚いコードですが出来ました。 
しかし、もっと美しく改善しようと思っているのですが、様々な条件の制約(あまり
様々な関数を使用しない)
のため、どう直したら良いか分かりません。

また、潜在的バグもあると思いますが、まだまだ未熟なため、気づきません。

どうか、チェックをお願いします。

これから、コードをのせます。
0629585 コ-ド12006/06/17(土) 16:45:30
>585です。続きです。
※汚くてごめんなさい。
また、以下に出てくる、関数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 コ-ド22006/06/17(土) 16:49:29
For j = 1 To CountWords(A)
For 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:03
>>624
XP上でVB6は動作保障されてないよ。
MSのサイトでは「一部不具合はあるが、動く」って書かれてるけど、
MSの動作保障なんて全くアテにはなりませんから。
0632585 コ-ド32006/06/17(土) 16:52:22
For m = 1 To CountWords(A)
check = 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
うん、Redim使えないのは変だと思ってた。
とにかく、課題クリアおめでとさん。
0634585 コ-ド3について2006/06/17(土) 16:55:56
632 は 一応 その頻出単語の回数の多い順に並べ替えたつもりです
06355852006/06/17(土) 17:00:04
>633
ありがとうございます!
0636デフォルトの名無しさん2006/06/17(土) 17:16:08
しかし、今更VB6を選択する教師ってのもな。
お里が知れるというか、自分がそれしかできないんだろうな。

C#、VB.NET、Javaなら学生も自分のパソコンで学習できるだろうに。
0637デフォルトの名無しさん2006/06/17(土) 17:17:44
ヒント:excel
0638デフォルトの名無しさん2006/06/17(土) 17:31:04
アルファベット"a"〜"z"が順に格納されている英字配列の 表記の仕方を教えてくだ
さい
0639デフォルトの名無しさん2006/06/17(土) 17:57:46
Print a(0),a(1),...,a(25)
0640デフォルトの名無しさん2006/06/17(土) 20:06:30
>639
a(0) = "a",
a(1) = "b",
・…
としかできないの?

もっとまとめて出来ないのでしょうか?
0641デフォルトの名無しさん2006/06/17(土) 20:08:43
表記の意味を教えてください
0642デフォルトの名無しさん2006/06/17(土) 20:10:57
a(i)=chr(97+i)
0643デフォルトの名無しさん2006/06/17(土) 20:31:58
>>638
こんな感じ?

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
>642
おお!
思いつかなかった!!
サンクス!
0645デフォルトの名無しさん2006/06/17(土) 21:16:56
>>641
代入のことを表記って言うのは常識
0646デフォルトの名無しさん2006/06/17(土) 22:42:23
VBSではGoToって使えないんですか?
教えてください
0647デフォルトの名無しさん2006/06/17(土) 22:54:45
>>646
http://www.google.co.jp/
0648デフォルトの名無しさん2006/06/17(土) 22:55:03
使えない。

http://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:04
じゃあどうやって構造化するんだ
0650デフォルトの名無しさん2006/06/17(土) 23:12:33
構造化って何ですか?
0651デフォルトの名無しさん2006/06/17(土) 23:56:37
簡単に言えば、Gotoをなくすことです。
0652デフォルトの名無しさん2006/06/18(日) 00:13:57
スパゲティ簡単でいいんだけどなぁ
0653デフォルトの名無しさん2006/06/18(日) 00:18:30
アセンブラなんかJUMPの嵐だもんな
0654デフォルトの名無しさん2006/06/18(日) 00:19:59
じゃあ問題なくVBSで構造化できますね!
0655デフォルトの名無しさん2006/06/18(日) 00:24:36
>>どっかから->>654
なにこのわかりやすい自演
0656デフォルトの名無しさん2006/06/18(日) 01:30:26
ループがネストになっているときのエラー脱出はGoToを使うのが正しい
0657デフォルトの名無しさん2006/06/18(日) 02:24:01
VB6での事で質問なんだが

Form.Controls
Frame.Container
PictureBox.Container

とかって何型なの
タイプライブラリにはIDispatch(VBのObject型)になってるんだけど
動作が VBA.Collection 同じだから TypeOf しても False が返るし

結局Object型だから詳しい型が分からないんだよな
0658デフォルトの名無しさん2006/06/18(日) 02:54:25
その前に型名が必要な理由を聞こうか。
0659デフォルトの名無しさん2006/06/18(日) 03:08:49
>>658
特に理由は無いんだが...

AddとかItemとかのメンバー持ってるから 何か型があるのかと思っただけ
0660デフォルトの名無しさん2006/06/18(日) 09:09:03
そういう風に論理的に整合的な解釈ができないからVBはウンコ言語だって
ずっと叩かれてたんだと思いますが。

コントロール配列だって実態はなんなのか釈然としないしね
0661デフォルトの名無しさん2006/06/18(日) 10:21:06
Form.Controls は Control 型?かなあ。
Control ctrl = Form1.Controls[0]
とか、そういうコードを書くけど。
いやしかし、それも Object 型が返ってきていると
考えると別にどれに入れてもいいわけか。

確かにちょっと悩む。
0662デフォルトの名無しさん2006/06/18(日) 10:30:55
>>660
叩いてたのはお前だけ。
0663デフォルトの名無しさん2006/06/18(日) 11:22:27
>>657
TypeNameで名称を見てみれば?
0664デフォルトの名無しさん2006/06/18(日) 13:58:09
言語環境は VBA 6.4 です。

さて、Microsoft Script Control を使用せずに、
ある変数(仮に VarTemp と宣言)を
その名前文字列("VarTemp ")で呼び出す方法はないでしょうか?

お手数ですが、ご教示願います。
0665デフォルトの名無しさん2006/06/18(日) 14:02:57
>>664
無い。

もっと具体的にやりたいことを書けば、何かアドバイスできるかも試練。
0666デフォルトの名無しさん2006/06/18(日) 15:23:55
>>664
何をやりたいかは何となく分かるが、それをやらなければならない設計がおかしい。
それに、「Microsoft Script Control」を使わない理由も。
0667デフォルトの名無しさん2006/06/18(日) 15:28:03
GetUserNameを使ってWindowsのログインユーザ名を知ることができますが
このユーザがどのドメインでログインしたかを知る方法はあるのでしょうか?
どなたかご教授願います。
0668デフォルトの名無しさん2006/06/18(日) 16:03:34
教授 ×
教示 ○
0669デフォルトの名無しさん2006/06/18(日) 16:19:33
教授でもOK
0670デフォルトの名無しさん2006/06/18(日) 16:20:28
教授でもOK ×
0671デフォルトの名無しさん2006/06/18(日) 16:25:08
教授でもOK
0672デフォルトの名無しさん2006/06/18(日) 16:29:13
コ-ディングの基礎を説明しているサイト教えて下さい!
どれくらいTabキ-でずらしていくとかです!
0673デフォルトの名無しさん2006/06/18(日) 16:46:40
教示とか教授とか使い慣れない敬語は使わずに、普通に教えてくださいじゃだめなのか。

つGetUserNameEx
0674デフォルトの名無しさん2006/06/18(日) 17:05:55
>>672
そういうのはプロジェクト毎に決まってるよ。
0675デフォルトの名無しさん2006/06/18(日) 17:40:45
>>674

その決まりがわからないのですよ。
VBでの決まりを教えて下さい。
又は、サイトを
0676デフォルトの名無しさん2006/06/18(日) 17:41:45
逆切れきたよ
0677デフォルトの名無しさん2006/06/18(日) 18:22:45
別に逆ギレはしてないだろw

>>675
「コーディング規約」とかで検索してみた?
0678デフォルトの名無しさん2006/06/18(日) 18:50:05
役に立つかは知らないが

つ「Code Complete」(Steve McConnell著)
0679デフォルトの名無しさん2006/06/18(日) 19:02:38
君がプロジェクトリーダーなら話は別だが趣味でやってるなら自分のセンスで書けばどう
0680デフォルトの名無しさん2006/06/18(日) 19:39:16
>>675
だからプロジェクト毎に決めるんだよそれは。
自分だけの趣味プログラムなら、自分が決めればいい。
0681デフォルトの名無しさん2006/06/18(日) 20:04:41
VBなんだからインデントのやりかたなんて決まってくるだろ。
プロジェクトなんか関係ない。
0682デフォルトの名無しさん2006/06/18(日) 21:39:29
>>681
残念、ハズレ
0683デフォルトの名無しさん2006/06/18(日) 22:06:17
個人的には関数内の全行を一律で一段インデントした上で、
入れ子一段あたり、タブキー一回分でやってる。
0684デフォルトの名無しさん2006/06/18(日) 22:33:36
っていうかVBじゃCみたくインデントの流儀で論争になったりしないでしょ?
実際迷うことあるか?w
{}もifのぶら下がりの問題もないのに。

だから質問者が釣りでなくマジで聞いてるなら、回答としては
そこらにゴロゴロ転がってるサンプル眺めてそのとおり真似しろ、でいいでしょ。

>>683みたいになんでもバカ正直に回答すりゃいいってもんじゃないと思うけど
0685デフォルトの名無しさん2006/06/18(日) 22:35:15
つーか、いまからVB始める気かよ
0686デフォルトの名無しさん2006/06/18(日) 22:59:11
>>682
じゃあそのプロジェクトごとに違うというルールの例を2,3あげてもらおうか。
0687デフォルトの名無しさん2006/06/18(日) 23:12:55
>>686
0688デフォルトの名無しさん2006/06/18(日) 23:16:03
>>686
インデントが3バイトか4バイトか、とか、変数名の付け方とか、
逆に全てのプロジェクトで同じ項目なんて殆どないと思うが。
0689デフォルトの名無しさん2006/06/18(日) 23:22:40
バ、バイト?w
0690デフォルトの名無しさん2006/06/19(月) 00:09:55
脳内プロジェクト乙。
0691デフォルトの名無しさん2006/06/19(月) 10:29:21
>>689
1バイト空白が何文字分か、って事だろ。
0692デフォルトの名無しさん2006/06/19(月) 12:56:50
13歳の言うことなんかにかかわらないほうがいいよ。
0693遅いが、これはどう? split、Replaceだけ別で実装2006/06/19(月) 16:18:48
Private Sub Command1_Click()
Dim 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:05
何だ?急にコードだけ・・・
0695デフォルトの名無しさん2006/06/19(月) 18:14:11
accessの質問なんですけど、
ここで聞いた方が早いと思いまして。
エクスポートしたファイルに「,」が含まれているとエラーメッセージが表示される
というプログラムをつくりたいのですが
どうすればいいでしょうか?
0696デフォルトの名無しさん2006/06/19(月) 18:36:38
>>695
一度氏ねばいいと思うよ
06976932006/06/19(月) 19:41:47
>>584のコードだよ。
変な制約無かったらどう実装するか
0698デフォルトの名無しさん2006/06/19(月) 20:20:38
>>695
先頭から一文字一文字取り出して比較すればいい。
0699デフォルトの名無しさん2006/06/20(火) 09:59:50
誰か教えてくだされ、、
コマンドライン引数が入っているか判定するにはどうすればいいんでしょうか?
どんな関数を使えばいいのでしょうか??
お願いいたします
0700デフォルトの名無しさん2006/06/20(火) 10:04:28
>>699
っCommand$
0701デフォルトの名無しさん2006/06/20(火) 10:07:26
Len(Command$)
0702デフォルトの名無しさん2006/06/20(火) 10:25:44
ありがとうございます!
0703デフォルトの名無しさん2006/06/21(水) 22:23:35
すみません、
VB6 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:16
>>703

Win32API質問箱 Build43
http://pc8.2ch.net/test/read.cgi/tech/1148005509/
0705デフォルトの名無しさん2006/06/21(水) 23:05:47
>>703
素直にOCX使った方がいいよ。
0706デフォルトの名無しさん2006/06/21(水) 23:25:50
>>703
p-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
>>708
多分だけどAPIコールのときに型を厳密に言うと間違ってる部分とかがあるんじゃないの?
最適化を有効にした場合、その辺りでAPIコールが引っかかる場合が昔あった。
0710デフォルトの名無しさん2006/06/23(金) 04:07:16
なんかAIPの宣言違ってるっぽい
Declare 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
>>710さん
手持ちの書籍では
"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:26
>>711
Win32APIでのBOOLは4バイトなんだけど。
0713デフォルトの名無しさん2006/06/23(金) 17:18:38
文字数判定とIsdate関数を組み合て
YYYY/MM/DDという形式の日付だけ通して
それ以外を弾きたいのですが、
文字数判別はどのような関数を使えばよいでしょうか??
0714デフォルトの名無しさん2006/06/23(金) 17:18:42
>>711
Windows APIのBOOLは>>712の言うとおりであって、VBのBooleanとは別物。
0715デフォルトの名無しさん2006/06/23(金) 17:49:55
>>713
文字数判定する必要なくね? 
ISDATEだけでいいんじゃね?
0716デフォルトの名無しさん2006/06/23(金) 18:11:43
>>715
馬鹿ですか?
0717デフォルトの名無しさん2006/06/23(金) 18:16:40
>>716
vb使いの癖に偉そうにしないで下さい。
0718デフォルトの名無しさん2006/06/23(金) 18:23:06
>>713
Len() じゃないの? VBの事、もう忘れてるけどw
0719デフォルトの名無しさん2006/06/23(金) 18:34:11
>>713
っMid$
0720デフォルトの名無しさん2006/06/24(土) 01:02:50
Winampに複数のファイル名を渡す方法分かる方いらっしゃいますか?
コマンドラインで渡すと遅いし渡すファイルの数に限りがあるみたいで。

SendMessageを使うって所までは分かったんですけど、うまく渡せていないようで、Winampが強制終了してしまいます。
ご存知の方がいらっしゃいましたらお願いします。
0721デフォルトの名無しさん2006/06/24(土) 01:30:21
めんどくせ
0722デフォルトの名無しさん2006/06/24(土) 02:21:56
m3uをテンポラリに作って食わせるのではいかんのか?
0723デフォルトの名無しさん2006/06/24(土) 06:22:28
SendMessageで何らかのアプリを操作する方法なんて、完全にVB関係ないじゃん。
偶々そのSendMessageをVBから呼ぶにしても、VB関係してるのはVBでのAPI宣言の書き方くらいだな。
0724デフォルトの名無しさん2006/06/24(土) 09:54:09
>>720
っスレ違い
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:51
ListIndex=-1
07277252006/06/24(土) 18:41:56
>>726は私へのレスですか?
Elseの後に入れてみましたが駄目でした。
そのまま入れるだけでは駄目なんですか?ちょっと調べてみます。
有難うございました
0728デフォルトの名無しさん2006/06/24(土) 18:49:05
コンボボックスのリストを再表示させたい(ドロップダウン)なら、SendMessageで出来るよ。
SendMessageはVBの機能ではなくAPIなので使い方が解らなければそっちのスレでどうぞ。
0729デフォルトの名無しさん2006/06/24(土) 18:52:34
エスパーが必要だなw
質問を書いてある通り額面どおり受け取ると、
ユーザーを殴ってでも再入力を強制するロボでも接続しる、
と回答したくなるw
07307252006/06/24(土) 19:15:32
>>728
使い方がよく分からないのでぐぐってみます。有難うございました。
>>729
表現がおかしかったですか?反省です。
言いたかった事は、コンボボックスがデフォルトのままで選択されずに実行ボタンが
押された時にメッセージを出してもう一度選択を促したいだけなんです。
そもそもifを使うのがおかしいのですね?多分。
方法を考えます。有難うございました。
0731デフォルトの名無しさん2006/06/24(土) 19:19:59
>>730
なら話は比較的簡単じゃないか。
コンボボックスのアイテムが選択されるまではボタンをEnabled = Falseにしとけばいい。

というか、そもそもそのボタンとやらは本当に必要なんだろうか
07327252006/06/24(土) 19:38:17
>>731
なるほど!確かにその方法でも大丈夫です。
コンボボックスのアイテムが選択されたかどうかを判別する方法が分からない
ので調べてみます。
0733デフォルトの名無しさん2006/06/24(土) 19:44:45
>>730
既に選択した状態を消したい、って事?
ちゃんと日本語で質問してくれ。
07347252006/06/24(土) 20:05:35
>>733
既に選択した状態を消したい、とは考えていません。
選択されていない状態の時に「選択されてませんよ」ってメッセージを出して
ユーザーに選択をさせ直すようにしたいのです。
そんなに日本語変?
0735デフォルトの名無しさん2006/06/24(土) 20:16:25
>>725
>コンボボックスがデフォルトのまま…

っていうのは、コンボを未選択状態(ListIndex=-1)にしているのか?
それとも、デフォルト状態という設定をコンボボックスにしているのかによって、
判定方法が変わってくると思うのだが…

07367252006/06/24(土) 20:20:07
>>735
未選択状態って言うのは(ListIndex=-1)の状態です。
何かこれ以上続けるとスレ汚しになりそうなので(私が未熟なために)、方法も
含めて最初からやり直してみます。

レス頂いた皆さん、有難うございました。
0737デフォルトの名無しさん2006/06/24(土) 20:41:15
>>734
「選択されていない状態」を知りたい、って事なのか?
0738デフォルトの名無しさん2006/06/24(土) 22:09:54
ここは国語の勉強をするスレですか
0739デフォルトの名無しさん2006/06/24(土) 22:21:40
本当は正しい用語があるんだけど質問する側も答える側もそれを使わないから会話がかみ合わない
0740デフォルトの名無しさん2006/06/24(土) 22:33:17
そして739も実は正しい用語を知らないから、余計ややこしいw
0741デフォルトの名無しさん2006/06/24(土) 23:06:48
で、本当の質問は何なの?
0742デフォルトの名無しさん2006/06/24(土) 23:21:14
>>741
それ。
0743デフォルトの名無しさん2006/06/25(日) 01:18:13
If a = 1 Then abc
ElseIf a = 2 Then def
End If

と書いてるんだが実行しようとすると'Elseに対するIfがありません'って出る
それで
If a = 1 Then abc
End If

と書くと'End Ifに対応するIfブロックがありません'て出るんだが

これはif文が間違ってる?
それとも他の場所が間違ってる?

因みにVB5CCE
07447432006/06/25(日) 01:25:40
自己解決
thenの後の改行だった

俺の見たサイトで横幅の都合上改行してるのかと思ったorz
0745デフォルトの名無しさん2006/06/25(日) 11:51:45
VB.NETでちょっとしたテキストエディタを作っているのですが、
普通エディタには、テキストエリアの左側に、灰色の文字で現在行が表示されているものですが、
あれはどのようにして表示させているのでしょうか?
いろいろ試したのですが、描画速度が遅かったり、重すぎて使い物にならなかったり・・・
この問題を解決してくれるコントロールやプロパティがあるのでしょうか?
0746デフォルトの名無しさん2006/06/25(日) 11:54:05
>>745
まずはスレタイや>>1をじっくり読んでみることを進める。
0747デフォルトの名無しさん2006/06/25(日) 16:17:06
CInt(Math.Rnd()*f1sw)
CInt(Math.Rnd()*f1sh)
ってやってランダムにleftとtop決めてオブジェクト流してるんだが、何度実行しても同じ場所にしか出ない
キャッシュみたいなのがあるの?
そうで無ければプログラムのミスかな
0748デフォルトの名無しさん2006/06/25(日) 16:37:15
> プログラムのミスかな
うん
0749デフォルトの名無しさん2006/06/25(日) 17:30:50
オブジェクトを流す、ねぇ・・・
0750デフォルトの名無しさん2006/06/25(日) 17:34:16
一般的に言語標準の乱数発生機能は数学的に作り出す擬似乱数で乱数の種(初期値みたいな物)が同じだと同じ結果を返す
0751デフォルトの名無しさん2006/06/25(日) 18:14:52
>>750
そうなのか
ありがとう

>>749
ゲームの背景に星流そうとしてるからそう書いた
0752デフォルトの名無しさん2006/06/25(日) 18:19:48
文字列で書かれた数式を、数式として扱うことはできますか?

例えば、テキストボックスに
y=c0*x
と書き、別のテキストボックスでc0とxを与えたときに、yを計算させる、というようなことです。

みなさまの知恵をお貸しください。
よろしくお願いします。
0753デフォルトの名無しさん2006/06/25(日) 19:27:48
>>752
つeval
0754デフォルトの名無しさん2006/06/25(日) 19:28:35
>751
Rnd関数の説明に対処方法も書いてある。
07557522006/06/25(日) 20:06:39
>>753
返信ありがとうございます。

"eval"でぐぐってみました。
どうやらVB6.0では使用できない関数らしいですね(VB Script 5.0で使える?)。
書き忘れていて大変申し訳ないのですが、当方VB6.0を使用しております。

もしご存知でしたら、VB6.0でeval関数を使用する方法をお教えいただきたいです。
よろしくお願いいたします。
0756デフォルトの名無しさん2006/06/25(日) 20:08:33
>>755
ヒント:VB6からVBSは使える
0757デフォルトの名無しさん2006/06/25(日) 20:31:10
>>755
ScriptControlによるeval
ttp://homepage2.nifty.com/Dee/vb/tips/vb/vbscripteval.html
0758デフォルトの名無しさん2006/06/25(日) 20:35:38
>>756
マジで?

外部のVBSを実行したり、WSHの公開オブジェクトを参照したり出来るのは知ってるが
VBS自体が使えるのは知らなかった。
>>757みたいにScriptControlオブジェクトのEvalではなく、VBSのEvalを使う方法を紹介してくれ。
0759デフォルトの名無しさん2006/06/25(日) 20:59:06
>>758
頭悪いんじゃないの?
つか、ぐぐれよ
0760デフォルトの名無しさん2006/06/25(日) 21:20:13
所ジョージさんのアタマ〜
07617522006/06/25(日) 21:46:25
>>756
>>757
ありがとうございます。
紹介していただいた方法を参考に、少し調べてみようと思います。
どうもありがとうございました。
0762デフォルトの名無しさん2006/06/25(日) 22:13:59
758≠752か…
0763デフォルトの名無しさん2006/06/25(日) 23:59:09
>>758
ぷぷぷぷぷ〜〜〜 『VBS Eval』でググッタラ一番上に出てきたよ〜〜〜〜〜ww
0764デフォルトの名無しさん2006/06/26(月) 00:05:30
>>763

 ま た お 前 か
0765デフォルトの名無しさん2006/06/27(火) 22:25:34
Visual Basic 6.0、多分SP6、OSはWindows2000です。

Selectした結果をListViewに表示、かつ
同じく結果をテキストに出力というコードを書いてます。

ダイナセットからレコード件数ずつループしてListViewに追加、
MoveFirstした後にまたレコード件数ループしてテキスト出力。

この時、ListViewとテキストのレコード順が違うのです。
ListViewが勝手にソートしちゃってるとかあるんでしょうか?

初心者な質問ですみませんが、お力をお貸し下さい。
0766デフォルトの名無しさん2006/06/27(火) 22:29:14
>>765
Sort有効ならあるよ
0767デフォルトの名無しさん2006/06/27(火) 22:32:55
>>766
早い反応ありがとうございます。

書き落としですね、すみません。
えっと、プロパティで確認しても、無効にしてあるんです。
0768デフォルトの名無しさん2006/06/27(火) 22:35:28
教えていただきたいことがあります。
VBAの方でユーザーフォームのメニュー選択画面を作っているのですが、
工程毎に幾つも項目があり、この工程と項目を関連付けする為に線を引きたいんですが、
どうすれば良いのでしょうか?
0769デフォルトの名無しさん2006/06/27(火) 22:52:09
>>767
>550 みたいに追加の仕方が悪いんじゃないよねぇ?
0770デフォルトの名無しさん2006/06/27(火) 22:57:49
>>765
追加する度に追加するテキストと追加後の結果を見ればわかるだろう
07717652006/06/27(火) 23:07:52
>>769
いえ、indexは省略しています。
ソートによる空白の扱いが、テキストと違うのが気になっています。
数字と平仮名があつ時、数字項目に空白があった際、

<ListView> <テキスト>
””,あ       01,あ
"",い       01,い
01,あ       02,あ
01,い       02,,い
02,あ       ””,あ
02,,い       "",い

こんな風になるんです。

>>770
その通りですね……。
今手元にコードも開発環境もありませんが、確認してみます。
0772デフォルトの名無しさん2006/06/27(火) 23:57:11
お客様VBAのほうおまたせいたしました
0773デフォルトの名無しさん2006/06/28(水) 04:20:19
age
0774デフォルトの名無しさん2006/06/28(水) 09:37:32
>>765
一つのループで追加と書き出しできないの?
0775デフォルトの名無しさん2006/06/28(水) 14:50:47
フォーム上でF12を押したら処理を開始という風にしたいのですが、
これって問題ありなんですかね?
ファンクションの事を調べていたらこんな事があったようなので・・・
http://pc.2ch.net/test/read.cgi/pcnews/1055757832/l50

これってファンクションキーは使っては駄目ということなのでしょうか。
0776デフォルトの名無しさん2006/06/28(水) 15:15:52
>>775
駄目じゃないけど普通は使わない。
0777デフォルトの名無しさん2006/06/28(水) 17:46:08
コンボボックスでそのコンボボックスが開かれている(ドロップダウンされているといったら
いいのかな)状態か閉じている状態かを取得する方法は無いでしょうか。
0778デフォルトの名無しさん2006/06/28(水) 19:05:04
そんなことを知ってどうするのかのほうが気になる
0779デフォルトの名無しさん2006/06/28(水) 19:54:31
気にすんな。
0780デフォルトの名無しさん2006/06/28(水) 20:27:59
>>777
まぁ少なくともフォーカスのない時は閉じてるわな。
07817772006/06/28(水) 22:43:35
閉じてるときに文字列入力してEnter押したらリストの中から入力文字列を含むItemだけを抽出して
コンボボックスを開く。
開いてるときにEnter押したら、単にコンボボックスを閉じるということをやりたいのです。
0782デフォルトの名無しさん2006/06/29(木) 01:52:04
一文字入力ごとにリストがでるAJAXのほうがかっこいいのに
0783デフォルトの名無しさん2006/06/29(木) 09:23:08
>>782
誰もそんな話をしてないし。
ここで未だにVB6でやってる時点で前提があるんだから。
0784デフォルトの名無しさん2006/06/29(木) 10:26:14
>>781
「閉じてるときに文字列入力」って、何処に入力するか知らんけど、
テキストボックスだとしたら、入力した瞬間に閉じるのでは。
フォーカスが移動するし。
0785デフォルトの名無しさん2006/06/29(木) 13:18:07
>>782
VBでやってAJAXよりも遅かったら悲惨
0786デフォルトの名無しさん2006/06/29(木) 17:28:23
> VBでやってAJAXよりも遅かったら悲惨
と感じる人が居るのは否定しないが、
そう感じない人が居ることも認めようね。
そもそも早さ最優先ならこのスレには来ないだろw
最初から他の言語を選ぶはずだ。

質問には、妥協案や「俺ならこうする」的な自己中回答ではなく
出された条件を満たす回答を心がけよう。
もちろん情報として他の方法を紹介するのは悪くないが
それを紹介して「コレの方がいいからコレでやれ」的なのは止めような。
「コレの方がいい」かどうかは質問者が決めることだから。
0787デフォルトの名無しさん2006/06/29(木) 17:30:02
>>786
なぜか知らんが非常にむかつくレスだ。
0788デフォルトの名無しさん2006/06/29(木) 19:17:02
>>786
「これの方が良い」との結論に納得するかどうかは質問者の自由だが、
「これの方が良い」と主張する自由が回答者にもある
0789デフォルトの名無しさん2006/06/29(木) 19:28:15
これの方が良いのブルース
0790デフォルトの名無しさん2006/06/29(木) 20:18:32
>>786
                    __   /   /
                  //⌒ヽ /  /
               _, - ''  .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
>>786
なんなんだ、この馬鹿は。
読んでてムカムカした。

はっ、釣り?
0792デフォルトの名無しさん2006/06/30(金) 00:04:01
言ってる事は間違いではないと思う。
書き方は、まぁ、偉そうだがw
0793デフォルトの名無しさん2006/06/30(金) 00:07:57
「認めようね」でもうブチギレですよ
0794デフォルトの名無しさん2006/06/30(金) 05:23:09
>>788
それは786が言ってることと同じだよ。
786は、回答者にも出された条件に合わない方法を主張する自由はあるが、
決定する自由は無いって言ってるだけだし。
0795デフォルトの名無しさん2006/06/30(金) 09:30:28
Form1のリストボックスを右クリック
   ↓
ポップアップメニュー
   ↓
項目クリック
   ↓
Form2をモーダルで起動
   ↓
Form2のリストボックスを右クリック
   ↓
ポップアップメニュー      ・・・が出ない


この流れを崩せない場合、Form2をモードレスで起動する以外に、
Form2のリストボックスからポップアップメニューを表示させる方法は
ないでしょうか?
0796デフォルトの名無しさん2006/06/30(金) 09:33:37
それって腐った仕様を押し付けられるデスマプログラマのことを言ってるのか
0797デフォルトの名無しさん2006/06/30(金) 09:57:36
>>795
モーダルは本当に不具合だらけだから、使わないのが常識。
07987772006/06/30(金) 12:04:33
>>784
説明不足ですみません、「閉じてるときに文字列入力」というのは
コンボボックスに文字列を入力ということです。
0799デフォルトの名無しさん2006/06/30(金) 13:02:41
>>797
モーダルで不具合って何?
0800デフォルトの名無しさん2006/06/30(金) 13:14:23
>>777
Enterなんか使わずにドロップダウンしたら入力されている
文字列の含まれるリストを表示するほうがよいのでは
0801デフォルトの名無しさん2006/06/30(金) 13:17:56
>>800
それでもよいのですが、ドロップダウンしたときに発生するイベントがないんですよね。。。
0802デフォルトの名無しさん2006/06/30(金) 13:53:00
あ、すみません、ぼけてました。DropDownイベント思いっきりありました・・・・
0803デフォルトの名無しさん2006/06/30(金) 15:01:56
>>799
毎回毎回不可思議な現象に巻き込まれるが、
結局何も分からないままほったらかしに・・・
0804デフォルトの名無しさん2006/06/30(金) 23:14:48
どうせ自分が理解してないだけだろ。
0805デフォルトの名無しさん2006/07/01(土) 12:23:12
>>804
ヒント: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:30
>>806です。書き忘れすみません。
HitoとBlockは、Imageを使っています。
0809デフォルトの名無しさん2006/07/01(土) 17:40:45
>>808
お前はVB使うな。そしてゲーム作成板へ行け。
0810デフォルトの名無しさん2006/07/02(日) 09:33:46
>>806
「AfterJump」イベントと「BeforeOnBlock」イベント使えばいけると思うよ
0811デフォルトの名無しさん2006/07/02(日) 12:32:35
Hito.Left = Block.Left
Hito.Top = Block.Top
0812デフォルトの名無しさん2006/07/02(日) 14:12:15
いしのなかにいる
0813デフォルトの名無しさん2006/07/02(日) 14:24:59
>>806です
ありがとうございます。
やってみます。
0814_2006/07/03(月) 07:29:30
Inet使ってHTTP通信を行っているんですが、
サーバから302 Moved Temporaryが帰ってきた場合に
自動でリダイレクトし移動先に通信してしまいます。

自動リダイレクトを停止して302のページが取得したいのですが、
Inetでできるんでしょうか?
0815デフォルトの名無しさん2006/07/03(月) 12:26:21
>>814
socketのAPI使ったらいいんじゃない?
0816デフォルトの名無しさん2006/07/03(月) 12:59:50
>>811-812 ワラタ
0817デフォルトの名無しさん2006/07/03(月) 23:10:27

VBScriptの質問も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:45
>815

Inet以外でHTTP通信する方法はないでしょうか?
0819デフォルトの名無しさん2006/07/03(月) 23:39:04
>>818
あるよ。
0820デフォルトの名無しさん2006/07/03(月) 23:46:17
ナイアル厨って定期的に湧いてくるのなw
0821デフォルトの名無しさん2006/07/03(月) 23:53:09
ちゃんと答えでてるし。
0822デフォルトの名無しさん2006/07/04(火) 02:18:49
>817
「readyState=4」が書いてあるのでヒントだけ。
・Do〜Exit Do〜Loop
・時間を計る
あんたならこれで分かると思う。
0823デフォルトの名無しさん2006/07/04(火) 04:15:00
いい質問のあとでアホなこと聞いてすみませんが
VBSで

msgbox "処理中"
   ↓
(重い処理)
     ↓
(メッセージボックス閉じる)

ってできるんでしょうか?時間指定で閉じる方法はぐぐって見つけたのですが・・・
0824デフォルトの名無しさん2006/07/04(火) 10:28:10
>>823
MsgBox を表示したら、それを閉じる迄
コードは其処で止まるんだが。
0825デフォルトの名無しさん2006/07/04(火) 10:42:21
>>823
Main.vbs       Msg.vbs
処理開始
├───起動─→msgbox "処理中"
│
↓
処理完了
├───通知─→(メッセージボックス閉じる)
↓               ↓
終了             終了


意地でも1ファイル内で済ませたいなら知らん
0826デフォルトの名無しさん2006/07/04(火) 11:45:02
作成したexeファイルに引数をつけてバッチファイルとして実行したいのですが
その部分のコードはどうやって記述すればいいのでしょうか?

例えば
test.exe batch
このようにしたいのです。
0827デフォルトの名無しさん2006/07/04(火) 11:47:22
command
0828デフォルトの名無しさん2006/07/04(火) 12:59:24
>>827
それはどこでやればいいのでしょうか?
重ねてソースコード上でどのように書けばいいのかと
バッチファイル自体はどうやって作るかも教えて頂けるとありがたいです。
0829デフォルトの名無しさん2006/07/04(火) 13:02:36
>>824
>>825
ありがとうございました。確かにそうですよね
ですが私はメッセージボックス閉じる方法すら判らない厨でして。。。
ぐぐってきます
0830デフォルトの名無しさん2006/07/04(火) 13:03:49
>>828
http://pc8.2ch.net/test/read.cgi/win/1116131036/
0831デフォルトの名無しさん2006/07/04(火) 13:07:50
>>830
すいません。バッチファイルについてはスレ違いでした。
もう1つ、引数として何が指定されたかを
VBのソースコード上でどのように判断すればいいかわからないのです。
0832デフォルトの名無しさん2006/07/04(火) 13:14:51
>>831
答えてもらってるんだから少しは自分で調べろよ
0833デフォルトの名無しさん2006/07/04(火) 13:35:33
>>831
お前のブラウザでは >>827 が表示されないのか?
0834デフォルトの名無しさん2006/07/04(火) 15:30:19
StringやSpaceの使い方で気になったんだけど

例えば、ゼロやスペースがたくさん必要なときは
String$(100,"0")とかSpace$(893)とか書くよね

で、そんな変数やら項目がたくさんある流れのなかで、
数箇所少ない数のゼロやスペースが必要なときって

"000"とか"   "
String$(3,"0")とかSpace$(3)とか

普通どっち使うもんかな

何個以上のスペースのときはSpace使うとか、
線引きみたいなの意識してる?

人それぞれ?
0835デフォルトの名無しさん2006/07/04(火) 17:31:50
質問する側もエスパーじゃないとダメなの? このスレって。
0836デフォルトの名無しさん2006/07/04(火) 17:36:14
>>834
普通即値なんて使わないでしょ。
「" "」が必要だとして、その3バイトの空白には
必ず意味がある筈なんだから。
そういう意味では、Space$(893) も失格。
この「893」という値には意味がある筈なので。
0837デフォルトの名無しさん2006/07/04(火) 19:43:14
>>836
どゆいみ? 
0838デフォルトの名無しさん2006/07/04(火) 19:52:44
>>837
「コーディング規約守れ」って事らしい
0839デフォルトの名無しさん2006/07/04(火) 19:54:41
ハードコーディングすんな
08408172006/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:59
>817
tTimeA = この時点での時刻(秒単位でもミリ秒単位でも好きに)
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:03
>823
VBSでできるかどうかしらんが、VBなら
・メッセージボックスはMsgBoxじゃなく自分で似たデザインのを作る
・軽い処理ならその似非メッセージボックスに閉じていいかどうか条件判断させる
・重い処理なら重い処理中に似非メッセージボックスを閉じていいかどうか条件判断させる
という感じがいいと思われ。

>834
例えばSpace$(893)の「893」をConstできるか?という観点で
考えたらいいんじゃね?
ConstできるならSpace$使わんでもいいし、
できんなら使った方がよかろうし。
0843デフォルトの名無しさん2006/07/05(水) 04:35:05
>>842
ありがとうございました。
VBSではどうやら自分デザインは出来ないみたいなんですよ

今更とか言われてるけどVB覚えてみようかな
08448172006/07/05(水) 07:04:38

>>841
そういった方法だと、
「待てる限界時間」を基準にすると、鯖が重いときに正常取得出来ず、
正常取得できる時間を基準にすると、「待てる限界時間」を越えてしまうという話です。
datが無いなら無いで、きちんとStatus=404なりなにかを取得出来る方法を探してます。
08458342006/07/05(水) 10:22:01
>>836
普通に即値使うこともあるんだよね
バカでごめんよ

>>842
Constするべきならそうするけど
たった一つのプロシージャ内で、そこでのみ必要だよ、とかいった場合

893ものスペースはベタ打ちせずにSpace$(893)て書くけど
たった3、4のスペースだった場合は、どうなのかなと
0846デフォルトの名無しさん2006/07/05(水) 11:50:25
>>845
そのコードを死ぬ迄あんたがメンテするなら好きに書けばいい。
0847デフォルトの名無しさん2006/07/05(水) 11:50:50
>>845
たった、3、4でなくてそのスペースにはどういう意味が有るのかが重要
昨日の自分は別人と考えてプログラムを作る習慣をつけろ
08488342006/07/05(水) 12:12:39
>>845
うん

>>847
意味・・・単なるラベル表示のインデントだとか


要するに、そこに"000"かString$(3,"0")かを記述しなきゃいけない場合に、
あなたならどっち使う?
ってことなんだけどさ
それでもそこだけのためにConst準備しとくんだ、とか
絶対そんな状況にならないぞ、とかって人はスルーしてくれ
0849デフォルトの名無しさん2006/07/05(水) 13:01:15
つうか、コードのその箇所を探すっていう手間が理解できない人には何言っても駄目。
3が4になっただけで、コードを精査するわけだし、それが一箇所だという保証もない。
そもそも、その3文字っていうことの論理的な意味づけもできない。
08508342006/07/05(水) 13:49:06
>>849
考えすぎだと思う
まああんましイライラしないでくれ
0851デフォルトの名無しさん2006/07/05(水) 14:52:22
>823
ダメか。
んじゃ>825で出てる方法で重い処理内にMsgBoxを閉じるかどうか
判定する箇所を幾つか設けるしかないんじゃないかな。

VB覚えるのは賛成。
VBSやってりゃすぐ使えるようになるだろうし、
何より手数が増えるのは悪い事じゃないでしょ?

>817
だったら最初からそこまで書いてくれ。
こっちゃエスパーじゃないんだから。

>834
となるとやっぱり可読性かな。
流石にSpace$(893)の代わりに1byte spaceを893個書く事はなかろうがw
Space$(1)だったら1回きりなら" "と書いても可読性は落ちん、って感じで。

codeの該当箇所を探すって問題は、俺の場合はソースを直接read onlyでテキストエディタで開いて
正規表現とか使って探しちまうからあんまし参考意見は出せない。
共同作業の場合も相手にそのやり方教えちまうし。
0852デフォルトの名無しさん2006/07/05(水) 16:45:29
Constだの
Space$だの
"   "だの

見やすきゃ何でもいいだろうが
0853デフォルトの名無しさん2006/07/05(水) 17:43:10
頭の悪そうな質問をしてくださいスレなくなったと思ったらここか
08548172006/07/05(水) 20:52:44

>>851
はい、最初から「処理に時間の掛かる方法は避け」て
「datの存在の有無を直接判断できる方法」が知りたいと書いております。
>>851さんの「>817」はおそらく>>844宛てだと思われますが
自分としては、条件を後出ししたわけではなく、こういう理由で
最初書いた条件に合いませんと書いただけのつもりなのですが。

具体的にどの位の時間までOKか書かなかった非は認めますが、
「上記を含め」の「上記」に当たる方法が、正常にヘッダを取得できた場合よりは遅いとは言え
鯖が重くなければ0.5秒以下で終わるようなものなので、それより速い方法を探してるという意味で書きました。

引き続き宜しくお願いします。
0855デフォルトの名無しさん2006/07/05(水) 21:45:52
最初のカキコでVBSの質問だって書いてるのに、DoEventsとか出してくる
あたりからして、質問内容ちゃんと読んでないのだろうから、他の回答者を
待った方がいいと思われ。ここは回答者の質も様々だからな。
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:42
>>856
U = 0
For i = 1 To T
S = S * Exp(...)
If S < K Then
U = 1
EndIf

Next i
0858デフォルトの名無しさん2006/07/06(木) 01:02:12
u = 0;
For 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
>>858
クマー(AA略
0860デフォルトの名無しさん2006/07/06(木) 01:28:28
煽りながらミスすると恥ずかしいだけだぞw
0861デフォルトの名無しさん2006/07/06(木) 01:42:38
うーん857も858もうまくいかない・・・
神きぼんぬ・・・
0862デフォルトの名無しさん2006/07/06(木) 01:54:37
どううまくいかないのかかけ。
0863デフォルトの名無しさん2006/07/06(木) 02:02:06
858ので実行すると構文エラーになります。

857ので実行すると、目的関数である
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:20
エスパー同士勝手にやってろ
0866デフォルトの名無しさん2006/07/06(木) 02:37:26
>>863
お前が説明していない所がバグってる。
0867デフォルトの名無しさん2006/07/06(木) 02:38:32
857ので実行すると、目的関数である
CO = 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:36
>>863
Uが0なら0になるだろ
0871デフォルトの名無しさん2006/07/06(木) 09:38:58
格好は無理でもああいう落ち着いた話し方をしたいとかは思った
0872デフォルトの名無しさん2006/07/06(木) 09:42:54
華麗に誤爆
0873デフォルトの名無しさん2006/07/06(木) 12:37:42
十分ヒントにはなるはずの情報を活用する頭がないならあきらめろ。
0874デフォルトの名無しさん2006/07/06(木) 14:47:39
>>871 の「ああいう」ってのが >>869 を指しているのかと思って焦った。
0875デフォルトの名無しさん2006/07/06(木) 15:27:04
6桁の数値から、一見不規則な6桁の数値に変換して
かつ元の数値に戻せる簡単な方法があったら教えてください。

(例)
000001 → 916724 → 000001
000002 → 197537 → 000002
000003 → 721495 → 000003
0876デフォルトの名無しさん2006/07/06(木) 15:38:23
適当にXOR
0877デフォルトの名無しさん2006/07/06(木) 15:39:27
って6桁にならねーな、はは
0878デフォルトの名無しさん2006/07/06(木) 16:00:03
>>875
ハッシュで処理すればいいんじゃない?
0879デフォルトの名無しさん2006/07/06(木) 16:15:39
>>875
元の数を全部配列に記憶しておき、適当な乱数で6桁に変換すればいい。
元に戻すのは、配列の当該位置を参照するだけ。
08808752006/07/06(木) 16:30:47
ありがとうございます。ですが・・・

>>878
可逆でなくなったり、6桁以上になってしまいます。

>>879
元の数は0〜999999すべて発生するため
配列の確保や変換(シャッフル)の時間に問題が発生します。
0881デフォルトの名無しさん2006/07/06(木) 17:24:22
XORでいいじゃん。
0882デフォルトの名無しさん2006/07/06(木) 18:02:51
Visual Studio 6.0 を Windows Xp Professional にインストールしようとしたら、途中で止まってしまいます。
インストールは可能なんでしょうか?
0883デフォルトの名無しさん2006/07/06(木) 18:14:18
>>882
俺が実際に入れて使っているから可能
0884デフォルトの名無しさん2006/07/06(木) 18:18:10
>>875
フォームに
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:59
おっと

For i = 0 To 1000

を

For i = 0 To 999999

にしてくれ
0886デフォルトの名無しさん2006/07/06(木) 18:21:43
>>883
よろしくお願いします。
C:\Program Files\Microsoft Visual Studio\Common\Tools\VS-Ent98\Vanalyzr\VALEC.EXE
でユーザが取得できないというエラーでした。
その時はCDが1枚目で途中終了してしまいました。
ネットに接続したら上手く行くのでしょうか?
0887デフォルトの名無しさん2006/07/06(木) 18:29:19
>>886
http://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
>>887
ありがとうございます。
明日会社に出てから、さっそくやってみます。
0889デフォルトの名無しさん2006/07/07(金) 06:46:28
htmをテキストファイルとして取得して
その中から正規表現で_data0602.lzhを
_*.lzhで取得するところまではできたんですが。

取得した値を
rc = bObj.W3get("-d C:\_data -o ")
に代入してダウンロードさせる事ができません。

どうすればよいかご教示願えませんでしょうか?
0890デフォルトの名無しさん2006/07/07(金) 08:59:24
W3getとかのヘルプを読む
0891デフォルトの名無しさん2006/07/07(金) 09:27:28
>>884
tmp の値により a は一意にならないから
a から元の値を求めることはできない。
0892デフォルトの名無しさん2006/07/07(金) 13:10:24
vbsで質問です。以下のプログラムを書きました。
○に0〜10の数字を入れた時に正解にしたいのですが、違うになってしまいます。
ところがアルファベットを入れると正解になります。
なぜかわかる人おしえてください。。

chk = ○
if chk = [0-10] then
msgbox "正解"
else msgbox "違う"
end if
0893デフォルトの名無しさん2006/07/07(金) 13:49:33
>>892
chk = 5
if ((0 <= chk) Or (chk <= 10)) then
msgbox "正解"
else
msgbox "違う"
end if
0894デフォルトの名無しさん2006/07/07(金) 14:00:15
ほとんど正解
0895デフォルトの名無しさん2006/07/07(金) 14:11:54
>>893
OrじゃなくてAndだな。
08968922006/07/07(金) 14:12:30
アルファベットを入れた時もNGにしたいのですが、どうやれば良いですか?
0897デフォルトの名無しさん2006/07/07(金) 14:27:10
○前提1
 処理(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
>>897
リネーム処理なんてディレクトリエントリを書き換えるだけなので一瞬。
リネーム中は、そのファイルに対して何も処理は出来ない。
また、そのファイルが処理中なら、リネームは出来ない。
0899デフォルトの名無しさん2006/07/07(金) 15:36:54
>>898 ありがとうございます

>リネーム処理なんてディレクトリエントリを書き換えるだけなので一瞬。

ですよね?ただ、上にそう言っても、
「一瞬だろうが0ではないから、そのタイミングで「LOG.txt」に対する書込みが来たらどうするんだ」
とか言って納得しないんですよ。
(仮にそのタイミング「LOG.txt」がロック状態だとしたら欠落するから)

MSか何かその辺りの仕様の記されたものってありますかね?(今のトコみつからない
       
リネーム ■     ■  (リネーム2回
ログ書き   ■■■  ■
CPUの割当てがこうなら間違いないと思うんですけど

リネーム |||||     ||||| (リネーム2回
ログ書き  ||||||||||||||| |||||
こんな感じだとしたらリネーム中のファイルの状態はどうなっているのか
0900デフォルトの名無しさん2006/07/07(金) 15:46:58
>>899
ディレクトリに数千〜数万ファイルあるとその書き込みにも数秒かかる(マジで)

あと、リネーム時のロック状態はネットワーク上のファイルとローカルファイルシステムでも動きが違う
0901デフォルトの名無しさん2006/07/07(金) 15:50:36
↑なので
ログファイルのオープンはリトライしろとかロックファイルは別に持つとかそんな感じで
0902デフォルトの名無しさん2006/07/07(金) 15:51:57
>>900 
同一フォルダ内には基本一か月分(30ファイル)です。
あって精々100ファイル程度かと

ファイルはローカルです。
0903デフォルトの名無しさん2006/07/07(金) 15:53:52
>>901
「wLOG.EXE」は既製品なので手を加えられないんですorz
0904デフォルトの名無しさん2006/07/07(金) 15:54:22
>>899
書き込み中のファイルはリネームなんて出来ない。そんなの数行ですぐ試せるだろ。
逆にリネーム中のファイルはオープン出来ない。そんなの数行ですぐ試せるだろ。
莫迦な「上」には昔本当に苦労したので、その辛さはよぉーーーーーーーーーーーく分かります。
めげないで頑張ってね。
ちなみに私の場合、例えばあるウィンドを開いていて、次に別のウィンドを最大化で開き、
その最大化したウィンドを最小化してアイコンにした場合、さっきのウィンドが下から現われるのは
お前のバグだ、とか色々言われました。
そんな「障害票」を100枚以上書かされたな。
0905デフォルトの名無しさん2006/07/07(金) 16:00:11
>>904
> 書き込み中のファイルはリネームなんて出来ない。そんなの数行ですぐ試せるだろ。
はい、実験済みです。

> 逆にリネーム中のファイルはオープン出来ない。そんなの数行ですぐ試せるだろ。
これが実験できないんですよ、
リネームは「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:27
質問は簡潔に書け。話はそれからだ。
0907デフォルトの名無しさん2006/07/07(金) 16:24:08
>>905
「AAA.Txt ←→ BBB.Txt」とかでひたすらリネームし続けるプログラムを動かしつつ、
その両方のファイルをオープンして何か書いて閉じ続ける別のプログラムも動かせ。
0908デフォルトの名無しさん2006/07/07(金) 17:26:20
>>907
・「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:54
既製品で修正できないって自分で言ってるんだから不可能だろ
0910デフォルトの名無しさん2006/07/07(金) 19:46:13
>>908
リネームして消すって何だ??
0911デフォルトの名無しさん2006/07/07(金) 20:26:49
>>897
経緯が良く分からないので疑問にだけ答える。

> ・リネーム処理はファイル状況によって処理時間に違いがあるのでしょうか?
>  10KBと1GB、あるいは無数に断片化している場合など、どうなるのでしょうか?
リネームはファイルのメタデータに対する更新なので、ファイルサイズや
ファイル本体の断片化などは関係ない。
FATもNTFSも同様。

> ・リネーム「Name "LOG.txt" as "WORK.txt"」の処理中のファイルの状態はどうなるのでしょうか?
>  ロック状態になるのでしょうか?
ファイルに対するアクションは、ファイルシステムがキューイングするので、
通常は、アプリケーションから見れば、「リネームされていない状態」か、
「リネームされた状態」のどちらかしかない。
「通常でない」場合というのは、そのアプリケーションが、物理ディスクの読み書きをする
アプリケーションの場合。
0912デフォルトの名無しさん2006/07/07(金) 20:34:44
>>910
普通はリネーム前に消す
0913デフォルトの名無しさん2006/07/07(金) 20:42:08
・追記に失敗しているというはどこから分かるの?
0914デフォルトの名無しさん2006/07/07(金) 23:18:34
>>910
「WORK.txt」は解析処理後に削除するので、試験プログラムでも削除。

「LOG.txt」-リネーム→「WORK.txt」-解析処理→「WORK.txt」削除 の手順。

>>911 
ありがとうございます。
「通常でない」場合は、「リネームされていない状態」「リネームされた状態」の他の状態があるとうこと?
…いや、ちがうか

>>913
「wLOG.EXE」が「LOG.txt」に書き込むときに、
「書き込むことができません。」っていうエラーが吐かれてましたので
0915デフォルトの名無しさん2006/07/07(金) 23:27:19
>>914
>「通常でない」場合は、「リネームされていない状態」「リネームされた状態」の他の状態があるとうこと?
通常のアプリケーションから見るとリネームされているが、ディスクには書き込まれてない状態
がありうる。Windowsは、ファイルのキャッシュだけでなく、メタデータも遅延書き込みを行う。
単なるアプリであれば気にする必要はない。
0916デフォルトの名無しさん2006/07/07(金) 23:45:09
そもそも、そんな事はアプリ側で何も気にせずガンガン処理すれば、OSが全てうまくやってくれる筈だが。
0917デフォルトの名無しさん2006/07/08(土) 00:04:59
>>916
wLOG.exeがどのような処理シーケンス(API呼び出し)でファイルに書き込んで
いるのかがわからなければ、そうはいえない。

>>914
そもそも、内部処理の仕様がわからないwLOG.exeを相手にした解析をするので
あれば、wLOG.exeが起動中に勝手にリネームしたり削除したりするのが間違い。
rLOG.exeは、起動単位ごとに、LOG.txtのどこからどこまでを解析したかを記憶
しておき、次回はその続きから解析するようにすべき。(シークする)

例えばUnixのデーモンプロセスなどは、ログファイルを切り替える通知を外部から
受け付ける機能を初めから実装している。wLOG.exeがそのような機能を持って
なくて、なおかつ内部構造が不明なのであれば、上記のような方法を取るしかない。
0918デフォルトの名無しさん2006/07/08(土) 00:34:14
>>915
Windowsの正規手順を無視したディスクアクセスってことかな?
そんなアプリあるの??


>>916
そう思ってましたw
でも処理ぶん回す試験PG作ったら何かエラーでたんですよorz


>>917
「ログファイルを切り替える通知を外部から 受け付ける機能」
は持っていなさそうなので、

> rLOG.exeは、起動単位ごとに、LOG.txtのどこからどこまでを解析したかを記憶
> しておき、次回はその続きから解析するようにすべき。(シークする)
の方法にするとすると、
LOG.txtの読み込みはシーケンシャルリードでは多少時間が掛かる…
(10M超のファイルで全行ループで1.数Secかかった。これはちょっとかかり過ぎ。

ランダムアクセスが可能かどうか、調べてきます…(やったことないもんで
0919デフォルトの名無しさん2006/07/08(土) 00:40:13
>>918
> Windowsの正規手順を無視したディスクアクセスってことかな?
そういうこと。たとえばデフラグとかがそういうものに該当する。
0920デフォルトの名無しさん2006/07/08(土) 00:40:17
んー、ログが固定長じゃないから厳しいのかな・・・?
0921デフォルトの名無しさん2006/07/08(土) 00:50:10
>>918
どんなエラーが?

>>919
ちゃんとデフラグAPIがあるんだが。
0922デフォルトの名無しさん2006/07/08(土) 00:56:28
>>918
>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:35
>>923
Shell "cmd /k copy /b " & Data.Files(1) & " + b.txt c.txt", vbNormalFocus
0925デフォルトの名無しさん2006/07/08(土) 11:49:47
>>921
ロックされてるファイルをOpenしようとしたときと同じエラーメッセージだった
0926デフォルトの名無しさん2006/07/08(土) 11:51:24
固定長じゃないテキストログにランダムアクセスする方法ってありますかね?

やっぱ、シーケンシャルに読むしかない?
0927デフォルトの名無しさん2006/07/08(土) 12:37:33
そりゃインデックスでもなけりゃむりだろ。
0928デフォルトの名無しさん2006/07/08(土) 12:44:12
>>925
つまりリネーム中でロックされてたのか。

>>926
あるよ。
0929デフォルトの名無しさん2006/07/08(土) 12:54:24
ナイアル厨w
0930デフォルトの名無しさん2006/07/08(土) 13:34:29
またナイアル厨厨か。
0931デフォルトの名無しさん2006/07/08(土) 13:57:19
速度求めるんなら、そこだけDLLにすりゃいいんじゃね?
処理対象分だけ切り出して、新しいファイルとして保存するみたいな。
Cなら20行もありゃできそうだ。
0932デフォルトの名無しさん2006/07/08(土) 19:08:38
多分、速度じゃなくて
信頼性が欲しいんだと思うよ
0933デフォルトの名無しさん2006/07/08(土) 21:32:43
>>891
tmpの値により一意になるはずなんだけど・・・
俺の環境じゃなる
0934デフォルトの名無しさん2006/07/09(日) 12:01:56
>>928
どんな手法がありますか?

Open〜for Randomじゃ無理っぽいんですけど
0935デフォルトの名無しさん2006/07/09(日) 13:20:07
>>934
いや 無理だよ
長さが変動する以上 ランダムアクセス じゃ無理
テキスト丸ごと読み込んで 先頭から解析するのが 一番簡単かも
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
>>939
いやいやそういう話でしょ。
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:01
いったい何がしたいのかは>>926に聞いてみるしかないんじゃないの?
0944デフォルトの名無しさん2006/07/09(日) 16:06:27
>>897=>>926じゃないの?
0945デフォルトの名無しさん2006/07/09(日) 16:07:14
>>926 と>>897 は違う人?
0946デフォルトの名無しさん2006/07/09(日) 16:36:10
質問者自身が、自分が何がやりたいのか理解してなくて
ちゃんと聞かないと、全く的外れな回答が続くな。
0947デフォルトの名無しさん2006/07/09(日) 16:57:36
>>926
データベース使えば簡単なんじゃないの?

freeのだったら、MySQL、PostgreSQL、SQLite、MS SQL 2005 Express
有料のものなら規模に応じて、Access、桐、Oracle

あとはVBとかで好きに加工すればいいでしょう
0948デフォルトの名無しさん2006/07/09(日) 17:02:33
え?>>926=>>897でしょ。
何やりたいかは本人も良く分かってるし、アドバイスしてる奴も一部を除いてよく分かってるでしょ。
0949デフォルトの名無しさん2006/07/09(日) 17:10:05
まあ>>926を待つってことで。
0950デフォルトの名無しさん2006/07/09(日) 19:17:59
実は全く関係ない奴が単発質問しただけってオチか
0951デフォルトの名無しさん2006/07/09(日) 19:24:40
実は、も何も文面だけ見れば全く別の無関係な質問、
と読むしかないと思いますが。。
仮に本当は同一人物による関連する質問だとしてもね。

最近こういう文章を文面どおり読む能力がないというか、
自分の想像妄想と一緒にしちゃって区別がつかない人って増えてるよね。
0952デフォルトの名無しさん2006/07/09(日) 19:44:59
何で同じ奴の質問だと決め付けてるのかサッパリ分からん。
09539262006/07/09(日) 19:49:40
>>926=>>897です。 色々議論ありがとうございます。

897の疑問と926の疑問は別ですけど、
897の問題からの派生で926の質問があります。(経緯は>>897->>926のログを…
また、926は、>>937の言うように、任意レコードへのランダムアクセスのつもりで言ってます。

>>932
信頼性を優先し、ある程度の速度も欲してます。
上の方にも書いてますけど、10M超のファイルで1.数Secかかってます。
これをせめて0.5Sec以下にもっていきたい。

>>938
この手法は興味深いので、ちょっと検討してみたます

>>947
まあ、「wLOG.EXE」がDBでインターフェースとってくれればいいんでしょうけど、
それは無理なので…
0954デフォルトの名無しさん2006/07/09(日) 21:08:47
無理と決め付ける人間に進歩はない
0955デフォルトの名無しさん2006/07/09(日) 21:25:55
文章長くて適当に流し読みしかしてないけど、
「やりたい事」と「やる方法」を間違えてる様な気が。
0956デフォルトの名無しさん2006/07/09(日) 21:43:58
>>951-952
ハズカシー
0957デフォルトの名無しさん2006/07/09(日) 22:17:02
>>955
いい方法があるなら、教えてあげなよ
0958デフォルトの名無しさん2006/07/09(日) 22:20:56
>>953
根本的なところの指摘なんだけどさ、例えば5秒おきに10MBのログを解析するって、
1行80byteだとすると1秒あたり25000行の解析になるんだよ。
VBで大丈夫なの?
0959デフォルトの名無しさん2006/07/09(日) 22:29:06
>>956
>>951 は恥ずかしくないよ。正論。
>>952 はちょっと恥ずかしいw
0960デフォルトの名無しさん2006/07/09(日) 22:37:13
>>959=>>951
自演乙。
0961デフォルトの名無しさん2006/07/09(日) 22:42:19
あー、もういいじゃん、>>926も再登場したわけなんだから
0962デフォルトの名無しさん2006/07/09(日) 23:04:30
質問を簡潔にまとめてくれよ。
36文字程度で。
09639262006/07/09(日) 23:53:21
>>958
1日最大(?)40000行くらいいくログで、
その内処理が必要なのは20000行弱(1行の処理は0.23Secくらいかかる)

それで、40000行くらいの中から、処理対象行数を走査するのに1.7Secくらい掛かりました。

タイマーは3秒〜5秒を想定しているので、いちいち頭から読むのはかかり過ぎかなと…

>>955
どういう方法がいいでしょうか?
0964デフォルトの名無しさん2006/07/09(日) 23:59:50
あー、5秒おきに起動するんじゃなくて、5秒ごとに解析したいわけね。
んじゃ、起動しっぱなしにしとけば?
そうすりゃ先頭からシークする必要ない。
0965デフォルトの名無しさん2006/07/10(月) 00:35:03
>>964
readモードでOpenしっぱなしにするって言うことですか?
ログの読み込みは

do until EOF(fileno)
line input #fileno strline
loop

ッテ感じでやってますけど、これを定期的にコールする?
0966デフォルトの名無しさん2006/07/10(月) 08:42:46
>>953
http://www.gluesoft.co.jp/wlog/Update.aspx
0967デフォルトの名無しさん2006/07/10(月) 09:07:03
>>966
いや、それじゃないww
例えで「wLOG.EXE」っていってるだけw
0968デフォルトの名無しさん2006/07/10(月) 13:32:46
はじめまして。
お聞きしたいことがあるのですが、VBで1÷7を計算して、
小数点以下50桁まで表示させたいのですが、
どのようにすればよろしいのでしょうか?
09698752006/07/10(月) 13:47:51
>>968
筆算をプログラム化する
途中で同じ数値になったら循環小数にする等の処理を加える

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
>>965
そのdo 〜 loop内に解析処理そのもの、あるいは読み込んだログを
メモリ上に保存するのなら、その通りだ。
0971デフォルトの名無しさん2006/07/10(月) 15:11:00
>>970
 Open 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
>>964
> んじゃ、起動しっぱなしにしとけば?
> そうすりゃ先頭からシークする必要ない。

これの意味が分からない。
「rLOG.EXE」は起動しっ放しです。タイマーで数秒置きに解析処理を実行します。

ファイルOPENしっ放しだと「wLOG.EXE」がログを落としてくれないので、都度Closeしなきゃならない。
そうするとシークする必要があるような気がする。

どうやったらシークを省いてダイレクトに増分から読み込めるのでしょうか???
0973デフォルトの名無しさん2006/07/10(月) 16:17:55
もういっそのことさ、Cで一行読み込んでくれるDLL書きなよ。
0974デフォルトの名無しさん2006/07/10(月) 16:23:45
>>972
>ファイルOPENしっ放しだと「wLOG.EXE」がログを落としてくれない
そんな重要なことは最初に書けよ。
だったら処理対象範囲のログを切り出すしかないだろ。
0975デフォルトの名無しさん2006/07/10(月) 16:24:44
いや、切り出すためにファイルをオープンしたら、その間も
wLOG.EXEはログを落とさなくなるのか?
だったら解析不能なんじゃね?
0976デフォルトの名無しさん2006/07/10(月) 16:36:40
だから最初にいったろ
wLOG.EXEがどんな場合でもログ吐いてくれるようにしてくれてないとダメなんだって
0977デフォルトの名無しさん2006/07/10(月) 16:41:19
ええ?VBのOpen For Inputステートメントって、書き込み権の排他ロックも
取得しちゃうの?なにそのくそしよう
0978デフォルトの名無しさん2006/07/10(月) 16:56:44
>>974
ファイルロック中はダメっていうのは試験済みで>>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
>>977
ごめんなさい。使ってたエディタ(EmEditorF)が悪かったみたい。
メモ帳ではOPEN中の更新できた。
0980デフォルトの名無しさん2006/07/10(月) 17:04:49
>>977
デフォルトがLock Read Writeじゃなかった?
0981デフォルトの名無しさん2006/07/10(月) 17:17:31
>>980
えええええ?
書き込み権のみならず、読み込み権の排他ロックまで獲得しちゃうの?
なんだそりゃ。
09829262006/07/10(月) 17:19:14
ランダムアクセスじゃないけど、読込位置の取得は
「Seek #intFileNo, lngPos」で出来ました。
lngPosは前回読込終了位置 「lngPos = Seek(intFileNo)」で記憶しとく。

これでシークタイムは高速化できました。

ただ、結局 「Open FilePath For Input As #intFileNo」 でダメだったから意味ないかな…
0983デフォルトの名無しさん2006/07/10(月) 17:28:49
Open For Binary は試してみたの?
09849262006/07/10(月) 17:32:05
Open FilePath For Input Access Read Shared As #intFileNo
Open FilePath For Binary Access Read Shared As #intFileNo

ともにダメ…
0985デフォルトの名無しさん2006/07/10(月) 17:43:00
だからCから試してみろと何度言ったら(ry
0986デフォルトの名無しさん2006/07/10(月) 17:46:58
なんでFSOとかAPI使わねえんだ?
0987デフォルトの名無しさん2006/07/10(月) 17:59:13
>>985
ファイルIOくらいなら書けると思うけど、Cは経験浅いので。
あとなるたけVBでやりたい。

>>986
FileSystemObjectは分かるけど、APIはどんなのあるか知らないのです。
けど、FSOにしてもAPIにしてもOpenステートメントと違うのかな??
0988デフォルトの名無しさん2006/07/10(月) 18:11:31
書き込みでLock Readしてるだけの話だが既製品で修正できないって
言ってんだったらもうあきれめれ。
0989デフォルトの名無しさん2006/07/10(月) 19:13:11
>>987
OpenFile ってそのものの名前のAPIがあるよ。
これなら、非常に細かく制御出来る。
0990デフォルトの名無しさん2006/07/10(月) 21:01:32
>>985
#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デフォルトの名無しさんNGNG
ワロスw
0993デフォルトの名無しさん2006/07/11(火) 02:09:43
ExcelのVBAについて質問。
現在ブック内に空シートを作成し、Excel側の印刷設定にて両面印刷を指定し、
2つのシートをselectしprintoutする事で両面印刷を行っております。

これをVBでの「Printer.Duplex = 2」のようにコード側(?)で設定してあげる方法はないでしょうか?

ご存知の方やそのヒントになりうる検索ワードをご存知でしたら教えてください。
0994デフォルトの名無しさん2006/07/11(火) 10:17:31
空シート印刷してどうするの
0995デフォルトの名無しさん2006/07/11(火) 10:36:52
>>992
何が?
0996デフォルトの名無しさん2006/07/12(水) 02:12:52
だな
0997デフォルトの名無しさん2006/07/12(水) 02:19:04
てst >>990
0998デフォルトの名無しさん2006/07/12(水) 05:19:38
そんなことより次スレ立ててくれ
0999デフォルトの名無しさん2006/07/12(水) 10:17:03
だが断る
1000デフォルトの名無しさん2006/07/12(水) 10:18:22
  .,。 ,。
(; Д )
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。