このスレッドはVBについて、
他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
VB使いが優しくコメントを返しますが、
お礼はVBの布教はしなくてよいので、初心者の救済をお願いします。
2 :
デフォルトの名無しさん:2006/12/08(金) 19:53:51
2げと☆
Shell.Windows()でIEを一覧できるように、Excel.Applicationを一覧できません?
GetObject()だと最初のものしか取れない。
>>5 最初のオブジェクトを取得後、やりたい事を終えて終了させた
後にもう一度GetObjectやるとかしかおもいつかないなぁ。
それじゃぁだめなの?
>5
複数起動の場合は、難しいね。
普通にはできないと思う。
なんつーか、あれだな、馬鹿なふりをしているつもりの本物の馬鹿、
キチガイのふりをしているつもりの本物のキチガイが必ず自分を隔離するような
スレを自分で立てるのは法則か何かだろうか?w
そして程なく、スレが思っているほど繁盛しないことに気づいて放棄することになるんだなw
こういう無価値な書き込みをするのは法則か何かだろうか?
10 :
5:2006/12/12(火) 02:42:47
KB190985を見つけましたが、ちんぷんかんぷんです。
見よう見まねで、出来るかも、と、やってみましたが、
手順
1.OffCntrDisp という名前で新しい MFC ActiveX ControlWizard アプリケーションを作成します。
2.以下のメンバ変数を COleControl 派生クラスに追加します。
のステップ2で早、躓きました。追加先のCOleControl 派生クラスはどこ?
これをVBに焼き直したり、もっと簡単にできません?
>>5 MFCというか、C++じゃん。
OffCntrDispCtl.hというヘッダファイルに
class COffCntrDispCtrl : public COleControl
として宣言してあるけど、COMのような実装をVBでやるのは絶対無理。
VBとエクセルで何がしたいのか、教えてくれたほうが解決案が模索できそう。
>>8 オレはお前の事嫌いじゃないぜ?
つ WM_GETOBJECT
13 :
5:2006/12/14(木) 09:40:40
>>11 なんとかコンパイルできました。ありがと。
やりたいことは、最初に言ったように、
|Shell.Windows()でIEを一覧できるように、Excel.Applicationを一覧できません?
なんです。
>>12 調べてみましたが、関係がよく分りません。
うぅ。もう酔うたよぅ。
oracleならブロブ型のデータとかじゃまいか?
16 :
14:2006/12/22(金) 08:53:01
>>16 新しいADOならあるかもしれないけど、しらない。
MSのサンプル資料なんかでもよく見かけるけど、単純にトランザクションを
はるタイミングで変数にフラグをセットしてる。
自分でDBクラスつくって、IsTransとか内部にプロパティを作ってはどうか。
Begin時にTrueでCommit、Rollback時にFalseで。
18 :
14:2006/12/23(土) 08:50:56
>>17 とりあえずロールバックしておくことにします。
ありがとうございました。
19 :
デフォルトの名無しさん:2006/12/24(日) 12:09:26
VB6.0で開発をしているんですが、コンパイルというのは
【メニューバー】 → 【デバック】 → 【コンパイル】という順でOK
なのですか?何か一瞬なので本当にコンパイルされたかどうか分からないので。
コンパイルをすると、***.vbr?とかいうファイルは更新されるのですが、
***.exeは更新時間が変わりません。exeも更新するにはどうしたら良いのでしょうか?
>>19 【メニューバー】→【ファイル】→【〜.exeの作成】
VBはVCみたいに警告とかないし、リンクもないし、すぐにコンパイル終わる。
>>20 リンクはある
みたいな。
薀蓄垂れるんなら知ってからにしような。
22 :
20:2006/12/24(日) 16:56:12
>>21 あ、そうなの。
それって、参照設定のことをいってる?
VBにヘッダファイルないし、includeないし、
コンパイル時にリンクの更新なんてやってるの?
>>22 一旦オブジェクトファイル作ってリンクしてるんですよ
24 :
20:2006/12/24(日) 17:33:03
>>23 無知でスマソ。
オブジェクトファイルはわかる。
exeを作る際に、ソースを実行体にまとめてるんだろうけど
ちょっと誤解してた。
VBでつくったexeだけじゃランタイムないと実行できないから、
Cとコンパイル時のリンクのレベルが違うだけで、VBだってリンクするね。
ランタイムありきでリンクしてるから、コンパイルが速いという事でFA?
>>24 Cのコンパイルを基準にするのなら
ソースコード解析するのにやたら手間取るのがCで、VBは構文が単純だから手間取らない
程度だと思う
VB6の構文って曖昧さが無いんだよね
26 :
debu:2006/12/26(火) 11:34:45
VB6のプロフェッショナルエディションなんですが、string型の変数に
sql文を代入していく処理で、250文字以上が格納できません。
試しに
Dim s As String
s = "1234567890〜"
上記のように、string型の変数 s に300文字を入れてみたのですが、
ウオッチ式でみるとやはり250文字しか入っていません。
これはどうしたことでしょう??? どなたか教えてください!
>>26 ウォッチ式に表示できないだけで、ちゃんと格納されてる。
イミディエイトに
?s
と打てば、ある程度はわかるがそこも表示制限があるから
一番いいのは、ログみたいにテキストに出力すれば、本当に
格納されているデータがわかる。
28 :
debu:2006/12/26(火) 12:22:53
ありがとうございました!
大変助かりました。
下の変数宣言でエラー出るのですが何処がいけないのでしょうか。
Dim cnt As Integer;
>>29 VBは改行符いらない。
セミコロン「;」がじゃま。
どうしても改行符いれたいときは
コロン「:」にする。
…行終端文字?
Cは";"で、BASIC系は昔ッからchr$(13)またはchr$(11)+chr$(13)だです
>>30 セミコロンでしたか。ありがとうございます。
33 :
14:2006/12/28(木) 20:28:58
ツリービューでノードを移動するときにドロップ位置に
横バーを出すにはどうしたらよいでしょうか?
>>33 ツリービューでノードのドラッグ&ドロップをしている事までは
読み取れた。
その後の横バーが何かわからん。
参考までにDragOverイベントがドラッグ中に発生してるからそこで
なにかしらの処理ができるんじゃないの?
35 :
14:2006/12/29(金) 10:53:34
>>34 これからどこにドロップするよーという目印になるバーです。
>>35 オレ、エスパーかもしれん。わかった。
ノードの順番を入れ替えようとした場合にどこに割り込ませるか
ノードの下にバーを表示したいんだな。
簡単に済ませるなら、DragOverイベントで
Set TreeView1.DropHighlight = TreeView1.HitTest(x, y)
として、選択状態にでもさせる。
もしくはあらかじめ画面にイメージコントロールを
用意しておいて、同イベントでノードの下にでも表示させる。
もっと本格的にやりたいなら、それこそツリービューをサブクラス化して
メッセージ:CDDS_ITEMPOSTPAINTのときにカスタム描画する。
37 :
14:2006/12/29(金) 11:51:16
>>36 ありがとー
なるほど。これってコントロールの機能じゃないのですね?
自分でやらないといけないのですね
あけおめ。
39 :
デフォルトの名無しさん:2007/01/16(火) 05:35:50
違うフォームのサブルーチンを呼ぶにはどうしたらよいのでしょうか?
>>39 コーディングしなきゃいけない
コードを既に書いてるならうp
うpできないなら再現可能なコードにしてうp
44 :
42:2007/01/30(火) 13:25:52
45 :
デフォルトの名無しさん:2007/03/05(月) 01:02:19
こんばんは。
Newで作成した配列などは、破棄するにはどうすればよいのでしょうか?
いわゆる、ググッてみたんですが、なかなかわかりません。
よろしくお願いします。
>>45 vb6はnewで配列を作れません
環境をお確かめの上、正しいスレにご投稿くださいますよう申し上げます
>>46 お前のスキルでのたまってるんじゃねぇよ。
48 :
デフォルトの名無しさん:2007/03/05(月) 09:21:22
>>46 知りませんでした。
MediaDetを利用するサンプルを見ていたら、
Dim Det As New MediaDet
とあったので、使った後に破棄するのはどうするのか?と思い書き込みました。
>>48 vb6では参照カウンタ方式によるGCが働いているので、明示的に破棄する必要はありません(できません)
仮にそのMediaDetオブジェクトが(オブジェクト自身ではない)何かしらのデータの破棄を要求しているのなら、
専用のメソッドが存在するはずです。
50 :
デフォルトの名無しさん:2007/03/05(月) 09:58:12
>>49 そうですか。
Function内で使用したいと思っていたので、何度もNewで定義していったときに
どんどんメモリを食っていくのでは?と思っていました。
ありがとうございました。
>明示的に破棄する必要はありません(できません)
先生、いかにVBでも明示的に破棄できないと困ります><
>>51 VBの内部はCOMによって実装されている部分が大半だから、CoCreateInstance()付近からAPI探していけ
ん、IUnknown::Release()呼ぶだけでいいのか?
COMわかんね('A`
54 :
デフォルトの名無しさん:2007/03/05(月) 12:11:38
VB6.0において、質問があります。
あるバイナリファイルがあり、その先頭4バイトには数値が入っています。
この4バイトをプログラムから上書きしたいと考えています。
そこで以下のようなコードを書きました。
Open ".\hoge.bin" For Binary As #1
Write #1, value
Close #1
これを実行しますと、Writeのところでエラーが出てしまいます。
おそらく、初歩的な間違いのような予感がするのですが、
どのようにすれば良いがご存知であれば教えて頂けないでしょうか。
よろしくお願いします。
>>54 > 上書きしたいと考えています。
何を?
何でもいいなら
open ".\hoge.bin" for binary as 1
put #1, 1, clng(rnd)
close 1
でおk
56 :
54:2007/03/05(月) 13:06:24
>>55 神速の回答ありがとうございます。
できました!
>>51 VBの参照カウンタ型GCは、.NETのGCみたく参照が無くなっていつか消えるとかいうもの違って、
参照が消えた瞬間に消される。もちろん他に参照がコピーされていない前提であるが、例えば
Sub hoge
dim xx as OBJ
Set xx = New Obj
:
End Sub でスパッと消える
さらに、途中でNothingや他の参照をぶち込んでもその時点でスパッと消える
58 :
デフォルトの名無しさん:2007/03/05(月) 13:35:46
ReleaseとかCloseあるならやって
そのあとNothingぶちこんだらカウンタが消えていくと思ってたが・・・
実際の所どうなんだ・・・?
>>57でFA?
>>57 ありがとうございます
つまり、参照先のアドレスが変わるタイミングで消えるという事ですね
NOTHINGを指定する事とはVB的なぬるぽですね
つまり明示的に破棄できませんといった人はウソつきですか?
わかりません><
62 :
デフォルトの名無しさん:2007/03/05(月) 17:11:24
>>62 62さん、すみません
どのあたりが酷いのでしょうか
よければ、私にもわかるように教えてください><
64 :
デフォルトの名無しさん:2007/03/05(月) 17:30:59
>>63 参照先のアドレスが変わるタイミングで消えるという事
何故この解釈になった?
>>64 ありがとうございます
>途中でNothingや他の参照をぶち込んでもその時点でスパッと消える
と書いてありました
参照型の変数には「物」がはいっているはけではなくて、メモリにある「物」をさす
アドレスが入っていると思います。
他の参照をぶち込むというのは、参照先を変えるという事では
ないのでしょうか。
>64-65さん、教えてください><
67 :
デフォルトの名無しさん:2007/03/05(月) 17:42:17
>>66 いいから自分の書いた文章読み直して出直して来いカス
>>54の者ですが、また1つ質問をさせてください。
MouseDownイベントについてなのですが、
フォーム上に存在するコンポーネントを無視して、フォームのどこを
クリックしてもMouseDownイベントを拾いたいと思っています。
Form_MouseDownイベントは、フォームのMouseDownイベントは拾えます
が、ボタンやラベルの上でクリックすると、フォームのMouseDownイベ
ントを拾うことができません。
どなたかご存知でしょうか?
ご存知であれば教えて頂きたいと思います。
よろしくお願いします。
>>70 全てのコントロールのMouseDownイベントを拾ってゴリ押しすれば何とかなるんじゃない?
もしくはサブクラス化
それかフック
Spy++でも使ってみるよろし
72 :
70:2007/03/05(月) 19:14:27
>>71 やっぱりその手しかないですか…。
ウィンドウのほとんどをAPIコントロールが占めており、そのAPIコントロールの
ハンドルがDLLに渡されていてDLL側で制御されているため、イベントを付けられ
ないんですよね…。
もうちょっと調べてみます。
ありがとうございます!
>>72 試してないのでなんともいえないけど
VBControlExtender
を使えばいけそうな気もするが・・・
74 :
デフォルトの名無しさん:2007/03/06(火) 14:13:44
はじめまして
VB超初心者です。プログラムの経験はCOBOLで17年ほどあります。
会社にNT4.0 VB6SP3で作られたシステムがあります
普通はフォームもモジュールも同一フォルダーに作成するみたいなんですが、
このシステムはフォームと標準モジュール(クラスも)別フォルダーになっています。
それで、仕様書等が無いために、ソースから追っかけてみていますが、VB自体
よくわかっていないので、悩んでいます。
メニュー画面はランチャーのような階層状のメニュープログラムがあります
そこでは、FORM_LOAD()は走っていますが、メニューの中の別プログラムに
移った場合、呼ばれるプログラムにはFORM_LOAD()自体ありません。
このようなプログラムの解析をする場合呼ばれたプログラムの動きを追っかけて
行きたいのですが、どうすればよいのでしょうか?
ちなみに、ファンクションキーのイベントなんかは書かれているようです。
どなたかご教授下さい
>>74 >フォームと標準モジュール(クラスも)別フォルダー
これはvbpファイルで参照しているので、別フォルダーでも気にしなくておkです。
>メニューの中の別プログラムに
はっきりとは判らないのですが、もしかしたら、Mainがあるプロジェクトから
DLLないしActiveXのexeのプロジェクトに遷移しているかもしれませんね。
遷移先の別プログラム(DLL もしくはActiveXExe)もVBで書かれている場合、
そのプロジェクトをVSで立ち上げて一番最初に[実行]-[開始]をし、実行状態にします。
その後呼び元をF8キーでステップ実行していくと、別プロジェクトがDLL等の場合は
そのままステップ実行できます。
またブレークポイントを張ってそこで処理を止めることもできます。
はずしていたら、すみません。
76 :
デフォルトの名無しさん:2007/03/06(火) 14:54:51
>>75さん 74です
ありがとうございます。別のところにbasファイルがあって、そこにFORM_LOAD()
がありました。F8で追っかけてみたら、ありました。
これ、クラスとフォームは別々に開発してもOKなんですか?
なんども申し訳ありません。
よろしくお願いします。
>>76 別々というのが、ファイルを保存している先が別々という
意味では、問題ないです。
ただ、そのクラスとフォームがどのように依存しているのかは
流石にわからないので、勝手に片方の関数を変えたりすると
もう片方に影響が出るかもしれないですね。
78 :
デフォルトの名無しさん:2007/03/06(火) 16:51:36
>>78 お前のようなカスの出てくるところじゃないんだよ。
80 :
デフォルトの名無しさん:2007/03/07(水) 18:08:38
ある規則に従って、CheckBoxのチェックを入れたり、入れなかったりしたい
のですが、どのようなメソッドを使えばいいのか教えてください。
また、手動でCheckBoxのチェックを操作できないようにするには、
どの属性をどのように設定すればいいのかも教えてください。
以上、よろしくおながいします。
>>80 > CheckBoxのチェックを入れたり、入れなかったりしたい
Valueプロパティを調べろ
(ちなみに、チェックを入れるのと、チェックを外すの、な)
> チェックを操作できないようにする
Enableプロパティを調べろ
"無効な色"になるのがイヤなら、縁無しのピクチャボックスにつっこんでピクチャボックスのEnableプロパティを変えてみろ
(もしくはClickイベントで強引にユーザ入力を、無かったかのように見せかける)
82 :
80:2007/03/07(水) 23:40:46
>>81 >> > チェックを操作できないようにする
>> Enableプロパティを調べろ
>> "無効な色"になるのがイヤなら、縁無しのピクチャボックスにつっこんでピクチャボックスのEnableプロパティを変えてみろ
>> (もしくはClickイベントで強引にユーザ入力を、無かったかのように見せかける)
ありがとうございます。その方法が無難なようです。
ところが
>> > CheckBoxのチェックを入れたり、入れなかったりしたい
>> Valueプロパティを調べろ
こちらのほうはValueプロパティというのは無いようですが…
私ももうちょい調べてみようと思います。
>>82 もしかしてVB.NETか?
それならCheckedプロパティ
(VB.NETほとんど触って無いから、もっといい方法があるかもしれん)
84 :
80:2007/03/07(水) 23:52:31
>>83 ありがとうございます。VB.NETです。
そして最大の私の勘違いはメソッドの使い方でした。
てっきり
CheckBox1.Checked(True)
のような記述をするもんだと思い込んでましたが
CheckBox1.Checked = True
のような記述をするんですね!!
Cのプログラマが、にわかVBしてたもんで疑いもしませんでした。
これで今日は落ち着いて寝られます。
どうもありがとうございました。
85 :
デフォルトの名無しさん:2007/03/08(木) 12:57:18
それメソッドじゃねぇ・・・
プロパティだぜ・・・・
突っ込んでよかったのかな・・?
>>85 てっきりメソッドだと思った、と勘違いしてたんじゃないの?
スレ違いかもしれませんが
javaスクリプトでいう『document.ondblclick = sample;』
をvbスクリプトで同じことってできますか?
>>87 できます。
参考までにIEだとこんなカンジでしょうか。
Set ie=CreateObject("InternetExplorer.Application")
Set ie.Document.body.ondblclick=sample
sampleの型に寄るんじゃね?
>>88 本当だ!できました。
確かに"sample"では不十分な書き方でした。
それなのに丁寧に教えて下さってありがとうございました。&ごめんなさい
本当にくだらない事なのですか
formに設定した画像を動かすにはどうすればいいのでしょうか
form事態ではなく画像だけ動かしたいのです
何度もすみません。本当はWSHのスレへ質問するべきかもしれないのですが、、
なにぶんひどい素人なもので、空気的にできればこちらのスレで知恵をお貸し願えないものかと思っています。
IE上の以下のスクリプトを埋め込んだページから
"sample.xls"というエクセルファイルの"test1"というマクロを動かそうとしていますが、
うまくいきませんでした。
<SCRIPT LANGUAGE = "VBScript">
<!--
Sub CallXlMacro
Dim xlapp
Set xlApp = GetObject(, "Excel.Application")
Call xlApp.Run("sample.xls!test1")
Set xlapp = Nothing
End Sub
-->
</SCRIPT>
とりあえずCallXLMacroプロシージャを以下のようにしてみたところ、動作しましたので
プロシージャが呼び出されていることは確認できました。
Sub CallXlMacro
Msgbox "test"
End Sub
また、「Dim xlapp」〜「Set xlapp = Nothing」までを「test.vbs」として保存し、直接実行してみたところ、
test1マクロは呼び出されて動きました。(スクリプト使用時は、sample.xlsは必ず開いた状態で使用する前提でいます)
私の知識ではこれ以上進めなかったのですが、
問題はどの辺りにあるのかご教授願えませんでしょうか。
ちなみにtest1マクロそのものは、「Msgbox "testOK"」だけのものです。
よろしくお願いいたします。
IE上からだとセキュリティ的にまずいから動かないようになっているんだと思う。
94 :
92:2007/03/09(金) 00:12:32
>>93 確かに言われてみればその通りですね。
どうもありがとうございます。
>>91 本当にくだらないと思っている事を人任せにするのか?(#^ω^ おっ?
それ以前にプログラムの話したいならコード晒せ
無ければコードかけるくらい詳細に調べて書け
あと
>>1な
Option Explicit
Private pct As PictureBox
Private Sub Form_Load()
Dim i As Long
Set pct = Me.Controls.Add("VB.PictureBox", "pct")
With pct
Call .Move(0, 0, 32 * Screen.TwipsPerPixelX, 32 * Screen.TwipsPerPixelY)
.BackColor = 0
.ScaleMode = ScaleModeConstants.vbPixels
.AutoRedraw = True
End With
For i = 1 To 100
pct.PSet (Rnd * 32, Rnd * 32), Rnd * &HFFFFFF
Next
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Call Me.PaintPicture(pct.Image, X, Y)
End Sub
# formに、設定した画像を動かすにはどうすればいいのでしょうか
# form事態ではなく画像だけ動かしたいのです
こんなソースコードだけど、動いてるか?
97 :
91:2007/03/09(金) 18:04:22
色々すいませんでした
例えば
ボタンが押されたときにイメージを動かすのなら
Private Sub Command1_Click()
Image1.Move (Image1.Left), (Image1.Top + 100)
End Sub
でできるのですが、
フォームに背景として表示されている画像の動かし方が知りたいのですが、どんなに調べても見つけれなくて困っています
>>97 発想の転換で、フォームよりでかいイメージをフォームに貼り付けといて
それを背景とし、そのピクチャを動かすとかじゃ実現できないかな?
>>97 > 背景として表示されている
Formが自発的に背景として表示してるわけじゃないだろ?
もう少し具体的に状況を説明した上で議論なり質問なりしてくださいな
101 :
80:2007/03/10(土) 07:16:17
>>85-86 突っ込みOKでしょう。
叩かれて人は強くなる…
皆様のおかげです。
102 :
デフォルトの名無しさん:2007/03/11(日) 19:57:32
起動時にFormに乗ってるTextBoxのフォーカスをアクティブにしたいです
フォーカスをあやつる方法がわからないので教えてください
>>102 フォーカスやイベント等はVBやるときにいつもネックになるね。
フォームのコードイベント内でセットフォーカスメソッドを使えばいいけど
コントロールが表示される前にはフォーカスの指定ができないので
先にフォームをShowするか、あらかじめtab順序を設定するか、かな。
'先にShowする場合。
Private Sub Form_Load()
Me.Show
Me.Text1.SetFocus
End Sub
>>102 ・TabIndexを一番若くしておくとか
・無駄に一つだけタイマーを配置して、次のようにしてみるとか
Option Explicit
Private WithEvents Tmr As Timer
Private WithEvents Btn1 As CommandButton
Private WithEvents Btn2 As CommandButton
Private Sub Form_Load()
Set Tmr = Me.Controls.Add("VB.Timer", "Tmr")
Set Btn1 = Me.Controls.Add("VB.CommandButton", "Btn1")
Set Btn2 = Me.Controls.Add("VB.CommandButton", "Btn2")
With Tmr: .Interval = 1: .Enabled = True: End With
With Btn1: .Move 0, 0, 1000, 1000: .Caption = "Button1": .Visible = True: End With
With Btn2: .Move 0, 1000, 1000, 1000: .Caption = "Button2": .Visible = True: End With
End Sub
Private Sub Tmr_Timer()
Tmr.Enabled = False
'Call Btn1.SetFocus 'Button1にフォーカス
Call Btn2.SetFocus 'Button2にフォーカス
End Sub
105 :
102:2007/03/11(日) 20:24:40
106 :
103:2007/03/11(日) 20:54:17
話は変わるが、>104なんで、タイマー?
tab順はお互い「やっぱりな」と思うよね。でもタイマーは意外だった。
悪い意味じゃなくて、ちょっと興味があった。
いつもはイベントドリブンのように使ってるの?それとも、思いつき?
>>106 イベントとは呼び出し手続き上で、ワンショットなイベントを作りたいときによくやっている
イベントプロシージャの再帰呼び出しが怖いときなんか特に
108 :
103:2007/03/11(日) 21:04:52
>>107 ありがとう。納得した。
VBやってたら、イベント再帰しても目をつぶったりするからネw
訂正
>>107 > イベントとは呼び出し手続き上で、
# 別の呼び出し手続き上で、
>>108 すまんね
110 :
デフォルトの名無しさん:2007/03/12(月) 09:17:26
vbでhtmlを解析してデータベース化する、
なんかいいサンプルないですか?
「vb html 解析 データベース化」
でググったらそれらしいのがポツポツあるけど
112 :
デフォルトの名無しさん:2007/03/12(月) 11:00:56
VB初心者です
VB6です。スプレッドを使っています
スプレッドの行固定したいのと、行をダブルクリックしたときのイベントのとりかた教えてください
イベントとったあと、ダイアログも表示さしたいのですが。よろしくお願いします
>>112 グレープシティのやつね。
手元に環境がないからわからないけど、インストールした
ディレクトリにサンプルソースが付いてなかったっけ?
116 :
デフォルトの名無しさん:2007/03/15(木) 20:07:35
Dim Num As String * 256
の* 256ってどういう意味なんですか?
Numが256バイト分の固定長文字列という意味。
仮に
Dim Num As String * 1
とした場合はNumには1バイト以上文字が代入できません。
バイト×
文字長○
>>118 え?バイトの意味解ってる?
8ビット分の記憶容量という意味だけど。
文字長って意味解ってる??
Dim Num As String * 256
MsgBox LenB(Num)
121 :
デフォルトの名無しさん:2007/03/15(木) 21:29:03
122 :
デフォルトの名無しさん:2007/03/15(木) 21:35:51
>>118=
>>120 なんでお前のようなバカが一丁前に答えようとするかね?
VBでバイトが知りたきゃ、こうだろ・・・・。
Dim Num As String * 256
MsgBox LenB(StrConv(Num, vbFromUnicode))
>>122 それは格納されている文字の容量であって
VBが確保した変数の容量ではない
125 :
デフォルトの名無しさん:2007/03/15(木) 22:01:22
Numに0いれても256を返すよ?
126 :
デフォルトの名無しさん:2007/03/15(木) 22:09:52
>>117 ひらがなって2バイトだよね?*1にも"あ"が入るんだけど
わかりました。何バイトだろうが何ビットだろうが関係なく*1は1文字*256は256文字入るって事ですね
調べ方教えてくれてありがとう。
>>124 だから、vbFromなんだろ。F、R、O、M。
>>126 VBがメモリを食いつぶさないように気をつかってるんだろ。
お前のような奴のために。
>>118=
>>120=
>>124=
>>126 バカめ。
Dim Num AS string * 1
'1を返す。
MsgBox LenB(StrConv(Num, vbFromUnicode))
Num = "あ"
'2を返す。
MsgBox LenB(StrConv(Num, vbFromUnicode))
VBがお前のようなバカのために
メモリを食いつぶさないように気をつかってるの。
なんでお前のようなバカが一丁前に答えようとするかね?
「メモリを食いつぶさないように気をつかってる」
この意味がさっぱり分からん。
Sting*1が収納する文字によって8bitだったり16bitだったり
するとでも言いたいのだろうか?
*って掛けるって意味?
だから入れた文字のバイト数えたってしょうがないだろ
*1は1文字制限っていう決め事を言ってるだけなんだから
ってことか?どんどんわからなくなるw
129が数えているのは、「入れた文字をCP932に変換したときのバイト長」
dim nnnn as string * 数字
は格納バイトを示すんではなく
格納文字数を示してるんだろ
>>129 発端となったのは
>>116。
String * 256の意味を聞いている以上、それにStrConvで変換を施した上でどうなるかは関係ない(別問題)。
256文字分の固定長文字列を意味すると答えれば十分かつそれ以上の意味は無い。
中にどんな文字列が格納されていようと固定長なのだから、
116のNumはString * 256だから常に256 * 2で512バイトのメモリを使う。
それを示すために120はLenB(Num)を持ち出したのだろう。
>>128でFromと書いているが、LenB(StrConv(Num, vbFromUnicode))では、
中身をマルチバイト文字列(日本語環境のWindowsではShift_JISことCP932)に変換する。
これでは本来のNumの大きさが見えない。単にNumの内容をマルチバイト文字列で表したときのバイト数に過ぎなくなる。
>>119,121,127,128,129,131
まあ朽木は彫るべからず糞土の牆は塗るべからずって言うしな
耳の穴も口の穴も開いてるだけの木偶の坊には上出来の回答だよ
よくがんばった
*1は16ビットをあらわしてるのか
半角数字の1も文字の"あ"も16ビットなの?
なんで文字とバイトが混同されるのかわかんねぇ
文字は文字だ
文字コードを格納しているんじゃない、文字を格納しているんだ
昔を引きずるのもいいけど、ちゃんと前提条件示してからにしろよ
でもWindowsのメモ帳で保存してプロパティのディスク上のサイズを見ると 1 は1バイト あ は2バイトになってるぞ
ああそうかstringは文字しか入らないから1をいれても全角1になってるのかw
>>140 それは正にStrConvでvbFromUnicodeをやった状態。
NT系のメモ帳は保存時に文字コードを選べるぞ。
Unicodeを選べばみんな1文字2バイト(とも限らないが)。
いや1を入れても全角になってるんじゃなくて1が1バイト分入ってもう1バイト分は空が入ってるのかもしれん
なんでメモ帳出てきたの?
VBSには質問スレがないようですし、ココにはどちらにも精通されてる方が多いようなので
若干スレ違いとは思いますが、質問させてください。
ページを読み込んだ後、2秒後に"testOK"を表示させる為に
Dim lngWait
TestSetTime()
Sub TestSetTime()
If lngWait < 2000 then
setTimeout "TestSetTime()", 1000
lngWait = lngWait + 1000
Else
Msgbox "testOK"
End if
End Sub
以上のようなスクリプトを書いて保存し
CreateElement("script")でつくったスクリプトタグの
srcに指定し、appendChildで挿入したところ、
ページ表示後、2秒後に"testOK"のメッセージを出すことができました。
次に、これを直接スクリプトタグに書いたページを読み込んだところ
1度目の 「lngWait = lngWait + 1000」までは動くのですが
TestSetTime()が再帰呼び出しされず、"testOK"が表示されません。
私の乏しい知識では理由がわからないのですが、
おわかりになる方、是非ご教授下さい。よろしくお願いします。
VBのStringは
Dim aaaa as String * 2
と宣言した場合
aaaa = "1234"
と格納した場合、メモリ上には
" 1 2 3 4"
バイナリじゃ
20 31 20 32 20 33 20 34
と格納されるんじゃないの?
148 :
147:2007/03/16(金) 01:35:00
20 31 20 32 20 33 20 34
じゃなくて
00 31 00 32 00 33 00 34
かな
2文字分しか確保してないから3と4は代入時に切り捨てられるよ
でもmsgboxすると" 1 2"じゃなくて"12"なんだよな
>>147 内部表現を問題にするなら”本当の仕様書”を引っ張り上げないといけないから面倒
てか俺は知らない
で、俺の知ってる観測方法は byte() に代入か、StrPtr()で”文字列のポインタ”を拾ってそこからメモリを見る位だ
この適当な観測から
>>148は腐ってることが分かった
>>146 とりあえずコピペで状況再現できるの作ってみて?
>>151 こいつがこのスレで一番レベルが高そうだな
>>149 すまん、* 2 じゃなく * 4 だった
>>150 そうなるはず
>>151 実際検証して結果を出してから腐ってるかどうか判別したほうがいいんじゃない?
憶測だけで腐ってるか判断するんだね
0x0とか&HF0ってなんですか?
>>151 検証してやったよ。 APIのlstrlenを使って。
Dim s As String * 3,ss As String * 3
MsgBox lstrlen(s) :MsgBox lstrlen(ss)
この時点で変数sが初期化されていないので結果は0。
つまり、宣言時は何も確保されていない。
次に変数を初期化してバイト数を計測
s = vbNullString: ss = vbNullString
MsgBox lstrlen(s): MsgBox lstrlen(ss)
結果は共に3バイトを返す。よって、あの宣言は3バイトという意味。
最後に片方にVB規定のユニコードで全角と半角で3文字代入
s = "あいう": ss = "123"
MsgBox lstrlen(s): MsgBox lstrlen(ss)
結果はsが6バイト。ssが3バイト。
VBは変数に代入時に無言でコンバート処理を行うか、メモリ領域を拡張しているか
しているんじゃないの。
>>155 16進数と明示的に宣言している。
>>157 お前DLL呼び出すときに byval string が変換されるの知ってるか?
>>155 前者はCやJavaなどの16進数表現による整数リテラル
後者はVBやBASICなどのそれ
>>158 valでもrefでもanyでも宣言していいから、説明しろ。
何説明してほちいんでちゅか〜?
わからないなら、書き込むなよ、屑が。
(^A^)m9 pgrwwwwwww
byref string だとBSTRでUNICODEじかだっけか。
Shift-JISで漢字交じりの固定長レコードを読み書きするのにえらく苦労した記憶があるな。
>>157 文字を扱うAPIはUnicode版 (W)とマルチバイト版 (A)がある。
VBが無言でコンバートするのはDeclareで宣言した関数を呼び出すとき。
String型の引数・戻り値をマルチバイト文字列へ変換してから関数を呼び、その後再びUnicode文字列へ戻している。
それもあって普通はAliasを使ってA版のAPIを使うが、String以外なら変換はされないので
たとえばこうすると直接マルチバイト文字列へ変換せずにAPIへ文字列を渡せる。
Declare Function lstrlenA Lib "kernel32" (ByVal s As String) As Long
Declare Function lstrlenW Lib "kernel32" (ByVal s As Long) As Long
Sub Test()
Dim s As String
s = "あいうえおABC"
MsgBox lstrlenA(s) & " " & lstrlenW(StrPtr(s))
End Sub
しかし、そもそもlstrlenはメモリの大きさではなく、Cの文字列の長さを返す関数。
Cだと文字列の長さとは、ヌル文字の手前までの要素数。
(VBの文字列も実はヌル文字が後ろに付いている)
上のコードでs = "あA" & Chr$(0) & "いB"などととすれば違いがわかると思う。
あと、vbNullStringをString変数に代入しても初期化されるわけではない。
APIを使ってStringの中身をByte配列を写し取ってみればわかる。
Declare Sub MoveMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Sub Test()
Dim s As String * 1
Dim b(1) As Byte
s = vbNullString
Call MoveMemory(b(0), s, 2)
MsgBox Hex$(b(0)) & " " & Hex$(b(1))
End Sub
ピクチャーボックスの中にイメージを配置してピクチャーボックスに何か表示させると
イメージの前面に表示され、イメージが隠れてしまいます。
イメージのvisibleをFalse、Trueにしたりイメージを移動させると
イメージは表示されるのですが、イメージがあった箇所のピクチャーボックスに表示した部分が欠けてしまいます
イメージが隠れないようにピクチャーボックスに表示させたいのですが、どうすればいいいでしょうか
>>168 疑問点があるので逆質問
・ピクチャーボックスの中にイメージを配置とは?
・ピクチャーボックスに何か表示させるとは?
・イメージが隠れてしまうとは、背景食が見える状態?それ以外?
日本語で状況説明が難しいなら、再現できる環境とソースコードうpして
・ピクチャーボックスの中にイメージを配置とは?
イメージとピクチャーボックスを別々にフォーム上に配置すると
イメージとピクチャーボックスが重なった部分でイメージがピクチャーボックスの下に隠れてしまうので
イメージを切り取ってピクチャーボックス上で貼り付けました
・ピクチャーボックスに何か表示させるとは?
今はクリックしたときに線を描画したり塗りつぶした四角を描画したりしているのですが
それでイメージが隠れてしまいます
・イメージが隠れてしまうとは、背景食が見える状態?それ以外?
描画した線などで線の部分のイメージが見えなくなるという意味です
描画した線
イメージ
ピクチャーボックスの背景
上からこういう感じです
でもゲームの最強武器を知ってて早く使いたくてわくわくしながら最初からプレイしてる感じ
言ってる内容はわからなくてもプログラミングがなんだか楽しくなってくる効果はある、かな?w
173 :
デフォルトの名無しさん:2007/03/16(金) 22:10:59
ディストリビューション ウィザードでプログラムのインストールはできるのですが、
今度、プログラムのあるディレクトリに「tips」というディレクトリを作ってし、そこに
html文書を入れ、プログラムから呼び出したいと思っていて、そのようなインスト
ールプログラムを作成するのに試行錯誤しています。
ディストリビューション ウィザードで、プログラムと同じディレクトリに、別のディレ
クトリを作って、その中にhtml文書を納めるようなインストールプログラムはでき
るのでしょうか。
ただ単に「add」でhtml文書を加えると、ディレクトリができないし…・。
すみません。どなたか、アドバイスをお願いできますか。
174 :
デフォルトの名無しさん:2007/03/17(土) 01:35:59
>>173 [email protected],$(AppPath)\tips,,,3/16/07 3:17:37 AM,845,0.0.0.0
のようにAppPath)の後ろにディレクトリ名を入れると出来ることがわかりました。
175 :
デフォルトの名無しさん:2007/03/17(土) 22:25:19
'INETを使いたいのですが宣言の時点でエラーが出てしまいます
'何が間違ってるのでしょうか?
Dim inet1 As New Inet
---------------------------
Microsoft Visual Basic
---------------------------
コンパイル エラー:
New キーワードの使用法が不正です。
---------------------------
OK ヘルプ
---------------------------
'VB6SP6です
>>176 コンポーネントに追加していましたが
MSINET.OCXを参照設定するように変更したところエラーがでなくなりました
ありがとうございます
>>171 でも、しっかりした説明のおかげで不毛な罵り愛が終了しました。
GJだと思います。
179 :
デフォルトの名無しさん:2007/03/18(日) 11:52:42
どうすればTextboxの書き換えを出来ないようにできますか?
Text1.ReadOnly = Trueとしてもうまくいきません
181 :
179:2007/03/18(日) 11:58:29
> Text1.ReadOnly = Trueとしてもうまくいきません
・.NETにしか見えない
・「うまくいかない」ってだけ言うな
ユーザからの書き換えを不能にするのは Locked プロパティ
プログラム上から書き換えを不能にするのは、ロジックでカバー
>>182 書き換え不能になるのを確認できました
間違えてVB.NETの資料をみていたので頓珍漢なことを言ってしまいました
184 :
デフォルトの名無しさん:2007/03/18(日) 22:09:57
凄い板違いで、すまねえ。VBプログラマの方達よ。
コマンドプロンプトでのプログラミングについて、
最近興味わいたのだが、いい板しってるかい?
>>184 DOSでプログラミングはスレ違いだから要注意な。
あそこは16bitの本物のDOS用。せいぜいDOS互換ボックスまでだ。
186 :
デフォルトの名無しさん:2007/03/19(月) 22:23:23
子プロセスの標準出力をパイプしたいのですが、
CreatePipeの使い方が調べてもよくわかりません。
よいサンプルがあるページありませんでしょうか?
187 :
デフォルトの名無しさん:2007/03/19(月) 23:36:59
VBでCreatePipe使うタイミングってあるんだなぁ・・・
ざっくりと機能とかは知ってても使ったことがないや(;´∀`)
190 :
186:2007/03/20(火) 23:58:44
大変参考になりました
なんとか思った通りに処理できました
ありがとうございました
191 :
デフォルトの名無しさん:2007/03/22(木) 13:33:21
質問があります。
VB6.0なのですが、あるボタンのクリックイベントで、別のボタンのクリックイベントも
発生させたいのですが、どのようにしたら良いでしょうか?
C++BuilderのClick()メソッドみたいやつです。
よろしくおながいします。
VB6.0の場合は、単純にそのイベントをメソッドとして扱えるので、
たとえばCommand1というボタンがあるとしたら、呼びたい箇所で
Call Command1_Click
とやればおk。
194 :
デフォルトの名無しさん:2007/03/22(木) 21:07:01
ヤフオクのアカウント自動切換えツールって作れますか?
195 :
デフォルトの名無しさん:2007/03/22(木) 23:02:46
はじめまして
プログラ素人です
目標は精密機械(ex.デジカメなど)のプログラムを
理解できるレベルになりたいです
また、プログラミングの知識も
上辺だけでなく基礎がしっかりとしたものを得たいです
PC環境はwindowsヴィスタです
どの言語から学んでいくべきですかね?
よろしくお願いします
すません
ごばっくです
>>192 いやいや、ここはかっこつけて
Command1.Value = True
とやるもんですよ。
198 :
デフォルトの名無しさん:2007/03/23(金) 00:38:44
でヤフオクのログインソフトはどうやって作るの?
199 :
デフォルトの名無しさん:2007/03/23(金) 02:24:09
VB6.0で、コンポーネントの追加をしようとすると
ファイルが見つかりません。'C:\WINDOWS\system32\ieframe.dll\1'
とエラーがでるのですがどうしてですか?
200 :
199:2007/03/23(金) 03:51:51
直りました
201 :
デフォルトの名無しさん:2007/03/23(金) 12:41:21
不躾なんですが、VBでクリスタルレポートのプレビューを開くとき
最大化の状態で表示させたいのですが・・
まったくもって検討がつきません。
どなたか、わかりませんか?
202 :
デフォルトの名無しさん:2007/03/23(金) 15:25:42
ds
製作途中のプログラムでFORM1〜3まであったのですが、
プログラムを丸ごと違うフォルダに移動させ起動させたら
スタートアップが必要だとエラーがでて起動できず、
元のあった場所に移動させても同じエラーがでて起動できずフォルダの中身を見たら
FORM1だけ内容が変わっており起動できなくなっていました
FORM1の内容がかなり前の内容に変わっていたのでもしかしたら移動する際に前にバックアップに保存しておいたものの上にFORM1だけは上書きせずに他は上書きしてしまったのかもしれません
この消えてしまったFORM1をなんとか復元することはできないでしょうか?
205 :
デフォルトの名無しさん:2007/03/24(土) 17:33:15
もとのForm1が存在するならいけるけど
すでにHDDに存在しない場合復元ソフト使うくらいしか…・
というか、バージョン管理ソフト使えってwwww
VSSとかバージョン戻せたりするし
復元ソフトは使ってみたのですがformを消したわけではないからかスキャンしてもでてきませんでした
管理ソフトとかあるんですねこれから気をつけます
207 :
205:2007/03/24(土) 21:44:43
フォームが存在しているならプロジェクトをメモ帳とかで開いて修正する手があるよ
一か所だけじゃないけどそれで治った時もあった
バックアップとってやってみるのも手だね
208 :
デフォルトの名無しさん:2007/03/25(日) 21:04:57
209 :
208:2007/03/26(月) 00:30:07
210 :
デフォルトの名無しさん:2007/03/26(月) 19:17:47
VB6にはStringを数字に変換する関数はないんでしょうか?よろしくおねがいします
cint関数ではどうでしょう?
212 :
デフォルトの名無しさん:2007/03/26(月) 21:28:44
間違ってMSGBOXの無限ループを作ってしまいました
今IDEから実行してるのですがどうすれば止まりますか?
ソースを失いたくないです><
Ctrl+Alt+Del
VB6.EXEを止めたらソースを失いました
本当にありがとうございました
215 :
デフォルトの名無しさん:2007/03/26(月) 21:38:38
>>213 おまぃ鬼だなwwww
CTRL+BREAK
これでデバッグのステップ画面になる
>>214 メッセージボックス出てる時に押せば、そのメッセージ閉じたときにステップになる
VB を止めるなよw
217 :
デフォルトの名無しさん:2007/03/26(月) 22:23:52
俺いつもVB止めてたよ
いい事を聞いた
俺も俺も
220 :
デフォルトの名無しさん:2007/03/26(月) 23:00:55
なんてこったぃwwww
みんなの役に立てて少しだけうれしいよwww
レベル低いw
初心者向けだしなw
この板は質問しにくいスレが多いから集まるんだろうな
223 :
デフォルトの名無しさん:2007/03/26(月) 23:14:03
そうか?
あんまそうは思わないが・・・
確かにエスパーは叩かれるが
CTRL+BREAK
のbreakキーってのが分からんとか言ったら叩かれますか?
ちょw それPC初心者スレ辺りでこっそり聞いてこいよww
ちょっwwww
キーの右上あたり捜してみ?
プリントスクリーン付近にあるから
PasusetかBreakとか書いてるぞ
あー…あった。
こんなキー使わんからパソコン歴結構あるのに分からんかたヨ…
228 :
デフォルトの名無しさん:2007/03/27(火) 16:57:28
教えて下さい。VB6.0を使用しています。
Windows Media Playerをフォームに貼り付けたのですがどうやって指定したファイルを開き動画を再生させるかわかりません。
宜しくお願い致します。
229 :
デフォルトの名無しさん:2007/03/27(火) 17:32:47
>>228 使ったことないけど確かSDK公開されてるんじゃなかったけ?
マイクロソフトのMSDNかどっかに
そういうのはたいていはOpenメソッドだと思うけど、はて・・・
231 :
デフォルトの名無しさん:2007/04/12(木) 23:56:29
簡単な計算ができる電卓をつくりたいんですが
x + y =
はできるんですが
x + y + z =
(x + y) + x
みたいな感じでかけばいいんですか?
イメージはなんとなくわかるんですが説明お願いします
くだらない質問ですいません
VB6.0です
232 :
デフォルトの名無しさん:2007/04/13(金) 00:15:17
ドンラーポ
234 :
デフォルトの名無しさん:2007/04/13(金) 20:48:18
課題で「マウスでクリックした2点を直線で結ぶプログラム」を作りたいんですけど、
全くの初心者で何も分かりません。
初心者向けのヒントください。お願いします。
>>234 歩ける状態で5k円くらいあるなら本屋へ直行
それか教官に聞く
236 :
デフォルトの名無しさん:2007/04/15(日) 03:03:56
質問があります。
VB6.0なのですが、
Formのどのコンポーネントにフォーカスがあったとしても、ただ一箇所に
あるキーダウンイベントを取得することできるでしょうか?
どのコンポーネントにフォーカスがあっても
CTRL+Zのイベントを拾いたいのです。
>>237 隠しメニューつくったら どうだろう 誤ってctrl+Vにショートカット割振ってしまったことがある
Zも元に戻すがデフォだよね
239 :
237:2007/04/16(月) 17:09:36
すいません自己解決しました。。。
メインフォームにKeyPreviewというプロパティがあり、これをtrueにすると
メインフォームのKeyDownでイベントを拾うことができました。
次に、というわけではないのですが、
もし知っていたら教えてほしいのですが、
同様にMouseDownイベントを拾うことはできるでしょうか?
240 :
デフォルトの名無しさん:2007/04/16(月) 17:12:47
>>239 やった事ないけど全てのコントロールのイベントに一個そういう処理用のプロシージャ呼ぶようにするとか?
流石にコントロールは出来ないんじゃないかな・・・と VB素人な折れが言ってみる
241 :
237:2007/04/16(月) 17:22:42
>>240 ありがとうございます。
コンポーネント全部にイベントを追加するのは厳しいフォーム設計になって
います…。また、今後、私以外が保守するときに余計な特殊仕様みたいにな
ってしまいそうな気もします。
VB素人が保守してる現状がそもそもどうかと思いますが…。
シンプルになる方法を模索したいと思います。
242 :
240:2007/04/16(月) 17:23:34
もうサブクラス化してメッセージフックしろwwwww
Form.KeyPreview
244 :
デフォルトの名無しさん:2007/04/16(月) 18:02:45
Vista でVB6.0使っている人いますか?
Xpの調子が悪くなって、Vistaは購入することが決まっているので、
乗り換えようかと思って…。
>>241 一つクラスを作成し、コントロールの型別にWithEventsで定義させて
そのクラス内でイベントの処理をするとかは、どうでしょうか。
クラスでの宣言はコントロール数分ではなく、使用している型数分で済みます。
246 :
デフォルトの名無しさん:2007/04/17(火) 10:23:23
VBの変数で、変数の後ろに # や $ つけるとどういう変数なんでしたっけ?
>>246 型指定されたやつ
$ だと明示的に文字列という宣言
詳しくはMSDNで見て
型宣言文字とかで出てきたと思う
あと、それをつける理由は例えばStringとかMSDNで調べてみて
実際にStringがどういう風になっているかがわかるから
説明ヘタでスマン
248 :
241:2007/04/17(火) 10:30:53
>>245 ありがとうございます。
でも私のスキルが…orz
その文章の単語をキーワードにして調べながらやってみたいと思います。
また質問するかも知れませんがそのときはよろしくお願いします…。
249 :
デフォルトの名無しさん:2007/04/17(火) 10:33:00
>>247 今、手元にMSDNがない環境でしたので
質問させていただきました
でも、なんとなくわかりました
ありがとうございました^^
250 :
デフォルトの名無しさん:2007/04/19(木) 18:35:55
フォームのフォーカスが外れたときか非アクティブになったときに、自分自身を終了させるにはどうしたらいいのでしょうか?
Private Sub Form_Deactivate()
MsgBox "hoge"
End Sub
や
Private Sub Form_LostFocus()
MsgBox "hoge"
End Sub
ってやっても、hogeが出てくれないですし、アプリケーションの終了の仕方もわかりません。
どうか教えてください。VB6.0です。
251 :
250:2007/04/19(木) 19:06:14
アプリケーションの方法はわかりました。
Unload Me
でした。
これをウインドウが非アクティブになったときに実行したいのですが、
Private Sub Form_Deactivate()
Unload Me
End Sub
で、うまくいきません。
252 :
デフォルトの名無しさん:2007/04/19(木) 19:10:04
同じプロジェクト内の別フォームにフォーカスが移れば、
そのタイミングでLostFocusイベントが発生するが。
それとは違うの?
253 :
デフォルトの名無しさん:2007/04/19(木) 19:21:31
終了ボタン付けちゃいけない理由が不明
それともボタンコントロールも知らんのか?
255 :
デフォルトの名無しさん:2007/04/19(木) 19:30:18
TimerとAPIの使い回し以外にいい方法があるとしたらCommandButton使うってだけだろうかw
終了ボタンもなければ、BorderStyleも0にしてるんで、
終了させるには、他のアプリがアクティブになったときや、自作アプリが非アクティブになったときに自動で終了してくれないと
面倒なので。
ツールチップみたいなものです。
257 :
デフォルトの名無しさん:2007/04/19(木) 19:44:30
TimerとGetActiveWindowで監視する以外の方法はわからん。
ドトネトならお望みの動作一撃なんだがな・・・・
1.プログラムが起動したらAPIで現在アクティブなウィンドウハンドルを取得
2.で、そのアクティブなウィンドウハンドルを保持して
そのフォームの中の処理でWindowsで現在アクティブなウィンドウを常にチェック
3.比較して起動時と異なっていたらアンロード
2はフック使ったほうがスマートかもしれんが
なんとなくこんなの思いついてみたというのをかいてみた
259 :
デフォルトの名無しさん:2007/04/19(木) 19:50:12
>>257をコードで書くとこんな感じ。
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Sub Timer1_Timer()
If Me.hWnd <> GetActiveWindow Then Call Unload(Me)
End Sub
これ以外にも方法はあるんじゃないかと思うが、
俺的にはこれくらいしか分からないや、ごめんよ。許して。
260 :
259:2007/04/19(木) 19:54:21
>>260 俺も思ったw
というか、ちょっとサブクラス化してメッセージ受け取ったら出来るような気がしたんで
ちょっと書いてみる
VBあんま使った事ないから出来なくても怒るなよw
>>261 サブクラス化でも可能だけどお勧めしない。
無限ループ(上の例ではタイマー)で都度自分の状態を確認する手法(イベントドリブン)の方が
VBでサブクラス化するより余程いいと思う。
おお!ありがたや、ありがたや。
思ったとおりの動きが出来ました。
みなさん、ありがとうございました。
264 :
デフォルトの名無しさん:2007/04/19(木) 20:06:45
お布施をくだs(ry
俺のケツでよかったら・・・
>>262 VB6の動きをムリヤリ変えてるようなもんだしね 俺もそう思って
>>258かいたんだ
まぁ、そのタイマーとかの監視が嫌だったらって感じだったんだよ
>>263 おめでとw
とりあえずフックでも出来たけどやっぱデバッグで止めたらIDE落ちるからめんどくせぇwwww
267 :
258:2007/04/19(木) 20:21:18
268 :
259:2007/04/19(木) 20:23:44
>>267 きっとそれはドッペルだな。
俺のドッペルはいないみたいだ。安心安心♪
269 :
デフォルトの名無しさん:2007/04/24(火) 09:35:53
Windows共有フォルダのアクセス権限変更ツールってVBでは作れない?
できるだろうけど、非常に難しいと思われ
コノあたりかな つ SECURITY_ATTRIBUTES
271 :
デフォルトの名無しさん:2007/04/24(火) 10:54:14
d。ググってみる。
272 :
デフォルトの名無しさん:2007/04/24(火) 11:10:32
書籍一覧がヒットしますたorz
CreateFileとかCreateDirectoryって、
ファイルやフォルダを作成した上で、
それのセキュリティを同時に設定しようってやつだよね。
それじゃないんだよなぁ。
まぁ要望は「もし出来たら」ってことだから、
「出来ません」って言って終わりにしちゃおっかな。。
単なるオプション機能だしw
273 :
デフォルトの名無しさん:2007/04/24(火) 15:06:51
質問があります。
VB6.0なのですが、
Dim picture As Picture
picture = LoadPicture("HOGE.GIF")
とやると画像の読み込みは成功するのですが、
WidthとHeightを見てみると、ピクセル数ではなく何かとんでもない数値が
入っていました。
調べてみると、ここは0.01mm単位でのポイント数になっており、
ScaleX メソッドおよび ScaleY メソッドを使って必要なスケールに変換する
らしいのですが、ちょっと意味が分かりません。
単純にピクセルに変換できる方法などをご存知でしたら教えてもらえないで
しょうか。宜しくお願いします。
274 :
273:2007/04/24(火) 15:32:50
自己解決しました。。。
picture_width = ScaleX(picture.Width, 8, 3)
picture_height = ScaleY(picture.Height, 8, 3)
これでピクセル数を算出することができました。
どうもお騒がせしました。
>272
NTFSのアクセス権限なら、
SetNamedSecurityInfoのあたりだったとおもう。
もものすごく面倒くさかった記憶しかない。
ファイル共有の権限のほうなら、net shareを叩いて
弄った方が早いと思うけど。
277 :
デフォルトの名無しさん:2007/04/30(月) 03:41:54
VB6のリソースファイルの
MIDIファイルを再生することは
できるのでしょうか?
リソースにMIDIファイルを埋め込むことは
できたのですが、そこからがわかりません。
できれば他のOCXやDirectXはつかわないで
APIなどだけでおこないたいです。
278 :
デフォルトの名無しさん:2007/04/30(月) 18:44:44
コードを区切りたいときはどうしたらよいですか?
ほんと初心者ですみません
>>277 やったことないけど、
リソースからバイナリデータとして受け取って、一時ファイルに書き出してから再生させてみては?
>>278 もっと説明ちょーだい
280 :
278:2007/04/30(月) 20:41:06
>>279 長い分をかくときに二行にわけたいだけです
改行です
>>280 それなら
a = _
1 _
+ _
2
みたいな
名称忘れた
282 :
278:2007/04/30(月) 22:31:42
アホみたいな質問で悪いが、VB6のコードエディタでタブ文字は使えないのか?
半角スペースにされるとちと困るので。
何故困る?
285 :
デフォルトの名無しさん:2007/05/02(水) 18:22:06
メニューバーの[ツール]→[オプション]
ここで設定出来ないなら諦めた方が早くね?
別にタブ文字をオンコードしなきゃいけないってことはないだろーに。
タブ文字の出力はvbTabで出来るからな。
塚、あれか。
VBエディタって確かUnicodeだよな。
Unicodeでタブ文字表示しようとすると中黒になるんじゃなかったか?
やっぱ無理か
同じ部署のやつがタブコピペしたらスペースになるってうるさいだけだから放置しとくよ。
thx
287 :
デフォルトの名無しさん:2007/05/03(木) 15:39:58
VB5.0とVB6.0の違いって何なんですか?
288 :
デフォルトの名無しさん:2007/05/03(木) 19:22:22
バージョン
289 :
デフォルトの名無しさん:2007/05/03(木) 19:23:19
つまり文法的な違いは無いということですか?
6.0で新規の組み込み関数とかあるけど、
文法で躓くことはないと思う。
VB5を使っている日曜プログラマーです
今ファイルの移動・削除をするプログラムを書いています。
通常のファイル移動はNameステートメントを使い、削除はSHFileOperationでゴミ箱に捨ててます。
移動の際はログファイルを吐いてUndo可能にしているのですがゴミ箱に捨てたファイルの
Undoのやり方が分かりません。
どのようにコーディングしたら良いのでしょうか?
>>291 アプリでWindowsのUndo機能をそのまま実装するのは難しいと思います。
ファイルの移動でundo機能のためにログを吐いてるのと同じように、
そのアプリ用にtempフォルダを作成し、ごみ箱に捨てるタイミングで
tempにファイルを移動、その情報をログに保存しておけば、ファイルの
復元を疑似的には実装出来ると思います。
294 :
291:2007/05/05(土) 00:09:35
295 :
293:2007/05/05(土) 00:47:58
>294
Win32APIスレの連中ならもう少し真っ当な回答をしてくれるかも。
shell.applicationの
folder.movehere folderitem
で駄目?
>>296 ありがとうございます。実験はまだですがNameステートメントと違い自前のエラートラップを
減らせそうですね。ゴミ箱からのUndoに役に立つのかどうかはよく読み取れませんでした。
VB6なのですが、キーボードショートカットのカスタマイズはできますか?
やり直しをメニューでやってるのですが、Ctrl+YかCtrl+Shift+Zでやりたいなぁと
思ったのですが、ヘルプや設定を見てもそれっぽいのが無かったので。
>>291 set folderitem=ゴミファイル
folderitem.invokeverb "元に戻す(&E)"
または
>>296 set folder=戻し先
set folderitem=ゴミファイル
folder.movehere folderitem
名前と元の場所で絞って、削除した日の新しいもの
ごめんなさい、どうもアドバイスが高度すぎてついていけませぬ
このFileはCloseさせて頂きます
folder.getdetailsof(folderitem,数字)で情報が取れる。
あと、日曜プログラマーならwsh/vbscriptがお勧め。
304 :
デフォルトの名無しさん:2007/05/08(火) 11:37:48
適当なスレがなかったのでここで。
新しいPCを購入。OSはXPです。
そこでVisual Studio 6.0 をインストールしようとすると、
「Microsoft Virtual Machine for Javaのインストールを行う画面」
にて再起動を促され、指示に従うと再起動後、また同じ画面になりインストールが進みません。
またこれをインストールしないと次ボタンが有効にならないため、インストールが進みません。
調べたところ、Microsoft Virtual Machine for Javaの提供終了と関係がありそうでしたが、結局インストール方法がみつかりませんでした。
どうすればよろしいでしょうか?
>>304 インスコ中断して、事前にjavaVMを入れればそこで聞かれなくなるハズ。
>>305 なるほど。そういえば今までのマシンでは聞かれたことがありませんでした。
最近のPCだとサポート終了確定のJavaVMはプレではいってないのはわかるが、
じゃあJavaVMいれてインスコしたあとJavaVMをアンインスコでやってみるよ。
307 :
デフォルトの名無しさん:2007/05/09(水) 17:30:58
質問があります。
VB6.0なのですが、CommandButton の Caption を
「決定(&E)」
とすると、"決定"の横に、アンダーバーのある (E) が出ます。
これ、(A)とか(B)とか1文字のはいいんですが、
(DEL) (INS) (ESC) のように、
DELキーやINSキーやESCキーを同じように出すことは可能でしょうか?
(&D&E&L)
できるか知らん
309 :
デフォルトの名無しさん:2007/05/09(水) 19:40:15
>>307 DELとかINSとかにアンダーバーを付与させることは不可能だが、
メニューのショートカットキー機能を使えば、
押下されたキーでそのボタンに対応した動作を行うことは多分可能。
310 :
デフォルトの名無しさん:2007/05/09(水) 19:43:20
メニューの親ボタン(っての?)を非表示にしちゃうと不可能だな
>>307 漏れが読解力無くてすまないが・・・
altキーとDELキーやINSキーやESCキーを組み合わせた
ショートカットキーを作成したいという意味だったりする??
312 :
デフォルトの名無しさん:2007/05/10(木) 09:36:45
313 :
307:2007/05/10(木) 09:52:05
遅レス、すいません。
>>308 (&D&E&L)は駄目でした…
>>309 キーの判定は、Form.KeyPreviewをtrueにした上で、FormのKeyDownイベントを
拾うことで実現できました。
>>311 いえ、組み合わせは考えていません。
DELキーのみや、ESCキーのみなどのように1つだけです。
色々試してみたのですが、無理っぽいですね。
重要でもないですし、諦めようと思います。(各ボタンのToolTipTextに記載する方法にしました)
皆さん回答ありがとうございます。
>>311 ESCキーとか標準の窓操作に使われてるからそんなのに使用しないほうがいい。
例;メニューを開いた状態でESCキーではメニューが閉じる
>>314 311が使用したいと思っているのわけではないだろう。
316 :
314:2007/05/10(木) 16:49:36
VB6.0というのを使ってみたいのですが、VisualStadioの中に入ってるものなのでしょうか?
>>317 入ってる。 当然バージョンが6.0ならだけどね。
俺も昔はviエディタとにらめっこだったから
Windows系の開発にウトイのはわかるぜよ。
VisualStadioてぇのはないだろ
はいはい。Studio、Studio。これでいい?
ごめんなさい
スタジオ間違ったなと思いつつ・・・
>>318 ありがとうございます
もう0からの独学の状態でして、助かりました
322 :
デフォルトの名無しさん:2007/05/11(金) 00:52:12
テキストボックス上でEnterキーを押した時に鳴る
「ポンッ」て音がいやなんですけど、音が出ないようにする方法はありますか?
323 :
デフォルトの名無しさん:2007/05/11(金) 00:56:01
>>322 あるけど、あんたの期待している答えなら無い。
324 :
314:2007/05/11(金) 09:55:52
>>317 VisualStudio6.0はもう販売してないぞ。
VB6.0のみならまだ単体で出ているので大丈夫だ
>>322 スピーカーをビルの屋上から落とす
325 :
314:2007/05/11(金) 09:57:31
>>322 考えたけど、マルチラインにしてキー入力ごとのイベントをつかみ、
毎回改行をカットする。
普通に改行カットするだけでいいんだけど
keydownの
if keycode = &hd or keycode = &ha then
keycode = 0
end if
327 :
デフォルトの名無しさん:2007/05/12(土) 16:13:50
(x,y)のプロットで、
(1,1)
(2,4)
(3,2)
(4,8)
の4点を通る3次曲線y=ax^3+bx^2+cx+dの、
定数、a,b,c,dを求めるプログラムを作りたいのですが…。
今までエクセルのソルバーで計算させていたのですが、
VB6.0でこの4点のプロットからa,b,c,dを出すプログラムは、
どうすればいいんでしょうか?
VBでの連立方程式やら二次方程式やらをググってもみたのですが、
さっぱりでして…。
御助言お願いします。
4変数4本の連立一次方程式でそ。
アルゴリズム辞典とかで行列の掃き出し法を
ひけばおわる
http://www.imgup.org/iup380485.png ”商品代金”と”支払い金額”を入力し
もし支払い金額textboxが商品代金textbox未満なら釣銭textboxに不足と表示
もし支払い金額textboxが商品代金textboxを超えている場合は釣銭textboxに釣銭の金額を表示し
更に釣銭金額の各紙幣ないし硬貨の個数を各々の項目の隣に別のラベルとして表示せよ
という課題があるのですが
釣銭金額の各紙幣ないし硬貨の個数を各々の項目の隣に別のラベルとして表示ってどうやるんでしょうか?
>>330 自販機のアルゴリズムっぽいけど
千円札がない場合は、購入する前に
札がないランプが点いてるだろうから購入すらできない
=「千円札があるかないか」の分岐は意味ない様な希ガス
全部硬貨で出すのならまた別だろうけど。。。
>>329 > 釣銭金額の各紙幣ないし硬貨の個数を各々の項目の隣に別のラベルとして表示ってどうやるんでしょうか?
「一万円札」
「五千円札」
…
って描かれている場所の水平方向右に適当な余白を置いて、Labelコントロールを配置する
で、紙幣の枚数または硬貨の個数をそのラベルのCaptionとして設定すればいいのではないかと思われ
全部一円玉で返せばいいじゃん(w
与えられた金額に対応する、紙幣・硬貨の最適な組み合わせを表示するプログラム
Option Explicit
Private Sub Form_Load()
Const a = (10000# + 8500# + 9230# + 100# + 500#) * 1.05
Dim v As Variant
Debug.Print Int(a); "="
For Each v In getMoneys(Int(a))
Debug.Print v(0) & "×" & v(1)
Next
End Sub
Private Function getMoneys(ByVal in_Money As Double) As Collection
Dim v As Variant
Set getMoneys = New Collection
For Each v In Array(10000, 5000, 2000, 1000, 500, 100, 50, 10, 5, 1)
Call getMoneys.Add(Array(v, in_Money \ v))
in_Money = in_Money Mod v
Next
End Function
万札のつり銭ってどういう状況なんだろうな。
デノミ後の日本を想定してるんだろうかw
おまけに
>>329のフォームはどう見てもドトネトのだし
だいいち、宿題は自分でやらなアカンやろ。
できないなら素直に単位落とせよ。
>>335 しょせん大学生だといってもこんなもんだな
スレタイすら読めないというwwww
万札の釣り銭は、払いすぎた時に生じるんでないかい?
流れを全く読まずにレスするが。
>>337 商品にもよるけどお札は一枚しか受け付けない仕様でよくないかい?
多分一万入れてキャンセルした時の仕様だろうなぁ・・・・
とマジレス
アルゴリズム作るのが楽しめないなら そういう職種を選ばない方がよさげ
340 :
デフォルトの名無しさん:2007/05/14(月) 21:37:43
・行列クラスを作る
・ベクトルクラスを作る(こっちは構造体でもいいかもしれない)
・行列クラスに自分の逆行列を求めるメソッドやベクトルとの積を求めるメソッドを書く。
二つの文字列を連結するにはどうしたらいいですか?
343 :
デフォルトの名無しさん:2007/05/15(火) 16:00:42
"a" & "b"
じゃなかった?
344 :
デフォルトの名無しさん:2007/05/15(火) 18:02:32
>>342 str = "a" & "b"
もしくは
str = Join( Array( "a", "b" ), vbNullString )
345 :
デフォルトの名無しさん:2007/05/15(火) 18:50:06
すみません、助けてください。
Win2k-sp4にVB6をインストールできなくて困ってます。
CDを入れてすぐ、「Virtual machine for javaの更新」というチェックが表示されて、
次へ進もうとすると「再起動します」ダイアログ→[OK]ボタンで再起動すると、また最初の「Virtual machine・・・・」
の、繰り返しで先へ進めません。
あれこれ検索してみましたが、それらしい同様の症状を見つけることが出来ませんでした。
何か環境が足りないのでしょうか?Windowsはクリーンインストール状態です。
宜しくお願いします。
MSDNにJavaのいらないVBがあった希ガス
>>343,344
ありがとうございます。VBに慣れてないと思いつきづらい様な感じですね。
348 :
デフォルトの名無しさん:2007/05/15(火) 19:30:39
>>345 他スレでも見た気がするが…マルチか?
VMインスコ→VBインスコ→VMアンインスコ
こんな流れだったような
349 :
345:2007/05/15(火) 19:52:07
ありがとうございます。
>>346 探してみます。
>>348 いえ、初めての質問です。
その流れで試してみます。
「VMインスコ」というのは、"msjavx86.exe"を単体で実行する、という事でよろしいのでしょうか?
実機が今手元に無いもので、確認とれずすみません。。。
350 :
デフォルトの名無しさん:2007/05/17(木) 22:18:55
テキストボックスにdoubleで宣言した値を入れると
2.33333333332673E-04
のようになるのを、
0.000233333のようにEで表記しない方法で貼り付ける方法はないでしょうか?
Format
っていうか、VB6の初心者スレなんて意味あんのか?
現時点でVB6学び始めてどうするんだよw
業務でしゃぁなしもいるんだよwwww
353 :
デフォルトの名無しさん:2007/05/17(木) 23:04:58
MSChart使ってy=x^2+xの二次関数のグラフ書きたいんだが、
xは1〜50の領域で表示したいなら、
ChartType=VtChChartType2dLine
for x=1 to 50
y=x^2+x
next
何かけばええの?w
サンプル見ても棒グラフばっかで、チンプンカンプン
>>352 VB厨は質問者がVBしか経験がないという前提で
書き込むよな。 >351とか正にそうだ。
>>354 不思議な思考をする奴だな。
こういう非論理的な人間はプログラマ向かないよ。
>>355 まぁちょっと叩かれたからって
そう気張るなよ?な?肩の力抜いていこうぜ?
言語なんてしょせん方言だ
_____
/::::::::::::::::::::::::::\〜プーン
/:::::::::::::::::::::::::::::::::::::::\〜プーン
|:::::::::::::;;;;;;|_|_|_|_|〜プーン
|;;;;;;;;;;ノ∪ \,) ,,/ ヽ〜
|::( 6∪ ー─◎─◎ )〜
>>355 |ノ (∵∴ ( o o)∴)〜
| ∪< ∵∵ 3 ∵> ムッキー!
\ ⌒ ノ_____
\_____/ | | ̄ ̄\ \
___/ \ | | | ̄ ̄|
|:::::::/ \___ | \| | |__|
|:::::::| \____|つ⊂|__|__/ /
|:::::/ | ̄ ̄ ̄ ̄| 〔 ̄ ̄〕
359 :
デフォルトの名無しさん:2007/05/19(土) 21:28:03
>>353なんですが、
もしかしてVBでこういう曲線のグラフって、pictureに描画するのが一般的なんですか?
MSchartをイジってたんだけど、中々エクセルでいうところの散布図みたいなのが出来ない。。。
どこの一般を聞かれてるのかわからんが
日曜プログラマの俺は金が無いので自力で全部書いてる
もしかしたらExcelのコンポーネントで出来るかもしれないけど、取り扱いに気を使いそうだから全くしらない
俺はExcelでできるかどうか調べる前に
自前(PictureBox)で実現しようとするかな・・・
むしろエクセルに依存したりサードパーティにあんま頼りたくないので自前で
Excelじゃ無くてMSChartで実現したいって言ってるから、
Dim x As Single, y As Single
With MSChart1
.chartType = VtChChartType2dLine
.ColumnCount = 1
.RowCount = 50
For x = 1 To 50
y = x ^ 2 + x
.Row = x
.Data = y
Next
End With
質問させてください。
例えば、以下の内容のCSVファイルがあったとします。
ID,TEL
1,0344445555
これを開くと、
cnDB.ConnectionString = "Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=" & strDir & ""
cnDB.Open
rsDB.Source = "SELECT * FROM テーブル"
rsDB.Open , cnDB, adOpenStatic, adLockPessimistic
結果が、TEL=344445555となり、0が消えてしまいます。
2番目のフィールドを文字列として認識してテーブルを開く方法は無いでしょうか?
CSVにアクセスする方法がなんでもいいなら別の方法をすすめるが
その方法じゃないとダメならSQLを変えてみてはどうでしょうか〜
rsDB.Source = "SELECT ID, STR(TEL) FROM テーブル"
>>365 ありがとうございます。
やってみましたが、0がスペースに変わっただけで、やはり思い通りには
行きませんでした。
今後、フィールドの位置の変更や、追加削除がある可能性があるので
出来れば、この方法が便利なんですけど、、、
上手くいかないので、他の方法にした方が良さそうですね、、、
367 :
デフォルトの名無しさん:2007/05/22(火) 20:34:52
タイマーって60秒までなんだw
どうしよう・・・
5分にしたければ60秒を5回繰り返せばいいか!
時刻を記憶してだいたい100ms間隔で比べて、5分前かどうか確かめればいいんだぜ
CPU使用率を100%にして負荷を掛ける実験ツールを作ったんだ。
シングルコアでは100%の負荷が掛かるのだが、
デュアル・クアッドコアの場合は50%・25%前後にしかならないんだ・・・。
これって、マルチスレッド・クアッドスレッドにソースが最適化されてないって事だよね?
どこかにVB6.0でマルチスレッド最適化の方法が載ってるサイトって無いかな?
372 :
デフォルトの名無しさん:2007/06/01(金) 16:41:45
VB6.0はマルチスレッド不可能
それは知らなかった。
VB6.0ではマルチスレッド出来ないのか・・・。
教えてくれてありがとうございました。
375 :
デフォルトの名無しさん:2007/06/01(金) 18:05:48
仮に使えたとしても
このような輩が使うとデッドロックとかの防御かけずに使いそうで怖いな・・・・
だからやっぱりVBでマルチスレッドはできないようにして正解だったということでは
VB.NETは不正解
378 :
デフォルトの名無しさん:2007/06/01(金) 18:48:09
そんなときはコレ!
つkill -9!
kill -9, no more CPU time!
kill -9, process is still running!
コード画面でホイールころころしても画面が動かん。
何とかしてくれ。
ググれカス
thxこの野郎
しかしvb6でもマルチスレッドは使える
API叩いても無理なのにどうするんだ?
VCでDLLつくるんだろ
google先生に聞いてみな
コード画面の背景色って変えれんのか?
ググったけどわかんね('A`)
教えてくれ〜。
コード画面の背景色ってIDEのこといってるの?
VB6のエディタはOSのコンパネ(画面の設定)で設定された色をそのまま使ってるんだろう。
っていうか、こういうOSの使い方も知らん人がコード書けるのかなw
dクス出来ますた。
けど背景色ぐらいは設定で変えられるようにすべきだと思う(´・ω・`)
>>386 「オプション」の「エディタの設定」の「コードの表示色」の「背景」
文字色を明るい色に変えて黒背景にも出来るお
391 :
デフォルトの名無しさん:2007/06/03(日) 21:07:31
やっぱ背景は黒だな。絶対秀丸だな。
>>389お前とは上手い酒が飲めそうだ。
そんな配色目に悪いと思うけどね。
まぶしいなら画面の輝度を調整すべきだと思うよ。
( д )゚ ゚
395 :
デフォルトの名無しさん:2007/06/03(日) 22:14:13
>>393 、ミ川川川彡 ,ィr彡'";;;;;;;;;;;;;;;
ミ 彡 ,.ィi彡',.=从i、;;;;;;;;;;;;
三 ギ そ 三 ,ィ/イ,r'" .i!li,il i、ミ',:;;;;
三. ャ れ 三 ,. -‐==- 、, /!li/'/ l'' l', ',ヾ,ヽ;
三 グ は 三 ,,__-=ニ三三ニヾヽl!/,_ ,_i 、,,.ィ'=-、_ヾヾ
三 で 三,. ‐ニ三=,==‐ ''' `‐゛j,ェツ''''ー=5r‐ォ、, ヽ
三. 言 ひ 三 .,,__/ . ,' ン′  ̄
三 っ ょ 三 / i l,
三. て っ 三 ノ ..::.:... ,_ i ! `´' J
三 る と 三 iェァメ`'7rェ、,ー' i }エ=、
三 の し 三 ノ "'  ̄ ! '';;;;;;;
三 か て 三. iヽ,_ン J l
三 !? 三 !し=、 ヽ i ,.
彡 ミ ! "'' `'′ ヽ、,,__,,..,_ィ,..r,',",
彡川川川ミ. l _, , | ` ー、≡=,ン _,,,
ヽ、 _,,,,,ィニ三"'" ,,.'ヘ rー‐ ''''''"
`, i'''ニ'" ,. -‐'" `/
ヽ ! i´ /
ノレ'ー'! / O
いちいちAA貼り付けないと物が言えないガキを相手にしてもしょうがないけど、
そんなギャグがどこにある。
黒背景が目に悪い理由は、黒背景だと瞳孔が開きすぎるから。
というか、そんな理屈がわからなくても普通体感的に分かるだろう。
白地に黒と黒地に白でどちらが目がより疲れないか
>>396 、ミ川川川彡 ,ィr彡'";;;;;;;;;;;;;;;
ミ 彡 ,.ィi彡',.=从i、;;;;;;;;;;;;
三 ギ そ 三 ,ィ/イ,r'" .i!li,il i、ミ',:;;;;
三. ャ れ 三 ,. -‐==- 、, /!li/'/ l'' l', ',ヾ,ヽ;
三 グ も 三 ,,__-=ニ三三ニヾヽl!/,_ ,_i 、,,.ィ'=-、_ヾヾ
三 で 三,. ‐ニ三=,==‐ ''' `‐゛j,ェツ''''ー=5r‐ォ、, ヽ
三. 言 ひ 三 .,,__/ . ,' ン′  ̄
三 っ ょ 三 / i l,
三. て っ 三 ノ ..::.:... ,_ i ! `´' J
三 る と 三 iェァメ`'7rェ、,ー' i }エ=、
三 の し 三 ノ "'  ̄ ! '';;;;;;;
三 か て 三. iヽ,_ン J l
三 !? 三 !し=、 ヽ i ,.
彡 ミ ! "'' `'′ ヽ、,,__,,..,_ィ,..r,',",
彡川川川ミ. l _, , | ` ー、≡=,ン _,,,
ヽ、 _,,,,,ィニ三"'" ,,.'ヘ rー‐ ''''''"
`, i'''ニ'" ,. -‐'" `/
ヽ ! i´ /
ノレ'ー'! / O
ListBoxの中の数値をクリックして選択したものだけ配列に格納したいのですが書式が分かりません。
配列に数値を加えていくにはどうすればいいんですか?
>>398 dim i as integer
dim hoge() as integer
'///最初に確保
hoge(10)
'///消す。
erase hoge
'///拡張しながら
for i = 0 to 10
redim preserve hoge(i)
next i
>>400 REDIMってパフォーマンスはどうなんだろ?
realloc繰り返すようなもんだろ。拡張のときに余分に確保してゆくとか必要ないだろうか。
402 :
400:2007/06/05(火) 09:27:48
肝心のredimがついてねーorz
realloc繰り返すよりは最初に余分に拡張した方がいいね。
403 :
デフォルトの名無しさん:2007/06/05(火) 11:18:59
>>401 超悪い
なので先に配列の数がわかるならRedim一回だけにしたほうがいいと・・・
配列の数が増えれば増えるほど速度差が出るしさ
春だな・・・
夏だろ・・・
406 :
デフォルトの名無しさん:2007/06/05(火) 15:09:50
「ファイルを展開する」の意味を教えてください。
圧縮ファイルを解凍する意。
408 :
デフォルトの名無しさん:2007/06/05(火) 15:56:47
ありがとうございます。助かります。
409 :
デフォルトの名無しさん:2007/06/05(火) 18:37:16
あるフォームから別のフォームの内容を変えるにはどうすればいいのでしょうか?
例えばform1とform2を開いておき
form2でボタンを押したりするとfrom1のテキストに書き込んだりform1のピクチャの表示を変えたりしたいのですが
Form1.Text1
Form1.Picture1
412 :
410 :2007/06/09(土) 16:41:43
ありがとうございます
やり方がわかりました
413 :
デフォルトの名無しさん:2007/06/10(日) 22:14:38
質問です
例えばコマンドがクリックされるたびに
数字が一つ増えていき、ある時間が来たらその時間内に何回
それがクリックされたかを表示される機能を作りたくて
時間を計る昨日は作れたのですが、クリック回数を示す方が全くわからないので
ヒントを頂けると助かります
415 :
413:2007/06/10(日) 22:51:56
いや、このスレを教えてもらって
基礎的過ぎるのでこっちの方がいいのではないかと思って・・・
>>413 スレ跨いでなかったら答えたんだけどな。
むかついたので教えない。
こっちの方が親切に答えてくれるって言われたから
わざと不親切な奴を装ってるんだな
両方親切に教えてますよ?
419 :
413:2007/06/10(日) 23:41:24
すいません、次から気をつけますのでヒントだけでも
教えてください・・・
>>419 しょうがないな
モジュールレベルでDimしてクリックイベントで足せ
教えたら教えたで無視か。
どこまで失礼な奴だ!!
>>413 Label1.Caption = クリック回数
>>413 a$ = "クリック"
b$ = "回数"
Label1.Caption = a$ & b$
VB6.0どころか非常に初歩的なアルゴリズム(という表現すらおこがましいレベル)の問題だな
Sub なんたらかんたら_Click()
dim intI as Integer
intI = CInt(Label1.Caption)
intI = intI + 1
Label1.Caption = Cstr(intI)
End Sub
おまえにはこの程度のソースでいいだろう
426 :
デフォルトの名無しさん:2007/06/11(月) 09:11:51
週末は馬鹿がわくのかw
427 :
デフォルトの名無しさん:2007/06/12(火) 01:39:11
MSCommのSettingsプロパティで教えて欲しいんですが
MSComm1.Settings = "a,b,c,d"
でa,b,c,dにはテキストボックスから任意の値を
入れれるようにしたいんですが・・。
これだとaという変数に"9800"という文字列が入ってても
これは"a"という文字列だということでエラーになってしまいますよね。
何かいい方法あります?
囲むな。
方法はちょっと前のレスにもある。
429 :
デフォルトの名無しさん:2007/06/12(火) 09:12:23
>>427 >>428の言うとおり2つほど前のレスにもヒントはある
しかし、全然言語・・というよりもPGそのものをまったく知らないでCOMM通信とか(ry
430 :
427:2007/06/12(火) 10:00:27
すいません。よくわかりません・・。
MSComm1.Settingsは文字列で指定しなきゃいけないんですよね?
囲まないと構文エラーになるんですか・・。
>>425がヒント・・。
CIntやCstrで文字を変換しろ という事ですか?
でも変換した値は結局変数に代入するのだから
同じ事のように思えるんですが・・。 すみません。
431 :
デフォルトの名無しさん:2007/06/12(火) 10:04:03
>>430 うわぁ・・・こいつ絶対使えねぇ・・・・
自分で考えようとしてる不利だけの気がするな
絶対つりだと信じてるが・・・
dim a as string = textbox1.text
dim b as string = textbox2.text
dim c as string = textbox3.text
MSComm1.Settings = a & "," & b & "," & c
お前レベルにはこれで十分だ
>>427 a$=text1
・
・
MSComm1.Settings = a$ & "," & b$ & "," & c$ & "," & d$
たしかに先はながいなぁ 私も通信は苦労しました。
433 :
427:2007/06/12(火) 12:18:44
>>431 >>432 あ・・なるほど。すみません。
確かに・・・自分の考える努力が不足してたようです。
ありがとうございました。
テキストボックスからフォーカスを他へ移さないようにしたいのですが、どうしたらいいんですか?
後、カーソルを左端じゃなくて右端に固定したいのですが…
するな。
436 :
434:2007/06/12(火) 20:55:11
VB6.0の話です。すいません。
>>434 何のためにやりたいのか知らないがそういうプロパティはある
ヒント:TabIndex
GetAsyncKeyStateを使用し
タイマーから
Dim a%
a = GetAsyncKeyState(37)
If Not a = 0 Then ...
と、左を押したらifの処理が行われるとして
キーの左を押している間画像を移動するとしたいのですが
左を放しても画像が移動し一瞬置いてから止まり画像が滑ってしまいます
変数aの中身は毎回破棄されてますしそもそもGetAsyncKeyStateの時点で代入されてるから値を引き継ぐわけがありませんし
タイマーで呼び出された時点でキーを押してなければ0が入るはずで
GetAsyncKeyStateからifまでの間にaの値を変更するような事も行っていないので原因がまったくわかりません
タイマーのインターバルの感覚を長くしたり色々な箇所にsleepを入れてみても駄目でした
理由がわかる方どうか教えてください
処理が追いついていないから。
理由は知らんがインターバル長くするのは逆な気がするなw
まぁどっちにしろ
判定
↓
移動処理
の流れなかぎり多少のレスポンス遅れは出るだろうな
どんだけなのかしらんし、キー離したつもりでもキーストロークによっては一瞬遅れて とかんじるかもしれんし
>>439 KeyStateの中に値が入っていてそれが消化されてないんだよ。
一回ごとにクリアするなどすればディレイは発生しない。
While
ご冗談を。
444 :
439:2007/06/13(水) 22:08:58
ありがとうございます
参考になります
>>440 ためしにGetAsyncKeyStateの処理のとこだけのプログラムにしてみたら
滑らなくなったため処理が追いついていないのが原因のようですね
>>441 私には
判定
↓
移動処理
の方法しか思いつかないのですは他に方法はあるのでしょうか?
>>442 KeyStateの値をクリアとはどのようにすれば良いのでしょうか?
調べても見つからなかったため良ければ教えてください
>が原因のようですね
そこで思考停止かよ
>ためしにGetAsyncKeyStateの処理のとこだけのプログラムにしてみたら
>滑らなくなったため処理が追いついていないのが原因のようですね
なんだそんな間抜けな原因か
>>444 While GetAsyncKeyState(37) <> 0
i = i + 1
Wend
if i > 1 then msgbox i
ためしにこれをかませてみろ
>>447 それかますとキーを押しっぱなしでスクロールできないのでは
そもそも消化が原因じゃないわけだし
>>449 いやためしと言うのはいいとして
そんな無意味なコードをためしてどうするの?
自分でためしてみた?
>>450 キーをちょっとでも押しているとすぐにGetAsyncKeyStateのカウントが増えていくことを確認させるテストだ
無論今は試してないが過去になんども試してる
要するに、最初に提示されたコードであると、
キーを押しっぱなしにしていて離した時点で、
GetAsyncKeyState(37) がたとえば 200 とかいう値を返してくる。
そのためこのコードだと、キーを離した後も、あと200回、If文の中の命令をこなすこととなっている
回答するのはわかってる奴だけにしろ
質問者が混乱するような言い合いしてたら意味ないだろ
本人はわかってるつもりなんだよ
自分でサイト作って仕切ればいい
Pin's・・・いやなんでもない
458 :
デフォルトの名無しさん:2007/06/15(金) 12:13:46
>>457 久々にその名前を聞いた
つうか、最近廃れてないか?
459 :
デフォルトの名無しさん:2007/06/16(土) 00:52:38
すいません
Vbはどこでダウソすればいいんでしょうか?
Microsoftからダウンロードできます
461 :
デフォルトの名無しさん:2007/06/16(土) 01:04:55
>>460 なんとかスタジオの
どこで何をすればいいのかわかりません><
>>461 わからないのならあなたには必要無いって事でしょう
本当に欲しいならMSに訊けばいい。
制御をOSに戻すってつまりどういう事?
日本から出て行け
466 :
デフォルトの名無しさん:2007/06/17(日) 21:54:11
超アホなユーザー定義関数が作れません。
どこが、間違ってるのでしょうか。
Function find1(検索 As Range) As Variant
Dim objRange As Range
Dim target As Variant
target = 検索.Value
Set objRange = Columns("E").Find(target)
find1 = objRange.Value
End Function
どんなエラーがあるかすら書かないのか
それから変数に全角文字使ってるが冗談だよな?
468 :
デフォルトの名無しさん:2007/06/17(日) 22:28:56
動作はするのですが、worksheetのセルの
エラーは、#VALUE! です。
変数は全角でも、英数字でも同じエラーがでます。
>>468 > エラーは、#VALUE! です。
この「#VALUE!」ってどういう意味なの?
471 :
デフォルトの名無しさん:2007/06/18(月) 20:26:24
>>470 2chでマルチポストを指摘されるとは。
ネチケット違反ですか?
×("E")
○(゜ε゜)
マルチだろうが別にどーでもいいけど、ここ以外に活躍する場が無い自治厨。
続けるなら向こうでやれ
あとあえて荒らしに行ってみるが
変数名に漢字なんて大真面目ですぜ?
いいんじゃないのぉ 好きにすればぁ
VBならまだいいぜ。
AccessVBAなんか悲劇。
変数にマルチバイト文字使ったサンプルが大量に載ってる本が堂々と教本として売られてる。
メンテさせられる身になると泣けるぜ・・・
479 :
デフォルトの名無しさん:2007/06/24(日) 21:05:20
vb6で、mschartを使って二次曲線を数本表示したいんですが、
>>353と
>>363を習ってみたものの、
1本目は書けるんですが、2本目はどう定義したらいいんでしょう?
..raowと.dataを、どう表記したら2本目になるんでしょうか?
>>479 同じチャートオブジェクトに二つの系列のデータ突っ込めるか確認した?
481 :
デフォルトの名無しさん:2007/07/15(日) 02:37:14
VB6なんですが、コマンドボタンに画像を貼り付ける方法はありますが、
例えば、丸いボタンを押しているようにすることは出来るのでしょうか。?
482 :
デフォルトの名無しさん:2007/07/15(日) 02:45:17
>>481 出来るけどVBだけいろいろめんどくさい
おとなしくピクチャボックスでやるというのも1つの手段
483 :
デフォルトの名無しさん:2007/07/15(日) 15:01:07
>>482 なるほど。ピクチャボックスですか。
簡単にやってしまうと、丸いボタンの領域を押さなくてもクリックしたことになっちゃいそうですね。
そういうコンポーネントとか売ってないですかね…。
484 :
デフォルトの名無しさん:2007/07/15(日) 15:58:12
DirectShowについて質問したいんですが、ここのスレでいいですか?
485 :
デフォルトの名無しさん:2007/07/15(日) 17:55:23
いいわけねーだろ
486 :
デフォルトの名無しさん:2007/07/15(日) 18:09:28
487 :
デフォルトの名無しさん:2007/07/15(日) 20:30:46
Sub aaa()
Dim a(10) As Integer
Dim i As Integer
a(0) = 32
a(1) = 14
a(2) = 56
a(3) = 15
a(4) = 7
a(5) = 18
a(6) = 102
a(7) = 88
a(8) = 11
a(9) = 57
a(10) = 58
'-------------------
'この間で
'-------------------
For i = 0 To 10
Debug.Print a(i)
Next
End Sub
超初心者質問ですみません。
上のようにa(10)にランダムの数字が格納されていて
これを昇順(若い順)に格納しなおしてから
表示するようなプログラムを作りたいの
ですがどのようなやり方があるでしょうか。。
>>487 一旦、小さい数字から別の配列に入れてa()に代入する。
>>487 '-------------------
'この間で
Dim t As Integer
Dim j As Long
For i = LBound(a) To UBound(a)
For j = i + 1 To UBound(a)
If a(i) > a(j) Then
t = a(i)
a(i) = a(j)
a(j) = t
End If
Next
Next
'-------------------
>>484 おれ20年以上前にソートのやり方だけをいろいろ書いた本を買ったことがある。今のパソコンは処理が速いからどんなやり方でもおk。自分で考えたほうが良い。
492 :
491:2007/07/16(月) 00:38:28
493 :
デフォルトの名無しさん:2007/07/16(月) 01:22:45
みなさんありがとうございます!!勉強します!!
ソート付きリストボックスに放り込んで取り出す、という
のが定石として出ていたこともあった。
495 :
デフォルトの名無しさん:2007/07/16(月) 03:10:50
ねえよ
定石というより苦肉の策
497 :
デフォルトの名無しさん:2007/07/16(月) 04:02:57
>>494 それが定石だとしたらお前は世間で言う
ダメVBプログラマの部類だな
頭使えよ
オレダメプログラマだったから、よく使っていたよ。
目に見えるからデバッグしやすいんだな、これが。
特に動的に重複した値がやってくるような場合は
SortedをTrueにしたListboxに放り込んでおいて処理してた。
数千件でも速度的に問題なかったよ。
100件程度のただの配列ならバブルソートで十分。
1000件以上とか構造体のソートだとクイックソート辺りじゃないと。
簡単に向上出来る部分は済ましておくもんだろ。
つか関数化して処理して Function BubbleSort(Arr() as Long) as Long()
500 :
デフォルトの名無しさん:2007/07/17(火) 07:04:49
503 :
デフォルトの名無しさん:2007/07/22(日) 11:37:43
高速に画面に黒を塗りつぶすにはどのようにすればよいでしょうか。
PatBltじゃ対応しないデバイスがあることとかでだめなようなんですが、、、
>>503 じゃあとりあえずsetpixelかPSet()かLineかFloodFillか使えば良い
505 :
デフォルトの名無しさん:2007/07/22(日) 19:39:06
Rectangle API関数はないの?
ExtTextOutが速いとか聞いたことがあるけど
508 :
佐一:2007/07/23(月) 22:27:33
Visual Basic 6.0使っています。
フォーム内のボタンを押して、
Shell("MSACCESS.exe △△△",・・・)から
データベースファイル△△△を起動します。
△△△が起動している間は、
・ボタンを押しても△△△を新たに起動させず
・既に開いている△△△が最前面に来るようにするには、
(フォームが最背面、フォアグラウンドになればいい)
どうすればいいのでしょうか?
アプリケーションのハンドルを取得し
setForeground(ハンドル名)
として、アプリのフォームをフォアグラウンドにしようとしましたが
setForegroundの戻り値は、Trueなのに、
ボタンを押しても、既に開かれている△△△が最前面になってくれません。
511 :
デフォルトの名無しさん:2007/07/24(火) 09:43:46
Visual Stadio 6.0使っています。
以前はVisual Stadio 6.0をフルインストールした状態のPCで使ってた『自作ソフト.exe』を
今回は容量の少ないシリコンディスク(2GB)のFAタイプPCで使用したいのですが、
Visual Stadio 6.0をインストールするほど容量が確保できないので、
そのまま『自作ソフト.exe』を起動したところ、アプリケーションエラーが発生し
ソフトが起動しませんでした。
専門書等を見てみましたが
1)メイン及び、監視タスクのパス(フォルダ)位置が、pathに登録されているか?
2)アプリでOCX等が使われてたりすると、アプリのみでは実行できない場合があるため、
必要なOCXをそのPCに登録する必要がある。
などと書いてありましたがはっきりいってわかりません
ちなみに、私はビルド(リビルド)ぐらいしか出来ないくらいの知識しかないので、
どなたか教えてもらえないでしょうか?
513 :
デフォルトの名無しさん:2007/07/24(火) 09:57:57
つか業務でやってんならわかるだろ?
>FAタイプPC
>アプリケーションエラーが発生し
このOS種類とかエラー内容をかけよ・・・
>>512の言うとおり
ディトリビューションウィザードでも何でも使ってインスコしたら必要なものは入るはず
514 :
511:2007/07/24(火) 10:47:00
すいません、初心者というか普通にWordやExcelぐらいしか使えないレベルの人間なので
>>512さんのインストーラの作り方や、
>>513さんのディトリビューションウィザードなどといった
ものの使い方作り方が出来ません。
しかもこの『自作ソフト.exe』を作った人が会社辞めてしまってるので、このソフトの中身すら
私には理解できない現状です。
(起動したときの使い方ぐらいしかわからないんです…)
ちなみにOSはWindows2000 SP4で、
エラー内容は
「エラーが発生したので。『自作ソフト.exe』を終了します。
プログラムをもう一度開始する必要があります。」
という表示が出てきました。
516 :
デフォルトの名無しさん:2007/07/24(火) 12:07:44
ちなみにデスビは
スタート メニュー\プログラム\Microsoft Visual Basic 6.0\Microsoft Visual Basic 6.0 Tools
このあたりにあるはず
517 :
デフォルトの名無しさん:2007/07/24(火) 12:09:43
追伸
>>515ので動くとは思うが社外OCXとか使ってた場合はそれだけじゃ動かないので
デストリビューしょんウィザードなんかで依存関係にあるOCX登録してやる必要がある
518 :
511:2007/07/24(火) 13:46:11
今気づいたんですが、プログラムデータの拡張子を見たらcppってなってますけど、
これはVBじゃなくてVC++ですよね?
板違いみたいなので、ちょっと首くくってきます…
もし、VC++でも
>>515のデータは使えるのでしょうか?
板違いだからどっか行けというのであればここまま消えますね…
519 :
デフォルトの名無しさん:2007/07/24(火) 14:46:21
エクセル2000でブックの1枚目のシートのA3とB5の数値を読み込みたいのですが
エラーが出てこまっています。(型が一致しません)
やってるのは
Dim xlApp As Object
Dim xlBook As Object
Dim xlSheet As Object
Dim intA As Integer
Dim intB As Integer
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("aaaaa.xls")
Set xlSheet = xlBook.Sheets(1)
intA = xlSheet.Cells(3,1).value
intB = xlSheet.Cells(5,2).value
xlBook.Close
xlApp.Quit
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
です。よろしくお願いします。m(_ _)m
エラーになったときのセルの値は?
そこに入ってるのは必ず数字なわけ?
Dim intA As Integer
↓
Dim intA
こうするとどう?
522 :
519:2007/07/24(火) 19:45:55
>>520-521 やっとわかりまして、どうやら、Excel2000だと、セルに数値が入ってても
先頭になんかコントロールコードみたいな1バイト文字がつく文字列で
くることが判明しました。
ですので、先頭の1バイトを捨ててValすることにしました。
本当にありがとうございました。m(_ _)m
523 :
デフォルトの名無しさん:2007/07/25(水) 09:08:08
>Valすることに
らめぇ><
まともにParsingしないのか
カンマが入っただけで死にそうだ
525 :
519:2007/07/25(水) 12:18:38
>>523 >>524 カンマが入ってしにました。。。orz
しかたがないので、Replaceでカンマを削除してから
Valすることにしました。
526 :
デフォルトの名無しさん:2007/07/25(水) 12:37:28
いいのか?それでいいのか?w
一応いくつかパターン試しておいたほうがいいぞ
あと、意図的に入力したカンマが入るようなことはないのか?
527 :
519:2007/07/25(水) 16:16:08
>>526 もう大丈夫です。^^
基本的に1セルに1数値なんで。
528 :
デフォルトの名無しさん:2007/08/09(木) 20:13:15
DataFileBufはタブ区切りの文字列です。
さいたま さい川 たま夫
とうきょう ほげ川 ほげ子
おおさか おお山 さか美
このようなデータを
Do While Not EOF(DataFileBuf)
Line Input #DataFileBuf, LineData
LineData2 = Split(LineData, vbTab)
Print #CsvFileMBuf, """" & LineData & """"
Print #CsvFileMBuf2, """" & LineData2(0) & """"
Loop
#CsvFileMBufは↓のように、うまく処理が行えるのですが、
さいたま さい川 たま夫
とうきょう ほげ川 ほげ子
おおさか おお山 さか美
Split関数をかませた#CsvFileMBuf2の結果は↓のように最初の一件しか
処理してくれません。
さいたま
Split関数をかませても最後までデータを処理してくれるようにするには
どのように書き換えたらよいでしょうか?
>>528 > Split関数をかませた#CsvFileMBuf2の結果は↓のように最初の一件しか
> 処理してくれません。
”そう書いてるんだから”、ってのは分かってますよね?
というわけで、「処理」とかいう抽象的な表現がコチラ側としてはサッパリ具体的ではないので
それを踏まえて次のように書きます
・Xを処理 → process(X)
・で、そのコード
Do While Not EOF(DataFileBuf)
Line Input #DataFileBuf, LineData
LineData2 = Split(LineData, vbTab)
Print #CsvFileMBuf, """" & LineData & """"
Print #CsvFileMBuf2, """" & process( LineData2 ) & """"
Loop
530 :
デフォルトの名無しさん:2007/08/10(金) 13:24:41
ファイルの中身が↓のようになっている場合(タブ区切り)
さいたま さい川 たま夫
とうきょう ほげ川 ほげ子
おおさか おお山 さか美
DataFileBuf = FreeFile()
Open ActiveWorkbook.Path & "\" & DataFile For Input As #DataFileBuf
Do Until EOF(DataFileBuf)
Line Input #DataFileBuf, LineData
LineData2 = Split(LineData, vbTab)
Print #CsvFileMBuf, LineData2(0) & " " & LineData2(2) & " " & LineData2(5) & " " & LineData2(6)
Loop
↑のプログラムで、データファイルのEnd of Fileまでループさせるつもりが、
ファイル全体が1つのデータとして扱われてしまう為、1回のループで終わって
しまい、結果は↓のように出力されてしまいました
さいたま たま夫
とうきょう おお山 さか美
改行で1つのデータとして扱い、↑3件のデータが3回ループするように
コーディングしたいのですが、どのように変えたらよいでしょうか?
>>529 お答えありがとうございます。
せっかくお答えいただいたのですが、勘違いしてました。
(Split関数は問題ありませんでした。)
531 :
デフォルトの名無しさん:2007/08/10(金) 20:17:50
ものすごく基本的な気がして調べたんだけど・・・
わからないタスケテ(涙
●環境
・Windows XP (sp2)
・VB 6.0 (sp6)
・標準EXE でプロジェクト作成
・プロジェクト>コンポーネント>Microsoft Common Dialog Control チェック
・プロジェクト>参照設定>Microsoft Scripting Runtime チェック
で、Form1 にボタンやコントロールを配置して
いくつかコードを書いてプロジェクト保存>終了しました。
その後、続きをやろうとプロジェクトを開くと、
----------------------
行 67: クラス MSComDlg.CommonDialog(コントロール CommonDialog1) はロードされていません。
行 90: クラス MSForms.CheckBox(コントロール CheckBoxHeadIgnore) はロードされていません。
----------------------
ログファイルに上記エラーが出て、
Form1 に適用した内容が全く読み込まれなくて困っています(涙
先輩方タスケテクダサイorz
>>530 よくわかんないけど、ファイルの中身って、
さいたま[TAB]さい川[TAB]たま夫[改行]
とうきょう[TAB]ほげ川[TAB]ほげ子[改行]
おおさか[TAB]おお山[TAB]さか美[改行]
ってなってんの?まさか
さいたま[TAB]さい川[TAB]たま夫[TAB]
とうきょう[TAB]ほげ川[TAB]ほげ子[TAB]
おおさか[TAB]おお山[TAB]さか美[TAB]
じゃないよね?
>>531 エラーが出てるコントロールはずして、とりあえずセーブ。
もう一回プロジェクトを開いてエラーが出なくなったら、はずしたコントロールを再配置してみては?
533 :
デフォルトの名無しさん:2007/08/13(月) 11:25:07
>>532 ご回答ありがとうございます。
ファイルの中身は
さいたま[TAB]さい川[TAB]たま夫[改行]
とうきょう[TAB]ほげ川[TAB]ほげ子[改行]
おおさか[TAB]おお山[TAB]さか美[改行]
ってなってますね。
秀丸で見てもそうなってます。
534 :
530:2007/08/13(月) 11:53:54
>>532 ありがとうございます。
が、解決しませんでした。
それどころか全ての場合において発生したので、なんか根本的な所がダメみたい。
(ボタン1個配置のシンプル構成でも)
535 :
デフォルトの名無しさん:2007/08/13(月) 12:07:21
すいません、改行コードがLFでした。
改行コード「LF」をVBで「CR+LF」に置換する方法ってありますか?
>>532 ご回答ありがとうございます。
ファイルの中身は
>>535 replace(hoge, vbLf, vbCrLf)
537 :
530:2007/08/13(月) 14:16:19
IDE の使い方をわかってなかっただけでした(汗)
右上のプロジェクトグループ・ツリーをダブルクリックで
Form画面を呼び出せることに気がついて解決。
おさわがせしました。
538 :
デフォルトの名無しさん:2007/08/14(火) 15:14:10
VB6.0でフォーム上にWebページを表示し、表示されたページ内の文字列を
特定条件によって変数に格納する、といった作業をやりたいのですが、
どうやればできますかね?
>>538 どこから教えればいいんですかね?
とりあえずWebBrowserコントロールは見つけれた?
540 :
538:2007/08/14(火) 17:22:01
>>539 WebBrowserコントロールを使えばよさそうだ、という所まではたどり着いたのですが、
どんなメソッドがあるのか、どのメソッドを利用すればいいのか等がさっぱりわかりません。
ネットで調べてみてもいろんなWebBrowserコントロールの情報が混在していてどれがどれやら…orz
>>540 IEnowebbowserコントロールはHTMLDocumentオブジェクトをプロパティ .document で公開してるから
後はそこから調べるといいかも(DOMツリーなのでかなり広い)
情報あるなら使うコントロールの似たような名前で探して、それをやっていけばいいんじゃないかな
542 :
538:2007/08/14(火) 20:16:24
>>541 HTMLDocumentオブジェクトまでは何とかたどり着いたんですが、
そこからがどうにもうまくいかんとです。
Set doc = WebBrowser1.Document
If TypeName(doc) = "HTMLDocument" Then
Form1.Caption = doc.Title
value = doc.body
End If
こんな感じじゃあかんのですかね…?
ふざけてんの?
544 :
デフォルトの名無しさん:2007/08/14(火) 23:29:59
VBでRPG作りたいんだけどどうしたらいいか全く検討がつかない。
目標はDQです。
とりあえず戦闘画面でも作ってみたい
>>544 じゃあ先ずはアタマの中にある戦闘シーンを紙とエンピツでプロットしてみることだな
ソレが嫌なら諦めろ、途中で投げ出しても諦めろ、出来たらまた来い
546 :
デフォルトの名無しさん:2007/08/14(火) 23:53:01
普通に戦闘シーンなんですけどそのキャラに応じて戦闘で使えるコマンドが
違うけどどうしたら同じ場所に違う内容が表示できるかわからない。
ようするに戦闘シーンのたたかう・にげる・じゅもんなんかを表示する
方法がわからないってことです
>>546 とっても稚拙な方法も思いつかない?
たとえばMSPaint.exeで書いて、それを紙芝居風に表示するとかも?
548 :
デフォルトの名無しさん:2007/08/14(火) 23:56:18
変なこと言ってる奴がいるけど
とりあえず時間があるならVBで1から作るんじゃなくて、
出来合いのRPGツクールとかで作ってしまうといいと思うよ
549 :
デフォルトの名無しさん:2007/08/20(月) 09:11:57
>>546 ツクールじゃなくて、ゲーム作りたいんなら、まず簡単なじゃんけんゲームからで良し。
どうしてもRPG作りたかったら、
とりあえず自分で戦闘のフローチャート作成してみれ。
ずっと俺のターンを採用すると楽
戦闘終了条件もないクマ
>>544 すんごい遅レスなんだけど
何かを作りたいと思う、その気持ちは大事だよ
俺も小学生のころ、ベーマガを解析したなぁ
今、ベーマガのようなPG投稿雑誌が無いがとても悲しい
変わりに、ネットが発達してるからゲームをソースごと公開しているサイトでもさがして
ソース解析してみるのがいいかも
552 :
デフォルトの名無しさん:2007/08/28(火) 12:02:52
超初心者的質問ですみませんがどなたかお願いします。
VB5.0 + ActiveReport1.5で帳票を印刷していました。
環境はXPです。
去年SP2に上げたところ、
エラーログが出るようになりました。
ErrCode :VB-2950
ErrMessage:予約済みエラー
SP2では対応できない と考えるべきでしょうか?
それとも
参照箇所を変えることで対応できるのでしょうか?
回答お願いします。
>552
こんなとこで聞くよりグレープシティに聞いたほうが早くね?
554 :
デフォルトの名無しさん:2007/08/28(火) 15:38:35
vb6を終了する時にvbのエディタが閉じた後、
異常終了(MSに報告する、しないの画面)が出るんだけどw
100発100中ですww
変数名が重複してないか確認汁
>>554 エラーメッセージは?dllとかのエラーかな?
>>554 そんなんいくらでも原因がボロボロでてくる情報だ罠
グチじゃないならもっと詳細書くといい
>>555-557 レスありがとうございます。
会社で再インストールするように言われて
言われた通りにしたら直りました。
現象も出ないので原因ももう分かりませんww
いまさら聞くのは恥ずかしいのですが・・・
GOTOを使っちゃダメ、ってのはもはや「信仰」でしかないですよね?
ReturnやBreakを頻発させず、進行がすっきりすると判断される場合は、
躊躇なく使っていいものですよね?
それはそうなんだけど、結局そんな場面なんて滅多に現れない。
結局影の薄い存在となったことには変わりないな。
いやGOTOを使わなければいけない場面などない
いまどきアホ?って言われるな 精進しなされ
>>560-561 例えば、Ifで条件分けをする場合など、その都度インデント入れますよね。
もし、その条件の値が最初から分かってる場合は、プロシージャの最初の方で
条件に合致しない場合を、プロシージャ最後の終了処理に直接飛ばすようにすると、
メインの処理部分は、ひとつインデント無しで書きやすく、見やすくなると思うんです。
条件が多く、WithやFor、Doなども必要な場合は、より効果的だと思うのです。
--------------------
If HOGE = False Then
Goto ENDP
End If
メイン処理
ENDP:
終了処理
--------------------
いまどき無条件にgoto禁止する奴はいない。
自分の頭で物事判断できない教条主義的な馬鹿は別として。
>>562 そいういう関数化が必要なのは関数にしてしまうのがいい
昔っからのGOTO禁止もあるけど、VB6がReturn文を陰ながらサポートしてることも忘れないでください
>>562 GOTO文の本当の怖さは、無条件にジャンプできることじゃない
ジャンプした先で「なぜジャンプしてきたのか?」が曖昧になるからだ
メソッドやプロパティも「なぜ呼ばれたか?」は呼ばれた側からわわからないぞw
そんなもの通常は知る必要はない。
gotoを忌避すべき理由はそんな理由ではなくもっと単純なことだ。
実際に自分でスパゲティコード書いてみれば体感できるよ。
要するにコードを上から下に読めないことが端的に「ヒトにとって」問題なんだよ。
逆に言えば、goto使ってもコードを「上から下に読める」ことが維持されていれば
普通はそんなに可読性は破壊されない。
>>566 それはgoto固有の問題じゃないよな?
>>567 何をいってんだろうね
じゃあ逆に聞くが、goto以外で「下から上に戻る」コードを
書く方法を教えてくれよまったくw
ループとか寝ぼけたこと言うなよ
ローカル変数を全部グローバルにもっていって、
Procedure line3
end
Procedure line2
end
Procedure line1
end
Procedure foo
call line1
call line2
call line3
end
みたいな?
570 :
559:2007/08/31(金) 11:56:57
あるプロシージャ内でのみ、内容の同じ数行のコードを複数回記述する場合・・・など、
関数にして外に出すよりも、GOTOでそのプロシージャの末尾に置いておく方が、
可読性は破壊されないどころか、向上するのではないかと考えています。
その都度関数を作っていると、引数や戻り値の仕様もそのたびに
考えなくてはならない場合も多く、時間的にもGOTOを選んだ方がいい場合が、
必ずあるように思います。
↓こうなるよりは、
>>562の方がよいと思うのですが・・・。
--------------------
If HOGE = False Then
Call 終了処理関数
Exit Sub
End If
メイン処理
Call 終了処理関数
--------------------
Function 終了処理関数()
終了処理
End Function
--------------------
スパゲティと教条主義以外に、GOTOを忌避する理由って、ありますか?
>>570 そんなコーディングしか思いつかないのならいいんじゃない?
センスがいいとか悪いとか誰にも見せなきゃこまらないっしょ
>>570 一つの関数しか呼ばれない処理をやたらと関数に括り出したくない、
という発想は必ずしも間違ってないと思う。(ただし、状況的に不適切な場合はあるよ)
ただ、570のような処理は別にgoto使わずに、かつ各場合分けに共通の処理を
関数に括り出さずに書けるだろう。
goto使わない奴って、on error gotoも使ってないのかな?
gotoに賛成も反対する気も無いが、気になる
>>572 こういうことでしょうか?
--------------------
If HOGE = True Then
メイン処理
End If
終了処理
--------------------
メイン処理が長くなり、WithやForなどでさらにインデントが挟まるような場合は、
>>562のような書き方の方が、見通しがいいと思いました。
例えが悪かったですね。
コーディングしている最中に、「ああ、ここでGOTO使えれば早いのになぁ」と
思う場面が出てくることがあるんですが、いざこういう話をするときに思い出せないです。
>>573 GOTO絶対不可な先輩も、On Errorのときだけは使ってますね
>573
On Error Gotoは意味合いが違うから除外
除外らしいから今後はこうしよう
On Error Goto Label
Error 513
On Error Goto 0
>>575 gotoの動作としてはまったくかわらんよ
ローカル内で考えると、goto HANDLEがErr.Raiseって感じだし
やっぱり、gotoを絶対使わないという信条の人なら
On Error Resume Nextを使う必要があるんじゃないのかね
HANDLEじゃないLABELの間違いw
>>568 は
>>569見たいな状況
「上から下に読める」なんてドンだけフローチャートの世代なんだ
>>570(
>>559)
>>564がぬるぽ
>>574 >>565がぬるぽみたいだ
「エラーでジャンプ」し尚且つErrオブジェクトで意味も参照できるからいいんじゃないかと
これは If cond Then A Else B 文で「condで A または B にジャンプ」という意味があるのと同じ
したがって
>>576 はちょっとナンセンスな切り返しだ
ただVB6の言語仕様が昔ッからのを引きずっているのは確かで、
その状況で「GOTOを禁止する」ことが果たして万全なのかどうかは俺にはわからない
本嫁
.NETだとtry-catchできるの?
>>574 だから、教条主義的にgotoを禁止するのは馬鹿げてるけど
大概の処理はgoto無しで、かつgoto使った場合より可読的に書けるよ。
それと、なんか君は「コードを書く時」の目線ばかりを優先しているように見えるけど、
(どうしたらよりコンパクトに書けるか、みたいな)余計なお世話だろうがよくない兆候だよ。
「コードを読む時」目線で考えるべきだ。
つまり、他人にとって、あるいは一年後の自分にとって「読んで理解しやすいかどうか」を
(gotoならgotoの使用の是非の)判断の指針にすべきだ。
>>579 上から下に読み下せないコードはヒトにとって読みにくい、
という経験的事実がフローチャートとどう関係するんだろうねw
構造化プログラミングすら理解してないなら黙ってればいいのに。
ループ、分岐、関数、といった「構造」に抽象化するのは上から下に読み下すためだろう。
ループも分岐も、ループや分岐という概念を知らずそれを「ループ」や「分岐」として
認識できなければ、ただのgotoだ。
というか、日本語書けよ馬鹿。
582 :
559:2007/08/31(金) 20:25:54
いちおう、毎回「コードを読む時=後で他の人がメンテナンスする時」
を意識しているつもりではいるのですが。
(GOTO嫌いな人にとって感情的に読む気が失せる・・・のは無視します)
「大概の処理をGOTOを使った場合より可読的に書く」
イメージがなかなか沸かないです・・・。
んーそうだなーじゃあちょい視点を変えて
飛び元と飛び先のロジックの関係を考慮しなくちゃならなくなるケースを考えてみるとか。
複数の場所から一つのラベルにGotoが貼られているとする。
仕様変更でラベル以降のロジックを修正しなきゃならなくたった場合、呼び元の全ての
ロジックへの影響を考慮しなくちゃいけない、とか。
それは条件分岐でやる場合でも、関数を使う場合でも
同じことを考慮しなくちゃならないと思うけど
>>581 まあ本当に構造化プログラミングを理解してる人間なんていないと思うんだが
もしかして、構造化=ソースの構造化、と間違えてる?
なんでゲーム作る奴って、ターンとかロールなんていう言い方するんだろうね。
実際にプレイする小中学生とかが
ターンとかロールなんて言われても何の意味だかわからんだろ。
やたらと横文字使えばいいってもんじゃねーぜ。
だから、ゲーム作る奴はバカって言われるんだよ。
もう一度言ってあげようか?
バ・カだよ。バ・カ
何言ってるかわからん
vb関係ないし
日本語でおk
ってか人間でおk
そこはゲームなんて横文字を使うなと指摘するべき
俺の場合、ゲームのきっかけが古いADVから入ったから小学生時代に
英単語覚えたな
昔のADVはコマンドをすべて、自分で考えて打ち込まなければならなかったしかも英語でw
もちろん小学生の頭じゃほとんど理解不能でクリアしたのはずっと後だったけど
CreateObjectでInternetExplorerを操作しているのですが
このIEのユーザーエージェントを変更する方法は
ありますでしょうか?
自己解決しました。
navigateの引数にありました。
VB6からADODBを使って、MS SQLServer2000 上のテーブル/ストアドプロシジャ更新を行いたいのですが、
SQL文の区切り(?)に使われている GO がエラーとなってしまいます。
'現在試している方法
Dim hTextStream As TextStream
Dim hFso As New FileSystemObject
Set hTextStream = hFso.OpenTextFile("foo.sql")
Call MyConnect.Execute(hTextStream.ReadAll())
foo.sqlは、EnterprizeManagerで作成したテーブル、ストアドプロシジャの削除、登録のSQL文で、
当然ながら、クエリアナライザでは正常に動作します。
クエリアナライザで実行する場合と同じ結果を、VB6で得られないでしょうか。
>>593 GOを無視し(というか、//に置き換え)てやってみたら、希望通りの動作になった様です。
GOってのはあっても無くても動作に変わりは無いのですかね?
とりあえず、簡単に試したところ正常に動いているようなので、これでいってみたいと思います。
ありがとうございました。
>>594 /\___/ヽ ヽ
/ ::::::::::::::::\ つ
. | ,,-‐‐ ‐‐-、 .:::| わ
| 、_(o)_,: _(o)_, :::|ぁぁ
. | ::< .::|あぁ
\ /( [三] )ヽ ::/ああ
`ー/-‐‐ヽ‐‐´ ぁあ
596 :
デフォルトの名無しさん:2007/09/06(木) 23:34:19
VB6.0を最近使い始めたものなんですが
配列を2つ作って一方がもう片方を参照するには
どうすればいいのでしょうか?
>>596 VB6の配列は値型です(関数のByRefで渡した場合の仮引数は参照ですが)
どうしても、という場合はクラスでラップするか、関数の仮引数としてByRefで渡してあげてください
598 :
596:2007/09/07(金) 12:37:04
ありがとうがざいます
試してみます
599 :
デフォルトの名無しさん:2007/09/07(金) 15:26:15
600 :
[Fn]+[名無しさん]:2007/09/08(土) 11:46:27
年寄りの手習いで,VB6始めようとしています。
すみませんが,VISTAに普通にインストール&使用は可能でしょうか。
動作可能にはなっていますが,特にインストールの必要なファイルなどは
あるのでしょうか?
602 :
デフォルトの名無しさん:2007/09/08(土) 12:36:46
603 :
[Fn]+[名無しさん]:2007/09/08(土) 20:29:57
>>601 ありがとうございます。
インストールしていますが,問題ありのメッセージが2度ほど出てきます。
無視して続行していますが,大丈夫しょうか。
みなさんは、画面設計時に、オプションボタン(ラジオボタン)と
ドロップダウンリストのどっちを使うか悩む事ってないですか?
どういう判断基準で、使い分けしてますか?
見たマンマじゃない?
考えるな感じ取れ、だよ。
【ドロップダウン】
○ 省スペース
× 選択肢の「見通し」が悪い。
ラジオボタンはこのちょうど反対。
上手く伝えることが出来るか不安なのですが・・・。
ファイルの送受信(メッセンジャー等に付いている様な)を行うプログラムを作成したいと
考えているのですが、VB6.0にそのような機能はついているのでしょうか?
また、上に挙げた様な機能がなくともそのようなプログラムを作成する事は可能なのでしょうか?
もし参考になりそうな本等がありましたら教えていただけると幸いです。
> VB6.0にそのような機能はついているのでしょうか?
ついてない。
> そのようなプログラムを作成する事は可能なのでしょうか?
可能。
> もし参考になりそうな本等がありましたら教えていただけると幸いです。
「○日でできるVB6.0」とか「VB6.0入門」とか、そういう系統。
608 :
デフォルトの名無しさん:2007/09/13(木) 13:50:31
VB6.0とSQLSERVERで開発
数量、単価、金額、消費税、原価率・・・などなどの四則演算を行う場合、
各々のデータ型をどう定義したら良いのでしょう。
VBでSingle/Double
SQLSERVERでfloat/decimal
ネットとかでよく見かけるのは、これらの浮動小数点型なんですが、
これって誤差がつきものですよね?
システム上同じ数字を出す全箇所について、必ず同じ計算ロジックを通すという
コーディング制約を設けて、それを遵守しないと、絶対どこかで誤差が出ますよね?
さらに、VBはDouble(倍精度)、SQLはfloat(単精度)などの定義をしている
例をことさらよく見かけますが、こんなのはアリなんでしょうか?
「金額が関わるところに浮動小数点を使うのはあり得ない」と断言しているサイトも
どこかで見ました。
必ず固定小数点型、VBはCurrency・SQLはmoneyだろう、スピードは落ちると言っても、
最近の機械ならそれこそ誤差の範囲だ・・・という感じの紹介で。
私も、数字に誤差の出ない固定小数点がいいんじゃないかなー、と思っています。
でも、現実はどちらかといえばそうじゃないことの方が多い・・・・
一般的には、どう考えるものなんでしょうか。
エクセルで作れば?
610 :
608:2007/09/13(木) 14:21:19
間違えてました、すみません。
decimalは概数型じゃないですね。
SQLSERVERでの単精度はreal、倍制度はfloat。
VBはDoubleでSQLはfloatなのは、データ型としては同じだから、
そこは問題ないんですね。
>>609 エクセルのセルに値を渡して、シート関数で計算させて
結果を読むってことでしょうか?
言っておくが、二進法のSingle/Doubleだって誤差の無い計算は可能だし、
Currency/Decimalだって何進法でも起こる誤差を避けることは不可能。
ただ、十進法で有限小数となる値の中には、
二進法へ変換すると無限小数になるので正確に表現できない、
つまり有限桁しか扱えないコンピュータでは、それだけで打切り誤差が発生するものがある。
だから十進法中心に考える人間には、一見すると誤差が付き物に思えるだけ。
もちろん、金融では致命的な弱点となるので、Single/Doubleは脱落。
また十進法の浮動小数点数 (VBのDecimal)はどうかというと、
下手に計算すれば情報落ちが問題になりやすいし、
VB固有の事情としてDecimal型の値はVariantに入れるしかないという
不便さもあって、駄目ではないが要注意。
そんなわけでCurrencyに落ち着く。もちろん整数だけなら整数型がよい。
612 :
デフォルトの名無しさん:2007/09/13(木) 14:52:17
>>608 全部浮動小数点でOK
最終的に、小数点以下の金額にならないように
1円まで切り上げるでしょ?
その時に元の金額(整数)を使って金額の誤差がないか
1円の増減がないかを再計算するのさ〜
経理、給与計算プログラムの常識だよ〜
そして余った1円を自分の口座へ振り込むようにすれば完璧。
どこのスーパーマンのネタかと
>>611 軽くぐぐってみました。
一般的な企業の販売仕入や財務、給与などのシステムでは、
まず無理数の計算などは行われないし、丸めだけしかるべき関数を作れば、
やっぱりVB:Currency SQL:moneyで十分対応できますよね?
>>612 > 元の金額(整数)
この整数って、どの段階で出てるものでしょう・・・?
また、これを使って金額の誤差・増減の有無を、・・・再計算?
すみません、よくわかりません・・・
Endで終了させても、タスクマネージャーのプロセスに残ってしまう時があるので、
これを確実に終了させるにはどうしたらいいのですか?
>>616 それは変な話だな・・・
自分自身はEndでたいてい残らずに消えるはずですが。
むしろ自分以外のリソースやプロセスが残る可能性がある。
あ、でも
>>616はどのプロセスが残ってるのかまでは書いてないのか。
どうなんでしょう?
一般論としては、UnloadやTerminateイベントでリソースの後始末をして
Endを使わないように、ということです。
Endを使わないとそれこそ残る、というならそれは潜在的なバグだ。
618 :
看護婦 :2007/09/16(日) 19:50:07
今晩は。VB6 アクセス でデータベース作ってますが、起動したら
「問題が発生したためVBを終了〜」
「アプリエラー "0x04246c88"の命令が"0x1da1adad"のメモリを参照しました。メモリが"written"になることはできませんでした。」
とのこと。
これって何がダメなんですか?
どなたかお願いします。
619 :
デフォルトの名無しさん:2007/09/16(日) 19:53:50
VBでの正規表現について恥ずかしながら教えてください。
リンクアドレスの<a href=〜>タグのアドレス部分は下記で取得できたのですが、
str=Pattern"<a href=""([^>]*(\.jpg|\.gif|\.png))"" target=""_blank"">(.*)</a>"
単純に、
http://abc.defg.net/hijk/lmn.jpg とかの単純なjpgファイルへのアドレス文字列の正規表現が思いつきません。
教えてください。
俺なら、https?://.*\.jp(e?g|e)くらいにしておいて、
あとはURLかどうか調べるAPIがあったはずだからそれに任せる。
621 :
619:2007/09/16(日) 23:28:29
おお、ちょっと調べてみます。
>>618 いや〜それだけの情報だと
"0x04246c88"の命令が"0x1da1adad"のメモリを参照するのが
ダメなんじゃないかなあ〜としか。
F9やF8でダメな行を特定してみましょう。
あとここはささくれだった人が多いので、「エスパーw」みたいな
書き込みは華麗にスルーしてください。みんなイライラしています。
623 :
看護婦 :2007/09/17(月) 17:13:39
今晩は。プログラムの一部を書き換えたら解決したようです。
>>662 お騒がせしてすいませんでした。
624 :
デフォルトの名無しさん:2007/09/22(土) 07:33:11
2007年の第3木曜日の日付を20070918という感じで抜き出したいんですが、
自分で書いてたのが、loopしまくりで自分でワケわからなくなってしまいました。
なにか簡単な方法がありますかね?
>>624 > 2007年の第3木曜日
ちょっとおかしいよな.適当に月指定があるもんだとしたぞ.
だめでも,下の関数使える.
しかもついでに,2007/9/18は第3火曜日だ.
Public Function XthWeekDay( _
ByVal Year As Long, _
ByVal Month As Long, _
ByVal x As Long, _
Optional ByVal week_day As VbDayOfWeek = VbDayOfWeek.vbSunday) As Date
XthWeekDay = DateSerial(Year, Month, 1)
While Weekday(XthWeekDay) <> week_day: XthWeekDay = XthWeekDay + 1: Wend
XthWeekDay = XthWeekDay + 7 * (x - 1)
End Function
で, format$(form1.XthWeekDay(2007,9,3,vbTuesday),"yyyymmdd") みたいに.
626 :
デフォルトの名無しさん:2007/09/23(日) 16:48:16
処理を実行している旨を画面に表示させておきたいのですが、
VBAでいうとApplication.Screenupdateみたいなのってありますでしょうか?
sub main()
Label1.caption = "処理を実行中です"
'この時点でフォームに実行中の表示をさせたいんです
call データベースに接続
Label1.caption = "処理が完了しました"
End sub
reflesh メソドとかのこと?
VBAよくしらんけど
628 :
626:2007/09/23(日) 17:23:41
>>627 うわ、出来ました。ずっと悩んでいたのでとても助かります。
ありがとうございました。
まだPGと言うのも恥ずかしい新人です。
VB6.0で作られてるのをAccess2000のVBAで作ってみてるんですが互換性はあるんでしょうか。
wiki見る限りVB7から互換性はないとのことだし
できることならそのまま流用、自己解読のためにも互換性の有無を教えていただけるとありがたいです。
無
>629
VBの言語仕様自体は共通。
ただしフォーム等のオブジェクト構造はほぼ別物。
ほとんどの場合、コピペするだけじゃ動かないと思っておいたほうが良い。
632 :
629:2007/09/26(水) 17:54:23
>>631 言語が一緒、ということは片方がわかればもう片方もわかる、というわけでもないか
もう少しソースとにらめっこしてきます。ありがとうございます。
633 :
デフォルトの名無しさん:2007/09/27(木) 13:16:16
こちらでいいのかわかりませんが質問させてもらいます。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Button1.Text() = "動作中"
Timer1.Interval = ComboBox1.Text
Timer1.Enabled = True
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Button1.Text() = "時間です"
Beep()
Timer1.Enabled = False
End Sub
End Class
という、タイマーのプログラムを作ったのですが、
タイマーの動作中はButton1をクリックできないようにしたいのですが、
どのようにプログラムを変えればよいのでしょうか?
お教えください。よろしくおねがいします。
>>633 Button1_Clickの時に、
Button1.Enabled = False
で良いのでは?
あと、Timer1_Tickで
Button1.Enabled = true
で戻しとく
635 :
デフォルトの名無しさん:2007/09/27(木) 14:53:20
>>634 なるほど、有り難うございます。
ってことは、
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Button1.Text() = "動作中"
Timer1.Interval = ComboBox1.Text
Button1.Enabled = False
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Button1.Text() = "時間です"
Button1.Enabled = true
Beep()
Timer1.Enabled = False
End Sub
End Class
で、よいのでしょうか・・?
初心者なものですみません・・・。
>>636 わかりました。ありがとうございました。
スレ違いでしたか・・。すみませんでした。
638 :
デフォルトの名無しさん:2007/09/28(金) 18:00:27
639 :
638:2007/09/28(金) 18:15:29
とりあえず今の状態で
実行→完全コンパイル後に開始
を行うと、変数「AcroPDF1」がハイライトされ、「コンパイルエラー:変数が定義されていません」
と表示されます
VCで作れば?
VC3000のど飴〜
>>642 ありがとうございます。書いてあるとおりチェックは入れております。
AcroPDFのツールをForm1のフォームに貼り付けてみました。
ですが、メニューを押してもページ数が表示されるとかそういった事は起こりません。
まず「PDFファイルパスを入力してください」というウィンドウが出るので入力してOKを押します。
するとForm1というタイトルのあるウィンドウが出てきますが、この時「AcroPDFのツール」を
貼り付けた部分は透明になり、その下にある画面が表示されます。そしてメニュー(pGetPageCount)を押すと
ディスクアクセスは起こるようですが何の変化も起こりません。うpして頂いたzipを解凍してやっても同様です。
「(フリーの)Adobe Reader 7.0が必要」なのではなくて「(製品の)Adobe Acrobat 7」などが必要なのでしょうか?
まあそういった事で駄目なら他の方法を探しますorz
API使って現在立ち上がってる他のウィンドウを一番手前に
表示するプログラム作らないといけないんですが
APIの使い方が分かりません
ググレカス
>>644 APIは初心者向けの内容じゃないから他スレで聞いた方がいいですハゲ。
自分自身のプロセス(exe)内だったらForm.ZOrderとかがあります。
他プロセスだったら、使うのはFindWindowとかSetForeGroundWindowだと思います。
あとはググレカス。
あと、最近のWindowsは他プロセスのウィンドウを手前にしようとかしても
点滅するだけで手前に来ないようになってます。よろしく。
気色の悪い奴だなあ。。。
>>647 何度もありがとうございます。原因を探してみます。
矢張り当方が根本的な部分で理解していない可能性もある訳ですしねorz
650 :
デフォルトの名無しさん:2007/10/03(水) 10:10:43
VB6のSP6です。
あのう、IEのツール->インターネットオプションで出てくるような、タブコントロールの
乗ったダイアログで、かつそこでの設定変更をリアルタイム(というかイ
ンタラクティブ)で、元のウィンドウに反映されるようなのをダイアログ
を作りたいのですが、
(つまり、適用を押さなくてもラジオボタンとかを
変えただけで変更が反映されるような)
これはやはり
−フォームで自作する
−ラジオボタンの変更イベントをキャッチしてイベントドリブンで自分で作る
という感じで皆さんやっておられるのでしょうか?
なんかいいアクティブXとか標準のコンポーネントとかありますでしょうか。
なにとぞよろしこ。
>>650 逆にあったら不便だろ
言わなくても分かってると思うから今後誰か見たときのためにかくけど,自分中心で考えたら世の中まわりゃせんよ.
VB6はそのへんの処理の抽象化があまり出来ない言語だからゴリゴリ作るしかほかない.
何かデザパタ参照するとちょっとは楽できるかもしれんが.
652 :
650:2007/10/03(水) 11:12:21
>>651 おせわになりましこ。結構ググりまくって自分の理解ぎりぎりのところで
文章書いているので変な日本語スンマソン。
>デザパタ
ググッテみたらアプリケーションウィザードでいろいろ作ってみるというのを
ハケーンしてワクテカしながらいろいろ作ってみたけど肝心のツール->オプション
が空で、実行したら「てめえでコードを記述すれ」と言われてガカーリシターヨ。
なんか、近いのご存じでっか?
654 :
650:2007/10/03(水) 13:16:51
>>653 サンクスコ。そんな回答でいいの。
もともと抽象的というか、何から手をつけて良いのかわからない段階だったので、
テンプレになるものが「ある」のか「無い」のかわかればそんでいいの。
誰もが一度は通るべき道を掲示板で聞いて楽しようと思っているのではなくて、
誰もが利用している便利なテンプレがあるのを知らずに何ヶ月も悩むのを避けた
いだけなので、みながゴリゴリ作っている事だと分かれば安心してフルパワーを
つぎ込んだりあっさり諦めたりできる。その割り切りができるのがありがたいの。
しっかし「デザインパターン」ってのも一種の予約語なんだな。サンキュスコ。
世話になったね。
>>650 なんか変なアドバイスをしてる人がいるけど、別に君が欲しがってる様なUIは
必ずしも変ではないし、またデザインパターンなんて大げさなこと言わなくても
実現できるよ。
大雑把にはこんな方針でやればいい。
■ 設定値は(その設定が属する「存在」を抽象化した)クラスのCHogeの
プロパティとして実装する。
■ Form1(君のいう「元のウィンドウ」)と設定用フォームSettingFormには、
どちらもCHogeの同じインスタンスHogeへの参照を持たせる。
■ Hogeは設定値が変更されたとき、イベントを生成する。Form1はこのイベントを
受信して設定値の表示を更新する。
■ SettingFormのコントロールの値が変更された時、Hogeのプロパティを連動して変更する。
というか、普通このぐらいのことは自分で思いつかなきゃダメダメだな。
そんな程度ならいまさらVB6なんて終わってる言語やってもしょうがないと思う。
>>655 ってだからそれ自体は普通のイベントの発火とアクションだって.
しかも親子で明示的に参照しあってると循環参照になるから普通はWithEvents使うって.
…って言っても分かってくれないんならもういいや
日本語書けよ。
655の文章のどの部分に対して「ってだから」なんだ?
訳が分からんよ
>>656 >…って言っても分かってくれないんならもういいや
むしろこっちの方がもういいや
>>657 全部だよ.
>>655の書いてることは,要はイベントの発火とハンドリングをVB6のイベント処理とは別の独自の方法でやるってことだろ?
非標準な方法を使うと色々コストが高くつくし,
何より「イベントの発火の結果何をするかは設定要素次第」なんて言ったら,
もはや「イベントは発火するけどその結果をどう使うかは貴方次第」ってことになって,
>>653で述べた結果になると思うってことだ.
つまり,それは「何でも使えるけど何にも使えない」物になるってこと.
具体的に
>>655だと,たとえば
■ SettingFormのコントロールの値が変更された時、Hogeのプロパティを連動して変更する。
の部分が「何にも使えるけど何にも使えない」部分だと思われ.
「Hogeのプロパティを『〜のように』連動して変更する」だったらまだ使い物になる.
けれど「Hogeのプロパティを変更する」じゃ,アタマ空っぽの人間に仕事を押し付けてるようなもんだ.
まとめると,もともとの
>>650のしたいことは”イベントを処理すること”を工夫するのではなくて,
”イベントによって行う処理”を工夫して纏めることだと思うんだが,
あえてイベント処理自体を自力で実装する
>>655はお門違いだと思うってことだ.
>>657へ.
ちゃんと日本語で具体的に書いたぞ.
そっちも具体的に書いてね
660 :
デフォルトの名無しさん:2007/10/03(水) 22:49:13
>>655 > またデザインパターンなんて大げさなこと
大げさか。
>>659 >要はイベントの発火とハンドリングをVB6のイベント処理とは別の独自の方法でやるってことだろ?
誰もそんなこと書いてないよ。
後の部分については、言っては悪いが日本語になってない。
リカイデキマセン。
まあよく分かってないならあんまり無理しなさんな。
はいはいそうだね.
>>661 > 誰もそんなこと書いてないよ。
じゃあなんて言いたいの?
理解できない部分があるのはお互い様だろ.
じゃあなんて言いたいって、ちゃんと書いてあるじゃんw
むしろ
>>655のどこをどう読めば
「イベントの発火とハンドリングをVB6のイベント処理とは別の独自の方法でやる」
なんてユニークな解釈ができるの?
「くだすれ」だから当該言語について初心者なのはまあ許されるかもしれないが(でも
お前さん回答者なんだろw)日本語の読解および表現力に関して初心者なのはどうなのよw
思うに
>■ 設定値は(その設定が属する「存在」を抽象化した)クラスのCHogeの
>プロパティとして実装する。
の「存在」とか言う部分も相当ユニークだと思うが・・・
まあいいや,解釈がユニークなのは誰しも当たり前だし,
当たり前のこと言ってる奴見るのも飽きるからそろそろ寝る
またな
667 :
デフォルトの名無しさん:2007/10/03(水) 23:23:33
ひらがなの「あ」とかの書き順をVBでアニメーションしようと思って、、、
ピクチャボックスに画ごとに色分けて作った「あ」という画像を表示して、
画順にPSetで塗りつぶしていくってのを作ってみたんですが、
1画塗り終わるのにめっさ時間がかかってしまうんです。
なにか、早くスムーズに、塗りつぶしていく方法ってあるでしょうか?
AVIでデータ作っとけよ
669 :
デフォルトの名無しさん:2007/10/08(月) 19:54:23
今度、メールの送信とFTPでダウンロードするプログラムを短期で作成することになりました。
ActiveXを使ってやろうと思っているのですが、GrapeCity以外で、何かよいものをご存じありませんか?
質問失礼します。
VB 2005でデスクトップマスコットを制作しているのですが、
マスコットとメッセージの同期移動がどうしても上手くいきません。
それぞれ個別のフォームで表示させていて、
タイトルバーを非表示にしてある状態で
↓のサイトを参考に同時移動の処理を考えたのですが
どうしても上手くいきません。
ttp://dobon.net/vb/dotnet/form/moveform.html 何か良い案は無いでしょうか?
よろしくお願いします。
672 :
671:2007/10/09(火) 17:35:35
すみません、VB6.0以前でしたね。
スレ違いでした。
673 :
デフォルトの名無しさん:2007/10/09(火) 18:33:41
>>670 情報ありがとうございます。
これから、使用例など見て検討したいと思います。
個人の作者さんというのがちょっとネックか?というところです。
674 :
デフォルトの名無しさん:2007/10/10(水) 23:26:41
すんません。初心者で宙な私に教えてください。
VB6で変数を宣言しなきゃバリアントになるというのはどこみても書いて
ありますが、その時のスコープはどうなるんでしょうか?
これも標準モジュールかフォームかクラスモジュールかによって違うんでしょうか?
いや、自分で書くときゃ必ずOption Explicitなんですが、買ってきた本に
書いてあるコードが理解できない。。。
>>674 基本的に閉じたスコープで宣言したものになるはず
日本語でおkな質問に日本語でおkな回答を返すとは。。。
677 :
674:2007/10/11(木) 00:05:45
>閉じたスコープ
回答感謝。ググッテみたところそのものずばりは出てこないけど、
つまり使われているルーチン(プロシージャとかファンクションとか)
と同じになるって事?
(未宣言の変数がパブリックプロシージャで使われていれば、
その変数もパブリックになると?)
やすくVB6を手に入れる方法おしえれ
>>677 自分の居るスコープで宣言したのと同じになるってこと.
というか変数を使う段階がメソッド内部でしかないから,メソッドで宣言したものと同じになる
はずね
>>677 VB スコープ でググったら、そのものずばりがでてきたけど
>678
MSDN
>678
MVP
683 :
デフォルトの名無しさん:2007/10/14(日) 14:06:00
[----睡眠-----][-----2ch-----][-昼寝-][---2ch---][-----睡眠-----]
このように棒状の図形をドラッグで繋げていって1日のスケジュールを作りたいのですが
つなげたい場所付近でドロップすればぴったり吸い付くように張り付く動作をさせるには
どうしたらいいですか?
>>683 移動先が次の棒の先端を越えたら、必ずその次の棒の先端と同じ座標に、
今の棒の移動先が固定されるようにすればいいんじゃ?
685 :
デフォルトの名無しさん:2007/10/15(月) 18:10:23
プログラムの「前」ってどっちですか?
Private Sub Button1_Click(・・・)
Dim k, i
k = 0 ← こっちが前?
For i = 1 To 10
k = k + i
Next
Button1.Text() = k ← こっちが前?
End Sub
プログラムの「前」って何ですか?
どちらが先に実行されるか?って話しかな?
>>685のコード懐かしいな。VB6買った当時はまだ高校生で何となく
>>685見たいな1〜Nまで足す簡単なプログラム組んで遊んでたな。
上と下でいいじゃん
689 :
デフォルトの名無しさん:2007/10/16(火) 01:49:05
私の持っている本に、WordBasicが難解だった理由が、「VBAのようにオブジ
ェクトとして文書を取り扱うことができるようにはなっておらず、Wordの操
作がそのままステートメント(命令語)として提供されていたため」と説明
されているのですが、意味が理解できません。どなたか、噛み砕いて説明し
てください。
>>685 「前方」 と言うと、ファイルの最後の方向を指す。
>>690 んでこれは forward の直訳なんだけど、あまり好きでないのは確か。
個人的にはあまり前後で表現しない方がいいと思う。
>>689 じゃあ先ず噛み砕いて説明して欲しい理由を噛み砕いて説明してください
初心者です。すみません。
質問です。
環境 WinNT4.5 + VB5
"プリンタのスプールを制御して、特定のプリンタでは必ず2枚印刷する"
みたいなモノはVBで作成できますか?
業務用ソフトで、領収証の正副印刷が対応されてなくて、
ドライバに印刷部数設定がないので不便を感じており、フリーソフトを探しましたが
見つからず、VBなら触ったことがあるので、どうにか業務を改善したいのです。
どなたかご教示お願い申し上げます。
乱文すみません
その業務用ソフトを直せばいいんじゃない?
ちなみに質問の答えは「無理」。
俺ならできるよ
696 :
デフォルトの名無しさん:2007/10/16(火) 23:17:23
>>695 はいはい。
自慢したいだけの厨房は自分のケツの穴に自分のチンコを突っ込んでオナってろや。
おまいが出来ても意味が無い。
質問主ができなきゃどうしようも無いんだよ。
レシートプリンタの機種によっては印刷設定を直すだけで可能かもな
698 :
デフォルトの名無しさん:2007/10/16(火) 23:42:32
むかしだったらドットインパクトプリンタつかって、複写紙に印刷で片付いたけどな。
こないだ免許切り替えに行ったら今でもドットインパクトプリンタだったよ。
で、ドットインパクトプリンタって1枚切り取ると必ずもう1枚無駄が出るから
それを避けるために自分の番が済んだら次の人が済むまで待たされて
次の番の人の分がプリントアウトされたら自分の分のプリントアウトがもらえるという
なんとも悲しくなる運用だったよ。
699 :
デフォルトの名無しさん:2007/10/17(水) 00:01:14
Accessにあるマスタ情報をコンボボックスでリスト表示させたいのですがやり方がわかりません
DBComboを貼り付けてみたのですがプロパティの設定で躓いているのかリストが空っぽです
どなたか設定方法を教えてください
Accessにあるスマタ情報まで読んだ
701 :
693:2007/10/17(水) 10:58:58
みなさん レスありがとうございます。
>694さん
メーカーには何度もお願いしていますが、仕様なのでとのことで直してくれません。
やっぱり無理ですか。
>697さん
プリンタのドライバには部数設定がないのです。
ドットインパクトプリンタ EPSON VP880
>698さん
複写紙はコストが掛かるのでNGです(By社長)
VBでは無理のようですね。
みなさん 情報ありがとうございました。
おまいら、ドットインパクトプリンタは普通に現役で新型も出てるぞ?
こんな時にこそ、カーボン紙の出番だ
704 :
689:2007/10/17(水) 21:19:08
>>692 うぅ、すみません、そこまでしっかりとした理由じゃないんです。
ただの好奇心でプログラムの体系を学んでいるんですが、先の箇所が
何を言わんとしているのかイメージできなかったもので・・・。
>701
PDFにはいて、アクロバットリーダーをコマンドラインから呼んで印刷したらどう?
印刷したいものをPDFで出力。
↓
バッチファイルでもVBでもいいのでコマンドラインでPDFを2回印刷し
そのご削除するプログラムを起動。
って運用
AcrobatreaderのコマンドラインオプションについてはDeveloperFAQ.pdfってに書いてある
らしい
この運用は今よりましかどうかは微妙だなー。
706 :
デフォルトの名無しさん:2007/11/03(土) 23:42:45
ここでいいのかわかりませんが質問させて下さい。
XP EXCEL2000
マクロでIEを起動してSendkeysで入力した後切り替わったページの内容をファイルで吐き出すプログラム作ってるんですけど、3、4回実行した辺りから処理が重くなりまともにキーが送れなくなります。タスクマネージャーで見たところSYSTEMが100%近くまで来てました。
これって何ですか?
>>706 ここでいいわけねえだろ糞野郎
氏ねボケカス
708 :
デフォルトの名無しさん:2007/11/04(日) 00:04:12
>>707 うはっ、早速のレス有難う御座います。
その後、こりゃ駄目だとEXCEL閉じたんですけど状況変わらずでPC再起動してやっと回復したんですけどまた何度か実行すると同じようになります。
似たような経験のある方とかいらっしゃいませんか?
>>706,708
さすがにスレ違いの質問はダメだろ。ここはVB6.0以前の場所。
プログラム板に助けてくれそうなスレがちゃんとあっからそっちで質問してみ。
IEなら、普通に参照設定してオブジェクトを操作したほうが
SendKeysを確実じゃないかと主運だけ尾d。
あ、ごめんなさい過去レス読んでました。
此処って良スレなんですね、改めて感動しました。
>>710 そうですね。
作り直します。
有り難う御座いました。
{enter}をsendkeysして、それが誤爆してんじゃないか
{enter}のsendkeysは危険だよ
713 :
706:2007/11/05(月) 06:01:04
>>710 今やっと直し終わりました。
今度はバッチリ動いてます!
ありがとうございました。
>>711 はい、ENTERも使ってました。
Sendkeysってなんか使いづらいんですね。
714 :
デフォルトの名無しさん:2007/11/05(月) 16:02:43
(Y)とか(N)のやり方を度忘れしてしまいました。
どうやるんですか?
>>714 死ね役立たず。
人の足引っ張って楽しいかゴミクズ。
今すぐ死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。v死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
>715
楽しそうだな。
2ちゃんのすれ相手じゃなくて 本当にいいたい奴にいったらもっとすっきりするぞ。
俺も毎日いいたいのを我慢してるよ。
717 :
デフォルトの名無しさん:2007/11/07(水) 22:33:30
VBでログイン画面作ってるんですけど、IDとPASSを入力してログインボタンを押したときに
ACCESSに接続してログイン可能か判断するコード教えて下さい。
718 :
デフォルトの名無しさん:2007/11/07(水) 22:44:13
>>716 誰もが斯様なのですね…
,..アナスイ トモダチノ ベンキョウヲ ススメテ ヤレヨ…
,level
…(+ΦyΦ)…
‘ワタシハ チュウガクニネンニナリマス…
>>717 じゃあまずIDとPASSを 入力しないで ACCESSに接続してログイン可能か判断するコード書け
>719
ADSIとか?といってみるテスト。
717ではないが・・
ADSIってVB6で使えるんかなぁ?
試したことないけど
721 :
デフォルトの名無しさん:2007/11/20(火) 19:13:49
最近VB6.0をはじめたんですけど
○○をさせたいって思ったときに具体的なコードが検討も付きません
なにかぐぐる時のコツ的なものないですかね?
>最近VB6.0を
今更VB6なんて始めてんじゃねえよドアホ
724 :
デフォルトの名無しさん:2007/11/20(火) 20:14:30
>>722 ありがとうございます
残念ながら見てもよくわかりませんでした
具体的に言うと、たとえばVBのテキストボックスからテキストファイルに出力させたり
読み込ませたり、などなんですが
ほとんどのサイトがVBそのものの解説だけや、文法の説明が多く、何をするためにはこのメソッドを使う
とか、宣言をする。のような事があまり調べられず困ってる感じです
今更VB6なんて始めてんじゃねえよドアホ
いいじゃないの真冬に冷やし中華はじめましたなラーメン屋があっても
VBって適当にググればそういう話がいっぱい出てくるほうだと俺は思っているんだけど。
728 :
デフォルトの名無しさん:2007/11/20(火) 23:36:03
>>727 それっぽい話はいっぱい出てくるのですが
例えるならアタリっぽいけど抜きどころが見つからないAVのような
さわりだけで肝心なところで終わるAVのような
なかなか求めるようなサイトが出てこないんです
なのでググり方、調べ方なんかでコツのようなモノがあったら教えていただけたらと
つーか 今時VB6はじめるにはそれ相応の理由があるだろう
1.自分|客 がVB6以外認めないバカ
2.自分|客 がVB6以外認めない偏屈
3.自分|客 がVB6以外理解できないバカ
4.自分|客 がVB6以外の言語が動く環境が確保できないくらい貧しい
5.自分|客 の上司がVB6以外認めないバカ
6.自分|客 の上司がVB6以外認めない偏屈
7.自分|客 の上司がVB6以外理解できないバカ
4-7だったら暖かく認めてもよくね?
んでも発言みるかぎり1と2と3のコンボ風だな
どれ?
>721
4だったら 客の年商か 自分の収入答えてみ?
731 :
デフォルトの名無しさん:2007/11/20(火) 23:53:36
>>729 微妙ですが4-7に近いと思われます
いまどきVB6をはじめる理由は、今月から入った会社の環境がほぼVB6がメイン
また会社と連携のある顧客、あるいは会社の人員が世代の古い方々が多く同じくVB6がメインなので
仕事上まずその環境に慣れなければならない為です
ちなみに私自身はプログラム系はほとんど経験がなくVB6がはじめてです
732 :
デフォルトの名無しさん:2007/11/21(水) 00:01:53
>>730 申し訳ないです、釣ってるつもりはないんですが
ホントにググってもVBの概念、定義の仕方やせいぜい文法の辺りまでで
肝心なコードはサンプルがあるだけで、どのメソッドにどういう役割がある
といった事は書かれていないことが多いです
ヘルプを使ってみても分かりにくい言い回しが多いので・・・
もちろん私の理解力が足りないだけかもしれませんが
サンプルソースまで乗ってるMSDNがダメなら何やってもダメな気がするが
あとはせいぜい逆引き大辞典とかか?
会社の人間に聞けよな
>>732 > VBの概念、定義の仕方やせいぜい文法の辺りまでで
> 肝心なコードはサンプルがあるだけで
それだけあれば十分でしょ
サンプルがあるなら、似たようなことを実現するコードを
書くとっかかりにはなるんだから
> どのメソッドにどういう役割がある
そういうことは、使いながら調べたり試したりしながら覚えてくもんだ
プログラムに限ったことじゃないが、最初から全知識を頭に詰め込んで
始められるものなんてないと思うぞ
736 :
デフォルトの名無しさん:2007/11/21(水) 00:57:18
ネタだろ。マジレスするだけバカバカしい。
サンプルコードを読んでもわからない、ってのが本当だとすると
そもそもプログラミングの勉強すらした事が無いと思われ。
学校でいったい何を勉強したのやら・・・
なんか 「ALWAYS 三丁目の夕日」 みたいだな。
ある自動車修理工場の話。
履歴書に 特技・自動車修理 って書いてあるから雇ったら
実は 自転車修理 の読み間違えだった。
なんでプログラミング経験の無いヤツを雇うのか不思議だな。
そこらへんに掃いて捨てるほどゴロゴロ転がってるというのに。
737 :
デフォルトの名無しさん:2007/11/21(水) 00:58:44
>>733-735 仰るとおりですorz
ただ会社の人も付きっ切りで私に教える訳にもいかず、追いつかないもので
>>735のようにとりあえず記述されているサンプルコードを使いながら試したりしているんですけど
サンプルも圧縮してある物が多く会社のPCではダウンロードが禁止されているので
思うようにはかどらないんです
あと書き忘れていました
自宅のPCにはVB6もOffice系のソフトも入っていません
理由は
>>729の4です
738 :
デフォルトの名無しさん:2007/11/21(水) 01:01:52
あ、思い出した。
俺が昔働いていた田舎の工場での話し。
履歴書に 資格・電子計算機ナントカカントカ○○級 って書いてあるから
コンピュータ室のオペレータに採用された女の子がいた。
なんか、聞きなれない資格だな。そんなのあったっけ・・・
その子のよく聞いてみたら、電卓 の資格だった。orz
739 :
デフォルトの名無しさん:2007/11/21(水) 01:08:50
>>736 >そもそもプログラミングの勉強すらした事が無いと思われ。
その通りです。最近はじめたばかりですし、資格も一切持っていません
>なんでプログラミング経験の無いヤツを雇うのか不思議だな。
ですね、いかんせんお年寄りの多い会社なので世代交代という意味で
「とりあえず」で雇ったのかもしれません
参考書などを買うお金も微妙ですし、会社のPCからはここは見れないので
できるだけ自分で調べて覚えていきたいのですが、どうにも能率が悪くて
なのでそういうのを勉強したり調べたりする上でコツがあればと聞いてみたんですが
すれ違いなら申し訳ないです
電卓検定は俺も持ってるが、オペレータなら有効な資格じゃないか
742 :
デフォルトの名無しさん:2007/11/21(水) 01:34:30
>会社のPCからはここは見れないので
も、もしかして、会社のPCはインターネットに繋がってないとか・・・?
743 :
デフォルトの名無しさん:2007/11/21(水) 01:55:22
>>742 制限がかかってるんです
インターネットには繋げますが会社が許可した属性のページしか見れません
ので掲示板の類や会社が不適切と判断したページは見れないんです
同じくファイル類のダウンロードも一切できません
>>743 まずやりたいことを
入力 処理 出力 という形でわけてみる んでそれぞれを細かくわけて
単機能にしていく
んでその単機能のサンプルを片っ端から集めてくる。家で集めて会社で
展開するくらい許してもらえ。
海外にも多くのサンプルが転がっている。
んでサンプルをそのまま実行しながらコードの書き方を見る。
つぎに目的の機能に合せてコードを書替えてアレンジしてみる。
あとはそれぞれをつなぎ合わせる事を考える。
そこで食っていくのなら参考書を買うなりVB6を調達するなり
自分への先行投資もしなきゃね。
あとここでなんでも相談するな。情報はふんだんに転がっている相談するより
調べた方が早い。どうやれば効率よく調べられるかは数打ってなれろ。
フィルタリングは正直かわいそうだと思うが
ネットに繋がってる事が業務上重要なのだと上を説得するしかねーだろーな
>>743 会社は、VBわからないことを承知の上で採用したのだから、
あんたを業務で使用できるように育てる義務がある
先輩が忙しいとか時間が無いとか、そういう問題じゃないんだよ
教務担当に現在進行中の仕事があっても、そんなの関係ねぇ
しつこく何でも何度でも聞け
必要なら書籍購入やダウンロード可能の承認をもらえ
いまあんたに必要なのは、たとえ担当に迷惑がられても、
その会社の方針に従っている限り、その中で知識をがっつく根性だ
それにここは、VB用の質問スレであって、仕事のやり方勉強の仕方の
質問スレじゃないんだ
そこんとこわかってくれ
747 :
デフォルトの名無しさん:2007/11/22(木) 16:44:59
すいませんが、VB6のエディターにおける文字列定数の
記述方法についてお伺いします。
たとえばSelect文において
Select Case Str1
Case "”"
とか
Case "″"
と入力すると、すべて
Case """"
と変換されてしまいます。もちろん、変数Str1の中身が「”」であっても
一致していないとみなされてしまいます。
この変換を抑制する方法ってありますか?
もし無いのなら、文字列定数ではなくUnicodeでコードを直接記述することに
なると思うのですが、chrw()関数でのUnicodeの指定方法がわかりません。
手元にある漢字コード表はJISとShift-JISなものでして。
よろしくお願いいたします。
>>747 変換を抑制する方法はなさそうだね。
こんなプログラム作ってコードを調べてみたらどう?
Private Sub Command1_Click()
Dim strChar As String
Dim i As Long
For i = 1 To Len(Text1.Text)
strChar = Mid(Text1.Text, i, 1)
Debug.Print strChar, Hex(AscW(strChar))
Next
End Sub
750 :
747:2007/11/22(木) 18:04:03
>>749 抑制する方法はないですか。MS-Officeのスペルチェックといい、
こういう余計なお世話は停止できるようにして欲しいですよね。
やはり、1バイトずつ分解して調査するしかありませんか、トホホ。
>>747 chrw()関数とかUnicodeのことを書いたのでわかるだろうと思って
はしょったのですが、""内は2バイト文字です。フォント設定によっては
判別しづらかったですかね。
751 :
デフォルトの名無しさん:2007/11/22(木) 19:57:45
「余計なお世話」じゃないよ。ルールなんだから、嫌でも受け入れないと。
C言語やjavaなんてもっと惨いぜ。\nとか\\とか\"とか、¥だらけの汚いコードになるんだから。
自分の書いたコードを他人が読むときの事を考えてコーディングしなさい。
もっとも、自分が退社してしまえば、あとは野となれ山となれですがw
話は逸れるがOfficeのスペルチェックはオフにできるぞ。
できないぞ。
754 :
747:2007/11/23(金) 00:46:10
>>751 うーん、CとかJavaの\nや\tは実装系に依存しないコードの表現方法であって、VBでいうとvbNewLineとかvbTabに該当するのかな(vbCrLfは特定の実装を想定しているから、この例では除外)。別に\nとか\"が並んでいても、汚いとは思わないけど。
なぜかって言うと、抽象度の高い統一された表現方法だから。文字コード体系の違うOSに移植するのも簡単だよね。
今回の問題というか憤りを感じたのは、どういう理由か想像できないけれど、特定のリテラルがエディターによって強制的に変換されちゃうってことで、そのためにコードが非統一の汚い記述になることなんですよ。
本来なら
Case "("
Case "”"
と書けるところを
Case "("
Case &H1234
と書くのは、コードの記述方式としては美しくないと感じるわけで。だから、いっそのこと
Case &H1234 '「”」のこと
Case &H2345 '「<」のこと
と書いた方がまだ「美しい」と思う。もっとも、チームでプログラムを組むときはこんなダサイ方法じゃなくて、
dim strDQuote as String
strDQuote = &H1234
としてから
Case strDQuote
とするのが妥当なのはご存じの通りでして。
とにかく、特定のリテラルが記述できなくてコードを直接書かなくちゃならないというルールは、全然賛同できないんだけどな。いったい、どういう理由があるんだろ。
>>752 そう、スペルチェックとかハイパーリンクはオフにできるんだから、このエディターの機能もオフにできればいいのにね。
>>754 昔魔界の仮面弁士さんが言ってたのがとこかに転がってるはず
756 :
デフォルトの名無しさん:2007/11/23(金) 02:43:16
>>754 物事を知らないってのは幸せだな。
そのうち、うんと苦しめられるから覚悟しといたほうがいいと思うよ。
>>754 そんなこと沢山あるだろ いちいちへ理屈を言う几帳面さをどうにかしたほうがいい
こんな枯れたものに
758 :
747:2007/11/23(金) 09:59:53
>>754 あ、あの人ですね。ググってみたけど、彼がこの件について
書いた発言は見つかりませんでした。
>>756 どういうことを知っていれば、今後苦しまなくて済みますか?
私だけじゃなくて、ここを読んでる超初心者の方にも参考に
なるでしょうから、是非書いてみてください。
>>757 VBのエディターが枯れてる? VB使いの間ではそういう評価なんですかね?
屁理屈こねてるみたいな異常なこだわり、と思うかもしれませんが、
こういう奇妙と思える仕様の原因を探っていくと、他の局面で
同じ理由から発生する現象の解析がスムーズに行えて、けっして
ムダなこだわりじゃないんですよ。そりゃ結果的にはムダになるかもしれ
ないけど、この几帳面さは業務分析レベルでは重宝されてます。
それと、コーディングスタイルがバラバラになるのはプロジェクト管理上
まずい、というコーダーレベルの問題も解決できるし。
>>747 俺は君の言ってることの方がまともだと思うよ。
まあ、馬鹿はほっとけってことw
驚くべきことに、文字列リテラル中の全角記号を勝手に半角に修正する糞仕様は、
なんとVB2005のIDEのエディタにも引き継がれているんだよねこれが。
760 :
デフォルトの名無しさん:2007/11/26(月) 17:12:23
教えてください。VB6.0で開発してます
EXE@メニューボタン:1本、EXEA業務関係:複数本
イメージとしてはEXE@がメインフォーム、EXEAがMDIフォームの用な動作を考えています
別EXEで上記イメージのような動作は可能でしょうか?
>>760 そう見えるようにコーディングすることは可能
762 :
747:2007/11/26(月) 21:59:26
>>759 この奇妙な仕様は2005でも継続ですか。情報、ありがとうございます。
たしかにバカはほっといたほうが良いでしょうね。MSDNでも購入して
調べることにします。では。
フォームのタイトルバーににヘルプボタンをつける事は可能ですか?
(.NetだとHelpButtonがあるのですが)
ダイアログボックスでつけれる[?]のボタンです。
API探してみたけど、ヘルプボタンに関して表示・非表示するのがないので
やっぱムリなんでしょうか。
764 :
デフォルトの名無しさん:2007/11/29(木) 00:18:20
ファイルをCSV形式で書き込むときですが、
このように記述するとエラーになります。
Write #FileNo, "test", & _
"test1"
こういうケースの場合、接続文字はどうしていすればいいのでしょうか?
>>764 そもそも _ が無くても構文エラー
Write #FileNo, "test", & "test1"
766 :
デフォルトの名無しさん:2007/11/29(木) 00:54:02
>>766 > 改行して記載は無理でしょうか?
意味不明
>>764じゃ、構文エラーが出るくらいしかわからん
何をしたいのかさっぱり
もう一度「何がしたくて」、「実際に何をやったのか」説明しなおすといい
769 :
743:2007/11/30(金) 13:38:35
>>744 >>746 遅くなりましたがありがとうございます
残念ながら自宅で得たサンプルも含め外部から社内のPCへのデータの持ち込みが一切禁止されているので
社内にある別のVBのコードや見れる範囲でのサンプルコードで
>>744のようにやってみます
>>746 スレ違いな質問申し訳ありませんでした
なるべく空気を読みつつ多少強引に回りに聞いてみるようにします
またなにかつまづいたら今度は具体的な質問にまとめて来ます
770 :
デフォルトの名無しさん:2007/12/01(土) 11:44:46
以前、働いていた社員が自作したプログラムらしく、
市販の物ではないのでサポートを受ける事が出来ず、
ここを頼らせていただきました。
VBについては全くのド素人です。
もし意味不明な事を言っていたら、すぐに訂正しますのでご指摘下さい。
会社で使っているアクセスのデータベースを利用した請求書があり、
その請求書を印刷した日付が載るスペースがあります。
先月まではちゃんと「平成19年11月30日」と出ていたのですが、
今月に入ったとたん「明治33年01月29日」になってしまいました。
VBのソースの様なものからその欄のプロパティを見てみると
コントロールソースの欄は
=Format([請求日]."ggge\年mm\月dd\日")
となっておりました。
少しググってみた所、
「\」の意味は判りませんが、おかしい所はないように思えました。
どうやったら正しい年号を表示させられるか、お教え下さい。
よろしくお願い致します。
「請求日」がどういう計算で算定されているかがキモだな
じゃなくて、たぶんPCの時計が狂ってるだけ、ってオチじゃないの?w
773 :
770:2007/12/01(土) 12:38:26
>>771 「請求日」の値のようなものが、
データの中で別に設定されているという事ですか?
どこに…といっても分かるはずありませんよね。
探してみます。
>>772 タクスバーの時計は合っているようです。
時計ってのはRTCのことだよ。
時刻をダブルクリックして表示される日付はちゃんとあってる?
>>770 それは、レポートのコントロールソース?
レポートそのもののレコードソースは何になってる?
ソースがテーブルだったら、そのテーブルの中身を見て
請求日と思われる列の値はどうなってる?
776 :
770:2007/12/01(土) 13:16:48
>>774 はい。合っていましたし、念のため同期をし直しましたが
変化はありませんでした。
>>775 レポートというのがよくわかりませんが、
ちょっと確認してみます。
777 :
770:2007/12/01(土) 13:41:46
>>775 すみません。よく分かりませんでした。
私が確認をしたのは
アクセスを起動させて→ツール→マクロ→VBエディター
で、開いたVBのプロジェクトから請求書のレポートのオブジェクトを開き、
年月日が出力される部分のプロパティを見ました。
レコードソースというのはどうやって見るのでしょうか。
778 :
770:2007/12/01(土) 14:05:54
データベースの開き方も分かりましたが、
関係ありそうなものがわかりませんでした。
779 :
デフォルトの名無しさん:2007/12/01(土) 14:06:05
DQN男の家族死ね DQN男の親死ね DQN男の友達死ね DQN男の親戚死ね
DQN男の家族死ね DQN男の親死ね DQN男の友達死ね DQN男の親戚死ね
DQN男の家族死ね DQN男の親死ね DQN男の友達死ね DQN男の親戚死ね
DQN男の家族死ね DQN男の親死ね DQN男の友達死ね DQN男の親戚死ね
ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・)
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ぬとき このレスの事思い出してくれよ
ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・)
コピペ君って馬鹿だな、まで読んだ。
>>770 印刷した請求日ってそのデータがアクセスに登録された日じゃなくて
引き出した日って意味だよね?
そしたらそのプロパティを見た項目のコードを表示してみて
[請求日]にセットされてる式を見てみれば?
782 :
デフォルトの名無しさん:2007/12/02(日) 00:24:35
今月に入ったとたん『「明治33年01月29日」』になってしまいました。
−『』がミソだね
アクセスの位置指定が変わったとか、日付データの問題でしょ?
783 :
デフォルトの名無しさん:2007/12/06(木) 13:18:13
グレープシティのコントロールのVaspreadで、
既存のフォーム内のvaspreadのデザインをスプレッドデザイナで編集したいのですが
セルにデータを入力することができません。
新規にVaspreadコントロールをフォーム上に配置した場合には編集できます。
フォームのデザイン画面でオプションはすべて同じ設定にしたので
スプレッドデザイナで何らかのロックがかけられていると思うのですが。
Spreadデザイナのバージョンは3.0.5.2です
知っている方がいればお願いします。。
某スレの44へ。 Split( )
786 :
デフォルトの名無しさん:2007/12/26(水) 22:57:17
OLEコンテナにリンクしたEXCELシートのイベント拾うにはどうしたら良いのでしょう?
Excel.Applicationへの参照は訳有ってレイトバインディングしか出来ませんので
WithEventsも使え無いみたいだし・・・
やろうとしてる事はFormの中に埋め込んだExcelのセル選択時にRowプロパティを
読み出したいのです。
excelと連携させて使いたいのですが、
実行時バインディングと事前バインディングの使い方の違いが分からないのですが
教えてください。
>>787 名前が違う時点で違いが分かってるだろ?
もっと具体的に分からないところを恥じらいを持ちつつ答えなさい
こんなこと聞いちゃってくやしい・・・・でも感じちゃう!
>>787 使い方の違い・・・?
事前バインディングは処理が高速でコーディングが楽チン、
実行時バインディングは、エラーにさえ注意すれば、インタフェースが割と自由になる。
継承もまともに実装されていない糞言語
使ってるゴミ共ってお前らのこと?
メゾットの呼び出しかたがいまいち分かっていません。
分かる方解説いただけないでしょうか。
プロジェクトに 2 つの Form がある状態で Form1 上に配置したボタンを押して
Form2 を表示する処理を書いているのですが
Private Sub Command11_Click()
Form1.Show 1, Me
End Sub
と
Private Sub Command11_Click()
Call Form1.Show(vbModal, Me)
End Sub
に違いはあるのでしょうか。
Call 〜 の方は下位互換維持のために残っているだけで違いはない・・・と
現状では解釈しています。
動作環境は VB6 + XP Proです。
オーバーロードとオーバーライドは使えないものの、
Implements を使いこなせれば、そう大して困る事もないが。
795 :
794:2008/01/08(火) 13:58:55
上のは 791へのレスね。
>>793 違いはない。書き方の違い。分かってるとは思うが、Callで呼び出すと関数の戻り値が取れない。
あと、メゾットについては触れないでおく。
オーバーロードとオーバーライド
使え寝ーなら継承の意味ねーよw
それじゃあ、Draw関係とかつかえねーだろw
どんだけVB坊って馬鹿なんだw?
>>796 つまり、オマイにとっての継承の意味の大部分は、
オーバーロードやオーバーライドが使える事にあるわけだ。全く、継承ってなんだろうなw
オーバーロードはともかく、オーバーライドは継承の意味の大部分を占めてると思うぞ。
継承するたびに
メソッドの内容新しく定義するって
どんだけゆとり仕様なんだw?
OOは再定義を極力避けるに定義するもんだぞ
VB6ってのはなんちゃってOOの中で醜悪かつ
最低もいいところだろ。
使ってる人間はチョン以下のゴミだよ。
文句あるなら、コードでどんだけ素晴らしいか
証明してみろよ?できねーだろ?お前らみたいな
糞供にはw
>>799 そんなおまえはプロトタイプベースをしらないだろ
クラスベースで語ってるうちはチンコがお子様だな^^;;;
そんな安い釣りに釣られるなよ・・・。
こうでもしないとつまらないじゃないか
もいっこのスレには現れてくれないし・・・
それで面白いのか?頭が狂ってるな
徹夜あけて2日目だから頭に刺激がほしいも
UserControlでImplementsを使ってもインターフェースを取得できないのがクソ
>799
普通こういう場では言いだしっぺが手本を示すのが世の常だと思いますが
釣堀って楽しいね。
使用している(デフォルトで使用する)ブラウザのUser-Agentを取得するにはどうすればいいですか?
やりたいことは、WebBrowserで上記User-Agentを指定してNavigateです
808 :
デフォルトの名無しさん:2008/01/17(木) 01:30:35
VB+Activereports2.0で帳票出したいんですが
プログラム側で帳票の制御をするにはどうしたらいいんでしょうか。
具体的には。改ページ等の制御を任意に行ないたいのです。
例
1ページ目
あああ、いいい、ううう、えええ、おおお
2ページ目
かかか、ききき、くくく、けけけ、こここ
超初歩なんですが。vb.net版しか使ったことがなく、勝手の違いに苦戦してます。
オネガイシマス。
>>808 ActiveReports はサードパーティーのOCXだからスレ違い。
VBで業務してるような人の一部にしか分からんだろうし、ここに居るとも限らない。
つか、ActiveReportsのヘルプ開いて”改ページ”とかで検索すればいいと思うが・・・
breakじゃなくてcontinueしたい場合
Exitじゃなくて何て書いたらいいの?
残念ながらcontinueに相当するものはありません。
>>811の通りなので
伝統的なgotoか,アルゴリズムを変えてください
forならdo
doならfor
ネストしてexit do/exit for
実際コード書いて日を置いて見直してみれば分かるけど、
>>813みたいないらん技巧を凝らすより素直にループのケツに
ContinueFor:
みたいなラベルを置いてgotoした方がずっと分かりやすいよ
コメント書け
>808
ヘルプとかサンプルのフォルダに、そのものズバリなソース例があったはずだよ。
今手元に無いので確認できなくてすまん
817 :
デフォルトの名無しさん:2008/01/27(日) 02:25:45
プロの世界では、vb6でアドレスって、良く使うのでしょうか?
アマの世界なら,VB6の庇護の元でCライクなライブラリを使うときによく使うな
819 :
デフォルトの名無しさん:2008/01/27(日) 14:46:15
VB6.0とVB.NET両方についての質問です。
メモリの解放(変数 = Nothing ?)って必要ですか?
.NETではガベージコレクションがついているみたいですが、
それ以前のVBについては記述を見つけられませんでした。
>>819 Excelなどのオブジェクトを作るときはNothingをしないと不具合もあった気がするが、変数などはいらない
気になるならつけとけって程度だ
>>819 VB6
関数やサブルーチン内のローカル変数には不要。途中で早期に片付けたいなら使用する。
共通モジュールのPublic Privateな変数には必要。
クラスのPublic Privateなメンバーはオブジェクトと同じ期間存在していいなら不要。早期に片付けたいなら使用する。
FormのPublic Privateなメンバーはクラスと同じ考え方でいいが若干制限がある。長くなるので割愛。
いづれの場合もアプリケーションと同じ期間存在していいなら不要。
それにもかかわらずEnd命令で終了する場合、アウトプロセスサーバータイプのActiveXオブジェクトには必要になる。
VB.NETの場合は
>それにもかかわらずEnd命令で終了する場合、アウトプロセスサーバータイプのActiveXオブジェクトには必要になる。
END命令でもActiveXオブジェクトの終了処理は実行されるようになった。
またActiveXオブジェクトを早期に回収したい場合はSet NotingではなくMarshal.ReleaseComObjectを使う。
すみません、ここで質問して良いのか分かりませんが、、
VB6で作ったプログラムをインストールする際の質問です
インターフェイス社のシリアル通信のPCIカードで使える
ActiveX(MSCOMM32.OCXを間接参照してRS-422、RS-485通信するActiveX)をプログラムの中で使用し
そのプログラムを他のPCへVBのインストーラーでインストールし、起動しようとすると
「Generation of MSCOMM32.OCX」とメッセージが出て起動出来ないのですが
これはMSCOMM32.OCXのバージョンが違うということでしょうか?
インストールしたPCとプログラムに使用したPCのSystem32に入っているMSCOMM32.OCXのバージョンを確認しても一緒なのですが・・
サポートに聞いたところ、MSCOMM32.OCXのレジストリ登録が上手くいっていないのでは?と、ご回答を頂いたのですが、
間接参照する場合は手動でレジストリ登録が必要なのでしょうか?
何か、ご助言を頂けましたら幸いです。
インストーラはどうしてるの?
というか、OCX/COMなオブジェクトは、誰かが使用する前に
常にレジストリ登録が要るわけで。コピーだけとかでは動かないよ。
825 :
823:2008/01/27(日) 21:20:02
回答ありがとうございます
インストーラーはVBについているインストーラー、VSInstalerを試しましたが、駄目でした
また、インストーラーのマージモジュールをいじったりしてみたのですが、同様にうまくいきませんでした。
間接参照しているインターフェイス社のActiveXをプログラムから外して
インストールすると問題なく起動できるのですが、、、、
間接参照しているActiveXをインストールする際には特別な作業が必要なのかと思い質問させていただきました。
SP6版のMSCOMM32のマージモジュール使ってもダメだったわけ?
827 :
823:2008/01/28(月) 00:31:09
>>826 SP6を適用したVB6で作っております。
追記させていただきます
インストールシールドの体験版でインストーラーを作り試したましたが
同様でした。
regsvr32手で叩いてもダメなら、またサポに電話するしかないね
プロシージャやメソッドで戻り値を使わない時(?)に括弧をつけるとエラーとかよくわからない
括弧をつけないで書くとぱっと見たときに関数やメソッドって分かりにくいし
ググるとCallをつけると分かりやすいとか見るけど全部括弧でいいじゃんね?(´・ω・`)とか思えないし
Callの使い道とかCallと括弧の使い分けの関係とかそんなもんなんですかね?
仕様ってやつですか?激しく混乱してくるんですけど…。うーん
>>829 俺も、意図を汲み取って読もうとすると、激しく混乱してくるんですけど…。
じゃあエラーが出ないように使え。好きにしろ。 ・・・としか。
>>831 BASICなステートメントと合致しないから.
いつも使っている 代入 は本来
Let X = Y
のLetを省略した形だから,「式」のみから構成されるステートメントはそもそも存在しない
833 :
デフォルトの名無しさん:2008/01/28(月) 16:41:21
サブルーチンと関数の違いがわからんの?
>>829 戻り値を得るときには括弧付ける。
戻り値を得ないときには括弧付けない。ただし、Callを使えば括弧を付けた記法が可能。
正確ではないけど、普段はこう思っている俺。
835 :
デフォルトの名無しさん:2008/01/28(月) 19:25:06
VB6で指定したフォルダの中身を
サブフォルダも含めて、まるごと
他のフォルダに保存するのはどうすればいいのでしょうか?
FileCopyではファイルしかできなくて・・・
836 :
デフォルトの名無しさん:2008/01/28(月) 19:27:25
>>829 C++でCOMオブジェクトを書けばVBの言語仕様が理解できるよ。
xcopyでも駆動すれば。
838 :
835:2008/01/28(月) 19:41:29
839 :
823:2008/01/28(月) 21:32:14
遅れましたが、回答していただいた方有難うございました。
試してみます。
WIN98で無料のVB開発環境って可能でしょうか?
就職先にVBやれって言われたんですが、コンパイルさえできません・・・・
841 :
840:2008/01/28(月) 23:54:16
嘘でもいいから可能だと言ってください
842 :
デフォルトの名無しさん:2008/01/29(火) 00:03:55
VBで文字列を1文字ずつ処理するにはどうしたらいいのでしょう。
製品名(すべて半角)の末尾の半角数字でソートする必要があるのですが末尾の
数字の長さは固定ではありません。これをカウントする方法がわかればright$など
で処理できると思うのですが。
Delphiでのコードは以下のような感じです。
//末尾の半角数字+ハイフンを得る VPX26AP766-4 ⇒ 766-4
function GetEndNumStr(S :string) :string;
var
i,j,k: Integer;
S2 : string;
begin
if S = '' then Exit;
i := 0;
j := Length(S);
if S[j-1] = #13 then Dec(j,2); //改行コードを飛ばす
k := j;
while S[j] in ['0'..'9' ,'-'] do //末尾の半角数字+ハイフンの長さを得る
begin
Inc(i); Dec(j);
end;
if i > 0 then
begin
j := k; //元の値に戻す
SetLength(S2,i); // 12345 ・・・ i
repeat //VPX26AP766-4
S2[i] := S[j]; //123456789012 ・・・ j
dec(i); dec(j);
until i < 1;
end;
Result := S2;
end;
843 :
デフォルトの名無しさん:2008/01/29(火) 00:15:15
>>842 ロジックが分かってるなら、あとは、ひとつひとつVBの文法に置き換えていくだけじゃん。
いったいどこがワカランの?
VBの入門書くらい読んだ?
VB6環境ないから適当に.
Function GetEndNumStr(ByVal S As String) As String
Dim i As Long
S=Replace$(S, vbCrLf, "")
For i=Len(S) To 1 Step -1
If Not (Mid$(S, i, 1) Like "[0-9,-]") Then
GetEndNumStr=Mid$(S, i+1)
Exit Function
End If
Next
'終端まで走査して見つからない場合は例外?
End Function
>>840 オークションとかで手に入れるとか、
無料ではないけど、Officeに付属のVBAとか、
今では入手困難だけどかつて無料配布だったVB5 Control Creation Edtionとか。
Win98使わせるような会社は辞退したほうが今後のためだと思うのは俺だけか?
いや、普通。ソフト屋で開発環境にWin9xとかありえない。
古い環境のソフトのメンテとかならあり得るけど。
849 :
デフォルトの名無しさん:2008/01/29(火) 23:33:38
視野が狭いんね、キミ。
PC−9801でCバスに特殊な機械制御のハードが差し込んであって
ドライバがWin98でなきゃ動かん。
しかもつくった会社が倒産してて代替がきかん・・・とかだったら
ありえるだろ。
それならハード込みで新規で作るだろ。Cバスの時代のものなんて耐用年数心配だし。
もしソースも無くて完全なブラックボックスだったら、そんな仕事は受けないし。
851 :
847:2008/01/29(火) 23:49:28
>847 >848
どうみてもそんなケースの話じゃないと思うが?
裕福なソフト屋ばっかじゃないんだから、多少無理のある仕事でも取るって
スタンスの会社も決して珍しくはない
営業が強いとこなら、そうでなくても見境ない場合もある
でもって、本筋は「これから就職する会社からVBやれと言われて、
自宅のWin98でできるものか」・・・って話じゃないの?
このくらい推察できない方が、ソフト屋としてありえないと思
勝手な推測するのがソフト屋か?
氏ねよ
普通はそういう風に読めると思うが
勝手な推測するのがソフト屋か?
氏ねよ
一番たちの悪い奴だよな。勝手に自分で思い込んで作る奴。
うちにもいるよ。
あーもう、鬱陶しいな、アホは。 一生言われたとおりに働いてろよと。
VB6のお薦め書籍
○入門書
とてもわかりやすく実用的な本
・Visual BasicユーザーのためのWindowsプログラミング入門(日経BP社)
○アルゴリズム
基礎的なアルゴリズムを身につけることができる。
・Visual Basicによるはじめてのアルゴリズム入門 (技術評論社)
○中・上級者向け
簡単なことから深いことまで、わかりやすく説明さされて知りたい事がすぐわかる。。
他のVBの本には書かれていないことも説明されている。
・ピーターノートンの手解きVisual Basic6 Vol.1(カットシステム)
・ピーターノートンの手解きVisua lBasic6 Vol.2 (カットシステム)
この順番で勉強していけばかなりのスキルが身につきます。
特にピーターノートンの手解きVisual Basic6 はOfficeやOutlookとの連携も解説してあり
お薦め!
言われたとおりって発想する馬鹿ってなんなの?
勝手に推測するなという話なのに
マジで氏ね
デスマの様相を示してまいりました
推測と言うか、日本語の話だな。 ・・・と思った俺も噛み付かれますか、そうですか。
>858
VisualBasic初級プログラミング入門(技術評論社)
もいれとくれ。とりあえず上巻だけでも。
まだ、VB6プログラマーっているんだろうか・・
と不安に思うVB6プログラマーの私です
VBしかできない奴はさすがにもういないだろうな
まだメンテはあるよ
仕事で書いてるけどVBしかできません
最近やっとVB2005勉強し始めた
2008が出たのにどうして今更2005はじめるんだ?頭おかしいの?
せめてC#にすればいいのにね
MSですら無かったことにしたがってるVB.NETを勉強するなんて
.netはいまいち感だしJavaもなんだかなぁという雰囲気なので
ここはひとつデルファイで。
.NETいちいち、たとえばネットワークの叩き方とかがムカつく。
じゃあずっと6でもやってろよ
VBは長島茂雄であるといえよう。
VBは永遠に仏滅ですってやつか
息子がボンクラって所じゃねーの?
878 :
デフォルトの名無しさん:2008/02/10(日) 12:34:55
宇野功芳は長島茂雄であるといえよう。
879 :
デフォルトの名無しさん:2008/02/12(火) 00:05:45
VB6.0で可変長のテキストデータをOPENして"C"と"R"の間に囲まれた文字を
変数に格納していきたいのですがどうすればいいですか?
すみません、VB5CCEを使いたいのですが、マイクロソフトの
ダウンロードのページで検索しても見つけることができません。
どなたかどこか入手可能なところを教えていただけないでしょうか。
881 :
デフォルトの名無しさん:2008/02/12(火) 01:51:24
VB5CCEIN.EXE でググれ
>>881 おかげさまで見つけることができました。ありがとうございました。ぺこり
883 :
デフォルトの名無しさん:2008/02/12(火) 23:16:41
884 :
デフォルトの名無しさん:2008/02/14(木) 00:30:48
886 :
884:2008/02/14(木) 01:17:54
むー、うちはKB946235出てこないですね・・・(´・ω・`)
うちもKB943055だけでKB946235来なかった
KB946235はVB開発者が配布のときに使うべきDLL?
889 :
デフォルトの名無しさん:2008/02/17(日) 02:17:44
自分もKB943055しか出ない。
KB946235も入れちゃっていいのかな・・・
>>879 たとえば具体的にどういうテキストデータ?
890 :
デフォルトの名無しさん:2008/02/17(日) 17:26:39
VB6.0でノベルゲームみたいに文字を一文字ずつ表示させることは出来ますか?
なぜいまどきVB6?
>890
君はなんとかツクールでも使ってろってこった
893 :
デフォルトの名無しさん:2008/02/17(日) 19:43:45
>>891 部活でゲーム作ってるんですが、金がないので…
>>892 ツクール買うくらいならフリーでその分野に特化したのを使います
というか、もうダウンロードしてます
今からVB6なんて時間の無駄だ
C#でもやれよ、タダだし
金がないを言い訳にするのは、世間を知らなさすぎる。
今や、どこもかしこも、Microsoftすら、
開発ツールを無料で公開している時代。
896 :
デフォルトの名無しさん:2008/02/17(日) 22:33:27
>>894 何世代か前まではCもやっていたようですが…
一つだけ無駄でない事例を挙げるなら、情報の授業が楽になることです
>>895 それはわかっています
自分も一番最初に触れたは言語はVBではありませんでした
しかし、あくまでも部活なのです
時間が無限にあるわけではありません
さらに言えばほぼ全員が掛け持ちしています
この状態で知識の全くない世界へ足を踏み入れるのは自殺行為です
もし貴方の言う「開発ツール」が言語ではなく「ゲーム制作ツール」なら、始めから眼中にないことをお伝えしておきます
ゲームを作るのは結果であり、目的ではありません
目的じゃないなら新しい言語に挑戦したらいいじゃんと思うが。
まあ、最初のうちは VB6 でそのうち別の言語を・・・ってんならいいと思うけど。
>>896 かなり揚げ足とるけど
> この状態で知識の全くない世界へ足を踏み入れるのは自殺行為
# VB6.0でノベルゲームみたいに文字を一文字ずつ表示させることは出来ますか?
この二つは矛盾してる希ガス
VB.netで何の不満があるの?ってのが一致した意見だわな。どうせその程度の知識なら変わらんよ。
こんな釣りに付き合うなんておまえら相変わらず優しいのな。
超初心者向けってスレタイなんだから ・・・
オレなら
>VB6.0でノベルゲームみたいに文字を一文字ずつ表示させることは出来ますか?
は可能だと思う ノベルゲームっていうのがどんなのか知らんけど
>>894 スレタイ嫁w
>>896 その質問じゃ、どう答えれば良いのかわからんのよ
一つ言えるのは、一般的なADVみたいなものならVB6でも十分作れる
でもそのためには、GDIの知識か、DirectXの知識が必須なんだがその準備は出来ているだろうか?
たしかここ、本スレでいじめられた奴が逆切れで立てたスレだったな
スレタイに「オレに優しくかまってくれ」な雰囲気がただよってる
MicrosoftR Visual BasicR Version 4.0
アップデート キット 2 (97/03/07版) for VB4 Standard Edition
を探しています。
どなたかダウンロード先を教えて下さい。
905 :
デフォルトの名無しさん:2008/02/29(金) 01:56:04
ListViewコントロールのSubItemのForecolorを変えても、書き換えたタイミングで文字色が変わりません。
SendMessageでWM_NCPAINTを送ってみても変わりません。
仕方がないので今はForeColorを変えた後に、SubItem(1) = SubItem(1) と設定しなおせば変わるのですが、これって間違った対処方法ですよね?
どうすればForeColorを変えた瞬間に色が変わるのでしょうか?
906 :
デフォルトの名無しさん:2008/02/29(金) 01:56:32
>仕方がないので今はForeColorを変えた後に、
ここは無視して読んでください・・・
refreshとかないの?
VB6なんて使ってる奴いるの?っていうやつは趣味でやってる奴だな。
仕事でVB6なんてとんでもない貧乏会社か将来の見通しの甘い馬鹿だけだろ?ん?どうすんだこれから。マイクロソフトに見捨てられるぞ?
マイクロソフトが見捨てても遺産は残り続けるでFA
>>909 工場でぶんまわしてるのに移行して不具合が出たら、損害賠償ものだよ
新規の案件じゃないのに
ソースコードが公開されてるなら自分で保守を続けられるから
遺産と呼んでもいいけどさあ
913 :
デフォルトの名無しさん:2008/03/01(土) 02:01:53
>>890 Dim str$
str = "hello world(w"
Dim i&
Dim hdc&
hdc = GetDC(0)
For i = 1 To Len(str)
Dim s$
s = Mid$(str, i, 1)
TextOut hdc, (i - 1) * 16, 0, s, LenB(StrConv(s, vbFromUnicode))
MsgBox i & "文字目"
Next i
糞コードだがこんな感じ。普通は自分のウィンドウにフォント設定する。
Form#Printでおk
916 :
デフォルトの名無しさん:2008/03/02(日) 01:07:44
open "PRN" for output
open "COM1" for output
が使えないと製造業では使えません。
ラベルプリンタとか、RS232C制御のFA機だらけです。
917 :
デフォルトの名無しさん:2008/03/02(日) 10:28:42
open "PRN:" for output
open "COM1:" for output
いつも使ってるとは思えない。
自動倉庫のクレーン制御をVB5でやって動いてますけど・・・もう10年たつなぁ
荷物を押して・の位置にもっていく奴だね
けっこうハマったよ
それは倉庫番だろって
父さんが言ってたよ
フラッピーかと思った
おじいちゃん僕は若いのでこの流れがよくわかりません
でもそんなの関係ねえ
それはオッパッピーだろって
娘が言ってたよ
925 :
デフォルトの名無しさん:2008/03/04(火) 04:14:34
>>921 フラッピー!!
上に飛ばして、よく自爆したなぁ。
VB6使ってるのはおっさんばっかりだって事がわかった
927 :
デフォルトの名無しさん:2008/03/04(火) 17:26:48
おまんこしょっぱいぴー
コピペ君って馬鹿だな、まで読んだ。
馬鹿ほど、人を馬鹿と呼びたいもんさ
かわいそうだから全部読んだ
いまさらそんなのいらねー 誰が欲しがるんだろ?
933 :
デフォルトの名無しさん:2008/03/15(土) 19:26:02
FAや組み込み系なら今でも使ってるよ。↑おまえは自分の世界しか知らない井の中の蛙
934 :
デフォルトの名無しさん:2008/03/15(土) 19:52:31
>>916です。
VB2008購入しました。
open "PRN" for output
print #.....
を実行(代用?)する方法を分かる方教えてください。
MSのHP(期待してないが)、書籍類、その他ぐぐる等行いましたが、直接プリンタポートに
出力する方法が分かりません。
とりあえずこれが出来ればVB2008に移行しようと思ってます。
わお、井の中でよかった ほっ
>>934 CreateFile("PRN:"
などでぐぐれば出てくることはでてきたが?
>>934 COMポートはシリアルポートのコンポーネントがあるからいいとして、
プリンタポートは直接弄れるのかなあ。
VB.NETの問題じゃなくて、OSの制約じゃないかと。
かといって今さら古いOSに拘っててもダメだと思う。
そろそろスレチなんじゃね?
弄れなかったらシリアルパラレル変換機を通せばええねん
940 :
デフォルトの名無しさん:2008/03/16(日) 18:22:27
VB2008にCreateFile()は無い様なんですが、もう少し調べてみます。
スレチ申し訳ありませんでした。
Visual Studio 2008 のスレに移動します。
941 :
デフォルトの名無しさん:2008/03/19(水) 15:57:51
C++とかC#ばっかりやってた者なのですが、VBのコーディングについて質問があります。
Functionの中に複数の返り値がセットされているケースについてです。
以下は無意味で極端な例として書いたものなのですが、一応動作します。
しかし一般的にナンセンスでしょうか?
それとも許される書き方でしょうか?
Function FUNC_1() as integer
FUNC_1 = 1
if flg = true then Exit Function
FUNC_1 = 2
End Function
942 :
デフォルトの名無しさん:2008/03/19(水) 16:01:32
段がズレてしまったので書き直します。
Function FUNC_1() as integer
FUNC_1 = 1
if flg = true then Exit Function
FUNC_1 = 2
End Function
ついでに、VBには条件演算子がないようなのですが、
何か代替になる簡潔な書き方はないでしょうか?
例
↓
string s = flag ? "OK" : "NG";
IIfというのがあるにはあるけどあんまりお勧めしない
>>941 俺は別に気にせずただの変数の1つとして使っているが、
個人的なプログラムでしかVBを使ったことがないので、
他人がどう思っているなのかは知らない。
FUNC_1 = FUNC_1 + 1
こんなことも
iif使うときはショートサーキットじゃないことに注意な
2005でもそうだったと思うが2008では直ってるんかね
>>942 Function FUNC_1(flg As Boolean) As Integer
If flg Then
FUNC_1 = 1
Else
FUNC_1 = 2
End If
End Function
>>942 ずれちゃった・・・
Function FUNC_1(flg As Boolean) As Integer
If flg Then
FUNC_1 = 1
Else
FUNC_1 = 2
End If
End Function
わおーっ
FUNC_1 = (flg = True) + 2
俺は、条件が複雑になる場合に、こういうスタイルを使ってる。
If 条件1 And 条件2 And ...... Then という仕様だったら
Function FUNC_1() As Boolean
FUNC_1 = False '省略可能だがあえて書く
If Not 条件1 Then Exit Function
If Not 条件2 Then Exit Function
...
FUNC_1 = True
End Function
If FUNC_1() Then って書くと条件追加や削除などメンテしやすい
If 条件1 Or 条件2 Or ...... Then なら
Function FUNC_1() As Boolean
FUNC_1 = True
If 条件1 Then Exit Function
If 条件2 Then Exit Function
...
FUNC_1 = False
End Function
こういうの見てるとつくづくVBって糞言語だなという感を深めるな。。
多少のかっこ悪さはあるが,特に不思議というわけでもない
>>952 こんな糞言語でも ちょちょいって作ってあげると感謝されるから笑っちゃうよね
目的を達成するのに最も合理的な道具を選べばいい
そんだけやん
If Not 条件1 Then
ElseIf Not 条件2 Then
・・・
Else
・・・
End If
Select Case True
Case 条件1,条件2,・・・
・・・
End Select
If 条件1 Then If 条件2 Then If ...... Then
>>946 直ってるって・・・
別にそれが間違っているわけじゃないしな
一般的な言語から外れていてもそれがVBの言語仕様なのだから
ちなみに、論理演算は.netからandalsoとorelseが追加されてSCできるようになったよ
>>957 あー、まあそうだな。言い方が間違ってた。
で、2008ではどうなってんだろう
Collectionって便利だけど、ソートできんのな。ふざけんなよ
どうも バグっているようだ \(^o^)/
どうも.netで直ってるようだ
つ System.Collections.ArrayList
?
>>963はvb.netと勘違いしてんだろ ほっとけ
>>962 デフォルトのCompare関数のソートはできましたが、
VB6からCompare関数を作ってソート呼べますか?
.net?
Set DataList = CreateObject("System.Collections.ArrayList")
DataList.Add "B"
DataList.Add "C"
DataList.Add "A"
DataList.Sort()
For Each strItem in DataList
MsgBox strItem
Next
969 :
941:2008/03/27(木) 20:38:53
会社のISPがいつまでたってもアク禁から開放されないので自宅から。
>>943-956 サンクスコ
あ、ageちゃった…
スマン
VB6でかいたソフトが終了してもタスクに残ります。
EXCELをエクスポートする機能がありOLEを使用しています。
どのようなことが考えられるでしょう?
バグ
自分で宣言したフォーム変数でNewして使用せず、フォームのオブジェクト名と同じ名前のフォーム変数を使っている
フォームAとフォームBがお互いの参照を握ってガチムチになっている
>>973 つまりコードでかくとどのようになるのでしょうか?すいません。
>971もテンプレ化決定だお
VB6スレなんて何個もいらねえだろ
支那人も裸足で逃げるほどの初心者隔離スレは、
ひとつくらいあったほうがいいぬ。
うめ
caseについての質問です
comboboxが100項目近くあり、そのひとつひとつのcomboboxで選ばれたものに対して
1番目ならlabel1に0と表示、2場目ならlabel1に1と表示・・・とやりたいのですが
Select Case Combo1.ListIndex
Case 0
label1.Caption = 0
Case 1
label1.Caption = 1
Case 2
labe1.Caption = 2
とずっと続けると異常に長くなってしまうので、何か別の書き方はないでしょうか?
label1.Caption = Combo1.ListIndex - 1
-1はいらないのか
そういうやり方があったのか
ありがとうございます!!
>>982 こういうコードが業務用ソフトに入ってるかもしれない思うと・・・
慣れてしまえばどうって事は無い