VBプログラマ質問スレ(6.0以前) Part42
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2005/05/24(火) 17:42:09質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。
VB.NETは別物なので専門スレで、
VBS、APIの質問もそれぞれのスレで。(>>2 で紹介)
MSDN Online Japan ホーム
http://www.microsoft.com/japan/msdn/default.asp
Visual Studio 6.0 Service Pack 6 正式リリース
http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx
http://www.google.co.jp/
※「まず自分で調べる」クセを身につけよう。
心得
一.質問する前に過去ログにも目を通してみる。
二.質問する前に MSDN などで調べてみる。
三.VBScript はこのスレでOK。
四.インストーラーなどの質問もOK。
五.荒らしは相手しない。
六.VB情報募集中。
七.VB.NETの話題はできるだけひかえる。
前スレ Part41 http://pc8.2ch.net/test/read.cgi/tech/1112414085/
0002デフォルトの名無しさん
2005/05/24(火) 17:42:53VB.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/
0003デフォルトの名無しさん
2005/05/24(火) 21:15:280004デフォルトの名無しさん
2005/05/25(水) 00:30:17それってどういう風に使い分けたらいいのでしょうか?
また同様に、「Call」も付ける時とつけない時がありますよね。
その差についても説明いただけるとありがたいです。
よろしくお願いします。
0005デフォルトの名無しさん
2005/05/25(水) 00:53:58Result = 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);
という風にしましたが、気になったので・・・
0006デフォルトの名無しさん
2005/05/25(水) 01:04:49SubとFunction
>>5
浮動小数
0007デフォルトの名無しさん
2005/05/25(水) 05:11:41Cdbl("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...
0008デフォルトの名無しさん
2005/05/25(水) 09:01:01既出だとは思いますが、お願いします。
T = 1.0
と書くと
T = 1#
という表示になるのですが、仕様ですか?
中身はちゃんと1.0のままなのでしょうか?
一応、過去ログも見れる分は見たのですが41でちょっと記述がでてただけで求めるものとは違いました。
0009デフォルトの名無しさん
2005/05/25(水) 09:38:18> >>4
> SubとFunction
嘘教えちゃいけません。きちんとMSDN読みましょう。
0010デフォルトの名無しさん
2005/05/25(水) 09:47:08関数の戻り値を受け取る・使用する場合は括弧を付けなければいけません。
関数の戻り値を受け取らない場合はCallを付けなければ括弧は付けられません。
SubはCallを付けない限り、括弧を付けられません。
ここからは個人的な使い方で人によって違うと思いますが、
戻り値を受け取る・使用する必要のある関数は括弧を付けます。
それ以外の場合は付けません。
Callは一切使いません。
こんな感じでどうでしょ?
0011デフォルトの名無しさん
2005/05/25(水) 10:15:09仕様です。
1.0も1#もVBではdouble型の1として処理されるので、
どちらも意味は同じです。
0013デフォルトの名無しさん
2005/05/25(水) 11:14:56ByRefの場合、括弧を余計につけると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
0014デフォルトの名無しさん
2005/05/25(水) 15:34:23おまいらIT奴隷は、死ぬまでパソコンとチュッチュしててください。
0015デフォルトの名無しさん
2005/05/26(木) 16:31:270016デフォルトの名無しさん
2005/05/26(木) 23:02:33仕様はコントロール配列のイメージ30個とイメージの上に付いてるように
コントロール配列のオプションボタンが30個あってスタートをクリックするとサイコロの
イメージがコントロール配列のイメージをランダムに移動して3秒経つと止まる。
それでスタートをクリックする前に予想のサイコロの上にあるオプションを選んでクリック。
止まったときに止まったイメージの上のオプションボタンが選んだオプションボタンだったら点数を追加してメッセージ表示
というゲームにしたいんだけど、止まったサイコロと選んだオプションボタンが同じなら〜っていうIf文が出来ないorz
分かりにくい文章ですまないけど助けてください。
0017デフォルトの名無しさん
2005/05/26(木) 23:22:21いやだ。
0018デフォルトの名無しさん
2005/05/26(木) 23:29:14そもそも、そんなことできるのでしょうか。
0019デフォルトの名無しさん
2005/05/26(木) 23:51:37ttp://support.microsoft.com/default.aspx?scid=kb;ja;257819
0020デフォルトの名無しさん
2005/05/27(金) 00:26:46HTMLファイルはCreateMHTMLBodyを使って簡単だったのに、MHTファイルが出来ないです。
MHTMLファイルを直接指定して送信する方法はどうすれば出来るでしょうか?
よろしくお願い致します。
0022デフォルトの名無しさん
2005/05/27(金) 10:10:02よくわからん。
イメージ30個とサイコロは同じ?
とりあえず適当に答えてみるが…
スタートを押す直前に選んでいるオプションボタンのインデックスを
変数に保持して、ランダム移動開始。
3秒後に止まっているオプションボタンのインデックスと、スタート
前のインデックスを保持した変数と比較。
これでどう?
002316
2005/05/27(金) 17:47:26レスありがとうございます。
そして分かりにくくてすみません。空のイメージ30個の上をサイコロのイメージがランダムに移動して3秒後に止まる
オプションボタンはスタートを押す前に自分で押しておく。
止まったときの図で説明するとこんな感じです
○ ○ ○←オプションボタン
□ □ □←空のイメージ
○ ○ ●←スタート押す前に選んだオプションボタン
□ □ ■←スタートしてランダムに移動したサイコロのイメージ
↑みたいになった時に点数を追加したり、「おめでとう」などのメッセージを表示させるIf文の条件部分が分からないんですorz
0024デフォルトの名無しさん
2005/05/27(金) 18:17:02If optButton(currentSaikoro).Checked Then
0025デフォルトの名無しさん
2005/05/28(土) 13:28:40ありがとうございます。月曜に学校で試してみますね。
0026デフォルトの名無しさん
2005/05/28(土) 19:05:18コンボボックス(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
仕様ですか?
0027デフォルトの名無しさん
2005/05/28(土) 19:12:37ThePenisには敵わないまでも
VisualBasic6の日本語版
0028デフォルトの名無しさん
2005/05/28(土) 19:20:16本気ですか?
002926
2005/05/28(土) 21:00:25済みません。本気です・・・。
当たり前のことなのですか。
.ListIndexは-1でした。
003025
2005/05/28(土) 21:28:06まだ説明不足だったorz
サイコロのイメージってのはImage1だから>>24の括弧の中のSaikoroをimage1.Pictureにすればいいでしょうか?
0031デフォルトの名無しさん
2005/05/29(日) 00:28:39click()でなく、DropDown()で。
↓
Private Sub Combo1_DropDown()
With Combo1
.Clear
.AddItem "111"
.AddItem "222"
.AddItem "333"
.Text = "111" '** これが表示されない
End With
End Sub
0033デフォルトの名無しさん
2005/05/29(日) 23:46:190034デフォルトの名無しさん
2005/05/29(日) 23:50:14Declare 〜 As Long
で宣言していれば、Long の 0。
0037デフォルトの名無しさん
2005/05/30(月) 19:02:49なるほどそうだったんですか。今日出来なかったから最終手段として糞長いIf文やりましたよ('A`)
If option1(0).value=ture and image2(A).visible=ture then
ElseIf 以下略
OTZ
0038デフォルトの名無しさん
2005/05/31(火) 08:14:040039デフォルトの名無しさん
2005/05/31(火) 11:58:33メインとなる販売画面の明細部分で行き詰まってしまいました、実際開発してる
人はどういった手法を使っているのか是非教えてください。
0040デフォルトの名無しさん
2005/05/31(火) 12:50:57まず、自分が何を理解できていないか、何が疑問なのか理解すべきでは?
そんな質問誰も答えられんよ。
VBでプログラム作るんですけど、どういう手法で作るんですか?
あなたが聞いてるのは上記質問と同レベル。
0041デフォルトの名無しさん
2005/05/31(火) 13:42:03失礼しました。説明が全くできていませんでした。
行き詰まっている個所は、商品名・数量・単位・単価・金額を一組とした行の部分で
す。今はフォームに10組配置するだけで、10行の明細しか作れないような状態で
す。
何かもっといい方法があるとは思うのですが、見つけることができません。もし
同じようなソフトを開発されている方がいたら是非アドバイスをお願いします。
0042デフォルトの名無しさん
2005/05/31(火) 14:31:02お前、クビ。
0043デフォルトの名無しさん
2005/05/31(火) 14:34:31リスト、グリッドなどのコントロールを使う。
但し、スクロール嫌いなお客様で、前頁・次頁のページ切替を意図して>>41のUIを求めてる可能性があるので注意。
0044デフォルトの名無しさん
2005/05/31(火) 15:51:530045デフォルトの名無しさん
2005/05/31(火) 16:10:53xmldoc.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
これをファイル名を入力するのではなく、ドラッグアンドドロップで実行したいのですが、
うまくいきません。
どなたかお願いします。
0046デフォルトの名無しさん
2005/05/31(火) 16:18:41どこからどこへなにをドロップしてどううまくいってないのか書けよ
0047デフォルトの名無しさん
2005/05/31(火) 17:59:41ボタンを押すと三つの絵がランダムに画面上に表示できるようにしたいのですが、できません。
RandomizeとImage.Move等を使うのは分かるのですが、乱数を理解できていない、かなりの初心者です。
教えてください。
0048デフォルトの名無しさん
2005/05/31(火) 18:59:190049デフォルトの名無しさん
2005/06/01(水) 02:39:56SendMessageでキャプションを取って目的のボタンを見つけるように
したのですが、ボタンの中にキャプションを取得しようとしても
空が帰ってきて取れないものがあります。
必ずキャプションが取れるような方法があるでしょうか?
または、キャプション以外にボタンを特定できるような情報が取得する方法が
あるでしょうか?よろしくお願いいたします。
0050デフォルトの名無しさん
2005/06/01(水) 03:31:340051デフォルトの名無しさん
2005/06/01(水) 08:07:05探せませんでした。
教えてください。
VB6でファイルメーカーを読むサンプルです。
なにとぞ、教えてください。
0052デフォルトの名無しさん
2005/06/01(水) 19:21:01ExecNotificationQuery を使ってアプリケーションログの監視をしているのですが、
ときどき、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
0053デフォルトの名無しさん
2005/06/01(水) 21:49:15ODBC経由ならデーターベースが違っていても
レコードの取り出し方はある程度同じなはず。
>>51
ttp://www.kipwmi.com/fmbbs/wwwlng.cgi?print+200312/03120047.txt
excelでこんな風にデータアクセスできるなら、
vbでもできるんじゃね?
0054デフォルトの名無しさん
2005/06/02(木) 07:51:37スレ違い
0055デフォルトの名無しさん
2005/06/02(木) 11:32:50DF = '関数FXの微分式
X1 = X0 - (FX / DF) 'ニュートン法の基礎式よりX1を計算
DX = Abs((X1 - X0) / X0) 'X1とX0との隔たりを調べる変数DXを計算
N1 = N1 + 1 '繰り返しの回数N1をカウント
'このVBコードの一部を書き換えて√2の近似値を求めるプログラムを作成したいのですが
分からないです。どなたか教えてください
0056デフォルトの名無しさん
2005/06/02(木) 13:23:59アルゴリズムの質問はアルゴリズムスレへ。
http://pc8.2ch.net/test/read.cgi/tech/1090227743/
0057デフォルトの名無しさん
2005/06/02(木) 14:11:54動作可能でしょうか?
0058デフォルトの名無しさん
2005/06/02(木) 14:49:17可能不可能というより、考えたくもない、汚らわしい、おぞましい。
0059デフォルトの名無しさん
2005/06/02(木) 15:10:350060デフォルトの名無しさん
2005/06/02(木) 15:34:14いやOSもXPだがSP2も当ててないし、VB6.0もそのまま・・・
0061デフォルトの名無しさん
2005/06/02(木) 16:00:190062デフォルトの名無しさん
2005/06/02(木) 16:54:50昔のVB6のシステムで不具合か仕様変更が発生。
導入先のEXEのインストーラーを作ったのはVB6SP4の頃。
でもって、今かれの手元にある環境はVB6SP6。
そいでもって、客先にVB6SP6版新しいインストーラを作って入れた場合の不具合まで面倒見るほど工数なし。
0064デフォルトの名無しさん
2005/06/02(木) 17:27:06なるほど、そういえばそうだな
しかし、手元の探してみたがSP5しかなかった
VS6.0SP4なら誰か必ず持ってると思われるが・・・
0065デフォルトの名無しさん
2005/06/02(木) 17:59:25入手手段としたら、大昔のVBマガジンとかを探すしかないんじゃないのか?
またはMSDNの契約があれば、それの昔のCDを漁るとか。
006657
2005/06/02(木) 18:03:490067デフォルトの名無しさん
2005/06/02(木) 18:04:26お前の態度が気に入らない
006857
2005/06/02(木) 18:05:570069デフォルトの名無しさん
2005/06/02(木) 18:11:03でもって、100MB以上あるのものでライセンスあるものはアップしません。
何処に住んでるかしらんが、秋葉の書泉とかLaoxなら運よければあるよ。
007057
2005/06/02(木) 18:19:170071デフォルトの名無しさん
2005/06/02(木) 18:39:05どう書けばいいんでしょうか?
Set objIE = CreateObject("InternetExplorer.application")
objIE.Navigate "指定したURL"
こんな感じで書いてるんですが新しいウインドウを開いてしまうんですよ
起動してるIE見つけて処理する方法を教えてください
0072デフォルトの名無しさん
2005/06/02(木) 18:40:12正しいけど現実的には杞憂じゃないの?
ウダウダやってる時間だって工数に入ってるわけで。
っていうか、各バージョンのSP当たったランタイムのインストーラがベクターにあるよ。
でもVBのランタイム差し替えるには古いのアンインストールする必要があると思ったけど、
これってどうやるんだっけ?
007357
2005/06/02(木) 18:40:190074デフォルトの名無しさん
2005/06/02(木) 18:41:20007557
2005/06/02(木) 18:49:25トラブルというか基本的にはランタイムは配布不可能な状態です。
もっとメジャーバージョンアップならいいですが
クライアントの数がかなりあるので数ステップの修正のために
クライアントの環境を変えることは許されないのであります。
0076デフォルトの名無しさん
2005/06/03(金) 00:56:10そういう話になるとむしろマネジメントの問題だぞ。
ってかその修正するexeのインストーラにSP6を含めりゃいいんじゃね〜の?
0077デフォルトの名無しさん
2005/06/03(金) 01:51:060078デフォルトの名無しさん
2005/06/03(金) 08:18:12VB6クリーンインストールして、ベクターからSP4のランタイム拾ってくれば(ひょっとすると
順番は逆の方がいいかもしれないが)SP4インストールしたのと同じにできるんじゃないの。
007957
2005/06/03(金) 08:26:00とりあえずSP3が見つかったのでこれでしのぐのはありですか?
SP3のexeならSP4でも動きますよね。
SP6のexeをSP4で動かすよりはマシですよね。
0080デフォルトの名無しさん
2005/06/03(金) 08:28:53008157
2005/06/03(金) 11:32:21.NETのSharedみたいなやつです。
0082デフォルトの名無しさん
2005/06/03(金) 12:11:25Moduleでやるしかないんじゃないのかと。
0083デフォルトの名無しさん
2005/06/03(金) 18:11:32ttp://homepage1.nifty.com/MADIA/vb/Tecnick/ShoriStop.htm
この方法をつかったんですがCPU使用率が100%になってしまいます
どうやったらCPU使用率を低くできるのでしょうか?
Dim Now As Long
Now = Timer
While Timer < Now +1
DoEvents
Wend
0084デフォルトの名無しさん
2005/06/03(金) 18:23:11Sleep() API
0085デフォルトの名無しさん
2005/06/04(土) 00:52:23Timerコントロール
0086デフォルトの名無しさん
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です。
0087デフォルトの名無しさん
2005/06/05(日) 20:02:06wshでできることをやろうとするなら、VBでwshのオブジェクトを宣言して使えばよいのでは?
008886
2005/06/05(日) 20:28:22具体的にどうやるのですか?
普通に宣言してもArgumentsプロパティに引数が入ってないのですが。
それ以外の機能はwshのオブジェクトを宣言して普通に使えてますけど。
0089デフォルトの名無しさん
2005/06/05(日) 21:05:45ゴメン思い付きで書いたからできないかもしれない。
0090デフォルトの名無しさん
2005/06/05(日) 21:32:47やったことないけど、API の CommandLineToArgvW
0092デフォルトの名無しさん
2005/06/06(月) 06:50:46Dim 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に文字列が代入されないようになっていました。
どなたか解決法をご存知でないでしょうか?
009386
2005/06/06(月) 09:41:57CommandLineToArgvWでググってもヒット数が少なく、
名前付き引数を得る方法などは分かりませんでした。
失礼ながら「出来るかもしれない」とか「やったことないけど」とかではなく
実際に出来る方法を具体的に教えてください。
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
0094デフォルトの名無しさん
2005/06/06(月) 09:42:16i = 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
0095デフォルトの名無しさん
2005/06/06(月) 09:42:40Function 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
009686
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プロパティを扱える方法などを教えていただきたい所存です。
どうか宜しく御願いいたします。
0097デフォルトの名無しさん
2005/06/06(月) 15:32:31ユーザ名が A という変数に入っている場合はどう書けばいいのでしょうか?
0098デフォルトの名無しさん
2005/06/06(月) 15:53:31Kill ("C:\Documents and Settings\" & A & "\hogehoge.txt")
0100デフォルトの名無しさん
2005/06/06(月) 16:44:09画像がコントロールより大きい時は縦横比をそのままでコントロール内に収まるように縮小、
画像がコントロールより小さい場合は等倍表示にしたいんだけど、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の縦横比固定版で
定義としては「縦横比を固定したまま、イメージをコントロールのサイズに拡大または縮小する」
という感じです。
0101デフォルトの名無しさん
2005/06/06(月) 17:00:16VB6.0では ImageコントロールのWidthプロパティとHeightプロパティは自動的にPictureのサイズになるよ。
0102デフォルトの名無しさん
2005/06/06(月) 18:26:540103デフォルトの名無しさん
2005/06/06(月) 18:36:25http://homepage1.nifty.com/CavalierLab/lab/vb/clsmdl/
0104100
2005/06/06(月) 20:36:57それが困るんですよ。
コントロールより小さい画像の場合はそれでいいんですけど、
大きい画像の場合ImageコントロールのWidth、HeightがPictureのサイズになるのではなく
Pictureのサイズが縦横比固定でImageコントロールのWidth、Heightに収まるように縮小して欲しいわけで。
0105デフォルトの名無しさん
2005/06/06(月) 21:05:52それだったら納めたいWidthとHeightの変数持って、
比率計算すりゃ良いだけ。
0106デフォルトの名無しさん
2005/06/06(月) 21:50:37というプログラムを作成しています。
mapi コントロールを使えば、受信トレイの内容を取得できるのですが、
送信済みトレイの内容を表示させる方法はないでしょうか?
自分で色々探したところ、ある閉鎖されたホームページに
dbxファイルをvbで読むというサンプルがあったらしいのですが、
残念ながら肝心のソースの部分はアーカイブでも読むことが出来ません。
もし、outlook expressの送信済みトレイにアクセスするないし
dbxファイルの読む方法をご存知の方がいましたら教えてください。
よろしくお願いします。
0107100
2005/06/06(月) 22:09:21それが今やってる方法です。
でも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」の例のように出す方法があれば
利用したいと思ってここに来ました。
0108デフォルトの名無しさん
2005/06/07(火) 00:46:14VB は(VBAと比較して)色々できる分、色々自分で書かなくちゃいけない。
>>107
その例えはオカシイ。
0109デフォルトの名無しさん
2005/06/07(火) 01:04:38( ゚д゚)ポカーン..........m9(^Д^)プギャー
0110デフォルトの名無しさん
2005/06/07(火) 03:06:36│Form1 │ │Form1 │
├────────────────┤ ├────────────────┤
│┏━━━━━━━┳━┓ │ │┏━━━━━━━┳━┓ │
│┃┌─────┐┃▲┃ │→│┃└─────┘┃▲┃ │
│┃│TextBox1 ..│┃■┃ │ │┃┌─────┐┃| .|┃ │
│┃└─────┘┃■┃ │ │┃│TextBox4 ..│┃| .|┃ │
│┃┌─────┐┃■┃ │ │┃└─────┘┃■┃ │
│┃│TextBox2 ..│┃| .|┃ │ │┃┌─────┐┃■┃ │
│┃└─────┘┃| .|┃ │ │┃│TextBox5 ..│┃■┃ │
│┃┌─────┐┃▼┃ │←│┃└─────┘┃▼┃ │
│┗━━━━━━━┻━┛ │ │┗━━━━━━━┻━┛ │
└────────────────┘ └────────────────┘
┃│TextBox3 ..│┃←この部分は表示しない
┃└─────┘┃
┃┌─────┐┃
┃│TextBox4 ..│┃
┃└─────┘┃
┗━━━━━━━┛
上図の太枠の部分のようにコントロールを配置したいのですが、どうしたら良いでしょうか?
▲■はスクロールバーです。TextBox1〜4の部分は任意のコントロールを配置出来て、
スクロールバー付きの小窓で任意の場所を表示出来るようにしたいです。
Formの右の空いてる部分にも他のコントロールを配置します。
実際にTextBoxしか割り当てないなら代わりとなるものもあるのですが、
任意のコントロールを割り当てられるものがわかりません。
MDIとも違うし、スクロールバーの値に対してシコシコと個別にコントロールの位置や表示を変えるのもイヤだし。
どうすればいいのかわかる方、ご教示お願いします。WinXP VB6SP6です。
0111デフォルトの名無しさん
2005/06/07(火) 06:50:44適当に作るなら、たとえばピクチャボックスの「中に」ピクチャボックスを作り、
その「中に」テキストボックスを作ってサイズと表示位置を調整してやればできなくもない。
そういうコントロール作っても可能だし。
0112デフォルトの名無しさん
2005/06/07(火) 06:53:560113デフォルトの名無しさん
2005/06/07(火) 07:26:53名前の先頭が押したキーに一致する位置に選択が移ってしまいますが、
コレを無効にするにはどうすれば良いですか?
たとえば「abc, def, ghi」という3項目のリストがあって、リストボックスにフォーカスがある時に
Dキーを押すとdefに選択が移ってしまうのを防ぎたいのです。
選択が変わってしまってから戻す方法は分かるのですが、
選択が変わらない方法がわかりません。
VB6SP5です。宜しく御願いします。
0114デフォルトの名無しさん
2005/06/07(火) 07:52:02Lockedでいいんじゃないの?
0115デフォルトの名無しさん
2005/06/07(火) 08:00:03え? 違うの? よくわからん。orz
0116デフォルトの名無しさん
2005/06/07(火) 08:12:25Lockedプロパティはテキストボックスにはあるけど
リストボックスには無いようですが。
コードで無理矢理Locked = Trueを指定してみたけどエラー出るし。
0117デフォルトの名無しさん
2005/06/07(火) 08:25:540118デフォルトの名無しさん
2005/06/07(火) 08:26:030119デフォルトの名無しさん
2005/06/07(火) 08:29:55ローテクだけど、各データの前に半角スペース入れるとか。
左にくっつきすぎるのでいつも入れてる。
0120デフォルトの名無しさん
2005/06/07(火) 09:04:12出来ました。
ありがとうございます。
>>119
こちらもありがとうございます。
今回は>>118さんの方法を使わせていただきますが
>>119さんの方法も覚えておきます。
0121デフォルトの名無しさん
2005/06/07(火) 09:47:54よくねーだろ
0122デフォルトの名無しさん
2005/06/07(火) 10:12:000123デフォルトの名無しさん
2005/06/07(火) 11:46:580124デフォルトの名無しさん
2005/06/07(火) 12:25:11>>111でいいと思うけど、何がよくねーの?
0125デフォルトの名無しさん
2005/06/07(火) 14:06:18だな。
>>111だと標準じゃスクロール操作は出来ないだろ。
質問者がイヤだと言ってる"スクロールバーの値に対してシコシコと"やれば出来なくもないけど。
0126デフォルトの名無しさん
2005/06/07(火) 17:46:150127デフォルトの名無しさん
2005/06/07(火) 17:54:080128デフォルトの名無しさん
2005/06/07(火) 20:43:46ピクチャーボックスの中のピクチャーボックスのtopをいじるだけで全部動くけど?
0129デフォルトの名無しさん
2005/06/07(火) 20:52:25DataRepeaterコントロールじゃアカンの?
詳細はMSDNを「データ リピータ (DataRepeater) コントロールの使い方」で検索ね。
0130デフォルトの名無しさん
2005/06/07(火) 20:54:40なんでDataRepeater???
0131デフォルトの名無しさん
2005/06/07(火) 21:07:52たぶんそれだとスクロールバーをドラッグしたとき、移動中はスクロールせず、
バーポインタを放した時だけ移動するでしょ。
そういうのがヤなんじゃないの?
0132デフォルトの名無しさん
2005/06/07(火) 21:27:00どもっす!
0133110
2005/06/07(火) 21:29:13自分なりに考えてフレームの中にフレームを使って動かす方法とかもやったけど
>>131さんが書いてるようにバードラッグでの移動は出来てもスクロールが出来ないので避けたいです。
>>123,>>125
そうですか。。。
とにかくリストボックスに表示しきれない数のデータを入れたときのような操作感で
中にコントロールを任意配置できるものを探してます。
>>129
アカンです。
>>110でも書いたように>>110のは例で、実際に同じコントロールを並べるのではなく、
自由にコントロールを配置出来ないと困るので。
規則的に並べるだけならDataRepeaterコントロールでも良さそうですが。
0134デフォルトの名無しさん
2005/06/07(火) 21:35:25すいません、質問です
この画像のように文字に影をつけることってできますか?
ゲームボーイっぽい画面にしたいんですが・・
細かい調節に苦しんでるので最初からこういうことができると楽だと思ったんですが、できないでしょうか?
無理なら白文字のテキストボックスと黒文字のを二つ重ねて表現しようと思ってます。
0135デフォルトの名無しさん
2005/06/07(火) 21:43:24TextOutでもやれるけど、ラベル使ったほうが楽かもしれんね。
あとはStrokePathとか。
これは効果が少し違うけど憶えとくと幅が広がるかな。
0136デフォルトの名無しさん
2005/06/07(火) 21:46:29ありがとうございました!
早速やってきます
0137デフォルトの名無しさん
2005/06/07(火) 22:02:30とりあえずアプリのカレントディレクトリを開きたいのですが
ChDrive App.Path '又は(Left(App.Path,1))
ChDir App.Path
CommonDialog1.ShowOpen
ではダメでした。
0138デフォルトの名無しさん
2005/06/07(火) 22:05:080139デフォルトの名無しさん
2005/06/07(火) 22:16:52(*^ー゚)b サンキュ!!
0140デフォルトの名無しさん
2005/06/07(火) 22:20:55スクロールが出来ないという意味がわからないのだが。
サブクラス化をしたくないという事?
0141デフォルトの名無しさん
2005/06/07(火) 22:25:40あ、俺も黙ってられなかった…
0142140
2005/06/07(火) 22:34:56014386
2005/06/07(火) 22:39:150144デフォルトの名無しさん
2005/06/07(火) 22:41:381文字づつ解析すればいいじゃないか
014586
2005/06/07(火) 22:59:53いや、前にも書いたようにそれが嫌だからここに来てる次第でして。
文字列的に解析処理する方法は>>93-96で書いたように一応ヘタレなりにやってみたのですが、
動作は問題なくてもこれを毎回使うのもウザいのでwshのように扱える方法を探してます。
0146デフォルトの名無しさん
2005/06/07(火) 23:38:00>毎回使うのもウザいので
DLL化すればいいのでは?取得したCommand関数の内容を渡すだけですし…
014786
2005/06/07(火) 23:55:24VB初めて3日の自分にはDLL化する方法なんて分かりませんが、
程々に催促しながらもうしばらく待って、良い方法を知ってる方が居ないようなら
コードを煮詰めて、DLLする方向でやってみます。
0148デフォルトの名無しさん
2005/06/07(火) 23:58:34標準モジュールにする事の、何が気に入らないんだ
0149デフォルトの名無しさん
2005/06/08(水) 00:00:13Scrollイベントにも同じコードを書けばよかったような。
0150デフォルトの名無しさん
2005/06/08(水) 00:01:40あ、俺も黙ってられなかった…
0151デフォルトの名無しさん
2005/06/08(水) 00:15:19ちょっと前にでた指数計算の例と同じだよ
簡単に出来る方法があるならわざわざ面倒な処理はしたくないってことだろうな
0152デフォルトの名無しさん
2005/06/08(水) 00:22:29中身は見てないが、93-96のソースが存在していて、その上で
別の方法を探すほうが面倒だと思うのは俺だけか
0153デフォルトの名無しさん
2005/06/08(水) 00:24:59DoEvents かませば移動中もスクロールするけど?
0154153
2005/06/08(水) 00:31:46*_Change() と *_Scroll() の両方に書く必要があるね。
0155デフォルトの名無しさん
2005/06/08(水) 00:37:49>93-96は奴が自分で書いたものでしょ
俺はコマンドライン操作をするアプリは、VBは起動中のコマンドライン操作が面倒という理由で
他言語使ってるのでVBのコマンドライン周りはよくわからんが
0156デフォルトの名無しさん
2005/06/08(水) 00:41:24だからさー
自分で作ったコードがあって、何でほかの方法探すという面倒な事しなきゃならないのさ
0157デフォルトの名無しさん
2005/06/08(水) 00:45:02VBコードは書けても日本語読めない方ですか?
0158デフォルトの名無しさん
2005/06/08(水) 00:50:10日本語は読めるよ
理由を説明してくれないか
0159デフォルトの名無しさん
2005/06/08(水) 01:08:27この部分が理解できてないからじゃねーの?
たとえばVB上でWindows Script Hostの
Arguments、Unnamed、Namedプロパティ、Existsメソッドが使えたとしたら、
dll化したとしても標準モジュールに書いたとしても、
93-96を使うのは無駄なことに違いないいから。
0160デフォルトの名無しさん
2005/06/08(水) 01:19:33そんなもん、自分で作るよりかバグも少ないことが期待できるし、
一般的な方法があるのならそれにあわせたほうがいいし。
皆が共通のコードを書いているのに一人だけ変なの使っていたら、
この関数何?なんでこんなの使っているの?って話になる。
0161デフォルトの名無しさん
2005/06/08(水) 10:24:48あ、俺も黙ってられなかった…
0162デフォルトの名無しさん
2005/06/08(水) 12:48:42pictureboxの画像の上にラベルで文字を重ねて一つの画像を作ったのですが、
そのpictureboxをSavePictureで保存してもラベルの文字も画像と判断してくれません
このpictureboxの画像とラベルを重ねたものを画像として保存するにはどうすればいいですか?
一応windowsキー+プリントスクリーン→ペイントに貼り付けで保存はできるんですが・・
できればVB一つで保存できる方法があったら知りたいです。
0163デフォルトの名無しさん
2005/06/08(水) 13:11:32解像度が荒くていいならFormのハードコピーを取るサンプルみればできるっしょ。
そこらじゅうにサンプルがありますよ。
そうじゃなく綺麗に取りたいなら、デバイスコンテキスト周りとかをきちんと学習すればできるようになる。
0164デフォルトの名無しさん
2005/06/08(水) 13:13:17なるほど!ありがとうございました
0165デフォルトの名無しさん
2005/06/08(水) 13:17:33PictureBoxにラベルの文字をPrintすればいいだけのような。
0166デフォルトの名無しさん
2005/06/08(水) 14:09:17オレが使っている標準モジュールを晒しておく。
今のところコレを使っていて不都合は無い。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/517.lzh
0167デフォルトの名無しさん
2005/06/08(水) 15:49:06VB6.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
よろしく、お願いします。
0168162
2005/06/08(水) 17:03:57まさかこんなところで騙りが発生するとはorz
>>163
今日一日色々試したけどだめでした・・
フォームごと印刷したりPCごと落ちたりと散々な結果に
デバイスコンテキスト勉強して見ます
>>165
分かりませんでした・・
0169デフォルトの名無しさん
2005/06/08(水) 18:22:31と同じ意味にあたるプロパティは何でしょうか?
マウスではなくスペースキーを押したときにリストを変更したいです。
よろしくお願いします。
0170162
2005/06/08(水) 21:05:39できました。が、好きな位置にプリントできずに困っています
ttp://picopico.dip.jp/ragnarok/data/4/1118111052876.jpg
こういうのを作っていまして、背景はbmp、文字はラベルで貼り付け、中央右のキャラクターは画像読み込みで処理しているんです
あとはこれを一括で保存・ファイルに出力できれば完成なのですが・・探しても>>165さんのやり方しか見つからないです
0171デフォルトの名無しさん
2005/06/08(水) 22:16:090172デフォルトの名無しさん
2005/06/09(木) 02:30:39For Count = 1 to 10
LabelX.Caption = Count
Next Count
このように LabelXのところをカウンタ変数に合わせて
Label1 ~ Label10 にしたいのですが LabelX のことろ
はどうかけばいいのでしょうか?
0173デフォルトの名無しさん
2005/06/09(木) 02:39:33コントロール配列にしておくか、配列を確保しておきSetをしておいて
LabelA(x).Caption =
のように。
0175デフォルトの名無しさん
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
のような感じでソートしたいのです。
よろしく御願いします。
0176デフォルトの名無しさん
2005/06/09(木) 07:50:12一次元配列のソートと同じだと思うけど、どこで詰まってるのかな。
0177デフォルトの名無しさん
2005/06/09(木) 08:47:30情報があいまいすぎでしたね。スミマセン。
実際の配列要素数は数十万*15〜20で、型はString、
要素は英字+記号、数字+記号、英数、数字のどれかです。
自分が今まで一次元配列のソートに使っていたアルゴリズムを流用すると
ソートのキーとなる要素に重複値があるとうまくソートされないんです。
他にはMSHFlexGridに書き出してソートしてまた変数に格納する方法や
それよりも更に時間が掛かるような方法しか思いつかないし・・・
何か良い方法はありませんか?
0178デフォルトの名無しさん
2005/06/09(木) 09:01:14自前のコードをデバッグするのは?
もし処理速度が問題なら、DLLを利用するとか。
VectorにあったDLLは最大10万件だったけど。
0179デフォルトの名無しさん
2005/06/09(木) 09:53:46>>数十万*15〜20
ってどういう事?ファイルがそれだけあるって事かな?
結局ソート対象は数十万で良いのかな?
0180デフォルトの名無しさん
2005/06/09(木) 10:08:530181167
2005/06/09(木) 10:24:390182デフォルトの名無しさん
2005/06/09(木) 10:47:06ACCESSのmdbより、データを検索する処理があるのですが、(ループの内部)
高速化のためにキャッシュ処理を使うように変更することになりました。
この処理は、端末の利用者がデータ検索をする時に使用されるものですが、
端末利用者の検索条件設定(年齢層[子供、大人、老人等]や、職業[会社員、自営業等])で
検索対象となるテーブルが可変します。
また、ループ処理で、同じレコードが再ヒットする可能性は極めて低いです。
なので、最初の検索時に対象のテーブルのデータを全て構造体配列に持って、
2度目以降の検索では、この配列を見るようにしようと考えていますが、
ツマラン処理の割には手間が掛かりそうです。(配列からの検索処理の記述とか)
何か他に簡単な方法はないものでしょうか。
漠然とした回答でも結構ですので、何かアイデアがあればお願いします・・・。
なお、使用しているVBのバージョンは6.0です。よろしくお願いします。
0183デフォルトの名無しさん
2005/06/09(木) 10:50:09言っている事が判らない。
正式なコントロール名を使用して説明してくれ。
0184デフォルトの名無しさん
2005/06/09(木) 11:02:09すいません、質問がおかしかったですね。
使用コントロールは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プ
ロパティが見つけられずに困っています。
0185デフォルトの名無しさん
2005/06/09(木) 11:24:54市販されてるVB用ライブラリのヤツですか? >>SPREAD
With Spread
.Row = 2' セルを設定
.Col = 2
i = .TypeComboBoxCount
.TypeComboBoxIndex = 1
s = .TypeComboBoxString
End With
こんな感じで、取得したり設定したりする事になると思います。
ちなみに、VB上でF2キー押してfpSpreadライブラリのヘルプ見たほうが早い気が・・・
0186デフォルトの名無しさん
2005/06/09(木) 13:28:54その前に問いたい。そのデータベースは正規化されているのか、と。
0187デフォルトの名無しさん
2005/06/09(木) 14:46:49どのように行うのでしょうか?
MSFlexGrid.CellForeColor = QBColor(**)ではアクティブ?
(先頭かクリックしたセルにデータが送られた場合)の所だ
け色が変わります。
0188デフォルトの名無しさん
2005/06/09(木) 15:28:22それは"Cell"ForeColorだから当然だろ。
カレントセルを変えるプロパティですよ。
あまり使わないから良く判らないが、そのプロパティの行バージョンを探すか、
セル1つずつを変えていって行全体を変えるか、範囲指定してセルの色を変えればいいのでは?
0189デフォルトの名無しさん
2005/06/09(木) 15:42:21すいません。
アクティブなセルを替えながら色を変更していくのか
行ごと色を指定する方法があるのか、どのようにするのか
基本がわからなくて質問してしまいました。
>>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
ありがとうございました。
0190デフォルトの名無しさん
2005/06/09(木) 15:51:06おせっかいついでに・・・。
ループしろ、関数化しろ。
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
0191デフォルトの名無しさん
2005/06/09(木) 16:22:34おせっかいThxです。
おかげですっきりまとまりました。
勉強になりました。ありがとうございました。
0192デフォルトの名無しさん
2005/06/09(木) 17:09:540193デフォルトの名無しさん
2005/06/09(木) 17:10:440194デフォルトの名無しさん
2005/06/09(木) 17:20:06レスありがとうございます。早速試してみたのですが、Index=2の時にリストの
2番目の文字列を取得したかったのですが失敗でした。ヘルプも見てみたのです
がなかなかみつからないものですね。
手法としてはTypeComboBoxIndexの値が変わった時に、Select文を使って.Text
="abcde"のようなやり方しかないのでしょうか?
0195182
2005/06/09(木) 19:14:05正規化どころか、テーブルが・・・い、いえ、なんでも・・・。
システムが歪に成長しているもので、
それにカスタム対応しようとして、方法論までが歪な物になってしまいます。
早く別の作業に移りたい・・・
0196185
2005/06/09(木) 19:27:00もしや、.TypeComboBoxIndex と .TypeComboBoxCurSel の
使い分けができていないとか・・・?
0197デフォルトの名無しさん
2005/06/09(木) 19:57:25最小限の再現コードを貼って。
0198185
2005/06/09(木) 20:25:47なんか、質問の意図を間違えたかもしれません。
↓のように設定した場合、
.Row = 1
.Col = 1
.CellType = 8
.TypeComboBoxList = "りんご" & vbTab & "ゴリラ" & vbTab & "ランボルギーニ"
.TypeComboBoxEditable = False
.TypeComboBoxCurSel = 0
取得するときは
.Row = 1
.Col = 1
.TypeComboBoxIndex = 1 '2番目
s = .TypeComboBoxString 'ゴリラ捕獲
0199デフォルトの名無しさん
2005/06/09(木) 20:44:54なるほどね。正規化とかはできそうにない状況な訳ね。ところで、ADOとかで
Filter とか Find 使うって選択肢はあり?
0200デフォルトの名無しさん
2005/06/09(木) 21:58:58取得するアプリ有るじゃないですか。
アレで使われてるターゲットを選択するポインタって、VBではどうやれば使えますか?
ドロップした位置情報(x=300、y=400とか)が取得できればいいのですが。
0201デフォルトの名無しさん
2005/06/09(木) 22:37:46マウスカーソル変えてSetCaptureするだけちゃうん?
0202デフォルトの名無しさん
2005/06/09(木) 23:14:10WindowFromPointっていうAPIがあります.
っで質問です。VBのプロジェクトに配置されました。
東京周辺でVB6.0が購入できるお店があったら教えて下さい。
0203デフォルトの名無しさん
2005/06/09(木) 23:15:47どなたか分かる方いらっしゃれば教えてください
0204デフォルトの名無しさん
2005/06/10(金) 00:08:01普通に買えると思いますが?
ttp://www.microsoft.com/japan/msdn/purchaseguide/chart/
から旧バージョンが入ってるものを選べばいいですよね:)
0205195
2005/06/10(金) 00:09:05それは可能です。
現在の検索処理は、検索条件自体は単純(1件当たりの検索は早い)なのですが、
ADOを活用したら高速化できますか? ちょっとアイデアが浮かびません・・・。
0206デフォルトの名無しさん
2005/06/10(金) 00:32:50給料の低い新米にゃちときついなぁ。願わくば Learning Edition とか
単品で安く欲しいっす。やっぱ、秋葉探索しかないですか。
>>203
変数2個使って2重ループするとよろし。
テキストの描画には、TextOut っていうAPIがある。
0207デフォルトの名無しさん
2005/06/10(金) 07:50:41業務で使うなら会社の金で買え
0208デフォルトの名無しさん
2005/06/10(金) 10:25:420209デフォルトの名無しさん
2005/06/10(金) 13:57:55Now
0210デフォルトの名無しさん
2005/06/10(金) 15:08:04馬鹿は黙っててくれませんか?
0211デフォルトの名無しさん
2005/06/10(金) 15:36:57OSの時刻と基本的にイコールだし。
0212デフォルトの名無しさん
2005/06/10(金) 15:52:33高負荷時のWin9x系で激しくズレることもある。
0213デフォルトの名無しさん
2005/06/10(金) 15:57:15そんな用途でのOS選定、言語選定を間違ってる。
0214デフォルトの名無しさん
2005/06/10(金) 16:24:39じゃあどのOSと言語使えばいいわけ?
間違ってると言うなら適切な事を知ってるんでしょ?
0215デフォルトの名無しさん
2005/06/10(金) 16:30:10どのような手順を踏めば良いのでしょうか??
0216デフォルトの名無しさん
2005/06/10(金) 16:39:070217デフォルトの名無しさん
2005/06/10(金) 16:39:38VBを窓から投げ捨てる
0218デフォルトの名無しさん
2005/06/10(金) 17:18:120219デフォルトの名無しさん
2005/06/10(金) 17:40:280220デフォルトの名無しさん
2005/06/10(金) 17:42:06どうやって?
0221デフォルトの名無しさん
2005/06/10(金) 17:44:230222デフォルトの名無しさん
2005/06/10(金) 18:22:02Windows2000 SP4+VisualBasic6.0 SP5でアプリを作成し、
InstallShieldExpress2.12でインストーラを作成して
Windows2003サーバにインストールしても
正常に動作しますか?
ドトネトに汁!という選択肢は除外でお願いします(;´Д`)ゴメンナサイ
0223222
2005/06/10(金) 18:40:51お騒がせしました。
0224デフォルトの名無しさん
2005/06/11(土) 03:39:33楽天市場で検索を行うとアドレスの欄で日本語が
あいうえお → %A4%A2%A4%A4%A4%A6%A4%A8%A4%AA
のように変換されます。
この変換をVB上で行うにはどのようにすればいいのでしょうか・・・。
仕事から帰っていままでずっと検索したのですが
なかなか情報が見当たりません。
申し訳ありませんがご教授願います。
環境
VB6.0 SP6
0225デフォルトの名無しさん
2005/06/11(土) 04:18:38URL エンコード
0226デフォルトの名無しさん
2005/06/11(土) 04:18:54Function 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
0227192
2005/06/11(土) 14:58:00Private Sub Command1_Click(Index As Integer)
If flg(Index - 10) = 1 Then
Command1(Index).Picture = Command2.Picture
flg(Index) = 1
End If
End Sub
こんな感じなのですが・・
0228デフォルトの名無しさん
2005/06/11(土) 16:15:12Dim flg(Index) As Integer
Indexが有効なのは下のプロシージャ内だけだから、flg(0)を宣言したことになる。
If flg(Index - 10) = 1 Then
Indexが0の時、宣言されてない flg(-10) を参照することになる。
0229デフォルトの名無しさん
2005/06/12(日) 00:03:22自宅でこっそり勉強しようかと思いまして。
秋葉みてきたけど、ないっすね。
CDのみで1万5千円(Professional)版なら見つけましたが。
なんとかお安くかつ合法に入手できないもんですかね。
仕方がないんで、Java資格取ってJavaのプロジェクトに配属されるよう
がんばります。
0230デフォルトの名無しさん
2005/06/12(日) 08:29:17V6.0なんか売っているわけ無いだろう。
5年以上前の製品で、とっくに発売中止になっているぜ。
今から合法的にライセンス手に入れたいなら、MSDN契約しかないな。
利用者が一人なら複数のPCにインスコできるから、会社にライセンス買ってもらって、自宅のPCにインスコしる。
0231デフォルトの名無しさん
2005/06/12(日) 08:32:25AscとHex、場合によって文字コードをJISやEUCに変換する必要があるかも。
HTTPを扱おうと思うなら、HTTPの仕様ぐらい確認する。
0232デフォルトの名無しさん
2005/06/12(日) 08:52:03もちろん決して不可能では無いからさ。
マシン語のコードをVBのソースコードに埋め込み、バッファーオーバーラン等を利用して呼び出せばよい。
Windows95/98/MEでしか動作しないけどな。
ただこの板には、そういう高度なプログラムを書けるバッカーが居ないだけ。
0233デフォルトの名無しさん
2005/06/12(日) 12:00:58ソースに埋め込んだマシン語コードを動かすのに
バッファオーバーランなんぞ使う必要もねーべw
VBの機能とAPIを工夫し、それようにマシン語コードを用意すれば
配列とかに入れたマシン語コードを普通に呼び出せるぞ。
(それをVBプログラムと言い張る勇気は俺にはないがなw)
0234デフォルトの名無しさん
2005/06/12(日) 13:18:59その根拠が理解不能。
大体なんでその「マシン語コード」とやらを実効するのに
わざわざバッファオーバーランなんぞを使う必要があるのだろう。
っていうか、VBコンパイラが吐き出すコードだって(以下略
0235デフォルトの名無しさん
2005/06/12(日) 22:01:24http://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
0236デフォルトの名無しさん
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
0237デフォルトの名無しさん
2005/06/13(月) 00:26:08意味不明。
固定フォルダでないなら、ダイアログでフォルダを選択。
これを自動でやるなら、全ドライブ検索後、選択。
0238236
2005/06/13(月) 00:27:55デスクトップ\Owner\ でOKでした。
次なんですけど、これだと、セルの(1,1)しか表示しないんですが、
全部とは言わないですが、ある程度のセルの値を表示するにはどうすればいいのでしょうか?
0239デフォルトの名無しさん
2005/06/13(月) 00:40:25でセルの(1,1)指定してるじゃないか。
0240デフォルトの名無しさん
2005/06/13(月) 01:10:280241デフォルトの名無しさん
2005/06/13(月) 01:17:48「パソコン」にもうちょっと詳しくなってから来て下さいよ>236
0242デフォルトの名無しさん
2005/06/13(月) 10:22:311
なんで 1 なの?
0243デフォルトの名無しさん
2005/06/13(月) 10:52:5012 \ 12になるから。
0244デフォルトの名無しさん
2005/06/13(月) 11:48:24エクセルの「=IMEXP("1+1i")」をVB6.0で計算する方法です。
0245デフォルトの名無しさん
2005/06/13(月) 15:23:51理解できた。ありがとう。
0246デフォルトの名無しさん
2005/06/13(月) 19:36:28いま、VB6.0からEXCELを操作するプログラムを書いているのですが、
EXCELのセルを行、列ともに大きさを変えたい場合はどのようにすれば、
よろしいですか?
.Autofitではなく、任意で大きさを変えたいのですが?
0247デフォルトの名無しさん
2005/06/13(月) 22:32:29どうもうまく行きません。中の方のfor構文を別のプロシージャにして
呼び出すようにしても駄目です。 どなたかアドバイスください。お願いします。
0248デフォルトの名無しさん
2005/06/13(月) 22:37:25すみません。自己解決しました。
0249デフォルトの名無しさん
2005/06/14(火) 06:15:33ゴリゴリ書くしかなさそう。
手抜きしたかったら、シェアウェアのDLLで。
0250デフォルトの名無しさん
2005/06/14(火) 07:29:36Excelを立ち上げ、メニューから「ツール→マクロ→新しいマクロを記録」。
後は実際にマクロで行いたい操作をExcel上からやってみろ。
Excelのマクロに関する、大抵の問題は解決するはずだ。
0251デフォルトの名無しさん
2005/06/14(火) 18:03:57ありがとうございました。
ところで、エクセルで作った帳票があるのですが。印刷時に1行目から4行目まではヘッダー
として必ず印刷するにはどのような方法がありますか?
0252デフォルトの名無しさん
2005/06/14(火) 18:09:14ページ設定、シート、印刷のタイトルとか。
0253デフォルトの名無しさん
2005/06/14(火) 18:47:58PageSetup.PrintTitleRows = "$1:$4"
250の言うことを理解できてないの?
それとも、EXCELの使い方自体を質問してる?
0255デフォルトの名無しさん
2005/06/14(火) 23:51:36「データアクセスコンポーネント(MDAC?)」
のインストール時に以下のエラーが表示されることがあります。
「path or file not found」
OSはXPSP2で、アカウントは日本語ダブルバイト文字を含んでおりません。
ですので、以下の現象ではないと考えております。
http://homepage1.nifty.com/maruyama/error01.htm
他の原因は何か考えられますでしょうか?
0256デフォルトの名無しさん
2005/06/15(水) 11:13:03サンプルコードがどこかにありませんか?
0257デフォルトの名無しさん
2005/06/15(水) 11:26:08ttp://www.grapecity.com/japan/support/database/VisualBasic_PDFCatalogs.htm
のNT Service Toolkit 1.0Jはトライアルがあると思う
昔、色々サンプルあつめたけどVCでやるほうが何も考えずに楽だった
0258256
2005/06/15(水) 11:49:11なるほど、こういうコンポーネントがあるんだね。
VB.netやVCを使えば普通に作れるんだろうけど
開発言語がVB6に限られているのがつらい。
0259デフォルトの名無しさん
2005/06/15(水) 13:19:380260デフォルトの名無しさん
2005/06/15(水) 15:21:54VBでサービスなんて出来るけど使わないほうが良い。
0261デフォルトの名無しさん
2005/06/15(水) 17:56:30したっけ?
0262デフォルトの名無しさん
2005/06/15(水) 17:58:46ただ今、グラフィッカを募集しております。
よろすく。
http://www112.sakura.ne.jp/~kaientai-project/creategame.htm
0263デフォルトの名無しさん
2005/06/15(水) 18:46:48Field オブジェクトのTypeプロパティを使うと
そのフィールドが「日付/時刻型」であることは分かるのですが、
その書式(「日付 (S)」とか「「時刻 (L)」)はどうすれば分かるでしょうか?
0264デフォルトの名無しさん
2005/06/15(水) 20:24:42fieldのpropertiesにformatとかそんな感じの名前で登録されていたような。
0265デフォルトの名無しさん
2005/06/16(木) 01:20:41<input type="image" src="/img/submit.gif" alt="はい" border="0" width="115" height="25">
</form>
IEを操作してるんですが、こういう場合、このtype="image"となってる画像ボタンをクリックするには
どういう感じで書けばいいんでしょうか?
FROMタグにもinputタグにもname属性がなくてどうやって指定していいのかさっぱりわかりません
0266デフォルトの名無しさん
2005/06/16(木) 01:21:390267デフォルトの名無しさん
2005/06/16(木) 04:42:50<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>
0268267
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
0269263
2005/06/16(木) 11:11:47レスサンクス。
ADOじゃだめだったんですけど、
DAOを使うとFieldのPropertiesにformatとして登録されてました。
…DAOで作り直しかorz
0270デフォルトの名無しさん
2005/06/16(木) 15:02:42ADOXのColumnオブジェクトTypeプロパティもだめ?
0272デフォルトの名無しさん
2005/06/16(木) 22:47:03□□□
□□□ ←みたいに9個のラベルがあってクリックすると○がついてランダムに他のラベルに×が付くという
□□□ 仕様なんですが、一度○をつけた所を何度もクリック出来たり○が入ってるところに×が入ったりしてしまうんです。
他には既に×が入ってるところに×が入ってしまう事もあってクリックしても×が表示されないこともあります。
それと勝ち負けの判定方法も分かりません。無知な僕にご指導よろしくお願いします。
0273デフォルトの名無しさん
2005/06/17(金) 00:28:37縦・横・斜めのどこか一直線が×か○になっていたら終わり
0274デフォルトの名無しさん
2005/06/17(金) 00:43:29つまり
If Label1.Caption="○" AND Label2.Caption="○" AND If label3.caption="○" _
OR Label4.Caption="○"(ry
という感じですか?他の不具合を直す方法についてもよろしくお願いします。
0275デフォルトの名無しさん
2005/06/17(金) 00:53:03>一度○をつけた所を何度もクリック出来たり○が入ってるところに×が入ったりしてしまうんです。
>他には既に×が入ってるところに×が入ってしまう事もあってクリックしても×が表示されないこともあります
原因が色々考えられるのでわからないですね。エスパーでもないんで。
デバッグは自分でやりはれ。
キャプションに○×入れてる箇所にブレークポイント入れて、正しい場所に入れているのか確認しなさい。
MSDNもインストールしなさい。
0276デフォルトの名無しさん
2005/06/17(金) 08:05:42すでに○か×があるかどうか調べないの?
0277デフォルトの名無しさん
2005/06/17(金) 09:49:32とりあえず、コントロール配列にしたほうがいいよ。
それじゃループが使えない。
0278デフォルトの名無しさん
2005/06/17(金) 19:23:20縮小印刷ができなくて困っています。
また使っているバージョンが古くて問い合わせできないので
御存知の方がいらっしゃいましたらアドバイスよろしくお願いします。
B4 横で作成した帳票がありプレビューをしています。
このプレビューを出力する時は A4 に縮小して出力したいのです。
B4->A4縮小する方法がわかりません。
よろしくお願いします。
0279デフォルトの名無しさん
2005/06/17(金) 20:51:50コントロール配列にするとクリックしたときに○が入るというのをうまく出来ないんです。
追記ですがランダムに×を入れるというのはSelect Caseを使ってます。
0280デフォルトの名無しさん
2005/06/17(金) 21:23:160281デフォルトの名無しさん
2005/06/17(金) 21:45:24そうなのかもしれません。では三目並べのゲームをVBで作る場合どういうコーディングをするのが論理的か
例えをあげて指導してくれませんか?
0282デフォルトの名無しさん
2005/06/17(金) 22:22:02升目を内部的にどう管理するか考える・・・二元配列?
画面で起るイベントに対して、升目のリアクションを列挙する・・・新規の○×、すでに置いてある
新規に置いた後のロジック=勝敗判定を考える
0283デフォルトの名無しさん
2005/06/18(土) 01:29:44その受信したメールを今度は転送しようとすると画像が崩れてしまいます。
メールの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
0284デフォルトの名無しさん
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
0285デフォルトの名無しさん
2005/06/18(土) 02:00:02配列の一部のみを開放と言う事は出来るのでしょうか?
例えば
10の要素のある配列の前半4つを開放(?)し6の要素をもつ配列に変換するという感じです
やはり5つめの要素から最後まで順にセットして良くしかないのでしょうか?
ご教授願います
0286通りすがり
2005/06/18(土) 05:01:42確かに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
0287デフォルトの名無しさん
2005/06/18(土) 06:35:40配列をそのまま使わずにリスト構造の構造体を抱える器として使う。
そうすればとりあえず部分的に開放する場合は、Redimしないでリストの付け替えでOK。
ある程度穴だらけになったら、リストの領域を別のものにコピーしなおしてきれいにする。
0288デフォルトの名無しさん
2005/06/18(土) 07:42:37画像パスにしっかり”c:\test.html”と指定しているじゃないか。
ちゃんと書いたとおり動いているし、正しいんじゃないか?
まぁ普通はインターネット上のWEBサーバーに画像を置くとか、
メールに画像を添付するとするけどな。
0289デフォルトの名無しさん
2005/06/18(土) 09:14:35メールを送る前は、src="c:\aaa.gif"のように画像をしてるんだけど
送ってOutlookで受信したときは、src="cid:〜〜"に変換されてて
そのメールを転送して送ろうとするとsrc="c:\test.html"に変換(?)
されてしまうんです。
0290デフォルトの名無しさん
2005/06/18(土) 13:59:06そんな面倒なことしなくても、素直にWin32APIのCopyMemoryを使うか、
配列のインデックスにオフセットを加える操作をラップしたクラスを作ったほうが
よほど簡単だと思う。
0291デフォルトの名無しさん
2005/06/18(土) 21:53:29OS:2000sp4
専用ワークグループを設定したMDBにDAO3.5で接続したいんだが
ワークグループの変更に失敗する。
DBEngine.SystemDB="D:\Test.mdw" ←エラーはでないが、変更されない
ためしにExcel2000のVBAで同じことをやってみたら、こっちは成功。
VBのバグなんだろうか。
誰か知ってる人いたらご教授おねがい。
0292デフォルトの名無しさん
2005/06/18(土) 22:09:56CopyMemory使っても確保されているメモリは解放されんだろ、
0293デフォルトの名無しさん
2005/06/18(土) 22:37:27また意味不明なことを。これだからVB(以下略
そんなもん、コピーした後オリジナルを抹殺するだけの話だと思うが。。
0294デフォルトの名無しさん
2005/06/18(土) 22:56:49どうしてもそれしかないって言うなら使うけど、そうじゃなければ使わない。
そもそもそういうのが必要ならVBで作るな。
0295デフォルトの名無しさん
2005/06/19(日) 00:08:19〜 keypress(KeyAscii as integer)
If KeyAscii = ☆ then
処理
end if
vbKeyReturn や vbKey1(数字)だと反応するんですが
vbKeyF1(ファンクションキー)だと反応しなくなるんですが
なぜなんでしょう...
0296デフォルトの名無しさん
2005/06/19(日) 00:14:47>>295みたいな奴ってどういう精神構造してるんだろう。
0297デフォルトの名無しさん
2005/06/19(日) 00:32:13しかし、普通の入門書みたいのだと、あまり私が作りたいと思うジャンルで実践してくれないので、
できれば「ゲームを作りながら学べるBV」みたいな入門書があると嬉しいのです。
そういう本てありますでしょうか?
プログラムは昔、MSXでベーシックを作っていたので、多少は心得があります。
0299デフォルトの名無しさん
2005/06/19(日) 00:59:01ベーシックはよく分からないんだが、
いきなりゲームを作るのは難しすぎると思うぞ
「ゲームを作りながら学べるVB」な本は基礎部分をかなり省略しているから
地味な本でも基礎をきちんと説明している本から始めたほうがいいよ
おすすめは技術評論社の「VB.NET 300の技」といった感じのタイトルの本
もしくは「VB.NET 基礎編」「応用編」「コントロール関数編」の三部セット(まずは基礎から)
俺は全部持ってたりする
逆にお勧めできないのは翔泳社や日経BPの本
0300デフォルトの名無しさん
2005/06/19(日) 01:07:56というか、いまから何もわざわざ泥舟の勉強しなくてもいい気がするんだけど。
どうでもいいけど日経BPにもいい本はあるよ。
矢沢久雄の『Visual BasicユーザーのためのWindowsプログラミング入門』なんて
かなり良書だったと思ったよ。
>>299
多少理解しにくくても、興味のあるところから行きたいのですよね・・・
でも、とりあえず、そのご紹介の本を・・・っておもったらVBじゃないのか(´・ω・`)
>>300
すいません、泥船ってなんのことでしょうか?
0302デフォルトの名無しさん
2005/06/19(日) 01:29:09え?
すいません、それはわかるんですが、泥船を勉強しなくていいというのはどういうことなんでしょうか?
0304デフォルトの名無しさん
2005/06/19(日) 01:48:29狸さんの乗った泥舟、結局どうなった?
沈んだ。つまりそういうこと。
ほんとはわかってる癖にw
なるほど・・・いちいち解説すいません。
ただ、VBがだいたいそういう運命なのはわかってるんですが、これが一番簡単だと聞いたので、やってみようと思っています。
0306デフォルトの名無しさん
2005/06/19(日) 02:11:05>これが一番簡単だと聞いたので、やってみようと思っています。
つ [HSP]
0307デフォルトの名無しさん
2005/06/19(日) 03:01:19ゲーム作りたいだけってならそっちのが簡単で良さそうだね
0308デフォルトの名無しさん
2005/06/19(日) 04:42:15終了キーが押されたら終了フラグを立て、ゲームのメインループを抜け終了処理をし、
その後にフォームをアンロードさせているのですが、アンロードされた後も
アプリケーションタスクが残ったままになってしまって困ってます。
ただ、フルスクリーン・ウィンドウモード用に二つのフォームを用意してるのですが、
ウィンドウモードのフォームではちゃんと終了されます。
「フルスクリーンモードだったら元々の解像度に戻す」という処理を終了処理に加えただけで、
他はウィンドウモードの終了処理と全く一緒なのですが、何故かタスクが残ったままに…
アンロード時にEndステートメントを挟めばちゃんと終了されるのですが、
強制終了させるのはどうにも気持ちが悪く、修正したいと思っています。
何が原因かご推測できる方、御教示を賜りたくお願い申し上げます。
(ループ抜けてないとか、単純なミスだとは思うんですが…orz)
(解像度変更関連の処理をしないでフルスクリーンフラグを立てるとどうなるか調べてみましたが、
こちらも同様にタスクが残ってしまうので、解像度関連のバグでは無いとは思います)
0309デフォルトの名無しさん
2005/06/19(日) 05:42:01他フォームをアンロードしてから、そのプロパティや変数を参照した場合、
再ロードされてしまう。
0310デフォルトの名無しさん
2005/06/19(日) 13:14:11何か表示非表示にかかわらず、フォームがロードされていると終了しない。
素直にEndステートメントを使っておけ。
Endステートメントは強制終了ではなく、きちんとフォームのアンロードや
リソースの開放などの終了処理を行ってくれる。
0311デフォルトの名無しさん
2005/06/19(日) 20:29:20まま終了しちゃうので注意。
そっちに何も書かないようにすりゃいいだけだが。
0312デフォルトの名無しさん
2005/06/20(月) 12:03:05フォームのInitializeとかにDebug.Printとか入れておいて
どのタイミングでロードされているかチェックしたら?
注意
その場合に、安易にDebug.Print フォーム名.Caption とかしないこと。
Debug.Prntでフォームがロードされてしまいややこしいことになりかねない。
Debug.Print "Form名_Init"のように単純な文字列にしておく方が良い。
>>310
全然素直じゃない。バグがあって終了しないのだから、
バグがあっても終了するようにするのではなく、
バグの方を終了すべき。
Endステートメントは強制終了であり、>>311さんが言っているように、
UnloadやTerminateなどの終了処理をしない。
0313デフォルトの名無しさん
2005/06/20(月) 12:07:10> また意味不明なことを。これだからVB(以下略
> そんなもん、コピーした後オリジナルを抹殺するだけの話だと思うが。。
意味不明なのはお前の方だな。
オリジナルを抹殺とかなにいってんの?w
CopyMemoryをしても、配列のメモリは解放されません。
0314sage
2005/06/20(月) 18:11:55教えておくれ。
各nodeごとにdatabase読みに行ってその判断でチェック不可にしたい。
0315デフォルトの名無しさん
2005/06/20(月) 19:14:03何が言いたいの?
まあ、多分馬鹿なだけだと思うけど、
何か反論なりいいたいことがあるのならその主張を明確にしてくれ。
一応書いておくと、>>285のような処理を純粋にVBの機能だけを使って書いても、
つまり順次コピーの後Redimするようなコードを書いた場合でも、内部的には
「オリジナルの配列」は抹殺されてるんだよ。
0317308
2005/06/20(月) 19:40:14ご返答ありがとうございました。ENDステートメントも便利だぞ、
ということのようで、とりあえずの応急処置として使用させて頂きました。
…と、>>312氏の助言の通りDebug.Printでひたすら確認してみると、
どうやらフルスクリーン処理の方だけSub Mainを呼んだ後に
Form_Loadを二回していることがわかり、原因を探ってみたところ、
Form.Showの前にCreateCompatibleDCのハンドルにピクチャーボックスのハンドルを指定していた為、
Formが二回Loadされてしまっていた、ということっぽいです。
というわけで無事修正と相成りました。ご助言ありがとうございましたー
0318デフォルトの名無しさん
2005/06/20(月) 21:02:370319デフォルトの名無しさん
2005/06/20(月) 22:07:47でコミット後にまたINSERT文を投げてコミット。
上記のようにトランザクションが複数にまたがる場合、
lock tableってどういう風にかけてあげたら良いのでしょうか?
素直に2回かけるしかないのでしょうか?
0320デフォルトの名無しさん
2005/06/20(月) 22:15:190321デフォルトの名無しさん
2005/06/20(月) 22:23:00はいorいいえが出た時にはいを押すようにユーザに伝えておく
0322デフォルトの名無しさん
2005/06/20(月) 22:47:20自動で押してしまいたいんですが・・・
0323デフォルトの名無しさん
2005/06/20(月) 22:55:01DBきちんと勉強しろよ。
そんなの他人に聞く奴がロック使うなんて早い。
0324デフォルトの名無しさん
2005/06/21(火) 08:32:58自動で押させるぐらいなら、表示するな(させるな)。
ちなみに、自動でなんて心配しなくても、大抵のユーザーは半自動でクリックするから大丈夫(ぉ
0325デフォルトの名無しさん
2005/06/21(火) 10:15:25どうやってIEの操作ダイアログを表示させないようにできるんですか?w
0326デフォルトの名無しさん
2005/06/21(火) 10:46:06普通に
0327デフォルトの名無しさん
2005/06/21(火) 10:52:06mdbからDataGridに読み込ませて更にその読み込ませた内容でグラフを作りたいのですが、
DataGridで読み込ませた内容をどうやったら取得できるかわかりません。
初めはMSFlexGridで作ってグラフ作成にまでこじつけたのですが、
その場合MSFlexGridにtextでしか読み込めず、mdbで読み込ますことができなかった上
直接Grid上に書き込めないのでDataGridに切り替えました。
具体的には2×10くらいの表で上の行をX軸、下の行をY軸にしたグラフにしたいので
列ごとの情報を取得して点を割り出して原点とそれをLineで結ぶ、ということを考えてます。
0328デフォルトの名無しさん
2005/06/21(火) 11:14:16>>279は解決した?これが解決しないと先に進めないよ。
それと、質問はもう少し具体的に。
0329デフォルトの名無しさん
2005/06/21(火) 11:27:01中に重複があった場合それを取り除いて重複の無い配列にする方法ありますか?
0330デフォルトの名無しさん
2005/06/21(火) 11:31:39そういうプログラムを書けばいいじゃないか
0331デフォルトの名無しさん
2005/06/21(火) 11:37:38そうなんですけど
初めに全部入れておいて後からチェックしたいんですよ。
でもその方法がわからないんですよね。
0332せにょりーた
2005/06/21(火) 11:42:16内側の " を消す方法ってありますか??
0333デフォルトの名無しさん
2005/06/21(火) 12:20:12逐次探索、2分探索、ハッシュ等。
0334デフォルトの名無しさん
2005/06/21(火) 12:30:28何がわからないのか、わからない。
グラフを描いたことがあれば、迷うことはないはず。
グラフィック自体が初めてなら、少しずつ習得するしかない。
0335デフォルトの名無しさん
2005/06/21(火) 15:06:34> 普通に
ワロタ。
やっぱり答えられなかったか。
お前は要らない。消えろ。死ね。
0336デフォルトの名無しさん
2005/06/21(火) 19:28:410337デフォルトの名無しさん
2005/06/21(火) 19:48:53やりたいのかすら書いてないからね。
本当に「普通に」ダイアログを出さなく出来る物もあれば、
どうやってもダイアログを出してユーザーに判断させる必要があるものもある。
セキュリティー上、確認が必要な部分まで外部プログラムで制御したら
それはウィルスの類となんら変わらないからね。
きっと>>320もそういうヤバめな行為をやろうとしてるんでしょ
でなければ「はいorいいえが出た時にはいを押すようにユーザに伝えておく」で事足りる。
0338デフォルトの名無しさん
2005/06/21(火) 20:00:03自分で、はいorいいえを自動でやるプログラムが欲しいだけだろ。
明らかに、はいを押すと分かっている局面でいちいち押すのが
面倒だと思わないのか?
0339デフォルトの名無しさん
2005/06/21(火) 20:01:58> やりたいのかすら書いてないからね。
それなのに普通にできると、適当な答えを言う奴がいる。
どのダイアログかわからんのに、なぜできると答えるのか。
0340デフォルトの名無しさん
2005/06/21(火) 21:11:31ある変数aがDate型として、aがある日付範囲やある時刻範囲に
あることを調べたいのですが、どのようにすればよいでしょうか。
例えば
・日付が2005/6/1〜2005/6/30かどうか調べる
・時刻が18:00以降かどうか調べる
といったことです。
よろしくお願いします。
0341デフォルトの名無しさん
2005/06/21(火) 22:23:49formatとifでいいんじゃないの?
0342デフォルトの名無しさん
2005/06/21(火) 22:25:14OS:WIN2000(SP?)
言語:VB6
MAPI32.DLLを使用してアプリを作成していますが、
Outlook2000が実行されている環境下で起動すると
MAPISP23.EXEが複数起動してる時があります・・・。
こうなるとOUTLOOKは応答なし、作成アプリは、MAPIのログオンエラーとなってしまいます。
MAPISP32.EXEが複数起動してしまうタイミングとか
知ってる方がいましたらよろしくお願いします。
0343デフォルトの名無しさん
2005/06/21(火) 22:50:47MAPIを使っているのが、そもそもの間違いなきがする。
MAPIってインストールされているMUAの種類やバージョンに、設定によって
挙動が変わるけど、本当にMAPI使いたいの?
Outlook2Kと限定できるなら、VBA(と言うかOLE Automation?)のほうが良くない?
0344デフォルトの名無しさん
2005/06/21(火) 23:13:17レスありがとうございます。
説明が不足してましたが、ExchangeサーバとMAPI接続をするアプリでして、
MAPI接続が必須となっています。
Outlook自体は無くても構わないのですが、他で使用してるらしく・・・。
やっぱりDLLバージョンやOutlook設定に問題ありですかね。
それとも複数から同時にMAPI接続するのが悪いのでしょうか。
0345320
2005/06/22(水) 11:57:00ウイルスとか悪いものに使うわけじゃありません
基本的にはいろんなページを巡回させたいんですが
時々意味のないようなダイアログを出してくるサイトがあって
そういうところにぶつかると処理がストップするんですよ
なので自動的にはいをクリックしてくれないかと思ってるわけです
0346デフォルトの名無しさん
2005/06/22(水) 12:04:10俺は以前同じような奴でFindWindowやその周辺のAPIで
ウインドウを見つけてIDやタイトルなどから
判断し自動クリックするツールを作ったよ。
上の方で普通にできるとか書いている奴がいるが、
ウソもしくはただの無知なので相手にしないこと。
0347デフォルトの名無しさん
2005/06/22(水) 12:06:52おせっかい野郎も無視して良い。
そんなことは最初っから分かって言ってる訳でしょ?
0348320
2005/06/22(水) 14:00:43知識が浅くてどう書いていいのかさっぱりわからないので
とりあえず判別などは結構ですのでダイアログが出たら常にはいをクリックするという処理を
一番シンプルなもので教えていただければと思います
0349デフォルトの名無しさん
2005/06/22(水) 16:24:35インターネットや本を一通り調べたのですが見つけることが出来なかったので
どなたか是非ご教授おねがいします。
OS:XP
言語:VB6
キーコード入力の検出をしたいのですが、入力の検出とそのコードの認識は
KeyDownイベントで出来ているのですが、他プログラムを選択しているときは
そのキー入力を認識できません。
具体的に言えばこのプログラムの実行中に電卓を起動して電卓の入力ログを
残したい時に使うものです。
使用するイベントや、プログラム、参考になるサイト、VB6では無理など一部でもいいので
意見をお願いします。
使用目的はあくまで自分の記録用です・・。
0350デフォルトの名無しさん
2005/06/22(水) 16:34:11グローバルフックなどを使うが、VBだけでは無理
0351デフォルトの名無しさん
2005/06/22(水) 17:07:37インストーラーによっては(DLL等)を上書きしてしまう問題があるとか書いてあったよう
な気がするのですが。(&その他諸々の長所短所)
0352デフォルトの名無しさん
2005/06/22(水) 17:16:06自分用の記録の残し方
1.ちらしの裏
2.自分で電卓作る
0353デフォルトの名無しさん
2005/06/22(水) 17:23:02ttp://dobon.net/vb/installer/index.html
こんなとこか?
0355デフォルトの名無しさん
2005/06/22(水) 18:04:580356デフォルトの名無しさん
2005/06/22(水) 19:29:04Programming The Tic Tac Toe Game
ttp://visualbasic.about.com/od/usingvbnet/l/aa093002a.htm
0357デフォルトの名無しさん
2005/06/22(水) 19:30:19問題を小分けにして解決しようなんて頭は無いんだね
0358デフォルトの名無しさん
2005/06/22(水) 22:30:15キーロガーを使えばいいんじゃないの?
0360デフォルトの名無しさん
2005/06/23(木) 00:43:05ログを録るだけならDirectInputでいけるんじゃないかな。
VB DirectInputで検索してみ。
0361デフォルトの名無しさん
2005/06/23(木) 06:55:40中国語フォント(UTF-8)で書かれた文字列が記入されているファイルを読み込んで
別ファイル(UTF-8)に追記したいのですが、特定の文字が文字化けしてしまいます。
文字化けをせずに追記する方法を知りたいのですがどうしたらよいでしょうか?
なお、ファイルはバイナリモードで開いてInputBで読み込み、Printで書き込んでいます。
0362デフォルトの名無しさん
2005/06/23(木) 07:23:25正確には、VB6.0でもActiveX.DLLを作れば出来なくはないが、到底お勧めできない。
0363デフォルトの名無しさん
2005/06/23(木) 07:28:00何でズバリと回答が付かないのか、まだ気づかないのか?
お前の言うダイアログとは何のことだ?
HTMLウィンドウをモーダル表示している状態のことか?
JavaScriptからAlertやMessageBoxで表示しているメッセージのことか?
ActiveXやPluginダウンロード時に表示されるセキュリティ警告の事か?
どれのことを言っているのかによって実現方法や、実現のための難易度は大きく異なる。
>一番シンプルなもので教えていただければと思います
SendKeys {ENTER}
0364デフォルトの名無しさん
2005/06/23(木) 08:17:26回答はとっくについているように傍目の俺には思えるけど。。
まあ、君の書いている内容を読む限り、何もわかってない奴がなに言ってんの、
としか思えん。
しかしどうして口調が偉そうな奴は例外なく無能なんだろう。。
まあ自分の無能に気がついてない幸せモードだからだろうけど。
0365デフォルトの名無しさん
2005/06/23(木) 08:44:28Stringに読み込んでるというオチは無いだろうな
0366デフォルトの名無しさん
2005/06/23(木) 10:50:35Private 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を
送ってしまいます。なぜでしょうか?
0367デフォルトの名無しさん
2005/06/23(木) 11:01:20まったく同じ(だろう)フォームを作って動かしてみたが、そんな事はなかったよ。
WindowsXP / VB6.0(SP5)
後、WM_CHAR は General で Const宣言した方が良い。
Private Const WM_CHAR As Long = &H102
0368デフォルトの名無しさん
2005/06/23(木) 11:13:15同じ環境なんですけどねー
0369デフォルトの名無しさん
2005/06/23(木) 11:25:282.受けた側が本当に複数受けているのか、Spy++で見てみる。
0370デフォルトの名無しさん
2005/06/23(木) 11:31:590371みゆき
2005/06/23(木) 11:32:396,7行で作れるようなやつ教えてください。自分が作るとグダグダ長くなるんですけど
誰か教えてくれますか?ちなみにVerは5.01です。私自身初心者なんで
ぜんぜん分からないんです。
0372デフォルトの名無しさん
2005/06/23(木) 11:36:210373361
2005/06/23(木) 15:27:44やはりbyte()を使用して書き込まないとだめですかね・・・?
print #1 buf()
こんな感じにしないとだめなんですね。
どうしてStringに読み込んではいけないのでしょうか・・・?
いまいちわかっていないのでご教授ください。
0374デフォルトの名無しさん
2005/06/23(木) 15:53:34VB6でUNICODEは使えないから。
0375デフォルトの名無しさん
2005/06/23(木) 15:56:53VBの内部コードはUCS-2だから、
UTF-8 ⇒ UCS-2 ⇒ UTF-8 の過程で一部が化ける。
0377デフォルトの名無しさん
2005/06/23(木) 17:01:02具体的にどの辺から手を加えればいいのでしょうか?
0378デフォルトの名無しさん
2005/06/23(木) 17:09:380379デフォルトの名無しさん
2005/06/23(木) 17:49:291.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 & "のダメージ!」が出てきてしまうんですが、
処理と処理の間に間隔を入れるのはどうやってやるのですか?
いろいろサイトをまわってみたのですが、見つからなくて・・・。
0380デフォルトの名無しさん
2005/06/23(木) 17:53:04いいかげんでいいならSleepでも使う
ほんとにゲーム作りたいなら本でも買ってきたほうがいい
0381デフォルトの名無しさん
2005/06/23(木) 20:26:57どうすればよいのでしょうか。
vbCrLfではダメでした。
よろしくお願いします。
0382デフォルトの名無しさん
2005/06/23(木) 21:06:54ここのAPIを使用してツールチップコントロールを自作する
に、改行してるツールチップがある。
APIを使わないと駄目みたい。
ttp://www.mitene.or.jp/~sugisita/vb6_cmctl.html
0383デフォルトの名無しさん
2005/06/23(木) 21:47:53APIを使わなくてもできる方法は間違いなくあるのですが、
その方法を忘れてしまったのです。
vbCrLf を別の書き方で書くのですが、うーん、思い出せません。
0384デフォルトの名無しさん
2005/06/24(金) 09:51:33セル一つ一つに適当な数字が入っていたとき
この中から最大値と最小値のデータを取得したのですがどうすればよいでしょうか?
0385デフォルトの名無しさん
2005/06/24(金) 09:59:55データを入れる時に最小と最大を記憶しておけばいいじゃないか
0386デフォルトの名無しさん
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
0387デフォルトの名無しさん
2005/06/27(月) 14:54:04話はそれからだ。というかそれで終わる。
0388デフォルトの名無しさん
2005/06/27(月) 16:24:38dim を sub mainから出して、
Text1.Text=MyValue
変数のスコープが解ってないみたいだから、その辺の勉強したほうがいいよ。
あと、コードの先頭で Option Explicit した方がいい。
0389デフォルトの名無しさん
2005/06/27(月) 19:38:24何とかラベルのコントロール配列で作れたのですが、コントロール配列にしても問題は解決しませんでしたorz
○□×
□○×
□□□
↑の様な状態で右下をクリックすると
○□×
□○×
□×○
とならなければいけないのですが
○□×
□××
□□○
となったり
○□×
□○×
□□○
↑のように×が既に入っているラベルに×が入ってしまったりしてしまうんです。
どうすればこの不具合を修正できるでしょうか?
0390デフォルトの名無しさん
2005/06/27(月) 19:40:18おい荒らしよ、ソースどこかにアップしろ
0391デフォルトの名無しさん
2005/06/27(月) 21:05:16三目並べなんてどんな初心者でも作れますがね、その質問でバグを特定できるやつは天才かエスパーだけだよ。
ソースうpしてから再度質問しなちゃい。
0392デフォルトの名無しさん
2005/06/28(火) 14:59:58レジストリのどこの位置に書き込めばいいのでしょうか・・・
今までは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を使用してレジストリに直接書き込もうとしたのですが、
自分の検索のやり方が悪いせいなのか、どこが書き込む位置なのか分からないのです・・・
0393デフォルトの名無しさん
2005/06/28(火) 15:29:06レジストリに直接書かなくてもREGSVR32というプログラムにやらせれば
いいじゃないか。batファイルでもexeでも作ってさ。
0394デフォルトの名無しさん
2005/06/28(火) 15:58:08すみません、とんでもなく寝ぼけた事を言ってましたね。
VBSから入ったもので、単にShellを使えばいいだけでした・・・
ただそれとは別に、プログラムで処理する方法も知りたいので、
RegisterTypeLib/UnRegisterTypeLib APIを使うことまでは分かったのですが、
何かレジストリに書き込むだけはなくて、複雑そうですね。
COMについて調べてみても
http://yokohama.cool.ne.jp/chokuto/urawaza/com/com.html
全く訳が分からないです・・・
0395デフォルトの名無しさん
2005/06/28(火) 16:52:02RegSvr32使えばいいんだが、プログラム内で同期処理したいというなら。。。
そのファイルをLoadLibraryして"DllRegisterServer"か"DllUnregisterServer"で
GetProcAddressしたらそれを直接実行・・・・はVBだとできないから
CreateThreadしてWaitForSingleObjectしろ。
GetExitCodeThreadで成功したかどうか分かる。おわったらCloseHandleと
FreeLibraryを忘れるな。たぶんRegSvr32も同じことをしていると思われ。
うちんとこではうまくいってるぞ。
CreateThreadしたらすぐWaitForSingleObjectしてGetExitCodeThreadと
CloseHandleしろ。余計なことはするなよ。
0396395
2005/06/28(火) 17:04:27まちがた。
CreateThreadしてWaitForSingleObjectしたら、WaitForSingleObjectの
戻りがWAIT_OBJECT_0だったら成功です。
GetExitCodeThreadしたら、そのExitCodeでExitThreadしてください。
スマソ。
0398デフォルトの名無しさん
2005/06/28(火) 19:42:37VB6ではOpenProcess()のほうがいいよ。
0399デフォルトの名無しさん
2005/06/28(火) 20:16:15CreateThreadに渡せるのは DWORD (WINAPI*)(LPVOID)の関数だから危なくない?
>>398
OpenProcessで登録できるとは思えないなぁ。
0400デフォルトの名無しさん
2005/06/28(火) 20:58:31単に○でも×でも無いところに×を入れるようにしたらいいんでないかい?
○×が入っているとかの判断が無いだけな気がするが?
0401デフォルトの名無しさん
2005/06/28(火) 21:56:17>>389を見て自分も三目並べに挑戦してみました。(>>389ではない!)
最終的には、勝ち負け引き分けまでの判定までは出来たのですが、
コードが雑で、アルゴリズムにまとまりも何もありません・・・
http://sakuratan.ddo.jp/uploader/source/date0723.zip
罵倒でも何でもいいので、アドバイスをお願いします。
できれば同じようにソースを見せて頂きたいです・・・
0402389
2005/06/28(火) 22:04:21自分のと仕組み同じなのにとっても綺麗に出来ていてホレボレしますたorz
自分の家にはVBがなくて全部学校なのでFD買って今度持ってきます。
0403デフォルトの名無しさん
2005/06/28(火) 22:08:41> コードが雑で、アルゴリズムにまとまりも何もありません・・・
駆け出しの頃はしかたないよ。
それに少しでもきれいに書こうと思うなら他人に「ソース出せ」とか言って
頼るだけじゃなくて、自分で勉強しなくちゃダメだよ。
技術的に解らない部分があるならアドバイスはするけど、
いきなり上級者と同じレベルのコード書こうなんて奢らないほうがいい。
上達の速度に差はあれど、皆時間と努力を重ねて上達していくのだから。
0404401
2005/06/28(火) 22:27:53いや、ちょっと待った!!それはおかしい!!
自分で作っておいてなんだが、相当雑だと思う。
それなりに考えて組んだつもりですが、全然まだまだかと・・・
>>403
確かにそうですね・・・もっと努力していきます。
それと技術的な面で一つ質問なんですが、複数の変数を比較する場合は
IFでネストするか、Andで区切るしかないのでしょうか・・・?
例えば3つの変数が同じか比較する場合は
If S(0) = S(1) = S(2) Then ではエラーがでるので
If S(0) = S(1) And S(1) = S(2) Then としたのですが、
これはもっと効率的なやり方はありますかね?
0405デフォルトの名無しさん
2005/06/28(火) 22:50:06それでいい
0406デフォルトの名無しさん
2005/06/28(火) 23:10:20ttp://49uper.com:8080/html/img-s/64102.lzh
0407デフォルトの名無しさん
2005/06/28(火) 23:23:52ほとんどの場合ストレート勝ち出来るな
0408406
2005/06/28(火) 23:30:33もっと歯ごたえのあるよう頑張ってみます。
0409デフォルトの名無しさん
2005/06/28(火) 23:32:12まあ読め。
0410406
2005/06/29(水) 01:17:30評価頂きありがとうございます。
今度は戦闘力うpしました。
で自分では勝てなくなりました。宜しくお願いいたします。
ttp://49uper.com:8080/html/img-s/64127.lzh
0411デフォルトの名無しさん
2005/06/29(水) 01:32:59簡単に勝てるぞ・・・
まじ端に○を置いて、真ん中の×を挟み込みようにまた○を置くと、
○ ○
×
○ ×
すぐこの形になるぞ。あともうちょい
0412407
2005/06/29(水) 01:33:21ttp://49uper.com:8080/html/img-s/64133.lzh
0413デフォルトの名無しさん
2005/06/29(水) 03:29:14CPUはランダムのみだけど機能に凝ってみたの作ったyo-
ttp://w405nm.no-ip.org/~ken/upfiles/fm20050629032202.zip
0414デフォルトの名無しさん
2005/06/29(水) 04:38:42他人の作ったプログラムを修正しようとしたのですが
Form上のオブジェクトが、変更できません。
但し、プロパティの変更による修正はできます。
なにか編集不可のロックのようなプロパティがあるのでしょうか?
0415デフォルトの名無しさん
2005/06/29(水) 05:31:38ツールバーにカギの形をした「コントロールのロック」ってボタンがないかい
なかったら、ツールバーで右クリックして「フォームエディタ」にチェック付ければ出てくる
「書式」メニューの中にもあるよ
0416デフォルトの名無しさん
2005/06/29(水) 10:49:06>複数の変数を比較する
ループって手もあるよ。
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で並べたほうが楽だし見やすいけどね。
0417デフォルトの名無しさん
2005/06/29(水) 16:09:18CPUはランダムじゃ、やはりつまらんだろ。
まあ意外性はあるかも知れんが。
ポイントは2つ。
1.最高でも9箇所の置き場所
…最高でも9箇所なんだからそれぞれに優位をどう評価するか?
2.縦3横3斜め2計8通りを走査すればいい
…8方向の評価。○がいくつあるかは判定できるだろ?
CPUに最低組み込むべき思考
全ての空きマスを走査し、
1.自分の王手があれば完成して終了。
2.敵が王手をかけていたらそこをふさぐ
さて、3目は”負けはしない”思考がある。さあどうする?
0418デフォルトの名無しさん
2005/06/29(水) 16:37:14おいおい、間の抜けた事書くな
0419デフォルトの名無しさん
2005/06/29(水) 17:15:27こういうのやったことないけど、俺も作って参戦してみよう (ry
0420デフォルトの名無しさん
2005/06/29(水) 17:16:16スマソ
0421デフォルトの名無しさん
2005/06/29(水) 17:21:360422デフォルトの名無しさん
2005/06/29(水) 17:40:52.Netなら今でもダウンロードできるだろうし。
0423デフォルトの名無しさん
2005/06/29(水) 18:55:380424デフォルトの名無しさん
2005/06/29(水) 19:03:28トライアル版と言う位置づけのものは無い。
過去に無償であったのはCCE(AcctiveXコントロールを作る専用の物)と
Embeded VisualBasic(WindowsCE用 VisualBasic)の2種類かな。
現在オープンβテスト中の、VB.NET Expressを使うと言うのも手。
0425デフォルトの名無しさん
2005/06/29(水) 19:10:11VB.NET Expressを使ってみます
ありがとうございました
0426デフォルトの名無しさん
2005/06/29(水) 19:33:23付録としてついている入門書が何冊かあったので、今でも手に入る可能性は高い。
VB6の本ってまだ流通してるからね。
0427デフォルトの名無しさん
2005/06/29(水) 19:43:27ttp://bookweb.kinokuniya.co.jp/guest/cgi-bin/wshosea.cgi?W-NIPS=9973746902
0428デフォルトの名無しさん
2005/06/29(水) 21:22:42Access2000です。
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イベントが発生してくれません。
何かよい回避方法はあるでしょうか。
0429デフォルトの名無しさん
2005/06/30(木) 00:59:070430デフォルトの名無しさん
2005/06/30(木) 01:01:40だったらレコードセットを選択したKeyかなんぞをFindかフィルタかなんかでカレントに設定してDELETEメソドで消してやって・・・・
を繰り返した後にRefleshかけてやればきれいに動かないかな?
あんまVB6のDBGridは使ったことないんで勘違いだったらスマソ
0431428
2005/06/30(木) 07:24:121回の作業で削除できるレコードは1レコードです。削除する時は1レコードづつ選択→削除です。
>>430
DeleteしたあとRefresh、試してみます。
0432デフォルトの名無しさん
2005/07/02(土) 04:54:22name="[aaa]"みたいな感じで[]が入ってるものをそのまま書くと
[]の前に強制的にスペースを入れられ、しかも取得することができずエラーが出ます
同じフォームの他のname属性は取得できてるので[]が原因だと思うのですが
どう記載すればよいでしょうか?
ちなみにhtmlの方は自サイトではないのでいじることはできません
よろしくお願いしますm(_ _)m
0433デフォルトの名無しさん
2005/07/02(土) 07:03:58ダブルコーテーションは、2つ続けて書く。
""
0434デフォルトの名無しさん
2005/07/02(土) 09:37:33えっとですね、こちらの勘違いだったらすみませんが
もしかすると質問を勘違いされたかもしれません
つまりname属性が[aaa]なのですがこれをVBのプログラム中に
記載したいのです でも入力すると [aaa]とスペースが強制的に入ってしまい
それが原因でエラーが出るのです
0435デフォルトの名無しさん
2005/07/02(土) 09:40:53objIE.document.form.[aaa].Value = password.Text
このように入力したいのですが強制的にスペースが入りこうなります
objIE.document.form. [aaa].Value = password.Text
0436デフォルトの名無しさん
2005/07/02(土) 15:37:12VB では DOM オブジェクトは直接は扱えないよ。
0437435
2005/07/02(土) 16:50:290438デフォルトの名無しさん
2005/07/02(土) 23:08:49というか、PC386よりもめちゃ遅い、理由はなに?
円周率を計算するプログラムを独自に組んで最初VBAで遣ってたけど
あまりに遅いので、VB20005βとかいうのがあったので、苦労して
移植しなおしました。しかし、遅過ぎです。何かを止めないといけないのではと
類推するのですが。
0439デフォルトの名無しさん
2005/07/02(土) 23:21:300440デフォルトの名無しさん
2005/07/02(土) 23:22:26VB 2005 Express Edition Beta2 のことか?
それなら.NETだから遅いんだろ。
それからスレ違いなんで以後はVB.NETのスレで質問するように。
0441デフォルトの名無しさん
2005/07/03(日) 06:41:31<!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
0442441たまの通りすがり
2005/07/03(日) 06:48:540443デフォルトの名無しさん
2005/07/03(日) 19:35:19賛成の方も反対の方も、このスレで自分は賛成か反対かをお書きください。
プログラム技術板に強制ID制を導入すべきか否か
http://etc4.2ch.net/test/read.cgi/vote/1118144381/
理由などの記入は別に構いません。
<<賛成>>か<<反対>>かだけ御記入頂ければ結構です。
ちなみに、当たり前ですが運営の方にIPが見えているので、1日ごとにIDが変わるからといって多重投稿しないでください。
0444デフォルトの名無しさん
2005/07/04(月) 01:36:00変数名(関数名や定数名やいろいろ)を英語で付けるのが
主流になったのは何故だが知っている人いる?
日本人なんだから、変数名くらい日本語使いたくないか?
別に半角カナの変数名でもいいと思うのだが・・・
0445デフォルトの名無しさん
2005/07/04(月) 07:29:20変数名を日本語で付けるのが主流だった時期なんてあったか?
それに、関数名や変数名で使う英語で難しいものなんて少ないだろ。
ライブラリ類が英語なのに、自分の部分だけ日本語なんて違和感あって嫌。
趣味でやってるなら止めはせんが。
0446デフォルトの名無しさん
2005/07/04(月) 10:16:37モシとかカケとか使いたい?
0447デフォルトの名無しさん
2005/07/04(月) 10:36:10純国産コンパイラなんて数えるほどしかないので、
予期しないエラーが出る可能性がある。
VBAは日本語変数が多いけど。
>>445
N88日本語BASIC(86)
0448デフォルトの名無しさん
2005/07/04(月) 11:16:37マイコン少年だったけど、88ベーシックで日本語変数なんて使わなかった。
ぴゅうたベーシックぐらいじゃないのか?日本語ネイティブ。
0449デフォルトの名無しさん
2005/07/04(月) 11:52:43業務用ソフトではけっこう多かったよ。
0450デフォルトの名無しさん
2005/07/04(月) 13:50:220451デフォルトの名無しさん
2005/07/04(月) 14:21:08プログラムをvisual basic 6.0のGUI上で実行すると「オーバーフロー」っていわれてエラーがでる
プログラムをコンパイルしてexeを作り、exeを実行するとエラーがなにもでない
C++上でデバッグしてもエラーが出ない
こんなことありえるの?プログラムをさらしたいんだけど
長くてどの部分をさらせばいいのかワカンネ('A`)
0452451
2005/07/04(月) 14:24:18エラーが出るのはC++から帰ってきた後にC++で計算させた変数をmsgboxに出力させるとエラーがでます
0453デフォルトの名無しさん
2005/07/04(月) 14:55:14○VB
・Declare文
・C++側を呼んでいる行
・エラーが出る msgbox の行
○C++
・関数のプロトタイプ
の4行ぐらい晒せるでしょ?
0454デフォルトの名無しさん
2005/07/04(月) 15:11:47デバッカはあくまでVB6.exe上での実行で、実EXEの実行と若干異なる動作をする。
で、原因は多分だがメモリー操作ミスをどっかでやってるんだよ。
でも、普通多いのは逆パターンなような。
デバッカOK、実行どっかーん。
0455デフォルトの名無しさん
2005/07/04(月) 15:35:24だったらコメント欄も英語で書きやがれよ
0456デフォルトの名無しさん
2005/07/04(月) 16:34:05本気で言ってるなら、日曜プログラマーでいてくれ。
仕事でそういうことを言う奴いたら本当に痛い。
0457デフォルトの名無しさん
2005/07/04(月) 17:56:06sain とか pai とか ensyu とか書いてあった。
C言語なのに引数使わないで全部グローバル変数で値渡してるし…
0458デフォルトの名無しさん
2005/07/04(月) 18:07:47プリフィクスはどうするんだよ?
0459デフォルトの名無しさん
2005/07/04(月) 19:17:540460デフォルトの名無しさん
2005/07/04(月) 22:01:13キハ クモハ
0461451
2005/07/04(月) 23:34:57いろいろやってみたら宣言文は問題なしでした
C++のプログラムにミスがあるようです
ポインターをどこかでαβοοη..._〆(゚▽゚*)しているようです
これのバグ探すの・・・('A`)
0462451
2005/07/05(火) 00:31:54sqrtをマイナスの数で計算してた・・・
512回回るforループの最後らへんのループでそうなってたから気がつかなかった_| ̄|○
VBのmsgboxがsqrtでマイナスがでちゃったやつを参照してないのに止まるとはなかなか(・∀・)イイ!!
0463デフォルトの名無しさん
2005/07/05(火) 01:58:23楽しい奴だな。ガンガレ!
0464デフォルトの名無しさん
2005/07/05(火) 07:00:24ある特定のページ(error.htmlとします)にたどり着いた時に
top.htmlに戻るという処理はどのようにすればよいのでしょうか?
0465デフォルトの名無しさん
2005/07/05(火) 07:17:24昔はコメントも英語で書いていたよー。
いや、単に日本語を表示できない環境だっただけだが。
0466デフォルトの名無しさん
2005/07/05(火) 12:53:44ハンドルからオブジェクトを得るにはどうしたらよいでしょう?
Form1のオブジェクトgroundのハンドルが111555Lだとして、
ground.show の代わりに
<111555>.show としたいのです。
0467ヒデ坊
2005/07/05(火) 13:31:13開発用パソコンの画面解像度は1280*1024にしているのですが、そこでデザイ
ン・開発したプログラムを、画面解像度が1024*768の動作用パソコン上で
動作させると、文字の大きさやボタン等コントロールの大きさが微妙に違い
ます。そのため、開発環境ではきっちりデザインしたつもりが、コマンドボ
タンから文字がはみ出て欠けたりします。まだ実験はしていませんが、もしか
すると画面解像度は同じでも画面サイズが違うパソコンで動作させると、デザ
インの崩れはないかもしれませんが文字の大きさが違うかもしれません。
というわけで、画面解像度や画面サイズが違うパソコンで動作させても、
開発時にデザインしたウィンドウの大きさや文字の大きさをそのまま保って
表示させるにはどのようにしたらよいのでしょうか。
0468デフォルトの名無しさん
2005/07/05(火) 14:02:00それぞれのOSとDPI設定値は同じ?
0469デフォルトの名無しさん
2005/07/05(火) 14:08:36ハンドルとは何で取得したハンドルの事ですか?
「ハンドル」と一口に言っても色々種類があるのでそれだけではアドバイスし様が在りません。
>>467
フォームのフォントプロパティウィンドウを開く→OKで閉じる→保存
これで.frmの内部でフォントが明示的に指定されたはず。
(解像度の違うPCでの動作確認はしていない)
前提としては開発環境のフォントと実行環境のフォントが一致している必要があるけど。
ScaleMode を vbTwips [ 1 - Twip ] から vbPixels [ 3 - ピクセル ] にする。
Resize イベントで配置を変更する場合は Left、Top、Width、Height ではなく、
ScaleLeft、Scale・・・ を基準にする。
考えつくのはこんなところかな?
実際に解像度の違うPCで動かす様な事がないので太鼓判は押せませんが。
0471デフォルトの名無しさん
2005/07/05(火) 14:52:49エラーをチェックしてやるしかないのでしょうか。
0472デフォルトの名無しさん
2005/07/05(火) 14:56:50諦めてAPIを使え。
つ「ShowWindow」
0473デフォルトの名無しさん
2005/07/05(火) 15:51:40あるがスレ違い(VB自体の関数にはない)
それ以前にDAOなのかADOなのかoo4oなのか、
どういうアクセス方法かを書かないと誰も答えられん。
0474デフォルトの名無しさん
2005/07/05(火) 15:59:47プログラムとかミドルウェアよりDBMSが何かが大事じゃないのか?
まあ、スレというか板違いだね、DBに行きなさい。
0475デフォルトの名無しさん
2005/07/05(火) 16:47:52なぜかアプリケーションが閉じられなくなってしまいます。
Closeメソッドは効かないのですがApplication.Exitならば終了できます。
何が原因で起きているのでしょうか?
0476デフォルトの名無しさん
2005/07/05(火) 17:10:07そもそも、コントロールをどのような手段で動的に削除してるんでしょうか?
それと、閉じるのはフォームですよね、アプリを閉じるならEndステートメントでも何でもですよ。
ついでにVB6の話か?Applicationオブジェクトって?
0478デフォルトの名無しさん
2005/07/05(火) 17:52:54整数を並べじゃ得て最大値・最小値を表示するプログラムがわかりません。
おしえてください。おねがいします。
0479デフォルトの名無しさん
2005/07/05(火) 18:50:12課題は自分で達成しなさいね。
Text1.Text = 整数 & " " Text1.Text
最大値 = Max(最大値,整数)
最小値 = Min(最小値,整数)
Text2.Text = 最大値
Text3.Text = 最小値
0480デフォルトの名無しさん
2005/07/05(火) 20:38:310481デフォルトの名無しさん
2005/07/05(火) 20:51:28If ctlObj.TabIndex = 5 Then
ctlObj.SetFocus
Exit For
End If
Next
0482ヒデ坊
2005/07/05(火) 22:14:03いえ、OSもいろいろだし、DPIもいろいろです。
できれば、動作用PCのそれらの違いを乗り越えて(無視して)、開発時の
デザイン通りに表示してくれればと思います。
0483デフォルトの名無しさん
2005/07/05(火) 22:42:58Dr.GUIが解説してた記事がMSDNにあったキガス)
0484デフォルトの名無しさん
2005/07/05(火) 22:46:34秘密主義者は勝手にやってくれ。
0485デフォルトの名無しさん
2005/07/06(水) 00:03:200486デフォルトの名無しさん
2005/07/06(水) 00:13:270487デフォルトの名無しさん
2005/07/06(水) 00:15:030488デフォルトの名無しさん
2005/07/06(水) 00:20:480489デフォルトの名無しさん
2005/07/06(水) 01:02:03一番最初のものに一位、次に二位、その次に三位、・・・
って付けていきます。
こういうのはMSDNとかには載っていない大変高度な話ですが、
小学校の教科書ぐらいの難しい本にはたぶん載ってます。
0490デフォルトの名無しさん
2005/07/06(水) 01:02:27みたいなノリのレスだらけになったりしてw
0491デフォルトの名無しさん
2005/07/06(水) 15:08:29数値がピラミッド型に並んでいるデータ構造があって、そこから数値を指定すると
2つ下階層の4つの数値が取得できるようなプログラムを作りたいと思っています
。数値の並びは1階層とばして2階層から次の値が開始するような形式です(下の
数値の数は4つになる)。
1を指定すると2,3,4,5が取得できて、3を指定すると10,11,12,13、9を指定すれば
34,35,36,37です。
この考え方で、どの数値が指定されても4つの値を取得できるような関数を作りた
いのですが、どうにもわかりませんでした。是非アドバイスお願いします。
0492デフォルトの名無しさん
2005/07/06(水) 15:36:530493デフォルトの名無しさん
2005/07/06(水) 15:42:17Public 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
0494デフォルトの名無しさん
2005/07/06(水) 16:10:02ありがとうございました。無事に値を取得する関数ができました。
自分の頭の回転の悪さがなんとも、、、
0495デフォルトの名無しさん
2005/07/06(水) 17:59:200496デフォルトの名無しさん
2005/07/06(水) 18:32:25逆に外のコントロールを中に入れたりするにはどうすれば良いのですか?
D&Dだと外に出そうとしても出せないし、中に入れようとしても位置的に重なるだけだし。
0497デフォルトの名無しさん
2005/07/06(水) 18:39:17フォームデザイン時の話であれば、切り取り&貼り付け
0498デフォルトの名無しさん
2005/07/06(水) 22:47:42起動時にそれを読み込みたいのですが、なにか良い方法は無いですか?
今は、たとえば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
のようにちまちまと保存したり読み込んだりしてるのですが、
実際には要素数が多いのでかなり時間が掛かります。
とにかく高速に前回終了時の配列を再現したいのですが
良い方法をご存じの方、どうか教えてください。
0499デフォルトの名無しさん
2005/07/06(水) 23:00:44そのままBinaryでPut&Get
0500デフォルトの名無しさん
2005/07/06(水) 23:19:09もうしらばらくVB使ってないんで自信はないけど、多次元配列の場合は
バイナリモードだと書くときはよくても読み出すとき困る気がした。
バイナリモード使うなら配列を構造体で包んでやる必要があったと思う。
0501デフォルトの名無しさん
2005/07/07(木) 00:34:48addする際にデザイン時にしか設定できない値を変更することってできますか?
scrollbarsとかの
0502デフォルトの名無しさん
2005/07/07(木) 09:04:14それはできなかった気がするけど、一つ雛形でテキストボックスを作っといて、
プロパティも設定して、それを複製するのはできたはず。
0503デフォルトの名無しさん
2005/07/07(木) 16:01:10例えば、あるキーが押されたら、そのキーが押されたことが分かればOKなんですが。
0504デフォルトの名無しさん
2005/07/07(木) 16:34:43用途は?
0505デフォルトの名無しさん
2005/07/07(木) 16:35:04グローバルフック
0506498
2005/07/07(木) 17:17:59>>499
回答ありがとうございます。
しかし500さんの言うように読み込みがうまくいきません。
構造体使うのは避けたいので、他になにか方法をご存じの方、
又は多次元配列をGetステートメントで読み込む方法を具体的に知ってる方
引き続き宜しく御願いします。
0507デフォルトの名無しさん
2005/07/07(木) 17:52:05こんな風にすれば問題ないと思うのだが。
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
0508デフォルトの名無しさん
2005/07/07(木) 18:15:35うまく行かないと言うだけじゃ通じない。
構造体を避ける理由も明記するべき。
0510デフォルトの名無しさん
2005/07/07(木) 20:09:041234@4567755@3425323@5235235
各数字の桁が不定な数値を@記号区切りで持っているデータファイルがあります。
一番最後の@記号意向の値を取得したいです。
よろしくお願いします。
@記号も数が不定です。
0511デフォルトの名無しさん
2005/07/07(木) 20:15:270512デフォルトの名無しさん
2005/07/07(木) 20:54:50当方VBが5なのですが、認識されない関数でしょうか?
0513デフォルトの名無しさん
2005/07/07(木) 21:01:160514デフォルトの名無しさん
2005/07/07(木) 21:07:35ttp://www5b.biglobe.ne.jp/~yone-ken/VB/Func/vbTips009.txt
0515デフォルトの名無しさん
2005/07/07(木) 21:23:16感謝いたします
こちらのAPIでいけそうです。ありがとうございました。
0516デフォルトの名無しさん
2005/07/07(木) 21:25:140517デフォルトの名無しさん
2005/07/08(金) 10:53:17instrrev
split
お好きな方をどうぞ
0518デフォルトの名無しさん
2005/07/08(金) 11:25:00>>512
0519デフォルトの名無しさん
2005/07/08(金) 11:31:370520デフォルトの名無しさん
2005/07/08(金) 13:43:09>142
0521デフォルトの名無しさん
2005/07/08(金) 13:46:190522デフォルトの名無しさん
2005/07/08(金) 16:20:23Textプロパティだと取得は出来るけど設定はできないってエラーが出る。
コンボボックスに表示されてる値って、追加したアイテムの中から
インデックス番号でしか設定できないのですか?
0523デフォルトの名無しさん
2005/07/08(金) 16:51:05スタイルを何にしてるの?
多分そこを理解してないからそういう疑問になるんだと思うんだけど。
そのあたりのヘルプ見て、コンボなのかドロップダウンなのか、貴方が望む形式を選択してからもう一度。
0524デフォルトの名無しさん
2005/07/08(金) 18:25:330525デフォルトの名無しさん
2005/07/09(土) 15:23:44VB6のMSHFlexGridコントロールで、列や行に対して
文字割付(上寄せとか左寄せとか)や、修飾(文字色とか太字とか)を
設定するにはどうすればよいですか?
今は列や行に対してではなく、セルに対する設定をForで回してますが非効率的なので。
Spreadsheetコントロールならそういうことも出来るのですが、
MSHFlexGridコントロールを使いたいので、どうかご教授お願いします。
0526デフォルトの名無しさん
2005/07/09(土) 15:30:46Spreadsheet使え
0527デフォルトの名無しさん
2005/07/09(土) 15:53:06よく読め
0528デフォルトの名無しさん
2005/07/09(土) 16:28:42読んだ上で言ってるんだよ
0529デフォルトの名無しさん
2005/07/09(土) 17:15:510530デフォルトの名無しさん
2005/07/10(日) 12:03:05ActiveXなどのコントロールをアドインして、
機能拡張する事は可能でしょうか?
アプリ自体にアドオンが考慮されていないとダメそうですが。
0531デフォルトの名無しさん
2005/07/10(日) 13:01:58可能。
ヒント
Class、Implements。
VBのアドインもVBで作成することが可能だしな。
0532デフォルトの名無しさん
2005/07/10(日) 23:46:03それは既存アプリがClass化されている事が前提で、
そのClassをインプリメントして作成する?ってこと
0533デフォルトの名無しさん
2005/07/11(月) 00:48:20例えば単にWAVファイルを再生するソフトを作ったとして、
外にあるファイルを再生するのではなく、実行ファイルの内部に埋め込んだ
WAVを再生するようなことをしたいのですが・・・
0534デフォルトの名無しさん
2005/07/11(月) 01:42:170535デフォルトの名無しさん
2005/07/11(月) 02:22:39サイズが小さければリソースとして埋め込める
でかければデータとして工夫すれば埋め込める
めんどくさい事すればEXEの後にくっつけて埋め込める
0536デフォルトの名無しさん
2005/07/11(月) 02:26:40容量は大きいので、データとして工夫して埋め込む方法か、
EXEの後にくっつけて埋め込め方法はどうすればいいのでしょうか・・・?
自分の検索の仕方が悪いのか、「VB EXE ファイル 埋め込み」などで検索してるのですが、
全然関係のないページばっかりで、目的の方法が見つかりません・・・
0537デフォルトの名無しさん
2005/07/11(月) 02:35:10PEフォーマットを調べLHAのような自己解凍ソフトのように
EXEの後にくっつけるか
ソースコードとしてbinaryの配列にconstでつっこむか
小分けにしてリソースとして登録するか(これは上限あったかな?)
0538デフォルトの名無しさん
2005/07/11(月) 02:50:15有り難うございます。
PEフォーマットについては難しそうなので、
リソースとして登録する方法でやろうと思います。
>ソースコードとしてbinaryの配列にconstでつっこむか
これが個人的に詳しく聞きたいのですが・・・
でも、もうちょっと自分で調べて勉強してみます・・・
0539デフォルトの名無しさん
2005/07/11(月) 03:19:13上限がなければこれで充分そうです。
0540デフォルトの名無しさん
2005/07/11(月) 14:19:31でまずどんな本を使って勉強すればいいですか??
0541デフォルトの名無しさん
2005/07/11(月) 14:55:39VB.NETじゃなくて6.0もしくはそれ以下なのか?
やる価値も無いし、本も手に入りづらいぞ
0542デフォルトの名無しさん
2005/07/11(月) 15:57:00.NETの方がやる価値がなくないか?
0543デフォルトの名無しさん
2005/07/11(月) 16:06:59くだらない冗談言わないでくれ。
0544デフォルトの名無しさん
2005/07/11(月) 16:07:59未だにVB6以前使ってる奴 >>> 今からVB6始める奴 >>>壁>>> VB.NET使ってる奴
VB.NETなんてやるくらいなら他言語使えよって感じだ。
0545デフォルトの名無しさん
2005/07/11(月) 16:28:180546デフォルトの名無しさん
2005/07/11(月) 16:30:180547デフォルトの名無しさん
2005/07/11(月) 16:31:12忘れさせてくれ。
0548デフォルトの名無しさん
2005/07/11(月) 16:48:15Windowsクライアント・サーバ両面において、.netは十分使えるし、シェアを考えた場合Windows専用ってのもありだ。
0549デフォルトの名無しさん
2005/07/11(月) 16:59:06お前・・・
0550デフォルトの名無しさん
2005/07/11(月) 17:04:50で?やっぱ批判だけで中身ないんだけ。全く具体的な反論ができない。
0551デフォルトの名無しさん
2005/07/11(月) 17:15:29> じゃあ次の自分のメイン技術を何にしようとしてるか言ってくれよ。
> じゃあ次の自分のメイン技術を何にしようとしてるか言ってくれよ。
0552デフォルトの名無しさん
2005/07/11(月) 17:19:34まあ、マイクロソフト製品を批判してればなんとなくかっこいいもんね。w
0553デフォルトの名無しさん
2005/07/11(月) 17:23:040554デフォルトの名無しさん
2005/07/11(月) 17:23:29きっと自分が使ってるものを批判されたからキレちゃったんだね。
マとして以前に人間としてレベルが低すぎてかなわない。
0555デフォルトの名無しさん
2005/07/11(月) 17:27:49.netフレームワークでは別に言語選択それほどこだわらないけどね。
好みとしてはC#のほうがすきだけど。どっちでもできるからいいやって感じで。
で、話題にしてたのは.netフレームワークそのもののつもりだけど、まあVB.netスレだから言語限定に取られたか?
それに対抗しうるフレームワークって中々ないよね。
Javaはクライアントサイドが致命的にダメだし。
0556デフォルトの名無しさん
2005/07/11(月) 17:30:140557デフォルトの名無しさん
2005/07/11(月) 17:33:04まあとりあえず理由も示さずに、MS製品非難しとけばなんとなくかっこいいもんね。
反体制的だし、技術者みたいに見えるし。
0558デフォルトの名無しさん
2005/07/11(月) 17:35:54もう頭に血が上ってそれどころじゃないようなかんじだな、彼は。
0559デフォルトの名無しさん
2005/07/11(月) 17:39:570560デフォルトの名無しさん
2005/07/11(月) 17:44:59まあ、基地外って言われたのは当ったんだろうね。
無意味な書き込み繰り返して。
>>549 >>551 >>554 >>556 >>558 >>559
0561デフォルトの名無しさん
2005/07/11(月) 17:49:14もってあと数年かな?
0562デフォルトの名無しさん
2005/07/11(月) 17:55:550563デフォルトの名無しさん
2005/07/11(月) 22:12:400564デフォルトの名無しさん
2005/07/11(月) 22:23:59周りを無意味な書き込みと罵る割には、
自分も無意味な書き込みばかり繰り返してる。
0565デフォルトの名無しさん
2005/07/11(月) 22:38:04みんなが糞って言ってるから使ったこと無くても糞と言う
0566デフォルトの名無しさん
2005/07/12(火) 09:45:150567デフォルトの名無しさん
2005/07/12(火) 10:08:22OSがNT系のサービスはVBStationやらのサイトとかで見つかったけど
スタートアップ(msconfig)のソースまたはサンプルがググっても見つからない。
知っている人いたら教えてくださし
0568デフォルトの名無しさん
2005/07/12(火) 12:43:47質問の内容がまったく理解不能なんだが、とりあえず理解できた部分だけでも答えてやろう。
msconfigのソースコードはMicrosoftとNDA契約を結ばないと公開してもらえないはず。
ググルだけ無駄。
0569デフォルトの名無しさん
2005/07/12(火) 14:52:53adoのコントロール名が adoAlbum
普通に検索するようなプログラムを作ろうと、
以下のプログラムを書いてみたところ、
MySQLの方からSyntaxエラーが帰ってきました…
ちなみに、RecordSorceを初期値のまま全件表示はうまくいってます。
また、Debug.Printした結果を mysql> へコピペした場合は意図どおりに検索してくれます。
adoAlbum.RecordSource = "select * from albumList where artist_id=" & artistID & ";"
Debug.Print adoAlbum.RecordSource
adoAlbum.Refresh
0570569
2005/07/12(火) 14:58:57レコードソース -> コマンドタイプを
「1 - adCmdText」 に変更したらうまくいきました。
お騒がせしました。
0571デフォルトの名無しさん
2005/07/12(火) 15:30:44フォーム上にある3つのTextを1つのデータとして
これらを配列を使ってsave.txtに保存したいのですが、
1つ目のデータは保存することが出来るのですが
2つ目のデータを保存すると1行目のデータが
上書きされてしまいます。
C言語のファイルポインタみたいなものがあれば良いのですが…
お願いします。
0572デフォルトの名無しさん
2005/07/12(火) 16:01:22・テキストを結合して書き込む
なんでC言語が出てくるんだ
0573デフォルトの名無しさん
2005/07/12(火) 16:33:47アペンドモードでやったら解決しました。
簡単な問題だったのねorz
C言語は…
きにしないで下さいw
0574デフォルトの名無しさん
2005/07/12(火) 17:45:18ソースもサンプルもないけど、参考にはなるかな。
Windows NT系OS起動時の、自動実行(レジストリ、Startupフォルダ)
http://tef-room.net/tips/startup.html
0575デフォルトの名無しさん
2005/07/12(火) 21:03:37このVB6で作成したバッチAPLを、Windows2003Serverで稼動させる場合、
Windows2003Server上でリコンパイルする必要があるのでしょうか?!。
動く動かないでいうと、そのままのExeで動くのですが、PCServerの
H/Wスペックがあがってるにも関わらず、バッチAPLのレスポンスが遅くなって
しまっています。
これって、Windows2003Server上でリコンパイルすれば解決することで、
知ってる人にしてみれば、当たり前のことなのでしょうか?!?!?!。
0576デフォルトの名無しさん
2005/07/12(火) 23:12:25動いてるなら動くんでしょ?
リコンパイルは基本的に不要。
バッチが何やってるかわからないのに、なぜ遅くなったか判ったらエスパーです。
デバックコードを埋め込んで遅延理由を探るのがプログラマの仕事じゃないのか?
0577デフォルトの名無しさん
2005/07/13(水) 00:16:10単純に、同一のWindows2003Server上で、NT4.0上で作成したVB6のexeを実行
した場合と、そのソースをそのWindows2003Server上でVB6でリコンパイル
して実行した場合を比較すると、実行結果はともに正しいのですが、
リコンパイルしたexeのレスポンスが、単純にもってきたexeより、
2〜3倍よいのです。
コンパイルしたServerOS環境でレスポンスが異なるってことは、
ServerOSのシステムファイルやらによって、動くけど、効率の差
が発生するものなのかしら。。。?!、、と思っての質問です。
愚問なのでしょうが、アドバイスいただきたくお願いします。
0578デフォルトの名無しさん
2005/07/13(水) 00:31:14・4.0と2003で作成されたEXEをバイナリで比べて違いがあるか
・コンパイルのオプション(最適化等)は同じか
・VB自体のバージョンとサービスパックは同じか
0579デフォルトの名無しさん
2005/07/13(水) 00:57:10exeのサイズを見ると、4.0上で作成したexeより、2003上で作成したexe
のほうが、小さいです。
>・コンパイルのオプション(最適化等)は同じか
4.0上でのコンパイルオプションについては、これから確認してみます。
2003上でのコンパイルオプションは、V何も指定等していません。
言い換えれば、VB6のデフォルト値のままとなります。
>・VB自体のバージョンとサービスパックは同じか
VB自体のバージョンは、6.0で同じです。
サービスパックについては、4.0上はこれから確認してみます。
2003上では、適用していません。
いかがなものでしょう。。。。
0580デフォルトの名無しさん
2005/07/13(水) 01:06:17君がプログラマでないんなら金だしてプログラマに頼みな。
って、とりあえず煽っておいとく。(先の質問の答えになってねーべ)
実は俺も経験がある。
俺の場合使ってる外部OCXのバージョンが違っていたというorz系の理由だったが。
とにかく何をやっているのかぐらい示してくれんと助言もできんと思うぞ。
あとコンパイルオプションでP-CODEにしてるってことはないか?
0581デフォルトの名無しさん
2005/07/13(水) 01:24:41> って、とりあえず煽っておいとく。(先の質問の答えになってねーべ)
言われるとおりで、、、。
> とにかく何をやっているのかぐらい示してくれんと助言もできんと思うぞ。
処理概要は、MS-SQLserverDBに、一括更新処理をしています。
GUI等はつかっていません。
ソースを見てみると、IF条件とSQLばかりのものです。
> あとコンパイルオプションでP-CODEにしてるってことはないか?
2003上では何ら指定をしていないデフォルトでコンパイルしているの
ですが、NT4.0上での作成時については確認してみないと不明です。
早速確認してみます。
ちなみに、、、P-CODEか否か?!、exeから確認する方法はあるので
しょうか?!。
0582デフォルトの名無しさん
2005/07/13(水) 04:13:12> しょうか?!。
Dependency Walkerで見たら、
使用しているMSVBVM60.DLLのエクスポート関数の数に
違いが有ったので、これで判断できるのでは?
0583デフォルトの名無しさん
2005/07/15(金) 06:21:34シーケンシャルアクセス(For Input)で開いている状態で、
次に Line Input# で読み込むレコード位置が
ファイルの先頭から何バイト目かを知る方法はありますか?
0584デフォルトの名無しさん
2005/07/15(金) 06:59:100585デフォルトの名無しさん
2005/07/15(金) 07:15:13>長さの異なる複数の文章を改行で区切って格納したテキストファイル
つーことは、今から読み込む位置が
[いくつ目のデータか] * [データのバイト数]
じゃ算出できないってことか。
先頭からいちいち加算すれば、って話でもないようだな。
0586デフォルトの名無しさん
2005/07/15(金) 10:11:360587デフォルトの名無しさん
2005/07/15(金) 14:41:30設定を保存する方法って無いですか?
実行ファイルに毎回設定情報を埋め込むとか。
もし可能なら具体的な方法か、解説サイトの紹介をお願いします。
0588デフォルトの名無しさん
2005/07/15(金) 15:17:58ウイルス対策ソフトが反応しそうな予感。
それに自分自身のファイルには書き込めないんじゃない?
0589デフォルトの名無しさん
2005/07/15(金) 15:20:030590デフォルトの名無しさん
2005/07/15(金) 15:26:18DBとかに接続してるなら、そこに全部保存すればまあローカルは汚れないけど。
そもそもVB6 アプリ入れてる段階で、そういう環境変更を嫌う人の要件を満たしてないと思うけど。
VCなどの完全スタティックリンクなEXEか、.netのノータッチデプロイとか、Webアプリじゃないと。
0591デフォルトの名無しさん
2005/07/15(金) 15:26:22自分自身のコピーに設定情報をバイナリの最後に埋め込んでから、
終了時にリソースからEXEを呼び出して元の実行ファイルのプロセスが終了したら
オリジナルを削除し、コピーをオリジナルのファイル名に戻す。
0592デフォルトの名無しさん
2005/07/15(金) 15:31:240593591
2005/07/15(金) 15:32:11>終了時にリソースからEXEを呼び出して元の実行ファイルのプロセスが終了したら
>オリジナルを削除し、コピーをオリジナルのファイル名に戻す。
これちょっと考えたら無理だな。
終了時にリソースからEXEを適当な場所に復元して、shellで実行。
元の実行ファイルのプロセスが終了したら、オリジナルを削除し、
コピーをオリジナルのファイル名に戻す。
0594591
2005/07/15(金) 15:40:06これは単純に元の実行ファイルのプロセスが終了しているのを確認し、
オリジナルを削除して、コピーを元に戻すだけの処理。
ファイル名などは引数で渡せばいいだけ。
元の実行ファイルにも、終了時に自分自身のコピーを作成し、
設定情報をバイナリの最後に埋め込む処理を追加。
その後にリソースからEXEファイルを適当な場所に復元してShellで実行。
もっといい方法あるなら俺にも教えてくれ。。。
0595デフォルトの名無しさん
2005/07/15(金) 15:45:01それが言ってるように簡単に動的に出来れば、誰も(それこそウィルス作成者もw)苦労しないって。
0596591
2005/07/15(金) 15:45:56俺全然だめぽ・・・
0597デフォルトの名無しさん
2005/07/15(金) 16:23:11VB6.0なんですが、コンボボックスのIMEモードを全角ひらがなにしておくと、
コンボボックスから次ぎのコントロールにフォーカスが移ってもIMEのモードが
そのまま引き継がれてしまいます。(次ぎのコントロールのIMEモードを半角にしていても)
これって仕様ですか?バグですか?
でもって解決策はないでしょうか?
0598デフォルトの名無しさん
2005/07/15(金) 18:20:19Private Sub xxx_GotFocus()
xxx.IMEMode = vbIMEModeOff
End Sub
0599デフォルトの名無しさん
2005/07/15(金) 19:53:46設定ファイルじゃなんでダメなんだろ。
解析されたくなかったら、それなりの対策すればいいんだし。
0600デフォルトの名無しさん
2005/07/15(金) 20:03:08その乏しい能力をどうでもいいようなことに注ごうとするのはなんでだろうな。
自分探しの一種みたいなもんだろうか?
こんなことができるのは俺だけだ、って。
じっさいなそんな下らないことをするのはアンタだけだよ
0601デフォルトの名無しさん
2005/07/15(金) 20:09:41理由聞き出して罵倒する方向に持っていこうとする可哀相な奴が多いよな。
知ってるなら答える、知らないならスルーでいいのに
初心者ほど自分に答える義務があるとでも勘違いしているかのように全ての質問に喰っていく。
0602デフォルトの名無しさん
2005/07/15(金) 20:15:02うむ、激しく同意。
>>600みたいな奴が典型的だな。
0603デフォルトの名無しさん
2005/07/15(金) 20:24:23無意味なものは無意味だとしか言いようがない。
0604デフォルトの名無しさん
2005/07/15(金) 20:36:23己の無知を認めないことで自尊心を守ることが出来る
というわけだなw
0605デフォルトの名無しさん
2005/07/15(金) 20:48:31この世に意味のないことなんてないぞ?
あえて言えばお前が生まれてきたことぐらいか…
0606デフォルトの名無しさん
2005/07/15(金) 23:01:38変数の中にソースを代入するのと、テキストファイルを作ってそこにソースを書き出すのでは、どちらが効率が良いでしょうか?
また、どうすればできますか?
0607デフォルトの名無しさん
2005/07/15(金) 23:32:55普通の使い方なら、変数の中に文字列を代入してからのほうが扱いやすい。(ていうかここは必ず通るでしょ)
ファイル経由で解析を行うライブラリがあって、それが強力なものであるならファイルで管理も考えるかな。
検索関係はRegex,InStr,InStrRevなんかでググルといい。
ファイル関連はFileSystemObjectなんかでググルといい。
「ページ」が何なのかによって回答も違ってくるよ。
0608デフォルトの名無しさん
2005/07/16(土) 03:59:01遅レスだが。
シーケンシャルでのloc()は128で割った値を返すってあるね。
大きなテキストを扱うことを考えると、やっぱり地道に加算?
0609デフォルトの名無しさん
2005/07/16(土) 04:15:43しながら、アクティブウィンドウで普通の作業ってできますか?
難しくなければ、ご教授してください。お願いします。
0610デフォルトの名無しさん
2005/07/16(土) 07:41:320611525
2005/07/16(土) 12:00:18最初にも書きましたが、SpreadsheetではなくMSHFlexGridを使いたい為、質問に来ています。
0612デフォルトの名無しさん
2005/07/16(土) 13:17:44FlexGridでは無理。
2行増えるだけだから、効率悪いとは思えないし。
0613デフォルトの名無しさん
2005/07/16(土) 13:28:590614デフォルトの名無しさん
2005/07/16(土) 13:46:52切りたいって奴は頭がおかしいとしか思えない。
しかも、どうしてもカッター使いたいなら、それは頑張って手を動かすしかないわけだが、
その頑張って手を動かすのがイヤなんだと。
完全に狂ってる。
0615デフォルトの名無しさん
2005/07/16(土) 13:55:00言うならチェーンソーと鋸だ。
チェーンソーの方が効率がよいのは誰が見ても明らかだが、
でかくて重い、ガソリンやバッテリーなどの動力源が必要、扱いによっては死に至るケガをする場合もある
などのデメリットもある。
プログラムでも全面的にどちらかが劣ってるって場合もあるが、
大抵はどちらにも何らかのメリットがある場合が多い。
そういうのが読めない奴は知識だけあってもいい物は作れないだろうな。
0616デフォルトの名無しさん
2005/07/16(土) 14:04:58自分が知らないことは無駄なことだと思いこんで安心したいんだよ
0617デフォルトの名無しさん
2005/07/16(土) 14:13:02いわく、「思ったことはかなえられることなり」
こういうのは言霊主義、あるいは念力主義という。
0618デフォルトの名無しさん
2005/07/16(土) 14:52:34無理だと思うだけなら無視すればいい
知ってるなら答えればいい
何でこれだけのことが出来ないんだろう??
0619デフォルトの名無しさん
2005/07/16(土) 14:57:41区別がつかないと思われる。
「〜すればいい」ってそう思うのは君であって俺ではないのだが。
>>618のような症例を自己中心性、あるいはジャイアニズムという。
0620デフォルトの名無しさん
2005/07/16(土) 15:01:05板杉
0621デフォルトの名無しさん
2005/07/16(土) 15:06:35スクリプト書かなくても、フリーのマクロで事足りるじゃん。
0622デフォルトの名無しさん
2005/07/16(土) 15:08:35そもそも、必死だったらなんだというのだろう。
0623デフォルトの名無しさん
2005/07/16(土) 15:17:380624デフォルトの名無しさん
2005/07/16(土) 15:41:02は?
VBスクリプトとVBの区別もつかないのかw
もう一回>>609読んでからしね。
0625デフォルトの名無しさん
2005/07/16(土) 18:44:47返答ありがとうございます。
SamurizeというソフトのスクリプトをVBSで製作したいと思い最近VBを始めました。
インターネットのページの中から文字列を取得したいという意味です。
0626625
2005/07/16(土) 18:46:05× VBS
○ VB
0627デフォルトの名無しさん
2005/07/17(日) 12:46:49どうやればいいんでしょうか?
Winamp向けのdllを使って音楽データを鳴らしたいんですけど、
ぐぐっても「それらしき」説明がされているサイトが見つかりません・・・
0628デフォルトの名無しさん
2005/07/17(日) 12:52:05ちゃんと英語でググってる?
0629デフォルトの名無しさん
2005/07/17(日) 19:39:26例えば
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をしてますが
もっと効率の良い方法をご存じでしたら教えてください。
0630デフォルトの名無しさん
2005/07/17(日) 20:04:14その例だと「詰める」必要なんて本当にあるのか疑問な気もするけど、
どうしてもそんな風にしたのなら、一次元配列をラップして二次元配列みたいに
使えるクラスを作るのが一番簡単だと思う。
インデックスをあらわす引数を二つとるプロパティをデフォルトプロパティにするわけね。
「詰める」メソッド実装するのもそんなに難しくないでしょ?
0631デフォルトの名無しさん
2005/07/17(日) 20:19:45mgsWaitforMultipleObjects にて、複数のプロセスを指定したいのですが、
引数である、hProcess が 配列というか、 Handle(long?)のポインタ指定になっています。
Countが1つの場合は単純にvbからhProcessをlongとして渡せばよいですが、
複数のハンドルをVBから呼び出しに使う事はできるのでしょうか?
0632デフォルトの名無しさん
2005/07/17(日) 20:58:31Winamp SDK見たほうが早い希ガス
やるにしてもC/C++の方が相性良いと思う。
VBから直接使えるかは知らん(__stdcallじゃなけりゃそれだけでアウト)
0633デフォルトの名無しさん
2005/07/17(日) 22:00:13一番初めに・・・。
vbAccelerator - Using WinAmp In Plugins From VB
0634デフォルトの名無しさん
2005/07/17(日) 22:10:50そんな高度な質問はこのスレで回答はえられないよ
0635デフォルトの名無しさん
2005/07/17(日) 22:18:59その引数をByRef Handles As Longとして
呼ぶときには引数をHandles(0)のように配列の先頭要素を指定するとできる。
0636デフォルトの名無しさん
2005/07/17(日) 22:24:21残念だったなぁ。
0637デフォルトの名無しさん
2005/07/17(日) 23:34:590638デフォルトの名無しさん
2005/07/18(月) 05:45:23Declare Function VarPtr Lib "vb40032.dll" (variable As Any) As Long
0639637
2005/07/18(月) 06:52:36ありがとうございます。
解決しました。
0640597
2005/07/19(火) 09:46:13解答ありがとうございます。でも、その方法は既にためしているのですが、
IMEmodeプロパティのないもの(チェックボックス等)でも、IMEモードがONになってしまって
そのせいでスペースキーを押してもチェックできなくなってしまうのです。
なんでだろう。
0641デフォルトの名無しさん
2005/07/19(火) 10:27:14http://yasushikondo.no-ip.info/prog/all/non-job/okikawa/index.html
☆沖川君の憂鬱について☆感想文掲示板
http://yasushikondo.no-ip.info/prog/all/non-job/okikawa_bbs/aska.cgi
0642デフォルトの名無しさん
2005/07/19(火) 11:10:23でなければテキストを吐き出させるようにしたいのですが、どうすれば良いのでしょうか?
またできれば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
0643デフォルトの名無しさん
2005/07/19(火) 11:57:27Set Application = CreateObject("Excel.Application")
hoge = Application.ExecuteExcel4Macro("'パス\[ブック名.xls]Sheet1'!R1C1")
Excelのブックを開かずSheet1のA1を取得する方法.
但し、注意点として空セルではNull("")ではなく 0 が返ってくる。
コレは仕様でExecuteExcel4Macroでは0と空の区別は出来ないらしい。
なのであとは返ってきた値が0じゃなかったらテキストに書き出せばよし。
でもこの程度ならvbsからやった方が良くないか?
FSO使えばテキスト書き出しも出来るし、セルの値の取得部分は上記をそのまま使える。
0644642
2005/07/19(火) 12:11:20レス有難うございます。早速試してみます。
他にも幾つか行いたい事があって、フォームを使用してクリック一つで誰でもできる
ようにしたかったんです。それと折角あるvb6を私の周りでは現状では誰も使って
ないので勿体無いので取り敢えず使うかって感じです。
有難うございました
0645デフォルトの名無しさん
2005/07/19(火) 15:57:319x系は95から対応していると思うのですが、NT系はどこからですか。
お願いします。
0646デフォルトの名無しさん
2005/07/19(火) 16:05:04全て(NT3以降)
あとはあなたが各OSで動くコードを書けば良いだけ。
0647デフォルトの名無しさん
2005/07/19(火) 16:11:190648デフォルトの名無しさん
2005/07/19(火) 16:35:24そういう場合は、IMEmodeプロパティのあるコントロールの LostForcusイベント でOFFにしてやれば良い。
0649デフォルトの名無しさん
2005/07/19(火) 19:32:15VB6で(標準コントロールだけで) 作ったEXEを頒布したいのですが、
添付すべきランタイムは何でしょうか。
0650デフォルトの名無しさん
2005/07/19(火) 20:30:05対象OSによって違う。
0651デフォルトの名無しさん
2005/07/19(火) 20:38:14それはOSによっては最初から入っている、という意味ですか?
0652649
2005/07/19(火) 20:53:260653デフォルトの名無しさん
2005/07/19(火) 21:37:13Yes
0654649
2005/07/19(火) 22:54:500655デフォルトの名無しさん
2005/07/20(水) 07:18:16何をもって標準コントロールって言っているのかによる。
VB6.0に付属のコモンダイアログやリストビュー、WinSock等は別のDLLが必要。
0656デフォルトの名無しさん
2005/07/20(水) 09:31:05日付、時間、件名を配列を使ってCSVファイルに保存しています。
このファイルをテキスト上にソートさせて読み込みたいのですが、
ソートの仕方がわかりません…。
教えてください。お願いします。
0657デフォルトの名無しさん
2005/07/20(水) 10:11:27外部コマンドsort.exeを使用する。
0659デフォルトの名無しさん
2005/07/20(水) 12:37:51Excelで読み込んでソートすればいいじゃん。
・・・なんてね。
「テキスト上にソートさせて」ってのがよくわからないけど、
CSVをADOで読み込んでSortプロパティを使うといいと思うよ。
0660デフォルトの名無しさん
2005/07/20(水) 14:08:47テキスト上ってテクストボックスのこと?
キーソートのコードがわからない?
それともソートのコード自体がわからない?
0661656
2005/07/20(水) 14:14:50>テキスト上ってテクストボックスのこと?
そうです。
>キーソートのコードがわからない?
>それともソートのコード自体がわからない?
初心者なのでコード自体全くわからないです。
0662デフォルトの名無しさん
2005/07/20(水) 14:28:37バカでもソートできるのになぁw
0663デフォルトの名無しさん
2005/07/20(水) 14:29:23ttp://www.ne.jp/asahi/protech/hiroaki/programing/vb.html#Q23
0665デフォルトの名無しさん
2005/07/20(水) 16:27:36ではなく、「調べる気がないので」だったわけか。
ま、あとはウンチク好きの先生達にでも任すかw
0666デフォルトの名無しさん
2005/07/20(水) 16:45:570667デフォルトの名無しさん
2005/07/20(水) 17:02:17ある英単語の意味を知りたい→英和辞書で調べる
英和辞書の解説にわからない漢字があった→漢字辞書で調べる
漢字辞書の説明で意味の分からない語句があった→国語辞書で調べる
0668デフォルトの名無しさん
2005/07/20(水) 17:10:54丸投げする気なら、学生バイトでも雇えばいい。
0669デフォルトの名無しさん
2005/07/20(水) 21:16:07俺はいつもはろくに調べもせず甘ちゃんな質問をする奴を煽ってるけれども、
君の質問に関しては多分煽るレスをしている奴は単に答えられないだけだと思うから気にすることない。
手順としては、
(1) レコード( = 一件のデータ = CSVの行)をあらわす構造体(またはクラス)を定義して、
(2) そのレコードのコレクションのクラスを作り、(3) そのコレクションのクラスに
レコードの各フィールドでソートするメソッド(関数)を書く。
こんな流れだと思う。
VBには日付や文字列の大小比較する関数があったはずだから、これらを利用して
クイックソートをするメソッドを書くのはそんなに難しくないと思う。
まあクイックソードのアルゴリズムを解説しているサイトを読んで半日考えれば
自分で書けるよ。
クラスがわからないなら無理にコレクションのクラスを作らずに、モジュールレベルで
レコードの構造体の配列とそれをソートする関数を書けばいい。
構造体(Vbだとユーザー定義型だっけか)がわからないとさすがにちょっと厳しい。
0670デフォルトの名無しさん
2005/07/20(水) 21:39:15C言語のqsort見たいに汎用のソート関数を作るけどな。
関数の引数に比較関数を渡してソート。
といっても、VBは関数を引数にして呼び出せないから、
正確には、比較関数オブジェクトを渡すことになるけど。
難点はクラスモジュールのファイルがいっぱいになることか。
0671デフォルトの名無しさん
2005/07/20(水) 21:57:24覚えると便利なのは分かるんだが・・・
0672デフォルトの名無しさん
2005/07/20(水) 22:25:13構造体の配列をソートするんだよ。単なる数値の配列のソートじゃないよ。
汎用化なんてできるか?多態もつかえないVBで。
仮に多態使えてもそんな使いやすい関数がかけるとは思えん。
だったら汎用化の意味なんてないでしょ。
0673デフォルトの名無しさん
2005/07/20(水) 22:37:40他の言語をやってみるといい。Javaとか。
VBプログラムの腕も上がるぞ。
0674デフォルトの名無しさん
2005/07/20(水) 22:37:40SQL文でソートするってやり方もある。
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
0675656
2005/07/20(水) 23:32:09明日試してみたいと思います。
0676デフォルトの名無しさん
2005/07/21(木) 03:59:11データの並び替えは難しいけど、並び替え済みのインデックスを作るというのなら簡単だと思う。
対象はデータがクラスのやつに限定されるけど。構造体は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
こんなやつ。
0677デフォルトの名無しさん
2005/07/21(木) 04:14:080678デフォルトの名無しさん
2005/07/21(木) 08:35:380679デフォルトの名無しさん
2005/07/21(木) 09:48:463万レコード超えそうな作業にはファイル作ってsortを呼び出してるかな。
0680656
2005/07/21(木) 13:20:300681デフォルトの名無しさん
2005/07/21(木) 13:33:26これだけ回答もらっていて、何が問題なんだ?
試して何がだめだったかとか進めないと会話にならんぞ。
0682デフォルトの名無しさん
2005/07/21(木) 13:48:56あきらめてExcel使ったら?
Excelのどこが不満なの?
0683デフォルトの名無しさん
2005/07/21(木) 15:59:090684デフォルトの名無しさん
2005/07/21(木) 16:23:36みんなエスパーでもマギーでもないんだから、どんな本読んで何つかってどのようにプログラムしたか。
そういう情報を出さないと誰もわかりませんよ。
0685デフォルトの名無しさん
2005/07/21(木) 16:57:16すいません、初心者なもので^^;
使った本は「はじめてのvisual basic 6」という本です。
http://www.gihyo.co.jp/books/syoseki-contents.php/4-7741-0733-6
API関数というものを使って作りました。 MIDI音源を使って音を鳴らすようにしてます。
0686デフォルトの名無しさん
2005/07/21(木) 17:22:12Cマガジンの2002/12とかにCだけどサンプルはある。
VBっぽく作るのであれば、イベントの発生順、タイミング自体をテキストファイルに書き込んで、それをなぞる方法かな?
今たぶん鍵盤とかをボタンで配置して、それぞれで音色をMIDIで再生してると思うけど。
そのボタンをおされた時分秒(それ以下の単位まで)をマクロのように記録して、それを再生するみたいに。
0687デフォルトの名無しさん
2005/07/21(木) 17:29:05ありがとうございます。m(_ _)m 調べてみます。
0688デフォルトの名無しさん
2005/07/21(木) 20:13:05VBの勉強中なんじゃないの
0689デフォルトの名無しさん
2005/07/21(木) 22:12:31MSDNライブラリのチュートリアルを読んで実際に試すだけで結構違うぞよ
Visual Basicの使用方法>プログラミング ガイド>Visual Basicを使ってできること>オブジェクト
あたりとか。
0690デフォルトの名無しさん
2005/07/22(金) 14:03:47Set hoge = New Collection
hoge.Add "foo", "aaa"
hoge.Add "bar", "bbb"
hoge.Add "baz", "ccc"
という感じでコレクションを作った場合。
hoge(2)、hoge("bbb")で要素の"bar"を返せますが、
逆に指定したインデックス位置の添字を返すにはどうすれば良いのでしょうか?
つまり2を指定して"bbb"を返したいのですが。
0691デフォルトの名無しさん
2005/07/22(金) 14:10:00取得できそうな希ガス
0692690
2005/07/22(金) 14:29:02DictionaryオブジェクトのKeysは
「Dictionary オブジェクト内のすべての既存キーを格納した配列を返します。」
とのことで、目的のものとは違うようです。
他のメソッドも調べてみましたが目的を達成できそうなものはありませんでした。
というか、Collectionを使う方法でお願いします。
0693デフォルトの名無しさん
2005/07/22(金) 17:42:11具体的に言うと500*500の画像があったとして、
その画像のY100,X200*Y200,X300の位置を
指定したイメージコントロールを表示するような方法です。
図で書くと _
□□□□□ ↑
□□■□□
□□□□□ 500
□□□□□
□□□□□ ↓
|← 500 →|  ̄
の■部分が表示したい位置です。
「〜で出来るかも」とかではなく
具体的な方法の紹介をお願いします。
0694デフォルトの名無しさん
2005/07/22(金) 17:53:07コントロールを入れ子にして、全体表示のPictureから部分を窓のようにして切り出したように見せることも”出来る”
0695デフォルトの名無しさん
2005/07/22(金) 17:56:21まあ、質問もアレだけど
0696デフォルトの名無しさん
2005/07/22(金) 18:03:40いや、ナチュラルになんとなくムカつく質問の仕方だし。w
つうかさ、ぐーぐる様にAPI、画像、切り出し、でお伺いを立てろ。
0697デフォルトの名無しさん
2005/07/22(金) 18:09:51回答はヘボいのに文句は一人前な疑似回答者もアレw
0698デフォルトの名無しさん
2005/07/22(金) 18:22:35"出来るかも"や"出来そうな気がする"とか、"APIで出来る"とかの回答しかできないっしょ。
他言語のスレじゃ上級者がサッとコードで回答したりするけど、
ここじゃ丸投げするなとか言って追い返すのが精一杯。
そして漏れはそんな奴らをニヤニヤ見ながら、偶にちょっかい出したりすると。
0699デフォルトの名無しさん
2005/07/22(金) 18:34:260700デフォルトの名無しさん
2005/07/22(金) 18:57:04負け惜しみなんて言っても始まらないぞ
0701690
2005/07/22(金) 19:47:08ImageコントロールではなくPictureBoxコントロールなら
PaintPictureで出来ると思いますよ。
.PaintPicture 元画像,0,0,100,100,200,100,100,100,vbSrcCopy
って感じで。どうしてもImageコントロールがいいってなら無視してくれ。
>>690もよろしくです。
0702あほ
2005/07/22(金) 20:57:01作っているんですがmp3ファイルの開き方がわかりません。
ShellExecuteというのがキーワードっぽいんですが記述の仕方も
わからないののでいろいろと教えてください。
0703デフォルトの名無しさん
2005/07/22(金) 21:44:01ByVal 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)
0704デフォルトの名無しさん
2005/07/22(金) 21:49:49Ret = ShellExecute(...
0705デフォルトの名無しさん
2005/07/22(金) 22:37:58ForEachで列挙して調べるしかないんでないの?
0706デフォルトの名無しさん
2005/07/22(金) 22:55:26と、黙ってられずに言ってしまう漏れ。
0707デフォルトの名無しさん
2005/07/23(土) 14:42:50現在チェックボックスにチェックを入れるとメッセージボックス1の内容を
メッセージボックス2、3に適応させるようにしてるのですが
一度チェックを入れてからチェックをはずしたときにはその適応をはずす
(メッセージボックス2、3が何も入力されていない状態)ようにしたいのですが
コードがわかりません(/_;)
どなたか教えていただけませんでしょうか よろしくお願いします<(_ _)>
0708707
2005/07/23(土) 14:43:47バージョンは6.0です。
よろしくお願いします<(_ _)>
0709デフォルトの名無しさん
2005/07/23(土) 15:03:40って何よ?
テキストボックス?ラベル?
普通メッセージボックスと言ったら
ポップアップダイアログを表示させるMsgBox関数のことなんだが。
0711デフォルトの名無しさん
2005/07/23(土) 16:35:08でいいじゃん
0712707
2005/07/23(土) 18:25:26チェックされてるかされてないかをIf文で分岐させて
チェックされてるなら
Text2.Text = Text1.Text
Text3.Text = Text1.Text
チェックされていないなら
Text2.Text = ""
Text3.Text = ""
にすればいいんですね^^;
チェックされてるかされてないかの判別のコードの書き方勉強してきます^^;
0713デフォルトの名無しさん
2005/07/23(土) 18:39:55使用中、そのコンボボックスの列にカーソルがあるときに、
矢印キーの下↓や上↑を押して、上下の行に移動させたいのですが、
コンボ内のアイテムが上下するのみで、keydownイベントも動きません
矢印キーで上下の行移動を実現するには、どうしたらいいのでしょうか
0714デフォルトの名無しさん
2005/07/23(土) 20:03:36無理
0715デフォルトの名無しさん
2005/07/23(土) 22:00:40Dim 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
0716デフォルトの名無しさん
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"
処理の都合上、二次元配列や構造体配列では代用できない部分があるので。
ご存じの方は、どうかご教示願います。
0717デフォルトの名無しさん
2005/07/24(日) 10:21:57変数の場合は基本的に名前で呼べることはないはず。
二次元配列や構造体で代用できないなんてことはありえんし。
0718デフォルトの名無しさん
2005/07/24(日) 11:04:49それじゃ質問変えます。
以下の方法を二次元配列、構造体配列でやる方法を教えてください。
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も実用出来ません。
※ループでの処理、一次元配列に書き出し後の処理は
要素数が多い場合非常に遅いので不可です。
0719デフォルトの名無しさん
2005/07/24(日) 11:16:49責任もって答えてやれよ
0720デフォルトの名無しさん
2005/07/24(日) 12:06:48悪いけど何やりたいか全く意味不明。
処理の内容を他人に伝達できないのは、表現能力の問題も他人の立場に立つ
想像力の欠如ももちろんあるが、それ以上に伝えようとしている本人が
その内容について把握・分析ができていないからと思われる。
そしてそのことは、プログラムが書けないことと恐らく無関係ではない。
0721716,718
2005/07/24(日) 12:23:55実際の処理をそのまま書いたのではなく、
処理の例として書いたので、意味不明で当然です。
これで何がやりたいかわかる方が変ですから。
やりたいことを文で書くと、
1 split関数で空配列への値の代入
2 フィルター関数による検索
3 ReDim Preserveによる内容を保持したままの要素数変更
4 join関数による配列内容の結合
を、二次元配列でいう第二要素番号にあたるものを変数で指定し
これらを二次元配列や構造体配列に対して行う方法を教えていただきたいです。
これらは基本的に一次元配列、又は配列の最終要素数にしか出来ないことですが
二次元配列や構造体で代用できないなんてことはあり得ないとのことなので。
構造体配列に対しては処理自体は掛けられますが、変数で位置を指定する方法がわかりません。
0722デフォルトの名無しさん
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
0723デフォルトの名無しさん
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
0724716,718
2005/07/24(日) 16:08:15違います。
というかループまわせばどうにでもなるけど、
>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です。
0725722
2005/07/24(日) 16:17:56ちゃんと分析して意味を把握してる?
「実現したい処理」と「>>722のコード」の両方に関して。
要は『「文字列配列」の配列』が欲しいんでしょ、簡単に言えば。
そういうデータ構造をVBで実現するヒントに>>722はなっているよ。
0726デフォルトの名無しさん
2005/07/24(日) 18:39:57そこまで性能求める文字解析、ループならばVBは不向きだよ。
0727デフォルトの名無しさん
2005/07/24(日) 19:21:16ろくにわかってない癖に偉そうにw
「文字解析、ループならばVBは不向き」って意味がわからないし、
だいいち今のスレの話題と話がかみ合ってない。
確かにメモリ操作(ポインタ)が使えないVBではループで文字列を連結していくような処理を書くと、
同じ処理をCで書いたときよりパフォーマンスが大幅に落ちるわけだが、
その理由がわかって書いているとは思えない。
0728デフォルトの名無しさん
2005/07/24(日) 19:36:10御講釈ありがとう。
そういうこと書いたつもりなんだけど、思えないんじゃ言葉足りずだったね。
元質問者の場合、そこまで性能を求めるならば、そもそも高級言語を使うほうが間違いと思うわけで。
C使うにしてもMFCとか使わないで、普通にChar配列等でメモリーを直接的に見ていく感じで。
データ構造で詰められる性能と、そもそもの言語特性で詰められない部分で気になったので。
0729デフォルトの名無しさん
2005/07/24(日) 19:52:37' (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(), "_")
0730デフォルトの名無しさん
2005/07/24(日) 19:55:54そんなんなら最初から裸のVariant型の配列を使うのと何も変わらないじゃん。
0731730
2005/07/24(日) 19:59:14そんなことはないね。
0732デフォルトの名無しさん
2005/07/24(日) 23:52:43ピックアップするようなことはどのようにすれば
実現可能でしょうか。
0733デフォルトの名無しさん
2005/07/24(日) 23:58:32MAPIだっけ?
0734デフォルトの名無しさん
2005/07/25(月) 00:52:27どうもです。ちなみにこれってOutlookのローカルの送信済みアイテムではなく、
メールサーバ上の送信時刻も拾えますか?
0735デフォルトの名無しさん
2005/07/25(月) 01:04:180736デフォルトの名無しさん
2005/07/25(月) 07:19:43あるんじゃねーの?なきゃメールサーバの管理者が
困るだろ。
0737デフォルトの名無しさん
2005/07/25(月) 07:34:12拾いかた教えてください。
0738デフォルトの名無しさん
2005/07/25(月) 10:26:04印刷の表示プログラムの作成はスムーズにいったのですが、ページ枚数が大変多く
1000枚を超えています。すると1000枚目以降から表示がされなくなってし
まったのですが原因がよくわかりません。もしご存知の方がいましたら、是非教え
てください。
0739デフォルトの名無しさん
2005/07/25(月) 11:07:12まずテンキーNum Lock
メモ帳で
Altを押しながらテンキーで220(Alt離す)
同様に
Altを押しながらテンキーで219(Alt離す)
Altを押しながらテンキーで189(Alt離す)
Altを押しながらテンキーで33431(Alt離す)
0740デフォルトの名無しさん
2005/07/25(月) 20:20:16リソース不足
0741デフォルトの名無しさん
2005/07/25(月) 23:11:58めんどくさいから、さっさとオチ教えて。
0742デフォルトの名無しさん
2005/07/26(火) 07:05:380743デフォルトの名無しさん
2005/07/26(火) 07:33:39MSDN ライブラリ Visual Studio 6.0
>Visual Basic ドキュメント
>Visual Basic の使用方法
>プログラミングガイド
>Visual Basic のコーディング規則
0744デフォルトの名無しさん
2005/07/26(火) 09:41:49ありがとうございます。
0745デフォルトの名無しさん
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以上の処理が必要になるようでは本末転倒ですが。
0746デフォルトの名無しさん
2005/07/26(火) 12:41:30なにこの文章。
中学生でももっと読む人間の立場にたった、読みやすいまともな文章書くよ。
意味不明にも程があるでしょ。
まあこういう人はこうやって忠告しても、「荒らしのイチャモン」という風に
やり過ごすんだろうけど。
0747デフォルトの名無しさん
2005/07/26(火) 12:50:44条件が曖昧。
通常テキストファイルには使われないような制御コードを使えば?
0748デフォルトの名無しさん
2005/07/26(火) 13:57:45速さを望むならそれ以上は無理でしょう。
その使い分けが最善だと思います。
0749デフォルトの名無しさん
2005/07/26(火) 16:48:14小数点以下2桁まで入力できるように設定したimNumberコントロールを使用し
ています。しかし実行すると1桁目を入力するとカーソルが小数点の位置まで
戻ってしまい、連続して2桁目まで入力することができずに困っています。
何か解決策はありますでしょうか?
0750デフォルトの名無しさん
2005/07/26(火) 18:16:54まずはユーザーサポートへどうぞ。
0751デフォルトの名無しさん
2005/07/26(火) 20:08:24txtファイルなどの最終更新日を書き換えるプログラムを組むことは可能ですか?
ファイルの最終更新日だけをさくっと書き換え可能なプログラムが欲しくて
自分で作成してみようと思っているのですが・・・
0752デフォルトの名無しさん
2005/07/26(火) 20:25:25API使わないとダメだったような。
かなり面倒。
0754デフォルトの名無しさん
2005/07/26(火) 21:35:18ググッったら一発でサンプル見つかったけど。。
10秒もかからなかったよマジで。
http://www31.ocn.ne.jp/~heropa/vbdefts.htm
タイムスタンプを書き換える部分のソース見てみたけど、
本当にかなり複雑だねこりゃ。
0755デフォルトの名無しさん
2005/07/26(火) 21:37:34ググッったら一発でサンプル見つかったけど。。
10秒もかからなかったよマジで。
http://www31.ocn.ne.jp/~heropa/vbdefts.htm
タイムスタンプを書き換える部分のソース見てみたけど、
本当にかなり複雑だねこりゃ。
0756デフォルトの名無しさん
2005/07/26(火) 21:38:49ググッったら一発でサンプル見つかったけど。。
10秒もかからなかったよマジで。
http://www31.ocn.ne.jp/~heropa/vbdefts.htm
タイムスタンプを書き換える部分のソース見てみたけど、
本当にかなり複雑だねこりゃ。
0757デフォルトの名無しさん
2005/07/26(火) 21:40:29ググッったら一発でサンプル見つかったけど。。
10秒もかからなかったよマジで。
http://www31.ocn.ne.jp/~heropa/vbdefts.htm
タイムスタンプを書き換える部分のソース見てみたけど、
本当にかなり複雑だねこりゃ。
0758デフォルトの名無しさん
2005/07/26(火) 21:41:57ググッったら一発でサンプル見つかったけど。。
10秒もかからなかったよマジで。
http://www31.ocn.ne.jp/~heropa/vbdefts.htm
タイムスタンプを書き換える部分のソース見てみたけど、
本当にかなり複雑だねこりゃ。
0759デフォルトの名無しさん
2005/07/26(火) 21:46:00ググッったら一発でサンプル見つかったけど。。
10秒もかからなかったよマジで。
http://www31.ocn.ne.jp/~heropa/vbdefts.htm
タイムスタンプを書き換える部分のソース見てみたけど、
本当にかなり複雑だねこりゃ。
0760デフォルトの名無しさん
2005/07/26(火) 21:53:310761デフォルトの名無しさん
2005/07/26(火) 23:09:37サーバが調子わるかったみたいだね。
0762デフォルトの名無しさん
2005/07/27(水) 09:49:020763デフォルトの名無しさん
2005/07/27(水) 10:26:23ttp://jeanne.wankuma.com/tips/file/09-settimestamp.html
0764デフォルトの名無しさん
2005/07/27(水) 16:40:44速く切り替える方法はないでしょうか?
アイテムは全部で5000件くらい。
しかし別のコントロールでアイテム一覧を切り替えたいのです。
具体的には、5000件のうち、Text1.textプロパティの値(文字列)を含むコンボアイテムのみにしたいんですが…。
.Clearの後、5000件をループしつつInstrで判定、
合致したら.AddItem などとしていたら日が暮れてしまいます…
0765デフォルトの名無しさん
2005/07/27(水) 17:29:34とりあえずInstr関数なんか使ってないでFilter関数使え
0766デフォルトの名無しさん
2005/07/27(水) 17:54:060767デフォルトの名無しさん
2005/07/27(水) 18:23:30それともコンボに5000件セットするの?
前者ならそんなに時間かからないべ。何件だかしらんが。
後者なら、そんな件数突っ込むのがいけない。
選ぶ側の身になれ。
0768764
2005/07/27(水) 18:43:005000件の固まりA, B, C…の入れ替えではなく、
5000件中の、いわゆる絞り込み処理をやりたかったのです。
表現が悪くてすみませんでした。
0769デフォルトの名無しさん
2005/07/27(水) 18:47:10Addするときに Enabled は止めてある?
0770デフォルトの名無しさん
2005/07/27(水) 18:58:27コンボじゃ再描画はないと思うからまあそこは気にしないとして。
Addが遅いのか、文字検索が遅いのかぐらい切り分けてみれば?
(Addをコメントアウトすれば文字検索のみの時間がわかるから)
0771デフォルトの名無しさん
2005/07/28(木) 02:19:05上手く出来ないのでおしえてください
Set objPrinter = CreateObject("WScript.Network")
objPrinter.SetDefaultPrinter "プリンタ名称"
と処理を行うと通常使うプリンタが変更されるのですが
VBの暗黙オブジェクトであるPrinterは変更前のままとなっています
変更を反映させてやるにはどうすればよいのでしょうか?
ご教授願います
0772デフォルトの名無しさん
2005/07/28(木) 11:03:31If 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で処理できない訳ではないし、正規表現の使い方も知ってるので
それほど困ってるわけではありませんが、何か良い方法があるなら知りたいのでよろしくお願いします。
0773デフォルトの名無しさん
2005/07/28(木) 11:07:45コードメンテナンス性の向上を考えるならば、その条件式だけで関数化して隠蔽する。
その中はIFでやろうが、Selectでやろうが隠蔽してあるから、呼び出し側は綺麗に見える。
0774デフォルトの名無しさん
2005/07/28(木) 12:23:11>因みに実際の条件は上記例のように1文字ではないのでLikeは使えません。
使えるよ要確認。
ちなみに正規表現を避ける理由ってなにかあるんですか?
0775デフォルトの名無しさん
2005/07/28(木) 12:34:23> このスレって回答できそうもない質問がくると
> 理由聞き出して罵倒する方向に持っていこうとする可哀相な奴が多いよな。
> 知ってるなら答える、知らないならスルーでいいのに
> 初心者ほど自分に答える義務があるとでも勘違いしているかのように全ての質問に喰っていく。
0776デフォルトの名無しさん
2005/07/28(木) 12:39:500777デフォルトの名無しさん
2005/07/28(木) 12:48:130778デフォルトの名無しさん
2005/07/28(木) 13:44:33やっぱ回したりString型に一度変換しなきゃダメなんですかねぇ・・・
0779デフォルトの名無しさん
2005/07/28(木) 14:02:32バイトを文字として扱ってるか、1バイト数値として扱ってるかで違うし。
連結ってことは文字として認識ですよね。
Chrで文字変換して連結でしょうね、やっぱり。
0780デフォルトの名無しさん
2005/07/28(木) 14:07:10すんごい過去ログも見てみたけど、
1.chrかcstrで変換して結合
2.配列ループで回してケツに結合。
しか無かったですからねぇ。CopyMemoryも複写だし。残念。。。
thxえにうえい ノシ
0781デフォルトの名無しさん
2005/07/28(木) 14:18:01StrConv(配列名, vbUnicode)で行けるんだけども…
各個独立した変数なら南無。
0782デフォルトの名無しさん
2005/07/28(木) 14:27:10>>778 混乱招くから簡単なソース書いてよ
0783デフォルトの名無しさん
2005/07/28(木) 14:50:37DataArrival()イベントで受信データを受けるのはいいんですが、
データが全部揃ったかどうか?ってどうやって判断したらいいのでしょうか・・・
HTTP/1.0です。
0784778
2005/07/28(木) 14:53:45Private 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
こんな感じで・・・
0785デフォルトの名無しさん
2005/07/28(木) 15:04:57じゃダメ?"アイウエ"って帰ってくるけど・・。
あ、CStrは書いてるか・・・・。byte型のまま操作?
0786783
2005/07/28(木) 15:43:31というのもWinsockコンとロールを使ったサンプルを見ると、
DataArrival イベントが発生した時点で、
全てのデータが揃っている前提で組まれているものばかりだからです。
(GetData を 1回行うのみ)
それでいいのであればいいのですが・・・
0787デフォルトの名無しさん
2005/07/28(木) 15:49:01あと、HTTP 入門 でぐぐれば、HTTPプロトコル入門がすぐ見つかるから、
心配であれば1バイト読みしてヘッダを読み込んでから、バイト数見て後を読んでいけば?
Winsockコントロール自体は、HTTPの全ての読み込みなんて意識しないと思いますよ。
レイヤーとしてHTTPのほうが上位だから。
0788783
2005/07/28(木) 15:57:42返信ありがとうございます。
ひとまず、テストでは1発のGetDataで全部読んでくれるので問題はないのですが、
ネットワークにトラフィックかかったらどうなんだろ?とか心配になりまして。
VBで立ち上げたサーバにtelnetで繋いで手打ちすると、
1文字打つ毎に DataArrival イベントが発生しますので、
なんらかの対策は打つべきかとは思うのですが…。
アドバイス通り、ヘッダの区切りとか、Content-Lengthとか意識してみようかと思います。
0789デフォルトの名無しさん
2005/07/28(木) 15:58:53Dim ObjPrinter As Printer
For Each ObjPrinter In Printers
If ObjPrinter.DeviceName = "プリンタ名称" Then
Set Printer = ObjPrinter
Exit For
End If
Next
0790デフォルトの名無しさん
2005/07/28(木) 16:03:49ソケット通信自体、上位レイヤーであるHTTPであることを認識してるわけじゃない。
あくまで、なんかTCP/IPで通信してるデータが来たことを伝えてるだけ。
中のHTTP電文が完結してるなんて意識してないですよ。
WinsockコントロールのDataArrivalイベントの説明を見ても、データの完了なんて一言も無い。
読む限りでは受信して溜まったデータ長が0から1になったときに発生すると言ってるよね。
0791デフォルトの名無しさん
2005/07/28(木) 18:03:50それ検出すればいいっしょ。
0792デフォルトの名無しさん
2005/07/28(木) 18:15:270793デフォルトの名無しさん
2005/07/28(木) 23:53:35つーかまんこワロスwwwwwwwwwwww
0794デフォルトの名無しさん
2005/07/29(金) 17:21:06フォームがフォーカスを失った時と
フォーカスを得た時に処理を実行したいのですが、どうすれば良いですか?
Private Sub Form_LostFocus()
Private Sub Form_GotFocus()
Private Sub Form_Activate()
ではそれぞれ1回しか処理されませんでした。
コントロールのLostFocus、GotFocusイベントでは
フォーカスを失った時と得た時に毎回イベントが実行されるんですが、
APIを使わず、Formでもそれと同じような処理をさせるにはどうすれば良いでしょうか?
0795デフォルトの名無しさん
2005/07/29(金) 17:28:07?
0796デフォルトの名無しさん
2005/07/29(金) 17:32:08フォーム内のコントロールのフォーカス遷移ごとに、フォームでイベントが欲しいのか?
複数のフォームがそれぞれフォーカスを得たときにイベントがほしいのか?
後者ならば普通にイベント発生する。
0797デフォルトの名無しさん
2005/07/29(金) 17:40:02アプリがアクティブになったときと非アクティブになったときとで
処理を行いたいんじゃないかと
0798デフォルトの名無しさん
2005/07/30(土) 09:23:07すみません。
797さんの言うとおり、アプリ内でのフォーカスの移動ではなく
Windows内で他のアプリにフォーカスが移ったとき(他のアプリがアクティブになったとき)と、
逆に戻ってきたときに処理を実行したいのです。
CallWindowProc、SetWindowLongを使えば出来ますが、
APIを使わずに実現する方法をご存じの方が居ましたら教えてください。
0799デフォルトの名無しさん
2005/07/30(土) 13:19:49「4 固定ツールウィンドウ」にした場合、
ScaleHeightを0にする方法がわかりません。
Form1.Height = Form1.Height - Form1.ScaleHeight
としてもScaleHeightが0にならないんですが、どうすれば0に出来ますか?
0800デフォルトの名無しさん
2005/07/30(土) 16:04:04そんなの簡単にできるだろ......と思って調べてみたんですが、
どうもVBネイティブの機能では不可能っぽいですね。
このかゆい所に手が届かない感じがVBテイストか。。。
0801デフォルトの名無しさん
2005/07/30(土) 23:35:32じゃーね。さよなら。
0802デフォルトの名無しさん
2005/07/31(日) 11:39:51図を作成しています
DrawWidthに値を設定し線の太さをきめているのですが
プリンタよって
ことなる太さで出力されます
具体的には
PDFプリンタとレーザープリンタです
これは
プリンタ側のせっていなのでしょうか?
0803デフォルトの名無しさん
2005/07/31(日) 12:23:11何のせいといえばプリンタのせい。
Windows上の論理単位を物理単位に出すときの誤差。
0804デフォルトの名無しさん
2005/07/31(日) 12:25:48質問する前にMSDNのPrintメソッドの項とDrawWidthの項は読んだ?
読んでまだそういう疑問が湧くなら頭が悪いし、読まずに質問してるのならただの馬鹿だ。
0805デフォルトの名無しさん
2005/07/31(日) 12:27:32初めまして。プログラム初心者です。
今VB6.0でお小遣い帳のようなものを作成しているのですがその中でSPREAD(オリエント社)を使用しております。
そのSPREADにDBに保存してあるデータを表示するとデータ分(3件なら3行)しか表示されずそれ以降行を増やすことができません。つまりDBのデータしか表示できず画面にデータを追加できない状態なのですがどうすればよいでしょうか?
0806デフォルトの名無しさん
2005/07/31(日) 17:34:47ヘルプの行と列の挿入見れ。
0807デフォルトの名無しさん
2005/07/31(日) 18:50:350808デフォルトの名無しさん
2005/07/31(日) 21:35:13プログラムを作ったんだけど、WinMEのときは1時間ぐらいで
終わってたのが、WinXPでは倍の2時間ぐらいかかるんです。
検索しながらファイルをコピーしてるんですが、
SHFileOperationでもCopyFileを使っても変わらずで
なんでMEとXPで速度が変わったか教えてください。
0809デフォルトの名無しさん
2005/07/31(日) 22:42:26釣りの匂いがプンプンするんですが。。
0810デフォルトの名無しさん
2005/07/31(日) 23:09:30inetを使ってサーバーにあるファイルをダウロードするのにGETを使うのはわかるのですが、
ディレクトリごとダウンロードするにはどうしたらいいんでしょうか
0811デフォルトの名無しさん
2005/08/01(月) 04:54:53別の方法でなんとか目的の処理をするようにしました
0812デフォルトの名無しさん
2005/08/01(月) 11:36:18DataGridにチェックボックスを表示させたいのですが、
どうすれば出来ますか?
0813デフォルトの名無しさん
2005/08/01(月) 13:00:26ttp://homepage1.nifty.com/MADIA/vb/vb_bbs2/200402_04020017.html
0814デフォルトの名無しさん
2005/08/01(月) 16:53:50> 使えるよ要確認。
どうやるんですか?
Like "[東京,横浜,千葉]*"
みたいな方法を紹介してるところもあったけど、
これは「東京〜」「横浜〜」「千葉〜」にマッチするのではなく
「東〜」「京〜」「横〜」「浜〜」「千〜」「葉〜」「,〜」にマッチしてしまいます。
MSDNやVBAヘルプのLikeの項目を見ても、複数の単語(2文字以上)のみに
マッチさせる方法は載ってませんでした。
例として"abc"、"def"、"ghi"の3つのみにマッチするLike演算式を教えてください。
0815デフォルトの名無しさん
2005/08/01(月) 19:03:30Likeよか正規表現げググッたほうがいいね。
ていうかググらなかったんだね。
[]は文字クラス定義してんだから1文字単位でマッチするの当たり前だよ。
"東京横浜" Like "*東京*" 'True
"東京横浜" Like "*東浜*" 'False
"東京横浜" Like "*東*浜*" 'True
"東京横浜" Like "横浜東京" 'False
0816772,814
2005/08/01(月) 19:29:38名前欄にレス番入れなかった自分も悪いのですが。
>>772でも書いたとおり正規表現を使う方法は知っています。
[]で囲った場合の例についても、知ってるからこそ
「こういう方法を紹介してるサイトもあるけど、これでは出来ませんよ」という意味で書きました。
正規表現を避けたい理由については、Likeでの演算式を教えて貰う上で
必要な情報ではないと思うので明言しませんが、
>>774で>>772(レス番ひとつズレてますが)の条件に対してLikeが使えるとのことなので
その方法をお伺いしたいのですが。
774さん、よろしく御願いします。
0817デフォルトの名無しさん
2005/08/01(月) 20:59:31Acrobat6.0をインストールしたら使える
Adobe Acrobat 6.0 Type Library
のAPIドキュメントみたいなのって、どこで拾えますか?
ヘルプには載ってないみたいだし、オブジェクトブラウザじゃいまいち意味が
よくわからないから、ちゃんとした仕様書が読みたいんですが…。
アドビのサイト探してもよくわからんです><
0818デフォルトの名無しさん
2005/08/01(月) 21:33:59英語のPDFならすぐ見つかるはずだが。
0819デフォルトの名無しさん
2005/08/01(月) 22:38:52ありがとう
0820デフォルトの名無しさん
2005/08/01(月) 22:57:24うう、それを探してるんだ…○| ̄|_
アドビのサイトから飛べばいいの?
どれがそうなのかさっぱりだ…。
0821デフォルトの名無しさん
2005/08/01(月) 23:16:32中身までは見てないけど
ttp://partners.adobe.com/public/developer/acrobat/sdk/index_doc.html
こんな所にあるんじゃないの?報告求む
0822820
2005/08/01(月) 23:27:40おおお、ありがとう!
漏れはここまでたどり着くことすらできなんだのです。
で、喜んでみてたんだけど…
どうやら欲しい情報はSDKのフルバージョンを落とさないと手に入らないらしい。
てことでDLを試みたが、何故か403エラー…。
ちゃんと登録もしたのに、なんでだよ○| ̄|_
とりあえず色々試してみます…。
コーディング以前にこんなとこで躓くとは…。
アドビなんてキライだ ウワァァァァァァヽ(`Д´)ノァァァァァァン!
0823デフォルトの名無しさん
2005/08/01(月) 23:30:205までなら何も無しにダウンロードできてたのにねぇ
0824774じゃないけど
2005/08/02(火) 02:49:42>>>772でも書いたとおり正規表現を使う方法は知っています。
>[]で囲った場合の例についても、知ってるからこそ
>「こういう方法を紹介してるサイトもあるけど、これでは出来ませんよ」という意味で書きました。
出来る例を知っているのに出来ない例を提示して*これでは出来ない*と宣言しちゃう意図はなに?
知っているなら出来る例を提示してそれの問題点を指摘してもらわないと、何が駄目なのかというのがわからんのだが。
>>772の条件はN個の単語の中の1つにマッチすればTrueになる条件式を知りたいというものじゃないの?
だったら、
If ",abc,def,ghi," Like( "*," & "abc" & ",*") Then
とか
If InStr( ",abc,def,ghi," , "," & "abc" & ," ) <> 0 Then
でいけるんでないの?
0825デフォルトの名無しさん
2005/08/02(火) 03:01:12出来る例が無いから聞いてるんじゃないのか?
つーか824は頭悪すぎ。
夏か? 夏なのか? やっぱ夏なんだなw
0826デフォルトの名無しさん
2005/08/02(火) 06:21:46If InStr( ",abc,def,ghi," , "," & "abc" & ," ) <> 0 Then
これが出来てない例ならもうしらねぇよカスが
0827デフォルトの名無しさん
2005/08/02(火) 06:55:50あ、俺もか。
0828デフォルトの名無しさん
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) で
やれと言われているんで…
よろしくお願いします。
0829デフォルトの名無しさん
2005/08/02(火) 12:49:47高速だし重複削除も同時にできる。
0831デフォルトの名無しさん
2005/08/02(火) 13:00:22重複チェックしながら配列に書き戻した方が速い場合も多いな。
大抵の操作はセル(ワークシート)を使うと遅くなるけど、
ソートは複雑な場合ほどワークシートを使った方が速くなる。
というかVB(A)でのソートが遅すぎるんだけどね。
まあ、バケツソートが使える条件ならバケツの方が速いだろうな。
0832デフォルトの名無しさん
2005/08/02(火) 13:01:26まず、自分のやりたい方針とかないの?
まったく真っ白?w
0833デフォルトの名無しさん
2005/08/02(火) 13:13:55条件に合ったアルゴリズムを引っ張ってくることになるわけだが、
ソートのアルゴリズム自体はサンプルも含めて腐るほど転がってるから
好きなの拾ってくればいいだけでしょ。
Double型でも少数を含めた合計桁数がそれほど多くなければバケツソートを応用で使えるし。
0834828
2005/08/02(火) 13:15:17配列は高々20個程度なので速さはどうでもいいです。
>>832
方針としては、なるべくシートに書きたくなくて、プログラム上のみで
実現したいです。
0835デフォルトの名無しさん
2005/08/02(火) 15:42:07>>833
0836デフォルトの名無しさん
2005/08/02(火) 16:55:44聞きたかった方針とは別の事だけど、
まず、ソートとユニークを別に処理する方法だとして、
ソートについては、配列アクセスをどうすれば昇順(or 降順)になるか考えましょう。
ユニークなデータ配列にするにはどうすれば良いか考えましょう。
じっくり考えればアルゴリズムは出てくるでしょ???
# 面倒でも車輪は何度でも発明しましょう、きっと力がつくはず。
0837デフォルトの名無しさん
2005/08/02(火) 19:49:44DataGridのセルにアクセスした時にIMEが表示されて半角キーで切り替えが出来るので恐らく可能だとは思うんですが、
DataGridのプロパティにはIMEModeがないので、どこで設定するのだろうと・・・。
ウィンドウハンドルを取得してIMEの設定を変える方法は、TextBoxでは上手くいったんですが、
TextBoxの場合、事前にIMEModeを1にしないといけないみたいです。
DataGridの場合どこにIMEModeが入っているんでしょうか・・・。
0838デフォルトの名無しさん
2005/08/03(水) 10:13:52どうしたらいいですか?
0839デフォルトの名無しさん
2005/08/03(水) 10:29:410840デフォルトの名無しさん
2005/08/03(水) 10:32:18具体的にどうやって?
0841デフォルトの名無しさん
2005/08/03(水) 11:20:580842デフォルトの名無しさん
2005/08/03(水) 21:54:190843デフォルトの名無しさん
2005/08/04(木) 11:26:36どうすれば出来ますか?
0844デフォルトの名無しさん
2005/08/04(木) 11:39:45ヒント:ColWidth プロパティ
0845デフォルトの名無しさん
2005/08/04(木) 11:42:18サイズを可変にしたい → そういう機能はないので自分で実装しろ
0846844
2005/08/04(木) 11:54:38“可変”だったか。
じゃあ、こうしとけ。
MSFlexGrid1.AllowUserResizing = flexResizeBoth ← この場合は行と列の両方を可変できる
0847デフォルトの名無しさん
2005/08/04(木) 12:19:21文字列に対して自動可変にしたいのか、
エンドユーザーが変えられるようにしたいのかで変わってくるからな。
だいたい「可変させたい」って表現自体がおかしいし。
0848Omoti輸卒@特殊投機強襲部隊 ◆rzOmotimAo
2005/08/04(木) 17:25:13VB6で、
「IEを起動する」
プログラムをつくりたい
どうすればいい?
0849デフォルトの名無しさん
2005/08/04(木) 17:35:56ただ起動するだけなら基本中の基本
MSDNでも読んでこい
0850デフォルトの名無しさん
2005/08/04(木) 17:54:25後者ならば、ShellExecuteEXでいけるはず、前者はしらん。
0851デフォルトの名無しさん
2005/08/04(木) 18:59:560852Omoti輸卒@特殊投機強襲部隊 ◆rzOmotimAo
2005/08/04(木) 20:47:14ぐちゃぐちゃかいてあってわからん
けっきょくどうすればつくれるんだか。
もうHSPでやちゃおうか
0853デフォルトの名無しさん
2005/08/04(木) 20:52:32ホームラン級の馬鹿だな
0854デフォルトの名無しさん
2005/08/05(金) 01:13:14よぅ中学生、夏休みの宿題か?
世の中には「質問の仕方」ってものがあるんだが、幼すぎてまだ分からんか?
0855デフォルトの名無しさん
2005/08/05(金) 04:40:54さらに、その上にRichTextBoxを配置して、RichTextBoxの背景部分を
透明化したいと思うのですが、何か良い方法は無いでしょうか?
0856デフォルトの名無しさん
2005/08/05(金) 07:46:03日本語がごちゃごちゃしてて分からないなら同意できなくもないが、
英語のどの辺りがごちゃごちゃしているんだ?
0857デフォルトの名無しさん
2005/08/05(金) 09:04:34ごめんなさい
表現が間違っていました
文字列に対して自動可変させたいのです。
宜しくお願いします。
0858デフォルトの名無しさん
2005/08/05(金) 10:44:530859デフォルトの名無しさん
2005/08/05(金) 10:52:51技術情報の部分だっけ?去年あたりに自動翻訳エンジンの文書をそのままさらすようになったの。
散々お笑いの対象になったとおもうけど 。
0860デフォルトの名無しさん
2005/08/05(金) 10:52:53その関係のテクニカルトランスレータ周囲でで作業してた事があるけど
実際、スキル低いよ。
専門分野外の人も多いし…
0861デフォルトの名無しさん
2005/08/05(金) 14:25:350862デフォルトの名無しさん
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まで
きれいにまとめるためにヒントもしくは例文教えてもらえたらと思います。
よろしくおねがいします。
0863デフォルトの名無しさん
2005/08/05(金) 15:06:520864デフォルトの名無しさん
2005/08/05(金) 15:18:52マニュアル調べたら乗ってました応用したら使えそうです。ありがとうございます。
大学でまわりに誰もプログラム使える人がいない中(教授も使えない)の独学なので、
基本すらわかってないです、申し訳ない。
0865デフォルトの名無しさん
2005/08/05(金) 15:20:29SN(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)
ループと合計算出くらいは自分で書けよ。
0866デフォルトの名無しさん
2005/08/05(金) 15:22:10配列、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
0867デフォルトの名無しさん
2005/08/05(金) 15:29:00・
・
・
・
・
・
・
・
・
・
・
・
・
・
しょぼい・・・
0868デフォルトの名無しさん
2005/08/05(金) 15:30:21ありがとうございます。
お手数をおかけしました(>_<)
熟読させていただきます
0869デフォルトの名無しさん
2005/08/06(土) 00:04:490870デフォルトの名無しさん
2005/08/06(土) 00:18:540871デフォルトの名無しさん
2005/08/06(土) 00:28:43どうやったら使えるか教えてください。
0872デフォルトの名無しさん
2005/08/06(土) 00:49:540873デフォルトの名無しさん
2005/08/06(土) 00:49:55ごめん脊髄反射レスしちゃった。
WIN32上にはIPコントロールっつーのがあるんだけど、
VB用には標準では用意されてないかも。
0874デフォルトの名無しさん
2005/08/06(土) 11:26:37TextBoxに [田] [田中] [田中 達] [田中 達也] と入力(入力者によってまちまち)されたときに
一文字ずつ配列に代入したいのですがどのようにしたらいいのか教えてください
よろしくお願いします<(_ _)>
0875デフォルトの名無しさん
2005/08/06(土) 11:40:45changeイベントで毎回0から配列作るしかないでしょ
その方法に付いては簡単なループ回すだけなので解らなければ自分で調べろ
0876デフォルトの名無しさん
2005/08/06(土) 11:40:480877デフォルトの名無しさん
2005/08/06(土) 14:15:12一文字目が'['かどうか調べてそんなら除けるだけじゃん。
VB5だからSplit使えねえって?
Split相当の関数なんて簡単にかけるでしょ。
0878デフォルトの名無しさん
2005/08/06(土) 14:34:14>>874 をよーく読み直せ。
0879874
2005/08/06(土) 15:07:36Public 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
0880デフォルトの名無しさん
2005/08/06(土) 15:14:45やってみりゃわかるだろ
0881デフォルトの名無しさん
2005/08/06(土) 15:42:20マジックナンバー(ここでは50)、イクナイ(・A・)!
Len を使って文字列の長さを予め調べておくのがよろす
0882デフォルトの名無しさん
2005/08/06(土) 23:27:29Public 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
0883デフォルトの名無しさん
2005/08/06(土) 23:30:17ReDimくらい一発で決めろ
0884デフォルトの名無しさん
2005/08/07(日) 00:13:33どうもありがとうございます Lenであらかじめ文字列の長さを調べておくのがいいのですね
さっそくそれを採用させてもらいます ありがとうございました<(_ _)>
0885デフォルトの名無しさん
2005/08/07(日) 00:56:40Text1.MultiLine = True
Text1.Text = "あいうえお" + Chr(13) + かきくけこ
これだと改行されずに一行で表示されてしまいます
こういう場合だとChr(13)は無視されるんでしょうか
改行する方法を教えてください
0886デフォルトの名無しさん
2005/08/07(日) 01:01:48Chr(13)のかわりにvbCrLf
あと.Mul
0887デフォルトの名無しさん
2005/08/07(日) 01:05:29レスありがとうございます、できました
0888デフォルトの名無しさん
2005/08/07(日) 08:34:25Option1(0)
↓
○ TextBox1
○ TextBox2
↑
Option1(1)
このようなフォームの配置をしているのですが
TextBox1に文字が入力されたらOption1(0)が選択
TextBox2に文字が入力されたらOption1(1)が選択されるようにしたいのですが
どのようにしたらいいのか教えていただけないでしょうか <(_ _)>
0889888
2005/08/07(日) 08:35:460890デフォルトの名無しさん
2005/08/07(日) 08:49:230891888
2005/08/07(日) 09:14:19Private 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
このように記述したのですがうまく機能しません・・・
どこがいけないのでしょうか><
0892デフォルトの名無しさん
2005/08/07(日) 09:53:30「TextBoxに文字が入力された」ら対応するOptionを選択したいんだろ
「TextBoxに文字が入力された」時に動くのがTextBoxのChangeイベントだよ。
まあ、正確にはイベント名でもわかるように「入力」ではなく「変更」なので
消去でも動くけど、消去の時動作させたくなければちょっと工夫すればいいだけだし。
0893デフォルトの名無しさん
2005/08/07(日) 10:56:00つーかFlagとか使うなよ
0894デフォルトの名無しさん
2005/08/07(日) 11:30:02親切ってもんだと思うんだが、なんでそんなに「教えたがり」なのかねえ。。
なにかそんなに優越感に飢えてるんだろうか。
まあ>>885,>>888みたいな人はそんな質問してる時点で(何を言おうと)見込みがないとも思うけど。
0895デフォルトの名無しさん
2005/08/07(日) 11:44:420896デフォルトの名無しさん
2005/08/07(日) 20:41:05発生するのでしょうか。
0897デフォルトの名無しさん
2005/08/07(日) 20:48:29VBのみを利用してる限りは難しいね、再現させるの。
APIとか使えば一発だけど。
0898デフォルトの名無しさん
2005/08/07(日) 21:03:33例えばどんなことをするとメモリリークするのですか?
0899デフォルトの名無しさん
2005/08/07(日) 21:08:50難しいことなんかねぇってww
>>898
Set hoge = New hogehoge
とかやって
Set hoge = Nothing
をしないだけでメモリリークするよ。
0900デフォルトの名無しさん
2005/08/07(日) 21:17:28Open "フルパス" 〜〜〜〜〜
とすると思うのですが
パスのところを
nCurrentDir = CurDir$()
Openfile = nCurrentDir & "\" & "開くファイル名"
Open Openfile 〜〜〜〜〜
としてとったのですがなぜかファイルがありませんとなってしまいます^^;
もちろん Openfileに入ってる文字列はフルパスとまったく同じになっています
もしかしてこのようなファイルの開き方はできないのですか???
0901デフォルトの名無しさん
2005/08/07(日) 21:25:39ほんと?確かめた?
ADODB.Connectionでやってみたけどリークしてないっぽいよ。
0902900
2005/08/07(日) 21:33:13読み込むファイルをExeファイルと別のフォルダに入れてたの忘れてました><
確認不足でした 無事できました ほんとすみません orz
0903デフォルトの名無しさん
2005/08/07(日) 21:35:06それ繰り返してたらリークしない?
バージョンとかオブジェクトにもよるのかなぁ。
ADODB.Connection だったら、確か Close しなきゃメモリリークした記憶が。
ここ数年、VB弄ってないんで間違ってたらごめん。
0904デフォルトの名無しさん
2005/08/07(日) 21:38:26最初にグンっと上がって後はまったいら。
これはリークではないよな。
0905デフォルトの名無しさん
2005/08/07(日) 21:41:090906デフォルトの名無しさん
2005/08/07(日) 21:52:43そんなのもう見てるよ。ググって一番上に出てくるやつだろ。
0907デフォルトの名無しさん
2005/08/07(日) 21:56:260908デフォルトの名無しさん
2005/08/07(日) 21:57:22そんなってなんだよ。俺は>>906で初めて書き込んだんだよ。
0909デフォルトの名無しさん
2005/08/07(日) 21:58:06そのページでは何も有用な結論は出ていないわけだが。
0910デフォルトの名無しさん
2005/08/07(日) 21:58:170911デフォルトの名無しさん
2005/08/07(日) 21:59:10まあそう言えばそうなるな。
0912デフォルトの名無しさん
2005/08/07(日) 23:15:10それではリークしませんよ。
VBもそこまで馬鹿じゃない。
0913デフォルトの名無しさん
2005/08/08(月) 07:13:54例えばどういうことをするとリークするのでしょうか。
簡単なサンプルをお願いしたいのですが。
0914デフォルトの名無しさん
2005/08/08(月) 09:33:53グーグルでVB6+メモリ+リーク、参照カウンタ+VB6 とかで検索してみれば?
普通にVB使う分にはまずメモリリークは発生しません。(除くコンポーネントのバグと循環参照)
言語仕様としてそうなっています。
Win32APIを使う場合は別です。メモリーを動的確保したら当然開放しないとリークですし、
広い意味ではハンドルなどの未開放もリソースのリークになります。
0915デフォルトの名無しさん
2005/08/08(月) 10:34:21それもメモリリークの一種?
0916デフォルトの名無しさん
2005/08/08(月) 11:30:20それは単なる破壊だろ?漏れてるわけじゃない。
0917デフォルトの名無しさん
2005/08/08(月) 13:14:52罵りあいの低レベルなんだな。質問のレベルの高低以前に。
0918デフォルトの名無しさん
2005/08/08(月) 21:43:23VB6.0+SP5+Win XP SP2です。
画面にコントロールを貼り付けてロジックの記述は終わったので、画面まわりを整備しようと
タブオーダーをきちんと順番に定義しようと思っています。ただ、60近くあるコントロールの
タブオーダーをいちいち変更していくのはすごく面倒です。
アドインでもなんでもいいのですが、IDE上で簡単に設定できるツールはないでしょうか。
MSDNやググってみても見つかりませんでした。よろしくお願いします。
0919デフォルトの名無しさん
2005/08/08(月) 22:10:53本当にググってる?
ググってみたら30秒で見つかったぞマジで。
http://www.gj.il24.net/~nakasima/vb/tips/#VBTIPS9
0920デフォルトの名無しさん
2005/08/08(月) 22:31:42これでいいかな?
'↓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
0921デフォルトの名無しさん
2005/08/08(月) 22:47:02まず「メモリリーク」の意味を確認することから始めたら?
http://e-words.jp/w/E383A1E383A2E383AAE383AAE383BCE382AF.html
ここの定義に従えば、VBでも悪意をもってすればメモリリークを起こすコードが書けそうだが、
ケアレスミスではあまりないかも。malloc系の処理は全部ラップされてるから。
いや、フォームに関してはミスもありうるかも。
例えばモーダレスなメッセージボックスを表示するようなフォームを作って、
インスタンスの作成元がClosed(Unloadだったかな?)イベントで
参照を解放せずに同じ変数に別のインスタンスを作成して代入する操作を
繰り返すと見えないフォームがたくさん出来る仕様じゃなかったかVB6って?
0922デフォルトの名無しさん
2005/08/09(火) 11:29:54クラスモジュールが扱うデータ量が多くて、
データをロードするときに解釈して配列に入れていくと時間がかかるんです。
クラスモジュールのポインタにメモリを確保して、
バイナリのままドカンと読み込んで使えるようになったらいいんですけど。
こういうことはC++とかじゃなきゃ無理っぽいですが、
裏技的な方法でも結構ですので、もしあれば教えてください。
0923デフォルトの名無しさん
2005/08/09(火) 12:28:54不恰好だけど、クラスのシリアル化したいメンバだけを集めた構造体を定義して、
今まで個別に宣言していたメンバの代わりにその構造体を宣言するのが
一番素直で簡単じゃないかな。
構造体ならバイナリファイルに保存/復元可能なわけだから。
まあ、シリアライズ/デシリアライズするときだけ、メンバ変数を
構造体のメンバ[へ/から]コピーするのでもいいと思うけど。
0924デフォルトの名無しさん
2005/08/09(火) 13:45:22VC++6.0でDLLを作成しています。
DLLからスレッドを作成し、コールバック関数を呼ぶ部分があります。
VC++で作成したコールバック関数は問題なく実行できますが、VB6.0
で作成したコールバック関数を指定すると、実行時にアプリが落ちて
しまいます。
ちなみに、VB6.0で作成したコールバック関数をワーカースレッドでなく、
DLLから直接呼ぶと問題なく実行できています。
別スレッドからVBのコールバック関数を呼ぶことは出来ないでしょうか?
0925デフォルトの名無しさん
2005/08/09(火) 14:27:110926デフォルトの名無しさん
2005/08/09(火) 14:44:34黙れボケ
0927デフォルトの名無しさん
2005/08/09(火) 14:50:22全然不格好じゃないです。
ユーザ定義型がまるごとPutで書き込めるとは知りませんでした。
動的配列の場合の書き込みはちょっとややこしそうですが、やってみます。
ありがとうございました。
0928デフォルトの名無しさん
2005/08/09(火) 15:34:58じゃあ、シンプルに。
VB6 の関数、コンポーネントはそもそもマルチスレッド対応ではない。
たまたま上手くいくものもあるが、そもそもVB6はシングルスレッドでの実行を前提としている。
0929デフォルトの名無しさん
2005/08/09(火) 15:52:00VBでC+で作成したATLのイベントを取得しているんですが
現状VBで作成したファイルを開くダイアログを表示している
間イベント取得処理が停止してしまいます。
これをダイアログが開いている間にもイベント取得処理をし
たいのですが何か方法はありますでしょうか。
お知恵をお貸しくださいませ、お願い致します。
0930デフォルトの名無しさん
2005/08/09(火) 16:19:41標準ダイアログはモーダルだから、自作でモードレスで同じような画面作るのがいいのかな?
コモンダイアログコントロールでそもそもモードレスできるかは自分で調べてください。
0931929
2005/08/09(火) 16:43:07お早く丁寧な回答有難う御座います。
自作する方向で考えてみたいと思います。
0932924
2005/08/09(火) 17:48:10レスどうも。
スタックをや管理情報をが壊れるのでしょうね。
別の方法を考えます。ありがとうございました。
0933924
2005/08/09(火) 17:50:01正:スタックや管理情報が
0934デフォルトの名無しさん
2005/08/09(火) 18:12:100935デフォルトの名無しさん
2005/08/09(火) 18:17:40停止しない。IDEじゃなくEXEで動かせ。
0936929
2005/08/09(火) 18:56:45有難う御座います、確認したところ動作いたしました。
危うく無駄な画面を作成するところでした有難う御座います。
よろしければ理由も教えていただけないでしょうか。
よろしくお願い致します。
0937デフォルトの名無しさん
2005/08/09(火) 19:11:53MSのサイトに書いてあったんだが、場所がもうわからん。
Windowsのメッセージのイベントの処理の関係だったかな。
IDEが食ってしまうんだ。
0938デフォルトの名無しさん
2005/08/09(火) 19:52:54有難う御座います、早速MSのサイトを調べてみたいと思います。
ご丁寧に色々教えてくださり、大変助かりました。
おかけで休暇をとる事ができそうです。
0939デフォルトの名無しさん
2005/08/09(火) 20:32:06むしろWin9xとNT系の違いのような気がしたけど。。
まあどっちにしろちょっとの手間を惜しんで、そんな予期しない再入が起こりかねないような
危ない橋を渡るのはあまり賢い選択でないと俺は思うけどね。
メッセージ表示するモーダレスなフォームなんて三分で出来ると思うけど。
0940デフォルトの名無しさん
2005/08/09(火) 20:36:52まったく違う。危ない橋なんかじゃないし。
妄想バカは黙っててくれ。
0941デフォルトの名無しさん
2005/08/09(火) 20:45:30妄想バカねえ。。
再入って言っている意味がわかってるのかな。
もちろん再入があれば直ちに危険ということはないが。。
ちょっとの手間を惜しんで後々に「気をつけて避けて通らなければならない地雷」
を残すのは愚の骨頂だと思うけどね。
しかし幼稚臭い奴だな君は。
0942デフォルトの名無しさん
2005/08/09(火) 20:50:57明らかな代替手段があるわけだから。
0943デフォルトの名無しさん
2005/08/09(火) 23:19:18ないでしょうか。
0944デフォルトの名無しさん
2005/08/09(火) 23:19:51VB6.0を使って、Word、Excel、PowerPoint 、PDFの種類のファイルを
読み込んでWord、PowerPoint 、PDFは総ページ数
Excelは、総シート数を集計するプログラムを作らなければ
いけないのですが、これらについて詳しく書いてある本が少なくて
調べられず、困っています。
どのようにすれば、取得できるのでしょうか?
是非お知恵をお貸しくださいますよう、よろしくお願いいたします。
0945944
2005/08/09(火) 23:21:250946944
2005/08/09(火) 23:22:34開発環境:VB6.0
で開発しています。
よろしくお願い致します。
0947デフォルトの名無しさん
2005/08/09(火) 23:52:10それぞれOLEで連携してやれば出来ると思うけど。
参照設定すれば、VBAと同じようにそれぞれのオブジェクトを触れる。
どのオブジェクトの何を参照するかは、それぞれのVBAのヘルプを参照。
ExcelはWorkBookのWorkSheetsコレクションのCountかな?
PDFは最近このスレで確か質問あったはず。
その他はしらん。
0948デフォルトの名無しさん
2005/08/10(水) 00:07:120950944
2005/08/10(水) 00:15:12947氏様、返答ありがとうございました。
0951デフォルトの名無しさん
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
0952デフォルトの名無しさん
2005/08/10(水) 11:26:29MScommコントロールを使ったプログラムを、
他のパソコンで実行しようとすると、
「共通言語ランタイム デバック サービス
アプリケーションでハンドルできない例外が発生しました」
と出るのですが、これを改善するにはどうしたらいいでしょうか?
XPをサービスパック2に、.NET Framework1.1をサービス パック1にしてます
0953デフォルトの名無しさん
2005/08/10(水) 11:46:58ADOについてですが、
アクセスのクエリに2つのパラメータを作成しておいて、
VB上で動かしたいんですが
どうすればよろしいですか?
0954デフォルトの名無しさん
2005/08/10(水) 11:58:51どうやればよろしいか?
↓"文字列"にタブの挿入をお願いします。
Label.caption = "文字列"
0955デフォルトの名無しさん
2005/08/10(水) 13:28:35こういう事?
0956デフォルトの名無しさん
2005/08/10(水) 14:35:25こちらで試したがpicture1とそっくりなものが保存されてたよ。
0957デフォルトの名無しさん
2005/08/10(水) 14:43:060959デフォルトの名無しさん
2005/08/10(水) 16:23:58プロパティーウィンドウの左に半角で(テキスト)、右にドロップダウンボタンが表示され
改行入力できるプロパティの作り方が分かりません。
(例えるならMultiLine=True時のTextBox.Text)
どのような型を使えば使えるようになりますか?
0960デフォルトの名無しさん
2005/08/10(水) 17:51:47ボタンを押すとデータのリストを表示する方法ってありませんか?
ボタンの表示まで出来ています。
0961デフォルトの名無しさん
2005/08/10(水) 23:43:11Picture1.Circle (200,200), 100, RGB(255, 0, 0)
Picture1.End Doc
プリンター出力だとガタガタがなくなります。
0962デフォルトの名無しさん
2005/08/10(水) 23:44:43当たり前だ。クソして寝ろ。
0963デフォルトの名無しさん
2005/08/11(木) 07:22:34スタックが壊れると言うよりも、VB6.0のIDEがマルチスレッドを意識して作られていないだけ。
ついでにVB6.0もマルチスレッドを前提に作られているわけじゃないので、大抵は問題なく動くが止めとけ。
0964デフォルトの名無しさん
2005/08/11(木) 08:52:49何で
偉い人教えて、BMPに綺麗な円を描く方法教えて
0965デフォルトの名無しさん
2005/08/11(木) 10:15:56自己解決しました。
0966デフォルトの名無しさん
2005/08/11(木) 11:50:07DPIの違い
プリンタが600DPIだとしたら、普通のディスプレイに比べて約36倍細かく描画できる。
PCのモニタなんてモザイク映してるようなもん。
0967デフォルトの名無しさん
2005/08/11(木) 13:55:37何列目の何行目にあたるかを調べる良い方法は無いでしょうか?
今はループを回して0行目から行高を加算していき、合計がy以上になる位置を探したりしてます。
全ての行高が同じ場合や規則性が有る場合は計算で出せるから良いのですが、
列幅は不定なことが多いし、行高も不定な場合は上記のようにループ回す方法しか思い浮かびません。
数千行とかになるとはっきり体感出来るほどレスポンスが悪くなるので、
何か良い方法をご存じの方が居りましたらどうかご教示願います。
0968デフォルトの名無しさん
2005/08/11(木) 13:59:13>>966
それだけじゃ納得しないでしょ。
俺が964的な人だとしても、「だってフラッシュとか見れば現に滑らかな円が描けてるじゃん」
って思うもん。
>>964
まずはアンチエイリアスって技術(そんな大げさなもんでもないが。。)が
どういうものか調べてみたら?ネタじゃないなら。
で、VBでアンチエイリアスかけて図形を描画する方法だけど、残念ながら
簡単には実現できないと思った。DirectX使わないとできない?
.NETのGDI+にはアンチエイリアスの機能があるんだけどねえ。。
まあアンチエイリアスの考え方そのものは難しくないから、
気合入れれば自分で実装できないことはないとは思うけど。(パフォーマンスはともかく)
0969デフォルトの名無しさん
2005/08/11(木) 14:49:23普通にRow, Colじゃダメなの?
0970967
2005/08/11(木) 14:56:00非固定セルの左クリックの場合ならそれでもいいんですが、
右クリックや固定行列だと選択セルが移動しないので
Row, Colプロパティでは取得できません。
0971デフォルトの名無しさん
2005/08/11(木) 16:26:13この場合、「MSFlexGridのエリア内であっても、セルがない場所」をクリックする場合もあると思うので、
あなたがやっているように、計算で求めるしかないでしょう。(いい方法があるかもしれませんが。。。)
しかし、ループを回して、その都度コントロールから値を取得するのは、時間がかかるため、
あらかじめ、行高と列幅の値を配列に格納しておいて、イベント時にはその配列から
計算するようにしてみてはいかがでしょうか?
行高と列幅がそれぞれ変更になったときは、その都度配列の値を変更するようにして。
0972デフォルトの名無しさん
2005/08/11(木) 20:20:02保存した画像を自動ズームで見てるから。
0973デフォルトの名無しさん
2005/08/12(金) 09:23:22MouseRowとMouseColじゃだめなん?
0974デフォルトの名無しさん
2005/08/12(金) 09:52:100975デフォルトの名無しさん
2005/08/12(金) 11:41:080976デフォルトの名無しさん
2005/08/12(金) 11:42:14Variantを返すかStringを返すか
0977デフォルトの名無しさん
2005/08/12(金) 12:10:46返り値をString型にしか入れないならLeft$の方が高速らしい。
0978975
2005/08/12(金) 15:17:40ありがとうございます!
0979デフォルトの名無しさん
2005/08/13(土) 12:09:31VB6で作ったアプリで、他のアプリから開いてるコモンダイアログの
カレントフォルダパスを取得したり、任意のフォルダに移動させたりしたいのですが
やり方がわかりません。
この手の機能を実装してるアプリでVBのソースを公開しているものも見あたらず
ググっても手がかり無しです。
丸投げになってしまいますが、具体的なコード書けるベテランの方、どうかよろしく御願いします。
0980デフォルトの名無しさん
2005/08/13(土) 12:43:28実装してるアプリでVB製のものの具体名は?
0981デフォルトの名無しさん
2005/08/13(土) 12:50:55>>980に騙されるな。安易に答えちゃダメだよ。危険!
0982デフォルトの名無しさん
2005/08/13(土) 13:14:13ヤフーオークションの出品終了分の一覧をテキストに吐き出すツールを作りたいのですが、
いままでVB6はそれなりに触ってるのですがなにからはじめればいいのかけんとうもつきません。
どなたかこれを実現する方法しりませんか?
0983デフォルトの名無しさん
2005/08/13(土) 13:18:57知ってますが、なぜ「いままでVB6はそれなりに触ってる」のような
ウソをつくのか説明してください。
0984デフォルトの名無しさん
2005/08/13(土) 13:26:33ウソじゃないですよー
家計簿みたいなものからAPIを利用して画像を加工するようなツールぐらいまでなら作ったことありますもん
0985デフォルトの名無しさん
2005/08/13(土) 13:28:38また他のアプリか・・・それやりたきゃOSの仕組みから勉強しろって言いたい。
こんなところで聞く程度のレベルで作るなと。
>>982
まず日本語の勉強を、何をしたいのか一切伝わりません。
とりあえず2行目読む分には、横にちらしを置いておいて裏に書いておけば?って思うけど。
0986デフォルトの名無しさん
2005/08/13(土) 13:39:54必要になるわけでもないことを聞き返したり
むやみに罵倒したりするのは止めよう
解らなければレス返さなければいいだけ
0987デフォルトの名無しさん
2005/08/13(土) 14:06:540988デフォルトの名無しさん
2005/08/13(土) 14:37:250989デフォルトの名無しさん
2005/08/13(土) 14:42:40放っておいてあげようよ
0990デフォルトの名無しさん
2005/08/13(土) 14:43:01WebBrowser1.Document
0991デフォルトの名無しさん
2005/08/13(土) 15:00:37検索してみましたが、書籍の付録しか無いのでしょうか?
ダウンロード出来るサイトがあれば是非教えて下さい。
0992デフォルトの名無しさん
2005/08/13(土) 15:06:500993デフォルトの名無しさん
2005/08/13(土) 16:39:52作ったことありますもん
に萌えた。
0994デフォルトの名無しさん
2005/08/13(土) 16:46:13作ったことありますんもん
ならw
0995デフォルトの名無しさん
2005/08/13(土) 17:07:180996デフォルトの名無しさん
2005/08/14(日) 22:38:18HTML解析してって話だろ?
InStrつかって "<" の位置を検索してなんてやめてくれよ。。。
XMLHTTPRequestでHTML取得してMSHTMLでローカル展開すればスマート
分からなければ >>990 の方法で
MSHTMLはDHTMLのだから、VBよりもDHTMLの勉強しろ
0997デフォルトの名無しさん
2005/08/14(日) 22:55:53そうでもない。
0998デフォルトの名無しさん
2005/08/15(月) 10:58:350999デフォルトの名無しさん
2005/08/15(月) 11:03:111000デフォルトの名無しさん
2005/08/15(月) 11:16:40http://pc8.2ch.net/test/read.cgi/tech/1123952677/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。