トップページ⇒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。
07571 ◆ExGQrDul2E NGNG
>>756
絶対でなきゃダメ。
App.Path & "\" & "exeと同じディレクトリにあるファイル"
という感じでApp.Pathを使うと便利。
0758デフォルトの名無しさんNGNG
>>755
そもそも表示させないのが筋じゃないのかと。
0759デフォルトの名無しさんNGNG
>>755
ぱっと思いつくのはサブクラス化してメッセージを処理するとか。
閉じるのはEscキーでも送ると閉じるかな
0760デフォルトの名無しさんNGNG
>>755
検出って、メニューが出ている間に書いたコードが実行されるのでつか?
0761デフォルトの名無しさんNGNG
CBTフックを知らない人多いね。
0762デフォルトの名無しさんNGNG
>>757
カレントディレクトリのファイルなら開けるだろ
0763デフォルトの名無しさんNGNG
>>756
アフォ
0764デフォルトの名無しさんNGNG
>754

lenのこと?
これは気にしないで、binaryモードの時は無視されるから。w
まさかこれだけでとてつもなく馬鹿コードっていってるんじゃないよね?w
もしかして自分の馬鹿をさらけだしちゃった?
0765デフォルトの名無しさんNGNG
>>761
めったに使わないような気がする。
俺が見たことがあるのは、「メッセージボックスを任意位置に表示する」という
サンプルコード。(ガリバー著、技術評論社刊「300」シリーズ)
(MsgBoxに限らず、コモンダイアログ等でも可)

# しかし、VB6では動くが、VB.NETにアップグレードしたら動かない罠・・・。
# (どこが間違うとるのか、よーわからん・・・)
0766デフォルトの名無しさんNGNG
>750

自己レス。
だいたいなぞが解けた。
一度読み込むとファイルへの読み込み位置が変わるからと関係ありますね。
0767デフォルトの名無しさんNGNG
既に配布したプログラムに修正をする場合、
どのような手順でしたらよいのでしょうか?
0768デフォルトの名無しさんNGNG
まずは深呼吸してから、質問の仕方を考え直せ。
0769デフォルトの名無しさんNGNG
Webを介してデータベースにアクセスするのってどうやんの?
DB先を変える程度でローカルネットワークで作んのと同じにできないもんかな
0770デフォルトの名無しさんNGNG
>>769
モジュール化しながらしっかり組んでるならUIがFormになるだけでそこだけ書き換えればOKだと思われ。
0771デフォルトの名無しさんNGNG
>769
一般的なVB製C/Sアプリが
 クライアント(VBアプリ)←→サーバ(DB)
という形態であったのに対し、
 クライアント(ブラウザ)←→サーバ(Web/アプリサーバ)←→DB
という形態になる。
現状がどんなくみかたをしているのかにもよるが、すんなり行くとは思えない・・・

現システムをインターネット介して使いたいってだけなら、VPN使う手もあるかも。
0772デフォルトの名無しさんNGNG
>769
IPで繋げば繋がる。
壁やルーターがあったら、ポートを空け、それなりの設定をやる必要がある。
セキュはかなり落ちるぞ。

昔、遊びで家のマシンにMSDE入れて、
会社からエンプラマネージャーで繋いだことがある。
繋がるには繋がったが、家のマシンにはかなりのアッタクの痕跡があった。
0773デフォルトの名無しさんNGNG
>>772
知ったかぶるのも楽じゃないな・・・
0774デフォルトの名無しさんNGNG
外から見えるところにDBがあるというのは、
常識ではありえない仕様だ罠
0775772NGNG
>773
はぁ?何が?
実際にやったこと書いただけなんだがな。
0776デフォルトの名無しさんNGNG
>774

何も考えずにいれたら外部からアクセスできますよ。
この前のネット障害がものがたってるだろ
0777デフォルトの名無しさんNGNG
>>776
普通はそのようにしないための、
設定やファイアウォールやDMZだと思うのだが…。
0778デフォルトの名無しさんNGNG
モザイクのはずし方おしえて
0779デフォルトの名無しさんNGNG
>>778
目を細めろ
0780デフォルトの名無しさんNGNG
>778

↑↑↓↓→←→←AB
0781デフォルトの名無しさんNGNG
http://www.runan.net/program/tips/API/shell32h_SHCreateFolders.shtml

前悩んでた奴いただろ?
0782デフォルトの名無しさんNGNG
超外出
0783デフォルトの名無しさんNGNG
質問でございやす。

アプリ内で処理したCSV形式のテキスト行があり、ファイルに出力してエクセルに渡したいと考えています。
一行処理するたびにファイルに出力していたのですが、Output # だと頭に"がついてしまうため
エクセル側で展開する時にうまくいきません。
そこでバイナリで出力したのですが、今度は複数行分出力すると改行ができません。
複数行が一列に繋がってしまい、これまたうまくいきません

ケツに改行文字をくっつけてやればいいのでしょうか・・?力尽きました。
御教授よろしくお願いします。
0784デフォルトの名無しさんNGNG
>783
Write←×
Print←◎
0785デフォルトの名無しさんNGNG
>>781
>>722
0786デフォルトの名無しさんNGNG
>>781

> Alias "#165"
β版としか思えないような命名やな(w

# 舐めとるんか、MS?
0787デフォルトの名無しさんNGNG
>>786
#ではじまるのは序数指定→非公式APIってことじゃないの?
0788769NGNG
>>770-777
ありがとうございます
一から勉強しますです
0789デフォルトの名無しさんNGNG
競馬投票用ソフトJRA PATをVBで作成した外部アプリから自動入力したい
のですがSendkeyでは最初のフォーカス位置がわからないのでできません。
どうしたらいいでしょうか?
0790デフォルトの名無しさんNGNG
>>786
プッ、Cの関数名に#が使えるわけないじゃん。それ位気付けよ
0791デフォルトの名無しさんNGNG
>>790
C が何か関係あるのか?
0792デフォルトの名無しさん NGNG
テキストボックス中の点滅する縦線を何と言うのですか?
0793デフォルトの名無しさんNGNG
>>791
APIはC言語から使うことを前提に設計されている。
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を共有ファイルとして使用するかどうかの設定もバッチシ。
■ このスレッドは過去ログ倉庫に格納されています