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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん

ここは 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
Google
http://www.google.co.jp/
※「まず自分で調べる」クセを身につけよう。

○質問者の心得
一.質問する前に過去ログにも目を通してみる。
二.質問する前に MSDN などで調べてみる。
三.VBScript はこのスレでOK。
四.インストーラーなどの質問もOK。
五.荒らしは相手しない。
六.VB.NETの話題はできるだけひかえる。
七.質問は第三者にもわかりやすいよう簡潔かつ具体的に。

前スレ Part42 http://pc8.2ch.net/test/read.cgi/tech/1116924129/
2デフォルトの名無しさん: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/
3デフォルトの名無しさん:2005/08/14(日) 02:05:00
4デフォルトの名無しさん: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/
5デフォルトの名無しさん:2005/08/14(日) 09:04:25
○過去ログ 43〜65
  Part43 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

6デフォルトの名無しさん:2005/08/14(日) 13:23:14
Win2000 SP4 + VB6.0 SP6です。

デスクトップ右クリックメニューの「等間隔に整列」を
ロジックで実現する方法を教えてください。
よろしくお願いいたします。
7デフォルトの名無しさん:2005/08/14(日) 20:04:11
ListViewコントロールについてなんですが、各行の横幅でなく、
たて幅を設定できないものでしょうか?
(セルのたて幅とも言えるかもしれません)

ListView内の一行を選択する形で作ると、
どうしても各行が細いのが気になってしまって……。
8デフォルトの名無しさん:2005/08/15(月) 13:00:55
VB6.0-TextBoxオブジェクト付随のScrollBarをプログラム側から移動させる方法を教えてください・・・
9デフォルトの名無しさん:2005/08/15(月) 14:18:55
9get

>>8

たぶん
SetScrollInfoとGetScrollInfoを使えばできると思います。
10デフォルトの名無しさん:2005/08/15(月) 15:41:39
>>7
「リストビュー メッセージ 高さ」でヤフるんだ。
1件目に出てくるぞ。
・・・望みの高さのイメージリストを付けてやれとさ。

あるいは、単なる一覧としてならMSFlexGridで代わりにすれば?
118:2005/08/15(月) 16:42:34
ウィンドウハンドルにコントロールを入れてみたりとやってみたのですが、
動作させることができませんでした。

教えて君で申し訳ないんですがコントロールの場合どうやるのか教えていただけませぬか?
12デフォルトの名無しさん:2005/08/15(月) 17:01:19
>>8
確かVBのTextBoxはスクロールに対してVB自身が独自の描画をしているから
SetScrollInfo・GetScrollInfoでスクロールバーのつまみは動くけど
文章自体はスクロール出来ないんだよな…
13デフォルトの名無しさん:2005/08/15(月) 17:01:40
質問ですが、

最適化オプションの『Pentium Proへの最適化』という項目は、Pentium Proへの対応であってPentium 4とかには
意味なしオプションなんですか?

そもそもなんであんなマイナーなCPUへ最適化しようとしたのかの背景も知りたいのですが・・・。

それ以前に、P-Codeでコンパイルした方が速い箇所もあるのは俺の作り方がへたくそという事なのでしょうか。
ちなみに、自分のソフトはAPIを使った方が速い部分については、結構な頻度でAPI使ってて、VBらしさという点ではVBらしくないです。

ご回答よろしくお願いします。
14デフォルトの名無しさん:2005/08/15(月) 17:04:27
>>8
SelStartである程度は動かせるべ?
SendKeysもあるし。
15デフォルトの名無しさん:2005/08/15(月) 17:13:00
>>8
作ってみました。
これでスクロールバーを縦に動かすことはできますが
>>13さんが言うようにテキストを再描画できません。

SendMessageでやればできたような気もしなくも無い。
ちょっと考えて見ます。

-------------ソース---------------
フォームにtxtっていうテキストボックスとボタンを一つ貼り付けてね。
16デフォルトの名無しさん:2005/08/15(月) 17:13:38
Option Explicit

Private 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)
17デフォルトの名無しさん:2005/08/15(月) 17:15:46
Private Sub Command1_Click()
Dim 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
連投すまん。入らなかった。
18デフォルトの名無しさん:2005/08/15(月) 17:34:22
>>15
本当にありがとうございます。
やっと意味が理解できましたorzフォームのハンドルずっと返してた・・・
19デフォルトの名無しさん:2005/08/15(月) 18:34:00
>>10
出来ました!どうもありがとうございます。助かりました。
……自分はもっと検索方法を工夫しないといけないようですorz
 
MSFlexGridも初めて知りましたが、こっちの方が使いやすそうですね……
20デフォルトの名無しさん:2005/08/16(火) 01:47:32
>>13
VBの標準関数(特に文字関係)呼びまくってたり "AAAA" & "BBBB" みたいに文字結合しまくってるとP-Codeの方が速くなるらしい。
逆に数値演算やWIN32APIが多いとネイティブの方が速いらしい。
まぁあくまでも目安で
2113:2005/08/16(火) 02:00:04
>>20
回答ありがとうございます。
やっぱり、P-Codeの方が早くなる場合もあるんですね。

timeGetTimeで計測したんですが、IDEが一番早くて、次にP-Codeのexe、ネイティブの『実行速度最適化』のexe
という順序でスピードが出てたんで、最初錯覚かと思ったんですよね〜。

VC++なんかだと、モジュールごとに最適化が掛けられるのに、VBはなんでフォームごとに最適化できないかなー?同じ会社の製品なのにー、
とか考えてしまいますた。
22デフォルトの名無しさん:2005/08/16(火) 18:05:11
>>13
PentiumProに最適化したら、PentiumIIもIIIもP6アーキテクチャ
なんだから有効だと思われ。以前PenIIマシンで最適化オンにしたら
文字列処理が若干速くなった。
NetBurstはどうだろうね。たぶん効果あると思うけど。
23デフォルトの名無しさん:2005/08/16(火) 18:10:39
超初心者的質問ですが、

str$()とstr()

のような$あり、なしではどう違うんですか?

$の意味がわからないんですが。

2423:2005/08/16(火) 18:17:03
すみません。間違えました。
初心者スレ逝きます。
25デフォルトの名無しさん:2005/08/16(火) 20:32:56
>>23
いいよ、ここで。戻り値の型が$ありだとStringでなしだとVariant。
2613:2005/08/16(火) 23:14:31
>>22
なるほど。
うちはAMDだから?効果が実感できなかったんですよ。
今後参考にしてみますね。
27デフォルトの名無しさん:2005/08/17(水) 05:14:16
ワードなんかにあるFontを選択するプルダウンメニューのようなものを作りたいのですが
プルダウンのリストに含まれるFontの種類などは、どこから持ってくるのでしょうか?
28デフォルトの名無しさん:2005/08/17(水) 05:32:37
>>27
MSDN読めば一発でわかるよ
29デフォルトの名無しさん:2005/08/17(水) 07:33:23
>>28
では読んだ結果を教えてください。
30デフォルトの名無しさん:2005/08/17(水) 07:50:36
ことわる
31デフォルトの名無しさん:2005/08/17(水) 09:49:05
>>27
ヘルプ開いたら「フォント 一覧 取得」で検索しろ。
Fonts プロパティというトピックがあるから嫁。
「使用例」「対象」も読め。
ついでにStr()にNullを渡すとNullが返ってくるが
Str$()にNullを渡すとエラーになる。
あと質問を出汁にして罵りあって遊ぶな。
32デフォルトの名無しさん:2005/08/17(水) 10:13:54
>>23
型宣言文字っていうものだよ。
33デフォルトの名無しさん:2005/08/17(水) 10:49:13
>>30
もしかして分からないんじゃ?
34デフォルトの名無しさん:2005/08/17(水) 10:58:18
OCXとDLLはどう違うのでしょうか。
35デフォルトの名無しさん:2005/08/17(水) 11:33:30
>>34
DLLは一般的な名称、だいなみっくりんくらいぶらりー。
文字通り動的結合可能なライブラリ。

OCXはMSの固有名詞、OLEカスタムコントロールのこと。
36デフォルトの名無しさん:2005/08/17(水) 12:12:23
27です。分かりました。皆さん、ありがとうございました。

ちなみに、>>29は私ではありません。
37デフォルトの名無しさん:2005/08/17(水) 12:32:44
>>35
どう使い分けるものなのでしょうか。
38デフォルトの名無しさん:2005/08/17(水) 14:48:35
>>37
使い分けじゃない。概念としてはDLLっていう大きな括りに、OCXは内包される。
そもそも、説明したDLLとOCXの意味って自分で調べた?
3937:2005/08/17(水) 15:21:11
他の方の意見もお聞きしたいです。よろしくお願いします。
40他の方:2005/08/17(水) 15:25:10
>>39
使い分けじゃない。概念としてはDLLっていう大きな括りに、OCXは内包される。
そもそも、説明したDLLとOCXの意味って自分で調べた?
41デフォルトの名無しさん:2005/08/17(水) 15:25:13
>>38
俺はよく知らないけど、使い分けじゃないならなんで別々にあるの?
42デフォルトの名無しさん:2005/08/17(水) 15:26:05
>>40
き、きも・・・プログラム板にもこういう人いるんだ。
43デフォルトの名無しさん:2005/08/17(水) 15:36:36
OCXはコントロールに貼り付けて使う。
DLLはコードで宣言して使う。
VB6.0ならこう覚えておけば問題ない。
44デフォルトの名無しさん:2005/08/17(水) 15:46:58
OCXはActiveXとか呼ばれてる(旧名はOLEカスタムコントロール)。
ActiveXはCOMを元に生成されている。COMとはオブジェクトに特定のインタフェースを持たせて仕事をさせる
(VBのクラスみたいな感じ。実際VBのクラスもCOMに基づいて生成されるって聞いたことがある)。
ActiveXはEXEの外部から割り込んでくるオブジェクト。

DLLはEXEがロードされた時、同じ空間上に関数が置かれるからEXEの一部として動く。

DLLとOCXを使い分ける意味は ActiveX について調べてね。


って氏んだじーちゃんが言ってた
45デフォルトの名無しさん:2005/08/17(水) 17:11:20
>>43
コントロール「に」?
46デフォルトの名無しさん:2005/08/17(水) 17:54:42
>>39
とりあえず、>>38 <> >>40だから。

で、OCXってのはDLLの一形態ってのは理解したんかい?
47デフォルトの名無しさん:2005/08/17(水) 18:46:53
>>46
はいはい
48デフォルトの名無しさん: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

知っている方は教えてくださいませ。
49デフォルトの名無しさん:2005/08/17(水) 23:37:14
GetWindowLong
SetWindowLong
WM_NOTIFYフック
50デフォルトの名無しさん:2005/08/18(木) 00:10:00
>>49
ありがとうございます。しかし、ヒントが難しいです。。

GetWindowLongでウインドウスタイルの現在値を取得して、
LVS_OWNERDATAとORしたものをSetWindowLongで設定するんですよね?
これはListViewを貼り付けたFormのForm_Loadのタイミングでいいんでしょうか?

またWM_NOTIFYをフックするのはLVN_GETDISPINFOのメッセージを
捉えるためだと思いますが、どのように値を設定してやればいいか
解説していただけるとありがたいです。
サイトの紹介でも助かります。
51デフォルトの名無しさん:2005/08/18(木) 00:23:22
>どのように値を設定してやればいいか
Cで組む場合と同じように設定してやればいい。
※ListViewのサブクラス化を忘れないように
52デフォルトの名無しさん:2005/08/18(木) 00:27:44
>>51
あ、そうですね。MSDNのCのサンプルソースを調べてみます。
サブクラス化した中でWM_NOTIFYをキャッチするんですね。
分かりました。ご親切にありがとうございました。
53デフォルトの名無しさん:2005/08/18(木) 06:30:39
>>48
バカか。人に質問するのに無礼すぎ。
54デフォルトの名無しさん:2005/08/18(木) 08:05:18
Declare宣言で使用するDLLが
・exeと同一ディレクトリ
・%windir%\system32
の2つ存在する場合に、どちらを使用するのでしょうか。
また、2つのファイルに日付・製品バージョン等の違いがある場合に、
使用したDLLの情報を取得する手段はありますでしょうか。

よろしくお願いします。
55デフォルトの名無しさん:2005/08/18(木) 09:14:37
>>54
いくらでもある。

以上。
56デフォルトの名無しさん:2005/08/18(木) 09:27:53
>>54
つうか、その手の微妙な仕様の確認は絶対自分で試せよ。
仕様がどうっていうのを知ったところで、試さないでその状態を信じる人は信じられない。
DLLをつくって、ちょこっと変えて試せば10分作業だと思うが。
57デフォルトの名無しさん:2005/08/18(木) 09:28:38
TextBoxやRichTextBoxを透明にする方法ってありますか?
つまりPictureBoxの上に、直接テキストを入力したように見せたいのですが・・
58デフォルトの名無しさん:2005/08/18(木) 09:39:08
>>56
言えてる。
59デフォルトの名無しさん:2005/08/18(木) 09:39:58
>>56
10分で試した結果を報告してください。
60デフォルトの名無しさん:2005/08/18(木) 09:40:28
>>57
その質問に対しては「あります」という回答しかない。

あと「・・」で終わる質問は無礼なのでやめるように。
61デフォルトの名無しさん:2005/08/18(木) 09:51:02
すみません。ちょっと質問させてください。
VB6から、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日目なもので………どなたかご指導をお願いします。
62デフォルトの名無しさん:2005/08/18(木) 10:28:47
>>61
それを基本と侮るんじゃない!
63デフォルトの名無しさん:2005/08/18(木) 11:39:45
とりあえず>>53とか>>55とか>>60がウザイ。
64デフォルトの名無しさん:2005/08/18(木) 11:45:52
>>60
 ↑
こういう役所の万年係長みたいな口の利き方する奴ってどこにでもいるよな( ^Д^)
65デフォルトの名無しさん:2005/08/18(木) 11:49:15
>>63-64
なぜ自演を?
66デフォルトの名無しさん:2005/08/18(木) 11:54:01
自演?
53=55=60=63=64って事?
67デフォルトの名無しさん:2005/08/18(木) 12:33:15
>>54
DLLは
・exeと同一ディレクトリ
・%windir%\system32
・ルートディレクトリ
・パスが通ったディレクトリ

の順に検索して一番最初に見つかったDLLを選択すんの わかった?
MSDNの載ってるよ。
68デフォルトの名無しさん:2005/08/18(木) 12:39:13
>>66
違いますよ。
69デフォルトの名無しさん:2005/08/18(木) 12:39:45
>>67
50点
70デフォルトの名無しさん:2005/08/18(木) 12:52:57
VB6.0からコールしているDLLでメモリリークしていた場合、
DLLを直す、DLLを使わない以外に回避策はありますか?
7170:2005/08/18(木) 12:53:27
一応ギャグ抜きでお願いします。
72デフォルトの名無しさん:2005/08/18(木) 13:18:01
・ばれないことを神様に御祈りする。
・そのままつかっちまう。
73デフォルトの名無しさん:2005/08/18(木) 13:22:04
>>71
>>72は面白くないからギャグではないのだと思うけど、
これは許す?
7470:2005/08/18(木) 13:22:59
>>72
この手の書き込みをいくらでもされてしまうと思ったので>>71
書いたのですが・・・

はぁ、どっと疲れが出ました。他の方はいかがでしょうか。
75デフォルトの名無しさん:2005/08/18(木) 13:28:38
>>70
ヘルパプロセスを起動してそこでDLLを使う
76デフォルトの名無しさん:2005/08/18(木) 13:38:29
>>75
まあ1つのアイディアとしては
77デフォルトの名無しさん:2005/08/18(木) 14:05:10
>>70
・メモリ解放ソフトを常駐させておく。
・定期的にOSをリブートする。
・メモリリークしな様なDLLを自分で作る。
78デフォルトの名無しさん:2005/08/18(木) 14:11:21
メモリリークしなざまなDLLって何だ?
79デフォルトの名無しさん:2005/08/18(木) 16:55:19
PictureBoxにImageのStretchみたいな機能をつけるにはどうしたらいいのでしょうか?
うまいアイディアが浮かばないよ(´・ω・`)
80デフォルトの名無しさん:2005/08/18(木) 17:01:38
>>79
APIでやる、BitBltだっけ?StretchBltだったかそんな奴。
81デフォルトの名無しさん:2005/08/18(木) 17:02:26
Image使えばええやん
82デフォルトの名無しさん:2005/08/18(木) 17:11:14
> ・メモリ解放ソフトを常駐させておく。
無意味。
8379:2005/08/18(木) 17:13:29
>>80
bitbltですか
調べてみます

>>81
pictureboxのlineメソッドを使いたかったんでImageだとダメポ
8479:2005/08/18(木) 17:39:34
解決しますた
結局、resizeイベントが起こったときにもう一度描写する関数を呼び出させて何とかさせますた
( ´ー`)y-~~
85デフォルトの名無しさん:2005/08/18(木) 17:48:35
\1,000 を 1000 に変換する様な
関数があれば教えてください。 お願いします。
86デフォルトの名無しさん:2005/08/18(木) 17:56:53
>>85
CIntとか?
87デフォルトの名無しさん:2005/08/18(木) 18:01:05
CLng("\1,000")

"\1,000" * 1

Dim hoge As Long
hoge ="\1,000"

数値(整数・実数)型に変換、数値型変数に代入、算術演算
どれをやっても1000になる。
これがVBの便利さであり、遅さの原因でもある。
8885:2005/08/18(木) 18:03:23
>>86,87
即レスありがとうございます。
いろいろあるんですね〜。
89デフォルトの名無しさん:2005/08/18(木) 18:38:57
>>82
理由は?
90デフォルトの名無しさん:2005/08/18(木) 18:40:00
>>87
\1,000だと変換できて\10,000だと変換できない方法を
混ぜるなんて意地悪だねぇ。
91デフォルトの名無しさん:2005/08/18(木) 20:25:23
>>89
メモリ解放ソフトは、メモリリークを解決する物じゃない。

あれは単に物理メモリのキャッシュを強制的にスワップファイルに
追い出すことしかしない。
メモリが極端に少ない場合を除いてパフォーマンスの低下につながる。
92デフォルトの名無しさん:2005/08/18(木) 20:33:16
そもそも、逆になんでメモリ解放ソフトが
メモリリークを解決できると思うのか、
その根拠を述べて欲しい物だけどな。

名前に騙されているだけ。
93デフォルトの名無しさん:2005/08/18(木) 21:02:53
グローバルフックでメモリを強制開放するソフトなら作れるぞ
使用後にどうなっても知らんが
94デフォルトの名無しさん:2005/08/18(木) 21:11:16
よーし、それなら俺は、
セクタに直接書き込んでディスクを強制解放するソフトを作ってやるぞ。
使用後にどうなっても知らんがw
95デフォルトの名無しさん:2005/08/18(木) 21:52:09
アホばっかり
96デフォルトの名無しさん:2005/08/18(木) 22:08:14
>>95 お前が一番
97デフォルトの名無しさん:2005/08/18(木) 22:30:53
>>96
何も言ってないのに。
98デフォルトの名無しさん:2005/08/18(木) 22:43:26
リソースファイル内のwavまたはmp3ファイルを、
そのまま複数個同時に再生する方法はないでしょうか。
99デフォルトの名無しさん:2005/08/18(木) 22:53:04
>>91-95
このレベルの低さが2ちゃんなんだよな。なんか安心するよ。
100デフォルトの名無しさん:2005/08/18(木) 22:54:12
>>98
ある。


回答終わり
101デフォルトの名無しさん:2005/08/18(木) 23:06:14
↑ツマンネ( -д-) 、ペッ
102デフォルトの名無しさん:2005/08/19(金) 06:29:47
53=55=60=100
  ↑
このスレに常駐しているアラシ
103デフォルトの名無しさん:2005/08/19(金) 07:00:40
>>102
2つしか合っていない・・・
104デフォルトの名無しさん:2005/08/19(金) 11:20:26
>>55 >>60 >>100 こいつ日常会話でもこんな調子なのかね。
「俺のメガネどこに行ったか知らない?」
「知ってる」みたいな。だったらすごいどころか面白いな。
105デフォルトの名無しさん:2005/08/19(金) 11:26:18
>>104
なに粘着してるの?よそのスレにでも行ってほしんだけど。
106デフォルトの名無しさん:2005/08/19(金) 11:27:38
>>104
>こいつ日常会話でもこんな調子なのかね。
2ちゃんの書き込みから日常を想像できるところがすごすぎる。

>だったらすごいどころか面白いな。
全然面白くないことを面白いと堂々と書き込めてしまうところがすごすぎる。
107デフォルトの名無しさん:2005/08/19(金) 11:28:40
そう言われて行くような人なら荒らしとはよばれない
108デフォルトの名無しさん:2005/08/19(金) 11:37:18
>>107
まぁそれはそうだが。早くやめてほしいよね。
109デフォルトの名無しさん:2005/08/19(金) 14:18:31
>2ちゃんの書き込みから日常を想像できるところがすごすぎる。

本当のボクは違うと言いたいの?( ^Д^)
110デフォルトの名無しさん:2005/08/19(金) 14:24:23
ネット上に出る人格って、その人の本質を純化・先鋭化したものだからね。
本人は日常生活と違うと思ってるかもしれないが、周りは気付いてるよ。そういう奴だって。
111デフォルトの名無しさん:2005/08/19(金) 16:05:15
>>110
誰か同意してくれるといいですね。
得意の自演をされてはいかがですか?
112デフォルトの名無しさん:2005/08/20(土) 01:52:31
formにbuttonがあってbuttonを押すたびにcountが1づつあがって行くみたいなプログラムを作るときに
このcountの値を保持するためにはformのグローバル関数にするしか方法は無いんでしょうか?
113デフォルトの名無しさん:2005/08/20(土) 02:11:22
Static i As Long
114デフォルトの名無しさん:2005/08/20(土) 02:11:45
>>112
formのグローバル関数?
115デフォルトの名無しさん:2005/08/20(土) 14:29:54
>>100
助かりましたm(_ _)m
116デフォルトの名無しさん:2005/08/20(土) 15:53:46
>>101-
あるかどうかだけ聞いてんのに、いろいろべらべらと語りだす奴もキモス&ウザスな罠。
117デフォルトの名無しさん:2005/08/20(土) 16:02:18
答える気がないならスレ覗くなよ・・・
段々過疎って来たし。
118デフォルトの名無しさん:2005/08/20(土) 22:04:14
フォームの大きさを大きくするのはokだけど
ある大きさより小さくするのは認めないってことはできるのかな?
フォームの大きさを変えさせないってのはあったんだけどな〜
119デフォルトの名無しさん:2005/08/20(土) 22:08:49
>>118
最小値より小さくなったら、最小値に戻すだけ。
ただし、ちらちらするのが弱点。
高度なやり方は知らん。
120デフォルトの名無しさん:2005/08/20(土) 22:26:33
121デフォルトの名無しさん:2005/08/20(土) 22:30:09
なにそのジュゲムみたいなファイル名は・・・
122118:2005/08/20(土) 22:34:46
>>119-120
うほっ
素早いレスThanks
さっそくやってみるよ!
123デフォルトの名無しさん:2005/08/21(日) 14:47:09
バイトの配列をバイナリデータとしてファイルに書き出したいんですけど
以下のようだと書き出されたファイルの頭数バイトに余分な00データまで書き込まれてしまうんですけど
なぜでしょうか?どなたかお願いします。

Open FileName For Binary As #1
Put #1, UBound(ByteArray), ByteArray
Close #1
124デフォルトの名無しさん:2005/08/21(日) 14:49:53
>>123
UBoundをMSDNで調べればすぐ分かると思いますよ。
125デフォルトの名無しさん:2005/08/21(日) 15:01:53
>>123
PutをMSDNで調べればすぐ分かると思いますよ。
126デフォルトの名無しさん:2005/08/21(日) 15:11:55
>>124
>>125
ありがとうございました解決しました。
Putの使い方を理解できていませんでした…
127124:2005/08/21(日) 15:36:50
ふ、はずしたか・・・
128デフォルトの名無しさん:2005/08/22(月) 00:08:22
複数行に渡ってソースを書く方法について教えてください。
段々横に長くなってしまったので解決したいです。
129デフォルトの名無しさん:2005/08/22(月) 00:12:36
>>128
Debug.Print _
"あいうえお" & _
"かきくけこ"
130デフォルトの名無しさん:2005/08/22(月) 00:39:50
通常は _ で、
文字列の場合は二つのテキストに分けて & _ と繋げればいいんですね。
どうもありがとうございます。
131デフォルトの名無しさん:2005/08/22(月) 09:59:56
>>90
ん?俺の環境だと"\10,000"に変えて試しても>>85が期待した結果が
得られるみたいだけど。
俺勘違いしてる?
132デフォルトの名無しさん:2005/08/22(月) 11:39:53
>>131
多分ね、そのあたりの挙動って、コンパネの地域設定の指定とOSのバージョンに関わると思う。
依存するような暗黙変換をするならば、その辺りのことって国際化対応に書いてあるかな?
133質問VS.NET:2005/08/22(月) 12:26:54
フォーム(Public Class WebForm1)にラベルがあります。
Public WithEvents Label1 As System.Web.UI.WebControls.Label

別モジュール(Module1)に関数(sub kan1)を作りました。その中で
Dim refForm1 As New プロジェクト名.WebForm1
というインスタンスを作りました。
で、refForm1.Label1.Text = "1"
とやると「オブジェクト参照がオブジェクトインスタンスに設定されていません」
と出ます。refForm1.Label1 ← ここでNothingになります。
なぜですか?

134デフォルトの名無しさん:2005/08/22(月) 12:40:34
>>133
スレ違いだよ。

VB.NET質問スレ (Part12)
http://pc8.2ch.net/test/read.cgi/tech/1121600038/
135133:2005/08/22(月) 12:58:07
失礼しますた。向こうで聞いてきます。
136デフォルトの名無しさん:2005/08/22(月) 14:30:51
ExcelオブジェクトのGetPhoneticメソッドを使って
漢字のフリガナを取得してるのですが、
そのフリガナを元の文字単位で分割するにはどうすれば良いでしょうか?

例えば"質問者の心得"だと"シツモンシャノココロエ"を返しますが
これを「シツ, モン, シャ, ノ, ココロ, エ」と分割したいのです。
1文字ずつGetPhoneticメソッドに掛けると、文として読んだ場合のフリガナが
候補の中に出ない物もあるので、1文字単位で変換して、
文で返したフリガナと一致させる方法は無理でした。

詳しい方、どうかお知恵を貸してください。
137デフォルトの名無しさん:2005/08/22(月) 14:46:27
ListViewに関する質問です
環境はXP Pro SP2/VB6.0 SP6です
MultiSelect(アイテムの複数選択)をTrueにした状態で
アイテムが無い空白部分を始点にドラッグして、点線の枠で囲ってアイテムを囲んでマウスボタンを離すと
枠に囲まれていたアイテムと関係のないフォーカスの当っていたアイテムが選択されてしまいます
これを、ドラッグで囲ったアイテムだけが選択されるようにするには、どうすれば良いのでしょうか?
よろしくお願いします
138137:2005/08/22(月) 15:14:47
あれから調べていたら根本的な原因が別にあることが分かったので質問を変えます
ListViewのアイテムが無い空白部分でクリック/ダブルクリックすると
フォーカスのあるアイテムが選択されたり解除されたりするのですが
空白をダブルクリックされても、フォーカスの当ったアイテムが選択されないようにするには、どうすればよいでしょうか?
よろしくお願いします
139デフォルトの名無しさん:2005/08/22(月) 15:54:10
Thumbs.db を削除したいのだが、誰が方法を教えてくれまいか。
kill ステートメントだと、ファイルがあってもファイルが見つからないって言われてしまうぞ。
おかしいぞ。
140デフォルトの名無しさん:2005/08/22(月) 15:56:49
>>139
Set/GetAttr
141139:2005/08/22(月) 16:02:47
>>140
スマソ
142デフォルトの名無しさん:2005/08/22(月) 21:06:01
香具師
143デフォルトの名無しさん:2005/08/22(月) 21:47:14
>>131-132
関係ないと思うよ。ただの釣りだから。
144デフォルトの名無しさん:2005/08/23(火) 10:18:41
>>138
Common Control 5を使う・・・って言うんじゃだめか。だめだな。
145デフォルトの名無しさん:2005/08/23(火) 13:39:59
VB6.0SP5です

2つのexe、[A.exe]と[B.exe]があって、AからBを起動させます。

・Bが起動したときはAの画面は表示されたまましかし触れず
・Bを閉じたとき、Bで選択した値をAの画面に反映させる

こういう動作を実現したいのですが、何かいい方法はありますでしょうか
(exeをひとつのプロジェクトに纏めることは、都合上できません)


