VBプログラマ質問スレ(6.0以前) Part43
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2005/08/14(日) 02:04:37ここは Visual Basic 〜6.0 の質問スレです。
質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。
VB.NETは別物なので専門スレで、
VBS、APIの質問もそれぞれのスレで。(>>2 で紹介)
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/
※「まず自分で調べる」クセを身につけよう。
○質問者の心得
一.質問する前に過去ログにも目を通してみる。
二.質問する前に MSDN などで調べてみる。
三.VBScript はこのスレでOK。
四.インストーラーなどの質問もOK。
五.荒らしは相手しない。
六.VB.NETの話題はできるだけひかえる。
七.質問は第三者にもわかりやすいよう簡潔かつ具体的に。
前スレ Part42 http://pc8.2ch.net/test/read.cgi/tech/1116924129/
0002デフォルトの名無しさん
2005/08/14(日) 02:04:52○回答者の心得
一.答えられない質問は無駄に罵倒せずスルー。
二.代用法を強制しない。
三.回答する上で必須ではない情報をむやみに聞き返さない。
四.荒らしは相手しない。
五.VB情報募集中。
六.VB.NETの話題はできるだけひかえる。
七.回答は質問者が理解できるよう具体的に。
○関連スレッド
VB.NET質問スレ (Part12)
http://pc8.2ch.net/test/read.cgi/tech/1121600038/
VisualBasic6.0 対 VisualBasic .NET 2003
http://pc8.2ch.net/test/read.cgi/tech/1116555483/
VBAについて Ver.4.0
http://pc8.2ch.net/test/read.cgi/tech/1105108229/
API関連の質問はこちらへ
Win32API質問箱 Build34
http://pc8.2ch.net/test/read.cgi/tech/1122723009/
0003デフォルトの名無しさん
2005/08/14(日) 02:05:00○過去ログ 1〜20
Part 1 http://piza2.2ch.net/tech/kako/968/968328471.html
Part 2 http://piza2.2ch.net/tech/kako/990/990793224.html
Part 3 http://piza2.2ch.net/tech/kako/1000/10005/1000523122.html
Part 4 http://pc.2ch.net/tech/kako/1006/10069/1006922992.html
Part 5 http://pc.2ch.net/tech/kako/1010/10106/1010624646.html
Part 6 http://pc.2ch.net/tech/kako/1013/10138/1013844542.html
Part 7 http://pc.2ch.net/tech/kako/1015/10158/1015836357.html
Part 8 http://pc.2ch.net/tech/kako/1018/10187/1018794901.html
Part 9 http://pc.2ch.net/tech/kako/1020/10208/1020830472.html
Part10 http://pc.2ch.net/tech/kako/1022/10221/1022127528.html
Part11 http://pc.2ch.net/tech/kako/1024/10243/1024380249.html
Part12 http://pc3.2ch.net/tech/kako/1026/10266/1026642565.html
Part13 http://pc3.2ch.net/tech/kako/1029/10292/1029241786.html
Part14 http://pc3.2ch.net/tech/kako/1030/10309/1030947162.html
Part15 http://pc3.2ch.net/tech/kako/1032/10327/1032706491.html
Part16 http://pc3.2ch.net/tech/kako/1034/10343/1034302532.html
Part17 http://pc3.2ch.net/tech/kako/1036/10361/1036154952.html
Part18 http://pc3.2ch.net/tech/kako/1038/10381/1038103769.html
Part19 http://pc3.2ch.net/tech/kako/1039/10398/1039859691.html
Part20 http://pc2.2ch.net/tech/kako/1041/10418/1041879465.html
0004デフォルトの名無しさん
2005/08/14(日) 02:05:10○過去ログ 21〜42
Part21 http://pc2.2ch.net/tech/kako/1044/10440/1044028945.html
Part22 http://pc2.2ch.net/tech/kako/1046/10463/1046354784.html
Part23 http://pc2.2ch.net/tech/kako/1047/10477/1047743187.html
Part24 http://pc2.2ch.net/tech/kako/1050/10501/1050151126.html
Part25 http://pc2.2ch.net/tech/kako/1052/10526/1052627913.html
Part26 http://pc2.2ch.net/tech/kako/1055/10551/1055145106.html
Part27 http://pc2.2ch.net/tech/kako/1058/10586/1058674927.html
Part28 http://pc2.2ch.net/tech/kako/1061/10612/1061296197.html
Part29 http://pc2.2ch.net/tech/kako/1065/10654/1065446334.html
Part30 http://pc2.2ch.net/tech/kako/1069/10691/1069160036.html
Part31 http://pc2.2ch.net/tech/kako/1073/10737/1073732636.html
Part33 http://pc5.2ch.net/tech/kako/1077/10772/1077216109.html
Part33 http://pc5.2ch.net/tech/kako/1080/10806/1080606445.html
Part34 http://pc5.2ch.net/tech/kako/1084/10845/1084544243.html
Part35 http://pc5.2ch.net/tech/kako/1087/10875/1087519251.html
Part36 http://pc5.2ch.net/tech/kako/1090/10902/1090286450.html
Part37 http://pc5.2ch.net/tech/kako/1092/10929/1092906058.html
Part38 http://pc5.2ch.net/tech/kako/1095/10956/1095673000.html
Part39 http://pc5.2ch.net/tech/kako/1099/10997/1099737063.html
Part39 http://pc5.2ch.net/tech/kako/1103/11030/1103026199.html
Part40 http://pc8.2ch.net/tech/kako/1106/11067/1106748775.html
Part41 http://pc8.2ch.net/tech/kako/1112/11124/1112414085.html
Part42 http://pc8.2ch.net/test/read.cgi/tech/1116924129/
0005デフォルトの名無しさん
2005/08/14(日) 09:04:25Part43 http://pc2.2ch.net/tech/kako/1044/10440/1044028945.html
Part44 http://pc2.2ch.net/tech/kako/1046/10463/1046354784.html
Part45 http://pc2.2ch.net/tech/kako/1047/10477/1047743187.html
Part46 http://pc2.2ch.net/tech/kako/1050/10501/1050151126.html
Part47 http://pc2.2ch.net/tech/kako/1052/10526/1052627913.html
Part48 http://pc2.2ch.net/tech/kako/1055/10551/1055145106.html
Part49 http://pc2.2ch.net/tech/kako/1058/10586/1058674927.html
Part50 http://pc2.2ch.net/tech/kako/1061/10612/1061296197.html
Part51 http://pc2.2ch.net/tech/kako/1065/10654/1065446334.html
Part52 http://pc2.2ch.net/tech/kako/1069/10691/1069160036.html
Part53 http://pc2.2ch.net/tech/kako/1073/10737/1073732636.html
Part54 http://pc5.2ch.net/tech/kako/1077/10772/1077216109.html
Part55 http://pc5.2ch.net/tech/kako/1080/10806/1080606445.html
Part56 http://pc5.2ch.net/tech/kako/1084/10845/1084544243.html
Part57 ttp://pc5.2ch.net/tech/kako/1087/10875/1087519251.html
Part58 ttp://pc5.2ch.net/tech/kako/1090/10902/1090286450.html
Part59 ttp://pc5.2ch.net/tech/kako/1092/10929/1092906058.html
Part60 ttp://pc5.2ch.net/tech/kako/1095/10956/1095673000.html
Part61 ttp://pc5.2ch.net/tech/kako/1099/10997/1099737063.html
Part62 ttp://pc5.2ch.net/tech/kako/1103/11030/1103026199.html
Part63 ttp://pc8.2ch.net/tech/kako/1106/11067/1106748775.html
Part64 ttp://pc8.2ch.net/tech/kako/1112/11124/1112414085.html
0006デフォルトの名無しさん
2005/08/14(日) 13:23:14デスクトップ右クリックメニューの「等間隔に整列」を
ロジックで実現する方法を教えてください。
よろしくお願いいたします。
0007デフォルトの名無しさん
2005/08/14(日) 20:04:11たて幅を設定できないものでしょうか?
(セルのたて幅とも言えるかもしれません)
ListView内の一行を選択する形で作ると、
どうしても各行が細いのが気になってしまって……。
0008デフォルトの名無しさん
2005/08/15(月) 13:00:550009デフォルトの名無しさん
2005/08/15(月) 14:18:55>>8
たぶん
SetScrollInfoとGetScrollInfoを使えばできると思います。
0010デフォルトの名無しさん
2005/08/15(月) 15:41:39「リストビュー メッセージ 高さ」でヤフるんだ。
1件目に出てくるぞ。
・・・望みの高さのイメージリストを付けてやれとさ。
あるいは、単なる一覧としてならMSFlexGridで代わりにすれば?
00118
2005/08/15(月) 16:42:34動作させることができませんでした。
教えて君で申し訳ないんですがコントロールの場合どうやるのか教えていただけませぬか?
0012デフォルトの名無しさん
2005/08/15(月) 17:01:19確かVBのTextBoxはスクロールに対してVB自身が独自の描画をしているから
SetScrollInfo・GetScrollInfoでスクロールバーのつまみは動くけど
文章自体はスクロール出来ないんだよな…
0013デフォルトの名無しさん
2005/08/15(月) 17:01:40最適化オプションの『Pentium Proへの最適化』という項目は、Pentium Proへの対応であってPentium 4とかには
意味なしオプションなんですか?
そもそもなんであんなマイナーなCPUへ最適化しようとしたのかの背景も知りたいのですが・・・。
それ以前に、P-Codeでコンパイルした方が速い箇所もあるのは俺の作り方がへたくそという事なのでしょうか。
ちなみに、自分のソフトはAPIを使った方が速い部分については、結構な頻度でAPI使ってて、VBらしさという点ではVBらしくないです。
ご回答よろしくお願いします。
0014デフォルトの名無しさん
2005/08/15(月) 17:04:27SelStartである程度は動かせるべ?
SendKeysもあるし。
0015デフォルトの名無しさん
2005/08/15(月) 17:13:00作ってみました。
これでスクロールバーを縦に動かすことはできますが
>>13さんが言うようにテキストを再描画できません。
SendMessageでやればできたような気もしなくも無い。
ちょっと考えて見ます。
-------------ソース---------------
フォームにtxtっていうテキストボックスとボタンを一つ貼り付けてね。
0016デフォルトの名無しさん
2005/08/15(月) 17:13:38Private Declare Function SetScrollInfo Lib "user32" _
(ByVal hWnd As Long, ByVal n As Long, lpcScrollInfo As SCROLLINFO, ByVal bool As Boolean) As Long
Private Declare Function GetScrollInfo Lib "user32" _
(ByVal hWnd As Long, ByVal n As Long, lpScrollInfo As SCROLLINFO) As Long
Private Type SCROLLINFO
cbSize As Long
fMask As Long
nMin As Long
nMax As Long
nPage As Long
nPos As Long
nTrackPos As Long
End Type
Private Const SB_HORZ As Long = 0
Private Const SB_VERT As Long = 1
Private Const SB_CTL As Long = 2
Private Const SB_BOTH As Long = 3
Private Const SIF_RANGE As Long = &H1
Private Const SIF_PAGE As Long = &H2
Private Const SIF_POS As Long = &H4
Private Const SIF_DISABLENOSCROLL As Long = &H8
Private Const SIF_TRACKPOS As Long = &H10
Private Const SIF_ALL As Long = (SIF_RANGE Or SIF_PAGE Or SIF_POS Or SIF_TRACKPOS)
0017デフォルトの名無しさん
2005/08/15(月) 17:15:46Dim tScrl As SCROLLINFO
With tScrl
.cbSize = Len(tScrl)
.fMask = SIF_POS
End With
Call GetScrollInfo(txt.hWnd, SB_VERT, tScrl)
With tScrl
.cbSize = Len(tScrl)
.fMask = SIF_POS
.nMax = 100
.nMin = 0
.nPage = 0
.nPos = .nPos + 10
.nTrackPos = 0
End With
Call SetScrollInfo(txt.hWnd, SB_VERT, tScrl, True)
End Sub
Private Sub Form_Load()
Dim i As Integer
For i = 0 To 100
txt.Text = txt.Text & Chr(50 + i) & vbCrLf
Next
End Sub
'参考
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpwinui/html/_win32_setscrollinfo.asp
連投すまん。入らなかった。
0018デフォルトの名無しさん
2005/08/15(月) 17:34:22本当にありがとうございます。
やっと意味が理解できましたorzフォームのハンドルずっと返してた・・・
0019デフォルトの名無しさん
2005/08/15(月) 18:34:00出来ました!どうもありがとうございます。助かりました。
……自分はもっと検索方法を工夫しないといけないようですorz
MSFlexGridも初めて知りましたが、こっちの方が使いやすそうですね……
0020デフォルトの名無しさん
2005/08/16(火) 01:47:32VBの標準関数(特に文字関係)呼びまくってたり "AAAA" & "BBBB" みたいに文字結合しまくってるとP-Codeの方が速くなるらしい。
逆に数値演算やWIN32APIが多いとネイティブの方が速いらしい。
まぁあくまでも目安で
002113
2005/08/16(火) 02:00:04回答ありがとうございます。
やっぱり、P-Codeの方が早くなる場合もあるんですね。
timeGetTimeで計測したんですが、IDEが一番早くて、次にP-Codeのexe、ネイティブの『実行速度最適化』のexe
という順序でスピードが出てたんで、最初錯覚かと思ったんですよね〜。
VC++なんかだと、モジュールごとに最適化が掛けられるのに、VBはなんでフォームごとに最適化できないかなー?同じ会社の製品なのにー、
とか考えてしまいますた。
0022デフォルトの名無しさん
2005/08/16(火) 18:05:11PentiumProに最適化したら、PentiumIIもIIIもP6アーキテクチャ
なんだから有効だと思われ。以前PenIIマシンで最適化オンにしたら
文字列処理が若干速くなった。
NetBurstはどうだろうね。たぶん効果あると思うけど。
0023デフォルトの名無しさん
2005/08/16(火) 18:10:39str$()とstr()
のような$あり、なしではどう違うんですか?
$の意味がわからないんですが。
002423
2005/08/16(火) 18:17:03初心者スレ逝きます。
0025デフォルトの名無しさん
2005/08/16(火) 20:32:56いいよ、ここで。戻り値の型が$ありだとStringでなしだとVariant。
0027デフォルトの名無しさん
2005/08/17(水) 05:14:16プルダウンのリストに含まれるFontの種類などは、どこから持ってくるのでしょうか?
0028デフォルトの名無しさん
2005/08/17(水) 05:32:37MSDN読めば一発でわかるよ
0029デフォルトの名無しさん
2005/08/17(水) 07:33:23では読んだ結果を教えてください。
0030デフォルトの名無しさん
2005/08/17(水) 07:50:360031デフォルトの名無しさん
2005/08/17(水) 09:49:05ヘルプ開いたら「フォント 一覧 取得」で検索しろ。
Fonts プロパティというトピックがあるから嫁。
「使用例」「対象」も読め。
ついでにStr()にNullを渡すとNullが返ってくるが
Str$()にNullを渡すとエラーになる。
あと質問を出汁にして罵りあって遊ぶな。
0032デフォルトの名無しさん
2005/08/17(水) 10:13:54型宣言文字っていうものだよ。
0033デフォルトの名無しさん
2005/08/17(水) 10:49:13もしかして分からないんじゃ?
0034デフォルトの名無しさん
2005/08/17(水) 10:58:180035デフォルトの名無しさん
2005/08/17(水) 11:33:30DLLは一般的な名称、だいなみっくりんくらいぶらりー。
文字通り動的結合可能なライブラリ。
OCXはMSの固有名詞、OLEカスタムコントロールのこと。
0036デフォルトの名無しさん
2005/08/17(水) 12:12:23ちなみに、>>29は私ではありません。
0037デフォルトの名無しさん
2005/08/17(水) 12:32:44どう使い分けるものなのでしょうか。
0038デフォルトの名無しさん
2005/08/17(水) 14:48:35使い分けじゃない。概念としてはDLLっていう大きな括りに、OCXは内包される。
そもそも、説明したDLLとOCXの意味って自分で調べた?
003937
2005/08/17(水) 15:21:110040他の方
2005/08/17(水) 15:25:10使い分けじゃない。概念としてはDLLっていう大きな括りに、OCXは内包される。
そもそも、説明したDLLとOCXの意味って自分で調べた?
0041デフォルトの名無しさん
2005/08/17(水) 15:25:13俺はよく知らないけど、使い分けじゃないならなんで別々にあるの?
0042デフォルトの名無しさん
2005/08/17(水) 15:26:05き、きも・・・プログラム板にもこういう人いるんだ。
0043デフォルトの名無しさん
2005/08/17(水) 15:36:36DLLはコードで宣言して使う。
VB6.0ならこう覚えておけば問題ない。
0044デフォルトの名無しさん
2005/08/17(水) 15:46:58ActiveXはCOMを元に生成されている。COMとはオブジェクトに特定のインタフェースを持たせて仕事をさせる
(VBのクラスみたいな感じ。実際VBのクラスもCOMに基づいて生成されるって聞いたことがある)。
ActiveXはEXEの外部から割り込んでくるオブジェクト。
DLLはEXEがロードされた時、同じ空間上に関数が置かれるからEXEの一部として動く。
DLLとOCXを使い分ける意味は ActiveX について調べてね。
って氏んだじーちゃんが言ってた
0045デフォルトの名無しさん
2005/08/17(水) 17:11:20コントロール「に」?
0046デフォルトの名無しさん
2005/08/17(水) 17:54:42とりあえず、>>38 <> >>40だから。
で、OCXってのはDLLの一形態ってのは理解したんかい?
0047デフォルトの名無しさん
2005/08/17(水) 18:46:53はいはい
0048デフォルトの名無しさん
2005/08/17(水) 23:22:56数十万Rowのデータを高速に参照できるようにするために、
仮想ListViewを使いたいのですが、Googleで死ぬほど検索しても
VB6でできる方法を解説したサイトが見つかりませんでした。
MFCならサンプルコードもたくさんあり凄く簡単にできそうなんですが、
VB6で開発中のプロジェクトなので。。。
一応ヒントらしいことが書いてあるサイトは見つけたのですが、
ListViewコントロールのWM_CREATEをフックして、それのwindowスタイルを
差し替えてやるとしか書かれておらず、具体的にどうやるのか見当も付きません。
http://www.mvps.org/vbvision/Sample_Projects.htm#Virtual_ListView_Demo
知っている方は教えてくださいませ。
0049デフォルトの名無しさん
2005/08/17(水) 23:37:14SetWindowLong
WM_NOTIFYフック
0050デフォルトの名無しさん
2005/08/18(木) 00:10:00ありがとうございます。しかし、ヒントが難しいです。。
GetWindowLongでウインドウスタイルの現在値を取得して、
LVS_OWNERDATAとORしたものをSetWindowLongで設定するんですよね?
これはListViewを貼り付けたFormのForm_Loadのタイミングでいいんでしょうか?
またWM_NOTIFYをフックするのはLVN_GETDISPINFOのメッセージを
捉えるためだと思いますが、どのように値を設定してやればいいか
解説していただけるとありがたいです。
サイトの紹介でも助かります。
0051デフォルトの名無しさん
2005/08/18(木) 00:23:22Cで組む場合と同じように設定してやればいい。
※ListViewのサブクラス化を忘れないように
0052デフォルトの名無しさん
2005/08/18(木) 00:27:44あ、そうですね。MSDNのCのサンプルソースを調べてみます。
サブクラス化した中でWM_NOTIFYをキャッチするんですね。
分かりました。ご親切にありがとうございました。
0053デフォルトの名無しさん
2005/08/18(木) 06:30:39バカか。人に質問するのに無礼すぎ。
0054デフォルトの名無しさん
2005/08/18(木) 08:05:18・exeと同一ディレクトリ
・%windir%\system32
の2つ存在する場合に、どちらを使用するのでしょうか。
また、2つのファイルに日付・製品バージョン等の違いがある場合に、
使用したDLLの情報を取得する手段はありますでしょうか。
よろしくお願いします。
0055デフォルトの名無しさん
2005/08/18(木) 09:14:37いくらでもある。
以上。
0056デフォルトの名無しさん
2005/08/18(木) 09:27:53つうか、その手の微妙な仕様の確認は絶対自分で試せよ。
仕様がどうっていうのを知ったところで、試さないでその状態を信じる人は信じられない。
DLLをつくって、ちょこっと変えて試せば10分作業だと思うが。
0057デフォルトの名無しさん
2005/08/18(木) 09:28:38つまりPictureBoxの上に、直接テキストを入力したように見せたいのですが・・
0058デフォルトの名無しさん
2005/08/18(木) 09:39:08言えてる。
0059デフォルトの名無しさん
2005/08/18(木) 09:39:5810分で試した結果を報告してください。
0060デフォルトの名無しさん
2005/08/18(木) 09:40:28その質問に対しては「あります」という回答しかない。
あと「・・」で終わる質問は無礼なのでやめるように。
0061デフォルトの名無しさん
2005/08/18(木) 09:51:02VB6から、Excelを開いて、CSVファイルを読み込みたいのですが、
以下のように記述してもうまく読み込んでくれません。
何か、問題があるのでしょうか?
Set XlsBook = CreateObject("Excel.Sheet")
Set XlsWork = XlsBook.Application.Worksheets("Sheet1")
XlsBook.Application.Visible = False
With XlsWork.QueryTables.Add(Connection:="TEXT;C:\test.csv", _
Destination:=Range("A1"))
.Name = "テスト"
End With
ちなみに、With 〜 から、エラー処理へ飛んでしまい、その段階で「Range」にマウスポインタをあわせると、
「'Range' メソッドは失敗しました: '_Global' オブジェクト」と出ています。
なんか非常に基本的な事なんだと思いますが、VB触って3日目なもので………どなたかご指導をお願いします。
0062デフォルトの名無しさん
2005/08/18(木) 10:28:47それを基本と侮るんじゃない!
0063デフォルトの名無しさん
2005/08/18(木) 11:39:450064デフォルトの名無しさん
2005/08/18(木) 11:45:52↑
こういう役所の万年係長みたいな口の利き方する奴ってどこにでもいるよな( ^Д^)
0065デフォルトの名無しさん
2005/08/18(木) 11:49:15なぜ自演を?
0066デフォルトの名無しさん
2005/08/18(木) 11:54:0153=55=60=63=64って事?
0067デフォルトの名無しさん
2005/08/18(木) 12:33:15DLLは
・exeと同一ディレクトリ
・%windir%\system32
・ルートディレクトリ
・パスが通ったディレクトリ
の順に検索して一番最初に見つかったDLLを選択すんの わかった?
MSDNの載ってるよ。
0068デフォルトの名無しさん
2005/08/18(木) 12:39:13違いますよ。
0069デフォルトの名無しさん
2005/08/18(木) 12:39:4550点
0070デフォルトの名無しさん
2005/08/18(木) 12:52:57DLLを直す、DLLを使わない以外に回避策はありますか?
007170
2005/08/18(木) 12:53:270072デフォルトの名無しさん
2005/08/18(木) 13:18:01・そのままつかっちまう。
0073デフォルトの名無しさん
2005/08/18(木) 13:22:04>>72は面白くないからギャグではないのだと思うけど、
これは許す?
007470
2005/08/18(木) 13:22:59この手の書き込みをいくらでもされてしまうと思ったので>>71を
書いたのですが・・・
はぁ、どっと疲れが出ました。他の方はいかがでしょうか。
0075デフォルトの名無しさん
2005/08/18(木) 13:28:38ヘルパプロセスを起動してそこでDLLを使う
0076デフォルトの名無しさん
2005/08/18(木) 13:38:29まあ1つのアイディアとしては
0077デフォルトの名無しさん
2005/08/18(木) 14:05:10・メモリ解放ソフトを常駐させておく。
・定期的にOSをリブートする。
・メモリリークしな様なDLLを自分で作る。
0078デフォルトの名無しさん
2005/08/18(木) 14:11:210079デフォルトの名無しさん
2005/08/18(木) 16:55:19うまいアイディアが浮かばないよ(´・ω・`)
0080デフォルトの名無しさん
2005/08/18(木) 17:01:38APIでやる、BitBltだっけ?StretchBltだったかそんな奴。
0081デフォルトの名無しさん
2005/08/18(木) 17:02:260082デフォルトの名無しさん
2005/08/18(木) 17:11:14無意味。
008479
2005/08/18(木) 17:39:34結局、resizeイベントが起こったときにもう一度描写する関数を呼び出させて何とかさせますた
( ´ー`)y-~~
0085デフォルトの名無しさん
2005/08/18(木) 17:48:35関数があれば教えてください。 お願いします。
0086デフォルトの名無しさん
2005/08/18(木) 17:56:53CIntとか?
0087デフォルトの名無しさん
2005/08/18(木) 18:01:05"\1,000" * 1
Dim hoge As Long
hoge ="\1,000"
数値(整数・実数)型に変換、数値型変数に代入、算術演算
どれをやっても1000になる。
これがVBの便利さであり、遅さの原因でもある。
0089デフォルトの名無しさん
2005/08/18(木) 18:38:57理由は?
0090デフォルトの名無しさん
2005/08/18(木) 18:40:00\1,000だと変換できて\10,000だと変換できない方法を
混ぜるなんて意地悪だねぇ。
0091デフォルトの名無しさん
2005/08/18(木) 20:25:23メモリ解放ソフトは、メモリリークを解決する物じゃない。
あれは単に物理メモリのキャッシュを強制的にスワップファイルに
追い出すことしかしない。
メモリが極端に少ない場合を除いてパフォーマンスの低下につながる。
0092デフォルトの名無しさん
2005/08/18(木) 20:33:16メモリリークを解決できると思うのか、
その根拠を述べて欲しい物だけどな。
名前に騙されているだけ。
0093デフォルトの名無しさん
2005/08/18(木) 21:02:53使用後にどうなっても知らんが
0094デフォルトの名無しさん
2005/08/18(木) 21:11:16セクタに直接書き込んでディスクを強制解放するソフトを作ってやるぞ。
使用後にどうなっても知らんがw
0095デフォルトの名無しさん
2005/08/18(木) 21:52:090096デフォルトの名無しさん
2005/08/18(木) 22:08:140097デフォルトの名無しさん
2005/08/18(木) 22:30:53何も言ってないのに。
0098デフォルトの名無しさん
2005/08/18(木) 22:43:26そのまま複数個同時に再生する方法はないでしょうか。
0099デフォルトの名無しさん
2005/08/18(木) 22:53:04このレベルの低さが2ちゃんなんだよな。なんか安心するよ。
0100デフォルトの名無しさん
2005/08/18(木) 22:54:12ある。
回答終わり
0101デフォルトの名無しさん
2005/08/18(木) 23:06:140102デフォルトの名無しさん
2005/08/19(金) 06:29:47↑
このスレに常駐しているアラシ
0103デフォルトの名無しさん
2005/08/19(金) 07:00:402つしか合っていない・・・
0104デフォルトの名無しさん
2005/08/19(金) 11:20:26「俺のメガネどこに行ったか知らない?」
「知ってる」みたいな。だったらすごいどころか面白いな。
0105デフォルトの名無しさん
2005/08/19(金) 11:26:18なに粘着してるの?よそのスレにでも行ってほしんだけど。
0106デフォルトの名無しさん
2005/08/19(金) 11:27:38>こいつ日常会話でもこんな調子なのかね。
2ちゃんの書き込みから日常を想像できるところがすごすぎる。
>だったらすごいどころか面白いな。
全然面白くないことを面白いと堂々と書き込めてしまうところがすごすぎる。
0107デフォルトの名無しさん
2005/08/19(金) 11:28:400108デフォルトの名無しさん
2005/08/19(金) 11:37:18まぁそれはそうだが。早くやめてほしいよね。
0109デフォルトの名無しさん
2005/08/19(金) 14:18:31本当のボクは違うと言いたいの?( ^Д^)
0110デフォルトの名無しさん
2005/08/19(金) 14:24:23本人は日常生活と違うと思ってるかもしれないが、周りは気付いてるよ。そういう奴だって。
0111デフォルトの名無しさん
2005/08/19(金) 16:05:15誰か同意してくれるといいですね。
得意の自演をされてはいかがですか?
0112デフォルトの名無しさん
2005/08/20(土) 01:52:31このcountの値を保持するためにはformのグローバル関数にするしか方法は無いんでしょうか?
0113デフォルトの名無しさん
2005/08/20(土) 02:11:220114デフォルトの名無しさん
2005/08/20(土) 02:11:45formのグローバル関数?
0115デフォルトの名無しさん
2005/08/20(土) 14:29:54助かりましたm(_ _)m
0116デフォルトの名無しさん
2005/08/20(土) 15:53:46あるかどうかだけ聞いてんのに、いろいろべらべらと語りだす奴もキモス&ウザスな罠。
0117デフォルトの名無しさん
2005/08/20(土) 16:02:18段々過疎って来たし。
0118デフォルトの名無しさん
2005/08/20(土) 22:04:14ある大きさより小さくするのは認めないってことはできるのかな?
フォームの大きさを変えさせないってのはあったんだけどな〜
0119デフォルトの名無しさん
2005/08/20(土) 22:08:49最小値より小さくなったら、最小値に戻すだけ。
ただし、ちらちらするのが弱点。
高度なやり方は知らん。
0120デフォルトの名無しさん
2005/08/20(土) 22:26:33ttp://vbvbvb.com/jp/gtips/0801/gSetWindowLongGwlWndProcWmGetMinMaxInfoPtMinTrackSizePtMaxTrackSize.html
0121デフォルトの名無しさん
2005/08/20(土) 22:30:090123デフォルトの名無しさん
2005/08/21(日) 14:47:09以下のようだと書き出されたファイルの頭数バイトに余分な00データまで書き込まれてしまうんですけど
なぜでしょうか?どなたかお願いします。
Open FileName For Binary As #1
Put #1, UBound(ByteArray), ByteArray
Close #1
0124デフォルトの名無しさん
2005/08/21(日) 14:49:53UBoundをMSDNで調べればすぐ分かると思いますよ。
0125デフォルトの名無しさん
2005/08/21(日) 15:01:53PutをMSDNで調べればすぐ分かると思いますよ。
0126デフォルトの名無しさん
2005/08/21(日) 15:11:55>>125
ありがとうございました解決しました。
Putの使い方を理解できていませんでした…
0127124
2005/08/21(日) 15:36:500128デフォルトの名無しさん
2005/08/22(月) 00:08:22段々横に長くなってしまったので解決したいです。
0129デフォルトの名無しさん
2005/08/22(月) 00:12:36Debug.Print _
"あいうえお" & _
"かきくけこ"
0130デフォルトの名無しさん
2005/08/22(月) 00:39:50文字列の場合は二つのテキストに分けて & _ と繋げればいいんですね。
どうもありがとうございます。
0131デフォルトの名無しさん
2005/08/22(月) 09:59:56ん?俺の環境だと"\10,000"に変えて試しても>>85が期待した結果が
得られるみたいだけど。
俺勘違いしてる?
0132デフォルトの名無しさん
2005/08/22(月) 11:39:53多分ね、そのあたりの挙動って、コンパネの地域設定の指定とOSのバージョンに関わると思う。
依存するような暗黙変換をするならば、その辺りのことって国際化対応に書いてあるかな?
0133質問VS.NET
2005/08/22(月) 12:26:54Public WithEvents Label1 As System.Web.UI.WebControls.Label
別モジュール(Module1)に関数(sub kan1)を作りました。その中で
Dim refForm1 As New プロジェクト名.WebForm1
というインスタンスを作りました。
で、refForm1.Label1.Text = "1"
とやると「オブジェクト参照がオブジェクトインスタンスに設定されていません」
と出ます。refForm1.Label1 ← ここでNothingになります。
なぜですか?
0134デフォルトの名無しさん
2005/08/22(月) 12:40:34スレ違いだよ。
VB.NET質問スレ (Part12)
http://pc8.2ch.net/test/read.cgi/tech/1121600038/
0135133
2005/08/22(月) 12:58:070136デフォルトの名無しさん
2005/08/22(月) 14:30:51漢字のフリガナを取得してるのですが、
そのフリガナを元の文字単位で分割するにはどうすれば良いでしょうか?
例えば"質問者の心得"だと"シツモンシャノココロエ"を返しますが
これを「シツ, モン, シャ, ノ, ココロ, エ」と分割したいのです。
1文字ずつGetPhoneticメソッドに掛けると、文として読んだ場合のフリガナが
候補の中に出ない物もあるので、1文字単位で変換して、
文で返したフリガナと一致させる方法は無理でした。
詳しい方、どうかお知恵を貸してください。
0137デフォルトの名無しさん
2005/08/22(月) 14:46:27環境はXP Pro SP2/VB6.0 SP6です
MultiSelect(アイテムの複数選択)をTrueにした状態で
アイテムが無い空白部分を始点にドラッグして、点線の枠で囲ってアイテムを囲んでマウスボタンを離すと
枠に囲まれていたアイテムと関係のないフォーカスの当っていたアイテムが選択されてしまいます
これを、ドラッグで囲ったアイテムだけが選択されるようにするには、どうすれば良いのでしょうか?
よろしくお願いします
0138137
2005/08/22(月) 15:14:47ListViewのアイテムが無い空白部分でクリック/ダブルクリックすると
フォーカスのあるアイテムが選択されたり解除されたりするのですが
空白をダブルクリックされても、フォーカスの当ったアイテムが選択されないようにするには、どうすればよいでしょうか?
よろしくお願いします
0139デフォルトの名無しさん
2005/08/22(月) 15:54:10kill ステートメントだと、ファイルがあってもファイルが見つからないって言われてしまうぞ。
おかしいぞ。
0140デフォルトの名無しさん
2005/08/22(月) 15:56:49Set/GetAttr
0142デフォルトの名無しさん
2005/08/22(月) 21:06:010143デフォルトの名無しさん
2005/08/22(月) 21:47:14関係ないと思うよ。ただの釣りだから。
0144デフォルトの名無しさん
2005/08/23(火) 10:18:41Common Control 5を使う・・・って言うんじゃだめか。だめだな。
0145デフォルトの名無しさん
2005/08/23(火) 13:39:592つのexe、[A.exe]と[B.exe]があって、AからBを起動させます。
・Bが起動したときはAの画面は表示されたまましかし触れず
・Bを閉じたとき、Bで選択した値をAの画面に反映させる
こういう動作を実現したいのですが、何かいい方法はありますでしょうか
(exeをひとつのプロジェクトに纏めることは、都合上できません)
一番簡単なのは、B起動時にAの表示を諦めて非表示にして
値はtmpファイルでも作って受け渡す方法だと思いますが、
これは最終手段にしたいです
検索すると、CreateProcessやSetWindowLongを使った方法などが散見されましたが、
試してみるもいまいち理解がついていかず、まだ正常に動かせていません
良い参考になるページなどありましたら、紹介していただけませんでしょうか
よろしくお願いします
0146デフォルトの名無しさん
2005/08/23(火) 13:54:37DDE使うのが一番簡単だろ。
具体的な方法は自分で調べろ。
0147デフォルトの名無しさん
2005/08/23(火) 14:31:21B起動中はA触れず。。。だけなら
"Windows Script Host Object Model"を参照設定して
WshShellクラスのRun()メソッドでできるけど、値の受け渡しはなあ。
BをActiveX EXEにするのがよいと思われ。同期しながら
データのやり取り自由自在。作り方は調べろ。
0148デフォルトの名無しさん
2005/08/23(火) 16:17:44プロセス間の情報共有は色々あるけど、死に様を残すだけならファイルでよいと思うけどね。
AがBを起動する前に、遺書は削除。
Bは自分が死ぬときに遺書をしたためる。
AはBの終了待機をしていて、死亡を確認したら遺書を見る。
それほどおかしい処理じゃないよ。
終了待機はShellの戻り値を監視する方法のサンプルが死ぬほど落ちてるからそれを参照。
0149137
2005/08/23(火) 16:24:47バージョン古いのは望みどおりの挙動してたんですね
自分では思いもよらぬ解決法で目からウロコでした
現状、すでにサブクラス化してサブアイテム編集などをつけたりしてコードが満載なので
Common Control 5でも機能を満たせるか、コード書き換えてみないと分からないですけど
もしかすると、うまく行くかもしれないです
結果は後日報告します、ありがとうございました
0150145
2005/08/23(火) 17:23:25>>147 ActiveX EXE
DDEを調べていたら、OLEオートメーションという方法も出てきました
これからひととおり調べて試して、一番理想的なやり方を検証しようと思います
Web上にTipsも多そうなので、とても助かります
>>148
それが最終手段でした
今回、こういう機能の開発を初めて手掛けることになったので、
レベルアップも兼ねてやってみたいと思っています
ありがとうございました
0151デフォルトの名無しさん
2005/08/23(火) 17:33:42ただ、その渡す情報の量、重要度などは考えて使う技術を決めたほうが良いよ。
リアルタイム性不要であれば、わざわざプロセス間通信なんて不要には思える。
リスキーな割にはやりたいことは文字を数文字渡すだけってのでは。
あと、DDEは死に行く技術、ActiveXEXEはレジストリ登録が確か必要だったと思う。
その他、メモリーマップドファイルなど、共有メモリでのアクセスや、数値程度だったらSendMessageなどありますよ。
0152137
2005/08/23(火) 20:04:14また分からないことがあるので質問させてください
先ほどのクリックで選択されたり解除されたりする問題に関しては
Common Control 5のListViewを使用することで解決したのですが
代わりに、それまで指定していた ListView の拡張スタイルのうちグリッドの表示が出来ません
拡張スタイルの1行選択は次のようなコードでセットできたのですが
Call SendMessage(ListView1.hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE, LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT)
グリッドも同じように LVS_EX_GRIDLINES = &H1 を使ってメッセージを投げてみたのですが、一向にグリッドが表示されません
Common Control 5のListViewでグリッドを表示する方法をご教授ください
よろしくお願いします
0153デフォルトの名無しさん
2005/08/23(火) 20:55:10今、Inetを使用したファイルのアップロードを作っているのですが
'ファイルのアップロード
.Execute , "PUT c:\TEST\test.tif test.tif"
Do While .StillExecuting = True
DoEvents
Loop
.Execute , " SIZE test.tif"
Do While .StillExecuting
DoEvents
Loop
と、処理を流すとファイルサイズが正常に取得できません。
現状としては
・PUT等をせず、SIZEだけを実行した場合は正常に取得。
・PUTに限らずCDでもDIRでも別の.Executeを実行した後は
ファイルサイズが取得できない。
・何回か実行していると取得できる。
ただし、その次からまたしばらく取得できず
そのまま何回か実行していると取得できる(原因不明
やりたい事は、ファイルをアップロードし
アップロードしたファイルのサイズとローカルファイルのサイズを比較して
正常チェックを行いたいのです。
どなたかお力添えの程、よろしくお願いします。
0154デフォルトの名無しさん
2005/08/23(火) 22:17:59>>146-147とかw
ここまでアレだと、もう怒りとか呆れよりもある種の微笑ましさを感じるよ。
ああ職場で窓際にされてストレスたまってるんだろうな、とか思ってw
ところで、>>145は
>exeをひとつのプロジェクトに纏めることは、都合上できません
これは単一の実行ファイルのからビューAとビューBを表示するという訳にはいかない、
という意味だろうけど、それはいったいどんな都合なんだろう。。
その方が気になる。これなら何もOSの仕組みに依存するような高度な操作は必要ないわけで。
というと、「質問者の目的に疑問を挿むな」という例の馬鹿が湧いてくること必定w
こういう馬鹿が、戦争目的を問わずに鬼畜米英の蛮勇に浮かれたり、
尊師の目的を問わずに地下鉄にサリンを撒いたり、大作様の推挙する
候補に投票したりするんだろう。
0155デフォルトの名無しさん
2005/08/23(火) 22:48:12ようこそ無能さん
0156デフォルトの名無しさん
2005/08/23(火) 22:58:000157デフォルトの名無しさん
2005/08/24(水) 07:51:00ツリービューについてふたつほど教えて欲しいことがあるのですが、
(1) 縦スクロールバーのみ表示させる
(2) 横方向に表示しきれなかったアイテムをツールチップで表示しないようにする
について、コンテナ化や別コントロールでの代用ではなく、
ツリービュー単体で出来る方法をご存じの方、教えてください。
0158デフォルトの名無しさん
2005/08/24(水) 09:11:52ボタンの内側に破線の枠が表示されますが、これを表示しないようにするにはどうすれば良いのですか?
Tabキーでのコントロール移動には不可欠ですがTabStopはFalseにしてるし、
小さいボタンでコレが表示されると見栄えが悪いので。
0159デフォルトの名無しさん
2005/08/24(水) 11:52:29コマンドクリックのイベント内で
Command1.Enabled = False
Command1.Enabled = True
を記述してはいかがでしょうか?
ただ、クリックしている最中は破線枠は表示されます。
別にいい方法があるかも。
0160158
2005/08/24(水) 12:03:52回答ありがとうございます。
しかし、ボタン1をクリックすると破線枠がボタン2に、ボタン2をクリックすると破線枠がボタン1に移動するだけでした。
逆にボタンがひとつの時は意味無しです。Falseで一端枠は消えますがTrueの瞬間に枠が戻ってくるので。
引き続き回答をお待ちしています。
0161デフォルトの名無しさん
2005/08/24(水) 12:07:180162158
2005/08/24(水) 12:22:18回答ありがとうございます。
その方法をヒントに、クリックイベントで下層のボタンにSetFocusすれば、
一応クリック後の枠は残らないようになりました。
アクティブなボタンに破線枠を表示しないようにすることは出来ないのかな?
0163デフォルトの名無しさん
2005/08/24(水) 13:36:46「アクティブなボタンには破線枠を表示する」というのが
Windowsでのルールなので、標準のコントロールでは強制的に
そうなるように作ってあるのです。
ついでに「クリックしたらアクティブになる」というのも
ルールなので。
>>158はToolbarのボタンみたいな、マウスでしか触れないボタンが
ほしいということ?TabStop=FalseだけどTabキーは利かせたい(クリック→Tabで次のボタンに行きたい)のか?
Toolbar風ボタンなら、DelphiにはSpeedButtonてのがあるけど、VBにはないね。
俺は昔、UserControlとDrawFrameControlでシコシコ自作したことがある。
0164デフォルトの名無しさん
2005/08/24(水) 15:22:29うーん、そうでしょ。だから「だめだな」って逃げておいたんだがw
Common Control の5は、ComCtl32.DLLって共通のDLLのAPIを
コールしてるから、>>137で悩んだような変なバグは出ないし
XPの視覚スタイルにも対応させられる。
6はというと、全部独自で処理しているらしいので、ComCtl32の
バージョン違い地獄に引っかからない反面、今回のような
悲しい事態もあるという諸刃の剣。
5でのグリッド表示だけど、>>152の書き方がちょっと変。
Dim ExStyle As Long
ExStyle = SendMessage(ListView1.hWnd, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, ByVal 0) 'スタイル取得
ExStyle = ExStyle Or LVS_EX_GRIDLINES Or LVS_EX_FULLROWSELECT 'スタイル追加
Debug.Print SendMessage(ListView1.hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, ByVal ExStyle) 'スタイル更新
こんな風にかいてみ。1行選択も。うちではできたよ。
0165137
2005/08/24(水) 19:53:56>こんな風にかいてみ。1行選択も。うちではできたよ。
できました!おかげさまで希望通りの動作になりました
ありがとうございます
躓いてた原因は、スタイル取得のときの wParam、lParamの値で
どちらも LVS_EX_GRIDLINES Or LVS_EX_FULLROWSELECT を指定していたので
結局ゼロが帰ってきておかしなことになってたみたいです
イメージリストもVer5でないと連動して使えないようだったので、
この際、ランタイム減らす意味も込めてTreeViewなども含めてすべてVer5にしました
大量のデータ表示が、僅かですけど軽くなったような気がします
何度も助けていただき、本当にありがとうございました
0166デフォルトの名無しさん
2005/08/24(水) 23:46:27探したのですが、見つからないです・・Orz
0167デフォルトの名無しさん
2005/08/24(水) 23:56:55CDに入ってますよ。
0168デフォルトの名無しさん
2005/08/25(木) 00:07:11でも印刷に関する物が見当たらなかったですO..... rz
0169デフォルトの名無しさん
2005/08/25(木) 12:34:24MSDN ライブラリ Visual Studio 6.0
+Visual Basic ドキュメント
+Visual Basic の使用方法
+プログラミング ガイド
+Visual Basic を使ってできること
+テキストおよびグラフィックの操作
+印刷
これのことかね?
0170デフォルトの名無しさん
2005/08/25(木) 14:32:49そりゃ無理でしょ。熟語になったら単漢字としての読み方を
しない言葉はたくさんあるし。
たとえば「十八番」を「おはこ」と読ませているときは
どうするかとか、「やし」なんて漢字で書いたら「香具師」
なのに1文字ずつどう対応させるんだ、とか。
つまり「香具師の十八番は百舌鳥の真似」なんてのになると、
(こんな例は極端ですが)熟語、単文節以上には分解
できないわけです。
原理的に無理なので、仕組み自体が搭載されていないと思われ。
0171デフォルトの名無しさん
2005/08/25(木) 17:28:31UNIXで使えるソースコード(C++など)に
変換するようなツールは売られてるでしょうか?
0172デフォルトの名無しさん
2005/08/25(木) 17:53:41中途半端でいいならREALBasicというものがある
VBのソースをWindowsでもMACでもLinuxでも動かせる優れものだぞう
使い物にはならないが。
0174153
2005/08/25(木) 19:03:53いた汚し失礼><
0175デフォルトの名無しさん
2005/08/26(金) 00:37:16どうしたらいいですか?
0176デフォルトの名無しさん
2005/08/26(金) 01:08:071.Googleで代替のツールを探してくる
2.ヨドバシカメラでVisual Studioを眺めていると紳士が現れて買ってくれる
3.どうにもならない。現実は非常である
0177デフォルトの名無しさん
2005/08/26(金) 02:48:25VC買えばいいじゃん。
0178デフォルトの名無しさん
2005/08/26(金) 05:49:29フリーのSPYツール使えばいいじゃん。
0179デフォルトの名無しさん
2005/08/26(金) 09:19:59関数のサンプルはありませんか?
0180デフォルトの名無しさん
2005/08/26(金) 09:54:21宿題は7月中に終わらせておけよ。
それに宿題は宿題スレへ。
0181デフォルトの名無しさん
2005/08/26(金) 15:28:02色がグレーになるのだが、
他の色にした場合どうすればいい?
0182デフォルトの名無しさん
2005/08/26(金) 15:28:45trueじゃなくてfalseだ・・・
間違えた
0183デフォルトの名無しさん
2005/08/26(金) 15:44:59フレームにテキストボックス置いてフレームのEnabled=False
0184デフォルトの名無しさん
2005/08/26(金) 16:40:29ってことを言いたいんじゃないんだよな。言ってみただけだよ。
0185デフォルトの名無しさん
2005/08/26(金) 18:10:350186デフォルトの名無しさん
2005/08/26(金) 18:17:38宿題スレってどこ?
0187179
2005/08/26(金) 18:24:16わかる人がいないとは
0188デフォルトの名無しさん
2005/08/26(金) 18:51:04仕方ないなぁ。今回だけだよ?
Public Function GetAnswer() As Long
GetAnswer = 1 + 2 * 3
End Function
0189デフォルトの名無しさん
2005/08/26(金) 19:47:50厨房が練習で作るレベルの内容だろ。
サンプルなんて必要になるレベルじゃない。
0191デフォルトの名無しさん
2005/08/26(金) 20:00:00自分でやれ。これはお前のためだ。
0192デフォルトの名無しさん
2005/08/26(金) 20:00:030193179
2005/08/26(金) 20:02:280194デフォルトの名無しさん
2005/08/26(金) 20:09:26別に必要ではない
0195179
2005/08/26(金) 20:13:02http://www.ne.jp/asahi/nagoya/ahomaro/builder/cpb-022.html
0196GetAnswer("1+2*3")
2005/08/26(金) 20:20:00Dim Ope As Variant, foo() As String, bThr As Boolean, bar As Long
Dim i As Long, j As Long
For Each Ope In Array("+", "-", "*", "/")
strQuestion = Replace(strQuestion, Ope, " " & Ope & " ")
Next Ope
foo = Split(strQuestion)
For i = 1 To UBound(foo)
If bThr Then
bThr = False
ElseIf foo(i) = "*" Then
foo(j) = foo(j) * foo(i + 1): bThr = True
ElseIf foo(i) = "/" Then
foo(j) = foo(j) / foo(i + 1): bThr = True
Else
j = j + 1: foo(j) = foo(i)
End If
Next i
bar = foo(0)
For i = 1 To j
Select Case foo(i)
Case "+": bar = bar + foo(i + 1)
Case "-": bar = bar - foo(i + 1)
End Select
Next i
GetAnswer = bar
End Function
この夏からVB始めたリアル厨房ですが、練習がてら文字列操作のみで算出してみました
勉強になるので批判も歓迎、やっぱ数値ではなく数字を演算する時って
Clngとかで数値に直してから演算した方がいいんですかね?
+以外は数字同士でも勝手に数値として演算してくれるみたいなんですが
0197デフォルトの名無しさん
2005/08/26(金) 20:33:50Set sc = CreateObject("ScriptControl")
sc.Language = "VBScript"
MsgBox sc.Eval("1 + 2 * 3")
0198デフォルトの名無しさん
2005/08/26(金) 22:25:18ピクチャーボックス上にテキストボックス・リッチテキストボックスを置いて、
文字だけを表示する方法が分かりません。
前スレでは、「ある」とだけお答えいただいたので、色々試したのですが
上手くいきません(ToT
どのような方法があるのでしょうか?
0199デフォルトの名無しさん
2005/08/26(金) 22:49:33pictureboxに直接じゃだめなの?
0200デフォルトの名無しさん
2005/08/26(金) 23:07:09それかラベルコントロール
0201デフォルトの名無しさん
2005/08/27(土) 00:17:13返事、ありがとうございます。
WORDのシェィプのテキストボックスみたいなかんじで
ある程度、簡単な編集をさせたいと思っていたので、
TextBoxやRichTextBoxを考えていたのですが、ラベルも検討してみます。
0202デフォルトの名無しさん
2005/08/27(土) 23:31:34>Clngとかで数値に直してから演算した方がいいんですかね?
適切な型に変換して演算するほうがお行儀は良いと思う。
ざっくり見ただけだが、考え方はあってると思う。
でも、"(1+2)*3"とか対応していないよね?
あとスペースで置き換えてるみたいだけど、
初めからスペースが混じってたらどうなる?
たぶん、実行時エラーかなんか出るようなきがする。
実は大丈夫なのかな。そうだったらごめん。
0203デフォルトの名無しさん
2005/08/28(日) 14:48:41(´-`).。oO( 179の何処にスペースがあるんだろう… )
0204デフォルトの名無しさん
2005/08/28(日) 16:45:48アホ?
0205デフォルトの名無しさん
2005/08/28(日) 18:12:56機能不足な箇所や実装は自分でなんとかするでしょ。
0206デフォルトの名無しさん
2005/08/28(日) 18:40:50死ねば?って普通に思った。
0207デフォルトの名無しさん
2005/08/28(日) 21:11:17目標が不透明なまま周りがあーだこーだ騒いでも、あんたら何話してるの?ってなるだけだと思ったんだが。
0208デフォルトの名無しさん
2005/08/28(日) 21:39:48別にいいなら死ねば?
0209デフォルトの名無しさん
2005/08/28(日) 21:40:39それをネタにして話が広がって何の問題もないと思います
けど。
0210デフォルトの名無しさん
2005/08/29(月) 01:50:29frameごと別の場所にコピペしたらコントロール配列の並び方がバラバラ・・・
せっかく配列が1234...って綺麗に上から並んでいたのにコピペしたら下からコントロール配列ができちゃうよ
手で直せばいいんだけど、めんどくさい('A`)
何とかならないんでしょうか?
0211デフォルトの名無しさん
2005/08/29(月) 02:05:22VB6のデフォルトの機能じゃどうしようもないでしょ
0212デフォルトの名無しさん
2005/08/29(月) 07:49:500213デフォルトの名無しさん
2005/08/29(月) 11:46:32ありがと
どうしようもないのね・・・(´・ω・`)ショボーン
メモ帳見てみたけどこれもめんどくさそうだヽ(`Д´)ノウワァァァン
0214デフォルトの名無しさん
2005/08/29(月) 14:44:240215デフォルトの名無しさん
2005/08/29(月) 14:54:59質問は日本語で
0216デフォルトの名無しさん
2005/08/29(月) 14:57:040217デフォルトの名無しさん
2005/08/29(月) 15:08:17ってことかな?
0219デフォルトの名無しさん
2005/08/29(月) 15:14:050220デフォルトの名無しさん
2005/08/29(月) 15:25:330221デフォルトの名無しさん
2005/08/29(月) 16:20:40それぞれに対する各イベント(GotFocusやChange、KeyDown等)の処理の
記述内容がほぼ重複する場合は、テキストボックスを配列化するのが一般的なんでしょうか?
(例え、各テキストボックスに入力されるテキストの種類がコード・名前など様々だとしても)
コーディングルールみたいな、暗黙の規定みたいなものってあります?
0222デフォルトの名無しさん
2005/08/29(月) 16:27:11.netならテキストボックスを継承してコンポーネントが
カンタンに作れるんだけどねー
0223デフォルトの名無しさん
2005/08/29(月) 17:04:26配列化しないならこんなのは?
・クラスモジュールを1個用意する。
・Private WithEvents でTextBox型変数を作る。
・その変数へアクセスするプロパティ プロシージャを作る。
・このクラスでイベントを拾えるようになるから、イベントプロシージャに何か書く。
たとえばGotFocus()にSelLengthを使った全選択処理を書く。
・Form_Loadでこのクラスのインスタンスをテキストボックスの数だけ作って、それぞれテキストボックスを割り当てる。
・割り当てられたテキストボックスは、何も書かなくても全選択になる。
・何か追加の情報が必要なら、クラスのプロパティを増やす。
0224221
2005/08/29(月) 17:28:04精進します・・・
0225デフォルトの名無しさん
2005/08/30(火) 07:54:55ttp://www.gj.il24.net/~nakasima/vb/tech/excontrol/index.htm
0226221
2005/08/30(火) 14:59:07ありがとうです
なんとかクラス作って動かすことができました
なんか全然理解度足りないけど、後学のためにもっと使ってみようと思います
0227デフォルトの名無しさん
2005/08/30(火) 22:10:51VBで作ったプログラムのなかの変数の値を
ブラウザのフォームに送りたいのですが、
どのようにしたら可能なのでしょうか?
例としては、VBで作ったソフトにテキストを入力すると、
2chの書き込みフォームの中にそのテキストが入力されるとか、
検索ワードをいれてプログラムを実行したら、
googleの検索ワードを入力するフォームに、
その言葉が入力された状態になるというように、
VBアプリからブラウザに値を渡したいのです。
0228デフォルトの名無しさん
2005/08/31(水) 00:28:20現在、INETコントロールを使用してFTPによりサーバーからファイル
を取得するプログラムを作成しています。
当初開発していたPCで正常にファイルが取得できるのを確認後、実運用する他の
PCにて動作確認をとったところ、Executeメソッドの実行時にResponseCode=12
163(ネットワークから切断されています。)といったエラーが発生していまし
た。
いろいろと試行したところ、さっきまでエクスプローのアドレスバーに"ftp:/
/xxx.xxx.xxx.xxx/"と入力すると、サーバーの
フォルダの内容が見えていたのが、見えないのに気がつき、入力内容を消した
後に再度"ftp://xxx.xxx.xxx.xxx/"と入力したところフォルダの内容が見える
ようになりました。
この状態でプログラムをランさせると、今度はエラーは発生せずにに正常動作
しました。
VBというよりネットワークにつての質問になるかもしれませんが、この現象について
説明できる方いらっしゃいましたら教えて下さい。よろしくお願いします。
開発環境はWinXP(SP2)+VB6(SP5)です。
0229227
2005/08/31(水) 00:56:530230デフォルトの名無しさん
2005/08/31(水) 02:03:21自己解決したっていう報告だけじゃなくて、
どういう方法で解決したのか、情報提供もすると喜ばれるよ。
0231デフォルトの名無しさん
2005/08/31(水) 07:11:26別に喜ばせたくもないです。
0232デフォルトの名無しさん
2005/08/31(水) 08:53:49テキストボックス4つ
その他コントロールいくつか
こんなフォームがあります
テキストボックスは、4つでひとつのコードとして扱います
(01020304というコードを、[01][02][03][04]というように入力する、部分空白もあり得る)
コードを入力して、他のコントロールにフォーカスが移ったらコードチェックをします
しかし、4つのテキストボックスのLostFocusイベントでそれをやると、
テキストボックスからテキストボックスにフォーカスが移ったときにも、
いちいちコードチェックが動いてしまいます
あくまで、4つのテキストボックスを入力し終わった時点で、コードチェックをしたいんです
他のコントロールのGotFocusで、あるいは上で教えていただいたClassで、という以外に、
何か良い方法はないものでしょうか
0233デフォルトの名無しさん
2005/08/31(水) 08:56:000234デフォルトの名無しさん
2005/08/31(水) 09:05:31普通にやればいいんでないかい?
0235デフォルトの名無しさん
2005/08/31(水) 09:13:14気のせいか同じ質問が・・マルチポスト
一応はっときますね
ttp://www7.big.or.jp/~pinball/discus/vb/59468.html
0236232
2005/08/31(水) 09:17:270237デフォルトの名無しさん
2005/08/31(水) 09:38:24ユーザーコントロール作ってExitFocusとかValidateとか
0239デフォルトの名無しさん
2005/08/31(水) 11:30:55(例)AAA111とかを数値に
0240デフォルトの名無しさん
2005/08/31(水) 11:35:59その文字をどういう数値にしたいの?
16進数の「AAA111」を10進数に直せばいいの?
それとも「111」だけを取り出したいの?
後者の場合でAAA111BBB222のときは
「111」「222」「111222」のどれを返せばいいの?
数字を含む文字列から数値を返すのはわけないが
条件はきちんと指定してくれないと何も教えられない。
0241デフォルトの名無しさん
2005/08/31(水) 12:05:03それなら素直にCollectionを使えと。
0242デフォルトの名無しさん
2005/08/31(水) 14:46:42存在しないフィールドを指定したかどうかチェックする方法は無いでしょうか。
0243デフォルトの名無しさん
2005/08/31(水) 15:03:24For i = 0 to rs.fields.count - 1
exl.worksheets(1).cells(k, i + 1).value = rs(i).name
Next
0244デフォルトの名無しさん
2005/08/31(水) 19:58:29Oracleのエラーコード拾ってくるのは?
0245デフォルトの名無しさん
2005/08/31(水) 22:04:35マルチポストが迷惑な理由と全く同じ理由でお前の書き込みも迷惑。
まぁ俺のもそうだが。
0246デフォルトの名無しさん
2005/09/01(木) 01:45:04Aを代入した結果を求めたいのですが、読み込んだ計算式を簡単に
解析する方法とかないでしょうか?
0247デフォルトの名無しさん
2005/09/01(木) 01:51:38これ、どっかの中学校の宿題?
いい加減飽きたよ。
0248??
2005/09/01(木) 02:32:10で、どうやったの?
聞きたい
俺も、その手のアプリを作りたいと思っています。
0249デフォルトの名無しさん
2005/09/01(木) 04:05:10これくらい自分で作れないならおとなしくフリーの使ってろ
0250248
2005/09/01(木) 09:30:54簡単でも、やり方分からないから聞いてんだよ
0251デフォルトの名無しさん
2005/09/01(木) 09:40:52がんばれ
0252デフォルトの名無しさん
2005/09/01(木) 10:29:44おちつけ、つられるなw
とりあえずヒントを出そう
http://www.ken3.org/vba/backno/vba156.html
これで起動中のIEが取れるよ
あとはウォッチで眺めてみれば分かるっしょ
それと下の2つを参照設定に入れとくと、結構幸せになれる気がするな
Microsoft Internet Controls
Microsoft HTML Object Library
ただ、この方法には制限があって、フレームを使ったページで
フレーム内のドメインがトップフレームと違う場合は、
フレーム内のドキュメントには一切アクセスできないよ
Google検索だけなら、単純にURL変数でいいと思うけどね
0253デフォルトの名無しさん
2005/09/01(木) 10:41:05逆ボーランドに変換してから計算する
変換時、”(”は無条件で積み上げて、”)”が来たら”(”まで追い出して( )は相殺
0254デフォルトの名無しさん
2005/09/01(木) 11:04:120255デフォルトの名無しさん
2005/09/01(木) 11:11:23おまえ、バカだろ。
0256デフォルトの名無しさん
2005/09/01(木) 11:13:01ihpleD とか?
>>246
Microsoft Script Controlを参照すればEvalが使えるよ。
0257デフォルトの名無しさん
2005/09/01(木) 11:15:12なんで?
0258248
2005/09/01(木) 11:44:19とても参考になりました。
しかし・・・
分からない点が出てきました。
YAHOOの自動ログインをVB6で作成しようと思っています。
---------------サンプルソース---------------
Sub ie_test_click()
Dim objIE As Object 'IEオブジェクト参照用
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True
objIE.Navigate "http://mail.yahoo.co.jp/"
Do While objIE.Busy = True
DoEvents
Loop
objIE.document.all.userid.Value = "***" 'ユーザー名
objIE.document.all.pass.Value = "***" 'パスワード
objIE.document.all..save.Click 'クリックメソッドを実行
End Sub
---------------------------------------------------------------
クリックメソッドの部分ですが、
YAHOOログインページのログインボタン部分のソースは、
<input name=".save" type="submit" value="ログイン" class=loginsubbutton>
になっています・・・
VBのコードで
objIE.document.all..save.Click
と指定すると当然エラーが出ます。
どのようにすればコマンドボタンを自動で押せるのでしょうか?
すいませんがご教授お願いいたします。
0259デフォルトの名無しさん
2005/09/01(木) 11:48:51無かったらメッセージを出したいです。
0260デフォルトの名無しさん
2005/09/01(木) 12:00:32名前が.saveの場合
Set pHoge = objIE.document.getElementsByName(".save")
IDが.saveの場合
Set pHoge = objIE.document.All(".save")
名前もIDもないINPUTタグの場合
Set pHoge = objIE.document.getElementsByTagName("INPUT")
ただし、取得条件に合致するもの(名前/ID/タグ)が複数あった場合は
配列になって返ってくるからLengthを見たほうがいいかもしれんよと
0261248
2005/09/01(木) 12:08:40コンパイルエラーは出なくなりました。
Set pHoge = objIE.document.getElementsByName(".save")
をどのように使用して、コマンドボタンをクリックするのでしょうか?
pHogeには[object]が返ってきています。
質問ばかりで申し訳ございません。
0262デフォルトの名無しさん
2005/09/01(木) 12:16:250263デフォルトの名無しさん
2005/09/01(木) 12:26:11さっき言ったようにキチンと参照設定して
Dim pHoge As MSHTML.HTMLInputButtonElement
と宣言した変数にぶち込んでみろ
インテリセンスが効くからアホでも分かる
0264デフォルトの名無しさん
2005/09/01(木) 20:21:09あれ?気に障った?コード書いてみ?
0265デフォルトの名無しさん
2005/09/01(木) 21:20:46ある名前のワークシートがワークブックの中にあるかどうか
調べたいってことか?
じゃあ For か For Each でWorkBook.WorkSheetsを順番に
調べるか、WorkSheets("シートの名前")がエラーになるかどうか
調べる。
ファイルの話だったらDir$とかいくらでもあるべ。
0266デフォルトの名無しさん
2005/09/01(木) 23:39:200267デフォルトの名無しさん
2005/09/02(金) 10:17:09フォントダイアログ?のようなものを自力で作らなければならなくなったのですが、
現在選択されているフォントで有効なサイズを全て取得するには
どの様にすればよろしいでしょうか?
現在の文字サイズは取得できるのですが、わかりませんでした。
教えてください。
0268デフォルトの名無しさん
2005/09/02(金) 19:32:340269デフォルトの名無しさん
2005/09/03(土) 13:45:37フォントサイズのコンボボックスの中身は選択したフォントに
よって変わるということは、なにか判断する基準があるんだよな。
たとえ、特定の名前に対してハードコーディングしているんだとしても。
だいたいのTrueTypeやOpenTypeは同じ候補が出てくるけど、
たとえばFixedSYSは14だけ、Courierは10,12,15だけとか、
ビットマップフォントは候補の数が少ないようだ。
0270デフォルトの名無しさん
2005/09/03(土) 13:52:34方法はあるんでしょうけどね。
0271デフォルトの名無しさん
2005/09/03(土) 16:51:29Write #1, "damepo"
Close #1
これを行うとtxtに
"damepo"のように""に囲まれたものが出力されてしまいます
""をなくす方法ってないんでしょうか?
0272デフォルトの名無しさん
2005/09/03(土) 17:27:14Write以外を使えば?
0273デフォルトの名無しさん
2005/09/03(土) 17:47:36printじゃ駄目なのか?
0275デフォルトの名無しさん
2005/09/04(日) 11:14:39何かいい方法は無いでしょうか?
ロジック
Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = 2 Then
strMoji = Form2.MSComm1.Input
Form1.txtTab1Com1.Text = Form1.txtTab1Com1.Text + strMoji
strMojiretu = strMojiretu + strMoji
Else
MsgBox MSComm1.CommEvent
End If
〜
受信したデータがvbCrなら、DBに出力する処理
〜
(MSComm1のパラメータInBufferSize:1024、Inputlen:1)の場合
4823バイトまでは、きちんと受信してくれるのですが、
それから入ってくるデータの文字が、
送信元とは、違っています。
(MSComm1のパラメータInBufferSize:1024、Inputlen:0)の場合
9534バイトまでは、きちんとテキストに表示されるのですが、
それからはデータがテキストに表示されません。
MsgBox MSComm1.CommEventも実行されません。
セットするtxtTab1Com1のマックスレングスは0です。
0276275
2005/09/04(日) 11:15:55(MSComm1のパラメータoutBufferSize:1024、Inputlen:0)、
(MSComm1のパラメータoutBufferSize:1024、Inputlen:1)
ともに試しましたが、うまくいきませんでした。
Settingsは送受信ともに、19200,n,8,1です。
ネットを調べて、OnComm()時に、
MSComm1.RThreshold = 0
を実行し、終了したら、
MSComm1.RThreshold = 1
などをしたのですが駄目でした。
0277デフォルトの名無しさん
2005/09/04(日) 15:43:00>MSCOMMがきちんと受信してくれません。
それは君の判断でしょ。起こっている何らかの事実を観察して、
「君自身が」そのように判断したわけだ。
人に質問してるんだから、「君の判断」じゃなく、
君をそのように判断せしめた「事実」を端的に書かなきゃ。
なんで読む人間の立場にたって文章かけないの?
それじゃ「サポセン」に出てくるアホなPCユーザーと一緒だよ。
動きません、どうしてでしょう?
―― そんなこと知るかよボケ
0278275
2005/09/04(日) 16:09:14書き込みに不備があり申し訳ありません。
きちんと、受信してくれないと判断した理由は、
(MSComm1のパラメータInBufferSize:1024、Inputlen:1)の場合
4823バイトまでは、
きちんと受信したデータがテキストに表示されるのですが、
そこから10文字程度は、送信元のプログラムで入力したテキストとは
違うデータは表示され、テキスト表示はそれで止まりました。
strMoji = MScomm1.inputの後、
MSComm1.InBufferCount = 0を実行した場合は
最初から、送信元とは違うデータが表示されました。(それはそうですよね)
(MSComm1のパラメータInBufferSize:1024、Inputlen:0)の場合
9534バイトまでは、きちんとテキストに表示されるのですが、
それからはデータがテキストに表示されません。
MsgBox MSComm1.CommEventも実行されません。
上記は、
strMoji = MSComm1.Inputの後に、
MSComm1.InBufferCount = 0を実行した場合です。
strMoji = Form2.MSComm1.Inputの後に、
MSComm1.InBufferCount = 0
を実行しない場合は、
MSComm1.CommEventに、comEventRxOverが帰ってきて、
受信バッファ オーバーフローが発生します。
InBufferSizeを2048にしたのですが、
結果は同じでオーバーフローしました。
0279デフォルトの名無しさん
2005/09/04(日) 16:16:120280275
2005/09/04(日) 16:21:34>>277さんがこれからレスをくれなかったとしても、>>277さんのレスに感謝します。
私の書き込みに不備があったのも事実ですし。
今回の書き込みにもあるかもしれませんが、
どうぞ、よろしくお願いします。
0281デフォルトの名無しさん
2005/09/04(日) 17:38:10>>275と>>277
0282デフォルトの名無しさん
2005/09/04(日) 18:24:31それだけの情報じゃ言えることは限られていると思う。
送信側、あるいは受信処理をしているPCのハードウェアに問題がないなら、
OnCommイベントの処理がなにか間違っているのだろう、としかいえない。
OnCommの処理を全部晒すわけにはいかないんですか?
それが一番話が早いと思いますが。
とりあえず現段階で他にいえることは、
● MSComm1.InBufferCount = 0みたいな「おまじない」は不要。
● Inputlen = 1はナンセンスだと思う。
● 特に理由がないなら、OnCommで受信バッファを読むのではなく、タイマを使って
バッファをポーリングするようにした方が安全かつ効率的。(当然RThreshold = 0)
● 4823バイト、9534バイトといった数字には再現性はあるの?
● 受信バッファの文字列の長さが常に1、なんて前提でコードかいてませんか?
● 送信側で2バイト文字を送信しているとか、InputModeがバイナリモードになっている
なんてオチはないですよね?
0283275
2005/09/04(日) 18:42:32レスありがとうございます。
現在、晒す用に、プログラムの無駄なコメントを編集中です。
>● MSComm1.InBufferCount = 0みたいな「おまじない」は不要。
そうなのですね。
>● Inputlen = 1はナンセンスだと思う。
なるほど。
>● 特に理由がないなら、OnCommで受信バッファを読むのではなく、タイマを使って
>バッファをポーリングするようにした方が安全かつ効率的。(当然RThreshold = 0)
タイマを使った処理は思いつきませんでした。
ネットで、調べて見ようと思います。
>● 4823バイト、9534バイトといった数字には再現性はあるの?
昨日と文字数が違うので、再現性はありません。
>● 受信バッファの文字列の長さが常に1、なんて前提でコードかいてませんか?
Inputlenが、0のときは、
strMojibufr = Form2.MSComm1.Input
For i = 1 To Len(strMojibufr)
strMoji = Mid(strMojibufr, i, 1)
として、この後、strMojiをテキストに追加しています。
>● 送信側で2バイト文字を送信しているとか、InputModeがバイナリモードになっている
>なんてオチはないですよね?
調べましたが無いです。
0284275
2005/09/04(日) 18:54:32On Error GoTo ERRSEQ
Dim t() As Byte
Dim strMoji As String
Dim Buffer As String
Dim strMojibufr As String
Dim i As Integer
Dim EventNo As Integer
L_intTab1Recv = 1
If L_intTab1Recfurstf = 1 Then 'レコード最初フラグ
Form1.lblTab1Recp.Caption = "受信中" '受信中表示項目
Form1.lblTab1Recp.Refresh
L_intTab1commedmsgf = 1 '受信終了メッセージ出力フラグ
Form1.btnTab1Recved.Enabled = False '受信終了ボタン
Form1.btnTab1Recvsp.Enabled = True '受信停止ボタン
L_intTab1Recfurstf = 0
End If
strMojibufr = Form2.MSComm1.Input
MSComm1.InBufferCount = 0
For i = 1 To Len(strMojibufr)
strMoji = Mid(strMojibufr, i, 1)
Form1.txtTab1Com1.Text = Form1.txtTab1Com1.Text + strMoji
0285275
2005/09/04(日) 18:55:21Case comEvReceive
Case comEvSend
Case comEvCTS
Case comEvDSR
Case comEvCD
Case comEvRing
Case comEvEOF '(18)他の通信イベントでは何もしない
Case comEventBreak
MsgBox "中断信号を受信", vbCritical
〜
その他のエラーチェック続く
〜
Case Else
MsgBox "その他の通信エラー", vbCritical
End Select
If strMoji <> vbCr And _
strMoji <> vbLf Then
L_strTab1Rec1 = L_strTab1Rec1 + strMoji '出力レコードをセット
End If
'シリアルナンバーチェック
〜
読み込んだデータの1つめの項目のシリアルナンバーチェック
通常の処理なので省きます。
〜
0286275
2005/09/04(日) 18:56:31strMoji = vbLf Then
If L_strTab1Rec1 <> "" And _
L_strTab1Rec1 <> " " Then
L_strTab1Itemarray = Split(L_strTab1Rec1, ",")
RESPONSE = tab1Editrec(1) '取得したデータを出力
If RESPONSE = False Then
If L_bolbInTran = True Then 'トランザクション開始フラグ
Call Tab1Recvend
objOraSes.Rollback
L_bolbInTran = False
Form1.SSTab1.TabEnabled(1) = True
Form1.SSTab1.TabEnabled(2) = True
End If
End If
End If
L_strTab1Rec1 = ""
L_intTab1Serialckf1 = 1
Form1.txtTab1Com1.SelStart = Len(Form1.txtTab1Com1.Text) + 1
End If
Print #L_intTab1FileNum1, strMoji;
Form1.txtTab1Com1.SelStart = Len(Form1.txtTab1Com1.Text) + 1 'テキストの一番下にカーソルセット
Form1.txtTab1Com1.Refresh
L_intTab1commendf = 1 '受信終了判定フラグ
Next i
Exit Sub
ERRSEQ:
省略します。
End Sub
0287デフォルトの名無しさん
2005/09/04(日) 18:57:13いつものこと?
0288275
2005/09/04(日) 19:00:25受信したデータに、vbCrまたは、vbLfが出てきた場合は、
溜め込んだ、ワーク文字列領域を、配列にセットし、
その配列を使用してDBに出力する処理です。
0289デフォルトの名無しさん
2005/09/04(日) 19:15:430290275
2005/09/04(日) 19:51:46伝送速度 19200 InBufferSize 2048 timer1.Interval 10 4992文字
伝送速度 19200 InBufferSize 1024 timer1.Interval 10 6336文字
伝送速度 19200 InBufferSize 1024 timer1.Interval 1 7296文字
タイマーオブジェクトを使用して、設定を変えて処理しました。
タイマーイベントが動くごとに、Call MSComm1_OnCommを実行しています。
ですが、テキストに表示される文字が途中で止まってしまいます。
また、受信できる文字数に再現性はありません。
If MSComm1.CommEvent <> comEvReceive Then
Exit Sub
End If
を入れると、送信元のデータを1文字からきちんと取得してくれないので、
コメントにしました。
再現性が無いため、何かメモリ的な問題なのかとも思うのですが。
0291デフォルトの名無しさん
2005/09/04(日) 20:08:42ネタじゃなくて本気で困ってるんですよねえ?
だったらMsCommのせいにする前に、一度冒頭のOn Error GoTo を取って
実行してみたらどう?
よほどの馬鹿でなければそれで原因がわかると思うよ。
逆にいえば、それでわからなければプログラミングの適性なさ過ぎると思うわ、悪いけど。
余計なお世話かもしれないけど、物事ちゃんと理解してプログラム書いたほうが良いよ。
理解してないでしょ?
MsCommの各プロパティとかイベントの意味を。
0292デフォルトの名無しさん
2005/09/04(日) 20:14:30form2をまず表字させるにはどうすればいい?
0293275
2005/09/04(日) 20:25:43On Error GoTo
のとび先で、メッセージボックスを表示しており、
メッセージボックスが表示されないため、
特に、On Error GoToをコメントにしてテストはしてませんでした。
コメントにしましたが、
テキストボックスへの表示が途中で止まることに変化は無く、
エラーメッセージ等も表示されません。
もう少し自力で調べてみようと思います。
0294デフォルトの名無しさん
2005/09/04(日) 21:02:32プロジェクト プロパティにスタートアップの設定がある。
0295デフォルトの名無しさん
2005/09/05(月) 11:26:53まあ、シリアルの場合可能ならばモニタリングツールをPCと装置の間に挟んで見るのが一番だけどね。
とりあえず、プログラムが悪いのか他が悪いのかは切り分けがつく。
で、プログラムが怪しいなら、シリアルコマンドエクスプローラーみたいなツールで、電文見るしかないワナ。
0296デフォルトの名無しさん
2005/09/05(月) 11:36:12お前に何の関係があるのかが全く読み取れん。
0297275
2005/09/05(月) 11:51:07どもどもです。
なんか、口が悪いながらも、
適切なアドバイスありがとうございます。
このスレは、そんな人が多くてなかなかいいですね。
とりあえず、送信側が悪いのか、受信側が悪いのか
送信したデータと、受信したデータを
テキストファイルに出力して確認してみようと
思います。
0298デフォルトの名無しさん
2005/09/05(月) 12:19:25いや、シリアル通信の場合、そのログを通信の何処の部分で誰が採取するかが問題であって。
自分のバグ疑惑プログラムじゃない、別のツールなどで採取しないと客観性がないよ。
0300デフォルトの名無しさん
2005/09/05(月) 12:45:26一気に目的のプログラムを仕上げたい気持ちはよくわかるが(俺もそうだから)、
モノを作るときの定石として、とりあえず簡単なコードを書いて
MSCommに対する理解を確認した方がいいよ。
少なくとも君の場合、一気に目的のものを仕上げるだけのスキルはないと思う。
そんなことやってると遠からずモティベーション無くすよ。
使えるPCが複数あるなら、とりあえずVBtermをもっと単純にしたようなプログラムを
書いて2台のPCに入れて、お互いに送受信がうまくいくか確認することから始めたら?
0301デフォルトの名無しさん
2005/09/05(月) 12:57:51お前に何の関係があるの?
0302デフォルトの名無しさん
2005/09/05(月) 13:01:030303275
2005/09/05(月) 13:03:10確かにそうですね。ちょっと疲れてきましたorz
PCは2台あるので、一方のPCで送信して、
もう一方のPCで受信したのをテキストボックスに表示するだけのところから
試してみようと思います。
ネットからサンプルプログラムをダウンロードして
実行するのですが、データが大量になると、
テキスト表示すらもうまくいかないので。
ありがとうございます。
0304300
2005/09/05(月) 13:09:17>>297
一気に目的のプログラムを仕上げたい気持ちはよく分かりますが(私もそうですから)、
モノを作るときの定石として、とりあえず簡単なコードを書いて
MSCommに対する理解を確認してみてはいかがでしょうか。
私は一気に目的のものを仕上げるだけのスキルがないのに
そんなことやったために、モチベーションを無くしてしまいました。
使えるPCが複数あるのでしたら、とりあえずVBtermをもっと単純にしたようなプログラムを
書いて2台のPCに入れて、お互いに送受信がうまくいくか確認することから始められては
いかがでしょうか。もっとも私のスキルでは試すことすらできませんが・・・
0305デフォルトの名無しさん
2005/09/05(月) 13:14:24ほぼ同じ(一部違うけどw)内容でもこれなら何の不快感も
ないのにな。>>300みたいにわざわざ不快感を織り交ぜる
理由ってなんかあるのかね。
会社での鬱憤を晴らすとかいうありきたりの理由以外で。
0306デフォルトの名無しさん
2005/09/05(月) 13:54:24ホビーPGさんならゴメンナサイだけど、仕事でやってる人に対してなら>>300程度は言っても普通に思える。
それで飯食ってるんだから、少しは勉強しろ!って。
0307275
2005/09/05(月) 13:55:34私が鈍いだけかも。
現在モニタリングソフトを落としてます。
0308デフォルトの名無しさん
2005/09/05(月) 14:08:28落してるとのことですが、お勧めはシリアルコマンドエクスプローラーかな?
まあ、気合があればWindows添付のハイパーターミナルでもいけますけど。
シリアルに限らず、通信アプリの場合は原因の切り分けの為に、その通信の仕様などの知識は必須ですよ。
論理的に考えて何処が怪しいっていう思考が出来ないじゃないですか、知識がないと。(まあ通信に限りませんが)
0309275
2005/09/05(月) 14:28:03ありがとうございます。
シリアルコマンドエクスプローラーを使用しようと思います。
>シリアルに限らず、通信アプリの場合は原因の切り分けの為に、
>その通信の仕様などの知識は必須ですよ。
知識は無いのですが、とりあえずできることだけはやろうと思います
(現状をできるだけ把握する等)
現状を把握しないことには、
知識のある人に質問することもできないので。
ありがとうございました。
0310デフォルトの名無しさん
2005/09/05(月) 15:45:07原因は何でしょうか。
ちなみにexe終了すれば増え続けたプロセスは一気に開放されます。
- 環境 -
w2ksp4
vb6sp6
DB:PostgreSQL8.0.3
VB歴3週間
Private Sub Command1_Click()
Adodc1.Refresh ←このタイミングで増える。
End Sub
Private Sub Form_Load()
Adodc1.ConnectionString = _
"Provider=PostgreSQL.1;Password=postgres;User ID=postgres;" & _
"Data Source=localhost;Location=DB_name" & _
Adodc1.RecordSource = "table_name"
End Sub
Private Sub Form_Unload(Cancel As Integer)
Unload Me
End Sub
0311デフォルトの名無しさん
2005/09/05(月) 15:49:26Adodc1は何?
0312デフォルトの名無しさん
2005/09/05(月) 16:09:07やってみたけど俺のところでは増えなかった。
DB(ODBCドライバ)が違うせいかな。
- 環境 -
w2ksp4
vb6sp6
DB:SQL Server 2000 Personal Edition
余談だけど、PostgreSQLを使ってる理由は何?
「無料だから」位の理由ならMSDE2000を使った方がいいと思うよ。
0313デフォルトの名無しさん
2005/09/05(月) 16:10:06それを聞いてあげないと出てこないってのが痛いね。
何のプロセスが増えるかも不明だし。
0314デフォルトの名無しさん
2005/09/05(月) 16:10:49>「無料だから」位の理由ならMSDE2000を使った方がいいと思うよ。
MSDE2000はいくらですか?
0315デフォルトの名無しさん
2005/09/05(月) 16:14:55ぽすぐれってLinuxベースだから、スレッドじゃなく子プロセスで多分処理しますよね。
だから、接続なりしてそれをきちんと片さないでさらに接続した場合、そのプロセスは増え続けると思う。
(まあスレッドが見えずに増えるのも実害上は同じだがw)
0316310
2005/09/05(月) 16:31:03何?とはどういうことでしょう・・・orz
Datagridに表示させようかと思ってます。
ということでしょうか。
>>312
postgreSQL使ってる理由は無料というのもあるし
せっかくWindowsで使えるようになったから
そして、まわりにPostgreSQLの本が何冊かあったから
です。
増えるプロセスは
postgres.exe です。
ちなみに、練習中に気づいて気になっているだけで
実際の開発を行っているわけではありません。
ただ、原因がはっきりしないと気分が悪い、ということです。
0317デフォルトの名無しさん
2005/09/05(月) 16:39:050318デフォルトの名無しさん
2005/09/05(月) 17:23:460319デフォルトの名無しさん
2005/09/05(月) 20:00:59>「無料だから」位の理由ならMSDE2000を使った方がいいと思うよ。
なぜですか?
0320デフォルトの名無しさん
2005/09/05(月) 22:42:20ポスグレスレで聞いたほうがいいよ
0321310
2005/09/05(月) 22:59:54ということはpostgreSQLのせいというか仕様と言うかなんと言うか
プログラム自体に問題はなさそうですか。
>>312さんのレス的にもやっぱそうなんでしょうか。
あっちのスレでも聞いてみます。
ありがとうございました。
0322デフォルトの名無しさん
2005/09/06(火) 07:15:58別にそれでいいならいいけどな。
読解力ないと大変やのう。
0323310
2005/09/06(火) 08:08:31>接続なりしてそれをきちんと片さないでさらに接続した場合、そのプロセスは増え続けると思う。
ていうところでしょうか?
できればわかりやすく教えていただければその方がよいのですが。
0324デフォルトの名無しさん
2005/09/06(火) 08:10:252chの特定スレのレス数を取得したいのですがどうしたら良いですか?
subject.txtを読んで、レス数を取得する方法、
datを取得して、行数からレス数を割り出す方法なら解るのですが
どちらも余計な情報を拾ってくる為、subject.txtやdatのDLに時間が掛かります。
Janeなどでは特定1スレ(レス数900程度)のレス数チェック(新着チェック)は、0.5秒程度で終わりますが
subject.txtやdatをそのまま取得すると、それだけで3〜5秒程度掛かってしまいます。
取得後の処理に関してはDelphi製のJaneの方が高速なのは解りますが
取得に掛かる時間は回線速度依存でどちらもたいして変わらないはずなので、
ここで差が出てるということはsubject.txtやdatをそのまま取得せずにレス数を得る方法があると思うのですが
Janeのソース(OP言語)は読めないのでどうすれば良いのかも解りません。
VBと言うよりは2chの仕様に関する部分も大きいとは思いますが
お詳しい方、何とぞ回答をお願いします。
0325デフォルトの名無しさん
2005/09/06(火) 09:11:56パケットモニタでなにやってるか見たら?
0326デフォルトの名無しさん
2005/09/06(火) 12:44:06その際にUPDATEしたらレコードが重複するかどうか調べる方法は無いでしょうか
0327デフォルトの名無しさん
2005/09/06(火) 12:58:26UPDATEする前に、UPDATEするのと同じ条件でSELECTしてみて
複数レコードがあったら重複する
0328デフォルトの名無しさん
2005/09/06(火) 16:19:08私もその方法を考えていたのですがそれしかないようですね ありがとうございます
0329デフォルトの名無しさん
2005/09/06(火) 19:33:46どうすればよいかなぁ?
0330デフォルトの名無しさん
2005/09/06(火) 19:38:47知ってるが
お前の態度が
気に入らない
0331デフォルトの名無しさん
2005/09/06(火) 19:41:170332デフォルトの名無しさん
2005/09/06(火) 19:49:43>>330
0333デフォルトの名無しさん
2005/09/06(火) 20:03:19HTTP(HyperText Transfar Protocol)のIf-Modified-SinceヘッダとRangeヘッダ
0334デフォルトの名無しさん
2005/09/06(火) 20:35:34text.1からtext.5まで入力された数値の平均をlabel.1に、
入力された数値データの個数をlabel.2に表示させるにはどうすれば
よいのでしょうか?
基本的なことですみません。
0335デフォルトの名無しさん
2005/09/06(火) 21:13:00Dim Sum As Double
Count = 0
Sum = 0
If IsNumeric(Text1.Text) Then
Sum = Sum + Text1.Text
End if
中略
Label1.Caption = Sum / Count
etc,etc...
なんで教材にVB使うんだろうねぇ。
Cなら只だし勉強向きの書籍もいっぱいあるのに。
0336デフォルトの名無しさん
2005/09/06(火) 21:36:17'合計
Cnt = 5
'へーきん
Ave = (text1.Text + text2.Text + text3.Text + text4.Text + text5.Text) / Cnt
もうコレでいいんでない?
入力されていないとか数字以外の場合も問われたら「分かりません」って答えるんだ!!
0337デフォルトの名無しさん
2005/09/06(火) 22:10:02でもcountも5で固定じゃなく、
入力されたデータ数を数えるようにしたいのですが
わかりますか?
0338デフォルトの名無しさん
2005/09/06(火) 22:11:48入力されたデータ数とは?
0339デフォルトの名無しさん
2005/09/06(火) 22:16:06例えばテキストボックス2つしか入力されなかった場合は
count=2になるようにしたいのです。
0340デフォルトの名無しさん
2005/09/06(火) 22:30:23Len(Text1.Text)<>0ならcountを増やすとか、少しは考えようよ。
0341デフォルトの名無しさん
2005/09/06(火) 22:46:16なぜですか?
0342デフォルトの名無しさん
2005/09/06(火) 22:49:32と同種のテキストフィールドがあったとして
繰り返しのためにたとえばi=2として
Texti.text見たいな感じでText2.textの入力データ取り出すことできないの?
0343デフォルトの名無しさん
2005/09/06(火) 22:51:210344sage
2005/09/06(火) 22:54:36"Text" & i & ".text"
これだと文字列になっちゃうし...
0345デフォルトの名無しさん
2005/09/06(火) 22:56:550346デフォルトの名無しさん
2005/09/06(火) 22:57:49まあいいけど
0347デフォルトの名無しさん
2005/09/06(火) 23:00:07その名前がわからなかった
0348デフォルトの名無しさん
2005/09/06(火) 23:09:23"Text1.text"
と文字列化したものをまた変数として扱うにはどうすればいいのでしょうか?
0349デフォルトの名無しさん
2005/09/06(火) 23:11:050350デフォルトの名無しさん
2005/09/06(火) 23:11:45PHPとかもやってるとわけわからなくなってしまって
0351デフォルトの名無しさん
2005/09/07(水) 01:35:220352デフォルトの名無しさん
2005/09/07(水) 07:05:44でけた。ありがとー。
0353デフォルトの名無しさん
2005/09/07(水) 10:49:16VB6でコールバック的な処理って出来るでしょうか?
例:
sub Main()
CALL ASUB(CallBackFunc)
end sub
sub ASUB(aFunc)
return aFunc(1,2,3)
end sub
sub CallBackFunc(a,b,c)
debug.print a,b,c
end sub
よろしくお願いします。
0354デフォルトの名無しさん
2005/09/07(水) 14:11:09"Text1.Text"を文字列化って、どぅやったんですか?
Dim objText As Object
objText = Text1
objText.Text …
ってのはできる。
0355デフォルトの名無しさん
2005/09/07(水) 14:15:22そのメソッドをどこかのクラスモジュールに作って
クラスのインスタンス変数を渡すという手があります。
コールバック関数の数だけクラスモジュールが出来るけどな。
つまり
Sub ASUB(ByVal CallBackObject As Object)
CallBackObject.aFunc 1, 2, 3
とするわけです。
コールバック用クラスは任意のクラス名で
Sub aFunc(a, b, c)
Debug.Print a; b; c
と。
渡されたCallBackObjectオブジェクトに確実にaFuncがあるのか?
という話なら、Implementsちゅう機能を使うとよいです。
でなきゃCallByNameで出来たんだっけ?
0356デフォルトの名無しさん
2005/09/07(水) 14:44:25Dim Count As Integer
Dim Sum As Double
Dim OneTextBox As TextBox
For Each OneTextBox In Text1
If IsNumeric(OneTextBox.Text) Then
Sum = Sum + OneTextBox.Text
Count = Count + 1
End If
Next
Label1.Caption = Sum / Text1.Count
'または
'If Count <> 0 Then
' Label1.Caption = Sum / Count
'Else
' Label1.Caption = "N/A"
'End if
Label2.Caption = Count
>>334よ、答えが分かれば満足なのかも知れないが
Text.1なんて変な書き方してるということは、ろくに
手を動かしたことがなくてコピペで済ませてるだろ。
説教くさくてごめんよ。
0357デフォルトの名無しさん
2005/09/07(水) 16:00:38ありがとうございます。
やってみます。
また分からないことがあったら教えてください。
0358デフォルトの名無しさん
2005/09/08(木) 04:26:460359デフォルトの名無しさん
2005/09/08(木) 04:41:090360デフォルトの名無しさん
2005/09/08(木) 11:08:48ボタンをクリックした時刻から48時間後の時刻をAとします。
Private A as Date
Private Sub Command1_Click()
A = DateAdd("h", 48, Now)
End Sub
タイマーイベントでAまでの残り時間を表示する処理をしたいと考えております。
Private Sub Timer1_Timer()
dim B as Date
B = A - Now
Text1.Text = Format(B, "hh:nn:ss")
End Sub
この場合、"hh"のところに24時間以上の表記ができるプログラムを作成したいのですが、
ご教授願います。
タイマーのインターバルは1秒(1000m秒)です。
0361デフォルトの名無しさん
2005/09/08(木) 11:16:050362デフォルトの名無しさん
2005/09/08(木) 11:46:32じゃダメなの?
0364デフォルトの名無しさん
2005/09/08(木) 12:17:58エクセルのVBAで小数点の切り上げ方が(切り下げ方も)判りません。
cells(1.1)=round(xx、0)
だと動くんですが、cells(1.1)=roundup(xx、0)とやると
エラーになってしまいました。
どなたか教えてください。
0365デフォルトの名無しさん
2005/09/08(木) 12:26:030366デフォルトの名無しさん
2005/09/08(木) 12:43:49VBAなんて資料いっぱいあると思うんだけどなんで質問する前に自分で調べないんだろう。
ここに使い方書いてあるみたいだから、手動でやってマクロ記録してみたら?
http://support.microsoft.com/default.aspx?scid=kb;ja;880970
0367デフォルトの名無しさん
2005/09/08(木) 12:53:05一応、調べたんですが、ワークシート上じゃ簡単なんですが
ユーザーフォームとコマンドボタンでやると動かないんですよね。
困った〜
0368デフォルトの名無しさん
2005/09/08(木) 12:56:47何様のつもりだ。
0369デフォルトの名無しさん
2005/09/08(木) 13:08:18お互い様。
0370デフォルトの名無しさん
2005/09/08(木) 13:40:14違うよ。
0371デフォルトの名無しさん
2005/09/08(木) 17:29:150372デフォルトの名無しさん
2005/09/08(木) 17:47:56ADOとかDAOとか使うとか
0373デフォルトの名無しさん
2005/09/08(木) 17:49:560374デフォルトの名無しさん
2005/09/08(木) 18:02:53With Me
.Top = Left(.strTop,5) - 1000
End With
みたいにVB組み込みの関数なら問題ないんだよね。
APIとか自作の関数がNGって事で間違いないかな。
0375デフォルトの名無しさん
2005/09/08(木) 19:56:50クラス(class)なら自作でも With 〜 End With文 利用できるよ。
0376デフォルトの名無しさん
2005/09/08(木) 20:09:36TextBox でEnableプロパティを Falseにすると表示されている文字が灰色になってしまいます。
そこで文字色を灰色ではなくて黒のままにしておきたいのですが、そのようなことは可能でしょうか。
Frameの中にTextBoxをいれてFrame.Enabel=Falseにすると文字色は黒のままで文字の入
力もできなくなるのですが、なにかもうちょっとすっきりできないのかと思っています。
WindowsAPI使って実現できませんでしょうか。
よろしくお願いします。
0377デフォルトの名無しさん
2005/09/08(木) 20:37:58既存のボイスチャットソフト(TSとか)を使ってる時、
ボタン1つでwavを再生し相手に聞かせるプログラムを作りたいのですが、
その方法が見つかりません。
どのような方法があるでしょうか。よろしくお願いします。
0378デフォルトの名無しさん
2005/09/08(木) 21:18:50何を聞きたいのかサッパリ理解できないし、それが俺の読解力のせいとも思えん。
「制御構造外」とは何?
しかし>>375はよく374の意図がわかるな。エスパーですかひょっとしてw
0379デフォルトの名無しさん
2005/09/08(木) 21:46:38お前は話しにならん
0380デフォルトの名無しさん
2005/09/08(木) 21:48:33知ってるならその方法でいいじゃん。
なぜもうちょっとすっきり出来ないか教えてあげよう。
フォームにですね、深く掘り込まれた枠で(クラシック表示のとき)、
白い背景で、黒い文字が(白とか黒は環境依存)書かれた場所は、
「何か文字を入力できる」
ということを表す記号(表現)なのです。
逆に言うと、入力できないのにグレーでないのは、あまり
よろしくないと、つまりユーザーが混乱するよと、M$はかんがえたのです。
Windowsではそういうルール(ガイドライン)になっているので、
「ガイドラインを知らなくてもそのように作れるように」
EnabledをFalseにすると、親切でグレーにしてくれているのです。
WindowsAPIでどうにかならないか、ということだけど、
EnabledがFalseのときにグレーになるのは、VBでもたぶん
EnableWindow(hWnd, fEnable)というAPIでやってるの。
あきらめてください。
でなきゃ自作。
0381デフォルトの名無しさん
2005/09/09(金) 00:34:180382デフォルトの名無しさん
2005/09/09(金) 00:43:28ツールバー > ユーザー設定 > コマンド > 編集 > コメントブロック
キーに割り当てたければアドイン作れ。
0383デフォルトの名無しさん
2005/09/09(金) 01:06:43ありがとうございます。
無事、登録できました。
0384デフォルトの名無しさん
2005/09/09(金) 02:10:21WebBrowserコントロール上で押されたキーを得るにはどうすれば良いですか?
KeyDownイベントが見あたらないんですが、まさかフックしなくちゃダメなんてことは無いですよね。
0385デフォルトの名無しさん
2005/09/09(金) 12:01:050386デフォルトの名無しさん
2005/09/09(金) 22:31:49WebBrowserにはKeyDownイベントが無いので MSHTML.HTMLBody の WithEvents して HTMLBody_onkeydown() イベントを拾って
MSHTML.HTMLWindow から MSHTML.IHTMLEventObj を取得して 押されたキーを調べる
Dim WithEvents objEventBoby As MSHTML.HTMLBody
Private Sub WebBrowser_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Set objEventBoby = pDisp.Document.body
End Sub
'WebBrowserでキーが押された時のハンドら
Private Sub objEventBoby_onkeydown()
Dim evn As MSHTML.IHTMLEventObj
Set evn = WebBrowser.Document.parentWindow.Event
'押されたキー
Debug.Print evn.keyCode
Set evn = Nothing
End Sub
後は自分で何とかしろ
0387386
2005/09/09(金) 23:10:250388名無しさん@そうだ選挙に行こう
2005/09/11(日) 11:05:110389名無しさん@そうだ選挙に行こう
2005/09/11(日) 11:56:36Dim a(10, 5) as Double
for i = 0 to 10
call 他の関数(a(i , ))
next
配列の一番目(10で定義してある)の部分のみをiにしたいんだけど
どうすればいいのでしょうか?
0390名無しさん@そうだ選挙に行こう
2005/09/11(日) 12:48:15素直に
Call 他の関数( a , i )
にすれば問題無いわけだが。
0391デフォルトの名無しさん
2005/09/12(月) 18:46:580392デフォルトの名無しさん
2005/09/12(月) 19:06:42初期化とは0でクリアなのか何かの値を入れたいのか
0393デフォルトの名無しさん
2005/09/12(月) 19:37:22配列の数だけNULL値を入れたいです。
0394デフォルトの名無しさん
2005/09/12(月) 20:46:55NULL値?初期状態にしたいだけなら
Dim A() as ほげ
で宣言しておいてクリアしたいときに
ReDim A(数)してやれ
0395デフォルトの名無しさん
2005/09/12(月) 23:00:45TabStrip.Tabs.Add , , "あいうえお"とやるとキャプションが設定できているようで表示してくれるんですが
TabStrip.Tabs.Add , , WebBrowser1(index).LocationNameでは空白のままです。
文字列型に代入してやってみてみましたが同じでした。
Addのあとにインデックスを設定していないのがだめなのでしょうか?
また、このキャプションの設定は追加する時のみにしか設定できないでしょうか?
バージョンは6.0です。
よろしくお願いします。
0396デフォルトの名無しさん
2005/09/12(月) 23:03:330397デフォルトの名無しさん
2005/09/12(月) 23:26:20Addの前に
Debug.Print WebBrowser1(index).LocationName
でも入れて、ちゃんとLocationNameが入ってきてるのは確認できてる?
0398デフォルトの名無しさん
2005/09/12(月) 23:43:53やってみたところ入ってきていませんでした。
ただ、タブをすべて削除するという下のプロシージャを実行した場合は削除後にキャプションが設定されました。
Private Sub AllDel_click()
TabCtrl.Tabs.Clear
Debug.Print WebBrowser1(0).LocationName
WebBrowser1(0).Navigate ("http://www.yahoo.co.jp")
TabCtrl.Tabs.Add , , WebBrowser1(0).LocationName
TabCount = 0
Del.Enabled = False
DelButton.Enabled = False
End Sub
0399デフォルトの名無しさん
2005/09/12(月) 23:54:04TabCtrl.Tabs.Clear
WebBrowser1(0).Navigate ("http://www.yahoo.co.jp")
Debug.Print WebBrowser1(0).LocationName
TabCtrl.Tabs.Add , , WebBrowser1(0).LocationName
TabCount = 0
Del.Enabled = False
DelButton.Enabled = False
End Sub
↑でも入ってきてる?
0400デフォルトの名無しさん
2005/09/12(月) 23:56:010401デフォルトの名無しさん
2005/09/12(月) 23:59:23はい。はいってきてます。
0402デフォルトの名無しさん
2005/09/13(火) 00:34:01WebBrowser1(0).Navigate ("http://www.yahoo.co.jp")
While WebBrowser1(0).Busy: DoEvents: Wend
TabCtrl.Tabs.Add , , WebBrowser1(0).LocationName
’このまま使用すると大いにバグだからイベントで。
0403デフォルトの名無しさん
2005/09/13(火) 00:41:57Navigateした後にスグにAddはイカン!!
WebBrowserはページの読み込みが完了しないと満足にメソッド・プロパティが使えないからね
タイトルは DocumentCompleteイベントかTitleChangeイベントの通過後でないと駄目
ご参考に…
ちなみにブレイクポイントで止めて LocationName を見る場合は デバッグでロジックを止めた時点でページの読み込みが完了するので
正確な値が返って来るので注意
0404デフォルトの名無しさん
2005/09/13(火) 00:50:090405デフォルトの名無しさん
2005/09/13(火) 01:17:46busyについてよく分かっていないので明日調べてやってみます。
>>402
入ってないんですか。
てっきりyahoo!と表示されたので・・・。
そのプログラムについても調べてみます。
>>403
読み込みが完了してからですね。
自分なりにやってみようと思います。
0407デフォルトの名無しさん
2005/09/13(火) 01:26:30わかるけどな。
ちゃんとするにはVBだけでは無理。
0408デフォルトの名無しさん
2005/09/13(火) 11:06:520409デフォルトの名無しさん
2005/09/13(火) 12:29:040410デフォルトの名無しさん
2005/09/13(火) 12:30:03EOFコード(&H1A)を入れて文字列をバイナリデータとして保存
EOFコードってWindowsでは使われてないでしょ? 必要あるの?
0412デフォルトの名無しさん
2005/09/13(火) 15:02:08返信ありがとうございます。初期化することが出来ました。
0413デフォルトの名無しさん
2005/09/13(火) 21:41:25もし可能なら方法を教えてください
0414デフォルトの名無しさん
2005/09/13(火) 21:50:31やりたい事がいまいち伝わってこないが、絵などの上に入力したいのか?
日本語なども必要ならIME,IMMあたりで自作。
0415デフォルトの名無しさん
2005/09/13(火) 21:57:19回答ありがとうございます。
透明化自体は無理ですか?
0416デフォルトの名無しさん
2005/09/13(火) 21:58:58透明化というものが何を指すかわからんからなんとも。
0417デフォルトの名無しさん
2005/09/13(火) 22:15:02貼り付けたいのですが。
0418デフォルトの名無しさん
2005/09/13(火) 22:18:110419デフォルトの名無しさん
2005/09/13(火) 22:28:24この時に位置あわせの為に下の画像が見えるようにしたいのです。
で、その為にテキストボックスを透過させたい訳です。
0420デフォルトの名無しさん
2005/09/13(火) 22:34:46WORDの図形描画でのテキストボックスの配置が
イメージに近いと思います
0421デフォルトの名無しさん
2005/09/13(火) 22:40:22Wordは知らん。
2000/XP以降でいいなら別のウインドウ作ってBorderStyleを0にして
ウインドウごと透過させるって手もあるようなないような
0422デフォルトの名無しさん
2005/09/13(火) 22:43:06かなり強引だがVBでは妥当かもな
0423デフォルトの名無しさん
2005/09/13(火) 22:54:49SetLayeredWindowAttributesだったかなーウインドウごとのは。
一度昔使ったきりだから忘れたや。
0424405
2005/09/13(火) 23:30:47イベント通過後に変更しようと思うのですが、キャプションのみの設定はどのように
記述すればいいのでしょうか?あと、TabStrip.Tabs.AddのインデックスはTabStripプロパティの
プロパティのタブにあるインデックスのことでしょうか?
0425デフォルトの名無しさん
2005/09/13(火) 23:48:27TabStrip1.Tabs(1).Caption = "a"
など・・・ヘルプやGoogleやIDEの入力支援で探す努力くらいはやらないか
0426デフォルトの名無しさん
2005/09/13(火) 23:56:16ラベルじゃダメなの?
ラベルなら何も考えずにできるとおもうんだけど。
ユーザーが文字編集できるようにしたいなら、その時だけ同じ大きさの
TextBoxを同じ位置にBringToFrontして表示すればいいんだし。
0427デフォルトの名無しさん
2005/09/13(火) 23:59:37検索してみたのですが、検索方法が悪いのか目的のものがなかなか出てこなかったので。。。
入力支援でいろいろやってみたのですが、Tabsの後にインデックスをつけてると.のあとにCaptionが
でてくるということに気づきませんでした。
ありがとうございました。
0428デフォルトの名無しさん
2005/09/14(水) 00:52:370429デフォルトの名無しさん
2005/09/14(水) 00:56:50必ず名前欄に最初の質問のレス番号を入れましょう。
0430デフォルトの名無しさん
2005/09/14(水) 01:09:48別のウインドウ(Form)作ってと言ってるだろ!
0431デフォルトの名無しさん
2005/09/14(水) 03:01:37なぜかdllを呼んで、dllから帰ってきた後VBのプログラムが不安定になるよ・・・
pictureをクリアーする「.cls」の部分で突然落ちるし、ファイルを開く「open〜」の部分でも突然落ちる
デバックしたけど落ちる場所がよくわからないしヽ(`Д´)ノウワァァァン
dllへ変数を参照渡しで送って、計算したものをVBへ返してもらってるんだけど
返ってきた値におかしいところは無かったです
ちょっとでも原因がわかる人がいたら助けてもらえませんでしょうか
。・゚・(ノД`)・゚・。
0432デフォルトの名無しさん
2005/09/14(水) 03:14:150433デフォルトの名無しさん
2005/09/14(水) 08:46:14Set WshShell = CreateObject("WScript.Shell")
WshShell.Run("hoge.exe")
とかの使い方わ解るんだけど
Wscript.Echo "Hallo"
Wscript.Sleep 1000
などをどうやって使えば良いのかわかりません。
Windows Script Host Object Modelを参照設定してもダメです。
代用法ではなく、上記のことを行える方法をご存じの方、どうかご教授お願いします。
0434デフォルトの名無しさん
2005/09/14(水) 16:39:36結果から言うとVBから WScript は使えない。
なぜかというと WScript.Shell は外部公開されているけど WScript はされて無いから。
WScript は VBS(ro JScript) の環境下でした使えない(当然ライブラリも存在しない)。
外部公開されてない以上 VBS でしか使う事ができんのです。
どうしても使いたかったら マイクロソフトに 「WScript を外部公開しろ」と言って下さい。
まぁ VBS から VB製のActiveXを呼び出して その ActiveX に WScript を渡すという事は出来るんだけど。
0435もんもん
2005/09/15(木) 21:28:270436デフォルトの名無しさん
2005/09/15(木) 22:15:03はい次↓
0437デフォルトの名無しさん
2005/09/16(金) 01:21:04Web上にある画像を読み込んで、その画像を加工したいと思ってます。
jpgやbmpだったら
OleLoadPicturePath() を使って一旦PictureBoxに貼り付けて
ピクセルモードにしてピクセル単位でいじれたのですが
pngだと上の関数で読み込めませんでした。
なんとかピクセル単位のテーブルを作りたいのですが、
方法ありませんか。
ご存じの方いたら教えて下さい。
0438デフォルトの名無しさん
2005/09/16(金) 01:52:20もっとスマートに書くことはできますか?
0439437
2005/09/16(金) 02:04:41○Picture
0440デフォルトの名無しさん
2005/09/16(金) 02:30:31ある
0441デフォルトの名無しさん
2005/09/16(金) 13:30:54接続文字列は以下の様に設定しました。
CONN.Open "Provider=MSDASQL;driver=FileMaker Pro;database=XXX.fp5;password=1111"
この接続文字列を使用して、
RS.Open "SELECT * FROM XXX.fp5", CONN を実行すると
下記の実行時エラーが発生してしまいます。
[FileMaker][ODBC FileMaker Pro driver][FileMaker Pro]無効なデータベース名
この処理を行う前に対象DBがあるファイルメーカーは起動しています。
ファイルメーカーのDBに接続する場合、テーブル名とデータベース名は同じ名前で
よいのでしょうか?
よろしくお願いします。
0442デフォルトの名無しさん
2005/09/16(金) 15:13:150443デフォルトの名無しさん
2005/09/16(金) 15:20:12質問です。
ListBoxでStyleをチェックボックスにして
For i = 0 To List1.ListCount - 1
List1.Selected(i) = True
Next i
のように全部チェックをつけるとき、数百行あるだけでもえらく時間がかかるんですが、
速度を上げる良い方法はありませんか?
(できればチェックつけながら勝手にスクロールするのもやめさせたいです。)
0444デフォルトの名無しさん
2005/09/16(金) 15:29:45List1.Enabled = False
List1.Visible = False
For i = 0 To List1.ListCount - 1
List1.Selected(i) = True
Next i
List1.Visible = True
List1.Enabled = True
一瞬じゃない?
0445デフォルトの名無しさん
2005/09/16(金) 15:32:03enabledいらないんじゃ?
最後に
List1.listindex=0
とかもね
0446デフォルトの名無しさん
2005/09/16(金) 15:36:49無いと一瞬ちらつくから入れてる
0447デフォルトの名無しさん
2005/09/16(金) 16:04:15ありがとうございます。
早くなりました。
0448デフォルトの名無しさん
2005/09/16(金) 17:24:30他のタブからコンボがあるタブに戻ってくると、
なぜかそのタブにある全てのコンボボックスのTextが、
全選択されています
見た目悪いので、これを回避したいのですが・・・
タブクリック時にSelStartを1にすれば一応回避は可能なんですが、
一画面内のコンボボックスの数が多くて、その分書くのがめんどくさいです
何か、もっとスマートに回避できる方法はないでしょうか?
0449デフォルトの名無しさん
2005/09/16(金) 18:24:28StrConv関数 について質問です。
S = "\\\test\\\"
D = StrConv(S, vbWide)
この様なコードを書いた場合に、変数 D が
"¥¥¥test¥¥¥"
とならずに、
"\\\test\\\"
となってしまいます。
"\" だけ Replace関数 を使うしかないのでしょうか?
0450デフォルトの名無しさん
2005/09/16(金) 19:16:58自力で変換の関数書いては
0451デフォルトの名無しさん
2005/09/16(金) 19:55:54fp5 がテーブルの名前?
だったら
database=XXX
SELECT * FROM fp5
です。
ていうかおまえデータベースとテーブルがごっちゃに
なってないか?
0452デフォルトの名無しさん
2005/09/16(金) 20:05:58もっとスマートな書き方ではどう書けばよいですか?
0453デフォルトの名無しさん
2005/09/16(金) 20:13:06>>438
0454デフォルトの名無しさん
2005/09/16(金) 20:31:31Variantの初期値はEmptyでしょ。
NullとEmptyのちがい分かんないの?
FillMemory() で初期化しなさい。
データの長さは Variant型が16Byte の変数であるから もう分かるよね〜
初期化の値は 0 でいいよ。
0455デフォルトの名無しさん
2005/09/16(金) 20:35:200456452
2005/09/16(金) 21:44:32すみません、>>438は>>440で「ある」としか回答をもらっていないようなので、
(ただ、>>440氏の回答では>>438氏の質問にある「書くことは
できますか?」という
問題が解決していないので、実際出来るかどうかもまだ判然と
しないのですが)
こちらはどう書けばよいか、という問題の答えを探していますので
>>438では解決しませんでした。お手数をおかけしました。
>>454
Nullの伝播を前提としたライブラリを使用する必要があって、
初期値としてNullを持った変数が必要になります。
他社から提供されるActiveX DLLなので中身は分からないのですが、
想像するに、中でLeftやRightの$なし関数を使っているなどして
いるようで、Enptyを渡すとNullが返らないので結果が変わってしまいます。
NullとEmptyが違うので、あえてNullで初期化する必要が出来ています。
0457デフォルトの名無しさん
2005/09/16(金) 21:47:180458デフォルトの名無しさん
2005/09/16(金) 21:51:48問題外。出直して来い。
0459デフォルトの名無しさん
2005/09/16(金) 22:17:05引数(start)設定時に1よりも大きくすると正常に動作しませんよね?
0460デフォルトの名無しさん
2005/09/16(金) 22:22:41問題が起こる最小限のサンプルコード見せてくれ
0461デフォルトの名無しさん
2005/09/16(金) 22:24:14言いたいことはなんとなくわかる
ヘルプを百万回読み直せ
0462デフォルトの名無しさん
2005/09/16(金) 22:26:50正常に動作するけど。
もしかして
> 引数 start を指定した場合、Replace 関数は、指定された位置から引数 expression の文字列の末尾までを返します。
という公式仕様をバグだと勘違いしてる?
0463デフォルトの名無しさん
2005/09/16(金) 22:35:340464デフォルトの名無しさん
2005/09/17(土) 03:03:36既存のライブラリ等を使うか、もしくは自前で実装。
0465デフォルトの名無しさん
2005/09/17(土) 12:06:12WM_CHAR以外にもいろいろためして
みたのですが、どれも反応してないようです。
FindWindow関数やFindWindowex関数など、ぐぐってぐぐっていろいろ調べて、サンプルコードもたくさんあったのです参照して、
同じコードを使っても動かなくて、他をいろいろ見ても結局同じコードで説明しているのでこれ以上は調べようがなく・・アドバイスもらえないでしょうか;_;
ウインドウハンドルはちゃんと取れているようです。(他のアプリで調べました)
プログラムは以下のとおりなのですが、どこが問題なんでしょうか・・?
Private Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, _
ByVal wparam As Long, lParam As Any) As Long
Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" _
(ByVal hwndParent As Long, _
ByVal hwndChildAfter As Long, _
ByVal lpszClass As String, _
ByVal lpszWindow As String) As Long
Private Sub Command2_Click()
Text1.Text = "ready"
Dim hWnd1 As Long
Dim hWnd2 As Long
Dim retvalue As Long
hWnd1 = FindWindow(vbnullstring, "無題 - メモ帳")
Text1.Text = hWnd1
hWnd2 = FindWindowEx(hWnd1, 0, "Edit", vbnullstring)
Text2.Text = hWnd2
retvalue = SendMessage(hWnd1, WM_paste, 52, 0)
End Sub
0466デフォルトの名無しさん
2005/09/17(土) 12:09:29最後のSendMessageはhWnd2に向けて送れよ。
0467465
2005/09/17(土) 12:22:09あー、すみません、いろいろ試してたので・・
retvalue = SendMessage(hWnd2, WM_CHAR, 52, 0)
とかでやってもダメでした。。
retvalue = SendMessage(hWnd1, WM_CLOSE, 0, 0)
も動かないです。
なんかもっと基本的なことか根本的な間違いでしょうか・・@@
0468デフォルトの名無しさん
2005/09/17(土) 12:56:02なんだこれw
WM_PASTEって文字通り「貼り付け」でしょ?
何を貼り付けるの?それはクリップボードの文字列だよね。
その辺わかってるのかな。
0469デフォルトの名無しさん
2005/09/17(土) 14:20:18↓
Clipboard.SetText Text1.Text
retvalue = SendMessage(hWnd2, WM_paste, 52, 0)
0470デフォルトの名無しさん
2005/09/17(土) 14:22:570471465
2005/09/17(土) 14:42:06Private Const WM_CHAR = &H102
を追加したらWM_CHARは動くようになりました。なぜこれが必要なのか
よくわかんないけど。。
アドバイスもありがとうございます。
0472デフォルトの名無しさん
2005/09/17(土) 14:57:420473デフォルトの名無しさん
2005/09/17(土) 14:58:07-----------------
0474デフォルトの名無しさん
2005/09/17(土) 15:27:190475デフォルトの名無しさん
2005/09/17(土) 15:36:290476デフォルトの名無しさん
2005/09/17(土) 15:51:06「卂」という漢字(第二水準以降の文字?)をテキストボックスに
入力した後にDBの項目に対して更新かけると「?」になって登録されます。
外字登録せずに「卂」で登録できるようにするためには
どのような手法を使えばよろしいでしょうか?
処理はこんな感じで実装しています。
Dim strSQL As String
gobjConnect.BeginTrans
strSQL = "UPDATE T_TEST SET Item01 = '" & Me.txtText.text & "'"
Call gobjConnect.Execute(strSQL, , adCmdText + adExecuteNoRecords)
gobjConnect.CommitTrans
接続はADOで行っています。
VB6(SP5)+SQL-SERVER7.0
0477デフォルトの名無しさん
2005/09/17(土) 15:54:16UNICODEをまともに扱いたかったらVB.NETでも使ってくれ
0478476
2005/09/17(土) 15:56:52今からそれをやることができないので
なんとか今のヴァージョンでクリアさせたいのですが・・・
無理な話なんでしょうか?
0479デフォルトの名無しさん
2005/09/17(土) 16:05:09無理とは言わないが・・・
大抵のコントロールは入力出力UNICODEが通らない
内部での扱いやOSでもきつい
ttp://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200306/03060029.txt
0480476
2005/09/17(土) 16:20:53早速のResありがとうございます。
表示に関してはgrapecity社のSpread7で回避ができそうなのですが
問題はDBに登録する際に「?」になってしまうことなのです。
回避する方法を教えてください、お願いします。
0481デフォルトの名無しさん
2005/09/17(土) 16:22:07VB標準のコントロールはUnicodeを扱えない。
Unicodeを扱いたいなら、Unicodeに対応したコントロールを買ってくるか、
作る必要がある。他にもUnicodeを扱えない場面は多々ある。
ぶっちゃけVB6で作るのはあきらめて、Javaか.NETかC++にするのが良い。
0482デフォルトの名無しさん
2005/09/17(土) 16:24:37しらんがな。
Spread7の人間に聞いてくれ
0483476
2005/09/17(土) 16:34:00もう納品済みな物なので今から方向転換するのが厳しいのです・・・
Spread7でUnicodeが扱えるのでそっちで聞くことにします。
0484デフォルトの名無しさん
2005/09/18(日) 02:49:01大きなファイルなので、一度全て読み込んで・・・ということはせずに処理したいのですが。
0485デフォルトの名無しさん
2005/09/18(日) 03:00:09DBに変換して使う
INDEXファイルを作っておく
1行づつ読んで改行を数える
一度全て読み込んで
どちらにしろ、一発じゃ無理
0486デフォルトの名無しさん
2005/09/18(日) 11:15:51IWshRuntimeLibraryのRegDeleteメソッド、
APIのRegDeleteKey関数では、サブキーを持つものは1発では削除できませんでした。
ググっても.NETの方法や、VB6でもAPI使えばサブキーを持つキーの削除が出来るって情報はあるのですが
具体的にどうすれば良いのかが解りません。
レジストリスクリプト(.reg)やreg.exeをつかっての削除ならわかるのですが
そういったものを使わずにVB6でサブキーごと一発で削除する方法をご存じの方、どうか教えてください。
0487デフォルトの名無しさん
2005/09/18(日) 11:40:56質問する前にググッた?
いや、そんなはずはないな。
俺もレジストリのキーの再帰的な削除なんてやったことなかったんで
ググってみたけど、3分程度で答え見つかったよ。
0488デフォルトの名無しさん
2005/09/19(月) 01:03:57VB6.0です。
0489デフォルトの名無しさん
2005/09/19(月) 01:16:49DLL使うのが無難だな
0490デフォルトの名無しさん
2005/09/19(月) 01:44:08レスThx
調べてみてVoxっての見つけたんだが、うまく出来んorz
ヘルプ見てコピペしたんだが、エラーが出る(´・ω・`)
dll使うの初めてだから良く分からないorz
どこかに良いサンプルみたいなのってありますか?
0491デフォルトの名無しさん
2005/09/19(月) 02:22:510492デフォルトの名無しさん
2005/09/19(月) 02:29:25Option Explicit On
Module vox
Public ID As Integer
Declare Function VoxLoad Lib "vox.dll" (ByVal pFileName As String) As Integer
Declare Function VoxPlay Lib "vox.dll" (ByVal ID As Integer) As Boolean
Declare Function VoxPause Lib "vox.dll" (ByVal ID As Integer) As Boolean
Declare Function VoxRelease Lib "vox.dll" (ByVal ID As Integer) As Boolean
Declare Function VoxSetLoop Lib "vox.dll" (ByVal ID As Integer, ByVal Count As Integer) As Boolean
Declare Function VoxCheckDevice Lib "vox.dll" (ByVal ID As Integer) As Boolean
Declare Function VoxSetVolume Lib "vox.dll" (ByVal ID As Integer, ByVal Volume As Integer) As Boolean
Declare Function VoxGetVolume Lib "vox.dll" (ByVal ID As Integer) As Integer
Declare Function VoxFade Lib "vox.dll" (ByVal ID As Integer, ByVal StartVolume As Integer, ByVal EndVolume As Integer, ByVal FadeTime As Integer) As Boolean
Declare Function VoxDelete Lib "vox.dll" (ByVal ID As Integer) As Boolean
Declare Function VoxGetTotalTime Lib "vox.dll" (ByVal ID As Integer) As Integer
Declare Function VoxGetCurrentTime Lib "vox.dll" (ByVal ID As Integer) As Integer
Declare Function VoxSeek Lib "vox.dll" (ByVal ID As Integer, ByVal Time As Integer) As Boolean
Declare Function VoxGetStatus Lib "vox.dll" (ByVal ID As Integer) As Integer
End Module
'再生
ID = VoxLoad("C:\a.ogg")
Call VoxPlay(ID)
-------------------------------------------------------------------------------
>Option Strict Off
>Option Explicit On
>Module vox
>End Module
ここの部分がエラー出る。.NETのものなのかな?
Option Explicit On → Option Explicit
にして、他削ったらエラー出ないけど、動かない(´・ω・`)分かりにくくてスマソ
0493デフォルトの名無しさん
2005/09/19(月) 02:29:520494デフォルトの名無しさん
2005/09/19(月) 02:32:49.NETじゃなきゃ使えないって事?
工夫次第で使えるのかな?
0495デフォルトの名無しさん
2005/09/19(月) 02:34:510496デフォルトの名無しさん
2005/09/19(月) 02:39:55出来た!
マジでThx。
ありがとう。・゚・(ノд`)・゚・。
0497486
2005/09/19(月) 04:36:39ググりましたよ。
でも値を持つキーごと削除する方法とか、再帰的に削除する方法は解るんだけど
XPのreg.exeみたいにキー以下にサブキーがあっても一発で削除出来る方法が分からないです。
NETの方法とか書籍の見出し広告ばかりヒットしちゃって。
ググって答えを見つけたなら、そのページへのリンクを貼ってください。
ページ直ではなくGoogleの検索結果一覧へのリンクでもかまいません。
間違いなく検索結果の10件の中に答えがあるというなら、後は自分で探しますから。
0498デフォルトの名無しさん
2005/09/19(月) 09:38:030499デフォルトの名無しさん
2005/09/19(月) 11:57:30検索の仕方が甘いというか、諦めるのが早すぎると思うよ。根性なさ杉。
まずMSDNでRegDeleteKeyの項を確認するのは当然普通にやるよね?
そうすると「参照」のところになにやらそれっぽい臭い関数名が書いてあるじゃない。(SHDeleteKey )
で「RegDeleteKey SHDeleteKey」で検索かけると。。
0500デフォルトの名無しさん
2005/09/19(月) 13:05:420501デフォルトの名無しさん
2005/09/19(月) 13:39:42。。。ってそんな偉そうにいうような大仰なもんでもないと思うけどね。
誰でも>>499程度の知恵は使うでしょ、誰にも教えられなくても。
0502デフォルトの名無しさん
2005/09/20(火) 05:57:02テキスト1とテキスト2に数値を入れてコマンドボタンを押すと
テキスト1に入力した数値からテキスト2に入力した数値までを
全部足していくプログラムのやり方を教えてほしいです
テキスト2のが小さい場合はテキスト1までの数字を足していくって感じで
0503デフォルトの名無しさん
2005/09/20(火) 06:10:49・text1とtext2どちらの値が小さい(大きい)かを算出
・forで小さい方の数から大きい方の数までのループを組む
・ループ内で「変数=変数+forのカウンタ」という処理を行う
・ループを抜けたとき変数に入ってた値がお望みの物
0504デフォルトの名無しさん
2005/09/20(火) 06:13:28ありがとです
なんとなくやり方がわかりました
やってみま
0505デフォルトの名無しさん
2005/09/20(火) 09:49:48定数の一覧とかはたくさん見つかるんですが、定数だけわかっても
パラメータの乗せ方って動作によって違いますし。。。
0506デフォルトの名無しさん
2005/09/20(火) 09:59:17なんでも。
つーか出来ること一覧から選んで使うんじゃなくて
やりたいことから必要な物を探し当てるのが普通だろ。
出来ること一覧なんてまともに出したら万単位じゃきかないんだから有っても無駄だよ。
0507505
2005/09/20(火) 10:13:37う、そうですね・・・
私の探し方が未熟なんでしょうかorz
開発してると、毎回SendMessageでやりたいことがいろいろ出てきて、
事案ごとにキーワード変えながら検索してみるんですが、
クリーンヒットってほとんどないんです
「SendMessageで○○をしたい」と考えたとき、
どんなふうに探されてますか?
なんかあいまいですみません・・
0508デフォルトの名無しさん
2005/09/20(火) 10:20:530509デフォルトの名無しさん
2005/09/20(火) 10:22:26何のメッセージを送ってるかそもそもわかってないでしょ。
誰が誰にメッセージしてるかとか、それが一体何で、どうやって到達するかとか。
0510デフォルトの名無しさん
2005/09/20(火) 11:30:30「SendMessageで○○をしたい」で方法に辿り着けず挫折した事も多いんじゃいかな
SendMessageは定数の一覧が全て。定数の一覧に載っていないメッセージは送信しても受け付けません
定数の一覧に載っていない処理は絶対にSendMessageじゃ出来ないんよ
検索方法変えな
まず定数の一覧を見て必要な処理が出来るか検討する
見つかったら そのメッセージでMSDNがぐーぐる
見つかんなかったら さっさと諦める。
時間かければ見つかるかも知れないけど 出来ない事延々と探す時間がもったいないよ
どうしても必要とせがまれた時は
「VB or Windows では実現が難しい」
「実現するにはそれなりの工数が必要」
とでも言って脅せ
0511デフォルトの名無しさん
2005/09/20(火) 11:39:540512デフォルトの名無しさん
2005/09/20(火) 12:41:100513デフォルトの名無しさん
2005/09/20(火) 12:43:150514デフォルトの名無しさん
2005/09/20(火) 16:33:49フォームのkeydownイベントで↑↓でカーソル移動(SendKeysでTab、Shift+Tab)
するようにしているんですが、
コンボボックスを通過する際、カーソルはきちんと動くものの、
コンボの選択内容が上下に変わってしまいます
コンボボックスで、矢印キーの上下で項目を選ばせないようにするには、どうしたらいいでしょうか
0515デフォルトの名無しさん
2005/09/20(火) 16:49:45カーソル上でで移動するというそっちの仕様がおかしい
0516デフォルトの名無しさん
2005/09/20(火) 17:12:38コンボのKeyDownで ↑↓ が入力された時 KeyCode = 0: Shift = 0 にする
でもその仕様は確かに変
↑↓でカーソルを移動するのはキーボード重視になっているからだと思うんだけど
コンボを↑↓で選択したくなったらどうするの?ワザワザマウス使うの?
0517514
2005/09/20(火) 17:38:09コンボボックス上ではEnterキーでのみカーソル移動させていたら、怒られましたorz
>>516
ありがとうございます
それでやってみたんですが、こんどはAlt+↓が効かなく・・・
も少し粘ってみます
0518デフォルトの名無しさん
2005/09/20(火) 17:53:17プロジェクトファイル(vbp)で実行した場合は問題なく動作するのですが、
exeファイルを作成し、実行したらオートメーションエラーが発生します。
(同じPCで行っています。)
VBPで動作して、コンパイルしたexeだと動かないって、
一般的にどのような理由が考えられますか?
0519デフォルトの名無しさん
2005/09/20(火) 17:57:42エラーナンバーも出ないのか
0520518
2005/09/20(火) 19:30:16エラーナンバーを表示させていませんでした。
実行したところ、「-2147024770 オートメーションエラーです。指定されたモジュールが見つかりません。」と出ます。
0521518
2005/09/20(火) 19:51:23「-2147417848: オートメーション エラーです。
起動されたオブジェクトはクライアントから切断されました」
が、exeのみで発生するエラーです。
0522デフォルトの名無しさん
2005/09/20(火) 22:09:40ボタンを押してcsvデータから一行ずつデータを読み込みxlsデータに書き込んでいくプログラムを組んでいるのですが、
xlsデータに書き込む時に任意のセルから書き込むようにしたいのですがわかりません。
下記のサンプルソースではデータをエクセルのA1から順に入れている形です。
これをセルのE5から順に入れていく形にしたいのですが、よろしくお願いします。
****サンプルソース****
Dim xls As Excel.Application
Dim strOneLineData As String
Dim strArrOneData() As String
Dim intFileNumberCSV As Integer
Dim i As Integer
Dim lngLineCnt As Long 'csvファイルの読み込み済み行数の格納
Dim strCEL_No As string 'Excel上に出力するセル位置の格納する
Set xls = New Excel.application 'excelの設定
With xls
.Visible = False 'Excelを非表示にする
'csvファイルのopen
intFileNumberCSV = FreeFile
Open c_strCSVFileName For Input As intFileNumberCSV 'ファイル名を作成します。
.Workbook.Add 'Excelにワークシートを追加する
'csvファイルがEOFになるまで、一行づずつ読み込む
lngLineCnt = 1
Do While Not EOF(intFileNumberCSV) '終端までループを繰り返す
*****下記に続く*****
0523デフォルトの名無しさん
2005/09/20(火) 22:10:12Line Input #intFileNumberCSV, strOneLineData
strArrOneData = Split(strOneLineData, ",") '読み込んだ一行分のデータを分割
For i = 0 To UBound(strOneLineData)
strCEL_No = Chr(Asc("A") + i) & lngLineCnt
.Range(strCEL_No). Select
.ActiveCell.FormulaR1C1 = strArrOneData(i)
Next i
lngLineCnt = lngLineCnt + 1
'Debug.Print writestr
Loop
Call .ActiveWorkbook. SaveAs(c_strXLSFileName, xlNormal) 'エクセル保存
'csvファイルのclose
Close #intFileNumberCSV
xls.ActiveWindow.Close
xls.Quit
End With
Set xls = Nothing
0524デフォルトの名無しさん
2005/09/20(火) 23:40:590525デフォルトの名無しさん
2005/09/20(火) 23:49:190526デフォルトの名無しさん
2005/09/21(水) 00:02:37Nothingしなかったらそういうのが出た気がする。
ちがってるかもしれんが・・・
0527デフォルトの名無しさん
2005/09/21(水) 00:50:31デスクトップ右クリックメニューの「等間隔に整列」を
ロジックで実現する方法を教えてください。
よろしくお願いいたします。
0528デフォルトの名無しさん
2005/09/21(水) 00:59:42質問の意味がわからん
何がしたいんだ?
0529デフォルトの名無しさん
2005/09/21(水) 02:56:44画像a.bmpの上で黒を透明色にした画像b.bmpを乗せたいんですけど、
Pic1.Picture = LoadPicture("C:\a.bmp")
Pic2.Picture = LoadPicture("C:\b.bmp")
TransparentBlt(Pic1.hdc, 0, 0, Pic2.Width, Pic2.Height, Pic2.Picture, 0, 0, vbBlack '黒を透明色にしてPic2をPic1にコピー
Pic1.Refresh
これで出来たんですけど、b.bmpを0.2秒毎に動かそうとして
i=0
Do
Pic1.Picture = LoadPicture("C:\a.bmp")
Pic2.Picture = LoadPicture("C:\b.bmp")
TransparentBlt(Pic1.hdc, i, 0, Pic2.Width, Pic2.Height, Pic2.Picture, 0, 0, vbBlack '黒を透明色にしてPic2をPic1にコピー
Pic1.Refresh
i=i+10
'0.2秒ウェイト
Loop
こんな感じにしたらRefreshに1秒程かかって思うように動きませんでした。
もっと早く動かすにはどうしたら良いですか?
分かりにくい文章ですいません。
0530デフォルトの名無しさん
2005/09/21(水) 03:02:12ちょwwwwおまっwwwwツボ入ったwww
0531デフォルトの名無しさん
2005/09/21(水) 06:25:54text1とtext2に数値を入れて
text1の数値からtext2までの数値を全部足していって(1と10入力したら答えは55表示みたいな)
答えをtext3に表示されるというプログラムを組みたいのですが、挫折しまくりです orz
Private Sub Command1_Click()
Dim a As Integer
Dim b As Integer
Dim c As Integer
Dim sum As Integer
a = Val(Text1.Text)
b = Val(Text2.Text)
sum = 0
For c = a To b
sum = sum + a
Next c
Text3.Text = sum
End Sub
現在こんな感じです
たぶんすっごい突っ込みどころ色々あると思うんですがアドバイスお願いします
0532531
2005/09/21(水) 06:46:400533275
2005/09/21(水) 09:39:39送信側にPCを使ってテストする分には
うまくいってます。
あとは、実際に検査機を使ってテストするだけです。
また、質問があったら質問したいと思いますが、
質問に答えてくださった方々、
ありがとうございました。
0534デフォルトの名無しさん
2005/09/21(水) 10:10:53入力した文字列をそのまま配列に一文字ずつ格納して、
さらにそれをText2へ出力したいのですが。
例:Text1にABCDEFG… と入力
Hairetsu(0)=A
Hairetsu(1)=B
Hairetsu(2)=C …と。
Private Sub Command1_Click()
Dim Hairetsu(100) As String
Dim i As Integer
Dim Txt As String
Dim one As String
Dim l As Integer
Txt = Text1.Text
l = Len(Text1)
For i = 0 To l - 1
one = Mid(Txt, i + 1, 1)
Hairetsu(i) = one
Next
これで配列Hairetsuには、Hairetsu(0)=A Hairetsu(1)=B… となってると思うのですが、
Text2へそのままABCDEFG…を出力させるにはどうしたらよいのでしょうか??
よろしくお願いします。
0535デフォルトの名無しさん
2005/09/21(水) 10:21:06配列を繋げるならjoin関数で
0536534
2005/09/21(水) 10:39:21や、やっとできました…そんな関数すら知らずに朝から3時間も苦悩しておりました orz
ありがとうございます(;´Д`)逝ってきます
0537デフォルトの名無しさん
2005/09/21(水) 10:40:08dim s as string
for i=0 to ubound(Hairetsu)
s = s & Hairetsu(i)
next
Text2.Text = s
こんな感じでいいんじゃないかな
0538537
2005/09/21(水) 10:42:32join知らなかった俺はバカ。
join覚えときます・・・orz
0539534
2005/09/21(水) 10:48:36とんでもございません。
書き換えたらそちらでもちゃんと表示されました。
朝っぱらから漏れなんぞに付き合っていただきありがとうございました。
0540デフォルトの名無しさん
2005/09/21(水) 11:17:16文字列とバイト配列の相互変換を置いておきますね。
Dim pui8String() As Byte
Dim pcString1 As String
Dim pcString2 As String
pcString1 = "テスト用Strings"
' String -> Byte()
pui8String = StrConv(pcString1, vbFromUnicode)
' Byte() -> String
pcString2 = StrConv(pui8String, vbUnicode)
Debug.Print pcString2
今は使わなくても覚えておいて損は無いかも?
という事で閑話休題
0541デフォルトの名無しさん
2005/09/21(水) 11:21:570542デフォルトの名無しさん
2005/09/21(水) 12:29:230543デフォルトの名無しさん
2005/09/21(水) 13:33:58n(n+1)/2(1からnまでの総和)って知らんのかなぁ!?
例えば、Integer内でおさまる計算なら、1たすのも1000たすのも同じ時間。
逆に言えば、1を1000回たせば1000倍の時間がかかる。
そういうところがもっとも簡単に気ィ使えるとこなんだから…。
0544デフォルトの名無しさん
2005/09/21(水) 14:04:00空気嫁
0545デフォルトの名無しさん
2005/09/21(水) 15:05:36×strCEL_No = Chr(Asc("A") + i) & lngLineCnt
○strCEL_No = Chr(Asc("E") + i) & lngLineCnt + 4
ところでこのサンプルソースで動いたの?
いろいろ手直ししないと動かなかったんだけど。
俺がExcelXPのせいか?
0546デフォルトの名無しさん
2005/09/21(水) 15:35:070547デフォルトの名無しさん
2005/09/21(水) 23:52:38巷では出来ないといわれていたり、出来ると言われていたりよくわからん。
CreateThread自体はうまくいく。
スレッドのプロシージャに空ループを仕掛けるとCPU使用率が100%になるからだ。
グローバル変数を使ってスレッドを抜ける(=破棄)までは出来ている。
ところが、スレッドの中でちょっとでも変な事すると即座にあぼんするのだが、VBでマルチスレッドできない理由ってこれかい?
#基本的には、メインフォームに対して描画処理をしたいだけなんだが、form1.hdc とか触っただけであぼんってなんだゴルァ!
しかもIDEとP-Codeとネイティブで全部あぼんするタイミング違うし。
0548547
2005/09/21(水) 23:57:25WinXP SP2 + VB6.0 SP6です。
基本事項忘れますた
0549デフォルトの名無しさん
2005/09/22(木) 00:30:16マルチスレッドは可能 CreateThreadも上手くいく
ただしスレッド間のコントロール(オブジェクト)の同期がメチャクチャ
おまけに不安定。
CreateThreadの上手くいく=マルチスレッドが可能 という人もいれば
不安定=マルチスレッドが使い物にならない(出来ない) という人もいる
個人的な意見だけど VBランタイムがシングルスレッド用で出来ているから 満足にマルチスレッドは使えないと思う
やった事無いけど スレッドのプロシージャをDLL(Cで作ったヤツ)にすれば可能という話があるけど
試した事ないから知らない
0550デフォルトの名無しさん
2005/09/22(木) 01:10:38前スレでは無理だからループ回せとの回答を頂きましたが、FillStyleプロパティをflexFillRepeatにする事で
行や列などの範囲に対してループを回さず一発で書式変更が出来るようになることが解りました。
ご存じの方も居るかとは思いますが、前スレで回答が付かなかったということは
知らない方も多いと思うので報告させていただきます。
> VB6のMSHFlexGridコントロールで、列や行に対して
> 文字割付(上寄せとか左寄せとか)や、修飾(文字色とか太字とか)を
> 設定するにはどうすればよいですか?
>
> 今は列や行に対してではなく、セルに対する設定をForで回してますが非効率的なので。
> Spreadsheetコントロールならそういうことも出来るのですが、
> MSHFlexGridコントロールを使いたいので、どうかご教授お願いします。
0551デフォルトの名無しさん
2005/09/22(木) 01:13:35Mutexとか使って排他かければ可能なんじゃね?
逆に排他かけなきゃ共有物にアクセスしたらいかんのだけれど、この辺はVBに限った話じゃ無いわな。
スレッドが使用可能だって言っても、全部VBで開発しろって言われたら絶対に嫌ですって答えるな。
VB唯一の長所といってもいいデバッグのしやすさが失われるからなぁ。
VBはVM(って言ってもいいのかな?)の上にいる間だけ優しい顔をしてくれる感じ。そこから外れると辛い。
今の時期にVBに対して不便さを感じているなら、VB.NETなりC#なりに移ったほうがいいかも。
0552デフォルトの名無しさん
2005/09/22(木) 01:17:00じゃ無理だな。
0553デフォルトの名無しさん
2005/09/22(木) 04:35:240が入力されたら終了
そしてForm上に今までの最大値と合計を表示させる
というプログラムを作ってたのですが
最大値のところがうまくいかないので教えてほしいのです
たとえば -8 -5 0と入力した場合
最大値0 合計-13になってしまうのです
これを0を含まずに 最大値-5 合計-13となるようできませんでしょうか?
よろしくお願いします
0554デフォルトの名無しさん
2005/09/22(木) 05:27:11このスレにもほたるのひかりが流れてきました☆
残っているのはftgbyhふじこ、;だけです><
もう閉店なんだYO!
(・∀・)カエレカエレ!!
0555デフォルトの名無しさん
2005/09/22(木) 06:56:000556デフォルトの名無しさん
2005/09/22(木) 07:13:220557デフォルトの名無しさん
2005/09/22(木) 07:15:500558デフォルトの名無しさん
2005/09/22(木) 09:26:39とりあえず出来る程度の。
そもそもMSが保証なんてしてないし、VBで使用するオブジェクトがスレッドセーフな保証なんて一切ないし。
0559デフォルトの名無しさん
2005/09/22(木) 09:43:44VB6はこの先生きのこれるのか!
0560デフォルトの名無しさん
2005/09/22(木) 10:59:53ランタイムの動作はVistaまでは保証されてる。
当面は生き残ってるだろ。
それ以降は、VirtualPC推奨だ。
0561デフォルトの名無しさん
2005/09/22(木) 11:18:56このまま消え去るとは思えないのですが
0562デフォルトの名無しさん
2005/09/22(木) 11:27:19たぶんこのまま消えるよ
とても後継とは言えないVB.NETを後継ってことにしてね
0563デフォルトの名無しさん
2005/09/22(木) 20:31:29これが真実
真面目な話し2005ではオブジェクト思考がまったく分からない
糞エンジニアもどきにも使える様に、
言語仕様が変更されているから安心しろ。
0564デフォルトの名無しさん
2005/09/22(木) 23:45:26OOPが全くわからなかったらやっぱり使えないさ。
0565デフォルトの名無しさん
2005/09/23(金) 07:51:55環境は VB6SP6 WinXPSP2 です
自分が最初に試した方法は、下のようなコードでメッセージを送信する方法なのですが
SendMessage(Form1.hWnd, WM_KEYDOWN, KeyCode, 0)
しかし、これではAltキーが送信されませんでした
あれこれ調べても分からなかったので、Spy++でメッセージを調べて、同じようにメッセージを送信してみました
次のコードは Alt+Q を目的のフォーム(Form1)へ送っているつもりです
Call SendMessage(Form1.hWnd, WM_SYSKEYDOWN, VK_MENU, &H20380001)
Call SendMessage(Form1.hWnd, WM_SYSKEYDOWN, &H51, &H20100001)
Call SendMessage(Form1.hWnd, WM_SYSCHAR, &H71, &H20100001)
Call SendMessage(Form1.hWnd, WM_SYSKEYUP, &H51, &HE0100001)
Call SendMessage(Form1.hWnd, WM_KEYUP, VK_MENU, &HC0380001)
このコードでは、Form1 の KeyDown イベントは来るのですが、引数の Shift はゼロでした
どうすればVBのキーイベントで Alt キーを認識させられるのでしょうか?ご教授ください
0566デフォルトの名無しさん
2005/09/23(金) 08:54:460567565
2005/09/23(金) 09:12:37ありがとうございます
SendKKeysは知らないのですが、おそらくSendKeysのタイプミスですよね?
その前提で考えますと、SendKeysではアクティブなフォームにしか送信できないのでダメなんです
あくまでも任意のフォームに送信したいんです
0568デフォルトの名無しさん
2005/09/23(金) 09:58:30SPY++でメッセジー観察したのなら、単純にこのメッセージを送ればいい、
という訳にはいかなそうなのはわかりそうなもんだと思うんですが。
だからこそSendKeysなりSendInput(これはWin32API)なんてのが用意されているわけでしょ。
何で手動でSendMessageすることに固執するのかわからないけど、
仮に対象が他のアプリのウィンドウだとしても
どのみちウィンドウハンドルを取得可能であることが前提になるわけだから
SendKeysで何の問題もないと思うんだけど。(SetForegroundWindow)
0569565
2005/09/23(金) 10:13:04ありがとうございます
>単純にこのメッセージを送ればいい、 という訳にはいかなそう
すみません、検討も付かないのですが、具体的にはどういうことなのでしょうか?
>何で手動でSendMessageすることに固執するのかわからないけど、
手段は他の方法でも構わないのですが、任意のウィンドウを指定できないのが困るんです
たしかに直前に無理やりActiveにしてしまえばSendKeysでも出来ますが
それではウィンドウを切り替えたくない場合や、非表示のウィンドウに送れません
0570522
2005/09/23(金) 21:34:28亀レスすみません。こちらは動きますよ?
c_strCSVFileNameとc_strXLSFileNameをデスクトップにもともと存在しているファイルに設定しておいてますが。
それで、動くようにはなったんですが、EXCEL.EXEが起動しっぱなしになってしまうんですが・・・
VBを閉じればちゃんとEXE終了するんですが・・・。おかげで、二度目ボタンを押したとき動かないんですよね・・・
ちゃんと、quitもしてるのに・・・なんででしょうか?
0571デフォルトの名無しさん
2005/09/23(金) 22:03:26ttp://homepage1.nifty.com/rucio/main/technique/teq_15.htm
0572デフォルトの名無しさん
2005/09/24(土) 16:26:55既出かも知れんけど、昔MSからMVPs指定もらってたEdanmoさんのサイトにさ、
カスタマイズしたWebBrowserコントロールをフリー配布してるんだよね。(ソースもアリ)
これ使うと、ActiveXやScriptのONOFFもサポートしてるから
Sleipnir,Lunascape,Donutみたいにセキュリティ設定できるわけ。
VB6製タブブラウザでも作って暇つぶしはどうよ?w
タブだからってタブコントロールは使うべきではないようなw
つーか、機能的にはヤツラを超えてやろうってヤシいないか?w
【Namespace Edanmo】
ttp://www.mvps.org/emorcillo/en/index.shtml
で"Source Code"→"Old VB6 Code"のページにて
Custom WebBrowser control
がカズタム版のWebBrowserコントロールでOCXとしては単純にはこれだけでもいいんだけど、
より深い開発には
OLELIB.TLB - OLE interfaces & functions v1.7
もインストールしておくべし。
上記以外にもVB6の上級テクがずらりだねぇ
ところでWebBrowserコントロールでHTTPプロクシのチェンジわかるヤシいる?
0573デフォルトの名無しさん
2005/09/24(土) 22:27:460574デフォルトの名無しさん
2005/09/24(土) 22:30:04HEX
0575デフォルトの名無しさん
2005/09/24(土) 23:59:39VBやってて良かったと思ってますか?どうか教えてください
0576デフォルトの名無しさん
2005/09/25(日) 00:08:52スレを浪費するだけの愚かなアンケートをするな
0577デフォルトの名無しさん
2005/09/26(月) 04:55:57Formに最大値と合計を表示するプログラムを作ってみました
でも、ここで問題が
たとえば -6, -3, 1 と入力して終了したとき
最大値が1と表示され、合計値が+1されて-8となってしまうのです
1が入力された時点でループを抜ける方法はないでしょうか?
最大値-3 合計-9と表示させるようにしたいのです
お願いします
Private Sub Command1_Click()
Dim a As Integer
Dim b As Integer
Dim c As Integer
Do Until a = 1
Form1.Cls
a = Val(InputBox("1で終了", "タイトル"))
If a > b Then
b = a
End If
c = c + a
Loop
Form1.Print "最大"; b
Form1.Print "合計"; c
End Sub
0578デフォルトの名無しさん
2005/09/26(月) 05:02:31Private Sub Command1_Click()
Dim a As Integer
Dim b As Integer
Dim c As Integer
a = Val(InputBox("1で終了", "タイトル"))
Do Until a = 1
Form1.Cls
If a > b Then
b = a
End If
c = c + a
a = Val(InputBox("1で終了", "タイトル"))
Loop
Form1.Print "最大"; b
Form1.Print "合計"; c
End Sub
無理矢理。
試してないから間違ってるかも。
それか、if文でaが0ならループ抜けるようにするか。
0579デフォルトの名無しさん
2005/09/26(月) 05:12:36レスありがとうございます
試してみたらちょっとだめでした(´・ω・`)
Private Sub Command1_Click()
Dim a As Integer
Dim b As Integer
Dim c As Integer
a = Val(InputBox("0で終了", "タイトル"))
Do Until a = 0
Form1.Cls
If a > b Then
b = a
End If
c = c + a
a = Val(InputBox("0で終了", "タイトル"))
Loop
Form1.Print "最大"; b
Form1.Print "合計"; c
End Sub
今度はわかりやすくするために0で終了させるように変えてみたのですが
-6 -4 -2 0 と入力すると
やっぱり最大値が0になってしまいます
できたら-2で終わらせる方法教えてほしいです
0580デフォルトの名無しさん
2005/09/26(月) 06:24:20Do
a = Val(InputBox("0で終了", "タイトル"))
If a = 0 Then Exit Do
If a > b Then
b = a
End If
c = c + a
Loop
0581580
2005/09/26(月) 06:44:05間違ってるのはそこじゃなかった。最大値bは最初の入力で初期化する必要がある。
Private Sub Command1_Click()
Dim a As Integer
Dim b As Integer
Dim c As Integer
a = Val(InputBox("0で終了", "タイトル"))
b = a ' *** これが必要
Do Until a = 0
Form1.Cls
If a > b Then
b = a
End If
c = c + a
a = Val(InputBox("0で終了", "タイトル"))
Loop
Form1.Print "最大"; b
Form1.Print "合計"; c
End Sub
0582デフォルトの名無しさん
2005/09/26(月) 08:42:39VB6にて
画面上に常に線を引くプログラムを作りたいのですが
可能でしょうか?
他のソフトを起動したり何も起動していないときでも
常に画面上の一番手前に線を引きたいのです。
宜しくお願いします。
0583デフォルトの名無しさん
2005/09/26(月) 09:22:25可能
0584デフォルトの名無しさん
2005/09/26(月) 09:55:51可能ですか
やり方教えてください。
フォームに線を引いても他のソフトを
開くと下に行ってしまって
上手くいきません。
お願いします。
0585デフォルトの名無しさん
2005/09/26(月) 11:47:14データアクセスページでパラメータクエリー”システムセレクト”を読み込みます。
”システムセレクト”*********************
SELECT T_システム.*
FROM T_システム
WHERE ((T_システム.削除)=No) And T_コンディション.システム名=systemname
ORDER BY T_システム.ソートNO;
*************************************
systemnameの値をVBScriptから入力したいと思い、下記のようなスクリプトを書いてみました。
<SCRIPT language=vbscript>
<!--
MSODSC.RecordsetDefs("システムセレクト").parametervalues.Add("systemname", "Next")
-->
</SCRIPT>
ところがsystemnameにうまく"Next"が代入できません。
詳しい説明の書いたHPとか知ってたら教えてください。
ちなみに下記のページを参照してスクリプトを書きました。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdnacc2k2/htm/odc_creatingapopuppage.asp
0587デフォルトの名無しさん
2005/09/26(月) 16:53:00つ[ >>1 ]
つ[ ttp://www.google.co.jp/ ]
0588デフォルトの名無しさん
2005/09/26(月) 17:38:27知らないなら黙っててくれませんか?
0589デフォルトの名無しさん
2005/09/26(月) 19:09:140590デフォルトの名無しさん
2005/09/26(月) 19:19:55▼現在未解決の質問
計 0件
では、次の方どうぞ
0591582
2005/09/27(火) 08:04:14>>1を見ても、検索しても
わかりませんでした。
APIを使うのかなと思い調べてみたんですが
駄目でした。
わかりやすいヒントだけでもお願いします。
因みに>>588は私ではありませんが
知っているなら教えてください。
宜しくお願いします。
0592デフォルトの名無しさん
2005/09/27(火) 08:27:59知ってるが
お前のメル欄
気に入らない
0593582
2005/09/27(火) 08:32:44LineToてやつを使うんだろうな
と思ったのですが、
常時一番上に表示させる方法が
わかりません。
メル欄は癖です。>>592や他の皆さんが
禿げだと思っているわけではありません。
気分を悪くされたのであれば
申し訳ございませんでした。
0594デフォルトの名無しさん
2005/09/27(火) 08:42:36おいらを指して言ったんじゃなくても
非常に気分を害したので知ってるが教えない
次から質問時は気を付けるこった
0596デフォルトの名無しさん
2005/09/27(火) 09:18:30ヒント:常に手前に表示
0597582
2005/09/27(火) 09:56:26心の広い方ありがとうございます。
ウィンドウを常に手前に表示するというのは
解るのですが、LineToにてデスクトップ上に
引いた線を常に表示させる方法が
解りません。他のソフトを起動すると
引いた線が消えてしまいます。
Timerを使って再描写させるとそれっぽく
なるのですが、、、
0598デフォルトの名無しさん
2005/09/27(火) 10:13:05やりたいことがよくわからんが、デスクトップに直接描画しなきゃいけないのかい?
それならデスクトップのウィンドウをサブクラス化してWM_PAINTを捕捉すりゃいいでない?
0599582
2005/09/27(火) 10:31:42お返事ありがとうございます。
やりたいことの説明が解りにくくて
申し訳ございません。
やりたいことは、デスクトップ上に
常に線を引きたいのです。
定規を使って液晶に線を引いても
良いのですが、ずれてしまうと(微調整をしたい)
やり直しがきかないのでは?と思っています。
Timerで再描写の方法だとチカチカして
見づらいです。
0600デフォルトの名無しさん
2005/09/27(火) 11:36:17イベントどうするかは別途調べてね、透過で調べればやりたいようなことは芋づるで出ると思うけど。
ちょっと前でぐぐれっていう人がいたけど、それは正しい。
ある程度ここで聞いたキーワードでグーグル様の神託受ければ、芋づるで大体調べがつく。
あと、Vectorに画面用の定規があったような。
ウィンドウでフローティングした定規。
0601デフォルトの名無しさん
2005/09/27(火) 11:44:56ttp://www.ne.jp/asahi/nagoya/ahomaro/builder/cpb-050.html
見たいな事が遣りたいんでないか?
GetDC(0) でデスクトップ全体(起動中のウィンドウ含む)のDCを取得できるよ
再描画はデスクトップは同プロセスに含まれないからサブクラス化は出来ないんでフックするの
フックプロシージャは別プロセス限定でDLLに書かなきゃいけない規約がある。
Cコンパイルする環境あるか?
0602デフォルトの名無しさん
2005/09/27(火) 12:04:380603デフォルトの名無しさん
2005/09/27(火) 12:53:28ttp://www.ne.jp/asahi/nagoya/ahomaro/builder/cpb-054.html
0604デフォルトの名無しさん
2005/09/27(火) 13:02:420605デフォルトの名無しさん
2005/09/27(火) 13:27:51フォームを透過させるという
発想が無かったので
検索してませんでした。
>>601
Cコンパイルする環境はありません。
>>601 >>603も見てみます。
ありがとうございました。
0606デフォルトの名無しさん
2005/09/27(火) 22:56:04相手にランタイムのインストールやsetup.exeを使ったインストールをやらせたくないんだけど
作成したプログラムのフォルダに、これから使用するであろうdllを置くことはできないのでしょうか?
0607デフォルトの名無しさん
2005/09/27(火) 23:33:04プログラミングの前に日本語勉強した方がいいような。。
その文章で君の質問の意図がわかる奴がいたら、そりゃエスパーだわw
0608デフォルトの名無しさん
2005/09/27(火) 23:44:28ゴメンポ('A`)
VBの画面の
「ファイル」→「project.exeの作成」
で作成したファイルのみで配布して起動させることはできなのでしょうか?
ってことです
0609デフォルトの名無しさん
2005/09/27(火) 23:47:06できん
0610デフォルトの名無しさん
2005/09/28(水) 00:11:58それで必要十分だよ。
VB製のフリーソフトなんて大抵そうじゃん。
動かなかったらベクターでランタイムあさってインストールしてくださいってね。
0611デフォルトの名無しさん
2005/09/28(水) 00:12:500612デフォルトの名無しさん
2005/09/28(水) 00:15:08>>606
0613デフォルトの名無しさん
2005/09/28(水) 00:27:12ひょっとして>>612の環境じゃVBランタイムはdllで、しかも各プロジェクトフォルダに
入ってるのかな。
これぞVB厨クオリティw
0614デフォルトの名無しさん
2005/09/28(水) 00:31:36頭大丈夫?
0615デフォルトの名無しさん
2005/09/28(水) 00:59:060616606
2005/09/28(水) 01:16:00色々ありがとう
やっぱりだめか〜
|
\ __ /
_ (m) _ピコーン
|ミ|
/ .`´ \ そうだVB.netを勉強すればいいんだ(きっと
('A`) そうすればdllなんて ・⌒ヾ(*´_`)
ノヽノヽ
くく
0617デフォルトの名無しさん
2005/09/28(水) 01:21:47netがあればなんでも出来る!
0618デフォルトの名無しさん
2005/09/28(水) 06:50:25相手に.Net Frameworkのインストールやsetup.exeを使ったインストールをやらせたくないんだけど
作成したプログラムのフォルダに、これから使用するであろうdllを置くことはできないのでしょうか?
0619デフォルトの名無しさん
2005/09/28(水) 06:54:530620デフォルトの名無しさん
2005/09/28(水) 07:46:111.regsvr32で使うDLLを一つずつ登録する。
(VBランタイムは手動でインストールする。)
2.DLLを登録するだけのsetup.exeを作る。
(VBランタイムもsetup.exeに含める。)
0621デフォルトの名無しさん
2005/09/28(水) 07:55:44>>606のDLLはActiveX DLLじゃなくて標準DLLかな。
0622デフォルトの名無しさん
2005/09/28(水) 08:00:570623デフォルトの名無しさん
2005/09/28(水) 08:10:43だから必ずしもダメじゃないってw
どういう読解力してんのよ。
0624デフォルトの名無しさん
2005/09/28(水) 21:36:14プログラミングをしようとVB6.0を押入れから出してきました。
(今ではnetが出ているんですね、orz)
で、勉強をしようと思うのですけど
雑誌類は無いのでしょうか?
昔BASICマガジンなどで一画面プログラムとか一行プログラムとか超勉強になったのですが
オークションでも探そうと思っています。
お勧めの雑誌などがございましたらどうかお願いします。
0625デフォルトの名無しさん
2005/09/28(水) 21:39:17最終的には何がやりたいんだ?
0626デフォルトの名無しさん
2005/09/28(水) 21:42:03低下2000円超でも100円前後で買えて超経済的w
0627デフォルトの名無しさん
2005/09/28(水) 21:52:483年少し前から、会社でなし崩しにVB6の勉強をはじめて、今も開発職です
他の言語には、他にエキスパートいっぱいいるわけだし、
30近い年で今更つまみ食い始めてもな・・・という気分です
.netや2005など、新しいの出てますが・・・
VB6やっててWebでTipsなど探しているときに、
「.netは6と違ってこんなにべんりー」的な紹介に結構出くわします
よくVBは死んでゆく言語と言われ、不安増すばかりなんですが、
今後VBをより掘り下げていくより、やっぱり他言語を学習した方が
身のためでしょうか
みなさんは、どうお考えでしょう
0628デフォルトの名無しさん
2005/09/28(水) 22:10:03他の言語も勉強すべき。
ってかVB6は脇役(か中身の無い主役)で本領発揮するタイプだよ。
64ビット全盛な時期になったらVB6の実行環境は死滅するかVirtualPCに押し込められるんじゃね?
色んな意味で中途半端なVB6に居座るよりは、基礎も整ってるしライブラリも豊富な.NETに移行したほうがいい。
.NETでなくてもいいけど、メインがVB6ってのは止めたほうがいい。
使い捨ての仕事しか無いよ。
0629デフォルトの名無しさん
2005/09/28(水) 22:11:280630デフォルトの名無しさん
2005/09/28(水) 22:23:03逆に言えば言語覚えた程度の能力なんて糞拭く紙にもならないチンケなもんだYO!
業務で培ったのノウハウのほうがずっと大事なんだから、それを腐らせないように新しいものどんどん取り込んでけ!
とっとと浮気始めたほうがいいYO!
0631デフォルトの名無しさん
2005/09/28(水) 22:38:50勉強です。
書籍は8冊・図書館で3冊読みました。
そういえばプログラムの雑誌類はまだ見ていないと思いまして。
0632デフォルトの名無しさん
2005/09/28(水) 22:39:450633デフォルトの名無しさん
2005/09/28(水) 22:39:47Printer.BackColorとか、Printer.Font.BackColorなんてプロパティがありません。
0634633
2005/09/28(水) 22:45:09リンク先が消えてるので、さらにぐぐらないといけないけど。
Printer.FontTransparent = True
iBKMode = SetBkMode(Printer.hdc, TRANSPARENT)
Printer.Print "テスト"
0635デフォルトの名無しさん
2005/09/28(水) 23:02:27「Visual Basic6.0 300の技」が暇つぶしできていいんじゃね?
プログラミングの基礎学びたきゃ.NETの本に移ったほうがいい。VB本でまともに書いてるやつ見たことね。
0636デフォルトの名無しさん
2005/09/28(水) 23:20:50本じゃなくて雑誌月刊誌です。
0637633
2005/09/28(水) 23:46:540638デフォルトの名無しさん
2005/09/29(木) 01:59:01だからプログラマなんてやってんだろうけど( ^Д^)
0639デフォルトの名無しさん
2005/09/29(木) 07:52:48もう半分はベーマガ残党
0640デフォルトの名無しさん
2005/09/29(木) 07:55:200641デフォルトの名無しさん
2005/09/29(木) 15:36:59XP64BitではデフォルトでWin32エミュレータが入っているから動くんだよ
仮にWin32を切り捨てれば 今まで市場で回っている全てのWin32アプリが動かなくなるよ
たとえWindowsOSが完全に64Bitに移行してもWin32は相当長く続くな…と予想
今後のVBは64Bitへも対応はまず無いと思うので、それだけは頭においておいた方がいいよ
0642627
2005/09/29(木) 16:53:17将来的にALL64Bit化を考慮して、それに対応する言語
やっぱり、この2つはやっておいた方が、絶対にいいってことですよね
勉強時間を考えると胃が痛くなりそうですが、頑張ってみます
ありがとうございました
0643デフォルトの名無しさん
2005/09/30(金) 09:45:54↓userctl
┌─┐
│ ├────┐ 任意のタイミングで、このように表示させるような
└┬┘ │ ことってできますか?
│ Form .│
│ │
│ │
└─────┘
0644デフォルトの名無しさん
2005/09/30(金) 11:07:43フォームをもひとつ準備してそこに貼り付けないと無理。
0645デフォルトの名無しさん
2005/09/30(金) 15:59:47いや、別にそんなことしなくても出来るぞ
試しにこんな感じでコード書いて見れ
Private Declare Function SetParent Lib "user32.dll" (ByVal hWndChild As Long, ByVal hWndParent As Long) As Long
Call SetParent(UserControl1.hWnd, 0) '← ウィンドウから切り離したいときに実行
Call SetParent(UserControl1.hWnd, Form1.hWnd) '← Form1 上に置きたいときに実行
0646デフォルトの名無しさん
2005/10/01(土) 02:51:33なるほどNULLにするとデスクトップにコントロールが張り付く形になるのか。
その場合にFormの上にオーバーラップさせるのはできるのかな?
試してみたいが環境が無い。
0647デフォルトの名無しさん
2005/10/01(土) 06:34:17上に表示するだけなら↓だが、一緒に移動したいならサブクラス化すればおっけー
SetWindowPos(UserControl1.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)
サブクラス化できないか、タブオーダーが効かない副作用を嫌うならば、リージョンウィンドウかなぁ
しかし質問者の >>643 には、どちらも荷が重いだろうことを察すると、
透明ウィンドウが一番簡単かつ手軽なので、この方法をお薦めしとく
ただし、タイトルバーをつけると、とってもかっこ悪いことになるw
http://megaup.ddo.jp/upload/data/up0328.zip
0648デフォルトの名無しさん
2005/10/01(土) 07:32:54<select class="CLASS1" name="NAME2">
<option value="12345">しょうゆ
<option value="98765" >とんこつ
<option value="23232" >塩
<option value="93793" >味噌
</select>
このようなセレクトボックスがあるとしてvalueの方で値を取得したり
選択させたりすることはできるのですが、
逆に表示されている「しょうゆ」や「とんこつ」などの文字列で
自動的に選択させたりすることはできますか?
0649デフォルトの名無しさん
2005/10/01(土) 07:42:54最近勉強し始めた漏れからしたらそんな感じのを
さっさか作れるヒトが凄いと思う土曜の朝 orz
0650デフォルトの名無しさん
2005/10/01(土) 12:30:52現在ネット環境のない部屋でVBAをいじってます
Functionプロシージャの戻り値で配列、構造体を戻す宣言の方法が分かりません
あと構造体の宣言をどこでやるのか分かりません
Structure Date_Values
Dim YER as Integer
Dim MNT as Integer
Dim DAY as Integer
Dim HOR as Integer
Dim MNT as Integer
End Structure
以上の文をsub文の内部に書いたのですが
『sub または Functionが定義されていません。』と怒られてしまいます
0651デフォルトの名無しさん
2005/10/01(土) 12:38:50Structureを使うのはVB.NET。
VBではType。
使い方はヘルプで検索。
0652デフォルトの名無しさん
2005/10/01(土) 12:55:45ありがとうございました
配列を戻り値に使う方法は不明のままですが
構造体の方は解決いたしました
構造体を戻り値に使って問題を解決できそうです
即レス ありがとうございました
試していたので返信が遅れてしまい申し訳ありませんでした
0653デフォルトの名無しさん
2005/10/01(土) 13:53:44配列の引数&戻り値はVariant型で受け渡す
0654デフォルトの名無しさん
2005/10/01(土) 14:27:09試してないけど、たぶんこれでいけると思うよ
とんこつを選択する場合ね
dim select as object ' 型は MSHTML.HTMLSelectElement でもいい
set select = セレクトボックスの取得処理 getElementBy〜とか
for i = 0 to select.options.length - 1 step 1
if select.options(i).text = "とんこつ" then
選択処理
exit for
end if
next i
0655デフォルトの名無しさん
2005/10/01(土) 14:38:17おいおい、引数も返り値も普通に配列で大丈夫だよ。
VB4とかは知らないけどねw
0656デフォルトの名無しさん
2005/10/01(土) 15:12:03いや分かってるけど650の超初心者ぶりを考えて
全部Variantにしときゃとりあえず動くだろうと思ったんだがなぁ
そういう突っ込み入れられるんなら、1行ですむんだから宣言書いてやりゃいいのに
0657デフォルトの名無しさん
2005/10/01(土) 15:23:46そう思うならお前が(ry
0658デフォルトの名無しさん
2005/10/01(土) 15:28:58だからオレは全部Variantにしとけといってるんだよ
0659デフォルトの名無しさん
2005/10/01(土) 15:44:160660デフォルトの名無しさん
2005/10/01(土) 15:45:140661デフォルトの名無しさん
2005/10/01(土) 15:57:15いや全部Variantにしとけばいいw
0662デフォルトの名無しさん
2005/10/01(土) 16:00:38「全部Variantにしとけばいい」が
馬鹿な答えであるということはわかりました。
0663デフォルトの名無しさん
2005/10/01(土) 16:32:47構文知らないんなら、口出ししなきゃよかったのにね
Private Function 関数名(引数() As String) As String()
これ引数にも戻り値にもString型の配列入れるばあいね
0664デフォルトの名無しさん
2005/10/01(土) 17:07:29何でも平気っていうVariant癖が付くよ
初心者ならなおさら型を意識した方がいいと思うよ
C++の経験があるなら配列は使わないで その型専用のコレクションクラスを作って クラスごと受け渡す
なんて方が分かりやすいのかな?
0665デフォルトの名無しさん
2005/10/01(土) 17:08:470666655
2005/10/01(土) 19:32:23???
俺は655以降一度もレスしてないけど。。
構文知ってるとか知らないとかずいぶん低レベルな争いだなあw
まあどうでもいいんだけどさ。
ちなみに、もう数年VBさわってないんでうる覚えだけど、
VBって確か構造体を返すメソッドを外部のクラスに公開するときに
妙なトリックが必要だったような。。
構造体自体はPublicでいいけど、メソッドはFriendにするんだっけ?
0667650
2005/10/01(土) 23:14:55皆様のアドバイスのおかげである程度 納得できるコードになってきました
質問の連投で申し訳ありませんが
VBAで他言語のevalに該当する関数は無いでしょうか?
checkbox_【n】.enabled = VALUE(n)
というような処理を行いたいのですが
チェックボックスを配列関係にする事なく解決したいです
0668デフォルトの名無しさん
2005/10/01(土) 23:16:03VBAは別スレ
0669667
2005/10/01(土) 23:50:43大変失礼しました
VBAの質問スレが見あたらなかったので
つい こちらで質問してしまいました
少し様子を見させて頂いて スレ立て依頼をやってみます
しかし、VBA専用の質問スレなんて利用者いるのかなぁ…
0670デフォルトの名無しさん
2005/10/01(土) 23:55:00http://pc8.2ch.net/test/read.cgi/tech/1105108229/
0671デフォルトの名無しさん
2005/10/01(土) 23:58:04喧嘩売ってんの?
0672デフォルトの名無しさん
2005/10/01(土) 23:59:50うはは
落ちてる落ちてる
単発質問スレになっても良いからスレ立ててきなよ
まぁ 質問の内容的にはVBの分野なんだけどね
(VBと同じ方法だよ)
0673デフォルトの名無しさん
2005/10/02(日) 00:01:13スマンキャッシュ読んでた
0674669
2005/10/02(日) 00:15:15私のわがままが発端で気分を害されたようで
大変申し訳なく感じておりますが
なぜ(?_?)
あの文章のどこに怒られているのか理解できないのですが。
しばらく 様子を見させて下さい
↑また気分を害されたら申し訳ありません
0675デフォルトの名無しさん
2005/10/02(日) 00:24:27利用者いるのかなって、VBA使ってる人に失礼だろ・・・そりゃ怒るわ。
0676655
2005/10/02(日) 00:26:05evalって与えられた文字列をコードとして実行するって奴かなあ。
そういうのはVBには当然ないとして、VBAにもなかったような気がする。
というか、オーソドックスに配列で処理したら何かまずいんだろうか。
0677デフォルトの名無しさん
2005/10/02(日) 00:28:02VB6でも出来る処理に関しては回答付くけど、そういうのはここでいいし
Excel独自のことは答えられずExcel総合相談所に誘導するだけで
AccessやWord独自の質問はほとんど放置
はっきり言ってVBAスレとしては機能してない
0678デフォルトの名無しさん
2005/10/02(日) 00:28:12でも、vba使う奴なんかいるのか?
そりゃ去年vbaでバッチプログラム作ったけどさ
0679デフォルトの名無しさん
2005/10/02(日) 00:46:34隣の部署じゃ使ってるけどさ
ってノリ?
0680デフォルトの名無しさん
2005/10/02(日) 01:04:45チェックボックスを配列関係にする?
えぇ?
つまりプログラム上で各ボタンにユニークな番号を与えて
その番号に応じた一括処理とかできるの?
すごい便利そうだ
是非やり方を伝授してくれたまえ
0681デフォルトの名無しさん
2005/10/02(日) 09:21:290682デフォルトの名無しさん
2005/10/02(日) 11:14:01こういう人を「したり顔の馬鹿」というんだよなあ。。
0683デフォルトの名無しさん
2005/10/02(日) 13:11:31柱、屋根、家具などが用意されてる家
利用者が試行錯誤しながら(でも直感で柱は柱と分かる)組み上げるだけで
目的の家が建つ
Cの場合は土台のみが用意されていて
利用者が自分のセンスで自由に家を建てる
アセンブラは山そのものと鉄の固まりがごろんと転がってて。好きにしろって感じかな
Perlは材木の変わりに軽くて加工しやすい発砲スチロールと段ボールが広場にある感じ
PHPは特定の利用に特化したプレハブかなぁ
0684デフォルトの名無しさん
2005/10/02(日) 13:13:49すまん
0685デフォルトの名無しさん
2005/10/02(日) 15:51:38配列で処理したくないってのは、コントロール配列にするのが嫌ってことかね?
それとも、CheckBox/Object型の配列に参照突っ込んだ配列すら使いたくないってことかな
その2つの代わりにEval探すってのはセンスない気がするなぁ
どうしても配列嫌なら関数作ればいいんじゃないか?
Private Function 禿しくげっと(ByVal なんか適当なIDとか As Integer) As CheckBox
Select Case なんか適当なIDとか
Case おさかな ' Const か Enum か 直値
Set 禿しくげっと = checkbox_【おさかな】
Case おやさい
...
End Function
禿しくげっと(n).Enabled = VALUE(n)
>>682
そういう煽りはいくない
0686デフォルトの名無しさん
2005/10/02(日) 16:13:40ありがとうございました
パソコンの中に他の人が作ったファイルがありまして
それを真似して解決しました
【object(だったかな)】.("hoge" & n).value = VALUE
てな方法(多分 初歩の記述)が使えました
配列にするのが嫌だったのは
オブジェクト名を変える必要があると思ってて
それまでのコードを書き直すのが面倒だっただけです
失礼しました
0687デフォルトの名無しさん
2005/10/02(日) 21:03:45処理2の場合は「プロシージャC」を
処理せずにもう一度txtA(テキストボックス)を入力されるように
戻る処理はどう書けばいいのでしょうか?
Private Sub cmd_Click()
If txtA.text = XXX then
処理1
Else
処理2
End if
プロシージャC
End Sub
0688デフォルトの名無しさん
2005/10/02(日) 21:22:36処理2の後にExit Sub
0689デフォルトの名無しさん
2005/10/02(日) 23:51:35むしろ処理1の直後にプロシージャCを移動すべきではないだろうか
0690デフォルトの名無しさん
2005/10/03(月) 07:32:20処理2
exit sub
End if
処理1
プロシージャC
0691デフォルトの名無しさん
2005/10/03(月) 07:44:27ネタだよね
まさか、本気じゃないよね
0692デフォルトの名無しさん
2005/10/03(月) 07:48:04どこかおかしいのか?
0693デフォルトの名無しさん
2005/10/03(月) 08:44:05Else使えよという話。
0694デフォルトの名無しさん
2005/10/03(月) 09:11:43本当はおまえ。どっかみ間違えたんじゃねーの?w
0695デフォルトの名無しさん
2005/10/03(月) 09:34:51exit sub使うなよ
不一致条件式ではなく一致条件式使えよ
0696デフォルトの名無しさん
2005/10/03(月) 09:40:430697デフォルトの名無しさん
2005/10/03(月) 10:10:44今回の処理は使わない方がいいな
そもそも、使う必要が全く無い
0698デフォルトの名無しさん
2005/10/03(月) 12:34:100699デフォルトの名無しさん
2005/10/03(月) 12:36:59万人にとっての可読性の区別がつかない馬鹿が多いな。
そんなもんどっちでもいいだろ。
プログラミングは工学であってイデオロギーじゃねえんだよ。
機能を必要十分に果たすのであればどちらでも選ぶところはない。
0700デフォルトの名無しさん
2005/10/03(月) 13:12:002 ^ 10と書くのも2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2と書くのも
ループで乗算するのも自由だわな。
機能を必要十分に果たすのであればどちらでも選ぶところはない。
0701デフォルトの名無しさん
2005/10/03(月) 13:24:180702デフォルトの名無しさん
2005/10/03(月) 13:35:03>プログラミングは工学であってイデオロギーじゃねえんだよ。
違うね、90年間かけて探し出した俺の答えは
『プログラムはオナニー』なんだよ
君は【2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2】なんて数式でイク事ができるか?
俺は変態じゃないから そんなきったない数式じゃ勃ちもしないね
0703デフォルトの名無しさん
2005/10/03(月) 13:39:140704702
2005/10/03(月) 13:51:0590年って俺 何歳だよ
分かってるとは思うが 9年間な
0705デフォルトの名無しさん
2005/10/03(月) 14:09:28もう一度 自分の歳を考えてから発言した方がいいですよ
0706デフォルトの名無しさん
2005/10/03(月) 15:13:21プログラム初心者に、とりあえず教える方法としてどうかということだ
とりあえず、よく分かってないうちは goto 使うなと教えるだろ
そう考えれば 695 の内容は、基本中の基本だろう
699 みたいな意見は、質問スレの回答としては、初心者を惑わすだけで無意味だ
質問者に実力が付けば、おのずと自分で模索していくだろうしな
0707デフォルトの名無しさん
2005/10/03(月) 15:20:460708デフォルトの名無しさん
2005/10/03(月) 15:30:29回答する気ないなら、ROMってろよ
0709デフォルトの名無しさん
2005/10/03(月) 15:31:540710デフォルトの名無しさん
2005/10/03(月) 15:50:29冒頭ではじくような分かりやすい >>690 のやり方が普通だと思うけどな。
処理1が長くなったり、プロシージャC以外の処理を追加する場合を考えて俺ならそうする。
0711デフォルトの名無しさん
2005/10/03(月) 15:55:02普通は途中で関数から抜けるソースは書かないんだよ
0712デフォルトの名無しさん
2005/10/03(月) 16:01:510713デフォルトの名無しさん
2005/10/03(月) 16:05:57breakで抜けるのと大差ありません。
0714デフォルトの名無しさん
2005/10/03(月) 16:06:23IF A=B Then
・
・
・
・
Else
ここで入力ミスの処理
End If
だと長くなるし、何やってんのかわからんくなるぜ。
0715デフォルトの名無しさん
2005/10/03(月) 16:08:57しかもその条件が複数あると、ネストがどんどん深くなるしね。
本ばかり読んでかじった知識で言ってるだけで実戦経験すくないんじゃね?
0716デフォルトの名無しさん
2005/10/03(月) 16:09:28プログラムで飯食ってる奴はさすがにいないだろうな
0717デフォルトの名無しさん
2005/10/03(月) 16:10:15趣味のソースではオレもたまにやるけど、
条件が複雑なエラーチェックでネストが4重超えそうなほど
醜いソースの時くらいしかやらないなぁ
そんな場合も、大抵じっくり考え直してみると
ネストしまくりの処理自体がアホだったりするしw
そもそも1段階のネスト嫌って Exit Sub はありえなス
>>714
いや、そんなに関数長くなるなら、そもそも組み方がおかしい可能性を疑うべし
0718デフォルトの名無しさん
2005/10/03(月) 16:14:280719デフォルトの名無しさん
2005/10/03(月) 16:16:090720デフォルトの名無しさん
2005/10/03(月) 16:22:350721デフォルトの名無しさん
2005/10/03(月) 16:37:56リソース開放処理をそこらじゅうにかかれるのは論外。
Try Catch Finally のThrowの代わりにGoto。
0722702
2005/10/03(月) 17:28:22みんな 素敵なオナニーしてるじゃん
俺も負けないようにがんばるよぉ!
某言語の初心者用向けの本の中にコラムで
以下のような文があったのよ
>カレンダープログラムの中に皆既月食の表示をしようとしたが、
>その日付の取得方法が分からなかった
>筆者は 天文博物館に電話して、その計算方法を尋ねたが
>「かなり複雑で難解な計算が必要になりますよ」との回答だった
>筆者は「今後100年間の月食の日付は全て分かりますか?」と尋ねたら
>「表があるのでお送りします」と言われた
>筆者は、その表にある日付を全て データとして組み込み、満足した
>今でも あの方法は間違いでは無いと思っている
俺は、この作者を可愛そうだと思った
だって、そんな方法じゃ満足感は得られないっしょ?
0723デフォルトの名無しさん
2005/10/03(月) 17:53:33何が可哀想なの?
0724デフォルトの名無しさん
2005/10/03(月) 19:13:55難解な計算をして皆既月食の日を求めることが目的なら満足は得られないだろうけど、
カレンダーに皆既月食を表示したいだけなら目的は達成される。
0725724
2005/10/03(月) 19:14:480726702
2005/10/03(月) 19:36:32自力でアルゴリズムを導き出す時の達成感じゃない?
ゲームを作る時も、ゲームシステムとかルールとかを考えてる時は楽しくて
無茶苦茶張り切るよね?よ〜っし絶対に作ってやるぞ〜みたいな
でも、構想段階が終わってソース入力の段階に入ると一気にやる気が揮発しちゃうよね
それで、いつまでも完成しなくて結局中途半端なコードがいつまでも放置される事になるんだよね
「お前は プログラムを作成しろ。ただしサブルーチンと内部の細かい計算式はこちらで作っとく」
なんて言われたら、絶望しちゃわない?
0727デフォルトの名無しさん
2005/10/03(月) 19:46:28オマ、中学生ん時 慣れない連立方程式を解くの 大好きだったタイプじゃね?
でも、慣れてきて解くのが作業になった時には 面倒くさくて投げ出してたタイプじゃね?
自己ルール:質問が無いときは質問スレでsage雑談しても迷惑じゃないのでOK
※) ただしなるべくスレの内容に合う話題。
0728デフォルトの名無しさん
2005/10/03(月) 20:08:16車輪の再発明
お前はライブラリを使うな。
っていうか皆既月食の計算なんか
他人の力を借りずに自分でアルゴリズムを
見つけるとしたら天体観測から初めて何年かかることやら。
0729デフォルトの名無しさん
2005/10/03(月) 20:40:12自力で解けとか言う奴はお前は解けるのか?って思うよな
0730デフォルトの名無しさん
2005/10/03(月) 22:00:002.変更受信したら処理>監視継続
3.プログラム終了と同時に監視終了
FindFirstChangeNotificationでハンドル作成、
WaitForSingleObjectで変更受信したら処理をさせてDoevents、
これをDoでループさせます
プログラム終了時に、FindCloseChangeNotificationでハンドルをクローズします
このやり方でファイルの変更監視のプログラムを作りたいのですが、
プログラム終了時に監視がどうしても抜けられなく、フォームのUnloadが通っても
監視のプロシージャに処理が戻ってきてしまいます
どうしたら、プログラム終了と同時に監視終了できるのでしょうか
0731デフォルトの名無しさん
2005/10/03(月) 22:22:14だからエスパーはいないって。あなたの文章イミワカリマセン。
ヒトにわかる文章かけない人間が、
ヒトよりずっと融通の利かないコンピュータのコードをかけるだろうか。
0732デフォルトの名無しさん
2005/10/03(月) 22:28:200733デフォルトの名無しさん
2005/10/03(月) 22:35:070734デフォルトの名無しさん
2005/10/03(月) 22:38:47ちゃちゃ入れるために監視してるの?w
随分暇か現実逃避してるんだか。
>>730
Unloadで何してるの?暗黙のフォームとか呼び出しをされるようなことしてない?
通貨、確実の終わらせたければEnd書いちゃえばいいじゃん。
0735デフォルトの名無しさん
2005/10/03(月) 22:55:46すみません・・・コピペしてきて自分でもあまりよくわかっていないものに
ついての質問でしたので・・・言葉もありません
>>734
監視の開始と終了をするFunctionプロシージャがありまして、
引数にフラグを設けています
Form_Load時にそのプロシージャを開始フラグで動かしまして、
Form_Unload時に終了フラグで動かす、
ということをやっています
終了フラグのときは、ループに行く前にFindCloseChangeNotificationを実行して、
Exit Functionで抜けるようにしています
そこで関数を抜けて、FindFirstChangeNotificationもWaitForSingleObjectも
通っていないはずなのに、Unloadが通った後になぜかいきなりループ内に戻ってきて
監視が継続されているのが、どうしても抜けられなくて・・・
Unload時にプロシージャを動かさず、Endを書いて強制的に終了、
というのはできたんですが、できたら監視を終了させて、その後でフォームを終了と、
キレイに流したかったので、質問させていただきました
0736デフォルトの名無しさん
2005/10/03(月) 23:08:30> 通貨、確実の終わらせたければEnd書いちゃえばいいじゃん。
やめろって。Unloadで終わらないってことはバグがあるってことなんだから。
バグにふたをせずにバグを直すべき。
>>735
FormのLoadとInitialize、UnloadとTerminateにDebug.PrintやMsgBox等をおいて
予期しないタイミングでイベントが発生していないか、
どこでそのイベントが発生しているか調べるべし。
そのとき、Debug.Print Form1.Nameとかせずに
Debug.Print "Form1"のように単純な文字列を使うべし。
(Form1.Nameのようにフォームのプロパティなどを書くと、
Form1がアンロードされていてもその場でロードしてしまうから)
0737デフォルトの名無しさん
2005/10/03(月) 23:40:42なんかまだ釈然としない文章だなあ。。
だから推測で答えるしかないけど、恐らくVBの基本が全然わかってない。
具体的にいうと、
>FindFirstChangeNotificationもWaitForSingleObjectも 通っていないはずなのに、
こうあるけど、ループをスキップすることと、ループを抜けることは全然違うよ。
最初に「監視の開始と終了をするFunctionプロシージャ」をコールしたときに
ループを開始してるんだよね?そのループを抜けてないんじゃないの?
0738デフォルトの名無しさん
2005/10/04(火) 00:01:42>>687-729なんじゃこりゃww
0739デフォルトの名無しさん
2005/10/04(火) 00:34:01仕事で一緒になったら金だけ持ってトンズラする
0740デフォルトの名無しさん
2005/10/04(火) 00:36:04> Try Catch Finally のThrowの代わりにGoto。
Throwの代わりはErr.Raiseだろ。
0741デフォルトの名無しさん
2005/10/04(火) 01:25:28みなさん、返信ありがとうございます
明日また、ひとつひとつ試してみます
>>737
すみません、お手数おかけします
はい、最初のループを抜けれてないんだと思います
それを、任意のタイミングで終了させたいときに、どうやったら抜けれるのだろう、と・・・
単純に、もう一度Function実行して、それがループに入る前に
FindCloseChangeNotificationを実行してしまえば、終われるのかと思っていたのですが、
どうも違ったようです・・
0742デフォルトの名無しさん
2005/10/04(火) 02:32:05>確実の終わらせたければEnd書いちゃえばいいじゃん
プログラムを強制終了すりゃいいってもんじゃないだろw
>>735
文章が支離滅裂で想像の域を出ないので想像だが
734も言ってるが、Unload抜けた後、フォームにアクセスしてるんじゃないか?
0743デフォルトの名無しさん
2005/10/04(火) 02:56:580744デフォルトの名無しさん
2005/10/04(火) 03:44:420745730
2005/10/04(火) 09:40:13先ほどこれで解決かな?というところまでできました
やっぱり物を考えるのは、夜中よりも、眠くても朝がいいみたいです・・・
問題は、
Unloadプロシージャを抜けたでも、フォーム起動時に実行した監視ループが終われず、
終了時にそのループを抜けるようにしたい場合、ループ内にどういう条件を挿入すれば
実現できるのか、ということでした
いただいたご回答を読みながらはじめて、なんとなくこういうこと?って気付いてきたもので、
最初からうまく説明できてなくてすみませんでした
いままで、引数やプロシージャレベルで何とかすることだけしか考えてなかったんですが、
モジュールレベルで開始・終了のフラグを持つことで、正常に終了できるようになりました
大変お騒がせしてしまって、申し訳ないです
本当にありがとうございました
0746デフォルトの名無しさん
2005/10/04(火) 09:40:56また脳みそ足り無そうな書き込みだな。部分だけ捉えて本質理解してない。
ErrをRaiseして、Finallyに該当する機能をどうやって実装するの?
エラーを通知することを問題視してないでしょ?元の>>721の書き込み。
絶対に通ることを保証される処理をどうやって記述するかを問題視してるわけで。
適切にモジュール化されてればGotoなんてほぼ不要だよ。
それでもしょうもない直しのときなどで考えるわけで。
0747デフォルトの名無しさん
2005/10/04(火) 12:12:460748デフォルトの名無しさん
2005/10/04(火) 12:32:47悪いけど「脳みそ足りない」のはむしろ君の方だと思う。
俺は740じゃないよ。
言ってること全然つじつまが合ってない。正直、意味不明。
あんまり無理に背伸びしない方がいいと思うよ。
0749デフォルトの名無しさん
2005/10/04(火) 14:09:44どこからFinallyがでてきたんだよ?w
>>721のどこをどうみてもThrowの代わりとしか書いてないぞ。
0750デフォルトの名無しさん
2005/10/04(火) 15:18:24>>721にきちんと書いてあるけど。
リソース開放の為、Try-Catch-Finallyって。
もしかして、ThrowしてもFinally保証されるっていう仕様を理解してない?
0751デフォルトの名無しさん
2005/10/04(火) 20:28:54If 〜 Then を使って、
「もし文字列strがアルファベット(A〜Z)ならば」という条件を入れたいです。
確か >= とか <= という記号を使って表すことができたと思うのですが。
記憶違いかもしれません。
0752デフォルトの名無しさん
2005/10/04(火) 20:50:55比較対照の文字数は1文字なのか不定なのか
小文字は弾くのかどうか
つーかこのくらいググればいくらでも出てくるだろう
0753デフォルトの名無しさん
2005/10/04(火) 21:01:28例えばこんなん?
0754デフォルトの名無しさん
2005/10/04(火) 21:05:510755デフォルトの名無しさん
2005/10/04(火) 21:06:370756デフォルトの名無しさん
2005/10/04(火) 21:14:11狙いすぎだと思いマスタ
0757デフォルトの名無しさん
2005/10/04(火) 21:15:33実はそれが書きたいだけでした。
0758デフォルトの名無しさん
2005/10/04(火) 23:01:05VB6.0でキーボード、マウスの無操作時間を取得したいのですが、なにかサンプルはありませんか?
キーボードもマウスも触らない状態で放置しているとスクリーンセーバーが起動しますよね。
その放置している時間を取得したいのです。
0759デフォルトの名無しさん
2005/10/04(火) 23:03:200760デフォルトの名無しさん
2005/10/04(火) 23:04:470761デフォルトの名無しさん
2005/10/04(火) 23:50:11スクリーンセーバー実行までの待ち時間なら ISBN4-88337-198-0 の本に載ってる
0762デフォルトの名無しさん
2005/10/04(火) 23:52:57758はこんな答えをほしがっているとは思えないけど。
0763デフォルトの名無しさん
2005/10/05(水) 00:45:04なんで時間を欲しがってるのにRUNNINGの方を紹介してるの?
0764デフォルトの名無しさん
2005/10/05(水) 01:16:390765デフォルトの名無しさん
2005/10/05(水) 02:48:200766デフォルトの名無しさん
2005/10/05(水) 03:04:09画質を落とさずに表示するには、どうすればいいのですか?
ラスタ表現からベクタに表現に変換すればよいらしいのですが
変換のやり方がわかりません。
0767デフォルトの名無しさん
2005/10/05(水) 03:24:04拡大縮小したい図はベクタで表現できるような図なの?
風景写真などをベクタにするのは無理に近いぞ
自分でLineなどを使ってPICTUREに書いたのであれば、
書いた座標記憶しておいて割合で倍にすればいい
0768デフォルトの名無しさん
2005/10/05(水) 03:38:12自分でLineなどを使ってPICTUREに書いたほうです。
ありがとうございました。
0769758
2005/10/05(水) 17:41:28スクリーンセーバーを起動する時間ではなく、キーボード&マウスを放置している士官を取得したいのです。
ググっても探せませんでしたので、もしご存知の方お教え願えますでしょうか。
何度も質問して申し訳ありませんがよろしくお願いします。
0770デフォルトの名無しさん
2005/10/05(水) 18:52:41dim Dest as string: Dest = AppPath & "\" & S
Kill Dest
Name Src As Dest
3.で「パス名が違う」ってエラーが出てた後、4.で「既に同名のファイルが存在します」ってエラーが出るんだけど、どうして?
0771デフォルトの名無しさん
2005/10/05(水) 21:00:18スクリーンセーバーはキーボード&マウスを動かせばタイマーがリセットされるでしょ。
同じことを求めるにしても他の道からのアプローチは受け入れないって、勉強する気あるのか?
ISBN4-88337-198-0 の本を覘いてみなされ。
0772デフォルトの名無しさん
2005/10/05(水) 21:20:08直接的な答えは書いてないなぁ
0773デフォルトの名無しさん
2005/10/05(水) 23:38:39VisualC++板か、Win32API板に行くと良いぞ。
0774デフォルトの名無しさん
2005/10/05(水) 23:40:05VB6みたいなハイレベルな言語では大変だな
簡単な言語のVC++あたりでフックdllを作った方が良いんじゃないか
0775デフォルトの名無しさん
2005/10/06(木) 15:32:13セルの高さの真ん中あたりで表示されるようにするには
どうしたらよいでしょうか?
0776デフォルトの名無しさん
2005/10/07(金) 01:43:19(デバイスマネージャから見ることの出来るプロパティ。たとえばCOM1とか。)
の2タブ目以降を一発で表示させる方法というのはあるでしょうか。
OS:WinXPSP2
VB6
という限定環境でかまいません。
COMでなくてもなんでもいいです。
0777デフォルトの名無しさん
2005/10/07(金) 15:47:00DBに接続もできてますし、SQLも単体で動かすと1件データがあるんですが、
RecordCount がなぜか -1 です。
なにが原因なのでしょうか?
Private Sub CmdLogin_Click()
Dim cnn As New ADODB.Connection
Dim cmd As ADODB.Command
Dim rst As ADODB.Recordset
Dim strSQL As String
Dim strID As String
Dim strPass As String
strID = txtID
strPass = txtPass
strSQL = "SELECT password FROM tbl_staff WHERE userID =' " & strID & " ' "
Set cnn = New ADODB.Connection
cnn.ConnectionString = strConnect
cnn.Open
Set rst = cnn.Execute(strSQL)
If rst.RecordCount < 0 Then
Msgbox("A")
Else
Msgbox("B")
End If
End Sub
0778デフォルトの名無しさん
2005/10/07(金) 16:18:39その状態で、BOF、EOFはどうなってるの?実際にレコード取れてないの?
0779デフォルトの名無しさん
2005/10/07(金) 16:41:24レスありがとうございます。
以下のEOFを追加してみると正しく1件データが
Label2に表示されました。
・
・
・
cnn.Open
Set rst = cnn.Execute(strSQL)
Do While Not rst.EOF
Label2.Caption = rst!Password
rst.MoveNext
Loop
If rst.RecordCount < 0 Then
Msgbox("A")
Else
Msgbox("B")
End If
End Sub
0780デフォルトの名無しさん
2005/10/07(金) 17:06:39RecordCountが取れないのは
カーソルの設定じゃないかなぁ。
これをいれてみてもRecordCountは-1ですか?
cnn.CursorLocation=adUseClient
違ってたらすみませぬ。
0781デフォルトの名無しさん
2005/10/07(金) 17:25:30無事、RecordCount取れるようになりました!!
ありがとうございます。
・
・
cnn.Open
cnn.CursorLocation=adUseClient
Set rst = cnn.Execute(strSQL)
・
・
0782デフォルトの名無しさん
2005/10/09(日) 07:34:50MSHFlexGridでセルに縦書きするにはどうすれば良いですか?
WindowsXP、VB6SP6です
0783デフォルトの名無しさん
2005/10/09(日) 09:31:17出来ない。
0784デフォルトの名無しさん
2005/10/09(日) 15:01:23知らない奴は答えなければいい。
0785デフォルトの名無しさん
2005/10/09(日) 16:05:470786デフォルトの名無しさん
2005/10/09(日) 16:07:300787デフォルトの名無しさん
2005/10/09(日) 16:18:060788デフォルトの名無しさん
2005/10/09(日) 17:07:24色々考えられるけど、Pictureに縦書きフォントで回転して書いて貼ったり
IE5.5以降が必要とさせてIEコンポーネント貼ったり
短冊状にテキストボックス張ったりラベル貼ったり
0789デフォルトの名無しさん
2005/10/09(日) 17:17:12ヒント:セルに
0790デフォルトの名無しさん
2005/10/09(日) 17:18:010791デフォルトの名無しさん
2005/10/09(日) 19:05:40もちろんセルに貼るって意味だったけど、ヒントでわざわざ言う事か?
0792デフォルトの名無しさん
2005/10/09(日) 19:37:000793デフォルトの名無しさん
2005/10/09(日) 20:18:45何が言いたい?
0794デフォルトの名無しさん
2005/10/09(日) 20:21:41だとしたらあwせdrftgyふじこp
0795デフォルトの名無しさん
2005/10/09(日) 20:32:34セル自体は縦書きできないって事だろ。
低脳のくだらない突っ込みだ。
0796デフォルトの名無しさん
2005/10/09(日) 21:05:010797デフォルトの名無しさん
2005/10/09(日) 21:27:500798デフォルトの名無しさん
2005/10/09(日) 21:28:56モニター縦向きすればいいんだろがw
0799デフォルトの名無しさん
2005/10/09(日) 21:37:080800デフォルトの名無しさん
2005/10/09(日) 21:49:41最近
スレ
の回
答レ
ベ
ル
が
:
0801デフォルトの名無しさん
2005/10/09(日) 22:15:200802デフォルトの名無しさん
2005/10/09(日) 22:24:19故障の原因になるってマニュアルに書いてるよ
0803デフォルトの名無しさん
2005/10/09(日) 22:39:47液晶モニターも?
0804デフォルトの名無しさん
2005/10/09(日) 22:44:07ピボット対応のものですら、
故障には繋がらなくても寿命は縮まるからな。
0805782
2005/10/10(月) 14:14:16ご存じの方が居ましたら>>782をお願いします。
>>550も自分ですが、「出来ない」と回答もらっても結果的に出来たことがあるので、
失礼ながら知らない方、出来ないと思う方は無視して頂いて結構です。
解決するか、MSのSource付きで出来ないという確証が出るまで
自分でも調べながらここでも適度に催促させて頂きます。
0806デフォルトの名無しさん
2005/10/10(月) 14:48:10MSはソースつきで出来ないことを示さないといけないのか?
あと、催促は単なる嵐です。
こんなところで催促するならば、PCDNなり@ITなりいけば?
0807デフォルトの名無しさん
2005/10/10(月) 15:05:48MSお墨付きが欲しいならインシデント使えよ
0808782
2005/10/10(月) 15:06:19いや、そんなことは一言も言ってません。
出来ないという証拠があれば諦めるというだけです。
出来るという情報は(やり方が書かれれば)こちらで確認できますが
出来ないという情報は確認のしようがないので。
> あと、催促は単なる嵐です。
これはあなたの個人的主観ですね。
このスレのルールにも2chのガイドラインにも、質問スレでの催促を
荒らしとして扱う旨の記述は見つかりません。
数分おきの催促じゃ荒らしになるかも知れませんが、
それは「催促」が荒らしなんやなくて「連投」が荒らしなわけですし。
0809デフォルトの名無しさん
2005/10/10(月) 15:08:19だからPCDN逝けよ、少しは質問の仕方から叩き直してもらって来い。
0810デフォルトの名無しさん
2005/10/10(月) 15:11:47三.回答する上で必須ではない情報をむやみに聞き返さない。
四.荒らしは相手しない。
0811デフォルトの名無しさん
2005/10/10(月) 15:11:47知らないからってそうムキになるなよw
0812デフォルトの名無しさん
2005/10/10(月) 15:13:12{ } r'⌒',
`‐-‐' r'⌒', !、_丿
◯ ヽ-‐' ___
r'⌒', ,,r-‐' `''ヽ、 ○
`‐-' / / \ \
, 、 ,,/ ヽ ● ● ′'─--、,,
,,r-─(_) (__人_) i⌒) `, カワイソス
(  ̄ ,r‐
 ̄つ '⌒' ,r─‐‐''
(´ ,r──'
 ̄ ゙̄'───--------‐'
0813デフォルトの名無しさん
2005/10/10(月) 15:16:43出来ない情報・・・泥から金が作れますか?作れないなら作れない作り方を教えてください。
貴方がいかに馬鹿なこと書いてるか理解できる?
0814デフォルトの名無しさん
2005/10/10(月) 15:19:25まあ、ここには見ての通りバkも多いが
博識な奴も少々はいる
マジで絶対不可能なのかもしれんが
方法を知ってる奴が出てくる可能性もあるから
またーり待ってろ
催促は嵐じゃないがバカどもを相手にしたら嵐だからな
0815デフォルトの名無しさん
2005/10/10(月) 15:23:41おまえ、大恥かくから物事をもう少し考えてから物言った方がいいぞ
悪魔の証明のような不確定事項ではなく
作り手が居るものなんだから作り手にとっては不可能の証明も不可能じゃないw
それをする義務が作り手にあるわけじゃないがな
貴方がいかに馬鹿なこと書いてるか理解できる?
0816デフォルトの名無しさん
2005/10/10(月) 15:29:20作り手に聞きたいならば、MSDNに入って金出して聞けよ。
あなたが言ってる情報をたとえ知ってる人がいても、ここでそれを出すのはMSDNの契約上不可能です。
0817デフォルトの名無しさん
2005/10/10(月) 15:32:33この件についての情報を聞きたい知りたいとはこれっぽっちも思ってないよ
0818デフォルトの名無しさん
2005/10/10(月) 15:34:240819デフォルトの名無しさん
2005/10/10(月) 15:40:40だから、あなたが不可能であることをMSに聞きたいんでしょ?
金出して聞け、それだけ。
0820デフォルトの名無しさん
2005/10/10(月) 15:44:51例えばフォームに何のコントロールも配置せず
コードも全く書かずにコンパイルしたものに対して
作者なら「この実行ファイルでテキストの編集は不可能です」と言い切れるが
一般のユーザーじゃこの証明は無理だ
まぁこの程度なら多少知識が有ればファイルサイズから判断出来るがな
0821デフォルトの名無しさん
2005/10/10(月) 15:50:45>>819
0822デフォルトの名無しさん
2005/10/10(月) 15:51:520823デフォルトの名無しさん
2005/10/10(月) 23:29:080824デフォルトの名無しさん
2005/10/10(月) 23:36:141. VBのソースを読んで機械語あるいはアセンブリ言語を吐くコンパイラを作る。
2. アセンブリ言語をマスターする。
3. OSを設計する。
4. コードを書く。起動直後などの重要部分はアセンブリ言語でしかできないのでアセンブリ言語。
しかるべくしたらVBでソースを書ける部分に移れると思う。
0825デフォルトの名無しさん
2005/10/10(月) 23:41:521と2は逆じぇね?
0826デフォルトの名無しさん
2005/10/10(月) 23:49:500827デフォルトの名無しさん
2005/10/11(火) 14:29:150828デフォルトの名無しさん
2005/10/11(火) 14:37:17SetSystemCursor でマウスカーソルに設定するトコまではできたのですが、
元のカーソルに復元する方法が分かりまへん。
今、こんな感じ↓
'システムカーソルを設定。
lCursor = SetSystemCursor(LoadCursorFromFile(sAniFile), 32512)
誰かボスケテ
0829デフォルトの名無しさん
2005/10/11(火) 15:17:51Call SystemParametersInfo(SPI_SETCURSORS, 0, Null, 0) でいい?
次俺が質問
VB6でVC++で作ったスタティックライブラリを使う方法ってある?
0830デフォルトの名無しさん
2005/10/11(火) 16:46:030831デフォルトの名無しさん
2005/10/11(火) 16:55:430832デフォルトの名無しさん
2005/10/12(水) 05:06:320833デフォルトの名無しさん
2005/10/12(水) 07:06:09普通に計算すると
20.2-20.1の場合
9.99999999999979E-02 となって
20.2-20.3の場合
-0.100000000000001 となります
普通に答えが0.1、-0.1のようにするにはどうしたらいいのでしょうか?
0834デフォルトの名無しさん
2005/10/12(水) 08:19:02それは浮動小数点の宿命なんで、Decimal型で計算するといい。
Dim ans As Variant
ans = CDec(20.2) - CDec(20.1)
Dim ans As Decimal と宣言できないところが難点だけどね。
0835デフォルトの名無しさん
2005/10/12(水) 12:45:11Debug.Print 20.2@ - 20.3@
0836デフォルトの名無しさん
2005/10/12(水) 17:22:41やりたいことは単にBeep音を鳴らしたいだけなのですが、いくつか制約があります
・wscriptから実行------------------------WScript.Echo Chr(7)をcscriptでってのは×
・外部にファイルを作らない----------------外部にバッチファイルやスクリプトを出力するのは×
・標準環境のWinXPで使える---------------何らかのコンポーネントをインストールしたり、Beepを鳴らす実行ファイル等を使ったりは×
・ダイアログなどを表示させない-------------msgboxで一応音は鳴りますがそういうのは×
・実行から音が鳴るまでのタイムラグが無い---サウンドの再生だとタイムラグが大きいので×
(まあVBからBeep鳴らしても、人間が認知できない程度の僅かなタイムラグはありますがそういう突っ込みは無しの方向で)
の条件を満たしてBeep音を鳴らす方法を教えてください
簡単に言えば「vbs単体でどんな環境(WinXP)でも瞬時にbeep音のみを鳴らせる方法」です
どうかよろしくお願いします
0837デフォルトの名無しさん
2005/10/12(水) 18:58:16言語仕様にbeepはないしWSHにも見当たらないから無理なんじゃない。
VBScriptの機能拡張はActiveXでやるのが基本だが、それはやりたくないんだろう?
0838デフォルトの名無しさん
2005/10/13(木) 00:13:02コンピュータ内部では変数名からその変数の内容が記憶されているメモリ領域を参照していると思われますが
そこの流れが理解も想像もできません
説明をお願いできないでしょうか
0839デフォルトの名無しさん
2005/10/13(木) 00:17:280840デフォルトの名無しさん
2005/10/13(木) 00:21:01コンピューター内部ではそんな事をしていないから説明しろと言われても困る
0841デフォルトの名無しさん
2005/10/13(木) 00:26:29変数『I』の内容がメモリの100番地に記録されていると仮定します
次回『I』がインクリメント(I=I+1)される時に
どのような流れで変数『I』から100番地というアドレスを導いているのでしょうか
例えば『I_ADD』みたいなテンポラリ変数に『I』のアドレスが格納されているとしても
今度は『I_ADD』から『I_ADD』のアドレスを求める必要があるワケで
無限ループになってまう気がするのですが
0842デフォルトの名無しさん
2005/10/13(木) 00:31:42もっと初心者スレとか行った方が良いよ。
0843デフォルトの名無しさん
2005/10/13(木) 00:39:47あらかじめ変数領域のアドレスはスタティックに決定されている
変数名の文字数に制限があるのはそのせいだ
A=0000001,B=0000002,AA=0000037…
という具合に変数名そのものがアドレスを意味している
(実際のアドレスは環境により変化する)
だから、突然 HENSUU0001とか言う名前の変数を使用しても
制限文字数以内の名前であるかぎり
既にそのアドレスは決定されています
0844841
2005/10/13(木) 00:44:52ありがとうございました
よく理解できました
メモリも安くなってきたせいか
メモリって意外に無駄な使われ方をされているんですね
0845デフォルトの名無しさん
2005/10/13(木) 00:51:52普通のスレなら間違いなくネタだと思うところだが、
このスレに限ってはマジでやってる可能性を疑ってしまうなw
0846デフォルトの名無しさん
2005/10/13(木) 00:56:42アドレスに関係性は無いってのだけ指摘しとく。
(P-CODEはそうだったりするのか?)
コンパイラの本嫁
0847デフォルトの名無しさん
2005/10/13(木) 01:00:350848デフォルトの名無しさん
2005/10/13(木) 01:16:41Winsockコントロールを使用して、POP3サーバから新着メール件数を取得する
プログラムを作成しています。
(環境:Win2K・VB6+SP5)
処理としては
1.POP3サーバに接続
2.DataArrivalイベントでユーザ名、パスワード…と順次SendData
3.切断
と行っています。
ほぼうまくいくのですが、まれに
「実行時エラー40006:指定したトランザクションまたは要求のプロトコルまたは
接続状態に問題があります。」とエラーになってしまう場合があります。
手がかりだけでも教えて頂けないでしょうか?
また上記エラーはErrorイベントでは拾えないのでしょうか?
長文すみませんが、よろしくお願い致しますm(_ _)m
0849デフォルトの名無しさん
2005/10/13(木) 03:00:30PC6000時代のN-BASICはそんなつくりだった気もする。なつかしす
0850デフォルトの名無しさん
2005/10/13(木) 08:08:28そんなわけないだろw
馬鹿じゃないの。
x86の32Gの仮想メモリ空間に1バイトごとユニークな文字列割り振るとしても
アスキー5文字で御釣りが繰るのに、Z-80でそれやったらw
0851デフォルトの名無しさん
2005/10/13(木) 08:13:31そんなわけないだろw
馬鹿じゃないの。
x86の32Gの仮想メモリ空間に1バイトごとユニークな文字列割り振るとしても
アスキー5文字で御釣りがくるのに、Z-80でそれやったらw
0852デフォルトの名無しさん
2005/10/13(木) 08:15:36そんなわけないだろw
馬鹿じゃないの。
x86の32Gの仮想メモリ空間に1バイトごとユニークな文字列割り振るとしても
アスキー5文字で御釣りがくるのに、Z-80でそれやったらw
0853デフォルトの名無しさん
2005/10/13(木) 09:15:43N60-BASICの変数の識別は頭2文字くらいじゃなかったか?
0854デフォルトの名無しさん
2005/10/13(木) 12:54:25一つのプログラムでいくつかのメニューを使おうとしているのですが、それぞれに
共通したサブメニューがいくつか存在するので、デザイン時には実際に呼び出す
メニューと共通するサブメニューを別々に作っておき、実行時に InsertMenuItem
を使って動的に追加しようと考えています。
メニューが全てフォームに表示されている場合は上手い事追加できたのですが、
非表示の時(フォームにはメニューを表示させず、PopupMenu で出したい)は
GetMenu だとか GetSubMenu の値が取れませんでした。
非表示のメニューにサブメニューを追加する方法、もしくは非表示のメニューの
メニューハンドルを取得する方法はないでしょうか?
そもそももっとマシな方法があるだろ、というのがありましたらヒントくださいm(_ _)m
0855デフォルトの名無しさん
2005/10/13(木) 16:54:53非表示のメニューは取得できないよ。
なぜなら非表示のメニュー削除されてるから非表示であって
元からあるモノをを非表示にしている訳ではない。
元々WindowsにはメニューのVisibleは無い。
多分VBのメニューは
Visible=Falseは RemoveMenu() でメニューを消して
Visible=Trueは InsertMenu() でメニューを追加している
という動きだと思うよ
動的に追加ってメニューを配列にしてLoad Unload じゃ駄目か?
0856854
2005/10/13(木) 18:01:39分かりやすいレスありがとうございました。
提案していただいた Load / Unload をやってみようと思いましたが、ベタに
メニューを作るよりもコードが長くなってしまいそうなのでやめました(´Д`)
結局、一つのメニューに全部突っ込み、PopupMenu の直前に共通でない
項目の Visible をごちょごちょいじくる、という方法で乗り切ることにしました。
お騒がせしましたm(_ _)m
0857デフォルトの名無しさん
2005/10/13(木) 18:56:57もう解決済みの様だけど、この方法ならそれなりにスマートかなと思うので書いておきます。
' frmMain - メインフォーム
Public Sub popDebug_Click()
' ポップアップメニュークリックイベント
End Sub
Private Sub Form_Load()
Load frmPopup
Me.Visible = True
End Sub
PopupMenu frmPopup.mnuPopup1 ' ポップアップ呼び出し
Private Sub Form_Unload(Cancel As Integer)
Unload frmPopup
End Sub
' frmPopup - ポップアップメニュー専用フォーム
Private Sub mnuDebug_Click()
frmMain.popDebug_Click
End Sub
各メニューに共通した動作をさせる時も変更する時も
frmMain の飛び先を変えるだけで済むので私はこの方法を使ってます。
0858854
2005/10/13(木) 19:43:31実は似たような方法を実装した事がありました。
表示したいメニューとサブメニューを別のフォームに並べ立て、そっちの
Load イベントでサブメニューの構築、各項目の Click イベントで RaiseEvent を
ガンガン書き、呼び出し元に Private WithEvents Menu As frmMenu …という感じで。
わざわざ RaiseEvent でやる必要もなかったわけだ orz
0859デフォルトの名無しさん
2005/10/13(木) 23:56:01インストール時に、msado25.tlbの登録でエラーが起こります
検索でTips探して、なんとか関連付けのタイプライブラリにLibIDを登録すればいいと
わかりましたが、それをしてもエラーが起こってしまいます
OLEViewでMicrosoft ActiveX Data Object 2.5 LibraryのIDを確認して、
タイプライブラリを追加>LibIDを登録、としているんですが、
これは何か間違ってるんでしょうか
アドバイスお願いします
0860デフォルトの名無しさん
2005/10/14(金) 00:41:43ネイティブコンパイルすれば変数名は消えるのでは?
0861デフォルトの名無しさん
2005/10/14(金) 01:42:44SubmitやClickと違って、URLを探し出してからNavigateする処理になるのでしょうか?
0862デフォルトの名無しさん
2005/10/14(金) 02:18:39ネタニマジレスカコワルイ
0863デフォルトの名無しさん
2005/10/15(土) 01:38:440864デフォルトの名無しさん
2005/10/15(土) 06:34:14感じる基準が前々わからねえ、性格歪みすぎてるんじゃねえ?
0865デフォルトの名無しさん
2005/10/15(土) 08:10:080866デフォルトの名無しさん
2005/10/15(土) 09:10:20関数は Open,Read,Write,Close
フォーマットは http://www.kk.iij4u.or.jp/~kondo/wave/
ミキシングしたい場合はサンプリングレート合わせて足し算すればよろし
0867デフォルトの名無しさん
2005/10/15(土) 14:13:49具体的にどのような機能でしょうか?
0868デフォルトの名無しさん
2005/10/15(土) 15:43:54それを聞いたところに聞き直して
結果をここに報告汁
0869867
2005/10/15(土) 16:27:450870デフォルトの名無しさん
2005/10/15(土) 21:46:170871デフォルトの名無しさん
2005/10/15(土) 22:55:570872デフォルトの名無しさん
2005/10/16(日) 11:06:450873デフォルトの名無しさん
2005/10/16(日) 11:12:37ベンチャー板に逝け
0874デフォルトの名無しさん
2005/10/16(日) 18:22:12またプログラマでのなんでもないのですが、アドバイスお願いします。
ADOでパラメータクエリを作成し、複数のアクセスMDBファイルから
クエリでデータを取得するプログラムを作っています。
このときいくつかのMDBには存在しないフィールドに対しても、クエリを実行するのですが、
当然エラーが出ます。
On Error Resume Next
Set rs = New ADODB.Recordset
Set rs = cmd.Execute
としても、次に飛んでくれないで、黄色い表示のデバッグになってしまうのですが・・・・エラーメッセージは以下です。
"実行時エラー'-2147217904 (80040e10)':
1つ以上の必要なパラメータの値が設定されていません。
クエリや他の部分はフィールドが存在するときは正しく動いています。フィールド名を事前に取得して
チェックさせれば良いのでしょうが、このエラーだけresumeが効かないのが理解できません。
0875デフォルトの名無しさん
2005/10/17(月) 07:02:18bookmarkってレコードセットに戻せないんでしょうか?
オブジェクトを閉じる前にカレントレコードを取得しておいて
新規にオーペンしたレコードセットのカレントを、
取っておいたbookmarkの位置にしたいんです…。
できないのであれば別な方法ありますでしょうか?
0876デフォルトの名無しさん
2005/10/17(月) 09:42:50まあやるならば、そのカーソル位置のレコードのキーを覚えておけばいいんじゃないの?
0877デフォルトの名無しさん
2005/10/17(月) 17:30:58DB側に置いてクライアント側で呼び出すって流れを知ってる程度です
サンプルとか解説HPあれば是非教えて下さいm(__)m
0878デフォルトの名無しさん
2005/10/17(月) 17:37:420879デフォルトの名無しさん
2005/10/17(月) 18:02:43それしかない
0880デフォルトの名無しさん
2005/10/17(月) 20:58:34スレ立てるまでもない質問・雑談@DB板
http://pc8.2ch.net/test/read.cgi/db/1057985632/858
こっちに誘導しないでくれ。
0881猫舌仮面
2005/10/17(月) 22:11:42「(条件式)?(条件真の値):(条件偽の値)」の記述が分からずに困っています
以下のような文にしたいのですが
どうか教えてください
VAL = INPUT_NAME()
print "あなたは" & (VAL = "猫舌仮面" ? "天才" : "マヌケ") & "です"
よろしくおねがいします
0882デフォルトの名無しさん
2005/10/17(月) 22:13:250883デフォルトの名無しさん
2005/10/17(月) 22:28:34少しだけ長くなるけどこんな感じかな?
VAL = INPUT_NAME()
print "あなたは"
if VAL = "猫舌仮面" then print "天才"
if VAL <> "猫舌仮面" then print "マヌケ"
print "です"
0884デフォルトの名無しさん
2005/10/17(月) 22:31:300885猫舌仮面
2005/10/17(月) 22:39:34ありがとうございます
ソースは短い方が好きなので
もう少し
短くする方法はないでしょうか
0886デフォルトの名無しさん
2005/10/17(月) 22:40:51>>882
0887デフォルトの名無しさん
2005/10/17(月) 22:43:00可哀想な>>882に一言頼む
0888猫舌仮面
2005/10/17(月) 22:48:05猫舌に言っていると気がつきませんでした
iif 使い方を調べてみます
素早い回答 ありがとうございでした
0889デフォルトの名無しさん
2005/10/17(月) 22:57:380除算とか、Nothing参照とか。
0890883
2005/10/17(月) 23:00:21>もう少し短くする方法はないでしょうか
んじゃこんな方法もある
VAL = INPUT_NAME()
if VAL = "猫舌仮面" then print "あなたは天才です"
if VAL <> "猫舌仮面" then print "あなたはマヌケです"
0891デフォルトの名無しさん
2005/10/17(月) 23:04:180892デフォルトの名無しさん
2005/10/17(月) 23:04:460893デフォルトの名無しさん
2005/10/17(月) 23:05:300894883
2005/10/17(月) 23:10:38よく分からないけどスルーしてください
ちなみに私は893でもヤクザさんでもありません
iifも知りませんが
初心者の頃はお子様ソースでも構わないと思っています
スルーしてください
0895デフォルトの名無しさん
2005/10/17(月) 23:13:22状況に応じてIIf関数使うのも悪くはない。
少なくとも「iifなんて使うのはガキ」とか言い出す奴がガキなのは間違いないが、
IIf使う奴はガキとは限らない。
要は臨機応変だよ。893みたいなガキには難しいかもしれないけど。
0896デフォルトの名無しさん
2005/10/17(月) 23:17:59Ifで書けることを、速度を遅くしてまでIIfを使うのに臨機応変もなにもない。
0897デフォルトの名無しさん
2005/10/17(月) 23:22:36わざわざ遅くなるようなネイティブコードに展開するような馬鹿なコンパイラが
あるとは思えんがね俺は。
0898デフォルトの名無しさん
2005/10/17(月) 23:27:130899デフォルトの名無しさん
2005/10/17(月) 23:28:210900デフォルトの名無しさん
2005/10/17(月) 23:29:050901デフォルトの名無しさん
2005/10/17(月) 23:29:45Function a()
mCount = mCount + 1
a = "a"
End Function
Function b()
mCount = mCount + 1
b = "b"
End Function
Private Sub Command1_Click()
Dim r As Variant
mCount = 0
MsgBox CStr(mCount)
r = IIf(True, a(), b())
MsgBox CStr(mCount)
End Sub
IIf koeeeeeeeeeeeeeee!!!!!!!
0902デフォルトの名無しさん
2005/10/17(月) 23:37:47本当だよ。
条件判断して、真の場合と偽の場合とで別々の値を変数に代入するIfステートメントと
同等処理をIIf関数を使って書いた場合とでは後者の方が遅い。
但し2GHz前後のCPUだと0.000001秒くらいの差。
これを気にするならVBなんか使うなって話だな。
認知度を理由に共同開発などではIIf使うなってのはもっともな意見だが
速度を理由にIIf使うなって言ってる奴はバカでしかない。
0903デフォルトの名無しさん
2005/10/17(月) 23:38:44ちゃんと書いてあるじゃん。
まあ三項演算子の代替物だと思って使うと確かにアレだが、
そんなもんロクにマニュアルを読まずに使うほうが悪い。
0904デフォルトの名無しさん
2005/10/17(月) 23:39:230905デフォルトの名無しさん
2005/10/17(月) 23:45:31ではここまででiifの件は終了
これ以上続ける奴は負け犬の遠吠えってことで放置
0906デフォルトの名無しさん
2005/10/17(月) 23:46:550907デフォルトの名無しさん
2005/10/17(月) 23:47:080908デフォルトの名無しさん
2005/10/18(火) 00:21:32アドバイスよろしくお願いします。
その問題ですが、「文字列をテキストボックスに入力して、文字列中に数字列が存在したら整数とみなし、
数字を取り込みそれらの合計を表示する」
例:ABC12HHHsk36LHin191***20と入力した文字列の数字合計→12+36+191+20=259
答え:259
といった形です。
Mid関数を利用して文字列から一文字づつIsNumericで判定していくというところまでは考えたのですが、
この先をどうしたらいいのかさっぱり思いつきません。漠然的な質問で申し訳ありませんが
この先どのようにロジックを組めばいいかアドバイスおねがいします。
0909デフォルトの名無しさん
2005/10/18(火) 00:40:08つーか、わかんなかったらこんなとこじゃないくて友達に聞こうよ。
0910デフォルトの名無しさん
2005/10/18(火) 00:49:330911デフォルトの名無しさん
2005/10/18(火) 05:27:42最後に各整数を合計
はい、次
0912デフォルトの名無しさん
2005/10/18(火) 05:32:49int((b-a+1)*rnd)+a
これであってますかね?
0913デフォルトの名無しさん
2005/10/18(火) 05:46:02randomaize忘れるなよ
はい、次
0914デフォルトの名無しさん
2005/10/18(火) 05:54:55をいをいw
二つも間違ったこと教えるなよ
int((b*rnd)+a) > a=1の場合しか使えない
randomaize > スペル間違い
0915デフォルトの名無しさん
2005/10/18(火) 06:15:030916デフォルトの名無しさん
2005/10/18(火) 06:37:29elseとかelifとかないの?
0917デフォルトの名無しさん
2005/10/18(火) 09:20:340918デフォルトの名無しさん
2005/10/18(火) 09:29:58古くからBASICやってた人が書いたソースだと見分ける意味があります
0919デフォルトの名無しさん
2005/10/18(火) 09:30:26as long といっしょ
$ だと as string
# だと as double
とか
0920デフォルトの名無しさん
2005/10/18(火) 09:38:40回答thx。アドレス演算子かなぁと激しい間違い起こすところでした。
0921初心者
2005/10/18(火) 10:39:15最近VBの勉強を始めたばっかりで、今並べ替えのプログラムを作ろうと思って
いるのですが、アルゴリズムやコントロール配列についてわからないので
教えてください。
0922デフォルトの名無しさん
2005/10/18(火) 10:54:37検索エンジンで「ソートアルゴリズム VB」をキーワードに検索すれば手ごろなページはなんぼでも出てくる。
ソートとコントロール配列の関係は俺にはわからん。
0923初心者
2005/10/18(火) 11:03:59調べてみます。ありがとうございました。
0924デフォルトの名無しさん
2005/10/18(火) 11:23:13古いが定石だな
0925デフォルトの名無しさん
2005/10/18(火) 12:39:09お前、そんなに人様に教えを垂れたいのか、ってw
どう考えても釣りだろうよ。猫舌だの初心者だのってw
0926デフォルトの名無しさん
2005/10/18(火) 13:47:26このスレで釣られてるヤシは最後の良心
回答せずに文句だけ言うヤシなんてこのスレに(゜�凵K)イラネ
0927デフォルトの名無しさん
2005/10/18(火) 13:52:080928デフォルトの名無しさん
2005/10/18(火) 15:28:500929908
2005/10/19(水) 16:25:14遅レスすみません。何度かフローチャート作って考えてみた結果>>911の書いた
部分が足りていなかったなど、数箇所足りない部分がありました。
スレ汚しすみませんでした。
ちなみに、自分VBとC言語は趣味で勉強してるのでそういった友人いないんですよ…
0930デフォルトの名無しさん
2005/10/20(木) 01:29:57[SET]
Docu="C:\1.txt"
とあって
コマンドボタンクリックしたときにメモ帳で1.txtを開く。
iniファイルが
[SET]
Docu="C:\2.xls"
だったときはEXCELで2.xlsを開く。
なんていったのはどうすればいいですか?
Private Sub Command1_Click()
Dim Ret As Long
Dim ini AS iniファイルから読んだファイル名
Ret = Shell(ini , vbNormalFocus)
End Sub
だとエラー出るんですよね。
Ret = Shell("C:\WINDOWS\CALC.EXE", vbNormalFocus)
だとちゃんと電卓起動するんですが。
0931デフォルトの名無しさん
2005/10/20(木) 02:07:47ShellEx
使い方は自分で調べろ
0932デフォルトの名無しさん
2005/10/20(木) 02:08:460933デフォルトの名無しさん
2005/10/20(木) 07:23:42TCPで相手にバイナリファイルを送信しようとしてるんですが
SendDataって
Open "c:\hogehoge.dat" For Binary Access Read As 1
Get #1, cnt, rec
SendData rec
cnt = cnt + 1
Close #1
ってな具合に1バイトずつ送るもんなんでしょうか?
それとも変数に詰め込めるだけ詰め込んでからSendDataしてやれば
後はWinsockが裏側でお膳立てしてくれるもんなんでしょうか?
どっちが標準的なやり方なのか(それともどっちも間違いなのか)が分かりませぬ…
0934デフォルトの名無しさん
2005/10/20(木) 07:43:45試せよ。
0935デフォルトの名無しさん
2005/10/20(木) 14:06:40func 0, 0, 0#
0936デフォルトの名無しさん
2005/10/20(木) 14:22:54>>919
0937デフォルトの名無しさん
2005/10/20(木) 15:31:030938デフォルトの名無しさん
2005/10/20(木) 15:36:33access.application
run
あとは自分で調べろ
0939デフォルトの名無しさん
2005/10/20(木) 20:33:33チェックにしたボタンを押した状態で無効にすると、
枠が描画されず、ホットイメージのままになります。
オーナードロー以外の回避策を教えてください。
0940デフォルトの名無しさん
2005/10/20(木) 20:41:22ミラーリングツールを自作してみたのですが、なんか、変な現象に悩まされているです。
自作のツールのみを起動させて実行させるとコピー速度が遅いのですが、
DiskMirroringToolと一緒に起動させて、走らせると、DiskMirroringToolが
コピーしている間だけ、自作ツールの方のコピー速度もつられて(?)早くなるのです・・・。
こんなことって、何が原因で起こってるか分かりますか?
0941940
2005/10/20(木) 21:06:03無視してくださいT.T
0942デフォルトの名無しさん
2005/10/20(木) 22:47:42栗営戸尾武じぇくとで
乱まぐろでは?
0943デフォルトの名無しさん
2005/10/21(金) 01:14:10Dim recdat As String * 500
Open "c:\hoge\in.dat" For Binary Access Read As 1
Get #1, , recdat
Close #1
Open "c:\hoge\out.dat" For Binary Access Write As 2
Put #2, , recdat
Close #2
ってな感じで、読み取って、別のファイルに書き込むと
なんでか一部だけデータがバケてるんです、どうやったら正常になるとでしょうか
ttp://screw01.hp.infoseek.co.jp/cgi-bin/img-box/img20051021011346.png
0944デフォルトの名無しさん
2005/10/21(金) 01:32:48String*でコントロールコード含むファイルからデータ読んだらダメ
Dim recdat(500) as byteみたいなbyteで受ける必要がある
ただ、lof関数使ってサイズの確認しながら読まないといけないので注意する事
0945デフォルトの名無しさん
2005/10/21(金) 04:27:16SJISをUNICODEに変換してるから化けてるの
VBのStringはUNICODEだよ
SJISで読みたい時 又は そのままで読みたい時はByte型で
0946デフォルトの名無しさん
2005/10/21(金) 07:34:25ADODB.Streamを使うと楽かもよ
0947デフォルトの名無しさん
2005/10/21(金) 08:51:04ハァ?
0948デフォルトの名無しさん
2005/10/21(金) 12:30:56これ、なかなか良いな。C言語におけるlintみたいな感じの
ツールだ。
0949デフォルトの名無しさん
2005/10/21(金) 16:44:04ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/4226dabe-7e71-453d-b4e0-0f8b03525f72.asp
で、XMLHTTPオブジェクトのonReadyStateChangeイベントをハンドラする方法がありますが
このイベントはJavaScript(JScript)などのDOM上の関数ポインタで扱う設計なので
従来のVB6のCOMのイベントハンドラの方法とは違います。
このサンプルを見ますと、3つの方法のうち、クラスモジュールでラッパークラスを作成してハンドラする方法がありますが、
クラスモジュールのSub OnReadyStateChange()のプロシージャIDをクラスの既定に設定し
実際ハンドラを結びつけるのはフォームモジュールに書いてあると通り、そのクラスインスタンスを参照させることで実現していますね→★の行
Public XMLHttpRequest As MSXML2.XMLHTTP30
Private Sub ClassResolution()
If Not XMLHttpRequest Is Nothing Then Set XMLHttpRequest = Nothing
Dim MyOnReadyStateWrapper As MyReadyStateHandler
Set XMLHttpRequest = New MSXML2.XMLHTTP30
Set MyOnReadyStateWrapper = New MyReadyStateHandler
XMLHttpRequest.OnReadyStateChange = MyOnReadyStateWrapper '★
XMLHttpRequest.open "GET", "http://localhost/test.xml", True
XMLHttpRequest.send
End Sub
このプロシージャIDを既定値をするとそのインスタンス名は関数ポインタと同じ動作になると言うことでしょうか?
説明できる方いましたらお願いします。
0950949
2005/10/21(金) 17:04:51このVB6で行っているイベントハンドラの仕組み自体が知りたいのです、
VBSでさえ、GetRef関数を装備して関数ポインタが扱えますね。
VB6は設計が古いのは残念です。
0951デフォルトの名無しさん
2005/10/21(金) 17:08:47古いのが嫌ならVB.NET使え
0952デフォルトの名無しさん
2005/10/21(金) 18:25:270953デフォルトの名無しさん
2005/10/21(金) 18:29:41256*256*256
0954952
2005/10/21(金) 19:21:52Red + Green * 256 + Blue * 256^2
のようですね。解決しました。
0955デフォルトの名無しさん
2005/10/21(金) 23:10:08テキスト全体を選択するために GotFocus ハンドラに
.SelStart = 0
.SelLength = Len(.Text)
と書いています.テキストボックスが複数あるとき
ひとつずつ書かなくてすむ方法があったと思うのですが,
どこで見たか忘れてしまいました.
どなたか思い出させてくれないでしょうか?
0956デフォルトの名無しさん
2005/10/21(金) 23:20:15選択範囲の設定処理を関数に分離して、各GotFocusから呼び出す
0957デフォルトの名無しさん
2005/10/21(金) 23:28:120958デフォルトの名無しさん
2005/10/22(土) 00:55:05方法を教えてください。リフレクションのVBAとかじゃなくて
普通にVB6で作成した画面からリモート越しにSHELLを起動したいんです
UNIXはソラリスの。ええと今バージョンはわかりません
Cシェルで作成しているコマンドとできればCで作られた実行ファイルの
FilegetInfoというファイルを実行したいのです。
0959デフォルトの名無しさん
2005/10/22(土) 01:13:35めんどくさいから、SystemWalker/OPとか入れちゃえ
0960デフォルトの名無しさん
2005/10/22(土) 03:15:02VSFlexGrid・VB6使用中です。
For i = 0 To 10
.TextMatrix(i,1)="AAA"
Next
とかする際に指定するcolの部分の値。
ここを下みたいに固定の定数にしたいのです。
For i = 0 To 10
.TextMatrix(i,ColName1)="AAA"
Next
で、EnumでやってもCONSTでやってもうまいこといかないし、
指定する方法が思い出せないのです。。
以前、触った記憶はあるのですが。。。
下記のようなEnum風の宣言方法だったのですが。
Public ●●
ColName1
ColName2
ColName3
End ●●
以上です。よろしくおねがいします。
0961デフォルトの名無しさん
2005/10/22(土) 04:17:00出来ないんだとしたら根本的に何か間違ってるんだろうな
0962デフォルトの名無しさん
2005/10/22(土) 10:40:43http://web.archive.org/web/20041012230232/www.gj.il24.net/~nakasima/vb/tech/excontrol/index.htm
このサイトはよく見させてもらってたけど閉鎖しちゃったのかな。
0963デフォルトの名無しさん
2005/10/22(土) 17:26:40多分Enumの宣言でColName1を1と宣言したいんだと思う
ColName1 = 1
ってやってないってオチ
「 = 1 」省略すると 0 になるよ
Public Enum AAAAAAAAAAA
ColName1 = 1
ColName2 = 2
ColName3 = 3
End Enum
0964デフォルトの名無しさん
2005/10/22(土) 17:34:250965pada
2005/10/23(日) 16:53:03Webサーバーにある画像ファイルを、一覧(スプレッドシートでも可)にサムネイル表示
することは可能ですか?
0966デフォルトの名無しさん
2005/10/23(日) 16:54:54可能なように設定すれば可能。
まずは、「不可能かも」と思った理由を述べるが良い。
ついでに、どの辺りがVB6.0とかかわるのかも述べなさい。
0967デフォルトの名無しさん
2005/10/23(日) 17:03:46その問題の配点はどれくらいになりますか?
0968デフォルトの名無しさん
2005/10/24(月) 01:12:10今手持ちのVisual Studio 6.0 EnとOffice 2000 Pro(お客さんの環境)
で可能なのでしょうか、なにぶんどこを探しても2000 Devはないと言われる始末
困った助けて
0969デフォルトの名無しさん
2005/10/24(月) 01:21:44出来るけど2000Devのマニュアル無いと辛いね
MSDNの中から関連する内容を探し出さなきゃいけない
0970デフォルトの名無しさん
2005/10/24(月) 01:39:130971デフォルトの名無しさん
2005/10/24(月) 01:42:17試行錯誤っていう選択は激しくありえないでしょうか?
0972pada
2005/10/24(月) 02:07:41基本DBはMS-ACCESSです。但し、画像ファイルのみWEBサーバーにあるものを参照
する。というものです。
VBの一覧にはACCESSのデータを表示します。
サムネイルする部分はACCESSのデータに入っているパスを参照します。
私の知る範囲では、Picuteboxでloadpictureで読み込む。
という事位なので、実現させる為には一覧にpictureboxを貼り付ける(イメージとして)
とか、リストの隣に行数分のpictureboxを置く。
位しか浮かびません。
何か、他にオブジェクトがあるんでしょうか?
0973デフォルトの名無しさん
2005/10/24(月) 02:18:17有りだとは思うけど、XML関連ダッシュボード関連の追加、その他色々細かい修正有るみたいだから本が違ってても気にしない事
0974デフォルトの名無しさん
2005/10/24(月) 15:13:06・「ありますか?」という質問に「ある」だけで回答するの禁止。
・「可能ですか?」という質問に「可能」だけで回答するの禁止。
0975デフォルトの名無しさん
2005/10/24(月) 15:17:33あるない、出来る出来ないを聞きたいならばその回答でクローズでいいじゃない。
もっと具体的に聞きたいならば、どこまで試して何がだめか書くべき。
それをせずにすべて教えてっていうならば、最初から全部ソースくれって書けと。
相手にされるかは知らんが。
0976デフォルトの名無しさん
2005/10/24(月) 15:25:54・質問禁止
0977デフォルトの名無しさん
2005/10/24(月) 16:28:50・書き込み禁止
0978デフォルトの名無しさん
2005/10/24(月) 16:30:54・×最初が「ア」
・バンガ愛護
・土水火風禁止
0979デフォルトの名無しさん
2005/10/24(月) 16:37:58オマエら禁止な
0980デフォルトの名無しさん
2005/10/24(月) 16:42:240981デフォルトの名無しさん
2005/10/24(月) 16:44:560982デフォルトの名無しさん
2005/10/24(月) 19:51:16同意。
「ある」「可能」という回答が、「テンプレ読め」に置き換わるだけだものな。
0983デフォルトの名無しさん
2005/10/24(月) 20:09:59ちゃんと質問してくる人はちゃんとテンプレも読んでいる。
テンプレに追加が無駄だとは言わないけれど、
「禁止」だけじゃなくて具体例ぐらい書かないと効果ないかもね。
0984デフォルトの名無しさん
2005/10/24(月) 20:14:56見栄えをあまり気にしないなら、ListViewで。
見栄えを気にするなら、必要枚数のpictureboxを配置するのは十分妥当だろ。
0985デフォルトの名無しさん
2005/10/24(月) 22:01:03WebBrowser1.Navigate "C:\画像リスト.html"
0986デフォルトの名無しさん
2005/10/24(月) 22:48:33ちょwwwwwおまwwwww天才wwwwwwwww
0987デフォルトの名無しさん
2005/10/25(火) 08:46:58チェックボックス型にしているのですが
これをalignをcenterにしたいのですが方法がわかりません。
ご存知の方がおられましたらご教授お願いできますでしょうか。
よろしくお願いいたします。
0988デフォルトの名無しさん
2005/10/25(火) 09:08:42SPREADのバージョンは?
俺のは3.0だけど、SPREADデザイナのメニューから
[セル]→[セル型]→[チェックボックス]で表示される
ウィンドウの中に「水平位置」「垂直位置」ってのがあるよ。
0989デフォルトの名無しさん
2005/10/25(火) 09:31:53データソースを直接表示しているせいか、そこを設定しても
なぜか元に戻ってしまいます。
コードで変更できる方法はないものでしょうか・・・
0990デフォルトの名無しさん
2005/10/25(火) 09:35:56.TypeHAlign = TypeHAlignCenter
でした。ありがとうございました。
0991デフォルトの名無しさん
2005/10/25(火) 11:24:07DBのある場所:192.168.0.28
DB名:testdb001
テーブル名:test001
ユーザー名:test
PASS:test
で
Private Sub cmdConnectTest()
Dim cn As Object
Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=SQLOLEDB;" & _
"Initial Catalog=testdb001;User ID=test;Password=test;" & _
"Network Address=192.168.0.28;"
Dim rs As Object
Set rs = cn.Execute("select * from test")
Do While Not rs.EOF
Debug.Print rs.Fields(1).Value
rs.MoveNext
Loop
End Sub
だと接続できないって言われます。
まぁこのコード自体はwebから持ってきたんですけど。
どう変更すれば良いでしょうか
0992991
2005/10/25(火) 13:59:21VB6でMSDEにADO接続したいんです。
0993デフォルトの名無しさん
2005/10/25(火) 14:29:53"Network Address=〜"を削除して、"Data Source=データベースサーバー名"を入れるといい。
でもNetwork Addressってどこから出てきたんだろ?
0994デフォルトの名無しさん
2005/10/25(火) 16:35:23フォームのLoadイベントが走ったときにコントロールのVisibleを制御しようとすると、
時々いくら変更しても初期値のまま変わらないことがあります。
きっちり調べたわけではないので勘違いかもしれませんが、
Showした時に走るLoad医弁tおでは起こらず、Loadされていないフォームの
Public関数を呼んだ時に走るLoadイベントで発生するようです。
これは何が原因なのでしょうか。
参考になるドキュメントなどがあれば教えてください。
0995994
2005/10/25(火) 17:26:59あと、次スレ立てないとまずいですよね?
0996デフォルトの名無しさん
2005/10/25(火) 17:45:410997デフォルトの名無しさん
2005/10/25(火) 17:57:42ロードされているけど非表示でFormは見えていない。
>Public関数を呼んだ時に走るLoadイベントで発生するようです。
そのメソッドのコールで初めてFormがロードされたから。
Showされたからと言って必ずLoadイベントが発生する訳では無いので
Showされる前のFormのロード状態をよく調べてみ
Loadイベント発生の目安は
『初めてFormのメンバーにアクセスした時』
『Loadステートメントで無理やりFormをロードした時』
『FormをNewした時』
位しか思い浮かばない…
0998デフォルトの名無しさん
2005/10/25(火) 19:08:10いや、ShowとLoadの関係は分かってるんです。
というか、ShowされたときにLoadイベントが走らないと言ってるわけではなく、
Loadイベント内でコントロールのプロパティを変更したときに、その変更が効かず、
デザイン画面で設定した値のまま表示されてしまうことがある、という件なんです。
フォームがメモリ上にロードされていない状態で、
・Showする → Form_Load() → プロパティ変更OK
・Public関数を呼ぶ → Form_Load() → プロパティ変更NG
という現象が起こる理由が知りたいのです。
ああ、もうスレが埋まる・・・
私はこのスレのテンプレとか流れとか知らないので、誰か次スレ立ててください・・・
0999デフォルトの名無しさん
2005/10/25(火) 19:11:49http://pc8.2ch.net/test/read.cgi/tech/1130231657/
1000994
2005/10/25(火) 19:18:1410011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。