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

このエントリーをはてなブックマークに追加
1ぬるぽ
  ∧_∧
 ( ´∀`) < ぬるぽ
2デフォルトの名無しさん:2005/12/08(木) 02:41:46
今だ!2ゲットォォォォ!!
 ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ∩ ∩
   〜| ∪ |         (´´
   ヘノ  ノ       (´⌒(´
  ((つ ノ⊃≡≡≡(´⌒;;;≡≡≡
   ̄ ̄ ̄(´⌒(´⌒;;
   ズズズズズ
3デフォルトの名無しさん:2005/12/08(木) 02:42:26
ここは Visual Basic 〜6.0 の質問スレです。
質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。

前スレ Part44 http://pc8.2ch.net/test/read.cgi/tech/1130231657/


VB.NETは別物なので専門スレで、
VBS、APIの質問もそれぞれのスレで。(>>2 で紹介)

MSDN Online Japan ホーム
http://www.microsoft.com/japan/msdn/default.asp
Visual Studio 6.0 Service Pack 6 正式リリース
http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx
Google
http://www.google.co.jp/
※「まず自分で調べる」クセを身につけよう。


○関連スレッド
VB.NET質問スレ (Part13)
http://pc8.2ch.net/test/read.cgi/tech/1131755402/

VisualBasic6.0 対 VisualBasic .NET 2003
http://pc8.2ch.net/test/read.cgi/tech/1116555483/

API関連の質問はこちらへ
Win32API質問箱 Build38
http://pc8.2ch.net/test/read.cgi/tech/1133798345/
4デフォルトの名無しさん:2005/12/08(木) 02:43:02
○ 質問者の心得
 一.質問する前に過去ログにも目を通してみる。
 二.質問する前に MSDN などで調べてみる。
 三.VBScript はこのスレでOK。
 四.インストーラーなどの質問もOK。
 五.荒らしは相手しない。
 六.VB.NETの話題はできるだけひかえる。
 七.質問は第三者にもわかりやすいよう簡潔かつ具体的に。


○ 回答者の心得
 一.答えられない質問は無駄に罵倒せずスルー。
 二.代用法を強制しない。
 三.回答する上で必須ではない情報をむやみに聞き返さない。
 四.荒らしは相手しない。
 五.VB情報募集中。
 六.VB.NETの話題はできるだけひかえる。
 七.回答は質問者が理解できるよう具体的に。
5デフォルトの名無しさん:2005/12/08(木) 02:43:44
6デフォルトの名無しさん:2005/12/08(木) 23:24:16
新スレついでにしつもん。

VB6、DAO3.51でエクセルファイルをデータベースとして読み込んでいた。
そのときは範囲名(セルの一定範囲に名前つけるやつ)をそのままテーブル
として使えたが、DAO3.6にしたらそのままでは読めなくなった。
シート名の場合は末尾に$だが、範囲名は末尾に何つけたらおk?
7デフォルトの名無しさん:2005/12/08(木) 23:24:58
明日は有休ですが何か?
8デフォルトの名無しさん:2005/12/09(金) 01:32:51
Set WshShell = WScript.CreateObject("WScript.Shell")
Do
Set objExec = WshShell.Exec("D:\Program Files\hoge.exe")
WScript.sleep 3000
Wshshell.SendKeys "{ENTER}"
WScript.sleep 120000
objExec.terminate
WScript.sleep 300000
Loop

これでエンターを送ったあとに既に起動しているhage.exe(hogeとは別物)を終了させたいのですが、どうやったら終了出来ますか?
OSはXPです。
Alt+F4を送る以外のやり方でご教授お願いします。
全くの初心者でどこで聞いたらいいのかよくわからなくて・・・スレ違いだったらすいません。
9デフォルトの名無しさん:2005/12/09(金) 07:19:51
10デフォルトの名無しさん:2005/12/09(金) 07:22:04
SendMessage
11デフォルトの名無しさん:2005/12/09(金) 09:18:02
BASP21を利用して メールで添付されてきたCSVファイルを取り出して 指定したフォルダに
自動的に保存したいのですが。

「 output = bobj.ReadMail(file, nobody, Folder) 」を
下のコードの中にどのように追加すればいいでしょうか?


Dim bobj, ar
Dim Server As String, User As String, Pass As String, Command As String, Folder As String
Set bobj = CreateObject("basp21") ''BASP21オブジェクト
Server = "pop.xxxxx.com" ''POP3サーバー
User = "toru_tanaka" ''アカウント名
Pass = "password" ''パスワード
Command = "SAVEALL" ''コマンド
Folder = "<" & ThisWorkbook.Path & "\mail" ''保存するフォルダ
ar = bobj.RcvMail(Server, User, Pass, Command, Folder)
If IsArray(ar) Then
MsgBox "メールを受信しました"
Else
MsgBox "新着メールはありません"
End If
Set bobj = Nothing
12デフォルトの名無しさん:2005/12/09(金) 17:33:43
WinXP(SP2) VB6.0(SP6)にてframeコントロールの中にoptionコントロールを配置したものをコンパイルしました。
作成された実行ファイルをmanifestファイルを使用して起動したところ、
frameコントロールにそのままoptionを配置しているにもかかわらず正常に表示されました。

frameコントロール内の表示バグが改善された原因をご存知の方は見えますか?
コンパイルしたコンピュータで正常に表示されていれば、他のコンピュータでも正常に表示されると思っていいのでしょうか?
13デフォルトの名無しさん:2005/12/09(金) 19:46:15
ていうか誰か早く>>1を殴れ。
14デフォルトの名無しさん:2005/12/09(金) 19:57:23
ここは>>1をヌルーして1000を目指すスレになりますた
15デフォルトの名無しさん:2005/12/10(土) 01:44:54
ポ
16デフォルトの名無しさん:2005/12/10(土) 03:49:47
ヌルーされた>>1はぬるぬるになってしまうの?
17デフォルトの名無しさん:2005/12/10(土) 04:17:18
FAQ
Q.文字列関数の後ろの$って何?
A.$なしはVariant型、ありはString型を返す、また速い。$付きにNullを渡すとエラーになる。

Q.そのNullエラー現象がうっとうしいんですけど回避策はありますか?
A.文字列変数 = Null入り変数 & "" みたいに空文字列をつなげてください。

Q.モジュールレベル変数宣言のDimとPrivateって何が違うの?
A.モジュールレベル変数宣言のDimは古い構文。
 ちなみにVB.NETではPrivate Dimが正式構文で、しかもIDEがDimを自動で消す。

Q.CommandButtonにPictureプロパティを設定しても出てこないんですが?
A.Styleプロパティをグラフィックスにしてください。

Q.フォームのアイコンをなしにして、かつ×ボタンを出すってできる?
A.BorderStyleをツールウィンドウにしてください。

Q.それだとタイトルバーが細くなるからいただけないんだが?
A.なら固定ダイアログにしてIcon = Nothingにしろ。

Q.それだと可変が出来ないじゃないか。
A.まずMSのガイドラインでは「ダイアログ」は大きさ固定を原則としていることを知れ。
 それでもやりたけりゃSetWindowLongでWS_THICKFRAMEを設定しる。

Q.Foo(1)はいいけどBar(1, 2)と引数が2個以上だとエラーに。なぜ?
A.Callをつけないときは括弧なし。Foo(1)の括弧は引数の括弧じゃなくて式の括弧。
18デフォルトの名無しさん:2005/12/10(土) 04:20:49
>>17の最後のAに補足。
Foo(A) と Foo A では、引数がByRefのときに結果が変わります。
括弧で囲むと式の結果値が渡されるので、ByRefでもAの値は変化しません。
19デフォルトの名無しさん:2005/12/10(土) 14:14:34
VBに ぬるぽ はありません
20デフォルトの名無しさん:2005/12/10(土) 18:43:34
別フォームの**を〜、のAも欲しいな。
お前が書けといわれそうだが文才がないので遠慮しときます。
21デフォルトの名無しさん:2005/12/10(土) 19:51:53
>>19
VBのぬるぽはこいつだ。
実行時エラー 91 : オブジェクト変数またはWith ブロック変数が設定されていません。
22デフォルトの名無しさん:2005/12/12(月) 08:06:58
>>17の最初のAに「型宣言文字というもの」を入れてください。
23デフォルトの名無しさん:2005/12/12(月) 12:19:05
rnd関数について教えてください。
VB6sp6で麻雀ゲームを作っているのですが、山を積む方法で困っています。

一応トランプのシャッフルなどで説明を見かける方法で
以下のように作ってみたのですが、ランダムの精度(?)が低く、
これの1000回試行を何度か行ったところ、だいたい1000回のうち10〜30回ほど
同じ山が積まれてしまいます。

シャッフル回数を増やしたり、またそのシャッフル回数自体をrnd関数で
決めてみたりといったことは考えてみたのですが…
どうも根本的な解決にはならないような気がするので、何か別のいい方法があれば
教えてください。

INIT_HAIYAMA:シャッフル前のソートされたコレクション
HAIYAMA:シャッフル後のコレクション

Do Until INIT_HAIYAMA.Count = 0
Randomize
i = Int(Rnd * (INIT_HAIYAMA.Count - 1)) + 1
HAIYAMA.Add INIT_HAIYAMA.Item(i)
INIT_HAIYAMA.Remove(i)
Loop
24デフォルトの名無しさん:2005/12/12(月) 12:40:28
カードのシャッフル程度の用途は組み込みの乱数で問題ないはずだと思うけどね。
とりあえずループの中で毎回Randomize呼ぶのは問題でしょうな。
2523:2005/12/12(月) 13:20:53
Randomizeを外に出したら重複は減りました。
が、やっぱりまだでます。1000回のうち一桁程度ですが。
そういうものなのか、それともまだコードにおかしな点があるんでしょうか?
なお、牌の枚数は、三麻なので28種112枚です。
26デフォルトの名無しさん:2005/12/12(月) 14:00:45
i = Int(Rnd * (INIT_HAIYAMA.Count - 1)) + 1
はおかしい。

0 ≦ Rnd < 1

なのだから上式だと 1 〜 INIT_HAIYAMA.Count - 1 の範囲の乱数になる

配列の基数が 1 なら
i = Int(Rnd * INIT_HAIYAMA.Count) + 1

としないとダメ
2723:2005/12/12(月) 14:17:39
そうですよね。Collectionだし。これだと最後の牌が固定になりますね。
きちんとチェックせずにサンプルコードぺたぺたやってると恥かきますね。(´・ω・`)
28デフォルトの名無しさん:2005/12/12(月) 14:55:17
Q.変数や関数の後ろに$とか%とか付いてるのを見るんだけどあれは何?
A.型宣言文字。%=Integer, !=Single, #=Double, $=String, &=Long, @=Currency
 VBから追加されたもの(@)もあるが、基本的に古い構文の名残です。
 ただし文字列関数の$は、Variantを扱うかStringを扱うかの違いで現役。
29デフォルトの名無しさん:2005/12/13(火) 00:24:06
前スレより下がりそうw
30デフォルトの名無しさん:2005/12/13(火) 05:24:28
どこに前スレが有るんだ?
31デフォルトの名無しさん:2005/12/13(火) 10:12:07
>>29
1000いったスレより下がるわけないだろアホ
32デフォルトの名無しさん:2005/12/14(水) 01:24:04
Q.四捨五入を……。
A.ベストとは思いませんがとりあえず。もっと簡単なの募集。
'切り捨て
'10 の Place 乗の位で切り捨てる。
'Place = 2: 100 の位
'Place = 0: 1 の位
'Place = -1: 小数第 1 位 (既定値)
Public Function Omit(ByVal Number As Variant, Optional ByVal Place As Long = -1) As Variant
  Dim Power As Double
  Power = 10 ^ (Place + 1)
  Number = Number / Power
  Omit = Int(Number) * Power
End Function
33デフォルトの名無しさん:2005/12/14(水) 01:24:58
'切り上げ
'10 の Place 乗の位で切り上げる。
'Place = 2: 100 の位
'Place = 0: 1 の位
'Place = -1: 小数第 1 位 (既定値)
Public Function Revalue(ByVal Number As Variant, Optional ByVal Place As Long = -1) As Variant
  Dim Power As Double
  Power = 10 ^ (Place + 1)
  Number = Number / Power
  Revalue = -Int(-Number) * Power
End Function
34デフォルトの名無しさん:2005/12/14(水) 01:27:06
'四捨五入
'10 の Place 乗の位で四捨五入する。
'Place = 2: 100 の位
'Place = 0: 1 の位
'Place = -1: 小数第 1 位 (既定値)
Public Function RoundOff(ByVal Number As Variant, Optional ByVal Place As Long = -1) As Variant
  Dim Power As Double
  Dim Sign As Double
  Power = 10 ^ (Place + 1)
  Sign = Sgn(Number)
  Number = Sign * Number + 5 * 10 ^ Place
  Number = Number / Power
  RoundOff = Sign * (Int(Number) * Power)
End Function
3532-34:2005/12/14(水) 01:36:23
探せばすぐに出てくるだろ。恥ずかしいな俺よ。
ttp://www.alato.ne.jp/kazu-/vb/tip24.htm
36デフォルトの名無しさん:2005/12/15(木) 22:23:23
こんばんわっす。初心者ですが、質問させてください。

MSCOMMを使って、パソコン間のシリアル通信をしたいのですが、特殊な
NW層(TCP/IPではない)を利用する為、専用のデバイスを介して通信
する事になります。
実は、パソコン間の通信はTERATERMを使ってできているのですが、これ
をVB6.0のテキストエリア上で実現したいのです。

現状は、TERATERM→MSCOMMにデータを送り、VB6.0のテキストエリアに表示は
できるのですが、MSCOMM→TERATERMへデータ送信できません。
これでは当然MSCOMM−MSCOMMはできない訳で...

TERATERM上では、ENTERを押す事でデータが送られます。
TERATERM−NW層の間には、Cで書かれたプログラムがあるのですが、
もしかして、キーボードからの入力だけしか送られないように
なってるのでしょうか?

とりあえず送りたい文字列をoutputプロパティに入れてCRを付けて
送っているのですが全然送ってくれません。

藁にもすがりたい思いなので、何か気が付くことがあれば教えて下さい。
お願いします。
37デフォルトの名無しさん:2005/12/15(木) 22:26:22
>>36
他人がわかるように説明しろ。
38デフォルトの名無しさん:2005/12/15(木) 22:34:58
既に出来上がっているコードを解読しろとの命令が下ったのですが、
Do-Loopの使い方でわからないところがあり、手が止まってしまいました。
問題の部分がこちらです。

Dim sample As Integer

Do ---(1)
  Do ---(2)
    If sample = 0 Then ExitDo
    DoEvents
  Loop
  Text2(1).Text=frm2.Text1(0).Text
  (以下コードが続く)
Loop


と言う形なのですが、この場合、
sample の値が 0 の時は (2) の Do-Loop を抜け出して、
(1)の Do-Loop を実行するという意味になるんでしょうか?
# それだと sample の値が 0 以外の場合と変わらないのでは…?
# と、こちらの思考が無限ループしてます…。

申し訳ありませんが知恵をお貸しください。お願いいたします。
39デフォルトの名無しさん:2005/12/15(木) 22:46:17
>>38
いろいろ弄った末、無駄なコードが
残ってしまったのかもしれません。

仕様書ではどうなってまつか?

40デフォルトの名無しさん:2005/12/15(木) 22:53:47
>>39
それが渡されたのがおざなりな取扱説明書だけで、仕様書なしの状態なのです…。
いろいろ弄った結果の無駄なコード、ですか。
VB初心者のために参考書とネット情報片手にやってるのですが、
Do-Loop を使うときには当然条件式が必要になりますけど、
If 文を条件式として使うのはありなんでしょうか?
基本式では Until と While があるのは理解できたのですが、例文をいろいろ見ても
If 文が条件式として使われるものが見つからなかったので…
41デフォルトの名無しさん:2005/12/15(木) 22:58:33
きれいなプログラムとは言わないけど、アリだろ。
42デフォルトの名無しさん:2005/12/15(木) 23:10:04
>>40
while(1) {}
みたいなもんでそ。
43デフォルトの名無しさん:2005/12/15(木) 23:14:36
sample <> 0 だと無限ループだし、sample = 0の場合も単なる空ループ。
内側のDo-Loopブロックの存在意義は無いな。
44デフォルトの名無しさん:2005/12/15(木) 23:25:07
>>41,42
なるほど。
ということは>>38の場合、Do-Loopの条件文は If 文であると見るべきなんですね。

>>43
内側の Do-Loop はないものとして考えた方がよさそうですね。

皆様、貴重なご意見ありがとうございました。
45デフォルトの名無しさん:2005/12/16(金) 07:22:17
> 内側の Do-Loop はないものとして考えた方がよさそうですね。
めちゃくちゃな結論だな。
DoEventsが無きゃそうなんだが。
このルーチンは
sample = 0 以外の時はWindowsに処理を戻すと言う
ルーチンだな、コードは稚拙だが。
46デフォルトの名無しさん:2005/12/16(金) 10:02:06
ここにRDSに詳しい方、おられますか?
47デフォルトの名無しさん:2005/12/16(金) 10:04:34
なにそれ食べ物?
48デフォルトの名無しさん:2005/12/16(金) 10:08:50
>>47
Remote Data Serviceの略のようです。
4946:2005/12/16(金) 10:18:19
Set hoge = rdsDs.CreateObject("HOGE_DLL.RDSClass", "http://hoge")

このようなコードがあった場合、HOGE_DLL.RDSClassは
やはりVBで作成されているのでしょうか?
サーバーにあるActiveXDLLをCreateObjectしていると
思われるのですが・・・
50デフォルトの名無しさん:2005/12/16(金) 10:49:41
RDS以前の問題だなw
5146:2005/12/16(金) 11:19:20
>>50
なんですとー
52デフォルトの名無しさん:2005/12/16(金) 16:59:37
VisualBasic6.0 + Winsock6.0コントロールです。

Winsockコントロール1つで、
HTTPリクエストを複数なげようとしているのですが…
・レスポンスを受け取る前に次の送信をしようとするとエラー
になります。これは、そういうものだということで問題ないです。

となると、レスポンスを受信するまで次の送信を待つという処理が必要になるかと思います。
それで、まだレスポンスを受信していない場合は、フラグを立てておいてループで待つようにしてみました。
-----
Do While flgHttpRequest
DoEvents
Loop
-----
フラグはレスポンスを受けたら FALSE にセットするようにしてます。

しかし、これだとビジーループに処理を取られているためか、
DataArrivalイベントは起こりません。

どのような方法で待つのが正しいのでしょうか?
53デフォルトの名無しさん:2005/12/16(金) 18:33:51
・接続開始
Connectメゾッド

Connectイベント
SendDataメゾッドでリクエストパケット送信

DataArrivalイベント
GetDataメゾッドでデータ取得

Closeイベント
Closeメゾッドで切断

って感じ。(HTTPの場合)
複数の場所と同時接続する場合には、同時接続する分のWinsockインスタンスが必要。
54デフォルトの名無しさん:2005/12/17(土) 02:52:45
wavファイルを再生するためにMCIを使っていろいろしてるんですが、
再生速度を変えるために、MCIWndSetSpeedが使えると思ったのですが
実行すると、「ドライバは指定されたコマンド パラメータを認識できません。」と
エラーがでます。原因は何が考えられるでしょうか?

Public Function MCIWndSetSpeed(ByVal hWnd As Long, ByVal Speed As Long) As Long
MCIWndSetSpeed = SendMessageAsLong(hWnd, MCIWNDM_SETSPEED, 0&, Speed)
End Function
55デフォルトの名無しさん:2005/12/17(土) 08:00:48
グラはファミコン以下ですが、
個人的には結構面白いサッカーゲームです。
一人用ですが。

某雑誌に掲載されてた記事
「一試合3分から楽しめる本格派サッカーゲーム。
グラフィックは簡素だが、やり込み派にはオススメしたい一本。
 
こだわりのカスタマイズが面白い。
簡素なグラフィックとは逆に、戦術面は細部まで作りこまれている。
システムやプレスのON/OFFから、なんと選手一人一人のポジショニングまで設定可能だ。
こだわりのチーム作りが楽しめる。」

フリーゲームなんですが、管理人がいないらしいので、
サッカー好きでプログラムのできる方居たら助けてやってください。
このゲームで対戦できたら面白いと思うので

RolePlaying Eleven
http://ime.st/www.geocities.co.jp/Bookend-Kenji/2279/

最近立った2chスレ
http://game10.2ch.net/test/read.cgi/netgame/1134392861/
56デフォルトの名無しさん:2005/12/17(土) 17:21:25
漏れはVBは糞だ糞だと聞いてVC++をひたすら勉強した。
そしてVCが多少扱えるようになった頃VBに浮気してみたら簡単にアプリが作れた。
何より楽しい。

実行速度がどうのこうの言われてるVBだけど実際実行速度がそんなに重要になることってあるんだろうか?
57デフォルトの名無しさん:2005/12/17(土) 17:30:14
大量のデータ処理を行う、画像や音声処理は辛い。
58デフォルトの名無しさん:2005/12/17(土) 23:28:10
VB6でWindowsMediaPlayerのActiveXを組み込んで使用しています。
初歩的な使い方は何とかなったのですが、細かな使い方がわかりません。
どこかMediaPlayerのプロパティやメソッドについて解説しているサイトがあったら紹介してもらえませんか。

具体的には動画のアスペクト比を変更して再生したいのですが、それが可能かどうかすらわからない状態です。
59デフォルトの名無しさん:2005/12/18(日) 00:15:34
>>58
9&10用SDK案内
ttp://www.microsoft.com/japan/windows/windowsmedia/knowledgecenter/developerdepot.aspx

7&6.4用SDK 日本語
ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/wmplay/mmp_sdk/default.asp

7&6.4用で日本語で基本を押さえておくのが吉
ん?VBのFORM上でActiveXコントロールとして扱えるのは6.4までだっけか?
以降のはIE上では動くからWebBrowser経由か?
つーか昔ちょっと遊んだくらいだから知らないんだわw

これらMediaPlayerのSDKは単体でダウンロードサイトにあるはず。
ダウンロードしてインストしれ
60デフォルトの名無しさん:2005/12/18(日) 14:19:44
【クラスモジュール内でExcelWorkbookを開いて、そのWorkbookオブジェクトを返すには?】

Excelファイルをパス指定して、取得したオブジェクトを使いまわしたいのですが、
こんなことできますでしょうか?

Private Sub Form_Load()

Dim xlGet As getExcelObject
Dim xlApp2 As Excel.Workbook

Set xlGet = New getExcelObject
xlGet.xlPath = "C:\MyApp\SampleData\xls\Simple.xls"

xlApp2 = xlGet.openExcelWorkbook

End Sub

*** クラスモジュール ***
Public xlPath As String
Public Function openExcelWorkbook()

Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook

Set xlApp = CreateObject("Excel.Application")

Set xlBook = xlApp.Workbooks.Open(xlPath) 'Excelワークブックの読み込み

openExcelWorkbook = xlBook

End Function
*********************
61デフォルトの名無しさん:2005/12/18(日) 14:24:22
JAVAが組み込まれたHTMLのjavaのデータを読み取るにはどうしたらいいんでしょうか?
WebBrowserコントロールでTAGでくくられたデータはとれるのですが、
javaはどうするのでしょう。
どなたか親切な方、教えてください。
62デフォルトの名無しさん:2005/12/18(日) 14:24:29
一部間違ってるけど、やろうとしてことは出来るよ。
出来るかどうかしか聞いてないんだから、どうやるかは自分で調べてね。
63デフォルトの名無しさん:2005/12/18(日) 15:02:58
56はC++を使いこなせていなかっただけ
64デフォルトの名無しさん:2005/12/18(日) 17:20:57
61>>
取れる DHTML勉強しろ
DHTML勉強する気が無いなら InStr( ) Mid( ) でHTMLソース分解


JAVAってなに? Script? Applet?
ScriptならMSHTML.HTMLDocument.scripts で取得
AppletならMSHTML.HTMLDocument.applets で取得
65デフォルトの名無しさん:2005/12/18(日) 18:28:35
>>60
どんな質問やねん。
できますでしょうか、って自分で試せよw

答えをいえばそれは可能だけど、しかしそんなパブリック関数を持つなら
クラスにする意味は何もないね。

そういうゴチャゴチャしたことを内部に隠蔽するためにクラスってのはあるんだよ。
66デフォルトの名無しさん:2005/12/18(日) 22:02:03
>>56
普通のアプリを作るうえでは余り問題無い
だがVBは(.NET除く)簡単にできるぶん、VC++でやるよりできることが少ない
67デフォルトの名無しさん:2005/12/19(月) 09:27:05

漢字をカナに変換する方法を探してるのですが、
ExcelのGetPhonetic関数は、当然Excelがインストールされていない環境では使えませんし
ImmGetCompositionStringはテキストボックスなどのコントロールを使わないと取得できないようです。

XP/2000の標準環境で使えて、コントロールを使用せずに、コードのみで漢字の読み仮名を返す方法を
ご存じでしたらご教示ください。ImmGetCompositionStringをコントロール無しで使う方法でも、もちろん構いません。
環境はVB6SP5です。コントロール配置して非表示にすればいいとかは無しでお願いします。
68デフォルトの名無しさん:2005/12/19(月) 12:42:22
>>67
自助努力って言葉を知らないのか?
ちょっとググれば簡単に答えが見つかると思うが。
見つけられないなら君は無能だ。
http://www.google.co.jp/search?num=100&hl=ja&as_qdr=all&q=vb+%E6%BC%A2%E5%AD%97++ime+%22%E8%AA%AD%E3%81%BF%E4%BB%AE%E5%90%8D+%22+%E5%8F%96%E5%BE%97&lr=
69デフォルトの名無しさん:2005/12/19(月) 13:05:37
68って可哀相
70デフォルトの名無しさん:2005/12/19(月) 13:14:31
いやいや、俺の方が可哀想だって
71デフォルトの名無しさん:2005/12/19(月) 16:40:52
俺も俺も
7260:2005/12/19(月) 20:54:18
>>62,65

あー、なるほど。概要が見えてきました。

クラスモジュールの中でオブジェクトを取得させて、各々の処理を定義したメソッドを
外から使うんですね!

ちなみに、60で書いたコードをいろいろいじってるのですが、どれもエラーが出てしまって
うまくできませんでした。
Workbookオブジェクトを戻り値として扱えますよね?
73デフォルトの名無しさん:2005/12/19(月) 21:05:47
>>68の検索結果に答えが見つからない件について

無理して煽らなくていいよ。アホなのは分かっているから
74デフォルトの名無しさん:2005/12/20(火) 00:25:28
>>73
やっぱり本物の無能みたいだね。
見つからないって一番最初に出てるでしょw
馬っ鹿じゃなかろうか。

というかね、せっかくImmGetCompositionStringなんて知ってるんだから
一番最初にやるべきことはMSDNの該当ページを開いて参照のリンクを見るとか
目次に同期させて関連するような関数を手当たりしだい調べることなんじゃないの?
こんなのPG暦三ヶ月の新人君でも知ってて当然のスキルだよ情けない。
75デフォルトの名無しさん:2005/12/20(火) 08:42:34
1件目って、ざっと見た限り
> コードのみで漢字の読み仮名を返す方法
に反してるような気がするのは気のせい?
76デフォルトの名無しさん:2005/12/20(火) 10:26:21
EXCELスレでスレ違いといわれたので、一番近いと思われるここに移動してきました。

Execl 2000でImplementsを使用するとたまにエラーになります。
エラーになる箇所は、インターフェースIをImplementsしたクラスCを
I型の変数に代入しようとしたときに型が違うとでます。

また、これに関連しているかどうかわからないですが、
インターフェースをImplementsしているSheetのcellsをアクセスすると
メモリ不足というエラーが出ます。

いずれもSheet名(すべて、もしくは該当するSheet)をいったん別名に変えて元に戻すだけでなおります。
(例:Sheet1をVBAのプロパティウインドウでSheet1Xに変えてEnter。そのあとまたSheet1に戻す)

ExcelでImplementsを使うのは鬼門なのでしょうか?
それとも別の原因があるのでしょうか?
なにか関連しそうな情報はありませんか?
77デフォルトの名無しさん:2005/12/20(火) 10:46:28
> Execl 2000でImplementsを使用するとたまにエラーになります。
エラーになるものでいいから、おまえが書いたソースをここに貼れ。
何レスつかってもいいから省略せず全てね。

> ExcelでImplementsを使うのは鬼門なのでしょうか?
「Excelで」と聞くからにはVB6ではうまく使えてるのか?
そうじゃないなら鬼門とかじゃなくて、おまえが使えてないだけだからな。
78デフォルトの名無しさん:2005/12/20(火) 10:48:08
> 見つけられないなら君は無能だ。
> やっぱり本物の無能みたいだね。
> 見つからないって一番最初に出てるでしょw←
> 馬っ鹿じゃなかろうか。
> こんなのPG暦三ヶ月の新人君でも知ってて当然のスキルだよ情けない。


回答の是非は知らんが、一言多い
これが荒らし目的の煽りでなければ、天然バカだ
79デフォルトの名無しさん:2005/12/20(火) 11:52:48
納期に追われてイライラしてるんだろ。可哀想に。
80デフォルトの名無しさん:2005/12/20(火) 11:54:19
>>77
> 「Excelで」と聞くからにはVB6ではうまく使えてるのか?
Excelの話なのになんでVB6がでてくるの?
名前変えて直るって言ってるんだから、書き方に問題は無いでしょ。
81デフォルトの名無しさん:2005/12/20(火) 11:57:47
>>80
ワロタ
82デフォルトの名無しさん:2005/12/20(火) 12:06:24
>>78
で、えらそうなのに限って自分は何も知らない罠。
言うだけ言って去っていくやつ多すぎ。

もし何か知っているのなら、最低限自分の経験上の話など
何かしらの情報だせるはずだからね。
8376:2005/12/20(火) 12:20:54
>>70
全部書いたら、20レス以上になりますが。
っていうか仕事のコードなので勝手に書くことは出来ません。
バグなら自分で修正しますし、修正してもらおうとも思っていません。

エラーは何の問題も無く動いているので、わかりません。
VBAを変更すると出ると思いますが、また名前をいったん変えて戻すという作業が
面倒なので、コードを修正する必要が出てエラーが再現されたときに書きます。

繰り返しますが、コードは何も変更することなく、Sheet名を変更して戻すだけで直るんです。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

私が聞きたいのは、ExcelでImplementsを使ったプログラミングをしたことがある人に対して、
Implementsに機縁するかもしれない、このような問題があるのかということです。
84デフォルトの名無しさん:2005/12/20(火) 12:21:50
× エラーは何の問題も無く動いているので、わかりません。
○ エラーは今は何の問題も無く動いているので、わかりません。
8576:2005/12/20(火) 12:24:49
Implementsの使い方は間違ってないと思います。
VB6で普通に使っていましたし、
自分のImplementsを使ったプログラミング方法の説明サイトは
2chでも何回か紹介されましたが好評でしたよ。
86デフォルトの名無しさん:2005/12/20(火) 12:41:35
Excel内のVBAから同じExcel内のオブジェクトを使ってるでいいのかな。
短くて再現性のあるコードがあればいいんだけどね。
VBAの質問はどこいってもスレ違い扱いされるから難しいよね。
87デフォルトの名無しさん:2005/12/20(火) 13:04:09
>>85
そのサイトのURLキボンティーヌ
88デフォルトの名無しさん:2005/12/20(火) 14:05:37
> 2chでも何回か紹介されました
ってのが本当なら、ここで晒しても全く問題ないよな。
89デフォルトの名無しさん:2005/12/20(火) 14:39:42
>>76
Excel 2003だとどうなります?
もしExcel 2003で大丈夫なら、Excel 2000のバグでしょうね。
このばあいImplementsを使わないで書くしかありません。

