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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
ここは Visual Basic 〜6.0 の質問スレです。
質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。

VB.NETは別物なので専門スレで、VBA、APIの質問もそれぞれのスレで。

○ 質問者の心得
 一.質問する前にMSDNやGoogle、過去ログにも目を通してみる。
 二.VBScript、インストーラーなどはこのスレでOK。
 三.質問は第三者にもわかりやすいよう簡潔かつ具体的に。
 四.荒らしは相手しない。

○ 回答者の心得
 一.答えられない質問は無駄に罵倒せずスルー。無理するな。
 二.代用法を強制しない。
 三.回答する上で必須ではない情報をむやみに聞き返さない。
 四.荒らしは相手しない。
 五.VB情報募集中。
 六.回答は質問者が理解できるよう具体的に。

MSDN Online Japan ホーム
 http://www.microsoft.com/japan/msdn/default.asp
Visual Studio 6.0 Service Pack 6
 http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx
Google
 http://www.google.co.jp/

※「まず自分で調べる」クセを身につけよう。
2デフォルトの名無しさん:2007/08/21(火) 22:26:25
[VB6、WindowsXP]
リストボックスにカーソルがある時に
↑↓キー以外にも←→キーでも選択行が変わりますが
←→キーで選択行を変更したくない場合は
どのようにすれば良いのでしょうか?
プロパティかなにかで止められないでしょうか?
3デフォルトの名無しさん:2007/08/22(水) 16:05:42
ヒント:keydownイベント
4デフォルトの名無しさん:2007/08/22(水) 16:14:04
>>3
キーダウンイベント有無関係ナシに
リストボックスのIndexは移動しないか?

イベントで動いた分強制的に戻すなら・・・
5デフォルトの名無しさん:2007/08/22(水) 17:27:44
KeyDownイベントで「お前なんか無かったことにしてやるー」とするのが簡単
6デフォルトの名無しさん:2007/08/22(水) 17:31:43
>>4
はい。キーイベント関係なしに動きます。
強制的に戻そうにも、タイミング的にどうすれば良いものか。。。
実はずっと探してはいたのですが、リストボックスコントロールの
制御後にイベントを発生させることができれば可能だとは思います。
しかし、コーディング的にはすっきりしません。

別の方法も模索中ですが、横スクロールバーを追加すると、
←→を押していると左右に少しずつ移動し(格好悪い)て、
一番端に来るとやっぱり上下に移動してしまいます。。。
この方法ではできませんでした。
なんとかならないものでしょうか(泣)
7デフォルトの名無しさん:2007/08/22(水) 17:35:07
>5
なかったことにしてやりたいですw
もしかして私は何か間違ってるでしょうか?
KeyDownとは無関係にリストボックスの上下移動をしているように思います
8デフォルトの名無しさん:2007/08/22(水) 19:34:30
はぁ…
結構頻出なんだけどな

Option Explicit
Private WithEvents lstbox As ListBox
Private Sub Form_Load()
Dim i As Long
Set lstbox = Me.Controls.Add("VB.ListBox", "lstox")
With lstbox
.Move 0, 0, 3000, 5000: .Visible = True
For i = 1 To 100: .AddItem i: Next
End With
End Sub

Private Sub lstbox_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyLeft Then KeyCode = 0
End Sub
92:2007/08/22(水) 19:44:02
>>8
申し訳ありません。
いろいろやって、自分でも結論が出ました^^;
やはり間違っていたようで、キーイベントで拾って処理する事ができました。
おっしゃる通り、keycodeを0にすれば良かったです。
昨日から何度も目にしていたのですが、リストボックスの制御する事で
頭がいっぱいになっておりました><;
本当に申し訳ありませんでした。
10デフォルトの名無しさん:2007/08/22(水) 23:37:56
COM コンポーネントを生成するのに
New するのと CreateObject を使うのと、何か違いはあるのでしょうか?
パフォーマンスに差があったりしますか?
11デフォルトの名無しさん:2007/08/23(木) 00:18:13
プロジェクトのプロパティの「デバッグ」タブに
「使用中のブラウザに表示する」というチェックボックスがありますが、
これは何なんでしょうか?
12デフォルトの名無しさん:2007/08/23(木) 00:43:01
13デフォルトの名無しさん:2007/08/23(木) 07:17:01
[VB6、WindowsXP]
VBでCOMコンポーネントを作成していて
DLLが置いてあるディレクトリにあるファイルを読み込む必要があるのですが
自分がインストールされているディレクトリのパスを取得する方法はありますでしょうか?
14デフォルトの名無しさん:2007/08/23(木) 10:49:02
つ「Appオブジェクト」      〜〜〜(App.Path)
15デフォルトの名無しさん:2007/08/24(金) 00:15:46
フォームからフォーカスが外れたときなのですが、
LostFocusイベントで取得するのはムリでしょうか?
16デフォルトの名無しさん:2007/08/24(金) 02:14:41
ブレークポイント置いて調べりゃいい
17デフォルトの名無しさん:2007/08/24(金) 13:11:06
ASPから使うActiveX DLLを開発しています。
できることならWebサーバにもVBを入れてこのDLLをデバッグしたいのですが、
本番サーバと環境に違いが出てしまうので、サーバにはインストールできません。
ASPからDLLが呼びだされたときに、他のマシンにインストールしたVBを使って
フックしてデバッグすることはできないでしょうか?
18デフォルトの名無しさん:2007/08/24(金) 16:36:31
[VB6,WindowsXP]
一度読み込んだ写真を再度表示する際は、
高速に表示できるような処理を行いたいと考えています。
どなたかご存知であれば、ヒントご教示願います。

[詳細]
フォルダから読み込んだ写真ファイルをリストボックスに表示させ、
リストボックスの選択した写真をイメージプロパティに表示させています。
(2メガ程度の写真を数百枚扱います)
一度読み込んだ写真を再度表示する際に、Image1.Picture = LoadPicture(List1)
としていますが、これだと再読み込みになってしまい表示が遅いです。
Image1.Pictureの値には「923075963」のような数値が入っているので、
これを使えないかと思い、いろいろ調査してみましたが、わかりませんでした。
19デフォルトの名無しさん:2007/08/24(金) 19:06:53
>>18
VB6に向かない仕事だと思う。
またVB6以外を使うとしても根本的は解決法はない。
せいぜい「直前にみた画像」を数枚メモリにキャッシュしておく程度の
工夫しかできないと思う。

というか、数メガ程度の画像の読み込みが遅いってことはそもそもないと思うんだけどどうだろう。

どうでもいいけど言葉は正確に使うべきだし使おうとすべきだ。
君の文章にはやたらと「読み込んだ」という表現が出てくるが、
いったいどういう意味でその「読み込んだ」という言葉を使っているのだろう。
2018:2007/08/24(金) 21:06:25
>>19
レスありがとうございます
そうですか。解決法は無いのですか。。。><

>というか、数メガ程度の画像の読み込みが遅いってことはそもそもないと思うんだけどどうだろう。
これは300K程度の軽いものに比べて遅いという意味です。
自作のPGで、一度表示した写真を
Set Image2.Picture = Image1.Picture
のように別のイメージプロパティからセットすると、表示が早かったので
Image1.Pictureの情報がメモリか何かに格納されているのでは無いかと思いました。
それならフォルダ内の写真をメモリに先読みすれば良いのかなと思った次第です。

>いったいどういう意味でその「読み込んだ」という言葉を使っているのだろう。
Image1.Picture = LoadPicture(List1)のような事を指しています。
「読み込んだ」だと表示されていない印象を受けるので、「表示」と書けば良かったと思います。

結果として、私の思っていたような事はできないものとして、
裏処理として、写真枚数だけイメージプロパティを追加する処理を
試してみたいと思います。(非常に重くなりそうな予感ですが。。。)
どうもありがとうございました。(^^)
21デフォルトの名無しさん:2007/08/24(金) 21:10:40
>>18
Pictureオブジェクトをコレクションか何かで持っておいて
set image1.picutre = obj
とかやればいいんじゃない?
でも、これだと数百枚x2Mじゃ問題あるので
キャッシュアルゴリズムやリングバッファのようなものを実装する必要があるかな
2218:2007/08/24(金) 21:11:01
間違えましたw
イメージプロパティ追加じゃなくて、メモリにキャッシュでしたw
23デフォルトの名無しさん:2007/08/24(金) 21:11:44
あれ、なんか書き込んでる最中に解決してたかw
2418:2007/08/24(金) 21:13:19
>>21
キャッシュアルゴリズムやリングバッファですか〜
早速調査してみます。
レスありがとうございます(^^)
2518:2007/08/24(金) 21:14:46
>>23
どうやらそのようですw
後は私のがんばり次第という事で、締めくくりたいと思います(^^)
26デフォルトの名無しさん:2007/08/24(金) 22:13:31
こいつの言い方、すごくムカつくな
27デフォルトの名無しさん:2007/08/24(金) 23:48:07
VBのテキストボックスに入力した情報をエクセルで出力するにはどうすれば良いですか?
28デフォルトの名無しさん:2007/08/25(土) 02:30:00
藻前等前スレ埋めれ。
まだ952だぞ。
29デフォルトの名無しさん:2007/08/25(土) 15:45:07
>>27
手っ取り早いのはCSV形式で保存させてしまうこと。
後何か聞きたいことがあるなら前スレ使って。
http://pc11.2ch.net/test/read.cgi/tech/1179563617/
30デフォルトの名無しさん:2007/08/25(土) 18:27:58
31デフォルトの名無しさん:2007/08/25(土) 22:21:50
[VB6、WindowsXP]

Dim a(,) As Integer
a= New Integer(,) {0,300,400,400,500,600,700,800}
           {400,500,700,800,1000,1200,1300,1500}
           {700,1000,1300,1600,2000,2000,2000,2000}
           {1300,2000,2000,2000,2000,2000,2000,2000}

ローカルレベルでこのように配列を宣言したのですが
・配列初期化子の次元が少なすぎます。
・構文エラーです。
とエラーが出てしまいます。
この宣言、初期化の仕方のどこがおかしいのでしょうか?
32デフォルトの名無しさん:2007/08/25(土) 22:26:03
>>31
ほんとにVB6か?
33デフォルトの名無しさん:2007/08/25(土) 22:33:07
>>32
え〜と間違えましたVB2005です。すみません
34デフォルトの名無しさん:2007/08/25(土) 22:49:26
VBは2005になってもやっぱり _ で継続行にしないといかんのな。
そろそろやめてほしい。
35デフォルトの名無しさん:2007/08/26(日) 01:02:07
VB勉強しはじめて間もない者です。
配列には数値以外にも画像を格納する事ができるんですよね?
.gif画像を格納したいんですけど
数値を格納する時と違ってどのように書けばよいのでしょうか。


36デフォルトの名無しさん:2007/08/26(日) 01:14:20
>>35
今からでも遅くは無い
VBはやめとけ
他の言語にしろ
37デフォルトの名無しさん:2007/08/26(日) 01:17:43
初心者です。
クラスとコレクションの違いを教えてください。
38デフォルトの名無しさん:2007/08/26(日) 01:18:07
>>29-30
ありがとうございます
39デフォルトの名無しさん:2007/08/26(日) 01:21:12
>>36
やめたほうがいいと思う理由はなんですか?
40デフォルトの名無しさん:2007/08/26(日) 01:25:05
>>35
>>37
初心者ということが、決して免罪符にならにということは覚えておいた方がいい

とりあえず、オブジェクト指向の本を読んでクラスについて勉強を
コレクションはとりあえず、忘れてOK
41デフォルトの名無しさん:2007/08/26(日) 02:56:17
>>35を誰かお願いします;;
42デフォルトの名無しさん:2007/08/26(日) 03:43:38
>>41
つ「GetObject」 「gif フォーマット」
43デフォルトの名無しさん:2007/08/26(日) 10:12:36
>>41
その書き方だと何をしたいのかがわからないんだよ
初心者だから説明のしかたがわからないというのはわかるんだけど
配列にgifファイルをどのような形で保存したいと思っているのか?
pictureオブジェクト?ファイル内容をそのまま?展開したビットマップ?
せめて、その配列を用いて何がしたいのかを書いてくれ
44デフォルトの名無しさん:2007/08/26(日) 10:39:00
というか、初心者が(基本的な内容の学習を欠いたまま)「自分のやりたいこと」に向かって
直線的に進もう、という態度がそもそも間違い。
45デフォルトの名無しさん:2007/08/26(日) 12:11:19
IDEでデバッグ実行しているとき以外にもなんらかの方法で
Debug.Printの出力を表示させることはできないでしょうか?
46デフォルトの名無しさん:2007/08/26(日) 16:04:45
>>45
debug.printはやったこと無いのでわからんが
OutputDebugStringなら出力できるよ
VC6持ってればの話だけど
47デフォルトの名無しさん:2007/08/27(月) 15:17:27
実行時にならどこかにログを吐かせるんだが。そうじゃないのかな?
48デフォルトの名無しさん:2007/08/27(月) 18:29:55
OutputDebugStringはできたので、Debug.Printも同様な方法があるんじゃないかと
思って聞いてみたのですが。
Debug.Printを入れた時と消したときで、コンパイルしてできたexeファイルに差異がありますし。
49デフォルトの名無しさん:2007/08/27(月) 22:54:45
ちょっとお尋ねしたいのですが、
VB6で特定のフォームを表示しているフォームのすぐ背面に
持ってくることは可能でしょうか?
ウインドウズ任せでなく、任意の表示順にしたいのですが、
なかなかいい方法が見つからなくて困っています。
よろしくお願い致します。
50デフォルトの名無しさん:2007/08/27(月) 23:01:14
VBでサムネイルを作る最も良い方法を教えてください。
よろしくお願いします、
51デフォルトの名無しさん:2007/08/27(月) 23:29:24
>>49
つ「Moveメソッド」「Zorder」
52デフォルトの名無しさん:2007/08/27(月) 23:30:39
>>50
つ「StretchBlt」
53デフォルトの名無しさん:2007/08/27(月) 23:31:52
>>49
win32APIのSetWindowsPosを使う

>>50
まず、そのサムネイルはどのような形でVBから扱えるのかを教えて
54デフォルトの名無しさん:2007/08/29(水) 15:39:25
>>前スレ998
終わったスレは邪魔にしかならない。
とっととDAT落ちするように埋めることの何が悪い。

今後もアクセスされるべき重要な情報があれば、
とっくにどっかの誰かが引用なりなんなりしてるわ。
55デフォルトの名無しさん:2007/08/29(水) 15:59:33
980越えていれば24時間ほど書き込み無ければ自動的に落ちるが中途半端に埋める馬鹿で延命
遅いスレで950で次を立てると両方のスレでグダグダ
次スレを立てるタイミングを考えろ糞野郎って事だ
56デフォルトの名無しさん:2007/08/29(水) 16:05:06
まあまあ
VBを愛する者同士仲良くしようZE☆
57デフォルトの名無しさん:2007/08/30(木) 21:14:38
すみません、ちょっとお伺いしたいのですが、例えばフォームにテキストボックスを2つ(Text1、Text2)、
マスクエディットコントロールを2つ(MaskEdBox1、MaskEdBox2)を貼り付けただけのものを起動させ、
別途作ったプログラムからAPIを使ってこのフォームのコントロールに値を入力したいと考えています。
その場合まずFindWindowでフォームのウインドウハンドルを取得して、その子ウインドウ(コントロール)
のハンドルをGetWindowで取得するところまではできたのですが、取得したハンドルが4つのコントロール
のどれにあたるのかの判別方法がよくわからないのです。
GetWindowTextを使うとテキストボックスであればデザイン時に設定しておいたTextプロパティの値が取得
できるようなのですが、マスクエディットコントロールにはTextプロパティが無いようなので何も取得出来ず、
判別が出来ませんでした。
今はGetWindowPlacementでウィンドウの描画位置を取得して何とか判別できるようになったのですが、これ
だとフォームのデザインを変更するたびに別途作ったほうのプログラムも修正しなければなりません。
もし何かもっとスマートなやり方がお解かりになる方がおりましたらどうかご教授願えないでしょうか?
どうぞよろしくお願い致します。
58デフォルトの名無しさん:2007/08/30(木) 23:32:21
>>57
長いからななめ読みし貸してない
とりあえずMSDNはみた?
59デフォルトの名無しさん:2007/08/30(木) 23:44:58
>>58
はぁ?何が言いたいんですか?
60デフォルトの名無しさん:2007/08/31(金) 00:43:34
>>57
>もし何かもっとスマートなやり方がお解かりになる方がおりましたらどうかご教授願えないでしょうか?

君は一つ一つの文を短くしたほうが良いよ。
61デフォルトの名無しさん:2007/08/31(金) 10:20:55
>>57
一つ聞きたいけど、MaskEdBoxに値を入力しているのはどうやってやってるの?
GetWindowTextが出来ないんじゃ、SetWindowTextも出来ないのでは?
62デフォルトの名無しさん:2007/08/31(金) 11:04:00
>>57
VB側プログラムが普通の作りなら
GetWindowLong(hwnd, GWL_ID)
で特定できる可能性はある

VB側プログラムを自由に変更できるならSetPropでプロパティを付けておけばよい
63デフォルトの名無しさん:2007/08/31(金) 11:29:06
特定するだけなら、62の方法でいいな
もしくはGetWindowLongで、UserDataを与えておくとか
64デフォルトの名無しさん:2007/08/31(金) 11:29:52
間違えた、SetWindowLong
6557:2007/08/31(金) 19:42:01
>>61
SetWindowTextは別アプリに対しては使えないそうです。別アプリの場合はSendMessageのWM_SetTextで
やるみたいです。
でも確かにマスクエディットにはTextプロパティがないので、仕方がないのでSendMessageのWM_KeyDown
で1文字ずつ送ろうと思ってます。まだ試していませんが。。。

