(*´д`*)アハァ… VB初心者質問スレ Part18
1 :
デフォルトの名無しさん :
02/11/24 11:09
3 :
デフォルトの名無しさん :02/11/24 11:15
o ∧_∧ ッパシャ ッパシ ∧_∧┃VBってなんですか? ( )】 ( )ノ 一言おながいします。 / /┘ / / ノ ̄ゝ ノ ̄ゝ
質問です。 INSERT INTO MAMKO したいのですが、アクセスバイオレーションエラーと なってしまいます。 どうやら、実行権限がないようなのですが、Administrator権限を取得する にはどうすればよいのでしょうか? 環境は、 Windos 6.02 Virtual Beginner 1.44 SP42 Mikusosoft DQN Server 2002 です。やらしくおながいします。
ところで、ここはひどいインターネットですね。
11 :
デフォルトの名無しさん :02/11/24 12:10
1<< もつかれ〜〜
>>11 表示された記号と同じキーを押せばいいと言う単純な作業すら出来ないVB厨がいるのはこのスレですか?
質問します。 VB6にてブラウザもどき(IEコンポ等を使うものではない)を作っているのですが CGIからのsetcookieを検知してそのデータを取得するにはどうすればいいのでしょうか。 ちなみにInetコントロールを使って通信を行っています。
>>14 HTTPヘッダに入ってる。
って言うかブラウザ作ると胸を張るのならHTTPのフォーマットくらい勉強してくださいよ。
>>15 マジっすか。
ヘッダの中に入ってたんだ。
ちょっとHTTPのヘッダ一覧みたいなページ探してきますわ。
レスありがとうございました。
>>16 ヘッダ一覧・・・?
って言うか一回自分でソケット張ってどんなメッセージがやりとりされてるか、御政夫間。
20 :
デフォルトの名無しさん :02/11/24 16:00
Winsockでやってみようじゃないかい
データベースとか作って見たりしたら? ソートの違いによる処理速度の違い(データ数の違いも含めて)。 データ数の多い少ないのどこで逆転するかなど。
21 を略すと、作違逆転という事か?
>>19 「はじめてのC」って、アニメのテーマソングだっけ?
(「キテレツ大百科」?)
25 :
デフォルトの名無しさん :02/11/24 20:13
Visual Basic言語シリーズの勉強をはじめようと思うのですが とっかかりにVBScriptから入るのはよいやり方でしょうか?
26 :
デフォルトの名無しさん :02/11/24 20:23
27 :
男性差別反対 :02/11/24 20:31
@13歳以下の男女による御互い合意の性交では、男子だけが罪に訪われる。
A顔に傷が残るような障害が残っても、男性は女性と同等な慰謝料が貰えない。3号下の補償になる。
B男性が裸を見られた時より女が裸を見られた場合の慰謝料は何と10倍 !
C女性の主観的なものまでセクハラとされる。逆は認められない。
D災害等が起こった時の救助は女性・子供が優先され、間に合わない場合、男性は見殺しにされる。
E同じ度合いの犯罪でも女性が死刑になることは殆どない。
F男性に対してのハゲ発言はセクハラとされないのに女性に対してハゲ発言は認められる。
G女の方が長い生きにもかかわらず5年も早く年金が受給できる。
H男が浮気をしたら責任は100%男、女が浮気をしたら男にも責任があるとされる。
I母子手当てはあるが、父子手当てはない。
このスレには男性差別がもっと挙げられています。
http://love.2ch.net/test/read.cgi/gender/1037181667/
まー本人は良かれと思って貼ってるんだろうが、はっきり言って荒らしだよナー。
>>24 ボケなのか、素ボケなのかわからんぞ。
そんなの微妙すぎぃ〜。
>>29 あんた 「そんなの微妙すぎぃ〜」 と言いたかっただけなんちゃうかと小一時間・・・
漏れは限りなく正解に近かった でも、油断は禁物デ〜スと言われた
33 :
デフォルトの名無しさん :02/11/25 11:26
ちと質問。イメージコントロールでイメージのロードを image.picture=loadpicture(C\maydata\1.jpg)とかにしてると 他のPCにデータを移したとき同名フォルダが無いとイメージの読み込みが 出来ないですよね。そこで他のPCに移して、別のフォルダに イメージが入っていても読んでくるような 指定の仕方はどうやるのかどなたかご教授願えますか? ・・・あんま伝わってない文章かも。すいません。
>>33 すまんが、なにが分からないのかがよく分からん・・・。
直接パスを書くから悪いんであって、LoadPictureメソッドに
渡すのを文字型変数にして、その変数の中身を好きなように
書き換えてから渡せばいいだけでしょ。
35 :
デフォルトの名無しさん :02/11/25 11:44
分かりにくい文章ですいません。いや、ホントに。 メソッドに渡す変数の中身が、たとえば人のPCだとわからないわけですが (どこに置かれるか分からないから) その場合変数の中身はどう指定したらいいのですか?
37 :
デフォルトの名無しさん :02/11/25 11:53
補足。 様はインストールできる形に仕上げたはいいけど 画像のパスのせいでインストール先でエラーになってしまう。 なのでどこに画像があっても読んでこれるようなパスの 設定の仕方が知りたい。ということです。
>>37 どこにあってもっていうわけにはいかん。
exeの下に置いて相対パスで書け
39 :
デフォルトの名無しさん :02/11/25 12:01
なるほど。しかし その相対パスで書く場合はどうやって書けばいいのでしょう? 作られた画像フォルダの名前と画像名でするのですか?
>>39 当たり前だ。今度は相対パスの取得はどうするの?と
くるのか? 少しは自分で調べましょう。
41 :
デフォルトの名無しさん :02/11/25 12:42
43 :
デフォルトの名無しさん :02/11/25 12:54
44 :
デフォルトの名無しさん :02/11/25 13:05
すいません、33です。 絶対パスにするにもドライブの指定が必要な気がするのですが。 そこはどうしたらよいのでしょう?調べてもWeb関連の相対パスしか のってなくてわかんないです・・・
>>44 あんたが何をしたいのかがさっぱり分からん。
とりあえずキーワードになりそうな単語並べてやるから、
あとは自分で調べれ。
VB6ユーザーならMSDNぐらい持ってるだろ?
App.Path CurDir ChDrive FileSystemObject
48 :
デフォルトの名無しさん :02/11/25 13:24
49 :
デフォルトの名無しさん :02/11/25 13:25
51 :
デフォルトの名無しさん :02/11/25 13:54
拡張子の関連付けを行ったときアイコンの表示を更新するには? 何らかのメッセージを通知すると思うんですが。。。
52 :
デフォルトの名無しさん :02/11/25 13:59
54 :
デフォルトの名無しさん :02/11/25 16:02
Win98+VB6.0で作成したアプリ。 Win98上では GetOpenFileName API で呼び出すダイアログボックスが開くのに XPだと開かねーーーーっ・・・す。。。 API 宣言方法が違うんでしょうね、きっと。 どう変えたらいいのか、知ってる方いたら教えて欲しいっす。 既出ならしみません。
>>54 手前ではまったく問題ないが
ソース晒したらどうよ
>>55 えっとまず宣言部分が・・・
【定数】
Public Const cdlOFN_ALLOWMULTISELECT As Long = &H200
Public Const cdlOFN_CREATEPROMPT As Long = &H2000
Public Const cdlOFN_ENABLEHOOK As Long = &H20
Public Const cdlOFN_ENABLETEMPLATE As Long = &H40
Public Const cdlOFN_ENABLETEMPLATEHANDLE As Long = &H80
Public Const cdlOFN_EXPLORER As Long = &H80000
Public Const cdlOFN_EXTENSIONDIFFERENT As Long = &H400
Public Const cdlOFN_FILEMUSTEXIST As Long = &H1000
Public Const cdlOFN_HIDEREADONLY As Long = &H4
Public Const cdlOFN_LONGNAMES As Long = &H200000
Public Const cdlOFN_NOCHANGEDIR As Long = &H8
Public Const cdlOFN_NODEREFERENCELINKS As Long = &H100000
Public Const cdlOFN_NOLONGNAMES As Long = &H40000
Public Const cdlOFN_NONETWORKBUTTON As Long = &H20000
Public Const cdlOFN_NOREADONLYRETURN As Long = &H8000
Public Const cdlOFN_NOTESTFILECREATE As Long = &H10000
Public Const cdlOFN_NOVALIDATE As Long = &H100
Public Const cdlOFN_OVERWRITEPROMPT As Long = &H2
Public Const cdlOFN_PATHMUSTEXIST As Long = &H800
Public Const cdlOFN_READONLY As Long = &H1
Public Const cdlOFN_SHAREAWARE As Long = &H4000
Public Const cdlOFN_SHOWHELP As Long = &H10
【構造体】 Type cdlOPENFILENAME lStructSize As Long '構造体のサイズ hWndOwner As Long 'Me.hWnd 親ウィンドウのハンドル(0 のとき表示位置は左上隅) hInstance As Long 'App.hInstance 親ウィンドウのインスタンスハンドル(0 可能) lpstrFilter As String '<ファイルの種類>の設定(各項目をChr(0)で区切る) lpstrCustomFilter As String 'カスタムフィルタの指定 nMaxCustFilter As Long 'カスタムフィルタのバッファサイズ nFilterIndex As Long 'フィルタのインデックス lpstrFile As String 'ファイル名格納用バッファ nMaxFile As Long 'ファイル名格納用バッファのサイズ lpstrFileTitle As String 'フルパス格納用バッファ nMaxFileTitle As Long 'フルパス格納用バッファのサイズ lpstrInitialDir As String '初期ディレクトリの指定 lpstrTitle As String 'タイトルバーの文字列 flags As Long 'cdlOFN_* の論理和 nFileOffset As Integer 'フルパス中のファイル名までのオフセット nFileExtension As Integer '拡張子までのオフセット lpstrDefExt As String 'デフォルトの拡張子 lCustData As Long 'lpfbHookで渡すデータ lpfnHook As Long 'フック関数のポインタ lpTemplateName As String 'ダイアログテンプレート名 End Type
【関数】 Declare Function GetOpenFileName Lib "COMDLG32" Alias "GetOpenFileNameA" (pOpenFileName As cdlOPENFILENAME) As Long
呼び出し部分が・・・ Dim OFNFileName As cdlOPENFILENAME Dim lngRet As Long Dim strFName As String
With OFNFileName .lStructSize = Len(OFNFileName) .hWndOwner = Me.hwnd .hInstance = 0 .lpstrFilter = "テキストファイル (*.txt)" & Chr(0) & "*.txt" & Chr(0) .nFilterIndex = 1& .lpstrCustomFilter = "" .nMaxCustFilter = 0& .lpstrFile = strFileName .nMaxFile = strFILENAME_LEN - 1 .lpstrFileTitle = .lpstrFile .nMaxFileTitle = .nMaxFile .lpstrInitialDir = "" .lpstrTitle = "取り込みたいマスタファイルを選択してください" .flags = cdlOFN_EXPLORER Or cdlOFN_HIDEREADONLY Or cdlOFN_FILEMUSTEXIST .nFileOffset = 0 .nFileExtension = 0 .lpstrDefExt = "txt" .lCustData = 0& .lpfnHook = 0& .lpTemplateName = Me.Caption lngRet = GetOpenFileName(OFNFileName) If lngRet Then strFName = Left(.lpstrFile, InStr(.lpstrFile, vbNullChar) - 1) End If End With
こんな感じなんです。 どっかのサンプルコードぱくったやつなんで普通だと思いますが、 どうなんすかね?
> .lpTemplateName = Me.Caption なんでこんなところに Caption? > .lpstrCustomFilter = "" これも別に要らんだろ。 > .lpstrFile = strFileName これは宣言されていて十分なサイズが確保されてんの?
>>62 できた、できた、できたーーーーっ!!!!
あんたの言うとおりに、指摘されたところ削ったら動いたよ。
一週間も悩んであきらめかけてたのに。
あんたすげーよ。神だよ!
いーや、誰がなんと言おうとあんたは俺にとっての神だ。
ありがとう。
ほんとうにありがとう。
イやっほーーー♪
すみません自己解決しました SHChangeNotifyっての使うのね
>>63 上で
> .lpstrCustomFilter = ""
> これも別に要らんだろ。
と書いたけど、これはあってもなくてもいいみたい。
あと、
> .lpstrFile = strFileName
> .nMaxFile = strFILENAME_LEN - 1
> .lpstrFileTitle = .lpstrFile
> .nMaxFileTitle = .nMaxFile
この部分は、strFileName がパラメータで渡されてくるとすれば
Const MAX_PATH = 260
.lpstrFile = strFileName & String(MAX_PATH, 0)
.nMaxFile = MAX_PATH
.lpstrFileTitle = String(MAX_PATH, 0)
.nMaxFileTitle = MAX_PATH
のように十分な長さの文字列をセットしといた方がいいよ。
(.lpstrFileTitle と .nMaxFileTitle については
両者を未設定の初期値のままにしておいてもいい)
クライアントとサーバがあって、 サーバにAccessデータベース C:\temp.mdbがあるとします。 conn.open "ODBCデータソースネーム","ID","PASS" のようにODBCを通してクライアントからサーバに接続する方法を、 最近流行のOLEDBを使って接続したいのですが、 conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\サーバ名\C:\temp.mdb;" というプログラムでオーケーでしょうか? 2台のコンピュータをまたいでの接続は難しいです。
67 :
デフォルトの名無しさん :02/11/25 20:13
VB6で質問です。 今、アプリケーション自体の戻り値を返すプログラムを作成していて、 終了時に ExitProccess() を使用しているため デバッグモードで実行していても VBごと終了してしまいます・゚・(ノД`)・゚・。 コードの中でデバッグ実行中なのかどうか判定できますか?
>>67 Function CheckRunMode() As Boolean
'VB環境下ならFalse、EXEならTrue
On Error GoTo ErPos
'0除算エラーを起こす
Debug.Print 1 / 0
'EXEなら上のコードでエラーが起きない
'(Debug.PrintがEXEでは削られている為)
CheckRunMode = True
Exit Function
ErPos:
CheckRunMode = False
End Function
こんなのは如何?
邪道っぽいけど。
>>68 ありがd。
今作ってるのがけっこう適当なプログラムなので
拝借させていただきます。
70 :
デフォルトの名無しさん :02/11/25 20:41
mpeg,jpeg,bmp等のヘッダ情報(ピクセル等)を取得する方法を教えて下さい。
私も質問なんですが、 スクリプトで作成されたtxtファイルの中身が、 一行になってしまいます。横スクロールバーが長くなる感じで。 抜き出したい文字列は全て入っていて、それ以外はスペースです。 要するに指定した位置のスペースを消して改行したいんですが どこにどのようなコードを挿入させればいいんでしょうか。
72 :
デフォルトの名無しさん :02/11/25 20:58
>>66 > conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\サーバ名\C:\temp.mdb;"
mdbファイルを共有にしてData SourceにUNCで指定では?
73 :
デフォルトの名無しさん :02/11/25 20:59
>>71 > 要するに指定した位置のスペースを消して改行したいんですが
> どこにどのようなコードを挿入させればいいんでしょうか。
Trim RTrim vbCrLf
>>72 さん
UNCはユニコードですね。
共有ファイル設定は気づきませんでした。ありがとうございました。
>>73 すると、こういうことでしょうか
output = replace(output, " ", vbCrLf)
すみません 初心者なんで。 こうでしたか output = Trim(" ")
>>77 基礎というか「プログラムとは?」位からやり直せ。
79 :
ダウソロード :02/11/25 21:20
>>79 >ユーザーがダウンロードが完了したか
・・・何を?
これだからVB厨未満は・・・。
81 :
ダウソロード :02/11/25 21:26
>>80 何を!?
ダウンロードするファイル全てだってばさ。
拡張子が.exeや.lzh、.zip等のエインクをクリックすればダウンロードしますか?ってなるっしょ。
それで保存とかキャンセルとか選べるわけじゃない。
ユーザーが保存を押したという情報をVBScriptで掴めそうだから聞いてみたのだが・・・
82 :
デフォルトの名無しさん :02/11/25 21:28
1バイト数値を16進で表記させたいんですけど、 Hex()関数では、0F はただの F になってしまいます。 なんか無いですかね。
エインクってなんだよ・・・ いやリンクって打ったらしいがな・・・・・・・ ∧_∧ ∧_∧ (´<_` ) ( ´_ゝ`) / ⌒i / \ | | / / ̄ ̄ ̄ ̄/ | __(__ニつ/ BUF / .| .|____ \/____/ (u ⊃
right("0" & hex(a),2)
>68 >'EXEなら上のコードでエラーが起きない >'(Debug.PrintがEXEでは削られている為) Debug.Print MsgBox("Msg") これをEXEで実行してみそ。 まあ>67の目的は果たせてるみたいだからいいんだけどね。 ただ「エラー発生時に中断」にしていると面倒くさいという罠。 オレならdebug.Assertを利用する。
86 :
デフォルトの名無しさん :02/11/25 23:25
Windows XP Professionalなんですが、 Visual Studio 6.0でVisual Basicをインストールしようと CDのルートのsetup.exeを実行しても、 「問題が発生したため、vs60wiz.exeを終了します。」と出て終了してしまいます。 MSのサポート情報を見て色々と試行錯誤したのですが、 サポート情報に書いてある方法では解決しませんでした。 どなたか解決方法ご存知ありませんか?
>>86 フォーマットしてXP入れなおしてVS入れては?
問題の起こるPCで開発されたプログラムを他の人に配って実行させるつもりですか・・・
>>85 関数が含まれている場合は、Debug.Printも残る。
漏れなら、条件付コンパイル。
>>85 たしかに自分でえらーを埋め込むのはちょっと気持ち悪いから
Assert使うと、こんなかんじかなぁ
Debug.Assert fCheckAppRun(bDebugMode) <> False
If bDebugMode = True Then
Exit Sub
Else
Call ExitProcess(nExitCode)
End If
うーん。。。Debug.Assert で変数に値を入れられる方法ってありますか?
CallByName はクラス追加がちょっとあれだし、memcpy とかかなぁ
>>88 条件つきコンパイルでできる??
#If ○○○ Then
の部分がわからない・・
つーか、プロジェクトプロバティ>コマンドライン引数 を使うとかさぁ。。。
まちがった。もういっこのだ。
93 :
デフォルトの名無しさん :02/11/26 00:51
VB6.0からオラクルに繋いでます オラクルからダイナセットを取得してからソートってできますか? ORDER BYじゃなくて、ダイナセットをソートしたいんです。 また、ダイナセットの中身を検索することはできますか? ダイナセットにレコードを挿入、削除はできますか? お願い致します 間違ってVCスレに書いてしまいました。
>>91 それだとEXE作るときに手で直さないとだよね(多分)
コードで実現できたら、そこでのミスは絶対ありえないかなぁと。
それに、もうすでに10以上使ってるのです・゚・(ノД`)・゚・。
>>93 1つめの質問は、意味がよくわからないけど、
ダイナセットは行単位なので多分無理です。
2つめの質問は、意味が全くわかりません。
3つめはできるけど、あまりやらないです。
SQLでやることのほうが多いと思われます。
ん?何を直さないといけないんだろう コマンドライン引数を公表しないかぎり、ソースは実行されないとおもうんだがなあ
>95 ありがとうございます!!! できるんですね!?行の削除や挿入。 もしよかったら、具体的に教えて頂けないでしょうか?
>96 >94は、>88 >90 >91 ときて >92の「もういっこ」から 「条件付きコンパイル引数」を受けた発言と思われ。 横レススマソ。sage
初心者なんですが、 PictureBoxに画像を貼り付けて、縮小すると 画像内の文字が潰れて全然読めなくなってしまいます。 縮小しても読めるような方法はないでしょうか? お知りの方おられましたらお教え下さい。
既存のtxtファイルの 任意の行の任意の個所を任意の文字に書き換える関数。 どうしたらいいのかわかりません。 誰か助けて、、、
>98 どちらの方法取るにしても、引数のとこを入れるか入れないかの手間かなと 感じるんだけど、、、
>>88 関数が含まれているときっていうのは分かりやすいんだけど、
プロパティが含まれているときもDebug.Printが残るんだよね。
プロパティは結局Property Let/Set/Get=関数になるから。
だからDebug.Printが消えるためには引数が定数かローカル変数かプライベート変数でなければならない。
>>99 画像情報と文字情報を別々に取っておくしか。
あとは、VBにたよらずに他の方法で縮小するとか、
2000以降なら綺麗な縮小方法も可能だったような記憶が
>>100 一行一行よみこんで、書き換えて保存してください。
文字数が同じなら方法もありますが。
Debug に対する操作は実行ファイルにした時には消えるけど、そこに書いた式は 全部残るんじゃないの?
残ってて、良いか悪いかはソフトを作る人or会社の判断なだけだと思いますが。
>103 ありがとうございます。 1行読み込んで、保存。 それに次行を追記、で保存-追記ということですね。 ちなみに文字数が同じ場合ですと、どのような方法が?
>106 文字数というのは正確な書き方ではなかったとおもいます。バイト数ですね。 ・ランダムアクセスモード ・Seek キーワード ・Get ステートメント ・Put ステートメント でできませんかね
元ファイルを読み込み 文字変換を行い テンポラリファイルへ書き出し 元ファイルを削除orリネーム テンポラリファイルをリネーム
ファイルリストボックスに フォルダとファイルが表示されていた場合 人間は黄色いアイコンはフォルダだと認識できますが、 VBでは現在選択されている File1.List(File1.ListIndex) がフォルダなのかファイルなのかは どうやって判別するのでしょうか?
File1.List(File1.ListIndex)ではファイル名しか取ってこれないのでは
そうでした・・・。
112 :
デフォルトの名無しさん :02/11/26 05:36
厨な質問で恐縮ですが・・・。 チェックボタンなどのcaputionに書いた文字なんかは、enableをfalse にすると凹んだ灰色になるけれども、それと同様に、 ラベルに書いた文字を凹ませたりするにはどうするん???
>>112 普通そんな事はすべきじゃないと思うが、ラベルコントロールを 2 つ重ねたら
どうだ?
>112 そういう風に見えるように表示してみては? たとえば、ラベルを二個用意して、FillStileを透明にして、 1ドットづつX,Yをずらし、色を変えて、、、 強調表示やボタンの影とかの色は用意されてますし。
そんな面倒な事するのですか〜・・・。 例えばIEのインターネットオプションの接続ってところを みると、俺はADSLでしかも串を使っていないから「現在の規定値」 ってところがまさにそうなってるんでげすよ。。。VBで言うところの ラベルに書いてると思うんだけど・・・。 めんどくさいのかな・・・
UI的に良くないだろうね。 何せ「入力できない」のに「入力できるんじゃない?」って部分を作ってはダメ。
これはどうやって作っているんだろうという物があったらSpy++という ツールがあります。 メニューのスパイ>ウインドウ検索を出して、ファインダーツールの(+)を 調べたい物の上にドラッグすれば、多少は知ることができます。
118 :
デフォルトの名無しさん :02/11/26 06:37
>>115 つーか、Windows XP でそんな事すると浮きまくるぞ。
VB2 では THREED.VBX というのがあったなー。
120 :
デフォルトの名無しさん :02/11/26 07:12
VBSについての質問なんですが、 特定のファイルの文字コードを変換したいのですが、 どう記述すればよろしいのでしょうか? 例えばEUC→シフト JISみたいな感じで。
インターネットエクスプローラは垂直スクロールバーによりどんどん下の内容を表示させていけますが、 このようにVBのユーザーインターフェイスも画面に入りきらないボタンなどを画面の下のほうに置いておいて スクロールバーを下に動かすとボタンなどのコントロールが出てくるようにしたいのですがどうすればよいのでしょうか?
うっかり名前欄に1と書いてしまいました。すいません。
タブコントロール使え
VBS ってバイナリファイル扱えたっけ?
さっそくタブコントロールについてしらべてみます。
ファイルサイズを求めたものの、 433328282 とか 55743 というのを3ケタごとにカンマで区切って見やすいようにしたいです。おねがいします。
Format
Format でできなかったか?
ケコーン
Formatつかったことないですがチャレンジしてみます
>>124 ひょっとして無理ポ・・・ですかね?
自分は全然わかららないのですが。
文字コード変換を行う ActiveX を作れ!!
Formatで調べたらFormatNumber関数が見つかり、 FormatNumber(1486852) だと 1,486,852.00 になりましたが小数点のケタ数も指定できるとわかり FormatNumber(1486852,0) で無事1,486,852がもとまりました。
フォームにメニューコントロールがある場合に F10を押すとメニューが選択された状態(?)になるのですが、 これを選択されないようにすることはできるのでしょうか?
>>134 あ、ほんとだ、フォーカス移動するね。知らんかった。
とりあえずサブクラス化と言ってみるテスト。
サブクラス化しても何もできんのじゃないか?
>>136 ありゃ。んじゃサブクラス化じゃなくてフックかな。
どっちにしてもちょっと自分でサンプル作る気には
ならんな・・・。誰かそのへん詳しい人よろしこ。
すまん、サブクラス化して WM_SYSKEYDOWN を捕まえればいけそうだ。
やっぱサブクラス化で正解か。 良かった良かった。 とはいえ、そのUIには問題あるんじゃないのか134よ。
そうでもないでしょ。 F10 キーはシステムキーだけど、それに独自のキーを割り当てて使っているアプリ はいくらでもある。
訂正。 ×: 独自のキー ○: 独自の機能
>>139 つーか、そこまでしなくても、
フォームのKeyPreview = True にして、
KeyDownで If KeyCode = vbKeyF10 Then KeyCode = 0
でいけそうな気がする。
でも、「そのUIには問題があると思う」にはハゲシク同意、と言ってみるテスト
ああ、F10 を何かに使いたいんじゃなくて、単にメニューがアクティブになるのを 抑止するだけってならクソだ。
>107 ありがとうございます。ちょっとやってみます。 >108 それは思いついたのですが、もっとシンプルな方法があればなぁと。
>>112 CreateWindow使ったらできたけど、はたしてこれがVBかというと微妙。。
ret = CreateWindowEx(0, "STATIC", "sample", _
WS_CHILD Or WS_VISIBLE Or WS_DISABLED, _
10, 10, 50, 100, Me.hWnd, 0, App.hInstance, 0)
CreateWindow でいいやん・・・
漏れのAPIビューアだと CreateWindowExしか定義されてなひ・・・ WINAPI32.TXT ってアップデートしないのかな。
>89 'True:デバッグモード False:デバッグモードではない Public Function FncIsDebugMode() As Boolean Dim IsDebug As Boolean IsDebug = False Debug.Assert FncReturnTrue(IsDebug) FncIsDebugMode = IsDebug End Function Private Function FncReturnTrue(ByRef IsDebug As Boolean) As Boolean IsDebug = True FncReturnTrue = True End Function
149 :
デフォルトの名無しさん :02/11/26 20:12
偽メッセンジャーなんかだと、フォーム自体を半透明化できるじゃないですか。 あの半透明化ってのはVBでは無理でしょうか。
151 :
デフォルトの名無しさん :02/11/26 20:22
>>149 書き込みボタン押してから、あ、「出来る」だけの回答来るだろうなと
思ったけど、まさにその通りでありがとう。
で、どうやれば良いっすか。
>>151 調べろ。
だけの回答ぐらい予想しろよな。
>>152 サンクス。やる気出た。
出来る限り探してみるよ。
154 :
デフォルトの名無しさん :02/11/26 20:29
2つのデータファイルを1行ずつ比較し、 合致しなかった箇所だけを書き出すプログラムを作りたいのですが、 どのような手順で考えていけばよいでしょうか。 あしがかりだけでも教えていただきたいのですが。
fc.exeを呼び出すとかさ。
行の挿入や削除などの処理も必要なら少々複雑になるから、156が一番手っ取り早いんだけどね・・・ "Diff アルゴリズム"で検索すれば色々あるとおもうY0
>>159 C++やJavaでもウイルスは作成可能。
VBもまともなプログラム言語なんだから当たり前。
161 :
デフォルトの名無しさん :02/11/26 22:05
初心者の範疇にも入らないような質問ですまんのですが、 ボタンを奇数回押すとtrue、偶数回押すとfalseの値を返すには?
>>161 Bool型Flagでもたてれ。
押すごとにTrue、False切り替え。
フォームに一つしかコマンドボタンが無い場合、 Enterキーとスペースキーを押すとCommandX_clickが呼び出されますよね? CommandX_clickを呼び出したくない場合はどうすればいいのでしょうか?
他に方法がありゃいいけど、、、 ・TABストップをFalse ・ダミー用のコマンドボタンを画面外に作成 ・そっちにフォーカスあたえておく
166 :
sakura :02/11/26 22:53
またお邪魔します 教えてください inet1を使ってFTP処理で 送信方法をバイナリ形式に変更したいのですが、 Inet1.Execute , "BINARY" Do While Inet1.StillExecuting DoEvents Loop これでは、下のループをグルグル。。。。 記述に間違いがありますか? よろしくお願いします おわり。
Inet1.Execute , "BINARY"の次の行に行ったということは、 BINARYに変更し終わってるんじゃないの? エラーならエラーイベントおこるだろうし。
どんな状態になっているか、目で見てはいかが? BlackJumboDogなどのプロクシーでも入れて、状態が表示できるように。
うちのMSDNには引数operationの有効なFTP設定値に、BINARYが見当たりませんが?
170 :
デフォルトの名無しさん :02/11/26 23:32
171 :
デフォルトの名無しさん :02/11/26 23:56
コンボボックスに1〜100までの数値をいれて Text1とコンボボックスの数字を足して 結果をText2に表示しようと思い下記のようなものをつくったのですが うまくいきません Text2.Text = Val(Combo1.AddItem) + Val(Text1.Text) どこをどのように変えればよいでしょうか? アドバイスお願いします。
AddItemの使い方を調べれ
173 :
sakura :02/11/27 01:47
みなさん、回答ありがとうございました。 OpenURLを使用して、無事にバイナリでの送信に成功しました。 ありがとうございました。 また、お願いしますね。 おわり。
VB6.0ってC++のSTLにあるような mapクラスみたいなのってありますか?
>>174 Collection Dictionary で足りる?
VB6.0でformにLabelをダイナミックに(iが1なら1個) 作成することは可能でしょうか? もしくはコードでLabelが作れますか?
>>176 Label1(0)を作っておいて、
Call Load(Label1(1))
Label1(1).Visible=True
などとする。
動的にコントロールを作り出す関数もあったはずだが、
今ちょっと名前が出てこない。誰かほかの人よろしこ。
>>178 あ、それだ。サンクスコ。
一応サンプルコピペしとくか
Option Explicit
' オブジェクト変数を CommandButton として宣言します。
Private WithEvents cmdObject As CommandButton
Private Sub Form_Load()
Set cmdObject = Form1.Controls.Add("VB.CommandButton", "cmdOne")
cmdObject.Visible = True
cmdObject.Caption = "動的 CommandButton"
End Sub
Private Sub cmdObject_Click()
Print "これは動的に追加されたコントロールです。"
End Sub
180 :
デフォルトの名無しさん :02/11/27 12:04
VB6でトグルボタンを使ってラジオボタン(?)を作りたいのですがうまく行きません。 トグルボタンを何個か並べておいて押したヤツがtrueになって他のは全部falseになる形です。 ボタン並べてこんな風に書いてみたのですが、、 Private Sub ToggleButton1_Click() ToggleButton1.Value = 1 ToggleButton2.Value = 0 End Sub Private Sub ToggleButton2_Click() ToggleButton1.Value = 0 ToggleButton2.Value = 1 End Sub 「実行時エラー28 スタック領域が不足しています」のエラーになります。 ヘルプとか見てみたのですが、押されたボタン以外のValueを変更した時に 変更されたボタンにClickイベントが発生して・・・みたいな感じで無限ループに なってるような感じがします。(違うかもしれませんが) 何かヒントでもお教えいただければと思います。 トグルボタンはMicrosoft Forms 2.0 Object Libraryのを使ってます。
>>180 そもそもMicrosoft Forms 2.0 Object Libraryって
勝手に使っちゃまずかったような。
それはおいといて、Value値を変えてる最中かどうか
フラグ立てでもすれば?
>>180 つーか、標準のオプションコントロールじゃだめなの?
ちなみに、チェックボックスでは Value を vbUnChecked → vbCheckedにすると
Clickイベントが発生するから似たようなことが起きてんじゃないかな(未確認)
183 :
デフォルトの名無しさん :02/11/27 12:45
>>181 Microsoft Forms 2.0 Object Libraryって使ったらまずいのですか?
ExcelなんかのVBAでは当たり前のようにトグルボタンがあるのですが
VBではかなり探さないと見つからなかったので変な気はしたのですが・・・
フラグ立ては・・・なんかうまくいかなかったのでもう少し努力してみます。
>>182 標準のオプションコントロールで作ってたのですけどね・・・
年配の方が使うものでして「どれが選択されてるのかわかりずらい」
「押しにくい」という意見が殺到しまして。
言われてみればそうかも?と思って作り変えようとしたらこのざまです。
>>183 Microsoft Forms 2.0 Object Library は Office とかに付属しているもので、
VB 標準ではなかったと思う。
Private InOwnChanging As Boolean Private Sub ToggleButton1_Click() If InOwnChanging Then Exit Sub InOwnChanging = True ToggleButton1.Value = 1 ToggleButton2.Value = 0 InOwnChanging = False End Sub ... すぐに思い付くのはこんなもんか?
187 :
デフォルトの名無しさん :02/11/27 12:53
VB6+ActiveReport1.5で帳票を印刷したいのですが 余白の設定をするにはどうすれば良いでしょうか? PrinterオブジェクトのScaleTop等を変えれば良いと思うのですが それをActiveReportに認識させる方法がわかりません...
188 :
デフォルトの名無しさん :02/11/27 13:17
コマンドボタンで、1回クリックするとへこんで、 へこんだ状態のをクリックすると元に戻るやつってどうやってるんすか? ひょっとしたらコマンドボタンじゃないのかな。
>>188 チェックボックスのスタイル変更してみ。
>>189 おおー、初めて知った。ありがとうございます。
>>187 ActiveReportsのPageTopMarginとかを変えるのでは駄目?
>>186 すみません、過去ログはいろいろ漁ってみたのですが・・・
っていうか、、189の応用で解決!!
あほくさ、、こんなことで悩んでたなんて。
ともかく皆さんありがとうございました。
193 :
デフォルトの名無しさん :02/11/27 14:14
ADODBを使って自己満足ツールを作ろうと思います。 ADODBのメソッド・プロパティ一覧とカンタンな説明ってどこかにないでしょうか? 例えば、"Connection String"とか"MoveNext"とか・・。 なければ、誰か作ってください。どうか、よろしくおながいします。
>>193 >なければ、誰か作ってください。
この常識外れな一言さえなければ、おまえ、幸せになれたのにな。
>177-179 たすかりました どうもですm(__)m
>>65 またまたこんな続きまで書いてもらっちゃって。
うん、やっぱりファイルネームのパラメーターは渡したいなと思ってた。
今からコレ試してみるよ!
何から何まで、ホントにありがとう!!
197 :
デフォルトの名無しさん :02/11/27 16:59
>>194 ──■──■──────■─────────■────────────
─■─■─■────■■■■■─────■■■■───────────
■■■■─■■■■───■──■■─────■─■■■■──■■─■■
──■─■───■───■─■──■───■──────■─■■─■■
■■■■────■───■■───■───■─────■───■■■─
──■──■──■──■■────■──■───■──────■■■─
■─■■──■─■─■─■────■──■──■────────■──
─■■─────■───■────■─────■────────■──
■■────■■────■─────■─────■■■■■──────
↑ あなたの想像以上に、VB.NETのスレと両方見てる人はいますよw さ、次の質問者の方どうぞ ↓
199 :
デフォルトの名無しさん :02/11/27 18:07
>>198 ──■──■──────■─────────■────────────
─■─■─■────■■■■■─────■■■■───────────
■■■■─■■■■───■──■■─────■─■■■■──■■─■■
──■─■───■───■─■──■───■──────■─■■─■■
■■■■────■───■■───■───■─────■───■■■─
──■──■──■──■■────■──■───■──────■■■─
■─■■──■─■─■─■────■──■──■────────■──
─■■─────■───■────■─────■────────■──
■■────■■────■─────■─────■■■■■──────
とりあえず謝っとく。 正直、すまなかった。
202 :
デフォルトの名無しさん :02/11/27 18:31
>>183 いずれかを選択させたければ、オプションボタンのStyleプロパティを"1"にする。
複数選択させたければ、チェックボックスのStyleプロパティを"1"にする。
「Microsoft Forms 2.0 Object Library(FM20.DLL)」は、Microsoft Officeの
コンポーネントで、単体では再配布できない。
つまり、コイツを使って開発したアプリは、Officeのインストールされていない環境では動かない。
203 :
デフォルトの名無しさん :02/11/27 18:55
193=194=197=198=199=200=201=203 すべて僕のジサクジエンですた。 ごめんね〜
1=2=3=4=5=6=7=8=9=10=11=12=13=14=15=16
205 :
デフォルトの名無しさん :02/11/27 19:17
>>1-1000 ──■──■──────■─────────■────────────
─■─■─■────■■■■■─────■■■■───────────
■■■■─■■■■───■──■■─────■─■■■■──■■─■■
──■─■───■───■─■──■───■──────■─■■─■■
■■■■────■───■■───■───■─────■───■■■─
──■──■──■──■■────■──■───■──────■■■─
■─■■──■─■─■─■────■──■──■────────■──
─■■─────■───■────■─────■────────■──
■■────■■────■─────■─────■■■■■──────
VBスクリプトの正規表現について質問です。 <dt>100 ...<dt>101 ...<dt>102 ...<dt>103 ...(続く とある形式から、たとえば「101」のDTを検索したい時に "<dt>(101 ).+<dt>" とやると、 「<dt>101〜最後の<dt>」までが引っかかります。 これを、"<dt>101" 以降の最初に出てきた<dt>まで 引っ掛けるようにはどうしたらよいのでしょうか?
>>207 サンクス。
? をつけるとよさげということですね。
今、やってみてはいるのですが、むつかしい。。
解決しますた。 "<dt>(101).+?(<dt>)" ですね。 ありがとうございました
クラスモジュールのパブリックのプロシージャで 引数にユーザー定義型を入れたのですが パブリック オブジェクト モジュールで定義されたパブリック ユーザー定義型に限り、… と、エラーがでてしまいます。 一応標準モジュール、パブリックで宣言したユーザー定義型を使ってるのですが…。 いろいろ検索しても解決に至らず。そこでここで質問させていただきました。 VB6です。どなたか分かる方がいらっしゃいましたらよろしくお願いします。
>>210 エラーの原因と対処方法を次に示します。
・パブリック ユーザー定義型を、クラス モジュールのパブリック プロシージャの
引数または戻り値として使おうとしました。
またはパブリック ユーザー定義型のフィールドとして使おうとしました。
パブリック ユーザー定義型がパブリック オブジェクト モジュール内で
定義されている場合にのみ、このような使い方が可能です。.
MSDNで検索したらひっかかったyo
「このような使い方」以外はできないってことじゃない?
>>211 レスありがとうございます。一応読みました。
パブリックオブジェクトモジュール=標準モジュールの事だと思ってたのですが。
ググってみても標準モジュールで宣言すれば大丈夫だみたいな事もありましたし。
もしかすると、この辺に思い違いがあるでしょうか?
>>212 MSDNによると、オブジェクトモジュールの規則 ≠ 標準モジュールの規則。
オブジェクトモジュールは、クラスファイルやらフォームやら。
だから、多分やりたいことはできないんじゃない?
UpDown1.BuddyControl = Text1 UpDown1.BuddyProperty = Text UpDown1.SyncBuddy = True ばぢぃぷろぱちぃってこれじゃあかんの? ヘルプにも書いてないからわかんねけ
215 :
デフォルトの名無しさん :02/11/28 01:46
VSGなんですが、CyclePageの具体的な使い方が分かりません。 誰かお願いします。
>>212 パブリックオブジェクトモジュールってのはAvtiveX DLL(とかコントロールとか)の
パブリックに設定されているクラスモジュールのこと。
そのクラス内で定義されているパブリックなユーザ定義型のみパブリックな
プロシージャとかに使える。
ユーザ定義型を使用するプロシージャとかがFriendなら標準モジュールの
パブリックなユーザ定義型が使用できたはず。
217 :
デフォルトの名無しさん :02/11/28 13:44
ツリービューの背景に画像を表示したいのですが、どうしたらできますでしょうか。
>>216 なるほど。プロパティにするんですね。
試してみた所、無事動きました。
211さん、216さん、こんなくだらない質問に答えてくださって
どうもありがとうございました。
220 :
デフォルトの名無しさん :02/11/28 18:50
VBでもVCにあるような日時指定コントロールはありませんか?
VBSで指定した文字列の出現回数を 数えるプロージャってどうやって作ればいいでしょうか?
マウスのクリックにしか反応しないボタンっていうのを作りたいのですがどうすればいいのでしょうか?
>>221 文字列検索して見つかったら足してけばいいじゃん。
もしくは、正規表現でも使えば?
>>223 ラベルとかピクチャボックスでボタンっぽいものを描く
>>223 まずは、マウスのクリックを取得できるようになってからだと思う。
質問です. VB6 今メッセンジャーの互換クライアントをVBで作ってるんですけど 一つつまづいている所があって, 質問. フォーカスを奪わず常に最善面でフォームを表示したいんです. 用途としては, ポップアップウィンドウを作成するために欲しい(w なんか普通にAPI組み合わせてみたんだけど上手くいかない. フォーカスもってかれちゃう. ってことで, ご教授お願いします・・・.
>222 そうです。自分で作ってみたんですが、無限ループに入っちゃって。 >224 それはやってみたんですけど、無限ループに・・・。 正規表現は使い方(意味)がよく分からない状態です。
>>221 >>228 Matchsコレクション(だったっけ?)を使えば一発。
技術評論社の本に出てる。
>>228 本買う金が無いです。
すいません、誰か教えてくれませんか?
そのMatchesコレクションというのを。
>230 WSH使ってるんならリファレンスくらいあるだろ。 mk:@MSITStore:C:\Program%20Files\Microsoft%20Windows%20Script\ScriptDocs\Script56.CHM::/html/vscolmatches.htm をみる.
mk:@MSITStore:C:\Program%20Files\Microsoft%20Windows%20Script\ScriptDocs\Script56.CHM::/html/vscolmatches.htm これをアドレスバーぶち込むんですか? 何も出ないんですが・・・すいません。どうやって見るんですか?
234 :
デフォルトの名無しさん :02/11/28 21:10
>>233 すいませんでした。&ありがとうございました。
>>234 無理。VBでつくられたツールだからここへ来たのだろうけど、スレ違い。
別のツール探すなりしなさい。
ってか俺のにも返答Plz(泣
238 :
デフォルトの名無しさん :02/11/28 22:02
BitBltを使って画像を表示しているのですが、特定の色だけ透かして 表示ってできないのでしょうか?vbSrcAndとか指定しても透かしたくない ところも透明になっちゃって。imageコントロールにgifファイルで透かす ことはできるのですが他に方法ないかなと思いまして。
>>227 再前面表示はSetWindowPosだっけ?
>>227 フォーカスを奪わずってフォームをクリックしてもフォーカスを奪わないって事か?
>>239 そうです。
それでTOPMOSTを指定しての最前面表示をしています。
>>240 いや、そうではなくて
フォームを表示した瞬間にそのフォームへフォーカスが移らない
って意味です。クリックしてフォーカスが移るのはかまいません。
2000/XPの仕様です。という事を聞きたいのでしょうか?
>>241 だよね。ShowメソッドじゃダメなのでAPIを使う。はい↓
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Const SW_SHOWNOACTIVATE = 4
ShowWindow Form2.hwnd, SW_SHOWNOACTIVATE
もしフォームをAPIなんかで表示させて大丈夫なのか〜?と思うなら、
CBTフックでもできると思う。
http://www.galliver.co.jp/writing/msdn/msdn06/
>>241 これでできるよ
Load Form2
Call SetWindowPos(Form2.hwnd, HWND_TOPMOST, 0, 0, 0, 0, _
SWP_NOACTIVATE Or SWP_NOMOVE Or SWP_NOSIZE Or SWP_SHOWWINDOW)
プロパティとか参照すると勝手にロードするから、
明示的にロードしときたいかな(趣味の問題だけどね)。
245 :
デフォルトの名無しさん :02/11/28 23:19
厨なし質問ですがよろしくお願いします。 VB6で標準出力する方法は無いですか? GUI無しのexeを作ってDOSプロンプトから実行してメッセージなどを出したいのですが。 過去ログ等ありましたら申し訳ないです、「ここ見ろ」でもかまいませんので宜しくお願いします。
>>238 こんなかんじ?(未確認)
Call BitBlt(Form1.hDC, x, y, PictMask.ScaleWidth, PictMask.ScaleHeight, PictMask.hDC, 0, 0, vbSrcAnd)
Call BitBlt(Form1.hDC, x, y, PictBitmap.ScaleWidth, PictBitmap.ScaleHeight, PictBitmap.hDC, 0, 0, vbSrcInvert)
>>247 マスクを用意しないでカラーキー転送したいって事では?
249 :
デフォルトの名無しさん :02/11/29 11:30
教えて下さい。 VB.NETで、ファイルの存在確認をしたくて Dir関数を使おうとすると、何故か、関数として 認識してくれません。helpには普通に使える様に 書いてあるのですが、実際にコードを書くとダメです。 どなたか解決方をご存知ではないでしょうか?
>>249 .NETはたとえ引数の必要無い関数でも()を付けなきゃだめだ。
>250 こんなスレあったんですね・・・すみません。 逝ってきます。 >251 えーっと、こんな感じでもダメなんです。 dim file_path as string if Dir(file_path) <> "" then (ここに「ファイルがあるぞ!!」と書く) endif Dir自体が認めてもらえません・・・ 250さんに教えてもらったスレに逝ってきます。 お邪魔しました。
>>243 &
>>244 レスありがとうございます。
が、出来ません・・・。
243のでも、244のでも、フォーカスを奪わずには表示できているのですが
常に最前面表示になりません・・・。
244のを使ってもならないし、243ので表示したあとに
SetWindowPosでTOPMOST指定してもなりませんです。
外部ツールから、常に最前面表示をさせてやると
ちゃんと出来てるんですが。どういうことなんだよウワァン
>>253 SetWindowPos()のフラグ設定してない予感。
Public Const SWP_NOACTIVATE = &H10 Public Const SWP_NOMOVE = &H2 Public Const SWP_NOSIZE = &H1 Public Const SWP_SHOWWINDOW = &H40 Public Const HWND_TOP = 0 '手前にセット Public Const HWND_BOTTOM = 1 '後ろにセット Public Const HWND_TOPMOST = -1 '常に手前にセット Public Const HWND_NOTOPMOST = -2 '常に手前、解除 Call SetWindowPos(Form4.hwnd, HWND_TOPMOST, 0, 0, 0, 0, _ SWP_NOACTIVATE Or SWP_NOMOVE Or SWP_NOSIZE Or SWP_SHOWWINDOW) で普通に無理でした・・・。 定数の値はAPIビューワから取ってきたので それが間違っているのかも?
あー 試行錯誤の末に原因判明。 どうやら、「常に最前面表示」のフラグついてるWindow同士がぶつかりあって それで自分のアプリが負けちゃってて、最前面表示できてなかったようです。 APIとかの使い方自体には問題は無かったようで。 最前面表示したいFormのPaintイベントで毎回上記のAPIを実行すれば 他の「常に最前面表示」のフラグついてるWindowにも勝てるようです。 ありがとうございました。
>>256 自己解決&それなのに結果報告(・∀・)イイ!!
質問者はこうあるべきだという見本だな。
VBが自動的に挿入したイベントプロシジャーの引数なのですが、 ByRef/ByValがついていません。 これを調べる方法はないですか?
>>256 「常に最前面表示」同士では「常に最前面表示でない」同士と同じように
クリックされたりしたとき全面に来るのが普通だと思うんだが。
「常に最前面表示」のさらに最前面表示か・・・なんか珍しいんじゃないかと。
MSDXM.OCX(WMP)でメディアファイルを再生する場合、経過時間や終了時間なんてーのは、どうやって取得するんでしょうか?
261 :
デフォルトの名無しさん :02/11/29 17:06
ええと ある変数に 10進数で値が 入ってるんだわ。とりあえず文字列ね。 んでもって、それにたいして 何ビット目をオンにするかという情報を与えてあげるわけさ。 たとえば 15ビット目オンとかいったら 一の位が 奇数になるんだわね。 それで 0ビット目ってのが 一番 大きいやつ。 それだけオンにすると 32768になるんだ。 それで、最初からオンだったら 何もしなくてもいいんだ。 この10進数と何ビット目ってのを 与えて、指定のビットをオンにする いいプログラムしらないかなぁ。 だれか教えて〜。
>>258 指定のない場合は ByRef 扱いになります。
VB6今更勉強してるのだけど、新visual Basic入門 ビギナー編(ソフトバンク) 「しっかり学びたい初心者のためのVB5.0プログラミング バイブル」技術評論社。 という本が、図書館で借りられます。どっちがいいでしょうか。 学生で、できるだけ安く学びたいのですが。リアル工房です。よろしく
>>262 宿題じゃなくて 仕事なんだわさ。
ちょいと時間がなくて、猫の手も借りたい気分〜〜〜。
>263 > 指定のない場合は ByRef 扱いになります。 ということはByRef/ByValどちらでもOKということですか?
>>265 こんな感じかな。
s="0":p=15:debug.Print clng(s) or (2^(15-p))
>>267 おおっ なるほどっ。
やっぱ優秀なやつは 違うな。
ありがと。
>>261 このスレにいるのは猫だということですか?
馴れ馴れしすぎ
>>261 つーか、論理和も知らずに仕事でやってるとは思えん。。
Inetコントロールを使って
とあるzipファイルを落としたいのです。
中身は当然バイナリ文字列なんで、バイナリモードで取得しないと駄目ですよね。
で、バイナリモードで取得しようとすると、そのファイルのサイズは
どこでダウンロードを終了するのかを知るために必須ですよね。
で、どうやってサイズを知るのかというと、HTTPヘッダの
Content-Lengthを見ればよい訳ですよね。
ところが、
Inet1.URL = "
http:// 〜〜〜〜〜〜/test.zip"
Inet1.AccessType = icDirect
Inet1.Protocol = icHTTP
Inet1.OpenURL
Debug.Print Inet1.GetHeader
とやるとエラーになります。
OpenURLのところで。HTMLファイルなどのヘッダだったらこれで取得できるのですが。
何でこれだと出来ないのでしょうか?
ちなみにIrvineとかで試してみるとちゃんとヘッダー取得できるので
取得できないはずは無いのですが。
>>266 > ということはByRef/ByValどちらでもOKということですか?
ん?どうも質問の意図が掴み切れないのですが、
(1) Private Sub Form_Unload(Cancel As Integer)
を
(2) Private Sub Form_Unload(ByRef Cancel As Integer)
(3) Private Sub Form_Unload(ByVal Cancel As Integer)
と書き換えてもいいかと言う事でしょうか?
だとすれば、答えはNoです。
(2)は許されますが、(3)は許されません。
>272 そのことが知りたかったのです。 ありがとうごさいました。
なぜ質問者は「エラーが出ます」とだけ書くのか不思議だ。 エラーコードなりメッセージなり、何らかの情報があるはずなのに。
>217 MSDNでOpenURLメソッドをちゃんとみました? ファイルサイズが必要とか書かれてました? 省略してはいけない引数省略してませんか?
>>274 申し訳ありませんでした。
実行時エラー18 型が合わないとか言われます。
>>275 > MSDNでOpenURLメソッドをちゃんとみました?
最初に見てみてみました。
対象を指定しないでOpenURLすると内容を切り捨てて
コネクションを張った状態になるという事がわかりました。
> ファイルサイズが必要とか書かれてました?
OpenURLするのは、ヘッダの取得のためです。
実際にデータを取得する時にはExecuteして、GetChunkします。
そのときにデータ末尾を見つけるためにファイルサイズが要るのです。
> 省略してはいけない引数省略してませんか?
引数はURLとデータモードだけですよね。
両方とも省略して平気な引数なので省略していますが
省略せずに書いても同じエラーになります。
Private Sub Command1_Click()
Inet1.URL = "
http://127.0.0.1/hoge/hoge.zip "
Inet1.OpenURL
End Sub
Private Sub Inet1_StateChanged(ByVal State As Integer)
Dim str As String
Debug.Print State
If icResponseReceived Then
str = Inet1.GetHeader
Debug.Print str
End If
End Sub
適当につくってみました。適宜修正どうぞ。
まちがえた。 まぁ、StateChangedをちゃんと処理したら動くと思うよ<おいおい
Private Sub Command1_Click()
Inet1.URL = "
http://127.0.0.1/hoge/hoge.zip "
Inet1.Execute , "HEAD"
End Sub
Private Sub Inet1_StateChanged(ByVal State As Integer)
Dim str As String
Debug.Print State
If State = icResponseCompleted Then
str = Inet1.GetHeader
Debug.Print str
End If
End Sub
一応こちらでは動作確認。
質問です 外部アプリケーションを最小化させるにはどうすればいいんですか? SendMessageで何かメッセージを送ればいいというのはわかるのですが 何というメッセージを送れば良いのかさっぱりです よろしくお願いします
>>246 レスどもです
リンク先見て勉強してみます
ありがとうございました
>>249 Dir("")を実行すると一見""が返ってくるように思われるが実際は違う。ファイル名が返ってきてしまう。
Dir("a")など1字以上の文字列を評価するようにしないとだめだ。
だからDir(Path)のPathに""を代入してしまっている個所を修正する。
>>283 なぁ、aってファイルがないと言う保証はないぞ。
285 :
デフォルトの名無しさん :02/11/30 14:14
100/3という計算をしたときに小数第2位ま表示したいのですが どうすればよいでしょうか?
>>285 format関数もしくは
int((100/3)*100)/100
>286 すいません。ポインタって何ですか?
スレ違いスマソ
>288 もっと詳しく教えていただけますか?
294 :
デフォルトの名無しさん :02/11/30 14:43
>>292 それじゃダメだよ
そういうときは
「おながいしますよ」
といいましょう
297 :
デフォルトの名無しさん :02/11/30 21:22
厨房ですまん・・・。 OSはWinMeで、VBは6.0バージョン。 そんな俺だが、 Open "c:\windows\デスクトップ\マンコtxt" For Output As #1 とコードに書いて数字を書き込ませるんだが、なぜか作ってあるファイル"マンコtxt" には書き込まれず、独自にファイルが作られ、しかもそいつを開こうとすると何のアプリから 開く?と聞かれ、一々面倒で仕方が無い。 何が悪い?
298 :
デフォルトの名無しさん :02/11/30 21:25
>>297 デスクトップにマンコtxtが2つ出来るんですか?
たった今わかった・・・ マンコ.txt ってすればOKだった。。すまん。
'スレ違いで申し訳ないが、皆のPCがこの計算に何秒かかるのか知りたい。 '俺は32秒だった。 Option Explicit Private Function gauss(p As Long) As Long Dim n As Long Dim q As Long If p >= 0 Then q = p Else q = -p End If n = 0 Do n = n + 1 Loop While q ^ (1 / 2) > n gauss = n - 1 End Function '続く
'続き Private Sub Command1_Click() Dim p As Long Dim q(100000) As Long Dim i As Long Dim j(100000) As Long Dim kaishi As Date Dim owari As Date kaishi = Now Open "c:\windows\デスクトップ\素数.txt" For Output As #1 j(1) = 1 Print #1, 2 Print #1, 3 Print kaishi For p = 4 To 100000 q(p) = gauss(p) For i = 2 To q(p) If p Mod i <> 0 Then j(i) = 1 * j(i - 1) Else j(i) = 0 * j(i - 1) End If Next i If j(q(p)) = 1 Then Print #1, p Next p Close #1 owari = Now Print owari MsgBox "終了しました", vbOKOnly End Sub 'みんな何秒かかる???スレ違いですまんが・・・
ちなみに10万までの素数を計算して書き込ませるプログラムね。 スレチガイでごめん。
c:\windows\デスクトップ\素数.txt って、固定かぃ、、、
>>297 2分5秒。K6-2 400MHz。
おせーよ…
それと25は素数かい?
暇なので改良。改良後:28秒 q(p) = gauss(p) を q(p) = Int(Sqr(Abs(p))) に変更、gauss削除。
309 :
デフォルトの名無しさん :02/11/30 23:34
ポインタとは どっかを指し示すようなものさ。 ま、そこが ポイントなんだけどな〜〜 わっかるかなぁ〜 わかんねぇだろ〜
>>308 おおお・・・そんな便利な関数があったのか>sqr
厨房でスマソ(もう直ぐ30歳だけどね)。
ちなみに今は"abs"はいらんから、absを使わないで10秒だった。
>>309 何となく言っている事はわかる。
折角計算して出した素数を使った方が速くなるものね。
>>311 ありがとね。
ちなみにsqrは知ってたけど、intを知らなかったんだった。
100万まで計算させて5分ちょいかかった・・・。
それと、この話はそこのリンク先のスレに移行します。
俺もちょっとVC++をかじっているし、VC++も持ってるから。
>>312 ズガーンΣ( ̄Д ̄;)
>>313 100万までならVBでも1秒切れるはず。がんがってくだちい。
315 :
デフォルトの名無しさん :02/12/01 01:58
フォーム上で色々(線や四角や図などを)とデザインしたいのですが VB標準のコントロールボックスのような機能を実現する方法がわから ず困っています。どこか参考になるサイトや方法が有れば教えて下さ い。OS:XP(HOME) VB6.0(SP5)
316 :
デフォルトの名無しさん :02/12/01 04:54
pictureとかimageで無理やり。 VBじゃほとんど無理だろ。
コマンドボタンを押してエクセルのワークシートを開きたいのですが、 コードがわかりません。 ヘルプファイルがないので教えてください。
わかりました。すいませんでした。
VBScriptでサーバ上にあるファイルをダウンロードできますか? もしくはVBScriptでサーバ上にあるファイルのソースを変数に得ることはできますか?
>>319 それができたら相当数の人が不幸になると思われ。
そーゆー ActiveX を作ればできるんじゃないか?
VBScriptの使用方法や何サーバーか分からんから答えられん。
325 :
◆bCmBK/NK7o :02/12/01 13:48
質問させてもらいます。 VB6にて、特定プロセスの通信量 (受信が何KB/s で送信が何KB/s ってやつ) を知りたいのですが、どうやればいいでしょうか。 送信全体や、受信全体ならば 取得できる方法があるのですが 特定プロセスとなると調べてみたのですがわかりません。
326 :
デフォルトの名無しさん :02/12/01 16:00
VB6.0から Winsock使ってメール送信をしたいのだけれど、 関数郡どっかにない? sampleでも
>>326 文字コード変換とかけっこう大変だけど市販のコンポとかじゃだめなの?
>>325 パケットをキャプチャしてポート番号でプロセスを識別すればいいんでない?
>>329 自分の技術力不足ですみせんが・・・
>パケットをキャプチャして
の時点でもうバタンキューです。
どうやってやればいいのやら、です。
>>330 そういえば、キャプチャしても送信のパケットは見れないからだめか。
332 :
デフォルトの名無しさん :02/12/01 22:37
DataGrid コントロールで特定の行だけ背景の色を変えたいのですが、 どなたか方法教えていただけませんか?
333 :
デフォルトの名無しさん :02/12/02 00:12
>>328 いや実は業務で使うんだ。
それで、やっぱりフリーはちょっとということで。
手作りしようかな。と考えました。
難しいのね。単純にsendmailじゃできないのね。
>>327 Thanks
334 :
デフォルトの名無しさん :02/12/02 00:17
ExcelのVBユーザーです。 お聞きしたいのですがCやFortranで作られたExe形式のファイルを VBから実行することはできるのでしょうか? ExcelをInterfaceだけに使いたいもので・・・。
335 :
デフォルトの名無しさん :02/12/02 00:21
テキストボックスに入った少数は全て四捨五入して1と表示 させたいのですがどうすればよいでしょうか?
少数ねぇ…
337 :
デフォルトの名無しさん :02/12/02 00:53
>>334 shell "hoge.exe"
>>336 Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim Number As Variant
If KeyAscii = &HD Then
Number = Int(Val(Me.Text1.Text) + 0.5)
Me.Text1.Text = Number
End If
End Sub
338 :
デフォルトの名無しさん :02/12/02 00:56
VB.NETでVB勉強中ですが、 SelectNextControlの使い方がいまいち判りません。 フォームにテキストボックスを2つ貼ってあり テキストボックスのkeypressイベントを拾って If e.KeyChar = Chr(13) Then Me.Parent.SelectNextControl(Me, True, True, True, True) End If とやると 「オブジェクト参照がオブジェクト インスタンスに設定されていません。」 と叱られます。 既出かもしれませんがよろしくお願いします。
>337 ありがとうございます。うまくいきました。 すごい助かりましたあ。
winsockを使って、サーバーとクライアント間で配列データのやり取りを したいと思っているのですが、うまくいきません。 送信側 Dim list(1 to 10) As String 'Listにはすでに文字列データが入っています。 winsock.SendData list 受信側 Dim RecvData(1 to 10) As String winsock.GetData RecvData 環境 WindousXP vb6.0pro byte型配列で送受信ということを聞いたこともありますが どうなのでしょうか? よろしくお願いします。
winsockコントロールってある意味、罪だと思います。
343 :
デフォルトの名無しさん :02/12/02 18:12
16進の"FF"を Integer型の変数に-1と入れるような関数はあるでしょうか?
間違い”FFFF”でした
すみません。 やっぱりいいです。
Val("&H" & "FFFF")
347 :
デフォルトの名無しさん :02/12/02 18:26
gifアニメーションを表示させるにはどうしたらいいのでしょうか。 Imageコントロールで表示させたのですがアニメーションにはなって なかったです。
348 :
デフォルトの名無しさん :02/12/02 19:40
プログラム初心者なんですが・・・。 例えば、 Dim m(100000) as long Dim n as long m(n)=n としておいて、3で割り切れない100000までの整数を改めて Dim l(k) as long '(kは具体的に数値を入れておく) のなかに隙間無く入れたい。 どのようにプログラムを組めばよいか、良いアドバイスおながい。
349 :
デフォルトの名無しさん :02/12/02 19:58
VS6.0のDISC2ってのはセットアップ出来ないの? いちいちEドライヴに入れるのは面倒で仕方ない。
350 :
デフォルトの名無しさん :02/12/02 20:01
分からんこともないと思うが。
Const N_Max As Long = 100000 Dim n As Long Dim l() As Long Dim d As Double, i As Long n = CLng(N_Max / 3 * 2 + 0.67) ReDim l(n) d = 1 For i = 0 To n - 1 l(i) = CLng(d) d = d + 1.5 Next m(100000) の必要性が全くわからんのだが
> Eドライヴ 失格。
>>348 3で割れるかチェックして格納していくだけじゃないの?
何を難しく考えてんでしょうか。
>>354 すまん。3で割った後、次は5でその次は7で・・・という風に、
次々に素数で割っていって、残ったものだけを変数に入れて置きたいんです。
いわゆるエストラテネスの篩を考えてます。
357 :
デフォルトの名無しさん :02/12/02 21:29
少数以下なら全て1に変換したいのだがどうすればいい?
>>355 テーブルいじらないで最後に別の配列に格納していけ。
360 :
デフォルトの名無しさん :02/12/02 22:33
ファイルの内容を1文字づつ読み込むにはどうしたらいいんですか? おおしえください。
>>360 マルチやろうか。このファッキンが、氏ね。
365 :
デフォルトの名無しさん :02/12/03 02:28
gifアニメーションを表示させるにはどうしたらいいのでしょうか。 Imageコントロールで表示させたのですがアニメーションにはなって なかったです。
366 :
デフォルトの名無しさん :02/12/03 02:53
>>365 WebBrowserコントロール使え。
…たしかMSのFAQにそう書いてあったような気がする。
>>333 SMTP自体はすげぇ簡単だから、SJIS→JIS変換コードさえ書けば、
あとはサーバとマターリお話するだけで送信できるよ。
注意点はSubjectに漢字があったらちゃんとエンコードすることと、
桁数制限と、行頭のピリオドがエスケープされることぐらいかな。
RFC片手にTelnetでSMTPとお話してみれば、どれだけ簡単か分かると思う。
>>360 マニュアル無いなら理由を書いておいた方がいい。
少なくとも教えを乞う側なんだから相手に気分良く教えてもらわないと...
誰だってライセンス違反してる可能性のある人には教えたくない(と思う)。
もし万一ライセンス違反なら人に聞くのは間違ってる(もっと根本的なことから間違ってるけど)。
もしそうでないならごめん。
>>348 Dim d(100) As Long, cnt As Long, Rcnt As Long
Dim i As Long
d(0) = 2
cnt = 2
Rcnt = 1
Do
cnt = cnt + 1
For i = 0 To Rcnt - 1
If cnt Mod d(i) = 0 Then
i = -1
Exit For
End If
Next i
If i <> -1 Then
d(Rcnt) = cnt
Rcnt = Rcnt + 1
Debug.Print cnt
End If
Loop Until Rcnt = 100
コードは汚いけどこんな感じ
すみません、頭が狂いそうになりながら書いてみたのですが エラーはなんとか消したものの、実行すると途中でエラーがでてしまいます。 よろしければ、どこが原因か教えてください。 会議室を予約するプログラムです。 ソースは次に分けます
>>370 ソースいらん、エラーメッセージ書けボケ
Dim d(100) As Long, cnt As Long, Rcnt As Long Dim i As Long d(0) = 2 cnt = 2 Rcnt = 1 Do cnt = cnt + 1 For i = 0 To Rcnt - 1 If cnt Mod d(i) = 0 Then i = -1 Exit For End If Next i If i <> -1 Then d(Rcnt) = cnt Rcnt = Rcnt + 1 Debug.Print cnt End If Loop Until Rcnt = 100
#include <stdio.h> #include <time.h> #include <string.h> #include <stdlib.h> void main(void) { int id=0,heyaban,jikan,aoh,aa,ab,ac,ad,ae,af,ag,ah,ai,ba,bb,bc,bd,be,bf,bg,bh,bi; int ca,cb,cc,cd,ce,cf,cg,ch,ci,da,db,dc,dd,de,df,dg,dh,di; char month,day,bunki,kaigyo,yoyo[10]; char * youbi[]= {"sun", "mon", "thu", "wed", "thr", "fri", "sta"}; static char *week[] = {"sun", "mon", "thu", "wed", "thr", "fri", "sta"}; time_t now; struct tm *tm_now; FILE *fp; aa=ab=ac=ad=ae=af=ag=ah=ai=ba=bb=bc=bd=be=bf=bg=bh=bi=0; ca=cb=cc=cd=ce=cf=cg=ch=ci=da=db=dc=dd=de=df=dg=dh=di=0; now = time(NULL); tm_now = localtime(&now); printf("%d/%d %s\n", month=tm_now->tm_mon+1,day=tm_now->tm_mday,youbi[7]=week[tm_now->tm_wday]); do{ printf("使用番号を入力して下さい。\n"); scanf("%d",&id); printf("%dでよろしいですか?\n",id); scanf("%c %c",&kaigyo,&bunki); if(bunki=='y') break; }
>>371 そうします。
長すぎて、10回ほどに分けないといけないので・・・
!? なんでVBのスレでCのソースを出すのか理解に苦しむ・・・ >すみません、頭が狂いそうになりながら書いてみたのですが なにをだよ >エラーはなんとか消したものの、実行すると途中でエラーがでてしまいます。 どっちだよw
>>373 すれ違い。然るべきところに行ってくれ。
>>374 10回・・・・・ (´д`;)
それをコピペ結合して、わざわざテストして原因解明まで
やってもらおうってのはちょっと甘すぎるぞ。
自分でエラーの出る個所を絞り込んで、その部分だけソースを
出すことをオススメする。
もしどうしても全部のソースを出す必要があるなら、どっか
アップローダーにでもソースアップすれば、誰か落として
テストしてくれるかもな。やってやると約束はできんが。
>>379 ここのスレッドのタイトル読めるよね・・・?
>>373 あら?なんでだろ?
二重書き込み?
そんなはずは...
もしそうならごめんなさい。
分かりました。エラーメッセージの意味だけ教えてください Debug Libraryから Debug Assertion Failde! strem!= NULL とエラーメッセージがでます。 strem!= NULL はどういうことなんでしょう ってか、スレが違いますね・・・すみません
>>384 そのまんまだが。
streamがnullであるはずなのにそれに反した。
検索すらしてないバカと見た。まぁ、VBすら知らんDQN外注だしな。
>>384 >ってか、スレが違いますね・・・すみません
分かっててなぜ書く?最後に釣りでした、とかいうオチか?
自分でよーーく分かってる通りスレ違い。よそのC言語のスレへ行ってくれ。
なお、もう返事はいらん。
これでもしつこく書くようなら、アフォは放置で。
>>386 アホとは何ですか!
私だってがんばってるんです!
あなたの方がアホじゃないですか!!!!
388 :
デフォルトの名無しさん :02/12/03 10:48
土曜日は"sta"ではなく"sat"がいいと思う
389 :
デフォルトの名無しさん :02/12/03 10:51
C言語関係のスレがあがってないところを見ると、 やはり釣りだったようだな・・・ 386で先に指摘されたから言い出せなくなったってところか。 まともな質問者はこないのかいな・・・
ふーん Cのスレに帰っていいよ。
いきなりですが質問します。 Global Const 変数名% = 数字 と宣言されていた場合%は何を表すのですか? よろしく御願い致します
>>392 古いな・・・・。%は整数(integer)だよ。
>>394 ちなみに、constは定数であって変数ではないのだが。
VB初心者です。どなたか助けてください。 Dim data As Long data = Val(”&H”+TextBox1.Text) ← Textは”F000” このとき TextBox2.Text = Hex(data) すると、上位16bitが反転して表示されませんか?(”FFFFF000”) Integer型の符号ビットを無視できないんでしょうか? それともまったく筋違いな間違いを犯しているのでしょうか?? よろしくおねがいします。
>>396 面白いと思って追試してみたが、
Dim data As Long
data = &HF000
Debug.Print Hex(data)
Debug.Print Hex(&HF000)
Debug.Print Hex(CLng(&HF000))
こうやってやると、実行結果は
FFFFF000
F000
FFFFF000
ってなるね。Long型に代入するとダメなのか・・・
でも
If data = &HF000 Then
って感じで比較するとイコールだという結果になる。
なんじゃこりゃ??
俺も気になるので、分かる人解説キボンヌ
>>397 自己レス。
If data = &HF000 Then
が一致するのは、&HF000が暗黙でLong型に
変換されるからか・・・
397さん、ご協力感謝です。 こんなんアリでしょうか? Dim data As Long data = Val(CLng("&H" + TextBox1.Text)) ←Textは”F000” これだとアラ不思議。 Debug.Print Hex(data) が見事 ”F000”になりました。 ちゃんと正の値になってるようです。 Val()の引数ってString型ですよね? 絶対コンパイルエラーだと思ったのに・・・
暗黙の型変換・・・VBのもっとも恐ろしい言語仕様の一つさ。
>>401 Option Strict On
と煽ってみるテスト
>>402 そりゃ.NET
と 即レスしてみるテスト
コントロールのプロパティを指定した形で コード記述で作成できないでしょうか? ex) Dim mytext As TextBox Set mytext = Form1.Controls.Add("VB.TextBox", "mytext") mytext.MultLine = True '←参照しかできないのでエラーとなってしまう
>>397 > data = &HF000
ここで integer から long への型変換が行われるのが原因ですね。
integer型の&HF000 は -4096 ですから、longへのキャストの際、
符号拡張され &HFFFFF000 (=-4096)になります。
data=&HF000&
とすれば期待通りの動作になりますよ。
406 :
デフォルトの名無しさん :02/12/03 15:48
VB5.0のDBGrid.Refreshメソッドで実行時エラー「実行はキャンセルされました。」 (エラー番号3669)?が出てしまいます。(SQL文は 普通のINSERT文で、項目数が66あります。) ます、エラー番号 3669の対処方法を教えてください。
>>405 なるほど やっぱ暗黙の型変換が悪さしてたわけね。
詳しい解説ありがとう。
この場合は暗黙の型変換とは違うのだが・・・。
>>405 納得です。
型宣言文字って手があったんですね・・・お恥ずかしい。
ありがとうございます。
410 :
デフォルトの名無しさん :02/12/03 16:13
406 もしかしたら SQLPLUSで インサートしコミットしてないのが 原因だったりして・・・。
>>409 396さんの場合ですと、型宣言文字を使うより
data=CLng("&H" & hoge)
の方がスマートだと思いますよ。
#
>>400 の時点で気付いていると思いますが、念のため。
412 :
デフォルトの名無しさん :02/12/03 16:22
VB6でDirectSS使って英語のテキストを読むプログラムはできたんですけど、 日本語はどうやればいいのでしょうか? ご教授お願いしますm(_ _)m
>>412 まずはその英語のテキストを読む簡単なサンプルか
該当するあたりのコードを書いてみたら?
ちなみに俺は使ったことないので答えられないが
添削してもらいやすくなると思われ。
>>412 昔ちょっと遊んでいたのが関係あるかもしれないが関係ないかもしれない。
まんまだが、日本語話せる人をいれて、話せる人を使うんだと思う。
日本語はなせる人(スピーチエンジン)としてL&H TTS3000というのを昔入れた。
もうこれ以上思い出せない。
415 :
デフォルトの名無しさん :02/12/03 17:04
>>412 日本語をローマ字にしてやる。
そうすれば、英語でも読めるだろ(w
>>415 最初それをやってみたら発音めちゃくちゃだった(w
>>413 DirectSS1.Speak (Text1.Text)
としてテキストボックスの内容を読ませています。
>>414 情報ありがとうございます。
L&H TTS3000でググってきます。
>>415 その方法やってます。
「i te yo si」だと「アイテヨシー」になるので
「e te yo si」と入力してます。
マイクロソフトのページからL&H TTS3000ダウンロードして入れたらできました。
>>414 さんありがとうございました。
すみません、ActiveReportで、PageFooterかGroupFooterに表を作成したいのですが、ページを跨ぐ場合、上手く改ページされずにデータが上書きされます。表はFor文で回して記述しているのですが、何か解決策はありませんでしょうか。よろしくお願いします。
pictureboxまたはimageの画像の一部分を 別のimageにコピーするにはどうしたらいいのでしょうか?
>>420 一度だけわかりやすく質問しなおすことを許す。
423 :
デフォルトの名無しさん :02/12/03 22:35
すんません・・・これのどこがいけない??? オーバーフローしちゃうんだけど・・・ Dim a as integer Dim b as integer a = 0 For b = 1 To 10 Do If b > 10 Then Exit Do a = a + 1 Loop Next b
無限ループ。
あるフォーム上でマウスをクリックしたときに このマウスの画面上での位置を知りたいのですがどうしたらいいのでしょうか? 別のフォーム(の左上隅)をその位置にして表示したいのです。
430 :
デフォルトの名無しさん :02/12/04 00:42
>>429 こういうこと?
画面上の位置(x,y)=フォームの位置+フォーム内の位置
>>430 あ、自己解決してしまいました、すみません。
仰るとおりなのですが、ちょっとややっこしい事情があって
GetCursorPos(*Screen.TwipsPerPixel)を使用しました。
432 :
デフォルトの名無しさん :02/12/04 10:27
クリスタルレポートなんですがレポートの幅を変える方法を 教えてください。超初歩的で恥ずかしいです・・・。
すみません。自己解決しました。
434 :
デフォルトの名無しさん :02/12/04 11:08
VB6で質問です。 MSFlexGridコントロールでソートを行う場合、 列1、列2、列3の順で優先してソートするにはどのようにすれば いいでしょうか。
>>434 普通のソートのやり方が分かってるなら、
列3でソート
列2でソート
列1でソート
と順番にやればいい、はず。
実際の挙動は確認してないのであしからず。
>>435 3回もソートするのはパフォーマンス面でいかがなものかと?
クイックソートで、要素の入れ替え条件を変更し、複合条件で並べ替えれば一発。
(比較検証はしていないので、どちらが速いかは、何とも言えないが・・・)
>>435 >>436 > 3回もソートするのはパフォーマンス面でいかがなものかと?
パフォーマンスも問題かもしれないけれど、
>>435 の方法だと、使用可能な
ソートアルゴリズムに制約がありそう。(クイックソートはNG?)
>>436 のやり方が無難だと思うけど。
435だけど、俺はMSFlexGridコントロール使ったことないので、 あしからず・・・。うちではグリッド系はSPREAD使ってる。 わざわざこんな質問してくるってことは、MS...では単一ソートしか できないのかと思ったけど、違うのん? ソートアルゴリズムに関しては、437の書いたとおり、通用しない ものもあるね。なので、実際の挙動は確認してないと念押ししたわけ。 Excelで複数項目(10個とか)でソートしたい時は、この手法 使えるんだけどね。もぐもぐ。
>435 お察しの通り単一ソートしか無いと思われます。(知らないだけかもしれませんが) で、 列3でソート 列2でソート 列1でソート 上記のやり方だと、列2でソートした時点で列3の順番がバラバラになります。 >436 やはりクイックソートしかないですか・・・ Flexコントロールの機能でそういったものがあればと思ったのですけど というわけでクイックソートで行くことにします。 ありがとうございました。
>>434 あ、コントロールの話でつたか。
自前のソートアルゴリズムみたいな「自由度」はないかも?
441 :
デフォルトの名無しさん :02/12/04 13:38
VB4JP32.DLLを利用してるアプリケーションを windows2000で利用しているのですがどうもsendkeyを利用しているようで、 エンターキーを押すたびにNUMLOCKが解除されてしまいます。 外部からどうにかすることは出来ないでしょうか?
> 外部からどうにかすることは ソースがなきゃ、修正しようがないのでは? # 水○女史なら、バイナリエディタで実行ファイルを書き換えるかも w
フックするという手が無きにしも非ず
>>441 NUMLOCKが解除されたらONに強制的にする常駐プログラムを作るとか。
>>443 外部プロセスのメッセージをフックするのはVBではむずかしい罠・・・。
>>444 リソースを大喰いする罠・・・。
>>445 数ミリ秒ごとに処理すればたいしてリソース食わないよ。
皆さんありがとうございます
>>443-446 現在NUMLOCKが解除されたらONにするプログラムを作ったのですが
動かしてると使いたいアプリの方の動作がとても遅くなるので
質問してみました。
あと、すいません初心者なのでフックってなんだか分からないです。
調べて出直してきます
#sage進行だったのですね
>>446 いや、処理そのものではなく、VB製のプロセスが長時間に亘って常駐すること
自体がリソースを喰うのではないかと?
VBで常駐アプリ作った経験のある人、います?
(漏れはない)
>>435 Col = 1, Colsel = 3 とした後に Sortプロパティを設定すると、
3, 2, 1 の順にソートされるはず。(逆かも。1, 2, 3って)
>449 なるほど。そんな手もあるのですね。 でも列1は文字列で、列2は数字でソートしたい場合がちょっと問題か・・・ あと列1、列3、列5でソートとか で考えたんですけど1列非表示の列を作ってそこに 列1&列2&列3 みたいな文字列 をセットして、その列で文字列ソートすればいいことに気付きました。 これって邪道ですかね?
>>447 タイマーやSleepとかである程度ウェイト入れてる?
常に処理を行っている状態だとCPU使用率上がるよ。
まあ俺も実際にやってみたわけじゃないから本当に遅くなるかもしれないけど。
>>448 そっちのリソースか。今ちょっとやってみたらフォーム一つ表示しただけでメモリは3Mほど使うね。
これが多いかどうかは人によるだろうけど、俺は大食いだとは思わないな。
そんなに気になるならCとかで作ればいいと思うけど。
と思ったけど常駐=フォーム最小化+フォームHide状態で500Kぐらいになるね。
VBを知識0からお勉強できるサイトをたくさーん教えてください
>>454 san
了解しました。がんばって勉強していきたいと思います。
457 :
デフォルトの名無しさん :02/12/04 19:34
ところで、ここはひどいインターネットですね。
レスする番号を間違えてしまった僕はイッテヨシですか?
>451 数字はFormat関数を使って桁を揃えてやるとうまく出来ました
460 :
デフォルトの名無しさん :02/12/04 21:42
オレの気のせいかもしれないけどディストリビューションウィザードって VBで作られてるんじゃなかったっけ? ランタイムが入ってない状態でどうやって動かしてるんだ?
>>460 VB入れずにディストリビューション〜入れてんの?
>>460 Setup.exeはVBじゃないと思う。
Setup1.exeがVB製。
> ディストリビューションウィザードって > VBで作られてるんじゃなかったっけ え?
>>461 ごめん。「どうやって動かしてるんだ?」はディストリビューションウィザードで
作ったSetup.exeのこと。
>>462 あっそうか。だから二つに分かれてるんだね。
ん〜。つ〜ことはSetup.exeの方で基本的なランタイムをいれてんのかな?
そうするとSetup1.exeでOCXは使えない? っつかSetup1.exeはなにしてんの?
ソースもついてるらしいからソース見るか。
On Error GoTo line の活用方法がいまいちよくわからない…。 使い方はわかるけど、どういう処理をしている部分に配置して よいのやら…。 全部のSubやFunctionに入れちゃヴァカですか?
>>465 想定外のエラーが生ずる可能性のあるところに入れる。想定外といっても
どういうエラーが生じそうかは分かってなければならない。
また、想定できるがErrorトラップを書かずに処理しようとすると面倒な場合に
Errorトラップとすることもある。こっちの方が多い。
私の場合は、「全部に入れる」的なことはしない。Errorトラップがあると
却ってデバッグしにくいし、Errorトラップは予測し得るエラーでなければ
Error処理がかけないからだ。
>>466 > 私の場合は、「全部に入れる」的なことはしない。Errorトラップがあると
> 却ってデバッグしにくいし、
「エラー発生時に停止」の設定にするか、または条件付コンパイルのブロック内に
On Errorステートメントを記述して、テスト段階ではすべてのエラー処理を無効化
する、とか工夫すれば、デバッグの邪魔にはならない。
>>465 A関数 → B関数 → C関数
のように呼び出しがネストする場合、たとえば、A関数にのみエラー処理が記述
されていると、B、Cの内部で発生したエラーはすべて、Aのエラー処理ルーチン
で処理される。
(ただし、クラスのInitialize / Terminate イベントで発生したエラーは、上位
モジュールでトラップできないので要注意)
全部に記述するかどうかは、ポリシーの問題なので、善悪は一概には・・・。
(必要な箇所に記述されていないのがNGなことだけは断言できるが)
ところで、Erl って隠し関数なの? ヘルプに出てない。 デバッグに便利なんだが…。いや、今どき行番号使うのはどうよ、って 話は理解できるんだがなー。環境依存のエラー探すのに便利なんで。
471 :
デフォルトの名無しさん :02/12/05 16:54
VB6のListViewで1行削除を行いたいのですが、 どうしたらいいのでしょうか?
以下のようなコードでEnd Withを通らないでExitすると VBの動作が不安定になるということ耳にしました。 Sub Sub1() With xyz ... if .abc then Exit Sub ... End With End Sub これに関する確かな情報はありませんか。
473 :
デフォルトの名無しさん :02/12/05 17:05
MSFlexGridコントロールで複数、行選択した場合、 何行目が選択されているのかをどうやって判断すればいいのですか?
474 :
デフォルトの名無しさん :02/12/05 17:10
VBのテキストボックスのフォントをマウスホイールを使って変えたいのですが、どうすればいいですか?
>>465 何も書かない状態で実行時エラーが発生するとVB標準のエラーメッセージがでて落ちる。
これで良い場合を除き関数の呼び出しツリーの始め(大抵はイベントハンドラ)には必ず入れる。
イベントハンドラ以外の関数には入れなくても良い。しかし関数内で
エラーが発生したときにリカバリする必要がある場合には入れる。
(例 ファイルオープンしたあとにエラーが発生したらトラップしてクローズ)
ここで注意するのはこのエラーを内部で完全に処理し正常続行できる場合を除き
Err.Raiseを使用し同じエラーもしくは適切なエラーにして再発生させること。
でないと呼び出し元で正常に関数が終了したと勘違いしてしまう。
なお、実行時エラーではなくエラー番号で返すのはやめたほうが良い。
>>467 クラスのinitializeで発生したイベントはNewの失敗としてトラップできるので問題ない。
>>470 隠し関数的な扱いだな。俺も極稀に使う。どうせもうなくなることはないし。
>>466-467 レスありがとうございます。
エラートラップの使い方、イマイチわかっとらんみたいですので
顔洗って出直してキマス。
>>475 さんも回答ありがとうございます。
ああー、やっぱり私は理解してない!
On Error GoTo ErrXXX
Select Case ABC
Case 0
処理
Exit Sub
Case 1
処理
Exit Sub
End Select
ErrXXX:
MsgBox "エラーが発生しました。"
これってやっぱ変ですか?
現在、ActiveReportを使用して印刷プレビュー画面を表示しているのですが、 そのプレビュー画面のツールバーの印刷ボタンをクリックして印刷しようとすると 無条件でOS標準の印刷ダイアログが表示されてしまうようなのですが この印刷ダイアログを表示させないようにする方法ってなにかないですか?
自己解決しました。 え〜ん、逝って来ます。
>>479 ヘルプでPrintReportメソッドを調べてごらん。
483 :
デフォルトの名無しさん :02/12/05 19:20
>>482 レスありがとうございます。
ActiveReportObject.Show
と呼ぶとプレビュー画面が表示されますよね?
その時のプレビュー画面のツールバーの印刷ボタンを
クリックした時にダイアログを表示させない方法ということなんですが。
自分で画面つくって印刷ボタンつくってPrintReportメソッド呼べば
たしかにできますね。
その方法しかないかぁ・・・
484 :
デフォルトの名無しさん :02/12/05 20:42
デスクトップにあるテキストの中身の3行目だけを取り出して テキストボックスに表示させたいのですが どのようにすればよいでしょうか?
485 :
デフォルトの名無しさん :02/12/05 20:48
VBにエクセルを取り込むめません。 1列目の1~5行までリストボックスに 取り込む場合はどうすればよいのでしょう? f$ = "データ.xls" Set LINK = GetObject(f$) For i = 1 To 5 Name (i) As LINK.Worksheets.Application.Cells(i, 1) List1.AddItem Name(i) Next i これでも Private Sub Form_Load() Dim excelBook As Workbook Set excelBook = GetObject("C:\Book1.xls") Dim i As Integer Dim buf As String For i = 1 To 5 buf = excelBook.Worksheets(1).Range("A" & i).Value List1.AddItem (buf) Next i End Sub これでもできません。誰か教えて!!
>>48 Dim strLine as String
open <ファイル名> for input as #1
Line Input #1, strLine
Line Input #1, strLine
Line Input #1, strLine '3行目
close #1
>>483 ヘルプの
「ビューワでの印刷制御およびプリンタ設定」
ってところで、プレビューにある[印刷]ボタンの制御とか
設定できるみたい。
#私も現在ActiveReportsのサブレポート機能で格闘中。
>>487 なるほど、調べてみます。
ありがとうございます。
>>485 リストボックスうんぬんは知らんが、こんなのどう?
Dim xlApp As New Excel.Application
Dim objSheet As Worksheet, objRange As Range
xlApp.Workbooks.Open "c:\sage.xls"
For Each objSheet In xlApp.Workbooks(1).Sheets
For Each objRange In objSheet.UsedRange
Debug.Print "[" & objSheet.Name & "]" & _
objRange.Address & ".." & objRange.Value
Next
Next
xlApp.Workbooks.Close
Set xlApp = Nothing
あ、ちなみに、プロジェクトの参照設定で 「Microsoft Excel (バージョン) Object Library」の要追加です
>>487 一応、実現できそうです。
ありがとうございました。
空のフォームにビューワコントロールを貼り付けて
↓こんな感じでコーディングしてみました。
Private Sub Form_Load()
Dim cnt As Integer
For cnt = 0 To arv.ToolBar.Tools.Count - 1
If "印刷(&P)" = arv.ToolBar.Tools(cnt).Caption Then
arv.ToolBar.Tools(cnt).ID = 999
arv.ToolBar.Tools(cnt).Enabled = True
End If
Next cnt
End Sub
Private Sub arv_ToolbarClick(ByVal Tool As DDActiveReportsViewer2Ctl.IDDTool)
Select Case Tool.Caption
Case Is = "印刷(&P)"
arv.PrintReport False
End Select
End Sub
492 :
デフォルトの名無しさん :02/12/06 12:33
VBで現在のPC上のCOMポートをコンボボックスなどに列挙したいのですが、 通常のマザーボード上のCOMポートは以下のソースで列挙できました。 ' --- com --- Dim objPort As Object For Each objPort In GetObject("winmgmts:").InstancesOf("Win32_SerialPort") combo1.additem objPort.Name Next ' ----------- しかし、USB→シリアル変換ケーブルを使っていると、デバイスマネージャー上では COM3などと認識しているUSBのCOMポートが上記のソースでは列挙できません。 なにかよい方法は無いでしょうか?お願いします。
何でも良いので教えてください
494 :
デフォルトの名無しさん :02/12/06 14:20
Controls.Addを使って動的にコントロールを追加するときに、 チェックボックスのスタイルをグラフィックスにするみたいに、 コードで変更できないプロパティを設定するのはどのようにすればよいのですか? どなたかお願いします。
単にそれぞれの変数に値が入っているかのチェックを行いたいのですが、 チェックする値がたくさんあるのでまとめて処理したいのです。 良い書き方はありますか?
498 :
デフォルトの名無しさん :02/12/06 14:47
配列変数なんだったらFor...NextでOKだろうけど、 一つ一つが全然違う変数名なんだったら地道にやってもらうしかない。 がんがれ。
>>498 そうだよね、ありがとう。
がんがります。
>>499 1つわかると1つ忘れる…
鬱だ氏脳
文字列をある区切り文字(”:”など)で分割して得たいのですが そのための関数らしいsplit関数の使い方が分かりません。 簡単な例で結構ですのでお教え願えませんでしょうか?
>>501 Dim strHoge() As String
strHoge = Split("Hage:Hige:Hoge", ":")
これでstrHogeはHage,Hige,Hogeが入った一次元配列変数になる。
>>502 うっさい、はげ
>>503 ありがとうございました。配列を返す、という関数や要素数を指定しない配列
を使ったことがないのでわかりませんでした。
事故解決デスタ SetWindowLongでスタイル渡すだけデスタ。 カスな質問すんませんデスタ
507 :
デフォルトの名無しさん :02/12/06 16:13
>>495 チェックする部分を関数にして
array使ったら?
心得 壱.質問する前に過去ログにも目を通してみる。 弐.質問する前に MSDN などで調べてみる。
509 :
デフォルトの名無しさん :02/12/06 16:17
偶数、奇数を判定するにはどうすればよいですか? Select Case 文で総当りするのはどうも現実的でないような気がするので、 よい方法をおしえてください。おながいします。
510 :
デフォルトの名無しさん :02/12/06 16:21
511 :
デフォルトの名無しさん :02/12/06 16:24
mod って何ですか??
割ったあまりをだす算術演算子
513 :
デフォルトの名無しさん :02/12/06 16:30
> 割ったあまりをだす算術演算子 それと偶数、奇数と何の関係が?
>>513 偶数、奇数がどういう数値であるか考えてね。
515 :
デフォルトの名無しさん :02/12/06 16:31
516 :
デフォルトの名無しさん :02/12/06 16:35
>>513 ヒントもらったら自分で考えるなりしてくらはい。
modくらい検索すれば一発で出ますが。
>>513 ボク、2で割り切れる数が偶数なんだよ( ´,_ゝ`)
再質問です コントロールのプロパティを指定した形で コード記述で作成できないでしょうか? ex) Dim mytext As TextBox Set mytext = Form1.Controls.Add("VB.TextBox", "mytext") mytext.MultiLine = True '←参照しかできないのでエラーとなってしまう 読取専用のプロパティの変更は無理なのですか?
>>510 >>512 >>514-517 ──■──■──────■─────────■────────────
─■─■─■────■■■■■─────■■■■───────────
■■■■─■■■■───■──■■─────■─■■■■──■■─■■
──■─■───■───■─■──■───■──────■─■■─■■
■■■■────■───■■───■───■─────■───■■■─
──■──■──■──■■────■──■───■──────■■■─
■─■■──■─■─■─■────■──■──■────────■──
─■■─────■───■────■─────■────────■──
■■────■■────■─────■─────■■■■■──────
520 :
デフォルトの名無しさん :02/12/06 16:43
餌も何もなくて釣りか。 メール欄なりたて読みなり活用すりゃよかったのに。 おめでてーな。
>>519 は偽者なんで気にしないでください。
もうちょっと自分で頑張ってみます。
523 :
デフォルトの名無しさん :02/12/06 16:47
ADOで数件のデータをINSERT使用としているのですが ADOってバインド配列使えないのですか?oo4oみたいに。
>>509 「総当り」とか寝言ほざいてる時点であきらかにネタだと思うんだが?
>>522 >もうちょっと自分で頑張ってみます。
いや、皆さん一通り答え書いてくれてますが。
>>524 そうか? 偶数ってなに? にーしーろっぱっとっ見たいな奴。
って覚えている奴ならそういう考えも出てくるかも知れんぞ。
たぶん、リアル消防だと思われ。って偶数奇数っていつ習ったっけな?
>>526 数学でも高校1年くらいじゃなかったっけ?
偶数とか奇数とか生成できる式習うのって。
>>529 人を小ばかにしすぎると、自分に対する嫌悪感が積もりに積もって死にたくなるよ。
>>529 意味自体は分かっているが、実行時読取専用プロパティを変更した状態で
Controls.Addで追加する方法を聞いているのだと思われ。
MSChartを使ったとき、プログラム実行したら最初にグチャグチャの グラフが表示されますが、あの汚いグラフを消すことは可能ですか?
「読み取り専用」はクラス(プロパティ)の設計上の問題なので、「なぜそのような設計にしたのか」 (「せざるを得ないのか」、「でないと都合が悪いのか」)背景を考察するのが正しい楽しみ方。
>>532 出来るんじゃねーの。使ったこと無いけどさ。Clearメソッドとかあるんじゃない?
SetWindowLongで変えらんないかね?
>>533 multilineをいじれない理由って微妙だね。
>>535 プロパティとの整合性取れなくなる場合もあるだろうからクラスから出ているインターフェース
以外でウインドウを操作するのはどうかとも思われ。
いちいち問い合わせてるなら委員だろうけど値。
>>533 自分が読み間違えたからって他人の質問を勝手に背景を考察する〜とかに変えるんじゃねーよ。
VBで秀丸のように キーワードを強調して表示できるテキストエディタはつくれますか?
>>540 キーワード強調だけならRichTextBoxで作ったことあるよ
がんばればできる
>>542 秀丸さんは全部自前で描画してるみたいです。
解決しました。スンマセン
>キーワード強調だけならRichTextBoxで作ったことあるよ >がんばればできる 実際にやったことあるけど、しっくりこなかった Delphi の TEdior みたいなのってないの?
>>546 正直、コンポーネント厨はかっこ悪いです。
VB厨とDEL厨を敵に回したな…
>>546 DelphiのTEdiorに対応するのはVBではTextBoxだが、
TEditorってキーワードの強調(テキストの一部だけ色を変える)ってできたか?
>>548 Delphiは「コンポーネントは自作してなんぼ。」が理念のソフトです。
>>549 TEditと誤解されてます。
TEditor (スペルミスした...) アルゴリズムさえわかれば自作します...
>>551 はい。誤解してます。恥。
>>550 でいいのかな。どうやら非標準の有償のコンポーネントみたいだね。
それならVBでも捜せばあるんじゃない?
ないならないでTEditorをActiveX化して使うとか。
あっ言っとくけどコンポーネント使うだけじゃなくて作るって案も忘れずにね。
確実に釣れるネタ教えてください。おながいします・・・。 (巡回セールスマン問題?それとも、素数ネタ・・・?)
>>555 ルアーじゃ無理。やっぱ魚の好きそうな餌をつけんと釣れんばい
VB で TEditor 並みの処理をやるのはパフォーマンス的に無理だ。 やるとしたら、C++ か何か高速な言語で ActiveX を作るべきだ。
>>557 ...そうですか...
せめて 行番号の表示とかは無理でしょうか
(行番号を表示させているVBフリーウェアがたったけど)
>>555 一度釣られると免疫ができるというか、警戒心が強くなるから、最低でも1ヶ月ぐらい空けないとダメだよ。
それから、釣りばっかりやってると、そのうち誰にも相手にされなくなるから気をつけてね w
>>557 そうか? やってみもしないで断定するのはよくないと思うぞ。
釣りとその関連の話はスレ違いだからよそへ行ってくれ
564 :
デフォルトの名無しさん :02/12/06 19:16
く〜だらない質問なんだけど、 コードを書いているときに縦のスクロールバーが出て、 マウスの回るところをクルクル動かしてもスクロールしないんですよ。 スクロールできるようにならんかね?
>>565 NECのバリュースターで、WinMe。
VBはバージョン6.0。
ドライバの問題のような気がする。 他のアプリではホイールは利く?
>>567 うん。VC++でも大丈夫。
なのにVBだけが・・・おまけに会社で使っている
パソでも動かない。会社のパソは日立のフローラで
Win2000。VBも6.0・・・。
なんでだろ〜なんでだろ〜
>>568 どっかのMLで見たような気がするけど、思い出せない・・・。
>>561 TEditor 程の機能のではないが、VB で実際にエディタっぽいのを作ろうとした事
があった。
描画は思った程遅くはないんだが、文字データの問題で使い物にならない。
全部を 1 つの String に詰め込めばサイズが膨れるほどに遅くなっていくし、
1 文字ずつ配列に格納すれば追加と削除で言わずもがな。
もっと高速にできる方法はあるか?
>>568 ウチもVCは動くけどVBは出来ないよ。
どこでもホイールで解決した。
>>564 >>569 どっかのMLで思い出した。
>> プログラミングに付いてではないのですが、VB6.0のプログラム画面
>> (実際にコードを打ち込む画面)でマウスのホイール(スクロールボタン)を
>> 有効にすることはできないでしょうか?。
>
>FAQ だったりしますが、インテリポイントのドライバを最新版に
>してください。
>>570 一行ごと配列に入れるとか。一文字づつByte型に入れるとか。
Microsoft IntelliPoint入れろって。 VBはMicrosoft IntelliPointでホイール動くようになるもんだ。
ぬるぽって何ですか?
http://www.akitsusoft.cjb.net 高度な計算を簡単に実行可能な【関数エディタ】を実装。
サインやコサイン、また平方根などをキーボードから入力するほか、関数エディタを使って入力できます。
また特殊な計算として旅人算と鶴亀算、フーリエ展開によるパイの算出機能をバンドルしました。
VB6で開発しますた。
>>577 >鶴亀算、フーリエ展開
すごい差だな。
鶴亀算によるパイの算出機能か・・・すげーな
( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/ ←
>>576 (_フ彡 /
>>575 マジでサンスコ!!!
つーか、マイクロソフト社はバッチを配布してホールに対応できるように
したほうがいいんじゃないか???
一々アプリケーションとして立ち上げないといけないのは弊害がある。
585 :
デフォルトの名無しさん :02/12/07 19:59
FARPOINT SPREADで、飛び飛びの列を印刷する方法ってありますか?
586 :
デフォルトの名無しさん :02/12/08 08:54
ある計算をさせて、その所要時間を計測したいんですよ、1秒以下の単位で。 「Now」だと1秒単位なので使えません。 良い関数あります?
スマソ。Timerがあった・・・。
>586 TimeGetTimeとかは?
589 :
デフォルトの名無しさん :02/12/08 10:36
はじめまして。 テキスト>HTMLの変換ツールを作っているのですが、 処理に時間がかかるので変換の進行状況をテキストボックス などに表示しようかと思っています。 が、プログラムの実行中は書き換えた内容が反映されない ようで、処理終了後にまとめてメッセージが出てしまいます(^^;。 このような症状はどのように回避すればよろしいでしょうか。 ご指導のほどよろしくお願いいたしまするるる。
>>590 ありがとうございます。
これで幸せになれそうです(^^)。
横レスで申し訳ありません。 以前からヘルプを見てもDoEventsが理解できなくて困っているのですが、 Windowsに処理を渡すというのは何の利点があるのですか? というか、意味を理解していないので、どういう動作をしているのかも理解できません。 どなたか識者の方、わかりやすく教えていただけませんか?
>>592 ウインドウズがメッセージを処理できる。
594 :
デフォルトの名無しさん :02/12/08 11:13
>>592 試しに、テキストボックスを使ってスロットマシンを
作ってみませう。
ありがとう。 なるほど、処理を割り込ませることができるんすね。 使いようによっては恐いことになりそうな気もしないでもないですが。。。 勉強になりますた!サンクスです。
> 使いようによっては恐いことになりそうな気もしないでもないですが。。。 正解。そういうところに気づけるのは偉い。どうしても必要な場合を除いて使わないほうがいいよ。 得に「適当にDoEventsを入れてみたらバグら無くなった。ラッキー」なんてことは絶対止めるように。
>>592 前にもこの板で見たような気がするが、コピペ荒らしかな?
>>598 一応レス返してるから違うんじゃない。
ところかまわず「釣れた」をコピペする奴がでないといいんだがね。
何か分からないけど違います。 過去ログ見なかったのは謝ります。すみませんでした。
601 :
デフォルトの名無しさん :02/12/08 15:50
テキストボックスっていえば、テキストボックスの最終行に表示を強制的に移動するのってどうやるのん?
>>601 テキストボックスって言えばの意味がワカランが
Text1.SelLengthのことかい?
SelStartメソッドとか。EM_LINESCROLLメッセージを送るとか。
>>602 わかりにくくてスマソ。
テキストエディタなんかでいう、「最終行に移動」ってやつっす。
調べたけどわからんかった。
SelStartとLenで出来る。
>604 ENDキーを押した状態にしてやれば?
ENDキーではカーソルは動かなく無い?
やりたいことが、その行の最後なのか、そのテキストの最後なのかしらんが、 >607 ENDキーは、どんな動作になるの?何のためにあるの?
>>609 エディタ依存だから滅多なこと言わん方が良い。
>610 601がテキストボックスって言ってるんだから、テキストボックスなんじゃない?
お世話になってます。
>>611 テキストボックスでつ。
計算結果をリアルタイムで表示させたいんでキー操作をシミュレートすんだけだとダメかも(まだ試してないけど)。
605さんの意見を参考にいじってるんだけど、中々うまくいかないねぇ(--;;。
613 :
デフォルトの名無しさん :02/12/08 17:08
スプレットシートの作成コード教えてください
すみませんが、VB6.0の勉強を始めた初心者なのですが いちいちフォームを自分で作るのが大変です。 ラベルやボックスの大きさや位置の調節も面倒で... 自動調節して配列できるような機能はないのでしょうか?また よく使われるようなフォームはあらかじめ素材集のように テンプレートが用意されていてもいいと思うのですが そのようなものを配布しているサイトはないのでしょうか? 自分で作るしかないのかなぁ
>>615 初心者なのに、そんな大々的なもの作るのか?
というか、自分の意図するコントロールがテンプレに並んでいるとは限らないので
必要性が感じられない。
>>615 捜せばそういうコントロールがフリーであったとおもう。
でなければ自分で作るとか。初心者にはちょっときついとおもうが。
618 :
デフォルトの名無しさん :02/12/08 19:53
学校のExcel VBAの課題をやってるんですが、 「新しいシートexam01を作成する。既にある場合は削除する処理を行う」 ってのがどうしてもわかりません。 ifのあとなんて書いたら良いんでしょう?
If exam01というシートがあるか Then シートexam01を削除する処理 Else シートenam01を作成 End If
620 :
デフォルトの名無しさん :02/12/08 20:05
>619 ありがとうございます。「exam01というシートがあるか」ってのが わからないんですよ。なんか関数使うんですかね?
>618 On Error Resume Next exam01を削除する。 On Error GoTo 0 exam01を作成する。
>>621 その方法が一番簡単で確実かな。
# コレクションを総なめする手もあるけど。
>>622 荒いコードではあるが、開発コストを最小に抑えるという意味では
理に適っているかと。w
>>618 の行間を補完すると、すでにある場合は削除後、再作成、と読める。
(というか、その方が常識的には無難な仕様と思える)
であれば、題意に合うのは
>>621 の方で、
>>619 の方が不正解か?
発問が言葉足らずだと、解答を導くのに想像力が要求されるね w
ったく
>>621 が確実とおもう奴の気がしれん。
題意に適ってないのは別として、
削除するときに発生するエラーをすべて無視すんな。
存在しないものを削除するときのエラー以外のエラーがでたらどうすんだ。
>>629 まーまー、この時間のヤシらはアフォばっかなんでごめん。
>>629 当然、他のエラーはデバッグ段階ですべて潰しとく前提でしょ。
If Err.Number = なんちゃら Then
で分岐すれば、エラーごとに区別できるし。
それ以前に、ガッコの宿題なんだから、この程度でじゅうぶんかと w
>>631 実行時エラーがデバッグ段階ですべて潰せるわけないだろ。
すべて潰れるならOn Error Resume Nextも必要ない。
すまん。学校のセンセがどんな顔するのかというのを想像して投げてみました。 発想的に美しくない。宿題レベル想定したら619+623が正解ね。 ここでつるつもりじゃなかったんだけど、結構反応がでかくなってしまったので少し慌ててしまった。
>>634 冗談でやっているならいいんだけど、本気であんなコード書く奴がいるのが問題なんだよな。
636 :
◆eXfHVE5ZhU :02/12/09 00:19
質問です。 外部のListViewに対して、 その何項目の3カラム目は何かを取得したいんです。 自アプリ内でならそりゃ簡単ですけど 外部アプリに対してはどうやればいいんでしょうか?
637 :
デフォルトの名無しさん :02/12/09 00:55
Yahoo等で検索したオートコンプリートはどこに格納されているのでしょうか? アドレスはレジストリにありましたが・・・ その辺を削除して証拠隠滅するソフトが作りたいのです
>>635 まあコレクション総なめ判定よりはずっとマシだがな
640 :
デフォルトの名無しさん :02/12/09 09:02
>>636 見ず知らずの外部アプリとなればSDKレベルしか思い付かない。
LVM_GETITEM 辺りを送れば何とかなるんじゃないかな?
それよりHWNDを捕まにゃ話しにならぬが...
>>637 IEなら
\HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs
の中にあるURLを削除。
645 :
デフォルトの名無しさん :02/12/09 12:30
プログラムの中の時計と、パソコンの時計を分けたいのですが どうすればいいでしょう? 繰り上がり計算とかあって、頭の中が 混乱してしまいまして・・・(;´Д`)オレッテホントニバカ パソコンの現在時刻:”23:59:59” プログラムの現在時刻:”12:23:40” とかです。パソコンの現在時刻とプログラムで最初に設定する 時間の差を保存記録しておいて、その差とパソコンの現在時刻 でプログラムの現在時刻を出そうとしたのですが、パソコンの現 在時刻が”00:00:00”になった瞬間、狂ってしまうのです(当たり前) この辺から頭が着いていかない・・(;´Д`)オレッテホントニホントニバカ
日付/時刻型ってのがあるんだから・・・ プログラムの最初で、システム日付との差を取得。 それ以降は、システム日付から差を足し引きするだけでいいだろ・・・
>>646 自分でバカと書いてるんだから、叩いてやるのが礼儀かと。w
初歩的な質問ですみませんが、 分かる方いらしたらご回答よろしくおねがいします。 コンボボックスがありまして、中身は以下の感じになっています [ListIndex] [値] 1 "A" 2 "B" : : : : 8 "G" これで、2003/4月以前はリストインデックスの1,2,3,4,5の値を 2003/4月以降はリストインデックスの1,6,7,8の値を 表示させるようにしたいです。 リストインデックスはそのまま保ちたいです。 へたくそな質問ですみません。
>>648 メアド欄に fusianasan と記入して、再質問してください。
了解しました。 初歩的な質問ですみませんが、 分かる方いらしたらご回答よろしくおねがいします。 コンボボックスがありまして、中身は以下の感じになっています [ListIndex] [値] 1 "A" 2 "B" : : : : 8 "G" これで、2003/4月以前はリストインデックスの1,2,3,4,5の値を 2003/4月以降はリストインデックスの1,6,7,8の値を 表示させるようにしたいです。 リストインデックスはそのまま保ちたいです。 へたくそな質問ですみません。
>>648 > へたくそな質問ですみません。
そう思うなら上手く書き直せよ。
>>649 なんでIP知りたいんですか? IP教えても答えないくせに。
>>650 >初歩的な質問ですみませんが、
こういう余計な一言は反感買うもと。
要するにリストボックスの内容の一部を
一時的に非表示にしたいわけだろ?
残念ながら、多分できないと思われ。
>>650 名前欄に fusianasan と記入して、再質問してください。
>>650 そうですか、どうもありがとうございました。
>>654 2度も引っ掛かるわけねえじゃん!w
一発で仕留めろよ w
いろいろとありがとうございましたm(__)m 質問変えます Controls.Add()を使って(動的に) Formに文字を複数行(TextBoxのMultiLineみたいなの)を 作りたいのですが無理ですか?(^^;) Controls.Add()でなくてもいいですが・・・多分これが必要ですよね?
662 :
名無しさん :02/12/09 15:29
VB5.0でソフトを作成しています。 そこで、今回VBを使用して、excelにBOOKを作成してそこに値を投入 しようとしています。 しかし、OSとexcelの組合せで動くときと動かないときがあります。 Win2k・xpでは正常に動作するのですが、 win98系だと、ループ処理中に ”他のアプリケーションがサーバを使用しているため、この操作を完了 できません” というエラーポップアップが出て処理することが出来ません。 やはりOSによって、外部アプリへの値の受渡は変わることはあるのでしょうか? また、そのような場合は何か修正を行うことで回避することは出来るのでしょうか? よろしくお願いします。
>>659 コントロール配列にしてLoadで数を増やすとか
TextBoxをMultiLineにしたコントロールを作ってそれを使うとか。
>>662 Excelを非表示にしてもそのメッセージ出る?
>>664 さん
お返事ありがとうございます。そうですね。非表示にして行っているのですが、
それでも途中で処理が固まったような状態になって、VBのフォームの何処を
クリックしても同じポップアップが出てきます。
>>666 企業秘密だ。
お前なんかに見せてたまるか!
>>665 おかしいな。こっちでも実際に試してみたけど、
Excelを非表示にするとそのメッセージは出なかったよ。
> 668さん そうなのですか。ありがとうございます。 私の場合、結構シート数とセル数を使っているのが原因なのかも知れないです。 10シートで1シート辺り200X10セル位使用しています。
670 :
デフォルトの名無しさん :02/12/09 17:08
VBで新しいコントロールを作ったとき、オブジェクト名にlbl tmr というような接頭辞をつけるというのが慣用だと聞いたのですが デフォルトではLabel1やcheck2のような命名がされてしまい、 いちいちリネームするのが面倒です。設定でlbl1やchk2のように 命名をカスタマイズする方法ってないものでしょうか? やっぱりそんなことで悩まないくらいタイピング早くした方がいいのだろうか...
>>670 > やっぱりそんなことで悩まないくらいタイピング早くした方がいいのだろうか
正解!
後からまとめて直す(お奨めしないが)必要がある場合は、スクリプトで
書き換えるのが吉
>>663 お返事ありがとうございます
>TextBoxをMultiLineにしたコントロールを作ってそれを使うとか。
読取専用プロパティを設定した状態でコードでコントロールを
作れないので敗れました 参照
>>518 >>529-539 文字列をぶった切ってTextBoxをならべるってのなんですが
文字列をどこで切ればいいのか分からないという問題もあります
よろしくお願いします
>>672 >>663 の一行目はどうなんだ?それと二行目は読取専用プロパティを設定した状態の
ユーザーコントロールを作れという意味だ。
> 文字列をぶった切ってTextBoxをならべるってのなんですが
答えてほしいならもっと分かりやすく書け。
>>672 >>663 の一行目はどうなんだ?それと二行目は読取専用プロパティを設定した状態の
ユーザーコントロールを作れという意味だ。
> 文字列をぶった切ってTextBoxをならべるってのなんですが
答えてほしいならもっと分かりやすく書け。
>文字列をぶった切ってTextBoxをならべるってのなんですが >文字列をどこで切ればいいのか分からないという問題もあります うむ。勝手に解決してくれ。
ActiveReportで、メインレポートのDetailに表示するレコードと同じものを、 PageFooterのサブレポートに表示したいのですが、 同じコードをメインレポート、サブレポート両方に書くと、 メインの方は 1ページ目 1,2,3,4,5 2ページ目 6,7,8,9,10 と表示されますが、サブレポートは欠番が出てしまい、 1ページ目 1,2,3,4,5 2ページ目 7,8,9,10 となります。イベントの発生順序が原因のようなのですが、 無理やり的な回避方法しかわかりません。 どなたか解決方法をご存知でしょうか? 以下にコードを示します。
Private Sub ActiveReport_DataInitialize() Fields.RemoveAll Fields.Add "test" Field1.DataField = "test" End Sub Private Sub ActiveReport_FetchData(EOF As Boolean) If mintRow > UBound(gstrTest) Then EOF = True Exit Sub End If Fields("test").Value = gstrTest(mintRow) EOF = False mintRow = mintRow + 1 End Sub
Private Sub Detail_Format() Static intLine As Integer intLine = intLine + 1 If intLine < 6 Then ' 新規ページの追加を無効にする Detail.NewPage = ddNPNone Else ' 新規ページを追加し、カウンタをリセットする Detail.NewPage = ddNPAfter intLine = 0 End If End Sub
679 :
デフォルトの名無しさん :02/12/09 21:50
VB6で質問です。 しょーもない質問かもしれませんが、WindowsもしくはVBのバージョン違いで 例えばDate関数などで返ってくる文字列の形式が違う、なんてことありましたっけ? 前に例えば”2002/12/09”ってのが”02/12/09”とか、があったのを覚えている のですが、どれがどれだったかよく分からなくて。 DOSなんかだとセパレータが"/"じゃなくて"-"でしたよね?
>>679 マシンの地域の設定で変わる場合があります
>>679 Date関数で返ってくるのは文字列じゃなくて日付型だ。
デフォルト変換に頼るからだな。 Format 使えば。
前スレで誰かが、VB6でVBSを書く時に入れる参照設定の質問&回答を してた気がするけど、前スレdat落ちしっぱなしなので、 誰かそのときのやりとりウPしてくれんかい?
>>683 ぐーぐるキャッシュに無いのかな?
とりあえず
774 名前:デフォルトの名無しさん[sage] 投稿日:02/11/21 07:49
VBSって、VB6みたいにプロパティなどのヒントが出る、プログラミング環境っつうか、
そういうエディタとか無いでしょうか。
ヘルプも欲しいな。。。素人が始めるにはキツいっす。。。
775 名前:デフォルトの名無しさん[sage] 投稿日:02/11/21 08:40
>>774 VBでプロトタイピングしてから、VBSに書き換える。
(なんか違うような予感・・・)
805 名前:771[] 投稿日:02/11/21 15:02
>>774 Visual InterDev使うとそこそこ入力支援してくれます。
VB6を使うなら 参照設定で「Microsoft Html Object Library」をチェックすると
入力支援やらオブジェクトブラウザやら使えて便利になるんだけど
移植しないといけないです。
>>680 ウィンドウズじゃなくて、ハード?
>>681 確かにそうだが、682さんの言うように自動変換後の文字列なのです。
いちいちいわんとわからんか?はげ
>>682 ま、確かにFormatで吸収できそうなんですが・・・それが無難かな。サンクス。
>>684 サンクス!
ログは消すもんじゃないな。ほんとに。
>>685 681ではないが…
回答者を煽った時点で答えをもらう権利は剥奪されます。(・∀・)カエレ!!
Date$ というのもあったよな。確か。
うにゃ?
>>685 お前のような欠陥品を出荷するとは、お前の両親も相当のクズだな?
どうせ、ゴム漏れ(w)の「できちゃった」ちゃんなんだろ
(それとも橋の下の・・・)
はよ首吊って氏ねや
サック漏れ(W)の予定外出生だか、橋の下だか知らんが、
>>501 に対する
>>504 とか、
>>681 に対する
>>685 とか、根本的にお前ら人間的にどうよ?と首をかしげる香具師が
多いな。
こいつら、一体どんな教育を受けて来たんだ?
みんなおちつけ! /\⌒ヽペタン / /⌒)ノ ペタン ∧_∧ \ (( ∧_∧ おい、おまいもちつけ! (; ´Д`))' ))(・∀・ ;) / ⌒ノ ( ⌒ヽ⊂⌒ヽ .(O ノ ) ̄ ̄ ̄()__ ) )_)_) (;;;;;;;;;;;;;;;;;;;)(_(
>>691 指摘や揶揄には逆ギレして噛み付くのが2ちゃんねるのマナーなのれす
業に入っては業に従いましょう(w
要はサブレポートの改ページ方法をご存知の方、 アドバイスお願いします…。・゚・(ノД`)・゚・できないよ〜
TextBoxのすくローリバーをプログラムで移動せる方法知ってますか? SetスクロールPos 使っても移動させらるのですが TextBoxの中身まで移動してくれません スクロールバーと中身を同時に動かしたいなぁぁぁぁぁ亜ア
>>696 SetScrollPosのあと、TextBoxをRefreshしても駄目?
>>697 おまい・・・・ よくこんなのをまともに相手する気になるなあ
もしかして福祉関係の仕事とかしてる?w
>>697 そうか! 思いつかなかった
試してみます
700 :
デフォルトの名無しさん :02/12/10 14:13
VB6で、Ctrl + Yで「進む」じゃないんですか? たとえば、Ctrl+Zで「戻す」をした後、Ctrl+Yで「戻した物を戻す」(ようは進む)ときに カーソルの当たっている行から、行毎に削除されていっちゃうんですが... それで慌ててCtrl+Zで戻しても戻るのは10行ちょっと... ああ書いたコードがきえちゃった...。・゜・(ノД`)・゜・。 Windows2000 IE6.0sp1 ATOK15 Office2000
>>700 メニュー見ての通り、やり直しに CTRL + Y は割り当てられていないね。
メニューのコマンドを直接実行してやり直すことはできないの?
>701 それだと無問題です。 ただ、多分なんですが、1年前に触っていたVB5では普通に使っていたような... >701さんはこの現象でないですか?というかCtrl+Yなんて押しても何ともならないですか?
>>702 いや、たしかに CTRL + Y で該当行がクリアされるね。
VB5での挙動は、すまん、分からん。
VB6での『やり直し』メニューのショートカットキーはありません ツールバー上にはあります VB6で『Ctrl+Y ショートカットキー』が押されたことをフックし かわりに『やり直し』メニューを送るプログラムをVB6で作成 してください
>703 ありがとう、他でもなるならこっちが壊れてるんじゃないのが確認出来ました。 >704 ( ´Д`;)ゝウゥ...
教えて下さい。 サウンドカードの付いていないWindows98のマシンで、BEEP音がなりません。 APIのBEEPやMessageBeepもなりませんでした。 検索した結果、 Shell Environ("ComSpec") & " /c echo " & Chr(7), vbHide では、なることはなったんですが、BEEP音ぽくない音で。 MB側からShell〜はなるので、どうにか鳴るような気がするんですが。 よろしく〜
>>706 パソコンの BEEP は基本的に鳴らせませんよ。
でも世の中には BEEP スピーカを使って wave ファイルを鳴らすソフトウェアがあるとか。
>>707 ボリュームコントロールの音量を変えたときだけBEEPでなります。
その他のところでBEEPが鳴ったことはありません。
ボリュームコントロールの音量を変えたときもWAVで鳴らしたいんですが
どうすればいいんでしょーか。ってスレ違いよん。でも知ってたら・・・。
709 :
デフォルトの名無しさん :02/12/10 16:39
コンボボックスで「表示してるけど選択できない」ってできますか? listindex = -1 へ入れられたら理想なんだけど。。。
>>709 ? 言ってる意味がよく分からんのだが
Enabled = False じゃなくて?
ListIndex = -1 って普通に実行できるし・・・
たとえば ねずみ うし とら うさぎ かえる というコンボボックスがあって、 ねずみ〜うさぎは選択できるけど、かえるを選択しようとしたらスペースになるか無反応、 って動作を期待してます。 無理すか?
もしかえるが選択されたら条件分岐していろいろする
どうもご回答ありがとうございます。 いろいろ調べて見ましたが、どうもダメですね。 Windows2000では当然のように鳴るので、なにか設定うんぬんかと思ってました。 Windows2000の場合はBeepデバイスが、そのソフトの役目をしているって事でしょうか? そうゆうソフトがフリーとかでないですよね? 今日はもう疲れますた!
素朴な疑問なんですが、msgboxで表示させる文字を大きくすることはできますか?
指定した ウィンドウハンドル がパソコン上に存在するか否かを
調べるよい方法はありますか
>>715 MessageBox()APIのDraw(描画処理)を捕まえて
何かするとできます
この方法だと左に表示されるアイコンも自己描画できます
レジストリ弄って画面のプロパティのフォントサイズ変えるべし。
>MessageBox()APIのDraw(描画処理)を捕まえて >何かするとできます >この方法だと左に表示されるアイコンも自己描画できます ここまでやったら、それことFormで自作した方がってやつだなぁ。
そ れ こ と
>>721 いけずなあんちゃんやなぁ。
関係ないけど、プロジェクトXとガチンコの
ナレータを入れ替えたらおもろいだろうなぁ。
>>711 コンボボックス語るにはText部をどうするか決めないと...
後は妥協次第。
> MessageBox()APIのDraw(描画処理)を捕まえて > 何かするとできます > この方法だと左に表示されるアイコンも自己描画できます そんなことしないでもWM_SETFONTやSTM_SETICONを 一度送っておけばよいのだが。 ちなみにアイコンはMessageBoxIndirectでも指定できる。
725 :
デフォルトの名無しさん :02/12/11 12:31
CSVファイルを扱う標準関数ってありますか?
726 :
デフォルトの名無しさん :02/12/11 12:33
728 :
デフォルトの名無しさん :02/12/11 13:59
ウェブブラウザ上でマウスイベントをさせたいのですが、 MSHTML.TLBファイルを参照設定して、 Private WithEvents Doc As MSHTML.HTMLDocument と宣言して、ページの読込が完了した後で、 Set Doc = WebBrowser1.Document として、doc_onmousemoveのイベントが使えたのですが、複数フレームがあるときにはエラーが出てしまいます。 複数フレームがあってもマウスイベントが使える方法を教えてもらえませんでしょうか?
配列
730 :
デフォルトの名無しさん :02/12/11 14:24
>729 docを配列にするのでしょうか?
(´-`).。oO(とりあえずやってみてから質問しろよ
732 :
デフォルトの名無しさん :02/12/11 14:26
VBでエクセルを操作してCSVを開いてるんですが、2万行のCSVを開くだけで 3分ほどかかってしまいます。 ちなみにソースはこんな感じです。 CommonDialog1.Filter = "CSVファイル(.csv)|*.csv" CommonDialog1.DialogTitle = "前日のファイルを指定してください" CommonDialog1.ShowOpen fnm1 = CommonDialog1.FileName 'エクセル読み込み1================================= Set exl1 = CreateObject("Excel.Application") exl1.Application.Visible = True exl1.Application.Workbooks.Open FileName:=fnm1 なんとか高速化する方法はないのでしょうか?
エクセル使わなきゃいいじゃん
734 :
デフォルトの名無しさん :02/12/11 14:29
>731 Private WithEvents Doc(10) As MSHTML.HTMLDocument とやってみましたが、エラーが出ました。配列は使えないのでしょうか?
(´-`).。oO(エラーメッセージ見ろよ
736 :
デフォルトの名無しさん :02/12/11 14:32
>735 (; ´Д`)コンパイルエラー 修正候補:As ですた
おい、ネタか? Witheventsは配列にできんや炉
740 :
デフォルトの名無しさん :02/12/11 14:46
>739 (; ´Д`)やっぱり・・・なにか方法ありませんか?複数フレームがあっても webbrowser上でマウスイベントを認識してくれる方法はありませんか?
741 :
デフォルトの名無しさん :02/12/11 14:50
>>733 たとえば
一つ目のCSVに A-1(商品番号),商品名1,100個,1000円 って行があるとして
二つ目のCSVからA-1って商品番号を検索したいんですよ。
それならエクセルに読み込ませて、find使った方が早いのかな?って
思ったんですけど。
エクセルのほうが速いという根拠が知りたい・・・
エクセルは驚速
744 :
デフォルトの名無しさん :02/12/11 15:13
>>742 CSVを直接検索って出来ましたっけ?
CSVを1行ずつ見つかるまでループさせて探すよりは、find使った方が
早いと思ったんですが・・・。
VBでそれなりのプログラム組めばできますよ。
>>740 MSHTML.HTMLDocument をラップするクラスモジュールを作って
それを配列にするとか
>>740 HTMLDocumentをラップするクラスを作り、そのクラスのイベントプロシージャで
必要な処理をさせる。後はラップクラスを必要な数だけ生成すればよい。
新婚旅行はどこに行かれるんですか?
>>732 > exl1.Application.Visible = True
これはアカンやろ。
最初は Visible = False にしておいて、Openしてから Visible = True にすれ。
>732 ADOじゃ駄目?
>>741 ADOとかで接続した方が速いと思うよ。
よろしゅうお願いします(w
>>744 サーチとかソートとかのアルゴリズムで作るのがイヤな場合は
エクセルで作ったほうが(プログラム作成の時間は)速いでしょうね。
755 :
デフォルトの名無しさん :02/12/11 15:47
>>749 あぁ、すいません。
その後の処理を見たかったんで一時的にtrueにしてるだけです。
>>750 ,751
データベースってほとんど使ったこと無いんですよね・・・。
やっぱそっちが早いですよねぇ・・・。
>>755 754の逆を言えば、サーチなどのアルゴリズムを使用すれば満足の行く
レスポンスで作ることが可能かと。
プログラマさんであれば、アルゴリズムくらいは理解してますよね?
757 :
デフォルトの名無しさん :02/12/11 16:00
>>756 残念ながらプログラマですらないのです。
日常のエクセル処理をちょこまかとVBでこなしてるだけど
なんちゃってプログラマです。(^^;
758 :
デフォルトの名無しさん :02/12/11 16:04
間違い だけど → だけの
>757 Excelオブジェクトいじくり回すのは結構な高等技術だと思うYO。 2万行程度なら、頭から読んでいくバカサーチでも十分とちがう?
>>759 データが5000くらいあった場合、検索する数は (20000*5000)/2 くらいか?(笑)
> Excelオブジェクトいじくり回すのは結構な高等技術だと思うYO。 どのあたりが?
762 :
デフォルトの名無しさん :02/12/11 17:18
メニューバーなんかがいじくれれば、十分じゃない?
最短距離で最適な解答に辿り着けない低劣IQ持ちなPGが蠢いてるスレはここですか?
楽をするためにはどんな困難も平気ですが、何か?
>760 うん。別にいいんじゃない? 当然効率は悪いけど、>732の3分よりは早いんじゃないかなぁと予想してるんだけど。 >761 Excelオブジェクトの動きを理解する必要があるあたりが。 テキストファイル開いて頭から舐めていくだけのプログラム作るよりは時間かかると思う。
> テキストファイル開いて頭から舐めていくだけのプログラム作るよりは時間かかると思う。 何で? マクロで操作を記録して、あとはちょこっと修正するだけでしょ?
csvファイルが二本あるわけでしょ? DBにとりこんでSQLの方がいいんじゃない?
Excelでファイル開くのに時間がかかるってのが本題じゃなかったっけ?
なんだと、コラ!
770 :
デフォルトの名無しさん :02/12/11 18:02
ねぇねぇ、一度、Accessとかに取り込んでからSQLで操作しようよ〜
まず、何で CSV なのか疑問だな。
>>732 ODBC Text Driverを使う。
20000件なら数秒で検索できる。
ウィザードで作れば出てくるよ
776 :
デフォルトの名無しさん :02/12/11 18:30
>>771 ウチで使ってるPOSレジからではCSV出力しか出来ないからです。
>774 VB
質問者は名前欄に初出のレス番入れろ
779 :
仮 ◆ItjZTEC2dg :02/12/11 18:38
えと、質問 VB6にて、テキスト形式のファイルを指定してやれば そのファイルの漢字コードの形式(JISとかEUCとかShift_JISとか) を返すような関数を作りたいです。 漢字コードなんて、どうやって判別すればいいんでしょうか。 いろいろと要りようなので頑張っているのですが・・・ぜんぜんです。
>>744 古典的な方法で読むのが一番早いんじゃないかなぁ。
LineInputなんかで。
>>780 いやいやそうやって読むならバイナリアクセスの方が断然速いだろ(w
>>779 NKF やら Jcpde.pl が参考になりませんか?
>744 c:\test.csvを開く例 ADO参照して Dim conn As New ADODB.Connection Dim rec As New ADODB.Recordset conn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=c:\" rec.Open "select * from test.csv", conn で、どう?
>>782 スペル違うな
nkf と jcode.pl だ
どちみち、完全完璧に判別は難しいだろうけれど。
単に速さを求めるなら何故 C++ を使わない。
>785 >757-758 にその答えがある
単に速さを求めるだけじゃないからだろ。その他の部分がVBとか。
wavファイルを切ったりつなげたりするようなものをVBで作りたいです。 丁度Windowsについてる、「サウンド レコーダー」みたいなのを。 何かいい方法、参考文献でもありませんでしょうか。 wavファイルの形式さえも知らないもので、どこから手をつければいいやらです。 よろしくおねがいします。
>>781 あぁ、一番じゃないね。
お手軽で、Excelよりは早いんじゃない、位か。
>>788 データの切り張り自体は簡単っぽいけど再生が地獄っぽいらしい。
MCIとかMMSystem.h関係のお話。
ファイルのコピーの方法は分かったのですが、 フォルダのコピーの方法が分かりません。 スクリプト使うかAPI使う以外無いのでしょうか。
>>791 フォルダ内のファイルと列挙してコピー。
場合によっては再帰を使ってコピー。
スクリプト使うってナンですか?scripting runtimeを参照するという意味なら一理ある
>>792 やっぱそれ用のメソッドは無いですか。
ディレクトリを作成→コピーですか。再起処理面倒ですね。。。
>>793 それです。
CreateObjectして使う方法ですが、これしか無いのならこれで逝くことにします。
ありがとうございました。
>再起処理面倒ですね。。。 関数 ファイルのコピー(引数:送りもとフォルダ 送り先フォルダ) while 参照すべきファイル/フォルダがある if フォルダ名/ファイル名 = フォルダ名 フォルダ作成(送り先フォルダ+フォルダ名) ファイルのコピー(送りもとフォルダ+フォルダ名 送り先フォルダ+フォルダ名) else コピー(送りもとフォルダ+ファイル名 送り先フォルダ) end while end 関数 VBわからんから仮想言語な。で、面倒か?
>>771 ちょっと長文でごめん。
まず参照設定でADOを参照します。次にSchema.ini(定義ファイル)をテキストファイルと同じフォルダに作成します。
Schema.iniの作り方は。
コントロールパネルの管理ツールの中のODBCを開きます。
システムDSNを開き、追加をクリックします。
"Microsoft Text Driver "を選択して"完了"。データソース名を適当に入れ(今回はTestcsv)現在の"フォルダを使用する"のチェックをはずします。
フォルダの選択でテキストのあるフォルダを指定します。
書式の定義で対象のテキストファイルを選択して"推量"をクリックします。
もしフィールド名を指定するならここで指定します。
あとはOKを2回選択すれば(エラーになりますが)指定したフォルダにSchema.iniだ出来ています。
次にコード!このコードを実行すればRCにテキストデータが入っています。
Filterを実行すれば検索できます。
10万件のデータの最後を探すのに6秒ほどかかります。
ちなみにもしかしてTで始まるメーカ?もしそうならめっちゃ詳しいで
Dim cnn As New ADODB.Connection
Dim RC As New ADODB.Recordset
Dim Fn As String
Fn = "Test.txt" '<ファイル名
cnn.ConnectionString = "PROVIDER=MSDASQL;dsn=testcsv;uid=;pwd=;
cnn.Open
RC.ActiveConnection = cnn
RC.Open "select * from " & Fn
あ、
>>783 の方がいいや。
schima.iniはいるけどね。
Schema! sumaso
801 :
デフォルトの名無しさん :02/12/11 21:55
ExcelでCSVを読み込む場合、 いったん拡張子を.Txtにして読み込んだほうが速いよ。 Excel用汎用CSV読み込み関数作ったけど、いらんか。
>801 щ(゚д゚щ) カモーン
GOSUBといったメソッドがあるらしいのですが、VB入門の本に載ってませんでした。 使い方の例などを教えていただけないでしょうか。
10 GOSUB 20 20 RETURN 10
>>805 すごい!While trueと同じことができるんですね!!!!!!!
Subプロシージャにするまでもないプロシージャ内の共通処理に 使ったりするよ。まぁ俺の設計が悪いからだが。
関数の数を無闇に増やしたくないとか、ローカル変数を渡すのが面倒とかいう場合は GoSub よく使うけど。 GoTo と一緒で、使い様って事でしょ。
>>805-809 みなさまありがとうございます。
RETURNも初めて聞いたけど、結局
GOTO
GOSUB
RETURN
の3つは同じということですね。
811 :
デフォルトの名無しさん :02/12/11 22:34
おせぇ〜て!! リストボックスの中にエクセルのデータを読み込みたい! 例えば、1列目の10行目まで読みたい時は・・・ Dim kname(100) As Integer Dim Cells(100, 50) As Integer f$ = "Kihon.xls" Set LINK = GetObject(f$) For i = 1 To 10 kname(i) = LINK.Worksheets.Application.Cells(i, 1) List1.AddItem kname(i) Next i これだと駄目なんだよね〜 ちなみにxlsをtxtにしたほうがいいっていうんだけど?!?
> GOTO > GOSUB > RETURN > の3つは同じということですね。 ( ゚д゚) ポカーン
そうか。まぁがんばれ
超タコな質問かもしれませんが Print #1 "ABC", "DEF" でABCとDEFの間にスペースではなく、タブを入れる 方法をご存知な方はいらっしゃいますか VBでは不可能なのでしょうか? 宜しくお願いします。助けてください
超タコな質問かもしれませんが Print #1 "ABC", "DEF" でABCとDEFの間にスペースではなく、タブを入れる 方法をご存知な方はいらっしゃいますか VBでは不可能なのでしょうか? 宜しくお願いします。助けてください
超タコな質問かもしれませんが Print #1 "ABC", "DEF" でABCとDEFの間にスペースではなく、タブを入れる 方法をご存知な方はいらっしゃいますか VBでは不可能なのでしょうか? 宜しくお願いします。助けてください
ん、まああれだ、がんばれ
ワラタ
Print #1 "ABC" & vbTab & "DEF"
GOTO 指定した行番号へ無条件にGO GOSUB 指定した行番号へサブルーチンとしてGO RETURN サブルーチンとして飛んできたので、呼ばれたGOSUBの次の行へカエル
>>812-820 なんとか理解してみました。
RETURNがなかったらGOSUBは立場なしというかんじですね。
webbrowser1でスクリプトで書かれたページで新しくページを作るときに、 新しいwebbrowser2に新しいページのURLがNavigateされません。 今は Private Sub webbrowser1_StatusTextChange(Index As Integer, ByVal Text As String) Text1.Text = Text End Sub Private Sub webbrowser1_NewWindow2(Index As Integer, ppDisp As Object, Cancel As Boolean) If Text1.Text <> "" Then Cancel = True Webbrowser2.Navigate Text1.Text End If End Sub としてます。
>823
サンクスコ
>>779 じゃないけど、参考になるわ
827 :
デフォルトの名無しさん :02/12/12 10:42
>>783 ,796
ありがとうございました。
とりあえず、CSVを開くことは出来たようです。
まぁ、今度はそれからのデータの抽出に四苦八苦してるのですが。(^^;
ちょっといろいろいじってみようと思います。
formの右上の【×】を使用不可能にする方法は無いでしょうか。 最小化は使いたいのですが、最大化と×は使わせたくないのです。
>>828 form_unload時にcancel=trueで。
830 :
デフォルトの名無しさん :02/12/12 13:54
>>828 formの右上の【×】を使用不可能は
・フォームのUnloadイベントの引数cancelをTrueにするとフォームが閉じなくなります
・完全に無効にしたいときにはフォームのシステムメニュー自体を無効にします(API)
・最大化ボタンを有効.無効にするプロパティがフォームにあります(知ってたかな...)
>>828 みなさんの補足みたくなるけど、Unloadイベントのヘルプ見れ。
で、unloadmodeをチェックすることで、×ボタンで閉じられた時だけ
Cancel=True、みたいなことが出来るようになるよ。
どもです。今試して動きました。 ありがとうございました。
833 :
デフォルトの名無しさん :02/12/12 14:45
828関連かもしれない(違うかなぁ)質問です。 フォームを最大化表示する(WindowStateで)と、タスクバーを 無視して最大化してしまうことがあります。タスクバーの陰に隠 れたコントロールは見えなくなり、操作できなくなってしまいます。 どうすればタスクバーをちゃんと考慮して最大化させることが 出来るのでしょうか? どうも、MaxButtonプロパティをFalseにすると無視して最大化され るようなのですが・・・MaxButtonは828さん同様Falseにしておきたい のですが、最小化はさせたいので、コントロールボックスはおいてお きたいわけです。
834 :
デフォルトの名無しさん :02/12/12 16:26
二重起動を禁止して、もし二重起動した場合は、 元から起動していたフォームを前面に表示したいのですが、 何か定石があるのでしょうか? FindWindowAでForm.Captionを検索すると 新しく起動した方(自分自身)のhwndを取得してしまって、 SetForegroundWindowできないのです。
>>834 Sub Main 内でフォームがロードされる前に FindWindow すれば?
>>834 教えてやるから、俺の口座に100億モナー振り込め。
If App.PrevInstance Then
' 多重起動を許さない。
' アプリケーションのキャプションを得る。
strAppCaption = App.Title
' 自アプリのキャプションを変更しておく。
App.Title = strAppCaption & "VB厨ハ逝ッテヨシ(・∀・)"
' トップレベルのウィンドウハンドルを得る。
lngFirstTophWnd = FindWindow("ThunderRT6Main", strAppCaption)
' 直前にアクティブなウィンドウハンドルを得る。
lngFirstPophWnd = GetLastActivePopup(lngFirstTophWnd)
' ウィンドウをアクティブにする。
lngResult = SetForegroundWindow(lngFirstPophWnd)
' 最小化されタスクバーに格納されてある場合があるので、ウィンドウを通常表示にさせる。
lngResult = ShowWindow(lngFirstPophWnd, SW_RESTORE)
' アプリケーションを終了させる。
End
End If
>835 Sub Mainに書いてみたけど、やっぱり自分自身のhwndを 取得してしまうようです。 >834 すみません、VB6.0です。ありがとうございます。 EnumWindowで探していくしかないかなあ。 CallBackがめんどくさそうですが。
840 :
bloom :02/12/12 17:02
>>839 俺のティムポしゃぶれば只に負けてやる w
(・∀・)
お前らVB厨らしくAppActivateとSendKeysで対処しろよ。 根性無しめ。
>837 できましたー。ありがとうございます。 このGetLastActivePopupってのがよく分かりませんが、味噌なんですね。 振り込んでおきましたので、ご確認ください。
>>837 >>837 この方法だと、起動してから
> App.Title = strAppCaption & "VB厨ハ逝ッテヨシ(・∀・)"
までの間で、もうひとつ起動されたとき失敗する可能性ない?
たとえば、Aが起動している状態で、B,Cが立て続けに起動された場合、
BがCaptionを変更する前にCがFindWindowすると、Aを見つけたいのに
Bを見つけてしまうことになると思うんだけど。
>>833 最大化ボタンが無効になっている時、
ウィンドウ(Form)はリサイズされる必要が無いことを表しています
(これはWindowsの規約です)
それは、さておき、、、
タスクバーを取り除いた画面の領域を取得するAPIがあります
(SystemParametersInfo)
取得した値を計算してFrom.moveで移動させれば
最大化されているように見えます
>>844 たとえ、そうなったとしてもForeGroundにならないだけだから、気にしない。
1モナー何円ですか?
1±2i 円
スイス銀行へ、うまい某で支払い。
850 :
デフォルトの名無しさん :02/12/12 18:42
VB6でクリップボードにファイルを入れ込むにはどうしたらよいのでしょうか。 テキストと画像はヘルプに載っているのですが、マイコンピューター上で ファイルを右クリックメニューからコピーする・・・という感じの方法が 見当たらないのです。どなたか御教授ください。
>>850 アフォ?
PATH取っておけば何とでも出来るじゃん。
何の処理してんの?
854 :
デフォルトの名無しさん :02/12/12 19:41
マクロで虚数iを使いたいのですが,どのように書けばよいのでしょうか?どなたか教えてください。 あと,三次方程式を解くプログラムを作りたいのですが,どなたか助言をお願いします。
>>852 ありがとう。トライしてみます。
>>853 自アプリでPATHだけ取っても、他アプリでその貼り付けは出来ないです。
ファイルマネージャー系アプリとやり取りが出来る処理です。
D&Dだけなら簡単なんですけどね。
>>857 PATHをクリップボードにはっつけたら?
↑ブラクラ
864 :
デフォルトの名無しさん :02/12/12 21:49
VB6.0を使って、レポートの印刷プレビューを表示するプログラムを作っています。 現在 rptRecord.Show vbModal という文で印刷プレビューを表示しています。 しかしこれだと、全ページのプレビューが表示されてしまいます。 これを、1ページ目だけのプレビュー、2ページ目だけのプレビュー というように、分けることは可能でしょうか? 例えば印刷の場合は、 rptRecord.PrintReport False, 1, 1, 1 で、1ページ目だけの印刷 rptRecord.PrintReport False, 1, 2 で、2ページ以降の印刷、とすることが出来ますよね。 印刷プレビューでも、これと同じことがしたいのですが…
>>845 なるほど、その手があったかという感じです。
SPI_GETWORKAREAですね。ありがとうございました。
ループ内ではあらかじめ変数に格納した数値を使いなさいと よく聞きますが、 For i = 0 To List1.ListCount - 1 '↑★この部分 〜〜 Next i ★の部分は別に変数に入れなくて良いですよね? ↓こんな具合に。 j = List1.ListCount - 1 For i = 0 To j 〜〜 Next i
>>866 何故変数に格納した数値を使うという、理由がわかれば、謎は解けるかと。
>>867 つまり変数に格納しないと処理に時間がかかると言うことでしょう?
で、For文のあの部分ってステップ実行してると1回しか通ってないように
見えるのですが、実はループが回ってくるごとに確認してんじゃないか、
みたいな深読みを…。
>>869 > 実はループが回ってくるごとに確認してんじゃないか、みたいな深読みを…。
C言語とかはそうです。
>>871 そうなんすか。ってことはJavaもですよね。
気を付けます。
恥ずかしくて訊けなかった悩みが解決した
ありがとう
>>866
そのぐらいためせ
気になったのでやってみた。 Dim i&, j& j = 1 For i = 0 To j j = 100 Debug.Print i; j Next 結果 0 100 1 100 最初にしか評価してないみたいね。
> C言語とかはそうです。 コンパイラはその変数がループ内で変更されていない事が分かれば最適化するけど?
>866 どっちが間違いという事は無い。 ループの中でList1のListCountが変化した場合どうなるのかを考えてみ。
しまった汗
>>877 Dim i&
List1.Clear
List1.AddItem "giko"
List1.AddItem "mona"
For i = 0 To List1.ListCount - 1
Debug.Print i; List1.ListCount; List1.List(i)
List1.Clear
Next
結果は
0 2 giko
1 0
こんなん。やはり最初にしか評価してないね。
それよりも、List(i)に有効範囲外の値を入れても読み出しだけなら
エラーにならない、ってことに今更気づいた…。
ListViewをFor Eachで回してる最中に項目削除とかするとモロにエラーになるんだがな…。
>>875 >>879 まじ!!
VBやって2年たつけど
Forはループするたびに評価していると思ってた...
(For i = 0 To List1.ListCount - 1は 平気で使ってたけど)
1回しか評価しないのなら,変数に格納した数値を使う
必要はないとみた!!
ところで皆さんは WhileやUntil を使ったことあります?
漏れ使い方知らん...
いつも Do Loop で無限ループ作って Exit Do で抜けてる...
>>875 >>879 まじ!!
VBやって2年たつけど
Forはループするたびに評価していると思ってた...
(For i = 0 To List1.ListCount - 1は 平気で使ってたけど)
1回しか評価しないのなら,変数に格納した数値を使う
必要はないとみた!!
ところで皆さんは WhileやUntil を使ったことあります?
漏れ使い方知らん...
いつも Do Loop で無限ループ作って Exit Do で抜けてる...
.NETがどう動くかしらないが、後々のコンパイラまで問題なく動かすなら 「一度しか値を評価しない」という固定願念は怖いかな
>881 Do Until rc.EOFって感じで普通に使うっしょ
>>883 「後々のコンパイラ」はもう無いから心配しなくていいでつ(ρ_;)
とはいえ、固定概念にしちゃうのはたしかに怖いね。
不安に思うなら、新しい処理系を使う時にいつでも試せばいい。
一回しか評価しないか、それとも毎回評価されるか、に関わらず、 余りトリッキーなコードは書くべきではない。
何がトリッキーだって?
実験かどうかは、「書くべきではない」 という判断には何ら関係無いと思うけど。
893 :
デフォルトの名無しさん :02/12/13 14:15
1文字の幅をしるにはどうすればいいか教えてください
>>893 GetTextExtentPoint32
>>893 VBだけでラクして調べるなら、Labelをつくって
Appearanceを 0、AutoSizeを Tuueにして、文字を送り込んでWidthを調べる。
>895 ありがとうございます
894 には礼無しか
>>899 よくある話だ。理解できない物は情報とは見なさない。
もう慣れたよ。
>>895 おいおい、0文字の時と1文字の時の差を調べないとLabelの幅があるだろうが。
902 :
デフォルトの名無しさん :02/12/13 14:45
ユーザーとパスワードを入力して終了するようなスクリーンセーバーを 作ったのですが、Ctrl+Alt+Deleteの後にEscキーを押すと、ユーザーと パスワードを入力するダイアログが表示されずに終了してしまいました。 また、Windowsキーを押すとスタートメニューが表示されてしまいます。 このような処理を無効にするにはどうしたらよいでしょうか?
すみません。知人にもらったファイルなんですが、 拡張子frmのフォームファイルなのに新規プロジェクト→フォームモジュールの追加 で読み込むと、標準モジュールとして読み込まれて機能しないです。 やり方に問題があったのでしょうか?それともファイルの方に原因があったのか? 初心者の質問で恐縮ですがどなたかお答え頂けると有難いです。
905 :
デフォルトの名無しさん :02/12/13 16:09
datacomboについての質問です。 DataCombo1_Changeの場合は変えたときに、その列のデータがDataGridに表示されます。 しかし、これをDataCombo1_Clickにした場合はどうなるのでしょう。
そのファイル、メモ帳などのテキストエディタで開いて、先頭に VERSION 5.00 Begin VB.Form Form1 ... End とか書いてあるかい?
D&Dでつっこみゃ追加されない?
該当するファイル、拡張子frmで VERSION 5# Begin VB.Form InfoWindow ... END ってかいてあります。 でもD&Dで突っ込んでも標準モジュールとして 読み込まれてしまいます。何故なんでしょうか??困ったなぁ
「パスワードのかかったzipファイルを知人にもらったんですが…」 Windows板でよくあるタイプの質問だな。 いつも回答は一つ。 そ の 知 人 に 聞 け 。
どもです。そうします。すぐには連絡つかないし、 ちょっとした勘違いだったらここで訊いても構わないかと思ったんですが やはり、作った本人に訊いた方が早いですからね。すみませんでした。
うまい。
はやい。
>>914 安いと書くべきでは?これだからVB厨は・・・end;
>>915 うまい。はやい。やすい。
これが正解だ。
2 番目に 「やすい。」 を書いたらシーケンスエラーだろうが。
これだからぬるぽ厨は・・・
次スレ
はやい、やすい、だけ。
∧||∧ ( ⌒ ヽ 修行が足りなかったようだ… ∪ 。ノ ∪∪
言葉の意味はよくわからんが、とにかくすごい自信だぁ
923 :
デフォルトの名無しさん :02/12/13 20:17
たとえば Dim kill As Object Set kill = CreateObject("scripting.filesystemobject") On Error Resume Next kill.deletefile "c:\どこぞ\*.exe" On Error GoTo 0 Set kill = Nothing ってのがあります。 ボタン1なら c:\どこぞ\そこ\*.jpg ボタン2ならd:\そのへん\*.zip を削除したいのですが、ボタンごとにパスだけ書き換えた上記のパスを すべて書かなければいけないのでしょうか?
>>923 厨房な文章を読むと無意識のうちに
パス=パスワード
と読み替えてしまう。
関数にしてその引数にpathをとればどうだい?
925 :
デフォルトの名無しさん :02/12/13 20:21
daoのSQLに使うワイルドカードが *と?なんだけど、 俺はずっと%と_だと思ってて、何で動かないんだろうとずっと調べてたよ。 まじで腹が立つ。 adoはもちろん後者なんだけど。 なんでdaoは違うの?
926 :
デフォルトの名無しさん :02/12/13 20:26
>>924 その関数の方法が・・・わかりませぬ(ノ_・、)グスン
>>925 adoやdaoなんて関係ねーよ。
SQL文が統一されていると思ってるなんてまだまだだな(藁
>>926 Public Function MyKill(Filename As String) As Boolean
Dim kill As Object
Dim Flag As Boolean
Set kill = CreateObject("scripting.filesystemobject")
Flag = False
On Error GoTo ErrTrap
kill.deletefile Filename
Flag = True
ErrTrap:
On Error GoTo 0
Set kill = Nothing
MyKill = Flag
End Function
'酒を片手にてきとーに書いてるので、正しいかどうかはしらん。
Kill っていう変数名は紛らわしいなあ
931 :
デフォルトの名無しさん :02/12/13 20:58
>>929 おお!ありがとうございます。
見事にファイルが消えてくれました
932 :
デフォルトの名無しさん :02/12/13 21:03
えーとちょっと質問ですが Public Function mydel(Filename As String) As Boolean Dim kill As Object Set kill = CreateObject("scripting.filesystemobject") On Error Resume Next kill.deletefile Filename On Error GoTo 0 Set kill = Nothing End Function では(・Δ・)イクナイのですか? FlagとかErrTrapとか・・・なんなのでしょう
>>932 あー?
関数の中でエラーがあったかなかったか、わからなくていいならそれでいいーのでは?
935 :
デフォルトの名無しさん :02/12/13 21:10
>>933 親切にありがとうございます。
とくにエラーがあったかどうかは必要ないのでこれでいきます
>>935 >とくにエラーがあったかどうかは必要ないのでこれでいきます
こら。
937 :
デフォルトの名無しさん :02/12/13 21:18
エラーってファイルが無かった場合以外に何かあるのでしょうか? 始めたばっかりなのでよくわかりませぬ・・・
>>937 書込み禁止とかーCD-ROMを消そうとしてるとかーファイルが使用中とかー
揚げ出したら熱いくらいあるY0-
酒か・・・
アフォどもが。エラーをBooleanで返したらエラーが起きたかどうかしか わからんだろうが。しかも不必要に複雑にしやがって。これだけでいいんだよ。 Public Sub MyKill(Filename As String) Dim kill As Object Set kill = CreateObject("scripting.filesystemobject") kill.deletefile Filename End Sub
944 :
デフォルトの名無しさん :02/12/13 21:43
>>940 それじゃあ、ファイルがなかったらエラーで止まりますが。
>>944 だから、そのためにエラー処理があるんですよー
呼ぶ前にOnErrorでもしかけといて、エラー解析すりゃいーんです。
>944 929では、エラー処理が不足すぎて、意味が無いという事です。 使うならばBool型じゃなくエラーを特定できるような戻り値にしないと エラーがあったかどうかだけでは(以下略) 940+945の方法であればエラー処理もできますし、 929を改造すれば、まともなエラー処理も可能でしょう。
947 :
デフォルトの名無しさん :02/12/13 22:13
>>946 りょうかいっ ~(=^‥^)ゞ ぴっ!
とりあえず929等を参考にコードを打ち直してみます。
レスたくさんありがとうございました。
質問します。Vb6でWindowsXP フォームの一部分から後ろが見えるような物を作りたいのです。 フォームの一部分をくりぬいたようなイメージですかね。 なにやら、リージョンがどうたらこうたら、って事は調べて分かりました。 で、サンプルがある所もあったのですが、どこでも円形のサンプルばかりなのです。 私がやりたいのはフォームの形を円形にくりぬく事ではなく フォームは元の四角形のままで、その中の一部分だけを四角形にくりぬく事です。 これはどうやって実現できますでしょうか。 APIや、具体的なやり方等教えていただけるとありがたいです。
>>948 APIガイドの同じカテゴリにばっちり載ってると思うが。
それかWIn32API散歩道買う。
>>948 具体的な方法は円形と同じではないでしょうか
951 :
デフォルトの名無しさん :02/12/14 00:11
Rndって 0<=x<1.0 を返す関数ですか?
>>948 ホレ、適当だ
Type RECT
Left As Long: Top As Long: Right As Long: Bottom As Long
End Type
Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT) As Long
Declare Function OffsetRect Lib "user32" (lprc As RECT, ByVal dx As Long, ByVal dy As Long) As Long
Declare Function InflateRect Lib "user32" (lprc As RECT, ByVal dx As Long, ByVal dy As Long) As Long
Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Declare Function CreateRectRgnIndirect Lib "gdi32" (lprc As RECT) As Long
Declare Function CombineRgn Lib "gdi32" (ByVal hrgnDest As Long, ByVal hrgnSrc1 As Long, _
ByVal hrgnSrc2 As Long, ByVal fnCombineMode As Long) As Long
Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Long) As Long
Public Const RGN_DIFF = 4
Sub KURINUKU()
Dim rct As RECT, hwndForm As Long, hRgn As Long, hRgnTemp As Long
hwndForm = Me.hWnd
GetWindowRect hwndForm, rct
OffsetRect rct, -rct.Left, -rct.Top
hRgn = CreateRectRgnIndirect(rct)
InflateRect rct, (rct.Right - rct.Left) \ -4, (rct.Bottom - rct.Top) \ -4
hRgnTemp = CreateRectRgnIndirect(rct)
CombineRgn hRgn, hRgn, hRgnTemp, RGN_DIFF
DeleteObject hRgnTemp
SetWindowRgn hwndForm, hRgn, 1
End Sub
誰か、初歩的過ぎて、どこ探してもないので、助けて下さい(´Д`;) 以下は、利用者のとる行動です。 コマンド1をクリック→――→―→コマンド4をクリック→・・・ コマンド2をクリック――→↑ コマンド3をクリック――→┘ 上のように、コマンド1をクリックしたか、コマンド2をクリックしたか、 コマンド3をクリックしたかで、その後のコマンド4をクリックした時の、 (コマンド4以降のイベント等を含む) 処理を場合わけしたいのですが、どのようにしたらうまくいきますか?
↑↑↓↓←→←→BA
自爆しました。
>>954 Dim BtnFlag As Integer
Private Sub Command1_Click()
BtnFlag = 1
End Sub
Private Sub Command2_Click()
BtnFlag = 2
End Sub
Private Sub Command3_Click()
BtnFlag = 3
End Sub
Private Sub Command4_Click()
Select Case BtnFlag
Case 1
'1の処理
Case 2
'2の処理
Case 3
'3の処理
End Select
End Sub
こういう事なのかわからんが、適当に書いてみた。
ま、後は自分で調べて応用してくれ。
>>957 こっちのほうが良くねぇべか?
コマンドボタンを配列にしてさ。
private sub Connmand1_Click(Index as integer)
static intIndex as integer
select case index
case 0 : intIndex = index
case 1 : intIndex = index
case 3 : intIndex = index
case 4
select case intIndex
case 0 '1の処理
case 1 '2の処理
case 2 '3の処理
end select
end select
end sub
同僚に全部のボタンを配列にして、 一つのハンドラで処理を切り分けてた奴がいたな。 Case文がズラズラならんでindexで切り分けるから読みづらかった、 せめてindexにConstで名前付けといてくれればいいのに。 利点はボタンのEnable=Falseなんかは共通して一つ書くだけで済むこと。 欠点はフォームのボタンをダブルクリックしても、 処理を参照するのにスクロールせにゃならん事。 CのSDK方式か、MFC方式かって感じだな。
>>958 確かに、配列を使うのもアリだが・・・しかし、
質問の内容のレベルから考えて、
「コマンドボタンを配列に・・・???」
なんて聞き返されても困るし、この方がわかりやすいかと思ってな。
・・・それはそうと、caseに与える数字、間違ってるよ・・・(;´Д`)
相手のレベルに合わせるのもいいが普通に考えたらこれだろ。 コマンドボタン1〜3がコントロール配列、4が単独。 まあコマンドボタンとかの用途にもよるから一概にこれが最適とは言えんが。 (飛躍させるとstateパターンとか使えってことになるかも知れんし) Private intIndex As Integer Private Sub Command1_Click(Index as Integer) intIndex = Index + 1 'これ押されないでCommand2を押した場合のための+1ね End Sub Private Sub Command2_Click Sselect Case intIndex Case 1 '1の処理 Case 2 '2の処理 Case 3 '3の処理 End Select End Sub
普通に考えたらラジオボタン
今、
>>962 が良いこと言った。
UI的に間違っていると思われ。
964 :
デフォルトの名無しさん :02/12/14 10:43
Photoshopのようにメニューからファイルオープンして、その画像を新たなウインドウに表示するときに 新しく生成されたウィンドウのサイズを右下の部分をつまんで動かしたときに スライダ出てくるようにするにはどうすれば良いんでしょう?
スライダコントロールって使ったことないけどあるよな。
966 :
デフォルトの名無しさん :02/12/14 11:13
Photohopのように、メニューからファイルオープンで新しいウィンドウ開いて そこに画像を表示させたいのですが、ウィンドウの右下部分をマウスでつまんで サイズ変更するときに小さくしていく場合、画像の大きさよりもウィンドウが小さくなると スライダーが出ますが、そのやり方がわかりません どうすればいいんでしょうか?
えーっ!またー!?
あれ?すんません、ミスって2こ書いてしまった
>>968 あれ?すんません、ミスって(さっきと同じスレに)書いてしまった
死ねマルチ。
すみません誤爆してしまいました・・・
さんざんやな。
973 :
デフォルトの名無しさん :02/12/14 15:15
次スレは?
>>975 誘導先として書いとくのがいいと思われ。
977 :
デフォルトの名無しさん :02/12/14 16:50
最適化を探して一週間。 VB6.0ラーニングエディションには最適化ってないの? 有るとしたらどこに??? いい加減探し疲れた。
>977 プロジェクトのプロパティの[コンパイル]タグって無いの? まあ、最適化にこだわるならVBなんか使いなさんな。
プロジェクト→○のプロジェクト→コンパイル(→最適化の詳細設定)
VB6.0ラーニングエディション には無いんじゃないか?
vbp直接変更して出来たりしないかな。 vbpにOptimizationType=0なんて項目ない?
>>985 プロパティ自体がオブジェクト名の欄しかない・・・。
すまんね。
CompilationType=0 OptimizationType=0 FavorPentiumPro(tm)=0 CodeViewDebugInfo=0 NoAliasing=0 BoundsCheck=0 OverflowCheck=0 FlPointCheck=0 FDIVCheck=0 UnroundedFP=0 StartMode=0 Unattended=0 Retained=0
>>987 後はOverflowCheckとかを1にしてMsgBox CInt(32768)とかを
コンパイルして実行してみたら有効に働くかどうか分かるね。
>>987 にしてもvbpの中の項目にまで(tm)ついてるのね
(*´д`*)アハァ… VB初心者質問スレ Part19 まだー?
991 :
デフォルトの名無しさん :02/12/14 18:55
(*´д`*)アハァ… じゃないのかよ(;´Д`)
993 :
デフォルトの名無しさん :02/12/14 19:07
1000取り合戦開始?
でも人いない
996 :
デフォルトの名無しさん :02/12/14 19:11
Delphiやれ! デルファイ! でるふぁいまんせー!
996
1000!!
↓おめ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。