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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトNGNG
ここは Visual Basic 〜6.0 の質問スレです。
質問者は使用しているOS、VBのバージョン、サービスパック
何がしたくでどうしたけどどう困っているのかを明確に書きましょう。

○関連スレッド
VB.NETは別物なので、基本的に質問はこちらへ
VB.NET質問スレ (Part7)
http://pc5.2ch.net/test/read.cgi/tech/1096683017/l50

API関連の質問はこちらへ
Win32API質問箱 Build24
http://pc5.2ch.net/test/read.cgi/tech/1098967135/l50

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/
※「まず自分で調べる」を身につけよう。

心得
一.質問する前に過去ログにも目を通してみる。
二.質問する前に MSDN などで調べてみる。
三.VBScript もこのスレでOK。
四.インストーラーなどの質問もOK。
五.荒らしは相手しない。
六. VB情報募集中。
七.VB.NETの話題できるだけひかえる。

前スレ Part39 http://pc5.2ch.net/test/read.cgi/tech/1099737063/
0153デフォルトの名無しさんNGNG
>>152
いやだ
0154デフォルトの名無しさんNGNG
>>150
そんな面倒くさい事しなくても

sh1.Rows("1:5").Copy Destination:=sh2.Range("A1")

という一文でコピーできるよ。
0155デフォルトの名無しさんNGNG
>>154
おおサンクスです。

>>153悔しい?w
0156デフォルトの名無しさんNGNG
冬厨(←なぜか一発変換)の季節だな
0157デフォルトの名無しさんNGNG
VBで作成したActiveXについてです
クライアントにダウンロードさせたところ、PCの再起動がかかってしまいました
これを防止するようなはできないでしょうか?

環境は
VB 6.0 SP6
です
0158デフォルトの名無しさんNGNG
>>157
えすぱーじゃないんだから、それ聞いて何がわかるって思ってるんだ?
回答が欲しいならもう少し状況をきちんと説明しないとダメだろ。

まあ、とりあえず間違ってリセットボタン押したり、電源ボタン押したり、コンセント抜いてませんか?
0159デフォルトの名無しさんNGNG
すいません配列内でソート機能できないでしょうか?
たとえば構造体aをキーに指定とかcを指定にするといった具合です
typedef zzz
a as long
b as string
c as long
d as string
end type
Dim ppp(1000) as zzz
0160デフォルトの名無しさんNGNG
>>159
ない。
0161159NGNG
>160
もしかしたらと思ってお聞きしましたが無理ですね
レスありがとうございました
0162159NGNG
すいません、また教えてください
設定ファイルにtext.iniを使用していますがEXE自身に設定(記憶)させる
ことはできますでしょうか?
レジストリは使用したくないのですがこのようなことは可能でしょうか?
0163デフォルトの名無しさんNGNG
ほぼ不可能。
EXE自体を書き換えるのは、昔そういうソフトがあったけど・・・という程度。リスキーで高度です。
レジストリを汚したくない感覚、制約などは理解できるが、MSが推奨してるんだから従うのが吉。
そうじゃなければEXEと同一フォルダだけを汚すという制限で現状のINIで十分でしょ。
0164159NGNG
>163
>現状のINIで十分でしょ。
了解です、レスありがとうございました。
0165デフォルトの名無しさんNGNG
そういや最近、自己書き換えなんて滅多に聞かなくなったなぁ…
0166OratorNGNG
マルチストリームファイルにすれば簡単かも。FileSystemObjectで普通に扱えますし。
http://www.microsoft.com/japan/msdn/library/ja/jpdnw2k/htm/ntfs2000.asp
サンプルとしては、こんな感じ。(要NTFS。FAT32では不可)
Private FSO As Object
Private Path As String
Private Sub Form_Load()
  Set FSO = CreateObject("Scripting.FileSystemObject")
  Path = FSO.BuildPath(App.Path, App.EXEName) & ":MyData" '自分自身のフルパス + ":" + 任意の名前
End Sub
Private Sub Form_Unload(Cancel As Integer)
  Set FSO = Nothing
End Sub
Private Sub Command1_Click() '保存
  Const ForWriting As Long = 2&
  With FSO.OpenTextFile(Path, ForWriting, True)
    .Write Text1.Text
    .Close
  End With
End Sub
Private Sub Command2_Click() '読込
  Const ForReading As Long = 1&
  With FSO.OpenTextFile(Path, ForReading, True)
    If .AtEndOfStream Then
      Text1.Text = ""
    Else
      Text1.Text = .ReadAll()
    End If
    .Close
  End With