一番簡単なのは、B起動時にAの表示を諦めて非表示にして
値はtmpファイルでも作って受け渡す方法だと思いますが、
これは最終手段にしたいです

検索すると、CreateProcessやSetWindowLongを使った方法などが散見されましたが、
試してみるもいまいち理解がついていかず、まだ正常に動かせていません
良い参考になるページなどありましたら、紹介していただけませんでしょうか

よろしくお願いします
146デフォルトの名無しさん:2005/08/23(火) 13:54:37
>>145
DDE使うのが一番簡単だろ。
具体的な方法は自分で調べろ。
147デフォルトの名無しさん:2005/08/23(火) 14:31:21
>>145
B起動中はA触れず。。。だけなら
"Windows Script Host Object Model"を参照設定して
WshShellクラスのRun()メソッドでできるけど、値の受け渡しはなあ。

BをActiveX EXEにするのがよいと思われ。同期しながら
データのやり取り自由自在。作り方は調べろ。
148デフォルトの名無しさん:2005/08/23(火) 16:17:44
自分のレベルに合わせて作ることも大事だよ。

プロセス間の情報共有は色々あるけど、死に様を残すだけならファイルでよいと思うけどね。

AがBを起動する前に、遺書は削除。
Bは自分が死ぬときに遺書をしたためる。
AはBの終了待機をしていて、死亡を確認したら遺書を見る。
それほどおかしい処理じゃないよ。

終了待機はShellの戻り値を監視する方法のサンプルが死ぬほど落ちてるからそれを参照。
149137:2005/08/23(火) 16:24:47
>>144
バージョン古いのは望みどおりの挙動してたんですね
自分では思いもよらぬ解決法で目からウロコでした
現状、すでにサブクラス化してサブアイテム編集などをつけたりしてコードが満載なので
Common Control 5でも機能を満たせるか、コード書き換えてみないと分からないですけど
もしかすると、うまく行くかもしれないです
結果は後日報告します、ありがとうございました
150145:2005/08/23(火) 17:23:25
>>146 DDE
>>147 ActiveX EXE

DDEを調べていたら、OLEオートメーションという方法も出てきました
これからひととおり調べて試して、一番理想的なやり方を検証しようと思います
Web上にTipsも多そうなので、とても助かります

>>148
それが最終手段でした
今回、こういう機能の開発を初めて手掛けることになったので、
レベルアップも兼ねてやってみたいと思っています

ありがとうございました
151デフォルトの名無しさん:2005/08/23(火) 17:33:42
プログラマー思考的には新しい技術の習得も重要だから勉強はいいと思う。
ただ、その渡す情報の量、重要度などは考えて使う技術を決めたほうが良いよ。

リアルタイム性不要であれば、わざわざプロセス間通信なんて不要には思える。
リスキーな割にはやりたいことは文字を数文字渡すだけってのでは。

あと、DDEは死に行く技術、ActiveXEXEはレジストリ登録が確か必要だったと思う。
その他、メモリーマップドファイルなど、共有メモリでのアクセスや、数値程度だったらSendMessageなどありますよ。
152137:2005/08/23(火) 20:04:14
先ほどCommon Control 5を教えてもらった者ですが
また分からないことがあるので質問させてください
先ほどのクリックで選択されたり解除されたりする問題に関しては
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でグリッドを表示する方法をご教授ください
よろしくお願いします
153デフォルトの名無しさん: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を実行した後は
 ファイルサイズが取得できない。
