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

このエントリーをはてなブックマークに追加
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情報募集中。
七.VB.NETの話題はできるだけひかえる。

前スレ Part41 http://pc8.2ch.net/test/read.cgi/tech/1112414085/
2デフォルトの名無しさん:2005/05/24(火) 17:42:53
○関連スレッド
VB.NET質問スレ (Part11)
http://pc8.2ch.net/test/read.cgi/tech/1114217190/

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質問箱 Build31
http://pc8.2ch.net/test/read.cgi/tech/1114762194/
3デフォルトの名無しさん:2005/05/24(火) 21:15:28
3といえばVBもエルボーで蹴散らしてしまう三沢さん
4デフォルトの名無しさん:2005/05/25(水) 00:30:17
VBで関数を呼び出すときに、「()」をつける場合とつけない場合がありますよね。
それってどういう風に使い分けたらいいのでしょうか?

また同様に、「Call」も付ける時とつけない時がありますよね。
その差についても説明いただけるとありがたいです。

よろしくお願いします。
5デフォルトの名無しさん:2005/05/25(水) 00:53:58
Dim Result As Long
Result = Int(Cdbl("280.90") * Int("1000"))
とすると、Resultは 280899 となります。
なぜこうなるか、わかる方いたらお願いします。

結局コードは、
Dim Result As Long
Dim R As Double
R = Cdbl("280.90") * Int("1000")
Result = Int(R);
という風にしましたが、気になったので・・・
6デフォルトの名無しさん:2005/05/25(水) 01:04:49
>>4
SubとFunction

>>5
浮動小数
7デフォルトの名無しさん:2005/05/25(水) 05:11:41
>>5
Cdbl("280.90") * Int("1000")の結果が、Doubleとは違う
何かの型に返還するときに失敗しこんな結果になっているからでは。
不動少数の意味が分かるなら、Cdbl("280.90") * Int("1000")
をいくつかの型で返還するなりして、結果から推測してみては?

Dim Result As Long
Result = Int(Cdbl(Cdbl("280.90") * Int("1000")))

Resultは?

Dim Result As Long
Result = Int(Cdbl(Int(Cdbl("280.90") * Int("1000"))))

Resultは?

etc...
8デフォルトの名無しさん:2005/05/25(水) 09:01:01
VB6.0、SP5、OSはWin2000です。
既出だとは思いますが、お願いします。
T = 1.0
と書くと
T = 1#
という表示になるのですが、仕様ですか?
中身はちゃんと1.0のままなのでしょうか?

一応、過去ログも見れる分は見たのですが41でちょっと記述がでてただけで求めるものとは違いました。
9デフォルトの名無しさん:2005/05/25(水) 09:38:18
>>6
> >>4
> SubとFunction

嘘教えちゃいけません。きちんとMSDN読みましょう。
10デフォルトの名無しさん:2005/05/25(水) 09:47:08
>>4
関数の戻り値を受け取る・使用する場合は括弧を付けなければいけません。
関数の戻り値を受け取らない場合はCallを付けなければ括弧は付けられません。

SubはCallを付けない限り、括弧を付けられません。

ここからは個人的な使い方で人によって違うと思いますが、
戻り値を受け取る・使用する必要のある関数は括弧を付けます。
それ以外の場合は付けません。
Callは一切使いません。

こんな感じでどうでしょ?

11デフォルトの名無しさん:2005/05/25(水) 10:15:09
>>8
仕様です。

1.0も1#もVBではdouble型の1として処理されるので、
どちらも意味は同じです。
128:2005/05/25(水) 10:27:07
>>11
どうもありがとう。
13デフォルトの名無しさん:2005/05/25(水) 11:14:56
>>4
ByRefの場合、括弧を余計につけるとByVal と同じになるので注意が必要!

Private Sub Command1_Click()
Dim A As Integer

A = 0
Test A '=Call Test(A)
Debug.Print A

A = 0
Test (A) '=Call Test((A))
Debug.Print A

End Sub

Private Sub Test(ByRef x As Integer)
x = 100
End Sub
14デフォルトの名無しさん:2005/05/25(水) 15:34:23
IT業界を30歳過ぎて退職したら、転職先はありませんよ。
おまいらIT奴隷は、死ぬまでパソコンとチュッチュしててください。
15デフォルトの名無しさん:2005/05/26(木) 16:31:27
俺なんか31歳でVBデビューですよ。
16デフォルトの名無しさん:2005/05/26(木) 23:02:33
学校でゲーム作れという課題を出されたんでルーレットを作ってるんだけど詰ったorz
仕様はコントロール配列のイメージ30個とイメージの上に付いてるように
コントロール配列のオプションボタンが30個あってスタートをクリックするとサイコロの
イメージがコントロール配列のイメージをランダムに移動して3秒経つと止まる。
それでスタートをクリックする前に予想のサイコロの上にあるオプションを選んでクリック。
止まったときに止まったイメージの上のオプションボタンが選んだオプションボタンだったら点数を追加してメッセージ表示

というゲームにしたいんだけど、止まったサイコロと選んだオプションボタンが同じなら〜っていうIf文が出来ないorz
分かりにくい文章ですまないけど助けてください。
17デフォルトの名無しさん:2005/05/26(木) 23:22:21
>>16
いやだ。
18デフォルトの名無しさん:2005/05/26(木) 23:29:14
エクセルファイルをMDBファイルのようにDAOやADOで開いて使いたいのですが、やりかたがわかりません。
そもそも、そんなことできるのでしょうか。
19デフォルトの名無しさん:2005/05/26(木) 23:51:37
20デフォルトの名無しさん:2005/05/27(金) 00:26:46
MHTMLファイルをメールで送信したいのですが、CDO.Messageで出来ると思ったけど、
HTMLファイルはCreateMHTMLBodyを使って簡単だったのに、MHTファイルが出来ないです。
MHTMLファイルを直接指定して送信する方法はどうすれば出来るでしょうか?
よろしくお願い致します。
2118:2005/05/27(金) 01:15:13
>>19 さんサンクスです、丁度知りたかった情報です。
ISAMドライバでの接続の方法が解らなかったので助かりました。
22デフォルトの名無しさん:2005/05/27(金) 10:10:02
>>16
よくわからん。
イメージ30個とサイコロは同じ?
とりあえず適当に答えてみるが…
 スタートを押す直前に選んでいるオプションボタンのインデックスを
 変数に保持して、ランダム移動開始。
 3秒後に止まっているオプションボタンのインデックスと、スタート
 前のインデックスを保持した変数と比較。
これでどう?
2316:2005/05/27(金) 17:47:26
>>22
レスありがとうございます。
そして分かりにくくてすみません。空のイメージ30個の上をサイコロのイメージがランダムに移動して3秒後に止まる
オプションボタンはスタートを押す前に自分で押しておく。
止まったときの図で説明するとこんな感じです

○ ○ ○←オプションボタン 
□ □ □←空のイメージ

○ ○ ●←スタート押す前に選んだオプションボタン
□ □ ■←スタートしてランダムに移動したサイコロのイメージ
     
↑みたいになった時に点数を追加したり、「おめでとう」などのメッセージを表示させるIf文の条件部分が分からないんですorz
24デフォルトの名無しさん:2005/05/27(金) 18:17:02
>>23
If optButton(currentSaikoro).Checked Then
25デフォルトの名無しさん:2005/05/28(土) 13:28:40
>>24
ありがとうございます。月曜に学校で試してみますね。
26デフォルトの名無しさん:2005/05/28(土) 19:05:18
OS:Win2000 VB6.0

コンボボックス(Combo1)一つ付けただけのサンプルで

Private Sub Combo1_Click()
With Combo1
.Clear
.AddItem "111"
.AddItem "222"
.AddItem "333"
.Text = "111" '** これが表示されない
End With
End Sub

Private Sub Form_Load()
With Combo1
.AddItem "AAA"
.AddItem "BBB"
.AddItem "CCC"
.Text = "AAA"
End With
End Sub

仕様ですか?
27デフォルトの名無しさん:2005/05/28(土) 19:12:37
690 名前: Socket774 [sage] 投稿日: 2005/05/28(土) 19:08:15 ID:vB6j/4vy



ThePenisには敵わないまでも
VisualBasic6の日本語版
28デフォルトの名無しさん:2005/05/28(土) 19:20:16
>26
本気ですか?
2926:2005/05/28(土) 21:00:25
>28

済みません。本気です・・・。
当たり前のことなのですか。
.ListIndexは-1でした。

3025:2005/05/28(土) 21:28:06
>>24
まだ説明不足だったorz
サイコロのイメージってのはImage1だから>>24の括弧の中のSaikoroをimage1.Pictureにすればいいでしょうか?
31デフォルトの名無しさん:2005/05/29(日) 00:28:39
>>26
click()でなく、DropDown()で。
               ↓