End Sub
0167デフォルトの名無しさんNGNG
しかしあえて自分自身に情報をRWする合理性ってなに?

偽装目的なら(偽装自体に合理性があるかどうかも興味があるが)
別に自分自身じゃなくてもダミーの.exeでもなんでも用意すりゃいいんだし
ユーザーの改変を避けたい(ただの意地悪じゃねえかこれ?)ってことなら
暗号化でもした方がよほど簡単かつ適切だと思うけど。

そこに山があるから、ってこと?
なら他にもっとチャレンジングかつ有意義な「山」がいくらでもあると思うが。
0168デフォルトの名無しさんNGNG
余計なファイル増やしたくないってことでしょ。
0169デフォルトの名無しさんNGNG
>>167
梅子に聞け。
0170デフォルトの名無しさんNGNG
正規表現の問題かも知れませんが、RegExpで
タグ内の文字列を取得するとき、改行が含まれていると、取得できません。

検索キー <hoge>(.*)</hoge>

<hoge>ogeoge</hoge> の時は取得できる。

<hoge>oge
oge</hoge> こういうときは駄目。

MultiLine を Trueにしているのですが…判る人いますか。
VB6.0 SP5でVBscript5.5をつかってます。
0171デフォルトの名無しさんNGNG
>>170
MultiLineは全然関係ない。
たいていの場合、改行コードを全削除してから検索してると思う。
0172デフォルトの名無しさんNGNG
>171
平然とウソをつくなよ。「たいてい」の範囲を明確にしろ。
かなり狭いだろ。
0173デフォルトの名無しさんNGNG
>>172
ウソだという反証を示せばすむ話だ。
0174デフォルトの名無しさんNGNG
textboxなら改行コード削除とかされなかった記憶が
0175デフォルトの名無しさんNGNG
>>174
だから何?
0176デフォルトの名無しさんNGNG
>173
その前に君の示す証拠はどれ?
0177>>170NGNG
ありゃ、荒れちゃってすみません。

汎用性を持たせて作りたかったんだけど、良くわからなかったので、決め打ちで検索するようにしました。 
ありがとうございます。
0178デフォルトの名無しさんNGNG
ちょっと質問なのですが
 ・VB6.0で、音声通話
を実現したいと思っています。
DirectPlayVoice等も選択肢にはあるのですが、出来れば、
 ・既存ソフトをコマンドラインから制御
 ・ActiveXコントロールを貼り付けるだけでOK
程度で実現できるフリーのものが良いのですが、そういったものはありますでしょうか?
 
0179デフォルトの名無しさんNGNG
メニューのイベントで質問があるのですが、
クリック以外のメッセージを拾うには
サブクラス化とかそういう手段しかないのでしょうか?
フォーカスを失った時にちょっとゴニョゴニョやりたいのですが。
0180デフォルトの名無しさんNGNG
すみません教えてください。
フォルダを開くダイアログを表示させたいです。
※『ファイルを開く』ではないです
VB5を使用しています。お願いいたします。
0181デフォルトの名無しさんNGNG
>180
SHBrowseForFolderでググればサンプルが山ほど見つかるよ。
0182デフォルトの名無しさんNGNG
181様
ありがとうございました。
0183デフォルトの名無しさんNGNG
いえいえ、私もここで教えてもらったことなんで。
0184デフォルトの名無しさんNGNG
使用OS WindowsXP
VBVer. VB6.30 SP6

始めまして、うまく作れない処理がありましてご質問に参りました。

現在ActiveXEXEと標準EXEの組み合わせでクライアント・サーバシステムを開発しております。
1つのActiveXEXEを常駐させ、他の標準EXEからそのクラスをインスタンスし使用する、と云うものなのですが、
実際に動かすと標準EXEでインスタンスする度にプロセス上に新しいActiveXEXEが立ち上がり、
ActiveXEXE内標準モジュールのグローバル変数見ようとすると、当然ながらそれぞれが全く同期が取れておりません。

