(*´д`*)ハウァッ… VB初心者質問スレ Part16

このエントリーをはてなブックマークに追加
1エロチカセヴン
>>2-999
悪いことは言わないから(w)、転職、または他部門への異動を真剣に
検討して頂きたい。技術のない技術者(言葉が矛盾しているが w)の
存在は、顧客にとっても、同業者にとっても、迷惑(足手纏い)以外の
何者でもない。


  Part11 http://pc.2ch.net/tech/kako/1024/10243/1024380249.html
  Part12 http://pc3.2ch.net/test/read.cgi/tech/1026642565/
  Part13 http://pc3.2ch.net/test/read.cgi/tech/1029241786/l50
Part14 http://pc3.2ch.net/test/read.cgi/tech/1030947162/
Part15 http://pc3.2ch.net/test/read.cgi/tech/1032706491/-100

Win32 API関連スレ
  Win32API 質問箱 Build4
  http://pc.2ch.net/test/read.cgi/tech/1023361418/
心得
壱.質問する前に過去ログにも目を通してみる。
弐.質問する前に MSDN などで調べてみる。
参.VBScript もこのスレでOK。
4.インストーラーなどの質問もOK。
五.下ネタもたまにならOK
2エロチカセヴン:02/10/11 11:15
>>1
とりあえず使ってみたがなかなかいい感じ
もちろんユーザ登録したぞゴルァ。
5デフォルトの名無しさん:02/10/11 11:36
転職したいんだけどね。


ほとんどVB+ORACLEしか使っていない部署で働く
  ↓
デスにより、否デスでも精神的に向いてない
  ↓
この業界から足を洗いたい
  ↓
退職を決意し退職
  ↓
他業種を探すがこのご時世なので仕事が無い
  ↓
結局この業界の戻る
  ↓
しかも中途半端な技術+VBしかできないので結局VBの仕事をやらざるをえない。
  ↓
上に戻る


てなやつがいっぱいいるとオモワレ
この業界の体質を改善しないとVB厨は増えつづけると思うよ。
今後もっとね。
>>5
かわいそうだな。まあ気を落とさずに頑張れよ。
7 :02/10/11 11:56
質問。
タブ区切りのString "123 456 789"
をIntegerの動的配列に入れ込む関数とかってありますか?
>>7
Split。
Splitの戻り値はStringじゃないと駄目な筈だから
Split使った後Intの配列にでも入れれば?
9897:02/10/11 12:24
っていうか
このスレちんかすばかりなんでしょ?
VB止める前に人生やめたら?
10D:02/10/11 12:24
前スレ897
一寸叩かれ気味ですねぇ。ヘルプ見て分かんなかったらこれ読んでみたら?
   VisualBasic5.0ブリーフィング   翔泳社
分かりやすく書いてあったと思う(知り合いにあげてしまったのであまり覚えてないです)。
>>1
初心者スレにしてそのコピペか。
荒れる予感
どうせみんなコピペって知ってるしもう既に無視してるよ。
つーか言われるまで気づかなかった。
小数点以下を切り捨てたいのですが、どうすればいいのでしょうか?

dim a as long
a = 1.9

このとき a は 2
そこで
Cintのヘルプは丸めるって書いてあったのをみて。

dim a as long
a = cint (1.9)

このとき a は 2
むかついたので「切り捨て」をヘルプで検索

VBのヘルプが出てこない。基本的なことだと思うのですが、
ヘルプに切捨てがのってないなんて・・・・。
>>13
まぁ落ち着いてヘルプ調べろよ。
ググったら一発だぞオイ

Dim i As Integer

i = Int(1.9)
MsgBox i

17 :02/10/11 13:24
>>8
できました。ありがとうございました。
>>14
>>15
>>16
絶対HELPに乗ってると思ってわざとGoogleしらべなかったんです。ごめんね
しかしこのINT関数FIX関数?ヘルプをどう落ち着いて検索すればかかるのよ。
相変わらずMSDNのできのよさに脱帽しました。
>>12
気にしてないならまあいいか
 
21デフォルトの名無しさん:02/10/11 20:30
コントロールがアクティブかどうかってどうやったら取得できるのでしょうか?
ActiveControlプロパティーがそれかな?と思ったけどなんか違うみたいです。
>>21
ヘルプ嫁
2321:02/10/11 20:37
あ、GetFocusした後LostFocusするまでフラグたてておけばいいのか。

もっとスマートな方法はないですよね?
>>23 APIのGetFocus使ったらアクティブなコントロールのhWndが返ってきますた
ActiveControlでいいじゃん。なんでダメなの?
26pop ◆CSZ6G0yP9Q :02/10/11 21:03
.netを刈ったのですがどうやったらActiveXを作れるのでしょうか。
使い方が変わったみたいなのでよくわかりません。
ホームページ、本なども調べたのですが見つかりません。
よろしくお願いします・
>>1
顔文字変えろよバカ
28デフォルトの名無しさん:02/10/11 21:11
>>27
顔文字お宅は心でください。お願いします。
>>28
つれた!!
>>13
>>18

MSDNで、”切り捨て”でイッパツだったぞ。
MSDNのできのよさ云々を語る前に自分のできのよさを疑えよ。

まあ、それが出来ないからヘルプを見る事もできないんだろうけど。
31デフォルトの名無しさん:02/10/11 22:50
>>30
初心者版でそんなに厚くなっても
オレももうちょっと薄くならないとな
はげ
34デフォルトの名無しさん:02/10/11 23:56
テキストボックスに入力される文字数を制限する為に
作成したチェック関数の一部なのですが、
10文字以上入力されたら以降を切り取る仕様です。
ただし、10Byte目と11Byte目にまたがって
漢字を入力された場合の処理に困っています。

'Str=テキストボックスに入力された文字列です。
'長さが制限バイト数(10Byte)を越えている場合
If LenB(StrConv(Str, vbFromUnicode)) > 10 Then
Str = Trim(StrConv(MidB(StrConv(Str, vbFromUnicode), 1, 10), vbUnicode))
↑この処理だと漢字の前1Byte(前から数えて10Byte目)に残っている
ごみバイトをUnicodeに変換する際、スペースに変換されるので
Trimでスペースを省かれ、とりあえずは仕様どおり仕上げることができました。
ですが、漢字の前1ByteのごみをUnicodeに変換する際、StrConv関数が
必ずしもスペースに変換するとは思えないのでどうしても納得行きません。
アドバイスいただけませんか?他にこんな方法がある、とかでも嬉しいです。
長文失礼しました、よろしくお願いします。
なお、実装はAccess97でのVBAなのでなぜだかテキストボックスに
MaxLenプロパティがないです。
3534:02/10/11 23:58
>34
補足です、言葉が足りませんでした。
漢字がまたがってしまった場合は、
漢字ごと(9Byte)で切り捨てたいです。
上手く説明できているか不安ですが、よろしくお願いします。
36デフォルトの名無しさん:02/10/12 00:00
>>34
アスキーコードなら1バイト目を調べて漢字かどうか判定できる。
10バイト目をみて漢字かどうか調べて幹事のときは早めに予約すればいいのでは?
>>34
文字コード見れば簡単じゃん。シフトJIS調べて味噌
3934:02/10/12 00:04
すばやいレスありがとうございます。
とりあえず言われた方向で調べてみます。
また報告に来ますね。
ありがとうございました。
>>39
もうくんな。氏ね。
41デフォルトの名無しさん:02/10/12 00:13
34がプロのプログラマーでないことを祈ります。
たぶん社内SE&PGってとこでしょう
>>41=>>42
じさくじえーん
4434:02/10/12 00:17
言われた方法でいけそうです。
あと、最後の疑問点なんですが、
Windowsでテキストボックスに入力される文字は
全てシフトJIS(MS漢字)コードと思っていいのでしょうか?
Unicodeってないですよね?

>41
プログラマーの見習いです。
これからがんばります。。
45デフォルトの名無しさん:02/10/12 00:31
>>44
会社の先輩プログラマーに聞けばいいのに。

答えは微妙。少なくとも今やっている取得方だとシフトJISと思ってていい。
選択したディレクトリの中の一時ファイルを一括で消したいのですが
実行すると「パスが違う」と怒られます。助けてください。
-- 以下ソース --
Private Sub Command1_Click()

ChDrive Drive1
ChDir Dir1

On Error GoTo Errorhundra
Kill "*.tmp"
Exit Sub

Errorhundra:

MsgBox "tmp file was nothing there."

End Sub
47デフォルトの名無しさん:02/10/12 00:35
>>46
パスが違うのでは?
デバッガで動かして値を確認してみそ。
> Kill "*.tmp"

何なのこれ?ワイルドカード使えるの?
>>46
ウィルスでつか?
50デフォルトの名無しさん:02/10/12 00:40

Kill 関数を使って、ディスクからファイルを削除するコード例を次に示します。

' Assume TESTFILE is a file containing some data.
Kill("TestFile") ' Delete file.

' Delete all *.TXT files in current directory.
Kill("*.TXT")


VB.netでは少なくとも使える
5148:02/10/12 00:41
あ、使えるんだね。ゴメン。
>>50
VB6に決まってるだろ。ぼけぇ。
VB6でも使えるようですよ
あとChDrive Drive1は要らないと思われ
54デフォルトの名無しさん:02/10/12 00:44
>>53
いらないけどあっても問題ない。そのせいではない。
5534:02/10/12 00:45
>45

実は会社で使いまわしているコードが
>34に書かせていただいたやつなのです。
見せていただいて「ほんとにこれでいいの??」っていう
気持ちが消えなくて今日帰宅、書き込みさせていただきました。
まぁ小さな会社ですので仕方ない?などと思っています。
>>53
> あとChDrive Drive1は要らないと思われ

要ります。
57デフォルトの名無しさん:02/10/12 01:07
Visual Basic6.0ランタイムでVisual Basic5.0でつくったものももちろん動く??
>>57
動かない。VB5用のランタイムが必要。
5957:02/10/12 01:21
>>58ありがと!
>>18
君は泳ぎ方を覚えずにいきなり飛び込み台からダイブするやしか。

>>26
作れないわけではないが、.netでActiveXを何で作りたいの?
.netでそんなあほなことはする意味なし。
6153:02/10/12 01:28
ChDriveがあった場合、
Sub Drive1_Change() 内に
  Dir1=Drive1
が無い場合にエラーを起こす原因になると思います
>>61
それ以前に、
> ChDir Dir1
このディレクトリとは別のドライブが
カレントドライブになっていた場合どうすんの?
6353:02/10/12 01:45
あら、ほんとですね、今やってみたら
ChDrive入れないとApp.pathでちゃんと
ドライブ移動してませんでした。スイマセン
64デフォルトの名無しさん:02/10/12 08:38
MouseMoveイベントって、コントロールからカーソルがはずれると発生しなくなりますが、
カーソルがはずれても発生するようにする方法があった気がするのですが。
たしか1行ぐらいちょっと追加するだけだった気がしますが思い出せません。
SetCaptureのことかな?
66デフォルトの名無しさん:02/10/12 09:00
あ、それですそれ。
APIだかVBの機能だかさえ忘れてました
67_:02/10/12 11:16
Byte型配列を結合したいんですけどどうやればいいんですか。
A() = A() & B()
とかやってもエラー出ます
68D:02/10/12 11:52
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Sub Command1_Click()
   Dim a(1000) As Byte
   Dim B(10) As Byte, i
   For i = 0 To 10
      a(i) = i
   Next i
   B(0) = 100
   CopyMemory a(11), B(0), UBound(B) + 1

End Sub
こんな感じ?
69D:02/10/12 11:55
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Sub Command1_Click()
   Dim a(1000) As Byte
   Dim b(10) As Byte, i
   For i = 0 To 10
      a(i) = i
   Next i
   b(0) = 100
   CopyMemory a(11), b(0), UBound(b) + 1

End Sub

a(11)以降にb()の内容が入ります。
こんな感じ?
70D:02/10/12 11:56
ダブっちゃいました。すいません
71897:02/10/12 13:33
前スレ897です(w
おかげさまでユーザーコントロールでコントロールの作成ができたんですけど、
あと一歩のところで躓いてます
カーソルがコントロールの上にあるか調べたいのですが
1.親フォームがコントロールのプロパティーを変更する
2.コントロール内でSetCaptureを使ってどうにかする
3.コントロール内でGetCursorPosを使ってどうにかする
どれがよいでしょうか?
できたら1はさけたいんですが。
2はやってみたところ、他の同一コントロールとSetCaptureがかぶってしまうようで
うまくいかないっぽいです。
72897:02/10/12 14:35
失礼しました。。
2のSetCaptureでできました。
73897:02/10/12 16:20
フォントプロパティーがどうにもわかんねぇYO!。・゚・(ノД`)・゚・。

Private m_Font as Font

Public Property Get Font() As Font 'Font
  Set Font = m_Font
  UserControl_Resize 'コントロールを描画
End Property

Public Property Set Font(ByVal fFont As Font)
  Set m_Font = nFont
  PropertyChanged "Font"
End Property

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
  Set Font = .ReadProperty("Font", Ambient.Font)
End Sub

Private Sub UserControl_Resize
  〜描画〜
End Sub

ってな風にしてるんだけど、実行中にFontプロパティーを設定しても反映されない
いや、されているんだけど、UserControl_Resizeが実行されてなくて描画されない
どこがいけないのかなぁ。
74897:02/10/12 17:54
やっぱりダメだ。どうにもわかんない
Public Property Get Font() As Font

Public Property Let Font(fFont as Font)
だとプロパティー取得時にGetが、設定時にLetが呼び出されるんですよね?

Letの代わりにSetにするとなんかどうにもよくわかりません。
ぱっと見Setは一度も呼び出されない感じですが・・
そして設定時にもGetが呼び出されるようだし。
どうなっているのでしょうか?
75 :02/10/12 18:48
VB5で8方向スクロールをやってみた。
Bitbltで表画面に描いても、反映されるのは
Form1.mainscreen.Refreshするとか
Form1.mainscreen.Hide から.Showとかしないと駄目でした。
(mainscreenはPictureBox)
とすると、いちいち裏画面に描く必要も無いのでは?
と思うが、何かおかしいでしょうか?
ちなみにCのスクリプトYaneuraGS2kより2割ほど遅いだけなので捨てがたい。
VC持ってないし。
それからBitBltより高速化したAPIはどっかに無いの?
>>67
ReDim a(10) As Byte
Dim b(20) As Byte

a = CStr(a) & CStr(b)
>>74
Property Setでは、呼び出し元の方にも
Setステートメント付けてる?
78897:02/10/12 19:27
>>77
呼び出し元ってプログラムの方でしょうか?
OriginalControl.Font="Arial Black"
ってな感じですが。
>>78
> 呼び出し元ってプログラムの方でしょうか?
そう。

Property Set Font(fFont As Font)
としているなら、呼び出し元は
Set OriginalControl.Font = [Fontオブジェクトへの参照]
ではないの?

それと >>73
> Public Property Set Font(ByVal fFont As Font)
>  Set m_Font = nFont
はスペルミスだよね。
80897:02/10/12 20:50
そうでもないような。。
他のサンプルを見る限り。
> Public Property Set Font(ByVal fFont As Font)
>  Set m_Font = fFont
こうですね。
> そうでもないような。。
> 他のサンプルを見る限り。

おいおい、何言ってんの?
82897:02/10/12 21:03
へ?何言ってるって、そのままですよ。
む、勘違いかな?
呼び出し元=オリジナルコントロールが貼り付けてあるフォーム
でOKかな?
>>80
> そうでもないような。。
これは何の話のこと?
>>83
897の脳内に存在するパラレルワールドです
85897:02/10/12 22:04
>>83
>Property Set Font(fFont As Font)
>としているなら、呼び出し元は
<Set OriginalControl.Font = [Fontオブジェクトへの参照]
>ではないの?
のこと。

ようやく分かってきた〜!!
プロパティーを変更するとまず
Public Property Get Font() As Font 'Font
  Set Font = m_Font
End Property
が呼び出されて、Font=m_Fontがセットされる。
上のプロパティーが実行された後、m_Fontが指定したプロパティーの値になる
ってかんじかなぁ?
Debug.Printで見てたらそんな感じだった。

っていうかもうわけわけがわからなくなりました
86 :02/10/12 22:20
>>85
回答に耳を傾けようとせずに1人でオナニー報告なら
ここに書き込む必要はないと思うが。

はっきり言ってウザい。
87897:02/10/12 22:43
ようするに
/プログラム本体/
Private Sub Command1_Click()
  OriginalControl.Font="Arial"
End Sub

/コントロール/
Public Property Get Font() As Font
  Set Font = m_Font

  Debug.Print m_Font ' Debug.Print Fontでも同じ??
End Property

で、プロパティーに指定した値が表示されればいいんですよ。
上のだと、指定する1個前の値が表示されます。

