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

(*´д`*)アハァ… VB初心者質問スレ Part22

■ このスレッドは過去ログ倉庫に格納されています
0001HTML化チェック済みNGNG

  Part12 http://pc3.2ch.net/tech/kako/1026/10266/1026642565.html
  Part13 http://pc3.2ch.net/tech/kako/1029/10292/1029241786.html
  Part14 http://pc3.2ch.net/tech/kako/1030/10309/1030947162.html
  Part15 http://pc3.2ch.net/tech/kako/1032/10327/1032706491.html
  Part16 http://pc3.2ch.net/tech/kako/1034/10343/1034302532.html
  Part17 http://pc3.2ch.net/tech/kako/1036/10361/1036154952.html
  Part18 http://pc3.2ch.net/tech/kako/1038/10381/1038103769.html
  Part19 http://pc3.2ch.net/tech/kako/1039/10398/1039859691.html
  Part20 http://pc2.2ch.net/tech/kako/1041/10418/1041879465.html
  Part21 http://pc2.2ch.net/test/read.cgi/tech/1044028945/

VB.net関連スレ
【老若】VB.net質問スレ【男女】 (Part2)
http://pc2.2ch.net/test/read.cgi/tech/1043629429/

心得
壱.質問する前に過去ログにも目を通してみる。
弐.質問する前に MSDN などで調べてみる。
参.VBScript もこのスレでOK。
四.インストーラーなどの質問もOK。
五.下ネタもたまにならOK。
0794デフォルトの名無しさんNGNG
>>792
キャレット
0795デフォルトの名無しさんNGNG
>>793
>APIはC言語から使うことを前提に設計されている。
じゃあWin16がCの標準でないPascal呼出規約を使ってた理由は?

これに答えられずに>>793の様なことをほざいている場合、君は知ったかだよ。
0796デフォルトの名無しさんNGNG
>>793
GetProcAddress() の引数と C の関数名には何ら関係が無いと思ってたけど。
0797デフォルトの名無しさんNGNG
>791
ある。C以外の処理系のリンカが#を含めないかどうか言い切れなかったんでね。
まぁこの場合、APIの話しだから、あえてCの.. は外しても良かったかも知れんが...

0798792NGNG
>>794
有難うございます。
0799デフォルトの名無しさんNGNG
>>789
PATが何でできているかわからないけど、テキストボックスが相手なら、
ウィンドウハンドルを取得してWM_SETTEXT を投げればいいんじゃないかな。
0800デフォルトの名無しさんNGNG
>>794
”カーソル”もしくは”ピコピコの”だよ
0801デフォルトの名無しさんNGNG
>>795
そっちの方がメモリやディスク容量を食わないからだよ。
0802デフォルトの名無しさんNGNG
>>800
前者:ちょっとパソコン使える人
後者:バカ

なお、どちらもWindowsプログラムを行うものとしては不合格。
0803デフォルトの名無しさんNGNG
>>801
それだとどうとでも取れる。詳しく頼む。
0804デフォルトの名無しさんNGNG
>>803
スタックと言えば分かるかな?
0805デフォルトの名無しさんNGNG
>>804
「スタック」だけでは説明になってないのは分かるよな。

両者ともスタックを使用する。
0806デフォルトの名無しさんNGNG
>>805
俺だけが答えるのはしゃくだから、
C呼出規約とPascal呼出規約のスタックの処理の違いを述べよ。
調べれば分かるはずだ。
0807デフォルトの名無しさんNGNG
いつまでもスレ違いな話題を続けるな。
0808デフォルトの名無しさんNGNG
>>806
いや、知ってて絡んでるんだが。(藁

君を試してるってとこだ。
0809デフォルトの名無しさんNGNG
>>808
教えて君必死だな(藁
0810デフォルトの名無しさんNGNG
>>808
分かってて遊んでるんだが(藁
どっかからコピペすることくらいできるだろ。
0811デフォルトの名無しさんNGNG
>知らないんですね。無理しなくて良いですよ。

ほう、そう来たか。

要はPUSHとPOPがどこで行われるかってのが重要なんだよ。

と、先読みレス。
0812デフォルトの名無しさんNGNG
ぶっちゃけた話、バイナリエディタでエントリ名を書き換えて、"#" で始まる
API を作ることは可能。
そいつを呼び出す事も可能。

ただ、先頭に "#" をつけると序数として判断されてしまう仕様の VB からは
呼び出すのは無理ぽ。

とにかく、>>790 >>793 >>797 が DQN であることはわかった。
0813デフォルトの名無しさんNGNG
>>809-810
相手がDQNだと確信し、自作自演で自分の優位性を確固たる物にしようとした。
>>811
先読みキャッシュ(藁レスが相手を直撃

で、ぐぅの音もでなくなったのか。ワラタ
0814デフォルトの名無しさんNGNG
>>812
呼び出せるって言ったってGetProcAddressを使う方法だろ。
呼び出せるのに#を使ってないのがC言語で使うために
設計されているいい証拠じゃないか。それにMSDNにも次のような文がある。
> 通常、API は Windows アプリケーションを作成する
> C/C++ プログラマ用に記述されていますが、

> とにかく、>>790 >>793 >>797 が DQN であることはわかった。
まず最初に己がDQNであることを疑うんだな。

>>813
おまえもウザイ。
> >>809-810
> 相手がDQNだと確信し、自作自演で自分の優位性を確固たる物にしようとした。
だれも自作自演してねーよ。

先読みキャッシュ? あれだけヒントが出てれば誰だって分かるだろ。
他人のヒントをまって、さも始めからわかっていたような顔をするな。
自分用語作って悦になんなよ。ホント春は変な奴が多いな。
0815デフォルトの名無しさんNGNG
おまいらそろそろSTOPしとけ。
0816デフォルトの名無しさんNGNG
たびたびすまんですが質問です。
VB6でACCESSのMDBを使ってます。

ワークテーブルにレコードを挿入し、それをFlexGridで表示する、という画面を
作ったのですが、いざ実行してみると
ワークテーブルにレコードができる前に画面表示が行われてしまい、ADOの
抽出件数0件になってしまいます。
画面表示に行く前にmsgbox出してしばらく待つとレコードができててうまく動く、という次第。

レコードができるまで処理をとめる方法ってないんでしょうか?
このままでは、ループでワークテーブルの件数を監視し続けるしか……
0817デフォルトの名無しさんNGNG
>>814
> 呼び出せるって言ったってGetProcAddressを使う方法だろ。
> 呼び出せるのに#を使ってないのがC言語で使うために
> 設計されているいい証拠じゃないか。それにMSDNにも次のような文がある。

GetProcAddress() を使う以外に API を理由する手段があるのか?
まさか PE のローダーが GetProcAddress() を使ってないとでも言うのか?
API 名と C での関数名を同じにしなければならない理由があるのか?
例えば MoveMemory() なんてものはなく実際には memmove() または
RtlMoveMemory() が呼ばれるって知ってるか?

> まず最初に己がDQNであることを疑うんだな。

オマエモナー
0818デフォルトの名無しさんNGNG
> それにMSDNにも次のような文がある。
> > 通常、API は Windows アプリケーションを作成する
> > C/C++ プログラマ用に記述されていますが、

「通常」 って書いてあるだろ。>>781 が通常の話じゃない。
話を勝手に全般化するな。
0819デフォルトの名無しさんNGNG
おにぎりは 3 つ、具は梅干、しゃけ、たらこにすること。
0820デフォルトの名無しさんNGNG
>>816
ADOだとままあることなんだけど、「これ」といった対応策はないんだよね。
ループで待機するってのも、ひとつの解決策だと思うよ。
もしくは、クエリーを投げた後に、コネクションを閉じてみるなんてのはどうだろう?
0821デフォルトの名無しさんNGNG
>>817
>例えば MoveMemory() なんてものはなく実際には memmove() または
>RtlMoveMemory() が呼ばれるって知ってるか?

ヘルプに書いてあることでいばってもなぁ。
そんなことよりRtlの意味から説明してくれや、な。
0822デフォルトの名無しさんNGNG
>>818
要点は、787が言ってる通りだろ。
C/C++向けに設計されている点に変わりはないと思うが。
0823デフォルトの名無しさんNGNG
>>822
この場合の 「C/C++向けに設計されている」 いうのは、ポインタとかゼロ終端
文字列とかコールバックとかそういう機能面での話であって、リンクの方法の
話ではないんでは?
0824デフォルトの名無しさんNGNG
>>821
Rtl: Run-Time Library。以上。
0825デフォルトの名無しさんNGNG
例が悪いような。
MessageBoxAとか出しとけばいいのに。
0826デフォルトの名無しさんNGNG
>>822
要点なんかどうでもよく、>>790を徹底的に叩きたいだけかと。
0827デフォルトの名無しさんNGNG
ここまでの話題をまとめると

  ∧_∧
 ( ´∀`)< ぬるぽ
