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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
ここは Visual Basic 〜6.0 の質問スレです。
質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。

VB.NETは別物なので専門スレで、VBA、APIの質問もそれぞれのスレで。

○ 質問者の心得
 一.質問する前にMSDNやGoogle、過去ログにも目を通してみる。
 二.VBScript、インストーラーなどはこのスレでOK。
 三.質問は第三者にもわかりやすいよう簡潔かつ具体的に。
 四.荒らしは相手しない。

○ 回答者の心得
 一.答えられない質問は無駄に罵倒せずスルー。無理するな。
 二.代用法を強制しない。
 三.回答する上で必須ではない情報をむやみに聞き返さない。
 四.荒らしは相手しない。
 五.VB情報募集中。
 六.回答は質問者が理解できるよう具体的に。

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デフォルトの名無しさん:2007/05/19(土) 17:34:50
3デフォルトの名無しさん:2007/05/19(土) 17:37:29
4デフォルトの名無しさん:2007/05/19(土) 17:38:36
5デフォルトの名無しさん:2007/05/19(土) 17:39:21
6デフォルトの名無しさん:2007/05/19(土) 17:46:14
オマンコ!!!!
7デフォルトの名無しさん:2007/05/19(土) 18:44:21
フレキシブルグリッドでセルを結合したときなのですが、
セルを列で結合して表示したときにクリックイベントを取ると、
クリックした場所によってインデックス番号が変わってしまいます。
結合している列の一番上のインデックスを常に取得したいのですが
どうすればよいでしょうか?
_     ___
1
1 これが 1
__ ___

わかりにくい図で申し訳ありませんが、よろしくお願い致します。
8デフォルトの名無しさん:2007/05/19(土) 21:08:02
以下のようなツールを作成してます。
@Linux上のgz形式で圧縮されたファイルをWindowsPCにDL
ADLしたファイルをTAR32で解凍
B解凍したファイル(カンマ区切りの.csv)から条件に合う行をテキストファイル(.txt)に保存

AまではできたのですがBで悩み中です。
・解凍したファイルがUTF-8のため文字化けする
・OpenしてLine inputで読み込むと全行(約2万行)を読み込んでしまい処理が重い。

コード変換すればいいと思うのですが、
その書き方がわからないので教えていただきたいです。
宜しくお願いします。



9デフォルトの名無しさん:2007/05/20(日) 03:13:00
>>前スレ983
無事うまく取得することができました。
ActiveCodePane から分割や上下を区別する方法が全く思いつきませんでした。
正直、なぜ取得できているのか理解しきれていないのですが、テストした限り
問題ありませんでした。
1点だけ、コードウィンドウを1つも開いていない場合は ActiveCodePane が
Nothing となるので、VBE_CODEPAIN にコードウィンドウを1つも開いていない意味の
CODEPAIN_NOTHING を追加しました。
本当にもうほとんど諦めだったので、感謝です。ありがとうございました。
10デフォルトの名無しさん:2007/05/20(日) 06:55:09
>>9
CodePanes コレクションの並び順が常に Top → Bottom の順で格納されてるんじゃないかと期待して書いてみただけw
同じコードウィンドウに属するCodePainの判定は、親が同じ VBComponent かどうかを見れば出来ると考えた
あとは CodePanes の中から ActiveCodePain が見つかるのが先か、VBComponent だけが同じものが見つかるのが先かを試せばいいってわけ
11デフォルトの名無しさん:2007/05/21(月) 10:03:42
環境:VB4.0 16ビット
OS:WINXP

DIR関数にロングファイル名を使うとエラー75になるんだけど、正常終了するようにできませんか?
もしくは8.3形式に変換する方法とか…
12デフォルトの名無しさん:2007/05/21(月) 12:10:45
XPって16ビットの動作ってできたっけ?
互換モードで動く?
XPでVB4の開発はしないほうが良いと思う

関数の先頭に
on error goto xxx

関数の最後に
xxx:
を作って何か処理入れれば良いと思う

脳内VB6なんで動くかどうかわからんけど
1311:2007/05/21(月) 13:17:18
>>12
一応動いてます。巨大なシステムの一部なんで変えるわけにもいきません。
エラートラップで回避しても本来そのパスは正しいので…。
もう対応不可にしたほうがよさげな気がしてきました
14デフォルトの名無しさん:2007/05/21(月) 13:59:40
ショートファイル名に変換して扱う事は出来ないのかい?
1511:2007/05/21(月) 14:04:52
ショートファイル名にどうやって変換できますか?
karnel32は使えませんし…
16デフォルトの名無しさん:2007/05/21(月) 15:16:05
>>15
VBで出来るかどうかは知らないが、サンクというものがある。

http://www.google.co.jp/search?hl=ja&q=%E3%82%B5%E3%83%B3%E3%82%AF+16bit%E3%81%8B%E3%82%8932bit&lr=
17デフォルトの名無しさん:2007/05/21(月) 15:16:17
>>15
つ【GetShortPathNameA】

#kernel32が使えないXPってどんなのだよ
18デフォルトの名無しさん:2007/05/21(月) 15:17:40
GetShortPathName
って16BIT時代になかったっけか?
19デフォルトの名無しさん:2007/05/21(月) 15:30:44
FileSystemObjectが使えるだろ?
2011:2007/05/21(月) 16:27:23
GetShortPathNameをVB4(16bit)で使用できないんです。
Thunk使えばできそうな気がしますがすごく大変そうです…
FileSystemObjectはクライアントのOSが95だったりするんで使いたいけど使えないんです
こんなシステムぶっこわしてぇ…
21デフォルトの名無しさん:2007/05/21(月) 16:38:25
面倒ならショートファイル名を返すだけの32bitプログラムでも使えば
遅そうだが
22デフォルトの名無しさん:2007/05/21(月) 16:51:59
長ったらしいが、死ぬほど大変そうには思えない。
ttp://jet.breeze.jp/program/win16/thunk.htm
23デフォルトの名無しさん:2007/05/21(月) 18:06:49
>>8
つADODB.Stream
24デフォルトの名無しさん:2007/05/21(月) 19:57:07
前スレでVBには構造体は無いと言ったのに、相変わらず構造体
と言ってたな。
VBプログラマは学習能力が無いのか。
25デフォルトの名無しさん:2007/05/21(月) 20:25:30
本当に下らない質問なのだろうと予想していますが、どうか教えてください。
普段2005で学習しているのですが、6.0環境でESCを押した時に
[ Textbox1.text = "" ]この動作をさせたいのですが
どのように記述したらいいのでしょうか?

キーを押した時
if エスケープキーだったら then
[ Text1.text = "" ] 
end if
ではどうにもならず。
26デフォルトの名無しさん:2007/05/21(月) 20:51:45
>>24
ここは雑談スレではないのに相変わらずスレ違いのカキコするんだな
VBプログラマは知らんが、少なくとも24は学習能力が無いのは確かだw

>>25
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyEscape Then
Text1.Text = ""
End If
End Sub
ただし、同じフォーム上にCancelプロパティがTrueのCommandButtonがあるとイベントが発生しない
2725:2007/05/21(月) 20:57:14
>>26
Cancelプロパティについて読んできました。
ESCキーはこんなところでも使われていたのですね。勉強になりました。
質問する前に別のキーに割り当てて試して見ればお手を煩わせなかったのかと思うと
赤面する思いです。
ありがとうございました。
28デフォルトの名無しさん:2007/05/21(月) 21:01:52
>>26
VBに無い構造体を語るのがスレ違いのカキコだ。
そんなこともわからないお前は学習能力無しだな。
29デフォルトの名無しさん:2007/05/21(月) 21:33:06
>>20
>クライアントのOSが95
あなた>>11で「OS:WINXP」って書いてるでしょ
回答してくれてる人に失礼よ?

>>28
はいはい。良かったね。もう帰っていいよ。
30デフォルトの名無しさん:2007/05/22(火) 00:22:30
31デフォルトの名無しさん:2007/05/22(火) 18:30:54
開発環境がXPで
動作環境が95で
アプリがVB4の16ビットなんだよね?

それでXPで開発してて(XPで)パスが取得できない
ってこと?
XPではパス取得できないけど95では取得できるのでは?
それは試した?
32デフォルトの名無しさん:2007/05/22(火) 22:33:57
VB6.0 SP6の環境で、レコードセットで、postgresのDBテーブルのbool型を取得した時に、
同じレコードのカラムにアクセスしているにもかかわらず、返ってくる値が1だったり0だったりまちまちです
plsqlでレコード確認すると'f'か't'かできちんと格納されています。
VBで取得するときは、なにか加工が必要なのでしょうか?
スレ違いかもしれませんが、よろしくお願い致します。
33デフォルトの名無しさん:2007/05/23(水) 09:12:35
むしろそれをBooleanに格納してどうなっているんだ?
毎回Bool型に格納して結果が違うのか?

1とか0とかではんだんしないほうがいい
3432:2007/05/23(水) 22:41:39
初回取得時にmovefirstしてたのが原因でした
原因はわかりましたが、理由は不明です
35デフォルトの名無しさん:2007/05/24(木) 12:26:46
>>34
ODBCドライバの不具合かもしれません。
ポスグレスレで聞いた方がいいでしょう。
あちらで聞くときはちゃんと環境を書いてね。
36デフォルトの名無しさん:2007/05/24(木) 16:20:44
[ファイルを開く]ダイアログ・ボックスを表示するプログラムはどうすればいいんでしょうか?

コモン・ダイアログ・コントロールを使わずにプログラムだけで処理をしたいのですが、
解説がされてるHPでもあれば教えてください。
37デフォルトの名無しさん:2007/05/24(木) 16:34:33
>>36
速攻出てきたけど。
もっとググレカス

ttp://www.bcap.co.jp/hanafusa/VBHLP/Fileopen.htm
38デフォルトの名無しさん:2007/05/24(木) 16:37:19
>>37
すんません
ありがとうございます
39yo1:2007/05/24(木) 16:40:48
RS232CのDS信号を制御したいのですが、可能でしょうか。
可能ならば、その方法を教えて頂けないでしょうか。
よろしくおねがいします。
40yo1:2007/05/24(木) 16:44:13
SD信号の間違いでした。
よろしくおねがいします。
41デフォルトの名無しさん:2007/05/24(木) 16:59:54
自在にON/OFFはできませんよ
42yo1:2007/05/24(木) 17:19:47
>>41
そうですか残念です。
ありがとうございました。
43デフォルトの名無しさん:2007/05/24(木) 18:33:15
810から805を
810-805と表記してある文があります。

810-805を
810.809.808.807.806.805に分けるには
どのような構文が考えられますか?
44デフォルトの名無しさん:2007/05/24(木) 18:47:06
続けてすみません

先ほどの追加になるのですが
部屋番号が815.812.810-805.801のように入力されていた場合
部屋の数を数える方法があれば教えてください。
45デフォルトの名無しさん:2007/05/24(木) 19:35:06
エレベーターで8階に上がって一部屋づつ数えればいいと思うよ
46デフォルトの名無しさん:2007/05/24(木) 19:55:26
>>44
815.812.810-805.801
これで部屋数いくつなの?












っていうのが頭でわかればそれをプログラムにするだけだと思うヨ
47デフォルトの名無しさん :2007/05/24(木) 20:01:50
>>43
色々方法はあるし、どういう感じなのかは分からないけど、
815.812.810-805.801がText1に入ってるとするね。

Dim str As String
Dim s() As String
str=Text1.Text
s=split(str,".")

これで配列Sには(815)(812)(810-805)(801)が入る。
それで配列を一つずつ"-"が入ってないかを調べて、入っていたら、
"-"で文を分解して…あとは考えて。
これが分からないと…VBはまだ早いのでは?
48デフォルトの名無しさん:2007/05/24(木) 22:26:41
>>37
おまえツンデレさんだろ?w
49デフォルトの名無しさん:2007/05/24(木) 22:29:07
810-805
これは同じ階だけだと仮定すっと
810-805 +1
だわなぁ・・・

しかしなんという素人作成部屋管理システム・・・
5043:2007/05/24(木) 22:57:12
ありがとうございました
5137:2007/05/25(金) 00:57:02
>>48
何よ、簡単に見つかるじゃない
もっとちゃんと調べなさいよ

ありがとうって、な…なによっ
あんたのためなんかじゃないんだからね!
52デフォルトの名無しさん:2007/05/25(金) 18:49:42
エクセルの項目をVBに取り込みたいのですが
参考程度になるHPはありますでしょうか?
53デフォルトの名無しさん:2007/05/25(金) 18:58:21
ググれば相当見つかる
54デフォルトの名無しさん:2007/05/26(土) 09:29:55
エクセルがインストールされていない環境でも使えるようにするのは面倒だがね
55デフォルトの名無しさん:2007/05/26(土) 11:59:06
>>54
俺その方法知らないんで良かったら・・・・
56デフォルトの名無しさん:2007/05/26(土) 13:30:20
Excelを買ってもらえるよう説得する
これが面倒
57デフォルトの名無しさん:2007/05/26(土) 22:43:59
DTPickerを二つ使って入力した日付の大小を比較したいのですが、
VBで日付の大小を比較するにはどうすればよいのでしょうか?
If DateValue(DTPicker(0).Value) > DateValue(DTPicker(1).Value) Then
のように比較しても値が上手く判定できません。
よろしくお願いします。
58デフォルトの名無しさん:2007/05/26(土) 23:20:08
いったん1970年からの秒数に直して比較。
ただし2038年を過ぎるとバグる。
59デフォルトの名無しさん:2007/05/26(土) 23:28:08
タイムシリアル化、といいたいんだろうけど
そんな小細工しなくても、ベタにやったって大した労力でもないだろう。

年、月、日(必要ならさらに時間、分、秒)と順に比較するだけじゃないか。
60デフォルトの名無しさん:2007/05/27(日) 01:29:13
今現在日本はクリックで世界と戦っています。
日本は現在1位ですが、2位のハンガリーに詰められています。
どうやらハンガリーにはとてつもない、日本の技術の先を行くツールがあるのかもしれない。
 
そこで日本も新兵器を作ろうと思っています。
それには、皆さんの力が必要不可欠です。期限は2日、今月の30日にゲームは終了します。
 
皆さん、お願いします。
 
【日本VSハンガリー】一番クリックした国が優勝click80【超接戦】
http://wwwww.2ch.net/test/read.cgi/news4vip/1180180150/

ひたすらクリック
http://www.clickclickclick.com/default.asp

まとめサイト
http://www33.atwiki.jp/clickvip/
61デフォルトの名無しさん:2007/05/27(日) 01:39:52
コピペ君って馬鹿だな、まで読んだ。
62デフォルトの名無しさん:2007/05/27(日) 10:29:29
>>57
format$(Time1, "yyyymmddhhnnss")>format$(Time2, "yyyymmddhhnnss")
63デフォルトの名無しさん:2007/05/28(月) 10:58:21
ファイル名の取得に関する質問です

strFileName = Left$(tOpenFileName.lpstrFile, InStr(tOpenFileName.lpstrFile, vbNullChar) - 1)

これでファイルの全体の名前は取得できますが、
ファイル名のみを取得する場合はどうしたらよいででしょうか?
64デフォルトの名無しさん:2007/05/28(月) 11:41:44
素直にFilesystemObjectつかったほうがらくだと思うぞ?

ファイル名を取りたいなら一番右にあるパス区切り文字から右の文字取ればいいだけだろ

VB6ならInStrのリバースつかって最初にパス区切り文字が見付けられるし
65デフォルトの名無しさん:2007/05/28(月) 16:24:21
コントロール配列の要素への参照をWithEventsに格納できない不具合に今更はまった
ドキュメントに記載されない糞仕様が他にもどれだけある事やら
66デフォルトの名無しさん:2007/05/30(水) 07:17:35
capicomっていう暗号化のdllについて質問です。
VBSで使おうと思っています。
暗号方式AES128bitを指定して、パスワードを指定することができる
ことは確認しました。
ブロックモードをCBCにしてIVを指定したいのですが、マニュアルにそれらしき
プロパティが見つかりません。
設定方法ご存知でしたら教えてください。
67デフォルトの名無しさん:2007/05/30(水) 18:43:59
ExcelのデータをFlexGridに読込みたいのですが、
Excelのデータは毎回変わり、何件あるのかは不定です。

Excelのデータの数に合わせて、グリッドの数も増やしたいのですが、

一度Excelのデータを全て読込み→
データの数を数える→
グリッドの数を調整する→
データを読込み→
Excelからグリッドへデータ入力
といった形しかないのでしょうか?

できれば
Excelのデータを1件読み→
グリッドを1件増やしデータ入力→
繰り返し
といった形にしたいのですが不可能でしょうか?
68デフォルトの名無しさん:2007/05/30(水) 19:08:03
>>67
後者では行列を変更する回数が増えるのでパフォーマンスが悪くなると思う

前者の方法で大方いいと思うけど

×
一度Excelのデータを全て読込み→
データの数を数える→
グリッドの数を調整する→
データを読込み→
Excelからグリッドへデータ入力


一度Excelのデータを全て読込み、変数や、配列・コレクションに保持→
データの数を数える→
グリッドの数を調整する→
保持したデータからグリッドへデータ入力

これではダメかな?
69デフォルトの名無しさん:2007/05/30(水) 23:05:19
>>65
クラスが書けない糞プログラマー乙。
70デフォルトの名無しさん:2007/05/31(木) 00:21:00
VB6 SP6のMSフレキシブルグリッドで、ドラッグアンドドロップで
セルの内容を移動させたいのですが、実現方法がわかりません。
どうすればよいか、ご教授お願い致します。
71デフォルトの名無しさん:2007/05/31(木) 00:31:46
>>69
循環参照になるのが気持ち悪いけど
デコレータクラスにコントロールの参照を持たせたて
フォームから冗長なコードを省きたかったんだが

ユーザーコントロールで似たような事ができるけど異なるプロジェクト間でのカット&ペーストに無駄手間がかかるから避けたい
72デフォルトの名無しさん:2007/05/31(木) 06:58:05
VB5.0でサーバーが複数のクライアントから接続要求された時新たなWinsockを生成する方法がわかりません
1.管理テーブルから未接続の場所を探す
2.→未接続の場所をiに設定
Load Winsock2(i)
Winsock2(i).Accept rewuestID
3.管理テーブルの接続の場所にtrueを入れる

1 2 3 教えてください
73デフォルトの名無しさん:2007/05/31(木) 07:12:42
>>72
とりあえずwinsockコントロールのバグな
http://support.microsoft.com/kb/171843/ja

で、質問(?)の方だけど
教えるも何も自分で納得してる日本語だと思うんだが、何か疑問に思うところがあるのか?
74デフォルトの名無しさん:2007/05/31(木) 07:17:57
>>73
すいません1.2.3.の言葉をどうプログラムにすればいいかわからないんです
75デフォルトの名無しさん:2007/05/31(木) 08:59:42
>>68
ありがとうございます
76デフォルトの名無しさん:2007/05/31(木) 09:34:51
>>73
こんなバグあったんかー!!
どおりで・・・。orz
77デフォルトの名無しさん:2007/05/31(木) 11:01:39
>>74
全部じゃねーかwwwwww
ところで それを管理テーブル抜きにして固定の2つ,3つほどのクライアントとのやり取りで実装は出来るの?
まずはそこから攻めていかなきゃいけないと思うんだけど
78nobodyさん:2007/06/01(金) 13:12:26
久しぶりにVBでプログラムを組んでるのですが
DATAGridに標準でソート機能ってありませんでしたっけ?
HSHFLEXでしたっけ?
みなさんどうやってソート機能つけてます?
ご存知のかたいたらご教授願います。
79デフォルトの名無しさん:2007/06/01(金) 14:20:34
ソートはな無いんじゃね?
連結元のrecordsetでソートしてやりゃおk
80nobodyさん:2007/06/01(金) 15:58:06
昇降ボタン(Command)をつけてそこから、、DataGridいじるしかないですかね。
要するに、各列ごとにデータをソートしたいだけなんです。
webでいうとヤフーオークションみたいなイメージ。
81デフォルトの名無しさん:2007/06/01(金) 16:29:13
ヘタにVBでソートするよりDBから指定されたカラムでソートしなおしたものをRSに取り込むのが早そうだな・・・
いや、ケースバイケースだけど 大量のデータならその方が早そうなきがする

と横槍
82nobodyさん:2007/06/01(金) 18:09:16
結局▲▼のコマンドボタンつけてDBからソートしてもってきて
GRID表示させました。
どうもありがとん!
83デフォルトの名無しさん:2007/06/02(土) 16:29:35
6.0にてマルチディスプレイ環境の
片方のディスプレイを使用不可にしたい
(画面のプロパティ→設定→windowsデスクトップをこのモニタ上で移動できるようにする(チェックをはずす)の操作)
のですが、可能でしょうか?
84デフォルトの名無しさん:2007/06/03(日) 11:51:56
APIでそんなのあったっけ?
APIにあればいけるさ
85デフォルトの名無しさん:2007/06/04(月) 21:54:06
ちょっと調べ物があって、古い参考書開いたら、
ランダムファイル処理のサンプル画面で、
「ZARD 永遠 5:13」
って出てきた。
歌手・曲名・演奏時間を1レコードとして扱う例だった。


少しせつなくなった。
86デフォルトの名無しさん:2007/06/04(月) 22:21:21
visual basic 6.0でリストボックスに表示されている数値をクリックして選択したものだけの最大値を調べるプログラムを作りたいのですが全く方法がわかりません。
誰か教えて下さい。
87デフォルトの名無しさん:2007/06/04(月) 22:37:35
>>86
リストボックスの1つだけを選択してその値をとることができるようにしてみよう
まずはそれからだ
8886:2007/06/04(月) 22:51:21
Private Sub List1_Click()
Dim i As Double
  List2.Clear
For i = 0 To List1.ListCount - 1
If List1.Selected(i) = True Then
List2.AddItem List1.List(i)
End If
Next i
End Sub
こんな感じでList2に加えていく事はできるんですけど、何か別の配列みたいなのに格納していきたいのですが…
89デフォルトの名無しさん:2007/06/04(月) 22:54:24
86に便乗する形で質問したいのですがよろしいでしょうか?

86と似たようなプログラムを作っているのですが、listboxの要素を関数に渡す方法がわかりません。
選択した物を合計する等は作れたのですが、これを関数を用いて作れとお達しを受けまして。

とりあえずAverage(1,2,3)で2が出てくるような関数は作れたのですが、どうすればlistboxの中の不定数の要素を関数に引き渡すのかがわかりません。
このような質問の仕方で伝わるものかとも思いますが、先輩方の御知恵を拝借したく…

どうぞよろしくおねがいします。
9086:2007/06/04(月) 22:57:04
>>89
ああ私もそんな感じの物が作りたいんです。要素数が不定だからできないんですよね。
9189:2007/06/04(月) 23:01:03
>>90
配列変数を宣言してlistboxの値をloopで回して格納していって、それを直接関数に渡せばいけるんじゃ?
とかも考えましたがうまく動かず。

それ以前に配列に要素を足す方法すら合ってるのかが謎で。

私ごときにはお手上げです。



9286:2007/06/04(月) 23:44:43
>>91

> 配列変数を宣言してlistboxの値をloopで回して格納していって、それを直接関数に渡せばいけるんじゃ?
> とかも考えましたがうまく動かず。

ちなみにそれはどんな文ですか?
93デフォルトの名無しさん:2007/06/05(火) 00:33:11
94デフォルトの名無しさん :2007/06/05(火) 01:02:26
VB6はあまり配列が上手でないというか、使いやすいものではないと聞いたけど…。

選択した数値を文字列に変換して、カンマで区切って、最後にSplit関数で
配列にして、その関数に配列を渡して計算させるとか?
95デフォルトの名無しさん :2007/06/05(火) 01:15:20
Collectionを使えばいいと思うけど…。
リストボックスの中は数値で、選択したものを配列(コレクション)に入れて
例えば、合計とかさせればいいんでしょ?
96デフォルトの名無しさん:2007/06/05(火) 01:26:21
94と95は、どっちが86、89なんだ?
9786:2007/06/05(火) 06:16:22
どっちも私ではありません
9886:2007/06/05(火) 06:46:27
というか6.0ではCollectionどうやってつかうのかいまいち分からないんですけど
99デフォルトの名無しさん:2007/06/05(火) 08:48:32
>>88
動的配列変数を宣言して、
ループの直前かもしくは中でReDim使って要素数足してけばおk
100デフォルトの名無しさん :2007/06/05(火) 09:38:09
リストの選択要素の合計を求めるのだったらこんな感じかな?
横槍だけど。

Private Sub Command2_Click()
Dim a As Integer 
Dim b() As Integer '配列
Dim c As Integer  '要素数
Dim sum As Integer 

For a = 0 To List1.ListCount - 1
 If List1.Selected(a) = True Then

 ReDim Preserve b(c)
 b(c) = List1.List(a)
 c = c + 1
 End If
Next
sum = SumCalc(b) ’配列を渡して要素数の合計を返す
End Sub

Private Function SumCalc(ByRef b() As Integer) As Integer
Dim f As Integer
Dim sum As Integer

For f = 0 To UBound(b)
 sum = sum + b(f)
Next

SumCalc = sum
End Function
101デフォルトの名無しさん:2007/06/05(火) 09:55:08
グリッドについての質問です。

グリッドのセルをクリックした時にその行がすべて選択状態(色が変わる状態)に
するにはどうしたらよいでしょうか?
102デフォルトの名無しさん:2007/06/05(火) 10:27:33
グリッドにも色々種類がある訳だが。
103デフォルトの名無しさん:2007/06/05(火) 11:15:49
>>101
エスパーレス
クリックしたRowの位置がわかるからFor文で
10486:2007/06/05(火) 18:05:23
>>100
ありがとうございました。何とかできそうなので参考にさせてもらいます。
105デフォルトの名無しさん:2007/06/06(水) 00:20:09
6.0でコマンドボタンをクリックした時に、任意のキーを押す動作をさせることはできますか?
コマンドボタンをクリックしたらESCキーが押されて、それによってESCキーのキープレスイベントが起きてくれるような動作をさせたいのですが。
106デフォルトの名無しさん:2007/06/06(水) 00:25:17
キーを送ればいいしイベントを呼んでもいいんじゃない?
107105:2007/06/06(水) 00:33:33
『キーを送る』が、まずよくわからず
コマンドボタンを押した時にkeyAsciiに任意の値を入れて、
それを何に渡せばいいのかがわからなかったのです。

あと、仮にESCキープレスの下に動作をを書いてあったとして
それをどう呼び出すのかもわかりません。