あとインターフェイスIで宣言した変数と、クラスCで宣言した変数
が衝突しているとか。インターフェイスIに関数やサブルーチンも
書いちゃってるとか。傍観者なので身勝手なこともいっておきまつ。
9076:2005/12/20(火) 19:11:18
>>86
> Excel内のVBAから同じExcel内のオブジェクトを使ってるでいいのかな。
そうです。

> 短くて再現性のあるコードがあればいいんだけどね。
ちょっといま忙しいので、そのうちやるかもしれません。年明けにでも。
今は余計なことしたくない。

>>87-88
恥ずかしいじゃないですか。
サイト作った時点では珍しい内容でしたが、今はもっといいページ出来てますからね。

>>89
残念ながら持ってないので試せません。

> あとインターフェイスIで宣言した変数と、クラスCで宣言した変数が衝突しているとか。
どういう意味かわかりづらいですけど、そんな変なのは無いつもりです。

> インターフェイスIに関数やサブルーチンも書いちゃってるとか。
書いていません。それに書いても問題ないはずですし。

あれから思い出しましたが、VBAでワークシート起動時にCommandBarsあたりいじくって
独自のツールバーを追加しています。これが原因だとは思えないですけど。

やっぱり、Excel VBAでImplements使っている人って少ないのでしょうね。
VBででも使っている人少なそうですし。うちのサイト少しは役に立てたかな・・・。
91デフォルトの名無しさん:2005/12/20(火) 19:12:46
>>90
役立てたいからURLplz
恥ずかしいのは最初だけだってハァハァ
92デフォルトの名無しさん:2005/12/20(火) 19:18:25

「恥ずかしい」

   嘘を誤魔化す

      便利な台詞


……字余り
93デフォルトの名無しさん:2005/12/20(火) 20:53:03
>>76
多分Implements云々は思い込みだと思うよ。
まあ、そう思う俺のほうこそ思い込みの可能性もあるけどね。

エクセル関連のオブジェクトって独特の仕様(まあ不具合だけど)があって、
「お約束」を守って操作してやらないとその手の問題が起こりがち。

エクセルのお約束に関してはいろんなとこで紹介されてるから
エクセルのオブジェクトの操作に不慣れなら有名どころはチェックしといた方がいい。
管理人がやたら神経質な花ちゃんなんとかとかさ。
9476:2005/12/21(水) 11:41:02
またでたよ。さっきまで動いていたのにマシンを再起動しただけで
エラーになった。しかもちゃんと動くやつをバックアップしておいたのに
それもエラーになった。

普通にEXCELだけで動かすと、「メモリが不足しています。」
VBEを開いていると、

実行時エラー '32809'
アプリケーション定義またはオブジェクト定義のエラーです。

こんな感じのコードでエラーになっている。
Dim sh As Object
Dim i As Long
For Each sh In Sheets
i = 1
Do While sh.Cells(i, 1) <> ""←ここでエラー
Loop
Next sh
95デフォルトの名無しさん:2005/12/21(水) 11:43:50
で、エラーがでて以降はイミディエイトウインドウから、
?sheet1.nameを実行しても同じエラーになる。

で、いまふと思いついて、前に書いたようにEXCEL起動時に
CommandBarsを弄くって独自のツールバーを追加して、そこからVBAマクロ実行
しているんだけど、そこからVBAマクロを実行する前に、EXCEL開いてすぐに
VBEから?sheet1.nameを実行したらどうか。

するとエラーが出ずに、しかもツールバーからVBAマクロを実行しても
エラーがでなかった。

とりあえず、ツールバー関連もあやしいなと思いつつ、
sheetでImplementsを使っているのは、シートの内容が変更されたか調べるためだけなので、
その他の方法(sheetが変更されたかどうか調べるプロパティある?)を探すか。
sheetを自作のクラスでラッピングして、そこでイベントを取得する方法に切り替えて
やってみるかもしれないのはいつだろう。
9676:2005/12/21(水) 11:58:05
数分後・・・

ふと思って、ワークシート開いたときに、Debug.Print Sheet1.Name (シートはたくさんあるのでこれを全部)
をやってみたらどうか? ということで、

For Each sh In Sheets 以下略 で書いてみると、そこでエラー。
一行ずつ Debug.Print Sheet1.Name ・・・ としたらエラーにならず。
もしかしてFor Each が悪いのか? と思い、元のコードを
For i=1 To Sheets.Count
Set sh = Sheets(i)
〜 今までのコード〜
Next i
としたら、エラーにならず。ってことでFor Each でまわすのが悪いっぽい。

これが、ImplementsしたsheetをFor Eachでまわすのが悪いのか、
単に、sheetをFor Eachでまわすのが悪いのかは、そのうち実験するかもしれない。
97デフォルトの名無しさん:2005/12/21(水) 12:27:37





98デフォルトの名無しさん:2005/12/21(水) 12:30:19
>>96
>これが、ImplementsしたsheetをFor Eachでまわすのが悪いのか、
>単に、sheetをFor Eachでまわすのが悪いのかは、そのうち実験するかもしれない。
馬鹿?
だからどっちでもないって言ってるでしょ。
残念ながらエクセルには独特のお作法というか「おまじない」的なものがたくさんあるんだよ。
君はそのお作法を守ってないだけ。
99デフォルトの名無しさん:2005/12/21(水) 12:31:31
Implementsって何?
10076:2005/12/21(水) 12:42:51
>>98
原因がわかってないのに、なぜそう言えるのですか?
それともあなたには今の段階で、その守るべきおまじないがわかったのですか?
不思議なのですが。
10176:2005/12/21(水) 12:48:41
だいたいその、おまじないを特定しようとしているんですけどねぇ。
それに「おまじない」と言って理由もわからずに書いている人多いですよね。

そういう人が、Nothingを代入すれば解放とか
クラスとしてのForm1と実態としてもForm1の区別がつかずに
ドツボにはまるんですよ。

私は、そんな人になりたくありません。
102デフォルトの名無しさん:2005/12/21(水) 12:51:46
「アプリケーション定義またはオブジェクト定義のエラーです」でググったら

Excelウィルス検出アドインかノートン等のアンチウィルスソフトが反応すると起こるらしい。

アンチウィルスソフト切って動いたらお前は...

103デフォルトの名無しさん:2005/12/21(水) 13:14:02
>>76
いいからもう来るな
お前の態度は鼻について仕方ない
104デフォルトの名無しさん:2005/12/21(水) 18:57:39
開発環境:VB6sp3
実行環境:VB6ランタイム インストール済

この環境から、
「開発環境を.NETに移行するが、実行環境は変えずに済む方法」はありますか?
つまり、.NETでVB6と完全に同じモジュールを作れるのでしょうかといったことなのですが。

.NETがらみの質問はよくないとのことですが、VB6のソースをそのまま移行したいため、
VB6をあつかったことのある方が多いこちらのほうがわかる方がいる可能性が高いと思い書き込みしました。
105デフォルトの名無しさん:2005/12/21(水) 19:19:01
>>104
スレ違い

移行絡みの話は.NETスレでどうぞ
106104:2005/12/21(水) 19:26:50
>>105
そうですか、わかりました。スレ汚し失礼しました。
107デフォルトの名無しさん:2005/12/21(水) 21:48:45
>>104
.net frameworkが必要だから無理だよ。
108デフォルトの名無しさん:2005/12/22(木) 00:41:04
>>76
>>101
Nothingの正体も知らないで(Nothing は Null じゃ無いよ IUnknown::Release だよ)...
VBのImplementsはCOMインタフェースインプリメントだって事も知らないで...
オートメーション・COM・IDispatchも知らないで...
VBのクラスは JAVA C++ に比べて全く違うモノだから 混同させんなよ

この辺のコメントは前スレに書いてあったから見て味噌
109デフォルトの名無しさん:2005/12/22(木) 03:37:21
VB.NETのSystem.Console.WriteLineのように文字をコンソール出力するには、
どうしたらいいでしょうか?
110デフォルトの名無しさん:2005/12/22(木) 06:12:58
>>108
>この辺のコメントは前スレに書いてあったから見て味噌
「見て味噌」
ふむ・・・、なんとも懐かしい言い回しですね
このコメントから108の人物像が浮かび上がってきます
108は、OSをいたぶり殺す変質者、土地勘があり、年齢は20代〜30代、
もしくは40代〜50代、なんらかの前歴がある人物と考えられます
111デフォルトの名無しさん:2005/12/22(木) 06:22:59
>>109
APIを使う
VBに限った話じゃないので、
何を使うか、どう使うかはここでは聞かないでね
112デフォルトの名無しさん:2005/12/22(木) 09:36:22
>>109
前世紀のVBマガジンでサンプルあったよ。
113デフォルトの名無しさん:2005/12/22(木) 12:18:55
コレクションに任意のKeyを持つメンバの有無を判断するにはどうすれば良いのでしょうか?
実際にコレクションにKeyを入れてエラーになるかどうかで判断する方法は解るのですが、
エラーになるかどうかで判断する方法以外で、出来ればなるべく高速な方法が知りたいです。

あと任意のコレクション内の位置(数値インデックス)のメンバに割り当てられてるKeyを調べる方法、
任意のKeyを持つメンバのコレクション内の位置(数値インデックス)を調べる方法を教えてください。

例えば
Collection.Add "hoge", "foo"
Collection.Add "huga", "bar"
の場合、"bar"というKeyを持つメンバの有無(=True)、"baz"というKeyを持つメンバの有無(=False)を調べたり、
Collection.Item(1)から、"foo"というキーを調べたり
Collection.Item(bar)から、2という位置を調べたりしたいのです。

クラスを使ってCollectionのようなものを自作すれば全て出来るし、
メンバに文字列ではなく、クラスを割り当てるだけでも下二つは可能なのですが、
標準のCollectionのメンバに単一の文字列を割り当てた場合に、これらのことをやる方法を教えてください。

環境はWindowsXP、Visual Basic6.0 SP5です。
114デフォルトの名無しさん:2005/12/22(木) 16:22:49
>>113
その辺ことを便利にするのにDictionaryができたと思うからCollectionじゃできないんじゃない?
115デフォルトの名無しさん:2005/12/22(木) 18:34:23
Dictionaryって順序が保証されないんじゃ?
116デフォルトの名無しさん:2005/12/22(木) 19:31:11
今、VB6でPNGファイルから、圧縮してJPEGファイルを作るプログラムを
作成しようとしています。この圧縮のところを、LeadTools Raster Imaging Pro Ver.13
で作成するところまで決まっています。ところが、マニュアルが紛失してないので、
どなたかサンプルをつけてもらえないでしょうか?
また、その他の手でいい方法がありましたら、ご教授願います。
よろしくお願いします。
117デフォルトの名無しさん:2005/12/22(木) 20:22:25
> マニュアルが紛失してないので
正規ユーザーなら、正規ライセンスを提示すれば
マニュアルくらい実費で送ってくれるだろ。

はっきり言って、コードを書いてもらいたいが為の言い訳か
割れ厨の詭弁にしか聞こえないぞ。

それに「決まっています。」って言っておきながら、その他の手も糞も無いだろ。
118デフォルトの名無しさん:2005/12/22(木) 20:52:19
119デフォルトの名無しさん:2005/12/22(木) 23:31:00
>>116
マニュアルに親切丁寧に使い方なんて書いてなかったキガス
ライブラリインストールしたんならヘルプも入ってるでしょ。
それで十分だしマニュアルと大体同じ。
それでも分からなければインストールされているサンプル見れば良いよ。
120デフォルトの名無しさん:2005/12/23(金) 01:33:39
>>>>>>>>>>>116
ライブラリ購入しても 使いこなせる人材がいない可愛そうな会社...
12176:2005/12/23(金) 14:23:51
>>108
んなこと知ってるから。

で、今日は休みなのでテストしてみた。
今までの検証から思いつくであろう最少のコードでテストしたら
見事に再現した。再現コードは以下の通り