"標準モジュール"・"共有"・"ActiveX"・"常駐"と云ったキーワードで検索してみたのですが、
解決法を見つける事は出来ませんでした。
どのようにすれば上記の不具合を解消出来ますでしょうか。
宜しくお願い致します。
0185デフォルトの名無しさんNGNG
それは不具合ではありません
0186デフォルトの名無しさんNGNG
>>185
すみません、書き方が悪かったです。
求める仕様を実現出来ていない、ですね。
0187デフォルトの名無しさんNGNG
Mutexとか色々でやったら?
0188デフォルトの名無しさんNGNG
>187
てっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっ
っっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっっ
0189デフォルトの名無しさんNGNG
>187
きとうなアドバイスですなー
0190デフォルトの名無しさんNGNG
>185
どうして?
0191デフォルトの名無しさんNGNG
>189
どうして?
0192デフォルトの名無しさんNGNG
>191
質問者のレベルからして、「色々」をより具体的に書いて
あげないとダメそうだから。
0193デフォルトの名無しさんNGNG
>190
不具合だよな。
0194デフォルトの名無しさんNGNG
>185
不具合かどうかを判断するためには何か判断基準があるはず。
君の考えを聞かせてほしい。
0195デフォルトの名無しさんNGNG
>192
質問者のレベルを判断するたねには何か判断基準があるはず。
何故君はてきとうだと判断したのか聞かせてほしい。
0196デフォルトの名無しさんNGNG
VBの不具合ってわけじゃ無いだろ
0197デフォルトの名無しさんNGNG
>195
そうつっかかるなよ。マジで気に障っちゃったの?ごめんね。
0198デフォルトの名無しさんNGNG
>196
君は誰でどれに対してレスしてるの?
0199デフォルトの名無しさんNGNG
>198
お前は誰だよ
0200184NGNG
すみません、私の所為で荒れてしまって……
不具合と云う云い方は悪いです。
単純にそう作れない私が悪いだけです。
0201デフォルトの名無しさんNGNG
>200
全然悪くねーよ。君が作りたい仕様に対して正しくないのだから
立派な不具合だよ。もし不具合という言い方が悪いと本気で
思っているならそっちを改めるべきだ。
0202デフォルトの名無しさんNGNG
不具合と言っても色々ある。VBの不具合じゃなくても
ソフトウェアの不具合だろ。それも分からずに書いた
>185が基地外なだけ。
0203デフォルトの名無しさんNGNG
具合が悪くなったおじいちゃんを不具合と呼び捨てる。そんな人間に私はなりたい。
0204デフォルトの名無しさんNGNG
>>201
私の中で不具合ってWinとかVBに元からある問題みたいなイメージがあるのですよね。
何はともあれ了解しました。

それで、どなたかヘルプを……
0205デフォルトの名無しさんNGNG
>>204
Mutexじゃダメだったのか?
0206デフォルトの名無しさんNGNG
共有メモリというキーワードも無いとダメだろうな。
0207デフォルトの名無しさんNGNG
ちょっと質問です。
VB6.0で右クリックのメニューを表示する場合
 PopupMenu mnuFile
