2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん: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/
※「まず自分で調べる」クセを身につけよう。

2 :デフォルトの名無しさん: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

3 :デフォルトの名無しさん: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/

4 :デフォルトの名無しさん: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/

5 :デフォルトの名無しさん: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/


6 :デフォルトの名無しさん: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 が以前のオペレーティング システムと同様に機能するようにしています。

7 :デフォルトの名無しさん:2006/05/04(木) 03:43:15
乙。

8 :デフォルトの名無しさん:2006/05/04(木) 05:54:45
前スレで遅いと叩かれていたけど、VC厨は比較して言ってるのか?
インタプリタって釣ってるだけだよな・・・。

9 :デフォルトの名無しさん:2006/05/04(木) 06:22:20
新しいP2Pのテスター求む
http://tmp6.2ch.net/test/read.cgi/download/1146675993/

10 :デフォルトの名無しさん:2006/05/04(木) 10:41:31
結局前スレの最後のアレ、何だったんだ。
遊んでただけか?

11 :デフォルトの名無しさん:2006/05/04(木) 10:58:13
>>10
VC++覚えたばかりの連休厨房でしょ
まあ、いずれにせよ

> 四.荒らしは相手しない。


12 :デフォルトの名無しさん:2006/05/04(木) 11:01:15
>>11
サンクス。

13 :デフォルトの名無しさん:2006/05/04(木) 11:04:01
このスレも自分が見えてない奴が多いなあ。
いや、一人で八面六臂の活躍wをしているのかもしれんが。

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

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

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

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

そして下らない煽りにいちいち反応すんなよ。餓鬼じゃあるまいし。

14 :デフォルトの名無しさん:2006/05/04(木) 12:01:33
VBの凄いところはIDEだと思う。
eclipseとか使うけど、VBほどの使い勝手のよさを感じられない
まぁ、「慣れ」かも知れないけど…


15 :デフォルトの名無しさん:2006/05/04(木) 12:16:13
VBしか使えないから固執してる図星野郎。
それが俺っち。

一応プログラマやってます。
派遣社員だけど。

16 :デフォルトの名無しさん:2006/05/04(木) 12:17:33
10倍も20倍も速いVC++で組めなくても、食っていければいいや。

17 :デフォルトの名無しさん:2006/05/04(木) 12:22:07
>>16
その考え方は正しいすな。
目的を達成できる安くて早い手段を採用すればよい。


18 :デフォルトの名無しさん:2006/05/04(木) 12:25:53
サンデーpな漏れもVBしか使えんけど目的のものが作れればそれでいいや

19 :デフォルトの名無しさん:2006/05/04(木) 12:27:42
そうだね。
MSXの時代は、BASICで作られたプログラムより、
C言語で作られたプログラムのほうが見違える速さで、
憧れの的だったけど、今となっては別にVBで十分な場合多いし。

20 :デフォルトの名無しさん:2006/05/04(木) 12:31:47

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

最終的にはバリバリの3Dゲームを作りたいのですが
VBでも十分でしょうか?

21 :デフォルトの名無しさん:2006/05/04(木) 12:33:49
>>20
今から敢えてVBを選択する意味はないです。
DirectX使いたいなら素直にunmanagedなVC++いっとけ。

22 :デフォルトの名無しさん:2006/05/04(木) 12:35:09
>>20
はじめはともかく最終的にはVBではキツいでしょう。

23 :デフォルトの名無しさん:2006/05/04(木) 12:36:40

レスありがとうございます。
最終的にはVC++を習得するとして
現時点で、入門用としてVBを使うことは推奨されることなのでしょうか?

24 :デフォルトの名無しさん:2006/05/04(木) 12:45:26
>>23
>>21

25 :デフォルトの名無しさん:2006/05/04(木) 12:45:41
>>23
階段も1段ずつだから、いいと思う。

26 :デフォルトの名無しさん:2006/05/04(木) 12:48:15
>>25
だからこそ一発目にトリッキーな言語を交ぜるのは推奨しないす。

27 :デフォルトの名無しさん:2006/05/04(木) 12:49:03
>>23
まあ、VB6でも使えることは使えるけどね >DirectX

このスレでこんなこと言うのもなんだが、
3Dゲームで画面描画は全部DirectX使うんなら
あえてVB6を使う利点はないと思うよ。

28 :デフォルトの名無しさん:2006/05/04(木) 12:49:31

ありがとうございます。
それではVBとVC++の間を取ってDelphiから始めたいと思います。
皆さんの意見は大変参考になりました。

29 :デフォルトの名無しさん:2006/05/04(木) 12:50:12
>>26
でも、ピッチの広い階段は大変だぞ。
入門だからまずアプリが作れたという満足感とか楽しさを進める

30 :デフォルトの名無しさん:2006/05/04(木) 12:52:00
>>29
んじゃC#かDelphiで。

31 :デフォルトの名無しさん:2006/05/04(木) 12:53:22
かつてMSX-BASICを楽しんでいた中学生の頃、
数当てゲームを作れた満足感より、
スプライトを使って作れたアーチェリーゲームのほうが、
満足感はかなり高かったなぁ。

32 :デフォルトの名無しさん:2006/05/04(木) 12:57:43
でも、スプライト衝突判定で、

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

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

スプライトに一応番号はあるんだけど、
「この番号とこの番号が衝突したら」っていう判定が出来なかった。

33 :デフォルトの名無しさん:2006/05/04(木) 12:59:22
おっさん、おっさん、帰ってこい。

34 :デフォルトの名無しさん:2006/05/04(木) 13:01:45
どのおっさんを呼び出してるの?

35 :デフォルトの名無しさん:2006/05/04(木) 14:55:50
今はC#使ってるけど、ぶっちゃけクラスはVBAで覚えた。

36 :デフォルトの名無しさん:2006/05/04(木) 16:10:45
>>35
俺も。

37 :デフォルトの名無しさん:2006/05/04(木) 19:21:30
Delphiっていうか某ランド系はDirectXとの相性が悪いって聞いた事あるな
実際どうがか知らんけど

38 :デフォルトの名無しさん:2006/05/04(木) 21:09:09
そういや、VisualStudio6.0ってまだ売ってるの?
.NetになってVB使う意味は無くなっちまったよ。

つーことで、環境が許すときはいまだにVB6.0、
.NetのときはC#だな。


39 :デフォルトの名無しさん:2006/05/04(木) 21:17:11
>>38
デッドストックがどこかにある程度だろ。2、3代前の開発環境だろ
>.NetになってVB使う意味は無くなっちまったよ。
これは同意。

40 :デフォルトの名無しさん:2006/05/04(木) 22:05:00
VB可愛いよVB

41 :デフォルトの名無しさん:2006/05/04(木) 22:30:50
.Netってそんなにいいの?

42 :デフォルトの名無しさん:2006/05/04(木) 22:33:17
>41
Webアプリケーションだと天国と地獄ほどの違いがあるな。

43 :デフォルトの名無しさん:2006/05/04(木) 22:46:18
>>42
VBでWEBアプリなんて書けたっけ?

44 :38:2006/05/05(金) 00:11:49
>>43
ASP.NETでな。

とりあえず、イミディエイトだけでも少しはましにしないと
6.0以降はeclipseにも及ばんなー。
VCでしか物作らないMS様はそんな事きにしませんか。


45 :デフォルトの名無しさん:2006/05/05(金) 22:55:52
>43
VB6.0ならば「IISアプリケーション」と言う名前の機能で作成できる。

46 :デフォルトの名無しさん:2006/05/05(金) 23:45:51
>>45
へぇ〜
あれがそうなのか。

47 :デフォルトの名無しさん:2006/05/08(月) 08:02:56
FunctionやSubプロシージャのアドレスをVBのデバッガで調べ、EXEを作りVidualstadioのC++のデバッガで使いたいです。
そこでAddressOf演算子でアドレスを表示させ、それを使おうと考えました。
しかしAddressOf演算子はDLLの引き数にしか使えないようです。
なにかよい方法無いですか?



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

DLL の引数、ではなく、関数の引数、ではなかったか?
ダミーの関数をつくってその引数にすればよかったと記憶している。
違ったらごめん。

49 :デフォルトの名無しさん:2006/05/08(月) 08:33:31
>>47
ObjPtr って駄目だっけ?

50 :デフォルトの名無しさん:2006/05/08(月) 20:05:43
VB6.0 SP3を使っています。

すでにアプリからExcelで帳票が出力できている状態で、
これをPDFでも出力したいなぁってことで1から組むのではなく
単純にxlsファイルをPDF変換して出力しようと思っています。
調べてみたところシェアならActive Reportsで行けそうな感じなのですが
フリーでこういったDLLやOCXあるよーって方います??


51 :デフォルトの名無しさん:2006/05/08(月) 20:29:47
>>50
まずSP6をあてろ。

52 :デフォルトの名無しさん:2006/05/08(月) 21:00:10
>>50
アクロバットで出来るんじゃないの。

53 :47:2006/05/08(月) 22:02:35
>>48,49
原因がわかりました。
アドレスを得ようとした関数がクラスモジュールにあると駄目なようです。
Basファイルにある関数のアドレスなら取れました。
当初の目的から逸れますが、デバック関数をBASに作り、
目的の関数の前後でコイツを呼び出して何とかしようと考えています。


54 :デフォルトの名無しさん:2006/05/08(月) 22:54:06
C++のデバッガ使うなら、VBでシンボリックデバッグ情報を出力しろよ。

55 :デフォルトの名無しさん:2006/05/09(火) 15:21:09
>>53
クラスをインスタンス化して無いとか言う落ちじゃないのか?

56 :デフォルトの名無しさん:2006/05/09(火) 15:45:03
そろそろ時期OSも出る頃だし次の案件からVB6をやめてVS2005にしようか悩んでいる。
VB6ってVistaでも開発環境できるのかな?
それよりも動かせるのかな?
何よりも自分がVS2005が使えるのか・・・

VB6しか触った事が無い人でもVS2005って扱えるんでしょうかね?

57 :デフォルトの名無しさん:2006/05/09(火) 16:01:30
お前には無理だ

58 :デフォルトの名無しさん:2006/05/09(火) 16:09:13
>>56
Vistaはまた遅れるらしいよ。
また、Vista上でVB6アプリは動く様にするらしい。
まぁそんな事しなくても、VirtualPC上の2000で動かせばいけど。

59 :デフォルトの名無しさん:2006/05/09(火) 16:29:27
>>57
やっぱそうだよな。
それ以前に相談したらそんな暇あるならさっさと案件進めろと言われた・・・

>>58
安心した。

60 :デフォルトの名無しさん: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

よろしくお願いします


61 :デフォルトの名無しさん:2006/05/09(火) 18:43:50
とりあえず、ASPからExcelやAccessは操作するなって

62 :60:2006/05/09(火) 22:11:34
>>61
MSも同じこといってるみたいですね・・・
ttp://support.microsoft.com/kb/257757/ja/

さすがMS。。。。


63 :デフォルトの名無しさん:2006/05/09(火) 22:27:51
>62
MSの責任ではなく、サーバーでの使用を保証していないものを
使おうって発想の方が遥かに責任が重いかと。

64 :デフォルトの名無しさん:2006/05/09(火) 22:54:17
どうせ設定が悪いだけなんだろうけど、
そういう危なそうなことをしようとも思わないので、
なにが原因か調べる気が起きない。

65 :デフォルトの名無しさん:2006/05/10(水) 00:04:29
>>64
「設定が悪い」のではなく、そんな使い方は
MSの「想定の範囲外」なので、
原因究明なんて無意味&無駄。

66 :デフォルトの名無しさん:2006/05/10(水) 00:59:41
>>59
また荒れそうな話するけど
「そんな暇あるならさっさと」っていうのはこの件に関してはやばいな。
将来確実に直面する問題を先送りにすればするほどあとで困るのに。
(先取りしすぎてもリスクがあるが、今はそう言う時期でもないだろう)
VB6の次はVB.NETにする予定があるなら、出来るだけ早いうちから
ちょっとずつ移行しておいたほうがいいよ。「お前には無理」かどうかの
調査にもなるし。
けっきょく仕事はVB.NETじゃなくてJavaに移行したとかいうときでも
完全に無駄にはならんだろう。

あとVB6自体はVistaで動いても、他社製のocxなんか使うならそっちの対応も必要だ。
>>58の最後の提案でいいようなきも駿河w

67 :デフォルトの名無しさん:2006/05/10(水) 10:04:34
>>66
MSは、VirtualPC
ttp://www.microsoft.com/japan/windows/virtualpc/default.mspx
じゃなくて、VMWareを買収して欲しかったなー。

68 :デフォルトの名無しさん:2006/05/10(水) 10:50:15
>>67
VMWareだと、旧OSの為のDisplayドライバやチップセットドライバが必要になるけどそれで良いのか?
VirtualPCだと440BXにS3-Trio64Vだから結構古いOSでもドライバが用意されてる


69 :デフォルトの名無しさん:2006/05/10(水) 11:16:22
>>68
そうなんだ。じゃぁVPCでいいや。
しかし「440BXにS3-Trio64V」て、まさに昔使ってたPCだ。w

70 :デフォルトの名無しさん: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 で実行
していますし・・・

71 :デフォルトの名無しさん:2006/05/11(木) 21:01:44
>>70
どの部分でエラーが出てるのかが分からないけれど、

Dim fso as Object
Dim f as Object

にすればいいのかな?



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


それはさておき、そのスクリプトは
どこから起動した?
ブラウザ?それとシェル?

73 :デフォルトの名無しさん:2006/05/11(木) 21:46:26
>>70
"D:\"はフォルダじゃなくてドライブな気がするが

74 :デフォルトの名無しさん:2006/05/11(木) 22:09:12
>>70
ルートはフォルダじゃないから
ドライブの容量見たければ
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
msgbox fso.GetDrive("D").TotalSize


75 :デフォルトの名無しさん:2006/05/11(木) 22:52:18
大量のファイルを変換して保存したいんですが、変換ソフトがいっこずつしか変換できないんで終わる気がしないです
マウスの操作が繰り返しなんで、マウスの移動やクリックというのはプログラムで操作できるんでしょうか?

76 :デフォルトの名無しさん:2006/05/11(木) 23:01:41
>>71
エラーは「MsgBox f.size」の部分で出ます。
で、VBS ファイルとして実行してるので、型宣言はないのです。

>>72
VBSファイルとして、Exeとかと同じ様に実行しました。

>>73
ルートフォルダ配下の全ファイルの容量、のつもりでした。

>>74
サンプルなのであのコードでしたが、実際は、GetFolder の引数は可変になります。
色々なサブディレクトリ(フォルダ)の容量を取得したかったのです。

77 :デフォルトの名無しさん:2006/05/11(木) 23:19:34
自分もスクリプト書いて実行したらエラーになりましたね。
自分の環境だと「System Volume Information」フォルダがあるドライブだと
参照できなくて落ちています。
http://support.microsoft.com/default.aspx?scid=kb;ja;309531
で、参照できるようにしたらできました。
「書き込みできません」が出る理由まではわかりませんでした。

78 :デフォルトの名無しさん:2006/05/12(金) 00:33:19
>>77
System Volume Information って全部にあるな・・・

79 :デフォルトの名無しさん:2006/05/12(金) 00:41:32
>>78
リムーバルディスクとか

80 :デフォルトの名無しさん:2006/05/12(金) 01:43:54
「書き込みできません」ってなんだっけなぁ?
自分の出たことあるきがするんだけど思い出せない。
なんでこのエラーメッセージやねん!って突っ込んだ気がするけど。
よく考えれば、あぁ。そういうことかと思った気がするんだけど。んー?

81 :デフォルトの名無しさん:2006/05/12(金) 09:58:39
「System Volume Information」フォルダがあるドライブ=ファイルシステムがNTFS

82 :デフォルトの名無しさん:2006/05/12(金) 10:36:05
>>81
FAT16にもFAT32にもあるんだけど。

83 :デフォルトの名無しさん:2006/05/12(金) 10:49:51
「System Volume Information」フォルダがあるドライブ=NTFSを使うOSでマウントしているorしていたことがある

84 :デフォルトの名無しさん: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

85 :デフォルトの名無しさん: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)

86 :デフォルトの名無しさん:2006/05/12(金) 22:07:11
素直にバッチファイルを使えばいいだろ。

87 :デフォルトの名無しさん:2006/05/13(土) 12:37:07
ちょいと質問
VBでオブジェクトをCollectionにぶち込むのと リスト構造でオブジェクトを持つのでは どっちが効率がいいの?

88 :デフォルトの名無しさん:2006/05/13(土) 12:49:13
>>87
意味不明。なんか頭の悪い質問だな。
マウスによる操作とキーボードのどっちが効率がよいかは
「何をするか」によるだろうに。

89 :87:2006/05/13(土) 13:03:13
>>リスト構造
ごめん ListBox の事じゃなくって 双方向リンクリストの事だ
説明足んなくてすまん

90 :デフォルトの名無しさん:2006/05/13(土) 13:19:09
>>87
どんな状態が「効率が良い」と思ってるのか。
コレクションだろうがリンクリストだろうが、
アルゴリズム次第でどうとでもなるし。

91 :デフォルトの名無しさん:2006/05/13(土) 14:21:46
使わないコンポーネントや参照設定にチェックを入れている場合、
インストーラ作成時に無駄にDLLやOCXが梱包されること以外に、
目に付くような弊害って何かありますか

92 :デフォルトの名無しさん:2006/05/13(土) 14:35:58
>>91
そもそも、何でそんな事したいの?

93 :デフォルトの名無しさん:2006/05/13(土) 14:54:09
>>82
その場合、削除が可能なはず。
NTFSドライブに存在するSVIフォルダは削除不可能、閲覧不可能なただのゴミ。

94 :デフォルトの名無しさん:2006/05/14(日) 05:23:26
最近の計測機器を制御するソフトをみてみると
圧倒的にVisual Basicが多いのですが。

なんで?

95 :デフォルトの名無しさん:2006/05/14(日) 09:51:32
簡単だから

96 :デフォルトの名無しさん:2006/05/14(日) 11:12:19
>>94
同じ機能のソフトを、生CとVBとVC++とJavaとアセンブラで書いてみやぁ。

97 :デフォルトの名無しさん:2006/05/14(日) 11:23:55
本当はそういう分野にはVBは向いてないんだけどね。

例えば通信一つとってもスレッドが使えないから、タイマ使うか
UIがフリーズするの覚悟でループでポーリングするかするわけだけど、
いずれにしてもPCや機器の性能を100%生かせない、どっかストレス感のある
アプリになってしまう。

98 :デフォルトの名無しさん:2006/05/14(日) 11:39:53
>>97
イベントドリブンって知ってるか?

99 :デフォルトの名無しさん:2006/05/14(日) 11:44:42
>>98
知らない。解説頼む。

100 :デフォルトの名無しさん:2006/05/14(日) 14:16:57
>>97
いや当然DLLと組み合わせてやるんだよ。
__asm { } とかでCの中に機械語も直接書けるから、
バンバンIn/OutするDLL書いて、VBから
コールしてる。

101 :デフォルトの名無しさん:2006/05/14(日) 14:45:21
すいません、わかる方いればぜひ教えていただきたいのですが、
VBで対象プロセスの優先度を変更のやり方を教えてくださいな
検索はしてみたんですがそれらしいものがまったくでなかったもので^^;

102 :デフォルトの名無しさん:2006/05/14(日) 14:51:22
>>100
痛い人だなあ。。
アセンブラ使おうが何使おうが、通常のユーザーモードで動作するアプリが
勝手にIOにアクセスなんてできないんだよ。
Winに限らずマルチタスクOSとはそういうもの。

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

VBが制御に向かない理由の一つとして、ワーカースレッドが使えないと言ってるだけ。

103 :デフォルトの名無しさん:2006/05/14(日) 15:06:39
>>101
Win32 API を使う。SetPriorityClass() かな。

104 :デフォルトの名無しさん:2006/05/14(日) 15:11:26
>>102
お前、何も分かってないな。
まぁいいけど。

105 :デフォルトの名無しさん: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です。


106 :デフォルトの名無しさん:2006/05/14(日) 23:33:40
あのさーここは学研の『ムー』の読者投稿欄じゃないよ。
エスパーはおらんつーのw

107 :デフォルトの名無しさん:2006/05/14(日) 23:58:29
とりあえずアサーションなりStopなり使って
どこでA=1になってるか調べてみなきゃなんとも言えんでしょ

108 :デフォルトの名無しさん:2006/05/15(月) 00:08:32
>>105
「A=1にはめったに行かない」じゃなくて
「B=B+1にはめったに行かない」だろうが。
日本語もまもとに書けないからバグるんだよ。

109 :デフォルトの名無しさん:2006/05/15(月) 00:16:31
VBAで、MsgBoxで選択範囲の列数・行数を返すやり方すらわからない自分はVB向いてないですか?

110 :デフォルトの名無しさん: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の方を通ってるけれど勘違いしてた、という可能性も
あるから、「どっちを通った」みたいな情報も出力するといい。


111 :デフォルトの名無しさん:2006/05/15(月) 01:24:33
>>110
エスパー厨って失礼な奴だな。
あのねえ、そうやって質問者を甘やかすのは本人のためはもちろん
スレの利用者全体の利益に反すると思うぞ。

少なくとも回答者に千里眼的能力を要求するような質問を
許容すべきではないと思うがね。

112 :デフォルトの名無しさん:2006/05/15(月) 01:31:09
109です、すいませんでした。

正直に言うと、VBAの宿題出されてまったくわけわからなくて助けてほしかったんです。
甘えてばかりでごめんなさい。

113 :107:2006/05/15(月) 01:58:09
>>112
いや多分あんたじゃなく105ね >エスパー質問
なぜAが1になるのかなんてあれだけで解るわけがないw

ちなみにVBAってことはExcel?
ttp://www.happy2-island.com/
↑ここ逝けば幸せになるかも。

114 :デフォルトの名無しさん:2006/05/15(月) 02:03:27
113の御方

Excelです、わざわざありがとうごいます!

115 :デフォルトの名無しさん:2006/05/15(月) 08:49:46
>>109
日本語でおk。

116 :デフォルトの名無しさん:2006/05/15(月) 17:43:17
>>109
このスレに向いてないと思う

117 :デフォルトの名無しさん:2006/05/15(月) 22:32:35
VB2005で作ったものをVB6.0で編集することできるんでしょうか?

