トップページ⇒tech
1001コメント301KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/02/03(金) 22:58:33
VisuarlStudio
0412デフォルトの名無しさん2006/02/09(木) 23:09:57
>>411
テキストに書き出して、単機能の外部フィルタアプリとかにやらせては。
0413デフォルトの名無しさん2006/02/09(木) 23:23:14
>>412
・・・グスン(誰もわかってくれない
0414デフォルトの名無しさん2006/02/09(木) 23:29:20
まぁ、正規表現クラスでも使えば一発でできないこともないかもしれないが…(できるか・・??)
ごり押しするなら、単語をinstr()で地道に検索&自力で置換、だな。
文字列連結は文字列大きくなるほど遅いから、そのへんの高速化も自力でせにゃならん。

1行1行replace()書くのがいやなら、foreachなりで反復操作にすればいいじゃまいか ( ´Д`)
0415デフォルトの名無しさん2006/02/09(木) 23:56:09
>>413
ほんとーのわたしを♪
0416デフォルトの名無しさん2006/02/10(金) 00:32:23
VBで文字列置換を自力実装すると使えないくらい遅いからな
結局Replaceの重ねがけが一番速かったりナ。。。
0417デフォルトの名無しさん2006/02/10(金) 00:38:40
>>416
(VB6)ちなみに家でStringBuilderなるクラスを作って試してみました
Private Sub Form_Load()
Dim sb As New StringBuilder
Dim i As Long
Dim s As Single
Dim t As String
s = Timer
For i = 1 To 20000: sb.AddString "hello!": Next
Debug.Print Timer - s
s = Timer
t = ""
For i = 1 To 20000: t = t & "hello!": Next
Debug.Print Timer - s
End Sub

結果
4.711914E-02
1.437012

ただの文字列連結は非線形的に所要時間が増加するっぽい
sb.AddStringは内部でMidステートメントによる置換をしています
0418デフォルトの名無しさん2006/02/10(金) 01:02:11
>>Midステートメント
Midはメモリ上書きだから速いんだけど 異なる文字数で置き換えられないよね

例えば "まんまん" を "満々" に置き換えるとか

結局Replace見たいな機能を要求すると &結合か Byte配列のRedim・メモリ移動 でゴリゴリ
Byte配列でやると &結合に比べて 10〜50倍の差が出るんだっけ?
0419デフォルトの名無しさん2006/02/10(金) 01:07:22
>>418
いや
1 "まんまん"をInstrで検索
2 直前までMidステートメントで置換代入
3 "満々"を置換代入
4 1へ

置換代入先の文字列を、あらかじめ10KBとか多めにとっておけばメモリ移動がそれほど起こらないので速いかも
(少なくとも&で連結していくよりは)

> Byte配列でやると &結合に比べて 10〜50倍の差が出るんだっけ?
時間差は先ほど書いたとおり非線形
Midステートメントで最終的に必要なサイズを全て最初に確保しているとすれば、置換代入の時間は線形に済むはず
というわけで比率はかなり変動するかと
0420デフォルトの名無しさん2006/02/10(金) 01:21:05
満々w
0421デフォルトの名無しさん2006/02/10(金) 01:34:23
ごみん Redim = ReDim Preserve ・ メモリ移動 = Kernel32.CopyMemory の事だよ 伝わらなかったカナ?
文字列(Unicode)をバイナリデータとして配列上をポインタ操作する っ言いたかったんだ
0422デフォルトの名無しさん2006/02/10(金) 01:44:07
>>421
あー、まぁそういう方法もあるが…
VB6側でString→Byte()してからいろいろゴリゴリすることになるんじゃないか?
文字列連結よりは高速だろうけど、それだとオーバーヘッドかかっちまうよな。

で、Stringの内部処理だったらMidB()とか*B()系が最速だったよーな気がする
0423デフォルトの名無しさん2006/02/10(金) 01:48:12
>>399
しかし、開発はえーなぁ
タブの部分って何のコントロールで作ってるの?
0424デフォルトの名無しさん2006/02/10(金) 02:27:26
>>398
お礼遅れましたが、サンクスです。
0425デフォルトの名無しさん2006/02/10(金) 02:51:48
>>399
いい加減 バイナリでもソースでも晒せ
晒す気が無いんなら消えろ ここはお前の日記帳じゃな(ry
0426デフォルトの名無しさん2006/02/10(金) 03:24:46
いや、話聞いてる限りバイナリは(゚�听)イラネ
0427デフォルトの名無しさん2006/02/10(金) 03:29:52
どーせなら「ソース&実行ファイル」を完全にさらして、
オープンソースにしてみんなで開発するかw
0428デフォルトの名無しさん2006/02/10(金) 05:10:01
メモリ確保処理が1回で済む>>419に1票入れたいんだが>>421の処理が激しく気になる。
配列上のポインタ操作ってリストの連結みたいなの?
C言語ならやりようもあるけど、VBってStringとかByte配列の中身に対してポインタ指せたっけ?
0429デフォルトの名無しさん2006/02/10(金) 05:12:38
> VBってStringとかByte配列の中身に対してポインタ指せたっけ?
VB5からだっったかな
詳しいことは自分で調べな
0430デフォルトの名無しさん2006/02/10(金) 05:22:37
あー勘違いしてたかも。
VarPtrとCopyMemory駆使するってことかな?
これだとMidと変わらんような気がする(ていうか>>422の指摘の通りか)
スレ汚しすまん。
0431デフォルトの名無しさん2006/02/10(金) 08:22:53
まぁ結局後々の色々な事を考えると Replace が一番だな。
0432デフォルトの名無しさん2006/02/10(金) 09:18:30
とりあえず言語はおいといて、処理の内容から考えると、
元の文字列のメモリを走査しながら、
新しく確保したメモリに文字列を置換しながらコピーするのが一番速いか?
0433デフォルトの名無しさん2006/02/10(金) 10:18:45
VB6.0のADOを利用してMySQL4.1にあるデータベースに
接続したんですけど出来ないです。
どうしたらいいんですか?

Dim cn As Variant
Dim sql As String

'** ODBC 接続
Set cn = CreateObject("ADODB.Connection")
cn.Open "dsn=MySQL;uid=ユーザー名;pwd=パスワード"
cn.CursorLocation = 3
これではだめでした。
0434デフォルトの名無しさん2006/02/10(金) 10:47:57
>>433
ttp://nobuson-ruby.at.webry.info/200501/article_9.html
0435デフォルトの名無しさん2006/02/10(金) 10:56:34
ついでに色々
http://www.connectionstrings.com/
0436デフォルトの名無しさん2006/02/10(金) 18:21:12
VB6.0でAPI叩いてシリアル通信してるプログラムがあるんだけど
これがWin2000では動くけどWinXPだと通信できないんです
WriteFileとReadFileが0を返してきます

なんかWinXPで変わった?
0437デフォルトの名無しさん2006/02/10(金) 20:56:53
>>436
VB6は、開発環境も実行環境も、XPには対応してないよ。
色々と、訳の分からん所で不具合が出る。
当然、回避不可能。
04382272006/02/10(金) 21:00:00
>>436
私にまかせてください!
0439デフォルトの名無しさん2006/02/10(金) 21:39:59
> 開発環境も実行環境も、XPには対応してないよ。
片方ハズレ
0440デフォルトの名無しさん2006/02/10(金) 21:41:44
> 訳の分からん
> 回避不可能
> 回避不可能
> 回避不可能
> 回避不可能
> 回避不可能
> 訳の分からん
( ・ω・) 他意はないです
0441デフォルトの名無しさん2006/02/10(金) 21:43:38
ヘッダを取得するただそれだけのソフトなんですが、
いい名前が思いつきません、もしよければ一緒に考えてくれませんか。
0442デフォルトの名無しさん2006/02/10(金) 21:45:07
>>441
getheader/headergetter/huntheader/huntYOURhead
0443デフォルトの名無しさん2006/02/10(金) 21:55:06
>>442
どうもありがとう、ただありきたりなんです
もうちょっとユニークーなのお願いしまする
0444デフォルトの名無しさん2006/02/10(金) 21:58:32
>>443
> もうちょっとユニークー
これでいけ「ユニークー」
0445デフォルトの名無しさん2006/02/10(金) 22:00:55
>>441
HeaderSyutoku.Exe
0446デフォルトの名無しさん2006/02/10(金) 22:01:27
>>438
またおまえか!
0447デフォルトの名無しさん2006/02/10(金) 23:13:12
>>441
ヘッドハンター西脇.exe

てか、VB6ってXPダメなんか!
うひょーどうすっかな
orz
0448デフォルトの名無しさん2006/02/10(金) 23:14:16
>>447
俺XPで開発してWin95で動かしてる
0449デフォルトの名無しさん2006/02/10(金) 23:25:10
近ごろマニフェストを覚えて浮かれている初心者です
0450デフォルトの名無しさん2006/02/10(金) 23:27:52
>>447
>ヘッドハンター西脇
いいですねそれ
ありがとうそれに決めた!
0451デフォルトの名無しさん2006/02/10(金) 23:53:15
XPで普通に開発しているが、なにか不具合あったか?
0452デフォルトの名無しさん2006/02/11(土) 00:41:13
>>448
まさか、XPでセットアップしたやつで95にインストールしてる?
0453デフォルトの名無しさん2006/02/11(土) 00:55:52
VB6で下記のような今の時間が9時5分すぎかどうかの比較を行うにはどうしたらよいですか?

Time >= "09:05:00"
0454デフォルトの名無しさん2006/02/11(土) 00:58:41
>>453
datediff使え

>>452
そんな地獄は見たくないから
システムに依存するものは持っていかないようにしてるぞ
0455デフォルトの名無しさん2006/02/11(土) 03:23:53
C言語でいう #define みたいなのって何でしたっけ?

ちなみBVAです。

0456デフォルトの名無しさん2006/02/11(土) 03:27:31
>>455
つ #Const
04574552006/02/11(土) 03:30:05
>>456

おーこれだこれだ�dクス!
0458デフォルトの名無しさん2006/02/11(土) 05:50:17
> ちなみBVAです。
新しい言語?

俺はVB関係ではVB、VBA、VBSしか知らない
VB関係ではなくBasic関係ならもっと知ってるがな
0459デフォルトの名無しさん2006/02/11(土) 06:11:46
つまんねえレスだな
0460デフォルトの名無しさん2006/02/11(土) 08:51:02
昔々の事じゃった・・・

朝出社すると、係長の先輩と後輩2人の合計3人が、一台のPCの前で悩んでいました。
それとなく見ていると、どうやら、ひたすら同じ作業を繰り返し、エラーが出て、
「分からん。どうしてだ?おかしい・・・。出来る筈なのに!」と言い続けている模様。

その日一日普通に仕事をし、残業する程でもなかったので定時で帰ろうとしたら、その3人は、
まだ同じ事をやっているみたい。

流石に可哀想になって「どうしたんですか?」
「いやこのVBXを読み込もうとしてるんだけど、エラーが出るんだよ・・・」
「(VBX?今頃何故?)へぇ〜」と、見てみると・・・

VB6でVBXを使おうとしていました。(VB5だったかな?)

私は「ホントだ。エラーになりますね。では、お先に失礼します」と帰りました。

きっと、残業して徹夜したかも・・・
0461デフォルトの名無しさん2006/02/11(土) 09:16:16
早朝から速攻で反応してる子の方がつまらない気がする
0462デフォルトの名無しさん2006/02/11(土) 15:41:01
>>439
両方問題ない
0463デフォルトの名無しさん2006/02/11(土) 15:45:04
XPは言葉を濁してるが次のOSから完全にサポート外だったよな
新規は.Netにしてるよ
0464デフォルトの名無しさん2006/02/11(土) 15:47:13
http://www.microsoft.com/japan/msdn/vs_previous/VSTUDIO/techinfo/toolos.htm
0465デフォルトの名無しさん2006/02/11(土) 15:53:10
ご注意:この一覧は全て開発ツール自体の動作に関する情報であり、
以下の開発ツールを使用してお客様が開発されたアプリケーションの
対応に関するものではありません。これらの開発ツールを使用して
開発されたアプリケーションは、全てお客様の責任において
必要な環境下でテストしていただく必要があります。
お客様の開発されたアプリケーションの動作に関して、

弊社では 一 切 の 保 証 は い た し ま せ ん

ので、あらかじめご了承ください。

何度繰り返すんだこの話題は
0466デフォルトの名無しさん2006/02/11(土) 15:57:35
人のつくったものは知らないよ
という極めて当然の話をしているのでしょ。

そもそも延長保守契約していない人にとっては
2000で開発してようが保守は受けられないのだけど。
0467デフォルトの名無しさん2006/02/11(土) 15:59:14
両方対応しているか否かの話題じゃなかったのか
0468デフォルトの名無しさん2006/02/11(土) 16:06:40
リモートデスクトップおよびユーザーの簡易切り替えは除きます。
0469デフォルトの名無しさん2006/02/11(土) 16:07:16
うんこは寝て食えってことだろ?
0470デフォルトの名無しさん2006/02/11(土) 16:12:07
開発ツールの動作には実行ファイルを作ることもあるから
それはできる
でもリモートデスクトップとユーザーの簡易切り替えは除くよ
と読める。
0471デフォルトの名無しさん2006/02/11(土) 16:16:15
XPにVB6はインストールしないし、開発もしないし、セットアップも作成しない。
0472デフォルトの名無しさん2006/02/11(土) 16:17:42
>>470
”それ”ってなに?
0473デフォルトの名無しさん2006/02/11(土) 16:20:43
ttp://www5.airnet.ne.jp/init/vb/level1/level1001.html
0474デフォルトの名無しさん2006/02/11(土) 16:20:58
IT
0475デフォルトの名無しさん2006/02/11(土) 16:23:53
>>472
流れから言えば直前の>>469
0476デフォルトの名無しさん2006/02/11(土) 16:27:33
VB6の互換性の問題はディストリビューションウイザードに関係してるところがほとんどだと思うけどね。
これで作ったインストーラは開発環境のActiveXを適当に持ち出して、
容赦なく旧バージョンで上書きしてしまう。
同じActiveXの新バージョンで動いてる別のアプリが動かなくなったり、
unicode版のATL.DLLをwin9xにインストールしちゃって動かね〜になったりって事もあった。
0477デフォルトの名無しさん2006/02/11(土) 16:41:20
>>476
開発環境と全く同じActiveXで運用しなきゃ、テストとかの意味ないじゃん。
0478デフォルトの名無しさん2006/02/11(土) 16:42:37
6ではVSIしか使ったこと無いな
5の時は使ってたけど、2000なんて無かった時代・・・
0479デフォルトの名無しさん2006/02/11(土) 16:43:13
>>476
いやもうお前大変だな
0480デフォルトの名無しさん2006/02/11(土) 16:44:38
VBでATL.DLLをどうやって使うの?
0481デフォルトの名無しさん2006/02/11(土) 16:47:15
たしかにw VBの話じゃなさげだね。
0482デフォルトの名無しさん2006/02/11(土) 16:51:10
>>478
VSIでもディストリビューションウイザードが使われているのでは?
インストーラの動作はもちろん違うけど、
ディストリビューションウイザードがないとVSI動かなかった記憶
0483デフォルトの名無しさん2006/02/11(土) 16:52:36
つかわれてねーよw
0484デフォルトの名無しさん2006/02/11(土) 16:54:56
>>480
VC++ + ATLで作ったActiveXを含めると一緒に配布されてたのだと思う。
これは同じ名前でUnicode版とAnsi版があるのですよ。
0485デフォルトの名無しさん2006/02/11(土) 16:55:18
>>483
ディストリビューションウイザードなしで動くの?
0486デフォルトの名無しさん2006/02/11(土) 16:56:10
>>485
そのくらいは自分で調べようや
04874852006/02/11(土) 16:56:28
VB6のインストーラをつくるときに限った話でね
0488デフォルトの名無しさん2006/02/11(土) 16:59:02
>>486
うごかねーだろってこと
0489デフォルトの名無しさん2006/02/11(土) 17:01:30
>>488
なにが?
0490デフォルトの名無しさん2006/02/11(土) 17:02:16
ttp://dobon.net/vb/installer/installer2-2.html
>ディストリビューションウィザードがインストールされていないとVB関連の機能は使えないようです。

0491デフォルトの名無しさん2006/02/11(土) 17:02:51
っていうか、ディストリビューションウイザードは
Windows Installerと違って、OSのコンポーネントじゃなくて
単一のアプリだし。しかもVB製でソースも付属してる。

ディストリビューションウイザードのバグで
2バイト文字ユーザー名にインストールできないから
ソース修正しろって話しらない?
0492デフォルトの名無しさん2006/02/11(土) 17:04:16
>>491
それは知らないけど、490の通りうごかない。
0493デフォルトの名無しさん2006/02/11(土) 17:05:15
VSI( ver1 と 1.1 )は使い方がわからなくて結局使わなかった。
作業ディレクトリの設定の方法がわからなかったり、
データファイルなどを自動修復の対象からはずす方法がわからなかったりで。
結局Orcaがいるとか言う話だったけど、よくわからなかったのでそのまま放置しとりました。
0494デフォルトの名無しさん2006/02/11(土) 17:06:15
>>490
なんか勘違いしているのだろうね。

そもそもディストリビューションウィザードは
インストールするものじゃないから。
っていうか何をどうやってインストールするのかと。
0495デフォルトの名無しさん2006/02/11(土) 17:16:04
Windows Installer が事前に入ってないと動かないという話と誤解してる予感。
0496デフォルトの名無しさん2006/02/11(土) 17:17:15
そこまで言うなら
まあ、いいや。
0497デフォルトの名無しさん2006/02/11(土) 17:38:10
まあいいやといいつつ確かめちゃったよ。(改行は適当にいれた)

---------------------------
Microsoft Development Environment
---------------------------
プロジェクト出力を追加できません。

ディストリビューション ウィザードが見つかりません。 
Visual Studio Installer は Visual Basic 
プロジェクトの依存関係を算定するために
 Microsoft Visual Basic ディストリビューション ウィザードを使用します。
---------------------------
OK   
---------------------------
04984972006/02/11(土) 17:39:17
環境によると思うけど、この下のファイルがないとそのメッセージが出る
C:\Program Files\Microsoft Visual Studio\VB98\Wizards\PDWizard
0499デフォルトの名無しさん2006/02/11(土) 17:44:44
その事がVSIを使うにあたって、ユーザが問題になる事があるの?
0500デフォルトの名無しさん2006/02/11(土) 17:47:58
そんなことはだれも言っていないかと。。

情報をお伝えしたまでです。
0501デフォルトの名無しさん2006/02/11(土) 17:48:53
>>499
逆切れですか?
0502デフォルトの名無しさん2006/02/11(土) 17:50:54
つまりVSI自体を動かすのにディストリビューション
ウィザードが必要なのであって、
VSI使って作られた配布パッケージを使用するときには、
ディストリビューションウィザードは必要ないということだな。
何の問題もなし。
0503デフォルトの名無しさん2006/02/11(土) 17:51:12
小力のネタかよ
0504デフォルトの名無しさん2006/02/11(土) 17:52:54
>>502
482で最初から指摘の通りだが。
0505デフォルトの名無しさん2006/02/11(土) 17:54:03
何の意味があったんだ?この流れ。
0506デフォルトの名無しさん2006/02/11(土) 17:55:29
>>469ってことか
0507デフォルトの名無しさん2006/02/11(土) 17:56:07
ディストリビューションウィザードをあえて消してる奴の話されてもなー
0508デフォルトの名無しさん2006/02/11(土) 17:57:41
開発ツールの動作には実行ファイルを作ることもあるから
うんこは寝て食え
0509デフォルトの名無しさん2006/02/11(土) 18:09:10
スカトロ趣味はない。
0510デフォルトの名無しさん2006/02/11(土) 21:25:04
風説の流布
05114532006/02/11(土) 22:00:25
>>454
ありがとう
■ このスレッドは過去ログ倉庫に格納されています