等すれば良いのは分かったのですが、この、mnuFileの部分は、
できれば、mnuFileの部分を動的に作成したいのですが
メニューエディタで作成しなければならないのでしょうか?
0208デフォルトの名無しさんNGNG
>>207
ttp://www1.harenet.ne.jp/cgi-bin/cgiwrap/unaap/lib/smp.cgi?c1=2&c2=2&function=CreatePopupMenu
のようなモノになるんじゃない?
俺は中身見てないけどな!!!
0209デフォルトの名無しさんNGNG
Mutexで検索して色色と調べてみたのですが、サンプルが見つからず困っています。
ヘルプにもありませんよね。
VB6でMutexって少ないんですか?
0210デフォルトの名無しさんNGNG
>>208
やっぱりサブクラス化しかないですか(´・ω・`)ガンバッテミマツ

情報どもどもなのでした。
0211デフォルトの名無しさんNGNG
Mutexって難しいか?VBの呼び出し的には普通のAPI呼び出しレベルだと思うけど。
そもそものMutexに関してはSDKのヘルプ読んだ?
0212デフォルトの名無しさんNGNG
>>211
CreateMutexって云うAPIだったんですね。
頑張ってみます。
0213デフォルトの名無しさんNGNG
すみません、別途質問をさせて下さい。
予め実行しておいたActiveXEXEのクラスを使ってオブジェクトをインスタンスしたいのですが、
起動する標準EXEはそれを全く使用せずに別のActiveXEXEを開いていってしまいます。
プロパティを弄っているのですが、一向にうまくいきません。
こう云う場合、どのような箇所が何が問題なのでしょうか。
0214デフォルトの名無しさんNGNG
>>213
ActiveXEXEのレジストの問題じゃないのか?
インストールか手動かしらんが、その動作環境でEXEが参照してるActiveXEXEがそっちを向いてる。
0215超初心者NGNG
Integer型の変数にNUllを代入するにはどうすればいいのですか?
要は、途中でStringに変えたいんですがどうすれば??
0216デフォルトの名無しさんNGNG
>>215
おぃ!こら!何がしたいんだ!こら!

まあ、APIにNULLを渡したいなら、数値0を渡す。
DBにNULL値突っ込みたいなら、SQL文でNULLを渡す。連結コントロールの場合は使わないから知らない。
0217超初心者NGNG
>>216
テキストボックスに年を入力させて
それをテキストファイルに書き出すんですが
空欄の場合NULLを書き出したいんです。
それで、年に数字以外の入力された場合エラーにするために
IsNumeric使うんで、Integerで宣言してるんです。
0218デフォルトの名無しさんNGNG
>>217
えーと、TextファイルにおけるEOFについて一般常識を勉強されたほうが・・・。
0219デフォルトの名無しさんNGNG
>215
Integer型は整数(-32,768〜32,767)しか入らない。
なので必要時に、普通にString型の変数へ入れ替えればいいよ。

流れ的には↓

―――――――――――――――――――――――――――
  もしInteger型変数の内容が1未満だったら、

     String型変数に、NULLを入れる
  
  それ以外なら

     String型変数に、Integer型変数の内容をそのまま入れる
―――――――――――――――――――――――――――

↑こんな感じ。
0220超初心者NGNG
みなさんありがとうでつ。
0221超初心者NGNG
もうひとつ質問です。
テキストボックスに、整数以外を入力
されないようにしたいのですがそうすれば?
0222デフォルトの名無しさんNGNG
おぃ!こら!そうすれば?ってなんだ?!こら!
吐いた日本語飲み込むなよこら!

で、KeyPressでやれば。

あと落ち着いて書け。それは初心者とか関係ない。
0223170NGNG
Mutexを駆使して色色やったら、実現出来ました。
荒れる原因を作ってしまってすみません&どうもありがとうございました。
0224デフォルトの名無しさんNGNG
KeyPressはダメだと何度(ry
0225デフォルトの名無しさんNGNG
>>224
質問スレなんだから、そう書くならリンク出すなり、簡単に書くなりしろよ。
0226デフォルトの名無しさんNGNG
フォームの起動位置について質問です
フォームプロパティのStartUpPositionをウィンドウズの規定値にすると
最小化の状態で起動することがありますが、これはどうしてですか?
すべてのプログラムがそうなるのではなく、
Shell関数から起動する
StartUpPositionを3にする
という条件でときどきおこります。
同じようなことがあった方がいましたらアドバイスお願いします
0227超初心者NGNG
スマソ、どうすれば?でした
0228226NGNG
ちなみにWindowStateの値は標準でした
個別でPGを起動すると画面のどこかに表示されます
ですがShell関数から起動するとある特定のPGだけ
最小化の状態で必ず出てきます ただのバグでしょうか///////
0229デフォルトの名無しさんNGNG
はじめまして。VB初日目でつ。

質問なのですが、テキストボックスに表示された文字列の中から
指定した行数番目の文字列を表示させたいのですが、どなたか
ご存知でしたら教えてくださいませ。。。
0230デフォルトの名無しさんNGNG
>>229
Splitで一旦配列に読み込んで、
後はゴニョゴニョと。
0231デフォルトの名無しさんNGNG
Split
0232デフォルトの名無しさんNGNG
>>221
コピペまでブロックするとなると
Changeイベントで蹴飛ばすしかないな。
0233デフォルトの名無しさんNGNG
>>221
イベントで止めようとしても、キーの連打で上手い事通ったりするから注意だね。
業務でやった時はみんなKeyPressとかKeyDownとかKeyUpとかChangeとか組み合わせて絡み合わせてやってたよ。
0234デフォルトの名無しさんNGNG
>>221
自前でコードを書いてもいいんだけど、ActiveXコントロールを使ったほうが
楽だし完成度が高い。
業務ではInputManを使われることが多いと思うけど、個人で使うには高い。
VB6のプロフェッショナルやエンタープライズならマスクエディットコントロールが付いてるから
お試しあれ。
0235デフォルトの名無しさんNGNG
>234
解雇していい?
0236デフォルトの名無しさんNGNG
>>235
君に次にね。
0237デフォルトの名無しさんNGNG
>236
君に次にだって。
0238デフォルトの名無しさんNGNG
htmlファイルを別枠で表示させたいんですが
どのようにすればよいんでしょうか?
0239デフォルトの名無しさんNGNG
すみません、Part31と32の過去ログ持ってる方いらっしゃらないでしょうか・・・?
0240 ◆http/iAti. NGNG
>239
にくちゃんにあるよ。

Part31:
ttp://makimo.to/2ch/pc2_tech/1073/1073732636.html
Part32:
ttp://makimo.to/2ch/pc5_tech/1077/1077216109.html

# JavaScriptをONにして、表示されるまでマターリ待つべし。
0241デフォルトの名無しさんNGNG
>>240
まじありがとうございますっ!
目的のもの見つかりました(つд`)
0242デフォルトの名無しさんNGNG
すみません質問です。