118 :デフォルトの名無しさん:2006/05/15(月) 22:41:20
そんな餌(

119 :デフォルトの名無しさん:2006/05/15(月) 23:05:51
本気です。学校で作ったものを編集しようと思ったんですけど
家にはVB2005しかなくVB2005でやろうとしたらなんかアップデートされて
拡張子とか変わっちゃたんですけど、いったんVB2005で編集してそれをVB6でも
編集できるようにすることはできるのでしょうか?


120 :デフォルトの名無しさん:2006/05/15(月) 23:07:28
やってみればわかるだろ

121 :デフォルトの名無しさん: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に二つの値を表示するのってどうすればいいですか?

122 :デフォルトの名無しさん:2006/05/15(月) 23:33:50
>>119
書いてる事が矛盾してるが。

123 :デフォルトの名無しさん:2006/05/15(月) 23:41:01
まあ間抜けな質問だとは思うが矛盾はしてないと思うよw

124 :119:2006/05/15(月) 23:43:45
なんどもすいません。
つまり学校のVB6で作ったものを家のVB2005で加工したら拡張子とかが
変わってしまったんですけど、それを学校のVB6で加工することは無理なんでしょうか?

125 :デフォルトの名無しさん:2006/05/15(月) 23:56:29
そんな餌(

126 :デフォルトの名無しさん:2006/05/16(火) 00:13:05
>>124
無理。

127 :デフォルトの名無しさん:2006/05/16(火) 00:13:55
>>121
文字列を&で繋げばいい。

128 :デフォルトの名無しさん:2006/05/16(火) 12:07:01
>>124
マジレスするとVB6とVB2005ではバージョンが違うからファイルの内容もコードも全部変わっちゃうから無理。
バックアップしてある書き換え前のやつから掘り起こすしかない。なかったら諦める。バックアップ取らないお前が悪い

129 :デフォルトの名無しさん:2006/05/16(火) 12:35:36
バックアップも何も、ウィザードはオリジナルのソースを
わざわざデリったりしないよ。
当たり前でしょw
どこの世界にそんな意地の悪い魔法使いが

だから、最初からそんな餌(

130 :デフォルトの名無しさん:2006/05/17(水) 10:38:58
VB6(SP6)でVB4ランタイムを使用したプロジェクトを修正中なのですが、
SSPANEL等の読み込みが出来ません。
「ライセンスがありません」といった内容でした。
ネット上で配布されてるランタイム一式をインストーラーを使って
導入したのですが、
なにが問題なのでしょうか?

131 :デフォルトの名無しさん:2006/05/17(水) 11:40:21
>>130
SSPANELって、VB6には添付されてないんじゃないっけ?
今VB6を起動出来ない環境なので確かめられないけど。
MSのサイト見てみ。
別のに置き換えるしかないかと。

132 :デフォルトの名無しさん:2006/05/17(水) 11:54:17
開発ライセンスと実行時ライセンスは別だったような。
実行時インストーラーで入れても開発できない。

SS系(3Dコントロール)は確か、CDのToolsの下にあったような。
それもVB5までだっけ?4->6なんてコンバージョンは作り直してたから知らんわ。

133 :デフォルトの名無しさん:2006/05/17(水) 12:41:49
SS系は、とにかくバグだらけで、滅茶苦茶評判が悪かった様な。

134 :デフォルトの名無しさん:2006/05/17(水) 22:26:06
フォルダに随時更新されてくる画像を読み込んで画面に表示させるにはどうすればいい?

135 :デフォルトの名無しさん:2006/05/17(水) 23:05:54
>>134
っLoadPicture

136 :デフォルトの名無しさん:2006/05/18(木) 03:33:07
>>134
FindFirstChangeNotification

137 :130:2006/05/18(木) 10:07:57
レスどうもです。

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

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

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

>>133
其れ聞くとなおさら乗り換えた方がいい気がしてきた

138 :デフォルトの名無しさん:2006/05/18(木) 11:54:52
あるIPアドレスのMACアドレスを取得するのはどの様にすれば出来ますか?
APIを使えば出来るのでしょうか?だとしたらAPI名はなんですか?
それとも、イーサネット・ヘッダから何らかの方法で取得するのでしょうか?

139 :デフォルトの名無しさん:2006/05/18(木) 12:40:01
>>130
こういう人って何考えてるのかな。どっか心を病んでるとしか思えん。

俺はVB4からのコンバートなんて全くやったことも無いが、
MSDNライブラリで"sspanel"で検索する手間さえ惜しいのか。
死んだ方がいいと思うよ。

140 :デフォルトの名無しさん:2006/05/18(木) 13:00:04
>>138
解決しました

141 :デフォルトの名無しさん:2006/05/18(木) 13:01:14
>>139
こういう人って何考えてるのかな。どっか心を病んでるとしか思えん。


142 :デフォルトの名無しさん: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

どうしたらいいいでしょうか?
ご存知の方、お聞かせ下さい。
よろしくお願いします。

143 :130:2006/05/18(木) 13:46:08
>>139
申し訳ありません。
MSDNは勿論参照いたしましたが、
それで解決できなかったので質問させていただきました。

別所ではネット上のランタイム導入等で動作している(らしい)ので
なんとかならないか模索している次第です。

144 :デフォルトの名無しさん:2006/05/18(木) 13:57:29
>>142
1行目と2行目を入れ替えろ

145 :デフォルトの名無しさん:2006/05/18(木) 14:13:23
vb6しかやったことないですけど
vb2005でも改行は( _)なのですね
メモ帳でも右端で折り返してくれるのに、
何故こんな記号を使ってるのでしょうか?

146 :デフォルトの名無しさん:2006/05/18(木) 14:17:19
>>140
どう解決したかを書き込むと、同じ事で悩む、
これからここを見る人の役に立つんだが?

>>142
SetErrorMode API とか。

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



148 :デフォルトの名無しさん:2006/05/18(木) 15:09:19
>>147
いやそんな事で驚かれても・・・

149 :デフォルトの名無しさん:2006/05/18(木) 15:09:21
>>147
自分のアホさ加減に驚いたのか?
そうじゃないなら、On Errorのヘルプくらい見れ

150 :デフォルトの名無しさん:2006/05/18(木) 15:42:46
こういうことがすぐわかるレベルになるには何年もかかるのでしょうか

151 :デフォルトの名無しさん:2006/05/18(木) 15:59:20
>>150
普通は、生まれて初めてヘルプ読んだその時に分かる。

152 :130:2006/05/18(木) 16:09:39
何度もすいません。
>>130の表記に問題があるようなので再度疑問点を記載させていただきます。

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

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

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

また、VS6ではCD内には収録されていないのでしょうか?

153 :デフォルトの名無しさん:2006/05/18(木) 17:08:23
>>152
CDなんか自分で中身見ればいいじゃん。

154 :130:2006/05/18(木) 17:18:28
リドミの中にあるフォルダがは存在しないかったので、
CD内を一通り確認しましたが
それらしいのはみつけられませんでした。

もしかしてファイル名が違うのではと思い、追記した次第です。


155 :デフォルトの名無しさん:2006/05/18(木) 18:12:27
>>146
すいませんおっしゃる通りです・・・ SendARP ってので出来るみたいです。

156 :デフォルトの名無しさん:2006/05/18(木) 18:28:38
>>154
DISK2も見れ

157 :デフォルトの名無しさん:2006/05/18(木) 19:46:14
>>152
君本当に病気でしょ?
だからそんなもんMSDNライブラリに書いてあるつーの。
こんなとこにツラツラ書いてる間になんでMSDNライブラリ開いて検索する気にならんの?


158 :わけあってVB4を使ってる人:2006/05/18(木) 19:47:39
記入された文字を保存しておいて次回起動するときに
見れるようにしたいんですがどうすればよいのでしょうか?

159 :デフォルトの名無しさん:2006/05/18(木) 19:51:25
起動ってなんだ?PCが?OSが?ソフトが?見れるって?なにがやりたいんだ?

160 :わけあってVB4を使ってる人:2006/05/18(木) 19:56:18
すいません 
ソフトを起動するときです

161 :デフォルトの名無しさん:2006/05/18(木) 19:58:36
記入された文字を保存しておいて次回起動するときに見せるプログラム書け

162 :わけあってVB4を使ってる人:2006/05/18(木) 20:08:47
保存の仕方がわからないんです
教えてください

163 :デフォルトの名無しさん:2006/05/18(木) 20:12:40
古本屋でもまわって入門書買ってきたら?

164 :デフォルトの名無しさん:2006/05/18(木) 20:22:01
>>158
用途を満たすか判らんけど、簡単なのはINIファイルかなぁ?

165 :デフォルトの名無しさん:2006/05/19(金) 00:51:01
回文(あいうえおえういあ)プログラムを
Reserve関数を使わずに作りたいんですけどどうすればいいんでしょうか?
素人過ぎて困ってます。。OSはwindowsXPです。
誰か助けて下さい。

166 :デフォルトの名無しさん:2006/05/19(金) 01:02:16
回文か。
学校の課題ってのは20年進歩がないんだなw
だから課題は自分でやらなきゃ意味ないだろ
つーかReserve関数って何?w

167 :デフォルトの名無しさん:2006/05/19(金) 02:28:54
ああ、すみません。Reverse関数でした。
はぁ、以前からある課題でしたか。
そんなこともできない自分に自己嫌悪・・・

168 :デフォルトの名無しさん:2006/05/19(金) 09:04:28
読め。ともかく書いた対角化求めよ!

( ´・∀・`)へー

169 :デフォルトの名無しさん: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 に「あいうえおえういあ」が入る

170 :130:2006/05/19(金) 11:23:04
CD内のファイルを発見いたしました。
リードミーに書かれている手順に従ってレジストリの登録を行ったのですが
相変わらず参照が出来ません。
試しにオブジェクトを挿入してみたところ
実行時エラー713が出ます。
レジストリの登録が正常に出来ていないのでしょうか。
何度かやってみましたが駄目でした

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

>>152
MSDNに記載されている情報は一通り参照したけれども、
状態が解決しないので質問させていただいています。
鬱陶しいのは重々承知しておりますが、先方にも匙を投げられて
頼れる所が無かったので。

171 :130:2006/05/19(金) 11:34:11
直接、手動でOCXのレジストリ登録作業を行った所、認識されました
他にも同様の症状が出ておりますので、検証してみます。

何度も失礼致しました。

172 :165:2006/05/19(金) 14:32:00
>>169
ありがとうございます。
InputBoxに書いた文字を回文表示したい場合、
どうすればよろしいんでしょうか?
何度もすみません。。

173 :デフォルトの名無しさん: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


174 :デフォルトの名無しさん:2006/05/19(金) 16:28:04
アクティブウィンドウ(自フォーム以外)の位置とサイズを取得する方法、
および同じく位置とサイズを変更する方法を教えてください。

自フォームなら取得も変更も簡単なのですが、別アプリを操作したいので困っています。
WindowsXP,VB6SP6です。

175 :デフォルトの名無しさん:2006/05/19(金) 16:32:47
>>174
FindWindow

176 :175:2006/05/19(金) 16:35:18
>>174
そして SetWindowPos

177 :デフォルトの名無しさん:2006/05/19(金) 16:42:26
>>174
アクティブなのでいいのなら GetForegroundWindow で十分だな

178 :172:2006/05/19(金) 16:52:14
>>173
ありがとうございます。
重ねてすみません。
入力した文字が1回のクリックで
MsgBoxに全て表示できるようにするには
どうすればいいのでしょうか。

今後の勉強のためにも、
何故そうなったかという解説もお願いします。

179 :デフォルトの名無しさん:2006/05/19(金) 16:57:41
>>178が何を言いたいのかわからない俺は文盲で良いや。

180 :173:2006/05/19(金) 17:12:37
>>178
もう釣られない・・・(w

181 :173:2006/05/19(金) 17:46:15
>>179
教わった方法だと1つのMsgBoxに
1文字ずつしか表示されないんです。
これを1つのMsgBoxに1つの文(回文)
となるようにしたいんです。

>>180
本気でわかってないんです。
はぁぁ、ごめんなさい。。

182 :デフォルトの名無しさん:2006/05/19(金) 18:17:42
>>181
>>173 には MsgBox なんてないが。

183 :デフォルトの名無しさん:2006/05/19(金) 18:20:04
>>181
(゚Д゚)ハァ?
forを抜けたところでMsgBox Text2.Text で出来るでしょ?

184 :デフォルトの名無しさん:2006/05/19(金) 18:28:02
VB6にはsprintfないの?

185 :デフォルトの名無しさん:2006/05/19(金) 18:59:43
>>184
ヘルプ見ろよ。

186 :デフォルトの名無しさん:2006/05/19(金) 22:10:25
>>184
semete gugureyo

187 :デフォルトの名無しさん:2006/05/20(土) 01:39:33
VB6を使用しているのですが、データを保存する
表関数はどうすれば作成できますか?

188 :デフォルトの名無しさん:2006/05/20(土) 01:50:31
↑日本語でおk

189 :デフォルトの名無しさん:2006/05/20(土) 03:04:45
関数に表と裏があることをどこで知ったんだ

190 :174:2006/05/20(土) 05:35:26
>>175-177
どうもありがとう。

とりあえずFindWindowは条件的に使えないけど
GetForegroundWindowとSetWindowPos、
そしてSetWindowPosを調べてて見つかったGetWindowRectで
取得も変更も出来ました。


191 :デフォルトの名無しさん:2006/05/20(土) 19:56:55
6.0を使用していますが、VBで指定アドレスのメモリ参照は
どのようにすればできるのでしょうか?
参照した値をテキストボックスに表示したいのですが可能でしょうか?

192 :デフォルトの名無しさん:2006/05/20(土) 20:34:29
>>191
っReadProcessMemory API

193 :デフォルトの名無しさん:2006/05/20(土) 21:01:12
>>192
そちらをググって見たらイロイロ出てきました。
いまから調べてみます。
ありがとうございました。

194 :184:2006/05/20(土) 22:25:35
sprintf("%04x%04x%04x" ,a ,b, c)
に相当することをやるには、もしかして、Format関数を
組み合わせて頭を捻らないとダメ?

195 :デフォルトの名無しさん:2006/05/20(土) 22:46:03
VBがとうとうJavaVM上で動くようになったよ。
これでマルチプラットフォーム化
VBはこれからも生きつづけることになった。
http://blogs.sun.com/roller/page/herbertc?entry=project_semplice_visual_basic_for

196 :デフォルトの名無しさん:2006/05/20(土) 22:56:23
>>194
16進数に変換するのが目的なら、Hex。ただし、頭の0はつかない。

197 :184:2006/05/20(土) 22:59:31
頭の0は簡単につけたいところなのですが。
すると、HEX$したあとに文字の数を数えて不足分だけ0を頭に足す、という行為を
3変数それぞれに行って、最後に+で結合する必要がある?

198 :デフォルトの名無しさん:2006/05/20(土) 23:37:45
>>197
そだね。
Right("000" & Hex(a), 4) & ...

199 :デフォルトの名無しさん:2006/05/20(土) 23:44:29
>>194
頭を捻る必要は全くない。

>>195
ん?
よく意味が分からん。
どういう事?
JavaVMって何だ?

200 :デフォルトの名無しさん:2006/05/20(土) 23:53:36
>>195
blogは、本当なのか?それならそれでいいけど
IDEは今の感じがいいな〜
eclipseのプラグインとして動くようになったらデバッグとかが面倒くさいなあ〜


201 :デフォルトの名無しさん:2006/05/21(日) 11:08:32
これってどうよ?
http://blogs.sun.com/roller/page/herbertc?entry=project_semplice_visual_basic_for


202 :デフォルトの名無しさん:2006/05/21(日) 11:09:05
すまぬ既レスだった


203 :デフォルトの名無しさん:2006/05/21(日) 16:07:33
WebBrowserコントロールについての質問です。
あるページを特定のリファラーを送って表示する方法を教えてください。

ググってもMicrosoft.XMLHTTPなどでリファラーを送ってファイルをDLする方法とかは分かったのですが
WebBrowserコントロールでの方法が分かりません。
単にあるページを確認のために表示するだけが目的で、まともなブラウザを作ろうってわけではないので
WebBrowserコントロール以外を使うつもりはありませんが、
無料で使えてリファラー指定できるブラウザコントロールがあるなら、そちらの紹介でも構いません。
とにかくやりたいことが単純単一なので、手軽に出来る方法を探してます。宜しくお願いします。

204 :デフォルトの名無しさん:2006/05/21(日) 16:25:05
>>203
出来ない。

205 :デフォルトの名無しさん:2006/05/21(日) 17:03:42
ちょっと前にその手の話題挙がってたね。
出来るって言ってた奴居たけど何処行ったかな?

206 :デフォルトの名無しさん:2006/05/21(日) 18:27:35
>>203
素直にWinsockでプロトコル組んだ方が早い思う。
読んだデータをTempファイルに書いてローカルで表示させればOK。

207 :デフォルトの名無しさん:2006/05/21(日) 19:51:00
NavigateのHeadersに書いてはどうか

208 :203:2006/05/21(日) 20:29:18
>>207
出来ました。どうもありがとうございます。
いきなり「出来ない。」と言われて諦め気味だったけど
しばらく様子見ていて良かった。

209 :デフォルトの名無しさん:2006/05/22(月) 17:52:11
ここでの「出来ない」「無理」「不可能」は
「俺は知らない」という意味だと思って無視した方がいいよ。
今までも出来ないとレスが付いた後に解決方法が書かれたことが何度あったことか…
本当に出来ない場合も多々あったが、
一個人の知識で言う「出来ない」「無理」「不可能」など、なんて不確かなことか。

210 :デフォルトの名無しさん:2006/05/22(月) 18:57:23
ここでの「出来ない」「無理」「不可能」は、
「そんな事はVBではやらない方がいい。別の方法を見つけろ」
という意味だと思った方がいいよ。

211 :デフォルトの名無しさん:2006/05/22(月) 19:27:12
いや、>>209が正しい
無知で頭悪い癖に偉そうに人様に意見だけ垂れたい奴がいるんだよw

212 :デフォルトの名無しさん:2006/05/22(月) 20:19:42
ところで、VB.NETなんていらないよなぁ。
C#.NETはともかくとして、VBはVBのまま、ずっと進化して欲しかった。

213 :デフォルトの名無しさん:2006/05/22(月) 20:52:33
それはないw
.NET慣れたらもうVBには戻れんよ、いや本当。
まあIDEの重さだけはちょっとアレだけど。

214 :デフォルトの名無しさん:2006/05/22(月) 21:18:01
VB.NET いらね。
.NET Framework 上で VB 動かす何かをかませればいいのに。

215 :デフォルトの名無しさん:2006/05/22(月) 21:52:59
P-CODEをILに変換しよう!

216 :デフォルトの名無しさん:2006/05/23(火) 06:07:09
> 「そんな事はVBではやらない方がいい。別の方法を見つけろ」
> という意味だと思った方がいいよ。
一理あるようで、実はこういうこと言う奴は視野が狭い。
最良の結果を得るためと言うことなら、全ての処理に置いてVBなんか使わない方がいいし、
「この処理はVBだと面倒なので他の言語でやった方がいい」という部分があったとしても
一部面倒でも全体で見ればやっぱりVBの方が楽だったりする。

そもそもここに質問に来る奴は、ある処理をするのに適した言語・方法を聞きにしてるのではなく
VB言語を使うことを大前提に、どうすればいいかを聞きにしてることが多いので
VBでの解決方法を教えた上で、個人的意見として「〜言語の方が適してるよ」と添えるのはいいが
回答もせずに「その処理にVBなんか使うな」ってのはお門違い。
唯一この台詞を言って良いのは、「もっと処理を速くするには?もっと軽くするには?」という類の質問だけだ。

217 :デフォルトの名無しさん:2006/05/23(火) 08:23:58
ガキの自己弁護に何をむきになってレスしてるのかね。

218 :デフォルトの名無しさん:2006/05/23(火) 08:43:12
>>214 >>215
誰かこれをフリーソフトで公開してよ。

219 :デフォルトの名無しさん:2006/05/23(火) 08:54:40
>>217
何か嫌なことでもあったの?

220 :デフォルトの名無しさん:2006/05/23(火) 09:21:38
>>216
あんたも視野が狭いね。

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

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



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

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

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

仕様をすべて分かっていない限り、どの言語がふさわしいか判断することは出来ない。
お前が当事者じゃない限り、お前が選択することは不可能だよ。

222 :デフォルトの名無しさん:2006/05/23(火) 10:13:04
VBではちょっと面倒だな、って部分はDLLにすればいいだけじゃん。

223 :デフォルトの名無しさん:2006/05/23(火) 10:31:01
えっ
そんなの当たり前じゃないのか

224 :デフォルトの名無しさん:2006/05/23(火) 11:45:50
220の書き込みで、狭すぎる視野を持つ人から見ると
通常の視野を持つ人の意見は視野が狭く見えるということがわかった。
あとはどうでもいい。220の書き込みにそれ以上の価値はないからw

225 :デフォルトの名無しさん:2006/05/23(火) 18:48:54
>>220
世間には職業プログラマと暇な学生しかいないと思ってるのかな。
本業の傍らでプログラムを書いて業務をまわしている人が実際は結構多いと思うぞ。
そういう人たちに、いろんな言語を学べとか、過去の資産を捨てろなんて
そんな「暇な」時間は無い訳だよ。
 仕様をころころ変えるMSやそれについていってるプログラマはある意味「暇」を
もてあましているともいえるぞ。
 
 これら「兼業」プログラマにとってとっつきやすいからVBが伸びてきたと思う。


226 :デフォルトの名無しさん:2006/05/24(水) 01:28:38
みんなが言いたいことは
「出来ます厨」とか「VBでやるべきでない厨」とか
「エスパー厨」がウザイだけなんじゃないかと


227 :デフォルトの名無しさん:2006/05/24(水) 02:09:18
>>225
本来は選ばれたプロフェッショナルのみが行えるべき行為を素人が中途半端なレベルでつく(r

228 :デフォルトの名無しさん:2006/05/24(水) 09:24:50
>>226
電波な質問とか、悩み相談もうざいけどね。
質問の体を成していないのとか。

229 :デフォルトの名無しさん: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="銀行振込(前払い)">
このラジオボタンおすにはどうしたらいいのか教えて頂戴

230 :デフォルトの名無しさん:2006/05/24(水) 10:16:23
>>229
安易に SendKeys とか。

231 :デフォルトの名無しさん:2006/05/24(水) 11:22:24
DOMを極める

232 :デフォルトの名無しさん:2006/05/24(水) 11:38:02
VB初心者です。
質問なのですが、同じプロジェクトで複数のFormを使っている場合
実行を行うと今作っていたFormではなく別のFormを実行してしまいます。例えば、1-2というFormを実行したいのに
1-1を実行してしまいます。1-3、1-4を実行したい場合も1-1を実行してしまいます。なぜでしょうか?
環境はwin2000proでVB6.0を使っています。
だれか教えてください!

233 :デフォルトの名無しさん:2006/05/24(水) 11:41:12
>>232
「スタートアップの設定」

234 :デフォルトの名無しさん:2006/05/24(水) 11:59:44
>>233
できました!ありがとうございます。。。

235 :デフォルトの名無しさん:2006/05/24(水) 12:55:55
>>229
テキストでもボタンでもラジオボタンでもgetElementsByNameで取得できるはず。
ボタンはClickでOK。ラジオボタンはシラネ。

236 :デフォルトの名無しさん:2006/05/24(水) 18:49:39
229です
解決しました。ありがとう。


237 :助けて:2006/05/24(水) 21:39:30
リッチテキストボックスの行間を狭くしたいのですがどなたか分かる方教えてください。

238 :デフォルトの名無しさん:2006/05/24(水) 21:51:55
ウス目で

239 :デフォルトの名無しさん:2006/05/25(木) 04:01:24
VB6.0を仕事で使っていたのですが、
データベースとの接続はツールがしていたのでADOとかあんまり使ったことありません。
データベース関係以外は自分で書いてたんでやりたいことは大体出来ます。
VB6.0+データベース(ODBC接続)の本で良いのがあれば教えてください。
入門書探しに行ったのですがVB自体の本ばかりでデータベース関連ってあんまりないんですよね・・・。

240 :デフォルトの名無しさん:2006/05/25(木) 07:17:25
何で今更、ADOでもOLE DBでもなく、ODBCなわけ?

241 :デフォルトの名無しさん:2006/05/25(木) 07:40:21
書き方わるかったですね。ADOなんです。

242 :デフォルトの名無しさん:2006/05/25(木) 09:03:00
>>239
っMSDNと google

243 :デフォルトの名無しさん: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
ヒント:本

244 :デフォルトの名無しさん:2006/05/25(木) 13:33:46
>>243
ヒント:役立ち度は
MSDN、google>>>>超えられない壁>>>>本

245 :デフォルトの名無しさん:2006/05/25(木) 14:09:28
質問です。
Picture1,Picture2という2つのPictureBoxを作って(プロパティは何も変えてません)
LoadPictureでPicture1,Picture2にグラフィックをロードしたあと、
この2つがロードしたグラフィックが同じかどうかを判定するにはどうすればいいか教えて下さい。

Picture1.Picture = Picture2.Picture でいけるかと思ったんですが、ダメでした。

246 :デフォルトの名無しさん:2006/05/25(木) 14:49:21
>>245です
すいません、事故解決しますた。

247 :デフォルトの名無しさん:2006/05/25(木) 14:52:03
どうやって解決したかを書かない事故厨はもう来るな

248 :デフォルトの名無しさん:2006/05/25(木) 15:22:28
環境WinXP,VB6.0Pro

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

実行時のリッチ入力画面で"Ctrl+d"を押すことにより、入力カーソル位置に今日の日付を挿入するプログラムを作りたいのですが、
カーソル位置に挿入する方法がわからず困っています("Ctrl+d"とかの話は大丈夫です)
既存の方法ありましたらご教授ください。よろしくお願いします

249 :173:2006/05/25(木) 15:39:50
>>248
ttp://www.bcap.co.jp/hanafusa/VBHLP/TextEdit.htm

250 :デフォルトの名無しさん:2006/05/25(木) 15:42:14
>>173
トンクス

251 :デフォルトの名無しさん:2006/05/25(木) 18:54:43
>>243
トンです。
本買えました。大体思っていた内容で助かりました。

252 :デフォルトの名無しさん:2006/05/25(木) 22:30:17
はじめまして。春からVBをはじめた大学生です。
諸先輩方に質問がございます。
最近、関数を学んでいます。引数と戻り値があると知りました。
今は発展段階で、"配列を引数にもつ関数"という表現がありつまずいています。
この"配列を引数にもつ関数"とは一体どういうことなのでしょうか。
理解できません。できれば、簡単な例をくださるとありがたいです。



253 :デフォルトの名無しさん:2006/05/25(木) 22:37:18
関数渡す値が引数。
その引数が配列になっているだけ。.

254 :デフォルトの名無しさん:2006/05/25(木) 22:44:37
お手数をおかけしますが、具体例を教えてくれませんでしょうか。

255 :デフォルトの名無しさん:2006/05/25(木) 22:47:19
質問する場所が分かりませんので、ここで質問させてください。
VBを独学で学ぶことは可能でしょうか?不可能でしょうか?
やはりプログラムの学校などに行った方が・・・宜しくお願いします。

256 :デフォルトの名無しさん:2006/05/25(木) 22:57:14
>>252,254
> できれば、簡単な例をくださるとありがたいです。
「できれば」ということは、できなくても構わないということなので例は無し。

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

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


>>255
「学ぶ」こと自体は独学で出来る。というか独学というもの自体が文字通り「学ぶ」ことだからな。
身に付くかどうかはオマエの理解力と努力次第。


257 :デフォルトの名無しさん:2006/05/25(木) 23:01:37
ひどいですね。
初めてここに来て全部ロムってませんがこんな感じなのかな。
コードを望んだわけではなかったのです。
失礼します。


258 :デフォルトの名無しさん:2006/05/25(木) 23:03:22
まあ口調が偉そうな奴は例外なく無能で日ごろ叩かれてストレス溜まってる奴だから
気にせず笑って(いや何か痛い奴だなと苦笑ながら)スルーした方がいいよw

259 :デフォルトの名無しさん:2006/05/25(木) 23:04:38
っていうかね、いまからプログラミング始めるならVBは最悪の選択の一つといって
まあ間違いないと思う

260 :デフォルトの名無しさん:2006/05/25(木) 23:05:18
やっぱ暖かくなるとレベルの低い質問者が増えるね。


261 :デフォルトの名無しさん:2006/05/25(木) 23:08:43
何にでも初めてはあるわけで

262 :デフォルトの名無しさん:2006/05/25(木) 23:41:15
確かにレベル低いね
ここで質問しても解決しないから他行ったほうがいいね

263 :デフォルトの名無しさん:2006/05/25(木) 23:42:00
>>254
Sub Kansuu(a() As Byte)
 ・
 ・
 ・
End Sub

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

>>255
可能。

264 :デフォルトの名無しさん:2006/05/26(金) 01:44:04
>>263
さんくす!
2ちゃんねるって優しいところですね。

265 :デフォルトの名無しさん: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初心者なんで今はこれしか思いつかないです。
長文すいません。

266 :デフォルトの名無しさん:2006/05/26(金) 10:47:08
>>265
そんなので同じかどうか判断しては駄目だと思うが・・・
普通にバイナリコンペアしないと。

267 :デフォルトの名無しさん:2006/05/26(金) 10:51:20
Picture1とPicture2に同じものをロードしておいて比較する意味ないだろ

268 :デフォルトの名無しさん:2006/05/26(金) 12:59:04
ファイルとしての同一性を求めてるのか。
画像としての同一性か。
プログラム内インスタンスとしての同一性か。


269 :デフォルトの名無しさん:2006/05/26(金) 13:22:36
質問者が解決したって言っているんだから良いじゃない。

270 :デフォルトの名無しさん:2006/05/26(金) 13:47:16
>>268
画像の整理をしたいのでは。同じ画像が別名でよくダブる。
どんな画像か知らんが。

271 :デフォルトの名無しさん:2006/05/26(金) 13:55:02
俺はそんなときまず同じファイルサイズのものを抽出する。
どんな画像かは言わんが

272 :デフォルトの名無しさん:2006/05/26(金) 14:30:59
そういう整理なら、専用ツールが幾らでもあるね。

273 :デフォルトの名無しさん:2006/05/26(金) 14:58:27
質)
loadpicture()で取れる値って同じファイル参照しても値が毎回違うのはメモリのアドレス返してるから?


274 :デフォルトの名無しさん:2006/05/26(金) 15:39:35
>>273
LoadPicture が返す値は、ロードした画像を示す
単なる「ある値」であり、その値そのものを比較したり
意味を求めたりするのは無意味。

275 :デフォルトの名無しさん:2006/05/26(金) 15:51:51
比較してこれでいけましたって言ってるんだから良いじゃない。

276 :デフォルトの名無しさん: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 が省略できる謎仕様だ

277 :デフォルトの名無しさん:2006/05/26(金) 23:10:51
>>276
直感的じゃないから。

278 :デフォルトの名無しさん:2006/05/27(土) 00:47:01
VB6でWinsockを使ったソケット通信で、
サーバ側PGの受信待ち時間を○秒って指定できるんですか?
できるならやり方教えてください。
お願いします。

279 :デフォルトの名無しさん: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


280 :デフォルトの名無しさん:2006/05/27(土) 04:19:17
プライドも何もかも捨ててお願いがあるんですが、
どなたかヒントください…orz

-1-
長方形を選択したとして実行する。
その右端から、縦と横を入替えて、値を表示するプログラム。

-2-
行列A,Bが、セル範囲に入力されているとする。
この行列の積を求めるプログラムを作る。

※シートマクロで、行列範囲を表す3つの範囲を書くスペースがあったとして、
一つ目がA、二つ目がB、三つ目(これはセルの左上さえ入力されていればいい)を、
入力する部分を作っておき、行列ABの答えを、三つ目のセルを左上として、行列を作ること。

281 :デフォルトの名無しさん:2006/05/27(土) 04:22:56
280ですが、なかったことにしてください…。
無駄な書き込みしてすいませんでした。

282 :デフォルトの名無しさん:2006/05/27(土) 10:13:36
>>278
タイマーコントロールを使えば

283 :デフォルトの名無しさん:2006/05/28(日) 00:08:14
VB2005 Expressの事で質問したいのですが、ここで良いでしょうか?

284 :デフォルトの名無しさん:2006/05/28(日) 00:21:33
ここはVB6にしがみついて死守するスレなのでやめとけ

285 :デフォルトの名無しさん:2006/05/28(日) 00:25:28
>>284
と言っても2005のスレが無いようなのですが・・・・
取り敢えずぐぐります

286 :デフォルトの名無しさん:2006/05/28(日) 01:25:12
>>285
2002, 2003, 2005はVB.NETの括りになる。
2005からマーケティング上の理由でVB.NETの名称は使わなくなったが .NET Framework上で動く同じ範疇のもの。
というわけで つ VB.NET質問スレ (Part15)

287 :デフォルトの名無しさん:2006/05/28(日) 02:08:50
>>286
なるほろ、そういう事でしたか。thxです

288 :デフォルトの名無しさん:2006/05/28(日) 02:35:39
すでにあるフレームに新しくコントロールを
追加するときは、どうしたらいいですか?
どうしても親のフォームの方に載ってしまいます。

289 :デフォルトの名無しさん:2006/05/28(日) 08:13:04
>>288
Set コントロール.Container = Frame1


290 :デフォルトの名無しさん:2006/05/28(日) 08:38:07
>>286
「マーケティング上の理由」ってどんなの?

291 :デフォルトの名無しさん:2006/05/28(日) 11:34:02
VB5の開発環境にVB・.NETを含むVisual Studio 2005 Express Editionを
インストールして同一のマシンでの開発環境の混在は可能でしょうか?

292 :デフォルトの名無しさん:2006/05/28(日) 11:54:43
>>291
謹んでお答えしましょう。
一分で調べがつくようなことを人に尋ねないと気がすまないお方は
プログラミングという行為そのものから撤退すべきです。
ご自身のためにも、周囲の人たちのためにも。

-- 以上 --


293 :デフォルトの名無しさん:2006/05/28(日) 13:42:03
>>291
可能じゃないあるよ

294 :デフォルトの名無しさん:2006/05/28(日) 14:35:28
>>291


295 :デフォルトの名無しさん:2006/05/28(日) 15:25:10
>>289
ありがとうございます。

すでにフォーム上に存在しているコントロールを、
マウスのドラッグなどでフレーム内に移せないでしょうか?

296 :デフォルトの名無しさん:2006/05/28(日) 17:15:00
ドラッグなどして移せればできる。移せなければできない。

297 :デフォルトの名無しさん:2006/05/28(日) 20:48:58
>>295
その様に作ればできる。
一行でできる方法はない。


298 :デフォルトの名無しさん:2006/05/29(月) 01:20:31
うーん。
では、後から気が変わっても、
簡単にフレームに入れることはできないんですね。

299 :デフォルトの名無しさん:2006/05/29(月) 02:41:45
>>296
は静的な話と思って回答している
>>297
は動的な話と思って回答している
>>295
はどちらかはっきりすること

300 :デフォルトの名無しさん:2006/05/29(月) 12:46:10
>>295
フォーム上にあるコントロールを切り取ってフレーム上に貼り付ければ移せれる

301 :デフォルトの名無しさん:2006/05/29(月) 22:11:13
このスレレベル低いね


302 :デフォルトの名無しさん:2006/05/29(月) 22:26:43
>>301
うん、だから君はもう来る必要ないよ。

303 :デフォルトの名無しさん:2006/05/30(火) 00:01:05
>>300
明日やってみます!

304 :デフォルトの名無しさん:2006/05/30(火) 00:07:50
VB6で多言語対応のダイアログを作成したいんですが、どうすればいいんでしょうか?
VCやVB.NETのように言語別にダイアログを作成するのは無理なんでしょうか?

305 :デフォルトの名無しさん:2006/05/30(火) 00:25:34
ちゃんと方法が書かれてあるが?

306 :デフォルトの名無しさん: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とかバラバラに説明されてるからようわからん
↑の方法だとフォーカスがあるフォームのショットしか取れんの??

307 :デフォルトの名無しさん:2006/05/30(火) 00:39:33
2番目のパラメタは、MSDNによれば、"This parameter is not used."なのだ。

308 :デフォルトの名無しさん:2006/05/30(火) 00:43:26
not used っちゅーことは使わないってコト?
ならフォーカスor全体を判別しないってことなのかな?

309 :デフォルトの名無しさん:2006/05/30(火) 00:53:04
>>306
試してないけど
ttp://www.bcap.co.jp/hanafusa/VBHLP/snapshot.htm

310 :デフォルトの名無しさん: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になる。

311 :デフォルトの名無しさん:2006/05/30(火) 02:01:02
notebookだからfnキーを押しながらじゃないと無理っぽい
fnキーの仮想コード調べたけどよくわからんかった
ってかあるのか?

312 :デフォルトの名無しさん:2006/05/30(火) 07:24:07
>>311
どういう洒落なのか説明してくれ

313 :デフォルトの名無しさん:2006/05/30(火) 07:54:32
>>311
そのコードを調べるプログラムなんてVBなら5秒で書けるが。

314 :デフォルトの名無しさん:2006/05/30(火) 08:08:33
keydown とか keypressイベとかでは取れないよ

315 :デフォルトの名無しさん:2006/05/30(火) 08:25:14
Fnキーってハードウェアレベルでエンコードされちゃってるんじゃないかと思うが。。

316 :デフォルトの名無しさん:2006/05/30(火) 09:01:50
ハードウエア情報を取得し型式データベースと照合して
ノート型モデルかどうか判別するという洒落。


317 :デフォルトの名無しさん:2006/05/30(火) 09:20:19
うちのはノートじゃないがFキーあるぞ?

318 :デフォルトの名無しさん:2006/05/30(火) 11:10:43
強制的にキーコード送ってるのだからノートとかって関係ないんじゃまいか?

319 :デフォルトの名無しさん:2006/05/30(火) 11:13:08
うちなんかノートじゃないのにFn(n:1〜12)キーがある

320 :デフォルトの名無しさん:2006/05/30(火) 11:14:23
Fnってのはファンクションキーのことではないと思われ

321 :デフォルトの名無しさん:2006/05/30(火) 11:18:01
PageUp,PageDownとかがが上下左右キーと同じに割りつけてあるときに
Fnキーと一緒に押さなければならないキーボード(Fnキー)を指してるんではないのか?

322 :デフォルトの名無しさん:2006/05/30(火) 12:53:28
多くのノートPCに使用されているキーボードでFnキーはコントローラのレベルでキーコード変換がされているのでFnキーの取得はCPU側からはできない


323 :デフォルトの名無しさん:2006/05/30(火) 13:12:28
VBからAccessのレポートのプレビューを見たいのですが、
うまくいきません。

Set ap = CreateObject(

324 :323:2006/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 にすると印刷はできるのですが、
プレビュー時には何も起こらないんです。

325 :デフォルトの名無しさん:2006/05/30(火) 13:18:56
すぐCloseしたりQuitするから何も起こらないように見える
プレビューしたいならQuit呼んじゃだめだよ

プレビューならViewer的なAccessアプリケーションをつくり
外部EXEとして実行をする方がリソース開放とかいろいろ考えなくて楽だよ

326 :デフォルトの名無しさん:2006/05/30(火) 13:50:15
>>324
終了するまでまってQuitするにはこんな感じでいけたと思う。
While Not ap.ActiveSheet Is Nothing Wend
ap.Quit

327 :デフォルトの名無しさん:2006/05/30(火) 13:52:19
>>326
すまん、例がExcelだった・・・まぁ同じ感じで出来ると思うから

328 :323:2006/05/30(火) 15:20:02
すぐ閉じてたのが原因だったのですね。ありがとうございます。
>>326さんの外部EXE形式のViewer作戦を試してみたいとおもいます。
>>327さんのは「ap.ActiveSheet」でひっかかりました。_| ̄|○

329 :デフォルトの名無しさん:2006/05/30(火) 15:21:05
質問です。
http://homepage1.nifty.com/rucio/etc/Stations.htm
のプログラムをつくると、
StartStationからEndStationまでの
時間は出るんですけど、
逆にEndStationからStartStationまでの時間って
どうやって出すんですか?
やっぱり新しいプロシージャを
つくるしかないんですか?

ちなみにwindowsXP、VB6.0です。

330 :デフォルトの名無しさん:2006/05/30(火) 15:42:43
駅を逆に入力する

331 :デフォルトの名無しさん:2006/05/30(火) 16:10:36
>>330
やはりそういった方法しかないのでしょうか?

332 :デフォルトの名無しさん:2006/05/30(火) 16:44:51
>>329
・駅名を取得する
・2つの駅間の時間を計算する
せめてこの2つはFunction化しないことには、
>>330が最小手順の解決方法になりますよ。

333 :デフォルトの名無しさん:2006/05/30(火) 16:56:02
>>330
またはStartStation と EndStation の値を入換える
If StartStation > EndStation Then
xx = StartStation: EndStation = StartStation: StartStation = xx
End If


334 :デフォルトの名無しさん: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

335 :デフォルトの名無しさん:2006/05/30(火) 18:36:34
>>328
Accessはこれでいいんじゃね?
ttp://www.mitene.or.jp/~saosao/VB1.html

336 :デフォルトの名無しさん:2006/05/30(火) 19:38:35
>>332-334
そういう考え方があるんですね!
大変勉強になりました。
ありがとうございます。


337 :デフォルトの名無しさん:2006/05/30(火) 20:09:23
>>336
栗田ゆう子みたいだ。w

338 :デフォルトの名無しさん:2006/05/31(水) 00:08:52
質問なのですが・・
accessをインストールせずにVBだけでaccessのDBファイルを
最適化できるものなんでしょうか?
access環境のないPCがないので実験不可能です。
すいませんがどなたかお教え下さい・・・

VBはSP6 OSはwin XPです。


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

>>311
Fn押しながらPrint Screenだと、
それにAlt組み合わせるのできないかも。
うちのDynabookだとできなかった。

340 :デフォルトの名無しさん:2006/05/31(水) 02:15:57
>338
出来る。
最適化どころかMDBに対してはほとんどの事が可能。

341 :デフォルトの名無しさん:2006/05/31(水) 02:27:57
どうやってやるんですかとか聞いてきそうだな。
しかも具体的なコードを書いてくださいとか言ってきたりしてw
なので先に言っておく
>>338、とりあえずやり方は自分で調べろ。
それでもどうしても解らなかったら、解った範囲でやり方やコードを書いて再質問すること。
丸投げとか、1週間もしないうちに再質問したりとかしないでね。

342 :デフォルトの名無しさん:2006/05/31(水) 07:45:10
>>341
DAO 関連って、最初っから全部入ってるんだっけ?

343 :デフォルトの名無しさん:2006/05/31(水) 07:51:36
>>342
DAO は配布できる

344 :デフォルトの名無しさん:2006/05/31(水) 08:11:24
>>343
いやそうじゃなくて、Windows をインストールした直後から使・・・って、
VB入れたらインストールされるんだっけか。

345 :デフォルトの名無しさん: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を入れた方がよい

346 :デフォルトの名無しさん:2006/05/31(水) 14:33:46
>>345
d。
しかしJROって初めて聞いた。
ジャロ?w

347 :デフォルトの名無しさん:2006/05/31(水) 15:46:39
最近VBScriptを覚え始めた者です

フォルダ選択ダイアログは出せるのですが
ファイル選択ダイアログって出せるんでしょうか?
教えてください

348 :デフォルトの名無しさん:2006/05/31(水) 16:14:10
>>347
こんなんでました。
ttp://hp.vector.co.jp/authors/VA006065/scripts/bat2vbsf.htm

349 :デフォルトの名無しさん: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から使っても大ジョブ

350 :デフォルトの名無しさん:2006/06/01(木) 18:56:40
Train Kept A Rolling

351 :デフォルトの名無しさん:2006/06/01(木) 22:38:52
>>349
配列を0からにしないといけない明確な理由は?
変数を減らすために最初の練習用?サンプルを大幅に変更する意味はなに?

352 :デフォルトの名無しさん:2006/06/02(金) 00:02:10
>>351
俺は349じゃないけど、配列のインデックスの開始を0以外にする、なんて
VB独自の作法は使わない方が無難。

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

それにまあ頭の悪いVB厨だと思われるの嫌でしょ?w

353 :デフォルトの名無しさん:2006/06/02(金) 00:18:10
>>352
Basicなら前提として1からと決まっている。
0から開始するなんてVB独自の作法は使わないほうが無難。

354 :デフォルトの名無しさん:2006/06/02(金) 00:23:03
キチガイだなw

355 :デフォルトの名無しさん:2006/06/02(金) 00:43:13
Cは0から
Basicは1からがデフォ

356 :デフォルトの名無しさん:2006/06/02(金) 01:12:59
For も1から回すの?

357 :デフォルトの名無しさん:2006/06/02(金) 01:56:37
おいおい配列のインデックスは古いBASICもVBも指定しなければ0からだろ。
CやVB.netは0固定だし、わざわざ1からにする理由は無いぞ。

358 :デフォルトの名無しさん:2006/06/02(金) 02:01:18
最新の国際標準は1からですが、

359 :デフォルトの名無しさん:2006/06/02(金) 02:04:08
スマソ。途中で送信された。
最新の国際標準は1からですが、
個人的には0からの方がいいと思います。

360 :デフォルトの名無しさん:2006/06/02(金) 02:51:00
>>357
MS$も配列の開始を統一してないし、一般(初心者)に開始は1からのほうが解りやすいと思ってみたり・・・
ただ、>>352 が言っているように昨日の自分は他人の自分で、未来の為に統一しといた方がいいと俺も思う。

361 :デフォルトの名無しさん:2006/06/02(金) 03:13:42
俺は0からに抵抗無かったからピンとこないんだけど、初心者には1からの方がわかりやすいのかな。
実際の所どうなんだろ。
後ひまわりとか日本語で書けるから初心者向きとか言ってるけど、それもどうなんだろ。
やっぱり初心者はアルファベット難しいのかな。

362 :デフォルトの名無しさん:2006/06/02(金) 12:02:20
0オリジンと1オリジンの宗教戦争をここでやっても仕方が無かろう

363 :349:2006/06/02(金) 14:02:05
こんなとこまでゆとり教育か
あ、いや煽りなのは分かってるがどうしても言ってみたくなった、許してくれ

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

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

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

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

スレ荒れるのは忍びないので宗教戦争はこのくらいにしておくれ

364 :351:2006/06/02(金) 14:41:00
>>363
俺はどっちでもいいって考えだから質問してみただけなのに・・・書き方が悪かったのか
初心者うんぬんは解りづらくしなくてもと思ったからついでに聞いてみた。
みなさん、これで終了でよろしく。

365 :デフォルトの名無しさん:2006/06/02(金) 16:34:04
メニューを開いて、ポイントしている項目を取得する方法はありますか?
たとえば、
ファイル
・・・新規作成
・・・名前を付けて保存
・・・上書き保存
とかあって、ファイルをクリックしてメニューだして、マウス動かして、
カーソルが「名前をつけて保存」の上にあったら、それを取得する方法です。

366 :デフォルトの名無しさん:2006/06/02(金) 17:21:20
>>365
今VB動かない環境なので確認出来ないけど、
Mouse_Move とかでメニューのプロパティの .Text とか見たら?

367 :デフォルトの名無しさん:2006/06/02(金) 18:32:11
>>366
それは無理だよ。メニューポイント中はmoveイベント発生しないよ。

368 :デフォルトの名無しさん:2006/06/02(金) 20:05:41
>>367
そうなんだ。ゴメン。
じゃぁ、メニューの上でマウスカーソル動かすと、ステータスバーに
それが出てくるくる変わるやつはどうやってるんだろ?

369 :デフォルトの名無しさん:2006/06/02(金) 20:06:03
たしか、サブクラス化して読んでた例があったような。

370 :デフォルトの名無しさん:2006/06/02(金) 22:06:48
WM_MENUSELECTを捕まえればいいんじゃね?

371 :デフォルトの名無しさん:2006/06/02(金) 22:28:13
>>369
じゃぁ後はググれば解決だね。

372 :デフォルトの名無しさん:2006/06/03(土) 02:58:32
なんかみんなホントすげぇな
何年くらいかかるの?

373 :デフォルトの名無しさん:2006/06/03(土) 08:03:09
>>372
何が何年?

374 :デフォルトの名無しさん:2006/06/03(土) 08:43:52
>>373
質問に答えられるようになるのにじゃね?
もしそうだったら、人それぞれ。知っていること(やったこと)なら1日でも可能(w

375 :デフォルトの名無しさん:2006/06/03(土) 09:04:14
>>374
あぁそういう意味か。

376 :デフォルトの名無しさん: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

377 :376:2006/06/03(土) 13:22:17
シートコピーすりゃ良かったのか
くだらない質問申し訳ない

378 :デフォルトの名無しさん:2006/06/04(日) 00:31:29
VB6のIDEで、現在プロジェクト内で作成している関数一覧を表示し、ダブルクリックで
その関数の場所に飛ぶといったことはできるのでしょうか?
また、それが可能な場合、いくつかの関数を一まとめにして、階層的に表示することは
可能でしょうか?

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

┬関数A
├関数郡B
│├関数B-1
│└関数B-2
└関数C

379 :デフォルトの名無しさん:2006/06/04(日) 00:34:44
関数村字関数

380 :デフォルトの名無しさん:2006/06/04(日) 02:33:09
Excel VBAについての質問です。
文字列と数字列が規則的に混在する文字列中から文字列のみを抜き出すのって
可能ですか?

具体的に・・・
"アイウエオ0123"
"カキクケコ4567"
といった"全角文字列"+"全角or半角が混在する数字列"といった組み合わせ
なのですが、その中から"全角文字列"のみを抜き出すには、どういった方法
がありますでしょうか?

381 :380:2006/06/04(日) 02:53:30
うあ!?すいません。sage忘れてました(^^;;;

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

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

・・・とか・・・

"なにぬ9876543210"

・・・ってのもあったりします。

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

あと、sage忘れって、ここって別にsage進行じゃないでしょ?
ageていいんじゃないの。むしろ、質問はageたほうがいいのでは。

383 :380:2006/06/04(日) 03:24:02
あ、ageてよかったんですね(^^;
失礼しましたm(_ _)m

あ、そか、Replaceか!
Loopで一文字づつ削ってたんですけど、あまりにもスマートじゃない気がして
たんで・・・助かりましたm(_ _)m
早速やってみます。

384 :デフォルトの名無しさん:2006/06/04(日) 03:39:39
>>380
A ループを使ってReplace関数で数字を空文字に置換
B 正規表現(RegExp)で数字以外を抽出
C 1文字ずつチェックしIsNumeric関数がFalseを返した文字を繋げる

あたりが基本的な処理だが、数値・数字は必ず末尾数桁のみというなら
D 後ろからループ回して1文字ずつIsNumericでチェックし、Falseになった文字位置までをLeft関数で抽出
の方がいいかもな。
まあ正規表現でも数字が1カ所にまとまってるならs/[\d0-9]//一発で終わりだけど。

385 :デフォルトの名無しさん:2006/06/04(日) 09:07:25
>>378
誰かが作ったアドインで、そんなのがあった様な気がする。
ググってみては。

386 :デフォルトの名無しさん:2006/06/04(日) 09:58:34
環境VB6 SP6
   XP SP2
別スレつくるAPIで
内部でFunction関数つかったらソフトがおちるんだが・・・・
こんなやついるの?
ググで調べても落ちる情報はない感じ

おとなしく.NETでソフト書いたほうがいいのかいな?
ドトネト使うほどのソフトじゃないので好きなVBでやってたんだが・・・


387 :デフォルトの名無しさん:2006/06/04(日) 10:15:14
ホスト規制とかされてんじゃないの

388 :デフォルトの名無しさん:2006/06/04(日) 10:22:53
>>386
「別スレつくるAPI」て何?
2chのスレを作る関数??

389 :デフォルトの名無しさん:2006/06/04(日) 10:23:39
>>386
VBはマルチスレッドに対応していない。

390 :デフォルトの名無しさん:2006/06/04(日) 12:03:32
> VBはマルチスレッドに対応していない。

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

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

出来ればVB使いたいにしても、.NETの選択肢があるならそっち使え。

391 :デフォルトの名無しさん:2006/06/04(日) 13:54:36
>>389-390
おk
じゃぁそうするかww
おとなしくドトネトでやるっす。

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

サンクスでした

392 :デフォルトの名無しさん:2006/06/04(日) 21:33:58
>>391
昔のDDJ辺りでスレッド作ってやっちゃいけない事集みたいなのが有った気がする
というか出来る事集だったかな

393 :デフォルトの名無しさん:2006/06/04(日) 22:23:38
>>392
DDJ・・・何もかも懐かしい・・・

394 :デフォルトの名無しさん:2006/06/05(月) 04:30:06
ThreadID1 = GetWindowThreadProcessId(h, ByVal 0&)

この文の最後のByVal 0&の0&ってどういう意味なんですか?
ただの0とは何か違いがあるのでしょうか?

395 :デフォルトの名無しさん:2006/06/05(月) 06:38:41
>>394
型宣言文字
&はLong型をあらわす。

396 :デフォルトの名無しさん:2006/06/05(月) 08:18:57
>>394
宣言が As Any になってるので、「値としてのロングのゼロ」を渡すと明確に書いてる。

397 :394:2006/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としておかないのでしょうか?
いちいち呼び出すときに&を明示しなくてもよくなると思うのですが、
何か事情でもあるのでしょうか.

398 :デフォルトの名無しさん:2006/06/05(月) 09:08:18
>>397
その引数は、本来「プロセスIDを受け取る変数のアドレス」を設定する物。
でも、スレッドIDだけが知りたい場合、ゼロを指定するので、そうなってる。

399 :394:2006/06/05(月) 13:10:29
>>398
なるほど!!!ありがとう!!!

400 :デフォルトの名無しさん: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全部二つの引数として取得したいんだけど、なんかいい方法ないっすか?

要は、""で囲んだ文字列は一つの引数として取り出したい

よろしくおねがいしまっしゅ!

401 :デフォルトの名無しさん:2006/06/07(水) 00:10:02
>>400
普通に文字列操作
サンプルも腐るほど転がってる

402 :デフォルトの名無しさん:2006/06/07(水) 00:19:24
すみません、誘導されてきました。excelVBAで質問なのですが
as0125えet後Etたッワ
のような前半が半角、後半が全角の
ランダムな文字列から前半と後半を分離しようと思うのですが
ASC(2バイト系文字)がおかしくなってしまって困っています
いったいどう対処すればよいかどなたかアドヴァイス頂きたいです。

403 :400:2006/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


404 :デフォルトの名無しさん:2006/06/07(水) 06:04:50
> API関数
"みたいの"ならある。


405 :デフォルトの名無しさん:2006/06/07(水) 06:39:50
C/C++ のargsだとその辺のコマンドラインの解析はやってくれてるけど
あれはCRTがやってるの?それともAPIレベル?

406 :デフォルトの名無しさん:2006/06/07(水) 06:56:13
CommandLineToArgvWというAPIが無いわけでもない。
けど、だいたいはCRTが処理しているはず

407 :デフォルトの名無しさん:2006/06/07(水) 10:55:33
>>402
何がしたいのかサッパリ分からんが、一文字取り出してから
StrConv でシフトJIS文字にしてバイト数を見るとか。

408 :デフォルトの名無しさん:2006/06/07(水) 17:05:28
初心者質問だけどカンベンしてくれ・・
会社で今、まじ困ってる。取得した日付(第二引数に入力された値)が、
ちゃんとした日付型かどうか判定(文字とかが入ってたらだめ)するには、
どうすればいい??どんな関数を使えばいいんでしょうか??


409 :デフォルトの名無しさん:2006/06/07(水) 17:11:42
IsDate()

410 :デフォルトの名無しさん:2006/06/07(水) 18:39:24
>>409
サンクス!

411 :デフォルトの名無しさん:2006/06/07(水) 21:43:26
初歩的な質問かも知れないけど教えてください。
異なる2つのセルの値を比較して、値が異なっているなら
両方のセルに色をつけるという関数は作成可能でしょうか。
VBAマクロでは簡単に作れたのですが、ユーザー関数で作成したいんです。

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




412 :デフォルトの名無しさん:2006/06/07(水) 22:46:42
おーとめーそんで終わりだろ。

413 :デフォルトの名無しさん:2006/06/07(水) 22:59:14
関数式の入ったセルに値を入力されても泣かないこと

414 :デフォルトの名無しさん: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

このように記述して、インターネット上から株価のログを取得しています。
しかし、繰り返し処理をしているうちにだんだん重くなってしまい、
固まってしまうこともしばしばです。
何か良いアドバイスをください。。

415 :デフォルトの名無しさん:2006/06/08(木) 12:13:26
エクセルのVBでの質問です。

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

教えてください。

EX, 文字列は " aBc 011 122 Z" 実行結果→011

416 :デフォルトの名無しさん:2006/06/08(木) 12:28:01
midのみと言いながらfor-next,ifなどを使えという時点で問題がおかしい

417 :デフォルトの名無しさん:2006/06/08(木) 12:55:52
文字列操作系の関数はMIDのみってことじゃない?

418 :デフォルトの名無しさん:2006/06/08(木) 12:58:49
for-nextやifは関数ではないので
問題はおかしくない。

419 :デフォルトの名無しさん:2006/06/08(木) 13:48:43
for-next,if関数とかいてある時点で問題がおかしい

420 :デフォルトの名無しさん:2006/06/08(木) 13:53:14
>>415
先頭から一文字づつ取り出して、最初に数値が出てきたら、
数値じゃなくなる迄別変数に追加する。
としか言い様がない。

421 :デフォルトの名無しさん:2006/06/08(木) 13:54:21
>>418
そこがCに劣るところ

422 :デフォルトの名無しさん:2006/06/08(木) 13:59:37
>>421
Cでもforやifは関数ではないぞ。

423 :デフォルトの名無しさん:2006/06/08(木) 14:01:19
vbからデータベースに接続できないときにイベントビューアーに
エラーログを出力をしたいんだけど、どうやればよいのでしょうか??
誰か助けてください(__)

424 :423:2006/06/08(木) 14:09:25
自己解決しますた!!

425 :デフォルトの名無しさん:2006/06/08(木) 14:19:03
塩まいとけ

426 :デフォルトの名無しさん:2006/06/08(木) 14:23:10
>>421
言語に優劣等ない。
適材適所。

427 :デフォルトの名無しさん:2006/06/08(木) 14:30:49
>>424
どうやって?
解決策を書く気は全くなし?

428 :デフォルトの名無しさん:2006/06/08(木) 14:39:12
>>420
コードをとか言われそうだなぁ(w

429 :デフォルトの名無しさん:2006/06/08(木) 15:20:06
418です
>420 ありがとうございます

でもうまく書けません

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

できれば 詳しく教えて下さいm(__)m

430 :デフォルトの名無しさん:2006/06/08(木) 15:31:07
>>429
あの文章よりもどう詳しくしろと言うのか。

431 :デフォルトの名無しさん:2006/06/08(木) 15:42:31
もっとやさしい課題から理解しないと無理では

432 :デフォルトの名無しさん:2006/06/08(木) 15:43:36
>>427
>>425

433 :デフォルトの名無しさん:2006/06/08(木) 16:04:42
初歩的な質問だけど、お願いします。
C:\HOKYU.INI
このファイルがあるかどうか判定するには
どのような関数を使えばよいのでしょうか?

434 :423:2006/06/08(木) 16:10:29
VBScriptのオブジェクトを使って

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

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

とすることで、
イベントビューアのアプリケーションログにエラーが書き込まれます。

だって、コピペだけど

435 :デフォルトの名無しさん: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.に戻る

436 :デフォルトの名無しさん:2006/06/08(木) 16:55:54
>>433
Dir

437 :デフォルトの名無しさん:2006/06/08(木) 18:58:17
>420

どうか,コ-ドを お願い致します
m(__)m m(__)m

438 :デフォルトの名無しさん:2006/06/08(木) 19:06:43
>>437
バグってても、コンパイルエラーが起きててもいいから、
自分ができるところまで書け。お前が与えられた課題だろうが。

439 :デフォルトの名無しさん:2006/06/08(木) 19:16:52
>>437
>>435

440 :デフォルトの名無しさん:2006/06/09(金) 09:23:58
>>6を見るとVB6はこれからも業務で使われ続ける流れになるのかな?
それとも、COBOLみたいなことになる?

ぶっちゃけるとそろそろ2005系に移行したほうがいいのかな?


441 :デフォルトの名無しさん:2006/06/09(金) 09:52:39
>>440
適材適所。

442 :デフォルトの名無しさん:2006/06/09(金) 11:57:47
まぁ保守がメインになるんじゃない?

俺は色々なことがラクになるから2005つかってるけど

443 :デフォルトの名無しさん:2006/06/09(金) 12:52:08
>>442
何が楽になりましたか?

COBOLみたいなことになるなら6ONLYって訳にはいかないかなと思って…

444 :デフォルトの名無しさん: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

445 :デフォルトの名無しさん:2006/06/09(金) 14:35:14
IsNumeric

446 :デフォルトの名無しさん: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

447 :デフォルトの名無しさん:2006/06/09(金) 14:38:28
>>445
関数はmidだけなんだとさ、意味ない制限だな

448 :デフォルトの名無しさん:2006/06/09(金) 14:39:36
>>415の関数制限なくしたら
お前らならどう実装する?

449 :448:2006/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

450 :デフォルトの名無しさん:2006/06/09(金) 15:20:55
>>446
やっぱりなぁ・・・文字でもOKだったか

451 :デフォルトの名無しさん:2006/06/09(金) 15:25:56
>>449
スペースで区切られている保証はないかも・・・まぁ課題は区切られているけど(w

452 :デフォルトの名無しさん:2006/06/09(金) 17:11:14
>>451
文字列の仕様に基づいてsplitの区切り文字変えればよかろ

まあ、スペース区切りの”囲いとかだったらちょっと処理足りないが

453 :デフォルトの名無しさん:2006/06/09(金) 17:45:49
>>452
区切り文字が無かったら駄目でしょってこと

454 :デフォルトの名無しさん:2006/06/09(金) 17:52:25
>>453
その場合は>>444でいいんじゃね?

455 :デフォルトの名無しさん:2006/06/09(金) 17:54:00
初心ですいませんが、質問させてください。

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

あと、VBで

define A(0)=12.5
みたいなのはありますか?
よろしくお願いします。

456 :デフォルトの名無しさん:2006/06/09(金) 18:24:54
>>455
ぐぐればいくらでもヒットする

457 :デフォルトの名無しさん:2006/06/10(土) 01:00:09
const

458 :デフォルトの名無しさん:2006/06/10(土) 08:15:43
APIのSetTimer関数でタイマー処理するとき
P-Codeコンパイルじゃないと即落ちするんですけど
そんなもんでしょうか?

CallBack関数内の処理をほとんど空にしてもなります。

459 :デフォルトの名無しさん:2006/06/10(土) 09:52:27
>>458
コピペするだけで現象が再現する必要最低最小限のコードは?

460 :デフォルトの名無しさん: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
-------------------------------------------------------

461 :デフォルトの名無しさん: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

462 :458:2006/06/10(土) 11:09:12
どうもコールバック関数内でtimeGetTime()関数を呼び出すのがひっかかってるみたいで、
変数の値を変えるとか、フォームのラベルを書き換えるのはOKみたいなので
関数を呼び出すことに問題があるようです。

463 :デフォルトの名無しさん:2006/06/10(土) 11:18:24
timeSetEventのコールバック呼び出しって、呼び出しもとのスレッドが違ってなかったっけ?

464 :デフォルトの名無しさん:2006/06/10(土) 11:37:09
普通にタイマコントロール使えばいいじゃん。

465 :458:2006/06/10(土) 11:43:41
>>464
MIDI再生のためにインターバル1msで使いたいわけですが
最近はタイマーコントロールでも大丈夫なんすかね?
まあ、それはやってみればいいんですが。

466 :デフォルトの名無しさん:2006/06/10(土) 12:17:30
そもそもWindowsで、協調しながら1ms単位の行動を起こすことは不可能。

467 :458:2006/06/10(土) 12:40:12
>>466
精度が悪いのは当然承知の上で、可能な限り短い割り込み間隔が欲しいわけです。
となるとやはりマルチメディアタイマーかなと。

468 :デフォルトの名無しさん:2006/06/10(土) 12:42:12
>>465
マルチメディアタイマ使っても、正確な1msなんて不可能。
WindowsはリアルタイムOSじゃないから。

469 :デフォルトの名無しさん:2006/06/10(土) 12:55:14
>>468
1msだと負荷がかかりすぎて落ちるとか言うならともかく、正確に1ms出る出ないは今直接関係なくないか?
数十msもブレるわけじゃないんだし。

470 :デフォルトの名無しさん:2006/06/10(土) 13:11:47
興味出たので調べてみたが、
googleで「vb マルチスレッド timeSetEvent」で検索したとき
最初の方に出てくるいくつかのサイトに参考になりそうな記載があるようだよ

471 :デフォルトの名無しさん:2006/06/10(土) 13:11:56
誰かコード試した?
私も試したいけど、今起動中のXPにはVB入ってないんだよな・・・_| ̄|○

472 :458:2006/06/10(土) 15:29:12
みなさんありがとうございます。

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

タイマーなのでマルチスレッドでformの移動などにほぼ影響されずに動いて欲しかったのですが、
CreateThread関数を使って生成されたスレッドと同じように使用に制限があるということですか。
P-Codeでもformを頻繁に移動するなどすると終了時にエラーが出ますが、業務用でもないので
P-Codeコンパイルで当面いってみます。

473 :デフォルトの名無しさん: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となってしまいます。

何かおかしい点はありますか?

474 :デフォルトの名無しさん: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となってしまいます。

何かおかしい点はありますか?

475 :デフォルトの名無しさん: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となってしまいます。

何かおかしい点はありますか?

476 :デフォルトの名無しさん:2006/06/10(土) 20:16:32
Visual Studio 6.0の開発環境を
Windows xp home editionに移植したいのですが、
このときVisual studio 6.0をCDからインストールして
そのStudioを最新版にするときの手順を教えてください。
またVB6.0のUpdateで最終形態にしたいのですが

どれとどのパッチを落としたらよいのでしょうか?
よろしく お願いします

477 :デフォルトの名無しさん:2006/06/10(土) 20:22:47
落とそうとするパッチを全部書けば選んでもらえると思う

478 :デフォルトの名無しさん:2006/06/10(土) 20:53:43
>>475
何故三回も?

>>476
VB6はXPに対応してないよ。

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

>476
MSのサイトで検索して、更新日付順に並べたら分かるよね。
手順なんて説明するほど難しい所は何も無い。

480 :デフォルトの名無しさん:2006/06/10(土) 21:32:38
VB6入れて、SP6a入れておしまい、じゃないの?

481 :デフォルトの名無しさん:2006/06/10(土) 21:37:09
VBだけじゃなくてVS全体となると
http://www.microsoft.com/japan/msdn/vstudio/downloads/sp/VS6SP6.asp
で済むんじゃないの?

482 :デフォルトの名無しさん:2006/06/10(土) 22:12:11
VB6とVB.netの違いについてお伺いさせてください
パソコンソフトを作れるのはもちろんだと思いますが
パソコン外の制御系ソフトウェア、例えばビル監視システムのソフトウェア等
つまりファームウェアを作成する場合は6.0と.netではどちらを活用するべきなのでしょうか?


483 :デフォルトの名無しさん:2006/06/10(土) 22:20:26
>>482
C/C++などをすすめる。

484 :デフォルトの名無しさん:2006/06/10(土) 22:24:47
>>483
VBだと簡単にUIが作れるみたいなので挑戦しようと思っています。
ので、できればVBのどちらかでやるつもりです。

485 :デフォルトの名無しさん:2006/06/10(土) 22:29:38
VB6.0は入手性に難があるぞ

486 :デフォルトの名無しさん:2006/06/10(土) 22:40:28
あ、そうなんですか;
本屋で軽く立ち読みしたら.netはパソコン用ソフトウェアを簡単に・・と書いてあったので
ひょっとしてパソコン用ソフトウェアに特化したものが.netで、パソコン用以外での組み込み系ソフトウェアにも応用が利くのが6.0だと思っていたので確認の為に聞いてみました
現在は.netしか入手できないのならどちらにも応用効くって事ですよね


487 :デフォルトの名無しさん:2006/06/10(土) 22:41:31
>>482
UIはVBで、制御部分は生CでDLLを書けばいい。

488 :デフォルトの名無しさん:2006/06/10(土) 22:42:07
しかしどう考えてもネタとしか思えない質問によく馬鹿正直に答える気になるな。
476とか482みたいな質問のことを言っているのだけど

質問してる奴はそういう馬鹿なくせに、いや馬鹿故に「教えたがり」な君をみて一人密かに
ほくそ笑んでいることと思うぞw

489 :デフォルトの名無しさん:2006/06/10(土) 23:37:39
>>488
質問が素晴らしかろうが、糞だろうが、
自分の気が向いたら適当に答えてるだけ。

490 :デフォルトの名無しさん: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
権限です。

どうしたら良いのでしょうか?


491 :デフォルトの名無しさん:2006/06/11(日) 00:14:38
>>490
VB6のDLLはActiveXだからRegsvr32で登録がいるんじゃない

492 :デフォルトの名無しさん:2006/06/11(日) 00:16:35
>>482
外部の装置をPCから制御するプログラムは、組み込みとかファームウェアとか呼ばない気がする。

493 :デフォルトの名無しさん:2006/06/11(日) 00:17:18
486です。
電化製品に組み込み式の制御系ソフトウェアはwindowsアプリケーションには入らないと思うのですが
やっぱり.netでは作成できそうにないように思えます・・

494 :デフォルトの名無しさん:2006/06/11(日) 00:19:15
>>492
いえ、パソコンから制御するのではなくて専用端末機から制御します。
その専用端末機のファームウェアをVBで作成して組み込むという事です。

495 :デフォルトの名無しさん:2006/06/11(日) 00:29:12
>>493
たとえばさ、何かの検査装置があって単独でも使えるけど、
これをPCからシリアルケーブルを使ってコントロールできるとする。
検査装置は独自のCPUを持っててOSやプログラムは検査装置のROMに書き込まれている。
この検査装置のOSやプログラムのことをファームウェアとか組み込みプログラムと呼ぶのよ。
これの開発に必要なのはその検査装置のCPUにあったクロスコンパイラやエミュレーターなわけで、
VBやVB.NETの出る幕はどこにもないのよ。

んでこの検査装置をPCからコントロールするためには、
シリアルケーブルでの通信のプロトコルの仕様書が提供されてたり、
VBやVCから扱うためのライブラリ(スタティック、ダイナミック)、やActiveXコントロールが提供されてたりするわけで、
これらを使うことになるわけさ。>>486のいってるのはココのことだろ?

496 :デフォルトの名無しさん:2006/06/11(日) 00:40:42
>>495
まさしくそれの事を指していたんですが、言葉の使い方を間違っていたようですみません;
以前、別会社に設計して貰った時はVBでやっていると言ってたのですが
その会社ではまずパソコン上でVBを使いプログラムを作り、それをROMに移して機械本体を実行させる。という流れだったと思います。

あまり知識がないもので言っている事がうまく伝わりませんが・・
こういうことはVBやVB.netではできないのでしょうか?

497 :デフォルトの名無しさん:2006/06/11(日) 00:45:28
その別会社に聞いたらどう

498 :デフォルトの名無しさん:2006/06/11(日) 00:46:59
組み込み系のCE.NETでVB.NET動かせばいいじゃないか
VB6でもCEプラグイン使って作れるし

499 :デフォルトの名無しさん:2006/06/11(日) 00:51:26
だからどう考えても君らみたいなVB厨を嘲笑するためにネタで聞いてる奴に
なにをマジになってw

そんなに人に教えを垂れることに飢えてるのかな

500 :デフォルトの名無しさん:2006/06/11(日) 00:51:37
善意で考えてだまたまその装置のOSがWindows(CEの線もあり?)でその拡張がVBで出来るとして、
それは普通の環境ではないから一般的にVB.NETではどうかと聞かれても答えられないね。
環境で使えるツール類は変わってくるからよくヒヤリングしないと。

501 :デフォルトの名無しさん:2006/06/11(日) 00:53:24
>>488,499
週末なのにいやなことでもあったのか? かわいそす。

502 :デフォルトの名無しさん:2006/06/11(日) 01:05:54
>>498
>>500
やっぱりこちらの情報不足ですか・・
分かりました、とりあえずもう少し本屋などに行って調べてみたいと思います。
ありがとうございました

503 :490:2006/06/11(日) 08:32:47
>>491
すいません、書き間違えました。
.DLL は VB ではなく、 VC で作っています。

504 :デフォルトの名無しさん:2006/06/11(日) 08:47:58
>>490
原因がちゃんとあって、解決出来るならいいんだけど、
もし解決出来ない場合、それが、VB6はXP上で
動作保障されてない、って事。
2000では動くのにXPでは駄目、ってのは幾らでもある。

505 :デフォルトの名無しさん: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ではどうなるかは知らない。

506 :デフォルトの名無しさん:2006/06/11(日) 10:49:51
>>478
えっそうなんですか?
困ったなあ
>>481
ありがとうございます
>>488
僕はまじめに聞いていますよ


;;;;
教えてくれた人ありがとうございました

507 :デフォルトの名無しさん:2006/06/11(日) 10:50:48
>>505
非常にありがとうございました

508 :デフォルトの名無しさん:2006/06/11(日) 11:03:28
>>503
DLL の実行に必要な DLL を Dependency Walker で調べろ

509 :デフォルトの名無しさん:2006/06/11(日) 11:42:54
VB6+Windows2000環境です。
MDIなフォームの右上に表示されているコントロールボックスを
消したいです(最大化、最小化、閉じるのボタン)。
消す事が無理なら無効にしたいんですが、良い方法ないでしょうか?

510 :デフォルトの名無しさん:2006/06/11(日) 11:48:43
>>509
FormのプロパティにMaxボタンとかMinボタンの設定がなかったっけ?
ボタン自体を消すのはAPIにあった気がする

511 :509:2006/06/11(日) 11:51:41
>>510
MDIで無い普通のフォームなら、プロパティーで設定(ボタンを消す)可能でした。
MDIだとそれがありませぬ。APIでできるんでしょうか?

512 :デフォルトの名無しさん:2006/06/11(日) 12:12:02
>>511
@ITのTipsで方法が紹介されている。
ただし、.NET向けの記事ではあるけど。
でも使ってる方法そのものはVBでも恐らく有効でしょう。

513 :デフォルトの名無しさん:2006/06/11(日) 12:31:44
>>505
MSは動作保障してるよ。
まぁ、MSの動作保障なんて全くアテにはならないが。

514 :デフォルトの名無しさん:2006/06/11(日) 13:41:24
かなり必死に探したものの見つからないので、質問させてください。
株なんかの取引を自動化したいのですが、どうしても、
「特定の座標にマウスを移動させて、クリックする」という作業が発生するのですが、
これを簡単に実行するには、どうも「なでしこ」ぐらいしかみあたらないのです。
なでしこだと、ちょっと安定性に不安が残るのと、ちょっとした計算ぐらいはするし、
なんとなくですが、VBとかWSHみたいなものでも簡単に出来そうな気がするので、
何かヒントになりそうな情報がありましたら、是非ご教授ください。

515 :デフォルトの名無しさん:2006/06/11(日) 13:47:46
>>514
っmouse_event API

516 :デフォルトの名無しさん:2006/06/11(日) 13:48:25
>>513
484さんの書いてくれたパッチのダウンロードの環境にもxpって入ってました

517 :デフォルトの名無しさん:2006/06/11(日) 14:54:29
>>516
いやだから、保障されてても、まともに動かないのが問題なのであって。

518 :デフォルトの名無しさん:2006/06/11(日) 14:59:12
>>514
DOM 使って HTML 操作の方がいいんじゃね? Web アプリだよね?

519 :デフォルトの名無しさん:2006/06/11(日) 15:00:29
マルチに反応しちゃ駄目

520 :デフォルトの名無しさん:2006/06/11(日) 15:34:06
サイボウズ6に予定を設定したり取得したりするこは
VB6で出来ますか?
可能なら方法を教えて頂きたいです。
よろしくお願いいたします

521 :デフォルトの名無しさん:2006/06/11(日) 15:48:15
>>520
サイボウズにきいてくれ

522 :どっかのスレの906:2006/06/11(日) 17:44:04
もまいら朗報だ。VS2005からVB6みたいにデバッグしながら開発できる
ようになったようだぞ。

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



523 :デフォルトの名無しさん:2006/06/11(日) 19:37:39
>>522

今迄も普通に出来てた様な・・・

524 :デフォルトの名無しさん:2006/06/11(日) 19:50:26
>523
 ステップ実行中の状態でソースを編集できる様になった、と言いたいのでは
なかろうかと。

525 :デフォルトの名無しさん:2006/06/11(日) 19:51:17
エディトコンティニューがVB.Net2002とか2003とかでは効かなかった話ではないかと

526 :デフォルトの名無しさん:2006/06/11(日) 21:18:31
すみません、スクリプトの方ですけどvbsのスレなんてわざわざ無いみたいなのでここでお聞きします。
vbs(wsh利用可)で、現在の状態が省電力モード(スクリーンセーバが動き出すのってこのモードだよね?)かどうかを
検出するってどうやるのでしょうか?


527 :デフォルトの名無しさん:2006/06/11(日) 21:19:16
逆に、VBでは出来てたのに出来なくなってたのがダサ過ぎ。

528 :デフォルトの名無しさん:2006/06/11(日) 21:25:10
>>526
省電力とスクリーンセーバーは直接関係内

529 :デフォルトの名無しさん:2006/06/11(日) 21:51:38
>>528
調べたら確かに省電力モードって定義があいまいみたいですね。
ということで質問を変えます。
vbs(wsh利用可)で
・スクリーンセーバが動いているかどうか
・電源制御によりモニタの電源が切れた状態かどうか
・電源制御によりHDDの電源が切れた状態かどうか
を知るってどうやるのでしょうか?


530 :デフォルトの名無しさん:2006/06/11(日) 22:51:45
>>529
スクリーンセーバは SystemParametersInfo API かな。

531 :デフォルトの名無しさん:2006/06/11(日) 22:51:57
>>529
おそらくVBSとWSH自身の機能だけじゃ無理。
WMIあたりで可能かもしれないが、一番確実なのは
それらの機能を提供するCOMを自作してVBSから使う方法。

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

後の質問は、あなたがCOM作るのに使う言語のスレでどうぞ。
但し質問する前に一週間くらいは自分で調べようね。

532 :デフォルトの名無しさん:2006/06/11(日) 22:54:39
>>529
電源関係は ACPI で出来ると思う。

533 :529:2006/06/11(日) 23:01:22
ヒントをありがとうございました。


534 :522:2006/06/11(日) 23:32:53
勝手にVB2005の感想。

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

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

まあ、手軽にCOM作りたい輩はVB6からは離れられないのには
変わらんが、それは.Net開発環境じゃお門違いだな。


535 :デフォルトの名無しさん:2006/06/11(日) 23:52:18
> ・スクリーンセーバが動いているかどうか

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

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

GetDevicePowerState() でできるらしい


536 :デフォルトの名無しさん:2006/06/12(月) 00:21:24
>>534
>・ステップ実行中にドラッグでステップを、戻せるようになった。
あれ?2003でも出来ないかそれは
止めれたり戻ったりできる場所が少ないけど

537 :529:2006/06/12(月) 08:54:09
>>535、>>それ以前の方々、
ヒントをありがとうございました。


538 :デフォルトの名無しさん:2006/06/12(月) 09:36:49
web上の文字列を手に入れるときに何の関数を使えばいいのか分かりません

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

で出てきませんでした
ヒント下さい

539 :デフォルトの名無しさん:2006/06/12(月) 09:42:07
GetWebStringsという関数を作る

540 :デフォルトの名無しさん:2006/06/12(月) 10:34:49
>>535
スクリーンセーバーのデスクトップて?

541 :デフォルトの名無しさん:2006/06/12(月) 10:55:04
>>539
レスサンクスです

InternetReadFileで詳細をもらってくる
その中から一部の文字列に絞ってクリップボードに入れるorテキスト表示させるorファイルに出力させる
でいきます。

542 :デフォルトの名無しさん:2006/06/12(月) 19:52:38
listview コントロールにて Add でアイテムを追加していくと
先頭に挿入されるのですが、
listbox コントロールのように後から追加するアイテムを
後ろにつけるためのプロパティ、もしくは簡単な方法はありませんでしょうか。。

543 :デフォルトの名無しさん:2006/06/12(月) 20:41:14
>>542
Sort ONなんじゃない?

544 :デフォルトの名無しさん:2006/06/13(火) 07:22:30
APIで顧問コントロール等々を呼び出すと無駄なインストーラは必要なくなる?

545 :デフォルトの名無しさん:2006/06/13(火) 08:08:53
>>544
「APIで顧問コントロール等々を呼び出す」の意味が不明。

546 :デフォルトの名無しさん:2006/06/13(火) 09:06:30
指定文字列の検出の質問なのですが

hogehoge 2006/06/13a
hogehoge 2006/06/12b
hogehoge 2006/06/11c
といった文字データがhoge.textに出力されていて
hogehogeから後ろ12文字だけを出力させたいときはどの関数を使えばいいでしょうか。

547 :デフォルトの名無しさん:2006/06/13(火) 09:22:14
>>546
Mid$

548 :デフォルトの名無しさん:2006/06/13(火) 09:41:35
>>547
サンキュー!
上手くいけた

549 :542:2006/06/13(火) 17:44:59
>>543
いえ、ソートはしていませんが。。

550 :デフォルトの名無しさん:2006/06/13(火) 18:11:56
>>542
毎回indexに1を指定してない?
index を省略すれば最後尾に追加されるはずだか
先頭追加 ListView1.ListItems.Add 1, "key", "Text"
最後尾追加 ListView1.ListItems.Add , "key", "Text"

551 :542:2006/06/13(火) 20:07:16
>>550
ズバリです。。
なるほど。。
本当にありがとうございました 多謝

552 :デフォルトの名無しさん: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
です。
すみませんが、誰かどこにどのように当たり判定を入れれば良いのか教えていただけませんか?

553 :デフォルトの名無しさん:2006/06/13(火) 20:12:47
>>552です
書き忘れすみません。
コマンドボタン名はStart1です。

554 :デフォルトの名無しさん:2006/06/13(火) 20:34:48
そういえば、昔それらしきものを作ってみたわん
ソース全く見てないけど、試行錯誤してみれよ

555 :デフォルトの名無しさん: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

556 :デフォルトの名無しさん:2006/06/13(火) 22:36:20
上の方で使うなと言われているが、あえて訊きます

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

これはなにかセキュリティーの問題ですか?
(ちなみにユーザは一時的にアドミンにしてます)

557 :490:2006/06/13(火) 23:05:04
>>505 >>508
おかげさまで今日無事動きました。
エラーを出している DLL が呼び出している DLL が落ちているのが原因でした。
本当に助かりました。

なお、XP で動く VB6.0 のプログラムは Vista でも "そのまま" 動作するそうです。
ttp://www.microsoft.com/japan/msdn/vbasic/support/vistasupport.aspx
まぁ、ほんとかどうかは vista が出てくるまでわかりませんが。

558 :デフォルトの名無しさん:2006/06/13(火) 23:19:39
>>556
2003SVって動作保障されてるの?

559 :デフォルトの名無しさん:2006/06/14(水) 00:06:03
>>556
IISにISAPIの実行設定してないんじゃない?
デフォルトでは何も実行できないはずだよ

560 :556:2006/06/14(水) 01:37:28
ISAPIの実行許可は行っている。
例えば単にSQL SERVERからデータをとってくると行った動作は問題ないんだけども
サーバのローカルにファイルを作成する処理が走るとエラーになる。
エクセルがまずいのかと思って、ログを出して追っていこうとおもったらログすらでない
ただしエラー内容は変わる。
エクセルの時はファイルの作成が出来ない、ログの時は閉じられてないwithブロック〜といった内容。
ちなみにサーバマシンで、ソースから実行してあげれば問題なく動く
クライアントのブラウザから実行したときにダメになるので、何らか権限がからんでるのかなあと。


561 :556:2006/06/14(水) 01:39:29
>>558
動作保証は分からないけど、過去ログ見た限りはofficeはサーバサイドで実行するな
という内容はあるみたいです。
ただ、2000環境では実行出来ていたので、なにが違うのかなと悩んでます。

562 :デフォルトの名無しさん:2006/06/14(水) 01:49:56
>>557
あいかわらずVB6JP.DLLは入ってないな。これがないせいで簡単なプログラムでもインストーラーが必要になる。
もっとも単にコピーするだけでもいいんだけど。

563 :デフォルトの名無しさん: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で試してみ

564 :デフォルトの名無しさん:2006/06/14(水) 03:02:58
VBSの質問ですがいいですか?
既にあるExcelファイルのあるセルにデータを上書きして
同名で上書き保存したいのですが上手くいきません
お願いします

565 :デフォルトの名無しさん:2006/06/14(水) 07:25:01
>>564
どういうコードを書いたら、どう上手くいかなかったのか?

566 :デフォルトの名無しさん:2006/06/14(水) 10:33:56
横長のフォームがあって、これを印刷するとき、
用紙を縦のまま、フォームを90度回転させて印刷する方法はありますか?

http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200310_03100017.html

いろいろ探して、上のを見つけたんですが、解決してないようで・・・。
.NETではできるようなんですが、VB6だとできないんでしょうか?



567 :デフォルトの名無しさん:2006/06/14(水) 11:57:08
VB6からADOを使ってOracleのPakageを呼び出そうとしているのですが
Procedureの引数で"TYPE abc IS TABLE OF VARCHAR2(10) INDEX BY BINARY_INTEGER;"なる
配列を使用したものがあります。これをCreateParameterで引き渡すにはどう書けばよいでしょうか?

568 :デフォルトの名無しさん:2006/06/14(水) 12:34:44
>>560
書き出し先にIISワーカープロセスの実行ユーザーの書き込み権限つけてる?


569 :デフォルトの名無しさん:2006/06/14(水) 13:09:56
>>563
をぅ、荒井さんの記事だ。

>>567
ADO でオラクルなんて問題外。
oo4o 使え。
ADO は、実質SQLサーバ限定みたいなもん。

570 :560:2006/06/14(水) 13:53:40
>>568
IISの方でローカルアドミンを設定しているし、
書き込みもチェックついています

571 :デフォルトの名無しさん:2006/06/14(水) 14:25:00
>>570
ローカルアドミン?
LocalSystemの事を言ってる?

572 :デフォルトの名無しさん:2006/06/14(水) 15:09:54
>>560
「何らか権限がからんでるのかなあ」と思うなら、あらゆる権限を調べろよ。
そういうシステムって、思わぬプロセスに思わぬ権限が必要だからな。

573 :デフォルトの名無しさん:2006/06/14(水) 15:36:52
>>570
そのローカルアドミンとかいう権限で実際に書き込みしようとしているのか

574 :デフォルトの名無しさん:2006/06/14(水) 19:08:38
>>552です。
>>554>>555の方々へありがとうございます。
おかげで当たり判定がうまくいきました。

575 :デフォルトの名無しさん:2006/06/14(水) 19:26:18
F-BASIC97というののCVIを使って書き込んだファイルが
ありまして、それをVBに読み込みたいと考えているので
すがダンプしてみると
000000 00 07 ** ** ** ** ** **
となっていました。
この最初の2バイト分をVBで読み込んで数値(integer)
にしたいのですがどうしたらよいでしょうか?
上のファイルの場合は7にしたいということです。
あとまだCVSで4バイトに書き込んであるデータもあります。
よろしくおねがいいたします。

576 :デフォルトの名無しさん:2006/06/14(水) 19:41:07
>>575
ファイルアクセスなんて基本中の基本。
ヘルプ見ろ。

577 :デフォルトの名無しさん:2006/06/14(水) 21:52:03
ローカルアドミンは、そのマシンのadministratorってことです。
所属ドメインのadministratorじゃなくて

578 :デフォルトの名無しさん:2006/06/14(水) 23:02:23
>>577
根本的にIIS6.0の事を勘違いしているようだ
2003ServerのIIS6.0のオンラインヘルプでワーカースレッド周りの説明を読み直して来い

579 :デフォルトの名無しさん:2006/06/14(水) 23:22:51
>>577
>>573

580 :デフォルトの名無しさん:2006/06/15(木) 08:54:25
>>576
見てもわかりません。

581 :デフォルトの名無しさん:2006/06/15(木) 09:39:54
>>580
君にプログラムを書くのは無理。

582 :デフォルトの名無しさん:2006/06/15(木) 16:56:42
F-BASIC97だのダンプだの言うから難しくなるんだよ

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

やるべきことはたったこれだけ。
ヘルプ見てもこれが解らないというなら581の通り精進すら見込めないので
プログラミング止めろ。

583 :デフォルトの名無しさん:2006/06/15(木) 20:10:25
バイナリで開いて、ASC関数を使って数値化、桁にあわせて256^nを掛ける

584 :デフォルトの名無しさん:2006/06/16(金) 19:53:48
教えて下さい。以下の課題の考え方がよくわかりません。
課題2.与えられた半角文字列中に含まれる単語(半角スペースで区切られたそれ以外の 文字の塊)のうち、最も頻回に用いられている単語を返す関数MostFrequentWord
を作成せよ。
※条件として、大文字小文字を区別しない、返される文字は最初に出現した表
記、2つ以上
の文字が同数の場合は先に登場
実行結果例: print MostFrequentWord("I love you. You love me.")
         love
[3] Windows XP
言語:申し訳ありません。VBです。エクセルのマクロで書いてます。
[5]
この課題の前問に、同じような出題で、関数CountWords を作れと、ありまし
た。
  この問題は以下のように作りました。

585 :デフォルトの名無しさん: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個とした場合, 配列をどのように考えたらよいのですか?

586 :デフォルトの名無しさん:2006/06/16(金) 20:22:25
単語数とか考えずにスペースも一文字として、ひたすら頭から一文字ずつチェックしていく。
各文字のASCIIコードをそのまま添え字にした配列を用意して、配列にカウント数を保持していく。
最後に頻出文字を探して出力。

個人的には↑なんてやり方しちゃう。

587 :デフォルトの名無しさん:2006/06/16(金) 20:22:53
>>584
単語名そのものが入る配列(words)と、登場回数が入る配列(counts)の二つを作る。大きさはCountWords()の戻り値。
配列に関しては、Dim, Redimのヘルプ参照。

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

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

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

わかんなかったら、またおいで。

588 :587:2006/06/16(金) 20:25:26
あ、戻す単語は最初の表記ってことだから、配列wordsに入れるときにはもともとの文字列を入れて、
比較するときだけにStrConvを使ってね。

589 :586:2006/06/16(金) 20:28:31
いぇ〜い、単語と文字を見間違えてたゼィ



orz

590 :587:2006/06/16(金) 20:37:49
Split関数使えばもっと楽だね。課題の意図的にはNGかもだけど。
ちなみに配列の大きさを調べるのはUbound。

591 :デフォルトの名無しさん:2006/06/16(金) 20:53:56
そもそも、課題の丸投げって駄目なんじゃなかったっけ?

592 :586:2006/06/16(金) 20:54:41
>>587さんみたいなやり方もあるし、一つの単語に着目して文章の最後まで走査する,
たとえば"you"なら文章の最後まで"you"を探して見つかったらカウントして・・・というやり方もある。
この場合、カウントするついでに既にカウントされましたよフラグを立てて処理を減らすこともできる。

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

いずれにしろ基本は人間がやってるのと同じってことだね。

593 :デフォルトの名無しさん:2006/06/16(金) 20:58:00
>>591
丸投げなんてしてないじゃん

594 :デフォルトの名無しさん:2006/06/16(金) 20:59:24
丸チ投げ

595 :585:2006/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

・・よくわからないです

596 :デフォルトの名無しさん:2006/06/16(金) 21:12:41
Dictionary オブジェクト使ってしまえ。ゲラゲラ

597 :デフォルトの名無しさん:2006/06/16(金) 21:13:40
>>595
まず、やりたい事全てを細かく順番に文章で書け。
それが出来たら、後はそれを一つ一つコードにするだけ。

598 :デフォルトの名無しさん:2006/06/16(金) 21:29:55
>>595
配列Redim 使っていいのなら出来たけど、使わないのはちこっとまんどくさい

599 :デフォルトの名無しさん:2006/06/16(金) 21:30:42
>配列RedimやSplit関数などは使わないようにと
自力でスプリットしちゃえ

600 :デフォルトの名無しさん: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

601 :デフォルトの名無しさん:2006/06/16(金) 22:09:14
>>600
配列は使っちゃいけないらしいぞ

602 :デフォルトの名無しさん:2006/06/16(金) 22:27:54
>>601
そんな話どこにもないが

603 :デフォルトの名無しさん:2006/06/16(金) 22:35:24
>>601
>配列RedimやSplit関数などは使わないようにと指示があり
配列Redimって配列も含むんじゃと・・・Redimがだめってことかもしれないけど
ただ、Dim words(100) ここ Redimが駄目で100と逃げても・・・

604 :デフォルトの名無しさん:2006/06/16(金) 22:38:55
>>603
>>595をよく読んでみ。
固定の大きさで配列を定義するのは、宿題のような問題ではありがち。
そもそも個定数で作らなきゃ>>595のような発想ができない。

605 :デフォルトの名無しさん: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


606 :デフォルトの名無しさん:2006/06/16(金) 22:57:29
>>605
えっと 4行目のReplaceはスペース2個です。
s = Replace(A, "□", "□□")

607 :605:2006/06/16(金) 23:07:34
ああごめん 関数名は CountWords じゃなくて MostFrequentWord だね。

・・・あと、尻のスペースが増え続けるが気にするなw

608 :デフォルトの名無しさん:2006/06/16(金) 23:13:47
コード書いちゃうのは今回の場合やりすぎじゃないか?
課題でやってる>>584のためにならない。

609 :デフォルトの名無しさん:2006/06/16(金) 23:23:47
>>606
・大文字小文字を考慮する必要がある
・ピリオドを考慮する必要がある

Replaceも使っちゃ駄目そうだが。

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

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


>>608
ごめんなさい。はなから役に立とうとは思っていません。

611 :デフォルトの名無しさん:2006/06/17(土) 00:05:40
>>610
大文字小文字は勘違い。スマソ。
単語は普通(つっこみ付加)、ピリオドやセミコロンなどの区切り文字は入れない。

612 :デフォルトの名無しさん: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

613 :デフォルトの名無しさん: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

614 :デフォルトの名無しさん:2006/06/17(土) 00:11:47
改行多すぎるって言われたから、無用な変数初期化省いてある。

615 :デフォルトの名無しさん: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

616 :615:2006/06/17(土) 00:19:51
'===================
'cWordCollection
'===================
Private mWords As New Collection

Public Sub Add(text As String)

Dim Word As cWord

For Each Word In mWords
If Word.IsMatch(text) Then
Exit Sub
End If
Next
mWords.Add CreateNewWord(text)
End Sub

Private Function CreateNewWord(text As String) As cWord
Dim nw As New cWord

nw.text = text
Set CreateNewWord = nw
End Function

617 :615:2006/06/17(土) 00:20:28
'===================
'cWordCollection続き
'===================
Public Function MostFrequentWord() As String

If mWords.Count = 0 Then
MostFrequentWord = ""
Else
Dim Word As cWord
Dim MaxCount As Integer
Dim MaxCountItem As cWord

For Each Word In mWords
If Word.Count > MaxCount Then
MaxCount = Word.Count
Set MaxCountItem = Word
End If
Next
MostFrequentWord = MaxCountItem.text
End If
End Function

618 :デフォルトの名無しさん: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

619 :デフォルトの名無しさん:2006/06/17(土) 01:05:50
ポイントだけ三行でまとめられないか

620 :デフォルトの名無しさん:2006/06/17(土) 02:19:49
Collectionはさすがに使っちゃ駄目だろ。
いや、何でもいいんです、解答じゃないからってことなら、SplitとDictionaryでFAじゃあるまいか。

621 :デフォルトの名無しさん: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です。

色々ググっても原因がわかりませんでしたので、質問させていただきました。
すみませんが、お力添えをお願いします。

622 :デフォルトの名無しさん:2006/06/17(土) 03:17:52
>>620
駄目って書いてないのならOKでしょ。
よっぽど馬鹿な教師でなければ高得点くれるだろ。

623 :デフォルトの名無しさん:2006/06/17(土) 06:10:33
>>621
ちゃんとインストーラでインストールしたの?

624 :デフォルトの名無しさん:2006/06/17(土) 12:29:07
>>623
動かない環境の方に、ディストリビューションウィザードで作って渡しても、ダメでした。
なお、他の環境(しかも同じくXP)では何もせずに正常に動作してるみたいです。
ますます謎。

625 :デフォルトの名無しさん:2006/06/17(土) 12:36:41
検索するといくらでも解決法がみつかるようだけど。。
検索もせずに質問する神経の方が謎だよ

626 :デフォルトの名無しさん:2006/06/17(土) 15:10:18
SSTabってVB2.0だぞ

627 :デフォルトの名無しさん:2006/06/17(土) 15:44:40
SSTabを使わない仕様に変更しました。
今テストしているのですが、今度は純粋にハングするようになったとのことです。

>>625
本当にありがとうございました。

628 :585:2006/06/17(土) 16:39:16
585です。

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

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

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

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

これから、コードをのせます。

629 :585 コ-ド1:2006/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

ここまでで文字列中の単語を配列に変換してます

630 :585 コ-ド2:2006/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

ここまでで 配列に分けた単語数をカウントしてます

631 :デフォルトの名無しさん:2006/06/17(土) 16:51:03
>>624
XP上でVB6は動作保障されてないよ。
MSのサイトでは「一部不具合はあるが、動く」って書かれてるけど、
MSの動作保障なんて全くアテにはなりませんから。

632 :585 コ-ド3:2006/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
以上です!

汚くて申し訳ありません!

633 :デフォルトの名無しさん:2006/06/17(土) 16:53:34
うん、Redim使えないのは変だと思ってた。
とにかく、課題クリアおめでとさん。

634 :585 コ-ド3について:2006/06/17(土) 16:55:56
632 は 一応 その頻出単語の回数の多い順に並べ替えたつもりです

635 :585:2006/06/17(土) 17:00:04
>633
ありがとうございます!

636 :デフォルトの名無しさん:2006/06/17(土) 17:16:08
しかし、今更VB6を選択する教師ってのもな。
お里が知れるというか、自分がそれしかできないんだろうな。

C#、VB.NET、Javaなら学生も自分のパソコンで学習できるだろうに。

637 :デフォルトの名無しさん:2006/06/17(土) 17:17:44
ヒント:excel

638 :デフォルトの名無しさん:2006/06/17(土) 17:31:04
アルファベット"a"〜"z"が順に格納されている英字配列の 表記の仕方を教えてくだ
さい

639 :デフォルトの名無しさん:2006/06/17(土) 17:57:46
Print a(0),a(1),...,a(25)

640 :デフォルトの名無しさん:2006/06/17(土) 20:06:30
>639
a(0) = "a",
a(1) = "b",
・…
としかできないの?

もっとまとめて出来ないのでしょうか?

641 :デフォルトの名無しさん:2006/06/17(土) 20:08:43
表記の意味を教えてください

642 :デフォルトの名無しさん:2006/06/17(土) 20:10:57
a(i)=chr(97+i)

643 :デフォルトの名無しさん: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

644 :デフォルトの名無しさん:2006/06/17(土) 20:32:30
>642
おお!
思いつかなかった!!
サンクス!

645 :デフォルトの名無しさん:2006/06/17(土) 21:16:56
>>641
代入のことを表記って言うのは常識

646 :デフォルトの名無しさん:2006/06/17(土) 22:42:23
VBSではGoToって使えないんですか?
教えてください

647 :デフォルトの名無しさん:2006/06/17(土) 22:54:45
>>646
http://www.google.co.jp/

648 :デフォルトの名無しさん: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 ステートメント
>   行番号、行ラベル


649 :デフォルトの名無しさん:2006/06/17(土) 23:09:04
じゃあどうやって構造化するんだ

650 :デフォルトの名無しさん:2006/06/17(土) 23:12:33
構造化って何ですか?

651 :デフォルトの名無しさん:2006/06/17(土) 23:56:37
簡単に言えば、Gotoをなくすことです。

652 :デフォルトの名無しさん:2006/06/18(日) 00:13:57
スパゲティ簡単でいいんだけどなぁ

653 :デフォルトの名無しさん:2006/06/18(日) 00:18:30
アセンブラなんかJUMPの嵐だもんな

654 :デフォルトの名無しさん:2006/06/18(日) 00:19:59
じゃあ問題なくVBSで構造化できますね!

655 :デフォルトの名無しさん:2006/06/18(日) 00:24:36
>>どっかから->>654
なにこのわかりやすい自演

656 :デフォルトの名無しさん:2006/06/18(日) 01:30:26
ループがネストになっているときのエラー脱出はGoToを使うのが正しい

657 :デフォルトの名無しさん:2006/06/18(日) 02:24:01
VB6での事で質問なんだが

Form.Controls
Frame.Container
PictureBox.Container

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

結局Object型だから詳しい型が分からないんだよな

658 :デフォルトの名無しさん:2006/06/18(日) 02:54:25
その前に型名が必要な理由を聞こうか。

659 :デフォルトの名無しさん:2006/06/18(日) 03:08:49
>>658
特に理由は無いんだが...

AddとかItemとかのメンバー持ってるから 何か型があるのかと思っただけ

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

コントロール配列だって実態はなんなのか釈然としないしね

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

確かにちょっと悩む。

662 :デフォルトの名無しさん:2006/06/18(日) 10:30:55
>>660
叩いてたのはお前だけ。

663 :デフォルトの名無しさん:2006/06/18(日) 11:22:27
>>657
TypeNameで名称を見てみれば?

664 :デフォルトの名無しさん:2006/06/18(日) 13:58:09
言語環境は VBA 6.4 です。

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

お手数ですが、ご教示願います。

665 :デフォルトの名無しさん:2006/06/18(日) 14:02:57
>>664
無い。

もっと具体的にやりたいことを書けば、何かアドバイスできるかも試練。

666 :デフォルトの名無しさん:2006/06/18(日) 15:23:55
>>664
何をやりたいかは何となく分かるが、それをやらなければならない設計がおかしい。
それに、「Microsoft Script Control」を使わない理由も。

667 :デフォルトの名無しさん:2006/06/18(日) 15:28:03
GetUserNameを使ってWindowsのログインユーザ名を知ることができますが
このユーザがどのドメインでログインしたかを知る方法はあるのでしょうか?
どなたかご教授願います。

668 :デフォルトの名無しさん:2006/06/18(日) 16:03:34
教授 ×
教示 ○

669 :デフォルトの名無しさん:2006/06/18(日) 16:19:33
教授でもOK

670 :デフォルトの名無しさん:2006/06/18(日) 16:20:28
教授でもOK ×

671 :デフォルトの名無しさん:2006/06/18(日) 16:25:08
教授でもOK

672 :デフォルトの名無しさん:2006/06/18(日) 16:29:13
コ-ディングの基礎を説明しているサイト教えて下さい!
どれくらいTabキ-でずらしていくとかです!

673 :デフォルトの名無しさん:2006/06/18(日) 16:46:40
教示とか教授とか使い慣れない敬語は使わずに、普通に教えてくださいじゃだめなのか。

つGetUserNameEx

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

675 :デフォルトの名無しさん:2006/06/18(日) 17:40:45
>>674

その決まりがわからないのですよ。
VBでの決まりを教えて下さい。
又は、サイトを

676 :デフォルトの名無しさん:2006/06/18(日) 17:41:45
逆切れきたよ

677 :デフォルトの名無しさん:2006/06/18(日) 18:22:45
別に逆ギレはしてないだろw

>>675
「コーディング規約」とかで検索してみた?

678 :デフォルトの名無しさん:2006/06/18(日) 18:50:05
役に立つかは知らないが

つ「Code Complete」(Steve McConnell著)

679 :デフォルトの名無しさん:2006/06/18(日) 19:02:38
君がプロジェクトリーダーなら話は別だが趣味でやってるなら自分のセンスで書けばどう

680 :デフォルトの名無しさん:2006/06/18(日) 19:39:16
>>675
だからプロジェクト毎に決めるんだよそれは。
自分だけの趣味プログラムなら、自分が決めればいい。

681 :デフォルトの名無しさん:2006/06/18(日) 20:04:41
VBなんだからインデントのやりかたなんて決まってくるだろ。
プロジェクトなんか関係ない。

682 :デフォルトの名無しさん:2006/06/18(日) 21:39:29
>>681
残念、ハズレ

683 :デフォルトの名無しさん:2006/06/18(日) 22:06:17
個人的には関数内の全行を一律で一段インデントした上で、
入れ子一段あたり、タブキー一回分でやってる。

684 :デフォルトの名無しさん:2006/06/18(日) 22:33:36
っていうかVBじゃCみたくインデントの流儀で論争になったりしないでしょ?
実際迷うことあるか?w
{}もifのぶら下がりの問題もないのに。

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

>>683みたいになんでもバカ正直に回答すりゃいいってもんじゃないと思うけど

685 :デフォルトの名無しさん:2006/06/18(日) 22:35:15
つーか、いまからVB始める気かよ

686 :デフォルトの名無しさん:2006/06/18(日) 22:59:11
>>682
じゃあそのプロジェクトごとに違うというルールの例を2,3あげてもらおうか。

687 :デフォルトの名無しさん:2006/06/18(日) 23:12:55
>>686

688 :デフォルトの名無しさん:2006/06/18(日) 23:16:03
>>686
インデントが3バイトか4バイトか、とか、変数名の付け方とか、
逆に全てのプロジェクトで同じ項目なんて殆どないと思うが。

689 :デフォルトの名無しさん:2006/06/18(日) 23:22:40
バ、バイト?w

690 :デフォルトの名無しさん:2006/06/19(月) 00:09:55
脳内プロジェクト乙。

691 :デフォルトの名無しさん:2006/06/19(月) 10:29:21
>>689
1バイト空白が何文字分か、って事だろ。

692 :デフォルトの名無しさん:2006/06/19(月) 12:56:50
13歳の言うことなんかにかかわらないほうがいいよ。

693 :遅いが、これはどう? 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


694 :デフォルトの名無しさん:2006/06/19(月) 18:03:05
何だ?急にコードだけ・・・

695 :デフォルトの名無しさん:2006/06/19(月) 18:14:11
accessの質問なんですけど、
ここで聞いた方が早いと思いまして。
エクスポートしたファイルに「,」が含まれているとエラーメッセージが表示される
というプログラムをつくりたいのですが
どうすればいいでしょうか?

696 :デフォルトの名無しさん:2006/06/19(月) 18:36:38
>>695
一度氏ねばいいと思うよ

697 :693:2006/06/19(月) 19:41:47
>>584のコードだよ。
変な制約無かったらどう実装するか

698 :デフォルトの名無しさん:2006/06/19(月) 20:20:38
>>695
先頭から一文字一文字取り出して比較すればいい。

699 :デフォルトの名無しさん:2006/06/20(火) 09:59:50
誰か教えてくだされ、、
コマンドライン引数が入っているか判定するにはどうすればいいんでしょうか?
どんな関数を使えばいいのでしょうか??
お願いいたします

700 :デフォルトの名無しさん:2006/06/20(火) 10:04:28
>>699
っCommand$

701 :デフォルトの名無しさん:2006/06/20(火) 10:07:26
Len(Command$)


702 :デフォルトの名無しさん:2006/06/20(火) 10:25:44
ありがとうございます!

703 :デフォルトの名無しさん: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


704 :デフォルトの名無しさん:2006/06/21(水) 22:53:16
>>703

Win32API質問箱 Build43
http://pc8.2ch.net/test/read.cgi/tech/1148005509/


705 :デフォルトの名無しさん:2006/06/21(水) 23:05:47
>>703
素直にOCX使った方がいいよ。

706 :デフォルトの名無しさん:2006/06/21(水) 23:25:50
>>703
p-codeで動くならそれでいいじゃん

707 :デフォルトの名無しさん:2006/06/22(木) 09:45:12
ネイティブの最適化きってみれば?
たまに上手くいくよ。

708 :デフォルトの名無しさん:2006/06/22(木) 10:31:09
レスありがとうございます。
結論からすると、とりあえず解決しました。

>>704さん
スレ違いなので参照先で質問をすれば?ということでしょうか。
一応ログは確認してみました。

>>705さん
今までOCXを使っていましたので。今回はAPIでということでお願いします。

>>706さん
なぜ動かないのかが知りたかったのですが・・・
P-CODEでは確かに動いています。

>>707さん
ご指摘のようにネイティブの最適化を切ってみました。
すると、動きました。

このAPIを使用するにあたって、最適化に関与する部分で何か不具合があるということですね。
実行順序とか勝手に変えられてるんでしょうかw
時間があるときに、違いをデバッガで確認してみることにします。


709 :デフォルトの名無しさん:2006/06/22(木) 11:22:06
>>708
多分だけどAPIコールのときに型を厳密に言うと間違ってる部分とかがあるんじゃないの?
最適化を有効にした場合、その辺りでAPIコールが引っかかる場合が昔あった。

710 :デフォルトの名無しさん: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だけど

711 :デフォルトの名無しさん: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)でサイズが合わないのですが大丈夫でしょうか

712 :デフォルトの名無しさん:2006/06/23(金) 13:54:26
>>711
Win32APIでのBOOLは4バイトなんだけど。

713 :デフォルトの名無しさん:2006/06/23(金) 17:18:38
文字数判定とIsdate関数を組み合て
YYYY/MM/DDという形式の日付だけ通して
それ以外を弾きたいのですが、
文字数判別はどのような関数を使えばよいでしょうか??


714 :デフォルトの名無しさん:2006/06/23(金) 17:18:42
>>711
Windows APIのBOOLは>>712の言うとおりであって、VBのBooleanとは別物。

715 :デフォルトの名無しさん:2006/06/23(金) 17:49:55
>>713
文字数判定する必要なくね? 
ISDATEだけでいいんじゃね?

716 :デフォルトの名無しさん:2006/06/23(金) 18:11:43
>>715
馬鹿ですか?

717 :デフォルトの名無しさん:2006/06/23(金) 18:16:40
>>716
vb使いの癖に偉そうにしないで下さい。

718 :デフォルトの名無しさん:2006/06/23(金) 18:23:06
>>713
Len() じゃないの? VBの事、もう忘れてるけどw

719 :デフォルトの名無しさん:2006/06/23(金) 18:34:11
>>713
っMid$

720 :デフォルトの名無しさん:2006/06/24(土) 01:02:50
Winampに複数のファイル名を渡す方法分かる方いらっしゃいますか?
コマンドラインで渡すと遅いし渡すファイルの数に限りがあるみたいで。

SendMessageを使うって所までは分かったんですけど、うまく渡せていないようで、Winampが強制終了してしまいます。
ご存知の方がいらっしゃいましたらお願いします。

721 :デフォルトの名無しさん:2006/06/24(土) 01:30:21
めんどくせ

722 :デフォルトの名無しさん:2006/06/24(土) 02:21:56
m3uをテンポラリに作って食わせるのではいかんのか?

723 :デフォルトの名無しさん:2006/06/24(土) 06:22:28
SendMessageで何らかのアプリを操作する方法なんて、完全にVB関係ないじゃん。
偶々そのSendMessageをVBから呼ぶにしても、VB関係してるのはVBでのAPI宣言の書き方くらいだな。

724 :デフォルトの名無しさん:2006/06/24(土) 09:54:09
>>720
っスレ違い

725 :デフォルトの名無しさん: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

よろしくお願いします。

726 :デフォルトの名無しさん:2006/06/24(土) 18:05:51
ListIndex=-1

727 :725:2006/06/24(土) 18:41:56
>>726は私へのレスですか?
Elseの後に入れてみましたが駄目でした。
そのまま入れるだけでは駄目なんですか?ちょっと調べてみます。
有難うございました

728 :デフォルトの名無しさん:2006/06/24(土) 18:49:05
コンボボックスのリストを再表示させたい(ドロップダウン)なら、SendMessageで出来るよ。
SendMessageはVBの機能ではなくAPIなので使い方が解らなければそっちのスレでどうぞ。

729 :デフォルトの名無しさん:2006/06/24(土) 18:52:34
エスパーが必要だなw
質問を書いてある通り額面どおり受け取ると、
ユーザーを殴ってでも再入力を強制するロボでも接続しる、
と回答したくなるw

730 :725:2006/06/24(土) 19:15:32
>>728
使い方がよく分からないのでぐぐってみます。有難うございました。
>>729
表現がおかしかったですか?反省です。
言いたかった事は、コンボボックスがデフォルトのままで選択されずに実行ボタンが
押された時にメッセージを出してもう一度選択を促したいだけなんです。
そもそもifを使うのがおかしいのですね?多分。
方法を考えます。有難うございました。

731 :デフォルトの名無しさん:2006/06/24(土) 19:19:59
>>730
なら話は比較的簡単じゃないか。
コンボボックスのアイテムが選択されるまではボタンをEnabled = Falseにしとけばいい。

というか、そもそもそのボタンとやらは本当に必要なんだろうか

732 :725:2006/06/24(土) 19:38:17
>>731
なるほど!確かにその方法でも大丈夫です。
コンボボックスのアイテムが選択されたかどうかを判別する方法が分からない
ので調べてみます。

733 :デフォルトの名無しさん:2006/06/24(土) 19:44:45
>>730
既に選択した状態を消したい、って事?
ちゃんと日本語で質問してくれ。

734 :725:2006/06/24(土) 20:05:35
>>733
既に選択した状態を消したい、とは考えていません。
選択されていない状態の時に「選択されてませんよ」ってメッセージを出して
ユーザーに選択をさせ直すようにしたいのです。
そんなに日本語変?

735 :デフォルトの名無しさん:2006/06/24(土) 20:16:25
>>725
>コンボボックスがデフォルトのまま…

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



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

レス頂いた皆さん、有難うございました。

737 :デフォルトの名無しさん:2006/06/24(土) 20:41:15
>>734
「選択されていない状態」を知りたい、って事なのか?

738 :デフォルトの名無しさん:2006/06/24(土) 22:09:54
ここは国語の勉強をするスレですか

739 :デフォルトの名無しさん:2006/06/24(土) 22:21:40
本当は正しい用語があるんだけど質問する側も答える側もそれを使わないから会話がかみ合わない

740 :デフォルトの名無しさん:2006/06/24(土) 22:33:17
そして739も実は正しい用語を知らないから、余計ややこしいw

741 :デフォルトの名無しさん:2006/06/24(土) 23:06:48
で、本当の質問は何なの?

742 :デフォルトの名無しさん:2006/06/24(土) 23:21:14
>>741
それ。

743 :デフォルトの名無しさん: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

744 :743:2006/06/25(日) 01:25:40
自己解決
thenの後の改行だった

俺の見たサイトで横幅の都合上改行してるのかと思ったorz


745 :デフォルトの名無しさん:2006/06/25(日) 11:51:45
VB.NETでちょっとしたテキストエディタを作っているのですが、
普通エディタには、テキストエリアの左側に、灰色の文字で現在行が表示されているものですが、
あれはどのようにして表示させているのでしょうか?
いろいろ試したのですが、描画速度が遅かったり、重すぎて使い物にならなかったり・・・
この問題を解決してくれるコントロールやプロパティがあるのでしょうか?

746 :デフォルトの名無しさん:2006/06/25(日) 11:54:05
>>745
まずはスレタイや>>1をじっくり読んでみることを進める。

747 :デフォルトの名無しさん:2006/06/25(日) 16:17:06
CInt(Math.Rnd()*f1sw)
CInt(Math.Rnd()*f1sh)
ってやってランダムにleftとtop決めてオブジェクト流してるんだが、何度実行しても同じ場所にしか出ない
キャッシュみたいなのがあるの?
そうで無ければプログラムのミスかな

748 :デフォルトの名無しさん:2006/06/25(日) 16:37:15
> プログラムのミスかな
うん

749 :デフォルトの名無しさん:2006/06/25(日) 17:30:50
オブジェクトを流す、ねぇ・・・

750 :デフォルトの名無しさん:2006/06/25(日) 17:34:16
一般的に言語標準の乱数発生機能は数学的に作り出す擬似乱数で乱数の種(初期値みたいな物)が同じだと同じ結果を返す


751 :デフォルトの名無しさん:2006/06/25(日) 18:14:52
>>750
そうなのか
ありがとう

>>749
ゲームの背景に星流そうとしてるからそう書いた

752 :デフォルトの名無しさん:2006/06/25(日) 18:19:48
文字列で書かれた数式を、数式として扱うことはできますか?

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

みなさまの知恵をお貸しください。
よろしくお願いします。

753 :デフォルトの名無しさん:2006/06/25(日) 19:27:48
>>752
つeval

754 :デフォルトの名無しさん:2006/06/25(日) 19:28:35
>751
Rnd関数の説明に対処方法も書いてある。

755 :752:2006/06/25(日) 20:06:39
>>753
返信ありがとうございます。

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

もしご存知でしたら、VB6.0でeval関数を使用する方法をお教えいただきたいです。
よろしくお願いいたします。


756 :デフォルトの名無しさん:2006/06/25(日) 20:08:33
>>755
ヒント:VB6からVBSは使える

757 :デフォルトの名無しさん:2006/06/25(日) 20:31:10
>>755
ScriptControlによるeval
ttp://homepage2.nifty.com/Dee/vb/tips/vb/vbscripteval.html

758 :デフォルトの名無しさん:2006/06/25(日) 20:35:38
>>756
マジで?

外部のVBSを実行したり、WSHの公開オブジェクトを参照したり出来るのは知ってるが
VBS自体が使えるのは知らなかった。
>>757みたいにScriptControlオブジェクトのEvalではなく、VBSのEvalを使う方法を紹介してくれ。

759 :デフォルトの名無しさん:2006/06/25(日) 20:59:06
>>758
頭悪いんじゃないの?
つか、ぐぐれよ

760 :デフォルトの名無しさん:2006/06/25(日) 21:20:13
所ジョージさんのアタマ〜

761 :752:2006/06/25(日) 21:46:25
>>756
>>757
ありがとうございます。
紹介していただいた方法を参考に、少し調べてみようと思います。
どうもありがとうございました。

762 :デフォルトの名無しさん:2006/06/25(日) 22:13:59
758≠752か…

763 :デフォルトの名無しさん:2006/06/25(日) 23:59:09
>>758
ぷぷぷぷぷ〜〜〜 『VBS Eval』でググッタラ一番上に出てきたよ〜〜〜〜〜ww

764 :デフォルトの名無しさん:2006/06/26(月) 00:05:30
>>763

 ま た お 前 か

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

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

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

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

初心者な質問ですみませんが、お力をお貸し下さい。

766 :デフォルトの名無しさん:2006/06/27(火) 22:29:14
>>765
Sort有効ならあるよ

767 :デフォルトの名無しさん:2006/06/27(火) 22:32:55
>>766
早い反応ありがとうございます。

書き落としですね、すみません。
えっと、プロパティで確認しても、無効にしてあるんです。

768 :デフォルトの名無しさん:2006/06/27(火) 22:35:28
教えていただきたいことがあります。
VBAの方でユーザーフォームのメニュー選択画面を作っているのですが、
工程毎に幾つも項目があり、この工程と項目を関連付けする為に線を引きたいんですが、
どうすれば良いのでしょうか?

769 :デフォルトの名無しさん:2006/06/27(火) 22:52:09
>>767
>550 みたいに追加の仕方が悪いんじゃないよねぇ?

770 :デフォルトの名無しさん:2006/06/27(火) 22:57:49
>>765
追加する度に追加するテキストと追加後の結果を見ればわかるだろう

771 :765:2006/06/27(火) 23:07:52
>>769
いえ、indexは省略しています。
ソートによる空白の扱いが、テキストと違うのが気になっています。
数字と平仮名があつ時、数字項目に空白があった際、

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

こんな風になるんです。

>>770
その通りですね……。
今手元にコードも開発環境もありませんが、確認してみます。


772 :デフォルトの名無しさん:2006/06/27(火) 23:57:11
お客様VBAのほうおまたせいたしました

773 :デフォルトの名無しさん:2006/06/28(水) 04:20:19
age

774 :デフォルトの名無しさん:2006/06/28(水) 09:37:32
>>765
一つのループで追加と書き出しできないの?

775 :デフォルトの名無しさん:2006/06/28(水) 14:50:47
フォーム上でF12を押したら処理を開始という風にしたいのですが、
これって問題ありなんですかね?
ファンクションの事を調べていたらこんな事があったようなので・・・
http://pc.2ch.net/test/read.cgi/pcnews/1055757832/l50

これってファンクションキーは使っては駄目ということなのでしょうか。

776 :デフォルトの名無しさん:2006/06/28(水) 15:15:52
>>775
駄目じゃないけど普通は使わない。

777 :デフォルトの名無しさん:2006/06/28(水) 17:46:08
コンボボックスでそのコンボボックスが開かれている(ドロップダウンされているといったら
いいのかな)状態か閉じている状態かを取得する方法は無いでしょうか。

778 :デフォルトの名無しさん:2006/06/28(水) 19:05:04
そんなことを知ってどうするのかのほうが気になる

779 :デフォルトの名無しさん:2006/06/28(水) 19:54:31
気にすんな。

780 :デフォルトの名無しさん:2006/06/28(水) 20:27:59
>>777
まぁ少なくともフォーカスのない時は閉じてるわな。

781 :777:2006/06/28(水) 22:43:35
閉じてるときに文字列入力してEnter押したらリストの中から入力文字列を含むItemだけを抽出して
コンボボックスを開く。
開いてるときにEnter押したら、単にコンボボックスを閉じるということをやりたいのです。


782 :デフォルトの名無しさん:2006/06/29(木) 01:52:04
一文字入力ごとにリストがでるAJAXのほうがかっこいいのに

783 :デフォルトの名無しさん:2006/06/29(木) 09:23:08
>>782
誰もそんな話をしてないし。
ここで未だにVB6でやってる時点で前提があるんだから。


784 :デフォルトの名無しさん:2006/06/29(木) 10:26:14
>>781
「閉じてるときに文字列入力」って、何処に入力するか知らんけど、
テキストボックスだとしたら、入力した瞬間に閉じるのでは。
フォーカスが移動するし。

785 :デフォルトの名無しさん:2006/06/29(木) 13:18:07
>>782
VBでやってAJAXよりも遅かったら悲惨

786 :デフォルトの名無しさん:2006/06/29(木) 17:28:23
> VBでやってAJAXよりも遅かったら悲惨
と感じる人が居るのは否定しないが、
そう感じない人が居ることも認めようね。
そもそも早さ最優先ならこのスレには来ないだろw
最初から他の言語を選ぶはずだ。

質問には、妥協案や「俺ならこうする」的な自己中回答ではなく
出された条件を満たす回答を心がけよう。
もちろん情報として他の方法を紹介するのは悪くないが
それを紹介して「コレの方がいいからコレでやれ」的なのは止めような。
「コレの方がいい」かどうかは質問者が決めることだから。


787 :デフォルトの名無しさん:2006/06/29(木) 17:30:02
>>786
なぜか知らんが非常にむかつくレスだ。

788 :デフォルトの名無しさん:2006/06/29(木) 19:17:02
>>786
「これの方が良い」との結論に納得するかどうかは質問者の自由だが、
「これの方が良い」と主張する自由が回答者にもある


789 :デフォルトの名無しさん:2006/06/29(木) 19:28:15
これの方が良いのブルース

790 :デフォルトの名無しさん: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=\ゝ  /

791 :デフォルトの名無しさん:2006/06/29(木) 23:26:51
>>786
なんなんだ、この馬鹿は。
読んでてムカムカした。

はっ、釣り?

792 :デフォルトの名無しさん:2006/06/30(金) 00:04:01
言ってる事は間違いではないと思う。
書き方は、まぁ、偉そうだがw

793 :デフォルトの名無しさん:2006/06/30(金) 00:07:57
「認めようね」でもうブチギレですよ

794 :デフォルトの名無しさん:2006/06/30(金) 05:23:09
>>788
それは786が言ってることと同じだよ。
786は、回答者にも出された条件に合わない方法を主張する自由はあるが、
決定する自由は無いって言ってるだけだし。

795 :デフォルトの名無しさん:2006/06/30(金) 09:30:28
Form1のリストボックスを右クリック
   ↓
ポップアップメニュー
   ↓
項目クリック
   ↓
Form2をモーダルで起動
   ↓
Form2のリストボックスを右クリック
   ↓
ポップアップメニュー      ・・・が出ない


この流れを崩せない場合、Form2をモードレスで起動する以外に、
Form2のリストボックスからポップアップメニューを表示させる方法は
ないでしょうか?

796 :デフォルトの名無しさん:2006/06/30(金) 09:33:37
それって腐った仕様を押し付けられるデスマプログラマのことを言ってるのか

797 :デフォルトの名無しさん:2006/06/30(金) 09:57:36
>>795
モーダルは本当に不具合だらけだから、使わないのが常識。

798 :777:2006/06/30(金) 12:04:33
>>784
説明不足ですみません、「閉じてるときに文字列入力」というのは
コンボボックスに文字列を入力ということです。


799 :デフォルトの名無しさん:2006/06/30(金) 13:02:41
>>797
モーダルで不具合って何?


800 :デフォルトの名無しさん:2006/06/30(金) 13:14:23
>>777
Enterなんか使わずにドロップダウンしたら入力されている
文字列の含まれるリストを表示するほうがよいのでは

801 :デフォルトの名無しさん:2006/06/30(金) 13:17:56
>>800
それでもよいのですが、ドロップダウンしたときに発生するイベントがないんですよね。。。

802 :デフォルトの名無しさん:2006/06/30(金) 13:53:00
あ、すみません、ぼけてました。DropDownイベント思いっきりありました・・・・

803 :デフォルトの名無しさん:2006/06/30(金) 15:01:56
>>799
毎回毎回不可思議な現象に巻き込まれるが、
結局何も分からないままほったらかしに・・・

804 :デフォルトの名無しさん:2006/06/30(金) 23:14:48
どうせ自分が理解してないだけだろ。

805 :デフォルトの名無しさん:2006/07/01(土) 12:23:12
>>804
ヒント:X−ファイル

806 :デフォルトの名無しさん:2006/07/01(土) 12:55:00
すみません。今アクションゲームを作っているものですが、先日は大変お世話になりました。
実は今、人がジャンプし終わった後、ブロックの上に着地するというコードを書きたいのですがやり方が解りません。
真にすみませんが誰か教えてください。お願いいたします。
オブジェクト名は、
人はHitoで、
ブロックはBlock
です。

807 :デフォルトの名無しさん:2006/07/01(土) 13:14:00
前世で一緒に闘った仲間を探しています。
「Hito」、「Block」、この言葉に何かを感じる人はれ連絡をください。

808 :デフォルトの名無しさん:2006/07/01(土) 17:21:30
>>806です。書き忘れすみません。
HitoとBlockは、Imageを使っています。

809 :デフォルトの名無しさん:2006/07/01(土) 17:40:45
>>808
お前はVB使うな。そしてゲーム作成板へ行け。

810 :デフォルトの名無しさん:2006/07/02(日) 09:33:46
>>806
「AfterJump」イベントと「BeforeOnBlock」イベント使えばいけると思うよ

811 :デフォルトの名無しさん:2006/07/02(日) 12:32:35
Hito.Left = Block.Left
Hito.Top = Block.Top

812 :デフォルトの名無しさん:2006/07/02(日) 14:12:15
いしのなかにいる

813 :デフォルトの名無しさん:2006/07/02(日) 14:24:59
>>806です
ありがとうございます。
やってみます。

814 :_:2006/07/03(月) 07:29:30
Inet使ってHTTP通信を行っているんですが、
サーバから302 Moved Temporaryが帰ってきた場合に
自動でリダイレクトし移動先に通信してしまいます。

自動リダイレクトを停止して302のページが取得したいのですが、
Inetでできるんでしょうか?

815 :デフォルトの名無しさん:2006/07/03(月) 12:26:21
>>814
socketのAPI使ったらいいんじゃない?

816 :デフォルトの名無しさん:2006/07/03(月) 12:59:50
>>811-812 ワラタ

817 :デフォルトの名無しさん: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


818 :デフォルトの名無しさん:2006/07/03(月) 23:33:45
>815

Inet以外でHTTP通信する方法はないでしょうか?

819 :デフォルトの名無しさん:2006/07/03(月) 23:39:04
>>818
あるよ。

820 :デフォルトの名無しさん:2006/07/03(月) 23:46:17
ナイアル厨って定期的に湧いてくるのなw

821 :デフォルトの名無しさん:2006/07/03(月) 23:53:09
ちゃんと答えでてるし。

822 :デフォルトの名無しさん:2006/07/04(火) 02:18:49
>817
「readyState=4」が書いてあるのでヒントだけ。
・Do〜Exit Do〜Loop
・時間を計る
あんたならこれで分かると思う。

823 :デフォルトの名無しさん:2006/07/04(火) 04:15:00
いい質問のあとでアホなこと聞いてすみませんが
VBSで

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

ってできるんでしょうか?時間指定で閉じる方法はぐぐって見つけたのですが・・・

824 :デフォルトの名無しさん:2006/07/04(火) 10:28:10
>>823
MsgBox を表示したら、それを閉じる迄
コードは其処で止まるんだが。

825 :デフォルトの名無しさん:2006/07/04(火) 10:42:21
>>823
Main.vbs       Msg.vbs
処理開始
├───起動─→msgbox "処理中"


処理完了
├───通知─→(メッセージボックス閉じる)
↓               ↓
終了             終了


意地でも1ファイル内で済ませたいなら知らん

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

例えば
test.exe batch
このようにしたいのです。

827 :デフォルトの名無しさん:2006/07/04(火) 11:47:22
command

828 :デフォルトの名無しさん:2006/07/04(火) 12:59:24
>>827
それはどこでやればいいのでしょうか?
重ねてソースコード上でどのように書けばいいのかと
バッチファイル自体はどうやって作るかも教えて頂けるとありがたいです。

829 :デフォルトの名無しさん:2006/07/04(火) 13:02:36
>>824
>>825
ありがとうございました。確かにそうですよね
ですが私はメッセージボックス閉じる方法すら判らない厨でして。。。
ぐぐってきます

830 :デフォルトの名無しさん:2006/07/04(火) 13:03:49
>>828
http://pc8.2ch.net/test/read.cgi/win/1116131036/

831 :デフォルトの名無しさん:2006/07/04(火) 13:07:50
>>830
すいません。バッチファイルについてはスレ違いでした。
もう1つ、引数として何が指定されたかを
VBのソースコード上でどのように判断すればいいかわからないのです。

832 :デフォルトの名無しさん:2006/07/04(火) 13:14:51
>>831
答えてもらってるんだから少しは自分で調べろよ

833 :デフォルトの名無しさん:2006/07/04(火) 13:35:33
>>831
お前のブラウザでは >>827 が表示されないのか?

834 :デフォルトの名無しさん:2006/07/04(火) 15:30:19
StringやSpaceの使い方で気になったんだけど

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

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

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

普通どっち使うもんかな

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

人それぞれ?

835 :デフォルトの名無しさん:2006/07/04(火) 17:31:50
質問する側もエスパーじゃないとダメなの? このスレって。

836 :デフォルトの名無しさん:2006/07/04(火) 17:36:14
>>834
普通即値なんて使わないでしょ。
「" "」が必要だとして、その3バイトの空白には
必ず意味がある筈なんだから。
そういう意味では、Space$(893) も失格。
この「893」という値には意味がある筈なので。

837 :デフォルトの名無しさん:2006/07/04(火) 19:43:14
>>836
どゆいみ? 

838 :デフォルトの名無しさん:2006/07/04(火) 19:52:44
>>837
「コーディング規約守れ」って事らしい

839 :デフォルトの名無しさん:2006/07/04(火) 19:54:41
ハードコーディングすんな

840 :817:2006/07/04(火) 20:47:07

>>822
Sleep取りながらループ回し、有る一定時間readyState=4にならなければ、という処理をしろというなら
その結果が>>817で書いた「(10分以上待ったが反応無し)」であり、
実際には10分も必要なく数秒でじゅうぶんだけど、普通に取得できる場合は1秒以下で処理が終わるため
例え1回数秒でも処理回数が多くなると膨大な時間になり、やはり>>817で書いたように
そういう処理に時間の掛かる方法は避けたいです。
通常1秒以下で取得できるなら、1秒以上をdat無しと判断すれば良いと言うかも知れませんが
鯖が重い場合は正常取得に1〜3秒掛かる場合もあるので、最低5秒くらいは待たないと正しい判断は出来ないと思われます。

>>822の回答がそういう意味じゃないなら、もう少し詳しく教えてください。
また、上記のような解釈でいいのなら、別な回答をお待ちします。


841 :デフォルトの名無しさん: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でも書ける。
好きにして。

842 :デフォルトの名無しさん:2006/07/05(水) 03:06:03
>823
VBSでできるかどうかしらんが、VBなら
・メッセージボックスはMsgBoxじゃなく自分で似たデザインのを作る
・軽い処理ならその似非メッセージボックスに閉じていいかどうか条件判断させる
・重い処理なら重い処理中に似非メッセージボックスを閉じていいかどうか条件判断させる
という感じがいいと思われ。

>834
例えばSpace$(893)の「893」をConstできるか?という観点で
考えたらいいんじゃね?
ConstできるならSpace$使わんでもいいし、
できんなら使った方がよかろうし。

843 :デフォルトの名無しさん:2006/07/05(水) 04:35:05
>>842
ありがとうございました。
VBSではどうやら自分デザインは出来ないみたいなんですよ

今更とか言われてるけどVB覚えてみようかな

844 :817:2006/07/05(水) 07:04:38

>>841
そういった方法だと、
「待てる限界時間」を基準にすると、鯖が重いときに正常取得出来ず、
正常取得できる時間を基準にすると、「待てる限界時間」を越えてしまうという話です。
datが無いなら無いで、きちんとStatus=404なりなにかを取得出来る方法を探してます。


845 :834:2006/07/05(水) 10:22:01
>>836
普通に即値使うこともあるんだよね
バカでごめんよ

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

893ものスペースはベタ打ちせずにSpace$(893)て書くけど
たった3、4のスペースだった場合は、どうなのかなと

846 :デフォルトの名無しさん:2006/07/05(水) 11:50:25
>>845
そのコードを死ぬ迄あんたがメンテするなら好きに書けばいい。

847 :デフォルトの名無しさん:2006/07/05(水) 11:50:50
>>845
たった、3、4でなくてそのスペースにはどういう意味が有るのかが重要
昨日の自分は別人と考えてプログラムを作る習慣をつけろ

848 :834:2006/07/05(水) 12:12:39
>>845
うん

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


要するに、そこに"000"かString$(3,"0")かを記述しなきゃいけない場合に、
あなたならどっち使う?
ってことなんだけどさ
それでもそこだけのためにConst準備しとくんだ、とか
絶対そんな状況にならないぞ、とかって人はスルーしてくれ

849 :デフォルトの名無しさん:2006/07/05(水) 13:01:15
つうか、コードのその箇所を探すっていう手間が理解できない人には何言っても駄目。
3が4になっただけで、コードを精査するわけだし、それが一箇所だという保証もない。
そもそも、その3文字っていうことの論理的な意味づけもできない。


850 :834:2006/07/05(水) 13:49:06
>>849
考えすぎだと思う
まああんましイライラしないでくれ

851 :デフォルトの名無しさん: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でテキストエディタで開いて
正規表現とか使って探しちまうからあんまし参考意見は出せない。
共同作業の場合も相手にそのやり方教えちまうし。

852 :デフォルトの名無しさん:2006/07/05(水) 16:45:29
Constだの
Space$だの
"   "だの

見やすきゃ何でもいいだろうが

853 :デフォルトの名無しさん:2006/07/05(水) 17:43:10
頭の悪そうな質問をしてくださいスレなくなったと思ったらここか

854 :817:2006/07/05(水) 20:52:44

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

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

引き続き宜しくお願いします。


855 :デフォルトの名無しさん:2006/07/05(水) 21:45:52
最初のカキコでVBSの質問だって書いてるのに、DoEventsとか出してくる
あたりからして、質問内容ちゃんと読んでないのだろうから、他の回答者を
待った方がいいと思われ。ここは回答者の質も様々だからな。

856 :デフォルトの名無しさん: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は定数です。
宜しくお願いいたします。


857 :デフォルトの名無しさん: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

858 :デフォルトの名無しさん: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プログラマ。と言いたくなるような内容だな。

859 :デフォルトの名無しさん:2006/07/06(木) 01:05:11
>>858
クマー(AA略

860 :デフォルトの名無しさん:2006/07/06(木) 01:28:28
煽りながらミスすると恥ずかしいだけだぞw

861 :デフォルトの名無しさん:2006/07/06(木) 01:42:38
うーん857も858もうまくいかない・・・
神きぼんぬ・・・

862 :デフォルトの名無しさん:2006/07/06(木) 01:54:37
どううまくいかないのかかけ。

863 :デフォルトの名無しさん:2006/07/06(木) 02:02:06
858ので実行すると構文エラーになります。

857ので実行すると、目的関数である
CO = Exp(-r * T) * U * max2(0, S - K)

がなぜか0になってしまいます。
max2(a,b)は定義済みです。

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

864 :デフォルトの名無しさん:2006/07/06(木) 02:03:43
書き忘れました、
構文エラーとは、
;
とifのあとの{}です。



865 :デフォルトの名無しさん:2006/07/06(木) 02:31:20
エスパー同士勝手にやってろ

866 :デフォルトの名無しさん:2006/07/06(木) 02:37:26
>>863
お前が説明していない所がバグってる。

867 :デフォルトの名無しさん:2006/07/06(木) 02:38:32
857ので実行すると、目的関数である
CO = Exp(-r * T) * U * max2(0, S - K)

死ねよ。こんなこと説明していないだろ。わかるわけが無い。ばーか。

868 :デフォルトの名無しさん:2006/07/06(木) 02:39:09
あーほ。お前もうくんな。

どうせお前には何を言ってもわからん。

べ^−。

869 :デフォルトの名無しさん:2006/07/06(木) 02:41:15
どうせ宿題だろ。
じぶんでやれ。

  べろべろばー
   ∩___∩     
   | ノ      ヽ/⌒) 
  /⌒) (゚)   (゚) | .|  
 / /   ( _●_)  ミ/
.(  ヽ  |∪|  /
 \    ヽノ /   
  /      /  
 |   _つ  /    
 |  /UJ\ \       
 | /     )  )       
 ∪     (  \    
        \_)

870 :デフォルトの名無しさん:2006/07/06(木) 05:18:36
>>863
Uが0なら0になるだろ

871 :デフォルトの名無しさん:2006/07/06(木) 09:38:58
格好は無理でもああいう落ち着いた話し方をしたいとかは思った

872 :デフォルトの名無しさん:2006/07/06(木) 09:42:54
華麗に誤爆

873 :デフォルトの名無しさん:2006/07/06(木) 12:37:42
十分ヒントにはなるはずの情報を活用する頭がないならあきらめろ。

874 :デフォルトの名無しさん:2006/07/06(木) 14:47:39
>>871 の「ああいう」ってのが >>869 を指しているのかと思って焦った。

875 :デフォルトの名無しさん:2006/07/06(木) 15:27:04
6桁の数値から、一見不規則な6桁の数値に変換して
かつ元の数値に戻せる簡単な方法があったら教えてください。

(例)
000001 → 916724 → 000001
000002 → 197537 → 000002
000003 → 721495 → 000003


876 :デフォルトの名無しさん:2006/07/06(木) 15:38:23
適当にXOR

877 :デフォルトの名無しさん:2006/07/06(木) 15:39:27
って6桁にならねーな、はは

878 :デフォルトの名無しさん:2006/07/06(木) 16:00:03
>>875
ハッシュで処理すればいいんじゃない?

879 :デフォルトの名無しさん:2006/07/06(木) 16:15:39
>>875
元の数を全部配列に記憶しておき、適当な乱数で6桁に変換すればいい。
元に戻すのは、配列の当該位置を参照するだけ。

880 :875:2006/07/06(木) 16:30:47
ありがとうございます。ですが・・・

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

>>879
元の数は0〜999999すべて発生するため
配列の確保や変換(シャッフル)の時間に問題が発生します。

881 :デフォルトの名無しさん:2006/07/06(木) 17:24:22
XORでいいじゃん。

882 :デフォルトの名無しさん:2006/07/06(木) 18:02:51
Visual Studio 6.0 を Windows Xp Professional にインストールしようとしたら、途中で止まってしまいます。
インストールは可能なんでしょうか?

883 :デフォルトの名無しさん:2006/07/06(木) 18:14:18
>>882
俺が実際に入れて使っているから可能

884 :デフォルトの名無しさん: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

885 :デフォルトの名無しさん:2006/07/06(木) 18:18:59
おっと

For i = 0 To 1000



For i = 0 To 999999

にしてくれ

886 :デフォルトの名無しさん:2006/07/06(木) 18:21:43
>>883
よろしくお願いします。
C:\Program Files\Microsoft Visual Studio\Common\Tools\VS-Ent98\Vanalyzr\VALEC.EXE
でユーザが取得できないというエラーでした。
その時はCDが1枚目で途中終了してしまいました。
ネットに接続したら上手く行くのでしょうか?

887 :デフォルトの名無しさん: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

888 :デフォルトの名無しさん:2006/07/06(木) 18:32:54
>>887
ありがとうございます。
明日会社に出てから、さっそくやってみます。

889 :デフォルトの名無しさん:2006/07/07(金) 06:46:28
htmをテキストファイルとして取得して
その中から正規表現で_data0602.lzhを
_*.lzhで取得するところまではできたんですが。

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

どうすればよいかご教示願えませんでしょうか?

890 :デフォルトの名無しさん:2006/07/07(金) 08:59:24
W3getとかのヘルプを読む

891 :デフォルトの名無しさん:2006/07/07(金) 09:27:28
>>884
tmp の値により a は一意にならないから
a から元の値を求めることはできない。

892 :デフォルトの名無しさん:2006/07/07(金) 13:10:24
vbsで質問です。以下のプログラムを書きました。
○に0〜10の数字を入れた時に正解にしたいのですが、違うになってしまいます。
ところがアルファベットを入れると正解になります。
なぜかわかる人おしえてください。。

chk = ○
if chk = [0-10] then
msgbox "正解"
else msgbox "違う"
end if

893 :デフォルトの名無しさん:2006/07/07(金) 13:49:33
>>892
chk = 5
if ((0 <= chk) Or (chk <= 10)) then
msgbox "正解"
else
msgbox "違う"
end if

894 :デフォルトの名無しさん:2006/07/07(金) 14:00:15
ほとんど正解

895 :デフォルトの名無しさん:2006/07/07(金) 14:11:54
>>893
OrじゃなくてAndだな。

896 :892:2006/07/07(金) 14:12:30
アルファベットを入れた時もNGにしたいのですが、どうやれば良いですか?


897 :デフォルトの名無しさん: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にあるようにロック中のログを欠落してしまいます。

 よろしくおねがいします

898 :デフォルトの名無しさん:2006/07/07(金) 15:16:41
>>897
リネーム処理なんてディレクトリエントリを書き換えるだけなので一瞬。
リネーム中は、そのファイルに対して何も処理は出来ない。
また、そのファイルが処理中なら、リネームは出来ない。

899 :デフォルトの名無しさん:2006/07/07(金) 15:36:54
>>898 ありがとうございます

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

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

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

リネーム |||||     ||||| (リネーム2回
ログ書き  ||||||||||||||| |||||
こんな感じだとしたらリネーム中のファイルの状態はどうなっているのか

900 :デフォルトの名無しさん:2006/07/07(金) 15:46:58
>>899
ディレクトリに数千〜数万ファイルあるとその書き込みにも数秒かかる(マジで)

あと、リネーム時のロック状態はネットワーク上のファイルとローカルファイルシステムでも動きが違う


901 :デフォルトの名無しさん:2006/07/07(金) 15:50:36
↑なので
ログファイルのオープンはリトライしろとかロックファイルは別に持つとかそんな感じで


902 :デフォルトの名無しさん:2006/07/07(金) 15:51:57
>>900 
同一フォルダ内には基本一か月分(30ファイル)です。
あって精々100ファイル程度かと

ファイルはローカルです。

903 :デフォルトの名無しさん:2006/07/07(金) 15:53:52
>>901
「wLOG.EXE」は既製品なので手を加えられないんですorz

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

905 :デフォルトの名無しさん: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


906 :デフォルトの名無しさん:2006/07/07(金) 16:20:27
質問は簡潔に書け。話はそれからだ。

907 :デフォルトの名無しさん:2006/07/07(金) 16:24:08
>>905
「AAA.Txt ←→ BBB.Txt」とかでひたすらリネームし続けるプログラムを動かしつつ、
その両方のファイルをオープンして何か書いて閉じ続ける別のプログラムも動かせ。

908 :デフォルトの名無しさん: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」には"絶対に全てのログ"を書込むようにしたい。

これは不可能ということになるのかな?


909 :デフォルトの名無しさん:2006/07/07(金) 19:17:54
既製品で修正できないって自分で言ってるんだから不可能だろ

910 :デフォルトの名無しさん:2006/07/07(金) 19:46:13
>>908
リネームして消すって何だ??

911 :デフォルトの名無しさん:2006/07/07(金) 20:26:49
>>897
経緯が良く分からないので疑問にだけ答える。

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

> ・リネーム「Name "LOG.txt" as "WORK.txt"」の処理中のファイルの状態はどうなるのでしょうか?
>  ロック状態になるのでしょうか?
ファイルに対するアクションは、ファイルシステムがキューイングするので、
通常は、アプリケーションから見れば、「リネームされていない状態」か、
「リネームされた状態」のどちらかしかない。
「通常でない」場合というのは、そのアプリケーションが、物理ディスクの読み書きをする
アプリケーションの場合。

912 :デフォルトの名無しさん:2006/07/07(金) 20:34:44
>>910
普通はリネーム前に消す

913 :デフォルトの名無しさん:2006/07/07(金) 20:42:08
・追記に失敗しているというはどこから分かるの?

914 :デフォルトの名無しさん:2006/07/07(金) 23:18:34
>>910
「WORK.txt」は解析処理後に削除するので、試験プログラムでも削除。

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

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

>>913
「wLOG.EXE」が「LOG.txt」に書き込むときに、
「書き込むことができません。」っていうエラーが吐かれてましたので

915 :デフォルトの名無しさん:2006/07/07(金) 23:27:19
>>914
>「通常でない」場合は、「リネームされていない状態」「リネームされた状態」の他の状態があるとうこと?
通常のアプリケーションから見るとリネームされているが、ディスクには書き込まれてない状態
がありうる。Windowsは、ファイルのキャッシュだけでなく、メタデータも遅延書き込みを行う。
単なるアプリであれば気にする必要はない。

916 :デフォルトの名無しさん:2006/07/07(金) 23:45:09
そもそも、そんな事はアプリ側で何も気にせずガンガン処理すれば、OSが全てうまくやってくれる筈だが。

917 :デフォルトの名無しさん:2006/07/08(土) 00:04:59
>>916
wLOG.exeがどのような処理シーケンス(API呼び出し)でファイルに書き込んで
いるのかがわからなければ、そうはいえない。

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

例えばUnixのデーモンプロセスなどは、ログファイルを切り替える通知を外部から
受け付ける機能を初めから実装している。wLOG.exeがそのような機能を持って
なくて、なおかつ内部構造が不明なのであれば、上記のような方法を取るしかない。

918 :デフォルトの名無しさん:2006/07/08(土) 00:34:14
>>915
Windowsの正規手順を無視したディスクアクセスってことかな?
そんなアプリあるの??


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


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

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

ランダムアクセスが可能かどうか、調べてきます…(やったことないもんで

919 :デフォルトの名無しさん:2006/07/08(土) 00:40:13
>>918
> Windowsの正規手順を無視したディスクアクセスってことかな?
そういうこと。たとえばデフラグとかがそういうものに該当する。

920 :デフォルトの名無しさん:2006/07/08(土) 00:40:17
んー、ログが固定長じゃないから厳しいのかな・・・?

921 :デフォルトの名無しさん:2006/07/08(土) 00:50:10
>>918
どんなエラーが?

>>919
ちゃんとデフラグAPIがあるんだが。

922 :デフォルトの名無しさん:2006/07/08(土) 00:56:28
>>918
>Windowsの正規手順を無視したディスクアクセスってことかな?
>そんなアプリあるの??
別に正規手順を無視しているわけではない。Windowsのキャッシュマネージャと
ファイルシステムを介さずにディスクにアクセスするようなアプリだ。
具体的には、Win32APIのCreateFileで直接Volumeをオープンするようなアプリ。

923 :デフォルトの名無しさん: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

924 :デフォルトの名無しさん:2006/07/08(土) 11:11:35
>>923
Shell "cmd /k copy /b " & Data.Files(1) & " + b.txt c.txt", vbNormalFocus

925 :デフォルトの名無しさん:2006/07/08(土) 11:49:47
>>921
ロックされてるファイルをOpenしようとしたときと同じエラーメッセージだった

926 :デフォルトの名無しさん:2006/07/08(土) 11:51:24
固定長じゃないテキストログにランダムアクセスする方法ってありますかね?

やっぱ、シーケンシャルに読むしかない?

927 :デフォルトの名無しさん:2006/07/08(土) 12:37:33
そりゃインデックスでもなけりゃむりだろ。

928 :デフォルトの名無しさん:2006/07/08(土) 12:44:12
>>925
つまりリネーム中でロックされてたのか。

>>926
あるよ。

929 :デフォルトの名無しさん:2006/07/08(土) 12:54:24
ナイアル厨w

930 :デフォルトの名無しさん:2006/07/08(土) 13:34:29
またナイアル厨厨か。

931 :デフォルトの名無しさん:2006/07/08(土) 13:57:19
速度求めるんなら、そこだけDLLにすりゃいいんじゃね?
処理対象分だけ切り出して、新しいファイルとして保存するみたいな。
Cなら20行もありゃできそうだ。

932 :デフォルトの名無しさん:2006/07/08(土) 19:08:38
多分、速度じゃなくて
信頼性が欲しいんだと思うよ

933 :デフォルトの名無しさん:2006/07/08(土) 21:32:43
>>891
tmpの値により一意になるはずなんだけど・・・
俺の環境じゃなる

934 :デフォルトの名無しさん:2006/07/09(日) 12:01:56
>>928
どんな手法がありますか?

Open〜for Randomじゃ無理っぽいんですけど

935 :デフォルトの名無しさん:2006/07/09(日) 13:20:07
>>934
いや 無理だよ
長さが変動する以上 ランダムアクセス じゃ無理
テキスト丸ごと読み込んで 先頭から解析するのが 一番簡単かも

936 :デフォルトの名無しさん:2006/07/09(日) 13:53:32
ナイアル厨じゃないけど、単にランダムアクセス、とういことならそれは可能でしょ。
バイナリとして読んでStrConvすればいいんだから。(S-JISの2バイト文字の
区切りは意識する必要はあるけど。)

任意のm文字目からアクセスしたいとか、n行目からアクセスしたいとかいった場合は
頭から読まないと無理だろうけど。
まあ926はそういう意味で言ってるんだろうから答えはやっぱり無理ということになるのかな。

937 :デフォルトの名無しさん:2006/07/09(日) 14:18:09
言ってることはそのとおりだけど、
明らかに任意レコードへのランダムアクセスのつもりで聞いてるから無理。


938 :デフォルトの名無しさん:2006/07/09(日) 14:59:24
いや、レコードなんか意識する必要ないんだって。
最初はLOG.txtを全部WORK.txtにコピーする。
次はLOG.txtのWORK.txtのサイズ+1からさ以後まで全部コピーする。
rLOG.exeはWORK.txtを対象として解析する。
前にも言ったけど、VBでやるのがパフォーマンス的に厳しいなら、Cで書けばいいんじゃない。

939 :デフォルトの名無しさん:2006/07/09(日) 15:14:59
そういう話じゃないと思うんですが。。
そりゃ一旦全部よんでリストに置き換えるとか、
インデックスを作るとか、配列にぶち込むとか、
そういう手法ならいくらもあるし、そんなのだれでも思いつくでしょ。

940 :デフォルトの名無しさん:2006/07/09(日) 15:41:45
>>939
いやいやそういう話でしょ。
10MBのファイルを処理した後に20MBのファイルを処理するときに10MB分
読まなきゃならない。次に30MBのファイルを処理するときに20MB分よまなきゃ
ならない。
そうするんじゃなくて、rLOG.exeは常に解析対象ファイルの初めから処理する
ように作っておいて、処理対象のファイルは別途切り出せって話。

941 :デフォルトの名無しさん:2006/07/09(日) 15:44:06
で、切り出したファイルの解析は、固定長のログじゃないなら、行読み込みで
読み込みながら解析すればいい。

942 :デフォルトの名無しさん:2006/07/09(日) 15:58:16
えーっと、ですからそれはランダムアクセスと等価(ただしリードオンリー)
のことを、可能な限り効率的に行うための手法の話であって……

943 :デフォルトの名無しさん:2006/07/09(日) 16:00:01
いったい何がしたいのかは>>926に聞いてみるしかないんじゃないの?

944 :デフォルトの名無しさん:2006/07/09(日) 16:06:27
>>897=>>926じゃないの?

945 :デフォルトの名無しさん:2006/07/09(日) 16:07:14
>>926>>897 は違う人?

946 :デフォルトの名無しさん:2006/07/09(日) 16:36:10
質問者自身が、自分が何がやりたいのか理解してなくて
ちゃんと聞かないと、全く的外れな回答が続くな。

947 :デフォルトの名無しさん:2006/07/09(日) 16:57:36
>>926
データベース使えば簡単なんじゃないの?

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

あとはVBとかで好きに加工すればいいでしょう

948 :デフォルトの名無しさん:2006/07/09(日) 17:02:33
え?>>926=>>897でしょ。
何やりたいかは本人も良く分かってるし、アドバイスしてる奴も一部を除いてよく分かってるでしょ。

949 :デフォルトの名無しさん:2006/07/09(日) 17:10:05
まあ>>926を待つってことで。

950 :デフォルトの名無しさん:2006/07/09(日) 19:17:59
実は全く関係ない奴が単発質問しただけってオチか

951 :デフォルトの名無しさん:2006/07/09(日) 19:24:40
実は、も何も文面だけ見れば全く別の無関係な質問、
と読むしかないと思いますが。。
仮に本当は同一人物による関連する質問だとしてもね。

最近こういう文章を文面どおり読む能力がないというか、
自分の想像妄想と一緒にしちゃって区別がつかない人って増えてるよね。

952 :デフォルトの名無しさん:2006/07/09(日) 19:44:59
何で同じ奴の質問だと決め付けてるのかサッパリ分からん。

953 :926:2006/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でインターフェースとってくれればいいんでしょうけど、
それは無理なので…

954 :デフォルトの名無しさん:2006/07/09(日) 21:08:47
無理と決め付ける人間に進歩はない

955 :デフォルトの名無しさん:2006/07/09(日) 21:25:55
文章長くて適当に流し読みしかしてないけど、
「やりたい事」と「やる方法」を間違えてる様な気が。

956 :デフォルトの名無しさん:2006/07/09(日) 21:43:58
>>951-952
ハズカシー

957 :デフォルトの名無しさん:2006/07/09(日) 22:17:02
>>955
いい方法があるなら、教えてあげなよ

958 :デフォルトの名無しさん:2006/07/09(日) 22:20:56
>>953
根本的なところの指摘なんだけどさ、例えば5秒おきに10MBのログを解析するって、
1行80byteだとすると1秒あたり25000行の解析になるんだよ。
VBで大丈夫なの?

959 :デフォルトの名無しさん:2006/07/09(日) 22:29:06
>>956
>>951 は恥ずかしくないよ。正論。
>>952 はちょっと恥ずかしいw

960 :デフォルトの名無しさん:2006/07/09(日) 22:37:13
>>959=>>951
自演乙。

961 :デフォルトの名無しさん:2006/07/09(日) 22:42:19
あー、もういいじゃん、>>926も再登場したわけなんだから

962 :デフォルトの名無しさん:2006/07/09(日) 23:04:30
質問を簡潔にまとめてくれよ。
36文字程度で。

963 :926:2006/07/09(日) 23:53:21
>>958
1日最大(?)40000行くらいいくログで、
その内処理が必要なのは20000行弱(1行の処理は0.23Secくらいかかる)

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

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

>>955
どういう方法がいいでしょうか?

964 :デフォルトの名無しさん:2006/07/09(日) 23:59:50
あー、5秒おきに起動するんじゃなくて、5秒ごとに解析したいわけね。
んじゃ、起動しっぱなしにしとけば?
そうすりゃ先頭からシークする必要ない。

965 :デフォルトの名無しさん:2006/07/10(月) 00:35:03
>>964
readモードでOpenしっぱなしにするって言うことですか?
ログの読み込みは

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

ッテ感じでやってますけど、これを定期的にコールする?

966 :デフォルトの名無しさん:2006/07/10(月) 08:42:46
>>953
http://www.gluesoft.co.jp/wlog/Update.aspx

967 :デフォルトの名無しさん:2006/07/10(月) 09:07:03
>>966
いや、それじゃないww
例えで「wLOG.EXE」っていってるだけw

968 :デフォルトの名無しさん:2006/07/10(月) 13:32:46
はじめまして。
お聞きしたいことがあるのですが、VBで1÷7を計算して、
小数点以下50桁まで表示させたいのですが、
どのようにすればよろしいのでしょうか?

969 :875:2006/07/10(月) 13:47:51
>>968
筆算をプログラム化する
途中で同じ数値になったら循環小数にする等の処理を加える

x = 10
For i = 1 To 50
. Debug.Print x \ 7;
. x = (x Mod 7) * 10
Next i


970 :デフォルトの名無しさん:2006/07/10(月) 14:49:31
>>965
そのdo 〜 loop内に解析処理そのもの、あるいは読み込んだログを
メモリ上に保存するのなら、その通りだ。

971 :デフォルトの名無しさん: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が開始される。

972 :デフォルトの名無しさん:2006/07/10(月) 15:18:24
>>964
> んじゃ、起動しっぱなしにしとけば?
> そうすりゃ先頭からシークする必要ない。

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

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

どうやったらシークを省いてダイレクトに増分から読み込めるのでしょうか???

973 :デフォルトの名無しさん:2006/07/10(月) 16:17:55
もういっそのことさ、Cで一行読み込んでくれるDLL書きなよ。

974 :デフォルトの名無しさん:2006/07/10(月) 16:23:45
>>972
>ファイルOPENしっ放しだと「wLOG.EXE」がログを落としてくれない
そんな重要なことは最初に書けよ。
だったら処理対象範囲のログを切り出すしかないだろ。

975 :デフォルトの名無しさん:2006/07/10(月) 16:24:44
いや、切り出すためにファイルをオープンしたら、その間も
wLOG.EXEはログを落とさなくなるのか?
だったら解析不能なんじゃね?

976 :デフォルトの名無しさん:2006/07/10(月) 16:36:40
だから最初にいったろ
wLOG.EXEがどんな場合でもログ吐いてくれるようにしてくれてないとダメなんだって

977 :デフォルトの名無しさん:2006/07/10(月) 16:41:19
ええ?VBのOpen For Inputステートメントって、書き込み権の排他ロックも
取得しちゃうの?なにそのくそしよう

978 :デフォルトの名無しさん: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よりはリネームのが早いと思うので…

979 :デフォルトの名無しさん:2006/07/10(月) 16:58:49
>>977
ごめんなさい。使ってたエディタ(EmEditorF)が悪かったみたい。
メモ帳ではOPEN中の更新できた。

980 :デフォルトの名無しさん:2006/07/10(月) 17:04:49
>>977
デフォルトがLock Read Writeじゃなかった?

981 :デフォルトの名無しさん:2006/07/10(月) 17:17:31
>>980
えええええ?
書き込み権のみならず、読み込み権の排他ロックまで獲得しちゃうの?
なんだそりゃ。

982 :926:2006/07/10(月) 17:19:14
ランダムアクセスじゃないけど、読込位置の取得は
「Seek #intFileNo, lngPos」で出来ました。
lngPosは前回読込終了位置 「lngPos = Seek(intFileNo)」で記憶しとく。

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

ただ、結局 「Open FilePath For Input As #intFileNo」 でダメだったから意味ないかな…


983 :デフォルトの名無しさん:2006/07/10(月) 17:28:49
Open For Binary は試してみたの?

984 :926:2006/07/10(月) 17:32:05
Open FilePath For Input Access Read Shared As #intFileNo
Open FilePath For Binary Access Read Shared As #intFileNo

ともにダメ…

985 :デフォルトの名無しさん:2006/07/10(月) 17:43:00
だからCから試してみろと何度言ったら(ry

986 :デフォルトの名無しさん:2006/07/10(月) 17:46:58
なんでFSOとかAPI使わねえんだ?

987 :デフォルトの名無しさん:2006/07/10(月) 17:59:13
>>985
ファイルIOくらいなら書けると思うけど、Cは経験浅いので。
あとなるたけVBでやりたい。

>>986
FileSystemObjectは分かるけど、APIはどんなのあるか知らないのです。
けど、FSOにしてもAPIにしてもOpenステートメントと違うのかな??

988 :デフォルトの名無しさん:2006/07/10(月) 18:11:31
書き込みでLock Readしてるだけの話だが既製品で修正できないって
言ってんだったらもうあきれめれ。

989 :デフォルトの名無しさん:2006/07/10(月) 19:13:11
>>987
OpenFile ってそのものの名前のAPIがあるよ。
これなら、非常に細かく制御出来る。

990 :デフォルトの名無しさん: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のいう通りかな。
こっち方面では諦めるしかないのか…

991 :デフォルトの名無しさん: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

992 :デフォルトの名無しさん:2006/07/10(月) 23:25:58 ?
ワロスw

993 :デフォルトの名無しさん:2006/07/11(火) 02:09:43
ExcelのVBAについて質問。
現在ブック内に空シートを作成し、Excel側の印刷設定にて両面印刷を指定し、
2つのシートをselectしprintoutする事で両面印刷を行っております。

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

ご存知の方やそのヒントになりうる検索ワードをご存知でしたら教えてください。

994 :デフォルトの名無しさん:2006/07/11(火) 10:17:31
空シート印刷してどうするの

995 :デフォルトの名無しさん:2006/07/11(火) 10:36:52
>>992
何が?

996 :デフォルトの名無しさん:2006/07/12(水) 02:12:52
だな

997 :デフォルトの名無しさん:2006/07/12(水) 02:19:04
てst >>990

998 :デフォルトの名無しさん:2006/07/12(水) 05:19:38
そんなことより次スレ立ててくれ

999 :デフォルトの名無しさん:2006/07/12(水) 10:17:03
だが断る

1000 :デフォルトの名無しさん:2006/07/12(水) 10:18:22
  .,。 ,。
(; Д )

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

273 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)