08281 ◆ExGQrDul2E NGNG
あるファイルをいったんメモリに格納して、
そのファイルをメモリから呼び出すにはどうすればいいの?
音飛びさせたくないマルティメディアファイルなんかはディスクアクセスでなくメモリアクセスを行いたい。
08291 ◆ExGQrDul2E NGNG
VBでやるには・・・
0830ひきプロNGNG
dim buffer() as byte
redim buffer(filelen(filename))
open "file" for binary as #1
  get #1,,buffer
close #1

API呼ぶ時はVerPtr(buffer)でポインタを渡す
0831ひきプロNGNG
間違えた、VarPtrだった…
08321 ◆ExGQrDul2E NGNG
>>830-831サンクス
むっ!オレがコードを理解するのは難しいが、
とにかくVBでメモリアクセスできるということが伝わってきた。
0833デフォルトの名無しさんNGNG
>>832
つぅか、

ファイルサイズ分のメモリを確保。ファイル一気書き。読む。

だけじゃん。どうでも良いけど300MBのファイルとかどうするつもりなんだろう・・・
08341 ◆ExGQrDul2E NGNG
>>833
ハードディスクにスワップした分はあきらめる。
08351 ◆ExGQrDul2E NGNG
VBでアプリを作って以下のような状態になっているとする。
---------------------
\CG(フォルダ)
a.vbp
a.frm
a.bas
a.exe
----------------
ユーザにソフトを配布しようと思いディストリビューションウィザードを使うが、
ディストリではフォルダを読み込むことができないためCGフォルダが配布できない。
フォルダを含んだインストーラを作るときはどうしてる?
0836ひきプロNGNG
インストーラで配布する必要ないと思います。
08371 ◆ExGQrDul2E NGNG
>>836
ユーザのパソコンにVBランタイムが無いときは、
ランタイムの配布と、実行ファイルの配布の2段階になっちゃうでしょ。
だからインストーラで、ランタイムの配布と実行ファイルのセットアップを一気に行いたい。
0838ひきプロNGNG
Windows95でもない限りランタイムが入ってない
ことはないでしょう。フォントが文字化けする時は
明示的にMSゴシックを指定すればいいだけだし
08391 ◆ExGQrDul2E NGNG
>>838
まあ、自作のocxなどの配布も含めた話になるとやはりシステムに必要なファイルをセットアップする作業と、
任意のフォルダに本体実行ファイルをセットアップする二段階になってしまう。
VBではできない、または、フォルダをセットアップするためのユーティリティが発売されていない、
という結論でよい?
0840ひきプロNGNG
自作のOCXはシステムフォルダに入れないでください。
アプリと同じフォルダに入ってれば使えるし。
>という結論でよい?
ダメ
08411 ◆ExGQrDul2E NGNG
>>840
ocxは例えばのはなしで、とにかくシステムにdllを別途登録しないとVBアプリが動かないことは多々あるし。
>ダメ
ということはなにかフォルダをsetup.exeや.cabファイルに含ませるための方法があるということやね。どうやるの?
0842デフォルトの名無しさんNGNG
プログラムがフォルダを作る。
08431 ◆ExGQrDul2E NGNG
>>842
それは今までやってたが、今さっきsetup.exeで方法がわかったのでやりかたをまとめてみる。
これにより、ランタイム&ソフト本体のexeファイル&ソフト本体が扱うデータファイルやフォルダ
を一回でインストールできることになり、
VBを市販の製品用のプログラミングツールとして活用できることに成功した。
ランタイムのセットアップとその他のファイルの別配布をやっているようじゃいつまでたってもフリーソフトや固定客用のアプリしかつくれないものね。
08441 ◆ExGQrDul2E NGNG
自分であみだした方法ゆえ、説明文を書くのも時間がかかる。
長らくお待ちを。
08451 ◆ExGQrDul2E NGNG
自己流ゆえ、これを試して何かが起こっても保障はしない。
0846デフォルトの名無しさんNGNG
'スレ立て日を計算
Dim dteBuilt As Date
dteBuilt = DateAdd("s", 1046354784, #1/1/1970 9:00:00 AM#)
Debug.Print dteBuilt
0847デフォルトの名無しさんNGNG
ディストリビューションウィザードには
 「ファイルの追加」( .xlsや.ini など必要ファイルを登録する)
機能があり、作成されたSetup.lst は
 「設定パスを手書きできる」
んであるわけで
 File10=@CGのファイル.jpg,$(AppPath)\CG,,,7/3/00 3:00:32 PM,49076,0.0.0.0
などと変更すると設定するファイルの置き場所が変わったり・・
( ´〜`).。o~
08481 ◆ExGQrDul2E NGNG
>>846
オレもひろゆきの発言を元にそれを書いたことがある。
>>847
オレもそれについての初心者向け解説文を書いてみた。
-----------------------
開発時のファイル構成が次のようになっているとする。
-----------------------
\File\temp.txt(データファイル)
Form1.frm
Project1.vbp
Project1.exe(コンパイルして作成した実行ファイル)
-----------------------------
今回の目的は\File\temp.txtをインストーラに含ませて、
そのインストーラ(setup.exe)が.txtファイルを
セットアップ先のフォルダの中の\Fileフォルダにインストールすることだ。

・インストーラの作成
ディストリビューションウィザードを起動して、
ディストリビューション ウィザード - 含まれるファイル
というメニューまで進んだら追加ボタンを押して
\File\temp.txt
を追加する。
ウィザードを進めて完了ボタンを押すと、
08491 ◆ExGQrDul2E NGNG
---------------------
Project1.CAB
setup.exe
SETUP.LST
---------------------
というファイルが作成される。
このsetup.exeがインストーラだ。
.CABファイルには配布用ファイルが格納されている。
今setup.exeを実行すると
\Program Files\Project1フォルダの中に、
Project1.exe
ST6UNST.LOG
temp.txt
がセットアップされる。
注目すべきは、
temp.txtは開発環境時は
\Fileフォルダにあったということだ。そしてセットアップ時にも\Fileフォルダに入れたい。
08501 ◆ExGQrDul2E NGNG
それには、
ディストリビューションウィザードが作成した
SETUP.LST
をテキストエディタで開いて編集する。
[Setup1 Files]
[email protected],$(AppPath),,,3/14/03 10:26:12 AM,2,0.0.0.0
[email protected],$(AppPath),,,3/14/03 10:50:26 AM,16384,1.0.0.0
このような場所を探す。
そして、
[Setup1 Files]
[email protected],$(AppPath)\File,,,3/14/03 10:26:12 AM,2,0.0.0.0
[email protected],$(AppPath),,,3/14/03 10:50:26 AM,16384,1.0.0.0
このように編集してみよう。
$(AppPath)
を
(AppPath)\File
にしただけだ。
そしてこの編集結果を上書き保存する。
そのあとsetup.exeを実行すると、セットアップ先のフォルダの中に
\Fileフォルダ
が作成され、そのなかにtemp.txtがあるのを確認できる。
$(AppPath)\あいうえ お\DeepSub
のように日本語フォルダやスペースを含んだフォルダや階層の深いフォルダも指定できた。
08511 その他の方法 ◆ExGQrDul2E NGNG
オリジナルの方法はzipを使った方法だ。
UNZIP32.dll
がフリーソフトなのを生かしてこれをsetupファイルに含ませてインストールし、
アプリケーションをはじめて起動したときにzipファイルを自動解凍して
必要なフォルダやファイルをセットアップする。
0852デフォルトの名無しさんNGNG
カンマCSVファイルの分解について質問です。
カンマで区切られたデータの分解には成功しているのですが、
ダブルクォーテーションマークでくくられている文字列の扱いがうまくいきません。
なんとかうまい方法はないでしょうか?
0853デフォルトの名無しさんNGNG
うち,150ファイル15Mのセットアップを一発で客先PCに設定できるようにしてるんでなぁ
system32の下に入れて共有にしたり,アプリとはまったく別のパスになったり
仕様変更で差分だけインスト・アンインストできるようにしたり
最初んころは訳解らんかったよ(今も完全とはいえん)

>>851
zipファイルの削除はちゃんとおこなっているか
UNZIP32.dllがすでに登録されていた場合にレジストリ二重登録にならないか
UNZIP32.dllは使用後に削除するかしないか,その時レジストリは大丈夫か
くらいはちょっと気になるな。
0854デフォルトの名無しさんNGNG
>>852
デバッグしたら?
0855デフォルトの名無しさんNGNG
>>852
ダブルクォーテーションも文字列になってしまうってことか?
それなら、
String = Mid(String, 2)
String = Left(String, Len(String) - 1)
とでもすりゃぁ良いのでは?
08561 ◆ExGQrDul2E NGNG
>>853
もちろんUNZIP32.dllが相手のパソコンにすでにあるかどうかのチェックも行っているし、
Windowsのバージョンの違いによる
system
system32
のどちらを使うか、という問題にも対処したあるからだいじょうぶ。
UNZIP32.dllを共有ファイルとして使用するかどうかの設定もバッチシ。
08571 ◆ExGQrDul2E NGNG
Windows9Xだとsystemフォルダーを使い、NTアーキテクチャだとsystem32にUNZIP32.dllをコピーする。
08581 ◆ExGQrDul2E NGNG
UNZIP32.dllを解凍目的(インストール目的)に使うだけならレジストリ登録とかもいらないからレジストリについて心配する必要は無い。
0859デフォルトの名無しさんNGNG
とりあえずNGワード入れといた
ExGQrDul2E
08601 ◆ExGQrDul2E NGNG
>>859
死ね
0861852NGNG
>>855
すいません。ちょっと言葉が足りなかったようです。
abc,"123,456,789" というCSVデータがあったとして、そのままカンマ区切りを
してしまうと、abc "123 456 789" というデータになってしまうのです。
"でくくられているところのカンマで区切らないやり方がどうもうまくいきません。
なんとかならないでしょうか?
0862デフォルトの名無しさんNGNG
>>861
今どうやってるかによるけど、
Wクオーテーション内かどうかのフラグを立てるだけですむのでは?
0863デフォルトの名無しさんNGNG
>>861
べたなやり方だけど、頭から1文字ずつ取っていって、
”があったらフラグON、次の”でOFFにして、ロジックで文字列くっつけていけば?
0864デフォルトの名無しさんNGNG
それしかないな。うん
0865デフォルトの名無しさんNGNG
>>861
ダブルクォートを含む文字列データはどうするんだ

と言ってみるテスト。
08661 ◆ExGQrDul2E NGNG
>>861
Windowsでもファイル名で使ってはいけない文字があるように、
CSVでも禁止文字があるだろ。
それはどんな文字だ?
0867デフォルトの名無しさんNGNG
>ExGQrDul2E
あのさ、知らない間にVBランタイムなんか入れるようなもん作らないで欲しいんだけど。
最低でもVB製って事だけは明記してくれよ。
DL回避になるから。
0868デフォルトの名無しさんNGNG
>>866
ExGQrDul2Eですか?(w
0869デフォルトの名無しさんNGNG
>>861
まともに処理させたいなら Split() を使ってはいけない。
InStr() を駆使してダブルクォーテーションをきっちり調べろ。

>>865
Excel なんかでは、ダブルクォーテーションで囲われた領域の中でダブルクォーテーション
を 2 つ並べると 1 文字のダブルクォーテーションとして認識される。
0870デフォルトの名無しさんNGNG
>>867
CSV の禁止文字? はつみみです。
0871GIFNGNG
アニメーションGIFをリソースにしたいのですが、これは可能でしょうか?
BMPしかリソースにする方法がわかりません。
またリソースにできるのでしたらどうやって使うのでしょうか?
08721 ◆ExGQrDul2E NGNG
>>867
おまえはVB使いじゃないな。
>>868
どうした?
>>870
そりゃそうだな。今回はオレがバカだった。
08731 ◆ExGQrDul2E NGNG
>>871
WebBrowserコントロールだとGIFがアニメーションする
0874デフォルトの名無しさんNGNG
>>872
おにぎりは 3 つ、具は梅干し、しゃけ、たらこにすること。
08751 ◆ExGQrDul2E NGNG
>>874
バカなオレにもわかるように言ってくれ。
0876デフォルトの名無しさんNGNG
>>872
VB使いだが問答無用でインストールされるのはいやだな。
08771 ◆ExGQrDul2E NGNG
>>876
スパイウェアとかだったらいやだけど、
アプリの動作に必要で、それ以外にはまったく影響しないdllなら勝手にインストールされても気にならないけどな。
そういう人もいるんだなあと参考にする。
08781 ◆ExGQrDul2E NGNG
2chSoft005
エロといえば森川ゆかり

ttp://www.interq.or.jp/guitar/lead/tripod-vip-eria/user-knight/a020.zip

Windowsスタートメニュー → プログラム → 2chSoft のところのショートカットを起動する。
ソフトの削除はエクスプローラではなくコントロールパネル→プログラムの追加と削除から行う。
画像は\Program Files\フォルダに入っている。
今回はjpgでなくpngファイルなので画質劣化無しの高画質だ。

↑UNZIP32.dllを実際に使ったアプリ
0879デフォルトの名無しさんNGNG
ここはあんたの日記帳じゃない。
08801 ◆ExGQrDul2E NGNG
>>879
個人のホームページの掲示板は荒らさないが、2chでは好き勝手発言させてもらっている。
0881デフォルトの名無しさんNGNG
>>877
VB のランタイム等がシステムとかに 「まったく影響しない」 事は立証できるか?
0882デフォルトの名無しさんNGNG
>>880
あんまり図に乗ってるとアク禁依頼が出るんじゃ?
08831 ◆ExGQrDul2E NGNG
>>881
それはマイクロソフトが悪い、ということにする。
08841 ◆ExGQrDul2E NGNG
>>882
実は2chをやめたく、自分では中毒でやめられないからアクセス禁止になるためにわざとあばれている。
08851 ◆ExGQrDul2E NGNG
2chに寿命を、時間を奪われているが、自分からは絶てない。
だからどうかアク禁にしてオレを楽にしてくれ。
0886アシュル ◆adhRKFl5jU NGNG
修行が足りないようだな。
08871 ◆ExGQrDul2E NGNG
>>886
はじめてみるコテハンだな。
オレのソフトのことか?
オレはデスクトップの壁紙変更ソフトも作れるぞ。
0888デフォルトの名無しさんNGNG
見えないけど異常にスレッドが伸びてるなぁ・・・
0889デフォルトの名無しさんNGNG
漏れがランタイムを勝手に入れて欲しくないのは、
VBで作られたソフトなんてロクなもんじゃないから、という理由。
0890デフォルトの名無しさんNGNG
>>884
そう自白すると誰もアク禁依頼出さなくなる罠
0891VB最強・だ・ぞ♪NGNG
ウヒンドウズインストールするときに強制的にランタイム入れるようにすれば良かったのにね
0892デフォルトの名無しさんNGNG
>889

こうなったら意地でもおまえのマシンにVBランタイムぶっこんでやる!
0893デフォルトの名無しさんNGNG
透明度を指定して描画する方法を教えてください。
■ このスレッドは過去ログ倉庫に格納されています