他のサンプルを見ると上の中に
Set hogetext.Font = m_Font
ってのが入っていてそこで変更されるのでOKなようです
自分が作っているのはラベルとか使わないで自分で描画するものなので、
この方法は使えないと思うのですが。
画面全体のWidthやHeightからタスクバーの幅を引いた大きさを取得するにはどうすればいいのでしょうか?
フォームを全画面表示しないでウィンドウ表示として画面いっぱいにフォームを表示させたいです。
89デフォルトの名無しさん:02/10/12 22:59
タスクバーの幅はデスクトップの幅+αじゃないのか?
それとも右か左にタスクバー置いてんのか?
まあどっちにしてもタスクバーのウィンドウハンドルを取得してGetWindowRect汁。
>>88
GetSystemMetrics
91897:02/10/12 23:00
聞いてばっかりじゃあれなので・・
>>88
SysInfo OCXってのをつかってもできるようですがまぁAPIを使って
SystemParametersInfo
と引数SPI_GETWORKAREAで取得できるようです。
92897:02/10/12 23:01
ありゃ、遅かった
ってか3人ともAPIが違う(w
>>89
タスクバーっていっぺんに上下左右すべてにおくことが出来るの知ってるのか?
まぁ正確にはタスクバーといわんかも知れんが。
9488:02/10/12 23:10
「フォームサイズ」
縦幅と横幅をあわせて幅と言ってしまってました。
指摘どおり
GetSystemMetrics
GETWORKAREA
を調べてみます。
こちらはavailable.widthのようなかんじなのかな、
と予想してキーワードavailableで探していたのですがそれではなかったみたいです。
>>897
だから79が指摘してるだろ。
> OriginalControl.Font="Arial"
の部分が間違ってるんだよ。

これでもわからん?
お前のコードはFontをセットしてるんじゃなくて
Fontを参照してからそのNameプロパティを設定してるんだよ。
9688:02/10/12 23:14
GetWindowRect
もやってみます。
9795:02/10/12 23:14
>>897じゃなかった。 >>87だ。
>>95
聞く耳を持たないバカなんだから放置しとけ。
99897:02/10/12 23:22
>>95
それやるとオブジェクトが必要ですって表示されるんですが。
じゃぁSet Original〜〜じゃなくて
Original〜〜だけでOKにするにはどうしたらよいのでしょう?
>>98
聞いてますよ。
10095:02/10/12 23:32
>>99
> それやるとオブジェクトが必要ですって表示されるんですが。

そりゃオブジェクトを指定してないからだろ。
お前がやりたいことは
 Fontのセット
 フォント名(Font.Name)の指定
このどっちなのよ?

Fontのセットなら多分 Set Original〜〜じゃないと無理。
フォント名の指定だけなら Property Getだけでできる。
101897:02/10/12 23:40
>>100
フォントのセットです。
>Fontのセットなら多分 Set Original〜〜じゃないと無理。
これがどうにも意味わからんです。
他のサンプルみるとそんなの使ってないし。
10295:02/10/13 00:01
>>101
Property SetでなくProperty Letで宣言すれば
Set無しで代入可能だな。
ただその場合も代入元には文字列でなく
Fontオブジェクトを指定しないといけない。
10388:02/10/13 00:04
ありがとうございます。
指示されたキーワードで調べていくうちに
ttp://hp.vector.co.jp/authors/VA013031/tips/api001.htm
このページに出会ったのでコピペして実行してみたところできました。
104897:02/10/13 00:12
>>102
ええ。最初はLetでやってたんですけど
デザイン時のプロパティーのフォントの項目って、
コモンダイアログから選択できるようになってるじゃないですか。
Public Property Let Font(fFont as Font)
でやってOrigonalControl.Font〜でやるとオブジェクトが必要ですってでるので
(っていうかオブジェクトについてよく分かっていない)
他のサンプル見るとどれもPublic Property Set Font(fFont as Font)
となっているのでまねしてみたのですが。
105897:02/10/13 00:17
あうあう
>コモンダイアログから選択できるようになってるじゃないですか。
で、LetじゃなくてSetでやるとそれができるようになりました。
10695:02/10/13 00:25
>>104
なんか今イチ意味がわからんけど、
> Public Property Set Font(fFont as Font)
これが普通だと思うし、こう宣言したなら
Set OrigonalControl.Font =
にしろよ。

一体Setの何が不満なの?
サンプルではSetを使ってないと言うならそのサンプルを上げてみ。
そもそもVBなんぞでオブジェクト指向やろうとするから混乱する。
ポインタ知らないと扱える代物じゃない。
>>107
オブジェクト指向とポインタにいったい何の関係が?
ポインタでつまずいたの?
引数付でプログラムの呼び出しって出来ないのでしょうか
shell や call では上手くいかないようです。
messege.exe open (openが引数)みたいにやりたいんだけどダメ?
Shellでできます。
111897:02/10/13 00:59
サンプルです
’プログラム本体
Private Sub Command1_Click()
  uctUDText1.Font = "Arial Black"
End Sub
’ユーザーコントロール
Private pFont As Font 'フォント
Private Sub UserControl_Initialize()
  Set pFont = Text1.Font
  Text1.Text = 10
End Sub
'プロパティの値を読みこみ
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
  Set pFont = PropBag.ReadProperty("Font", pFont)
  Set Text1.Font = pFont
End Sub
'プロパティの値を保持
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
  PropBag.WriteProperty "Font", pFont
End Sub
Public Property Get Font() As Font
  Set Font = pFont
End Property
Public Property Set Font(mnewFont As Font)
  Set pFont = mnewFont
  Set Text1.Font = mnewFont
  PropertyChanged "Font"
End Property
これだとばっちりです。
これはTextコントロール上に文字を表示していますが、そうじゃなくて自分で文字列を描画します。
具体的にはText1.textがUserControl.Paintになるかんじです
11295:02/10/13 01:12
>>111
だから上で書いたようにそのコードの
> uctUDText1.Font = "Arial Black"

というのはFontをセットしてるわけじゃなくて、
Fontを参照してそのNameプロパティを設定してるだけなんだよ。

> Public Property Set Font(mnewFont As Font)
このプロシージャは全然使われてないんだよ。
11395:02/10/13 01:15
あ、全然使われてないこともないな。
114897:02/10/13 01:19
>>112
なるほど。ようやく意味が分かりました。
Setの部分はデザインモード用ですね。
で、Textコントロールを使わず、
自分で描画するようにすると1回分遅れて反映するのですが、どうすればよいのか・・
>>114
> Setの部分はデザインモード用ですね。
わかってねーな。
116897:02/10/13 01:32
>>115
む、その通り。わかってないです
117D:02/10/13 03:31
MSDNの”ユーザー コントロールへの Font オブジェクトの追加”読んでみて。
平たく言うとフォント変更時にイベントを発生させるにはstdFontオブジェクトを
WithEvent 付きで宣言する必要があります。
これでFontChangedイベントが発生するようになります。詳しくはMSDNで

ここからは>>897の本文からの予想です。
独自のコマンドボタンを作りたいようなので以下を参考にしてみてください。
MSDNとは違いますが。
手法−ユーザコントロールにLabelコントロールを貼り付けFontを変更する。
コントロール名はlblCaptionにします(紛らわしいけど)あとAlignment
を中央揃え.背景を透明にしておきます

つづく
118D:02/10/13 03:32
続き

Public Property Get Font() As StdFont
    Set Font = UserControl.lblCaption.Font
End Property
Public Property Set Font(ByVal vNewValue As StdFont)
    Set UserControl.lblCaption.Font = vNewValue
    With UserControl.lblCaption         ’ラベルの縦位置を中央に
        ’念のため空にならないように...
        .Height = UserControl.TextHeight(UserControl.lblCaption.Caption & "X") 
        .Top = (UserControl.Height - UserControl.lblCaption.Height) / 2
    End With
    PropertyChanged "Font" 
End Property
Private Sub UserControl_Resize()
    With UserControl.lblCaption         ’ラベルの縦位置を中央に
        ’念のため空にならないように...
        .Height = UserControl.TextHeight(UserControl.lblCaption.Caption & "X") 
        .Top = (UserControl.Height - UserControl.lblCaption.Height) / 2
        .Width = UserControl.Width
        .Left=0
    End With
End Sub
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
    PropBag.WriteProperty "Font", UserControl.lblCaption.Font, Ambient.Font
End Sub

これならフォントの初期化はラベルコントロールがやってくれます。
かなり偏った予想ですがFontについてはこれでいけるんじゃないんですか?
思いつきなんで自信ないです突っ込み求ム
119897:02/10/13 07:30
>>平たく言うとフォント変更時にイベントを発生させるにはstdFontオブジェクトをWithEvent 付きで宣言する必要があります。
おおおこれですこれ!!
続きの部分、わざわざ申し訳ありませんでしたが、使うまでもなくできました。
ありがとうございました。
120D:02/10/13 11:26
>続きの部分、わざわざ申し訳ありませんでしたが、使うまでもなくできました。

http://www.oak.dti.ne.jp/~niku/R3_temp.swf?inputStr=%82%BF%82%C6%8E%63%94%4F%81%49

Public Function GetLupin(DT As String)

Dim Buff As String

For i = 1 To Len(DT)
    Buff = StrConv(Mid(DT, i, 1), vbFromUnicode)
    If LenB(Buff) = 1 Then
        GetLupin = GetLupin & "%" & Trim(Hex$(AscB(Buff)))
    Else
        Buff = Format$(Hex$(AscW(Buff)), "@@@@")
        GetLupin = GetLupin & "%" & Right$(Buff, 2)
        GetLupin = GetLupin & "%" & Left$(Buff, 2)
    End If
Next i
End Function

121897:02/10/14 15:00
>>120
ワラタ
122デフォルトの名無しさん:02/10/14 16:12
最近VB使ってると、何もしないのに
ぽかぽか落ちるのは何故っすか?

XPのSP1入れたあたりから異様に落ちやがります。

>>122
VB.NET買えというMSからのメッセージです。
まぁ、状況を詳しくいえないんじゃ解決せんだろな。
VB6で透明レイヤーって作れますか?
>>125
>透明レイヤー

VBユーザは何の前提も無くすぐこういう言葉を使う。
だからDQNだと言われるんだ。
127デフォルトの名無しさん:02/10/14 19:05
>>125
126ではないが言葉の意味を咀嚼して書いて欲しい。
On Error GoTo 0
ってどこ行くの?
>>128
10行目?
>128
On Error Resume Nextを無効にするの
131128:02/10/14 22:16
>>129
Sub temp()
1
2
3

End Sub
として、Go Toはプロジージャ(モジュールって言うんだっけ?)内の〜行目に飛ぶ命令としても使えるってこと?
132128:02/10/14 22:18
>>130
おっ ありがと
エラー用のコードをぜんぜんかかないから知らなかった
>>131
遙か昔はどこにでも飛んで行けた。ある意味最強の制御構造。
134128:02/10/14 22:23
>>133
へぇ 最近のVBじゃ封印されたのか
-----------------------------------
(ヘルプより)
GoTo line

引数 line は必ず指定します。引数 line には、任意の行ラベルまたは行番号を指定します。
------------
ラベルはコロンをつけるやつだけど、行番号とはなんや?
>>134
使えるのか・・・行番号。さすがBASIC
136128:02/10/14 22:26
>>135
今頃おもいだしたけど
10
20
30
というやつか。いいねえ。この行番号愛用しよう。
1行目から数えた行の番号だと思う
138128:02/10/14 22:30
>>138
1行目って言うと、
Formモジュールの先頭からかあ。
番号重複せずに行番号つかうのもめんどそうだなあ。
確かにプロシージャレベルだと
Command1.10
ってかんじに10行目を指定するはずだものね。
139128:02/10/14 22:31
>>137ですた
>>138
↓のことでしょ。

Sub Main()
10 GoTo 30
20 MsgBox "A"
30 MsgBox "B"
End Sub
141128:02/10/14 22:48
>>140
とすると、やっぱり
これから実行されるGoToとおなじプロジージャにある行番号
にジャンプできるのか。
構造化、オブジェクト指向文化にドロップキックかますような仕様だなぁ・・・。
10
20
30
・・・
なんともいえずいい味だしてる。
144デフォルトの名無しさん:02/10/14 23:12
うーん・・・世代交代を感じるなあ・・・
昔は行番号がいやでいやで、エディタでプログラム書いて
あとから番号付けるプログラムに入れてソース作ってたよ。
追加プログラムの挿入がめんどっつい
>>144 なるほど
>>144
GOTOは使わない方向で?
最初はじめたころ、BASIC=エディタ、デバッガ、環境だったなあ
当時は行番号のないプログラムってのが理解できなかった
RENUM 100
150デフォルトの名無しさん:02/10/14 23:51
>>147
gosubを使う。ラベル張って。
N88BASICの頃だよ。
>>150
うんうん、厨房の頃FORとかWHILEとか使わず全部IFとGOTOでやってたんで。
今考えるとあのときは才能に満ちあふれてたなぁ・・・それが今はどうだ・・・。
ラベルもRENUMもなかったN60BASICが最強かも
153デフォルトの名無しさん:02/10/14 23:59
>>151
いやまったく。
ROM-BASIC時代を懐かしむご老人方のスクツか、ここは。
VBしらないもん
win95にMDACインストールしようと思って間違ってMDACの後にDCOM for windows95
をインストールしてしまいました。
おかげでMDACが正常にインストールできないんですが誰か直す方法知ってます?
私はMSX-BASICにはまってた素チンです。
ピポッ♪
159デフォルトの名無しさん:02/10/15 11:50
行番号ってさ 最初は 10 ステップで 作るんだけどさ、
デバッグしていったり 機能追加していくと その 10の中を1 ステップずつで やってたりして
苦労したよなぁ。
で、よく 行番号を最初から 振りなおさせたりしてよ、意味ねぇじゃんかってカンジ〜
RENUMするだけじゃん。別にたいしたことではない。
161デフォルトの名無しさん:02/10/15 13:01
改行コードを挿入するにはなんと書いたらいいですか
Label1.Caption = Label1.Caption & 改行
162 :02/10/15 13:06
vbCrLf
>>162 vbctrl だと思ってた。
vbCrLf か ありがとう
vbNewLineでもいいぞ
>>164 使い分け方が
ありますか
>>165
好みで使い分けろ
>>165
ここまでヒントもらったんだから後は自分でやったら
>>167 ついでにききました。

 ありがとうございました。
169デフォルトの名無しさん:02/10/15 22:46
SetCaptureって、ReleaseCaptureせずになんども実行しても問題ない?
170デフォルトの名無しさん:02/10/16 00:14
Dim a as Long
Dim b as Long

a = &HFFF
b = &HA0A0
b = b Or (&H100000 * a)

予定ではこうなるはずが b = &HFFF0A0A0

オーバーフローになります
どうすればいいんでしょうか?
171デフォルトの名無しさん:02/10/16 00:21
>>170
Long型整数の取りうる値の範囲を16進表記で調べてみるといい。

>>170
桁そろえて文字列としてくっつけとくとか。

&H100000 * aがLongに収まらないのでアウト。
&H表記はLongの範囲まで。
OrもLongまで。
>>170
あるいは、Byte配列に小分けに入れておいて、バイト単位で論理和を
取るとか。いぜれにせよ、でかい桁は自前で処理。
174なつみ:02/10/16 01:01
Docmd.setwarnings false
Docmd.Domenultem acFormbar,acEditMenu,8,,acMenuVer70
Docmd.Domenultem acFormbar,acEditMenu,6,,acMenuVer70
Docmd.setwarnings True
Docmd.close

この部分なのですが、今一なにをやろうとしてるのかが分りません
。Docmd.Domenultemは現在、Docmd.Runcommand に変わっているのは分っている
のですが・・・。
それでも今一なにをやろうとしているのかが分りません。
どなたかお願いいたします。

175デフォルトの名無しさん:02/10/16 01:09
ゲ製作技術で回答が無かったのでこっちに来ました。
VBはインタプリタでないのにエミュレータより遅いのは何故?
VBのコーディングで何が一番ネックで何に気をつければいいんでしょう?
スーファミ時代のアクションゲームくらい出来ませんか?

>>175
エミュレータより遅いってどうやって判断したの?
GDIではなく大半のエミュレータ・ゲームで使用しているDirectXを
使えばVBでも十分早いと思いますが。
177175:02/10/16 01:23
50キャラのアニメ処理+スクロールでチラツクから。
DirectXはやった事ないけど、BitBltより速いの?
>>177
ダブルバッファぐらいやってるよな。
179175:02/10/16 01:31
ダブルバッファって
裏画面描きの事かな?
それとも描画をパスする事かな?
どっちもやってないけどそれよりもスクロールだけでも遅い。
>>179
もしかしてちらつきの原因は遅いからだと思っている人?
181デフォルトの名無しさん:02/10/16 04:02
VBScriptを使って↓の文字列
<a name="a1"></a><dt><a href="menu:1">1</a>
<a name="a2"></a><dt><a href="menu:2">2</a>
<a name="a3"></a><dt><a href="menu:3">3</a> を
 ↓
<dt>1
<dt>2
<dt>3 に変換したいんですが、この場合は正規表現を使わないといけませんか?
もしよろしければサンプルコードを書いていただければ助かります。
さすがにReplaceで変換を1000行ベタ打ちするのはアレなんで。(w
>>181
ループとinstr()やmid()を使えばできるだろ
>>181
なにが「(w」だ。なんで赤の他人のおまえにヘラヘラされながら
仕事らしきものを丸投げされにゃいかんのだ?
アフォか。死ね。
>>174

(1) ヘルプという言葉はご存知ですか?
(2) ヘルプの存在意義、使用方法はご存知ですか?
(3) ヘルプの起動方法、キーワードの検索方法はご存知ですか?
>>184
いや、DoMenultemで何をやってるかまでは
ヘルプじゃわかんないんだよね、これが。
その前にスレ違いのような気がするけど。
186デフォルトの名無しさん:02/10/16 09:50
画面&印刷で文字幅を倍とかにしたいんだけど
CreateFont の nWidth ってどうやって値を出すの?
187デフォルトの名無しさん:02/10/16 10:14
VBから端末にExcelがインストールされているかどうかを、もっとも簡単にチェックする方法を
教えてもらえませんでしょうか。やっぱレジストリかなんかですか?(あまり知識ないっす…)
>>187
CreateObjectでExcel.Applicationを作成しようとして
エラーになるかどうかで判断できるんじゃないか?
189187:02/10/16 11:13
エラー処理で!
簡単っちゃあ簡単ですが、チョトビクリツしました。
どうもです。
>>183
別におまえに聞いてるわけじゃないとおもうが。そこまで腹が立つか?

>>181
でもどんな頼み方でもソース書いてくれっていうやつはむかつく
自分で考えたり、調べたり、自分で書いたソースを試したりする気まったくなしって感じが。
絶対に進化しないからなこういうやつは。
まあ文章からして、かしこくなる気がない雰囲気むんむんだけど
191デフォルトの名無しさん:02/10/16 11:23
>>186
何もしないで 倍幅にする方法

判→半リ
頼→束頁


欠点:できる文字が少ないということ(w
>>190
VBScriptに何熱くなってんの?
193デフォルトの名無しさん:02/10/16 11:33
倍角は こうか
イ立
|口
>>186
GetTextMetricsでフォントの情報取得して、
それのnWidthを倍にしてやればいいんじゃないの?
195186:02/10/16 11:44
>>194
tmAveCharWidth で近似値がとれますた
どうもです!
VB6で透明レイヤーって作れますか?
>>196
前スレまで行って前のお前の発言拾ってこようか?
すごいレスついてたぞ。
>>197
拾って!


>>198
VBユーザってどうして前提なしでそういうふざけたこと抜かすかなぁ。
だからDQNっていわれるんだよ


>>198
じゃないがもう少し説明してくれ。




こんな感じ。
>>192
そのVBScriptがわからないおまえははやく死ねwププププププ
ウキャキャキャキャキャ
>>200
いや、特に役にもたたんだろ。あれ。

ある特定のOSの特定のブラウザで動くクライアントサイド言語。
なぜかOS開発元ですら使われていないバッチ用スクリプティング言語。
元となる簡単言語は発売終了。
202デフォルトの名無しさん:02/10/16 16:25
Chmのヘルプファイルをプロジェクトプロパティーのヘルプファイルに登録して、
F1キーで呼び出しをしているのですが、ちゃんと表示されるときとされないときがあります。
さっきはダメだったけどプログラムを再起動したら表示されるなど
一体なぜなのでしょうか??
vbs便利だよ
204デフォルトの名無しさん:02/10/16 17:45
RGBカラーから、それぞれ赤、緑、青の要素をとりたいのですが、
どうすればできますか?
>>204
256*256*256
>>204
R ... &HFF And 値
G ... (&HFF00& And 値) \ &H100
B ... (&HFF0000 And 値) \ &H10000
207デフォルトの名無しさん:02/10/16 18:25
ありがと〜。できました
>>207
ここはオマエだけが質問しオマエだけが回答を得ているワケではないのだがな
209デフォルトの名無しさん:02/10/16 18:33
windows2000なんですけど、VB5入れても大丈夫でしょうか?
VB6ほか、コンパイラは入っていません。
ネットで検索したのですが、不具合がありようなことが
書いてあったりで心配です。
>209
まぁ普通に考えると大丈夫。
どんなソフトでも大小あれトラブルはつきもの。
>>208 変な煽り
ここは本物のVB初心者が集うところなんですね。
津 魔 蘭
>>212 当然だろ?
>>212
スレタイ見ろ
>>211
辺でもないんでないかな。
207がありがとだけだったから何のだよ!と208は思ったのだろうきっと。
207が何へのレスは明示的じゃないからな。ま、206へだと思うが。
>>209
MSからサービスパックダウソして入れておいた方が良いよ。
VB5の初期のバグでなんらかの条件で起動できなくなる罠が有ったと思う・・・・(´・ω・`)アレニハマイッタ
>>216
> VB5の初期のバグでなんらかの条件で起動できなくなる罠が有ったと思う・・・・(´・ω・`)アレニハマイッタ

OSのSPもVBのSPも関係ないよ。なるときゃなる。
プロジェクトを置く場所に全角を含むパスをつかっちゃだめなのさ。

予期せぬエラーがでたら
HKEY_CURRENT_USER\Software\Microsoft\Visual Basic\5.0\RecentFiles
ここの日本語パスを含む分の項目を削除すりゃ復活する。
>>217
情報サンコス。当時ネット環境無かったし田舎故に全然情報が無くて、
根性でプログラミングする度ソフトをサイインスコしていた・・・・(´д`;)バカダ

でも確かVBを直接立ち上げないでソースを開けば全角バグも恐くなかった気がする。
>>181
暇だからレス・・ってもう終わったかのぉ・・・

i = 0
Do
i = InStr(i + 1, srcS, "menu:")
If i = 0 Then Exit Do

i = InStr(i + 5, srcS, ">")
If i = 0 Then Exit Do

ii = InStr(i + 1, srcS, "<")
If ii = 0 Then Exit Do

retS = retS & "<dt>" & Mid$(srcS, i + 1, ii - i - 1) & vbCrLf
i = ii
Loop

srcS に突っ込めば retS に出てくる。汚くてみづらいソース(´д`;)スマソ
220219:02/10/17 02:52
TAB入れ替えるの忘れてた・・・・(´・ω・`)ヤテマタ
221181:02/10/17 08:37
>>182,219
ありがとうございます。

>>190
すみません。
おい!おまいら教えてください!
IFの判断文の内容(IF xxxx Then の xxxx 部分)を動的に作成したいのですが、うまい方法はないですか?
>>222
動的にってなに。
テキストボックスかなんかに A=10 AND B=50 とか
入力させてそれを反映させたいってことか?
人に聞くならまずやりたいことを分かるように説明せえよ
>>223
申し訳。おっしゃる通りです。
>>224
いや、俺も偉そうに言った割には、実現方法は皆目見当つかんのだけどねw
というか、もし俺が例で書いたAだのBだのがソース上の変数名とイコールであれば、
実現は限りなく不可能に近いと思う。
>>222
構文解析すれば良いんだろうけど、結構面倒だよ・・・
>>222
というか、なんでそんな事が必要なのか教えて下さい。
仕様から見直すべきかも。
>>222
Script Controlを使えばできるかも
229228:02/10/17 19:32
>>222
サンプル書いてみた。

Dim vbs As Object
Set vbs = CreateObject("MSScriptControl.ScriptControl")
vbs.Language = "VBScript"
vbs.ExecuteStatement "A=2"
Debug.Print vbs.eval("A+2")
Delphiなら簡単!
231デフォルトの名無しさん:02/10/17 20:14
ほ〜。
そんなことが出来るんだ
っていうかなんかVBScriptのほうが優れてる点が結構ない?
ショートカットの作成もVBScript使えば出来たりするし。
本家がしょぼく感じてしまふ。
その辺はVB.net移行すればOKってことなんかいな?
>>229
Script 便利(;´Д`)ハァハァ
でもOSが古いと動かない罠。まぁ今時そんなマシン余り無いか
233デフォルトの名無しさん:02/10/17 20:25
VisualStudio.netProffesionalのVB.NETでシリアルポートを
利用するためにMSCOMM32.OCXを使いたいのですが、インストールの
方法がわかりません。古いバージョンのものをSYSTEM32ディレクト
リにコピーしても「このActiveXコントロールを使用するライセンス
がありません」と怒られてしまいます。インストールの仕方を教えて
ください。
234D:02/10/17 21:29
>>233
多分コピーしただけではライセンス情報は登録されないはず。
http://www.microsoft.com/japan/developer/library/vccore/_core_activex_controls.3a_.licensing_an_activex_control.htm#_core_licensing_support
ここに詳しく載っています。
ただその前にRegsvr32.exeでレジストリに登録する必要もあるような気が...
これで駄目ならVB6インストールすれば?ライセンスはあるんでしょ。
>>231
> っていうかなんかVBScriptのほうが優れてる点が結構ない?

文字列を「命令」として実行する機能は、モダンなインタプリタ言語なら持っているものも多い。
(極論するとファイルから読んで実行するか、文字列から読むかだけの違いだからね。)

> ショートカットの作成もVBScript使えば出来たりするし。

用途が違うからねぇ...。
236D:02/10/17 21:43
そういえば.netではComなんかのレガシーデバイスへのアクセスって拒否されますね
APIのCreateFileは使えるみたいだけど。
そのためのP/Invokeじゃろうなあ
>>231
すべてはVBの部品。VBの素晴らしいところは何でも部品になることさ。

>>232
MSCOMM32.ocxがVB6の付属物なので、まずVB6のダミーアプリをインストールするべし。
そうでなけりゃそもそも君はライセンス違反。旧VBが入ってないなんてことはないよな?

>>236
どういう状況?Marshalクラス使えばたいていできるような・・・
>>238
>すべてはVBの部品。VBの素晴らしいところは何でも部品になることさ。

だとすると他言語に勝るモノは何もないことになると思われ。
>>231
一度コンポーネントにすればあとは数行ですむではないか。
それこそOO(良くわからんが)であろう。
>>239
何でも部品にできるというのは素晴らしいと思うが。
社長みたいなもんさ。馬車うまのように働かされている君にはわかるまい。
とか煽って欲しい?
VBScriptの方が後発だからねぇ。
Delphiの方が後発だからねぇ。
とかなんぼでもいいようはある。
VB6のランタイムって MSVBVM60.DLL ってことですか?
>>238
> すべてはVBの部品。VBの素晴らしいところは何でも部品になることさ。

VBで使える部品ならすべて他の言語(C++等)上でも使えるんだから
ちょっと違うと思う。

VBのよいところは、これらの部品を誰でも手軽に利用できる
(利用するための手続きが非常に簡単)ところではないかな。
>>244
> VBのよいところは、これらの部品を誰でも手軽に利用できる
> (利用するための手続きが非常に簡単)ところではないかな。

本当にそうか?
Delphiの方がよっぽど簡単なように思える。
246デフォルトの名無しさん:02/10/18 02:09
VBでDNSからMXレコードだけ抜き出そうとして、
あまりの面倒くささに挫折仕掛けのところです。

リクエストは送って、バイト配列で受け取ることも出来ました。
肝心のホスト名を抜き出すまでが面倒くさくてたまりません。
誰か代わりにやってください。
もしくは、ソースのリンク教えてください。
>>245
本当にそうか?
どっちもたいして変わらないように思える。
Delphi、UIと操作性だけVBにならんかな。
VBに慣れきった漏れにはフォームデザイナとかコードエディタが使い難く過ぎる・・・。
>>248
Delphiに慣れてください。
250233:02/10/18 11:17
234,238さん、レスありがとうございます。
mscomm32.ocxは書籍についてきたものなのでVB6のライセンスは持っていません。
VisualStudio.netにはシリアルポート制御できるActiveXコントロールは付属して
いないのでしょうか。
251デフォルトの名無しさん:02/10/18 11:46
VisualBasic6.0で質問です。

ある計測用プログラムを作っているのですが、その際にPictureボックス内に
例えば6000個のデータで計測データの推移を波形にして表示するようにして
います。

これを、Picture1.Line (x1,y1)-(x2,y2)のようにして描画しているのですが、
もうちょっと速く描画できないものかと思っているのですが、全然分かりません。

何か方法はないでしょうか? ヒントでもあったら教えて頂けると助かります。
>>251
Polylineで調べてみ
APIだけど段違いに速くなるぞ
253251:02/10/18 11:55
>>252
APIはほとんど使ったことがないので苦手ですが、それ覚えておきます。
ヒント有難う。
>>253
非表示にしたPictureBoxにAPIでLineを描画して全部書き終わったら改めて表示させるとか
255251:02/10/18 12:44
>>254
有難うございます。

しかし、APIはほとんど分からないので時間が繋りそうです。

前にも文字列の回転描画(印刷)で、えらく手間取ったし、今でもあのコードは自分
で書いたのによく分からないという・・時々失敗するし(´Д`;)
256デフォルトの名無しさん:02/10/18 14:05
作成したexeをタスクバーの右下のところに常駐させておくにはどうしたらよいのでしょう?
>>256
Shell_NotifyIcon
258256:02/10/18 15:55
>>257
ありがとうございます。
>>256
Delphiならコンポーネントペタッで終了!簡単!
TextボックスのプロパティにEnabledとLockedがありますが機能的に同じものですよね?
261デフォルトの名無しさん:02/10/18 16:29
画像ビューアを作りたいのですが、どうすればええでしょうか?
テキストベースならDAO・ADOでやれるのですが、そんな機能が
今の自分の知識の中からは出てきません。
Linerのようなビューア領域を作ることが目標です。
どうかご教授を。
262256:02/10/18 16:39
>>257
ヘルプで見れないよぅ。
>>259
Delphiか・・・。勉強してみようかな・・・。
でも今はVBで作ったやつをタスクバーにいれたい。いったいどうすれば・・・
>>260
Enabledでは文字が灰色になっちゃわなかったっけ?
そうしたくないときにLockedを設定するとよいと本で読んだよ。
ほかにも違いありそうだけど。
>>262
MSDN Google
264260:02/10/18 17:03
>>262
そうしたくないときにはLockedですか。
ありがとうございます。
>>264
色で使い分けるのは本来の使い方ではない。
該当するオブジェクトにフォーカスを移したくない時にはEnabledを使うんではないかい。
266デフォルトの名無しさん:02/10/18 18:53
EnabledをFalseにしちゃうと選択もできないでしょ?
Lockedは書き換えのみを不可にするんだとおもう
267デフォルトの名無しさん:02/10/18 19:02
明るさを調整したいのですが、
RGBで(50,100,150)だとして、明るさを+10とすると
(50+10,100+10,150+10)
ではなくて、相対的にやるものなんですよね?
PaintShopProの明るさをいじっていたら
(100,100,0)でどんどん明るくしていくと(255,255,0)になったあと
Bの値も増えていって最終的には(255,255,255)になりました。
どういう処理をしているのでしょうか?
268260:02/10/18 19:59
>>265-266
使い分けたいときは使い分けるし、どちらでもいいときはどちらも使ってみます。
>>267
乗算でない?他が255になって0のが残ってたら1ずつ足してくとか
>>267
HSVとかに変換してやってるんじゃないの
271267:02/10/18 22:20
PaintShopProのはHSVのを元にしてやってるのかな。
う〜む、難しそう
>>260
EnabledとLocked、機能も違うし、意味も違う。
Enabledは使用不可にする。
Lockedは入力不可にする。ただし・・・

>>266
>Lockedは書き換えのみを不可にするんだとおもう

Shift+Insertでペーストできるので書き換えできちゃうんだけどね。
さらにOSがWin2000の場合だと右クリックメニューの制御が不完全とかあるし。

>>250
ない。gotdotnet.comのどっかで
Rs232.vbってファイルをダウソできるみたい。誰かさん作のCOM用クラス。
273デフォルトの名無しさん:02/10/18 22:30
>>267
よくわからんが
> RGBで(50,100,150)だとして、明るさを+10とすると
> (50+10,100+10,150+10)
> ではなくて、相対的にやるものなんですよね?
といってるのだから結果のRGB値を取得したんだろう?
その値はいくつなの?
274デフォルトの名無しさん:02/10/18 22:49
.netになって落ちこぼれちゃった人ってどれくらいいる?
うちの会社だと8割くらいいて
全員戦力外通告が出てるw
1割は非.netの会社へ転職するみたい。
残りは受け皿無しだってさ。
276デフォルトの名無しさん:02/10/18 23:25
>>274
切り捨ての口実のような気がしないでもない。
しかし、さしあたっては仕事に関係ないとしても、
.NETへの適応力は1つの目安にはなる。
これからも開発環境は変わっていくだろうから。
>>274
.netさまさまだな。
糞PGが8割もいるお前の糞会社が少しはまともになれるチャンスじゃんか。
仕事があることが唯一の取り柄だったVB
279デフォルトの名無しさん:02/10/19 00:01
>>256
APIはVBでは標準扱いでは無いみたいなのでMSDNではCで引かないと出てこない。
Public Type NOTIFYICONDATA
       cbSize As Long
        hwnd As Long
        uID As Long
        uFlags As Long
        uCallbackMessage As Long
        hIcon As Long
        szTip As String * 64
End Type
Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
Public Const NIM_ADD = &H0
Public Const NIM_DELETE = &H2
Public Const NIF_ICON = &H2
Public Const NIF_MESSAGE = &H1
Public Const NIF_TIP = &H4
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_RBUTTONUP = &H205
Public nIcon As NOTIFYICONDATA
280デフォルトの名無しさん:02/10/19 00:03
Sub ADDIcon(pForm As Form, MSG As String)
    nIcon.cbSize = Len(nIcon)
    nIcon.hwnd = pForm.hwnd
    nIcon.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
    nIcon.uCallbackMessage = WM_MOUSEMOVE
    nIcon.hIcon = pForm.Icon
    nIcon.szTip = MSG & vbNullChar
    Shell_NotifyIcon NIM_ADD, nIcon
End Sub
Sub DELIcon(pForm As Form)
    nIcon.cbSize = Len(nIcon)
    nIcon.hwnd = pForm.hwnd
    Shell_NotifyIcon NIM_DELETE, nIcon
End Sub
フォームに
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    Select Case x \ Screen.TwipsPerPixelX
        Case WM_LBUTTONDBLCLK
        Me.Show
        DELIcon Me
        Case WM_RBUTTONUP
            PopupMenu Popup_Menu, 2
    End Select
End Sub
XPにVisual stadio 6.0 インストールしても大丈夫?
>>281
だめな理由をのべよ?
MSのサイトに自社製品のXP対応リストがないわけ無いと思うが。。。
283281:02/10/19 03:11
すみません、MSサイトに書いてありました・・・
XPは.NETじゃなきゃだめと思い込んでたんで・・・
284デフォルトの名無しさん:02/10/19 13:17
デフォルトルートと、プライマリDNSの値を取得したいのですが、
やり方があれば教えてください
285デフォルトの名無しさん:02/10/19 13:54
シューティングゲームの当たり判定でAPIのRectInRegionを使いたいのですが、
RECTの使い方がいまいちわかりません。誰かご教授下さい。
>>285
(´-`).。oO(RECTすら自分で調べられないならシューティング諦めた方が・・・)
>>285
RECT データ構造体は、次の形式です。

typedef struct tagRECT {
 LONG left;
 LONG top;
 LONG right;
 LONG bottom;
} RECT;

RECT 構造体は、四角形の左上隅と右下隅の座標を定義します。

この無茶苦茶わかりやすい説明のどこが「いまいちわからない」のか...。
(´-`).。oO(VBでシューティングか。ご苦労なこった)
289デフォルトの名無しさん:02/10/19 14:36
284…
290285:02/10/19 14:49
>>287さん
その辺りは調べたんですけど・・・実際どういう風に使えばいいのかがよくわからないんです。
考えろよ( ´,_ゝ`)プッ
いやなら
BASICでも買えば?
292デフォルトの名無しさん:02/10/19 15:02
>>284
TCP/IPユーティリティのコマンドでわかるんでない?
DNSサーバ−nslookup
ルート−route
それぞれのコマンドでわかると思う。
293285:02/10/19 15:04
>>291
考えてもわかんないんです。どーしましょ?
>>293
だったら無理だろ・・・
295284:02/10/19 15:07
>>292
コマンド使えば読み出せるのはわかってるんですけど、その方法だと、
nslookupが存在しないwin98とかに対応できないんで…
nslookupが内部的にどうやって取得してるかが知りたいです。

説明不足ですみません
296デフォルトの名無しさん:02/10/19 15:08
297デフォルトの名無しさん:02/10/19 15:27
>>295
じゃーwininet.dllのHttpQueryInfo APIとか。
このdllのAPI使えばいいような気もする。
298284:02/10/19 15:43
>>297
それってDNSのアドレスとか取れるんでしょうか…
HTTP関係しか無理な気も…

Dependency Walker使ってwininet.dllものぞいてみましたが、
それらしい関数は発見できませんでした。

APIスレに行ってきます
>>293
HSP使えば?
300300:02/10/19 15:48
Ruby!
301285:02/10/19 15:57
できました。RectInRegionだけじゃだめだったんすね、皆様お騒がせしてスマソ
>>293
本かえっツーの
マイコンベーシック
303デフォルトの名無しさん:02/10/19 16:51
オブジェクト変数への参照が設定されているかどうか
調べる方法ってあるのでしょうか?
If obj Is Nothing Then
305デフォルトの名無しさん:02/10/19 16:54
>>304
ありがとう
306モモ:02/10/19 20:35
助けてください
データフォームウィザードを使ってアクセスのデータベースに接続したい
のですがデータベースファイルを選択するとき、ファイルの名前をいれても
「認識できません」ってでます。私はどうすれば、、、

ソフトはvb6、アスセス2002です
307 :02/10/19 21:17
>>293

素のWin95サポートする必要があるなら、SNMP API使ってみたら?
MIB の書き方はこの辺↓とか RFC とか読んで。
ttp://www.ibiblio.org/pub/micro/pc-stuff/ms-windows/winsnmp/winsnmp_mib/
>>307
誤爆か ?
309TOM:02/10/19 21:30
サウンドカードのマイク入力からいれた音の大きさの値を取得したいんですが、さっぱりです。
どなたか教えてくっさい。
VB6です。
310307:02/10/19 22:08
誤爆しました。ごめんなさい。
>>306
昨日来ました。と書かないとただのマルチポストだ。
後、何で無視されたのかどうして考えない?

どうすれば?か。その仕事向いてない。やめろ。
312まこっちゃん:02/10/19 22:32
今日からVBはじめました。
文字列の代入と比較の記述が同じに見えてなりません、さっぱりです。
どなたか教えてくっさい。

誤爆しました。ごめんなさい。
>>312
(´д`;)・・・・なんか良くワカランが、がんがれ・・・・
本当に何を言ってるかわからん。
>>312
仕様です。
>誤爆しました。ごめんなさい。
ここが意味不明
VBって何のためにあるの?
プログラムを組むため
>>317
MSが儲けるため。
320デフォルトの名無しさん:02/10/20 01:00
DirectDraw7のプライマリサーフェスの作成でつまづいた。
VB5だから駄目なのかな?
定数すら定義してくれん・・・鬱だ。
321デフォルトの名無しさん:02/10/20 01:04
>>320
VBでDirectXなんか使えるわけねーだろ。
ポインタも使えないくせにどうやって使うつもりだ。
322デフォルトの名無しさん:02/10/20 01:07
7から使えるよ。
>>321
baka?
>>321
真性あふぉ( ´,_ゝ`)プ
>>321
VBでもポインタ弄れますが?
326D:02/10/20 01:36
>>312
=には
"等しくする""等しい"って意味がある。
A=B <-この場合代入
If A=B Then <-等の場合比較
として扱われます。CやJavaなんかでは代入は=比較は==でしたがVBやSQLではどちらも=を使用します。
また、チョット変則ですが
A=(0=0) では変数AにTrue(-1)が入ります。
何はともあれ、がんばってください。
>>326
うわあ。VBの演算子ってきもちわるいですねえ。
Cよりまし。なんで比較が==なんだよ。!=とかあるし。
>>327
まぁ他言語から来たならそうだろうねぇ・・・
時々他言語で条件文の == を = にして無駄に時間を費やすこともしばしば(´д`;)
文字列の比較は eq も使えるよ。
331デフォルトの名無しさん:02/10/20 06:27
cでいうstrtokみたいな関数ってVBにもあるの?
VBの文字列ってよくわからないね。
>>331
作れば?まぁ、状態を保持する必要があるからクラスにした方がいいけど。
>>331
文字列がなくて文字の配列でしか表現できない言語よりマシ。
>>333
こうして人をだめにしていく言語か・・・。

無いなら作れよ。と。
>>334
お前が作れば。
336デフォルトの名無しさん:02/10/20 06:52
>>335
VB厨よ。これ以上バカな発言を繰り返すな。
バカな発言って
「VBの文字列ってよくわからないね。」
のことか?
338デフォルトの名無しさん:02/10/20 06:56
>>337
あぁ そりゃバカだ。誰だ言った奴(藁
strtokって仕様がキモイね。
340まこっちゃん:02/10/20 07:10
愚和〜っし!!
VB虫の人達は親切でした。蟻が父さんでーす。
=が同じなのは目の錯覚ではなかたのですね、覚えたのれす。
eqというのもあるのですね、これと=では同じ意味なのれしょうか?
参照比較と文字列比較とかの違いはないのれすか、さっぱりです。

これが理解できたらForに学習を移りますのれす。難しそうなのれす。
んじゃーサバラ!
>>340
本当にVBを知らない奴がいた(藁
>>339
そだな。実際複数から呼び出すとボロボロになる仕様。
343まこっちゃん:02/10/20 07:38
しょしんしゃスレなので知らなくてもワラ割れる筋合いはないのれす。
しょしんしゃスレに煽りにだけ来てるほーが(わるい)のれす。
>>343
初心者と素人は明確に差別されます。
・初心者
これから学ぼうとしているもの

・素人
何も知らないもの
>>345
・入門者
これから学ぼうとしているもの

気持ちの問題であって結局は素人。
>>345
だとすると上の彼らは素人だと思われ。
348まこっちゃん:02/10/20 08:13
>初心者と素人は明確に差別されます。
>気持ちの問題であって結局は素人。

いってる事がわからないのれす。さっぱりです。
しょしんしゃorしろうとスレを荒らす事がカコわるいとおもてる
かどうかの見解も聞きたいものれす。
初心者かどうかはともかく、
妙な日本語を使うのは質問する相手に失礼じゃないのかね?
350まこっちゃん:02/10/20 08:43
>妙な日本語を使うのは質問する相手に失礼じゃないのかね?

(藁 とか使っといて

妙な日本語失礼じゃないのかね?
妙な日本語失礼じゃないのかね?
妙な日本語失礼じゃないのかね?

プ。
話そらすなよ(麦
>>350
(麦ワラタ。
後、攻撃する相手変わってるぞ(孫
(孫ワラタ(壺
>>331
用途によるけど、デリミタが一種類なら Split() 使うのが吉。
>>349
激しく同意。
見ててうざい。
355 ◆dcIDMhC9ck :02/10/20 12:46
えーと質問です。環境はXP+VB6SP5

とあるByte配列の中身が空っぽであるか調べたいのですが
どうやればいいのでしょうか。String型と全然勝手が違って悩んでいます。
String型なら If TempStr = "" Then こう、簡単なんですが・・・。
356 ◆dcIDMhC9ck :02/10/20 12:56
おっと、age
357320:02/10/20 13:14
解決した。
約1.4倍速度UP。こんなもんなのか・・・ちょっとがっかり。
>>357
1.4倍が妥当なのか知らんが、ちゃんとハードウェアアクセラレートは
使用されてるか? エミュレーションモードで動いてたりしないよね。
>>355
動的配列? 静的配列?
動的配列なら、UBoundかなあ?
静的配列なら、初期化時は全部0が入ってると思うよ。
>>359
動的配列だろ。
静的配列なら、初期化時と同じだからと言って空っぽと言う判断するのはどうかと思うよ。

とりあえず、

If UBound(A) < LBound(A) Then
  ' 空っぽの処理
EndIF

でいいと思う。
Dim A() As Byte

If UBound(A) < LBound(A) Then
 MsgBox "(゚∀゚)"
End If


アヒャった
362361:02/10/20 18:11
↑スマソ
×アヒャった
○エラった
363モモ:02/10/20 18:16
>>311
うう、自分でがんばってみます。
364 ◆oRZMgJMAzg :02/10/20 18:33
String型のデータの中から
指定した行数目のテキストを抜き出したいのですが
こういう場合は自作関数しかないのでしょうか?
とりあえず自作のがあるんですけど微妙に動作がおかしいんです。
そんな事しないでも出来る方法、あるんでしょうか?

無いのなら、このソースのどこら辺がマズってのるのか
教えて頂けるでしょうか。
365 ◆oRZMgJMAzg :02/10/20 18:34
Public Function GetLineX(ByVal Text As String, ByVal LineIndex As Long) As String
'ErrChk "GetLINE"
Dim LL As Long
Dim NN As Long
Dim CRLFpos As Long
Dim CRLFpos_ As Long
CRLFpos = 0
LL = LineIndex - 1
For NN = 0 To LL '指定行目まで繰り返す
CRLFpos_ = CRLFpos
CRLFpos = InStr(CRLFpos + 1, Text, vbCrLf)
If CRLFpos = 0 Then 'もう改行が見つからない時
If NN = LL Then '指定した行数目だったら
GetLineX = Replace(Mid(Text, CRLFpos_ + 2, Len(Text) - CRLFpos_ - 1), vbCrLf, ""): Exit Function
Else
GetLineX = Replace(Mid(Text, CRLFpos_ + 2, Len(Text) - CRLFpos_ - 1), vbCrLf, ""): Exit Function
End If
End If
Next NN
If LL = 0 Then '1行目が指定されていた場合
GetLineX = Replace(Mid(Text, 1, CRLFpos - 1), vbCrLf, "")
Else
GetLineX = Replace(Mid(Text, CRLFpos_ + 2, CRLFpos - CRLFpos_ - 1), vbCrLf, "")
End If
End Function



366 ◆oRZMgJMAzg :02/10/20 18:35
うわぁ激しく半角スペース削られた・・・

Public Function GetLineX(ByVal Text As String, ByVal LineIndex As Long) As String
'ErrChk "GetLINE"
Dim LL As Long
Dim NN As Long
Dim CRLFpos As Long
Dim CRLFpos_ As Long
CRLFpos = 0
LL = LineIndex - 1
For NN = 0 To LL '指定行目まで繰り返す
  CRLFpos_ = CRLFpos
  CRLFpos = InStr(CRLFpos + 1, Text, vbCrLf)
  If CRLFpos = 0 Then 'もう改行が見つからない時
    If NN = LL Then '指定した行数目だったら
      GetLineX = Replace(Mid(Text, CRLFpos_ + 2, Len(Text) - CRLFpos_ - 1), vbCrLf, ""): Exit Function
    Else
      GetLineX = Replace(Mid(Text, CRLFpos_ + 2, Len(Text) - CRLFpos_ - 1), vbCrLf, ""): Exit Function
    End If
  End If
Next NN
If LL = 0 Then '1行目が指定されていた場合
  GetLineX = Replace(Mid(Text, 1, CRLFpos - 1), vbCrLf, "")
Else
  GetLineX = Replace(Mid(Text, CRLFpos_ + 2, CRLFpos - CRLFpos_ - 1), vbCrLf, "")
End If
End Function
>>362
アヒャった、でいいじゃないか。
368361:02/10/20 19:00
>>367
実行時エラー '9': インデックスが有効範囲にありません。

てな感じでエラーが出マスタ。まぁ一度も領域指定してないから当たり前だけど・・・
>>364
Split(text,vbCrLf)(lineindex)
>>364
Public Function GetLineXX(ByVal srcS As String, LineIndex As Long) As String

 Dim L&, LL&, LineCount&

 LL = 1
 srcS = srcS & vbCrLf
 For LineCount = 1 To LineIndex
  L = InStr(LL, srcS, vbCrLf)
  If L = 0 Then Exit For

  If LineCount = LineIndex Then
   GetLineXX = Mid(srcS, LL, L - LL)
   Exit Function
  End If
  LL = L + 2
 Next

 GetLineXX = ""
End Function

とか
371360:02/10/20 19:23
>>368
俺も気になったが、Dim A() As Byte の直後に A = "" としとけば大丈夫。(ちなみに、UBound(A) = -1, LBound(A) = 0 になる。)
逆に、>>355 が未使用の状況まで知りたいと言うなら、エラートラップするしかないと思う。
>>371
> 逆に、>>355 が未使用の状況まで知りたいと言うなら、

動的配列だったら普通はこっちだと思うが。
373361:02/10/20 19:38
>>371
まぁポインタ見れば良いんだろうけどね。

If StrPtr(A) = 0 Then
 MsgBox "(゚∀゚)"
End If

隠し関数は余り使わない方が良いんだろうけど、漏れはこうやってる(´д`)もっと良い方法キボーン
そもそも、>>355の「配列が空」ってのがどういう意味なのかが良くワカランです
374320:02/10/20 20:01
>>358
はぅあ!!エミュレーション?
HALだかHELだかって奴ですか・・・
よくわからんがBLTFASTの方を使ってるんで。
ノートだから余計なハードは無いと思う。
375デフォルトの名無しさん:02/10/20 20:03
>>373
余計なお世話的説明補足。
結果的にそれで判定できてるみたいだけど、なんか勘違いというか「ん〜」てなとこがあるので。
Byte配列と文字列は相互に変換できる。StrPtrの引数は文字列なのでByte配列が文字列に変換される。
そのときByte配列が空だと(空文字ではなく)vbNullStringに変換される。そのためStrPtrで判断できる。
ちなみにvbNullString=""はTrueなのでIf CStr(a) = "" Thenでも判定できる。
377361:02/10/20 20:30
>>376
なるほど。指摘さんこす
378デフォルトの名無しさん:02/10/21 00:05
VisualBasicのラベルに立方センチメートルのような上付きの表示を
出したいんですが、できますか?
379なつみ:02/10/21 00:12
超初心者なんだけど誰か優しく教えてくれる人いる???
380デフォルトの名無しさん:02/10/21 00:13
BMPファイルの任意点のRGB値を10進数で抜き出したいです.

んで,たとえばR値の入ってるアドレスを
バイナリ形式で読み取って文字列として格納.

それをAscで10進数に変換できるのかな?
と思ってやってみたんですが,R値が小さいときにはできてるけど,
大きくなると負の値が戻ってくる.どうしてでしょう?

本気初心者なんで,見当違いのことしてるかもしれませんが
ヒントでも関連ページでもなんでもいいので,お願いします.
>>374
ちょっとまて。
それすら知らないでDirectXで性能が出ないなんてほざいてるのか?
糞とはいえあまりにもDirectXとカードメーカーが不憫だ。
>>380
通常、嫌でも10進表現になると思われ。
>>381
そもそもVBでDirectXの時点で間違ってる。
384なつみ:02/10/21 00:28
Dim stDocName As String
Dim stLinkCriteria As String

(略)

DoCmd.OpenForm stDocName, , , stLinkCriteria

・・・・上の構文を良く見かけるんだけど、stdocname,stLinkCriteria
自体に何か意味があるんでしょうか?必ずこの文字を使わなければ
いけないんですか???初心者ですみません。
385380:02/10/21 00:30
>>382
そっか.通常はなりますか.
とりあえず方向性は間違ってないってことがわかっただけでも
助かりますた.ありがとうございます.

なんか,他の要因探ってみま〜す.
>>380
「バイナリ形式で読み取って文字列として格納」ってあたりが怪しい。
どうやって読み込んでいるのかわからんけど(まぁ想像はできるが)、
文字列で読み込むときに2バイト分よみこまれてるんじゃないかな。
「1バイト」を読み込んでいるつもりだろうけど、
「1文字」が読み込まれてるように思える。
1バイト目が漢字コードなどの1バイト目だと、
次のバイトも読み込まれて「1文字」が読み込まれるよ。(仕様)
漢字の文字列にAscするとシフトJISコードが帰ってくるけど、
シフトJISってのは&H8000以上だから
負の数がかえってきているんだと思う。(この辺はわかるよね?)

そもそも文字列にして格納する必要がないと思うけど?
Byte型の変数でゲットすれば普通に求められると思うぞ。
387デフォルトの名無しさん:02/10/21 00:34
ピクチャボックスに書いた線等が保存するときにはなくなってるのですが、
どうすればいいでしょうか?
388デフォルトの名無しさん:02/10/21 00:38
>>387
Picture1.Pictureではなく、Picture1.Imageを指定する
389381:02/10/21 00:38
>>383
まぁ禿同だけど、VB厨にも夢をみせてやれ。
390デフォルトの名無しさん:02/10/21 00:42
>>386
>そもそも文字列にして格納する必要がないと思うけど?
>Byte型の変数でゲットすれば普通に求められると思うぞ。

あれま.そんなんできるんだ.
てか,それでできました.すげぇ.別にすごくないんだろけど.

おかげさまでここ何日かの悩みが解決しますた.
いや,まぢで何日も悩んでたんですよ.ほんまありがとうございました.
391デフォルトの名無しさん:02/10/21 00:48
388さん
ありがとです。
あとautoredrawがfalseになってましたw
392デフォルトの名無しさん:02/10/21 00:50
>>380
Long型使わないとマイナスになる
>>384
必ずしもその変数名である必要はないはずです。
おそらくヘルプのサンプルにそう書いてあったので、
みんなコピペしたのだと思います。

ちなみにうちの会社では、Callが無い点と、
String型の変数の前置詞がstだという点で不許可です。
394なつみ:02/10/21 01:31
393様!!!!!!!!!
どうもありがとう!!!!!!!!!!!!
さらに質問してもいい?
395なつみ:02/10/21 01:38
>>393
なんのキーワードで探すとヘルプでみれますか??
わりこんでしまって、もうしわけありませんが質門いいでしょか、
sub main()内で
wininet.dllを使用してFTPをしようとしたところ、
FTPの処理はうまくいくのですが、すべての処理の
終了後にVBが終了しなくなってしました。
これは、何か開放できないインスタンスが悪さでもしてるのでしょか。

どなたかなにか、ヒントを教えていただけないでしょうか。
お願いします。

環境は、Windows2000 ,Visual Basic6.0です。
>>395
だからOpenFormメソッドの[使用例]で、
と思ってみてみたら
> DoCmd.OpenForm "社員", , ,"氏名 = '山田 一郎'"
日本語だった。
まあ、気にすんな。
>>389
VBでDirectX使えるんだから夢ってほどのことでもないでしょ。
399396:02/10/21 02:44
すみません自己解決できました、
ルータの設定変えたら直りました。
ご迷惑おかけしました。
>>399
ルータの設定で直るわけ無いだろ。どっかにバグがある。
401396:02/10/21 02:55
>>400
でも、本当にルータの設定で直ってしまいました。
バグはあるかもしれませが、環境に依存するとヤツだと思いますので、
いろいろ試してみて、なんとか調べ上げようと思います。
レスありがとうございました。
>>401
直ったんじゃなくルータが正しく設定された状態でのみ正しく動くだけだろ。
なぜルータが正しくないときは終了しないのか原因を究明しろよ。
403396:02/10/21 03:02
>>402
それを調べると>>401で書いたつもりですが、言葉がたりませんでした。
申し訳ありません。
>>383
なぜ間違っているのかを教えてくれ。
405デフォルトの名無しさん:02/10/21 07:40
動的配列に要素が一件も入っていないことを確かめるにはどうしたら
いいのでしょうか?

今は、配列に入れた数をカウントする関数を使っているのですが、
無駄な変数を増やしているような気がしてなりません。
>>405
こういうことか?

Private Declare Function SafeArrayGetDim Lib "oleaut32" (psa() As Any) As Long

Private Sub Command1_Click()

 Dim a() As Long

 If SafeArrayGetDim(a) = 0 Then MsgBox "ないよ" Else MsgBox "あるよ"

End Sub
407デフォルトの名無しさん:02/10/21 08:04
>>406
そういうことでございますた。
ありがとうございます。

oleaut32っていうのは標準に入っているdllですか?
>>406
おいおい、嘘を教えるな。
APIを使うなら自分が理解してから使え。

>>407
406は結果オーライになってるだけだ。
素直にエラートラップを使って判定しろ。
409デフォルトの名無しさん:02/10/21 10:11
ListBoxで 画面上に表示されているリストの一番上のindexは、
どうやって取得したらいいのか教えてください。
ListBoxで スクロールさせたとき、上に表示されているアイテムのindexを
取得したいんです。
410デフォルトの名無しさん:02/10/21 10:37
>>409
TopIndex
411デフォルトの名無しさん:02/10/21 10:41
>>405
動的配列に要素を入れるときに、
lngCnt = lngCnt + 1
とし、単純にカウントするのが一番だ。
>>411
俺も。
UBoundとか使ってトリッキーに(ってほどでもないか・・・)処理してると、
思わぬ落とし穴があったりする。
シンプル・イズ・ベストってやつだね
413デフォルトの名無しさん:02/10/21 10:49
ListBOXで ホイールのイベントを取得するには どうしたらいいのでしょうか?
WebBrowserコントロールに表示したページをクリップボードへコピーしたいのですが
できますでしょうか?
通常のWebブラウザで表示した画面をPrintScreenでコピーすると
入りきらない部分がスクロールしないと表示できないので困っています。
そこでVBでやろうと思ったわけです。
415デフォルトの名無しさん:02/10/21 11:11
>414
API知ってる??
知ってたらできるよ。
>>415
WebBrowser.hWnd をOpenClipbordに渡せばいいでしょうか?
表示されてない部分までコピーできるもんなの?
418デフォルトの名無しさん:02/10/21 12:02
&H8000000F&
といったシステム予約済みのカラーから
実際のRGBの値ってどうやったら求められますか?
419デフォルトの名無しさん:02/10/21 13:30

s = Hex(lbl_tujou.BackColor)
s = String(8 - Len(s), "0") & s
R = "&H" & Mid(s, 7, 2)
G = "&H" & Mid(s, 5, 2)
B = "&H" & Mid(s, 3, 2)
420デフォルトの名無しさん:02/10/21 13:32
>>1
>悪いことは言わないから(w)、転職、または他部門への異動を真剣に
>検討して頂きたい。

検討するから やとってくれ(w
R = c And &HFF
G = (c And &HFF00&) \ &H100
B = (c And &HFF0000) \ &H10000
>>398
>>404
そういう書き込みはするな
まあバカはほっとけ
423418:02/10/21 15:05
いや、&H8000000F&とかの&H8で始まるやつって
システムカラーの設定によって変わってくるから、
実際の色は何色かを求めたいのですが。
ちなみに&H8000000F&はボタン表面の色。
俺、前にVB6+DirectX8でフライトシミュレーター作ったけど
パフォーマンス的にもなんの問題もなかったよ。
DirectInput使ってジョイスティックの制御もやったけど、
そちらも特に問題なし。
まあ、一応参考までに・・・
425421:02/10/21 15:26
>>423
あはは。確かに。
GetSysColorじゃだめなの?
426418:02/10/21 15:37
いやぁ決まってるわけじゃなくて、設定できるようにしたいので。
まぁ&H8000000Fなら〜ってかけばいいのですが。
どっかに点を描画してその色を取得するって方法は思い浮かびましたが
あまりスマートじゃないすよね。
427デフォルトの名無しさん:02/10/21 15:42
ああ ちなみに ボタンの色とか Windowsの根本の色は、デスクトップの設定で 変わっちゃうんだよなぁ〜〜〜。
>>426
設定するならSetSysColorsでは?
429デフォルトの名無しさん:02/10/21 15:53
>>418
GetSysColor
430デフォルトの名無しさん:02/10/21 15:54
ListBoxによぉ、リアルタイムで追加してるんだけどさ、
なんか、けっこう画面が ちらついて うっとしいんだわさ。
これって ちらつかないようにできないのかねぇ。
だれか やり方、知ってたら 教えてよ。
431418:02/10/21 16:03
むぅ。
んじゃ
If oleColor = &H8000000F then
 o_Color=GetSysCollor(COLOR_BTNFACE)
ElseIf
 '以下同様のやついっぱい
Else
 o_Color = oleColor
End If
Debug.Print o_Color
ってやるしかないかいなぁ
432421:02/10/21 16:13
>>431
何言ってんだか。

o_Color = GetSysColor(oleColor And &H7FFFFFFF)
でいいじゃん。
>>430
知ってるしすぐ書けるけどよぉ〜
調べればすぐ分かっしよぉ
それって人に聞く態度じゃないよなぁ
だから教えないよ
434421:02/10/21 16:16
432の補足。
Dim oleColor As Long だとすると、

If oleColor >= 0 Then
  o_Color = oleColor
Else
  o_Color = GetSysColor(oleColor And &H7FFFFFFF)
End If
435418:02/10/21 17:03
おおお、なるほど。
ちゃんと対応してるのね
436422:02/10/21 18:49
>>424
俺がバカでした。作ってもみないで不可能だと思い込んでいました。俺逝ってよし。
437436:02/10/21 18:54
名前間違い。
×422
○383
>>1の書き込み見ると毎日が鬱です
439デフォルトの名無しさん:02/10/21 20:13
WebBrowserコントロールで、
navigate2 メソッドのヘッダーにて User-Agent を決めることは出来ましたが、
表示されているページのリンクを押した際されるページ切替の際は User-Agent を変える方法がわかりません。
どうやればいいかわかりますか?
>>438
気にしてるのはあんただけだよ。
おれもたちなおれません
442デフォルトの名無しさん:02/10/21 20:21
すいませんあの聞きたいんですけど
y=sin(x)cos(2x+3)exp(x)
のグラフを表示させるプログラムを作らなくてはいけないんですけど・・・誰か教えてもらえませんか?
444デフォルトの名無しさん:02/10/21 20:33
>>442
宿題をきくスレは ここじゃない!
446デフォルトの名無しさん:02/10/21 20:37
わかりました宿題のスレ教えてもらえませんか?
>>446
自分で解かないと意味がないだろ。
宿題という言葉の意味を百回ほど辞典で調べろ
449デフォルトの名無しさん:02/10/21 22:16
VBで作った2つのプログラムをディストリビューションウィザードを使って
パッケージを作ってインストールしました。
2つのプログラムは別のアイコンなのですが、アプリケーションの追加と
削除の画面をみると両方とも同じアイコンになってしまいました。
こんな現象が起きたことあります?

ちなみにVB6.0です。
>>442
御見積書を先生に出してやれ!
>>450
チョトワラタ
>>450
(・∀・)イイ!
453デフォルトの名無しさん:02/10/22 09:43
テキストボックス内テキストの縦方向の配置を変えたいんだけど
EM_SETRECTでメッセージを送信しても何も起きん
どうやるのか教えてくれ
454453:02/10/22 09:51

MultiLineをTrueにするとできるようだな
そういう仕様なのか?
455デフォルトの名無しさん:02/10/22 10:20
メニューを動的に階層を作る事は出来ないのか?
>>455
参考になるか知らんが、興味あったから調べてみたら
下記のような情報を発見。
書いてあるようなAPIを駆使すればできるのかもね。
ttp://www.users.gr.jp/ml/archive/vb/4887.asp
俺はVBは抑止欄のだが、
menuのメソッドを実行時に呼び出せばできるのでは?
458デフォルトの名無しさん:02/10/22 11:41
SQL関連(VB)になってしまうのですが教えてください。

"((DateDiff('yyyy',[生年月日],#10/1/2002#))" & "Between 50 AND 70" & "))"
ある特定の年齢を求めようとSQL文を作成したのですが、
Between 50 AND 70の部分で問題が発生してしまいました。

この部分を変数にした場合、
変数="Between 50 AND 70"

プログラム上では、
変数="Between '50' AND '70'"
となってしまい、
SQL文として認識されません。
何かよい方法はないでしょうか?
459デフォルトの名無しさん:02/10/22 11:46
>>458
なぜ肝心の、その文字列を作成する部分のソースを出さないの
というか、どうやったらそういう風になるのかが不思議・・・
興味age
460デフォルトの名無しさん:02/10/22 11:55
Private Function XXX_年齢条件(ByVal 指定日付 As String, _
ByVal 指定年齢 As String) As Boolean

On Error GoTo XXX_年齢条件_Err
Dim SQL As String

SQL = "INSERT INTO TBL_XXX検索_該当条件 ( OOOO番号, 22番号 ) " _
& "SELECT 22名簿.OOOO番号, 22名簿.22番号 FROM "22名簿 " _
& "WHERE ((Not (22名簿.OOOO番号) Is Null) AND (Not (22名簿.99年月日) Is Null) AND " _
& "((DateDiff('yyyy',[生年月日],#10/1/2002#))" & 指定年齢 & "))"

DoCmd.SetWarnings False
DoCmd.RunSQL (SQL)
XXX_年齢条件 = True

XXX_年齢条件_Exit:
Exit Function
XXX_年齢条件_Err:
XXX_年齢条件 = False
MsgBox Str(Err) & vbCrLf & Err.Description, _
vbOKOnly + vbExclamation + vbMsgBoxSetForeground, "error"
Resume XXX_年齢条件_Exit

End Function
461デフォルトの名無しさん:02/10/22 11:56
#10/1/2002# = cdate(指定日付)
462デフォルトの名無しさん:02/10/22 12:19
>>458
×…プログラム上では
○…プログラム実行中では
>>460
それのどこにBETWEENの文字が??
464デフォルトの名無しさん:02/10/22 13:23
誤り

Public Function 指定年齢抽出(ByVal 条件1 As String, _
ByVal 条件2 As String) As String
'指定年齢 or 期間 取得
If IsNull(条件1) Or 条件1 = "" And IsNull(条件2) Or 条件2 = "" Then
'未入力
指定年齢抽出 = ""
ElseIf 条件1 <> "" And IsNull(条件2) Or 条件2 = "" Then
'○歳以上
指定年齢抽出 = ">=" & "'" & 条件1 & "'"
ElseIf IsNull(条件1) Or 条件1 = "" And 条件2 <> "" Then
'○歳以下
指定年齢抽出 = "<=" & "'" & 条件2 & "'"
Else
'○歳以上 ○歳以下
指定年齢抽出 = "Between " & "'" & 条件1 & "'" & " and " & "'" & 条件2

End If
End Function
465デフォルトの名無しさん:02/10/22 13:24


Public Function 指定年齢抽出(ByVal 条件1 As String, _
ByVal 条件2 As String) As String
'指定年齢 or 期間 取得
If IsNull(条件1) Or 条件1 = "" And IsNull(条件2) Or 条件2 = "" Then
'未入力
指定年齢抽出 = ""
ElseIf 条件1 <> "" And IsNull(条件2) Or 条件2 = "" Then
'○歳以上
指定年齢抽出 = ">=" & 条件1
ElseIf IsNull(条件1) Or 条件1 = "" And 条件2 <> "" Then
'○歳以下
指定年齢抽出 = "<=" & 条件2
Else
'○歳以上 ○歳以下
指定年齢抽出 = "Between " & 条件1 & " and " & 条件2

End If
End Function
466デフォルトの名無しさん:02/10/22 13:34
>>463
お手数かけました。
指定日付に"2002/10/22"、指定年齢に"Between 50 AND 70"が入ります。
指定年齢に入っている時点で変だったので混乱してしまいました。

動作はテキストボックスに○歳以上と○歳以下の項目があり、
このどちらか、または両方を入れて該当年齢抽出するものです。

○歳以上と○歳以下を判別するプログラムが間違っていました。
>>464
>>465
×…"'" & 条件1 & "'"
○…条件1

レコードセットや数値を抽出すには "'" & 条件1 & "'" で良いのですが、
文字列の場合は、そこまでの手間はいりませんでした。
SQLにロジックが偏重したプログラムはいじりたくないなあ。
468デフォルトの名無しさん:02/10/22 14:38
>>467
気持ちはわかるが、表現が簡潔過ぎて、意図するところがイマイチ不明。
(>>460のソースが汚くて読みにくい、という趣旨なら、禿げしく同意)
Windows2000にVB5.0をインストールしたけどスタートメニューに
何も登録されませんでした。しかたなくvb5.exeを起動してますが
これってどうなの?
470467:02/10/22 15:30
>468
RDBをいじる以上、現状はどうしても>460 のようにSQL文字列を
切ったり張ったりしなけりゃならない。別に>460 が悪いわけじゃない。

でも、こういったSQL文字列操作処理のバグとりは憂鬱。
なーんかもっとOOらしくスマートにできんかなあと思って。

(>460のソースは日本語変数名や関数の切り出し方に問題があるけど、
うちの連中のソースに比べたら綺麗なほうです。)
471フォローになってないが・・・。:02/10/22 15:34
>>470

> うちの連中のソースに比べたら綺麗なほうです。

胃薬をどーぞ。
472デフォルトの名無しさん:02/10/22 18:07
早くこのスレ消化しようぜ
>>1の書き込みがマジでウザイ
474デフォルトの名無しさん:02/10/22 20:24
クリスタルレポートをやっているのですが、
たとえばB4横を使用して、右半分、左半分とページ的に扱うにはどうしたらいいのでしょうか?
具体的には、
□□ ← B4を横にしたとして、
まず左がわにレコードを印刷していき、下まできたらつづきは右側、というようにです。

475D:02/10/22 21:39
>474
プリンタの設定をB4横にします。
[書式][セクション][ディティール][ラベルのレイアウト]
で”ユーザー定義サイズ”を選択してサイズを設定します。
ラベルサイズで設定されたサイズで面取りされます。
縦から横オプションボタンをオンにします。

宛名ラベルを参考にしてください。
476デフォルトの名無しさん:02/10/22 21:45
VBScriptはWeb制作板でするべきなのに、なぜこのスレッドでも受け付けているんですか?
そこにコードがあるから
>>465
どうせ年齢なんて範囲がある程度決まっているんだから...

Public Function 指定年齢抽出(_
 ByVal 下限 As String, _
 ByVal 上限 As String) As String

 If IsNull(下限) Or 下限 = "" Then 下限 = "0"
 If IsNull(上限) Or 上限 = "" Then 上限 = "999"
指定年齢抽出 = "Between " & 下限 & " and " & 上限
End Function

でいいと思うけど。
479474:02/10/22 22:46
>>475
なんとか宛名ラベルを使用して、
また、1ページの表示できる最大レコード毎にページカウントを印刷ワーク作成時に入れて、
サブレポートにてページ毎の表を作ることができました。

今度は、線を任意に表示・非表示がやりたいのですが、
通常のテキストフィールドには式により設定できるのに、線オブジェクトの非表示項目には式がありません。
どうにかならないでしょうか。
>>456
どんもです。
AppendMenuかInsertMenuItemを使えばいいみたいですね。
少し作ってみたけれど、変なところにメニューが出来てしまいますたヽ(´Д`;)ノ
まぁ、色々チャレンジしてみますです。
有難うございますた
481D:02/10/23 00:23
>>479
CrystalReportめったに使わないんでてきとーな返事なんですが、
線の上にテキストフィールドを非透過で置いてその表示/非表示を切り替えてみれば?
出来るかどうか分からないけど?
482デフォルトの名無しさん:02/10/23 10:04
PopupMenu でモーダルなフォームを表示すると
そのフォームで PopupMenu が使えんようだ
回避策を教えてくれ
483デフォルトの名無しさん:02/10/23 12:54
おれは、別に 1の書きこみなんて 気にしないぜ〜〜
優秀だからよぉ(w

ま、初心者のスレに 転職しろってのも変な話だよなぁ。
しかも、みんな 職業プログラマみたいないい方だし。
前スレのレスが よっぽど 気に入ったらしいな(w
484デフォルトの名無しさん:02/10/23 12:55
別に消化しなくたっていいんだぜ。
新スレたてればいいんだ!
ここは スレデフレになってないしな。
って スレデフレって なんやねん(爆)
>>483
うん。俺も気にしない。まぁどうでもいいんだから、あんなの無視しとけって。
無視できない奴は実は>>1でわざと気づかせようとしていると思われるぞ(w
マッチポンプですた
487D:02/10/23 14:48
言われてむかつくことは内心自分が認めていること。
ものすごいバカにバカって言われてもむかつくよ。
4891:02/10/23 15:48
( ´,_ゝ`)プッ
VC++やJava知っている人がVBやるとどれぐらいで覚えられる?
1週間ぐらい?
>>490
VBは奥が深いよ
492D:02/10/23 16:51
便利そうで使わないもの。
"CallByName"!
誰か使ってる?
493デフォルトの名無しさん:02/10/23 16:55
>>489
>>>2-999
>悪いことは言わないから(w)、転職、または他部門への異動を真剣に
>検討して頂きたい。技術のない技術者(言葉が矛盾しているが w)の
>存在は、顧客にとっても、同業者にとっても、迷惑(足手纏い)以外の
>何者でもない。

おまえも入っているという罠
>>490
VBは比較的かわってて
C++ユーザーとかは入り込みにくいというのをよく聞く。
>>490
VBとVCとJavaでどれが他に有ってどれが他の言語に無いのか
まとめられればいいんだけどねぇ。
496デフォルトの名無しさん:02/10/23 18:56
>>495
言語や開発ツールの比較対照をまとめたサイトなんていくらでも
あるだろーが。

>>494
入る必要がない。
>>496
言語仕様まで踏み込んだ比較対照サイトは知らない。
>>497
>>490が入る必要がありそうだ。
>>499
かわいそうだね。
>>500
別に。その程度でかわいそうだなんて甘いよ。
502デフォルトの名無しさん:02/10/23 19:24
WebBrowserコントロールで、
navigate2 メソッドのヘッダーにて User-Agent を決めることは出来ましたが、
表示されているページのリンクを押した際されるページ切替の際は User-Agent を変える方法がわかりません。
どうやればいいかわかりますか?
MDIの画像編集ソフトを作っています。
(子フォームにはPictureboxがあり、それを使って編集。名前はPIc)
画像を読み込んだときに、PIcはAutosizeをtrueにして
読み込む画像のサイズに合わせているので良いのですが、
フォームもPIcが全部入るようにしようとして

ActiveForm.Width = ActiveForm.PIc.Width
ActiveForm.Height = ActiveForm.PIc.Height

とやると、PIcの一部が欠けてしまいます。どうすれば良いでしょうか。

開発環境はVB6+SP3です。
>>503
Borderの分が足りてないだけっしょ。
ex=ActiveForm.Width-ActiveForm.ScaleWidth
ex=ActiveForm.Height-ActiveForm.ScaleHeight
ActiveForm.Width = ActiveForm.PIc.Width+ex
ActiveForm.Height = ActiveForm.PIc.Height+ey
とかしてみ。
ScaleModeをvbPixelとかにしてるなら
Screen.TwipsPerPixelX/Yで補正してな。
505503:02/10/23 22:07
>>504
なるほど。今試してみたら上手くいきました。ありがとうございます。
AryStr(0)="桃"
AryStr(1)="VB"
AryStr(2)="タニシ"
・・・
という感じで文字の格納されている配列を
文字コード順で並び替えるにはどうすればいいのでしょう?
ならびかえたあと別の配列に入れる予定です。
NewAry(0)="VB"
NewAry(1)="タニシ"
NewAry(2)="桃"

ちなみに正規表現はよくわかりません。
プログラムはずぶの素人が短期間で何かのプログラムを作ろうとする場合
やっぱりCなんかよりもVBマンセーでつか?
508デフォルトの名無しさん:02/10/23 23:27
>>507
経験が無いならという前提で。
VBでもDelphiでもBCBでも一緒。
VC++やBCCは、ちと時間がかかる。
プログラムの種類にもよるけどね。
コンソールアプリならCの方が短時間で何かのプログラムを作れる。
>>506
ソートをオンにしたリストボックスを使う…のは邪道?
511デフォルトの名無しさん:02/10/23 23:30
>>506
左端1文字でソートする。
まずは基本から。
手抜きはあとで教える。
512デフォルトの名無しさん:02/10/23 23:33
>>509

> プログラムの種類にもよるけどね。

要するに、適材適所。

ハイヒールは登山には不向き。
ビキニの水着(あ、別にビキニじゃなくても(^^;)はスキーには不向き。
軽飛行機は宇宙旅行には不向き。つうか、不可能。

そういうこと。
>>506
バブルソート
AryStr(0)とAryStr(1)を比べて1の方が小さかったら0と1を入れ替える。
AryStr(0)とAryStr(2)を比べて2の方が小さかったら0と2を入れ替える。
これで0が最小になる。
1と2を比べて2のほうが小さかったら1と2を入れ替える。
これで1が0の次に小さくなる。

>>507
簡単なデバッグができるようになるまでの研修期間
VB 3ヶ月(9割の人間が習得できる)
VC++ 12ヶ月(5割の人間が習得できる)
514デフォルトの名無しさん:02/10/23 23:44
>>513
3ヶ月は甘過ぎるような気がするけど?

(1) 新卒採用時に能力適性がきちんと見極められている。
(2) 短期集中教育

が実現できていれば、簡単なデバッグは1週間でできるかと思われ。
むしろ、構造化とか、変数のスコープ、OO的な部品再利用のしくみ
(COM等)の方が、教育に時間が掛かるのではないかと?
515507:02/10/23 23:45
>>509
厨な質問でスマソ・・・・・・
コンソールアプリってなんでつか?(;・∀・)スマソ・・・・
516 :02/10/23 23:46
>>510
すばらしいです。
わたしは並び替えだけのためにデータベースをつかわないとかんかなあという大げさなことを考えてました
SQL文でASCやDESCEをつかうのかなあなんて。

>>511
>>513
StrComp()をつかってやるような予想はつけたのですが。
http://www.geocities.co.jp/SilkRoad/4511/vb/strsort.htm
がみつかったのでコピペで手抜きしてみます。

>>510リストボックス使ってみたくなりました。
517デフォルトの名無しさん:02/10/23 23:47
>>513
son-na osoi houhou wo oshieruna.
518デフォルトの名無しさん:02/10/23 23:50
>>515

次の中から選択してください。

(1) コソーリ作るアプリ
(2) コンソメの味がするアプリ
(3) コンサルの業務を支援するアプリ
(4) GoTo >>1 : End

※ ちなみに、推奨する選択肢は(4)です。w
519517:02/10/23 23:56
バブルソートって隣接交換法だよね?
隣のものと比べるんじゃないの?

AryStr(0)とAryStr(1)を比べて0の方が小さかったら0と1を入れ替える。
AryStr(1)とAryStr(2)を比べて1の方が小さかったら1と2を入れ替える。
というのを配列の末尾までやると一番大きな値が配列の末尾にくる。
あとはソートする範囲をせばめて同じことを繰り返す。
520517:02/10/23 23:58
519
小さかったじゃなくて大きかったら。
>>513のをコピペして使ったから間違った。。。
521 :02/10/23 23:58
文字コードを返す関数ってなんでしたっけ?
StrComp,StrConv,StrReverse いづれもちがうみたいでした。
Asc。
523デフォルトの名無しさん:02/10/23 23:59
IPを詐称するにはどうしたらいいでしょうか?
すれ違い
525513:02/10/24 00:01
>>515
適性検査の結果で、VB研修コースとVC研修コースに分けます。
さらに、VC研修コースで落ちこぼれた人たちにVB研修コースに行って貰います。

>構造化とか、変数のスコープ、OO的な部品再利用のしくみ(COM等)
を理解してもらおうとは思っていません。

でも、現実はVCいじってても、デバッグはできるけど
フルスクラッチはできないって人が多いでつ。
526 :02/10/24 00:08
>>522
Ascをヘルプで見てみました。まさに求めていた関数でした。
はじめてAscをみたときは絶対値を返すのとおなじ関数なんだなあとおもいましたが、
ヘルプを読んでいくうちに絶対値はAbsだとわかりました。ありがとうございました。

>>506-525みなさま
ありがとうございました。
527513:02/10/24 00:09
>>519
そうでした。
大きな数字が泡のように登ってくるからバブルソートでしたね。
逝ってきます。
>>525
>>構造化とか、変数のスコープ、OO的な部品再利用のしくみ(COM等)
>を理解してもらおうとは思っていません。
こうやってVBユーザに糞プログラマが量産されるんだな(ワラ
529デフォルトの名無しさん:02/10/24 05:16
コンソールアプリって コマンド入力するようなDOS画面などで使うアプリのことかな。
時代を感じる・・・
531デフォルトの名無しさん:02/10/24 09:16
EnumWindowsっていうAPIを使いたいのですが、
VB上で実行すると「DLLが正しく呼び出せません」とエラーがでます。
Exeにすれば動くようなのですが、それではデバッグ時に激しく困ってしまいます。
どうすればよいのでしょうか?
532デフォルトの名無しさん:02/10/24 10:02
>>525
掃溜めなのか(w
JetDBエンジンで
dim db as Database
set db = open(......

if db = 開けた? then
msgbox "やったー"
end if

みたいにオープンできたかどうか調べたいのですができますか?
On errorとかは使いたくないのですが
534デフォルトの名無しさん:02/10/24 11:22
JetDBエンジンで
dim db as Database
set db = open(......

if Err=0 then
msgbox "やったー"
end if
>>534
にゃるほど。さんくす。
> On errorとかは使いたくないのですが

ハア? 無理です。
悪いことは言わないから(w)、
転職、または他言語への異動を真剣に検討して頂きたい。
>>536
いや、説明上そういっただけでほんとは使ってるよ。
on error を必要以上に嫌う・恐れる必要はないよね。
よく使い道を理解した上で、必要最小限しか使わなければいいわけで。
539536:02/10/24 11:54
>>537
説明上って... じゃあ、
> On errorとかは使いたくないのですが
というのは一体どういう意味なの?
>>539
on errorを意味なく嫌ってるアホって意味でしょw
538が書いたとおり、使い方さえ間違えなければいいだけなのに
>>533
On Error使わんと無理。openでこけるよ。
542536:02/10/24 12:02
>>538,540
禿しく同意。
On Error GoTo
がいやで、
On Error Resume Next
は別にいいとかではなくてかな
544デフォルトの名無しさん:02/10/24 12:47
On Error で 飛んで処理させる言語は クズだな。
んなもん、使用した関数で エラーを出して IF文で処理させろよ。
>>531
そのソースを見てみないことには何とも...
>>539
答えがOn Error以外のが欲しかったから。
>>544
> 使用した関数で エラーを出して IF文で処理させろよ。

( ´,_ゝ`) プッ
ネタ?
On Errorで思い出したけど、
On Error使わないで、On Errorに引っかかるようなエラーが出ると
「〜〜〜エラー 〜〜〜が〜〜〜です」とかメッセージボックスでたあと強制終了しちゃうけど、
メッセージボックスだけでだして終了しないようには出来ないの?
On Error Resume Nextしたみたいにエラーだしたあと、その処理を無視して
続行、みたいな。
>>546
じゃあそもそも聞き方が間違ってる。
現在は on error で処理していますが、違う方法は
ないんでしょうか? が正しい。
550531:02/10/24 13:05
Private Sub Command1_Click()
Dim Ret As Long
Ret = EnumWindows(AddressOf Rekkyo, 0)
End Sub

Public Function Rekkyo(ByVal Handle As Long) As Boolean
〜コード〜
End Function
関数Rekkyoの中身に関わらずエラーがでます。
>>549
そうなんだけどね。俺日本語不自由なんだよね。察してよ。
552536:02/10/24 13:11
>>546
541が書いてるように、OpenDatabaseでオープンできなかった時は
実行エラーが発生するのはわかってる?
それがわかっていれば On Errorなしではチェックできない
こともわかるはず。

>>550
Rekkyoの引数の数と戻り値の型が間違ってるよ。
(戻り値の型が違うのはエラーとは関係ないが)

Public Function Rekkyo(ByVal Handle As Long, _
ByVal lParam As Long) As Long
553531:02/10/24 13:14
お〜、動いた。ありがとうございました。
っていうかこのコード実はサンプル集から持ってきた奴だったりして(w
でもEXEにすると動いたのはなぜ??
554552:02/10/24 14:00
>>553
さあ。手元にVBがないのでわからんけど、
俺の手元のWin98では、EnumWindowsのコールバック関数の
引数のサイズや呼び出し規約が正しくなくても、
それを呼び出したDLL側でスタックポインタを復帰してくれてる。

そうなると、開発環境がエラーを検出できている方が不思議だけど。
555デフォルトの名無しさん:02/10/24 15:02
バブルソートなんか 使っていると そのうち バブルが はじけるぞ (謎)
>>555
「この会社辞めようと思った上司の一言」ですか?
557デフォルトの名無しさん:02/10/24 16:51
ソニー製アプリケーションって、ボタンの色はもちろん、
メニューとか全部独自のカラー&デザインになってますよね。
でも機能や操作性はWindows標準コントロールと変わらない。
あれは独自にコントロールを作成しているのでしょうか?
それとも、Windows標準コントロールに何らかの方法で描画しているのでしょうか?
VBでコマンドボタンの色を変えようとしても表面だけで陰の部分は変わってくれませんよね?
>>534
インライン エラー処理使えよ。
>>557
そのソニー製は見たことないから知らんけど、
標準コントロールでも独自コントロールでも可能。
560デフォルトの名無しさん:02/10/24 19:46
>>557
標準コントロールと100%同じ独自コントロールだって作れるん
だから、自分でがんばれ!
561557:02/10/24 19:52
そうですね。どちらでも可能だとは思いますが。
まぁボタンとチェックボックスぐらいはできそうだけど、
リストボックスや、メニュー、タブストリップまでとなると。。
おそらくソニーのやつは標準コントロールになんらかのメッセージを送ってると思うのですが
どういったAPI使えばよいのでしょうか?
562557:02/10/24 19:54
あ、そういえばWindowBlindsってソフトありますよね。
あれと同じ事をしてると思うのですが。
まぁオリジナルのオブジェとか見た目は良いかもしれないけど、見た目重視しすぎて
重くなったり動作が不安定にならないように気を付けてね・・・
背景が半透明のエディタをつくる方法がまったくわかりません。
リッチテキストボックスを半透明にするコマンドとかあるんですかね。
565デフォルトの名無しさん:02/10/24 20:34
>背景が半透明のエディタをつくる方法がまったくわかりません。
WinME,XP,98でしか無理。

というか、
1)エディタは出来てるが半透明化が全く解からん
2)エディタもつくれないし、透明化も全く解からんアホ

どっち?

>WinME,XP,98でしか無理。
Win2000,XPでしょう?

Windowsの透明レイヤー機能を使うか、
自分で全部描画するかすりゃいいとおもいます
567デフォルトの名無しさん:02/10/24 20:47
以下のように、オラクルに接続して接続失敗したらエラーコードを取得するコードを書いています。
接続とエラー処理は別のモジュール内にあります。
これを実行したとき、矢印の場所の”cnObj”の個所で
エラーメッセージ「名前が適切ではありません」と言うのが出てきてしまうのですが、
cnObjの宣言をFnc_Orasseion内で行うと上手く行きます。
Publicで接続オブジェクトを宣言しても、別モジュールでは使用出来ないのでしょうか。

basOra内
***********************
Public cnObj As New ADODB.Connection
Public rsObj As New ADODB.Recordset
Public er As ADODB.Error
Public Function Fnc_Orasession() As Boolean
Dim ret As Boolean
On err Goto ErrTrup
'データベース接続文字列
cnObj.Open pstrOraSource, pstrOraUser, pstrOraPass
Exit Function
ErrTrup:
call subErr
End Function
***************************
basErr内
***************************
public sub subErr
For Each er In cnObj.Errors ←
msgbox er.Number
Next
end sub
568564:02/10/24 20:49
>>565-566
エディタはつくれなくても、
テキストボックスやリッチテキストボックスを透けさしたり、それらに背景画像を表示させてみたいです。
あそびごころのあるテキスト入力ボックスですね。
WindowsはXPです。
透明レイヤー機能ははじめて聞きました。
透明レイヤーはWin2000とXPしかつかえない。
でも結構簡単に実装できる。
でもちょっと重い。
>>565
アフォ?
どのWinでもできるっつーの
VBの場合、クラスモジュールに宣言したStatic変数は
どういうスコープになるのでしょうか?

確か、C++でクラス内にStatic宣言をすると、
各インスタンスから参照される定数が
メモリ上に一個だけできたはずなんだが。
VB.NET環境でCORBA通信できるクライアントサーバのサンプルソースキボン
573564:02/10/24 21:44
まずは透明レイヤーでしらべてみます。
レキシカルスコープでつ
http://homepage2.nifty.com/rohizuka/ka/pa_003_a.htm
575564:02/10/24 22:06
ttp://hp.vector.co.jp/authors/VA014315/vb6.htm
ttp://www.vector.co.jp/soft/winnt/prog/se254101.html?g
ttp://tokyo.cool.ne.jp/kanain/APIHTM/Blend.html
ttp://www.vector.co.jp/soft/winnt/prog/se154482.html?y
ttp://www.vector.co.jp/soft/win95/prog/se144994.html?y
ttp://dobon2.tripod.co.jp/dotnet/form.html#opacity
画像の半透明化は結構みつかる。
VB.NETではフォームを半透明にするコマンドも標準であるらしいこともわかった。
テキストボックスを半透明にするにはBitBltとかを勉強してみるしかないか。
>>574
またそれか。しね。
>>557
> まぁボタンとチェックボックスぐらいはできそうだけど、
> リストボックスや、メニュー、タブストリップまでとなると。。
メニューはともかくとして、リストボックスやタブなら
自前でも難しくはないと思う。

> おそらくソニーのやつは標準コントロールになんらかのメッセージを送ってると思うのですが
> どういったAPI使えばよいのでしょうか?
標準コントロールにメッセージを送るのではなく、
サブクラス化とか、オーナードローを使うのが普通。
(コールバック関数を用意して、送られてくるメッセージを自分で処理する)
578557:02/10/24 22:52
む、なにやら難しそうですな。
クラスはまだ全然分からないです。

>メニューはともかくとして、リストボックスやタブなら
>自前でも難しくはないと思う。
まぁタブはそれほどむずくはないですか。
リストボックスはちょっとむずそうというかどちらかというとリストビューのほうが良いし。
あとスクロールバーがあれば大抵はいけそうではありますが。
>>578
> クラスはまだ全然分からないです。

オブジェクト指向のクラスのことを言ってるの?
ウィンドウのサブクラス化はそれとは別物なので、
一度ググッてみることをおすすめする。
>>579
>オブジェクト指向のクラスのことを言ってるの?
>ウィンドウのサブクラス化はそれとは別物なので、

オブジェクト指向なAPIを持つWindowsに対する挑戦か?
581  :02/10/25 02:58
VBでマルチスレッドってできますか?
582デフォルトの名無しさん:02/10/25 03:02
>>581
VB.NETでは可能
ヴァカな発言がネタなのか、天然なのかを効率よく判定するアルゴリズムを
教えてください。
「ネタだったら寒い。本気だったら痛い。釣りならヘタ。」と言ってあげる。
>>584
感謝。m(_ _)m
分岐条件が網羅的なところにセンスを感じますた。
586デフォルトの名無しさん:02/10/25 13:17
ToolTipTextで 改行させて 複数行表示させる方法を教えてください。
>>586
改行文字を。
588デフォルトの名無しさん:02/10/25 13:23
>>586

Listboxなんですけど、表示を確認してから コーディングの仕方を
教えてもらえないでしょうか?
589デフォルトの名無しさん:02/10/25 13:23
まちげえた
>>587
です。
>>589
改行文字を入れろって書いてあるじゃん
>>590
日本語が読めない人をいじめたら可哀そうじゃん。
592デフォルトの名無しさん:02/10/25 14:13
>>590

おれやってみたけど、改行文字入れても ダメだった。
>>592
ちなみに何入れたの?13 10だよ?OK?
594デフォルトの名無しさん:02/10/25 14:22
ああそういえば 改行文字ってなんだ?

\n か?
chr(13) & chr(10) か?
それとも 改行文字って 入れないとダメなのか?(w
595デフォルトの名無しさん:02/10/25 14:26
おっ 知ったかの糞厨 発見
vbCrLf
597デフォルトの名無しさん:02/10/25 14:38
MDIで子フォームがいくつかあって
メニューエディタで設定できないショートカットキーで
特定の子フォームのイベントを発生させたい場合
どうしたらいいでしょう?
全ての子フォームにキーイベントを書かないとだめでしょうか?
メニューエディタのショートカットキーを増やす裏ワザとか
あったりするんでしょうか?
vbCrlf でTooltip改行しようとしても文字化け起きて改行できなかった

Win2000(sp3) & vb6(sp5)
ToolTipTextで改行はできないよ。
ToolTipText用のフォームを作るなりコントロールを作るなりしてゴマかせ。
>>599
了解
601デフォルトの名無しさん:02/10/25 16:14
>>599
なーんだ できないのか。いくらやっても おかしいなぁと思ったんだよ。
だから、できるのを確認して、コードを出してって いうのに、
変なこと いう人いるんだから。
>>601
・・・誰?
>>601
誰 っつーか 無償の第三者に動作確認してから
コード出せとは相当図々しいぞ。学生だろお前?
>>601
謎の半角スペースは何のつもりなんですか?句読点の使い方がいまいち理解できてない?

VBとかより今の義務教育の勉強を真面目にした方が良いと思われ。

後、煽りには国語必須な。
文章に隙があれば付け入られる。
>>603
>学生だろお前?

と言うせりふをこの板で良く耳にしますが、社会人は偉いんですかいな?
立派な人は立派ですが>>603の様な痛い方も多いわけで。
>>605
肝心な部分に反論できてないキミのほうがイタイよ・・
学生には、社会の厳しさを知らない甘えんぼチャンが多い。
ということでしょうな
>>607
禿同。605よ、言葉通りに受け取らず、そう言われた意味を察しろ。
>>605
どうでもいいとこいじくるな。
>>603を含むこの板の住人は社会人がえらいとかどうとかじゃなくて
モラルとか常識のなさを学生並と皮肉ってるんだろ。
>>605
生徒だろお前?
>>610
生理だろお前?
ToolTipって改行不可だと思ったけど
vbCrLfでも無理なはず。
げっ!リロードしてなかった。
WinXPでもPCカード取り外したりするときにでてくるToolTipを使うとよいよ
み〜くんぱぱのところにサンプルがある
614デフォルトの名無しさん:02/10/25 18:12
ここで聞けないようなもっと初歩的なことは、どこで聞けばよいのですか?
>>614
ここでいいよ
>>614
なぁ、本とかで勉強してこい。
617デフォルトの名無しさん:02/10/25 18:24
半角スペースって謎か?(w

618614:02/10/25 18:25
>>615
じゃあ、叩かれるのを承知で書いてみます。
全然初心者なんですけど、急きょVBをいじらされることになりました。
リストラは最悪です。(昔はSEがいたのだけど、今は庶務課の私が開発
も兼務・・・)

さて、作るAPなんですが、pdfファイルを3つ選択して、それをftpで送信するというものです。
こんな書くと簡単なものなのですが、作り方がさっぱりわかりません。
(今日VBをインストールしたばっかの初心者なんで。。。)

AP実行手順(イメージ)は、
 @アプリを.exeで起動
 Aあらかじめform上に用意してある3つのブランクBOXに.pdfファイルを選択してきて、入れ込む。
(pdfファイルは指定のフォルダに入れておくカタチでも良いですが、
   windowsのディレクトリを参照してファイルが選択できるようであれば尚良しです。)
 B3つのブランクにファイルが埋まって、「送信ボタン」を押すと指定したftpのサイトへそのファイルを転送する。
 C送信終了時に「送信完了(成功)」とかメッセージが出る。
 D終了ボタンでexeが落ちる

ってな具合です。
VBをインストールしたばっかの初心者に開発させるなんて最悪の会社だな。
なんかわざわざつくらなくてもいいようなソフトだね
>>618
初歩的な質問とは言い難いがその会社すごい事させるな。(w

サンプルのソース探してそれをいじくるのが吉と思われ。
622614:02/10/25 18:32
そうなんですよ、ヒドイ会社で・・・(泣

サンプル探しているんですけどねぇ。。。みつからなひ
623デフォルトの名無しさん:02/10/25 18:33
>>618
MS-DOSで、FTPっていうコマンドが、使えるから、それでバッチを
作ったほうが、簡単。
>>622
じゃぁ、こんなのはどうだ?
ttp://www.vector.jp/soft/win95/net/se058005.html
>>623
たぶん作ってもらいたいのはFTP送信というよりも
フォームにファイルを選択してボタン押すだけで送信できるツールだと思われる。
給料払って車輪の再発明をさせるとは、素晴らしいDQN害社ですね。(w
>>626
車輪すらまともに作れず威張ってるヤツよりましだと思われ。
>>614
それ作ってやってもいいぞ、ただで。
つか、IEで普通にできるよな。FTPぐらい
ミラーリングとか必要なさそうだし
俺は>614 が女性だったら合コンで手を打とう。
>>630
俺だったら、セクースさせて貰わんと、納得できんが。
>>630-631
男だよ。
俺は手を握ってもらうだけでいいよ
634630:02/10/25 19:43
>628 さん、任せましたよ。
635614:02/10/25 20:02
遅くなりました。
>>628さん、ご協力いただけると助かります、ホントに。
宜しくお願いいたします。
メアドは後ほどアップします。
>>635 は犬猿の仲の同僚のメアドをアップして、嫌がらせするつもりだそうです。
まだできないの?
638デフォルトの名無しさん:02/10/25 21:54
つーか NextFTP使え ゴラァ!
>>638
フリーのFFFTPの方が明らかに優れているのに、なんでわざわざ
シェアウェアを使うよ?
>>639
そうか?シンボリックリンクもまともに操作出来ないあのソフトが?
>>639
制限解除する前の状態と比較するなよ・・・
>>614
(1)IEを起動する。
(2)アドレス欄に「ftp://FTPサーバのアドレス」と入力しEnter。
  ユーザとパスワードを聞かれるので入力する。
  このとき「パスワードを保存」をチェックしておくと次回から楽。
  ついでにアドレスはお気に入りに入れておけばなお楽。
(3)エクスプローラでPDFファイルのあるフォルダを開く。
(4)3つのファイルを選択してIEにドロップ。

これでだめかい?
643614:02/10/25 23:53
また別な雑用におわれて、レス出来ませんでした。
メールアドレスは、[email protected]になります。
よろしくお願いします。

>>642
お客さんに見せるデモの一部なんで、それではダメなんだそうです。
やってることはその通りでも、それっぽくみせることが大切とかで!?
(下請けなんで、ツライです。)
しかし、まともなプログラマいないのに・・・。
644デフォルトの名無しさん:02/10/25 23:56
配列ってどうやって作るんですか?
>>643
おいおい。客がいるのかよ。だったら教えられないな。
客がかわいそうだ。
>>644
マニュアル読めよ
>>644
dim hoge()
>>614
質問の内容は確かに初歩的だが以前に、本人に努力する意思が見られな
い以上、これ以上のアドバイスはする気にならんね。
649デフォルトの名無しさん:02/10/26 00:11
>>647
さんくす。
それをヒントに今からサーチします!!
ってかマニュアル買う金ねぇ...鬱。
>>649
ヘルプでいいだろう
>>649
(゚д゚)ハァ?
>>649
本屋で立ち読みとか
サンプルコードを探すって手もある。
653デフォルトの名無しさん:02/10/26 00:22
ヘルプ?
私VBA(エクセルのヤツ)なんだけど、ヘルプ見ようとするとインストールがどうのって言われる゚・(。´Д⊂)゚。・
ネットで探すしかない。

あと本屋で立ち読みする程度では私には理解できないと思う。
>>614
やれるだけやってみて、
そして解らないことが出てきたら、
個別にここで聞いてみたらどうでしょう?

それか、お金を払って別の会社に作ってもらっては?
655614:02/10/26 00:24
>>648
628さんのお助けは、あくまで最後の切り札と考えています。
これでも自分なりに試行錯誤しています。
(本とか買ってきて、分からないなりにイジっています・・・)
こんな中年になって苦労するとは思いませんでした。
全然ダメダメ初心者ですが、頑張ります。
>>653
インストールしろよ
>>655
Inetコントロールを使えば簡単だよ。
>>653
ハァ?日本語も読めねーのか?

そりゃエラーメッセージ読めなきゃ本なんか読んでも意味ねーよな。
北鮮に帰れや。
660デフォルトの名無しさん:02/10/26 00:37
>>656
ですよねw。こないだからCD探し続けてます。
661デフォルトの名無しさん:02/10/26 01:56
現在フォーカスがあるコントロールの次のタブインデックスが設定されている
コントロールを知りたいんですが方法ないですかね?
どこかで見かけた記憶があったような気がするんですが・・
662デフォルトの名無しさん:02/10/26 07:18
FTPのソフトは、Delphiを買うと サンプルについてるからそれ使えば、便利だぞ。

無理に VBを使う必要なしっ!
663デフォルトの名無しさん:02/10/26 09:14
タイマー使ってイメージ動かすと途中でチカチカするんですが何とかなりませんか?
664デフォルトの名無しさん:02/10/26 09:30
この業界入って、何の資格も取らずに40歳までいっちゃうとリストラ対象になるってホントですか?
>>664 コピペウザイ
>>663
AutoRedrawとかClipControlsとかそこらへん。
>>664

四角を取る → 角が取れて人間が丸くなる

という意味。要するに、テクニカルスキルだけでなく、対人関係にも
気を遣わないとダメですよ、という意味。
>>667
目からうろこです。
669デフォルトの名無しさん:02/10/26 14:34
VBの派生テクノロジーを全部うpしてください。

VB VBA VBScript
とあとなにがあるんですか?
>>669
派生というか全部サブセットです。以上。
サブセットのくせにVBにできなくてVBScriptにできることがあるのは我慢ならん。
672デフォルトの名無しさん:02/10/26 15:24
ソフトの二重起動を防止したいのですが、
よくあるサンプルはApp.PrevInstanceとAppActivateを使う奴が多いようです
が、これだと別の場所にコピーしたExeから起動できてしまうし、
タイトルバーの名前を変えてしまうとアクティブにできません。
ミューテックスを作成するとかいうのはプログラムが正常終了しないと起動できなくなってしまいます。
ウィンドウのタイトルを取得してソフト名が含まれてたら〜ってやればいいじゃん
と思ってやってみたのですが、ウィンドウタイトル=Exeの入ってるフォルダ名
ってことがあるとダメなことに気がついてしまいました。
どういう方法が一番よいでしょうか?
プロセスからファイル名を取得してファイル名から判断するってなことも考えてみましたが、
どうだろうって感じです。
> ミューテックスを作成するとかいうのはプログラムが正常終了しないと起動できなくなってしまいます。

そんなことはないと思うが?
>>673
同意。NTオブジェクトである以上プロセスと運命をともにするはず。
675672:02/10/26 17:45
どうやらVB上だとダメっぽいです。
一度実行するともう起動しなくなります。
EXEにすると問題ないのですが。
インタプリタ実行した場合って事ね。そりゃそうか
>>675
それでいいんじゃない? というか、
EXEの時にだけチェックするのでは不都合があるの?
678672:02/10/26 18:15
おっと、QueryUnloadにReleaseMutexじゃなくてCloseHandleにしたらちゃんと起動するようになりました。
ただ、VBの終了ボタンで終了してしまうと当然起動しなくなりますが。
開発環境で実行してるかどうかのチェックをすればよいのかな?
VB5だとわり算だかで計算結果が違うのを利用できたそうなのですがVB6はどうなのでしょうか
>>678
> 開発環境で実行してるかどうかのチェックをすればよいのかな?

気は確かか ? 一体どのタイミングでチェックするんだ ?
680672:02/10/26 18:30
え?
If 開発環境=False then
 Unload Me
End If
ってやるだけですが。
exe実行時だけのチェックで何がマズいのかさっぱりわからん(´ー`)
>>68
だからexe実行時かどうか知りたいんでしょ?

デバック時にも2重起動禁止が働いて、2重起動してないのに走らないんじゃ不便だから
方法はいくつかあると思うけど、
MSの技術情報ではApp.ExeNameで判定するのが
紹介されていたような気がする。
でも、条件付きコンパイルとか、EXEを作る時に初めて
チェックルーチン呼び出しを組み込んでもいいんじゃない?
mutex
685672:02/10/26 19:18
いや、その、VB上で実行しているときに、
アプリケーション側で終了していればQueryUnloadが呼び出されてMutexが解放されるけど、
VB側で終了させてしまうとMutexが解放されないので以降実行できなくなってしまうんですよ。
VBを終了させてプロジェクトを開き直さないといけません。

>>683
条件付コンパイルですか。なるほど。
それでもいいかな。
>>685
なんで終了処理の方で使い分けようとするの?

終了時ではなく、起動時のMutex作成を
(開発環境での実行時は)行わないようにした方が
よいのでは?
687683:02/10/26 21:09
>>683で App.ExeNameと書いてるけど、
これ多分 GetModuleFileNameの間違いだわ。ごめん。
>>680
どこに書いておけば、そのコードが「VB側で終了させてしまうと」の時に走るんだ ?

(ったく、誰がチェック/対処 の仕方を聞いてるんだよ...。)
(しかも、Unload Me したってダメだし。)
689672:02/10/26 22:19
>>686
そうですね。そうします。
ところで、Mutexの作成元のウィンドウはどうやったらわかるのでしょうか?
二重起動の時には既に起動しているウィンドウをアクティブ表示にしたいのですが。
半角スペースって謎か?(w
>>689
それこそウィンドウタイトルやクラス名でウィンドウを検索して
アクティブにすればいいのでは?
Mutexの作成元プロセスを取得する方法があるのかどうか知らないけど、
仮に方法があったとしても、多分、NT系OS限定(セキュリティ関連)
ではないかと思う。

それと、688の意味はわかった? 彼の言ってることは正しいと思うよ。
692672:02/10/27 08:41
ああ、そういうことですか。>>688
いや、別にVBで終了させるときに走らせる必要はなくて
VB上なら問答無用で起動させるようにすりゃよいだけです。
というか686さんの方法でばっちりなのですが。
・DB名,パスワード等の取得について
win2000は環境変数があってそこから取得すればよいと思うんですが、
win95の場合はどうやって取得すればよいと思いますか?iniファイルとか?
なにかよい案をください。
お願いします。


>>693

パスワードは、ポストイットに書いたのをモニタに貼り付けておく。
それを見ながら、画面上でパンチすればよい。

iniファイルを使うのはセキュリティ上問題があるので、不可逆暗号化した方がよい。
695デフォルトの名無しさん:02/10/27 12:38
>>614
あなたと同じようなソフトを作りたいと思ってるんですが、
まったくのプログラム初心者ですが、私にも出来るでしょうか?
696630:02/10/27 12:43
>695 が女性だったら合コンで手を打とう。
697693:02/10/27 12:52
>>694
ありがとうございます。
自分の書き方が悪かったのですが、情報に持ちたいのは
DB接続に使うためのサーバー名,DB名,ユーザーID,パスワードなんです。

なにか良い案はありますか?
698デフォルトの名無しさん:02/10/27 13:27
VB検定対策問題集の出版元はアーティファイであっているでしょうか?
MediaPlayer1.FileName = "C:\動画.avi"
メディアプレイヤーコントロールは
コードで直接ファイル名を指定して再生するのは簡単ですけど、
実行時にエクスプローラの動画ファイルをメディアプレイヤーコントロールにドラッグして
FileNameプロパティをドラッグファイルに設定する方法がわかりません。
メディアプレイヤーコントロールに
DragDropというものがありましたがそこに何を書いたらFileNameを設定できるのでしょうか。

Private Sub MediaPlayer1_DragDrop(Source As Control, x As Single, y As Single)

End Sub
↑こんなかんじにDragDropがなってました。
>>695が女性だったら強姦で手を打とう
>>695が女性だったら青カンで手を打とう
「私を犯して!!」と言ってきた女とした場合、それは強姦なのだろうか?
>>702
合意の上なら、「合姦」。(w
なんか昔、女を強姦するときはわざとゴツゴツした地面の所を選び押し倒し、
痛がらせてから「じゃああっちの平らな所にする?」と聞き、
「うん」と答えさせたら強姦じゃなくなるとかいう話聞いたな。
激しくどうでもいい上にスレ違いだが。
ひどいインターネットだな。
>>704
んなわけねーだろ。
707デフォルトの名無しさん:02/10/27 14:40
残念ながら男ですw
当方、プログラマと言うわけでは無く、単純に仕事の流れの1部分を
楽にして他の作業に時間をかけようと思ってるので作ろうと思ってる
わけなんですが、過去プログラムで挫折クチであります。
女性も多い職場なので合コンぐらいだったらいくらでも用意しますが、
まずは私と友達になった上で信頼が置けるようであればいくらでも合コン
程度で良ければ用意できます。さすがに掲示板で知り合って初対面での合コンは
厳しいですね。と、マジレスはさておき、

ファイル選択には、TextBoxにとファイル参照用のCommandBoxの配置まで
やった上で、グーグル検索しコモンコントロールを使用するらしいという
ところまで来ました。
FTP送信部分には>>624のdllを組み合わせてみようかなと思ってます。
暖かく見守ってください。今日中に出来るかな?!
708630:02/10/27 14:49
>707
そこまでできてんなら、俺の出番は無いな。
完成したら>614 にあげれば。
709695=707:02/10/27 14:58
>>708
いい線まで行けてますか?
私も初心者なんで勉強にもなってますから、上手く行ったらUPしても良いとは思ってますが
はてさて成功するでしょうか…。
コモンコントロールでいつも見慣れてるファイルの参照ようのBOX表示までは成功したんですが、
それをTextBox表示させる部分に来て、グーグル検索繰り返してます。
10日で覚えるとかって本を見たことが有ったので、それでも買ってこようかな…。
>>707
女性が多い職場かー
いいな。俺んとこには一人もいねー
711630:02/10/27 15:44
>>709
Private Sub Command1_Click()
  Call Me.CommonDialog1.ShowOpen
  Me.Text1.Text = Me.CommonDialog1.FileName
End Sub
712695:02/10/27 16:42
>>711
おぉ。ありがとうございます。
追加でこういう風に変更してみました。

----------------command box------------------
Private Sub Command1_Click()
CommonDialog1.DialogTitle = "ファイル選択"
CommonDialog1.FileName = ""
CommonDialog1.Filter = "テキストファイル  *.txt|*.txt;|アプリケーション  *.exe|*.exe"

Call Me.CommonDialog1.ShowOpen
Me.Text1.Text = Me.CommonDialog1.FileName

End Sub
----------------text box------------------
Private Sub Text1_Change()
Text1.Text = CommonDialog1.FileName
End Sub
------------------------------------------

なんとなくあぷりっぽくなってきました。ありがとうございます。
今度は、送信ボタンを押せばtextbox内のファイルを送信させる
と言うcommand box部分に入ってみようと思います。
713デフォルトの名無しさん:02/10/27 16:57
>>618

FTPとサンプルをキーワードに検索エンジンで探せばいろいろ見つかるが
WinInetを使用したVBによるこのサンプルがお薦め

http://www.aland.to/~e-biac/programming/library/index.html#bwFtp
714695:02/10/27 17:17
>>713
ありがとうございます。今、見てる最中ですが、
初心者の私には何とも長いコードのように思えてf(^^;

イベントプロシージャをさっき理解したところでして…(汗
長い目で見て勉強になりそうです。
できれば単純にFTPコネクトしてputしてそれが成功したか、
その途中のどこかで失敗かをダイアログで出す所まで行きたいんですが…。

basファイルの標準モジュールが何なのかを調べ漁ってます。
715デフォルトの名無しさん:02/10/27 17:41
エクセルのVBAについて質問させてください。
xmlファイルを読み込んで処理したいのですが、
何か簡単な方法は無いでしょうか?
>>715
外注に○投げする。
717715:02/10/27 18:20
>>716
いや、仕事ではないので。
718デフォルトの名無しさん:02/10/27 18:37
画像を背景にしたいのですが、どうすればイイのでしょうか?
719デフォルトの名無しさん:02/10/27 18:44
ネットワーク上でやりとりされたデータのサイズ
(ようするにネットワーク接続があるときにタスクトレイに出てくるやつに表示されるバイト数)
を求めたいのですがどうやればよいでしょうか?
送受信共にです。
転送量モニターを作りたいのです。

WinSockとInetコントロールはみたところ送受信自体をやるもののようなのですが。
721 :02/10/27 20:05
VBでミリ秒単位の正確な時間管理ってできます?
プログラム開始から終了までを計測したいのですが
マルチスレッドにしないとできないような事を言われました。

・VBでミリ秒単位の管理は可能?
・VBでマルチスレッドってどうやって実現する??

どなたか教えてください。
>>721
GetTickCountとか。
マルチスレッドは無理。
てか、プログラム開始から終了はかるのにマルチスレッドなど何に使うっつんだ?
そもそもマルチタスクOSで正確な時間管理なんかできない。
>>723
ほう、マルチタスクなハードリアルタイムOSはやたらとあるが。
>>724
例を出してみ
726デフォルトの名無しさん:02/10/27 20:15
>>721
つーかウィンドウズ上で正確にexeの実行開始から終了までの時間なんて
計測できない
727 :02/10/27 20:16
>>722-724

ありがとうございます。ついでに質問なのですが、こいつを使えば
起動後、正確に5秒後とかにイベントを発生させるような
事が可能でしょうか?

タイマーオブジェクトだと、微妙にずれてしまって
うまく行かなかったので・・・。
まぁ721が求める結果は、
フォームロード時にGetTickCountして適当な変数にぶち込んでおき、
終了するときにまたGetTickCountして、そこから起動時に変数に入れた奴を引き算した奴で
上等なんだろ。
そんな細かい屁理屈こねるなよ。
>>727
その正確ってのがまた微妙だなぁ。
誤差100msくらいなら正確と捕らえるのか、
1msでもズレたらあかんのか。
730 :02/10/27 20:27
>>728
ありがとうございます!
これで難しいプログラミングしなくてすみます!!

>>729
外部デバイスの動作時間を計測したいので、
できれば正確なものがよいのですがー
それっぽい数字が出ればいいので、100msぐらいの
誤差ならかまわないです。
もっと正確に計測できる方法をご存知ならば
教えていただきいのですが・・・。
>>730
だったらそれこそGetTickCountでいいべ。
732 :02/10/27 20:49
>>731
ありがとうございます!!!
これですっきり解決です。
timeGetTime()のほうがいいらしい
734デフォルトの名無しさん:02/10/27 21:10
再起動させるコードが知りたいのですが…
>>734

> 再起動させるコードが知りたいのですが…

コンパイルエラー:
主語がありません。
737デフォルトの名無しさん:02/10/27 22:30
>>735-736
リンク先に行って見ましたが、自分の探しているものは見つからないのです。
私が望んでいるものは、VisualBasicで作ったボタンで、Windowsを再起動させる為のVBのソースコードが欲しいのです。
どうか教えて下さい。お願いします。
>>737
どこに目ぇついてんの?>>736を52回読め

>>739
警告:
反復回数は2のべき乗で指定してください。
>>740
マジですかΣ(゚Д゚)
742614:02/10/27 23:24
丸2日かかって、FTPでサーバーにつながるところまで作りました。
もう、心底疲れました。

VB超初心者向け入門本とかには、簡単な計算プログラムとか載ってて
「やっぱ最初はこういうのからやるだよなぁ」と、いきなりファイル転送の
プログラムを作ってる自分の愚かを改めて感じます。

今、PDFのファイルをCmnDialogで拾ってきて、そのファイル名(パス)をlistboxに表示させ、
それをuploadするところを考えているのですが、

CmdBtnでCmnDialogを表示させ、pdfファイルを選択するとBOXに1つ表示。
で、また同じボタンを押して同様にpdfファイルを選択するとBOXの2段目に表示。
という具合にしたいのです。3回繰り返しで3つのファイル名を表示させたいんです。

で、それをInet1.Execute , "PUT"でuploadしようと思うのですが。

なんか695さんも私と似たようなものをお作りのようで、712とかもみて
みたんですが、ちょっと違うようなのでお聞きしたいと思って書きました。

それでは宜しくお願いします。
コモンダイアログは一度に複数のファイルを選択するのが可能だから、そうした方が楽だけどどうかな
744614:02/10/27 23:52
もう終電なのでiモードからです。
pdfファイルを選択するディレクトリが、
異なることも考えられるので、
別々に3回になるのかな?と思ったんですが。

あと、パスを表示させて、その内容を使って送信をしたい時は、
何のボックスを使えば良いのですか?

はぁ、ホントにダメ人間だな。(泣
745デフォルトの名無しさん:02/10/27 23:54
Accessとかにある帳票のウィザードのような機能をつくるよう頼まれて困っています。

1.エクセル、csv、mdbなどからの任意データのインポート
2.項目の自由な設定
3.一覧、宛名ラベル、伝票などの印刷

1,2は適当にいぇれそうですが、3で困っています。なんかツールとか
サンプルPGないでしょうか・・・困ったです。


746デフォルトの名無しさん:02/10/28 00:00
W2k,VB6sp5でMDIで作ってます。
子フォームを表示しない状態だと正常なんですが
子フォームを表示した状態だとMDIフォームにあるメニューを
クリックしてもメニューが表示されません。
なぜかWクリックすると表示されます。
この状態をなんとかしたいのですがどうすればいいのよいでしょうか?
ちなみに子フォームは BorderStyle無しでメニューもありません。
747デフォルトの名無しさん:02/10/28 00:16
age
748695:02/10/28 00:52
>>614
お疲れ様です。
私の考えてたのよりも複雑な作りをしてるようですね。
私は、超初心者ですのでサンプルの寄せ集めのような感じになってしまってます。
単純にファイルを参照できるボタンとそれを表示させるボックス
それに対して、送信するボタンと終了のボタンのみです。
送信ボタン(Command)部分に次の行を入れてやりました。

-------------送信ボタン-------------------------
Private Sub Command2_Click()
Dim rCode As UDT
Dim lll As Long
lll = TsureFTP("ホスト名", "ユーザid", "パスワード", "リモートファイル名", "ローカルファイル名", _
"コマンド", "リモートのディレクトリ")
MsgBox rCode.sfatrv
MsgBox CStr(lll)
End Sub
--------------------------------------------
これでOKなのかどうかも謎なんですが、ホスト名・ユーザーid等は、自分のUPしたい
場所を記述するんだろうなと言うところまでは解かりました。
ローカルファイル名にCommonDialog1.FileName辺りを入れてやれば良いところまで
予想はつくんですが、同じくUPするサーバーへも同じ名前にする場合は、CommonDialog1.FileName
を追加してやれば良いのでしょうか?
コマンドにはもちろんputを置いてみます。
後、戻り値でエラーが出る際に数字だけでるので、それの数値をdllftpのbasに書かれてある
エラー表示と同じようにしたいと思ってます。

1日で作ろうと思ったけど間に合わなかった(涙
749デフォルトの名無しさん:02/10/28 01:47
VB.NETで最も簡単にwavファイルを再生するにはどうしたらいいんでしょうか?
本にはDirectXを使う方法しか書いてないのですがそれが一番早い方法なのでしょうか。
それも一冊だけであまりサウンド再生について触れている本が見つかりません。

VisualBasicでDirectXを使うなんて思いもしなかったんですが・・・
750695:02/10/28 02:05
古典的ですがIF文使ってエラー表示は何とかなりました。
実際デバッグしてみると、どうもPUTでエラーが返ってきてるようです。
ファイル名辺りのエラーだと思うのですが、どなたかお解りになる方宜しくお願いします。

ローカルファイル名部分を参照したファイルにして、UPしたファイルも同じ名前にしたいんですが…。
751695:02/10/28 02:08
>>749
初心者の聞きかじりですが、DirectShowのことじゃないでしょうか?

http://www.microsoft.com/japan/msdn/directx/japan/dxvb/dxvbdshow.asp
752695:02/10/28 02:10
>>749
初心者なんでほんと申し訳ない。こちらが正解のようです。

http://www.microsoft.com/japan/msdn/directx/japan/dxvb/dxvbdmusic.asp
753厨房マン:02/10/28 02:24
プログラマーみたいなパソコン関係の仕事で一番エリートな仕事は何?
ハッカーって仕事?
754749:02/10/28 02:26
>>752
ありがとうございます。
参考にやってみます。やはりそれなりに面倒みたいですね。
>>753
 ゲームキャラの著作権をもったグラフィックデザイナ(ただしメジャーなゲーム)だ。
 わかったか。
 くれぐれもプログラマとかになろうとするなよ。







 迷惑だから。
756厨房マン:02/10/28 02:33
>>755
それ嘘なんでしょ?
本気でいまから一流大の情報学科目指してんのに( `_ゝ´)プンプン
>>755
アフォ? 社長に決まってんじゃん。
>>754
mciSendStringかPlaySoundあたりのが全然簡単
>>757
いや,社長は会社が潰れたら責任とらなきゃならんので,
実際は偉くない.
760初心者:02/10/28 13:18
基本だと思うのですが、ListViewの項目を選択した時Textを取得する
方法がわからなくて困ってます。
わかる方教えてください。
761デフォルトの名無しさん:02/10/28 13:48
Listview.text

Listview(listview.listindex)
>>760

Me.Text1 = List1.List(Me.List1.ListIndex)
>>759
責任を取らなきゃならないから偉くないってアフォ?
責任を取らない奴が偉いのかよ。
764佳美:02/10/28 16:04
VBのプログラムから、たとえばメモ帳を呼び出して
メモ帳での編集が終了するまで待ってることって
できるでしょうか。
責任を取らなきゃならないから偉いんだとしると、
株式会社の代表より、合資会社の無限責任社員の方が偉いわけか…
>>764
できますよ
767初心者:02/10/28 16:31
>761,762
ありがとうございます。
早速試してみます。
768佳美:02/10/28 16:39
>>766
( ゚o゚) エッ! できるんですか!
769佳美 :02/10/28 16:48
あまりの感動で濡れてきました!
ネカマを強制終了させる関数を教えてください
>>769
そのネタ前にもどこかで見たことある・・・
最初はワロタが、二度目はつまらんよ

>>770
Call ItteYoshi()
>>768
WaitForSingleObjectをググれ
773630:02/10/28 18:05
>695
リモートファイルとローカルファイルがPUTの時は置き換わるらしいので注意。
エラー値から変数名に戻すのは無理なので、関数を用意した。
Private Sub Command2_Click()
  Dim nRet As Long
  Dim sHostName As String
  Dim sUserId As String
  Dim sPass As String
  Dim sFromFileName As String
  Dim sToFileName As String
  Dim sCommand As String
  Dim sRemotePath As String
  
  Me.MousePointer = vbHourglass
  Me.Command2.Enabled = False
  
  sHostName = "127.0.0.1"
  sUserId = "ftp"
  sPass = ""
  sFromFileName = Me.Text1.Text
  sToFileName = GetFileNameFromFullPath(sFromFileName)
  sCommand = "PUT"
  sRemotePath = ""
  
  nRet = TsureFTP(sHostName, sUserId, sPass, sFromFileName, sToFileName, sCommand, sRemotePath)
    
  Debug.Print "Ret=" & GetFtpErrorName(nRet) & "(" & nRet & ")"
  
  Me.Command2.Enabled = True
  Me.MousePointer = vbNormal
End Sub
774630:02/10/28 18:05
Private Function GetFtpErrorName(n As Long) As String
  Dim sError As String
  Select Case n
    Case 1: sError = "OPEN_ERROR"
    Case 2: sError = "CONNECT_ERROR"
    Case 3: sError = "FILE_GET_ERROR"
    Case 4: sError = "SUCCESS"
    Case 5: sError = "FILE_PUT_ERROR"
    Case 6: sError = "FILE_DEL_ERROR"
    Case 7: sError = "CHNG_DIR_ERROR"
    Case 8: sError = "CLOSE_ERROR"
    Case 9: sError = "BUT_COMMAND"
    Case 999: sError = "ERROR"
    Case Else: sError = "UNKNOWN ERROR"
  End Select
  GetFtpErrorName = sError
End Function

Private Function GetFileNameFromFullPath(sFullPath As String) As String
  Dim nPos As Long
  For nPos = Len(sFullPath) To 1 Step -1
    If (Mid$(sFullPath, nPos, 1) = "\") Then
      GetFileNameFromFullPath = Mid$(sFullPath, nPos + 1)
      Exit For
    End If
  Next
End Function
775佳美:02/10/28 18:26
>>772
769 はわたしぢゃありませんよ。 WaitForSingleObjectですね!
ありがとうございました。さっそくググってみます。

でもググるってどーゆー意味??
>>774
>    Case 9: sError = "BUT_COMMAND"

しかしコマンド
振るパスからファイル名は
GetFileTitle()だったような
>>775
www.google.co.jpで検索しろってことだ。>ググれ
779佳美:02/10/28 18:44
>>778
(ノ゚ο゚)ノ おー すばらしい! こんなサイトがあったんですね!
WaitForSingleObject の第一引数のハンドルは
shell関数が返すタスクIDぢゃないですよね、やっぱ。
とにかくいろいろやってみますよ。ありがとうございますた。
780630:02/10/28 18:53
>776 TsureFtpの作者に行ってくれい。
>777 オメ GetFileTitle()では、漏れには機能が想像つかん。
汚いコード読んでくれてありがと。
781614:02/10/28 19:07
ヘタレ614です、お疲れ様です。
VBにかかりきりで4晩目に突入しました。

コモンダイアログからファイルをListBoxに表示させるところまできました。
ListBoxに表示してあるフルパスの情報で、複数のファイルをFTP送信(PUT)
したいと思うのですが、ここが分かりません。

よろしくお願いします。
782佳美:02/10/28 19:10
できますた、できますた。♪
あり。でございます。
>>781
なんだか本当にかわいそうになってきたなー
まじで作ってやるか。
785614:02/10/28 19:42
ソースを載せてみます。

Private Sub Command1_Click()
Dim GetUrl As String
Dim GetName As String
Dim GetPass As String
Dim i As Integer
'処理が終了するまでコマンドボタンを無効化
Command1.Enabled = False
'FTPサーバ名の取得
GetUrl = Combo1.Text
  'ログインユーザネームの取得
GetName = Text1.Text
  'パスワードの取得
GetPass = Text2.Text
786614:02/10/28 19:43
With Inet1
'URLを指定
.URL = "ftp://" & GetName & ":" & GetPass & "@" & GetUrl
'ルートディレクトリへ移動
.Execute , "CD /"
'ビジー待ち
Do While Inet1.StillExecuting = True
DoEvents
Loop
'ルートディレクトリの一覧を要求
.Execute , "DIR /"
End With
'コマンドボタンを有効化
Command1.Enabled = True
End Sub
787614:02/10/28 19:43
Private Sub Command2_Click()
'処理が終了するまでコマンドボタンを無効化
Command2.Enabled = False
Dim Fname As String
  'ファイルを選択するためにダイアログを開く
With CommonDialog1
.ShowOpen
Fname = .FileName
End With
If Fname = "" Then
Exit Sub
End If
  '選択したファイルをList2に表示
List2.AddItem Fname
'コマンドボタンを有効化
Command2.Enabled = True
End Sub
788614:02/10/28 19:44

Private Sub Command3_Click()
'【疑問】Command1で接続しているのですが、ここの部分は再度必要ですか?
> Dim GetUrl As String
> Dim GetName As String
> Dim GetPass As String
> '処理が終了するまでコマンドボタンを無効化
> Command3.Enabled = False
> GetUrl = Combo1.Text
> GetName = Text1.Text
> GetPass = Text2.Text
>
> With Inet1
> 'URLを指定
> '.URL = "ftp://" & GetName & ":" & GetPass & "@" & GetUrl
> 'ルートディレクトリへ移動
> 'ビジー待ち
> 'Do While Inet1.StillExecuting = True
> ' DoEvents
> .Execute , "CD homepage/A"
> 'ビジー待ち
> Do While Inet1.StillExecuting = True
> DoEvents
> Loop
    'List2に表示されたファイルのパスでアップロードをする。
.Execute , "PUT" & List2.Text 【疑問】・・・← ここがよくわかりません
End With
MsgBox "アップロード完了!"

'コマンドボタンを有効化
Command3.Enabled = True
End Sub
789614:02/10/28 19:45
Private Sub EndBtn_Click()
  '終了ボタン
On Error Resume Next
Inet1.Execute , "CLOSE"
Unload Me
End
End Sub

Private Sub Inet1_StateChanged(ByVal State As Integer)
Dim vntGetData As Variant
Dim strSplit() As String
Dim lngBufSize As Long
Dim lngCounter As Long
790614:02/10/28 19:45
'リストボックスをクリア
List1.Clear
'Excuteメソッドによる処理要求が完了したら、
If State = icResponseCompleted Then
'1回で取得するデータサイズを指定
lngBufSize = 1024
Do
'サーバから返されたデータを取得
vntGetData = Inet1.GetChunk(lngBufSize, icString)
'戻り値が長さ0の文字列だったらループを抜ける
If Len(vntGetData) = 0 Then Exit Do
'取得したデータを基に配列を作成
strSplit = Split(vntGetData, vbNewLine)
'配列の各要素を調べる
For lngCounter = 0 To UBound(strSplit)
'長さ0の配列要素を除く
If Len(strSplit(lngCounter)) <> 0 Then
'リストボックスへ追加
List1.AddItem strSplit(lngCounter)
End If
Next
Loop
End If
MsgBox "接続しました"
End Sub
791614:02/10/28 19:46
Private Sub List1_DblClick()
  ’リストBOX1
'処理が終了するまでコマンドボタンを無効化
Command1.Enabled = False
With Inet1
'選択されたディレクトリに移動
.Execute , "CD " & List1.Text
'ビジーの間待つ
Do While Inet1.StillExecuting = True
DoEvents
Loop
'現在のディレクトリのファイルと
'ディレクトリの一覧を要求
.Execute , "DIR"
End With
'コマンドボタンを有効化
Command1.Enabled = True
End Sub
792630:02/10/28 19:46
>614
Dim n As Long
For n = 0 To Me.List1.ListCount - 1
  Debug.Print Me.List1.List(n)
Next
793614:02/10/28 19:49
長くなりましたが、4日かかってゼロからこれだけです。

今、良く分かってないのは、

connect1で接続した後、connect3で再度接続が必要なのか?
Listに表示したパス名をPUTで使うにはどうすれば良いのか?

というところです。
すみません、宜しくお願いいたします。
794614:02/10/28 19:52
>792(=630)さん

それを、どこへ書き足せばよいのですか?
>>793
接続は1回でいい。
フルパスからファイル名だけを取り出すAPIはGetFileTitle()
796デフォルトの名無しさん:02/10/28 20:25
VB6付属のAPIViewerのデータベースって古いからのってないのいろいろあるけど、
新しいバージョンのデータベースってないの?
797630:02/10/28 20:30
>614
いろいろまずいな。自分の力量以上に複雑にし過ぎ。
>618 のすっきりした仕様とぜんぜん違うじゃん。
FTPクライアントを再開発したいの?
送信を楽にするソフトを作りたいの?

StateChangedイベントハンドラがぜんぜん駄目。
これじゃあ、DIRの時しか対応できないし、
Executeが終わってないのに、各Buttonのイベントハンドラが終わっちゃうし。

ところで、同名のファイルがサーバに存在した時はどうする? 上書き?
798614:02/10/28 21:04
>>797
すいません。
StateChangedイベントは、サンプルのパクリです。

とりあえず、ここまできたのでちゃんと動くものにするのが先ずの目標です。
最後の最後で動かずに、力が抜けそうです・・・。

サーバのファイル上書きは問題ないです。
(デモ用APなんで)
799614:02/10/28 22:09
とりあえず動きました。
涙が止まりません(泣
さっきのUpされなかったのは、ファイル名を繰り返して入れてなかった
からでした。
Listからのファイル名取得はまだ出来ていませんが、コードに固定パス
打ち込みで、あたかもそのファイルを選んで送信しているかのように
見せかけようと思います。
(間に合うようなら、もう少しがんばってみたいのですが、本来の仕事も
全然停滞しているため)

皆様には大変お世話になりました。
ありがとうございました。
800630:02/10/28 22:40
>614 直しきれんのでとりあえず複数ファイル送信できるようにしてみた。
Private Sub Command3_Click()
  Dim GetUrl As String
  Dim GetName As String
  Dim GetPass As String
  Command3.Enabled = False '処理が終了するまでコマンドボタンを無効化
  GetUrl = Combo1.Text
  GetName = Text1.Text
  GetPass = Text2.Text
  With Inet1
    '''''いきなりこのボタンを押してしまうかもしれないので一応やっとけ。
    .URL = "ftp://" & GetName & ":" & GetPass & "@" & GetUrl 'URLを指定
    Do While Inet1.StillExecuting = True 'ビジー待ち
      DoEvents
    Loop
    Call .Execute(, "CD homepage/A") 'ルートディレクトリへ移動
    Do While Inet1.StillExecuting = True 'ビジー待ち
      DoEvents
    Loop
    'List2に表示されたファイルのパスでアップロードをする。
    Dim n As Long
    For n = 0 To Me.List2.ListCount - 1
      Debug.Print Me.List2.List(n)
      Call .Execute(, "PUT " & Me.List2.List(n))
      Do While Inet1.StillExecuting = True 'ビジー待ち
        DoEvents
      Loop
    Next
  End With
  MsgBox "アップロード完了!"
  Command3.Enabled = True 'コマンドボタンを有効化
End Sub
801630:02/10/28 22:44
nbsp;より全角スペースの方が綺麗に見えるな。
自分の仕事やる気無し、今日も進みませんでした マル
802614:02/10/28 22:49
>>830(630!)
 神様です。すごいです。
 ありがとうございました。


#本当に初歩的なことで恐縮なんですが、保存した.vbpファイルと.frmファイル
を別なマシンで実行しようとすると「パスがみつかりません」とエラーが
出ます(実行できない)。
これは何故なんでしょうか?

803614:02/10/28 22:50
× >>830
○ >>800

です、失礼しました・・・。
>>799
よかったですね
他人事ながら、なんだか嬉しいです
805630:02/10/28 23:16
>802
ちゃんとVBをインストールした端末?
プロジェクトを開く時にエラーが出るの?
それともF5キーで実行する時にエラーが出るの?
エラーのおこった行は表示されないの?

VBPファイルをメモ帳にドラッグしてフルパスで書かれたものが
その端末に存在するかチェックしてみ。
806695:02/10/28 23:26
>>630
おぉ。ざっと過去ログみてたんですが、何か関数まで用意していただいて・・・(汗
ありがとうございます!!日曜プログラマ化してるんですが、
今から過去ログをしっかり見直してみたいと思います!

戻り値からのメッセージ化は、古典的ですがIf構文でこうやってみてたんです。

----------------------------------------
Private Sub Command2_Click()

Dim rCode As UDT
Dim lll As Long

lll = TsureFTP("ホスト名", "ユーザid", "パスワード", "", "Me.CommonDialog1.FileName", _
"コマンド", "ディレクトリ")

If CStr(lll) = 1 Then MsgBox "FTPのオープンに失敗しました"
If CStr(lll) = 2 Then MsgBox "サーバとのコネクトに失敗しました。"
If CStr(lll) = 3 Then MsgBox "ファイルのGETに失敗しました。"
If CStr(lll) = 4 Then MsgBox "処理に成功しました。"
If CStr(lll) = 5 Then MsgBox "ファイルのPUTに失敗しました。"
If CStr(lll) = 6 Then MsgBox "ファイルのDELETEに失敗しました。"
If CStr(lll) = 7 Then MsgBox "ディレクトリの移動(cd)に失敗しました。"
If CStr(lll) = 8 Then MsgBox "FTPセッションのクローズに失敗しました。"
If CStr(lll) = 9 Then MsgBox "不正なコマンドを発行しました。"
If CStr(lll) = 999 Then MsgBox "不明なエラー"

End Sub
-------------------------------------------------

今から、ちゃんと過去ログ読まさせていただきます。
ご丁寧にありがとうございました!
807 ◆LL.98XOPJI :02/10/28 23:37
質問。VB6です

VisualStudio開発環境についてくる「Spy++」ってありますよね。
あれの機能でメッセージを監視できるじゃいですか。
ひとつのウィンドウハンドルを見張るようにして、
送られてきたメッセージを書き出していくっていう。

あれはどうやってやっているのでしょうか?
また、VBにてあれと同じような事がやりたいです。
ヒントでもヨロシクお願いします。
808デフォルトの名無しさん:02/10/28 23:56
情けない質問ですがデータレポートで宛名ラベルを印刷したいのですが
どうやれば2列、3列の指定ができるのかわかりません。。。どうか
ご教授のほどよろしくお願い致します(__)。
809732:02/10/29 00:05
一昨日はどうも有り難うございました。
紹介されたサイトを見ました。が、あれを使ったのですが、ビルドエラーがでます。
何故でしょうか?VB6とVB.netとはコードが変わったのでしょうか?
変わっていたら、変更した無いようにしてください。お願いします。
>>807
SetWindowsHookEx
ただし、他のプロセスのウィンドウを監視するなら
DLL内にフックプロシージャ(コールバック関数)を
用意する必要があるので、VBでは無理かも。
(9x系OS限定ならexeだけでもなんとか動くけど)
811デフォルトの名無しさん:02/10/29 05:55
VBって バージョンアップするたびにソース変えなきゃ いかんからなぁ。
Delphiだとそんなことない。
812デフォルトの名無しさん:02/10/29 10:07
VB6で、SSTABを使ってるんですが、
WinXPでSSTABのタブに改行コードを含む文字列を入れると正常に
改行されて表示されるのですが、
Win2Kで同じことをやると改行コードが「・・」で表示されてしまいます。
Win2Kで「・・」が表示されないようにするには、
なにかテクニック等ありますでしょうか?
先輩方、ご教授お願い致します。
813デフォルトの名無しさん:02/10/29 11:08
Screen.Fontsでフォント列挙して、んでそのフォント名をStdFont
に代入してみたのですが、MSゴシックなんかのCharSetが128になり
ません。
これは最近私の頭髪がうすくなりはじめたことと何か関係があるの
でしょうか?
どなたかご教授ください。
環境は、Win2k+SP2 VB6.0+SP5です。
814デフォルトの名無しさん:02/10/29 11:13
VB6.0+Access(バージョン関係なし)ですが、
拡張子がmdbだと、hProcessが0しか返してくれないのですが、
これは何が原因なのでしょう?
解決方法をお願いします。

Const PROCESS_QUERY_INFORMATION = &H400&
Const SW_SHOWNORMAL = 1

Dim hProcess As Long
Dim lret As Long

lret = ShellExecute(Me.hwnd, vbNullString, _
"ファイル名パス\sample.mdb", vbNullString, _
"c:\", SW_SHOWNORMAL)

hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 1, lret)
FindExecutable ?
関数のParamArray指定された引数に、
ハードコーディングじゃ無しに
動的配列を渡せますか?

いろいろ試してみたのですが、
関数内ではからっぽのVariant型になってしまうのですが‥
817デフォルトの名無しさん:02/10/29 13:44
>>816
配列を格納した Variant が 1 つ渡るんだろ。
818デフォルトの名無しさん:02/10/29 13:47
>815
ダメだった。
hProcess取得してくれない。
Private sub Main
Dim strtest() As String
ReDim strtest(0 To 2)
strtest(0) = "a"
strtest(1) = "b"
strtest(2) = "c"
Call test(strtest())
End Sub

Private Function test(ParamArray vntArr() As Variant) As Boolean
MsgBox UBound(vntArr())
End Function

て感じで UBound(vntArr()) = 0 になってしまうんですよ
VB6なんですが。根本的にボケてますか?
>>819
その場合ParamArrayを使う理由がない気が...
Private Function test(var As Variant) As Boolean
MsgBox UBound(var)
End Function
>>814
ShellExecuteの戻り値はプロセスIDではないよ。
つまりShellExecuteでは不可能。

ShellExecuteExならプロセスハンドルも取得できるが、
Shell関数で起動した方が簡単だと思う。
>820
人様の作った関数‥そういう仕様なんです‥
使えんからラッパー作りたいんですが(。´Д⊂)
>>822
んじゃ
MsgBox UBound(vntArr(0))
824822:02/10/29 14:46
「使えん」は言い過ぎでした。ご免なさい
「諸々の都合」ってやつですね
私も大したもんではないですのでハイ
825デフォルトの名無しさん:02/10/29 14:56
>>821
実はその方法も考えたのですが、
起動させるファイル(拡張子)がmdbである為

lret = Shell("c:\winnt\notepad.mdb", vbNormalFocus)

のような起動だとエラーが発生してしまい

lret = Shell(SysCmd(acSysCmdAccessDir) & "MSACCESS.EXE " & "ファイルパス名", vbNormalFocus)

のようにするとmdbは起動するのですが、
指定mdb以外にもう1つmdbが起動してしまいます。
826821:02/10/29 15:27
> lret = Shell(SysCmd(acSysCmdAccessDir) & "MSACCESS.EXE " & "ファイルパス名", vbNormalFocus)

このコードをVB側に書いてんの?

だったらSysCmd()の呼び出しでAccess.Applicationの
暗黙のインスタンスが作られるんだから当たり前。
ShellでやるならAccessのパスを別の方法で取得するか、
または
CreateObject("Access.Application").SysCmd(acSysCmdAccessDir)
のように一時的なインスタンスからパスを取得するか、

またはいっそのことShellでなくオートメーションで
Accessを起動してhwndAccessAppプロパティからプロセスIDを得る。
827デフォルトの名無しさん:02/10/29 15:43
Picture Boxについて質問です。
ペイントブラシ(MSPaint.exe)よりも簡易な描画・bmp保存ツールを作成中なのですが、
Picture Box上の絵を任意の位置に移動するという処理方法で、
Psetで1ピクセルづつ描き移すというのしか思いつかず、
これだと処理速度が遅く、困っております。
何か良い方法がないものでしょうか?
828 ◆LXNeBqeuyE :02/10/29 15:44
フォントが使用できるキャラクターセットを列挙するには、どのようにすればいいのでしょうか?
ご教示お願いします。
829デフォルトの名無しさん:02/10/29 15:55
ボタンを押したらText1の URL に対し、
1.response header をText2 に表示
2.htmlソースを text3 に表示
3.htmlを解釈したものを???に表示

という動作をやりたいんですが、
1.2.を Inet、3を WebBrowser と2動作に分けてやれば出来るんですが、
一度の request にて上記123を満たすにはどうすればいいでしょうか?

>828
Screen.Fontsでフォント名を取得して、StdFont.Nameにセットしてみる。
Win2k以外はこれでうまくいきます。
Win2kの問題の回避方法をご存知の方いませんか?
831デフォルトの名無しさん:02/10/29 16:27
IEを監視してURLの履歴を取るソフトを作っているのですが
件数が1000とかになるとメモリに格納できなくなります(当たり前ですが
そこで配列が100を超えると101件目からDatファイルなどに書き込んでそこから読み取ろうと思うのですがどうしたらいいでしょうか?

現在のやり方
リストボックスからX件前を表示
履歴(X)をTEXT1に表示。IEコントロールでページをプレビュー表示

やりたいやり方
履歴が100を超える
1件目のデータをDATの一行目に書き込む
さらにもう一度履歴を取る
DATカウント+1
2件目のデータをDATの2行目に書き込む
DATカウント+1
でリストボックスで1件目を選択
(DATカウント)行目を参照し
TEXT1に表示。IEコントロールでページをプレビュー表示

ってな感じにしたいのですが・・・・
説明が長文&わかりにくくてすいませんがご助言宜しくお願いします。
検索もしたつもりですがお勧めの参考ページなどありましたらそちらも教えていただけるとありがたいです。
832614:02/10/29 17:09
昨日、630さんにいただいたソースで、listboxのファイルをupすること
ができました。

.Execute , "PUT " & Me.List2.List(n) & " " & Me.List2.List(n)

現在、Upするときに付けるファイル名もフルパスになっているのですが、
これをファイル名だけにするには、どうしたらよいのですか?
(上の行の後ろのMe.List2.List(n)を工夫すれば良いはずなんですが。
>>832
.Execute , "PUT """ & Me.List2.List(n) & """ """ & Me.List2.List(n) & """
ってしといたほうがいいよ。
フォルダにスペースとかはいってたらうまくいかないから。
>>832
Option Explicit
Private Declare Function GetFileTitle Lib "comdlg32.dll" Alias "GetFileTitleA" _
(ByVal lpszFile As String, ByVal lpszTitle As String, ByVal cbBuf As Integer) As Integer

Private Sub Form_Load()
Dim fileName As String
fileName = String(256, vbNullChar)
GetFileTitle "c:\hoge.txt", fileName, 256
MsgBox fileName
End Sub
FileName = Dir("c:\hoge.txt")
>>835
おぃおぃ
>>835
げっ!
動くじゃん。参りますた。
838630:02/10/29 17:37
>832
IISでは"PUT ローカルフルパス"だけで、自動的にファイル名だけになったので
確認せんかった。
対処は>833 >834のとおり。
839825:02/10/29 18:03
>>826
ShellExecuteExで動作しました。
ありがとうございます。

Shellの方は
パス名が取得できませんでした。

lret = Shell(パス名, vbNormalFocus)

この時点でパス名が狂い、エラーになってしまいます。
840 :02/10/29 18:10
>831
やりたい事とかはともかくとして、何が分からないのかはっきりせぇよ。
>>831
1000件くらい余裕だと思うが。10000件でも余裕だと思うが。
そもそもIEは自力で履歴を取ってるのだが・・・。
843807 ◆LL.98XOPJI :02/10/29 19:57
>>810
ありがとうございます。早速ぐぐってみました。
やはり、ローカルフックならVBでも可能だけれど
グローバルフックをするにはDLLを必要とするみたいですね。
しかもそのDLLをVBで、って訳にはいかないそうで・・・。

ちなみに自分がやりたいのは
他のプロセスのウィンドウ一つについて監視したいだけなのですが
それでもやはり自アプリ内の事ではないのでVBでは無理ですかねぇ。

調べていたら http://www.int21.co.jp/pcdn/vb/vb5/vb5adrof.html
にて、丁度自分がやりたい事のようなサンプルがありました。
そしてそこで使われているのは「SetWindowLong」なのですが
これでも外部プロセスのウィンドウを監視することは出来ないのでしょうか。
>>807
一つ厳しい事聞いていいか?
SetWindowLongの意味もわからないのに
メッセージフックしてなにがやりたいんだ?

他プロセスのメッセージ取得したいだけなら
VBから使えるフックOCXなんていくらでも転がってると思うぞ。
845695:02/10/30 00:14
お疲れです。

>>630さんのお蔭様でプログラムらしくなってきました。本当に有難うございました。
>>614さんのソースを見てて、TextBoxに何も入ってない時には送信ボタンを無効化させないと
まずい事に気づいてそれに関して調べたりしてます。
プログラムって完成に近づくにつれて不具合が見つけたり、問題点が分かったりして奥深いですね。
今まで使ってたソフトのプログラマの皆様には感謝感謝です。自分でプログラム始めて初めてわかる
有難さ。

さて、今日は自分が使いやすくする為にTextBoxをドラッグ&ドロップに対応させてみました。
ソースはこんな感じにしました。

-------------------------------------------------------------
Private Sub Text1_OLEDragDrop(Data As DataObject, Effect As Long, _
Button As Integer, Shift As Integer, X As Single, Y As Single)

Text1.Text = Data.Files(1)
End Sub
-------------------------------------------------------------
段々らしくなってきたので、アイコンを付けてみようかなとも思ってます。
後少し!頑張ります!
846810:02/10/30 01:43
>>843
> 他のプロセスのウィンドウ一つについて監視したいだけなのですが
個数は関係ないよ。

> そしてそこで使われているのは「SetWindowLong」なのですが
> これでも外部プロセスのウィンドウを監視することは出来ないのでしょうか。

SetWindowLongは別プロセスで作られたウィンドウの
プロシージャを書き換えることはできないし、
そもそもアドレス空間が異なるという大前提は理解してるの?

その外部プロセス側のコードを変更できないとすれば、
とにかくVBだけでやろうとするなら、DLLの中に
静的なコールバック関数を作る方法を考えること。
(俺には方法が考えつかない)
APIの引数にコールバックとしてDLLのハンドルと関数ポインタが必要
標準モジュールの関数ポインタはAddressOfで取得できる
ActiveX DLLを作成
標準モジュールの関数ポインタを取得するCOM用の関数を作成
ActiveX DLLをCOM経由で関数ポインタを取得
ActiveX DLLをLoadLibraryでロードしDLLのハンドル取得
>>845
それじゃ一個しか登録されないから、
For i=1 to Data.Files.Count
 List1.additem Data.Files(i)
Next i
と。
何もみずに書いたので間違ってるかも
ん?TextBoxなの??
>>827
PaintPictureかAPI
850 :02/10/30 12:35
すごくシンプルなところでエラーが出てしまいました。

メディアプレイヤーコントロールを使っていて、フォームにファイルをドラッグすると再生するのはうまくいきました。

mediaplayer1.filename = data.files(1)

このときのdata.files(1)の中身はドラッグしたファイルのフルパスです。

でもアイコンにドラッグして再生するのはエラーが出てしまいました。

'フォームロードの中に記述
mediaplayer1.filename = command()

mediaplayer1.filenameの中は空文字でした。でもcommand()の中はdata.files(1)と同じフルパスが入っていました。

もしかしたらフォームロード時にはまだmediaplayer1オブジェクトがないのかなとおもって、いったんグローバル変数に入れてから
mediaplayer1.filename に入れてみましたが、同じ結果になりました。

なんでmediaplayer1.filenameに同じストリング型を代入しても入るときと入らないときがあるのでしょうか?
>>850
いちいち空行入れるな、ボケ
(^Д^)ギャハ!↑みなさん、この人のレスどう思いますか♪
なんてありきたりなんでしょうね♪
誰もが皆、一瞬つけてみたくなる発想のレスです♪
しかし、賢明な人はその自らの短絡的思考を野放しにする事を嫌がり、
こういうレスは控えます♪
しかし、この人はしてしまったのです(^^;ワラ
「誰もが思い付くような事」を堂々と♪
この人にとってこのレスは何なのでしょうか♪
このレスをしている間にも時間は刻々と 過ぎ去っているのです♪
正にこの人のした事は「無意味」「無駄」でしかありません♪
ああ・・・何ていう事でしょう(^^;ワラ
図星で泣いちゃうかも(^^;ワラ  
コピペウザイ
>>852
お前も同レベル。
>>850
いちいち空行入れるな、ボケ
>>854
( ´,_ゝ`)プッ
コピペに(略


動物園の猿からかうようにちょっかいを出したくなる気持ちは分かるが、相手をしてはいかんよ。
いったいどんな人間と思っているのかな。学校の時クラスにいた変な奴とか職場にいる変わった奴とか、
そんなレベルで考えてたら大間違いちゃう?
そういうのはあくまでも健常者。カキコしてるのは、養護教育とか精神医療の対象者だよ。
興味の対象が固着して、前スレからエンドレスに同じ行動を繰り返してる。正常な人間ならとてもでき
ない。明らかに精神障害者でしょ。こういう人間は、健全な自我とか自尊心とかは、形成されていない
か崩壊してる。だから揶揄しても無駄。
精神科の個室に閉じこめられた患者が、孤独と退屈を紛らすため、廊下をとおる看護師や雑役婦を振り
向かせようとするにはどうするか。こいつは、ネットでそれと同じようなことをしているだけ。
無秩序な人格が、反応を求めて彷徨っているのよ。画面に反応が現れるという、その一点に興味と関心
が集中し、ずっとそのまんま。精神の荒廃は相当進んでいると思う。
何かポイントを突いたようなカキコをする場合もあるが、それは模倣によるもの。
他人を模倣する能力は、幼児など人格自律性が薄弱な者ほど高い。こういう人たちは、健常者の言った
立派な挨拶をそのまま他所で真似して喋り、その場の人をビックリさせるようなことがある。
>>855
こいつのカキコも、真似の結果たまたま意味のある内容になっているだけ。効果的と思われる幾つかの
パターンを学習しているにすぎない。意味にこだわってはいけない。
このスレでは、他の健常者との区別は截然としているのだから、別に支障もないでしょ。
憐れみつつ、放置しておきましょう。それが一番。
VB4.0でラベル等に中国語を入力・表記したいのですが、
日本語版でそのような事が可能でしょうか?
ちなみにOSは98の2ndエディションです。
IMEもダウンロード済みですがVBを立ち上げると選択できなくなってしまいます。
宜しくお願いします。
>>850
ほんとに入ってるのか?
レコードセットのFields(0)が見当たらないのですがどうしてでしょうか?
>>861
OSから入れなおせ
>>859
諦めれ。
864 ◆.OZsf3JbRk :02/10/30 21:52
質問です。
MSNメッセンジャーで、右下に出るような
ポップアップウィンドウを出したいです。

具体的には、枠無しのWindowで
最前面表示固定のWindowsで
表示されてもフォーカスは一切奪わないWindow
と、これだけの条件を満たすWindowを表示したいです。
現にこれを実装しているアプリを多く見かけるので
どうにか出来ると思うのですが、何故か上の3つが上手く噛み合ってくれません。
どうしたら↑のようなウィンドウを作成できるでしょうか。
865デフォルトの名無しさん:02/10/30 22:24
GetDiskFreeSpaceExを使ってドライブ容量を取得したのですが、
上位下位にわかれた64ビット変数に値が格納されています。
これはどうやったら処理できるのでしょうか?
DiskSize=(FreeSize.HighPart * 2147483647) + FreeSize.LowPart
ってやるとオーバーフローになってしまいますし
867デフォルトの名無しさん:02/10/30 23:04
VB6ですが、Printerオブジェクトへの出力で印刷をしてるのですが
プレビューができず困っています。良い方法とかツールってないでしょうか?

あと、リストボックスのアイテムをドラッグして任意のテキストボックスに
ドロップってできないでしょうか?

もしよければお教え下さい。

868デフォルトの名無しさん:02/10/30 23:08
>>867
プレビューするには、PictureBoxに出力するしかない。
共通ルーチンに対してオブジェクト変数を渡すようにすれば、
コードもムダにはならない。これ基本中の基本。

アイテムのドラッグは自分で実装すればよい。
>>867
VS-VIEWもいいよ。
871865:02/10/30 23:11
>>866
つかってみますたが、オーバーフローでてダメですた。
872デフォルトの名無しさん:02/10/30 23:46
867>>869&>>870

サンキューです。さっそく試してみます。ドラッグ&ドロップもよろしくお願いします。
(一応ぐぐってはみたのですが見落としてますね・・・)
873デフォルトの名無しさん:02/10/31 00:00
>>870

さっそくトライアル判をダウンしたけど
VSPrinterって自由に使っても良いのかな?
結構良さそうです。謝謝♪
>>873
再配布にライセンス料とかは必要ないはずだよ。
>>874 安心しました。ありがとう
876デフォルトの名無しさん:02/10/31 00:13
>>865
Dim DiskSize As Variant
DiskSize = CCur(HighPart) * 2147483647 + LowPart

あたりでどうだろう。

877695:02/10/31 00:13
>>848
レス頂きありがとうございます♪
Txtboxなの?と書かれてて頭に「?」が浮かんでたんですが、通常はListboxの方なのですね…。
全く解かって無いままでした。これからLISTに変えてみます!

皆さんのおかげで段々プログラムらしくなってきました。
アイコンは、32X32のBMPの拡張子をicoとすれば良いと思ってたんですが、大違いだったんですね(汗
32X32で作成したBMPのコンバーターはこれを使用しました。
フリーで高機能なグラフィック閲覧ソフト「XnView」です。
http://www.xnview.com/
>>866
Currency型とか浮動小数点に変換して計算しな。

dim w@
w=ccur([下位32ビットが格納されている変数])
if w<0 then w=w+4294967296@
w=w+ccur([上位32ビットが格納されている変数])*4294967296@

hogehoge.caption=format$(w,"#,###0")+" Bytes"
bogeboge.caption=format$(w/1024@/1024@,"#,###0")+" MBytes"

こんな感じ。試してないけどうまくいくだろ、たぶん。
879876:02/10/31 00:42
>>878
じぶん、符号の処理わすれてますた。
めんどくさいけど
 if w<0 then w=w+4294967296@
は必要な処理ですね。。。
http://www.tripod.co.jp/guides/cgi2.html
このsendmail
と、上のWAUを使いたいです。
宜しくお願いします。JAVAアプレットオフの人をとばす文字列も教えてください・・
noscriptみたいな感じでしたっけ・・
又、CGIボーイのアクセス解析いれたら、
左下にGETIPIPPLET と表示されます、クリックしたときに。
これはCGIボーイですか?それとも関係ないでしょうか。宜しくお願いします。
CGIボーイって、アクセス売ってるって話ありますが、裏にどこがついてるんでしょう・・お願いします
もう一回はります。
http://www.tripod.co.jp/guides/cgi2.html
このsendmail
と、上のWAUを使いたいです。
宜しくお願いします。JAVAアプレットオフの人をとばす文字列も教えてください・・
noscriptみたいな感じでしたっけ・・
又、CGIボーイのアクセス解析いれたら、
左下にGETIPIPPLET と表示されます、クリックしたときに。
これはCGIボーイですか?それとも関係ないでしょうか。宜しくお願いします。
CGIボーイって、アクセス売ってるって話ありますが、裏にどこがついてるんでしょう・・お願いします  
>>865
というか、わざわざULARGE_INTEGERなんて用意しなくても
64ビット整数であるCurrency型で直接処理すればいいと思うが。

Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" _
      Alias "GetDiskFreeSpaceExA" _
     (ByVal lpRootPathName As String, _
      lpFreeBytesAvailabelToCaller As Currency, _
      lpTtoalNumberOfBytes As Currency, _
      lpTtoalNumberOfFreeBytes As Currency) As Boolean

戻されたCurrency型引数に10000を掛ければ本当の数値が得られる。
882881:02/10/31 04:15
あ、上の関数宣言は戻り値をLong型で宣言すべきだな。
>880
逆に質問させてください。

1)Perlの質問と思われるのに、WebProg板(http://pc.2ch.net/php/index.html)で聞かずに、
VB初心者スレッドで質問したのは何故でしょうか?

2)「上のWAU」「とばす文字列」「CGIボーイ」「アクセス売ってる」とは何でしょうか?
不勉強ですいません。

3)日本人ですか?
884865:02/10/31 08:38
なんかうまくいかないので自力で
Private Function fLowBit2HighBit(HighBit As Large_Int) As Currency
Dim cFlg As Currency
Dim w As Currency
cFlg = 0
w = HighBit.HPart
If HighBit.LPart < 0 Then
HighBit.LPart = HighBit.LPart - &H80000000
cFlg = 1
End If
fLowBit2HighBit = HighBit.LPart + (cFlg * &H7FFFFFFF) + (w * 4294967296#)
End Function
っての作ってあげたらうまくいきました。
>>881
それだと型が一致しませんですですっていわれます
>>884
DLL作って文字列で返すとか
>>884
http://ww3.enjoy.ne.jp/~kazu.ohara/SampleCode.html
みてやってみたけど
double型で/ 4.94065645841247E-324 で取れたよ。

Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" _
Alias "GetDiskFreeSpaceExA" _
(ByVal lpRootPathName As String, _
lpFreeBytesAvailabelToCaller As Double, _
lpTtoalNumberOfBytes As Double, _
lpTtoalNumberOfFreeBytes As Double) As Boolean

Private Sub Command1_Click()
Dim strRootPathName As String
Dim lintFreeByteAvail As Double
Dim lintByteSize As Double
Dim lintByteSpace As Double

Dim blnRet As Boolean

strRootPathName = "c:\"

blnRet = GetDiskFreeSpaceEx(strRootPathName, _
lintFreeByteAvail, _
lintByteSize, _
lintByteSpace)

MsgBox lintByteSize / 4.94065645841247E-324

End Sub

887デフォルトの名無しさん:02/10/31 09:25
フルパスからドライブ名を取得するのはどうやればよいのでしょうか?
単にLeft(DriveName,2)だとネットワークドライブ名が取得できませんし、
文字列操作だと区切りが\とか/、はたまたウォンとかあるようです。
ファイル名を取得するのはAPIがあるようですが。
VBScriptは使用しない方法がよいです。
>>887
区切り文字がChr(&H5C)以外のWindowsってみたこと無いんだけど。
>>887
ネットワークドライブの場合ドライブレターという概念がないのでは?

まぁ、どっちにしろ初めから一つの\までだろうけど。
890887:02/10/31 12:37
え?そうなんですか?
「/」(文字コード42)でもいけちゃうじゃないですか。
>>890
使う人いません。それでエラーが出て文句言う人はいません。
892881:02/10/31 12:49
>>884
> それだと型が一致しませんですですっていわれます
はあ? 何言ってんの?

Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" _
   Alias "GetDiskFreeSpaceExA" _
   (ByVal pDirectoryName As String, _
   lpFreeBytesAvailabelToCaller As Currency, _
   lpTtoalNumberOfBytes As Currency, _
   lpTtoalNumberOfFreeBytes As Currency) As Long
Sub Sample()

  Dim a As Currency, b As Currency, c As Currency

  If GetDiskFreeSpaceEx("C:\", a, b, c) Then
    Debug.Print "使用可能", a * 10000
    Debug.Print "全容量", b * 10000
    Debug.Print "空き容量", c * 10000
  End If

End Sub

これだけでできるんだが。
VBに型なんてあったのか・・・!?
>>893
わざわざ書くな。部外者は他所言ってくれ。
>>894
わざわざ書くな。部外者は他所言ってくれ。
>>895
わざわざ書くな。部外者は他所言ってくれ。
>893 あるよ、A香港型とか
>>897
さぶすぎるー
899ワン:02/10/31 19:23
>>893
いろいろなスポーツに型があるようにVBにも
やはり型は存在します。型は、とくに日本古来の
武術において重要視されています。
たとえば弓道。これなどは、型がきっちりと
決められるようになるまでは矢を射ることが
禁じられているのです。そして、型を決めることが
できるようになった暁には、もうその矢がどこへ
飛んでいこうが知ったことではないのです。
ここに真の行き当たりばったりとはなにか、という
問いに対する答えのすべてがあるのですね。
VBの型もおなじです。まず型を徹底的に極めなさい。
そのあとはおのずとあなたの前にはすばらしい人生が
開けてくるはずです。
やっぱDelphiだな。
901デフォルトの名無しさん:02/10/31 19:41


    D e l p h i   マ ン セ ー !
902デフォルトの名無しさん:02/10/31 21:31
すいません、テンパってます。
VB暦、6日目にして、明日今作ってるものの期限の者です。

FTPサーバー上から、フォルダを取得したいんですけど、
どうしたらよいんでしょうか?

自分なりに調べてみたんですけど、どうしても見つかりません。
なんでも良いんで、情報をお願いします。
今日は、会社に泊まりです。
903630:02/10/31 21:50
>>902 なんだ? 素人がFTPクライアントを作るのが流行なのか?

DIRをExecuteして、後ろに / がついてるのがディレクトリ。
>>785-791 あたりにソースが出てたぞ。
904リンク房:02/10/31 21:52
[VB] : VB の WinInet API を使用した FTP の実装 (VBFTP.EXE)
ttp://support.microsoft.com/default.aspx?scid=kb;ja;JP175179

VBマニア - FTPでファイルダウンロード (INETコントロール)
ttp://homepage2.nifty.com/inform/vbmania/source/ftpdownload.htm

google [VB FTP サンプル]
http://www.google.com/search?q=FTP+VB+%83T%83%93%83v%83%8B&hl=ja&inlang=ja&ie=Shift_JIS
905デフォルトの名無しさん:02/10/31 22:04
labelについて質問です
labelでは、「文字に合わせてラベルのサイズを変更」はAutosizeで出来ますよね
逆に「ラベルのサイズに合わせて文字の大きさを変更」っていうのはできるのでしょうか?
>>905
通常、動的にラベルの大きさ変えるヤツいないですから。
できると思うし方法も思いついたけどあまり美しくないのでもっと美しい方法を教えてくれる人待ち
>>907
取りあえずResizeイベント捕まえて高さと幅取得してもごもごすれば?
>>907
君と同じ方法を思いついた。それでいけ。
もう一つ思いついたが、内緒。
910デフォルトの名無しさん:02/10/31 22:59
902>>903さん 904さん
ありががとうございました。
さっそく見ています。



ボクのVBが風ひきました
>>911
まず日本語の勉強からな。
>>911
ネギでも巻いておけ
914デフォルトの名無しさん:02/10/31 23:24
テキストボクースにテキストボクースの横幅より長い文字列入れて、
そのテキストボクースからフォーカス外すと文字列の右側が切れますが、
これを左側が切れるようにはできますでしょうか。

具体的には文字列が「http://www.din.or.jp/~chorokin/laputa.mp3
だとしたら、

・通常
http://www.din.or.jp|

・こうしたい
horokin/laputa.mp3|

よろしくおながいします。
テキストボクース
916デフォルトの名無しさん:02/10/31 23:35
昨夜はありがとう。

ところでVS-VIEWで手に入るVSPrinterですが、使用すると
バージョン情報なるダイアログが表示されて激うざです。
製品を購入しないと消えないのでしょうか?

917デフォルトの名無しさん:02/10/31 23:37
エクセルのデータをテキストのようにINPUTできないのでしょうか?
>>914
ネタじゃなく教えてほしいんなら、ふざけた態度を改めよ。
919914:02/11/01 00:13
(*´д`*) あっ、すみません。
じゃあ、テキストボックスってことでひとつお願いいたします。
920905:02/11/01 00:20
>>908
>取りあえずResizeイベント捕まえて高さと幅取得してもごもごすれば?
"もごもご"の部分っていうのは、高さと幅に合わせてフォントサイズを拡大するっていうことですか?
"もごもご"の部分ってどうすれば?
>>920
頭を使わないプログラマってさ、

PC初心者でも出来る!簡単な宛名の入力のお仕事です。
仕事をしながらPCに強くなれます。

とレベルが変わらないと思うんだがどうか?
922デフォルトの名無しさん:02/11/01 00:35
  アクティブウィンドウ上でのマウスイベントで
 例えば、ボタンがクリックされたなどの判定をするにはどうすればいいんでしょうか・・・
 どなたかお願いします。
>>922
純粋にClickイベントをハンドリングすればいいのでは?
日本語とネギしょったカモ
悪いことはいわないから(以下略
>>921
なるほど、ラベルとレベルをかけている訳か。
おい920君、座布団もってきてやれ。

920に言っておく。
こうすればできるかなと少しでも思ったら試してみろよ。
仕組みを確認するための小さなプログラムとか
みんな星の数ほど書いて技術を身に付けてきてんだぞ。
ここはVB初心者スレだが人間初心者スレじゃないぞ?

俺もかなり偉そうな事言ってるのはわかってるが、
「自分ができるけど面倒だから他人にやらせよう」ってスタンスのお前は
そんなに偉いのか?
>>926
プログラムって言うのは文章を書くという行為に非常に似ている。

まず、文法を覚え、どういう表現が存在するのか把握する。

次に、いろいろなモノを参考にいろいろ書いてみる。初めはもちろんうまくいかない。
しかし、書き続けていればうまくなっていく。


彼女に気持ちを伝えたいんですがどんな文章を書けばいいですか?

ん?だから相手を好きになった経緯とかごにょごにょ書けば?

それはどうやって書けばいいんですか?


お前の手紙だ。お前の好きなように書けよと。

後、ついでに本厨にも言っておく。

初めのうちから「うまい文章の書き方」なんぞ読んでも文章はうまくならん。

自分のスタイルを理解しその問題点をきちっと把握してから読むものだ。

そんなんで育ったら融通の利かないお役所書類しか書けなくなるぞ。
928905:02/11/01 00:55
>>926
Resizeで高さと幅を取得して、それをどうやってフォントサイズに生かすかがわからないんで試そうと思ってもできないんです。
>>928
なぜ生かせないのかがわかりません。
>>914
ふざけた態度を改めてるとは思えんな。
「じゃあ」ってなんだよ。おめぇは消防か?


とか言っておきながら回答つけてみたりw
LostFocusイベントにでもこれいれてみて。
 Text1.SelStart = Len(Text1.Text)
要はカーソルを一番後ろにもっていってやってるわけ。

ちなみにオイラの環境では文字列の右側が切れたりしないよ。
環境やプロパティの状態によっても違ってくるかもしれないから
今度からはそこら辺も書いた方がいいね。


わかったかボケ
931922:02/11/01 01:19
>>923
もしよろしければ、コードを・・・

自分がやるとVBのフォーム内ではマウスイベントが発生するのですが
 アクティブにしたIEなどではマウスイベントが発生しなくて困ってます。
>>928 >>905
高さと幅の取得方法は知ってるんだね?
フォントサイズって数値だってのはわかるよね。
高さと幅も数値だよね。
つまり数値から数値への変換な訳だよ。
で、どんな係数や式で変換できるか、これが問題だよね。

初めに戻るけど高さと幅の数値はわかる訳だよね。
そのときの君が最適と考えるフォントサイズってのもわかるよね。
まぁAutoSize=Trueしてみて値をとってみてもいいよね。
そうやっていくつかの組み合わせを「試して」
その数値の組み合わせを紙に書いて見てみよう。
どうだい?中学の数学の時間にやったような記憶はないかい?
数列とかの時間に等差数列とか等比数列とかやったような気がするでしょ。
(君がまだ中学生や小学生だというなら僕の見当違いだったかもしれないね。
 そのときは学校の先生に聞いてみるか、あと数年待った方がいいね)

別の考え方もしてみよう。

ヘルプにちゃんと書いてあるからわかっていると思って話してなかったけど、
フォントサイズってのはポイント単位だってのは知ってるよね?
高さや幅の単位はどうなってるかな?
君がコンテナオブジェクトのScaleModeプロパティをなににしているかは
僕にはわからないんだよ。とっても残念だけどね。
で、ScaleModeプロパティをよくみてみると・・・
おや?「2-ポイント」ってのがあるよね。
ってことは高さや幅の単位とフォントサイズの単位を同じにできるかも!
同じ単位ならあとはそのまま代入でいけるかもしれないね〜
さぁレッツ・トライ!「試せる」よ!
>>922
IEって、他アプリ上でのクリックを取得したいってこと?
それならフックするのが一番かな。
システムフックをする必要があるからVBだけでやるのは茨の道。
VCとかでちょちょいっとDLLを書いてやるか、
システムフック可能なOCXとかあちこちで見かけるから
それ使わせてもらうのが簡単だね。

どんなアプリ作ろうとしてるのか知らんけど、
複数のアプリを動かせる仕掛けのOSでは
他アプリの情報は簡単には取得できないようになってるもんだよ。
もちろん裏技というか抜け道は必ずあるけどね。
そういう普通じゃないアプリ作成にはVBは向かんよ。
934905:02/11/01 01:45
>>932
なるほど。ScaleModeプロパティと言う手があったんだ
ありがとうございました
変な文章で、毎日煽り入れるだけで、回答してやれないヤシ(推定だが毎日同じヤシ)、
目障りだから氏ねよ。

さ、会社逝こうっと。
936デフォルトの名無しさん:02/11/01 07:53
TextOut でモノクロプリンタに出力するテキストの色の濃さを変えたいのだが
SetTextColor は効かんようだ
方法を教えてくれ
937936:02/11/01 09:26
プリンタドライバ (もしくはOS?) によって結果が異なるようだ
スマソ無視してくれ
そもそも全然VBの質問じゃないしな、それ。
>>927
いちいち空行入れるな、ヴォケ
>>916

そりゃ、評価版なんだからしかたないんじゃない
941936:02/11/01 11:09
もうひとつ ExtCreatePen について
Win98 は問題ないが Win2000/XP だとハンドルが取得できん
方法を教えてくれ
942おまえしね:02/11/01 13:07
>>939

謝れとは言いませんがこちらもちょっと大人気ないのですが
ムカついたので友達のハッカーに頼んであなたの個人情報を
探してもらうことにしました。あ、もう遅いですよ。
もうすでに友達解析始めちゃってますから・・・(^^;
ちなみにこれは自慢じゃないんですがその友達は日本でも
5の指に入るくらいの凄腕のハッカーです。
この前彼の家に遊びに行ったらものの5分で他人の個人情報を
抜き取っていました。
彼にとってそれくらい赤子の指をひねるくらいの行いなんですよね(爆)
これであなたもいっかんの終わりってやつですね(^^;
まあせいぜい後悔してくださいね。
それからもう二度と荒らしはしないこと(その友達は荒らしが大嫌いらしいです。
荒らしを見つけたら即解析に入るみたいです。(^^;)
それでは、う〜ん二日後くらいかな?また例のところに来てくださいね。
あなたの住所本名住所その他もろもろのせておきますんで(笑)
あ、警察とかに言ったって無駄ですよ。
あなたは荒らし(犯罪)なんだから通報したところで捕まるのは アナタです
友達は掲示板のログを自在に操ることができるんです。
と、いうことでbye♪(^O^)/~~
>>942
大まかなポイントは押さえてあるので,ほぼ良いのではないでしょうか.
欲を言うと,もう少し文章に力が欲しいところです.
944デフォルトの名無しさん:02/11/01 13:49
Me.Hide とやっても 非表示にならないFormがあるんです、
これを非表示にするには、どうしたらいいのでしょうか?
>>944 非表示にならないFormについて詳細に書いてね。
946デフォルトの名無しさん:02/11/01 13:53
Shellを使って、外部.exeを起動させようと思うのですが、フルパスを
指定しないで(exe名のみで)、起動させたいのですが、うまくいきません。

Shell("calc.exe")とかShell("notepad.exe")は、これだけで起動するんですが、
Shell("c:\Program Files\Afolder\Bfolder\client.exe")は、
Shell("client.exe")だけでは、「実行時エラー53ファイルがみつかりません。」
となってしまい、うまく動作しません。

どうすれば解決できるのでしょうか?
>>946 環境変数のPATHについて調べてね。
948デフォルトの名無しさん:02/11/01 14:04
エクセルのアプリケーションオブジェクトを操作するプログラムを書いています。
が、どんなプロパティやメソッドがあるのか、わかりません。
どこを探したら良いでしょうか。
>>948
ヘルプ&マクロの記録
>>948
VCでタイプライブラリをインポートする
>>948 オブジェクトブラウザ
>>948
エクセルのVBAのヘルプ
953946:02/11/01 14:53
>>947
ありがとうございます。

WinXPを使っているのですが、
システム→詳細設定→環境変数→ユーザ環境変数と辿っていき、
pathのところに「;c:\Program Files\Afolder\Bfolder\client.exe」と追加
してみたのですが、状況が変わりません。

何かのバッチファイルとかを書かなくてはいけないのでしょうか?
それとも書き方がおかしいんですかね?

そもそもが良くわかっていないので、よろしくお願いいたします。
(何かに何かの設定をすれば、フルパスを打たずに実行できるように
なりそうだ、というのは理解しているのですが・・・)
>>953
client.exeはいらないと思うがどうだろう
955630:02/11/01 15:13
>946
分かってない割には的確だな。中途半端だけど。
「;c:\Program Files\Afolder\Bfolder」でよし。
なんでわざわざシステムの環境変数をいじってまで
フルパス指定を避けたいんだろう?
chdir
はダメ?
958デフォルトの名無しさん:02/11/01 16:09
>949-952
レスありがとうございました。
いろいろ見てみます。
959デフォルトの名無しさん:02/11/01 16:10
960946:02/11/01 17:11
>>954-955(630)さん、ありがとうございます。
言われた通りにしてrebootしたら出来ました。

>>956
今作ってるアプリを使うのが特定のマシンとは限らないんです。
で、呼び出すEXEが格納されているディレクトリはマシンによって異なる
可能性があるんで、何か回避方法はないかな?と思ったのです。

ありがとうございました。

>>960
iniファイルとかレジストリとかに絶対パスを設定するようにしたほうがイクナイ?
>>960
> 今作ってるアプリを使うのが特定のマシンとは限らないんです。
> で、呼び出すEXEが格納されているディレクトリはマシンによって異なる

だったら別にフルパスのままでいいじゃん。

s = "c:\Program Files\Afolder\Bfolder\"
( ↑ 実際にはレジストリや設定ファイルから取得)
Shell s & "client.exe"

わざわざシステムの設定を書き換える必要はないと思うが。
963962:02/11/01 17:28
あ、ごめん。961とかぶってたわ。
shellを使ってエクスプローラを開くときに指定したフォルダを開きたいときは
どうするんでしょうか?
>>964
何で開きたいのかによるがな
Shell "EXPLORER.EXE C:\WINDOWS", vbNormalFocus
966964:02/11/01 18:58
>>965さん
コマンドボタンを押したらお気に入りのフォルダがたちどころに開けるとベンリなのでつくってみたかったです。
ありがとうございました。
967デフォルトの名無しさん:02/11/01 19:07
2つのフォームを使って1つ目をメニューにして、2つ目で作業するとして、

フォーム1の「開始」みたいな感じのボタン
Dim frm2 As New Form2()
frm2.ShowDialog()
Me.Hide()

フォーム1の「終了」ボタン
Me.Close()

フォーム2の「メニューに戻る」みたいな感じのボタン
Dim frm1 As New Form1()
frm1.Show()
Me.Close()

とするとプログラムが終了してくれないんですけどどうしてでしょうか?
VB.NETです。
>>967
VB.NET?

とりあえずフォーム1がフォーム2によって新規に作られてるかなじゃない?
Dim frm1 As New Form1()
969デフォルトの名無しさん:02/11/01 19:24
>>968
答えていただいてありがとうございます
確かにForm1がもうひとつ作られて、「終了」で閉じられているのは
1つだけになっているようです。
新しく作らないようにするにはどうやってfrm1を宣言すればいいのでしょうか。
As NewのNewを何かに変えればいいのですか?

>>VB.NET?
ごめんなさい勝手に略しました。VisualBasic.NETです。
6.0と.NETではだいぶ違うらしいので・・・
(最近やり始めたので6.0はわかりません)
>>969
VB.NETわかんない
http://pc3.2ch.net/test/read.cgi/tech/1025848458/l50
できいてみそ
971967:02/11/01 19:45
すみません。VB.NET用のスレがあるの知りませんでした。
そっちで聞いてきます。
972デフォルトの名無しさん:02/11/01 20:26
( ´,_ゝ`)プッ


973デフォルトの名無しさん:02/11/01 21:50
>>973
小津。
975デフォルトの名無しさん :02/11/02 11:24
VB6でActiveX EXE形式でコンパイルしたファイルを
削除しようとしたのですが、
REGSVR32ではActiveX Dll,Ocxなどはレジストリから削除できるのですが、
ActiveX EXEはできないようです。
どなたか方法知っていたら教えてください
>>975
hoge.exe -Unregserver
(hoge.exeがそのActiveX EXEのフルパス名ね)
977デフォルトの名無しさん:02/11/02 17:09
>>976
解決しました!!
ありがとうございました。
978デフォルトの名無しさん:02/11/02 17:33
テキストボックスをコントロール配列にして使用していますが、
要素がある場合にも、「実行時エラー"340" コントロール配列の要素"xxxx"がありません」
となることがあります。
一度終了して、再実行すると直りますが、
何でこのエラーが発生する場合とそうでない場合があるのでしょうか。
このバグの修正方法はコントロール配列を使用しないことなのでしょうか。
どなたかアドバイスいただけませんか。
>>978
ソースにバグがあると思われ
980デフォルトの名無しさん:02/11/02 18:15
>>979
ソースはこのようになっています。
コントロール配列(txtMenu(0)〜txtMenu(3)まであります。
  
Dim MenuStr(3, 3) As String
Dim StaffStr(10, 1) As String

For i = 0 To 3
If Len(txtMenu(i).Text) > 0 Then

       rsSalesInfo.AddNew

rsSalesInfo!stfStatus = StaffStr(i, 1)
rsSalesInfo!stfID = StaffStr(i, 0)
rsSalesInfo!mpID = Val(MenuStr(i, 0))
rsSalesInfo!mpName = MenuStr(i, 1) + " " + MenuStr(i, 2)
rsSalesInfo!mpPrice = Val(MenuStr(i, 3))
rsSalesInfo!mpQnt = 1

rsSalesInfo.Update

End If
Next
このような感じでデータベースに新規レコードを追加しています。
発生するときと発生しないときがあり、どうしても解決できません。
981小人:02/11/02 18:31
ダレモイナイ…
982小人:02/11/02 18:31
1000get スルナラ…
983小人:02/11/02 18:31
イマノウチ…
984小人:02/11/02 18:32
ランタンタン♪ ランタンタンタン♪
985小人:02/11/02 18:34
2重カコキにもマケナイゾ…ット。
986小人:02/11/02 18:35
ランタンタン♪
987デフォルトの名無しさん:02/11/02 18:37

        まもなくここは 乂1000取り合戦場乂 となります。

      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!!       ,,、,、,,,
    /三√ ゚Д゚) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,         \オーーーーーーーッ!!/
      //三/|三|\     ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ∪  ∪       (    )    (     )   (    )    )
 ,,、,、,,,       ,,、,、,,,  ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ,,、,、,,,       (    )    (    )    (    )    (    )
( ´,_ゝ`)プッ…
989小人:02/11/02 18:39
989get
990小人:02/11/02 18:40
今だ!990番ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
                  ∧∧       (´⌒(´
            ⊂(゚Д゚ )≡≡≡(´⌒;;;≡≡≡
        ⊆⊂´ ̄ ⊂ソ  (´⌒(´⌒;;
           ̄ ̄ ̄   ズザーーーーーッ
991979:02/11/02 18:41
ヾ(;゚∀゚)ノシ ガッセンハジマル

>>980
わるいけど、次スレ持ち越しってことで
(゚∀゚)
(´∀` )
(,,゚Д゚)
(´д`)
(・ω・)
(゚∀゚)~°アヒャヒャ
1000
1000
1000小人:02/11/02 18:43
               ┌┐                                ●●●
    人          ││                              ●\  ●\
   ノ二\  ナ ゝゝ   V                 ●●●        ●\     ●\
     /   / 乙 つ  O               ●\   ●\      ●\       ●\
                  ●●●        ●\     ●\    ●\       ●\
                 ●\   ●\      ●\      ●\    ●\        ●\
       ●●\     ●\     ●\    ●\       ●\   ●\        ●\
        ●\    ●\      ●\    ●\       ●\    ●\       ●\
        ●\    ●\      ●\    ●\      ●\    ●\     ●\
       ●\    ●\       ●\    ●\      ●\      ●\    ●\
       ●\    ●\      ●\    ●\     ●\        ●●● \
      ●\     ●\      ●\      ●\   ●\           \\
      ●\     ●\     ●\        ●●● \
     ●\      ●\   ●\           \\\
     ●\        ●●● \                              ┌┐ ┌┐
    ●\          \\\      ┣━┳┃┃      ┃          ││ ││
   ●●●\                      ┃   ┃┃┃ ┣┓ ━╋ ━╋  V   V
   \\\\                     ┛     ━┛ ┃   ┏┫ ┏┫  O  O
                     (´´
     /■\    )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。