VBプログラマ質問スレ(6.0以前) Part40
1 :
デフォルトの名無しさん :
05/01/26 23:12:55
2 :
デフォルトの名無しさん :05/01/26 23:16:49
前スレ Part39 の961です。 明日Visual Basic の授業があるんで少しでも理解しときたいんで プログラム教えていただきませんでしょうか? おねがいします。
3 :
デフォルトの名無しさん :05/01/26 23:20:09
テキストボックスへの表示方法は分かる? .Textに文字列代入だったな?
4 :
デフォルトの名無しさん :05/01/26 23:23:03
じゃあ何が分からない? 計算式か? データ変換か?
テキストボックスからまずデータを受け取る。 >> 変数A=テキストボックス 計算する。 >> 変数B=変数A*0.06*(・・・など適当に計算式を作る) テキストボックスに表示する >> テキストボックス=変数A これで分からなかったら諦めろ。
6 :
デフォルトの名無しさん :05/01/27 00:10:01
本当に理解したいんなら今ごろテキスト読んでるでしょ。 こんなとこで質問しているのは、本読んで理解するなんてクソ面倒なことは スキップして優々と答えだけゲットしたいから、違うか?
7 :
デフォルトの名無しさん :05/01/27 00:26:00
まじうぜーー
>>2 前スレ963で、せっかく円周と面積の出し方教えてもらったんだから、それを応用しろ。
おまいら優しいな。 ちょっと感動した。
11 :
デフォルトの名無しさん :05/01/27 09:30:46
リア高坊へ 先生にだれから教わったって聞かれたら 「しらないおじさんに教えてもらいました」 ってきちんとこたえること。
俺もまだ工房だ、おっさんじゃねー。
?=小学生 厨房=中学生 工房=高校生 ?=大学生
14 :
デフォルトの名無しさん :05/01/27 11:46:52
非常に大馬鹿な質問なんですが 二次元配列に入力した数字を2重for文を使って各数字ごとに 空白を設けた状態をテキストボックスに出力したいのですが うまくできません 改行もできないし空白も設けられないし なりより数字が次々と上書きされているみたいなんです BASIC始めて3日目なんですが参考書にも載ってなかったのでおしえてもらえないでしょうか
15 :
デフォルトの名無しさん :05/01/27 11:50:27
txtString.text = "" for i=1 to MAX_COUNT step 1 txtString.text = txtString.text & aa(i) & " " next i 適当ですけど、こんなかんじ。 上書きではなく、追加していかないとダメですよ。
16 :
デフォルトの名無しさん :05/01/27 11:57:32
>14 Dim s,i,j,a(22,33) s="" For i=0 To 22-1 For j=0 To 33-1 s=s&Str(i)&","&Str(i)&vbCrLf Next j,i
>>14 MultiLineプロパティをTrueに
>>15 お忙しい中のわざわざのレスありがとうございます
gnuplotってわからないかもしれないですけど
あれが読み込めるテキスト状態にしたいんですけど
12 33 32 89
87 54 43 898
432 32 74 56
こんな状態です
あと二重ループにしたいのですが
20 :
デフォルトの名無しさん :05/01/27 12:06:57
それならファイルで吐けば? Open "test.txt" For Output As #1
16,18さんもありがとうございます さっそく試してみます
>>20 それがわからなくて・・・
ファイル保存を試みましたがだめでした
>>22 何がだめなんだよ
質問する気はあるのか?
24 :
デフォルトの名無しさん :05/01/27 12:19:43
>22 Print #1, 文字列 Close #1 マニュアルみ
割り込みで質問させて頂きます、当方はVB6を使っています。 txt1.TextBox txt2.TextBox cbo1.ComboBox 以上三つのコントロールを配置して以下の動作をさせたいのですが… 1:cbo1,を通常は非表示にしておく 2:txt1のGotFocusイベントでcbo1を表示させる 3:cbo1での選択結果をtxt1に表示させる(txt1に対する直接入力も有り) 4:txt2へのフォーカス移動で再びcbo1を非表示にする という動作をさせたいのですが、4:の非表示処理が上手く行きません txt1のLostFocusイベントで非表示処理をすると、cbo1にマウスをポイントした瞬間に cbo1自体が消えてしまうし、cbo1側のイベントで処理した場合、cbo1に対する操作を 行わずにtxt2にフォーカス移動した際にcbo1が表示されたままになってしまいます txt2のGotFocusイベントで処理するのは無しです(同種のコントロールを増やす予定なので) 皆様の御教授を賜りたく存じます。
26 :
デフォルトの名無しさん :05/01/27 18:47:25
>25 フラグ変数と共通サブルーチンで一貫性を保て
27 :
デフォルトの名無しさん :05/01/27 18:59:12
>>25 txt1とcbo1をまとめたActiveXコントロールを自作
>>25 要はテキストボックスにフォーカスが移ったときに、
対応するコンボボックスだけを表示して他のコンボボックスは全部非表示にすれば
一貫性を持たせられるんじゃないの?
具体的には、引数で指定したコンボボックスを表示し、他は非表示にするルーチンを書いて、
テキストボックスのGotFocusからこれを対応するコンボボックスを引数に指定して
コールしてやればいいと思う。
30 :
デフォルトの名無しさん :05/01/27 19:55:36
コンテナにすればいいじゃん。
>>26 フラグ変数
>>30 コンテナ
まだ習得していない段階です、
こちらの程度の低さを記すべきでした…
>>29 この方法でしたら当方のレベルでも理解し易いです
丁寧な解説ありがとうございます。
32 :
デフォルトの名無しさん :05/01/27 23:02:00
VB6です。 MDIフォーム内に子フォームを常に全面表示かつ複数開いている状態で、 メニュークリックで表示画面を切り替え、処理を実行しています。 このときctl+tabキーを入力すると、子フォーム画面が切り替わってしまいます。 画面切り替え前に入力チェックをしていて、引っかかった場合には切り替えたく ないので、このctl+tabキーを無効にすることってできないでしょうか?
>>32 他のフォーム.Enabled = False にすればいいじゃない?
34 :
デフォルトの名無しさん :05/01/28 14:42:32
すみません Picture1の画像をjpegでファイル保存したいのですがどうすればいいでしょうか?
35 :
デフォルトの名無しさん :05/01/28 14:44:29
>34 SavePicture
36 :
デフォルトの名無しさん :05/01/28 16:02:14
Picture1の画像の上に乗ってるLabelまで画像に保存するにはどうしたらいいのでしょうか? SavePictureだとPicture1の画像しか保存されませんでした・・・
37 :
デフォルトの名無しさん :05/01/28 16:36:36
>36 AutoDraw=False。 PaintイベントでLoadPicture,PaintPictureを呼ぶ。 ピクチャとラベルのそれぞれのhDCで BitBlt,StretchBlt APIを呼び、ラベルからピクチャにビット転送。
ラベルのhDC?
39 :
デフォルトの名無しさん :05/01/28 16:55:01
>38 ゴメン。それはVBじゃ使えない。 TextOut, DrawText APIで代用
>>37-40 ありがとうございます
どうも簡単にはできそうにないみたいですね・・・
(´・ω・`)ショボーン
42 :
デフォルトの名無しさん :05/01/28 23:57:39
>>33 無事解決しました。ありがとううございます!
フックなどでOSのメッセージを取るなど難しく考えすぎていました。
フォトショップの選択ツールのように、 例えば選択したテキストボックスの周囲の破線が 動いて見えるようにするには、どうやるんですか?
>>43 タイマーで一定時間ごとにパターンを替えた破線(「蟻の行列」だね)を描画する。
これ以外にどういう答えを期待しているの?
VBなら、蟻の行列はAutoRedraw = Falseにして描画して、それ以外は
AutoRedraw = Trueにして描画すればいいから簡単でしょ。
もっとお手軽にやるには、シェープを使う手もある。
VB6.0使ってます。 全角と半角が混在しているテキストで、nバイト目が全角か半角を簡単に判定する方法はありますでしょうか? 平成1年1月1日晴れ ←の10バイト目が全角か半角か判定
自己レス nバイト目が全角1バイト目or全角2バイト目or半角を判定する関数があるのかと思い質問しましたが、 調べてみたらやはり自作しないとダメみたいですね。 スレ汚し失礼いたしました。
VB6..0を使ってます。 馬鹿な質問で恐縮ですが教えてください。 空っぽのファイルを作成するにはどうすればいいのでしょうか?
>>45-46 ロジック考えるの面倒なのでさわりだけ。
StrconvでvbFromUnicodeで変換すると、半角1文字全角2文字扱いのものになります。
元のUnicode文字列(VBの文字列です)を1文字づつ取り出して、それを変換して1バイトか2バイトか判断して・・・
をロジック化すればいけるのではないでしょうか?
なので自作です。
>>47 Openしてクローズしたら出来ない?
>>45-46 48氏の言うように自作しかないかなぁ。
指定された文字が全角の最初の 1 バイトかどうか調べるAPIはある。
IsDBCSLeadByte
未確認だから実際に使えるかどうかわからないけど...
>>48 ありがとうございます、判定処理を自作することにしました。
>>49 ありがとうございます、PG組んで見たのですが、私の環境ではうまく動きませんでした。
51 :
デフォルトの名無しさん :05/01/31 18:26:46
配列の宣言について質問させていただきます。 10,20,30,40,50 という5つの数値があるのですが、 これを一次元配列としてaに代入するには Dim a(4) As Integer でa(0)~a(4)までの5つの型を宣言し、 a(0)=10 a(1)=20… と毎回 改行して代入しないといけませんか? javaのように int a[] a={10,20,30,40,50}; のように一回で代入できませんでしょうか? ご存知の方どうかご教授ください。よろしくお願いします。 OS:XP VB6.0
52 :
デフォルトの名無しさん :05/01/31 19:10:50
おしえてください ループでファイル名を指定してオープンしようとしたとき、指定ファイルが無くなった ときに、エラーになるが、エラーの帰り値などを参照してループから抜け出るには? 初歩の恥ずかしい、質問ですがよろしくお願いします。VBは初めてなもので
53 :
デフォルトの名無しさん :05/01/31 19:15:56
(´-`).。oO(IsDBCSLeadByteが動かない環境ってどんなんだろ?)
>>52 オープンする前に
On Error Resume Next して、
オープン直後に Err.Number を調べる
または、オープン前にファイルの存在チェックする
たびたび申し訳ございません。先ほど一次元配列の件にて質問させていただいたものです。 一次元配列は「a = array(10,20,30,40,50)」で解決できたのですが、 下記のような二次元配列はどのようにして宣言すればよいのでしょうか? 10,20,30 40,50,60 70,80,90
>>51 あんたの辞書には「自分で調べる」とか「自分の頭で考える」って項目はないのか?
それが「あえて」人に聞くようなことかい?
こんなググるかMSDNみれば3分で解決するようなレベルの内容に
答える奴もどうかしてると思うが。
59 :
デフォルトの名無しさん :05/01/31 23:47:18
VB6sp3でClipbordのお勉強してるんすけど、フォーム上のコマンドボタンに Private Sub CreateLink_Click() Clipboard.SetText "テストテスト", vbCFText End Sub などと書いて 自アプリ実行させたんですけど、フォーム上のテキストボックスには Ctrl+vで貼り付けれるのですが、ノートパッドなどひらいてCtrl+vしても はりついてくれないのです。 よろしくおねがいします。
60 :
デフォルトの名無しさん :05/01/31 23:51:03
あ すまん自己解決した。クリアせないかんのか。m(_ _;)m
61 :
デフォルトの名無しさん :05/02/01 06:28:24
>>56 ありがとうございます
参考にしてテストします
>>54 win2000,vb6.0 or win2000,vbaです。以下のプログラムで、すべて同じ値しか返って来ませんでした。
'【指定された文字が先行バイトかどうかを調べます】
Declare Function IsDBCSLeadByte Lib "Kernel32" (TestChar As Byte) As Boolean
Declare Function IsDBCSLeadByteEx Lib "Kernel32" (CodePage As Integer, TestChar As Byte) As Boolean
Private Sub コマンド72_Click()
Dim length, cnt As Integer
Dim char1, msg, msg2, swork As String
Dim ascii As Byte
'* Stringの内容をチェック
swork = "abcあいう"
length = LenB(swork)
' length = LenB(StrConv(swork, vbFromUnicode))
msg = ""
msg2 = ""
For cnt = 1 To length
char1 = MidB(swork, cnt, 1) '1バイト取り出して、文字コードに変換する
' char1 = MidB(StrConv(swork, vbFromUnicode), cnt, 1)
ascii = AscB(char1)
msg = msg + Right("00" + Hex(ascii), 2) + "," '文字コードを16進数の文字列に変換する
msg2 = msg2 & CInt(IsDBCSLeadByte(ascii)) & ","
Next cnt
Call MsgBox("元の文字列=" & swork & Chr(10) & msg & Chr(10) & msg2)
End Sub
VB6.0の質問です。 バイナリエディタを作ろうと思っているのですが、何万桁も表示するため、 なるべくメモリ消費量の少ないコントロールを使いたいと思います。 自分なりに調べてLabelかListViewが良いのかなと感じたのですが、 何かお勧めがあったら教えていただけないでしょうか
>>63 使い方次第です
表示する前後部分だけコントロールに送ってやれば消費はどれも少ない
>>64 ありがとうございます
なるほど、そういうやり方がありましたか
それならMSHFlexGridとVScrollBarを組み合わせてやってみようと思います
>>62 49です。行きがかり上デバッグしてみた
Dim length, cnt As Integer
Dim char1, msg, msg2, swork As String
Dim ascii As Byte
'* Stringの内容をチェック
swork = StrConv("abcあいう", vbFromUnicode)
length = LenB(swork)
msg = ""
msg2 = ""
For cnt = 1 To length
char1 = MidB(swork, cnt, 1) '1バイト取り出して、文字コードに変換する
ascii = AscB(char1)
msg = msg + Hex(ascii) + "," '文字コードを16進数の文字列に変換する
msg2 = msg2 & CInt(IsDBCSLeadByte(ascii)) & ","
Next cnt
Call MsgBox("元の文字列=" & StrConv(swork, vbUnicode) & Chr(10) & msg & Chr(10) & msg2)
IsDBCSLeadByteは使えるようです。
それと... Dim length, cnt As Integer は
Dim length As Variant
Dim cnt As Integer
になるのは知ってるよね
追加です。 IsDBCSLeadByte は、全角2バイト目でも全角1バイト目と判定する文字コードがあるようなので実際に使うのは難しいかもです。 連投スレ汚し役立たずでスマソ...orz
>>66 レスありがとうございます。
IsDBCSLeadByte関数自体は使えるのですが、
期待していた戻り値とは違ったために、「私の環境ではうまく動きませんでした」
という表現をしてしまいました。
"abcあいう"
期待していた戻り値:msg2=0,0,0,0,-1,0,-1,0,-1,
私の環境での戻り値:msg2=0,0,0,0,0,0,0,0,0,
>それと... Dim length, cnt As Integer は ...
これは知りませんでした、実務では気をつけるようにいたします。
69 :
デフォルトの名無しさん :05/02/01 16:23:18
ここで質問でいいのかどうかわからないけど教えてたもう。 いいかげんソースの容量が増えてきたのでバックアップ時に不要ファイルを消してからバックアップ取ろうと思ってる。 で、「VBの不要ファイルってのがどれか?」ってのと「そのファイルを捜して削除するのに何使ってる?」って質問。
VBのコンパイラって不要なファイルなんて作ったっけ? そんな神経質なことするぐらいなら圧縮でもしちゃう方が早いきがする。 ていうか、今時VBのソースぐらいの容量が問題になる環境ってのが想像できん。 パラノイアの人?
>>69 *.vbw
あと、ActiveXコンポーネントをコンパイルすると、中間ファイルみたいの(拡張子は忘れた)が作成される事があるがそれもいらない
72 :
デフォルトの名無しさん :05/02/01 19:00:35
52です
>>56 上手くいきました、ありがとうございました。
一つ質問させて頂きます。 Msbarcode9.ocx を用いてバーコード化(Code128)して表示、印刷させるアプリを作成しています。 現在バーコードの表示までは完成したのですが、プリンターへ出力出来なくて困っております。 バーコードフォント(Code128)をPrinter.Font.Nameにセットして BarcodeCtrlのValueをプリンタに送信するだけしてみたのですが 印刷物と、PrintFormでハードコピーしたもの内容が明らかに違うのと、 バーコードリーダーで読み込んだ際に印刷物の方は読み込めず、 ハードコピーした方はリーダーでも読み込みができ、 Textboxのデータとも一致している状況です。 このBarcodeCtrlで変換したバーコードイメージを そのままプリンターへ送る事は出来ないのでしょうか? いろいろ検索した結果VB-BarCode .NETなる物もあったのですが、 このコンポーネント?なるものを導入しないと駄目なのでしょうか? 長くなりましたが、VB初心者で上手く表現出来てないかもしれませんが、 ご存知の方がいらっしゃいましたらご教授ください。
XP VB6.0 DataReportのラベルにフォームのラベルの内容を直接移すには どうすればいいですか? 最初は DataReport1.Section1.label1.caption = form1.label1.caption みたいな単純なコマンドだと思ってたんですがやっぱり無理でした...
PictureBoxに、自作のLineStyleの直線を引く方法を教えてください m( _ _ )m (例えば3点鎖線のような)
VB6.0+SP6+WinXP(Pro) 調子くれて ActiveXControl 作ってたら、テスト段階では動くのに、コンパイルしてみたら、 「Visual Basic でサポートされていないオートメーションが変数で使用されています。」 ってエラーがでますた。 このエラーの意味は何となくわかるが、どの変数かが特定できません。 怪しいところを、一つずつ修正してコンパイルしていけばいいように思うんですが、これだと辛いです。 簡単に特定する方法はありませんか?
デバグ環境るんだから、ひとつひとつつぶせばいやん。 それとも机上でバグ?
どの変数かが特定できないんですよ。 コンパイルしたときに、エラーが表示されるだけなんです。
それじゃターゲットマシンにOLEが不足してるんじゃないの? どんなモジュール使っているのか列挙しないとMSの野郎以外分かりません
82 :
デフォルトの名無しさん :05/02/02 16:35:42
>>78 APIのパラメーターがくさいな。
P-Codeコンパイルでもだめ?
P-Code も同じでした。 ちなみに現在参照しているのは、 Visual Basic For Applications Visual Basic runtime objects and procedures Visual Basic objects and procedures OLE Automation です。 全部の変数の型を確認するのは嫌なので、何とかお知恵を・・・
エラートラップして調べればいいんじゃないの?
85 :
デフォルトの名無しさん :05/02/02 17:47:53
>>84 詳細きぼんぬ
>>85 Variant 型を宣言している部分を全部変えてコンパイルしないと確認できないんですけど、他に何かよい方法はありますか?
>>78 全体的に意味不明というか情報不足だよ。
たとえば「現在参照している…」ってそれ自作コントロール使ってるアプリのこと?
それとも自作コントロール自身?
どんな機能のコントロールなのかは極秘事項で人に明かせないの?
いつものことだが人にESPを期待しない。
あんたの思念は言葉で表現しないと人に伝わらないよ。
つーか自作コントロールってそもそもコンパイルして使ってみるなりしないと
テストも糞もないと思うんだけど。
なんか開発環境と実行環境が違っていて、自作コントロールが参照しているCOMの
タイプライブラリがちゃんとインストールされていないなんてオチの予感がする。。
OnError で エラー458 を捕まえて場所や頻度を調べればいいんじゃない?って事。 面倒でお気に召さないかもしれないけど。
89 :
デフォルトの名無しさん :05/02/02 23:01:27
エラーはコンパイル時に出てるんだろ、 OnErrorってなんだよ。
あ、コンパイル時エラーか。
>>80 見落としてた。ゴメン
VBScriptで質問があります。 VBSでUDP(又はIPパケット)を送信する方法を、ご存じの方教えてください。 目的は、自作のスクリプトからsyslogメッセージを送ることです。 MSDNで、「.NET FrameworkでUdpClientクラス」を見つけましたが、 VBSで使えるモノでしょうか?(そのままでは動かないことは確認しました。) あとは、GoogleでVB(VBSでない)やCで「WinSock」を使う例が見つかりましたが そのままでは使えませんし。 よろしくお願いします。
>>87 >>たとえば「現在参照している…」ってそれ自作コントロール使ってるアプリのこと?
>>それとも自作コントロール自身?
えっと、自作コントロール自身がコンパイルできないので、自作コントロール自身の参照を列挙しました。
コントロールを使用する不特定多数のプロジェクト側を書いても意味ないと勝手に思ってしまったものですから。
まさか、コントロールを呼び出す側の参照内容も明示しなければいけないなんて、ボクには想像もつきませんでした。
>>いつものことだが人にESPを期待しない。
>>あんたの思念は言葉で表現しないと人に伝わらないよ。
「Visual Basic でサポートされていないオートメーションが変数で使用されています。」 の変数を調べるのに、
怪しい変数を外してコンパイルを繰り返すしか方法はないんですか?
というのが知りたいんです。最初から同じ質問内容のつもりだったんですが、エスパーでないとわからないでしょうか?
もしくはボクの文章力がないのでしょうか?
>>どんな機能のコントロールなのかは極秘事項で人に明かせないの?
ボクの知りたいのは、「Visual Basic でサポートされていないオートメーションが変数で使用されています。」 の変数を調べるのに、
怪しい変数を外してコンパイルを繰り返すしか方法はないんですか?というのが知りたいんですが。
この場で見ず知らずの方に、仕様を明らかにして根本的にデバッグしてもらうとか、エラーの出ている変数を特定してもらうつもりなら詳細説明が必要でしょう。
しかし、そこまでをお願いするならプログラマなんて辞めたほうがマシですよね。多分・・・
>>ーか自作コントロールってそもそもコンパイルして使ってみるなりしないと
>>テストも糞もないと思うんだけど。
お説教ありがとうございます。以後気をつけます。
おっしゃる通り、コンパイルして使ってみるなりしないとテストもクソもないのです。
そこでお願いです。コンパイルするために、問題のある変数を調べる方法を教えてもらえませんか?
93 :
デフォルトの名無しさん :05/02/03 09:50:09
変数のオートメーションエラーなんだから、Variantが怪しいとしか 言えないんだわ。 二分木検索って手もある訳だから、大きく割って上か下かで、検索 すればすぐだろ。
>>93 >>二分木検索って手もある訳だから、大きく割って上か下かで、検索
>>すればすぐだろ。
この方法は同様の現象(コンパイル時にのみエラーがでる)際に、何度か試したことがあります。
プロジェクト全体が大きい場合やモジュール数が多い場合、また広範囲のソースコードを操作するため、あまりやりたくなかったのですが、やはり、この方法しかないんですね・・・
ということで、この方法で見つかりました。
>>変数のオートメーションエラーなんだから、Variantが怪しいとしか
はい、その通りでした。
public property get AAA(optional byval V as Variant = Null) as CMyClass
の Null がお気に召さなかったらしく・・・ "" に変えたら通りました。
ありがとうございました。
ちなみに87氏の説では、あなたはエスパーと言う事になりますね。
95 :
DethLow :05/02/03 12:30:51
VB6.0で販売システムを作成しているのですが、メルマガを発行したいので ACCESSで作成したデータベースから顧客すべてのメールアドレスを取得し メーラーのBCCに自動で挿入し件名・本文を入力した後にコマンドボタンを押したら 送信する処理は作成できるんでしょうか?
>>95 そういう方法では普通やらない
メルマガの作り方から勉強して下さい
99 :
DethLow :05/02/03 14:41:56
高1なんですが、授業でゲームを作れと言われました。簡単な作り方を教えてください
フォーム上にテキストボックスの配列がある場合、フォーカスがあたっているテキストボックスの インデックスはどうやって知るのですか?
>>101 コントロール配列だったら、イベント引数の Index で取得できます。
103 :
78 :05/02/03 18:01:29
>>101 アクティブなコントロールを得るには、activecontrol オブジェクトを使うと楽です。
こんな感じで書くと良いですよ。
if (activecontrol.name = "txtArray") then
CurrentIndex = activecontrol.index
end if
>>100 どんなゲームが望みなんだろう?
こんな漠然とした質問も久しぶりに見たよ。
VB6.0 winXP DataReportのLabel1にフォームのLabel1を表示したい場合は DataReport.Sections("Section1").Controls("Label1").Caption = Form1.Label1 でいけたんですけど同じように DataReport.Sections("Section1").Controls("Image1").Picture = Form1.Image1.Picture とイメージを持っていこうとすると 「オブジェクトはこのプロパティまたはメソッドをサポートしていません」 と実行時エラーが出るのですが何が悪いのでしょうか
>>100 1. フォームにラベルとコマンドボタンを配置
2. 乱数を発生させ、その値に応じて「グー」、「チョキ」、「パー」をラベルに表示
これでじゃんけんゲームの完成じゃ。
宿題なんだからここから先は自分で考えな。
109 :
デフォルトの名無しさん :05/02/04 11:23:41
VB6.0 win2000SP4 splitを使って出た文字を違うフォームのテキストにそれぞれ表示させたいのですが、 うまくいかず困っています。宜しくお願いします。 Dim i As Integer Dim sData() As String sData = Split(sKey, ",") For i = 0 To UBound(sData) Load Form2 Form2.Show Next
110 :
デフォルトの名無しさん :05/02/04 12:50:23
WindowsMediaEncoder9 SDKを使用して音楽ファイルの連続エンコードを VBScript上で行っています。 エンコードを繰り返していると、原因不明(エラーハンドルは捕まえられません) のままScriptが止まった状態になります(プロセスは生きています) このようにスクリプトが止まってしまう現象として、考えられる原因は 何がありますでしょうか・・・ メモリリークとか怪しいと思っていますが リークしているか調べるられるのでしょうか・・・
Dim i As Integer Dim sData() As String Dim f() As Form2 sData = Split(sKey, ",") ReDim f(UBound(sData)) For i = 0 To UBound(sData) Set f(i) = New Form2 f(i).Caption = sData(i) f(i).Show Next
>>111 ありがとうございます。大変助かりました。
2000 VB6 0# VB6開発環境でGrepやブックマークのショートカットキー対応などの機能を持ったアドインを自作したいのですが、 どこか参考にできるようなサイトや書籍はないでしょうか? ググってみたけどアドインを解説しているサイトはなかなか見つからなくて…
6.0にはsplit関数があるのか。便利だなー
textboxに文字が入力されないのですが、どのような原因が考えられますか? keyPresをみてみると、codeは正しく来ているのですが・・・
どこかに盗まれてるのかなぁ。 例えばキーロガーとか。 まあ、そんな間抜けなロガーは無いか。
>>115 かんたん、キープレスでキャッチしてない、
女を馬鹿にするなよ
120 :
デフォルトの名無しさん :05/02/05 16:10:49
VB6.0 MSChart SP4 MSChartでX軸を左向きにするにはどうすればいいでしょうか?
121 :
デフォルトの名無しさん :05/02/05 17:23:58
VB6.0 3 text1 5 text2 8 text3 3+5 text4←計算式をテキストボックスに出すにはどうやってやればいいんでしょうか?
>> 121 ・・・パズルか? う~ん、意味がわからん。
>>121 text1 & "+" & text2
124 :
デフォルトの名無しさん :05/02/06 02:26:47
>>122 text4に計算式を出さなくちゃいけないんだけど
やりかたがわからないです。
text1とtext2に入れた数をtext3に答え
text4に式を出す。横には足すとか引くとか色々なボタンがあるんですけど
>>123 サンクスです。出来ました。ありがとうございました。
126 :
デフォルトの名無しさん :05/02/06 04:59:33
text1に入力した数値からtext2に入力された数値までの累計を求める Dim 入力1 As Integer Dim 入力2 As Integer Dim 累計 As Integer Dim cnt As Integer 入力1 = Text1.Text 入力2 = Text2.Text 累計 = 0 cnt = 入力1 Do While cnt <= 入力2 累計 = 累計 + cnt cnt = cnt + 1 Loop Text3.Text = 累計 これで普通に求まるんですが 偶数の累計はどこを変更すればいいんでしょうか?
意味わからん。。 データ2つしかなかったら「累計」じゃなくて「合計」だと思うんだけど・ っていうか、偶数の累計??判じ物の一種ですか? ていうか、こんなレベルの内容をよく人に聞けるもんだ。 こんな感性の人間は何やらしてもおそらく満足にできないタイプだろう。 普通黙って本屋行って入門書買って勉強するとかするでしょ。 VB5,6なんてウェブ上にだって親切なサイトがいくらでもある。 学校の宿題なら当然テキストがあるだろ。
Dim 入力1 As Integer Dim 入力2 As Integer Dim 累計 As Integer Dim 偶数計 As Integer Dim cnt As Integer 入力1 = Text1.Text 入力2 = Text2.Text 累計 = 0 偶数計 = 0 cnt = 入力1 Do While cnt <= 入力2 累計 = 累計 + cnt If cnt Mod 2 = 0 Then 偶数計 = 偶数計 + cnt End If cnt = cnt + 1 Loop Text3.Text = 累計 Text4.Text = 偶数計
130 :
デフォルトの名無しさん :05/02/06 16:58:26
テキストボックスに入力されたものが数値か判断するには どうプログラムを書けばいいんでしょうか?
for~next文を使って、 12345 12345 12345 12345 12345 12345 12345 のように表示させるプログラムを作りたいのですが わからず困っています。 ヒントだけでも教えてもらえませんしょうか?
>>131 for i=0 to 6
for j=0 to iif(i>3,3-i,i-3)
print ""
next j
print "12345"
next i
For i = 0 To 6 Print Space(Abs(i - 3)) & "12345" Next i
>>133 ,134
ありがとうございます。
テスト期間中なので、ほんと感謝です。
他にもわからなくて困っているのですが、質問させていただいてもよろしいでしょうか?
1
2
3
4
5
1 2 3 4 5 7 8 9
6
7
8
9
これもfor~next文を使用してプログラムを
完成させるらしいんですが・・・全くわかりません・・・。
>>135 あなたはテストで出される問題を全てここでやってもらうつもりか?
s = Space(5) For i = 1 To 9 Print s & i s = Left(s, Len(s) - 1) If s = vbNullString Then For j = 1 To 9 If j <> 6 Then s = s & j & Space(1) End If Next j Print s s = Space(10) End If Next i
すいません、6抜けてました。 135>>一応自分でもやってるんですが、どうしても解らなくて・・・ 134さんと139さんのヒントを元に自分でやってみたんですが For i = 1 To 5 Print Space(Abs(i - 5)); i Next i Print 12345678910# For j = 6 To 10 Print Space(Abs(j - 20)); j Next j 菱形っぽいですができました。 できるだけがんばってみます。 ありがとうございました。
141 :
デフォルトの名無しさん :05/02/06 21:31:12
VB6.0で ポップアップメニューを右クリで表示させるんですが 左クリしても表示しちゃうんですが表示させないようにするには どうすればいいでしょうか?
143 :
デフォルトの名無しさん :05/02/06 21:34:17
If Button = 2 Then PopupMenu M_Popup End If ですが・・・
いやできてました。 すいません。
右クリで出たものをクリックしてForm上に画像を出すんですけど 出ません。左クリでも最初の画像だけ出ちゃいます。 左クリで出さないようにして 右クリで画像出すにはどうやればいいんでしょうか? ちなみにメニュー欄にあるやつを押せば画像はちゃんと出るんですが・・・
わ、わかった むきだしのコックをぶちこんでくれ
右クリで出すにはどうすればいいんでしょうか? 左では出なくなったんですが
なんか表現に興奮するな・・・ ちょっと抜いてくる
性欲をもてあます
良スレの予感
153 :
デフォルトの名無しさん :05/02/07 13:44:43
お取込のところすまんがWindows2003Sever上でVB6の動作はどんなもんですか? 2000からの移行なんだけど、コーディングでささいな変更とかあったら教えてください お願いします
154 :
デフォルトの名無しさん :05/02/07 15:14:15
すみません標準コンポーネントのMsFlexgridについておしえてください。
自前でソート機能を作成したのですが、項目部分(トップの見出し)
をクリックした再のRowsの値により、どの行がクリックされたか判定しています。
なぜかIF Rows = 0 Thenの処理を飛び越えるのでウオッチウインドウで確認したところ
見出しのトップ行と次のデータ部の行で取得できる値がいづれも〝1〟が
戻ってきてしまいます。見出し行クリック時のうまい判定のしかたを伝授願えないでしょうか?
環境はVB5です。
>>153 うちの環境では5でも6でも順調に動いていますよ。
155 :
154 :05/02/07 15:36:34
すいません解決です。どうやら固定値を設定してはいけないみたいですね コードで項目部の色変えることにします。
角丸四角形の描画はこれでいいですか? いちおう線はつながりますけど、泥縄式に調整したので自信なくて。 pi = 4 * Atn(1) r = 8 ' 半径 x = 15 ' 開始X座標 y = 40 ' 開始Y座標 w = 300 ' 幅 h = 200 ' 高さ Line (x + r, y)-Step(w - 2 * r - 1, 0) Line (x + r, y + h)-Step(w - 2 * r - 1, 0) Line (x, y + r)-Step(0, h - 2 * r - 1) Line (x + w - 1, y + r)-Step(0, h - 2 * r - 1) Circle (x + r + 1, y + r + 1), r, , pi * 0.5, pi Circle (x + w - r - 1, y + r + 1), r, , 0, pi * 0.5 Circle (x + r + 1, y + h - r - 1), r, , pi, pi * 1.5 Circle (x + w - r - 1, y + h - r - 1), r, , pi * 1.5, pi * 2#
>>157 ありがとう。
検索したら、「角の丸い」って書いてあった。
「角丸」じゃほとんどヒットしなかったのに。
VB6.0でマルチスレッドって出来るんですか?
>>154 レスありがとうございます。
2003でやってみようかな
>159 ActiveXのInstancingプロパティをMultiUse
163 :
デフォルトの名無しさん :05/02/08 09:08:24
>>159 やめろ、ひどい目にあうぞ。
あんな簡単な、マルチメディアタイマーさえ動かない。
164 :
デフォルトの名無しさん :05/02/08 18:58:59
VB6は事務処理専用に使ってます。
165 :
デフォルトの名無しさん :05/02/08 18:59:30
適材適所ですな(w
Winnyだってマルチスレッドを直接使わず、 VBでも使えるsocketの非同期通信だけでやっているわけで VBだってどうにかなる。
一輪車で日本一週できるかっつったらできるけどさぁ
168 :
デフォルトの名無しさん :05/02/08 19:22:57
わざわざやらん罠(w
やってやる、覚えてろよ。
Windows98以降であれば、何のコンポーネントも追加せず 作ったソフトなら、VBランタイムを別途インストールしなくても一応起動しますよね? だけど、日本語を使ってると、その日本語が化けるって症状が起こりますよね? この認識あってます?
>>170 特殊なコンポーネント使ってなければ、英語のVBランタイムの一部は入ってるな
ごめん、VB使ってるのはメインウインドウだけ
VB増強作戦のオフライン版を持ってる型、ぜひアップロードしていただきたいのですが・・・
2.07MBの奴だよね。 うpろだおくれ。
印刷帳票の一部に、リッチテキストのデータを入れたいんですけど、どうすれば良いのでしょうか?
もしや、一度イメージにしないと駄目なのか?
イメージにしてみたんですが、一度、解像度が低い状態でイメージ化したものをプリンターオブジェクトに吐き出したためか、ジャギジャキな文字になってしまうんですが。 何か良い方法はないんでしょうか?
リッチテキストのデータって何かね?
180 :
デフォルトの名無しさん :05/02/10 04:15:28
VBでI/Oポートの制御したいです。 Windows APIでもいいのですが、可能でしょうか? i)特定番号のI/Oポートの内容を見る。 ii)特定番号のI/Oポートに書く。 iii)特定のI/Oに入力があったときに割り込み処理 (またはデータの取りこぼしがないようにする方法) よろしくおねがいします。
>>179 fup8004.lzh で、受信パスは vb で。
>>182 ありがとうございます。モウナクシマセン・・・・
ぢつはもう7年前の話なんですね
184 :
デフォルトの名無しさん :05/02/10 17:16:00
>>180 i),ii)はCでDLLを作れば可能だけど、
iii)は難しいかな。割り込みはドライバーの仕事だからな。
どうしてもと言うならCのアプリを作ってポーリングでポートを見て、
MessageでVBに飛ばすかな。
185 :
デフォルトの名無しさん :05/02/10 17:41:48
すんませんVB6.0なんですが、質問させてください。 iniファイルの置き場所をwindows(もしくはwinNT)直下では無く、 任意のフォルダ(出来れば実行ファイルが置いてあるフォルダ)にしたいのですが、 そのパス等、どのように記述すれば良いんでしょうか? どうかよろしくお願いいたします。
iniファイルの読み書きには何を使ってるんだ?
>>183 お役に立てて光栄。大切にしてケロ。
ろだの方はデリるズラ。
189 :
デフォルトの名無しさん :05/02/11 10:27:09
10進から16進に変換するにはどうすればよいのでしょうか。
hex
192 :
デフォルトの名無しさん :05/02/11 10:45:19
>>190-191 ありがとうございます。あともう1つお願いします。
数値の先頭を0埋めしてある桁数になるようにしたいのですが、
どうやるのが普通でしょうか。VB.NETならPadLeftとかいう関数が
あって便利なのですが。
800 → 000800
みたいなことです。
Format
Right(("000000" & "800"), 6)
Format("800", "000000")
196 :
デフォルトの名無しさん :05/02/11 11:06:27
198 :
デフォルトの名無しさん :05/02/11 12:23:21
ボタンを押したら、OutlookExpressの「メッセージの作成」ウィンドウを 表示して、件名や本文や宛先を表示したいんですがどうやれば いいかわからない・・・orz よろしくお願いします。m(_ _)m
OutlookExpressを起動してメールの作成ボタンを押し、 メッセージの作成ウィンドウが表示されたら件名や本文や宛先を 入力して表示させます。
201 :
198 :05/02/11 12:57:04
202 :
198 :05/02/11 13:32:43
>>200 mailto:をコピペしたんですが、本文の1行目が必ず改行されてしまいます。
ShellExecuteEXを使用しています。
どうして・・・orz
Visual Basic 6.0を使ってます。 質問なんですが、DirectXを使ってスタートボタンを押したときにでるメニューを消したいのですが、どうすればいいでしょうか。 お願いします。
>>203 DirectXを使ってスタートボタンを押すことはできねーぞw。
もちっと読む側のことを考えて文を書けや。
全画面(占有)モードのときWindowsキーを押されても機能しないようにしたいってことかな?
それならDirectInputで強調レベルにDISCL_FOREGROUNDを指定するだけでいいはずだぞ。
DISCL_NOWINKEYってフラグもあるけどな。
>>204 すいませんでした。そのことを心がけるようにします。
DISCL_FOREGROUNDに指定すると、DiDev.GetDeviceStateKeyboardのところでエラーになりました。
何故でしょうか。
どうやら、そのプログラム本体からフォーカスがなくなるとエラーになるみたいです。 これを改善する方法を教えてください。
>>203 だからぁ~、どういう風にやってて、どんなエラーなんよ?
メソッドの意味とか理解しないでコピペしてんじゃねーの?
アクセス権とかちゃんとてやってる?
「心がける」なんて小学生にでも「言える」ぞ?ん?
shiftキーが押されたかどうかを知る方法はないのでしょうか? メニューエディタのところに表示しないダミーのメニュー置いてショートカットキー指定すればいいジャン、って思ったのですが shift+enterというのがないもので・・・
あ、すいません。。。 keydownイベントでできました。。。
VB6.0 を使用しています。 「フォームが最小化された」「最小化の状態から復元された」をトリガにして 処理を行いたいのですが、どのようにすればよいでしょうか。 フォームの width、height を監視するくらいしか思いつかないのですが。
211 :
◆uILP78dVVc :05/02/12 20:20:04
>>210 最小化等の動作をするとForm_Resizeイベントが発生します。
イベント内でフォームのWindowStateを見て、処理を分岐します。
>>210 Private Sub Form_Resize()
Select Case Me.WindowState
>>211-212 ありがとうございます。
WindowState プロパティがあるのを失念していました。
214 :
198 :05/02/13 13:54:35
VB6、SPREAD6を使っています。 5列100行のスプレッドシートで、表示可能行は20行です。 一番先頭の行を表示した状態で、その先頭行をクリックしたまま下のほうに マウスを移動するとスプレッドシートがスクロールするのですが 最終行が一番上にきて終了してしまいます。 最終行を表示可能行の一番下に表示したいのですが どうやったいいのでしょうか? よろしくお願いします。 m(_ _)m
215 :
198 :05/02/13 14:20:06
ScrollBarMaxAlignプロパティでできました。(^^;
Os:WinXP Home VB:VB5.0 SP無し PCゲーム(Winning Post7)のメモリを操作したいと思ってます。 OpenProcess → ReadProcessMemory → WriteProcessMemory ということまでは分かったんですが、チンプンカンプンです。。 メモリマップ等が詳しく載っているサイトや本をご存知の方いますか? もしくは類似品を作ったことがある人で、手順を教えていただける方 いますか? どうぞ宜しくお願いします<(_ _)>
WIN2000 VB6 SP5 EPSON LP-8100 です。 印刷の事なのですが、「逆方向から印刷」をコードで 実現したいのですが、可能でしょうか?
【Q】
>>217 の文章で、217以外の人間に
217が実現したいと思っていることを伝達することは可能でしょうか?
【A】
不可能だと思います。
「逆方向からの印刷」ってどういうこと?
機種名書かれても普通の人はどんなプリンタかわかりません。
217です。書き方悪くてすみません。 印刷したいものをPictureコントロールに乗せて、そ れを180゜回転して印刷、なんて事も考えたのですが、 処理に時間がかかり過ぎるかなぁとか。 プリンタドライバの操作は簡単ではないですか?
221 :
デフォルトの名無しさん :05/02/13 18:31:56
>>220 紙を反対にセットしたほうが早いと思われ。
>>207 DirectDrawの強調レベルのところが
DD.SetCooperativeLevel hWnd, DDSCL_EXCLUSIVE Or DDSCL_FULLSCREEN Or DDSCL_NOWINDOWCHANGES
DirectInputの強調レベルのところが
DiDevK.SetCooperativeLevel hWnd, DISCL_FOREGROUND Or DISCL_NONEXCLUSIVE
となっております。
これで、Windowsのキーを押すと、
実行時エラー '-2147024866(8007001e)';
オートメーション エラーです。
指定されたデバイスから読み取れません。
というエラーが出ます。
何度も申し訳ないです。 決められた様式の枠内に文字を印刷したいのですが、 プリンタの印刷範囲の下マージンが17mmで印刷しきれ ません。「逆方向から印刷」する事で、解消できるの ですが、コモンダイアログの「印刷」を出してきて、 「プロパティ」を押す、という方法はしたくないので す。
224 :
デフォルトの名無しさん :05/02/13 20:08:53
>>223 今までどういう方法で印刷してたの?
プリンタのプロパティで“逆方向から印刷する”ってあるの?
>>223 それなら、描画位置をScaleXXプロパティ使ってずらすだけでいいと思うんだけど。。
まさかFormのPrintFormなんて使ってないよね?
EPSONのプリンタしか知らないのですが、「逆方向か ら印刷」もしくは「180゜回転して印刷」というのが あります。
227 :
デフォルトの名無しさん :05/02/13 20:38:19
VB6.0を使用してます。質問したい事があるのですが、現在の日付から自分で指定した日付の差の日数を求めるプログラムを 作りたいのですがこれにはDateDiff関数を使いますよね。 MSDNでDateDiffの使用例を見て作ったのですが、これからの日(今日で言うと2/14~12/31)を求める事はできたのですが 過ぎてしまった日にち(今日で言うと1/1~2/12)を入れてやると「-~日」となってしまうんです。 12月をまたいでもちゃんとできるようにしたいのですがどうすればいいのでしょうか? DateDiff関数じゃなく別の関数を使用しなければならないのでしょうか。 ちなみにこれがMSDNに記載されていた使用例です。 Dim TheDate As Date Dim Msg TheDate = InputBox("日付を入力してください。") Msg = "今日からの日数: " & DateDiff("d", Now, TheDate) MsgBox Msg
228 :
デフォルトの名無しさん :05/02/13 20:41:11
>>226 Printerオブジェクトの中にそれらしきプロパティないの?
229 :
デフォルトの名無しさん :05/02/13 20:43:29
ちょっとわかりにくかったもしれないので補足です。 1/1の日を指定したのであれば今日を元に「指定した日まで後320日です」という風にしたいんです。
230 :
デフォルトの名無しさん :05/02/13 20:50:36
>>229 日付を入力するときに、年を入力しなかったでしょ。
でないと、2004年1月1日と解釈しますよ。
>>229 西暦と月と日全てが無いと、計算できないだろ?
232 :
230 :05/02/13 20:54:08
× 2004年 ○ 2005年
233 :
デフォルトの名無しさん :05/02/13 20:54:12
あー西暦を忘れてました・・・。あほ質問ですいませんでした。
mciSendStringでmidiが再生できない時があるのですが、 何か原因はありますかね? 私の環境では再生できるのですが、 他の環境では再生できないらしいです。 その再生できない環境ですが、サウンドカードも積んであるようですし、 なにより他の再生ソフトでは再生できるようでして。 midiも特に拡張音源は使ってませんし。 ググッたところmidiのフルパスにスペースが含まれていると 正しく動作しないとあったのですが、 その辺もダブルクォーテーション入れて対策済みですし。 原因がサッパリつかめなくて困ってます。 どなたかご教授願えないでしょうか?
訂正。mciSendStringAです。
236 :
230 :05/02/14 10:57:43
>>234 鉄道屋さんですよね?
マップをクリックしたら、再生がはじまるときがあるのですが、
頭だし1秒か2秒で止まってます。
重すぎて動かん
>>234 無責任に気づいた点を並べてみる。
MCIのコマンドについては知らないので何も指摘できませんが。。
(1) cStateって配列を初期化で、文字列の最後のナル文字は不要だと思う。
(2) 各プロパティ・メソッドの中のmciRetStringは、mciSendStringをコールする前に
mciRetString = String(255, vbNullChar)のようにナル文字で埋めておく必要があると思う。
特に、MidiStateプロパティの中の処理はまずい気がする。
ていうか、MSDNにあるように、使わないんだったらNULL渡しとけばいいのでは?
Val関数使うと物凄い遅くなるんですね。
>>239 レス有難うございます。
cStateのNullを取ったりしていろいろ文字列弄くってたら
>>236 さんと似たような症状が出てきました。
mciRetStringに返される文字列がNT系と9x系で違ってるかも。
Nullの後すべてNullで埋められるか、デフォルトのままか。
デフォルトのままだったらcStateと同値判定されて正しく動作して
Nullで埋められたら同値判定されず正しく動作しない。そんな感じがします。
とりあえず、その辺の修正をして今は報告待ちです。
>>242 そうやっといたら正しく動いたようです。
有難うございました。
244 :
デフォルトの名無しさん :05/02/15 10:05:39
WinXP+SP2+office2003のマシンにVB6.0を入れると、 VB起動時に毎回office2000のインストーラが立ち上がってくるようになったんだけど・・ なぜ? ちなみにAccess使ってるんだけど何か関係あるの?
>>244 たしか既知のバグ。
MSに対処方法が載ってる。
248 :
154 :05/02/16 18:03:18
すみません緊急的に教えていただきたく存じます 文字列"c:\folder\main\app\Job" というフォルダパスなのですが、一番最終の"Job"の文字列のみを抽出したいのですが 何卒お願いいたします
6なら、Instrの文字列うしろからバージョンとかで出来る。 またはSplitで分けた末尾。
ていうか、文字列関数眺めてそれぐらいのアルゴリズムが ぱっと思い浮かばない人がプログラミングに関わるのは本人にとっても悲劇だと思う。
251 :
デフォルトの名無しさん :05/02/16 19:32:23
>>249 splitって、文字列を後ろから¥探すより速いですか?
自分で試せることは自分で
253 :
デフォルトの名無しさん :05/02/17 00:09:55
vb6.0です bitblitでvbSrcCopyを使って描写するとフォームの下が透けて見える いろんなサイトのサンプルコードと見比べたけど原因が分からない bitblit vbSrcCopyで背景を描写(したいんだけどバグる) ↓ bitblt vbSrcAndとvbSrcInvertでオブジェクトを描写(これは正常に動作してる) ↓ Refresh Wait ↓ 繰り返し 助けてくれ
254 :
デフォルトの名無しさん :05/02/17 00:11:31
なんかbltをblitとか書いちゃったけどそこはスルーで
255 :
デフォルトの名無しさん :05/02/17 00:17:57
自己解決しました AutoRedraw忘れてた なにやってんだ俺は・・・自分一人で空回り
ところで、質問なんだがいまさら保守要員以外でVB6で食えるの? なんか食える人間ゴロゴロいるんだがいつごろ、消えるのだ?
259 :
デフォルトの名無しさん :05/02/17 11:10:12
VB6.0です FTPサーバー上にある実行ファイルの更新日付を見て、 ローカルにあるものよりも新しかったらダウンロードして 上書きをするというものを組んでるんですが、 この場合、一旦日付を見ずに無条件に落としてきて ローカル上でFileDateTime関数で上書きするか否かを判断するしか無いでしょうか? FTPサーバー上のファイルの更新日付を見る方法はありますでしょうか? よろしくお願いいたします。
VB6.0です。この先2、3年現役です ところでWindowsXP Pro + SQLServer2000 + VB6.0の構成でサーバ兼クライアントとして 動かした人います? WindowsServerの短期代替として動くか気になるところなんですか・・・
>>259 FTPに何を使ってるかによるけど。
FTPの制御データの流れは単なるキャラクタのやり取りだからね。
lsなりdirなりリスト表示コマンドを投げて、その戻り値を文字列解析して該当部分を切り出せばいけるでしょ?
(.netだとフリーのFTPライブラリとかがあって、そのソースを見ると勉強できるよ。)
>>262 レスどうもです
InetでFTPやってるんですが、InetのFTPコマンドでは日付取得するコマンドが
存在しないらしく、ちょっと参ってました。
とりあえずdirの返り値を見てみようと思います
参考になりました!
>>263 手でFTPやってみれば判るけど、相手側FTPサーバによって戻り文字列のフォーマット違うから注意してね。
>>264 だめっす。。。。
手でFTPのdir打つと「更新日付/サイズ/ファイル名」が返ってくるんだけど、
Inetだとファイル名の一覧しか帰ってこない。。。。。。鬱
なんかいい方法無いっすかね?orz
あともういっこ手段があった。 3.バッチファイルでFTPコマンドを実行して、ls結果をファイルにリダイレクトさせる。 VB Shell "Command.com バッチファイル" バッチファイル FTP < コマンドファイル >outdata.txt コマンドプロンプトで手でやってみれば判りますが・・・。 ” <コマンドファイル”には手で実行するFTPコマンドを記述 ">out・・・"は結果の標準出力をファイルにリダイレクト。 コマンドファイル内は多分 USER xxx PASS xxxx Connect LS BYE かな? で、その出力されたファイルを解析。
パイプでやれば良いのに
>>268 VBのShell起動した先から標準出力ってパイプで取れたっけ?
コンソールを作って標準入出力ってのはやったことあるんだけど。
わざわざ色々と模索してもらってほんと申しわけ無い。。。 ありがとうございますorz バッチファイルでいくのが一番手っ取り早そうなんで、 ちとやってみます。 ほんとありがとう!
271 :
デフォルトの名無しさん :05/02/17 18:53:47
お尋ねします。 V.BのACTIVEX.EXEからV.C作成のノーマルDLLを呼び出す事が できません。 色々と調べたのですが、ヒントが何処にも乗っていなく。 DLLがACTIVEXDLLなら当然呼び出せるのですが、 素材としてノーマルDLLがファイルとして存在する だけなもので、DLLをACTIVEX化する事も出来ません。 どなたか、V.BのACTIVEX.EXEからノーマルDLLを 呼び出せる方法をご存知無いでしょうか? OS:WindowsXP V.B6.0 を使用しています。 よろしくお願いします。
>>271 普通のEXEからはそのDLLの呼び出し成功するの?
273 :
デフォルトの名無しさん :05/02/17 19:10:35
>>272 通常のEXEからは動作実績のあるDLLです。
ですから、今回流用使用しようとしたのですが、
ACTIVEX.EXEからはDLLが認識できないようなのです。
何かいい知恵はありますか?
>>271 パスが通ってないとかじゃないよな?
DLLをc:\Windowsとかに突っ込んでもダメ?
普通に書き方間違ってるだけだろ。
276 :
すみません。教えてください。 :05/02/18 09:41:22
VB6.0からEXCEL2002のファイルに貼ってあるコントロール(チェックボックス)を制御したいのですが、 エラーが出てうまくいきません。。 ↓--------------------------------------------- Dim objXls As Object Set objXls = CreateObject("Excel.Application") With objXls .Workbooks.Open (xlsPath), ReadOnly:=True '<このobjXlsのシートは「sheet1」のみです。> '<「sheet1」には「CheckBox1」が設置してあります。> '=(この部分でエラー)============================== .Sheet1.CheckBox1.Value = True .CheckBox1.Value = True '↑(2個のどちらを使ってもエラーが出ます。)======== End With --------------------------------------------- エラー内容 「オブジェクトは、このプロパティをまたはメソッドをサポートしていません。」 とでます。 何かご存知の方教えていただけますでしょうか?? 宜しくお願いします。
階層がおかしくない? Excel -> Book -> Sheet だよね。BookとSheetが同レベルになっていないか?
278 :
デフォルトの名無しさん :05/02/19 01:51:59
TEMP = Shell("move c:\temp\000*.bmp c:\Program Files\Barcode\", 1) だとProgram Filesのスペースのせいかうまくいきません。 ”でくくっている文字列の中でどのようの表現したらよいのでしょうか?
279 :
デフォルトの名無しさん :05/02/19 02:18:11
2つのプログラムの間で命令のやり取りを行うとしたら DDEとPROPどちらがおすすめでしょうか? ソケットを使うって手もありますが、一番早いのはPROPですかね。 DDEはCancelを返さないとエラーが起こるので頻繁にやり取りを 行うプログラムには向いていないように思えるのです。
280 :
デフォルトの名無しさん :05/02/19 08:37:46
現在パソコンが4台ネットーワーク接続されており サーバー管理はしていません。 1台のパソコンで残り3台のパソコンをネットワーク から切断するソフトをVBで開発したく教えて下さい。 使用目的はWinnyやMX等を仕事中に起動させている アホな社員を阻止する為です。
偽ARPパケット出しまくる
282 :
デフォルトの名無しさん :05/02/19 10:05:37
281> どうすれば良いのですか? バカなので食わしく方法を 説明してください。
>使用目的はWinnyやMX等を仕事中に起動させている >アホな社員を阻止する為です。 ルータの設定を変えろ、アホ。
284 :
デフォルトの名無しさん :05/02/19 10:28:39
283>ルータの設定は勝手にイジラレて しまうので無効なんですよ。
Explorerの詳細表示と同じように,画像の左に複数列の文字列を置け 複数行リスト表示可能なコントロールって無いでしょうか.
286 :
デフォルトの名無しさん :05/02/19 11:07:51
287 :
デフォルトの名無しさん :05/02/19 12:32:06
286>僕にはルーターにパスワードの権限が無いのです
>>287 ルータにパスを設定できる権限を持った人に頼みなさい。
その権限がないものがネットワークの他人の接続を
どうこうしようなんてお門違いです。
289 :
デフォルトの名無しさん :05/02/19 13:02:41
288> 違うのです。僕がネットワークを管理しているのですが・・・ 上長がルータのパスワードを教えろとか聞いてきてヤリタイ放題 なのです。
糞ネタ投稿するな。ニートなのがバレバレなんだよ。
291 :
デフォルトの名無しさん :05/02/19 14:18:11
上長がやってりゃ会社の方針なんだからおまえもやれ。
>>278 スペースを含むようなパスはダブルクォートで括る。
こんなのは Windows の基本。
>>279 サブクラス化してメッセージでやりとりしてもいいんじゃない。
IDEが落ちないモジュールも今なら出回ってるし。
296 :
デフォルトの名無しさん :05/02/20 09:04:04
座標上を点が時計回りに移動するとします。 例えば、最初は真下に移動し、障害物があれば左に移動。 以下同様に、左→上→右→下→左→上・・・・・・と移動します。 つまり移動量と方向は(0,1)→(-1,0)→(0、-1)→(1,0)→(0、1)・・・ のように変化します。 なにか上手い方法ってありませんかねえ? caseを使って切り替えるくらいしか思いつかないんですけど なんかダサイ気がするもんで。
普通移動行列使うだろ
普通三角関数使うだろ
あ、つまり回転行列を使って、つど回転させる訳ですか。なるほど。
当方まったくの初心者なのですが、これからVBを勉強していこうと思っています。 VBの本で、何かお勧めの本はありませんか?
>>300 わかってると思うけどそんなくだらないネタに納得しないほうがいいと思うよ。
俺ならその「ベクトル」をマネージするクラスを作るね。
それならエレガントかつ将来の拡張性もある程度確保できる。
しかしネタってのはわかってる奴がやって初めて面白いのに。
何もわかってない
>>298-299 みたいなVB厨のやるネタは面白くもなんともないな。
>>301 こういう質問はよく見かけるけど、
本なんて人によって合う合わないがあるから無意味じゃね?
どんな自称初心者にも最適な本なんてもんがあれば
MicrosoftがVBに付属でつけるやろ。
2chで聞いてる暇あったら大き目の本屋にいって
片っ端からのぞいてみた方がいいと思うよ。
っていうか、こういう「覚え方」を人に聞くのって
なんか頂けないなぁ。オイラの考え方が古いのかなぁ・・
>>304 本を聞く=覚え方を聞く
だとは思えないなぁ。
あと、100点の本は無いかもしれないけど0~80点くらいの本はあると思う。
20点の本は殆どの人の役に立たないけど、80点の本は殆どの人の役に立つわけでしょ?
良書を薦めるのは無意味じゃないんじゃないかなぁ。
306 :
デフォルトの名無しさん :05/02/20 17:50:53
本屋で見てこれは良さそうだと思って買って帰って よく見たら、全く役に立たない。 こんな本全く役に立たないやと思って捨てておいたら、 半年後すばらしい本であることがわかったり。 英語のVBの本を翻訳した本て、いい物が多いよね、 たくさんある中から翻訳するので、その時一度 選別されてる。
308 :
デフォルトの名無しさん :05/02/20 17:53:39
309 :
デフォルトの名無しさん :05/02/20 17:54:23
>301 これからやるんなら、VB6じゃ無くて、VB.NETの方がいいのでは、 と思うのですが、この板の趣旨に合わないので激しく反省。
>>301 マジレスすると
これからやるんなら、VB.netよりもC#の方が100倍いいのでは、
と思うのですが、この版の趣旨に合わないので激しく反省。
311 :
デフォルトの名無しさん :05/02/21 01:45:52
VB6.0です。 足し算・引き算・かけ算・わり算・三角関数(sin・cos・tan)の計算が出来る関数電卓のプログラムを作りたいのですが、足し算意外が分からなくて困ってます。 本を呼んでも具体的な方法が書いてなかったのでどなたかプログラムを教えて頂けませんか?
>>311 足し算がわかって引き算わからないの?どんなプログラム書いてるんだ
*これが掛け算だ
314 :
デフォルトの名無しさん :05/02/21 02:17:07
プログラムは Dim EnterFlag As Boolean Dim s As Long Count Pl As Single = 3.141593 *==*==*==*==*==**==*==(0~9までのキー) Private Sub key_Click(Index As Integer) If EnterFlag Then Text1.Text = "" EnterFlag = False End If If Len(Text1.Text) < 10 Then Text1.Text = Text1.Text & Index End If End Sub *==*==*==*==*==**==*==(足し算のコマンド) Private Sub Command1_Click() s = s + Val(Text1.Text) Text1.Text = s EnterFlag = True End Sub *==*==*==*==*==**==*==(引き算のコマンド) Private Sub Command2_Click() s = s - Val(Text1.Text) Text1.Text = s EnterFlag = True End Sub *==*==*==*==*==**==*==引き算の場合のみ、数字の前に-が付いてしまいます(例:3-2=-1)
>>314 で、掛け算はできて割り算ができないと言い出すのか?
何故か円周率がPl
Countって・・・ まさか手打ち?
VB5にてネットワークドライブを切らずに… 「\\ホスト名\フォルダ名\」で既存のフォルダを調べる方法はないのですか
>>319 ちなみにdirコマンドでやると
「ファイル名または番号が不正です。」エラーになるのです
>>319-320 「\\ホスト名\フォルダ名\」はできますね…
すみません、間違いです。
上記ではなく…ホストPCの検索です。
dir(\\ホスト名\)では無理なんですよね…。
net view \\ホスト名
>>322 変数が定義されていません。 だそうですが
324 :
デフォルトの名無しさん :05/02/21 17:24:20
>>307 だめだから廃止したんでしょ?使わないほうがいい?
>>324 だめだからじゃない
他のOSにDDEが無いから
.NetはMS-Windowsだけで動くものじゃないぞ
326 :
デフォルトの名無しさん :05/02/21 21:45:02
すみません、質問させてください。 OSはXP、ver6.0、SP1です。 現在簡単なプログラムを作ってまして、ある条件値に対応した画像を表示させるもので、 Picturebox.Picture = loadpicture("c:\***.bmp") というような記述をいくつか並べてるんですが、 「.exeを作成」をして、できたexeファイルを配布した場合、このままでは当然ながら他のパソコンでは表示できません。。 これを他の環境でも表示させるようにしたいのです。 理想はexeファイルに各々の画像データも一緒に取り込まれる形なんですが、そのようなexeファイルの作成の 仕方ってあるのでしょうか。 やはり、それぞれのファイル指定の仕方を("***.bmp")という感じにして、exeファイルと各画像データを zipでまとめて配布するしかないのでしょうか? できればプログラム実行中以外には画像ファイルを覗けないようにしたいのですが・・・よろしくお願いします。
>>326 そのBMPのサイズが大きくなければリソースとしてEXEに埋め込める
>>326 .exeと同じフォルダに置けば読み込めるけど。
>>327 さん
VB初心者なもので、リソースという概念を知りませんでした・・・ご迷惑おかけしました。
>314 [3]→[-]→[2]→[+]と押された場合 変数sの値は [3]・・・s=0 [-]・・・s=0-3=-3 [2]・・・s=-3のまま [+]・・・s=-3+2=-1 になってま。
331 :
326 :05/02/22 21:06:52
たびたびすみません。 リソースにBMPファイルを追加することはできたのですが、 それを本体からどのように呼び出したらいいのかがわかりません・・・。 リソースに追加されたある画像ファイルの名称を"abc"とした場合、 どのような記述で呼び出せばいいのでしょうか? ネット上・本屋で調べてみたのですが、要領を得ません。おねがいします。
332 :
デフォルトの名無しさん :05/02/22 21:33:42
LoadResPicture
>>332 さん
ありがとうございます!
すると今回の場合でしたら、
LoadResPicture(abc, vbResBitmap)となり、vbResBitmapは決まり文句となるんですね。
助かりました。ありがとうございました。
334 :
332 :05/02/22 22:16:09
>LoadResPicture(abc, vbResBitmap)となり Yes >bResBitmapは決まり文句となるんですね No VbResBitmap -- 0 ビットマップ リソース VbResIcon -- 1 アイコン リソース VbResCursor -- 2 カーソル リソース
>>332 さん
ご丁寧にありがとうございます。感謝します。
厨な質問で申し訳ないです WindowsXp+VB5を使い画像ファイルの縦と横のサイズを取得したいのですが GetFileInformationByHandleで取得できる構造体BY_HANDLE_FILE_INFORMATIONの 構成には該当情報が無いようですね。画像の種類はVBが標準でサポートしている もののみ(BMP;JPG;GIF)で、調べた限り次のやり方でできそうですが 1.Susieプラグイン等を使う 2.Pictureオブジェクトに取り込みサイズを測る 今回は1.は用途からするとパス。2.はImageコントロールを使って高速性を 出したいのでちょっと ファイルプロパティに項目がありますから取得できると思うのですが 構造体やAPI関数を教えていただけますでしょうか
>>336 >2.はImageコントロールを使って高速性を出したいのでちょっと
言ってる意味がよく解らないんだけど、もしかして、
サイズ取得とImageコントロール用で2回読み込みとか考えてる?
>>337 考えてました・・・・実験した結果Visibleプロパティをfalseにして
読んで処理してからtrueにすることでそこそこ動きましたので
これで逝こうと思います
>>338 visible ?
もしかして、pictureってpictureboxのことかな。
どんなコードを書いているのか知らないけど、普通は次のようなコードを書くと思う。
'image1はImageコントロール
'hogeは読み込みたいファイル
dim a as Picture
set a=loadpicture(hoge)
debug.print a.height,a.width
set image1.picture=a
StdPictureのWidth/HeightはHiMetricなんじゃなかったっけ。
ScaleX/ScaleYを使えば変換できるでしょう。だから
>>339 がきっとスマート。
で、質問なんですけど
Dim lngArray1(256& * 256&) As Long, lngArray2(255&, 255&) As Long, i As Long
For i = 0 To 256& * 256&
lngArray1(i) = i
Next i
Call CopyMemory(lngArray2(0, 0), lngArray1(0), 65536)
Dim x As Long, y As Long
For y = 0 To 255
For x = 0 To 255
Debug.Print "(" & x & ", " & y & "):" & lngArray2(x, y)
Next
Next
私の環境ではなぜかx*y=15000あたりからずっとlngArray2(x, y)の値が0になってしまいます
悪いのはCopyMemory(MoveMemory)でしょうか。32bitDibを二次元配列でいじりたいんです。
あ、LONGだから4バイト掛けるのか。マジで樹海いって首吊ってくる。
>>341 気を付けて行ってらっしゃい。
門限までには帰ってくるんですよ。
>>336 ヘッダ読むだけで出来る。
JPGの位置は固定じゃないけど。
昔、英語のコードを検索したらすぐ見つかった。
exeを実行しているPCのオフィスのバージョンって取得できますか? OSは出来たのですがオフィスの方法が分かりません。 お願いします。
Application.Version
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colSoftware = objWMIService.ExecQuery _ ("Select * from Win32_Product where name like '%Office%'") For Each objSoftware in colSoftware msgbox objSoftware.Name & ":" & objSoftware.Version Next
うちの環境だと、 ("Select * from Win32_Product where name like '%Office%'") オートメーションエラーで中断されてしまいます。 ("Select * from Win32_Product") なら動くのですが、Office以外も全部出てきてしまいます。・・・
Windows XPで既にcomdlg32.ocx 6.0 sp3が存在している状況で VB 5.0にてコモンダイアログ5.0を例えばcomdlg32old.ocx等に 変更し登録して使用することができません 5.0と6.0が並んでいて選択は5.0をチェックし「適用」や「OK」 ボタン押しても実際に再度コンポーネント選択画面では 6.0が選ばれている状態で、実際のフォームにダイアログを 貼り付けようとしても「ライセンスが無い」と怒られます Windowd2000の頃は大丈夫だったような気がしてますがXpで 両者を共存させることってできますか?
353 :
デフォルトの名無しさん :05/02/24 14:49:31
ランダム・ファイルの保存について教えてください。 Open "FILENAME" For Random As #1 n = LOF(1) / LEN(XXX) + 1 →XXXは64バイト固定のデータ put #1, n, XXX Close #1 この様なソースを書いて何度も実行すると データが最後のレコードに書き込まれず、 ファイルが倍のスピードで大きくなってしまいます。 試しに上記ソースの2行目をなくしてnを固定で入れた場合 n=1 ファイルサイズ=64B n=2 ファイルサイズ=192B n=3 ファイルサイズ=320B という感じで64×nバイトにならず64×(n×2-1) となってしまいます。 VB6.0を使っているのですが、何か書き方が悪いのでしょうか? それともこういうもんなのでしょうか?
書き方が悪い
355 :
353 :05/02/24 16:31:34
どこが悪いのでしょう?
356 :
デフォルトの名無しさん :05/02/24 17:05:23
VB6でグリットコントロールはなくなったのでしょうか? コンポーネントが見つからないのですが・・・ 表にデータを表示するのって簡単に出来ないですか?
>>356 Microsoft DataGrid xxx
or
Microsoft FrxlGrid
358 :
デフォルトの名無しさん :05/02/24 18:09:35
>>339 ありがとうございます。うまくいきました・・・・・・・が
調子に乗って数十枚程度表示するとVB5がCPU100%使ってフリーズします
プログラム未完成なのでコンパイルするとどうなるか試していません
また再帰とかOpenArray等は使用していませんけどヒープを喰っちゃうん
でしょうかね
VB6使ってるんですが PDFファイルを表示させる方法おしえてくさい
PDFを指定してIEコンポーネントを開く
コンパイルしても一緒なのでいくつか変更して実行したら、テストに 使用したJpegファイルが「不正なピクチャ」だそうで・・・・・・・ Windowsビルトインビューアや他のグラフィックソフトでは問題なく 表示しますけどヘッダー情報かなにかがおかしいデータみたいです
>>362 似たような経験あるなあ。
これを回避するには、フリーのライブラリか何かで読み込むようにするしか無いんじゃないかな。
>>353 openステートメントでレコード長を指定していないからじゃないかな
>>363 結局SUSIEプラグインですね・・・・ありがたく使わせて頂くことにしますた
MoveFileはMoveFileExを使うのでしょうか? FileCopy & Killでもまあ良いんですけど無条件に上書きつうのが・・・ MoveFileExについてはVBでの呼び出しを解説したサイトがあまり 無いようですけど他の方法にはどんなのがありますか?
>>366 エスパーじゃないと君の文章の意味はわからないと思う。
MoveFileメソッドの実装までは知らんけど、コピーしてリネーム&削除が一般的でわなかろうか。 MoveFileEx自体簡単なAPIだし、それでもいいんじゃね?
>>367 読解力に欠ける人でも分かるように書き換えてみました
尚、レスをして頂けたら嬉しさと驚きで家人みんなに自慢しそうです
「VBでファイルを移動する場合、VBに用意されているStatementは
FileCopyだけで、コピー後にKillすることで移動が実現できますが
この場合Windowsのシェルでコピーや移動を行う場合とは異なり
無条件で移動先に同名ファイルが存在する場合に上書きしてしまいます。
これを避けたい場合、わたしの拙い技量で調べた限りAPIでMoveFileExを
呼び出す手法があるようですがGoogle等検索エンジンで調べてもVBでも
使用方法があまり見当たりません
宜しければこれについて詳しいサイトを教えて頂くか、こちらに書き込んで
頂けると幸甚に存じます。またそれ以外に役に立つ方法をご存知であれば
ご教示頂けますと幸せのあまり屁をこきそうです」
371 :
デフォルトの名無しさん :05/02/24 22:17:50
function conv_hex( param ) { var hex=""; for(var i=0; i<param.length; i++){ hex = hex + param.charCodeAt(i).toString(16); } return hex; } ↑ javascriptで文字列から無理矢理16進数に変換した文字列を vbsで10進数の文字列に戻したいんですがどう記述すればいいでしょうか?
10進数の文字列と言うのは・・・ "00 12 34 56 78 90 123 234 255" と言うことだな! ↓あとはよろしく。
>>366 >>370 の通り、NameでOKなはず。
> Name ステートメントはファイル名を変更して、必要に応じて他のフォルダにファイルを移動します。
375 :
371 :05/02/25 01:14:23
どこのスレに書き込めばいいの( ・◇・)?(・◇・ )
Integerの読み方教えてください イントエジャーでいいの? まさか、インテグラじゃないですよね?
インテジャー で いいんじゃー
インテジャー
インテジャー入ってる
インテジャーウソツカナイ
何インテジャー
384 :
デフォルトの名無しさん :05/02/25 02:53:39
VB6.0で、FORM1のpictureに画像を指定し、 その上に置くラベルやフレームの背景を透過させ、FORM1の画像を透かして表示させる、、、 というようなことは可能でしょうか?
インテジャージョーンズ ~最後の聖戦~
386 :
デフォルトの名無しさん :05/02/25 04:25:58
evb3.0でセーブしたランダムファイルをvb5.0で読み込むにはどうしたら いいのでしょうか? 単純にvb5でランダムアクセスしても無理みたいなんですけど・・・。
くだらない質問で申し訳ないですが、テキストボックスから受け取った文字をinteger型変数に代入して出力した場合、アスキーコードで出力されるんでしょうか?
389 :
デフォルトの名無しさん :05/02/25 08:35:25
申し訳ありませんでした。自分のPCにVB入っていなくて、すぐ試せなかったもので。次にVB使う時に試してみます。
391 :
デフォルトの名無しさん :05/02/25 09:33:44
VBでもVCでもいいのですが、UNIXサーバからwindowsにファイル転送を行う際に ファイル更新日付を変えないような方法ってありますか? CInternetSession系のAPI使うと落し込んだ日付に変わってしまいます。 FTPツール(FFFTP等)でローカルに取り込む再に日付が変わらないオプションが あるのでなんか方法があるんだと思います。どなたかご存知のかた教えてください。
>>391 日付を変えないという発想ではなく、
盗難したファイルを元の持ち主の日付で、ていぞう(なぜか・・)すれば?
ファイルのタイムスタンプを書き換えてしまえと。
393 :
デフォルトの名無しさん :05/02/25 09:57:43
>>392 とうなんファイルではありませんよ。ローカルと管理サーバ間でのやりとりを行うツールです
FFFTPの日付を変えないオプションはファイル更新日付をAPI等で改竄している仕様なのでしょうか?
FTPは基本的にファイルを分解して転送後、再編成すると聞くので
更新日付が変わるのは当然だと思うのですが、何か知的な方法はありませんか?
394 :
デフォルトの名無しさん :05/02/25 09:58:23
>>392 とうなんファイルではありません。ローカルと管理サーバ間でのやりとりを行うツールです
FFFTPの日付を変えないオプションはファイル更新日付をAPI等で改竄している仕様なのでしょうか?
FTPは基本的にファイルを分解して転送後、再編成すると聞くので
更新日付が変わるのは当然だと思うのですが、何か知的な方法がありましたら
伝授お願いします。
盗難、捏造は洒落です。
>>393 の通り、FTPではファイルはそのまま移動するんじゃなく
垂れ流しされた奴をこっちでファイル化ですからそのままでは日付は変わります。
APIでSetFileTimeあたりでどうですか?ってのが
>>392 です。
396 :
デフォルトの名無しさん :05/02/25 11:52:22
VB初心者なのですが、 If文でノットイコール(C言語では「!=」)ってどう書けばいいのでしょう?
398 :
デフォルトの名無しさん :05/02/25 12:18:27
>>395 ありがとうございます。
FileTime等で予め、UNIX側のファイル情報を取得しておいて
FTP後にSetFileTimeってところですね
一度つくってみます。助言感謝いたします。
399 :
デフォルトの名無しさん :05/02/25 13:02:35
400 :
デフォルトの名無しさん :05/02/25 13:51:01
>>384 のようなことはVBではできませんでしょうか?
401 :
デフォルトの名無しさん :05/02/25 14:12:21
コンボボックスを使用したのですが、 実行時、リスト内のデータを選択すると、 コンボボックスのTEXT内が紺色(選択状態?)のままで、 文字が表示されません。 (別の領域をクリックすると選択した文字がTEXTに表示されます) 対処法があれば教えてください。よろしくお願いします。
402 :
デフォルトの名無しさん :05/02/25 14:13:31
コンボボックスを使用したのですが、 実行時、リスト内のデータを選択すると、 コンボボックスのTEXT内が紺色(選択状態?)のままで、 文字が表示されません。 (別の領域をクリックすると選択した文字がTEXTに表示されます) 対処法があれば教えてください。よろしくお願いします。
>>400 質問の意味を取り違えてるかも知れないけど、
ラベルには透過可能なBackStyleプロパティがある。
フレームにはないけど。
基本的にはPictureBoxとか使って自前のコードで
背景の透過処理をすれば、透過できるはず。
>>384 ラベルの透過はフォームに対してのみ有効。
他のコントロールに重ねたらダメ。
405 :
おしえて(VB+クリレポ) :05/02/25 18:32:54
VBからクリスタルレポートの印字を行っているのですが、 端末によってプリンタがことなるとセットアップのたびに クリスタルレポートのプリンタ設定をいじらないといけなくて困ってます。 VB側から印字の直前にプリンタ設定を変更できないものでしょうか? VBからのプリンタ設定&用紙指定方法を教えてください。 (環境:Win2K、VB6.0sp5、Seagate Crystal Reports 6.0)
406 :
COMってるんです :05/02/25 19:14:55
COM+勉強し始めて3日目です。 言ってることがおかしいかも知れませんが どちらもサーバー、どちらもクライアントな状態にしたいのです。 具体的には クライアントからは検索するので普通にDBを叩くCOMを作成しサーバーに登録します。 それとは別にサーバー側からも不定期な情報イベントが起き、 クライアントの画面(ポップアップではなくメインの画面に)に情報を表示します。 代替案としては ・スレッド立てて、イベント系には別途TCPソケットを用意してサーバーから叩く ・定期的にイベントがあるかサーバーにCOMで聞きに行く は考えているんですが、 理想としてはサーバー側からCOMキックされてメイン画面が更新される形にしたいのですが 何らかの実装方法はありますでしょうか。 シングルアパートメントだから無理とかそういうのがあれば、VBにもこだわりませんので 出来る出来ないのポインタをいただけると助かります。
407 :
デフォルトの名無しさん :05/02/25 19:18:21
VB6sp5、XpPro です。
ユーザーコントロールを作成したのですが(TextBoxがベース)
作成したコントロールにフォーカスがある状態でカーソルキー
を押してもForm_keyDownイベントが発生しません。Enterキー、
テンキー他、一部のキーでは発生します。
ちなみにformのkeypreviewプロパティはTrueです。
もしかしてVBのバグでしょうか?解決方法がわかる方いましたら
教えてください。
>>405 クリレではおそらく無理です。
Declare Function SetDefaultPrinter Lib "winspool.drv" _
Alias "SetDefaultPrinterA" _
(ByVal pszPrinter As String) As Long
ドライバ複数作成して、↑を使って通常使うプリンタを変更すればよいのでは?
408 :
おしえて(VB+クリレポ) :05/02/25 19:29:59
>>407 さん
お返事ありがとう(;o;
やっぱり無理なんでしょうか、_| ̄|○
端末ごとのクリレポ設定作業をどうにかして簡略化したかったんですが。。。
残念!!
>>403 ,404
ありがとうございます。ラベルはできてもフレーム類はできないんですね・・・。
Pictureboxによる背景の透過処理、で少し調べてやってみます。ありがとうございました。
>405 OpenPrinter,SetPrinter,SetPrinterData,SetPrinterDataEx
>>402 コンボボックスはEXCELのがいいよ!
VB6.0、XPproの環境です。 DataGridを使ってレコードの内容を表示するプログラムを勉強しています。 ユーザの編集でなく、プログラム側からDataGridに空の行を追加したいのですが、 Column(列)、Split(分割ペイン)のAddは出来てもRow(行)の追加だけが見つかりません。 もしかしたら、自分がColumnsやrowの意味を取り違えているのかもしれないと 不安になってきたので、一度詳しい方に聞いてみようと思いまして。 どなたか、お答え頂けると凄く助かります。 具体的には、レコードを読んでDataGridに表示 → DataGrid上に新たな行を作成 → 別のレコードを読んで、新たな行に表示。 というような、1つのグリッドに追加表示をしたいと考えているのですが……。
413 :
デフォルトの名無しさん :05/02/26 15:46:42
2桁の正数字の一桁目と二桁目の値を取得する関数ってありますか?
>>413 10で割れば10の位の値
10で割った余りが1の位の値
(元の数 mod 100 - 元の数 mod 10) \ 10
厨な質問ですいません。 配列を関数に渡したい場合は、どのようにするのでしょう? 例えば、 Private Sub Command1_Click() Dim A(1 To 3) As Integer A(0) = 1 A(1) = 2 A(2) = 3 Text1.Text = CALC_A(A(0)) End Sub この場合、関数側には、 function CALC_A(******) as Integer ****** ← この部分には、どのように書くのでしょうか? それとも別の書き方があるのでしょうか?
>>416 function CALC_A( a() as integer ) as Integer
Text1.Text = CALC_A(A(0))
ありがとうございました CALC_A(A(0)) をCALC_A(A())にしたら受け取れました。
A(1 To 3)には誰も突っ込まないのか?
>>420 間違いです。
書き込んだ後に気がついたのですが・・(´・ω・‘)
テキスト型で"0001"という値を持っている変数を+1して、 "0002"には出来ないものでしょうか? +1ではintに変換されてしまってただの"2"になってしまいます……。
>>422 学校の宿題は友達に聞きましょう。
友達いないなら諦めて入門書買ってまじめに勉強しましょう。
そんなに簡単なことなんですね…… 考えなしに質問してしまってすいませんでした。 色々調べてみます。
前から気になっていたんですけど、・・・ WORDなんかでは、文字の拡大・縮小が出来ますけど あれって、どうやってるんでしょうかねえ・・・
( ゚д゚)・・・
(*゚д゚)・・・♥・・・(・∀・*)
何気に使ってるけど実は誰も理解してない
理解も糞も無いだろ。
>>425 pictureboxに文字を出力してピクセル単位にpoint関数でドットの有無を読んで
拡大率を掛けてpsetしているんよ、知らなかったの?
ググって同じ質問を見つけましたが回答が無かったので教えてください vbHimetricをpixelに変換したいのですが対象がScaleX,ScaleYメソッドが使えない オブジェクトです。(Picture Object変数です) 何か方法はありますか?
考えてみれば定数みたいなものだからFormのScaleX,Yで変換しても同じことでしたね お目汚し失礼しました
『何でFormやPictureBoxにはあるScaleXがPictureにはないんだ。だからVBは…』 こう思ったらVB厨房の仲間入りだよ。 そりゃ単に座標変換の意味がわかってないだけ。 ていうか、そもそも印刷関係のアプリ作ってるのでもなければ あえてvbHimetricみたいな物理量の座標系を選ぶ理由は何もないはずだけど。
VB使ってる奴はみんな厨房だからどうでもいい
厨房だけぢゃなく熟年文科系一筋日曜プログラマーも混ぜてくださいね
>>436 VBなら数週間でできると思うよ
VBは難易度低すぎるから君もやればできるよ
Option Explicitなんか切っちゃってがんがん書いてね
>>436 毎日2時間で数ヶ月ってとこじゃないかな?
(モデル年齢35歳、文系の場合)
440 :
デフォルトの名無しさん :05/02/27 18:37:42
任意のホームページの文字列をVBから取得するにはどんな手段がありますか? ああ、無知すぎて何から探していいのかすらわからん。orz どなたかヒントだけでもお恵みください。 A:任意のHP更新察知 ↓ B:希望範囲の文字列抜き出し ↓ C:ケータイにメールとして転送 BとCはなんとかなったけど、本末転倒もいいところなカンジっす。
VB厨的には、 WebBrowserコントロールを使って WebBrowser1.Document.body.innerText かな?
FileOperationを使えばファイルを簡単にゴミ箱に移動できますが 移動したファイルを元に戻すのはどうしたら良いでしょうか?
一応移動ログを取ってますのでVB上で移動元パス/ファイル名はわかっています 他のフォルダーに移動させたファイルは初めからUndoできるようにしています。 ゴミ箱への移動だけを手動操作にしても良いのですけど折角だからこれも元に 戻せるようにデザインしたいのですが…
444 :
デフォルトの名無しさん :05/02/27 20:38:44
一つのEXEにフォームが幾つかあって、そのフォームが 表示されれているかどうか、確かめるため、 If Form2.Visible = True Then とすると、LoadされていないFormまでLoadされてしまいます LoadしていないフォームはLoadしないでVisibleを 確かめる良い方法はありませんか。
>>441 サンクス助かった。
よし、朝日が昇るまでに完成さしてみる罠
ニートっていいね。
プ 僕厨房ですよおじさん
>>444 For Each mForm In Forms
If TypeOf mForm Is (フォームのオブジェクト名) Then
(何らかの処理)
End If
Next mForm
450 :
デフォルトの名無しさん :05/02/28 00:35:21
VB6.0+SP6+WinXP(Pro) 現在EnterPriseArchitect(以下EA)のアドインをVBで作成しています。 EAのプロジェクトブラウザに表示されたパッケージをクリックして そのパッケージ情報を取得したいのですが、何かよい方法はありますでしょうか? 関連するサイト等が見つからないので苦労しています。 何かご存知の方いらっしゃいましたらご教授お願いします。
簡単なHTTP通信って何故かUserControlのメソッドで実装されてたような
もうVBで仕事したくないのに VBの仕事がきます。 どうすればよいですか?
仕事があるだけマシってもんよ そうだろう?兄弟
もういやだ! もういやだ! もういやだ!
456 :
444 :05/02/28 07:38:49
>>449 なるほどそんな手が有るんですね。
仕方なくフラグでやっていたのですが、コードがすっきりしました。
有難うございました。
457 :
デフォルトの名無しさん :05/02/28 07:41:22
>>452 殆どCのDLLで書いてVBから呼び出せ。
そうすりゃ立派なVBのプログラムだろ?兄弟
ヘッダーに問題があるJpegなどをLoadPictureで読もうとするとVBで 作ったアプリがCPUを100%使用しフリーズすることがあります。 通常これを避けるためにSUSIE PLUG-INを使用する方法が一般的ですが そのような破損ファイルでもWindows Xp標準ビューアで使用されている shimgvw.dllなら問題なく表示できる場合がありますし拡張子が間違って いても大丈夫ですよね。 VBでの活用法はありますか? MSのKB等で参考になるのとかご存知なら 教えてくだされ
459 :
デフォルトの名無しさん :05/02/28 09:18:18
すみません。もう一回投下します。。 コンボボックスを使用したのですが、 実行時、リスト内のデータを選択すると、 コンボボックスのTEXT内が紺色(選択状態?)のままで、 文字が表示されません。 (別の領域をクリックすると選択した文字がTEXTに表示されます) 対処法があれば教えてください。よろしくお願いします。
GDI+使います
>>459 選択したイベントで、INDEXをTEXTに貼れば!?
462 :
デフォルトの名無しさん :05/02/28 12:40:20
すみません。まだ解決できていないのでもう一度質問します。 VB6sp5、XpPro です。 ユーザーコントロールを作成したのですが(TextBoxがベース) 作成したコントロールにフォーカスがある状態でカーソルキー を押してもForm_keyDownイベントが発生しません。Enterキー、 テンキー他、一部のキーでは発生します。 ちなみにformのkeypreviewプロパティはTrueです。 ユーザーコントロール作成したことある方いませんでしょうか? 対処法あればお願いします。
463 :
デフォルトの名無しさん :05/02/28 15:36:45
464 :
VB6.0です。 :05/02/28 16:07:32
質問があるのですが、text1.textに入力するある文字列「あああ」と「ああい」があって if文を使用しもし文字列に「い」が含まれていたらという判定をしたいんですが どうすればいいのでしょうか?
465 :
デフォルトの名無しさん :05/02/28 16:09:42
グリッド(MSFlexGrid)で 特定のセルのみ文字の太さや色は変えられませんか? また、MSFlexGrid.FixedAlignment(X) = 2 で一番上の行の文字が中央表示しませんがどうすれば良いのでしょう? 教えてください。
466 :
462 :05/02/28 16:47:32
>>463 すみません。ActiveXコントロールのことです。
自分が作成しているのはTextBoxに機能を付け加えたものです。
自分以外の方が作成された同じようなコントロールが配布されて
いましたので使ってみたのですが、やはり同じ現象でした。
ActiveXに追加した機能自体には問題ないのですが、本来TextBox上
にフォーカスがある状態でなんらかのキーを押すとフォーム側のKeyDown
などのイベントが発生するのですが↑↓←→キーを押したときにイベント
が発生しないという状態です。
>>464 InStr関数を使うとよいですよ。
>>463 ユーザー自作のコントロール
詳しくはヘルプ参照
>>466 ユーザーコントロール以外にもTreeViewやListViewでも同じ症状が出ますね。
ユーザーコントロールのUserControl_KeyDownは来るみたいだから、
こっちで処理してはどうでしょうか。
もしくはサブクラス化するか。
468 :
VB6.0です。 :05/02/28 17:30:35
もういやだ! もういやだ! もういやだ!
フォーム上に、何種類かのコントロールを置く場合、 一括して管理するには、どうすれば良いですか? コンテナでしょうか?
>>473 ユーザーコントロール化かな。
管理というのがデザインの話なら、pictureboxに配置。
ピクチャーボックスはフォーカス取っちゃうから、特に必要なくても ユーザーコントロールがええと思う。
Frameでええんちゃう?
「一括して管理するには」これで話が「通じる」と思ってる奴も 「通じた」と思って答える奴もオジサンにはエスパーにしか思えない。。。 いや、エスパーってのは嫌味だから真に受けないように。
>>465 > 特定のセルのみ文字の太さや色
RowとColでセルを指定してから、CellForeColorやCellFontBoldで設定可。
> FixedAlignment
ColAlignmentFixed?
480 :
デフォルトの名無しさん :05/03/01 13:10:05
ファイルが存在するかチェックする関数はないでしょうか?
482 :
465 :05/03/01 13:26:23
>>479 ありがとうございます。
フォントの問題は解決しました。
あとはセルの文字列を中央表示にしたいのですが、
ColAlignmentFixedAlignmentやCellAlignmentを「2」にしても
中央に表示されません。
ColAlignmentFixedだとコンパイルエラーになってしまいます。
>>482 CellAlignmentは「2」じゃなくて3か4か5じゃない?
>>480 filesystemobjectのFileExists。
>>481 の言うdir関数でもいいと思うけどね。
485 :
デフォルトの名無しさん :05/03/01 15:46:06
FileSystemObjectを使って下のような処理をしています。 拡張子が TXT 以外のものが多数あり、時間がかかっています。 特定の拡張子のFilesコレクションを取得する方法はありますか? Dim fso As New FileSystemObject, fl As File For Each fl In fso.GetFolder(ネットワーク上の共有フォルダ).Files If UCase$(fl.Name) Like "*.TXT" Then '処理 End If Next fl
486 :
デフォルトの名無しさん :05/03/01 15:53:18
Now関数で西暦だけを取り出したいんですけどどうしたらいいですか? Nowじゃなく西暦だけを取得できる関数ってありますか?
487 :
486 :05/03/01 15:56:48
ヘルプみたらすぐでてきたね・・・。すまそ。
>>485 FileSystemObjectは見通しの良いコードが書ける反面、スピードは遅いので気をつける。
Likeを使った比較も、If UCase$(Right$(fl.Name,4))=".TXT" Thenという風にすればマシにはなるかも。
>>486 Year(Date)とかYear(Now)。ヘルプ参照。
>>485 Dir("フォルダのパス\*.txt")でループじゃ駄目なん?
>>485 それ、ネットワーク共有自体がネックになってない?
>>488 489 490
ありがと。
やっぱりFileSystemObjectじゃできないんですね。
現在は Dir でやってます。
折角、ファイル系処理はFileSystemObjectで統一したのに・・・
492 :
486 :05/03/01 18:31:10
>>488 ありがとう。
日付比較について一つ質問なんですけど例えば、変数Aに今日の日付けを格納しておきテキスト等に入力した日付けを変数Bに格納し
入力した日付けが変数Aより前の場合(今日なら1/1~2/28)というような比較をしたいのですが
どうすればいいでしょうか?
>入力した日付けが変数Aより前の場合(今日なら1/1~2/28)というような比較 何度読んでも何がしたいのか分からん
12/31も変数Aよりは前だな
>>492 cdateで日付型にすれば、 比較演算子(<,>,=) で比較できます。
496 :
デフォルトの名無しさん :05/03/02 00:52:58
VB6.0です。 画面遷移について教えてください。 以下のような遷移を行うとき フォームA → フォームB フォームA側で以下のように記述するだけでよいのでしょうか? Me.hide フォームB.show 他に何か考慮する点はあるでしょうか? フォームAは姿を隠しただけで、リソースを食っている状態ではないでしょうか? 素人の質問で申し訳ありません。 ご存知の方がおられましたらご教授ください。 よろしくお願いします。
497 :
デフォルトの名無しさん :05/03/02 06:55:38
>>496 フォームB.show
Unload Me
>>496 Form_UnLoadで
set フォームA = Nothing
したら?
>>498 hideじゃunloadイベントは発生しないよ。
それに、それだと new フォームA したときにハマルよ。
500
501 :
デフォルトの名無しさん :05/03/02 18:52:56
>>496 あとで、フォームAが必要なかったら、Unload。
必要だったら、Hideだと思われ。
502 :
デフォルトの名無しさん :05/03/02 19:59:14
Ruby!!!!!!!!1111
503 :
デフォルトの名無しさん :05/03/02 21:22:43
Now関数で取り出した月日(yyyy/mm/dd)を変数iに格納し、コマンドボタンを押すと iに格納されてる西暦の部分(yyyy)を「2006」に変えたいんですがどのようにしたらできますか?
504 :
デフォルトの名無しさん :05/03/02 21:23:34
書き忘れです。mm/ddはそのままでyyyyだけ変更したいんです。
>> 503 年を+1したいなら i = DateAdd("yyyy", 1, i) 固定で2006にしたいなら i = DateSerial(2006, Month(i), Day(i)) でどうだ。 変数iはDate型で、時刻部はしらんぞ。
506 :
デフォルトの名無しさん :05/03/02 22:32:51
>>503 DateAddを使うかYearを使うとか文字列ならMidとか数値なら2万を
足すとか・・・。
やり方は色々あるけどヘルプで探すことで成長するから面倒くさくても
一度は調べなさい。
関数やAPIに頼らず自力でやることで後々役に立つこともあるからね。
たとえばRaund関数は0.5を正しく四捨五入してくれないとかもあるから
自力でやるのも一つの手だよ。(もうなおってるかな?)
507 :
503 :05/03/02 22:54:49
>>505 >>506 ありがとうございます。おかげさまでなんとかなりました。
これからは極力MSNDやVB関係のサイト等を見てなんとかします。
508 :
469 :05/03/03 00:57:12
多くのレスありがとうございました。 非常に参考になりました。
509 :
デフォルトの名無しさん :05/03/03 17:39:51
『'』を複数行に同時に設定するショートカットキー を教えてください。 よろしくおねがいいたします。
>>509 標準では設定されてなかったように記憶しています。
511 :
デフォルトの名無しさん :05/03/03 20:05:26
long NullElementDelete(POINT *p1, POINT *p2, int num) { int i; int count=0,count2=0,size=0; POINT *buff; size = 2 * HORIZONTAL + 2 * VERTICAL; →buff = calloc(num,sizeof(POINT)); 矢印のところで error C2440: '=' : 'void *' から 'POINT *' に変換することはできません。(新しい動作 ; ヘルプを参照) 'void*' から非 'void' 型への変換には明示的なキャストが必要です。 というエラーが出てしまいます どうやらC++だとエラーが出るようなのですが どのようにすればエラーをなくせるかが分かりません。 よろしくお願いします。
おながいします。 Ary(10,10) 上記の様な二次元配列があったときに、一次元目がnの一次元配列( Ary(n,*) ) を取り出すにはどうすれば良いかご指南いただきたい。
513 :
デフォルトの名無しさん :05/03/03 21:06:51
フォーム上で、Ctrl+H(隠しコマンド)が押されたら、フォームを表示したいのですが、 メニューバーのメニューを表示しないようにしてもうまくいきません。。。 よろしくお願いします。 m(_ _)m
Ctrl+Hは置換に割り当てられてますが。
>>513 こういうこと?
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 72 And Shift = 2 Then Form2.Show
End Sub
516 :
513 :05/03/03 21:54:17
>>515 できました!
ありがとうございました。 m(_ _)m
>>513 ちなみに 2はVbCtrlMask、72はvbKeyH と書くとわかりやすい
518 :
513 :05/03/03 22:45:31
>>517 本当にありがとうございます。 m(_ _)m
519 :
デフォルトの名無しさん :05/03/03 22:58:25
おねがいしまつ。例えば、 Public Const Err001 = "接続エラー" としていて、ある関数から "Err001"という値を受け取ったとします。 この"Err001"を、上で定義したErr001の持つ"接続エラー"として、例えばMsgBoxなどで 表す方法ってありますか? つまり文字列を変数名として扱う方法ってことになるんでしょうが…
520 :
デフォルトの名無しさん :05/03/03 23:00:12
Ruby !!!!!!!!!!!!!!!11111111111
ユーザーコントロールに渡すプロパティには構造体や配列は渡せないんですか??????
>>522 構造体は不可、配列は可。構造体の配列は不可。
構造体の代わりにClassを使うのが吉。
COMの基本ルールを無視するなら、構造体をValPtrでアドレス渡しって手はあるな。
524 :
デフォルトの名無しさん :05/03/04 10:47:21
VB6.0でWebBrowserコントロールを使ってるんですけど、 コマンドボタンのClickイベントからUnload Meすると、 かなりの確率でフリーズするんです(システムメニュー から閉じればたぶんOK)。 なんかいい解決方法ないですか?
VB5でメニューの高さをスマートに知るにはどうしたら良いのでしょうか? 現在はメニューの各Visible プロパティがTrueとFalseで生じるFormの ScaleHeightの差を取ってますけどいかにもスマートさに欠けるので…
ありがとうございます
VB で ビットマスク処理はあるんですか?
念のために書きますが「スマート」じゃない現在の方法だと 実際のフォームの高さが変更されるまで若干のタイムラグがあり 変更直後はまだScaleHeightが変わってない場合があって、それを 避けようとするとますますスマートじゃないコーディングに なっちゃうんですよ
>>511 'void*' から非 'void' 型への変換には明示的なキャストが必要です。
534 :
デフォルトの名無しさん :05/03/04 20:11:54
猛烈に厨な質問ですが… DeclareステートメントのLibrary Nameは文字定数しか受け付けないわけですが DLLをパスの通ってないディレクトリに置いてプログラム中で場所を指定したい 場合はどうすれば良いですか? 無理っすかね
537 :
デフォルトの名無しさん :05/03/05 11:57:46
おながいします…。 要素が宣言されていない動的配列の、要素の有り無しを判断するには どのようにすれば良いでしょうか。 String型のStrAry()が動的配列で尚且つ要素が宣言されてないと UBound(StrAry) ->インデックスが有効範囲にありません エラー ↑エラー発生しちゃってトラップされちゃうと困る TypeName(StrAry) -> String() ↑Nothingになるかと思ったんだけども 要素が有っても無くても String() だから判断できない。 頼む…。家に帰れないんです。
>>539 お馬鹿な発想かもしれないけどGlobal変数使ったら?
ReDim Preserve xx(x)
Empty=True
if x<>0 then Empty=False
>539 1)エラーが発生することを利用して戻り値を設定する関数を作る 2)配列(0)はとにかくダミーとして常に何か突っ込んでおく(あり得ない文字列とか)
>>540 動的配列の要素数と、「要素の有無」フラグをグローバルで持つって事ですか?
>>542 そうね、ReDimで再宣言してなけりゃ要素は0のはずだしそうじゃなけりゃ
UBoundでわかるっしょ
つうか再宣言の値そのものを保持しとくほうが簡単確実だな
レス遅くなりました。
>>540 と
>>541 でご指南頂いた方法をそれぞれ試していました。
結果両方ともうまく動きました。
どちらの方法を使うかは、またこれからそれぞれの方法のメリット・デメリットを考えながら
決めていきます。
本当に有難う御座いました。
(必要ないと思いますが下記に
>>541 の 1)の関数を載せておきます)
Private Function chkArrayLen(sAry() As String) As Boolean
On Error GoTo Err_Process
Dim Tmp As Integer
chkArrayLen = False
Tmp = UBound(sAry)
chkArrayLen = True
Err_Process:
End Function
なんかVB5だとUBoundが-1返すような覚えがあるんだけど記憶違いかな。 それはいいとして、俺ならクラスにするか、さもなくば次のように判定するかな。 Dim SizeOfArray As Integer On Error Resume Next SizeOfArray = UBound(MyStrArray) + 1 On Error GoTo 0
>>545 SafeArrayGetDim などのAPIを使えば、
実行時エラーを使わなくてもチェックできる。
>>546 ReDim MyStrArray(-2 To -1)
とかやっていじめてやるテストw
んんじゃあこう汁 SizeOfArray = UBound(MyStrArray) - LBound(MyStrArray) + 1
先日からVB5で画像を扱うプログラムを作っていて個人使用という目的からすると 一段落したんですが汎用性を持たせようとすると頭が痛くなってきてます 問題は"LoafPicture"が破損ヘッダーファイルがあると使い物にならないことで アプリが落ちちゃう、そこでSUSIE PLUG-INを使って問題なく動くものが できました、できましたが例えばPNG用プラグインでエラーメッセージを吐く 版と軽量版なんてのを見ていると特定のプラグインの特定のバージョンじゃないと 意図通りに動かないプログラムなんてど~考えても嫌だし… GDI+をVB5で使うのはかなり無謀みたいで日曜プログラマーがこの目的でVB.NETを 買うのもちょっともったいないつうか嫁に殺されそうだし 何か他にうまい手はありますか?
>>551 文科系の頭でポインターが使えないんですよ
>>550 VB.NETのコンパイラ自体はタダで手に入るよ。
それにフリーの統合開発環境を組み合わせる。
ところで今はVB.NETに対応した統合開発環境って
どれくらいのレベルで使えるの?GUIの作成も含めて。
すれ違いだけど。
>>552 安心しろ。C#はポインタを使わないでできる。
っていうかVBの参照もポインタの一種だ。恐れることは無い。
ていうか
>>550 の文章読んでよく質問内容が理解できるよな。
俺には結局
>>550 は何を聞きたいのかサッパリわからないが。。
VB遣いにはエスパーが多いのか?
それとも書いてあることを書いてあるまま正確に読む訓練のできてない
思い込みの激しい「夢見る」文系君が多いのかな。
>>556 自分の読解力の無さを棚にあげて言いたい放題だな
書いてないことを読み取る能力は読解力とは言いません。 あえていうなら「妄想力」でしょうか。
>>556 よそ行ってね。君のようなのが荒れる原因だから。
560 :
デフォルトの名無しさん :05/03/05 21:41:51
msgboxを表示するときに、ピンとかいう音がうるさく感じるんですが なくす方法はありませんでしょうか? よろしくお願いします。m(_ _)m
>>560 [スタート]-[設定]-[コントロールパネル]-[サウンドとマルチメディア]
562 :
デフォルトの名無しさん :05/03/05 21:59:48
つまらないことをぐずぐず書く暇があったら、 わからないところを、聞けば良いだろう、ボケ。
>560 自分でMsgBox「の様な物」を作る。
564 :
469 :05/03/06 16:39:43
質問させてください。 VB6.0を用いています。 フォーム上での矢印キーによるフォーカス移動制御を行いたいと思います。 フォーム上に存在するボタン間の制御を行うために、 Command_KeyPress内に矢印キー押下時のフォーカス移動に関する記述を行ったのですが、どうやら、矢印キーを押下してもCommand_KeyPress内に制御は移っていないようです。 どこにどのように記述すればこのような制御は可能でしょうか? 私の場合、以下のような記述を行うことを考えています。 例:ボタンA上で右矢印キーが押され、ボタンBにフォーカスを移す場合 IF KeyCode=vbKeyRight then commandB.setFocus END IF このような記述はスマートでしょうか? ボタンが多いフォーム上ではやたらコードの量が増えて効率が悪いような気がします。 何かよい方法は存在するのでしょうか? 初歩的な質問で申し訳ありません、ご存知の方がおられましたらよろしくお願いいたします。
>>564 フォームのKeyPreviewプロパティをTrueに。
それとKeyPressより、KeyDownイベントのほうがいい。
さらにTabOrderも工夫する。
566 :
564 :05/03/06 18:21:37
>>565 レスありがとうございます。
さっそく行ってみたのですが、矢印キーのイベントを拾うことができませんでした。
自分自身でもすこし調べていたのですが、
コマンド上にフォーカスがある場合、
矢印キーの押下は取得できないとありました。
何か良い方法はないでしょうか。。。
>>566 マップを作って1つのプロシージャでまとめて処理させれば
汎用的だし、コード的にもすっきりする。
キーボードフック使えば? グローバルフックではないのでDLLはいらず、 VBでもフックできる。
569 :
デフォルトの名無しさん :05/03/06 23:37:12
>>316 >>330 ありが㌧
VB6.0でsin関数を使わずに、テーラー展開またはマクローリン展開でsinを求める方法ってどなたか分かります?
早速ですが、今更と思われそうですがエクセル95のVBAで FSO(File System Object)は、使えますか? 自宅には当然95なんてシロモノは無いので、確認がとれません 会社でぶっつけ本番でもいいのすが不安で・・
571ですがVBAのスレがあったのでそっちへ行きます。 失礼こきました
False ← なんて読んでますか、或いはカタカナ表記だとどうでしょう? 趣味プログラマーって周りに同様の趣味の人がいない場合が多いと思うのですが こんな単純なことも中々聞けませんよね IT用語の日本語的方言というのは業界にいないと分かりづらくてPingをピングって 言うのなんか想像の埒外でしたから・・・・・普通ピンって読んじゃいますよね
フォールス
>>575 ありがとうございます、普通に読むんですね
singだってシングだろ・・・。singsongをシンソンなんて普通の日本人は読まないよ。
じゃあhongkongはホングコングだな。
pingpongもピングポングだ。
580 :
デフォルトの名無しさん :05/03/07 08:53:54
ていうかpingが「ピング」より「ピン」に近いって感覚が理解できん。 後に音が続かない時の(つまり、ping本来の)発音は明らかに「ピング」に近いぞ。
>>580 んなもん使わずに直接エクセルに出力したほうが早いだろ。
>>581 結構大勢の人がPingを「ング」にアクセントを置いてしゃべってますよ・・・
Pingつうと「レッドオクトーバー」でラミレス艦長が"One ping only."って
言うのが印象に、って言うのは置いといて
VB5でSHBrowseForFolderを使いフォルダ選択ダイアログを出す場合 1.エディットコントロールを持つ、新しいユーザーインターフェースを使用し たい場合はOleInitialize関数またはCoInitialize関数を呼び出してCOMを初期化 する必要があるみたいですがVBでのコーディング例がどこかのサイトにありますか? 2.旧UIを使う場合でもルートフォルダーじゃなくて指定パスを選択状態にして ダイアログを呼び出せると思うのですがBROWSEINFO構造体を眺めていても指定パスが渡せる ようなパラメータが見当たりません。別の関数を使うのでしょうか?
更に「初期フォルダ」でググッたら2.に関して山ほどHitしますた 検索語の工夫が足りなかったようで失礼致しました
>>578-579 まったくこれだから脊髄反射は困るなぁw
「ング」なんて普通に使われているんだから、
想像の埒外なんてありえないって言っただけだろ。
あーやだやだ。
更に更に検索結果を見ていたら1.もVBの場合はシカト可能っぽいですね
>>584 は解決つうことで・・・・・・お後が宜しいようで
588 :
デフォルトの名無しさん :05/03/07 16:28:21
さ~て来週は カツオ、豪快に釣られる ワカメ、オナニー見つかる 船、ローレライ発動す の3本です。お楽しみに~ んっが、ング
589 :
デフォルトの名無しさん :05/03/07 22:01:29
指定した文字列の間を抜き出したいんですが、 上手く抜き出せません i = InStr(strData, "一覧表表示") n = InStr(i + 5, strData, "一覧表表示") a = Mid(strData, i - 5, n + 8) Text1.Text = a 始めの位置(i)から最後までが表示されてしまいます。
>>590 どういう文字列からどういう条件で取り出したいのかがよくわからん。
midの第3引数は文字長。他にもありそうだが何がしたいのかわからないので 気がついたとこだけ。
>>590 n+8はどこから出てきたのかな?
これでどう?
a = Mid(strData, i - 5, n -i)
こういう手もあるけど。
"一覧表表示" & Split(strData, "一覧表表示")(1)
SHBrowseForFolderで初期フォルダを選択した状態にできました・・・・が 日本語を含むパスだとツリーは開かれるものの該当フォルダが選択されていま せん。フォルダ名自体が英語でも途中のパスに日本語が含まれると駄目です。 参考にしたのがカナダのサイトだったので2バイト対応になってないみたいです Const BFFM_SETSTATUSTEXTW As Long = (WM_USER + 104) この定数をどこかのパラメータに指定してやれば良さそうにも思えますけど どの関数のパラメータにセットすれば良いかご存知ですか?
日本語サイトの例をパクッて解決しますた
596 :
デフォルトの名無しさん :05/03/08 14:01:36
マウスカーソルを自前で制御したいのですが、うまい表示の仕方ないでしょうか? クライアントからLAN経由で受け取ったマウス移動量を元に、サーバ側にマウスカーソルを 表示させたいのです。(この時にサーバ側のマウスは、サーバ側でつかっています) imageとかpictureをつかう方法を試してみたのですが、うまく透過してくれないので マウスカーソルとして使えませんでした。いい知恵があればご教示ください。
VBって.exe の実行ファイル作れるんですか? Visual Basic 6.0 で
>>596 Region使え。
>この時にサーバ側のマウスは、サーバ側でつかっています
入力がダブる時はネットワーク側を遅延させりゃ良いだろうけど
どうやってネットワーク側マウスのドラッグを実装するんだ?
599 :
596 :05/03/08 14:35:31
>>598 ありがとうございます。Regionを調べてみます。
ドラッグの件ですが、カーソルでどこを指しているかだけを共有したかったので、
そこまで必要ないのです。
>>597 できる。というか、それが一番主な使い方じゃないのか。
>>600 ビルドが吐き出す*.exeじゃなくて、ビルドみたいにEXEファイルを作ることはできるか?って意味じゃないのか?
俺は知らんが。
603 :
デフォルトの名無しさん :05/03/08 16:03:42
文字列:s(0~9、9桁) モジュラス:m ウェイト:w のチェックデジットを計算する関数を教えてけろ
>603 お前の態度が気に入らない。
VCでコールバック関数を使ってるプロジェクトを デバッグしようとするとデバッグポイントが無効になります。 こういう場合どうしたらデバッグモードでステップ実行できるでしょうか?
マウスカーソルを自作の物に変えるのはどうやればいいですか? VCだとリソースから変更できるみたいなのですが。
あれから色々調べましたがUndeleteを実現するAPIがわかりません Undelete VB API Win32あたりを色々組み合わせてぐぐってもうまく Hitしないんですけどエクスプローラーには実装されているので 何かあるんでしょうね。皆さんはAPI名が分からない場合どうやって 探しているんですか?
>>608 そのようなAPIは存在しないと思う。
不便だけど、IContextMenuのInvokeCommandを使うのが妥当かな。
VCならともかくVBでやるのはたぶん面倒だから、
オライリーのVisual Basic Shell Programming辺りを参考にしてみては。
612 :
デフォルトの名無しさん :05/03/09 03:08:50
SQLのデータ型で varcharてのはどう読んだらよいのやら? 意味としてはヴァリアント・キャラクタと思うが 略してバリキャラ?
VB5で引数がファイルなのかフォルダーなのか簡単に知る方法はありますか? 最初 =Dir(引数, vbDirectory)で良いと思ったんですが、vbNormalを指定しても 結果は同じで、引数がフルパスの場合はファイルでもフォルダーでも同じく非Null になっちゃうんですよね さらにルートフォルダーを渡すと悲惨な結果を返しちゃいます、まあこの場合は 戻り値が非Nullで引数が3文字であればドライブルートと判断できそうですけど
それとEXEのアイコンを好きな画像にしたいのですが リソースハッカー等を使えばいいのでしょうか?
質問させていただきます。 RS232-Cで外部装置とやりとりをしているのですが、 外部装置のデバッグのために意図的に通信エラーを発生させる必要があるのです。 そこで、VBで通信エラー(1byte抜け、パリティエラー等)を発生させるにはどうすればよいでしょうか? ご存知の方いらっしゃいましたらご教示お願いします。 なお、現在の開発環境は「Win2000 SP1」「Visual Basic 6 SP6」です。
>>618 ソフト側のバイト抜け、パリティ値異常は自分で組めばOKだな。そりゃあたりまえ。
ソフト正常・PC等異常でのバイト抜け、パリティ異常をVBでどうにかしろってのは無理ってもんだ。
そこで電子ライターのカチカチですよ。 壊れても責任もたないけど。
RS232-Cのデバッグなら信号モニタとか繋ぐだろうから そっちの機能にノイズ発生とかあるんじゃねの?
DWORDのAPI(timeGetTime等)はVBでLongとして扱われますが、 2,147,483,647を超えた場合、次は-2,147,483,648となり -1までいったら0となるのでしょうか? 教えてください。
質問させていただきます。 16進数を10進数に変換する関数ってありますでしょうか? 10進数を16進数に変換する関数は見つけたのですが、その逆がみつかりません。 現在の開発環境は「Win2000 SP1」「Visual Basic 6 SP5」となっております。 よろしくお願いいたします。
>>624 CInt("&h" & "a")
でも何でもお好きにどうぞ
>>623 timeGetTimeを使えば24日後には結果が出ますね。
1秒以内のタイマに使いたかったんです。
今日中に知りたかったんですが残念です。
ありがとうございました。
( ゜д゜)ポカーン
>>627 いや、2の補数なんだから、計算すりゃ出るやん。
それにCコンパイラがあればすぐ試せるやん。
ぃ~ち、に~、さ~ん、し~、からあげやん!!
>>629 2の補数って事はリセットされて0じゃなく
マイナスが帰ってくるって事ですね。
数週間前に初めてVBを触りだし
Cなんてまったくわかりません。
ほんとすみません。
>>632 ありがとうございます。
これで何とかなりそうです。
>>その他皆様
何回もすみませんでした。
634 :
デフォルトの名無しさん :05/03/09 21:22:44
実行環境の違いについて教えてください。 大きな二次元配列を作って、中身を全部調べるという処理 なんですけど実行する環境で挙動が変わってしまいます。 WindowsMe : 無応答 Windows2000 : 正常終了 WindowsXP : 正常終了 途中で DoEvent を発行せず、ループをグルグル回していますが 配列のサイズを小さくすると、WindowsMeでも正常終了します。 処理時間の長さが影響していると思うのですが、ネットで検索 しても、自力で回答を見つけられませんでした。 どなたか詳しい方、解説を宜しくお願いします。 尚、実行ファイルの作成はWindows2000で行っています。
処理中なんだろ。 CPU使用率眺めてれば。
いや、確かにWin9xだと巨大な配列とか文字列を扱ってると固まることあるよ。
巨大な配列は使わない が定説だったな
639 :
vb :05/03/09 23:24:37
VBから、エクセルファイルを開く(書き子んだファイルを起動する)方法教えてください。 リンクするようなイメージで。
641 :
vb :05/03/09 23:29:10
shellexecuteは使ったことありません。その命令でパスとかを指定すればいいんですか? もしよかったら、記述の仕方教えてください。 お願いします。
643 :
vb :05/03/09 23:31:42
分かってたら教えてください。 こういう場で教えてもらったほうが分かりやすいから。 初心者なので。
いやです。
645 :
634 :05/03/09 23:37:21
>>635 ,636,637
ありがとうございます。
WindowsME : 30分待ってもNG(固まっている?)
Windows2000、XP : 約10秒で終了
なので、ある一線を超えてしまったのでは?と思ったのですが・・
巨大配列は宜しくないようなので、適当に DoEventでOSに制御を
渡してトライしてみます。
初心者ならなんでも許されると思うな
まあ、
>>641 みたいのはプログラマじゃないよな。
せめてぐぐってサンプル探して試してダメだったら聞け。
648 :
デフォルトの名無しさん :05/03/10 13:46:24
マルチメディアコントロールの他に手軽にwavファイルを再生する方法ありませんか?
sndPlaySound
650 :
デフォルトの名無しさん :05/03/10 15:47:33
sndPlaysoundありがとうございます
651 :
デフォルトの名無しさん :05/03/11 02:21:35
先日買ったテキストで勉強をはじめました。 サンプルの掛け算足し算プログラムなど作ってます。 ざっと全章読んだんですが応用するには時間がかかりそうな本でした。 そこで辞典みたいなTIPS?本を買おうと思うのですが それよりもこれ読んどけ・勉強しとけ みたいな本はありますでしょうか?
>>651 ISBN4-7741-0859-6 ISBN4-7741-0941-X
ISBN4-7741-0880-4
ISBN4-7741-0771-9 ISBN4-7741-0777-8
ISBN4-7741-0782-4
上げだしたらきりがないが。
653 :
デフォルトの名無しさん :05/03/11 03:46:46
>>652 それは注文番号ですか?ぐぐったら技術評論者の本が
でたので参考にしてみます。サンキュス
655 :
デフォルトの名無しさん :05/03/11 12:11:19
PROCESS_INFORMATION構造体を使おうとすると、 「ユーザー定義型は定義されていません」と出て、うまく実行されません。 調べると、参照設定を変えるという所までは分かったのですが、 どれを変えればいいか分かりません。教えてください。
>>655 Google.co.jpで "PROCESS_INFORMATION VB"
>>656 >>657 ありがとうございます。出来た模様です。ありがとうございました。
あの長い宣言ですよね。Cの#include <windows.h>みたいな
ちょこっとやっとく感じかと思っていたので大変でした。
659 :
デフォルトの名無しさん :05/03/11 16:03:16
>>654 まじれすか(´・ω・`;) ちゃんと全部VBの本がでたのでアマゾンに
注文してしまいました・・
ISBNで検索してみます(´・ω・`;;)・・
うわ、全部買ったの?けっこうな金額になりそうだが
661 :
デフォルトの名無しさん :05/03/11 16:28:20
>>659 ISBNの意味がわかってないのか。
別にアマゾンで買ってもいいよ。
>>662 ぐぐってみました。日本図書コードってやつみたいですね。
>>660 2冊だけ買いました
スレ汚しスンマセンでした(´・ω・`)
VB6.0を使っています。OSはXPです。 DirListBoxで普通にパスを指定すると、ドライブのルートから 指定したフォルダまで全ての親フォルダが表示されますよね。 このとき、指定したフォルダより上位のフォルダを非表示に することは可能でしょうか? つまり、たとえば"C:\A\B\C\D"というパスを表示するときに、 あたかもBがドライブのルートであるかのように表示して、 ユーザにそれより上位のフォルダにアクセスさせないように したいのですが……。
VB5でマウスのホィールを使いたいのですが「VB マウスホィール」あたりだと ググッてもHitしません。参考になるサイトはありますか?
>>664 DirListBoxもどきを自作するか、
SUBSTコマンドで誤魔化せ。
>>665 「VB マウスホイール」なら腐るほどヒットするのにな。
>>666 SUBSTについて調べてみましたが、勝手に仮想ドライブを
作ってしまうといろいろ支障が出そうなので、なんとか
DirListBoxっぽいものを自作する方向で考えてみます。
やってみて難しそうならまた別の方法を検討します。
ありがとうございました。
>>664 っていうか、正直そんなUI糞だと思うよ。。
世間には普通にあると思うけどなー。 Unixのユーザーアカウントの仕組みもそんなんじゃなかったっけ? あとFTPとかも。 まあ、それ自体が糞なのだという意見かもしれんが。。
>>664 SHBrowseForFoldersを使えば指定フォルダー以下の選択ができるけど
あれじゃ駄目?
おっと、最後のsは余計だった「SHBrowseForFolder」
675 :
デフォルトの名無しさん :05/03/12 10:50:54
vb5.0のサービスパックはどこで手に入るのでしょうか?
>>672-
>>674 アドバイスありがとうございます。
ダイアログボックスを表示するのでなくてなんとかフォームの一部として
組み込みたいと思ってます。
さして複雑な機能を必要としているわけでもないので、Listboxに手を加える
とかでなんとかならないかと模索している最中です。
なので、とりあえずはその方向で頑張ってみて、駄目だったらダイアログボ
ックスを使うことを考えたいと思います。
わざわざアドレスまで示していただいてありがとうございました。
679 :
MG :05/03/13 23:41:55
現在VB6を主な開発環境にしてます。機器制御やデータベースサーバー (SQL-Server)とのやり取りを主とする社内用のプログラムを開発、保守してます。 VB6もサポートが終わるようですし、netへ移行が必要かな?と思いつつも (VS2003は購入してあるのですが)いまいち移行のメリットが見えません。 1.クライアントは98からXPでFrameworkのインストールが必要なマシンが まだ大量にある。またインストールしてどのOSでもほんとに動くのか? 2.Frameworkのバージョンがあがったときにちゃんと動くのか? 3.Framework上でのアプリは遅いらしい(しくみからするとあたりまえか) 1.2はnet系の掲示板をみると大丈夫らしいのですが、どこもNETを 誉めるばかり(MSヨイショか?)みたいでどこまで信用できるのか半信半疑 です。 3.は結構痛いです。マシンを新しくすればよいといわれそうですが、IT系 の企業でもない製造業では、そんなに頻繁にマシンも入れ替えられないので 難しいです。 VB6使いの方はどう思われてますか?
>>679 結局何を聞きたいのかいまいち見えてこない。
ピントのぼやけた質問にはやはりピンボケの答えしか返ってこないと思う。
そんなあなたにサミュエル スマイルズ「自助の勧め」をお勧めしよう
『自助論』だった・・・・・・ORZ
聞くならVB.NET使ってるやつらに聞くべきだ
685 :
MG :05/03/14 00:04:19
質問の仕方が悪かったの見たいです。すいません。 聞きたいことはVB6を使っている方が.NETへの移行に関してどう思われている かということです。 移行するというのもあるかと思いますし、別の開発系にする、あるいは移行しない という判断もあるかと思います。 その判断と、判断基準を聞いてみたかったのです。 自分の場合は今のところメリットが見えないのですが(移行にもかなりの手間が かかるし)、今のままにしておくのも今後のこと(将来のOSでは動かないのでは ?)を考えると心配なので、どうするのがベストかを悩んでいます。
>>685 どの板のどのスレにもいる幼稚な奴は無視するよろし。
.NETに移行することのメリットは、エンドユーザーにとってみれば
ほぼ皆無だと思う。すくなくとも現時点では。
開発者側にとってのメリットも、実は現時点ではそんなにない気もする。
ただ確かにVB6よりはVB.NETの方が言語仕様すっきりしていてある意味解かり易いので
開発効率は若干上がるかもしれない。あとは、とりあえず時流に乗っているという安心感か。w
移行が大変かどうかという点については、VB6でもクラス使いこなしている人なら
全然問題ないと思う。(2-3週で感じは掴めると思う)
逆にVBプログラマにありがちなoopどころか構造化プログラミングもちゃんと
マスターできているか怪しいレベルの人だとかなり苦労するかも。
うちの会社は新規案件については2年前から移行しているけど、 保守するものについては、ケースバイケース。 VB6製のソフトが将来動かなくなる日はいずれ来る。 ずっと使うってわかっているものなら、いつかは移行せざるを得ないけど、 要はいつ移行すべきかってことでしょう? それは、知らん。 どの程度の予算・時間で移行できるかとか、プログラムの規模にも担当する人員にもよるし、 プログラムのライフサイクルにもよってくるじゃん。 自分のところで諸事情を検討して決めるしかないよ。
>>685 マシンの入れ替え次期に合せて.NETに移行すれば?
うちの社内アプリはVB5製。さすがに古くなってきたからWin32SDKに移行中。 特に移行を急ぐ必要が無いならそのままでいいんでないか?
692 :
MG :05/03/14 01:24:48
>>687 >>688 回答ありがとうございます。移行メリットはあまりないですか・・。
実際作り直すだけのメリットがないのでほんとはVB6互換の使える
環境とか出てきてくれればありがたいんですけど(REALBASICではだ
めみたいだし)
当面VB6でいこうと思います。
>>689 で紹介されたスレもみましたが、新規案件もnet
2.0がでるまで様子見したほうがよい感じですね。
>>692 2.0まで様子見?一生「次が出るから」なんて言ってればいいよ
将来のOSで動かなくなる?お前、その時に生きてんの?
判断と基準?下調べくらいやってから言えよ
vb6のサポート終了もあり、新規開発ではvb6を使用すべき状況ではなくなりつつある。 vb6は人気のある言語だったが、移行すべきパスは明確ではない。 vb7みたいな製品があれば良かったのかもしれませんが、 まだプログラマ人口の少ない.netに移行すべきかは迷うところでしょう。 エンタープライズの世界に限って見ると、社内システムでも 画面はブラウザで、ビジネスロジックはapサーバのjavaでという選択も多くなってきていると思います。 ですが、まだ複雑なUIでは、ブラウザでは描画速度や自由度などの点で不満がでることもあるでしょう。 また、2階層のシンプルなシステムから3階層のシステムに移行する点もリスクに見えるわけです。 混沌としているようでもあります。 しかし移行すべきパスが明確でないということは、選択肢が沢山あるということでもあります。 個人的にはその選択にはプログラマ人口が比較的重要だと思っています。
釣堀じゃねーしさ
VB6.0からVB.NETに逝くぐらいならあっさりC#にしたほうがまし。
そんな事は当たり前だ。 VB.NETはVBという名前を無くすと暴動がおきるから、しぶしぶ作った代物だ。
でもなぜか、多くの人はVB.NETを選んでるみたいだね。
Officeとの親和性だけは高いからね。
701 :
デフォルトの名無しさん :05/03/14 19:28:47
ビルゲイツが何で金持ちになったか知ってるか?
(´・ω・`) < 知らんがな
いや、C系統の言語って視認性が悪過ぎるでしょ。VBとかパスカルなんかに比べて。 くだらないことに脳の資源とられる感覚を払拭できないんだよね。 っていうとすぐに慣れの問題っていう奴が出てくるがそんなことはない。 それだけでも十分VB.NET選ぶ理由になると思うけど。 >Officeとの親和性だけは高いからね。 そこはあんまりC#でも変わらない気がするけど。。
>>703 変わらないって言えば変わらないかな。
ただ、引数が省略できないから Missing.Value がずらずら~と並んでorz
あと、CreateObject("Excel.Application")みたいにレイトバインディングが 簡単に出来ないのが辛いなぁ。 インストール先PCのOfficeのバージョンに合せていちいちビルドし直すのが面倒。
え、できるでしょ?C#じゃ試してないけど。 インスタンスの生成は単純にExcelをNewしといて、 それをObject型の変数に代入するだけ。 少なくともVB.NETじゃこれでエクセルに関して バージョンフリー(?)なアプリが作れたけど。。
っていうか学生さんの言語厨房みたいなこと言って悪いけど 「レイトバインディング」ってCreateObject使うかどうかは関係ないよ。
っていうかいつまで.NETの話題を続けてるんだ
C丼て何?
>>707 そうそう。だから「CreateObject()みたいに簡単に」って表現をしてると思った。
712 :
デフォルトの名無しさん :05/03/15 00:20:16
>708 >710 必死だなw
>>703 漏れはVB使ってる時の方がくだらんことに脳の資源が取られると感じる。強烈に。
VB6でコントロール配列のインデックスの並び替えが100個とかあると非常に面倒なのですが、 何か良い方法はないでしょうか? タブインデックスみたいに既に割り当ててある番号を指定しても自動的に並び替えてくれればいいんですけど。
>>714 100個作るインターフェイスそのものが間違っています
画面仕様から見直してください
100個ってどんなだ。
718 :
デフォルトの名無しさん :05/03/15 19:03:28
>>717 10×10のマスをテキストボックスで表してるとかでしょ。
素直にGridつかえばいいのに(w
>703 >705 釣りは他所でおながいします
>>719 あんた、空気読めない人っていわれない?
(´-`).。oO(釣堀では静かにしてろってこと?)
723 :
デフォルトの名無しさん :05/03/16 12:59:00
(´-`).。oO
724 :
デフォルトの名無しさん :05/03/16 14:31:39
0.1づつ繰り上がるはずなのにずれます。 教えてください。 Private Sub Command1_Click() level = level + 0.1 Label1.Caption = level End Sub
dim n as Integer Private Sub Command1_Click() level = n * 0.1 Label1.Caption = level End Sub
>>724 予想。
level が Integer になっている。
>>726 Integerだったらズレる以前の問題だろ
728 :
デフォルトの名無しさん :05/03/16 15:53:10
charポインタ返すDLLが有ったとするじゃないか。 VBではどうやって受け取るの?ポインタ無いよな? それと、voidポインタをValiantで受け取ったとして、 どうやってキャストするんだ?
>>724 浮動小数演算になってるからだろ。
Private Sub Command1_Click()
level = level + 1
Label1.Caption = level/10
End Sub
levelはLong or Integerで宣言すること。
その程度なら通貨型使えよって思うがな
>>728 MSDNにきちんと書いてあるから熟読することを進める。
VBのUnicodeをAnsiに渡すのは、VBたんがいい仕事してくれるので大丈夫。
ただ、DLL側で動的に領域確保は危ないような。
VBでSpaceで連続領域確保したところに突っ込んでもらうのが安全。
Unicodeの文字列をUnicodeで渡す場合はBSTR型だっけ?が必要。
>>728 charのポインタもvoidのポインタもLongで受け取れ。
733 :
デフォルトの名無しさん :05/03/16 20:52:10
729,730さん ありがトン
735 :
デフォルトの名無しさん :05/03/17 00:44:27
VB6.0です。おながいします。 フォームについて。 「最小化」のみ生かしたまま、フォームのresizeをできなくするようには どのように記述すれば良いのでしょうか。 Borderstyleは「可変」にし、最大化をFalseにし…。 それからがわかりません。よろしくお願いします。 あと、フォームの中に配置した、例えばtextboxやコマンドボタンを、 フォームのリサイズに比例して移動させたりするには、やはり地道に それぞれのパーツのwidth・heightを設定していくしかないのでせうか?
可変じゃなくて固定で、MinimizeBoxをTRUE? コントロールの移動は地道に設定したりコンテナ使って手抜きしたり。
>>735 タイトルバーのボタンを使用不可にするにはAPI使わないと出来なかった希ガス
再配置は地道に計算してやってくしかないけど、FrameやPictureBoxなんかで区分けすれば幾分か楽にはなる。
クラスにWithEvents定義してごにょごにょってやればスッキリ書けるけど説明が面倒なので省略。
あと、可変にしたいのか固定にしたいのか分からん質問だな。
>>731 728じゃ無いけど、そうなんだ。
>VBのUnicodeをAnsiに渡すのは、VBたんがいい仕事してくれるので大丈夫。
これは、渡す時に変換してくれるって事なんだよな?
案外VBって仕事してるのな。
>>738 でも、結構曲者な動きだけどね。
バイト数が変わることを前提に、文字列を戻す場合は考慮が必要だったと思う。
なんで、どちらかというと、渡すのはStringでいいけど、戻りがあるならByteの配列を渡すのが確かいい感じだったと思う。
740 :
デフォルトの名無しさん :05/03/17 12:57:09
724です。こんな方法もあるようです。 dim level as Double Private Sub Command1_Click() level = level + cdec(0.1) Label1.Caption = level End Sub
741 :
728 :05/03/17 13:32:04
>>731-732 返事が遅くてごめん
DLLで純粋にmallocをラップして、VBでも動的なメモリ確保を出来るように
しようと思ってたんだが、受け取ったポインタをキャストできないから、
全然意味が無いんだよな
何か抜け道無いかと思ってたんだけど、無さそうねぇ
とにかくありがと
>>741 キャストしなくても、ポインタをハンドルとして扱って「中身いじり関数」をDLLに作ってやったら?
ポインタとバイト値を受け取ってコピーするだけの関数だけどな。
ついでに言えば、 GlobalAlloc() が、メモリ確保してくれるWinAPI 少し調べないと使えないからな
そもそも、VBでそういう操作をするのが間違いだな。
もし動的確保が必要ならば、
>>742 さん言うようにその処理自体をカプセル化する。
VB6で指定のExcelファイルの指定のセルだけ表示させて そこのみ編集したいんですが・・・、OLEコンテナでできますでしょうか? ご存知のかた、よろしくおねがいします。
>>717-718 DBのデータを入力するやつです
本当は、仕様書にそのように書いてあるのでその通りに作ってるだけです
747 :
デフォルトの名無しさん :05/03/17 22:10:11
VBで動的配列を使う場合Redimを使うとあるのですが、 Public変数の場合はどうしたらよいですか?
749 :
デフォルトの名無しさん :05/03/17 22:17:39
はあとかいわれてもしょうがないのですが 動的メモリ確保の方法がわかりません。 標準モジュールで宣言したPublic配列を書いたら動的に確保できますか?
751 :
デフォルトの名無しさん :05/03/17 22:19:55
1から100までの自然数を素因数に分解して出力しなさい 誰かC言語でプログラム書いてもらえませんか?
もう何がなんだか。。。
バトルロワイヤル見てるみたいで逆に面白い
4=2*2 6=2*3 8=2*2*2 9=3*3 10=2*5 12=2*2*3 14=2*7 15=3*5 16=2*2*2*2 18=2*3*3 20=2*2*5 21=3*7 22=2*11 24=2*2*2*3 25=5*5 26=2*13 27=3*3*3 28=2*2*7 30=2*3*5
cp dir1/file1 dir2/file2 のようにファイルをコピーする方法を教えてください. ファイルをopenしてkopi-ファイルに書き込むのならば出来るんですが, もっとエレガントな方法はないのかなあと。
renameですね。 自己解決しました.すいません。
あー、コピーじゃないからダメですね。 やっぱりcopy file1 file2 みたくコピーする方法を教えて欲しいです。 それとファイルを削除する方法も教えて欲しいです。
FileSystemObjectでも使えばええんちゃうん?
FileSystemObjectなんか使わなくても、 FileCopy関数で十分。
FileSystemObjectで何とかなりました。サンクスです。 今から一応Filecopy関数も調べてみます。
>>745 CreateObjectからヘルプ見ればサンプルある。
>>747 Redimを使う。なので>>748ははあ?といいたくなるのも当然。
762 :
デフォルトの名無しさん :05/03/18 09:31:37
Do...Loop ステートメントでループさせている中にIF文を入れているのですけど 例えば、10回ループさせている間にIF文がFalseの時に下まで行ってループせずに 5回目から6回目など次のループに移動させたいのですけどどういうやり方があるのでしょうか?
>>745 ごめん、特定のセルですね。
そうだとちょっと無理かな?OLE連携でExcelを出せるけど、それを絞るのって、元のシート次第じゃないのか?
>>763 元のシート次第・・・!ちょっとピピンときました。
やってみます、有難うございました。
>762 そういう風に書けばよい。
DDEでバイナリ値を使いたいんですがどうすれば良いのやら途方に暮れてます。
テキストやラベルにバイナリ値を入れられないし・・・
知ってる方いましたら教えてください。
>>762 飛び先書いてGOTOで。
バイナリがだめならBASE64でエンコードすればいいじゃない
DDEを使わないというのが最善策
>>762 あえて言わせてもらえればアルゴリズムかコーディングが不味いと思うので
もう少し詳しくやりたいことを書けばきっちり馬鹿に出来ると思うのだが…
>>769 恥ずかしい奴。「馬鹿に出来る」対象なのは恐らく君の方。
>>762 のような制御構造が欲しいケースはままある。
っていうかCも知らないとしか思えない。
>>762 EndIfをLoopの前まで持っていくってのでダメ?
それともBoolのフラッグ立ててIfとEndIfで囲むとか…。
Visual InterDev 6.0をこれから勉強しようと思ってるのでがVisual Basicと違ってあまり参考書がありません。 よい参考書やHPはないでしょうか?
知るかボケ。
>762 なんかよく分からんけど再帰的な事がやりたいか、 一時的にLoopから外したいようにも思える。 前者ならよく考えてそのように書くしかないし、 後者の場合、もうちょっと具体的な情報がないと何とも。 一旦具体的な処理部分を関数化するか、 非常に冗長なcodeを書いて整理してけばいいんじゃないかな? フローチャートを書くのもいいかも。 >772 VBが使えるんだったら要らないっしょ。使えば分かる筈。 それよりIIS等の参考になる資料でも読んだ方がいいよ。
>>772 ちょっと問題がありまして、、、
Visual InterDev6で新しいWebプロジェクト作成の際に
出てくる「使用するサーバーの指定」の欄に何の名前を入力していいのかわかりません。
IISをインストールし、インターネットインフォーメーションサービスのローカルコンピューターの名前かなと思い、いれてみたのですが、接続できないようで先に進めません。
ご教授お願い致します。
OSはxpのproを使用しております。
ビットマップの上に文字を書けるようにしたいと思うのですが、 テキストボックスを配置すると、その四方形の部分の絵が隠れてしまいます。 テキストボックスを透明にする方法ってありますか?
>>776 Call SetWindowLong(RichTextBox1.hwnd, GWL_EXSTYLE, WS_EX_TRANSPARENT)
何故かRichTextBoxなら一行で透明になるけど(Win2K以降)、直接ビットマップというか
デバイスコンテキストに描画しちゃうようなコードも考慮してみたほうがよいかと
>775 URLかIPアドレス入れてみ。
VB5でキーバッファクリアをしたい場合はどうすれば良いでしょうか? まさか慣性が付いちゃうなんて・・・8Bit機を思い出してしまった
VB6 XPです。 CSVファイルをソートするのに、ADOでテキストファイルを データベースとして接続して、SQL文でソートして、その 結果を別ファイルに吐き出すようにしています。 Set mcn = New ADODB.Connection mcn.ConnectionString = _ "Provider=MSDASQL.1;" & _ "Extended Properties=""" & _ "DRIVER=" & _ "{Microsoft Text Driver (*.txt; *.csv)};" & _ "DBQ=" & App.path & "\" & """" mcn.Open Set mrs = New ADODB.Recordset mrs.CursorType = adOpenDynamic SQL_STR = "Select * From " & "sort.csv" & " ORDER BY field28 ASC,field35 ASC,field02 ASC" mrs.Open SQL_STR, mcn ただこの方法だと元のファイルにあったデータを囲むダブルコーテーションや、 データの前後にある空白が消えてしまいます。 schema.iniの設定はこのような感じです。 [sort.csv] ColNameHeader=True Format=CSVDelimited MaxScanRows=0 textacterSet=OEM Col1=field01 text ダブルコーテーションや空白等が消えないようにするのはどうしたらよいでしょうか? CSVファイルの大きさは170Mです。 データは可変長です。 よろしくお願いします。
>>778 IPアドレスいれてみたらちょっと進んで今度はユーザー名に対するパスワードを
要求されました。
思いつくパスワード全て入れてみたのですが駄目でした。
どなたかご存知でしょうか?
>782 サーバ上に接続しようとしている端末にLoginしているユーザのアカウントはadminで作ってあるのかい?
VB6 XPです 私は現在、ADO2.7でMDBファイルを開き、編集するソフトを作っています。 開く対象はユーザーの任意のファイルですので、ファイル読み込み時に 各テーブルのカラムの設定も取得するようにしています。 カラムのデータ型やDefault値、Nullを許可するかどうかの設定は プロパティの"Nullable"等で取得出来ることは分かったのですが、 一意(UNIQUE)に設定されているかどうかの項目がウォッチ式や ネット上でも調べてみましたが、見つかりませんでした。 現在は苦肉の策としてエラーハンドラーを設定し、エラーコードから 『一意に設定されたカラムに重複した値が入力されています』といった メッセージボックスが表示されるようにしています。 カラムが一意に設定されているかどうかは、どのように取得すれば 良いのでしょうか。
785 :
デフォルトの名無しさん :05/03/20 15:36:46
VisualBasicのサービスパックって何処でダウソできるんですか? 日本語のやつ
\ │ / / ̄\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ─( ゚ ∀ ゚ )< ぱいそんぱいそん! \_/ \_________ / │ \ ∩ ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\∩ ∧ ∧ \( ゚∀゚)< ぱいそんぱいそんぱいそん! ぱいそん~~~! >( ゚∀゚ )/ | / \__________ ________/ | 〈 | | / /\_」 / /\」  ̄ / /
コモンダイアログで例えばShowsaveメソッドなどで名前を付けて保存 ダイアログを真中に出したいんですけど、ダイアログを出す位置指定する事 ってできますかね。 今は、左上のあたりに出てしまいます。
>>790 言葉遣いが気に入らないので答えたくありません。
792 :
デフォルトの名無しさん :2005/03/22(火) 19:12:40
ド素人で申し訳ないのですが、質問させてください。 VB6.0を使っています。 form以外(たとえばデスクトップなど)がフォーカスを持っている場合に、 form側でキーイベントを受け取るにはどのようにすればよろしいでしょうか? 具体的に言いますと、 formがフォーカスを持っていない状態の時に Ctrl+F1などが押されると、処理を実行したいです。 もちろんformがフォーカスを持っている時も同様に処理を行いたいです。 アドバイスを頂けるとうれしいです。よろしくお願いします。
793 :
デフォルトの名無しさん :2005/03/22(火) 19:49:27
ここは随分回答者が偉そうなインターネッツですね(^ー^)
>>783 ユーザーのアカウントadminに直してみましたが、無理でした。
Webアプリケーション
DIRECTSTAR
ユーザー名
パスワード
というようなダイアログが出て先に進めません。。。。
799 :
デフォルトの名無しさん :2005/03/23(水) 09:18:05
>>795 さん
すいません、初めて聞く単語なのでよくわかりませんが、
グローバルフックでググッてみたところ、なにやら関係ありそうでした。
もう少し調べてみることにします。
>>796 さん
おっしゃる通りです。
参考にさせて頂きます。
ありがとうございました。
800getですが、何か?
>797 なんか根本的に分かってないような希ガス。 「DIRECTSTAR」ってのもよく分からんし。 もちょっと「何をどうして、どうなったか?」って情報を書くべし。 つーかそろそろスレ違い。 どっか適したスレがあるんじゃね?
>>801 オマエのように相手をするバカがいるからつけあがるんだ
氏ね
803 :
801 :2005/03/23(水) 15:00:24
(T▽T)
NECのブロードバンドルータ
ポインタ先の文字列取得にRtlMoveMemory使用しています。 MoveMemory ByVal strValue, ByVal lngPointer, Len(strValue) ※Declare定義は、Declare Function Sub MoveMemory Lib "kernel32.dll" Alias "RtlMoveMemory (Destination As Any, Source As Any, ByVal Length As Long) ※strValueは、固定長文字列 * 48。取得した後にNULL文字以降をカットする処理が入る ※lngPointerは、ポインタが入る この方法だとたまにWindowsNT4.0(SP6a)でアプリケーションエラーになります。しかしWindows2000(SP4)だとなりません ためしに固定長文字列strValueを可変長文字列に変更して、strValue=String$(48,vbNullChar)を追加したら発生しなくなりました 理由をご存知の方教えてください
>>805 ちなみにVB6(SP6)です
ヘルプみると「Declare ステートメントに固定長文字列を指定することはできません。プロシージャに渡される前に可変長文字列に変換あります」とありますが、関係あるんでしょうか?
文字列はStringとかSpaceで指定しない限り、連続領域確保の保証はないよね。 あと、文字コードの絡みもあるから、どちらかといえばByte配列を渡すほうが確実と思う。
>>805 日本語環境の場合、固定長文字列=バイト数不定
809 :
デフォルトの名無しさん :2005/03/24(木) 17:28:54
2chスレのURLと本文を指定して コマンドボタンを押したらそのスレに書き込むプログラムを作ってみたいんですが 参考になるソースはありませんか?
>>809 そんな質問するレベルの人に教えても、2chのサーバが迷惑なだけだから教えません
今VB6(SP6)でMicrosoft AcceseとアクセスしてデータをTEXTBOXに表示させようとしているのですが、どの様にやったらいいか分かりません。レコードオープンまでは行ったのですが…。ご教授お願いします。
Text1.Text = rs(0)
814 :
809 :2005/03/24(木) 19:45:47
>>810 >>811 下手に出てたら調子に乗りやがってこの野郎ぶっとばすぞ!
なんつってー、自己解決しました。
815 :
デフォルトの名無しさん :2005/03/24(木) 20:48:55
VB6でMHTファイルをHTMLファイルに変換したいのですが、 どうすればできますか?教えてくださいませ。
レスをくれた方ごめんなさい。可変長文字列にしてもアプリケーションエラーは発生しました。 ポインタ先の文字列取得は lstrcpyA と lstrlenA で行うことにします RtlMovememory だときっちり48文字取得するのですね。つまりポインタ先の文字列長が15文字でも Lengthに48と指定すればNULLより先の未確定エリアを参照してしまいます。そこでタイミングが悪い とアクセス違反が起きるのではないかと……いうのが私なりの結論です。これで顧客は納得してくれ るでしょうか?
>>816 オーバーランしたら怒られるわな。
memcpyとstrcpyの違いを理解してないで作るとデバッグが辛いぞ。
オーバーランとアンダーランに起因するバグって原因探るの面倒だから、知ってる人に違いを聞いて
基礎知識をしっかり身につけてから作業進めたほうがいいぞ。
あと、MBCSのポインタがわかってんならSysAllocStringByteLen使ったほうがいいかもしれんね。
>>816 もう1つ付け加えると
>RtlMovememory だときっちり48文字取得するのですね。つまりポインタ先の文字列長が15文字でも
>Lengthに48と指定すればNULLより先の未確定エリアを参照してしまいます。そこでタイミングが悪い
>とアクセス違反が起きるのではないかと……いうのが私なりの結論です。これで顧客は納得してくれ
>るでしょうか?
これは正解だけど(タイミングという言葉は気になるが)、そのまま顧客に伝えたら落胆するか
ブチ切れるかのどっちかだぞ。
データを取得する時に領域外参照する場合があったって程度にぼかしとけ。
820 :
デフォルトの名無しさん :2005/03/24(木) 23:03:25
ぞんざいな口調で偉そうなことを言う奴ってたいしたことないのは2chの法則なのかね?
>>819 なんて大きなお世話だし。
>>805 なんかやってること根本的におかしい。
●なぜ「文字列をコピー」といいながらlstrcpyではなくRtlMoveMemoryなんて
耳慣れない関数を使うのか?
●なぜ、RtlMoveMemoryの「ソース」のバイト数を指定する引数に「デスティネーション」の
文字列の文字数を渡すのか?
>>819 確かにタイミングは気になりますね。ただWindowsNT4.0(SP5,SP6a)だと百数回の確率で発生して、
Windows2000(SP4)だと発生していないのが未だに不明でそれをどう表現すればよいか迷ったのです
ちなみに顧客もプログラマなのです。そこに出向しているだけなのです
>>820 偉そうな文書くやつほど無能という法則はその通りだね。
823 :
デフォルトの名無しさん :2005/03/25(金) 10:40:00
vb6の質問です。 vbでC言語のunionのようなことをしたいのですが何か良い方法はありますか? 内容は、INTをBYTE、STRINGをBYTE、DOUBLEをBYTEまたその逆をする方法が ありましたら教えてください。 よろしくお願いします。
ほしゅ
826 :
デフォルトの名無しさん :2005/03/25(金) 12:30:16
>>823 共用体はないけど、クラス使えばおなじようなことは実現できるよ。
VB6からAというサーバにあるPostgresSQL のデータベースにアクセスしようとしています ADO(2.8か2.7)+VB6 SP6を使用して接続を行おうとしたのですが ACCESSからODBCで接続は出来ました とkろがVBから接続を行おうとしてもダメでした ダメな理由は エラー3706 プロバイダが見つかりません プロバイダが正しくインストールされていない可能性があります でした 接続文字列は "provider=odbc;dns=test_server;uid=testuser1;pwd=0" サーバ名やユーザID、パスワードはACCESSで接続に成功した時と同じものなので間違いありません ODBCで接続を行いたいのですが、このプロバイダ名では駄目なのでしょうか もしくはPostgresSQLの専用プロバイダがあるのでそちらでもいいのですが どちらにしろ、プロバイダ名の設定がわからないのです 下手な文章で申し訳ないのですが、よろしくお願い致します。
ピクチャボックスに線を引く際には、Picture1.line (x,y)-(x,y)と言った形で線を書きますよね? この一度引いた線を、削除する際にはどうすればよろしいでしょうか?
内容を全部消してPicture1.line (x,y)-(x,y)を描く直前まで描き直す
でもそうすると、他の線も全部消えてしまうんですよ。 縦軸の線のみ消して、横軸の線は残したいので、clsを使えず悩んでいるんです。 説明不足ですみません。
>>827 「dns=~」は「dsn=~」じゃないの?
>>831 ざっと思いつくのはこんな感じかな。
1) clsして再描画
2) lineを引く前の画像を取っておいてソレと差し替える
3) xorで書く
834 :
833 :2005/03/25(金) 14:56:48
もう一個思いついた。 4)lineコントロールを使う。
835 :
831 :2005/03/25(金) 14:58:55
>>833 4)の意味を具体的に教えていただけません?
>>835 画像をpictureboxに描画していると仮定して、
・PictureBoxにlineコントロールをvisible=Falseで配置する。
・ラインを引きたくなったらvisibleプロパティをTrueにする。
・要らなくなったらvisibleをFalseにする。
質問が「lineコントロールって何?」と言う意味なら
ヘルプを参照して下さい。
837 :
831 :2005/03/25(金) 15:16:57
>>836 配置されたラインを隠したり表示したりさせるということですか。
ただこの場合、あらかじめ決まったパターンの線しか引けなくなりません?
作っているプログラムは、横軸の間隔をスライドバーで変更するものでして、
さらに一定間隔で太い区切り線を入れたり入れなかったりするものなのです。
コードを見ればお分かりいただけるかと思いますが、これだと別な線を引いても、スライドバーを移動させると一行目のpicture1.clsのせいで削除されてしまいます。
また、一行目のpicture1.clsを削除すると、一度引いた線が残ってしまうために、最終的に線だらけになってしまいます.そこで皆様の知恵をお借りしたいわけです。
スライダー部分のコード
Private Sub Slide_scroll()
Picture1.Cls
temp1 = Slide.SelStart
kankaku = temp1 * 120
Picture1.Line (xzahyo, 0)-(xzahyo, 500)
For hr(0) = 1 To 24 Step 1
xzahyo = hr(Index) * kankaku
Picture1.DrawWidth = 3
Picture1.Line (xzahyo, 0)-(xzahyo, 500)
Next
For min(0) = 1 To 1439 Step 1
xzahyo = kankaku / 60 * min(Index)
Picture1.DrawWidth = 1
Picture1.DrawStyle = 2
Picture1.Line (xzahyo, 0)-(xzahyo, 500)
Next
一定間隔の線を引くか否かのスイッチ、ON OFFで表示切替。コードはONにする部分
For minq(0) = 1 To 96 Step 1
xzahyo = kankaku / 4 * minq(Index)
Picture1.DrawWidth = 2
Picture1.Line (xzahyo, 0)-(xzahyo, 500)
Next
小出しにするなボケ、知らん
839 :
836 :2005/03/25(金) 15:48:15
>>837 まず、もういっこPictureBox(picture2)を用意して、線を引く前の画像をコレに取っておく。
slider_scrollでclsの代わりに、picture2をpaintpictureでpicture1に上書きする。
そして、その上にlineで線を引く。
840 :
831 :2005/03/25(金) 16:05:03
>>839 どうもありがとうございました。
無事描画できました!大助かりです。
>>838 すいませんでした・・。
>>832 ( ; ゚Д゚)
・・・・やらかしてた・・・・・
何故動かなかったのか・・・
謎解けたり・・・
_| ̄|○
とりあえず つなげるようになったっす
ありがとうございました
>>815 #vbの話じゃないような気も
webbrowserで開いたらなんとかなるのでは?
Document.Body.innerHTML で一発だな。画像は別だが。
スクロールバーの最大値を内容によって変えようしている。 だが、スクロールバーのMaxプロパティが、内容が多くなってくると途中でオーバーフローしていまう。(32657を超えた) つまり、Maxプロパティの型をlongにすれば解決する問題なのだが・・。 これってなんとかならないでつか。
845 :
844 :2005/03/26(土) 10:22:05
訂正 ~内容が多くなってくると途中でオーバーフローしていまう。(32657を超えた) ↓ 内容が多くなってくると途中でオーバーフローしていまう。(32767を超えた) くだらないミススマソ
846 :
デフォルトの名無しさん :2005/03/26(土) 14:07:20
>>844 なんか根本的に考え方が間違ってる気がするね。
スクロールバーってのは全体に対する割合をビジュアルに指定するUIであって
Maxってのはその分母。
分母に画面の解像度以上の値を指定したって意味ないでしょ?
どうせユーザーは[1/スクロールバーの高さ(幅)]より小さい分解能で
割合を指定できないんだから。
847 :
844 :2005/03/26(土) 14:44:27
では、内容に合わせてピクチャボックスのスクロールをするのはどうやるんでつか?
848 :
デフォルトの名無しさん :2005/03/26(土) 14:47:54
どうやるって小学校4年生の算数でしょ。。。
バーで移動、バーの上下でページ移動、矢印で±移動で十分だな
>>844 32767を越えないようにスクロールの幅を変えれば良い
851 :
844 :2005/03/26(土) 17:35:38
>>850 トンクス。単純な問題ですた。
お騒がせスマソ...
852 :
デフォルトの名無しさん :2005/03/26(土) 19:33:20
初心者の質問です VB6(SP6)でform1,form2,form3が表示するようにしてありまして、 それぞれのフォームにcommand1ボタンが一つ、text1ボックスが一つあります。 それぞれのformには、 private sub command1_crick() Do text1.text = Now Doevents loop end sub とコードがかかれています。 各formのcommandボタンを押すと、 最後に押したformのみ現在の時間が表示されて、 残りの2つは時間がとまったままになってしまいます。 3つのformともリアルタイムで現在時間を表示するようにしたいのです。 どうか、よろしくご教授ください。
>>852 何故素直にTimerコントロール使わないんだ?
854 :
852 :2005/03/26(土) 19:43:01
>853さん すばやいレスありがとうございます。 実をいうと、ある時間になったら、イベントを発生させるプログラムを 複数のformで作りたいのです。 Timerでは時間誤差が多すぎて、私には使えなかったもので・・・
>>854 誤差はどれくらいの許容?
50ms以下などの世界なら他のやり方だし
大概はTimerコントロールを0.1秒おき(これでも細かすぎるが)に回して
その中で時間を比べる
856 :
852 :2005/03/26(土) 20:02:34
>>855 1時間とかのスパンで誤差を1秒以内にしたいのです
858 :
852 :2005/03/26(土) 20:15:03
もしかしたら、Timer1を貼り付けて、100msで設定して Dim finaltime as date finaltime = 日時の設定 private sub command1_crick() Timer1.Enabled = True end sub Private Sub Timer1_Timer() if finaltime = Now then イベント end sub とすれば・・・!
860 :
852 :2005/03/26(土) 20:44:27
>>859 3つのformにtext2ボックスを追加して、
Dim finaltime As Date
Private Sub Command1_Click()
Timer1.Enabled = True
finaltime = DateAdd("s", 10, Now)
End Sub
Private Sub Timer1_timer()
Text1.Text = Now
If finaltime = Now Then
Text2.Text = "OK"
Timer1.Enabled = False
End If
End Sub
というのを走らせたら、3つのformともリアルタイムで
現在の時間を表示して、10病後にOKの表示がでました。
なんとかなりそうです。
どうもありがとうございました。
861 :
デフォルトの名無しさん :2005/03/27(日) 01:31:18
すみませんが、ただでおしえてください。 MSCommで232Cの受信ソフトを作ってるんですがデータが2進(ビット)です。 これを受信ソフトで10進に変換する方法が知りたいです。 どうやらエクセルには関数があるみたいですが、VBには見当たりません。 InputLenは16ビット指定で buffer = MSComm1.Input textbox1.text = buffer とすると、とうぜん"0110010110001000"等とテキストボックスに表示されます。 これを10進にしたいんです。せめて特定のビットが1か0かを判断する方法 がわかると助かるんですが(ANDではうまくいきませんでした・・)。
861です。 すんません、ふつうにできますた・・。
VB6の質問なんだけど誰か教えて栗!! エクセルファイルに書きむ処理で途中で改行させたいんだけど、どうすればよい? 例えば、セルAにある程度書き込んだら次にセルBに移るみたいにしたい。 えらい人教えて。
>>864 それってエクセルのブックに直書きってこと?
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Set xlApp = New Excel.Application
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Sheets(1)
みたいにするってこと?
867 :
デフォルトの名無しさん :2005/03/27(日) 21:07:30
VB固有の問題じゃなくてユーザーインターフェースの問題なんですが、 皆さんどうしているかとお尋ねします。 ユーザーに選択させる場合、チェックボックスとオプション(ラジオ)ボタン の使い分けはどのような基準で行っていますか? たとえば配偶者の有無を選択させたいとき、「有」「無」二つのオプション ボタンを用意するか、それとも「配偶者有り」というチェックボックスを 一つ用意する、の二つの方法があります。どちらが良いと思いますか?皆さんは どちらをお使いですか? また、いろんなウェブページを読んでみたのですが、このへんのデザインに ついて論じられたページを見つけることができませんでした。もし、WIndows プログラムのユーザーインターフェースについて手短にまとめられたウェブ ページや書籍がありましたら、お教えいただきたいとも思います。
ラジオボタンはどれか一つだけ選択する場合、 チェックボックスは複数選択可の場合に使用 するんじゃないの? ユーザーインターフェースについてはwindowsをデザインした 人が書いた本があるというのをどっかのホームページで 見た覚えがある。でも、確か絶版だったと思うし、本の題名も 忘れた。
869 :
デフォルトの名無しさん :2005/03/27(日) 22:23:44
VB6でメモリエディタ見たいにメモリのアドレスの値を変えたいのですが メモリのアドレスにアクセスする関数があったら教えていただきたいです。
870 :
868 :2005/03/27(日) 22:26:28
871 :
868 :2005/03/27(日) 22:37:22
windowsデザインした人じゃなくてvb作った人みたいだな。 嘘ついてスマソ
872 :
867 :2005/03/27(日) 23:13:47
>>868 さん
その原則ではどうもしっくりこない局面があるんですよ。
たとえば、IE6.0の「インターネットオプション」の「プライバシー」
タブに「ポップアップをブロックする」というチェックボックスが
あります。この選択は「する」か「しない」かですから、上記の原則
にのっとるなら、本来はオプションボタンが妥当なはずです。でも、
Microsoftはチェックボックスを使っていますね。この実装は、なんと
なく了解できるんですよ。
ご紹介の「Windowsユーザーインターフェイスデザインガイド」は昔
読んだことがあるのですが、Microsoftが自分の原則を曲げて実装
するのはよくある話です。ですから、原点に立ち返るというか、
そもそもどのような原則でHCIを考えたらよいのか、というのが私の
疑問でした。
スレ違いだったでしょうかね。
GUI規約みたいなスレなかったっけ?
874 :
デフォルトの名無しさん :2005/03/28(月) 00:13:55
原則とそれを実現するためのガイドラインは区別したほうがいいのでは? 原則、というか判断基準は、こういうと身も蓋もないかもしれないが 「ユーザーにとってその方法の方がより直観的に解かり易いかどうか」。 ガイドラインってのは、こういう場合一般的にこうすると原則に沿えますよ、 ってことでしょ。一般論だから当然例外はある。 もちろんガイドラインってフールプルーフ、つまりどちらが原則に沿うか 自分で判断できない人のアンチョコだったり、自己中な俺様UIの乱立を 防ぐものだったりするんだろうけど。
流行ってのもあるよな 基地外のようなキモい絵のスプラッシュとか外観色使いとか小さくて押し辛い_□×とか
>>867 の例ならチェックボックス使うかな。
基本は無で、人によっては有って事で。
メッセージボックスでOK押したあとに スリープさせてその間マウスポインタを砂時計にする処理で マウスポインタが砂時計になったりならなかったり(ほとんどならない) するのですが何故でしょうか。 必ず砂時計にする方法はありませんかね。 フォームにCommand1が一個の再現ケース Option Explicit Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private Sub Command1_Click() MsgBox "foo" Me.MousePointer = vbHourglass Sleep 3 * 1000 Me.MousePointer = vbNormal End Sub
878 :
877 :2005/03/28(月) 01:48:00
>>877 マウスでOKクリックしないで
キーボードで操作するときは問題ないみたいです。
Sleepする前にDoEventsしたら?
>>877 Sleep 3 * 1000
の間にDoEventsをもぐりこませる。ループでまわすしかないかなぁ・・・
881 :
877 :2005/03/28(月) 02:20:51
>>879 >>880 ありがとうございます。
これ以外なさそうであれば880さんの方式でいこうかと思います。
本題とはずれますが、このループの間にフォームを閉じると
フォームのマウスポインターを後からいじるので(?)プロセスが残りますよね。
どうすればいいかご存知でしょうか。
Private Sub Form_Load() Dim i As Double: AutoRedraw = True: FontSize = 30 ScaleMode = vbPixels: i = Timer: Show Do While Not Abs(Timer - i) > 0.4: DoEvents: Loop Print Chr(-32054): i = Timer Do While Not Abs(Timer - i) > 0.4: DoEvents: Loop CurrentX = 40: CurrentY = 0: Print Chr(-32023) i = Timer Do While Not Abs(Timer - i) > 0.4: DoEvents: Loop CurrentX = 73: CurrentY = 0: Print Chr(-32037) End Sub
884 :
デフォルトの名無しさん :2005/03/28(月) 11:48:56
ど忘れしたんで教えてください。 親EXEから子EXEを立ちあげた時、子EXEの画面をモーダルモードで 開く方法、確かAPIであったとおもうんで、思い出させてくれませんか?
同期か非同期かの違いのことか?
ttp://dobon.net/vb/dotnet/process/openfile.html 'メモ帳を起動して終了まで待機する
Shell("notepad.exe", AppWinStyle.NormalFocus, True)
MsgBox("終了。")
[VB.NET]
System.Diagnostics.Process.Start("C:\test.txt")
[C#]
System.Diagnostics.Process.Start(@"C:\test.txt");
887 :
877 :2005/03/28(月) 13:34:03
>>882 >>883 そちらのソースでも試しましたが、
「ぬ」が表示された直後などでフォームを閉じるとフォームが再度ロードされますよね。
さらに、同じ処理をCommand1_Click()内に移して同様に
「ぬ」が表示された直後などでフォームを閉じれば見た目には
終了してプロセスだけが残ります。
いかがにすればよいでしょう。
KeyPressイベントで、入力されたのがEnterキーなら フォーカスを移動するという動作をさせたいのですが EnterキーはASCIIコードで表せないっぽいのです。 この場合どういう方法を取れば上手くいきましょうや?
>>887 Command1_Click()の先頭で細工(実行中かどうかを判定)するしかないのでは?
890 :
877 :2005/03/28(月) 15:05:47
>>889 フォームがあるかないかとか判定するイメージですかね。
私にはむずかしそうなので
とりあえずフォームのアンロードで死ぬようにしようと思いますが
なにか問題ありそうでしょうか。
Private Sub Form_Unload(Cancel As Integer)
End
End Sub
>>890 サブクラス化とかDLLのインポートをやってなければ
そう気にすることも無いと思う。
念のためにアプリを終了した後にタスクマネージャで
プロセスが残っていないか確認した方がいいと思うよ。
892 :
877 :2005/03/28(月) 15:42:30
>>891 ありがとうございます。その方向でやってみます。
ところで
>>877 の最初の問題は
Me.MousePointer = vbHourglassの処理が
完全に終わる前に制御を戻してくるところにあったように思われますが
なかなか痒いところに手が届かないものですね。
895 :
877 :2005/03/28(月) 19:37:36
さて、いまさら大笑いなのですが、
実際にインプリメントしてみて気が付きました。
#いろいろ議論した挙句で申し訳ないですが
DoEventsを入れることで、ユーザーがアプリケーションを操作できるようになってしまい、
スリープを入れた意味が失われてしまいました。
果たして
>>877 に立ち返ってなにか方策はありませんでしょうか。
メッセージボックスでOKをクリックした後に
ユーザがアプリケーションを操作できず、
マウスポインタが砂時計になるような。
>>894 上手くいきました、ありがとうございます。
vbKeyReturn でググったらそのものズバリの
ページも見つかりました。
898 :
877 :2005/03/28(月) 21:01:04
>>897 ありがとうございます。
そちらでの結論としても
DoEventsを入れましょうということのようですが、
>ユーザがアプリケーションを操作できず
というのは無理そうですね。。。
と、ここまで書いていてちょっと思いついて試してみたら次のコードで
うまく動作しました。
しかし端末スペックなど環境に依存するかもしれず心配ですが、
どうでしょうね。手がなければこれで進めようとも思いますが。(心配だ)
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Command1_Click()
Me.MousePointer = vbHourglass 'ここを一ステップ前に
MsgBox "foo"
Sleep 3 * 1000
Me.MousePointer = vbNormal
End Sub
899 :
877 :2005/03/28(月) 21:11:00
>>898 自己レスでごめんなさい。
実験したところ、どうやらメッセージボックスでは必ずマウスポインタは矢印に戻るようです。
つまり、
Me.MousePointer = vbHourglassが早く処理されて
メッセージボックス表示以前に砂時計になってしまっても、
表示上は気が付かない。
Me.MousePointer = vbHourglassが遅く処理されても
メッセージボックスをいじる間には砂時計になっている。
ということで今回の件に限定すれば解決できそうです。
お騒がせしました。 & ありがとうございました。
>>884 忘れたのと分からないのを混同しないでください。
Private Sub Form_Load() Dim i As Double: Show: ScaleMode = vbPixels: FontSize = 30 Do: DoEvents: ForeColor = QBColor(Rnd * 15) CurrentX = 0: CurrentY = 0: i = Timer Do While Not Abs(Timer - i) > 0.05: DoEvents: Loop Print Chr(-32054): i = Timer: ForeColor = QBColor(Rnd * 15) Do While Not Abs(Timer - i) > 0.05: DoEvents: Loop CurrentX = 40: CurrentY = 0: Print Chr(-32023) i = Timer: ForeColor = QBColor(Rnd * 15) Do While Not Abs(Timer - i) > 0.05: DoEvents: Loop CurrentX = 73: CurrentY = 0: Print Chr(-32037): Loop End Sub
902 :
877 :2005/03/28(月) 21:55:29
#これで最後。
>>898 でもダメパターンありました。
(原因は特定できませんが)
さらに以下のようにおまじないをしてうまくいきました。
Me.Enabled = False
Screen.MousePointer = vbHourglass
これで気が付いたこと
>ユーザがアプリケーションを操作できず
→これEnabled = Falseで良かっただけでしたね。
日に日に衰えている気分です。
もう、次につまづいたらUIを変更します。
複数のテキストボックスを並べた入力フォームを作成しているのですが フォーカス移動した際に移動先のテキストボックスに表示されている 文字列が選択された状態にするにはどうすれば良いでしょうか?
>>904 う~ん。
ぱっと思いついたもの
移動先のテキストボックスがtxtBoxとして、gotfocusのところに
txtBox.SelStart = 0
txtBox.SelLength = Len(txtBox.Text)
じゃ、駄目かなぁ。
906 :
904 :2005/03/29(火) 14:15:38
907 :
デフォルトの名無しさん :2005/03/29(火) 14:39:37
開発環境 Win2K 、VB6.0 UIから入力された文字をVBReportを用いて印刷しています。 帳票には、正方形のマス目があり一文字が1マスに印刷されます。 濁点も一マスに出力する必要があります。 しかし、例えば UIにて「が」と入力すると帳票には「か」と「゛」 がそれぞれ1マスずつに出力させたいのですが 「が」と1マスに印刷されてしまいます。 「が」を「か」と「゛」に分ける際には 皆さんはどのような方法を用いているのでしょうか? それとも、上記の文字編集を行うにはUIからの入力の際には カナキーからに限定となるのでしょうか?
if いまの文字=「が」 then いまの文字=「か」 次に文字を追加 「゛」 end if こんなの?
909 :
デフォルトの名無しさん :2005/03/29(火) 15:20:40
907です。
>>908 ご返答ありがとうございます。
「が」にかかわらず、全ての濁音で文字列編集したいのです。
if 今の文字列 =「濁点ありの文字 (例:ば)」 then
編集後文字列 = 「濁点をとった文字(例:は)] & "゛"
end if
こんな感じのことをしたいです。
913 :
デフォルトの名無しさん :2005/03/29(火) 18:41:18
質問よろしいでしょうか? 現在、VB6.0で業務アプリを作っているのですが VBからファイルをCDに焼きたいのです。 XPなら標準で焼き機能がついているので なんとかできると思うのですが、今回はWINDOWS2000 なのです。 VBで処理することは不可能でしょうか?。。。 回答よろしくお願い致します。m(_ _)m
不可能ではありません
>>913 OCX買えば?
自作で焼くプログラム組むのはきついぞ
そうですよね、、、 明日上司と相談してみることにします。。。 ありがとうございました。 (´・ω・)
>>913 cdrecordみたいなコマンドラインで動作するのをshellか何かで呼んでやるのはどう?
918 :
913 :2005/03/29(火) 22:10:30
>>917 楽そうでいいですね
お客が焼きソフトが入ってるパソコンを買うなら
可能ですけどどうなんでしょう、
明日聞いてみます
919 :
質問 :2005/03/30(水) 12:06:00
あるコントロールにフォーカスがSetされているかを知る プロパティとかは存在しますでしょうか?
920 :
デフォルトの名無しさん :2005/03/30(水) 12:23:07
おしえてください。VBで作成するEXEをパラメタ式起動する仕組みで 作りたいのですが、どうすればよいですか?
>>919 Form.ActiveControl?
>>919 ないと思う。GotFocusとLostFocusイベントじゃいけないの?
>>920 起動したときのコマンドラインはCommand関数で取得することができます。
既出でしたね。923は無視してください。
925 :
920 :2005/03/30(水) 14:01:16
助かりました。ありがとうございます。
926 :
919 :2005/03/30(水) 15:13:35
927 :
質問 :2005/03/30(水) 15:55:31
Form1からForm2.Showした際に Form1上のText1.Textを Form2上のLabel2.Captionに 送る方法を教えて下さい。 Form1 [コード] Form2.Show Label2.Caption = Text1.Text ↑ではエラーが出てしまいます。
釣られないぞ
>>927 じゃ俺が釣られまする…
form2.label2.caption = Text1.Text
ですよ。
ってかネタだよね?
930 :
927 :2005/03/30(水) 16:16:33
>>928 ,929
すみません、真面目に質問したのです。
参考書にはフォーム間での値のやり取りは
載っていなかったので…それはともかく
上手く動きました、ありがとうございます。
Private Sub Text1_GotFocus() Text2.SetFocus End Sub Private Sub Text2_GotFocus() Text1.SetFocus End Sub ピコピコピコピコピコピコピコピコピコピ!!
(´-`).。oO(春だなぁ…)
↑おまえは一生冬www
934 :
質問 :2005/03/31(木) 09:05:31
VBプログラムからOutlookExpressを起動したいと考えています ・OutlookExpressのメッセージ作成フォームが ・宛先のメールアドレスが入力された状態で ・アクティブな状態で 起動されるにはどうすれば良いのでしょうか。 Private Sub cmdMail_Click() Dim FuncRet As Variant On Error Resume Next FuncRet = Shell("c:\Program Files\Outlook Express\msimn.exe") If FuncRet = 0 Then MsgBox "メールソフトを起動出来ませんでした。" End If End Sub ↑をどう変えれば上手く行きますか?
>>934 google shellexecute mailto
VB6を使ってアプリケーションの開発を行っているのですが、 作成したアプリケーションの処理速度を向上させるための チューニングを行おうと思っています。(ソースの改造も含めて) どのモジュールがどれぐらいの処理時間を費しているかという プロファイルを取り、それを元にチューニングを行うロジックを 特定しようと思ったのですが、こう言ったプロファイル情報は どのようにして採取すればよいのでしょうか?
>>938 俺のマネをしたようだが君のは見当違い。
質問させて頂いても宜しいでしょうか? TextBoxから金額の入力を受け付ける処理なんですが …えーと、お手元にリアル電卓が有ればそれを御覧下さい その電卓みたいな入力方法を再現したいのです。 標準の関数で用意されていても良さそうなものですが 見当たりません…どうか御助力願います。 なにとぞよろしくおねがいいたします。
>>941 TextBoxを使わない方向で作ればいいじゃないか
943 :
941 :2005/03/31(木) 12:07:45
>>942 申し訳ありません、TextBoxを使わない方向
というのが分かりません。リアル電卓的な
入力を実現するコントロールが存在するという
ことでしょうか?それとも、Format関数を使って
一括変換するということでしょうか?
後者の方法の場合、操作感が求めるものと全く
違ってしまうので避けたいと考えています。
>>943 ピクチャーボックスでもなんでも使って自作すりゃいいでしょ?
フォームに「テンキーコントロール」を貼り付けて入力させたいのか? 「電卓InputBox関数」が欲しいのか? どちらにしろ、自分で作れ。
946 :
941 :2005/03/31(木) 12:27:09
ウハ!とんだ書き間違いをしておりました 入力そのものはキーボードで行います TextBoxのカーソル位置と表示法をリアル電卓 的に再現したいというつもりだったのです。 恐らく>945氏の仰る「電卓InputBox関数」 というモノが求めるものだと思います。 ググって探してみます、本当に申し訳あり ません…
947 :
デフォルトの名無しさん :2005/03/31(木) 12:40:58
……電卓にカーソルなんてあったっけ?
>>939 それは、VBもしくは、Windows上で作ったプログラムのモジュール単位での
実行時間のプロファイルを採取する仕組みが標準では存在しないという事ですか?
Unix系だと、コンパイル、リンク時にプロファイルを採取する為のオプションを付けて
ロードモジュールを作成し、実行すると、結構詳しいデータが取れるんですが。
949 :
941 :2005/03/31(木) 12:53:36
>947 入力は常に最下位桁でのみ受け付けて 途中の桁の値を書き換えたり挿入したり 出来無いってのをやりたいのです。 InputBox関数はちょっと違ったようです。 数字の表示はあくまでもTextBox上にされるように したいので…KeyPressイベントでIf文を使ってやる しかないようですね。スレ汚し御詫び申し上げます。
プロセスAのメモリ領域から、アドレスXの値を変数に格納したいのですが どのようにすれば実現できるでしょうか?
>>949 常に最後の文字の後ろにカーソルがいくように作る。
TextBox.SelStart
TextBox.SelLength
>>937 誰かにレビューしてもらって見当つけて直すのが効率的では?
ループ
ネットワークへの接続
SQL
ファイル操作
描画
そんなところを中心に
954 :
941 :2005/03/31(木) 15:12:57
>>952 ありがとうございます
参考にさせて頂きます
Fomat関数で、小数点以下の桁がない場合だけ小数点を表示しない書式はありますか? 場合分けするしかないですか?
>>953 レスTHXです。
その「誰かにレビューしてもらって見当をつける」と言う部分を、
定量的に計測する方法がVBもしくは、Windowsに備わって
いるのであれば、それを利用してあたりをつけようかなと思った
訳です。
vbsでoracleにアクセスするスクリプトを作りたいのですが こういう場合はどういうミドルウェアを使うのが常套手段ですか? oo4oですか?
>>956 いいたいことがまだ伝わらないようですな
VB6SP5です。 クラスモジュールでコンストラクタというか、プロパティをプライベートの状態 で初期値設定するのは、どのようにすればよいのでしょうか? それと、プロシージャ内でstatic変数を宣言したときの初期化はどのようにする のでしょうか? お願いします。
>>958 伝わっていないようです。
あ、もしかして、そういうことが調べたければ
そういうことを調べる仕組みを
自分で作れって言う意味ですか?
>>959 Initialize
Static変数を任意の値で初期化したいってのはあきらめろ
>>962 ありがとうございます。
staticをintegerで宣言した場合、初期値は0に設定されると言う事は保障され
ているのでしょうか?本当は-1からスタートしたかったのですが…。
>>963 MSDNのStatic ステートメントの説明には
変数の初期化時には、数値変数は 0 に、可変長文字列は長さ
0 の文字列 ("") に初期化され、固定長文字列には 0 が埋められます。
と書かれている
965 :
934 :2005/03/31(木) 21:08:28
>>936 ググった先にそれらしい記事が有りました、
標準モジュールに記述される内容が難しくて
理解は出来ませんが動かすことは出来ました。
どうもありがとうございます。
>935
ご不快に思われたならお詫びします。 ごぬんなさい
後学の為にも、僕の書き込みの何所が
悪かったのかをご指摘下されば幸いです。
>>964 ありがとうございました。
クラスの方は、初期処理するメソッドを書こうと思います。
お世話になりました。
>>961 自作するんじゃないかな。
でも結局遅い箇所がみつかってもそれが妥当な遅さか改善可能かは
分かる人が見極めるんだろうから、
最初から分かる人にレビューさせるのが手っ取り早い。
>>965 スパムを送るのには使わせないよう頼みます。
>>970 速度気にするプログラムはそもそもVB6のみでのプログラムはしない。
>>971 学生か・・・
実際PGの仕事に就いたらそう単純でないことにすぐ気付くよ。
>>971 VBは速度を要求する場面に向かないけど、
だからといって速度をまったく気にしなくていい訳ではないよ。
業務システムならアフォなSQL投げてたりそもそもストアドが糞だったりと VB以外の部分がボトルネックになってるケースも多々。 ms単位の精度が要件となるなら、Win自体が向いてないような。
>>970 VS 2005 Team System がリリースされるまで我慢するのじゃ。
かなり強力なプロファイラがついてくるよ。
>>975 SQL Server にはプロファイラついてるね。
978 :
デフォルトの名無しさん :皇紀2665/04/01(金) 16:56:29
Mscommを使い、シリアル通信の受信処理でDo Loopで回して規定バイト数受信したら Do Loopを抜ける処理があるのですが、キャンセルボタンが押されてもDo Loop処理を終わらせたい場合は どのようにしたら良いですか? 良い知恵をご教授ください。
>>978 こんな感じ。 ほかにもあるかも。
キーが押されたらパブリック変数を変える。Loopの中でその変数をチェックする。
もしくは、APIでリアルタイムキースキャン。
980 :
デフォルトの名無しさん :皇紀2665/04/01(金) 17:56:48
>>979 回答有難うございます。
データ受信処理をしている関数の中の数箇所にパブリック変数をおいて、
変数の値が変ったらexit subで処理を抜ける・・・ってことですよね?
やってみます。
981 :
デフォルトの名無しさん :皇紀2665/04/01(金) 18:49:00
>>979 の言うようにやるにはループの中にDoEventsをかます必要がある。
が、それ以前にループで待機する、ってやり方自体がどうかと思うぞ。
そういう処理をしたい場合は、考え方を変えた方がいいと思う。
■条件を満たすまで待機
ではなく、
■一定時間ごとに条件を満たしているかチェックして、満たしていたら
「何かいいこと」をする。あるいはイベントを生成する。
982 :
978 :皇紀2665/04/01(金) 19:04:21
>>981 なるほど勉強になります。
自分でも融通が利かない処理だなと反省しております。
これからの参考にさせてもらいます。
983 :
972 :int 2ch =05/04/01(金) 23:32:10
ま、俺が言いたいのは、開発言語を自由に選べる場面は 意外に少ないよ、ということでした。
986 :
デフォルトの名無しさん :int 2ch =05/04/02(土) 00:56:25
楊蓄才なあ。。
>>986 そういうことは質問に答えられたら書こうね。
ウチのチームにはVBしか使えないって人が多いです… リーダーの人ゴメンナサイ、痒い所に手が届かなくてゴメンナサイ。
VB.NETすごくいいよ
>>988 しかも、VBしか使えないくせに、VBのスキルがたいしたことなかったりしない?
>>990 まさにそれ!
リーダーの人が日に日にやつれていく…
990、991 vbしか知らないとか人の批判してるけど、お前らも社会からみたらたいした事ないからw 管理する人&経営する人の大変さが解るぐらい早く大人になれよw
>>992 なんで怒られるの?なんでwとか使うの?
VBしか出来ないことは悪く言ってないよ。
VB出来るって言って給料受け取ってるのに
仕事仕上げられない人を批判したら駄目?
同じ給料しか貰ってないのに尻拭いさせられ
てるんだから文句の一つも言いたくなるよ。
自分が完璧じゃなかったら他人の批判も出来ない
というなら、誰も何も言えなくなっちゃうでしょう?
貴方がどれだけ凄い能力をお持ちか知らないけど、
よく知りもし無いくせに上から物を言わないでよ。
ここは釣堀じゃないんで ついでに言えば使えないプログラマを非難する場所でもないんで
スレ違う毎日が過ぎてゆくけど お互いの気持ちはいつも そばに居るよ
>>995 まっ、喧嘩するほど仲がいいというやつですね。
>>992 根拠がどこにも書かれていないようですが?
だれか新スレたてれ!!
999 :
1 :int 2ch =05/04/02(土) 12:55:52
1000 :
1 :int 2ch =05/04/02(土) 12:59:21
Form1.Text1.Text = 1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。