VBプログラマ質問スレ(6.0以前) Part52
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/05/19(土) 17:33:37質問者は使用している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
http://www.google.co.jp/
※「まず自分で調べる」クセを身につけよう。
0002デフォルトの名無しさん
2007/05/19(土) 17:34:50Part 1 http://piza2.2ch.net/tech/kako/968/968328471.html
Part 2 http://piza2.2ch.net/tech/kako/990/990793224.html
Part 3 http://piza2.2ch.net/tech/kako/1000/10005/1000523122.html
Part 4 http://pc.2ch.net/tech/kako/1006/10069/1006922992.html
Part 5 http://pc.2ch.net/tech/kako/1010/10106/1010624646.html
Part 6 http://pc.2ch.net/tech/kako/1013/10138/1013844542.html
Part 7 http://pc.2ch.net/tech/kako/1015/10158/1015836357.html
Part 8 http://pc.2ch.net/tech/kako/1018/10187/1018794901.html
Part 9 http://pc.2ch.net/tech/kako/1020/10208/1020830472.html
Part10 http://pc.2ch.net/tech/kako/1022/10221/1022127528.html
Part11 http://pc.2ch.net/tech/kako/1024/10243/1024380249.html
Part12 http://pc3.2ch.net/tech/kako/1026/10266/1026642565.html
Part13 http://pc3.2ch.net/tech/kako/1029/10292/1029241786.html
Part14 http://pc3.2ch.net/tech/kako/1030/10309/1030947162.html
Part15 http://pc3.2ch.net/tech/kako/1032/10327/1032706491.html
0003デフォルトの名無しさん
2007/05/19(土) 17:37:29Part17 http://pc3.2ch.net/tech/kako/1036/10361/1036154952.html
Part18 http://pc3.2ch.net/tech/kako/1038/10381/1038103769.html
Part19 http://pc3.2ch.net/tech/kako/1039/10398/1039859691.html
Part20 http://pc5.2ch.net/tech/kako/1041/10418/1041879465.html
Part21 http://pc5.2ch.net/tech/kako/1044/10440/1044028945.html
Part22 http://pc5.2ch.net/tech/kako/1046/10463/1046354784.html
Part23 http://pc5.2ch.net/tech/kako/1047/10477/1047743187.html
Part24 http://pc5.2ch.net/tech/kako/1050/10501/1050151126.html
Part25 http://pc5.2ch.net/tech/kako/1052/10526/1052627913.html
Part26 http://pc5.2ch.net/tech/kako/1055/10551/1055145106.html
Part27 http://pc5.2ch.net/tech/kako/1058/10586/1058674927.html
Part28 http://pc5.2ch.net/tech/kako/1061/10612/1061296197.html
Part29 http://pc5.2ch.net/tech/kako/1065/10654/1065446334.html
Part30 http://pc5.2ch.net/test/read.cgi/tech/1069160036/
0004デフォルトの名無しさん
2007/05/19(土) 17:38:36Part32 http://pc5.2ch.net/test/read.cgi/tech/1077216109/
Part33 http://pc5.2ch.net/test/read.cgi/tech/1080606445/
Part34 http://pc5.2ch.net/test/read.cgi/tech/1084544243/
Part35 http://pc5.2ch.net/test/read.cgi/tech/1087519251/
Part36 http://pc5.2ch.net/test/read.cgi/tech/1092906058/
Part37 http://pc5.2ch.net/test/read.cgi/tech/1090286450/
Part38 http://pc5.2ch.net/test/read.cgi/tech/1095673000/
Part39 http://pc5.2ch.net/test/read.cgi/tech/1099737063/
Part40 http://pc5.2ch.net/test/read.cgi/tech/1106748775/
Part41 http://pc8.2ch.net/test/read.cgi/tech/1112414085/
Part42 http://pc8.2ch.net/test/read.cgi/tech/1116924129/
Part43 http://pc8.2ch.net/test/read.cgi/tech/1123952677/
Part44 http://pc8.2ch.net/test/read.cgi/tech/1130231657/
Part45 http://pc8.2ch.net/test/read.cgi/tech/1133977286/
0005デフォルトの名無しさん
2007/05/19(土) 17:39:21Part47 http://pc8.2ch.net/test/read.cgi/tech/1141320612/
Part48 http://pc8.2ch.net/test/read.cgi/tech/1146678926/
Part49 http://pc8.2ch.net/test/read.cgi/tech/1152667953/
Part50 http://pc10.2ch.net/test/read.cgi/tech/1161517193/
Part51 http://pc11.2ch.net/test/read.cgi/tech/1169949451/
0006デフォルトの名無しさん
2007/05/19(土) 17:46:140007デフォルトの名無しさん
2007/05/19(土) 18:44:21セルを列で結合して表示したときにクリックイベントを取ると、
クリックした場所によってインデックス番号が変わってしまいます。
結合している列の一番上のインデックスを常に取得したいのですが
どうすればよいでしょうか?
_ ___
1
1 これが 1
__ ___
わかりにくい図で申し訳ありませんが、よろしくお願い致します。
0008デフォルトの名無しさん
2007/05/19(土) 21:08:02�@Linux上のgz形式で圧縮されたファイルをWindowsPCにDL
�ADLしたファイルをTAR32で解凍
�B解凍したファイル(カンマ区切りの.csv)から条件に合う行をテキストファイル(.txt)に保存
�Aまではできたのですが�Bで悩み中です。
・解凍したファイルがUTF-8のため文字化けする
・OpenしてLine inputで読み込むと全行(約2万行)を読み込んでしまい処理が重い。
コード変換すればいいと思うのですが、
その書き方がわからないので教えていただきたいです。
宜しくお願いします。
0009デフォルトの名無しさん
2007/05/20(日) 03:13:00無事うまく取得することができました。
ActiveCodePane から分割や上下を区別する方法が全く思いつきませんでした。
正直、なぜ取得できているのか理解しきれていないのですが、テストした限り
問題ありませんでした。
1点だけ、コードウィンドウを1つも開いていない場合は ActiveCodePane が
Nothing となるので、VBE_CODEPAIN にコードウィンドウを1つも開いていない意味の
CODEPAIN_NOTHING を追加しました。
本当にもうほとんど諦めだったので、感謝です。ありがとうございました。
0010デフォルトの名無しさん
2007/05/20(日) 06:55:09CodePanes コレクションの並び順が常に Top → Bottom の順で格納されてるんじゃないかと期待して書いてみただけw
同じコードウィンドウに属するCodePainの判定は、親が同じ VBComponent かどうかを見れば出来ると考えた
あとは CodePanes の中から ActiveCodePain が見つかるのが先か、VBComponent だけが同じものが見つかるのが先かを試せばいいってわけ
0011デフォルトの名無しさん
2007/05/21(月) 10:03:42OS:WINXP
DIR関数にロングファイル名を使うとエラー75になるんだけど、正常終了するようにできませんか?
もしくは8.3形式に変換する方法とか…
0012デフォルトの名無しさん
2007/05/21(月) 12:10:45互換モードで動く?
XPでVB4の開発はしないほうが良いと思う
関数の先頭に
on error goto xxx
関数の最後に
xxx:
を作って何か処理入れれば良いと思う
脳内VB6なんで動くかどうかわからんけど
001311
2007/05/21(月) 13:17:18一応動いてます。巨大なシステムの一部なんで変えるわけにもいきません。
エラートラップで回避しても本来そのパスは正しいので…。
もう対応不可にしたほうがよさげな気がしてきました
0014デフォルトの名無しさん
2007/05/21(月) 13:59:40001511
2007/05/21(月) 14:04:52karnel32は使えませんし…
0016デフォルトの名無しさん
2007/05/21(月) 15:16:05VBで出来るかどうかは知らないが、サンクというものがある。
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=
0017デフォルトの名無しさん
2007/05/21(月) 15:16:17つ【GetShortPathNameA】
#kernel32が使えないXPってどんなのだよ
0018デフォルトの名無しさん
2007/05/21(月) 15:17:40って16BIT時代になかったっけか?
0019デフォルトの名無しさん
2007/05/21(月) 15:30:44002011
2007/05/21(月) 16:27:23Thunk使えばできそうな気がしますがすごく大変そうです…
FileSystemObjectはクライアントのOSが95だったりするんで使いたいけど使えないんです
こんなシステムぶっこわしてぇ…
0021デフォルトの名無しさん
2007/05/21(月) 16:38:25遅そうだが
0022デフォルトの名無しさん
2007/05/21(月) 16:51:59ttp://jet.breeze.jp/program/win16/thunk.htm
0023デフォルトの名無しさん
2007/05/21(月) 18:06:49つADODB.Stream
0024デフォルトの名無しさん
2007/05/21(月) 19:57:07と言ってたな。
VBプログラマは学習能力が無いのか。
0025デフォルトの名無しさん
2007/05/21(月) 20:25:30普段2005で学習しているのですが、6.0環境でESCを押した時に
[ Textbox1.text = "" ]この動作をさせたいのですが
どのように記述したらいいのでしょうか?
キーを押した時
if エスケープキーだったら then
[ Text1.text = "" ]
end if
ではどうにもならず。
0026デフォルトの名無しさん
2007/05/21(月) 20:51:45ここは雑談スレではないのに相変わらずスレ違いのカキコするんだな
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があるとイベントが発生しない
002725
2007/05/21(月) 20:57:14Cancelプロパティについて読んできました。
ESCキーはこんなところでも使われていたのですね。勉強になりました。
質問する前に別のキーに割り当てて試して見ればお手を煩わせなかったのかと思うと
赤面する思いです。
ありがとうございました。
0028デフォルトの名無しさん
2007/05/21(月) 21:01:52VBに無い構造体を語るのがスレ違いのカキコだ。
そんなこともわからないお前は学習能力無しだな。
0029デフォルトの名無しさん
2007/05/21(月) 21:33:06>クライアントのOSが95
あなた>>11で「OS:WINXP」って書いてるでしょ
回答してくれてる人に失礼よ?
>>28
はいはい。良かったね。もう帰っていいよ。
0030デフォルトの名無しさん
2007/05/22(火) 00:22:30http://jet.breeze.jp/program/tips/comp_lfn.htm
0031デフォルトの名無しさん
2007/05/22(火) 18:30:54動作環境が95で
アプリがVB4の16ビットなんだよね?
それでXPで開発してて(XPで)パスが取得できない
ってこと?
XPではパス取得できないけど95では取得できるのでは?
それは試した?
0032デフォルトの名無しさん
2007/05/22(火) 22:33:57同じレコードのカラムにアクセスしているにもかかわらず、返ってくる値が1だったり0だったりまちまちです
plsqlでレコード確認すると'f'か't'かできちんと格納されています。
VBで取得するときは、なにか加工が必要なのでしょうか?
スレ違いかもしれませんが、よろしくお願い致します。
0033デフォルトの名無しさん
2007/05/23(水) 09:12:35毎回Bool型に格納して結果が違うのか?
1とか0とかではんだんしないほうがいい
003432
2007/05/23(水) 22:41:39原因はわかりましたが、理由は不明です
0035デフォルトの名無しさん
2007/05/24(木) 12:26:46ODBCドライバの不具合かもしれません。
ポスグレスレで聞いた方がいいでしょう。
あちらで聞くときはちゃんと環境を書いてね。
0036デフォルトの名無しさん
2007/05/24(木) 16:20:44コモン・ダイアログ・コントロールを使わずにプログラムだけで処理をしたいのですが、
解説がされてるHPでもあれば教えてください。
0037デフォルトの名無しさん
2007/05/24(木) 16:34:33速攻出てきたけど。
もっとググレカス
ttp://www.bcap.co.jp/hanafusa/VBHLP/Fileopen.htm
0038デフォルトの名無しさん
2007/05/24(木) 16:37:19すんません
ありがとうございます
0039yo1
2007/05/24(木) 16:40:48可能ならば、その方法を教えて頂けないでしょうか。
よろしくおねがいします。
0040yo1
2007/05/24(木) 16:44:13よろしくおねがいします。
0041デフォルトの名無しさん
2007/05/24(木) 16:59:540042yo1
2007/05/24(木) 17:19:47そうですか残念です。
ありがとうございました。
0043デフォルトの名無しさん
2007/05/24(木) 18:33:15810-805と表記してある文があります。
810-805を
810.809.808.807.806.805に分けるには
どのような構文が考えられますか?
0044デフォルトの名無しさん
2007/05/24(木) 18:47:06先ほどの追加になるのですが
部屋番号が815.812.810-805.801のように入力されていた場合
部屋の数を数える方法があれば教えてください。
0045デフォルトの名無しさん
2007/05/24(木) 19:35:060046デフォルトの名無しさん
2007/05/24(木) 19:55:26815.812.810-805.801
これで部屋数いくつなの?
っていうのが頭でわかればそれをプログラムにするだけだと思うヨ
0047デフォルトの名無しさん
2007/05/24(木) 20:01:50色々方法はあるし、どういう感じなのかは分からないけど、
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はまだ早いのでは?
0048デフォルトの名無しさん
2007/05/24(木) 22:26:41おまえツンデレさんだろ?w
0049デフォルトの名無しさん
2007/05/24(木) 22:29:07これは同じ階だけだと仮定すっと
810-805 +1
だわなぁ・・・
しかしなんという素人作成部屋管理システム・・・
005043
2007/05/24(木) 22:57:120052デフォルトの名無しさん
2007/05/25(金) 18:49:42参考程度になるHPはありますでしょうか?
0053デフォルトの名無しさん
2007/05/25(金) 18:58:210054デフォルトの名無しさん
2007/05/26(土) 09:29:550055デフォルトの名無しさん
2007/05/26(土) 11:59:06俺その方法知らないんで良かったら・・・・
0056デフォルトの名無しさん
2007/05/26(土) 13:30:20これが面倒
0057デフォルトの名無しさん
2007/05/26(土) 22:43:59VBで日付の大小を比較するにはどうすればよいのでしょうか?
If DateValue(DTPicker(0).Value) > DateValue(DTPicker(1).Value) Then
のように比較しても値が上手く判定できません。
よろしくお願いします。
0058デフォルトの名無しさん
2007/05/26(土) 23:20:08ただし2038年を過ぎるとバグる。
0059デフォルトの名無しさん
2007/05/26(土) 23:28:08そんな小細工しなくても、ベタにやったって大した労力でもないだろう。
年、月、日(必要ならさらに時間、分、秒)と順に比較するだけじゃないか。
0060デフォルトの名無しさん
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/
0061デフォルトの名無しさん
2007/05/27(日) 01:39:520062デフォルトの名無しさん
2007/05/27(日) 10:29:29format$(Time1, "yyyymmddhhnnss")>format$(Time2, "yyyymmddhhnnss")
0063デフォルトの名無しさん
2007/05/28(月) 10:58:21strFileName = Left$(tOpenFileName.lpstrFile, InStr(tOpenFileName.lpstrFile, vbNullChar) - 1)
これでファイルの全体の名前は取得できますが、
ファイル名のみを取得する場合はどうしたらよいででしょうか?
0064デフォルトの名無しさん
2007/05/28(月) 11:41:44ファイル名を取りたいなら一番右にあるパス区切り文字から右の文字取ればいいだけだろ
VB6ならInStrのリバースつかって最初にパス区切り文字が見付けられるし
0065デフォルトの名無しさん
2007/05/28(月) 16:24:21ドキュメントに記載されない糞仕様が他にもどれだけある事やら
0066デフォルトの名無しさん
2007/05/30(水) 07:17:35VBSで使おうと思っています。
暗号方式AES128bitを指定して、パスワードを指定することができる
ことは確認しました。
ブロックモードをCBCにしてIVを指定したいのですが、マニュアルにそれらしき
プロパティが見つかりません。
設定方法ご存知でしたら教えてください。
0067デフォルトの名無しさん
2007/05/30(水) 18:43:59Excelのデータは毎回変わり、何件あるのかは不定です。
Excelのデータの数に合わせて、グリッドの数も増やしたいのですが、
一度Excelのデータを全て読込み→
データの数を数える→
グリッドの数を調整する→
データを読込み→
Excelからグリッドへデータ入力
といった形しかないのでしょうか?
できれば
Excelのデータを1件読み→
グリッドを1件増やしデータ入力→
繰り返し
といった形にしたいのですが不可能でしょうか?
0068デフォルトの名無しさん
2007/05/30(水) 19:08:03後者では行列を変更する回数が増えるのでパフォーマンスが悪くなると思う
前者の方法で大方いいと思うけど
×
一度Excelのデータを全て読込み→
データの数を数える→
グリッドの数を調整する→
データを読込み→
Excelからグリッドへデータ入力
○
一度Excelのデータを全て読込み、変数や、配列・コレクションに保持→
データの数を数える→
グリッドの数を調整する→
保持したデータからグリッドへデータ入力
これではダメかな?
0069デフォルトの名無しさん
2007/05/30(水) 23:05:19クラスが書けない糞プログラマー乙。
0070デフォルトの名無しさん
2007/05/31(木) 00:21:00セルの内容を移動させたいのですが、実現方法がわかりません。
どうすればよいか、ご教授お願い致します。
0071デフォルトの名無しさん
2007/05/31(木) 00:31:46循環参照になるのが気持ち悪いけど
デコレータクラスにコントロールの参照を持たせたて
フォームから冗長なコードを省きたかったんだが
ユーザーコントロールで似たような事ができるけど異なるプロジェクト間でのカット&ペーストに無駄手間がかかるから避けたい
0072デフォルトの名無しさん
2007/05/31(木) 06:58:051.管理テーブルから未接続の場所を探す
2.→未接続の場所をiに設定
Load Winsock2(i)
Winsock2(i).Accept rewuestID
3.管理テーブルの接続の場所にtrueを入れる
1 2 3 教えてください
0073デフォルトの名無しさん
2007/05/31(木) 07:12:42とりあえずwinsockコントロールのバグな
http://support.microsoft.com/kb/171843/ja
で、質問(?)の方だけど
教えるも何も自分で納得してる日本語だと思うんだが、何か疑問に思うところがあるのか?
0074デフォルトの名無しさん
2007/05/31(木) 07:17:57すいません1.2.3.の言葉をどうプログラムにすればいいかわからないんです
0075デフォルトの名無しさん
2007/05/31(木) 08:59:42ありがとうございます
0076デフォルトの名無しさん
2007/05/31(木) 09:34:51こんなバグあったんかー!!
どおりで・・・。orz
0077デフォルトの名無しさん
2007/05/31(木) 11:01:39全部じゃねーかwwwwww
ところで それを管理テーブル抜きにして固定の2つ,3つほどのクライアントとのやり取りで実装は出来るの?
まずはそこから攻めていかなきゃいけないと思うんだけど
0078nobodyさん
2007/06/01(金) 13:12:26DATAGridに標準でソート機能ってありませんでしたっけ?
HSHFLEXでしたっけ?
みなさんどうやってソート機能つけてます?
ご存知のかたいたらご教授願います。
0079デフォルトの名無しさん
2007/06/01(金) 14:20:34連結元のrecordsetでソートしてやりゃおk
0080nobodyさん
2007/06/01(金) 15:58:06要するに、各列ごとにデータをソートしたいだけなんです。
webでいうとヤフーオークションみたいなイメージ。
0081デフォルトの名無しさん
2007/06/01(金) 16:29:13いや、ケースバイケースだけど 大量のデータならその方が早そうなきがする
と横槍
0082nobodyさん
2007/06/01(金) 18:09:16GRID表示させました。
どうもありがとん!
0083デフォルトの名無しさん
2007/06/02(土) 16:29:35片方のディスプレイを使用不可にしたい
(画面のプロパティ→設定→windowsデスクトップをこのモニタ上で移動できるようにする(チェックをはずす)の操作)
のですが、可能でしょうか?
0084デフォルトの名無しさん
2007/06/03(日) 11:51:56APIにあればいけるさ
0085デフォルトの名無しさん
2007/06/04(月) 21:54:06ランダムファイル処理のサンプル画面で、
「ZARD 永遠 5:13」
って出てきた。
歌手・曲名・演奏時間を1レコードとして扱う例だった。
少しせつなくなった。
0086デフォルトの名無しさん
2007/06/04(月) 22:21:21誰か教えて下さい。
0087デフォルトの名無しさん
2007/06/04(月) 22:37:35リストボックスの1つだけを選択してその値をとることができるようにしてみよう
まずはそれからだ
008886
2007/06/04(月) 22:51:21Dim 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に加えていく事はできるんですけど、何か別の配列みたいなのに格納していきたいのですが…
0089デフォルトの名無しさん
2007/06/04(月) 22:54:2486と似たようなプログラムを作っているのですが、listboxの要素を関数に渡す方法がわかりません。
選択した物を合計する等は作れたのですが、これを関数を用いて作れとお達しを受けまして。
とりあえずAverage(1,2,3)で2が出てくるような関数は作れたのですが、どうすればlistboxの中の不定数の要素を関数に引き渡すのかがわかりません。
このような質問の仕方で伝わるものかとも思いますが、先輩方の御知恵を拝借したく…
どうぞよろしくおねがいします。
009189
2007/06/04(月) 23:01:03配列変数を宣言してlistboxの値をloopで回して格納していって、それを直接関数に渡せばいけるんじゃ?
とかも考えましたがうまく動かず。
それ以前に配列に要素を足す方法すら合ってるのかが謎で。
私ごときにはお手上げです。
009286
2007/06/04(月) 23:44:43> 配列変数を宣言してlistboxの値をloopで回して格納していって、それを直接関数に渡せばいけるんじゃ?
> とかも考えましたがうまく動かず。
ちなみにそれはどんな文ですか?
0093デフォルトの名無しさん
2007/06/05(火) 00:33:110094デフォルトの名無しさん
2007/06/05(火) 01:02:26選択した数値を文字列に変換して、カンマで区切って、最後にSplit関数で
配列にして、その関数に配列を渡して計算させるとか?
0095デフォルトの名無しさん
2007/06/05(火) 01:15:20リストボックスの中は数値で、選択したものを配列(コレクション)に入れて
例えば、合計とかさせればいいんでしょ?
0096デフォルトの名無しさん
2007/06/05(火) 01:26:21009786
2007/06/05(火) 06:16:22009886
2007/06/05(火) 06:46:270099デフォルトの名無しさん
2007/06/05(火) 08:48:32動的配列変数を宣言して、
ループの直前かもしくは中でReDim使って要素数足してけばおk
0100デフォルトの名無しさん
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
0101デフォルトの名無しさん
2007/06/05(火) 09:55:08グリッドのセルをクリックした時にその行がすべて選択状態(色が変わる状態)に
するにはどうしたらよいでしょうか?
0102デフォルトの名無しさん
2007/06/05(火) 10:27:330103デフォルトの名無しさん
2007/06/05(火) 11:15:49エスパーレス
クリックしたRowの位置がわかるからFor文で
010486
2007/06/05(火) 18:05:23ありがとうございました。何とかできそうなので参考にさせてもらいます。
0105デフォルトの名無しさん
2007/06/06(水) 00:20:09コマンドボタンをクリックしたらESCキーが押されて、それによってESCキーのキープレスイベントが起きてくれるような動作をさせたいのですが。
0106デフォルトの名無しさん
2007/06/06(水) 00:25:170107105
2007/06/06(水) 00:33:33コマンドボタンを押した時にkeyAsciiに任意の値を入れて、
それを何に渡せばいいのかがわからなかったのです。
あと、仮にESCキープレスの下に動作をを書いてあったとして
それをどう呼び出すのかもわかりません。
最近VB始めたもので何をどうすればいいのか。
コンピュータに日本語通じて欲しいです・・・
0108デフォルトの名無しさん
2007/06/06(水) 00:39:49キーを送る SendKeys
イベントを呼び出す Call Hoge_KeyPress(
0109デフォルトの名無しさん
2007/06/06(水) 01:15:30頭固いな
自分自身にキー送る必要なんて、そもそもないだろ
キーダウンのイベントハンドラを呼びだせばいいじゃんw
0110デフォルトの名無しさん
2007/06/06(水) 01:21:50何で俺に言うんだよ
質問に答えただけだろ
0111デフォルトの名無しさん
2007/06/06(水) 01:37:21なにそのオナニー
そもそも、イベントが発生される以外で”呼び出される”のはイベントハンドラって言わないんじゃないの?
もっと別の言い方があるでしょ
で、元質問者にヒント
「コマンドボタンを押したら、コマンドボタンにフォーカスが移る」のを忘れないように。
0112デフォルトの名無しさん
2007/06/06(水) 01:53:45別の言い方について詳しく
0113デフォルトの名無しさん
2007/06/06(水) 10:08:380114デフォルトの名無しさん
2007/06/06(水) 10:25:03教えてください。すごくお願いします。
0115デフォルトの名無しさん
2007/06/06(水) 10:36:270116デフォルトの名無しさん
2007/06/06(水) 10:38:02モーグってサイト見ろ
0118デフォルトの名無しさん
2007/06/06(水) 12:49:58むしろお前がシネヨ?カス
せめてググってからこい 無能者が
0119デフォルトの名無しさん
2007/06/06(水) 13:04:53m9(^Д^)カッコワルwwwww
0120デフォルトの名無しさん
2007/06/06(水) 13:12:31MSFlexGrid1.SelectionMode = flexSelectionByRow
End Sub
これでどこのセルをクリックしても行全体が反転されるはずなのですが
一番最初の行が反転されません。
一番最初の行も反転させるためにはどうしたらよいでしょうか?
0121デフォルトの名無しさん
2007/06/06(水) 13:56:340122デフォルトの名無しさん
2007/06/06(水) 14:13:28(´・ω・`)つ【FocusRect】
0123デフォルトの名無しさん
2007/06/06(水) 14:28:13ありがとうございます
.FocusRect = flexFocusNone
を追加すると
クリックしたときには綺麗に一行反転するのですが
クリックしていない状態でも
左上のセルが一つ反転してしまいます。
初期状態で反転させない方法はありますか?
0124デフォルトの名無しさん
2007/06/06(水) 14:42:29その様子だと次々と出てきそうだから先に言っておくけど
MSFlexGridのプロパティと動作ぐらいは自分でテストしな
なぜ初期状態で反転してるか考えれば答えが出るでしょ
0125デフォルトの名無しさん
2007/06/06(水) 21:01:53全く初心者なため勝手が全然分からなくて、ネットで
調べてもそれらしきものが見当たりませんでした・・・
例えば、一つ計算式がでてきたら自分でその答えを入力し
正誤に関らず次の式が表示されまた答えを入力する・・・
というのを繰り返すようなものを作りたいのですが
もし可能ならばヒントでも頂けると助かります
よろしくお願いします
0126デフォルトの名無しさん
2007/06/06(水) 21:14:18その与えられる数式を解析すれば行けるだろうけど
どのレベルまでを求めるかによると思うけどなぁ…・
単純な四則演算レベルならまぁ…・ 小数点とかはいると少し難しいんじゃないかな?
とりあえずどんな数式が出てきて どんな動きすればいいかを
自分の求めるレベルでサンプルを書き込んでみては?
いっちゃん簡単なので行けば
******
●+1=5
という数式があり ●には数字が入る
最終てきに
●=4という答えがほしい
*****
こんな感じで
0127デフォルトの名無しさん
2007/06/07(木) 00:48:57時間がある人なら、とりあえずテキストエディタとか作ってみるといいんじゃない?
システムの設計の方法とか方針とか少しは見えてくると思うよ
逆に設計についてサッパリな状況なら何も作れないってことが分かるだろうし
0128デフォルトの名無しさん
2007/06/07(木) 06:22:20VBの達人なら、この程度のプログラミングなど簡単すぎて興味も湧かないでしょうが、
いかに、短くてエレガントなコードを書くかには興味を持つかも知れん。
0129デフォルトの名無しさん
2007/06/07(木) 09:47:53確かにアルゴリズムは考えるのが楽しい
が・・・・ある程度いったら飽きるんだよorz
0130デフォルトの名無しさん
2007/06/07(木) 10:14:130131デフォルトの名無しさん
2007/06/07(木) 10:15:390132デフォルトの名無しさん
2007/06/07(木) 10:35:32よく知らんが
フォームにでもKey Pressのせて
if key asciiがEsc
End 'Unload me
end if
じゃだめですか
0133デフォルトの名無しさん
2007/06/07(木) 10:51:55式作成部分だけ造ったが、こんな感じか?
0134デフォルトの名無しさん
2007/06/07(木) 10:53:09ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=3606
0135デフォルトの名無しさん
2007/06/07(木) 12:02:30おまっ・・・・Cかよwwww
式は自動作成なのかな?
俺が予想してるのはこんな流れ
前提:式のリストがある(いわゆる算数の穴埋め問題集的な)
X+2=5 Xを求めよ みたいな
流れ
1.式のリストから式を取得(あとはユーザが選択したりとか)
↓
2.その式を分析して解を求めるような値を算出(方程式解くような感じで)
(例だと:X=5-2 X=3)
↓
1に戻る
0136デフォルトの名無しさん
2007/06/07(木) 19:42:07予め式のリストが用意されてるんなら、
リストインデックスから解を出力すりゃいいだけじゃね?
解も配列で内部的に持っとけばいいだけだし。
0137デフォルトの名無しさん
2007/06/07(木) 22:04:08>125を見た感じ、延々と繰り返すってことは、
有限な感じがするその前提は使えないんじゃね?
つか、式を自動生成する時ついでに、
内部的に解を求めとけばいい気がする。
暗算すんのはユーザなんだろ?
システム的にはただ淡々と計算してけばいいだけ。
悩む点は特に無さげ。
0138125
2007/06/08(金) 00:01:50134をコピーしてみたんですが、エラーが出まくって上手くいきません
多分フォーム内に全部直接貼り付けただけで、変数を宣言する場所とか
が自分でよく分かってないからだと思いますが・・・
全く素人すぎてすいません・・・
0139デフォルトの名無しさん
2007/06/08(金) 00:17:32Cでもいいわけか?
VBじゃなくって?
あのソースはVBではないぞ・・・・・
0140125
2007/06/08(金) 00:23:13そうなんですか?
自分はVB作りたいです
今日乱数を発生させてどうのこうのとかやってたけど
全く上手くいきませんでした・・・
0141デフォルトの名無しさん
2007/06/08(金) 00:28:25Private 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
もすこしやりたいことを具体的におしえてはくれんか?
乱数を発生させるのは簡単だがそれを使ってどうするのか とかさ
0142デフォルトの名無しさん
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)
0143デフォルトの名無しさん
2007/06/08(金) 00:38:06せめてC#かVB.NETにしろ。
0144125
2007/06/08(金) 09:12:07ありがとうございます
実は具体的に実現したい機能としては
画面上に2桁の加算を行なう数式が2つ表示されて、ユーザー側が計算して値が大きい方の式を選ぶと
その正誤がすぐに画面上でフィードバックされ、すぐにまた同じような暗算課題が画面上に表示され
同じことを30分とか決められた時間ひたすら繰り返されていくようなものです
考えて作ろうとはしてるんですが、まだ暗算機能されまともに作れなくてやばいと
いった状況ですね・・・
0145デフォルトの名無しさん
2007/06/08(金) 09:15:40ここの十字カーソルのように、デスクトップ(というかスクリーン)の最前面に
文字や画像を描画するにはどうすればいいのでしょうか?
0146133
2007/06/08(金) 09:21:42ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=3606
のレス21な
0147デフォルトの名無しさん
2007/06/08(金) 09:47:19見てないから分からんのだが、
ひょっとしてAPIのSetWindowPosのことか?
0148デフォルトの名無しさん
2007/06/08(金) 13:28:14ふむふむ・・・
俺設計力とかはあんまないから今一歩かもしれんけどさ
1. 2桁の(+-の)数値の和・差の式をランダムで自動生成して
2. その自動生成された式を自分の内部で計算して 大きいほうの数を持つ式を選べば正解として処理
1.2を決められた時間ないひらすら繰り返す
で点数とか正誤率表示するような感じなのかな?
0149デフォルトの名無しさん
2007/06/08(金) 13:47:37ここまで作ってあげてる優しさに俺は脱帽した
質問者が理解できるかどうかはしらんがw
0150145
2007/06/08(金) 14:54:37SetWindowPosはウィンドウの位置やサイズを変更するAPIですよね。
もしかして常に最前面にしてウィンドウを完全に透明にすればできるということでしょうか?
やりたいことは、↓これと同じようなことなのですが…
http://www.forest.impress.co.jp/article/2007/04/10/crosshair.html
0151デフォルトの名無しさん
2007/06/08(金) 15:21:40・二つウインドウを作り最前線にもってくる
・一つは縦が1ドットx横がデスクトップの横サイズで。もう一つは(ry
・マウスカーソルの位置に二つのウインドウを位置合わせ
こんな感じでできるべ?
0152125
2007/06/08(金) 19:59:32だいたいそんな感じですね
正確には
1. 2桁の正の数のみの数値の和の式をランダムで二つ自動生成して
2. その自動生成された式を自分の内部で計算して 大きいほうの数を持つ式を選べば正解として処理
1.2を決められた時間ないひらすら繰り返す
で一回1ポイントとして終了後に合計得点と正答率を示す
ついでに可能だったら合計得点の今までチャレンジした人の中でのランキングも示す
というところまで作りたいんですが、プログラムの基礎もさっぱりな段階なので
全くダメといった感じです・・・
可能ならばどなたかに参考になりそうなアドバイスを頂きたいです
よろしくお願いします
0154125
2007/06/08(金) 20:11:54やってみたんですけどエラーが出て実効できないです・・・
多分自分が変数を宣言する場所とかを間違ってるのがいけないと思うんですが・・・
0155デフォルトの名無しさん
2007/06/08(金) 22:07:20VB6環境ないんでEXCEL2003のVBAでやってみたがちゃんと動いてくれたぞ?
あれをモジュールにはっつけて
Private Sub CommandButton1_Click()
Call Eq_Sample1
End Sub
Private Sub CommandButton2_Click()
Call Eq_Sample2
End Sub
これでちゃんと数式ができてるいいサンプルだと思うけどなぁ?
どんなエラーがでてどこでエラーが起きてるか出来るだけkwsk書いて
ちょっとそっちで動かないソースここにはりつけてみないか?
貼り付けたのはもちろん>>146の言うとおり21レス目のVBソースが直書きしてあるやつだよな?
0156125
2007/06/08(金) 23:05:39実行するフォームにコマンド1,2を用意して155のソースを書いて実行したら
エラーは出なくなりましたが、画面に何の変化もないといった感じです・・・
標準モジュールに貼り付けるのが何か間違ってますか?
0157デフォルトの名無しさん
2007/06/09(土) 00:04:57なにも表示されないよ
ヒント Debug.Print
適当にラベルにでも表示してみれば?
0158125
2007/06/09(土) 07:34:35Debug.Print
というものを調べてみたらファイル操作というもので色々なことに
使われてるみたいだってことは分かったんですが
146のソースにどういう役割で導入すればいいかというのは分からないです・・・
可能ならばもう少しヒントを頂きたいです
0159デフォルトの名無しさん
2007/06/09(土) 09:23:11根本的に基礎を勉強しなきゃ話にならないとは思うけど
”イミディエイトウィンドウ”という所に文字を表示する機能がDebug.Print
>>146のソースの中にDebugPrintてあるのは確認用で実際のフォーム内には表示されない
なので表示するためにはラベルやテキストボックスに表示させる必要がある
ぶっちゃけどれ位かけるの?
ボタン押してラベルの文字と色を変更することくらいはできるの?
0160デフォルトの名無しさん
2007/06/09(土) 11:19:360161デフォルトの名無しさん
2007/06/09(土) 14:50:50会社によっては未だにVB5使ってるところもあるんだし、
勉強するのに時代遅れもなにもないんじゃない?
必要だから習得する。
必要なければ習得しない。
こんなもんでしょ?
0162デフォルトの名無しさん
2007/06/09(土) 15:13:25もうバージョンアップしない「 完 成 さ れ た 」この言語を
一生使い続けるぐらいの気持ちで
0163デフォルトの名無しさん
2007/06/09(土) 15:22:47そこまでは愛せない俺ガイル
0164125
2007/06/09(土) 15:36:26遅くなってすいません
下の二行に書かれていることはできると思います
本当に簡単なことは多分できるのですが、例えば
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
などのソースはいきなり見たことない書き方の連続で
何が何を意味してるとかが全く分からない状況です・・・
0165デフォルトの名無しさん
2007/06/09(土) 15:49:48そんな事すらいちいち教えなきゃいけないのか?
自分で調べる気は毛頭ないのか?
トイレまで他人が手伝ってもらわないといけないのか?
ふざけんなこの野郎
0166デフォルトの名無しさん
2007/06/09(土) 15:51:25基礎を勉強してからアプリなり何なり作るといいと思うよ。
処理云々以前の問題。
0167デフォルトの名無しさん
2007/06/09(土) 15:58:100168デフォルトの名無しさん
2007/06/09(土) 18:09:57という部分が非常に気持ちわりいな
誰か、正誤判定出来るよう修正キボンヌ
0169デフォルトの名無しさん
2007/06/10(日) 01:04:18正誤判定はしてるんだろ?
指定された時間が経過したら正解率出すんだし。
答える度に毎回ヴィジュアル的に軽く表現させる程度なら
普通にやるもんだろーと思うが。
質問者が言ってるのは、
正解でも不正解でも次々と問題が表示されていくってことだと思うんだが。
0170デフォルトの名無しさん
2007/06/10(日) 11:31:530171デフォルトの名無しさん
2007/06/10(日) 11:42:18SMTPでメールを受信とは、サーバを作りたいと言ってるの?
0172デフォルトの名無しさん
2007/06/10(日) 11:50:28受信したメールは貴方がメールだと思っているだけで、実はタダの文字列なんじゃないか?
0173デフォルトの名無しさん
2007/06/10(日) 12:00:440174デフォルトの名無しさん
2007/06/10(日) 12:50:390175デフォルトの名無しさん
2007/06/10(日) 12:53:29つ アロエ
肌にいいらしいぞ
0176デフォルトの名無しさん
2007/06/10(日) 13:14:500177デフォルトの名無しさん
2007/06/10(日) 14:03:020178125
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と表示されてしまい
値が固定化されてしまいます・・・
ランダムの効果を利かせるには何かソースが足りないんでしょうか?
0179デフォルトの名無しさん
2007/06/10(日) 16:24:35なんかこうなってくると釣りクサイよなwww
0180デフォルトの名無しさん
2007/06/10(日) 17:08:231行ずつ追っていけよww
0181デフォルトの名無しさん
2007/06/10(日) 17:10:270182125
2007/06/10(日) 17:23:202桁同士の加算にしたいから上限99、加減10に設定して
その値をランダムかしてa+bのところに表示
みたなイメージで書いたつもりです
0183デフォルトの名無しさん
2007/06/10(日) 17:29:48だまれ
0184デフォルトの名無しさん
2007/06/10(日) 17:35:170185デフォルトの名無しさん
2007/06/10(日) 17:42:30ってランダム化表示してるだけだろ?aとbは元の値のままぢゃん
0186125
2007/06/10(日) 18:42:37b = 10
のすぐ下の
Label1.Caption = CInt(Rnd(a) * 100)
Label1.Caption = CInt(Rnd(b) * 100)
でランダム化して、その下の
Label1.Caption = CStr(a) & "+" & CStr(b)
でランダム化したa、bをa+bの形式で出力できると思ったのですが
どの辺がおかしいですか?
プログラムを色々前後させてやっても値が0になったりしてしまいます・・・
0187デフォルトの名無しさん
2007/06/10(日) 18:48:48Rnd()でググるなりしてもすぐ解決するだろうに
いちいちその程度のことを人に聞くなよタコ助が
0188デフォルトの名無しさん
2007/06/10(日) 18:49:12>>165
0189デフォルトの名無しさん
2007/06/10(日) 19:35:21ランダム化してねぇぇぇぇぇぇぇぇ!
...それともRnd()は呼び元で用意しているパラメータの値を書き換えるのか?
0190125
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)とかの表現がおかしいですか?
0191デフォルトの名無しさん
2007/06/10(日) 19:56:51このままではお前のくだらない質問だらけでスレがいくつあっても足りない
はっきりいって迷惑なんだよ
0192デフォルトの名無しさん
2007/06/10(日) 20:13:14もともとVBに関する質問をするスレなんだから
初心者はホントに簡単なプログラムでも微妙なとこ
どうすればいいとかわからんもんだよ
お前も慣れるまではそうだっただろ?
何なら俺が125の実現したい機能全部書いてやってもいいけどね
0193デフォルトの名無しさん
2007/06/10(日) 20:17:01いいえ。
a,bの値を書き換えるようにしていないのがダメなだけです。
0194デフォルトの名無しさん
2007/06/10(日) 20:18:56125とあなたでメールでやり取りしてくれ
せいぜい125の辞書にでもなればいい
0195デフォルトの名無しさん
2007/06/10(日) 20:32:38これはVBScriptのだけど、VB6でも同じだからよく読んでみろ。
http://www.mhl.janis.or.jp/~winarrow/vbscript/htm/vbs176.htm
0196デフォルトの名無しさん
2007/06/10(日) 20:33:34Label1.Caption = CInt(Rnd(a) * 100) で、
たとえばLabel1は55と出たとする。
その時のaの値は??? 99だろ?
いい加減気づいてよ…。
0197125
2007/06/10(日) 20:48:58上手く出てくるようになりました
明日以降からはしっかりとMSDNをインストールして来れると思うので
最後に今日中にもう一つだけ教えていただきたいのですが
2桁の整数同士を加算したいから142をヒントにして
Ransuu = Int((hi - Lo + 1) * Rnd + Lo) をa、bに置き換えてみたんですが
一桁の整数がまだ出てきてしまいます
多分ここがポイントになってると思うんですが、この式は何を行うための
式なんですか?
0198デフォルトの名無しさん
2007/06/10(日) 20:59:45ステップ実行すりゃいくらでも分かるだろ
何故それをしない?
>>142の式はRansuuに1〜10の値をランダムに代入してるだけだ
0199デフォルトの名無しさん
2007/06/10(日) 21:01:030200125
2007/06/10(日) 21:01:57ステップ実行って何ですか?
0201デフォルトの名無しさん
2007/06/10(日) 21:03:580202デフォルトの名無しさん
2007/06/10(日) 21:31:01数字が一つ増えていくといったような機能は
VBで作ることは可能ですか?
0203デフォルトの名無しさん
2007/06/10(日) 21:32:230204デフォルトの名無しさん
2007/06/10(日) 21:46:41http://pc11.2ch.net/test/read.cgi/software/1181387720/l50
0205デフォルトの名無しさん
2007/06/10(日) 22:07:53くだすれVB6.0以前(超初心者向け)
http://pc11.2ch.net/test/read.cgi/tech/1165574205/
住人は共通化もしれんが
0206デフォルトの名無しさん
2007/06/10(日) 22:10:360207デフォルトの名無しさん
2007/06/11(月) 00:42:45それじゃ人に教えられたことしか出来なくなるからな。
理解せずに"書き方"としてコードを覚えて貰っても意味がない。
同じことの繰り返しになるだけ。
0208デフォルトの名無しさん
2007/06/11(月) 09:16:10どんな素晴らしい回答が帰ってくるのか
いや・・・それすらないかもしれんw
>>125
現在全てのソースで現状何処までできて何処がどう理解できないのか
折角だからkwsk書いてみ?
それの判らない事は教えないと思うけど調べる為の術はきっと優しいお兄さん方が教えてくれるかもしれないw
でも・・・・判らない事を適切に調べることができるのもPGとしてのスキルだと思うぜ
0209デフォルトの名無しさん
2007/06/12(火) 11:01:28こんな感じか?
このくらい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
0210デフォルトの名無しさん
2007/06/13(水) 14:24:13後、カーソルを左端じゃなくて右端に固定したいのですが…
0211デフォルトの名無しさん
2007/06/13(水) 15:41:210212デフォルトの名無しさん
2007/06/13(水) 15:54:20答える人間は一緒なのに
0213デフォルトの名無しさん
2007/06/13(水) 16:56:23ろすとふぉーかす
せっとふぉーかす
あらいんめんと
0214デフォルトの名無しさん
2007/06/13(水) 22:01:450215デフォルトの名無しさん
2007/06/14(木) 08:29:360216デフォルトの名無しさん
2007/06/14(木) 19:37:29Set pExlApp = CreateObject("Excel.Application")
Set pExlBook = pExlApp.Workbooks.Open(strFileName)
1段目は正常に動くのですが
2段目が
OfficeXP時は正常に動き
Office2000時にエラーがでてしまいます。
どのような理由が考えられますか?
0217デフォルトの名無しさん
2007/06/14(木) 20:41:52自作のActivX DLL を exe から呼んでるんですが、
1、プロジェクト→参照 でDLLを参照すると、DLLの配置ディレクトリを
フルパスで設定しているように見えるんですが、この認識はあってますか?
2、他のマシンに自作プログラムを持っていくとき、exeとdllの配置場所を任意に
したいのですが、どうしたら可能ですか?
0218デフォルトの名無しさん
2007/06/15(金) 00:09:411、ActiveXコンポーネントはレジストリ登録して使えるようになる訳だから、
当然場所はフルパスで設定されている。
2、ActiveX DLLはどんな場所にインストールしようと構わない。
インストーラでActiveXコンポーネントを登録をするようにするだけ。
0219デフォルトの名無しさん
2007/06/15(金) 00:36:15なるほど、ありがとうございます。
うすうす勘付いてはいましたが、やっぱレジストリ登録するのか。
ということは、DLLの位置は気軽に移動することはできないってことですね?
Win32APIのLoadLibrayEx だといくつかのサーチパス候補のどれかにあれば
いい、・・・というようなやり方は無理と。
0220デフォルトの名無しさん
2007/06/15(金) 00:37:52○ いいという仕様ですが、そういうやり方は無理と。
0221デフォルトの名無しさん
2007/06/15(金) 05:57:23Webページをリクエストした時に
送られてくるクッキーを取得したいのですが
これは可能なのでしょうか?
0222デフォルトの名無しさん
2007/06/15(金) 09:56:07例えば、コマンドボタンが3つありそれをある規則に従って
順番にクリックしてもらった後に次の処理が実行される
といったコードを書きたいんですが、
コマンドが1、2、3と順に押されたことの判定と
最後のコマンドが押された瞬間に行わせたい処理はどこに記述すればいいのでしょうか?
コマンドが押される順番は毎回決まってないといった感じなので、
特定のコマンド内に書くやり方ではうまくいかないと思うのですが
何かやり方をご存知の方がいたらご教授よろしくお願いします
0223デフォルトの名無しさん
2007/06/15(金) 10:35:08private 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
0224デフォルトの名無しさん
2007/06/15(金) 10:37:42ボタンのクリックで ButtonManage を最後に追加しないと判定しないわw
0225デフォルトの名無しさん
2007/06/15(金) 11:55:18エラーメッセージくらい書けよ
0226デフォルトの名無しさん
2007/06/16(土) 02:40:44変数cntが未定義&インクリされてない件について
それじゃどの順番でボタン押しても、
配列の値はみんな同じじゃね?w
0227デフォルトの名無しさん
2007/06/16(土) 02:43:190228デフォルトの名無しさん
2007/06/16(土) 04:59:00Private 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 を変更すればいい。
0229デフォルトの名無しさん
2007/06/16(土) 05:05:38修正漏れがあった。
0230デフォルトの名無しさん
2007/06/16(土) 05:07:300231デフォルトの名無しさん
2007/06/16(土) 11:57:16クラス使ってステートマシン作るのがいいと思う。
実際書いてみたんで要望があれば言ってちょ。
0232デフォルトの名無しさん
2007/06/16(土) 14:55:25オートナンバーの項目はどうすればいいのでしょうか?
wrkSql = wrkSql & "INSERT INTO MSTDB VALUES("
wrkSql = wrkSql & "" & & "," 'オートナンバー
wrkSql = wrkSql & "" & wYear & "," '年
wrkSql = wrkSql & "" & wMonth & "," '月
wrkSql = wrkSql & "" & wDay & ")" '日
'クエリ実行
gConnDB.Execute wrkSql
これの一番上のオートナンバーの追加がわかりません。
0233デフォルトの名無しさん
2007/06/16(土) 18:36:29オートナンバーはINSERTの対象にしなけりゃいいんだよ。
勝手に値が入る。
0234デフォルトの名無しさん
2007/06/16(土) 21:25:300235222
2007/06/17(日) 10:11:22みなさんいろいろありがとうございます
>>228
buttonをcommandに変えてそのまま実行してみたんすが
Private Sub AddEventToQue(id As String) というところの
AddEventToQueでsubまたはfunctionが定義されていませんという表示が出てしまいます・・・
ここを変数宣言してみたり色々やってみたりしたんですが、まだうまくいかないので
アドバイス頂けると助かります
>>231
ありがとうございます
クラス使ってステートマシンというのについてよろしければ
もう少し具体的に教えていただけませんか?
取りあえず今はコマンドが3つ押されたことを認識したら
例えば画面上にあるラベル内の数値などが変更されるといったようなことを目指してます
0236231
2007/06/17(日) 12:39:24こんな感じ
'---- クラスモジュール 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
0237231
2007/06/17(日) 12:40:54Dim 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
0238231
2007/06/17(日) 12:42:08ValidInputLength = 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
0239231
2007/06/17(日) 12:43:38Private 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
0240222
2007/06/17(日) 14:30:34まだコードを実行してないんですが、これを実行する場合って
Buttonのフォームが必要ですよね?
本を見た感じだと画面左のコマンドやらラベルやらを引っ張ってくる場所から
ボタンも引っ張ってこれるようになってるっぽいんですが、自分のVB6.0には
入ってないっぽいんですよね・・・画面色々いじくって表示させられないか試したりもしたんですが・・・
あとこれを実行して上手く自分の目的の機能を実現するためには、コマンドやボタン
以外にもフォーム上に引っ張ってくるべきアイテムはありますか?
0241デフォルトの名無しさん
2007/06/17(日) 18:39:51必要な操作は、
(1) プロジェクトにクラスモジュールを追加して、プロパティグリッドで名前を"CInputOrderValidator"
に変更して>>236以降のコードを貼り付ける。
(2) Form1にコマンドボタンを三つ(Command1、Command2、Command3)貼り付けて
>>239のコードを貼り付ける。
これだけだよ。
0242デフォルトの名無しさん
2007/06/17(日) 19:04:45まさかとは思うが、
DoNextProc
これもコードとしてそのまま書いたのか?
0243デフォルトの名無しさん
2007/06/17(日) 23:04:21そのまま書いていました・・・
>>241
実行できましたありがとうございます
この場合だとコマンド1、2、3の順で押された場合はAの処理
他の順で押される5通りの場合はBの処理が行われるといった感じになっていて
これを全てバラバラに考えて(例えば、2、1,3の順で押されたらCの処理)
といったようにしたいと思ってクラスモジュール内でこの機能を実現するために
関係してきそうな部分を探して考えてみたんですがいまいちどこをいじればいいかが分かりません・・・
何度も申し訳ありませんが、これに関してアドバイスいただけると助かります
よろしくお願いします
0244デフォルトの名無しさん
2007/06/18(月) 09:09:47一連の流れを眺めてみたけどさ、もっと本質を理解したほうが良いと思うよ
VB6以前なら強力なデバッグ実行機能もあるんだしさ
・暗記すべき部分はきっちり暗記汁(VBの予約語等
・エラーが出たら、メッセージ良く嫁
・デバッグ実行でどんな処理がどこで行われているか調べるべし
・コードの全体をイメージ出来るまでひたすら読んだり書いたりデバッグ実行したり汁
・つーか、ちっとは自分で考えろw
0245デフォルトの名無しさん
2007/06/18(月) 17:16:16Select Caseも知らんのか。
あと>>242で言ってるのは要約すると、
サンプルとして挙げられたソースに記述してあるコメントくらい普通に理解しろってことなんだが…
分かるか?
0246デフォルトの名無しさん
2007/06/18(月) 19:56:330247デフォルトの名無しさん
2007/06/18(月) 19:59:250248デフォルトの名無しさん
2007/06/18(月) 22:03:550249デブオ
2007/06/19(火) 16:58:10又、指定されたURLからファイルをダウンロードすことってできますか?
できるとすればどのようにすればいいのでしょうか?
どなたか教えてください。
0250デフォルトの名無しさん
2007/06/19(火) 17:00:28WEBBROWSERコントロールでも使ってろよw
0251デブオ
2007/06/19(火) 17:16:19MSWebDVDコントロールのことでしょうか?
0252デフォルトの名無しさん
2007/06/19(火) 17:24:11メニュー>プロジェクト>コンポーネント>コントロールで
該当するやつのチェック外せばいいよ
どのコントロールかぐらいは自分で調べろ
0253デフォルトの名無しさん
2007/06/19(火) 17:33:11○チェック入れれば
0254デフォルトの名無しさん
2007/06/19(火) 19:06:09ビスタでも問題なく使えますか?
0255デフォルトの名無しさん
2007/06/19(火) 21:20:25それをここに報告すれば良いのでは
0256デフォルトの名無しさん
2007/06/20(水) 00:49:420257デフォルトの名無しさん
2007/06/20(水) 01:37:24でもC++って劇遅だよな
0258デフォルトの名無しさん
2007/06/20(水) 02:09:20つまんねえ釣りはVIPでやれ
0259デフォルトの名無しさん
2007/06/20(水) 15:30:14FormLoadに
flexGrid.SelectionMode = flexSelectionByRow
をいれることにより行選択は可能になりますが、
範囲指定を不可能にする方法はありますか?
また選択している行の位置を求める方法はどうするのでしょうか?
0260デフォルトの名無しさん
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を検索して取得したい。
以上宜しくお願い致します。
0261デフォルトの名無しさん
2007/06/21(木) 09:26:00範囲選択を不可能にする方法はある
行に値を調べる方法は
Rowプロパ
0262261
2007/06/21(木) 09:26:52行の位置を調べる方法は
Rowプロパティのヘルプを見てみないか?
0263デフォルトの名無しさん
2007/06/21(木) 14:41:36そのときバージョン情報ダイアログを組み込むように指定する。
そのフォームの「システム情報」ボタンがレジストリにアクセスしてるから
そこをパクる。
簡単な取得だけならこれで済むと思います。
このコードは、レジストリに読み書き権限でアクセスするので、guestとか制限ユーザーだと
エラーになるかもしれません。APIビューアからKEY_READを探してきて、
読み取り専用権限に直しておいてください。
0264デフォルトの名無しさん
2007/06/21(木) 15:36:440265デフォルトの名無しさん
2007/06/21(木) 15:39:020266デフォルトの名無しさん
2007/06/21(木) 16:29:070267デフォルトの名無しさん
2007/06/21(木) 16:50:010268デフォルトの名無しさん
2007/06/24(日) 08:29:21インターネットで配布するファイルを生成しましたが、
サーバに配置してアクセスしてもインストールが開始されず、
左上に×マークがでるだけの状態です。
どうすれば正常にインストールされるようになるのでしょうか?
なお、配布ファイルには署名をしており、ブラウザはIE6で、
ActiveX関係の設定は有効にしています。
0269デフォルトの名無しさん
2007/06/25(月) 04:30:110270デフォルトの名無しさん
2007/06/25(月) 10:36:03ディストリビューションウィザードのこと?
サーバ上に配置したファイル名を全て挙げてみ?
それとVB関係無いがファイルのアクセス権限はどうなってる?
>>269
なにそのVBのVの字も出てこない素敵Questionはwwww
Flashについてはよく知らないが、ひょっとしてJavaScriptの話じゃね?
スレチにも程があるよ?
0271デフォルトの名無しさん
2007/06/25(月) 14:17:00・6.0でディストリビューションウィザードといわれるものが5.0でのセットアップウィザードのようです。
・CABとHTMファイルです。
・読み、書き、実行権限を全員にすべて与えている状態です。
0272デフォルトの名無しさん
2007/06/25(月) 15:05:43CABは圧縮ファイルであって、インストーラではないのだが。
0273デフォルトの名無しさん
2007/06/25(月) 15:08:21ウィザードで作られるファイルは3つあるはず。
CABしかあげてないから駄目なんじゃね?
Setup.exeともう一つなんかあったような
0274デフォルトの名無しさん
2007/06/25(月) 17:15:51SETUP.LST
0275268
2007/06/25(月) 17:32:31CAB・HTMファイルと、SUPPORTフォルダ(中にOCX・DDF・INFファイル)でした。
Setup.exeやSETUP.LSTといったファイルは見つけることができませんでした。
0276デフォルトの名無しさん
2007/06/26(火) 05:31:24VBで作られたEXEファイルは完全な機械語のファイルなのでしょうか?
それとも中間言語が入っているのでしょうか?
0277デフォルトの名無しさん
2007/06/26(火) 08:05:21Pコードのオプションつければ中間もつくれる
0278デフォルトの名無しさん
2007/06/26(火) 09:33:00コンパイルするとC2.EXE と LINK.EXEが裏で動いている。
0279デフォルトの名無しさん
2007/06/26(火) 16:02:51VBScript(WSH)をかじり始めたものです。
作成したCVSファイルに1行追加したいのです。
Set objText = objFile.OpenAsTextStream(8,0)
objText.WriteLine("搬入年月日,Xコード,工場コード,得意先コード〜他")
(8,0)で8が追加モードとのことですが挿入ってのはないんでしょうか?
最終行ではなく一行目にWritelineの内容を挿入したいのです。
何かヒントいただければ幸いです。
0280デフォルトの名無しさん
2007/06/26(火) 18:03:16WebBrowserを利用してどこかのサイトを読み込ませて、読み込み完了まで待機するという処理で、
実行エラー -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の使用方法がおかしいのでしょうか?
0281デフォルトの名無しさん
2007/06/26(火) 23:30:18案1
既存のファイルを全部読む
先頭に連結して保存
案2
バッチ
0282デフォルトの名無しさん
2007/06/27(水) 01:11:48どうでもいいけどあのCMの曲って全員集合のアレンジなんだよね。
0283デフォルトの名無しさん
2007/06/27(水) 01:13:280284デフォルトの名無しさん
2007/06/27(水) 01:18:50>>277は
メニューのプロジェクト→プロジェクトのプロパティ
「コンパイル」タブの話です。
0285279
2007/06/27(水) 11:21:18どうもです。
案1の場合、既存のCSVをInputにして1行ごとにOut。。
その時にヘッダー、、項目行と結合って事でしょうか?
>>283
( ̄□ ̄;)!! あっ
0286デフォルトの名無しさん
2007/06/27(水) 12:14:14いつ落ちるか怖くて使いたくないがw
0287デフォルトの名無しさん
2007/06/27(水) 13:15:23横レスだが
別にStreamだし一気に読みこんでそこにくっつけるんでいいんじゃないの?
0288デフォルトの名無しさん
2007/06/27(水) 13:55:51御座いませんでしょうか?
0289279
2007/06/27(水) 14:27:03objRead.AtendOfStream 〜 こういうやつ?
InsertLine なんてもあったとは知らなかった、、、
なんとなくどうすればいいか見えてきた気がします。
みんなヒントサンクスです。もうちょい頭ひねってみます
でも。。。(´・ω・`)突っ込みあってから元気でないよー
0290デフォルトの名無しさん
2007/06/27(水) 14:42:16「他のアプリケーション」はオープンしてるファイルを
横から書き換えられて誤動作しないの?
0291279
2007/06/27(水) 15:18:43objRead.ReadAll
intLine = objRead.Line
まずこんなんやってみました。
ここから行数わりだして、その値をとりあえず「x」として
その「x」が1行目をさす所に"InsertLine〜"を考えています。
たぶんいろんなやり方あるんだろうけど、ここからやっていきます。
また詰まったら指導お願いすると思うのでよろしくです。
0292デフォルトの名無しさん
2007/06/27(水) 15:29:17のような行動が当たり前なんだろうけど、このスレではものすごい優秀な行動に見えて困るw
0293デフォルトの名無しさん
2007/06/27(水) 23:01:08財務****.xls(*は日付)というファイルが複数あって、
財務ファイルのセルA1とA10の値をtempにリスト化させるにはどうしたらいいのでしょう?
財務ファイルを一つずつ開けてたらきりがないので一気に処理できたらと思うのですが・・・。
できれば、
財務ファイル名、A1、A10
が横に並んでて、縦にファイル全ての値がリスト化できるようにしたいのですが、どなたかご存じないですか?
0294デフォルトの名無しさん
2007/06/28(木) 01:56:51・任意のエクセルファイルを開いてA1〜A10を読むコードを書いてみる
・二つをくっつける。ファイル名が自身と同じなら読まない。開くたびに一行ずらす。
って、VBAはスレ違いじゃなかったっけか。
0295デフォルトの名無しさん
2007/06/28(木) 04:42:41> その「x」が1行目をさす所に"InsertLine〜"を考えています。
何言ってるかわからんのだけど誰かわかるの居る?
>>279の目的で行数調べる必要どこにあるんだ?
>>292
?
0296デフォルトの名無しさん
2007/06/28(木) 10:57:39さっぱり分からん。
>>279で言ってる"1行目"ってのが"10行目"になったり"100行目"になったり、
挿入行が可変する値であるならなんとなく想像付くが。
固定で1行目に挿入するだけなら行数とか関係無いと思われ。
0297デフォルトの名無しさん
2007/06/28(木) 11:31:47テーブルAとテーブルBがあります。
両方にそれぞれデータが入っているのですが、
テーブルBのデータをすべて消去し、
テーブルAのデータをすべて写すにはどうしたらよいでしょうか?
0298デフォルトの名無しさん
2007/06/28(木) 11:39:52日本語でOK
0299デフォルトの名無しさん
2007/06/28(木) 11:50:59とりあえずエスパー的にテーブル構造が全く同じだと定義しておこうか
で、テーブルBのデータを移すようだが元あったテーブルAのデータはどうするんだ?
テーブルAをすべて消していいならすげぇ楽
テーブルAの内容を消さないなら 重複データチェックして重複してた時どうするかの処理が必要かな?
そんなむずかしいもんじゃないよ
0300299
2007/06/28(木) 11:54:47>テーブルAのデータをすべて写すにはどうしたらよいでしょうか?
逆にかいてたし、勘違いしてレスしてた orz
修正版
とりあえずエスパー的にテーブル構造が全く同じだと定義しておこうか
手順的に
テーブルBのデータを全部削除
テーブルAのレコードをテーブルBにコピー
たったこれだけじゃないか
どこがどうわからないのかが判らないけど
そんなむずかしいもんじゃないよ
0301297
2007/06/28(木) 12:48:08テーブルAとテーブルBの構造は同じです。
テーブルBのレコードを全部消した後に、
テーブルAのレコードをすべてコピーするわけですが、
テーブルAのレコードを1つ読み込んでテーブルBに入力と
方法をとるとデータの量的にかなりの時間がかかってしまいます。
テーブルBごと削除して、テーブルAをコピーして名前だけ変更
というようなやり方があれば教えていただきたいのですが。
0302デフォルトの名無しさん
2007/06/28(木) 12:54:09DROP TABLE テーブルB
してから
CREATE TABLE テーブルB AS SELECT * FROM テーブルA
でテーブルBの再作成。
あるいは
TRUNCATE TABLE テーブルB
してから
INSERT INTO テーブルB SELECT * FROM テーブルA
する。
主キーや制約は後から追加。
それだけ。
0303デフォルトの名無しさん
2007/06/28(木) 12:55:15ありがとうございます。
0304デフォルトの名無しさん
2007/06/28(木) 22:44:580305デフォルトの名無しさん
2007/06/29(金) 00:31:34「ネットワーク接続」でそのポート(モデム)に「着信接続」及び
「ダイアルアップ」が設定してあり
外部と発着信ができるようになっています。
VBアプリからこのモデムに対してヘルスチェックを行いたいのですが
「着信接続」が設定されているため、アプリからポートがOPENできません。
OPENできればATコマンドでモデムのチェックができるのですが。
APIのrasdial関数などで実際にダイアルアップするくらいしか
VBアプリからモデム状態を見ることは無理でしょうか?
0306デフォルトの名無しさん
2007/06/29(金) 06:58:560307デフォルトの名無しさん
2007/06/29(金) 07:57:43RDBMSは何だ?
そもそもVB関係なくDB固有の機能と
SQLだけで解決するんじゃないか?
だとしたらスレ違いだ。
0308デフォルトの名無しさん
2007/06/29(金) 09:46:02知らんけど
http://support.microsoft.com/kb/823179/ja
こことか
http://forums.belution.com/ja/vc/000/325/07.shtml
こことか参考になるんじゃね?
うまく出来たら教えてよ
0309デフォルトの名無しさん
2007/07/01(日) 01:07:15環境はVB6.0 access2003を使っています。
VBでデータベースを操作し、ある項目が空欄のデータのみを抽出したいのですが
この空欄をどう表現すればいいのでしょうか?
ちなみに現在は「〜〜where ○○ = ''"」という風に書き、目的のデータを引っ張ってこれていない状態です。
0310デフォルトの名無しさん
2007/07/01(日) 03:11:35VB6,XP
0311デフォルトの名無しさん
2007/07/01(日) 07:44:33空文字なのかNULLなのか、そこが問題だ。
〜〜where ○○ = '' or ○○ IS NULL
でも取れないのか?
0312309
2007/07/01(日) 15:06:11解答ありがとうございます。
目的の項目は、accessでフィールドを作っただけで中身は設定してないので
NULLだと思います。
「〜〜where ○○ = '' or ○○ IS NULL」だと『1つ以上の必要な
パラメータの値が設定されていない』といったエラーが帰って着てしまいます。
0313デフォルトの名無しさん
2007/07/01(日) 17:57:53="" OR NULL
みたいにしたらたぶんSQL作ってくれるしチェックもできる
それをソフトに組み込めばいいんじゃね?
0314デフォルトの名無しさん
2007/07/01(日) 18:52:12初歩的な質問ですがご回答お願いします。
テキストボックスに入力された文字列が
「半角スペース×n(n>1)」か「それ以外の文字列(半角スペース含む)」
であるかを判定するためにLike演算子を用いようと思っています。
半角スペース一つだけしか入力されないのであれば
入力された文字列 Like " "で問題ないのですが
半角スペースが複数ある時にLikeでどの用に記せばいいか分かりません。
文字列を一文字ずつ取得、判定するしかないのでしょうか?
よろしくお願いします。
0315デフォルトの名無しさん
2007/07/01(日) 21:11:26俺なら対象文字列をtargetStrとして、
・trim(targetStr) = targetStr
・replace(targetStr," "," ") = targetStr
の2パターンで比較してみるかな。
後者は全角スペース対策。
でなきゃ、Splitで半角スペースをデリミタに配列にして、
ループで空文字以外のデータが存在するかチェックする。
これだと1文字ずつ取り出して比較する方が早いかもしれんwww
0316デフォルトの名無しさん
2007/07/01(日) 22:08:02InStr()は?
つか、Likeでいくならワイルドカード使うとか。
ワイルドカード使わないならイコール使った比較をした方が早いし。
0317デフォルトの名無しさん
2007/07/01(日) 22:10:45そのフィールドの型とNULL可否を調べりゃ自ずと分かるような希ガス
0318デフォルトの名無しさん
2007/07/01(日) 22:20:56○○をそのまま書いたんだとしたらそのエラーは合ってると思うが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
と、こんな感じにすればいいかと。
これでもパラメータエラーが出るなら、
項目名やテーブル名を間違えてるだけじゃねーかと。
0319デフォルトの名無しさん
2007/07/01(日) 22:47:36どうしてもうまくいきません・・・
まず、データベースのデータをスプレッドシートに表示させます。
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&)
0320デフォルトの名無しさん
2007/07/01(日) 22:51:48.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
0321デフォルトの名無しさん
2007/07/01(日) 22:53:42Call 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&)
これで、データ自体テーブルに存在しない場合と患者番号のデータがあるが体重のデータがない場合に、
何らかのオブジェクトを返してスプレッドシートに空白で表示したいんです。
また、患者番号のデータがあって体重のデータもある場合も、データが複数存在する場合があります。
その場合、測定日が一番新しいデータを返したいのですが、どのようにしたらいいでしょうか?
0322314
2007/07/01(日) 22:58:55御回答ありがとうございます
trim、replace共に便利な関数ですね
Likeで実装するよりソースがシンプルになりそうです
早速試してみます
>>316
御回答ありがとうございます
ワイルドカードで試そうと考えたのですが、
「特定の文字列(=" ")が複数並ぶ」を指定するワイルドカードってないですよね?
あればLikeを用いて簡単に実現出来るのですが。
0323デフォルトの名無しさん
2007/07/02(月) 11:14:19スペースがいくつあるのか数える必要が無いなら
If hoge Like "* *" Then
'スペースが複数並んでいる
ElseIf hoge Like "* *" Then
'スペースは並んでいない
End If
これでいいんじゃないかって話だと思うんだが。
0324デフォルトの名無しさん
2007/07/02(月) 11:16:11SQLの話ですか?
0325319
2007/07/02(月) 19:21:50すみません・・・SQLの話になるのでしょうか・・・?
今まで文系だったのでデータベースもプログラムもわからなくて。
Set objRst2 = OraDatabase.DbCreateDynaset(sSQL, 0&)
をつかってデータがない場合空白を返すというヒントをもらったのですが、
考えても調べてもわかりません・・・
0326デフォルトの名無しさん
2007/07/02(月) 20:28:31たとえば質問の通り
>患者番号のデータがあって体重のデータもある場合も、データが複数存在する場合があります。
>その場合、測定日が一番新しいデータを返したい
とってきたデータをスプレッドに表示さす部分はVBの話
たとえばNothingかレコードセットがあるかで分岐させるような場合
になるんじゃなかろうかいね?
0327319
2007/07/02(月) 22:09:05もしデータがなければ空白を表示させますってVBでできるのでしょうか?
本当に無知ですみません。
ブラインドタッチもできない私がなぜ採用されたのか不思議で・・・
体重のデータ自体測定日の新しいデータ順でとってきているのでmovenextしなければ
その新しいデータだけとってるってことになるのかな?なんて考えたり・・・
Nothing レコードセット・・・調べてみます!!!
0328デフォルトの名無しさん
2007/07/03(火) 08:05:54たぶんNothingじゃなくてEOFになると思うけど、
それ以前に目的の形でデータを取得するSQLを書いた方が早い希ガス。
確実にOUTER JOIN使うことになると思うが、
・患者番号含む患者データ
と
・患者番号別に最新の体重を返すSELECT文
の外部結合で目的のデータは得られると思うが。
0329319
2007/07/03(火) 19:24:11外部結合させると必要なデータが取れなくなったりしないんでしょうか?
OUTER JOIN
初めて聞きました・・
調べてみます!
0330デフォルトの名無しさん
2007/07/03(火) 21:50:440331デフォルトの名無しさん
2007/07/03(火) 22:53:46その後のループ文で
EOF(1)とかにしてるのは何でだ?
因みに俺VB今日仕事で初めて触ってて、とあるシステムの解析中。
FreeFileで変数に番号取得してるならそれ使うのがセオリーなんじゃないのか?
0332デフォルトの名無しさん
2007/07/03(火) 23:04:530333デフォルトの名無しさん
2007/07/03(火) 23:09:49直してあげればいいじゃない
0335デフォルトの名無しさん
2007/07/04(水) 00:14:44俺かもしれん
0336331
2007/07/04(水) 00:57:00近くにいないからその心配はないな。お前さんじゃない
VBほとんどわかってない状態での勝手な推測なんだが
FreeFile関数の戻り値って1、2、3っていう感じのシーケンスで戻ってくるんじゃないか?
例えば1番目と2番目のファイル番号使ってる状態でFreeFile関数呼ぶと戻り値として3が
戻ってくるみたいな。
だとすると作った奴は現在1つもファイル番号使ってないから
戻り値として1が必ず戻ってくるはずだ的な事を思ってEOF(1)にしたとか。
まあ、それは作成者にしかわからない事だから”保守”って意味じゃ
使っちゃいけないやり方だと思うけどね。現に俺はそれで頭抱えてたわけだしw
とりあえずまた何度かここでお世話になるかもしれないから見かけたらよろしく。
0337デフォルトの名無しさん
2007/07/04(水) 21:59:45""を消す関数?教えてください
0338デフォルトの名無しさん
2007/07/04(水) 23:34:100339デフォルトの名無しさん
2007/07/05(木) 00:22:35すぐに検索出来るのも立派な武器なんだなぁと実感してます。
0340デフォルトの名無しさん
2007/07/05(木) 00:28:09Replace$
でいいでしょうか?w
0341デフォルトの名無しさん
2007/07/05(木) 00:30:140342デフォルトの名無しさん
2007/07/05(木) 00:31:07型宣言文字
0343デフォルトの名無しさん
2007/07/05(木) 00:31:140344デフォルトの名無しさん
2007/07/05(木) 00:32:26という事はMid$でもStringって言う明示的な意味なのですか
0345デフォルトの名無しさん
2007/07/05(木) 00:33:500346デフォルトの名無しさん
2007/07/05(木) 00:35:18おっしゃるとおり明示的に文字列型ですよ〜 ということらしいですw
まぁ内部的に実はVariant型で処理してるからだったような気がしますが kwskは覚えてないです ごめんなさい
0347デフォルトの名無しさん
2007/07/05(木) 00:39:42なるほどありがとうございます。
0348デフォルトの名無しさん
2007/07/05(木) 00:44:090350デフォルトの名無しさん
2007/07/05(木) 01:11:18ちょっとかわいそうだな
気づかなかっただけだろ気にすんなやw
0351デフォルトの名無しさん
2007/07/05(木) 01:17:17次からはちゃんと確認しようと思うのでありました・。
めでたしめでたし
0352デフォルトの名無しさん
2007/07/05(木) 03:11:36Set文というのは実行した時点でメモリが消費されるんでしょうか?
だとすると、Set文でCreateObjectとかクラスの宣言とかするのを
プログラムの最初の方でまとめてやるのはやめた方がいいですか?
最初でまとめた方が分かりやすいし楽なのでそうしてたんですが…。
Set文は、その変数を使用する直前にその都度入れるべきなんでしょうか?
よろしくお願いします。
0353デフォルトの名無しさん
2007/07/05(木) 03:49:180354デフォルトの名無しさん
2007/07/05(木) 15:52:30さらにラベル2にラベル1の内容の計算結果として表示させたいと思って
Label2.caption = Label1.caption
と書いたら自動的に計算結果が出力されると思ったんですが
実行したら253+645の数式がラベル2に表示されてしまいました・・・
ラベル2に表示される内容をラベル1の計算結果としたい場合には
あとどのようなことが足りないんでしょうか?
0355デフォルトの名無しさん
2007/07/05(木) 16:22:43頭
0356デフォルトの名無しさん
2007/07/05(木) 16:28:41つeval
0357デフォルトの名無しさん
2007/07/05(木) 17:07:04MSDN読んで少しは考えろ
つまり足りないのはお前の頭だ
>ラベル2に表示される内容をラベル1の計算結果としたい場合には
ラベル1の中の計算を自分でするしかないだろうなぁ…
253という"数字"
+という"四則演算の記号"
645という"数字"
を"253+645"という"文字"を解析して自分で書かないといけないと思うが?
0358デフォルトの名無しさん
2007/07/05(木) 19:10:40お前も足りてないよ
0359デフォルトの名無しさん
2007/07/05(木) 19:39:47画面上にあるコマンドを、ある条件を満たすまでそのコマンドを押しても何も起こらない
といったようなロックをかけてしまうような方法ってVBで可能ですか?
アドバイス頂けると助かります
0360デフォルトの名無しさん
2007/07/05(木) 19:45:240361デフォルトの名無しさん
2007/07/05(木) 20:13:00最初に開くformを変更しての指定みたいのってできたっけ?
form1にプログラムやらインタフェースやらかなり完璧に作ってしまって
実はそれは2番目に開かせたい画面だったってことに今気付いたんだけど
なんとか代えられないかな・・・
0362デフォルトの名無しさん
2007/07/05(木) 20:17:19できる
0363デフォルトの名無しさん
2007/07/05(木) 20:20:490364デフォルトの名無しさん
2007/07/06(金) 06:57:35どこを直したらいいんでしょうか?
a = Timer
b = Fix(a)
c = a - b
この式でそれぞれの値を表示させると、aは小数点以下2桁で、bは整数なのに、
cの値がa - bになりません。
よろしくお願いします。
0365364
2007/07/06(金) 08:17:190366デフォルトの名無しさん
2007/07/06(金) 08:34:29コマンドを押すとそれがまたランダムで変わっていくという感じなんですが
これをいつ実行した時でも全く同じ内容で表示することってできますか?
要するに、誰がそのシステムを使って操作をしていっても中身がランダムで
変わっていくことに変わりはないが、全ての人に対して同じ順番で同じ内容のものが表示されてる
といったことを実現したいんですがやり方ご存知の方がいたらアドバイスを
お願いしたいです
0367デフォルトの名無しさん
2007/07/06(金) 09:17:51たとえば
A,B,C,D という4つの文字列があって
誰が使ってもABCDの4つしか出てこないけど表示の順序はランダムだ
みたいなかんじ?
0368デフォルトの名無しさん
2007/07/06(金) 09:27:10スレが立ち、質問というよりはその分野に興味がある人間が集まり、
丁寧なレスで穏やかにスレが伸びる。
↓
息が長くなるに従い、他のレスを見て「こんなのばっかなら俺ってケッコー上なんじゃね?」
という勘違い野郎が発生。棘のあるレスをしだす。
↓
質問者は基本的に聞きたいことだけ聞いて去って行くのに対し、回答者、特に↑のような
者が居座り続け、古参化。同じ様な事ばかり聞かれるので面倒になり、
「質問前に嫁」テンプレを作り、初心者を相手にしなくなる。
↓
「テンプレ嫁カス」「ググレ」「既出」
レスの大抵がこれになる。更にそれで済ませば良いものを、なぜかその質問をネタに
「こういう奴って何考えてんのかね」「ゆとり教育のr」と叩いて悦に入る。
↓
スレが古参の黒い馴れ合いで凝り固まる。
・sage進行! ・テンプレ必読! ・先ずは自分で調べよう! ・ログ必読!
などと誰かさん達にだけ都合のいいテンプレを長々と貼り出す。
反論されると「それが本人の為」などともっともらしい事を言うが、
要するに「俺達が興味の無い話はするな」と言っているだけである。
この頃になるとレスの殆どが哀れな初心者への罵詈雑言になる。
場合によっては“初心者質問スレ”を別に立てるという暴挙まで行う。
こういったスレは要するに回答を餌に、一部住人が
「自分達の興味のある最新の話題」を蒐集しているだけの“エセ質問スレ”である。
代表的なエセ質問スレ
http://pc11.2ch.net/test/read.cgi/antispam/1163495950/l50
0369366
2007/07/06(金) 11:04:33コマンド押したら次はBACD
またコマンド押してその次はCADB
次はBDAC
・・・
といった順序でランダム表示されるのを
誰がシステム使ってもこの同じ表示条件を与えるために
この順序が保たれるいった感じですね
0370デフォルトの名無しさん
2007/07/06(金) 11:39:201.表示する内容の一覧を自分で勝手に定義して
2.それをランダムで組み合わる
例えば
1,AAA
2,BBB
3,CCC
4,DDD
とか定義して
ランダム関数で1〜4の中のどれかの番号を取得して、その番号の文字を表示させるとかいうのはどう?
0371デフォルトの名無しさん
2007/07/06(金) 12:16:58擬似乱数を出力する部品を作ればいい
0372デフォルトの名無しさん
2007/07/06(金) 13:21:420373デフォルトの名無しさん
2007/07/06(金) 13:24:210374デフォルトの名無しさん
2007/07/06(金) 13:37:12まして今まで以前のランタイムが、全て同じ乱数系列を吐き出す確認なんて面倒
なら実装した方が早いデスゥ♪
0375デフォルトの名無しさん
2007/07/06(金) 17:10:560376デフォルトの名無しさん
2007/07/07(土) 04:10:25今、ペイントツールのようなものを作っていて、MDIにしようと思っています。
(Form*6,Class*6,Bas*4くらいの規模です)
複数のフォームで作っても標準モジュールで管理すればデータの受け渡しは問題ないし、
実際に標準モジュールなどに処理を任せているのでSDIでもMDIでも大して変わらないです。
使い方が間違っているんでしょうか?
0377デフォルトの名無しさん
2007/07/07(土) 04:16:44MDIと比べるべきはSDIで、標準モジュールとかデータの受け渡しとかは別モノだと思うぞ
0378376
2007/07/07(土) 04:35:36UIでのメリットくらいなんでしょうか?
(MDIにしたらメニューが訳分からなくなってしまって、面倒だから全部親に設定して
しまったのは普通なんだろうか)
0379デフォルトの名無しさん
2007/07/07(土) 13:02:420380デフォルトの名無しさん
2007/07/07(土) 14:03:45For Each必ず使わないといかんの?(Folder#Filesで取得したFiles)
なんつーか、For Eachは便利な構文なだけであって、
これ使わなくとも必ず別の方法で出来ると思ってたんだよね。
ItemのKeyが分かれば出来るんだろうけど、FilesのKeyなんて
分からないよな。。。
0381376
2007/07/07(土) 16:45:29確かにメニューを共通にして組むと楽ですね
ツールボタンは使った事ないです。アイコンの権利の問題とか、Windowsの標準は使って良いのか、
それが何処にあるのか等々、自前で用意するのも嫌だし
SDIでツールを別フォームにするくらいならMDIでもいいかなとか思ってMDIにしたので、
大したメリットは無いと思っていました。
(と言うよりDIのフォームを何個開かせるのは良くないか・・)
0382デフォルトの名無しさん
2007/07/07(土) 17:18:42作りやすさとかとは、話がまったく違うよ。
0383デフォルトの名無しさん
2007/07/07(土) 17:35:57配列のよーにアクセスできない?
0384デフォルトの名無しさん
2007/07/07(土) 17:54:40まあFileSystemObjectの設計がOOP的じゃないから、.NETとかに一旦慣れてしまって
そういう視点からの疑問ならわからないこともないけど。
0385380
2007/07/07(土) 18:58:40漏れが無知だからかもしれんが、無理だったよ。
>>384
For Each使わずにFilesからFileオブジェクトを取得したい
だけだよ。For Each使いたくないのは、単なる個人的な
こだわり。
Set文使って、参照を明示的に書きたいだけなんだがな。
0387デフォルトの名無しさん
2007/07/07(土) 19:07:04把握
とりあえずサンプルコード書いてみた
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をお勧めする
0388デフォルトの名無しさん
2007/07/07(土) 19:19:27やはりそうなるか。
VCとかFor Eachがない言語だとどうするだろうって思ったが
VCならFileSystemObjectわざわざ使わねーわなwww
サンキュ
0389デフォルトの名無しさん
2007/07/07(土) 19:45:50それを基にItem(1)のようにしたが、駄目だった。
整数の添え字でもないようだ。
0390デフォルトの名無しさん
2007/07/07(土) 19:56:08ちなみにVC++ならコレクションの_NewEnumメソッドを呼ぶと中身を列挙できる。
VBでのコレクションに対してのFor Eachも裏では_NewEnumを使っている。
0391デフォルトの名無しさん
2007/07/07(土) 20:37:03つ IEnumVARIANT
0392デフォルトの名無しさん
2007/07/07(土) 21:29:46意味論的に不自然だしむしろ精神衛生的に悪いと俺なんかは思うんだけど、
世の中にはいろんな発想の人がいるんだな。
でもそんなに序数でアクセスしたいならラッパークラス書けばいいだけだね。
VB6にも引数付きプロパティってあったよね?
0393デフォルトの名無しさん
2007/07/07(土) 21:46:21引っ張ってきて個別に管理するためには順序つける必要があるだろ
0394デフォルトの名無しさん
2007/07/07(土) 21:55:07なんのためにファイルにはファイル名が付いてるの?
0395デフォルトの名無しさん
2007/07/07(土) 21:57:48ファイルとファイル集合は全然別物だぞ
0396デフォルトの名無しさん
2007/07/07(土) 22:02:38受信したくないのですが消すことは可能ですか?
0397デフォルトの名無しさん
2007/07/07(土) 22:04:09君はコレクション自体に番号振るつもりかw
0398デフォルトの名無しさん
2007/07/07(土) 22:13:09あーはいはいそーすねー
サーセン^^;;
>>396
自分に厳しく他人に優しく
サーバがそんなことで音を上げてどうするよ?
0399デフォルトの名無しさん
2007/07/08(日) 01:02:49プラグインみたいに、決まったフォルダにファイルを置くことで
意味を成すようなアプリだとファイル名が最初から分かってる
分けではないっしょ。
0400デフォルトの名無しさん
2007/07/08(日) 02:11:44カゼで酒飲んで紛らわしてたから気づかなかったが
よく見りゃひでぇこと書いてんな
0401デフォルトの名無しさん
2007/07/08(日) 09:17:07何を言ってるんだ?
だからそういった面倒がないようにFilesなんてプロパティが用意されてるわけで。
ファイルを列挙するのではなく、直接「これ」にアクセスしたいんだ、
という場合も確かにあるだろうが、そういう場合に「これ」というのを数字で指定するのは
不自然でありパス名で指定するのが自然だろう、と394は言っているんだけど。
そしてそのためのメソッドはFSOにも存在するでしょ。
0402デフォルトの名無しさん
2007/07/08(日) 11:10:27見た感じただの独りよがりにしか受け取れないんだがな…
結構重要なことなのか?
0403デフォルトの名無しさん
2007/07/08(日) 11:54:19たとえば作業用の一時ファイルとかね。
不自然というのは、FSOのような汎用的なクラスの実装としては不自然という意味。
まあVBプログラマは抽象的な話が苦手だろうか具体的なたとえ話をすると、
例えば知らない人計100名の名簿の中から5番目の人、ということに何の意味があるの?
それって任意の1/100を選択するのと何も変わらないだろうw
0404デフォルトの名無しさん
2007/07/08(日) 12:37:39> プログラムの内部実装としてファイルを番号で指定するというのは確かに普通にありえる。
> たとえば作業用の一時ファイルとかね。
>
> 不自然というのは、FSOのような汎用的なクラスの実装としては不自然という意味。
”不自然”だとか”意味論的に不自然”だとか、何言いたいんだ?
”不自然”の中身の説明してるのに堂々巡りするなって
> 知らない人計100名の名簿の中から5番目の人、ということに何の意味があるの?
ある名簿の中からn番目っていうのを知りたくないだけが理由か?
> それって任意の1/100を選択するのと何も変わらないだろうw
最初の一回はそうだろうが(こちらは全体を列挙するときだな)
それ以降もアクセスする場合は名前でもインデックスでも同じだろ
というかFileオブジェクトとFilesオブジェクトを混同してないか?
0405デフォルトの名無しさん
2007/07/08(日) 12:50:17というか、たぶんしてるのは君だと思うよ。
まあ、らちあかなそうだから俺はもう降りさしてもらうわ。
0406デフォルトの名無しさん
2007/07/08(日) 13:30:55俺も、まぁ対象性のある似た意見だ
ご苦労さまだったな^^
0407vb5
2007/07/08(日) 14:08:000408デフォルトの名無しさん
2007/07/08(日) 14:29:140409デフォルトの名無しさん
2007/07/08(日) 14:38:210410vb5
2007/07/08(日) 15:05:35イメージコントロールにロードするpictureの一部を透過させて台形にすることはできますか?
0411デフォルトの名無しさん
2007/07/08(日) 15:12:56基本的に努力の方向が間違ってるよ。
一つ一つのイメージコントロールを牌に見立てるのではなく、
キャンバス(PictueBoxでもForm自身でもなんでもいいんだけど)に
直接牌を描画することを考えるべき。
0412デフォルトの名無しさん
2007/07/08(日) 15:13:52そういうことなら透過GIF使えばいい
0413vb5
2007/07/08(日) 15:15:36ありがとーう
0414デフォルトの名無しさん
2007/07/08(日) 15:42:42なんでそんな中途半端な解釈すんのよwwwww
プラグインの定義は無いけどさ、Firefoxとかeclipseのプラグインにしても
100名の名簿から100名全員にアクセスするのが一般的でない?
その場合、「次の人どうぞー」って100回呼ぶのがFor Each
「○○さんどうぞー」って呼ぶのがフルパスでのアクセスか、
Files#Item(○○)アクセスとか。
じゃあ100名分の名前である○○はどうやって取得するのよと。
0415デフォルトの名無しさん
2007/07/08(日) 16:08:12センスない奴ってのは本当救いがたいな。
名前でアイテムを選択するのに意味があるのはあらかじめ「その」名前の
ファイルの意味を知っている場合だけ。
同様に番号でアイテムを選択することに意味があるのは「その」番号の
ファイルの意味を知っている場合だけ。
言い換えれば、ファイルに割り振られた"3"とか"5"とかいった番号が
そのプログラムにとって何らかの意味をもっている場合だけ。
FSOのFilesがインデックスでアイテムを取得できるとして、
FSOが勝手に割り振った番号で取得することに何の意味があるんだw
なんでこんな簡単なことがわからないのか分からないよ。
算数できない子供に算数教えてる気分だわ。
って説明してもたぶん意味を理解しないだろうけどさw
0416デフォルトの名無しさん
2007/07/08(日) 16:19:45うはwwwww
>FSOが勝手に割り振った番号で取得することに何の意味があるんだw
特定の番号のファイルにアクセスする事なんて求めてねーよ。
全部のファイル名を取得できりゃいいんだよ。
おまいは「全部」って単語が嫁ねーのか?wwwwwwwwww
0417デフォルトの名無しさん
2007/07/08(日) 16:25:07>>415に全部とか集合とかそういう概念がないだけだから
> 同様に番号でアイテムを選択することに意味があるのは「その」番号のファイルの意味を知っている場合だけ。
”だけ”とか断言しちゃう辺りたぶん分かって無い
> って説明してもたぶん意味を理解しないだろうけどさw
説明していないことは理解できました
(・∀・ 一生不自然ってろ
0418デフォルトの名無しさん
2007/07/08(日) 16:35:41> 「○○さんどうぞー」って呼ぶのがフルパスでのアクセスか
> Files#Item(○○)アクセスとか。
そうできたらいいという気持ちは俺にもわかるが、
フルパスでファイルを指定したければ、
FileSystemObjectからGetFileを使えばいいわけで、
実際のところあまり困らない。
0419デフォルトの名無しさん
2007/07/08(日) 16:36:18適当な番号であっても、番号が在ることが利点となる場合があるの
たとえば>>414さんの様に、順序が必要なときとかなわけ
そりゃね、名前知っててFileクラスを作って扱うとかいうのも必要だけど、
今はその話じゃないの
名前知ってたらそもそも列挙する必要なんて無いでしょ?
名前知らなきゃ列挙して個々にアクセスする必要があるでしょ?
今は後者の話で、「列挙されたファイル」に対する処理をする場合の話なの
分かった?
>>415さんの言っていることが的外れな印象を受けるのは
そもそも説明下手な上に説明した気になっている風もあるけれど、
何より使い方を知らない雰囲気があるからなの
序数を持たなければ序数をつければいいじゃないって言うけれど、
集合に番号をつけてアクセスする形に成るから、事前順序付けか事後順序付けかの違いでしかないし
じゃあ名前でアクセスすればいいって言ってるけれど、そもそも名前なんて分からないし
ああ、うん
疲れた
市ね
0420デフォルトの名無しさん
2007/07/08(日) 16:46:26何言ってるのかさっぱり分からん
市ねとか日本語も満足にできないのか…
0421デフォルトの名無しさん
2007/07/08(日) 16:47:44−−−−−−−−−−−ここから普通のVB6質問スレ−−−−−−−−−−−−−−−
0422デフォルトの名無しさん
2007/07/08(日) 16:51:11頭の悪い奴の議論というのはいつもこれだ。
同じところを堂々巡り(なぜならそれまでの話の経緯を全てすぐに忘れるから)で
話が前進しない。
しょうがないから、比較的忘却癖のある人間にもあるていど親和性が期待できる
箇条書きにしてみようか。(まあ、たぶんこれも徒労に終わると思うが。。)
(1) FSOにはファイルを列挙する機能は存在する。(Files)
(2) そして列挙のためにはインデックスはまったく必要がない。
(3) プログラム上意味のある序数を割り当ててファイルを管理したい場合というのは
確かに存在する。
(3) しかし、プログラム上意味を持たない数字でファイルを選択する、
などという行為は任意のファイルを一つ選ぶ行為に等しく、文字通り意味を持たない。
0423デフォルトの名無しさん
2007/07/08(日) 16:53:41??
それを承知して言っているが、
論点がずれている件(Files vs File)については納得行ってくれたのかね?
0424デフォルトの名無しさん
2007/07/08(日) 16:56:12ああ、それともうひとつ
> (3) しかし、プログラム上意味を持たない数字でファイルを選択する、
> などという行為は任意のファイルを一つ選ぶ行為に等しく、文字通り意味を持たない
なんで意味を持たないの?
順序も内容もimutableな集合なら、結局同じことじゃないか
0425デフォルトの名無しさん
2007/07/08(日) 16:57:37(3) ...
慌てすぎですよ^^
何言いたいのですか?^^;;
0426デフォルトの名無しさん
2007/07/08(日) 16:58:47これFor Eachつかっての事?
であれば、
>>380,385.387を読めばよかろう。
0427デフォルトの名無しさん
2007/07/08(日) 17:01:58−−−−−−−−−−−ここから普通のVB6質問スレ−−−−−−−−−−−−−−−
0428デフォルトの名無しさん
2007/07/08(日) 17:03:23(2)と(3)の間に
「FSOはインデックスを使ってファイルにアクセスすることはできない」
を追加したほうがいいと思う。
0429デフォルトの名無しさん
2007/07/08(日) 17:05:28> (3) しかし、プログラム上意味を持たない数字でファイルを選択する、
> などという行為は任意のファイルを一つ選ぶ行為に等しく、文字通り意味を持たない。
って言われてもなぁ。それからどうするの?
背景、目的と来ていきなり結論かいな?
0430デフォルトの名無しさん
2007/07/08(日) 17:19:17VB6のDateAdd関数のことでお聞きしたいのですが、
DateAdd("n", 1:00:00,10:00:00)
のような使い方をして、結果に11:00:00を得たいのですが、
こういう使用方法はできないでしょうか?
時間、分とばらばらにして加算するひつようがありますか?
0431デフォルトの名無しさん
2007/07/08(日) 20:39:54> こういう使用方法はできないでしょうか?
できません
> 時間、分とばらばらにして加算するひつようがありますか?
いいえ
0432デフォルトの名無しさん
2007/07/08(日) 21:45:06データすべて受信してしまうのですが‥
0433デフォルトの名無しさん
2007/07/08(日) 22:40:33つーかデータって何のデータだ?
メールだけってどういう意味?
もう少し整理して書いてくれよ。
ちなみにメール受信するときはPOP3な。
0434デフォルトの名無しさん
2007/07/09(月) 03:12:100435デフォルトの名無しさん
2007/07/09(月) 06:49:390436デフォルトの名無しさん
2007/07/10(火) 14:20:04テキストボックスに選択した項目だけを表示させたいのですが、どうすればいいんでしょうか?
0437デフォルトの名無しさん
2007/07/10(火) 15:51:41とってきたデータをリストボックスに順番に入れて
ダブルクリックしたときに選択されているデータをテキストボックスに表示してやればいいんでう
0438436
2007/07/10(火) 16:05:59たしかにそうなんですが、名簿には項目がいくつかありまして、その項目別にテキストボックスに表示させたいんです。
つまりテキストボックスは名簿の項目の数だけあるんです。(番号、名前、住所、電話番号)みたいな感じです。
0439デフォルトの名無しさん
2007/07/10(火) 16:36:08質問内容整理してから出直してこい
お前の内容だと、どこが分らないすら書いてない
・データベースから取得
・リストボックスに表示
・ダブルクリックの検出
・テキストボックスに表示
・リストボックスの選択項目取得
しかも、使ってるDBもVBのバージョンも何も書いてないじゃん
他人に頼るんなら、せめて質問内容くらい推敲する労を惜しむなよ
0440436
2007/07/10(火) 17:35:51バージョンは6.0です。データベースはSQL。
分からない事はリストボックスで選択したデータをどうやって抽出するかです。
データベースから抽出するならSQL文で命令すればいいんですが、リストボックスで選択した項目をどうやって
特定すればいいのかが分からないんです。
0441デフォルトの名無しさん
2007/07/10(火) 18:01:56つ【Selectedプロパティ】
0442デフォルトの名無しさん
2007/07/10(火) 18:54:310443デフォルトの名無しさん
2007/07/10(火) 19:32:16> 分からない事はリストボックスで選択したデータをどうやって抽出するかです。
Textプロパティ
0444デフォルトの名無しさん
2007/07/10(火) 22:31:31第二引数、第三引数の指定方法がおかしくね?
まぁ、第三引数についてはダブクォかシャープで括られてると仮定すればいいか。
第一引数で"n"って指定してるなら、
"分"を足すってことだろ?
ならば
DateAdd("n"
60
#10:00:00#)
こうすりゃいいだけだろ。
解説はMSDN嫁。
0445デフォルトの名無しさん
2007/07/10(火) 22:31:35HELOとかも勝手に受信してしまいます。
0446デフォルトの名無しさん
2007/07/10(火) 22:33:21半角カンマが改行になった…orz
これだからiモナは…
0447デフォルトの名無しさん
2007/07/10(火) 22:34:30SMTP使って受信しようとしている姿がなんとも勇ましいな。
0448デフォルトの名無しさん
2007/07/11(水) 08:42:06乱数発生させて3桁の整数を2つ取得してそれぞれ別のラベルに表示するとして
その3桁の数字を例えば356と360といったような
非常に近い値で取得することって可能ですか?
調べても分からなかったので不等号等を使って範囲指定のようなことをして
色々試したんですが上手くできませんでした・・・
0449デフォルトの名無しさん
2007/07/11(水) 10:47:180450デフォルトの名無しさん
2007/07/11(水) 10:50:37「銘柄提案装置」
http://www.vector.co.jp/soft/win95/business/se384007.html
0451436
2007/07/11(水) 12:14:150452デフォルトの名無しさん
2007/07/11(水) 23:54:02VB6.0Proを使用しているので質問させていただきます。
VB6.0にてPCIで接続した電子機器より
データを吸い出すプログラムを作成いたしました。
そのデータは小数型の2次元配列でしてデータ数は数千〜数万あります。
それで、そのデータを他のアプリケーションにて読み込む為にファイル保存しなければいけないのですが、
取引先の会社からテキストファイルでは容量が大きいと思うので、バイナリファイルでくれと言われました。
いまいちバイナリファイルの定義が分からない為、色々ネットで調べてみたのですが
テキストファイル以外のファイルをバイナリファイルと言い、独自のフォーマットのもの、
普通のテキストエディタでは文字化けするような独自の形式のファイル等と出てきました。
VBでファイルへの書き込みでバイナリモードというのがありますが、
それを使用し、書き込んだところでテキストファイルに比べ容量が小さくなるってことはないですよね?
今回の数千〜数万の小数型の2次元配列をファイルに保存する際に
独自のバイナリファイル形式にすることにより容量を小さく出来るのでしょうか・・?
スレ違いでしたら申し訳ございません、根本的に私が理解していないのだと思いますが
参考になるサイト、勘違いしている箇所のツッコミ等があればご教授願えればと思います。
宜しくお願いいたします。
0453448
2007/07/11(水) 23:58:440454デフォルトの名無しさん
2007/07/12(木) 00:04:51構造体とかをPutする感じになるのかな?
まぁ少なくとも読み書きは速いしサイズも小さくなると思うよ
つうか、そのデータが持ってるサイズほどになる
0455デフォルトの名無しさん
2007/07/12(木) 00:06:19> VBでファイルへの書き込みでバイナリモードというのがありますが、
> それを使用し、書き込んだところでテキストファイルに比べ容量が小さくなるってことはないですよね?
一概に ある / ない とはいえないだけで、有り得ないわけではない
> 今回の数千〜数万の小数型の2次元配列をファイルに保存する際に
> 独自のバイナリファイル形式にすることにより容量を小さく出来るのでしょうか・・?
できる
単純に小数(Single型で4バイト、Double型で8バイト)で有効桁がX桁の小数をN個扱うと仮定するなら
テキスト(CSV)で書き込み=N*(X+1+1)バイト
バイナリ(生)で書き込み=(8または4)*Xバイト
なので、有効桁Nが10とか20とかの場合はバイナリのほうが有利
ついでに読みにくいが扱いやすかったりする
0456デフォルトの名無しさん
2007/07/12(木) 00:09:39Dim 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
0457デフォルトの名無しさん
2007/07/12(木) 00:14:09その状況でバイナリファイルにしろと言われたら、
その実数のデータを文字列にしないで、実数データのままファイルに書き出せばいい。
VBのバイナリモードでファイルを開いて書き込むのも、そうする手段の1つ。
0458デフォルトの名無しさん
2007/07/12(木) 00:23:200459デフォルトの名無しさん
2007/07/12(木) 00:27:480460452
2007/07/12(木) 00:45:48構造体は使用していないのですが、
構造体でPutするとサイズが小さくなるのですか
明日試してみます
>>455
有効桁数は3〜4桁でいいのですが
桁が多い場合はバイナリで書き込んだ方が小さくなるんですね
>>457
なるほど・・
明確なご指摘ありがとうございます
明日試してみます
>>458
それは、、、ちょっと出来ないです・・
>>459
いえ、特に指定はしてきていないです。
データとしては、
小数型 Array(i,500)←iが固定でなく、30〜60程度です
このデータをファイルに落とすのですが、、
皆様、分かりやすい回答ありがとうございます
私が昔VB、Cを少しかじった程度かつ、電子機器製造の零細で誰も聞ける人間が居ないので助かります・・(T_T)
後、MSDNとかに皆様が教えて下さった内容のサンプルコード等がもしあるのならば教えていただければ助かります。。。
0461デフォルトの名無しさん
2007/07/12(木) 01:05:03わっちはこういうの弱くてですね
とりあえずサンプルコードを載せておきますよ
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
0462デフォルトの名無しさん
2007/07/12(木) 01:06:08いやいや そうは言っていない
単に外部とのやり取りでそう言うのが多かったから構造体の例を出してみただけで
速度は速いと思うけど、小さくなる保証は>>455の言う通りだと
ほい MSDN
ttp://support.microsoft.com/kb/257794/ja
0463デフォルトの名無しさん
2007/07/12(木) 01:25:22乱数でただの数字を近似して発生するだけでなく数式の
計算結果の値を近似させて乱数で出力することってできる?
要するに
A+B C+D E+F
のような3つの数式を表示するとして、A〜Fは乱数で発生させるけど
この3つの式の計算結果はどれも値が近くて、例えば230、200、212
といったように±50の範囲には収まるような数式を出力する
かつこの3つの数式は毎回決まりきった値に近いわけではない
すなわち3つの計算結果がどれも約500の時もあれば
約200の時もあり約900の時もある
といったことがしたいんだけど、かなり混乱して上手くできないので
誰かアドバイス下さい
0464デフォルトの名無しさん
2007/07/12(木) 01:30:03> かなり混乱して上手くできないので
> 誰かアドバイス下さい
ここだけは十二分に理解できた
というわけで混乱した頭を冷やして、まともに説明できるようになってこい(・д・
0465452
2007/07/12(木) 01:49:07>>462
本当に皆様のご助言においては感謝感謝でございます;;
わざわざコーディングもして頂きありがとうございます。
プログラムに最大限反映出来る様頑張ります。
本当にありがとうございました。
0466デフォルトの名無しさん
2007/07/12(木) 02:43:55lRet = (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
0467デフォルトの名無しさん
2007/07/12(木) 08:20:40その値A、Bは必ず異なる値になるって分かる人いますか?
≠とか使ったけどできなかった・・・
0468デフォルトの名無しさん
2007/07/12(木) 08:39:380469467
2007/07/12(木) 10:32:21たまに偶然同じ値になってしまうことは
目をつむらなければならないですか?_
0470デフォルトの名無しさん
2007/07/12(木) 11:34:34同じだったら再取得すりゃいいだけ。
�@Aの値をランダム取得
�AAの値と別の値がBにセットされるまでBの値をランダム取得するループを作成
これだけ。
ループはWhileでもDoでも好きなの使え。
0471デフォルトの名無しさん
2007/07/12(木) 12:42:33Dim 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とかが普通だわな
0472デフォルトの名無しさん
2007/07/12(木) 14:50:32業務ではDoは使用禁止ってことが結構あるがな
0473デフォルトの名無しさん
2007/07/12(木) 15:14:13Do
If ?? then exit do
Loop
とかよくやるが、 until とか while は使わないようにしている。
読みにくくなるから。
0474デフォルトの名無しさん
2007/07/12(木) 15:42:02Do Until rs.EOF
ってやってたが・・・
普通じゃないのか?
0475デフォルトの名無しさん
2007/07/12(木) 18:20:41俺もそれ
on error ほげほげ
movenext
やっときゃ最悪どうなっても絶対ぬけるし
0476471
2007/07/12(木) 23:19:47Do禁止ってことじゃ村上ショージはどうすんだって感じだけど
Forで? (for(;;){}使えないし野暮ったいけど)
For i=0 to 1
If ?? Then Exit For
i=0
Next
こんな感じ?ラベルは使いたくないなぁ
0477452
2007/07/12(木) 23:55:04また質問させていただきます。
>>461さんの作って頂いたコードを実際動かし
配列AryをバイナリファイルへPutし、その後Getにて配列Tstへ読み込んでるのは理解出来ました。
ありがとうございます。
今回作って頂いたコードですと、バイナリファイルからファイルを読み込む際、
同じ要素数の配列へGetにて丸ごと読み込んでおりますが
そうではなく一部だけ取り出すということも可能なのでしょうか?
今日、調べた結果Getステートメントの引数recnumberにて位置を指定し書き込む、
Seek関数というのとInput関数というのを使用し出来そうな感じでしたが
上手くいきませんでした。
私の作成したコードを乗せれば良いのですが、会社に忘れてきてしまいました。
すみません。
重ね重ね申し訳ないのですが、
宜しければ、私のやり方が間違っている等のツッコミ、
またはこういう関数を使う等のヒントを頂けないでしょうか?
0478デフォルトの名無しさん
2007/07/13(金) 00:36:25> 同じ要素数の配列へGetにて丸ごと読み込んでおりますが
> そうではなく一部だけ取り出すということも可能なのでしょうか?
※一部だけ取り出す=配列のある部分に対してファイルをマップする
って読み進んだ。
ReDimとGetだけでは無理です
というのもバイナリモードで開いて、Getステートメントの第3引数に配列を用いた場合、
配列のメモリに直接マップする形になるためです
というわけで、「配列の一部分だけマップする」メソッドを作るしか無いでしょう
時間ないのでこれで失礼sms
0479デフォルトの名無しさん
2007/07/13(金) 00:53:52マップとかよくわかんない言葉遣いしてるけど、
>>477がいっているのはそういう意味じゃないでしょうたぶん。
単にファイルの任意の位置から任意のレコード数を読みたい、という意味でしょう恐らく。
>>477
まずMSDNライブラリの該当する文章全てを100回読め、と言いたい。
確かにあれ分かりにくいけど、君がやりたいと思っていることを実現するのに
必要な情報は網羅されてるよ。
現に俺はMSDNライブラリの情報だけで同じようなことを実現するソフトを作ったことが
あったから。
0480デフォルトの名無しさん
2007/07/13(金) 01:13:50バイナリファイルではレコードって言わないと思ってたけど違うのか
0481デフォルトの名無しさん
2007/07/13(金) 02:48:26>配列のデータ構造
>Put、Getステートメント
これくらいは調べましょう
0482452
2007/07/13(金) 10:46:05まともな納期を貰えず少し焦っていたので
皆様に甘えすぎました
十分過ぎるきっかけは頂いたので
これからは、自力でやってみます
失礼いたしました
0483デフォルトの名無しさん
2007/07/13(金) 14:09:36keypressイベントでキー入力は出来なくなったのですがコピペすると入力できてしまいます。
changeイベントでどうにかできるとは思っているのですがどんな関数を使えばいいのかも分かりません。誰かヒントだけでもお願いします。
0484デフォルトの名無しさん
2007/07/13(金) 15:20:54個人的にはChangeイベントでやるのは好きじゃない。そこに書くのはチェックだけで
値を変更するとまた呼ばれてしまうのが気に入らない。
(さらに個人的には半カナ嫌いだし、全カナOK→半カナ変換くらいの自由度が欲しいな)
0485デフォルトの名無しさん
2007/07/14(土) 00:43:54VB6のSP6で作ったEXEは、ランタイムのSP6が入ってるパソコンじゃないと動かないんでしょうか?
SP6が標準で入ってるパソコンというのはないんでしょうか?
リッチテキストボックスも使いたいです。
よろしくお願いします。
0486デフォルトの名無しさん
2007/07/14(土) 01:05:590487デフォルトの名無しさん
2007/07/14(土) 01:11:03>VB6のSP6で作ったEXEは、ランタイムのSP6が入ってるパソコンじゃないと動かないんでしょうか?
動きません。運よく動作しても、正常に動作する可能性は低い。
>SP6が標準で入ってるパソコンというのはないんでしょうか?
XPかVistaなら、大体インストール済みと期待してもいいが、
メーカー品の場合、本々OSに入っているものでも絶対に入っているとは言えない
MEや2000以前は、基本的なランタイムすら入っていないことがあった
たとえば、あるメーカーのノートPC(Win2000)の場合、
コントロールの日本語表示に必要な VB6JP.DLL すら欠けていた
結論、素直にディストリビジョンウィザード等のインストーラーで入れないとVB製のアプリは動かない
素人が趣味でやるレベルなら、ランタイムはVectorで入手してください、とでもreadmeに書いとけw
0488デフォルトの名無しさん
2007/07/14(土) 01:33:14ありがとうございます。
家で作って学校で自分用に使いたいだけなので
システムファイルのインストールはまずいです。
でもXPだから何とかなるかも…。
入ってなかったりバージョンが違ったりしたらエラーで教えてくれますか?
古いOSを考慮して敢えてSPを当てずにソフトを作る人もいるんでしょうか?
あとrichtx32.ocxというのもXP以降には入ってますか?
質問ばかりすいません。よろしくお願いします。
0489デフォルトの名無しさん
2007/07/14(土) 01:36:070490デフォルトの名無しさん
2007/07/14(土) 02:15:24インストールが無理なら、あれこれ聞くよりテスト用にEXEを作成して実行しなさい
自分で試せば、すぐに分かることを聞くのは失礼ですよ
>入ってなかったりバージョンが違ったりしたらエラーで教えてくれますか?
Vectorで公開されているフリーのOCXを使用したEXEを作成して
学校のPCで実行してみればどうなるか確かめられます
>古いOSを考慮して敢えてSPを当てずにソフトを作る人もいるんでしょうか?
SPを当てるのは常識です。当てずに作成するなら既知の不具合を把握しておく必要があります。
例外的に、古い業務システムが稼働しているマシンにインストールすることを前提としている場合に
その業務システムとおなじバージョンで開発するというようなケースがありますが、あなたが気にする必要はありません
>あとrichtx32.ocxというのもXP以降には入ってますか?
学校のハードディスク内を検索して確認してください
0491デフォルトの名無しさん
2007/07/14(土) 04:35:29そうですかすいません。
あまり学校に行けないんでここで聞いてしまいました。
でもあなたが気にする必要はありませんってところは意味が分かりませんね
0492デフォルトの名無しさん
2007/07/14(土) 04:54:550493デフォルトの名無しさん
2007/07/14(土) 06:02:000494デフォルトの名無しさん
2007/07/14(土) 06:41:110495デフォルトの名無しさん
2007/07/14(土) 08:18:04自社の製品なんだからさあ
0496デフォルトの名無しさん
2007/07/14(土) 09:38:090497デフォルトの名無しさん
2007/07/14(土) 11:58:020498デフォルトの名無しさん
2007/07/14(土) 23:38:43失礼な奴
0499デフォルトの名無しさん
2007/07/15(日) 14:49:28目から鱗
0500デフォルトの名無しさん
2007/07/15(日) 16:45:51環境汚したくなくて、VB6を選ぶのは自殺行為だろう。
0501デフォルトの名無しさん
2007/07/15(日) 21:54:39そういう奴はVC選んだ方が良いwww
0502デフォルトの名無しさん
2007/07/16(月) 17:18:01VB2005 Expressを使ってます
DataGridviewについてです
行列を指定して値を得るには、どのような関数を使えばいいのでしょうか。
1時間情報を探し回ったのですが、基本的なことであり過ぎるのか、情報が見つかりません。
どなたか、お助け願います
0503デフォルトの名無しさん
2007/07/16(月) 17:47:18日本語の読み方勉強してから出直してこい
0504デフォルトの名無しさん
2007/07/16(月) 17:58:53どうゆう事に使うんでしょうか?
行列を指定して値を得る。と言うのでもどうゆう結果を得るのかで8種類有るので・・・・
0505デフォルトの名無しさん
2007/07/16(月) 19:57:09馬鹿がつけあがるから答えんなよ
0506デフォルトの名無しさん
2007/07/16(月) 20:18:002.ヘルプメニューを開く
3.「DataGridview」と記入
4.Enterキーを押してしばし待つ
5.なんとその答えが出てくる!!
0507デフォルトの名無しさん
2007/07/16(月) 21:05:08「どうゆう」なんて言葉を使っちゃうぐらいだから同じ馬鹿なんだよ
0508デフォルトの名無しさん
2007/07/17(火) 05:58:42「特許願を作成します。整理番号を入力してください」
というメッセージが画面にでるようにするには
どうしたらいいですか?
VBのバージョンは6.0です
0509デフォルトの名無しさん
2007/07/17(火) 06:00:34君がPCの横に立って誰かがexeをダブルクリックしたら、
君が「特許願を作成します。整理番号を入力してください」 と言えばいい。
0510デフォルトの名無しさん
2007/07/17(火) 06:04:03いまこの画面です
0511デフォルトの名無しさん
2007/07/17(火) 06:20:23ここまでできました。あと
OKをおしたときに、入力した文字列を
ファイルに保存したいのですが、どうすればいいですか?
0512デフォルトの名無しさん
2007/07/17(火) 06:22:01(1)文字列を保存する用のファイルをあらかじめ作成する
(2)OKボタンを押したときに、テキストボックスの中身の
文字列を、そのファイルに格納するようなVBのコードを書く
(3)そのコードをOKボタンを関連づける
これでいいですか?
0513デフォルトの名無しさん
2007/07/17(火) 06:55:57(・∀・) イイヨイイヨー ソノママソノママー
0514デフォルトの名無しさん
2007/07/17(火) 09:05:36もうPGなんてやんなカス
0515デフォルトの名無しさん
2007/07/17(火) 09:48:55満足したら、よそに池www
0516デフォルトの名無しさん
2007/07/17(火) 13:51:38InputBox使え
0517デフォルトの名無しさん
2007/07/17(火) 14:12:15ヲイww
0518デフォルトの名無しさん
2007/07/17(火) 14:54:38俺も>>516に賛成だ
このレベルのやつにはこれが一番楽だろう
で、取得した値が数値じゃなければはじくと
そうじゃないと入力制限とかまで教えなければいけなくなってしまうではないか
0519デフォルトの名無しさん
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)
0520デフォルトの名無しさん
2007/07/17(火) 20:43:400521デフォルトの名無しさん
2007/07/17(火) 21:23:23>>520
アフォがアフォを呼ぶ。
0522デフォルトの名無しさん
2007/07/17(火) 22:13:40改行ぐらいしろ
VB.NET質問スレ (Part22)
http://pc11.2ch.net/test/read.cgi/tech/1184037822/
0523デフォルトの名無しさん
2007/07/17(火) 23:36:46TextBox1 = A(I)
だと、今表示されているスライドのTextBox1に書かれます
これを違うスライド「Slide3」の「TextBox1」に書く方法を教えてください
0524デフォルトの名無しさん
2007/07/18(水) 00:40:510525デフォルトの名無しさん
2007/07/18(水) 02:11:27馬鹿がカスをよび
カスが天災をよぶ
そんなパターンだな
死ねカス
0526デフォルトの名無しさん
2007/07/18(水) 06:39:54VB2003(多分)で質問です。スロット作ってるんですが三つピクチャーボックスとタイマー用意してストップボタンもそれぞれに用意して3枚の絵がそろったらメッセージボックスで当たりって出すコードを書けば良い
>>523
ググレ
0527デフォルトの名無しさん
2007/07/18(水) 12:30:42Slide3.TextBox1.Text = A(l)
これじゃないなら知らネ。
VBAスレでも捜すこった。
しかしPowerPointにもマクロの要求があったんだな。
初めて聞いたわ。
0528デフォルトの名無しさん
2007/07/18(水) 14:44:03もちろん5ラインで判定するんだよね?
とか言ってみる
0529デフォルトの名無しさん
2007/07/18(水) 18:43:00おかげさまで完成しました、ありがとうございます
スレ違い失礼しました
0530デフォルトの名無しさん
2007/07/19(木) 00:07:45ActiveDLLという項目がありますけど、恐らくC言語などで作る標準のDLLとは
また別物だと思っているのですが。その辺も教えていただけると助かります。
0531デフォルトの名無しさん
2007/07/19(木) 00:48:210532デフォルトの名無しさん
2007/07/19(木) 00:50:00作れないわけじゃない
0533デフォルトの名無しさん
2007/07/19(木) 04:40:21本屋行ってみたら、VB2005の本は15冊くらいあって
VB6.0の本は3冊しかなかった
もう情報が手に入らないから
2005に乗り換えるしかないのか?
ちなみにソフトはヨドバシカメラで
5000円ですけど
0534デフォルトの名無しさん
2007/07/19(木) 04:42:16ビジュアルスタジオで買って
VBとVCとC#とVJと
手にいれたほうがいいのか
0535デフォルトの名無しさん
2007/07/19(木) 04:51:33VB2008の詳細分かる人詳細ギボンヌ
0536デフォルトの名無しさん
2007/07/19(木) 04:53:09標準モジュールってのがどれなのかわかりません
0537デフォルトの名無しさん
2007/07/19(木) 07:09:20少し前まではそんな現象はなかったのですが、最近になって起きるようになりました。
ぐぐったのですが、VB6も情報が減りつつあるのか、「そういうことがある」というのは見つかったが、
対策などに及んでいるところは見つかりませんでした。
問題のコードは複数のプロジェクトから参照されているもので、プロジェクトを開いて勝手に変わるのは
特定のプロジェクトだけ。そのプロジェクトも参照してる他のモジュールの変数名などは変換しません。
変換するプロジェクトとしないプロジェクトの.vbpファイルをエディタで開いてプロパティの値を調べても、
特別異なる点は見つけられませんでした。
勝手に変更されないようにする方法はあるのでしょうか?
0538デフォルトの名無しさん
2007/07/19(木) 07:10:590539デフォルトの名無しさん
2007/07/19(木) 12:44:39> 勝手に変更されないようにする方法はあるのでしょうか?
ないです
0540デフォルトの名無しさん
2007/07/19(木) 12:55:20VB6での新機能がひつようなら買えば?
俺個人はドットネットのがいいと思うけど
0541デフォルトの名無しさん
2007/07/19(木) 13:05:44>>540と同じ意見。つーか今買うならネトの方がいいと思う。
釣られた?
0542デフォルトの名無しさん
2007/07/19(木) 13:44:41ありがとう。VB5とVB6は、大差ないようですね。
0543デフォルトの名無しさん
2007/07/19(木) 14:11:40安直にそうとは言えない
0544デフォルトの名無しさん
2007/07/19(木) 14:16:350545デフォルトの名無しさん
2007/07/19(木) 14:45:57在庫探すがサブスクライバDLじゃね?
0546デフォルトの名無しさん
2007/07/19(木) 15:57:57俺の場合だと hWnd As Long がよく hwnd As Long に変わるな
あと、API宣言のDLL名なんかは最後に入力された名前ですべて統一されるね
だから、大文字小文字を決めていても、どこかからコピペしてきたりすると
その書き方で統一されたりしちゃうな
VBは勝手に文字を変換したりするから、もうこればっかりは仕方ない
http://support.microsoft.com/kb/412642/ja
こんな現象なんかVBの自動変換ならではだしなぁ
0547デフォルトの名無しさん
2007/07/19(木) 19:38:22最近、VBとかVC#とかにも興味を持っています。
VB6.0以前って今からでも入手可能でしょうか?
それとも素直に.NETにしておいた方が良いでしょうか?
MSは仕様がころころ変わる印象があってびびり気味です。
0548デフォルトの名無しさん
2007/07/19(木) 20:08:46そんな奴はMSに関わるな
0549デフォルトの名無しさん
2007/07/19(木) 23:48:19後なんでサンプルコードでポインタ(参照)の部分はByRefじゃなくてByValなんだ?
0550デフォルトの名無しさん
2007/07/19(木) 23:48:29実際に本屋に行ってみればわかるとおもうが、
VB6.0の本は3冊くらいしかなくて
VB2005の本は15冊くらいある。
6はもう学びたくても情報が手に入らない
状態なので、ソフトを買ってもしょうがないとおもう。
VB系列であれば、すなおに一番本がたくさん出ている
2005を買った方がいいのでは?
0551デフォルトの名無しさん
2007/07/20(金) 00:00:14> 後なんでサンプルコードでポインタ(参照)の部分はByRefじゃなくてByValなんだ?
オブジェクト指向な言語はたいていそうなので
何でといわれても困るんだが・・・
0552549
2007/07/20(金) 00:35:06まってくれ。
ByRefはC言語で言うポインタ(&変数名)なんだろ?
ByBalはC言語で言う単純な値を渡すものなんだろ?
そういう風に解釈してたんだが違うのか?
適当に調べた参考サイトで下記のように書かれていたんだが。
以前までは、ByRef(ポインタ参照)を指定することで、
変数ポインタの受け渡しを行っていましたが、
今後はポインタ変数型を用いたByVal(値参照)指定が主流になってきます。
また、ByVal、ByRefを省略したときのデフォルト値はByValになりますので、ご注意下さい。
↑の文面で「ポインタ変数型」と書かれているんだが、
そもそもポインタ変数型って何なんだ。ByValはポインタのアドレスを渡すのか
それとも単純に変数の中身を渡すのか。恐らく後者なんだろうけど
少し混乱気味w
ただ、後者だった場合元々ポインタを受け取る関数に対して値を渡しても、
誤作動を起こすんじゃないかな。それに値渡し(Aと仮定)だと渡した先の処理で
A = 1;とかいう代入をしたとしても渡し元のAの値は1にはならないんじゃないのか?
正直VB詳しくないんでその辺すっきりさせたいんだが、教えて頂けないだろうか。
0553デフォルトの名無しさん
2007/07/20(金) 00:47:22URL晒すとか具体的なサンプルを指して議論しないと話が空回りすると思うよ。
VB6はMSDNとか見ても仕様があいまいにしかわからないからなおさらね。
0554デフォルトの名無しさん
2007/07/20(金) 01:20:46API絡みの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
0555デフォルトの名無しさん
2007/07/20(金) 01:34:33エスパーした感じそれVB.NETのサイトだと思うぞ。
0556デフォルトの名無しさん
2007/07/20(金) 10:08:16ポインタを渡す時はByRefという認識で問題ない
実体がポインタならByRefで渡されるのはポインタへのポインタになるというだけの話
0557デフォルトの名無しさん
2007/07/20(金) 12:41:32よくわかってないなら黙ってた方がいいと思うよ。
でないと叩くよw
まあとにかく、「ポインタ」という言葉は初心者にとっては理解を妨げる元だから
意識して使わない方がいいと思う個人的には。
ポインタという言葉は
(1) データの位置情報(これは本来「誤用」だと思うんだけど。。)
(2) データの位置情報を格納する変数
の二つの意味で使われる場合があるが、初心者は文脈からこれを区別できない
場合が多い。
それどころか、書いたり言ったりしてる本人もよく区別がついてなかったりするから
やっかいなんだよね。
0558デフォルトの名無しさん
2007/07/20(金) 13:06:05お前が理解できていないだけだろ
0559デフォルトの名無しさん
2007/07/20(金) 13:08:56nihon go de ok
0560デフォルトの名無しさん
2007/07/20(金) 16:06:39'==General==
Private WithEvents clsTEST(10) as Class1 'Error
'===========
Private Sub clsTEST_Change(Index as Integer)
'イベント
End Sub
上記の様にコントロール配列の様に管理する方法ってありますか?
0561デフォルトの名無しさん
2007/07/20(金) 18:08:13残念できませぬ
0562デフォルトの名無しさん
2007/07/20(金) 18:08:22同じ意味でおk?
0563560
2007/07/20(金) 18:50:54clsBaseValue.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
↑の方法で一応出来たんですが、コードとして不味い部分はありますか
0564デフォルトの名無しさん
2007/07/20(金) 19:08:03結構みんな使ってないものなのか?
0565デフォルトの名無しさん
2007/07/20(金) 19:51:59その文面、なんか見覚えあると思ったら、AcitveBasicじゃないか。
こいつは、Visual Basicとは別物。
そこに書かれている内容は、ちょうどABにCもどきのポインタ型が導入されたときに
公開されたもので、これからはByRefではなくポインタ型使えという趣旨の文章。
(ちなみにこの方針は撤回されつつある)
0566デフォルトの名無しさん
2007/07/20(金) 20:16:21何したいのかわからん
動くだけでいいと思うならそれでいいと思うぞ
0567デフォルトの名無しさん
2007/07/20(金) 22:31:14かなり変則的だけど、できないことはないと思われる。
たとえば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を呼び出すようにする。
0569デフォルトの名無しさん
2007/07/21(土) 00:01:06話の肝は、VBでコントロール配列のイベントみたいなことを実現しようと思ったら、
要素の側にも「要素の集合」( = コレクション)への参照を持たせるように
すればいいってことなんだけど。
0570560
2007/07/21(土) 00:19:34「要素の集合」→Collection=clsEventArray.cls内のm_Value()
「要素の側」 →Collection内のItem?=clsBaseValue.cls内のm_Value
で合ってますか。
0571デフォルトの名無しさん
2007/07/21(土) 01:55:29わざわざコレクション使うと無駄にメモリー食うし配列でいいと思うぞ
あとOnTextChangedをPublicにするのもどうかと思うよ
0572デフォルトの名無しさん
2007/07/21(土) 02:05:050573デフォルトの名無しさん
2007/07/21(土) 02:16:33どうでもいいクズレスしてないでお前が言えばいいだけだろw
0574560
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
0575デフォルトの名無しさん
2007/07/21(土) 12:03:04じゃあ代替案出してみ?
ちなみに配列かコレクションかは話の争点ではないと既に書いたはずだけど。
0577デフォルトの名無しさん
2007/07/21(土) 18:13:43まあわかってないなら無理して背伸びするなって。
0578デフォルトの名無しさん
2007/07/21(土) 18:26:10576の代替案が分らないのなら、それはお前の実力不足だろw
0579デフォルトの名無しさん
2007/07/21(土) 18:27:31イベントディスパッチじゃない理由が微妙に絡んでくるんだよな
イベントハンドラとしてイベントソースにバインドさせると、循環参照が起きるので解放時に一手間必要になるのが嫌だ
0581571
2007/07/21(土) 18:46:38ん、深く考えてなかったけど解放時の手間って子供側の持ってる親の参照だよね?
フォーム(親)が閉じれば普通にForm_Terminateまで走ると思うけど
0582デフォルトの名無しさん
2007/07/21(土) 21:46:19代案になってないから言ってるんだけどね。
一々全部説明しないとわからないのかな。
これだからVBerは嫌だよ。
まずインターフェイスを使うことについては(それが要素から呼ばれるメソッドを
外部から隠蔽するための小手先のテクニックだろうと)異論はない。
問題点は、俺が例として挙げた、たとえばOnTextChangedメソッドのように
要素から呼ばれるコードをFormに直接書くこと。
簡単に言えば、「で、それはイベントと言えるのか?」ということだ。
そんなやり方では、たとえばあるFormでHogeクラスの「コントロール配列」にあたる、
複数の要素のイベントの集中管理機能が使いたいと思ったら、そのロジックをその都度
いちいちFormに書かなければならん。
そんなことでは「コントロール配列」と機能的に等価とは全くいえないだろう。
0583560
2007/07/21(土) 21:49:33イベントを持たせた(自作)クラスを配列に出来ないので、配列や集合を持つ
クラス(Collectionなど)を使ってイベントを発信する、ってことですか?
自分のやり方は構造体部分だけを持つクラスを複数用意してそれの管理とイベントを発信
する為の親クラスを用意する、っていうつもりで書いたんですが。
→それなら一つのクラスで構造体を配列で持たせて、イベントを発信すればいいじゃん
となってしまいました
コントロール配列のイベントはどうやってるか知っている人いますか?
0584デフォルトの名無しさん
2007/07/21(土) 22:02:19んー、ここで詳しく言えるほど言葉数が多いわけじゃないから
一言二言だけ
デザパタ勉強すればもっと簡潔に言いたいことがいえるようになると思う
今のままだと少なくとも俺には、何を言いたくてどんな例で伝えようとしてるのか直ぐに分からない
0585571
2007/07/21(土) 22:20:10言いたいことがさっぱりわからん・・・
イベント発生時にやりたい処理をForm内に書くのは当たり前だし
それが出来なければイベントの意味がないし、
じゃあOnTextChangedメソッドの呼び出しをForm内に書くかというと
そんなことはしないわけで、そのレスの内容読んでるとイベントそのものを否定しているようにしか読めない('A`)
あと、コントロール配列と等価とか主張してる人どこにもいないと思うんだけど・・・
0586デフォルトの名無しさん
2007/07/21(土) 22:27:47まあ馬鹿は自分のやってることの問題点がわからないから馬鹿なんだよ、としか言いようがない。
0587デフォルトの名無しさん
2007/07/21(土) 23:45:40自己紹介乙
0589デフォルトの名無しさん
2007/07/22(日) 02:28:01XPだと http://www.microsoft.com/japan/msdn/thisweek/vbxp/vbxp2.aspx が利用できたけど
Vistaでも利用できますか?
0590デフォルトの名無しさん
2007/07/22(日) 13:37:43まあ暇だったんでサンプルコードを作ってみた。
改行は省いてあるので自分で適当に入れて読んで欲しい。
インターフェイスIHogeListは、要素側から呼ばれるメソッド
(IHogeList_OnTextChanged)を隠蔽するためだけに使われていて、本来は不要なものだ。
あと、cHogeListのAddプロパティは本来メソッドにすべきだが、たぶんVBの
制約だと思うんだけどファイルスコープを跨ぐとコントロールをメソッドの引数としては
渡せないようなのでやむなくプロパティにしてある。
0591590
2007/07/22(日) 13:38:45Public 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
0592590
2007/07/22(日) 13:41:45Public 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
0593590
2007/07/22(日) 13:42:25Dim 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
0594590
2007/07/22(日) 13:43:36Private 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
0595デフォルトの名無しさん
2007/07/22(日) 18:45:08どうして、そこまでWithEventsに固執するん?
とにかく見かけ上コントロール配列を真似たいんなら、それなら添え字でアクセス出来ないのはどうかと思うし
cHogeListも中途半端な実装だし、これなら素直にCollectionか配列にしたほうがいいと思うけどなぁ
cHogeListがcHogeにべったり依存していて、まったく使い回しが効かないし
10個づつバッファ確保とか、そんな中途半端な最適化はしない方がいいと思うよ
まあ最適化は、今回の件とは関係ないけどさw
0596560
2007/07/22(日) 18:46:07おおっ、ありがとうございます。
早速読み解いてみます。
0597560
2007/07/22(日) 19:29:08http://gamdev.org/up/img/9827.zip
暇な人は見て下さい。パスはwitheventsで
0598デフォルトの名無しさん
2007/07/22(日) 20:10:21なんかしっくりこない
それが俺の勉強不足なのか俺の認識不足なのか、それともVBの言語上の限界なのかもよくわからん。
配列(or リスト)のリスナを作りたいってことなのか?
それっぽいの作ったからちょっと見てくれ
C:\ \hagehoge.zip
0599デフォルトの名無しさん
2007/07/22(日) 20:10:53配列(or リスト)のリスナを作りたいってことなのか?
それっぽいの作ったからちょっと見てくれ
http://gamdev.org/up/img/9828.zip
0600デフォルトの名無しさん
2007/07/22(日) 20:13:13本当馬鹿だなw
だから何もわかってないお馬鹿さんは黙ってなって。
何が迷惑ってこういう自分が馬鹿だと気づいてない馬鹿が一番始末に負えないんだよな。
一々全部反論して欲しい?
なんならやるけど。
0601デフォルトの名無しさん
2007/07/22(日) 20:15:14口先でごまかさないで全部反論してみろよ
まぁ顔真っ赤にして書いても支離滅裂になるだけだろうけどなw
0602デフォルトの名無しさん
2007/07/22(日) 20:29:28じゃあご要望のお答えして。
>どうして、そこまでWithEventsに固執するん?
それが560の出した「お題」だから。
>添え字でアクセス出来ないのはどうかと思うし
目的は、コントロール配列のイベントライクな機能の実装をデモすることだから。
「欲しいもの」と直接無関係な冗長なコードが付いてたら読むのもコピペするのも
手間が増えるだけでしょうが。
それに、それが必要であればあればゲッタをひとつ追加するだけだ。
>cHogeListがcHogeにべったり依存していて、まったく使い回しが効かないし
馬鹿も休み休み言えw
こうやってcHogeListというクラスをわざわざ用意することによって、
cHogeでコントロール配列的なイベントを実現しようと思うときに、
そのロジックをcHogeを使うクラス(たとえばForm1)に「べったり」書かなくて
良くなってるんだよ。
>10個づつバッファ確保とかそんな中途半端な最適化
最適化が目的なのではないw
クラス名を「〜List」としたから、その名前にあわせて
任意の数の要素を追加可能にするための実装。
まあ、御託はいいから君も対案出してみな。
評価して差し上げるから。
0603デフォルトの名無しさん
2007/07/22(日) 20:40:57だから、口先だけで、ごまかさないで、全部反論してみろっつってんだろぉ?
日本語わからないのかな?
それと、もう子供遊びに付き合ってる暇はないから
さようなら
0604デフォルトの名無しさん
2007/07/22(日) 20:45:220605デフォルトの名無しさん
2007/07/22(日) 21:03:56だって、単語を並べてるだけで、何も実が無いんだもの
実の無い木から果物は取れないんだよ?
それとも、何か、言いたいことが、あったのかな?
0607デフォルトの名無しさん
2007/07/22(日) 21:17:030608デフォルトの名無しさん
2007/07/22(日) 21:37:08ああそうかも
今なんとなくつかめた
>>560の引用:
> '==General==
> Private WithEvents clsTEST(10) as Class1 'Error
> '===========
> Private Sub clsTEST_Change(Index as Integer)
> 'イベント
> End Sub
つまり、
・”配列clsTEST()というオブジェクト”が、”配列の要素の変化というイベント”をキャッチして、”自らの管理元(Form?)”に通知する。
ということをやりたいのか?かなり特殊だな…。今思いつく問題点としては、
・配列clsTEST()の管理元が単一という明示的な保障が無い (clsTEST()からすると、管理元は誰か?に対して応えることが出来ない/複雑)
→よく考えれば何とかなるな。
・配列clsTEST()は「内部要素の変化」という抽象的な概念をキャッチしなければならない (”事象の変化”の定義は千差万別)
→Compareする機能を外付けする必要がある
かな。
配列の要素の変化をフックで着ないとダメっぽいから
0609デフォルトの名無しさん
2007/07/22(日) 22:32:55> cHogeListがcHogeにべったり依存していて、まったく使い回しが効かないし
とりあえず>>595が デザインパターンと全く縁の無い生活をしている事は分かった
っていうか Variant型大好きだろ
cHogeListはcHogeの集合だから 依存してないと馬鹿
0610560
2007/07/22(日) 22:44:29>>590理解できた範囲で、
データ(Text)入力→cHoge,Event発信→(IHogeList)→CHogeList,受信⇒発信→Form
確かにcHogeがクラスの機能を果たせてますね。Implementsも利用価値がイマイチ分からなかったので参考になります
これでmHoge1,2を隠匿すれば自分のやりたかったものになりそうです
0611デフォルトの名無しさん
2007/07/22(日) 23:09:24つーか cHoge を直接突っ込むつくりにするんじゃなくて普通 IHoge とか作って
そいつを cHoge に Implements するだろ、常識的に考えて・・・
そこでVariantとかいう発想が出てくるお前がデザパタがどうのなんて言う資格があるとは思えんなw
0612デフォルトの名無しさん
2007/07/22(日) 23:14:05本当はcHogeのイベントは全く使われてない(cHogeのイベントをcHogeListが
受信しているわけではない)んだけどね。
あえて実際には使われてないイベントを定義してある。
その方がプログラムの理解に役立つと思ったからだけど、逆効果だったかもしれない。
あと、cHogeListがTextChangedイベントで発信するIndexの値をcHogeに持たせるようにしてあるけど、
これは手抜きをするためで本当は良くない設計だと思う。
0613560
2007/07/22(日) 23:14:17バリアントは自分では殆ど使わないんで勉強になります。
(ユーザー定義入るんだ・・、取り出すのどうすんだろ?←調べてる途中です)
0614560
2007/07/22(日) 23:28:42実際はcHoge::mHogeList.OnTextChangedを捕まえているんで良いんですよね?
Index値についてあまり良くないってのは何となく分かりますけど、発信(呼び出し)元を
cHogeListから手繰れるんでしょうか?
0615デフォルトの名無しさん
2007/07/23(月) 14:12:42実行マシンが、VB6+エクセル2000(Win2000)です。
エクセル2000とエクセル2003で、挙動が大分違うので困っています。
セル(F2)には、数値が入力されています。
intA = xlSheet.Cells(2, 6).value
エクセル2003だと正常取得されるのですが
エクセル2000だと正常取得できません。。。
で、今度、
intA = val(xlsheet.cells(2,6).value)
だと、エクセル2000だとうまくいくのですが
エクセル2003だと数値に0が入ってしまいます。
いい方法がありましたら、よろしくお願いします。
0616デフォルトの名無しさん
2007/07/23(月) 14:48:22ってのはどうなるかkwsk
0617デフォルトの名無しさん
2007/07/23(月) 14:58:47セルF2に150が入っていても、0になるんです。><
0618デフォルトの名無しさん
2007/07/23(月) 15:06:39参照設定外してObjectにすれば解決しない?
0619デフォルトの名無しさん
2007/07/23(月) 15:29:54ファイルを開くことができなかったんで、その1つのブロシージャだけ
Objectにしたんですけど、そのプロシージャでこの様なんです。。。
0620デフォルトの名無しさん
2007/07/23(月) 16:03:06>その1つのブロシージャだけObjectにした
ってのがよくわかんないんだけど、
同じプログラム内で別プロシージャでは
Hoge As Excel.Worksheet
とかやってるってことかな。
参照設定外してないんじゃないの?
0621デフォルトの名無しさん
2007/07/23(月) 16:20:34そうです。
他のプロシージャではセルに罫線とか引いてて予約語を変えるのが
面倒だったんで。。。
0622佐一
2007/07/23(月) 22:15:41フォーム内のボタンを押して、
Shell("MSACCESS.exe △△△",・・・)から
データベースファイル△△△を起動します。
△△△が起動している間は、
・ボタンを押しても△△△を新たに起動させず
・既に開いている△△△が最前面に来るようにするには、
(フォームが最背面、フォアグラウンドになればいい)
どうすればいいのでしょうか?
アプリケーションのハンドルを取得し
setForeground(ハンドル名)
として、アプリのフォームをフォアグラウンドにしようとしましたが
setForegroundの戻り値は、Trueなのに、
ボタンを押しても、既に開かれている△△△が最前面になってくれません。
0623デフォルトの名無しさん
2007/07/23(月) 22:32:160624デフォルトの名無しさん
2007/07/24(火) 02:09:07はじめまして、ど素人プログラマです。
VBとはあまり関係がないのですが、ふだん業務系アプリケーションを
作成していて、今更だれにも聞けない疑問があったります。
マスタ保守で処理区分に削除がありデータを削除をしたとき、その対象データを
�@物理削除する場合と、�A削除フラグをたてる場合がありますよね、、
�@と�Aの違いを具体的に教えてくれませんか?
0625デフォルトの名無しさん
2007/07/24(火) 02:43:17あとから復旧できるんじゃない?
0626デフォルトの名無しさん
2007/07/24(火) 02:58:282.はサイズが減らない。データ数が多いので検索ソートに無駄が増える
この辺?
0627デフォルトの名無しさん
2007/07/24(火) 03:48:20データ-は検索しないんでないの?
0628デフォルトの名無しさん
2007/07/24(火) 04:18:390629デフォルトの名無しさん
2007/07/24(火) 04:47:58削除フラグがついていない
データ-だけをさがしてきて
インデックスする作業を夜中にして、
そのインデックスの中だけを
検索するんだよきっと
0630デフォルトの名無しさん
2007/07/24(火) 07:21:36業務では通常、物理削除は行いません
論理削除が基本です
ケースバイケースなどと反論する人もいるでしょうけど
基幹システムや業務で使われる重要なDBでは、論理削除を選択しておけば間違いはありません
尚、VBのことと全然関係がないので、違いについてはDB板か教えてGooで訊いてください
0631デフォルトの名無しさん
2007/07/24(火) 11:11:550632デフォルトの名無しさん
2007/07/24(火) 12:06:09物理削除時は 管理者権限+現在のほかのデータに削除しようとしているデータがなければ削除OK
まぁ 普通だとは思うけど
0633デフォルトの名無しさん
2007/07/24(火) 12:27:52そっちにコピーしたほうがいいケースも多い。
もし主キーが削除フラグを含んだ複合キーになってるようならRDB的には
方向を誤ってるから要注意。そういうシステムはたまに見かけるけどね。
0634デフォルトの名無しさん
2007/07/24(火) 20:15:59こんにちは、ど素人プログラマです。
自分が今まで携わってきたシステムは、VBでテーブルの操作(挿入、更新、削除)を行うとき、
�@SQL文(Insert文、Update文、Delete文)を使う場合と、
�AADO、DAOなどでレコードセットを生成して操作する場合
がありました。
�@は帳票出力PGなどで、結合をしまくって複雑なSQL文を記述しなければなりませんでした。
また、デバッグができないのでテストをするのに苦労しました。
�Aはデバッグができるため自分が作ったPGのテストは容易にできます。
しかし、他の人が作ったPGを修正しなければならないときなど、ソースの解析が大変です。
中には、Seekなどを使用せずにベースとなるテーブルの1回のループの中でSQL(マスタ検索など)を
バンバン行っているソースもありました。 → レスポンスがめちゃくちゃ悪い
自分はこの業界に入ってからずっと�Aの方法で開発してきましたが、
最近、�@で開発しているプロジェクトに参加しました。
その結果、�Aよりも�@の方が直感的にいいと思いはじめました。
しかし、なぜ�@の方がいいのかという説明を
�Aで開発をしている人たちに具体的にすることができません。
どうかアドバイスをもらえないでしょうか?
0635デフォルトの名無しさん
2007/07/24(火) 23:49:31単純に速い
0636デフォルトの名無しさん
2007/07/25(水) 00:29:42フォーマットがしっかりしているものの方が流用しやすい
0637デフォルトの名無しさん
2007/07/25(水) 00:39:50ドメインロジックをどこに置くかの話か。
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?DomainLogicAndSQL
0638デフォルトの名無しさん
2007/07/25(水) 18:37:05unload me
formα.show
とやったら目的のformは開くのですが、既にunloadされています
というエラーが出てしまいます
この書き方以外にもある条件を満たした瞬間に別のformを表示させる
ということができるプログラムの書き方をご存知の方いますか?
0639デフォルトの名無しさん
2007/07/25(水) 18:55:10他人に通じるまともな日本語ひとつ書けないでプログラミングなんてへそ茶もいいとこだぞ・
0640デフォルトの名無しさん
2007/07/25(水) 20:54:100641デフォルトの名無しさん
2007/07/25(水) 21:21:22formα.show
の一行目を取ったら他のフォームに飛ぶことができないんですが
何か別の表現があるんですか?
0642デフォルトの名無しさん
2007/07/25(水) 21:30:16だからそんな駄文じゃ誰にもお前さんの言いたいことは伝わらないよ絶対。
0643デフォルトの名無しさん
2007/07/25(水) 21:41:060644638
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されています 」といったようなエラーが出てしまうので
これを改善するためのアドバイスを下さい
よろしくお願いします
0645デフォルトの名無しさん
2007/07/25(水) 22:21:010646デフォルトの名無しさん
2007/07/25(水) 22:45:130647デフォルトの名無しさん
2007/07/25(水) 22:55:42無駄だと思うんだが
簡単にやろうとするならば>>645がいうようにフォームのVisibleだけいじればいいと思う
0648638
2007/07/25(水) 23:17:57If final = 10 Then
Form3.Visible = False
Form4.Show
End If
とやってみましたが、条件を満たした時にform3が消えないです・・・
他に何が足りなさそうですか?
0649デフォルトの名無しさん
2007/07/25(水) 23:22:04ちょっとその
Form3.Visible = False
ところにブレークポイントしかけてみ?
本当にそこ通過してるのか?
0650デフォルトの名無しさん
2007/07/26(木) 04:08:34>Form4.Show⇒Form4.Visible=Trueの方が
直接指定しないでインスタンスを考えた方がいいよなぁ
0651デフォルトの名無しさん
2007/07/26(木) 07:25:19VB6のいいところと悪いところ全部あらわしてる
0652デフォルトの名無しさん
2007/07/26(木) 07:27:290653デフォルトの名無しさん
2007/07/26(木) 07:33:34軽く意味無かたぜ
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"キーワードの使い方も異常
0654デフォルトの名無しさん
2007/07/26(木) 10:41:22こういうことだろ
Public Form1 As Form1
Sub Main()
Set Form1 = Nothing
End Eub
もしくは
Private Sub Form_Initialize()
Set Form1 = Nothing
End Sub
どっちでもできるけど、前者のほうが優れているかね
0655デフォルトの名無しさん
2007/07/26(木) 12:46:07public F1 as Formとか名前を変えるな。同名って何か気持ち悪くない?
0656デフォルトの名無しさん
2007/07/26(木) 12:57:12お前はまったくわかってない
0657デフォルトの名無しさん
2007/07/26(木) 13:00:07うちの会社はクラスと同名の名前は切らないようにしているな
0658デフォルトの名無しさん
2007/07/26(木) 13:02:00Form3.Hide
ってやっても消えない?
0659デフォルトの名無しさん
2007/07/26(木) 13:03:14おいい・・・一緒だろ・・・・
0660デフォルトの名無しさん
2007/07/26(木) 13:08:44お前は大きく誤解してるから、もう一度読み直した方がいい
0661655
2007/07/26(木) 16:58:15気持ち悪いというだけなんだけど、それが誤解なん?
「変えなくてもいい」じゃなくて「変えても問題ない」から変えておく
0662デフォルトの名無しさん
2007/07/26(木) 17:08:21奇妙に見えるのはその為で。
0663デフォルトの名無しさん
2007/07/27(金) 14:45:17ある値(bytVal)の3ビット目以上をシフトするというプログラムを書いたんですが、
ビットシフト命令が無いので
i=(bytVal \ &H8&) * &H10& + (bytVal mod &H8&) (※桁溢れはしないものとします)
としたんですが、コンパイルすれば最適化されるんでしょうか?
0664デフォルトの名無しさん
2007/07/27(金) 16:33:19l = 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になった
0665663
2007/07/27(金) 16:40:00ありがとうございます
0666名無しさん@そうだ選挙に行こう
2007/07/29(日) 10:50:58マルチラインをTrueにしておいて実際に改行されたとき
改行されたというフラグがほしいのですが
そういうのってできますか?
0667名無しさん@そうだ選挙に行こう
2007/07/29(日) 11:19:14質問の答えに関しては、TextにVbCrLfが含まれるかどうかで恐らく判定可能でしょう
0668名無しさん@そうだ選挙に行こう
2007/07/29(日) 12:21:58どうやって含まれているか判別すればいいんですか?
どんな関数を使えばいいのですか?
0669名無しさん@そうだ選挙に行こう
2007/07/29(日) 12:34:46AccessのフォームからMicrosoft Web Browserオブジェクトを
を実行してHTMLを取得するツールを作成しているのですがたまに
エラー:オブジェクトがありません。
のスクリプトエラーメッセージが出てしまいます。
通常のIEの設定では
「スクリプトエラーごとに通知を表示する」をチェックなし
「スクリプトのデバッグを使用しない」をチェックあり
にしているので普通にIEブラウザからアクセスした場合にはエラーは出ないのですが
IEの設定はここでは反映されないのでしょうか?
このエラーがでないようにしたいのですがなにかアドバイスいただけないでしょうか?
0670名無しさん@そうだ選挙に行こう
2007/07/29(日) 13:07:54少しは自助努力をしろよw
VBの文字列扱う関数なんて数えるほどしかないだろう。
0671名無しさん@そうだ選挙に行こう
2007/07/29(日) 13:35:36Instrという関数を使用してVbCrLfという文字を探すようにプログラムを
組みましたがtextの値が改行されているのにそのような反応が出ません。
表面上にはもちろんVbCrLfという文字は出ませんよね
内部でVbCrLfを使用していると思うのですがそれを検索できる方法はどうやるんですか?
0672名無しさん@そうだ選挙に行こう
2007/07/29(日) 13:49:53試したけど、Instrで十分取れるなぁ。ブレークポイント置いて調べてみて
0673名無しさん@そうだ選挙に行こう
2007/07/29(日) 13:51:18InStrで普通に見つかるのだが何か変なことやってない?
例えば InStr(Text1.Text, "vbCrLf") とか。
0674名無しさん@そうだ選挙に行こう
2007/07/29(日) 14:03:07そんな感じでやってます
InStr(Text1.Text,vbCrLf)
です
0675名無しさん@そうだ選挙に行こう
2007/07/29(日) 14:10:33それだと最初に見つかった位置を返すだけだぞ。
ヘルプでInstr関数を調べましょう
0676675
2007/07/29(日) 14:26:050677名無しさん@そうだ選挙に行こう
2007/07/29(日) 14:31:31色々書いてありました
でもどこが悪いのかわかりません
イベントドリブンというのもわかりません
0678名無しさん@そうだ選挙に行こう
2007/07/29(日) 14:32:480679名無しさん@そうだ選挙に行こう
2007/07/29(日) 14:36:54そこに改行されたらというイベントがあるのですか!?
0682名無しさん@そうだ選挙に行こう
2007/07/29(日) 14:42:40キーボードの下を押したときにイベントが動くと思ってました。
どうやら違うみたいですね
0683名無しさん@そうだ選挙に行こう
2007/07/29(日) 14:46:390684名無しさん@そうだ選挙に行こう
2007/07/29(日) 14:59:38調べるだけではなく、試してみなよ
0685675
2007/07/29(日) 15:03:320686名無しさん@そうだ選挙に行こう
2007/07/29(日) 15:04:260688名無しさん@そうだ選挙に行こう
2007/07/29(日) 15:49:54マジで悲しくなるな
0689名無しさん@そうだ選挙に行こう
2007/07/29(日) 15:51:100691名無しさん@そうだ選挙に行こう
2007/07/29(日) 15:55:53>>690
なんでそうなるんだ?w
0692名無しさん@そうだ選挙に行こう
2007/07/29(日) 15:58:43テストで a という文字を検索した場合はできました
また ab というように2文字にしても問題なかったです
でも vbCrLf はだめでした
text1.textっていうのがまずいのですか?
0693675
2007/07/29(日) 15:59:05InStr(Text1.Text,vbCrLf)←これ、そのまま使い道ある?
0695名無しさん@そうだ選挙に行こう
2007/07/29(日) 16:05:45マルチラインにしていて自動で改行されてるときを知りたいんです
0696名無しさん@そうだ選挙に行こう
2007/07/29(日) 16:07:19If InStr(Text1.Text, vbCrLf) = 0 Then
Debug.Print ("Single line text !")
Else
Debug.Print ("Multi lines text !")
End If
End Sub
こんなの小学生時代の俺でも思いつくと思うわ。
っていうか、こんなのも分からない奴は根本的にPGとしての適正を欠いているとしか言いようがないよ
0699名無しさん@そうだ選挙に行こう
2007/07/29(日) 16:15:03プロポーショナルフォントの場合に問題があると思うけど…。
0700名無しさん@そうだ選挙に行こう
2007/07/29(日) 16:15:35無理なんだ。あるフォントで、あるtext幅での最大文字数って調べられるんですか?
0701名無しさん@そうだ選挙に行こう
2007/07/29(日) 16:19:070702675
2007/07/29(日) 16:29:01>>700
どのフォントでも、っていうならAPIを使う。
フォントを限定するなら(MSPを使わない等)、泥臭くやる方法も有るけど・・、勧められないなw
0703名無しさん@そうだ選挙に行こう
2007/07/29(日) 16:35:19ちょっと選挙いってきて帰りにメシ食べてきます
これからもがんばります
0704名無しさん@そうだ選挙に行こう
2007/07/29(日) 17:43:10666を普通に複数行かどうかの判断にしか読めない。
ひょっとして「折り返し」も含めるという意味で言ってるのか666は。
だったら、まあ君に文句いってもしょうがないけど、「改行」なんて言葉を
使うべきではなかったな。
それならたぶん701が言ってるSendMessageでEM_GETLINECOUNT送る方法で
判別可能だろうね。
0705704
2007/07/29(日) 17:44:34なんか変な日本語になっちゃったなごめん。
0706698
2007/07/29(日) 18:42:02>>691
ある意味、これのお陰で何をしたいか分かったようなもんだしなw
0707デフォルトの名無しさん
2007/07/31(火) 01:43:38アンチエイリアシングするにはどうすればいいですか?
なかなか使えそうなサンプルが見つからない・・・
0708デフォルトの名無しさん
2007/07/31(火) 01:59:32http://www.vb-helper.com/howto_antialias_with_loadimage_into_file.html
0709デフォルトの名無しさん
2007/07/31(火) 07:37:30http://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
0710デフォルトの名無しさん
2007/07/31(火) 08:12:400711デフォルトの名無しさん
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
0712デフォルトの名無しさん
2007/07/31(火) 19:03:39Randomize
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
のように表示されてしまい、確かにこれが足し算なら計算結果は非常に近い値となるのですが、表示された引き算は決して近い値にはならないといった感じになってしまいます・・・
これは各数式の左と右の値が、足し算する場合だと他の式と計算結果が近似するようにできていて、引き算する場合だとそうなってない、ということだと思うんですが
私の目的とする、引き算の場合でも各数式の計算結果が近似されて表示される
というプログラムを実現するためにはあと何が足りないのかアドバイス頂きたいです
0713デフォルトの名無しさん
2007/07/31(火) 19:13:38>3つの数式を乱数で表示させ、かつその数式の計算結果が非常に近い値になる
ここに疑問を持たない頭が足りないと思う。
0714デフォルトの名無しさん
2007/07/31(火) 19:47:27もう何がなんだかw
キミはいったいどういう教育を受けてきたんだ?
そえともエスパーを召還するおつもりか?w
0715デフォルトの名無しさん
2007/07/31(火) 19:59:54意味が分からん
0716デフォルトの名無しさん
2007/07/31(火) 22:44:19こんにちは、ど素人プログラマです。
VBに限った話ではないのですが、業務系のシステムでデータをテキスト出力するとき、
CSV形式なのか、タブ区切り形式なのかを決断する基準を教えてください。
業務系は画面からデータを入力するのが基本で、そう考えるとタブ文字の入力はありえない事を
考えるとタブ区切り形式がいいのかな〜 と思います。
でも、文字はダブルクウォーテーションで囲んでしまえば、カンマの入力があったとしても
問題はないですよね。
皆さんはどうしてますか?
0717712
2007/07/31(火) 22:52:403つの数式を作って表示させるということです
よろしくお願いします
0718デフォルトの名無しさん
2007/07/31(火) 22:58:19カンマを入力する可能性があるならタブ区切りがいいと思う。
チェック用にはカンマ区切りを使っている&「”」を使わない(メモ帳で見て分かり易い形)
よほど変な形式にしなければどちらでも読み込めるから構わない、とは思う
0719デフォルトの名無しさん
2007/07/31(火) 23:39:55この内容なんか前にも見たことあるなぁ・・・
A=(B-C)
E=(F-G)
H=(I-J)
で、AとEとHの値が似た値にしたいってことだっけ・・・?
AとEとHはそれぞれ、B、C、F、G、I、Jの乱数値から算出したいんだっけ?
0720デフォルトの名無しさん
2007/07/31(火) 23:46:23>>448
と
>>463
だったわ、
これのことでしょ?>>712
0721712
2007/07/31(火) 23:56:55教えて頂いた感じで書いたら足し算の場合は実現できたけたけど
引き算の場合だとできないといった感じです・・・
やりたいのは719に書いてあることなんですが、自分のプログラムは
フォーム上にある3つのラベルに数式を表示させ、コマンドを押すと
乱数で違う数式が表示されて、かつ各数式の2つの数字の間の記号も
ランダムで「+」と「ー」が適当に入れ替わるといった感じになっています
0722デフォルトの名無しさん
2007/08/01(水) 01:17:28それは、何のソフトだ?www
0723712
2007/08/01(水) 07:47:07何のソフトというわけでもありませんがちょっと必要があって作りたいという感じです
やりたいことを分かりやすく整理すると
ラベル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はかなり近い値になる
ということをやりたいので、アドバイスを頂きたいです
よろしくお願いします
0724デフォルトの名無しさん
2007/08/01(水) 11:19:53おまえさあ、>466 の回答に対して一言のお礼ものべず
うまくいったのかどうかの報告もなく消えておいて
よくもまあ、いまさら名乗り出られるなw
その図太い神経には恐れ入るよ
0725デフォルトの名無しさん
2007/08/01(水) 14:22:23> やりたいことを分かりやすく整理すると
> やりたいことを分かりやすく整理すると
0726デフォルトの名無しさん
2007/08/01(水) 14:33:340727デフォルトの名無しさん
2007/08/01(水) 14:42:59アドバイスをやろう。
自分の好きな数字を6つ紙に書け。
>>723に書いた式のB・C・F・G・I・Jにその6つの数字を当てはめろ。
かなり近い値になったか?ならなかったらならない理由を考えろ。
プログラム以前の問題だ。
0728723
2007/08/01(水) 14:47:58教えて頂いた方ありがとうございます
もし私の説明で意味が分からないところ等があったら指摘してください
一応ドクターだから論文何本も書いてあるので文章力等は自信があるのですが・・・
0729デフォルトの名無しさん
2007/08/01(水) 15:00:113つのラベルに
それぞれ
「B+C」「E+F」「H+I」
か
「B-C」「E-F」「H-I」
をランダムに表示させたい
でおkじゃないの?
説明が回りくどく感じる・・・
つか日本語でおk
0730デフォルトの名無しさん
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)
という様な構成になってしまいます。
メニューバーに表示される項目をプログラム実行時だけで可変するのは難しいのでしょうか?
0731723
2007/08/01(水) 15:05:30ありがとうございます
プログラム以前の問題ですか・・・
>>729
そうですね
3つのラベルに
それぞれ
「B+C」「E+F」「H+I」
か
「B-C」「E-F」「H-I」
をランダムに表示させたい
かつこの3つの計算結果は非常に近い値になるということがやりたいことです
確かに私はグダグダ長く説明しすぎすね・・・
0732デフォルトの名無しさん
2007/08/01(水) 15:26:59不可能
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)
という制限付きなら実現可能、
ただしメニューエディタからは定義できない
0733デフォルトの名無しさん
2007/08/01(水) 15:28:00mnuItem(0)
・・・・mnuSubitem(0)
・・・・mnuSubitem(1)
〜〜
・・・・mnuSubitem(9)
mnuItem(1)
・・・・mnuSubitem(10)
〜〜
・・・・mnuSubitem(19)
mnuItem(2)
・・・・mnuSubitem(20)
mnuItem(3)
・・・・mnuSubitem(30)
だった。
0734デフォルトの名無しさん
2007/08/01(水) 15:33:02他の方法を考えてみます。
ありがとうございました。
0735デフォルトの名無しさん
2007/08/01(水) 18:09:16どうすればいいんでしょうか?
単に元のテキストと1行ずつ比べる方法だと、テキストの途中で改行された場合に
そこから下の行も全部ずれるので編集されたことになってしまい、困っています。
よろしくお願いします。
0736デフォルトの名無しさん
2007/08/01(水) 18:56:01>下の行も全部ずれるので編集されたことになってしまい
それを編集された事にしたくないなら、例えば行単位でフラグを持たせて改行時には
フラグを挿入する形にすれば良いのでは?(改行した行と挿入した行のみ変更のフラグを立てる)
トリッキーな感じがするな・・・
0737デフォルトの名無しさん
2007/08/01(水) 18:57:410738デフォルトの名無しさん
2007/08/01(水) 20:58:53他とば、数値Aの絶対値が50以下の時Bを実行する
のような判定をやりたいんですが
0739デフォルトの名無しさん
2007/08/01(水) 21:03:200740デフォルトの名無しさん
2007/08/01(水) 21:05:53俺が優しく教えてやろう。
ぐぐれ、もしくはヘルプ使え
0741デフォルトの名無しさん
2007/08/01(水) 22:12:24ありがとうございました。
編集で途中の行が減った場合の処理が難しいので諦めますorz
0742デフォルトの名無しさん
2007/08/01(水) 22:41:390743738
2007/08/01(水) 22:46:20これでもソニーのソフト開発部門で働いてるんですけどね・・・
プログラムは昔から触れることすら嫌いですが
調べたらなんとなく分かりました、ありがとうです
0744デフォルトの名無しさん
2007/08/01(水) 22:48:250745デフォルトの名無しさん
2007/08/01(水) 22:59:470746738
2007/08/01(水) 23:03:29プログラムできないけどソフトやりたい人が行く場所
その辺の小さい独立系のSEの方がよっぽどできますよ
0747デフォルトの名無しさん
2007/08/01(水) 23:06:310748デフォルトの名無しさん
2007/08/01(水) 23:07:24ナイスフォローだ
しかし
>プログラムできないけどソフトやりたい人が行く場所
やっぱ馬鹿ばっかだ
0749デフォルトの名無しさん
2007/08/01(水) 23:12:39給料どっちがもらえるの?
やっぱできは悪くてもソニー?
0750デフォルトの名無しさん
2007/08/01(水) 23:29:410751デフォルトの名無しさん
2007/08/02(木) 00:25:05いざ実行しようとするとかなり速度が遅くなってしまうんですが
これって改良のしようはありますか?
いらないファイルとかたくさん消してPCを軽くするとか効果ありますか?
0752デフォルトの名無しさん
2007/08/02(木) 00:28:09実行ファイル作成時に余計なチェックを外す事である程度の高速化は可能。
コード自体が遅いかも知れない時は計測してみて重い所の改良を試みる。
基本的にVBは遅いなぁ
0753751
2007/08/02(木) 00:50:11ありがとうございます
実行ファイル作成時に余計なチェックを外す事
って具体的にはどのような事ですか?
いまいちイメージできないのでよろしくお願いします
0754デフォルトの名無しさん
2007/08/02(木) 00:55:32遅くねえよ
C言語と比べても遜色ないレベルの速度は確保できる
0755デフォルトの名無しさん
2007/08/02(木) 00:57:10プロジェクトのプロパティ->コンパイル->最適化の詳細設定
0756752
2007/08/02(木) 00:58:31今開けないから詳しくは書けないけど、プロジェクトのプロパティから実行ファイル
関連のものがあって、その中に詳細な設定、とかいうのがあったと思われる。
>>754
いや、できるけどAPIとか使いまくりだとCでよくね?とか思ったりすることが
0757デフォルトの名無しさん
2007/08/02(木) 02:04:41フォームを表示せずに実行するプログラムを作りたいのですが、
起動時にどれを選べばいいのですか?
標準exeとかactivedllとか色々あります
0758デフォルトの名無しさん
2007/08/02(木) 02:17:30標準でいいから、スタートアップの設定をSub Mainにすればいい
0759デフォルトの名無しさん
2007/08/02(木) 12:09:20もしかしてDo whileとIfって速度に関して違いがあったりする?
同じ処理を実現するコードを両パターンで作ってみたら後者の方が
全然速い感じがするんだけど
0760デフォルトの名無しさん
2007/08/02(木) 12:32:010761デフォルトの名無しさん
2007/08/02(木) 14:51:440762デフォルトの名無しさん
2007/08/02(木) 22:48:17form1とform2が一定時間ごとに交互に表示され、
form2にはラベルが2つあり、それぞれに毎回ランダムで
文字列が表示されるといった感じで、このform2が開いた瞬間に
表示される文字列を毎回ログ残しておきたいのですが
このようなことのやり方を分かる方いますか?
0763762
2007/08/02(木) 22:51:43イメージとしてはform2が合計5回開くとしたらテキストファイルか何かに
Label1 Label2
aaa fff
bbb ggg
ccc hhh
ddd iii
eee jjj
といった感じで記録を残したいです
0764デフォルトの名無しさん
2007/08/02(木) 23:01:07単にファイルIOの処理がわかってないだけでしょ?
だったらまず勉強しろよ。でなきゃ話にもならんよ。
質問というのは、それで何かに躓いた時点で初めてやるもんだろ?
間違ったこといってるか?
0765762
2007/08/02(木) 23:21:25If 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
0766デフォルトの名無しさん
2007/08/02(木) 23:33:04For Output
↓
For Append
あとFreeFile使えよ
0767デフォルトの名無しさん
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桁の
値が格納されている状況です
0768デフォルトの名無しさん
2007/08/02(木) 23:44:26http://support.microsoft.com/kb/169617/ja
0769デフォルトの名無しさん
2007/08/03(金) 00:04:22非情に的確な文献ありがとうごじゃいました。解決しそうです
0770デフォルトの名無しさん
2007/08/03(金) 00:14:351.ファイルを開きっぱなしにして書き込んでいく(アプリの終了時に必ずCloseする事)
2.後で一括して保存できるように変数を用意して値を保持しておく
0771762
2007/08/03(金) 00:20:28freefileとは何ですか?
>>770
変数が必要なのは分かっていたんですが、実際どうプログラムを
書いていけばいいかはイメージできなかったんで、
もう少しヒントを頂いてもいいですか?
0772770
2007/08/03(金) 00:24:38Dim FN as Integer
FN=Freefile()'空いているファイル番号を自動で取得
あまり勧められないが標準モジュールにでもPublicで文字配列を用意して保持しておく
>If Label1.Caption = Change Then
これが良く分からん、誰かエロい人教えて
0773762
2007/08/03(金) 00:42:49If Label1.Caption = Change Then
これは自分としては、ラベル1の内容が変わったら(つまり何か文字が表示されたら)
テキストファイルにそれを書き込む
的な意味で使いました・・・
0774770
2007/08/03(金) 00:49:39手段もあるが。いちいち生成&保存する必要がなければな
0775デフォルトの名無しさん
2007/08/03(金) 00:54:41把握。
そもそもラベル1、2の値をログ出力したいとか言ってる割に、
IfとElseIfでわざわざ分けてる理由が分からん。
0776770
2007/08/03(金) 01:07:55っつか符合なしが使えるようにして欲しい
0777デフォルトの名無しさん
2007/08/03(金) 01:19:15新手のイベントドリブンktkr
0778デフォルトの名無しさん
2007/08/03(金) 01:56:560779デフォルトの名無しさん
2007/08/03(金) 08:15:36滑稽な図式にしか見えんな。
だから762に対しては「勉強しろ」としか言いようがないのは最初から
明白にわかってるだろうにw
0780デフォルトの名無しさん
2007/08/03(金) 08:49:120781デフォルトの名無しさん
2007/08/03(金) 21:23:21それ何に使うの?
数学のレポート?
本当に近い値になんのか?
0782デフォルトの名無しさん
2007/08/03(金) 22:37:520783731
2007/08/03(金) 23:09:32これでも東京京都東工かどれかのドクターなんですが・・・
すいませんプログラムできなくて・・・
将来は教授になりたいので頑張ります
プログラムの先生ではありませんが・・・
0784デフォルトの名無しさん
2007/08/03(金) 23:33:42迷惑です
0785デフォルトの名無しさん
2007/08/03(金) 23:53:200786デフォルトの名無しさん
2007/08/03(金) 23:55:060787デフォルトの名無しさん
2007/08/05(日) 07:32:34MSDN Onlineの中のどこにあるんでしょうか?
0788デフォルトの名無しさん
2007/08/05(日) 09:48:12当方東北○大のm1です
しょうらい下に付くかもしれませんので、
すいませんが研究室名をお教え願えませんでしょうか?
0789デフォルトの名無しさん
2007/08/05(日) 11:43:20ソフトを配布インストールしてもらった後で、Windowsの「プログラムの
追加と削除」の機能を使ってそのソフトを削除しても、Windowsには
レジストリを含め、何かが肥大化したままとか、何らかの痕跡が残るんでしょうか?
0790デフォルトの名無しさん
2007/08/05(日) 15:16:210791デフォルトの名無しさん
2007/08/05(日) 15:26:320792デフォルトの名無しさん
2007/08/05(日) 16:37:440793デフォルトの名無しさん
2007/08/05(日) 23:52:350794デフォルトの名無しさん
2007/08/05(日) 23:58:260795デフォルトの名無しさん
2007/08/06(月) 00:13:290796デフォルトの名無しさん
2007/08/06(月) 00:24:20GJ!
0797デフォルトの名無しさん
2007/08/06(月) 19:09:14Private Declare Function get_table Lib "VB.dll" () As Variant() で宣言して戻ってきたvararr()は
vararr(0,0)とかだと値が取れるんだけど
foreach var in vararr
var(0)
next
だと値が取れない
foreachでまわしたときにも値が取りたいです。どうしたらいいか教えて下さい
0798デフォルトの名無しさん
2007/08/06(月) 19:17:10つステップ実行&ウォッチ
0799デフォルトの名無しさん
2007/08/06(月) 19:36:06SafeArrayCreateで次元に1を指定すればよいだけではないのか?
0800デフォルトの名無しさん
2007/08/06(月) 20:06:19next
でやってウォッチは
-mvar variant/variant(0to73,0to7)
-mvar(0) variant(0 to 7)
-mvar(0,0) variant/string
mV1 variant/string <ツリー出ない
みたいな感じです
mv1で値とりたいのに・・・
次元1は意図が違ってくるので無理す
0801デフォルトの名無しさん
2007/08/06(月) 20:36:210) == mV1
0802デフォルトの名無しさん
2007/08/06(月) 21:08:33どゆこと?
0803デフォルトの名無しさん
2007/08/06(月) 22:09:19できないけど
foreach var in vararr(0)
var
next
0804デフォルトの名無しさん
2007/08/06(月) 22:27:03arr(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
ってやりたい
0805デフォルトの名無しさん
2007/08/06(月) 22:51:01debug.print arr
next
0806デフォルトの名無しさん
2007/08/06(月) 23:08:16レスはありがたいけど意味分かってないレスはコメントに困る
0807デフォルトの名無しさん
2007/08/06(月) 23:10:510808デフォルトの名無しさん
2007/08/06(月) 23:11:43残念ながらそれはエラーになるんだよ
0809デフォルトの名無しさん
2007/08/06(月) 23:13:22ヘルプみてからまたこい
ちんぷんかんぷんなことしてなんでって言われてもわからん
0810デフォルトの名無しさん
2007/08/06(月) 23:14:12当然debug.printでやっても一緒
0811デフォルトの名無しさん
2007/08/06(月) 23:19:07SafeArrayCreate(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)とかなかったっけ?混同してる?
0812デフォルトの名無しさん
2007/08/06(月) 23:43:43>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では普通の方法ではサポートしてないのではなかったかな?
0813デフォルトの名無しさん
2007/08/07(火) 23:18:14ワロタ。
captionはあくまでも文字列型とみたほうがいい
そのままの日本語訳だよな
変数にキャプションを取得しておいて
なんらかのイベントの際に変更されたキャプションの文字列と
比較して判定がよろしいかと。
0814デフォルトの名無しさん
2007/08/07(火) 23:36:13>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の前に関数の戻り値の型の違いに問題ないですか
0815デフォルトの名無しさん
2007/08/07(火) 23:43:110816デフォルトの名無しさん
2007/08/07(火) 23:51:240817デフォルトの名無しさん
2007/08/08(水) 03:41:390818デフォルトの名無しさん
2007/08/08(水) 05:33:42ゲームパッドへvbから「ボタンを押せ」と命令する方法ってありますかね?
0819デフォルトの名無しさん
2007/08/08(水) 06:56:05フィードバックとしてあんまし意味がないような・・・
ひょっとして、ゲームの自動操縦とかの話?
0820デフォルトの名無しさん
2007/08/08(水) 09:03:290821デフォルトの名無しさん
2007/08/08(水) 10:45:33VBから指定のwebブラウザ(flash)を起動させる方法がどうしてもわからない...
0822デフォルトの名無しさん
2007/08/08(水) 11:12:490823デフォルトの名無しさん
2007/08/08(水) 12:32:33自動操縦、マクロみたいなものを作りたいんです。
訳あってキーボードやマウスではダメで、
しかもプロセスに「キーを押したよ」っていう信号を送るのではなく、
本当に直接ゲームパッドへ命令を送ったりする方法を探しているのです。
書いてて自分でも無茶かなと思い始めた…。
0824デフォルトの名無しさん
2007/08/08(水) 12:38:40いかにも馬鹿っぽい質問だな。
多分日本語が不自由なだけだとは思うが、これじゃあパッドに自動ピアノみたいな
自分で自分をシバくメカが付いてると思い込んでる奴みたいだよw
多分仮想デバドラ書かないとダメなんじゃないかな
0825デフォルトの名無しさん
2007/08/08(水) 12:57:57ゲームなんかへマクロだろうが何だろうが渡し放題だわな
既存のパッドでやりたいなら、そのパッドのデバドラを解析して乗っ取ることになるわな
0826デフォルトの名無しさん
2007/08/08(水) 13:21:37なんでも仮想ジョイパッドを作って、それにプログラムで信号を送れるそうです。
でもサンプルプログラムの言語は当然ながらC…
できればvbでやりたかったんですが、cで頑張ってみますかね…
0827デフォルトの名無しさん
2007/08/08(水) 13:29:170828デフォルトの名無しさん
2007/08/08(水) 14:09:12vbを使おうとした理由は、単に「start」と「end」と書いたボタンを作ってそれを押したら動くような仕組みにしたかったからです。
でもまぁ、コンソールアプリケーションでもいいっちゃいいのでこれで解決かなと思います。
0829483
2007/08/09(木) 00:18:21keypressイベントでキー入力は出来なくなったのですがコピペすると半角カタカナ以外が入力できてしまいます。
色々調べてみたのですがどうしても分かりません。誰か助けてください。
0830デフォルトの名無しさん
2007/08/09(木) 01:09:230831デフォルトの名無しさん
2007/08/09(木) 02:05:18つ「Changeメソッド」「Replace関数」「Strconv関数」
0832483
2007/08/09(木) 06:38:28言葉足らずですいませんでした。
0833デフォルトの名無しさん
2007/08/09(木) 06:39:34If objAAA.links(n).href = "bbb.html;" Then
objAAA.links(n).Click
この場合「リンク先がbbb.htmlの場合(完全一致)クリックする」
という指示になりますがこれを
「リンク先がbbb.htmlという文字列を含む場合クリックする」
に変えたい場合はどう書けばいいのでしょうか?
本来は*****bbb.htmlというアドレスなのですがこの*****が
日によって変わってしまうため完全一致で探すことができません
ですのでbbb.htmlの部分だけを見つけてクリックしたいのですが・・・
分かる方いましたらよろしくお願いします
0834デフォルトの名無しさん
2007/08/09(木) 11:43:43つ「Like 演算子」or「InStr 関数」
0835デフォルトの名無しさん
2007/08/09(木) 12:21:14つ InputMan Pro
0836デフォルトの名無しさん
2007/08/09(木) 12:40:58'標準モジュール(定義)
Public Type usrAAA
'色々
End Type
'クラスモジュール
Public Function GetData(Byref aaa as usrAAA) as Long
End Function
上記のやり方でエラーが出てしまいます。何が問題なのか分かりません。
0837デフォルトの名無しさん
2007/08/09(木) 13:07:41http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/9812/vb6/
「パブリックメソッドでのユーザー定義型のサポート 」
ってところに書いてあったよ
0838デフォルトの名無しさん
2007/08/09(木) 13:37:00publicじゃなくfriendにしてしまっていいんでね?
どうせvbはスコープが適当だから
0839836
2007/08/09(木) 13:51:01今読んで来ました。良く分からないんですがActiveXDLL用にプロジェクトを追加しろって事ですか?
現在はプロジェクト一つ(標準EXE)→プロジェクト二つ(標準EXEとActiveXDill)って事?
これから試してみます。
>>838
friendでやってしまっても良いんですが、エラー情報が「パブリックオブジェクトモジュールで定義された・・・」
というので標準モジュールにパブリックで宣誓する事ではないの?と思ったんです。
0840デフォルトの名無しさん
2007/08/09(木) 14:25:10セッション開始後、メールのダウンロードなどは問題ないのですが
受信トレイから受信済みのメールを取り出すために、Fetchコマンドを実行すると
’実行時エラー32002 予期せぬエラーが発生しました’が発生します。
2000やXpでは問題なく動作しているのですが・・・
何か解決方法などありますでしょうか?
0841デフォルトの名無しさん
2007/08/09(木) 15:27:44> 現在はプロジェクト一つ(標準EXE)→プロジェクト二つ(標準EXEとActiveXDill)って事?
そうみたい
0842デフォルトの名無しさん
2007/08/09(木) 15:46:59┣標準モジュール(Type定義)
┗クラスモジュール
じゃなくて
プロジェクト
┣クラスモジュール
┗クラスモジュール2(疑似Typeとして使用)
にしちゃえば楽なのに
0843836
2007/08/09(木) 17:49:00とりあえずFriendで誤魔化してます
>>842
それも有りですが、ユーザー定義内に動的配列があるのでメンテが大変になりそうで
0844デフォルトの名無しさん
2007/08/09(木) 19:10:21まぁ、慣れもあるんだろうけど。
0845デフォルトの名無しさん
2007/08/10(金) 07:24:02ちょっとファイル保存の時、勝手が違って困るな
>>843
ちなみに星界は、プロジェクトの追加でActiveXDLLを作成して、
そのActiveXDLLプロジェクトの新規クラス内部で public type する
0846デフォルトの名無しさん
2007/08/10(金) 08:23:05え?
0847836
2007/08/10(金) 10:33:12余計な事考えずにそれをやったら、同じエラーが出てしまいました・・・orz
色々考えても分からないのでFriendに
ファイルアクセスは問題なく出来ますねぇ。
0848デフォルトの名無しさん
2007/08/10(金) 13:12:26テキストボックスに入れる数値に三桁カンマをつけるとき、
コード上でformat関数を使って表示することはできるんですが、
フォームのデザインビューで、テキストボックスのプロパティウィンドウで
最初から三桁カンマ表示をさせることってできるのでしょうか?
dataformatというのはどうも違うことまで分かったのですが。
ちょっとわからず、教えていただきたいです。
0849デフォルトの名無しさん
2007/08/10(金) 17:58:550850デフォルトの名無しさん
2007/08/10(金) 18:07:270851デフォルトの名無しさん
2007/08/10(金) 18:18:510852デフォルトの名無しさん
2007/08/10(金) 18:22:06ここには、あまり詳しい人いないから質問しても無駄
0853デフォルトの名無しさん
2007/08/10(金) 19:18:44特に>>852がその典型
0854デフォルトの名無しさん
2007/08/10(金) 23:30:49プログラムでやる方法はないでしょうか?
Rowで値は取得できるのですが、選択状態にすることができなくて困ってます。
よろしくお願い致します。
0855デフォルトの名無しさん
2007/08/11(土) 00:37:54Private Sub Form_Load()
With MSFlexGrid1
.SelectionMode = flexSelectionByRow
.FocusRect = flexFocusNone
.HighLight = flexHighlightAlways
.Row = 3
.Col = .FixedCols
.ColSel = .Cols - 1
End With
End Sub
0856デフォルトの名無しさん
2007/08/11(土) 02:07:08Text|123,456,789
って入れりゃいいんでねーの?
さも無きゃユーザコントロールでラップしちゃう
0857デフォルトの名無しさん
2007/08/11(土) 07:06:49間違ってプロジェクト互換のままコンパイルする可能性があるんだよね。
コンパイルされたActiveXのDLLやOCXのクラスIDやインタフェースID、ライブラリIDを取得するなりして
きちんとバイナリ互換でコンパイルされたことをチェックすることはできないだろうか?
0858デフォルトの名無しさん
2007/08/11(土) 11:50:47Private 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
0859デフォルトの名無しさん
2007/08/11(土) 12:00:18お前はなにもかも間違っている
0860デフォルトの名無しさん
2007/08/11(土) 12:41:22マスクエディットコントロールを使ってみなよ。
気に入らなかったらInputMan(有料)ネ。
0861デフォルトの名無しさん
2007/08/12(日) 05:11:220862デフォルトの名無しさん
2007/08/13(月) 08:47:10日本語版XP、VB6.0で作成したプログラムを、英語圏の国、英語版XP上で使わせようとする場合、
表示させるメッセージやコントロールの英文化以外に気をつける事って何があります?
0863デフォルトの名無しさん
2007/08/13(月) 09:39:000864862
2007/08/13(月) 09:48:31今回は当該プログラムを英語圏向けに新しく作り変える作業で、日本語と英語を同時に使用する事はないと思います。
この場合、>>863を見るに、組み直し、コンパイル作業も日本語OS上では行えないという事になるんでしょうか?
0865デフォルトの名無しさん
2007/08/13(月) 10:03:26無理ならインストーラーを作るときにVisualStudioInstallerなどでOCXの上書きを防ぐなど気を使う
0867デフォルトの名無しさん
2007/08/14(火) 11:43:45Open FileName For Append As #iFile
としてファイルを開いたときの排他モードはどうなっているのでしょうか?
0868デフォルトの名無しさん
2007/08/14(火) 13:48:03exeファイルのソースを見たいのですがどうすればみれますか?
0869デフォルトの名無しさん
2007/08/14(火) 13:51:04作者に連絡をとる
0870868
2007/08/14(火) 14:22:22それ以外に方法はないのでしょうか?
0871デフォルトの名無しさん
2007/08/14(火) 14:33:400872デフォルトの名無しさん
2007/08/14(火) 14:49:30「VB decompiler」でググってみ。
0873デフォルトの名無しさん
2007/08/14(火) 14:59:11そんなにみたいソースってどんなソフト?
オープンソースの類似ソフトであるんじゃね?
0874868
2007/08/14(火) 15:26:15これから仕事で作り変えるソフトです。
動かない機能があるのでコードを見て確認しようとしています。
>>872
ありがとうございます。
exeのソースらしきものを見ることができました。
ただ、vbのソースではないようなのですが・・・
マニュアルにもvbに近いソースが見たかったら
pro バージョンを買えと書いてあります・・・(涙
けち臭いですが、お金をかけずにソースを確認したいのです。
0875デフォルトの名無しさん
2007/08/14(火) 15:50:59ムリです
諦めてお金を払うか、アセンブリコードから類推するより他はありません
0876868
2007/08/14(火) 16:05:03アセンブリコードからですか・・・。
「vb decompiler」で作成されるコードはどうやら「 p-code(これがアセンブリコード?) 」と呼ばれるもので記述されているようなのですが、
どこか参考になるサイトはありませんでしょうか?
これを解読してみます。
0877デフォルトの名無しさん
2007/08/14(火) 16:14:16p-codeでコンパイルされてるなんて珍しいですが、まぁ同じです
ただp-codeも仮想機械の言語なので見るニーモニック表が違うだけです
0878868
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?終了------------------------------
お願いします
0879デフォルトの名無しさん
2007/08/14(火) 19:27:210880デフォルトの名無しさん
2007/08/14(火) 21:23:08教えていただいたやりかたで、できました。
どうもありがとうございました。
0881デフォルトの名無しさん
2007/08/14(火) 21:29:25'文字数制限
Call SendMessage(R_COMMENT.hwnd, EM_LIMITTEXT,20, 0)
とやっても、テキストボックスは制限できるのですが、
リッチテキストではうまくいきません。
LenBでロストフォーカス時にやるしかないでしょうか?
初歩的な質問かもしれませんが、調べてもヒットしなかったので、
よろしくお願い致します。
0882デフォルトの名無しさん
2007/08/14(火) 21:56:38validateで入力チェックが妥当だろうね
というか「何の」バイト数なのか文脈から不明
文字のバイト数なら文字コードによって違うだろうしなぁ…しかもrichtextは文字コード非依存だし
0883デフォルトの名無しさん
2007/08/14(火) 22:42:15文字のバイト数ですね
文字コードは通常入力できるものです(おそらくSJIS?)
全角でも半角でも20文字しかいれられないようにしたいです。
validateでフォーカス移動前にチェックが妥当ですか。
これで試しにやってみます。
ありがとうございます。
0884デフォルトの名無しさん
2007/08/14(火) 23:15:39>文字のバイト数ですね
>文字コードは通常入力できるものです(おそらくSJIS?)
すでにこの時点で矛盾が・・・
0885デフォルトの名無しさん
2007/08/14(火) 23:31:11とあるデータを収集するサーバ(標準EXE)と、サーバからデータを引っ張るクライアント(ActiveX)を作ろうとしてます。
サーバプロセスはあらかじめ起動しておき、クライアントは不定期に起動されます(サーバとの依存なし)
クライアント起動時、サーバに対して起動されたことを通知したいのですが、どのようなやり方がいいでしょうか。
ちなみにサーバとクライアントは同一PCで動作します。
すみませんが力を貸して下さい、このままだと徹夜になりそうでs
0886デフォルトの名無しさん
2007/08/14(火) 23:34:270887デフォルトの名無しさん
2007/08/14(火) 23:42:33ActiveXって技術名であって標準EXEと同じ土台に建たないと思うんだが
で、仮にActiveXDLLとEXEの場合、クライアントとサーバの関係が逆だと思われ
0888デフォルトの名無しさん
2007/08/14(火) 23:57:01>>887 OCX形式のコンポーネントです。
おっしゃる通り、何だか通常の考え方の逆を行ってる感じがしてます。
DDEとかsendmessageとかメールスロットとか色々調べましたがさっぱりです。
0889デフォルトの名無しさん
2007/08/15(水) 00:04:57常にバイナリ互換にオプション選択してれば問題ない
プロジェクト互換は、プロジェクトの追加とかでテストに便利だけど、それと間違ってプロジェクト互換でActiveXと配布するリスクとのトレードオフだと思うが
0890デフォルトの名無しさん
2007/08/15(水) 00:34:33普通にSocket通信でよくね?
0891デフォルトの名無しさん
2007/08/15(水) 00:44:330892デフォルトの名無しさん
2007/08/15(水) 12:38:28BitBltのように画像を転送するAPIで、上下を逆に転送する方法はありますか?
シューティングゲームなど、リアルタイムで行いたいのですが、
StretchBltだと、処理がものすごく遅くなってしまいます。
また、DirectXはまだ、初心者なので慣れていません・・・
どなたか教えてくださいませんか?
0893デフォルトの名無しさん
2007/08/15(水) 12:47:54どこかに上下逆のグラフィックを遺しておけばいいんじゃない?
あとDirectXも検討しる
0894デフォルトの名無しさん
2007/08/15(水) 13:01:38描画されたゲーム画面全体を上下逆さまに描画するので、
転送もとの画像が毎回変わるので、グラフィックを残して置けません。
やはりDirectXしかないのでしょうか?
0895デフォルトの名無しさん
2007/08/15(水) 21:28:090896デフォルトの名無しさん
2007/08/15(水) 23:02:09アプリケーション動作の記録用にログファイルを吐いているのですが
「x行を超えたら、古いログから削除する」
という機能はどうやって実現すればいいのでしょうか?
新しいファイルをオープン
↓
古いファイルの2行目〜最新行までを新しいファイルにWrite
↓
古いファイルを削除
↓
新しいファイルをリネーム
でとりあえず実現はできているのですがなんだか効率が悪いような気がするのですが
0897デフォルトの名無しさん
2007/08/15(水) 23:14:510898デフォルトの名無しさん
2007/08/15(水) 23:28:50それも考えたのですが
結局の所、ログが無限に増える(可能性がある)のが気持ち悪いのです。
今のPCならディスクもでかいしキニスンナって言われればそれまでなのですが
0899デフォルトの名無しさん
2007/08/15(水) 23:33:230900デフォルトの名無しさん
2007/08/15(水) 23:34:030901デフォルトの名無しさん
2007/08/15(水) 23:35:19古いファイルを消す方向でいってみます
ありがとん
0902デフォルトの名無しさん
2007/08/16(木) 10:07:26FlexGridの中にチェックボックスを入れる方法はありますでしょうか?
0903デフォルトの名無しさん
2007/08/16(木) 10:24:04俺もMSFlexGridについての質問です。
基本ですが、ADODBでつないだテーブルを表示させるにはどうしたよいでしょうか?
基本過ぎてどこにも載っていなくて・・
DataGridのときは
DataGrid1.DataSource = rs
でいけたんですが・・・
0904デフォルトの名無しさん
2007/08/16(木) 11:17:000905デフォルトの名無しさん
2007/08/16(木) 17:28:00それも試してみましたが、どうもできないようです。
あと、DirectXは少々僕には難しいようで・・・
0906デフォルトの名無しさん
2007/08/16(木) 17:31:54じゃあもっと難しくて高速化もそれほど望めない方法がある
DIBSection とか調べてみ。
VBだと驚くほど面倒だから
0907デフォルトの名無しさん
2007/08/16(木) 18:38:080908デフォルトの名無しさん
2007/08/16(木) 21:52:11サンプルを利用して、試してみましたが、結果的にStretchBlt同様遅くなってしまいました。
>>907
画像をLoadPicture等で読み込んだものでもないので、.Pictureの値が0となっており、エラーが発生してしまいました。
いろいろとお世話おかけしました。
やはり今のところ高速化はできませんでした。
0909デフォルトの名無しさん
2007/08/16(木) 23:33:17参考までにどこのサンプルなのかおせーて
0910デフォルトの名無しさん
2007/08/17(金) 02:14:12時間計測して、今の描写速度と欲しい描写速度の値が欲しいかな
VBで高速化しても無理なのか、今のロジックが悪いのかが分からない
0911907
2007/08/17(金) 02:53:47でダメか?
picture2.pictureではなく、picture2.imageを指定だ
0912デフォルトの名無しさん
2007/08/17(金) 11:37:130913デフォルトの名無しさん
2007/08/17(金) 13:16:43受信したときにポップアップ出るなら
同じ要領で更新ごとにポップアップ出せるでしょ
0914デフォルトの名無しさん
2007/08/17(金) 13:17:00その一行でどこまで伝えたいのか分からないけど、可能なんじゃない?
0915デフォルトの名無しさん
2007/08/17(金) 21:27:06Dim 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
0916デフォルトの名無しさん
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
0917デフォルトの名無しさん
2007/08/17(金) 21:30:02tbl(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
0918デフォルトの名無しさん
2007/08/17(金) 21:44:070919デフォルトの名無しさん
2007/08/17(金) 23:40:11あくまでも上下を反転させるだけならBitBltで描写させた方がいいんでない?
で、画像を配列で取り出せているので上下反転は配列で変更させて置き換え。
Dib2(i)=Dib(iMax-i)←これだと左右も反転するけど
0920デフォルトの名無しさん
2007/08/18(土) 10:08:29プロパティエラーになってしまいます。
Call hForm.Show(vbModeless, Me)
ですべてのフォームを呼び出しているのですが、
この呼び出し方だとフォームにセットフォーカスできないでしょうか?
0921デフォルトの名無しさん
2007/08/18(土) 11:47:24自分自身を親にしてるとか?
0922デフォルトの名無しさん
2007/08/18(土) 17:48:47受信してテキストファイルに表示させたいのですが
サンプルなどありますか?
0923デフォルトの名無しさん
2007/08/18(土) 18:26:570924デフォルトの名無しさん
2007/08/18(土) 22:27:00ありがとうございました!試してみます!
0925デフォルトの名無しさん
2007/08/19(日) 00:46:52ないあるあ
0926デフォルトの名無しさん
2007/08/19(日) 16:44:08そうです。
親を解除する方法がわからないので、延々とvbModeless, Me
で孫フォームまで呼び出しています。
0927デフォルトの名無しさん
2007/08/19(日) 18:18:08遅レスなんだけど
908は上下反転させたいだけ?180度回転させたいの?
コードは面倒臭いので見てないが
サブルーチン名を見ると180度回転させたいのかな
0928デフォルトの名無しさん
2007/08/19(日) 20:09:15ボタンクリックでフォルダを選択させるダイアログを表示させ、
選択したフォルダ内のファイル一覧をツール上に一覧表示させるには
どうすれば良いのでしょうか?
参考になるサイトの紹介でも何でも構いませんので、宜しくお願いします。
0929デフォルトの名無しさん
2007/08/19(日) 20:23:05SHBrowseForFolderっていうShellAPIを使う
SHBrowseForFolderにはフォルダを選択したアクション時に
コールバック関数を呼び出す事ができるので
そこで、フォルダの情報を取得させてツール?とやらに表示させればいい
0930デフォルトの名無しさん
2007/08/19(日) 20:28:43ありがとうございます。
これから調べて実装させたいと思います。
0931デフォルトの名無しさん
2007/08/20(月) 08:57:37上下反転だけできればよいです。
0932919
2007/08/20(月) 10:28:15俺の予想だと普通に組んで20ms程、コテコテに組んで半分くらいにまではなりそう
だけどどれくらいの早さが欲しいんだか
0933デフォルトの名無しさん
2007/08/20(月) 12:05:46CopyMemory
Bitbltの描画方法で行おうとしたら、CopyMemory時になぜかメモリ保護違反によるエラーが発生してしまいました。
あと、StretchDIBitsの処理より、
For i = 0 To lngWidth * lngHeight * 3 - 1
Dib(i) = tbl(Dib(i))
Next
↑この処理が一番時間が掛かっていました。(lngWidth=640, lngHeight=480)
どうすればよいでしょうか?
0934デフォルトの名無しさん
2007/08/20(月) 12:40:42GDI+なら鏡像反転なんて(理解するのが容易とは言わないが)簡単にコード書けるよ。
0935デフォルトの名無しさん
2007/08/20(月) 12:55:24.VB6からでもGDI+は使えるけどな
>>933
デバッガで試しているのなら
exeにしてから時間計るといい
それでも遅かったらご愁傷様
あと、時間計るのにGetTickCountとかを使っているのならば
PerformanceCounterとかを調べてみると正確な時間が計れるよ
0936935
2007/08/20(月) 13:01:24必要だったらVB6で使えるようにDLLを作ってあげようか?
0937892(933)
2007/08/20(月) 13:07:58僕に理解、、、できるのでしょうか。僕まだ厨房ですし。
>>936
マジですか!そんなに親切にしてくださってありがとうございます。。。・゚・(ノ∀`)・゚・。
0938935
2007/08/20(月) 14:32:20ttp://sund1.sakura.ne.jp/uploader/source/up10200.zip
パスは名前
今から会議なんでバグってたら後で直すわ
0939919
2007/08/20(月) 15:32:05vb6ならtimegettimeで十分と思うが。
0940919
2007/08/20(月) 15:37:39For 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
ではどう? 画像処理はこうやって色々考えるのが面白いんだが。早くならなかったらスマン
0942892(933)
2007/08/20(月) 21:47:30StretchDIBits自体は15ms程度でした。
配列に置き換える作業をコメントアウトしても、上下反転はされていました。
Bitbltの描画方法で行おうとしたら、CopyMemory時になぜかメモリ保護違反でエラーです(Lengthが大きすぎて落ちたわけでもなさそうです)
また、DIBに反映させるときにhMemDCにBitbltでフィールド全体をコピーする時点で84ms程度掛かっていました。
0943892(933)
2007/08/20(月) 21:48:390944デフォルトの名無しさん
2007/08/20(月) 22:06:17昔、Cで書いたときはかなり改善されたよ
0945デフォルトの名無しさん
2007/08/20(月) 22:09:58配列に置き換える作業っていうのはなにかしら意図してたんじゃないのか?
もしサンプルがそうやってるってのを入れているんだったらまったく意味無いぞ
全体を少し明るく(多分人間の視覚レベルではほとんど判断つかない)してるだけ
DIBSectionにイメージを保持すること自体が意味の無いことになってる
StretchDIBitsつかってるなら、まず引数のhdcで選択されている反転前のビットマップのハンドルから
GetBitmapBitsというAPIを使って、Dib配列上にコピーしてからStretchDIBitsを呼び出せばいいだけだ
0946940
2007/08/21(火) 01:52:01GetObject,SetBitmapBits,GetBitmapBits,Bitblt
で十分だけど、デバイス依存だしDIBと比べて早いのかどうか知らんし。
この方法で自分の前に書いたものだと640*640で20ms程の描写速度。
0947デフォルトの名無しさん
2007/08/21(火) 09:13:20親フォーム(form1)から子フォーム(form2)を呼び出す時に
Form2.Show vbModeless, Form1
Form1.Enabled = False
のようにして、子フォームから戻る際に
Form1.Show vbModeless
Form1.Enabled = True
Unload Me
としています。
ここで、子フォームで×(終了)ボタンをクリックすると
ボタンの処理を通らないので、画面が戻らないのです。
Finallyをどこかで書けば良いのでしょうけど、どこに書くかもわかりません。
どうすれば良いのでしょうか。宜しくご教示お願いします。
0948デフォルトの名無しさん
2007/08/21(火) 09:33:26' Form2
Private Sub Command1_Click()
Unload Me
End Sub
Private Sub Form_Unload(Cancel As Integer)
Form1.Show vbModeless
Form1.Enabled = True
End Sub
0949947
2007/08/21(火) 09:49:37Form_Unloadというのがあったのですね。
勉強になりました。どうもありがとうございました!
0950933
2007/08/21(火) 10:23:28ありがとうございます。
試験終わったら、またためさせてもらいます。
試験の存在をすっかり忘れていたもので・・・
0951デフォルトの名無しさん
2007/08/21(火) 12:42:12http://pc11.2ch.net/test/read.cgi/tech/1187667616/l50
0952デフォルトの名無しさん
2007/08/21(火) 15:50:080953デフォルトの名無しさん
2007/08/25(土) 10:48:210954デフォルトの名無しさん
2007/08/25(土) 11:08:470955デフォルトの名無しさん
2007/08/25(土) 11:57:37スクリプトを作ろうと思っています。
set oIE=Wscript.CreateObject("InternetExplorer.application")
oIE.navigate2("http://www.yahoo.co.jp/")
でIEを呼び出し、oIEに対して設定することは出来たのですが、
既に開かれているIEに対して設定するにはどのような方法がありますか?
タイトルやurlから識別出来ればいいのですが
0956デフォルトの名無しさん
2007/08/26(日) 09:09:12微妙にスレ違い。
0957デフォルトの名無しさん
2007/08/26(日) 10:41:150958デフォルトの名無しさん
2007/08/26(日) 20:49:590959デフォルトの名無しさん
2007/08/26(日) 20:52:450960デフォルトの名無しさん
2007/08/26(日) 20:55:22予め1から10までが要素に入った配列を作る。
これは順に並べていて構わない。
そして、それをランダムに並べ替える。
最後に表示させれば完成。
0961デフォルトの名無しさん
2007/08/26(日) 21:45:26配列をランダムに並び換えるのはどうやるんですか?
0962デフォルトの名無しさん
2007/08/26(日) 21:53:270963デフォルトの名無しさん
2007/08/26(日) 21:54:00ありがとうございました
0964デフォルトの名無しさん
2007/08/26(日) 21:58:230965デフォルトの名無しさん
2007/08/27(月) 23:31:480966デフォルトの名無しさん
2007/08/28(火) 02:47:20goto 3
0967965
2007/08/28(火) 03:59:510968デフォルトの名無しさん
2007/08/28(火) 07:19:11N88からVB6の間が非常に離れているような気がする
0969デフォルトの名無しさん
2007/08/28(火) 08:36:290970デフォルトの名無しさん
2007/08/28(火) 09:38:24それswapじゃね?
0971デフォルトの名無しさん
2007/08/28(火) 09:44:17「やりたい事」
リストボックス横にリストボックスの行に合わせて、
配列として持っている値を表示したい
(現在は、行を選択した際に、別のテキストに表示していますが、
個別でしか見れないので、全行を縦に見たいという事です)
「悩み」
・リストボックスに複数の列を持たせられない
・リストボックスをもう一つ作ると、スクロールバーの制御が気持ち悪い
「できそうな事?」
・ラベルやテキストでスクロールの現時点のポイントを見張り、
リストボックスに合わせて表示を変える(コーディングが面倒かも)
・リストボックスに表示されている名称に配列の数値を一緒に表示(でも不細工)
まだ模索段階で、どうすれば良いのか悩んでいます
もちろん、リストボックスじゃ無ければダメなわけではありません
ただ、既に作り込んでいるという事情はありますが。。。
アドバイスを宜しくお願いします
0972デフォルトの名無しさん
2007/08/28(火) 10:15:39よくわからんが、アプリケーションの追加と削除のリストみたいなのを作りたいって事?
0973デフォルトの名無しさん
2007/08/28(火) 10:17:34俺は
> ・リストボックスに表示されている名称に配列の数値を一緒に表示(でも不細工)
で対処した。
等幅フォント使えば、スペースで位置調整できるし。
0974デフォルトの名無しさん
2007/08/28(火) 10:34:58WinAPIを使ってもいいなら、LB_SETTABSTOPSについて調べてみて
あとはリストビューを使うとか
0975デフォルトの名無しさん
2007/08/28(火) 10:57:37リストビュー使った方がいいんじゃない
0976965
2007/08/28(火) 10:58:33サンクス。そうだったSwap命令だった
>>971
フォルダのような階層構造って事か?
学習も兼ねて自前で一つのリストボックスに表示をやってみれば?>>973の言うようにフォントを変える必要あるけど。
自分でやるなら、最初をコンボボックスで選択させて、リストボックスに配列(要素)を表示させる。
↑スリムで見やすいと思うが目的とは異なるな。
0977971
2007/08/28(火) 11:54:37はい。1列では無く、あんなイメージに列として表示したいのです〜
>>973
位置調整はできそうな感じはするのですが、ボックスって感じが無いのが残念です
>>974
「LB_SETTABSTOPS」は良さそうですね〜
もしリスト内に数値入れるのであれば、是非使わせて頂きたいと思います
あ〜〜〜「リストビュー」はもっと良さそうですね〜〜〜!
もう少し詳細に調査してみます
>>975
はい〜とっても良さそうですね!
ちょっと調べて実験もろもろやってきます〜
>>976
フォルダな感じでは無くて、ACCESSとかのデータベースな感じですね。
といっても、数値を入力するところまでは今回は求めていません。
コンボボックスを縦に大きく伸ばして貼り付けるって事でしょうか?
いけそうな気もしますし、ダメな気もしますw
書き忘れていましたが、行数は999まであります。
>>all
みなさんレスありがとうございます!感謝!
0978デフォルトの名無しさん
2007/08/28(火) 12:27:40同一名、同一構成のテーブルを
ADOを使って全部UNIONした結果を取得したいんだが、
簡単な方法はないだろうか。
0979デフォルトの名無しさん
2007/08/28(火) 13:10:35専用の作業ファイルを作るとかしないと・・・
逆に俺も知りたい・・・後学のため
0980デフォルトの名無しさん
2007/08/28(火) 13:27:19試してないけど
0981デフォルトの名無しさん
2007/08/28(火) 13:34:020982デフォルトの名無しさん
2007/08/28(火) 14:21:55Σ('A`) DAOならできんの?
0983デフォルトの名無しさん
2007/08/28(火) 15:04:50DAO3.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
0984978
2007/08/28(火) 15:13:18�d
ADOでもFROM TABLE_NAME IN MDB名で
SQL投げると外部MDBのデータを参照できるみたいだ。
中間データが見えにくいとデバッグしづらいので、
UNIONじゃなく作業テーブルに
INSERT INTO SELECT FROM INで
データ突っ込んじゃったけど。orz
0986デフォルトの名無しさん
2007/08/29(水) 00:25:410987デフォルトの名無しさん
2007/08/29(水) 00:53:040988デフォルトの名無しさん
2007/08/29(水) 00:58:120989デフォルトの名無しさん
2007/08/29(水) 01:07:530990デフォルトの名無しさん
2007/08/29(水) 03:25:230991デフォルトの名無しさん
2007/08/29(水) 06:11:410992デフォルトの名無しさん
2007/08/29(水) 08:17:430993デフォルトの名無しさん
2007/08/29(水) 08:19:582chの仕組みを知らないのかねこういう幼稚な馬鹿どもは
0994デフォルトの名無しさん
2007/08/29(水) 08:24:072chの慣習を知らないのかねこういう幼稚な馬鹿は
0995デフォルトの名無しさん
2007/08/29(水) 08:55:030996デフォルトの名無しさん
2007/08/29(水) 10:10:01sageてるし、釣りだろ
0997デフォルトの名無しさん
2007/08/29(水) 10:48:280998デフォルトの名無しさん
2007/08/29(水) 12:20:41「習慣」なら(そもそもそんな習慣存在しないと思うけど)
その正当性を問わず盲目的に従う原住民性が幼稚で馬鹿だと言っている。
お前は群れに従う鳩かw
テンプレに過去ログのリンクを張る意味が半減するだろうが。
0999デフォルトの名無しさん
2007/08/29(水) 12:23:03もしくはだれかがテキスト化してくれるのを待てってこと
1000デフォルトの名無しさん
2007/08/29(水) 12:28:5010011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。