Private Sub Combo1_DropDown()
With Combo1
.Clear
.AddItem "111"
.AddItem "222"
.AddItem "333"
.Text = "111" '** これが表示されない
End With
End Sub
3226:2005/05/29(日) 09:44:25
>>31
ありがとうございました。
目から鱗です。
33デフォルトの名無しさん:2005/05/29(日) 23:46:19
APIが返すNULLハンドルはVBでは何と等しくなるんでしょうか?
34デフォルトの名無しさん:2005/05/29(日) 23:50:14
>>33
Declare 〜 As Long
で宣言していれば、Long の 0。
3533:2005/05/30(月) 00:33:22
>>34
ありがとうございます。参考にさせてもらいます。
3624:2005/05/30(月) 10:02:14
>>30
違う。
currentSaikoroはInteger型の変数。
作り方を考えてみれ。
37デフォルトの名無しさん:2005/05/30(月) 19:02:49
>>36
なるほどそうだったんですか。今日出来なかったから最終手段として糞長いIf文やりましたよ('A`)
If option1(0).value=ture and image2(A).visible=ture then
ElseIf 以下略


OTZ
38デフォルトの名無しさん:2005/05/31(火) 08:14:04
ture?
39デフォルトの名無しさん:2005/05/31(火) 11:58:33
VB6を使って販売購買のソフト開発してる人いますか?
メインとなる販売画面の明細部分で行き詰まってしまいました、実際開発してる
人はどういった手法を使っているのか是非教えてください。
40デフォルトの名無しさん:2005/05/31(火) 12:50:57
>>39
まず、自分が何を理解できていないか、何が疑問なのか理解すべきでは?
そんな質問誰も答えられんよ。

VBでプログラム作るんですけど、どういう手法で作るんですか?
あなたが聞いてるのは上記質問と同レベル。
41デフォルトの名無しさん:2005/05/31(火) 13:42:03
>>40
失礼しました。説明が全くできていませんでした。
行き詰まっている個所は、商品名・数量・単位・単価・金額を一組とした行の部分で
す。今はフォームに10組配置するだけで、10行の明細しか作れないような状態で
す。
何かもっといい方法があるとは思うのですが、見つけることができません。もし
同じようなソフトを開発されている方がいたら是非アドバイスをお願いします。
42デフォルトの名無しさん:2005/05/31(火) 14:31:02
>>41
お前、クビ。
43デフォルトの名無しさん:2005/05/31(火) 14:34:31
>>41
リスト、グリッドなどのコントロールを使う。
但し、スクロール嫌いなお客様で、前頁・次頁のページ切替を意図して>>41のUIを求めてる可能性があるので注意。
44デフォルトの名無しさん:2005/05/31(火) 15:51:53
前項、次項で書き換えればいいだけだろ?
45デフォルトの名無しさん:2005/05/31(火) 16:10:53
Set xmldoc = CreateObject( "Microsoft.XMLDOM" )
xmldoc.async = false

fname=InputBox("ファイル名を入力して下さい。","ファイル名")
if ( fname <> "") Then
rtn = xmldoc.load( fname )
If rtn = True Then
MsgBox( "ファイル内は正常です。" )
Else
MsgBox( "エラー!" & vbCrLf & _
"行番号 : " & xmldoc.parseError.line & vbCrLf & _
"内容  : " & xmldoc.parseError.reason )
End If
End If

これをファイル名を入力するのではなく、ドラッグアンドドロップで実行したいのですが、
うまくいきません。
どなたかお願いします。
46デフォルトの名無しさん:2005/05/31(火) 16:18:41
>>45
どこからどこへなにをドロップしてどううまくいってないのか書けよ
47デフォルトの名無しさん:2005/05/31(火) 17:59:41
Imageで絵を三つ出してボタンを設置するところまではできてます。
ボタンを押すと三つの絵がランダムに画面上に表示できるようにしたいのですが、できません。
RandomizeとImage.Move等を使うのは分かるのですが、乱数を理解できていない、かなりの初心者です。
教えてください。

48デフォルトの名無しさん:2005/05/31(火) 18:59:19
嫌です。
49デフォルトの名無しさん:2005/06/01(水) 02:39:56
自分のプログラムから他のプログラムのボタンを操作するのに
SendMessageでキャプションを取って目的のボタンを見つけるように
したのですが、ボタンの中にキャプションを取得しようとしても
空が帰ってきて取れないものがあります。
必ずキャプションが取れるような方法があるでしょうか?
または、キャプション以外にボタンを特定できるような情報が取得する方法が
あるでしょうか?よろしくお願いいたします。
50デフォルトの名無しさん:2005/06/01(水) 03:31:34
IDやらなんやらウインドウクラス名やら
51デフォルトの名無しさん:2005/06/01(水) 08:07:05
どこかに書いてあると、思うのですが・・・
探せませんでした。
教えてください。

VB6でファイルメーカーを読むサンプルです。

なにとぞ、教えてください。
52デフォルトの名無しさん:2005/06/01(水) 19:21:01
Windows 2000 Professional SP4, WSH(VBScript) 5.6 です。
ExecNotificationQuery を使ってアプリケーションログの監視をしているのですが、
ときどき、TargetInstance.InsertionStrings に値が入っていないらしく
for each で「オブジェクトがコレクションではありません。」というエラーになります。
オブジェクトがコレクションかどうか確認する関数はありますか?

以下、該当部分のコード:
Set events = GetObject("winmgmts:{impersonationLevel=impersonate,(Backup, Security)}!\\.\root\CIMV2") _
.ExecNotificationQuery("select * from __instancecreationevent where targetinstance isa 'Win32_NTLogEvent' and targetinstance.EventType = 1")

do
set NTEvent = events.nextevent ()
for each str in NTEvent.TargetInstance.InsertionStrings
wscript.echo "InsertionStrings: " & str
next
loop
53デフォルトの名無しさん:2005/06/01(水) 21:49:15
俺はファイルメーカー持ってないんでよく分からんけど、
ODBC経由ならデーターベースが違っていても
レコードの取り出し方はある程度同じなはず。

>>51
ttp://www.kipwmi.com/fmbbs/wwwlng.cgi?print+200312/03120047.txt

excelでこんな風にデータアクセスできるなら、
vbでもできるんじゃね?
54デフォルトの名無しさん:2005/06/02(木) 07:51:37
>>52
スレ違い
55デフォルトの名無しさん:2005/06/02(木) 11:32:50
FX = lnX0 - 2 '解こうとする関数FX

DF = '関数FXの微分式

X1 = X0 - (FX / DF) 'ニュートン法の基礎式よりX1を計算

DX = Abs((X1 - X0) / X0) 'X1とX0との隔たりを調べる変数DXを計算

N1 = N1 + 1 '繰り返しの回数N1をカウント




'このVBコードの一部を書き換えて√2の近似値を求めるプログラムを作成したいのですが
分からないです。どなたか教えてください
56デフォルトの名無しさん:2005/06/02(木) 13:23:59
>>55
アルゴリズムの質問はアルゴリズムスレへ。
http://pc8.2ch.net/test/read.cgi/tech/1090227743/
57デフォルトの名無しさん:2005/06/02(木) 14:11:54
VB6.0 SP6でコンパイルしたexeはVB6.0SP4のランタイム環境で
動作可能でしょうか?
58デフォルトの名無しさん:2005/06/02(木) 14:49:17
>>57
可能不可能というより、考えたくもない、汚らわしい、おぞましい。
59デフォルトの名無しさん:2005/06/02(木) 15:10:35
VB6.0 SP4どこかに落ちてないですかねー
60デフォルトの名無しさん:2005/06/02(木) 15:34:14
俺はService PacKなんて一つも当ててないんだが・・・
いやOSもXPだがSP2も当ててないし、VB6.0もそのまま・・・
61デフォルトの名無しさん:2005/06/02(木) 16:00:19
というか バグとか治ってるからパッチあてれ
62デフォルトの名無しさん:2005/06/02(木) 16:54:50
いや、>>57のおかれてる状況はこうだろ?

昔のVB6のシステムで不具合か仕様変更が発生。
導入先のEXEのインストーラーを作ったのはVB6SP4の頃。
でもって、今かれの手元にある環境はVB6SP6。
そいでもって、客先にVB6SP6版新しいインストーラを作って入れた場合の不具合まで面倒見るほど工数なし。
6357:2005/06/02(木) 17:26:56
>>62
まさにそのとおりです。
SP4どこかにないですかねー。nyとかにあるかなー。
64デフォルトの名無しさん:2005/06/02(木) 17:27:06
>>57
なるほど、そういえばそうだな

しかし、手元の探してみたがSP5しかなかった
VS6.0SP4なら誰か必ず持ってると思われるが・・・


65デフォルトの名無しさん:2005/06/02(木) 17:59:25
こんなこともあろうかと、私はもってるんだが。
入手手段としたら、大昔のVBマガジンとかを探すしかないんじゃないのか?
またはMSDNの契約があれば、それの昔のCDを漁るとか。
6657:2005/06/02(木) 18:03:49
うpしてん
67デフォルトの名無しさん:2005/06/02(木) 18:04:26
>>66
お前の態度が気に入らない
6857:2005/06/02(木) 18:05:57
( ;´Д`)いやぁぁぁぁぁー!
69デフォルトの名無しさん:2005/06/02(木) 18:11:03
67は65(私)じゃない。
でもって、100MB以上あるのものでライセンスあるものはアップしません。
何処に住んでるかしらんが、秋葉の書泉とかLaoxなら運よければあるよ。
7057:2005/06/02(木) 18:19:17
skypeで直送ならどうでしょう?
71デフォルトの名無しさん:2005/06/02(木) 18:39:05
すでに開いてるIEを見つけて指定したURLに飛ばすのは
どう書けばいいんでしょうか?

Set objIE = CreateObject("InternetExplorer.application")

objIE.Navigate "指定したURL"

こんな感じで書いてるんですが新しいウインドウを開いてしまうんですよ
起動してるIE見つけて処理する方法を教えてください
72デフォルトの名無しさん:2005/06/02(木) 18:40:12
SP4からSP6にした場合のトラブルを考えるってそりゃ技術者の姿勢としては
正しいけど現実的には杞憂じゃないの?

ウダウダやってる時間だって工数に入ってるわけで。

っていうか、各バージョンのSP当たったランタイムのインストーラがベクターにあるよ。
でもVBのランタイム差し替えるには古いのアンインストールする必要があると思ったけど、
これってどうやるんだっけ?
7357:2005/06/02(木) 18:40:19
ShellExecuteでいいんじゃないですかー?
74デフォルトの名無しさん:2005/06/02(木) 18:41:20
アンインストールする必要があるのはこの場合古いのじゃなくて新しいのだね。
7557:2005/06/02(木) 18:49:25
>>72
トラブルというか基本的にはランタイムは配布不可能な状態です。
もっとメジャーバージョンアップならいいですが
クライアントの数がかなりあるので数ステップの修正のために
クライアントの環境を変えることは許されないのであります。
76デフォルトの名無しさん:2005/06/03(金) 00:56:10
>75
そういう話になるとむしろマネジメントの問題だぞ。

ってかその修正するexeのインストーラにSP6を含めりゃいいんじゃね〜の?
77デフォルトの名無しさん:2005/06/03(金) 01:51:06
クライアントの環境が変えられないっておもっくそ書いてあるが
78デフォルトの名無しさん:2005/06/03(金) 08:18:12
だからさあ、開発環境の方を合わせればいいんでしょ。
VB6クリーンインストールして、ベクターからSP4のランタイム拾ってくれば(ひょっとすると
順番は逆の方がいいかもしれないが)SP4インストールしたのと同じにできるんじゃないの。
7957:2005/06/03(金) 08:26:00
ランタイムでいいんですか?マジですか?

とりあえずSP3が見つかったのでこれでしのぐのはありですか?
SP3のexeならSP4でも動きますよね。
SP6のexeをSP4で動かすよりはマシですよね。
80デフォルトの名無しさん:2005/06/03(金) 08:28:53
馬鹿か
8157:2005/06/03(金) 11:32:21
静的なクラスモジュールってどうやって作成したらよいでしょう?
.NETのSharedみたいなやつです。
82デフォルトの名無しさん:2005/06/03(金) 12:11:25
VB6ではクラスでは不可では?
Moduleでやるしかないんじゃないのかと。
83デフォルトの名無しさん:2005/06/03(金) 18:11:32
プログラムを待機させるのに
ttp://homepage1.nifty.com/MADIA/vb/Tecnick/ShoriStop.htm
この方法をつかったんですがCPU使用率が100%になってしまいます
どうやったらCPU使用率を低くできるのでしょうか?
    Dim Now As Long

    Now = Timer
    While Timer < Now +1  
    DoEvents
    Wend
84デフォルトの名無しさん:2005/06/03(金) 18:23:11
>>83
Sleep() API
85デフォルトの名無しさん:2005/06/04(土) 00:52:23
>83
Timerコントロール
86デフォルトの名無しさん:2005/06/05(日) 06:25:54
コマンドライン引数を分割して配列に格納する方法と
名前付き引数を取得する方法を教えてください。

複数のファイルをD&Dしてそれを分ける方法としては
Split関数での分割が思いつきますが、パスに半角スペースがある場合に困ります。
引数が全て"で囲われてれば""" """でSplitすることも出来るのですが、
「c:\hoge.txt」と「c:\hoge hoge.txt」という二つのファイルを渡した場合、
Command関数は「c:\hoge.txt "c:\hoge hoge.txt"」という値を返すので
" "で分割しても""" """で分割してもうまくいきません。
一応文字列操作で対応させる方法は思いついたのですが、
vbsでwshのArgumentsプロパティを使ったときのように操作出来ないのでしょうか?

もう一つ、名前付き引数(コマンドラインスイッチ)なのですが、「-a=hoge」とか「/a:hoge」などの引数を渡した場合、
aスイッチの有無、及びその要素値"hoge"を得るにはどうすれば良いのでしょうか?
これもwshのプロパティでは
Wscript.Arguments.Named.Exists("a")でaスイッチの有無、
Wscript.Arguments.Named("a")でaスイッチの値である"hoge"
Wscript.Arguments.Unnamedで名前無し引数を返せますが、
これをVBでやるにはどうすれば良いのでしょうか?
こちらも地道に文字列操作で条件判断させるしかないのですか?

最近VB使い始めたのですが、ExcelVBAやvbsを使っていたので文字列操作含め
VBAにあるものは大体わかるのですが、ExcelVBAには起動時引数という概念が無いので
引数の扱いで躓いています。
環境はWindowsXPsp1、Visual Basic6.0sp5です。
87デフォルトの名無しさん:2005/06/05(日) 20:02:06
>>86
wshでできることをやろうとするなら、VBでwshのオブジェクトを宣言して使えばよいのでは?
8886:2005/06/05(日) 20:28:22
>>87
具体的にどうやるのですか?
普通に宣言してもArgumentsプロパティに引数が入ってないのですが。
それ以外の機能はwshのオブジェクトを宣言して普通に使えてますけど。
89デフォルトの名無しさん:2005/06/05(日) 21:05:45
>>88
ゴメン思い付きで書いたからできないかもしれない。
90デフォルトの名無しさん:2005/06/05(日) 21:32:47
>>86
やったことないけど、API の CommandLineToArgvW
9186:2005/06/05(日) 21:32:59
>>89
そうですか。。。_| ̄|○

では引き続き>>86をお願いします。
92デフォルトの名無しさん:2005/06/06(月) 06:50:46
Public Function Get_LineText(ByVal lngLine As Long) As String
Dim strBuffer As String * 512
Dim Result As Long


strBuffer = String$(512, vbNullChar)
Result = SendMessage(Form1.RichTextBox.hWnd, EM_GETLINE, lngLine, ByVal strBuffer)
Get_LineText = Left$(strBuffer, InStr(strBuffer, vbNullChar) - 1)
End Function

という指定行取得する関数を作りました
はじめはうまく機能していたのですが、
rtfTextをいじって色の変更とかいろいろやってて気づいたら
SendMessageの時点でstrBufferに文字列が代入されないようになっていました。
どなたか解決法をご存知でないでしょうか?
9386:2005/06/06(月) 09:41:57
>>90
CommandLineToArgvWでググってもヒット数が少なく、
名前付き引数を得る方法などは分かりませんでした。
失礼ながら「出来るかもしれない」とか「やったことないけど」とかではなく
実際に出来る方法を具体的に教えてください。

VB使い始めたのが昨日からで、ExcelVBAも基本的なところは覚えたつもりですが
まだ使い始めて1ヶ月ちょっとなので、ヘボいものだとは思いますが、
一応自分なりにやってみた方法を以下に書きます。
Public arg() As String, argUnnamed() As String
Dim sn() As String, sv() As String, sc As Byte

Sub setarg()
 If Command = "" Then
  ReDim arg(0)
  arg(0) = ""
 Else
  Dim foo As Variant, bar As String, spl As Boolean, i As Integer, j As Byte
  foo = Split(Command, " ")
  spl = True
  i = -1
  For j = 0 To UBound(foo)
   If spl Then
    bar = foo(j)
    i = i + 1
   Else
    bar = bar & " " & foo(j)
   End If
   If i Mod 10 = 0 Then ReDim Preserve arg(i + 10)
   If UBound(Split(foo(j), """")) = 1 Then spl = Not spl
   arg(i) = Replace(bar, """", "")
  Next j
94デフォルトの名無しさん:2005/06/06(月) 09:42:16
  If i >= 0 Then ReDim Preserve arg(i)
  i = 0
  For j = 0 To UBound(arg)
   If Left(arg(j), 1) Like "[-/]" Then
    If sc Mod 10 = 0 Then ReDim Preserve sn(sc + 10), sv(sc + 10)
    foo = Split(arg(j), "=")
    If UBound(foo) = 0 Then foo = Split(arg(j), ":")
    sn(sc) = Mid(foo(0), 2)
    If UBound(foo) = 1 Then sv(sc) = foo(1)
    sc = sc + 1
   Else
    If i Mod 10 = 0 Then ReDim Preserve argUnnamed(i + 10)
    argUnnamed(i) = arg(j)
    i = i + 1
   End If
  Next j
  If sc > 0 Then ReDim Preserve sn(sc - 1), sv(sc - 1)
 End If
 If i > 0 Then
  ReDim Preserve argUnnamed(i - 1)
 Else
  ReDim argUnnamed(0)
  argUnnamed(0) = ""
 End If
End Sub
95デフォルトの名無しさん:2005/06/06(月) 09:42:40

Function argNamed(csn As String) As String
 If sc = 0 Then Exit Function
 Dim i As Byte
 For i = 0 To UBound(sn)
  If csn = sn(i) Then
   argNamed = sv(i)
   Exit Function
  End If
 Next i
End Function

Function argNamedExi(csn As String) As Boolean
 argNamedExi = False
 If sc = 0 Then Exit Function
 Dim i As Byte
 For i = 0 To UBound(sn)
  If csn = sn(i) Then
   argNamedExi = True
   Exit Function
  End If
 Next i
End Function
9686:2005/06/06(月) 09:43:26

これを標準モジュールに書いて、Form_Load時にCall setarg。これで
1) argという配列に全ての引数が格納され、
2) argUnnamedに名前無し引数が入ります。
3) argNamed("a")で名前付き引数の値が返り、
4) argNamedExi("a")で名前付き引数の有無がブール値で返ります。

今のところは動作的には問題ないのですが、今後起動時引数を扱うソフトを作るたびに
これを使うのもウザいので、もっと簡単に出来る方法を探してます。

ベテランの方から見れば上記のコードも直すべきところは沢山あるでしょうが、
コードの手直しをお願いしたいのではなく、
上記 1)〜4)の様に「全ての引数を格納した配列」、「名前無し引数を格納した配列、
「名前付き引数の有無と値の内容」を扱える方法、又は
VB上でwshのArgumentsプロパティを扱える方法などを教えていただきたい所存です。
どうか宜しく御願いいたします。
97デフォルトの名無しさん:2005/06/06(月) 15:32:31
Kill ("C:\Documents and Settings\ユーザ名\hogehoge.txt")

ユーザ名が A という変数に入っている場合はどう書けばいいのでしょうか?
98デフォルトの名無しさん:2005/06/06(月) 15:53:31
>>97
Kill ("C:\Documents and Settings\" & A & "\hogehoge.txt")
9997:2005/06/06(月) 16:14:59
>>98
Thx.
100デフォルトの名無しさん:2005/06/06(月) 16:44:09
Win2k、VB6SP6で、Imageコントロールの表示方式なんだけど、
画像がコントロールより大きい時は縦横比をそのままでコントロール内に収まるように縮小、
画像がコントロールより小さい場合は等倍表示にしたいんだけど、VBAで使えてた

If Image1.Width < Image1.Picture.Width Or Image1.Height < Image1.Picture.Height Then
  Image1.PictureSizeMode = fmPictureSizeModeZoom
Else
  Image1.PictureSizeMode = fmPictureSizeModeClip
End If

が使えないんだよね。(上記は実際には* 567 / 15000が入る)
調べてみるとStretchプロパティがPictureSizeModeプロパティに近いんだけど、
PictureSizeMode = fmPictureSizeModeClip → Stretch = False
PictureSizeMode = fmPictureSizeModeStretch → Stretch = True
の設定は出来ても、fmPictureSizeModeZoomの設定が出来ないみたい。

PictureSizeMode = fmPictureSizeModeZoomと同じ状態を実現する為には
Stretch = TrueでImageコントロールのサイズ自体を変えていくしかないのかな?
激しく面倒なのでPictureSizeMode = fmPictureSizeModeZoomと同じような
設定を知ってる方居ましたら教えてください。
PictureSizeMode = fmPictureSizeModeZoomはStretch = Trueの縦横比固定版で
定義としては「縦横比を固定したまま、イメージをコントロールのサイズに拡大または縮小する」
という感じです。
101デフォルトの名無しさん:2005/06/06(月) 17:00:16
>>100
VB6.0では ImageコントロールのWidthプロパティとHeightプロパティは自動的にPictureのサイズになるよ。
102デフォルトの名無しさん:2005/06/06(月) 18:26:54
VB6.0でクラスプログラミングを勉強したいのですけど、なんかいいHPとか本とかありますか??
103デフォルトの名無しさん:2005/06/06(月) 18:36:25
104100:2005/06/06(月) 20:36:57
> VB6.0では ImageコントロールのWidthプロパティとHeightプロパティは自動的にPictureのサイズになるよ。
それが困るんですよ。
コントロールより小さい画像の場合はそれでいいんですけど、
大きい画像の場合ImageコントロールのWidth、HeightがPictureのサイズになるのではなく
Pictureのサイズが縦横比固定でImageコントロールのWidth、Heightに収まるように縮小して欲しいわけで。
105デフォルトの名無しさん:2005/06/06(月) 21:05:52
>>104
それだったら納めたいWidthとHeightの変数持って、
比率計算すりゃ良いだけ。
106デフォルトの名無しさん:2005/06/06(月) 21:50:37
outlook expressのメール内容をデータベースに登録する
というプログラムを作成しています。
mapi コントロールを使えば、受信トレイの内容を取得できるのですが、
送信済みトレイの内容を表示させる方法はないでしょうか?

自分で色々探したところ、ある閉鎖されたホームページに
dbxファイルをvbで読むというサンプルがあったらしいのですが、
残念ながら肝心のソースの部分はアーカイブでも読むことが出来ません。

もし、outlook expressの送信済みトレイにアクセスするないし
dbxファイルの読む方法をご存知の方がいましたら教えてください。
よろしくお願いします。
107100:2005/06/06(月) 22:09:21
>>105
それが今やってる方法です。
でもVBAに比べて面倒なので、何か
PictureSizeMode = fmPictureSizeModeZoom
と同等の設定は無いかと思ったのです。
それぞれの設定はこんな感じですが

               コントロールサイズ  元画像サイズ  縦横比
PictureSizeMode = 0     無視          等倍      固定
Stretch = False        無視          等倍      固定

PictureSizeMode = 1     合わせる       無視      無視
Stretch = True         合わせる       無視      無視

PictureSizeMode = 3     合わせる       無視      固定

この一番下の設定を計算でやると、
Img.He/Pic.HeとImg.wi/Pic.Wiのどちらが小さいか、
その小さい方が1未満か、の両方を計算させ、
小さい方が1未満ならその比率を、1以上なら1をImg.HeとImg.wiの両方に掛けなくてはならないです。
設定が無いなら仕方ないですが、たとえば5の10乗を出すのに「5^10」を使わず
buf = 5
For i = 2 To 10
  buf = buf * 5
Next i
なんてやってたら馬鹿馬鹿しいでしょ。特にVBAではこの例の「5^10」の例に該当する方法があるので
VB6でもForステートメントでの計算の例のような面倒なことをやらずに「5^10」の例のように出す方法があれば
利用したいと思ってここに来ました。
108デフォルトの名無しさん:2005/06/07(火) 00:46:14
細かい動きができる = 細かく設定しなくちゃいけない
VB は(VBAと比較して)色々できる分、色々自分で書かなくちゃいけない。

>>107
その例えはオカシイ。
109デフォルトの名無しさん:2005/06/07(火) 01:04:38
>108
( ゚д゚)ポカーン..........m9(^Д^)プギャー
110デフォルトの名無しさん:2005/06/07(火) 03:06:36
┌────────────────┐  ┌────────────────┐
│Form1                     │  │Form1                     │
├────────────────┤  ├────────────────┤
│┏━━━━━━━┳━┓          │  │┏━━━━━━━┳━┓          │
│┃┌─────┐┃▲┃          │→│┃└─────┘┃▲┃          │
│┃│TextBox1 ..│┃■┃          │  │┃┌─────┐┃| .|┃          │
│┃└─────┘┃■┃          │  │┃│TextBox4 ..│┃| .|┃          │
│┃┌─────┐┃■┃          │  │┃└─────┘┃■┃          │
│┃│TextBox2 ..│┃| .|┃          │  │┃┌─────┐┃■┃          │
│┃└─────┘┃| .|┃          │  │┃│TextBox5 ..│┃■┃          │
│┃┌─────┐┃▼┃          │←│┃└─────┘┃▼┃          │
│┗━━━━━━━┻━┛          │  │┗━━━━━━━┻━┛          │
└────────────────┘  └────────────────┘
  ┃│TextBox3 ..│┃←この部分は表示しない
  ┃└─────┘┃
  ┃┌─────┐┃
  ┃│TextBox4 ..│┃
  ┃└─────┘┃
  ┗━━━━━━━┛
上図の太枠の部分のようにコントロールを配置したいのですが、どうしたら良いでしょうか?
▲■はスクロールバーです。TextBox1〜4の部分は任意のコントロールを配置出来て、
スクロールバー付きの小窓で任意の場所を表示出来るようにしたいです。
Formの右の空いてる部分にも他のコントロールを配置します。

実際にTextBoxしか割り当てないなら代わりとなるものもあるのですが、
任意のコントロールを割り当てられるものがわかりません。
MDIとも違うし、スクロールバーの値に対してシコシコと個別にコントロールの位置や表示を変えるのもイヤだし。
どうすればいいのかわかる方、ご教示お願いします。WinXP VB6SP6です。
111デフォルトの名無しさん:2005/06/07(火) 06:50:44
>>110
適当に作るなら、たとえばピクチャボックスの「中に」ピクチャボックスを作り、
その「中に」テキストボックスを作ってサイズと表示位置を調整してやればできなくもない。
そういうコントロール作っても可能だし。
112デフォルトの名無しさん:2005/06/07(火) 06:53:56
あ、よく読んでなかった。111は取り消し。
113デフォルトの名無しさん:2005/06/07(火) 07:26:53
リストボックスでキーを押すと、
名前の先頭が押したキーに一致する位置に選択が移ってしまいますが、
コレを無効にするにはどうすれば良いですか?
たとえば「abc, def, ghi」という3項目のリストがあって、リストボックスにフォーカスがある時に
Dキーを押すとdefに選択が移ってしまうのを防ぎたいのです。
選択が変わってしまってから戻す方法は分かるのですが、
選択が変わらない方法がわかりません。
VB6SP5です。宜しく御願いします。
114デフォルトの名無しさん:2005/06/07(火) 07:52:02
>113
Lockedでいいんじゃないの?
115デフォルトの名無しさん:2005/06/07(火) 08:00:03
>>112
え? 違うの? よくわからん。orz
116デフォルトの名無しさん:2005/06/07(火) 08:12:25
>>114
Lockedプロパティはテキストボックスにはあるけど
リストボックスには無いようですが。
コードで無理矢理Locked = Trueを指定してみたけどエラー出るし。
117デフォルトの名無しさん:2005/06/07(火) 08:25:54
>>111でいいと思うけど
118デフォルトの名無しさん:2005/06/07(火) 08:26:03
キーボードイベント(KeyPress?)でキー入力をキャンセルしてやるだけだと思うけど。
119デフォルトの名無しさん:2005/06/07(火) 08:29:55
>>116
ローテクだけど、各データの前に半角スペース入れるとか。
左にくっつきすぎるのでいつも入れてる。
120デフォルトの名無しさん:2005/06/07(火) 09:04:12
>>118
出来ました。
ありがとうございます。

>>119
こちらもありがとうございます。
今回は>>118さんの方法を使わせていただきますが
>>119さんの方法も覚えておきます。
121デフォルトの名無しさん:2005/06/07(火) 09:47:54
>>117
よくねーだろ
122デフォルトの名無しさん:2005/06/07(火) 10:12:00
よくねーの?
123デフォルトの名無しさん:2005/06/07(火) 11:46:58
「←この部分は表示しない」の部分のAAがかえって誤解を生んでるような。
124デフォルトの名無しさん:2005/06/07(火) 12:25:11
>>121
>>111でいいと思うけど、何がよくねーの?
125デフォルトの名無しさん:2005/06/07(火) 14:06:18
>>123
だな。
>>111だと標準じゃスクロール操作は出来ないだろ。
質問者がイヤだと言ってる"スクロールバーの値に対してシコシコと"やれば出来なくもないけど。
126デフォルトの名無しさん:2005/06/07(火) 17:46:15
テキストボックスかラベルで文章をセンタリング・右寄せなどにできますか?
127デフォルトの名無しさん:2005/06/07(火) 17:54:08
つ Alignment プロパティ
128デフォルトの名無しさん:2005/06/07(火) 20:43:46
>>125
ピクチャーボックスの中のピクチャーボックスのtopをいじるだけで全部動くけど?
129デフォルトの名無しさん:2005/06/07(火) 20:52:25
>110
DataRepeaterコントロールじゃアカンの?
詳細はMSDNを「データ リピータ (DataRepeater) コントロールの使い方」で検索ね。
130デフォルトの名無しさん:2005/06/07(火) 20:54:40
>>129
なんでDataRepeater???
131デフォルトの名無しさん:2005/06/07(火) 21:07:52
>>128
たぶんそれだとスクロールバーをドラッグしたとき、移動中はスクロールせず、
バーポインタを放した時だけ移動するでしょ。
そういうのがヤなんじゃないの?
132デフォルトの名無しさん:2005/06/07(火) 21:27:00
>>127
どもっす!
133110:2005/06/07(火) 21:29:13
>>111
自分なりに考えてフレームの中にフレームを使って動かす方法とかもやったけど
>>131さんが書いてるようにバードラッグでの移動は出来てもスクロールが出来ないので避けたいです。

>>123,>>125
そうですか。。。
とにかくリストボックスに表示しきれない数のデータを入れたときのような操作感で
中にコントロールを任意配置できるものを探してます。

>>129
アカンです。
>>110でも書いたように>>110のは例で、実際に同じコントロールを並べるのではなく、
自由にコントロールを配置出来ないと困るので。
規則的に並べるだけならDataRepeaterコントロールでも良さそうですが。
134デフォルトの名無しさん:2005/06/07(火) 21:35:25
ttp://picopico.dip.jp:80/ragnarok/data/4/1118111052876.jpg
すいません、質問です
この画像のように文字に影をつけることってできますか?
ゲームボーイっぽい画面にしたいんですが・・
細かい調節に苦しんでるので最初からこういうことができると楽だと思ったんですが、できないでしょうか?
無理なら白文字のテキストボックスと黒文字のを二つ重ねて表現しようと思ってます。
135デフォルトの名無しさん:2005/06/07(火) 21:43:24
>>134
TextOutでもやれるけど、ラベル使ったほうが楽かもしれんね。
あとはStrokePathとか。
これは効果が少し違うけど憶えとくと幅が広がるかな。
136デフォルトの名無しさん:2005/06/07(火) 21:46:29
>>135
ありがとうございました!
早速やってきます
137デフォルトの名無しさん:2005/06/07(火) 22:02:30
コモンダイアログで指定ディレクトリを開く方法を教えてください。
とりあえずアプリのカレントディレクトリを開きたいのですが
ChDrive App.Path '又は(Left(App.Path,1))
ChDir App.Path
CommonDialog1.ShowOpen
ではダメでした。
138デフォルトの名無しさん:2005/06/07(火) 22:05:08
つ InitDir プロパティ
139デフォルトの名無しさん:2005/06/07(火) 22:16:52
>>138
(*^ー゚)b サンキュ!!
140デフォルトの名無しさん:2005/06/07(火) 22:20:55
>>133
スクロールが出来ないという意味がわからないのだが。
サブクラス化をしたくないという事?
141デフォルトの名無しさん:2005/06/07(火) 22:25:40
わからない奴は黙ってればいいという法則

あ、俺も黙ってられなかった…
142140:2005/06/07(火) 22:34:56
解決の手助けになれば、などという余計な事をしてしまったようだ。
14386:2005/06/07(火) 22:39:15
>>86もお願いします
144デフォルトの名無しさん:2005/06/07(火) 22:41:38
>>143
1文字づつ解析すればいいじゃないか
14586:2005/06/07(火) 22:59:53
>>144
いや、前にも書いたようにそれが嫌だからここに来てる次第でして。
文字列的に解析処理する方法は>>93-96で書いたように一応ヘタレなりにやってみたのですが、
動作は問題なくてもこれを毎回使うのもウザいのでwshのように扱える方法を探してます。
146デフォルトの名無しさん:2005/06/07(火) 23:38:00
>>145
>毎回使うのもウザいので
DLL化すればいいのでは?取得したCommand関数の内容を渡すだけですし…
14786:2005/06/07(火) 23:55:24
>>146
VB初めて3日の自分にはDLL化する方法なんて分かりませんが、
程々に催促しながらもうしばらく待って、良い方法を知ってる方が居ないようなら
コードを煮詰めて、DLLする方向でやってみます。
148デフォルトの名無しさん:2005/06/07(火) 23:58:34
>>147
標準モジュールにする事の、何が気に入らないんだ
149デフォルトの名無しさん:2005/06/08(水) 00:00:13
>>131
Scrollイベントにも同じコードを書けばよかったような。
150デフォルトの名無しさん:2005/06/08(水) 00:01:40
わからない奴は黙ってればいいという法則

あ、俺も黙ってられなかった…
151デフォルトの名無しさん:2005/06/08(水) 00:15:19
>148
ちょっと前にでた指数計算の例と同じだよ
簡単に出来る方法があるならわざわざ面倒な処理はしたくないってことだろうな
152デフォルトの名無しさん:2005/06/08(水) 00:22:29
>>151
中身は見てないが、93-96のソースが存在していて、その上で
別の方法を探すほうが面倒だと思うのは俺だけか
153デフォルトの名無しさん:2005/06/08(水) 00:24:59
>131,133
DoEvents かませば移動中もスクロールするけど?
154153:2005/06/08(水) 00:31:46
>153の補足
*_Change() と *_Scroll() の両方に書く必要があるね。
155デフォルトの名無しさん:2005/06/08(水) 00:37:49
>152
>93-96は奴が自分で書いたものでしょ
俺はコマンドライン操作をするアプリは、VBは起動中のコマンドライン操作が面倒という理由で
他言語使ってるのでVBのコマンドライン周りはよくわからんが
156デフォルトの名無しさん:2005/06/08(水) 00:41:24
>>155
だからさー
自分で作ったコードがあって、何でほかの方法探すという面倒な事しなきゃならないのさ
157デフォルトの名無しさん:2005/06/08(水) 00:45:02
>>152=156
VBコードは書けても日本語読めない方ですか?
158デフォルトの名無しさん:2005/06/08(水) 00:50:10
>>157
日本語は読めるよ
理由を説明してくれないか
159デフォルトの名無しさん:2005/06/08(水) 01:08:27
> 簡単に出来る方法があるならわざわざ面倒な処理はしたくないってことだろうな
この部分が理解できてないからじゃねーの?
たとえばVB上でWindows Script Hostの
Arguments、Unnamed、Namedプロパティ、Existsメソッドが使えたとしたら、
dll化したとしても標準モジュールに書いたとしても、
93-96を使うのは無駄なことに違いないいから。
160デフォルトの名無しさん:2005/06/08(水) 01:19:33
>>156
そんなもん、自分で作るよりかバグも少ないことが期待できるし、
一般的な方法があるのならそれにあわせたほうがいいし。

皆が共通のコードを書いているのに一人だけ変なの使っていたら、
この関数何?なんでこんなの使っているの?って話になる。
161デフォルトの名無しさん:2005/06/08(水) 10:24:48
わからない奴は黙ってればいいという法則

あ、俺も黙ってられなかった…
162デフォルトの名無しさん:2005/06/08(水) 12:48:42
すんません、質問です
pictureboxの画像の上にラベルで文字を重ねて一つの画像を作ったのですが、
そのpictureboxをSavePictureで保存してもラベルの文字も画像と判断してくれません
このpictureboxの画像とラベルを重ねたものを画像として保存するにはどうすればいいですか?
一応windowsキー+プリントスクリーン→ペイントに貼り付けで保存はできるんですが・・
できればVB一つで保存できる方法があったら知りたいです。
163デフォルトの名無しさん:2005/06/08(水) 13:11:32
>>162
解像度が荒くていいならFormのハードコピーを取るサンプルみればできるっしょ。
そこらじゅうにサンプルがありますよ。

そうじゃなく綺麗に取りたいなら、デバイスコンテキスト周りとかをきちんと学習すればできるようになる。
164デフォルトの名無しさん:2005/06/08(水) 13:13:17
>>163
なるほど!ありがとうございました
165デフォルトの名無しさん:2005/06/08(水) 13:17:33
>>162
PictureBoxにラベルの文字をPrintすればいいだけのような。
166デフォルトの名無しさん:2005/06/08(水) 14:09:17
>>86
オレが使っている標準モジュールを晒しておく。
今のところコレを使っていて不都合は無い。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/517.lzh
167デフォルトの名無しさん:2005/06/08(水) 15:49:06
Win2000 Excel2000を使用しています。

VB6.0 上でエクセルの列A,BをコピーしG,Hに貼付けようと下記のようにしているのですが
列G,Hを選択しているところまでは確認できましたがうまく貼りつきません。

xlSheet.Range("A:B").Select
xlSheet.Range("A:B").Copy
xlSheet.Range("G:H").Select
xlSheet.Range("G:H").PasteOK

よろしく、お願いします。
168162:2005/06/08(水) 17:03:57
>>164
まさかこんなところで騙りが発生するとはorz
>>163
今日一日色々試したけどだめでした・・
フォームごと印刷したりPCごと落ちたりと散々な結果に
デバイスコンテキスト勉強して見ます
>>165
分かりませんでした・・
169デフォルトの名無しさん:2005/06/08(水) 18:22:31
スプレッドシートのセルをコンボボックスに指定した場合、ListIndexプロパティ
と同じ意味にあたるプロパティは何でしょうか?
マウスではなくスペースキーを押したときにリストを変更したいです。
よろしくお願いします。
170162:2005/06/08(水) 21:05:39
>>165
できました。が、好きな位置にプリントできずに困っています
ttp://picopico.dip.jp/ragnarok/data/4/1118111052876.jpg
こういうのを作っていまして、背景はbmp、文字はラベルで貼り付け、中央右のキャラクターは画像読み込みで処理しているんです
あとはこれを一括で保存・ファイルに出力できれば完成なのですが・・探しても>>165さんのやり方しか見つからないです
171デフォルトの名無しさん:2005/06/08(水) 22:16:09
CurrentX,YでPrintの位置は調整できたようなきがする。
172デフォルトの名無しさん:2005/06/09(木) 02:30:39
Dim Count As Integer

For Count = 1 to 10
LabelX.Caption = Count
Next Count

このように LabelXのところをカウンタ変数に合わせて
Label1 ~ Label10 にしたいのですが LabelX のことろ
はどうかけばいいのでしょうか?
173デフォルトの名無しさん:2005/06/09(木) 02:39:33
>>172
コントロール配列にしておくか、配列を確保しておきSetをしておいて
LabelA(x).Caption =
のように。
174172:2005/06/09(木) 02:41:59
>>173
夜分にありがとうございました。
175デフォルトの名無しさん:2005/06/09(木) 03:56:54
二次元配列のソート方法を教えてください。
たとえばhoge(3, 2)という配列があって、
a  3  6/8
b  1  6/7
c  4  6/5
d  2  6/6
みたいな内容の場合、
   ▲昇順
b  1  6/7
d  2  6/6
a  3  6/8
c  4  6/5

      ▼降順
a  3  6/8
b  1  6/7
d  2  6/6
c  4  6/5
のような感じでソートしたいのです。
よろしく御願いします。
176デフォルトの名無しさん:2005/06/09(木) 07:50:12
>>175
一次元配列のソートと同じだと思うけど、どこで詰まってるのかな。
177デフォルトの名無しさん:2005/06/09(木) 08:47:30
>>176
情報があいまいすぎでしたね。スミマセン。
実際の配列要素数は数十万*15〜20で、型はString、
要素は英字+記号、数字+記号、英数、数字のどれかです。

自分が今まで一次元配列のソートに使っていたアルゴリズムを流用すると
ソートのキーとなる要素に重複値があるとうまくソートされないんです。
他にはMSHFlexGridに書き出してソートしてまた変数に格納する方法や
それよりも更に時間が掛かるような方法しか思いつかないし・・・
何か良い方法はありませんか?
178デフォルトの名無しさん:2005/06/09(木) 09:01:14
>>177
自前のコードをデバッグするのは?
もし処理速度が問題なら、DLLを利用するとか。
VectorにあったDLLは最大10万件だったけど。
179デフォルトの名無しさん:2005/06/09(木) 09:53:46
>>177
>>数十万*15〜20
ってどういう事?ファイルがそれだけあるって事かな?
結局ソート対象は数十万で良いのかな?
180デフォルトの名無しさん:2005/06/09(木) 10:08:53
>>169お願いします。
181167:2005/06/09(木) 10:24:39
自己解決しました。
182デフォルトの名無しさん:2005/06/09(木) 10:47:06
質問させていただきます。 長文になりますが勘弁してください。
ACCESSのmdbより、データを検索する処理があるのですが、(ループの内部)
高速化のためにキャッシュ処理を使うように変更することになりました。

この処理は、端末の利用者がデータ検索をする時に使用されるものですが、
端末利用者の検索条件設定(年齢層[子供、大人、老人等]や、職業[会社員、自営業等])で
検索対象となるテーブルが可変します。
また、ループ処理で、同じレコードが再ヒットする可能性は極めて低いです。
なので、最初の検索時に対象のテーブルのデータを全て構造体配列に持って、
2度目以降の検索では、この配列を見るようにしようと考えていますが、
ツマラン処理の割には手間が掛かりそうです。(配列からの検索処理の記述とか)

何か他に簡単な方法はないものでしょうか。
漠然とした回答でも結構ですので、何かアイデアがあればお願いします・・・。
なお、使用しているVBのバージョンは6.0です。よろしくお願いします。
183デフォルトの名無しさん:2005/06/09(木) 10:50:09
>>169
言っている事が判らない。
正式なコントロール名を使用して説明してくれ。
184デフォルトの名無しさん:2005/06/09(木) 11:02:09
>>183
すいません、質問がおかしかったですね。
使用コントロールはvaSpreadです。ツールボックス内のComboBoxをform
に貼り付けている場合には
Select Case KeyCode
Case vbKeyReturn, vbKeyDown
KeyCode = 0
Case vbKeyUp
KeyCode = 0
Case vbKeySpace
If Combo1.ListIndex = 3 Then
Combo1.ListIndex = 0
Else
Combo1.ListIndex = Combo1.ListIndex + 1
End If
Case vbKeyBack
Combo1.ListIndex = -1
End Select
の手法でComboBoxの中身をどんどん変更できたのですが、vaSpreadでセル
をComboBoxに指定して同じような動きをさせたいのですが、ListIndexプ
ロパティが見つけられずに困っています。
185デフォルトの名無しさん:2005/06/09(木) 11:24:54
>>184
市販されてるVB用ライブラリのヤツですか? >>SPREAD
 With Spread
   .Row = 2' セルを設定
   .Col = 2
   i = .TypeComboBoxCount
   .TypeComboBoxIndex = 1
   s = .TypeComboBoxString
 End With
こんな感じで、取得したり設定したりする事になると思います。
ちなみに、VB上でF2キー押してfpSpreadライブラリのヘルプ見たほうが早い気が・・・
186デフォルトの名無しさん:2005/06/09(木) 13:28:54
>>182
その前に問いたい。そのデータベースは正規化されているのか、と。
187デフォルトの名無しさん:2005/06/09(木) 14:46:49
MSFlexGridで行単位の文字色を変えるのは
どのように行うのでしょうか?
MSFlexGrid.CellForeColor = QBColor(**)ではアクティブ?
(先頭かクリックしたセルにデータが送られた場合)の所だ
け色が変わります。
188デフォルトの名無しさん:2005/06/09(木) 15:28:22
>>187
それは"Cell"ForeColorだから当然だろ。
カレントセルを変えるプロパティですよ。

あまり使わないから良く判らないが、そのプロパティの行バージョンを探すか、
セル1つずつを変えていって行全体を変えるか、範囲指定してセルの色を変えればいいのでは?
189デフォルトの名無しさん:2005/06/09(木) 15:42:21
>>188
すいません。
アクティブなセルを替えながら色を変更していくのか
行ごと色を指定する方法があるのか、どのようにするのか
基本がわからなくて質問してしまいました。
>>185
の方法が使えそうな気がして試した所うまくいってしまいました。

With MSFlexGrid
.row = 行カウンタ
.col = 1
MSFlexGrid.CellForeCOlor = QBColor(12)
.row = 行カウンタ
.col = 2
MSFlexGrid.CellForeCOlor = QBColor(12)
.row = 行カウンタ
.col = 3
MSFlexGrid.CellForeCOlor = QBColor(12)
End With

ありがとうございました。
190デフォルトの名無しさん:2005/06/09(木) 15:51:06
>>189
おせっかいついでに・・・。
ループしろ、関数化しろ。

private sub SetCellColor( grd as MSFrexGrid, rw as long , cl as long, clr as long)
with grd
.row = rw
.col = cl
.CellForeColor clr
end with
end sub

呼び出し側

For i = 1 to 目標まで
call SetCellColor(グリッド, 行, i , QBColor(?) )
Next
191デフォルトの名無しさん:2005/06/09(木) 16:22:34
>>190
おせっかいThxです。
おかげですっきりまとまりました。
勉強になりました。ありがとうございました。
192デフォルトの名無しさん:2005/06/09(木) 17:09:54
ボタンを配列にしてCommand1(Index)という形になったのですがそのIndexを使ってフラグを作りたいのですがflg(Index)という形にするとIndexが参照されません。何が問題でしょうか。
193デフォルトの名無しさん:2005/06/09(木) 17:10:44
(ボタンがたくさんあってクリックするとイベントが起きて、そのボタンを押したというフラグが作りたいのです)
194デフォルトの名無しさん:2005/06/09(木) 17:20:06
>>185
レスありがとうございます。早速試してみたのですが、Index=2の時にリストの
2番目の文字列を取得したかったのですが失敗でした。ヘルプも見てみたのです
がなかなかみつからないものですね。
手法としてはTypeComboBoxIndexの値が変わった時に、Select文を使って.Text
="abcde"のようなやり方しかないのでしょうか?
195182:2005/06/09(木) 19:14:05
>>186
正規化どころか、テーブルが・・・い、いえ、なんでも・・・。

システムが歪に成長しているもので、
それにカスタム対応しようとして、方法論までが歪な物になってしまいます。
早く別の作業に移りたい・・・
196185:2005/06/09(木) 19:27:00
>>194
もしや、.TypeComboBoxIndex と .TypeComboBoxCurSel の
使い分けができていないとか・・・?
197デフォルトの名無しさん:2005/06/09(木) 19:57:25
>>192
最小限の再現コードを貼って。
198185:2005/06/09(木) 20:25:47
>>194
なんか、質問の意図を間違えたかもしれません。
↓のように設定した場合、
   .Row = 1
   .Col = 1
   .CellType = 8
   .TypeComboBoxList = "りんご" & vbTab & "ゴリラ" & vbTab & "ランボルギーニ"
   .TypeComboBoxEditable = False
   .TypeComboBoxCurSel = 0
取得するときは
   .Row = 1
   .Col = 1
   .TypeComboBoxIndex = 1  '2番目
   s = .TypeComboBoxString  'ゴリラ捕獲
199デフォルトの名無しさん:2005/06/09(木) 20:44:54
>>195
なるほどね。正規化とかはできそうにない状況な訳ね。ところで、ADOとかで
Filter とか Find 使うって選択肢はあり?
200デフォルトの名無しさん:2005/06/09(木) 21:58:58
Get!Get!っていうダイアログの文字など通常コピーできない文字列を
取得するアプリ有るじゃないですか。
アレで使われてるターゲットを選択するポインタって、VBではどうやれば使えますか?
ドロップした位置情報(x=300、y=400とか)が取得できればいいのですが。
201デフォルトの名無しさん:2005/06/09(木) 22:37:46
>>200
マウスカーソル変えてSetCaptureするだけちゃうん?
202デフォルトの名無しさん:2005/06/09(木) 23:14:10
>200
WindowFromPointっていうAPIがあります.

っで質問です。VBのプロジェクトに配置されました。
東京周辺でVB6.0が購入できるお店があったら教えて下さい。
203デフォルトの名無しさん:2005/06/09(木) 23:15:47
九九の表を出力するVBコードを作りたいのですが分からないです。
どなたか分かる方いらっしゃれば教えてください
204デフォルトの名無しさん:2005/06/10(金) 00:08:01
>>202
普通に買えると思いますが?
ttp://www.microsoft.com/japan/msdn/purchaseguide/chart/
から旧バージョンが入ってるものを選べばいいですよね:)
205195:2005/06/10(金) 00:09:05
>>199
それは可能です。
現在の検索処理は、検索条件自体は単純(1件当たりの検索は早い)なのですが、
ADOを活用したら高速化できますか? ちょっとアイデアが浮かびません・・・。
206デフォルトの名無しさん:2005/06/10(金) 00:32:50
>>204
給料の低い新米にゃちときついなぁ。願わくば Learning Edition とか
単品で安く欲しいっす。やっぱ、秋葉探索しかないですか。

>>203
変数2個使って2重ループするとよろし。
テキストの描画には、TextOut っていうAPIがある。
207デフォルトの名無しさん:2005/06/10(金) 07:50:41
>>206
業務で使うなら会社の金で買え
208デフォルトの名無しさん:2005/06/10(金) 10:25:42
VB6でBIOSの日付を取得したいのですが可能でしょうか?
209デフォルトの名無しさん:2005/06/10(金) 13:57:55
>>208
Now
210デフォルトの名無しさん:2005/06/10(金) 15:08:04
>>209
馬鹿は黙っててくれませんか?
211デフォルトの名無しさん:2005/06/10(金) 15:36:57
横レスだが、何故BIOSの時刻なの?
OSの時刻と基本的にイコールだし。
212デフォルトの名無しさん:2005/06/10(金) 15:52:33
>>211
高負荷時のWin9x系で激しくズレることもある。
213デフォルトの名無しさん:2005/06/10(金) 15:57:15
では単純に。
そんな用途でのOS選定、言語選定を間違ってる。
214デフォルトの名無しさん:2005/06/10(金) 16:24:39
>>213
じゃあどのOSと言語使えばいいわけ?
間違ってると言うなら適切な事を知ってるんでしょ?
215デフォルトの名無しさん:2005/06/10(金) 16:30:10
VBでOSを開発しようと思っているのですが、
どのような手順を踏めば良いのでしょうか??
216デフォルトの名無しさん:2005/06/10(金) 16:39:07
その高負荷を抑えようとしないんだろうか?
217デフォルトの名無しさん:2005/06/10(金) 16:39:38
>>215
VBを窓から投げ捨てる
218デフォルトの名無しさん:2005/06/10(金) 17:18:12
どうして誰も、 できません。 って言わないんだろう・・・
219デフォルトの名無しさん:2005/06/10(金) 17:40:28
この流れが好きだからじゃない?
220デフォルトの名無しさん:2005/06/10(金) 17:42:06
>>216
どうやって?
221デフォルトの名無しさん:2005/06/10(金) 17:44:23
高負荷になるのは自作のアプリとはかぎらないわな
222デフォルトの名無しさん:2005/06/10(金) 18:22:02
お知恵をお貸しください。
Windows2000 SP4+VisualBasic6.0 SP5でアプリを作成し、
InstallShieldExpress2.12でインストーラを作成して
Windows2003サーバにインストールしても
正常に動作しますか?

ドトネトに汁!という選択肢は除外でお願いします(;´Д`)ゴメンナサイ
223222:2005/06/10(金) 18:40:51
すみません自己解決しました。
お騒がせしました。
224デフォルトの名無しさん:2005/06/11(土) 03:39:33
文字コード変換について聞きたいのですが。。

楽天市場で検索を行うとアドレスの欄で日本語が
あいうえお → %A4%A2%A4%A4%A4%A6%A4%A8%A4%AA
のように変換されます。

この変換をVB上で行うにはどのようにすればいいのでしょうか・・・。
仕事から帰っていままでずっと検索したのですが
なかなか情報が見当たりません。

申し訳ありませんがご教授願います。

環境
VB6.0 SP6
225デフォルトの名無しさん:2005/06/11(土) 04:18:38
>>224
URL エンコード
226デフォルトの名無しさん:2005/06/11(土) 04:18:54
>>224
Function S_Change(s as string) as string
If s = "あいうえお" Then
  S_Change = "%A4%A2%A4%A4%A4%A6%A4%A8%A4%AA"
End If
End Function
227192:2005/06/11(土) 14:58:00
Dim flg(Index) As Integer


Private Sub Command1_Click(Index As Integer)
If flg(Index - 10) = 1 Then
Command1(Index).Picture = Command2.Picture
flg(Index) = 1
End If
End Sub




こんな感じなのですが・・
228デフォルトの名無しさん:2005/06/11(土) 16:15:12
>>227
Dim flg(Index) As Integer
Indexが有効なのは下のプロシージャ内だけだから、flg(0)を宣言したことになる。

If flg(Index - 10) = 1 Then
Indexが0の時、宣言されてない flg(-10) を参照することになる。
229デフォルトの名無しさん:2005/06/12(日) 00:03:22
>>207
自宅でこっそり勉強しようかと思いまして。
秋葉みてきたけど、ないっすね。
CDのみで1万5千円(Professional)版なら見つけましたが。
なんとかお安くかつ合法に入手できないもんですかね。

仕方がないんで、Java資格取ってJavaのプロジェクトに配属されるよう
がんばります。

230デフォルトの名無しさん:2005/06/12(日) 08:29:17
>>229
V6.0なんか売っているわけ無いだろう。
5年以上前の製品で、とっくに発売中止になっているぜ。

今から合法的にライセンス手に入れたいなら、MSDN契約しかないな。
利用者が一人なら複数のPCにインスコできるから、会社にライセンス買ってもらって、自宅のPCにインスコしる。
231デフォルトの名無しさん:2005/06/12(日) 08:32:25
>>224
AscとHex、場合によって文字コードをJISやEUCに変換する必要があるかも。
HTTPを扱おうと思うなら、HTTPの仕様ぐらい確認する。
232デフォルトの名無しさん:2005/06/12(日) 08:52:03
>>218
もちろん決して不可能では無いからさ。
マシン語のコードをVBのソースコードに埋め込み、バッファーオーバーラン等を利用して呼び出せばよい。
Windows95/98/MEでしか動作しないけどな。

ただこの板には、そういう高度なプログラムを書けるバッカーが居ないだけ。
233デフォルトの名無しさん:2005/06/12(日) 12:00:58
>>232
ソースに埋め込んだマシン語コードを動かすのに
バッファオーバーランなんぞ使う必要もねーべw
VBの機能とAPIを工夫し、それようにマシン語コードを用意すれば
配列とかに入れたマシン語コードを普通に呼び出せるぞ。
(それをVBプログラムと言い張る勇気は俺にはないがなw)
234デフォルトの名無しさん:2005/06/12(日) 13:18:59
なんで「マシン語」なら>>212の問題が回避できると考えるのか、
その根拠が理解不能。
大体なんでその「マシン語コード」とやらを実効するのに
わざわざバッファオーバーランなんぞを使う必要があるのだろう。

っていうか、VBコンパイラが吐き出すコードだって(以下略
235デフォルトの名無しさん:2005/06/12(日) 22:01:24
VB6で正規表現を使用できるようにと、以下のページを参照しました。
http://www.microsoft.com/japan/msdn/columns/scripting/scripting051099.asp

一般に正規表現は、丸括弧の中をあとから $1, $2, .... とかで参照できると
思うのですが、その方法があれば教えて下さい。

以下のURLにてVBSの場合の例があり、出来ると思うのですが
試してみると Submatches がないと怒られます。

http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200311/03110053.txt
236デフォルトの名無しさん:2005/06/12(日) 23:53:30
エクセルデータを読み込みたいんですが、
下から3行目の、自分のPCのデータがどこにあるかを知りたいんですが、
どうすればいいんでしょうか?
デスクトップにBook1で保存しています

Dim x As Object

Private Sub Command1_Click()
Text1.Text = x.worksheets.application.cells(1, 1).Value
End Sub

Private Sub Form_Load()
Set x = GetObject("C:\Documents and Settings\\デスクトップ\Book1.xls")
x.worksheets.application.Visible = True
End Sub
237デフォルトの名無しさん:2005/06/13(月) 00:26:08
>>236
意味不明。
固定フォルダでないなら、ダイアログでフォルダを選択。
これを自動でやるなら、全ドライブ検索後、選択。
238236:2005/06/13(月) 00:27:55
>>237
デスクトップ\Owner\ でOKでした。

次なんですけど、これだと、セルの(1,1)しか表示しないんですが、
全部とは言わないですが、ある程度のセルの値を表示するにはどうすればいいのでしょうか?
239デフォルトの名無しさん:2005/06/13(月) 00:40:25
Text1.Text = x.worksheets.application.cells(1, 1).Value
でセルの(1,1)指定してるじゃないか。
240デフォルトの名無しさん:2005/06/13(月) 01:10:28
DOLOOP使ってセルを一つずつ読み込め
241デフォルトの名無しさん:2005/06/13(月) 01:17:48
なんつーか………
「パソコン」にもうちょっと詳しくなってから来て下さいよ>236
242デフォルトの名無しさん:2005/06/13(月) 10:22:31
? 11.5 \ 12
1

なんで 1 なの?
243デフォルトの名無しさん:2005/06/13(月) 10:52:50
>>242
12 \ 12になるから。
244デフォルトの名無しさん:2005/06/13(月) 11:48:24
教えてください。
エクセルの「=IMEXP("1+1i")」をVB6.0で計算する方法です。
245デフォルトの名無しさん:2005/06/13(月) 15:23:51
>>243
理解できた。ありがとう。
246デフォルトの名無しさん:2005/06/13(月) 19:36:28
お疲れ様です

 いま、VB6.0からEXCELを操作するプログラムを書いているのですが、
EXCELのセルを行、列ともに大きさを変えたい場合はどのようにすれば、
よろしいですか?

 .Autofitではなく、任意で大きさを変えたいのですが?
247デフォルトの名無しさん:2005/06/13(月) 22:32:29
for構文の中にもうひとつfor構文って使えないのでしょうか?
どうもうまく行きません。中の方のfor構文を別のプロシージャにして
呼び出すようにしても駄目です。 どなたかアドバイスください。お願いします。
248デフォルトの名無しさん:2005/06/13(月) 22:37:25
>>247
すみません。自己解決しました。
249デフォルトの名無しさん:2005/06/14(火) 06:15:33
>>244
ゴリゴリ書くしかなさそう。
手抜きしたかったら、シェアウェアのDLLで。
250デフォルトの名無しさん:2005/06/14(火) 07:29:36
>>246
Excelを立ち上げ、メニューから「ツール→マクロ→新しいマクロを記録」。
後は実際にマクロで行いたい操作をExcel上からやってみろ。
Excelのマクロに関する、大抵の問題は解決するはずだ。
251デフォルトの名無しさん:2005/06/14(火) 18:03:57
>>250
 ありがとうございました。
ところで、エクセルで作った帳票があるのですが。印刷時に1行目から4行目まではヘッダー
として必ず印刷するにはどのような方法がありますか?
252デフォルトの名無しさん:2005/06/14(火) 18:09:14
はじめてのExcel買ってくれば?
ページ設定、シート、印刷のタイトルとか。
253デフォルトの名無しさん:2005/06/14(火) 18:47:58
>>251
PageSetup.PrintTitleRows = "$1:$4"

250の言うことを理解できてないの?
それとも、EXCELの使い方自体を質問してる?
254デフォルトの名無しさん:2005/06/14(火) 20:07:11
>>253 たぶん後者じゃないの?
って >>252 の言うとおり本観ろよ。
255デフォルトの名無しさん:2005/06/14(火) 23:51:36
ディストリビューションウィザードでインストーラーを作成しましたが、
「データアクセスコンポーネント(MDAC?)」
のインストール時に以下のエラーが表示されることがあります。

「path or file not found」

OSはXPSP2で、アカウントは日本語ダブルバイト文字を含んでおりません。
ですので、以下の現象ではないと考えております。

http://homepage1.nifty.com/maruyama/error01.htm

他の原因は何か考えられますでしょうか?
256デフォルトの名無しさん:2005/06/15(水) 11:13:03
VB6で、Windowsサービスを実装する
サンプルコードがどこかにありませんか?
257デフォルトの名無しさん:2005/06/15(水) 11:26:08
>>256
ttp://www.grapecity.com/japan/support/database/VisualBasic_PDFCatalogs.htm
のNT Service Toolkit 1.0Jはトライアルがあると思う
昔、色々サンプルあつめたけどVCでやるほうが何も考えずに楽だった
258256:2005/06/15(水) 11:49:11
>>257
なるほど、こういうコンポーネントがあるんだね。
VB.netやVCを使えば普通に作れるんだろうけど
開発言語がVB6に限られているのがつらい。
259デフォルトの名無しさん:2005/06/15(水) 13:19:38
sexeとか普通のexeをサービス化するツール使えばいいじゃん。
260デフォルトの名無しさん:2005/06/15(水) 15:21:54
出来ると使えるば別だと判ってるよな。元質問者。
VBでサービスなんて出来るけど使わないほうが良い。
261デフォルトの名無しさん:2005/06/15(水) 17:56:30
スプレッドシートのセルを半角カナのみ入力できるようにするってできないんで
したっけ?
262デフォルトの名無しさん:2005/06/15(水) 17:58:46
陸海空オンライン鋭意製作中!
ただ今、グラフィッカを募集しております。
よろすく。
http://www112.sakura.ne.jp/~kaientai-project/creategame.htm
263デフォルトの名無しさん:2005/06/15(水) 18:46:48
ADOでMDBに接続して、テーブルの各フィールドのデータ型を取得しようと思っています。
Field オブジェクトのTypeプロパティを使うと
そのフィールドが「日付/時刻型」であることは分かるのですが、
その書式(「日付 (S)」とか「「時刻 (L)」)はどうすれば分かるでしょうか?

264デフォルトの名無しさん:2005/06/15(水) 20:24:42
>>263
fieldのpropertiesにformatとかそんな感じの名前で登録されていたような。
265デフォルトの名無しさん:2005/06/16(木) 01:20:41
<form action="AAA" method="get">
<input type="image" src="/img/submit.gif" alt="はい" border="0" width="115" height="25">
</form>

IEを操作してるんですが、こういう場合、このtype="image"となってる画像ボタンをクリックするには
どういう感じで書けばいいんでしょうか?
FROMタグにもinputタグにもname属性がなくてどうやって指定していいのかさっぱりわかりません
266デフォルトの名無しさん:2005/06/16(木) 01:21:39
FROMタグってなんだ・・・FORMタグです
267デフォルトの名無しさん:2005/06/16(木) 04:42:50
<HTML>
<HEAD><TITLE></TITLE>
<SCRIPT type="text/javascript">
window.onload=function(){
var ObjFORM=document.forms[0]; // *1
var ObjINPUT_image=ObjFORM.all.tags("INPUT")[0]; // *2
alert(ObjINPUT_image.src + "\r\n" + ObjINPUT_image.alt);
VBS_Code();}
</SCRIPT>
<SCRIPT language="vbs">
Option Explicit
Public Sub VBS_Code
Dim ObjFORM,ObjINPUT_image
Set ObjFORM=document.getElementsByTagName("FORM")(0) ' *3
Set ObjINPUT_image=ObjFORM.getElementsByTagName("INPUT")(0) ' *4
Call MsgBox(ObjINPUT_image.src & vbNewLine & ObjINPUT_image.alt,,"VBS")
End Sub
</SCRIPT>
<!-- *1 * 2 *3 *4
ここでは<INPUT>のtype属性まで調べていない。位置が分かっているものとする。
<INPUT type='image'>はelementsコレクションには含まれない
オブジェクトコレクションはVB系ではFor Object in Collection〜Nextで調査できる
JSでは配列要素指定には[]VB系は()である点に注意
JSとVBSの参照方法自体は相互に使える。ここでは分けた。
IEのDHTMLリファレンスでコレクションを調べよ -->
</HEAD>
<BODY>
<form action="AAA" method="get">
<input type="image" src="/img/submit.gif" alt="はい" border="0" width="115" height="25">
</form>
</BODY></HTML>
268267:2005/06/16(木) 04:50:45
汚くてスマソ

訂正
For Object in Collection〜Next

For Each Object in Collection〜Next
Eachが抜けてたわw

ま、IE専でいいということだし、VB6なんだろうから
document.allやtags()でいいだろう。

Web的には
document.forms[].getElementByTagName()
なんだろうなw
269263:2005/06/16(木) 11:11:47
>>264
レスサンクス。
ADOじゃだめだったんですけど、
DAOを使うとFieldのPropertiesにformatとして登録されてました。

…DAOで作り直しかorz
270デフォルトの名無しさん:2005/06/16(木) 15:02:42
>>269
ADOXのColumnオブジェクトTypeプロパティもだめ?
271263:2005/06/16(木) 17:32:20
>>270
やってみました。
ダメですた(´・ω・`)
Propertiesにもなかったし…。

現在DAOでごりごり改築中です。
272デフォルトの名無しさん:2005/06/16(木) 22:47:03
三目並べのゲーム作ってるんですが中々うまくいきません。具体的に言うと
□□□
□□□ ←みたいに9個のラベルがあってクリックすると○がついてランダムに他のラベルに×が付くという
□□□  仕様なんですが、一度○をつけた所を何度もクリック出来たり○が入ってるところに×が入ったりしてしまうんです。
他には既に×が入ってるところに×が入ってしまう事もあってクリックしても×が表示されないこともあります。
それと勝ち負けの判定方法も分かりません。無知な僕にご指導よろしくお願いします。
273デフォルトの名無しさん:2005/06/17(金) 00:28:37
If-Then-Elseの使い方を憶える
縦・横・斜めのどこか一直線が×か○になっていたら終わり
274デフォルトの名無しさん:2005/06/17(金) 00:43:29
>>273
つまり
If Label1.Caption="○" AND Label2.Caption="○" AND If label3.caption="○" _
OR Label4.Caption="○"(ry

という感じですか?他の不具合を直す方法についてもよろしくお願いします。

275デフォルトの名無しさん:2005/06/17(金) 00:53:03
まあ、やり方は色々だけどそれでもいいんじゃないすか。

>一度○をつけた所を何度もクリック出来たり○が入ってるところに×が入ったりしてしまうんです。
>他には既に×が入ってるところに×が入ってしまう事もあってクリックしても×が表示されないこともあります

原因が色々考えられるのでわからないですね。エスパーでもないんで。
デバッグは自分でやりはれ。
キャプションに○×入れてる箇所にブレークポイント入れて、正しい場所に入れているのか確認しなさい。
MSDNもインストールしなさい。
276デフォルトの名無しさん:2005/06/17(金) 08:05:42
クリックする前やランダムで入れる前に
すでに○か×があるかどうか調べないの?
277デフォルトの名無しさん:2005/06/17(金) 09:49:32
>>274
とりあえず、コントロール配列にしたほうがいいよ。
それじゃループが使えない。
278デフォルトの名無しさん:2005/06/17(金) 19:23:20
グレープシティーの vs-view を使って帳票を作っているのですが
縮小印刷ができなくて困っています。
また使っているバージョンが古くて問い合わせできないので
御存知の方がいらっしゃいましたらアドバイスよろしくお願いします。

B4 横で作成した帳票がありプレビューをしています。
このプレビューを出力する時は A4 に縮小して出力したいのです。
B4->A4縮小する方法がわかりません。

よろしくお願いします。
279デフォルトの名無しさん:2005/06/17(金) 20:51:50
>>277
コントロール配列にするとクリックしたときに○が入るというのをうまく出来ないんです。
追記ですがランダムに×を入れるというのはSelect Caseを使ってます。
280デフォルトの名無しさん:2005/06/17(金) 21:23:16
VB云々じゃなくて、論理的に物事を考えることが出来ないだけじゃん。
281デフォルトの名無しさん:2005/06/17(金) 21:45:24
>>280
そうなのかもしれません。では三目並べのゲームをVBで作る場合どういうコーディングをするのが論理的か
例えをあげて指導してくれませんか?
282デフォルトの名無しさん:2005/06/17(金) 22:22:02
>>281
升目を内部的にどう管理するか考える・・・二元配列?
画面で起るイベントに対して、升目のリアクションを列挙する・・・新規の○×、すでに置いてある
新規に置いた後のロジック=勝敗判定を考える
283デフォルトの名無しさん:2005/06/18(土) 01:29:44
HTMLのメールを以下のように送信したのをOutlookで受信して、
その受信したメールを今度は転送しようとすると画像が崩れてしまいます。
メールのHTMLソースをみると、画像のパスが<img src="c:\test.html">って
なってて、なんか変。正常に転送できるように送りたいのですが、下のソースって
なんか、間違ってますか?

Dim cdoMessage As CDO.Message
Dim cdoConfig As CDO.Configuration
Set cdoMessage = New CDO.Message
Set cdoConfig = New CDO.Configuration

'URLの設定
  sHTML = "c:\test.html"
sURL = "file://" & sHTML

'メール設定
With cdoConfig.Fields
.Item(cdoSendUsingMethod) = cdoSendUsingPort
.Item(cdoSMTPServer) = CON_ADDR_SMTP
.Update
End With
284デフォルトの名無しさん:2005/06/18(土) 01:29:54
つづき・・・


'送信
With cdoMessage
Set .Configuration = cdoConfig
.CreateMHTMLBody sURL
.From = sFrom
.To = sTo
.Cc = sCC
.Subject = sSubject
.Send
End With

Set cdoConfig = Nothing
Set cdoMessage = Nothing
285デフォルトの名無しさん:2005/06/18(土) 02:00:02
配列について質問です
配列の一部のみを開放と言う事は出来るのでしょうか?

例えば
10の要素のある配列の前半4つを開放(?)し6の要素をもつ配列に変換するという感じです
やはり5つめの要素から最後まで順にセットして良くしかないのでしょうか?
ご教授願います
286通りすがり:2005/06/18(土) 05:01:42
>>285
確かにReDim Preserve は不便で使えないもんなぁ。遅いしw
別新規配列に手動で要素コピーする方法はイヤだとw
JavaScriptやPerl風の連想配列を使ってみる?要素indexが連続する必要はないし文字列indexでもOK

Private Function Test()
Dim i As Long, s As String, d As Variant

Rem 参照dllはMicrosoft Scripting Runtime(scrrun.dll)
Dim ObjDic As Scripting.Dictionary

Set ObjDic = New Scripting.Dictionary
For i = 0 To 9
ObjDic(i) = "Value" & CStr(i): Rem 記述その1
Rem その2:ObjDic.Item(key) = item
Rem その3:Call ObjDic.Add(key,item)
Next

For i = 0 To 3
Call ObjDic.Remove(i): Rem 4つの要素削除
Next

d = ObjDic.Items 'ObjDicのままで使えるが新規の場合
For i = 0 To 5
s = s + d(i) + vbNewLine
Next

MsgBox (s)
End Function
287デフォルトの名無しさん:2005/06/18(土) 06:35:40
>>285
配列をそのまま使わずにリスト構造の構造体を抱える器として使う。
そうすればとりあえず部分的に開放する場合は、Redimしないでリストの付け替えでOK。
ある程度穴だらけになったら、リストの領域を別のものにコピーしなおしてきれいにする。
288デフォルトの名無しさん:2005/06/18(土) 07:42:37
>>283
画像パスにしっかり”c:\test.html”と指定しているじゃないか。
ちゃんと書いたとおり動いているし、正しいんじゃないか?

まぁ普通はインターネット上のWEBサーバーに画像を置くとか、
メールに画像を添付するとするけどな。
289デフォルトの名無しさん:2005/06/18(土) 09:14:35
>>288
メールを送る前は、src="c:\aaa.gif"のように画像をしてるんだけど
送ってOutlookで受信したときは、src="cid:〜〜"に変換されてて
そのメールを転送して送ろうとするとsrc="c:\test.html"に変換(?)
されてしまうんです。
290デフォルトの名無しさん:2005/06/18(土) 13:59:06
>>285
そんな面倒なことしなくても、素直にWin32APIのCopyMemoryを使うか、
配列のインデックスにオフセットを加える操作をラップしたクラスを作ったほうが
よほど簡単だと思う。
291デフォルトの名無しさん:2005/06/18(土) 21:53:29
VB:6.0
OS:2000sp4

専用ワークグループを設定したMDBにDAO3.5で接続したいんだが
ワークグループの変更に失敗する。

DBEngine.SystemDB="D:\Test.mdw" ←エラーはでないが、変更されない

ためしにExcel2000のVBAで同じことをやってみたら、こっちは成功。
VBのバグなんだろうか。
誰か知ってる人いたらご教授おねがい。
292デフォルトの名無しさん:2005/06/18(土) 22:09:56
>>290
CopyMemory使っても確保されているメモリは解放されんだろ、
293デフォルトの名無しさん:2005/06/18(土) 22:37:27
>>292
また意味不明なことを。これだからVB(以下略
そんなもん、コピーした後オリジナルを抹殺するだけの話だと思うが。。
294デフォルトの名無しさん:2005/06/18(土) 22:56:49
つうかさ、VBなんだからメモリー操作なんぞ不要にしないのが正統。
どうしてもそれしかないって言うなら使うけど、そうじゃなければ使わない。
そもそもそういうのが必要ならVBで作るな。
295デフォルトの名無しさん:2005/06/19(日) 00:08:19
VB6.0 XP

〜 keypress(KeyAscii as integer)
If KeyAscii = ☆ then
 処理
end if

vbKeyReturn や vbKey1(数字)だと反応するんですが
vbKeyF1(ファンクションキー)だと反応しなくなるんですが
なぜなんでしょう...
296デフォルトの名無しさん:2005/06/19(日) 00:14:47
なぜってmsdnにちゃんと書いてあるじゃん。。
>>295みたいな奴ってどういう精神構造してるんだろう。
297デフォルトの名無しさん:2005/06/19(日) 00:32:13
初心者が馬鹿なのは不快じゃないけど、教えている方が馬鹿なのは不快だなぁ。
298 :2005/06/19(日) 00:38:50
ビジュアルベーシックを一から勉強しようと思っています。

しかし、普通の入門書みたいのだと、あまり私が作りたいと思うジャンルで実践してくれないので、
できれば「ゲームを作りながら学べるBV」みたいな入門書があると嬉しいのです。
そういう本てありますでしょうか?

プログラムは昔、MSXでベーシックを作っていたので、多少は心得があります。
299デフォルトの名無しさん:2005/06/19(日) 00:59:01
>>298
ベーシックはよく分からないんだが、
いきなりゲームを作るのは難しすぎると思うぞ
「ゲームを作りながら学べるVB」な本は基礎部分をかなり省略しているから
地味な本でも基礎をきちんと説明している本から始めたほうがいいよ

おすすめは技術評論社の「VB.NET 300の技」といった感じのタイトルの本
もしくは「VB.NET 基礎編」「応用編」「コントロール関数編」の三部セット(まずは基礎から)
俺は全部持ってたりする

逆にお勧めできないのは翔泳社や日経BPの本
300デフォルトの名無しさん:2005/06/19(日) 01:07:56
はて、ここはドトネトのスレじゃないような気が。。
というか、いまから何もわざわざ泥舟の勉強しなくてもいい気がするんだけど。

どうでもいいけど日経BPにもいい本はあるよ。
矢沢久雄の『Visual BasicユーザーのためのWindowsプログラミング入門』なんて
かなり良書だったと思ったよ。
301 :2005/06/19(日) 01:12:37
レスありがとうございます。

>>299
多少理解しにくくても、興味のあるところから行きたいのですよね・・・
でも、とりあえず、そのご紹介の本を・・・っておもったらVBじゃないのか(´・ω・`)

>>300
すいません、泥船ってなんのことでしょうか?
302デフォルトの名無しさん:2005/06/19(日) 01:29:09
かちかち山で狸さんがウサギにそそのかされて乗った船のことですよ。
303 :2005/06/19(日) 01:40:51
>>302
え?
すいません、それはわかるんですが、泥船を勉強しなくていいというのはどういうことなんでしょうか?
304デフォルトの名無しさん:2005/06/19(日) 01:48:29
VB6 = 狸さんの乗った舟、ってことだよ。
狸さんの乗った泥舟、結局どうなった?
沈んだ。つまりそういうこと。

ほんとはわかってる癖にw
305 :2005/06/19(日) 01:54:53
>>304
なるほど・・・いちいち解説すいません。
ただ、VBがだいたいそういう運命なのはわかってるんですが、これが一番簡単だと聞いたので、やってみようと思っています。
306デフォルトの名無しさん:2005/06/19(日) 02:11:05
>>305
>これが一番簡単だと聞いたので、やってみようと思っています。

つ [HSP]
307デフォルトの名無しさん:2005/06/19(日) 03:01:19
>306
ゲーム作りたいだけってならそっちのが簡単で良さそうだね
308デフォルトの名無しさん:2005/06/19(日) 04:42:15
VB6・Win2000環境でゲームを作ってるのですが、質問です。
終了キーが押されたら終了フラグを立て、ゲームのメインループを抜け終了処理をし、
その後にフォームをアンロードさせているのですが、アンロードされた後も
アプリケーションタスクが残ったままになってしまって困ってます。

ただ、フルスクリーン・ウィンドウモード用に二つのフォームを用意してるのですが、
ウィンドウモードのフォームではちゃんと終了されます。
「フルスクリーンモードだったら元々の解像度に戻す」という処理を終了処理に加えただけで、
他はウィンドウモードの終了処理と全く一緒なのですが、何故かタスクが残ったままに…

アンロード時にEndステートメントを挟めばちゃんと終了されるのですが、
強制終了させるのはどうにも気持ちが悪く、修正したいと思っています。
何が原因かご推測できる方、御教示を賜りたくお願い申し上げます。
(ループ抜けてないとか、単純なミスだとは思うんですが…orz)
(解像度変更関連の処理をしないでフルスクリーンフラグを立てるとどうなるか調べてみましたが、
 こちらも同様にタスクが残ってしまうので、解像度関連のバグでは無いとは思います)
309デフォルトの名無しさん:2005/06/19(日) 05:42:01
>>308
他フォームをアンロードしてから、そのプロパティや変数を参照した場合、
再ロードされてしまう。
310デフォルトの名無しさん:2005/06/19(日) 13:14:11
>>308
何か表示非表示にかかわらず、フォームがロードされていると終了しない。

素直にEndステートメントを使っておけ。
Endステートメントは強制終了ではなく、きちんとフォームのアンロードや
リソースの開放などの終了処理を行ってくれる。
311デフォルトの名無しさん:2005/06/19(日) 20:29:20
Endは便利だがForm_UnloadやらClass_Terminateが発生しない
まま終了しちゃうので注意。
そっちに何も書かないようにすりゃいいだけだが。
312デフォルトの名無しさん:2005/06/20(月) 12:03:05
>>308
フォームのInitializeとかにDebug.Printとか入れておいて
どのタイミングでロードされているかチェックしたら?

注意
 その場合に、安易にDebug.Print フォーム名.Caption とかしないこと。
 Debug.Prntでフォームがロードされてしまいややこしいことになりかねない。
 Debug.Print "Form名_Init"のように単純な文字列にしておく方が良い。

>>310
全然素直じゃない。バグがあって終了しないのだから、
バグがあっても終了するようにするのではなく、
バグの方を終了すべき。

Endステートメントは強制終了であり、>>311さんが言っているように、
UnloadやTerminateなどの終了処理をしない。
313デフォルトの名無しさん:2005/06/20(月) 12:07:10
>>293
> また意味不明なことを。これだからVB(以下略
> そんなもん、コピーした後オリジナルを抹殺するだけの話だと思うが。。
意味不明なのはお前の方だな。
オリジナルを抹殺とかなにいってんの?w
CopyMemoryをしても、配列のメモリは解放されません。
314sage:2005/06/20(月) 18:11:55
treeviewのnodeでチェック出来る出来ないを制御したいんだができない。
教えておくれ。

各nodeごとにdatabase読みに行ってその判断でチェック不可にしたい。
315デフォルトの名無しさん:2005/06/20(月) 19:14:03
>>313
何が言いたいの?
まあ、多分馬鹿なだけだと思うけど、
何か反論なりいいたいことがあるのならその主張を明確にしてくれ。

一応書いておくと、>>285のような処理を純粋にVBの機能だけを使って書いても、
つまり順次コピーの後Redimするようなコードを書いた場合でも、内部的には
「オリジナルの配列」は抹殺されてるんだよ。
316281:2005/06/20(月) 19:23:48
>>282の事を参考にコーディングしようとしましたが知識不足なのか分からないところが出てできませんでしたorz
誰か助けてください。
317308:2005/06/20(月) 19:40:14
>>309-312
ご返答ありがとうございました。ENDステートメントも便利だぞ、
ということのようで、とりあえずの応急処置として使用させて頂きました。

…と、>>312氏の助言の通りDebug.Printでひたすら確認してみると、
どうやらフルスクリーン処理の方だけSub Mainを呼んだ後に
Form_Loadを二回していることがわかり、原因を探ってみたところ、
Form.Showの前にCreateCompatibleDCのハンドルにピクチャーボックスのハンドルを指定していた為、
Formが二回Loadされてしまっていた、ということっぽいです。

というわけで無事修正と相成りました。ご助言ありがとうございましたー
318デフォルトの名無しさん:2005/06/20(月) 21:02:37
(´-`).。oO(いまどきの小学校ってVB導入されてたりするの?)
319デフォルトの名無しさん:2005/06/20(月) 22:07:47
あるテーブルに対してINSERT文を投げています。
でコミット後にまたINSERT文を投げてコミット。

上記のようにトランザクションが複数にまたがる場合、
lock tableってどういう風にかけてあげたら良いのでしょうか?

素直に2回かけるしかないのでしょうか?


320デフォルトの名無しさん:2005/06/20(月) 22:15:19
IEの操作でダイアログ「はいorいいえ」が出た時にはいを押させるにはどうすればいいのでしょうか?
321デフォルトの名無しさん:2005/06/20(月) 22:23:00
>>320
はいorいいえが出た時にはいを押すようにユーザに伝えておく
322デフォルトの名無しさん:2005/06/20(月) 22:47:20
>>321
自動で押してしまいたいんですが・・・
323デフォルトの名無しさん:2005/06/20(月) 22:55:01
>>319
DBきちんと勉強しろよ。
そんなの他人に聞く奴がロック使うなんて早い。
324デフォルトの名無しさん:2005/06/21(火) 08:32:58
>>322
自動で押させるぐらいなら、表示するな(させるな)。

ちなみに、自動でなんて心配しなくても、大抵のユーザーは半自動でクリックするから大丈夫(ぉ
325デフォルトの名無しさん:2005/06/21(火) 10:15:25
>>324
どうやってIEの操作ダイアログを表示させないようにできるんですか?w
326デフォルトの名無しさん:2005/06/21(火) 10:46:06
>>325
普通に
327デフォルトの名無しさん:2005/06/21(火) 10:52:06
ひたすらググっても.NETでのやり方しか出てこなかったのでこちらで質問させてもらいます。

mdbからDataGridに読み込ませて更にその読み込ませた内容でグラフを作りたいのですが、
DataGridで読み込ませた内容をどうやったら取得できるかわかりません。
初めはMSFlexGridで作ってグラフ作成にまでこじつけたのですが、
その場合MSFlexGridにtextでしか読み込めず、mdbで読み込ますことができなかった上
直接Grid上に書き込めないのでDataGridに切り替えました。

具体的には2×10くらいの表で上の行をX軸、下の行をY軸にしたグラフにしたいので
列ごとの情報を取得して点を割り出して原点とそれをLineで結ぶ、ということを考えてます。
328デフォルトの名無しさん:2005/06/21(火) 11:14:16
>>316

>>279は解決した?これが解決しないと先に進めないよ。

それと、質問はもう少し具体的に。
329デフォルトの名無しさん:2005/06/21(火) 11:27:01
string配列に入ってる文字列で、
中に重複があった場合それを取り除いて重複の無い配列にする方法ありますか?
330デフォルトの名無しさん:2005/06/21(火) 11:31:39
>>329
そういうプログラムを書けばいいじゃないか
331デフォルトの名無しさん:2005/06/21(火) 11:37:38
>>330
そうなんですけど
初めに全部入れておいて後からチェックしたいんですよ。
でもその方法がわからないんですよね。
332せにょりーた:2005/06/21(火) 11:42:16
strTmp=""test""
内側の " を消す方法ってありますか??
333デフォルトの名無しさん:2005/06/21(火) 12:20:12
>>331
逐次探索、2分探索、ハッシュ等。
334デフォルトの名無しさん:2005/06/21(火) 12:30:28
>>327
何がわからないのか、わからない。
グラフを描いたことがあれば、迷うことはないはず。
グラフィック自体が初めてなら、少しずつ習得するしかない。
335デフォルトの名無しさん:2005/06/21(火) 15:06:34
>>326
> 普通に
ワロタ。
やっぱり答えられなかったか。
お前は要らない。消えろ。死ね。
336デフォルトの名無しさん:2005/06/21(火) 19:28:41
メッセージも扱えない社会の底辺はごみでも漁ってろwwwwww
337デフォルトの名無しさん:2005/06/21(火) 19:48:53
だいたいどのダイアログで「自動で"はい"を押すorダイアログを表示させない」を
やりたいのかすら書いてないからね。
本当に「普通に」ダイアログを出さなく出来る物もあれば、
どうやってもダイアログを出してユーザーに判断させる必要があるものもある。
セキュリティー上、確認が必要な部分まで外部プログラムで制御したら
それはウィルスの類となんら変わらないからね。

きっと>>320もそういうヤバめな行為をやろうとしてるんでしょ
でなければ「はいorいいえが出た時にはいを押すようにユーザに伝えておく」で事足りる。
338デフォルトの名無しさん:2005/06/21(火) 20:00:03
想像力の無い奴だな。
自分で、はいorいいえを自動でやるプログラムが欲しいだけだろ。
明らかに、はいを押すと分かっている局面でいちいち押すのが
面倒だと思わないのか?
339デフォルトの名無しさん:2005/06/21(火) 20:01:58
> だいたいどのダイアログで「自動で"はい"を押すorダイアログを表示させない」を
> やりたいのかすら書いてないからね。

それなのに普通にできると、適当な答えを言う奴がいる。
どのダイアログかわからんのに、なぜできると答えるのか。
340デフォルトの名無しさん:2005/06/21(火) 21:11:31
すいません。全くの初心者です。
ある変数aがDate型として、aがある日付範囲やある時刻範囲に
あることを調べたいのですが、どのようにすればよいでしょうか。
例えば
・日付が2005/6/1〜2005/6/30かどうか調べる
・時刻が18:00以降かどうか調べる
といったことです。

よろしくお願いします。
341デフォルトの名無しさん:2005/06/21(火) 22:23:49
>>340
formatとifでいいんじゃないの?
342デフォルトの名無しさん:2005/06/21(火) 22:25:14
MAPI関連でご教授願います。
OS:WIN2000(SP?)
言語:VB6

MAPI32.DLLを使用してアプリを作成していますが、
Outlook2000が実行されている環境下で起動すると
MAPISP23.EXEが複数起動してる時があります・・・。
こうなるとOUTLOOKは応答なし、作成アプリは、MAPIのログオンエラーとなってしまいます。
MAPISP32.EXEが複数起動してしまうタイミングとか
知ってる方がいましたらよろしくお願いします。
343デフォルトの名無しさん:2005/06/21(火) 22:50:47
>>342
MAPIを使っているのが、そもそもの間違いなきがする。
MAPIってインストールされているMUAの種類やバージョンに、設定によって
挙動が変わるけど、本当にMAPI使いたいの?
Outlook2Kと限定できるなら、VBA(と言うかOLE Automation?)のほうが良くない?
344デフォルトの名無しさん:2005/06/21(火) 23:13:17
>>343
レスありがとうございます。
説明が不足してましたが、ExchangeサーバとMAPI接続をするアプリでして、
MAPI接続が必須となっています。
Outlook自体は無くても構わないのですが、他で使用してるらしく・・・。

やっぱりDLLバージョンやOutlook設定に問題ありですかね。
それとも複数から同時にMAPI接続するのが悪いのでしょうか。
345320:2005/06/22(水) 11:57:00
ええとですね、ユーザーどうこうではなく自分で使うものです
ウイルスとか悪いものに使うわけじゃありません

基本的にはいろんなページを巡回させたいんですが
時々意味のないようなダイアログを出してくるサイトがあって
そういうところにぶつかると処理がストップするんですよ

なので自動的にはいをクリックしてくれないかと思ってるわけです
346デフォルトの名無しさん:2005/06/22(水) 12:04:10
>>345
俺は以前同じような奴でFindWindowやその周辺のAPIで
ウインドウを見つけてIDやタイトルなどから
判断し自動クリックするツールを作ったよ。

上の方で普通にできるとか書いている奴がいるが、
ウソもしくはただの無知なので相手にしないこと。
347デフォルトの名無しさん:2005/06/22(水) 12:06:52
あとセキュリティがどうこう言う
おせっかい野郎も無視して良い。
そんなことは最初っから分かって言ってる訳でしょ?
348320:2005/06/22(水) 14:00:43
ありがとうございます
知識が浅くてどう書いていいのかさっぱりわからないので
とりあえず判別などは結構ですのでダイアログが出たら常にはいをクリックするという処理を
一番シンプルなもので教えていただければと思います
349デフォルトの名無しさん:2005/06/22(水) 16:24:35
はじめまして、
インターネットや本を一通り調べたのですが見つけることが出来なかったので
どなたか是非ご教授おねがいします。
OS:XP
言語:VB6

キーコード入力の検出をしたいのですが、入力の検出とそのコードの認識は
KeyDownイベントで出来ているのですが、他プログラムを選択しているときは
そのキー入力を認識できません。
具体的に言えばこのプログラムの実行中に電卓を起動して電卓の入力ログを
残したい時に使うものです。
使用するイベントや、プログラム、参考になるサイト、VB6では無理など一部でもいいので
意見をお願いします。

使用目的はあくまで自分の記録用です・・。
350デフォルトの名無しさん:2005/06/22(水) 16:34:11
>>349
グローバルフックなどを使うが、VBだけでは無理
351デフォルトの名無しさん:2005/06/22(水) 17:07:37
昔、インストーラーについて比較したサイトがあったんですがご存知の方いませんか?
インストーラーによっては(DLL等)を上書きしてしまう問題があるとか書いてあったよう
な気がするのですが。(&その他諸々の長所短所)
352デフォルトの名無しさん:2005/06/22(水) 17:16:06
>>349
自分用の記録の残し方
1.ちらしの裏
2.自分で電卓作る
353デフォルトの名無しさん:2005/06/22(水) 17:23:02
354351:2005/06/22(水) 17:27:17
>>353
おおっ!これこれ、これです。助かりました。
355デフォルトの名無しさん:2005/06/22(水) 18:04:58
三目並べの作り方をおしえて(はぁと
356デフォルトの名無しさん:2005/06/22(水) 19:29:04
357デフォルトの名無しさん:2005/06/22(水) 19:30:19
課題ができないからってこのスレで粘着するかね
問題を小分けにして解決しようなんて頭は無いんだね
358デフォルトの名無しさん:2005/06/22(水) 22:30:15
>>349
キーロガーを使えばいいんじゃないの?
359349:2005/06/22(水) 23:23:45
>>350
>>352
>>358
うむぅVB単独では不可能でしたか・・・。
質問に答えていただきどうもありがとうございました。
360デフォルトの名無しさん:2005/06/23(木) 00:43:05
>>349
ログを録るだけならDirectInputでいけるんじゃないかな。
VB DirectInputで検索してみ。
361デフォルトの名無しさん:2005/06/23(木) 06:55:40
一通り調べたのですがわからずだったので教えてください。

中国語フォント(UTF-8)で書かれた文字列が記入されているファイルを読み込んで
別ファイル(UTF-8)に追記したいのですが、特定の文字が文字化けしてしまいます。
文字化けをせずに追記する方法を知りたいのですがどうしたらよいでしょうか?

なお、ファイルはバイナリモードで開いてInputBで読み込み、Printで書き込んでいます。
362デフォルトの名無しさん:2005/06/23(木) 07:23:25
>>359
正確には、VB6.0でもActiveX.DLLを作れば出来なくはないが、到底お勧めできない。
363デフォルトの名無しさん:2005/06/23(木) 07:28:00
>>348
何でズバリと回答が付かないのか、まだ気づかないのか?

お前の言うダイアログとは何のことだ?
HTMLウィンドウをモーダル表示している状態のことか?
JavaScriptからAlertやMessageBoxで表示しているメッセージのことか?
ActiveXやPluginダウンロード時に表示されるセキュリティ警告の事か?
どれのことを言っているのかによって実現方法や、実現のための難易度は大きく異なる。

>一番シンプルなもので教えていただければと思います
SendKeys {ENTER}
364デフォルトの名無しさん:2005/06/23(木) 08:17:26
>>363
回答はとっくについているように傍目の俺には思えるけど。。
まあ、君の書いている内容を読む限り、何もわかってない奴がなに言ってんの、
としか思えん。

しかしどうして口調が偉そうな奴は例外なく無能なんだろう。。
まあ自分の無能に気がついてない幸せモードだからだろうけど。
365デフォルトの名無しさん:2005/06/23(木) 08:44:28
>>361
Stringに読み込んでるというオチは無いだろうな
366デフォルトの名無しさん:2005/06/23(木) 10:50:35
Option Explicit

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 Sub Command1_Click()

Dim WM_CHAR As Integer
WM_CHAR = &H102

Call SendMessage(Text1.hwnd, WM_CHAR, Asc("A"), 1)

End Sub

1文字送りたいだけなのにAAAAAAAAAAAAAAAAAAAAAと永久にAを
送ってしまいます。なぜでしょうか?
367デフォルトの名無しさん:2005/06/23(木) 11:01:20
>>366
まったく同じ(だろう)フォームを作って動かしてみたが、そんな事はなかったよ。
WindowsXP / VB6.0(SP5)

後、WM_CHAR は General で Const宣言した方が良い。

Private Const WM_CHAR As Long = &H102
368デフォルトの名無しさん:2005/06/23(木) 11:13:15
そんなことないっすかー
同じ環境なんですけどねー
369デフォルトの名無しさん:2005/06/23(木) 11:25:28
1.本当にSendMessageを一度しか送ってないか、DebugPrintを仕掛ける。
2.受けた側が本当に複数受けているのか、Spy++で見てみる。
370デフォルトの名無しさん:2005/06/23(木) 11:31:59
ちなみにPostMessegeならうまくいきます。
371みゆき:2005/06/23(木) 11:32:39
誰かアナログ時計のコード教えてください。なるべくシンプルなやつで。
6,7行で作れるようなやつ教えてください。自分が作るとグダグダ長くなるんですけど
誰か教えてくれますか?ちなみにVerは5.01です。私自身初心者なんで
ぜんぜん分からないんです。
372デフォルトの名無しさん:2005/06/23(木) 11:36:21
長くてもいいじゃないか
373361:2005/06/23(木) 15:27:44
>>365
やはりbyte()を使用して書き込まないとだめですかね・・・?
print #1 buf()
こんな感じにしないとだめなんですね。

どうしてStringに読み込んではいけないのでしょうか・・・?
いまいちわかっていないのでご教授ください。
374デフォルトの名無しさん:2005/06/23(木) 15:53:34
>>373
VB6でUNICODEは使えないから。
375デフォルトの名無しさん:2005/06/23(木) 15:56:53
>>373
VBの内部コードはUCS-2だから、
UTF-8 ⇒ UCS-2 ⇒ UTF-8 の過程で一部が化ける。
376349:2005/06/23(木) 16:47:58
>>360
目的のプログラムが出来ました!360様ありがとうございます。
377デフォルトの名無しさん:2005/06/23(木) 17:01:02
VBでWindows95程度のOSを開発しようと思うのですが、
具体的にどの辺から手を加えればいいのでしょうか?
378デフォルトの名無しさん:2005/06/23(木) 17:09:38
貴兄の脳みそから、
379デフォルトの名無しさん:2005/06/23(木) 17:49:29
最近VB6を使い始めました。

1.Private Sub Command1_Click()
2. damage = Int((150 - 100 + 1) * Rnd + 100)
3. enedmg = Int((100 - 50 + 1) * Rnd + 50)
4. enelife = enelife + damage
5. lblhit.Caption = damage
6. lblDamage.Caption = "チョコボに" & damage & "のダメージ!"
7. If enelife >= 500 Then
8. MsgBox ("チョコボを倒しました!")
9. Exit Sub
10. else
11.  lblDamage.Caption = "チョコボの攻撃!主人公に" & enedmg & "のダメージ!"
12. End Iff
13.End Sub

と、書いたんですが、「チョコボに& damage & のダメージ!」が表示された(ほとんど見えない)瞬間に
「チョコボの攻撃!主人公に" & enedmg & "のダメージ!」が出てきてしまうんですが、
処理と処理の間に間隔を入れるのはどうやってやるのですか?
いろいろサイトをまわってみたのですが、見つからなくて・・・。
380デフォルトの名無しさん:2005/06/23(木) 17:53:04
>>379
いいかげんでいいならSleepでも使う
ほんとにゲーム作りたいなら本でも買ってきたほうがいい
381デフォルトの名無しさん:2005/06/23(木) 20:26:57
ツールチップの文字列を改行したいのですが、
どうすればよいのでしょうか。
vbCrLfではダメでした。

よろしくお願いします。
382デフォルトの名無しさん:2005/06/23(木) 21:06:54
>>381
ここのAPIを使用してツールチップコントロールを自作する
に、改行してるツールチップがある。
APIを使わないと駄目みたい。
ttp://www.mitene.or.jp/~sugisita/vb6_cmctl.html
383デフォルトの名無しさん:2005/06/23(木) 21:47:53
>>382
APIを使わなくてもできる方法は間違いなくあるのですが、
その方法を忘れてしまったのです。

vbCrLf を別の書き方で書くのですが、うーん、思い出せません。
384デフォルトの名無しさん:2005/06/24(金) 09:51:33
VB6.0でCol=5,Row=10のDataGridあり、
セル一つ一つに適当な数字が入っていたとき
この中から最大値と最小値のデータを取得したのですがどうすればよいでしょうか?
385デフォルトの名無しさん:2005/06/24(金) 09:59:55
>>384
データを入れる時に最小と最大を記憶しておけばいいじゃないか
386デフォルトの名無しさん:2005/06/27(月) 14:45:33
エクセルデータを呼び出したいんですけど、
なかなかうまくいきません。
また、###の部分はどう呼び出せばいいのでしょうか?
どう改良すればいいのでしょうか?

Private Sub main()
Dim objExcelApp As Workbook
Dim strExcelFile As String
Dim strExcelSheet As String
Dim MyValue As Variant
Dim strMOji As String
End Sub

Private Sub Command1_Click()
Text1.Text = (######)
End Sub

Private Sub Form_Load()
strExcelFile = "C:\Documents and Settings\kumamoto\デスクトップ\バス停データ.xls"
strExcelSheet = "Sheet1"
Set objExcelApp = GetObject(strExcelFile, "Excel.Sheet")
MyValue = objExcelApp.ActiveSheet.Cells(1, 2).Value
Set objExcelApp = Nothing
End Sub
387デフォルトの名無しさん:2005/06/27(月) 14:54:04
まずはExcelを参照設定しろ。
話はそれからだ。というかそれで終わる。
388デフォルトの名無しさん:2005/06/27(月) 16:24:38
>>386
dim を sub mainから出して、
Text1.Text=MyValue

変数のスコープが解ってないみたいだから、その辺の勉強したほうがいいよ。
あと、コードの先頭で Option Explicit した方がいい。
389デフォルトの名無しさん:2005/06/27(月) 19:38:24
このスレで何度も荒らしみたいに三目並べの作り方を聞いたあほです。申し訳ありませんでした。
何とかラベルのコントロール配列で作れたのですが、コントロール配列にしても問題は解決しませんでしたorz
○□×
□○×
□□□
↑の様な状態で右下をクリックすると
○□×
□○×
□×○
とならなければいけないのですが
○□×
□××
□□○
となったり
○□×
□○×
□□○
↑のように×が既に入っているラベルに×が入ってしまったりしてしまうんです。
どうすればこの不具合を修正できるでしょうか?
390デフォルトの名無しさん:2005/06/27(月) 19:40:18
>>389
おい荒らしよ、ソースどこかにアップしろ
391デフォルトの名無しさん:2005/06/27(月) 21:05:16
>>389
三目並べなんてどんな初心者でも作れますがね、その質問でバグを特定できるやつは天才かエスパーだけだよ。
ソースうpしてから再度質問しなちゃい。
392デフォルトの名無しさん:2005/06/28(火) 14:59:58
ActiveX DLLを直接レジストリに書き込む場合、
レジストリのどこの位置に書き込めばいいのでしょうか・・・
今まではWindowsScriptingHostを使用して、下記のコードで
起動時に登録、終了時に解除というようにしていたのですが、

Sub R_Input(sDLLName As String, Optional bKaijo As Boolean = False)
On Error Resume Next
Dim sCommand As String, myWsh As Object, sOption As String

Select Case bKaijo
  Case Is = True
    sOption = "/u /s "
  Case Is = False
    sOption = "/s "
End Select

Set myWsh = CreateObject("Wscript.Shell")
sCommand = "REGSVR32 " & sOption & Chr(34) & App.Path & "\" & sDLLName & Chr(34)
myWsh.Run sCommand, , True
End Sub

このやり方ではWSHがインストールされていない環境だと実行できません・・・
そこでAPIを使用してレジストリに直接書き込もうとしたのですが、
自分の検索のやり方が悪いせいなのか、どこが書き込む位置なのか分からないのです・・・
393デフォルトの名無しさん:2005/06/28(火) 15:29:06
>>392
レジストリに直接書かなくてもREGSVR32というプログラムにやらせれば
いいじゃないか。batファイルでもexeでも作ってさ。
394デフォルトの名無しさん:2005/06/28(火) 15:58:08
>>393
すみません、とんでもなく寝ぼけた事を言ってましたね。
VBSから入ったもので、単にShellを使えばいいだけでした・・・

ただそれとは別に、プログラムで処理する方法も知りたいので、
RegisterTypeLib/UnRegisterTypeLib APIを使うことまでは分かったのですが、
何かレジストリに書き込むだけはなくて、複雑そうですね。

COMについて調べてみても
http://yokohama.cool.ne.jp/chokuto/urawaza/com/com.html
全く訳が分からないです・・・
395デフォルトの名無しさん:2005/06/28(火) 16:52:02
>>392-394
RegSvr32使えばいいんだが、プログラム内で同期処理したいというなら。。。
そのファイルをLoadLibraryして"DllRegisterServer"か"DllUnregisterServer"で
GetProcAddressしたらそれを直接実行・・・・はVBだとできないから
CreateThreadしてWaitForSingleObjectしろ。
GetExitCodeThreadで成功したかどうか分かる。おわったらCloseHandleと
FreeLibraryを忘れるな。たぶんRegSvr32も同じことをしていると思われ。
うちんとこではうまくいってるぞ。
CreateThreadしたらすぐWaitForSingleObjectしてGetExitCodeThreadと
CloseHandleしろ。余計なことはするなよ。
396395:2005/06/28(火) 17:04:27
>>395
まちがた。
CreateThreadしてWaitForSingleObjectしたら、WaitForSingleObjectの
戻りがWAIT_OBJECT_0だったら成功です。
GetExitCodeThreadしたら、そのExitCodeでExitThreadしてください。
スマソ。
397394:2005/06/28(火) 18:18:24
>>396
サンクスです。
それにしても自分のレベルでは厳しそうですね・・・
もう少し勉強してから挑戦してみようと思います。
398デフォルトの名無しさん:2005/06/28(火) 19:42:37
>>395-396
VB6ではOpenProcess()のほうがいいよ。
399デフォルトの名無しさん:2005/06/28(火) 20:16:15
>>396
CreateThreadに渡せるのは DWORD (WINAPI*)(LPVOID)の関数だから危なくない?

>>398
OpenProcessで登録できるとは思えないなぁ。
400デフォルトの名無しさん:2005/06/28(火) 20:58:31
>>389
単に○でも×でも無いところに×を入れるようにしたらいいんでないかい?
○×が入っているとかの判断が無いだけな気がするが?
401デフォルトの名無しさん:2005/06/28(火) 21:56:17
VB初めてから3ヶ月くらいの超初心者ですが、
>>389を見て自分も三目並べに挑戦してみました。(>>389ではない!)

最終的には、勝ち負け引き分けまでの判定までは出来たのですが、
コードが雑で、アルゴリズムにまとまりも何もありません・・・

http://sakuratan.ddo.jp/uploader/source/date0723.zip
罵倒でも何でもいいので、アドバイスをお願いします。
できれば同じようにソースを見せて頂きたいです・・・
402389:2005/06/28(火) 22:04:21
>>401
自分のと仕組み同じなのにとっても綺麗に出来ていてホレボレしますたorz
自分の家にはVBがなくて全部学校なのでFD買って今度持ってきます。
403デフォルトの名無しさん:2005/06/28(火) 22:08:41

> コードが雑で、アルゴリズムにまとまりも何もありません・・・

駆け出しの頃はしかたないよ。
それに少しでもきれいに書こうと思うなら他人に「ソース出せ」とか言って
頼るだけじゃなくて、自分で勉強しなくちゃダメだよ。
技術的に解らない部分があるならアドバイスはするけど、
いきなり上級者と同じレベルのコード書こうなんて奢らないほうがいい。
上達の速度に差はあれど、皆時間と努力を重ねて上達していくのだから。
404401:2005/06/28(火) 22:27:53
>>402
いや、ちょっと待った!!それはおかしい!!
自分で作っておいてなんだが、相当雑だと思う。
それなりに考えて組んだつもりですが、全然まだまだかと・・・

>>403
確かにそうですね・・・もっと努力していきます。
それと技術的な面で一つ質問なんですが、複数の変数を比較する場合は
IFでネストするか、Andで区切るしかないのでしょうか・・・?

例えば3つの変数が同じか比較する場合は
If S(0) = S(1) = S(2) Then ではエラーがでるので
If S(0) = S(1) And S(1) = S(2) Then としたのですが、
これはもっと効率的なやり方はありますかね?
405デフォルトの名無しさん:2005/06/28(火) 22:50:06
>>404
それでいい
406デフォルトの名無しさん:2005/06/28(火) 23:10:20
便乗ですみませんが良ければご指導願います。
ttp://49uper.com:8080/html/img-s/64102.lzh
407デフォルトの名無しさん:2005/06/28(火) 23:23:52
完全なランダムかよw
ほとんどの場合ストレート勝ち出来るな
408406:2005/06/28(火) 23:30:33
ごめんなさい。
もっと歯ごたえのあるよう頑張ってみます。
409デフォルトの名無しさん:2005/06/28(火) 23:32:12
410406:2005/06/29(水) 01:17:30
>407,409
評価頂きありがとうございます。
今度は戦闘力うpしました。
で自分では勝てなくなりました。宜しくお願いいたします。
ttp://49uper.com:8080/html/img-s/64127.lzh
411デフォルトの名無しさん:2005/06/29(水) 01:32:59
>>410
簡単に勝てるぞ・・・
まじ端に○を置いて、真ん中の×を挟み込みようにまた○を置くと、
○ ○
 ×
○ ×
すぐこの形になるぞ。あともうちょい
412407:2005/06/29(水) 01:33:21
すみません間違えました。こちらです
ttp://49uper.com:8080/html/img-s/64133.lzh
413デフォルトの名無しさん:2005/06/29(水) 03:29:14
三目並べ祭りなのか?
CPUはランダムのみだけど機能に凝ってみたの作ったyo-
ttp://w405nm.no-ip.org/~ken/upfiles/fm20050629032202.zip
414デフォルトの名無しさん:2005/06/29(水) 04:38:42
お馬鹿な質問ですが・・・・

他人の作ったプログラムを修正しようとしたのですが
Form上のオブジェクトが、変更できません。
但し、プロパティの変更による修正はできます。


なにか編集不可のロックのようなプロパティがあるのでしょうか?
415デフォルトの名無しさん:2005/06/29(水) 05:31:38
>>414
ツールバーにカギの形をした「コントロールのロック」ってボタンがないかい
なかったら、ツールバーで右クリックして「フォームエディタ」にチェック付ければ出てくる
「書式」メニューの中にもあるよ
416デフォルトの名無しさん:2005/06/29(水) 10:49:06
>>404
>複数の変数を比較する
ループって手もあるよ。
S(0)=S(1)=S(2)なら

isSame=True
for i=1 to 2
if(S(0)<>S(i))then isSame=False;Exit for
next
if(isSame)then
....

3変数なら等号をandで並べたほうが楽だし見やすいけどね。
417デフォルトの名無しさん:2005/06/29(水) 16:09:18
三目ネタに首突っ込んでみる。
CPUはランダムじゃ、やはりつまらんだろ。
まあ意外性はあるかも知れんが。

ポイントは2つ。
1.最高でも9箇所の置き場所
…最高でも9箇所なんだからそれぞれに優位をどう評価するか?
2.縦3横3斜め2計8通りを走査すればいい
…8方向の評価。○がいくつあるかは判定できるだろ?

CPUに最低組み込むべき思考
全ての空きマスを走査し、
1.自分の王手があれば完成して終了。
2.敵が王手をかけていたらそこをふさぐ

さて、3目は”負けはしない”思考がある。さあどうする?
418デフォルトの名無しさん:2005/06/29(水) 16:37:14
>>417
おいおい、間の抜けた事書くな
419デフォルトの名無しさん:2005/06/29(水) 17:15:27
お、なんか楽しそうだなぁ

こういうのやったことないけど、俺も作って参戦してみよう (ry
420デフォルトの名無しさん:2005/06/29(水) 17:16:16
ageちまった・・・orz

スマソ
421デフォルトの名無しさん:2005/06/29(水) 17:21:36
VBはトライアル版のようなものはないんですか?
422デフォルトの名無しさん:2005/06/29(水) 17:40:52
5.0なら昔はダウンロードできた。
.Netなら今でもダウンロードできるだろうし。
423デフォルトの名無しさん:2005/06/29(水) 18:55:38
CCEならまだ落とせない?
424デフォルトの名無しさん:2005/06/29(水) 19:03:28
>>421
トライアル版と言う位置づけのものは無い。

過去に無償であったのはCCE(AcctiveXコントロールを作る専用の物)と
Embeded VisualBasic(WindowsCE用 VisualBasic)の2種類かな。
現在オープンβテスト中の、VB.NET Expressを使うと言うのも手。
425デフォルトの名無しさん:2005/06/29(水) 19:10:11
>>422-424
VB.NET Expressを使ってみます
ありがとうございました
426デフォルトの名無しさん:2005/06/29(水) 19:33:23
おいおい、VB6には試用版があったでしょ。
付録としてついている入門書が何冊かあったので、今でも手に入る可能性は高い。
VB6の本ってまだ流通してるからね。
427デフォルトの名無しさん:2005/06/29(水) 19:43:27
「Visual Basic 6.0 日本語評価版」ってやつかな
ttp://bookweb.kinokuniya.co.jp/guest/cgi-bin/wshosea.cgi?W-NIPS=9973746902
428デフォルトの名無しさん:2005/06/29(水) 21:22:42
VB6 SP6
Access2000です。

ADOの処理を書いています。
レコードセットをDataGridのDataSourceに渡しています。
DateGridでユーザーが任意のレコードを選択し、cmdDeleteボタンをクリックすると該当レコードを削除します。
削除するレコード数は不定です。(つまり、ユーザーが削除したいだけ削除できる)

Dim Withevents recTest as ADODB.Recordset
〜略〜
Private Sub cmdDelete_Cleck()
recTest.Delete
recTest.MoveNext’このままだと削除したレコードに参照が行ってるのでMoveNext
if recTest.EOF = True then recTest.MoveLast
End Sub

とこんな感じで記述してますが、MoveNextした段階で、MoveCompleteが3回も発生します。
MoveCompleteは一回発生してくれるだけでいいのですが・・・。

MoveCompleteイベントが初めて発生した段階で、引数adStatusにadStatusUnwantedEventを設定しようとも思ったのですが、
そうすると今度は、後に同じレコードセットでMoveNextしてもMoveCompleteイベントが発生してくれません。

何かよい回避方法はあるでしょうか。
429デフォルトの名無しさん:2005/06/30(木) 00:59:07
○×祭りは終わってましたか(´・ω・`)
430デフォルトの名無しさん:2005/06/30(木) 01:01:40
それってレコードセットで制御しててコマンドボタンで削除してるんでしょ?
だったらレコードセットを選択したKeyかなんぞをFindかフィルタかなんかでカレントに設定してDELETEメソドで消してやって・・・・
を繰り返した後にRefleshかけてやればきれいに動かないかな?
あんまVB6のDBGridは使ったことないんで勘違いだったらスマソ
431428:2005/06/30(木) 07:24:12
すいません、上記に書きもれありました。
1回の作業で削除できるレコードは1レコードです。削除する時は1レコードづつ選択→削除です。

>>430
DeleteしたあとRefresh、試してみます。
432デフォルトの名無しさん:2005/07/02(土) 04:54:22
VBで作ってるプログラムでhtmlを読んでname属性を拾いたい時に
name="[aaa]"みたいな感じで[]が入ってるものをそのまま書くと
[]の前に強制的にスペースを入れられ、しかも取得することができずエラーが出ます
同じフォームの他のname属性は取得できてるので[]が原因だと思うのですが
どう記載すればよいでしょうか?
ちなみにhtmlの方は自サイトではないのでいじることはできません

よろしくお願いしますm(_ _)m
433デフォルトの名無しさん:2005/07/02(土) 07:03:58
>>432
ダブルコーテーションは、2つ続けて書く。

""
434デフォルトの名無しさん:2005/07/02(土) 09:37:33
>>433
えっとですね、こちらの勘違いだったらすみませんが
もしかすると質問を勘違いされたかもしれません

つまりname属性が[aaa]なのですがこれをVBのプログラム中に
記載したいのです でも入力すると [aaa]とスペースが強制的に入ってしまい
それが原因でエラーが出るのです
435デフォルトの名無しさん:2005/07/02(土) 09:40:53
つまり目的のフォームの名前がform、インプットのnameが[aaa]とすると

objIE.document.form.[aaa].Value = password.Text

このように入力したいのですが強制的にスペースが入りこうなります

objIE.document.form. [aaa].Value = password.Text
436デフォルトの名無しさん:2005/07/02(土) 15:37:12
>>435
VB では DOM オブジェクトは直接は扱えないよ。
437435:2005/07/02(土) 16:50:29
すみません、別のアプローチにて自力解決しました
438デフォルトの名無しさん:2005/07/02(土) 23:08:49
なんで、VBはVBAよりも遅いの?
というか、PC386よりもめちゃ遅い、理由はなに?

円周率を計算するプログラムを独自に組んで最初VBAで遣ってたけど
あまりに遅いので、VB20005βとかいうのがあったので、苦労して
移植しなおしました。しかし、遅過ぎです。何かを止めないといけないのではと
類推するのですが。



439デフォルトの名無しさん:2005/07/02(土) 23:21:30
(´-`).。oO(さすがに14歳は越えていないよね)
440デフォルトの名無しさん:2005/07/02(土) 23:22:26
>>438
VB 2005 Express Edition Beta2 のことか?
それなら.NETだから遅いんだろ。

それからスレ違いなんで以後はVB.NETのスレで質問するように。
441デフォルトの名無しさん:2005/07/03(日) 06:41:31
>>435 ん? HTMLはこうなってるって事?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML><HEAD><TITLE>test</TITLE></HEAD>
<BODY>
<FORM name="form">
<INPUT type="text" name="[aaa]">
</FORM>
</BODY></HTML>
コードで扱う場合は参照名付けを考えないとなぁ
先頭に[というかw [ ] 自体どうよ? formってのも名前ガチンコ危なげw

VB6でDHTML、DOMのオブジェクトモデルを扱うには
Microsoft HTML Object Library(mshtml.tlb)を参照設定する。
VBのFormにWebbrowser Contorolを使っていると仮定すると…

Option Explicit

Private Sub Form_Load()
Call ObjIE.Navigate2("test.htm")
End Sub

Private Sub ObjIE_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Dim ObjDocument As MSHTML.HTMLDocument
Dim ObjFORM As MSHTML.HTMLFormElement
Dim ObjINPUT As MSHTML.HTMLInputElement

Set ObjDocument = ObjIE.Document
Set ObjFORM = ObjDocument.Forms("form")
Set ObjINPUT = ObjFORM.elements("[aaa]")
REM 参照例
ObjIE.Document.getElementsByName("form")(0).All("[aaa]").Value = "test"
End Sub
442441たまの通りすがり:2005/07/03(日) 06:48:54
あ、自己解決したのか。バイバイw
443デフォルトの名無しさん:2005/07/03(日) 19:35:19
プログラム板が荒れているため、IDを導入するか検討中です。
賛成の方も反対の方も、このスレで自分は賛成か反対かをお書きください。

プログラム技術板に強制ID制を導入すべきか否か
http://etc4.2ch.net/test/read.cgi/vote/1118144381/

理由などの記入は別に構いません。
<<賛成>>か<<反対>>かだけ御記入頂ければ結構です。
ちなみに、当たり前ですが運営の方にIPが見えているので、1日ごとにIDが変わるからといって多重投稿しないでください。
444デフォルトの名無しさん:2005/07/04(月) 01:36:00
VBに限った話しではないのだが、
変数名(関数名や定数名やいろいろ)を英語で付けるのが
主流になったのは何故だが知っている人いる?

日本人なんだから、変数名くらい日本語使いたくないか?
別に半角カナの変数名でもいいと思うのだが・・・
445デフォルトの名無しさん:2005/07/04(月) 07:29:20
>>444
変数名を日本語で付けるのが主流だった時期なんてあったか?
それに、関数名や変数名で使う英語で難しいものなんて少ないだろ。
ライブラリ類が英語なのに、自分の部分だけ日本語なんて違和感あって嫌。
趣味でやってるなら止めはせんが。
446デフォルトの名無しさん:2005/07/04(月) 10:16:37
>>444
モシとかカケとか使いたい?
447デフォルトの名無しさん:2005/07/04(月) 10:36:10
>>444
純国産コンパイラなんて数えるほどしかないので、
予期しないエラーが出る可能性がある。

VBAは日本語変数が多いけど。

>>445
N88日本語BASIC(86)
448デフォルトの名無しさん:2005/07/04(月) 11:16:37
>>447
マイコン少年だったけど、88ベーシックで日本語変数なんて使わなかった。
ぴゅうたベーシックぐらいじゃないのか?日本語ネイティブ。
449デフォルトの名無しさん:2005/07/04(月) 11:52:43
>>448
業務用ソフトではけっこう多かったよ。
450デフォルトの名無しさん:2005/07/04(月) 13:50:22
まあ>444はひまわりでも使っとけってこった。
451デフォルトの名無しさん:2005/07/04(月) 14:21:08
VBからC++に変数をポインターで渡して計算したものをVBにまた返すプログラムなんだけど
プログラムをvisual basic 6.0のGUI上で実行すると「オーバーフロー」っていわれてエラーがでる
プログラムをコンパイルしてexeを作り、exeを実行するとエラーがなにもでない
C++上でデバッグしてもエラーが出ない

こんなことありえるの?プログラムをさらしたいんだけど
長くてどの部分をさらせばいいのかワカンネ('A`)
452451:2005/07/04(月) 14:24:18
ごめん言葉が抜けてた
エラーが出るのはC++から帰ってきた後にC++で計算させた変数をmsgboxに出力させるとエラーがでます
453デフォルトの名無しさん:2005/07/04(月) 14:55:14
>>451

○VB
・Declare文
・C++側を呼んでいる行
・エラーが出る msgbox の行
○C++
・関数のプロトタイプ

の4行ぐらい晒せるでしょ?
454デフォルトの名無しさん:2005/07/04(月) 15:11:47
あるないでいったらある。
デバッカはあくまでVB6.exe上での実行で、実EXEの実行と若干異なる動作をする。
で、原因は多分だがメモリー操作ミスをどっかでやってるんだよ。

でも、普通多いのは逆パターンなような。
デバッカOK、実行どっかーん。
455デフォルトの名無しさん:2005/07/04(月) 15:35:24
変数名が日本語でも問題ないだろーが!!
だったらコメント欄も英語で書きやがれよ
456デフォルトの名無しさん:2005/07/04(月) 16:34:05
>>455
本気で言ってるなら、日曜プログラマーでいてくれ。
仕事でそういうことを言う奴いたら本当に痛い。
457デフォルトの名無しさん:2005/07/04(月) 17:56:06
昔納品されたソースを読んでたら
sain とか pai とか ensyu とか書いてあった。
C言語なのに引数使わないで全部グローバル変数で値渡してるし…
458デフォルトの名無しさん:2005/07/04(月) 18:07:47
>>455
プリフィクスはどうするんだよ?
459デフォルトの名無しさん:2005/07/04(月) 19:17:54
まあ>455はひまわりでも使っとけってこった。
460デフォルトの名無しさん:2005/07/04(月) 22:01:13
>>458
キハ クモハ
461451:2005/07/04(月) 23:34:57
>>453-454
いろいろやってみたら宣言文は問題なしでした
C++のプログラムにミスがあるようです
ポインターをどこかでαβοοη..._〆(゚▽゚*)しているようです
これのバグ探すの・・・('A`)
462451:2005/07/05(火) 00:31:54
バグ発見したよ
sqrtをマイナスの数で計算してた・・・
512回回るforループの最後らへんのループでそうなってたから気がつかなかった_| ̄|○
VBのmsgboxがsqrtでマイナスがでちゃったやつを参照してないのに止まるとはなかなか(・∀・)イイ!!
463デフォルトの名無しさん:2005/07/05(火) 01:58:23
>>451
楽しい奴だな。ガンガレ!
464デフォルトの名無しさん:2005/07/05(火) 07:00:24
VBからIEを起動してページの移動をさせている時に
ある特定のページ(error.htmlとします)にたどり着いた時に
top.htmlに戻るという処理はどのようにすればよいのでしょうか?
465デフォルトの名無しさん:2005/07/05(火) 07:17:24
>>455
昔はコメントも英語で書いていたよー。
いや、単に日本語を表示できない環境だっただけだが。
466デフォルトの名無しさん:2005/07/05(火) 12:53:44
VB6 SP5です。
ハンドルからオブジェクトを得るにはどうしたらよいでしょう?

Form1のオブジェクトgroundのハンドルが111555Lだとして、
ground.show の代わりに
<111555>.show としたいのです。
467ヒデ坊:2005/07/05(火) 13:31:13
ちょっと教えてください。

開発用パソコンの画面解像度は1280*1024にしているのですが、そこでデザイ
ン・開発したプログラムを、画面解像度が1024*768の動作用パソコン上で
動作させると、文字の大きさやボタン等コントロールの大きさが微妙に違い
ます。そのため、開発環境ではきっちりデザインしたつもりが、コマンドボ
タンから文字がはみ出て欠けたりします。まだ実験はしていませんが、もしか
すると画面解像度は同じでも画面サイズが違うパソコンで動作させると、デザ
インの崩れはないかもしれませんが文字の大きさが違うかもしれません。

というわけで、画面解像度や画面サイズが違うパソコンで動作させても、
開発時にデザインしたウィンドウの大きさや文字の大きさをそのまま保って
表示させるにはどのようにしたらよいのでしょうか。
468デフォルトの名無しさん:2005/07/05(火) 14:02:00
>>467
それぞれのOSとDPI設定値は同じ?
469デフォルトの名無しさん:2005/07/05(火) 14:08:36
>>466
ハンドルとは何で取得したハンドルの事ですか?
「ハンドル」と一口に言っても色々種類があるのでそれだけではアドバイスし様が在りません。

>>467
フォームのフォントプロパティウィンドウを開く→OKで閉じる→保存
これで.frmの内部でフォントが明示的に指定されたはず。
(解像度の違うPCでの動作確認はしていない)
前提としては開発環境のフォントと実行環境のフォントが一致している必要があるけど。

ScaleMode を vbTwips [ 1 - Twip ] から vbPixels [ 3 - ピクセル ] にする。

Resize イベントで配置を変更する場合は Left、Top、Width、Height ではなく、
ScaleLeft、Scale・・・ を基準にする。

考えつくのはこんなところかな?
実際に解像度の違うPCで動かす様な事がないので太鼓判は押せませんが。
470466:2005/07/05(火) 14:45:45
>>469
ウィンドウハンドル、hWndプロパティの値です。
471デフォルトの名無しさん:2005/07/05(火) 14:52:49
データベースのテーブルがすでにあるか調べる関数はありますか?
エラーをチェックしてやるしかないのでしょうか。
472デフォルトの名無しさん:2005/07/05(火) 14:56:50
>>470
諦めてAPIを使え。
つ「ShowWindow」
473デフォルトの名無しさん:2005/07/05(火) 15:51:40
>471
あるがスレ違い(VB自体の関数にはない)
それ以前にDAOなのかADOなのかoo4oなのか、
どういうアクセス方法かを書かないと誰も答えられん。
474デフォルトの名無しさん:2005/07/05(火) 15:59:47
>>471>>473
プログラムとかミドルウェアよりDBMSが何かが大事じゃないのか?
まあ、スレというか板違いだね、DBに行きなさい。
475デフォルトの名無しさん:2005/07/05(火) 16:47:52
パネルやピクチャボックスに追加したテキストボックスコントロールを削除すると
なぜかアプリケーションが閉じられなくなってしまいます。
Closeメソッドは効かないのですがApplication.Exitならば終了できます。
何が原因で起きているのでしょうか?
476デフォルトの名無しさん:2005/07/05(火) 17:10:07
>>475
そもそも、コントロールをどのような手段で動的に削除してるんでしょうか?
それと、閉じるのはフォームですよね、アプリを閉じるならEndステートメントでも何でもですよ。
ついでにVB6の話か?Applicationオブジェクトって?
477475:2005/07/05(火) 17:16:22
>>476
すいません、.NETの話でした。
書き込むスレ間違えてしまいました。
スレ汚してすいません。
478デフォルトの名無しさん:2005/07/05(火) 17:52:54
キーボードから整数を入力し、逆に並べて表示するプログラム、入力された
整数を並べじゃ得て最大値・最小値を表示するプログラムがわかりません。
おしえてください。おねがいします。
479デフォルトの名無しさん:2005/07/05(火) 18:50:12
>>478
課題は自分で達成しなさいね。

Text1.Text = 整数 & " " Text1.Text
最大値 = Max(最大値,整数)
最小値 = Min(最小値,整数)
Text2.Text = 最大値
Text3.Text = 最小値
480デフォルトの名無しさん:2005/07/05(火) 20:38:31
tabIndex=5のテキストボックスにカーソルをsetFocusであわせることって出来ますか?
481デフォルトの名無しさん:2005/07/05(火) 20:51:28
For Each ctlObj In Form1.Controls
  If ctlObj.TabIndex = 5 Then
    ctlObj.SetFocus
    Exit For
  End If
Next
482ヒデ坊:2005/07/05(火) 22:14:03
>>468
いえ、OSもいろいろだし、DPIもいろいろです。
できれば、動作用PCのそれらの違いを乗り越えて(無視して)、開発時の
デザイン通りに表示してくれればと思います。
483デフォルトの名無しさん:2005/07/05(火) 22:42:58
(´-`).。oO(TwipやPointで指定してもデザインが大幅に崩れるんだっけ?
       Dr.GUIが解説してた記事がMSDNにあったキガス)
484デフォルトの名無しさん:2005/07/05(火) 22:46:34
>>482
秘密主義者は勝手にやってくれ。
485デフォルトの名無しさん:2005/07/06(水) 00:03:20
順位付けを教えてください
486デフォルトの名無しさん:2005/07/06(水) 00:13:27
どなたかぁ〜!!!
487デフォルトの名無しさん:2005/07/06(水) 00:15:03
なんか回答者が超能力を試されるスレになってきたなw
488デフォルトの名無しさん:2005/07/06(水) 00:20:48
ダメですか???
489デフォルトの名無しさん:2005/07/06(水) 01:02:03
>>485
一番最初のものに一位、次に二位、その次に三位、・・・
って付けていきます。
こういうのはMSDNとかには載っていない大変高度な話ですが、
小学校の教科書ぐらいの難しい本にはたぶん載ってます。
490デフォルトの名無しさん:2005/07/06(水) 01:02:27
そのうち前世で××の戦士だったひと連絡待ってます、
みたいなノリのレスだらけになったりしてw
491デフォルトの名無しさん:2005/07/06(水) 15:08:29
VB6.0使用です。
数値がピラミッド型に並んでいるデータ構造があって、そこから数値を指定すると
2つ下階層の4つの数値が取得できるようなプログラムを作りたいと思っています
。数値の並びは1階層とばして2階層から次の値が開始するような形式です(下の
数値の数は4つになる)。
1を指定すると2,3,4,5が取得できて、3を指定すると10,11,12,13、9を指定すれば
34,35,36,37です。
この考え方で、どの数値が指定されても4つの値を取得できるような関数を作りた
いのですが、どうにもわかりませんでした。是非アドバイスお願いします。
492デフォルトの名無しさん:2005/07/06(水) 15:36:53
ぐーぐる様で、データ構造 ツリー構造 VB で検索してみる。
493デフォルトの名無しさん:2005/07/06(水) 15:42:17
>>491
Public Function f(ByVal n As Integer) As Integer()
Dim r() As Integer
ReDim r(4)
r(0) = n * 4 - 2
r(1) = n * 4 - 1
r(2) = n * 4 + 0
r(3) = n * 4 + 1
f = r
End Function

Private Sub Form_Load()
Dim r() As Integer
r = f(1)
Debug.Print r(0)
Debug.Print r(1)
Debug.Print r(2)
Debug.Print r(3)
End Sub
494デフォルトの名無しさん:2005/07/06(水) 16:10:02
>>493
ありがとうございました。無事に値を取得する関数ができました。
自分の頭の回転の悪さがなんとも、、、
495デフォルトの名無しさん:2005/07/06(水) 17:59:20
496デフォルトの名無しさん:2005/07/06(水) 18:32:25
VB6でフレームやSSTabの中のコントロールを外に出したり、
逆に外のコントロールを中に入れたりするにはどうすれば良いのですか?
D&Dだと外に出そうとしても出せないし、中に入れようとしても位置的に重なるだけだし。
497デフォルトの名無しさん:2005/07/06(水) 18:39:17
>>496
フォームデザイン時の話であれば、切り取り&貼り付け
498デフォルトの名無しさん:2005/07/06(水) 22:47:42
VB6で要素数が不定な三次元配列の内容をファイルに保存し、
起動時にそれを読み込みたいのですが、なにか良い方法は無いですか?
今は、たとえばhoge(3,1,2)という配列の場合tsvに区切り入れて
0-0-0 1-0-0 2-0-0 2-0-0
0-1-0 1-1-0 2-1-0 2-2-0
区切り
0-0-1 1-0-1 2-0-1 2-0-1
0-1-1 1-1-1 2-1-1 2-2-1
区切り
0-0-2 1-0-2 2-0-2 2-0-2
0-1-2 1-1-2 2-1-2 2-2-2
のようにちまちまと保存したり読み込んだりしてるのですが、
実際には要素数が多いのでかなり時間が掛かります。
とにかく高速に前回終了時の配列を再現したいのですが
良い方法をご存じの方、どうか教えてください。
499デフォルトの名無しさん:2005/07/06(水) 23:00:44
>>498
そのままBinaryでPut&Get
500デフォルトの名無しさん:2005/07/06(水) 23:19:09
>>499
もうしらばらくVB使ってないんで自信はないけど、多次元配列の場合は
バイナリモードだと書くときはよくても読み出すとき困る気がした。

バイナリモード使うなら配列を構造体で包んでやる必要があったと思う。
501デフォルトの名無しさん:2005/07/07(木) 00:34:48
me.controls.addとかでtextBoxを追加していきたいのですが
addする際にデザイン時にしか設定できない値を変更することってできますか?
scrollbarsとかの
502デフォルトの名無しさん:2005/07/07(木) 09:04:14
>>501
それはできなかった気がするけど、一つ雛形でテキストボックスを作っといて、
プロパティも設定して、それを複製するのはできたはず。
503デフォルトの名無しさん:2005/07/07(木) 16:01:10
ActiveX コントロール作ってるんですけど、自コントロールにフォーカスが無いとキーアップ・キーダウンイベントが受け取れなくて困っています。
例えば、あるキーが押されたら、そのキーが押されたことが分かればOKなんですが。
504デフォルトの名無しさん:2005/07/07(木) 16:34:43
>>503
用途は?
505デフォルトの名無しさん:2005/07/07(木) 16:35:04
>>503
グローバルフック
506498:2005/07/07(木) 17:17:59

>>499
回答ありがとうございます。
しかし500さんの言うように読み込みがうまくいきません。
構造体使うのは避けたいので、他になにか方法をご存じの方、
又は多次元配列をGetステートメントで読み込む方法を具体的に知ってる方
引き続き宜しく御願いします。
507デフォルトの名無しさん:2005/07/07(木) 17:52:05
>>498
こんな風にすれば問題ないと思うのだが。

Dim r() As Integer
'ReDim r(a, b, c)
Public Function r_Save()
Open "C:\VB.dat" For Binary Access Write As #1
Put #1, , LBound(r, 1)
Put #1, , UBound(r, 1)
Put #1, , LBound(r, 2)
Put #1, , UBound(r, 2)
Put #1, , LBound(r, 3)
Put #1, , UBound(r, 3)
Put #1, , r
Close #1
End Function
Public Function r_Load()
Dim LB1 As Long, UB1 As Long
Dim LB2 As Long, UB2 As Long
Dim LB3 As Long, UB3 As Long
Open "C:\VB.dat" For Binary Access Read As #1
Get #1, , LB1
Get #1, , UB1
Get #1, , LB2
Get #1, , UB2
Get #1, , LB3
Get #1, , UB3
ReDim r(LB1 To UB1, LB2 To UB2, LB3 To UB3)
Get #1, , r
Close #1
End Function
508デフォルトの名無しさん:2005/07/07(木) 18:15:35
>>506
うまく行かないと言うだけじゃ通じない。
構造体を避ける理由も明記するべき。
509503:2005/07/07(木) 18:22:38
>>504
内緒。

>>505
ありがとう。できた。
510デフォルトの名無しさん:2005/07/07(木) 20:09:04
おしえてくださいませ

1234@4567755@3425323@5235235
各数字の桁が不定な数値を@記号区切りで持っているデータファイルがあります。
一番最後の@記号意向の値を取得したいです。
よろしくお願いします。
@記号も数が不定です。
511デフォルトの名無しさん:2005/07/07(木) 20:15:27
instrrev
512デフォルトの名無しさん:2005/07/07(木) 20:54:50
>>511
当方VBが5なのですが、認識されない関数でしょうか?
513デフォルトの名無しさん:2005/07/07(木) 21:01:16
VB3.0と6.0にあるのは確認している。
514デフォルトの名無しさん:2005/07/07(木) 21:07:35
515デフォルトの名無しさん:2005/07/07(木) 21:23:16
APIだったのですね。標準関数かと思い込んでおりました。
感謝いたします
こちらのAPIでいけそうです。ありがとうございました。
516デフォルトの名無しさん:2005/07/07(木) 21:25:14
ああAPIではないですね。すみません。
517デフォルトの名無しさん:2005/07/08(金) 10:53:17
>510
instrrev
split

お好きな方をどうぞ
518デフォルトの名無しさん:2005/07/08(金) 11:25:00
519デフォルトの名無しさん:2005/07/08(金) 11:31:37
VB5でSplitが無いっていうのが判った段階で、普通に関数作れば5分で終わるような・・・。
520デフォルトの名無しさん:2005/07/08(金) 13:43:09
>518
>142
521デフォルトの名無しさん:2005/07/08(金) 13:46:19
今回は余計というか、単なる無駄だったな
522デフォルトの名無しさん:2005/07/08(金) 16:20:23
コンボボックスへの値の設定ってどうすればいいのですか?
Textプロパティだと取得は出来るけど設定はできないってエラーが出る。
コンボボックスに表示されてる値って、追加したアイテムの中から
インデックス番号でしか設定できないのですか?
523デフォルトの名無しさん:2005/07/08(金) 16:51:05
>>522
スタイルを何にしてるの?
多分そこを理解してないからそういう疑問になるんだと思うんだけど。
そのあたりのヘルプ見て、コンボなのかドロップダウンなのか、貴方が望む形式を選択してからもう一度。
524デフォルトの名無しさん:2005/07/08(金) 18:25:33
.ItemData
525デフォルトの名無しさん:2005/07/09(土) 15:23:44

VB6のMSHFlexGridコントロールで、列や行に対して
文字割付(上寄せとか左寄せとか)や、修飾(文字色とか太字とか)を
設定するにはどうすればよいですか?

今は列や行に対してではなく、セルに対する設定をForで回してますが非効率的なので。
Spreadsheetコントロールならそういうことも出来るのですが、
MSHFlexGridコントロールを使いたいので、どうかご教授お願いします。
526デフォルトの名無しさん:2005/07/09(土) 15:30:46
>>525
Spreadsheet使え
527デフォルトの名無しさん:2005/07/09(土) 15:53:06
>526
よく読め
528デフォルトの名無しさん:2005/07/09(土) 16:28:42
>>527
読んだ上で言ってるんだよ
529デフォルトの名無しさん:2005/07/09(土) 17:15:51
m9(^Д^)プギャー
530デフォルトの名無しさん:2005/07/10(日) 12:03:05
既存のアプリケーションに手を加えずに、
ActiveXなどのコントロールをアドインして、
機能拡張する事は可能でしょうか?

アプリ自体にアドオンが考慮されていないとダメそうですが。
531デフォルトの名無しさん:2005/07/10(日) 13:01:58
>>530
可能。

ヒント
Class、Implements。

VBのアドインもVBで作成することが可能だしな。
532デフォルトの名無しさん:2005/07/10(日) 23:46:03
>>531
それは既存アプリがClass化されている事が前提で、
そのClassをインプリメントして作成する?ってこと
533デフォルトの名無しさん:2005/07/11(月) 00:48:20
EXEの内部にファイルを埋め込むことってできるのでしょうか?

例えば単にWAVファイルを再生するソフトを作ったとして、
外にあるファイルを再生するのではなく、実行ファイルの内部に埋め込んだ
WAVを再生するようなことをしたいのですが・・・
534デフォルトの名無しさん:2005/07/11(月) 01:42:17
出来るよ
535デフォルトの名無しさん:2005/07/11(月) 02:22:39
>>533
サイズが小さければリソースとして埋め込める
でかければデータとして工夫すれば埋め込める
めんどくさい事すればEXEの後にくっつけて埋め込める
536デフォルトの名無しさん:2005/07/11(月) 02:26:40
>>535
容量は大きいので、データとして工夫して埋め込む方法か、
EXEの後にくっつけて埋め込め方法はどうすればいいのでしょうか・・・?

自分の検索の仕方が悪いのか、「VB EXE ファイル 埋め込み」などで検索してるのですが、
全然関係のないページばっかりで、目的の方法が見つかりません・・・
537デフォルトの名無しさん:2005/07/11(月) 02:35:10
>>536
PEフォーマットを調べLHAのような自己解凍ソフトのように
EXEの後にくっつけるか
ソースコードとしてbinaryの配列にconstでつっこむか
小分けにしてリソースとして登録するか(これは上限あったかな?)
538デフォルトの名無しさん:2005/07/11(月) 02:50:15
>>537
有り難うございます。
PEフォーマットについては難しそうなので、
リソースとして登録する方法でやろうと思います。

>ソースコードとしてbinaryの配列にconstでつっこむか
これが個人的に詳しく聞きたいのですが・・・
でも、もうちょっと自分で調べて勉強してみます・・・
539デフォルトの名無しさん:2005/07/11(月) 03:19:13
おおっ!!リソースとして登録する方法は、すんなりといきました!!
上限がなければこれで充分そうです。
540デフォルトの名無しさん:2005/07/11(月) 14:19:31
これから大学でVBを必要とするのですが自主的に勉強って感じなんですよ
でまずどんな本を使って勉強すればいいですか??
541デフォルトの名無しさん:2005/07/11(月) 14:55:39
>>540
VB.NETじゃなくて6.0もしくはそれ以下なのか?
やる価値も無いし、本も手に入りづらいぞ
542デフォルトの名無しさん:2005/07/11(月) 15:57:00
>>541
.NETの方がやる価値がなくないか?
543デフォルトの名無しさん:2005/07/11(月) 16:06:59
>>542
くだらない冗談言わないでくれ。
544デフォルトの名無しさん:2005/07/11(月) 16:07:59
だな。
未だにVB6以前使ってる奴 >>> 今からVB6始める奴 >>>壁>>> VB.NET使ってる奴
VB.NETなんてやるくらいなら他言語使えよって感じだ。
545デフォルトの名無しさん:2005/07/11(月) 16:28:18
VB以外使えないやつ、を忘れてるぜブラザー?
546デフォルトの名無しさん:2005/07/11(月) 16:30:18
未だにVB6以前使ってる奴 >>> 今からVB6始める奴 >>> VB以外使えないやつ >>>壁>>> VB.NET使ってる奴
547デフォルトの名無しさん:2005/07/11(月) 16:31:12
そいつは使い物にならないので会社から去っていった。
忘れさせてくれ。
548デフォルトの名無しさん:2005/07/11(月) 16:48:15
.netをやる価値ないとか言ってる奴、じゃあ次の自分のメイン技術を何にしようとしてるか言ってくれよ。
Windowsクライアント・サーバ両面において、.netは十分使えるし、シェアを考えた場合Windows専用ってのもありだ。
549デフォルトの名無しさん:2005/07/11(月) 16:59:06
>>548
お前・・・
550デフォルトの名無しさん:2005/07/11(月) 17:04:50
>>549
で?やっぱ批判だけで中身ないんだけ。全く具体的な反論ができない。
551デフォルトの名無しさん:2005/07/11(月) 17:15:29
> じゃあ次の自分のメイン技術を何にしようとしてるか言ってくれよ。
> じゃあ次の自分のメイン技術を何にしようとしてるか言ってくれよ。
> じゃあ次の自分のメイン技術を何にしようとしてるか言ってくれよ。
552デフォルトの名無しさん:2005/07/11(月) 17:19:34
なんだよ、単なる基地外か。
まあ、マイクロソフト製品を批判してればなんとなくかっこいいもんね。w
553デフォルトの名無しさん:2005/07/11(月) 17:23:04
VB.NETを新規に始めるなら、C#とかのほうがいいんじゃねーの?って話に見えるんだが違う?w
554デフォルトの名無しさん:2005/07/11(月) 17:23:29
なにこの可哀相な子。
きっと自分が使ってるものを批判されたからキレちゃったんだね。
マとして以前に人間としてレベルが低すぎてかなわない。
555デフォルトの名無しさん:2005/07/11(月) 17:27:49
>>553
.netフレームワークでは別に言語選択それほどこだわらないけどね。
好みとしてはC#のほうがすきだけど。どっちでもできるからいいやって感じで。
で、話題にしてたのは.netフレームワークそのもののつもりだけど、まあVB.netスレだから言語限定に取られたか?

それに対抗しうるフレームワークって中々ないよね。
Javaはクライアントサイドが致命的にダメだし。
556デフォルトの名無しさん:2005/07/11(月) 17:30:14
まぁ.netフレームワークそのものが糞だけどな。
557デフォルトの名無しさん:2005/07/11(月) 17:33:04
>>556
まあとりあえず理由も示さずに、MS製品非難しとけばなんとなくかっこいいもんね。
反体制的だし、技術者みたいに見えるし。
558デフォルトの名無しさん:2005/07/11(月) 17:35:54
>>553
もう頭に血が上ってそれどころじゃないようなかんじだな、彼は。
559デフォルトの名無しさん:2005/07/11(月) 17:39:57
暑くなるとこういう熱いのが湧くのは仕方ないこと
560デフォルトの名無しさん:2005/07/11(月) 17:44:59
で、具体的な代替は示せないわけだ。言語もフレームワークも。
まあ、基地外って言われたのは当ったんだろうね。
無意味な書き込み繰り返して。

>>549 >>551 >>554 >>556 >>558 >>559
561デフォルトの名無しさん:2005/07/11(月) 17:49:14
.Net Frameworkは死滅する運命にありますからね。
もってあと数年かな?
562デフォルトの名無しさん:2005/07/11(月) 17:55:55
一人だけ自分が基地外だってことに気付いてない奴が居る件
563デフォルトの名無しさん:2005/07/11(月) 22:12:40
(´-`).。oO(どんなに熱くなっても技術的な話は一切しないのな)
564デフォルトの名無しさん:2005/07/11(月) 22:23:59
「しない」じゃなくて「できない」んでしょ。
周りを無意味な書き込みと罵る割には、
自分も無意味な書き込みばかり繰り返してる。
565デフォルトの名無しさん:2005/07/11(月) 22:38:04
理由無くVBやM$批判する奴は結局大衆の真似してるだけだろ
みんなが糞って言ってるから使ったこと無くても糞と言う
566デフォルトの名無しさん:2005/07/12(火) 09:45:15
どうでもいいけど、糞と黄って似てるよな。
567デフォルトの名無しさん:2005/07/12(火) 10:08:22
OS XP VB6.0SP5

OSがNT系のサービスはVBStationやらのサイトとかで見つかったけど
スタートアップ(msconfig)のソースまたはサンプルがググっても見つからない。
知っている人いたら教えてくださし
568デフォルトの名無しさん:2005/07/12(火) 12:43:47
>>567
質問の内容がまったく理解不能なんだが、とりあえず理解できた部分だけでも答えてやろう。

msconfigのソースコードはMicrosoftとNDA契約を結ばないと公開してもらえないはず。
ググルだけ無駄。
569デフォルトの名無しさん:2005/07/12(火) 14:52:53
WinXP + VB6.0 + MS ADO6.0 + MySQL4.0 + ODBC
adoのコントロール名が adoAlbum

普通に検索するようなプログラムを作ろうと、
以下のプログラムを書いてみたところ、
MySQLの方からSyntaxエラーが帰ってきました…

ちなみに、RecordSorceを初期値のまま全件表示はうまくいってます。
また、Debug.Printした結果を mysql> へコピペした場合は意図どおりに検索してくれます。

adoAlbum.RecordSource = "select * from albumList where artist_id=" & artistID & ";"
Debug.Print adoAlbum.RecordSource
adoAlbum.Refresh
570569:2005/07/12(火) 14:58:57
adoコントロールのプロパティ。
レコードソース -> コマンドタイプを
「1 - adCmdText」 に変更したらうまくいきました。
お騒がせしました。
571デフォルトの名無しさん:2005/07/12(火) 15:30:44
超初心者ですいません。VB6.0です。

フォーム上にある3つのTextを1つのデータとして
これらを配列を使ってsave.txtに保存したいのですが、
1つ目のデータは保存することが出来るのですが
2つ目のデータを保存すると1行目のデータが
上書きされてしまいます。
C言語のファイルポインタみたいなものがあれば良いのですが…
お願いします。
572デフォルトの名無しさん:2005/07/12(火) 16:01:22
・追加モードで開く
・テキストを結合して書き込む

なんでC言語が出てくるんだ
573デフォルトの名無しさん:2005/07/12(火) 16:33:47
>>572
アペンドモードでやったら解決しました。
簡単な問題だったのねorz
C言語は…
きにしないで下さいw
574デフォルトの名無しさん:2005/07/12(火) 17:45:18
>>567
ソースもサンプルもないけど、参考にはなるかな。

Windows NT系OS起動時の、自動実行(レジストリ、Startupフォルダ)
http://tef-room.net/tips/startup.html
575デフォルトの名無しさん:2005/07/12(火) 21:03:37
現在、NT4.0Serverで、VB6で作成したバッチAPLを稼動させてます。
このVB6で作成したバッチAPLを、Windows2003Serverで稼動させる場合、
Windows2003Server上でリコンパイルする必要があるのでしょうか?!。
動く動かないでいうと、そのままのExeで動くのですが、PCServerの
H/Wスペックがあがってるにも関わらず、バッチAPLのレスポンスが遅くなって
しまっています。
これって、Windows2003Server上でリコンパイルすれば解決することで、
知ってる人にしてみれば、当たり前のことなのでしょうか?!?!?!。
576デフォルトの名無しさん:2005/07/12(火) 23:12:25
>>575
動いてるなら動くんでしょ?
リコンパイルは基本的に不要。
バッチが何やってるかわからないのに、なぜ遅くなったか判ったらエスパーです。
デバックコードを埋め込んで遅延理由を探るのがプログラマの仕事じゃないのか?
577デフォルトの名無しさん:2005/07/13(水) 00:16:10
すいません、、、プログラマとも呼ばれない類のもので。。。
単純に、同一のWindows2003Server上で、NT4.0上で作成したVB6のexeを実行
した場合と、そのソースをそのWindows2003Server上でVB6でリコンパイル
して実行した場合を比較すると、実行結果はともに正しいのですが、
リコンパイルしたexeのレスポンスが、単純にもってきたexeより、
2〜3倍よいのです。
コンパイルしたServerOS環境でレスポンスが異なるってことは、
ServerOSのシステムファイルやらによって、動くけど、効率の差
が発生するものなのかしら。。。?!、、と思っての質問です。
愚問なのでしょうが、アドバイスいただきたくお願いします。
578デフォルトの名無しさん:2005/07/13(水) 00:31:14
>>577
・4.0と2003で作成されたEXEをバイナリで比べて違いがあるか
・コンパイルのオプション(最適化等)は同じか
・VB自体のバージョンとサービスパックは同じか
579デフォルトの名無しさん:2005/07/13(水) 00:57:10
>・4.0と2003で作成されたEXEをバイナリで比べて違いがあるか
 exeのサイズを見ると、4.0上で作成したexeより、2003上で作成したexe
 のほうが、小さいです。
>・コンパイルのオプション(最適化等)は同じか
 4.0上でのコンパイルオプションについては、これから確認してみます。
 2003上でのコンパイルオプションは、V何も指定等していません。
 言い換えれば、VB6のデフォルト値のままとなります。
>・VB自体のバージョンとサービスパックは同じか
 VB自体のバージョンは、6.0で同じです。
 サービスパックについては、4.0上はこれから確認してみます。
 2003上では、適用していません。

いかがなものでしょう。。。。
580デフォルトの名無しさん:2005/07/13(水) 01:06:17
>>577
君がプログラマでないんなら金だしてプログラマに頼みな。
って、とりあえず煽っておいとく。(先の質問の答えになってねーべ)

実は俺も経験がある。
俺の場合使ってる外部OCXのバージョンが違っていたというorz系の理由だったが。
とにかく何をやっているのかぐらい示してくれんと助言もできんと思うぞ。
あとコンパイルオプションでP-CODEにしてるってことはないか?
581デフォルトの名無しさん:2005/07/13(水) 01:24:41
 アドバイスいただき、ありがとうございます。

> って、とりあえず煽っておいとく。(先の質問の答えになってねーべ)
 言われるとおりで、、、。

> とにかく何をやっているのかぐらい示してくれんと助言もできんと思うぞ。
 処理概要は、MS-SQLserverDBに、一括更新処理をしています。
 GUI等はつかっていません。
 ソースを見てみると、IF条件とSQLばかりのものです。
> あとコンパイルオプションでP-CODEにしてるってことはないか?
 2003上では何ら指定をしていないデフォルトでコンパイルしているの
 ですが、NT4.0上での作成時については確認してみないと不明です。
 早速確認してみます。
 ちなみに、、、P-CODEか否か?!、exeから確認する方法はあるので
 しょうか?!。
 
582デフォルトの名無しさん:2005/07/13(水) 04:13:12
> ちなみに、、、P-CODEか否か?!、exeから確認する方法はあるので
> しょうか?!。
Dependency Walkerで見たら、
使用しているMSVBVM60.DLLのエクスポート関数の数に
違いが有ったので、これで判断できるのでは?
583デフォルトの名無しさん:2005/07/15(金) 06:21:34
長さの異なる複数の文章を改行で区切って格納したテキストファイルを
シーケンシャルアクセス(For Input)で開いている状態で、
次に Line Input# で読み込むレコード位置が
ファイルの先頭から何バイト目かを知る方法はありますか?


584デフォルトの名無しさん:2005/07/15(金) 06:59:10
次に読み込む位置=現在の位置だろ
585デフォルトの名無しさん:2005/07/15(金) 07:15:13
>>583
>長さの異なる複数の文章を改行で区切って格納したテキストファイル
つーことは、今から読み込む位置が
 [いくつ目のデータか] * [データのバイト数]
じゃ算出できないってことか。
先頭からいちいち加算すれば、って話でもないようだな。
586デフォルトの名無しさん:2005/07/15(金) 10:11:36
loc()じゃだめ?
587デフォルトの名無しさん:2005/07/15(金) 14:41:30
iniなどのファイルを作らず、レジストリも使わずに
設定を保存する方法って無いですか?
実行ファイルに毎回設定情報を埋め込むとか。

もし可能なら具体的な方法か、解説サイトの紹介をお願いします。
588デフォルトの名無しさん:2005/07/15(金) 15:17:58
>>587
ウイルス対策ソフトが反応しそうな予感。
それに自分自身のファイルには書き込めないんじゃない?
589デフォルトの名無しさん:2005/07/15(金) 15:20:03
なぜにそげなことする必要があるのでごわすか?
590デフォルトの名無しさん:2005/07/15(金) 15:26:18
全く環境を汚さずに設定を保存するってのは基本的に無理でしょ。
DBとかに接続してるなら、そこに全部保存すればまあローカルは汚れないけど。

そもそもVB6 アプリ入れてる段階で、そういう環境変更を嫌う人の要件を満たしてないと思うけど。
VCなどの完全スタティックリンクなEXEか、.netのノータッチデプロイとか、Webアプリじゃないと。
591デフォルトの名無しさん:2005/07/15(金) 15:26:22
実行ファイルに別のEXEをリソースとして埋め込んで、
自分自身のコピーに設定情報をバイナリの最後に埋め込んでから、
終了時にリソースからEXEを呼び出して元の実行ファイルのプロセスが終了したら
オリジナルを削除し、コピーをオリジナルのファイル名に戻す。
592デフォルトの名無しさん:2005/07/15(金) 15:31:24
浅いな
593591:2005/07/15(金) 15:32:11
ちょっと間違えた。

>終了時にリソースからEXEを呼び出して元の実行ファイルのプロセスが終了したら
>オリジナルを削除し、コピーをオリジナルのファイル名に戻す。

これちょっと考えたら無理だな。
終了時にリソースからEXEを適当な場所に復元して、shellで実行。
元の実行ファイルのプロセスが終了したら、オリジナルを削除し、
コピーをオリジナルのファイル名に戻す。
594591:2005/07/15(金) 15:40:06
つまりはリソースに埋め込む実行ファイルを先に作る。
これは単純に元の実行ファイルのプロセスが終了しているのを確認し、
オリジナルを削除して、コピーを元に戻すだけの処理。
ファイル名などは引数で渡せばいいだけ。

元の実行ファイルにも、終了時に自分自身のコピーを作成し、
設定情報をバイナリの最後に埋め込む処理を追加。
その後にリソースからEXEファイルを適当な場所に復元してShellで実行。

もっといい方法あるなら俺にも教えてくれ。。。
595デフォルトの名無しさん:2005/07/15(金) 15:45:01
>>592じゃないが、明らかに浅いよ。
それが言ってるように簡単に動的に出来れば、誰も(それこそウィルス作成者もw)苦労しないって。
596591:2005/07/15(金) 15:45:56
これもよく考えたら、リソースから復元したEXEがゴミとして残るな・・・
俺全然だめぽ・・・
597デフォルトの名無しさん:2005/07/15(金) 16:23:11
VB.NETから誘導されてきました。
VB6.0なんですが、コンボボックスのIMEモードを全角ひらがなにしておくと、
コンボボックスから次ぎのコントロールにフォーカスが移ってもIMEのモードが
そのまま引き継がれてしまいます。(次ぎのコントロールのIMEモードを半角にしていても)
これって仕様ですか?バグですか?
でもって解決策はないでしょうか?
598デフォルトの名無しさん:2005/07/15(金) 18:20:19
>>597

Private Sub xxx_GotFocus()
xxx.IMEMode = vbIMEModeOff
End Sub
599デフォルトの名無しさん:2005/07/15(金) 19:53:46
>>587
設定ファイルじゃなんでダメなんだろ。
解析されたくなかったら、それなりの対策すればいいんだし。
600デフォルトの名無しさん:2005/07/15(金) 20:03:08
まあなんていうか、能力がない奴に限って
その乏しい能力をどうでもいいようなことに注ごうとするのはなんでだろうな。
自分探しの一種みたいなもんだろうか?

こんなことができるのは俺だけだ、って。
じっさいなそんな下らないことをするのはアンタだけだよ
601デフォルトの名無しさん:2005/07/15(金) 20:09:41
このスレって回答できそうもない質問がくると
理由聞き出して罵倒する方向に持っていこうとする可哀相な奴が多いよな。
知ってるなら答える、知らないならスルーでいいのに
初心者ほど自分に答える義務があるとでも勘違いしているかのように全ての質問に喰っていく。
602デフォルトの名無しさん:2005/07/15(金) 20:15:02
>>601
うむ、激しく同意。
>>600みたいな奴が典型的だな。
603デフォルトの名無しさん:2005/07/15(金) 20:24:23
まあなんと言おうと馬鹿なものは馬鹿だし、
無意味なものは無意味だとしか言いようがない。
604デフォルトの名無しさん:2005/07/15(金) 20:36:23
と、決めつけていれば
己の無知を認めないことで自尊心を守ることが出来る

というわけだなw
605デフォルトの名無しさん:2005/07/15(金) 20:48:31
>>603
この世に意味のないことなんてないぞ?
あえて言えばお前が生まれてきたことぐらいか…
606デフォルトの名無しさん:2005/07/15(金) 23:01:38
あるページのソースを取得し、その中から文字列を取得したいのですが、
変数の中にソースを代入するのと、テキストファイルを作ってそこにソースを書き出すのでは、どちらが効率が良いでしょうか?
また、どうすればできますか?
607デフォルトの名無しさん:2005/07/15(金) 23:32:55
>>606
普通の使い方なら、変数の中に文字列を代入してからのほうが扱いやすい。(ていうかここは必ず通るでしょ)
ファイル経由で解析を行うライブラリがあって、それが強力なものであるならファイルで管理も考えるかな。

検索関係はRegex,InStr,InStrRevなんかでググルといい。
ファイル関連はFileSystemObjectなんかでググルといい。

「ページ」が何なのかによって回答も違ってくるよ。
608デフォルトの名無しさん:2005/07/16(土) 03:59:01
>>583
遅レスだが。
シーケンシャルでのloc()は128で割った値を返すってあるね。
大きなテキストを扱うことを考えると、やっぱり地道に加算?
609デフォルトの名無しさん:2005/07/16(土) 04:15:43
VBスクリプトで、非アクティブウィンドウでボタン連打の自動操作
しながら、アクティブウィンドウで普通の作業ってできますか?
難しくなければ、ご教授してください。お願いします。
610デフォルトの名無しさん:2005/07/16(土) 07:41:32
無理
611525:2005/07/16(土) 12:00:18
>>525も宜しく御願いします。
最初にも書きましたが、SpreadsheetではなくMSHFlexGridを使いたい為、質問に来ています。
612デフォルトの名無しさん:2005/07/16(土) 13:17:44
>>611
FlexGridでは無理。
2行増えるだけだから、効率悪いとは思えないし。
613デフォルトの名無しさん:2005/07/16(土) 13:28:59
効率悪いかどうかは使う奴が決めること
614デフォルトの名無しさん:2005/07/16(土) 13:46:52
正直、そこにある鋸を使えば簡単に切断できるものを、わざわざカッターナイフで
切りたいって奴は頭がおかしいとしか思えない。

しかも、どうしてもカッター使いたいなら、それは頑張って手を動かすしかないわけだが、
その頑張って手を動かすのがイヤなんだと。
完全に狂ってる。
615デフォルトの名無しさん:2005/07/16(土) 13:55:00
例えが間違ってるな。
言うならチェーンソーと鋸だ。
チェーンソーの方が効率がよいのは誰が見ても明らかだが、
でかくて重い、ガソリンやバッテリーなどの動力源が必要、扱いによっては死に至るケガをする場合もある
などのデメリットもある。

プログラムでも全面的にどちらかが劣ってるって場合もあるが、
大抵はどちらにも何らかのメリットがある場合が多い。
そういうのが読めない奴は知識だけあってもいい物は作れないだろうな。
616デフォルトの名無しさん:2005/07/16(土) 14:04:58
自分が知らない質問されるのが気に入らないんでしょ
自分が知らないことは無駄なことだと思いこんで安心したいんだよ
617デフォルトの名無しさん:2005/07/16(土) 14:13:02
>>616は物理的に不可能なことと能力的に出来ないことの区別がつかないと思われる。
いわく、「思ったことはかなえられることなり」

こういうのは言霊主義、あるいは念力主義という。
618デフォルトの名無しさん:2005/07/16(土) 14:52:34
明らかに無理ならソース出せばいい
無理だと思うだけなら無視すればいい
知ってるなら答えればいい

何でこれだけのことが出来ないんだろう??
619デフォルトの名無しさん:2005/07/16(土) 14:57:41
>>618は無意味な「それ」をせず別の行動を選択することと、「それ」が能力的に出来ないことの
区別がつかないと思われる。

「〜すればいい」ってそう思うのは君であって俺ではないのだが。
>>618のような症例を自己中心性、あるいはジャイアニズムという。
620デフォルトの名無しさん:2005/07/16(土) 15:01:05
なんか必死な子がいる
板杉
621デフォルトの名無しさん:2005/07/16(土) 15:06:35
VBって非アクティブ操作できないのかよ。マクロできたとしても
スクリプト書かなくても、フリーのマクロで事足りるじゃん。
622デフォルトの名無しさん:2005/07/16(土) 15:08:35
必死で「必死だな」という、その滑稽で必死な自分棚上げぶりは自己中心性の派生物と思われる。
そもそも、必死だったらなんだというのだろう。
623デフォルトの名無しさん:2005/07/16(土) 15:17:38
622
624デフォルトの名無しさん:2005/07/16(土) 15:41:02
>>621
は?

VBスクリプトとVBの区別もつかないのかw
もう一回>>609読んでからしね。
625デフォルトの名無しさん:2005/07/16(土) 18:44:47
>>607
返答ありがとうございます。

SamurizeというソフトのスクリプトをVBSで製作したいと思い最近VBを始めました。
インターネットのページの中から文字列を取得したいという意味です。
626625:2005/07/16(土) 18:46:05
連レスすいません。
× VBS
○ VB
627デフォルトの名無しさん:2005/07/17(日) 12:46:49
VB6でWinampのプラグインを使用して音楽を鳴らす方法って
どうやればいいんでしょうか?
Winamp向けのdllを使って音楽データを鳴らしたいんですけど、
ぐぐっても「それらしき」説明がされているサイトが見つかりません・・・
628デフォルトの名無しさん:2005/07/17(日) 12:52:05
>>627
ちゃんと英語でググってる?
629デフォルトの名無しさん:2005/07/17(日) 19:39:26
VB6で、二次元配列の一部を削除して詰める方法って無いでしょうか?
例えば
A, B, C
D, E, F
G, H, I
J, K, L
M, N, O
という3*5の要素を持つ配列の
A, B, C


J, K, L
M, N, O
の部分を削除して
A, B, C
J, K, L
M, N, O
という3*3要素の配列にする方法です。
今はひとつずつ書き換えてReDim Preserveをしてますが
もっと効率の良い方法をご存じでしたら教えてください。
630デフォルトの名無しさん:2005/07/17(日) 20:04:14
>>629
その例だと「詰める」必要なんて本当にあるのか疑問な気もするけど、
どうしてもそんな風にしたのなら、一次元配列をラップして二次元配列みたいに
使えるクラスを作るのが一番簡単だと思う。

インデックスをあらわす引数を二つとるプロパティをデフォルトプロパティにするわけね。
「詰める」メソッド実装するのもそんなに難しくないでしょ?
631デフォルトの名無しさん:2005/07/17(日) 20:19:45
Win32 API
mgsWaitforMultipleObjects にて、複数のプロセスを指定したいのですが、
引数である、hProcess が 配列というか、 Handle(long?)のポインタ指定になっています。
Countが1つの場合は単純にvbからhProcessをlongとして渡せばよいですが、
複数のハンドルをVBから呼び出しに使う事はできるのでしょうか?
632デフォルトの名無しさん:2005/07/17(日) 20:58:31
>>627
Winamp SDK見たほうが早い希ガス
やるにしてもC/C++の方が相性良いと思う。
VBから直接使えるかは知らん(__stdcallじゃなけりゃそれだけでアウト)
633デフォルトの名無しさん:2005/07/17(日) 22:00:13
Winamp VBで検索すると
一番初めに・・・。
vbAccelerator - Using WinAmp In Plugins From VB
634デフォルトの名無しさん:2005/07/17(日) 22:10:50
>>631
そんな高度な質問はこのスレで回答はえられないよ
635デフォルトの名無しさん:2005/07/17(日) 22:18:59
>>631
その引数をByRef Handles As Longとして
呼ぶときには引数をHandles(0)のように配列の先頭要素を指定するとできる。
636デフォルトの名無しさん:2005/07/17(日) 22:24:21
>>634
残念だったなぁ。
637デフォルトの名無しさん:2005/07/17(日) 23:34:59
VB4で変数のポインタを取得するにはどうすればいいでしょうか?

638デフォルトの名無しさん:2005/07/18(月) 05:45:23
>>637
Declare Function VarPtr Lib "vb40032.dll" (variable As Any) As Long
639637:2005/07/18(月) 06:52:36
>638
ありがとうございます。
解決しました。
640597:2005/07/19(火) 09:46:13
>>598
解答ありがとうございます。でも、その方法は既にためしているのですが、
IMEmodeプロパティのないもの(チェックボックス等)でも、IMEモードがONになってしまって
そのせいでスペースキーを押してもチェックできなくなってしまうのです。
なんでだろう。
641デフォルトの名無しさん:2005/07/19(火) 10:27:14
☆沖川君の憂鬱について☆
http://yasushikondo.no-ip.info/prog/all/non-job/okikawa/index.html
☆沖川君の憂鬱について☆感想文掲示板
http://yasushikondo.no-ip.info/prog/all/non-job/okikawa_bbs/aska.cgi
642デフォルトの名無しさん:2005/07/19(火) 11:10:23
VB6.0でexcelのファイルを開き、そのファイルのsheet1を読み込ませてセルA1が空白
でなければテキストを吐き出させるようにしたいのですが、どうすれば良いのでしょうか?
またできればexcelのファイルは非表示で開きたいと思っています。

excelのVBAだと下記のような感じになるのですが、VB6.0だとどこを修正してやれば良い
のでしょうか?ちなみに下記ではexcelを非表示で開く事はできません

  Dim TEST As String
Workbooks.Open Filename:="C:\test.xls"

TEST = ActiveWorkbook.Path & "\test.txt"
Worksheets("sheet1").Activate

Open TEST For Output As #1

If Range("A1").Value <> "" Then
Print #1, "A1"
End If
643デフォルトの名無しさん:2005/07/19(火) 11:57:27
>>642
Set Application = CreateObject("Excel.Application")
hoge = Application.ExecuteExcel4Macro("'パス\[ブック名.xls]Sheet1'!R1C1")

Excelのブックを開かずSheet1のA1を取得する方法.
但し、注意点として空セルではNull("")ではなく 0 が返ってくる。
コレは仕様でExecuteExcel4Macroでは0と空の区別は出来ないらしい。
なのであとは返ってきた値が0じゃなかったらテキストに書き出せばよし。

でもこの程度ならvbsからやった方が良くないか?
FSO使えばテキスト書き出しも出来るし、セルの値の取得部分は上記をそのまま使える。
644642:2005/07/19(火) 12:11:20
>>643
レス有難うございます。早速試してみます。
他にも幾つか行いたい事があって、フォームを使用してクリック一つで誰でもできる
ようにしたかったんです。それと折角あるvb6を私の周りでは現状では誰も使って
ないので勿体無いので取り敢えず使うかって感じです。

有難うございました
645デフォルトの名無しさん:2005/07/19(火) 15:57:31
VB6で作ったプログラムの対応OSは何ですか。
9x系は95から対応していると思うのですが、NT系はどこからですか。
お願いします。
646デフォルトの名無しさん:2005/07/19(火) 16:05:04
>>645
全て(NT3以降)

あとはあなたが各OSで動くコードを書けば良いだけ。
647デフォルトの名無しさん:2005/07/19(火) 16:11:19
ありがとうございます
648デフォルトの名無しさん:2005/07/19(火) 16:35:24
>>640
そういう場合は、IMEmodeプロパティのあるコントロールの LostForcusイベント でOFFにしてやれば良い。
649デフォルトの名無しさん:2005/07/19(火) 19:32:15
質問です
VB6で(標準コントロールだけで) 作ったEXEを頒布したいのですが、
添付すべきランタイムは何でしょうか。
650デフォルトの名無しさん:2005/07/19(火) 20:30:05
>>649
対象OSによって違う。
651デフォルトの名無しさん:2005/07/19(火) 20:38:14
>>650
それはOSによっては最初から入っている、という意味ですか?
652649:2005/07/19(火) 20:53:26
Msvbvm60.dllとVb6jp.dllだけあれば大丈夫ですか?
653デフォルトの名無しさん:2005/07/19(火) 21:37:13
>>652
Yes
654649:2005/07/19(火) 22:54:50
ありがとうございます
655デフォルトの名無しさん:2005/07/20(水) 07:18:16
>>652
何をもって標準コントロールって言っているのかによる。
VB6.0に付属のコモンダイアログやリストビュー、WinSock等は別のDLLが必要。
656デフォルトの名無しさん:2005/07/20(水) 09:31:05
VB6です。
日付、時間、件名を配列を使ってCSVファイルに保存しています。
このファイルをテキスト上にソートさせて読み込みたいのですが、
ソートの仕方がわかりません…。
教えてください。お願いします。
657デフォルトの名無しさん:2005/07/20(水) 10:11:27
>>656
外部コマンドsort.exeを使用する。
658656:2005/07/20(水) 11:32:43
>>657
ぐぐってみたんですが良く分かりませんでした…
良いサイトまたは別な方法があったらお願いします。
659デフォルトの名無しさん:2005/07/20(水) 12:37:51
>>656
Excelで読み込んでソートすればいいじゃん。

・・・なんてね。
「テキスト上にソートさせて」ってのがよくわからないけど、
CSVをADOで読み込んでSortプロパティを使うといいと思うよ。
660デフォルトの名無しさん:2005/07/20(水) 14:08:47
>>656
テキスト上ってテクストボックスのこと?
キーソートのコードがわからない?
それともソートのコード自体がわからない?
661656:2005/07/20(水) 14:14:50
>>660
>テキスト上ってテクストボックスのこと?
そうです。

>キーソートのコードがわからない?
>それともソートのコード自体がわからない?
初心者なのでコード自体全くわからないです。
662デフォルトの名無しさん:2005/07/20(水) 14:28:37
他の言語ならソート関数が用意されているから
バカでもソートできるのになぁw
663デフォルトの名無しさん:2005/07/20(水) 14:29:23
664656:2005/07/20(水) 15:56:23
本当に申し訳ないのですが>>663のものをサブルーチンとして
用いた後はどうすればよいでしょうか…
お願いしますorz
665デフォルトの名無しさん:2005/07/20(水) 16:27:36
> 初心者なので
ではなく、「調べる気がないので」だったわけか。
ま、あとはウンチク好きの先生達にでも任すかw
666デフォルトの名無しさん:2005/07/20(水) 16:45:57
調べる気がないのではく調べても意味ワカンネ
667デフォルトの名無しさん:2005/07/20(水) 17:02:17
わからないところがあればまたそれを調べればいいのさ。

ある英単語の意味を知りたい→英和辞書で調べる
英和辞書の解説にわからない漢字があった→漢字辞書で調べる
漢字辞書の説明で意味の分からない語句があった→国語辞書で調べる
668デフォルトの名無しさん:2005/07/20(水) 17:10:54
>>664
丸投げする気なら、学生バイトでも雇えばいい。
669デフォルトの名無しさん:2005/07/20(水) 21:16:07
>>656
俺はいつもはろくに調べもせず甘ちゃんな質問をする奴を煽ってるけれども、
君の質問に関しては多分煽るレスをしている奴は単に答えられないだけだと思うから気にすることない。

手順としては、

(1) レコード( = 一件のデータ = CSVの行)をあらわす構造体(またはクラス)を定義して、
(2) そのレコードのコレクションのクラスを作り、(3) そのコレクションのクラスに
レコードの各フィールドでソートするメソッド(関数)を書く。

こんな流れだと思う。
VBには日付や文字列の大小比較する関数があったはずだから、これらを利用して
クイックソートをするメソッドを書くのはそんなに難しくないと思う。
まあクイックソードのアルゴリズムを解説しているサイトを読んで半日考えれば
自分で書けるよ。

クラスがわからないなら無理にコレクションのクラスを作らずに、モジュールレベルで
レコードの構造体の配列とそれをソートする関数を書けばいい。

構造体(Vbだとユーザー定義型だっけか)がわからないとさすがにちょっと厳しい。
670デフォルトの名無しさん:2005/07/20(水) 21:39:15
俺ならコレクションのクラスにソートを持たせずに
C言語のqsort見たいに汎用のソート関数を作るけどな。
関数の引数に比較関数を渡してソート。

といっても、VBは関数を引数にして呼び出せないから、
正確には、比較関数オブジェクトを渡すことになるけど。

難点はクラスモジュールのファイルがいっぱいになることか。
671デフォルトの名無しさん:2005/07/20(水) 21:57:24
未だにクラスモジュールが使いこなせない・・・
覚えると便利なのは分かるんだが・・・
672デフォルトの名無しさん:2005/07/20(水) 22:25:13
>>670
構造体の配列をソートするんだよ。単なる数値の配列のソートじゃないよ。
汎用化なんてできるか?多態もつかえないVBで。

仮に多態使えてもそんな使いやすい関数がかけるとは思えん。
だったら汎用化の意味なんてないでしょ。
673デフォルトの名無しさん:2005/07/20(水) 22:37:40
>>671
他の言語をやってみるといい。Javaとか。
VBプログラムの腕も上がるぞ。
674デフォルトの名無しさん:2005/07/20(水) 22:37:40
テキストファイルをデーターベースとして接続して、
SQL文でソートするってやり方もある。
ttp://support.microsoft.com/default.aspx?scid=kb;ja;408179
Set mcn = New ADODB.Connection
mcn.ConnectionString = _
"Provider=MSDASQL.1;" & _
"Extended Properties=""" & _
"DRIVER=" & _
"{Microsoft Text Driver (*.txt; *.csv)};" & _
"DBQ=" & App.path & "\" & """"

mcn.Open
Set mrs = New ADODB.Recordset
mrs.CursorType = adOpenDynamic

SQL_STR = "Select * From " & "sort_zyunbi.csv" & " ORDER BY field28 ASC,field35 ASC,field02 ASC"

mrs.Open SQL_STR, mcn

Do Until mrs.EOF
FilOb2.writeline (mrs.Fields(0) & "," & mrs.Fields(1) & "," & mrs.Fields(2) _
& "," & mrs.Fields(3) & "," & mrs.Fields(4) & "," & mrs.Fields(5)

mrs.MoveNext
Loop
675656:2005/07/20(水) 23:32:09
答えてくれた皆さんありがとうございます。
明日試してみたいと思います。
676デフォルトの名無しさん:2005/07/21(木) 03:59:11
>>672
データの並び替えは難しいけど、並び替え済みのインデックスを作るというのなら簡単だと思う。
対象はデータがクラスのやつに限定されるけど。構造体はObject(IDispatch)のインターフェースを
持たないから駄目。

関数
Function Sort( Input As Collection , CompareFunc As ICompare ) As Collection

ICompareインターフェース
比較関数作る時は Implements ICompare なんてやる
Public Function Compare( Object1 As Object , Object2 As Object ) As Long

こんなやつ。
677デフォルトの名無しさん:2005/07/21(木) 04:14:08
(´-`).。oO(あー、わざわざコピー作ってやらなくてもいいか。まあ、どっちでもいいや)
678デフォルトの名無しさん:2005/07/21(木) 08:35:38
MSFlexGridでやればソートは勝手にやってくれる。
679デフォルトの名無しさん:2005/07/21(木) 09:48:46
おいらは、ソートはリストボックスにお願いしてる。
3万レコード超えそうな作業にはファイル作ってsortを呼び出してるかな。
680656:2005/07/21(木) 13:20:30
誰か、お馬鹿な自分を助けてください…
681デフォルトの名無しさん:2005/07/21(木) 13:33:26
>>680
これだけ回答もらっていて、何が問題なんだ?
試して何がだめだったかとか進めないと会話にならんぞ。
682デフォルトの名無しさん:2005/07/21(木) 13:48:56
>>680
あきらめてExcel使ったら?
Excelのどこが不満なの?
683デフォルトの名無しさん:2005/07/21(木) 15:59:09
VBの本でデジタルピアノを作るのが載っていて作ってみました。それで、自分が演奏したのを録音する機能を付けたいんですけど、できるでしょうか? 教えてくださいませ。
684デフォルトの名無しさん:2005/07/21(木) 16:23:36
>>683
みんなエスパーでもマギーでもないんだから、どんな本読んで何つかってどのようにプログラムしたか。
そういう情報を出さないと誰もわかりませんよ。
685デフォルトの名無しさん:2005/07/21(木) 16:57:16
>>684
すいません、初心者なもので^^;
使った本は「はじめてのvisual basic 6」という本です。
 http://www.gihyo.co.jp/books/syoseki-contents.php/4-7741-0733-6
API関数というものを使って作りました。 MIDI音源を使って音を鳴らすようにしてます。 

686デフォルトの名無しさん:2005/07/21(木) 17:22:12
とりあえず、結果をMIDIファイルに保存するのはとても高度だと思うよ。
Cマガジンの2002/12とかにCだけどサンプルはある。

VBっぽく作るのであれば、イベントの発生順、タイミング自体をテキストファイルに書き込んで、それをなぞる方法かな?
今たぶん鍵盤とかをボタンで配置して、それぞれで音色をMIDIで再生してると思うけど。
そのボタンをおされた時分秒(それ以下の単位まで)をマクロのように記録して、それを再生するみたいに。
687デフォルトの名無しさん:2005/07/21(木) 17:29:05
>>686
ありがとうございます。m(_ _)m 調べてみます。 
688デフォルトの名無しさん:2005/07/21(木) 20:13:05
>>682
VBの勉強中なんじゃないの
689デフォルトの名無しさん:2005/07/21(木) 22:12:31
>>671
MSDNライブラリのチュートリアルを読んで実際に試すだけで結構違うぞよ
Visual Basicの使用方法>プログラミング ガイド>Visual Basicを使ってできること>オブジェクト
あたりとか。
690デフォルトの名無しさん:2005/07/22(金) 14:03:47
Dim hoge As Collection
Set hoge = New Collection
hoge.Add "foo", "aaa"
hoge.Add "bar", "bbb"
hoge.Add "baz", "ccc"

という感じでコレクションを作った場合。
hoge(2)、hoge("bbb")で要素の"bar"を返せますが、
逆に指定したインデックス位置の添字を返すにはどうすれば良いのでしょうか?
つまり2を指定して"bbb"を返したいのですが。
691デフォルトの名無しさん:2005/07/22(金) 14:10:00
Dictionary?ly?オブジェクトのKeysあたりで
取得できそうな希ガス
692690:2005/07/22(金) 14:29:02
>>691
DictionaryオブジェクトのKeysは
「Dictionary オブジェクト内のすべての既存キーを格納した配列を返します。」
とのことで、目的のものとは違うようです。
他のメソッドも調べてみましたが目的を達成できそうなものはありませんでした。
というか、Collectionを使う方法でお願いします。
693デフォルトの名無しさん:2005/07/22(金) 17:42:11
画像の一部をイメージコントロールに表示するにはどうすれば良いのでしょうか?
具体的に言うと500*500の画像があったとして、
その画像のY100,X200*Y200,X300の位置を
指定したイメージコントロールを表示するような方法です。
図で書くと  _
□□□□□ ↑
□□■□□
□□□□□ 500
□□□□□
□□□□□ ↓
|← 500 →|  ̄
の■部分が表示したい位置です。
「〜で出来るかも」とかではなく
具体的な方法の紹介をお願いします。
694デフォルトの名無しさん:2005/07/22(金) 17:53:07
APIで”出来る”

コントロールを入れ子にして、全体表示のPictureから部分を窓のようにして切り出したように見せることも”出来る”

695デフォルトの名無しさん:2005/07/22(金) 17:56:21
なんてレベルの低い回答。。。
まあ、質問もアレだけど
696デフォルトの名無しさん:2005/07/22(金) 18:03:40
>>695
いや、ナチュラルになんとなくムカつく質問の仕方だし。w
つうかさ、ぐーぐる様にAPI、画像、切り出し、でお伺いを立てろ。
697デフォルトの名無しさん:2005/07/22(金) 18:09:51
ググらず質問する奴もアレだが、
回答はヘボいのに文句は一人前な疑似回答者もアレw
698デフォルトの名無しさん:2005/07/22(金) 18:22:35
まあここで回答してるのは、VBしか使えない"マもどき"がほとんどだからね。
"出来るかも"や"出来そうな気がする"とか、"APIで出来る"とかの回答しかできないっしょ。
他言語のスレじゃ上級者がサッとコードで回答したりするけど、
ここじゃ丸投げするなとか言って追い返すのが精一杯。
そして漏れはそんな奴らをニヤニヤ見ながら、偶にちょっかい出したりすると。
699デフォルトの名無しさん:2005/07/22(金) 18:34:26
そのちょっかいがかなり的はずれで笑える。
700デフォルトの名無しさん:2005/07/22(金) 18:57:04
おまえら餅つけ
負け惜しみなんて言っても始まらないぞ
701690:2005/07/22(金) 19:47:08
>>693
ImageコントロールではなくPictureBoxコントロールなら
PaintPictureで出来ると思いますよ。
.PaintPicture 元画像,0,0,100,100,200,100,100,100,vbSrcCopy
って感じで。どうしてもImageコントロールがいいってなら無視してくれ。


>>690もよろしくです。
702あほ:2005/07/22(金) 20:57:01
VB6.0で時間になったらmp3ファイルを開くというプログラムを
作っているんですがmp3ファイルの開き方がわかりません。
ShellExecuteというのがキーワードっぽいんですが記述の仕方も
わからないののでいろいろと教えてください。
703デフォルトの名無しさん:2005/07/22(金) 21:44:01
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long _
) As Long
Const SW_SHOW = 5
Const SW_SHOWNORMAL = 1



ShellExecute(vbNull, "open", "C:\hoge.mp3", vbNull, vbNull, SW_SHOW)
704デフォルトの名無しさん:2005/07/22(金) 21:49:49
↑訂正
Ret = ShellExecute(...
705デフォルトの名無しさん:2005/07/22(金) 22:37:58
>>690
ForEachで列挙して調べるしかないんでないの?
706デフォルトの名無しさん:2005/07/22(金) 22:55:26
知らないなら黙ってればいいのに


と、黙ってられずに言ってしまう漏れ。
707デフォルトの名無しさん:2005/07/23(土) 14:42:50
すみませんチェックボックスの使い方で教えていただきたいことがあるのですが
現在チェックボックスにチェックを入れるとメッセージボックス1の内容を
メッセージボックス2、3に適応させるようにしてるのですが
一度チェックを入れてからチェックをはずしたときにはその適応をはずす
(メッセージボックス2、3が何も入力されていない状態)ようにしたいのですが
コードがわかりません(/_;)
どなたか教えていただけませんでしょうか よろしくお願いします<(_ _)>
708707:2005/07/23(土) 14:43:47
バージョン書き忘れました
バージョンは6.0です。
よろしくお願いします<(_ _)>
709デフォルトの名無しさん:2005/07/23(土) 15:03:40
> メッセージボックス1
って何よ?
テキストボックス?ラベル?
普通メッセージボックスと言ったら
ポップアップダイアログを表示させるMsgBox関数のことなんだが。
710707:2005/07/23(土) 16:11:31
>>709
言われたとおりです><
テキストボックスでしたごめんなさい <(_ _)>
711デフォルトの名無しさん:2005/07/23(土) 16:35:08
.text = ""
でいいじゃん
712707:2005/07/23(土) 18:25:26
チェックボックスの使い方を間違ってたみたいでどうしてもうまくいかないと今理解しました^^;
チェックされてるかされてないかをIf文で分岐させて
チェックされてるなら
Text2.Text = Text1.Text
Text3.Text = Text1.Text
チェックされていないなら
Text2.Text = ""
Text3.Text = ""
にすればいいんですね^^;

チェックされてるかされてないかの判別のコードの書き方勉強してきます^^;
713デフォルトの名無しさん:2005/07/23(土) 18:39:55
常時入力モードのspreadにコンボボックスの列を設定してます
使用中、そのコンボボックスの列にカーソルがあるときに、
矢印キーの下↓や上↑を押して、上下の行に移動させたいのですが、
コンボ内のアイテムが上下するのみで、keydownイベントも動きません

矢印キーで上下の行移動を実現するには、どうしたらいいのでしょうか
714デフォルトの名無しさん:2005/07/23(土) 20:03:36
>>713
無理
715デフォルトの名無しさん:2005/07/23(土) 22:00:40
Private Sub vaSpread1_KeyDown(KeyCode As Integer, Shift As Integer)
  Dim lngRow As Long
  With vaSpread1
    Select Case .ActiveCol
    Case コンボボックスの列番号
      Select Case KeyCode
      Case vbKeyUp
        lngRow = .ActiveRow - 1
        If lngRow < 1 Then
          lngRow = 1
        End If
      Case vbKeyDown
        lngRow = .ActiveRow + 1
        If lngRow > .MaxRows Then
          lngRow = .MaxRows
        End If
      End Select
      .Row = lngRow
      .Col = .ActiveCol
      .Action = ActionActiveCell
    End Select
  End With
End Sub
716デフォルトの名無しさん:2005/07/24(日) 10:09:09

変数(配列)名を変数の値で指定する方法を教えてください。
コントロール名を
dim i as long
i = 1
controls("text" & i).text = "hoge"
といった感じで指定できるように、
VB6でも変数名を文字列や変数の値を使って指定できるということを
以前どこかで聞いたのですが、やり方がわかりません。
実際には一次元配列を連番で複数使いたいのです。例としてはこんなかんじで
dim hoge1(10) as string, hoge2(20) as string
dim i as long
i = 1
???("hoge" & i)(5) = "hoge"
i = 2
???("hoge" & i)(7) = "hogehoge"
処理の都合上、二次元配列や構造体配列では代用できない部分があるので。
ご存じの方は、どうかご教示願います。
717デフォルトの名無しさん:2005/07/24(日) 10:21:57
そもそも考え方を間違っているような。
変数の場合は基本的に名前で呼べることはないはず。

二次元配列や構造体で代用できないなんてことはありえんし。
718デフォルトの名無しさん:2005/07/24(日) 11:04:49
>717
それじゃ質問変えます。
以下の方法を二次元配列、構造体配列でやる方法を教えてください。

dim hoge1() as string, hoge2() as string, hoge3() as string
dim i as long
i = ?
[hoge&i] = split("a,b,c,d,e", ",")

i = ?
dim buf() as string
buf = filter([hoge&i], "huga")

dim temp as string, j as long
i = ?
j = ?
ReDim Preserve [hoge&i](2)
ReDim Preserve [hoge&j](3)
temp = join([hoge&i], "_") & "_" & join([hoge&j], "_")

※変数i,jの値は可変です。数が多いのでSelect Caseも実用出来ません。
※ループでの処理、一次元配列に書き出し後の処理は
  要素数が多い場合非常に遅いので不可です。
719デフォルトの名無しさん:2005/07/24(日) 11:16:49
>>717
責任もって答えてやれよ
720デフォルトの名無しさん:2005/07/24(日) 12:06:48
>>718
悪いけど何やりたいか全く意味不明。

処理の内容を他人に伝達できないのは、表現能力の問題も他人の立場に立つ
想像力の欠如ももちろんあるが、それ以上に伝えようとしている本人が
その内容について把握・分析ができていないからと思われる。

そしてそのことは、プログラムが書けないことと恐らく無関係ではない。
721716,718:2005/07/24(日) 12:23:55
>720
実際の処理をそのまま書いたのではなく、
処理の例として書いたので、意味不明で当然です。
これで何がやりたいかわかる方が変ですから。

やりたいことを文で書くと、
1 split関数で空配列への値の代入
2 フィルター関数による検索
3 ReDim Preserveによる内容を保持したままの要素数変更
4 join関数による配列内容の結合

を、二次元配列でいう第二要素番号にあたるものを変数で指定し
これらを二次元配列や構造体配列に対して行う方法を教えていただきたいです。
これらは基本的に一次元配列、又は配列の最終要素数にしか出来ないことですが
二次元配列や構造体で代用できないなんてことはあり得ないとのことなので。
構造体配列に対しては処理自体は掛けられますが、変数で位置を指定する方法がわかりません。
722デフォルトの名無しさん:2005/07/24(日) 13:24:16
まだよく理解できないけどこういうことかな?
たぶんVB5では正しく動かない。

'====================
' Class1
'====================
Private mRows(6) As Variant

Private Sub Class_Initialize()
Dim Row() As String
Dim i As Integer

For i = 0 To UBound(mRows)
Row = Split("Sun Mon Tue Wed Thu Fri Sat", " ")
mRows(i) = Row
Next
End Sub

Public Property Let Row(Idx As Integer, StrArray() As String)
mRows(Idx) = StrArray
End Property

Public Property Get Row(Idx As Integer) As String()
Row = mRows(Idx)
End Property
723デフォルトの名無しさん:2005/07/24(日) 13:25:26
'====================
' Form1
'====================
Private mHoge As New Class1

Private Sub Form_Load()
Dim i As Integer
Dim StrArray() As String

For i = 0 To 6
StrArray = mHoge.Row(i)
ReDim Preserve StrArray(i)
mHoge.Row(i) = StrArray

Dim str As String
str = Join(mHoge.Row(i))
Debug.Print (str)
Next
End Sub
724716,718:2005/07/24(日) 16:08:15
>722
違います。
というかループまわせばどうにでもなるけど、
>718でも書いたようにパフォーマンスが久しく劣るようでは代用とは言えませんので。

例えば以下のようにhogeという二次元配列のようなものがあったとして、
  0   1   2   3   4   5   6
7 Sun Mon Tue Wed Thu Fri Sat
8 日  月  火  水  木  金  土
9
joinなら、hoge(7)の要素数を3まで削り、join(hoge(7))で"Sun Mon Tue Wed"
hoge(8)の要素数を5まで削り、join(hoge(8))で"日 月 火 水 木 金"を返すような方法、
filterなら、filter(hoge(7), "n")で"Sun, Mon"という配列を、
filter(hoge(7), "n")で空配列を返す方法、
splitなら、hoge(9) = solip("10,20,30,40,50,60,70", ",")で
  0   1   2   3   4   5   6
7 Sun Mon Tue Wed Thu Fri Sat
8 日  月  火  水  木  金  土
9 10  20  30  40  50  60  70
というように値を代入する方法です。

これらは一次元配列には簡単に出来る物ですが、同じことを二次元配列や構造体配列にやる方法がわかりません。
一応仕様上は二次元配列には出来ないことになってると思うのですが、
「二次元配列や構造体で代用できないなんてことはあり得ない」ならこれらの処理も可能なはずですが。

あくまでも「代用」なので、処理時間においては数十%程度の増加は許容しますが、
一次元配列に対してjoin、filter、splitを使って処理した場合に比べ、ループを回して処理した場合では
3〜5倍の処理時間が掛かるので、ループ処理ではとても代用なんて言えた代物ではありません。
因みに実際は7,8,9に当たる要素数は約4000、0,1,2,3,4,5,6に当たる要素数は数万〜数百万です。
それと後出しになってしまいましたがこちらはVB6SP5です。
725722:2005/07/24(日) 16:17:56
>>722で書いたことはあなたの「やりたいこと」と違わないと思うよ。

ちゃんと分析して意味を把握してる?
「実現したい処理」と「>>722のコード」の両方に関して。

要は『「文字列配列」の配列』が欲しいんでしょ、簡単に言えば。
そういうデータ構造をVBで実現するヒントに>>722はなっているよ。
726デフォルトの名無しさん:2005/07/24(日) 18:39:57
つうか1つ言っていいかな?
そこまで性能求める文字解析、ループならばVBは不向きだよ。
727デフォルトの名無しさん:2005/07/24(日) 19:21:16
>>726
ろくにわかってない癖に偉そうにw
「文字解析、ループならばVBは不向き」って意味がわからないし、
だいいち今のスレの話題と話がかみ合ってない。

確かにメモリ操作(ポインタ)が使えないVBではループで文字列を連結していくような処理を書くと、
同じ処理をCで書いたときよりパフォーマンスが大幅に落ちるわけだが、
その理由がわかって書いているとは思えない。
728デフォルトの名無しさん:2005/07/24(日) 19:36:10
>>727
御講釈ありがとう。
そういうこと書いたつもりなんだけど、思えないんじゃ言葉足りずだったね。

元質問者の場合、そこまで性能を求めるならば、そもそも高級言語を使うほうが間違いと思うわけで。
C使うにしてもMFCとか使わないで、普通にChar配列等でメモリーを直接的に見ていく感じで。

データ構造で詰められる性能と、そもそもの言語特性で詰められない部分で気になったので。
729デフォルトの名無しさん:2005/07/24(日) 19:52:37
なんか微妙に険悪な流れになっているが >>718 よ、以下の構造体を使う方法じゃダメかい?

' (General) コード

Public Type THOGE
St() As String
End Type

' モジュール コード

' > dim hoge1() as string, hoge2() as string, hoge3() as string
Dim hoge(1 To 3) As THOGE
' もしくは
' Dim hoge() As THOGE
' ReDim hoge(1 To 3)

' > i = ?
' > [hoge&i] = split("a,b,c,d,e", ",")
hoge(i).St() = Split("a,b,c,d,e", ",")

' > i = ?
' > buf = filter([hoge&i], "huga")
buf = Filter(hoge(i).St(), "huga")

' > i = ?
' > j = ?
' > ReDim Preserve [hoge&i](2)
' > ReDim Preserve [hoge&j](3)
' > temp = join([hoge&i], "_") & "_" & join([hoge&j], "_")
ReDim Preserve hoge(i).St(2)
ReDim Preserve hoge(j).St(3)
temp = Join(hoge(i).St(), "_") & "_" & Join(hoge(j).St(), "_")
730デフォルトの名無しさん:2005/07/24(日) 19:55:54
構造体じゃ個別の要素にアクセスしたいとき綺麗にかけないでしょ。
そんなんなら最初から裸のVariant型の配列を使うのと何も変わらないじゃん。
731730:2005/07/24(日) 19:59:14
あ、いや俺の勘違いか。
そんなことはないね。
732デフォルトの名無しさん:2005/07/24(日) 23:52:43
Exchange Serverにアクセスして、メールの送信時刻を
ピックアップするようなことはどのようにすれば
実現可能でしょうか。
733デフォルトの名無しさん:2005/07/24(日) 23:58:32
>>732
MAPIだっけ?
734デフォルトの名無しさん:2005/07/25(月) 00:52:27
>>733
どうもです。ちなみにこれってOutlookのローカルの送信済みアイテムではなく、
メールサーバ上の送信時刻も拾えますか?
735デフォルトの名無しさん:2005/07/25(月) 01:04:18
ExchangeServerにはサーバのメール送信時刻なんてのがあるのか
736デフォルトの名無しさん:2005/07/25(月) 07:19:43
>>735
あるんじゃねーの?なきゃメールサーバの管理者が
困るだろ。
737デフォルトの名無しさん:2005/07/25(月) 07:34:12
>>736
拾いかた教えてください。
738デフォルトの名無しさん:2005/07/25(月) 10:26:04
VB6.0でvs-view3.0を使用して印刷プログラムを作成しています。
印刷の表示プログラムの作成はスムーズにいったのですが、ページ枚数が大変多く
1000枚を超えています。すると1000枚目以降から表示がされなくなってし
まったのですが原因がよくわかりません。もしご存知の方がいましたら、是非教え
てください。
739デフォルトの名無しさん:2005/07/25(月) 11:07:12
>738
まずテンキーNum Lock  
メモ帳で
Altを押しながらテンキーで220(Alt離す)
同様に
Altを押しながらテンキーで219(Alt離す)
Altを押しながらテンキーで189(Alt離す)
Altを押しながらテンキーで33431(Alt離す)
740デフォルトの名無しさん:2005/07/25(月) 20:20:16
>>738
リソース不足
741デフォルトの名無しさん:2005/07/25(月) 23:11:58
>>739
めんどくさいから、さっさとオチ教えて。
742デフォルトの名無しさん:2005/07/26(火) 07:05:38
Microsoftが提唱するVB6のコーディング規約はどこにあるでしょうか。
743デフォルトの名無しさん:2005/07/26(火) 07:33:39
>>742
MSDN ライブラリ Visual Studio 6.0
>Visual Basic ドキュメント
 >Visual Basic の使用方法
  >プログラミングガイド
   >Visual Basic のコーディング規則
744デフォルトの名無しさん:2005/07/26(火) 09:41:49
>>743
ありがとうございます。
745デフォルトの名無しさん:2005/07/26(火) 11:15:27
配列に値を入れる方法っていくつかありますよね。

@ Dim Temp As Variant
   Temp = Array("a", "b", "c")

A Dim Temp() As String
   Temp = Split("a b c")

B Dim Temp() As String, Buf As Variant, i As Long
   Buf = Array("a", "b", "c")
   ReDim Temp(UBound(Buf))
   For i = 0 To UBound(Buf)
    Temp(i) = Buf(i)
   Next i
   (Variant型配列をString型配列に書き出し)

で、これらの値を入れる処理の速度を比べると「A > @ >>>>>>>>>> B」なんですが、
そのあとの処理では変数の型にVariantを使ってる@が遅く
「A = B >>> @」となります。それならどちらも速いAを使えばいいかとも思うのですが
Splitでの区切り文字には値に絶対に使われていないものを指定しなくてはならないので
汎用的ではありません。値には記号文字はもちろんのこと
改行やタブが含まれる場合もあるのでvbCrLfやvbTabも汎用的な区切りとして使えませんし、
通常の文字以外を区切りに指定すると極端に引数が長くなります。

今は配列値のセットは1回又は少数回で、そのあとの処理が多い場合はB
値を何度もセットする場合は@、Aが使える条件ならAと使い分けてますが、
VB6で任意の型の空配列に1引数単位で一括して値を入れる方法、又は
Variant型配列を任意の型に変換する方法をご存じの方が居ましたら教えてください。
もちろんこのために上記B以上の処理が必要になるようでは本末転倒ですが。
746デフォルトの名無しさん:2005/07/26(火) 12:41:30
>>745
なにこの文章。
中学生でももっと読む人間の立場にたった、読みやすいまともな文章書くよ。
意味不明にも程があるでしょ。

まあこういう人はこうやって忠告しても、「荒らしのイチャモン」という風に
やり過ごすんだろうけど。
747デフォルトの名無しさん:2005/07/26(火) 12:50:44
>>745
条件が曖昧。
通常テキストファイルには使われないような制御コードを使えば?
748デフォルトの名無しさん:2005/07/26(火) 13:57:45
>>745
速さを望むならそれ以上は無理でしょう。
その使い分けが最善だと思います。
749デフォルトの名無しさん:2005/07/26(火) 16:48:14
InputManPro6.0JのVB6での使用方法の質問はここでよかですか?
小数点以下2桁まで入力できるように設定したimNumberコントロールを使用し
ています。しかし実行すると1桁目を入力するとカーソルが小数点の位置まで
戻ってしまい、連続して2桁目まで入力することができずに困っています。
何か解決策はありますでしょうか?
750デフォルトの名無しさん:2005/07/26(火) 18:16:54
>>749
まずはユーザーサポートへどうぞ。
751デフォルトの名無しさん:2005/07/26(火) 20:08:24
VB6.0にて
txtファイルなどの最終更新日を書き換えるプログラムを組むことは可能ですか?
ファイルの最終更新日だけをさくっと書き換え可能なプログラムが欲しくて
自分で作成してみようと思っているのですが・・・
752デフォルトの名無しさん:2005/07/26(火) 20:25:25
>>751
API使わないとダメだったような。
かなり面倒。
753751:2005/07/26(火) 20:48:12
>>752
かなりめんどくさいのですか^^;

VBはじめたばかりの自分には敷居が高そうだな・・・
色々調べながら格闘してみます><
754デフォルトの名無しさん:2005/07/26(火) 21:35:18
>>753
ググッったら一発でサンプル見つかったけど。。
10秒もかからなかったよマジで。
http://www31.ocn.ne.jp/~heropa/vbdefts.htm

タイムスタンプを書き換える部分のソース見てみたけど、
本当にかなり複雑だねこりゃ。
755デフォルトの名無しさん:2005/07/26(火) 21:37:34
>>753
ググッったら一発でサンプル見つかったけど。。
10秒もかからなかったよマジで。
http://www31.ocn.ne.jp/~heropa/vbdefts.htm

タイムスタンプを書き換える部分のソース見てみたけど、
本当にかなり複雑だねこりゃ。
756デフォルトの名無しさん:2005/07/26(火) 21:38:49
>>753
ググッったら一発でサンプル見つかったけど。。
10秒もかからなかったよマジで。
http://www31.ocn.ne.jp/~heropa/vbdefts.htm

タイムスタンプを書き換える部分のソース見てみたけど、
本当にかなり複雑だねこりゃ。
757デフォルトの名無しさん:2005/07/26(火) 21:40:29
>>753
ググッったら一発でサンプル見つかったけど。。
10秒もかからなかったよマジで。
http://www31.ocn.ne.jp/~heropa/vbdefts.htm

タイムスタンプを書き換える部分のソース見てみたけど、
本当にかなり複雑だねこりゃ。
758デフォルトの名無しさん:2005/07/26(火) 21:41:57
>>753
ググッったら一発でサンプル見つかったけど。。
10秒もかからなかったよマジで。
http://www31.ocn.ne.jp/~heropa/vbdefts.htm

タイムスタンプを書き換える部分のソース見てみたけど、
本当にかなり複雑だねこりゃ。
759デフォルトの名無しさん:2005/07/26(火) 21:46:00
>>753
ググッったら一発でサンプル見つかったけど。。
10秒もかからなかったよマジで。
http://www31.ocn.ne.jp/~heropa/vbdefts.htm

タイムスタンプを書き換える部分のソース見てみたけど、
本当にかなり複雑だねこりゃ。
760デフォルトの名無しさん:2005/07/26(火) 21:53:31
イヤミったらしい奴だ
761デフォルトの名無しさん:2005/07/26(火) 23:09:37
連投申し訳ない。。なんか厨房のやる嫌味みたいだけどそんな意図はないよ。
サーバが調子わるかったみたいだね。
762デフォルトの名無しさん:2005/07/27(水) 09:49:02
昨夜はPC8鯖が不調で、書き込み遅延が約10分。
763デフォルトの名無しさん:2005/07/27(水) 10:26:23
簡単なのがあった。でも、C#やVB.NETだと1行で出来るのか。
ttp://jeanne.wankuma.com/tips/file/09-settimestamp.html
764デフォルトの名無しさん:2005/07/27(水) 16:40:44
コンボコントロールの全アイテムを、
速く切り替える方法はないでしょうか?

アイテムは全部で5000件くらい。
しかし別のコントロールでアイテム一覧を切り替えたいのです。

具体的には、5000件のうち、Text1.textプロパティの値(文字列)を含むコンボアイテムのみにしたいんですが…。

.Clearの後、5000件をループしつつInstrで判定、
合致したら.AddItem などとしていたら日が暮れてしまいます…
765デフォルトの名無しさん:2005/07/27(水) 17:29:34
>>764
とりあえずInstr関数なんか使ってないでFilter関数使え
766デフォルトの名無しさん:2005/07/27(水) 17:54:06
何がやりたいのか読み取れない俺がいる。
767デフォルトの名無しさん:2005/07/27(水) 18:23:30
元データが5000件あって、なんかの条件で切り替えたいってことか?
それともコンボに5000件セットするの?

前者ならそんなに時間かからないべ。何件だかしらんが。

後者なら、そんな件数突っ込むのがいけない。
選ぶ側の身になれ。
768764:2005/07/27(水) 18:43:00
ありがとうございます。
5000件の固まりA, B, C…の入れ替えではなく、
5000件中の、いわゆる絞り込み処理をやりたかったのです。
表現が悪くてすみませんでした。
769デフォルトの名無しさん:2005/07/27(水) 18:47:10
>>768
Addするときに Enabled は止めてある?
770デフォルトの名無しさん:2005/07/27(水) 18:58:27
5000件程度でそんなに時間かかる?
コンボじゃ再描画はないと思うからまあそこは気にしないとして。

Addが遅いのか、文字検索が遅いのかぐらい切り分けてみれば?
(Addをコメントアウトすれば文字検索のみの時間がわかるから)
771デフォルトの名無しさん:2005/07/28(木) 02:19:05
通常使うプリンタを変更したいのですが
上手く出来ないのでおしえてください

Set objPrinter = CreateObject("WScript.Network")
objPrinter.SetDefaultPrinter "プリンタ名称"
と処理を行うと通常使うプリンタが変更されるのですが
VBの暗黙オブジェクトであるPrinterは変更前のままとなっています
変更を反映させてやるにはどうすればよいのでしょうか?
ご教授願います
772デフォルトの名無しさん:2005/07/28(木) 11:03:31
VB6で変数hogeの値が、A,C,F,J,O,Uのどれかの場合に実行という条件分岐を作る場合、

If hoge = "A" Or hoge = "C" Or hoge = "F" Or hoge = "J" Or hoge = "O" Or hoge = "U" Then 処理

Select Case hoge
 Case "A", "C", F"", "J", "O", "U"
  処理
End Select

等の方法がありますが、IFでそのまま等価式の論理和を条件にすると
1行が極端に長くなるし、書くのも面倒。
逆にSelect Caseだと分岐先は1つなのに4行のコードが必要になってしまう。
行継続や:は知ってますがIfやSelect Caseではあまり使いたくないし。

こういう場合Ifで(正規表現を使わず)もっと手軽に書く方法はありませんか?
因みに実際の条件は上記例のように1文字ではないのでLikeは使えません。

IfやSelect Caseで処理できない訳ではないし、正規表現の使い方も知ってるので
それほど困ってるわけではありませんが、何か良い方法があるなら知りたいのでよろしくお願いします。
773デフォルトの名無しさん:2005/07/28(木) 11:07:45
言語仕様レベルでは無いと思う。
コードメンテナンス性の向上を考えるならば、その条件式だけで関数化して隠蔽する。
その中はIFでやろうが、Selectでやろうが隠蔽してあるから、呼び出し側は綺麗に見える。

774デフォルトの名無しさん:2005/07/28(木) 12:23:11
>>771
>因みに実際の条件は上記例のように1文字ではないのでLikeは使えません。
使えるよ要確認。
ちなみに正規表現を避ける理由ってなにかあるんですか?
775デフォルトの名無しさん:2005/07/28(木) 12:34:23

> このスレって回答できそうもない質問がくると
> 理由聞き出して罵倒する方向に持っていこうとする可哀相な奴が多いよな。
> 知ってるなら答える、知らないならスルーでいいのに
> 初心者ほど自分に答える義務があるとでも勘違いしているかのように全ての質問に喰っていく。
776デフォルトの名無しさん:2005/07/28(木) 12:39:50
幼稚なアホの子をいちいち相手すんなよ、頼むから。。
777デフォルトの名無しさん:2005/07/28(木) 12:48:13
ゴメン...
778デフォルトの名無しさん:2005/07/28(木) 13:44:33
byte型の連結で一番楽な方法は?(A=B&C)
やっぱ回したりString型に一度変換しなきゃダメなんですかねぇ・・・
779デフォルトの名無しさん:2005/07/28(木) 14:02:32
>>778
バイトを文字として扱ってるか、1バイト数値として扱ってるかで違うし。
連結ってことは文字として認識ですよね。
Chrで文字変換して連結でしょうね、やっぱり。
780デフォルトの名無しさん:2005/07/28(木) 14:07:10
そーですかorz
すんごい過去ログも見てみたけど、
1.chrかcstrで変換して結合
2.配列ループで回してケツに結合。
しか無かったですからねぇ。CopyMemoryも複写だし。残念。。。
thxえにうえい ノシ
781デフォルトの名無しさん:2005/07/28(木) 14:18:01
もしそのByte型が配列なら、
StrConv(配列名, vbUnicode)で行けるんだけども…
各個独立した変数なら南無。
782デフォルトの名無しさん:2005/07/28(木) 14:27:10
ん?全然って訳じゃないんだけど、StrConvは関係ないんじゃ?
>>778 混乱招くから簡単なソース書いてよ
783デフォルトの名無しさん:2005/07/28(木) 14:50:37
WinXP & VB6.0 & Winsockコントロール 使って簡易HTTPサーバーを作ろうとしてます。
DataArrival()イベントで受信データを受けるのはいいんですが、
データが全部揃ったかどうか?ってどうやって判断したらいいのでしょうか・・・
HTTP/1.0です。
784778:2005/07/28(木) 14:53:45
簡単なの作ってみますた

Private Sub Command1_Click()
Dim tgA() As Byte
Dim tgB() As Byte
Dim tgC() As Byte

tgA = ChrB(&HB1) & ChrB(&HB2)
tgB = ChrB(&HB3) & ChrB(&HB4)

'ここでtgC()にA+Bでコピーしたいつーかまんこ

Debug.Print StrConv(tgC, vbUnicode)'一応StrConv使ってみた

End Sub

こんな感じで・・・
785デフォルトの名無しさん:2005/07/28(木) 15:04:57
tgC = CStr(tgA) & CStr(tgB)

じゃダメ?"アイウエ"って帰ってくるけど・・。
あ、CStrは書いてるか・・・・。byte型のまま操作?
786783:2005/07/28(木) 15:43:31
>>783 です
というのもWinsockコンとロールを使ったサンプルを見ると、
DataArrival イベントが発生した時点で、
全てのデータが揃っている前提で組まれているものばかりだからです。
(GetData を 1回行うのみ)

それでいいのであればいいのですが・・・
787デフォルトの名無しさん:2005/07/28(木) 15:49:01
試してみたの?
あと、HTTP 入門 でぐぐれば、HTTPプロトコル入門がすぐ見つかるから、
心配であれば1バイト読みしてヘッダを読み込んでから、バイト数見て後を読んでいけば?

Winsockコントロール自体は、HTTPの全ての読み込みなんて意識しないと思いますよ。
レイヤーとしてHTTPのほうが上位だから。
788783:2005/07/28(木) 15:57:42
>>787
返信ありがとうございます。

ひとまず、テストでは1発のGetDataで全部読んでくれるので問題はないのですが、
ネットワークにトラフィックかかったらどうなんだろ?とか心配になりまして。

VBで立ち上げたサーバにtelnetで繋いで手打ちすると、
1文字打つ毎に DataArrival イベントが発生しますので、
なんらかの対策は打つべきかとは思うのですが…。

アドバイス通り、ヘッダの区切りとか、Content-Lengthとか意識してみようかと思います。
789デフォルトの名無しさん:2005/07/28(木) 15:58:53
>>771
Dim ObjPrinter As Printer
For Each ObjPrinter In Printers
If ObjPrinter.DeviceName = "プリンタ名称" Then
Set Printer = ObjPrinter
Exit For
End If
Next
790デフォルトの名無しさん:2005/07/28(木) 16:03:49
>>788
ソケット通信自体、上位レイヤーであるHTTPであることを認識してるわけじゃない。
あくまで、なんかTCP/IPで通信してるデータが来たことを伝えてるだけ。
中のHTTP電文が完結してるなんて意識してないですよ。

WinsockコントロールのDataArrivalイベントの説明を見ても、データの完了なんて一言も無い。
読む限りでは受信して溜まったデータ長が0から1になったときに発生すると言ってるよね。
791デフォルトの名無しさん:2005/07/28(木) 18:03:50
HTTPはデータ伝送が完了したらコネクションを半分切る(shutdown)。
それ検出すればいいっしょ。
792デフォルトの名無しさん:2005/07/28(木) 18:15:27
Keep Aliveできないな
793デフォルトの名無しさん:2005/07/28(木) 23:53:35
>>778
つーかまんこワロスwwwwwwwwwwww
794デフォルトの名無しさん:2005/07/29(金) 17:21:06

フォームがフォーカスを失った時と
フォーカスを得た時に処理を実行したいのですが、どうすれば良いですか?

Private Sub Form_LostFocus()
Private Sub Form_GotFocus()
Private Sub Form_Activate()

ではそれぞれ1回しか処理されませんでした。
コントロールのLostFocus、GotFocusイベントでは
フォーカスを失った時と得た時に毎回イベントが実行されるんですが、
APIを使わず、Formでもそれと同じような処理をさせるにはどうすれば良いでしょうか?
795デフォルトの名無しさん:2005/07/29(金) 17:28:07
>>794
796デフォルトの名無しさん:2005/07/29(金) 17:32:08
>>794
フォーム内のコントロールのフォーカス遷移ごとに、フォームでイベントが欲しいのか?
複数のフォームがそれぞれフォーカスを得たときにイベントがほしいのか?

後者ならば普通にイベント発生する。
797デフォルトの名無しさん:2005/07/29(金) 17:40:02
おそらくフォーカスの移動ではなく
アプリがアクティブになったときと非アクティブになったときとで
処理を行いたいんじゃないかと
798デフォルトの名無しさん:2005/07/30(土) 09:23:07

すみません。
797さんの言うとおり、アプリ内でのフォーカスの移動ではなく
Windows内で他のアプリにフォーカスが移ったとき(他のアプリがアクティブになったとき)と、
逆に戻ってきたときに処理を実行したいのです。

CallWindowProc、SetWindowLongを使えば出来ますが、
APIを使わずに実現する方法をご存じの方が居ましたら教えてください。
799デフォルトの名無しさん:2005/07/30(土) 13:19:49
FormのBorderStyleを
「4 固定ツールウィンドウ」にした場合、
ScaleHeightを0にする方法がわかりません。
Form1.Height = Form1.Height - Form1.ScaleHeight
としてもScaleHeightが0にならないんですが、どうすれば0に出来ますか?
800デフォルトの名無しさん:2005/07/30(土) 16:04:04
>>798
そんなの簡単にできるだろ......と思って調べてみたんですが、
どうもVBネイティブの機能では不可能っぽいですね。
このかゆい所に手が届かない感じがVBテイストか。。。
801デフォルトの名無しさん:2005/07/30(土) 23:35:32
言いたい事はそれだけ?
じゃーね。さよなら。
802デフォルトの名無しさん:2005/07/31(日) 11:39:51
VB6 のPrint命令を使って
図を作成しています
DrawWidthに値を設定し線の太さをきめているのですが
プリンタよって
ことなる太さで出力されます
具体的には
PDFプリンタとレーザープリンタです
これは
プリンタ側のせっていなのでしょうか?
803デフォルトの名無しさん:2005/07/31(日) 12:23:11
>>802
何のせいといえばプリンタのせい。
Windows上の論理単位を物理単位に出すときの誤差。
804デフォルトの名無しさん:2005/07/31(日) 12:25:48
>>802
質問する前にMSDNのPrintメソッドの項とDrawWidthの項は読んだ?
読んでまだそういう疑問が湧くなら頭が悪いし、読まずに質問してるのならただの馬鹿だ。
805デフォルトの名無しさん:2005/07/31(日) 12:27:32
(VB6.0 DBはAccessでMDB接続です)
初めまして。プログラム初心者です。
今VB6.0でお小遣い帳のようなものを作成しているのですがその中でSPREAD(オリエント社)を使用しております。
そのSPREADにDBに保存してあるデータを表示するとデータ分(3件なら3行)しか表示されずそれ以降行を増やすことができません。つまりDBのデータしか表示できず画面にデータを追加できない状態なのですがどうすればよいでしょうか?
806デフォルトの名無しさん:2005/07/31(日) 17:34:47
>>805
ヘルプの行と列の挿入見れ。
807デフォルトの名無しさん:2005/07/31(日) 18:50:35
すいません…ヘルプを見てもできなかったから相談してみたのですが…。
808デフォルトの名無しさん:2005/07/31(日) 21:35:13
VB6で、80000ぐらいのファイルを外付けのHDにコピーする
プログラムを作ったんだけど、WinMEのときは1時間ぐらいで
終わってたのが、WinXPでは倍の2時間ぐらいかかるんです。
検索しながらファイルをコピーしてるんですが、
SHFileOperationでもCopyFileを使っても変わらずで
なんでMEとXPで速度が変わったか教えてください。
809デフォルトの名無しさん:2005/07/31(日) 22:42:26
>>808
釣りの匂いがプンプンするんですが。。
810デフォルトの名無しさん:2005/07/31(日) 23:09:30
VB初心者でFTPのこともよく分かてないんで質問させてください。
inetを使ってサーバーにあるファイルをダウロードするのにGETを使うのはわかるのですが、
ディレクトリごとダウンロードするにはどうしたらいいんでしょうか

811デフォルトの名無しさん:2005/08/01(月) 04:54:53
すいません、
別の方法でなんとか目的の処理をするようにしました
812デフォルトの名無しさん:2005/08/01(月) 11:36:18
VB 6.0 SP6

DataGridにチェックボックスを表示させたいのですが、
どうすれば出来ますか?
813デフォルトの名無しさん:2005/08/01(月) 13:00:26
814デフォルトの名無しさん:2005/08/01(月) 16:53:50
>>774
> 使えるよ要確認。
どうやるんですか?
Like "[東京,横浜,千葉]*"
みたいな方法を紹介してるところもあったけど、
これは「東京〜」「横浜〜」「千葉〜」にマッチするのではなく
「東〜」「京〜」「横〜」「浜〜」「千〜」「葉〜」「,〜」にマッチしてしまいます。

MSDNやVBAヘルプのLikeの項目を見ても、複数の単語(2文字以上)のみに
マッチさせる方法は載ってませんでした。
例として"abc"、"def"、"ghi"の3つのみにマッチするLike演算式を教えてください。
815デフォルトの名無しさん:2005/08/01(月) 19:03:30
>>814
Likeよか正規表現げググッたほうがいいね。
ていうかググらなかったんだね。
[]は文字クラス定義してんだから1文字単位でマッチするの当たり前だよ。

"東京横浜" Like "*東京*" 'True
"東京横浜" Like "*東浜*" 'False
"東京横浜" Like "*東*浜*" 'True
"東京横浜" Like "横浜東京" 'False
816772,814:2005/08/01(月) 19:29:38
>>815
名前欄にレス番入れなかった自分も悪いのですが。
>>772でも書いたとおり正規表現を使う方法は知っています。
[]で囲った場合の例についても、知ってるからこそ
「こういう方法を紹介してるサイトもあるけど、これでは出来ませんよ」という意味で書きました。
正規表現を避けたい理由については、Likeでの演算式を教えて貰う上で
必要な情報ではないと思うので明言しませんが、
>>774>>772(レス番ひとつズレてますが)の条件に対してLikeが使えるとのことなので
その方法をお伺いしたいのですが。

774さん、よろしく御願いします。
817デフォルトの名無しさん:2005/08/01(月) 20:59:31
すみません。
Acrobat6.0をインストールしたら使える
Adobe Acrobat 6.0 Type Library
のAPIドキュメントみたいなのって、どこで拾えますか?
ヘルプには載ってないみたいだし、オブジェクトブラウザじゃいまいち意味が
よくわからないから、ちゃんとした仕様書が読みたいんですが…。
アドビのサイト探してもよくわからんです><
818デフォルトの名無しさん:2005/08/01(月) 21:33:59
>>817
英語のPDFならすぐ見つかるはずだが。
819デフォルトの名無しさん:2005/08/01(月) 22:38:52
>>813
ありがとう
820デフォルトの名無しさん:2005/08/01(月) 22:57:24
>>818
うう、それを探してるんだ…○| ̄|_

アドビのサイトから飛べばいいの?
どれがそうなのかさっぱりだ…。
821デフォルトの名無しさん:2005/08/01(月) 23:16:32
>>820
中身までは見てないけど
ttp://partners.adobe.com/public/developer/acrobat/sdk/index_doc.html
こんな所にあるんじゃないの?報告求む
822820:2005/08/01(月) 23:27:40
>>821
おおお、ありがとう!
漏れはここまでたどり着くことすらできなんだのです。

で、喜んでみてたんだけど…
どうやら欲しい情報はSDKのフルバージョンを落とさないと手に入らないらしい。
てことでDLを試みたが、何故か403エラー…。
ちゃんと登録もしたのに、なんでだよ○| ̄|_

とりあえず色々試してみます…。
コーディング以前にこんなとこで躓くとは…。
アドビなんてキライだ ウワァァァァァァヽ(`Д´)ノァァァァァァン!
823デフォルトの名無しさん:2005/08/01(月) 23:30:20
あらま
5までなら何も無しにダウンロードできてたのにねぇ
824774じゃないけど:2005/08/02(火) 02:49:42
>>816
>>>772でも書いたとおり正規表現を使う方法は知っています。
>[]で囲った場合の例についても、知ってるからこそ
>「こういう方法を紹介してるサイトもあるけど、これでは出来ませんよ」という意味で書きました。
出来る例を知っているのに出来ない例を提示して*これでは出来ない*と宣言しちゃう意図はなに?
知っているなら出来る例を提示してそれの問題点を指摘してもらわないと、何が駄目なのかというのがわからんのだが。

>>772の条件はN個の単語の中の1つにマッチすればTrueになる条件式を知りたいというものじゃないの?
だったら、
If ",abc,def,ghi," Like( "*," & "abc" & ",*") Then
とか
If InStr( ",abc,def,ghi," , "," & "abc" & ," ) <> 0 Then
でいけるんでないの?
825デフォルトの名無しさん:2005/08/02(火) 03:01:12
>知っているなら出来る例を提示して
出来る例が無いから聞いてるんじゃないのか?
つーか824は頭悪すぎ。
夏か? 夏なのか? やっぱ夏なんだなw
826デフォルトの名無しさん:2005/08/02(火) 06:21:46
If ",abc,def,ghi," Like( "*," & "abc" & ",*") Then
If InStr( ",abc,def,ghi," , "," & "abc" & ," ) <> 0 Then
これが出来てない例ならもうしらねぇよカスが
827デフォルトの名無しさん:2005/08/02(火) 06:55:50
まあ、無知は黙ってろってことですな。

あ、俺もか。
828デフォルトの名無しさん:2005/08/02(火) 12:38:13
質問です。
配列の数字をソートしてuniq(重複を削除)したいのですが、どうすれば
いいのでしょうか?

例えば、array=(4, 8, 2, 8, 1) という配列であれば array=(1, 2, 4, 8) としたいのです。

rubyなら恐らく array.sort.uniq で終わるんですが、vb(正確には Excel VBA) で
やれと言われているんで…

よろしくお願いします。
829デフォルトの名無しさん:2005/08/02(火) 12:49:47
整数ならバケツソートがいいよ。
高速だし重複削除も同時にできる。
830828:2005/08/02(火) 12:55:00
>>829
いや、Double型です。
831デフォルトの名無しさん:2005/08/02(火) 13:00:22
つーか、Excelだったらセルに配列を書き出してソートし
重複チェックしながら配列に書き戻した方が速い場合も多いな。

大抵の操作はセル(ワークシート)を使うと遅くなるけど、
ソートは複雑な場合ほどワークシートを使った方が速くなる。
というかVB(A)でのソートが遅すぎるんだけどね。
まあ、バケツソートが使える条件ならバケツの方が速いだろうな。
832デフォルトの名無しさん:2005/08/02(火) 13:01:26
>>828
まず、自分のやりたい方針とかないの?
まったく真っ白?w
833デフォルトの名無しさん:2005/08/02(火) 13:13:55
もしシートを使うのが嫌だったら、VB自体にソートのメソッドとかは無いから、
条件に合ったアルゴリズムを引っ張ってくることになるわけだが、
ソートのアルゴリズム自体はサンプルも含めて腐るほど転がってるから
好きなの拾ってくればいいだけでしょ。
Double型でも少数を含めた合計桁数がそれほど多くなければバケツソートを応用で使えるし。
834828:2005/08/02(火) 13:15:17
>>831
配列は高々20個程度なので速さはどうでもいいです。

>>832
方針としては、なるべくシートに書きたくなくて、プログラム上のみで
実現したいです。
835デフォルトの名無しさん:2005/08/02(火) 15:42:07
836デフォルトの名無しさん:2005/08/02(火) 16:55:44
>>834
聞きたかった方針とは別の事だけど、

まず、ソートとユニークを別に処理する方法だとして、
ソートについては、配列アクセスをどうすれば昇順(or 降順)になるか考えましょう。
ユニークなデータ配列にするにはどうすれば良いか考えましょう。
じっくり考えればアルゴリズムは出てくるでしょ???

# 面倒でも車輪は何度でも発明しましょう、きっと力がつくはず。
837デフォルトの名無しさん:2005/08/02(火) 19:49:44
DataGridのIMEを制御する事って出来ますか?

DataGridのセルにアクセスした時にIMEが表示されて半角キーで切り替えが出来るので恐らく可能だとは思うんですが、
DataGridのプロパティにはIMEModeがないので、どこで設定するのだろうと・・・。

ウィンドウハンドルを取得してIMEの設定を変える方法は、TextBoxでは上手くいったんですが、
TextBoxの場合、事前にIMEModeを1にしないといけないみたいです。
DataGridの場合どこにIMEModeが入っているんでしょうか・・・。
838デフォルトの名無しさん:2005/08/03(水) 10:13:52
DataGridに配列の中身を表示させるには
どうしたらいいですか?
839デフォルトの名無しさん:2005/08/03(水) 10:29:41
ループ回す
840デフォルトの名無しさん:2005/08/03(水) 10:32:18
>>839
具体的にどうやって?
841デフォルトの名無しさん:2005/08/03(水) 11:20:58
超基本的なコントロールの使い方とかはMSDN調べろよ
842デフォルトの名無しさん:2005/08/03(水) 21:54:19
コードからPADを生成してくれるフリーソフトってある?
843デフォルトの名無しさん:2005/08/04(木) 11:26:36
MsFlexGridで列幅のサイズを可変させたいのですが
どうすれば出来ますか?
844デフォルトの名無しさん:2005/08/04(木) 11:39:45
>>843
ヒント:ColWidth プロパティ
845デフォルトの名無しさん:2005/08/04(木) 11:42:18
サイズを変更したい → ColWidth(Index) = n
サイズを可変にしたい → そういう機能はないので自分で実装しろ
846844:2005/08/04(木) 11:54:38
>>843-845
“可変”だったか。
じゃあ、こうしとけ。

MSFlexGrid1.AllowUserResizing = flexResizeBoth ← この場合は行と列の両方を可変できる

847デフォルトの名無しさん:2005/08/04(木) 12:19:21
コード上で任意に変更したいのか、
文字列に対して自動可変にしたいのか、
エンドユーザーが変えられるようにしたいのかで変わってくるからな。

だいたい「可変させたい」って表現自体がおかしいし。
しつもん
VB6で、
「IEを起動する」
プログラムをつくりたい
どうすればいい?
849デフォルトの名無しさん:2005/08/04(木) 17:35:56
>>848
ただ起動するだけなら基本中の基本
MSDNでも読んでこい
850デフォルトの名無しさん:2005/08/04(木) 17:54:25
そうはいっても純粋にIEを起動するか、どっかのページを開くかで違うと思う。

後者ならば、ShellExecuteEXでいけるはず、前者はしらん。
851デフォルトの名無しさん:2005/08/04(木) 18:59:56
前者だってIEXPLORE.EXEをShellExecuteすればいいだけ。
MSDNよんでるけど、なんか英語で
ぐちゃぐちゃかいてあってわからん
けっきょくどうすればつくれるんだか。

もうHSPでやちゃおうか
853デフォルトの名無しさん:2005/08/04(木) 20:52:32
>>852
ホームラン級の馬鹿だな
854デフォルトの名無しさん:2005/08/05(金) 01:13:14
>852
よぅ中学生、夏休みの宿題か?
世の中には「質問の仕方」ってものがあるんだが、幼すぎてまだ分からんか?
855デフォルトの名無しさん:2005/08/05(金) 04:40:54
Formの上に、PictureBoxがあり画像が貼ってあるとします。

さらに、その上にRichTextBoxを配置して、RichTextBoxの背景部分を
透明化したいと思うのですが、何か良い方法は無いでしょうか?
856デフォルトの名無しさん:2005/08/05(金) 07:46:03
>>852
日本語がごちゃごちゃしてて分からないなら同意できなくもないが、
英語のどの辺りがごちゃごちゃしているんだ?
857デフォルトの名無しさん:2005/08/05(金) 09:04:34
>>847
ごめんなさい
表現が間違っていました
文字列に対して自動可変させたいのです。
宜しくお願いします。
858デフォルトの名無しさん:2005/08/05(金) 10:44:53
たしかにMSDNの日本語版は直訳過ぎだろと、思わずツッコミ入れたくなる所があるな。
859デフォルトの名無しさん:2005/08/05(金) 10:52:51
まあ、下手な訳よりは原文読んだほうが早い場合はあるね。
技術情報の部分だっけ?去年あたりに自動翻訳エンジンの文書をそのままさらすようになったの。
散々お笑いの対象になったとおもうけど 。
860デフォルトの名無しさん:2005/08/05(金) 10:52:53
>>858
その関係のテクニカルトランスレータ周囲でで作業してた事があるけど
実際、スキル低いよ。
専門分野外の人も多いし…
861デフォルトの名無しさん:2005/08/05(金) 14:25:35
まぁ、スキルがある人は開発に行っちゃうだろうしな。
862デフォルトの名無しさん:2005/08/05(金) 14:59:50
条件文の乱立で質問させてください
下記のようなプログラムを作ったのですが、見た目もわかりにくく
変数も条件文も大変多くなってしまい、おそらく負荷もかかっているではないかと考えています
N1〜N8まで8個同じプログラムの繰り返しとなり、
それを最後にL・M・Sでそれぞれ8個を合計する必要があるのですが、
If N1 = 0 Then
SN1 = 0: MN1 = 0: LN1 = 0
ElseIf N1 = 1 Then
SN1 = 1: MN1 = 0: LN1 = 0
ElseIf N1 = 2 Then
SN1 = 1: MN1 = 1: LN1 = 0
Else
SN1 = 1: MN1 = 1: LN1 = 1
End If
'これをN1からN8まで
きれいにまとめるためにヒントもしくは例文教えてもらえたらと思います。
よろしくおねがいします。
863デフォルトの名無しさん:2005/08/05(金) 15:06:52
配列・・・VB云々以前のプログラムの基本だと思うんだが。
864デフォルトの名無しさん:2005/08/05(金) 15:18:52
>863
マニュアル調べたら乗ってました応用したら使えそうです。ありがとうございます。
大学でまわりに誰もプログラム使える人がいない中(教授も使えない)の独学なので、
基本すらわかってないです、申し訳ない。
865デフォルトの名無しさん:2005/08/05(金) 15:20:29
>>862
SN(i) = IIf(N(i) = 0, 0, 1)
MN(i) = IIf(N(i) = 0 Or N(i) = 1, 0, 1)
LN(i) = IIf(N(i) >= 0 And N(i) <= 2, 0, 1)

ループと合計算出くらいは自分で書けよ。
866デフォルトの名無しさん:2005/08/05(金) 15:22:10
>>862
配列、For文、Select文 を使うと良いよ。

Dim I, N(1 To 8), S, M, L
S = 0: M = 0: L = 0
For I = 1 To 8
Select Case N(I)
Case 0
Case 1
S = S + 1
Case 2
S = S + 1: M = M + 1
Case Else
S = S + 1: M = M + 1: L = L + 1
End Select
Next I
867デフォルトの名無しさん:2005/08/05(金) 15:29:00
>>866














しょぼい・・・
868デフォルトの名無しさん:2005/08/05(金) 15:30:21
>>865 >>866
ありがとうございます。
お手数をおかけしました(>_<)
熟読させていただきます
869デフォルトの名無しさん:2005/08/06(土) 00:04:49
IPアドレス入力用のコントロールってありますか?
870デフォルトの名無しさん:2005/08/06(土) 00:18:54
あります。
871デフォルトの名無しさん:2005/08/06(土) 00:28:43
>>870
どうやったら使えるか教えてください。
872デフォルトの名無しさん:2005/08/06(土) 00:49:54
MSDN読むと使えるようになります
873デフォルトの名無しさん:2005/08/06(土) 00:49:55
>>871
ごめん脊髄反射レスしちゃった。
WIN32上にはIPコントロールっつーのがあるんだけど、
VB用には標準では用意されてないかも。
874デフォルトの名無しさん:2005/08/06(土) 11:26:37
以下の処理をしたいのですが教えていただけないでしょうか


TextBoxに [田] [田中] [田中 達] [田中 達也] と入力(入力者によってまちまち)されたときに
一文字ずつ配列に代入したいのですがどのようにしたらいいのか教えてください

よろしくお願いします<(_ _)>

875デフォルトの名無しさん:2005/08/06(土) 11:40:45
コピペ、IMEからの複数文字の確定、消去、などを考えると
changeイベントで毎回0から配列作るしかないでしょ
その方法に付いては簡単なループ回すだけなので解らなければ自分で調べろ
876デフォルトの名無しさん:2005/08/06(土) 11:40:48
Pardon?
877デフォルトの名無しさん:2005/08/06(土) 14:15:12
Splitでぶったぎって、それからぶった切られた一つ一つの要素に関して
一文字目が'['かどうか調べてそんなら除けるだけじゃん。

VB5だからSplit使えねえって?
Split相当の関数なんて簡単にかけるでしょ。
878デフォルトの名無しさん:2005/08/06(土) 14:34:14
>>877
>>874 をよーく読み直せ。
879874:2005/08/06(土) 15:07:36
色々試してみてこんな風になったのですが使い方正しいか見てもらえますか、よろしくお願いします

Public gStrmoji(1 To 50) as string
public gStrname as string
public count as long

sub name()
gStrname = Text1.Text

For count = 1 To 50
gStrmoji(count) = Mid$(gStrname, count, 1)
Next count

end sub
880デフォルトの名無しさん:2005/08/06(土) 15:14:45
>>879
やってみりゃわかるだろ
881デフォルトの名無しさん:2005/08/06(土) 15:42:20
>>879
マジックナンバー(ここでは50)、イクナイ(・A・)!
Len を使って文字列の長さを予め調べておくのがよろす
882デフォルトの名無しさん:2005/08/06(土) 23:27:29
Public gStrmoji() as string
Public gStrname as string
Public count as long

Public sub name()
 gStrname = Text1.Text

 For count = 1 To Len(gStrname)
  ReDim Preserve gStrmoji(count)
  gStrmoji(count) = Mid$(gStrname, count, 1)
 Next count

End Sub


Private Sub Text1_Change()
 name
End Sub
883デフォルトの名無しさん:2005/08/06(土) 23:30:17
>>882
ReDimくらい一発で決めろ
884デフォルトの名無しさん:2005/08/07(日) 00:13:33
>>881>>882
どうもありがとうございます Lenであらかじめ文字列の長さを調べておくのがいいのですね

さっそくそれを採用させてもらいます ありがとうございました<(_ _)>
885デフォルトの名無しさん:2005/08/07(日) 00:56:40
テキストボックス上で改行を組み合わせて文字を表示したいのですが

Text1.MultiLine = True
Text1.Text = "あいうえお" + Chr(13) + かきくけこ

これだと改行されずに一行で表示されてしまいます
こういう場合だとChr(13)は無視されるんでしょうか
改行する方法を教えてください
886デフォルトの名無しさん:2005/08/07(日) 01:01:48
>>885
Chr(13)のかわりにvbCrLf
あと.Mul
887デフォルトの名無しさん:2005/08/07(日) 01:05:29
>>886
レスありがとうございます、できました
888デフォルトの名無しさん:2005/08/07(日) 08:34:25
VB6.0で以下のことをしたいのですが教えていただけないでしょうか

Option1(0)

○ TextBox1

○ TextBox2

Option1(1)

このようなフォームの配置をしているのですが
TextBox1に文字が入力されたらOption1(0)が選択
TextBox2に文字が入力されたらOption1(1)が選択されるようにしたいのですが
どのようにしたらいいのか教えていただけないでしょうか <(_ _)>
889888:2005/08/07(日) 08:35:46
上げ忘れました
890デフォルトの名無しさん:2005/08/07(日) 08:49:23
ChangeイベントにそれぞれのOptionを選択するコード入れればいいだけじゃん
891888:2005/08/07(日) 09:14:19
>>890

Private BlnFlag As Boolean

Private Sub Option1_Change()
If BlnFlag = False Then
If LenB(Trim$(Text2.Text)) = 0 Then
Else
Option1(1).Value = True
BlnFlag = True
End If
End If

End Sub

このように記述したのですがうまく機能しません・・・
どこがいけないのでしょうか><
892デフォルトの名無しさん:2005/08/07(日) 09:53:30
TextBoxのChangeイベントだっつーの

「TextBoxに文字が入力された」ら対応するOptionを選択したいんだろ
「TextBoxに文字が入力された」時に動くのがTextBoxのChangeイベントだよ。
まあ、正確にはイベント名でもわかるように「入力」ではなく「変更」なので
消去でも動くけど、消去の時動作させたくなければちょっと工夫すればいいだけだし。
893デフォルトの名無しさん:2005/08/07(日) 10:56:00
Text1_ChangeとText2_ChangeにOption(x).Valueを変更するのを書けばいい話じゃん
つーかFlagとか使うなよ
894デフォルトの名無しさん:2005/08/07(日) 11:30:02
>>885,>>888みたいな質問には「自分で調べろ」と言ってやるのが
親切ってもんだと思うんだが、なんでそんなに「教えたがり」なのかねえ。。
なにかそんなに優越感に飢えてるんだろうか。

まあ>>885,>>888みたいな人はそんな質問してる時点で(何を言おうと)見込みがないとも思うけど。
895デフォルトの名無しさん:2005/08/07(日) 11:44:42
説教厨うざい。
896デフォルトの名無しさん:2005/08/07(日) 20:41:05
VB6.0でメモリリークというのはどんなコードを書いてしまうと
発生するのでしょうか。
897デフォルトの名無しさん:2005/08/07(日) 20:48:29
自分で調べられないなら、気にすることないと思うよ。
VBのみを利用してる限りは難しいね、再現させるの。
APIとか使えば一発だけど。
898デフォルトの名無しさん:2005/08/07(日) 21:03:33
>>897
例えばどんなことをするとメモリリークするのですか?
899デフォルトの名無しさん:2005/08/07(日) 21:08:50
>>897
難しいことなんかねぇってww

>>898
Set hoge = New hogehoge
とかやって
Set hoge = Nothing
をしないだけでメモリリークするよ。
900デフォルトの名無しさん:2005/08/07(日) 21:17:28
ファイルを開くときに
Open "フルパス" 〜〜〜〜〜
とすると思うのですが

パスのところを


nCurrentDir = CurDir$()
Openfile = nCurrentDir & "\" & "開くファイル名"

Open Openfile 〜〜〜〜〜

としてとったのですがなぜかファイルがありませんとなってしまいます^^;
もちろん Openfileに入ってる文字列はフルパスとまったく同じになっています

もしかしてこのようなファイルの開き方はできないのですか???
901デフォルトの名無しさん:2005/08/07(日) 21:25:39
>>899
ほんと?確かめた?

ADODB.Connectionでやってみたけどリークしてないっぽいよ。
902900:2005/08/07(日) 21:33:13
ごめんなさい!
読み込むファイルをExeファイルと別のフォルダに入れてたの忘れてました><

確認不足でした 無事できました ほんとすみません orz
903デフォルトの名無しさん:2005/08/07(日) 21:35:06
>>901
それ繰り返してたらリークしない?
バージョンとかオブジェクトにもよるのかなぁ。
ADODB.Connection だったら、確か Close しなきゃメモリリークした記憶が。

ここ数年、VB弄ってないんで間違ってたらごめん。
904デフォルトの名無しさん:2005/08/07(日) 21:38:26
>>903
最初にグンっと上がって後はまったいら。
これはリークではないよな。
905デフォルトの名無しさん:2005/08/07(日) 21:41:09
906デフォルトの名無しさん:2005/08/07(日) 21:52:43
>>905
そんなのもう見てるよ。ググって一番上に出てくるやつだろ。
907デフォルトの名無しさん:2005/08/07(日) 21:56:26
見た上でそんな事言ってるのかよ
908デフォルトの名無しさん:2005/08/07(日) 21:57:22
>>907
そんなってなんだよ。俺は>>906で初めて書き込んだんだよ。
909デフォルトの名無しさん:2005/08/07(日) 21:58:06
>>905
そのページでは何も有用な結論は出ていないわけだが。
910デフォルトの名無しさん:2005/08/07(日) 21:58:17
なんだ、単なる野次馬か
911デフォルトの名無しさん:2005/08/07(日) 21:59:10
>>910
まあそう言えばそうなるな。
912デフォルトの名無しさん:2005/08/07(日) 23:15:10
>>899
それではリークしませんよ。
VBもそこまで馬鹿じゃない。
913デフォルトの名無しさん:2005/08/08(月) 07:13:54
>>912
例えばどういうことをするとリークするのでしょうか。
簡単なサンプルをお願いしたいのですが。
914デフォルトの名無しさん:2005/08/08(月) 09:33:53
>>913
グーグルでVB6+メモリ+リーク、参照カウンタ+VB6 とかで検索してみれば?
普通にVB使う分にはまずメモリリークは発生しません。(除くコンポーネントのバグと循環参照)
言語仕様としてそうなっています。

Win32APIを使う場合は別です。メモリーを動的確保したら当然開放しないとリークですし、
広い意味ではハンドルなどの未開放もリソースのリークになります。
915デフォルトの名無しさん:2005/08/08(月) 10:34:21
APIでバッファを確保せずに、メモリに読み込んでVBごと落ちた時があったけど、
それもメモリリークの一種?
916デフォルトの名無しさん:2005/08/08(月) 11:30:20
>>915
それは単なる破壊だろ?漏れてるわけじゃない。
917デフォルトの名無しさん:2005/08/08(月) 13:14:52
>>894がいるからいつまでたってもこのスレは
罵りあいの低レベルなんだな。質問のレベルの高低以前に。
918デフォルトの名無しさん:2005/08/08(月) 21:43:23
タブーオーダーの一括設定について

VB6.0+SP5+Win XP SP2です。

画面にコントロールを貼り付けてロジックの記述は終わったので、画面まわりを整備しようと
タブオーダーをきちんと順番に定義しようと思っています。ただ、60近くあるコントロールの
タブオーダーをいちいち変更していくのはすごく面倒です。

アドインでもなんでもいいのですが、IDE上で簡単に設定できるツールはないでしょうか。
MSDNやググってみても見つかりませんでした。よろしくお願いします。
919デフォルトの名無しさん:2005/08/08(月) 22:10:53
>>918
本当にググってる?
ググってみたら30秒で見つかったぞマジで。
http://www.gj.il24.net/~nakasima/vb/tips/#VBTIPS9
920デフォルトの名無しさん:2005/08/08(月) 22:31:42
>>913
これでいいかな?

'↓Class1.cls
Option Explicit
Public obj As Object
Private dummy(1048576) As Byte '1MB
'↑Class1.cls


'Form1
Private Sub Command1_Click()
   Dim a As Class1, b As Class1
   Set a = New Class1
   Set b = New Class1
   Set a.obj = b
   Set b.obj = a
   'Set a.obj = Nothing
End Sub
921デフォルトの名無しさん:2005/08/08(月) 22:47:02
何が楽しいのか知らないけど、どうしても続けたいなら
まず「メモリリーク」の意味を確認することから始めたら?
http://e-words.jp/w/E383A1E383A2E383AAE383AAE383BCE382AF.html
ここの定義に従えば、VBでも悪意をもってすればメモリリークを起こすコードが書けそうだが、
ケアレスミスではあまりないかも。malloc系の処理は全部ラップされてるから。

いや、フォームに関してはミスもありうるかも。
例えばモーダレスなメッセージボックスを表示するようなフォームを作って、
インスタンスの作成元がClosed(Unloadだったかな?)イベントで
参照を解放せずに同じ変数に別のインスタンスを作成して代入する操作を
繰り返すと見えないフォームがたくさん出来る仕様じゃなかったかVB6って?
922デフォルトの名無しさん:2005/08/09(火) 11:29:54
VB6で、クラスモジュールのインスタンスのメモリイメージをシリアライズする方法ってないですかね。
クラスモジュールが扱うデータ量が多くて、
データをロードするときに解釈して配列に入れていくと時間がかかるんです。
クラスモジュールのポインタにメモリを確保して、
バイナリのままドカンと読み込んで使えるようになったらいいんですけど。
こういうことはC++とかじゃなきゃ無理っぽいですが、
裏技的な方法でも結構ですので、もしあれば教えてください。
923デフォルトの名無しさん:2005/08/09(火) 12:28:54
>>922
不恰好だけど、クラスのシリアル化したいメンバだけを集めた構造体を定義して、
今まで個別に宣言していたメンバの代わりにその構造体を宣言するのが
一番素直で簡単じゃないかな。

構造体ならバイナリファイルに保存/復元可能なわけだから。

まあ、シリアライズ/デシリアライズするときだけ、メンバ変数を
構造体のメンバ[へ/から]コピーするのでもいいと思うけど。
924デフォルトの名無しさん:2005/08/09(火) 13:45:22
VB6.0で記述するコールバック関数について質問です。

VC++6.0でDLLを作成しています。
DLLからスレッドを作成し、コールバック関数を呼ぶ部分があります。

VC++で作成したコールバック関数は問題なく実行できますが、VB6.0
で作成したコールバック関数を指定すると、実行時にアプリが落ちて
しまいます。
ちなみに、VB6.0で作成したコールバック関数をワーカースレッドでなく、
DLLから直接呼ぶと問題なく実行できています。

別スレッドからVBのコールバック関数を呼ぶことは出来ないでしょうか?
925デフォルトの名無しさん:2005/08/09(火) 14:27:11
こういうことを書くとまた非難浴びると思うが・・・VBでそんなことするのが間違い。
926デフォルトの名無しさん:2005/08/09(火) 14:44:34
>>925
黙れボケ
927デフォルトの名無しさん:2005/08/09(火) 14:50:22
>>923
全然不格好じゃないです。
ユーザ定義型がまるごとPutで書き込めるとは知りませんでした。
動的配列の場合の書き込みはちょっとややこしそうですが、やってみます。
ありがとうございました。
928デフォルトの名無しさん:2005/08/09(火) 15:34:58
>>926
じゃあ、シンプルに。
VB6 の関数、コンポーネントはそもそもマルチスレッド対応ではない。
たまたま上手くいくものもあるが、そもそもVB6はシングルスレッドでの実行を前提としている。
929デフォルトの名無しさん:2005/08/09(火) 15:52:00
すみません質問させてください。

VBでC+で作成したATLのイベントを取得しているんですが

現状VBで作成したファイルを開くダイアログを表示している
間イベント取得処理が停止してしまいます。

これをダイアログが開いている間にもイベント取得処理をし
たいのですが何か方法はありますでしょうか。
お知恵をお貸しくださいませ、お願い致します。
930デフォルトの名無しさん:2005/08/09(火) 16:19:41
>>929
標準ダイアログはモーダルだから、自作でモードレスで同じような画面作るのがいいのかな?
コモンダイアログコントロールでそもそもモードレスできるかは自分で調べてください。
931929:2005/08/09(火) 16:43:07
>930殿

お早く丁寧な回答有難う御座います。
自作する方向で考えてみたいと思います。

932924:2005/08/09(火) 17:48:10
>925, 928
レスどうも。

スタックをや管理情報をが壊れるのでしょうね。
別の方法を考えます。ありがとうございました。
933924:2005/08/09(火) 17:50:01
誤:スタックをや管理情報をが
正:スタックや管理情報が

934デフォルトの名無しさん:2005/08/09(火) 18:12:10
スタックは壊れないが、まあそんなところだろう。
935デフォルトの名無しさん:2005/08/09(火) 18:17:40
>>931
停止しない。IDEじゃなくEXEで動かせ。
936929:2005/08/09(火) 18:56:45
>935殿

有難う御座います、確認したところ動作いたしました。
危うく無駄な画面を作成するところでした有難う御座います。
よろしければ理由も教えていただけないでしょうか。
よろしくお願い致します。
937デフォルトの名無しさん:2005/08/09(火) 19:11:53
>>936
MSのサイトに書いてあったんだが、場所がもうわからん。
Windowsのメッセージのイベントの処理の関係だったかな。
IDEが食ってしまうんだ。
938デフォルトの名無しさん:2005/08/09(火) 19:52:54
>>937殿

有難う御座います、早速MSのサイトを調べてみたいと思います。
ご丁寧に色々教えてくださり、大変助かりました。
おかけで休暇をとる事ができそうです。
939デフォルトの名無しさん:2005/08/09(火) 20:32:06
IDEが食うとか実行ファイルならOKとかそういう問題だっけ?
むしろWin9xとNT系の違いのような気がしたけど。。

まあどっちにしろちょっとの手間を惜しんで、そんな予期しない再入が起こりかねないような
危ない橋を渡るのはあまり賢い選択でないと俺は思うけどね。
メッセージ表示するモーダレスなフォームなんて三分で出来ると思うけど。
940デフォルトの名無しさん:2005/08/09(火) 20:36:52
>>939
まったく違う。危ない橋なんかじゃないし。
妄想バカは黙っててくれ。
941デフォルトの名無しさん:2005/08/09(火) 20:45:30
>>940
妄想バカねえ。。
再入って言っている意味がわかってるのかな。
もちろん再入があれば直ちに危険ということはないが。。

ちょっとの手間を惜しんで後々に「気をつけて避けて通らなければならない地雷」
を残すのは愚の骨頂だと思うけどね。

しかし幼稚臭い奴だな君は。
942デフォルトの名無しさん:2005/08/09(火) 20:50:57
グレーな仕様、バギーな仕様は避けるべきだと思うけどね。
明らかな代替手段があるわけだから。
943デフォルトの名無しさん:2005/08/09(火) 23:19:18
VB6.0でqsortやbsearchが簡単に使える方法は
ないでしょうか。
944デフォルトの名無しさん:2005/08/09(火) 23:19:51
スミマセン、質問させて下さい。

VB6.0を使って、Word、Excel、PowerPoint 、PDFの種類のファイルを
読み込んでWord、PowerPoint 、PDFは総ページ数
Excelは、総シート数を集計するプログラムを作らなければ
いけないのですが、これらについて詳しく書いてある本が少なくて
調べられず、困っています。

どのようにすれば、取得できるのでしょうか?
是非お知恵をお貸しくださいますよう、よろしくお願いいたします。
945944:2005/08/09(火) 23:21:25
開発環境を書き忘れていました
946944:2005/08/09(火) 23:22:34
OS:windowsXP SP1
開発環境:VB6.0
で開発しています。

よろしくお願い致します。
947デフォルトの名無しさん:2005/08/09(火) 23:52:10
>>944
それぞれOLEで連携してやれば出来ると思うけど。
参照設定すれば、VBAと同じようにそれぞれのオブジェクトを触れる。
どのオブジェクトの何を参照するかは、それぞれのVBAのヘルプを参照。
ExcelはWorkBookのWorkSheetsコレクションのCountかな?
PDFは最近このスレで確か質問あったはず。
その他はしらん。
948デフォルトの名無しさん:2005/08/10(水) 00:07:12
それぞれは相手にインストールされているというのは確実なんだろうか?
949944:2005/08/10(水) 00:13:18
>>947
即レスありがとうございます。

>>948
それぞれに対応したソフトは確実に
インストールされている環境です
950944:2005/08/10(水) 00:15:12
途中で書き込んでしまった。。。
947氏様、返答ありがとうございました。
951デフォルトの名無しさん:2005/08/10(水) 11:10:28
教えてください。
以下の方法で円を描いて、BMP保存すると、円がガタガタになります。
線を滑らかなにはできませんか?

Picture1.Circle (2500, 2500), 2400, RGB(255, 0, 0)

'保存
SavePicture Picture1.Image, "C:\Test.bmp"
Picture1.AutoRedraw = False
952デフォルトの名無しさん:2005/08/10(水) 11:26:29

MScommコントロールを使ったプログラムを、

他のパソコンで実行しようとすると、
「共通言語ランタイム デバック サービス
 アプリケーションでハンドルできない例外が発生しました」

と出るのですが、これを改善するにはどうしたらいいでしょうか?

XPをサービスパック2に、.NET Framework1.1をサービス パック1にしてます
953デフォルトの名無しさん:2005/08/10(水) 11:46:58
質問させてください。

ADOについてですが、
アクセスのクエリに2つのパラメータを作成しておいて、
VB上で動かしたいんですが
どうすればよろしいですか?
954デフォルトの名無しさん:2005/08/10(水) 11:58:51
文字列にタブ(tab)を入れて整列させたいのですが
どうやればよろしいか?

↓"文字列"にタブの挿入をお願いします。

Label.caption = "文字列"
955デフォルトの名無しさん:2005/08/10(水) 13:28:35
Label.caption = "文" & vbTab & "字" & vbTab & "列"

こういう事?
956デフォルトの名無しさん:2005/08/10(水) 14:35:25
>>951
こちらで試したがpicture1とそっくりなものが保存されてたよ。
957デフォルトの名無しさん:2005/08/10(水) 14:43:06
アンチエリアシングがやりたいだけとか
958954:2005/08/10(水) 15:51:28
>>955
ありがとうございます。それです。
959デフォルトの名無しさん:2005/08/10(水) 16:23:58
UserControlのプロパティを作成していますが、
プロパティーウィンドウの左に半角で(テキスト)、右にドロップダウンボタンが表示され
改行入力できるプロパティの作り方が分かりません。
(例えるならMultiLine=True時のTextBox.Text)
どのような型を使えば使えるようになりますか?
960デフォルトの名無しさん:2005/08/10(水) 17:51:47
DataGridでボタンを表示させて
ボタンを押すとデータのリストを表示する方法ってありませんか?

ボタンの表示まで出来ています。
961デフォルトの名無しさん:2005/08/10(水) 23:43:11
>>957
Picture1.Circle (200,200), 100, RGB(255, 0, 0)
Picture1.End Doc
プリンター出力だとガタガタがなくなります。
962デフォルトの名無しさん:2005/08/10(水) 23:44:43
>>961
当たり前だ。クソして寝ろ。
963デフォルトの名無しさん:2005/08/11(木) 07:22:34
>>924
スタックが壊れると言うよりも、VB6.0のIDEがマルチスレッドを意識して作られていないだけ。
ついでにVB6.0もマルチスレッドを前提に作られているわけじゃないので、大抵は問題なく動くが止めとけ。
964デフォルトの名無しさん:2005/08/11(木) 08:52:49
>>962
何で
偉い人教えて、BMPに綺麗な円を描く方法教えて
965デフォルトの名無しさん:2005/08/11(木) 10:15:56
>>953です

自己解決しました。
966デフォルトの名無しさん:2005/08/11(木) 11:50:07
>>964
DPIの違い
プリンタが600DPIだとしたら、普通のディスプレイに比べて約36倍細かく描画できる。
PCのモニタなんてモザイク映してるようなもん。
967デフォルトの名無しさん:2005/08/11(木) 13:55:37
VB6のMSFlexGridについてなのですが、MouseDownイベントでボタンを押した位置が
何列目の何行目にあたるかを調べる良い方法は無いでしょうか?

今はループを回して0行目から行高を加算していき、合計がy以上になる位置を探したりしてます。
全ての行高が同じ場合や規則性が有る場合は計算で出せるから良いのですが、
列幅は不定なことが多いし、行高も不定な場合は上記のようにループ回す方法しか思い浮かびません。

数千行とかになるとはっきり体感出来るほどレスポンスが悪くなるので、
何か良い方法をご存じの方が居りましたらどうかご教示願います。
968デフォルトの名無しさん:2005/08/11(木) 13:59:13
ネタでしょ?ネタだとしたらセンスないと思うけど。

>>966
それだけじゃ納得しないでしょ。
俺が964的な人だとしても、「だってフラッシュとか見れば現に滑らかな円が描けてるじゃん」
って思うもん。

>>964
まずはアンチエイリアスって技術(そんな大げさなもんでもないが。。)が
どういうものか調べてみたら?ネタじゃないなら。

で、VBでアンチエイリアスかけて図形を描画する方法だけど、残念ながら
簡単には実現できないと思った。DirectX使わないとできない?
.NETのGDI+にはアンチエイリアスの機能があるんだけどねえ。。

まあアンチエイリアスの考え方そのものは難しくないから、
気合入れれば自分で実装できないことはないとは思うけど。(パフォーマンスはともかく)
969デフォルトの名無しさん:2005/08/11(木) 14:49:23
>>967
普通にRow, Colじゃダメなの?
970967:2005/08/11(木) 14:56:00
>>969
非固定セルの左クリックの場合ならそれでもいいんですが、
右クリックや固定行列だと選択セルが移動しないので
Row, Colプロパティでは取得できません。
971デフォルトの名無しさん:2005/08/11(木) 16:26:13
>>967
この場合、「MSFlexGridのエリア内であっても、セルがない場所」をクリックする場合もあると思うので、
あなたがやっているように、計算で求めるしかないでしょう。(いい方法があるかもしれませんが。。。)

しかし、ループを回して、その都度コントロールから値を取得するのは、時間がかかるため、
あらかじめ、行高と列幅の値を配列に格納しておいて、イベント時にはその配列から
計算するようにしてみてはいかがでしょうか?

行高と列幅がそれぞれ変更になったときは、その都度配列の値を変更するようにして。
972デフォルトの名無しさん:2005/08/11(木) 20:20:02
>>964
保存した画像を自動ズームで見てるから。
973デフォルトの名無しさん:2005/08/12(金) 09:23:22
>>967
MouseRowとMouseColじゃだめなん?
974デフォルトの名無しさん:2005/08/12(金) 09:52:10
VB6.0でDataGridにComboboxを入れるやり方ありませんか?
975デフォルトの名無しさん:2005/08/12(金) 11:41:08
Left と Left$ の違いはなんでしょうか。
976デフォルトの名無しさん:2005/08/12(金) 11:42:14
>>975
Variantを返すかStringを返すか
977デフォルトの名無しさん:2005/08/12(金) 12:10:46
>>975
返り値をString型にしか入れないならLeft$の方が高速らしい。
978975:2005/08/12(金) 15:17:40
>976,977
ありがとうございます!
979デフォルトの名無しさん:2005/08/13(土) 12:09:31

VB6で作ったアプリで、他のアプリから開いてるコモンダイアログの
カレントフォルダパスを取得したり、任意のフォルダに移動させたりしたいのですが
やり方がわかりません。

この手の機能を実装してるアプリでVBのソースを公開しているものも見あたらず
ググっても手がかり無しです。

丸投げになってしまいますが、具体的なコード書けるベテランの方、どうかよろしく御願いします。
980デフォルトの名無しさん:2005/08/13(土) 12:43:28
>>979
実装してるアプリでVB製のものの具体名は?
981デフォルトの名無しさん:2005/08/13(土) 12:50:55
>>979
>>980に騙されるな。安易に答えちゃダメだよ。危険!
982デフォルトの名無しさん:2005/08/13(土) 13:14:13
すいません、
ヤフーオークションの出品終了分の一覧をテキストに吐き出すツールを作りたいのですが、
いままでVB6はそれなりに触ってるのですがなにからはじめればいいのかけんとうもつきません。
どなたかこれを実現する方法しりませんか?
983デフォルトの名無しさん:2005/08/13(土) 13:18:57
>>982
知ってますが、なぜ「いままでVB6はそれなりに触ってる」のような
ウソをつくのか説明してください。
984デフォルトの名無しさん:2005/08/13(土) 13:26:33
>>983
ウソじゃないですよー
家計簿みたいなものからAPIを利用して画像を加工するようなツールぐらいまでなら作ったことありますもん
985デフォルトの名無しさん:2005/08/13(土) 13:28:38
>>979
また他のアプリか・・・それやりたきゃOSの仕組みから勉強しろって言いたい。
こんなところで聞く程度のレベルで作るなと。

>>982
まず日本語の勉強を、何をしたいのか一切伝わりません。
とりあえず2行目読む分には、横にちらしを置いておいて裏に書いておけば?って思うけど。
986デフォルトの名無しさん:2005/08/13(土) 13:39:54
答えられないとき、回答する上で
必要になるわけでもないことを聞き返したり
むやみに罵倒したりするのは止めよう

解らなければレス返さなければいいだけ
987デフォルトの名無しさん:2005/08/13(土) 14:06:54
じゃあ余計なことを書かずに質問の内容を解りやすく且つ簡潔に書けよハゲが。
988デフォルトの名無しさん:2005/08/13(土) 14:37:25
どうしたの、ボウヤ?
989デフォルトの名無しさん:2005/08/13(土) 14:42:40
夏なんでしょ
放っておいてあげようよ
990デフォルトの名無しさん:2005/08/13(土) 14:43:01
>>982
WebBrowser1.Document
991デフォルトの名無しさん:2005/08/13(土) 15:00:37
Visual Basic 6.0の評価版は今でも入手可能ですか?
検索してみましたが、書籍の付録しか無いのでしょうか?
ダウンロード出来るサイトがあれば是非教えて下さい。
992デフォルトの名無しさん:2005/08/13(土) 15:06:50
無い
993デフォルトの名無しさん:2005/08/13(土) 16:39:52
>>984
作ったことありますもん

に萌えた。
994デフォルトの名無しさん:2005/08/13(土) 16:46:13
いっそ
作ったことありますんもん
ならw
995デフォルトの名無しさん:2005/08/13(土) 17:07:18
次スレまだー?オレ立てられない
996デフォルトの名無しさん:2005/08/14(日) 22:38:18
>>982
HTML解析してって話だろ?
InStrつかって "<" の位置を検索してなんてやめてくれよ。。。
XMLHTTPRequestでHTML取得してMSHTMLでローカル展開すればスマート
分からなければ >>990 の方法で
MSHTMLはDHTMLのだから、VBよりもDHTMLの勉強しろ
997デフォルトの名無しさん:2005/08/14(日) 22:55:53
>>996
そうでもない。
998デフォルトの名無しさん:2005/08/15(月) 10:58:35
999デフォルトの名無しさん:2005/08/15(月) 11:03:11
1000デフォルトの名無しさん:2005/08/15(月) 11:16:40
VBプログラマ質問スレ(6.0以前) Part43
http://pc8.2ch.net/test/read.cgi/tech/1123952677/
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。