クリスタルレポートで帳票を出力したいのですが
制御はVB側で行いたいのです。(クリスタルレポートは項目を配置するだけ)

クリレポの項目にデータをセットすることは
出来たのですが改ページのコマンドが分かりません。

どなたか分かる方いませんか?

0243困ったNGNG
どうしてもわからない事があります。賢い方教えてください。

VB6で、フォーム上のコントロールをドラッグして、位置を変えたいのです。

コントロールが1つのときは、xxx.drag でうまくいくのですが、複数のとき

どうしてもうまくいきません。なにかいい案、願いします。
0244デフォルトの名無しさんNGNG
>>242
まず、製品版かVBオマケ版か書く。
で、改ページはグループ毎にとかの指定しか出来ないと思った。
なんで、隠しでもいいからグループ化して、そこに適当なデータをいれて制御。

>>243
掴んだら、対象コントロールと別に枠だけのPictureなんかで移動を表現。
マウス移動にあわせてその枠を移動して、離したら移動用枠を消して、掴まれたはずのコントロールをそこに出す。
つまり、各コントロール自体を移動するのではなく、それっぽくみせるだけ。
0245デフォルトの名無しさんNGNG
>>244
後半のアドバイスはちょっと意味不明。まあ質問者の質問の仕方も悪いが。

>>243のようなUIで問題になるのは、

(1)複数のコントロールの選択をどのような操作で実現するか 
(2)選択されているコントロールをどう表現するか

これだけのはず。
選択されているコントロールが規則正しく並んでいる保証はないから
「枠」というのは不適切だし、そもそもあえてコントロールそのものを移動しない
理由があるとは思えない。すくなくとも現在ではね。
0246デフォルトの名無しさんNGNG
質問です。VisualStudio6.0(Jet4.0)
(mdbは古いOffice(Office97)で作ったサンプルです。
そのサンプルではJet3.51でした。)
フォームにグリッドコントロール、データコントロール2個、テキストボックスがあります。
それぞれDataGrid1、Adodc1,Adodc2,Text1という名です。
Adodc2のプロパティにはConnectionStringとレコードソースが設定されています。
同じ内容をAdodc1にコードで設定します。
で、DataGrid1のデータソースをAdodc2にすると問題なく動きますが
Adodc1にするとデータが表示されず、グリッドの枠がデフォルトのまま
表示されるのみです。Refreshしてもうまくいきません。
レコードセットがちゃんと設定されてないのかと思ったのですが
Text1のデータソースをAdodc1にすると、ちゃんと取得していて
指定したデータフィールドを表示させることができます。
だからAdodc1のせいではないようです。

で、データコントロールを介せず、直接レコードセットをグリッドコントロールに
設定してもやはり同様に動きません。

何がいけないのでしょうか?
0247デフォルトの名無しさんNGNG
Excel Createrでエクセル・ブックを作製するようにしたのですが
その次にファイルをオープンする方法がわかりません。
Excel.Applicationは使いたくないのですが・・・。
よろしくお願いします。 m(_ _)m
0248デフォルトの名無しさんNGNG
>>どうもありがとう 
クリレポは製品版です。

普通には改ページは出来ないのですね

記述方法で試してみます。


0249248NGNG
>>244さんに対してです。
0250デフォルトの名無しさんNGNG
>>247
何のために開くの?
ユーザがExcelで編集するためなら
Shell関数か何かで開いてもいいんじゃない。
0251247NGNG
>>250
ありがとうございます。
ユーザーが作ったエクセル・ブックを確認するための機能です。
Shell関数ですね。
調べてきます。
0252何でも略しゃいいと思ってる奴を煮込む俺 ◆1xdL.Dyf.I NGNG
>>248
■ このスレッドは過去ログ倉庫に格納されています