>>62
おっしゃられているウインドウのIDというのが難しくてよくわかりません。
ここのサイト(ttp://www.winapi-database.com/Window/Class/GetWindowLong.html)でGetWindowLongのサン
プル(マウスカーソルの位置にあるウインドウの情報を得るもの)をダウンロードして、コントロールを色々貼り付
けてテストしましたが、GWL_IDはテキストボックスだとText1とText2でそれぞれ違う値になるのですが、コンボボ
ックスだと全部同じ値になってしまい、これだと判別出来ないのでは?と思いました。というかそもそもウインドウ
のIDというものがどういう使われ方をするものなのかがわからないのでそれ以前の問題なのですが。。。

>>63
同じ理由でUserDataというのもよくわかりませんw
できればフォーム側のプログラムに手は加えたくないです。


お答え頂いたみなさんどうもありがとうございます。
ご提示頂いた方法を調べる過程で色々と勉強になりました。
一応GetWindowPlacementでやりたいことは実現出来ているので、もっと良い方法は気長に探そうと思います。
66デフォルトの名無しさん:2007/09/01(土) 17:43:48
>>65
だから、とりあえずMSDNオンライン見れと:
http://msdn2.microsoft.com/en-us/library/ms633591.aspx
67デフォルトの名無しさん:2007/09/01(土) 18:35:45
[XP,VB6]
初心者質問で申し訳ありませんが、調べてもわからなかったので、
教えて頂けますか?

[質問]
FORM_LOADの時にsetfocusすると
「プロシージャ呼び出し、または引数が不正」となり処理中止します。
ある条件の場合はフォーカスを変えたいのですが、
この場合、tabindexなどを全て変更したりする必要があるのでしょうか?
また別の方法があるでしょうか?
これに付随して、IMEプロパティもオフにしたいのですが、
リストビューに存在しないので設定方法がわかりませんでした。

宜しくお願い致します。
68デフォルトの名無しさん:2007/09/01(土) 19:06:48
>>67
Load時はまだオブジェクトが出来ていな状態だから、
TabIndexを一番低い値にするとか、
ロードした後にsetfocusするとかしかない
69デフォルトの名無しさん:2007/09/02(日) 00:24:38
>>67
もしくはForm_Activeで出来るかな。試してないのでよろしく
70デフォルトの名無しさん:2007/09/02(日) 00:41:07
form.show
form.setfocus
7167:2007/09/02(日) 04:31:38
>>68 >>69 >>70
みなさんありがとうございます。
70さんの方法で、
Form1.Show
ListView1.SetFocus
とすれば、ロード時のセットフォーカス実現できました!
showすれば良かったのですね^^
ありがとうございました!
72デフォルトの名無しさん:2007/09/02(日) 16:27:07
フォルダにあるテキストをリストボックスに表示しているのですが<BR>
リストボックスでテキストをダブルクリックして表示させることはできますか?<br>
また、サンプルプログラムとかありますか?
73デフォルトの名無しさん:2007/09/02(日) 17:06:26
>>72
> フォルダにあるテキストをリストボックスに表示しているのですが<BR>
> リストボックスでテキストをダブルクリックして表示させることはできますか?<br>
> また、サンプルプログラムとかありますか?

フォルダにアルテキストを(リストボックスに)表示させているのに、
なんで、ダブルクリックして表示させにゃならんの?不思議
74デフォルトの名無しさん:2007/09/02(日) 22:51:07
>>72
意味不明だからもうちょっと分かり易く、やりたいことを具体的に日本語でOK。
75デフォルトの名無しさん:2007/09/02(日) 23:53:12
イントラネットに接続されている機器のIPアドレスをMacアドレスを
指定して習得したいのですが可能ですか?
サンプルなどありましたら、提供していただけると助かります。
76デフォルトの名無しさん:2007/09/03(月) 00:25:08
>>75
参考:
rarpに対応して撥ねない機器なら、rarpを使ってできるかも?
77デフォルトの名無しさん:2007/09/03(月) 01:17:14
>>72
リストボックス内にテキスト形式のファイル名でもリスト表示しているのか?
でテキストボックスに選択したテキストファイルの内容を表示?
つ「DblClickメソッド」
優しすぎるか?
78デフォルトの名無しさん:2007/09/03(月) 14:36:25
ファイルの削除にKILLコマンドを使うのはお薦めできないらしいのですが
どのような理由か教えてください。
79デフォルトの名無しさん:2007/09/03(月) 20:59:02
>>78
よく分からないけど、指定されたファイルがなかったら or 削除出来なかったらエラーが出るくらいしか思いつかん
on error 〜で引っかけて対処しておけばエラーで止まることもないから俺は使ってるけど
80デフォルトの名無しさん:2007/09/04(火) 01:10:23
そういえば、VBでKillコマンドって使ったこと無いな
なんかkillっていうと、プロセスの強制終了ってイメージがある
81デフォルトの名無しさん:2007/09/04(火) 02:51:33
>>78
今の今まで聴いたことが無い
ソース見せてくれ
82デフォルトの名無しさん:2007/09/04(火) 09:01:32
そういえばなにげにFSOつかうよな・・・・
確かFSOは条件少し指定できたっけ?
忘れたが
8378:2007/09/04(火) 09:17:33
>>79-81
レスありがとうございます。

>>79
ファイルが無いとか、ロックされているケースは私もon error で対処しています。
これだけの問題ならKILLを使いたいと思います。

>>81
「kill vb  ファイル 削除 (お勧めしません)」 でググってみて下さい。
ちなみにそのサイトでは、
System.IO.File クラスの Delete メソッドを使用する事がお薦めのようです。

この方法は、Microsoft Scripting Runtimeにチェックを入れたり、
インスタンスの生成や、使用後の参照の開放等、手続きが面倒なので
KILLを使いたいのですが深刻なバグがあるのなら、
Deleteを使用した方が良いと思い、質問させて頂きました。


8483(78):2007/09/04(火) 09:21:32
すいません間違えました。
>>82さんの言うFSOでした。

正 FileSystemObject (FSO) の DeleteFile メソッドを使用する事がお薦めのようです。
誤 System.IO.File クラスの Delete メソッドを使用する事がお薦めのようです。


85デフォルトの名無しさん:2007/09/04(火) 10:34:51
Killで問題になるとすればユニコードのみの文字を使ったファイル名かな
86デフォルトの名無しさん:2007/09/04(火) 11:08:18
FSOはWindowsScriptHostについてくるコンポーネントだっけ?
VB6標準のじゃないってことを理解して使ってればOKだけど
客先に入れたら動かんってことも結構ある。
87デフォルトの名無しさん:2007/09/04(火) 12:19:40
>>86
インストーラー作れば問題ないな
というか、VBで作ったソフトの場合インストーラー必須じゃない?
88デフォルトの名無しさん:2007/09/04(火) 12:21:13
ライセンス上問題だと思いますが。。
89デフォルトの名無しさん:2007/09/04(火) 13:00:48
FSOは再配布出来ないのか
じゃあ、IExx必須とやるしかないな
90デフォルトの名無しさん:2007/09/04(火) 14:24:35
あの、日本語を指摘するかたはそれでもプログラマーですか
コードの「読み」書きが最も大切だと習わなかったのですかね
91デフォルトの名無しさん:2007/09/04(火) 14:44:54
仕様と違ってたらそのプログラムは使えん。
日本語が不自由な奴が仕様を正しく理解できるとは思えん。

>>90 みたいなプログラマーはいらん。
92デフォルトの名無しさん:2007/09/04(火) 16:23:04
フォルダ単位を実行する時はFSOで
内部で作る作業ファイルとかはKILLだな

KILLは確かに好ましくないって聞いてるけど
楽なんだよな('A`)
93デフォルトの名無しさん:2007/09/04(火) 17:25:42
>>89
WSH単体のインストーラも公開されている。

しかもWindows 98/2k以上には何らかのバージョンがインストール済みなので、
バージョンの違いに頭を抱えなくて済むならそれでいい。
94デフォルトの名無しさん:2007/09/04(火) 17:26:21
>>91
その言い草はなんです!
あなたみたいなプログラマー(かどうかも疑わしい)こそいりません
95デフォルトの名無しさん:2007/09/04(火) 17:26:45
>System.IO.File クラスの Delete メソッドを使用する事がお薦めのようです。
VB6じゃない
96デフォルトの名無しさん:2007/09/04(火) 17:27:22
ごめん後のレス見てなかった
97デフォルトの名無しさん:2007/09/04(火) 17:47:41
>>94
人の日本語にはケチをつけるのかw
98デフォルトの名無しさん:2007/09/05(水) 12:00:52
[XP,VB6]
宜しくお願いします
エクスプローラからフォルダをVBで作成したツールにドラッグし、
ツール側で内容を読み込んでいるのですが、
ドラッグされた際に、エクスプローラよりも背面になっています。
なんとか前面に表示させたいのですが、良い方法があればお教え願えますか?
99デフォルトの名無しさん:2007/09/05(水) 17:14:29
常にウインドウを手前に表示したいってこと?
Win32APIのSetWindowPosできたはず
VB6 SetWindowPosでぐぐればサンプルみつかる
100デフォルトの名無しさん:2007/09/05(水) 17:41:48
>>98
ドラッグ先の自作アプリが手前にあり、エクスプローラが後ろにいる状態で
エクスプローラのファイルをドラッグ&ドロップしても、自アプリが後ろに来ちゃうって事?
それとも、一度エクスプローラをカレントにしてからと言う事?
101デフォルトの名無しさん:2007/09/05(水) 18:18:36
普通にどこかのコントロールにSetFocusすればいいはず
10298:2007/09/06(木) 12:32:23
返事遅れて申し訳ありません
常に前面では無く、エクスプローラから
フォルダをドラッグされて、処理する場合に前面に表示したかったのです
あと100さんのご質問の答えとしてはカレントにしてからとなります

結果として101さんのお答えで実現できました!
みなさんありがとうございました^^
103デフォルトの名無しさん:2007/09/07(金) 10:18:00
VB2005について質問があるのですが、どのスレッドで聞けばよろしいでしょうか?
初心者です。
104デフォルトの名無しさん:2007/09/07(金) 12:16:03
[XP、VB6]
質問があります。
現在イメージボックスを使用して画像を表示しているのですが、
画像の上に文字を表示して保存したいと考えています。
ピクチャーボックスであればすぐできると思いますが、
こちらだとボックスの大きさがコロコロ変わるので困ります。
(Stretchのようにサイズ変更されずに圧縮してくれれば良いのですが)
宜しくお願い致します。
105デフォルトの名無しさん:2007/09/07(金) 12:42:44
イメージボックスって何?Imageコントロールの事か?
106デフォルトの名無しさん:2007/09/07(金) 12:48:07
ここで良いよ>>103
107104:2007/09/07(金) 12:57:22
>>105
すいません。Imageコントロールの事です^^;
108デフォルトの名無しさん:2007/09/07(金) 19:21:04
>>107
ピクチャーボックスを使えば、すぐ出来るとの事なので
画面表示にはImageコントロールを使って
ピクチャーボックスをvisible=falseにして、文字描画と保存処理を行えばよいのでは?
pictureオブジェクトは、set picturebox.picture = image.pictureで共有できる
ただ、文字を書き込むってAPI使わんでもスグ出来たかどうかちょっと疑問だが
109104:2007/09/08(土) 07:04:47
>>108
レスありがとうございます。
実は一度考えた方法なのですが、ピクチャーボックスの幅が自動で
大きくなってしまったり、元の画像の大きさを縮小したりできなかったので
諦めていました。
ピクチャーボックスへの文字描画は
Picture1.CurrentX = 800 'X座標
Picture1.CurrentY = 30 'Y座標
Picture1.Picture = Image1.Picture '画像取り込み
Picture1.Print "2007/09/08 06:58:14" '文字表示
とかやれば一応文字が反映されています。
あとはsavepictureかなにかやれば良いのだろうと思います。
もう一つ問題があって、現在Imageコントロールを使っていると言いましたが
写真を一枚一枚処理するのでは無く、複数枚の写真をいっきに処理
しなければなりません。なのでピクチャーボックスで一つずつ処理する方法では
実現が難しいという事もあります。(でも、できない事は無いと思います)
110デフォルトの名無しさん:2007/09/08(土) 09:37:50
>>109
事前に処理するファイルパスを変数に入れておいてループ取り出しながら繰り返せばいいんでなくて?
絶対に複数の画像を同時に処理しなければならない理由とかあるの?
111デフォルトの名無しさん:2007/09/08(土) 10:56:35
質問があります。

VBScriptで時刻を表示させる時に 午前10時以前でも "9:xx:xx" ではなく "09:xx:xx" と、ゼロを入れて2桁で時間を表示したいのですが、なにか表示形式指定のオプションみたいなものがあるのでしょうか?

それとも時間、分、秒と別々に取得して自前の関数で補正しないとだめでしょうか?
112デフォルトの名無しさん:2007/09/08(土) 11:03:56
>>109
その方法で、ビットマップに文字列が保存されるかなぁと疑問だったんだが出来るならいいけど
複数枚の写真が、動画のようなもので時間的に余裕が無いということだろうか?
それともバッチ処理のように、ファイルを連続でということなら>>110が書いているような方法で良い訳だが

ちなみに時間短縮ならAPIを使って、DCを自分で作って(CreateCompatibleDCなど)
そこにimage.picture.handleを選択して(SelectObject)
文字列を書き込んで(TextOut など)
って事をすれば良い
こうするととりあえず、DCを画像ごとに生成する必要が無いのでちょっとは早くなるかも
113デフォルトの名無しさん:2007/09/08(土) 11:15:17
>>111
VBSはformat使えないし、formatdatetimeがヘボだから
自分で関数作るのがいいかもね
114デフォルトの名無しさん:2007/09/08(土) 11:36:04
>>113
レスどうもありがとうございます。

なるほど〜そうですか。そしたらこんな感じで自分で作ってみました

今までは
MsgBox ( Time )
で実行結果 "9:12:34"だったのを、

MsgBox( Right( "0" & Hour( time ) ) & ":" & Right( "0" & Minute( time ) ) & ":" & Right( "0" & Second( time ) ) )
として、実行結果"09:12:34"になるようにしました
とりあえずこれで^^;

どうもありがとうございました
115デフォルトの名無しさん:2007/09/08(土) 11:47:18
Right(xxx,2)では?と一応突っ込んでおくがw
116114:2007/09/08(土) 11:57:16
あ〜 失礼しました^^;
おっしゃるとおり
MsgBox( Right( "0" & Hour( time ),2 ) & ":" & Right( "0" & Minute( time ),2 ) & ":" & Right( "0" & Second( time ),2 ) )
でした!

あとちなみに
MsgBox FormatDateTime( Time, vbShortTime ) & ":" & Right( Minute( Time ), 2 )
でもなりました

もう少し短くならないかな^^;
117デフォルトの名無しさん:2007/09/08(土) 12:05:23
>>116
Windowsの”地域と言語のオプション”で左右されそうな希ガス
118デフォルトの名無しさん:2007/09/08(土) 12:09:37
>>116
短くするよりも、精度上げた方がいいけどね
time関数は一度しか使わないで、戻り値を変数に入れてからの方が良いよ
119114:2007/09/08(土) 12:13:05
>>117-118
まじですか

そしたら
Dim aTime
aTime = Time
で、
MsgBox( Right( "0" & Hour( aTime ),2 ) & ":" & Right( "0" & Minute( aTime ),2 ) & ":" & Right( "0" & Second( aTime ),2 ) )
って感じにしました

勉強になりますm(_ _)m
120デフォルトの名無しさん:2007/09/08(土) 13:37:53
>>109
一応、ピクチャボックスに書き加えたものまで含めて保存したい場合は、
Picture1.PictureでなくてPicture1.Imageの方を保存ね。
121デフォルトの名無しさん:2007/09/08(土) 19:03:46
VBから他の言語へ「とらば〜ゆ」するのって、簡単ですか?
基本的なアルゴリズムが理解できてとOSの知識があればOKだと思うんですが。
122デフォルトの名無しさん:2007/09/08(土) 19:15:33
>>121
問題ないんじゃない
PCの知識も必要かもしれないが
123デフォルトの名無しさん:2007/09/08(土) 19:30:00
VBしかできない奴のほうがどうかしてる
124デフォルトの名無しさん:2007/09/08(土) 20:56:57
>121
他の言語に移行できないヤツはVBも理解できていない
125デフォルトの名無しさん:2007/09/08(土) 22:25:54
インターネット トランスファコントロールで
動画ファイルをダウンロードするのはどうしたらいいのですか?
text,jpg,zipなんかはできるんですけど
なぜか動画は同じ方法ではダウンロードできません
もしかしたらこのコントロールではむりですか
参考になるヒントなど教えてください。
126デフォルトの名無しさん:2007/09/08(土) 23:00:39
動画にも色々あるんだが
127デフォルトの名無しさん:2007/09/08(土) 23:16:28
すまん
.flvファイルです
128デフォルトの名無しさん:2007/09/08(土) 23:39:07
>>127
flvか
ダウンロードの方法は、保存支援サイトが何をやってるか見ればわかるだろう
129デフォルトの名無しさん:2007/09/09(日) 01:51:16
やりかたは変わらない。
DL厨対策に動画のURLの取得が一筋縄でいかないようになっているだけ。
130デフォルトの名無しさん:2007/09/09(日) 09:17:20
なるほどこのコントロールでできるのですか
もう少しじっくりコードを見直してみます。
131デフォルトの名無しさん:2007/09/09(日) 10:36:27
VB6からVB2005に以降したのですが、
VB6のときにあった、ディストリビューションウィザードがなくなって
セットアップディスクが作成できなくて困ってます。
別のツールかなにかで作るのでしょうか?
お勧めがあったら教えてください。
132デフォルトの名無しさん:2007/09/09(日) 11:26:36
>>131
VSI (Visual Studio Installer)
133132:2007/09/09(日) 11:27:41
ごめんこれはVB6だった。
VB2005は知らんです。
134109:2007/09/09(日) 18:07:15
>>110
>>112
>>120
レスありがとうございます。
申し訳ありません。話がややこしくなってしまいました。
いっきに処理しなければならないのは忘れて下さい。
私が勘違いしていました。
おっしゃる通りバッチのような感じで処理できます。

ポイントとしては、
・現在Imageコントロールを使っているので、Imageで文字描画できないか
・Pictureボックスしか無ければ、仕方ないけど、ImageのStrechみたいな
 ボックスの大きさを固定しつつ圧縮する技はないか

以上2点です。

Pictureボックスの大きさを気にするのには理由があります。
処理する前にどの位置に日付を描画するのかを目視したいからです。
写真によっては文字の位置や色なども変えなければ見えませんので。
その為、ボックスの大きさは常に一定で、
Imageのような画像のサイズ圧縮が必要になります。
135デフォルトの名無しさん:2007/09/09(日) 23:59:38
>>134
自分はImage嫌いなのでPictureを二つ用意する。一つは非表示で元画像(等倍)。
表示用にはStretchBltかスクロールバーで表示する。
136134:2007/09/10(月) 10:04:06
>>135
レスありがとうございます。
基本的な事で申し訳ありませんが、
ピクチャー1のAutoSizeをTrueにすると、
写真が大きい場合、ピクチャー1が画面上からはみ出るのですが
これをピクチャー2にコピーしてもうまくいきません。
また、AutoSizeをFalseにすると、写真が小さく表示され、やはり無理です。
どのように対処されていますか?
137デフォルトの名無しさん:2007/09/10(月) 10:15:53
ステータスバーのSimpleTextの文字色、変える方法ってある?
138デフォルトの名無しさん:2007/09/11(火) 01:57:56
>>136
元画像AutoSize=True
手法1(Stretch):StretchBltを使って表示画像に転送
手法2(ScrollBar):表示位置(原点)を保持しておいてスクロールバーを移動させるたびにBitBlt
手法1の場合完結しているが小さい場合に見づらい。
手法2の場合どんなサイズでも擬似的に表示できる。その代わり制御が少し面倒。

他にも色々あるだろうけど、原寸そのままに表示できない場合は、小さくするか
一部だけ表示させるしかないでしょ。
139デフォルトの名無しさん:2007/09/11(火) 21:28:45
VB6で、WinSockコントロールを使ってのソケット通信について質問します

フォームにWinSockコントロールを複数貼り付けたり
Win32APIのWinSock関係を直接操作したりすることなく
複数クライアントとの同時通信などと言うものは可能なのでしょうか?

WinSockコントロールはひとつのインスタンスでひとつのコネクションしかもてなかったと思うのですが・・・
いかがなものでしょうか
140デフォルトの名無しさん:2007/09/11(火) 21:31:08
>139
でけます。
WinSockコントロールを配列にして扱うサンプルがMSDNにあるでよ
141デフォルトの名無しさん:2007/09/11(火) 21:56:09
>>140
ありがとうございます
MSDN漁って見つけることができました。
142136:2007/09/12(水) 00:43:16
>>138
色々と情報を頂いて、頑張ってはみたのですが、
私では実現できないようですので、残念ですが今回は諦めます。
お時間頂いてありがとうございました。
143デフォルトの名無しさん:2007/09/12(水) 23:11:43
今VBで2chに書き込むプログラム作ろうとしているのですが、どうにも駄目です。
winsockを使用して作ってます。
スレの取得はできるようになったのですが、書き込みの方法がわかりません。
特にクッキーの設定の部分がわかりません。

助けてください。
144デフォルトの名無しさん:2007/09/12(水) 23:42:59
>>143
迷惑だからやめてください
145デフォルトの名無しさん:2007/09/13(木) 04:54:56
>>143
HTTPべんきょうしてください
146デフォルトの名無しさん:2007/09/13(木) 09:13:32
>>143
本当にやる気があるならmonazillaで調べて自分で解決してください
俺はそこで調べて誰にも聞かずにdat取得、スレ書き込みまでできました(スレたてはテストの都合上作成も試みていない)
147デフォルトの名無しさん:2007/09/14(金) 20:20:32
Dim a As New WshShell
a.Run "lame.exe -b 192"

みたいな感じでコマンドプロンプトで実行させるプログラム自体は起動できるんですが、
実行中はコマンドプロンプトに制御が移ってしまうのが嫌で、
VB側で実行中のパラメータとかを直接受け取ることって何の関数を使えば出来ますか?
コマンドライン型のアプリケーションを完全にこっちで制御したいんです
148デフォルトの名無しさん:2007/09/14(金) 20:35:33
色々ぐぐってみたら何となく分かりました。
http://support.microsoft.com/default.aspx?scid=http://www.microsoft.com/JAPAN/support/kb/articles/JP171/6/54.asp
コンソールウィンドウを表示させればいいのかな?でもこれだと表示させるだけで
パラメータも受け取れないし・・・WshShell使うのと変わらないですね。。
149デフォルトの名無しさん:2007/09/15(土) 12:03:16
>>147
自作プログラムなら幾らかやりようがあるけど、既製品はまず無理。
作るときは製品のドキュメントをよく読んでいくしかない。
150デフォルトの名無しさん:2007/09/15(土) 12:39:15
>>147
プログラムが終了するまで自プログラムが停止してしまうということだけなら、
3つ目の引数にFalseを指定すれば解消できる。

今度は終了を検地できないけどね。

a.Run "lame.exe -b 192", 1, False

http://msdn.microsoft.com/library/ja/script56/html/wsmthrun.asp
151デフォルトの名無しさん:2007/09/15(土) 23:35:54
>>150
それなら出来るんですけど、自分のしたいことはコマンドライン型のEXEを、
実行中にパラメータを取得したいんです。具体的にはLameなら実行中のパーセンテージを
こっち側のプログラムで取得して、自作のフォームにプログレスバーとして表示したり、完全に制御したいんです。

>>149
既製品は無理なんですか?それはVBの限界ってことでですかね?
例えば変換君のフロントエンドなんかは、ffmpegのパラメータを実行中に取得してるみたいで・・・同じことをしたいんですが、
VBではどんなAPIを使用しても不可能ですか?
152デフォルトの名無しさん:2007/09/16(日) 01:21:56
>>151
そりゃきっとVBで可能だとしても、やるとかえって大変ですよ。
他の開発言語・ツールを使った方がいいと思います。
え?なにがいいかって?馬鹿野郎よくググれ。
153デフォルトの名無しさん:2007/09/16(日) 11:17:54
LAMEの画面出力は、プログラムから解析されるような出来になっていないので、
そういう用途ならLAME_ENC.DLLか何かを使ったほうがいいと思う。
VBからどれくらい扱えるかはわからないけど。
154デフォルトの名無しさん:2007/09/16(日) 14:38:44
フォルダにあるテキストのテキスト名をリストボックスに表示して、
テキスト名を選択したときにテキストの内容をテキストボックスに
標示させたいのですが、パスがわかりません。
155デフォルトの名無しさん:2007/09/16(日) 15:12:19
>>154
何をしたくて何が分からないのか分かりません
156デフォルトの名無しさん:2007/09/16(日) 15:21:43
>>154
つ「App.Path」
つ「CommonDialogBox」
157デフォルトの名無しさん:2007/09/16(日) 15:49:28
>>155
>>156
回答ありがとうございます。
デスクトップ上にあるフォルダの中のファイルをListViewで表示してます。
ListViewで表示しているファイル名をStreamReaderを使用してテキストの内容を
ラベルに表示させたいです。
ファイル名を時間にしていますので、ファイル名のパスを指定できません。


158デフォルトの名無しさん:2007/09/16(日) 16:04:09
>157
> ファイル名を時間にしていますので、ファイル名のパスを指定できません。
???
159デフォルトの名無しさん:2007/09/16(日) 16:18:44
ゆとりは理由にならない根拠で結果を導き出すから困る
取り付く島がないじゃないか
160デフォルトの名無しさん:2007/09/16(日) 16:38:23
パス名を現在の時間にしており、変更しているからです。
161デフォルトの名無しさん:2007/09/16(日) 16:55:20
変更しているのは誰?
自身のプログラム内なら、ファイル名生成のルーチンから
ファイル名を横取って来ればいい。
162デフォルトの名無しさん:2007/09/16(日) 17:03:47
VB2005を使用してます。
複数あるプログラムをボタンをクリックした時にCheckboxにチェックが
あるときは起動してチェックがないときは起動しないプログラムを
作成したいのですが、方法とコードなどありましたら、ご教授ください。
163デフォルトの名無しさん:2007/09/16(日) 17:07:24
>>161
回答ありがとうございます。
また、ListViewで選択しているファイルののパスを指定する場合の
方法はありますでしょうか?
164デフォルトの名無しさん:2007/09/16(日) 20:26:50
>>162
想像できない
165デフォルトの名無しさん:2007/09/16(日) 21:33:42
PINGを定期的に行う、プログラムを作成したいのですが、
いいサンプルプログラムとかありますか?
166デフォルトの名無しさん:2007/09/17(月) 01:05:24
連休中の宿題か?
ガキでなければキチガイばっかりだなw
167デフォルトの名無しさん:2007/09/17(月) 08:58:54
>>163
ListViewにファイル名を入れる時はどうやってそのファイル名を取得したの?
俺がListViewにファイル名を入れる時は、そのファイル群が置いてあるフォルダを指定し、
検索してフルパスを取得し、ファイル名だけ抜き出して表示させるが
この過程においてファイルのパスが分からないという問題は起きないわけだが
どう考えてパスが分からないと導き出した?

これで意味が分からないならもう一度勉強し直した方がいいよ
168デフォルトの名無しさん:2007/09/17(月) 10:47:43
ググったりしましたがわからなかったので質問です。
私はDEL使いなんですが、会社で前任者が作ったVBソフトのメンテをやることになりました。
内容はimageコントロールの画像の表示方法に関することです。
なにしろ、VBはVBA程度の知識しかないので

カードデータベース風の情報管理ソフトです。
フォームにimageコントロール(以下イメコン)があります。
利用者は自分で撮影したデジカメ写真をフォームに登録して表示させることができます。
しかし、stretch=trueにするとイメコンのサイズに変形されるしfalseにすると一部分しか表示されません。
そこで、フォーム上のイメコンのサイズで収まるようにアスペ比を一定に縮小させる、または、元サイズのままスクロールできるようにしたいんですが、
どうすればいいんですか?

それと、imageコントロールとpictureコントロールの違いって何ですか?
169デフォルトの名無しさん:2007/09/17(月) 11:40:31
>>168
アスペクト比一定なら、元画像の縦横サイズとImageの縦横それぞれの倍率を取って倍率の小さい方で
縦横同じ倍率で縮小すればいい。
スクロールする場合は表示位置(x,y)を保持して、スクロールバーの値が変わったときに表示サイズの
縦横分だけ抜き出して表示。スクロールバーの値の範囲は0から元画像の幅−表示サイズの幅
>imageコントロールとpictureコントロールの違い
これくらいは自分で調べてくれ
170デフォルトの名無しさん:2007/09/17(月) 13:26:51
>>168
IPictureDispに画像を保持してRenderメソッドでPicturBoxに描く。
171デフォルトの名無しさん:2007/09/20(木) 10:17:30
質問です。[VB6,WindowsXP]

ボタンを押して始まる処理の中で、DoEventとSleepを使ってかなり長いループを作って
これを実行している最中に右上の[×]で終了させるとボタンの処理が遠い世界に旅立つので
フォームのQueryUnloadで「End」を書いて終了させているのだけど、何か間違っている気がしてならないです。

これで問題はないものでしょか?
172デフォルトの名無しさん:2007/09/20(木) 10:37:31
>>171
End命令は即座にVBの実行を停止する命令で、FormのunloadやTerminate、
オブジェクトのTerminateイベントの処理をすべてバイパスする。
ActieX(COM)のアンロード処理も省かれるので、
アウトプロセスサーバーを使ってる場合にActiveX.EXEのプロセスが終了しない。
これらのことが問題にならないなら使っていいよ。
173デフォルトの名無しさん:2007/09/20(木) 11:33:16
>>172
ありがとうございます〜

えーと、やっているのはAPIによるPCIボードのアクセスとシリアルの入出力。
シリアルは閉じるとして、APIのほうはClose命令があるのでソレを発行しておけばよいかな…

あと万全を期すため?
EndをQueryUnloadからUnload最後に移動かしら。
174デフォルトの名無しさん:2007/09/20(木) 13:12:48
「これからこのプログラムは強制終了するお」っていうのをフラグ立てて、
遠い世界へ旅立つループ処理に教えてあげてループ処理を抜けさせるようにすれば?
175デフォルトの名無しさん:2007/09/20(木) 13:36:56
>>174
その時は遠い世界へ旅立つループ処理が終わるのを待ってあげないとダメなので本末転倒なんだぜ?
176デフォルトの名無しさん:2007/09/20(木) 14:25:03
>>173
自分の場合メッセージボックスを出してループだけ抜けさせて、Unloadイベントをキャンセル。
改めてユーザー側にもう一度終了させるようにした。
下手に一括でやろうとしてプロセスが残るより安心。
177デフォルトの名無しさん:2007/09/20(木) 15:51:33
>>174-176
あー。ループのほうでトラップ(?)するというのはスッポリ抜けてたす。

ループでフラグ立て→[×]→フラグでUnloadキャンセル→ループ内で「フラグ消し→Unload Me→Exit sub」
とやってみた。

それっぽくなった。
こっちのほうが幸せっぽいかな。
178デフォルトの名無しさん:2007/09/20(木) 19:00:13
遠い世界に旅だつ、とかなんの意味だかさっぱり分からん。
ダメな奴は本当なにやらしてもダメだな。人に通じる文章すらちゃんと書けないのか。

ループでDoEventsなんて、VBプログラマが嘲笑されるときのネタの定型だぞw
しかもなんでSleepかますの?
Sleepの意味分かってるのかねw
179デフォルトの名無しさん:2007/09/20(木) 19:03:55
は?DoEventsはループの中でしかつかわねーしアホか
180デフォルトの名無しさん:2007/09/21(金) 00:35:49
しかし>>178さんは昔からずーっとこのスレでがんばってるなあ。
久しぶりにのぞいてみたけど健在で驚いたよ。
181デフォルトの名無しさん:2007/09/21(金) 09:34:37
>>169
ありがとう。

画像を定比で縮小することはできた。
だけど、スクロールバーで足踏み。

スクロールバーを動かすと確かに図形も動くけど、元の画像がそのまま移動するだけ。
つまり画像を左にスクロールすると、右側には、今まで見えていなかった画像が現れるのではなく、ただのブランクになる

もうわけわからん〜
182デフォルトの名無しさん:2007/09/21(金) 11:13:42
デバイスの安定待ちとかの十数msもタイマーか何かに逃げないといけないものなのか?
183デフォルトの名無しさん:2007/09/21(金) 11:41:31
MsgWaitForMultipleObjectsは使うがSleepは使わないな
184169:2007/09/21(金) 12:11:18
>>181
手抜き説明。書き殴りだからあっているかどうか不明

[Form1]
'元画像をPicture1に表示、表示用画像にPicture2を用意
'簡単のためScaleModeはPixelで統一
'スクロールバーの値を利用する
Private Sub HScroll1_Change()
'HScroll1の値の範囲は0からPicture1.Width-Picture2.Width
Bitblt Picture2.hdc,0,0,Picture2.Width,Picture2.Height, _
    Picture1.hdc,HScroll1.Value,VScroll1.Value, _
    vbSrcCopy
End Sub

Private Sub VScroll1_Change()
'VScroll1の値の範囲は0からPicture1.Height-Picture2.Height
Bitblt Picture2.hdc,0,0,Picture2.Width,Picture2.Height, _
    Picture1.hdc,HScroll1.Value,VScroll1.Value, _
    vbSrcCopy
End Sub
元画像と表示画像、スクロールバーの値について適当な絵と値を書いて考えてみれ
これでカネ稼ぐんだろうから、少しは苦労しなよ。こんなのは基礎だぞ〜
185デフォルトの名無しさん:2007/09/21(金) 13:29:26
VB6.0でFarPoint SPREAD 3.0を使ってプログラムしています

SpreadPreviewを貼り付けたフォームでKeyPreviewをTrueにして
フォームのKeyDownイベントをトラップしていると
SpreadPreviewにフォーカスが有る時に
一度しか押していないキーのイベントが2度発生してしまいます

この症状の解決方法などご存知の方はいらっしゃいませんでしょうか
186デフォルトの名無しさん:2007/09/21(金) 13:59:43
>>185
そういう質問はメーカーに問い合わせるのが先だ
187デフォルトの名無しさん:2007/09/21(金) 14:12:24
KeyDownとKeyUpが走っちゃうって話?
188185:2007/09/21(金) 15:01:14
>>186
確かに・・・orz

>>187
KeyDownしかプロシージャ追加して無いんで、KeyUpは関係ないと思いたいんですが・・・
189デフォルトの名無しさん:2007/09/22(土) 01:20:02
>>184

丁寧にすまん。 じっくり勉強させてもらうわ。

だけど、

> これでカネ稼ぐんだろうから、少しは苦労しなよ。こんなのは基礎だぞ〜

いや、だから、俺はdel使いであってVBなんて知らないの。
ただ前任者の尻ぬぐいをしてるだけだって。
190184:2007/09/22(土) 17:31:37
>>189
Bitbltの変数足りないかも分からんのでヘルプ見直しておくれ。すまん
>前任者の尻ぬぐいをしてるだけだって
よーく分かるwだが、調べれば結構載っているからな。がんばり〜
191デフォルトの名無しさん:2007/09/22(土) 23:47:04

>いや、だから、俺はdel使いであってVBなんて知らないの。
>ただ前任者の尻ぬぐいをしてるだけだって。

回答になってねぇよwwwww
DEL使いとかじゃなくって社会人かどうか疑いたくなるなwwww
192デフォルトの名無しさん:2007/09/23(日) 01:08:33
>>191
だよなwwwww
俺もお前のこと疑うぜwwwwwwwwwうぇwww
193デフォルトの名無しさん:2007/09/23(日) 15:23:34
>>192
だよなwwwww
俺もお前のこと疑うぜwwwwwwwwwうぇwww
194189:2007/09/23(日) 21:59:28
>>191
> 回答になってねぇよwwwww
> DEL使いとかじゃなくって社会人かどうか疑いたくなるなwwww

すれちになるからあまり深入りしたくないが、ニートのおまえには言われたくねーよ。
うちは別にソフトベンダーでも何でもなくて、業務用アプリを担当部署ごとに作ってるだけ。

仕様書も何もなく放置されていたバグだらけのソフトを、君もプログラミングできるなら何とかしてくれ
っていわれてメンテする羽目になっただけだ。
195デフォルトの名無しさん:2007/09/23(日) 22:07:22
>>194
「del使い」じゃなくて「DEL使い」って逝っちゃってるんだから,見逃してやろうぜ・・・
196デフォルトの名無しさん:2007/09/23(日) 22:17:24
const int * a;
const * int a;
* const int a;
int * const a;
* int const a;
違いを教えて下さい
197デフォルトの名無しさん:2007/09/23(日) 22:24:28
その前にVBとcの違いを知るべきではないだろうか
198デフォルトの名無しさん:2007/09/23(日) 22:25:27
>196
書き方が違うだけで全て同じものです
199デフォルトの名無しさん:2007/09/23(日) 23:10:46
>>198

ありがとうございました。
なぞが解けました
200デフォルトの名無しさん:2007/09/23(日) 23:38:48
cdeclプログラム(BSD用バイナリ配布)をみれ
201デフォルトの名無しさん:2007/09/24(月) 00:34:50
>>196
もしCのことならここ読め。
ttp://kmaebashi.com/programmer/pointer.html
202デフォルトの名無しさん:2007/09/24(月) 01:26:56
つうか
んっとにカスばっかりだな
お前らのうちどんだけが本当のPGとかSEなんだよw
203デフォルトの名無しさん:2007/09/24(月) 01:28:12
だってVBスレだよ
204デフォルトの名無しさん:2007/09/24(月) 09:37:17
ネタ質問には全力ボケで返す、基本だろ?空気嫁よw
205デフォルトの名無しさん :2007/09/24(月) 17:42:14
VB5.0でフォルダ名の変更ってどうやってやるのでしょうか??
フォルダ名をリネームするプログラムを作りたいんです
ファイル名の変更は出来たんだけど・・・
どなたか教えてください
206デフォルトの名無しさん:2007/09/24(月) 18:03:42
FilesystemObjectつかえばいいんじゃね?
207デフォルトの名無しさん:2007/09/24(月) 19:41:58
>>205
nameステートメント使えばいいんでね?
208デフォルトの名無しさん:2007/09/24(月) 21:20:42
イントラネット内に接続されているコンピュータのIPアドレスを
取得したいのですが可能でしょうか?
iphlpapi.dllを使用すれば可能とのことだったのですがコードが
分かりません。

209デフォルトの名無しさん:2007/09/24(月) 23:50:22
使用環境はExcel VBAなんですが、Excelのスレだとスレ違いになるっぽいのでこちらに質問します。
フォルダパスの文字列の"開始"という文字を"完了"に置き換えたいのですが

現在はパス名をセルに一度書き込んでから
エクセルのReplace関数でセルの文字を置き換え、それをコピー先のパス名として変数に代入する
みたいな感じでやってます。
コードはこんな感じです。

Cells(1, 1).Value = myStDir
Cells(1, 1).Replace What:="完了", Replacement:="開始"
myEnDir = Cells(1, 1).Value
myFso.CopyFolder myEnDir, myStDir, True

これでも動く事は動くんですが、VB上で変数の文字列の一部を置換する事はできるんでしょうか。
210デフォルトの名無しさん:2007/09/25(火) 00:02:42
ヘルプ見ろよ。
VBの文字列関数なんて数が知れてるじゃないか
211デフォルトの名無しさん:2007/09/25(火) 00:20:43
できました・・・・
myEnDir = Replace(myStDir, "完了", "開始")
何かReplaceはVBで使えないって思い込んでました・・申し訳ない・・
212デフォルトの名無しさん:2007/09/25(火) 01:33:11
>>208
どんな感じのネットワークかわからんから,正直何も言えない

まあpingが通るなら単純にネットワーク内に存在する可能性のあるのIPアドレスにpingを送ってみればいいかもな
213デフォルトの名無しさん:2007/09/25(火) 13:20:33
VB6.0の本が売ってません。
214デフォルトの名無しさん:2007/09/25(火) 13:38:34
つブックオフオンライン
215デフォルトの名無しさん:2007/09/25(火) 15:16:45
>>214
いいのがあるか探してみるよ。
216デフォルトの名無しさん:2007/09/25(火) 17:07:49
PCサロン板でこちらを紹介していただいてやってきました。

InputMan7.0を購入して、今まで使用していたVer6.5から7.0に移そうと移
行ツールを試してみたのですが、できるコントロールとできないコントロ
ールにわかれてしまいました。
BOC社のサイトで調べてみるとTab上にあるコントロールは認識しないよう
なFAQを見つける事ができ、最新版をDLすれば解決するとありました。
早速DLして再度移行ツールを実行してみたのですが、やはりエラーになり
思うような結果が得られませんでした。
この他に、上手く移行できたものでも勝手にフォントサイズが変わってし
まう(小さくなる)という現象がおきてしまいました。

何か原因をご存知の方がいましたら是非教えてください。
OSはVISTAでVBは6.0です。
217デフォルトの名無しさん:2007/09/25(火) 17:15:16
BOC社に問い合わせるのが先
218デフォルトの名無しさん:2007/09/25(火) 18:53:46
> OSはVISTAでVBは6.0です。
219デフォルトの名無しさん:2007/09/25(火) 19:03:53
>>218
言いたい事はわかるけど気になったからBCC社のHP見てきた

>[必要システム]
>Visual Basic 6.0日本語版(Windows 95/98/Me/NT 4.0/2000/XP/Server 2003/Vista)

一応Vista対応謳ってるから>>217でFAだな。
220デフォルトの名無しさん:2007/09/26(水) 16:32:19
VB6/ADODBのしっかりしたリファレンスのサイトか本ありませんか?
221デフォルトの名無しさん:2007/09/26(水) 16:37:46
ソース中にUnicode文字列リテラルを入れるにはどう書けばいいんでしょうか?
IDEのテキストエディタにU+9B73などをコピペすると化けてしまったんですが…
222デフォルトの名無しさん:2007/09/26(水) 19:00:44
>>221
VBってコンパイラもエディタもS-JISしか対応してないんじゃないの?
むしろそんなことができたら怖いと思うがw
223デフォルトの名無しさん:2007/09/26(水) 20:11:35
224デフォルトの名無しさん:2007/09/27(木) 00:24:15
>>223
MSDNって読みづらくないですか?
でも、なんとか頑張って読んでみようと思います。
ありがとうございました。
225デフォルトの名無しさん:2007/09/27(木) 01:41:48
>>224
辞書引くのって難しくないですか?

まで読んだ
226デフォルトの名無しさん:2007/09/27(木) 10:00:11
リファレンスとして使いにくいと思うのは少数派?
227デフォルトの名無しさん:2007/09/27(木) 10:56:28
>220
技術評論社の本
http://www.gihyo.co.jp/books/syoseki.php/4-7741-0859-6
VBの言語仕様をしっかり解説してるのがいいと思う。
ADODBについては微妙だけど。

買っちゃいけないのは、いわゆるHowTo本。
サンプルコードがいっぱい載ってるような奴ばかり読んでると、
コピペしかできないなんちゃってプログラマになりやすい。
228デフォルトの名無しさん:2007/09/27(木) 12:40:56
>>224
なんだ入門書みたいなものが欲しかったのか。
http://www.microsoft.com/japan/technet/prodtechnol/sql/2000/evaluate/exercises.mspx
これの「開発編 No.3 ADO 2.6 入門 」どうぞ。
229デフォルトの名無しさん:2007/09/27(木) 15:41:03
すみません。
ちょっとお聞きします。
任意の期間を設定して、その期間内はForm1へ
期間外はForm2へ
としたいのですが、どうすればいいのでしょうか?
230デフォルトの名無しさん:2007/09/27(木) 15:50:54
何を言ってるんだお前は
231デフォルトの名無しさん:2007/09/27(木) 16:56:03
ifかSelectでダメなのか?


???
232229:2007/09/27(木) 16:57:07
本当にすみません。
もうちょっと勉強して出直します><
233デフォルトの名無しさん:2007/09/27(木) 18:15:59
VB6には連想配列はないですか?
234デフォルトの名無しさん:2007/09/27(木) 18:19:27
Collection使えばいいんじゃね?
235デフォルトの名無しさん:2007/09/27(木) 18:24:00
Dictionaryでもいいんじゃね?
236デフォルトの名無しさん:2007/09/28(金) 10:47:18
Dictionary は Microsoft Scripting Runtime を参照設定すると
使えますぜ?
237デフォルトの名無しさん:2007/09/28(金) 11:06:15
mscorlib.dllを参照設定するとHashtableが使えますぜ?
238デフォルトの名無しさん:2007/09/28(金) 11:20:04
いやいや専用クラスをイチから自作が最強っしょ?
239デフォルトの名無しさん:2007/09/28(金) 11:41:17
そこでVB8のとうじょうです
240デフォルトの名無しさん:2007/09/28(金) 14:19:07
Dim test As New Collection
test.Add "テスト","test"
For Each test2 In test
Debug.Print test2
Next

この時に、"テスト"は取れますが"test"を取得する方法がわかりません。
241デフォルトの名無しさん:2007/09/28(金) 14:48:00
CollectionからKeyを取得する方法はありません
242デフォルトの名無しさん:2007/09/28(金) 19:20:59
それではRecordsetを使いましょうか?
243デフォルトの名無しさん:2007/09/28(金) 23:24:36
外部に依存してもいいならScripting.Dictionaryとかでおk
イヤならCollection2つ使って自作
244デフォルトの名無しさん:2007/09/29(土) 18:00:06
[VB6 WindowsXP]

VB6&CAPICOMについて質問させてください。

VB6からCAPICOMを利用して、
ファイルの復号化を行おうとしています。

アルゴリズムはAESで、
暗号化は別の言語で施されており、
暗号化時に使用した
鍵とベクトルの情報はわかっている状態です。

MSDNや
ttps://www.netacademia.net/tudastar/default.aspx?upid=2781
こちらのサイトのサンプルを見ながら
復号化ロジックをVB6で実装しようとしているのですが、
なかなかうまくいきません。

サンプルを見た限りでは
鍵の設定は SetSecretメソッドで行っているようなのですが、
ベクトルの設定はどこで行えばよいのでしょうか。

何卒ご教授のほどよろしくお願いいたします。

245baka ◆Jgn6bakat. :2007/09/29(土) 19:02:56
1
246デフォルトの名無しさん:2007/10/03(水) 18:53:58
MSFlexGridで行ごとに囲っている線の太さを変えることは可能でしょうか?
すべての線の太さは指定できるのですが、
4行単位で線を太くしようとしてもうまくいきません。
お手数おかけしますが、ご教授よろしくお願い致します。
247デフォルトの名無しさん:2007/10/03(水) 22:07:56
>>246
オーナードローに対応していればオーナードローで
標準だと出来ないと思っている
248デフォルトの名無しさん:2007/10/04(木) 18:04:17
VB6.0なのですが、アプリケーション初回起動時から30日たつとパスワード
入力しないと起動できなくなるようにしたいのですが、どのようにすれば
いいでしょうか?どなたかお助けを下さい。
249デフォルトの名無しさん:2007/10/04(木) 18:07:46
>>248
アプリケーションの最初の画面で
「初回起動時から30日たちましたか?」
「はい」 −>「パスワードを入れてください」
250デフォルトの名無しさん:2007/10/05(金) 00:31:44
>>248
初回起動時にレジストリか適当な隠しファイルに日時を格納しといて
毎回毎回起動時に参照してきゃいいだけだろ
251デフォルトの名無しさん:2007/10/05(金) 09:57:53
>>250
ありがとうございます。
初回起動時というのはどのように判断させればいいのでしょうか?
252デフォルトの名無しさん:2007/10/05(金) 10:03:47
>>251
真性の馬鹿か?
レジストリ使うならレジストリ上にキーがなかったら初回起動とかって分かるだろ。
253デフォルトの名無しさん:2007/10/05(金) 10:14:41
>>253
すみません。初心者でレジストリを参照とかさせた事がないもんで。
ファイルを使用してなんとかやってみます。
254デフォルトの名無しさん:2007/10/05(金) 10:22:38
>>252
すみません。教えていただきたいのですが、
レジストリを参照する場合ですが、HKEYLOCAL_MACHINEのSOFTWAREの
MicrosoftのVisualVasicの中のKEYになるんでしょうか?
それらしいKEYが見当たらないのですが。
255デフォルトの名無しさん:2007/10/05(金) 11:33:07
>>254
きみが自分で追加しようとするKEYのことだろ?

初回起動時→レジストリに書き込んでいない 状態で起動し、レジストリにKEYを挿入し初回起動日を入れる
2回目以降→初回に書き込んだ日付との差が初回起動からの日数

てことだろ?
256デフォルトの名無しさん:2007/10/05(金) 13:55:39
初回起動時から30日たったらパスワードとかいうプログラム作成以前に
Windowsとかもっと基本的なPCの知識を身につけたほうがいいと思うぞ。
257デフォルトの名無しさん:2007/10/05(金) 14:21:55
すみません。
お聞きしたいことがあるんですが、
VB6でOLEを使わずに、Office製品を制御する方法ってありますか?

考えとしては、Office(Excel,Word)製品の名前をフォーム内の左側にリストボックスで表示させ、
右側にリストボックスから選択されたExcelやWord等を立ち上げて使用したいのですが。

丁度ギコナビとか、そのような感じでOfficeを制御できればと思っています。
258デフォルトの名無しさん:2007/10/05(金) 18:21:30
>>257
つ Shell
259デフォルトの名無しさん:2007/10/05(金) 23:13:13
vb6
260デフォルトの名無しさん:2007/10/05(金) 23:17:33
途中で書き込んでもた

VB6でMDBを操作してる。
で、MDB中のテーブルに含まれるイメージデータを個別のイメージファイルに取り出そうとしてる。

tbl : id, name, adrs, section, img...

で、レコード毎に SavePicture rs.field(3).value, id.bmp みたいな処理にしてるんだけど、固まってしまう。
レコードセットとかちゃんとしてるし、他のフィールドデータをテキストで取り出すのはうまくいってる。

どうやればいいんですか?
261デフォルトの名無しさん:2007/10/06(土) 16:42:07
VB6.0で作ったプログラムはVistaの次のOSでも動きますか?
開発環境はXPで動かすので、作ったプログラムだけが将来のOSで動けばいいんですが。
ドットネットはもう風前の灯火なので、いまさら乗り換えるつもりはないです。
262デフォルトの名無しさん:2007/10/06(土) 16:57:11
>>261
マイクロソフトに聞けばいいんじゃね?
マイクロソフト以外にVistaの次のOSについて詳しく知ってるやついないし
263デフォルトの名無しさん:2007/10/06(土) 17:29:53
>>260
テーブルにはバイナリデータが入ってんの?

なら、byte配列で取得したあと、
Openステートメントを使ってバイナリモードで書き込みするとか。
264260:2007/10/06(土) 23:45:37
>>263
はぁ、バイト単位で読み取らなきゃいけないんだ? 試してみるわ。

テーブルの定義を見る方法がわからないんだけど、フォームのピクチャコントロール?には、フィールド値からLoadPictureステートメントで呼び出して表示してるから、
外部保存もSavePictureでいけるかなと思ったんだけど。

MSDNのSavePictureのヘルプ見ても、適当な例が載ってないんだよな
265デフォルトの名無しさん:2007/10/07(日) 05:45:10
>>246
msflexgridは使い勝手が悪いからサードパーティを購入することを勧める。
出来る事ならの話やけど、この時期に新規って事は無いよな。メンテだろうな。
太線にしたければ、1行おきにrowheightを変更して背景色を灰色にしてみれば?
こんな回避手段も可能だったかな?

昔、泣かされた事を思い出すなぁ。ってか・・・まだVB6以前って使ってるのか現役で?
凄いな!
266265:2007/10/07(日) 05:46:31
↑4行おき
267デフォルトの名無しさん:2007/10/08(月) 00:07:41
>>264

TypeName(rs.Field("img").Value) = "Byte()"

ってことなんでないの?
268267:2007/10/08(月) 00:13:31
>バイト単位で

ってところが引っ掛かっただけなんだけどさ。
イメージデータってことは普通に考えてバイナリのフィールドなんだろうし。
269デフォルトの名無しさん:2007/10/08(月) 10:38:42
シリアライズされたオブジェクトかもしらんよ?
270デフォルトの名無しさん:2007/10/08(月) 17:14:36
VB6.0の入門書を探してこのスレを読んだのですが、
>>227の本は中々良さそうですけど、もう絶版なんですね。
ヤフオクとか見てもないようだし、アマゾンのマーケットプレイスだと
定価より高い上に送料がかかるのでなんだか買う気がしません。
古本とかでもかまわないのですが、現在さほど高くなく入手できる
お薦めの本があればどなたか教えていただけないでしょうか。
271デフォルトの名無しさん:2007/10/08(月) 18:02:27
今更入門するなボケ
272デフォルトの名無しさん:2007/10/08(月) 20:42:55
>>270
言い方は違うが>>271に同意
別の言語習得したほうがいいだろ。それに古本じゃ自力で探さないと無理だな。
お勧めしてもあるとは限らないし。
273デフォルトの名無しさん:2007/10/08(月) 23:24:15
>>270
VBAならまだVB6互換だからAccessやExcelのVBAの本で勉強すれば?
これなら今から習得しても充分メリットはある。
VB6は既に過去の言語と思われているけれど企業システムでは未だ第1線の現役だったりする。
それになんだかんだ言ってもRADの一つの完成形だと思う。
.NETになって一貫性のない言語になってしまったので.NETのプログラミングをするなら
迷わずC#をお薦めする。

#VB6の参考書ならウチに沢山ある処分に困っているので引き取ってもらって
使ってもらえるのならありがたい。
274270:2007/10/09(火) 13:44:51
>>273
いろいろありがとうございます。とても参考になりました。
なるほど、VBAの本という手もあったんですね。
C#は.NETな仕事が自分の手元まで来れば提案してみたいと思います。

VB6の参考書の件については、譲っていただけるのであれば嬉しいです。
よろしければメールアドレス欄の方までメールをお願いします。
275デフォルトの名無しさん:2007/10/09(火) 18:27:59
まあ実際は本屋さんに行くと今でも普通にVB6の本売ってるんだけどね。
でもまあ言葉はきついけど>>271の言うとおりだなあ。
276260:2007/10/09(火) 21:47:13
>>263 他皆様方

何とか解決できました。皆様ありがとうございました。

参考までにフロー。

dim BufferSize as long
dim Buff() as byte

フィールドのサイズ → BufferSize
getchunkでデータ取得 → Buff
出力ファイル、バイナリモードで開く
put # でBuffを出力
ファイル閉じる

って感じ。
277デフォルトの名無しさん:2007/10/10(水) 19:54:25
マルチディスプレイについて質問なんですが、.netのほうだと、

System.Windows.Forms.Screen.AllScreens

という方法で得られるようですが、VB6の場合はどのようにするのでしょうか?
278デフォルトの名無しさん:2007/10/10(水) 23:19:21
Windows scriptにあるsplit関数を使いたいのですが
参照設定で何を選択すれば使えるようになりますでしょうか
279デフォルトの名無しさん:2007/10/10(水) 23:22:55
splitってVB6にもあるだろw
VB5なら自分で書けよ。
大して難しくないでしょ
280デフォルトの名無しさん:2007/10/11(木) 15:48:04
[VB?、WindowsXP]

まだ始めてもいないので、大雑把な質問をさせてください。
インターネットエクスプローラーで、あるサイトに飛び、そこでユーザー名とパスワードを入力する。

この単純な作業をワンクリックで実行させたいのですが、VBでそのようなことは可能でしょうか?
可能であるなら、頑張って勉強しようと思います。

ご存知の方、どうか宜しくお願いします。
281デフォルトの名無しさん:2007/10/11(木) 17:23:36
>>280
余裕で可能。
282デフォルトの名無しさん:2007/10/11(木) 17:34:11
>>280
可能 .NETでも余裕
引数つきでIEを起動してSendKeysのWaitモードを使うのが一般的かな
283デフォルトの名無しさん:2007/10/11(木) 18:10:08
>>281
>>282
ありがとうございます!
それではVBの門を叩いてみようと思います。
284デフォルトの名無しさん:2007/10/11(木) 18:20:46
今更入門するなボケ
285デフォルトの名無しさん:2007/10/12(金) 14:36:34
VB2.0開発環境を作ることになったのですが、
どんなPCを用意すればいいでしょうか
Win98/Meくらいまでなら、動作しますか?

たぶんインストールすら無理だろうと思いつつも、
既存のVB6や2005の環境等が壊れるのが恐くて、
Xpや2000へのインストールは試してません・・・
286デフォルトの名無しさん:2007/10/12(金) 14:46:32
virtual pcでok
287デフォルトの名無しさん:2007/10/13(土) 00:34:13
>>285
何で2.0?
288デフォルトの名無しさん:2007/10/13(土) 07:27:36
>>287
古いプログラムのメンテ用としか思えないがwww
289285:2007/10/13(土) 08:54:57
VB2.0の必須動作条件などを探してみたのですが、
見つからなくて・・・
どなたか情報や実績お持ちじゃないでしょうか
290デフォルトの名無しさん:2007/10/13(土) 09:04:08
>>289
OSはWin3.1だろうからCPUは486DX,RAM8-16MB,画面はVGA-XGAだろ。
291デフォルトの名無しさん:2007/10/13(土) 09:21:14
>>289
会社にVB2の箱があるから書くよ

■アプリケーションソフトの作成に必要なシステム
コンピュータ本体   80286以上を搭載しWindowsが稼働するパーソナルコンピュータ
基本ソフトウェア   Windows 3.0A/3.02/3.1(リアルモードでは動作しません)
最小稼働メモリ    プロテクトメモリ4MB以上
ハードディスク    14MB以上の空き容量が必要
フロッピーディスクドライブ 3.5インチ(2HD)または5インチ(2HD)
その他        Windowsに準じた日本語入力システム
            本体に接続可能でWindowsに対応したマウス


うちでの実績は担当外だから詳しくわからないけど、開発環境はWindows95。
運用環境はWindows98のはず。
2000/XPはビートリーブ関係の問題で使えないとのことだった。
292289:2007/10/13(土) 10:11:25
すみません、わざわざありがとうございます
助かりました

Windows95を準備して当たってみます
293デフォルトの名無しさん:2007/10/15(月) 17:42:12
VB6でファイルを操作するときのエラー処理について質問します。

あるメソッドで、ファイルのオープン時にエラーが発生する可能性と、その他のコードでエラーが発生する
可能性があるとします。このとき、On Error Gotoを使ってエラーハンドリングする場合、次のように書きました。

Sub Foo()
 Dim fn as Integer
 Dim fileOpened as boolean
 fn = freefile
 On Error Goto MyExit
 open "filename" for input as #fn
 fileOpened = true
 ' エラートラップされる可能性のあるコード
MyExit:
 if fileOpened then
  close #fn
 end if
End Sub

これを次のように書くと何か問題あるでしょうか?
Sub Foo()
 Dim fn as Integer
 fn = freefile
 On Error Goto MyExit
 open "filename" for input as #fn
 ' エラートラップされる可能性のあるコード
MyExit:
 close #fn
End Sub

長々と書きましたが、つまりは「close #0を実行すると何が起こるのか?」がわからないということなんです。
294デフォルトの名無しさん:2007/10/15(月) 17:47:11
>>293
そうするとファイルオープン時のエラーに対処できないんじゃ?
53だっけ?57?
まぁ50番台にしとく

On Error Goto 0あったほうがよくね?
295デフォルトの名無しさん:2007/10/15(月) 18:22:54
出力バッファに残ってるデータの出力と、ファイルハンドルの開放なので、
開いてない番号指定してCloseしても何も起こらない。
Sub Foo()
 Dim fn as Integer
 fn = freefile
 close #fn
End Sub

エラートラップはそのモジュールと、そこから呼ばれる下位モジュール
だけで有効じゃなかったっけ?
下位モジュール呼ぶ前にエラートラップ外したい段階でOn Error Goto 0
いれればいいんでね?

暗黙の初期化とはいえ、上の文の方でOn Error前に
fileOpened = false が無いのが気になる。
296293:2007/10/16(火) 10:08:21
>>294
エラーの種類によらず、何かのエラーが起こったら処理を中断して終了するので、特にファイルオープンエラー
の場合かどうかを調べなくてもいいんです。
On Error Goto 0は>>295さんの言うとおり、いらないと思います。

>>295
情報ありがとうございました。ひとつのメソッドで複数のファイルを操作するとき、オープン済みフラグを
使用すると煩雑になるので困っていました。
オープン済みフラグは無しで行きます。

それと初期化の件ですが、やっぱりあったほうがいいですかね…。
Functionのdefaultの戻り値はFalseで、ローカルな数値系の変数の初期値は0、BooleanならFalseという
のを使いまくりです…
297デフォルトの名無しさん:2007/10/16(火) 14:50:11
>>296
VB6のデフォルト値は信頼できるから、どんどん使っていいよ。
298デフォルトの名無しさん:2007/10/16(火) 16:02:00
>>296
まぁ、エラートラップが1個ならそれでいいかもね

でもエラー内容をCALL元に帰すにしろ、帰さないにしろ
MyExit:内で
エラークリアはしておいた方がいいと思うがな
299デフォルトの名無しさん:2007/10/16(火) 20:30:36
エラークリアとか必要ないし
300デフォルトの名無しさん:2007/10/18(木) 08:27:55
>>292
> Windows95を準備して当たってみます
今時のPCで作業するんなら、XP+仮想化ソフト上のWin95という方法もあるよ。
301デフォルトの名無しさん:2007/10/18(木) 22:27:38
質問がありますので宜しくお願いします。

TreeView(VB6仕様)でノードを追加している間、処理の高速化のために再描画処理を回避させたい(=追加処理が終わってからいっぺんに再描画させたい)のですが上手くいきません。
以下の2パターンで試してみたのですが効果がありませんでした。

・パターン1
Ret = LockWindowUpdate(TreeView1.hwnd)

TreeView1にNodeを追加する処理・・・

Ret = LockWindowUpdate(0&)


・パターン2
Ret = PostMessage(TreeView1.hwnd, WM_SETREDRAW, False, Byval CLng(0))

TreeView1にNodeを追加する処理・・・

Ret = PostMessage(TreeView1.hwnd, WM_SETREDRAW, True, Byval CLng(0))


両パターン共、戻り値には1が来るのでエラーにはなっていないと思うのですが・・・(?_?;)
何卒宜しくお願いしますm(__)m
302デフォルトの名無しさん:2007/10/22(月) 16:04:27
VBを使って簡単なフラクタル画像を作ろうと思っているのですが、円を使ったフラクタルが作れなくて困っています。
コッホ曲線は自分で作ることができました。
どなたかヒントだけでも教えてもらえないでしょうか?
よろしくお願いしますm(_ _)m
303デフォルトの名無しさん:2007/10/23(火) 03:12:20
で、具体的にどこのヒントがほしいの?
304デフォルトの名無しさん:2007/10/23(火) 03:37:20
>>303はちょっと言い方キツいな

ヒント:
>>302は勉強しろ
305デフォルトの名無しさん:2007/10/23(火) 10:22:26
対応するEnd Ifに移動する機能ってないですよね?
そんなアドインとかありますか?
306デフォルトの名無しさん:2007/10/23(火) 12:26:11
>>305
字下げしろ
ネスト深くするな
307デフォルトの名無しさん:2007/10/23(火) 12:28:17
>>306
UXGAでも見れないくらい深く長い谷が存在する
308デフォルトの名無しさん:2007/10/23(火) 13:37:31
ある表示中のフォームのハードコピーを、
プリントできるサイズに縮小して印刷する方法はありますか?
IrfanViewの印刷で言うところのBest fit to page (aspect ratio)です。
309デフォルトの名無しさん:2007/10/23(火) 13:52:46
>308
mcopyみたいな外部アプリを使ったほうが楽でないかい?
310デフォルトの名無しさん:2007/10/25(木) 02:06:48
>>307
それは書き方がへたくそなだけだ
311デフォルトの名無しさん:2007/10/29(月) 00:10:59
VB6で、他アプリケーションのフォームのラベル等を
英語から日本語に書き換えるアプリを作っています。
で、チェックボックスのラベルの書き換えを行うときに躓きました。

SendMessage hWndX, &HC, 0, ByVal "あいうー"

でラベルの文字は変わるのですが、
この時ラベルの幅が無駄に広く、隣にテキストボックスが
有るのですが、このテキストボックスの上にラベルの空白になっている部分が重なって、
テキストボックスが隠れてしまいました。

チェックボックスのZオーダーを下げるか、
チェックボックスのラベルの幅を小さく出来れば解決できると思ったのですが、

SendMessageで送れるコマンドでサイズを変更するとかZオーダーを変更する方法はありますでしょうか?

お願いします。
312デフォルトの名無しさん:2007/10/31(水) 15:18:35
vb6で例えば金額が1234円ってあれば切り上げで1300円と答えを出したいのですがどうしたらいいでしょうか?初心者な質問ですみません

1234円⇒1300円
1299円⇒1300円
1300円⇒1300円
1301円⇒1400円
にしたいのですが・・・
313デフォルトの名無しさん:2007/10/31(水) 15:42:19
金額が4桁固定なのか、桁変わるのか知らんが
4桁なら

dim Mony as long

Mony=金額入れる 
 msgbox int(((Mony /100) +0.9999)) *100

こんなんじゃダメかな?
 

314デフォルトの名無しさん:2007/10/31(水) 15:43:31
>>312
数式考えれ
((x-1)\100+1)*100
315デフォルトの名無しさん:2007/10/31(水) 15:44:14
VB6.0、SPREAD3.0Jなんですが
以前まで表示されていた列のデータが、急に表示されなくなりました。
全てではなく、特定の1、2列程度。
プログラムは変更しておらず、デバッグするとSetTextで
データのセットはしていました。
プログラムの修正をしていないのにも関わらず、今まで表示されていたものが
表示されなくなる原因がつかめません。
316デフォルトの名無しさん:2007/10/31(水) 15:51:58
>>315
>、急に表示されなくなりました。 
って一言で書いて歩けど、絶対に、絶対に、絶対になにかしているから結果が変わった。
それは文章に出てきていないし、俺たちが分かるものじゃない。
がんばれとしかかけないぞ
317デフォルトの名無しさん:2007/10/31(水) 15:59:39
>>315
レコードとかから取ってきてるんだろうけど

ヴァリアントの変数に入れてる?
入れてなかったら、ヴァリアントの変数に一旦収納するかしてみ
318デフォルトの名無しさん:2007/10/31(水) 16:02:08
MSFlexGridなんですが、カンマ区切りの数字を
正しくソートする方法はありますか?

.sortに、flexSortGenericAscendingや、flexSortStringAscendingや
flexSortNumericAscendingなども設定してみたんですが、
いまいち法則性がわからない結果になってしまいます。
.colを間違っているとかは無いとは思うのですが。
319315:2007/10/31(水) 16:16:14
プログラムの修正はしていません。
何もしていないのに表示されなくなるってことは
環境周りかとも思うのですが。
WindowsUpdateを定期的に実行しています。

あと、Variant型にはしてないです。
でも今までそれで表示されてたんですよね。
一応Variantに変換してセットしてみたんですが、
やはり表示されませんでした。
320デフォルトの名無しさん:2007/10/31(水) 16:17:05
313さん.314さんお答えの方ありがとうございました!
うまくできました。本当にありがとうございます
321デフォルトの名無しさん:2007/10/31(水) 16:52:16
>>318
追記ですが、Format(price, "##,###,###")
のような処理をした文字列です。

これのFormatの処理をやめて、数字としてソートすると正常に
ソートができます。
322デフォルトの名無しさん:2007/10/31(水) 16:56:39
なんどもすいません 312の質問でSQLで書くのは可能なことでしょうか?
同じような質問ばかりですみません・・
323313:2007/10/31(水) 16:57:53
>>320
おーいす
ちなみに0.9999の箇所を0.8000とかに変えると
1捨2入とかもできるぞ〜

あと100の値は繰り上げ用の桁な(繰上げする桁が百の位だったので) 
10^(ベキ)n(繰り上げる桁数)とかすると良い


>>319
ソース見てないからなんとも言わんが
ちゃんとデータ収納されてるの?
あと変数にマウスオーバーした時の値(黄色い枠が表示されるじゃん)が「”」で囲われてるか?
324デフォルトの名無しさん:2007/10/31(水) 17:10:00
>>321
それって・・ホラ
新しいフォルダ(1)
新しいフォルダ(10)
新しいフォルダ(2)
・・・

見たいな感じじゃね?
325デフォルトの名無しさん:2007/10/31(水) 17:14:29
>>322
メジャーどころのRDBなら書ける
326デフォルトの名無しさん:2007/10/31(水) 17:14:46
>>324
いえ、そういうような法則性は一切見られません。

1,096,400 1,199,240 1,201,250 1,757,620 1,360,810
1,800,190 1,052,100
みたいな感じになってしまいます。
327デフォルトの名無しさん:2007/10/31(水) 17:25:18
>>321
なら非表示の列に数字を突っ込んでソートさせれば?
328デフォルトの名無しさん:2007/10/31(水) 17:25:21
>>326
さらに試してみると、毎回ソート結果が微妙に入れ替わるようです。
ただ、数字の塊として見ると、ある程度までは並んでいます。
329デフォルトの名無しさん:2007/10/31(水) 17:25:36
>>326
プライスってことは、その前に商品コードや品名・規格・単位などあるんですよね?
それでソートされているのでは?
330デフォルトの名無しさん:2007/10/31(水) 17:25:48
正の整数のみなら
先頭を空白で埋めて全ての値の文字数を合わせて文字列ソート
331デフォルトの名無しさん:2007/10/31(水) 17:37:21
皆さんありがとうございます。

>>329
プライスの列だけでソートしてみているのですが、おかしくなるようです。

>>330
なるほど、そういうやり方もあるのですね。
>>324さんのいうようなケースであればそれでいいとは思います。

ただ、今回の場合は、結果が不定な感じで法則性が
よくわかりませんでしたので、>>327さんのやりかたを試してみました。
.ColWidth(列) = 0で、列を非表示にした列に、元の数字を入れて、
そちらでソートしてみたところ、うまくいきました。

本当はもうちょっと検証すべきかもしれないのですが、
とりあえずはこのやり方でやってみたいと思います。
332デフォルトの名無しさん:2007/10/31(水) 17:42:22
少し法則性がわかったかもしれません。
1,234,567や2001/12/23の場合、,や/という異物より
まずは手前の数字部分だけでソートができていて、
異物以降は不定になるという事かもしれません。

今見てみると、カンマ区切りの数字以外でも、
上記のような日付も似たような不思議な挙動になっています。
333デフォルトの名無しさん:2007/10/31(水) 18:01:33
>>332
イミディエイトウィンドウで
? val("1,234,567")
? val("2001/12/23")
するとソートされている順序がわかるかと。
334デフォルトの名無しさん:2007/11/01(木) 05:58:09
VB6で、flashのactiveXコントロールを使用してswfファイルの再生は出来たのですが、
flvファイルの再生が出来ません。
swfファイルと同じファイル指定方法ではダメなのでしょうか?
335デフォルトの名無しさん:2007/11/01(木) 15:16:08
VB6.0sp6について質問です
新規でプロジェクトを作成し、保存しようとすると
C:\Program Files\Microsoft Visual Studio\VB98
がデフォルトで表示されます

これを
d:temp
等に変えることはできますでしょうか?

よろしくお願いします
336デフォルトの名無しさん:2007/11/01(木) 19:00:44
>>334
Flash(というよりSWF)を作る際に、FLV再生する機能が使えるということなので、
FlashでのFLV再生では、各自(ニコニコやYouTubeなど)がFLVを再生するSWFを作っている。

ちなみにコーデックとスプリッタが揃っている(WMPで再生できる)環境なら、
ActiveMovieなどでAVIやMPEGなどと同様に再生できる。
337デフォルトの名無しさん:2007/11/02(金) 00:44:32
>>335
vb6.exeのショートカットを作って作業フォルダ変更
338デフォルトの名無しさん:2007/11/02(金) 10:13:13
VB6(SP6)を使っています。

FlexGridのソートについての質問ですが、
2列をキーにしてソートする場合
.Col = x
.ColSel = y
.Sort = flexSortStringAscending
でできるのですが、

3列をキーにしてソートする方法はあるのでしょうか?
339デフォルトの名無しさん:2007/11/02(金) 10:25:38
>>338
隠しフィールドに任意の列数文の値を文字列化(と桁数合わせて)してそれでソート
340as:2007/11/02(金) 14:30:58
よろしくお願いします。
VB6で作成したシステムをC:\Program Files\aaaとC:\Program Files\bbb
にインストールしました。
1つのまったく同じシステムですが状況によってDBの接続先を変えたくてです。
DBの接続先はiniファイルを見て判断しています。

プログラムのiniファイルの参照パスはapp.path\SystemName.iniです。
このときaaaフォルダにインストールしたexeを実行しても
bbbフォルダにインストールしたexeを実行しても
後からインストールした方のiniファイルを見に行ってしまい結局同じDBを参照してしまいます。

app.pathをやめて./SystemName.ini と ./を使うことも考えましたが./はシステム操作中にカレントディレクトリが
変わってしまうことがあるっぽいということを聞いたのでやめました。
自分だけが使うなら都度iniファイルを書き変えるのですが使う人が素人ばかりなのでそういうわけにもいきません。

何かいい解決方法はないでしょうか?よろしくお願いいたします。
341デフォルトの名無しさん:2007/11/02(金) 16:13:05
>>340
プロジェクトがABC.vbpなら、それをコピってABC2.vbpを作る
2つのプロジェクトから別個にABC.exeとABC2.exeを作って
インストーラもそれぞれ別個に作る
342デフォルトの名無しさん:2007/11/02(金) 16:23:21
C:\Program Files\aaa
 フォルダ: 実行(仮).exe
        SystemName.ini
 SystemNameの中身(仮):Datapath=c:\Data\DataA.mdb

C:\Program Files\bbb
 フォルダ: 実行(仮).exe
        SystemName.ini
 SystemNameの中身(仮):Datapath=c:\Data\DataB.mdb
ってこと?

app.pathで取った情報の終端に既に「\」があって
C:\Program Files\aaa\\SystemName.ini こんな風になってる事はない?
 


343as:2007/11/02(金) 16:46:05
ご回答ありがとうございます。
システムはEXEを起動してメニューを表示し
各機能はDLLを呼ぶ形で実行しています。
メニュー画面から
Set l_obClass = CreateObject("aaaProg1.class_aaaProg1")
l_obClass.Show_aaaProg1
と aaaProg1.dll を呼ぶ


この場合、DLLも名前を変えて作成し直し上記プログラムも
Set l_obClass = CreateObject("bbbProg1.class_bbbProg1")
l_obClass.Show_bbbProg1
のように修正するべきなのでしょうか?

プロジェクトをコピーしてABC2.exeを作りましたが現象がかわりませんでした。
重ね重ね申し訳ございませんが、よろしくお願いいたします。
344デフォルトの名無しさん:2007/11/02(金) 17:03:42
かわいそう。
プログラミングしてる人も、提供される人も・・・。
345as:2007/11/02(金) 17:11:14
>>342
ご回答ありがとうございます。
まったくそのような感じです。
ステップ実行して確認してみましたが\\とはなっていませんでした。
346デフォルトの名無しさん:2007/11/02(金) 17:21:15
そもそもiniファイルをどうやって読んでる(オープンしてる)のだ?
347as:2007/11/02(金) 17:35:30
>>346
APIのGetPrivateProfileString関数を使って読んでいます。
348デフォルトの名無しさん:2007/11/02(金) 17:43:16
>>343
DLLも各aaaとbbbにあるん?
てか
EXEで取得したAppPathの文字列をDLLに渡したら?

参照設定辺りでうにゃうにゃになってるんでね?
349デフォルトの名無しさん:2007/11/02(金) 17:47:42
>>347
・オープンしようとしているiniファイルのパスを確認
・GetPrivateProfileStringを抜けたときに取得された値を確認
・それぞれのiniファイルのエントリが本当に正しいか確認
しろ。

それから、iniファイルだけが違うインストーラを作るのは、VBのプロジェクトをコピーする必要ないぞ。
どのインストーラ作成ツールを使ってるのか知らないけど、iniファイルを入れ替えるだけでいい。
350デフォルトの名無しさん:2007/11/02(金) 17:50:09
同じActiveX DLLを使おうとしてるなら、同じものを複数の場所にインストールすることはできない。
後からインストールした情報で上書きされる。
351as:2007/11/02(金) 18:33:30
みなさまありがとうございます。
>>350様のおっしゃったことが
まさに当てはまっているような気がしますので、DLLも名前を変えて
つくり直しています。
352デフォルトの名無しさん:2007/11/08(木) 01:42:41
つか、exeを2つに分ける必要無いだろ…常考…

iniに記すSectionかKeyを分けて接続先を変えればいいだけじゃないか…
353デフォルトの名無しさん:2007/11/11(日) 18:40:11
VB6.0のエディタでは、矩形選択できますか?
354デフォルトの名無しさん:2007/11/11(日) 22:18:18
>>353
無理。
355デフォルトの名無しさん:2007/11/12(月) 01:10:31
無理でしたか。文字列選択を矩形でできたら便利だなあと思ったことがあったので。
ありがとうございました。
356デフォルトの名無しさん:2007/11/12(月) 01:19:01
そんなアドインもあった気がする
が、標準でないなら無理だな
357デフォルトの名無しさん:2007/11/12(月) 08:44:11
矩形が必要だったことがついぞ記憶に無い
358デフォルトの名無しさん:2007/11/18(日) 15:26:36
えっとプログラムを作るのにまずいるソフトとかあるのですか?まったくの初心者ですが、真剣にやってみようと思っているので教えてください><;
359デフォルトの名無しさん:2007/11/18(日) 18:41:54
本屋行って良さそうな本を探し、買い、それを盲信して読む。
360デフォルトの名無しさん:2007/11/18(日) 18:46:35
保守ageしたいからってそんな書き込みしなくても。

【真剣な質問だった場合】
このスレに書き込んでるんだったら、Windows と Visual Basic が要ります。
Visual Basic 2005 Express Edition だったら Microsoft のサイトから
ただで入手できます。
ていうかスレ違いのような気がするので総合質問スレッドへお願いします。
361デフォルトの名無しさん:2007/11/18(日) 18:48:58
>>358
今からやるなら少なくともVBやVB.NETはやめといた方がいいぞ。
どの言語でやるかはここで聞けばいい。
http://pc11.2ch.net/test/read.cgi/tech/1193132235/
362デフォルトの名無しさん:2007/11/19(月) 03:38:17
みなさんありがとうございました。スレ違いだったみたいですみません><がんばってみます!
363デフォルトの名無しさん:2007/11/19(月) 15:21:36
Dim 変数 As String
Do until データがEOF
  変数 = 変数 & データ & vbCrLf
  データ次の行へ
Loop

こういう処理の流れでできるだけ早くできる方法って何になりますか?
現状データが5000件くらいになると処理が遅くなってきまして・・・
364デフォルトの名無しさん:2007/11/19(月) 15:23:50
すいません、VB6.0です。
365デフォルトの名無しさん:2007/11/19(月) 15:32:19
>>363
5000くらいなら文字列を配列&改行で持っておいて最後にJoinのほうがマシじゃない?
366デフォルトの名無しさん:2007/11/19(月) 16:00:01
>>364
いつもはVB SourceBookの「文字列を高速に連結するクラス」を使ってる。
同じようなものが「VB 文字列 高速 連結」で検索すると見つかる。
367デフォルトの名無しさん:2007/11/19(月) 16:12:15
>>363
文字列連結パフォーマンスを向上させる方法
ttp://support.microsoft.com/kb/170964/
368デフォルトの名無しさん:2007/11/19(月) 17:00:15
ありがとうございます。見つけることができました。
処理速度が尋常じゃなく向上してなんとかなりそうです。
369デフォルトの名無しさん:2007/11/19(月) 17:41:43
つ StringBuilder
370デフォルトの名無しさん:2007/11/19(月) 19:13:45
設定が読み込まれません。
Windowsのスタートアップに登録してWindows起動時にプログラムが
起動すると設定が読み込まれていません。
一度、プログラムを終了してから再度起動すると設定が読み込まれます。

設定の保存方法はXMLファイル(app.config)になります。
使用しているVBのバージョンはVB2005です。
371デフォルトの名無しさん:2007/11/19(月) 19:17:40
エスパーさん、>>370があなたを召還しましたよ
372デフォルトの名無しさん:2007/11/19(月) 23:43:05
>>370
スレタイよめwwww
373デフォルトの名無しさん:2007/11/20(火) 14:47:31
>>369
それ.NETだけじゃね?
374デフォルトの名無しさん:2007/11/20(火) 14:53:18
今既存のソースを保守してるんですけど
違うフォームに同じ名前のpublic変数がありまして
この場合の挙動ってどうなるか知りたいのですがどうなるんでしょうか?
いっそのことprivateに変えられたらいいけどソース書いたの辞めた人だし
かといって挙動を追うのも面倒だorz
375デフォルトの名無しさん:2007/11/20(火) 14:55:37
それぐらいも試せない奴が保守するんだ・・・
376デフォルトの名無しさん:2007/11/20(火) 15:25:07
>>374
フォーム側が優先されるんじゃなかったけ?
ローカル>自public>他public
377デフォルトの名無しさん:2007/11/20(火) 15:39:49
>>374
全部テストして値確認するのも面倒だし現状ちゃんと動いてるから
ぶっちゃけ今のままでも良いといえば良いんだよね。
無駄な変数とか探してたらそういうのがあったから出来たら直したいと思っただけで。

>>375
なるほど。ということはprivateに直してもよさげな気がしました。
ありがとうございます。
378デフォルトの名無しさん:2007/11/20(火) 16:16:16
>>373
CreateObject("System.Text.StringBuilder")
379デフォルトの名無しさん:2007/11/21(水) 09:19:30
>>378
.NET Framework必須じゃね?
380デフォルトの名無しさん:2007/11/21(水) 10:45:59
動いてるものには触らない
381デフォルトの名無しさん:2007/11/25(日) 13:13:43
それがたとえ整理しきれていない糞ソースだったとしてもだ
382デフォルトの名無しさん:2007/11/25(日) 22:17:38
触りたくてもソースがねーよwww
サーセンwwww
383デフォルトの名無しさん:2007/11/26(月) 21:49:14
VB6で作成した実行ファイルで、単体だけで一応どんなPCでも動くんでしたっけ?
日本語の文字化けはVB6jp.dll同じフォルダに入れておけばいいのは前に教えてもらったんですが
384デフォルトの名無しさん:2007/11/26(月) 22:38:56
使うDLL/OCXは必要
385デフォルトの名無しさん:2007/11/27(火) 09:48:46
最低でもMSVBVM60.DLLがあれば一応動くはず
386デフォルトの名無しさん:2007/11/27(火) 13:05:15
>>385
それってWindowsに標準でインストされてるじゃん
387デフォルトの名無しさん:2007/11/27(火) 18:29:47
98はVB5のそれがあるけどVB6のそれはなかった気がする
388デフォルトの名無しさん:2007/11/27(火) 20:33:57
>>387
ググってみたが、過去の情報ではMSVBVM60.DLLは元々はないみたいだね。
でも俺も外部のDLLやOCLを利用しない、基本的なプログラムだけでEXE作って
ZIPで中にVB6jp.dllだけ入れて会社の支店に配布したけど、特にランタイムもなにもインストールせず
使えてたようなんだけど何でだ?OSは2000とXPのみだけど、今はもうWindowsUpdateに組み込まれてるのか…
389デフォルトの名無しさん:2007/11/27(火) 21:59:08
それは冗談で言ってるのか?頭が悪いのか?
390デフォルトの名無しさん:2007/11/27(火) 23:02:29
>>385
それは大分昔の話だぞ
391デフォルトの名無しさん:2007/11/28(水) 00:15:01
>>388
それ以前に組み込まれている可能性もあるし
SP2いれたら勝手に入ったかとおもう
392デフォルトの名無しさん:2007/11/28(水) 01:16:33
参照設定やCreateobjectを使わないで、表示言語も英語にしとけば
間違いなく実行ファイルだけでどのPCでも動くな。OSが98以前は分からんが。
393デフォルトの名無しさん:2007/11/28(水) 09:06:06
>>388
>>387
>"98はVB5のそれがあるけど"
>>388
>OSは"2000とXPのみだけど"

バカなの?
394デフォルトの名無しさん:2007/11/28(水) 15:26:46
つまり2000とXPなら大丈夫ってこと?
395デフォルトの名無しさん:2007/11/28(水) 15:55:17
確かめてないから知らないけどつまり、
Win98にVB5は入っているがVB6は入ってない
2000/XPの場合はSPによるらしいがいつの間にかVB6が入っている
ってことじゃね?適当なパーティション用意して調べた方が早そうだな
仮想PCの方がいいか
396デフォルトの名無しさん:2007/11/29(木) 16:50:10
[VB6.0]
フォント設定ウィンドウで文字セットのリストボックスで任意の言語を設定できるようになってますが
同じ事をFont.Charsetプロパティで行うにはどうすればいいのでしょうか?
ヘルプを見ても0,2,128,255の値しか載ってませんでした
397デフォルトの名無しさん:2007/11/29(木) 19:57:41
>>396
Googleで wingdi.h SHIFTJIS_CHARSET
でいいんじゃないかな
398デフォルトの名無しさん:2007/11/29(木) 21:18:28
あんあん
399デフォルトの名無しさん:2007/11/29(木) 21:24:56
Dim ti As Integer

Private Sub Command1_Click()
Image1.Visible = True
Timer1.Enabled = True
Text1.Text = Time
ti = 0
Text2.Text = ""
Text3.Text = ""

End Sub


400デフォルトの名無しさん:2007/11/29(木) 21:25:57
Private Sub Command2_Click()
Text2.Text = Time
Text3.Text = Str(ti)
Timer1.Enabled = False
Image1.Visible = False

End Sub

Private Sub Command3_Click()
End
End Sub

Private Sub Text1_Change()

End Sub

Private Sub Timer1_Timer()
ti = ti + 1
End Sub

質問ですが、このソースでクリア(空白?)の
>>Text2.Text = ""
Text3.Text = ""
等は書いても書かなくてもいいのでしょうか?
401デフォルトの名無しさん:2007/11/29(木) 21:29:37
自分の思ったように書けよ
402デフォルトの名無しさん:2007/11/29(木) 21:34:58
ではなくても…宜しいでしょいかね?
403デフォルトの名無しさん:2007/12/01(土) 00:52:43
おっはよー。
VB6のActiveXコントロールをWebページに組み込んで、
複数ファイルのアップロードをしようと画策しています。

BFUpコントロールが理想に近いものでしたが、
警告ダイアログが出たり、ファイルごとにパラメータを変えたりできないのでちと断念しました。

アップロードされたファイルを受け取るサーバ側の処理はすでにできておるので、あとはVBでコントロールを作成するのみです。
httpのputっぽいイメージでアップロードさえできればあとはこっちで何とかするんで、
VBによるhttpアップロード処理が書かれたサンプルがあるサイトはありませんか。
もしくは検索キーワードを教えてくれると喜びます。
404403:2007/12/01(土) 20:19:52
自己解決。
BASP21にバイナリ吐きとソケット通信があったんでそれを使用。

皆さんありがとうございました。
405デフォルトの名無しさん:2007/12/05(水) 00:07:49
[VB6.0]
1ヶ月前から手が付けられなくすごく困っています

VB6.0でつくったソフトウェアを公開したのですが、他のPCではほとんどがエラーで終了してしまうそうです、
こちらでどうなってるのか見たいのですが仮想マシンを入れるようなお金は無く、
友達に協力してもらおうと思っていたのですが友達の環境(VB6.0導入済み)では問題なく動いてしまい、参考になりません

色々調べてみて「Dependency Walker」を使い、出されたDLLをEXEのフォルダに入れるというのを見つけたのですが、それで動作するのかまったく検討が付きません

どうすれば他のXPで動くようにできますか?
(ディストリビューションウィザードは使いたくありません)
406デフォルトの名無しさん:2007/12/05(水) 00:11:39
俺は必要なDLLとかはEXEのリソースに組み込んで、
ファームが表示される前にシステムフォルダにコピーしたりregsvrでレジストリ登録したりしてる
407デフォルトの名無しさん:2007/12/05(水) 00:17:53
取りあえず「Dependency Walker」で表示されたDLLを相手のPCにインストールしてもらえれば動くのでしょうか?
それがよく判らないのでどうしようもない・・・

これらが用事されました
「ADVAPI32.DLL;GDI32.DLL;KERNEL32.DLL;MSVBVM60.DLL; MSVCRT.DLL;NTDLL.DLL;OLE32.DLL;OLEAUT32.DLL;RPCRT4.DLL;USER32.DLL」
408デフォルトの名無しさん:2007/12/05(水) 00:41:15
それだけなら今のXPで普通に動くと思うんだけどなぁ。EXEだけで。
Formに日本語表示させてるならVB6JP.dllがないと文字化けするくらいで。
409デフォルトの名無しさん:2007/12/05(水) 01:05:08
あんあん
410デフォルトの名無しさん:2007/12/05(水) 07:55:08
ンー...(*~・ω・)ゞ・・・
これだけは避けたかったのですが・・・
ttp://carefreeness.futene.net/
ここのソフトウェアに問題のアプリをのせています、エラー内容は「OCXオブジェクトに関するエラー」としか判っていません

もしよければ確認お願いします、m(_ _)m
411デフォルトの名無しさん:2007/12/05(水) 11:19:25
>>410
どうでもいいけど、ページ開いて本文にリンクがないのにまず萎え。
メニューからSoftwareを開いて、そこにダウンロードリンクがないのが萎え。
moreをクリックして、そこにもダウンロードリンクがないのが萎え。

なので、ダウンロードしてない。
412デフォルトの名無しさん:2007/12/05(水) 12:29:34
>>410
ソフトの表部分には、カスタム OCX を使ってるんだよね?

ドキュメントを見ると、Office XP Web コンポーネントらしいけど
こいつが、MSComCtl.ocx を使っている。

Vector あたりで、VB のランタイムを落としてきてインストールすれば
動きそうな気がする。
413デフォルトの名無しさん:2007/12/05(水) 12:53:07
あー>>412 は違うかも。

OWC.DLL をフォルダにコピーするだけじゃだめ。
regsvr32 でレジストリに登録しなきゃたぶん動かない。
414デフォルトの名無しさん:2007/12/05(水) 12:59:58
ディストリビューションウィザードじゃなくて、msiでインストーラ作れよ
415デフォルトの名無しさん:2007/12/05(水) 14:26:54
というかOCXとか外部DLL使うのを極力減らす方向で頑張った方がいいんじゃない?
416デフォルトの名無しさん:2007/12/05(水) 14:49:17
ディストリビューションウィザードで
とりあえずコンポーネントの依存性だけでも
確認するのが先決じゃね?
417デフォルトの名無しさん:2007/12/05(水) 14:51:59
>>414
それが嫌だって言ってるから相談してるんじゃんか。
インストーラーじゃなくっても、リソースに組み込んで
LoadResDataで起動時最初にコピーしてregsvr32で登録するようにすれば大丈夫
418デフォルトの名無しさん:2007/12/05(水) 15:19:51
なんだ、ディストリビューションウィザードを使いたくないんじゃなくて、
インストーラを作りたくないのか。
419デフォルトの名無しさん:2007/12/05(水) 15:28:38
420デフォルトの名無しさん:2007/12/05(水) 16:31:03
Windows XP以降でしか使えなくしろと?
つか、なんでインストーラ作りたくないんだよ?
421デフォルトの名無しさん:2007/12/05(水) 17:05:46
数々の協力ありがとうございます、HPの方は生まれて初めて作ったので多少不安な部分があります、これから改善していこうと思っています、今は勘弁してくださいw

説明が間違っていました「ディストリビューションウィザードを使いたくない」ではなく「インストーラを作りたくないです」
理由はあまり好かれる形じゃないと思ったことが理由です、なので、できればZIPで一まとめにしたいと考えています

動作問題の解決として「OWC.DLL」のレジストリ登録をできるようにしてみます、

コンポーネントの依存性についてなんですが「Dependency Walkerで使用されたDLL調べる」ということとは違うことでしょうか?
コンポーネント依存性についてネット検索してみたのですが依存性の調べ方がイマイチ判りませんでした、どのように調べるのでしょうか?

長文失礼しました
422デフォルトの名無しさん:2007/12/05(水) 17:08:45
コンポーネントの依存性の調べ方を読み落としていました
すいません、m(_ _)m
423デフォルトの名無しさん:2007/12/05(水) 21:18:32
>>420
あんまVBとは関係ない話題だけど、製品じゃなくってフリーソフトで
インストール必須の仕様だとそれだけで使いたくなくならない?俺だけ?
424デフォルトの名無しさん:2007/12/05(水) 21:31:29
んじゃ、インストーラ不要なように作るか、違う言語で作れよ
425デフォルトの名無しさん:2007/12/05(水) 22:03:23
行儀の悪い事するからVistaで動かなくなるんだ
素直に作れよ
426デフォルトの名無しさん:2007/12/06(木) 00:09:40
素直に考えると.net移行が正解
427デフォルトの名無しさん:2007/12/06(木) 01:04:08
Vectorとかに転がってるVB6のRuntimeセットをダウンロードさせればいいんじゃね。
428デフォルトの名無しさん:2007/12/06(木) 01:11:30
.net(苦笑)
429デフォルトの名無しさん:2007/12/06(木) 04:30:34
もういまどき2000以下のやつはそういないし
だいたいランタイムはインストールされてるだろ

ない奴は別途ダウンしてもらえばいいと思うぞ
業務ならインスコしてもらえばいいだけだしな

でも・・・俺も.netに移行したほうがいいと思うんだが・・・・
430デフォルトの名無しさん:2007/12/06(木) 12:02:06
色々どうもw
.Net移行も考えたことありましたが趣味で作ってるだけなんですw

それにプログラム作り始めて1年、本も読まず完全独学でがんばっています
431デフォルトの名無しさん:2007/12/06(木) 15:01:11
音声読み上げで困っています。

開発言語:VB6.0
OS:Win2000

Voice Text コントロールを使用して音声を読み上げる際に使用される
音声辞書を編集することは可能でしょうか?
(ユーザー辞書を作成し、それを元に読み上げをさせる方法等)
出来れば、辞書の登録や編集もVBで行いたいのですが。

具体的には、デフォルトのままで、"11A" を読み上げさせると、
"ジュウイチアンペア" と読みます。
これを、"イチイチエイ" と読ませたいのです。

フリーのソフト等で辞書登録してその通りに読ませることが出来るもの
があるので、何かしら方法があると思うのですが。。。
432デフォルトの名無しさん:2007/12/06(木) 16:01:40
>>431
音声辞書の仕様はすでに把握していて
それをどうすればVBで出来るのかって話なんだろうな?
辞書の仕様についてVBスレで質問してるんなら帰れ
433デフォルトの名無しさん:2007/12/06(木) 16:13:03
だが断る
434デフォルトの名無しさん:2007/12/06(木) 19:11:16
431です。

どうすればVBで出来るかというところが知りたかったのですが、
辞書の仕様を分かっているのかと言われると分かっていないので
勉強しなおしてきます。

失礼しました。
435デフォルトの名無しさん:2007/12/08(土) 16:13:24
そこで初音ミクですよ。
流暢な歌声でデスマプロジェクトも和む。
436デフォルトの名無しさん:2007/12/11(火) 03:19:06
プログラムの話ではないんですが、現在XP HOME SP1を使用して趣味レベルでVB6.0を活用しています。
ところがPCの調子が悪く、買い換えようと思ってるんですが、現在はXP SP2か、Vistaしか販売していないようです。

XP SP2でも、Vistaでも、VB6.0は問題なく動作するものでしょうか?
マイクロソフトのページだと、Vistaでも動作する、とあるのですが……XP SP2に関してはページが見つかりませんでした。

XP SP2だと、win98あたりのツールが使えない等の話を聞いていたので、SP1のまま使用し続けていたのですが、
こういうのはただの取り越し苦労でしょうか?

とりあえずVB6.0の動作だけでも、教えていただければと思いレスしました。
よろしければ、どなたかお教えください。
437デフォルトの名無しさん:2007/12/11(火) 09:49:58
>>436
問題ない。
438デフォルトの名無しさん:2007/12/11(火) 11:28:24
>>436
既に回答レスついてるが、俺も VB6+XPsp2 だけど、全く問題ない。
むしろ、Vista環境に変えたとき今までのソースがそのまま使えるかどうかの方が気になる。
439デフォルトの名無しさん:2007/12/11(火) 11:57:27
Vistaでも問題ない。
ソースは探せばある。
440デフォルトの名無しさん:2007/12/11(火) 11:58:46
あー、VB6そのものがVistaで動くかどうかといえば、ちゃんと動くという話であって、
今までVB6で作ったアプリがVistaで何の問題もなく動くというわけではない。念のため。
441デフォルトの名無しさん:2007/12/11(火) 12:59:31
>>440
あれ?VistaでIDEの動作保証はされてないんじゃなかったっけ?
442デフォルトの名無しさん:2007/12/11(火) 13:09:48
VB6, Vistaでぐぐると、トップに表示されるページくらい読もうぜ。
443デフォルトの名無しさん:2007/12/11(火) 13:28:33
>>442
読んでも分かんないから教えてくれって言ってるのか?
444デフォルトの名無しさん:2007/12/11(火) 13:30:41
は?俺は教えてくれなんて言ってないが。
445デフォルトの名無しさん:2007/12/11(火) 14:04:59
VB6で、イミディエイトウィンドウの内容をコードで消すことはできますか?
実行するごとにCtrl+A、Delは疲れました・・・
446デフォルトの名無しさん:2007/12/11(火) 15:32:05
>>445
Debug.Printしなきゃいい
つか、わざわざ消す意味がわからんが
447デフォルトの名無しさん:2007/12/11(火) 15:50:36
>>445 できるよ。アドイン作ってCtrlA,DelをSendKeys

別件質問ですが、
Application.VBE.SelectVBComponents.CodeModule.CreateEventProc("Click", "Button")
ここの、Buttonコントロールに何のイベントがあるか、コードが存在すればMemberで所得できますが、
未知の状態でイベントを列挙する方法ありますか。

448デフォルトの名無しさん:2007/12/11(火) 18:10:47
>>447
質問が謎過ぎて分かんないんだけど、ひょっとしてこういうこと?
http://pc11.2ch.net/test/read.cgi/tech/1189814602/935
449デフォルトの名無しさん:2007/12/11(火) 19:02:01
>>448 やろうとしていることは似てます。全てのイベントプロシージャにdebug.print "Proc_EventName"
としたいのです。その例のように、すでに存在していれば、Membersを使えばできます。
存在しないときはMembersにはないので、そのときどうするかと言う方法が知りたいです。
Buttonとかならせこせき書き写せばいいが、WithEvensにしたときなど全て網羅するのは
大変なのでソース中で知りたいわけです。
450デフォルトの名無しさん:2007/12/11(火) 21:19:22
VB6で配列の一部分を別の配列にコピーする方法を教えてください。
C言語のmemcpyのような感じで、反復を使わなくても良い方法です。
よろしくです。
451デフォルトの名無しさん:2007/12/11(火) 21:31:07
Clone
452450:2007/12/11(火) 21:34:57
>>451
どうもです!
453436:2007/12/11(火) 22:41:21
>>437-440
ご回答ありがとうございました。
これで新PCへの乗り換えも安心して出来ます。
vistaは他の多くのソフトの動作が怪しいようですので、とりあえずはまだXP SP2で行こうと思います。
454デフォルトの名無しさん:2007/12/11(火) 22:51:32
Oracle Database 10g R2に附属のODBCドライバは
VB5 SP3のRDO経由接続は問題ないでしょうか?
Oracle7.3からの移行を考えていますがVB5のRDOのバージョンで
10g R2附属のDBCのバージョンが相性が悪いという事はないでしょうか?
VB6でRDOのバージョンが上がっているのでVB5のRDOは最新のODBCに
対応しているのかいないのかを知りたいのです。どなたかご教授ください。
455デフォルトの名無しさん:2007/12/12(水) 00:02:59
>>448 私がばかでした。できそうですので勉強してみます。
456デフォルトの名無しさん:2007/12/12(水) 23:26:54
>>448 できました。ありがとう。
457デフォルトの名無しさん:2007/12/12(水) 23:58:32
[VB6.0WIN2000]
ORACLEから抽出したデータをEXCELに出力するPGが、遅くて使い物になりません。

具体的にはこんな感じです。
・VBからSQLを実行し、データを抽出。(RecordSetで持たせる。)
・1行EXCELに出力したらmovenextして、EOFになるまでひたすらループ。

配列を使えば良い気もするけど、EXCELに出力するときに遅ければ意味がないのかな?
ちなみに1000行出力するのに、4分かかります。

高速化する良い方法ってありますか??
458デフォルトの名無しさん:2007/12/13(木) 00:12:08
てかEXCELでなくてCSVではだめなのか?
EXCELのSHEET1にSHEET2を参照するようにして
吐き出したCSVをSHEET2に取り込むような処理書いてみるとか
DoEventとかループの中に書いてると極端に遅くなるがその辺はどうだろう?
459デフォルトの名無しさん:2007/12/13(木) 00:17:05
すいません。
知らないなら黙っててください。
460デフォルトの名無しさん:2007/12/13(木) 00:30:20
>>457
Excelをデータベースとして扱ってみたら?
461デフォルトの名無しさん:2007/12/13(木) 00:43:20
>>457
Excelの出力時、1セル毎に吐き出していて、更に、表示更新がON(プロパティ名は忘れた。。)
の場合、遅いよ
表示更新を出力時に止める(終わったら戻す)か、配列に格納して、セル範囲に代入で激速だ
やってみれ
462457:2007/12/13(木) 01:11:31
>>458
指摘通りDoEvents使ってます。
ありがとう。

>>460
500000件ほどデータがあるので、EXCELに入らないのです。

>>461
配列に格納→EXCEL代入は良さそうですね。明日調べてみます。
463デフォルトの名無しさん:2007/12/13(木) 01:19:16
俺は答を知っているので、この回答の全てが頓珍漢であることだけは言っておく

ヒントはExcel側にある
464デフォルトの名無しさん:2007/12/13(木) 01:59:00
>>462
> 500000件ほどデータがあるので、EXCELに入らないのです。
遅いとかそんなんじゃなくて不可能じゃないのか?!
465デフォルトの名無しさん:2007/12/13(木) 03:19:39
流石にその件数でDoEvents けしちゃったらキャンセルボタンとかも使えなくなるだろうし
適当な変数でも持ってループ10回に一回と加の割合でつかうとか対策取るのがお勧め
466デフォルトの名無しさん:2007/12/13(木) 08:00:49
クリップボードを使えば速いよ
467デフォルトの名無しさん:2007/12/13(木) 11:43:47
>>457
市販コンポーネントのExcel Creator使うと高速。
468デフォルトの名無しさん:2007/12/14(金) 17:42:31
>>ttp://pc11.2ch.net/test/read.cgi/tech/1197448064/44
Split関数 なんてどう?
469デフォルトの名無しさん:2007/12/16(日) 00:27:25
>457
Excelをどうやって使ってるのさ?
Set xlsApp = New Excel.Application
みたいな感じ?
debugで止めてみればわかるが、これだとExcelの起動もデータの書き出しもめちゃ遅です。
おいらは>457使った。
速かったよ。
470デフォルトの名無しさん:2007/12/16(日) 06:00:51
てす
471デフォルトの名無しさん:2007/12/16(日) 07:36:29
VB6.0で質問です
ある時間が来るごとにbeep音を鳴らすというプログラムを作りたくて
それも一定間隔の時間ではなく、最初は実行して10分後、次はそ5分後に
beep音を鳴らすの繰り返し、要するに、実行してから
10分→5分→10分→5分→10分→5分→10分→5分・・・・・・
という時間間隔でbeep音を鳴らすようなことは可能ですか?
もしやり方分かる方が頂けると助かります
よろしくお願いします
472デフォルトの名無しさん:2007/12/16(日) 07:43:48
>>471
timer
473デフォルトの名無しさん:2007/12/16(日) 08:45:16
>>471
Option Explicit
Private WithEvents Timer As VB.Timer
Private timerEventAtTime As Date

Private Sub Form_Load()
    Set Timer = Me.Controls.Add("VB.Timer", "Timer")
    With Timer
        .Interval = 500 '.5[s](詳しくはサンプリング周波数とかみて)
        .Enabled = True
    End With
    Call onEventAtTime
End Sub

Private Sub Timer_Timer()
    If DateDiff("s", Now, timerEventAtTime) = 0 Then Call onEventAtTime
End Sub

Private Sub onEventAtTime()
    Static flag As Boolean
    flag = Not flag
    Call Beep
    If flag Then
        timerEventAtTime = DateAdd("s", 10, Now) '逢えて秒.
    Else
        timerEventAtTime = DateAdd("s", 5, Now)
    End If
End Sub
474デフォルトの名無しさん:2007/12/16(日) 11:18:59
簡単な質問には親切に答えるおまいらカワユス
475デフォルトの名無しさん:2007/12/16(日) 12:53:06
簡単な質問と単純な質問はちがう
簡単な答えと単純な答えも違う
476デフォルトの名無しさん:2007/12/16(日) 13:49:28
誰か>>469を訳してください
477デフォルトの名無しさん:2007/12/16(日) 17:50:36
VB6.0での質問です。
VBのプログラム内であるexe(Aとします)をshellで起動した後、
Aに対してkeycodeを送りたいのですが、どうしたらいいのでしょうか?

普段はAをキーボード操作にて使用しているのですが、ある計測器からの、
COMポートからの信号によって特定のキー操作と同じ動作をAにさせたいのです。

shellでAを呼び出したときプログラムのIDを取得して、そのIDに対して何とか
すればいいのではという想像はつくのですが、実際のやり方がわかりません。

どうぞよろしくお願いします。
478デフォルトの名無しさん:2007/12/16(日) 17:57:35
>>477
sendkeys
479デフォルトの名無しさん:2007/12/16(日) 18:32:18
appactivate
480デフォルトの名無しさん:2007/12/16(日) 20:04:16
SendInput
481デフォルトの名無しさん:2007/12/17(月) 02:22:41
keybd_event
482 ◆MWwfaua4zc :2007/12/17(月) 04:19:03
483 ◆J7zvtF5pA2 :2007/12/17(月) 04:20:15
484デフォルトの名無しさん:2007/12/17(月) 04:21:19
#羽曳野最強
485 ◆4Pfhi92EAI :2007/12/19(水) 08:55:45
a
486デフォルトの名無しさん:2007/12/19(水) 20:37:25
oo4oを使って、oracleと接続。テーブルの中身をsqlでOradynasetにセットして、内容を出力してるんだけど、timastamp型の項目をOrafieldメソッドのValueプロパティで出そうとすると、「オブジェクトはメソッドまたはプロパティをサポートしてない」って言われる。
OraTimestampとか使わずにダイナセットから取りだす方法ってある?
487デフォルトの名無しさん:2007/12/20(木) 17:10:21
excel vbaスレだとスレ違いになりそうなので、こちらで質問す。

今現在、instr関数を使って「""」の含まれている文章を検索するにはどうすればいいんすか?

具体的には、検索文字列で「<p class="TXT12"><a class="video" href="watch/sm」というのを使いたいんですけど
"<p class="TXT12"><a class="video" href="watch/sm"
とすると、"<p class="の部分で閉じてしまって「コンパイルエラー:修正候補:ステートメントの最後」というのが出てしまう。

なんか良い方法あったら教えて欲しいっす。
488デフォルトの名無しさん:2007/12/20(木) 17:40:40
"<p class=""TXT12""><a class=""video"" href=""watch/sm"
489デフォルトの名無しさん:2007/12/20(木) 17:41:04
自己解決しました。質問する前にもうちょっとググれ俺……
490489:2007/12/20(木) 17:42:49
>>488
すんません。ありがとうございます。
491デフォルトの名無しさん:2007/12/20(木) 21:19:51
超初心者です。クラスのコードを読んでいると、下記のような
構文に出会いますが・・・

Public Property Get〜()AS〜

End Property
や、
Public Property Let〜()AS〜

End Property
で使用されている、「Get」や「Let」キーワードの意味が理解できません。
「どのような意味」で
「どのような場合」に
「どのように使用する」のかが、???です。

ご親切な方、教えて下さい。
492デフォルトの名無しさん:2007/12/21(金) 00:47:27
>>491
一回ググレ
493デフォルトの名無しさん:2007/12/21(金) 10:24:29
つか、Propertyにカーソルを合わせてF1押せ
494デフォルトの名無しさん:2007/12/22(土) 11:26:33
既知かもしれんがググっても判らんかったんで教えて
VB6なんですが

DIM ST as String
ST = StrConv("ル",vbUnicode)
ST = StrConv(ST,vbFormUnicode)

でSTが"ル"に戻らないの?

"ア"でやると戻るのだか
495デフォルトの名無しさん:2007/12/22(土) 12:10:08
文字列リテラルを一旦、変数に代入するとうまく動く感じがする。俺も聞きたいくらいだが。
Dim ST As String
ST = "ル"
ST = StrConv(ST, vbFromUnicode)
ST = StrConv(ST, vbUnicode)
496デフォルトの名無しさん:2007/12/22(土) 12:40:03
>>495
レスありがとう
それもやってみたけどダメだったのよー
だいたいunicodeに変換した段階で0x8145になるのはなぜ?
"ル"をunicodeで表すと0xEB30でしょ
"メ"も"ロ"も0x8145になるけどなんで
497デフォルトの名無しさん:2007/12/22(土) 13:27:47
>>494
ひんと:VB6のString型の内部表現はそもそもUnicode

ちなみに >>495 は上手くいった
498デフォルトの名無しさん:2007/12/22(土) 13:42:35
正直、いまさらVB6触ってる人間って少なくとも数年はVB6やってる連中のはずだと思うが、
それがこんな基本も知らないのかよ、という感が否定できん。
499デフォルトの名無しさん:2007/12/22(土) 13:46:12
なにそのお前の狭い常識の押し付け。
EXCELのVBAから入って、最近VB6をやり始めた人もたくさんいる
500デフォルトの名無しさん:2007/12/22(土) 13:50:47
そういう人間が絶対「いない」とは言わないが、
メジャーなケースとは「絶対に」想定できんけどな。
501デフォルトの名無しさん:2007/12/22(土) 15:11:37
つい一昨日までVB6.0触ってた
まぁ、今「Microsoft Visual Basic 2008 Express Edition」の無償配布やってるから乗換えたけど。

2008はVB6より扱いやすいきがする
502デフォルトの名無しさん:2007/12/22(土) 15:15:26
,NET(苦笑)
503デフォルトの名無しさん:2007/12/22(土) 16:21:02
と、VB6にかじりつくしかないオッサンゾンビは苦笑した
504デフォルトの名無しさん:2007/12/22(土) 17:42:49
ここはカンマに突っ込んだら負け・・・なのか・・・
505デフォルトの名無しさん:2007/12/22(土) 22:14:50
しーっ! みちゃいけません
506デフォルトの名無しさん:2007/12/23(日) 09:19:39
Meで開発環境が動かせないのは痛いから.netには移行出来ない
507デフォルトの名無しさん:2007/12/23(日) 18:43:18
ArrayListの使いやすさだけで乗り換える価値はある
508デフォルトの名無しさん:2007/12/23(日) 19:41:51
>>270
アマゾンのマーケットプレイスでも安い良本はあるよ。

Visual Basic6に関する本では一番使いやすい
ピーターノートンの手解きVisual Basic6〈Vol.1〉
http://www.amazon.co.jp/exec/obidos/ASIN/4877830111
ピーターノートンの手解きVisual Basic6〈Vol.2〉
http://www.amazon.co.jp/exec/obidos/ASIN/487783012X
509デフォルトの名無しさん:2007/12/23(日) 23:42:36
VB6.0での質問です
図形をマウスでドラッグしてフォーム内を
自由に動かせれるようにしたいのですがどうしたらいいでしょうか?
リサイズは必要ありません
510デフォルトの名無しさん:2007/12/24(月) 01:57:55
>>509
詳しく
511デフォルトの名無しさん:2007/12/24(月) 02:12:45
初歩的な質問です
ActiveXコントロールのボタンを押し
DLLのプロシージャを起動させたいのですがうまくいきません
同じプロジェクトグループ内にあります

コントロール click()
 DLLプロシージャ名.呼び出し(引数無)

↑このDLLプロシージャ名がDLLのものと認識されていません
512デフォルトの名無しさん:2007/12/24(月) 02:28:25
511のものですがそろそろ寝ます
端的に、コントロールボタンからDLLプロシージャを呼び出す表記を教えていただければ幸いです
513デフォルトの名無しさん:2007/12/24(月) 03:35:25
DLLってプロジェクトに登録できるの?
クラスか何かと根本的に勘違いしてない?
514デフォルトの名無しさん:2007/12/24(月) 08:02:38
>>511
> DLLプロシージャ
そもそもこんな言葉初耳なわけだが
515509:2007/12/24(月) 12:36:33
フォーム内に長方形の図形があり、それをドラッグ&ドロップすれば離した場所に図形が移動する
という動作をさせたいです。
ワードやエクセルのオートシェイプみたいな操作といえば分かりやすいかもしれません
ただ長方形は初めからサイズが決まっているので図形のはしっこを掴んでサイズを変える機能は必要はありません
516509:2007/12/24(月) 12:42:18
あ、サイズが決まっているというのは常に一定の大きさというわけではなく、長さがその都度変わります
517デフォルトの名無しさん:2007/12/24(月) 13:11:50
その長方形がShapeコントロールなら、
Form_MouseDownでクリックされた箇所が長方形の内側ならフラグON、
長方形の左上からカーソル位置までの距離を取っておき、
Form_MouseMoveでフラグがONならShape1.Move
Form_MouseUpでフラグOFF

でいいんでない?
518デフォルトの名無しさん:2007/12/24(月) 14:38:51
良回答認定
519デフォルトの名無しさん:2007/12/24(月) 15:19:35
>>513-514
もっと噛み砕くとコントロールにはボタンだけが配置されていて
それが押されるとDLL内で処理を行って結果を保持。
その結果をテキストボックスに返すといった具合です。

現在ボタンから呼び出し方法で詰まっているところ。
なにぶん素人なのでご容赦ください
520デフォルトの名無しさん:2007/12/24(月) 15:37:32
そのDLLはActiveXDLLなの?それとも普通のDLL?
521デフォルトの名無しさん:2007/12/24(月) 15:53:34
このスレくると、ああ下には下がいるな、と安心できて精神衛生上とても助かるよw
本当に実に貴重なスレだ。
522デフォルトの名無しさん:2007/12/24(月) 16:21:35
それはあまりに性格が悪いと思うよ。
523デフォルトの名無しさん:2007/12/24(月) 16:23:04
最底辺のお前が言っても・・・
524デフォルトの名無しさん:2007/12/24(月) 16:34:39
うわぁ。本当に性格悪いなぁ。逆にかわいそうになるよ。
525デフォルトの名無しさん:2007/12/24(月) 17:32:03
>>520
コントロールもDLLもVB6のものです。
そのコントロールを標準exeに貼り付けています。

コントロールのボタンクリック() ←コントロール内に記述
 DLL内プロシージャ名 ←○○.プロシージャ名
えんど

クラスメソッドのような使い方になるのですかね。
とにかくここの連結が謎です
526デフォルトの名無しさん:2007/12/24(月) 17:36:23
>>525
なあ、本気でその日本語他人に通じると思ってるの?
無茶苦茶変だぞ君の日本語。

例えば「そのコントロール」って何のことだよ
527デフォルトの名無しさん:2007/12/24(月) 17:43:50
ActiveX DLLだとすると参照設定して
dim hoge as new hoge.c_hoge
call hoge.methodhoge()

みたいな感じ
528509:2007/12/24(月) 21:12:06
>>517
ありがとうございます
早速使わせていただきます
529デフォルトの名無しさん:2007/12/24(月) 22:13:03
>>526
この初心者以前に低脳だなおまい
530デフォルトの名無しさん:2007/12/25(火) 09:59:33
>>525
謎です、って、どんなDLLを作ったんだよw それが分からなきゃ、使いようがないだろ。
DLLのユーザーコントロールが自前の処理を持ってたら、何もしなくていいのかもしれんし。

取り込み方が分からないって意味なら、>>527。 参照設定すれば補助入力に反応するようになる。
531デフォルトの名無しさん:2007/12/25(火) 20:43:39
ふぉふぉふぉっ
ぶいびーとな
532デフォルトの名無しさん:2007/12/25(火) 20:57:35
Public Class Form1
Const LINK_URL As String = "http://www.google.co.jp"

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
WebBrowser1.Navigate(New Uri(LINK_URL))
Catch
MessageBox.Show("表示できません", "エラー")
End Try
End Sub

Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
WebBrowser1.Document.All.GetElementsByName("q")(0).InnerText = TextBox1.Text '例1
WebBrowser1.Document.Forms(0).InvokeMember("submit")
End Sub
End Class


これだとgoogleにアクセスしまくりなんですが、どうしたらよいでしょうか?
533デフォルトの名無しさん:2007/12/25(火) 21:15:48
>>532
先ずはスレタイ嫁
534デフォルトの名無しさん:2007/12/25(火) 21:25:33
>>533
すいません。スレ違いでした。
535デフォルトの名無しさん:2007/12/25(火) 22:14:46
すいません、質問なのですが

実行中と表示させたフォームがあり、キャンセルボタンがついています。
裏で別フォームが実行しているプログラムをキャンセルしようと考えています。
しかし、裏の処理が重いせいなのか自分で調べて見つけたDoEventsという命令では思ったようにキャンセル処理が実行できません。

そこで、このDoEvents以外にこういったことを実行できる方法はあるのか教えていただきたいです。

環境はVB6.0 SP5.0
OSはXP SP2です。

よろしくお願いします。
536デフォルトの名無しさん:2007/12/25(火) 23:28:16
自分で調べた見つけてDoEventsという命令を使って書いたコードをここに晒してみ
537デフォルトの名無しさん:2007/12/26(水) 00:15:17
>>535
http://hpcgi1.nifty.com/MADIA/VBBBS2/wwwlng.cgi?print+200712/07120056.txt

さすがに2chと両肩もちはだめよ
538デフォルトの名無しさん:2007/12/27(木) 17:09:06
>>537
暇人ktkr
539もっと暇人:2007/12/27(木) 17:16:35
"両肩もち"の検索結果 5 件中 1 - 5 件目 (0.74 秒)
(このスレがトップwww)
540デフォルトの名無しさん:2007/12/27(木) 17:19:55
最近ググルに反映されるのが驚くほどはやいな
2chって集中的に走査されてるのかな
541デフォルトの名無しさん:2007/12/27(木) 20:52:51
モヴェは典型的なチンカスだな
542デフォルトの名無しさん:2007/12/29(土) 14:51:05
ステータスバーコントロールで右下をつかんでウィンドウサイズを変える部分って
あれを無効にするようなプロパティとかありましたっけ?
なんか見つかんない(´・ω・`)
543デフォルトの名無しさん:2007/12/29(土) 16:32:33
まず
「ステータスバーコントロールで右下をつかんでウィンドウサイズを変える部分」
が見つかりません。


ステータスバー消して試してみたら?
544デフォルトの名無しさん:2007/12/29(土) 18:20:01
>>540
2chレスは5分もたたない内にインデックス化されてたりしてビビる
545デフォルトの名無しさん:2007/12/31(月) 16:13:28
>>542
プロパティ名はド忘れしたが、
デザイン時のプロパティウインドウに「可変」とか表示されてるのを
「実線」だか「固定」だかにすりゃいいんじゃなかったか?
546デフォルトの名無しさん:2008/01/01(火) 02:32:57
VB2005もここでよろしいのでしょうか?
テキストボックスに入力した数の次に大きい素数を探すプログラムを作成しているのですが、
よくわかりません。
Whlie・For文、if文程度であればわかります。
どなたか教えていただけませんか?
547デフォルトの名無しさん:2008/01/01(火) 03:09:15
>>546
スレタイ読めますか?
548546:2008/01/01(火) 10:39:37
>>547
申し訳ありません。
初心者ですのでソフトはどれが新しいかわかりませんでした。
出直してきます。
549デフォルトの名無しさん:2008/01/02(水) 10:08:27
>>548
日本語でプログラミング「なでしこ」

とても便利です。(日本語なので、プログラムを覚えるだけ)

みなさん、スレ違いですいませんでした。
550デフォルトの名無しさん:2008/01/02(水) 10:15:44
僕も覚えたいのでプログラムを教えてください
551デフォルトの名無しさん:2008/01/02(水) 11:41:38
>>550
他力本願のやつには無理だあきらめろ
552デフォルトの名無しさん:2008/01/02(水) 16:05:55
>>545
設定はFormに依存みたいですね
ありがとうございました
553デフォルトの名無しさん:2008/01/02(水) 21:06:16
>>521
そのとおり
これだけ下がいれば、まだ俺も給料もらえるって安心できるよな。

おめーらわかんねーだろうけど、年とると物覚え悪くなるし、
何より新しいものに挑戦してやろうっていう気力がわかなくなる。
新しい言語やらなんやらの習得が苦痛以外の何者でもないんだよ。
VB6から動けない俺に絶望し、VB6すらわからんお前らを見て、まだ大丈夫だって希望を感じる。
554デフォルトの名無しさん:2008/01/02(水) 21:09:55
できました!
ありがとうございます!
555デフォルトの名無しさん:2008/01/03(木) 01:36:01
VB6.0 WinXP Proです。

ウィンドウに付けたメニューをポップアップした際に、
特定のメニュー項目にカーソルを合わせた状態でイベントを起こしたいのですが。

具体的には、例えばメニューにウィンドウで開いたファイルの履歴を作り、
そのファイルについての何かしらの情報をカーソル合わせた時に、
エディットボックスか何かにテキスト入力してポップアップさせたい、、というようなことです。

デフォルトのMenuイベントではClickしか無いので、
どうにかメニューポップアップ時のカーソルイベント発生か何かで実現する方法ありませんでしょうか・・・?
出来れば、まだ実用段階ではない自作イベントやサブクラス化でない方法を探してるのですが。。(VC++で出来てVBではまだやってない)
ご教授よろしくお願いします。
556デフォルトの名無しさん:2008/01/03(木) 12:47:46
VB6.0ってエントリポイントどこにあるの
557デフォルトの名無しさん:2008/01/03(木) 13:02:51
>>556
なにの?
558デフォルトの名無しさん:2008/01/03(木) 13:13:55
>>557
標準EXEで作るアプリケーション。
c言語だったらmainがエントリポイントだけどVB6ではどれかな
559デフォルトの名無しさん:2008/01/03(木) 13:18:07
プロジェクトの設定で、スタートアップを
フォームに設定したら、VBの内臓エントリポイント、
あるいは、そのフォームのForm_Loadといえなくもない
プロシージャで設定したら、そいつ。
560デフォルトの名無しさん:2008/01/03(木) 13:22:15
>>559
サンクス
561556:2008/01/03(木) 13:46:59
スタートアップをSub Main()に変更して
Sub Main()
Call MsgBox("main")
End Sub
って書いて実行したんだが

スタートアップフォームまたはSub Mainが必要です
って怒られるんだが何でだろ
562デフォルトの名無しさん:2008/01/03(木) 13:49:09
>>561
標準モジュールに書け
563デフォルトの名無しさん:2008/01/03(木) 13:51:16
Sub Mainはモジュールファイルのほうに書かないといかんよ。
Formファイルに書いたりすると怒られる。
564556:2008/01/03(木) 13:52:57
>>562
おお!できた!
ありがとう
565デフォルトの名無しさん:2008/01/04(金) 14:56:41
レジストリに値を設定したいのですが
下記のページのサンプルでうまく設定できません
ttp://homepage1.nifty.com/MADIA/vb/API/RegSetValueEx.htm
なにがいけないんでしょうか。

OS:Windows XP HOME
566デフォルトの名無しさん:2008/01/04(金) 15:19:16
ひとつずつ戻値をチェックしろ。エラーの場合はGetLastErrorで詳細を。
567デフォルトの名無しさん:2008/01/04(金) 18:09:59
なぜそこで訊かない?
568デフォルトの名無しさん:2008/01/05(土) 04:19:15
ポップアップってなに?
569デフォルトの名無しさん:2008/01/05(土) 10:35:05
ポップ的な物がアップする物です
570デフォルトの名無しさん:2008/01/05(土) 11:02:21
その説明でなんとなくわかったぜ。ツールチップテキストのことか
571デフォルトの名無しさん:2008/01/05(土) 12:29:57
ブラウザでブロックしているものかと思った
572デフォルトの名無しさん:2008/01/05(土) 15:14:17
エディットボックスってなに?
573デフォルトの名無しさん:2008/01/05(土) 15:32:33
ググレクズ
574デフォルトの名無しさん:2008/01/05(土) 15:42:08
生意気なやつめ
575デフォルトの名無しさん:2008/01/05(土) 16:05:42
VB6で

Private Sub Form_Load()
Set mDb = OpenDatabase("Rental.mdb")
End Sub

上記のようにフォームロードしたときにRental.mdbを開くようにしたいのですが
プロジェクトと同じ場所にファイルを置くのでは開けないのでしょうか?
576デフォルトの名無しさん:2008/01/05(土) 16:19:24
>>575
OpenDatabaseって何?

ファイル名だけでなんかデータベースを開こうとしているけど
相対パス指定になるよね?
内部でどういう処理を行って絶対パスに直しているかわかる?
577572,574:2008/01/05(土) 16:24:36
app.pathじゃないのか?
それか勝手にenvironとかみたいなかんじで何かのパスを取ってきてるかも?

っていうか、ググレカス
578572,574:2008/01/05(土) 16:26:05
知ったかぶりしてカッコつけたけど、ちょっと恥ずかしくなったぜ
579デフォルトの名無しさん:2008/01/05(土) 16:31:16
>>576
返信ありがとうございます。
OpenDatabaseはこれです。
ttp://monjyu.biz/monjyu/bord/sen1/msg/221.html
情報を小出し・後出しにして申し訳ありませんが
これは大学の課題で、大学のパソコンでは上記の方法でRental.mdbを開けたのですが
このプロジェクトのフォルダごとコピーし家のパソコンでやったら実行できなくなってしまい
"実行時エラー '3024':
ファイル '<Rental.mdb>' が見つかりませんでした。"
となってしまいます。
Rental.mdbはプロジェクトと同じフォルダに置いておけば実行できると言われていたのですが…

>ファイル名だけでなんかデータベースを開こうとしてるけど〜
ファイル名だけでは通常開けないものなのでしょうか…?
プロジェクトと同じフォルダにおくことによって相対パス扱いになると思っていたのですが。
(htmlなんかだと同じフォルダのものなら xxx.htmlなどでリンクできますし…)
どうやって絶対パスに直してるか、などはまったく分かりません。
580デフォルトの名無しさん:2008/01/05(土) 16:35:14
>>579
んー,ちょっとイミディエイトウィンドウで
print curdir
ってやってカレントディレクトリ表示させてみ?

(面倒だったら絶対パス指定して実行させてもかまわないのでは?
581デフォルトの名無しさん:2008/01/05(土) 16:41:50
>>580
C:\Program Files\Microsoft Visual Studio\VB98
と出ました。
プロジェクトがおいてあるフォルダはマイドキュメント内のフォルダです。
カレントディレクトリが間違っていたと言うことでしょうか。
582デフォルトの名無しさん:2008/01/05(土) 16:45:22
>>581
まぁだいたいそんなかんじ

一旦IDEでプロジェクト保存して,エクスプローラから保存したプロジェクトを開けばカレントディレクトリはプロジェクトのあるディレクトリになるよ

面倒なら ChDir 関数でカレントディレクトリを移動するんだな
583デフォルトの名無しさん:2008/01/05(土) 16:48:32
>>582
ありがとうございます!できました!
カレントディレクトリが大学→自宅にしたのに変わってなかったのが原因だったんですかね?
ともかく、これで課題を続けることが出来ます。
本当にありがとうございました!
584デフォルトの名無しさん:2008/01/06(日) 12:43:18
誰か>>583の解釈方法を和訳してくれ。
585デフォルトの名無しさん:2008/01/06(日) 14:44:40
>>584
日本語を覚えてから書き込んでくれ。
586デフォルトの名無しさん:2008/01/06(日) 16:56:40
>>583
日本語でおk
587もっと暇人:2008/01/06(日) 18:12:32
どうでもいいじゃん、そんなこと。
気にスンナ
588デフォルトの名無しさん:2008/01/06(日) 20:34:38
VB6.0です。質問お願いします。
web上の画像を最終的にPictureBoxに表示させたいのですがやり方がわかりません。
WebBrowserを使ってweb画像を表示させBitBltでコピーさせようと思ったのですが、
WebBrowserのデバイスコンテキスト?がわからなくて上手くいきませんでした。
BitBltを使わない方法でも構いませんので、わかる方いらっしゃいましたらよろしくお願いします。
589デフォルトの名無しさん:2008/01/06(日) 22:29:54
tempなりに落として普通に表示させればいいじゃん
590デフォルトの名無しさん:2008/01/07(月) 18:26:14
>>589
保存せずに表示させる方法が知りたかったのですが、別に保存して最後に消すんでも構わない気がしてきました。
そちらの方法を探してみます。ありがとうございました。
591デフォルトの名無しさん:2008/01/07(月) 18:45:04
WebBrowserだって一旦ファイルとして保存しているんだし、それでいい。
592デフォルトの名無しさん:2008/01/11(金) 20:03:21
ピクチャーボックスの中にラベルやコマンドボタンなどのコントロールを入れて、
そのピクチャーボックスの中にある画像データやコントロールなどを一つの画像としてデータを取得するとか出来ないでしょうか。
593デフォルトの名無しさん:2008/01/11(金) 20:31:50
>>592
なんかできたはず
594デフォルトの名無しさん:2008/01/11(金) 22:05:37
>>592
出来ますよ
頑張ってください
595592:2008/01/12(土) 00:48:43
ああ、すいませんなんとかなりそうです。失礼しました
596デフォルトの名無しさん:2008/01/13(日) 01:31:58
WinXPとWin2000で、環境変数が変わった事をブロードキャストで通知して
OSの再起動やログオフをせずに環境変数を反映させたいんです。

Microsoftのサイトには

SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0,
(LPARAM) "Environment", SMTO_ABORTIFHUNG,
5000, &dwReturnValue);

て書いてあるんだけど、VBSでdwReturnValueの定義から書いた場合はどうなるんでしょうか?
597デフォルトの名無しさん:2008/01/13(日) 03:36:17
>>588
OleDraw
598デフォルトの名無しさん:2008/01/15(火) 10:43:21
カラー選定ダイアログボックスで選択した色をHTMLで使う
#RRGGBB形式に変換するにはどうすればいいですか?
いくら調べてもよくわかんないんです。><
599598:2008/01/15(火) 11:21:07
10進数を16進数に変換したらできました。^^;;;;
600デフォルトの名無しさん:2008/01/15(火) 12:56:24
あれ
HTMLってBGRじゃなかったっけ?
601598:2008/01/15(火) 13:26:11
>>600
RGB形式でした。
しかたないから、16進数に変換したあと、置換しました。^^;
602デフォルトの名無しさん:2008/01/15(火) 16:08:28
修論必死杉www盛大にワロタwwwww
ttp://mixi.jp/view_bbs.pl?id=26964091
603デフォルトの名無しさん:2008/01/15(火) 16:27:27
>>602
あまりにも糞コードすぐるw
604デフォルトの名無しさん:2008/01/15(火) 23:21:52
>>602
コード丸ごとコピペかw
オープンして大丈夫なのかねこれ
605デフォルトの名無しさん:2008/01/16(水) 04:59:18
Access2003を使用してアプリをつくっています。
AccessデータベースのほうにIEのC:から始まるexeパスを入れていて
String型変数strのほうにデータベース接続してIEのexeパスをいれます。
やりたいことはデータベースからひっぱてきたブラウザのexeパスを格納した変数str
と事前にHPのアドレスが格納されたurlを使ってProcess()によるブラウザ、HP起動です。

Dim proc As New Process()
proc.StartInfo.FileName = str
'urlには事前にhttp:からはじまるYahooのアドレスの文字列が格納されているものとします
proc.StartInfo.Arguments = url
proc.Start()

こうするとproc.Start()のところで指定されたファイルが見つかりませんというエラーが表示されてしまいます。

試しに

proc.StartInfo.FileName = "C:\Program Files\Internet Explorer\iexplore.exe"
proc.StartInfo.Arguments = "http://www.yahoo.co.jp/"
こう変更すると正常にIEでヤフーのHPが表示されます。

データベースからひっぱてくるブラウザのexeパスではエラーになる。。
どう修正すれば
目的通りにブラウザ起動ができるようになるんでしょうか。。
長々しくなってすいません。
606デフォルトの名無しさん:2008/01/16(水) 09:50:50
>>605
そこまで試したなら、proc.Start() でブレイクして変数の値を確認すれば、
原因が掴めそうなもんだが・・・。
おそらく、UNICODE辺りが原因なんじゃないかなと推測。
607デフォルトの名無しさん:2008/01/16(水) 11:55:28
たぶん、CreateProcessと同様の制限で、
ファイル名を「"」で囲まないとダメなんじゃなかろーか。
proc.StartInfo.FileName = """" & "c:\program files..." & """"
608デフォルトの名無しさん:2008/01/16(水) 12:08:17
>>605
試してないけど次のどっちかでいけると思う。
proc.StartInfo.FileName = "iexplore" 
proc.StartInfo.FileName = "http://www.yahoo.co.jp/"
609デフォルトの名無しさん:2008/01/17(木) 09:11:50
VB6でCheckListBoxって使えませんか?
610デフォルトの名無しさん:2008/01/17(木) 09:29:02
使えるよ
611デフォルトの名無しさん:2008/01/17(木) 16:22:28
winxp、vb6.0sp6、ActiveReport2.0Proで帳票を開発しております。
columncountで列が変わるたびに線を引くことは可能でしょうか?
___ ___
| | | |
| | | |
| | | |
 ̄ ̄ ̄  ̄ ̄ ̄
このような形にしたいのですが。現在は、
___ 
| | | |
| | | |
| | | |
     ̄ ̄ ̄
このような形にしかなりません。
わかる方がおられましら、ご回答の程お願いします。
612611:2008/01/17(木) 16:30:16
ちょっとはみ出てますね。。。
実際は最大で長方形の線が4つになる予定です。
その後、改ページという感じ
613デフォルトの名無しさん:2008/01/17(木) 16:38:34
改ページイベントで纏めて処理すりゃいいんじゃないの?
つか、外部OCXは回答が得られにくいと思うので念のため。
614611:2008/01/17(木) 16:56:19
>>613
回答ありがとうございます。

>改ページイベントで纏めて処理すりゃいいんじゃないの?
そういう手もあったか
ちょっと実践してみます。

>つか、外部OCXは回答が得られにくいと思うので念のため。
やっぱりそうなんですね。
google(日本)でもMSNでも「ActiveReport columnCount」の検索結果が50件程度でしたから。。。

他にも方法あるよーって方がいましたらお教え願います。
615デフォルトの名無しさん:2008/01/17(木) 17:01:28
やたらと罫線で四方を囲みたがるのは日本の習慣で、
西欧の帳票だとヘッダーや合計の下付罫線くらいしか使わない。
特に縦方向の罫線はほとんど使われないので、
ActiveReportのような洋モノのソフトはそういう罫線が引けないことが多い。
ActiveReportで何が出来るかを把握する前にデザイン決めたらダメダメだよ。
616デフォルトの名無しさん:2008/01/17(木) 17:03:42
いや、手段を自ら限定しちゃうような検索キーはダメだろ・・・
例えば、「ActiveReport 罫線」 とかをメインキーにした方が情報は絶対増えるよ。
617611:2008/01/17(木) 17:30:23
>>615
>ActiveReportで何が出来るかを把握する前にデザイン決めたらダメダメだよ。
間違いないと思う。

>>616
そっちをメインキーにすれば良かった。。。
「ActiveReport 罫線」で検索してみます。
さっきのキーは、事例があればと思いメインキーにしてました。
意外とないものですね。
このスレでもPart29あたりにチラッとあった程度でしたから。
618609:2008/01/17(木) 20:39:21
>>610
VB6でCheckListBoxを使うには
どうすればよいでしょうか?
619デフォルトの名無しさん:2008/01/17(木) 20:48:05
>>618
ググれ
620デフォルトの名無しさん:2008/01/17(木) 22:03:55
>>615
エンドユーザに言ってくれ
621デフォルトの名無しさん:2008/01/17(木) 22:10:31
>>618
ActiveX.OCX版のCheckListBoxをインストールすれば良いんだよ

これはVB専用ではなく汎用コントロールなので、これ以上はここで聞かないでね
622デフォルトの名無しさん:2008/01/17(木) 23:21:04
VBでリアルタイム処理のプログラムって作ることできないんですか?
623デフォルトの名無しさん:2008/01/18(金) 01:53:29
>>622
カーネルレベルのことを言っているのなら
無理
624609:2008/01/18(金) 07:58:44
標準の機能の中では
使えないという結論に達しました。
ありがとうございました。
625デフォルトの名無しさん:2008/01/18(金) 17:20:11
随時更新されるテキストファイルを、随時読み込むにはどうすればいいでしょうか
626デフォルトの名無しさん:2008/01/18(金) 17:27:01
Timerコントロールを使う
627625:2008/01/18(金) 17:36:50
ありがとうございます。やってみます。
628デフォルトの名無しさん:2008/01/18(金) 22:24:07
FileSystemWatcher
629デフォルトの名無しさん:2008/01/19(土) 00:05:13
FindNextChangeNotification
ReadDirectoryChangesW
630625:2008/01/19(土) 10:16:35
0.5秒ごとに変数の中身を一式更新する簡単な方法でならできました。

随時更新されるテキストファイルを随時一行ずつ変数の中に入れたいのですが、
今の方法だと、非効率的な気がします。FileSystemWatcherはVB.NETの関数だそうですね。
使い方勉強してきます
631デフォルトの名無しさん:2008/01/19(土) 11:04:29
VB6はマルチスレッド行けますか?
632デフォルトの名無しさん:2008/01/19(土) 11:41:22
いけません、ダメです、おやめになって!
633デフォルトの名無しさん:2008/01/19(土) 17:40:48
IDがvb6だから来たんだけど、ここIDでないですね・・・
634デフォルトの名無しさん:2008/01/19(土) 17:53:08
>>633
出たとしても、普通は板ごとに変わるよ。
635デフォルトの名無しさん:2008/01/19(土) 18:23:52
ごめn、恥ずかしいから帰る(ノ∀`)
636デフォルトの名無しさん:2008/01/19(土) 18:26:14
ID 出なくてよかったな
637デフォルトの名無しさん:2008/01/19(土) 18:28:32
この際、帰らずに住人になっちゃえ。
638デフォルトの名無しさん:2008/01/19(土) 18:37:14
ピクチャーボックスで画像の上に、複数の文字を指定の場所に表示させたりさせなかったりしたいんだけど、
ピクチャーボックス複数宣言してないと無理?
639デフォルトの名無しさん:2008/01/19(土) 18:48:39
文字ってのが画像じゃないなら、
普通に透明のラベルコントロール貼り付けてVisible切り替えとか。
640デフォルトの名無しさん:2008/01/19(土) 18:56:48
文字の数が、不確定なので。。。画像だったらできますか?
641デフォルトの名無しさん:2008/01/19(土) 20:03:38
文字が画像だと透過処理が必要だろうし、テキストより面倒。

実行時にコントロールを動的作成すれば不確定でも対応できるけど、
コントロールを複数使うのが嫌なら、
API使うなりして、DCに直接描画していくしかないんじゃないかな。
642デフォルトの名無しさん:2008/01/19(土) 20:57:49
>>633
帰って来た
でも俺VB2008ですね orz
643デフォルトの名無しさん:2008/01/20(日) 22:07:30
html文の練習の為に、TextBox1に書いたhtml文をButton1クリックで、
ブラウザに表示させるような物を作りたいのですが、
どのようにすれば実現可能でしょうか?

よろしくお願いします
644デフォルトの名無しさん:2008/01/20(日) 22:56:55
>>643
ブラウザは自作?
645デフォルトの名無しさん:2008/01/20(日) 23:50:24
>>643
delphiなら、コード3行追加するだけでできるよ。
646643:2008/01/21(月) 02:36:15
>>644
説明不足でした、すいません。
ブラウザは自作ではありません。
Webbrowserコントロールに表示できるようにしたいのです。
647デフォルトの名無しさん:2008/01/21(月) 11:52:13
>>646
Button1をクリックしたときに一時ファイルとしてTextBox1の内容を拡張子.htmlで保存
その保存したファイルのパスをWebブラウザにナビゲートでおk
648643:2008/01/21(月) 13:22:50

>>647
ありがとうございます。
早速試してみたいと思います。
649デフォルトの名無しさん:2008/01/21(月) 13:37:02
webbrowser.navigate "about:blank"
webbrowser.docunment.write "<html>hello<html>"

見たいな感じでできない?
650デフォルトの名無しさん:2008/01/21(月) 18:45:58
Vista対応事例は出てきてますか?
素直に.net移行が無難でしょうか。
651デフォルトの名無しさん:2008/01/21(月) 19:08:20
一応動くことは動くよ
但し無難というなら.NETの方が無難なのは間違いない
652デフォルトの名無しさん:2008/01/21(月) 19:09:48
いやそんなこと人に尋ねて回る奴の書くコードはツールの如何にかかわらず不安だろう
653デフォルトの名無しさん:2008/01/21(月) 21:43:40
>652
ごめんなさい
とりあえずふいんきだけでも知りたくて・・・
検索してきます
654デフォルトの名無しさん:2008/01/21(月) 21:49:05
.NET(嘲笑)
655デフォルトの名無しさん:2008/01/22(火) 04:28:55
この"ふいんき"はマジっぽいな。
656デフォルトの名無しさん:2008/01/22(火) 15:35:29
先ほどVB 6.0 で誤って無限ループつくって実行したら、実行ファイルだけでなくVBごと固まってしまい。
これは、セーブしてないソースがまるごと無くなる瞬間では?とドキドキして実行ファイルを強制終了したら
VBごと落ちやがりました。 今日やったソースがパーです。。実行前にセーブしない私が悪いんでしょうか?
657デフォルトの名無しさん:2008/01/22(火) 15:37:11
>>656
誰しも一回は経験することだ
過ちから学べばいいジャマイカ
658デフォルトの名無しさん:2008/01/22(火) 15:44:08
>>657
困った事に、7〜8年位前VB3.0で同じようなことやらかしたの
いま、またVB使っているのですがまた同じ過ちを繰り返してます。、、、何かVB使うとストレスが溜まります。
659デフォルトの名無しさん:2008/01/22(火) 15:44:34
>>656
ctrl + breakも効かなかったのか。
ご愁傷様。
660デフォルトの名無しさん:2008/01/22(火) 15:45:47
>>658
じゃあ,自分はどMなんだ,と割り切るしかないのジャマイカ?
661デフォルトの名無しさん:2008/01/22(火) 16:55:32
VB5 NT,2000,XP

10年強使ってる(らしい)業務アプリなんだが
いきなりフォントサイズが変わる現象が頻発しています。
コマンドボタンだったり、MsFlexGrid内の値だったり。

変わるキッカケが全く分からず、一定でもない。
おそらくデフォルトのフォントに変わってるみたいなのですが、
調べてもそれらしい事が分かりません。
どなたか、似た現象に会ったことありませんか?
662デフォルトの名無しさん:2008/01/22(火) 17:30:22
>>661
フォントが壊れた事はあるけど、OSが2000以降の端末で起きたことはないなー。
端末によっては再現しなかったりはしない?
663デフォルトの名無しさん:2008/01/22(火) 17:45:10
>>662
端末依存はおそらくないと思います。
どの端末でも不定期ですが発生します。

ただ、今感じている範囲だと、
印刷物を出力すると・・・な印象があります。
(完全に個人的な感想ですが)
664デフォルトの名無しさん:2008/01/22(火) 19:05:25
そんじゃ普通にバグでしょ。
665デフォルトの名無しさん:2008/01/22(火) 20:17:43
>>664
やっぱりバグなんだろーなー
わからん。

なにせ、全く同じ結果になる処理を続けて行っても
起こったり起こらなかったりなもので・・・。

もちょっと考えてみます。
666デフォルトの名無しさん:2008/01/23(水) 05:23:49
最近はわからんけど昔はシステムリソースが少なくなると
フォントがデフォルトフォント(やや大きく細く見えるフォント)になる現象があったよ。
フォントってでかいからね。
ループ内でフォントやフォントサイズを切り替えまくると
メチャクチャ処理が遅くなるとかあるし。
まぁWIN98の頃の話だけどさ。
667デフォルトの名無しさん:2008/01/24(木) 12:28:00
VBでボタンを押すと人数の平均が表示されるプログラムを作りたいのですが
どのようなすればいいでしょうか?例のソースを書いて戴けたら幸いです。
668デフォルトの名無しさん:2008/01/24(木) 12:36:42
>>667
Private Sub Command1_Click()

    Me.Text1.Text = "人数の平均"
End Sub
669デフォルトの名無しさん:2008/01/24(木) 12:58:21
レスありがたいのですが…厳密に言うと、そのコマンドを押して
人数の平均結果を数字で出力したいのですが…参考書にも載っていなく困ってます
670デフォルトの名無しさん:2008/01/24(木) 13:19:55
>>669
なんの平均だよ?w
誰にも答えようがないだろ、それじゃあ。
671デフォルトの名無しさん:2008/01/24(木) 13:20:15
>>669
まずは仕様書を提出しなさい
672デフォルトの名無しさん:2008/01/24(木) 13:21:31
質問すらまともに出来ないのなら、諦めて下さい。
673デフォルトの名無しさん:2008/01/24(木) 13:23:42
>>667
平均値を計算するには
元となる何らかのデータの集合が必要な訳だが、
それは君の脳から直接吸い上げればいいのかね?
674ガノタ:2008/01/24(木) 13:25:41
>>673
ということは、サイコフレームの開発から始める必要がありますな。
675デフォルトの名無しさん:2008/01/24(木) 14:36:02
違う違う、>>667は、これから自分がどういう行動を取ったら良いのか、
そのものズバリが載っている参考書が無くて困ってるんだよ。
とりあえず、ここで何て訊いたら良いかが分かる参考書を紹介してあげてはどうだろう?
676デフォルトの名無しさん:2008/01/24(木) 15:15:01
【質問内容】
「ボタンを押すと人数の平均が表示されるプログラム」
  ↓
【厳密に言うと】
「コマンドを押して人数の平均結果を数字で出力したい」


【質問の答え】
 宿 題 は 自 分 で や れ
677デフォルトの名無しさん:2008/01/24(木) 15:44:29
いまどき宿題をVB6で出すところも無いだろう常識的に考えて
678デフォルトの名無しさん:2008/01/24(木) 15:47:40
>>677
同意www

>>667
平均の計算方法なら、
数値全部足してから、
数値の個数で割り算するんだお。

ま、電卓かEXCELでやれYo www
679デフォルトの名無しさん:2008/01/24(木) 15:55:43
>>677-678
ヒント1:.NET教えられる教師や講師は希少
ヒント2:.NETを生徒が使う端末分購入できる高校・大学は希少

Win2000もチラホラ出始めた、まだまだ98SE隆盛の時代に
コンピュータ基礎と銘打って
・MS-DOSの一太郎や花子
・FMTOWNSやPC9821
・BASIC言語
なんて授業してた大学もあるんだ
680デフォルトの名無しさん:2008/01/24(木) 15:59:01
>>679
いや、JavaかC++だろ。
681デフォルトの名無しさん:2008/01/24(木) 16:10:10
>>680
それこそヒント1に引っかかるんじゃね?
682デフォルトの名無しさん:2008/01/24(木) 16:11:17
.NETってw
683669:2008/01/24(木) 19:07:15
遅スレ、すんまそです
学校の宿題です、なので仕様書とかもありません
684デフォルトの名無しさん:2008/01/24(木) 19:09:49
>>683
宿題は自分でやれwww

仕様書は自分で書け。
685デフォルトの名無しさん:2008/01/24(木) 19:09:49
>>683
正直でよろしい。 何を作るか決めて、調べても方法が分からなかったらまたおいで。
686デフォルトの名無しさん:2008/01/24(木) 19:11:52
学校でVB教えてる所ってあったんだな。
687669:2008/01/24(木) 19:37:38
>>684
今、格闘しています。。。
演算使うのは何とかわかりました

>>685
はい

>>686
あります、入門には最適とかで
688デフォルトの名無しさん:2008/01/24(木) 20:08:46
騙されるな
入門に最適ではない
そんな馬鹿な事を言う奴な殴ってやれ
689デフォルトの名無しさん:2008/01/24(木) 20:25:03
まあいまさらVBなのはいいとして、ライセンス関係はどうなってるんだろうなw
690デフォルトの名無しさん:2008/01/24(木) 20:35:34
MSDNにまだあるんじゃなかった?
691デフォルトの名無しさん:2008/01/24(木) 20:42:38
ダウングレード権が行使できるだろう。
692デフォルトの名無しさん:2008/01/24(木) 20:44:22
>>690
MSDNってVLでも一人頭結構高額だと思うけどw
693デフォルトの名無しさん:2008/01/24(木) 21:16:29
>>688
んなこたーない。 初心者にとって使い易いのは間違いない。
文字の"0"と、数字の 0 が全くベツモノだと説明したトコで、コンピュータ初心者にはハァ?だろ。

VBを使えるようになったヤツが、プログラミング全般に自信を持つのは確かに間違いだが。
694デフォルトの名無しさん:2008/01/24(木) 21:32:47
N88→VBと経験した上でCに触れた。
文字列の扱いに関して、VBって非常に便利なんだと痛感した。
695デフォルトの名無しさん:2008/01/24(木) 21:50:32
しかしポインタが理解できずに挫折。
が抜けてるな
696デフォルトの名無しさん:2008/01/24(木) 21:56:01
ポインタなんて理解する必要もないけどね
697デフォルトの名無しさん:2008/01/24(木) 22:33:55
どうせ習うならJAVAやCを習ったほうがいいじゃないか
VBなんて古典は時間の無駄
古典の学者にでもなるつもりかね
698デフォルトの名無しさん:2008/01/24(木) 22:36:44
VBAとして使う分には便利。
699694:2008/01/24(木) 23:02:31
>>695
やっぱ挫折する人って多いんかな。
Cに慣れきった今となっては、VBの方が煩わしく感じるけど。
700デフォルトの名無しさん:2008/01/24(木) 23:21:42
UI部分を作るなら便利だよ、VBは。 低レベルな高級言語とでも言おうか。
データ処理については、Cで書き直すだけで10倍早くなることもザラだけど。
もちろん、VBしか知らないと、API一つ使いこなせないだろうけど、
VBを活用できない、ってのもプログラマとしてどうかという気はする。
701デフォルトの名無しさん:2008/01/25(金) 09:39:13
VBAは今の形のままずっと残るんかな?
702デフォルトの名無しさん:2008/01/25(金) 09:43:46
これからVB.NETでずっと頑張っていこうと考えているけど、
やっぱりCが使えないと、社会に出て行けない?
703デフォルトの名無しさん:2008/01/25(金) 09:51:54
出て行けないことは無いが選択肢は減るだろうね。
704デフォルトの名無しさん:2008/01/25(金) 10:53:42
どういう風に減るのか教えて欲しい。
VBでは出来ないことがCではたくさんできるとか?
705デフォルトの名無しさん:2008/01/25(金) 11:20:38
世の中どーしてもVC++が強い
もらうソースが大抵VC++とかCだ
手の込んだことをしようとするとVBではつらい
つらいだけで出来なくはないが、DLLを別途用意とか…

と。
通りすがりの制御系方面プログラマですた
706デフォルトの名無しさん:2008/01/25(金) 11:50:27
親切にありがとう。
今度はVC++かC#を触ってみようと思う、
でもやっぱりVB.netの方が楽しい
707デフォルトの名無しさん:2008/01/25(金) 15:52:50
>>704
そうじゃなくて、言語で作るものの方向性が違う。
C系は、データ制御や、高速処理系。
VBは、モジュールの呼び出しやデータの表示、高速開発(すぐ作れる)系。
で、VBは使えるようになるまでが早いので、多くの企業で使われてるが、
制御系や組み込み系の処理はできないので、その方面の業種が選択肢から消える。
VBだけやってた人がCを使いこなすのは、その逆の場合より比較的(かなり?)難しい。

また、Cの方が、メモリの番地単位まで厳密に操作できるから、
コンピュータのデータの仕組みを理解しやすいってのはある。初めてだと取っ付き難いけどね。
708デフォルトの名無しさん:2008/01/25(金) 16:54:05
初心者ならVBより情報処理の資格でも勉強しとけ
資格自体に意味は無いが、最低限の知識は得られる
709デフォルトの名無しさん:2008/01/25(金) 17:22:05
>>701
Mac版Office 2008では非搭載なんだが、
その理由の1つにWindows版でもそのうちなくなるということが挙げられているようだ。
http://piyo.piyocast.com/piyocolumn/msoffice_mac_2008vba.html
710デフォルトの名無しさん:2008/01/25(金) 19:55:59
モバイル開発だとVCしか選択肢が無いケースも。
711デフォルトの名無しさん:2008/01/25(金) 20:48:38
>>707の言ってることはヨタだから信じるなよ
いつの時代の話だよそれw
15年ズレてるよ
712デフォルトの名無しさん:2008/01/25(金) 21:06:55
今の時代はこれ
713デフォルトの名無しさん:2008/01/25(金) 21:21:20
VBS
714デフォルトの名無しさん:2008/01/25(金) 21:27:21
そして、>>711が最新の業界事情を紹介!
  ↓↓↓
715デフォルトの名無しさん:2008/01/25(金) 21:58:05
Delphi7
716デフォルトの名無しさん:2008/01/27(日) 00:47:46
要するにポイントは、15年前まではVBが良く使われてました、ってことで。
717デフォルトの名無しさん:2008/01/27(日) 01:39:43
>>716
ハァ?論点ズラすなよ
718デフォルトの名無しさん:2008/01/27(日) 10:09:49
ハァ?(笑)
719デフォルトの名無しさん:2008/01/27(日) 10:21:50
そんな話より宿題の件が異様に気になるw

人数って何の人数なのかとか。
ユーザに入力させんのか、ランダムなのか、固定値なのか。

ボタンを押したらどこに平均値が表示されるのか。
TextBoxかLabelか。
はたまたForm上にPenで描画(笑)するのか。

>>669氏は宿題できたのだろうかw
720デフォルトの名無しさん:2008/01/27(日) 11:34:18
>>719
諦めて遊んでるか、出来る奴のファイルコピーさせてもらってんじゃね?
721デフォルトの名無しさん:2008/01/27(日) 15:36:52
>>720
もしそうだったら氏ねばいいと思う
722デフォルトの名無しさん:2008/01/28(月) 01:56:58
質問させてください。
最大値と最小値をボタンを押した時に表示させたいのですが、どうしたらいいですか?
友達に教えてもらって、平均値はでるようになりました。
723デフォルトの名無しさん:2008/01/28(月) 02:11:39
平均出せたんなら最小や最大も簡単だろ
一度、5個くらいの数字を紙に書いて、どうやったら最小と最大が出せるか、考えてみなよ
724デフォルトの名無しさん:2008/01/28(月) 10:46:38
さすがに釣りの臭いがしてきた。 テラ香バシス
725デフォルトの名無しさん:2008/01/28(月) 10:51:04
>>722
EXCELでやれwww
726デフォルトの名無しさん:2008/01/28(月) 13:00:42
>722
MsgBox("目視で最大値を確認してください")
727デフォルトの名無しさん:2008/01/28(月) 14:49:14
>>726
深読みしすぎじゃね?

つMsgBox("最大値")
728デフォルトの名無しさん:2008/01/28(月) 14:52:07
>>726,727
別にダイアログに出す必要ないだろ。
Debug.Print "最大値" & "最小値"
でいいんジャマイカ。
729デフォルトの名無しさん:2008/01/28(月) 14:52:42
>>726
ワロタwww

まぁ単純な比較演算もできないならそれしかないかもなww
730デフォルトの名無しさん:2008/01/28(月) 15:24:20
何でみんなそんなに冷たいんだよ。

>>722 VBAのコードが知りたいなら、こんな感じだ。 適当な場所に書いて使うといい。
MsgBox "最大値: " & WorksheetFunction.Max(Range("A1:IV65536"))
MsgBox "最小値: " & WorksheetFunction.Min(Range("A1:IV65536"))
731デフォルトの名無しさん:2008/01/28(月) 21:33:56
>>730
質問が高度すぎて答えられないからだよ。
732デフォルトの名無しさん:2008/01/28(月) 21:51:01
質問内容に肝心な情報が無いからだろw
733デフォルトの名無しさん:2008/01/28(月) 22:08:25
>>730
宿題なんだしVBAは無いだろ多分w


軽くエスパーすると最大値、最小値の"表示方法"が分からないんじゃなくて
最大値、最小値の"抽出方法"が分からないんじゃないかと。

平均値の"表示方法"が分かってんなら、
値を表示するまでに至れりゃできるんだろうし。


で、質問の中にある値の情報が"人数"とかいうどうでもいい単位情報しかない。
しかも仕事でもなく単なる宿題ときてる。
つまり確実に授業で教えてもらい済み。

やる気がないから覚えられないのか、
覚える気がはなっから無いのか分からんが、
人に教えてもらおうとするならもうちょいわかりやすい文章書くだろ。

つまりこいつは教えてもらいたいんじゃなく、
代わりに宿題やって欲しいだけなんだ。


これじゃこっちとしても教える気失せるっての。
734722:2008/01/29(火) 02:01:06
また遅スレでごめんなさい。。。
出来れば自分でやりたいのですが、授業のペースが早くてついていけていません
VBは6です、VBAかどうかはわかりません

>>730
ありがとうございます
貼り付けてみたんですが、エラーになってしまいました。。。
if分でどう書くかわかりますか?

>>733
すいません、もっとわかりやすい文章がかけるようになります

人数とは店舗Aに来るひと月の人数ということです
入力された値から、最大値と最小値を出します


735デフォルトの名無しさん:2008/01/29(火) 02:24:27
>>734
730はネタだったんだろうけど、それすら全く通じないレベルみたいだな・・・

正直、オマイは他人に質問して回答が得られるレベルにはないと思う。
それこそ、ヒマなヤツにコードをまるごと書いて貰わないとムリ。
その教えてもらった友達とやらに頼れ。
どうしてもココでってんなら、その平均値の出し方を書いてみろよ。説明聞くより早い。
736722:2008/01/29(火) 02:39:59
Private Sub cmdAvr_Click()
Dim dblAvr As Double
dblAvr = (txtM1.Text + txtM2.Text + txtM3.Text + txtM4.Text + txtM5.Text + txtM6.Text + txtM7.Text + txtM8.Text + txtM9.Text + txtM10.Text + txtM11.Text + txtM12.Text) / 12
MsgBox ("平均は" & dblAvr & "人です。")
End Sub

平均はこれで出るようになりました
最大値はif分を使うようにらしいですが、107人より28人のほうが大きくなったりします
助けてください
737デフォルトの名無しさん:2008/01/29(火) 02:53:08
>>736
とりあえず,悪いけど日本語勉強してね.(はぁと
あと,どう見ても文法が怪しいんだけど,VB6でいいのな?


確認だけど,
  「txtM1〜txtM12までのテキストボックスに書かれた数値(意味としては人数)の最大値と最小値を得たい」
でいいの?
それならこんな感じ

private sub cmdMinMac_Click() '←最大と最小を表示するボタンをクリックしたときに実行されるメソッド
dim i as long, min as long, max as long
dim ary(1 to 12) as long
for i=1 to 12: ary(i)=clng(me.controls("txtM" & i)): next
min=ary(1): max=ary(1)
for i=2 to 12
  if min>ary(i) then min=ary(i)
  if max<ary(i) then max=ary(i)
next
msgbox "最小は" & min & " 最大は" & max & "人です"
end sub
738デフォルトの名無しさん:2008/01/29(火) 02:55:17
dblMax = CDbl(txtM1.Text)

If CDbl(txtM2.Text) > dblAvr Then
 dblMax = CDbl(txtM2.Text)
End If

If CDbl(txtM3.Text) > dblAvr Then
 dblMax = CDbl(txtM3.Text)
End If
 :
って感じで、テキストボックスの数だけ並べれば、考え方通りのロジックは完成する。
最後に残るのが最大値。 最小値は、IF文の条件の不等号を逆にするだけ。
このコードと睨めっこしてれば、
頭の中の論理を、プログラム文法に直すだけだと分かると思うんだけど。簡単でしょ?
739デフォルトの名無しさん:2008/01/29(火) 04:01:28
配列を習ってないとイヤな設問だな
740デフォルトの名無しさん:2008/01/29(火) 08:39:12
MDBにいったん突っ込んで、
SQLでAvg関数、Min関数、Max関数で抽出するのが楽だなwww
741デフォルトの名無しさん:2008/01/29(火) 10:55:05
Option Strict Off ってことか。
742デフォルトの名無しさん:2008/01/29(火) 17:19:03
>740
やめろよそんな事言ったらSQLスレとかまで出張しそうだぞw
743デフォルトの名無しさん:2008/01/30(水) 00:28:56
隠しリストボックスをソート済みコンテナとして使えば?
744デフォルトの名無しさん:2008/01/30(水) 00:59:44
みなさんありがとうございました
テキストボックスをコントロール配列で書くのが正しかったようです

ここで質問していたことがバレてしまったので、もうここでは質問できません。。。
ひとに聞くのもスキルのうち、といわれお咎めはありませんでしたが。。。

毎日ありがとうございました
745デフォルトの名無しさん:2008/01/30(水) 01:44:01
勉強にはなっただろうな

あと、先生、ここ見てるってことかな?
先生よ、古い言語なんていまごろ教えるな!変なクセがついた奴が会社に入ってきたって迷惑なんだよ!
教える頭がなければ辞めてしまえ!
746デフォルトの名無しさん:2008/01/30(水) 02:49:59
どうでもいいけど、何だってこう上から目線なんだろうな、こういうヤツって。
747デフォルトの名無しさん:2008/01/30(水) 02:54:27
普段は下なんじゃないの?
748デフォルトの名無しさん:2008/01/30(水) 03:15:13
上のいない人なんてねえよ
749デフォルトの名無しさん:2008/01/30(水) 08:28:15
質問です。よろしくお願いします。

VB6でOLEオブジェクトとしてMSGraph2000をフォームに作成しています。
データの読み込みは下記コードできたのですが、読み込むまで20秒以上かかってしまします。

Open "C:\Book1.csv" For Input As #1

For lRowCnt = 2 To 100
For lColCnt = 1 To 15
Input #1, lValue
oDataSheet.Cells(lRowCnt, lColCnt).Value = lValue
Next lColCnt
Next lRowCnt
Close #1

これでは遅すぎるので、
データシートにインポートか貼り付け、あるいは読み込んだ状態を保存して
終了する方法はないでしょうか?
750デフォルトの名無しさん:2008/01/30(水) 09:32:15
>>749
具体的にどの処理が遅いのかをチェック汁。

何となく、CELL一つ一つに値をセットしながら
ループ回してるのが問題のように思われ。
oDataSheetに配列でデータ渡しする方法無いのか?
751デフォルトの名無しさん:2008/01/30(水) 16:20:07
無効にしてループまわして有効にすればいいんだよ
752デフォルトの名無しさん:2008/01/31(木) 10:31:33
>>751
無効にしてから有効とは??
いったいどんなプロパティーを書くんでしょうか?
753デフォルトの名無しさん:2008/02/01(金) 10:58:14
VB6.0でTWAIN機器(スキャナ)を動かし

画像を取り込みjpgファイルとして保存するプログラムを作りたいのですが


TWAINのAPIについて色々調べるのですが

今いちワカリマセン。

どなたかご教授ください。
754デフォルトの名無しさん:2008/02/01(金) 10:58:50
VB6.0でTWAIN機器(スキャナ)を動かし

画像を取り込みjpgファイルとして保存するプログラムを作りたいのですが


TWAINのAPIについて色々調べるのですが

今いちワカリマセン。

どなたかご教授ください。
755デフォルトの名無しさん:2008/02/01(金) 11:36:11
ググれ
756デフォルトの名無しさん:2008/02/01(金) 11:39:11
VB6

【画面仕様】
FormにPictureBoxを配置
それをコンテナにしてTextBox1とTextBox2を配置
CausesValidationは全てTrue
TextBox1のValidateイベントで入力チェックが必要

【問題点】
TextBox1からTextBox2へフォーカスが移動する際には、Validateイベントが発生します
しかし、親コンテナのPictureBoxをクリックすると、Validateイベントが発生せずに、
TextBox1からフォーカスが外れ(LostFocus→PictrueBoxのGotFocus発生)、
その後TextBox2をクリックすると、フォーカスが移動できてしまいます

Microsoftのサポート情報でVB6のValidateイベントは、
「ユーザーが入力できるコントロール」の間でしか働かない・・・
という仕様なのは確認できましたが、上記【画面仕様】のままで
フラグやLostFocusイベントは使わない方向で、
これを回避することはできないのでしょうか
757デフォルトの名無しさん:2008/02/01(金) 12:21:06
>>754
Okwave池。
ポイント稼ぎたいバカがソースまで出してくれる。
758デフォルトの名無しさん:2008/02/01(金) 14:55:21
>>756
http://support.microsoft.com/kb/197128/en-us
CausesValidationは"バグ"を含んでいます。
これを回避するにはLostFocusイベントを使えと書いてあります。
759756:2008/02/01(金) 17:13:35
>>758
それはCausesValidationをFalseに設定したコントロールを含む場合なので、
全てのコントロールでTrueである場合は当てはまらないと思ったのですが、
根は同じということでしょうか・・・
760758:2008/02/01(金) 18:29:17
>>759
いや、関連がありそうなんで貼ってみただけ。

それはそうと、試しにやってたら、
TextBox→PictureBoxの場合もValidateイベント発生したよ。
761デフォルトの名無しさん:2008/02/01(金) 21:38:49
>754
NewtonのImageKitでも使えば?
762デフォルトの名無しさん:2008/02/01(金) 22:26:18
>>754
10年くらいまえに、まさにそんなプログラムを作ったw
763デフォルトの名無しさん:2008/02/02(土) 06:45:36
教えてください
OSはXP Pro,VB6.0、サービスパックはわかりません
質問はShell関数を使ってExeファイルを実行しておいて、その戻り値のタスクIDを取っておき
タイマーで1分後に取っておいたタスクIDを使用して実行したタスクをKillしたいのですが
なにか良い方法はありますでしょうか?宜しくお願いします
764デフォルトの名無しさん:2008/02/02(土) 10:06:15
自分で答え言ってるじゃん。
それ以上何が聞きたいんだ?
765デフォルトの名無しさん:2008/02/03(日) 06:47:17
だから
Shell関数を使ってExeファイルを実行しておいて、その戻り値のタスクIDを取っておき
タイマーで1分後に取っておいたタスクIDを使用して実行したタスクをKill
する良い方法を知りたいんだろ

Shell関数を使ってExeファイルを実行しておいて、その戻り値のタスクIDを取っておき
タイマーで1分後に取っておいたタスクIDを使用して実行したタスクをKill
すればいいと思う
766デフォルトの名無しさん:2008/02/03(日) 09:22:31
俺もそう思う
767デフォルトの名無しさん:2008/02/03(日) 11:16:23
具体的なコードが知りたいのなら、Shell, CreateProcess, TerminateProcessでぐぐれ
768609:2008/02/03(日) 11:38:43
Vistaで開発したのですが、
そのプログラムをWindows2000の環境で
実行したところなぜかテキスト、ボタン等に
表示する漢字部分が表示されなくなりました。
具体的にはボタンのCaptionに「実行(&S)」と設定したところ
開発環境のVistaでは「実行(S)」と表示され、
そのexeをWin2000にコピーし、実行したところ
「(S)」しか表示されません。
ボタンのフォントは既定値のMS Pゴシックです。
これはどうしてでしょうか?
769デフォルトの名無しさん:2008/02/03(日) 14:27:33
その2000はvb6が動く環境なんだよな?ランタイムがなかったりしないよな?
770デフォルトの名無しさん:2008/02/03(日) 16:15:42
>>768
つ「英語に変更」
771768:2008/02/03(日) 18:29:18
>>769
そもそもWin2000で検証している目的は
特別な追加ランタイム「無し」で動くかどうかを
検証するために動作検証を行うのが目的です。
実行環境はWindows2000で、ランタイム等を
入れることができないためです。
SP+パッチは最新です。
VP6の動作に必要なランタイムを調べたのですが
明確なDLL等の資料が見つかりませんでしたので
実際Windows2000環境(ランタイムなし)でテストした結果、
漢字が表示されないという結果になりました。
今のところ漢字の表示以外に不具合等はありませんので
最悪>>770の通り漢字を表示しないことで回避したいと思います。
ですが、漢字が表示するに越したことはないので
質問するに至りました。
漢字を表示するためにランタイムが必須なのでしょうか?
なにか違和感があるのですが。。
VB6で作成したソフト=ランタイム必須でしょうか?
とりあえず漢字以外の動作に問題ないのですが。。


772デフォルトの名無しさん:2008/02/03(日) 18:39:22
VisualStduioInstaller使えば必要なDLL群をマージモジュールの形で
見繕ってくれたはず。

日本語が表示されないのは、vb6jp.dllだったかな。。。
773デフォルトの名無しさん:2008/02/03(日) 18:42:52
>VP6の動作に必要なランタイムを調べたのですが
>明確なDLL等の資料が見つかりませんでしたので
正直に「そんなこと面倒でやってられっか俺様の質問に黙って答えろや」と言えよ。
嘘ばっかりだな。
774デフォルトの名無しさん:2008/02/03(日) 18:44:10
vb6jp.dllだな。システムフォルダにコピーするように組めばおk
775デフォルトの名無しさん:2008/02/03(日) 18:45:17
VB6で作成したソフト=ランタイム必須だ
無駄な時間を割くなボケ
776768:2008/02/03(日) 19:42:39
>>772
そうなんですか、
VisualStduioInstallerについては知識がないですので
今から調べてみます。

>>773
いや、調べて見つかればわざわざ2000環境用意する方が
めんどくさいですよ。
実際VB6の開発環境の必要環境の情報ばかりで
動作環境については調べにくかったです。
少なくとも私にはですが。
まぁ私の言い訳はおいておいて、
もし情報ありましたらその情報へナビゲートしてもらえると
今後の勉強になるのでありがたいです。
検索ワード等でも結構です。

>>774
ずばりの回答ありがとうございます。
今回は実行環境にDLLやランタイムを導入することが不可能のため、
日本語表示については諦めたいと思います。

>>775
基本的にランタイム必須という考えは
同意なんですが、
ランタイムに依存するコードを書かなければ
ランタイムすら必要なく、実行ファイルのみで
動作するというのは驚きでした。

777デフォルトの名無しさん:2008/02/03(日) 19:43:47
そんな目的のためにVB6を選ぶなんて本末転倒だな。
778デフォルトの名無しさん:2008/02/03(日) 19:49:43
W2K以降はVB6の最低限度のランタイムが内蔵だからな〜。
というか、vb6jp.dllをアプリケーションと同一フォルダに置けば解決したりして。
レジストリ登録が必要で、でもできないなら、W2Kはどうしようもないけど。

というか、「VB6 文字化け」でぐぐったら出てきたけど。
http://support.microsoft.com/kb/813131/ja
779デフォルトの名無しさん:2008/02/03(日) 19:55:12
2000にはVBの英語版ランタイムが最初から入ってたと思うが

>ランタイムに依存するコードを書かなければ
>ランタイムすら必要なく、実行ファイルのみで
>動作するというのは驚きでした。

どうしてそうなる
780デフォルトの名無しさん:2008/02/03(日) 19:57:09
>>775
嘘ついてんじゃねーよw
781768:2008/02/03(日) 20:30:19
>>777
すみません、どういう意味でしょうか?

ちなみに運用環境にランタイムの組み込みが難しい状況で
どの言語で開発すればよいか悩んだのですが、
とりあえずVB6で作ってみて動かなけりゃ
Cでやってみようか、くらいに軽く考えてみました。
今のところフォントがおかしいくらいで動作に問題なさそうなので
VB6で行きたいと思います。
今後のメンテナンスを考えると今更VB6感はありますが。

>>778
そうなんですか、
だから動くわけですね。
ランタイム無しで動く、という解釈は間違いで
英語版ランタイムが入ってるから動くんですね。
英語版なのでvb6jp.dllが入っていないのも納得できます。

漢字が消える、という解釈をしていまして
文字化けという発想はなかったです。
文字化けで検索すればよかったんですね。

ちなみに同じことを思いましてvb6jp.dllを同一フォルダにおいて実行しましたが
読み込んでもらえなかったらしく文字化けのままでした。

>>779
すみません、考えが甘かったですね。
まさか2000に初めから英語版とはいえ
VB6ランタイムが入っているとは思いもよりませんでしたので。。
782デフォルトの名無しさん:2008/02/03(日) 20:44:00
いちおう、手持ちのW98でためしてみたけど、システムにDLLがなくても、
カレントに、MSVBVM60.dllとVB6JP.DLLがあれば日本語を表示するVB6アプリが
動いた。動作保証とかは知らない。これって一種のSxS?
783768:2008/02/03(日) 21:27:44
>>782
いけました!?
ということで再度Wndows2000にて動作検証しました。

結論
MSVBVM60.dllとVB6JP.DLLの2つを
実行ファイルと同じフォルダにおくことで
日本語表示ができました。

あと余談ですが
>>778のリンクで
「Visual Basic で作成した実行可能ファイル(以下 EXE ファイル)を起動すると、Visual Basic のデフォルトである MS Pゴシック サイズ 9pt に設定された TextBox などのコントロールに表示される2バイト文字が、文字化けすることがあります。」
とあったので単純にフォントを8や10に変更したところ
別途DLLを入れなくてもexeのみで日本語が表示できました。

今回は同じフォルダにおくことで
DLLが読み込まれると言うことがわかりましたので
運用環境でこのプログラムを使う時は
サーバー上にexeを配置する時に同じフォルダに
ごっそりランタイムもコピーしておこうと思います。
ありがとうございました。
784デフォルトの名無しさん:2008/02/03(日) 23:47:09
>今回は同じフォルダにおくことで
>DLLが読み込まれると言うことがわかりました

これは基本知識ではないのかw
まぁ解決してよかったよ
785デフォルトの名無しさん:2008/02/05(火) 11:22:59
XP proのVB6.0です。

SetLayeredWindowAttributesを使ってフォームを透明にしたのですが
透明にする前のフォームの描画域をクリックしても
フォームではなくその下にあるもの(ファイルなりフォルダなり)に触ってしまいます。
フォームを透明にしながらもそのフォームを触れるようにできる方法はあるでしょうか?
786デフォルトの名無しさん:2008/02/05(火) 22:04:49
透明にするんじゃなくて、フォームに"その下のウィンドウの様子"を描画してしまえ。
787デフォルトの名無しさん:2008/02/05(火) 22:48:56
>785
Alphaを0ではなく1にする。
788デフォルトの名無しさん:2008/02/06(水) 14:49:13
昔のVB(4?)のプログラム眺めてるんですが
N=INT(7*X)
N=INT(2*X)
N=IP(1.3*X)
のIPの意味がわからくて悩んでます。
IPて何でしょう。
789デフォルトの名無しさん:2008/02/06(水) 14:51:50
独自のメソッドとかじゃないの?
定義へ移動とかしてみた?
790デフォルトの名無しさん:2008/02/06(水) 14:52:44
きっとIPアドレスの事だよ!
791788:2008/02/06(水) 14:52:54
agewasuremasita
792788:2008/02/06(水) 15:02:02
ageてごめんなさいorz
>>789
回答ありがとうございます
やってみます
>>790
IPアドレスは思いつきませんでした
やってみます
793デフォルトの名無しさん:2008/02/06(水) 15:04:31
ageたらいけないとかいつの時代のルールw
質問があったらあげた方が見てもらいやすいし、むしろ積極的にあげるべきではないのか。
794790:2008/02/06(水) 15:12:04
>792
ちょww
795デフォルトの名無しさん:2008/02/06(水) 15:16:26
>>794
罪な奴だなw
796デフォルトの名無しさん:2008/02/07(木) 13:39:20
板参考させてもらいました
797デフォルトの名無しさん:2008/02/08(金) 00:42:32
[VB6、WindowsXP]です。

DLLを参照設定の件での質問です。
自作のDLLをc:\windows\system32に保存し、参照設定して使っています。
自分の環境で使っている分には問題ないのですが、
別のマシンのHドライブにexeをコピーし、DLLをc:\windows\system32に移すと
「H:\windows\system32\****.dllが見つからない」というエラーが出てしまいます。

環境を変えてもDLLを正しく使えるようにするには、どうしたら良いでしょうか。

補足:自作DLLとはマウスホイールのイベントを拾うためのもので、
http://support.microsoft.com/kb/308636/ja (アクセス97でマウスホイールを無効にする方法)
を少しいじったものです。

798デフォルトの名無しさん:2008/02/08(金) 01:16:31
>>797
regsvr32で再登録。
XP以降ならmanifestでサイドバイサイドという手もなくはない。
799797:2008/02/08(金) 01:34:19
>798
回答ありがとうございます。
regsvr32で調べて見ました。
regsvr32 c:\windows\system32\****.dll
んな感じで試してみます。

800デフォルトの名無しさん:2008/02/09(土) 14:21:31
[WindowsXP SP2,VB6] VB初心者です。

恐縮ながら、質問させていただきます。
今自分は、フォームのコマンドボタン1をクリックするとファイルを開くダイアログボックスが表示されて
開いたファイルの内容をフォーム上のテキストボックス1に表示されるというプログラムを
作成しています。

このとき開くファイルをShift-JIS形式のバイナリデータとして、テキストボックス1に全て表示させたいのですが
どのようにコードを記述すればよろしいのでしょうか?

超初心者的な質問で申し訳ありません。
801デフォルトの名無しさん:2008/02/09(土) 14:26:02
>>800
>Shift-JIS形式のバイナリデータ
ってなんだろ?そのまま、メモ帳で開いたように文字を表示したいのか?HEX表示したいのか?
802800:2008/02/09(土) 14:43:58
>>801
すいません、誤記してしまいましたorz...
HEX(16進数)表示です。

例えば、バイナリエディタでファイルを開くと
表示される『00 3C FE …』とかの16進数データです。
803デフォルトの名無しさん:2008/02/09(土) 14:52:41
>>800
> どのようにコードを記述すればよろしいのでしょうか?
IDE開いてフォームにボタン貼り付けて,ボタンをダブルクリックしてその中でコーディングすればいいんじゃね?
あとコモンダイアログは標準コントロールじゃないのでなんかしないといけなかった気がする
804800:2008/02/09(土) 15:30:47
>>803
コモンダイアログは

メニューのプロジェクト→コンポーネントから、コントロールタブ内の『Microsoft Common Dialog Control 6.0』にチェック入れて
フォーム内に配置すれば使用可能になりました。

あとどのようにコードを記述するのかじゃなく、『どのような内容のコードを記述するのか』と
質問すべきでした。すみません。

ちなみに自分は、

Private Sub Command1_Click()
Dim myData As Byte
CommonDialog1.ShowOpen
Open CommonDialog1.FileName For Binary As #1
Get #1, , myData
Close #1
Text1.Text = myData
End Sub

って記述して行き詰ってます。
805デフォルトの名無しさん:2008/02/09(土) 16:16:17
ふと。
ウィザード使ってファイルの読み書き有りにすると
開くところまでのソースはできるので流用するとラクいよ。

コードみて思うことは、EOFまで読む、HEX関数、などなどいろいろ覚えたいところ。

Dim Dat As Integer
Dim DatStr As String
Dim DatTemp As String

Open FileName For Binary As #1
Do While Not EOF(1)
  Get #1, , Dat
  DatTemp = Right$("000" + Hex$(Dat), 4)
  DatTemp = Right$(DatTemp, 2) + "," + Left$(DatTemp, 2) + ","
  DatStr = DatStr + DatTemp
Loop
Close #1
Text1 = DatStr

Getで取ると4桁で出てきてコードが上位下位逆になってるからなおして分割してる。
806デフォルトの名無しさん:2008/02/09(土) 16:19:11
>804
一文字分しか表示されないから困ってんだろ?そこまでちゃんと書け。
それすら理解できてないのなら、随分と長い話になるぞ。

Byte型は1バイトだから、Get一回じゃ1バイトしか読まないんだ。
ファイルのケツまで読むのなら、その分ループ回してGetし続けなきゃならん。
HEXで表示したかったらHEX$で変換しれ。

つか、頭から順番に読むだけなんだから、InputB$が使いやすくないか?

807デフォルトの名無しさん:2008/02/09(土) 16:19:36
あ。Shift-JISの決まり上、コレ要らんか。
DatTemp = Right$("000" + Hex$(Dat), 4)
808800:2008/02/09(土) 17:12:46
>>805
コード流用させていただきましたところ、うまく出来ました。
ちゃんとテキストボックスに16進数1バイト区切りで表示されました。

ほんとありがとうございます。

まだまだ学ぶことは多々ありますが、これからがんばっていきます。

>>806
自分の質問力不足でした。ほんとすみませんでした。

InputB$っていうのもあるんですね?わかりました調べてみます。

>>807
そのコードを省くとテキストボックスが空欄というか、スペースになってしまいました。
809デフォルトの名無しさん:2008/02/09(土) 17:46:30
>>804
ダイアログでキャンセルボタン押したらエラーになるね(笑)
あと、FreeFile使うことをオススメする
810デフォルトの名無しさん:2008/02/09(土) 23:32:17
IPアドレスを変更するプログラムを作成しました。
IPアドレス変更処理の直後に
PCをシャットダウンしたいと思います。
これ自体は簡単にできたのですが、
この実行ファイルをファイルサーバー上に配置しています。
XPでは正常に動作したのですが、
2000だとファイルサーバーと通信できないIPに
変更した後、シャットダウン前に
「〜.exeにエラーが発生しました、エラーログを作成しています」
という意図のエラーメッセージが表示され、
シャットダウンが行われません。
自分の中では実行ファイルは全てメモリに読み込まれ
メモリ上で実行されるため
ファイルサーバーとの通信が切断されたとしても
IP変更処理の直後のシャットダウン処理が実行されるのでは?
と思うのですが勘違いしていますでしょうか?
また、これを回避し、2000でもIP変更処理の直後に
シャットダウンを実施させるよい方法はないでしょうか?
よろしくお願いします。
811デフォルトの名無しさん:2008/02/10(日) 00:42:54
>>810
中途半端に具体的なので答えられない
812デフォルトの名無しさん:2008/02/10(日) 03:35:54
>>808
あ、いやいや
DatTemp = Right$("000" + Hex$(Dat), 4)
これまるまる省くんじゃなくて
DatTemp = Hex$(Dat)
にする。

桁数がふらつくと不定長な文字列になるから・・・
ってか、流用だけじゃなく、何してるか調べるとそのまま覚えやすいと思うぞなもし
813デフォルトの名無しさん:2008/02/10(日) 10:23:33
>>800

Private Sub Form_Load()

  Call CommonDialog1.ShowOpen
  Text1.Text = fun_GetHexString(fun_GetBinaly(CommonDialog1.FileName))

End Sub
814デフォルトの名無しさん:2008/02/10(日) 10:25:29
>>813の続き
========== 指定のファイル名からバイナリデータを取得(Byte配列を返す)
Private Function fun_GetBinaly(ByVal strFileName As String) As Byte()
On Error GoTo ERROR_HANDLER:
  Dim intFreeFile As Integer
  '---------------------------------------------------
  intFreeFile = FreeFile()

  Open strFileName For Binary As #intFreeFile
  fun_GetBinaly = InputB(LOF(intFreeFile), #intFreeFile)
  Close #intFreeFile

  On Error GoTo 0
  Exit Function

ERROR_HANDLER:
  On Error GoTo 0

End Function
815デフォルトの名無しさん:2008/02/10(日) 10:26:41
>>814の続き
'========== Byte配列から16進数を文字列として返す
Private Function fun_GetHexString(ByRef bytData() As Byte) As String

  Dim strJoin() As String, lngBound As Long, c As Long
  '---------------------------------------------------

  lngBound = UBound(bytData)
  ReDim strJoin(0 To lngBound)

  For c = 0 To lngBound
    strJoin(c) = Right$(String$(2, "0") & Hex$(bytData(c)), 2)
  Next c

  fun_GetHexString = Join$(strJoin, Space$(1))

End Function

空白が入るの嫌だったら、Join$(strJoin, Space$(1))をJoin$(strJoin)に。
816815:2008/02/10(日) 10:33:04
空白消すのは、
Join$(strJoin)
じゃなくて
Replace$(Join$(strJoin), Space$(1), "")
でした
817デフォルトの名無しさん:2008/02/10(日) 10:35:58
結局キャンセル押したらエラーになる気がした
818デフォルトの名無しさん:2008/02/10(日) 11:02:08
>>817
あ〜うぜぇな。
そんなちんけな揚げ足取るんじゃねーよ。
コモンダイアログ使った奴ならわかんだろが。
お前が代わりに書いてやれよ。
If Len(CommonDialog1.FileName) > 0 Then
  Text1.Text=処理
Endif
819デフォルトの名無しさん:2008/02/10(日) 15:24:59
Len()って負の値を返すのか。
820デフォルトの名無しさん:2008/02/10(日) 16:14:50
仕様では最大文字列サイズが2GBだから最大1G文字で負にはならないな
LenBなら負の値もあり得るということになる
821デフォルトの名無しさん:2008/02/10(日) 17:07:20
ゼロ
822810:2008/02/10(日) 20:04:42
>>811
すみません、
どの辺の情報が足りないでしょうか?
823デフォルトの名無しさん:2008/02/10(日) 21:51:14
>>822
だってその情報だけじゃ手元で再現できないじゃん,何一つ.
824デフォルトの名無しさん:2008/02/10(日) 22:00:16
VB6SP5 WindowsXP

今まで使われていたOCXが事情により使えなくなるため、
まったく同じ機能とインターフェースをもった新しいOCXを作成しています。
これを実装する際、旧OCXを使用しているアプリをコンパイルしなおさないようにしたいため、
新OCXのGUIDを、旧OCXのGUIDと同じものにしたいのですが、
これは可能なのでしょうか?

可能であれば方法を教えていただけないでしょうか。
よろしくお願いします。
825デフォルトの名無しさん:2008/02/10(日) 22:45:54
OCXは 同じVB6でつくってるの?
826824:2008/02/10(日) 22:57:08
>>825
旧OCXもVB6です。
しかし、その時のPCはすでに手元にないため、
その他の開発環境が全く同じかどうかはわからないです。
827デフォルトの名無しさん:2008/02/10(日) 23:57:16
828800:2008/02/11(月) 02:00:34
>>812
あっ、仰られるとおりにしましたら出来ました。

そうですね、教わったコードをよく理解できず流用させてもらい、成功したって感じですが
具体的にこのコードは『何をやっているのか?』を理解できてないと、他への応用も利かなくなるだろうし
面白味もないと思います。
本日参考書を購入してきたので、これからしっかり勉強していきたいと思います。

>>813〜816・818様
ご丁寧に説明して下さり、ほんとありがとうございます。感激ですw
早速コードの勉強をさせていただきます^^

>>817
本日購入してきた参考書に、キャンセル押された時のエラーを回避する方法が2通り載ってました。
いずれも818様のコードとは異なるものでした。

結果を導き出すコードはワンパターンだけではないとわかり、奥が深いなぁと感じました。

...すみません、初心者なもので^^;


それと一応検索はしてみましたが、もしVB6を学習する上でこのサイトはオススメだというサイトがあれば
ぜひ教えて頂けないでしょうか?
参考書と併用していけば、効率よく学習できると思ったので。
よろしければお願いしますm(u_u)m
829デフォルトの名無しさん:2008/02/11(月) 02:42:35
もうVB6のサイトは活発化しないからなぁ

とりあえずここはいいところと思ってる:
http://homepage1.nifty.com/rucio/main/main.htm
830810:2008/02/11(月) 02:52:02
>>823
わかりました。
問題の部分は以下です。
Call IP変更
MsgBox "完了"
Call シャットダウン

Win2000環境で実行するとまず、「完了」と表示され次に
「〜.exeにエラーが発生しました、エラーログを作成しています」 のエラー発生で
強制終了し、シャットダウンは実施されません。
「IP変更」メソッド内でIPし、
「シャットダウン」メソッド内でシャットダウンを行います。
メソッドの内部については問題なさそうなので
今回は割愛しますが、必要そうなら言ってくだされば載せます。

疑問は2点です。
1.そもそもネットワークの向こうに配置した実行ファイルで
  IPを変更した場合、IP変更部分以降は
  実行されないのか?
  設計的にまずいのか?
  XPの検証環境は自由に使えないので何とも言えませんが、
  IP変更→シャットダウンは正常に機能しました。
  自分の想像ではWin2000であろうがXPであろうが
  実行ファイルを実行した直後にメモリにロードされるので
  実行ファイルにとってはどこから実行されたかなんて
  相対パスでファイルを読み込んでいない限り
  問題ないと思っています。
2.今回の対処方法
  Win2000であろうがXPであろうが
  IP変更直後にシャットダウンを実施したい

よろしくお願いします。
831デフォルトの名無しさん:2008/02/11(月) 02:59:19
>>830
守秘する必要があるかもしれないけれど,やっぱりそれでも情報不足な感じ.

だって,たとえば「フォームを表示した直後に Call シャットダウン をするプロジェクト」を作ったりしてみた?
多分シャットダウン程度なら権限があればマトモにシャットダウンが実行されて電源が切れる状態になると思う.
問題を切り分けていく過程として,

ちょっとトイレ.

ひんと:ウィンドウズのIPの変更は「ネットワーク中に同じIPが存在するかどうかをRARPみたいなので確かめる」だったはず・・・ローカルで閉じてないんだよな
832デフォルトの名無しさん:2008/02/11(月) 03:03:30
─――┬─――┬―
      | W.C |
      |∧∧  |コンコン 入ってますか?
      |(    )シ.
      ||  |  |
―――┴|  |―┴―
     ノ∪∪

─――┬─――┬―
      | W.C |
      |∧∧  |< 今、出てるとこ〜
      |(    ) |
      ||  |  |
―――┴|  |―┴―
     ノ∪∪
833810:2008/02/11(月) 03:19:37
>>831
レスありがとうございます。
守秘義務もなにも
コピペで作っただけなので載せるのは大丈夫なんですけど、
各メソッドが単一ではきちんと動作していますので
関係ないと思っていますので掲載していません。
切り分けについてはIP変更処理で
ネットワークに支障のないIPに変更した場合は
正常に動くため、各メソッドには問題がないと考えています。
OK:192.168.1.10→192.168.1.11
NG:192.168.1.10→192.168.2.11
サブネットマスクは共に255.255.255.0です。
OKの場合はもちろんシャットダウンも実施されます。
各メソッドに問題ある可能性がありますか?
834810:2008/02/11(月) 03:36:42
すみません
>>833の検証結果でちょっとおかしい部分が出てきましたので
今しばらくお待ち下さいませ。
ちょっと検証してきます。
835デフォルトの名無しさん:2008/02/11(月) 05:25:46
実行ファイルや画像ファイルはファイルマッピングに近い仕掛けで
メモリ中に読み込まれるのでファイルはオープンされたままの状態になる。
メモリの状態によっては破棄可能なコードやデータは一旦破棄して
再び使用するとき再読み込みが発生することになる。
一方破棄出来ない領域はページング対象になる。
836824:2008/02/11(月) 13:00:01
>>827
情報ありがとうございます。
ただ、これは私が探していたのとあ少し違うようでした。

再登録は再登録なのですが、
その際に新OCXのGUIDを旧OCXのGUIDと同じものに変更して登録したい。
OCXをレジストリ登録する際に任意のGUIDで登録できるのか?
という感じです。
837デフォルトの名無しさん:2008/02/11(月) 13:15:36
プロジェクトの互換性設定なきがするけど
http://support.microsoft.com/kb/161137/ja
838810:2008/02/11(月) 15:56:27
>>810
>>833
>>834
再度検証してきました。
Win2000環境では実行ファイルをネットワークの先から実行した場合
同じIPに設定し直しても
「〜.exeにエラーが発生しました、エラーログを作成しています」
となることがわかりました。
情報混乱させてすみません。

>>835
そうなんですか。
ということはやはりIPを変更する処理をサーバー上の実行ファイルで
実行させるのは仕様的にまずいわけですね。
※変更後IPが通信に問題がないものだとしても
  IPが変わる瞬間にいったんサーバーと切断されるため

>>830の疑問1については納得できました。
ありがとうございます。
疑問2の
サーバー上に配置された実行ファイルを実行して
Win2000であろうがXPであろうが IP変更直後にシャットダウンを実施したい
こちらはどうやって実装すればよいでしょうか?
いったんローカルに落として実行、などは最後にローカルにファイルが
残ってしまうのでちょっと難しい環境です。
839デフォルトの名無しさん:2008/02/11(月) 16:04:01
テンポラリフォルダで実行すればいいじゃん。
しかるべきレジストリに記述しておけば、
再起動直後にWindowsが消してくれるでしょ。

あと、Editbinつかって、ExeにSWAPRUNを付与する手もあるはず。
840810:2008/02/11(月) 21:10:00
>>839
テンポラリフォルダで実行して
レジストリに記述してWindowsに自動で
消させるって具体的にはどうすればよいでしょうか?
検索ワードとかありましたら
お教え下さい。

Editbinについては調べますね、
ありがとうございます。
841824:2008/02/11(月) 21:32:50
>>837
情報ありがとうございます。

いま作成している新OCXはバイナリ互換で作成を行っているのですが、
旧OCXのプロジェクトやソースを流用して作成しているわけではないので、
この設定で解決には至りませんでした。
仕様を踏襲しているだけで、プロジェクト自体は全く別物なので。
842デフォルトの名無しさん:2008/02/11(月) 22:35:21
>>841
プロジェクトのプロパティでバイナリ互換をとる対象を選択するようになっているようだけど、
これを使えばいいのと違うの?

っていうか、面倒だし泥臭くてカッコは悪いかもしれないけど
そもそも旧プロジェクトのコードだけ書き換えれば済む話なんじゃないの?0
843810:2008/02/13(水) 00:30:31
>>840
Editbinでうまくいきました。
最初は動作に変化がありませんでしたが、
同じ階層においてあるランタイムに対して実行したところ
うまく動作しました。
ありがとうございました。
844デフォルトの名無しさん:2008/02/13(水) 18:58:00
WindowsXp SP6なんですけど、どうしてか
「Visual Basic 6.0 SP4: データ型が無効な時、AddNew の後の CancelUpdate でエラーが発生する」
ttp://support.microsoft.com/kb/257790/ja
が確認できて困っています。><;
よろしくお願いします。m(_ _)m
845デフォルトの名無しさん:2008/02/14(木) 00:03:58
日本語でおk
846デフォルトの名無しさん:2008/02/14(木) 06:56:34
>>845
SP6にしてるのに、
「Visual Basic 6.0 SP4: データ型が無効な時、AddNew の後の CancelUpdate でエラーが発生する」
ttp://support.microsoft.com/kb/257790/ja
が発生してしまいます。><;
どうしたらいいですか?
847デフォルトの名無しさん:2008/02/14(木) 06:56:54
たすけてください。><;;;;;
848デフォルトの名無しさん:2008/02/14(木) 09:25:16
無効ではないデータをセットしてからCancelUpdateすればいいだけじゃないか
849デフォルトの名無しさん:2008/02/14(木) 10:50:54
mysqlとvb6のプログラムを作っているのですが
SQL文を飛ばすときに配列の処理がわからなくて困ってます。

Dim d As String
Dim g As String
Dim ii As Integer
For ii = 0 To 118 Step 1
d = Text1(ii).Text ←textの配列が119個ある
g = "g_" & (ii + 1) ←mysqlのフィールド
Next ii
mysql = "insert into g_table (" & g & ") values(" & d & ")"  全項目 119項目全て更新する。

コレだと g=119 しか保存されないのですが、変数を当てる場合caseで認識させるしかないのでしょうか?
850デフォルトの名無しさん:2008/02/14(木) 11:53:08
>>849
なんのためにForで回してるんだw
Forの中でクエリ実行させろよw
851デフォルトの名無しさん:2008/02/14(木) 11:57:44
d = d & Text1(ii).Text ←textの配列が119個ある
g = g & "g_" & (ii + 1) ←mysqlのフィールド

こんな感じで
あとカンマも必要
852デフォルトの名無しさん:2008/02/14(木) 12:02:00
ブレイクポイント確認するだけで済むような質問を投げるヤツの何と多い事か・・・
853デフォルトの名無しさん:2008/02/14(木) 13:40:30
>>849です。
出来ました。ありがとうございます。

Dim mysql As String
Dim id As Integer
Dim d As String
Dim g As String
Dim ii As Integer

For ii = 0 To 118 Step 1

'd = Text1(ii).Text
'g = "g_" & (ii + 1)

If ii = 0 Then
d = Text1(ii).Text
g = "g_" & (ii + 1)
Else
If ii <> 0 Then


d = d & "," & Text1(ii).Text '←textの配列が119個ある
g = g & "," & "g_" & (ii + 1) '←mysqlのフィールド

'd = d & Text1(ii).Text '←textの配列が119個ある
'g = g & "g_" & (ii + 1) '←mysqlのフィールド

mysql = "insert into g_table (g_id," & g & ") values(" & id & "," & d & ")"
854デフォルトの名無しさん:2008/02/14(木) 16:27:17
Text1ってテキストボックスなのかw
855デフォルトの名無しさん:2008/02/14(木) 17:07:17
>>853
Next無いのにできたのか
凄いなそれは
856デフォルトの名無しさん:2008/02/14(木) 17:21:31
>>853
SQLインジェクションも気にしろよ
857846:2008/02/14(木) 18:30:13
>>848
日中ネットにつなげなかったので、長時間考えて同じ考えにいたりました。^^;;;;
ありがとうございました。m(_ _)m
858デフォルトの名無しさん:2008/02/14(木) 20:17:43
>>857
だったら最初から自分で考えろカス!
859846:2008/02/14(木) 20:46:28
>>858
きちんと礼を書いてるから問題ないだろ?
860デフォルトの名無しさん:2008/02/16(土) 13:23:45
VBどころかプログラムも超初心者です。

二次元配列を使って配列の中の数字を全てかけ算したものを
メッセージとして出力したいのですが、どうやればいいのでしょうか?
配列の箱?は9こで、0〜2です。(0.0)(0,1)(0,2)(1,0)・・って感じです。
よろしくお願いします。
861デフォルトの名無しさん:2008/02/16(土) 14:19:37
>>860

Dim MyNumber(8, 1)
Dim myFig as Double
Dim i As Integer
Dim j As Integer

On Error Goto tagErr_Msg

For i = 0 to 8
   For j = 0 to 1
   myFig= myFig * MyNumber(i,j)
  Next j
Next i

label1.Caption = "計算結果 = " & Cstr(myFig)

Exit Sub

tagErrMsg:
  MsgBox Err.Description & ", Err No =" & _
    Cstr(Err.Number),Vbexcramation + vbOkOnly
862デフォルトの名無しさん:2008/02/16(土) 14:45:57
>>861
ありがとうございます!
9つの箱って言い方悪かったです。すいません。
(0,0)(0,1)(0.2)(1,0)(1,1)(1,2)(2,0)(2,1)(2,2)の9つで
3×3の表の中身を全部かけ算するイメージなんです。

863861:2008/02/16(土) 16:26:01
>>862

あ、スマン、一カ所間違いに気づいた。
Forループに入る前にmyFig=1するべき。
じゃないと解はずっと0。
Private sub subCalcMatrix()

Dim MyNumber(2, 2) As Integer
Dim myFig as Double
Dim i As Integer
Dim j As Integer

On Error Goto tagErr_Msg

myFig=1

For i = 0 to 2
   For j = 0 to 2
   myFig= myFig * MyNumber(i,j)
  Next j
Next i

Label1.Caption = "計算結果 = " & Cstr(myFig)

Exit Sub

tagErr_Msg:
  MsgBox Err.Description & ", Err No =" & _
    Cstr(Err.Number),Vbexcramation + vbOkOnly
End Sub
864デフォルトの名無しさん:2008/02/16(土) 17:10:29
突然の質問で失礼します。
WinXP(SP2)、VB6(SP6)の環境でプログラム開発をしています。
最近、ActiveReports 2.0J(SP1)を使い始めたのですが
レポートの設定を変更するとエラーが出たりVBごとフリーズしたりします。

例えば、ActiveReportsのサンプルプログラムでも
デザイナを開いて、ファイル > ページ設定 の Printer Settings から
用紙サイズをデフォルトプリンタからA4に、
印刷の方向をプリンタの規定値から縦か横に変更。
この状態で実行するとフリーズするか、
「問題が発生したため、Visual Basicを終了します。〜」のエラーで強制終了されます。
まれにエラーが出ずに実行できるときもあります。

コードの方で Printer.PaperSize、PageSettings.PaperSize や
Printer.Orientation、PageSettings.Orientation を変更するようにして実行すると
一度は表示されるのですが、何度か表示と閉じるを繰り返しているうちに
エラーで強制終了となります。

変な質問で恐縮ですが、何か解決策ご存知でしたら教えてください。
よろしくお願いします。
865デフォルトの名無しさん:2008/02/16(土) 17:46:12
>884
社外品は素直にそこに聞くのが一番さ
866デフォルトの名無しさん:2008/02/16(土) 18:55:12
Ver6.0でテキストボックスに10個の数字を入力し大きい順に並べ替えてテキストボックスに出力するプログラムってわかりますか?
867デフォルトの名無しさん:2008/02/16(土) 19:10:53
わかりますよ
868デフォルトの名無しさん:2008/02/16(土) 19:35:54
教えて下さると嬉しいです
869デフォルトの名無しさん:2008/02/16(土) 19:57:51
>>866
区切りは "," な

Dim Sep as Variant
Dim i as Long , j as Long
Dim Cnt as Long , Result as Long

Sep = Split(Text1.Text , ",")

For i = 0 to 9
For j = 0 To 9
Cnt = i
Result = Sep(i)
If Sep(i) < Sep(j) Then
Result = Sep(j)
Cnt = j
End If
Next
Sep(Cnt)=0
Text2.Text = Text2.Text & Iif(Text2.Text = "" , "" , ",") & Result
Next
870デフォルトの名無しさん:2008/02/16(土) 20:06:15
If Sep(i) < Sep(j) Then -------誤
If Result < Sep(j) Then -------正
871デフォルトの名無しさん:2008/02/16(土) 20:39:24
>869とほぼ同じだが。

  Dim strNumber() As String
  Dim intDelimit As Integer
  Dim strExc As String
  Dim i As Integer
  Dim c As Integer
  
  strNumber = Split(Text1.Text, ",")
  intDelimit = UBound(strNumber)
  
  For c = 0 To intDelimit
    For i = (c + 1) To intDelimit
      If CInt(strNumber(c)) < CInt(strNumber(i)) Then
        strExc = strNumber(c)
        strNumber(c) = strNumber(i)
        strNumber(i) = strExc
      End If
    Next i
  Next c

  Text2.Text = Join$(strNumber, ",")
872デフォルトの名無しさん:2008/02/16(土) 20:39:55
>>864
最初に、メーカーのドキュメントは確認した?
綺麗な環境を作ってから試してみてもダメなら、メーカーにメールを投げるしかないね。
特殊なエラーっぽいし、業務用ocxを触ってる住人の絶対数も多くはないと思うから。
873デフォルトの名無しさん:2008/02/16(土) 20:57:01
>>869
870に修正してもソートされてないみたいだけど・・・?
874デフォルトの名無しさん:2008/02/16(土) 21:14:27
>>865>>872
レスありがとうございます。864です。
別の比較的新しいプリンタを開発機に接続して、
そちらをデフォルトで使う設定にしてみたところ、
レポートの設定を変更しても安定して動作するようになりました。

古い方のプリンタで強制終了される現象は未解決のままなので
とりあえずメーカーには報告しておこうと思います。
(プリンタによって動いたり動かなかったりするのは怖いなぁ…)
どうもお騒がせ致しました。
875デフォルトの名無しさん:2008/02/16(土) 22:53:44
>871

横槍みたいで申し訳ありませんが、

>   intDelimit = UBound(strNumber)
>   For c = 0 To intDelimit
・・・
>   Next c

の様にUBoundをループの外に出す書き方はよく拝見します。

  For c = 0 To UBound(strNumber)
・・・
  Next c

の様に書かない理由はどういうものでしょうか?
私が思いつくのは↓の三つくらいですが。

1)Uboundを使うことで生じるデメリット(速度低下)は、
  一時変数を増やすことで生じるデメリット(可読性低下)を上回るから
2)コンパイラはループの外に出せるかどうか判断しないので、人間がやらないとダメ
3)ループの途中で配列のサイズが変わるかもしれない危険を避けるため

よろしくお願いします。
(>871さんのコードを例にしてしまいましたが、>871さんを揶揄するものでは決してありません。)
876デフォルトの名無しさん:2008/02/16(土) 23:04:48
>>875
感覚的なものじゃない?
871のように書いておけば、あなたの挙げたような問題を意識する必要がないから。
877デフォルトの名無しさん:2008/02/16(土) 23:25:56
Arrays.sort()
878デフォルトの名無しさん:2008/02/17(日) 00:01:17
>>875
はずれ。最初に一度しか評価しないので、一時変数使う意味ない
879デフォルトの名無しさん:2008/02/17(日) 00:15:26
すみません。>875です。
私は仕事で必要なプログラムをたまに書く程度のアマチュアです。
以前社内で使っているプログラムを変更させられたことがあるのですが、
それがN88BasicをそのままVBに移行したようなプログラムで、
一時変数使いまくりで(私には)分かりにくく、理解するのにすごく苦労しました。
結局一時変数をほぼ全滅させて、簡潔なプログラムにすることにしました。
で、分かりやすくなったおかげで、プログラムの変更もスムーズにできたわけです。

そんな理由で、私の中では一時変数はGOTO文並の悪役だったので、
プロフェッショナルな皆さんも、一時変数は慎重にそれ相応な理由を持って
使うんだろうと勝手に想像していました。

>876さんのレスを見て、慣れている方は一時変数くらい屁でもないのかな?と思いました。
>878さん、ありがとうございます。不勉強でした。

スレ違いみたいですので、これで終わりにします。
申し訳ありませんでした。
880デフォルトの名無しさん:2008/02/17(日) 15:40:29
>879
プロシージャースコープの変数ならズンドコ使っちゃっていいんじゃね
881デフォルトの名無しさん:2008/02/19(火) 02:45:08
iとかcとか意味不明のループの時点で見る気が失せる
882デフォルトの名無しさん:2008/02/19(火) 10:25:29
MS08-008版のoleaut32.msmはマイクロソフトのサイトからダウンロードできないんでしょうか
883デフォルトの名無しさん:2008/02/19(火) 11:29:26
全角数字が使われてる時点で見る気が失せる
884デフォルトの名無しさん:2008/02/19(火) 22:18:42
そもそもVBのソース自体見る気が失せる。糞ソースの確率100%だし。
885デフォルトの名無しさん:2008/02/20(水) 07:33:46
>881
ループカウンタなんてカウンタ以上の意味ないんだから、
単にiで良いんじゃないの?

Dim intLoopCounter as Integer

って方が萎えるな。
886デフォルトの名無しさん:2008/02/20(水) 08:40:12
>>885
まったく同意

あと、無意味にVBを貶める発言もちょっと引くわ
VB6は今でも、簡単なツール作るために使うこと多いし
COMで作ったDLLの保守、デバッグの用ならVB6ほど使いやすいツールは無いぜ
つーかVS2005はノートPCで使うにはあまりにも重過ぎる
887デフォルトの名無しさん:2008/02/20(水) 16:59:50
使える人はともかく、入門には薦めないがな
888デフォルトの名無しさん:2008/02/20(水) 17:06:41
入門には方向性によってVB2008orVC#2008かVC++2008を勧めるが、
余裕があればVB6はできるだけやっといたほうがいい
社会にはVB6の資産・遺産・負債が膨大にあるし、現役で使われることもまだまだ多い
「仕事にありつく」ことを考えたら、「VB6がわかる」ことはかなりウェイト大きい

VB6を捨てさせることしか頭にないようなレスは、MSの工作員かと思っちゃうよ
889デフォルトの名無しさん:2008/02/20(水) 17:59:34
質問です

VB6.0で帳票アプリケーションを製作中です。
帳票にはクリスタルレポートを使用します。

入力データは固定長のテキストファイルで一レコード3200Byte。
レコード長は最大でも60くらいです。

入力レコードを元に編集、ソートなどが多少は発生しますが、
殆どそのままクリレポの方に投げて帳票印刷する単純なプログラムです。


[レコードを全てバッファに読み込み]→[ソート、編集後に印刷]→[終了]
としたいだけなのですが、
一度エクセルなどに取り込んだ方がいいのでしょうか?
作業用のツールですがパフォーマンス重視との担当の要望です。
VBははじめてなのでアドバイス頂けたらと思います。
890デフォルトの名無しさん:2008/02/20(水) 18:23:52
エクセルを経由させる理由がわからないとなんとも言えんけど、
エクセルを起動させるのに結構時間かかるよ。
891デフォルトの名無しさん:2008/02/20(水) 18:26:28
質問です。(Win2000, VB6 sp3, (.Netは使用できません))

コンソールAppを作成しているのですが、Sub Mainがすぐに終了してしまい困っています。
ソースで説明しますと、以下のソースのExeを作成してdos窓から実行すると、
処理が完了していないにも関わらず、Exeが終了してしまいます。
試しに、WaitForSingleObjectに自分のハンドルを渡しINIFINITEで実行したのですが、
それでも抜けてしまいます...
どなたかご存知の方ご教授くださいませ。

Private Sub Main
 call OtherModule.Run() '糞重い処理
End Sub

---

Private Sub Main
 call OtherModule.Run() '糞重い処理
 call WaitForSingleObject(App.hInstance, -1) 'APIは定義済
End Sub
892デフォルトの名無しさん:2008/02/20(水) 18:28:18
>>890
ありがとうございます。
テキストベースのレコードをソートするイメージを持ったとき、
エクセルでやった方がいいのかな?と思いまして。

読み込んだレコードを配列に入れちゃってソートした後に印刷かければ問題ないですか。
了解です。
893891:2008/02/20(水) 18:32:54
891です

>>891の説明が少し間違っていました。
Sub Mainでコールした処理はタスク上は動作しています。また、正常に処理を終えます。
しかし、Mainがすぐに終了するため、見かけ上はすぐに終わるように見えます。
処理が終了するまでMainを抜けない方法を教えてください。
よろしくお願いします。
894デフォルトの名無しさん:2008/02/20(水) 18:59:19
VB6ってメソッド呼んだ後、メソッド内の処理終わらなくても制御返ってくるの?
895デフォルトの名無しさん:2008/02/20(水) 19:03:26
謎々みたい
896891:2008/02/20(水) 19:06:42
>>894
基本的にそのようなことはないです。
ですが、Sub Mainだけは(さらにFormが絡まなければ)別のように思えます。
なんとなく、Sub Mainは子プロセスを作成して、さっさと終了しているように思えます。

自分も初めてSub MainのCUIベースのアプリ作っていて、戸惑っているところです。
897デフォルトの名無しさん:2008/02/20(水) 19:32:08
>>891
VB6の場合フォームなしでもSUBSYSTEMのタイプは必ずWINDOWSになるのですぐに制御が戻る。
VC6も入れてるならEDITBINが使えるはずだから修正してみたら。
EDITBIN /SUBSYSTEM:CONSOLE hoge.exe
898891:2008/02/20(水) 19:38:28
>>897
できました!レスサンキューです!
「Windowタイプ」という物があるとは...とても勉強になります。
本当にありがとうございました。
899デフォルトの名無しさん:2008/02/20(水) 20:15:03
>>891
こういうのもある。

start /wait hoge.exe
900デフォルトの名無しさん:2008/02/20(水) 22:15:24
>>888
M$がサポート打ち切るのに捨てるもなにも捨てるしかないだろう?
901デフォルトの名無しさん:2008/02/20(水) 22:21:43
でもそんな直ぐに捨てられることは無いんじゃないか
それに捨てられるかはMSが決めることじゃないし
902デフォルトの名無しさん:2008/02/20(水) 22:57:39
いいかげん目を覚ませ
女の腐ったような奴だな
903デフォルトの名無しさん:2008/02/20(水) 23:02:02
VB.NetでC#のusingやC++のusing namespaceに相当する文はないのでしょうか?
904デフォルトの名無しさん:2008/02/20(水) 23:04:30
VB.NETはスレ違いだけどImportsじゃね?

VB.NET質問スレ (Part24)
http://pc11.2ch.net/test/read.cgi/tech/1197507828/l50
905デフォルトの名無しさん:2008/02/20(水) 23:07:54
すいません、数分前に自己解決しました。
こんなのに2時間以上検索を続けていた私は何なのでしょう・・・
ありがとうございます。
906デフォルトの名無しさん:2008/02/20(水) 23:14:12
所詮は一ベンダーの作った言語。標準化を進めなかったのが
運の尽き。ていうか、ひょっとしてGUIの標準規格って作ったら
ニーズあるんじゃまいか
907デフォルトの名無しさん:2008/02/21(木) 00:28:52
安心汁
Office Basicとして何度でもよみがえるさ!
908デフォルトの名無しさん:2008/02/21(木) 09:20:31
VB6ってフリーで配布してないの?
909デフォルトの名無しさん:2008/02/21(木) 09:31:36
サポートが終了しちゃうから配布はしないと思う、
そのかわりでVistaでいろいろ出来るようにとVS2008EEとかが無料なんじゃないかな

今度はVS2008Proが無料になるみたいだし
910デフォルトの名無しさん:2008/02/21(木) 09:39:34
VB.NET以降は言語としては別物だしライブラリが豊富とは言え
作れるアプリはVB6より重いしVB6はまだまだ需要あるんだよなあ
VB6のユーザーがVisual Studioで全く同じように扱えるようにも出来りゃ移行するやつ増えそうだけど
911デフォルトの名無しさん:2008/02/21(木) 09:50:32
いいかげん目を覚ませ
女の腐ったような奴だな
912デフォルトの名無しさん:2008/02/21(木) 09:52:25
VB6も、重い重いといわれていた時代がありました
913デフォルトの名無しさん:2008/02/21(木) 09:52:44
Visual Basic(笑)
914デフォルトの名無しさん:2008/02/21(木) 10:16:36
VB舐めんな
915デフォルトの名無しさん:2008/02/21(木) 13:02:19
VB6は初心者向けだけどVB2008はプロ志向なんだよなー
エラーメッセージもわかりにくいし
916デフォルトの名無しさん:2008/02/21(木) 14:39:36
VB6でCSVファイルを読み込み、splitでカンマ区切りをしてデータを表示させるとき、
データの中にカンマが含まれていて、うまく表示できません。
何かいい方法はありませんか?
917デフォルトの名無しさん:2008/02/21(木) 14:46:29
>>916
InputステートメントでCSVファイルを読み込んでください
918デフォルトの名無しさん:2008/02/21(木) 14:55:57
>>917
Inputステートメントで読み込むとEOF関数で末端を検知するように
しているにも関わらず、実行時に「これ以上データがありません」と
エラーを起こしてしまいます。なぜでしょうか??
919デフォルトの名無しさん:2008/02/21(木) 14:56:47
>>918
ちゃんと値を読み込む直前にEOFでチェックしてる?
再現できないYo
920デフォルトの名無しさん:2008/02/21(木) 15:07:26
>>919  
  Do Until EOF(1)
Input #1, aa, bb,…
という風に直前にしているのですが、、、(汗
921デフォルトの名無しさん:2008/02/21(木) 15:49:41
VB6 & XPSP2です。

自作DLLが突如動かなくなってしまいました。
アプリから呼ぼうとすると「430(クラスはオートメーションまたは予測したインターフェイスをサポートしていません)が出ます。

DLLのソースを開いたら、バージョン間の互換性が取れないというエラーが出てしまいました。
確かにマイナーバージョンを初めて1上げましたので、バージョンが違うと判断されたのでしょうか。
バージョン間の互換性をバイナリに設定しなおしたりバージョンを元に戻しても430エラーは止まりません。

MSDNライブラリでは、古いレジストリ情報を手動で削除しろとありますが、
レジストリエディタを開いてもどこに自作DLLの情報があるのか探しきれません。
どういう方針でどこから手をつければよいのでしょうか?
よろしくお願いします。
922デフォルトの名無しさん:2008/02/21(木) 16:28:51
>>912
つかさ、CSVファイルは、タブ区切りじゃなくて、カンマ区切りなんでしょ?
それで、データの途中にカンマがあるって仕様が破綻してないかい?
データ長が等しいなら、バイナリで単位長さずつ読み出すとか考えられるが
そのデータ構造を誰が考えたのかしらんが、自分で作ったなら再考したほうがいいよ
923デフォルトの名無しさん:2008/02/21(木) 16:47:20
>>912じゃなくて>>916だった
924デフォルトの名無しさん:2008/02/21(木) 16:50:58
>>921
エラー内容(括弧内)でググッるとトップがm$のサポートページに飛ぶんだけど
その内容見て理解できる?
出来なかったらもう一度質問して
925デフォルトの名無しさん:2008/02/21(木) 16:51:37
>>922
カンマ区切りの正しいフォーマットは知らないが,ダブルクウォートで囲まれた文字シーケンス中のカンマは読み飛ばしてくれるよ.

>>920
それはCSVのフォーマットがおかしいってことだな.

代案
・CSVの横幅(列長)が揃うようにフォーマットを厳密に規定
・1項目ずつ読み取る
926>>916:2008/02/21(木) 17:43:02
>>925
 なぜかダブルクウォートでかこまれたカンマを読み飛ばしてくれなくて困っています。
1項目ずつ読み取るっていうのは具体的にはどういうふうにするんですかね?
927デフォルトの名無しさん:2008/02/21(木) 17:47:37
ADOでCSVを読むといいよ。
カラム内のカンマや改行も解釈してくれるから楽だよ。
928デフォルトの名無しさん:2008/02/21(木) 18:03:58
>>925
VBのinputにダブルクオートエスケープはあったっけ?
もしかしたらこっちの勘違いかもしれん
929デフォルトの名無しさん:2008/02/21(木) 18:24:37
>>928
んなもんはない!
930デフォルトの名無しさん:2008/02/21(木) 18:47:02
>>925
ちょっと試してみた
確かに、ダブルクオートによるカンマエスケープは利くね
なるほど、意外と便利だな
931デフォルトの名無しさん:2008/02/21(木) 18:47:41
>>929
スマン、言葉がおかしかったw
932デフォルトの名無しさん:2008/02/21(木) 18:52:23
csv調べたら、2005年にRFC4180でしっかり仕様付けされてるんだねw
なかなか為になったよ
933デフォルトの名無しさん:2008/02/21(木) 21:27:00
>924
ありがとうございます。そこは読んでいました。
「不用意に外部インターフェイスを変更してはいけない」理由がそれだと理解しています。
クラスのパブリックメソッドやパブリックプロパティには変更を加えていません。
実際にコード上で変更がないのですが、バージョン互換のチェックが外れてしまったのかもしれません。

ただ実際に変更していない以上、ヘルプにあるように
>この問題を回避するには、古い DLL あるいは EXE のレジストリ情報を手動で削除する必要があります。
レジストリを変更して、ローカルサーバーの汎用一意識別子 (UUID) とインターフェイスを
元に戻せないものかと思って質問した次第です。

またオートメーションやバージョン互換については、何となく分かった気になって使っていますが、
理解度としては中途半端だと思っています。
934デフォルトの名無しさん:2008/02/21(木) 21:33:04
>>909
Proが無料になるの?まじで?
935デフォルトの名無しさん:2008/02/21(木) 21:49:41
嘘ついたかも、
学生に対してのものだから一般は使えないのかな?
http://itpro.nikkeibp.co.jp/article/NEWS/20080220/294225/
936861:2008/02/21(木) 22:06:06
>>920


え。
Do


Loop Until EOF(1)

ではないかい?
937デフォルトの名無しさん:2008/02/21(木) 22:43:30
>935
あー、2003の頃は5000円だったSpokeがロハになったって話か。
938デフォルトの名無しさん:2008/02/21(木) 23:20:14
>>926
Do
  Input #1, aa
  if EOF(1) then Exit Do
  Input #2, bb
  if EOF(1) then Exit Do
  ...
Loop
みたいなかんじ

というかそもそもCSVに書かれてあるデータのフォーマットがおかしいんだから
読み込みの方で対処するのはおかしいんだがな
939デフォルトの名無しさん:2008/02/21(木) 23:24:31
Excelが吐くのがCSVのデファクトスタンダードだからなー。
パーザを手抜きしてるのが悪い気がするナー。
940デフォルトの名無しさん:2008/02/21(木) 23:28:58
>>933
とりあえず、実装を変えないで起きる問題点で
こんなのが見つかったんだけどこれは見た?
ttp://support.microsoft.com/kb/184286/ja
941デフォルトの名無しさん:2008/02/21(木) 23:29:21
で、遅いのでどうにかなりませんかという質問が出て・・・
942デフォルトの名無しさん:2008/02/21(木) 23:30:23
少々時間をロスする方法だが
LineInputした1行をForでまわして1文字づつチェック。
いらない文字を捨て、必要な文字列だけ抜き出したら駄目なんかい?
943デフォルトの名無しさん:2008/02/21(木) 23:39:06
>>942
ちなみに元の質問がそんな感じのを聞いていたけど
Inputで読み取るように誘導してるおれ
944デフォルトの名無しさん:2008/02/22(金) 00:20:10
>>940
あ、これは一応enumを変えているのか、失礼
まったくコードを変更していないということから考えるとおかしいんだよなぁ
945デフォルトの名無しさん:2008/02/22(金) 00:59:15
>>933
スマン>>921をちゃんと読んでなかった・・・・
そのdllが参照しているほかのCOM(ocx,dllなど)が何かしらの理由で
バージョンが古くなったりおかしくなってる可能性が高い
正常に動いていたバージョンからエラーが起きるようになった時までにインストールしたアプリが
dllが参照しているcomオブジェクトに何かしらの影響を与えたと思われる

ちなみに
今手元の開発環境にはmsdnを入れていないので古いレジストリ情報を手動で削除〜と書いてある理由が分からないが
VBで作ったある程度大きなactivexdllを手動で削除するというのは、結構面倒くさいのでよほどのことがないとやらないよ
946デフォルトの名無しさん:2008/02/22(金) 05:18:47
VB6で作られてる優良アプリってなにがある?
947デフォルトの名無しさん:2008/02/22(金) 09:17:35
>>921
DLL のバックアップはないんだろうか。
・・・あったら聞きにこないかw

>>936
0件のときどうすんの?
948デフォルトの名無しさん:2008/02/22(金) 09:48:05
gotoでやり過ごす
949デフォルトの名無しさん:2008/02/22(金) 09:53:12
>>947

if 0<= FileLen("ファイル名") then:ファイルサイズが0の場合の処理。

てかんじでファイルサイズを参照してからDo に入れば良いのでないかい?

950949:2008/02/22(金) 09:54:43
あ、ごめ、<の向きが逆だった。。orz
951デフォルトの名無しさん:2008/02/22(金) 09:58:24
>945
>947
呼び出し側の参照設定をやり直して再コンパイルしましたが、エラーが止まりません。
諦めて、コンパイル時にDLLの名前を少し変えて完全に別物とすることにしました。
(プロジェクト名他はそのままで)

例えば AAA.DLL→AAA1.DLL

そうしたら、エラーが出なくなりました。
呼び出し側はAAA.DLLを参照したままなんですけど・・・???
まあ呼び出し側を変更せずに動くようになったので、
当面の問題は解決したということにしたいと思います。

が、私がActiveXを十分に理解しないでいるのが一番の敗因だと思いますので
もっとよく勉強して次に備えようと思います。ありがとうございました。

ちなみに、自作DLLは、元々EXEで使っていたものをDLLにしたものです。
EXEのコードはほぼそのままで、mainに引数を渡すパブリックメソッドを一つ書いただけのクラスを被せています。
ですから、外部インターフェイスは変わりようがないのです(中身は変更を加えています)。

そのパブリックメソッドでエラートラップをかけると430エラーを返します。
トラップを外すと、呼び出し側で13エラー「型が一致しません」が発生します。
「型が一致しません」でもググりましたが、
バージョン互換の問題で発生しているケースが結構ありました。
952デフォルトの名無しさん:2008/02/22(金) 11:10:26
>>949

>>920 のように書けばいいと思うんだ。
ループの終了条件を後ろに持っていく意図がつかめない。

あと、オープン済みのファイルに対してなら、FileLen 関数より
Lof 関数使ったほうがいいと思う。
953949:2008/02/22(金) 11:17:09
>ループの終了条件を後ろに持っていく意図がつかめない

EOFの検出してから再度ファイルにアクセスしてしまうというのが問題の発端のじゃないかい?

>あと、オープン済みのファイルに対してなら、FileLen 関数より
>Lof 関数使ったほうがいいと思う。

おれが言いたかったのはオープン前の話。

954デフォルトの名無しさん:2008/02/22(金) 12:23:01
>EOFの検出してから再度ファイルにアクセスしてしまうというのが問題の発端のじゃないかい?

問題の解決になっていないのは置いとくが、
そもそも終了条件を後ろにもっていくのはおかしい。

0件のときどうする、なんてのは少なくとも >>936 の頭には
無いように見えたから指摘したまで。

>おれが言いたかったのはオープン前の話。

>>949 からは、そうは感じ取れなかった。スマンな
955デフォルトの名無しさん:2008/02/22(金) 13:09:59
956デフォルトの名無しさん:2008/02/22(金) 20:13:04
String変数にクラスの名前が入っていて、
そのクラスのインスタンスを作成したいんですが、
どのようにすればいいでしょうか?
957デフォルトの名無しさん:2008/02/22(金) 23:56:46
>>956
 Dim clsObject As Object
 Select Case クラスの名前
  Case "犬"
    set clsObject = New TeacupChihuahua
  Case "猫"
    set clsObject = New AmericanShort
  Case "スベスベマンジュウガニ"
    set clsObject = New SilkyBunCrab
 End Select
958デフォルトの名無しさん:2008/02/23(土) 00:03:00
>>957は最高にナイスガイ
959デフォルトの名無しさん:2008/02/23(土) 00:12:46
>>957
それはわかるんですが、クラスの数が多く、
クラスの入れ替わりも多いので、
ひとつの記述でできたらと考えています。
何か良い方法はありませんか?
960デフォルトの名無しさん:2008/02/23(土) 00:21:29
そんなときのためのIDispatch
Object o = CreateObject( ObjectName )
961デフォルトの名無しさん:2008/02/24(日) 13:02:41
別テーブルに同じ名前のフィールド名があるんですが、これをExcelで表現しようと格闘中です。
VB6.0でどのように表現すればいいのでしょうか?

具体的に
テーブル名     A    B
フィールド名   Fname  Fname

があるとします。これをExcelで帳票を作りたいと思っています。
"SELECT a.Fname, b.Fname FROM A a, B b WHERE a.delf = false
としたのですが
Sub Makeline(rs, row)
Cells(row, 1) = rs("a.Fname")
Cells(row, 2) = rs("b.Fname")
と書き込んでもエラーが出ます。
この場合、どのように書けばいいのでしょうか?

知ってる方がいましたら、教えて下さい。
ヨロシクお願いします。
962デフォルトの名無しさん:2008/02/24(日) 13:11:32
select a.fname hoge1, b.fname hoge2 from

rs("hoge1")
rs("hoge2")
963961:2008/02/24(日) 14:26:34
>>962
select文でエラーが出てしまいます。
from以下は同じでいいんですよね?

hogeを指定しなくていいんでしょうか?
964デフォルトの名無しさん:2008/02/24(日) 14:36:03
じゃあ
select a.fname as hoge1, b.fname as hoge2 from
965961:2008/02/24(日) 15:19:30
>>964
おお!できました。ありがとうございます。
おかげ様で上司に怒られなくて済みそうです。
966961:2008/02/25(月) 13:07:47
961です。

昨日はさりがとうございました。&またお尋ねしたいことがあります。
今度は7箇所くらいのテーブルから各々のフィールドを読み込み、帳票を作成しております。
962さんから教えていただいた内容で出来るのですが物凄く時間がかかります。

だいたい1時間くらいかかってしまいます。
SELECT以下の文字が多すぎて読み込みに時間がかかるようです。
もう少し短時間で終わるようにできませんか?
967デフォルトの名無しさん:2008/02/25(月) 13:17:59
DBMSは何?
968デフォルトの名無しさん:2008/02/25(月) 13:53:02
>>966
文字が多すぎるせいじゃないと思うよ。
インデックスとか張れば速くなるんじゃない?
969961:2008/02/25(月) 13:57:30
>>967
PostgreSQLです。

>>968
多すぎじゃないんですか?
でもインデックスの張り方がわからない・・・
ちょっとググってきます。
970デフォルトの名無しさん:2008/02/25(月) 14:16:50
SELECTが遅いんじゃなくてExcelが遅いんじゃねーかと思ったり
971デフォルトの名無しさん:2008/02/25(月) 14:21:37
>>966
当然、エクセルの画面描写をとめてるよね?
972961:2008/02/25(月) 14:30:15
Excelのせいなのかな?

>>971
止めています。データ自体は大した量ないんです。
973デフォルトの名無しさん:2008/02/25(月) 15:02:15
>>972
セルに1個づつデータセットしてないか?
2次元配列作ってRangeオブジェクトに対して一気にセットしてみ
974961:2008/02/25(月) 15:20:01
>>973
ありがとございます。
試してみますね
975デフォルトの名無しさん:2008/02/26(火) 10:08:06
>7箇所くらいのテーブルから
単にSQL文じゃないのか? テーブル7つ結合してるわけじゃないだろうけど。

>>961
SQLが返るのは早くて、編集に時間が掛かってるの? どこが遅いのか切り分けないと。
976デフォルトの名無しさん:2008/02/26(火) 10:53:34
>>975
だな。
EXCELの操作で遅いなら、
Excel Creator使うと高速になるし、
自分で書いてるデータ処理が遅いなら、
ロジック晒せば高速化も出来るだろ。

経験上、データ取ってくるところより、
・取得データをレコードセットのまま操作している
・EXCELのセル1つ1つにデータセットしている
なんてことしてるとやたら遅くなる。
977デフォルトの名無しさん:2008/02/26(火) 12:50:18
この流れはテンプレ化すべきだと思うんだ
978デフォルトの名無しさん:2008/02/26(火) 17:21:11
任意に項目(数量)が追加、削除されるリストボックスの値の合計値を得たいのですが、
list1.list(1)+list1.list(2)…
とやると合計値ではなく連結した文字列になってしまいます。
かといって
Cint(list1.list(1))+Cint(list1.list(2))…
とすると型エラーが出てしまいます。

もしよろしければアドバイスお願いします。
979デフォルトの名無しさん:2008/02/26(火) 21:43:31
>978
> list1.list(1)+list1.list(2)…
> とやると合計値ではなく連結した文字列になってしまいます。

listプロパティはストリングだから、+はストリング同士の連結の演算子になっちゃう。
だから型変換すれば良いのだが、

> Cint(list1.list(1))+Cint(list1.list(2))…
> とすると型エラーが出てしまいます。

俺んとこのVB6はそんなエラー出さないよ。
リストボックスに入ってる値をよ〜く確認してみたら?
Listにデータが何個入ってるのか知らないけど、
整数型に変換できない値がどこかにあるんでしょ。
980デフォルトの名無しさん:2008/02/26(火) 21:47:10
ループで回してやれば、具体的に何番目のデータで型変換に失敗するのか、
デバッグ時に確認しやすいだろ。つか、普通にループ回せ。

  Dim i As Integer, sum As Integer
  For cnt = 0 To List1.ListCount - 1
    Let sum = sum + List1.List(i)
  Next i
981デフォルトの名無しさん:2008/02/26(火) 21:48:34
×For cnt = 0 To List1.ListCount - 1
○For i = 0 To List1.ListCount - 1

orz
982デフォルトの名無しさん:2008/02/26(火) 22:00:03
数値変換できるかどうかは IsNumeric関数使うといい。
983デフォルトの名無しさん:2008/02/26(火) 23:49:07
IsNumericは使うなよ!
984デフォルトの名無しさん:2008/02/26(火) 23:55:37
え、なんでなんで?
985デフォルトの名無しさん:2008/02/27(水) 00:32:55
少しは考えろよ
常識だろこんなの
986デフォルトの名無しさん:2008/02/27(水) 09:25:27
ありがとうございます。
まさに項目の計算で
for i = 0 to listcount
としたのが不味かったみたいでした。
listcount-1 にしたら問題なく動作しました。

こんな簡単な事だったとはorz
987デフォルトの名無しさん:2008/02/27(水) 10:20:48
あるあるww
988デフォルトの名無しさん:2008/02/27(水) 17:12:52
>>984
IsNumeric 関数は、可能な限り数値として認識しようとするから
全角の数字や、一部の特殊文字(\とか)が許されてしまう。

それを踏まえて使うぶんにはいいが、業務プログラムだと許されない事が
多いんじゃないかな。

IsDate 関数も同じような動きをしていて、

? IsDate("2008/2/27")
? IsDate("27/2/2008")
? IsDate("2/27/2008")

3つとも 2008/02/27 と認識されて True を返す。
989デフォルトの名無しさん:2008/02/27(水) 18:30:00
? IsNumeric("¥1,234")
True
? "¥1,234" * 2
2468
? CLng("¥1,234")
1234
IsNumericは通った後にC〜系の型変換使えば何の問題もない。

? Format("2008/2/27","yyyy/mm/dd")
2008/02/27
? Format("27/2/2008","yyyy/mm/dd")
2008/02/27
? Format("2/27/2008","yyyy/mm/dd")
2008/02/27
IsDateは通った後にFormat関数で整えれば何の問題もない。
990デフォルトの名無しさん:2008/02/27(水) 22:27:53
>989
>988が言いたいのは
そもそも2008年2月27日を意図して27/2/2008と打つ奴はイネーだろって話じゃないの?
データ入力者が微妙に打ち間違えたとき、トンでもない日付に解釈されちゃったら
エラーで拾えないだろってことでそ?
991デフォルトの名無しさん:2008/02/27(水) 22:36:10
>>990
>データ入力者が微妙に打ち間違えたとき

もう少し、よく考えた方がいいぞ。
992デフォルトの名無しさん:2008/02/27(水) 22:42:58
ノートで4100と入力しようとして4e100と入力されてオーバーフローおこしたのはどこのどいつだい?
993デフォルトの名無しさん:2008/02/27(水) 22:47:39
お前さんの失敗談乙
994デフォルトの名無しさん:2008/02/27(水) 22:50:24
入力のときKeyPressのイベントかなんかで数字キーのみに限定し、
かつC変換かけるときOn Errorで網張っとくのが普通だわな。
自分の不出来さを晒すなんて(ry
995デフォルトの名無しさん:2008/02/27(水) 22:54:21
どうやら>>992のひとり負けのようですね。
996デフォルトの名無しさん:2008/02/27(水) 23:24:35
KeyPressで文字を弾いてマウスのコピペにやられちゃったのはどこのどいつだい?
997デフォルトの名無しさん:2008/02/27(水) 23:30:35
>>994
経験者乙
雉も鳴かなきゃいいのにね
998デフォルトの名無しさん:2008/02/27(水) 23:33:35
>>996

 あのさ、マジレスすると、お前プログラマ辞めた方がいいよ。
 お前の言ってることは、とりあえず全部回避する方法が有る、
 にもかかわらず、お前は知らないだろ。
 知らないなら知らないでもいい、初心者スレなのだから。
 だがお前みたいに知ったかぶってる奴はいつか、
 誰も助けてくれない状況で他人に多大な迷惑かけるようなミスをやる。

 ここでアドバイスしている連中がIsNumericだけで計算に値を渡すような日曜プログラマみたいなことしないよ。
999デフォルトの名無しさん:2008/02/27(水) 23:35:21
だといいね。
1000デフォルトの名無しさん:2008/02/27(水) 23:39:28
>>996
>KeyPressで文字を弾いてマウスのコピペにやられちゃったのはどこのどいつだい?

てのの答えが以下なような気がw
>>994
>かつC変換かけるときOn Errorで網張っとくのが普通だわな。

必要であれば入力された文字数も数えるし、値変換する前に数字だけかどうかforで回してチェックしたりもするw。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。