・何回か実行していると取得できる。
 ただし、その次からまたしばらく取得できず
 そのまま何回か実行していると取得できる(原因不明

やりたい事は、ファイルをアップロードし
アップロードしたファイルのサイズとローカルファイルのサイズを比較して
正常チェックを行いたいのです。

どなたかお力添えの程、よろしくお願いします。
154デフォルトの名無しさん:2005/08/23(火) 22:17:59
なんで無能な奴に限って口調が偉そうなんだろうね。
>>146-147とかw
ここまでアレだと、もう怒りとか呆れよりもある種の微笑ましさを感じるよ。
ああ職場で窓際にされてストレスたまってるんだろうな、とか思ってw

ところで、>>145
>exeをひとつのプロジェクトに纏めることは、都合上できません
これは単一の実行ファイルのからビューAとビューBを表示するという訳にはいかない、
という意味だろうけど、それはいったいどんな都合なんだろう。。
その方が気になる。これなら何もOSの仕組みに依存するような高度な操作は必要ないわけで。

というと、「質問者の目的に疑問を挿むな」という例の馬鹿が湧いてくること必定w
こういう馬鹿が、戦争目的を問わずに鬼畜米英の蛮勇に浮かれたり、
尊師の目的を問わずに地下鉄にサリンを撒いたり、大作様の推挙する
候補に投票したりするんだろう。
155デフォルトの名無しさん:2005/08/23(火) 22:48:12
>>154
ようこそ無能さん
156デフォルトの名無しさん:2005/08/23(火) 22:58:00
なんだかすごいの(>>154)が沸いて出てるな。
157デフォルトの名無しさん:2005/08/24(水) 07:51:00

ツリービューについてふたつほど教えて欲しいことがあるのですが、

(1) 縦スクロールバーのみ表示させる

(2) 横方向に表示しきれなかったアイテムをツールチップで表示しないようにする

について、コンテナ化や別コントロールでの代用ではなく、
ツリービュー単体で出来る方法をご存じの方、教えてください。
158デフォルトの名無しさん:2005/08/24(水) 09:11:52
VB6で作ったアプリのCommandButtonをクリックすると(アクティブになると)
ボタンの内側に破線の枠が表示されますが、これを表示しないようにするにはどうすれば良いのですか?
Tabキーでのコントロール移動には不可欠ですがTabStopはFalseにしてるし、
小さいボタンでコレが表示されると見栄えが悪いので。
159デフォルトの名無しさん:2005/08/24(水) 11:52:29
>>158
コマンドクリックのイベント内で
Command1.Enabled = False
Command1.Enabled = True
を記述してはいかがでしょうか?
ただ、クリックしている最中は破線枠は表示されます。
別にいい方法があるかも。
160158:2005/08/24(水) 12:03:52
>>159
回答ありがとうございます。
しかし、ボタン1をクリックすると破線枠がボタン2に、ボタン2をクリックすると破線枠がボタン1に移動するだけでした。
逆にボタンがひとつの時は意味無しです。Falseで一端枠は消えますがTrueの瞬間に枠が戻ってくるので。

引き続き回答をお待ちしています。
161デフォルトの名無しさん:2005/08/24(水) 12:07:18
上にもういっこボタン重ねて、visibleとenabledでなんとかならない?
162158:2005/08/24(水) 12:22:18
>>161
回答ありがとうございます。
その方法をヒントに、クリックイベントで下層のボタンにSetFocusすれば、
一応クリック後の枠は残らないようになりました。

アクティブなボタンに破線枠を表示しないようにすることは出来ないのかな?
163デフォルトの名無しさん:2005/08/24(水) 13:36:46
>>162
「アクティブなボタンには破線枠を表示する」というのが
Windowsでのルールなので、標準のコントロールでは強制的に
そうなるように作ってあるのです。
ついでに「クリックしたらアクティブになる」というのも
ルールなので。
>>158はToolbarのボタンみたいな、マウスでしか触れないボタンが
ほしいということ?TabStop=FalseだけどTabキーは利かせたい(クリック→Tabで次のボタンに行きたい)のか?
Toolbar風ボタンなら、DelphiにはSpeedButtonてのがあるけど、VBにはないね。
俺は昔、UserControlとDrawFrameControlでシコシコ自作したことがある。
164デフォルトの名無しさん:2005/08/24(水) 15:22:29
>>152
うーん、そうでしょ。だから「だめだな」って逃げておいたんだが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行選択も。うちではできたよ。
165137:2005/08/24(水) 19:53:56
>>164
>こんな風にかいてみ。1行選択も。うちではできたよ。
できました!おかげさまで希望通りの動作になりました
ありがとうございます
躓いてた原因は、スタイル取得のときの wParam、lParamの値で
どちらも LVS_EX_GRIDLINES Or LVS_EX_FULLROWSELECT を指定していたので
結局ゼロが帰ってきておかしなことになってたみたいです

イメージリストもVer5でないと連動して使えないようだったので、
この際、ランタイム減らす意味も込めてTreeViewなども含めてすべてVer5にしました
大量のデータ表示が、僅かですけど軽くなったような気がします
何度も助けていただき、本当にありがとうございました
166デフォルトの名無しさん:2005/08/24(水) 23:46:27
MSDNのVB6用の関数のヘルプってどこですか?
探したのですが、見つからないです・・Orz
167デフォルトの名無しさん:2005/08/24(水) 23:56:55
>>166
CDに入ってますよ。
168デフォルトの名無しさん:2005/08/25(木) 00:07:11
発見しました!!
でも印刷に関する物が見当たらなかったですO..... rz
169デフォルトの名無しさん:2005/08/25(木) 12:34:24
>>168
MSDN ライブラリ Visual Studio 6.0
+Visual Basic ドキュメント
+Visual Basic の使用方法
+プログラミング ガイド
+Visual Basic を使ってできること
+テキストおよびグラフィックの操作
+印刷

これのことかね?
170デフォルトの名無しさん:2005/08/25(木) 14:32:49
>>136
そりゃ無理でしょ。熟語になったら単漢字としての読み方を
しない言葉はたくさんあるし。
たとえば「十八番」を「おはこ」と読ませているときは
どうするかとか、「やし」なんて漢字で書いたら「香具師」
なのに1文字ずつどう対応させるんだ、とか。
つまり「香具師の十八番は百舌鳥の真似」なんてのになると、
(こんな例は極端ですが)熟語、単文節以上には分解
できないわけです。
原理的に無理なので、仕組み自体が搭載されていないと思われ。
171デフォルトの名無しさん:2005/08/25(木) 17:28:31
VBのソースコード(フォームとかは除く)を、
UNIXで使えるソースコード(C++など)に
変換するようなツールは売られてるでしょうか?
172デフォルトの名無しさん:2005/08/25(木) 17:53:41
>>171
中途半端でいいならREALBasicというものがある
VBのソースをWindowsでもMACでもLinuxでも動かせる優れものだぞう


使い物にはならないが。
173171:2005/08/25(木) 18:10:33
>>172
ありがとうございます。
ぐぐったら出てきましたので試してみます。

174153:2005/08/25(木) 19:03:53
解決しました。
いた汚し失礼><
175デフォルトの名無しさん:2005/08/26(金) 00:37:16
VBについてないツール(SPYとかDDESPYとか)使いたいときは
どうしたらいいですか?
176デフォルトの名無しさん:2005/08/26(金) 01:08:07
>>175
1.Googleで代替のツールを探してくる
2.ヨドバシカメラでVisual Studioを眺めていると紳士が現れて買ってくれる
3.どうにもならない。現実は非常である
177デフォルトの名無しさん:2005/08/26(金) 02:48:25
>>175
VC買えばいいじゃん。
178デフォルトの名無しさん:2005/08/26(金) 05:49:29
>>175
フリーのSPYツール使えばいいじゃん。
179デフォルトの名無しさん:2005/08/26(金) 09:19:59
"1+2*3"という文字列を計算して7が返ってくるような
関数のサンプルはありませんか?
180デフォルトの名無しさん:2005/08/26(金) 09:54:21
>>179
宿題は7月中に終わらせておけよ。
それに宿題は宿題スレへ。
181デフォルトの名無しさん:2005/08/26(金) 15:28:02
text1.enabled = trueにしたときに
色がグレーになるのだが、
他の色にした場合どうすればいい?
182デフォルトの名無しさん:2005/08/26(金) 15:28:45
>>181です
trueじゃなくてfalseだ・・・
間違えた
183デフォルトの名無しさん:2005/08/26(金) 15:44:59
>>181
フレームにテキストボックス置いてフレームのEnabled=False
184デフォルトの名無しさん:2005/08/26(金) 16:40:29
SetSysColors APIをCOLOR_GRAYTEXTで。
ってことを言いたいんじゃないんだよな。言ってみただけだよ。
185デフォルトの名無しさん:2005/08/26(金) 18:10:35
ddespyと同等の機能のあるフリーソフト教えてください。
186デフォルトの名無しさん:2005/08/26(金) 18:17:38
>>180
宿題スレってどこ?
187179:2005/08/26(金) 18:24:16
さすがはVBスレ
わかる人がいないとは
188デフォルトの名無しさん:2005/08/26(金) 18:51:04
>179
仕方ないなぁ。今回だけだよ?

Public Function GetAnswer() As Long
  GetAnswer = 1 + 2 * 3
End Function
189デフォルトの名無しさん:2005/08/26(金) 19:47:50
文字列式からの整数の四則演算なんて、
厨房が練習で作るレベルの内容だろ。
サンプルなんて必要になるレベルじゃない。
190179:2005/08/26(金) 19:56:45
>>189
じゃあ、教えてくれよ
191デフォルトの名無しさん:2005/08/26(金) 20:00:00
>>190
自分でやれ。これはお前のためだ。
192デフォルトの名無しさん:2005/08/26(金) 20:00:03
RPN
193179:2005/08/26(金) 20:02:28
逆ポーランドとかいうのが必要なとこまではわかったんだけど・・・
194デフォルトの名無しさん:2005/08/26(金) 20:09:26
>>193
別に必要ではない
195179:2005/08/26(金) 20:13:02
わかりやすそうなサイトがありました。
http://www.ne.jp/asahi/nagoya/ahomaro/builder/cpb-022.html
196GetAnswer("1+2*3"):2005/08/26(金) 20:20:00
Function GetAnswer(ByVal strQuestion As String) As Long
 Dim 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とかで数値に直してから演算した方がいいんですかね?
+以外は数字同士でも勝手に数値として演算してくれるみたいなんですが
197デフォルトの名無しさん:2005/08/26(金) 20:33:50
Dim sc
Set sc = CreateObject("ScriptControl")
sc.Language = "VBScript"
MsgBox sc.Eval("1 + 2 * 3")
198デフォルトの名無しさん:2005/08/26(金) 22:25:18
すいません。前スレでも質問したのですが、

ピクチャーボックス上にテキストボックス・リッチテキストボックスを置いて、
文字だけを表示する方法が分かりません。

前スレでは、「ある」とだけお答えいただいたので、色々試したのですが
上手くいきません(ToT

どのような方法があるのでしょうか?
199デフォルトの名無しさん:2005/08/26(金) 22:49:33
>>198
pictureboxに直接じゃだめなの?
200デフォルトの名無しさん:2005/08/26(金) 23:07:09
>>198
それかラベルコントロール
201デフォルトの名無しさん:2005/08/27(土) 00:17:13
>>199->>200

返事、ありがとうございます。
WORDのシェィプのテキストボックスみたいなかんじで
ある程度、簡単な編集をさせたいと思っていたので、
TextBoxやRichTextBoxを考えていたのですが、ラベルも検討してみます。
202デフォルトの名無しさん:2005/08/27(土) 23:31:34
>>196
>Clngとかで数値に直してから演算した方がいいんですかね?
適切な型に変換して演算するほうがお行儀は良いと思う。

ざっくり見ただけだが、考え方はあってると思う。
でも、"(1+2)*3"とか対応していないよね?
あとスペースで置き換えてるみたいだけど、
初めからスペースが混じってたらどうなる?
たぶん、実行時エラーかなんか出るようなきがする。
実は大丈夫なのかな。そうだったらごめん。
203デフォルトの名無しさん:2005/08/28(日) 14:48:41
(´-`).。oO( 179の何処に( )があるんだろう… )
(´-`).。oO( 179の何処にスペースがあるんだろう… )
204デフォルトの名無しさん:2005/08/28(日) 16:45:48
>>203
アホ?
205デフォルトの名無しさん:2005/08/28(日) 18:12:56
歩き方教えるのはいいとしても、行き先指示するのは余計なお世話なキガス。
機能不足な箇所や実装は自分でなんとかするでしょ。
206デフォルトの名無しさん:2005/08/28(日) 18:40:50
>>205
死ねば?って普通に思った。
207デフォルトの名無しさん:2005/08/28(日) 21:11:17
まあ別にいいけど。
目標が不透明なまま周りがあーだこーだ騒いでも、あんたら何話してるの?ってなるだけだと思ったんだが。
208デフォルトの名無しさん:2005/08/28(日) 21:39:48
>>207
別にいいなら死ねば?
209デフォルトの名無しさん:2005/08/28(日) 21:40:39
質問者の知りたかったことは解決しているのだから、別に
それをネタにして話が広がって何の問題もないと思います
けど。
210デフォルトの名無しさん:2005/08/29(月) 01:50:29
frameの上にtextをコントロール配列でたくさん配置した後に
frameごと別の場所にコピペしたらコントロール配列の並び方がバラバラ・・・
せっかく配列が1234...って綺麗に上から並んでいたのにコピペしたら下からコントロール配列ができちゃうよ
手で直せばいいんだけど、めんどくさい('A`)
何とかならないんでしょうか?
211デフォルトの名無しさん:2005/08/29(月) 02:05:22
アドインでそういうのあったような気がするけど
VB6のデフォルトの機能じゃどうしようもないでしょ
212デフォルトの名無しさん:2005/08/29(月) 07:49:50
frmをメモ帳で開いてコピペで修正する手もありかな。
213デフォルトの名無しさん:2005/08/29(月) 11:46:32
>>211-212
ありがと
どうしようもないのね・・・(´・ω・`)ショボーン
メモ帳見てみたけどこれもめんどくさそうだヽ(`Д´)ノウワァァァン
214デフォルトの名無しさん:2005/08/29(月) 14:44:24
変数を演算子として利用することって方法ってありますか?
215デフォルトの名無しさん:2005/08/29(月) 14:54:59

質問は日本語で
216デフォルトの名無しさん:2005/08/29(月) 14:57:04
変数を演算子として利用する方法ってありますか?
217デフォルトの名無しさん:2005/08/29(月) 15:08:17
b = a plus c
ってことかな?
218216:2005/08/29(月) 15:10:21
>>217
はい、そうです。
219デフォルトの名無しさん:2005/08/29(月) 15:14:05
それはできないねー
220デフォルトの名無しさん:2005/08/29(月) 15:25:33
orz
221デフォルトの名無しさん:2005/08/29(月) 16:20:40
テキストボックスが複数あるフォームで、
それぞれに対する各イベント(GotFocusやChange、KeyDown等)の処理の
記述内容がほぼ重複する場合は、テキストボックスを配列化するのが一般的なんでしょうか?
(例え、各テキストボックスに入力されるテキストの種類がコード・名前など様々だとしても)

コーディングルールみたいな、暗黙の規定みたいなものってあります?
222デフォルトの名無しさん:2005/08/29(月) 16:27:11
>>221
.netならテキストボックスを継承してコンポーネントが
カンタンに作れるんだけどねー
223デフォルトの名無しさん:2005/08/29(月) 17:04:26
>>221
配列化しないならこんなのは?
・クラスモジュールを1個用意する。
・Private WithEvents でTextBox型変数を作る。
・その変数へアクセスするプロパティ プロシージャを作る。
・このクラスでイベントを拾えるようになるから、イベントプロシージャに何か書く。
  たとえばGotFocus()にSelLengthを使った全選択処理を書く。
・Form_Loadでこのクラスのインスタンスをテキストボックスの数だけ作って、それぞれテキストボックスを割り当てる。
・割り当てられたテキストボックスは、何も書かなくても全選択になる。
・何か追加の情報が必要なら、クラスのプロパティを増やす。
224221:2005/08/29(月) 17:28:04
Class使ったことなくて、全然わかりませんorz
精進します・・・
225デフォルトの名無しさん:2005/08/30(火) 07:54:55
226221:2005/08/30(火) 14:59:07
>>225
ありがとうです
なんとかクラス作って動かすことができました

なんか全然理解度足りないけど、後学のためにもっと使ってみようと思います
227デフォルトの名無しさん:2005/08/30(火) 22:10:51
質問です。
VBで作ったプログラムのなかの変数の値を
ブラウザのフォームに送りたいのですが、
どのようにしたら可能なのでしょうか?

例としては、VBで作ったソフトにテキストを入力すると、
2chの書き込みフォームの中にそのテキストが入力されるとか、
検索ワードをいれてプログラムを実行したら、
googleの検索ワードを入力するフォームに、
その言葉が入力された状態になるというように、
VBアプリからブラウザに値を渡したいのです。
228デフォルトの名無しさん:2005/08/31(水) 00:28:20
INETコントロールでFTP通信をされたことがある方に質問があります。
現在、INETコントロールを使用してFTPによりサーバーからファイル
を取得するプログラムを作成しています。
当初開発していたPCで正常にファイルが取得できるのを確認後、実運用する他の
PCにて動作確認をとったところ、Executeメソッドの実行時にResponseCode=12
163(ネットワークから切断されています。)といったエラーが発生していまし
た。
いろいろと試行したところ、さっきまでエクスプローのアドレスバーに"ftp:/
/xxx.xxx.xxx.xxx/"と入力すると、サーバーの
フォルダの内容が見えていたのが、見えないのに気がつき、入力内容を消した
後に再度"ftp://xxx.xxx.xxx.xxx/"と入力したところフォルダの内容が見える
ようになりました。
この状態でプログラムをランさせると、今度はエラーは発生せずにに正常動作
しました。
VBというよりネットワークにつての質問になるかもしれませんが、この現象について
説明できる方いらっしゃいましたら教えて下さい。よろしくお願いします。
開発環境はWinXP(SP2)+VB6(SP5)です。
229227:2005/08/31(水) 00:56:53
すいません。自己解決しました。
230デフォルトの名無しさん:2005/08/31(水) 02:03:21
>>227
自己解決したっていう報告だけじゃなくて、
どういう方法で解決したのか、情報提供もすると喜ばれるよ。
231デフォルトの名無しさん:2005/08/31(水) 07:11:26
>>230
別に喜ばせたくもないです。
232デフォルトの名無しさん:2005/08/31(水) 08:53:49
上の>>221です、もうひとつお願いします

テキストボックス4つ
その他コントロールいくつか

こんなフォームがあります
テキストボックスは、4つでひとつのコードとして扱います
(01020304というコードを、[01][02][03][04]というように入力する、部分空白もあり得る)

コードを入力して、他のコントロールにフォーカスが移ったらコードチェックをします
しかし、4つのテキストボックスのLostFocusイベントでそれをやると、
テキストボックスからテキストボックスにフォーカスが移ったときにも、
いちいちコードチェックが動いてしまいます
あくまで、4つのテキストボックスを入力し終わった時点で、コードチェックをしたいんです

他のコントロールのGotFocusで、あるいは上で教えていただいたClassで、という以外に、
何か良い方法はないものでしょうか
233デフォルトの名無しさん:2005/08/31(水) 08:56:00
問題ねえだろ
234デフォルトの名無しさん:2005/08/31(水) 09:05:31
>>232
普通にやればいいんでないかい?
235デフォルトの名無しさん:2005/08/31(水) 09:13:14
>228
気のせいか同じ質問が・・マルチポスト
一応はっときますね
ttp://www7.big.or.jp/~pinball/discus/vb/59468.html
236232:2005/08/31(水) 09:17:27
どういうやり方が普通なんでしょか・・・(´・ω:;.:...
237デフォルトの名無しさん:2005/08/31(水) 09:38:24
>>232
ユーザーコントロール作ってExitFocusとかValidateとか

238232:2005/08/31(水) 10:54:37
>>237
はじめて作ってみました
こんなことができるんですね
ちょっと勉強してみます
ありがとう〜
239デフォルトの名無しさん:2005/08/31(水) 11:30:55
文字列を数値データに変換って出来ませんか?
(例)AAA111とかを数値に
240デフォルトの名無しさん:2005/08/31(水) 11:35:59
>>239
その文字をどういう数値にしたいの?

16進数の「AAA111」を10進数に直せばいいの?
それとも「111」だけを取り出したいの?

後者の場合でAAA111BBB222のときは
「111」「222」「111222」のどれを返せばいいの?

数字を含む文字列から数値を返すのはわけないが
条件はきちんと指定してくれないと何も教えられない。
241デフォルトの名無しさん:2005/08/31(水) 12:05:03
いや、きっと連想配列を実装したいんだろう。
それなら素直にCollectionを使えと。
242デフォルトの名無しさん:2005/08/31(水) 14:46:42
VB6.0でOracleのOO4Oを使用しています。
存在しないフィールドを指定したかどうかチェックする方法は無いでしょうか。
243デフォルトの名無しさん:2005/08/31(水) 15:03:24

For i = 0 to rs.fields.count - 1
exl.worksheets(1).cells(k, i + 1).value = rs(i).name
Next
244デフォルトの名無しさん:2005/08/31(水) 19:58:29
>>242
 Oracleのエラーコード拾ってくるのは?

 
245デフォルトの名無しさん:2005/08/31(水) 22:04:35
>>235
マルチポストが迷惑な理由と全く同じ理由でお前の書き込みも迷惑。
まぁ俺のもそうだが。
246デフォルトの名無しさん:2005/09/01(木) 01:45:04
ある計算式 (120*(A-30)/5)+15 をテキストファイルから読み込んで
Aを代入した結果を求めたいのですが、読み込んだ計算式を簡単に
解析する方法とかないでしょうか?
247デフォルトの名無しさん:2005/09/01(木) 01:51:38

これ、どっかの中学校の宿題?

いい加減飽きたよ。
248??:2005/09/01(木) 02:32:10
>>227
で、どうやったの?
聞きたい
俺も、その手のアプリを作りたいと思っています。
249デフォルトの名無しさん:2005/09/01(木) 04:05:10
簡単じゃん
これくらい自分で作れないならおとなしくフリーの使ってろ
250248:2005/09/01(木) 09:30:54
>>249

簡単でも、やり方分からないから聞いてんだよ
251デフォルトの名無しさん:2005/09/01(木) 09:40:52
>>250
がんばれ
252デフォルトの名無しさん:2005/09/01(木) 10:29:44
>>250
おちつけ、つられるなw
とりあえずヒントを出そう
http://www.ken3.org/vba/backno/vba156.html
これで起動中のIEが取れるよ
あとはウォッチで眺めてみれば分かるっしょ
それと下の2つを参照設定に入れとくと、結構幸せになれる気がするな
Microsoft Internet Controls
Microsoft HTML Object Library
ただ、この方法には制限があって、フレームを使ったページで
フレーム内のドメインがトップフレームと違う場合は、
フレーム内のドキュメントには一切アクセスできないよ
Google検索だけなら、単純にURL変数でいいと思うけどね
253デフォルトの名無しさん:2005/09/01(木) 10:41:05
>>246
逆ボーランドに変換してから計算する
変換時、”(”は無条件で積み上げて、”)”が来たら”(”まで追い出して( )は相殺
254デフォルトの名無しさん:2005/09/01(木) 11:04:12
ScriptControl使えば3行で終わるのに。
255デフォルトの名無しさん:2005/09/01(木) 11:11:23
>>254
おまえ、バカだろ。
256デフォルトの名無しさん:2005/09/01(木) 11:13:01
>>253
ihpleD とか?

>>246
Microsoft Script Controlを参照すればEvalが使えるよ。
257デフォルトの名無しさん:2005/09/01(木) 11:15:12
>>255
なんで?
258248:2005/09/01(木) 11:44:19
>>252 ありがとうございます
とても参考になりました。

しかし・・・
分からない点が出てきました。
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
と指定すると当然エラーが出ます。
どのようにすればコマンドボタンを自動で押せるのでしょうか?
すいませんがご教授お願いいたします。
259デフォルトの名無しさん:2005/09/01(木) 11:48:51
VBでエクセルのシートが存在するかどうかチェックする方法ってないですか?
無かったらメッセージを出したいです。
260デフォルトの名無しさん:2005/09/01(木) 12:00:32
>>258
名前が.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を見たほうがいいかもしれんよと
261248:2005/09/01(木) 12:08:40
>>260 ありがとうございます。
コンパイルエラーは出なくなりました。
Set pHoge = objIE.document.getElementsByName(".save")
をどのように使用して、コマンドボタンをクリックするのでしょうか?
pHogeには[object]が返ってきています。
質問ばかりで申し訳ございません。
262デフォルトの名無しさん:2005/09/01(木) 12:16:25
もうほとんど「教えてください」じゃなくて「おまえら俺のためにコード書け」って感じだな
263デフォルトの名無しさん:2005/09/01(木) 12:26:11
>>261
さっき言ったようにキチンと参照設定して
Dim pHoge As MSHTML.HTMLInputButtonElement
と宣言した変数にぶち込んでみろ
インテリセンスが効くからアホでも分かる
264デフォルトの名無しさん:2005/09/01(木) 20:21:09
>>262
あれ?気に障った?コード書いてみ?
265デフォルトの名無しさん:2005/09/01(木) 21:20:46
>>259
ある名前のワークシートがワークブックの中にあるかどうか
調べたいってことか?
じゃあ For か For Each でWorkBook.WorkSheetsを順番に
調べるか、WorkSheets("シートの名前")がエラーになるかどうか
調べる。

ファイルの話だったらDir$とかいくらでもあるべ。
266デフォルトの名無しさん:2005/09/01(木) 23:39:20
267デフォルトの名無しさん:2005/09/02(金) 10:17:09
初めまして、VB初心者ですが質問させてください。
フォントダイアログ?のようなものを自力で作らなければならなくなったのですが、
現在選択されているフォントで有効なサイズを全て取得するには
どの様にすればよろしいでしょうか?

現在の文字サイズは取得できるのですが、わかりませんでした。
教えてください。
268デフォルトの名無しさん:2005/09/02(金) 19:32:34
宿題なら自分でやってください
269デフォルトの名無しさん:2005/09/03(土) 13:45:37
だけどたしかにどうやるんだ?
フォントサイズのコンボボックスの中身は選択したフォントに
よって変わるということは、なにか判断する基準があるんだよな。
たとえ、特定の名前に対してハードコーディングしているんだとしても。
だいたいのTrueTypeやOpenTypeは同じ候補が出てくるけど、
たとえばFixedSYSは14だけ、Courierは10,12,15だけとか、
ビットマップフォントは候補の数が少ないようだ。

270デフォルトの名無しさん:2005/09/03(土) 13:52:34
秀○なんかではプロパティで文字の設定ができるから
方法はあるんでしょうけどね。
271デフォルトの名無しさん:2005/09/03(土) 16:51:29
Open "c:\damepo.txt" For Output As #1
Write #1, "damepo"
Close #1
これを行うとtxtに
"damepo"のように""に囲まれたものが出力されてしまいます
""をなくす方法ってないんでしょうか?
272デフォルトの名無しさん:2005/09/03(土) 17:27:14
>>271
Write以外を使えば?
273デフォルトの名無しさん:2005/09/03(土) 17:47:36
>>271
printじゃ駄目なのか?
274271:2005/09/03(土) 18:09:06
>>272-273
printで普通に大丈夫でした・・・
THX
275デフォルトの名無しさん:2005/09/04(日) 11:14:39
MSCOMMがきちんと受信してくれません。
何かいい方法は無いでしょうか?
 
ロジック
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です。
276275:2005/09/04(日) 11:15:55
また、受信テスト用に、送信するプログラムもVBで作成しています。
(MSComm1のパラメータoutBufferSize:1024、Inputlen:0)、
(MSComm1のパラメータoutBufferSize:1024、Inputlen:1)
ともに試しましたが、うまくいきませんでした。
Settingsは送受信ともに、19200,n,8,1です。

ネットを調べて、OnComm()時に、
MSComm1.RThreshold = 0
を実行し、終了したら、
MSComm1.RThreshold = 1
などをしたのですが駄目でした。
277デフォルトの名無しさん:2005/09/04(日) 15:43:00
>>275
>MSCOMMがきちんと受信してくれません。
それは君の判断でしょ。起こっている何らかの事実を観察して、
「君自身が」そのように判断したわけだ。

人に質問してるんだから、「君の判断」じゃなく、
君をそのように判断せしめた「事実」を端的に書かなきゃ。

なんで読む人間の立場にたって文章かけないの?
それじゃ「サポセン」に出てくるアホなPCユーザーと一緒だよ。

動きません、どうしてでしょう?
―― そんなこと知るかよボケ
278275: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にしたのですが、
結果は同じでオーバーフローしました。
279デフォルトの名無しさん:2005/09/04(日) 16:16:12
>>277>>278にはレスしない(できない)と予想。
280275:2005/09/04(日) 16:21:34
>>279
>>277さんがこれからレスをくれなかったとしても、>>277さんのレスに感謝します。
私の書き込みに不備があったのも事実ですし。
今回の書き込みにもあるかもしれませんが、
どうぞ、よろしくお願いします。
281デフォルトの名無しさん:2005/09/04(日) 17:38:10
きもいからどっか行ってくれる?
>>275>>277
282デフォルトの名無しさん:2005/09/04(日) 18:24:31
>>278
それだけの情報じゃ言えることは限られていると思う。
送信側、あるいは受信処理をしているPCのハードウェアに問題がないなら、
OnCommイベントの処理がなにか間違っているのだろう、としかいえない。

OnCommの処理を全部晒すわけにはいかないんですか?
それが一番話が早いと思いますが。

とりあえず現段階で他にいえることは、

● MSComm1.InBufferCount = 0みたいな「おまじない」は不要。

● Inputlen = 1はナンセンスだと思う。

● 特に理由がないなら、OnCommで受信バッファを読むのではなく、タイマを使って
バッファをポーリングするようにした方が安全かつ効率的。(当然RThreshold = 0)

● 4823バイト、9534バイトといった数字には再現性はあるの?

● 受信バッファの文字列の長さが常に1、なんて前提でコードかいてませんか?

● 送信側で2バイト文字を送信しているとか、InputModeがバイナリモードになっている
なんてオチはないですよね?
283275:2005/09/04(日) 18:42:32
>>282
レスありがとうございます。
現在、晒す用に、プログラムの無駄なコメントを編集中です。
 
>● 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がバイナリモードになっている
>なんてオチはないですよね?
 調べましたが無いです。
284275:2005/09/04(日) 18:54:32
Private Sub MSComm1_OnComm()
On 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
285275:2005/09/04(日) 18:55:21
Select Case MSComm1.CommEvent
Case 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つめの項目のシリアルナンバーチェック
  通常の処理なので省きます。
  〜

286275:2005/09/04(日) 18:56:31
If strMoji = vbCr Or _
strMoji = 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
287デフォルトの名無しさん:2005/09/04(日) 18:57:13
なんでタチの悪い回答者しかいないの?
いつものこと?
288275:2005/09/04(日) 19:00:25
処理の概要は、CSV形式で、データを受信し、ワーク文字列に溜め込ます。
受信したデータに、vbCrまたは、vbLfが出てきた場合は、
溜め込んだ、ワーク文字列領域を、配列にセットし、
その配列を使用してDBに出力する処理です。
289デフォルトの名無しさん:2005/09/04(日) 19:15:43
この手のスレって、趣味の自主サポセンみたいなもんなんじゃないの?
290275:2005/09/04(日) 19:51:46
伝送速度 9600 InBufferSize  1024 timer1.Interval 1  4824文字
伝送速度 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文字からきちんと取得してくれないので、
コメントにしました。
再現性が無いため、何かメモリ的な問題なのかとも思うのですが。
291デフォルトの名無しさん:2005/09/04(日) 20:08:42
>>275
ネタじゃなくて本気で困ってるんですよねえ?
だったらMsCommのせいにする前に、一度冒頭のOn Error GoTo を取って
実行してみたらどう?

よほどの馬鹿でなければそれで原因がわかると思うよ。
逆にいえば、それでわからなければプログラミングの適性なさ過ぎると思うわ、悪いけど。

余計なお世話かもしれないけど、物事ちゃんと理解してプログラム書いたほうが良いよ。
理解してないでしょ?
MsCommの各プロパティとかイベントの意味を。
292デフォルトの名無しさん:2005/09/04(日) 20:14:30
実行したときにform1じゃなくて、
form2をまず表字させるにはどうすればいい?
293275:2005/09/04(日) 20:25:43
>>291
On Error GoTo
のとび先で、メッセージボックスを表示しており、
メッセージボックスが表示されないため、
特に、On Error GoToをコメントにしてテストはしてませんでした。
コメントにしましたが、
テキストボックスへの表示が途中で止まることに変化は無く、
エラーメッセージ等も表示されません。
もう少し自力で調べてみようと思います。
294デフォルトの名無しさん:2005/09/04(日) 21:02:32
>>292
プロジェクト プロパティにスタートアップの設定がある。
295デフォルトの名無しさん:2005/09/05(月) 11:26:53
既に書かれてるが、シリアル通信をそもそも知らず、しかもラップされたコントロールも理解せずじゃ、何作るんだ?状態だろ。

まあ、シリアルの場合可能ならばモニタリングツールをPCと装置の間に挟んで見るのが一番だけどね。
とりあえず、プログラムが悪いのか他が悪いのかは切り分けがつく。

で、プログラムが怪しいなら、シリアルコマンドエクスプローラーみたいなツールで、電文見るしかないワナ。
296デフォルトの名無しさん:2005/09/05(月) 11:36:12
>>295
お前に何の関係があるのかが全く読み取れん。
297275:2005/09/05(月) 11:51:07
>>295
どもどもです。
なんか、口が悪いながらも、
適切なアドバイスありがとうございます。
このスレは、そんな人が多くてなかなかいいですね。
 
とりあえず、送信側が悪いのか、受信側が悪いのか
送信したデータと、受信したデータを
テキストファイルに出力して確認してみようと
思います。
298デフォルトの名無しさん:2005/09/05(月) 12:19:25
>>297
いや、シリアル通信の場合、そのログを通信の何処の部分で誰が採取するかが問題であって。
自分のバグ疑惑プログラムじゃない、別のツールなどで採取しないと客観性がないよ。
299275:2005/09/05(月) 12:30:56
>>298
なるほど。
ツールをVECTORで探してみようと思います。
ありがとうございます。
300デフォルトの名無しさん:2005/09/05(月) 12:45:26
>>297
一気に目的のプログラムを仕上げたい気持ちはよくわかるが(俺もそうだから)、
モノを作るときの定石として、とりあえず簡単なコードを書いて
MSCommに対する理解を確認した方がいいよ。
少なくとも君の場合、一気に目的のものを仕上げるだけのスキルはないと思う。
そんなことやってると遠からずモティベーション無くすよ。

使えるPCが複数あるなら、とりあえずVBtermをもっと単純にしたようなプログラムを
書いて2台のPCに入れて、お互いに送受信がうまくいくか確認することから始めたら?
301デフォルトの名無しさん:2005/09/05(月) 12:57:51
>>300
お前に何の関係があるの?
302デフォルトの名無しさん:2005/09/05(月) 13:01:03
この滑稽な一連の自演大会はいつ終わりますか?
303275:2005/09/05(月) 13:03:10
>>300
確かにそうですね。ちょっと疲れてきましたorz
PCは2台あるので、一方のPCで送信して、
もう一方のPCで受信したのをテキストボックスに表示するだけのところから
試してみようと思います。
 
ネットからサンプルプログラムをダウンロードして
実行するのですが、データが大量になると、
テキスト表示すらもうまくいかないので。
ありがとうございます。
304300:2005/09/05(月) 13:09:17
言葉遣いが悪すぎたので再投稿します。申し訳ありませんでした。

>>297
一気に目的のプログラムを仕上げたい気持ちはよく分かりますが(私もそうですから)、
モノを作るときの定石として、とりあえず簡単なコードを書いて
MSCommに対する理解を確認してみてはいかがでしょうか。
私は一気に目的のものを仕上げるだけのスキルがないのに
そんなことやったために、モチベーションを無くしてしまいました。

使えるPCが複数あるのでしたら、とりあえずVBtermをもっと単純にしたようなプログラムを
書いて2台のPCに入れて、お互いに送受信がうまくいくか確認することから始められては
いかがでしょうか。もっとも私のスキルでは試すことすらできませんが・・・
305デフォルトの名無しさん:2005/09/05(月) 13:14:24
>>304
ほぼ同じ(一部違うけどw)内容でもこれなら何の不快感も
ないのにな。>>300みたいにわざわざ不快感を織り交ぜる
理由ってなんかあるのかね。


会社での鬱憤を晴らすとかいうありきたりの理由以外で。
306デフォルトの名無しさん:2005/09/05(月) 13:54:24
でも>>300ってそんなにきつい書き込みじゃないような・・・。
ホビーPGさんならゴメンナサイだけど、仕事でやってる人に対してなら>>300程度は言っても普通に思える。
それで飯食ってるんだから、少しは勉強しろ!って。
307275:2005/09/05(月) 13:55:34
全然悪意は感じませんでしたよ。
私が鈍いだけかも。
現在モニタリングソフトを落としてます。
308デフォルトの名無しさん:2005/09/05(月) 14:08:28
>>307
落してるとのことですが、お勧めはシリアルコマンドエクスプローラーかな?
まあ、気合があればWindows添付のハイパーターミナルでもいけますけど。

シリアルに限らず、通信アプリの場合は原因の切り分けの為に、その通信の仕様などの知識は必須ですよ。
論理的に考えて何処が怪しいっていう思考が出来ないじゃないですか、知識がないと。(まあ通信に限りませんが)
309275:2005/09/05(月) 14:28:03
>>308
ありがとうございます。
シリアルコマンドエクスプローラーを使用しようと思います。
 
>シリアルに限らず、通信アプリの場合は原因の切り分けの為に、
>その通信の仕様などの知識は必須ですよ。
 
知識は無いのですが、とりあえずできることだけはやろうと思います
(現状をできるだけ把握する等)
現状を把握しないことには、
知識のある人に質問することもできないので。
ありがとうございました。
310デフォルトの名無しさん:2005/09/05(月) 15:45:07
VB6で、refreshかけるとwindows上のプロセスが増え続けます。
原因は何でしょうか。
ちなみに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
311デフォルトの名無しさん:2005/09/05(月) 15:49:26
>>310
Adodc1は何?
312デフォルトの名無しさん:2005/09/05(月) 16:09:07
>>310
やってみたけど俺のところでは増えなかった。
DB(ODBCドライバ)が違うせいかな。

- 環境 -
w2ksp4
vb6sp6
DB:SQL Server 2000 Personal Edition

余談だけど、PostgreSQLを使ってる理由は何?
「無料だから」位の理由ならMSDE2000を使った方がいいと思うよ。
313デフォルトの名無しさん:2005/09/05(月) 16:10:06
>>311p
それを聞いてあげないと出てこないってのが痛いね。
何のプロセスが増えるかも不明だし。
314デフォルトの名無しさん:2005/09/05(月) 16:10:49
>>312
>「無料だから」位の理由ならMSDE2000を使った方がいいと思うよ。
MSDE2000はいくらですか?
315デフォルトの名無しさん:2005/09/05(月) 16:14:55
全くの推測で書くが・・・。
ぽすぐれってLinuxベースだから、スレッドじゃなく子プロセスで多分処理しますよね。
だから、接続なりしてそれをきちんと片さないでさらに接続した場合、そのプロセスは増え続けると思う。
(まあスレッドが見えずに増えるのも実害上は同じだがw)
316310:2005/09/05(月) 16:31:03
>>311
何?とはどういうことでしょう・・・orz
Datagridに表示させようかと思ってます。
ということでしょうか。

>>312
postgreSQL使ってる理由は無料というのもあるし
せっかくWindowsで使えるようになったから
そして、まわりにPostgreSQLの本が何冊かあったから
です。

増えるプロセスは
postgres.exe です。

ちなみに、練習中に気づいて気になっているだけで
実際の開発を行っているわけではありません。
ただ、原因がはっきりしないと気分が悪い、ということです。
317デフォルトの名無しさん:2005/09/05(月) 16:39:05
糞レス読まされるこっちのほうが気分悪いわ!
318デフォルトの名無しさん:2005/09/05(月) 17:23:46
見なきゃいいじゃん
319デフォルトの名無しさん:2005/09/05(月) 20:00:59
>>311
>「無料だから」位の理由ならMSDE2000を使った方がいいと思うよ。

なぜですか?
320デフォルトの名無しさん:2005/09/05(月) 22:42:20
>>316
ポスグレスレで聞いたほうがいいよ
321310:2005/09/05(月) 22:59:54
>>320
ということはpostgreSQLのせいというか仕様と言うかなんと言うか
プログラム自体に問題はなさそうですか。
>>312さんのレス的にもやっぱそうなんでしょうか。
あっちのスレでも聞いてみます。
ありがとうございました。
322デフォルトの名無しさん:2005/09/06(火) 07:15:58
>>321
別にそれでいいならいいけどな。
読解力ないと大変やのう。
323310:2005/09/06(火) 08:08:31
え。
>接続なりしてそれをきちんと片さないでさらに接続した場合、そのプロセスは増え続けると思う。
ていうところでしょうか?

できればわかりやすく教えていただければその方がよいのですが。
324デフォルトの名無しさん:2005/09/06(火) 08:10:25

2chの特定スレのレス数を取得したいのですがどうしたら良いですか?
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の仕様に関する部分も大きいとは思いますが
お詳しい方、何とぞ回答をお願いします。
325デフォルトの名無しさん:2005/09/06(火) 09:11:56
>>324
パケットモニタでなにやってるか見たら?
326デフォルトの名無しさん:2005/09/06(火) 12:44:06
Oracleを使用していましてSQLでUPDATEしたいと考えています。
その際にUPDATEしたらレコードが重複するかどうか調べる方法は無いでしょうか
327デフォルトの名無しさん:2005/09/06(火) 12:58:26
>>326
UPDATEする前に、UPDATEするのと同じ条件でSELECTしてみて
複数レコードがあったら重複する
328デフォルトの名無しさん:2005/09/06(火) 16:19:08
>>326
私もその方法を考えていたのですがそれしかないようですね ありがとうございます
329デフォルトの名無しさん:2005/09/06(火) 19:33:46
コマンドボタン押したときにあるURLに飛ばしたいんだけど
どうすればよいかなぁ?
330デフォルトの名無しさん:2005/09/06(火) 19:38:47
>>329
知ってるが
お前の態度が
気に入らない
331デフォルトの名無しさん:2005/09/06(火) 19:41:17
教えてくださいおねがいします。お代官さまー。
332デフォルトの名無しさん:2005/09/06(火) 19:49:43
333デフォルトの名無しさん:2005/09/06(火) 20:03:19
>>324
HTTP(HyperText Transfar Protocol)のIf-Modified-SinceヘッダとRangeヘッダ
334デフォルトの名無しさん:2005/09/06(火) 20:35:34
すみません教えていただきたいのですが、
text.1からtext.5まで入力された数値の平均をlabel.1に、
入力された数値データの個数をlabel.2に表示させるにはどうすれば
よいのでしょうか?
基本的なことですみません。
335デフォルトの名無しさん:2005/09/06(火) 21:13:00
Dim Count As Long
Dim 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なら只だし勉強向きの書籍もいっぱいあるのに。
336デフォルトの名無しさん:2005/09/06(火) 21:36:17
Dim Ave As Double

'合計
Cnt = 5
'へーきん
Ave = (text1.Text + text2.Text + text3.Text + text4.Text + text5.Text) / Cnt

もうコレでいいんでない?
入力されていないとか数字以外の場合も問われたら「分かりません」って答えるんだ!!
337デフォルトの名無しさん:2005/09/06(火) 22:10:02
ありがとうございます。
でもcountも5で固定じゃなく、
入力されたデータ数を数えるようにしたいのですが
わかりますか?
338デフォルトの名無しさん:2005/09/06(火) 22:11:48
>>337
入力されたデータ数とは?
339デフォルトの名無しさん:2005/09/06(火) 22:16:06
テキストボックスは5つありますけど、
例えばテキストボックス2つしか入力されなかった場合は
count=2になるようにしたいのです。
340デフォルトの名無しさん:2005/09/06(火) 22:30:23
>>339
Len(Text1.Text)<>0ならcountを増やすとか、少しは考えようよ。
341デフォルトの名無しさん:2005/09/06(火) 22:46:16
>>340
なぜですか?
342デフォルトの名無しさん:2005/09/06(火) 22:49:32
Text1, Text2, Text3 .......
と同種のテキストフィールドがあったとして
繰り返しのためにたとえばi=2として
Texti.text見たいな感じでText2.textの入力データ取り出すことできないの?
343デフォルトの名無しさん:2005/09/06(火) 22:51:21
できる
344sage:2005/09/06(火) 22:54:36
どうやるんですか?
"Text" & i & ".text"
これだと文字列になっちゃうし...
345デフォルトの名無しさん:2005/09/06(火) 22:56:55
コントロール配列にでもすればいいじゃないか・・・
346デフォルトの名無しさん:2005/09/06(火) 22:57:49
おもっくそスルーされてる
まあいいけど
347デフォルトの名無しさん:2005/09/06(火) 23:00:07
ありがとうございます
その名前がわからなかった
348デフォルトの名無しさん:2005/09/06(火) 23:09:23
かぶせさせてもらいますが
"Text1.text"
と文字列化したものをまた変数として扱うにはどうすればいいのでしょうか?
349デフォルトの名無しさん:2005/09/06(火) 23:11:05
どうしようもない。
350デフォルトの名無しさん:2005/09/06(火) 23:11:45
そうですかありがとー
PHPとかもやってるとわけわからなくなってしまって
351デフォルトの名無しさん:2005/09/07(水) 01:35:22
お前自体がわけわからん
352デフォルトの名無しさん:2005/09/07(水) 07:05:44
>>340
でけた。ありがとー。
353デフォルトの名無しさん:2005/09/07(水) 10:49:16
すみません。1つ教えてください。
VB6でコールバック的な処理って出来るでしょうか?

例:


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

よろしくお願いします。
354デフォルトの名無しさん:2005/09/07(水) 14:11:09
>>348
"Text1.Text"を文字列化って、どぅやったんですか?

Dim objText As Object
objText = Text1
objText.Text …
ってのはできる。
355デフォルトの名無しさん:2005/09/07(水) 14:15:22
>>353
そのメソッドをどこかのクラスモジュールに作って
クラスのインスタンス変数を渡すという手があります。
コールバック関数の数だけクラスモジュールが出来るけどな。
つまり
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で出来たんだっけ?
356デフォルトの名無しさん:2005/09/07(水) 14:44:25
' Text1はコントロール配列
Dim 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なんて変な書き方してるということは、ろくに
手を動かしたことがなくてコピペで済ませてるだろ。
説教くさくてごめんよ。
357デフォルトの名無しさん:2005/09/07(水) 16:00:38
>>355

ありがとうございます。
やってみます。

また分からないことがあったら教えてください。
358デフォルトの名無しさん:2005/09/08(木) 04:26:46
ファイル名に使用できない文字を置換してくれる関数か、ファイル名が妥当かチェックする関数ありますか?
359デフォルトの名無しさん:2005/09/08(木) 04:41:09
すんません。自己解決しました。
360デフォルトの名無しさん: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秒)です。

361デフォルトの名無しさん:2005/09/08(木) 11:16:05
残りのトータル秒数がわかれば時間も分も秒も計算できるべ?
362デフォルトの名無しさん:2005/09/08(木) 11:46:32
Int(B) * 24 + Hour(B) & Format(B, ":nn:ss")
じゃダメなの?
363360:2005/09/08(木) 11:52:43
>>361
レスありがとうございます。

>>362
完璧です。早速採用させていただきます。
ありがとうございます。
364デフォルトの名無しさん:2005/09/08(木) 12:17:58
たいへんすいません。
エクセルのVBAで小数点の切り上げ方が(切り下げ方も)判りません。
cells(1.1)=round(xx、0)
だと動くんですが、cells(1.1)=roundup(xx、0)とやると
エラーになってしまいました。
どなたか教えてください。
365デフォルトの名無しさん:2005/09/08(木) 12:26:03
VBAは別スレ
366デフォルトの名無しさん:2005/09/08(木) 12:43:49
>>364
VBAなんて資料いっぱいあると思うんだけどなんで質問する前に自分で調べないんだろう。

ここに使い方書いてあるみたいだから、手動でやってマクロ記録してみたら?
http://support.microsoft.com/default.aspx?scid=kb;ja;880970
367デフォルトの名無しさん:2005/09/08(木) 12:53:05
ごめんなさい。VBAって別スレなんですか・・・
一応、調べたんですが、ワークシート上じゃ簡単なんですが
ユーザーフォームとコマンドボタンでやると動かないんですよね。
困った〜
368デフォルトの名無しさん:2005/09/08(木) 12:56:47
>>363
何様のつもりだ。
369デフォルトの名無しさん:2005/09/08(木) 13:08:18
>>368
お互い様。
370デフォルトの名無しさん:2005/09/08(木) 13:40:14
>>369
違うよ。
371デフォルトの名無しさん:2005/09/08(木) 17:29:15
 VBで、mdbにデータを保存したいんだが、どうすればいい?
372デフォルトの名無しさん:2005/09/08(木) 17:47:56
>371
ADOとかDAOとか使うとか
373デフォルトの名無しさん:2005/09/08(木) 17:49:56
VB <->mdbの連携なんかいっぱい本あるだろう。
374デフォルトの名無しさん:2005/09/08(木) 18:02:53
With文の 制御構造外ってのがよくわからないんだが、

With Me

.Top = Left(.strTop,5) - 1000

End With

みたいにVB組み込みの関数なら問題ないんだよね。

APIとか自作の関数がNGって事で間違いないかな。
375デフォルトの名無しさん:2005/09/08(木) 19:56:50
>>374
クラス(class)なら自作でも With 〜 End With文 利用できるよ。
376デフォルトの名無しさん:2005/09/08(木) 20:09:36
テキストボックスについて質問です。

TextBox でEnableプロパティを Falseにすると表示されている文字が灰色になってしまいます。
そこで文字色を灰色ではなくて黒のままにしておきたいのですが、そのようなことは可能でしょうか。
Frameの中にTextBoxをいれてFrame.Enabel=Falseにすると文字色は黒のままで文字の入
力もできなくなるのですが、なにかもうちょっとすっきりできないのかと思っています。
WindowsAPI使って実現できませんでしょうか。

よろしくお願いします。
377デフォルトの名無しさん:2005/09/08(木) 20:37:58
質問です。

既存のボイスチャットソフト(TSとか)を使ってる時、
ボタン1つでwavを再生し相手に聞かせるプログラムを作りたいのですが、
その方法が見つかりません。

どのような方法があるでしょうか。よろしくお願いします。
378デフォルトの名無しさん:2005/09/08(木) 21:18:50
>>374
何を聞きたいのかサッパリ理解できないし、それが俺の読解力のせいとも思えん。
「制御構造外」とは何?

しかし>>375はよく374の意図がわかるな。エスパーですかひょっとしてw
379デフォルトの名無しさん:2005/09/08(木) 21:46:38
>>378
お前は話しにならん
380デフォルトの名無しさん:2005/09/08(木) 21:48:33
>>376
知ってるならその方法でいいじゃん。
なぜもうちょっとすっきり出来ないか教えてあげよう。
フォームにですね、深く掘り込まれた枠で(クラシック表示のとき)、
白い背景で、黒い文字が(白とか黒は環境依存)書かれた場所は、
「何か文字を入力できる」
ということを表す記号(表現)なのです。
逆に言うと、入力できないのにグレーでないのは、あまり
よろしくないと、つまりユーザーが混乱するよと、M$はかんがえたのです。
Windowsではそういうルール(ガイドライン)になっているので、
「ガイドラインを知らなくてもそのように作れるように」
EnabledをFalseにすると、親切でグレーにしてくれているのです。

WindowsAPIでどうにかならないか、ということだけど、
EnabledがFalseのときにグレーになるのは、VBでもたぶん
EnableWindow(hWnd, fEnable)というAPIでやってるの。

あきらめてください。
でなきゃ自作。
381デフォルトの名無しさん:2005/09/09(金) 00:34:18
複数行のコメントアウトってどうやるのでしょうか?
382デフォルトの名無しさん:2005/09/09(金) 00:43:28
>>381
ツールバー > ユーザー設定 > コマンド > 編集 > コメントブロック
キーに割り当てたければアドイン作れ。
383デフォルトの名無しさん:2005/09/09(金) 01:06:43
>>382
ありがとうございます。
無事、登録できました。
384デフォルトの名無しさん:2005/09/09(金) 02:10:21

WebBrowserコントロール上で押されたキーを得るにはどうすれば良いですか?
KeyDownイベントが見あたらないんですが、まさかフックしなくちゃダメなんてことは無いですよね。
385デフォルトの名無しさん:2005/09/09(金) 12:01:05
FormのKeyPreviewじゃだめ?
386デフォルトの名無しさん:2005/09/09(金) 22:31:49
>>384

WebBrowserには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

後は自分で何とかしろ
387386:2005/09/09(金) 23:10:25
後は考えてみてください、の間違いでした。
388名無しさん@そうだ選挙に行こう:2005/09/11(日) 11:05:11
なんていい奴なんだ(つд`)
389名無しさん@そうだ選挙に行こう:2005/09/11(日) 11:56:36
二次元配列を他の関数の引数にするとき
Dim a(10, 5) as Double

for i = 0 to 10
 call 他の関数(a(i , ))
next
配列の一番目(10で定義してある)の部分のみをiにしたいんだけど
どうすればいいのでしょうか?
390名無しさん@そうだ選挙に行こう:2005/09/11(日) 12:48:15
>>389
素直に
Call 他の関数( a , i )
にすれば問題無いわけだが。
391デフォルトの名無しさん:2005/09/12(月) 18:46:58
VB6.0において1次元配列の初期化をする方法はないでしょうか。
392デフォルトの名無しさん:2005/09/12(月) 19:06:42
>>391
初期化とは0でクリアなのか何かの値を入れたいのか
393デフォルトの名無しさん:2005/09/12(月) 19:37:22
>>392
配列の数だけNULL値を入れたいです。
394デフォルトの名無しさん:2005/09/12(月) 20:46:55
>>393
NULL値?初期状態にしたいだけなら
Dim A() as ほげ
で宣言しておいてクリアしたいときに
ReDim A(数)してやれ
395デフォルトの名無しさん:2005/09/12(月) 23:00:45
TabStripのタブにウェブブラウザで取得したサイト名を表示させたいのですがうまくできません。
TabStrip.Tabs.Add , , "あいうえお"とやるとキャプションが設定できているようで表示してくれるんですが
TabStrip.Tabs.Add , , WebBrowser1(index).LocationNameでは空白のままです。
文字列型に代入してやってみてみましたが同じでした。
Addのあとにインデックスを設定していないのがだめなのでしょうか?
また、このキャプションの設定は追加する時のみにしか設定できないでしょうか?

バージョンは6.0です。
よろしくお願いします。
396デフォルトの名無しさん:2005/09/12(月) 23:03:33
sage忘れました。
397デフォルトの名無しさん:2005/09/12(月) 23:26:20
>>395
Addの前に
Debug.Print WebBrowser1(index).LocationName
でも入れて、ちゃんとLocationNameが入ってきてるのは確認できてる?
398デフォルトの名無しさん:2005/09/12(月) 23:43:53
>>397
やってみたところ入ってきていませんでした。
ただ、タブをすべて削除するという下のプロシージャを実行した場合は削除後にキャプションが設定されました。
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

399デフォルトの名無しさん:2005/09/12(月) 23:54:04
Private Sub AllDel_click()

TabCtrl.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
↑でも入ってきてる?
400デフォルトの名無しさん:2005/09/12(月) 23:56:01
まぁBusy見るかイベントで設定するかしてくれと。
401デフォルトの名無しさん:2005/09/12(月) 23:59:23
>>399
はい。はいってきてます。
402デフォルトの名無しさん:2005/09/13(火) 00:34:01
うーん、それは入ってるとは言わないけど・・

WebBrowser1(0).Navigate ("http://www.yahoo.co.jp")
While WebBrowser1(0).Busy: DoEvents: Wend
TabCtrl.Tabs.Add , , WebBrowser1(0).LocationName
’このまま使用すると大いにバグだからイベントで。
403デフォルトの名無しさん:2005/09/13(火) 00:41:57
空白タブになるのは多分、WebBrowserでページの読み込みが完了していないのにタイトルを取ろうとしているから
Navigateした後にスグにAddはイカン!!

WebBrowserはページの読み込みが完了しないと満足にメソッド・プロパティが使えないからね
タイトルは DocumentCompleteイベントかTitleChangeイベントの通過後でないと駄目

ご参考に…

ちなみにブレイクポイントで止めて LocationName を見る場合は デバッグでロジックを止めた時点でページの読み込みが完了するので
正確な値が返って来るので注意
404デフォルトの名無しさん:2005/09/13(火) 00:50:09
事後報告無しが続くなあ
405デフォルトの名無しさん:2005/09/13(火) 01:17:46
>>400
busyについてよく分かっていないので明日調べてやってみます。

>>402
入ってないんですか。
てっきりyahoo!と表示されたので・・・。
そのプログラムについても調べてみます。

>>403
読み込みが完了してからですね。
自分なりにやってみようと思います。

406377:2005/09/13(火) 01:21:24
>>377はわかりませんか
もしかして、文章が分かり難いですか?
407デフォルトの名無しさん:2005/09/13(火) 01:26:30
>>406
わかるけどな。
ちゃんとするにはVBだけでは無理。
408デフォルトの名無しさん:2005/09/13(火) 11:06:52
VBで作ったテキストファイルにEOFを付加するにはどうすればいいでしょう?
409デフォルトの名無しさん:2005/09/13(火) 12:29:04
親切なエスパーさん、「テキストファイルにEOFを付加する」ってところを翻訳してw
410デフォルトの名無しさん:2005/09/13(火) 12:30:03
>>408
EOFコード(&H1A)を入れて文字列をバイナリデータとして保存
EOFコードってWindowsでは使われてないでしょ? 必要あるの?
411377:2005/09/13(火) 13:11:12
>>407
VBで、できないってことはスレ違いな質問でしたね・・・すいませんでした。
Cの方で聞いてみます。
ありがとうございました。
412デフォルトの名無しさん:2005/09/13(火) 15:02:08
>>394
返信ありがとうございます。初期化することが出来ました。
413デフォルトの名無しさん:2005/09/13(火) 21:41:25
テキストボックスを透明にする事は可能ですか?
もし可能なら方法を教えてください
414デフォルトの名無しさん:2005/09/13(火) 21:50:31
>>413
やりたい事がいまいち伝わってこないが、絵などの上に入力したいのか?
日本語なども必要ならIME,IMMあたりで自作。
415デフォルトの名無しさん:2005/09/13(火) 21:57:19
>>414
回答ありがとうございます。
透明化自体は無理ですか?
416デフォルトの名無しさん:2005/09/13(火) 21:58:58
>>415
透明化というものが何を指すかわからんからなんとも。
417デフォルトの名無しさん:2005/09/13(火) 22:15:02
ピクチャーボックスに貼り付けた画像上にテキストボックスかリッチテキストボックスを
貼り付けたいのですが。
418デフォルトの名無しさん:2005/09/13(火) 22:18:11
テキストボックスの背景に画像を入れたいってことか?
419デフォルトの名無しさん:2005/09/13(火) 22:28:24
動的にテキストボックスを画像上に配置したいのですが、
この時に位置あわせの為に下の画像が見えるようにしたいのです。
で、その為にテキストボックスを透過させたい訳です。
420デフォルトの名無しさん:2005/09/13(火) 22:34:46
説明が分かり難くてすいません。
WORDの図形描画でのテキストボックスの配置が
イメージに近いと思います
421デフォルトの名無しさん:2005/09/13(火) 22:40:22
>>419
Wordは知らん。
2000/XP以降でいいなら別のウインドウ作ってBorderStyleを0にして
ウインドウごと透過させるって手もあるようなないような
422デフォルトの名無しさん:2005/09/13(火) 22:43:06
>>421
かなり強引だがVBでは妥当かもな
423デフォルトの名無しさん:2005/09/13(火) 22:54:49
421に蛇足
SetLayeredWindowAttributesだったかなーウインドウごとのは。
一度昔使ったきりだから忘れたや。
424405:2005/09/13(火) 23:30:47
busy等について調べてみてなんとなくわかりました。

イベント通過後に変更しようと思うのですが、キャプションのみの設定はどのように
記述すればいいのでしょうか?あと、TabStrip.Tabs.AddのインデックスはTabStripプロパティの
プロパティのタブにあるインデックスのことでしょうか?
425デフォルトの名無しさん:2005/09/13(火) 23:48:27
>>424
TabStrip1.Tabs(1).Caption = "a"
など・・・ヘルプやGoogleやIDEの入力支援で探す努力くらいはやらないか
426デフォルトの名無しさん:2005/09/13(火) 23:56:16
>>419
ラベルじゃダメなの?
ラベルなら何も考えずにできるとおもうんだけど。
ユーザーが文字編集できるようにしたいなら、その時だけ同じ大きさの
TextBoxを同じ位置にBringToFrontして表示すればいいんだし。
427デフォルトの名無しさん:2005/09/13(火) 23:59:37
>>425
検索してみたのですが、検索方法が悪いのか目的のものがなかなか出てこなかったので。。。
入力支援でいろいろやってみたのですが、Tabsの後にインデックスをつけてると.のあとにCaptionが
でてくるということに気づきませんでした。

ありがとうございました。
428デフォルトの名無しさん:2005/09/14(水) 00:52:37
SetLayeredWindowAttributesだと、画像も透けちゃいませんか?
429デフォルトの名無しさん:2005/09/14(水) 00:56:50
質問者は2度目の書き込み以降は
必ず名前欄に最初の質問のレス番号を入れましょう。
430デフォルトの名無しさん:2005/09/14(水) 01:09:48
>>428
別のウインドウ(Form)作ってと言ってるだろ!
431デフォルトの名無しさん:2005/09/14(水) 03:01:37
自分で作ったdllを呼んで処理を行うclassモジュールを作ったんだけど
なぜかdllを呼んで、dllから帰ってきた後VBのプログラムが不安定になるよ・・・
pictureをクリアーする「.cls」の部分で突然落ちるし、ファイルを開く「open〜」の部分でも突然落ちる
デバックしたけど落ちる場所がよくわからないしヽ(`Д´)ノウワァァァン
dllへ変数を参照渡しで送って、計算したものをVBへ返してもらってるんだけど
返ってきた値におかしいところは無かったです

ちょっとでも原因がわかる人がいたら助けてもらえませんでしょうか
。・゚・(ノД`)・゚・。
432デフォルトの名無しさん:2005/09/14(水) 03:14:15
そういう質問は、現物をソース付きで上げてもらわないと何とも言えないな。
433デフォルトの名無しさん:2005/09/14(水) 08:46:14
VB6上で、wshを使いたいのですが、
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run("hoge.exe")
とかの使い方わ解るんだけど
Wscript.Echo "Hallo"
Wscript.Sleep 1000
などをどうやって使えば良いのかわかりません。
Windows Script Host Object Modelを参照設定してもダメです。
代用法ではなく、上記のことを行える方法をご存じの方、どうかご教授お願いします。
434デフォルトの名無しさん:2005/09/14(水) 16:39:36
>>433
結果から言うとVBから WScript は使えない。
なぜかというと WScript.Shell は外部公開されているけど WScript はされて無いから。
WScript は VBS(ro JScript) の環境下でした使えない(当然ライブラリも存在しない)。

外部公開されてない以上 VBS でしか使う事ができんのです。
どうしても使いたかったら マイクロソフトに 「WScript を外部公開しろ」と言って下さい。

まぁ VBS から VB製のActiveXを呼び出して その ActiveX に WScript を渡すという事は出来るんだけど。
435もんもん:2005/09/15(木) 21:28:27
VB6.0とSQL鯖2000って仲がいいのですか?
436デフォルトの名無しさん:2005/09/15(木) 22:15:03
いいよ。

はい次↓
437デフォルトの名無しさん:2005/09/16(金) 01:21:04
VB6 使用してます。

Web上にある画像を読み込んで、その画像を加工したいと思ってます。

jpgやbmpだったら
OleLoadPicturePath() を使って一旦PictureBoxに貼り付けて
ピクセルモードにしてピクセル単位でいじれたのですが
pngだと上の関数で読み込めませんでした。

なんとかピクセル単位のテーブルを作りたいのですが、
方法ありませんか。

ご存じの方いたら教えて下さい。
438デフォルトの名無しさん:2005/09/16(金) 01:52:20
Variant型の配列をNullで初期化したいのですが、ループを使う以外に
もっとスマートに書くことはできますか?
439437:2005/09/16(金) 02:04:41
×PictureBox
○Picture
440デフォルトの名無しさん:2005/09/16(金) 02:30:31
>>438
ある
441デフォルトの名無しさん:2005/09/16(金) 13:30:54
ADOを使用して、ファイルメーカーのデータベースに接続しようとしています。
接続文字列は以下の様に設定しました。

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に接続する場合、テーブル名とデータベース名は同じ名前で
よいのでしょうか?
よろしくお願いします。
442デフォルトの名無しさん:2005/09/16(金) 15:13:15
ListBoxでStyle
443デフォルトの名無しさん:2005/09/16(金) 15:20:12
↑不注意で書き込みボタン押してしまいました。すいません。

質問です。

ListBoxでStyleをチェックボックスにして

For i = 0 To List1.ListCount - 1
List1.Selected(i) = True
Next i

のように全部チェックをつけるとき、数百行あるだけでもえらく時間がかかるんですが、
速度を上げる良い方法はありませんか?
(できればチェックつけながら勝手にスクロールするのもやめさせたいです。)
444デフォルトの名無しさん:2005/09/16(金) 15:29:45
>>443
List1.Enabled = False
List1.Visible = False
For i = 0 To List1.ListCount - 1
List1.Selected(i) = True
Next i
List1.Visible = True
List1.Enabled = True
一瞬じゃない?
445デフォルトの名無しさん:2005/09/16(金) 15:32:03
>>444
enabledいらないんじゃ?

最後に
List1.listindex=0
とかもね
446デフォルトの名無しさん:2005/09/16(金) 15:36:49
>>445
無いと一瞬ちらつくから入れてる
447デフォルトの名無しさん:2005/09/16(金) 16:04:15
>>444,445

ありがとうございます。
早くなりました。
448デフォルトの名無しさん:2005/09/16(金) 17:24:30
SSTabに、コンボボックスをドロップダウンコンボ形式でいくつか配置します

他のタブからコンボがあるタブに戻ってくると、
なぜかそのタブにある全てのコンボボックスのTextが、
全選択されています

見た目悪いので、これを回避したいのですが・・・
タブクリック時にSelStartを1にすれば一応回避は可能なんですが、
一画面内のコンボボックスの数が多くて、その分書くのがめんどくさいです

何か、もっとスマートに回避できる方法はないでしょうか?
449デフォルトの名無しさん:2005/09/16(金) 18:24:28
WindowsXP (SP1) / Visual Basic 6.0 (SP5)

StrConv関数 について質問です。

S = "\\\test\\\"
D = StrConv(S, vbWide)

この様なコードを書いた場合に、変数 D が

"¥¥¥test¥¥¥"

とならずに、

"\\\test\\\"

となってしまいます。

"\" だけ Replace関数 を使うしかないのでしょうか?
450デフォルトの名無しさん:2005/09/16(金) 19:16:58
>>449
自力で変換の関数書いては
451デフォルトの名無しさん:2005/09/16(金) 19:55:54
XXX がデータベースの名前で
fp5 がテーブルの名前?
だったら
database=XXX
SELECT * FROM fp5
です。
ていうかおまえデータベースとテーブルがごっちゃに
なってないか?
452デフォルトの名無しさん:2005/09/16(金) 20:05:58
Variant型の配列をNullで初期化したいのですが、ループを使う以外に
もっとスマートな書き方ではどう書けばよいですか?
453デフォルトの名無しさん:2005/09/16(金) 20:13:06
454デフォルトの名無しさん:2005/09/16(金) 20:31:31
何でVariantをNullで初期化する必要があるの?
Variantの初期値はEmptyでしょ。
NullとEmptyのちがい分かんないの?

FillMemory() で初期化しなさい。
データの長さは Variant型が16Byte の変数であるから もう分かるよね〜
初期化の値は 0 でいいよ。
455デフォルトの名無しさん:2005/09/16(金) 20:35:20
そんなことして大丈夫なの?
456452:2005/09/16(金) 21:44:32
>>453
すみません、>>438>>440で「ある」としか回答をもらっていないようなので、
(ただ、>>440氏の回答では>>438氏の質問にある「書くことは
できますか?」という
問題が解決していないので、実際出来るかどうかもまだ判然と
しないのですが)
こちらはどう書けばよいか、という問題の答えを探していますので
>>438では解決しませんでした。お手数をおかけしました。

>>454
Nullの伝播を前提としたライブラリを使用する必要があって、
初期値としてNullを持った変数が必要になります。
他社から提供されるActiveX DLLなので中身は分からないのですが、
想像するに、中でLeftやRightの$なし関数を使っているなどして
いるようで、Enptyを渡すとNullが返らないので結果が変わってしまいます。
NullとEmptyが違うので、あえてNullで初期化する必要が出来ています。
457デフォルトの名無しさん:2005/09/16(金) 21:47:18
Enpty→Emptyです。
458デフォルトの名無しさん:2005/09/16(金) 21:51:48

問題外。出直して来い。
459デフォルトの名無しさん:2005/09/16(金) 22:17:05
VBのReplace関数ってバグがありませんか?
引数(start)設定時に1よりも大きくすると正常に動作しませんよね?
460デフォルトの名無しさん:2005/09/16(金) 22:22:41
>>459
問題が起こる最小限のサンプルコード見せてくれ
461デフォルトの名無しさん:2005/09/16(金) 22:24:14
>>459
言いたいことはなんとなくわかる

ヘルプを百万回読み直せ
462デフォルトの名無しさん:2005/09/16(金) 22:26:50
>>459
正常に動作するけど。
もしかして
> 引数 start を指定した場合、Replace 関数は、指定された位置から引数 expression の文字列の末尾までを返します。
という公式仕様をバグだと勘違いしてる?
463デフォルトの名無しさん:2005/09/16(金) 22:35:34
恥ずかしい奴だなw
464デフォルトの名無しさん:2005/09/17(土) 03:03:36
>>437
既存のライブラリ等を使うか、もしくは自前で実装。
465デフォルトの名無しさん:2005/09/17(土) 12:06:12
VB6で任意の文字をsendmessage関数を使ってメモ帳に送ろうとしているのですが、送れないんです。。返り値も0でテキストも表示されません。
WM_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
466デフォルトの名無しさん:2005/09/17(土) 12:09:29
>>465
最後のSendMessageはhWnd2に向けて送れよ。
467465:2005/09/17(土) 12:22:09
>>466
あー、すみません、いろいろ試してたので・・

retvalue = SendMessage(hWnd2, WM_CHAR, 52, 0)

とかでやってもダメでした。。

retvalue = SendMessage(hWnd1, WM_CLOSE, 0, 0)

も動かないです。

なんかもっと基本的なことか根本的な間違いでしょうか・・@@
468デフォルトの名無しさん:2005/09/17(土) 12:56:02
>>465
なんだこれw
WM_PASTEって文字通り「貼り付け」でしょ?
何を貼り付けるの?それはクリップボードの文字列だよね。
その辺わかってるのかな。
469デフォルトの名無しさん:2005/09/17(土) 14:20:18
retvalue = SendMessage(hWnd1, WM_paste, 52, 0)

Clipboard.SetText Text1.Text
retvalue = SendMessage(hWnd2, WM_paste, 52, 0)
470デフォルトの名無しさん:2005/09/17(土) 14:22:57
Setの前にはClear
471465:2005/09/17(土) 14:42:06
やっと動いた・・・

Private Const WM_CHAR = &H102

を追加したらWM_CHARは動くようになりました。なぜこれが必要なのか
よくわかんないけど。。
アドバイスもありがとうございます。
472デフォルトの名無しさん:2005/09/17(土) 14:57:42
オイオイ.........
473デフォルトの名無しさん:2005/09/17(土) 14:58:07
Option Explicit
-----------------
474デフォルトの名無しさん:2005/09/17(土) 15:27:19
Option Explicit を付けないと 変数宣言が必要なくなるスーパー言語VB
475デフォルトの名無しさん:2005/09/17(土) 15:36:29
変数宣言ないほうがコンパイラの実装楽だしな
476デフォルトの名無しさん: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
477デフォルトの名無しさん:2005/09/17(土) 15:54:16
>>476
UNICODEをまともに扱いたかったらVB.NETでも使ってくれ
478476:2005/09/17(土) 15:56:52
確かにおっしゃるとおりなのですが
今からそれをやることができないので
なんとか今のヴァージョンでクリアさせたいのですが・・・

無理な話なんでしょうか?
479デフォルトの名無しさん:2005/09/17(土) 16:05:09
>>478
無理とは言わないが・・・
大抵のコントロールは入力出力UNICODEが通らない
内部での扱いやOSでもきつい
ttp://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200306/03060029.txt
480476:2005/09/17(土) 16:20:53
>>479

早速のResありがとうございます。

表示に関してはgrapecity社のSpread7で回避ができそうなのですが
問題はDBに登録する際に「?」になってしまうことなのです。

回避する方法を教えてください、お願いします。
481デフォルトの名無しさん:2005/09/17(土) 16:22:07
>> 476
VB標準のコントロールはUnicodeを扱えない。
Unicodeを扱いたいなら、Unicodeに対応したコントロールを買ってくるか、
作る必要がある。他にもUnicodeを扱えない場面は多々ある。
ぶっちゃけVB6で作るのはあきらめて、Javaか.NETかC++にするのが良い。
482デフォルトの名無しさん:2005/09/17(土) 16:24:37
>>480
しらんがな。
Spread7の人間に聞いてくれ
483476:2005/09/17(土) 16:34:00
>>481
もう納品済みな物なので今から方向転換するのが厳しいのです・・・
Spread7でUnicodeが扱えるのでそっちで聞くことにします。
484デフォルトの名無しさん:2005/09/18(日) 02:49:01
csv形式のファイルから、任意の行だけを読み込みたいのですがどうすれば良いですか?
大きなファイルなので、一度全て読み込んで・・・ということはせずに処理したいのですが。
485デフォルトの名無しさん:2005/09/18(日) 03:00:09
>>484
DBに変換して使う
INDEXファイルを作っておく
1行づつ読んで改行を数える
一度全て読み込んで

どちらにしろ、一発じゃ無理
486デフォルトの名無しさん:2005/09/18(日) 11:15:51
サブキーを持つレジストリキーを一発で削除する方法を教えてください。
IWshRuntimeLibraryのRegDeleteメソッド、
APIのRegDeleteKey関数では、サブキーを持つものは1発では削除できませんでした。
ググっても.NETの方法や、VB6でもAPI使えばサブキーを持つキーの削除が出来るって情報はあるのですが
具体的にどうすれば良いのかが解りません。
レジストリスクリプト(.reg)やreg.exeをつかっての削除ならわかるのですが
そういったものを使わずにVB6でサブキーごと一発で削除する方法をご存じの方、どうか教えてください。
487デフォルトの名無しさん:2005/09/18(日) 11:40:56
>>486
質問する前にググッた?
いや、そんなはずはないな。

俺もレジストリのキーの再帰的な削除なんてやったことなかったんで
ググってみたけど、3分程度で答え見つかったよ。
488デフォルトの名無しさん:2005/09/19(月) 01:03:57
oggを再生する方法教えてください。
VB6.0です。
489デフォルトの名無しさん:2005/09/19(月) 01:16:49
>>488
DLL使うのが無難だな
490デフォルトの名無しさん:2005/09/19(月) 01:44:08
>>489
レスThx
調べてみてVoxっての見つけたんだが、うまく出来んorz
ヘルプ見てコピペしたんだが、エラーが出る(´・ω・`)

dll使うの初めてだから良く分からないorz

どこかに良いサンプルみたいなのってありますか?
491デフォルトの名無しさん:2005/09/19(月) 02:22:51
「エラーが出る」だけしか書かない奴にかける言葉は無い
492デフォルトの名無しさん:2005/09/19(月) 02:29:25
Option Strict Off
Option 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
にして、他削ったらエラー出ないけど、動かない(´・ω・`)分かりにくくてスマソ
493デフォルトの名無しさん:2005/09/19(月) 02:29:52
今 Vox 落として確認してみた このVBサンプルは .NET だよ
494デフォルトの名無しさん:2005/09/19(月) 02:32:49
>>493
.NETじゃなきゃ使えないって事?
工夫次第で使えるのかな?
495デフォルトの名無しさん:2005/09/19(月) 02:34:51
十分使える API の宣言 Integer を Long に変えれ
496デフォルトの名無しさん:2005/09/19(月) 02:39:55
>>495
出来た!
マジでThx。
ありがとう。・゚・(ノд`)・゚・。
497486:2005/09/19(月) 04:36:39
>>487
ググりましたよ。
でも値を持つキーごと削除する方法とか、再帰的に削除する方法は解るんだけど
XPのreg.exeみたいにキー以下にサブキーがあっても一発で削除出来る方法が分からないです。
NETの方法とか書籍の見出し広告ばかりヒットしちゃって。

ググって答えを見つけたなら、そのページへのリンクを貼ってください。
ページ直ではなくGoogleの検索結果一覧へのリンクでもかまいません。
間違いなく検索結果の10件の中に答えがあるというなら、後は自分で探しますから。
498デフォルトの名無しさん:2005/09/19(月) 09:38:03
RegEnumKeyEx
499デフォルトの名無しさん:2005/09/19(月) 11:57:30
>>497
検索の仕方が甘いというか、諦めるのが早すぎると思うよ。根性なさ杉。

まずMSDNでRegDeleteKeyの項を確認するのは当然普通にやるよね?
そうすると「参照」のところになにやらそれっぽい臭い関数名が書いてあるじゃない。(SHDeleteKey )
で「RegDeleteKey SHDeleteKey」で検索かけると。。
500デフォルトの名無しさん:2005/09/19(月) 13:05:42
上手く検索できる人はこんなとこ利用しないと思いますけど。。。
501デフォルトの名無しさん:2005/09/19(月) 13:39:42
うんだから魚より魚の釣り方を提供した方が親切だろうと思うわけですよ。

。。。ってそんな偉そうにいうような大仰なもんでもないと思うけどね。
誰でも>>499程度の知恵は使うでしょ、誰にも教えられなくても。
502デフォルトの名無しさん:2005/09/20(火) 05:57:02
VB6使ってます
テキスト1とテキスト2に数値を入れてコマンドボタンを押すと
テキスト1に入力した数値からテキスト2に入力した数値までを
全部足していくプログラムのやり方を教えてほしいです
テキスト2のが小さい場合はテキスト1までの数字を足していくって感じで
503デフォルトの名無しさん:2005/09/20(火) 06:10:49
>>502
・text1とtext2どちらの値が小さい(大きい)かを算出
・forで小さい方の数から大きい方の数までのループを組む
・ループ内で「変数=変数+forのカウンタ」という処理を行う
・ループを抜けたとき変数に入ってた値がお望みの物
504デフォルトの名無しさん:2005/09/20(火) 06:13:28
>>503
ありがとです
なんとなくやり方がわかりました
やってみま
505デフォルトの名無しさん:2005/09/20(火) 09:49:48
SendMessageで出来ること一覧、みたいなものありますか?

定数の一覧とかはたくさん見つかるんですが、定数だけわかっても
パラメータの乗せ方って動作によって違いますし。。。
506デフォルトの名無しさん:2005/09/20(火) 09:59:17
> 出来ること一覧
なんでも。

つーか出来ること一覧から選んで使うんじゃなくて
やりたいことから必要な物を探し当てるのが普通だろ。
出来ること一覧なんてまともに出したら万単位じゃきかないんだから有っても無駄だよ。
507505:2005/09/20(火) 10:13:37
>>506
う、そうですね・・・
私の探し方が未熟なんでしょうかorz

開発してると、毎回SendMessageでやりたいことがいろいろ出てきて、
事案ごとにキーワード変えながら検索してみるんですが、
クリーンヒットってほとんどないんです

「SendMessageで○○をしたい」と考えたとき、
どんなふうに探されてますか?
なんかあいまいですみません・・
508デフォルトの名無しさん:2005/09/20(火) 10:20:53
spy++で調べて、解らなければその情報を元に検索する。
509デフォルトの名無しさん:2005/09/20(火) 10:22:26
つうかさ、SendMessageとかAPI使うなら、きちんとWindowの仕組みを勉強しろよ。
何のメッセージを送ってるかそもそもわかってないでしょ。
誰が誰にメッセージしてるかとか、それが一体何で、どうやって到達するかとか。
510デフォルトの名無しさん:2005/09/20(火) 11:30:30
>>505
「SendMessageで○○をしたい」で方法に辿り着けず挫折した事も多いんじゃいかな
SendMessageは定数の一覧が全て。定数の一覧に載っていないメッセージは送信しても受け付けません
定数の一覧に載っていない処理は絶対にSendMessageじゃ出来ないんよ

検索方法変えな

まず定数の一覧を見て必要な処理が出来るか検討する
見つかったら そのメッセージでMSDNがぐーぐる
見つかんなかったら さっさと諦める。

時間かければ見つかるかも知れないけど 出来ない事延々と探す時間がもったいないよ

どうしても必要とせがまれた時は
「VB or Windows では実現が難しい」
「実現するにはそれなりの工数が必要」
とでも言って脅せ
511デフォルトの名無しさん:2005/09/20(火) 11:39:54
アホか。
512デフォルトの名無しさん:2005/09/20(火) 12:41:10
ループなんか回すと処理に時間がかかるから、数学の公式使おう!
513デフォルトの名無しさん:2005/09/20(火) 12:43:15
>>512>>504宛てでした。
514デフォルトの名無しさん:2005/09/20(火) 16:33:49
フォームのkeypreview=true
フォームのkeydownイベントで↑↓でカーソル移動(SendKeysでTab、Shift+Tab)
するようにしているんですが、
コンボボックスを通過する際、カーソルはきちんと動くものの、
コンボの選択内容が上下に変わってしまいます

コンボボックスで、矢印キーの上下で項目を選ばせないようにするには、どうしたらいいでしょうか
515デフォルトの名無しさん:2005/09/20(火) 16:49:45
>>514
カーソル上でで移動するというそっちの仕様がおかしい
516デフォルトの名無しさん:2005/09/20(火) 17:12:38
>>514
コンボのKeyDownで ↑↓ が入力された時 KeyCode = 0: Shift = 0 にする

でもその仕様は確かに変
↑↓でカーソルを移動するのはキーボード重視になっているからだと思うんだけど
コンボを↑↓で選択したくなったらどうするの?ワザワザマウス使うの?
517514:2005/09/20(火) 17:38:09
マウスクリックかAlt+↓で選択させたいみたいです
コンボボックス上ではEnterキーでのみカーソル移動させていたら、怒られましたorz

>>516
ありがとうございます
それでやってみたんですが、こんどはAlt+↓が効かなく・・・
も少し粘ってみます
518デフォルトの名無しさん:2005/09/20(火) 17:53:17
VB6(SP6)とグレープシティのActiveReportを組み合わせたPGを作成しています。
プロジェクトファイル(vbp)で実行した場合は問題なく動作するのですが、
exeファイルを作成し、実行したらオートメーションエラーが発生します。
(同じPCで行っています。)

VBPで動作して、コンパイルしたexeだと動かないって、
一般的にどのような理由が考えられますか?
519デフォルトの名無しさん:2005/09/20(火) 17:57:42
>>518
エラーナンバーも出ないのか
520518:2005/09/20(火) 19:30:16
>>519
エラーナンバーを表示させていませんでした。
実行したところ、「-2147024770 オートメーションエラーです。指定されたモジュールが見つかりません。」と出ます。
521518:2005/09/20(火) 19:51:23
度々すみません。先程のはウソでした。
「-2147417848: オートメーション エラーです。
起動されたオブジェクトはクライアントから切断されました」
が、exeのみで発生するエラーです。
522デフォルトの名無しさん:2005/09/20(火) 22:09:40
VB6.00使用してプログラム組んでいるものです。
ボタンを押して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) '終端までループを繰り返す
*****下記に続く*****
523デフォルトの名無しさん:2005/09/20(火) 22:10:12
*****上記から******
Line 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
524デフォルトの名無しさん:2005/09/20(火) 23:40:59
そのコントローラの使用する権利がないとかでは?
525デフォルトの名無しさん:2005/09/20(火) 23:49:19
ActiveReportというコンポーネント使ったことないけどそれって最初からついてたやつ?
526デフォルトの名無しさん:2005/09/21(水) 00:02:37
ActiveReportだったか忘れたけど、Newしたオブジェクトを
Nothingしなかったらそういうのが出た気がする。
ちがってるかもしれんが・・・
527デフォルトの名無しさん:2005/09/21(水) 00:50:31
Win2000 SP4 + VB6.0 SP6です。

デスクトップ右クリックメニューの「等間隔に整列」を
ロジックで実現する方法を教えてください。
よろしくお願いいたします。
528デフォルトの名無しさん:2005/09/21(水) 00:59:42
>>527
質問の意味がわからん
何がしたいんだ?
529デフォルトの名無しさん:2005/09/21(水) 02:56:44
VB6.0です。

画像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秒程かかって思うように動きませんでした。
もっと早く動かすにはどうしたら良いですか?
分かりにくい文章ですいません。
530デフォルトの名無しさん:2005/09/21(水) 03:02:12
>Refreshに1秒程かかって思うように動きません
ちょwwwwおまっwwwwツボ入ったwww
531デフォルトの名無しさん:2005/09/21(水) 06:25:54
VB6です
text1と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

現在こんな感じです
たぶんすっごい突っ込みどころ色々あると思うんですがアドバイスお願いします
532531:2005/09/21(水) 06:46:40
色々やってみたら自己解決しました(´・ω・`)
533275:2005/09/21(水) 09:39:39
MSCOMMに困っていた者です。
送信側にPCを使ってテストする分には
うまくいってます。
あとは、実際に検査機を使ってテストするだけです。
また、質問があったら質問したいと思いますが、
質問に答えてくださった方々、
ありがとうございました。
534デフォルトの名無しさん:2005/09/21(水) 10:10:53
VB6.0です。
入力した文字列をそのまま配列に一文字ずつ格納して、
さらにそれを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…を出力させるにはどうしたらよいのでしょうか??
よろしくお願いします。
535デフォルトの名無しさん:2005/09/21(水) 10:21:06
何をしたいのかよくわからんが、
配列を繋げるならjoin関数で
536534:2005/09/21(水) 10:39:21
>>535
や、やっとできました…そんな関数すら知らずに朝から3時間も苦悩しておりました orz
ありがとうございます(;´Д`)逝ってきます
537デフォルトの名無しさん:2005/09/21(水) 10:40:08
>534
dim s as string

for i=0 to ubound(Hairetsu)
s = s & Hairetsu(i)
next

Text2.Text = s

こんな感じでいいんじゃないかな
538537:2005/09/21(水) 10:42:32
って既にレスされてた上に
join知らなかった俺はバカ。

join覚えときます・・・orz
539534:2005/09/21(水) 10:48:36
>>537-538
とんでもございません。
書き換えたらそちらでもちゃんと表示されました。
朝っぱらから漏れなんぞに付き合っていただきありがとうございました。
540デフォルトの名無しさん:2005/09/21(水) 11:17:16
もう解決しているし、>>534の使い方とは違いそうだしで書き込むか悩んだけど
文字列とバイト配列の相互変換を置いておきますね。

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

今は使わなくても覚えておいて損は無いかも?
という事で閑話休題
541デフォルトの名無しさん:2005/09/21(水) 11:21:57
ワロタw
542デフォルトの名無しさん:2005/09/21(水) 12:29:23
>>541のツボが理解できん俺はorz
543デフォルトの名無しさん:2005/09/21(水) 13:33:58
>>502>>531って別人?
n(n+1)/2(1からnまでの総和)って知らんのかなぁ!?
例えば、Integer内でおさまる計算なら、1たすのも1000たすのも同じ時間。
逆に言えば、1を1000回たせば1000倍の時間がかかる。
そういうところがもっとも簡単に気ィ使えるとこなんだから…。
544デフォルトの名無しさん:2005/09/21(水) 14:04:00
>>543
空気嫁
545デフォルトの名無しさん:2005/09/21(水) 15:05:36
>>522
×strCEL_No = Chr(Asc("A") + i) & lngLineCnt
○strCEL_No = Chr(Asc("E") + i) & lngLineCnt + 4

ところでこのサンプルソースで動いたの?
いろいろ手直ししないと動かなかったんだけど。
俺がExcelXPのせいか?
546デフォルトの名無しさん:2005/09/21(水) 15:35:07
こんにちは ExcelXPさん!
547デフォルトの名無しさん:2005/09/21(水) 23:52:38
突然厨な質問ですまないが、VBでマルチスレッドアプリを作ろうとしている。
巷では出来ないといわれていたり、出来ると言われていたりよくわからん。

CreateThread自体はうまくいく。
スレッドのプロシージャに空ループを仕掛けるとCPU使用率が100%になるからだ。

グローバル変数を使ってスレッドを抜ける(=破棄)までは出来ている。

ところが、スレッドの中でちょっとでも変な事すると即座にあぼんするのだが、VBでマルチスレッドできない理由ってこれかい?


#基本的には、メインフォームに対して描画処理をしたいだけなんだが、form1.hdc とか触っただけであぼんってなんだゴルァ!
しかもIDEとP-Codeとネイティブで全部あぼんするタイミング違うし。
548547:2005/09/21(水) 23:57:25
テラスマソ
WinXP SP2 + VB6.0 SP6です。

基本事項忘れますた
549デフォルトの名無しさん:2005/09/22(木) 00:30:16
>>547
マルチスレッドは可能 CreateThreadも上手くいく
ただしスレッド間のコントロール(オブジェクト)の同期がメチャクチャ
おまけに不安定。

CreateThreadの上手くいく=マルチスレッドが可能 という人もいれば
不安定=マルチスレッドが使い物にならない(出来ない) という人もいる

個人的な意見だけど VBランタイムがシングルスレッド用で出来ているから 満足にマルチスレッドは使えないと思う

やった事無いけど スレッドのプロシージャをDLL(Cで作ったヤツ)にすれば可能という話があるけど
試した事ないから知らない
550デフォルトの名無しさん:2005/09/22(木) 01:10:38
前スレで下記のような質問をした者です。
前スレでは無理だからループ回せとの回答を頂きましたが、FillStyleプロパティをflexFillRepeatにする事で
行や列などの範囲に対してループを回さず一発で書式変更が出来るようになることが解りました。
ご存じの方も居るかとは思いますが、前スレで回答が付かなかったということは
知らない方も多いと思うので報告させていただきます。

> VB6のMSHFlexGridコントロールで、列や行に対して
> 文字割付(上寄せとか左寄せとか)や、修飾(文字色とか太字とか)を
> 設定するにはどうすればよいですか?
>
> 今は列や行に対してではなく、セルに対する設定をForで回してますが非効率的なので。
> Spreadsheetコントロールならそういうことも出来るのですが、
> MSHFlexGridコントロールを使いたいので、どうかご教授お願いします。
551デフォルトの名無しさん:2005/09/22(木) 01:13:35
>>547
Mutexとか使って排他かければ可能なんじゃね?
逆に排他かけなきゃ共有物にアクセスしたらいかんのだけれど、この辺はVBに限った話じゃ無いわな。

スレッドが使用可能だって言っても、全部VBで開発しろって言われたら絶対に嫌ですって答えるな。
VB唯一の長所といってもいいデバッグのしやすさが失われるからなぁ。
VBはVM(って言ってもいいのかな?)の上にいる間だけ優しい顔をしてくれる感じ。そこから外れると辛い。

今の時期にVBに対して不便さを感じているなら、VB.NETなりC#なりに移ったほうがいいかも。
552デフォルトの名無しさん:2005/09/22(木) 01:17:00
あ、フォームのオブジェクトに直接触ろうとしてるのか。
じゃ無理だな。
553デフォルトの名無しさん:2005/09/22(木) 04:35:24
Inputboxに数値を入力していって(ループで0が入力されるまで繰り返し)
0が入力されたら終了
そしてForm上に今までの最大値と合計を表示させる
というプログラムを作ってたのですが
最大値のところがうまくいかないので教えてほしいのです
たとえば -8 -5 0と入力した場合
最大値0 合計-13になってしまうのです
これを0を含まずに 最大値-5 合計-13となるようできませんでしょうか?
よろしくお願いします
554デフォルトの名無しさん:2005/09/22(木) 05:27:11
Visual Studio 2005、Windows Vistaの発売が迫り、VB6.0もその役目を終えようとしていますNE!
このスレにもほたるのひかりが流れてきました☆
残っているのはftgbyhふじこ、;だけです><

もう閉店なんだYO!
(・∀・)カエレカエレ!!
555デフォルトの名無しさん:2005/09/22(木) 06:56:00
何年前からVB6が役目を終えようとしているといわれたっけな?
556デフォルトの名無しさん:2005/09/22(木) 07:13:22
デスクトップアイコンを非表示にするAPIを知りませんか?
557デフォルトの名無しさん:2005/09/22(木) 07:15:50
TEST
558デフォルトの名無しさん:2005/09/22(木) 09:26:39
VB6でマルチスレッド、大昔のVBマガジンで記事あったよね。
とりあえず出来る程度の。

そもそもMSが保証なんてしてないし、VBで使用するオブジェクトがスレッドセーフな保証なんて一切ないし。
559デフォルトの名無しさん:2005/09/22(木) 09:43:44
vistaやxp64にインストール出来るのか!
VB6はこの先生きのこれるのか!
560デフォルトの名無しさん:2005/09/22(木) 10:59:53
開発環境はWindowsXPまでは保証されてる。
ランタイムの動作はVistaまでは保証されてる。
当面は生き残ってるだろ。
それ以降は、VirtualPC推奨だ。
561デフォルトの名無しさん:2005/09/22(木) 11:18:56
VB6の後継って出ると思いますか?
このまま消え去るとは思えないのですが
562デフォルトの名無しさん:2005/09/22(木) 11:27:19
>>561
たぶんこのまま消えるよ
とても後継とは言えないVB.NETを後継ってことにしてね
563デフォルトの名無しさん:2005/09/22(木) 20:31:29
VB6の後継はVB.NET
これが真実

真面目な話し2005ではオブジェクト思考がまったく分からない
糞エンジニアもどきにも使える様に、
言語仕様が変更されているから安心しろ。
564デフォルトの名無しさん:2005/09/22(木) 23:45:26
ということにしてVB6ユーザを取り込もうというわけだ。
OOPが全くわからなかったらやっぱり使えないさ。
565デフォルトの名無しさん:2005/09/23(金) 07:51:55
任意のフォームでAltキーを組み合わせたVBのキーイベントを発生させる方法を教えてください
環境は 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 キーを認識させられるのでしょうか?ご教授ください
566デフォルトの名無しさん:2005/09/23(金) 08:54:46
普通にSendKKeysじゃダメなの?
567565:2005/09/23(金) 09:12:37
>>566
ありがとうございます
SendKKeysは知らないのですが、おそらくSendKeysのタイプミスですよね?
その前提で考えますと、SendKeysではアクティブなフォームにしか送信できないのでダメなんです
あくまでも任意のフォームに送信したいんです
568デフォルトの名無しさん:2005/09/23(金) 09:58:30
だから「任意のフォーム」をアクティブにしておいてからSendKeys使うだけでは?
SPY++でメッセジー観察したのなら、単純にこのメッセージを送ればいい、
という訳にはいかなそうなのはわかりそうなもんだと思うんですが。

だからこそSendKeysなりSendInput(これはWin32API)なんてのが用意されているわけでしょ。

何で手動でSendMessageすることに固執するのかわからないけど、
仮に対象が他のアプリのウィンドウだとしても
どのみちウィンドウハンドルを取得可能であることが前提になるわけだから
SendKeysで何の問題もないと思うんだけど。(SetForegroundWindow)
569565:2005/09/23(金) 10:13:04
>>568
ありがとうございます

>単純にこのメッセージを送ればいい、 という訳にはいかなそう
すみません、検討も付かないのですが、具体的にはどういうことなのでしょうか?

>何で手動でSendMessageすることに固執するのかわからないけど、
手段は他の方法でも構わないのですが、任意のウィンドウを指定できないのが困るんです
たしかに直前に無理やりActiveにしてしまえばSendKeysでも出来ますが
それではウィンドウを切り替えたくない場合や、非表示のウィンドウに送れません
570522:2005/09/23(金) 21:34:28
>>545

亀レスすみません。こちらは動きますよ?
c_strCSVFileNameとc_strXLSFileNameをデスクトップにもともと存在しているファイルに設定しておいてますが。

それで、動くようにはなったんですが、EXCEL.EXEが起動しっぱなしになってしまうんですが・・・
VBを閉じればちゃんとEXE終了するんですが・・・。おかげで、二度目ボタンを押したとき動かないんですよね・・・
ちゃんと、quitもしてるのに・・・なんででしょうか?
571デフォルトの名無しさん:2005/09/23(金) 22:03:26
572デフォルトの名無しさん:2005/09/24(土) 16:26:55
質問じゃなくて、VB6も暇そうなんでw
既出かも知れんけど、昔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プロクシのチェンジわかるヤシいる?
573デフォルトの名無しさん:2005/09/24(土) 22:27:46
10進を16進に換算するのはどうすればいいですか。
574デフォルトの名無しさん:2005/09/24(土) 22:30:04
>>573
HEX
575デフォルトの名無しさん:2005/09/24(土) 23:59:39
おい!おまえら!
VBやってて良かったと思ってますか?どうか教えてください
576デフォルトの名無しさん:2005/09/25(日) 00:08:52
>>575
スレを浪費するだけの愚かなアンケートをするな
577デフォルトの名無しさん:2005/09/26(月) 04:55:57
InputBoxに1が入力されたら終了して
Formに最大値と合計を表示するプログラムを作ってみました
でも、ここで問題が
たとえば -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
578デフォルトの名無しさん:2005/09/26(月) 05:02:31
>>577
Private 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ならループ抜けるようにするか。
579デフォルトの名無しさん:2005/09/26(月) 05:12:36
>>578
レスありがとうございます
試してみたらちょっとだめでした(´・ω・`)

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で終わらせる方法教えてほしいです
580デフォルトの名無しさん:2005/09/26(月) 06:24:20
>>579
Do
 a = Val(InputBox("0で終了", "タイトル"))
 If a = 0 Then Exit Do
 If a > b Then
  b = a
 End If
 c = c + a
Loop
581580:2005/09/26(月) 06:44:05
>>579
間違ってるのはそこじゃなかった。最大値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
582デフォルトの名無しさん:2005/09/26(月) 08:42:39
教えてください。

VB6にて
画面上に常に線を引くプログラムを作りたいのですが
可能でしょうか?
他のソフトを起動したり何も起動していないときでも
常に画面上の一番手前に線を引きたいのです。

宜しくお願いします。
583デフォルトの名無しさん:2005/09/26(月) 09:22:25
>>582
可能
584デフォルトの名無しさん:2005/09/26(月) 09:55:51
>>583
可能ですか
やり方教えてください。
フォームに線を引いても他のソフトを
開くと下に行ってしまって
上手くいきません。

お願いします。
585デフォルトの名無しさん:2005/09/26(月) 11:47:14
VBScriptに関する質問です。

データアクセスページでパラメータクエリー”システムセレクト”を読み込みます。

”システムセレクト”*********************

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
586522:2005/09/26(月) 12:41:52
>>571
ありがとうございます。読んで勉強してきます。
587デフォルトの名無しさん:2005/09/26(月) 16:53:00
>>584

つ[ >>1 ]

つ[ ttp://www.google.co.jp/ ]
588デフォルトの名無しさん:2005/09/26(月) 17:38:27
>>587
知らないなら黙っててくれませんか?
589デフォルトの名無しさん:2005/09/26(月) 19:09:14
↓以下何事もなかったように再開
590デフォルトの名無しさん:2005/09/26(月) 19:19:55

▼現在未解決の質問

 計 0件



では、次の方どうぞ
591582:2005/09/27(火) 08:04:14
>>587

>>1を見ても、検索しても
わかりませんでした。
APIを使うのかなと思い調べてみたんですが
駄目でした。
わかりやすいヒントだけでもお願いします。

因みに>>588は私ではありませんが
知っているなら教えてください。

宜しくお願いします。

592デフォルトの名無しさん:2005/09/27(火) 08:27:59
>>591
知ってるが
お前のメル欄
気に入らない
593582:2005/09/27(火) 08:32:44
>>592

LineToてやつを使うんだろうな
と思ったのですが、
常時一番上に表示させる方法が
わかりません。

メル欄は癖です。>>592や他の皆さんが
禿げだと思っているわけではありません。
気分を悪くされたのであれば
申し訳ございませんでした。
594デフォルトの名無しさん:2005/09/27(火) 08:42:36
禿が気になるお年頃のおいらとしては
おいらを指して言ったんじゃなくても
非常に気分を害したので知ってるが教えない

次から質問時は気を付けるこった
595582:2005/09/27(火) 08:58:31
禿を気にしない方
もしくは>>593での謝罪で
許してもらえる方いませんか?

596デフォルトの名無しさん:2005/09/27(火) 09:18:30
>>582
ヒント:常に手前に表示
597582:2005/09/27(火) 09:56:26
>>596
心の広い方ありがとうございます。
ウィンドウを常に手前に表示するというのは
解るのですが、LineToにてデスクトップ上に
引いた線を常に表示させる方法が
解りません。他のソフトを起動すると
引いた線が消えてしまいます。

Timerを使って再描写させるとそれっぽく
なるのですが、、、

598デフォルトの名無しさん:2005/09/27(火) 10:13:05
>>582
やりたいことがよくわからんが、デスクトップに直接描画しなきゃいけないのかい?
それならデスクトップのウィンドウをサブクラス化してWM_PAINTを捕捉すりゃいいでない?

599582:2005/09/27(火) 10:31:42
>>598

お返事ありがとうございます。
やりたいことの説明が解りにくくて
申し訳ございません。

やりたいことは、デスクトップ上に
常に線を引きたいのです。
定規を使って液晶に線を引いても
良いのですが、ずれてしまうと(微調整をしたい)
やり直しがきかないのでは?と思っています。

Timerで再描写の方法だとチカチカして
見づらいです。
600デフォルトの名無しさん:2005/09/27(火) 11:36:17
透過したウィンドウに線引いて、最前面に出せば?
イベントどうするかは別途調べてね、透過で調べればやりたいようなことは芋づるで出ると思うけど。
ちょっと前でぐぐれっていう人がいたけど、それは正しい。
ある程度ここで聞いたキーワードでグーグル様の神託受ければ、芋づるで大体調べがつく。

あと、Vectorに画面用の定規があったような。
ウィンドウでフローティングした定規。
601デフォルトの名無しさん:2005/09/27(火) 11:44:56
マジレスすると>>582

ttp://www.ne.jp/asahi/nagoya/ahomaro/builder/cpb-050.html

見たいな事が遣りたいんでないか?

GetDC(0) でデスクトップ全体(起動中のウィンドウ含む)のDCを取得できるよ
再描画はデスクトップは同プロセスに含まれないからサブクラス化は出来ないんでフックするの
フックプロシージャは別プロセス限定でDLLに書かなきゃいけない規約がある。
Cコンパイルする環境あるか?
602デフォルトの名無しさん:2005/09/27(火) 12:04:38
お座りマルチ、ナツカシス(´・ω・`)
603デフォルトの名無しさん:2005/09/27(火) 12:53:28
604デフォルトの名無しさん:2005/09/27(火) 13:02:42
おまいら今日はイヤに優しいな
605デフォルトの名無しさん:2005/09/27(火) 13:27:51
本当に優しい方ばかりですね。
フォームを透過させるという
発想が無かったので
検索してませんでした。

>>601
Cコンパイルする環境はありません。
>>601 >>603も見てみます。

ありがとうございました。
606デフォルトの名無しさん:2005/09/27(火) 22:56:04
作成したプログラムを配布するとき
相手にランタイムのインストールやsetup.exeを使ったインストールをやらせたくないんだけど
作成したプログラムのフォルダに、これから使用するであろうdllを置くことはできないのでしょうか?
607デフォルトの名無しさん:2005/09/27(火) 23:33:04
>>606
プログラミングの前に日本語勉強した方がいいような。。
その文章で君の質問の意図がわかる奴がいたら、そりゃエスパーだわw
608デフォルトの名無しさん:2005/09/27(火) 23:44:28
>>607
ゴメンポ('A`)
VBの画面の
「ファイル」→「project.exeの作成」
で作成したファイルのみで配布して起動させることはできなのでしょうか?
ってことです
609デフォルトの名無しさん:2005/09/27(火) 23:47:06
>>607
できん
610デフォルトの名無しさん:2005/09/28(水) 00:11:58
いや、ユーザーのシステムにランタイムが入ってるって前提なら
それで必要十分だよ。
VB製のフリーソフトなんて大抵そうじゃん。
動かなかったらベクターでランタイムあさってインストールしてくださいってね。
611デフォルトの名無しさん:2005/09/28(水) 00:12:50
dll使わなければ良い。
612デフォルトの名無しさん:2005/09/28(水) 00:15:08
613デフォルトの名無しさん:2005/09/28(水) 00:27:12
>>612は何が言いたいんだろうねえ。
ひょっとして>>612の環境じゃVBランタイムはdllで、しかも各プロジェクトフォルダに
入ってるのかな。

これぞVB厨クオリティw
614デフォルトの名無しさん:2005/09/28(水) 00:31:36
>>613
頭大丈夫?
615デフォルトの名無しさん:2005/09/28(水) 00:59:06
vb2ならできたかも
616606:2005/09/28(水) 01:16:00
>>607-615
色々ありがとう
やっぱりだめか〜
       |
   \  __  /
   _ (m) _ピコーン  
      |ミ|
   /  .`´  \  そうだVB.netを勉強すればいいんだ(きっと
     ('A`)    そうすればdllなんて ・⌒ヾ(*´_`)
     ノヽノヽ
       くく
617デフォルトの名無しさん:2005/09/28(水) 01:21:47
>>616
netがあればなんでも出来る!
618デフォルトの名無しさん:2005/09/28(水) 06:50:25
VB.NETで作成したプログラムを配布するとき
相手に.Net Frameworkのインストールやsetup.exeを使ったインストールをやらせたくないんだけど
作成したプログラムのフォルダに、これから使用するであろうdllを置くことはできないのでしょうか?
619デフォルトの名無しさん:2005/09/28(水) 06:54:53
できない。
620デフォルトの名無しさん:2005/09/28(水) 07:46:11
>>606
1.regsvr32で使うDLLを一つずつ登録する。
  (VBランタイムは手動でインストールする。)
2.DLLを登録するだけのsetup.exeを作る。
  (VBランタイムもsetup.exeに含める。)
621デフォルトの名無しさん:2005/09/28(水) 07:55:44
あ、しまった。
>>606のDLLはActiveX DLLじゃなくて標準DLLかな。
622デフォルトの名無しさん:2005/09/28(水) 08:00:57
そこでDelphiですよ
623デフォルトの名無しさん:2005/09/28(水) 08:10:43
>>616
だから必ずしもダメじゃないってw
どういう読解力してんのよ。
624デフォルトの名無しさん:2005/09/28(水) 21:36:14
はじめてきました。

プログラミングをしようとVB6.0を押入れから出してきました。
(今ではnetが出ているんですね、orz)

で、勉強をしようと思うのですけど
雑誌類は無いのでしょうか?

昔BASICマガジンなどで一画面プログラムとか一行プログラムとか超勉強になったのですが
オークションでも探そうと思っています。
お勧めの雑誌などがございましたらどうかお願いします。
625デフォルトの名無しさん:2005/09/28(水) 21:39:17
>>624
最終的には何がやりたいんだ?
626デフォルトの名無しさん:2005/09/28(水) 21:42:03
超田舎でなければ、大型の古本屋に行けば攻略本が手にはいるよ。
低下2000円超でも100円前後で買えて超経済的w
627デフォルトの名無しさん:2005/09/28(水) 21:52:48
スレ違いかもですが

3年少し前から、会社でなし崩しにVB6の勉強をはじめて、今も開発職です
他の言語には、他にエキスパートいっぱいいるわけだし、
30近い年で今更つまみ食い始めてもな・・・という気分です

.netや2005など、新しいの出てますが・・・
VB6やっててWebでTipsなど探しているときに、
「.netは6と違ってこんなにべんりー」的な紹介に結構出くわします

よくVBは死んでゆく言語と言われ、不安増すばかりなんですが、
今後VBをより掘り下げていくより、やっぱり他言語を学習した方が
身のためでしょうか

みなさんは、どうお考えでしょう
628デフォルトの名無しさん:2005/09/28(水) 22:10:03
>>627
他の言語も勉強すべき。
ってかVB6は脇役(か中身の無い主役)で本領発揮するタイプだよ。
64ビット全盛な時期になったらVB6の実行環境は死滅するかVirtualPCに押し込められるんじゃね?

色んな意味で中途半端なVB6に居座るよりは、基礎も整ってるしライブラリも豊富な.NETに移行したほうがいい。
.NETでなくてもいいけど、メインがVB6ってのは止めたほうがいい。
使い捨ての仕事しか無いよ。
629デフォルトの名無しさん:2005/09/28(水) 22:11:28
VBしかできないなんて信じられない。
630デフォルトの名無しさん:2005/09/28(水) 22:23:03
まあ、基本が出来てる人なら新しい言語を学習する苦労なんて些細なもんだろうな。
逆に言えば言語覚えた程度の能力なんて糞拭く紙にもならないチンケなもんだYO!
業務で培ったのノウハウのほうがずっと大事なんだから、それを腐らせないように新しいものどんどん取り込んでけ!
とっとと浮気始めたほうがいいYO!
631デフォルトの名無しさん:2005/09/28(水) 22:38:50
>>625
勉強です。

書籍は8冊・図書館で3冊読みました。

そういえばプログラムの雑誌類はまだ見ていないと思いまして。

632デフォルトの名無しさん:2005/09/28(水) 22:39:45
2・3冊雑誌をあげていただければと、どうかお願いします。
633デフォルトの名無しさん:2005/09/28(水) 22:39:47
Printer.Printでフォントの背景色を指定できませんか?
Printer.BackColorとか、Printer.Font.BackColorなんてプロパティがありません。
634633:2005/09/28(水) 22:45:09
検索語を変えたら、これが見つかりました。
リンク先が消えてるので、さらにぐぐらないといけないけど。
Printer.FontTransparent = True
iBKMode = SetBkMode(Printer.hdc, TRANSPARENT)
Printer.Print "テスト"
635デフォルトの名無しさん:2005/09/28(水) 23:02:27
>>631
「Visual Basic6.0 300の技」が暇つぶしできていいんじゃね?
プログラミングの基礎学びたきゃ.NETの本に移ったほうがいい。VB本でまともに書いてるやつ見たことね。
636デフォルトの名無しさん:2005/09/28(水) 23:20:50
>>635
本じゃなくて雑誌月刊誌です。
637633:2005/09/28(水) 23:46:54
できますた。ああ、まんどくさ。
638デフォルトの名無しさん:2005/09/29(木) 01:59:01
このスレたまに覗くけど、大半の回答者が社会的訓練を受けていないな。
だからプログラマなんてやってんだろうけど( ^Д^)
639デフォルトの名無しさん:2005/09/29(木) 07:52:48
ム板の半分はニートで出来ています。
もう半分はベーマガ残党
640デフォルトの名無しさん:2005/09/29(木) 07:55:20
マ板っぽくなってきたな
641デフォルトの名無しさん:2005/09/29(木) 15:36:59
Win64では VBだろうがCだろうがWin32アプリは全部動かないよ
XP64BitではデフォルトでWin32エミュレータが入っているから動くんだよ

仮にWin32を切り捨てれば 今まで市場で回っている全てのWin32アプリが動かなくなるよ
たとえWindowsOSが完全に64Bitに移行してもWin32は相当長く続くな…と予想

今後のVBは64Bitへも対応はまず無いと思うので、それだけは頭においておいた方がいいよ
642627:2005/09/29(木) 16:53:17
VB6は卒業してVB.net
将来的にALL64Bit化を考慮して、それに対応する言語

やっぱり、この2つはやっておいた方が、絶対にいいってことですよね
勉強時間を考えると胃が痛くなりそうですが、頑張ってみます
ありがとうございました
643デフォルトの名無しさん:2005/09/30(金) 09:45:54
ユーザーコントロールって、ウィンドウのように表示させることはできますか?

 ↓userctl
┌─┐
│  ├────┐  任意のタイミングで、このように表示させるような
└┬┘      │  ことってできますか?
  │ Form   .│
  │        │
  │        │
  └─────┘
644デフォルトの名無しさん:2005/09/30(金) 11:07:43
>>643
フォームをもひとつ準備してそこに貼り付けないと無理。
645デフォルトの名無しさん:2005/09/30(金) 15:59:47
>>644
いや、別にそんなことしなくても出来るぞ
試しにこんな感じでコード書いて見れ
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 上に置きたいときに実行
646デフォルトの名無しさん:2005/10/01(土) 02:51:33
>>645
なるほどNULLにするとデスクトップにコントロールが張り付く形になるのか。
その場合にFormの上にオーバーラップさせるのはできるのかな?
試してみたいが環境が無い。
647デフォルトの名無しさん:2005/10/01(土) 06:34:17
>>646
上に表示するだけなら↓だが、一緒に移動したいならサブクラス化すればおっけー
SetWindowPos(UserControl1.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)
サブクラス化できないか、タブオーダーが効かない副作用を嫌うならば、リージョンウィンドウかなぁ

しかし質問者の >>643 には、どちらも荷が重いだろうことを察すると、
透明ウィンドウが一番簡単かつ手軽なので、この方法をお薦めしとく
ただし、タイトルバーをつけると、とってもかっこ悪いことになるw
http://megaup.ddo.jp/upload/data/up0328.zip
648デフォルトの名無しさん:2005/10/01(土) 07:32:54
IEの操作で質問です

<select class="CLASS1" name="NAME2">
<option value="12345">しょうゆ
<option value="98765" >とんこつ
<option value="23232" >塩
<option value="93793" >味噌
</select>

このようなセレクトボックスがあるとしてvalueの方で値を取得したり
選択させたりすることはできるのですが、
逆に表示されている「しょうゆ」や「とんこつ」などの文字列で
自動的に選択させたりすることはできますか?
649デフォルトの名無しさん:2005/10/01(土) 07:42:54
>>647
最近勉強し始めた漏れからしたらそんな感じのを
さっさか作れるヒトが凄いと思う土曜の朝 orz
650デフォルトの名無しさん:2005/10/01(土) 12:30:52
PerlとC++を少々かじった程度の者ですが
現在ネット環境のない部屋で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が定義されていません。』と怒られてしまいます
651デフォルトの名無しさん:2005/10/01(土) 12:38:50
>>650
Structureを使うのはVB.NET。
VBではType。
使い方はヘルプで検索。
652デフォルトの名無しさん:2005/10/01(土) 12:55:45
>>651
ありがとうございました
配列を戻り値に使う方法は不明のままですが
構造体の方は解決いたしました
構造体を戻り値に使って問題を解決できそうです
即レス ありがとうございました
試していたので返信が遅れてしまい申し訳ありませんでした
653デフォルトの名無しさん:2005/10/01(土) 13:53:44
>>652
配列の引数&戻り値はVariant型で受け渡す
654デフォルトの名無しさん:2005/10/01(土) 14:27:09
>>648
試してないけど、たぶんこれでいけると思うよ
とんこつを選択する場合ね

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
655デフォルトの名無しさん:2005/10/01(土) 14:38:17
>>653
おいおい、引数も返り値も普通に配列で大丈夫だよ。
VB4とかは知らないけどねw
656デフォルトの名無しさん:2005/10/01(土) 15:12:03
>>655
いや分かってるけど650の超初心者ぶりを考えて
全部Variantにしときゃとりあえず動くだろうと思ったんだがなぁ
そういう突っ込み入れられるんなら、1行ですむんだから宣言書いてやりゃいいのに
657デフォルトの名無しさん:2005/10/01(土) 15:23:46
> そういう突っ込み入れられるんなら、1行ですむんだから宣言書いてやりゃいいのに
そう思うならお前が(ry
658デフォルトの名無しさん:2005/10/01(土) 15:28:58
>>657
だからオレは全部Variantにしとけといってるんだよ
659デフォルトの名無しさん:2005/10/01(土) 15:44:16
一行ですむといったのはお前。一行ですむのだからVariantではなく、その宣言を書けば良い。
660デフォルトの名無しさん:2005/10/01(土) 15:45:14
それに超初心者だと思うのなら、なおさら正しい答えを書かないといけない。
661デフォルトの名無しさん:2005/10/01(土) 15:57:15
>>660
いや全部Variantにしとけばいいw
662デフォルトの名無しさん:2005/10/01(土) 16:00:38
とりあえず、今までのやり取りを見て
「全部Variantにしとけばいい」が
馬鹿な答えであるということはわかりました。
663デフォルトの名無しさん:2005/10/01(土) 16:32:47
ん〜 655 はプライドがよほど大事のようだな
構文知らないんなら、口出ししなきゃよかったのにね
Private Function 関数名(引数() As String) As String()
これ引数にも戻り値にもString型の配列入れるばあいね
664デフォルトの名無しさん:2005/10/01(土) 17:07:29
初心者ならVariantは止めた方がいいよ
何でも平気っていうVariant癖が付くよ
初心者ならなおさら型を意識した方がいいと思うよ

C++の経験があるなら配列は使わないで その型専用のコレクションクラスを作って クラスごと受け渡す
なんて方が分かりやすいのかな?
665デフォルトの名無しさん:2005/10/01(土) 17:08:47
VBばっかやっててCに挑戦するとかなり面倒に感じるね。
666655:2005/10/01(土) 19:32:23
>>663
???
俺は655以降一度もレスしてないけど。。
構文知ってるとか知らないとかずいぶん低レベルな争いだなあw
まあどうでもいいんだけどさ。

ちなみに、もう数年VBさわってないんでうる覚えだけど、
VBって確か構造体を返すメソッドを外部のクラスに公開するときに
妙なトリックが必要だったような。。

構造体自体はPublicでいいけど、メソッドはFriendにするんだっけ?
667650:2005/10/01(土) 23:14:55
皆さん丁寧にありがとうございました
皆様のアドバイスのおかげである程度 納得できるコードになってきました

質問の連投で申し訳ありませんが
VBAで他言語のevalに該当する関数は無いでしょうか?
checkbox_【n】.enabled = VALUE(n)
というような処理を行いたいのですが
チェックボックスを配列関係にする事なく解決したいです
668デフォルトの名無しさん:2005/10/01(土) 23:16:03
>>667
VBAは別スレ
669667:2005/10/01(土) 23:50:43
>>668
大変失礼しました
VBAの質問スレが見あたらなかったので
つい こちらで質問してしまいました

少し様子を見させて頂いて スレ立て依頼をやってみます
しかし、VBA専用の質問スレなんて利用者いるのかなぁ…
670デフォルトの名無しさん:2005/10/01(土) 23:55:00
671デフォルトの名無しさん:2005/10/01(土) 23:58:04
>>669
喧嘩売ってんの?
672デフォルトの名無しさん:2005/10/01(土) 23:59:50
>>670
うはは
落ちてる落ちてる
単発質問スレになっても良いからスレ立ててきなよ
まぁ 質問の内容的にはVBの分野なんだけどね
(VBと同じ方法だよ)
673デフォルトの名無しさん:2005/10/02(日) 00:01:13
>>672
スマンキャッシュ読んでた
674669:2005/10/02(日) 00:15:15
>>671
私のわがままが発端で気分を害されたようで
大変申し訳なく感じておりますが
なぜ(?_?)
あの文章のどこに怒られているのか理解できないのですが。
しばらく 様子を見させて下さい
↑また気分を害されたら申し訳ありません
675デフォルトの名無しさん:2005/10/02(日) 00:24:27
おいおい。誰がみても、
利用者いるのかなって、VBA使ってる人に失礼だろ・・・そりゃ怒るわ。
676655:2005/10/02(日) 00:26:05
幼稚な奴はほっとけって。一人でキャンキャン吼えさせておけばいい。
evalって与えられた文字列をコードとして実行するって奴かなあ。
そういうのはVBには当然ないとして、VBAにもなかったような気がする。
というか、オーソドックスに配列で処理したら何かまずいんだろうか。
677デフォルトの名無しさん:2005/10/02(日) 00:28:02
VBAスレ要らんだろ
VB6でも出来る処理に関しては回答付くけど、そういうのはここでいいし
Excel独自のことは答えられずExcel総合相談所に誘導するだけで
AccessやWord独自の質問はほとんど放置
はっきり言ってVBAスレとしては機能してない
678デフォルトの名無しさん:2005/10/02(日) 00:28:12
>>675
でも、vba使う奴なんかいるのか?
そりゃ去年vbaでバッチプログラム作ったけどさ
679デフォルトの名無しさん:2005/10/02(日) 00:46:34
MACなんてつかわねえよなー
隣の部署じゃ使ってるけどさ

ってノリ?
680デフォルトの名無しさん:2005/10/02(日) 01:04:45
>>667
チェックボックスを配列関係にする?
えぇ?
つまりプログラム上で各ボタンにユニークな番号を与えて
その番号に応じた一括処理とかできるの?
すごい便利そうだ
是非やり方を伝授してくれたまえ
681デフォルトの名無しさん:2005/10/02(日) 09:21:29
このスレを「Eval」で検索
682デフォルトの名無しさん:2005/10/02(日) 11:14:01
>>681
こういう人を「したり顔の馬鹿」というんだよなあ。。
683デフォルトの名無しさん:2005/10/02(日) 13:11:31
俺のVBのイメージ
柱、屋根、家具などが用意されてる家
利用者が試行錯誤しながら(でも直感で柱は柱と分かる)組み上げるだけで
目的の家が建つ

Cの場合は土台のみが用意されていて
利用者が自分のセンスで自由に家を建てる

アセンブラは山そのものと鉄の固まりがごろんと転がってて。好きにしろって感じかな

Perlは材木の変わりに軽くて加工しやすい発砲スチロールと段ボールが広場にある感じ

PHPは特定の利用に特化したプレハブかなぁ
684デフォルトの名無しさん:2005/10/02(日) 13:13:49
誤爆った
すまん
685デフォルトの名無しさん:2005/10/02(日) 15:51:38
>>667
配列で処理したくないってのは、コントロール配列にするのが嫌ってことかね?
それとも、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
そういう煽りはいくない
686デフォルトの名無しさん:2005/10/02(日) 16:13:40
>>685
ありがとうございました
パソコンの中に他の人が作ったファイルがありまして
それを真似して解決しました
【object(だったかな)】.("hoge" & n).value = VALUE
てな方法(多分 初歩の記述)が使えました

配列にするのが嫌だったのは
オブジェクト名を変える必要があると思ってて
それまでのコードを書き直すのが面倒だっただけです
失礼しました
687デフォルトの名無しさん: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
688デフォルトの名無しさん:2005/10/02(日) 21:22:36
>>687
処理2の後にExit Sub
689デフォルトの名無しさん:2005/10/02(日) 23:51:35
>>688
むしろ処理1の直後にプロシージャCを移動すべきではないだろうか
690デフォルトの名無しさん:2005/10/03(月) 07:32:20
If txtA.text<>XXX Then
 処理2
exit sub
End if

処理1

プロシージャC
691デフォルトの名無しさん:2005/10/03(月) 07:44:27
>>690
ネタだよね
まさか、本気じゃないよね
692デフォルトの名無しさん:2005/10/03(月) 07:48:04
>>691
どこかおかしいのか?
693デフォルトの名無しさん:2005/10/03(月) 08:44:05
>>692
Else使えよという話。
694デフォルトの名無しさん:2005/10/03(月) 09:11:43
たったその程度で間違いでもないのに、ネタだよね本気じゃないよね あつかいすんのかよw

本当はおまえ。どっかみ間違えたんじゃねーの?w
695デフォルトの名無しさん:2005/10/03(月) 09:34:51
else使えよ
exit sub使うなよ
不一致条件式ではなく一致条件式使えよ
696デフォルトの名無しさん:2005/10/03(月) 09:40:43
別に exit subつかってもいいじゃん
697デフォルトの名無しさん:2005/10/03(月) 10:10:44
Exit Sub使った方がいい場合もあるが
今回の処理は使わない方がいいな
そもそも、使う必要が全く無い
698デフォルトの名無しさん:2005/10/03(月) 12:34:10
別に使ってもいいじゃん。
699デフォルトの名無しさん:2005/10/03(月) 12:36:59
教条主義的な馬鹿と、単なる自分の「慣れ」に過ぎないものと
万人にとっての可読性の区別がつかない馬鹿が多いな。

そんなもんどっちでもいいだろ。
プログラミングは工学であってイデオロギーじゃねえんだよ。
機能を必要十分に果たすのであればどちらでも選ぶところはない。
700デフォルトの名無しさん:2005/10/03(月) 13:12:00
まあ、2の10乗を出すのに
2 ^ 10と書くのも2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2と書くのも
ループで乗算するのも自由だわな。
機能を必要十分に果たすのであればどちらでも選ぶところはない。
701デフォルトの名無しさん:2005/10/03(月) 13:24:18
VB.6.0なんですが、ソースコードに行番号を表示することはできないのしょうか?
702デフォルトの名無しさん:2005/10/03(月) 13:35:03
>>699
>プログラミングは工学であってイデオロギーじゃねえんだよ。
違うね、90年間かけて探し出した俺の答えは
『プログラムはオナニー』なんだよ
君は【2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2】なんて数式でイク事ができるか?
俺は変態じゃないから そんなきったない数式じゃ勃ちもしないね
703デフォルトの名無しさん:2005/10/03(月) 13:39:14
わろすわろす
704702:2005/10/03(月) 13:51:05
やべぇ。妙な所でWキーしちまった
90年って俺 何歳だよ
分かってるとは思うが 9年間な
705デフォルトの名無しさん:2005/10/03(月) 14:09:28
>>704
もう一度 自分の歳を考えてから発言した方がいいですよ
706デフォルトの名無しさん:2005/10/03(月) 15:13:21
ここはひとつ、原点に戻って考えるんだ
プログラム初心者に、とりあえず教える方法としてどうかということだ
とりあえず、よく分かってないうちは goto 使うなと教えるだろ
そう考えれば 695 の内容は、基本中の基本だろう
699 みたいな意見は、質問スレの回答としては、初心者を惑わすだけで無意味だ
質問者に実力が付けば、おのずと自分で模索していくだろうしな
707デフォルトの名無しさん:2005/10/03(月) 15:20:46
どっちでもいいじゃん。
708デフォルトの名無しさん:2005/10/03(月) 15:30:29
質問に対する回答なのに、どっちでも良いってw
回答する気ないなら、ROMってろよ
709デフォルトの名無しさん:2005/10/03(月) 15:31:54
どっちでもいいも回答の一つ。
710デフォルトの名無しさん:2005/10/03(月) 15:50:29
ただの入力検査で txtA.text=XXX 以外をはじくんだから
冒頭ではじくような分かりやすい >>690 のやり方が普通だと思うけどな。

処理1が長くなったり、プロシージャC以外の処理を追加する場合を考えて俺ならそうする。
711デフォルトの名無しさん:2005/10/03(月) 15:55:02
覚えておくといい
普通は途中で関数から抜けるソースは書かないんだよ
712デフォルトの名無しさん:2005/10/03(月) 16:01:51
そんな普通は無い。
713デフォルトの名無しさん:2005/10/03(月) 16:05:57
途中で関数を抜けるのは、whileループを
breakで抜けるのと大差ありません。
714デフォルトの名無しさん:2005/10/03(月) 16:06:23
わからんなぁ。入力検査なんだから、抜けさせるのが目的なんだろう。

IF A=B Then




Else
  
 ここで入力ミスの処理

End If

だと長くなるし、何やってんのかわからんくなるぜ。


715デフォルトの名無しさん:2005/10/03(月) 16:08:57
>>714
しかもその条件が複数あると、ネストがどんどん深くなるしね。
本ばかり読んでかじった知識で言ってるだけで実戦経験すくないんじゃね?
716デフォルトの名無しさん:2005/10/03(月) 16:09:28
バカばっかりだなここ
プログラムで飯食ってる奴はさすがにいないだろうな
717デフォルトの名無しさん:2005/10/03(月) 16:10:15
>>710
趣味のソースではオレもたまにやるけど、
条件が複雑なエラーチェックでネストが4重超えそうなほど
醜いソースの時くらいしかやらないなぁ
そんな場合も、大抵じっくり考え直してみると
ネストしまくりの処理自体がアホだったりするしw
そもそも1段階のネスト嫌って Exit Sub はありえなス

>>714
いや、そんなに関数長くなるなら、そもそも組み方がおかしい可能性を疑うべし
718デフォルトの名無しさん:2005/10/03(月) 16:14:28
未だに出口は一つとか信じちゃっている奴がいるの?
719デフォルトの名無しさん:2005/10/03(月) 16:16:09
複数の人と開発する時はそうしてるよ
720デフォルトの名無しさん:2005/10/03(月) 16:22:35
出口は一つってGoto禁止原理主義者と同じ臭いがする。
721デフォルトの名無しさん:2005/10/03(月) 16:37:56
私的には、Exit Sub/Func禁止だけどGoto容認。
リソース開放処理をそこらじゅうにかかれるのは論外。
Try Catch Finally のThrowの代わりにGoto。
722702:2005/10/03(月) 17:28:22
いいね、いいねぇ〜
みんな 素敵なオナニーしてるじゃん
俺も負けないようにがんばるよぉ!

某言語の初心者用向けの本の中にコラムで
以下のような文があったのよ
>カレンダープログラムの中に皆既月食の表示をしようとしたが、
>その日付の取得方法が分からなかった
>筆者は 天文博物館に電話して、その計算方法を尋ねたが
>「かなり複雑で難解な計算が必要になりますよ」との回答だった
>筆者は「今後100年間の月食の日付は全て分かりますか?」と尋ねたら
>「表があるのでお送りします」と言われた
>筆者は、その表にある日付を全て データとして組み込み、満足した
>今でも あの方法は間違いでは無いと思っている

俺は、この作者を可愛そうだと思った
だって、そんな方法じゃ満足感は得られないっしょ?
723デフォルトの名無しさん:2005/10/03(月) 17:53:33
>>722
何が可哀想なの?
724デフォルトの名無しさん:2005/10/03(月) 19:13:55
目的が何かで満足を得られるかどうかは変わるでしょ。
難解な計算をして皆既月食の日を求めることが目的なら満足は得られないだろうけど、
カレンダーに皆既月食を表示したいだけなら目的は達成される。
725724:2005/10/03(月) 19:14:48
俺が言いたい事は、手段と目的を履き違えるなってことだ。
726702:2005/10/03(月) 19:36:32
でも、プログラムの楽しさって60%以上は
自力でアルゴリズムを導き出す時の達成感じゃない?

ゲームを作る時も、ゲームシステムとかルールとかを考えてる時は楽しくて
無茶苦茶張り切るよね?よ〜っし絶対に作ってやるぞ〜みたいな
でも、構想段階が終わってソース入力の段階に入ると一気にやる気が揮発しちゃうよね
それで、いつまでも完成しなくて結局中途半端なコードがいつまでも放置される事になるんだよね

「お前は プログラムを作成しろ。ただしサブルーチンと内部の細かい計算式はこちらで作っとく」
なんて言われたら、絶望しちゃわない?

727デフォルトの名無しさん:2005/10/03(月) 19:46:28
>>726
オマ、中学生ん時 慣れない連立方程式を解くの 大好きだったタイプじゃね?
でも、慣れてきて解くのが作業になった時には 面倒くさくて投げ出してたタイプじゃね?

自己ルール:質問が無いときは質問スレでsage雑談しても迷惑じゃないのでOK
※) ただしなるべくスレの内容に合う話題。
728デフォルトの名無しさん:2005/10/03(月) 20:08:16
>>726
車輪の再発明
お前はライブラリを使うな。

っていうか皆既月食の計算なんか
他人の力を借りずに自分でアルゴリズムを
見つけるとしたら天体観測から初めて何年かかることやら。
729デフォルトの名無しさん:2005/10/03(月) 20:40:12
自転やら引力やらまともに計算したらえらいこっちゃ
自力で解けとか言う奴はお前は解けるのか?って思うよな
730デフォルトの名無しさん:2005/10/03(月) 22:00:00
1.起動したら監視開始
2.変更受信したら処理>監視継続
3.プログラム終了と同時に監視終了

FindFirstChangeNotificationでハンドル作成、
WaitForSingleObjectで変更受信したら処理をさせてDoevents、
これをDoでループさせます
プログラム終了時に、FindCloseChangeNotificationでハンドルをクローズします

このやり方でファイルの変更監視のプログラムを作りたいのですが、
プログラム終了時に監視がどうしても抜けられなく、フォームのUnloadが通っても
監視のプロシージャに処理が戻ってきてしまいます

どうしたら、プログラム終了と同時に監視終了できるのでしょうか
731デフォルトの名無しさん:2005/10/03(月) 22:22:14
>>730
だからエスパーはいないって。あなたの文章イミワカリマセン。

ヒトにわかる文章かけない人間が、
ヒトよりずっと融通の利かないコンピュータのコードをかけるだろうか。
732デフォルトの名無しさん:2005/10/03(月) 22:28:20
わかんなきゃ黙ってればいいのに。
733デフォルトの名無しさん:2005/10/03(月) 22:35:07
「わかんなきゃ黙ってればいいのに。」しか言うこと無いなら黙ってればいいのに。
734デフォルトの名無しさん:2005/10/03(月) 22:38:47
>>732
ちゃちゃ入れるために監視してるの?w
随分暇か現実逃避してるんだか。

>>730
Unloadで何してるの?暗黙のフォームとか呼び出しをされるようなことしてない?
通貨、確実の終わらせたければEnd書いちゃえばいいじゃん。
735デフォルトの名無しさん:2005/10/03(月) 22:55:46
>>731
すみません・・・コピペしてきて自分でもあまりよくわかっていないものに
ついての質問でしたので・・・言葉もありません

>>734
監視の開始と終了をするFunctionプロシージャがありまして、
引数にフラグを設けています
Form_Load時にそのプロシージャを開始フラグで動かしまして、
Form_Unload時に終了フラグで動かす、
ということをやっています

終了フラグのときは、ループに行く前にFindCloseChangeNotificationを実行して、
Exit Functionで抜けるようにしています
そこで関数を抜けて、FindFirstChangeNotificationもWaitForSingleObjectも
通っていないはずなのに、Unloadが通った後になぜかいきなりループ内に戻ってきて
監視が継続されているのが、どうしても抜けられなくて・・・

Unload時にプロシージャを動かさず、Endを書いて強制的に終了、
というのはできたんですが、できたら監視を終了させて、その後でフォームを終了と、
キレイに流したかったので、質問させていただきました
736デフォルトの名無しさん:2005/10/03(月) 23:08:30
>>734
> 通貨、確実の終わらせたければEnd書いちゃえばいいじゃん。
やめろって。Unloadで終わらないってことはバグがあるってことなんだから。
バグにふたをせずにバグを直すべき。

>>735
FormのLoadとInitialize、UnloadとTerminateにDebug.PrintやMsgBox等をおいて
予期しないタイミングでイベントが発生していないか、
どこでそのイベントが発生しているか調べるべし。

そのとき、Debug.Print Form1.Nameとかせずに
Debug.Print "Form1"のように単純な文字列を使うべし。
(Form1.Nameのようにフォームのプロパティなどを書くと、
Form1がアンロードされていてもその場でロードしてしまうから)
737デフォルトの名無しさん:2005/10/03(月) 23:40:42
>>735
なんかまだ釈然としない文章だなあ。。
だから推測で答えるしかないけど、恐らくVBの基本が全然わかってない。

具体的にいうと、
>FindFirstChangeNotificationもWaitForSingleObjectも 通っていないはずなのに、
こうあるけど、ループをスキップすることと、ループを抜けることは全然違うよ。

最初に「監視の開始と終了をするFunctionプロシージャ」をコールしたときに
ループを開始してるんだよね?そのループを抜けてないんじゃないの?
738デフォルトの名無しさん:2005/10/04(火) 00:01:42
相変わらずこのスレはギャグか本気かわからん微妙なやつが沸いて面白いなw
>>687-729なんじゃこりゃww
739デフォルトの名無しさん:2005/10/04(火) 00:34:01
とりあえず、>>721だけは許せない奴だという事がわかった
仕事で一緒になったら金だけ持ってトンズラする
740デフォルトの名無しさん:2005/10/04(火) 00:36:04
>>721
> Try Catch Finally のThrowの代わりにGoto。
Throwの代わりはErr.Raiseだろ。
741デフォルトの名無しさん:2005/10/04(火) 01:25:28
今帰ってきました
みなさん、返信ありがとうございます
明日また、ひとつひとつ試してみます

>>737
すみません、お手数おかけします
はい、最初のループを抜けれてないんだと思います
それを、任意のタイミングで終了させたいときに、どうやったら抜けれるのだろう、と・・・
単純に、もう一度Function実行して、それがループに入る前に
FindCloseChangeNotificationを実行してしまえば、終われるのかと思っていたのですが、
どうも違ったようです・・
742デフォルトの名無しさん:2005/10/04(火) 02:32:05
>>734
>確実の終わらせたければEnd書いちゃえばいいじゃん
プログラムを強制終了すりゃいいってもんじゃないだろw

>>735
文章が支離滅裂で想像の域を出ないので想像だが
734も言ってるが、Unload抜けた後、フォームにアクセスしてるんじゃないか?
743デフォルトの名無しさん:2005/10/04(火) 02:56:58
監視ループでExit Doしてないだけだったりしてな
744デフォルトの名無しさん:2005/10/04(火) 03:44:42
監視ループがDo~Untilだったりしてな
745730:2005/10/04(火) 09:40:13
おはようございます
先ほどこれで解決かな?というところまでできました
やっぱり物を考えるのは、夜中よりも、眠くても朝がいいみたいです・・・

問題は、
Unloadプロシージャを抜けたでも、フォーム起動時に実行した監視ループが終われず、
終了時にそのループを抜けるようにしたい場合、ループ内にどういう条件を挿入すれば
実現できるのか、ということでした
いただいたご回答を読みながらはじめて、なんとなくこういうこと?って気付いてきたもので、
最初からうまく説明できてなくてすみませんでした

いままで、引数やプロシージャレベルで何とかすることだけしか考えてなかったんですが、
モジュールレベルで開始・終了のフラグを持つことで、正常に終了できるようになりました

大変お騒がせしてしまって、申し訳ないです
本当にありがとうございました
746デフォルトの名無しさん:2005/10/04(火) 09:40:56
>>740
また脳みそ足り無そうな書き込みだな。部分だけ捉えて本質理解してない。
ErrをRaiseして、Finallyに該当する機能をどうやって実装するの?
エラーを通知することを問題視してないでしょ?元の>>721の書き込み。
絶対に通ることを保証される処理をどうやって記述するかを問題視してるわけで。

適切にモジュール化されてればGotoなんてほぼ不要だよ。
それでもしょうもない直しのときなどで考えるわけで。
747デフォルトの名無しさん:2005/10/04(火) 12:12:46
VBにはFinallyの概念が無いんから、Try Catch Finally にこだわる必要は無いだろ
748デフォルトの名無しさん:2005/10/04(火) 12:32:47
>>746
悪いけど「脳みそ足りない」のはむしろ君の方だと思う。
俺は740じゃないよ。
言ってること全然つじつまが合ってない。正直、意味不明。
あんまり無理に背伸びしない方がいいと思うよ。
749デフォルトの名無しさん:2005/10/04(火) 14:09:44
>>746
どこからFinallyがでてきたんだよ?w
>>721のどこをどうみてもThrowの代わりとしか書いてないぞ。
750デフォルトの名無しさん:2005/10/04(火) 15:18:24
>>749
>>721にきちんと書いてあるけど。
リソース開放の為、Try-Catch-Finallyって。

もしかして、ThrowしてもFinally保証されるっていう仕様を理解してない?
751デフォルトの名無しさん:2005/10/04(火) 20:28:54
質問させていただきます。
If 〜 Then を使って、
「もし文字列strがアルファベット(A〜Z)ならば」という条件を入れたいです。

確か >= とか <= という記号を使って表すことができたと思うのですが。
記憶違いかもしれません。
752デフォルトの名無しさん:2005/10/04(火) 20:50:55
条件が曖昧すぎ
比較対照の文字数は1文字なのか不定なのか
小文字は弾くのかどうか

つーかこのくらいググればいくらでも出てくるだろう
753デフォルトの名無しさん:2005/10/04(火) 21:01:28
If Asc('A`) <= str And str <= Asc('Z') Then

例えばこんなん?
754デフォルトの名無しさん:2005/10/04(火) 21:05:51
それならlikeの方が良くないか?
755デフォルトの名無しさん:2005/10/04(火) 21:06:37
あそこもツルツルに剃りあがる勢いで禿ワロタw
756デフォルトの名無しさん:2005/10/04(火) 21:14:11
('A`)

狙いすぎだと思いマスタ
757デフォルトの名無しさん:2005/10/04(火) 21:15:33
>>756
実はそれが書きたいだけでした。
758デフォルトの名無しさん:2005/10/04(火) 23:01:05
はじめまして。
VB6.0でキーボード、マウスの無操作時間を取得したいのですが、なにかサンプルはありませんか?
キーボードもマウスも触らない状態で放置しているとスクリーンセーバーが起動しますよね。
その放置している時間を取得したいのです。
759デフォルトの名無しさん:2005/10/04(火) 23:03:20
マウスが動くごとに時間取得して差をとったら良いとオモ
760デフォルトの名無しさん:2005/10/04(火) 23:04:47
子供向けのVBには放置プレー向けの道具は備わっていません。
761デフォルトの名無しさん:2005/10/04(火) 23:50:11
>>758
スクリーンセーバー実行までの待ち時間なら ISBN4-88337-198-0 の本に載ってる
762デフォルトの名無しさん:2005/10/04(火) 23:52:57
いちいちそんな本を引かなくとも、SystemParametersInfoにSPI_GETSCREENSAVERRUNNINGを渡せばわかる。
758はこんな答えをほしがっているとは思えないけど。
763デフォルトの名無しさん:2005/10/05(水) 00:45:04
>>762
なんで時間を欲しがってるのにRUNNINGの方を紹介してるの?
764デフォルトの名無しさん:2005/10/05(水) 01:16:39
シフト演算用は何を使えば良いんですか?
765デフォルトの名無しさん:2005/10/05(水) 02:48:20
シフト演算子は無いから掛け算・割り算等で代用するよろし
766デフォルトの名無しさん:2005/10/05(水) 03:04:09
VB6.0ですが、pictureで表示した図を拡大や縮小しても

画質を落とさずに表示するには、どうすればいいのですか?

ラスタ表現からベクタに表現に変換すればよいらしいのですが

変換のやり方がわかりません。
767デフォルトの名無しさん:2005/10/05(水) 03:24:04
>>766
拡大縮小したい図はベクタで表現できるような図なの?
風景写真などをベクタにするのは無理に近いぞ
自分でLineなどを使ってPICTUREに書いたのであれば、
書いた座標記憶しておいて割合で倍にすればいい
768デフォルトの名無しさん:2005/10/05(水) 03:38:12
>>767
自分でLineなどを使ってPICTUREに書いたほうです。
ありがとうございました。
769758:2005/10/05(水) 17:41:28
色々とご教授ありがとうございます。

スクリーンセーバーを起動する時間ではなく、キーボード&マウスを放置している士官を取得したいのです。
ググっても探せませんでしたので、もしご存知の方お教え願えますでしょうか。

何度も質問して申し訳ありませんがよろしくお願いします。
770デフォルトの名無しさん:2005/10/05(水) 18:52:41
dim Src as string: Src = AppPath & "\temp\" & S
dim Dest as string: Dest = AppPath & "\" & S
Kill Dest
Name Src As Dest

3.で「パス名が違う」ってエラーが出てた後、4.で「既に同名のファイルが存在します」ってエラーが出るんだけど、どうして?
771デフォルトの名無しさん:2005/10/05(水) 21:00:18
>>769
スクリーンセーバーはキーボード&マウスを動かせばタイマーがリセットされるでしょ。
同じことを求めるにしても他の道からのアプローチは受け入れないって、勉強する気あるのか?
ISBN4-88337-198-0 の本を覘いてみなされ。
772デフォルトの名無しさん:2005/10/05(水) 21:20:08
その本はWEBに公開されているものを書籍にしてるやつなのだが、
直接的な答えは書いてないなぁ
773デフォルトの名無しさん:2005/10/05(水) 23:38:39
>>769
VisualC++板か、Win32API板に行くと良いぞ。
774デフォルトの名無しさん:2005/10/05(水) 23:40:05
マウスとキーボードの非操作期間検出みたいなシステム監視系は
VB6みたいなハイレベルな言語では大変だな
簡単な言語のVC++あたりでフックdllを作った方が良いんじゃないか
775デフォルトの名無しさん:2005/10/06(木) 15:32:13
SPRED3.0でセルの高さが40くらいあるセルに値を書き込んだとき
セルの高さの真ん中あたりで表示されるようにするには
どうしたらよいでしょうか?
776デフォルトの名無しさん:2005/10/07(金) 01:43:19
ボタンをクリックしたら、デバイスのプロパティ
(デバイスマネージャから見ることの出来るプロパティ。たとえばCOM1とか。)
の2タブ目以降を一発で表示させる方法というのはあるでしょうか。

OS:WinXPSP2
VB6
という限定環境でかまいません。

COMでなくてもなんでもいいです。
777デフォルトの名無しさん:2005/10/07(金) 15:47:00
ログイン認証システムを本などを参考につくってみたのですが、うまくいきません。
DBに接続もできてますし、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
778デフォルトの名無しさん:2005/10/07(金) 16:18:39
ヘルプ見る限り、判らないときは-1という独特の逃げの表現ですね。
その状態で、BOF、EOFはどうなってるの?実際にレコード取れてないの?
779デフォルトの名無しさん:2005/10/07(金) 16:41:24
>>778
レスありがとうございます。
以下の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
780デフォルトの名無しさん:2005/10/07(金) 17:06:39
>>779
RecordCountが取れないのは
カーソルの設定じゃないかなぁ。
これをいれてみてもRecordCountは-1ですか?

cnn.CursorLocation=adUseClient

違ってたらすみませぬ。
781デフォルトの名無しさん:2005/10/07(金) 17:25:30
>>780
無事、RecordCount取れるようになりました!!
ありがとうございます。



cnn.Open

cnn.CursorLocation=adUseClient

Set rst = cnn.Execute(strSQL)

782デフォルトの名無しさん:2005/10/09(日) 07:34:50

MSHFlexGridでセルに縦書きするにはどうすれば良いですか?

WindowsXP、VB6SP6です
783デフォルトの名無しさん:2005/10/09(日) 09:31:17
>>782
出来ない。
784デフォルトの名無しさん:2005/10/09(日) 15:01:23
知ってる奴だけ答えればいい。
知らない奴は答えなければいい。
785デフォルトの名無しさん:2005/10/09(日) 16:05:47
おまえモナー
786デフォルトの名無しさん:2005/10/09(日) 16:07:30
五.荒らしは相手しない。
787デフォルトの名無しさん:2005/10/09(日) 16:18:06
>>783-787 = 荒らし
788デフォルトの名無しさん:2005/10/09(日) 17:07:24
>>782
色々考えられるけど、Pictureに縦書きフォントで回転して書いて貼ったり
IE5.5以降が必要とさせてIEコンポーネント貼ったり
短冊状にテキストボックス張ったりラベル貼ったり
789デフォルトの名無しさん:2005/10/09(日) 17:17:12
>>788
ヒント:セルに
790デフォルトの名無しさん:2005/10/09(日) 17:18:01
ピッコロ
791デフォルトの名無しさん:2005/10/09(日) 19:05:40
>>789
もちろんセルに貼るって意味だったけど、ヒントでわざわざ言う事か?
792デフォルトの名無しさん:2005/10/09(日) 19:37:00
┐(゚〜゚)┌
793デフォルトの名無しさん:2005/10/09(日) 20:18:45
>>792
何が言いたい?
794デフォルトの名無しさん:2005/10/09(日) 20:21:41
もしかして788=791=793か?
だとしたらあwせdrftgyふじこp
795デフォルトの名無しさん:2005/10/09(日) 20:32:34
>>793
セル自体は縦書きできないって事だろ。
低脳のくだらない突っ込みだ。
796デフォルトの名無しさん:2005/10/09(日) 21:05:01
本人のくだらない自己フォローだ。
797デフォルトの名無しさん:2005/10/09(日) 21:27:50
┐(゚〜゚)┌
798デフォルトの名無しさん:2005/10/09(日) 21:28:56
くだらね〜争いだな
モニター縦向きすればいいんだろがw
799デフォルトの名無しさん:2005/10/09(日) 21:37:08
>>798 おまえあたまいいな!
800デフォルトの名無しさん:2005/10/09(日) 21:49:41

最近
   スレ
     の回
        答レ
          ベ
           ル
            が
            :
801デフォルトの名無しさん:2005/10/09(日) 22:15:20
放物線かよ!!!
802デフォルトの名無しさん:2005/10/09(日) 22:24:19
>>798
故障の原因になるってマニュアルに書いてるよ
803デフォルトの名無しさん:2005/10/09(日) 22:39:47
>>802
液晶モニターも?
804デフォルトの名無しさん:2005/10/09(日) 22:44:07
もちろん。

ピボット対応のものですら、
故障には繋がらなくても寿命は縮まるからな。
805782:2005/10/10(月) 14:14:16

ご存じの方が居ましたら>>782をお願いします。

>>550も自分ですが、「出来ない」と回答もらっても結果的に出来たことがあるので、
失礼ながら知らない方、出来ないと思う方は無視して頂いて結構です。

解決するか、MSのSource付きで出来ないという確証が出るまで
自分でも調べながらここでも適度に催促させて頂きます。
806デフォルトの名無しさん:2005/10/10(月) 14:48:10
>>805
MSはソースつきで出来ないことを示さないといけないのか?
あと、催促は単なる嵐です。
こんなところで催促するならば、PCDNなり@ITなりいけば?
807デフォルトの名無しさん:2005/10/10(月) 15:05:48
最後二行以外は同意するし同情もするが
MSお墨付きが欲しいならインシデント使えよ
808782:2005/10/10(月) 15:06:19
> MSはソースつきで出来ないことを示さないといけないのか?
いや、そんなことは一言も言ってません。
出来ないという証拠があれば諦めるというだけです。

出来るという情報は(やり方が書かれれば)こちらで確認できますが
出来ないという情報は確認のしようがないので。

> あと、催促は単なる嵐です。
これはあなたの個人的主観ですね。
このスレのルールにも2chのガイドラインにも、質問スレでの催促を
荒らしとして扱う旨の記述は見つかりません。
数分おきの催促じゃ荒らしになるかも知れませんが、
それは「催促」が荒らしなんやなくて「連投」が荒らしなわけですし。
809デフォルトの名無しさん:2005/10/10(月) 15:08:19
>>808
だからPCDN逝けよ、少しは質問の仕方から叩き直してもらって来い。
810デフォルトの名無しさん:2005/10/10(月) 15:11:47
一.答えられない質問は無駄に罵倒せずスルー。
三.回答する上で必須ではない情報をむやみに聞き返さない。
四.荒らしは相手しない。
811デフォルトの名無しさん:2005/10/10(月) 15:11:47
>>809
知らないからってそうムキになるなよw
812デフォルトの名無しさん:2005/10/10(月) 15:13:12
  , - 、         ゙‐- '
 {   }             r'⌒',
 `‐-‐'      r'⌒',     !、_丿
  ◯      ヽ-‐'  ___
      r'⌒',   ,,r-‐'     `''ヽ、  ○
      `‐-'  / /     \  \
      , 、 ,,/ ヽ ●     ● ′'─--、,,
  ,,r-─(_)      (__人_)     i⌒)   `, カワイソス
 (                       ̄  ,r‐
   ̄つ    '⌒'           ,r─‐‐''
   (´              ,r──'
    ̄ ゙̄'───--------‐'
813デフォルトの名無しさん:2005/10/10(月) 15:16:43
>>808
出来ない情報・・・泥から金が作れますか?作れないなら作れない作り方を教えてください。
貴方がいかに馬鹿なこと書いてるか理解できる?
814デフォルトの名無しさん:2005/10/10(月) 15:19:25
>>808
まあ、ここには見ての通りバkも多いが
博識な奴も少々はいる
マジで絶対不可能なのかもしれんが
方法を知ってる奴が出てくる可能性もあるから
またーり待ってろ
催促は嵐じゃないがバカどもを相手にしたら嵐だからな
815デフォルトの名無しさん:2005/10/10(月) 15:23:41
>>813
おまえ、大恥かくから物事をもう少し考えてから物言った方がいいぞ
悪魔の証明のような不確定事項ではなく
作り手が居るものなんだから作り手にとっては不可能の証明も不可能じゃないw
それをする義務が作り手にあるわけじゃないがな

貴方がいかに馬鹿なこと書いてるか理解できる?
816デフォルトの名無しさん:2005/10/10(月) 15:29:20
>>815
作り手に聞きたいならば、MSDNに入って金出して聞けよ。
あなたが言ってる情報をたとえ知ってる人がいても、ここでそれを出すのはMSDNの契約上不可能です。
817デフォルトの名無しさん:2005/10/10(月) 15:32:33
いや、俺はこの件に関してはは不可能の証明も不可能じゃないって言っただけで
この件についての情報を聞きたい知りたいとはこれっぽっちも思ってないよ
818デフォルトの名無しさん:2005/10/10(月) 15:34:24
具体的にどうすれば不可能を証明したことになるの?
819デフォルトの名無しさん:2005/10/10(月) 15:40:40
>>817
だから、あなたが不可能であることをMSに聞きたいんでしょ?
金出して聞け、それだけ。
820デフォルトの名無しさん:2005/10/10(月) 15:44:51
作り手ならば発言そのものが証明になる

例えばフォームに何のコントロールも配置せず
コードも全く書かずにコンパイルしたものに対して
作者なら「この実行ファイルでテキストの編集は不可能です」と言い切れるが
一般のユーザーじゃこの証明は無理だ
まぁこの程度なら多少知識が有ればファイルサイズから判断出来るがな
821デフォルトの名無しさん:2005/10/10(月) 15:50:45
822デフォルトの名無しさん:2005/10/10(月) 15:51:52
┐(゚〜゚)┌
823デフォルトの名無しさん:2005/10/10(月) 23:29:08
VBでOSを開発したいのですが、どこから始めればいいのでしょうか?
824デフォルトの名無しさん:2005/10/10(月) 23:36:14
>>823
1. VBのソースを読んで機械語あるいはアセンブリ言語を吐くコンパイラを作る。
2. アセンブリ言語をマスターする。
3. OSを設計する。
4. コードを書く。起動直後などの重要部分はアセンブリ言語でしかできないのでアセンブリ言語。
  しかるべくしたらVBでソースを書ける部分に移れると思う。
825デフォルトの名無しさん:2005/10/10(月) 23:41:52
>>824
1と2は逆じぇね?
826デフォルトの名無しさん:2005/10/10(月) 23:49:50
当たり前のことを自慢げに書かれてもつまんない
827デフォルトの名無しさん:2005/10/11(火) 14:29:15
ゲームOSとかだったら素敵なAPI公開してWin32上で動けばいいんじゃね
828デフォルトの名無しさん:2005/10/11(火) 14:37:17
LoadCursorFromFile で取得したANIファイルを
SetSystemCursor でマウスカーソルに設定するトコまではできたのですが、
元のカーソルに復元する方法が分かりまへん。

今、こんな感じ↓

'システムカーソルを設定。
lCursor = SetSystemCursor(LoadCursorFromFile(sAniFile), 32512)


誰かボスケテ
829デフォルトの名無しさん:2005/10/11(火) 15:17:51
>>828
Call SystemParametersInfo(SPI_SETCURSORS, 0, Null, 0) でいい?

次俺が質問
VB6でVC++で作ったスタティックライブラリを使う方法ってある?
830デフォルトの名無しさん:2005/10/11(火) 16:46:03
VBで使えるようにDLL書けばいいじゃないか。
831デフォルトの名無しさん:2005/10/11(火) 16:55:43
COFFファイルローダーを作ればよい
832デフォルトの名無しさん:2005/10/12(水) 05:06:32
VBのlink.exeって何に使ってるんだろうね
833デフォルトの名無しさん:2005/10/12(水) 07:06:09
VB6.0を使っています。
普通に計算すると
20.2-20.1の場合
9.99999999999979E-02 となって
20.2-20.3の場合
-0.100000000000001 となります
普通に答えが0.1、-0.1のようにするにはどうしたらいいのでしょうか?
834デフォルトの名無しさん:2005/10/12(水) 08:19:02
>>833
それは浮動小数点の宿命なんで、Decimal型で計算するといい。
Dim ans As Variant
ans = CDec(20.2) - CDec(20.1)

Dim ans As Decimal と宣言できないところが難点だけどね。
835デフォルトの名無しさん:2005/10/12(水) 12:45:11
Debug.Print 20.2@ - 20.1@
Debug.Print 20.2@ - 20.3@
836デフォルトの名無しさん:2005/10/12(水) 17:22:41
VBScriptもOKとのことなので質問させていただきます

やりたいことは単にBeep音を鳴らしたいだけなのですが、いくつか制約があります
・wscriptから実行------------------------WScript.Echo Chr(7)をcscriptでってのは×
・外部にファイルを作らない----------------外部にバッチファイルやスクリプトを出力するのは×
・標準環境のWinXPで使える---------------何らかのコンポーネントをインストールしたり、Beepを鳴らす実行ファイル等を使ったりは×
・ダイアログなどを表示させない-------------msgboxで一応音は鳴りますがそういうのは×
・実行から音が鳴るまでのタイムラグが無い---サウンドの再生だとタイムラグが大きいので×
(まあVBからBeep鳴らしても、人間が認知できない程度の僅かなタイムラグはありますがそういう突っ込みは無しの方向で)

の条件を満たしてBeep音を鳴らす方法を教えてください
簡単に言えば「vbs単体でどんな環境(WinXP)でも瞬時にbeep音のみを鳴らせる方法」です
どうかよろしくお願いします
837デフォルトの名無しさん:2005/10/12(水) 18:58:16
>>836
言語仕様にbeepはないしWSHにも見当たらないから無理なんじゃない。
VBScriptの機能拡張はActiveXでやるのが基本だが、それはやりたくないんだろう?
838デフォルトの名無しさん:2005/10/13(木) 00:13:02
変数を使用しているプログラムの実行時
コンピュータ内部では変数名からその変数の内容が記憶されているメモリ領域を参照していると思われますが
そこの流れが理解も想像もできません

説明をお願いできないでしょうか
839デフォルトの名無しさん:2005/10/13(木) 00:17:28
やべえ煽りたい
840デフォルトの名無しさん:2005/10/13(木) 00:21:01
>>838
コンピューター内部ではそんな事をしていないから説明しろと言われても困る
841デフォルトの名無しさん:2005/10/13(木) 00:26:29
変数『I』を使用する時
変数『I』の内容がメモリの100番地に記録されていると仮定します

次回『I』がインクリメント(I=I+1)される時に
どのような流れで変数『I』から100番地というアドレスを導いているのでしょうか

例えば『I_ADD』みたいなテンポラリ変数に『I』のアドレスが格納されているとしても
今度は『I_ADD』から『I_ADD』のアドレスを求める必要があるワケで
無限ループになってまう気がするのですが
842デフォルトの名無しさん:2005/10/13(木) 00:31:42
スレ違い。

もっと初心者スレとか行った方が良いよ。
843デフォルトの名無しさん:2005/10/13(木) 00:39:47
>>841
あらかじめ変数領域のアドレスはスタティックに決定されている
変数名の文字数に制限があるのはそのせいだ
A=0000001,B=0000002,AA=0000037…
という具合に変数名そのものがアドレスを意味している
(実際のアドレスは環境により変化する)
だから、突然 HENSUU0001とか言う名前の変数を使用しても
制限文字数以内の名前であるかぎり
既にそのアドレスは決定されています
844841:2005/10/13(木) 00:44:52
>>843サマ
ありがとうございました
よく理解できました
メモリも安くなってきたせいか
メモリって意外に無駄な使われ方をされているんですね
845デフォルトの名無しさん:2005/10/13(木) 00:51:52
>>843-844
普通のスレなら間違いなくネタだと思うところだが、
このスレに限ってはマジでやってる可能性を疑ってしまうなw
846デフォルトの名無しさん:2005/10/13(木) 00:56:42
まあ、大きな的は外れてないから流すけど、変数名の文字数制限と
アドレスに関係性は無いってのだけ指摘しとく。
(P-CODEはそうだったりするのか?)
コンパイラの本嫁
847デフォルトの名無しさん:2005/10/13(木) 01:00:35
CASLでもやってくれって感じもするがな
848デフォルトの名無しさん:2005/10/13(木) 01:16:41
質問させて頂きます。

Winsockコントロールを使用して、POP3サーバから新着メール件数を取得する
プログラムを作成しています。
(環境:Win2K・VB6+SP5)

処理としては
1.POP3サーバに接続
2.DataArrivalイベントでユーザ名、パスワード…と順次SendData
3.切断
と行っています。

ほぼうまくいくのですが、まれに
「実行時エラー40006:指定したトランザクションまたは要求のプロトコルまたは
接続状態に問題があります。」とエラーになってしまう場合があります。
手がかりだけでも教えて頂けないでしょうか?

また上記エラーはErrorイベントでは拾えないのでしょうか?
長文すみませんが、よろしくお願い致しますm(_ _)m
849デフォルトの名無しさん:2005/10/13(木) 03:00:30
>>843
PC6000時代のN-BASICはそんなつくりだった気もする。なつかしす
850デフォルトの名無しさん:2005/10/13(木) 08:08:28
>>849
そんなわけないだろw
馬鹿じゃないの。
x86の32Gの仮想メモリ空間に1バイトごとユニークな文字列割り振るとしても
アスキー5文字で御釣りが繰るのに、Z-80でそれやったらw
851デフォルトの名無しさん:2005/10/13(木) 08:13:31
>>849
そんなわけないだろw
馬鹿じゃないの。
x86の32Gの仮想メモリ空間に1バイトごとユニークな文字列割り振るとしても
アスキー5文字で御釣りがくるのに、Z-80でそれやったらw
852デフォルトの名無しさん:2005/10/13(木) 08:15:36
>>849
そんなわけないだろw
馬鹿じゃないの。
x86の32Gの仮想メモリ空間に1バイトごとユニークな文字列割り振るとしても
アスキー5文字で御釣りがくるのに、Z-80でそれやったらw
853デフォルトの名無しさん:2005/10/13(木) 09:15:43
まあ、お茶でも飲んでもちつけ

N60-BASICの変数の識別は頭2文字くらいじゃなかったか?
854デフォルトの名無しさん:2005/10/13(木) 12:54:25
質問です。
一つのプログラムでいくつかのメニューを使おうとしているのですが、それぞれに
共通したサブメニューがいくつか存在するので、デザイン時には実際に呼び出す
メニューと共通するサブメニューを別々に作っておき、実行時に InsertMenuItem
を使って動的に追加しようと考えています。
メニューが全てフォームに表示されている場合は上手い事追加できたのですが、
非表示の時(フォームにはメニューを表示させず、PopupMenu で出したい)は
GetMenu だとか GetSubMenu の値が取れませんでした。

非表示のメニューにサブメニューを追加する方法、もしくは非表示のメニューの
メニューハンドルを取得する方法はないでしょうか?

そもそももっとマシな方法があるだろ、というのがありましたらヒントくださいm(_ _)m
855デフォルトの名無しさん:2005/10/13(木) 16:54:53
>854
非表示のメニューは取得できないよ。
なぜなら非表示のメニュー削除されてるから非表示であって
元からあるモノをを非表示にしている訳ではない。
元々WindowsにはメニューのVisibleは無い。

多分VBのメニューは
Visible=Falseは RemoveMenu() でメニューを消して
Visible=Trueは InsertMenu() でメニューを追加している
という動きだと思うよ

動的に追加ってメニューを配列にしてLoad Unload じゃ駄目か?
856854:2005/10/13(木) 18:01:39
>>855
分かりやすいレスありがとうございました。
提案していただいた Load / Unload をやってみようと思いましたが、ベタに
メニューを作るよりもコードが長くなってしまいそうなのでやめました(´Д`)

結局、一つのメニューに全部突っ込み、PopupMenu の直前に共通でない
項目の Visible をごちょごちょいじくる、という方法で乗り切ることにしました。
お騒がせしましたm(_ _)m
857デフォルトの名無しさん:2005/10/13(木) 18:56:57
>>854
もう解決済みの様だけど、この方法ならそれなりにスマートかなと思うので書いておきます。

' 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 の飛び先を変えるだけで済むので私はこの方法を使ってます。
858854:2005/10/13(木) 19:43:31
>>857
実は似たような方法を実装した事がありました。
表示したいメニューとサブメニューを別のフォームに並べ立て、そっちの
Load イベントでサブメニューの構築、各項目の Click イベントで RaiseEvent を
ガンガン書き、呼び出し元に Private WithEvents Menu As frmMenu …という感じで。
わざわざ RaiseEvent でやる必要もなかったわけだ orz
859デフォルトの名無しさん:2005/10/13(木) 23:56:01
Visual Studio Installerにてインストーラーを作りたいんですが、
インストール時に、msado25.tlbの登録でエラーが起こります

検索でTips探して、なんとか関連付けのタイプライブラリにLibIDを登録すればいいと
わかりましたが、それをしてもエラーが起こってしまいます

OLEViewでMicrosoft ActiveX Data Object 2.5 LibraryのIDを確認して、
タイプライブラリを追加>LibIDを登録、としているんですが、
これは何か間違ってるんでしょうか

アドバイスお願いします
860デフォルトの名無しさん:2005/10/14(金) 00:41:43
>>843
ネイティブコンパイルすれば変数名は消えるのでは?
861デフォルトの名無しさん:2005/10/14(金) 01:42:44
WebBrowserで、ハイパーリンクを開く処理はどのようにすればいいのでしょうか・・・
SubmitやClickと違って、URLを探し出してからNavigateする処理になるのでしょうか?
862デフォルトの名無しさん:2005/10/14(金) 02:18:39
>>860
ネタニマジレスカコワルイ
863デフォルトの名無しさん:2005/10/15(土) 01:38:44
VB6で、2つのwavファイルを結合するにはどうしたらできますか?
864デフォルトの名無しさん:2005/10/15(土) 06:34:14
スレをざっと見たけど、お前らが他人に大して無礼だと感じたり、憤りを
感じる基準が前々わからねえ、性格歪みすぎてるんじゃねえ?
865デフォルトの名無しさん:2005/10/15(土) 08:10:08
↑やべぇ!おかしい人だ!
866デフォルトの名無しさん:2005/10/15(土) 09:10:20
>>863
関数は Open,Read,Write,Close
フォーマットは http://www.kk.iij4u.or.jp/~kondo/wave/
ミキシングしたい場合はサンプリングレート合わせて足し算すればよろし
867デフォルトの名無しさん:2005/10/15(土) 14:13:49
5.0でVBからVCに変換する機能があると聞いたのですが
具体的にどのような機能でしょうか?
868デフォルトの名無しさん:2005/10/15(土) 15:43:54
> 聞いたのですが
それを聞いたところに聞き直して
結果をここに報告汁
869867:2005/10/15(土) 16:27:45
そうですよね・・・orz
870デフォルトの名無しさん:2005/10/15(土) 21:46:17
VBからVCにって何を変換するの?
871デフォルトの名無しさん:2005/10/15(土) 22:55:57
ソースじゃねーの?
872デフォルトの名無しさん:2005/10/16(日) 11:06:45
編集->置換
873デフォルトの名無しさん:2005/10/16(日) 11:12:37
VBからVCにしたいって?
ベンチャー板に逝け
874デフォルトの名無しさん:2005/10/16(日) 18:22:12
VBではないのですがEXCEL相談所などで、こちらへ聞いたらといわれたのですが、
またプログラマでのなんでもないのですが、アドバイスお願いします。

ADOでパラメータクエリを作成し、複数のアクセスMDBファイルから
クエリでデータを取得するプログラムを作っています。

このときいくつかのMDBには存在しないフィールドに対しても、クエリを実行するのですが、
当然エラーが出ます。

On Error Resume Next
Set rs = New ADODB.Recordset
Set rs = cmd.Execute

としても、次に飛んでくれないで、黄色い表示のデバッグになってしまうのですが・・・・エラーメッセージは以下です。
"実行時エラー'-2147217904 (80040e10)':
1つ以上の必要なパラメータの値が設定されていません。

クエリや他の部分はフィールドが存在するときは正しく動いています。フィールド名を事前に取得して
チェックさせれば良いのでしょうが、このエラーだけresumeが効かないのが理解できません。
875デフォルトの名無しさん:2005/10/17(月) 07:02:18
質問させてください
bookmarkってレコードセットに戻せないんでしょうか?

オブジェクトを閉じる前にカレントレコードを取得しておいて
新規にオーペンしたレコードセットのカレントを、
取っておいたbookmarkの位置にしたいんです…。

できないのであれば別な方法ありますでしょうか?
876デフォルトの名無しさん:2005/10/17(月) 09:42:50
えーと、DB操作というかDBでの処理ってそういうもんじゃないだろ?
まあやるならば、そのカーソル位置のレコードのキーを覚えておけばいいんじゃないの?
877デフォルトの名無しさん:2005/10/17(月) 17:30:58
ストアドをどう作ったらいいの判りません…orz
DB側に置いてクライアント側で呼び出すって流れを知ってる程度です

サンプルとか解説HPあれば是非教えて下さいm(__)m
878デフォルトの名無しさん:2005/10/17(月) 17:37:42
データベース板に行けば?
879デフォルトの名無しさん:2005/10/17(月) 18:02:43
>>861
それしかない
880デフォルトの名無しさん:2005/10/17(月) 20:58:34
>>878
スレ立てるまでもない質問・雑談@DB板
http://pc8.2ch.net/test/read.cgi/db/1057985632/858

こっちに誘導しないでくれ。
881猫舌仮面:2005/10/17(月) 22:11:42
他言語でいう
「(条件式)?(条件真の値):(条件偽の値)」の記述が分からずに困っています
以下のような文にしたいのですが
どうか教えてください


VAL = INPUT_NAME()
print "あなたは" & (VAL = "猫舌仮面" ? "天才" : "マヌケ") & "です"

よろしくおねがいします
882デフォルトの名無しさん:2005/10/17(月) 22:13:25
IIf
883デフォルトの名無しさん:2005/10/17(月) 22:28:34
>>881
少しだけ長くなるけどこんな感じかな?

VAL = INPUT_NAME()
print "あなたは"
if VAL = "猫舌仮面" then print "天才"
if VAL <> "猫舌仮面" then print "マヌケ"
print "です"
884デフォルトの名無しさん:2005/10/17(月) 22:31:30
うーん、不思議な現象を目撃した感じ。
885猫舌仮面:2005/10/17(月) 22:39:34
>>883
ありがとうございます
ソースは短い方が好きなので
もう少し
短くする方法はないでしょうか
886デフォルトの名無しさん:2005/10/17(月) 22:40:51
887デフォルトの名無しさん:2005/10/17(月) 22:43:00
>>885
可哀想な>>882に一言頼む
888猫舌仮面:2005/10/17(月) 22:48:05
あ、失礼しました
猫舌に言っていると気がつきませんでした
iif 使い方を調べてみます
素早い回答 ありがとうございでした
889デフォルトの名無しさん:2005/10/17(月) 22:57:38
iifは両パートを見るから注意しろよ。
0除算とか、Nothing参照とか。
890883:2005/10/17(月) 23:00:21
>>885
>もう少し短くする方法はないでしょうか

んじゃこんな方法もある

VAL = INPUT_NAME()
if VAL = "猫舌仮面" then print "あなたは天才です"
if VAL <> "猫舌仮面" then print "あなたはマヌケです"
891デフォルトの名無しさん:2005/10/17(月) 23:04:18
883が激しく勘違いしている件について。
892デフォルトの名無しさん:2005/10/17(月) 23:04:46
そっとしといてあげましょう
893デフォルトの名無しさん:2005/10/17(月) 23:05:30
iifなんて使うのはガキだろ
894883:2005/10/17(月) 23:10:38
何か勘違いをしていましたか
よく分からないけどスルーしてください
ちなみに私は893でもヤクザさんでもありません
iifも知りませんが
初心者の頃はお子様ソースでも構わないと思っています

スルーしてください
895デフォルトの名無しさん:2005/10/17(月) 23:13:22
コードの短さより、コードの見やすさと速度を優先してIfステートメント使うのが基本だが、
状況に応じてIIf関数使うのも悪くはない。
少なくとも「iifなんて使うのはガキ」とか言い出す奴がガキなのは間違いないが、
IIf使う奴はガキとは限らない。

要は臨機応変だよ。893みたいなガキには難しいかもしれないけど。
896デフォルトの名無しさん:2005/10/17(月) 23:17:59
状況に応じてIIf関数使う?お前俺を笑い殺すかw
Ifで書けることを、速度を遅くしてまでIIfを使うのに臨機応変もなにもない。
897デフォルトの名無しさん:2005/10/17(月) 23:22:36
IIf使うと遅くなるってのは本当なのか?
わざわざ遅くなるようなネイティブコードに展開するような馬鹿なコンパイラが
あるとは思えんがね俺は。
898デフォルトの名無しさん:2005/10/17(月) 23:27:13
IIf関数は絶対に使わない、If...Then...Else...構文を使う方が速い。この原因として、IIf関数は内部でIf構文を呼び出していると思われる。関数事体を知らない人も多いと思われる。

899デフォルトの名無しさん:2005/10/17(月) 23:28:21
読み方はIFがイフでIIFはニフだよな?
900デフォルトの名無しさん:2005/10/17(月) 23:29:05
IIFはAccessでお世話になったなぁ……
901デフォルトの名無しさん:2005/10/17(月) 23:29:45
Private mCount As Long
Function 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!!!!!!!
902デフォルトの名無しさん:2005/10/17(月) 23:37:47
> IIf使うと遅くなるってのは本当なのか?
本当だよ。
条件判断して、真の場合と偽の場合とで別々の値を変数に代入するIfステートメントと
同等処理をIIf関数を使って書いた場合とでは後者の方が遅い。
但し2GHz前後のCPUだと0.000001秒くらいの差。
これを気にするならVBなんか使うなって話だな。

認知度を理由に共同開発などではIIf使うなってのはもっともな意見だが
速度を理由にIIf使うなって言ってる奴はバカでしかない。
903デフォルトの名無しさん:2005/10/17(月) 23:38:44
怖いって、条件の成立/不成立に関わらず両方の式が評価されるってMSDNに
ちゃんと書いてあるじゃん。

まあ三項演算子の代替物だと思って使うと確かにアレだが、
そんなもんロクにマニュアルを読まずに使うほうが悪い。
904デフォルトの名無しさん:2005/10/17(月) 23:39:23
まぁ、煽り合いは止めようぜ。
905デフォルトの名無しさん:2005/10/17(月) 23:45:31

ではここまででiifの件は終了
これ以上続ける奴は負け犬の遠吠えってことで放置




























 
906デフォルトの名無しさん:2005/10/17(月) 23:46:55
>>905は負け犬
907デフォルトの名無しさん:2005/10/17(月) 23:47:08
LeftBの使い道を教えてくれ
908デフォルトの名無しさん:2005/10/18(火) 00:21:32
質問です。前にC言語で作った物を今度はVB6.0で作ってるのですがどうも考えが纏まりません。
アドバイスよろしくお願いします。

その問題ですが、「文字列をテキストボックスに入力して、文字列中に数字列が存在したら整数とみなし、
数字を取り込みそれらの合計を表示する」

例:ABC12HHHsk36LHin191***20と入力した文字列の数字合計→12+36+191+20=259
答え:259

といった形です。
Mid関数を利用して文字列から一文字づつIsNumericで判定していくというところまでは考えたのですが、
この先をどうしたらいいのかさっぱり思いつきません。漠然的な質問で申し訳ありませんが
この先どのようにロジックを組めばいいかアドバイスおねがいします。
909デフォルトの名無しさん:2005/10/18(火) 00:40:08
学校の宿題は自分でやらないといけないと思います。
つーか、わかんなかったらこんなとこじゃないくて友達に聞こうよ。
910デフォルトの名無しさん:2005/10/18(火) 00:49:33
Cでそのロジックが作れてVBで作れん理屈はない希ガス
911デフォルトの名無しさん:2005/10/18(火) 05:27:42
ターメリックが連続したら&でくっつけて整数化すれば?
最後に各整数を合計


はい、次
912デフォルトの名無しさん:2005/10/18(火) 05:32:49
aからbまでの乱数生成の式は、
int((b-a+1)*rnd)+a
これであってますかね?
913デフォルトの名無しさん:2005/10/18(火) 05:46:02
int((b*rnd)+a) でOKだろ
randomaize忘れるなよ


はい、次
914デフォルトの名無しさん:2005/10/18(火) 05:54:55
>>913
をいをいw
二つも間違ったこと教えるなよ

int((b*rnd)+a) > a=1の場合しか使えない
randomaize > スペル間違い
915デフォルトの名無しさん:2005/10/18(火) 06:15:03
VBはウコン言語だな
916デフォルトの名無しさん:2005/10/18(火) 06:37:29
>>883
elseとかelifとかないの?
917デフォルトの名無しさん:2005/10/18(火) 09:20:34
変数宣言時にDim AAAA&と、変数名の語尾に「&」をつけるのはどういった意味があるのですか?
918デフォルトの名無しさん:2005/10/18(火) 09:29:58
>>917
古くからBASICやってた人が書いたソースだと見分ける意味があります
919デフォルトの名無しさん:2005/10/18(火) 09:30:26
>>917
as long といっしょ

$ だと as string
# だと as double
とか
920デフォルトの名無しさん:2005/10/18(火) 09:38:40
>>918,919
回答thx。アドレス演算子かなぁと激しい間違い起こすところでした。
921初心者:2005/10/18(火) 10:39:15
始めまして。質問させてください。
最近VBの勉強を始めたばっかりで、今並べ替えのプログラムを作ろうと思って
いるのですが、アルゴリズムやコントロール配列についてわからないので
教えてください。
922デフォルトの名無しさん:2005/10/18(火) 10:54:37
>>921
検索エンジンで「ソートアルゴリズム VB」をキーワードに検索すれば手ごろなページはなんぼでも出てくる。
ソートとコントロール配列の関係は俺にはわからん。
923初心者:2005/10/18(火) 11:03:59
それで調べたのですがよく理解できなかったので質問しました。もう一度
調べてみます。ありがとうございました。
924デフォルトの名無しさん:2005/10/18(火) 11:23:13
上司か先生かにソートのプログラム作れって言われたのかな
古いが定石だな
925デフォルトの名無しさん:2005/10/18(火) 12:39:09
ネタの質問に食いついてくる馬鹿なVB厨を見て笑ってるだけだと思うけどな俺は。
お前、そんなに人様に教えを垂れたいのか、ってw
どう考えても釣りだろうよ。猫舌だの初心者だのってw
926デフォルトの名無しさん:2005/10/18(火) 13:47:26
ネタの度に糞スレ立てられるよりマシ
このスレで釣られてるヤシは最後の良心
回答せずに文句だけ言うヤシなんてこのスレに(゜凵K)イラネ
927デフォルトの名無しさん:2005/10/18(火) 13:52:08
そんな中、>>925-926こそがこのスレで一番いらない人だと、ふと思った
928デフォルトの名無しさん:2005/10/18(火) 15:28:50
いまどきVB6の宿題だすなよなー
929908:2005/10/19(水) 16:25:14
>>909>>910>>911
遅レスすみません。何度かフローチャート作って考えてみた結果>>911の書いた
部分が足りていなかったなど、数箇所足りない部分がありました。
スレ汚しすみませんでした。
ちなみに、自分VBとC言語は趣味で勉強してるのでそういった友人いないんですよ…

930デフォルトの名無しさん:2005/10/20(木) 01:29:57
たとえばiniファイルに
[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)

だとちゃんと電卓起動するんですが。
931デフォルトの名無しさん:2005/10/20(木) 02:07:47
>>930
ShellEx

使い方は自分で調べろ
932デフォルトの名無しさん:2005/10/20(木) 02:08:46
ShellExじゃなくてShellExecuteだった
933デフォルトの名無しさん:2005/10/20(木) 07:23:42
VB6でのWinsock Control 6.0の礼儀作法について教えて下さい。

TCPで相手にバイナリファイルを送信しようとしてるんですが
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が裏側でお膳立てしてくれるもんなんでしょうか?

どっちが標準的なやり方なのか(それともどっちも間違いなのか)が分かりませぬ…
934デフォルトの名無しさん:2005/10/20(木) 07:43:45
>>933
試せよ。
935デフォルトの名無しさん:2005/10/20(木) 14:06:40
関数の引数に#がついている場合.何の意味があるのでしょうか?

func 0, 0, 0#
936デフォルトの名無しさん:2005/10/20(木) 14:22:54
937デフォルトの名無しさん:2005/10/20(木) 15:31:03
vb6からaccess2000のマクロの実行の仕方教えて!
938デフォルトの名無しさん:2005/10/20(木) 15:36:33
>>937
access.application
run

あとは自分で調べろ
939デフォルトの名無しさん:2005/10/20(木) 20:33:33
ツールバーコントロールで、スタイルをフラット、
チェックにしたボタンを押した状態で無効にすると、
枠が描画されず、ホットイメージのままになります。
オーナードロー以外の回避策を教えてください。
940デフォルトの名無しさん:2005/10/20(木) 20:41:22
DiskMirroringToolっていうミラーリングツールの公開されているソースを参考にし、
ミラーリングツールを自作してみたのですが、なんか、変な現象に悩まされているです。

自作のツールのみを起動させて実行させるとコピー速度が遅いのですが、
DiskMirroringToolと一緒に起動させて、走らせると、DiskMirroringToolが
コピーしている間だけ、自作ツールの方のコピー速度もつられて(?)早くなるのです・・・。
こんなことって、何が原因で起こってるか分かりますか?
941940:2005/10/20(木) 21:06:03
あ、書き込むところ間違えました。
無視してくださいT.T
942デフォルトの名無しさん:2005/10/20(木) 22:47:42
>>937
栗営戸尾武じぇくとで
乱まぐろでは?
943デフォルトの名無しさん:2005/10/21(金) 01:14:10
初めてバイナリファイルを操作しようとしたんですが、仮に

Dim 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
944デフォルトの名無しさん:2005/10/21(金) 01:32:48
>>943
String*でコントロールコード含むファイルからデータ読んだらダメ
Dim recdat(500) as byteみたいなbyteで受ける必要がある
ただ、lof関数使ってサイズの確認しながら読まないといけないので注意する事
945デフォルトの名無しさん:2005/10/21(金) 04:27:16
>>943
SJISをUNICODEに変換してるから化けてるの
VBのStringはUNICODEだよ
SJISで読みたい時 又は そのままで読みたい時はByte型で
946デフォルトの名無しさん:2005/10/21(金) 07:34:25
>>943
ADODB.Streamを使うと楽かもよ
947デフォルトの名無しさん:2005/10/21(金) 08:51:04
>>945
ハァ?
948デフォルトの名無しさん:2005/10/21(金) 12:30:56
Code Advisor for Visual Basic 6を試しに使ってみたが、
これ、なかなか良いな。C言語におけるlintみたいな感じの
ツールだ。
949デフォルトの名無しさん:2005/10/21(金) 16:44:04
質問です。
ttp://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を既定値をするとそのインスタンス名は関数ポインタと同じ動作になると言うことでしょうか?
説明できる方いましたらお願いします。
950949:2005/10/21(金) 17:04:51
XMLHttpRequestオブジェクトの使い方ではなく
このVB6で行っているイベントハンドラの仕組み自体が知りたいのです、

VBSでさえ、GetRef関数を装備して関数ポインタが扱えますね。
VB6は設計が古いのは残念です。
951デフォルトの名無しさん:2005/10/21(金) 17:08:47
そりゃ5年近く(正確に覚えて無いから、もしかしたら以上?)前のものだから古いのは当然だろ
古いのが嫌ならVB.NET使え
952デフォルトの名無しさん:2005/10/21(金) 18:25:27
RGB関数で色番号(?)を取得できますが、それからRGBそれぞれの値を逆算する方法はありますか?
953デフォルトの名無しさん:2005/10/21(金) 18:29:41
>>952
256*256*256
954952:2005/10/21(金) 19:21:52
色番号は

Red + Green * 256 + Blue * 256^2

のようですね。解決しました。
955デフォルトの名無しさん:2005/10/21(金) 23:10:08
タブでテキストボックスにフォーカスを移したとき
テキスト全体を選択するために GotFocus ハンドラに
.SelStart = 0
.SelLength = Len(.Text)
と書いています.テキストボックスが複数あるとき
ひとつずつ書かなくてすむ方法があったと思うのですが,
どこで見たか忘れてしまいました.
どなたか思い出させてくれないでしょうか?
956デフォルトの名無しさん:2005/10/21(金) 23:20:15
テキストボックスをコントロール配列にするか、
選択範囲の設定処理を関数に分離して、各GotFocusから呼び出す
957デフォルトの名無しさん:2005/10/21(金) 23:28:12
そんな面倒なことしなくてもユーザーコントロールにしちゃえばもっと楽じゃん
958デフォルトの名無しさん:2005/10/22(土) 00:55:05
VB画面からUNIXサーバ上においてあるSHELLを起動したいのですが
方法を教えてください。リフレクションのVBAとかじゃなくて
普通にVB6で作成した画面からリモート越しにSHELLを起動したいんです
UNIXはソラリスの。ええと今バージョンはわかりません
Cシェルで作成しているコマンドとできればCで作られた実行ファイルの
FilegetInfoというファイルを実行したいのです。
959デフォルトの名無しさん:2005/10/22(土) 01:13:35
>>958
めんどくさいから、SystemWalker/OPとか入れちゃえ
960デフォルトの名無しさん:2005/10/22(土) 03:15:02
質問です。
VSFlexGrid・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 ●●

以上です。よろしくおねがいします。
961デフォルトの名無しさん:2005/10/22(土) 04:17:00
EnumでもConstでも出来る
出来ないんだとしたら根本的に何か間違ってるんだろうな
962デフォルトの名無しさん:2005/10/22(土) 10:40:43
>>955
http://web.archive.org/web/20041012230232/www.gj.il24.net/~nakasima/vb/tech/excontrol/index.htm

このサイトはよく見させてもらってたけど閉鎖しちゃったのかな。
963デフォルトの名無しさん:2005/10/22(土) 17:26:40
>960
多分Enumの宣言でColName1を1と宣言したいんだと思う

ColName1 = 1

ってやってないってオチ
「 = 1 」省略すると 0 になるよ

Public Enum AAAAAAAAAAA
  ColName1 = 1
  ColName2 = 2
  ColName3 = 3
End Enum
964デフォルトの名無しさん:2005/10/22(土) 17:34:25
後の2、3は要らん
965pada:2005/10/23(日) 16:53:03
質問です。
Webサーバーにある画像ファイルを、一覧(スプレッドシートでも可)にサムネイル表示
することは可能ですか?
966デフォルトの名無しさん:2005/10/23(日) 16:54:54
>>965
可能なように設定すれば可能。

まずは、「不可能かも」と思った理由を述べるが良い。
ついでに、どの辺りがVB6.0とかかわるのかも述べなさい。
967デフォルトの名無しさん:2005/10/23(日) 17:03:46
>>966
その問題の配点はどれくらいになりますか?
968デフォルトの名無しさん:2005/10/24(月) 01:12:10
VBでPowerPoint 2000用のアドイン作成したいのですが
今手持ちのVisual Studio 6.0 EnとOffice 2000 Pro(お客さんの環境)
で可能なのでしょうか、なにぶんどこを探しても2000 Devはないと言われる始末
困った助けて
969デフォルトの名無しさん:2005/10/24(月) 01:21:44
>>968
出来るけど2000Devのマニュアル無いと辛いね
MSDNの中から関連する内容を探し出さなきゃいけない
970デフォルトの名無しさん:2005/10/24(月) 01:39:13
2000のマニュアルだけ入手できないものかぁうーん
971デフォルトの名無しさん:2005/10/24(月) 01:42:17
Office XP Developerマニュアルだけ買って
試行錯誤っていう選択は激しくありえないでしょうか?
972pada:2005/10/24(月) 02:07:41
>>966
基本DBはMS-ACCESSです。但し、画像ファイルのみWEBサーバーにあるものを参照
する。というものです。
VBの一覧にはACCESSのデータを表示します。
サムネイルする部分はACCESSのデータに入っているパスを参照します。
私の知る範囲では、Picuteboxでloadpictureで読み込む。
という事位なので、実現させる為には一覧にpictureboxを貼り付ける(イメージとして)
とか、リストの隣に行数分のpictureboxを置く。
位しか浮かびません。
何か、他にオブジェクトがあるんでしょうか?

973デフォルトの名無しさん:2005/10/24(月) 02:18:17
>>971
有りだとは思うけど、XML関連ダッシュボード関連の追加、その他色々細かい修正有るみたいだから本が違ってても気にしない事
974デフォルトの名無しさん:2005/10/24(月) 15:13:06
次スレ テンプレ追加
・「ありますか?」という質問に「ある」だけで回答するの禁止。
・「可能ですか?」という質問に「可能」だけで回答するの禁止。
975デフォルトの名無しさん:2005/10/24(月) 15:17:33
逆だろ?回答を禁止するのではなく、その質問を禁止すべき。
あるない、出来る出来ないを聞きたいならばその回答でクローズでいいじゃない。

もっと具体的に聞きたいならば、どこまで試して何がだめか書くべき。
それをせずにすべて教えてっていうならば、最初から全部ソースくれって書けと。
相手にされるかは知らんが。
976デフォルトの名無しさん:2005/10/24(月) 15:25:54
次スレ テンプレ追加
・質問禁止
977デフォルトの名無しさん:2005/10/24(月) 16:28:50
次スレ テンプレ追加
・書き込み禁止
978デフォルトの名無しさん:2005/10/24(月) 16:30:54
次スレ テンプレ追加
・×最初が「ア」
・バンガ愛護
・土水火風禁止
979デフォルトの名無しさん:2005/10/24(月) 16:37:58
>>974-978
オマエら禁止な
980デフォルトの名無しさん:2005/10/24(月) 16:42:24
>>974,>>975は普通の議論だろが。
981デフォルトの名無しさん:2005/10/24(月) 16:44:56
テンプレいじったところで効果はないけどな
982デフォルトの名無しさん:2005/10/24(月) 19:51:16
>>981
同意。
「ある」「可能」という回答が、「テンプレ読め」に置き換わるだけだものな。
983デフォルトの名無しさん:2005/10/24(月) 20:09:59
そのテの質問してくるヤツはテンプレなんて読まない。
ちゃんと質問してくる人はちゃんとテンプレも読んでいる。

テンプレに追加が無駄だとは言わないけれど、
「禁止」だけじゃなくて具体例ぐらい書かないと効果ないかもね。
984デフォルトの名無しさん:2005/10/24(月) 20:14:56
>>972
見栄えをあまり気にしないなら、ListViewで。
見栄えを気にするなら、必要枚数のpictureboxを配置するのは十分妥当だろ。
985デフォルトの名無しさん:2005/10/24(月) 22:01:03
めんどくせ〜
WebBrowser1.Navigate "C:\画像リスト.html"
986デフォルトの名無しさん:2005/10/24(月) 22:48:33
>>985
ちょwwwwwおまwwwww天才wwwwwwwww
987デフォルトの名無しさん:2005/10/25(火) 08:46:58
VBではないのですがSPREDコントロールのセルで
チェックボックス型にしているのですが
これをalignをcenterにしたいのですが方法がわかりません。
ご存知の方がおられましたらご教授お願いできますでしょうか。
よろしくお願いいたします。
988デフォルトの名無しさん:2005/10/25(火) 09:08:42
>>987
SPREADのバージョンは?
俺のは3.0だけど、SPREADデザイナのメニューから
[セル]→[セル型]→[チェックボックス]で表示される
ウィンドウの中に「水平位置」「垂直位置」ってのがあるよ。
989デフォルトの名無しさん:2005/10/25(火) 09:31:53
>>988
データソースを直接表示しているせいか、そこを設定しても
なぜか元に戻ってしまいます。
コードで変更できる方法はないものでしょうか・・・
990デフォルトの名無しさん:2005/10/25(火) 09:35:56
すみません。できました。
.TypeHAlign = TypeHAlignCenter
でした。ありがとうございました。
991デフォルトの名無しさん:2005/10/25(火) 11:24:07
MSDEに接続する方法を教えてください。

DBのある場所: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から持ってきたんですけど。
どう変更すれば良いでしょうか
992991:2005/10/25(火) 13:59:21
追記

VB6でMSDEにADO接続したいんです。
993デフォルトの名無しさん:2005/10/25(火) 14:29:53
>>991
"Network Address=〜"を削除して、"Data Source=データベースサーバー名"を入れるといい。

でもNetwork Addressってどこから出てきたんだろ?
994デフォルトの名無しさん:2005/10/25(火) 16:35:23
質問です。
フォームのLoadイベントが走ったときにコントロールのVisibleを制御しようとすると、
時々いくら変更しても初期値のまま変わらないことがあります。
きっちり調べたわけではないので勘違いかもしれませんが、
Showした時に走るLoad医弁tおでは起こらず、Loadされていないフォームの
Public関数を呼んだ時に走るLoadイベントで発生するようです。
これは何が原因なのでしょうか。
参考になるドキュメントなどがあれば教えてください。
995994:2005/10/25(火) 17:26:59
一応age。

あと、次スレ立てないとまずいですよね?
996デフォルトの名無しさん:2005/10/25(火) 17:45:41
次スレ立てないとまずいねえ。
997デフォルトの名無しさん:2005/10/25(火) 17:57:42
Showした時にLoadイベントが発生しないのは既にFormがロードされているから。
ロードされているけど非表示でFormは見えていない。

>Public関数を呼んだ時に走るLoadイベントで発生するようです。
そのメソッドのコールで初めてFormがロードされたから。

Showされたからと言って必ずLoadイベントが発生する訳では無いので
Showされる前のFormのロード状態をよく調べてみ

Loadイベント発生の目安は
『初めてFormのメンバーにアクセスした時』
『Loadステートメントで無理やりFormをロードした時』
『FormをNewした時』

位しか思い浮かばない…
998デフォルトの名無しさん:2005/10/25(火) 19:08:10
>>997
いや、ShowとLoadの関係は分かってるんです。
というか、ShowされたときにLoadイベントが走らないと言ってるわけではなく、
Loadイベント内でコントロールのプロパティを変更したときに、その変更が効かず、
デザイン画面で設定した値のまま表示されてしまうことがある、という件なんです。

フォームがメモリ上にロードされていない状態で、
・Showする → Form_Load() → プロパティ変更OK
・Public関数を呼ぶ → Form_Load() → プロパティ変更NG
という現象が起こる理由が知りたいのです。

ああ、もうスレが埋まる・・・
私はこのスレのテンプレとか流れとか知らないので、誰か次スレ立ててください・・・
999デフォルトの名無しさん:2005/10/25(火) 19:11:49
いや次スレもう立ってるし。
http://pc8.2ch.net/test/read.cgi/tech/1130231657/
1000994:2005/10/25(火) 19:18:14
Σ( ̄□ ̄;)1000!
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。