最近VB始めたもので何をどうすればいいのか。
コンピュータに日本語通じて欲しいです・・・
108デフォルトの名無しさん:2007/06/06(水) 00:39:49
そのままなんだがな
キーを送る SendKeys
イベントを呼び出す Call Hoge_KeyPress(
109デフォルトの名無しさん:2007/06/06(水) 01:15:30
>>108
頭固いな
自分自身にキー送る必要なんて、そもそもないだろ
キーダウンのイベントハンドラを呼びだせばいいじゃんw
110デフォルトの名無しさん:2007/06/06(水) 01:21:50
>>109
何で俺に言うんだよ
質問に答えただけだろ
111デフォルトの名無しさん:2007/06/06(水) 01:37:21
>>109
なにそのオナニー
そもそも、イベントが発生される以外で”呼び出される”のはイベントハンドラって言わないんじゃないの?
もっと別の言い方があるでしょ

で、元質問者にヒント
「コマンドボタンを押したら、コマンドボタンにフォーカスが移る」のを忘れないように。
112デフォルトの名無しさん:2007/06/06(水) 01:53:45
>>111
別の言い方について詳しく
113デフォルトの名無しさん:2007/06/06(水) 10:08:38
ハンドラじゃねぇってことだろw
114デフォルトの名無しさん:2007/06/06(水) 10:25:03
ちょいとどこに質問したらいいかわからなくって聞きたいことがあるんですが、エクセルで画像を挿入したときにあらかじめ挿入する画像の原稿サイズで表示するんじゃなくてこっちで設定したサイズにして挿入する方法はありますか?
教えてください。すごくお願いします。
115デフォルトの名無しさん:2007/06/06(水) 10:36:27
断る
116デフォルトの名無しさん:2007/06/06(水) 10:38:02
>>114
モーグってサイト見ろ
117デフォルトの名無しさん:2007/06/06(水) 12:12:19
>>116さん

いい情報をありがとうございました。

>>115は亀梨和也とアナルセックスをして死ねばいいのさ。
118デフォルトの名無しさん:2007/06/06(水) 12:49:58
>>117
むしろお前がシネヨ?カス
せめてググってからこい 無能者が
119デフォルトの名無しさん:2007/06/06(水) 13:04:53
>>118

m9(^Д^)カッコワルwwwww
120デフォルトの名無しさん:2007/06/06(水) 13:12:31
Private Sub MSFlexGrid1_Click()
MSFlexGrid1.SelectionMode = flexSelectionByRow
End Sub

これでどこのセルをクリックしても行全体が反転されるはずなのですが
一番最初の行が反転されません。
一番最初の行も反転させるためにはどうしたらよいでしょうか?
121デフォルトの名無しさん:2007/06/06(水) 13:56:34
一番最初がヘッダーの事だったら死なす
122デフォルトの名無しさん:2007/06/06(水) 14:13:28
エスパーレス

(´・ω・`)つ【FocusRect】
123デフォルトの名無しさん:2007/06/06(水) 14:28:13
>>122
ありがとうございます

.FocusRect = flexFocusNone
を追加すると

クリックしたときには綺麗に一行反転するのですが
クリックしていない状態でも
左上のセルが一つ反転してしまいます。

初期状態で反転させない方法はありますか?
124デフォルトの名無しさん:2007/06/06(水) 14:42:29
>>123
その様子だと次々と出てきそうだから先に言っておくけど
MSFlexGridのプロパティと動作ぐらいは自分でテストしな

なぜ初期状態で反転してるか考えれば答えが出るでしょ
125デフォルトの名無しさん:2007/06/06(水) 21:01:53
VB6.0で暗算を行なうシステムを作りたいんですが
全く初心者なため勝手が全然分からなくて、ネットで
調べてもそれらしきものが見当たりませんでした・・・
例えば、一つ計算式がでてきたら自分でその答えを入力し
正誤に関らず次の式が表示されまた答えを入力する・・・
というのを繰り返すようなものを作りたいのですが
もし可能ならばヒントでも頂けると助かります
よろしくお願いします
126デフォルトの名無しさん:2007/06/06(水) 21:14:18
>>125
その与えられる数式を解析すれば行けるだろうけど
どのレベルまでを求めるかによると思うけどなぁ…・
単純な四則演算レベルならまぁ…・ 小数点とかはいると少し難しいんじゃないかな?

とりあえずどんな数式が出てきて どんな動きすればいいかを
自分の求めるレベルでサンプルを書き込んでみては?

いっちゃん簡単なので行けば
******
●+1=5
という数式があり ●には数字が入る
最終てきに
●=4という答えがほしい
*****
こんな感じで
127デフォルトの名無しさん:2007/06/07(木) 00:48:57
>>125
時間がある人なら、とりあえずテキストエディタとか作ってみるといいんじゃない?
システムの設計の方法とか方針とか少しは見えてくると思うよ

逆に設計についてサッパリな状況なら何も作れないってことが分かるだろうし
128デフォルトの名無しさん:2007/06/07(木) 06:22:20
Rnd関数か何かを使って任意の計算式を創出できるようにしたらいいかも。
VBの達人なら、この程度のプログラミングなど簡単すぎて興味も湧かないでしょうが、
いかに、短くてエレガントなコードを書くかには興味を持つかも知れん。
129デフォルトの名無しさん:2007/06/07(木) 09:47:53
>>128
確かにアルゴリズムは考えるのが楽しい
が・・・・ある程度いったら飽きるんだよorz
130デフォルトの名無しさん:2007/06/07(木) 10:14:13
ESCキーで終了させるにはどうしたらよいですか?
131デフォルトの名無しさん:2007/06/07(木) 10:15:39
ほんの一瞬、「VBで暗算を行う」の意味がわからんかったわ。
132デフォルトの名無しさん:2007/06/07(木) 10:35:32
>>130

よく知らんが
フォームにでもKey Pressのせて
if key asciiがEsc
End 'Unload me
end if

じゃだめですか
133デフォルトの名無しさん:2007/06/07(木) 10:51:55
>>125
式作成部分だけ造ったが、こんな感じか?
134デフォルトの名無しさん:2007/06/07(木) 10:53:09
135デフォルトの名無しさん:2007/06/07(木) 12:02:30
>>133
おまっ・・・・Cかよwwww
式は自動作成なのかな?

俺が予想してるのはこんな流れ

前提:式のリストがある(いわゆる算数の穴埋め問題集的な)
X+2=5 Xを求めよ みたいな

流れ
1.式のリストから式を取得(あとはユーザが選択したりとか)

2.その式を分析して解を求めるような値を算出(方程式解くような感じで)
  (例だと:X=5-2 X=3)

1に戻る
136デフォルトの名無しさん:2007/06/07(木) 19:42:07
>>135
予め式のリストが用意されてるんなら、
リストインデックスから解を出力すりゃいいだけじゃね?
解も配列で内部的に持っとけばいいだけだし。
137デフォルトの名無しさん:2007/06/07(木) 22:04:08
>>135
>125を見た感じ、延々と繰り返すってことは、
有限な感じがするその前提は使えないんじゃね?


つか、式を自動生成する時ついでに、
内部的に解を求めとけばいい気がする。
暗算すんのはユーザなんだろ?
システム的にはただ淡々と計算してけばいいだけ。

悩む点は特に無さげ。
138125:2007/06/08(金) 00:01:50
遅くなってすいません
134をコピーしてみたんですが、エラーが出まくって上手くいきません
多分フォーム内に全部直接貼り付けただけで、変数を宣言する場所とか
が自分でよく分かってないからだと思いますが・・・
全く素人すぎてすいません・・・
139デフォルトの名無しさん:2007/06/08(金) 00:17:32
>>138
Cでもいいわけか?
VBじゃなくって?

あのソースはVBではないぞ・・・・・
140125:2007/06/08(金) 00:23:13
>>139
そうなんですか?
自分はVB作りたいです
今日乱数を発生させてどうのこうのとかやってたけど
全く上手くいきませんでした・・・
141デフォルトの名無しさん:2007/06/08(金) 00:28:25
Cを全く知らない俺が変換してみたw
Private Function fmotome(n As Integer) As Integer
Dim Res As Integer
Select Case n
Case 0
Res = 0
Case 1
Res = 1
Case Else
Res = fmotome(n - 1) + fmotome(n - 2)
End Select
fmotome = Res
End Function

Private Sub Form_Load()
Dim Temp As String
Temp = InputBox("Nの値を( ゚д゚)クレ", "数値入力")
If IsNumeric(Temp) = False Then
MsgBox "数値入れろ", "カス"
Unload Me
End If
Dim Res As Integer
Res = fmotome(CInt(Temp))
MsgBox "Fnの値は'" & CStr(Res) & "'"
End Sub

もすこしやりたいことを具体的におしえてはくれんか?
乱数を発生させるのは簡単だがそれを使ってどうするのか とかさ
142デフォルトの名無しさん:2007/06/08(金) 00:35:52
ちなみに上限と下限決めて乱数作る場合こんな感じだったとおもう
使い方はあってると思うけど…

下限1 上限10

dim hi as integer
dim Lo as integer

Hi = 10
Lo = 1
Ransuu = Int((hi - Lo + 1) * Rnd + Lo)
143デフォルトの名無しさん:2007/06/08(金) 00:38:06
ていうか、いまさらVB6〜を始めるな。
せめてC#かVB.NETにしろ。
144125:2007/06/08(金) 09:12:07
>>141
ありがとうございます
実は具体的に実現したい機能としては
画面上に2桁の加算を行なう数式が2つ表示されて、ユーザー側が計算して値が大きい方の式を選ぶと
その正誤がすぐに画面上でフィードバックされ、すぐにまた同じような暗算課題が画面上に表示され
同じことを30分とか決められた時間ひたすら繰り返されていくようなものです
考えて作ろうとはしてるんですが、まだ暗算機能されまともに作れなくてやばいと
いった状況ですね・・・
145デフォルトの名無しさん:2007/06/08(金) 09:15:40
http://hp.vector.co.jp/authors/VA009756/prog/lab/
ここの十字カーソルのように、デスクトップ(というかスクリーン)の最前面に
文字や画像を描画するにはどうすればいいのでしょうか?
146133:2007/06/08(金) 09:21:42
勘違いさせてしまった様だが、俺が創ったのは
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=3606
のレス21な
147デフォルトの名無しさん:2007/06/08(金) 09:47:19
>>145
見てないから分からんのだが、
ひょっとしてAPIのSetWindowPosのことか?
148デフォルトの名無しさん:2007/06/08(金) 13:28:14
>>144
ふむふむ・・・
俺設計力とかはあんまないから今一歩かもしれんけどさ

1. 2桁の(+-の)数値の和・差の式をランダムで自動生成して
2. その自動生成された式を自分の内部で計算して 大きいほうの数を持つ式を選べば正解として処理

1.2を決められた時間ないひらすら繰り返す
で点数とか正誤率表示するような感じなのかな?
149デフォルトの名無しさん:2007/06/08(金) 13:47:37
>>146
ここまで作ってあげてる優しさに俺は脱帽した
質問者が理解できるかどうかはしらんがw
150145:2007/06/08(金) 14:54:37
>>147
SetWindowPosはウィンドウの位置やサイズを変更するAPIですよね。
もしかして常に最前面にしてウィンドウを完全に透明にすればできるということでしょうか?

やりたいことは、↓これと同じようなことなのですが…
http://www.forest.impress.co.jp/article/2007/04/10/crosshair.html
151デフォルトの名無しさん:2007/06/08(金) 15:21:40
そのソフトの事は知らないが、簡単に作るのであれば、
・二つウインドウを作り最前線にもってくる
・一つは縦が1ドットx横がデスクトップの横サイズで。もう一つは(ry
・マウスカーソルの位置に二つのウインドウを位置合わせ
こんな感じでできるべ?
152125:2007/06/08(金) 19:59:32
>>148
だいたいそんな感じですね
正確には

1. 2桁の正の数のみの数値の和の式をランダムで二つ自動生成して
2. その自動生成された式を自分の内部で計算して 大きいほうの数を持つ式を選べば正解として処理

1.2を決められた時間ないひらすら繰り返す

で一回1ポイントとして終了後に合計得点と正答率を示す
ついでに可能だったら合計得点の今までチャレンジした人の中でのランキングも示す

というところまで作りたいんですが、プログラムの基礎もさっぱりな段階なので
全くダメといった感じです・・・

可能ならばどなたかに参考になりそうなアドバイスを頂きたいです
よろしくお願いします
153デフォルトの名無しさん:2007/06/08(金) 20:01:14
>>152

まずは>>133
が作ってくれてるのうごかしてみ?
154125:2007/06/08(金) 20:11:54
>>153
やってみたんですけどエラーが出て実効できないです・・・
多分自分が変数を宣言する場所とかを間違ってるのがいけないと思うんですが・・・
155デフォルトの名無しさん:2007/06/08(金) 22:07:20
>>154
VB6環境ないんでEXCEL2003のVBAでやってみたがちゃんと動いてくれたぞ?

あれをモジュールにはっつけて

Private Sub CommandButton1_Click()
Call Eq_Sample1
End Sub

Private Sub CommandButton2_Click()
Call Eq_Sample2
End Sub

これでちゃんと数式ができてるいいサンプルだと思うけどなぁ?

どんなエラーがでてどこでエラーが起きてるか出来るだけkwsk書いて
ちょっとそっちで動かないソースここにはりつけてみないか?
貼り付けたのはもちろん>>146の言うとおり21レス目のVBソースが直書きしてあるやつだよな?
156125:2007/06/08(金) 23:05:39
今146のやつを標準モジュールに全部貼り付けて
実行するフォームにコマンド1,2を用意して155のソースを書いて実行したら
エラーは出なくなりましたが、画面に何の変化もないといった感じです・・・
標準モジュールに貼り付けるのが何か間違ってますか?
157デフォルトの名無しさん:2007/06/09(土) 00:04:57
>>156
なにも表示されないよ
ヒント Debug.Print
適当にラベルにでも表示してみれば?
158125:2007/06/09(土) 07:34:35
>>157
Debug.Print
というものを調べてみたらファイル操作というもので色々なことに
使われてるみたいだってことは分かったんですが
146のソースにどういう役割で導入すればいいかというのは分からないです・・・
可能ならばもう少しヒントを頂きたいです
159デフォルトの名無しさん:2007/06/09(土) 09:23:11
>>158
根本的に基礎を勉強しなきゃ話にならないとは思うけど
”イミディエイトウィンドウ”という所に文字を表示する機能がDebug.Print
>>146のソースの中にDebugPrintてあるのは確認用で実際のフォーム内には表示されない
なので表示するためにはラベルやテキストボックスに表示させる必要がある

ぶっちゃけどれ位かけるの?
ボタン押してラベルの文字と色を変更することくらいはできるの?
160デフォルトの名無しさん:2007/06/09(土) 11:19:36
むしろ今からVB6を「基礎から」勉強してどうする。
161デフォルトの名無しさん:2007/06/09(土) 14:50:50
>>160
会社によっては未だにVB5使ってるところもあるんだし、
勉強するのに時代遅れもなにもないんじゃない?

必要だから習得する。
必要なければ習得しない。

こんなもんでしょ?
162デフォルトの名無しさん:2007/06/09(土) 15:13:25
むしろこのスレの住人なら
もうバージョンアップしない「 完 成 さ れ た 」この言語を
一生使い続けるぐらいの気持ちで
163デフォルトの名無しさん:2007/06/09(土) 15:22:47
>>162
そこまでは愛せない俺ガイル
164125:2007/06/09(土) 15:36:26
>>159
遅くなってすいません
下の二行に書かれていることはできると思います

本当に簡単なことは多分できるのですが、例えば

Option Explicit

Public Enum ELEVEL
LV_PLS = 1
LV_MIN = 2
LV_MUL = 3
LV_DIV = 4
End Enum

Public Type TMATH
Level As ELEVEL
Max As Long
Min As Long
Length As Integer
Brackets As Byte
End Type

などのソースはいきなり見たことない書き方の連続で
何が何を意味してるとかが全く分からない状況です・・・
165デフォルトの名無しさん:2007/06/09(土) 15:49:48
>>164
そんな事すらいちいち教えなきゃいけないのか?
自分で調べる気は毛頭ないのか?
トイレまで他人が手伝ってもらわないといけないのか?
ふざけんなこの野郎
166デフォルトの名無しさん:2007/06/09(土) 15:51:25
>>164
基礎を勉強してからアプリなり何なり作るといいと思うよ。
処理云々以前の問題。
167デフォルトの名無しさん:2007/06/09(土) 15:58:10
EnumもTypeも調べられない程度の人間にプログラムは向いてないんだってばっちゃが言ってた!
168デフォルトの名無しさん:2007/06/09(土) 18:09:57
>正誤に関らず ・・
という部分が非常に気持ちわりいな
誰か、正誤判定出来るよう修正キボンヌ
169デフォルトの名無しさん:2007/06/10(日) 01:04:18
>>168
正誤判定はしてるんだろ?
指定された時間が経過したら正解率出すんだし。

答える度に毎回ヴィジュアル的に軽く表現させる程度なら
普通にやるもんだろーと思うが。

質問者が言ってるのは、
正解でも不正解でも次々と問題が表示されていくってことだと思うんだが。
170デフォルトの名無しさん:2007/06/10(日) 11:31:53
SMTPでメール受信するプログラムをVBで作成しようとかんがえているのですが、受信したメールをポップアップで表示するのは可能ですか?
171デフォルトの名無しさん:2007/06/10(日) 11:42:18
>>170
SMTPでメールを受信とは、サーバを作りたいと言ってるの?
172デフォルトの名無しさん:2007/06/10(日) 11:50:28
>>170
受信したメールは貴方がメールだと思っているだけで、実はタダの文字列なんじゃないか?
173デフォルトの名無しさん:2007/06/10(日) 12:00:44
いい感じに荒れてきた
174デフォルトの名無しさん:2007/06/10(日) 12:50:39
BSMTPの話?
175デフォルトの名無しさん:2007/06/10(日) 12:53:29
>>173
つ アロエ
  肌にいいらしいぞ
176デフォルトの名無しさん:2007/06/10(日) 13:14:50
このスレにSMTPは送信用のプロトコルだと勘違いしてるやつがいる。
177デフォルトの名無しさん:2007/06/10(日) 14:03:02
あげあしとり出現w
178125:2007/06/10(日) 16:15:19
取りあえず今自分なりの書き方でプログラムを作っていて
一個一個順を追って152に書いたことに近づけていっている感じなんですが
取りあえずフォームが開いたらランダムで一つの数式を表示しようということを
やろうとしていて

Randomize
Dim a As Integer
Dim b As Integer
a = 99
b = 10
Label1.Caption = CInt(Rnd(a) * 100)
Label1.Caption = CInt(Rnd(b) * 100)
Label1.Caption = CStr(a) & "+" & CStr(b)

と書いたんですが、これだとaとbの値が変化せずに99+10と表示されてしまい
値が固定化されてしまいます・・・
ランダムの効果を利かせるには何かソースが足りないんでしょうか?
179デフォルトの名無しさん:2007/06/10(日) 16:24:35
ワラタ
なんかこうなってくると釣りクサイよなwww
180デフォルトの名無しさん:2007/06/10(日) 17:08:23
初心者の俺でも分かる。
1行ずつ追っていけよww
181デフォルトの名無しさん:2007/06/10(日) 17:10:27
相手にするから付け上がる
182125:2007/06/10(日) 17:23:20
いや142さんのをヒントにやってみたつもりだったんですが・・・
2桁同士の加算にしたいから上限99、加減10に設定して
その値をランダムかしてa+bのところに表示
みたなイメージで書いたつもりです
183デフォルトの名無しさん:2007/06/10(日) 17:29:48
うるさい
だまれ
184デフォルトの名無しさん:2007/06/10(日) 17:35:17
(´・ω・)
185デフォルトの名無しさん:2007/06/10(日) 17:42:30
>その値をランダムかして
ってランダム化表示してるだけだろ?aとbは元の値のままぢゃん
186125:2007/06/10(日) 18:42:37
a = 99
b = 10
のすぐ下の
Label1.Caption = CInt(Rnd(a) * 100)
Label1.Caption = CInt(Rnd(b) * 100)
でランダム化して、その下の
Label1.Caption = CStr(a) & "+" & CStr(b)
でランダム化したa、bをa+bの形式で出力できると思ったのですが
どの辺がおかしいですか?
プログラムを色々前後させてやっても値が0になったりしてしまいます・・・
187デフォルトの名無しさん:2007/06/10(日) 18:48:48
ヘルプ使えよカス
Rnd()でググるなりしてもすぐ解決するだろうに
いちいちその程度のことを人に聞くなよタコ助が
188デフォルトの名無しさん:2007/06/10(日) 18:49:12
189デフォルトの名無しさん:2007/06/10(日) 19:35:21
>ランダム化したa、bを
ランダム化してねぇぇぇぇぇぇぇぇ!



...それともRnd()は呼び元で用意しているパラメータの値を書き換えるのか?
190125:2007/06/10(日) 19:49:48
すいません、調べてもあまり出てこないし
ヘルプも自分はインストールしてなかったし今手元にCDもないんです・・・

Dim a As Integer
Dim b As Integer
をDim arandom As Integer
とか色々書き換えてみましたが違うみたいで
Label1.Caption = CInt(Rnd(a) * 100)
Label1.Caption = CInt(Rnd(b) * 100)
でa、bをランダムかしてるのかなと思ったんですが
Rnd(a)とかの表現がおかしいですか?
191デフォルトの名無しさん:2007/06/10(日) 19:56:51
質問は手元にCDがある状態になってからにしてくれ
このままではお前のくだらない質問だらけでスレがいくつあっても足りない
はっきりいって迷惑なんだよ
192デフォルトの名無しさん:2007/06/10(日) 20:13:14
くだらないはないんじゃないか?
もともとVBに関する質問をするスレなんだから
初心者はホントに簡単なプログラムでも微妙なとこ
どうすればいいとかわからんもんだよ
お前も慣れるまではそうだっただろ?
何なら俺が125の実現したい機能全部書いてやってもいいけどね
193デフォルトの名無しさん:2007/06/10(日) 20:17:01
> Rnd(a)とかの表現がおかしいですか?
いいえ。
a,bの値を書き換えるようにしていないのがダメなだけです。
194デフォルトの名無しさん:2007/06/10(日) 20:18:56
>>192
125とあなたでメールでやり取りしてくれ
せいぜい125の辞書にでもなればいい
195デフォルトの名無しさん:2007/06/10(日) 20:32:38
とりあえずマニュアルを入手するのが第一。
これはVBScriptのだけど、VB6でも同じだからよく読んでみろ。
http://www.mhl.janis.or.jp/~winarrow/vbscript/htm/vbs176.htm
196デフォルトの名無しさん:2007/06/10(日) 20:33:34
だからF8キーで1行ずつやってどういう動きをするか見ればいいのに。
Label1.Caption = CInt(Rnd(a) * 100) で、
たとえばLabel1は55と出たとする。
その時のaの値は???  99だろ?
いい加減気づいてよ…。
197125:2007/06/10(日) 20:48:58
すいません、193さんのコメントで数式はランダムで
上手く出てくるようになりました
明日以降からはしっかりとMSDNをインストールして来れると思うので
最後に今日中にもう一つだけ教えていただきたいのですが
2桁の整数同士を加算したいから142をヒントにして
Ransuu = Int((hi - Lo + 1) * Rnd + Lo) をa、bに置き換えてみたんですが
一桁の整数がまだ出てきてしまいます
多分ここがポイントになってると思うんですが、この式は何を行うための
式なんですか?
198デフォルトの名無しさん:2007/06/10(日) 20:59:45
>>197
ステップ実行すりゃいくらでも分かるだろ
何故それをしない?

>>142の式はRansuuに1〜10の値をランダムに代入してるだけだ
199デフォルトの名無しさん:2007/06/10(日) 21:01:03
上限と下限の間の乱数を得る式
200125:2007/06/10(日) 21:01:57
>>198
ステップ実行って何ですか?
201デフォルトの名無しさん:2007/06/10(日) 21:03:58
やってみればわかる
202デフォルトの名無しさん:2007/06/10(日) 21:31:01
例えばコマンドがクリックされるたびに
数字が一つ増えていくといったような機能は
VBで作ることは可能ですか?
203デフォルトの名無しさん:2007/06/10(日) 21:32:23
はい
204デフォルトの名無しさん:2007/06/10(日) 21:46:41
Wubi - Ubuntu installer for Windows
http://pc11.2ch.net/test/read.cgi/software/1181387720/l50
205デフォルトの名無しさん:2007/06/10(日) 22:07:53
あまりにも初歩的な質問はこっちの方が親切に答えてくれるぞ

くだすれVB6.0以前(超初心者向け)
http://pc11.2ch.net/test/read.cgi/tech/1165574205/

住人は共通化もしれんが
206デフォルトの名無しさん:2007/06/10(日) 22:10:36
このスレだって、相手のためになるように親切に答えてるじゃないか。失礼だな。
207デフォルトの名無しさん:2007/06/11(月) 00:42:45
1から全部教えるのは可能だが、
それじゃ人に教えられたことしか出来なくなるからな。

理解せずに"書き方"としてコードを覚えて貰っても意味がない。
同じことの繰り返しになるだけ。
208デフォルトの名無しさん:2007/06/11(月) 09:16:10
これ一度わんくまで質問してもらいたいな
どんな素晴らしい回答が帰ってくるのか
いや・・・それすらないかもしれんw

>>125
現在全てのソースで現状何処までできて何処がどう理解できないのか
折角だからkwsk書いてみ?

それの判らない事は教えないと思うけど調べる為の術はきっと優しいお兄さん方が教えてくれるかもしれないw
でも・・・・判らない事を適切に調べることができるのもPGとしてのスキルだと思うぜ
209デフォルトの名無しさん:2007/06/12(火) 11:01:28
>>202
こんな感じか?
このくらいVBでなくとも余裕だと思うが。

Private m_lCnt As Long

Private Sub Command1_Click()
m_lCnt = m_lCnt + 1&
Label1.Caption = CStr(m_lCnt)
End Sub

Private Sub Form_Load()
m_lCnt = 0&
Label1.Caption = CStr(m_lCnt)
End Sub
210デフォルトの名無しさん:2007/06/13(水) 14:24:13
VB6でテキストボックスからフォーカスを他へ移さないようにしたいのですが、どうしたらいいんですか?
後、カーソルを左端じゃなくて右端に固定したいのですが…
211デフォルトの名無しさん:2007/06/13(水) 15:41:21
なんのためのプロパティだ。
212デフォルトの名無しさん:2007/06/13(水) 15:54:20
どうして複数のスレで聞くんだろうな
答える人間は一緒なのに
213デフォルトの名無しさん:2007/06/13(水) 16:56:23
スペシャルヒント
ろすとふぉーかす
せっとふぉーかす
あらいんめんと
214デフォルトの名無しさん:2007/06/13(水) 22:01:45
ご冗談を。
215デフォルトの名無しさん:2007/06/14(木) 08:29:36
validateでいいんでね
216デフォルトの名無しさん:2007/06/14(木) 19:37:29
エクセルのデータを読込むために以下のスクリプトを作りました。

Set pExlApp = CreateObject("Excel.Application")
Set pExlBook = pExlApp.Workbooks.Open(strFileName)

1段目は正常に動くのですが
2段目が
OfficeXP時は正常に動き
Office2000時にエラーがでてしまいます。

どのような理由が考えられますか?
217デフォルトの名無しさん:2007/06/14(木) 20:41:52
2つ質問です。

自作のActivX DLL を exe から呼んでるんですが、

1、プロジェクト→参照 でDLLを参照すると、DLLの配置ディレクトリを
  フルパスで設定しているように見えるんですが、この認識はあってますか?

2、他のマシンに自作プログラムを持っていくとき、exeとdllの配置場所を任意に
  したいのですが、どうしたら可能ですか?

218デフォルトの名無しさん:2007/06/15(金) 00:09:41
>>217
1、ActiveXコンポーネントはレジストリ登録して使えるようになる訳だから、
当然場所はフルパスで設定されている。

2、ActiveX DLLはどんな場所にインストールしようと構わない。
インストーラでActiveXコンポーネントを登録をするようにするだけ。
219デフォルトの名無しさん:2007/06/15(金) 00:36:15
>>218
なるほど、ありがとうございます。
うすうす勘付いてはいましたが、やっぱレジストリ登録するのか。

ということは、DLLの位置は気軽に移動することはできないってことですね?
Win32APIのLoadLibrayEx だといくつかのサーチパス候補のどれかにあれば
いい、・・・というようなやり方は無理と。
220デフォルトの名無しさん:2007/06/15(金) 00:37:52
× いい、・・・というようなやり方は無理と。
○ いいという仕様ですが、そういうやり方は無理と。
221デフォルトの名無しさん:2007/06/15(金) 05:57:23
Msxml2.XMLHTTPとかWinHttp.WinHttpRequest.5.1などを使用して
Webページをリクエストした時に
送られてくるクッキーを取得したいのですが
これは可能なのでしょうか?
222デフォルトの名無しさん:2007/06/15(金) 09:56:07
質問ですが
例えば、コマンドボタンが3つありそれをある規則に従って
順番にクリックしてもらった後に次の処理が実行される
といったコードを書きたいんですが、
コマンドが1、2、3と順に押されたことの判定と
最後のコマンドが押された瞬間に行わせたい処理はどこに記述すればいいのでしょうか?
コマンドが押される順番は毎回決まってないといった感じなので、
特定のコマンド内に書くやり方ではうまくいかないと思うのですが
何かやり方をご存知の方がいたらご教授よろしくお願いします
223デフォルトの名無しさん:2007/06/15(金) 10:35:08
>>222 こんないい加減なコードとかどうよ?www 動作は環境ないから試してないけど
private m_ButtonFlag(1 to 3) as long
private m_cnt as long

private sub form_load
 m_cnt = 0
end sub
private sub Button1_click
 m_ButtonFlag(1) = cnt+1
end sub
private sub Button2_click
 m_ButtonFlag(2) = cnt+1
end sub
private sub Button3_click
 m_ButtonFlag(3) = cnt+1
end sub
private sub ButtonManage
 dim i as long
 for i = 1 to 3
  if m_ButtonFlag(i) =0 then
   exit sub
  end if
 next i
 
 if m_ButtonFlag(1)= 1 and m_ButtonFlag(2) = 2 and m_ButtonFlag(3) = 3 then
  msgbox "ボタンが123の順に押されました"
 end if
end sub

private sub Button4_Click
 erase m_ButtonFlag:m_cnt=0
end sub
224デフォルトの名無しさん:2007/06/15(金) 10:37:42
書き忘れてた
ボタンのクリックで ButtonManage を最後に追加しないと判定しないわw
225デフォルトの名無しさん:2007/06/15(金) 11:55:18
>216
エラーメッセージくらい書けよ
226デフォルトの名無しさん:2007/06/16(土) 02:40:44
>>223
変数cntが未定義&インクリされてない件について

それじゃどの順番でボタン押しても、
配列の値はみんな同じじゃね?w
227デフォルトの名無しさん:2007/06/16(土) 02:43:19
m_cntにも0しか代入してねぇwwwワロタwwwww
228デフォルトの名無しさん:2007/06/16(土) 04:59:00
第三者が通知を受けてチェックすれば言いだけジャン。

Private m_IdQue As String
Private m_ValidOrder As String

Private Sub Form1_Load()
  m_IdPool = "  "      'ダミーの3桁データを入れておく
  m_ValidOrder = "123"  ' 最初の規則は123の順
End Sub

Private Sub Button1_Clock
  AddEventToQue "1"
End Sub
Private Sub Button2_Clock
  AddEventToQue "2"
End Sub
Private Sub Button3_Clock
  AddEventToQue "3"
End Sub

Private Sub AddEventToQue(id As String)
  m_IdQue = Right(m_idQue, 2) & id
  If m_IdQue <> m_ValidOrder Then
    Exit Sub
  End If

  ' 規則の順に押された。
  DoNextProc  ' 次の処理

End Sub

規則を変えたくなったら、好きなタイミングでm_ValidOrder を変更すればいい。
229デフォルトの名無しさん:2007/06/16(土) 05:05:38
ミスった、コードの中の m_IdPool  は m_IdQue に置き換えて読んでくれ。
修正漏れがあった。
230デフォルトの名無しさん:2007/06/16(土) 05:07:30
しかも、Clock になってた oRzz
231デフォルトの名無しさん:2007/06/16(土) 11:57:16
>>222
クラス使ってステートマシン作るのがいいと思う。
実際書いてみたんで要望があれば言ってちょ。
232デフォルトの名無しさん:2007/06/16(土) 14:55:25
VBからAccessにデータを追加する場合
オートナンバーの項目はどうすればいいのでしょうか?

wrkSql = wrkSql & "INSERT INTO MSTDB VALUES("
wrkSql = wrkSql & "" & & "," 'オートナンバー
wrkSql = wrkSql & "" & wYear & "," '年
wrkSql = wrkSql & "" & wMonth & "," '月
wrkSql = wrkSql & "" & wDay & ")"    '日

'クエリ実行
gConnDB.Execute wrkSql

これの一番上のオートナンバーの追加がわかりません。
233デフォルトの名無しさん:2007/06/16(土) 18:36:29
>>232
オートナンバーはINSERTの対象にしなけりゃいいんだよ。
勝手に値が入る。
234デフォルトの名無しさん:2007/06/16(土) 21:25:30
ありがとうございます
235222:2007/06/17(日) 10:11:22
遅くなってすいません、なぜか規制がずっとかかっていて書き込めませんでした・・・
みなさんいろいろありがとうございます

>>228
buttonをcommandに変えてそのまま実行してみたんすが
Private Sub AddEventToQue(id As String) というところの
AddEventToQueでsubまたはfunctionが定義されていませんという表示が出てしまいます・・・
ここを変数宣言してみたり色々やってみたりしたんですが、まだうまくいかないので
アドバイス頂けると助かります

>>231
ありがとうございます
クラス使ってステートマシンというのについてよろしければ
もう少し具体的に教えていただけませんか?
取りあえず今はコマンドが3つ押されたことを認識したら
例えば画面上にあるラベル内の数値などが変更されるといったようなことを目指してます

236231:2007/06/17(日) 12:39:24
>>235
こんな感じ

'---- クラスモジュール CInputOrderValidator ----
Private mInputCount As Integer
Private mValidInputOrder() As eInput
Private mInivalidInputEntered As Boolean
Public Event ValidationFinished(result As eValidationResult)

Public Enum eState
  Initial = 0
  DuringInput = 1
  ValidationFinished = 2
End Enum

Public Enum eInput
  Button1 = 1
  Button2 = 2
  Button3 = 3
End Enum

Public Enum eValidationResult
  Indeterminate = 0
  Invalid = 1
  Valid = 2
End Enum

Private Sub Class_Initialize()
  mValidInputOrder = GetDefaultValidInputOrder()
  Me.Reset
End Sub
237231:2007/06/17(日) 12:40:54
Private Function GetDefaultValidInputOrder() As eInput()
  Dim vValids() As Variant
  vValids = Array(eInput.Button1, eInput.Button2, eInput.Button3)
  Dim valids() As eInput
  Dim i As Integer
  Dim lastIdx As Integer
  lastIdx = UBound(vValids)
  ReDim valids(lastIdx)
  For i = 0 To lastIdx
    valids(i) = vValids(i)
  Next
  GetDefaultValidInputOrder = valids
End Function

Public Sub Reset()
  mInputCount = 0
  mInivalidInputEntered = False
End Sub

Public Property Get State() As eState
  If mInputCount = 0 Then
    State = Initial
  ElseIf mInputCount >= Me.ValidInputLength Then
    State = ValidationFinished
  Else
    State = DuringInput
  End If
End Property
238231:2007/06/17(日) 12:42:08
Public Property Get ValidInputLength() As Integer
    ValidInputLength = UBound(mValidInputOrder) + 1
End Property

Public Property Get ValidationResult() As eValidationResult
  If Me.State = ValidationFinished Then
    If mInivalidInputEntered Then
      ValidationResult = Invalid
    Else
      ValidationResult = Valid
    End If
  Else
    ValidationResult = Indeterminate
  End If
End Property

Public Sub SetNextInput(nextInput As eInput)
  If Me.State = ValidationFinished Then
    Exit Sub
  End If
  If mValidInputOrder(mInputCount) <> nextInput Then
    mInivalidInputEntered = True
  End If
  mInputCount = mInputCount + 1
  If Me.State = ValidationFinished Then
    RaiseEvent ValidationFinished(Me.ValidationResult)
  End If
End Sub
239231:2007/06/17(日) 12:43:38
'---- Form1 ----
Private WithEvents mValidator As CInputOrderValidator

Private Sub Form_Load()
Set mValidator = New CInputOrderValidator
End Sub

Private Sub Command1_Click()
  mValidator.SetNextInput (Button1)
End Sub

Private Sub Command2_Click()
  mValidator.SetNextInput (Button2)
End Sub

Private Sub Command3_Click()
  mValidator.SetNextInput (Button3)
End Sub

Private Sub mValidator_ValidationFinished(result As eValidationResult)
  If result = Valid Then
    MsgBox ("OK !")
  Else
    MsgBox ("NG !")
  End If
  mValidator.Reset
End Sub
240222:2007/06/17(日) 14:30:34
ありがとうございます
まだコードを実行してないんですが、これを実行する場合って
Buttonのフォームが必要ですよね?
本を見た感じだと画面左のコマンドやらラベルやらを引っ張ってくる場所から
ボタンも引っ張ってこれるようになってるっぽいんですが、自分のVB6.0には
入ってないっぽいんですよね・・・画面色々いじくって表示させられないか試したりもしたんですが・・・
あとこれを実行して上手く自分の目的の機能を実現するためには、コマンドやボタン
以外にもフォーム上に引っ張ってくるべきアイテムはありますか?
241デフォルトの名無しさん:2007/06/17(日) 18:39:51
>>240
必要な操作は、

(1) プロジェクトにクラスモジュールを追加して、プロパティグリッドで名前を"CInputOrderValidator"
  に変更して>>236以降のコードを貼り付ける。

(2) Form1にコマンドボタンを三つ(Command1、Command2、Command3)貼り付けて
  >>239のコードを貼り付ける。

これだけだよ。
242デフォルトの名無しさん:2007/06/17(日) 19:04:45
>>235
まさかとは思うが、
DoNextProc
これもコードとしてそのまま書いたのか?
243デフォルトの名無しさん:2007/06/17(日) 23:04:21
>>242
そのまま書いていました・・・

>>241
実行できましたありがとうございます
この場合だとコマンド1、2、3の順で押された場合はAの処理
他の順で押される5通りの場合はBの処理が行われるといった感じになっていて
これを全てバラバラに考えて(例えば、2、1,3の順で押されたらCの処理)
といったようにしたいと思ってクラスモジュール内でこの機能を実現するために
関係してきそうな部分を探して考えてみたんですがいまいちどこをいじればいいかが分かりません・・・
何度も申し訳ありませんが、これに関してアドバイスいただけると助かります
よろしくお願いします
244デフォルトの名無しさん:2007/06/18(月) 09:09:47
>>243
一連の流れを眺めてみたけどさ、もっと本質を理解したほうが良いと思うよ
VB6以前なら強力なデバッグ実行機能もあるんだしさ

・暗記すべき部分はきっちり暗記汁(VBの予約語等
・エラーが出たら、メッセージ良く嫁
・デバッグ実行でどんな処理がどこで行われているか調べるべし
・コードの全体をイメージ出来るまでひたすら読んだり書いたりデバッグ実行したり汁
・つーか、ちっとは自分で考えろw
245デフォルトの名無しさん:2007/06/18(月) 17:16:16
>>243
Select Caseも知らんのか。

あと>>242で言ってるのは要約すると、
サンプルとして挙げられたソースに記述してあるコメントくらい普通に理解しろってことなんだが…

分かるか?
246デフォルトの名無しさん:2007/06/18(月) 19:56:33
ここ1,2週間で聞いてきてるやつは全部同一人物っぽいな・・・
247デフォルトの名無しさん:2007/06/18(月) 19:59:25
終わった言語をいまさらスタートする奴なんてそんなにいないしな
248デフォルトの名無しさん:2007/06/18(月) 22:03:55
勝手に終わってろカオス
249デブオ:2007/06/19(火) 16:58:10
すみません。VB(6.0)で指定されたURLにファイルをPOSTする。
又、指定されたURLからファイルをダウンロードすことってできますか?
できるとすればどのようにすればいいのでしょうか?
どなたか教えてください。
250デフォルトの名無しさん:2007/06/19(火) 17:00:28
>>249
WEBBROWSERコントロールでも使ってろよw
251デブオ:2007/06/19(火) 17:16:19
WEBBROWSERコントロールというのは標準で入っていないようなのですが?
MSWebDVDコントロールのことでしょうか?
252デフォルトの名無しさん:2007/06/19(火) 17:24:11
マジレスすると
メニュー>プロジェクト>コンポーネント>コントロールで
該当するやつのチェック外せばいいよ
どのコントロールかぐらいは自分で調べろ
253デフォルトの名無しさん:2007/06/19(火) 17:33:11
×チェック外せば
○チェック入れれば
254デフォルトの名無しさん:2007/06/19(火) 19:06:09
VB6のWebBrowserコントロールは
ビスタでも問題なく使えますか?
255デフォルトの名無しさん:2007/06/19(火) 21:20:25
使えるかどうか自分で試して
それをここに報告すれば良いのでは
256デフォルトの名無しさん:2007/06/20(水) 00:49:42
VBって遅いよな
257デフォルトの名無しさん:2007/06/20(水) 01:37:24
Cって速いよな
でもC++って劇遅だよな
258デフォルトの名無しさん:2007/06/20(水) 02:09:20
>>256-257
つまんねえ釣りはVIPでやれ
259デフォルトの名無しさん:2007/06/20(水) 15:30:14
FlexGridの行選択についての質問です

FormLoadに
flexGrid.SelectionMode = flexSelectionByRow
をいれることにより行選択は可能になりますが、

範囲指定を不可能にする方法はありますか?

また選択している行の位置を求める方法はどうするのでしょうか?
260デフォルトの名無しさん:2007/06/20(水) 23:19:49
レジストリのキー値(ツリーの枝の部分)の取得方法をご教授ください。

例)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-18
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-19
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-20

のS-1-5-18、S-1-5-19、S-1-5-20を検索して取得したい。


以上宜しくお願い致します。
261デフォルトの名無しさん:2007/06/21(木) 09:26:00
>>259
範囲選択を不可能にする方法はある

行に値を調べる方法は
Rowプロパ
262261:2007/06/21(木) 09:26:52
誤植

行の位置を調べる方法は
Rowプロパティのヘルプを見てみないか?

263デフォルトの名無しさん:2007/06/21(木) 14:41:36
まずアプリケーションウィザードを使って適当なプロジェクトを作る。
そのときバージョン情報ダイアログを組み込むように指定する。
そのフォームの「システム情報」ボタンがレジストリにアクセスしてるから
そこをパクる。
簡単な取得だけならこれで済むと思います。
このコードは、レジストリに読み書き権限でアクセスするので、guestとか制限ユーザーだと
エラーになるかもしれません。APIビューアからKEY_READを探してきて、
読み取り専用権限に直しておいてください。
264デフォルトの名無しさん:2007/06/21(木) 15:36:44
>>263>>261です。悪かったな。
265デフォルトの名無しさん:2007/06/21(木) 15:39:02
すいません>>263>>260へのレスです。たびたびごめんなさい。
266デフォルトの名無しさん:2007/06/21(木) 16:29:07
イ〜ンダヨ〜
267デフォルトの名無しさん:2007/06/21(木) 16:50:01
ブル〜ダヨ〜
268デフォルトの名無しさん:2007/06/24(日) 08:29:21
Visual Basic 5.0でActiveXコントロールを作成し、セットアップウィザードを利用して
インターネットで配布するファイルを生成しましたが、
サーバに配置してアクセスしてもインストールが開始されず、
左上に×マークがでるだけの状態です。
どうすれば正常にインストールされるようになるのでしょうか?
なお、配布ファイルには署名をしており、ブラウザはIE6で、
ActiveX関係の設定は有効にしています。
269デフォルトの名無しさん:2007/06/25(月) 04:30:11
コンポーネントShockwave Flashで外部から読み込んだSWFファイルの右クリックメニューを完全に消す方法を教えて下さい
270デフォルトの名無しさん:2007/06/25(月) 10:36:03
>>268
ディストリビューションウィザードのこと?
サーバ上に配置したファイル名を全て挙げてみ?
それとVB関係無いがファイルのアクセス権限はどうなってる?

>>269
なにそのVBのVの字も出てこない素敵Questionはwwww
Flashについてはよく知らないが、ひょっとしてJavaScriptの話じゃね?
スレチにも程があるよ?
271デフォルトの名無しさん:2007/06/25(月) 14:17:00
上から質問に答えると
・6.0でディストリビューションウィザードといわれるものが5.0でのセットアップウィザードのようです。
・CABとHTMファイルです。
・読み、書き、実行権限を全員にすべて与えている状態です。
272デフォルトの名無しさん:2007/06/25(月) 15:05:43
>>271
CABは圧縮ファイルであって、インストーラではないのだが。
273デフォルトの名無しさん:2007/06/25(月) 15:08:21
>>271
ウィザードで作られるファイルは3つあるはず。
CABしかあげてないから駄目なんじゃね?
Setup.exeともう一つなんかあったような
274デフォルトの名無しさん:2007/06/25(月) 17:15:51
>>273
SETUP.LST
275268:2007/06/25(月) 17:32:31
セットアップウィザードで作成されたファイルは
CAB・HTMファイルと、SUPPORTフォルダ(中にOCX・DDF・INFファイル)でした。
Setup.exeやSETUP.LSTといったファイルは見つけることができませんでした。
276デフォルトの名無しさん:2007/06/26(火) 05:31:24
VBはよく知らないC使いなのですが、
VBで作られたEXEファイルは完全な機械語のファイルなのでしょうか?
それとも中間言語が入っているのでしょうか?
277デフォルトの名無しさん:2007/06/26(火) 08:05:21
>>276
Pコードのオプションつければ中間もつくれる
278デフォルトの名無しさん:2007/06/26(火) 09:33:00
>>276
コンパイルするとC2.EXE と LINK.EXEが裏で動いている。
279デフォルトの名無しさん:2007/06/26(火) 16:02:51
みな様お世話様です。
VBScript(WSH)をかじり始めたものです。

作成したCVSファイルに1行追加したいのです。

Set objText = objFile.OpenAsTextStream(8,0)
objText.WriteLine("搬入年月日,Xコード,工場コード,得意先コード〜他")

(8,0)で8が追加モードとのことですが挿入ってのはないんでしょうか?
最終行ではなく一行目にWritelineの内容を挿入したいのです。

何かヒントいただければ幸いです。
280デフォルトの名無しさん:2007/06/26(火) 18:03:16
VB6なんですが、
WebBrowserを利用してどこかのサイトを読み込ませて、読み込み完了まで待機するという処理で、
実行エラー -2(fffffffe) オートメーションエラーが発生してしまいます。
以下、例
WebBrowser2.Navigate "http://www.yahoo.co.jp/"
DoEvents
Do While WebBrowser2.Busy = True
⇒ DoEvents 'ここで発生
Loop
Do While WebBrowser2.Document.ReadyState <> "complete"
DoEvents
Loop

処理自体がいけないのでしょうか?
DoEventsの使用方法がおかしいのでしょうか?
281デフォルトの名無しさん:2007/06/26(火) 23:30:18
>>279
案1
 既存のファイルを全部読む
 先頭に連結して保存
案2
 バッチ
282デフォルトの名無しさん:2007/06/27(水) 01:11:48
>>266-267
どうでもいいけどあのCMの曲って全員集合のアレンジなんだよね。
283デフォルトの名無しさん:2007/06/27(水) 01:13:28
あと>>279につっこませてくれ。それを言うならCSVです、と。
284デフォルトの名無しさん:2007/06/27(水) 01:18:50
>>276
>>277
メニューのプロジェクト→プロジェクトのプロパティ
「コンパイル」タブの話です。
285279:2007/06/27(水) 11:21:18
>>281
どうもです。
案1の場合、既存のCSVをInputにして1行ごとにOut。。
その時にヘッダー、、項目行と結合って事でしょうか?


>>283
( ̄□ ̄;)!! あっ
286デフォルトの名無しさん:2007/06/27(水) 12:14:14
VBScriptでCVS作ったらまさに神だな・・・
いつ落ちるか怖くて使いたくないがw
287デフォルトの名無しさん:2007/06/27(水) 13:15:23
>>285
横レスだが
別にStreamだし一気に読みこんでそこにくっつけるんでいいんじゃないの?
288デフォルトの名無しさん:2007/06/27(水) 13:55:51
他のアプリケーションでオープン中のファイルを直接編集・更新かける方法は
御座いませんでしょうか?
289279:2007/06/27(水) 14:27:03
>>287
objRead.AtendOfStream 〜 こういうやつ?
InsertLine なんてもあったとは知らなかった、、、
なんとなくどうすればいいか見えてきた気がします。

みんなヒントサンクスです。もうちょい頭ひねってみます




でも。。。(´・ω・`)突っ込みあってから元気でないよー
290デフォルトの名無しさん:2007/06/27(水) 14:42:16
>>288
「他のアプリケーション」はオープンしてるファイルを
横から書き換えられて誤動作しないの?
291279:2007/06/27(水) 15:18:43
Set objRead = objFso.OpenTextFile(読込CSVの保存パス , ForReading)
objRead.ReadAll
intLine = objRead.Line

まずこんなんやってみました。
ここから行数わりだして、その値をとりあえず「x」として
その「x」が1行目をさす所に"InsertLine〜"を考えています。

たぶんいろんなやり方あるんだろうけど、ここからやっていきます。
また詰まったら指導お願いすると思うのでよろしくです。
292デフォルトの名無しさん:2007/06/27(水) 15:29:17
>>279
のような行動が当たり前なんだろうけど、このスレではものすごい優秀な行動に見えて困るw
293デフォルトの名無しさん:2007/06/27(水) 23:01:08
tempというエクセルファイル(マクロを実行するファイル)と同じ階層に
財務****.xls(*は日付)というファイルが複数あって、
財務ファイルのセルA1とA10の値をtempにリスト化させるにはどうしたらいいのでしょう?
財務ファイルを一つずつ開けてたらきりがないので一気に処理できたらと思うのですが・・・。
できれば、
財務ファイル名、A1、A10
が横に並んでて、縦にファイル全ての値がリスト化できるようにしたいのですが、どなたかご存じないですか?
294デフォルトの名無しさん:2007/06/28(木) 01:56:51
・フォルダ内の全てのファイル名を順に得るようなコードを書いてみる
・任意のエクセルファイルを開いてA1〜A10を読むコードを書いてみる
・二つをくっつける。ファイル名が自身と同じなら読まない。開くたびに一行ずらす。

って、VBAはスレ違いじゃなかったっけか。
295デフォルトの名無しさん:2007/06/28(木) 04:42:41
> ここから行数わりだして、その値をとりあえず「x」として
> その「x」が1行目をさす所に"InsertLine〜"を考えています。
何言ってるかわからんのだけど誰かわかるの居る?
>>279の目的で行数調べる必要どこにあるんだ?

>>292
296デフォルトの名無しさん:2007/06/28(木) 10:57:39
>>295
さっぱり分からん。
>>279で言ってる"1行目"ってのが"10行目"になったり"100行目"になったり、
挿入行が可変する値であるならなんとなく想像付くが。

固定で1行目に挿入するだけなら行数とか関係無いと思われ。
297デフォルトの名無しさん:2007/06/28(木) 11:31:47
データベースについての質問です。
テーブルAとテーブルBがあります。

両方にそれぞれデータが入っているのですが、
テーブルBのデータをすべて消去し、
テーブルAのデータをすべて写すにはどうしたらよいでしょうか?

298デフォルトの名無しさん:2007/06/28(木) 11:39:52
>>297
日本語でOK
299デフォルトの名無しさん:2007/06/28(木) 11:50:59
>>297
とりあえずエスパー的にテーブル構造が全く同じだと定義しておこうか
で、テーブルBのデータを移すようだが元あったテーブルAのデータはどうするんだ?

テーブルAをすべて消していいならすげぇ楽
テーブルAの内容を消さないなら 重複データチェックして重複してた時どうするかの処理が必要かな?

そんなむずかしいもんじゃないよ
300299:2007/06/28(木) 11:54:47
>テーブルBのデータをすべて消去し、
>テーブルAのデータをすべて写すにはどうしたらよいでしょうか?
逆にかいてたし、勘違いしてレスしてた orz

修正版
とりあえずエスパー的にテーブル構造が全く同じだと定義しておこうか

手順的に
テーブルBのデータを全部削除
テーブルAのレコードをテーブルBにコピー

たったこれだけじゃないか
どこがどうわからないのかが判らないけど
そんなむずかしいもんじゃないよ
301297:2007/06/28(木) 12:48:08
わかりづらい内容ですみませんでした。

テーブルAとテーブルBの構造は同じです。

テーブルBのレコードを全部消した後に、
テーブルAのレコードをすべてコピーするわけですが、

テーブルAのレコードを1つ読み込んでテーブルBに入力と
方法をとるとデータの量的にかなりの時間がかかってしまいます。

テーブルBごと削除して、テーブルAをコピーして名前だけ変更
というようなやり方があれば教えていただきたいのですが。
302デフォルトの名無しさん:2007/06/28(木) 12:54:09
>>301
DROP TABLE テーブルB
してから
CREATE TABLE テーブルB AS SELECT * FROM テーブルA
でテーブルBの再作成。

あるいは
TRUNCATE TABLE テーブルB
してから
INSERT INTO テーブルB SELECT * FROM テーブルA
する。

主キーや制約は後から追加。
それだけ。
303デフォルトの名無しさん:2007/06/28(木) 12:55:15
>>301

ありがとうございます。
304デフォルトの名無しさん:2007/06/28(木) 22:44:58
SQLじゃねーか。
305デフォルトの名無しさん:2007/06/29(金) 00:31:34
COMポート1にシリアルで接続されているモデムがあります。
「ネットワーク接続」でそのポート(モデム)に「着信接続」及び
「ダイアルアップ」が設定してあり
外部と発着信ができるようになっています。

VBアプリからこのモデムに対してヘルスチェックを行いたいのですが
「着信接続」が設定されているため、アプリからポートがOPENできません。
OPENできればATコマンドでモデムのチェックができるのですが。

APIのrasdial関数などで実際にダイアルアップするくらいしか
VBアプリからモデム状態を見ることは無理でしょうか?
306デフォルトの名無しさん:2007/06/29(金) 06:58:56
よろしければAデータベース Bデータベース間でもおながいしたい
307デフォルトの名無しさん:2007/06/29(金) 07:57:43
>>306
RDBMSは何だ?
そもそもVB関係なくDB固有の機能と
SQLだけで解決するんじゃないか?
だとしたらスレ違いだ。
308デフォルトの名無しさん:2007/06/29(金) 09:46:02
>>305
知らんけど
http://support.microsoft.com/kb/823179/ja
こことか
http://forums.belution.com/ja/vc/000/325/07.shtml
こことか参考になるんじゃね?
うまく出来たら教えてよ
309デフォルトの名無しさん:2007/07/01(日) 01:07:15
初歩的な質問で恐縮ですが、どなたか解答お願いいたします。
環境はVB6.0 access2003を使っています。


VBでデータベースを操作し、ある項目が空欄のデータのみを抽出したいのですが
この空欄をどう表現すればいいのでしょうか?

ちなみに現在は「〜〜where ○○ = ''"」という風に書き、目的のデータを引っ張ってこれていない状態です。
310デフォルトの名無しさん:2007/07/01(日) 03:11:35
DataGridの内容をキレイに印刷するテクを教えてください

VB6,XP
311デフォルトの名無しさん:2007/07/01(日) 07:44:33
>>309
空文字なのかNULLなのか、そこが問題だ。
〜〜where ○○ = '' or ○○ IS NULL
でも取れないのか?
312309:2007/07/01(日) 15:06:11
>311

解答ありがとうございます。

目的の項目は、accessでフィールドを作っただけで中身は設定してないので
NULLだと思います。

「〜〜where ○○ = '' or ○○ IS NULL」だと『1つ以上の必要な
パラメータの値が設定されていない』といったエラーが帰って着てしまいます。
313デフォルトの名無しさん:2007/07/01(日) 17:57:53
ためしにクエリでつくってみれば?
="" OR NULL
みたいにしたらたぶんSQL作ってくれるしチェックもできる
それをソフトに組み込めばいいんじゃね?
314デフォルトの名無しさん:2007/07/01(日) 18:52:12
VBの勉強始めて一週間の初心者です
初歩的な質問ですがご回答お願いします。

テキストボックスに入力された文字列が
「半角スペース×n(n>1)」か「それ以外の文字列(半角スペース含む)」
であるかを判定するためにLike演算子を用いようと思っています。
半角スペース一つだけしか入力されないのであれば
入力された文字列 Like " "で問題ないのですが
半角スペースが複数ある時にLikeでどの用に記せばいいか分かりません。
文字列を一文字ずつ取得、判定するしかないのでしょうか?

よろしくお願いします。
315デフォルトの名無しさん:2007/07/01(日) 21:11:26
>>314
俺なら対象文字列をtargetStrとして、
・trim(targetStr) = targetStr
・replace(targetStr," "," ") = targetStr
の2パターンで比較してみるかな。
後者は全角スペース対策。

でなきゃ、Splitで半角スペースをデリミタに配列にして、
ループで空文字以外のデータが存在するかチェックする。
これだと1文字ずつ取り出して比較する方が早いかもしれんwww
316デフォルトの名無しさん:2007/07/01(日) 22:08:02
>>314
InStr()は?

つか、Likeでいくならワイルドカード使うとか。
ワイルドカード使わないならイコール使った比較をした方が早いし。
317デフォルトの名無しさん:2007/07/01(日) 22:10:45
>>309
そのフィールドの型とNULL可否を調べりゃ自ずと分かるような希ガス
318デフォルトの名無しさん:2007/07/01(日) 22:20:56
>>312
○○をそのまま書いたんだとしたらそのエラーは合ってると思うがw

例えばテーブル名をtbl_hoge、その項目名をhogeとした場合

SELECT *
FROM tbl_hoge
WHERE
TRIM( hoge ) = ''
or hoge IS NULL

かな、とは思うが。
hogeのデータ型が数値であった場合はTRIM出来ないだろうから

SELECT *
FROM tbl_hoge
WHERE hoge IS NULL

と、こんな感じにすればいいかと。

これでもパラメータエラーが出るなら、
項目名やテーブル名を間違えてるだけじゃねーかと。
319デフォルトの名無しさん:2007/07/01(日) 22:47:36
4月から入社して最近研修が終わってプログラミングを始めました。
どうしてもうまくいきません・・・
まず、データベースのデータをスプレッドシートに表示させます。
Private Function SetIchiran() As Integer
Dim sSQL As String
Dim objRst As Object
Dim nLp As Long

'***オラクル接続***
Call set_ora

***SQL省略***

  Set objRst = OraDatabase.DbCreateDynaset(sSQL, 0&)
320デフォルトの名無しさん:2007/07/01(日) 22:51:48
With ssYK
.ReDraw = False
.MaxRows = objRst.RecordCount

nLp = 1
Do Until objRst.EOF
.Row = nLp
'***患者番号***
.Col = KJNO_COL
.Text = objRst.fields("kjno").Value
'***患者名***
.Col = NAME_COL
.Text = objRst.fields("kjnm").Value
'***体重***
Call SetWeight
If objRst2.fields("weight") = Then
.Col = WEIGHT_COL
.Text = objRst2.fields("weight").Value
.Col = KOUMOKU_COL
.Text = objRst.fields("knnm").Value

nLp = nLp + 1
objRst.movenext
Loop

.ReDraw = True
End With

Set objRst = Nothing
321デフォルトの名無しさん:2007/07/01(日) 22:53:42
'***オラクル切断***
Call Close_Session
'***該当件数を表示***
lblKen.Caption = ssYK.MaxRo

患者番号を条件に別のテーブルから体重のデータを持って来たいのですが、
データ自体に3つのパターンがあります。
1、患者番号のデータがあって体重のデータもある
2、患者番号のデータがあるが体重のデータがない
3、データ自体がテーブルに存在しない

Private Function SetWeight() As Integer
Dim objRst2 As Object
ssYK.Col = KJNO_COL

sSQL = ""
sSQL = sSQL & " SELECT NVL(JO_WEIGHT , '0') as weight"

sSQL = sSQL & " ,JO_N_DATE"
sSQL = sSQL & " FROM JOKUSO "
sSQL = sSQL & " WHERE JO_KJNO =" & ssYK.Text & vbCrLf
sSQL = sSQL & " AND JO_DELETE = 0 "
sSQL = sSQL & " ORDER BY JO_N_DATE desc"
sSQL = sSQL & " ,JO_SEQNO desc "

Set objRst2 = OraDatabase.DbCreateDynaset(sSQL, 0&)

これで、データ自体テーブルに存在しない場合と患者番号のデータがあるが体重のデータがない場合に、
何らかのオブジェクトを返してスプレッドシートに空白で表示したいんです。

また、患者番号のデータがあって体重のデータもある場合も、データが複数存在する場合があります。
その場合、測定日が一番新しいデータを返したいのですが、どのようにしたらいいでしょうか?
322314:2007/07/01(日) 22:58:55
>>315
御回答ありがとうございます
trim、replace共に便利な関数ですね
Likeで実装するよりソースがシンプルになりそうです
早速試してみます

>>316
御回答ありがとうございます
ワイルドカードで試そうと考えたのですが、
「特定の文字列(=" ")が複数並ぶ」を指定するワイルドカードってないですよね?
あればLikeを用いて簡単に実現出来るのですが。
323デフォルトの名無しさん:2007/07/02(月) 11:14:19
>>322
スペースがいくつあるのか数える必要が無いなら

If hoge Like "* *" Then
'スペースが複数並んでいる

ElseIf hoge Like "* *" Then
'スペースは並んでいない

End If

これでいいんじゃないかって話だと思うんだが。
324デフォルトの名無しさん:2007/07/02(月) 11:16:11
>>319-321
SQLの話ですか?
325319:2007/07/02(月) 19:21:50
>>324
すみません・・・SQLの話になるのでしょうか・・・?
今まで文系だったのでデータベースもプログラムもわからなくて。
Set objRst2 = OraDatabase.DbCreateDynaset(sSQL, 0&)
をつかってデータがない場合空白を返すというヒントをもらったのですが、
考えても調べてもわかりません・・・

326デフォルトの名無しさん:2007/07/02(月) 20:28:31
データを取得する部分はSQLに任せるわけだからsこはSQLの話になるだろうなぁ…
たとえば質問の通り
>患者番号のデータがあって体重のデータもある場合も、データが複数存在する場合があります。
>その場合、測定日が一番新しいデータを返したい

とってきたデータをスプレッドに表示さす部分はVBの話
たとえばNothingかレコードセットがあるかで分岐させるような場合

になるんじゃなかろうかいね?
327319:2007/07/02(月) 22:09:05
SQLにデータがあればSQLだとは思ったんですけど、取得するデータがなかった場合VBの質問になるのかと思いまして・・・
もしデータがなければ空白を表示させますってVBでできるのでしょうか?
本当に無知ですみません。
ブラインドタッチもできない私がなぜ採用されたのか不思議で・・・
体重のデータ自体測定日の新しいデータ順でとってきているのでmovenextしなければ
その新しいデータだけとってるってことになるのかな?なんて考えたり・・・

Nothing レコードセット・・・調べてみます!!!
328デフォルトの名無しさん:2007/07/03(火) 08:05:54
>>327
たぶんNothingじゃなくてEOFになると思うけど、
それ以前に目的の形でデータを取得するSQLを書いた方が早い希ガス。

確実にOUTER JOIN使うことになると思うが、
・患者番号含む患者データ

・患者番号別に最新の体重を返すSELECT文
の外部結合で目的のデータは得られると思うが。
329319:2007/07/03(火) 19:24:11
EOFで解決しました!
外部結合させると必要なデータが取れなくなったりしないんでしょうか?
OUTER JOIN
初めて聞きました・・
調べてみます!
330デフォルトの名無しさん:2007/07/03(火) 21:50:44
ここはいつからSQLスレになったのやら
331デフォルトの名無しさん:2007/07/03(火) 22:53:46
FreeFileでファイル番号取得してそのファイルを読み込みモードでオープンしてるんだが
その後のループ文で

EOF(1)とかにしてるのは何でだ?

因みに俺VB今日仕事で初めて触ってて、とあるシステムの解析中。
FreeFileで変数に番号取得してるならそれ使うのがセオリーなんじゃないのか?

332デフォルトの名無しさん:2007/07/03(火) 23:04:53
ダメコードだ…
333デフォルトの名無しさん:2007/07/03(火) 23:09:49
間違えただけだろ
直してあげればいいじゃない
334331:2007/07/03(火) 23:18:04
>>332-333
やっぱりかw
どうしてだろう何か特別な意図があるんだろうかってずっと頭抱えて悩んでたんだwwwwww

335デフォルトの名無しさん:2007/07/04(水) 00:14:44
もしそのシステムを作った本人が近くにいるなら明日指摘してやれ





俺かもしれん
336331:2007/07/04(水) 00:57:00
>>335
近くにいないからその心配はないな。お前さんじゃない

VBほとんどわかってない状態での勝手な推測なんだが
FreeFile関数の戻り値って1、2、3っていう感じのシーケンスで戻ってくるんじゃないか?
例えば1番目と2番目のファイル番号使ってる状態でFreeFile関数呼ぶと戻り値として3が
戻ってくるみたいな。

だとすると作った奴は現在1つもファイル番号使ってないから
戻り値として1が必ず戻ってくるはずだ的な事を思ってEOF(1)にしたとか。
まあ、それは作成者にしかわからない事だから”保守”って意味じゃ
使っちゃいけないやり方だと思うけどね。現に俺はそれで頭抱えてたわけだしw

とりあえずまた何度かここでお世話になるかもしれないから見かけたらよろしく。

337デフォルトの名無しさん:2007/07/04(水) 21:59:45
シーケンシャルアクセスで出力する時に出る
""を消す関数?教えてください
338デフォルトの名無しさん:2007/07/04(水) 23:34:10
・・・・釣りですよね?
339デフォルトの名無しさん:2007/07/05(木) 00:22:35
釣りだったら幸せなんですけど・・・始めたばかりの素人なもので('A')
すぐに検索出来るのも立派な武器なんだなぁと実感してます。
340デフォルトの名無しさん:2007/07/05(木) 00:28:09
適当に答えてみるけど
Replace$
でいいでしょうか?w
341デフォルトの名無しさん:2007/07/05(木) 00:30:14
Format$とFormatの違いがわからないです
342デフォルトの名無しさん:2007/07/05(木) 00:31:07
ヒント
型宣言文字
343デフォルトの名無しさん:2007/07/05(木) 00:31:14
Writeを使っているとか
344デフォルトの名無しさん:2007/07/05(木) 00:32:26
>>342
という事はMid$でもStringって言う明示的な意味なのですか
345デフォルトの名無しさん:2007/07/05(木) 00:33:50
速度と容量が少々違う
346デフォルトの名無しさん:2007/07/05(木) 00:35:18
まぁその辺は調べれば詳しくどっかが書いてるだろうけど
おっしゃるとおり明示的に文字列型ですよ〜 ということらしいですw

まぁ内部的に実はVariant型で処理してるからだったような気がしますが kwskは覚えてないです ごめんなさい
347デフォルトの名無しさん:2007/07/05(木) 00:39:42
>>346
なるほどありがとうございます。
348デフォルトの名無しさん:2007/07/05(木) 00:44:09
なんだこの野郎俺は無視か糞!ふざけやがって!
349デフォルトの名無しさん:2007/07/05(木) 01:00:39
>>348=>>345
これはむごい
350デフォルトの名無しさん:2007/07/05(木) 01:11:18
>>348
ちょっとかわいそうだな
気づかなかっただけだろ気にすんなやw
351デフォルトの名無しさん:2007/07/05(木) 01:17:17
で、明日聞きにきた >>347>>348のレスを見て
次からはちゃんと確認しようと思うのでありました・。
めでたしめでたし
352デフォルトの名無しさん:2007/07/05(木) 03:11:36
VBScriptなんですが、
Set文というのは実行した時点でメモリが消費されるんでしょうか?

だとすると、Set文でCreateObjectとかクラスの宣言とかするのを
プログラムの最初の方でまとめてやるのはやめた方がいいですか?
最初でまとめた方が分かりやすいし楽なのでそうしてたんですが…。
Set文は、その変数を使用する直前にその都度入れるべきなんでしょうか?

よろしくお願いします。
353デフォルトの名無しさん:2007/07/05(木) 03:49:18
些細な事で悩むなハゲ
354デフォルトの名無しさん:2007/07/05(木) 15:52:30
例えばフォームが開いたらラベル1に253+645のような数式を表示させて
さらにラベル2にラベル1の内容の計算結果として表示させたいと思って
Label2.caption = Label1.caption
と書いたら自動的に計算結果が出力されると思ったんですが
実行したら253+645の数式がラベル2に表示されてしまいました・・・
ラベル2に表示される内容をラベル1の計算結果としたい場合には
あとどのようなことが足りないんでしょうか?
355デフォルトの名無しさん:2007/07/05(木) 16:22:43
>>354
356デフォルトの名無しさん:2007/07/05(木) 16:28:41
>354
つeval
357デフォルトの名無しさん:2007/07/05(木) 17:07:04
>>354
MSDN読んで少しは考えろ
つまり足りないのはお前の頭だ


>ラベル2に表示される内容をラベル1の計算結果としたい場合には
ラベル1の中の計算を自分でするしかないだろうなぁ…

253という"数字"
+という"四則演算の記号"
645という"数字"
を"253+645"という"文字"を解析して自分で書かないといけないと思うが?
358デフォルトの名無しさん:2007/07/05(木) 19:10:40
>>357
お前も足りてないよ
359デフォルトの名無しさん:2007/07/05(木) 19:39:47
一つ質問なんですが
画面上にあるコマンドを、ある条件を満たすまでそのコマンドを押しても何も起こらない
といったようなロックをかけてしまうような方法ってVBで可能ですか?
アドバイス頂けると助かります
360デフォルトの名無しさん:2007/07/05(木) 19:45:24
押したあと条件に一致しなかったらCancelをTrueにすればどうかな?
361デフォルトの名無しさん:2007/07/05(木) 20:13:00
VBって実行したらform1が一番最初に開くと思うんだけど
最初に開くformを変更しての指定みたいのってできたっけ?
form1にプログラムやらインタフェースやらかなり完璧に作ってしまって
実はそれは2番目に開かせたい画面だったってことに今気付いたんだけど
なんとか代えられないかな・・・
362デフォルトの名無しさん:2007/07/05(木) 20:17:19
>>361
できる
363デフォルトの名無しさん:2007/07/05(木) 20:20:49
つ プロジェクトのプロパティ
364デフォルトの名無しさん:2007/07/06(金) 06:57:35
Timer関数から小数点以下だけを取得しようとしたら変な数字になります。
どこを直したらいいんでしょうか?

a = Timer
b = Fix(a)
c = a - b

この式でそれぞれの値を表示させると、aは小数点以下2桁で、bは整数なのに、
cの値がa - bになりません。
よろしくお願いします。
365364:2007/07/06(金) 08:17:19
あ、すいません分かりました。誤差でした。
366デフォルトの名無しさん:2007/07/06(金) 08:34:29
実行したらform上にランダムがで文字列が表示され
コマンドを押すとそれがまたランダムで変わっていくという感じなんですが
これをいつ実行した時でも全く同じ内容で表示することってできますか?
要するに、誰がそのシステムを使って操作をしていっても中身がランダムで
変わっていくことに変わりはないが、全ての人に対して同じ順番で同じ内容のものが表示されてる
といったことを実現したいんですがやり方ご存知の方がいたらアドバイスを
お願いしたいです
367デフォルトの名無しさん:2007/07/06(金) 09:17:51
その考え方でいくと もともと文字列が定義してあってランダムで出るっていうことでいいのかな?

たとえば
A,B,C,D という4つの文字列があって
誰が使ってもABCDの4つしか出てこないけど表示の順序はランダムだ
みたいなかんじ?
368デフォルトの名無しさん:2007/07/06(金) 09:27:10
【質問スレの興衰】

スレが立ち、質問というよりはその分野に興味がある人間が集まり、
丁寧なレスで穏やかにスレが伸びる。
   ↓
息が長くなるに従い、他のレスを見て「こんなのばっかなら俺ってケッコー上なんじゃね?」
という勘違い野郎が発生。棘のあるレスをしだす。
   ↓
質問者は基本的に聞きたいことだけ聞いて去って行くのに対し、回答者、特に↑のような
者が居座り続け、古参化。同じ様な事ばかり聞かれるので面倒になり、
「質問前に嫁」テンプレを作り、初心者を相手にしなくなる。
   ↓
「テンプレ嫁カス」「ググレ」「既出」
レスの大抵がこれになる。更にそれで済ませば良いものを、なぜかその質問をネタに
「こういう奴って何考えてんのかね」「ゆとり教育のr」と叩いて悦に入る。
   ↓
スレが古参の黒い馴れ合いで凝り固まる。
・sage進行! ・テンプレ必読! ・先ずは自分で調べよう! ・ログ必読!
などと誰かさん達にだけ都合のいいテンプレを長々と貼り出す。
反論されると「それが本人の為」などともっともらしい事を言うが、
要するに「俺達が興味の無い話はするな」と言っているだけである。
この頃になるとレスの殆どが哀れな初心者への罵詈雑言になる。
場合によっては“初心者質問スレ”を別に立てるという暴挙まで行う。


こういったスレは要するに回答を餌に、一部住人が
「自分達の興味のある最新の話題」を蒐集しているだけの“エセ質問スレ”である。

代表的なエセ質問スレ
http://pc11.2ch.net/test/read.cgi/antispam/1163495950/l50
369366:2007/07/06(金) 11:04:33
例えば、フォーム開いてラベルに最初ABCDって表示されて
コマンド押したら次はBACD
またコマンド押してその次はCADB
次はBDAC
・・・
といった順序でランダム表示されるのを
誰がシステム使ってもこの同じ表示条件を与えるために
この順序が保たれるいった感じですね
370デフォルトの名無しさん:2007/07/06(金) 11:39:20
じゃぁ
1.表示する内容の一覧を自分で勝手に定義して
2.それをランダムで組み合わる

例えば
1,AAA
2,BBB
3,CCC
4,DDD

とか定義して
ランダム関数で1〜4の中のどれかの番号を取得して、その番号の文字を表示させるとかいうのはどう?

371デフォルトの名無しさん:2007/07/06(金) 12:16:58
>>366
擬似乱数を出力する部品を作ればいい
372デフォルトの名無しさん:2007/07/06(金) 13:21:42
標準機能だと初回 Rnd(負の定数) 以降 Rnd() で一定の数列が取得できる
373デフォルトの名無しさん:2007/07/06(金) 13:24:21
Randomize 1 などで作ってはいかんのかねぇ
374デフォルトの名無しさん:2007/07/06(金) 13:37:12
rnd関数が今後変わらないなんてことは無いし
まして今まで以前のランタイムが、全て同じ乱数系列を吐き出す確認なんて面倒
なら実装した方が早いデスゥ♪
375デフォルトの名無しさん:2007/07/06(金) 17:10:56
馬鹿か
376デフォルトの名無しさん:2007/07/07(土) 04:10:25
VB6でMDIを使うメリットって何ですか?

今、ペイントツールのようなものを作っていて、MDIにしようと思っています。
(Form*6,Class*6,Bas*4くらいの規模です)
複数のフォームで作っても標準モジュールで管理すればデータの受け渡しは問題ないし、
実際に標準モジュールなどに処理を任せているのでSDIでもMDIでも大して変わらないです。
使い方が間違っているんでしょうか?
377デフォルトの名無しさん:2007/07/07(土) 04:16:44
>>376
MDIと比べるべきはSDIで、標準モジュールとかデータの受け渡しとかは別モノだと思うぞ
378376:2007/07/07(土) 04:35:36
MDIとSDIを比べるとクライアント領域のことくらいしか思いつきませんが・・・
UIでのメリットくらいなんでしょうか?
(MDIにしたらメニューが訳分からなくなってしまって、面倒だから全部親に設定して
しまったのは普通なんだろうか)
379デフォルトの名無しさん:2007/07/07(土) 13:02:42
むしろ共通化したメニューとかツールボタンとかさ・・・・
380デフォルトの名無しさん:2007/07/07(土) 14:03:45
FileSystemObjectのFilesからFileオブジェクト取るときって
For Each必ず使わないといかんの?(Folder#Filesで取得したFiles)

なんつーか、For Eachは便利な構文なだけであって、
これ使わなくとも必ず別の方法で出来ると思ってたんだよね。
ItemのKeyが分かれば出来るんだろうけど、FilesのKeyなんて
分からないよな。。。
381376:2007/07/07(土) 16:45:29
>>379
確かにメニューを共通にして組むと楽ですね
ツールボタンは使った事ないです。アイコンの権利の問題とか、Windowsの標準は使って良いのか、
それが何処にあるのか等々、自前で用意するのも嫌だし

SDIでツールを別フォームにするくらいならMDIでもいいかなとか思ってMDIにしたので、
大したメリットは無いと思っていました。
(と言うよりDIのフォームを何個開かせるのは良くないか・・)
382デフォルトの名無しさん:2007/07/07(土) 17:18:42
SDIとかMDIっていうのはユーザインタフェースの問題であって、
作りやすさとかとは、話がまったく違うよ。
383デフォルトの名無しさん:2007/07/07(土) 17:35:57
>>380
配列のよーにアクセスできない?
384デフォルトの名無しさん:2007/07/07(土) 17:54:40
むしろ380のような発想が謎。380は何がしたいんだ?

まあFileSystemObjectの設計がOOP的じゃないから、.NETとかに一旦慣れてしまって
そういう視点からの疑問ならわからないこともないけど。
385380:2007/07/07(土) 18:58:40
>>383
漏れが無知だからかもしれんが、無理だったよ。

>>384
For Each使わずにFilesからFileオブジェクトを取得したい
だけだよ。For Each使いたくないのは、単なる個人的な
こだわり。

Set文使って、参照を明示的に書きたいだけなんだがな。

386376:2007/07/07(土) 19:05:37
>>382
妙に納得できました。
「作りやすさ」ではなくて「使いやすさ」の違いと言う事ですね
387デフォルトの名無しさん:2007/07/07(土) 19:07:04
>>385
把握
とりあえずサンプルコード書いてみた

Private Sub Form_Load()
    Dim fso As FileSystemObject
    Set fso = New FileSystemObject
    Dim fles As Files
    Set fles = fso.GetFolder("c:\").Files
    Debug.Print fles.Item("autoexec.bat").Path
End Sub

確かにItemプロパティはインデクサじゃないみたい
不便だな

というわけでfor eachをお勧めする
388デフォルトの名無しさん:2007/07/07(土) 19:19:27
>>387
やはりそうなるか。

VCとかFor Eachがない言語だとどうするだろうって思ったが
VCならFileSystemObjectわざわざ使わねーわなwww

サンキュ
389デフォルトの名無しさん:2007/07/07(土) 19:45:50
>>387
それを基にItem(1)のようにしたが、駄目だった。
整数の添え字でもないようだ。
390デフォルトの名無しさん:2007/07/07(土) 19:56:08
>>388
ちなみにVC++ならコレクションの_NewEnumメソッドを呼ぶと中身を列挙できる。
VBでのコレクションに対してのFor Eachも裏では_NewEnumを使っている。
391デフォルトの名無しさん:2007/07/07(土) 20:37:03
>>388
つ IEnumVARIANT
392デフォルトの名無しさん:2007/07/07(土) 21:29:46
ディレクトリ内のファイルみたいに序数が意味をもたないものが序数でアクセスできたら
意味論的に不自然だしむしろ精神衛生的に悪いと俺なんかは思うんだけど、
世の中にはいろんな発想の人がいるんだな。

でもそんなに序数でアクセスしたいならラッパークラス書けばいいだけだね。
VB6にも引数付きプロパティってあったよね?
393デフォルトの名無しさん:2007/07/07(土) 21:46:21
>>392
引っ張ってきて個別に管理するためには順序つける必要があるだろ
394デフォルトの名無しさん:2007/07/07(土) 21:55:07
そういうの「二重管理」っていうんだよ。
なんのためにファイルにはファイル名が付いてるの?
395デフォルトの名無しさん:2007/07/07(土) 21:57:48
>>394
ファイルとファイル集合は全然別物だぞ
396デフォルトの名無しさん:2007/07/07(土) 22:02:38
SMTPサーバーを作ったのですが受信でHELO/MAILFROM/RCPT TO/DATAを受信してしまいます。
受信したくないのですが消すことは可能ですか?
397デフォルトの名無しさん:2007/07/07(土) 22:04:09
>>395
君はコレクション自体に番号振るつもりかw
398デフォルトの名無しさん:2007/07/07(土) 22:13:09
>>397
あーはいはいそーすねー
サーセン^^;;

>>396
自分に厳しく他人に優しく
サーバがそんなことで音を上げてどうするよ?
399デフォルトの名無しさん:2007/07/08(日) 01:02:49
>>392
プラグインみたいに、決まったフォルダにファイルを置くことで
意味を成すようなアプリだとファイル名が最初から分かってる
分けではないっしょ。


400デフォルトの名無しさん:2007/07/08(日) 02:11:44
>>392
カゼで酒飲んで紛らわしてたから気づかなかったが
よく見りゃひでぇこと書いてんな
401デフォルトの名無しさん:2007/07/08(日) 09:17:07
>>399
何を言ってるんだ?
だからそういった面倒がないようにFilesなんてプロパティが用意されてるわけで。

ファイルを列挙するのではなく、直接「これ」にアクセスしたいんだ、
という場合も確かにあるだろうが、そういう場合に「これ」というのを数字で指定するのは
不自然でありパス名で指定するのが自然だろう、と394は言っているんだけど。

そしてそのためのメソッドはFSOにも存在するでしょ。
402デフォルトの名無しさん:2007/07/08(日) 11:10:27
> 数字で指定するのは不自然であり
見た感じただの独りよがりにしか受け取れないんだがな…
結構重要なことなのか?
403デフォルトの名無しさん:2007/07/08(日) 11:54:19
プログラムの内部実装としてファイルを番号で指定するというのは確かに普通にありえる。
たとえば作業用の一時ファイルとかね。

不自然というのは、FSOのような汎用的なクラスの実装としては不自然という意味。

まあVBプログラマは抽象的な話が苦手だろうか具体的なたとえ話をすると、
例えば知らない人計100名の名簿の中から5番目の人、ということに何の意味があるの?

それって任意の1/100を選択するのと何も変わらないだろうw
404デフォルトの名無しさん:2007/07/08(日) 12:37:39
>>403
> プログラムの内部実装としてファイルを番号で指定するというのは確かに普通にありえる。 
> たとえば作業用の一時ファイルとかね。 

> 不自然というのは、FSOのような汎用的なクラスの実装としては不自然という意味。
”不自然”だとか”意味論的に不自然”だとか、何言いたいんだ?
”不自然”の中身の説明してるのに堂々巡りするなって


> 知らない人計100名の名簿の中から5番目の人、ということに何の意味があるの? 
ある名簿の中からn番目っていうのを知りたくないだけが理由か?


> それって任意の1/100を選択するのと何も変わらないだろうw 
最初の一回はそうだろうが(こちらは全体を列挙するときだな)
それ以降もアクセスする場合は名前でもインデックスでも同じだろ


というかFileオブジェクトとFilesオブジェクトを混同してないか?
405デフォルトの名無しさん:2007/07/08(日) 12:50:17
してないよ(というか、するわけがないw)
というか、たぶんしてるのは君だと思うよ。
まあ、らちあかなそうだから俺はもう降りさしてもらうわ。
406デフォルトの名無しさん:2007/07/08(日) 13:30:55
>>405
俺も、まぁ対象性のある似た意見だ
ご苦労さまだったな^^
407vb5:2007/07/08(日) 14:08:00
上海のようなゲームを作ろうと思います。牌を立体的にするためにイメージコントロールを菱形にしたいのですができますか?
408デフォルトの名無しさん:2007/07/08(日) 14:29:14
できません
409デフォルトの名無しさん:2007/07/08(日) 14:38:21
無粋なこと言うようだけど、菱形というのは四辺の長さが全て等(
410vb5:2007/07/08(日) 15:05:35
>>408-409
イメージコントロールにロードするpictureの一部を透過させて台形にすることはできますか?
411デフォルトの名無しさん:2007/07/08(日) 15:12:56
>>410
基本的に努力の方向が間違ってるよ。

一つ一つのイメージコントロールを牌に見立てるのではなく、
キャンバス(PictueBoxでもForm自身でもなんでもいいんだけど)に
直接牌を描画することを考えるべき。
412デフォルトの名無しさん:2007/07/08(日) 15:13:52
>>410
そういうことなら透過GIF使えばいい
413vb5:2007/07/08(日) 15:15:36
>>411-412
ありがとーう
414デフォルトの名無しさん:2007/07/08(日) 15:42:42
>例えば知らない人計100名の名簿の中から5番目の人、ということに何の意味があるの?
なんでそんな中途半端な解釈すんのよwwwww
プラグインの定義は無いけどさ、Firefoxとかeclipseのプラグインにしても
100名の名簿から100名全員にアクセスするのが一般的でない?

その場合、「次の人どうぞー」って100回呼ぶのがFor Each
「○○さんどうぞー」って呼ぶのがフルパスでのアクセスか、
Files#Item(○○)アクセスとか。
じゃあ100名分の名前である○○はどうやって取得するのよと。
415デフォルトの名無しさん:2007/07/08(日) 16:08:12
まだやるつもり?
センスない奴ってのは本当救いがたいな。

名前でアイテムを選択するのに意味があるのはあらかじめ「その」名前の
ファイルの意味を知っている場合だけ。

同様に番号でアイテムを選択することに意味があるのは「その」番号の
ファイルの意味を知っている場合だけ。
言い換えれば、ファイルに割り振られた"3"とか"5"とかいった番号が
そのプログラムにとって何らかの意味をもっている場合だけ。

FSOのFilesがインデックスでアイテムを取得できるとして、
FSOが勝手に割り振った番号で取得することに何の意味があるんだw
なんでこんな簡単なことがわからないのか分からないよ。
算数できない子供に算数教えてる気分だわ。

って説明してもたぶん意味を理解しないだろうけどさw
416デフォルトの名無しさん:2007/07/08(日) 16:19:45
>>415
うはwwwww

>FSOが勝手に割り振った番号で取得することに何の意味があるんだw
特定の番号のファイルにアクセスする事なんて求めてねーよ。
全部のファイル名を取得できりゃいいんだよ。

おまいは「全部」って単語が嫁ねーのか?wwwwwwwwww
417デフォルトの名無しさん:2007/07/08(日) 16:25:07
>>416

>>415に全部とか集合とかそういう概念がないだけだから

> 同様に番号でアイテムを選択することに意味があるのは「その」番号のファイルの意味を知っている場合だけ。
”だけ”とか断言しちゃう辺りたぶん分かって無い

> って説明してもたぶん意味を理解しないだろうけどさw
説明していないことは理解できました


(・∀・ 一生不自然ってろ
418デフォルトの名無しさん:2007/07/08(日) 16:35:41
>>414
> 「○○さんどうぞー」って呼ぶのがフルパスでのアクセスか
> Files#Item(○○)アクセスとか。
そうできたらいいという気持ちは俺にもわかるが、
フルパスでファイルを指定したければ、
FileSystemObjectからGetFileを使えばいいわけで、
実際のところあまり困らない。
419デフォルトの名無しさん:2007/07/08(日) 16:36:18
あのね、だからね、>>415さん

適当な番号であっても、番号が在ることが利点となる場合があるの
たとえば>>414さんの様に、順序が必要なときとかなわけ

そりゃね、名前知っててFileクラスを作って扱うとかいうのも必要だけど、
今はその話じゃないの

名前知ってたらそもそも列挙する必要なんて無いでしょ?
名前知らなきゃ列挙して個々にアクセスする必要があるでしょ?
今は後者の話で、「列挙されたファイル」に対する処理をする場合の話なの
分かった?

>>415さんの言っていることが的外れな印象を受けるのは
そもそも説明下手な上に説明した気になっている風もあるけれど、
何より使い方を知らない雰囲気があるからなの

序数を持たなければ序数をつければいいじゃないって言うけれど、
集合に番号をつけてアクセスする形に成るから、事前順序付けか事後順序付けかの違いでしかないし
じゃあ名前でアクセスすればいいって言ってるけれど、そもそも名前なんて分からないし

ああ、うん
疲れた
市ね
420デフォルトの名無しさん:2007/07/08(日) 16:46:26
>>419
何言ってるのかさっぱり分からん
市ねとか日本語も満足にできないのか…
421デフォルトの名無しさん:2007/07/08(日) 16:47:44
−−−−−−−−−−−ここまで池沼の相手−−−−−−−−−−−−−−−



−−−−−−−−−−−ここから普通のVB6質問スレ−−−−−−−−−−−−−−−
422デフォルトの名無しさん:2007/07/08(日) 16:51:11
>>419
頭の悪い奴の議論というのはいつもこれだ。
同じところを堂々巡り(なぜならそれまでの話の経緯を全てすぐに忘れるから)で
話が前進しない。

しょうがないから、比較的忘却癖のある人間にもあるていど親和性が期待できる
箇条書きにしてみようか。(まあ、たぶんこれも徒労に終わると思うが。。)

(1) FSOにはファイルを列挙する機能は存在する。(Files)

(2) そして列挙のためにはインデックスはまったく必要がない。

(3) プログラム上意味のある序数を割り当ててファイルを管理したい場合というのは
  確かに存在する。

(3) しかし、プログラム上意味を持たない数字でファイルを選択する、
  などという行為は任意のファイルを一つ選ぶ行為に等しく、文字通り意味を持たない。
423デフォルトの名無しさん:2007/07/08(日) 16:53:41
>>422
??
それを承知して言っているが、
論点がずれている件(Files vs File)については納得行ってくれたのかね?
424デフォルトの名無しさん:2007/07/08(日) 16:56:12
>>422
ああ、それともうひとつ

> (3) しかし、プログラム上意味を持たない数字でファイルを選択する、 
>   などという行為は任意のファイルを一つ選ぶ行為に等しく、文字通り意味を持たない
なんで意味を持たないの?
順序も内容もimutableな集合なら、結局同じことじゃないか
425デフォルトの名無しさん:2007/07/08(日) 16:57:37
(3) ...

(3) ...

慌てすぎですよ^^
何言いたいのですか?^^;;
426デフォルトの名無しさん:2007/07/08(日) 16:58:47
>(1) FSOにはファイルを列挙する機能は存在する。(Files) 
これFor Eachつかっての事?
であれば、
>>380,385.387を読めばよかろう。
427デフォルトの名無しさん:2007/07/08(日) 17:01:58
プログラマーは子供が多いね







−−−−−−−−−−−ここから普通のVB6質問スレ−−−−−−−−−−−−−−−


428デフォルトの名無しさん:2007/07/08(日) 17:03:23
>>422
(2)と(3)の間に
「FSOはインデックスを使ってファイルにアクセスすることはできない」
を追加したほうがいいと思う。
429デフォルトの名無しさん:2007/07/08(日) 17:05:28
>>422
> (3) しかし、プログラム上意味を持たない数字でファイルを選択する、 
>   などという行為は任意のファイルを一つ選ぶ行為に等しく、文字通り意味を持たない。 
って言われてもなぁ。それからどうするの?
背景、目的と来ていきなり結論かいな?
430デフォルトの名無しさん:2007/07/08(日) 17:19:17

VB6のDateAdd関数のことでお聞きしたいのですが、
DateAdd("n", 1:00:00,10:00:00)
のような使い方をして、結果に11:00:00を得たいのですが、
こういう使用方法はできないでしょうか?
時間、分とばらばらにして加算するひつようがありますか?
431デフォルトの名無しさん:2007/07/08(日) 20:39:54
>>430
> こういう使用方法はできないでしょうか?
できません

> 時間、分とばらばらにして加算するひつようがありますか?
いいえ
432デフォルトの名無しさん:2007/07/08(日) 21:45:06
SMTPでメールだけを受信することはかのうですか?
データすべて受信してしまうのですが‥
433デフォルトの名無しさん:2007/07/08(日) 22:40:33
まずはSMTPが何かを勉強した方がいい。

つーかデータって何のデータだ?
メールだけってどういう意味?
もう少し整理して書いてくれよ。

ちなみにメール受信するときはPOP3な。
434デフォルトの名無しさん:2007/07/09(月) 03:12:10
やっぱりVB厨と呼ばれるだけあるね
435デフォルトの名無しさん:2007/07/09(月) 06:49:39
(;^ω^ >>434なんて毎日上司に呼ばれててカワイソウだぉ
436デフォルトの名無しさん:2007/07/10(火) 14:20:04
データベースから得た名簿をリストボックスに表示させて、そのリストボックスに表示された項目をダブルクリックして
テキストボックスに選択した項目だけを表示させたいのですが、どうすればいいんでしょうか?
437デフォルトの名無しさん:2007/07/10(火) 15:51:41
そのままです

とってきたデータをリストボックスに順番に入れて

ダブルクリックしたときに選択されているデータをテキストボックスに表示してやればいいんでう
438436:2007/07/10(火) 16:05:59
>>437
たしかにそうなんですが、名簿には項目がいくつかありまして、その項目別にテキストボックスに表示させたいんです。
つまりテキストボックスは名簿の項目の数だけあるんです。(番号、名前、住所、電話番号)みたいな感じです。
439デフォルトの名無しさん:2007/07/10(火) 16:36:08
>>436
質問内容整理してから出直してこい
お前の内容だと、どこが分らないすら書いてない
・データベースから取得
・リストボックスに表示
・ダブルクリックの検出
・テキストボックスに表示
・リストボックスの選択項目取得

しかも、使ってるDBもVBのバージョンも何も書いてないじゃん
他人に頼るんなら、せめて質問内容くらい推敲する労を惜しむなよ
440436:2007/07/10(火) 17:35:51
>>439
バージョンは6.0です。データベースはSQL。
分からない事はリストボックスで選択したデータをどうやって抽出するかです。
データベースから抽出するならSQL文で命令すればいいんですが、リストボックスで選択した項目をどうやって
特定すればいいのかが分からないんです。
441デフォルトの名無しさん:2007/07/10(火) 18:01:56
>>440
つ【Selectedプロパティ】
442デフォルトの名無しさん:2007/07/10(火) 18:54:31
やっぱ全角って・・・・・
443デフォルトの名無しさん:2007/07/10(火) 19:32:16
>>440
> 分からない事はリストボックスで選択したデータをどうやって抽出するかです。
Textプロパティ
444デフォルトの名無しさん:2007/07/10(火) 22:31:31
>>430
第二引数、第三引数の指定方法がおかしくね?

まぁ、第三引数についてはダブクォかシャープで括られてると仮定すればいいか。

第一引数で"n"って指定してるなら、
"分"を足すってことだろ?

ならば

DateAdd("n"
60
#10:00:00#)

こうすりゃいいだけだろ。
解説はMSDN嫁。
445デフォルトの名無しさん:2007/07/10(火) 22:31:35
SMTPでdataだけを受信したいのですがどうやるんですか?
HELOとかも勝手に受信してしまいます。
446デフォルトの名無しさん:2007/07/10(火) 22:33:21
>>444
半角カンマが改行になった…orz

これだからiモナは…
447デフォルトの名無しさん:2007/07/10(火) 22:34:30
>>445
SMTP使って受信しようとしている姿がなんとも勇ましいな。
448デフォルトの名無しさん:2007/07/11(水) 08:42:06
VBの乱数の取得の仕方に関する質問なんですが
乱数発生させて3桁の整数を2つ取得してそれぞれ別のラベルに表示するとして
その3桁の数字を例えば356と360といったような
非常に近い値で取得することって可能ですか?
調べても分からなかったので不等号等を使って範囲指定のようなことをして
色々試したんですが上手くできませんでした・・・
449デフォルトの名無しさん:2007/07/11(水) 10:47:18
当然可能
450デフォルトの名無しさん:2007/07/11(水) 10:50:37
4桁の株のコードをランダムに出力するだけのソフト

「銘柄提案装置」

http://www.vector.co.jp/soft/win95/business/se384007.html
451436:2007/07/11(水) 12:14:15
鬆?逶ョ縺ョ謨ー縺悟、壹>縺ョ縺ァText繝励Ο繝代ユ繧」縺ァ縺ッ謖?螳壹@蛻?繧後↑縺?縺ィ諤昴≧縺ョ縺ァ縺吶′?シ?
452デフォルトの名無しさん:2007/07/11(水) 23:54:02
このスレで質問して良い内容かどうか分かりませんが、
VB6.0Proを使用しているので質問させていただきます。

VB6.0にてPCIで接続した電子機器より
データを吸い出すプログラムを作成いたしました。
そのデータは小数型の2次元配列でしてデータ数は数千〜数万あります。

それで、そのデータを他のアプリケーションにて読み込む為にファイル保存しなければいけないのですが、
取引先の会社からテキストファイルでは容量が大きいと思うので、バイナリファイルでくれと言われました。

いまいちバイナリファイルの定義が分からない為、色々ネットで調べてみたのですが
テキストファイル以外のファイルをバイナリファイルと言い、独自のフォーマットのもの、
普通のテキストエディタでは文字化けするような独自の形式のファイル等と出てきました。

VBでファイルへの書き込みでバイナリモードというのがありますが、
それを使用し、書き込んだところでテキストファイルに比べ容量が小さくなるってことはないですよね?

今回の数千〜数万の小数型の2次元配列をファイルに保存する際に
独自のバイナリファイル形式にすることにより容量を小さく出来るのでしょうか・・?

スレ違いでしたら申し訳ございません、根本的に私が理解していないのだと思いますが
参考になるサイト、勘違いしている箇所のツッコミ等があればご教授願えればと思います。
宜しくお願いいたします。
453448:2007/07/11(水) 23:58:44
やり方のヒントでもいいんでアドバイスお願いします
454デフォルトの名無しさん:2007/07/12(木) 00:04:51
>>452
構造体とかをPutする感じになるのかな?
まぁ少なくとも読み書きは速いしサイズも小さくなると思うよ
つうか、そのデータが持ってるサイズほどになる
455デフォルトの名無しさん:2007/07/12(木) 00:06:19
>>452
> VBでファイルへの書き込みでバイナリモードというのがありますが、 
> それを使用し、書き込んだところでテキストファイルに比べ容量が小さくなるってことはないですよね? 
一概に ある / ない とはいえないだけで、有り得ないわけではない

> 今回の数千〜数万の小数型の2次元配列をファイルに保存する際に 
> 独自のバイナリファイル形式にすることにより容量を小さく出来るのでしょうか・・?
できる

単純に小数(Single型で4バイト、Double型で8バイト)で有効桁がX桁の小数をN個扱うと仮定するなら
テキスト(CSV)で書き込み=N*(X+1+1)バイト
バイナリ(生)で書き込み=(8または4)*Xバイト

なので、有効桁Nが10とか20とかの場合はバイナリのほうが有利
ついでに読みにくいが扱いやすかったりする
456デフォルトの名無しさん:2007/07/12(木) 00:09:39
>>448
Dim i           As Long '繰り返し用の変数
Dim middle      As Long '中央となる値
Dim disp_dev    As Long '散らばりの最大値

middle = 360
disp_dev = 10
For i = 1 To 3
    Debug.Print CLng(middle + Rnd * disp_dev - Rnd * disp_dev)
Next
457デフォルトの名無しさん:2007/07/12(木) 00:14:09
>>452
その状況でバイナリファイルにしろと言われたら、
その実数のデータを文字列にしないで、実数データのままファイルに書き出せばいい。
VBのバイナリモードでファイルを開いて書き込むのも、そうする手段の1つ。
458デフォルトの名無しさん:2007/07/12(木) 00:23:20
バイナリとか考えずにzipで縮めてやれ
459デフォルトの名無しさん:2007/07/12(木) 00:27:48
そういえばバイナリの仕様は聞いたの?
460452:2007/07/12(木) 00:45:48
>>454
構造体は使用していないのですが、
構造体でPutするとサイズが小さくなるのですか
明日試してみます

>>455
有効桁数は3〜4桁でいいのですが
桁が多い場合はバイナリで書き込んだ方が小さくなるんですね

>>457
なるほど・・
明確なご指摘ありがとうございます
明日試してみます

>>458
それは、、、ちょっと出来ないです・・

>>459
いえ、特に指定はしてきていないです。
データとしては、
小数型 Array(i,500)←iが固定でなく、30〜60程度です
このデータをファイルに落とすのですが、、

皆様、分かりやすい回答ありがとうございます
私が昔VB、Cを少しかじった程度かつ、電子機器製造の零細で誰も聞ける人間が居ないので助かります・・(T_T)
後、MSDNとかに皆様が教えて下さった内容のサンプルコード等がもしあるのならば教えていただければ助かります。。。
461デフォルトの名無しさん:2007/07/12(木) 01:05:03
> 私が昔VB、Cを少しかじった程度かつ、電子機器製造の零細で誰も聞ける人間が居ないので助かります・・(T_T)
わっちはこういうの弱くてですね
とりあえずサンプルコードを載せておきますよ
Private Sub Form_Load()
Const FilePath = "c:\test.bin"
Dim i As Long
Dim k As Long
Dim Rows As Long
Dim Ary() As Double
Dim Tst() As Double
'配列の確保
Rows = 20: ReDim Ary(1 To Rows, 1 To 500)
'値の代入
For i = LBound(Ary, 1) To UBound(Ary, 1): For k = LBound(Ary, 2) To UBound(Ary, 2)
Ary(i, k) = Rnd
Next: Next
'書き込み
i = FreeFile(): Open FilePath For Binary Access Write Lock Write As i
Put #i, 1, Ary
Close i
'テスト
ReDim Tst(1 To Rows, 1 To 500)
i = FreeFile(): Open FilePath For Binary Access Read Lock Write As i
Get #i, 1, Tst
Close i
For i = LBound(Ary, 1) To UBound(Ary, 1): For k = LBound(Ary, 2) To UBound(Ary, 2)
If Ary(i, k) <> Tst(i, k) Then Debug.Print "err:"; i, k
Next: Next
End Sub
462デフォルトの名無しさん:2007/07/12(木) 01:06:08
>構造体でPutするとサイズが小さくなるのですか
いやいや そうは言っていない
単に外部とのやり取りでそう言うのが多かったから構造体の例を出してみただけで
速度は速いと思うけど、小さくなる保証は>>455の言う通りだと

ほい MSDN
ttp://support.microsoft.com/kb/257794/ja
463デフォルトの名無しさん:2007/07/12(木) 01:25:22
俺は448の応用版みたいなもので悩んでるんだけど
乱数でただの数字を近似して発生するだけでなく数式の
計算結果の値を近似させて乱数で出力することってできる?
要するに
A+B C+D E+F
のような3つの数式を表示するとして、A〜Fは乱数で発生させるけど
この3つの式の計算結果はどれも値が近くて、例えば230、200、212
といったように±50の範囲には収まるような数式を出力する
かつこの3つの数式は毎回決まりきった値に近いわけではない
すなわち3つの計算結果がどれも約500の時もあれば
約200の時もあり約900の時もある
といったことがしたいんだけど、かなり混乱して上手くできないので
誰かアドバイス下さい
464デフォルトの名無しさん:2007/07/12(木) 01:30:03
>>463
> かなり混乱して上手くできないので
> 誰かアドバイス下さい
ここだけは十二分に理解できた
というわけで混乱した頭を冷やして、まともに説明できるようになってこい(・д・
465452:2007/07/12(木) 01:49:07
>>461
>>462
本当に皆様のご助言においては感謝感謝でございます;;
わざわざコーディングもして頂きありがとうございます。
プログラムに最大限反映出来る様頑張ります。
本当にありがとうございました。
466デフォルトの名無しさん:2007/07/12(木) 02:43:55
>>463
lRet = (1001 - 50) * Rnd() + 50 '答えの基準値(50〜950)
X = 101 * Rnd() - 50 '基準値からの相対値(-50〜50)
A = (lRet + X) * Rnd()
B = (lRet + X) - A

'あとは欲しい式の数だけ繰り返し
X = 101 * Rnd() - 50
C = (lRet + X) * Rnd()
D = (lRet + X) - C

数式の答えは 0〜1000 の範囲
各数式の答えの範囲は±50
467デフォルトの名無しさん:2007/07/12(木) 08:20:40
ランダムで値A、Bを取得してラベルに表示するが
その値A、Bは必ず異なる値になるって分かる人いますか?
≠とか使ったけどできなかった・・・
468デフォルトの名無しさん:2007/07/12(木) 08:39:38
ABが整数なら同じこともある
469467:2007/07/12(木) 10:32:21
ということは必ず異なった整数表示したくても
たまに偶然同じ値になってしまうことは
目をつむらなければならないですか?_
470デフォルトの名無しさん:2007/07/12(木) 11:34:34
>>469
同じだったら再取得すりゃいいだけ。

@Aの値をランダム取得

AAの値と別の値がBにセットされるまでBの値をランダム取得するループを作成

これだけ。

ループはWhileでもDoでも好きなの使え。
471デフォルトの名無しさん:2007/07/12(木) 12:42:33
>>470と少し違う方法
Dim A as Long,B as Long
do
A=10*Rnd():B=10*Rnd()
Loop Until A<>B
用は繰り返し構文とA,Bの値をチェックすればいいだけ
(ついでだから関数にしてしまえ Call GetDifferValue(A,B)とか)
For文でも作れるが、ループ回数が未定の場合Doとかが普通だわな
472デフォルトの名無しさん:2007/07/12(木) 14:50:32
>>471
業務ではDoは使用禁止ってことが結構あるがな
473デフォルトの名無しさん:2007/07/12(木) 15:14:13
おれは

Do
If ?? then exit do
Loop

とかよくやるが、 until とか while は使わないようにしている。
読みにくくなるから。
474デフォルトの名無しさん:2007/07/12(木) 15:42:02
DB使うときは無条件に

Do Until rs.EOF

ってやってたが・・・
普通じゃないのか?
475デフォルトの名無しさん:2007/07/12(木) 18:20:41
>>474
俺もそれ

on error ほげほげ
movenext
やっときゃ最悪どうなっても絶対ぬけるし
476471:2007/07/12(木) 23:19:47
>>472
Do禁止ってことじゃ村上ショージはどうすんだって感じだけど
Forで? (for(;;){}使えないし野暮ったいけど)
For i=0 to 1
If ?? Then Exit For
i=0
Next
こんな感じ?ラベルは使いたくないなぁ


477452:2007/07/12(木) 23:55:04
昨日の今日でまた申し訳ないのですが、
また質問させていただきます。

>>461さんの作って頂いたコードを実際動かし
配列AryをバイナリファイルへPutし、その後Getにて配列Tstへ読み込んでるのは理解出来ました。
ありがとうございます。

今回作って頂いたコードですと、バイナリファイルからファイルを読み込む際、
同じ要素数の配列へGetにて丸ごと読み込んでおりますが
そうではなく一部だけ取り出すということも可能なのでしょうか?
今日、調べた結果Getステートメントの引数recnumberにて位置を指定し書き込む、
Seek関数というのとInput関数というのを使用し出来そうな感じでしたが
上手くいきませんでした。

私の作成したコードを乗せれば良いのですが、会社に忘れてきてしまいました。
すみません。
重ね重ね申し訳ないのですが、
宜しければ、私のやり方が間違っている等のツッコミ、
またはこういう関数を使う等のヒントを頂けないでしょうか?
478デフォルトの名無しさん:2007/07/13(金) 00:36:25
>>477
> 同じ要素数の配列へGetにて丸ごと読み込んでおりますが
> そうではなく一部だけ取り出すということも可能なのでしょうか?
※一部だけ取り出す=配列のある部分に対してファイルをマップする
 って読み進んだ。
ReDimとGetだけでは無理です
というのもバイナリモードで開いて、Getステートメントの第3引数に配列を用いた場合、
配列のメモリに直接マップする形になるためです

というわけで、「配列の一部分だけマップする」メソッドを作るしか無いでしょう
時間ないのでこれで失礼sms
479デフォルトの名無しさん:2007/07/13(金) 00:53:52
>>478
マップとかよくわかんない言葉遣いしてるけど、
>>477がいっているのはそういう意味じゃないでしょうたぶん。

単にファイルの任意の位置から任意のレコード数を読みたい、という意味でしょう恐らく。

>>477
まずMSDNライブラリの該当する文章全てを100回読め、と言いたい。
確かにあれ分かりにくいけど、君がやりたいと思っていることを実現するのに
必要な情報は網羅されてるよ。

現に俺はMSDNライブラリの情報だけで同じようなことを実現するソフトを作ったことが
あったから。
480デフォルトの名無しさん:2007/07/13(金) 01:13:50
レコードってランダムアクセスモードで開いたファイルこと?
バイナリファイルではレコードって言わないと思ってたけど違うのか
481デフォルトの名無しさん:2007/07/13(金) 02:48:26
手っ取り早いのは配列のバイト数を獲得して、開始位置とサイズを指定して取り出すことかな
>配列のデータ構造
>Put、Getステートメント
これくらいは調べましょう
482452:2007/07/13(金) 10:46:05
申し訳ございません
まともな納期を貰えず少し焦っていたので
皆様に甘えすぎました

十分過ぎるきっかけは頂いたので
これからは、自力でやってみます
失礼いたしました
483デフォルトの名無しさん:2007/07/13(金) 14:09:36
VB6の事で質問したいのですが、テキストボックスに半角カタカナ以外の文字を入力出来ないようにしたいのです。
keypressイベントでキー入力は出来なくなったのですがコピペすると入力できてしまいます。
changeイベントでどうにかできるとは思っているのですがどんな関数を使えばいいのかも分かりません。誰かヒントだけでもお願いします。
484デフォルトの名無しさん:2007/07/13(金) 15:20:54
その手の事は調べりゃ沢山出てくる。まずは自分で調べること
個人的にはChangeイベントでやるのは好きじゃない。そこに書くのはチェックだけで
値を変更するとまた呼ばれてしまうのが気に入らない。
(さらに個人的には半カナ嫌いだし、全カナOK→半カナ変換くらいの自由度が欲しいな)
485デフォルトの名無しさん:2007/07/14(土) 00:43:54
すっごい初歩的な質問なんですが…

VB6のSP6で作ったEXEは、ランタイムのSP6が入ってるパソコンじゃないと動かないんでしょうか?
SP6が標準で入ってるパソコンというのはないんでしょうか?
リッチテキストボックスも使いたいです。
よろしくお願いします。
486デフォルトの名無しさん:2007/07/14(土) 01:05:59
黙ってインストーラ作れ
487デフォルトの名無しさん:2007/07/14(土) 01:11:03
>>485
>VB6のSP6で作ったEXEは、ランタイムのSP6が入ってるパソコンじゃないと動かないんでしょうか?
動きません。運よく動作しても、正常に動作する可能性は低い。

>SP6が標準で入ってるパソコンというのはないんでしょうか?
XPかVistaなら、大体インストール済みと期待してもいいが、
メーカー品の場合、本々OSに入っているものでも絶対に入っているとは言えない
MEや2000以前は、基本的なランタイムすら入っていないことがあった
たとえば、あるメーカーのノートPC(Win2000)の場合、
コントロールの日本語表示に必要な VB6JP.DLL すら欠けていた

結論、素直にディストリビジョンウィザード等のインストーラーで入れないとVB製のアプリは動かない
素人が趣味でやるレベルなら、ランタイムはVectorで入手してください、とでもreadmeに書いとけw
488デフォルトの名無しさん:2007/07/14(土) 01:33:14
>>487
ありがとうございます。
家で作って学校で自分用に使いたいだけなので
システムファイルのインストールはまずいです。
でもXPだから何とかなるかも…。

入ってなかったりバージョンが違ったりしたらエラーで教えてくれますか?
古いOSを考慮して敢えてSPを当てずにソフトを作る人もいるんでしょうか?

あとrichtx32.ocxというのもXP以降には入ってますか?
質問ばかりすいません。よろしくお願いします。
489デフォルトの名無しさん:2007/07/14(土) 01:36:07
聞く前に試せよ・・・
490デフォルトの名無しさん:2007/07/14(土) 02:15:24
>>488
インストールが無理なら、あれこれ聞くよりテスト用にEXEを作成して実行しなさい
自分で試せば、すぐに分かることを聞くのは失礼ですよ

>入ってなかったりバージョンが違ったりしたらエラーで教えてくれますか?
Vectorで公開されているフリーのOCXを使用したEXEを作成して
学校のPCで実行してみればどうなるか確かめられます

>古いOSを考慮して敢えてSPを当てずにソフトを作る人もいるんでしょうか?
SPを当てるのは常識です。当てずに作成するなら既知の不具合を把握しておく必要があります。
例外的に、古い業務システムが稼働しているマシンにインストールすることを前提としている場合に
その業務システムとおなじバージョンで開発するというようなケースがありますが、あなたが気にする必要はありません

>あとrichtx32.ocxというのもXP以降には入ってますか?
学校のハードディスク内を検索して確認してください
491デフォルトの名無しさん:2007/07/14(土) 04:35:29
>>490
そうですかすいません。
あまり学校に行けないんでここで聞いてしまいました。

でもあなたが気にする必要はありませんってところは意味が分かりませんね
492デフォルトの名無しさん:2007/07/14(土) 04:54:55
意味が分からないなら分からないままでいいという意味、わかった?
493デフォルトの名無しさん:2007/07/14(土) 06:02:00
気にする必要がないという意味は何?
494デフォルトの名無しさん:2007/07/14(土) 06:41:11
お前ごときが業務システムがどうたらなんて気にする必要はねぇよって事だ
495デフォルトの名無しさん:2007/07/14(土) 08:18:04
そもそも、OSに標準コントロール位入れておくべきだったと思う。
自社の製品なんだからさあ
496デフォルトの名無しさん:2007/07/14(土) 09:38:09
コントロールのフォントをMS UI Gothicに変更するってデフォじゃないの?
497デフォルトの名無しさん:2007/07/14(土) 11:58:02
入っていてもVB6JPが入っていないというオチも付いてくる
498デフォルトの名無しさん:2007/07/14(土) 23:38:43
>>494
失礼な奴
499デフォルトの名無しさん:2007/07/15(日) 14:49:28
>>496
目から鱗
500デフォルトの名無しさん:2007/07/15(日) 16:45:51
>>488
環境汚したくなくて、VB6を選ぶのは自殺行為だろう。
501デフォルトの名無しさん:2007/07/15(日) 21:54:39
>>500
そういう奴はVC選んだ方が良いwww

502デフォルトの名無しさん:2007/07/16(月) 17:18:01
初心者です
VB2005 Expressを使ってます
DataGridviewについてです

行列を指定して値を得るには、どのような関数を使えばいいのでしょうか。
1時間情報を探し回ったのですが、基本的なことであり過ぎるのか、情報が見つかりません。

どなたか、お助け願います
503デフォルトの名無しさん:2007/07/16(月) 17:47:18
スレタイ読めんのかカス
日本語の読み方勉強してから出直してこい
504デフォルトの名無しさん:2007/07/16(月) 17:58:53
>>502
どうゆう事に使うんでしょうか?
行列を指定して値を得る。と言うのでもどうゆう結果を得るのかで8種類有るので・・・・

505デフォルトの名無しさん:2007/07/16(月) 19:57:09
>>504
馬鹿がつけあがるから答えんなよ
506デフォルトの名無しさん:2007/07/16(月) 20:18:00
1.VB2005を起動
2.ヘルプメニューを開く
3.「DataGridview」と記入
4.Enterキーを押してしばし待つ
5.なんとその答えが出てくる!!
507デフォルトの名無しさん:2007/07/16(月) 21:05:08
>>505
「どうゆう」なんて言葉を使っちゃうぐらいだから同じ馬鹿なんだよ
508デフォルトの名無しさん:2007/07/17(火) 05:58:42
できあがったexeをダブルクリックすると
「特許願を作成します。整理番号を入力してください」
というメッセージが画面にでるようにするには
どうしたらいいですか?
VBのバージョンは6.0です
509デフォルトの名無しさん:2007/07/17(火) 06:00:34
>>508
君がPCの横に立って誰かがexeをダブルクリックしたら、
君が「特許願を作成します。整理番号を入力してください」 と言えばいい。
510デフォルトの名無しさん:2007/07/17(火) 06:04:03
511デフォルトの名無しさん:2007/07/17(火) 06:20:23
http://kazato.run.buttobi.net/cgi-bin/upload/src/viprpg_tktk0229.png
ここまでできました。あと
OKをおしたときに、入力した文字列を
ファイルに保存したいのですが、どうすればいいですか?
512デフォルトの名無しさん:2007/07/17(火) 06:22:01
自分の考えとしては、
(1)文字列を保存する用のファイルをあらかじめ作成する
(2)OKボタンを押したときに、テキストボックスの中身の
文字列を、そのファイルに格納するようなVBのコードを書く
(3)そのコードをOKボタンを関連づける
これでいいですか?
513デフォルトの名無しさん:2007/07/17(火) 06:55:57
バカは上げて落とす、コレ基本。

(・∀・) イイヨイイヨー ソノママソノママー
514デフォルトの名無しさん:2007/07/17(火) 09:05:36
こんなんだからVB房はレベル低いとかカスとか言われるんだ
もうPGなんてやんなカス
515デフォルトの名無しさん:2007/07/17(火) 09:48:55
>>514
満足したら、よそに池www
516デフォルトの名無しさん:2007/07/17(火) 13:51:38
>>508
InputBox使え
517デフォルトの名無しさん:2007/07/17(火) 14:12:15
>516
ヲイww
518デフォルトの名無しさん:2007/07/17(火) 14:54:38
>>517
俺も>>516に賛成だ
このレベルのやつにはこれが一番楽だろう

で、取得した値が数値じゃなければはじくと

そうじゃないと入力制限とかまで教えなければいけなくなってしまうではないか
519デフォルトの名無しさん:2007/07/17(火) 18:14:34
暇だから相手する
標準モジュールに・
Private Sub Main()
Dim MyDir as String,buff as String,FN as Integer,FileName as String
do
Buff=InputBox("特許願を作成します。整理番号を入力してください","","")
if buff=vbnullstring then exit sub
if Isnumeric(buff) then exit do
loop
mydir=app.path:if right$(mydir,1)<>"\" then mydir=mydir & "\"
FileName="buffer.txt":FN=freefile()
If Dir(Mydir & FileName)<>"" then kill mydir & filename
open mydir & filename for output as FN:Write #FN,buff:Close FN
End Sub
マルチだしもういないだろうな(&ツッコミ不可。汚いコードなのは承知w)
520デフォルトの名無しさん:2007/07/17(火) 20:43:40
VB2003(多分)で質問です。スロット作ってるんですが三つピクチャーボックスとタイマー用意してストップボタンもそれぞれに用意して3枚の絵がそろったらメッセージボックスで当たりって出したいのですが、どんなコード書けばよいですか?
521デフォルトの名無しさん:2007/07/17(火) 21:23:23
>>506
>>520
アフォがアフォを呼ぶ。
522デフォルトの名無しさん:2007/07/17(火) 22:13:40
>>520
改行ぐらいしろ

VB.NET質問スレ (Part22)
http://pc11.2ch.net/test/read.cgi/tech/1184037822/
523デフォルトの名無しさん:2007/07/17(火) 23:36:46
PPVBAについて質問です

TextBox1 = A(I)

だと、今表示されているスライドのTextBox1に書かれます
これを違うスライド「Slide3」の「TextBox1」に書く方法を教えてください
524デフォルトの名無しさん:2007/07/18(水) 00:40:51
ここはVBスレだ!
525デフォルトの名無しさん:2007/07/18(水) 02:11:27
>>523
馬鹿がカスをよび
カスが天災をよぶ
そんなパターンだな
死ねカス
526デフォルトの名無しさん:2007/07/18(水) 06:39:54
>>520
VB2003(多分)で質問です。スロット作ってるんですが三つピクチャーボックスとタイマー用意してストップボタンもそれぞれに用意して3枚の絵がそろったらメッセージボックスで当たりって出すコードを書けば良い

>>523

ググレ
527デフォルトの名無しさん:2007/07/18(水) 12:30:42
>>523
Slide3.TextBox1.Text = A(l)



これじゃないなら知らネ。
VBAスレでも捜すこった。

しかしPowerPointにもマクロの要求があったんだな。
初めて聞いたわ。
528デフォルトの名無しさん:2007/07/18(水) 14:44:03
>>520
もちろん5ラインで判定するんだよね?
とか言ってみる
529デフォルトの名無しさん:2007/07/18(水) 18:43:00
>>527
おかげさまで完成しました、ありがとうございます
スレ違い失礼しました
530デフォルトの名無しさん:2007/07/19(木) 00:07:45
VB6.0(SP6)でDLLを作成したいのですがどうすればいいのでしょうか?

ActiveDLLという項目がありますけど、恐らくC言語などで作る標準のDLLとは
また別物だと思っているのですが。その辺も教えていただけると助かります。

531デフォルトの名無しさん:2007/07/19(木) 00:48:21
そういう意味での普通のDLLは作れないから諦めろ。
532デフォルトの名無しさん:2007/07/19(木) 00:50:00
>>531
作れないわけじゃない
533デフォルトの名無しさん:2007/07/19(木) 04:40:21
なんか変な人が沸いたなーと思って
本屋行ってみたら、VB2005の本は15冊くらいあって
VB6.0の本は3冊しかなかった
もう情報が手に入らないから
2005に乗り換えるしかないのか?
ちなみにソフトはヨドバシカメラで
5000円ですけど
534デフォルトの名無しさん:2007/07/19(木) 04:42:16
あとVB単体で買った方がいいのか、
ビジュアルスタジオで買って
VBとVCとC#とVJと
手にいれたほうがいいのか
535デフォルトの名無しさん:2007/07/19(木) 04:51:33
VB2008でVB6.0っぽくならないかなぁ?

VB2008の詳細分かる人詳細ギボンヌ
536デフォルトの名無しさん:2007/07/19(木) 04:53:09
>>519
標準モジュールってのがどれなのかわかりません
537デフォルトの名無しさん:2007/07/19(木) 07:09:20
VB6でプロジェクトを開くと、一部のコードの変数名で大文字が小文字に勝手に変換されます。
少し前まではそんな現象はなかったのですが、最近になって起きるようになりました。
ぐぐったのですが、VB6も情報が減りつつあるのか、「そういうことがある」というのは見つかったが、
対策などに及んでいるところは見つかりませんでした。
問題のコードは複数のプロジェクトから参照されているもので、プロジェクトを開いて勝手に変わるのは
特定のプロジェクトだけ。そのプロジェクトも参照してる他のモジュールの変数名などは変換しません。
変換するプロジェクトとしないプロジェクトの.vbpファイルをエディタで開いてプロパティの値を調べても、
特別異なる点は見つけられませんでした。

勝手に変更されないようにする方法はあるのでしょうか?
538デフォルトの名無しさん:2007/07/19(木) 07:10:59
おれVB5を愛用してるんだがVB6を買う価値はありますか。
539デフォルトの名無しさん:2007/07/19(木) 12:44:39
>>537
> 勝手に変更されないようにする方法はあるのでしょうか?
ないです
540デフォルトの名無しさん:2007/07/19(木) 12:55:20
>>538
VB6での新機能がひつようなら買えば?

俺個人はドットネットのがいいと思うけど
541デフォルトの名無しさん:2007/07/19(木) 13:05:44
>>538個人的に6は好きだけど
>>540と同じ意見。つーか今買うならネトの方がいいと思う。
釣られた?
542デフォルトの名無しさん:2007/07/19(木) 13:44:41
>>540-541
ありがとう。VB5とVB6は、大差ないようですね。
543デフォルトの名無しさん:2007/07/19(木) 14:11:40
>>542
安直にそうとは言えない
544デフォルトの名無しさん:2007/07/19(木) 14:16:35
VB6どこで売ってるの?
545デフォルトの名無しさん:2007/07/19(木) 14:45:57
うってるというか
在庫探すがサブスクライバDLじゃね?
546デフォルトの名無しさん:2007/07/19(木) 15:57:57
>>537
俺の場合だと hWnd As Long がよく hwnd As Long に変わるな
あと、API宣言のDLL名なんかは最後に入力された名前ですべて統一されるね
だから、大文字小文字を決めていても、どこかからコピペしてきたりすると
その書き方で統一されたりしちゃうな
VBは勝手に文字を変換したりするから、もうこればっかりは仕方ない
http://support.microsoft.com/kb/412642/ja
こんな現象なんかVBの自動変換ならではだしなぁ
547デフォルトの名無しさん:2007/07/19(木) 19:38:22
C、Perl、JAVAプログラマです。
最近、VBとかVC#とかにも興味を持っています。

VB6.0以前って今からでも入手可能でしょうか?
それとも素直に.NETにしておいた方が良いでしょうか?
MSは仕様がころころ変わる印象があってびびり気味です。
548デフォルトの名無しさん:2007/07/19(木) 20:08:46
>>547
そんな奴はMSに関わるな
549デフォルトの名無しさん:2007/07/19(木) 23:48:19
VBでCreateThreadって使えるの?

後なんでサンプルコードでポインタ(参照)の部分はByRefじゃなくてByValなんだ?
550デフォルトの名無しさん:2007/07/19(木) 23:48:29
>>547
実際に本屋に行ってみればわかるとおもうが、
VB6.0の本は3冊くらいしかなくて
VB2005の本は15冊くらいある。
6はもう学びたくても情報が手に入らない
状態なので、ソフトを買ってもしょうがないとおもう。
VB系列であれば、すなおに一番本がたくさん出ている
2005を買った方がいいのでは?
551デフォルトの名無しさん:2007/07/20(金) 00:00:14
>>549
> 後なんでサンプルコードでポインタ(参照)の部分はByRefじゃなくてByValなんだ?

オブジェクト指向な言語はたいていそうなので
何でといわれても困るんだが・・・
552549:2007/07/20(金) 00:35:06
>>551
まってくれ。

ByRefはC言語で言うポインタ(&変数名)なんだろ?
ByBalはC言語で言う単純な値を渡すものなんだろ?
そういう風に解釈してたんだが違うのか?

適当に調べた参考サイトで下記のように書かれていたんだが。


以前までは、ByRef(ポインタ参照)を指定することで、
変数ポインタの受け渡しを行っていましたが、
今後はポインタ変数型を用いたByVal(値参照)指定が主流になってきます。
また、ByVal、ByRefを省略したときのデフォルト値はByValになりますので、ご注意下さい。

↑の文面で「ポインタ変数型」と書かれているんだが、
そもそもポインタ変数型って何なんだ。ByValはポインタのアドレスを渡すのか
それとも単純に変数の中身を渡すのか。恐らく後者なんだろうけど
少し混乱気味w

ただ、後者だった場合元々ポインタを受け取る関数に対して値を渡しても、
誤作動を起こすんじゃないかな。それに値渡し(Aと仮定)だと渡した先の処理で
A = 1;とかいう代入をしたとしても渡し元のAの値は1にはならないんじゃないのか?
正直VB詳しくないんでその辺すっきりさせたいんだが、教えて頂けないだろうか。

553デフォルトの名無しさん:2007/07/20(金) 00:47:22
>>552
URL晒すとか具体的なサンプルを指して議論しないと話が空回りすると思うよ。
VB6はMSDNとか見ても仕様があいまいにしかわからないからなおさらね。
554デフォルトの名無しさん:2007/07/20(金) 01:20:46
>>552
API絡みのByValとByRefの違いは RtlMoveMemory で考えると分かりやすいかね
Private Declare Sub RtlMoveMemory Lib "kernel32" (ByRef pDst As Any, ByRef pSrc As Any, ByVal lBytes As Long)

Dim Buffer(255) As Byte
RtlMoveMemory(Bytes, "abc", LenB("abc")) 'コピー元もコピー先もByRef

Dim hBuffer As Long
hBuffer = GlobalAlloc(GMEM_FIXED, 256)
RtlMoveMemory(ByVal hBuffer, "abc", LenB("abc")) 'コピー先はByVal
555デフォルトの名無しさん:2007/07/20(金) 01:34:33
>>552
エスパーした感じそれVB.NETのサイトだと思うぞ。
556デフォルトの名無しさん:2007/07/20(金) 10:08:16
>>552
ポインタを渡す時はByRefという認識で問題ない
実体がポインタならByRefで渡されるのはポインタへのポインタになるというだけの話
557デフォルトの名無しさん:2007/07/20(金) 12:41:32
>>556
よくわかってないなら黙ってた方がいいと思うよ。
でないと叩くよw

まあとにかく、「ポインタ」という言葉は初心者にとっては理解を妨げる元だから
意識して使わない方がいいと思う個人的には。

ポインタという言葉は

(1) データの位置情報(これは本来「誤用」だと思うんだけど。。)
(2) データの位置情報を格納する変数

の二つの意味で使われる場合があるが、初心者は文脈からこれを区別できない
場合が多い。

それどころか、書いたり言ったりしてる本人もよく区別がついてなかったりするから
やっかいなんだよね。
558デフォルトの名無しさん:2007/07/20(金) 13:06:05
>>557
お前が理解できていないだけだろ
559デフォルトの名無しさん:2007/07/20(金) 13:08:56
>>557
nihon go de ok
560デフォルトの名無しさん:2007/07/20(金) 16:06:39
WithEventsでイベントを捕まえる時にTextBoxのコントロール配列のように
'==General==
Private WithEvents clsTEST(10) as Class1 'Error
'===========
Private Sub clsTEST_Change(Index as Integer)
'イベント
End Sub
上記の様にコントロール配列の様に管理する方法ってありますか?
561デフォルトの名無しさん:2007/07/20(金) 18:08:13
>560
残念できませぬ
562デフォルトの名無しさん:2007/07/20(金) 18:08:22
スタークラフトででてくるポインターと
同じ意味でおk?
563560:2007/07/20(金) 18:50:54
自己レス
clsBaseValue.cls←元になるクラス(Long型一つのみプロパティで保持)
clsEventArray.cls←clsBaseValue.clsを管理するクラス
<clsEventArray.cls>
'==General==
Private m_Value() as clsBaseValue.cls 'InitializeでSetしておく
Public Event Change(Index as Integer)
'===========
Public Property let InputValue(Index as Integer,lngValue as long)
'値の変更時にイベント発生
If m_Value(Index).InputValue=lngValue Then Exit Property
RaiseEvent Change(Index)
m_Value(Index).InputValue=lngValue
End Property
↑の方法で一応出来たんですが、コードとして不味い部分はありますか
564デフォルトの名無しさん:2007/07/20(金) 19:08:03
でりげーとが見つからない

結構みんな使ってないものなのか?
565デフォルトの名無しさん:2007/07/20(金) 19:51:59
>>552
その文面、なんか見覚えあると思ったら、AcitveBasicじゃないか。
こいつは、Visual Basicとは別物。

そこに書かれている内容は、ちょうどABにCもどきのポインタ型が導入されたときに
公開されたもので、これからはByRefではなくポインタ型使えという趣旨の文章。
(ちなみにこの方針は撤回されつつある)
566デフォルトの名無しさん:2007/07/20(金) 20:16:21
>>563
何したいのかわからん
動くだけでいいと思うならそれでいいと思うぞ
567デフォルトの名無しさん:2007/07/20(金) 22:31:14
>>560
かなり変則的だけど、できないことはないと思われる。

たとえばHogeのコレクションHogeCollectionを作るとして、それに

Public Event TextChanged(Index as Integer)

のようなイベントを持たせようと思ったら、まず

(1) HogeCollectionに次のようなメソッドを持たせ、その中でTextChangedイベントを発生させるようにする。
  Public Sub OnTextChanged(Item as Hoge)
    ..........
    RaiseEvent TextChanged(index)
  End Sub

(2) HogeをHogeCollectionにAddするとき、HogeにHogeCollectionへの参照を持たせるようにする。
  (これでHogeからHogeCollectionのOnTextChangedを呼び出せる)

(3) HogeのTextの値が変更されたとき、HogeCollectionのOnTextChangedを呼び出すようにする。
568560:2007/07/20(金) 23:33:52
>>567レスありがとうございます
Collectionですか・・・分かり辛いんで避けてました。
この機会に勉強してみます
569デフォルトの名無しさん:2007/07/21(土) 00:01:06
いや話の肝はそこじゃないんだけどねw

話の肝は、VBでコントロール配列のイベントみたいなことを実現しようと思ったら、
要素の側にも「要素の集合」( = コレクション)への参照を持たせるように
すればいいってことなんだけど。
570560:2007/07/21(土) 00:19:34
ん〜、よく分からない。すいません
「要素の集合」→Collection=clsEventArray.cls内のm_Value()
「要素の側」 →Collection内のItem?=clsBaseValue.cls内のm_Value
で合ってますか。
571デフォルトの名無しさん:2007/07/21(土) 01:55:29
>>567
わざわざコレクション使うと無駄にメモリー食うし配列でいいと思うぞ
あとOnTextChangedをPublicにするのもどうかと思うよ
572デフォルトの名無しさん:2007/07/21(土) 02:05:05
誰かこう気の効いた「〜パターン使えばいいよ^^」みたいな奴は居ないのか・・・
573デフォルトの名無しさん:2007/07/21(土) 02:16:33
>>572
どうでもいいクズレスしてないでお前が言えばいいだけだろw
574560:2007/07/21(土) 04:19:04
なんかアホな事してたみたいです
>>566さん、確かに何をしたいのかが分からんですね
規定値決めて(→InputValue(Index,lngValue)
Private WithEvents clsTEST as Class1 'これでOK
呼び出しは clsTEST(n)=a 'clsTEST.InputValue(n)=aと同じ
イベントも同様に取れますし
>>567さん、お手数取らせました

orz
575デフォルトの名無しさん:2007/07/21(土) 12:03:04
>>571
じゃあ代替案出してみ?
ちなみに配列かコレクションかは話の争点ではないと既に書いたはずだけど。
576571:2007/07/21(土) 17:55:24
>>575
フォームにOnTextChangedメソッドを持ったインターフェースをImplementsする
577デフォルトの名無しさん:2007/07/21(土) 18:13:43
>>576
まあわかってないなら無理して背伸びするなって。
578デフォルトの名無しさん:2007/07/21(土) 18:26:10
>>577
576の代替案が分らないのなら、それはお前の実力不足だろw
579デフォルトの名無しさん:2007/07/21(土) 18:27:31
>>576
イベントディスパッチじゃない理由が微妙に絡んでくるんだよな
イベントハンドラとしてイベントソースにバインドさせると、循環参照が起きるので解放時に一手間必要になるのが嫌だ
580571:2007/07/21(土) 18:39:54
>>580
んじゃ、子供には親のポインタをLongでw
581571:2007/07/21(土) 18:46:38
>>579
ん、深く考えてなかったけど解放時の手間って子供側の持ってる親の参照だよね?
フォーム(親)が閉じれば普通にForm_Terminateまで走ると思うけど
582デフォルトの名無しさん:2007/07/21(土) 21:46:19
>>578
代案になってないから言ってるんだけどね。
一々全部説明しないとわからないのかな。
これだからVBerは嫌だよ。

まずインターフェイスを使うことについては(それが要素から呼ばれるメソッドを
外部から隠蔽するための小手先のテクニックだろうと)異論はない。

問題点は、俺が例として挙げた、たとえばOnTextChangedメソッドのように
要素から呼ばれるコードをFormに直接書くこと。
簡単に言えば、「で、それはイベントと言えるのか?」ということだ。

そんなやり方では、たとえばあるFormでHogeクラスの「コントロール配列」にあたる、
複数の要素のイベントの集中管理機能が使いたいと思ったら、そのロジックをその都度
いちいちFormに書かなければならん。

そんなことでは「コントロール配列」と機能的に等価とは全くいえないだろう。
583560:2007/07/21(土) 21:49:33
キッカケになったナニも分かっていない者です・・・
イベントを持たせた(自作)クラスを配列に出来ないので、配列や集合を持つ
クラス(Collectionなど)を使ってイベントを発信する、ってことですか?

自分のやり方は構造体部分だけを持つクラスを複数用意してそれの管理とイベントを発信
する為の親クラスを用意する、っていうつもりで書いたんですが。
→それなら一つのクラスで構造体を配列で持たせて、イベントを発信すればいいじゃん
となってしまいました

コントロール配列のイベントはどうやってるか知っている人いますか?
584デフォルトの名無しさん:2007/07/21(土) 22:02:19
>>582
んー、ここで詳しく言えるほど言葉数が多いわけじゃないから
一言二言だけ

デザパタ勉強すればもっと簡潔に言いたいことがいえるようになると思う
今のままだと少なくとも俺には、何を言いたくてどんな例で伝えようとしてるのか直ぐに分からない
585571:2007/07/21(土) 22:20:10
>>582
言いたいことがさっぱりわからん・・・
イベント発生時にやりたい処理をForm内に書くのは当たり前だし
それが出来なければイベントの意味がないし、
じゃあOnTextChangedメソッドの呼び出しをForm内に書くかというと
そんなことはしないわけで、そのレスの内容読んでるとイベントそのものを否定しているようにしか読めない('A`)
あと、コントロール配列と等価とか主張してる人どこにもいないと思うんだけど・・・
586デフォルトの名無しさん:2007/07/21(土) 22:27:47
>>585
まあ馬鹿は自分のやってることの問題点がわからないから馬鹿なんだよ、としか言いようがない。
587デフォルトの名無しさん:2007/07/21(土) 23:45:40
>>586
自己紹介乙
588407:2007/07/22(日) 00:29:10
おかげで
デルファイで作った「敦煌」というゲームをVB5で書き直してベクターで公開できました。
>>412さん、ありがとう。
589デフォルトの名無しさん:2007/07/22(日) 02:28:01
VB6 の サイド バイ サイド についての質問ですが

XPだと http://www.microsoft.com/japan/msdn/thisweek/vbxp/vbxp2.aspx が利用できたけど

Vistaでも利用できますか?
590デフォルトの名無しさん:2007/07/22(日) 13:37:43
>>583
まあ暇だったんでサンプルコードを作ってみた。
改行は省いてあるので自分で適当に入れて読んで欲しい。

インターフェイスIHogeListは、要素側から呼ばれるメソッド
(IHogeList_OnTextChanged)を隠蔽するためだけに使われていて、本来は不要なものだ。

あと、cHogeListのAddプロパティは本来メソッドにすべきだが、たぶんVBの
制約だと思うんだけどファイルスコープを跨ぐとコントロールをメソッドの引数としては
渡せないようなのでやむなくプロパティにしてある。
591590:2007/07/22(日) 13:38:45
'######## クラスモジュール cHoge ########
Public Event TextChanged()
Private mText As String
Private mHogeList As IHogeList
Private mIndex As Integer

Public Property Let Text(txt As String)
  If txt <> mText Then
    mText = txt
    OnTextChanged
  End If
End Property

Private Sub OnTextChanged()
  RaiseEvent TextChanged
  mHogeList.OnTextChanged (mIndex)
End Sub

Public Property Set HogeList(list As IHogeList)
  Set mHogeList = list
End Property

Public Property Let Index(idx As Integer)
  mIndex = idx
End Property
592590:2007/07/22(日) 13:41:45
'######## クラスモジュール IHogeList ########
Public Sub OnTextChanged(Index As Integer)
End Sub


'######## クラスモジュール cHogeList ########
Implements IHogeList
Const mInitialSize As Integer = 10
Private mHogeList() As cHoge
Private mCount As Integer
Public Event TextChanged(Index As Integer)

Private Sub Class_Initialize()
  ReDim mHogeList(mInitialSize - 1)
  mCount = 0
End Sub

Private Sub IHogeList_OnTextChanged(Index As Integer)
  RaiseEvent TextChanged(Index)
End Sub

Public Property Set Add(hoge As cHoge)
  Set mHogeList(mCount) = hoge
  mCount = mCount + 1
  If mCount >= ArraySize Then
    IncreaseArraySize
  End If
End Property
593590:2007/07/22(日) 13:42:25
Private Sub IncreaseArraySize()
  Dim newSize As Integer
  newSize = ArraySize + mInitialSize
  ReDim Preserve mHogeList(newSize - 1)
End Sub

Private Property Get ArraySize() As Integer
  ArraySize = UBound(mHogeList) + 1
End Property

Public Function CreateHoge() As cHoge
  Static hogeCount As Integer
  Dim hoge As New cHoge
  Set hoge.HogeList = Me
  hoge.Index = hogeCount
  hogeCount = hogeCount + 1
  Set CreateHoge = hoge
End Function
594590:2007/07/22(日) 13:43:36
'######## Form1 ########
Private WithEvents mHogeList As cHogeList
Private mHoge1 As cHoge
Private mHoge2 As cHoge

Private Sub Form_Initialize()
  Set mHogeList = New cHogeList
End Sub

Private Sub Form_Load()
  Set mHoge1 = mHogeList.CreateHoge
  Set mHoge2 = mHogeList.CreateHoge
  Set mHogeList.Add = mHoge1
  Set mHogeList.Add = mHoge2
End Sub

Private Sub mHogeList_TextChanged(Index As Integer)
  Debug.Print ("Text of Hoge" & CStr(Index) & "changed !")
End Sub

Private Sub Text1_Change()
  mHoge1.Text = Text1.Text
End Sub

Private Sub Text2_Change()
  mHoge2.Text = Text2.Text
End Sub
595デフォルトの名無しさん:2007/07/22(日) 18:45:08
>>590
どうして、そこまでWithEventsに固執するん?
とにかく見かけ上コントロール配列を真似たいんなら、それなら添え字でアクセス出来ないのはどうかと思うし
cHogeListも中途半端な実装だし、これなら素直にCollectionか配列にしたほうがいいと思うけどなぁ
cHogeListがcHogeにべったり依存していて、まったく使い回しが効かないし
10個づつバッファ確保とか、そんな中途半端な最適化はしない方がいいと思うよ
まあ最適化は、今回の件とは関係ないけどさw
596560:2007/07/22(日) 18:46:07
>>590
おおっ、ありがとうございます。
早速読み解いてみます。
597560:2007/07/22(日) 19:29:08
一応自分の書いたものをアップしておきます。
http://gamdev.org/up/img/9827.zip
暇な人は見て下さい。パスはwitheventsで
598デフォルトの名無しさん:2007/07/22(日) 20:10:21
>>597
なんかしっくりこない
それが俺の勉強不足なのか俺の認識不足なのか、それともVBの言語上の限界なのかもよくわからん。

配列(or リスト)のリスナを作りたいってことなのか?
それっぽいの作ったからちょっと見てくれ
C:\ \hagehoge.zip
599デフォルトの名無しさん:2007/07/22(日) 20:10:53
よくあるバグだ

配列(or リスト)のリスナを作りたいってことなのか?
それっぽいの作ったからちょっと見てくれ
http://gamdev.org/up/img/9828.zip
600デフォルトの名無しさん:2007/07/22(日) 20:13:13
>>595
本当馬鹿だなw
だから何もわかってないお馬鹿さんは黙ってなって。
何が迷惑ってこういう自分が馬鹿だと気づいてない馬鹿が一番始末に負えないんだよな。

一々全部反論して欲しい?
なんならやるけど。
601デフォルトの名無しさん:2007/07/22(日) 20:15:14
>>600
口先でごまかさないで全部反論してみろよ
まぁ顔真っ赤にして書いても支離滅裂になるだけだろうけどなw
602デフォルトの名無しさん:2007/07/22(日) 20:29:28
>>595, >>601
じゃあご要望のお答えして。

>どうして、そこまでWithEventsに固執するん?
それが560の出した「お題」だから。

>添え字でアクセス出来ないのはどうかと思うし
目的は、コントロール配列のイベントライクな機能の実装をデモすることだから。
「欲しいもの」と直接無関係な冗長なコードが付いてたら読むのもコピペするのも
手間が増えるだけでしょうが。

それに、それが必要であればあればゲッタをひとつ追加するだけだ。

>cHogeListがcHogeにべったり依存していて、まったく使い回しが効かないし
馬鹿も休み休み言えw

こうやってcHogeListというクラスをわざわざ用意することによって、
cHogeでコントロール配列的なイベントを実現しようと思うときに、
そのロジックをcHogeを使うクラス(たとえばForm1)に「べったり」書かなくて
良くなってるんだよ。

>10個づつバッファ確保とかそんな中途半端な最適化
最適化が目的なのではないw
クラス名を「〜List」としたから、その名前にあわせて
任意の数の要素を追加可能にするための実装。


まあ、御託はいいから君も対案出してみな。
評価して差し上げるから。
603デフォルトの名無しさん:2007/07/22(日) 20:40:57
>>602
だから、口先だけで、ごまかさないで、全部反論してみろっつってんだろぉ?
日本語わからないのかな?
それと、もう子供遊びに付き合ってる暇はないから
さようなら
604デフォルトの名無しさん:2007/07/22(日) 20:45:22
まるで「池のめだか」のセリフだねw
605デフォルトの名無しさん:2007/07/22(日) 21:03:56
>>604
だって、単語を並べてるだけで、何も実が無いんだもの
実の無い木から果物は取れないんだよ?
それとも、何か、言いたいことが、あったのかな?
606560:2007/07/22(日) 21:06:03
>>599
頂きました。今から勉強してきます
607デフォルトの名無しさん:2007/07/22(日) 21:17:03
うーん、599はちょっと違うんじゃないの?
608デフォルトの名無しさん:2007/07/22(日) 21:37:08
>>607
ああそうかも
今なんとなくつかめた

>>560の引用:
> '==General==
> Private WithEvents clsTEST(10) as Class1 'Error
> '===========
> Private Sub clsTEST_Change(Index as Integer)
> 'イベント
> End Sub

つまり、
 ・”配列clsTEST()というオブジェクト”が、”配列の要素の変化というイベント”をキャッチして、”自らの管理元(Form?)”に通知する。
ということをやりたいのか?かなり特殊だな…。今思いつく問題点としては、
 ・配列clsTEST()の管理元が単一という明示的な保障が無い (clsTEST()からすると、管理元は誰か?に対して応えることが出来ない/複雑)
  →よく考えれば何とかなるな。
 ・配列clsTEST()は「内部要素の変化」という抽象的な概念をキャッチしなければならない (”事象の変化”の定義は千差万別)
  →Compareする機能を外付けする必要がある
かな。

配列の要素の変化をフックで着ないとダメっぽいから
609デフォルトの名無しさん:2007/07/22(日) 22:32:55
>>595
> cHogeListがcHogeにべったり依存していて、まったく使い回しが効かないし

とりあえず>>595が デザインパターンと全く縁の無い生活をしている事は分かった

っていうか Variant型大好きだろ

cHogeListはcHogeの集合だから 依存してないと馬鹿
610560:2007/07/22(日) 22:44:29
頭ん中がHogeHoge言ってる・・
>>590理解できた範囲で、
データ(Text)入力→cHoge,Event発信→(IHogeList)→CHogeList,受信⇒発信→Form
確かにcHogeがクラスの機能を果たせてますね。Implementsも利用価値がイマイチ分からなかったので参考になります
これでmHoge1,2を隠匿すれば自分のやりたかったものになりそうです
611デフォルトの名無しさん:2007/07/22(日) 23:09:24
>>609
つーか cHoge を直接突っ込むつくりにするんじゃなくて普通 IHoge とか作って
そいつを cHoge に Implements するだろ、常識的に考えて・・・
そこでVariantとかいう発想が出てくるお前がデザパタがどうのなんて言う資格があるとは思えんなw
612デフォルトの名無しさん:2007/07/22(日) 23:14:05
>>610
本当はcHogeのイベントは全く使われてない(cHogeのイベントをcHogeListが
受信しているわけではない)んだけどね。

あえて実際には使われてないイベントを定義してある。
その方がプログラムの理解に役立つと思ったからだけど、逆効果だったかもしれない。

あと、cHogeListがTextChangedイベントで発信するIndexの値をcHogeに持たせるようにしてあるけど、
これは手抜きをするためで本当は良くない設計だと思う。
613560:2007/07/22(日) 23:14:17
>>599これは自分の考えた方法と同じと見ていいんでしょうか?
バリアントは自分では殆ど使わないんで勉強になります。
(ユーザー定義入るんだ・・、取り出すのどうすんだろ?←調べてる途中です)
614560:2007/07/22(日) 23:28:42
>>612
実際はcHoge::mHogeList.OnTextChangedを捕まえているんで良いんですよね?
Index値についてあまり良くないってのは何となく分かりますけど、発信(呼び出し)元を
cHogeListから手繰れるんでしょうか?
615デフォルトの名無しさん:2007/07/23(月) 14:12:42
開発マシンが、VB6+エクセル2003(WinXP)、
実行マシンが、VB6+エクセル2000(Win2000)です。
エクセル2000とエクセル2003で、挙動が大分違うので困っています。
セル(F2)には、数値が入力されています。
intA = xlSheet.Cells(2, 6).value
エクセル2003だと正常取得されるのですが
エクセル2000だと正常取得できません。。。
で、今度、
intA = val(xlsheet.cells(2,6).value)
だと、エクセル2000だとうまくいくのですが
エクセル2003だと数値に0が入ってしまいます。
いい方法がありましたら、よろしくお願いします。
616デフォルトの名無しさん:2007/07/23(月) 14:48:22
正常取得できません
ってのはどうなるかkwsk
617デフォルトの名無しさん:2007/07/23(月) 14:58:47
>>616
セルF2に150が入っていても、0になるんです。><
618デフォルトの名無しさん:2007/07/23(月) 15:06:39
>>615
参照設定外してObjectにすれば解決しない?
619デフォルトの名無しさん:2007/07/23(月) 15:29:54
>>618
ファイルを開くことができなかったんで、その1つのブロシージャだけ
Objectにしたんですけど、そのプロシージャでこの様なんです。。。
620デフォルトの名無しさん:2007/07/23(月) 16:03:06
>>619
>その1つのブロシージャだけObjectにした
ってのがよくわかんないんだけど、
同じプログラム内で別プロシージャでは
Hoge As Excel.Worksheet
とかやってるってことかな。

参照設定外してないんじゃないの?
621デフォルトの名無しさん:2007/07/23(月) 16:20:34
>>620
そうです。
他のプロシージャではセルに罫線とか引いてて予約語を変えるのが
面倒だったんで。。。
622佐一:2007/07/23(月) 22:15:41
Visual Basic 6.0使っています。
フォーム内のボタンを押して、
Shell("MSACCESS.exe △△△",・・・)から
データベースファイル△△△を起動します。

△△△が起動している間は、
・ボタンを押しても△△△を新たに起動させず
・既に開いている△△△が最前面に来るようにするには、
 (フォームが最背面、フォアグラウンドになればいい)
 どうすればいいのでしょうか?


アプリケーションのハンドルを取得し
setForeground(ハンドル名)
として、アプリのフォームをフォアグラウンドにしようとしましたが
setForegroundの戻り値は、Trueなのに、
ボタンを押しても、既に開かれている△△△が最前面になってくれません。
623デフォルトの名無しさん:2007/07/23(月) 22:32:16
624デフォルトの名無しさん:2007/07/24(火) 02:09:07
言語=VB6.0 OS=windowsXP DB=ACCESSなど
はじめまして、ど素人プログラマです。
VBとはあまり関係がないのですが、ふだん業務系アプリケーションを
作成していて、今更だれにも聞けない疑問があったります。
マスタ保守で処理区分に削除がありデータを削除をしたとき、その対象データを
@物理削除する場合と、A削除フラグをたてる場合がありますよね、、
@とAの違いを具体的に教えてくれませんか?
625デフォルトの名無しさん:2007/07/24(火) 02:43:17
削除フラグの場合は
あとから復旧できるんじゃない?
626デフォルトの名無しさん:2007/07/24(火) 02:58:28
1.は復旧が出来ない。使用データだけなので無駄が無い
2.はサイズが減らない。データ数が多いので検索ソートに無駄が増える
この辺?
627デフォルトの名無しさん:2007/07/24(火) 03:48:20
削除フラグが立ってる
データ-は検索しないんでないの?
628デフォルトの名無しさん:2007/07/24(火) 04:18:39
しないだろうね。でも参照はする訳で、ちょっと嫌
629デフォルトの名無しさん:2007/07/24(火) 04:47:58
それはたぶんあれだよ、
削除フラグがついていない
データ-だけをさがしてきて
インデックスする作業を夜中にして、
そのインデックスの中だけを
検索するんだよきっと
630デフォルトの名無しさん:2007/07/24(火) 07:21:36
>>624
業務では通常、物理削除は行いません
論理削除が基本です
ケースバイケースなどと反論する人もいるでしょうけど
基幹システムや業務で使われる重要なDBでは、論理削除を選択しておけば間違いはありません
尚、VBのことと全然関係がないので、違いについてはDB板か教えてGooで訊いてください
631デフォルトの名無しさん:2007/07/24(火) 11:11:55
僕は物理削除ちゃん!
632デフォルトの名無しさん:2007/07/24(火) 12:06:09
俺は論理削除で
物理削除時は 管理者権限+現在のほかのデータに削除しようとしているデータがなければ削除OK
まぁ 普通だとは思うけど
633デフォルトの名無しさん:2007/07/24(火) 12:27:52
RDBの場合削除フラグより履歴テーブルを別に持って
そっちにコピーしたほうがいいケースも多い。
もし主キーが削除フラグを含んだ複合キーになってるようならRDB的には
方向を誤ってるから要注意。そういうシステムはたまに見かけるけどね。
634デフォルトの名無しさん:2007/07/24(火) 20:15:59
言語=VB6.0 OS=windowsXP DB=ACCESSなど
こんにちは、ど素人プログラマです。

自分が今まで携わってきたシステムは、VBでテーブルの操作(挿入、更新、削除)を行うとき、
@SQL文(Insert文、Update文、Delete文)を使う場合と、
AADO、DAOなどでレコードセットを生成して操作する場合
がありました。

@は帳票出力PGなどで、結合をしまくって複雑なSQL文を記述しなければなりませんでした。
 また、デバッグができないのでテストをするのに苦労しました。

Aはデバッグができるため自分が作ったPGのテストは容易にできます。
しかし、他の人が作ったPGを修正しなければならないときなど、ソースの解析が大変です。
中には、Seekなどを使用せずにベースとなるテーブルの1回のループの中でSQL(マスタ検索など)を
バンバン行っているソースもありました。 → レスポンスがめちゃくちゃ悪い

自分はこの業界に入ってからずっとAの方法で開発してきましたが、
最近、@で開発しているプロジェクトに参加しました。
その結果、Aよりも@の方が直感的にいいと思いはじめました。
しかし、なぜ@の方がいいのかという説明を
Aで開発をしている人たちに具体的にすることができません。

どうかアドバイスをもらえないでしょうか?
635デフォルトの名無しさん:2007/07/24(火) 23:49:31
>>634
単純に速い
636デフォルトの名無しさん:2007/07/25(水) 00:29:42
>>634
フォーマットがしっかりしているものの方が流用しやすい
637デフォルトの名無しさん:2007/07/25(水) 00:39:50
どっかで見たことがあるなー、とおもったら、
ドメインロジックをどこに置くかの話か。
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?DomainLogicAndSQL
638デフォルトの名無しさん:2007/07/25(水) 18:37:05
あるformが開いた瞬間に別のformを表示させるという事をやりたくて
unload me
formα.show
とやったら目的のformは開くのですが、既にunloadされています
というエラーが出てしまいます
この書き方以外にもある条件を満たした瞬間に別のformを表示させる
ということができるプログラムの書き方をご存知の方いますか?
639デフォルトの名無しさん:2007/07/25(水) 18:55:10
だから日本語書けよ。
他人に通じるまともな日本語ひとつ書けないでプログラミングなんてへそ茶もいいとこだぞ・
640デフォルトの名無しさん:2007/07/25(水) 20:54:10
元のフォームを消す前に新しいフォーム開いた方が安全じゃないか?
641デフォルトの名無しさん:2007/07/25(水) 21:21:22
unload me
formα.show

の一行目を取ったら他のフォームに飛ぶことができないんですが
何か別の表現があるんですか?
642デフォルトの名無しさん:2007/07/25(水) 21:30:16
この馬鹿、馬鹿のくせに頑固で無反省だなw
だからそんな駄文じゃ誰にもお前さんの言いたいことは伝わらないよ絶対。
643デフォルトの名無しさん:2007/07/25(水) 21:41:06
インスタンスという言葉を知っているかね?
644638:2007/07/25(水) 22:15:24
すいません、確かに説明で省いてた部分があったため
イメージが全然しにくくさせてしまっていました・・・
簡単に言うとformが1〜3までの3つあるとして
初め1が開いて30秒後に2が開き、また30秒後に1が開きそして2が30秒後に開く・・・
というのを10回くらい繰り返し、10回目の1が開いた30秒後に2ではなく3を開く
といったことをしたくて、全ての画面の行き来は
unload me
formα.show
で行なっていて、最後にform3が開きはするんですが
「既にunloadされています 」といったようなエラーが出てしまうので
これを改善するためのアドバイスを下さい
よろしくお願いします
645デフォルトの名無しさん:2007/07/25(水) 22:21:01
表示だけ切ればいいだろ
646デフォルトの名無しさん:2007/07/25(水) 22:45:13
こんなに日本語駄目な人いるんだね
647デフォルトの名無しさん:2007/07/25(水) 22:55:42
なんで新しい画面を作りたがるんだろう
無駄だと思うんだが

簡単にやろうとするならば>>645がいうようにフォームのVisibleだけいじればいいと思う
648638:2007/07/25(水) 23:17:57
form3が開くたびに変数finalは1ずつ増加します

If final = 10 Then
Form3.Visible = False
Form4.Show

End If

とやってみましたが、条件を満たした時にform3が消えないです・・・
他に何が足りなさそうですか?
649デフォルトの名無しさん:2007/07/25(水) 23:22:04
>>648
ちょっとその
Form3.Visible = False
ところにブレークポイントしかけてみ?
本当にそこ通過してるのか?

650デフォルトの名無しさん:2007/07/26(木) 04:08:34
>>648
>Form4.Show⇒Form4.Visible=Trueの方が
直接指定しないでインスタンスを考えた方がいいよなぁ
651デフォルトの名無しさん:2007/07/26(木) 07:25:19
暗黙のFormと同名のオブジェクト変数は
VB6のいいところと悪いところ全部あらわしてる
652デフォルトの名無しさん:2007/07/26(木) 07:27:29
Mainの最初でNothing突っ込んどくな
653デフォルトの名無しさん:2007/07/26(木) 07:33:34
>>652
軽く意味無かたぜ
Option Explicit

Sub Main()
Set Form1 = Nothing
Debug.Print Form1 Is Nothing
Form1.Caption = "aa"
Form1.Visible = True
End Sub

内部では Public Form1 As New Form1 だもんな

VB6はついでに"New"キーワードの使い方も異常
654デフォルトの名無しさん:2007/07/26(木) 10:41:22
>>653
こういうことだろ
Public Form1 As Form1
Sub Main()
Set Form1 = Nothing
End Eub
もしくは
Private Sub Form_Initialize()
Set Form1 = Nothing
End Sub
どっちでもできるけど、前者のほうが優れているかね
655デフォルトの名無しさん:2007/07/26(木) 12:46:07
>Public Form1 As Form1
public F1 as Formとか名前を変えるな。同名って何か気持ち悪くない?
656デフォルトの名無しさん:2007/07/26(木) 12:57:12
>>655
お前はまったくわかってない
657デフォルトの名無しさん:2007/07/26(木) 13:00:07
適切なスコープになるからいいと思うけど
うちの会社はクラスと同名の名前は切らないようにしているな
658デフォルトの名無しさん:2007/07/26(木) 13:02:00
>>648
Form3.Hide

ってやっても消えない?
659デフォルトの名無しさん:2007/07/26(木) 13:03:14
>>658
おいい・・・一緒だろ・・・・
660デフォルトの名無しさん:2007/07/26(木) 13:08:44
655=657か?
お前は大きく誤解してるから、もう一度読み直した方がいい
661655:2007/07/26(木) 16:58:15
>>660 655≠657です
気持ち悪いというだけなんだけど、それが誤解なん?
「変えなくてもいい」じゃなくて「変えても問題ない」から変えておく
662デフォルトの名無しさん:2007/07/26(木) 17:08:21
>>652-654 は既定(暗黙)のインスタンスを禁止する方法を言ってるのだと思うよ。
奇妙に見えるのはその為で。
663デフォルトの名無しさん:2007/07/27(金) 14:45:17
VB6についての質問です
ある値(bytVal)の3ビット目以上をシフトするというプログラムを書いたんですが、
ビットシフト命令が無いので
i=(bytVal \ &H8&) * &H10& + (bytVal mod &H8&) (※桁溢れはしないものとします)
としたんですが、コンパイルすれば最適化されるんでしょうか?
664デフォルトの名無しさん:2007/07/27(金) 16:33:19
lがLong型の時
l = l \ 8 は
cdq
and edx,7
add eax,edx
sar eax,3
l = l \ 16 は
cdq
and edx,0Fh
add eax,edx
sar eax,4
になった
Byte形では\演算子はshrになった
665663:2007/07/27(金) 16:40:00
アセンブリは良く分かりませんが、最適化はされているようですね。
ありがとうございます
666名無しさん@そうだ選挙に行こう:2007/07/29(日) 10:50:58
まだVB初めて3ヶ月のものからの質問ですが
マルチラインをTrueにしておいて実際に改行されたとき
改行されたというフラグがほしいのですが
そういうのってできますか?
667名無しさん@そうだ選挙に行こう:2007/07/29(日) 11:19:14
この期に及んでVBはじめるって正気の沙汰とも思えないが。。

質問の答えに関しては、TextにVbCrLfが含まれるかどうかで恐らく判定可能でしょう
668名無しさん@そうだ選挙に行こう:2007/07/29(日) 12:21:58
もう少し詳しく教えてください^^;
どうやって含まれているか判別すればいいんですか?
どんな関数を使えばいいのですか?
669名無しさん@そうだ選挙に行こう:2007/07/29(日) 12:34:46
失礼します。環境はVB6.0、Access2000です。
AccessのフォームからMicrosoft Web Browserオブジェクトを
を実行してHTMLを取得するツールを作成しているのですがたまに

エラー:オブジェクトがありません。

のスクリプトエラーメッセージが出てしまいます。



通常のIEの設定では

「スクリプトエラーごとに通知を表示する」をチェックなし
「スクリプトのデバッグを使用しない」をチェックあり

にしているので普通にIEブラウザからアクセスした場合にはエラーは出ないのですが
IEの設定はここでは反映されないのでしょうか?
このエラーがでないようにしたいのですがなにかアドバイスいただけないでしょうか?

670名無しさん@そうだ選挙に行こう:2007/07/29(日) 13:07:54
>>668
少しは自助努力をしろよw
VBの文字列扱う関数なんて数えるほどしかないだろう。
671名無しさん@そうだ選挙に行こう:2007/07/29(日) 13:35:36
>>667
Instrという関数を使用してVbCrLfという文字を探すようにプログラムを
組みましたがtextの値が改行されているのにそのような反応が出ません。
表面上にはもちろんVbCrLfという文字は出ませんよね
内部でVbCrLfを使用していると思うのですがそれを検索できる方法はどうやるんですか?
672名無しさん@そうだ選挙に行こう:2007/07/29(日) 13:49:53
>>671
試したけど、Instrで十分取れるなぁ。ブレークポイント置いて調べてみて
673名無しさん@そうだ選挙に行こう:2007/07/29(日) 13:51:18
>>671
InStrで普通に見つかるのだが何か変なことやってない?
例えば InStr(Text1.Text, "vbCrLf") とか。
674名無しさん@そうだ選挙に行こう:2007/07/29(日) 14:03:07
>>673
そんな感じでやってます
InStr(Text1.Text,vbCrLf)
です
675名無しさん@そうだ選挙に行こう:2007/07/29(日) 14:10:33
>>674
それだと最初に見つかった位置を返すだけだぞ。
ヘルプでInstr関数を調べましょう
676675:2007/07/29(日) 14:26:05
あとイベントドリブンの事分かっていれば他の方法も浮かぶとおもうんだが
677名無しさん@そうだ選挙に行こう:2007/07/29(日) 14:31:31
ヘルプ見たらCD要求してきたのでgoogleで検索してみたら
色々書いてありました
でもどこが悪いのかわかりません

イベントドリブンというのもわかりません
678名無しさん@そうだ選挙に行こう:2007/07/29(日) 14:32:48
keydownもkeypressも分からんのか
679名無しさん@そうだ選挙に行こう:2007/07/29(日) 14:36:54
そういうのはわかります
そこに改行されたらというイベントがあるのですか!?
680675:2007/07/29(日) 14:38:56
>>678
F8でステップ実行してプログラムの流れを理解。あと基本的な用語とその意味を
知らないと会話にならないから、勉強して
681675:2007/07/29(日) 14:40:43
>>679
>>678が分かるなら、その中に処理を書く方法もあるって事。keydownはどういう時に
呼び出されるんだい?
682名無しさん@そうだ選挙に行こう:2007/07/29(日) 14:42:40
>>681
キーボードの下を押したときにイベントが動くと思ってました。
どうやら違うみたいですね
683名無しさん@そうだ選挙に行こう:2007/07/29(日) 14:46:39
調べましたがこれが改行とどう関係があるのですか?
684名無しさん@そうだ選挙に行こう:2007/07/29(日) 14:59:38
keypressやkeydownが実際にどういう動きを行うものなのかテストしてみればいい
調べるだけではなく、試してみなよ
685675:2007/07/29(日) 15:03:32
つ[キー定数]
686名無しさん@そうだ選挙に行こう:2007/07/29(日) 15:04:26
クリップボードからの貼り付けとか考慮すると、keydownもkeypressはあまりお勧めしないが…。
687675:2007/07/29(日) 15:13:05
>>686
それはそうなんだけど、それ以前の問題な気がするんで。
688名無しさん@そうだ選挙に行こう:2007/07/29(日) 15:49:54
3ヶ月も勉強してこれか・・・
マジで悲しくなるな
689名無しさん@そうだ選挙に行こう:2007/07/29(日) 15:51:10
ところでなんで>>674の Instr はだめなの?
690675:2007/07/29(日) 15:53:44
>>689
始点を決めないと常に同じ値(先頭からの位置)を返すので、そのままでは判定には使えない
InstrRevならまだ有りなんだろうが
691名無しさん@そうだ選挙に行こう:2007/07/29(日) 15:55:53
馬鹿ばっかりだな本当にw

>>690
なんでそうなるんだ?w
692名無しさん@そうだ選挙に行こう:2007/07/29(日) 15:58:43
>>690
テストで a という文字を検索した場合はできました
また ab というように2文字にしても問題なかったです
でも vbCrLf はだめでした
text1.textっていうのがまずいのですか?
693675:2007/07/29(日) 15:59:05
改行を調べたいんでしょ?
InStr(Text1.Text,vbCrLf)←これ、そのまま使い道ある?
694675:2007/07/29(日) 16:03:42
>>692
確認:実際に改行している?それとも折り返しした場合を考えている?
695名無しさん@そうだ選挙に行こう:2007/07/29(日) 16:05:45
折り返しした場合です
マルチラインにしていて自動で改行されてるときを知りたいんです
696名無しさん@そうだ選挙に行こう:2007/07/29(日) 16:07:19
Private Sub Text1_Change()
  If InStr(Text1.Text, vbCrLf) = 0 Then
    Debug.Print ("Single line text !")
  Else
    Debug.Print ("Multi lines text !")

  End If
End Sub

こんなの小学生時代の俺でも思いつくと思うわ。
っていうか、こんなのも分からない奴は根本的にPGとしての適正を欠いているとしか言いようがないよ
697675:2007/07/29(日) 16:09:14
>>695
OK,ってかそれはその方法だと無理。一行の最大の文字数を調べるのが普通。
(=Instr関数は関係ない)
698675:2007/07/29(日) 16:11:45
>>696
>>666を読んでくれ。複数行かどうか判断したい訳じゃない
699名無しさん@そうだ選挙に行こう:2007/07/29(日) 16:15:03
>>697
プロポーショナルフォントの場合に問題があると思うけど…。
700名無しさん@そうだ選挙に行こう:2007/07/29(日) 16:15:35
そうなのか
無理なんだ。あるフォントで、あるtext幅での最大文字数って調べられるんですか?
701名無しさん@そうだ選挙に行こう:2007/07/29(日) 16:19:07
可能だけど、 それよりも EM_GETLINECOUNT を調べると幸せになれると思うよ。
702675:2007/07/29(日) 16:29:01
APIを使えるんならそっちの方がよほど楽だな
>>700
どのフォントでも、っていうならAPIを使う。
フォントを限定するなら(MSPを使わない等)、泥臭くやる方法も有るけど・・、勧められないなw
703名無しさん@そうだ選挙に行こう:2007/07/29(日) 16:35:19
みなさん初心者の私に優しく教えていただきありがとうございました
ちょっと選挙いってきて帰りにメシ食べてきます

これからもがんばります

704名無しさん@そうだ選挙に行こう:2007/07/29(日) 17:43:10
>>698
666を普通に複数行かどうかの判断にしか読めない。
ひょっとして「折り返し」も含めるという意味で言ってるのか666は。

だったら、まあ君に文句いってもしょうがないけど、「改行」なんて言葉を
使うべきではなかったな。

それならたぶん701が言ってるSendMessageでEM_GETLINECOUNT送る方法で
判別可能だろうね。
705704:2007/07/29(日) 17:44:34
意味は分かってもらえると思うけど
なんか変な日本語になっちゃったなごめん。
706698:2007/07/29(日) 18:42:02
そうなんだよな、意図が読みきれない所為で余計な手間が掛かってしまった・・
>>691
ある意味、これのお陰で何をしたいか分かったようなもんだしなw
707デフォルトの名無しさん:2007/07/31(火) 01:43:38
vb6で、ピクチャーボックスに描画した図形を
アンチエイリアシングするにはどうすればいいですか?
なかなか使えそうなサンプルが見つからない・・・
708デフォルトの名無しさん:2007/07/31(火) 01:59:32
709デフォルトの名無しさん:2007/07/31(火) 07:37:30
「ワード」など 国 は購入せず
http://www.mail-archive.com/[email protected]/msg07069.html

「ワード」や表計算の「エクセル」といった製品について、国の省庁では今日
からこうしたソフトを原則新たに購入しないことになりました。互換性があり、
国際的な基準などを満たすソフト以外認めない

http://file2.heiwaboke.com/blog/img/2007/07/01/04-0001.jpg
http://file4.heiwaboke.com/blog/img/2007/07/01/04-0001-01.jpg
710デフォルトの名無しさん:2007/07/31(火) 08:12:40
コピペ君って馬鹿だな、まで読んだ。
711デフォルトの名無しさん:2007/07/31(火) 12:29:59
まあでも誤解する奴のいないように書いておく。

「WordやExcelが購入できなくなることはない」,総務省がNHK報道を否定
http://itpro.nikkeibp.co.jp/article/NEWS/20070702/276505/
http://www.microsoft.com/japan/presspass/detail.aspx?newsid=3123
712デフォルトの名無しさん:2007/07/31(火) 19:03:39
3つの数式を乱数で表示させ、かつその数式の計算結果が非常に近い値になるということをやりたくて
Randomize

lRet = (1001 - 1) * Rnd() + 1

xxx = 1 * Rnd() - 1
ra = (lRet + xxx) * Rnd()
rb = (lRet + xxx) - ra

xxx = 1 * Rnd() - 1
rc = (lRet + xxx) * Rnd()
rd = (lRet + xxx) - rc

xxx = 1 * Rnd() - 1
re = (lRet + xxx) * Rnd()
rf = (lRet + xxx) – re

ab = Val(CStr(ra)) - Val(CStr(rb))
cd = Val(CStr(rc)) - Val(CStr(rd))
ef = Val(CStr(re)) - Val(CStr(rf))

Label1.Caption = CStr(ra) & “-“ & CStr(rb)
Label2.Caption = CStr(rc) & “-“ & CStr(rd)
Label3.Caption = CStr(re) & “-“& CStr(rf)

と書いた結果、例えば
116 - 342 228 - 234 296-170
のように表示されてしまい、確かにこれが足し算なら計算結果は非常に近い値となるのですが、表示された引き算は決して近い値にはならないといった感じになってしまいます・・・

これは各数式の左と右の値が、足し算する場合だと他の式と計算結果が近似するようにできていて、引き算する場合だとそうなってない、ということだと思うんですが
私の目的とする、引き算の場合でも各数式の計算結果が近似されて表示される
というプログラムを実現するためにはあと何が足りないのかアドバイス頂きたいです
713デフォルトの名無しさん:2007/07/31(火) 19:13:38
>>712
>3つの数式を乱数で表示させ、かつその数式の計算結果が非常に近い値になる

ここに疑問を持たない頭が足りないと思う。
714デフォルトの名無しさん:2007/07/31(火) 19:47:27
>>712
もう何がなんだかw
キミはいったいどういう教育を受けてきたんだ?

そえともエスパーを召還するおつもりか?w
715デフォルトの名無しさん:2007/07/31(火) 19:59:54
>3つの数式を乱数で表示させ、かつその数式の計算結果が非常に近い値になる 

意味が分からん
716デフォルトの名無しさん:2007/07/31(火) 22:44:19
言語=VB6.0 OS=windowsXP DB=ACCESSなど
こんにちは、ど素人プログラマです。

VBに限った話ではないのですが、業務系のシステムでデータをテキスト出力するとき、
CSV形式なのか、タブ区切り形式なのかを決断する基準を教えてください。

業務系は画面からデータを入力するのが基本で、そう考えるとタブ文字の入力はありえない事を
考えるとタブ区切り形式がいいのかな〜 と思います。

でも、文字はダブルクウォーテーションで囲んでしまえば、カンマの入力があったとしても
問題はないですよね。

皆さんはどうしてますか?
717712:2007/07/31(火) 22:52:40
すいません、乱数で表示させた6つの整数と「−」という記号で
3つの数式を作って表示させるということです
よろしくお願いします
718デフォルトの名無しさん:2007/07/31(火) 22:58:19
>>716
カンマを入力する可能性があるならタブ区切りがいいと思う。
チェック用にはカンマ区切りを使っている&「”」を使わない(メモ帳で見て分かり易い形)
よほど変な形式にしなければどちらでも読み込めるから構わない、とは思う
719デフォルトの名無しさん:2007/07/31(火) 23:39:55
>>712
この内容なんか前にも見たことあるなぁ・・・
A=(B-C)
E=(F-G)
H=(I-J)
で、AとEとHの値が似た値にしたいってことだっけ・・・?
AとEとHはそれぞれ、B、C、F、G、I、Jの乱数値から算出したいんだっけ?
720デフォルトの名無しさん:2007/07/31(火) 23:46:23
連レススマソ

>>448

>>463
だったわ、
これのことでしょ?>>712
721712:2007/07/31(火) 23:56:55
463は自分です・・・
教えて頂いた感じで書いたら足し算の場合は実現できたけたけど
引き算の場合だとできないといった感じです・・・
やりたいのは719に書いてあることなんですが、自分のプログラムは
フォーム上にある3つのラベルに数式を表示させ、コマンドを押すと
乱数で違う数式が表示されて、かつ各数式の2つの数字の間の記号も
ランダムで「+」と「ー」が適当に入れ替わるといった感じになっています
722デフォルトの名無しさん:2007/08/01(水) 01:17:28
>>712
それは、何のソフトだ?www
723712:2007/08/01(水) 07:47:07
>>722
何のソフトというわけでもありませんがちょっと必要があって作りたいという感じです

やりたいことを分かりやすく整理すると
ラベル1、2、3、にそれぞれ数式A、E、Hが
A=(B+C)      A=(B-C)
E=(F+G) or E=(F-G)
H=(I+J)      H=(I-J)
の左か右のどちらかの形式で表示され(コマンドボタンを押すことによってランダムで表示が切り替わる)
B、C、F、G、I、J数字は毎回乱数で発生し、かつ計算結果であるA、E、Hはかなり近い値になる
ということをやりたいので、アドバイスを頂きたいです
よろしくお願いします
724デフォルトの名無しさん:2007/08/01(水) 11:19:53
>>723
おまえさあ、>466 の回答に対して一言のお礼ものべず
うまくいったのかどうかの報告もなく消えておいて
よくもまあ、いまさら名乗り出られるなw
その図太い神経には恐れ入るよ
725デフォルトの名無しさん:2007/08/01(水) 14:22:23
> やりたいことを分かりやすく整理すると
> やりたいことを分かりやすく整理すると
> やりたいことを分かりやすく整理すると
726デフォルトの名無しさん:2007/08/01(水) 14:33:34
>>723は図太い神経というより知能が低すぎて話ができない感じ。
727デフォルトの名無しさん:2007/08/01(水) 14:42:59
>>723
アドバイスをやろう。
自分の好きな数字を6つ紙に書け。
>>723に書いた式のB・C・F・G・I・Jにその6つの数字を当てはめろ。
かなり近い値になったか?ならなかったらならない理由を考えろ。

プログラム以前の問題だ。
728723:2007/08/01(水) 14:47:58
前回教えて頂いたお礼を言うのを忘れていたのは本当に申し訳ありませんでした・・・
教えて頂いた方ありがとうございます

もし私の説明で意味が分からないところ等があったら指摘してください
一応ドクターだから論文何本も書いてあるので文章力等は自信があるのですが・・・
729デフォルトの名無しさん:2007/08/01(水) 15:00:11
>>719の説明プラス

3つのラベルに
それぞれ
「B+C」「E+F」「H+I」

「B-C」「E-F」「H-I」
をランダムに表示させたい
でおkじゃないの?

説明が回りくどく感じる・・・
つか日本語でおk
730デフォルトの名無しさん:2007/08/01(水) 15:00:42
質問です。

アプリケーションの初期化時、Sub Main()の中で設定ファイルを読み込み
Load MIDForm後、MDIFormのメニューの内容をデザインしてから表示させたいのですが、

mnuItem(0)
・・・・mnuSubitem(0)
・・・・mnuSubitem(1)
mnuItem(1)
・・・・mnuSubitem(2)

としたい時に

' mnuItem(0)、mnuSubitem(0) はデザイン時作成
' mnuItem(0)
' ・・・・mnuSubitem(0)
Load mnuSubitem(1)
Load mnuItem(1)
Load mnuSubitem(2)

とコードを書いても

mnuItem(0)
・・・・mnuSubitem(0)
・・・・mnuSubitem(1)
・・・・mnuSubitem(2)
mnuItem(1)

という様な構成になってしまいます。
メニューバーに表示される項目をプログラム実行時だけで可変するのは難しいのでしょうか?
731723:2007/08/01(水) 15:05:30
>>727
ありがとうございます
プログラム以前の問題ですか・・・

>>729
そうですね
3つのラベルに
それぞれ
「B+C」「E+F」「H+I」

「B-C」「E-F」「H-I」
をランダムに表示させたい
かつこの3つの計算結果は非常に近い値になるということがやりたいことです
確かに私はグダグダ長く説明しすぎすね・・・
732デフォルトの名無しさん:2007/08/01(水) 15:26:59
>>730
不可能
mnuItem(0)
・・・・mnuSubitem1(0)
・・・・mnuSubitem1(1)
mnuItem(1)
・・・・mnuSubitem2(0)

なら可能、

mnuItem(0)
・・・・mnuSubitem(0)
・・・・mnuSubitem(1)
〜〜
・・・・mnuSubitem(9)
mnuItem(1)
・・・・mnuSubitem(10)
〜〜
・・・・mnuSubitem(11)
mnuItem(2)

という制限付きなら実現可能、
ただしメニューエディタからは定義できない
733デフォルトの名無しさん:2007/08/01(水) 15:28:00
ミス、

mnuItem(0)
・・・・mnuSubitem(0)
・・・・mnuSubitem(1)
〜〜
・・・・mnuSubitem(9)
mnuItem(1)
・・・・mnuSubitem(10)
〜〜
・・・・mnuSubitem(19)
mnuItem(2)
・・・・mnuSubitem(20)
mnuItem(3)
・・・・mnuSubitem(30)

だった。
734デフォルトの名無しさん:2007/08/01(水) 15:33:02
う〜ん、やはり不可能ですか。
他の方法を考えてみます。
ありがとうございました。
735デフォルトの名無しさん:2007/08/01(水) 18:09:16
VB6のテキストボックスで、何行目が編集されたかを把握するには
どうすればいいんでしょうか?
単に元のテキストと1行ずつ比べる方法だと、テキストの途中で改行された場合に
そこから下の行も全部ずれるので編集されたことになってしまい、困っています。
よろしくお願いします。
736デフォルトの名無しさん:2007/08/01(水) 18:56:01
>>735
>下の行も全部ずれるので編集されたことになってしまい
それを編集された事にしたくないなら、例えば行単位でフラグを持たせて改行時には
フラグを挿入する形にすれば良いのでは?(改行した行と挿入した行のみ変更のフラグを立てる)
トリッキーな感じがするな・・・
737デフォルトの名無しさん:2007/08/01(水) 18:57:41
ずれた分補正すればいいんじゃね?
738デフォルトの名無しさん:2007/08/01(水) 20:58:53
VBって絶対値を表現できる方法ってありますか?
他とば、数値Aの絶対値が50以下の時Bを実行する
のような判定をやりたいんですが
739デフォルトの名無しさん:2007/08/01(水) 21:03:20
最近馬鹿が大量発生しているな
740デフォルトの名無しさん:2007/08/01(水) 21:05:53
>>738
俺が優しく教えてやろう。
ぐぐれ、もしくはヘルプ使え
741デフォルトの名無しさん:2007/08/01(水) 22:12:24
>>736>>737
ありがとうございました。
編集で途中の行が減った場合の処理が難しいので諦めますorz
742デフォルトの名無しさん:2007/08/01(水) 22:41:39
>>738 = >>723 じゃないの?そんなに馬鹿がたくさんいるとは思えん。
743738:2007/08/01(水) 22:46:20
いや初めて来ました
これでもソニーのソフト開発部門で働いてるんですけどね・・・
プログラムは昔から触れることすら嫌いですが
調べたらなんとなく分かりました、ありがとうです
744デフォルトの名無しさん:2007/08/01(水) 22:48:25
なるほど、だからあの会社の現状が・・・
745デフォルトの名無しさん:2007/08/01(水) 22:59:47
黒木靖夫さんも無念だろうな
746738:2007/08/01(水) 23:03:29
ソニーのソフト部隊なんて初心者の寄せ集めですよ実際・・・
プログラムできないけどソフトやりたい人が行く場所
その辺の小さい独立系のSEの方がよっぽどできますよ
747デフォルトの名無しさん:2007/08/01(水) 23:06:31
まあなんか大変そうだけどがんばれ
748デフォルトの名無しさん:2007/08/01(水) 23:07:24
>>746
ナイスフォローだ
しかし
>プログラムできないけどソフトやりたい人が行く場所
やっぱ馬鹿ばっかだ
749デフォルトの名無しさん:2007/08/01(水) 23:12:39
ソニーのソフト部門と独立系SEって
給料どっちがもらえるの?
やっぱできは悪くてもソニー?
750デフォルトの名無しさん:2007/08/01(水) 23:29:41
ようはソフト部門という名の営業ってことかな
751デフォルトの名無しさん:2007/08/02(木) 00:25:05
作成したシステムのプログラムの量がかなり膨大なせいか
いざ実行しようとするとかなり速度が遅くなってしまうんですが
これって改良のしようはありますか?
いらないファイルとかたくさん消してPCを軽くするとか効果ありますか?
752デフォルトの名無しさん:2007/08/02(木) 00:28:09
>>751
実行ファイル作成時に余計なチェックを外す事である程度の高速化は可能。
コード自体が遅いかも知れない時は計測してみて重い所の改良を試みる。
基本的にVBは遅いなぁ
753751:2007/08/02(木) 00:50:11
>>752
ありがとうございます

実行ファイル作成時に余計なチェックを外す事
って具体的にはどのような事ですか?
いまいちイメージできないのでよろしくお願いします
754デフォルトの名無しさん:2007/08/02(木) 00:55:32
>>752
遅くねえよ
C言語と比べても遜色ないレベルの速度は確保できる
755デフォルトの名無しさん:2007/08/02(木) 00:57:10
>>753
プロジェクトのプロパティ->コンパイル->最適化の詳細設定
756752:2007/08/02(木) 00:58:31
>>753
今開けないから詳しくは書けないけど、プロジェクトのプロパティから実行ファイル
関連のものがあって、その中に詳細な設定、とかいうのがあったと思われる。
>>754
いや、できるけどAPIとか使いまくりだとCでよくね?とか思ったりすることが
757デフォルトの名無しさん:2007/08/02(木) 02:04:41
VBSからVB6に移行したてなのですが、
フォームを表示せずに実行するプログラムを作りたいのですが、
起動時にどれを選べばいいのですか?
標準exeとかactivedllとか色々あります
758デフォルトの名無しさん:2007/08/02(木) 02:17:30
>>757
標準でいいから、スタートアップの設定をSub Mainにすればいい
759デフォルトの名無しさん:2007/08/02(木) 12:09:20
俺も処理速度の話なんだけど
もしかしてDo whileとIfって速度に関して違いがあったりする?
同じ処理を実現するコードを両パターンで作ってみたら後者の方が
全然速い感じがするんだけど
760デフォルトの名無しさん:2007/08/02(木) 12:32:01
高速にしたいならまずVariant型を使わない事だな。
761デフォルトの名無しさん:2007/08/02(木) 14:51:44
よほどの事がない限りexeを作ると気にならないレベルだったりするけど
762デフォルトの名無しさん:2007/08/02(木) 22:48:17
VBでのログの残し方に関する質問で
form1とform2が一定時間ごとに交互に表示され、
form2にはラベルが2つあり、それぞれに毎回ランダムで
文字列が表示されるといった感じで、このform2が開いた瞬間に
表示される文字列を毎回ログ残しておきたいのですが
このようなことのやり方を分かる方いますか?
763762:2007/08/02(木) 22:51:43
5行目、「ログとして」残しておきたいです・・・

イメージとしてはform2が合計5回開くとしたらテキストファイルか何かに

Label1 Label2
aaa fff
bbb ggg
ccc hhh
ddd iii
eee jjj

といった感じで記録を残したいです

764デフォルトの名無しさん:2007/08/02(木) 23:01:07
だからそういうコード書けよ、という以外に言いようがないね。
単にファイルIOの処理がわかってないだけでしょ?
だったらまず勉強しろよ。でなきゃ話にもならんよ。

質問というのは、それで何かに躓いた時点で初めてやるもんだろ?
間違ったこといってるか?
765762:2007/08/02(木) 23:21:25
すいません、自分が書いたコードてダメだったコードは

If Label1.Caption = Change Then

Open "C:\experimentdata\kadai1\file1.dt" For Output As #1
Write #1, Label1.Caption
Close #1

ElseIf Label2.Caption Then

Open "C:\experimentdata\kadai1\file2.dt" For Output As #1
Write #1, Label2.Caption
Close #1

です。でもこれだと片方のラベルの内容しか残らず
しかも、2回目のform2が開かれた時にテキストファイルに
上書きされてしまうから結局もとのやつが消えてしまいます・・・
この辺の改良の仕方についてアドバイスよろしくお願いします
End If
766デフォルトの名無しさん:2007/08/02(木) 23:33:04
>>765
For Output

For Append

あとFreeFile使えよ
767デフォルトの名無しさん:2007/08/02(木) 23:39:08
すみません。おしえてください。
ロト6の43までの数字からrandomize関数を
使って6っコを選んで表示するツールを作っています。

accessで作るならばorder byでSQL切って
昇順に並べられるんですが、今回
VB6単体で作っていまして、乱数取得で得た
6っツのそれぞれの数値をVBコード内で
昇順に列挙したいんですが、どのようなアルゴリズムで
挑んだらよろしいでしょう???
今、publicで宣言した配列の文字型変数
dim atai(5) as string
の配列に0〜5までのインデックスを割り当て
それぞれの昇順、降順ばらばらな0埋め2桁の
値が格納されている状況です

768デフォルトの名無しさん:2007/08/02(木) 23:44:26
769デフォルトの名無しさん:2007/08/03(金) 00:04:22
>>768
非情に的確な文献ありがとうごじゃいました。解決しそうです
770デフォルトの名無しさん:2007/08/03(金) 00:14:35
>>765
1.ファイルを開きっぱなしにして書き込んでいく(アプリの終了時に必ずCloseする事)
2.後で一括して保存できるように変数を用意して値を保持しておく
771762:2007/08/03(金) 00:20:28
>>766
freefileとは何ですか?

>>770
変数が必要なのは分かっていたんですが、実際どうプログラムを
書いていけばいいかはイメージできなかったんで、
もう少しヒントを頂いてもいいですか?
772770:2007/08/03(金) 00:24:38
>>771
Dim FN as Integer
FN=Freefile()'空いているファイル番号を自動で取得

あまり勧められないが標準モジュールにでもPublicで文字配列を用意して保持しておく
>If Label1.Caption = Change Then
これが良く分からん、誰かエロい人教えて
773762:2007/08/03(金) 00:42:49
>>772
If Label1.Caption = Change Then

これは自分としては、ラベル1の内容が変わったら(つまり何か文字が表示されたら)
テキストファイルにそれを書き込む
的な意味で使いました・・・
774770:2007/08/03(金) 00:49:39
まるきり別解になるがランダムな文字列を先に必要個数用意させて置く、って言う
手段もあるが。いちいち生成&保存する必要がなければな
775デフォルトの名無しさん:2007/08/03(金) 00:54:41
>>773氏は手遅れ。
把握。

そもそもラベル1、2の値をログ出力したいとか言ってる割に、
IfとElseIfでわざわざ分けてる理由が分からん。
776770:2007/08/03(金) 01:07:55
独り言:FreefileってInt型なんだよなぁ。普通はLongかByteしか使わないのに
っつか符合なしが使えるようにして欲しい
777デフォルトの名無しさん:2007/08/03(金) 01:19:15
>>773
新手のイベントドリブンktkr
778デフォルトの名無しさん:2007/08/03(金) 01:56:56
ステップ実行してどこの行を通ってるか確認しなさい。
779デフォルトの名無しさん:2007/08/03(金) 08:15:36
何もわかってない奴に、これまた何もわかってない奴が説教たれる
滑稽な図式にしか見えんな。

だから762に対しては「勉強しろ」としか言いようがないのは最初から
明白にわかってるだろうにw
780デフォルトの名無しさん:2007/08/03(金) 08:49:12
>>779が生まれてきたばかりの赤子に必死になって「勉強しろ」って吼えてる姿に萌えた
781デフォルトの名無しさん:2007/08/03(金) 21:23:21
>>731
それ何に使うの?
数学のレポート?
本当に近い値になんのか?
782デフォルトの名無しさん:2007/08/03(金) 22:37:52
>>731は知能が低い方だからスルー。
783731:2007/08/03(金) 23:09:32
すいません、もう自力で完成させました
これでも東京京都東工かどれかのドクターなんですが・・・
すいませんプログラムできなくて・・・
将来は教授になりたいので頑張ります
プログラムの先生ではありませんが・・・
784デフォルトの名無しさん:2007/08/03(金) 23:33:42
がんばらないで下さい
迷惑です
785デフォルトの名無しさん:2007/08/03(金) 23:53:20
自力で考察、完成させる能力がない人は指導する立場にならないでください
786デフォルトの名無しさん:2007/08/03(金) 23:55:06
韓国語の先生とか?
787デフォルトの名無しさん:2007/08/05(日) 07:32:34
VB6の全てについて説明してあるヘルプって、マイクロソフトのサイトの
MSDN Onlineの中のどこにあるんでしょうか?
788デフォルトの名無しさん:2007/08/05(日) 09:48:12
>>783
当方東北○大のm1です
しょうらい下に付くかもしれませんので、
すいませんが研究室名をお教え願えませんでしょうか?
789デフォルトの名無しさん:2007/08/05(日) 11:43:20
VBで作成した、コードの中でレジストリをいじるような事をしてない
ソフトを配布インストールしてもらった後で、Windowsの「プログラムの
追加と削除」の機能を使ってそのソフトを削除しても、Windowsには
レジストリを含め、何かが肥大化したままとか、何らかの痕跡が残るんでしょうか?
790デフォルトの名無しさん:2007/08/05(日) 15:16:21
>>789に関連して、ランタイムが入っていないパソコンにランタイム付きのソフトをインストールして削除した場合、ランタイムは消えるんだろうか?
791デフォルトの名無しさん:2007/08/05(日) 15:26:32
ランタイムは個別でインスコされてんじゃない?普通は
792デフォルトの名無しさん:2007/08/05(日) 16:37:44
インストーラを何で作ったかとか95/98と2000以降などでも違う
793デフォルトの名無しさん:2007/08/05(日) 23:52:35
VB6だけで一生を終わらせるテーノーが集うスレはここでつか?
794デフォルトの名無しさん:2007/08/05(日) 23:58:26
わざわざ暇な書き込みをするテーノーが集うスレはここでつか?
795デフォルトの名無しさん:2007/08/06(月) 00:13:29
VB6以上の開発環境は、いまだに出現していない。
796デフォルトの名無しさん:2007/08/06(月) 00:24:20
>>588
GJ!
797デフォルトの名無しさん:2007/08/06(月) 19:09:14
cのDLLで  resultp = SafeArrayCreate(VT_VARIANT, 2, SA_Bounds); で作ったSAFEARRAYを
Private Declare Function get_table Lib "VB.dll" () As Variant() で宣言して戻ってきたvararr()は
vararr(0,0)とかだと値が取れるんだけど
foreach var in vararr
  var(0)
next
だと値が取れない

foreachでまわしたときにも値が取りたいです。どうしたらいいか教えて下さい
798デフォルトの名無しさん:2007/08/06(月) 19:17:10
>>797
つステップ実行&ウォッチ
799デフォルトの名無しさん:2007/08/06(月) 19:36:06
>>797
SafeArrayCreateで次元に1を指定すればよいだけではないのか?
800デフォルトの名無しさん:2007/08/06(月) 20:06:19
For Each mV1 In mVar
next
でやってウォッチは

-mvar variant/variant(0to73,0to7)
-mvar(0) variant(0 to 7)
-mvar(0,0) variant/string

mV1 variant/string <ツリー出ない

みたいな感じです
mv1で値とりたいのに・・・

次元1は意図が違ってくるので無理す
801デフォルトの名無しさん:2007/08/06(月) 20:36:21
mvar(0
0) == mV1
802デフォルトの名無しさん:2007/08/06(月) 21:08:33
>>801
どゆこと?
803デフォルトの名無しさん:2007/08/06(月) 22:09:19
意味考えたら普通はこうするな
できないけど
foreach var in vararr(0)
  var
next
804デフォルトの名無しさん:2007/08/06(月) 22:27:03
それは意味違う
arr(x,y)
arr(x)のyを回したいんじゃなくて
arrのxを回したいんだよforeachで

foreach arr in arrvar
debug.print arr(0)
debug.print arr(1)
debug.print arr(2)
next
ってやりたい
805デフォルトの名無しさん:2007/08/06(月) 22:51:01
foreach arr in arrvar
debug.print arr
next
806デフォルトの名無しさん:2007/08/06(月) 23:08:16
>>805
レスはありがたいけど意味分かってないレスはコメントに困る
807デフォルトの名無しさん:2007/08/06(月) 23:10:51
debug.print arr(0)<−いやお前がわかってない
808デフォルトの名無しさん:2007/08/06(月) 23:11:43
>>807
残念ながらそれはエラーになるんだよ
809デフォルトの名無しさん:2007/08/06(月) 23:13:22
だから当たり前だっちゅーの
ヘルプみてからまたこい
ちんぷんかんぷんなことしてなんでって言われてもわからん
810デフォルトの名無しさん:2007/08/06(月) 23:14:12
イミディエイトで?arr(0)は 型が一致しません。
当然debug.printでやっても一緒
811デフォルトの名無しさん:2007/08/06(月) 23:19:07
>>797にある通り
SafeArrayCreate(VT_VARIANT, 2, SA_Bounds); で作ったSAFEARRAYの
扱いについてなんだけど・・・

サンプルは
For Each mV1 In mVar
mStr = mV1
If i = 0 Then
mCurColumn = mStr
lvResults.ColumnHeaders.Add , mCurColumn, mCurColumn

こういう扱いかたしてる(lvResultsはLISTVIEW)

そもそも二次元配列を
foreach でやろうとしてるのが間違いか??
VBはバリアントでvar(0)(0)とかなかったっけ?混同してる?
812デフォルトの名無しさん:2007/08/06(月) 23:43:43
>>797
>resultp = SafeArrayCreate(VT_VARIANT, 2, SA_Bounds); で作ったSAFEARRAYを
>Private Declare Function get_table Lib "VB.dll" () As Variant() で宣言して戻ってきた

この部分の意味がよくわからないなあ。

それはともかく、2次元配列を受け取りたいならdll関数の宣言では
返り値はVariant( ≠ Variant() )にしといて

dim varArray(5,2) as Variant
varArray = get_table

のようにしなきゃダメじゃないのかな?
もうVBの細かい仕様は完全に忘れたので自信はないけど。

それと、var(0)(0)みたいのな二次元配列じゃなく、ジャグ配列(配列の配列)だね。
VB6では普通の方法ではサポートしてないのではなかったかな?
813デフォルトの名無しさん:2007/08/07(火) 23:18:14
>>773
ワロタ。
captionはあくまでも文字列型とみたほうがいい
そのままの日本語訳だよな
変数にキャプションを取得しておいて
なんらかのイベントの際に変更されたキャプションの文字列と
比較して判定がよろしいかと。
814デフォルトの名無しさん:2007/08/07(火) 23:36:13
>>797

>cのDLLで  resultp = SafeArrayCreate(VT_VARIANT, 2, SA_Bounds); で作ったSAFEARRAYを
第一引数はその名の通りVBでいうバリアント型、次はint,その次もint?
cはよくわからないんだけどVB.dllというCでつくられたライブラリの関数に
get_tableっていう関数があって、その関数内に
SafeArrayCreateっていうサブ関数呼び出しがあるんでしょうか?
その型が(VT_VARIANT, 2, SA_Bounds)の引数で構成されている?
Cソースコードでresultpはget_table関数の戻り値に渡される解釈でしょうか?
get_table自体のCソースコードのファンクション宣言はint型ですか?VARIAN型?
vararr()がどこにもでてこなくて解釈にこまります。
オクソクですがforeachの前に関数の戻り値の型の違いに問題ないですか
815デフォルトの名無しさん:2007/08/07(火) 23:43:11
わからない奴が質問者に向かって逆に質問して余計話をややこしくしてどうするんだよw
816デフォルトの名無しさん:2007/08/07(火) 23:51:24
いえ勉強のためにwwwww
817デフォルトの名無しさん:2007/08/08(水) 03:41:39
ぬゑぽ
818デフォルトの名無しさん:2007/08/08(水) 05:33:42
vbでゲームパッドのボタン情報を「受け取る」のではなく、
ゲームパッドへvbから「ボタンを押せ」と命令する方法ってありますかね?
819デフォルトの名無しさん:2007/08/08(水) 06:56:05
それでゲームパッドのボタンが押されたとして、
フィードバックとしてあんまし意味がないような・・・

ひょっとして、ゲームの自動操縦とかの話?
820デフォルトの名無しさん:2007/08/08(水) 09:03:29
パッドしか割り当てできないようなゲームをキーボードでプレイしたいとか?
821デフォルトの名無しさん:2007/08/08(水) 10:45:33
学校でVB使ってプログラミングしてるんだが
VBから指定のwebブラウザ(flash)を起動させる方法がどうしてもわからない...
822デフォルトの名無しさん:2007/08/08(水) 11:12:49
Shell "[ブラウザパス] [ファイルパス/アドレス]", vbNormalFocus
823デフォルトの名無しさん:2007/08/08(水) 12:32:33
>>819-820
自動操縦、マクロみたいなものを作りたいんです。
訳あってキーボードやマウスではダメで、
しかもプロセスに「キーを押したよ」っていう信号を送るのではなく、
本当に直接ゲームパッドへ命令を送ったりする方法を探しているのです。

書いてて自分でも無茶かなと思い始めた…。
824デフォルトの名無しさん:2007/08/08(水) 12:38:40
>ゲームパッドへvbから「ボタンを押せ」と命令する方法ってありますかね?
いかにも馬鹿っぽい質問だな。
多分日本語が不自由なだけだとは思うが、これじゃあパッドに自動ピアノみたいな
自分で自分をシバくメカが付いてると思い込んでる奴みたいだよw

多分仮想デバドラ書かないとダメなんじゃないかな
825デフォルトの名無しさん:2007/08/08(水) 12:57:57
仮想出刃銅鑼…デバドラでパッドとおなじ情報を吐けば
ゲームなんかへマクロだろうが何だろうが渡し放題だわな

既存のパッドでやりたいなら、そのパッドのデバドラを解析して乗っ取ることになるわな
826デフォルトの名無しさん:2007/08/08(水) 13:21:37
PPJOYというツールを見つけました。
なんでも仮想ジョイパッドを作って、それにプログラムで信号を送れるそうです。
でもサンプルプログラムの言語は当然ながらC…

できればvbでやりたかったんですが、cで頑張ってみますかね…
827デフォルトの名無しさん:2007/08/08(水) 13:29:17
むしろCをVBに変換すれば良いんじゃね?
828デフォルトの名無しさん:2007/08/08(水) 14:09:12
面倒だけど、borlandc++コンパイラでコンソールアプリケーションで実行したらうまくいきました。
vbを使おうとした理由は、単に「start」と「end」と書いたボタンを作ってそれを押したら動くような仕組みにしたかったからです。
でもまぁ、コンソールアプリケーションでもいいっちゃいいのでこれで解決かなと思います。
829483:2007/08/09(木) 00:18:21
VB6の事で質問したいのですが、テキストボックスに半角カタカナ以外の文字を入力出来ないようにしたいのです。
keypressイベントでキー入力は出来なくなったのですがコピペすると半角カタカナ以外が入力できてしまいます。
色々調べてみたのですがどうしても分かりません。誰か助けてください。
830デフォルトの名無しさん:2007/08/09(木) 01:09:23
入力されてたら消せばいいだけじゃないか
831デフォルトの名無しさん:2007/08/09(木) 02:05:18
>>829
つ「Changeメソッド」「Replace関数」「Strconv関数」
832483:2007/08/09(木) 06:38:28
もし半角カタカナ以外が含まれている文字列を貼り付けたら入力をキャンセルするようにしたいのです。
言葉足らずですいませんでした。
833デフォルトの名無しさん:2007/08/09(木) 06:39:34
IEの操作に関してお願いします

If objAAA.links(n).href = "bbb.html;" Then
objAAA.links(n).Click

この場合「リンク先がbbb.htmlの場合(完全一致)クリックする」
という指示になりますがこれを
「リンク先がbbb.htmlという文字列を含む場合クリックする」
に変えたい場合はどう書けばいいのでしょうか?

本来は*****bbb.htmlというアドレスなのですがこの*****が
日によって変わってしまうため完全一致で探すことができません
ですのでbbb.htmlの部分だけを見つけてクリックしたいのですが・・・
分かる方いましたらよろしくお願いします
834デフォルトの名無しさん:2007/08/09(木) 11:43:43
>>833
つ「Like 演算子」or「InStr 関数」
835デフォルトの名無しさん:2007/08/09(木) 12:21:14
>>832
つ InputMan Pro
836デフォルトの名無しさん:2007/08/09(木) 12:40:58
ユーザー定義の受け渡しについての質問です。
'標準モジュール(定義)
Public Type usrAAA
'色々
End Type
'クラスモジュール
Public Function GetData(Byref aaa as usrAAA) as Long
End Function
上記のやり方でエラーが出てしまいます。何が問題なのか分かりません。
837デフォルトの名無しさん:2007/08/09(木) 13:07:41
>>836
http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/9812/vb6/
「パブリックメソッドでのユーザー定義型のサポート 」
ってところに書いてあったよ
838デフォルトの名無しさん:2007/08/09(木) 13:37:00
>>836
publicじゃなくfriendにしてしまっていいんでね?
どうせvbはスコープが適当だから
839836:2007/08/09(木) 13:51:01
>>837
今読んで来ました。良く分からないんですがActiveXDLL用にプロジェクトを追加しろって事ですか?
現在はプロジェクト一つ(標準EXE)→プロジェクト二つ(標準EXEとActiveXDill)って事?
これから試してみます。
>>838
friendでやってしまっても良いんですが、エラー情報が「パブリックオブジェクトモジュールで定義された・・・」
というので標準モジュールにパブリックで宣誓する事ではないの?と思ったんです。
840デフォルトの名無しさん:2007/08/09(木) 14:25:10
VB6 + MSMAPI32.OCX のプログラムをVistaで動作させると
セッション開始後、メールのダウンロードなどは問題ないのですが

受信トレイから受信済みのメールを取り出すために、Fetchコマンドを実行すると
’実行時エラー32002 予期せぬエラーが発生しました’が発生します。

2000やXpでは問題なく動作しているのですが・・・

何か解決方法などありますでしょうか?
841デフォルトの名無しさん:2007/08/09(木) 15:27:44
>>839
> 現在はプロジェクト一つ(標準EXE)→プロジェクト二つ(標準EXEとActiveXDill)って事?
そうみたい
842デフォルトの名無しさん:2007/08/09(木) 15:46:59
プロジェクト
┣標準モジュール(Type定義)
┗クラスモジュール

じゃなくて

プロジェクト
┣クラスモジュール
┗クラスモジュール2(疑似Typeとして使用)

にしちゃえば楽なのに
843836:2007/08/09(木) 17:49:00
ActiveXDLL、訳分からない・・・
とりあえずFriendで誤魔化してます
>>842
それも有りですが、ユーザー定義内に動的配列があるのでメンテが大変になりそうで
844デフォルトの名無しさん:2007/08/09(木) 19:10:21
メンテこそクラスの方が楽じゃないか?
まぁ、慣れもあるんだろうけど。
845デフォルトの名無しさん:2007/08/10(金) 07:24:02
とりあえずクラスだとget/put出来ないから
ちょっとファイル保存の時、勝手が違って困るな

>>843
ちなみに星界は、プロジェクトの追加でActiveXDLLを作成して、
そのActiveXDLLプロジェクトの新規クラス内部で public type する
846デフォルトの名無しさん:2007/08/10(金) 08:23:05
>とりあえずクラスだとget/put出来ないから
え?
847836:2007/08/10(金) 10:33:12
>>845
余計な事考えずにそれをやったら、同じエラーが出てしまいました・・・orz
色々考えても分からないのでFriendに

ファイルアクセスは問題なく出来ますねぇ。
848デフォルトの名無しさん:2007/08/10(金) 13:12:26
ばかばかしい質問かもしれないですが。

テキストボックスに入れる数値に三桁カンマをつけるとき、
コード上でformat関数を使って表示することはできるんですが、
フォームのデザインビューで、テキストボックスのプロパティウィンドウで
最初から三桁カンマ表示をさせることってできるのでしょうか?

dataformatというのはどうも違うことまで分かったのですが。
ちょっとわからず、教えていただきたいです。
849デフォルトの名無しさん:2007/08/10(金) 17:58:55
vistaでVBは正常に動きますか?
850デフォルトの名無しさん:2007/08/10(金) 18:07:27
何をもって正常化というのかは難しいな。
851デフォルトの名無しさん:2007/08/10(金) 18:18:51
MS-C で作ったプログラムでもVistaで正常に動くよ。
852デフォルトの名無しさん:2007/08/10(金) 18:22:06
>>849
ここには、あまり詳しい人いないから質問しても無駄
853デフォルトの名無しさん:2007/08/10(金) 19:18:44
>>849
特に>>852がその典型
854デフォルトの名無しさん:2007/08/10(金) 23:30:49
MSFlexGridで、行選択をしている箇所の指定を
プログラムでやる方法はないでしょうか?
Rowで値は取得できるのですが、選択状態にすることができなくて困ってます。
よろしくお願い致します。
855デフォルトの名無しさん:2007/08/11(土) 00:37:54
>>854
Private Sub Form_Load()
  With MSFlexGrid1
    .SelectionMode = flexSelectionByRow
    .FocusRect = flexFocusNone
    .HighLight = flexHighlightAlways
    .Row = 3
    .Col = .FixedCols
    .ColSel = .Cols - 1
  End With
End Sub
856デフォルトの名無しさん:2007/08/11(土) 02:07:08
>>848
Text|123,456,789
って入れりゃいいんでねーの?
さも無きゃユーザコントロールでラップしちゃう
857デフォルトの名無しさん:2007/08/11(土) 07:06:49
ActiveXのDLLやOCXのVBPは開発時にはプロジェクト互換にしておいて、コンパイルする際にバイナリ互換にしているんだけど
間違ってプロジェクト互換のままコンパイルする可能性があるんだよね。

コンパイルされたActiveXのDLLやOCXのクラスIDやインタフェースID、ライブラリIDを取得するなりして
きちんとバイナリ互換でコンパイルされたことをチェックすることはできないだろうか?
858デフォルトの名無しさん:2007/08/11(土) 11:50:47
VB2005で×でウィンドウを閉じたいのですが、Button1を何に変えればいいのでしょうか?

Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim ans As DialogResult

ans = MessageBox.Show("終了してもよろしいですか?", "終了確認", _
MessageBoxButtons.YesNo, MessageBoxIcon.Question)

'[はい]ボタンがクリックされたとき、アプリケーションを終了する
If ans = Windows.Forms.DialogResult.Yes Then Application.Exit()
End Sub
859デフォルトの名無しさん:2007/08/11(土) 12:00:18
>>858
お前はなにもかも間違っている
860デフォルトの名無しさん:2007/08/11(土) 12:41:22
>>848
マスクエディットコントロールを使ってみなよ。
気に入らなかったらInputMan(有料)ネ。
861デフォルトの名無しさん:2007/08/12(日) 05:11:22
state.sb.Append(Encoding.Default.GetString(state.buffer, 0, bytesRead))
862デフォルトの名無しさん:2007/08/13(月) 08:47:10
質問です。スレ違いだったらスマソ。

日本語版XP、VB6.0で作成したプログラムを、英語圏の国、英語版XP上で使わせようとする場合、
表示させるメッセージやコントロールの英文化以外に気をつける事って何があります?
863デフォルトの名無しさん:2007/08/13(月) 09:39:00
それ以前に、VBはローカライズはまったく考慮されたないと思ったけど。
864862:2007/08/13(月) 09:48:31
追記です。
今回は当該プログラムを英語圏向けに新しく作り変える作業で、日本語と英語を同時に使用する事はないと思います。

この場合、>>863を見るに、組み直し、コンパイル作業も日本語OS上では行えないという事になるんでしょうか?
865デフォルトの名無しさん:2007/08/13(月) 10:03:26
可能なら英語版のOSとVBで作る事
無理ならインストーラーを作るときにVisualStudioInstallerなどでOCXの上書きを防ぐなど気を使う
866862:2007/08/14(火) 10:00:47
>>865
ありがとうございます
どのOCXに留意するかは参照している物によってくると思いますので、自分で調査してみるつもりです
867デフォルトの名無しさん:2007/08/14(火) 11:43:45
VB6.0で
Open FileName For Append As #iFile
としてファイルを開いたときの排他モードはどうなっているのでしょうか?
868デフォルトの名無しさん:2007/08/14(火) 13:48:03
質問してもいいでしょうか?

exeファイルのソースを見たいのですがどうすればみれますか?
869デフォルトの名無しさん:2007/08/14(火) 13:51:04
>>868
作者に連絡をとる
870868:2007/08/14(火) 14:22:22
>>869
それ以外に方法はないのでしょうか?
871デフォルトの名無しさん:2007/08/14(火) 14:33:40
他にあると思うか?
872デフォルトの名無しさん:2007/08/14(火) 14:49:30
デコンパイラが一応あるようだけど俺が試したときはうまくできなかった。
「VB decompiler」でググってみ。
873デフォルトの名無しさん:2007/08/14(火) 14:59:11
>868
そんなにみたいソースってどんなソフト?
オープンソースの類似ソフトであるんじゃね?
874868:2007/08/14(火) 15:26:15
>>873
これから仕事で作り変えるソフトです。
動かない機能があるのでコードを見て確認しようとしています。

>>872
ありがとうございます。
exeのソースらしきものを見ることができました。
ただ、vbのソースではないようなのですが・・・

マニュアルにもvbに近いソースが見たかったら
pro バージョンを買えと書いてあります・・・(涙

けち臭いですが、お金をかけずにソースを確認したいのです。
875デフォルトの名無しさん:2007/08/14(火) 15:50:59
>>874
ムリです
諦めてお金を払うか、アセンブリコードから類推するより他はありません
876868:2007/08/14(火) 16:05:03
>>875
アセンブリコードからですか・・・。

「vb decompiler」で作成されるコードはどうやら「 p-code(これがアセンブリコード?) 」と呼ばれるもので記述されているようなのですが、
どこか参考になるサイトはありませんでしょうか?

これを解読してみます。
877デフォルトの名無しさん:2007/08/14(火) 16:14:16
>>876
p-codeでコンパイルされてるなんて珍しいですが、まぁ同じです
ただp-codeも仮想機械の言語なので見るニーモニック表が違うだけです
878868:2007/08/14(火) 16:53:41
すいません。表が見つかりません。

それらしい表を見つけたのですが、解読できませんでした・・・

p-codeの一部を乗せます。これって本当にp-codeなのでしょうか?
---p-code?----------------------------------
Private sub cmdExit__42C1A9
0042C1A9: push ebp
0042C1AA: mov ebp, esp
0042C1AC: sub esp, 0000000Ch
〜〜〜中略〜〜〜〜
End Sub
----p-code?終了------------------------------

お願いします
879デフォルトの名無しさん:2007/08/14(火) 19:27:21
どうみてもIA32アセンブリですありがとう(ry
880デフォルトの名無しさん:2007/08/14(火) 21:23:08
855>>
教えていただいたやりかたで、できました。
どうもありがとうございました。
881デフォルトの名無しさん:2007/08/14(火) 21:29:25
リッチテキストで、バイト数で入力制限する方法ないでしょうか?
'文字数制限
Call SendMessage(R_COMMENT.hwnd, EM_LIMITTEXT,20, 0)
とやっても、テキストボックスは制限できるのですが、
リッチテキストではうまくいきません。
LenBでロストフォーカス時にやるしかないでしょうか?
初歩的な質問かもしれませんが、調べてもヒットしなかったので、
よろしくお願い致します。
882デフォルトの名無しさん:2007/08/14(火) 21:56:38
>>881
validateで入力チェックが妥当だろうね
というか「何の」バイト数なのか文脈から不明
文字のバイト数なら文字コードによって違うだろうしなぁ…しかもrichtextは文字コード非依存だし
883デフォルトの名無しさん:2007/08/14(火) 22:42:15
>>882
文字のバイト数ですね
文字コードは通常入力できるものです(おそらくSJIS?)
全角でも半角でも20文字しかいれられないようにしたいです。
validateでフォーカス移動前にチェックが妥当ですか。
これで試しにやってみます。
ありがとうございます。

884デフォルトの名無しさん:2007/08/14(火) 23:15:39
>全角でも半角でも20文字しかいれられないようにしたい

>文字のバイト数ですね
>文字コードは通常入力できるものです(おそらくSJIS?)

すでにこの時点で矛盾が・・・
885デフォルトの名無しさん:2007/08/14(火) 23:31:11
初心者ですが教えて下さい。

とあるデータを収集するサーバ(標準EXE)と、サーバからデータを引っ張るクライアント(ActiveX)を作ろうとしてます。
サーバプロセスはあらかじめ起動しておき、クライアントは不定期に起動されます(サーバとの依存なし)
クライアント起動時、サーバに対して起動されたことを通知したいのですが、どのようなやり方がいいでしょうか。
ちなみにサーバとクライアントは同一PCで動作します。

すみませんが力を貸して下さい、このままだと徹夜になりそうでs
886デフォルトの名無しさん:2007/08/14(火) 23:34:27
サーバに、こんにちわメソッドでも用意して叩けば。
887デフォルトの名無しさん:2007/08/14(火) 23:42:33
>>885
ActiveXって技術名であって標準EXEと同じ土台に建たないと思うんだが
で、仮にActiveXDLLとEXEの場合、クライアントとサーバの関係が逆だと思われ
888デフォルトの名無しさん:2007/08/14(火) 23:57:01
>>886 用意したけどクライアントから叩けません。

>>887 OCX形式のコンポーネントです。
おっしゃる通り、何だか通常の考え方の逆を行ってる感じがしてます。
DDEとかsendmessageとかメールスロットとか色々調べましたがさっぱりです。
889デフォルトの名無しさん:2007/08/15(水) 00:04:57
>>857
常にバイナリ互換にオプション選択してれば問題ない
プロジェクト互換は、プロジェクトの追加とかでテストに便利だけど、それと間違ってプロジェクト互換でActiveXと配布するリスクとのトレードオフだと思うが
890デフォルトの名無しさん:2007/08/15(水) 00:34:33
>885
普通にSocket通信でよくね?
891デフォルトの名無しさん:2007/08/15(水) 00:44:33
とりあえずインプロセスかアウトプロセスかで話が全然違う
892デフォルトの名無しさん:2007/08/15(水) 12:38:28
質問ですが、
BitBltのように画像を転送するAPIで、上下を逆に転送する方法はありますか?
シューティングゲームなど、リアルタイムで行いたいのですが、
StretchBltだと、処理がものすごく遅くなってしまいます。
また、DirectXはまだ、初心者なので慣れていません・・・
どなたか教えてくださいませんか?
893デフォルトの名無しさん:2007/08/15(水) 12:47:54
>>892
どこかに上下逆のグラフィックを遺しておけばいいんじゃない?
あとDirectXも検討しる
894デフォルトの名無しさん:2007/08/15(水) 13:01:38
>>892
描画されたゲーム画面全体を上下逆さまに描画するので、
転送もとの画像が毎回変わるので、グラフィックを残して置けません。
やはりDirectXしかないのでしょうか?
895デフォルトの名無しさん:2007/08/15(水) 21:28:09
BitBltってnHeightを負にしたりできなかったっけか。
896デフォルトの名無しさん:2007/08/15(水) 23:02:09
質問です
アプリケーション動作の記録用にログファイルを吐いているのですが
「x行を超えたら、古いログから削除する」
という機能はどうやって実現すればいいのでしょうか?

新しいファイルをオープン

古いファイルの2行目〜最新行までを新しいファイルにWrite

古いファイルを削除

新しいファイルをリネーム

でとりあえず実現はできているのですがなんだか効率が悪いような気がするのですが
897デフォルトの名無しさん:2007/08/15(水) 23:14:51
普通日付でファイル名変えたりするな
898デフォルトの名無しさん:2007/08/15(水) 23:28:50
>897
それも考えたのですが
結局の所、ログが無限に増える(可能性がある)のが気持ち悪いのです。
今のPCならディスクもでかいしキニスンナって言われればそれまでなのですが
899デフォルトの名無しさん:2007/08/15(水) 23:33:23
起動したときにでも、先月以前のログは消せば
900デフォルトの名無しさん:2007/08/15(水) 23:34:03
条件作って新たにファイル作成したり消していけばいい
901デフォルトの名無しさん:2007/08/15(水) 23:35:19
なるほどー
古いファイルを消す方向でいってみます
ありがとん
902デフォルトの名無しさん:2007/08/16(木) 10:07:26
MSFlexGridについての質問です
FlexGridの中にチェックボックスを入れる方法はありますでしょうか?
903デフォルトの名無しさん:2007/08/16(木) 10:24:04
初心者ですが

俺もMSFlexGridについての質問です。
基本ですが、ADODBでつないだテーブルを表示させるにはどうしたよいでしょうか?

基本過ぎてどこにも載っていなくて・・

DataGridのときは
DataGrid1.DataSource = rs
でいけたんですが・・・
904デフォルトの名無しさん:2007/08/16(木) 11:17:00
事故解決しますた。textmatrixできまりっ!
905デフォルトの名無しさん:2007/08/16(木) 17:28:00
>>895
それも試してみましたが、どうもできないようです。
あと、DirectXは少々僕には難しいようで・・・
906デフォルトの名無しさん:2007/08/16(木) 17:31:54
>>905
じゃあもっと難しくて高速化もそれほど望めない方法がある
DIBSection とか調べてみ。
VBだと驚くほど面倒だから
907デフォルトの名無しさん:2007/08/16(木) 18:38:08
PaintPictureは?heightに負で反転したような木がするけど
908デフォルトの名無しさん:2007/08/16(木) 21:52:11
>>906
サンプルを利用して、試してみましたが、結果的にStretchBlt同様遅くなってしまいました。
>>907
画像をLoadPicture等で読み込んだものでもないので、.Pictureの値が0となっており、エラーが発生してしまいました。

いろいろとお世話おかけしました。
やはり今のところ高速化はできませんでした。
909デフォルトの名無しさん:2007/08/16(木) 23:33:17
>>908
参考までにどこのサンプルなのかおせーて
910デフォルトの名無しさん:2007/08/17(金) 02:14:12
>>908
時間計測して、今の描写速度と欲しい描写速度の値が欲しいかな
VBで高速化しても無理なのか、今のロジックが悪いのかが分からない
911907:2007/08/17(金) 02:53:47
picture1.paintpicture picture2.image, x1, y1, w1, h1, x2, y2, w2, h2, vbsrccopy
でダメか?
picture2.pictureではなく、picture2.imageを指定だ
912デフォルトの名無しさん:2007/08/17(金) 11:37:13
受信したメールをポップアップウィンドウに表示させているのですが、更新したら、都度ポップアップウィンドウを表示させることは可能ですか?
913デフォルトの名無しさん:2007/08/17(金) 13:16:43
そういう風にコード書けば良いんじゃないの?
受信したときにポップアップ出るなら
同じ要領で更新ごとにポップアップ出せるでしょ
914デフォルトの名無しさん:2007/08/17(金) 13:17:00
>>912
その一行でどこまで伝えたいのか分からないけど、可能なんじゃない?
915デフォルトの名無しさん:2007/08/17(金) 21:27:06
Sub RotateField180(hdc As Long)
Dim lngWidth As Long, lngHeight As Long

lngWidth = FIELDW
lngHeight = FIELDH
'ファイルの幅が4の倍数であることを確認するべきである


'まずはメモリDCを作る
hMemDC = CreateCompatibleDC(hdc)

'DIBの情報を設定する
With bmi
.biSize = LenB(bmi)
.biWidth = lngWidth '4の倍数
.biHeight = -lngHeight '負の値
.biBitCount = 24
.biPlanes = 1 'これは1で固定
'あとは0
End With
916デフォルトの名無しさん:2007/08/17(金) 21:28:16

'DIBSectionを作る
hDIBSection = CreateDIBSection(hMemDC, bmi, DIB_RGB_COLORS, lpDIB, 0, 0)
'これでlpDIBはDIBが存在する場所を指すようになります。
'この段階ではDIBを操作することは出来ません。

'DIBSectionとhMemDCを関連付ける
hOldBmp = SelectObject(hMemDC, hDIBSection)
'これでDIBとhMemDCとの間には相互関係が生じます。
'BitBlt等でhMemDCに描画するとDIBにも反映されるのです。
'これこそがDIBSectionの大きな利点です。

'hMemDCにpictの画像をコピーする(DIBにも反映される)
BitBlt hMemDC, 0, 0, lngWidth, lngHeight, _
hdc, 0, 0, vbSrcCopy

'DIBを取得する
'lpDIBの指す場所にあるデータをコピーする
ReDim Dib(lngWidth * lngHeight * 3 - 1) As Byte
CopyMemory Dib(0), ByVal lpDIB, lngWidth * lngHeight * 3
'これでようやくDIBを操作できるようになった。 'DIBをいじくる
Dim i As Long
Dim tmp As Long
Dim tbl(255) As Byte
917デフォルトの名無しさん:2007/08/17(金) 21:30:02
For i = 0 To 250
tbl(i) = i + 5
Next i
tbl(251) = 255: tbl(252) = 255: tbl(253) = 255
tbl(254) = 255: tbl(255) = 255
'と事前に計算結果を用意しておいて
For i = 0 To lngWidth * lngHeight * 3 - 1
Dib(i) = tbl(Dib(i))
Next i

'描画する
StretchDIBits hdc, 10, 10, lngWidth, lngHeight, _
lngWidth, lngHeight, -lngWidth, -lngHeight, _
Dib(0), bmi, DIB_RGB_COLORS, vbSrcCopy

'次の方法でも描画できるが、メモリをコピーするコストを考えると上の方がいいかも
'CopyMemory lpDIB, Dib(0), lngWidth * lngHeight * 3
'BitBlt hdc, 10, 10, lngWidth, lngHeight, hMemDC, 0, 0, vbSrcCopy
End Sub
↑サンプルを値などを変えて作った関数がこれです。
StretchBltと比較して1階の処理時間を計測してみましたら、
StretchBltが47msに対し、
上の関数RotateField180は281ms掛かっていました。

>>911
試してみました。ダメでしたorz
918デフォルトの名無しさん:2007/08/17(金) 21:44:07
受信したデータを指定する方法が分かりません。サンプルとかあります?
919デフォルトの名無しさん:2007/08/17(金) 23:40:11
>>917
あくまでも上下を反転させるだけならBitBltで描写させた方がいいんでない?
で、画像を配列で取り出せているので上下反転は配列で変更させて置き換え。
Dib2(i)=Dib(iMax-i)←これだと左右も反転するけど
920デフォルトの名無しさん:2007/08/18(土) 10:08:29
フォームにセットフォーカスしようとすると、
プロパティエラーになってしまいます。
Call hForm.Show(vbModeless, Me)
ですべてのフォームを呼び出しているのですが、
この呼び出し方だとフォームにセットフォーカスできないでしょうか?
921デフォルトの名無しさん:2007/08/18(土) 11:47:24
>>920
自分自身を親にしてるとか?
922デフォルトの名無しさん:2007/08/18(土) 17:48:47
データを5回受信するのですが4回目だけを指定して
受信してテキストファイルに表示させたいのですが
サンプルなどありますか?
923デフォルトの名無しさん:2007/08/18(土) 18:26:57
オメーなんでスルーされんのかちったあ考えて書けよ
924デフォルトの名無しさん:2007/08/18(土) 22:27:00
>>919
ありがとうございました!試してみます!
925デフォルトの名無しさん:2007/08/19(日) 00:46:52
>>922
ないあるあ
926デフォルトの名無しさん:2007/08/19(日) 16:44:08
921>>
そうです。
親を解除する方法がわからないので、延々とvbModeless, Me
で孫フォームまで呼び出しています。
927デフォルトの名無しさん:2007/08/19(日) 18:18:08
>>915
遅レスなんだけど
908は上下反転させたいだけ?180度回転させたいの?
コードは面倒臭いので見てないが
サブルーチン名を見ると180度回転させたいのかな
928デフォルトの名無しさん:2007/08/19(日) 20:09:15
質問です。(WindowsXP,VB6)
ボタンクリックでフォルダを選択させるダイアログを表示させ、
選択したフォルダ内のファイル一覧をツール上に一覧表示させるには
どうすれば良いのでしょうか?
参考になるサイトの紹介でも何でも構いませんので、宜しくお願いします。
929デフォルトの名無しさん:2007/08/19(日) 20:23:05
>>938
SHBrowseForFolderっていうShellAPIを使う
SHBrowseForFolderにはフォルダを選択したアクション時に
コールバック関数を呼び出す事ができるので
そこで、フォルダの情報を取得させてツール?とやらに表示させればいい
930デフォルトの名無しさん:2007/08/19(日) 20:28:43
>>929
ありがとうございます。
これから調べて実装させたいと思います。
931デフォルトの名無しさん:2007/08/20(月) 08:57:37
>>927
上下反転だけできればよいです。
932919:2007/08/20(月) 10:28:15
できたかい?
俺の予想だと普通に組んで20ms程、コテコテに組んで半分くらいにまではなりそう
だけどどれくらいの早さが欲しいんだか
933デフォルトの名無しさん:2007/08/20(月) 12:05:46
>>932
CopyMemory
Bitbltの描画方法で行おうとしたら、CopyMemory時になぜかメモリ保護違反によるエラーが発生してしまいました。


あと、StretchDIBitsの処理より、

For i = 0 To lngWidth * lngHeight * 3 - 1
Dib(i) = tbl(Dib(i))
Next
↑この処理が一番時間が掛かっていました。(lngWidth=640, lngHeight=480)
どうすればよいでしょうか?
934デフォルトの名無しさん:2007/08/20(月) 12:40:42
いい加減ドトネト使えばいいのにw
GDI+なら鏡像反転なんて(理解するのが容易とは言わないが)簡単にコード書けるよ。
935デフォルトの名無しさん:2007/08/20(月) 12:55:24
>>934
.VB6からでもGDI+は使えるけどな

>>933
デバッガで試しているのなら
exeにしてから時間計るといい
それでも遅かったらご愁傷様
あと、時間計るのにGetTickCountとかを使っているのならば
PerformanceCounterとかを調べてみると正確な時間が計れるよ
936935:2007/08/20(月) 13:01:24
あ、VB6だと使えないか
必要だったらVB6で使えるようにDLLを作ってあげようか?
937892(933):2007/08/20(月) 13:07:58
>>934
僕に理解、、、できるのでしょうか。僕まだ厨房ですし。
>>936
マジですか!そんなに親切にしてくださってありがとうございます。。。・゚・(ノ∀`)・゚・。
938935:2007/08/20(月) 14:32:20
>>937
ttp://sund1.sakura.ne.jp/uploader/source/up10200.zip
パスは名前
今から会議なんでバグってたら後で直すわ
939919:2007/08/20(月) 15:32:05
横から頂きます。
vb6ならtimegettimeで十分と思うが。
940919:2007/08/20(月) 15:37:39
>>933
For i = 0 To lngWidth * lngHeight * 3 - 1 を
'1Pixelごとに変換
For i = 0 To lngSize - 1
Dib(i*3) = tbl(Dib(i*3))
Dib(i*3+1) = tbl(Dib(i*3+1))
Dib(i*3+2)= tbl(Dib(i*3+2))
Next
ではどう? 画像処理はこうやって色々考えるのが面白いんだが。早くならなかったらスマン
941892(933):2007/08/20(月) 21:07:34
>>938
ありがとうございます!できました!
>>940
何故だか、遅くなってしまいましたようですorz
942892(933):2007/08/20(月) 21:47:30
どうやら一番時間の掛かる作業は、配列に置き換えることでした。
StretchDIBits自体は15ms程度でした。
配列に置き換える作業をコメントアウトしても、上下反転はされていました。
Bitbltの描画方法で行おうとしたら、CopyMemory時になぜかメモリ保護違反でエラーです(Lengthが大きすぎて落ちたわけでもなさそうです)
また、DIBに反映させるときにhMemDCにBitbltでフィールド全体をコピーする時点で84ms程度掛かっていました。
943892(933):2007/08/20(月) 21:48:39
やはり、フィールド全体上下反転はあきらめようかな・・・
944デフォルトの名無しさん:2007/08/20(月) 22:06:17
DLLに配列反転コードを書いてやればいいのに
昔、Cで書いたときはかなり改善されたよ
945デフォルトの名無しさん:2007/08/20(月) 22:09:58
>>942
配列に置き換える作業っていうのはなにかしら意図してたんじゃないのか?
もしサンプルがそうやってるってのを入れているんだったらまったく意味無いぞ
全体を少し明るく(多分人間の視覚レベルではほとんど判断つかない)してるだけ

DIBSectionにイメージを保持すること自体が意味の無いことになってる
StretchDIBitsつかってるなら、まず引数のhdcで選択されている反転前のビットマップのハンドルから
GetBitmapBitsというAPIを使って、Dib配列上にコピーしてからStretchDIBitsを呼び出せばいいだけだ
946940:2007/08/21(火) 01:52:01
ビットマップ&VB6&拡大縮小なし、でやるなら
GetObject,SetBitmapBits,GetBitmapBits,Bitblt
で十分だけど、デバイス依存だしDIBと比べて早いのかどうか知らんし。
この方法で自分の前に書いたものだと640*640で20ms程の描写速度。
947デフォルトの名無しさん:2007/08/21(火) 09:13:20
[VB6,WindowsXP]
親フォーム(form1)から子フォーム(form2)を呼び出す時に
Form2.Show vbModeless, Form1
Form1.Enabled = False
のようにして、子フォームから戻る際に
Form1.Show vbModeless
Form1.Enabled = True
Unload Me
としています。
ここで、子フォームで×(終了)ボタンをクリックすると
ボタンの処理を通らないので、画面が戻らないのです。
Finallyをどこかで書けば良いのでしょうけど、どこに書くかもわかりません。
どうすれば良いのでしょうか。宜しくご教示お願いします。
948デフォルトの名無しさん:2007/08/21(火) 09:33:26
>>947
' Form2
Private Sub Command1_Click()
    Unload Me
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Form1.Show vbModeless
    Form1.Enabled = True
End Sub
949947:2007/08/21(火) 09:49:37
>>948
Form_Unloadというのがあったのですね。
勉強になりました。どうもありがとうございました!
950933:2007/08/21(火) 10:23:28
>945-946
ありがとうございます。
試験終わったら、またためさせてもらいます。
試験の存在をすっかり忘れていたもので・・・
951デフォルトの名無しさん:2007/08/21(火) 12:42:12
VBプログラマ質問スレ(6.0以前) Part53
http://pc11.2ch.net/test/read.cgi/tech/1187667616/l50
952デフォルトの名無しさん:2007/08/21(火) 15:50:08
953デフォルトの名無しさん:2007/08/25(土) 10:48:21
埋めようぜ
954デフォルトの名無しさん:2007/08/25(土) 11:08:47
955デフォルトの名無しさん:2007/08/25(土) 11:57:37
VBSでIE上のラジオボタンのチェックやコンボボックスの選択をする
スクリプトを作ろうと思っています。

set oIE=Wscript.CreateObject("InternetExplorer.application")
oIE.navigate2("http://www.yahoo.co.jp/")

でIEを呼び出し、oIEに対して設定することは出来たのですが、
既に開かれているIEに対して設定するにはどのような方法がありますか?
タイトルやurlから識別出来ればいいのですが
956デフォルトの名無しさん:2007/08/26(日) 09:09:12
>>955
微妙にスレ違い。
957デフォルトの名無しさん:2007/08/26(日) 10:41:15
getobject
958デフォルトの名無しさん:2007/08/26(日) 20:49:59
1〜10までを重複しないようにランダムで表示させるにはどうすれば良いですか?
959デフォルトの名無しさん:2007/08/26(日) 20:52:45
createobject("shell.application").windows()
960デフォルトの名無しさん:2007/08/26(日) 20:55:22
>>958
予め1から10までが要素に入った配列を作る。
これは順に並べていて構わない。

そして、それをランダムに並べ替える。

最後に表示させれば完成。
961デフォルトの名無しさん:2007/08/26(日) 21:45:26
ありがとうございます
配列をランダムに並び換えるのはどうやるんですか?
962デフォルトの名無しさん:2007/08/26(日) 21:53:27
好きにすれば?
963デフォルトの名無しさん:2007/08/26(日) 21:54:00
自己解決しました
ありがとうございました
964デフォルトの名無しさん:2007/08/26(日) 21:58:23
シャッフル
965デフォルトの名無しさん:2007/08/27(月) 23:31:48
昔ファミリーベーシックだかにSwitch関数があったような気が・・
966デフォルトの名無しさん:2007/08/28(火) 02:47:20
昔のベーシックは後藤さんのオンパレード
goto 3
967965:2007/08/28(火) 03:59:51
ファミリーベーシック -> N88-Basic -> Visual Basic6と来た俺は正統派?(スレ埋め)
968デフォルトの名無しさん:2007/08/28(火) 07:19:11
>>967
N88からVB6の間が非常に離れているような気がする
969デフォルトの名無しさん:2007/08/28(火) 08:36:29
N88とVB6の間にQuick BASIC挟むのが正当派www

970デフォルトの名無しさん:2007/08/28(火) 09:38:24
>>965
それswapじゃね?
971デフォルトの名無しさん:2007/08/28(火) 09:44:17
[VB6,WindowsXP]宜しくお願いします

「やりたい事」
リストボックス横にリストボックスの行に合わせて、
配列として持っている値を表示したい
(現在は、行を選択した際に、別のテキストに表示していますが、
個別でしか見れないので、全行を縦に見たいという事です)

「悩み」
・リストボックスに複数の列を持たせられない
・リストボックスをもう一つ作ると、スクロールバーの制御が気持ち悪い

「できそうな事?」
・ラベルやテキストでスクロールの現時点のポイントを見張り、
 リストボックスに合わせて表示を変える(コーディングが面倒かも)
・リストボックスに表示されている名称に配列の数値を一緒に表示(でも不細工)

まだ模索段階で、どうすれば良いのか悩んでいます
もちろん、リストボックスじゃ無ければダメなわけではありません
ただ、既に作り込んでいるという事情はありますが。。。
アドバイスを宜しくお願いします
972デフォルトの名無しさん:2007/08/28(火) 10:15:39
>>971
よくわからんが、アプリケーションの追加と削除のリストみたいなのを作りたいって事?
973デフォルトの名無しさん:2007/08/28(火) 10:17:34
>>971
俺は
> ・リストボックスに表示されている名称に配列の数値を一緒に表示(でも不細工) 
で対処した。
等幅フォント使えば、スペースで位置調整できるし。

974デフォルトの名無しさん:2007/08/28(火) 10:34:58
>>971
WinAPIを使ってもいいなら、LB_SETTABSTOPSについて調べてみて

あとはリストビューを使うとか
975デフォルトの名無しさん:2007/08/28(火) 10:57:37
単純にリストボックスを複数行にしたいんじゃなくて同じ行に2項入れたいだけか
リストビュー使った方がいいんじゃない
976965:2007/08/28(火) 10:58:33
>>970
サンクス。そうだったSwap命令だった
>>971
フォルダのような階層構造って事か?
学習も兼ねて自前で一つのリストボックスに表示をやってみれば?>>973の言うようにフォントを変える必要あるけど。

自分でやるなら、最初をコンボボックスで選択させて、リストボックスに配列(要素)を表示させる。
↑スリムで見やすいと思うが目的とは異なるな。
977971:2007/08/28(火) 11:54:37
>>972
はい。1列では無く、あんなイメージに列として表示したいのです〜

>>973
位置調整はできそうな感じはするのですが、ボックスって感じが無いのが残念です

>>974
「LB_SETTABSTOPS」は良さそうですね〜
もしリスト内に数値入れるのであれば、是非使わせて頂きたいと思います
あ〜〜〜「リストビュー」はもっと良さそうですね〜〜〜!
もう少し詳細に調査してみます

>>975
はい〜とっても良さそうですね!
ちょっと調べて実験もろもろやってきます〜

>>976
フォルダな感じでは無くて、ACCESSとかのデータベースな感じですね。
といっても、数値を入力するところまでは今回は求めていません。
コンボボックスを縦に大きく伸ばして貼り付けるって事でしょうか?
いけそうな気もしますし、ダメな気もしますw
書き忘れていましたが、行数は999まであります。

>>all
みなさんレスありがとうございます!感謝!
978デフォルトの名無しさん:2007/08/28(火) 12:27:40
異なる複数のMDBファイルにある
同一名、同一構成のテーブルを
ADOを使って全部UNIONした結果を取得したいんだが、
簡単な方法はないだろうか。
979デフォルトの名無しさん:2007/08/28(火) 13:10:35
Detabaseが多岐に渡るから無理なんじゃないかな?
専用の作業ファイルを作るとかしないと・・・

逆に俺も知りたい・・・後学のため
980デフォルトの名無しさん:2007/08/28(火) 13:27:19
新しいMDB作ってそこから他のMDBにリンクテーブル張ってそれをUNION
試してないけど
981デフォルトの名無しさん:2007/08/28(火) 13:34:02
DAOならわかるがADOだとどうやるんだろ・・・
982デフォルトの名無しさん:2007/08/28(火) 14:21:55
>>981
Σ('A`) DAOならできんの?
983デフォルトの名無しさん:2007/08/28(火) 15:04:50
>>982
DAO3.6に参照設定でこんな感じで・・・
エクセルのVBAでしかチェックしてないけど多分VBでもおkだと思う


 Dim db1 As DAO.Database
 Dim rs1 As DAO.Recordset
 Dim strSql As String

 Set db1 = DBEngine.OpenDatabase("D:\TMP\DB_ALL.MDB")
  strSql = ""
  strSql = strSql & "SELECT * FROM"
  strSql = strSql & "("
  strSql = strSql & " SELECT * FROM [D:\TMP\DB_1.MDB].[T_HOGE]"
  strSql = strSql & " UNION ALL"
  strSql = strSql & " SELECT * FROM [D:\TMP\DB_2.MDB].[T_HOGE]"
  strSql = strSql & " UNION ALL"
  strSql = strSql & " SELECT * FROM [D:\TMP\DB_3.MDB].[T_HOGE]"
  strSql = strSql & ")"
  Set rs1 = db1.OpenRecordset(strSql)
  Do Until rs1.EOF
   Debug.Print "レコードNO=" & rs1.AbsolutePosition
   rs1.MoveNext
  Loop
  rs1.Close: Set rs1 = Nothing
 db1.Close: Set db1 = Nothing
984978:2007/08/28(火) 15:13:18
>>983
d
ADOでもFROM TABLE_NAME IN MDB名で
SQL投げると外部MDBのデータを参照できるみたいだ。

中間データが見えにくいとデバッグしづらいので、
UNIONじゃなく作業テーブルに
INSERT INTO SELECT FROM INで
データ突っ込んじゃったけど。orz
985982:2007/08/28(火) 15:19:51
>>983
うぉ?なんと
SQLのテーブル部にファイルパス設定出来るんですね
今まで知りませんでした

ありがとうございます。
986デフォルトの名無しさん:2007/08/29(水) 00:25:41
埋め
987デフォルトの名無しさん:2007/08/29(水) 00:53:04
988デフォルトの名無しさん:2007/08/29(水) 00:58:12
失敗
989デフォルトの名無しさん:2007/08/29(水) 01:07:53
埋め
990デフォルトの名無しさん:2007/08/29(水) 03:25:23
生め
991デフォルトの名無しさん:2007/08/29(水) 06:11:41
旨めぇ
992デフォルトの名無しさん:2007/08/29(水) 08:17:43
青梅
993デフォルトの名無しさん:2007/08/29(水) 08:19:58
1000まで埋めると過去ログに沈んで普通にはアクセスできなくなる
2chの仕組みを知らないのかねこういう幼稚な馬鹿どもは
994デフォルトの名無しさん:2007/08/29(水) 08:24:07
1000に近づいたらとりあえず1000まで埋めておく
2chの慣習を知らないのかねこういう幼稚な馬鹿は
995デフォルトの名無しさん:2007/08/29(水) 08:55:03
寿司食いたい
996デフォルトの名無しさん:2007/08/29(水) 10:10:01
>>994
sageてるし、釣りだろ
997デフォルトの名無しさん:2007/08/29(水) 10:48:28
VB☆LOVE
998デフォルトの名無しさん:2007/08/29(水) 12:20:41
>>994
「習慣」なら(そもそもそんな習慣存在しないと思うけど)
その正当性を問わず盲目的に従う原住民性が幼稚で馬鹿だと言っている。
お前は群れに従う鳩かw

テンプレに過去ログのリンクを張る意味が半減するだろうが。
999デフォルトの名無しさん:2007/08/29(水) 12:23:03
専ブラ使えということだ。自分は持ってないが
もしくはだれかがテキスト化してくれるのを待てってこと
1000デフォルトの名無しさん:2007/08/29(水) 12:28:50
次スレ立てるのが速すぎるんだよボケ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。