【クラスモジュール名 I】 (Instancingを2 - PublicNotCreatableに変更】
Option Explicit
Public Sub foo()
End Sub

【Worksheet名 Sheet1、Sheet2、Sheet3】
Option Explicit
Implements I
Private Sub I_foo()
End Sub

【Workbook名 ThisWorkbook】
Private Sub Workbook_Open()
Dim o As Object
' Dim i As Long
' For i = 1 To Sheets.Count
' Set o = Sheets(1)
' Debug.Print o.Name
' Next i
For Each o In Sheets
Debug.Print o.Name
Next o
End Sub
12276:2005/12/23(金) 14:24:22
当然Implements Iをしなかったら動く。
また、ThisWorkbookのコメントアウトの部分を省くと動く。
しかも、不思議なことにコメントアウトの部分を省くとFor Eachの部分までちゃんと動く。
その後で、またコメントアウトし、Excelを終了し再度Excelファイルを開くとなぜか動く。

でも、そのあとでコードを変更(スペースを入れる程度)したら動かなくなる。
たぶん、内部で読み込まれているExcel関連のDLLの生存期間に依存していると思われるので、
コードを変更しなくても、しばらく時間を置くか、PCを再起動したら動かなくなるだろう。
123デフォルトの名無しさん:2005/12/23(金) 14:25:09
>>98
> >これが、ImplementsしたsheetをFor Eachでまわすのが悪いのか、
> >単に、sheetをFor Eachでまわすのが悪いのかは、そのうち実験するかもしれない。
> 馬鹿?
> だからどっちでもないって言ってるでしょ。
残念ながら、俺が言ったとおり、ImplementsしたsheetをFor Eachでまわすのが
悪いという結論に達してしまった。もし反論があるのなら、ちゃんと検証をしてから理論的にどうぞ。
まあ「おまじない」と言って理由もわからず、ただ書いてあることを鵜呑みにしている奴は俺には追いつけないだろう。

では、新しい「おまじない」w

Excel VBAでは、何かのインターフェースをImplementsしたSheetを
For Eachで回すと、メモリ不足やアプリケーション定義またはオブジェクト定義のエラーです。などの
バグが発現する。それを回避するためにFor Eachではなく、Sheets.Countを使って回した方がいい。

ここまでやって、人に役立つことを書ける人間になろうね。
124デフォルトの名無しさん:2005/12/23(金) 14:33:45
ここはお前の日記帳ですね^^
125デフォルトの名無しさん:2005/12/23(金) 15:01:41
>>123
馬鹿だね。
実験結果の解釈法を知らないのは理科系出身じゃないのかな。
牛乳飲んで腹を下したからって「下痢の原因は牛乳」なんていったら医者失格だわな。
原因は熱(牛乳が冷えていたから)かも知れないでしょ?

断言するけどImplements云々は直接的な原因じゃないよ。
どういうことかといえば、インターフェイスを継承せずに
同じ症状が出るコードがまず間違いなく書けるだろうってことね。
126デフォルトの名無しさん:2005/12/23(金) 15:07:00
>>125
おまい頭いいな
127デフォルトの名無しさん:2005/12/23(金) 15:16:24
自慢の自サイトでやればいいのになw
128デフォルトの名無しさん:2005/12/23(金) 15:52:30
>>125
で、直接的な原因は?
断言の根拠は?
間違いなく書けるだろうじゃなくて、書いたらどうだ

本当にお前理科系出身者かw
129デフォルトの名無しさん:2005/12/23(金) 15:57:37
私のために争わないでwwwwwwwwwwwww
130デフォルトの名無しさん:2005/12/23(金) 16:07:03
ボクのシナリオにのって踊らないでwwwwwwwwwwwww
131デフォルトの名無しさん:2005/12/23(金) 17:03:41
>>121-123

解決したみたいだけど、そもそもImplementsのヘルプを読むと

>Implements ステートメント
>クラス モジュール内にインプリメントされるインターフェイスまたはクラスを指定します。

って書いてあるんだよね。Sheet1やらSheet2って、
「クラスモジュール」ではないような気が。

アナタには、パンツの表と裏を間違えて穿いてるみたいな
オカシサがあるので気をつけましょう。
132デフォルトの名無しさん:2005/12/23(金) 17:41:14
>>121
確かに動かないな
でも Dim o As Object を Dim o As Worksheet に変えたら動いたよ
原因は分からんけど IDispatch::Invoke が Name を呼ぶのに失敗してるな 多分これエクセルのバグっぽい >> M$に報告しとけ

つーかWorksheet型があるんだからObject型なんか使うなよ
これからはFor Each文使わないでWorksheetでやれ
Sheets.Itemが返す型が分からなくて不安ならTypeOfでインタフェースチェックしろ いいな
133デフォルトの名無しさん:2005/12/23(金) 17:45:15
バイトから数値の変換で、±を気にしなかったら、2BYTEからINTEGER変換は、
Dim result(2) As Byte
result(0) = (val And 255& * 256) \ 256&
result(1) = (val And 255&)
でできると思いますが、8BYTEからCURRENCY変換はどうやったらいいか、
教えてください。
ANDがオーバーフローしてANDが使えないです。

リトルエンディアントでメモリに入ってるから、
RtlMoveMemoryとかで1byteずつとってくるのがいいでしょうか。
134デフォルトの名無しさん:2005/12/23(金) 19:57:47
>>133
よくわからない質問だなあ。
そのバイト配列は当然もともとCurrency型の値から作ったんでしょ?
そんな必要がどこにあるのか知らないけど。
その逆の操作をするだけじゃないの?

まああまりエレガントなやり方ではないけどバイト配列を一旦バイナリファイルに
書き出せばVBネイティブの機能だけでできるね。
演算でやろうってそもそもCurrency型のビットイメージのフォーマットなんて
どっかに公開されてたっけ?
135デフォルトの名無しさん:2005/12/23(金) 20:59:51
>>131
Sheetもクラスモジュールだろ
っていうか、それを言ったら、
Formもクラスじゃないとかそういうことになる。
おかしいだろ?
136デフォルトの名無しさん:2005/12/24(土) 02:45:39
>>134
やりたいのは、Socket経由でCurrencyの値を送信して、かつ、復元することです。

ttp://www.codeguru.com/vb/gen/vb_misc/algorithms/article.php/c7495/
に、値の詳細っぽいのがありました。
ただ、Lsetで値をとっても、指数っぽいのがはいってたんで、
本当かどうかはわからないです。Longの場合はうまくいくんですが。

Private Type FROM_LONG
Value As Long
End Type
Private Type FROM_CUR
Value As Currency
End Type
Public Function Long2Byte(ByVal Value As Long) As Byte()
Dim Dest As TO_BYTEARRAY4
Dim Src As FROM_LONG
Src.Value = Value
LSet Dest = Src
Long2Byte = Dest.Value
End Function
Public Function Cur2Byte(ByVal Value As Currency) As Byte()
Dim Dest As TO_BYTEARRAY8
Dim Src As FROM_CUR
Src.Value = Value
LSet Dest = Src
Cur2Byte = Dest.Value
End Function

これでLong2Byteで、256を変換すると、256 = 0, 1, 0, 0 の配列になります。
Cur2Byteで256を変換すると、256 = 0, 16, 39, 0, 0, 0, 0, 0 の配列になります。
137デフォルトの名無しさん:2005/12/24(土) 02:57:17
>>134

Public Function Byte2Long(ByRef Value() As Byte) As Long

Byte2Long = _
(Value(3) * 256& * 256& * 256&) + _
(Value(2) * 256& * 256&) + _
(Value(1) * 256&) + _
(Value(0) * 1&)

End Function

Public Function Byte2Cur(ByRef Value() As Byte) As Currency

Byte2Cur = _
(Value(7) * 256@ * 256@ * 256@ * 256@ * 256@ * 256@ * 256@) + _
(Value(6) * 256@ * 256@ * 256@ * 256@ * 256@ * 256@) + _
(Value(5) * 256@ * 256@ * 256@ * 256@ * 256@) + _
(Value(4) * 256@ * 256@ * 256@ * 256@) + _
(Value(3) * 256@ * 256@ * 256@) + _
(Value(2) * 256@ * 256@) + _
(Value(1) * 256@) + _
(Value(0) * 1@)

End Function

byte配列にした値を、上記みたいに復元したいってことです。
138デフォルトの名無しさん:2005/12/24(土) 03:44:13
>>137
やっぱり>>134のでOKだと思うぞ?
エンコードしたのと逆順でデコードすればいいだけだよ。
手元で確認したけど、バイト配列の中身を盲目的にCurrencyに突っ込むだけで普通に復元できるよ。
(俺はCopyMemory使ったけど)

難しく考えすぎてないかい?
それとも復元は自前で計算しないと駄目なの?
139デフォルトの名無しさん:2005/12/24(土) 11:06:40
>>138

>>137エンコード時点で、ANDの演算がオーバーフローしてしまいます。

Public Function Cur2Byte(ByVal Value As Currency) As Byte()

Dim Dest(8) As Byte

Dest(0) = (Value And (255@ * 256 * 256 * 256 * 256 * 256 * 256 * 256)) \ (256@ * 256 * 256 * 256 * 256 * 256 * 256)
Dest(1) = (Value And (255@ * 256 * 256 * 256 * 256 * 256 * 256)) \ (256@ * 256 * 256 * 256 * 256 * 256)
Dest(2) = (Value And (255@ * 256 * 256 * 256 * 256 * 256)) \ (256@ * 256 * 256 * 256 * 256)
Dest(3) = (Value And (255@ * 256 * 256 * 256 * 256)) \ (256@ * 256 * 256 * 256)
Dest(4) = (Value And (255@ * 256 * 256 * 256)) \ (256@ * 256 * 256)
Dest(5) = (Value And (255@ * 256 * 256)) \ (256@ * 256)
Dest(6) = (Value And (255@ * 256)) \ 256@
Dest(7) = (Value And (255@))

Cur2Byte = Dest

End Function

自前でエンコード/デコードしたいのは、
Javaや、Cのlong等、VBのLongを超える値を
Socket経由でやりとりするのを考慮したいからです。

140デフォルトの名無しさん:2005/12/24(土) 11:16:44
>>76が近いうちに苦しんで死にますように
141デフォルトの名無しさん:2005/12/24(土) 12:03:45
String変換して送受信すればいいんじゃね?
142デフォルトの名無しさん:2005/12/24(土) 12:31:36
>>76が近いうちに苦しんで死にますように('人`)
143デフォルトの名無しさん:2005/12/24(土) 14:10:15
MSHFlexGridで、Excelのような入力を実装しようと思い、
http://www.bcap.co.jp/hanafusa/VBHLP/MSFlexNO7.htm
の方法を試したのですが、IMEがONの場合に入力(というか表示)がうまくいきません。
IMEがONの場合、

a入力    [|    ] ("あ"を入力したのに何も表示されない)
Enter入力 .[あ|  ] (確定済みの黒文字)

となってしまうのですが、( [  ]がテキストボックス、 | がキャレット)

a入力    [あ|  ] (未確定の青文字)
Enter入力 .[あ|  ] (確定済みの黒文字)

となるようにするにはどうすれば良いでしょうか?
毎回何らかのキー(サンプルではF2)を押してから入力するというのも面倒なので
どなたか解決法をご教示ください。
環境はWinXP VB6SP6 ATOK15です。
144デフォルトの名無しさん:2005/12/24(土) 14:37:53
>>141
漏れもそう思ったw
145デフォルトの名無しさん:2005/12/24(土) 14:58:03
Stringでやると、データの総受信料が増えるのと、
javaやcの8byteのlongを送受信するサーバーとの通信ができなくなるので、
byte配列でやることを考えました。

その後、ANDでのマスク処理を、256での割り算、
\演算子の処理をcurrencyでもいけるように割り算をつくって、
mod演算子の処理をcurrencyでいけるように割り算をつくっていけるようにしました。

result(7) = remaind(divide(val, (127@ ^ 7)), 256)
result(6) = remaind(divide(val, (256@ ^ 6)), 256)
result(5) = remaind(divide(val, (256@ ^ 5)), 256)
result(4) = remaind(divide(val, (256@ ^ 4)), 256)
result(3) = remaind(divide(val, (256@ ^ 3)), 256)
result(2) = remaind(divide(val, (256@ ^ 2)), 256)
result(1) = remaind(divide(val, (256@ ^ 1)), 256)
result(0) = remaind(divide(val, (256@ ^ 0)), 256)

で、currencyをばらして

(val(pos + 7) * 127@ ^ 7) + _
(val(pos + 6) * 256@ ^ 6) + _
(val(pos + 5) * 256@ ^ 5) + _
(val(pos + 4) * 256@ ^ 4) + _
(val(pos + 3) * 256@ ^ 3) + _
(val(pos + 2) * 256@ ^ 2) + _
(val(pos + 1) * 256@ ^ 1) + _
(val(pos + 0) * 256@ ^ 0)

で復元。
146デフォルトの名無しさん:2005/12/24(土) 16:08:05
>>145
正しく無い
147デフォルトの名無しさん:2005/12/25(日) 18:25:27
ディストリビューションウィザードでVBで作ったアプリのインストーラを作りました。

OLEを使ってExcel2000の表にデータを書き込むプログラムです。
Excel9.Olbの依存情報が不足しているというメッセージが出つつもインストーラが完成しました。
ファイルの中には確かにExcel9.olbが入っています。

当然 自分の環境はExcel2000が入っているので動作するのですが
Excel2003のパソコンでもこれは 動くのでしょうか?
Excel97は古いので互換が無い可能性があるのですが
Excel9.Olbだけで Excel2003,2002のPCでも動くのでしょうか
148デフォルトの名無しさん:2005/12/26(月) 11:23:15
そもそも。再配布可能なのか?Excel関連?
149デフォルトの名無しさん :2005/12/26(月) 16:11:50
picture.lineなどで書いた線って,
マウスイベントで修正したり消去できます?

図形をトレース出来るようにしたいのですが,
lineを修正や消去したかったらどうしたら良いですか?
150デフォルトの名無しさん:2005/12/26(月) 16:25:50
書いた線はオブジェクトじゃないから、自分でオブジェクトとして内部管理する必要あり。
151デフォルトの名無しさん:2005/12/26(月) 16:27:47
>自分でオブジェクトとして内部管理

どーゆーことでしょうか?
152デフォルトの名無しさん:2005/12/26(月) 16:34:00
書いた線ってのはその時点で始点・終点などをピクチャーボックスが記憶してるわけじゃない。
もうその時点でそれらの情報は既になくなっているってこと。
なので、自分で描画する線のそれら情報を内部的に確保しておく。

その上でマウス操作された場合にリアクションするコードを書けばいいわけで。
大変だけどね。
153デフォルトの名無しさん:2005/12/26(月) 16:37:02
おおざっぱにいうと
書いた線の情報を画像としてだけではなく
いわゆる変数に入れとく感じ?
座標やらなんやら
154デフォルトの名無しさん:2005/12/26(月) 16:39:25
>>153
そういうこと。
それをうまく作っておけば、座標情報を表示する線分・領域は乖離せずに動作するはず。
155デフォルトの名無しさん:2005/12/26(月) 16:40:24
>152

思い付いた方法としては,
あらかじめlineコントロールで大量に準備して,
visible=falseにしておく.
そしてトレースしたらvisible=trueにして表示させる.
で,mousedownで消去するなら,line1(a)をclearする.

ってな感じですか?
156デフォルトの名無しさん:2005/12/26(月) 16:49:27
>>155
ちょっw
それはまずいんではないかとw
それやるにしてもコンテナ使うとかありそうだけど・・・

素人レベルの漏れが思うに
書いた線を全て記憶
消したり書いたりしたら
ピクチャボックス再描画って感じジャマイカ?
157デフォルトの名無しさん:2005/12/26(月) 16:54:28
LineメソッドとLineコントロールをごっちゃに話してるから少し整頓。

Lineコントロール自体はオブジェクトで基点・終点は持っている。
ただしイベント認識できないので、自分がClickされたことを感知できない。

Picture自身は基本的には内部にLineメソッドで線を描くことは可能。

ここまでの話ではどちらで線を引いてるのかグレーだよ。


で、やり方のキーワードだけ書いとくね。
Lineコントロールを実行時に生成するのは、コントロールの動的生成、コントロール配列などを見てみて。
MSDNにサンプルあるよ。実行時にコントロールを起こす方法。
生成するコントロールの親ContainerはFormじゃなくPictureBoxにしておくこと。
多分だけどForEachで内包するコントロールを列挙して処理できると思う。
内包した場合、座標は親に対してになるので若干計算が楽になる。
158デフォルトの名無しさん:2005/12/26(月) 17:37:31
>>157

んっ?
lineコントロールはイベント認識しないんじゃないんですか?
何を使えば(トレースした線は)マウスイベント認識してくれるんでしょう

>150の自分でオブジェクトとして内部管理する必要あり。
ってのは,どーやったらobjectに出来るんですか?

もしかして,
線を座標として認識させて、
座標(x,y)がクリックされたらって感じでマウスイベントを起こすんですか?
159デフォルトの名無しさん:2005/12/26(月) 17:48:46
>どーやったらobjectに出来るんですか
VBは自作やね オブジェクト指向のセンス問われるよ
それに Lineコントロールを使わないで全て自己描画でやると相当骨が折れると思うよ

>座標(x,y)がクリックされたらって感じでマウスイベントを起こすんですか?
絵(線)にはイベントは無いよ
キャンバス(この場合はPictureBox)のクリック座標を元に線を描画する

基本的に Windowsの描画方法が分かってない気がする
Windows上の画像の修正処理は 一旦全て消して(塗りつぶして)から データを元に書き直してるんだよ
(高速で処理しているから 人間には処理されてる様に見える)

ゲームPGの参考書に描画について詳しく書いてあるから 目を通していくといいかも
160143:2005/12/26(月) 17:56:07
>>143もよろしく御願いします
161デフォルトの名無しさん:2005/12/26(月) 19:56:40
>>160
だが断る
162デフォルトの名無しさん:2005/12/26(月) 22:54:16
あらかじめlineコントロールで大量に準備して,
visible=falseにしておく.
そしてトレースしたらvisible=trueにして表示させる.
で,mousedownで消去するなら,line1(a)をclearする.

を改良して

lineコントロールを動的配列にしました.

すると,
lineがimageの下に(formに配置される)配置されて表示されないのですが,
何か対策はありますか?
163デフォルトの名無しさん:2005/12/26(月) 23:40:58
君につける薬は無いようです
164デフォルトの名無しさん:2005/12/27(火) 02:03:51
>>157をよく読めよ

PicrueBoxの上にちゃんとラインコントロール置いてる?
一応ZOrderも実行したほうがいいかもな
165デフォルトの名無しさん:2005/12/27(火) 09:52:39
TabletPC上でVB6のプログラムから、以下のようなことをしたいです。

・VB画面上のコマンドボタンをタップ、あるいはテキストボックスをタップするとテンキーあるいはTablet PC 入力パネルが開く。
・テンキーや入力パネルをタップ、描画して「送る」などをタップすると、入力した数字または文字が所定のテキストボックスに落ちてくる。
・その後はテンキーや入力パネルを自動的に閉じる、もしくは×をタップすることで閉じられる。

ttp://review.tabletpc.jp/snap/TabletPC.asp?PID=1015 にあるような、、「Ink Pictureコントロール」と「Ink Editントロール」を使用可能にす
る、というところまではできました。

ttp://www.microsoft.com/japan/windowsxp/tabletpc/using/devtips/default.asp
などを参考にしているのですが、テンキーやパネルの起動、データの受け渡しなどを
どうすればよいのかが分かりません。

MicrosoftのMSDNを参照しつつ、
'Declare a new PenInputPanel object
Dim thePenInputPanel As PenInputPanel

Private Sub Command1_Click()
Set thePenInputPanel = New PenInputPanel

'Attach the PenInputPanel to an InkEdit control
thePenInputPanel.AttachedEditWindow = InkEdit1.hWnd
End Sub

というコードまでは通っています。
以下、
ttp://msdn.microsoft.com/library/default.asp?=/library/en-us/tpcsdk10/lonestar/microsoft.ink/Classes/peninputpanel/Events/panelmoving.asp
のあたりを参照しているのですがどれを用いたら良いのか。また、テンキーについてはどのあたりに記述があるのかが分かりません。
よろしくお願いいたします。
166デフォルトの名無しさん:2005/12/27(火) 09:53:10
>>164
LineやラベルはPictureBoxの(ZOrderとしての)上には置けないよ。

>>162
imageじゃなくてPictureBoxを使わないとダメだ。
んで、LineコントロールはPictureBoxの中におくこと(PictureBoxをコンテナにする)
16776:2005/12/27(火) 10:50:51
やっぱりだめ。

例の、WorksheetにImplementsをする件だけど、
どうしてもおかしくなる。>>132のDim o As Worksheet にするやつでもだめだった。

いったんはうまく動くんだけど、SheetsをFor EachやForで繰り返したりいろいろしていると、
Worksheetからインターフェースを取り出すところで型が違うってエラーになる。
例 Sheet1がInterfaceをImplementsしているときに、Dim i As Interface : Set i = Sheet1

で、例のごとくInterfaceの名前をいったん変えて戻すと再コンパイルされるからか動くようになる。

完全にExcel2000のバグだろう。たぶんSheetにImplementsしない以外に対処法は無い気がする。
168デフォルトの名無しさん:2005/12/27(火) 11:07:01
愚痴・独り言はチラシの裏へ。
169デフォルトの名無しさん:2005/12/27(火) 11:40:46
スレちがいかもしれないけど、
ネットワークパスワード入力ダイアログをよびだすコマンドがあったら教えてください。
170デフォルトの名無しさん:2005/12/27(火) 14:37:12
>>167
空気嫁
171デフォルトの名無しさん:2005/12/27(火) 19:20:46
おとなしくエクセルのVBAとかオートメーションを扱ってるサイトを参考にしてれば
今頃とっくに解決してる程度の問題だと思うがな。

エクセルのバグだあ?
最初からそういってるだろ。みんなそれをだましだまし使ってんだよボケが。

しかし無能なくせに「俺流」でやりたがって無為に時間を浪費する馬鹿って
どこにでもいるよな。
そういう奴って得てして自分は特別だと思ってるみたいだけどw
172デフォルトの名無しさん:2005/12/27(火) 20:44:22
>>171はImplementsが特別な物だと思っている素人
173デフォルトの名無しさん:2005/12/27(火) 20:45:42
>>171
俺流ってなんのこと? Implements使うこと?
174デフォルトの名無しさん:2005/12/27(火) 21:03:26
話の文脈ってのがわからないようでw
馬鹿じゃないの。

>>76がエクセル扱ってるサイトを少しも参照した様子がないところを責めているのに
Implementsとか意味わからん。
ここ十年こういうタイプの「話の通じない奴」が本当に増えたな。
175デフォルトの名無しさん:2005/12/27(火) 21:05:07
>>171
無為に時間を消費するというが、そうやって時間を消費してわかったことが
公開されていることで、あんたが時間を消費せずにすんでるんだろうが。

なんで、わざわざ自分の時間で調べてくれている人に素直に感謝できないかな。
176デフォルトの名無しさん:2005/12/27(火) 21:06:14
>>174
でさ、お前は参照したの?

WorksheetにImpelementsすることで発生する問題が
書いてあるサイトあるの?
177デフォルトの名無しさん:2005/12/27(火) 21:09:15
>>76さん自演しすぎですよ
178デフォルトの名無しさん:2005/12/27(火) 21:13:38
>>176
>>174は現在必死に検索中w
179デフォルトの名無しさん:2005/12/27(火) 21:34:03
ここだけに限らないけど、最近他人に偉そうに検索しろと言っておいて、
自分が検索してない、しかも何も知らない。って奴が増えたな。
180デフォルトの名無しさん:2005/12/27(火) 21:34:59
馬鹿な奴ってどこまでも馬鹿だなあ。
文脈のわからない馬鹿だ、っていっているそばからこれだもの。
正直発達段階に問題があると思うよ。
おれ自身振り返って、少なくとも小学校6年生段階でも
こんなに劣悪な読解力してなかったと思うし。

WorksheetにImpelementsすることで発生する問題が
書いてあるサイト?
最初からImpelementsなんぞ原因じゃないといっているのにアホかw
181デフォルトの名無しさん:2005/12/27(火) 21:36:03
>>76さん自演しすぎですよ
182デフォルトの名無しさん:2005/12/27(火) 21:38:31
>>180
じゃあ何が原因なの?と聞いてあんた答えられないでしょ。
んで、言うのはバグがある。バグがある。
何をやるのが悪くて、何をやれば解決するか何一ついえない。

君には「無能」の二文字を送ってあげるよ。
183デフォルトの名無しさん:2005/12/27(火) 21:43:25
Excelにバグがあるのはわかってるんだよね。
それどころか、どんなソフトにだってバグはある。
あるソフトにバグがあるってだけなら、誰にだって言える。

重要なのは、どうしたらそのバグが再現されて、
どうすればそのバグの影響を回避できるかって事なんだ。
184デフォルトの名無しさん:2005/12/27(火) 21:49:38
>>76さん自演しすぎですよ
185デフォルトの名無しさん:2005/12/27(火) 21:51:29
177 名前:デフォルトの名無しさん[] 投稿日:2005/12/27(火) 21:09:15
>>76さん自演しすぎですよ

181 名前:デフォルトの名無しさん[] 投稿日:2005/12/27(火) 21:36:03
>>76さん自演しすぎですよ

184 名前:デフォルトの名無しさん[] 投稿日:2005/12/27(火) 21:49:38
>>76さん自演しすぎですよ

必死すぎw
186デフォルトの名無しさん:2005/12/27(火) 21:53:48
>>76さん自演しすぎですよ
187デフォルトの名無しさん:2005/12/27(火) 22:03:21
根本的な原因がなにであるかはMSでないと分からない。
われわれが唯一出来ることは、どうやったらそのバグの影響を受けるかって事だ。

そのバグの影響を受けるコードはいくつもあるだろう。
しかし、WorksheetにImplementsをするだけで影響を受けるという情報は初めてだろう。
>>180もその書き方からしても認めたと考えてもいいだろう。

分かりようが無い根本的な原因がどうとか「バグがある。以上。」なんかよりも、
WorksheetにImplementsがまずいという情報があったことは有益だな。


あっ。これ自演だからw
188デフォルトの名無しさん:2005/12/27(火) 22:05:09
>>76さん自演しすぎですよ
189デフォルトの名無しさん:2005/12/28(水) 00:37:28
ここで、ぎすぎすした空気を一気に解消する魔法の一言。


ぬるぽ。
190デフォルトの名無しさん:2005/12/28(水) 01:39:18
そうか、わかりました……>>76はつまり、
馬鹿なんだ

そうか、これが馬鹿というものなんだ
嗚呼、馬鹿よ馬鹿馬鹿、愛しき馬鹿よ……
191デフォルトの名無しさん:2005/12/28(水) 01:42:50
>>190
いい加減謝ったらどうだ?w
192デフォルトの名無しさん:2005/12/28(水) 01:45:10
>>76さん自演しすぎですよ
193デフォルトの名無しさん:2005/12/28(水) 02:28:57
>>76はImpelements覚えたばっかで使いたくてウズウズしてるんだよ
そんなヤツにおまえら釣られすぎ
194デフォルトの名無しさん:2005/12/28(水) 02:54:40
>>169
net /deleteを投げて接続を解除してstart使ってネットワークを開く様なバッチファイルを実行する
ドメイン参加してると使えないけど
195デフォルトの名無しさん:2005/12/28(水) 05:18:47
ユーザがnewできないクラスにimplementsって、
いかにも不具合出そうな気がするのだがw

名前を変えると動く云々っていうのは、そのときにシステムがnewするから
なんだろうな。
196デフォルトの名無しさん:2005/12/28(水) 07:01:13
>>76の脳みそ可哀想
197デフォルトの名無しさん:2005/12/28(水) 08:28:29
>>195
無理して背伸びしてわけのわからないこと言わない方がいいよ。
見てるこっちが恥ずかしいしw

VBのクラスには引数とるコンストラクタを書けないだけで
別に‘ユーザがnewできない’わけじゃない。
っていうかインターフェイスとか多態の意味わかってるのかとw

っていうか、だからImplementsは関係ないってのに。
エクセル関連のオブジェクトつーのは「お約束」を守って操作してやらないと
この手の意味不明な不具合が起きるんだよ。

俺も数年前に初めてエクセルを遠隔操作するコード書いたときには
その手の「お約束」書いてるサイト読んで、使ってるお前に問題があるだけだろ、
と思ったもんだが、実際に存在するんだなこれが。
198デフォルトの名無しさん:2005/12/28(水) 08:45:44
Windows2000SP4+Excel2000(9.0.2812)と
Windows2000SP4+Excel2002(10.6501.6735)SP3で
>>121のコードを試してみたが、エラーは出なかったわけだが
199デフォルトの名無しさん:2005/12/28(水) 09:34:57
>>197
Implementsは関係あるでしょ。
実際、それ書いて問題が再現できてるんだから。
200デフォルトの名無しさん:2005/12/28(水) 10:00:16
つか、もうその話題たいがいウザイから

やりたいならImplementsだけでスレ立てでもして
そこに篭ってやってくれよ
201デフォルトの名無しさん:2005/12/28(水) 13:34:10
194 ありがとう。質問が悪かったみたい
Shell ”explorer 接続先” でもやりたいことが出来るが、そのあとで当然出てくるウインドウを閉じないといけません。もっとスマートな方法はありませんかという質問でした。
202デフォルトの名無しさん:2005/12/28(水) 14:10:09
>>197
お約束ってのは、Applicationインスタンスをオブジェクト変数に入れてないと特定の処理で
エラー落ちとかそういった類のもの? それならたまに出くわすわ。
>>76のコードは見てないけど、Sheetsコレクションを変数に突っ込んだらアッサリ回避できたりするかもな。
203デフォルトの名無しさん:2005/12/28(水) 15:41:03

開発環境:WindowsXP Professional
Version:VB6.0

MDI子フォームが開かれているか判定する方法ってあるのでしょうか。
検索しても出てこなく、困っています。。
何か、Hitするような検索文字列でもいいので教えてください。
お願いします。
204デフォルトの名無しさん:2005/12/28(水) 15:50:54
> あるのでしょうか。
ある

> Hitするような検索文字列
"MDI"
絶対にヒットするはず
205デフォルトの名無しさん:2005/12/28(水) 21:07:08
>>197
Sheet1とかSheet2って、VBAの中からどうやってnewするの?
206デフォルトの名無しさん:2005/12/29(木) 01:02:04
古いバージョンのVB、できればver5.0の英語版を
手に入れる方法を知っている人がいたら教えてください。
207デフォルトの名無しさん:2005/12/29(木) 01:10:39
>>206
Microsoftに問い合わせるといい
英語版が入ってるかどうかは確認できなかったが、古いVBなら買える
208デフォルトの名無しさん:2005/12/29(木) 01:35:40
>>187
>根本的な原因がなにであるかはMSでないと分からない。
ダメだね...MSなら「仕様です」って言ってバグだと認めないよ
209206:2005/12/29(木) 06:32:50
ありがとう>>207
210デフォルトの名無しさん:2005/12/29(木) 12:30:57
おいおいサポート終了してる商品を販売しないだろ普通。
MSDNの高価なエディション買うぐらいしか正規に手に入れる方法はないんじゃないの?
あとはオークションでまっとうな奴を探すか。
211デフォルトの名無しさん:2005/12/29(木) 14:33:19
>おいおいサポート終了してる商品を販売しないだろ普通。
MSDNに付属してるんだろうと売ってることに変わりは無いのにな
212デフォルトの名無しさん:2005/12/29(木) 18:51:15
>>208
そのセリフ、別に反論しているわけじゃないよな。
213デフォルトの名無しさん:2005/12/29(木) 18:56:30
>>205
Dim ws As Worksheet
Set ws = New Sheet1
214デフォルトの名無しさん:2005/12/29(木) 19:03:24
>>202
そういう類のもの。>>76が発見した新しいお約束もそういう類の物の一つと言って良いだろう。

WorksheetにインターフェースをImplementsすると型変換エラーなどがおきる。

認めようとしない奴がいるようだが、今の所なんらかの根拠を持って論理的に行われた反論は無い。
215デフォルトの名無しさん:2005/12/29(木) 19:12:29
>>213
>コンパイルエラー:
>Newキーワードの使用方法が不正です。

がで出まつよ。
216デフォルトの名無しさん:2005/12/29(木) 19:13:28
>出まつよ

キモイ
217デフォルトの名無しさん:2005/12/30(金) 03:10:42
>>215
少なくとも2000では出ない。
218デフォルトの名無しさん:2005/12/30(金) 05:03:52
>>217
少なくともXP+Excel 2003では出る。
219デフォルトの名無しさん:2005/12/30(金) 05:08:05
>>217
少なくともExcel v.X for Macでは出る。
220デフォルトの名無しさん:2005/12/30(金) 07:12:43
少なくとも俺は試していない
221197:2005/12/30(金) 11:30:20
>>205
すまん、>>195の文章を読み違えてたw
「ユーザがnewできない」って言うのをVB(VBA)の
クラス一般について言っているんだというふうに。

どう考えても「ユーザがnewできない」ってワークシートについて言ってるんだよね。
それは正しい。申し訳ない。
222デフォルトの名無しさん:2005/12/30(金) 11:42:00
こうなると217が哀れで仕方ない
223デフォルトの名無しさん:2006/01/02(月) 18:27:29
新年明けましておめでとうございます。
そして早速の質問です。

VB6.0SP6で作られた既存のアプリAがあって、それを改造する事が出来ません。
アプリAのあるボタンを定期的にクリックするソフトを作成したいのですが、どのような方法が
ありますでしょうか。

私の方で、簡単に思いついたのが、アプリAのプロセスIDとかとってフォアグランドに表示して
sendkeyですが、これだと、他のアプリを使用しているときに誤動作の原因となりそうです。

アプリAのボタンの関数を外部からコールするようなイメージで実現したいのですが、
使用する関数や参考手順、HP等ありましたら教えてもらえればと思います。
224デフォルトの名無しさん:2006/01/02(月) 18:59:50
>>223
SendKeysではなくSendMessageで
使い方はググれば腐るほど出てくる
225デフォルトの名無しさん:2006/01/02(月) 19:41:51
>>223
ボタンが押されているのを、視覚的に表すにはムリですが、
タイマーイベントで、ボタンクリックイベントを呼び出すとか
226デフォルトの名無しさん:2006/01/02(月) 19:42:57
VBを起動するとなぜかオフィスアップデートが毎回でるんですがなぜですか?
227デフォルトの名無しさん:2006/01/02(月) 20:08:27
>>224
 ありがとうございます、ちょっと調べてみます。

>>225
 ボタンを押したいアプリ自体は改造出来ないので、外部のアプリからボタンを押す、正確には、
ボタンを押したときに走る関数を実行させたいのです。

レスありがとうです、とりあえずSendMessage調べてきます。
228デフォルトの名無しさん:2006/01/03(火) 08:42:13
VBのスレってまだあったんですね
久しぶりまたプログラムしたくて始めたんですが

VB6.0SP6ラーニング使っているんですが
作成したexeファイルをバイナリで見ると
PCのユーザー名が入っているんですよ・・・
この情報が入らないようにできますか?
229デフォルトの名無しさん:2006/01/03(火) 10:43:06
入って困るのか?
230デフォルトの名無しさん:2006/01/03(火) 10:46:37
†聖天使癒し猫姫(天然w)†

とか恥ずかしい名前なんだろ
231デフォルトの名無しさん:2006/01/03(火) 11:14:42
制作者情報のないexeなんぞ怪しくて使えねぇ
232デフォルトの名無しさん:2006/01/03(火) 12:19:12
バージョン情報とか意図したものなら入って当然なんですが
ウィンドウズのユーザー名が入るんですよ?
マイドキュメントがあるルートフォルダ名と同じのが入るんです
言ってる意味わかりますか?
こういう個人情報みたいなのが勝手に入力されるのって嫌じゃないですか?
233デフォルトの名無しさん:2006/01/03(火) 12:22:54
そういう仕様だ、嫌なら使うなよ
言っとくが、PCのユーザー名「だけ」じゃ個人情報にゃならんよ
本人(居る場合は知ってる人間も)にしかわからんユーザー名でどうやって個人が特定できると?
234デフォルトの名無しさん:2006/01/03(火) 12:45:51
>>233
例えばユーザー名に本名入れてる人とかはやばいでしょ?
特定されないにしても気分が悪い
あと、バイナリで見るのじゃ確認できないが、暗号化されてその他の情報も埋め込まれたり
どれだけの情報がexeに入ってるのか知りたいんだけど
わかる人いないかな?
一応バイナリでユーザー名のとこだけ、書き換えればいけるんだけどね
235デフォルトの名無しさん:2006/01/03(火) 14:01:41
> どれだけの情報がexeに入ってるのか知りたいんだけど
ここで聞くべきことじゃない。MSに聞け。

おまえはここで「〜という情報が格納されますよ」という
嘘かホントか解らないような情報が得られたらそれで納得するのか?

メーカーの商売品すら疑って掛かるおまえが、
2chの一個人の出した情報など信じるはずがない。
236デフォルトの名無しさん:2006/01/03(火) 14:21:16
質問です。
VBのフォームデザイナーの使い方で、
メインメニューを作ったのですが、ビルドして.exeにしても、メニューが
表示されないんです・・・
237デフォルトの名無しさん:2006/01/03(火) 14:39:57
>>236
@VBEのフォーム上にはメニューが表示されているか
Aデバッグ実行ではメニューが表示されるか
B.frmファイルにはメニューの内容が書き込まれているか
238デフォルトの名無しさん:2006/01/03(火) 15:12:04
>>235
わからないならわからないって言えよ。バカ
239デフォルトの名無しさん:2006/01/03(火) 15:24:10
あぁ、分からんな
240デフォルトの名無しさん:2006/01/03(火) 15:56:22
バカなのでわかりません
なのでメーカーに聞いてください

はい、さようなら
241デフォルトの名無しさん:2006/01/03(火) 15:56:32
OpenTextFileを使ってファイルを開くとノートンがウィルス反応を出すのですが
ノートンで許可した場合、ホンモノのウィルスがある場合対処してくれないかもしれませんし
こういう場合どうすればいいでしょうか?
242デフォルトの名無しさん:2006/01/03(火) 16:06:15
ノートンのメーカーに聞いてください

はい、さようなら
243デフォルトの名無しさん:2006/01/03(火) 18:24:26
少々お尋ねします。VB超初心者ですが、XP ProがインストールさらているパソにVB6をインストールする際にVBをアップデートしないとだめですか。またVBに付属のライブラリCDが傷がついてしまったのですがこれもインストールしないとだめですか。お教えて下さい。
244デフォルトの名無しさん:2006/01/03(火) 18:43:03
>>243
理由が無いかぎりはサービスパックを当てる事
MSDNは入れなくてもいい
245デフォルトの名無しさん:2006/01/03(火) 19:08:57
いまさらVB6をファイル共有化なんかで落としたのかよ。
まったく好き者だな。

まあどうせ否定するだろうけど、内容から丸わかりだし。
246デフォルトの名無しさん:2006/01/03(火) 19:29:41
>>245=つまんね
247デフォルトの名無しさん:2006/01/03(火) 20:00:00
図星を突かれるとどうしても言い返したくなるのが人間の心理
248デフォルトの名無しさん:2006/01/03(火) 20:06:40
ほぅ
249デフォルトの名無しさん:2006/01/03(火) 21:26:26
別のフォームのコントロールにaddなどでアイテム追加したいんですが
なぜか上手くいきません。どうすればいいでしょうか?

例えばfrom2で

frmMain.Text1.Text="テスト"

とやってもまったく反応しません。

str=frmMain.Text1.Text

この様に値の取得はできるんですけど
250デフォルトの名無しさん:2006/01/03(火) 22:45:15
>>249
frmMainをどのように呼び出したかじゃないのか?

frmMain.Show で読んでれば frmMainっていう暗黙のインスタンスが表示され、
Dim frm as new frmMain
frm.Show だと frmとfrmMainは別。
251249:2006/01/03(火) 22:57:07
>>250
解決しました!ありがとう!

もう6時間ぐらいずっとここでつまってって諦めかけてたんですが
このソフトは最初のアプリウィザードで作成したんですけど
>250さんがおっしゃってるようにメインフォーム自体がインスタンスとしてMain()のある標準モジュールで作成されてました
form2から、frmMain.Showとやると新しく複製されたメインフォームができるのでおかしいなと思ってたんです
いやーほんと助かりました。ありがとうございます
252デフォルトの名無しさん:2006/01/05(木) 01:45:31
VB6 Win2000/XP

解像度1024*768で開発したアプリケーションを1280*1024の環境でも
動作させることになりました。どちらの環境で実行されても、
デスクトップに対して同じ割合の大きさで表示させたいのですが
何かよい方法はありますでしょうか?

例)
   1024*768の環境でHeight:3600,Width:4800の大きさで表示されるFormを
   1280*1024の環境ではHeight:4800,Width:6000の大きさで表示したい。
   各コントロールのサイズ、フォントサイズも同様に拡大して表示したい。


実行時にScreen.heightやwidthから倍率を計算して
Formと各Control毎にサイズ調整する方法を試してみましたが
Controlがたくさん載ったフォームだと表示までに時間がかかるので
別の方法を模索しているところです。
253デフォルトの名無しさん:2006/01/05(木) 06:53:36
あきらめろ
254デフォルトの名無しさん:2006/01/05(木) 07:42:41
>>252
解像度が二種類しかないなら
フォームを二種類作れば速いよ
255デフォルトの名無しさん:2006/01/05(木) 10:06:38
DCOMについて勉強中なのですが、下記のソースで
サーバー上のActiveXDLLを実行したいのですが
サーバー側はどのように設定すればよいでしょうか?
IISは起動してhoge.dllもregsvr32で登録はしました。
IISとhoge.dllを結びつける何かが必要だと思うのですが
どういった設定が必要でしょうか?
よろしくお願いいたします。

Private Sub Command1_Click()
Dim rdsObj As New RDS.DataSpace
Dim hogeObj As Object
Set hogeObj = rdsObj.CreateObject("hoge.clsHoge", "http://hoge")
Call hogeObj.hello
End Sub
256デフォルトの名無しさん:2006/01/05(木) 11:33:16
>>241
アプリケーションごとに実行を許可するのか、しないのか設定できるだろ。
257デフォルトの名無しさん:2006/01/05(木) 13:53:50
>>252
たくさんのコントロールっていくつぐらい?
そんなに時間かかると思えないんだけどなぁ。
コードに無駄があるような気がする。
258デフォルトの名無しさん:2006/01/05(木) 13:54:53
本当に数のせいで時間がかかるんなら、今度はそのウィンドウの設計に問題がある
259デフォルトの名無しさん:2006/01/05(木) 21:26:07
a,b,c
b,q,g
c,w,b



  c
a, ,g
b,b,b
c,q,
 w

のようにbで整えるのに適した関数はありますか
260デフォルトの名無しさん:2006/01/05(木) 21:35:37
わけわかんねぇ
261デフォルトの名無しさん:2006/01/05(木) 21:39:23
おーい、誰かエスパー呼んでこい
262デフォルトの名無しさん:2006/01/05(木) 22:09:45
これまたすごいのが出てきたな。
263デフォルトの名無しさん:2006/01/05(木) 22:11:45
wロス
264デフォルトの名無しさん:2006/01/05(木) 22:28:25
>>259
イメージ的に何がやりたいのかはわかるけど、
そのデータ群が何なのか、その英字が何を表すのかわからないと何も言えないな。

一つだけ言えるのは、関数ってのは自分で作るものだってことだけ。
で、どう作るかだが上記のように条件が曖昧なので何も言いようがない。
265デフォルトの名無しさん:2006/01/05(木) 22:35:09
あ、分かった!

a,b,c
b,q,g
c,w,b


を、真ん中は一個↓にズラして、右は一個↑にズラして

bbb

で揃えたいのか。シラネ。
266デフォルトの名無しさん:2006/01/05(木) 22:39:20
さらにワロス
267デフォルトの名無しさん:2006/01/05(木) 22:47:56
スロットゲームが作りたいのかな
268259:2006/01/05(木) 23:03:52
データ群はなんでもあり、というか箱と思って頂ければ。
既存の関数を組み合わせて簡単にこの操作ができないかと・・・
エクセルでこのような操作ができればと・・・
269デフォルトの名無しさん:2006/01/05(木) 23:08:32
>>268
2次配列に突っ込んでごちゃごちゃやれば可能なんじゃない?
あとは自分で頑張って。
270デフォルトの名無しさん:2006/01/05(木) 23:09:40
>>268
ExcelならExcelに聞け
マクロの記録で、「挿入」-「下方向にシフト」とか「削除」−「上方向にシフト」とかやってみろ
271259:2006/01/05(木) 23:33:25
範囲内でこの操作をするメソッドみたいのがありそうな気がしてときめいています
272デフォルトの名無しさん:2006/01/05(木) 23:40:30
あるよ、うちには。



俺が作ったメソッドだけど。
273259:2006/01/05(木) 23:45:51
うはww気になるwwコスト安いアルゴ知りてーwww
274デフォルトの名無しさん:2006/01/05(木) 23:56:08
>>273
取り敢えずコスト度外視で作ってみればいいのに
275デフォルトの名無しさん:2006/01/06(金) 00:08:48
"範囲内"と言っているが>>259の例では並べ替え後は範囲を飛び出している件について
276259:2006/01/06(金) 00:10:41
縦の中心を探す。を繰り返すのが今の構想。
ただ、最初のbが任意の位置にあった時、コストがたかくなる。
その辺、要領よくやりたい。
277デフォルトの名無しさん:2006/01/06(金) 00:43:28
いまいち理解できてないんすけど>>259はエクセルマクロを前提に話してて、でもって
セル上の数値に対しての操作じゃなくて、配列なりの内部的な数値に対する操作がしたいってことでよいの?
278デフォルトの名無しさん:2006/01/06(金) 01:09:10
>259
四角形をひし形に変換したいんじゃないのか?
で、それぞれの要素にグラフィック座標割り当てたりとか?
A列車3が発売された頃、同じような箱庭ソフト作りたいけど
立体的なビルを建てる場合マス目をひし形にしないとだめだから
そうなるとマス目をクリックしたい場合、
どのマス目をクリックしたか判断する処理が四角形より難しいから
頭抱えたことがある


279デフォルトの名無しさん:2006/01/06(金) 01:24:43
>>278
おいおい、>>259はもちろんだが君の頭も問題あるんじゃないかw

>>259がやりたいのは、カラム内の'b'の位置に従って各カラムに-1, 0, または+1の
オフセットを与えたい、と。
おそらくそういうことだろう。

データ構造がはっきりしないから誰も適切に答えようがないがね。
280デフォルトの名無しさん:2006/01/06(金) 01:32:38
データ構造が不明なのが問題だったのか?w
281278:2006/01/06(金) 01:43:09
>>279
ああwそういうことか

パチスロみたいに777そろえるようにしたいってことか
282デフォルトの名無しさん:2006/01/06(金) 03:58:39
Excelで考えるなら、任意の文字(例だとb)の行位置を調べて、
その最大値を基準に、各列最大値との差分の空白を頭に入れてやるだけでいいじゃん
●★●
★●●
●●★
だと★の位置は2,1,3、最大値は3なので各列3との差分の空白を先頭に入れる

1列目は          3列目は
3-2=1で          3-3=0で
空白一つ          空白0
□     □□     □□●
●     ●□     ●□●
★     ★★     ★★★
●     ●●     ●●
         ●       ●
      2列目は
      3-1=2で
      空白二つ

空白を入れると言ってもそれは見た目の話で、セルの挿入をするより
値のみ動かして空白を入れた形に持っていた方が速いけどね。
中心を探すんじゃなくてオフセットを算出する方法だが何か不満でもあるかな?
283デフォルトの名無しさん:2006/01/06(金) 04:51:30
>>282
>>259はその操作概念自体は理解していて、それをスマートなアルゴリズムでやりたいってことではないかと。

で、わからんのがこの発言。
>ただ、最初のbが任意の位置にあった時、コストがたかくなる。

普通言われなくても当然と思う「最初のbが任意の位置にあった時」なんてことわりをわざわざいれるぐらいなので、
特殊な状況、例えば2列目以降のデータ列が初めから分かってるのではなくて、時間的に順次与えられるみたいな場合を
想定してるのかなと思った。
284259:2006/01/06(金) 05:02:40
まず全列ソート。そこからbの位置を揃えたい
クイックソートみたく、中心からbの位置探し。2、3・・列目は中心の値により探す向きを中心から上か下かを決める

これをしてくれる関数が知りたい。無ければエクセルの機能を組み合わせてしてみたい
最終形は
a
b,b,b
c, ,c
  g
 q
 w

列毎の差分を作りたい。エクセルの機能をフル活用して(なるべく簡素+省計算量で
285デフォルトの名無しさん:2006/01/06(金) 05:11:15
> これをしてくれる関数が知りたい。
当然組み込み関数には無い

> 無ければエクセルの機能を組み合わせてしてみたい
してみたいというのを止める理由はない
どうぞご自由に

> エクセルの機能をフル活用して
それにはまずエクセルの機能を知ることから始めないとな
知らなきゃ使うことは出来ない
まあ、精々勉強するこった
286259:2006/01/06(金) 05:25:44
アルゴの構想は
> まず全列ソート。クイックソートみたく、中心からbの位置探し。2、3・・列目は中心の値により探す向きを中心から上か下かを決める

これよりいいアルゴは・・
エクセルの機能を活用してできそうですか?できそうな予感のみあるのですが・・
そうです。私は教えて君でござる
287デフォルトの名無しさん:2006/01/06(金) 05:33:07
最初と話が変わってるやんw
セル上の話なら大抵の場合ソートは[データ]-[並べ替え]のコマンドを(マクロから)使えるな。
288デフォルトの名無しさん:2006/01/06(金) 05:47:22
おまえら暇なんだなw
289デフォルトの名無しさん:2006/01/06(金) 06:53:10
いいかげんスレ違い
290デフォルトの名無しさん:2006/01/06(金) 14:57:49
まあ、よさげなアルゴリスムは1分で思いついたけど
めんどくさいから書かない
291デフォルトの名無しさん:2006/01/06(金) 15:14:47
説明する文がめちゃくちゃな人間は、
十中八九、プログラムもめちゃくちゃ。
292デフォルトの名無しさん:2006/01/06(金) 15:26:00
それってSQLで良く当てはまる。
SQL文以前にその対象の集合ってのを日本語で表現できない人。
293デフォルトの名無しさん:2006/01/07(土) 18:14:12
フォームのサイズ制限を付けたいのですがどうすればいいのでしょうか。
いわゆる.netでいうMinimumSize・MaximumSizeなのですがorz
294デフォルトの名無しさん:2006/01/07(土) 18:37:09
>>293
Googleで VB ウインドウの最大・最小サイズを設定する
・・・キャッシュでしか読めないな
295デフォルトの名無しさん:2006/01/07(土) 20:04:18
>>293
おれも初心者だけど
ないのでフォームのresizeイベントで無理やり維持する

拡大されようとするサイズを元に戻すって感じ
ただ、.NETと違って無理やりだから見た目が汚いくなるんだよなぁ

書いてる途中に思いついたけど、リサイズイベントが起きているときに
まだ、マウスが押されていたら、ボーダースタイル変えて、サイズを変えられないようにしたらいいかも
マウスが放されると元に戻すってかんじで
296デフォルトの名無しさん:2006/01/07(土) 20:18:55
WM_GETMINMAXINFOでぐぐれ
297デフォルトの名無しさん:2006/01/07(土) 20:28:26
>>294,295
早レスありがとうございます。

VB6でサイズ制限しようと思ったらresizeで無理やりするしかないのかな?
"サイズが一定範囲を超えたら元に戻す"ようにしたら、フォームがチラついて汚くなりますよね…
Cや.netのようにガチっと固定できたらいいんだけど。

295さんの後述の方法は、なるほど、全然思いつきませんでした。
サイズが一定範囲を越えようとしたらフォームをサイズ変更不可にすれば出来そうですね。
範囲内へと変更しようとしたときにサイズ変更可能にすればいいのかな。
ちょっと試してみます。
298297も293です:2006/01/07(土) 20:32:24
>>296
レスしてから気がつきました。

サイズ変更固定するAPIあったんですね…。
どうも有難うございます_(__)_そしてお手数お掛けしました。
これからじっくり調べてみます。

@レスくださった294様295様も有難うございました。
299デフォルトの名無しさん:2006/01/07(土) 20:35:00
APIではないんだけどな
300デフォルトの名無しさん:2006/01/07(土) 20:44:42
Resizeでやる場合、Formのサイズを変えたらそこでExit Sub入れた方がいい
じゃないと最大幅3000指定で、幅4000にリサイズした場合に
コントロール類のサイズを4000の場合用→3000の場合用と2回変更することになる。
それだけでもかなりチラ付き無くなるよ。

>>296
ヒント:>>294
301デフォルトの名無しさん:2006/01/07(土) 20:49:59
なぜ>>296に言うのかわからんし
302デフォルトの名無しさん:2006/01/07(土) 21:12:49
294のキーワードでググった先に、WM_GETMINMAXINFOの
VBサンプルが載ってるので、サンプルがすでに挙がってるのに、
後から来てググれも糞も無いだろ。

ということでは?
303デフォルトの名無しさん:2006/01/07(土) 21:17:39
言ったらあかんいうわけでもなし
それこそわざわざ言うことでも無いんじゃ?
304デフォルトの名無しさん:2006/01/07(土) 21:23:23
それこそわざわざ言うことでも無いんじゃ?>>303
305デフォルトの名無しさん:2006/01/07(土) 21:33:47
はいはい、どっちでもいいからもう終わりな
306デフォルトの名無しさん:2006/01/07(土) 21:45:06
サブクラス化すればリサイズしようとしたときの
イベント取れるよ。
307デフォルトの名無しさん:2006/01/07(土) 21:53:02
つうか、サブクラス化とかするならVBで作るなってなるけどね。
API読んで、メッセージ処理して、それをVBでわざわざやるのが逆にめんどい。
308デフォルトの名無しさん:2006/01/08(日) 07:23:42
ウィンドウを最小化させないようにする方法ってありますでしょうか。
常に手前に表示させたいのですが
(現状SetWindowPosで常に手前に表示させています)、
タスクマネージャから最小化を選ぶと最小化されてしまいます。
309デフォルトの名無しさん:2006/01/08(日) 07:25:53
またResizeでやれば?
310308:2006/01/08(日) 07:26:41
因みに、293氏とは別人です。
311デフォルトの名無しさん:2006/01/08(日) 07:27:54
>>308
ボーダースタイルを固定にすればいい
312デフォルトの名無しさん:2006/01/08(日) 07:29:19
>>309
さっそくありがとうございます。
今やってみたところ、
タスクマネージャから最小化を選ぶと
イベントが拾えませんでした。
313デフォルトの名無しさん:2006/01/08(日) 07:32:50
>>311
ありがとうございます。
今やって見ましたが、
タスクマネージャから最小化を選ぶと やはりダメなようです。
314デフォルトの名無しさん:2006/01/08(日) 07:50:55
タクスマネージャーから最小化しようとするとHDD壊しますってreadmeに書けばいいんじゃないか?
315デフォルトの名無しさん:2006/01/08(日) 08:38:15
>>312
キミが何か間違ってんじゃないの?
タスクマネージャからやろうが最小化は最小化
316デフォルトの名無しさん:2006/01/08(日) 12:12:58
>>314
いいね。その案貰った
317312:2006/01/08(日) 20:16:40
>>315
こんなソースでダメでしたが、
どんな感じでやれますか?

Private Sub Form_Resize()
    Form1.WindowState = vbNormal
End Sub

タスクマネージャ→アプリケーションタブ
→タスクから対象タスクを右クリック→最小化
これで最小化してしまう。
318デフォルトの名無しさん:2006/01/09(月) 04:19:58
ここにいるのは負け組なので難しい質問は答えられないと思うよ
VBで無理ならAPIいじるしかないと思うお^^
319デフォルトの名無しさん:2006/01/09(月) 07:55:54
>>317
タスクマネージャの最小化や最大化はトップレベルウインドウに指示を出しているが、
VBのスタートアップフォームはトップレベルウインドウではないのでそういう動作になる。
VBのトップレベルウインドウは不可視。
320デフォルトの名無しさん:2006/01/09(月) 08:12:16
>>317
リサイズもウィンドウステートも忘れろ。
>>311の言うとおり、BorderStyleでできる。
321デフォルトの名無しさん:2006/01/09(月) 08:16:55
すまんタスクマネージャから最小化だったかorz
322317:2006/01/09(月) 20:30:15
>>319
私には難しくて良くわかりませんが、
結論としては難しいということでしょうかね。

ちょっと時間がなくて今試せませんが、
イベント拾うのは諦めて、
短いタイマで定期的に大きくするとかできないかなと思ってますが
そのトップレベルウィンドウというのだけ最小化しているなら
これも難しいのかなとも。
それとタイマで処理すると私の頭も混乱するので嫌ですし。
323デフォルトの名無しさん:2006/01/09(月) 20:36:48
>>322
だからフォームのプロパティのボーダースタイルでやれば最小化されないって言ってるだろ
324デフォルトの名無しさん:2006/01/09(月) 20:38:54
>>323
ヒント:>>321
325デフォルトの名無しさん:2006/01/09(月) 20:44:54
>>324
いや、だから、タクスマネージャからやっても最小化ならないって
固定ダイアログにしてみろよ
今試したんだからまちがいねー
326デフォルトの名無しさん:2006/01/09(月) 20:52:41
質問者じゃないけど、「3 - 固定ダイアログ」で最小化できたよー
327322:2006/01/09(月) 20:53:44
また試してみました。
だめでした。osの違いでしょうか?当方xp

今日はもうこれ以上試せそうにありません。
328デフォルトの名無しさん:2006/01/09(月) 21:17:04
>>327
おれはw2kで出来た
正直すまんかった。
329デフォルトの名無しさん:2006/01/09(月) 21:37:37
タスクマネージャーと「デスクトップの表示」はVBじゃどう頑張っても拾えないよ

ただ目的を達成するなら
「デスクトップの表示」はWM_SHOWWINDOW   wParam=0   lParam=SW_PARENTCLOSING で反応するから
メッセージを握りつぶす
ただし Form が親を持ってないとき 言っとくけど非公式な方法ね

wParam=0 は 最小化された時
lParam=SW_PARENTCLOSING は 親が隠される時
330デフォルトの名無しさん:2006/01/09(月) 21:38:16
>「デスクトップの表示」はWM_SHOWWINDOW   wParam=0   lParam=SW_PARENTCLOSING
間違えたタスクマネージャーね orz
331デフォルトの名無しさん:2006/01/10(火) 09:59:42
InputMan6.5からInputMan7.0への移行作業をしているのですが
移行ウィザードを使うとimContainer3Dの移行でエラーに
なってしまいます。
もし、同様のご経験がある方がおられましたら
対処法など教えていただけるとありがたいです。
よろしくお願いいたします。
332デフォルトの名無しさん:2006/01/10(火) 12:56:56
>>331
ここで聞いてる暇あったらぐれーぷしちーに聞け。
333デフォルトの名無しさん:2006/01/10(火) 14:52:14
ツールバーの保存ボタンが消えちゃいました。
復活させる方法教えてください。
334デフォルトの名無しさん:2006/01/10(火) 15:37:27
>>333
ザオリク
335デフォルトの名無しさん:2006/01/10(火) 16:00:11
MPが勿体無いからザオラルにしとけ
336デフォルトの名無しさん:2006/01/10(火) 16:15:45
フェニックスの羽でいいじゃん。
まあ復活しても即相手攻撃でまた死ぬかもしれんけど。
337デフォルトの名無しさん:2006/01/10(火) 16:23:08
復活しなくても他で代用効くから復活不要じゃね?
338デフォルトの名無しさん:2006/01/10(火) 16:28:04
お願いします。復活したいですぅ。
339デフォルトの名無しさん:2006/01/10(火) 18:09:55
>>333
レムオルだな
時間が経てば見えるようになるよ
340VBA:2006/01/10(火) 18:53:12
月電気公共料金
(kwh)
2110
387
4233
■データを1件ずつ、ユーザ定義関数を利用して「公共料金」を計算させる
プログラム作成せよ
料金計算は、下記の方法によるとします。
<電気料金の計算>
基本料金:1800円 定量制料金単価は
・使用量が90Kwh以下であれば18.14円/Kwh
・ 〃 90Kwh超230Kwh以下であれば24.85円/Kwh
・ 〃 230Kwh超であれば27.21円/Kwh
(料金計算例)
70Kwh使用した場合:1800+70×18.14
120Kwh使用した場合:1800+90×18.14+(120−90)×24.85
=3432.6+(120−90)×24.85
250Kwh使用した場合:1800+90×18.14+140×24.85+(250−230)×27.21
=6911.6+(250−230)×27.21


341VBA:2006/01/10(火) 18:56:49
上のデータは次です
月,電気,公共料金
  kwh
2月110
3月87
4月233
342デフォルトの名無しさん:2006/01/10(火) 19:05:46
>>340-341
学校の宿題は友達と一緒にやった方がいいと思うけど。
343デフォルトの名無しさん:2006/01/10(火) 21:26:24
質問ですが、フォーム上にexcelの表やグラフを
表示させることってできますか?
344デフォルトの名無しさん:2006/01/10(火) 21:44:42
できる
345デフォルトの名無しさん:2006/01/10(火) 21:54:20
>>344
ありがとうございます。調べてみます。
346343:2006/01/10(火) 22:30:06
すいません、また質問なのですが・・・
フォームからコマンドボタンを押して、バックグラウンドでエクセルの
マクロ処理を行ってから、フォームに表示したいのですがどうすれば
いいのでしょうか。
見た目上、エクセルの起動が見えないようにすることはできますか?
347デフォルトの名無しさん:2006/01/10(火) 22:34:25
できる
348343:2006/01/10(火) 22:37:07
>>347
調べきれなかったので、、、教えていただけないでしょうか。
349デフォルトの名無しさん:2006/01/10(火) 22:42:44
フォーム上にエクセルを出せ。
350デフォルトの名無しさん:2006/01/10(火) 22:59:06
351デフォルトの名無しさん:2006/01/10(火) 23:06:36
Visibleも知らんのか
352デフォルトの名無しさん:2006/01/10(火) 23:21:05
>>351
それでは見た目で判ってしまうな

そもそもこの343はVBAだからこその問題なのではないか?
VB買ってフォーム上に出せで正解
353デフォルトの名無しさん:2006/01/10(火) 23:24:14
>>352
>それでは見た目で判ってしまうな

は?
354デフォルトの名無しさん:2006/01/11(水) 00:33:16
>>329
遅れましたが、アイデアありがとうございます。
時間みて実装してみます。
355デフォルトの名無しさん:2006/01/11(水) 09:58:42
>>333
空気よめなくて悪いが、VBを再インストールすれば復活するはず。
以前他のボタンが消えた時に再インストールで復活した。
356デフォルトの名無しさん:2006/01/11(水) 11:40:39
ツールバー右クリしてユーザ設定出せばいいじゃまいか
357デフォルトの名無しさん:2006/01/11(水) 11:44:51
神キタ━━━━━━(゚∀゚)━━━━━━!!!!
358デフォルトの名無しさん:2006/01/11(水) 11:54:28
え?
それをやっても戻せないから質問に来たんじゃないの?
俺はVB6インスコしてSP当ててアドイン組み込んだら、次にやるのがツールバー設定だが、
ツールバーのユーザー設定知らないってことは、デフォのツールバーで使ってたてことか?
359デフォルトの名無しさん:2006/01/11(水) 11:55:39
ぬるぽい!ぬるぽい!
360デフォルトの名無しさん:2006/01/11(水) 16:12:49
>>358
ごめんぽ
361デフォルトの名無しさん:2006/01/11(水) 17:04:20
Scripting.DictionaryのAddって(Key, Item)だよね?
だけど実際
Dic.Add "Key1", "Item1"ってやって
Dic.Itemsを見ると"Key1"が
Dic.Keysを見ると"Item1"が返ってくるんだけど、これでいいんだっけ?
俺の環境だけ変?
いちおう素のForm1に最小限のコードだけ書いて試してますよ。

Itemのほうにオブジェクト変数を入れると、For Eachで「オブジェクトが
必要です」というエラーになってしまいます。
Dic.Add "Key1", New Class1
Dim Item As Class1
For Each Item In Dic ←ここでエラー

scrrun.dllのバージョンは5.6.0.8820
362デフォルトの名無しさん:2006/01/11(水) 17:18:07
>>361
addの定義についてもう一度調べなさい
363361:2006/01/11(水) 17:56:47
なんか今プロジェクト作り直したらItemsで"Item1"が返るようになってる・・
参照設定しようとするときに"Microsoft Scripting Runtime"がリストに
あがってこなくて、scrrun.dllを直接指定したんだが、このせいではないようです。

Class1を使うほうは相変わらず「オブジェクトが必要です」が出るし。
364デフォルトの名無しさん:2006/01/11(水) 18:05:11
そりゃ出るだろ。
365デフォルトの名無しさん:2006/01/11(水) 18:27:26
361は悲しいぐらいバカ
366デフォルトの名無しさん:2006/01/11(水) 20:01:19
質問です。エクセルVBAでツールバーを全部非表示にしたいのですが
どう書けばいいですか?
367デフォルトの名無しさん:2006/01/11(水) 20:27:22
解決しました。スレ汚しすいませんでした。
368デフォルトの名無しさん:2006/01/11(水) 22:56:08
>>361
出てあたり前
エラーはClass1で出てるんじゃないDictionaryで出てるの

For Each文を使うにはオブジェクトにCount・Item・_NewEnumが実装されて無いといけないのを知らないのか?
それ以前にディクショナリの意味分かってんのか?列挙する機能(For Each)を提供するのはコレクションだろ
369デフォルトの名無しさん:2006/01/11(水) 23:02:56
> For Each文を使うにはオブジェクトにCount・Item・_NewEnumが実装されて無いといけないのを知らないのか?
> それ以前にディクショナリの意味分かってんのか?列挙する機能(For Each)を提供するのはコレクションだろ

はい、残念。
今回のエラーはそれとは違う。
370デフォルトの名無しさん:2006/01/11(水) 23:25:04
俺は違わない方に一票w
371デフォルトの名無しさん:2006/01/11(水) 23:26:55
本人
372デフォルトの名無しさん:2006/01/11(水) 23:33:43
369は悲しいぐらいバカ

373361:2006/01/11(水) 23:38:35
For Each文の使い方は間違ってないと思います。
VB6で普通に使っていましたし、
自分のScripting.Dictionaryを使ったプログラミング方法の説明サイトは
2chでも何回か紹介されましたが好評でしたよ。
374デフォルトの名無しさん:2006/01/11(水) 23:46:03
なんかいまデジャブを感じたw
375デフォルトの名無しさん:2006/01/11(水) 23:51:52
368が必死
376デフォルトの名無しさん:2006/01/12(木) 00:20:51
必死な361がいるスレはここですね
377デフォルトの名無しさん:2006/01/12(木) 00:22:12
>>368の文が、2行目しか当たってない件について
378デフォルトの名無しさん:2006/01/12(木) 02:04:38
A1〜E5までの5×5のセルに適当な値(数字はループで入れる)を入れて、F列
に各行の合計、G列に各行の平均を算出し、F列の累計表をH列に表示するプロ
グラム。
教えれ。。
379デフォルトの名無しさん:2006/01/12(木) 02:05:47
age
380デフォルトの名無しさん:2006/01/12(木) 02:25:32
断る。
381デフォルトの名無しさん:2006/01/12(木) 07:23:37
エクセルのマクロについて質問させてもらいます
これまでVBEでマクロ作って、他のファイル(数百)に適用してました
久しぶりに適用しようとすると、マクロが突然認識されなくなってしまいまして
マクロのプログラム自体が全てのファイルを確認しても残ってないのですけど
同じような状況になった人っていませんか?
また、そのマクロを復活させることは出来るでしょうか?
382デフォルトの名無しさん:2006/01/12(木) 07:32:31
いいかげん、エクセルなスレ違い厨はどっか行けや
383デフォルトの名無しさん:2006/01/12(木) 07:40:42
プチエスパーになってみるw

Property Item(Key)
Scripting.Dictionary の既定メンバ
指定したキーに対する項目を設定します。値の取得も可能です。

Itemsプロパティは配列を参照するVariant型を返すのがポイント。
違うか?wバリアントの配列か?wどっちでもVBじゃいいよ気にしんなw

初心に帰りちゃんとオブジェクトプロパティから変数に参照渡してみ?

384デフォルトの名無しさん:2006/01/12(木) 07:51:17
↑言語障害者
385デフォルトの名無しさん:2006/01/12(木) 08:09:51
>>381
意味ワカンネ。

Excelブックからマクロが消えたってことなのか?
コピーがあるなら、インポートしなおせばよいのでわ?
386デフォルトの名無しさん:2006/01/12(木) 08:09:58
381です。>>382さん指摘ありがとう
Excelのスレに行ってきます
387デフォルトの名無しさん:2006/01/12(木) 08:13:42
>>385
分かりにくい文章でごめんなさい
Excelブックからマクロが消えたってことです
コピーがないので・・・
完全に同じものを作り直すのが困難なので、質問してしまいました
ちょっとスレ違いのようですので、エクセルのスレに行ってきます
388デフォルトの名無しさん:2006/01/12(木) 08:17:03
【誘導】
Excel総合相談所 40(VBAの質問でも可。回答率バツグンの良スレ)
http://pc8.2ch.net/test/read.cgi/bsoft/1134006968/
389デフォルトの名無しさん:2006/01/12(木) 08:22:44
>>388
ありがとうございます 書き込みしてきました
390デフォルトの名無しさん:2006/01/12(木) 10:08:06
このスレからVBA取ったら何も残らないんじゃないか?
391デフォルトの名無しさん:2006/01/12(木) 10:18:00
だから何だって言うんだ? 無理矢理残す必要性もないだろ。
392デフォルトの名無しさん:2006/01/12(木) 11:55:25
VBAはVBではない
393デフォルトの名無しさん:2006/01/12(木) 12:04:07
だね
394デフォルトの名無しさん:2006/01/12(木) 12:10:02
正直、VBAのことを聞かれても分からんよ。アプリ毎に違ってたりするし。
395デフォルトの名無しさん:2006/01/12(木) 15:27:37
VBA=VBではないけど、VBAはVB言語。

VBA搭載アプリ固有のオブジェクトなど知らと言うかもしれないけど、
それ言ったらオートメーションオブジェクトだってAPIだってVB固有のものではない。
そうなると組み込み関数とコントロールについてくらいしか語ること無くなるな。
まあ、知識が及ばない物を遠ざけたい気持ちも分からなくもないが、
少なくともここで許容されてるVBScriptよりはVBに近い存在だ。
396デフォルトの名無しさん:2006/01/12(木) 16:25:32
じゃあおまえが教えてやれば?
397デフォルトの名無しさん:2006/01/12(木) 16:28:56
ユーザーコントロールの上にユーザーコントロールを置いたものを
フォームに貼り付けると
「オブジェクト変数またはWithブロック変数が設定されていません。」
と出るのですがなぜでしょうか?
398397:2006/01/12(木) 16:48:19
UserControl_Initializeでエラーが発生していました。
このイベントはフォームのデザイン時にも実行されてしまうのでしょうか?
デザイン時には実行されないようにできないものでしょうか?
399デフォルトの名無しさん:2006/01/12(木) 17:00:06
>>396
あのね、誰が答えるかじゃないんだよ。
解らないことがあるのも、答えられない質問があるのも仕方ないし
そもそもここでは回答する義務すら無いので、答えられる質問に答えないのだって自由。
ただ、答えられない分野だからって除外しようとするなってだけだ。
答えられない質問、答えたくない質問は叩いて追い出すのではなく、
他の人に任せておけばいいんだよ。
400デフォルトの名無しさん:2006/01/12(木) 17:23:49
dim y as double, yd as double, dx as double, x as double

loop until math.abs(dx) < eps
の2文は何を意味しているのですか?
401デフォルトの名無しさん:2006/01/12(木) 18:04:57
変数の宣言

ループの終了条件
402デフォルトの名無しさん:2006/01/12(木) 18:19:08
>>400
宿題はオトモダチと(ry
403デフォルトの名無しさん:2006/01/12(木) 20:12:16
true basic と visual basic はどう違うの?
true basic てどこから買うんだろうか・・。
404デフォルトの名無しさん:2006/01/13(金) 08:16:21
>>403
TrueBASICは日本ではマイナー。
理系でしか使われてない。
405デフォルトの名無しさん:2006/01/13(金) 10:26:15
true basic のプログラムをVBでもできますか?
406デフォルトの名無しさん:2006/01/13(金) 10:37:13
>>405
移植に関する情報は少ないね。
CやFORTRANに移植すれば?
407デフォルトの名無しさん:2006/01/13(金) 11:18:55
VB5とVB6の開発環境を1台のパソコン
OSはWindows2000で共有できますか?
VB4とVB5のときはWindowsNTで不可だった気がするのですが
408デフォルトの名無しさん:2006/01/13(金) 11:29:34
>>407
今は仮想PCを使う時代ですよ。
409デフォルトの名無しさん:2006/01/13(金) 11:35:21
ライセンスをxxらないならば、デゥアルブートにして2環境作れば?
410デフォルトの名無しさん:2006/01/13(金) 12:05:04
>>407
開発環境は共存出来ません。
インストールしたらどっちもOSも滅茶苦茶になる。
411デフォルトの名無しさん:2006/01/13(金) 14:07:36
Textボックスでタブを入力された場合、
コントロールの移動ではなく、テキストボックスにタブ文字を入れたいのですが、
どうすればいいでしょうか?
412ニュートン法:2006/01/13(金) 14:10:24
Excelの質問です!
VBAでニュートン法を使ってこの問題を解くとプログラムはどうなりますか?
教えてください.
F(x)=x^2-e^(-x)-2=0 初期値X0=6 収束条件E=10^-5
413デフォルトの名無しさん:2006/01/13(金) 14:15:03
>>411
プロパティ

>>412
普通に
414デフォルトの名無しさん:2006/01/13(金) 14:15:12
>>411
サブクラス化
415デフォルトの名無しさん:2006/01/13(金) 14:22:57
416411:2006/01/13(金) 15:18:54
>>413
むむ??

>>414
うぉ。これだけのためにサブクラス化しなきゃいけないの嫌だなぁ。
諦めようかな。
417デフォルトの名無しさん:2006/01/13(金) 15:19:54
>>407
VB4,5,6共存させてるよ。
MS Common Control とか使ってるとまずいと思う(6が5のOCX上書きするので)。
それ以外は今のところ大丈夫かな。
NTでも2Kでも問題は出てないけどね。今はXPで共存させてる。

もちろん、MSがこれを保証しているかどうかはわからない。
俺が運良く問題にぶち当たってないだけかもしれんし。
418デフォルトの名無しさん:2006/01/13(金) 15:47:18
419デフォルトの名無しさん:2006/01/13(金) 16:18:45
>>417
それは共存できてないじゃん。
混在してるだけで。
420デフォルトの名無しさん:2006/01/13(金) 16:45:00
>>417
そんな滅茶苦茶な環境で作ったアプリのセットアップを
他のPCで動かしたら駄目ですよ。
そのマシンの環境迄破壊します。
421デフォルトの名無しさん:2006/01/13(金) 16:52:00
>>417はプロとして失格だと思う。
422デフォルトの名無しさん:2006/01/13(金) 17:05:06
vmwareをnyするのが一番
423417:2006/01/13(金) 17:14:22
なにやらひどい言われようですな。
別に俺のところで動いたからって他の環境で動くのを保証しているわけじゃないぞ。
あくまで、動作している環境もあるよって程度だよ。

>>419
これは共存って言わないの?
混在とはどう違うの?

>>420
普通テスト用の環境って作らない?開発とは別に。

>>421
そうですか。そうかもしれませんね。
424デフォルトの名無しさん:2006/01/13(金) 17:18:25
テスト用の環境に>>417の環境で作ったインストーラで
インストールするなんてテラコワス
425デフォルトの名無しさん:2006/01/13(金) 17:18:56
共存してるなら全てのものが異常なく使える
一部上書きされて使えなくなってる時点で共存じゃねぇ
426デフォルトの名無しさん:2006/01/13(金) 17:27:08
>>423
そんな環境でテストする意味は全然ない。
実運用では有り得ないから。
それに、そんな壊れた環境でのテストは完全に無意味&無駄。
427デフォルトの名無しさん:2006/01/13(金) 18:13:29
>>423
両方が共に普通に存在して共存だろ?
他方に対して影響してる時点で混在
428デフォルトの名無しさん:2006/01/13(金) 19:14:58
Vb6・Vb5・Vb4...は設定・ライブラリ等が競合する為同一環境にインストールすることは出来ません
というのがM$のサポート

普通の頭なら同時インストールはしない
429デフォルトの名無しさん:2006/01/13(金) 21:45:29
はじめまして。プログラム初心者です。VB6.0のプログラムのことで教えて下さい。
学校の課題で「入力された2進数32ケタ分の情報を可逆圧縮して出力する装置と、
その情報を入力すると元の2進数として出力する装置」を設計し作製せよという課題がでました。
とりあえずVB6.0は入手したのですが自分らのグループはみんなプログラム初心者なので
何をどうやってプログラムすればよいのか全くわかりません。
あと1週間で仕上げないといけないのですが、どういう手順でプログラムをしていけば良いのか
どなたか教えて頂けませんでしょうか?
430デフォルトの名無しさん:2006/01/13(金) 21:54:28
>>429
ここで質問するという選択肢を選んだ時点でバッドエンドだ
431デフォルトの名無しさん:2006/01/13(金) 22:15:11
出来ないなら出来るように努力するか、
出来ないということをそのまま公表するかのどちらかだろ。
最近のガキは(大人もだけど)取り繕うことしか考えてないのか?
上辺だけ整えたって「自力で解決できる能力が無い」という現状は何もかわらない。

仕事じゃないんだからなんとしても結果を出さなきゃならないってわけでもないだろ。
もちろん評価は落ちるだろうが、低い評価にしか値しない能力ならそれは仕方ないこと。
432デフォルトの名無しさん:2006/01/13(金) 22:19:56
>>431
いいこと言った。
433デフォルトの名無しさん:2006/01/13(金) 22:21:47
>>429
課題くらい、人から簡単に答えを聞こうとせずに、自分で書籍その他資料を当って解決しやがれ
てめぇの学校には図書館(or室)も無いのか
434デフォルトの名無しさん:2006/01/13(金) 22:34:27
アニメ学校のプログラマー科なんだろ……
435429:2006/01/13(金) 22:38:58
わかった。もう聞かん。さよならー おまいら
436デフォルトの名無しさん:2006/01/13(金) 22:43:24
もう来るなよー
437デフォルトの名無しさん:2006/01/13(金) 22:43:47
>>429
課題の求めてる意味がよく分からんな。
32桁の二進数→1と0が32文字。
で、文字数を減らせばいいのか?
それなら、単純に16進表記するとか。
438デフォルトの名無しさん:2006/01/13(金) 22:52:29
>>437
おいおいw
圧縮って知らないのかい君は。
シャノンの情報理論って学部で勉強するだろw
ひょっとして429の釣り?

しかし4バイトを圧縮するって無理があるなw
439デフォルトの名無しさん:2006/01/14(土) 00:01:13
>>430-431
このスレ意味無いじゃんww
440デフォルトの名無しさん:2006/01/14(土) 00:04:20
>>439
代アニにお帰り
441デフォルトの名無しさん:2006/01/14(土) 00:08:40
>>440
代アニを弄ぶスレ?w
442デフォルトの名無しさん:2006/01/14(土) 00:13:55
質問者の負け惜しみはほどほどに
443デフォルトの名無しさん:2006/01/14(土) 00:17:59
さて。
>>429 はもう来ないみたいだし、あの課題をやってみようぜ。
444デフォルトの名無しさん:2006/01/14(土) 00:19:20
>>443
お前性格 良すぎww
445デフォルトの名無しさん:2006/01/14(土) 00:21:42
>>443
ここは提供されたネタを実装するスレじゃないので、
求める人も居ないのにやってみる必要なし。

と、最後の望みを賭けた演出をうち砕いてみるてすと。
446デフォルトの名無しさん:2006/01/14(土) 00:28:54
そろそろ寝るか・・・
447デフォルトの名無しさん:2006/01/14(土) 00:31:09
[タスク]

デバッグは終了しました・・・
448デフォルトの名無しさん:2006/01/14(土) 00:35:53
とにかく課題を2ちゃんで聞いてしまっては
本人のためにならない。
449デフォルトの名無しさん:2006/01/14(土) 00:38:36
さて。
>>429 はまだ常駐しているようだし寝るべ。
450デフォルトの名無しさん:2006/01/14(土) 00:39:10
>>445
あんなに求めてたのに誰もやってあげなかったよ。
451デフォルトの名無しさん:2006/01/14(土) 00:41:35
>>450
赤の他人の課題をやる必要がないからもんね
452デフォルトの名無しさん:2006/01/14(土) 00:47:28
32ビットの値を8ビットまで圧縮できるアルゴリズムを考えたが
それを書くにはこのスレは狭すぎる
453デフォルトの名無しさん:2006/01/14(土) 00:50:15
>>452
書かなければいい。
454デフォルトの名無しさん:2006/01/14(土) 00:51:56
無駄にスレの浪費するな
455デフォルトの名無しさん:2006/01/14(土) 00:55:02
いや書いてよ パクッテ大もうけするからw
456デフォルトの名無しさん:2006/01/14(土) 01:04:09
>>452
何処かにうp
457デフォルトの名無しさん:2006/01/14(土) 01:06:23
しかし4ビットが8ビットになる時もある諸刃の剣。
ランダムデータにはおすすめできない。
458デフォルトの名無しさん:2006/01/14(土) 07:55:07
>>429
進数変換の課題のようにも見えるけどファクシミリ(FAX)の課題?
ランレングス圧縮でいいんだったら,
0や1がいくつ連続するか数えて、

入力 00000000000000000000000000000000
出力 0-32(0が32個)

入力 10000000000000000000000000000000
出力 1-1-0-31(1が1個,0が31個)

みたいなデータを出力すればいいんじゃねーの?

でもこの方法だと,
入力データの0や1が連続している場合はうまく圧縮できそうだけど、
0や1が連続していない場合は圧縮後のデータの方が容量大きく
なりそうだよね。

そういう気付いたことは考察欄に書いておく。

プログラムの作り方の話をすると、圧縮するサブルーチンと
圧縮を解くサブルーチンの最低2つに分けることができる。
入力データと出力データは文字列にして、
「いま処理中の文字は文字列中の何番目の文字か?」を保持する
変数が必要。

このあたりはどうにでも作れるので、みなさんで適当に。
459デフォルトの名無しさん:2006/01/14(土) 14:22:00
おいおい、1週間過ぎてから始めろよ
460デフォルトの名無しさん:2006/01/14(土) 16:36:41
>>459
何故一週間?
461デフォルトの名無しさん:2006/01/14(土) 17:10:48
提出期限が1週間後だから
462デフォルトの名無しさん:2006/01/14(土) 23:03:56
そういやどんなサイズのファイルでも0バイトにする圧縮ソフトあったな。
しかも可逆圧縮で。
463デフォルトの名無しさん:2006/01/14(土) 23:07:43
コロンブスの卵だよな
464デフォルトの名無しさん:2006/01/14(土) 23:29:12
そんなのあるわけないじゃん
465デフォルトの名無しさん:2006/01/15(日) 00:31:45
元に戻すのに、元ファイルと同じサイズの辞書ファイルが必要なんだよね。
466デフォルトの名無しさん:2006/01/15(日) 01:01:53
どんなサイズのファイルでも
「ぬるぽ」っていうたった3文字の圧縮するソフト知ってるよ
467デフォルトの名無しさん:2006/01/15(日) 03:21:19
ファイルの中身を0バイトにして、内容をファイル名だか何かにしてたやつがあったが。
468デフォルトの名無しさん:2006/01/15(日) 15:59:39
>>462
あれはすごかった。
まさに発想の転換。ただ多用するとHDDぶっ壊れるかも知れんけど。
469デフォルトの名無しさん:2006/01/15(日) 17:43:55
>>468
URLは?
470デフォルトの名無しさん:2006/01/15(日) 18:14:47
> 多用するとHDDぶっ壊れるかも
そういう発送をする根拠が知りたい
471デフォルトの名無しさん:2006/01/15(日) 18:17:54
ちゅーばっか
472デフォルトの名無しさん:2006/01/15(日) 23:02:07
0バイトの可逆ってドラえもんでも無理だな。
ドラえもんが自分を四次元ポケットに入れたらどうなるか?って感じだ。
473デフォルトの名無しさん:2006/01/15(日) 23:30:12
亜空の瘴気
ヴァニラ=アイス
474デフォルトの名無しさん:2006/01/16(月) 09:57:45
クリスタルレポートについてご存知の方がおられましたら教えてください。
既存のプロジェクトにcrpe32.dllを呼び出して使用している個所がありました。
VB6.0で開いていたのですが開発環境にcpre32.dllがありませんでした。
調べてみるとVB5.0に提供されていたDLLのようです。
これをVB6.0で利用する場合、何か置き換えられるものがあるのでしょうか?
よろしくお願いいたします。
475デフォルトの名無しさん:2006/01/16(月) 10:45:46
>>474
それはVB4と5しか対応してません。
なので、
ttp://www.agtech.co.jp/products/crystal/
製品版を購入するしかないでしょうね。
476デフォルトの名無しさん:2006/01/16(月) 10:53:57
>>475
ありがとうございました。検討いたします。
477474:2006/01/16(月) 14:03:19
>>475
たびたび申し訳ありません。
VB6.0にはcpre32.dllが無いだけではなく
CrystalReports自体付属していないのでしょうか?

VB5.0で付属のクリスタルレポートを使って開発されていたプロジェクトを
VB6.0に移行する場合、製品版を購入するというのが通常の手順なのでしょうか?
申し訳ありませんがよろしくお願いいたします。
478デフォルトの名無しさん:2006/01/16(月) 14:26:09
> 通常の手順なのでしょうか?
何を以て"普通"なんて判断をするの?
おまえが納得する手順を踏めばいいだけだろ。

おまえは他人に「〜が普通だよ」って言ってもらわないと何も出来ないのか?
そもそも匿名掲示板は情報収集以上のことに使おうってのが間違い。
提供された情報が正しいかどうか、自分に合っているか、(普通かどうか)は
自分で確認しろ。
479デフォルトの名無しさん:2006/01/16(月) 15:29:21
>>478
そういうのも議論すればいんじゃね?
480472:2006/01/16(月) 15:44:22
ドラえもんを4次元ポケットに入れたらどうなるか
どう見ても、またポケットから出てくるだけのお話です、本当に(ry
481デフォルトの名無しさん:2006/01/16(月) 15:51:59
>>480
ポケット自体をポケットに入れるんだよ。
圧縮結果サイズ0の可逆反応の話をしてるんだから、そこからどらを戻せるかってことだ。
482デフォルトの名無しさん:2006/01/16(月) 16:17:40
>>477
VB6買ったんなら、付属してるかどうかはそれ見れば分かる。
483472:2006/01/16(月) 16:18:28
>>481
ドラえもんが自分を4次元ポケットに入れたらどうなるか、ですが何か
484デフォルトの名無しさん:2006/01/16(月) 16:27:47
ドラえもんのせいで話がややこしくなってる。
485472:2006/01/16(月) 16:30:42
俺が最初からちゃんとドラえもんが自分をと言ってるのに勝手に>>481がややこしくしてるだけ
486デフォルトの名無しさん:2006/01/16(月) 16:36:50
>>481が言っていることは、ポケットを裏返すということ?
だったら>>481の答えは「縫い目が見える」だ
487デフォルトの名無しさん:2006/01/16(月) 16:49:04
どうなるも何も、四次元ポケットは取り外せるから、
外してから普通に中に入るだけ。
488デフォルトの名無しさん:2006/01/16(月) 17:10:28
元の話も読まずに書きこしてる奴ばっかだな?
圧縮サイズ0の可逆圧縮が可能って言ってる馬鹿がいるから、例をだしてるんだろ?
ドラえもんがポケットを外さずに自分を全て入れた上で、それを戻すのが可能だといってるのが、0からの可逆復元だよ。
元の圧縮自体が矛盾してるのは当然なの。出来ないことを言ってるんだから。

ドラえもんの例で言えば、ドラえもんを消滅させるしかないのに、それを圧縮とよび、復元可能だと言ってるんだよ。
489デフォルトの名無しさん:2006/01/16(月) 17:16:38
件のサイズ0ってのは、別次元に送ってるだけなのだが。
490472:2006/01/16(月) 17:18:10
ポケットを外さずにポケットごとなんて言ってないのにw
消滅とかバカじゃねーの?w
491デフォルトの名無しさん:2006/01/16(月) 17:20:38
ファイル「C:\temp_a」の内容を全てそのままファイル「D:\temp_a」として移し、ファイル「C:\temp_a」の内容を全て消去し0とする
ドラえもんのは要はこういうことですよと

それを圧縮と比べてるのは>>488だけ
492デフォルトの名無しさん:2006/01/16(月) 18:11:43
>>488
>元の話も読まずに書きこしてる奴ばっかだな?
それは自分に対して言ってるのかな?
493デフォルトの名無しさん:2006/01/16(月) 19:06:40
494デフォルトの名無しさん:2006/01/16(月) 19:36:53
このスレは相変わらずくだらない事でカオス状態になるなw
495デフォルトの名無しさん:2006/01/16(月) 19:41:23
カオス終わり

VBの質問を再開します。
496デフォルトの名無しさん:2006/01/17(火) 00:32:46
VB6で戻り値を設定したプログラムは作れますでしょうか?
form_unloadして終了したときに戻り値が出ると助かるのですが。
497デフォルトの名無しさん :2006/01/17(火) 00:51:44
VB6.0でFTPソフトを作ってます。
んで、でかいファイルを転送しようとすると、転送部分で処理が留まってしまうので、
ウィンドウが固まってしまいます。

以前、ファイルコピーソフトを作ったときは、コピー部分を別EXEにして、
別プロセスとして動かすことで画面が固まるの防いだんですが、
(マルチプロセスっていうんですか?まぁその程度の知識です)
FTPでウィンドウ固まるのを防ぐ方法も、ファイルごとにFTP転送を行う
EXEを作って、上記と同様な方法ですればいいんでしょうか?

そうするとファイルごとにFTP鯖につなぐことになるし、
何よりもEXEが複数になってあまり綺麗じゃないのが気になります・・・
498デフォルトの名無しさん:2006/01/17(火) 01:04:36
>>496
無理。VBSなら出来るので、VBアプリと何とかして連携させるとか。
499デフォルトの名無しさん:2006/01/17(火) 01:11:43
>>497
例えば 100 k バイト毎送信して間に DoEvents 挟むとか。
500デフォルトの名無しさん:2006/01/17(火) 06:28:47
非同期通信すれば良いじゃん
サブクラス化して、Windowsメッセージを処理すればOK
つかFTPをどうやって実装してるわけ?コントロール使ってんの?
501デフォルトの名無しさん:2006/01/17(火) 09:13:40
サブクラス化してやるぐらいなら、VBで作らない、別EXEで連携などのほうがマシ。
502デフォルトの名無しさん:2006/01/17(火) 09:24:00
わざわざ作らんでも FFFTP でいいのに。
503デフォルトの名無しさん:2006/01/17(火) 09:25:40
それは違う。
仕事で使うならFFFTP使いますなんていえませんよ。
504デフォルトの名無しさん:2006/01/17(火) 09:36:01
FFFTPでいいじゃん
505デフォルトの名無しさん:2006/01/17(火) 10:26:27
じゃあ俺はftp.exeで
506デフォルトの名無しさん:2006/01/17(火) 10:31:34
>>505
俺はそれ……
507デフォルトの名無しさん:2006/01/17(火) 12:37:40
>>503
普通に言ってたけど。
既にある物を上手く利用して組み合わせ、安くて安定したシステムを
短い納期で提供しないと。
508デフォルトの名無しさん:2006/01/17(火) 12:41:50
>>507
JOKEで言ったんだよな?
509デフォルトの名無しさん:2006/01/17(火) 12:47:45
FFFTP は自動処理を目的とした FTP クライアントではありません

以前より、FFFTP をコマンドライン経由で自動化処理して用いる事を検討している方が多いですが、
FFFTP は手動操作がメインであり、自動化を目的として作成されておりません。
コマンドラインは起動時の自動処理等、最小限の動作しか対応されていません。
自動化を目的とした FTP クライアント は他にあると思います。お探し下さい。

510デフォルトの名無しさん:2006/01/17(火) 13:07:17
>>497 は自動化するとは書いてない。
511デフォルトの名無しさん:2006/01/17(火) 13:08:31
自動化しろよ
512デフォルトの名無しさん:2006/01/17(火) 13:56:27
OS標準の Ftp.Exe

Transfers files to and from a computer running an FTP server service
(sometimes called a daemon). Ftp can be used interactively.

FTP [-v] [-d] [-i] [-n] [-g] [-s:filename] [-a] [-w:windowsize] [-A] [host]

-v Suppresses display of remote server responses.
-n Suppresses auto-login upon initial connection.
-i Turns off interactive prompting during multiple file
transfers.
-d Enables debugging.
-g Disables filename globbing (see GLOB command).
★-s:filename Specifies a text file containing FTP commands; the
commands will automatically run after FTP starts.
-a Use any local interface when binding data connection.
-A login as anonymous.
-w:buffersize Overrides the default transfer buffer size of 4096.
host Specifies the host name or IP address of the remote
host to connect to.

Notes:
- mget and mput commands take y/n/q for yes/no/quit.
- Use Control-C to abort commands.
513デフォルトの名無しさん:2006/01/17(火) 17:33:49
ドライブとディレクトリリストボックスについての質問なんですが、



Private Sub Dir1_Change()
  File1.Path = Dir1.Path
End Sub

Private Sub Drive1_Change()
  Dir1.Path = Drive1.Drive
End Sub

Private Sub Form_Load()
  Dir1.Path = "C:\"
  Drive1.Drive = Left(Dir1.Path, 2)
End Sub



の様に初期値を設定しようとすると、
  Drive1.Drive = Left(Dir1.Path, 2)
の後
Drive1_Change()
が動いてしまって初期値設定ができません。

topindexも考えたんですが、
それだと初期値が変わった時の場合分けが必要だし...
何か上手い方法はありませんか?
514デフォルトの名無しさん:2006/01/17(火) 18:08:20
>>513
いやそれで普通に C:\ で初期化されると思うけど。
何が駄目なの?
515デフォルトの名無しさん:2006/01/17(火) 18:34:11
>>514
やっても『C:\』でなくて、『C:\〜\デスクトップ\VB』ってProject置いてあるフォルダになっちゃうんです...orz
うちの環境がおかしいのか...?orz

あ、VB6です。
516デフォルトの名無しさん:2006/01/17(火) 18:38:41
あ、できた。。。(ノ∀`)

Private Sub Dir1_Change()
  File1.Path = Dir1.Path
End Sub

Private Sub Drive1_Change()
  Dir1.Path = Drive1.Drive
End Sub

Private Sub Form_Load()
  Dim P As String
  P = "C:\"

  Drive1.Drive = Left(P, 2)
  Dir1.Path = P

End Sub

お騒がせしました。orz
517デフォルトの名無しさん:2006/01/18(水) 01:28:26
>>498
そうですか。アドバイスthx
518デフォルトの名無しさん:2006/01/18(水) 08:52:08
VBでボタンを使いHTMLに書いてあるJavaScriptやVBScriptを
実行する方法はありますか?
519デフォルトの名無しさん:2006/01/18(水) 09:04:08
>>517
ファイル渡しが一番簡単なのでは。
VBアプリが終わるとき、特定の場所に内容が0とか1の
1バイトのエラーコードを書いたファイルを作り、Start xxxx /WAIT
で同期を取って、次にそのファイルを読んで ERRORLEVEL を返すだけの
小さなCアプリを走らせる、と。
520デフォルトの名無しさん:2006/01/18(水) 17:13:08
今日はじめて知って恥ずかしいんだけど聞いてくれ。

TextBoxとか普通のコントロールは、コントロール内でクリックしたまんま外にカーソルを移動させてボタンを離す(つまりDrag&Dropの動作)
をすると、コントロールの外でもMouseUpイベントが発生する。
でもListViewは発生しなかったんでビックリした。
つーか、MouseMoveイベントからListView内でしか発生しなかった。

このListViewの挙動を、他のコントロールと同じにする方法ってあるのかな?
521デフォルトの名無しさん:2006/01/18(水) 17:57:08
AIP使えばどうにでもなるが、標準コントロール(プロジェクト > コンポーネントで
何もチェックしなくても使える物) とそれ以外の仕様は
たとえMS製でも一律じゃないと思った方がいい。
同じイベント名でも細かい動作が違ったりする。
522デフォルトの名無しさん:2006/01/18(水) 18:26:31
>>521
520だけど、APIのSetCapturerすら効かないみたい><
523デフォルトの名無しさん:2006/01/18(水) 18:34:53
オイオイ違うだろw
524デフォルトの名無しさん:2006/01/18(水) 19:15:17
オマエガナ
525デフォルトの名無しさん:2006/01/18(水) 19:45:36
524
526デフォルトの名無しさん:2006/01/18(水) 20:00:00
>>520
そもそも、何故同じにしたいの?
527デフォルトの名無しさん:2006/01/18(水) 20:53:04
>>526
いまListBoxからTextBoxにアイテムをDrag&Dropする機能があるプログラムがあるんだけど
コイツがMouseDown/MouseMove/MouseUpを使って実装してあるんだよ。
単純にこのListBoxをListViewに置き換えられれば楽だなー、と思って。
528デフォルトの名無しさん:2006/01/18(水) 21:01:01
好きにすればいいじゃん
529困ってます。:2006/01/18(水) 21:09:53
教えてください。
突然、VB5の開発をする事になりました。
(ユーザーの環境が5.0)
会社のPCにVB5をインストールしたのですが、サービスパックがありません。
手に入れる方法はありますか?
530デフォルトの名無しさん:2006/01/18(水) 21:27:40
531困ってます。:2006/01/18(水) 21:37:26
>>530
早速のご返事ありがとうございます。
そこへは、行ってみたのですが、
Location Cannot Be Found となってダウンロードまでたどり着けないんです。

532デフォルトの名無しさん:2006/01/18(水) 22:00:05
>>529
ちなみにOSは何?
533デフォルトの名無しさん:2006/01/18(水) 22:06:46
たどり着くも何も直接ファイルにリンクされてるじゃんw
意味ワカンネ
534デフォルトの名無しさん:2006/01/18(水) 22:14:14
535デフォルトの名無しさん:2006/01/18(水) 22:23:42
それではうpだてできないんじゃね?ftpくらいあん子で適当に掘ったら
それっぽいのは見つかったけどな。自分で探して見れ。
536デフォルトの名無しさん:2006/01/18(水) 22:28:15
>>533
どれ?
URLは?
537デフォルトの名無しさん:2006/01/18(水) 22:35:36
>>534
それはリードミーだけでは。
538デフォルトの名無しさん:2006/01/18(水) 22:43:06
どこの世界にわざわざテキストファイルを自己解凍ファイルでアップするタワケがおるねんw
つーか、日本語読めないのかよw
539デフォルトの名無しさん:2006/01/18(水) 22:47:13
リリースノート
Readme.wri Redist.txt Eula.txt が含まれています。
540デフォルトの名無しさん:2006/01/18(水) 23:14:43

Version
 VB6.0

仕様
 JPG、GIF、PNG、BMPをImageコントロールに読込み、読み込んだ画像上に
 画像の大きさに比例するフォントサイズの文字列を表示する。

問題点
 上記の各ファイルをImageコントロールに表示するとこまではできたのですが
 文字列を表示することができません。どうすれば表示させることができるでしょうか。
 また、背景色を指定したいのですがImageコントロールにBackColorプロパティが存在しません。
 どうすれば背景色を指定することができるか教えてもらえないでしょうか。
 よろしくお願いします。
541538:2006/01/18(水) 23:15:36
ああ、すまん日本語読めないのは俺の方だったw
なんか米のMSのサーバーからも完全に抹殺されてるっぽいね。

お詫びといっては何だが、Internet Archiveにキャッシュされてるみたいだよ。
http://web.archive.org/web/20040412001606/http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs97/vb.aspx
542デフォルトの名無しさん:2006/01/18(水) 23:38:00
>>540
標準添付のコントロールでは全部無理。
なので、市販のどれかの画像処理系OCXを買う。
543デフォルトの名無しさん:2006/01/18(水) 23:44:52
>>542
釣り?
544529:2006/01/18(水) 23:46:02
>>538 さん、ありました、ありがとう。




545デフォルトの名無しさん:2006/01/18(水) 23:59:24
>>540
俺だったらラベル重ねるだけで済ましちゃう。
546デフォルトの名無しさん:2006/01/19(木) 01:45:53
Imageコントロールは止めてPictureBoxにすれば書き込める。
慣れない内はAutoredraw=trueで。
でもグラフィックに書き込むことが目的なのではなく、
重ねて表示するのが目的なんだったら>>545
547デフォルトの名無しさん:2006/01/19(木) 02:11:08
□!!!これを見た貴方は3日以内に死にます!!!■
■死にたくなければ、このレスをコピーして他のスレに □
□10回貼り付けて下さい。1時間以内にです!もし無 ■
■した場合は、今日寝ている間に富子さんがやってきて□
□貴方の首を絞めに来ます。富子さんは太平洋戦争の■
■時に16歳という若さで亡くなった女の子で、未だに成 □
□仏していないそうです。信じる信じないは貴方次第。 ■
■今年になってからこのレスを無視した人で、“呪われ □
□て死亡した人”が続出しています。これは富子さんの ■
■呪い。呪われて死んでもいいのならこれを無視するこ□
□とでしょうね。                        ■
■――貴方がこうしているうちに富子さんが後ろから見□
□ていますよ…。                       ■
■□■□■□■□■□■□■□■□■□■□■□■□
548デフォルトの名無しさん:2006/01/19(木) 04:34:03
富子さんは、太平洋戦争の時、もうネットで2ch開いていた当時、超ハイテク16歳と見た!!
呪い怖〜いよ〜
(^O^)/ガクブル&西川クンが気絶してもうた〜
549デフォルトの名無しさん:2006/01/19(木) 04:39:51
547
16才の彼女は未だに成仏出来ないって所、
16才の彼女は未だに未成熟って読んでエロい妄想が沢山吹き出てしまった。
ロリコンな俺、ウカツだったぜ・・・
550デフォルトの名無しさん:2006/01/19(木) 04:40:16
誰か和訳してくれ
551デフォルトの名無しさん:2006/01/19(木) 07:22:26
>富子さんが呪ます

まで読んだ
552デフォルトの名無しさん:2006/01/19(木) 09:28:28
>幼女の唇を

まで読んだ。
553デフォルトの名無しさん:2006/01/19(木) 10:07:43
>>542
>>545
>>546

ラベルを重ねる方法でやってみたいと思います。
ありがとうございました。
554デフォルトの名無しさん:2006/01/19(木) 10:27:56
>>552>>553を同時に読んだせいで

唇を重ねる方法でやってみたいと思います。
ありがとうございました。

に見えた
555デフォルトの名無しさん:2006/01/19(木) 11:40:17
ある コンピュータ名を持つコンピュータがネットワークに繋がっているかどうかを調べて
返すということをしたいのですが…

例えば テキストボックスtext1 に"CP1"と入力して
コマンドボタンを押すと、ネットワーク上でCP1 が認識できたら
OKとメッセージ表示、できなかったらNOとメッセージ表示と。

NET VIEW とかいうコマンドを使えばよいのでしょうか。
少し調べたけれど良く分かりませんでした…
556デフォルトの名無しさん:2006/01/19(木) 11:50:45
>>554
そうかそういう方法もあったのか...(゜Д゜;)
557デフォルトの名無しさん:2006/01/19(木) 13:10:49
>>555
Microsoft Winsock Control を使うとか Ping 打ってリダイレクトするとか
ttp://www.vector.co.jp/soft/win95/prog/se263702.html?site=n&srno=SR031721
を利用するとか。
558デフォルトの名無しさん:2006/01/19(木) 17:58:02
グリッドで表示されたデータの中からマウスでクリックしたデータをテキストボックスに書き込みたいんですが

マウスでクリックしたデータ
gred.プロパティ =txtbox
だと思うんですがプロパティは何を使えば取得できますか?
559デフォルトの名無しさん:2006/01/19(木) 18:17:09
左辺と右辺からして逆に思えるし。
GridのカレントであればRowColの該当するTextか何かで取れるだろうし。
560デフォルトの名無しさん:2006/01/19(木) 18:20:12
>>558
グリッドって言ってもいろいろあるわけだが、どのグリッドコントロール?
561デフォルトの名無しさん:2006/01/19(木) 18:20:46
>>558
グリッドって言ってもいろいろあるわけだが、どのグリッドコントロール?
562デフォルトの名無しさん:2006/01/19(木) 19:30:09
>>558
普通 .Text みたいな名前のプロパティになってる筈。
後は .Value とか。
563デフォルトの名無しさん:2006/01/20(金) 02:08:02
ひさしぶりにVB6.0を使ってみたのだが、
すっかり忘れてる・・・・
EXCELアプリケーションのインストールパスを取得する
APIってなんでしたっけ?
564デフォルトの名無しさん:2006/01/20(金) 02:41:20
そんなAPIあるとは思えないんだけど。
565デフォルトの名無しさん:2006/01/20(金) 04:09:15
>>563
FindExecutable ?
566デフォルトの名無しさん:2006/01/20(金) 12:33:36
Linux上でC言語で作成された電文をTCP/IPで送信して
PC側のVB6.0で作成したアプリで受信しているのですが
新たに送信電文を暗号化する必要がありBlowfishを組み込みました
送信側はOKなのですが、VB側はunsigned longのような方とか無い為
なかなかうまくいきません、なにかVB側で簡単に複合化する手立てはないでしょうか?
C言語の方がメインでVBのほうは今一なので・・・・
567デフォルトの名無しさん:2006/01/20(金) 12:39:39
>>566
CでDLL作ればいいじゃん
568デフォルトの名無しさん:2006/01/20(金) 14:57:40
ディストリビューションウィザードのスクリプトって
どこに保存されているのでしょうか?
569デフォルトの名無しさん:2006/01/20(金) 15:09:06
VB6とアクセス2000を使ったプログラムを作っています

アクセスのテーブルを接続しレコードセットオブジェクトを作りました
このテーブルにはNAME1〜NAME12というようなフィールドがあるのですが
これを
プログラム内のループで扱うことは出来るのでしょうか

わかりにくいかもしれないですが
下のような感じです

for i = 1 to 12
RS![NAME & i] = name(i)
next i

よろしくお願いいたします


570デフォルトの名無しさん:2006/01/20(金) 15:49:12
>>569
DAOなのかADOなのか知らんが
RS.Fields("NAME" & i).Value =
571デフォルトの名無しさん:2006/01/20(金) 16:38:10
>>570
ありがとうございます
まくできました
572デフォルトの名無しさん:2006/01/20(金) 20:33:37
>NAME1〜NAME12というようなフィールドがあるのですが

激しく非正規形な香りがするな。
573デフォルトの名無しさん:2006/01/20(金) 21:14:04
どうせなら NAME01 〜 NAME12 に。
574デフォルトの名無しさん:2006/01/20(金) 22:43:50
質問です。VBってWindowsのパソコンだとどれでも最初からスタート→プログラム→VBで起動できるんですか?
575デフォルトの名無しさん:2006/01/20(金) 22:46:35
はい。そうです。
576デフォルトの名無しさん:2006/01/20(金) 22:48:48
>>575
教えていただいてありがとうございました(;´人`)
577デフォルトの名無しさん:2006/01/20(金) 23:16:41
>>574
最初からは入ってないよ。
買ってインストールせんと。
578デフォルトの名無しさん:2006/01/21(土) 02:09:16
うい?!やっぱりそうでしたかあ↓↓わかりました!!
579デフォルトの名無しさん:2006/01/21(土) 06:10:11
>>566
unsigned long コイツはVBのLong型で受け取れるよ
ただ 0x7FFFFFFF超える値はマイナスで表示されるから
変換演算してValiantかDouble他の変換しないとダメ
580デフォルトの名無しさん:2006/01/21(土) 10:28:10
>>579
全部 Currency でやってるな・・・
581566:2006/01/21(土) 15:25:24
>>579
>>567
CでDLLを作ってみようと思うのですが、
どのようなツールを使って、どうやって作ればいいのですか?
簡単に教えてください、あとは調べます
582デフォルトの名無しさん:2006/01/21(土) 16:03:32
>>581
VBだけ買ったのか。VisualStudio6ならVC++も入ってるのに。
DLLのソースは例えばこんな感じ。改行が多いって言われたので詰めて・・・
#define STRICT
#include <windows.h>
#include <windowsx.h>
__declspec(dllexport) VOID Hoge(HWND hWnd);
BOOL __export __loadds CALLBACK HemoDlgProc(HWND hDlg ,
UINT iMessage,
WPARAM wParam ,
LPARAM lParam );
#pragma data_seg("sharedat")
#pragma bss_seg("bss_data")
__declspec(dllexport) BOOL bFoo = FALSE;

LRESULT CALLBACK HemoDlgProc(HWND hWnd ,
UINT msg ,
WPARAM wParam,
LPARAM lParam )
{
// 処理
}
BOOL WINAPI DllMain(HANDLE hInst ,
ULONG ul_reason_for_call,
LPVOID lpReserved )
{
// 処理
}
583デフォルトの名無しさん:2006/01/21(土) 16:07:10
>>581
まずは調べてから聞けよ
584デフォルトの名無しさん:2006/01/21(土) 16:09:08
>>566
データ量わからんけど、少ないなら
ぜんぶ文字列にしちゃえばいいんじゃないの?
585デフォルトの名無しさん:2006/01/21(土) 16:17:14
>>582
Visual Studio .NET2003というのがあります
これのC++で作成しても大丈夫ですか?
586デフォルトの名無しさん:2006/01/21(土) 16:18:17
>>583 ごめん
なんのツールで作ればいいのかもわからないので
聞いたほうが早いかと
587デフォルトの名無しさん:2006/01/21(土) 16:26:18
そんな奴が作れるのか
588デフォルトの名無しさん:2006/01/21(土) 16:30:00
>>587
何を使って作ればいいか、わかれば作れるでしょ
もちろん初めてだから時間はかかるけど
589デフォルトの名無しさん:2006/01/21(土) 16:42:49
とりあえずもうVBの話じゃないからスレ違い
590デフォルトの名無しさん:2006/01/21(土) 17:04:33
>>585
んー、C++じゃなくて、生Cで作って。
591デフォルトの名無しさん:2006/01/21(土) 17:07:29
DLLなんてウィザードで作れるじゃん
592デフォルトの名無しさん:2006/01/21(土) 17:08:09
ウィザードよりウォーリアの方が好きです
593デフォルトの名無しさん:2006/01/21(土) 18:28:21
早く教えてよ
594デフォルトの名無しさん:2006/01/21(土) 18:30:32
595デフォルトの名無しさん:2006/01/21(土) 18:34:35
ウェブ上のhtmlファイルの更新日時が知りたいんですが、
httpヘッダに書かれているLast-Modifiedヘッダじゃなくて、
ウェブサーバのファイルシステム上の更新日時を知るには
どうしたらいいんでしょうか。
ftpの場合だったらFtpFindFirstFileで調べられるんですが、
httpの場合のやり方がわかりませんので、教えてください。
596デフォルトの名無しさん:2006/01/21(土) 18:35:50
>>595
できませんよ。
597デフォルトの名無しさん:2006/01/21(土) 18:39:15
できないんですか。。。残念。
598デフォルトの名無しさん:2006/01/21(土) 19:31:20
>>595
HTMLファイルの中に<!-- lastupdated=YYYY/MM/DD hh/mm/ss -->って
書いておけばいいんじゃねーの?
ってそういう質問じゃないのか。
599デフォルトの名無しさん:2006/01/21(土) 19:50:06
>>595
それを知って何がしたいの?
実は、その「やりたい事」は、更新日時を知らなくても出来るかもよ。
600デフォルトの名無しさん:2006/01/21(土) 20:51:21
>>519
遅レスですがありがとうございます。
いいアイデアです。助かりました。
601デフォルトの名無しさん:2006/01/23(月) 01:32:04
モキュモキュ
602デフォルトの名無しさん:2006/01/24(火) 02:02:04
VBでタブブラウザ作ってみようと思うんだけど
おまえらだったらVBで作るのは無謀だと思う?
603デフォルトの名無しさん:2006/01/24(火) 02:41:17
んーにゃ。
604デフォルトの名無しさん:2006/01/24(火) 08:31:29
>>602
いいんじゃねーの?
605602:2006/01/24(火) 09:20:12
そうか!無謀ではないか
よし、いっちょ作ってみるか(`・ω・´)
606デフォルトの名無しさん:2006/01/24(火) 09:49:30
>>602
 !  |  !   ',   ヽ    \   ',   ヽ   `丶、__,.ィ
 |  ',  ',   '、   ヽ     ヽ !    ',       <´
 ',   ',   ヽ ヽ ',ヽ  ヽ',\;、  !', !      ヽ      、ヾニ=-
  ヽ  ヽ   ヽ、 ヽゝヽ、 ヾ ̄__ヽノ-リ',       \       \\
   lヽ  ',ー- 、ヾー    '"´i { ij } } ヽ      \      ',ヽ',
    ', ヾ>‐''iヾ´       ヾニ´ノ  ヽ         ',       !
    ','"{ iヾ! } }       ´"' ' ゙`   |\      }     ', |
ヽ、   ヽヾニ´'、     i            !'" ヽ      !     リ
 !i丶、__\゙ `              /    ',i    ',i'    , }
、 ヽヽ=ヽ  ̄       ⊂つ       , '     ソ / !リ    ! /
.|`゙''`''ーヽ、    _,,         /      |ノ'ノ/   { l/
.|  i ヽ、 ``´´ ニ=-      ,.イ      / //   ; /ヾゝ
. '、 ヽ、  `゙''ー‐<`゙ ー -- ‐'" {    _,..{ ∠´ノ   /'   挑戦する事は素晴らしいわ・・・
 ,>'"´゙ヾヽ''ヾ)ヽー`    _, ---゙==、'´  '´  `ヽ | i
'´     ヾヽ ヽ|、ー ,.イ´i ! | ! ヽヽヽ`ヽ、 _ r、_ヽ|
       }'゙|  ', ! / i l| || !',ヽ_}ヽゝ', 、、ヽ`´  `゙r‐、
        }|  ', }! i |r:::ヽヾヾ {。:::} ',', ', !、',     }
     ,   !!  i !| | |ヾ-'   `゙´  ヾ! !|ノ゙'      |
      {   ',|___',i ',゙' 、_rっ-‐'´   ,}| |_,ヘ'ヽ,イノー;、}
     ',/´    `゙ヽ  `´     ノ゙´    / /''´
607デフォルトの名無しさん:2006/01/24(火) 11:50:15
すいません、
以前あった、MSCD70-175と70-176をもとにいま〜 勉強しようと思っているのですが、
どちらから取り組んだほうがよろしいですか?
608デフォルトの名無しさん:2006/01/24(火) 13:42:01
>>607
MSCD70-175と70-176て何?
609デフォルトの名無しさん:2006/01/24(火) 21:04:23
Live2chはVBだ
610602:2006/01/24(火) 21:13:28
とりあえず、タブブラウザ制作開始した
MDIにしてツールバーのところをIEちっくにCoolBarにしてみたら
CoolBar上に置かれたコントロールにフォーカスが行くたんびにちらつく・・・orz
まったく、俺がいったい何をしたというんだ・・・(´・ω・`)
611デフォルトの名無しさん:2006/01/24(火) 21:59:18
質問です。
spreadにsettextされているデータ同士を
加算し再びspreadのセル内に出力したいのですが
いい方法は御座いますでしょうか?
612デフォルトの名無しさん:2006/01/24(火) 23:48:38
>>610
細かいことは後回し後回し!
出来ることから勢いに乗ってやって行けばいいじゃん
613デフォルトの名無しさん:2006/01/25(水) 00:27:43
っていうか、どうせ趣味ならExpressでやりたいと普通は思うんじゃないかと。。
VB6に固執していいことあるか?
仕事ならそれも仕方ないだろうけどさ。
614デフォルトの名無しさん:2006/01/25(水) 02:57:48
やっぱ軽いし起動も早いからなぁ->VB6
でも.NETの楽さも捨てがたいが。

タブブラウザなんてまさにVB向きなんじゃないの。
IEコンポーネント使って作るサンプルが転がってるしな。
ちらつくぐらいは気にスンナ
615デフォルトの名無しさん:2006/01/25(水) 17:34:40
>>614
処理は.NETの方が速いらしいよ。
起動速度も改善可能。

って、こんな事誰でも知ってるか・・・
616デフォルトの名無しさん:2006/01/25(水) 17:45:23
この場合の早い軽いってのは、開発環境のことじゃないの?
617デフォルトの名無しさん:2006/01/25(水) 18:04:15
>>615
      ,一-、
     / ̄ l |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ■■-っ < んなーこたーない
    ´∀`/    \__________
   __/|Y/\.
 Ё|__ | /  |
     | У..  |
618デフォルトの名無しさん:2006/01/25(水) 19:16:15
んなことあるよw
619デフォルトの名無しさん:2006/01/25(水) 19:42:57
この場合の早い軽いってのは、開発環境のことじゃないの?
620デフォルトの名無しさん:2006/01/25(水) 23:12:13
>>617
ホントにそう思ってんの?
ギャグだよね・・・
621602:2006/01/25(水) 23:24:38
引き続きタブブラウザ、結構出来てきた
メニューの項目をIEちっくに、一通り必要な機能を乗せたら
「編集 -> 切り取り」を実行したら選択してたコントロールとか消えた・・・orz
まったく、俺がいったい何をしたというんだ・・・(´・ω・`)
622デフォルトの名無しさん:2006/01/25(水) 23:30:50
この場合の早い軽いってのは、開発環境のことじゃないの?
623デフォルトの名無しさん:2006/01/25(水) 23:31:11
ここはお前の日記帳じゃねえんだ
チラシの裏にでも書いてろ
624デフォルトの名無しさん:2006/01/25(水) 23:31:24
>>621
だって切り取ったじゃん。
625デフォルトの名無しさん:2006/01/25(水) 23:33:40
なにこの糞開発日記。
626デフォルトの名無しさん:2006/01/25(水) 23:34:06
この場合の早い軽いってのは、実行のことじゃないの?
627デフォルトの名無しさん:2006/01/26(木) 15:30:53

文字列が、”山田町*-**-*”のようになっている場合
(*は任意の数字)

最初の*の位置を探すエレガントな方法を教えてください。
今は二重ループでやってるのですが・・・
628デフォルトの名無しさん:2006/01/26(木) 15:34:15
どう考えても二重ループにはならないのだが、どうやってるんだろう
629デフォルトの名無しさん:2006/01/26(木) 15:36:18
正規表現使うのが一番簡単だな
630デフォルトの名無しさん:2006/01/26(木) 15:57:45
>>627
普通に先頭から一文字づつ判断して数値かどうか見ればいいのでは。
631デフォルトの名無しさん:2006/01/26(木) 16:08:18
文字数に対するループと、0〜9までのループで、0〜9のどれかが一致したら数字と判断とかやってたりしてな。
マヌケすぎる方法だが、二重ループって言うとこれくらいしか思いつかん。
632デフォルトの名無しさん:2006/01/26(木) 16:08:43
>>630
「づつ」じゃなくて「ずつ」だよお兄ちゃん。あくまで本則が「ずつ」ってだけだが
633デフォルトの名無しさん:2006/01/26(木) 16:56:54
>>632
そっちが正しいのは知ってるけど、好みで「づつ」を使ってます。
他にも、「必ず」が正しいのは知ってるけど、好みで「必らず」を使ってます。
634デフォルトの名無しさん:2006/01/26(木) 16:57:50
>>627
一番重要な事は「正しく動作するコードを書く」事だと思うが。
で、正しく動作するコードは、美しく、エレガントだ。
635デフォルトの名無しさん:2006/01/26(木) 17:11:17
>>633
キモイ
636デフォルトの名無しさん:2006/01/26(木) 19:11:38
637デフォルトの名無しさん:2006/01/26(木) 19:55:47
おいおい一体どんな教育受けてんだよw
「ずつ」も「づつ」もどっちがより正しいなんてないよ。
どっちも正しい。常識でっせw
638デフォルトの名無しさん:2006/01/26(木) 19:59:11
ずつが本則ですが何か?
639デフォルトの名無しさん:2006/01/26(木) 20:14:16
相変わらずry
640デフォルトの名無しさん:2006/01/26(木) 20:38:16
VBでWSH(?)とか使う場合、全部 Dim objData As Object とかで宣言すればいいけど、
それだと、折角参照設定してもインテリセンス(だっけ?)が使えませんよね。
その為に、Dim objData As XXXX と正しく宣言しないと駄目な訳だけど、それがどんな型
なのかがよく分からない場合、どうやって調べてますか?(XXXXの部分)
641デフォルトの名無しさん:2006/01/26(木) 21:04:33
>>633
きもい
642デフォルトの名無しさん:2006/01/26(木) 21:06:30
>>640
オブジェクトブラウザ使えばいいだけでわ?
643デフォルトの名無しさん:2006/01/26(木) 21:41:32
>>633
言い訳にしては苦しいな・・・
644デフォルトの名無しさん:2006/01/26(木) 21:49:53
>>640
同意。
あとは、素でIDLとかODLを読む。
645デフォルトの名無しさん:2006/01/26(木) 23:19:34
>>640
手っ取り早いのはウォッチで変数の中身見ろ
オブジェクトの型・インタフェースも出てるよ
参照して無い型まで調べられるよ

Visual StudioのOLE Viewがあれば敵無しなんだけどね
646デフォルトの名無しさん:2006/01/27(金) 00:22:11
>>642
私の勘違いかもしれませんが、XXXXを調べる事は出来るけど、
逆は出来ない様な・・・

>>644
素で読む、ですか。成る程・・・

>>645
変数って、objData を、ですか?
objData をどう宣言するかが分からない訳で、As Object と宣言した
変数を見ても、Object 型のインターフェイスしか分からないのでは・・・
「参照して無い型まで調べられる」って部分かな。
Visual StudioのOLE View は調べてみます。
647デフォルトの名無しさん:2006/01/27(金) 00:37:55
>>640
>>変数って、objData を、ですか?
そう
ブレイクポイントで止めて変数の中見る
As Object で宣言しても中にが何の型なのか丁寧に出てきてくれるよ


Dim O As Object
Set O = CreateObject("Scripting.FileSystemObject")

なら

O はObject/FileSystemObject って出るよ
648デフォルトの名無しさん:2006/01/27(金) 01:21:16
そこで横から質問ですがVB良くしらないんでおしえてつかさい
クラスのインスタンスを作成するときの
Dim Objtest As class1
set Objtest = New class1


Dim Objtest As New class1

の宣言ってどうちがうんですか?下記の宣言をかいたとき
先輩にウンココードだと怒られて意味がわかないんですが

649デフォルトの名無しさん:2006/01/27(金) 01:43:56
>>648
理由も言わずにウンコというやつこそウンコ。
650デフォルトの名無しさん:2006/01/27(金) 02:00:44
>>648
イニシャライザの走るタイミングが違う

set Objtest = New class1
は Newした直後に走るけど

Dim Objtest As New class1
だと一番最初にメンバーにアクセスした時

Class_Initializeに処理が書いていなければどちらを使っても
さほど大差ない
651デフォルトの名無しさん:2006/01/27(金) 03:32:55
>>648
お仕事コードなら前者のほうがベター
いつクラスが作成されるかハッキリするので可読性がよいから
それと将来Initializeに、処理が追加されない保障はないから
と書いてみたものの、うちは後者を使うことが多いw
趣味のプログラムなら好きなほうにすれヴぁ

>>632
きもい
652デフォルトの名無しさん:2006/01/27(金) 04:03:48
参照設定したCOMのインスタンス作るときは
Dim fs As New FileSystemObject
とかやっちゃうけど、(VBからFSO使うことはまず無いが)
クラスの場合は、必ず
Set Objtest = New class1
でインスタンス作ってるな。
あと、COMは特殊な物を除いて
Set obj = Nothing
はやらないけど、クラスは不要になったら必ず明示的に破棄する。
このへんはVBSも共通だな。まあVBSでクラス使う奴は余り居ないだろうけど。
653デフォルトの名無しさん:2006/01/27(金) 04:52:18
すいません初歩的な質問なのですが

Picture1.picture = LoadPicture("C:\〜〜.jpg")
という風にフルパスで画像を表示してるんですが
当然別PCで実行すれば無いんでエラーですよね

画像をまとめて別ファイルで参照すればいいんでしょうか?
適当な透明フォーム作って全部貼り付けてコンパイルしています
明らかに無理矢理なんで対処方法教えてクダサイ
654デフォルトの名無しさん:2006/01/27(金) 06:19:39
>>653
画像を実行ファイルと一緒に配布して、
カレントディレクトリの画像を読み込ませればいいじゃん
数が多いなら、カレントにImageとかいの名前のフォルダ作ってそこにまとめてもいいし。

カレントならファイル名だけで参照できるし、
App.Pathでカレントのパスも取得できる。
655デフォルトの名無しさん:2006/01/27(金) 06:50:36
>>653
VBメニューのアドイン -> アドインマネージャ を選択
一覧から「VB6 リソースエディタ」を選択して「ロード/アンロード」「起動時にロード」にチェックを入れる
VBメニューのツール -> リソースエディタ を選択
リソースエディタの「ビットマップの追加」ボタンを押して表示したいビットマップを選択する
すると101って名前のツリーが出てくるが、それがその画像の番号(リソースID)
画像を使用するときには次のようにすればよい
Picture1.Picture = LoadResPicture(101, vbResBitmap)
656653:2006/01/27(金) 07:04:46
654,655さん有り難うございます

一緒に配布する方法も考えてたんですがApp.pathを知らなかったんで
わかりました、有り難うございます☆
リソースエディタの方法も試したんですが、BMPしか対応してないですね
jpgなんでめんどくさそうなので、一緒に配布したいと思います。
(スイマセン情報不足でしたね)

初心者の質問に答えていただき有り難うございました☆
657デフォルトの名無しさん:2006/01/27(金) 07:31:01
>>656
次のようなコードで画像読み込んでるならよく考えること
Picture1.Picture = LoadPicture(App.Path & "\画像形式言えよボケ.jpg")

ドライブのルートの場合 = C:\
フォルダ内の場合 = C:\FolderName
658656:2006/01/27(金) 07:54:06
Picture1.Picture = LoadPicture(App.Path & "\ごめんなさい.jpg")
↑まさしくこの通りやってます、問題があるんでしょうか?

考えても分からない・・・(´Д⊂
659デフォルトの名無しさん:2006/01/27(金) 08:18:31
>>658
> 考えても分からない・・・(´Д⊂

MsgBox App.Path & "\ごめんなさい.jpg"

を見てから考えろ。
660デフォルトの名無しさん:2006/01/27(金) 08:51:27
>>647
これは知らなかった・・・有難う御座います。

>>648
後者だと不具合が起きる可能性があるので、前者の方が良いです。
実際、後者を前者に変更しただけでちゃんと動いた例が沢山あった。

>>657
この仕様の違いは本当に面倒臭いですよね。
661656:2006/01/27(金) 09:08:42
Σ(・o・;) ハッ!

ルートで起動されると¥¥に・・・
ってことは判別コードも書かなくては

問題はこれですね、ありがとうございます☆
662デフォルトの名無しさん:2006/01/27(金) 10:28:28
>>661
キモイ
663デフォルトの名無しさん:2006/01/27(金) 10:37:20
>>661
モモイ
664デフォルトの名無しさん:2006/01/27(金) 11:11:22
>>661
エスケートゥー
665デフォルトの名無しさん:2006/01/27(金) 12:13:05
Windows2000Pro、VB6.0でマルチスレッドを行いたいのですが行き詰まっています。
USBの値を取り込んで制御を行いたいのですが、
パイプオープンまではできて、
値を取り込むところで固まってしまいます。
スレッド部でReadFileを行うのは不可能なのでしょうか?
誰かヒントでもいいので教えて下さい。
666デフォルトの名無しさん:2006/01/27(金) 13:13:16
>>665
VBはライブラリなどがマルチスレッドに対応してないので出来ません
CreateThread してみると動かないことも無いですけど
苦労して作っても、たまにバグる奇形児が生まれるだけですw
確実かつ安全なのは、別スレッドで行う処理を ActiveX EXE で作成して
CreateObject で作成して利用するようにすればよいです
667デフォルトの名無しさん:2006/01/27(金) 13:35:24
>>665
マルチスレッドが必須要件ならVS2005への移行をお薦めします。マジで。
668デフォルトの名無しさん:2006/01/27(金) 13:38:40
>>665
VB6でマルチスレッドは出来ないけど。
669デフォルトの名無しさん:2006/01/27(金) 15:00:40
CreateThreadでスレッドは作成できるけど、
そのスレッド上でまともな処理が出来ない。
それがVB6の仕様。
670デフォルトの名無しさん:2006/01/27(金) 15:34:48
671665:2006/01/27(金) 16:36:03
即レス有り難うございますm(_ _)m
やはりそうでしたか。
マルチスレッド化のサンプルはあったのですが、
説明にも不完全とありました。
同じサンプルに、GUI部はVBで実現して、
マルチスレッド化のDLLをC++で実現するというものがありましたが、
こちらもサンプルのままで使用すると一応動作するんです。
が、狙った動作が行えず、
若干改変を加えるとエラーがでてしまって…
MSVCRT.LIBの"main"が未解決ですといわれます。
672666:2006/01/27(金) 17:21:05
673デフォルトの名無しさん:2006/01/27(金) 17:30:06
>>671
そもそも何でマルチスレッドで処理する必要があるの?
Exe2つでプロセス間通信とかすりゃいいじゃん。
674デフォルトの名無しさん:2006/01/27(金) 17:34:15
>>671
やりたい事は「マルチスレッドを行いたい」ではなく、「USBの値を取り込んで制御を行いたい」だよね?
「USBの値を取り込んで制御」は、「マルチスレッド」以外では実現不可能なんでしょうか?
675デフォルトの名無しさん:2006/01/27(金) 17:39:17
そもそも何故VB6で作るかじゃないのか?
適材適所。
676665:2006/01/27(金) 18:11:36
URL貼っていただいた方有り難うございます。
自宅に帰ったら覗いてみます。

いろんな意見有り難うございます。
説明不足すぎですね。
まず、やりたいことをお伝えせねば。
現在卒業制作にて課題に取りかかっているんですが、
そのプログラムに行き詰まっています。
その制御ですが、PCからDIOボードを使って外部に出力してラジコン飛行船を制御するというものです。
最初の段階ではVBでコマンドボタンを配置して、
それに対応して出力するというプログラムでした。
これは比較的容易で、ボードについていたサンプルを軽く弄る程度で良かったんですが…続きます。
677デフォルトの名無しさん:2006/01/27(金) 18:17:30
>>675
続くのかよっ!
678665:2006/01/27(金) 18:26:30
それが成功するとそのプログラムを生かしたまま、
VBのフォーム上に無線LANカメラの画像を表示するということになり、
webブラウザーを設置してコマンドボタンでURLを開かせるようにしました。

問題はここからで、
それが成功するとUSBゲームパッドでも制御できるようにする、
と追加されたのです。
いろいろ調べて汎用デバイスドライバをインストールして、
マスクオープン→パイプオープン→ReadFileで各ボタンの値とり込み→値によってI/Oの振り分け
という制御にしたんですが、
わからないながらも頑張って調べてなんとか値は取り込めて、
飛行船も制御できたんですが…
画像がコマ送りになるんです。
USBデバイスから情報を送っている間は
処理が完了するのかカメラの画像動くんですが、
デバイスから入力が途絶えると止まってしまいます。
どうやらデバイスから入力が途絶えると待ちに入って他の処理ができなくなるらしいのです。
そこで調べて行くとマルチスレッド化をして、
待ちに入った場合は他の処理を優先させる…といったものでした。
何故VBなのかがお分かりになられたでしょうか。
長文本当にすいません。
あと2ヶ月余りで仕上げなくてはならず、
時間も知識もなくて途方にくれてます。
679デフォルトの名無しさん:2006/01/27(金) 18:33:29
>>678
素直にExe2つにした方がいいよ。
これからの二ヶ月を無駄にしたくないなら。
680デフォルトの名無しさん:2006/01/27(金) 19:41:16
んだね。
ActiveX-EXEで別プロセス作ったほうが良さげ。
俺だったら.NETかC++に行ってスレッド使うけど。

>MSVCRT.LIBの"main"が未解決ですといわれます。
プロジェクトがDLL作る用になってないだけだからすぐ直るよ。
ぐぐってみなされ。
681デフォルトの名無しさん:2006/01/27(金) 19:43:39
馬鹿じゃねえの
678の問題が実行ファイル2つにして解決するような類のことかってw
素直にCでスレッドで処理するdll書くのが正解。

>>678
汎用ドライバって柏野さんの奴でしょ?
ずいぶん前にインターフェイスに載ってたやつ。
CQのインターフェイス別冊のUSB本(同じようなのが何冊もあって困るが)
にヒントが書いてあるよ。
682デフォルトの名無しさん:2006/01/27(金) 19:54:54
COMに頼らなければスレッドを作れないVBを馬鹿にしやがってヽ(`Д´)ノ
683デフォルトの名無しさん:2006/01/27(金) 19:57:22
VB可愛いよVB
684デフォルトの名無しさん:2006/01/27(金) 23:11:01
ttp://planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=26900&lngWId=1
マルチスレッドしたいならとりあえずコレを試すべし
685デフォルトの名無しさん:2006/01/28(土) 01:21:23
>>待ちに入った場合は他の処理を優先させる…
優先?何のこと?マルチスレッドはスレッドを並行させることだよ
686デフォルトの名無しさん:2006/01/28(土) 01:25:05
>>685
スレッド使ったことあるの?
687デフォルトの名無しさん:2006/01/28(土) 07:05:36
デバイス入力待ちのところにDoEventsで解決したりして・・・んなわけないか.
688687:2006/01/28(土) 07:25:33
VB完結ならやっぱActiveXかな
689デフォルトの名無しさん:2006/01/28(土) 10:47:54
列挙型に名前付けるときの規則ってある?
690デフォルトの名無しさん:2006/01/28(土) 11:25:35
>>688
分かり易く。
691デフォルトの名無しさん:2006/01/28(土) 11:55:51
>>689
・名前をアスキーコードに直して先頭から足しこんでいった時に、素数で割り切れるように命名しなければならない
・日本語の読みをローマ字(大文字)にしたものを使わねばならない
・名前の長さは最低16文字を超えていなければならない
・名前の末尾に命名した日の西暦を4桁でつけなければならない
692デフォルトの名無しさん:2006/01/28(土) 12:03:50
>>691
お前のところは規則がそんなにも少ないのか
693デフォルトの名無しさん:2006/01/28(土) 12:11:09
>>689
とりあえず、無難にモンゴリアン記法に従っておけ
694デフォルトの名無しさん:2006/01/28(土) 12:11:54
初恋の女の子の名前は必ず入れとけよ
695デフォルトの名無しさん:2006/01/28(土) 13:56:22
>>694
ハンガリー記法では・・・
696デフォルトの名無しさん:2006/01/28(土) 14:01:31
>>694
ちょっとまてお前なんで俺のパスワードを知っている

>>650
Dim A as New Hoge
だと、AにNothingを入れてもまた参照すると勝手に作られるから、
イニシャライザの走るタイミングが違うだけ、ではないな。
また、このチェックのためにちょっぴり遅い、とも聞く。
まぁよく分からんうちは
Dim A as Hoge
set A = new Hoge
にするのが間違いないと思うよって言うか As New なんて使わないほうがいい
697デフォルトの名無しさん:2006/01/28(土) 14:07:38
じゃあ
Enum 香代子
にしておきます。
698デフォルトの名無しさん:2006/01/28(土) 14:41:48
最近全然VB触ってなかったのですが、久し振りに昔書いた自作ツールを
変更しようと思って色々弄ってた所で疑問が・・・
ShowInTaskbar = True で BorderStyle = vbSizable なのに、アイコンにした時
タスクバーに入らず、上に小さな長方形のアイコンになってしまいます。
後は何処を変更すれば良いんでしたっけ?
699デフォルトの名無しさん:2006/01/28(土) 15:02:52
>>698
初恋の女の子を変更汁
700デフォルトの名無しさん:2006/01/28(土) 15:07:12
>>695
モンゴリアン記法も知らないのか・・・
701デフォルトの名無しさん:2006/01/28(土) 15:24:13
>>698
もうその質問飽きた
702デフォルトの名無しさん:2006/01/28(土) 16:13:35
VC++習得後、VB6を勉強しているものなんですが、
VBでのクラス・インスタンスってすべてヒープ上に
できるんですか?組み込み系のクラス(Integerとか)も?
703デフォルトの名無しさん:2006/01/28(土) 16:28:27
引き続きタブブラウザ、ついにタブブラウザ爆誕( ´∀`)
ほとんどIEそのまんまな機能だけど、唯一劣る点が
お気に入りのメニュー上でのドラッグ操作が出来ない点・・・
これさえ何とかなれば、そこそこ使えるんだけどなぁ
今後はUserAgentの変更とかも手を出してみる予定〜
704デフォルトの名無しさん:2006/01/28(土) 16:34:00
はいはい、チラシの裏チラシの裏
705デフォルトの名無しさん:2006/01/28(土) 16:37:18
>>702
VC++習得したなら、VB6なんてやる必要ないじゃん。
C#.NETとかVB.NETの方が。
706デフォルトの名無しさん:2006/01/28(土) 16:44:02
>>705
そのレス意味あんの?
707702:2006/01/28(土) 17:22:59
>>705
業務上 VB6の必要性がありまして。
これ、あれですか、Newキーワード使えないやつがスタック上ってことですかね?
708デフォルトの名無しさん:2006/01/28(土) 17:36:09
>>707
Cだとスタックとヒープってはっきり分かれてるけど、
VBはどーなんだろうね。

VBだとよっぽど特殊なことをしない限り、
メモリイメージを把握する必要はないよ。
709702:2006/01/28(土) 17:43:09
>>708
うーん、ちょっとWIN32 APIを呼び出す必要がありまして。
よくあるバッファを渡すパターンなんですけど、ちょっとサイズ
大きめなんですよ。

なんでスタック上に取られるとスタック領域の不足が心配で。
逆に、明示的にヒープとか確保する方法があればそれでも
OKなんですけどねー。

710デフォルトの名無しさん:2006/01/28(土) 17:46:24
StringがBSTRであることなど考えれば・・・。
APIの呼び方講座がヘルプにあるんんだから熟読してから考えようよ。
711デフォルトの名無しさん:2006/01/28(土) 18:12:41
>>702
VBでも同じだよ
IntegrtとかLongの組み込み型はスタックで
インスタンスはヒープで その参照はスタック上に確保される
配列とかも全部同じ...かも

VBはメモリ・ポインタを完全に覆い隠しているから
ドコから確保してるのかは正直分からないな

どうしてもヒープに確保したいならAPIで明示的に確保してやれば

>>703
出来たらオープンソースにして皆で改造しようや
712デフォルトの名無しさん:2006/01/28(土) 18:15:22
>>707
スタックがどうの、ヒープがどうの、メモリがどうの、とか、
一切考える必要がないのがVBクオリティ。

>>709
APIに渡すバッファは、普通APIで確保するのでは。
713702:2006/01/28(土) 18:15:36
>>710
えーと、すいません、よくわかってなくて。一応読んだつもりなんですが
WIN32 APIの文字列データの引渡しについては

・StringはVBで内部的にBSTR型として表現されること
・String()関数を使って長さを設定した文字列か、固定長文字列宣言で得られたインスタンスをバッファとして使う

あたりで理解したんですが、VBにおけるString=BSTR型のインスタンスが
スタック上で実現されているか、ヒープ上で実現されているかはわからない
ような気がするんですが...。

何か読み方か、考え足りてないのかな?
714デフォルトの名無しさん:2006/01/28(土) 18:20:58
>>703
ソース公開しないなら、ここで報告などせずに
黙ってひっそりとやってろ。
ここで報告したいならソース出せ。


以上。
715デフォルトの名無しさん:2006/01/28(土) 18:23:48
普通は
dim s as string

s = space(256)

ってやるよ。
716デフォルトの名無しさん:2006/01/28(土) 18:26:54
>>713
VC++的考えは全部捨てろよ。
717デフォルトの名無しさん:2006/01/28(土) 18:28:13
as string * n

string(n,vbnullchar)
が普通だと思ってた漏れは炒ってよしですか?
718デフォルトの名無しさん:2006/01/28(土) 18:38:12
>>711
配列はスタックかヒープかは分からんとオモタ。
Cなら確実にスタックオーバーフローになるようなサイズでもVBでは確保できるんで、
内部で調整してんじゃないかな。
(ただ関数抜けたら開放されるはずだから、クラス的なオブジェクトとは挙動が違うけど)

>>713
>あたりで理解したんですが、VBにおけるString=BSTR型のインスタンスが
>スタック上で実現されているか、ヒープ上で実現されているかはわからない
だね。
型から確保している場所なんて分かんない。
719デフォルトの名無しさん:2006/01/28(土) 18:44:14
そもそもスタックとかヒープってのはc言語用の仕組みなわけで
720デフォルトの名無しさん:2006/01/28(土) 18:47:48
>>719
VBでもあるよ。
終了できない再帰関数作って実行してみなはれ。
721デフォルトの名無しさん:2006/01/28(土) 19:01:30
>>719
実行ファイルは全てメモリはスタック・ヒープで管理されてるよ
最近はVB・JAVA・C#とかのメモリを意識しないでプログラミングできる言語が増えてきてる
722デフォルトの名無しさん:2006/01/28(土) 19:02:54
>>719
VBにもスタックもヒープもあるだろ
PEファイルの中身覗いてみろよ

>>702
つ GlobalAlloc
723デフォルトの名無しさん:2006/01/28(土) 19:03:11
VC++のスキルがあるのにVBじゃないと駄目な業務って一体・・・
724デフォルトの名無しさん:2006/01/28(土) 19:05:07
>>723
歴史のあるアプリのおもりってのは胃がいたくなるぞ。
一度やってみろ(・∀・)
725デフォルトの名無しさん:2006/01/28(土) 19:08:33
>>723
下請けや出向なら、スキル云々関係ないじゃん
客が指定した環境で作るしかないだろ
俺も以前、勤めてた会社でVC++のプロジェクトのあと初VBだったぞ
726702:2006/01/28(土) 19:25:56
>>724
そのとおりです。こちらもメンテナンスです(涙。

>>711,722
やっぱりAPI呼び出しで明示的に確保しかないんですかね。
アイディアありがとうございます。

>>717
大丈夫です。MSDN Libにはその2つの方法が基本として
書いてありました。そのどちらでもいいそうです。

727デフォルトの名無しさん:2006/01/28(土) 19:35:38
まぁ、VC++に較べればVBは遥かに簡単だし、
生CとかVC++でWindowsアプリを書いた事があるなら、
VBなんて楽勝でしょう。
728702:2006/01/28(土) 19:45:28
>>727
いや、VBはVBで奥深いです。
がんばって勉強します。

皆さまありがとうございまいた。
729デフォルトの名無しさん:2006/01/28(土) 20:03:27
>>727
ちょっとしたツール作るだけなら楽チンなんだけど
MSGridをもうちょっとExcel風に便利にしてみようだとか
用意されたお手盛り品から抜け出そうとしたとたんデスマだよなw
まあ、そんな開発に当たることが無ければいいんだけど・・・

あと、VBはVCに比べて罠が多いよな
全部あげたらキリがないけど、暗黙のオブジェクトとか、デフォルトプロパティとか
型宣言忘れてVariantだとか、AddressOfが引数構文でしか使えないとか・・・
730デフォルトの名無しさん:2006/01/28(土) 20:07:59
>>729
そんな案件をVBでやる事自体、根本的に間違ってるからね。適材適所。
そのVBの罠も、生C/C++から入った人は引っ掛からない。
731デフォルトの名無しさん:2006/01/28(土) 20:14:44
>>730
>生C/C++から入った人は引っ掛からない。
そんなアホな話があるかw
何から始めた人だって、プロパティ書き忘れることだってあるし
型宣言だって書き忘れないとは限らない
732デフォルトの名無しさん:2006/01/28(土) 20:39:10
>>731
レベル低いな。
733デフォルトの名無しさん:2006/01/28(土) 20:45:18
>>732
いや、お前のが低いだろ
ミスを犯すことを前提にコーディングするもんだ
俺は間違えない!なんて考えで書いてるようじゃ
どれだけ悲惨なコードか目に浮かぶよ
734デフォルトの名無しさん:2006/01/28(土) 20:48:03
レベルって何よ・・・
RPGですか
735デフォルトの名無しさん:2006/01/29(日) 02:24:43
>>732
基本的には >>733 の言うようにミスを前提でコーディングするべきだからな。
ミスする奴が悪いなんて言っているうちは間違っている。
ミスできる言語仕様が悪いに決まっているからだ。

でもさっき挙げられているのはVBらしさの重要な部分でもある。
誰でも使えて、ちょっと作って、ぱっと動かす。
これがもともとのVBの立場であるので、「高度なこと」をやろうと思えば
大変なのはまぁ仕方ナス
.NETで暗黙のFormインスタンスが無くなってよかったと思っていたが、2005で
戻っちゃったしなぁ
736デフォルトの名無しさん:2006/01/29(日) 03:48:17
VB.NETは使ってないから知らんけど、多くの人がそれを望んでいたのかもしれないね。
最初のやつはC#とVB.NETを比べても、あえてVB選ぶような価値ってのは見えなかったわけだし、
言語仕様の曖昧さというのを受け入れてでもVBの特色を出すというのは仕方ないのかも。
VB6とは違ってベースは他のと同じの使ってるわけだし、他の言語の為に作成した開発支援技術の
流用も期待できるから、孤立しないで進歩できるようになる良い兆候だと俺は思ってる。
737デフォルトの名無しさん:2006/01/29(日) 04:19:47
つOption Explicit
738デフォルトの名無しさん:2006/01/29(日) 10:46:51
>>737
それ必須だよね。
739デフォルトの名無しさん:2006/01/29(日) 11:04:24
Option Explicit はオプションで自動追加されるからいいよ
むしろ入れておきたいのはこっち
DefByte A-Z 'Byte
DefDate A-Z 'Date
DefObj A-Z 'Object
このへんをコンパイル引数で切り替えてチェックする
740648:2006/01/29(日) 12:21:18
わかりやすい説明ありがとうございました。ありがとうございます。
納得しまして解決しました。
要は見やすいコードは前者というわけですね。
先輩がウンコと言った箇所は実は別の意味合いだったらしく、私が
判定文の間の条件コード内にDim test As New Class1 とNothing
をしていた事に文句いいたかったそうです。
おさわがせいましました
741デフォルトの名無しさん:2006/01/29(日) 12:59:19
>>739
お、頭良いなそれ採用
742デフォルトの名無しさん:2006/01/30(月) 10:40:32
VBからAccessのファイルを弄ろうとしていてわからないことがあるんですが、このスレで質問して良いですか?
743デフォルトの名無しさん:2006/01/30(月) 10:45:49
>>742
VBから弄るんだから勿論OKなんじゃない。
744742:2006/01/30(月) 10:52:15
では質問させていただきます。

Set oAccess = CreateObject("Access.Application")
Call oAccess.OpenAccessProject(strPath, True)

で、セキュリティ警告ダイアログがAccessから表示されていまいます。
開くときにAccessファイルを[Shift]+[開く]の形式で
Accessファイルの起動時処理を走らせずに開きたいのですが
どのようにすればよいのでしょうか?
745デフォルトの名無しさん:2006/01/30(月) 11:17:48
つうか、そういう開き方しないで、普通に開けばいいんじゃないんか?
746デフォルトの名無しさん:2006/01/30(月) 11:22:57
>>744
OpenAccessProject に第二引数はない様な・・・
OpenCurrentDatabase じゃなくて?
で、
Dim oAccess As Access.Application
Set oAccess = CreateObject("Access.Application")
oAccess.Visible = True
oAccess.OpenCurrentDatabase "Test.Mdb", True
oAccess.CloseCurrentDatabase
oAccess.Quit acQuitSaveNone
Set oAccess = Nothing

特にエラーは出ないけど・・・
単にデータベースパスワードの事か?
それなら
ttp://support.microsoft.com/default.aspx?scid=kb;ja;317113#XSLTH3194121121120121120120
この辺か。
747742:2006/01/30(月) 11:42:26
補足です。
Accessは2003で、開くファイルはadpなんです。

------------------------------------------------------------------
セキュリティ警告
"C:\hoge.adp" を開いています
このファイルに、意図的にお使いのコンピュータに損害を与えるコードが含まれる場合、
ファイルは安全でない可能性があります。
[キャンセル] [開く] [詳細]
------------------------------------------------------------------

というダイアログが出てしまいます。


何をしたいかというと、vbからadpの接続プロパティを更新したいのです。
adpの使用者に接続プロパティの変更を自分でおこなってもらうのではなく、
vbから自動で接続プロパティのサーバーやデータベースを更新したい、
という要望なんです。
このvbアプリを実行することで、使用者は難しい設定をしなくても
自動で代替サーバーに切り替えてadpを使用できるようにしたいのです。

接続プロパティの更新はできました。


>746
どこかのサイトで調べてOpenAccessProjectという書き方が載っていましたので
そのようにしていました。
第二引数は、排他モードということです。

OpenCurrentDatabaseを使用して開いても同様の結果となりましたorz
748デフォルトの名無しさん:2006/01/30(月) 11:45:19
>>747
それって、アンチウィルスソフトが出してるのではなく?
749デフォルトの名無しさん:2006/01/30(月) 11:48:29
>>747
そのメッセージでググッたら、幾らでも解決方法が出てきた。
750デフォルトの名無しさん:2006/01/30(月) 11:53:10
751742:2006/01/30(月) 13:11:38
>748
Accessからのメッセージです。

>749
でも、欲しい回答がなかなかみつからなかったのでここにきました。

>750
Jet4.0のSP8パッチはあててありますが、現象が変わりませんorz


>747のダイアログで[Shift]キーを押しながら[開く]を選択しないと
起動時の処理が走ってしまうので困っているんです。。。
752デフォルトの名無しさん:2006/01/30(月) 13:35:54
セキュリティを下げろって書いてあるが。
753742:2006/01/30(月) 13:54:51
セキュリティを下げてもadpファイル内の起動時のコードは実行されてしまいます。

起動時のコードを走らせないような起動パラメータか何かないんでしょうか??
754742:2006/01/30(月) 14:07:14
ttp://support.microsoft.com/search/default.aspx?query=AllowBypassKey&catalog=LCID%3D1041&spid=1265&qryWt=&mode=r&cus=False

ここには [スタートアップオプションを無視する] ことを無効(つまり、[shift]+[開く]を無効)にする方法が
記述されていましたが、要はこれと逆の事をvbで実装したいのです。
しかし、その事の資料がなかなかみつかりませんでした。

実際問題として無理なんでしょうか。。。?
755デフォルトの名無しさん:2006/01/30(月) 16:09:33
ExcelVBAの質問なのですが,ビジネスsoftのExcel板では,Excelに関係ないVBに関する質問は
VBスレで,ということなので,こちらで質問させてください。

デバッグのため,オブジェクトのプロパティの一覧を書き出したいのですが,方法がわかりません。
任意のオブジェクトのプロパティ名の一覧を配列などの形式で取得する方法はありますでしょうか。
(具体的には,WebBrowser.Document以下の,任意のNodeのプロパティ一覧を取得したいのですが)
756デフォルトの名無しさん:2006/01/30(月) 16:13:53
>>755
つ オブジェクトブラウザ
757755:2006/01/30(月) 16:31:42
>>756  レスありがとうございます。
ちょっと説明が不十分だったかと思いますので,補足させてください。

オブジェクトブラウザでは,WebBrowser.Document以下のオブジェクトのプロパティを見ることは
できないようです。(おそらく内部的にはMSHTMLあたりと同じなのかと思いますが,知識不足の
ためよくわかりません。)
オブジェクトブラウザでなくても,ウォッチウィンドウなら確認することができますが,どちらにせよ
ExcelとVBEを頻繁に行ったり来たりしなくてはならず,効率的でないようです。

そこで,
1) フォーム上にWebBrowserコントロールを配置し,
2) WebBrowser.Documentの内容をTreeViewコントロールに表示し,
3) TreeViewコントロールの要素を選択すると,そのNodeのプロパティがListViewに表示される
というデバッグ用のフォームを作成しているのですが,3)の処理を行うために,
選択したNodeのプロパティ名の一覧を配列などで取得する方法を探しているという事情です。
何かいい方法か,代用策はありませんでしょうか。
758デフォルトの名無しさん:2006/01/30(月) 16:56:54
つまりメンバをコードで取得したいってことか。

とりあえずこの辺を参考に
ttp://support.microsoft.com/default.aspx?scid=kb%3Bja%3B172988
759デフォルトの名無しさん:2006/01/30(月) 17:04:54
>>758
おおっ、ありがとうございます
さっそく調べてみます
760755:2006/01/30(月) 17:24:25
残念ながら,私のシステムにはTlbinf32.dll が入っていないようです・・・
VBをインストールしないと(VBAだけでは)このファイルはインストールされないようですね

しかたがないので,機械的にプロパティのリストを取得するのは諦めて
何か他の方法を考えようと思います。
レスしてくださった方々,ありがとうございました。
761デフォルトの名無しさん:2006/01/30(月) 20:08:30
企業のイベントで使えるような、バーチャル福引をVBで開発しようと思います。
で、変数(くじの全体数や当たりの数)を設定・記録できるようにして、
くるくると多角形を回して、玉が出てくるなどといった形までは出来たのだが…

いかんせん、見た目が貧相なのだ。なんかこう、見た目がカッコ良くできないだろうか。
パチスロのリールみたいにした方が良かったかな…
762デフォルトの名無しさん:2006/01/30(月) 20:27:35
本物の福引き回せばいいんでね?
763デフォルトの名無しさん:2006/01/30(月) 20:30:16
>>760
ランタイムに含まれてるみたい。
ランタイムは配布可能だから配布すればいいじゃん。
764デフォルトの名無しさん:2006/01/30(月) 21:14:41
ランタイム配布可能なのはProfessional以上持ってる人だけじゃなかったか?
まあベクターから拾ってくれって言えばいいんだろうけどさ。
765デフォルトの名無しさん:2006/01/30(月) 21:21:21
>>764
そう。VB6SP6を。
766755:2006/01/30(月) 21:28:32
>>763
情報ありがとうございます。
Vectorで「VB ランタイム」で検索してヒットした一番新しいもの(VB6.0SP6第3版とかなんとか)を
インストールして、Windowsフォルダを対象にTlbinf32.dllを検索してみましたが、
どうもこのパッケージではインストールされなかったようです。
どのパッケージにはいっているか、見当はつきますでしょうか。
767デフォルトの名無しさん:2006/01/30(月) 21:29:04
↑訂正 >>763-765 失礼しました
768デフォルトの名無しさん:2006/01/30(月) 21:42:54
>>766
VB5SP3ランタイム
769デフォルトの名無しさん:2006/01/30(月) 23:26:42 BE:308415593-
OpenURLにて取得するデータの進捗率を表示する事は可能でしょうか?
770デフォルトの名無しさん:2006/01/30(月) 23:49:07
>>755
Node(HTMLタグ)の属性を全列挙したいんだよな
IHTMLDOMNode.Attributes か HTMLElement.Attributesではイカンのか?
間違っていたら無視してくれ
771デフォルトの名無しさん:2006/01/31(火) 00:01:00
>>769
無理。
772デフォルトの名無しさん:2006/01/31(火) 00:48:21
>>768
情報ありがとうございます。
結局、目的のDLLは見つかりませんでした。

>>770
情報ありがとうございます。
取り出したいのは、タグの属性ではなく、オブジェクトのプロパティです。
ですがそれも有用な情報ですので、参考にさせていただきます。

質問の当初の目的(プロパティの取得)は実現できませんでしたが、
調べる過程で、当該のオブジェクト群のおおよその仕様は理解できました。
また、いくつかのプロパティと>>770さんの指摘くださった属性の組み合わせで
かなりの程度効率的なデバッグツールを作ることができましたので
この質問は一応終了とさせていただきます。
情報をくださった皆様、ありがとうございました。
773デフォルトの名無しさん:2006/01/31(火) 12:20:20
vbComCtl使うと、クソなコモンコントロールから開放されるぜ
774デフォルトの名無しさん:2006/01/31(火) 13:47:00
すみません。教えてください。
以前も書かせていただいたのですけれど、MSCDで過去にあった70-175
と70-176。この勉強をしろと言われているのですが、どちらを先に進めた
ほうがよろしいですか?お願いします。
775デフォルトの名無しさん:2006/01/31(火) 13:59:05
>>774
「MSCDで過去にあった70-175と70-176」ってのが何の事が全然分からん。
776デフォルトの名無しさん:2006/01/31(火) 14:02:22
説明するのは面倒なので分からない人は答えなくていいです。
知っている人だけお願いします<(_ _)>
777デフォルトの名無しさん:2006/01/31(火) 14:09:18
>>776
ここはお前の日記帳じゃねぇんだ
チラシの裏にでも書いてろ、な?
778デフォルトの名無しさん:2006/01/31(火) 14:09:25
>>776
以前も書いたのに誰も回答してないな。
つまりそういう事だ。
お前の様な莫迦には理解出来ないだろうがね。
779デフォルトの名無しさん:2006/01/31(火) 14:18:49
ワロス
780デフォルトの名無しさん:2006/01/31(火) 14:22:36
>>607ですでにいたのか。気付かなかった。
781デフォルトの名無しさん:2006/01/31(火) 16:19:40
>>776
こいつって定期的に沸いてくる基地外でしょ?かまって君だから以後放置。
782デフォルトの名無しさん:2006/01/31(火) 17:17:43
GetChunkでバイナリデータを取得したいのですが、思うようにいきません(データをファイルにすると1KBで生成されます)。
下記のコードはMSDNから引用し、改変したものです、ご教授お願いいたします。

Dim vtData As Variant
Dim bData As Byte
Dim bDone As Boolean: bDone = False

vtData = Inet1.GetChunk(1024, icByteArray)
DoEvents
Do While Not bDone
DoEvents
bData = bData & vtData
DoEvents
vtData = Inet1.GetChunk(1024, icByteArray)
If Len(vtData) = 0 Then
bDone = True
End If
Loop
783デフォルトの名無しさん:2006/01/31(火) 18:00:40
>>774
70-176 から先に勉強しろ
784デフォルトの名無しさん:2006/01/31(火) 18:58:56
>>782
実行してないけど・・・
Byte データを & なんかで繋げていいの?
後、icByteArray なんだからちゃんとバイト配列で受けた方が良いのでは。
785782:2006/01/31(火) 19:27:58
>>784
レスありがとうございます
はい、そもそもGetChunkでバイナリデータを扱う方法がわかりませんので、自分なりに頑張ってみたところです
元のコードは文字列型を取得するコードだったようで、それを単に書き換えただけでございます
786デフォルトの名無しさん:2006/01/31(火) 19:40:15
>>785
MSDNのサンプルに

Private Sub Inet1_StateChanged(ByVal State As Integer)
Dim vtData As Variant ' Data 変数

Select Case State
' ... ほかの条件のコードは省略されています。
Case icResponseCompleted ' 12
' 出力先のファイルを開きます。
Dim intFile As Integer
intFile = FreeFile
Open "C:\Tmp\A.Html" For Binary Access Write As #intFile
' 最初のデータを読み取ります。注意: バイナリ ファイルを読み取る
' 場合はバイト (Byte) 配列 (icByteArray) を指定します。
vtData = Inet1.GetChunk(1024, icString)

Do While LenB(vtData) > 0
DoEvents

Put #intFile, , vtData
' 次のデータを読み取ります。
vtData = Inet1.GetChunk(1024, icString)
Loop

Put #intFile, , vtData

Close #intFile
End Select
End Sub

こんなのがあったけど。
787デフォルトの名無しさん:2006/01/31(火) 19:49:54
一時ファイルを使いたくないなら、Redim preserve + CopyMemoryでバイト配列同士を連結しなきゃならないね。
788782:2006/01/31(火) 21:12:16
解決しました、どうもありがとうございました。
789デフォルトの名無しさん:2006/01/31(火) 21:17:11
どう解決したんだよ
790デフォルトの名無しさん:2006/01/31(火) 21:41:35
>>788
正常な人間なら、何が間違っててどう変更して解決したかを書き込む訳だが。
791788:2006/01/31(火) 21:49:05
俺異常だから別にいい
792デフォルトの名無しさん:2006/01/31(火) 22:08:56
算数のお話なんですけど、10 ÷ (5−2) っていう式を再現したいんですけど、どうやって記述したらいいですか?
res=10/(5-2)ってやったらダメみたいなんですけども¥
793デフォルトの名無しさん:2006/01/31(火) 22:13:58
あれ?いけました(汗爆爆爆爆汗超笑
794デフォルトの名無しさん:2006/01/31(火) 22:36:24
792 名前:デフォルトの名無しさん :2006/01/31(火) 22:08:56
算数のお話なんですけど、10 ÷ (5−2) っていう式を再現したいんですけど、どうやって記述したらいいですか?
res=10/(5-2)ってやったらダメみたいなんですけども¥

793 名前:デフォルトの名無しさん :2006/01/31(火) 22:13:58
あれ?いけました(汗爆爆爆爆汗超笑
795デフォルトの名無しさん:2006/01/31(火) 23:18:34
(残響音含む)
796デフォルトの名無しさん:2006/01/31(火) 23:34:33
>>794
IE乙
797デフォルトの名無しさん:2006/02/01(水) 00:08:23
引き続きタブブラウザ、ここにきて行き詰まった・・・(; ´Д`)
UserAgentの動的変更、JavaScript・サウンド・画像のON/OFF切り替え
IEのお気に入りメニューの並び順も再現(動的な並べ替えは無理だけど)
ベーシック認証ダイアログや、JavaScriptのアラートもカスタマイズできるようになった
しかし、ここで問題発生!(><;)
window.close されたときに opener が True でないと WindowClosing イベントの後に
「〜閉じられようとしています。閉じてよか?」って出るんだけど、
ここで、はい/いいえ の選択結果を取れない・・・orz
独自ダイアログにすれば可能だけど、オリジナルのままで結果を知りたいところだ
しかし、相変わらず Coolbar 使うと、なんか画面がちらつくのが許せん・・・
798デフォルトの名無しさん:2006/02/01(水) 00:09:51
>>797
リファラを送る方法をオシエテ下さい
799デフォルトの名無しさん:2006/02/01(水) 00:11:19
800デフォルトの名無しさん:2006/02/01(水) 00:12:57
>>794
どう駄目だったのか知りたい・・・
801775:2006/02/01(水) 00:56:20
>>783 サンそのたの方ありがとうございました。
 がんばって、やってみます。
802797:2006/02/01(水) 01:20:28
>>798
え?BeforeNavigate2イベントでサクッと変更できまつよ
803デフォルトの名無しさん:2006/02/01(水) 01:34:44
>>802
WebBrowser コントロール使う以外で方法ありませんか
804797:2006/02/01(水) 01:44:27
>>803
むー、WebBrowserを使わないでって・・・意味が分からないよ
805デフォルトの名無しさん:2006/02/01(水) 03:07:09
WebBrowserコントロール使ってるのかよ('A`)
期待度一気にガタ落ちだなw
806797:2006/02/01(水) 03:25:33
>>805
IEコンポ使わなかったらレンダリングやJavaScriptまでIE互換で自前実装するの?
VBで実装したら実用速度にならないし、IEと互換性無いと使い物にならないじゃん
2chブラウザみたいな特殊な環境限定なら、それでもいいだろうけどね
807デフォルトの名無しさん:2006/02/01(水) 03:26:43
まあ、初心者はそう思うだろうな。
808デフォルトの名無しさん:2006/02/01(水) 03:26:47
急に逆ギレ気味に偉そうになっててワラ
809デフォルトの名無しさん:2006/02/01(水) 03:35:54
>>807
こんな夜中に即レスくれるのはうれしいんだけどさ
実際そうでないんなら、VBの独自エンジンブラウザ晒してみてよぅ
810デフォルトの名無しさん:2006/02/01(水) 03:36:53
VBの独自エンジンブラウザって名前だけでうぇ〜ってなる
811797:2006/02/01(水) 03:38:15
>>810
普通はそうだよねw
812デフォルトの名無しさん:2006/02/01(水) 03:40:25
>>811
m9(^Д^)プギャー
813デフォルトの名無しさん:2006/02/01(水) 03:41:39
晒すことで何か晒した奴にメリットってあるの?
797も役にも立たない日記的なことばかりで何も晒してないし。
814デフォルトの名無しさん:2006/02/01(水) 03:43:20
>>805
m9(^Д^)うぇ〜
815797:2006/02/01(水) 03:44:17
>>813
恥ずかしかったらバイナリでいいよ〜
816813:2006/02/01(水) 03:46:16
いや、俺は何も作ってないよ。
ただ、ソースにすろバイナリにしろ
晒すことでそいつにメリットがあるのかなぁと。
817デフォルトの名無しさん:2006/02/01(水) 03:46:55
て言うか質問スレを私物化すんなよ糞が
818デフォルトの名無しさん:2006/02/01(水) 03:49:22
>>809
嬉しいのかよ?

内心では悔しくて悔しくて堪ら(ry
819デフォルトの名無しさん:2006/02/01(水) 03:50:14
議論を戻すよ。

803 名前:デフォルトの名無しさん[sage] 投稿日:2006/02/01(水) 01:34:44
>>802
WebBrowser コントロール使う以外で方法ありませんか
820797:2006/02/01(水) 03:50:15
>>817
進行遅いスレだし、質問も1日に1回くらいなんだからいいじゃ〜ん
821デフォルトの名無しさん:2006/02/01(水) 03:50:24
メリットなんてありませんよ
踊らされて晒した奴の負け
822797:2006/02/01(水) 03:52:34
>>821
大丈夫だよ、バイナリならソース見られるわけでも無いしさ
IEコンポなしでも、VBでブラウザ作れるんだってとこを証明できるじゃん?
823デフォルトの名無しさん:2006/02/01(水) 03:53:19
ぶっちゃけ優れたフリーのタブブラウザって腐るほどあるのに
VB6.0でIEコンポ利用して作ったタブブラウザって誰が使うんだろう

そして何で>>797>>602以降このスレで一々
「どうしようか、あれができた、これができた」って報告してるんだろう
質問スレなんだから質問と回答のお礼意外は書かなくて良し、って言うか書くな
824デフォルトの名無しさん:2006/02/01(水) 03:53:53
> いいじゃ〜ん
それはお前が決めていい事じゃない。

これがまかり通るならこのスレ(10〜20レス/日 程度)より進行の遅いスレでは
どんなスレ違いな話題でも個人的な日記でも嵐でさえも正当化されてしまう。
825デフォルトの名無しさん:2006/02/01(水) 03:57:24
結局、ブラウザの彼が踊っただけ?
826797:2006/02/01(水) 03:57:46
>>823-824
まぁまぁ、そう冷たいこと言わないで
こんな深夜にも活発にレスしあえるんだからお互い楽しいじゃん?
んじゃ、今日は遅いからもう寝るよっ(`・ω・´)
827デフォルトの名無しさん:2006/02/01(水) 03:59:14
つかマジでチラシの裏はやめろ

こういうスレは、質問者意外にも有益な情報元になるんだよ
駄レスが増えれば増えるほど価値が落ちる
私物化してチラシの裏なんてもってのほか
828797:2006/02/01(水) 04:06:41
寝るとか言いつつまだ居たりしてw
また少し出来たら報告するから期待してる人待っててね、んじゃ(`・ω・´)ノシ
829デフォルトの名無しさん:2006/02/01(水) 05:30:40
期待してる人居ないから、報告しなくてよろしい。

仮に完成しても、バイナリは誰にも喜ばれないだろうな。
ソース出せば初心者には喜ばれるかもしれないけど、
スキルの低い奴ってソース出すの躊躇うしw
830デフォルトの名無しさん:2006/02/01(水) 07:20:30
>>828
死ね
831デフォルトの名無しさん:2006/02/01(水) 07:48:04
>>822
前の会社に、Exeだけあれば、その元になったソースのバグ迄分かる人が居た。
機械語が完璧に分かるその人にとって、バイナリもソースと同じだった。
832デフォルトの名無しさん:2006/02/01(水) 07:58:04
>>829
VBにスキルも糞も
833デフォルトの名無しさん:2006/02/01(水) 09:02:13
>>828
死ね
834デフォルトの名無しさん:2006/02/01(水) 09:04:19
>>828
寧ろイ`
835デフォルトの名無しさん:2006/02/01(水) 09:05:05
>>828
やっぱ氏ね
836デフォルトの名無しさん:2006/02/01(水) 10:18:03
WebBrowser使わないでってのはMSHTMLかMSXML使ってってことじゃないの?
俺もその辺勉強したいんだけど、なぜかどこで聞いてもスルーされるんだよね
837デフォルトの名無しさん:2006/02/01(水) 10:35:10
プロシージャ内の処理を別プロセスで行わせるには、
その処理部分をコンパイルしてCreateProcessで呼び出すしかないのでしょうか?
838デフォルトの名無しさん:2006/02/01(水) 10:42:19
>>1
ガッ
839デフォルトの名無しさん:2006/02/01(水) 11:09:51
>>837
ExeにしたんならShellでいいんじゃない?
>>838
GJ!
840デフォルトの名無しさん:2006/02/01(水) 11:21:09
831 名前:デフォルトの名無しさん [sage] 投稿日:2006/02/01(水) 07:48:04 New!!
>>822
前の会社に、Exeだけあれば、その元になったソースのバグ迄分かる人が居た。
機械語が完璧に分かるその人にとって、バイナリもソースと同じだった。

さすがVBスレw アホが普通に居るなw
841デフォルトの名無しさん:2006/02/01(水) 11:32:13
>>828
死ね
842デフォルトの名無しさん:2006/02/01(水) 11:47:48
>>828
だがイ`
843デフォルトの名無しさん:2006/02/01(水) 12:00:12
>>837
ActiveX EXEにする手もあるぞ
844デフォルトの名無しさん:2006/02/01(水) 12:02:09
>>842-843
6時間以上前の書き込みにいちいちレスつけて荒らすなクズ
845デフォルトの名無しさん:2006/02/01(水) 12:16:18
>>839
EXEにした時点で別プロセスになるんですね。
コンパイルせずに内部関数を別プロセスで...なんて出来ませんよね?
846デフォルトの名無しさん:2006/02/01(水) 12:22:09
>>845
だから ActiveX EXE にしろって言ってんだろがw
VBからExcelを操作したことないのか?
847デフォルトの名無しさん:2006/02/01(水) 13:07:54
>>844
そもそも何がやりたいの?
848デフォルトの名無しさん:2006/02/01(水) 13:30:45
>>846
ActiveX EXEですか。調べてみます。ありがとうございました。
849デフォルトの名無しさん:2006/02/01(水) 13:38:14
ActiveX EXE なんて、最初から全く使い物にならない技術だったな。
850デフォルトの名無しさん:2006/02/01(水) 14:25:00
>>848
マルチスレッドのようなことをしたいのならActiveX.EXEは向いてない。
プロセスは別だがActiveX.EXEのメソッドは同期的にしか呼び出されないので
実質シングルスレッドと同じ。
851デフォルトの名無しさん:2006/02/01(水) 14:39:42
>>850
メソッド呼ばれた側はタイマー起動するなり、自分にメッセージ投げるなりして制御返せばいいじゃん
852デフォルトの名無しさん:2006/02/01(水) 15:30:04
>>851
非表示のフォームにタイマー貼り付けてという手がありましたね。
昔のことなんですっかり忘れてました。
ただ時間のかかる処理だといろいろ不都合も多かった記憶があり、
その手のActiveX.はC++で作って中でスレッド生成してました。
853デフォルトの名無しさん:2006/02/01(水) 16:27:51
854デフォルトの名無しさん:2006/02/01(水) 17:26:07
VBだけで非同期処理をする

http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/0008/com/
855デフォルトの名無しさん:2006/02/01(水) 17:50:28
>>854
初音氏のやつは、記事も書籍も良いのが揃ってるね。
856デフォルトの名無しさん:2006/02/01(水) 18:29:36
>>836
あのーInetコントロールでなんとか操作できませんかね、POSTとか
857デフォルトの名無しさん:2006/02/01(水) 19:34:15
VB6を起動するとプロジェクトウインドウwやプロパティウインドウが表示されますが、
これと同じようなウインドウを自作プログラムに使うことはできるのでしょうか
858デフォルトの名無しさん:2006/02/01(水) 19:35:42
プロジェクトウインドウw
859デフォルトの名無しさん:2006/02/01(水) 19:39:27
>>797
VB6??
860デフォルトの名無しさん:2006/02/01(水) 19:44:07
>>857
市販のOcxで売ってないかな?
861デフォルトの名無しさん:2006/02/01(水) 19:44:36
APIで画像を綺麗に表示(リサイズ、リサンプル)できるみたいですが、
その場合一度PictureBoxなどに表示させなくてはいけないみたいで、

そこで、質問なのですが、PictureBoxを使わずに
画像ファイルを読み込むと同時にリサイズ、リサンプルすることは可能でしょうか?
862デフォルトの名無しさん:2006/02/01(水) 19:56:37
表示しなくても動くべ
863デフォルトの名無しさん:2006/02/01(水) 19:58:20
>>861
折角VBでやってるんだから、PictureBox は Hide にしとけばいいじゃん。
864デフォルトの名無しさん:2006/02/01(水) 20:03:49
>>859
Yes
865デフォルトの名無しさん:2006/02/01(水) 20:15:01
>>860
http://www.roguewave.com/products/stingray/
がVisualStudioのやつそのものだっけ?
VBからだと少ししか使えないから割高感が高いな。
866デフォルトの名無しさん:2006/02/01(水) 20:26:45
別アプリケーションのクラス名を取得する方法を教えてくださいまし。。
867デフォルトの名無しさん:2006/02/01(水) 20:32:45
866です、解決しました。。
868デフォルトの名無しさん:2006/02/01(水) 20:40:57
バイト数をKBやらMBやらに自動変換する関数ってある?
それとも演算させるしかない?
869デフォルトの名無しさん:2006/02/01(水) 21:05:29
>>866
何でこういう奴って「どうやって解決したのか」を書かないんだろ。
Q&Aの意味が全く分かってないな。

>>868
Format$
870デフォルトの名無しさん:2006/02/01(水) 21:36:21
>>866
"アプリケーションのクラス名"が何か気になった
ウィンドウのクラス名じゃないだろーな?

>>868
演算させるしかない
871デフォルトの名無しさん:2006/02/01(水) 21:39:23
>>869
ウソツキ
できないよ
872デフォルトの名無しさん:2006/02/01(水) 21:40:50
>>871
何か大切なものFormatしちまったんじゃないか>>869
873868:2006/02/01(水) 21:55:26
作ってみたけどこんな感じでオッケーかな

Dim sngRes As Single
Dim cRes

If cValue = "" Then
Exit Function
ElseIf cValue < 1022976 Then
sngRes = cValue / 1024
cRes = Format(sngRes, "0.00") & "KB"
ElseIf cValue < 1047527424 Then
sngRes = cValue / 1024 / 1024
cRes = Format(sngRes, "0.00") & "MB"
ElseIf cValue < 1072668082176# Then
sngRes = cValue / 1024 / 1024 / 1024
cRes = Format(sngRes, "0.00") & "GB"
End If
874デフォルトの名無しさん:2006/02/01(水) 22:33:09
>>873
StringだったりSingleだったりDoubleだったりって、
もうちょっと型を意識したら?
個人的にIfよりSelectCaseの方がいいと思う

というより書いてみた。

Public Function foo(ByVal n As Double) As String
Static clc As Collection
Dim i As Long

If n < 0 Then Exit Function
If clc Is Nothing Then
Set clc = New Collection
clc.Add "B"
clc.Add "KB"
clc.Add "MB"
clc.Add "GB"
clc.Add "TB"
End If
i = 0
Do
If n >= 1024 And i < 4 Then
n = n / 1024
i = i + 1
Else
foo = Format$(n, "0.00") & clc(i)
Exit Function
End If
Loop
End Function
875デフォルトの名無しさん:2006/02/01(水) 22:35:38
('A`) バグだ
...
i=1
Do
...

だな。
876868:2006/02/01(水) 22:36:57
>>874
ワーオー
これは勉強になりマッスル

ありがちょ
877デフォルトの名無しさん:2006/02/01(水) 22:38:53
>>876
('A`) 気をつけろ、そいつは3分クッキングだ
      デバグなんて一切してないからな・・・すまん
878デフォルトの名無しさん:2006/02/01(水) 22:39:12
capicomでbinaryファイルのhash(sha1)値を出したいのですが、
どのようにすればいいでしょう。

参考にしているところ↓
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/seccrypto/security/hasheddata_hash.asp
ttp://forums.devarticles.com/asp-development-3/file-hashing-w-vbscript-4935.html
879デフォルトの名無しさん:2006/02/01(水) 22:42:19
"B"っちゅうバイトの表記あんま見ないな
880デフォルトの名無しさん:2006/02/01(水) 22:43:02
Sub GbMbKb(sValue As String, Tmp$)
Dim cKb As Currency
Dim cMb As Currency
Dim cGb As Currency

cKb = CCur(1000) * CCur(1024)
cMb = CCur(1000) * CCur(1024) * CCur(1024)
cGb = CCur(1000) * CCur(1024) * CCur(1024) * CCur(1024)

Dim Tmp2$

Select Case CCur(sValue)
Case 0 To cKb
Tmp2$ = Format$(CCur((sValue) / CCur(1024)), "0.00") & "KB"

Case cKb To cMb
Tmp2$ = Format$(CCur((sValue) / CCur(1024) / CCur(1024)), "0.00") & "MB"

Case cMb To cGb
Tmp2$ = Format$(CCur((sValue) / CCur(1024) / CCur(1024) / CCur(1024)), "0.00") & "GB"

Case Else
Tmp2$ = "Over Flow"
End Select

Tmp$ = Space$(8)
RSet Tmp$ = Tmp2$
End Sub
881874:2006/02/01(水) 22:55:58
>>880
この人のは、Subプロシージャなので関数呼び出しによる戻り値分のメモリの確保やらの時間(数n秒?)がいらなくて済む
見づらいが・・・
というわけで、だれかベンチマークテスツを

>>879
たしかにな
でもKBなんかのつながりでBって書いてみた
882デフォルトの名無しさん:2006/02/01(水) 23:03:33
>>880さんの
cKbとかcGbなどのCurrency型の変数は、事前に求めて
102400@なんて書いたりした
コレ重要

Private Sub Form_Load()
Const p As Double = 1024# * 1024 * 1024
Dim s As Single
Dim i As Long

s = Timer
For i = 1 To 1000000
Call GbMbKb(p * Rnd, "")
Next
Debug.Print Timer - s

s = Timer
For i = 1 To 1000000
Call foo(p * Rnd)
Next
Debug.Print Timer - s
End Sub

結果
880さん 8.828125 s
おれ 4.328125 s

・・良く見れば、>>880さんの第一仮引数ってString型なのな
なんでだろな
883デフォルトの名無しさん:2006/02/01(水) 23:28:47
Subプロシージャってそんなにすごいんか
なら全部Subに変えたら実行速度速くなんじゃね?
884デフォルトの名無しさん:2006/02/01(水) 23:36:16
↑構造化思考
885デフォルトの名無しさん:2006/02/01(水) 23:36:57
>>883
VB6で実行速度を追い求めるのはちょっとなぁ・・・
それよりも、使いやすくて保守しやすくて、何より見て意味の取れるのがいい。

ちょっとベンチとってみそ

Private Sub Form_Load()
Dim i As Long
Dim s As Long
s = Timer
For i = 1 To 10000000: Call foo: Next
Debug.Print Timer - s
s = Timer
For i = 1 To 10000000: Call hoge: Next
Debug.Print Timer - s
End Sub

Function foo()
End Function

Sub hoge()
End Sub

これで家のPCは
4.421875
2.46875
って表示される。
886デフォルトの名無しさん:2006/02/01(水) 23:52:58
やってみた。倍違うんだな。
887デフォルトの名無しさん:2006/02/01(水) 23:56:48
都合により886の発言は撤回。
888デフォルトの名無しさん:2006/02/01(水) 23:57:32
('A`)
間違ってもSub(ByVal arg As .. , ByRef ret As ..)みたいな述語形式の関数なんて作るなよ・・
本当に見づらいから(orz
889デフォルトの名無しさん:2006/02/01(水) 23:58:34
へ(へ´∀`)へ カサカサ?
890デフォルトの名無しさん:2006/02/02(木) 00:09:07
>>888
引数多すぎるのは死ねってことか?
891デフォルトの名無しさん:2006/02/02(木) 00:16:04
>>888
述語形式て?
>>889
カマドウマ?
892デフォルトの名無しさん:2006/02/02(木) 00:22:51
VBのコマンドボタンを押下した際に
UNIXのシェルを実行したり
VMSでDCLコマンドを実行したりとかいうそういった関数を作る方法ないでしょうか?
893デフォルトの名無しさん:2006/02/02(木) 00:28:01
>>890
ちゃうちゃう
引数の中に戻り値を返す部分を突っ込むんじゃない
ってこと

------
>>891
Prologとかやってみるとよろし
やってるならPrologの"述語"と同じ表現だろ?

…たとえば
foo(0,1).
foo(X , Y) :- X1 is X - 1 , foo(X1,Y1) , Y is Y1 * X.
の foo/2 は、あたかも第二引数が戻り値のよーに動作する
みたいな

へ(へ´∀`)へ 呼んだ?
894デフォルトの名無しさん:2006/02/02(木) 00:29:18
>>893
戻り値が二個以上だったら開き直ってsubプロシージャでbyref四個とかやっちゃうけどダメ?
895878:2006/02/02(木) 00:31:41
>>892
>UNIXのシェルを実行
shell関数でrshを実行すればどうでしょう。

誰か>>878にヒントください。
896デフォルトの名無しさん:2006/02/02(木) 00:33:07
>>892
とりあえずVB/UNIXな環境を手に入れるのがキツい希ガス・・・

over Telnet とかならなんとかなるんじゃまいか?
と考えて、適当に伏線を引っ張っておく

1 set telnet=CreateObject("Wscript.Shell").exec("telnet")
telnet.StdIn.WriteLine "X.X.X.X" & vbcrlf
  なんかで、運良くtelnetでログイン
2 後はtelnetで操作する感じで色々

・・・できるわけなさそうだな。
897デフォルトの名無しさん:2006/02/02(木) 00:34:21
>>894
俺だったら構造体かクラスにする
898デフォルトの名無しさん:2006/02/02(木) 00:37:12
>>894
IDLとかC++な out 属性があればいいんだけど、
ByRefじゃ束縛弱すぎるからちょっとなぁ…
WinAPI上なら引数に戻り値として受け取る仮引数があっても許せるが、
やっぱりVB上なら、無理にでもクラスにまとめて欲しい希ガス

'created:2006/02/02 00:34
'class Point
'*general*
public x as long
public y as long
'*End Of Code*

public function CreatePoint(byval X as lonb,byval Y as long) As Point
set CreatePoint=new Point
CreatePoint.x=X
CreatePoint.y=Y
end function

みたいな。

>>878
すまん、capicom.dllが家にないんだ…(orz
899デフォルトの名無しさん:2006/02/02(木) 00:38:30
>>897
へ(へ´∀`)へ ヘヘヘ罠にかか(ry
Publicなプロシージャの戻り値には、公開していない構造体は突っ込めないオチが待っているかも
素直にクラスで統一・・・?
900878:2006/02/02(木) 00:39:40
>>898
お気持ちだけでもうれしいです。

もしご一緒に検討してくださる方がいらしたら
無償ですので↓からダウンロードできます。
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=860EE43A-A843-462F-ABB5-FF88EA5896F6&displaylang=ja
901デフォルトの名無しさん:2006/02/02(木) 00:42:38
>>900
リンクthx!!
動くかわからないけど、ハッシュ関数は自力で(自力のアルゴリズムで)つくったのしか持ってないんだ。
…素直にcryptapi使えってな。
902デフォルトの名無しさん:2006/02/02(木) 00:43:19
>>895
rshですかrがつくということはリモートですね。
だめです思考回路が働ききりません。
teraなんとかというエミュレーターツールがVBかなんかで作られてるっぽいので
そのあたりを応用した簡単な方法を探しています。
たとえばですが
iRet = Kidou(sHost,sUser,sPass,SendCom)みたいなかたちで
自由自在にリモート側のOSでファイルを起動できれば嬉しいのですが

>>896
TELNETというのはセンドコマンドができるプログラムですよね
どこをみてもVBからコマンドを送信するネタがみあたらないのです。
これは厳しいでしょうか?
903デフォルトの名無しさん:2006/02/02(木) 00:50:52
!! 依存関係が完全でなくて、capicom.dll を正しく呼び出せませんでした !!

つまりココから書いているのは、全部「勘」です

Private Sub Form_Load()
Const File As String = "C:\hoge.txt"
Dim buf() As Byte
Dim ff As Integer
Dim hash As New HashedData
Dim s As String

'Fileの内容を全てbuf()に読み込む
ff = FreeFile()
Open File For Binary As ff
If LOF(ff) > 0 Then
ReDim buf(1 To LOF(ff))
Get #ff, 1, buf
End If
Close ff

'Byte()→Stringをする
'※Byte()の内容が破壊されないでStringに入力されることを望んでいる
s = buf

'Hashを計算
With hash
.Algorithm = CAPICOM_HASH_ALGORITHM_SHA1
.hash s
Debug.Print "Hashed"; .Value
End With
End Sub
904デフォルトの名無しさん:2006/02/02(木) 00:55:43
InetコントロールのExecuteメソッドの第4引数ってあるの?
905904:2006/02/02(木) 00:59:12
あ、間違えた、自己解決しました
906デフォルトの名無しさん:2006/02/02(木) 01:00:24
>>902
TERAterm?:
http://hp.vector.co.jp/authors/VA002416/

これはターミナルソフトなので、
「相手の端末にログインしていろいろする」感じのものです。
基本的に、相手にtelnet鯖が立ち上がっていないと意味ないです。
(リモート鯖がUNIX/Linuxはおkかも。WinXPは絶望的)

telnet:
http://e-words.jp/w/Telnet.html

------
telnetは、teratermとほとんど同じですね。
「センドコマンド」の様な狭義のリモートアクセスではなく、
telnet鯖にログインして、相手のPC上でゴリゴリするものです。

telnet.exeを立ち上げるだけなら、
Shell "telnet.exe"
でいいかもしれませんが、
入出力まで管理するとなると、Wscript.ShellオブジェクトのExecメソッドを使って、StdInやStdOutを使う必要が出てきます:
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/wslrfscriptexecobject.asp

…まぁ、PCドメインを越えて操作するわけですから、それなりに苦労はありますよ・・と


-----------
最終案:
自力でアプリケーションプロトコルを実装する。
で、実際の処理はUNIXにスクリプトを記述しておく。
コチラからは、「始めてくれ!」みたいなアクション一つを送信するだけ。
みたいな。
907デフォルトの名無しさん:2006/02/02(木) 01:14:20
>>906
貴重な情報ありがとうございます。会社でみたのコレだったとおもいます。
ダイアログから入力してログインしてあとはビューの上で普通に
コマンドをたたいてリターンで実行みたいな。VAX上確認したところ
セクション起動だったのでいったんコマンドを送信したら、リモート側で
プログラムは走行しきるみたいな感じでした。操作したいのは中継サーバなので
XPじゃなくてUNIXオンリーです。
参考にテラターム?ですかページみてみましたがコレ公開ソースなんですね
しかもC++なんで僕にはさっぱりよめませんでした。
けどVCであってもこの機能をDLL化できればVBの標準モジュールから
デクレア宣言でなんとなくですが、UNIXのリモート起動もいけそうですね。
908878:2006/02/02(木) 01:17:57
>>903
ありがとうございます。

SHA1ハッシュが公開されているファイルが手元になかったので
md5で試験しましたところ正しく動作しました。(CAPICOM_HASH_ALGORITHM_MD5)
SHA1でもエラーなく動いていますので
正しく動作しているものと思います。
909デフォルトの名無しさん:2006/02/02(木) 01:31:00
>>907
   TERAtermってソース公開だったんか…
ま、どんな言語で作っているかによらず、TELNETプロトコルを模していれば、
直ぐにTELNETクライアントは作れますよ。

TELNETプロトコル(RFC854 with Japanese):
http://www5d.biglobe.ne.jp/~stssk/rfc/rfc854j.html
TELNET on wiki:
http://ja.wikipedia.org/wiki/Telnet

例)
1 Winsockコントロールを貼り付けます
2 ポート23に接続します
3 Connectしたら、通信開始
4 通信はACIIなので、テキストボックスでも用意して送受信
これだけです…きっと。
ええ、生通信なので、ログインパスワードとか丸見えです。
色々と厄介なのでover SSHとか出てきたわけです。

ともかく、実現方法は色々あるわけですが、どれもクセがあります。
プログラマはその辺を噛みしめて食べるわけですが、面倒なら「最終案」も視野に入れてみてください。


-----
>>908
ちゃんと動きましたかー
ヨカッタです。
経験上、Byte()→Stringはタダのコピーだと思っているので、
強引にバイナリをStringに突っ込んでいます。
ちょっと怖いので、何らかの緩衝材を入れておいたほうが良いかもしれません。
910デフォルトの名無しさん:2006/02/02(木) 01:35:35
('A`)ノシ 風邪ひいてたのわすれてた…
       >>878さん>>892さんおやすみなさいっす

911878:2006/02/02(木) 01:45:17
>>909
capicomに便利ツールがありましたのでこんな感じでしょうかね。
Dim oCU As CAPICOM.Utilities
Set oCU = CreateObject("CAPICOM.Utilities")
s = oCU.ByteArrayToBinaryString(buf)
912878:2006/02/02(木) 01:46:08
>>910
夜遅くまですみません。お大事に。
913デフォルトの名無しさん:2006/02/02(木) 07:27:56
('A`)→×
('A`)→○
914デフォルトの名無しさん:2006/02/02(木) 08:31:16
VAX/VMS・・・懐かし過ぎる・・・まだ稼動してる所があるのか・・・
915デフォルトの名無しさん :2006/02/02(木) 09:17:09
VBAの質問なんですが、どこで聞いていいかわからないので、こちらで
質問させて下さい。
cells(1,1)→cells(5,5)→cells(8,2)→再びcells(1,1)→
とenterキーを押すごとにセルを移動させたいのですがどうしたら
いいんでしょか? 
どうやっても、同じセルに戻ってしまいます・・・

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
でやる事自体がまちがってるんでしょか?

916デフォルトの名無しさん:2006/02/02(木) 09:26:58
> どうやっても、同じセルに戻ってしまいます・・・
自分で書いたコードを貼れ。
917デフォルトの名無しさん:2006/02/02(木) 10:06:53
>>915
他の移動可能セルを全部ロックするとか。
918デフォルトの名無しさん:2006/02/02(木) 10:19:22
>>915
例えばこんな感じ?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static LastCell As String
Select Case LastCell
Case "$A$1"
Range("E5").Activate
Case "$E$5"
Range("A1").Activate
End Select
LastCell = ActiveCell.Address
End Sub

ただし所定のセル以外に移動することはできなくなる。
919デフォルトの名無しさん:2006/02/02(木) 10:34:35
918さん
ありがとうございます。
動きました。

920デフォルトの名無しさん:2006/02/02(木) 12:43:31
915です。たびたびすいません。
所定のセル以外に任意のところからは
スタートできませんでしょか?

if LastCell ="$A$1"  then
Range("E5").Activate
end if
if LastCell ="$E$5" then
Range("A1").Activate
end if
でして見ましたが、無限ループみたいになって
しまってだめでした。


 




921デフォルトの名無しさん:2006/02/02(木) 13:03:18
>>920
EnableEvents
922デフォルトの名無しさん:2006/02/02(木) 16:05:09
>>920
とりあえずだな、おまいが無限ループになるのは
A1ならばE5 の処理をやったすぐ後に
E5ならばA1 の処理をやってるからだ
それじゃ戻るのはあたりまえだろ

if A1 then
 E5
elseif E5 then
 A1
end if

にするだけでも無限ループは回避できるぞ
やってることは>>918と同じだけど
923デフォルトの名無しさん:2006/02/02(木) 16:18:58
VBでインラインアセンブラとインラインCが使えるって
ttp://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=62038&lngWId=1
924デフォルトの名無しさん:2006/02/02(木) 16:40:41
イラネ
925デフォルトの名無しさん:2006/02/02(木) 17:34:55
>>923
ものすごく欲しい
Cでライブラリ作るの飽きてきた ('A`)
926デフォルトの名無しさん:2006/02/02(木) 17:46:33
>>923
VBでインラインアセンブラが使えるのはいいとして
いったい、どんなことに活用するの?
927デフォルトの名無しさん:2006/02/02(木) 17:54:15
>>926
単純に速度が要求される画像処理に使うとか、たとえばアセンブラで、
IDEの停止ボタンを押してもクラッシュしないサブクラス化ライブラリ
があったなぁ。正直、アレ書いた人は神だと思う。
928デフォルトの名無しさん:2006/02/02(木) 18:26:35
>>927
>単純に速度が要求される画像処理に使うとか
ん〜これは、市販のActiveXなりC言語製のDLL使ったほうがいいなw

>IDEの停止ボタンを押してもクラッシュしないサブクラス化
それはすごいね
929デフォルトの名無しさん:2006/02/02(木) 18:32:26
>>928
使うんじゃない、作るんだ…そういうときに使う。

> IDEの停止ボタンを押してもクラッシュしないサブクラス化ライブラリ

930デフォルトの名無しさん:2006/02/02(木) 18:45:21
>>926
あらゆるIOポートにIn/Outし捲くるのでは。
931デフォルトの名無しさん:2006/02/02(木) 18:45:53
>>927
停止ボタンでクラッシュなんてするっけ?
932デフォルトの名無しさん:2006/02/02(木) 19:12:04
>>929
>使うんじゃない、作るんだ…そういうときに使う。
いや、俺もそういう意味で言ったんだけど
アセンブラ混ぜ込んで処理書くほどシビアな要求するところなら
C言語でDLL作って利用するほうがいいだろうということよ

>>931
普通に落ちるだろw
俺はいつもサブクラス化しまくりなんで、ブレークもおぼつかない
ウォッチしようにも、大抵マウス操作は効かないし
運良く触れても、ちょっとしたことでVBごと落ちますよと('A`)
933デフォルトの名無しさん:2006/02/02(木) 19:27:01
ttp://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=51403&lngWId=1
これのcSubclassだったかな。デザインタイム用のタイプライブラリを登録しなきゃいけないけど、
基本的に、依存関係はクラスモジュール一つで、配布時にも特別何もいらない。安定して動くし。
他にもcTimerやcHookも便利。

他にも、VBでActive X DLLじゃない標準DLLをビルドしたりとか、上のライブラリを使った
アイコン付メニューとか、各種コモンコントロールのユーザーコントロールとか、海の向こうでは
なかなか進んでるなぁ、と思ったりする。ただ、ちょっといま鯖が落ちかけてるけどな。
934デフォルトの名無しさん:2006/02/02(木) 19:33:06
>>932
サブクラス化とかは余り普通のVBの使い方じゃないけどね。
935デフォルトの名無しさん:2006/02/02(木) 19:41:18
使わずにすむならそうしてるさ
936デフォルトの名無しさん:2006/02/02(木) 20:16:15
>>927
VBでのサブクラス化をイベント化してActiveX にすれば VBでも出来るよ
ソースのプロジェクトに取り込んだ場合はブレイクポイントおいてデバックできるよ
昔はやたらとWindows内部を引っ掻き回したVBサンプルが多かったな...
イベント化する方法はググれば今でも出てくるんじゃね?

この方法使うとサブクラス化し易くなるし Formのイベントととして処理が書けるし結構使ってたな
937デフォルトの名無しさん:2006/02/02(木) 20:28:07
おしえて!
938932:2006/02/02(木) 20:43:07
>>936
俺は配布ファイル増えるの嫌だから引っ掻き回すことにするw
ただ、イベント化してる点は俺と一緒だ
939デフォルトの名無しさん:2006/02/02(木) 20:53:59
>>937
何でも聞けっ!
940デフォルトの名無しさん:2006/02/02(木) 21:38:31
>>939
王室の春花ちゃんになかなか入れないんだが前日予約で確実に入れる方法頼む
941936:2006/02/02(木) 21:50:01
「プログラマのメモ帳」とか言うサイトにあったサンプルを改造しただけ 俺が考えたロジックじゃないよ
このサイトもう消えてるね...
説明するのメンドクサイからソースうpろうか?

もしかしたら方法は>>932同じかもしれない...
942932:2006/02/02(木) 22:02:53
>>941
俺はそのサイトは知らない、VBのサイトを見ることはまず無いんでw
俺の場合は、インターフェース用のクラスとコールバック用のモジュール作っておいて
使う時にそれをプロジェクトに組み込んで、サブクラス化するフォームでImplementsしてイベントに処理を書く
943デフォルトの名無しさん:2006/02/02(木) 23:13:54
Single 型で時に 1.#INF って値が出るんだけ、コレなんですか?
944デフォルトの名無しさん:2006/02/02(木) 23:14:26
>だけ

だけど

失礼しました
945デフォルトの名無しさん:2006/02/02(木) 23:56:44
>>936
>>942
OCXにしてしまう方法は昔からあったよね。それと、何故かAddressOfは
標準モジュールに置かないとダメっていう制約があるから、面倒だね。
とにかく、>>933のだと、クラスモジュール1つで済む。仕組みは>>942に近いかな。
ただ、何故かメインルーチンがアセンブラで書かれてるから、スッキリしてる。
cHookに関しては(確か)グローバルフックが使えた気がする。普通DLLに追い出さないと
無理だったと思ってたんだけど。
946デフォルトの名無しさん:2006/02/03(金) 00:02:15
>>943
エラーじゃなかったっけ?
947デフォルトの名無しさん:2006/02/03(金) 04:01:34
初心者の質問なんですが、
VBAのコーナーはどこか教えて下さい。

948デフォルトの名無しさん:2006/02/03(金) 04:07:38
949デフォルトの名無しさん:2006/02/03(金) 04:59:06
>>948
そこはExcelのVBAはOKだけど、それ以外のVBAはNGだよ。

>>947
VBAからのExcel操作なら>>948のところでいいけど、
Word、Accessならそれらの個別スレに行くべきだし、
Officeアプリの操作じゃなければVBAでもここで聞くべき。
950デフォルトの名無しさん:2006/02/03(金) 07:57:24
「プログラマのメモ帳」はインターネットアーカイブで見られますよ。
http://web.archive.org/web/20040930165730/www.gj.il24.net/~nakasima/
951デフォルトの名無しさん:2006/02/03(金) 08:01:47
952デフォルトの名無しさん:2006/02/03(金) 08:22:50
>>943
#INFINITY
953デフォルトの名無しさん:2006/02/03(金) 09:30:22
>>952
∞ですな。
954デフォルトの名無しさん:2006/02/03(金) 10:37:04
hensuu = hensuu + 1 というのを Cみたいに hensuu++ みたく 変数を1度書くだけですむ方法ってありますか?
955デフォルトの名無しさん:2006/02/03(金) 10:42:33
無い
956デフォルトの名無しさん:2006/02/03(金) 10:44:18
>>954
それ位の手間を惜しむなよ・・・
957デフォルトの名無しさん:2006/02/03(金) 10:57:44
でもインクリメントは欲しいよね。
なんでVBには無いのかなぁ。
958デフォルトの名無しさん:2006/02/03(金) 11:00:38
>>957
それこそVBクォリティ!
959デフォルトの名無しさん:2006/02/03(金) 11:04:17
> なんでVBには無いのかなぁ。

そういう言語仕様だから。
そして、そういう仕様の言語を使うことを選んだのは自分自身だろ。
960954:2006/02/03(金) 11:11:40
>>955-959
ありがとうございます。
ケンカしないで・・・・
961デフォルトの名無しさん:2006/02/03(金) 11:19:20
なぜにケンカ?
962デフォルトの名無しさん:2006/02/03(金) 11:24:13
ttp://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=54190&lngWId=1
これでstdcallなDLLがビルドできるそうです
963デフォルトの名無しさん:2006/02/03(金) 11:24:19
選んだのは客だよ
964デフォルトの名無しさん:2006/02/03(金) 12:06:36
>>961
インクリメント無いのを我慢して使っているのに、
初心者にありませんかと単純に聞かれて腹立ったんだろう
965デフォルトの名無しさん:2006/02/03(金) 12:09:58
オブジェクトのメソッドのアドレス受け取るにはどーすればいい?
966デフォルトの名無しさん:2006/02/03(金) 12:26:24
>>965
ttp://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=38801&lngWId=1
アセンブラ絡みのかなりトリッキーなコード
967デフォルトの名無しさん:2006/02/03(金) 12:35:30
そんなにインクリメント演算子相当のものがほしけりゃ
モジュールにでもINCって関数を書けばいいんだよ。
アセンブラみたいでカコイイぞw

ByRefで引数とるのはもちろんだが、インクリメントした値自体を
返すようにすることを忘れずにね。

でも引数を括弧で囲んじゃうと誤動作することを防止できないのは
VBクオリティかもなw
968デフォルトの名無しさん:2006/02/03(金) 13:29:12
>>966
さんくす!!
969デフォルトの名無しさん:2006/02/03(金) 13:50:23
>>964
別に我慢なんかしてない。
>>965
受け取るだけなら普通に Long 変数でいいのでは。
>>967
括弧云々ってどういう意味?
括弧使うなら Call が必要だけど、そういう事じゃなく?
970デフォルトの名無しさん:2006/02/03(金) 15:35:02
インクリメント欲しいな
971デフォルトの名無しさん:2006/02/03(金) 15:39:29
すでに終わった言語に何言ってんだこの馬鹿は
972デフォルトの名無しさん:2006/02/03(金) 15:44:00
馬鹿ってゆうなーーーーーーーーー
973デフォルトの名無しさん:2006/02/03(金) 15:53:27
彼女欲しいな
974デフォルトの名無しさん:2006/02/03(金) 15:56:32
今更VB6にインクリメント演算子はいらないけど、
VB2005にも実装されてないんだよね?
なんで実装しないんだろう。
975デフォルトの名無しさん:2006/02/03(金) 16:02:54
>>969がほしがっていないから
976デフォルトの名無しさん:2006/02/03(金) 16:35:39
>>974
Basicの言語仕様にないから?(半疑問系)
977デフォルトの名無しさん:2006/02/03(金) 16:37:10
MSがVB6をオプソにしたら面白い方向に発展すると思うんだけどね。ありえんか。
978デフォルトの名無しさん:2006/02/03(金) 16:56:52
まぁ、2003以後は+=が使えるから、6よりはインクリメントもしやすいけどな
979スレ違いな名無しさん:2006/02/03(金) 17:17:20
日本語プログラミングの『TTS』だっけ?
あれで生成した実行ファイルって何でVB6ランタイムが必要なんだろ?
スレ違いスマソ
980デフォルトの名無しさん:2006/02/03(金) 17:38:55
>>979
中間言語でExeが書き込まれ、それを解釈するエンジンがVB6製とか?
981デフォルトの名無しさん:2006/02/03(金) 19:33:59
>>969
>括弧云々ってどういう意味?
実際やってみればわかるよ。

結論からいうと、引数を括弧でくくると変数の参照じゃなくて
変数の値をコピーしたもの(というより演算結果扱いか)の参照が渡される。

だからインクリメントされない。返値は問題ないけど。
かといってCallつけると演算結果を式の中で使えない。

まあでもCでも式の中でインクリメント演算子使うって
あんまりみたことないか。
982デフォルトの名無しさん:2006/02/03(金) 20:02:03
>>981
Private Function Inc(ByRef i As Integer)
  i = i + 1
  Inc = i
End Function

i = 0: a = Inc(i)
i = 0: inc i : a = i
i = 0: call inc(i): a = i
i = 0: inc (i): a = i これだけ a が 0 になってしまうということですね。
確かにありがちなバグだな。
983デフォルトの名無しさん:2006/02/03(金) 20:33:10
()を付けた場合と付けない場合の違いを分かってない人が居る件。
984デフォルトの名無しさん:2006/02/03(金) 20:45:06
vb歴10年だけど初めて知った
985デフォルトの名無しさん:2006/02/03(金) 21:01:55
ああ、ようやく意味が分かった。
986デフォルトの名無しさん:2006/02/03(金) 21:50:23
これからはByValいらないね
987デフォルトの名無しさん:2006/02/03(金) 21:58:15
あのーOSのシャットダウン、起動をいじるプログラム作ってたんてすけど、
Do Loopでハマッてしまって、電源入れ直してもそのプログラムが動いてずっと止まらないんですけど、どうしたらいいですか(泣)
いま携帯から投稿してんですけど、CPUが暑くなってる予感なんですけど、どうしたらいいてすか(泣)
988デフォルトの名無しさん:2006/02/03(金) 22:04:57
タスクマネージャ起動できんのか?
ならパワースイッチを4秒間押す。セーフモードで起動。
あとループにはSleep(0)いれとけ。
989デフォルトの名無しさん:2006/02/03(金) 22:31:53
まじスマン。
VBってさVisuarlStudioでプロジェクト作ると自動でフォームが作られるっしょ?
アプリケーション自体をSDIっぽいUIにしたいんだけどどうすりゃいいのかな?
VC++なら最初にフォームかSDIかMDIかベースえらべんじゃん?

不躾で申し訳ないけど宜しく
990デフォルトの名無しさん:2006/02/03(金) 22:37:46
>>988
Sleep はやめた方がいい。
991デフォルトの名無しさん:2006/02/03(金) 22:38:20
>>989
VBはデフォルトでSDIなんだけど。
992デフォルトの名無しさん:2006/02/03(金) 22:38:51
VisuarlStudio
993デフォルトの名無しさん:2006/02/03(金) 22:40:45
VisuarlStudio
994デフォルトの名無しさん:2006/02/03(金) 22:41:23
995デフォルトの名無しさん:2006/02/03(金) 22:41:44
ヴィジュアールスタジオ
996デフォルトの名無しさん:2006/02/03(金) 22:46:56
次スレがねえぞー
997デフォルトの名無しさん:2006/02/03(金) 22:48:29
1000ゲット〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜wwwwwwwwwwwwwwww
998デフォルトの名無しさん:2006/02/03(金) 22:50:00
次スレもういりませんよwwww
999デフォルトの名無しさん:2006/02/03(金) 22:50:56
じゃココでVBの歴史は終了だね
1000デフォルトの名無しさん:2006/02/03(金) 22:51:00
( ( ( ( ( (゜∀゜) ) ) ) ) ) デンパ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。