くだすれVB6.0以前(超初心者向け)
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001d
2008/03/30(日) 09:01:59他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
VB使いが優しくコメントを返しますが、
お礼はVBの布教はしなくてよいので、初心者の救済をお願いします
前スレ
くだすれVB6.0以前(超初心者向け)
http://pc11.2ch.net/test/read.cgi/tech/1165574205/
0002d
2008/03/30(日) 09:02:39Visual Basic Version 5.0 Control Creation Edition SP2 日本語版
http://download.microsoft.com/download/vbcc/SP/05.00.4319/W9XNT4/JA/VB5CCEIN.EXE
Visual Basic 5.0 Control Creation Edition: SP2 ヘルプ ファイル
http://www.microsoft.com/downloads/details.aspx?FamilyID=b4394931-d7ab-4d38-a3f5-511fd3165b7f&DisplayLang=ja
http://download.microsoft.com/download/vbcc/Help/4.71.0121.0/W9XNT4/JA/CCEHELP.EXE
Visual Basic Version 5.0 Control Creation Edition: レジストリ修正モジュール
http://www.microsoft.com/downloads/details.aspx?FamilyID=e91b767c-30d6-407d-b0f3-fd93faebb592&DisplayLang=ja
http://download.microsoft.com/download/vbcc/Patch/1.00/W9XNT4/JA/REGFIX.EXE
Visual Basic 5.0: RecentFiles ツール
http://www.microsoft.com/downloads/details.aspx?familyid=C95613D6-D8D2-4A85-9139-3992B601D08A&displaylang=ja
http://download.microsoft.com/download/vb50ent/Patch/1.00/W9XNT4/JA/recents.exe
0003デフォルトの名無しさん
2008/03/30(日) 20:08:180004デフォルトの名無しさん
2008/03/30(日) 20:15:100005デフォルトの名無しさん
2008/04/02(水) 15:47:480006デフォルトの名無しさん
2008/04/02(水) 19:27:21abc.mdbのフィールド1には、A,B,Cの3種類のうちどれかが入力されており、
このうちAと入力されている列を抽出し、
さらにその中から5つの列をランダムに取り出したい場合、
どのようにすればいいのでしょうか?
ネットで調べましたが出てこなかったので質問させていただきました。
よろしくお願いします。
0007デフォルトの名無しさん
2008/04/02(水) 19:34:04本スレで質問してください
0008デフォルトの名無しさん
2008/04/02(水) 23:45:14まず、前スレ埋めれ。
0009デフォルトの名無しさん
2008/04/02(水) 23:48:19ここは、超初心者向けのスレ。
VB5CCEの使い方でもやさしく教えてけろ。
0010デフォルトの名無しさん
2008/04/02(水) 23:51:060011デフォルトの名無しさん
2008/04/03(木) 09:04:33ケツ貸してやれば教えてくれるか?
00126
2008/04/03(木) 12:17:54>>7
本スレ見つからなかったです。
0013デフォルトの名無しさん
2008/04/07(月) 13:48:28更新ボタンとかリアルタイム更新で確認したい、というものです。
ネット上検索でも、手持ちの参考書でも、
ドライブ→ディレクトリ→拡張子や属性別選択表示のコンボ形式ばかりで、
単純に決めうち表示するやりかたが見つかりません。
教えてください。お願いします。
0014デフォルトの名無しさん
2008/04/11(金) 17:41:40ディレクトリ下の複数テキストファイル(ファイル名は決まっていない固定長の
データ)を1つのファイルに纏める(1つのファイルに連結コピーする)方法を
教えて下さい。ロジックが思い浮かびません(;;)
0015デフォルトの名無しさん
2008/04/11(金) 18:00:20copy *.txt matome.txt
0016デフォルトの名無しさん
2008/04/11(金) 19:45:14thx
0017デフォルトの名無しさん
2008/04/12(土) 04:03:43Thank you
難しく考え過ぎていたようです。
フォルダの下のファイル一覧を作成して、それぞれ1行づつ読み込み
ワークエリアに書き込み・・・すっかり炉坪でした!!
試してみます。
0018デフォルトの名無しさん
2008/04/14(月) 08:49:15いい事言うなあお前。
みんなが頭じゃわかっててもなかなか実践できない事を口に出して言えるなんざ大した自信だよ。
それで出来てなかったらあのインチキ占いのバアさんと一緒だぞお前。
そんなに当たり前の事を言いたかったら尼さんにでもなって言行等しくなってから説教したらどうだ。
0019デフォルトの名無しさん
2008/04/21(月) 21:59:14処理中は見えないようにするためVisibleをFalseにするのですが、
EXEファイルから起動するとVisibleをFalseにした段階で最背面に表示されてしますいます。
Visual Basicから起動するとプレビュー画面が最前面に表示されるのですが何故でしょう?
使っているコンポーネントはQuickPack、Farpoint SpreadSheet、InputMan Proです。
今まで別な環境で作った際はこんな現象になったことはありません。
同じコンポーネントを使っている方で克服した方はおりますか?
ちなみにSetWindowPos等使わないで済ませたいです。
途中ダイアログを表示したりメッセージボックスを表示させたりするので
Visual Basicで起動しているときと同じ用途で実現させたいのです。
ちょっと分かりにくいかも知れませんが宜しくお願い致します。
0020デフォルトの名無しさん
2008/04/21(月) 22:12:240021デフォルトの名無しさん
2008/04/22(火) 00:46:220022デフォルトの名無しさん
2008/04/27(日) 12:52:330023デフォルトの名無しさん
2008/04/29(火) 18:14:350024デフォルトの名無しさん
2008/05/29(木) 11:58:27酒井法雄の Visual Basic 5.0 CCE講座
http://www.int21.co.jp/pcdn/activex/scrlabel/index.html
0025デフォルトの名無しさん
2008/06/02(月) 17:36:440026デフォルトの名無しさん
2008/06/04(水) 18:28:350027デフォルトの名無しさん
2008/06/04(水) 18:30:38あるDLLを使用しているVB6のアプリがあるのですが、
いちいちDLLとexeをペアでユーザー配布したくないので、exeの中にDLLを含めてしまいたい
のですが、コンパイルスイッチなどでそのような指定をすることはできるでしょうか?
0028デフォルトの名無しさん
2008/06/04(水) 21:24:180030デフォルトの名無しさん
2008/06/21(土) 00:37:29VB6.0で、ボタンを押すと最新状態の取得を行う処理を
行いたいのですが、どうしたらいいのかわからないです。
仕様書は以下のようになっているので、
どなたかご説明お願いします。
尚、SQLの部分はSELECT文は使わないとの指示です。
*調査員番号と調査機関コードを取得する。
★取得SQL→SELECT DISTINCT tt.調査員番号, tt.調査機関コード
FROM 調査員地区マスタ tt,地区マスタ tk
WHERE tt.状況フラグ='0' AND tk.市町村コード=画面.市町村選択コンボ
AND tt.地区コード=tk.地区コード
※調査員番号、調査員名が表示されている場合は、
tt.調査員番号 = 画面.調査員番号 AND
tt.調査機関コード = 調査員が属する調査機関のコード(グローバル変数)
の条件を追加をする。
※画面.対象市町村選択コンボで空欄を選択している場合は、
市町村コードでの抽出条件を省く。
*調査日と調査可能数を取得する。
★取得SQL→SELECT 調査日,調査可能数 FROM 調査員時間マスタ
WHERE 調査員番号 = "Aで取得した調査員番号"
AND 調査機関コード = "Aで取得した調査機関コード"
AND 調査日 >= カレンダー日付の最初の年月日(8桁:YYYYMMDD)
AND 調査日 <= カレンダー日付の最後の年月日(8桁:YYYYMMDD)
0031デフォルトの名無しさん
2008/06/21(土) 00:46:550032デフォルトの名無しさん
2008/06/21(土) 01:26:54素直にわかりませんって上に伝えるかわかる人をつかまえて教えてもらえよ
それで金もらうなんておかしーぜ
0033デフォルトの名無しさん
2008/06/24(火) 08:43:28Form1にボタンを1個置いて、そのボタンのクリックイベントで
Form2.Show
Unload Me
というコードを記述して実行します。
この場合イベントの発生順ですが
Form2のLoad --> Form1のUnload --> Form2のActivate
となるのですが
予想では
Form2のLoad --> Form2のActivate --> Form1のUnload
だったのですが
なぜこのような順序になるのでしょうか?
003433
2008/06/24(火) 09:29:39Form2.Show
DoEvents
Unload Me
としたら予想の順序になりました。
0035デフォルトの名無しさん
2008/07/08(火) 20:24:57VistaにVB6インストールしてプロジェクト‐コンポーネントのコントロールタブから
Microsoft Common Dialog Control 6.0を追加しようと思ったら、
Microsoft Common Dialog Control 6.0が無いんだけどなんでだ?
XPにインストールした場合はあるんだけど。
XPでコモンダイアログを含むコードを開発して、
それをVistaで編集しようと思ったら
comdlg32.ocxを読み込めませんとか出てきてできないじゃん。
0036デフォルトの名無しさん
2008/07/10(木) 09:16:34ログにとりたいのですがそのようなことは可能でしょうか?
たとえば
Function hoge()
Call LogWrite ("呼出もと:" & よびだしもと & )
Exit Function
といった感じです。
やはりhoge()を呼び出している側でログを出力する必要が
ありますか?
0037デフォルトの名無しさん
2008/07/10(木) 21:57:08Set cn = New ADODB.Connection
cn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\WK\TEST.mdb"
でACCESSのMDBに接続、クローズしてからタイマーで1分後に再度
接続するとエラーが発生することがあるのですが
エラーメッセージは
「データベースを開けない状態、またはロックできない状態にしています。」
という内容です、
1分ではなくて5分ほどに
するとエラーは発生しなくなります。
クローズしてから再度オープンする間隔が短いと何か問題とかあるのでしょうか?
0038デフォルトの名無しさん
2008/07/10(木) 21:59:330039デフォルトの名無しさん
2008/07/11(金) 03:11:27何か問題が、って質問からは外れるけど
ロックされてるか確認した上で接続するようにすればいいじゃない
0040デフォルトの名無しさん
2008/07/11(金) 20:22:40にしたらどうなる?
0041デフォルトの名無しさん
2008/08/29(金) 14:54:45VBでIEを操作していて例えば
Form name = formA
input name = ID
objIE.document.formA.ID.Value = Text1.Text
とかでIDにText1が代入できると思いますが
input name = ID.1
とnameにドットが入ってる場合
objIE.document.formA.ID.1.Value = Text1.Text
でID.1のドットの部分でエラーを吐いてしまって困っています
どうすれば回避できますでしょうか?
0042デフォルトの名無しさん
2008/08/29(金) 17:36:450043デフォルトの名無しさん
2008/08/29(金) 19:40:54ありがとうございます
[]で囲んでみましたが同じくサポートしてないとエラーを吐きます
困りました
VB6.0です
nameにドットが入ってない場合は正常に動作します
0044デフォルトの名無しさん
2008/08/29(金) 19:44:000045デフォルトの名無しさん
2008/08/29(金) 21:35:48A a
B b
なるインスタンスa,bがあったとして
b = a
でいいでしょうか?
それともb = a.clone or a.copyなるコピー関数をかかないといけないんでしょうか?
0046デフォルトの名無しさん
2008/08/29(金) 21:53:49オブジェクトの代入がコピーでないことを示すために、
Set b = a と書くようになっている。
なお、Stringはオブジェクトではなく型扱いなので代入でコピーが発生する。
0047デフォルトの名無しさん
2008/08/29(金) 22:41:030048デフォルトの名無しさん
2008/08/29(金) 22:49:23sub_func1..... func2
にわけてやろうとおもって3時間ほどトライしているのですが
内部で使われる構造体をずっと参照でわたしていって
深くなってくると値がかわってくれてないような><
なんか深さに制限あるんでしょうか。
実際には、3000行ある処理を30行くらいの関数にわけていって
おります。
type M
end
func1()
dim m1 as M_t
func2(m1)
func3(m1)
end
end
end
end
end
end
private func2(byref m as type M)
private func3(byref m as type M)
0049デフォルトの名無しさん
2008/09/01(月) 11:00:44ご提示お願いします。
0050デフォルトの名無しさん
2008/09/03(水) 20:27:47の配列にはいってる数値を、CSVで出力したいんだが、
for i=0
tmp=tmp & t(i,0) & "," & t(i,1) & vcrlf
next i
open "t.csv" For Binary Access Write As #1
Put #1, , tmp
close #1
で、tmpに溜め込んでバイナリで書き込もうとしたんですが、
tmpの後に追加していくと、行数が多くなるとだんだん重くなってしまいます。
もっと高速に保存する方法はないでしょうか?
Put #1, , t()
これが、怪しいような気がするんですが、、、
0051デフォルトの名無しさん
2008/09/03(水) 20:42:45>>50
遅いのは恐らく文字列の連結。(遅い理由はVBは文字列の連結ごとにメモリの確保と
コピーが入るから)
解決法は、確かmid$を使った文字列の高速な連結法があったはずだから
ググってそれを使う。
それが面倒なら、変数上で連結なんてせずに直接ファイルに追記すれば
少しはマシになるはず。
0052デフォルトの名無しさん
2008/09/03(水) 22:23:160053デフォルトの名無しさん
2008/09/03(水) 22:24:310054デフォルトの名無しさん
2008/09/03(水) 22:32:210055デフォルトの名無しさん
2008/09/03(水) 22:36:090056デフォルトの名無しさん
2008/09/03(水) 23:00:44Set sb = CreateObject("System.Text.StringBuilder")
sb.AppendFormat "{0}", "やればできるさ"
Text1.Text = sb.ToSTring
AppendLineがなぜかComコンパチじゃなくて使いにくいな。正直おすすめしない(笑
0057デフォルトの名無しさん
2008/09/04(木) 06:47:520058デフォルトの名無しさん
2008/09/04(木) 16:06:180059デフォルトの名無しさん
2008/09/18(木) 20:27:20どこかのByRefで渡す筈の引数に、ByValが紛れ込んでいるとか。
それくらいの規模になってきたら、そろそろ設計図書いた方が良いかもしれない。
>>49
グローバル変数とは、Publicで宣言された変数のこと。
引数に値を渡す必要が無いメリットがあるものの、
どこからでも読めてしまうデメリットは
最終的にデバッグを非常に困難にする為、扱いに非常に困る。
アニメーションは、そのままだな。
映画館の映写機みたいなイメージで
1秒間に最大60回くらい画面書き換えたりする事。
>>50
Valiant型使っておいて遅いとか言っちゃダメですぜ。
006059
2008/09/18(木) 23:48:31この環境にVB6入ってないからデバッグできてない挙句に、久し振りすぎてあちこち怪しいが、草案だけ出しておく。
Const MAX_X = 1 '配列の要素数が固定であるならば、
Const MAX_Y = 50000 'Constを使っておくと修正が楽。
Private t(MAX_Y,MAX_X) As Long
'--------メイン------->
Private Sub mn_Save_Click() 'セーブを要求する場合。例として、メニューの保存辺りから呼ぶとして…。
Dim Ret As Integer
Ret = MsgBox("セーブする?",vbOkOnly)
Select Case Ret
Case vbOK
Debug.Print "csvKakiko => FileName:" & App.Path & "t.csv" '一応、送られた文字列を確認。
Call csvKakiko(App.Path & "t.csv")
End Select
End Sub
'----保存とか--->
Private sub csvKakiko(ByVal FileName As String) 'csvに書き込む。/引数:FileName:ファイル名/絶対パス
Dim Fnum As Integer
Dim i As Long,i_Max As Long
Dim tmp As String
Fnum = FreeFile() '※必須。Closeされていないファイルナンバーを用いてOpen処理以降を発生させると別のファイルに書いてしまったりする。
Open FileName For Binary Access Write As #Fnum
For i=0 To MAX_Y '0から構造のY最大値まで昇順。(MAX_Yが50000なので、0-50000の50001レコードが記述される。)
tmp= Format(t(i,0)) & "," & Format(t(i,1)) & vbCrLf '記録する文字列を組みながら
Put #Fnum, , tmp '記録する。
Next
Close #Fnum
End Sub
0061デフォルトの名無しさん
2008/09/20(土) 18:41:23IEを起動時 or 起動後にJavaScriptを切る方法ってないでしょうか?
バージョンはIE8beta2ですがIE6の方法でも構いません
0062デフォルトの名無しさん
2008/09/20(土) 21:24:440063デフォルトの名無しさん
2008/09/22(月) 13:59:120064デフォルトの名無しさん
2008/09/22(月) 14:26:020065デフォルトの名無しさん
2008/09/22(月) 23:07:09最初からはいが選択されてる状態で
自動的にエンターキーを押させてはいを決定させたいのですが
SendKeys "{ENTER}", True
これでいけると思ったのですが反応しません
自分でキーボードのエンターキーを押すともちろん反応します
何か手違いか、他に方法ありますでしょうか?
0066デフォルトの名無しさん
2008/09/22(月) 23:18:02どうでもいいが、間違いの予想はいくつか出てくるがソース出せやクソガキ
0067デフォルトの名無しさん
2008/09/23(火) 01:26:08IEのダイヤログが出る部分の設定を全部「常に許可」に設定すればVB側で弄らなくても解決する。
0068デフォルトの名無しさん
2008/09/23(火) 21:41:240069デフォルトの名無しさん
2008/09/24(水) 10:08:00疑問に思ったんで教えて欲しいです。
a=&H100&
みたいに数字の後に & が付いているのは何ですか?
数字の前の&Hはなんとかわかるんですが・・・
参考書とか読んでも & は「文字列を連結するための・・・」
とかしか出てなくて。
0070デフォルトの名無しさん
2008/09/24(水) 10:15:360071デフォルトの名無しさん
2008/09/24(水) 12:49:27ただの16進数の書式だったかと。
後ろの『&』無しでも普通に動いてると『&』が後ろについてる理由が解らんのだよな。
『&』は、単独ならString型データの結合の演算子として扱う。(一応、『+』演算子でも動作する恐怖。)
Sub Main
'以下の一文で 255 が出力される。@formatを用いているのは、返されたByte型の255の値を文字列型にする為。
Debug.Print format(changeHexStringToByte("ff"))
End Sub
Private Function changeHexStringToByte(ByVal HexStringNN As String)As Byte
changeHexToValue = Val("&H" & HexStringNN & "&") '文字列を作って無理矢理Valに通す。
End Sub
0072デフォルトの名無しさん
2008/09/24(水) 12:55:290073デフォルトの名無しさん
2008/09/24(水) 13:11:220074デフォルトの名無しさん
2008/09/24(水) 13:21:00調べてみたのだが、いまいち自信が持てない。
(&H0000はInteger型で扱われる。≒最上位ビットが1の場合はマイナス符号化?)
今まで&H0000&のみしか使ってなかったし、何やら損した気分に。orz
0075デフォルトの名無しさん
2008/09/24(水) 13:29:560076デフォルトの名無しさん
2008/09/24(水) 15:33:49MsgBox TypeName(&H8000&)
0078デフォルトの名無しさん
2008/09/24(水) 16:10:02MsgBox &H8000&
MsgBox &H8000=&H8000&
007977
2008/09/24(水) 18:15:36ありがとう。数値の扱われ方が何となく解った気がします。
&HFFFFでやってみたら-1と65535になりました。
調べてみたらこんなのが…。
16進数表記:格納されているデータの2進数:10進数(アンダースコアは便宜上の物)
&H8000:1000_0000_0000_0000:-32768
&HFFFF:1111_1111_1111_1111:-1
&H0000:0000_0000_0000_0000:0
&7FFF:0111_1111_1111_1111:32767
&H8000&:0000_0000_0000_0000_1000_0000_0000_0000
切欠を貰えた事にも感謝します。m(_ _)m
0080デフォルトの名無しさん
2008/09/24(水) 21:43:07button1からbutton30を作って、同じform内に
button100からbutton130を作るって出来ますか?
button31からbutton99は使用しないです。作成も
したくないです。
質問してて、無理っぽいと思ってますが、どうでしょうか?
0081デフォルトの名無しさん
2008/09/24(水) 21:55:030082デフォルトの名無しさん
2008/09/24(水) 23:17:430083デフォルトの名無しさん
2008/09/25(木) 08:56:551〜130作って31〜99を消せばいい。
しかし、そこまで多くなったら素直に配列化した方が良いと思う。
フォームに貼り付けたコントロールをコピペするだけで配列化できるから
試してみた方が良いかも。
0084デフォルトの名無しさん
2008/09/25(木) 09:42:51load ボタン
objectの配置
next
for 100から130
load ボタン
objectの配置
next
0085デフォルトの名無しさん
2008/09/25(木) 14:26:19VB6でDoEventsを入れると
コマンドボタンのEnabledがTrueになるんですけど…
例
command1.Enabled=False
DoEvents
ここで勝手にcommand1のEnabledがTrueになっています
仕様ですか?
0086デフォルトの名無しさん
2008/09/25(木) 15:00:200087デフォルトの名無しさん
2008/09/25(木) 15:33:26実際にEnabled=False
の真下でDoEventsしたらTrueになってるから聞いてるんですけど?
何でも上から目線で威圧的に言えば良いってものではないですよね
ここでしか偉そうに出来ないからそんな態度なんですか?
恥ずかしい人ですね
0088デフォルトの名無しさん
2008/09/25(木) 15:49:41それだけのソースだと判断できないと思うが。
その場所でcommand1のEnabledがTrueになったって確実に言い切れるほど
原因が追求できているなら、問題は既に解決してしまっている訳だからね。
はい、次の人どうぞ。
0089デフォルトの名無しさん
2008/09/25(木) 16:37:580090デフォルトの名無しさん
2008/09/25(木) 16:44:200091デフォルトの名無しさん
2008/09/25(木) 18:54:53DoEventsで止めて画面を見るとcommand1の文字がきちんと薄くなっている
のにDoEventsの次の行で止めると文字は押せる状態の通常色になっていました
ちなみに上の2回は1回の実行で連続して確認した訳ではなく
1回目の実行ではDoEvents、2回目の実行では次の行という風にしました
これで分かって頂けるでしょうか?
なのでここ以外のソースは関係ないと思っています
0092デフォルトの名無しさん
2008/09/25(木) 20:09:30Command1_Clickでやってみたけど(ここはあってる?こういうのの確認にソースがいるってこと)
再現しないね。
検索で Command1.Enable = Trueのところを全部探してごらんよ。
あったらそこにもブレークポイントを入れてみる。
0093デフォルトの名無しさん
2008/09/25(木) 20:59:17DoEventsする前におまえの書いたコードでイベントが発生していて
そのハンドラでおまえが自分でEnable=Trueにしてるからなるんだよ
こんな程度のことでコンパイラ疑うとか図々しいにもほどがある
0094デフォルトの名無しさん
2008/09/25(木) 23:46:14DoEvents
command1.Enabled=False
DoEvents
こうすれば直るよw
0095デフォルトの名無しさん
2008/09/26(金) 09:11:06やっぱくだらないスレだわ
役に立ってるかもしれんが
相手のことをおまえだとか
自分に知識があるからと偉そうな態度だわで
人格疑うよ
ここは超初心者向けのスレじゃないのか…
がっかりだね
0096デフォルトの名無しさん
2008/09/26(金) 09:13:05>>85さん、おはようございます
0097デフォルトの名無しさん
2008/09/26(金) 10:38:360098デフォルトの名無しさん
2008/09/26(金) 13:05:3985です
えっと、とりあえず95は俺じゃないよ?
さっき起きただけだし…
Enabled=False
のすぐ下でDoEventsしても他のプログラムが走るってこと?
なんかよく分からないね
難しい
0099デフォルトの名無しさん
2008/09/26(金) 13:55:14これで1の処理中に2のボタンが押せる。
情報を出したがらないから直接の原因と結果とは結びつかないが、
これに近い現象だとみんな思ってるはずだよ。
Private Sub Command1_Click()
Dim i As Long
Command1.Enabled = False
For i = 0 To 50000
Label1.Caption = i
DoEvents
Next
Command1.Enabled = True
End Sub
Private Sub Command2_Click()
Command1.Enabled = True
End Sub
0100デフォルトの名無しさん
2008/09/26(金) 15:33:52Command2のボタンを押すと情報をグリッドに表示させるという処理があって
Command1のボタンを押すとグリッドから選んだデータの情報を詳しく表示させるという
感じのプログラムなんですけど
Command2のボタンを押して情報検索したり表示したりという処理中は
Command1のボタンを押せないようにしようとしています
なので
Command2のボタンを押した時にCommand1のボタンのEnabled=Falseにして
処理が終わった時に
Command1のボタンのEnabled=Trueにする処理を書いています
実際にDoEventsを書いているのはFalseにしている場所とかなり離れているのですが
そこでTrueに変わって押下可能状態になっていたので
DoEventsを少しずつFalseの場所に近づけて実行を繰り返したんですが
結局はFalseの真下に書いた状態でもTrueになっている事が分かったので
訳が分からなくなったという状態です
って説明結構苦手なので分かってもらえるかは不安ですが
こんな感じです
0101デフォルトの名無しさん
2008/09/26(金) 15:52:030102デフォルトの名無しさん
2008/09/26(金) 16:31:25そのフォームのすべてのイベントの最初でログを出すように
してみるといいよ。
たぶん予想していないイベントが発生してると思うよ。
DoEventsは難しい。
0103デフォルトの名無しさん
2008/09/26(金) 16:33:45罵倒されるのが嫌なら書込まなきゃいい そんだけ・・・
もうくんなよ ってそのうち書かれるよん。
VBの情報なんてネット上にゴロゴロしてるわけだしヒントもらえればラッキーくらいじゃないとねぇ
回答者の立場で考えてみてくれ
情報を後出しされるということは どんだけいろんなパターンを想定して回答しなきゃならないかを
ぶしつけな質問にはそういう回答にならざる終えない宿命をかかえているという事だ
0104デフォルトの名無しさん
2008/09/26(金) 17:39:47いずれにしても、イベント内やDoeventsを使ったロジックを1ラインずつデバックしながら製造するのはやめた方がいいよ。
>102の言うようにトレースしたり、ウオッチ式でプロパティが変わった場所を突き止めるなりしてみたらいいと思う。
あと、単体テストはコンパイル後にEXEで実施しなきゃだめよ!
0105デフォルトの名無しさん
2008/09/28(日) 10:40:35スタート→処理A→処理B→処理C→処理D→終了
のような場合にA〜Dのところで稀にサイトのエラーページに飛ばされることがあります
その時に自動でスタートに戻って再び最初から処理させたいのですが
htmlのタイトル名、もしくはエラーページのテキストで判別することは可能でしょうか?
仮にタイトルは「エラー」、そのページに「エラーです」というテキストがあるとして
これらがあった場合にスタートに戻る処理をさせたいのです
初歩的な質問ですみません
0106デフォルトの名無しさん
2008/09/28(日) 13:36:43そのロジックの実行は電子計算機損壊等業務妨害に抵触します。
0107デフォルトの名無しさん
2008/09/30(火) 11:23:510108デフォルトの名無しさん
2008/09/30(火) 15:43:00どの開発環境に移行しますか?
0109デフォルトの名無しさん
2008/09/30(火) 16:06:14動かないというソースは?
0110デフォルトの名無しさん
2008/09/30(火) 17:11:39両方が終了した後に出るOSだから。
0111デフォルトの名無しさん
2008/09/30(火) 17:15:500112デフォルトの名無しさん
2008/09/30(火) 17:18:360113デフォルトの名無しさん
2008/09/30(火) 17:46:30>来年6月に出る
これのソースは?
0114デフォルトの名無しさん
2008/09/30(火) 18:01:580115デフォルトの名無しさん
2008/09/30(火) 18:17:24つまり、末端の端末の標準OSが2000かXPになるわけだな。
それほど でかいプログラム扱う場所なんざVB使ってないだろうし。
新しいOS出る度にOS買い直すとか、最先端技術を駆使するなら使うだろうけど、
そうでないならば、ある種の金の無駄だからな。
(個人的には、今の所はwindows2000が入ってたマシンを
フルチューンナップした方が使い良いと思う。スペック的にもコスト的にも。)
VBは思い付きで(殆ど設計を書かずに)プログラムを書き始めても
それなりに完成してしまうのが良い所だな。
.NETからその手軽さが少し薄れて個人的には残念な気分だが…。orz
0116デフォルトの名無しさん
2008/09/30(火) 19:16:16VB6は将来安泰ですよ
0117デフォルトの名無しさん
2008/09/30(火) 23:18:54VB6でシェアウェア作って生計たててる俺涙目wwww
VC++勉強しなきゃ・・・
0118デフォルトの名無しさん
2008/10/01(水) 00:02:540119デフォルトの名無しさん
2008/10/01(水) 00:08:360120デフォルトの名無しさん
2008/10/01(水) 14:58:33ソースは?
0121デフォルトの名無しさん
2008/10/01(水) 15:10:53だがCOBOLしかできない奴はいたな
0122デフォルトの名無しさん
2008/10/01(水) 15:26:550123デフォルトの名無しさん
2008/10/01(水) 16:29:580124デフォルトの名無しさん
2008/10/01(水) 16:31:38それってたまたま言語がCOBOLだっただけで
VB6もそれしか出来ない人くらい居るだろ…
0125デフォルトの名無しさん
2008/10/01(水) 19:40:470126デフォルトの名無しさん
2008/10/02(木) 01:31:43絶対に動く。
動かなかったら100万円やるよ。
0127デフォルトの名無しさん
2008/10/02(木) 01:33:340128デフォルトの名無しさん
2008/10/02(木) 02:20:210129デフォルトの名無しさん
2008/10/02(木) 18:54:200130デフォルトの名無しさん
2008/10/02(木) 23:31:070131デフォルトの名無しさん
2008/10/02(木) 23:48:24動かないというよりサポート対象から外れるということだろうね。
あとランタイムのOSへのバンドルもなくなるだろう。
それでもインストーラでランタイムを入れれば何とか動きはするだろうけど。
0132デフォルトの名無しさん
2008/10/03(金) 00:13:16みたいな。
0133デフォルトの名無しさん
2008/10/03(金) 00:36:20やっぱ互換がある程度保障されてないといくらMSでも買い控えられるのはVistaで分かったろう。
VB6なんて普及度高いんだし、フリーのツールも多いし。
0134デフォルトの名無しさん
2008/10/03(金) 00:46:480135デフォルトの名無しさん
2008/10/03(金) 18:42:28C#今やってるけどやっぱりC++にくらべてライブラリが少なすぎる…><
0136デフォルトの名無しさん
2008/10/03(金) 18:45:42いや、誇らしい成果だろ、MS的には。
0137デフォルトの名無しさん
2008/10/03(金) 21:52:04クラスモジュールと
標準モジュールの違いがいまいちわからん
クラスはオブジェクトとして使ったりコンパイルしてDLLとして参照すると
名前でプロシージャーを呼び出せるってことなのか?
標準だと他のモジュールのって呼び出せない?
0138デフォルトの名無しさん
2008/10/03(金) 22:11:27ふつうのを書くための場所が標準モジュール
0139デフォルトの名無しさん
2008/10/04(土) 00:15:000140デフォルトの名無しさん
2008/10/04(土) 00:17:14本気でそう理解してる人が多くて困るんだよなw
0141デフォルトの名無しさん
2008/10/04(土) 11:39:14まさか参照とかでつまづく人はいないと思うけど。
やっぱ用途だよ。ゲームづくりだとVB6は物足りないけど、ツール製作ならNO.1だよ。
0142デフォルトの名無しさん
2008/10/04(土) 12:03:270143デフォルトの名無しさん
2008/10/04(土) 17:25:27標準モジュールはクラスモジュールの意味が理解できないアホ専用モジュール。
99%の実装はフォームとクラスモジュールだけで作れるし、作るべきだ。
同じ機能を持つインスタンスを複数作れるということのメリットを理解しろ。
それにクラスモジュールだとC++などのオブジェクト指向言語への移植性が格段に良くなるから、
VB6がWindows7で動かないとしても、移植作業であまり困らない。
0144デフォルトの名無しさん
2008/10/04(土) 17:54:05君VBでまとまった量のコード書いたことないでしょ?w
0145デフォルトの名無しさん
2008/10/04(土) 18:45:23とかそんなんだ。
0146デフォルトの名無しさん
2008/10/04(土) 21:55:01今メンテしてるのだと、クラスモジュール80、フォームモジュール20のアプリが俺一人で作ったものでは一番大きい。
今それをVC++に移植してるが、クラス名やソースファイル構成をほとんどそのままで一対一に移植できてる。
VBのクラスはhas-a構造しか持てないが、これだけで十分にオブジェクト指向ライクなプログラミングはできるからな。
クラスモジュールを使ってなかったら、オブジェクト指向言語への移植はまず無理だったろう。
ま、標準モジュールだけでスパゲッティプログラムを作って、DoEvents地獄に陥るアホな開発者は
この先生きのこれないのは確実。
0147デフォルトの名無しさん
2008/10/04(土) 22:05:02やっぱり分かってないね。
クラスモジュールを積極的に使え、までは正論なんだけど
「標準モジュールはクラスモジュールの意味が理解できないアホ専用」(=標準モジュールを使うな)
は全く正しくない。
VBって言語は嫌でも標準モジュールを使わないとまともなコードは書けないようになってるんだよ。
理由はいくつかあるが、
- VBのクラスは静的メソッドが書けない。
- Win32APIの宣言は標準モジュールにしか書けない。
この二つが大きいかもしれない。
0148デフォルトの名無しさん
2008/10/04(土) 22:07:55使いたくなる。というか使わないとやってられなくなる。
0149デフォルトの名無しさん
2008/10/04(土) 22:47:05>Win32APIの宣言は標準モジュールにしか書けない。
すぐばれる嘘をつくな。
0150デフォルトの名無しさん
2008/10/04(土) 22:57:280151デフォルトの名無しさん
2008/10/04(土) 22:58:58別に嘘を書いたつもりはないが、VB6を触らなくなって久しいので
間違っているかもしれん。
いずれにせよ、public staticなメソッドが書けるのは標準モジュールだけだ。
0152デフォルトの名無しさん
2008/10/05(日) 10:37:52例えば、桁数合わせ(左スペース埋めみたいな)関数とか桁数切り取り(左7バイト切り取り)関数のようないわゆるよくある共通関数は標準モジュールに並べるほうが良いと思う。
単なる関数群をクラスモジュールに記述されていると、何か意図的なものがあるのか考えてしまう。
0153デフォルトの名無しさん
2008/10/05(日) 10:48:580154デフォルトの名無しさん
2008/10/05(日) 11:02:14なんであえてクラスなの?
0155デフォルトの名無しさん
2008/10/05(日) 11:05:03VBのStaticキーワードは別物。たまにそれでバグを作ってるのを見かける。
少なくともUtilクラスをNewして使うようなことはしたくないな。
そんなときはモジュールでしょ。
0156デフォルトの名無しさん
2008/10/05(日) 11:08:470157デフォルトの名無しさん
2008/10/05(日) 11:19:280158デフォルトの名無しさん
2008/10/05(日) 12:00:49そういう奴って言語仕様とか特性って考えないのかな。
今流行のコーディング思想とかには言語の垣根をすぐ越えて飛びつくけど、
自分が開発している言語でいかにいいプログラムを作るかを考えようとは思わないよな。
保守性、拡張性、メモリの取り方や開放の仕方・タイミングなどなど。
今関わっているプロジェクトに今使っている言語でいかにいいものが提供出来るか、という前提のもとに開発しているとは思えん。
そんなやつはどこいってもただの半端者だろう。
オブジェクト指向とか言語の移植とかを自慢げに語っている時点でピントがずれてる。
そんな大層なことでもないしw
0159デフォルトの名無しさん
2008/10/05(日) 12:07:06クラスモジュールなんか使わないよね。
使わなくてもものは作れるもん。でもそれでいいのかな。
0160デフォルトの名無しさん
2008/10/05(日) 12:15:05クラスも使うし、JAVAとVB.NETもメインでやってるけど、
VB6で開発する時にオブジェクト指向を意識することはない。
0161デフォルトの名無しさん
2008/10/05(日) 12:23:300162デフォルトの名無しさん
2008/10/05(日) 12:23:33オブジェクト指向って意識してやるもんでもないでしょ?
自然とオブジェクト指向脳になるでしょ?
0163デフォルトの名無しさん
2008/10/05(日) 12:31:27オブジェクト指向脳って言われても困るが、
無意識にクラスを多用してるかと言われるとそうなのかもしれない。
でも、クラスモジュールにする必要がなけりゃ標準モジュールで実装するよ。
0164デフォルトの名無しさん
2008/10/05(日) 12:31:320165デフォルトの名無しさん
2008/10/05(日) 12:49:290166デフォルトの名無しさん
2008/10/05(日) 13:17:37>>146はたぶんVBでそれなりの規模のコードを書いたことがないだけで、
言ってることがそんなに間違ってるわけじゃないよ。
0167デフォルトの名無しさん
2008/10/05(日) 13:33:00アホじゃないの?逆だろ。
規模が大きくなるほどカプセル化して依存性やソース変更の影響範囲を狭めようとするのが常識。
どこからでも直接呼ばれ得る膨大な関数群で出来てる巨大プロジェクトなんて
絶対メンテしたくねーw
てゆうか、すでに死んだ言語の標準モジュールの是非について熱く語るのもアホらしい。。
0168デフォルトの名無しさん
2008/10/05(日) 13:35:49だからそこはお前さんの言ってることは正しいから
意味なく煽るような書き方するなって。
自分が幼稚なガキじゃないと思いたいならね。
0169デフォルトの名無しさん
2008/10/05(日) 14:12:290170デフォルトの名無しさん
2008/10/05(日) 14:17:390171デフォルトの名無しさん
2008/10/05(日) 14:22:41意味的なまとまりごとにmoduleを分ければいいだけの話
0172デフォルトの名無しさん
2008/10/05(日) 14:27:170173デフォルトの名無しさん
2008/10/05(日) 16:55:560174デフォルトの名無しさん
2008/10/05(日) 16:59:460175デフォルトの名無しさん
2008/10/05(日) 17:20:49それは合ってる。
だが逆に極端な例を出せば、標準モジュールのmainに100step程度書けば実装出来るようなものも出来るわけだ。
要するにクラスを使う→正、標準を使う→誤 みたいな固定観念を持っていること自体がおかしいのよ。
それに気づいてくれ。
0176デフォルトの名無しさん
2008/10/05(日) 23:53:16>>142みたいに使うことを禁止してるような職場など論外。
よほどレベルが低い人間が集まってるんだろう。
「クラスモジュール使わなくても大規模なソフトを作れてるよ。特に困ってないよ。」
とかいうけど、そういう考えの奴がチームに一人でも居ると、まともなプログラマが迷惑するんだよ。
今時オブジェクト指向を理解しようとしない奴なんてプログラム書く資格ないよ。
0177デフォルトの名無しさん
2008/10/05(日) 23:57:530178デフォルトの名無しさん
2008/10/06(月) 00:27:56ソースがどんな書き方されててもかんけーねーよ。メンテしないんだから。
俺はその手の納品を何件もみてきたが、C長くやっててクラスがなんたるか理解できて
ないけど、腕はたしか。で、標準モジュールだけでかかれてた奴が軽快に動作して
バグなし、しかも短納期なのをみてると、ほんと口だけの奴はどーでもいいよ。
ま、しかし、どとねっと案件は、怖くて発注できませんわなw
0179デフォルトの名無しさん
2008/10/06(月) 00:32:180180デフォルトの名無しさん
2008/10/06(月) 00:38:26ほとんどの関数をCで書いてDll化。
DeclareでVBから呼び出し。Formがほとんど。
っていう納品のされ方なんだが、DllのソースがVC++なんで
メンテのときVBと両方みるのが素人のおれには、ややつらい。
構造体の受け渡しとかめんどーなんだよな。
0181デフォルトの名無しさん
2008/10/06(月) 00:42:270182デフォルトの名無しさん
2008/10/06(月) 00:48:12お世話にならんといかんからなー。じゃ、結局C++でやっちゃえよ、って
ほうにいってから作るから180みたいなのは非常に多い。
0183デフォルトの名無しさん
2008/10/06(月) 00:50:26わざわざDLLにして呼ぶくらいならなぁ
MFC使えば生産性も2倍も変わらないと思うんだけどなぁ
0184デフォルトの名無しさん
2008/10/06(月) 02:33:290185デフォルトの名無しさん
2008/10/06(月) 03:14:450186デフォルトの名無しさん
2008/10/06(月) 10:45:29グローバル変数やgoto文使いまくりでもOKと同類の主張する人がいるスレはここですか?
0187デフォルトの名無しさん
2008/10/06(月) 21:10:16一応それなりの数のソース見てきた俺としてはだな。
コメントは「コメント」をつけろ!
ゴミ変数残しとくな!
これ出来ていないソースがむっちゃくちゃめちゃいけ多い。
'ここで日付の入力を非活性化にする とか
とか書いてんの。アホか。ソースの日本語訳なんていらんわ!
0188デフォルトの名無しさん
2008/10/06(月) 21:30:290189デフォルトの名無しさん
2008/10/07(火) 21:51:280190デフォルトの名無しさん
2008/10/07(火) 22:00:08コメント無しのソースを、読む練習をすると良い。
まぁ、変なコメント付いてるといらつくんだが、修正跡は全文残しておいて欲しいし(その一つの修正がバグの原因になる事も多い)
書いてる人が読めないソースになるのも本末転倒だしな。
愚痴るよりは、その人にソースの書き方をアドバイス。
上司だったりしたら目も当てられんが。
0191デフォルトの名無しさん
2008/10/07(火) 22:29:410192デフォルトの名無しさん
2008/10/07(火) 23:42:23最近クラスについて勉強中なのですが
ちょうどクラスモジュールと標準モジュールのことが話題に
のぼっていたので質問させてください。
私の中では
「クラスモジュールでやれることはクラスモジュールでやり、
それ以外は標準モジュールで」
という認識でした。
あとは、標準モジュールは
・プログラムで汎用的に使われるメソッドや変数
をおくべき場所なのかなぁって。
結局のところ上の議論が集結していなくて答えが分からなかったのですが
認識は正しいのでしょうか?
クラスモジュールと標準モジュールの使い分け方や
クラスについて正しい理解がしたいので教えてください。
0193デフォルトの名無しさん
2008/10/07(火) 23:49:47そうすれば自然にわかってくる
0194デフォルトの名無しさん
2008/10/08(水) 00:13:06そもそも今からVB6を学ぶってどうなの、って感は否めないけど
仮にそれが避けられないとしても、先にC#なりVB.NETなりで今時のプログラミングの
考え方をマスターしてからやった方が、回り道のようで案外早いと思う。
まあ、VB.NETとかに慣れちゃうと、なまじ中途半端に似てる分
VB6のダメさが目についてイライラするかもしれんけど。
0195デフォルトの名無しさん
2008/10/08(水) 01:26:32>・プログラムで汎用的に使われるメソッドや変数
メソッドはともかく変数はどうだろうな?と個人的には思うなぁ。
標準モジュールにPublic変数の宣言書いちゃうのは個人的には禁止したい。
0196デフォルトの名無しさん
2008/10/09(木) 10:57:14sub main()
だけ
0197デフォルトの名無しさん
2008/10/09(木) 11:23:350198デフォルトの名無しさん
2008/10/09(木) 11:57:550199デフォルトの名無しさん
2008/10/09(木) 18:29:17グローバル変数はすべての基本。
全てグローバル使ってこそ本物。
0200デフォルトの名無しさん
2008/10/09(木) 21:10:10了解した、その手筈でやってみるZE!
0201デフォルトの名無しさん
2008/10/11(土) 15:37:040202デフォルトの名無しさん
2008/10/11(土) 16:08:55どなたかありませんかね?リンクでもいいです。
0203デフォルトの名無しさん
2008/10/11(土) 22:06:51まず202氏の書いている『まともなソース』を頼む。
0204デフォルトの名無しさん
2008/10/12(日) 15:42:010205デフォルトの名無しさん
2008/10/12(日) 18:20:500206デフォルトの名無しさん
2008/10/12(日) 18:27:170207デフォルトの名無しさん
2008/10/13(月) 22:05:05そういうことでしょうか?
0208デフォルトの名無しさん
2008/10/13(月) 22:10:130209デフォルトの名無しさん
2008/10/13(月) 22:13:500210デフォルトの名無しさん
2008/10/13(月) 22:15:560211デフォルトの名無しさん
2008/10/13(月) 22:27:36例えば、このあたりのソースは、どんなもんです?
英単語の綴りミスや、関数のコメントが冗長なのが気になりますが
結構好みです。
0212デフォルトの名無しさん
2008/10/13(月) 22:44:39暗号のやつとかみてみたけど、それほどきれいじゃないね。
0213デフォルトの名無しさん
2008/10/13(月) 22:48:54html埋め込みも可
'///////////////////////////
'//
'///////////////////////////
もしくはJavaDoc風。 C#風なのはいいのだがXMLがださい。
0214デフォルトの名無しさん
2008/10/13(月) 22:55:56そのサイトのどれだろう
FTPと文字列変換クラスしか見てないけど、いいと思う。
機能数が増えてもこの感じを維持できれば十分だ。
0215デフォルトの名無しさん
2008/10/13(月) 23:07:56オープンソース文化がVBになかったのが、技術あがらない原因のひとつだとはおもう。
0216デフォルトの名無しさん
2008/10/14(火) 00:53:033年ぐらい前まではインターネット上にVB6のソースがどの言語のソースよりも豊富にあった。
ほとんどが英語圏だけどな。
0217デフォルトの名無しさん
2008/10/14(火) 00:56:37「好みかどうかで言えば」個人的にはいまいちかなぁ。
関数はcallをきちんと書きたいし、
変数宣言は先頭でまとめたい。
if A then B も
if A then
B
end if
と書きたいかな。
エラー処理はよく出来ているが、ErrRaiseのあとにExit Subが書いてあるのが残念な気がする。
0218デフォルトの名無しさん
2008/10/14(火) 01:02:260219デフォルトの名無しさん
2008/10/14(火) 01:03:000220デフォルトの名無しさん
2008/10/14(火) 01:25:300221デフォルトの名無しさん
2008/10/14(火) 09:50:120222デフォルトの名無しさん
2008/10/14(火) 18:31:22「1行で完結するからインデントする必要ない」として、解釈するようにしている。
インデントはIf〜End If等の構造の始点と終点を見るための物なので、
Ifを1行だけの場合は、EndIf含めて3行も使う必要性が無い。
ソースを縦に延ばすと逆に見難くなってしまう挙句に
If文如きでインデントしてると(If文は頻繁に出てくる傾向があるので…)インデントが不必要に多くなってしまって
忘れた後でソースを見た時に目も当てられん状況になる。
私的にはこの様な感じで構造的な形式を取る場合以外はEnd Ifが出てくる状況を避ける様にしている。
If hoge = n Then
If hogehoge = nn Then
hogehogehoge = nnn
End If
End If
1行で済ませるのが通常の条件判定、
End Ifが含まれるのが構造の条件判定…と言った形もお勧めしてみる。
0223デフォルトの名無しさん
2008/10/14(火) 18:53:51組み込み関数もCallしてるの?
0224デフォルトの名無しさん
2008/10/14(火) 21:05:52人それぞれだろうね。
自作した関数の呼び出しはCallでやってる人とか、
戻り値を捨ててる目印にしている人とか。
0225デフォルトの名無しさん
2008/10/14(火) 21:42:56if A then
B
end if
派だな。
あと引数をはっきりとわからせるようCallも付ける派。
0226デフォルトの名無しさん
2008/10/15(水) 00:36:08関数を明示することと、callをつけて戻り値有無を表すといったメリットをなくすほどのものなのか
俺はコメントをきちんと書くのと同じレベルの感覚だから、ちゃんとつけるってだけ。
0227デフォルトの名無しさん
2008/10/15(水) 01:39:15Functionの戻り値を無視する意図があるとか。
0228デフォルトの名無しさん
2008/10/15(水) 01:44:28if((条件式A = False ) or (条件式B = False ) ) then
処理(チョメチョメ)
end if
こういうif文で、条件式A、BそれぞれがBoolean値を返す関数
であった場合、デバッグ時の処理の流れとビルド後のEXEの
処理の流れが変わることがあったんです。
デバッグ時は条件式Aの後に条件式Bの順番だったんだけど
EXEでデバッグポイント代わりのmsgboxをいれてたら
条件式Bを示すmsgboxの後に条件式Aのmsgboxが出てきた
ので、デバッグ時と異なっているのは明らかなんです。
こういう現象の発生する原因って何だろうと思ったんですけど
ご存知の方いらっしゃいますか
また、環境ですが
開発PCがXPPro(SP3) ,VB6(SP6) ,IE7
実可動のPCが2003R2(SP2) ,IE7
となります。
よろしくお願いします。
0229デフォルトの名無しさん
2008/10/15(水) 01:49:560230228
2008/10/15(水) 10:43:03(久々の休みだったもので・・・)
>>229
そのとおりです。
条件式Bはその直前の条件式Aによって出力値の影響を受けてしまいます。
ちなみに、この現象XPでExeを走らせると発生しなくて、2003でExe走らせると
おきたんです。
ちなみに、似たようなソースを書いて検証したのですが、それでは
EXE環境でもXP,2003問わず、こちらの意図している
「条件式Aの評価」後に「条件式Bの評価」を行うのです。
なので、余計に前述の現象が奇異なものにみえたので
この現象が「なぜ起きるんだ?」という知的探究心(好奇心のほうが正しい?)
と気になったわけなんです。
ソースはけっきょく
if 条件式A = false then
if 条件式B = false then
ちょめちょめ
end if
else
いやんばかん
end if
になりました。
0231デフォルトの名無しさん
2008/10/15(水) 20:17:27絶対228の勘違いだと思う。
0232デフォルトの名無しさん
2008/10/15(水) 20:41:01こういう設計って一般的なの?
0233デフォルトの名無しさん
2008/10/15(水) 20:41:49なんてやつを相手にすんな
0234デフォルトの名無しさん
2008/10/15(水) 20:47:11それは普通。VB.NETなら
if 条件式A AndAlso 条件式B then
0235デフォルトの名無しさん
2008/10/15(水) 21:45:53どんな言語でも普通。
0236デフォルトの名無しさん
2008/10/15(水) 23:07:5015年くらい前ならそう言ってもよかったんだが、
最近はショートサーキット演算子があるのが普通だな。
PerlあたりのLL、Java、JavaScript、VB.net・・・例外はCくらいか。
0237デフォルトの名無しさん
2008/10/15(水) 23:10:38ってああ、思い出した、これだ。
http://msdn.microsoft.com/ja-jp/library/sect4ck6.aspx
> トラブルシューティング
>
> 実行順序。Visual Basic では、演算効率を高めるために数式が自動的に
> 並べ替えられることがあります。このため、変数の値を変えてしまうような
> Function プロシージャを数式の中で実行しないようにしてください。
0238デフォルトの名無しさん
2008/10/15(水) 23:12:170239デフォルトの名無しさん
2008/10/15(水) 23:20:530240デフォルトの名無しさん
2008/10/15(水) 23:35:01Cだって&&と||は短絡評価だ。
0242デフォルトの名無しさん
2008/10/16(木) 00:52:12if not 条件式A then
elseif 条件式B then
end if
0243デフォルトの名無しさん
2008/10/16(木) 01:00:49普通に考えればまったく別問題だろう。
目からうろこが落ちてどうする。
だから間違いなくお前さんの勘違いだから。
0244デフォルトの名無しさん
2008/10/16(木) 01:28:11→Newキーワードの使用法が不正です。
これってどうしてでしょうか?
クラスである以上Newできるのが当然と思っているのですけど
できなくてすごく疑問です。
0245デフォルトの名無しさん
2008/10/16(木) 02:46:48New で 検索掛ければ 出てくる筈だ。
0246デフォルトの名無しさん
2008/10/16(木) 04:31:12そうだった。算術演算子と勘違いしてた。
0247デフォルトの名無しさん
2008/10/16(木) 13:45:090248244
2008/10/18(土) 18:21:41→CreateObject または New を使用して従属オブジェクトを作成することはできません
→クラスの従属オブジェクトからオブジェクトを作るには、クラス モジュールの Instancing プロパティに PublicNotCreatable を設定します。
従属オブジェクトってことですね。
0249デフォルトの名無しさん
2008/10/18(土) 18:28:05違うと思う。普通に New できるもん。
TextBox ってのの定義と、プロジェクトの種類を教えて。
0250245
2008/10/18(土) 20:01:02Newにカーソル置いてF1押してるだけだとそのヘルプは出てこないから、
キーワードのヘルプだけでやってるとそこらでドツボにハマる。
というか、私もハマった一人なんだがな。なので、教えるのに若干くどい手段に。
ただ、>>248で従属オブジェクトと言ってるのは多分違う。
>>248の言っている従属オブジェクトと言うのは、
自作したクラスの中にTextBoxを丸ごと包括してたりする場合などを示す。
と言う訳で、Newの仕様を理解した所で回答。(宣言時のNewは自作Class専用みたいな物。)
ヘルプで探してもナイスな方法が出てこなかった気がするので説明添えてサンプル提示してみる。
Controls.Addで追加してそれを参照する形でNewの代用とする。
※txtNewは作成されるコントロール名なので複数Addする際は重複不可。
動的に割り当てる場合、大概は複数作る筈なのでindexに配列値を入れて、
Set Txt(index) = Me.Controls.Add("VB.TextBox", "txtNew" & format(index))
と言う形で作成する。
'--------------------------------始
Dim Txt(1) As TextBox
Set Txt(0) = Me.Controls.Add("VB.TextBox", "txtNew" & Format(0))
Set Txt(1) = Me.Controls.Add("VB.TextBox", "txtNew" & Format(1))
'--------------------------------
'単発版
Dim Txt1 As TextBox
Set Txt1 = Me.Controls.Add("VB.TextBox", "txtNew1")
'--------------------------------終
これを走らせると、定義したformにtxtNew1と言うオブジェクト名を持つTextBoxを作成し、
参照の設定を終えた形になる。
ただし、Me.Controlsの数は255以下とされていて、それを超えて生成しようとすると失敗する。
「際限なくコントロールを作成できるボタン」等を作成する場合は、
カウント数を見ながらエラートラップすべし。
0251デフォルトの名無しさん
2008/10/19(日) 12:40:440252デフォルトの名無しさん
2008/10/19(日) 20:17:00ハード(分解能=1μs)のタイマとソフトのタイマ使ったソフト仕事で作ってるんですが
VB6のタイマの分解能って実際50msぐらいなんですか?Windowsのタイマの分解能が1msらしいですが、、、
0253デフォルトの名無しさん
2008/10/19(日) 20:24:19はい。約55msecです。
#10msec ってのも会ったような気がしたけど
それより細かい値が必要なときは、パフォーマンスカウンタを使いましょう。
0254デフォルトの名無しさん
2008/10/19(日) 22:48:52ありがとうございます
細かい分解能必要な時はソフトのタイマ使うのはちょっと怖いですね
VBのタイマとか、APIのタイマってハードのクロックを常に取得しているんですかね?
VBでタイミングの遅延を気にするのなんてナンセンスな気もしますが
他のプロセスの動作でタイマの遅延みたいのってあるのかな・・?
実際はソフトウェアのタイマは使わないので遅延があっても構わないんですが、、、
0255デフォルトの名無しさん
2008/10/19(日) 23:23:550256デフォルトの名無しさん
2008/10/19(日) 23:39:03timeBeginPeriod/timeEndPeriodで1msになるようだ。
ttp://www.emit.jp/prog/prog_t1.html
ttp://d.hatena.ne.jp/NyaRuRu/20080909
0257デフォルトの名無しさん
2008/10/19(日) 23:45:4555msecとか10msecとか決まってないって。
VBのタイマーはWM_TIMERだから、メッセージループを最低1回回すだけの時間は確実に掛かる。
具体的な数値はパソコンの性能とかそのとき行ってる処理内容による。
そういういいかげんなタイマーだ。
0258デフォルトの名無しさん
2008/10/20(月) 00:44:51そらそうだが今はそういう話じゃないだろw
0259244
2008/10/20(月) 02:58:58どうも違うみたいですね汗
TextBoxはフォームに乗せるTextBoxです
>>250
>宣言時のNewは自作Class専用みたいな物
これで納得しました。
New出来ないClassは例のように
Controls.Addのように間接的にしかNewできないんですね。
確かにTextBoxクラスなどはこっちで勝手にNewできる必要はないですし、
できたとしてもどう初期化すればいいのか困る気もします。
0260デフォルトの名無しさん
2008/10/21(火) 23:34:16次に手をつけるべきお勧めの言語は何でしょうか?
0261デフォルトの名無しさん
2008/10/21(火) 23:44:080262デフォルトの名無しさん
2008/10/21(火) 23:56:030263デフォルトの名無しさん
2008/10/22(水) 03:13:02VB,NETかC#辺りをお勧め。
とは言え、それなりにプログラムを何度か組んでいるのであれば
言語仕様は解ってきてると思うんだがな。
VBが粗方解ってきたらC++を少し齧っておくと後で覚えようとする時に楽かな。
0264デフォルトの名無しさん
2008/10/22(水) 04:34:15なでしこにでも手を出せば?
0265デフォルトの名無しさん
2008/10/22(水) 06:41:03ブイビーコンマネットいいよね
0266デフォルトの名無しさん
2008/10/22(水) 20:21:040267260
2008/10/22(水) 23:11:45大幅な仕様変更でシビアなタイミングが求められてきて
タイマで誤魔化しきれなくなってきました
2005のC#なら少し使ったことあるので、そっちに移行出来るよう勉強します
といっても納期は来週頭なんですが・・・ハハハ
orz
0268デフォルトの名無しさん
2008/10/22(水) 23:36:380269デフォルトの名無しさん
2008/10/22(水) 23:42:27例えば通信とか、機器の制御なんかだとワーカースレッドが使えるかどうかは
雌雄を決する場合があるよ。
0270デフォルトの名無しさん
2008/10/23(木) 22:19:52VBとのスレッド間通信もDLL関数でできる。
Cの知識がなければ無理だが、職業プログラマでまさかCが書けないなんてことはないよな?
0271デフォルトの名無しさん
2008/10/24(金) 00:16:500272デフォルトの名無しさん
2008/10/24(金) 08:57:000273デフォルトの名無しさん
2008/10/24(金) 11:17:11時代はJavaだと言うに
0274デフォルトの名無しさん
2008/10/24(金) 11:18:350275デフォルトの名無しさん
2008/10/25(土) 23:10:410276デフォルトの名無しさん
2008/10/25(土) 23:13:020277デフォルトの名無しさん
2008/10/25(土) 23:18:390278デフォルトの名無しさん
2008/10/25(土) 23:30:370279デフォルトの名無しさん
2008/10/26(日) 06:31:55現在
dim aa
zikoku = Time
aa = DateAdd("m", 10, zikoku)
Dateaddで正確に時刻が入りません、timeを直接引数にしたりもしましたがダメでした
固定された時間しか無理なのですか?
If aa = Time Then
MMControl1.Command = "play"
数時間前はaaに時間が入力できる時がありましたが
同じ時刻のはずなのにif文が反応しませんでした。
マウスをあててみるとaa = "5:30:00" time = 5:30:00とダブルコーテーションのくくりなかったのでこれかなとも思ってます
0280デフォルトの名無しさん
2008/10/26(日) 06:33:030281デフォルトの名無しさん
2008/10/26(日) 06:38:300282デフォルトの名無しさん
2008/10/26(日) 06:48:51すいません、自己解決しました
0283260
2008/10/26(日) 23:54:30残念ながら職業プログラマじゃないのです
学生の時ちょこっと齧っただけです
会社に適任者がおらん為、仕事を投げられました
まともにプログラムの勉強したいです
0284デフォルトの名無しさん
2008/10/27(月) 00:18:20プログラムを扱っていくのか、そのコストは見合うのか、など、言語とかそういうこととは
違うレベルで調整が必要だと思う。頑張ってどうにかしたのはいいけど、評価が
下がるんじゃ嬉しくないっしょ?
0285デフォルトの名無しさん
2008/10/27(月) 00:43:15だけど計画性0の会社で5秒後に仕様変更発生みたいな感じなので
社内で作れと・・・
使う機器が1号機ってせいもあるんですが
仕様が全く固まってないので、当面は私が作ることになりそうです
しかもそのソフトを100万で売るっつってるんだから始末に終えない・・・
はぁ・・・こんな仕事やりたくねぇ・・・
0286デフォルトの名無しさん
2008/10/27(月) 01:40:59ばっさりと動かなくさせれば他の道ができていくんだ
やれることをやってからぼやけ
0287デフォルトの名無しさん
2008/10/29(水) 00:53:25ListView1.ListItems.Add
のように、行を追加した後で、
ListView1.ListItems(0).Text = "hoge"
のように、やってみると、「インデックスが範囲を超えています」
というエラーが出て、文字の値の変更ができません。
本当に初心者の質問ですみません。悩んでいます。
0288デフォルトの名無しさん
2008/10/29(水) 01:08:18インデックスが1からってことはない?
0289デフォルトの名無しさん
2008/10/29(水) 01:17:01できました!インデックスが1からでした!!
有難うございます。しょうもない(?)ところで2〜3時間食っていて悩んでました!
0290デフォルトの名無しさん
2008/10/31(金) 00:25:17なんかヒントいただけませんか
0291デフォルトの名無しさん
2008/10/31(金) 12:03:30どこの田舎の零細企業?
会社はソフト産業とは無縁でしょ。
よくいるんだよね。
そういうこと言い出す馬鹿。
0292デフォルトの名無しさん
2008/10/31(金) 12:06:42まずは自分で再生するソフトを作ってみような。
もちろんデータを読み込んで1コマ1コマ表示する処理を自分で書くんだ。
それが出来てから倍速とか考えるべき。
データフォーマットをいじって30fpsってのを60fpsに変更してWindowsMediaPlayerで再生すれば倍速になるけど
音声も調整しないといけなくて、しかも音程が狂うんじゃなかったっけな。
0293デフォルトの名無しさん
2008/11/05(水) 17:13:160294デフォルトの名無しさん
2008/11/05(水) 17:18:160295デフォルトの名無しさん
2008/11/05(水) 21:00:07教えてくれこのとおりだ
or2
0296デフォルトの名無しさん
2008/11/05(水) 23:09:390297デフォルトの名無しさん
2008/11/05(水) 23:20:00サポートの話ならわかるが
0298293
2008/11/06(木) 02:55:470299デフォルトの名無しさん
2008/11/06(木) 22:02:0615インチ幅の用紙に印刷する為に印刷内容を載せるフォームを作ったのですが
解像度が低いマシンだとフォームのサイズを小さくされてしまい、
印刷内容が途中で切れてしまいます。
0300デフォルトの名無しさん
2008/11/07(金) 00:34:34どなたか教えて下さい。
Option Explicit
Dim objAccess
Dim objDB
Dim objRS
Set objAccess = CreateObject("Access.Application")
objAccess.Visible = True
objAccess.OpenCurrentDatabase("c:\happy\island.mdb")
Set objDB = objAccess.CurrentDb
Set objRS = objDB.OpenRecordset("SELECT COUNT(*) AS 件 FROM 住所録テーブル")
WScript.echo "件数=" & objRS("件数")
objRS.Close
Set objRS = Nothing
Set objDB = Nothing
Set objAccess = Nothing
件数をWScript.echoではなくinnerhtmlで表示したいです。
またSQLを("SELECT * FROM 住所録テーブル")にした場合データをレコードセットで抽出し必要なデータを表にして表示をしたいのですが・・・(これもinnerhtmlを使いたい)
0301デフォルトの名無しさん
2008/11/07(金) 00:43:19http://www.google.co.jp/search?q=innerHTML
0302デフォルトの名無しさん
2008/11/07(金) 23:12:410303デフォルトの名無しさん
2008/11/07(金) 23:34:170304デフォルトの名無しさん
2008/11/07(金) 23:39:490305デフォルトの名無しさん
2008/11/08(土) 03:06:030306デフォルトの名無しさん
2008/11/09(日) 12:19:50ピクセル数が少ないところに全体を表示するなら
縮小しないと出せませぬ。
Imageコントロールはビットマップを縮小表示できます。
FormやPictureBoxにLineやPrintで書いている場合は、
書いたものをビットマップ(IPicture)として取得してImageに出すか、
こんなときのためのScaleWidthやScaleHeightなので、これらを常に
同じ値にして、Twip単位でLineやPrintを使いましょう。
0307デフォルトの名無しさん
2008/11/12(水) 11:09:45http://www.plunder.com/Visual-Basics-6-Portable-download-69648.htm
makeもできるんですけど
0308デフォルトの名無しさん
2008/11/12(水) 14:27:23ぷぷw
0309デフォルトの名無しさん
2008/11/12(水) 15:55:59コメント欄が荒れすぎなのでウィルスかなんかかと思ったけど、結局これ何なの?
0310デフォルトの名無しさん
2008/11/12(水) 16:01:33ウイルスに決まってんじゃんw
0311デフォルトの名無しさん
2008/11/12(水) 16:51:54普通に起動した。
何かが起きたかどうかは知らん。
0312デフォルトの名無しさん
2008/11/13(木) 10:54:38USBメモリ起動に割ったやつ
0313デフォルトの名無しさん
2008/11/14(金) 16:07:090314デフォルトの名無しさん
2008/11/15(土) 18:20:55そんな私が最近、VB6のコードを調べる必要がありました。
.NETのC++やC#のコードとよく似てるように見えるのですが
VB6はオブジェクト指向ではないという理解で正しいでしょうか。
0315デフォルトの名無しさん
2008/11/15(土) 18:29:54オブジェクト指向に必要な要素は持っている。
ただ一般的に社内システムレベルのソースがオブジェクト指向ではない可能性は高い。
0316デフォルトの名無しさん
2008/11/15(土) 19:02:54継承、多態といった要素を持ちません。つまり>314の認識でほぼ合っていると思われます。
0317デフォルトの名無しさん
2008/11/15(土) 19:11:03プログラムなどをオブジェクト指向などと呼びたくない。
0318デフォルトの名無しさん
2008/11/15(土) 19:18:37一口でオブジェクト指向といっても、オブジェクト指向プログラミングの他に
オブジェクト指向デザイン、オブジェクト指向ユーザーインターフェイス、
オブジェクト指向開発などなどさまざまな概念がそろっております。
0319デフォルトの名無しさん
2008/11/15(土) 19:26:44だめじゃね? 全部 VB6 でできる。
0320デフォルトの名無しさん
2008/11/15(土) 19:28:07が、フォームのコントローラ関係は、普通にOOだな。
あ、そうそう、下手にOOしてるVB6ひいちゃったら、しねるぞ。
0321デフォルトの名無しさん
2008/11/15(土) 20:10:59仮に結論が出たとして、それを>>314が知ったところでなんの意味があるんだろう。
0322314
2008/11/15(土) 21:13:10VB6の言語使用を習得すれば、「オブジェクト指向も知ってます」と
いえるのかどうかを知りたかったです。
オブジェクト指向についてはまた別に学習することを考えます。
しかし、オブジェクト指向とは何たるかについては、
本職ではない私にはちょっと難しそうですね・・・
とても参考になりました。
みなさん、ありがとうございました。
0323デフォルトの名無しさん
2008/11/15(土) 21:29:29> VB6の言語使用を習得すれば、「オブジェクト指向も知ってます」と
> いえるのかどうかを知りたかったです。
いえません
0324デフォルトの名無しさん
2008/11/15(土) 21:59:27VB6なんて最悪言語の代名詞なのに・・・。
0325デフォルトの名無しさん
2008/11/15(土) 22:05:140326デフォルトの名無しさん
2008/11/15(土) 22:43:44実装重視であれこれつまみ食いするのが結局一番いいんじゃね?
アカデミックに勉強してたらそれだけで一生終わる
0327デフォルトの名無しさん
2008/11/18(火) 13:17:410328デフォルトの名無しさん
2008/11/18(火) 20:02:590329デフォルトの名無しさん
2008/11/19(水) 14:51:36早速ですが、現在、VB6.0でAccess97のmdbを使うプログラムを作成しているのですが、
実行時エラー 2147023170(800706be)オートメーションエラーです。リモートプロシャジーコールに失敗しました。
のエラーが、稀に発生します。
プログラムの一部
Public wrkJet As Workspace
Public Rundb As Database
Set wrkJet = CreateWorkspace("", "admin", "", dbUseJet)
Set Rundb = wrkJet.OpenDatabase("c:\xxxxx\xxxxxx.mdb", False)
strSql = ""
strSql = "Select * From 送信状況マスタ;"
Set RecSet = Rundb.OpenRecordset(strSql, dbOpenDynaset)
Call CloseRecSet(RecSet)
----------------------------------------------------------------------------------------------------------------------------
Public Sub CloseRecSet(ByRef RecSet As Recordset)
On Error Resume Next
If Not RecSet Is Nothing Then
RecSet.Close <<<<<<<<<<<<<<<<<< この変でエラーになります。
Set RecSet = Nothing
End If
End Sub
ライブラリにMicrosoft DAO 3.6 Object Library を使用しています。
http://support.microsoft.com/kb/825796/ja
に、Access97は、DAO 3.5を推奨とあったのですが、上位互換で問題無いと思っていたのですが、
やはり、DAO 3.5を使用した方が良いのでしょうか?
ご指導をお願い致します。
0330デフォルトの名無しさん
2008/11/19(水) 15:30:253.6で出なくなるの? 試すのはわけないと思うが・・・
closeを別ルーチンにせず同一ルーチンにしてみるとか
試せることはいろいろあるよね。
0331329
2008/11/19(水) 16:05:05現在までの流れは、
�@VB6.0 + DAO3.5 で新規開発 >>> スキャナやFAXソフトを使用でタッチパネルの反応が遅い現象発生
�AEXEを分割して、ActiveX.EXEを導入 >>> タッチパネルの件は解決。mdbが頻繁に壊れる現象発生
�BDAO3.6を導入 >>> mdb破損回数が軽減。エラーを吐いてEXEが落ちる現象発生
となっています。
0332デフォルトの名無しさん
2008/11/19(水) 19:01:550333デフォルトの名無しさん
2008/11/19(水) 23:15:35VB2008で教えて下さい。
ソリューションエクスプローラーのタブに
「データソース」が表示されなくなっちゃったんだけど
どう設定すれば、また表示されますか?
0334デフォルトの名無しさん
2008/11/19(水) 23:16:58スレタイ100回読み直せ
0335デフォルトの名無しさん
2008/11/22(土) 21:25:45じゃあ次はADO導入だな
0336デフォルトの名無しさん
2008/11/23(日) 00:26:37ネットワークドライブにmdb置いて複数クライアントからアクセスしたりしてない?
あとリンクテーブルとか。
0337デフォルトの名無しさん
2008/11/24(月) 19:17:31VB6.0でParadoxと言うデータベースを開きたいのですが、
エラーが出て開きません。
Private Sub Form_Load()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\;Extended Properties=Paradox 5.x;Persist Security Info=False"
cn.Open
rs.Open "ABC", cn, adOpenDynamic, adLockOptimistic, adCmdTableDirect
rs.AddNew
rs.Close
cn.Close
End Sub
上記のコードを書いたんですが、rs.Openの行で
「外部テーブルのフォーマットが正しくありません。」
というエラーが出ます。
何が悪いのでしょうか?
よろしくお願いします。
0338デフォルトの名無しさん
2008/11/24(月) 20:22:21そういう話ではない?
0339337
2008/11/24(月) 21:56:14cn.Open までは進んでいるし、ファイル名まで指定すると
「パスが間違っています」と言うエラーが出るので、
Data Sourceはこれであっていると思われます。
0340デフォルトの名無しさん
2008/11/24(月) 22:08:22「Paradox ConnectionString」で検索しる
0341デフォルトの名無しさん
2008/11/24(月) 23:32:52これを
rs.Open "select * from ABC", cn
みたいにシンプルにしてみたら?
0342337
2008/11/25(火) 00:28:03今回はC:\の直下にファイルをおいてあるので、これで
いいと思います。
Paradoxは1ファイル1テーブルなので、こうしないと
接続出来ません。
>>341
試してみましたが、やはり「外部テーブルのフォーマットが正しくありません。」
のエラーが出てしまいます。
0343デフォルトの名無しさん
2008/11/25(火) 08:50:02ネットの事例じゃ軒並みファイルしていしてるぞ?
0344デフォルトの名無しさん
2008/11/25(火) 09:03:22どのファイルかを選択するのかは超能力的なパワーが必要なのかも試練
0345329,331
2008/11/25(火) 16:56:58返答が遅れた事をお詫び致します。
>>335
確かにADOは考えました。しかし、大きな修正はしないでとの営業の意向がありまして。
断念致しました。
>>336
ネットワークドライブは使用していません。
mdbのリンクは行っています。
0346デフォルトの名無しさん
2008/11/25(火) 17:08:56そのワードでググったらTOPのページにこんな記載が。
>Please note that you should only specify the folder where the database resides.
>Not the database name itself.
ttp://www.connectionstrings.com/?carrier=paradox
>>337
Paradoxのバージョン5までしか読めないらしいけどそこは大丈夫?
0347デフォルトの名無しさん
2008/11/25(火) 17:24:07へぇそうなんだ ためになるねぇ つかうことないだろうけど・・・
0348デフォルトの名無しさん
2008/11/25(火) 21:08:19Excel VBAでwebページをIEオブジェクトで操作して、リンクをクリックさせると別窓でリンク先が表示されます
今後この別窓のIEオブジェクトを掴んでアクティブにして操作するにはどうすればいいのでしょうか?
独学文系のなけなしの知識にて、ウィンドウハンドルを取得すればいいと思い当たり
For Eachで各ウィンドウのそれの取得だけはできました(たぶん)が、使い方というかセオリーが全く分かりません…
Private Declare Function SetForegroundWindow Lib "user32.dll" (ByVal hWnd As Long)
Private Declare Function GetForegroundWindow Lib "user32.dll" () As Long
(中略)
hWnd = GetForegroundWindow
Set objShell = CreateObject("Shell.Application")
For Each objIE In objShell.Windows
Debug.Print objIE.hWnd
Next
ウィンドウハンドルの値は取得できても、アクティブにしたい(操作したい)ウィンドウのそれだと判別する
方法が解らないので、どなたかご教示&ご解説お願いします
0349デフォルトの名無しさん
2008/11/26(水) 21:43:48ウィンドウの区別は基本的にはタイトル(タイトルバー)の文字列で行う。
同じアプリを複数開いて同じファイルを開くとタイトルバーの文字列がまったく同じになってしまうが、
この場合はウィンドウを区別するのは、不可能ではないが非常に難しい。
俺の知識で答えられるのはここまで。
0350デフォルトの名無しさん
2008/11/26(水) 21:55:08SetForegroundWindow() すれ。
って、それだけだとアクティブにはならんけど。
0351348
2008/11/26(水) 22:12:32ご回答ありがとうございます!となると、思いつきでは
1).新しいIE窓を開く前に全部のIE窓のタイトル又はハンドルを取得
2)上記を配列にでも入れる
3)新しいIE窓が開かれる
4)2で取得した配列の添え字と比較、大きかったらダウト
(同じ内容であってもこちらを弄るようにする)
4の配列の添え字の比較って出来るのかな?ド素人なもので…
って、窓数の増加だけならインデックスの上限値を見ればいいのか
…こんな感じで行けるのかな?
汎用化するにはIEのイベントを監視しなくちゃならなそうですが(;´Д`)
しかし用途を限定すれば何とかできる…と思いたいです
0352デフォルトの名無しさん
2008/11/26(水) 22:23:49最初に聞いたExcelVBAスレの質問取り下げてないのでマルチだし
しかもExcel総合スレにまでリンク形式でマルチしてる
> ExcelやExcel VBAからは外れる質問とは承知しているのですが、
> 文系独学なうえ近くに教えを請える人も居ないので、
> 何方か親切な方、ご回答お願いします…(;´Д`)
>
> ttp://pc11.2ch.net/test/read.cgi/tech/1206835319/348
もう、この子は放置の方向で
0353デフォルトの名無しさん
2008/11/26(水) 22:29:05取り下げも何も、誘導も無しにスレ違いの一言で一蹴されましたが…
ご回答下さいました方々には改めてお礼申し上げます
0354デフォルトの名無しさん
2008/11/26(水) 22:29:58俺的に言えばそんな奴こそいらん。
マルチが悪いって、それって他でもないお前が「人に感謝されたい威張りたがり屋」
なだけじゃんw
むしろそのお前の幼児性こそ問題だよ。
普通は掲示板のやり取りなんて答える方も自分のためにやってるわけで、
その上回答者に感謝されたいなんて図々しいこと思わねえよ。
0355デフォルトの名無しさん
2008/11/27(木) 01:17:14Public Type AAA
b as Long
c as Long
End Type
Public A(0 To 99) As AAA
といったようなのをモジュールに書き、フォーム1でA(0).b = 100と書いたとします
しかし、それをフォーム2で参照したところA(0).b = 0となっていました
配列化しなければ問題は起こらなかったのですが、原因は何なのでしょうか?
0356デフォルトの名無しさん
2008/11/27(木) 02:22:280357デフォルトの名無しさん
2008/11/27(木) 09:07:18ボク、何か嫌なことでもあったの?
0358デフォルトの名無しさん
2008/11/27(木) 11:14:38インデックスが有効範囲にない、というエラーが出てしまいます。
アドバイスお願いします。
Private Sub Form_Load()
Const DataFile1 As String = "emadr.txt"
noTA = 0: noID = 0: noFA = 0: noSMTP = 0
fileNum = FreeFile
Open DataFile1 For Input As #fileNum
Do Until EOF(fileNum)
Line Input #fileNum, dummy
→ dumst = Split(dummy, ",")
If (dumst(0) = "TA") Then
noTA = noTA + 1
emTA(noTA) = dumst(1)
End If
Loop
Close #fileNum
0359デフォルトの名無しさん
2008/11/27(木) 18:13:33普通にいけました…
消したと思っていた変数定義が消えておらず、変数がリセットされていただけでした
お騒がせしました
0360デフォルトの名無しさん
2008/11/28(金) 22:55:150361デフォルトの名無しさん
2008/11/28(金) 23:27:260362デフォルトの名無しさん
2008/11/28(金) 23:32:460363360
2008/11/28(金) 23:50:40回答ありがとうございます。
やはり無いんですね・・・
ファイル転送量/時間で出そうと思います。
ありがとうございました。
0364デフォルトの名無しさん
2008/11/29(土) 12:43:32んなこたぁない。FTP(クライアント)はVBの機能じゃないんだぜ?エスパーすればINet系関数だろうが、
あれは腐ってるからな。
0365デフォルトの名無しさん
2008/11/29(土) 14:59:290366デフォルトの名無しさん
2008/11/29(土) 17:01:160367デフォルトの名無しさん
2008/11/29(土) 18:20:45構造体の入れ子を作りたいのですが、下記ではエラーになってしまいます。
Private Type ABC
i As Integer
j() As ABC
End Type
動的なツリー構造を作りたいのですが、可能でしょうか。
0368デフォルトの名無しさん
2008/11/29(土) 19:39:41http://upp.dip.jp/01/img/13337.jpg
実は↑のような流れのスクリプトを組みたいと思っているのですが
if を使っての簡単なサンプルを書いていただけませんでしょうか?
本当に簡単なもので結構ですので・・・。
0369デフォルトの名無しさん
2008/11/29(土) 19:49:370370デフォルトの名無しさん
2008/11/29(土) 19:49:50何だこのフローチャート
もう少しルールに従って書けよw
0371デフォルトの名無しさん
2008/11/29(土) 19:53:05まあ>368がんばれ
0372368
2008/11/29(土) 19:59:04酷いことになってますね・・・
すいません・・・
0373デフォルトの名無しさん
2008/11/29(土) 21:31:000374デフォルトの名無しさん
2008/11/29(土) 21:47:210375デフォルトの名無しさん
2008/11/29(土) 22:23:29if (isExist(a)) {
goto start;
}
second:
if (isExist(b))
goto start;
else {
goto second;
}
0376デフォルトの名無しさん
2008/11/29(土) 23:22:22VB40032.dll、MCI32.ocx、grid32.ocx、comdlg32.ocxが必要なソフトなんですがXPでは入れても動かないんです。
「ファイルの読み込み中にエラーが発生しました」と出てしまいます・・・
MEでは正常に動きました。
上記4つのファイルはME、XP共に同じバージョンでした。
解決方法知っていたら教えて下さい。お願いします。
0377デフォルトの名無しさん
2008/11/29(土) 23:27:06スレ違い
0378デフォルトの名無しさん
2008/12/04(木) 10:59:01循環参照できないんですよねー。ケチケチしやがって。
可変長配列なら無限ループにならないから許可してほしいところです。
等価ではないがクラスモジュールでこう
(CLASS ABC)
Public I As Integer
Public J As Collection
あくまで等価ではないので使えなさそうですが。
0379デフォルトの名無しさん
2008/12/07(日) 08:21:48すまん、どんな場合それを使うのか教えてくれ・・・
0380デフォルトの名無しさん
2008/12/07(日) 13:33:33だったらVBの場合ユーザー定義型じゃないくてクラスを使わないと駄目だね。
仮にユーザー定義型に循環参照(余談ながら、この用語の使い方は本来不適切だと
思うんだが、MSDNがそうなってるんだね)が可能だとしても、ユーザー定義型は
ドトネトでいう値型になるから無駄が多すぎる。
0381デフォルトの名無しさん
2008/12/07(日) 13:57:04i As Integer
j() As ABC*
End Type
Dim udtABC As ABC
udtABC.j = &udtABC
夢のようだが、() は誰が実装すんのかね。
j() が自己参照にしては自己が配列であることは保障されてないし。
まぁ蛇足でしかないけど。
0382デフォルトの名無しさん
2008/12/08(月) 03:32:56そこまでなくても…
循環参照はメモリ確保がどこまでも終わらないから禁止なんだろうけど、
JはREDIMするまで要素数ゼロだから、それは許されるようにしてくれていても
いいのにと思うんだが。
理解が違っていたらすまん。
早く寝なきゃ…
0383デフォルトの名無しさん
2008/12/08(月) 03:36:40スレ違いだっけ?
0384デフォルトの名無しさん
2008/12/11(木) 23:35:25+30Hex +31Hex + 03Hex = 37Hex
(+は排他的論理和、Hexは16進数)
とオムロンのマニュアルに書いてあるんですが
これをVBで計算すると37なんて数字が出てきません。
val(hex(30)) xor val(hex(30)) xor ・・・
とかじゃぁ 根本的に何か間違ってるのかな。。
0385デフォルトの名無しさん
2008/12/11(木) 23:41:400386デフォルトの名無しさん
2008/12/12(金) 00:08:300387デフォルトの名無しさん
2008/12/12(金) 00:13:390388デフォルトの名無しさん
2008/12/12(金) 00:14:360389デフォルトの名無しさん
2008/12/12(金) 00:17:420390デフォルトの名無しさん
2008/12/12(金) 00:43:38Const hexList As String _
= "30, 30, 30, 30, 30, 33, 30, 30, 35, 33, 30, 30, 31, 03"
Dim hexText As Variant
Dim result As Integer
result = 0
For Each hexText In Split(hexList, ",")
result = result Xor CInt("&h" & Trim(hexText))
Next
MsgBox (hex$(result))
End Sub
0391デフォルトの名無しさん
2008/12/12(金) 01:02:04その合計、平均などが表示されていて、
ボタンを押すと、ひとりひとりの学生の点数の合計と点数の表示をする
プログラムを作成したいのですが、教えて下さい。
0392デフォルトの名無しさん
2008/12/12(金) 01:13:350393デフォルトの名無しさん
2008/12/12(金) 01:28:50氏名 国語 英語 合計 平均
A 50 60 110 55
B 60 70 130 65
C 70 70 140 70
合計 180 210
平均 60 70
こんな感じに表示されています。
ボタンの名前を「縦計 横計」と表示させ、
押すと、ひとりひとりの合計と平均を表示し、
最後に国語と英語の合計、ならびに平均を表示させたいのです。
0394デフォルトの名無しさん
2008/12/12(金) 01:31:18なんだその態度は
氏ねばいいのに
0395デフォルトの名無しさん
2008/12/12(金) 01:33:29end select
0396デフォルトの名無しさん
2008/12/12(金) 01:58:37日本語って難しいな…
例えば「ああ、スマソ」って言ったらまた印象は違うだろうしね。
0397デフォルトの名無しさん
2008/12/12(金) 02:04:340398デフォルトの名無しさん
2008/12/12(金) 02:19:540399デフォルトの名無しさん
2008/12/12(金) 06:28:24他人に物を聞く態度じゃない
ここにいるのは親しい友人じゃない
0400デフォルトの名無しさん
2008/12/12(金) 06:34:120401デフォルトの名無しさん
2008/12/12(金) 09:14:50excelのVBAで充分
そこで人間性を磨いて来い
0402デフォルトの名無しさん
2008/12/12(金) 22:03:09情報科の人に教えてもらい、無事解決しました。
基礎なのでさすがに学校で聞くのは気が引けました。
0403デフォルトの名無しさん
2008/12/12(金) 22:04:350404デフォルトの名無しさん
2008/12/12(金) 22:17:350405デフォルトの名無しさん
2008/12/13(土) 01:30:41お前はVBを知ってるのかと小一時間(ry
0406デフォルトの名無しさん
2008/12/13(土) 01:57:10whileとかforのループのcontinueね。あんの?
0407デフォルトの名無しさん
2008/12/13(土) 02:44:130408デフォルトの名無しさん
2008/12/13(土) 03:31:59英 please in Japnese
独 bitte auf japanisch
仏 veuillez dans le Japonais
イタリア . prego nel giapponese
ポルトガル . por favor no japones
スペイン . por favor en japones
オランダ ..Japanner gelieve in
スウェーデン behaga i japan
ギリシア .παρακαλ? στα ιαπωνικ
ロシア пожалуйста в японце
トルコ . Japoncata tamam.
中国 請在日文
沖縄 やまとぅぐちっしいい
アイヌ . sisam itak ani ukoitak yan.
大阪民国 日本語でおkや
0409デフォルトの名無しさん
2008/12/13(土) 09:34:26日本語でおk
0410デフォルトの名無しさん
2008/12/13(土) 13:23:330411デフォルトの名無しさん
2008/12/13(土) 13:25:30いやおまえの方がVB知らなさ過ぎる。
.NET以後にVBはじめた情報弱者のにわかは消えろよ。
0412デフォルトの名無しさん
2008/12/13(土) 15:11:550413デフォルトの名無しさん
2008/12/13(土) 15:20:02TPOを考えれば>>411のように罵倒されてもまあ仕方がない面はある。
0414デフォルトの名無しさん
2008/12/13(土) 15:24:000415デフォルトの名無しさん
2008/12/13(土) 15:27:20これは正解。普通C#選ぶ。あえてVBを選ぶ理由がない。
0416デフォルトの名無しさん
2008/12/13(土) 16:14:52continueのためだけにgotoに逃げるんじゃねぇ!って事を
言いたかったんジャマイカ?
わからんけど。
0417デフォルトの名無しさん
2008/12/13(土) 17:21:490418デフォルトの名無しさん
2008/12/17(水) 09:43:20VB6でdllexportするっていったら、基本的にはOCX化するのみ?
あと、簡潔に、通常の.objファイルをスタティックリンクする方法とかある?
ついでに参加
>>415
最近、VB6で書かれたマルウェアが増えてきて、ちょっと勉強しとこうと思ったのが、
いまさらVB6やろうと思ったきっかけ どう考えてもVCで書いた方が楽なような処理を
ごりごりVB6で書いてあるようで、もしかすると、難読化のつもりもあるのかもしれん
あと、IDE軽かったから、遊ぶ分にはいいかなとw
0419デフォルトの名無しさん
2008/12/17(水) 10:49:400420デフォルトの名無しさん
2008/12/17(水) 11:13:14ものすごい裏技でVBの関数を直接呼び出す方法もあるちゃあるが現実的ではない。
>最近、VB6で書かれたマルウェアが増えてきて
VBSなどで書かれてるその手のスクリプトをそのまま流用できるからじゃないのかね。
COMの扱いは簡単だしランタイムも大概入っている。
0421デフォルトの名無しさん
2008/12/17(水) 13:53:25vbは余り馴染みがなく今から記述することが出来るかどうかお教え頂きたい。
VBで作成したアプリに中国語を表示したい。
OSの設定ロケールは日本語。
vb6jp.dllはインストール済み。
OSのロケールが中国の場合は上手く中国語が表示出来ました。
日本ロケールだと文字化けしてしまいます。
SetThreadLocaleを使いロケールを変更してみましたが効果ありませんでした。
SetLocaleInfoは使い方が解りませんでした…。
ロケール変更にて文字化けを直すことは可能なのでしょうか?
お教え願います。
0422デフォルトの名無しさん
2008/12/17(水) 16:01:540423デフォルトの名無しさん
2008/12/17(水) 20:05:59中国語版のVB6.0で開発すればできるよ。
0424デフォルトの名無しさん
2008/12/17(水) 20:26:15ttp://www.biz.kotaete-net.net/Default.aspx?pgid=14&qid=160648281686
0425デフォルトの名無しさん
2008/12/18(木) 01:44:45回答ありがとうございます。
自分で調査したうえでそのような予感はしてましたが・・・。
特に424さんありがとうございました。
何故ダメなのか?という理由までわかったのですっきり諦められます。
別の方法で処理を回避、またはオペレーション誘導などで
問題を回避したいと思います。
皆さんありがとうございました。
0426デフォルトの名無しさん
2008/12/18(木) 12:13:42ファイル名が文字化けしているファイルを、コモンダイアログで指定して読み込みたいんだけど、
読み込んだ段階でパス名が変わってしまって、読み込みが出来ない。
解決策はありますか?
0427デフォルトの名無しさん
2008/12/18(木) 13:40:420428デフォルトの名無しさん
2008/12/18(木) 20:41:410429デフォルトの名無しさん
2008/12/19(金) 12:19:15一般的に文字化けと言うと思う。
>>428
リネームしたら確かに読み込めるけど、そのままいける方法が無いかなとね。
0430デフォルトの名無しさん
2008/12/19(金) 13:23:25何がどう化けたと思ってるんだ?
0431デフォルトの名無しさん
2008/12/19(金) 14:19:530432デフォルトの名無しさん
2008/12/19(金) 15:07:57最初はクリスタルレポート8.5を使っていたのですが使いにくいので前使っていた4.7を入れなおしました。
プリンターとプレビューの出力は上手く行くのですがテキストファイルやCSVの外部ファイルにエクスポートの際に
実行時エラー20540
エクスポート DLL がないかまたは古いです。
というエラーメッセージが出ます。
散々ぐぐりましたが解決策が見つかりません。
何かコンポーネートか参照をし忘れてるのでしょうか?
0433デフォルトの名無しさん
2008/12/19(金) 16:12:020434デフォルトの名無しさん
2008/12/19(金) 18:40:380435デフォルトの名無しさん
2008/12/20(土) 09:45:58VBで作られたEXEはデバッグというかコードを
読むことができるんでしょうか?
Visual Studio 6.0は入ってます。
正直なところ、EXEはアセンブラで読むしかない
みたいなイメージがあるんですが・・・
0436デフォルトの名無しさん
2008/12/20(土) 10:16:520437デフォルトの名無しさん
2008/12/20(土) 11:24:200438デフォルトの名無しさん
2008/12/20(土) 11:29:25http://www.watahiki.info/vbsvp98/q_and_a/vbprog/vbdecomp.html
0439デフォルトの名無しさん
2008/12/20(土) 19:20:56まあ無くても、もう持ってるから別に困りませんが。
0440デフォルトの名無しさん
2008/12/21(日) 08:23:22MSDN
0441デフォルトの名無しさん
2008/12/24(水) 00:03:19| 10| 20| |=AVERAGE(A1:C1)
0442デフォルトの名無しさん
2008/12/24(水) 00:11:070443デフォルトの名無しさん
2008/12/24(水) 00:13:39スレタイどおりで乙
0444デフォルトの名無しさん
2008/12/24(水) 01:27:170445デフォルトの名無しさん
2008/12/24(水) 08:44:140446441
2008/12/24(水) 10:56:17そうなんです。nullをどう処理するかなんです。
IF 文でだらだら書くのがちょっと思い書きました。
>>444
10ではなく15の答えが欲しいのです。
0447デフォルトの名無しさん
2008/12/24(水) 11:21:18/nのnの数を
セルの値がisnumericでTrueになったらインクリメントしていくとか
0448デフォルトの名無しさん
2008/12/24(水) 12:25:59次は最初からそう書こうね 後出しはじゃんけんでも嫌われるだろ?
0449デフォルトの名無しさん
2008/12/25(木) 06:44:52>>435
Pコードだと、Pコード逆アセンブラがいる >>438
ネイティブコードなら、デバッグシンボル吐かせれば、お好きなように
clでいう、/Faみたいなものは、ラベルが大幅に置き換わってしまうため、
ろくな内容にならない exeを直接逆汗したほうがまし
0450デフォルトの名無しさん
2008/12/25(木) 11:05:47一部分を色を変えることはできるでしょうか?
例えば
hoge (100)
という文字列の場合(100)だけ青にするといったことが
可能でしょうか?
0451デフォルトの名無しさん
2008/12/25(木) 20:49:550452デフォルトの名無しさん
2008/12/30(火) 20:41:110453デフォルトの名無しさん
2008/12/30(火) 20:47:590454デフォルトの名無しさん
2009/01/01(木) 00:03:490456デフォルトの名無しさん
2009/01/01(木) 03:33:223種類の商品をi(i=1,2,3)として、
それぞれの発注プログラムを構築したいと思っています。
計算方法は同じなので、iが3になるまでのFor〜Next処理でやりたいのですが、
それぞれのパラメータ(例えば需要INVi)のiのなかに数値を代入して
あらかじめ決めておいたINV1からINV3の数値を利用して作りたいと思っています。
この場合はINViのiの中に数値i=1〜3を代入してINV1〜INV3とするにはどのようなコードを書けばよいのでしょうか?
また、そうしたらそれ以前に決めておいたINV1〜INV3の数値を参照できるのでしょうか?
初心者の質問で申し訳ないですが、どうかご教授お願い致します。
0457デフォルトの名無しさん
2009/01/01(木) 10:24:52とりあえず、配列ではだめなんかい?
0458デフォルトの名無しさん
2009/01/02(金) 02:54:20大小のチェックをして場合分けしてやると思うんですけど。
教えてください。
0459デフォルトの名無しさん
2009/01/02(金) 02:59:460460デフォルトの名無しさん
2009/01/02(金) 02:59:540461デフォルトの名無しさん
2009/01/02(金) 03:06:10result += i
Next
0462デフォルトの名無しさん
2009/01/02(金) 10:14:02なるほど〜配列使ってやってみます!
説明下手ですいませんでした…ありがとうございました!
0463デフォルトの名無しさん
2009/01/05(月) 22:54:11なんかいい方法ありますか?
モーダルだとform1の処理が止まってしまうんで・・・
0464デフォルトの名無しさん
2009/01/05(月) 22:58:490465デフォルトの名無しさん
2009/01/05(月) 23:03:290466デフォルトの名無しさん
2009/01/05(月) 23:19:37その後の処理は続いてると?
ついでに教えてもらいたいんですが
モーダルで表示したフォームってshowイベントで止まるでいいですか?
0467デフォルトの名無しさん
2009/01/05(月) 23:24:24素直にドトネトつかってマルチスレッドのコードを書く方がいい。
ってういか、だからFormのコードに処理なんか書いちゃダメなんだよそもそも。
だからVB厨って呼ばれるんだ。
0468デフォルトの名無しさん
2009/01/05(月) 23:26:040469デフォルトの名無しさん
2009/01/05(月) 23:40:33モードレスでもいい方法があればいいのですがありますか?
質問ばかりですいません・・・
0470デフォルトの名無しさん
2009/01/05(月) 23:47:050471デフォルトの名無しさん
2009/01/05(月) 23:50:590472デフォルトの名無しさん
2009/01/05(月) 23:52:280473デフォルトの名無しさん
2009/01/06(火) 00:13:55もう一度試してみます
夜遅くに付き合ってくださってありがとうございました!
0474デフォルトの名無しさん
2009/01/06(火) 00:31:110475デフォルトの名無しさん
2009/01/06(火) 00:35:15やり方がまずかったのか、もう一度試してみます
0476デフォルトの名無しさん
2009/01/06(火) 10:27:29'住所1の印字
P_PRINT.E_Font "FC行楷書体", ADRS_FNT, True, 0
HH = ADRS_FNT / 2.835 + 1
If Not IsNull(AdoRs![住所1]) Then
For I = 1 To Len(AdoRs![住所1])
BAR = Mid$(AdoRs![住所1], I, 1)
' If BAR = "−" Then BAR = "ー"
' P_PRINT.E_String_Tate 60, 14 + (I - 1) * HH, BAR, RGB(0, 0, 0) '縦書き
If BAR = "ー" Or BAR = "−" Then BAR = "|"
P_PRINT.E_String 60, 14 + (I - 1) * HH, BAR, RGB(0, 0, 0)
Next
End If
上記はVBでのアプリケーションから封筒に宛名を印刷する。
というコードの一部なのですが、現在縦書き仕様になっており、
横書き仕様に書き換えたいのですが、一体どこをどう換えれば良いのか、
全く検討つきません。
心優しい方、ご教示いただければありがたいです。。。
0477デフォルトの名無しさん
2009/01/06(火) 12:25:180478デフォルトの名無しさん
2009/01/06(火) 16:18:35縦書きの部分がREMになってて横書きの部分が有効になってるように見えるんだけど…
とりあえずこれでどうかな
P_PRINT.E_Font "@FC行楷書体", ADRS_FNT, True, 0
(略)
If BAR = "−" Then BAR = "ー"
P_PRINT.E_String_Tate 60, 14 + (I - 1) * HH, BAR, RGB(0, 0, 0) '縦書き
' If BAR = "ー" Or BAR = "−" Then BAR = "|"
' P_PRINT.E_String 60, 14 + (I - 1) * HH, BAR, RGB(0, 0, 0)
(略)
0479デフォルトの名無しさん
2009/01/06(火) 17:34:42回答ありがとうございます!
0480デフォルトの名無しさん
2009/01/06(火) 17:41:48私の神様です!まだ実行してないですが、とにかく嬉しかったので・・・
連投すみません!
0481デフォルトの名無しさん
2009/01/07(水) 02:15:27VBAでListViewを作成しています。
グリッド表示で任意の行にある項目をダブルクリックした時、それが列の何番目なのかを取得したいのですが
VBAでは上手く出来なくて困っています。
ヒントや方法、解説されているサイトなどがありましたら、教えていただけないでしょうか。
よろしくお願いします。
0482デフォルトの名無しさん
2009/01/07(水) 18:06:16コードの中で計算したものを
エクセルに表示したいのですが、どのようにすればいいですか?
0483デフォルトの名無しさん
2009/01/07(水) 18:21:45>>482
Excel側のドキュメント読んで、サンプル探すといい
どのみち、慣れるまではExcel側のドキュメントを読み漁ることになる
0484デフォルトの名無しさん
2009/01/08(木) 10:27:19http://chaichan.web.infoseek.co.jp/vbtips/VBMemo2006082501.htm
このへんで
0485デフォルトの名無しさん
2009/01/08(木) 11:05:24インスタンスなどと言う用語の意味が良くわからない
のですが下のような解釈でいい?
Step 1 私のタコ焼き(オブジェクト:器)の用意をする
Dim 私のタコ焼き(オブジェクト:器) As タコ焼き(クラス:器と具の仕様書)
Step 2 私のタコ焼き(器)に具(インスタンス)を入れ焼く
Set 私のタコたこ焼き(オブジェクト:器) = New タコたこ焼き(クラス:器と具の仕様書)
Step 3 私のタコ焼きに仕事をさせる
私のタコ焼き(オブジェクト:具の入った器).私に食われる
あと、Step 1〜Step 3 において、物理メモリー上で何が起きてん?
領域の確保とか、コピーとか、値の代入とか起きてるような気が
するんですがどうなんでしょう? それと、各領域の先頭部分
にはヘッダーみたいなのが存在するはずだと思うのですが。
0486デフォルトの名無しさん
2009/01/08(木) 12:10:20タコたこ -> タコ
0487デフォルトの名無しさん
2009/01/08(木) 18:31:210488デフォルトの名無しさん
2009/01/08(木) 19:43:19知能指数が余程高い人は別として、普通の頭の人間がまず抽象的な概念を
先に完全に理解しようとするのは無理がある。
↓辺りの文章をさらっと読んで、とにかく実際にクラスモジュールを使ってみる方がずっと理解が早い。
抽象的な概念はあとから自ずと分かってくるから。
http://homepage1.nifty.com/CavalierLab/lab/vb/clsmdl/index.html
0489485
2009/01/08(木) 20:46:44やはり、複雑なことを一足飛びに抽象的に
理解しようとするのには無理があるって事ですね。
紹介していただいたWebページを参考に一つ一つ理解して
いこうと思います。感謝です。
0490デフォルトの名無しさん
2009/01/09(金) 15:50:10ボタンを長く押していると連続して1が増えていくような
処理ってどうやったらできるのでしょうか?
クリックイベントだといったん離さないと次のクリック
イベントが発生してくれませんでした。
0491デフォルトの名無しさん
2009/01/09(金) 16:52:090492デフォルトの名無しさん
2009/01/09(金) 17:14:07やはりTimerですかorz
0493デフォルトの名無しさん
2009/01/09(金) 17:38:19>>484
ありがとうございます!
早速試したのですが、最初の参照設定からうまくできず、
Excel.Applicationは宣言されていませんとエラーが出てしまいます。
VB2008なのですが…
0494デフォルトの名無しさん
2009/01/09(金) 19:16:58スレタイ嫁
0495デフォルトの名無しさん
2009/01/18(日) 11:01:05「ライブラリを使う」っていうのか、「オートメーションを使う」って言えばいいのか、
そして、あれもCOMと言えるのかな。「COMを使う」って言えばいいのかな。
今は、その適切な言葉の使い方で説明できなくてもどかしいが、VB6のソースはなぜか遅延
バインディング多いみたいだな。何で事前バインディングにしないのか疑問だが。遅延でしか
対応不可能な特別な場合を除いて、原則として事前にしない意味がわからん。単に知識が無い
だけなのか?
理解不能でないように補足しておくと、遅延とは、CreateObjectのことで、事前は参照設定して
専用のデータ型で宣言してNewでオブジェクトを作ることだ。
0496デフォルトの名無しさん
2009/01/18(日) 11:30:540497デフォルトの名無しさん
2009/01/18(日) 12:20:47クライアント環境のOfficeがバージョン不定の場合なんかは遅延にせざるをえない
0498デフォルトの名無しさん
2009/01/18(日) 12:31:48実際は97-2007でほとんどのメソッドは互換性があるんだけどね。
一部動かないメソッドを使うところだけ部分的に遅延バインド(といっても
WorksheetとかWorkbookのインスタンスをObject型の変数にぶち込むだけだが)
するように作った方が、最初から全部遅延バインドで作るより開発効率がいい。
0499デフォルトの名無しさん
2009/01/18(日) 12:37:430500デフォルトの名無しさん
2009/01/18(日) 13:22:44愚問過ぎる。
0501デフォルトの名無しさん
2009/01/18(日) 14:09:23お前勉強しろよ・・・
インテリセンスくらいの差しかない
0502デフォルトの名無しさん
2009/01/18(日) 16:51:350503デフォルトの名無しさん
2009/01/20(火) 13:48:59事前バインドっていうのは、いうなれば、コード生成の時点で、
(たとえば、inprocserverなら)vtable呼び出しになっている。みたいなイメージでおk?
んで、実行時バインドってのは、typelibみにいって呼ぶみたいな。
だから、実行時バインドなら、理論上、タイプライブラリが替えられちゃっても動く?
(そんなことしょっちゅうあってほしくないけど、まあ、理論上な)
0504デフォルトの名無しさん
2009/01/20(火) 14:40:440505デフォルトの名無しさん
2009/01/22(木) 10:13:58投稿前にぐぐって、かわりに知ったのは、VBどとねと移行ツールが、
事前バインドになってない個所を指摘してくれるらしい?ってことだった
どとねとは食わず嫌いだが、これはたまに使えるかもしれん
0506デフォルトの名無しさん
2009/01/22(木) 19:25:24グローバル変数とローカル変数に同じ名前をつけたり、
ループの中にDimで変数を宣言するのって普通のことですか?
http://www.pccard.co.uk/measurement/usbwave12.php
0507デフォルトの名無しさん
2009/01/22(木) 19:38:270508デフォルトの名無しさん
2009/01/22(木) 19:40:36嵌ることがある。VB.NETから意味が変わったし。
0509デフォルトの名無しさん
2009/01/23(金) 00:49:38宣言は冒頭にまとめてする事にしている。
0510デフォルトの名無しさん
2009/01/23(金) 01:01:38しまった、VBはBASICか
0511デフォルトの名無しさん
2009/01/23(金) 01:10:59「嵌る」というのはループ内の定義箇所で変数の値がデフォルト値に初期化されると
(誤って)期待した場合だと思うけど、それはむしろきちんと明示的に初期化しない
ことの方に問題がある。
あとVB6だと見た目ブロック内スコープに見えても実際のスコープは関数内、
っていうのも仕様としてはいやらしいけど、あまり問題にならんと思う。
0512デフォルトの名無しさん
2009/01/23(金) 06:58:10こういう頭の固い奴たまに見るけど、何言語出身なの?
0513デフォルトの名無しさん
2009/01/23(金) 07:44:100514デフォルトの名無しさん
2009/01/23(金) 08:06:27しまった、VBはBASICか
0515デフォルトの名無しさん
2009/01/23(金) 10:49:540516デフォルトの名無しさん
2009/01/23(金) 11:40:26同じ理由で関数/サブルーチン内の一番外側のブロックでDimすることにしてる。
やらん方がいいのはブロックの中の宣言したものを外で使うこと。
If ... Then
Dim x as ...
End If
print x
ブロックの中で配列の宣言やDim x As New ,,, でオブジェクト宣言はしないこと。
前者はVB.NETでコンパイルエラーになるが、後者はコンパイルは通るが動作が異なる。
0517デフォルトの名無しさん
2009/01/23(金) 16:34:270518デフォルトの名無しさん
2009/01/23(金) 16:49:370519デフォルトの名無しさん
2009/01/23(金) 17:10:44一番大きい違いはDB(DAO->ADO)関係かな
0520デフォルトの名無しさん
2009/01/23(金) 17:52:44書いてあることと同じ結果が出ないと無駄な時間を費やすことに なったりならなかったり
0521デフォルトの名無しさん
2009/01/24(土) 00:21:20お前エラートラップ限定で使わざるを得ないっていってんだよな?
そうだよな?そうだと言えよ!!!
0523デフォルトの名無しさん
2009/01/24(土) 00:53:470524デフォルトの名無しさん
2009/01/24(土) 04:24:350525デフォルトの名無しさん
2009/01/24(土) 12:24:07あれさえなければ
0526デフォルトの名無しさん
2009/01/24(土) 16:34:011つのformに、数値が入力されたtextboxとlabelを複数配置してtxtまたはcsvに保存するものを作っています。
そこで値の入っていないboxを飛ばして保存したいのですが可能ですか?
よろしければヒントお願いします。
0527デフォルトの名無しさん
2009/01/24(土) 16:41:00そういう風に作ればいいでない?
やりたいことが伝わってこないな。
0528526
2009/01/24(土) 17:38:48取得してきた数値を表示させるtextboxとlabelのセットが、縦横5×6ぐらいで並んでおり、
フォームデザイン上、表示させる順番が飛び空白ができてしまいます。
そのため保存したものが
"123","00","","","567","00","",""・・・・
のように間延びするので、どうにかできないかと思い聞きました。
0529デフォルトの名無しさん
2009/01/24(土) 17:57:29Option Explisit
Dim iFileNo As Integer
Private Sub Command1_Click()'保存ボタン
Dim i As Integer
iFileNo= FreeFile
Open CurDir & "\test.csv" For Append As #iFileNo
For i = 0 To 10 'テキストボックスのコントロール配列が増減の場合は10の値を変更
call check_Hozon(i)
Next i
Close #iFileNo
End Sub
Private Sub check_Hozon(ctlIndex As Integer)’入力チェックと出力
If Text1(ctlIndex),text <> "" Then ’空白の場合は書き込み
Print #iFileNo,Label1(ctlIndex).Caption & "," & Text1(ctlIndex),text
End if
End sub
0530デフォルトの名無しさん
2009/01/24(土) 19:23:53ありがとうございます。
勉強し直してきます。
0531デフォルトの名無しさん
2009/01/24(土) 20:03:17×Option Explisit
○Option Explicit
×空白の場合は書き込み
○空白じゃない場合は書き込み
似たようなコントロールが並ぶ場合は
コントロール配列を応用してインデックスで関数化する
改行要らなくて横にずーっと列挙するんであれば
Printする前に空白判定してstring型の変数かなんかにくっつける
0532デフォルトの名無しさん
2009/01/24(土) 23:50:55レポート印字につかうActiveXコンポーネントで定番と呼べるものはなんでしょうか?
0533デフォルトの名無しさん
2009/01/24(土) 23:53:350534デフォルトの名無しさん
2009/01/25(日) 14:35:170535デフォルトの名無しさん
2009/01/25(日) 14:50:33なに?integerだとまずいのか?
コントロール配列で上限超えるような事ないから
integerにしたまでだけど
0536デフォルトの名無しさん
2009/01/25(日) 15:18:140537デフォルトの名無しさん
2009/01/25(日) 15:20:260538デフォルトの名無しさん
2009/01/25(日) 16:35:37form内でのみ(project内ではない)グローバル変数を使いたい場合どうすればいいですか?
0539デフォルトの名無しさん
2009/01/25(日) 16:41:240540デフォルトの名無しさん
2009/01/25(日) 16:43:10フォームのソースコード1番上にDim 〜って宣言すりゃいいんじゃね?
0541デフォルトの名無しさん
2009/01/25(日) 16:46:23さんくす
0542デフォルトの名無しさん
2009/01/25(日) 17:03:36それはchar系以外全部同じ。longだって、ところによっては8バイトのものもある。
必要ならint32_tのような型を使う。
0543デフォルトの名無しさん
2009/01/25(日) 17:17:20意味するところが不明
0544デフォルトの名無しさん
2009/01/25(日) 18:08:260545デフォルトの名無しさん
2009/01/25(日) 18:40:360546デフォルトの名無しさん
2009/01/25(日) 18:43:320547デフォルトの名無しさん
2009/01/25(日) 19:53:21Longを返すものをIntegerで受け取ってるものが多い。
それはあまり推奨できないということだ。
0548デフォルトの名無しさん
2009/01/25(日) 20:01:220549デフォルトの名無しさん
2009/01/25(日) 20:37:47なるほどな思わぬところで勉強になったわサンクスコ
0550デフォルトの名無しさん
2009/01/25(日) 22:01:150551デフォルトの名無しさん
2009/01/26(月) 00:05:11ありがとう。その二つをチェックしてみる。
0552デフォルトの名無しさん
2009/01/26(月) 07:35:09確かに
呼び出し時の参照渡しでは型が違うとエラーになるが
戻り値の代入では型が違っても自動変換されるから
気付いてないっぽいのを結構見かけるね
0553デフォルトの名無しさん
2009/01/26(月) 12:32:18グローバルならPublicのPをつけるように(今思うとPrivateもPだから紛らわしいが)
0554デフォルトの名無しさん
2009/01/26(月) 12:59:000555デフォルトの名無しさん
2009/01/26(月) 12:59:510556デフォルトの名無しさん
2009/01/26(月) 13:01:31モンゴリアンチョップは今でも俺の必殺技!
0557デフォルトの名無しさん
2009/01/26(月) 14:42:080558デフォルトの名無しさん
2009/01/26(月) 22:04:23そういう記法でのグローバルはgだろ
というか批判されてるのはシステムハンガリアンだけだよ
アプリケーションハンガリアンは特別には批判されても嫌われてもいない
もちろん否定的意見は存在するが、それはどの記法にも見られるレベルのもの
しかし型付けが弱いVB6や型付けが無いVBSでは
システムハンガリアンだってそれなりに利点があるんだよな
頭の悪い奴は、批判されてる理由も正しく理解しないうちから
周りに載せられて全て一緒くたにして批判するが、
システムハンガリアンも全く利点のない記法ではないからな
0559デフォルトの名無しさん
2009/01/26(月) 23:18:30遅レスだがDimはやめてPrivateにしなされ
0560デフォルトの名無しさん
2009/01/27(火) 19:01:52が表示されてしまいます。
”0x77fcc7a8"の命令が”0x317e4ebb"のメモリを参照しました。メモリが”written”になることはできませんでした。
プログラムを終了するには[OK]をクリックしてください。
プログラムをデバックするには[キャンセル]をクリックしてください。
と表示されます。
これを改善するにはどのようにすればよいのでしょうか??
0561デフォルトの名無しさん
2009/01/27(火) 19:20:28他のPCで試してみて、動かなかったら作った奴に聞けばいい
0562デフォルトの名無しさん
2009/01/27(火) 20:09:42対象のDLL側の実装は、こんな感じです。
int functionA(unsigned long param1 , int* param2)
param1 は、param2 に指定した int 配列の数をあらわし、関数を動かすと、
param2 で指定したところに数字の配列を入れてくれるようになってます。
んで、VBから、こんな風に定義したんですけど・・・
declare function functionA lib "hogehoge.dll" _
( param1 as long , param2() as long) as long
実行時に「DLLが正しく呼び出せません」でエラーになってしまいます。
DLLのファイル名と、関数のExport名は dumpbin で調べたので合ってるかと。
declare function functionA lib "hogehoge.dll" _
( param1 as long , param2 as long) as long
dim param1 as long
dim param2(10) as long
dim ret as long
param1 = 10
ret = functionA(param1 , varptr(param2(0)))
なんてやっても同じエラーでした。
なんか根本的なところで勘違いしているような気もします。
ご親切な方いましたら教えてくださいませ。
環境は、VB5.0、VB6.0でしか使えない機能が必要ならVB6.0も入れてみようと思って待つ。
0563デフォルトの名無しさん
2009/01/27(火) 20:33:34~~~~~~~
じゃね?
0564デフォルトの名無しさん
2009/01/27(火) 20:47:49declare function functionA lib "hogehoge.dll" _
(byval param1 as long , byref param2() as long) as long
というのと、
declare function functionA lib "hogehoge.dll" _
(byval param1 as long ,byval param2 as long) as long
というのを試して両方とも同じく「DLLが正しく呼び出せません」
というエラーメッセージでした。
0565デフォルトの名無しさん
2009/01/27(火) 20:48:050566デフォルトの名無しさん
2009/01/27(火) 21:09:51これだと前ハイフンも@8も必要になる。
1 0 00001000 _functionA@8
0567デフォルトの名無しさん
2009/01/27(火) 21:10:06同じDLLの他の関数は使えているので、問題ないとおもいます。
0568562
2009/01/27(火) 21:11:23564、567は俺の書き込みです
0569デフォルトの名無しさん
2009/01/27(火) 21:14:46それと分かるメッセージになるのだが、VB5でその辺の切り分けはできますか?
両方とも当てはまらないなら、
DLLがさらに別のDLLを必要としていてそれがないということもありえる。
0570565
2009/01/27(火) 21:17:320571デフォルトの名無しさん
2009/01/27(火) 21:19:480572デフォルトの名無しさん
2009/01/27(火) 21:19:51それは問題ないです(><)すみません
>>569
そう思って、出鱈目な関数名を alias で指定
したのですが、その場合は「エントリ hoge がDLLファイル
C:\hoge.dll 内に見つかりません。」というエラー
になるので、エントリまでは問題ないかと思います。
0573デフォルトの名無しさん
2009/01/27(火) 21:26:10普通にこれでよくね?
ret = functionA(param1 , param2)
0574デフォルトの名無しさん
2009/01/27(火) 21:27:270575デフォルトの名無しさん
2009/01/27(火) 21:37:50COMやVBXの登録がおかしくなってる。
互換のないdllに置き換わってしまった。
などなどのdll Hellの症状が見受けられます。
再インストールがんばって。
0576デフォルトの名無しさん
2009/01/27(火) 21:53:35hogehoge.dllをsystem32に置いてみて
0577デフォルトの名無しさん
2009/01/27(火) 22:17:560578デフォルトの名無しさん
2009/01/27(火) 23:20:25VB2のサンプルソースをコピペして使うからですよ。
VBMsgBoxResult といえば、プロシージャの成功失敗を
vbOKとvbCabcelで返してるコードも見たことがあります。
みんな意味も分からずカッチョイイから使ってるだけ。
Longなら安心だけどIntegerでもたぶん平気、ちゃんと入力の有効範囲を
意識して型を使い分ける俺って渋いじゃん?wみたいな人もいるかもしれません。
そういう人に限って、「500件のレコード処理の進捗率を表示」するのに、
進捗率 = 完了件数 * 100 / 総件数 みたいな阿呆な式を書くんですよ。
もちろん全部最大500だからIntegerで宣言。
せめて割ってからかけろと・・・
0579562
2009/01/27(火) 23:25:01__stdcall していなかったのが原因でした(><)
VB.net を導入したところ、当たり前のように動きました。
vb5でのテストで、他の関数で処理が通ったのは、引数
がない関数で試したからのようです。引数のある関数は
vb5 ではダメでしたが、vb.net では動きました。
お騒がせしました。ありがとうございます!
0580デフォルトの名無しさん
2009/01/28(水) 00:58:480581デフォルトの名無しさん
2009/01/28(水) 22:53:57IE側にボタンを設置し、そのボタンを押されたらraiseイベントで
別のhoge.ASPなどを呼び出したりしたいのですが、
OCXをダウンロードした1回目に限りraiseイベントが起こらない
(2回目以降というかC:\WINDOWS\Downloaded Program Filesにファイルがダウンロード済なら問題なし)
様のですがIEの仕様なのでしょうか?
0582デフォルトの名無しさん
2009/01/28(水) 22:58:210583デフォルトの名無しさん
2009/01/28(水) 23:26:44原則Longがいいだろう。リテラルには&付けることだな。
0584デフォルトの名無しさん
2009/01/28(水) 23:29:590585デフォルトの名無しさん
2009/01/28(水) 23:34:58MS-BASIC(N-BASIC)時代の名残。何げに30年の歴史がある。
でもON GOSUBに相当する機能ってVBにはないよね?Tryは微妙に違うし。
0586デフォルトの名無しさん
2009/01/31(土) 14:28:18教える本が無いのか。
0587デフォルトの名無しさん
2009/01/31(土) 18:22:010588デフォルトの名無しさん
2009/01/31(土) 18:34:260589デフォルトの名無しさん
2009/01/31(土) 19:29:570590デフォルトの名無しさん
2009/02/01(日) 15:57:030591デフォルトの名無しさん
2009/02/01(日) 16:13:57思い出す方法を誰か教えてください。
ネット上のサーバー履歴も、机の上のパソコンの中の履歴も、ちょうど同じ
日に消えてしまいました。
0592デフォルトの名無しさん
2009/02/01(日) 16:19:31もっと他にやることないのかよ惨めな奴だな
0593デフォルトの名無しさん
2009/02/01(日) 20:54:02つまり、そんなヤツを探す方法に、この問題は行き着くわけだが
そうすると、VB6の問題じゃないなこれは
0594デフォルトの名無しさん
2009/02/01(日) 20:57:290595デフォルトの名無しさん
2009/02/02(月) 02:03:56逆汗って何か分かって言ってんのか?
意味もよく分かってないくせに使うんじゃねえよ
0596デフォルトの名無しさん
2009/02/02(月) 07:35:020597デフォルトの名無しさん
2009/02/03(火) 10:38:05処理中に実行時エラーが発生してしまうんだが、どうしたら出なくなるのか知ってる奴いない?
実行時エラー '-2147221504(80040000)':
Connector:Connection time out.
一応、ConnectorProperty("Timeout")は設定している。
0598デフォルトの名無しさん
2009/02/03(火) 14:30:47話はそれからだ
0599デフォルトの名無しさん
2009/02/03(火) 15:09:190600デフォルトの名無しさん
2009/02/03(火) 15:17:530602デフォルトの名無しさん
2009/02/03(火) 16:24:31エレコムのマウスユーティリティ(エレコムマウスじゃなくても使える)
をインスコするとVB6のソース画面もスクロールできる
これ豆ry
0603デフォルトの名無しさん
2009/02/03(火) 17:11:37>>602でもできるのかもしれないけどこれでも出来る
Visual Basic 6.0 IDE でマウス ホイール イベントが機能しない
http://support.microsoft.com/default.aspx?scid=kb;ja;837910
0604デフォルトの名無しさん
2009/02/03(火) 17:47:10トンクスです
0605デフォルトの名無しさん
2009/02/03(火) 21:08:18うおースクロール出来るー、嬉しい ^^
ありがとさんです
0606デフォルトの名無しさん
2009/02/06(金) 00:48:14ON...GOSUBは6.0まで残されてたね。あくまでレガシー活用目的で、
Select Case に書き換えろ、ってQuickBASICの頃から言われてます。
N(N88)-BASICの頃はON ERROR GOTO のほかにもON KEY(n) GOSUB やON STOP GOSUB
やらがあって、それぞれ3単語で1ステートメント扱いでリファレンスにも載ってた。
QBで数が増えすぎてON EVENT GOSUBと一緒くたに説明されるようになった。
どうしてON ERROR GOSUBにしなかったかというと、GOSUBはRETURNでもどるが
ご存じの通りエラーの時はRESUMEで戻るから「GOSUB」を使いたくなかった。
On Error Resume NextができたのはVBから。以前は10 ON ERROR GOTO 60000
60000 RESUME NEXTと書くしかなかった。
考えたら、あの当時にはエラー処理用ステートメントが用意されていたのは
進んでいたのかもしれない。
0607デフォルトの名無しさん
2009/02/06(金) 00:55:14ON KEY(n) GOSUB はファンクションキーn番が押されたらGOSUB
ON STOP GOSUB はPC-9800等過去のPCに付いていたSTOPキーが押されたらGOSUB
Stopステートメントとは無関係ですよ。今ならDoEvents+KeyDownイベントに近いのかなあ。
ほかにも音楽演奏バッファが空いてきたらGOSUBする ON PLAY GOSUBとか
いろいろあった。
0608デフォルトの名無しさん
2009/02/06(金) 00:58:43大型のハンマーで頭を後ろから思いっきりたたく。
目から壁にソースコードが映写されますよ。
0609デフォルトの名無しさん
2009/02/06(金) 01:38:31どなたか教えてください。
http://www.amazon.co.jp/%E8%8B%B1%E6%96%87%E9%80%9F%E8%AA%ADTRY-AGAIN-%E6%9C%AC-%E6%AD%A3%E5%BC%98/dp/4875685920/ref=sr_1_1?ie=UTF8&s=books&qid=1233763565&sr=8-1
0610デフォルトの名無しさん
2009/02/06(金) 08:04:22宣伝乙。と思ったら、なんかおもしろそうな文字化けしてるなw
でも、VB6はたぶん関係ナカッタ
0611デフォルトの名無しさん
2009/02/06(金) 08:15:270612デフォルトの名無しさん
2009/02/06(金) 23:47:21とりあえずファンクション単位でもいいから
貼れや
0613デフォルトの名無しさん
2009/02/07(土) 03:01:220614デフォルトの名無しさん
2009/02/07(土) 08:26:04これ?
http://www-01.ibm.com/support/docview.wss?uid=swg21343350
0615デフォルトの名無しさん
2009/02/08(日) 03:22:44たとえばCならprintf、C#ならConsole.WriteLineやDebug.WriteLineで
コンソールやデバッグに出力するところから基礎を始めることがあるけど、
VBではテキストボックスに出すようなのが多い。それだとコントロール周りの
余計な(そのときの本題と関係ない)知識が必要だし、実業務でも
デバッグをMsgBoxでやっちゃってフォーカスがらみのコード追跡ができないと
嘆くような駄目プログラマが育ってしまう。Debug.PrintやPrint#を使う
習慣を身につけさせるべきだ。
と言いたいんじゃないかと思う。
0616デフォルトの名無しさん
2009/02/08(日) 10:17:150617デフォルトの名無しさん
2009/02/08(日) 14:04:090618デフォルトの名無しさん
2009/02/08(日) 14:44:410619デフォルトの名無しさん
2009/02/08(日) 17:05:59つかできるかな、できるはずだけど あとでやってみよ
0620デフォルトの名無しさん
2009/02/08(日) 18:47:17とりあえず野望への一歩。
0621デフォルトの名無しさん
2009/02/09(月) 17:54:24ADOとMs標準のDataGridで一覧表を作ってるんですが、
どうしても分割ペイン追加出来ないように出来ないんです。
MSDNには.SplitsのAllowReSizeにfalseセットすれば追加出来なくなる
みたいに書いてあるんですが、サイズ調整が出来ないだけで、
追加されてしまいます。
何か良い方法をご存じの方いらっしゃいませんか?
0622621
2009/02/09(月) 18:22:41AllowSizingだけじゃなく、SizeModeの設定も必要なんですね・・・
0623デフォルトの名無しさん
2009/02/09(月) 19:55:390624デフォルトの名無しさん
2009/02/10(火) 00:16:22具体的な方法を教えてください。
0625デフォルトの名無しさん
2009/02/10(火) 02:46:33Dim fso As New FileSystemObject
Dim txtstm As TextStream
Set txtstm = fso.GetStandardStream(StdOut)
txtstm.WriteLine "helloあいうえお"
txtstm.Close
editbin /subsystem:console vbxxx.exe
0627デフォルトの名無しさん
2009/02/10(火) 12:14:19さらにEXEにする段階でDebug.PrintとDebug.Assertは取り除かれる。
知ったかもあれだが粘着もそれだ、
>>617 は単純にVB6のIDEで動かせばいいといってるだけかもしれんよ。
0628624
2009/02/10(火) 12:51:100629デフォルトの名無しさん
2009/02/10(火) 13:03:18普通じゃなければAPIつかって、AllocConsole/GetStdHandle/WriteConsoleの
流れでできるっちゃできる。
0630デフォルトの名無しさん
2009/02/10(火) 20:31:04思ったより簡潔に書ける いっぺんつかってみるべき
0631デフォルトの名無しさん
2009/02/10(火) 20:35:230632デフォルトの名無しさん
2009/02/10(火) 21:34:43>>617さん、ごきげんよう
0633デフォルトの名無しさん
2009/02/10(火) 21:45:340634デフォルトの名無しさん
2009/02/10(火) 21:49:570635デフォルトの名無しさん
2009/02/10(火) 22:23:540636デフォルトの名無しさん
2009/02/10(火) 22:26:080637デフォルトの名無しさん
2009/02/10(火) 22:29:40技術的に可能かどうかって話だから
0638615
2009/02/12(木) 00:25:110639デフォルトの名無しさん
2009/02/12(木) 07:54:340640デフォルトの名無しさん
2009/02/12(木) 15:37:44どうしても表示幅が狭くなってしまいます
(とりあえずダミーの空白とか入れてごまかしてはいますが…)
0641デフォルトの名無しさん
2009/02/12(木) 19:06:45後半は認める
0642デフォルトの名無しさん
2009/02/12(木) 22:15:13複数のテキストボックスに入力した内容を
ひとつのファイルに入出力させようと思っているのですが
どのような方法でやればいいのか見当付きません
ご教授願います
0643デフォルトの名無しさん
2009/02/12(木) 22:33:370644デフォルトの名無しさん
2009/02/12(木) 22:45:39すみません…
ええと複数のテキストボックスに入力した内容をひとつのファイルに出力させて
その後そのファイルを読み込んだら複数のテキストボックスが出力した前と同じ内容になるプログラムでした
0645デフォルトの名無しさん
2009/02/12(木) 22:53:13もう面倒だからXMLにしちゃえよ
0646デフォルトの名無しさん
2009/02/12(木) 23:00:50その変数をファイルに書き込む
ファイルを開いて全て一つの変数にぶち込む
変数の最初から区切り記号の一つ前までをテキストボックスにぶち込む
変数の内容を最初の区切り記号+1にして変数が空っぽになるまでループ
ちゃんとやらないと無限ループするから他の方法の方がいいかもしれないが目的は達するからこれでいいんじゃね?
もしかしてコードがほしかった?
0647デフォルトの名無しさん
2009/02/12(木) 23:03:53>>646
参考になりました。ありがとうございます
0648デフォルトの名無しさん
2009/02/13(金) 14:57:17複数のテキストボックスへ入力された内容を、
String型変数に入れて文字列編集すればいいと思う。
例えば、
dim strA as string
strA = myform.textbox1.text & vbcrlf & myform.textbox2.text
とか。んで strA の内容をファイル化すればいい。
0649デフォルトの名無しさん
2009/02/13(金) 14:58:17俺はそういうときは、tab 区切りにしてる
0650test
2009/02/13(金) 16:45:13unicodeで貼り付けると
。」〄「〖 こんな感じでうまく貼り付けることができません
これをansiに変換しても
䊁皁脿㽵 となりうまく貼り付けられません
良い方法あったら教えてくださいm(__)m
0651test
2009/02/13(金) 16:46:55他のスレでうまくいかなかったんだけどなぜ?
0652デフォルトの名無しさん
2009/02/13(金) 17:55:38ttp://pc11.2ch.net/tech/SETTING.TXT
0653651
2009/02/13(金) 20:10:28BBS_UNICODE=pass
ありがとうございます
0655デフォルトの名無しさん
2009/02/15(日) 21:53:120656デフォルトの名無しさん
2009/02/15(日) 22:04:210658デフォルトの名無しさん
2009/02/16(月) 19:31:020659デフォルトの名無しさん
2009/02/17(火) 17:35:250660デフォルトの名無しさん
2009/02/19(木) 08:29:05そのexeの戻り値を取得する必要が出てきました。
exeの戻り値はどのようにして取得したらよいでしょうか?
下記が現在のコードです。
Dim IDProcess As Long
Dim hProcess As Long
Dim ret As Long
IDProcess = Shell(strCommandLine, vbMinimizedNoFocus)
hProcess = OpenProcess(SYNCHRONIZE, 1, IDProcess)
ret = WaitForSingleObject(hProcess, INFINITE)
ret = CloseHandle(hProcess)
0661デフォルトの名無しさん
2009/02/19(木) 09:02:10もしかして終了コードのことを言ってるのか?
それともActiveX.exeなのか?
ActiveX.exeならexe自体ではなくexeが持つ関数に戻り値があるけど
0662デフォルトの名無しさん
2009/02/19(木) 09:16:40すみません。戻り値じゃなくて終了コードですね。
失礼いたしました。
ぐぐりながらやってみているのですが
なぜかhProcessが0です。
なぜいままで動いていたのだろうorz
Dim IDProcess As Long
Dim hProcess As Long
Dim ret As Long
Dim lExitCode As Long
IDProcess = Shell(strCommandLine, vbMinimizedNoFocus)
hProcess = OpenProcess(SYNCHRONIZE Or PROCESS_QUERY_INFORMATION, True, IDProcess)
If hProcess <> 0 Then
MsgBox hProcess
ret = WaitForSingleObject(hProcess, INFINITE)
ret = GetExitCodeProcess(hProcess, lExitCode)
ret = CloseHandle(hProcess)
End If
0663デフォルトの名無しさん
2009/02/19(木) 09:25:19すみません。
CreateProcessを使ったら終了コードが取得できました。
お騒がせしました。
0664デフォルトの名無しさん
2009/02/20(金) 00:52:530665デフォルトの名無しさん
2009/02/20(金) 01:09:32というかその二つに限れば、VBで使えば活用(活かした利用)にはならない
もっといいものがいっぱいあるから
0666デフォルトの名無しさん
2009/02/20(金) 13:36:42ありがとうございました
0668デフォルトの名無しさん
2009/02/21(土) 20:35:59ラーニングエディション持ってるんで、
ちょっと勉強してみようか・・・と思ってるんですが。
0669デフォルトの名無しさん
2009/02/21(土) 20:39:25>422 名前: デフォルトの名無しさん 投稿日: 2009/02/11(水) 17:01:01
>そもそも、.NETはお金を頂くソフトウェア作るには不向き
>・遅い
>・ソース丸見え
>・フレームワークインストール必須
>・FAでは絶対に無理
>
>枚挙に暇がない
0670デフォルトの名無しさん
2009/02/21(土) 20:41:47どうもです。サンクス。
0671デフォルトの名無しさん
2009/02/21(土) 22:37:44簡単だからネットで使い方調べれ。動作確認にはおすすめ。
0672デフォルトの名無しさん
2009/02/22(日) 16:09:59ありがとうございました
0673デフォルトの名無しさん
2009/02/22(日) 19:05:00俺おもいっきり取り残されてるな…。
…だからこのスレにいるのかwww
0674デフォルトの名無しさん
2009/02/24(火) 01:08:240675デフォルトの名無しさん
2009/02/26(木) 02:02:25やりたいこと
1.インスタンスを生成せずにその変数にアクセスしたい
2.異なるクラス間で同じ値を共有したい
3.javaのように簡単に実現したい
の三本です
0676デフォルトの名無しさん
2009/02/26(木) 02:15:51>2.異なるクラス間で同じ値を共有したい
→ 2.異なるクラス間で同じ変数を共有したい
0677デフォルトの名無しさん
2009/02/26(木) 02:23:15Shared
0678デフォルトの名無しさん
2009/02/26(木) 02:29:33Static Property とかいった手もあった記憶があるがめんどくさいはず。
0679デフォルトの名無しさん
2009/02/26(木) 03:33:15他の言語でも、そのまま簡単に実現できると思ってるのってどうよ?
0680デフォルトの名無しさん
2009/02/26(木) 11:02:13VB6だとそれで十分だと思うが
0681デフォルトの名無しさん
2009/02/26(木) 19:29:12VBのクラスはクラスメンバを持てない。
VBにはクラスのほかに標準モジュールというのがあるけど、
こっちはC#でいうstaticクラスに似ていて、インスタンスメンバを持てない。
(インスタンス化できない)
まあ、javaよりずっと前からある言語だから多少かかなりかウンコ仕様なのは仕方がないねw
0682デフォルトの名無しさん
2009/02/27(金) 00:49:52ハァ?
クラスメンバ変数は Public で作れる
0683デフォルトの名無しさん
2009/02/27(金) 00:57:34だが、>>675 を実現するにはちょっと細工が必要。
ActiveX DLL に1つクラスを設けて、そいつの Instancing を GlobaMultiUse に
すればいい。
そいつに Public 変数を置けば、いわゆるグローバル変数扱いになる。もちろんクラス。
ただ、利用側で Option Explicit とした場合、アーリーバインディングでないと
エラーになった気がする。
それと常識だと思うが、プロセスが異なれば参照先も異なる。
クラスである必要があるならこうするしかないが、
どう考えても標準モジュールで十分な希ガス。
0684デフォルトの名無しさん
2009/02/27(金) 17:07:49vb2008 webページの作成をしています。
コンボボックスから、氏名を選択したら、別のテキストにIDを表示するのですが。
コンボボックスから選択しただけじゃイベント処理は発生しませんか?
SelectedIndexChangedとかTextChangedとか試してるのですが上手くいきません。
0685デフォルトの名無しさん
2009/02/27(金) 17:30:06スレ違いです。
0686デフォルトの名無しさん
2009/02/27(金) 19:47:20持てません。
クラスメンバの意味わかって言ってる?w
0687デフォルトの名無しさん
2009/03/02(月) 14:53:22最低でもLANかWANかだけでもわからないでしょうか?
0688デフォルトの名無しさん
2009/03/02(月) 14:57:300689デフォルトの名無しさん
2009/03/02(月) 15:02:48TCPでlistenしてるところにconnectしてきた相手のIPアドレスを取得したいんです。
IPアドレスがわからなくても、最低限、そのconnectメッセージがLAN経由かWAN経由かの接続だけでも取得したいのです。
0690デフォルトの名無しさん
2009/03/02(月) 15:10:470691デフォルトの名無しさん
2009/03/02(月) 15:32:21見直してみたら、てっきりRemoteHostしかないと思ったらRemoteHostIPの存在に気づきました。
すいません、お手数をおかけしました。
0692デフォルトの名無しさん
2009/03/04(水) 10:41:06何が考えられますか?
0693デフォルトの名無しさん
2009/03/04(水) 11:20:110694デフォルトの名無しさん
2009/03/04(水) 11:26:17こんな感じで
0695デフォルトの名無しさん
2009/03/05(木) 01:50:23エクセルのCellsみたいに列、行指定はできませんか?
0696デフォルトの名無しさん
2009/03/05(木) 02:09:370697デフォルトの名無しさん
2009/03/05(木) 02:20:33利口ならDBについて3日勉強して出直せ
馬鹿ならDBについて3年勉強して出直せ
0698692
2009/03/05(木) 11:31:12ホイールイベント時の処理でスクロールさせるしかないということですね。
イベントの受け取り方などもう少し調べてみようと思います。
0699デフォルトの名無しさん
2009/03/05(木) 19:57:12ADOならRecordsetオブジェクトとか調べて見るといいかも
0700デフォルトの名無しさん
2009/03/07(土) 17:35:540701デフォルトの名無しさん
2009/03/07(土) 18:03:33VB6は何とか動いたけどODBC関連がだめだめだったね
使い物にならないぐらい遅い
Win7では動かなくなるソフト続出だとおもう
0702デフォルトの名無しさん
2009/03/07(土) 18:04:590703デフォルトの名無しさん
2009/03/07(土) 22:06:49リアルタイムでリストボックスのTopIndexを取得したいのですが
リストボックスのScrollイベントが動かないので私のスキルでは
八方塞がりです。方法をご教授頂けないでしょうか?
0704デフォルトの名無しさん
2009/03/07(土) 22:10:51サブクラス化
ググればいくらでもサンプルは出てくる
それでも解らなかったら諦めるよろし
0705デフォルトの名無しさん
2009/03/07(土) 22:15:500706デフォルトの名無しさん
2009/03/07(土) 22:38:24ありがとうございます。
私の探し方が悪いんでしょう。
なかなか見つけられなくてココに来た次第です
諦めるわけには行かないので調べなおします。
>>705
業務で使うのでVB6を使うしかありません。
10年以上稼動する機器なんてざらにあるので・・・
こちらがリファクタリングしたくても
機能も仕様も変わらないのにお金出すところなんてありませんから
0707デフォルトの名無しさん
2009/03/07(土) 23:30:070708デフォルトの名無しさん
2009/03/07(土) 23:32:36不具合があったって、MS は知らん顔だよ?
0709デフォルトの名無しさん
2009/03/07(土) 23:34:130710デフォルトの名無しさん
2009/03/07(土) 23:38:51厳密にTopIndexが一つ変化するごとに確実にイベントが欲しい、
とかで無ければタイマ使ってポーリングしたら?
こんな感じのクラスを作って検証してみたが、悪くないように思うけど。
[ListBoxWatcher Class]
Private WithEvents mListBox As ListBox
Private WithEvents mTimer As Timer
Private mTopIndex As Integer
Public Event TopIndexChanged()
Public Property Set ListBox(lb As ListBox)
Set mListBox = lb
Dim frm As Form
Set frm = mListBox.Parent
If mTimer Is Nothing Then
Set mTimer = frm.Controls.Add("VB.Timer", "pollingTimer")
mTimer.Interval = 200
End If
If frm.ActiveControl Is mListBox Then
StartPolling
End If
End Property
0711デフォルトの名無しさん
2009/03/07(土) 23:40:35mTimer.Enabled = True
mTopIndex = mListBox.topIndex
End Sub
Private Sub mListBox_GotFocus()
StartPolling
End Sub
Private Sub mListBox_LostFocus()
mTimer.Enabled = False
End Sub
Private Sub mTimer_Timer()
Dim currentTop As Integer
currentTop = mListBox.topIndex
If currentTop <> mTopIndex Then
mTopIndex = currentTop
RaiseEvent TopIndexChanged
End If
End Sub
しかし、なんでそんなイベントでそんな値が必要なんだろう
0712デフォルトの名無しさん
2009/03/07(土) 23:44:28横から勉強になります
0713デフォルトの名無しさん
2009/03/07(土) 23:48:290714デフォルトの名無しさん
2009/03/07(土) 23:55:460715デフォルトの名無しさん
2009/03/08(日) 00:03:30動かしたいって話ではなく
動かすのは出来てる上で
そのイベントを取りたいって話なのに
0716デフォルトの名無しさん
2009/03/08(日) 15:06:15使いやすくてフリーか安価な物ってありますか?
0717デフォルトの名無しさん
2009/03/08(日) 16:16:190718デフォルトの名無しさん
2009/03/08(日) 16:17:29あと5年はイけそうだぬ
0719デフォルトの名無しさん
2009/03/08(日) 16:25:32ところが動かないソフト続出w
0720デフォルトの名無しさん
2009/03/08(日) 18:44:50俺はMSHFlexGridを自作のクラスと組み合わせて使いやすくしてる
プログラマなら他人が作ったものを使うことばかり考えてないで
少しは自力で便利にしようって気になろうよ
0721デフォルトの名無しさん
2009/03/08(日) 19:10:590722デフォルトの名無しさん
2009/03/09(月) 00:37:17VB6でも使えるのか?
0723716
2009/03/09(月) 00:46:37自作にかかる費用と購入する費用を考えたときに
購入する方が安上がりかと思いまして
後、うちの会社レベルが低すぎてクラスの概念理解できる人がいないんです…
やっぱグレープシティ買って貰うのが一番手っ取り早いですかね
1週間分の人件費で買えますし…
0724デフォルトの名無しさん
2009/03/10(火) 22:18:45費用対効果とか生産性で一番効率品質ともに良いほうを選ぶだけのこと。
車輪の再発明なんぞ自宅でやれ。仕事でやるな。
再発明した低レベルの車輪を見せびらかすな。
0725デフォルトの名無しさん
2009/03/10(火) 22:25:080726デフォルトの名無しさん
2009/03/10(火) 22:33:080727デフォルトの名無しさん
2009/03/10(火) 23:25:40そもそも最初の質問で仕事で使うとは一言も書いてない件について
個人で使うことを想定した回答を、後出しの仕事で使うという情報を理由に叩く奴は馬鹿なのか?
0728デフォルトの名無しさん
2009/03/10(火) 23:40:34君のそれも話が噛み合ってないんじゃないの?
>>725の言うように724は勤め人にありがちな境遇がわかってない、
ってのなら同意するんだが。。
まあ、くだらんことで熱くなってもしょうがないだろ。
0729デフォルトの名無しさん
2009/03/11(水) 23:33:390730デフォルトの名無しさん
2009/03/12(木) 00:15:49新発明に出来る可能性を秘めてるからな
再発明にすら届かない可能性も孕んではいるが
0731デフォルトの名無しさん
2009/03/13(金) 00:12:26いかんせん時間効率がよくない。と思う
車輪の再発明は学生のうちにしとけ。とはよくいったもの
世の中そううまくいかん(実りある再発明行為が、学生のうちにできるわきゃない)わけだが
0732デフォルトの名無しさん
2009/03/13(金) 00:21:25再開発でも自作しろなんて言ってる奴は皆無である件について
0733デフォルトの名無しさん
2009/03/13(金) 00:28:140734デフォルトの名無しさん
2009/03/13(金) 00:43:240735デフォルトの名無しさん
2009/03/13(金) 00:45:130736デフォルトの名無しさん
2009/03/13(金) 02:50:120737デフォルトの名無しさん
2009/03/13(金) 03:19:150738デフォルトの名無しさん
2009/03/13(金) 05:24:15ただ会社の場合は「会社では」って付けてね
何も付けないと、名前空間上「このスレでは」って意味になるから
0739デフォルトの名無しさん
2009/03/13(金) 15:41:56いつからそんなルールになったんだ?
0740デフォルトの名無しさん
2009/03/13(金) 15:48:000741デフォルトの名無しさん
2009/03/13(金) 17:43:28「Rangeメソッドは失敗しました」
と文句言われますが、どうすればいいのでしょう!?
Range("A7:R120").Select
Application.CutCopyMode = False
Selection.Sort _
Key1:=Range("A7"), _ ★
Order1:=xlDescending, _
Header:=xlGuess, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin
0742デフォルトの名無しさん
2009/03/21(土) 18:37:57frmMain 実行中に、フォームの右端をドラッグして大きさかえると、Resizeイベントが発生するまではいいんだが、
その後 frmMain.ScaleWidth や、frmMain.Width などを取得してみると大きさ変更前の値しか出てこないんだよ。
なにか足りない部分があるのでしょうか?
0743742
2009/03/21(土) 18:45:53VBのウイザードからある程度メニューやツールボックスが揃ったプロジェクトではじめていたので、
Set fMainForm = New frmMain
と標準モジュールからフォームオブジェクトが開かれてました。
初心者に意地悪なつくりでした。
0744デフォルトの名無しさん
2009/03/29(日) 21:05:14Yの値が0となってしまいます。どうしてでしょうか?
0745デフォルトの名無しさん
2009/03/29(日) 22:02:14再現
できる
最小の
コードを
出してくれ
0746デフォルトの名無しさん
2009/03/29(日) 22:15:43Private Sub txtLesson_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
With txtLesson(Index)
If .Left <= X And X <= .Left + .Width And .Top <= Y And Y <= .Top + .Height Then
.Left = .Left + 2: .Top = .Top + 2
SetCapture txtLesson(Index).hwnd
Else
.Left = .Left - 2: .Top = .Top - 2
ReleaseCapture
End If
End With
End Sub
いろいろ省きましたが、デバッグ中にIf文のところでYにポイントするとY=0と表示されます。
Xは通常どおり取得できます。
もうこれはコードの問題じゃないのではないかと思うのですが、どうでしょう?
0747デフォルトの名無しさん
2009/03/29(日) 22:37:02上下左右どこから移動してもY=0なんだよな?
0748デフォルトの名無しさん
2009/03/29(日) 22:38:180749デフォルトの名無しさん
2009/03/29(日) 23:47:10それは「再現できる最小のコード」じゃないぞ
0750デフォルトの名無しさん
2009/03/30(月) 05:21:48うわーすみませんでした。そんなオチでした。
>>748
そうですよね。次回からそうしてます。有難うございました。
>>749
一応全体で何をやろうとしてるかも、伝わったほうがいいかなと思ったのですが、最小ではないですよね。
皆さん有難うございました。どうも僕はX, Yの値がテキストボックス上の値でなく、
それを含むウィンドウ上の値であると勘違いしていた模様です。
おかげで解決できました。どうもありがとうございました。
0751デフォルトの名無しさん
2009/04/02(木) 18:46:38するんだ。あんなん何の意味があるんだ。
0752デフォルトの名無しさん
2009/04/02(木) 20:24:17QBなどからの代々の互換性というか、いきあたりばったりというか、その場しのぎの言語仕様なんだから
0753デフォルトの名無しさん
2009/04/03(金) 00:53:260754デフォルトの名無しさん
2009/04/03(金) 02:07:330755デフォルトの名無しさん
2009/04/03(金) 17:18:15イベントドリブンなコード書いたこと無いの?
0756デフォルトの名無しさん
2009/04/04(土) 01:40:09ベントウドンブリなコード書いたこと無いの?
0757デフォルトの名無しさん
2009/04/06(月) 11:33:02しかし、やろうとすると以下のエラーが出ました。
実行時エラー'5' プロシージャの呼び出し、または引数が不正です。
呼び出す部分のコードは以下の通りです。
VB2005で作成したexeを、仮に"VB2005App.exe"とし、そのexeはVB6.0で作成したアプリのexeと同じ階層に居るものとします。
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal blnheritHandle As Long, ByVal dwProcessId As Long) As Long
Dim IDProcess As Long
Dim hProcess As Long
Private Const PROCESS_QUERY_INFORMATION = &H400&
IDProcess = Shell("VB2005App.exe", vbNormalFocus)
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 1, IDProcess)
AppActivate IDProcess
色々と調べたつもりですが、Shell関数の第1引数のパスはちゃんと合っていました。
ちなみに、VB6で作ったexeをshell関数で呼び出す場合は、何の問題もなく上記の方法で呼び出せました。
しかしなぜVB2005で作ったexeだとだめなのか、見当が付かない状況です。
どうかご回答を頂けたらと思います。
0758デフォルトの名無しさん
2009/04/06(月) 13:51:040759デフォルトの名無しさん
2009/04/06(月) 14:41:10WaitForInputIdleがオンになるタイミングとActive可能なフォームが表示されるタイミングが
違ってる場合はAppActivateはエラーになる。
.NETのアプリはその例。
shellやAppActivateは使わずに全部Win32APIで書けば対応できるはず。
0760デフォルトの名無しさん
2009/04/06(月) 15:37:30のですが、関数の後ろに%が付いているのは何の意味でしょうか?
例えば下記のような感じ
Call DatInit%
DatInit()という自作関数を呼び出すときにこんな風に書く場合です。
0761デフォルトの名無しさん
2009/04/06(月) 15:59:13調べ方が足りない。型宣言文字
0762デフォルトの名無しさん
2009/04/06(月) 16:32:05�dクス。型宣言文字自体は知ってましたがまさか関数にくっつくとは・・・
戻り値が整数って事?
C++みたいなキャスト目的って事でいいでつか?
(まかり間違って長整数が返ってきてオバフロするのが嫌だから確実に整数にしとく、
みたいな)
0763デフォルトの名無しさん
2009/04/06(月) 16:38:420764762
2009/04/06(月) 16:55:490765デフォルトの名無しさん
2009/04/06(月) 17:31:210766デフォルトの名無しさん
2009/04/07(火) 00:45:56送信しようとすると時々VB自体がフリーズして強制終了するハメになります
プロセス見るとVB6.EXEがあり終了することが出来ません
フリーズする原因がわかりません。よろしくお願いします
0767デフォルトの名無しさん
2009/04/07(火) 00:46:480768デフォルトの名無しさん
2009/04/07(火) 09:09:02自己解決なんかしてないぞ。
くだスレなのに意地悪だねぇ
0769757
2009/04/07(火) 10:00:54ありがとうございました。
0770デフォルトの名無しさん
2009/04/08(水) 15:14:51VBでGSDを使用しようと思い試行錯誤中なのですが、いまいちテクスチャー作成
の部分でつまづきます。
VBで型などのポインタ受け渡しに悪戦苦闘しています。
まず、サンプルにあるテクスチャ作成・設定を行おうとCの本片手に変換しているのですが
動いてくれません。
どうかご教授お願いいたしたく思います。
GSD
ttp://mosax.sakura.ne.jp/fswiki.cgi?page=GSD
サンプル
ttp://coderepos.org/share/wiki/GSD
0771デフォルトの名無しさん
2009/04/08(水) 15:53:54なんとなくサンプル見たらDeclareしてVarPtrで普通にいけそうなんだけど
0772デフォルトの名無しさん
2009/04/09(木) 11:11:15VB6.0とVSSをインストールしてあるのですが
VB6.0上でVSSを使用しファイル管理をするには
まず何をしたらいいのでしょうか・・・?
0773デフォルトの名無しさん
2009/04/09(木) 12:08:25勉強する気がないならプログラミングなんてやめちまえ
0774デフォルトの名無しさん
2009/04/09(木) 12:45:21プロジェクトをVSSに追加するとこから
あとはVBの中からチェックアウト/インできる
0775デフォルトの名無しさん
2009/04/09(木) 12:51:240776デフォルトの名無しさん
2009/04/09(木) 19:24:54それともフォーカスされると自動的にgotfocusが呼び出されるの?
0777デフォルトの名無しさん
2009/04/09(木) 19:54:37対象のコントロールにフォーカスが移動した時に呼ばれるよ
実際に試してみると良いよ
呼び出されなくて悩んでるなら何のコントロールにどういうコードを書いてるのか
教えてもらわないと何も言えない
0778デフォルトの名無しさん
2009/04/09(木) 21:20:57ありがとう〜
フォーカスの仕方によって、フォーカス対象のラベルが二通りに変動する処理を作ろうかと思ってて質問しますた
ある時はラベルにAと表示して、またある時はラベルにBを表示する みたいに
0779770
2009/04/10(金) 04:13:24レスありがとうございます。色々四苦八苦していました。
GSD_GetTexture(0, &info);
↓
Call GSD_GetTexture(0, ByVal VarPtr(Ginfo))
この様な感じでVarPtrでポインタをを指定しているのですが戻りが返ってきません。
他のバージョン取得等は戻り値が帰ってくるのでdll自体は使えてると思うのですが・・・
色々調べてみようと思います。
0780デフォルトの名無しさん
2009/04/10(金) 09:18:12Ginfoのバイト数とかはC++のそれと同じにしてるんだろうか とか・・・
詳しい動作の話になるとやってみないと突っ込めないけど
0781デフォルトの名無しさん
2009/04/10(金) 11:28:45マニュアルでは
struct GSD_TextureInfo
{
BOOL active;
DWORD texSize;
int x, y;
DWORD color;
DWORD align;
BYTE *data;
};
とありましたので
Private Type GSD_Info
GSD_Active As Boolean
GSD_TexSize As Long
GSD_X As Integer
GSD_Y As Integer
GSD_Color As Long
GSD_Align As Long
GSD_BYTE() As Byte
End Type
と置き換えました。
最後のByteは「テクスチャを格納したバッファへのポインタ」と書いてました。
0782デフォルトの名無しさん
2009/04/10(金) 21:28:58あとBYTE*もLongにして、コード中で別の配列変数からVarPtrで取得した値を代入するしかないと思う。
ところで元と名前を変えるのキモい。
0783デフォルトの名無しさん
2009/04/10(金) 22:57:02ありがとうございます。早速やってみようと思います。
>ところで元と名前を変えるのキモい。
すみません・・・以後気をつけます
0784770
2009/04/11(土) 04:40:18Private Type GSD_Info
active As Boolean
texSize As Long
x As Long
y As Long
color As Long
align As Long
data As Long
End Type
---
Dim Ginfo As GSD_Info
Dim GByte(256) As Byte
Ginfo.data = VarPtr(GByte(0))
Call GSD_DataLock
Call GSD_GetTexture(0, ByVal VarPtr(Ginfo))
とし、Ginfo.texSizeを取得しても戻って来るはずのテクスチャサイズが
戻ってきませんでした。
置き換えって難しいですね・・・更に試行錯誤してみます。
0785デフォルトの名無しさん
2009/04/11(土) 08:10:46GetTexture
の宣言文どうなってるの?
0786770
2009/04/11(土) 12:03:47BOOL GSD_GetTexture(int index, struct GSD_TextureInfo *info);
とマニュアルに記載いたしておりましたので
Private Declare Function GSD_GetTexture Lib "gsd.dll"
(GSD_Index As Long, GSD_TextureInfo As Long) As Long
といたしました。
0787デフォルトの名無しさん
2009/04/11(土) 13:58:30ByVal 指定がないじゃん。
0788デフォルトの名無しさん
2009/04/11(土) 20:26:58Private Declare Function GSD_GetTexture Lib "gsd.dll" (ByVal index As Long, ByRef info As GSD_Info) As Long
0789デフォルトの名無しさん
2009/04/11(土) 23:02:100790デフォルトの名無しさん
2009/04/12(日) 00:03:06ちょいまち
Err.RaiseもRaiseEventもQBにはないよ、と揚げ足をとる。
0791デフォルトの名無しさん
2009/04/12(日) 00:09:32QBだけの話じゃない事すら見えていない
人間のクズだ
ゴミだ
何故おまえはここにいる
お前の目は飾り物か
ガラスの玉でも入れておけ
お前の頭は帽子のスタンドか
帽子すら置けない役立たずか
0792デフォルトの名無しさん
2009/04/12(日) 08:07:130793デフォルトの名無しさん
2009/04/13(月) 23:18:04そもそもどちらもRaiseではあるけど、
まったく別の用途だから並んでることにすごい違和感を覚える。
クラス間連携でRaiseEventを使わざるを得ないこともあるし、
On Error Resume Next で拾わざるを得ない処理は Err.Raise 必須だし、
どちらも一般的に使いそうなもんだけどなぁ。
0794デフォルトの名無しさん
2009/04/14(火) 09:45:23俺もそう思う
0795デフォルトの名無しさん
2009/04/14(火) 18:21:00それからDoObj.RunSQLでSQL設定しています。
ところが、accessをoffice2007に変更すると、
GetObjectのところでunknown errorになってしまいます。
何かDLLか足りないみたいですが、ググっても
見つかりませんでした。どなたかヒントあったら下さい。
お願いします。
0796デフォルトの名無しさん
2009/04/15(水) 02:28:57VBで作ったスケジュール管理システムを、ネットを使って外からスケジュールをアップデートできるようにしたいんですけど
VBをHTMLでネット経由で動かす方法がまったくわかりません(´・ω・`)
学校の一学期使ったプロジェクトレベルのシステムなので、そんなに複雑じゃないので十分です。
自分はHTML担当で、VBを稼動ブラウザか何かで稼動させなくちゃならないのですが、
知識が無さ過ぎて何をググって良いのかも分からないっす(><)
何か良いページでもあったら、教えてくださいm(_ _)m
0797デフォルトの名無しさん
2009/04/15(水) 02:53:150798デフォルトの名無しさん
2009/04/15(水) 03:04:48>CGIとしてVBプログラムを動かしたいって事?
おそらくこれです!
MSISSとOracleとVBとAccessでスケジュール管理システムを構築するのですが、
利用者が自宅からスケジュールをチェックしたり更新したりする必要があるので
そのインターフェースをHTMLで。との事です。
0799デフォルトの名無しさん
2009/04/15(水) 03:09:250800デフォルトの名無しさん
2009/04/15(水) 03:12:14どうもありがとうございます!
逝ってきますノシ
0801デフォルトの名無しさん
2009/04/15(水) 03:32:05>>788
助言ありがとうございました。
あれから色々試してみたのですが、どうもダメでした・・・
せっかく教えて下さったのに申し訳ありません。
0802デフォルトの名無しさん
2009/04/15(水) 10:34:13IIS使えるならASPで
0803デフォルトの名無しさん
2009/04/15(水) 10:46:32でもhttpdはCGIを呼ぶ側だろ
httpdもWinsockなどを使えば当然作れる
0804デフォルトの名無しさん
2009/04/15(水) 11:01:55Cで書いた方が早くね?
0805デフォルトの名無しさん
2009/04/15(水) 12:25:460806デフォルトの名無しさん
2009/04/15(水) 16:51:070807デフォルトの名無しさん
2009/04/15(水) 23:26:480808796
2009/04/16(木) 01:26:57自分達はプログラマーじゃなくて、システム管理のクラスをとってるだけなんです(´・ω・`)
VBとSQLの基礎をちょっとやった事があるくらいのレベルなのに、
自分達でシステムをくみ上げなければいけないと言うクレイジーな状況でして・・・。
自分もHTMLのHPくらいは作った事あるけど、データを扱うとか皆目検討が付かないorz
一応ソースの一部を提供されてるんですけど、何がなにやら。
ソースの一部です。
<body lang=EN-US style="tab-interval: .5in">
<form ACTION = "/cgi-bin/Demo1" METHOD =GET>
<p>Type a word in each box, then press the Submit button
<p>
<p><INPUT TYPE="text" NAME="Field1" VALUE></p>
<p><INPUT TYPE="text" NAME="Field2" VALUE></p>
<p><INPUT TYPE="submit" VALUE="Submit Message"></p>
<p>
<p>
The button will call the VB program Demo1.exe
</form>
</body>
0809デフォルトの名無しさん
2009/04/16(木) 01:34:23がんばれよ
0810デフォルトの名無しさん
2009/04/16(木) 01:38:03何か参考になるサイトの紹介でもいいんで、助けてプリーズ・・・orz
0811デフォルトの名無しさん
2009/04/16(木) 01:42:17exe → asp
にかえてもらえ。
たいしてかわらんだろ。
0812796
2009/04/16(木) 01:48:42あ、できると思います。
あくまで参考のソースなんで、使っても使わなくてもいいらしくて。
最終的には「ちゃんと動けばいい」くらいの話なんで。
質問には答えるけど、自分達で調べて勉強しろよー。と言う
千尋の谷に突き落とすと言う名の半手抜き講義っす(# ^ω^)
0814デフォルトの名無しさん
2009/04/16(木) 23:34:280815デフォルトの名無しさん
2009/04/18(土) 10:05:03実現できる dhtmled.ocx(AvtiveX)が便利なのですが、
なにやrら、ネットに接続した場合脆弱性の問題が生じるとか。
その問題はWindowsXP環境だと最新にアップデートしてあれば
クリアできる?
0816デフォルトの名無しさん
2009/04/18(土) 10:36:26そもそもこんなところで聞いて「クリアできる」って答えが返ってきたら、君はそれを信用するのか?
だとしたらソフトやコンポのセキュリティー以前に、君の思考セキュリティーに問題有りだ。
逆に信用しないなら、聞くこと自体意味がない
0818デフォルトの名無しさん
2009/04/19(日) 02:20:53VBのキーワードのおおらかさ(笑)を言い出したら、
N-BASICの時点でGETがグラフィックだったりファイルIOだったり
するしなあ・・・
いまじゃファイルIOとプロパティかw
0819デフォルトの名無しさん
2009/04/19(日) 17:17:49のようにオーナーフォームを指定して呼び出した場合に
Form2のForm_Loadでオーナーフォームを取得する方法を教えてください。
手続き的にはForm2にグローバルプロパティとか作って、Showの後に直接Form1を渡せば
Form2側でForm1を取得すること自体は出来ますが、そういう方法ではなくForm2から辿る方法を知りたいです。
FormオブジェクトのメンバにOwnerFormとかParentObjectとか有るかなと思ったけど無いようだし、
GetWindowLongのGWL_HWNDPARENTでは、ThunderRT6FormDC(フォーム)ではなくThunderMainが取得されてしまい
他に有用なAPIも見あたらないです。
ThunderRT6FormDCを列挙するだけなら出来ますが、どれがオーナーフォームに設定されてるか
或いはオーナーフォーム指定無しで呼び出されているのかを取得するにはどうすれば良いのでしょうか?
0820デフォルトの名無しさん
2009/04/19(日) 18:02:38ハンドルが取れればFormsで列挙して探せるんじゃないのかな。
でも、オーナーを指定して表示&オーナーフォームの取得ができるフォームの
インターフェイスを定義してそれを実装する方が簡単な気もする。
しかし、VBってそんなプロパティもなかったんだっけ。
0821デフォルトの名無しさん
2009/04/21(火) 20:40:14新規にプロジェクトを作成すると「IISかPWSが必要です」とエラーが表示されてしまいます。
IISはインストール済みなのですが他にも必要なものがあるのでしょうか?
OSはWindows2000Proです
よろしくお願いします。
0822デフォルトの名無しさん
2009/04/21(火) 22:01:24IISのバージョンが新しすぎる。VB6時代の古いのが必要。
0823デフォルトの名無しさん
2009/04/22(水) 00:26:25ここで指定できる色を書き換えるのってどうやるんだっけ?
以前何処かで見たんだが、そのときは「へぇ、こんな事も出来るんだぁ」くらいにしか思ってなかったが
今になってどうしてもやりたくなったので、知ってる人が居たら教えてください
0824デフォルトの名無しさん
2009/04/28(火) 00:26:49クラスモジュールの説明をしてる本って無いんか。
VB4〜6の本やExcel VBAの本やWord VBAの本で、いずれも見たことが無い。
VBをほったらかして、別のプログラム言語を学習してたので、その知識を応用
すれば、理解できるようになった。
VBで直接クラスモジュールの学習をしたことが無い。
Visual C++人の作ったソースファイルだから、C++言語の学習しといて正解だった。
正しくVB用語使ってくれないからな。そのせいで、危うく理解不能で仕事失格になる
ところだったぞ。ユーザー定義型を構造体って言ったり、オブジェクトの参照のこと
をポインタと言ったりするのは、まだCにもあるから序の口だが、メンバ関数とか、
コンストラクタとか、デストラクタって言葉はC++の用語だということを後から知った。
クラスモジュールは上級者用の本なら載ってるんかいな。
0825デフォルトの名無しさん
2009/04/28(火) 00:33:430826デフォルトの名無しさん
2009/04/28(火) 00:34:120827デフォルトの名無しさん
2009/04/28(火) 00:39:170828デフォルトの名無しさん
2009/04/28(火) 00:42:53> をポインタと言ったりするのは、まだCにもあるから序の口だが、メンバ関数とか、
> コンストラクタとか、デストラクタって言葉はC++の用語だということを後から知った。
世の中と違う用語(MS俺様用語)を使うのはVBくらいのもので、それ以外の言語では
どこいっても通じるんですよ。
0829デフォルトの名無しさん
2009/04/28(火) 00:43:450830デフォルトの名無しさん
2009/04/28(火) 00:44:36ググるの面倒だから勝手に探して
0831デフォルトの名無しさん
2009/04/28(火) 02:05:310832デフォルトの名無しさん
2009/04/28(火) 02:08:18何故それを強要するの?
0833デフォルトの名無しさん
2009/04/28(火) 20:18:49変数名は短く略語で大文字で。
クラスモジュールは言語オタクの為の機能だから禁止。
0834デフォルトの名無しさん
2009/04/28(火) 20:34:12しぬの?
0835デフォルトの名無しさん
2009/04/30(木) 08:54:03環境:VB6 SP6@XP Pro SP3
・リッチテキストボックスかテキストボックス内で、改行のみの行を削除したいです。
=========
あいうえお
かきくけこ
←改行のみの、この行を削除
←上に同じ
さしすせそ
=========
以上、どうかよろしくおねがいします。
0836デフォルトの名無しさん
2009/04/30(木) 09:03:52if( 項目 = vbcrlf) then
とかではじけばいいじゃないか・・・・
0837デフォルトの名無しさん
2009/04/30(木) 10:32:46ってことだから、vbCrLfの連続をvbCrLf単一に置換すれば良いだけでしょ
正規表現使えば、2個以上→1個を一発で出来るし
2個→1個でループ回せば、正規表現無しでも出来る
0838835
2009/04/30(木) 10:36:51レスありがとうございます。
一気に>>835に書いた例で取り込んでしまっているのです。
>>873
レスありがとうございます。
ループの方で試してみたいと思います。
ありがとうございました。
0839デフォルトの名無しさん
2009/04/30(木) 10:55:54俺はVB使いじゃなくてVBAなのだが、VBAじゃAs Integer()としないと動かないんだが。
もっともExcelのユーザー定義関数として使うなら引数もInteger型にしないと動かないけど。
動く動かないはおいといてByte型はないと思うな。
これって数値に使う型じゃねーもんな。
Function fnc(ByVal a As Byte, ByVal b As Byte) As Integer
Dim ar(1) As Integer
ar(0) = a + b
ar(1) = a - b
fnc = ar
End Function
ここに書いてあった。
http://oshiete1.goo.ne.jp/qa3511531.html?from=navi_ranking
0840デフォルトの名無しさん
2009/04/30(木) 11:43:05↓
> すみません Ano3です
> 関数宣言の As Integer は As Integer() でした
って補足回答ついてるじゃん
> これって数値に使う型じゃねーもんな。
数値に使う型だよ
バイナリってのが0〜255の正数の配列だから
0〜255の正数を扱うByte型を配列にした物が、バイナリの格納にも利用されるってのが正しい解釈で
Byte型ってのがバイナリ用なわけではなく、あくまでもByte型は数値を扱う型ね
0841839
2009/04/30(木) 12:23:07補足見落としてたのか。
Byte型を数値計算に使うべきじゃないと思うけどな。
そこは考え方の違いとしてもfnc(255,1)はオーバーフローするな。
0842839
2009/04/30(木) 12:30:21なので見落としたのか。
Ano3じゃないもんな。
0843デフォルトの名無しさん
2009/04/30(木) 12:38:15使うべきか使うべきじゃないかなんて話は一言もしてないよ
Byte型が数値に使う型か否かって話をしただけだ
君が「この場合は相応しくない」という状況に応じた話ではなく
「(Byte型は)数値に使う型じゃねー」という定義付けの話をしたから俺も定義付けの話をした
そのユーザー提議関数で使うべきか否かって話なら、俺の意見も「使うべきじゃない」だ
>>842
A no 3 じゃん
[A]nswer(回答)
[No](ナンバー)
[3]番目
0844デフォルトの名無しさん
2009/04/30(木) 12:45:49別にユーザー定義関数として使わなくてもByte型はないと思うな。
「数値に使う型じゃねー」じゃなくて「数値計算に使う型じゃねー」って書けばよかったかな?
Ano3は俺も書いた後気がついた。
あそこは初めてなのでそんな使い方するとは知らなんだ。
0845デフォルトの名無しさん
2009/04/30(木) 13:09:07おそれすだけど
SPLIT使って配列にしてしまえば?
対象は改行で
改行が
CRLとCRLF交るとか言うならREPLACEでやってからとか
配列にしときゃぁどうにでもなるっしょ?
0846835
2009/04/30(木) 15:03:22レスありがとうございます。
改行コードはCR+LFなので、Splitでも試してみたいと思います。
どうもありがとうございました。
0847デフォルトの名無しさん
2009/05/08(金) 00:04:49「WINWORD.EXE /a」の様に、起動スイッチを付加して
applicationオブジェクトを生成することは可能なのでしょうか?
ご教示お願いします。
0848デフォルトの名無しさん
2009/05/08(金) 00:07:11無理。起動してから GetObject() とかでどう?
0849デフォルトの名無しさん
2009/05/08(金) 08:41:35なるほど、GetObjectですか。試してみます、ありがとうございます!
0850デフォルトの名無しさん
2009/05/08(金) 14:05:17VB6のプログラムを修正することになり、
試行錯誤で頑張っているのですが、
どうしても情報が少なくて行き詰ってしまいました、
ここの皆様のお知恵を貸して頂けますでしょうか
アナログモデムを使って、遠隔地のデータセンターと接続し、
ベーシック手順でデータの送受信を行う
そんなことがVBでできるのかすらわからないのですが、
調べた情報として
グレープシティの「PowerTools ActiveComm」という製品で、
モデムを使った送受信ができそう
というところまでで、行き詰ってしまいました
この製品で大丈夫なのか、遠隔地との接続はどうするのかなど、
まだわからないことばかりですが、
何卒、宜しくお願いいたしますm(__)m
0851デフォルトの名無しさん
2009/05/08(金) 14:22:150852デフォルトの名無しさん
2009/05/08(金) 20:49:45全銀ベーシック手順なら、通信してテキストファイルに落してくれるパッケージ買った方が早いと思う。
0853デフォルトの名無しさん
2009/05/08(金) 21:01:53それにMSComm任せなら十二分に敷居は低い
0854デフォルトの名無しさん
2009/05/11(月) 00:30:39VB.NETでいうところのScreen.GetBoundsにあたるやつです。
VB6ではできない、など助言をいただけますと助かります。
どうぞよろしくお願いします。
0855デフォルトの名無しさん
2009/05/11(月) 00:37:490856デフォルトの名無しさん
2009/05/11(月) 00:52:49情報小出しですいませんでした。
プライマリとセカンダリのディスプレイがある構成で、
セカンダリの方の解像度が知りたかったのです。
Screen.Widthですとメインのディスプレイしか取得できませんでした。
現在フォームがあるディスプレイの解像度を取得することで
セカンダリの解像度わかるはずと思ったのですが、
VB.NETのScreen.GetBoundsの情報しかなかったため質問させていただきました。
なんとか実現する方法はありませんでしょうか。
0857デフォルトの名無しさん
2009/05/11(月) 01:02:110858デフォルトの名無しさん
2009/05/11(月) 01:20:500859デフォルトの名無しさん
2009/05/11(月) 01:30:27>>858
アドバイスありがとうございます。
フォームのあるモニタのハンドルを取得(フォームをサブモニタ位置に移動してから)
MonitorFromWindow
モニタの情報を取得
GetMonitorInfo
でサブモニタのbottom,left,right,top座標を取得することができました。
マジ感謝しております。
ありがとうございました。
0860850
2009/05/11(月) 09:28:13返信ありがとうございます
MSCommで調べてみたところ、解決できそうな気がしてきました
ありがとうございました
0861デフォルトの名無しさん
2009/05/13(水) 07:53:34Dim s As String
c = RGB(&H12, &H34, &H56)
s = _
"R: " & Right("00000000" & Hex(c And &HFF), 8) & vbCrLf & _
"G: " & Right("00000000" & Hex(c And &HFF00), 8) & vbCrLf & _
"B: " & Right("00000000" & Hex(c And &HFF0000), 8)
MsgBox s
と書いて
R: 00000012
G: 00563400
B: 00560000
が表示されるんですが
G を 00003400 として加工するにはどうすればいいですか?
0862デフォルトの名無しさん
2009/05/13(水) 08:48:500863デフォルトの名無しさん
2009/05/13(水) 18:56:04ありがとうございました
おかげで希望通りの文字列が取得できました
しかし理解力に乏しいのでまだよくわかりません
>>861で書いた c And &HFF00 の時点で(1)の結果を期待してましたが実際には(2)です
Andでどういう風に演算されているのでしょうか?
00000000 01010110 00110100 00010010 (&H563412)
00000000 00000000 11111111 00000000 (&HFF00)
-------- -------- -------- -------- And
00000000 00000000 00110100 00000000 (&H3400)..........(1)
00000000 01010110 00110100 00000000 (&H563400)..........(2)
0864デフォルトの名無しさん
2009/05/13(水) 19:20:22ウォッチウィンドウで&hff00を入れてみると、Integer型で-256と解釈されていることが分かる。
-256を符号拡張すると&hfffffff00になるというわけ。
0865デフォルトの名無しさん
2009/05/13(水) 20:22:00ありがとうございます
確かにIntegerとして扱われてました
おかげでなぜうまくいかないのか把握できました
0866デフォルトの名無しさん
2009/05/18(月) 08:55:14VBでプログラムのデバッグをしたいのです。
エラーを発生させて確認したいのですが
イミディエイトウインドウにうちこむ
Err.Raiseを使うときの引数の渡し方がわかりません。
Err.Raise(゙゙,゙゙,゙゙,゙゙)
それぞれどう設定すればいいのでしょうか。
画面番号やヘルプテキストなど。
あと、Callなどを付けずに、Err.Raiseだけいれてエンターキー押せばいいのですか?
よろしくおねがいします。
0867デフォルトの名無しさん
2009/05/18(月) 23:42:37Err.Raise エラー番号
ex) Err.Raise 9
---------------------------
Microsoft Visual Basic
---------------------------
実行時エラー '9':
インデックスが有効範囲にありません。
---------------------------
OK ヘルプ
---------------------------
まぁ、ヘルプくらい嫁
0868デフォルトの名無しさん
2009/05/19(火) 13:11:46解答ありがとうございます。
Err.Raise 9
を入力したのですが、
エラーを発生させて、あらかじめラベルを貼った
Errorラベルにデバッグで移動をしないのです。
やりたいのは
On Error GoTo Error1
処理〜
Error1:
エラーメッセージ出力
これでF8キーで実行してデバッグ中に
Err.Raiseを使用して、Error1ラベルに移行したいのですがうまくいきません。
コードを編集せず、イミディエイトウインドウで行いたいのです。
よろしくおねがいします。
0869デフォルトの名無しさん
2009/05/19(火) 14:15:140870デフォルトの名無しさん
2009/05/19(火) 20:40:34はい。
何らかの処理でエラーが発生してErrにコードが設定されますよね。
例;ファイル書き込み異常など。
その時に、予め設定しておいたエラー処理に移行するのですが、
それをデバッグ中に、コードや環境をいじらず行いたいのです。
Err.Raiseで起こせると過去のログで読んで試したのですが、うまくいかず。
イミディエイトウインドウに教えていただいたコードを設定したのですが、
ポップアップウインドウは出るのですが
エラー処理に移行しないので。
その方法を教えてもらいたいのです。
ソースは、引数のない関数を呼び出しているだけなので、
環境でエラーを起こす方法が、それ以外なくて困っています。
よろしくお願いします。
0871デフォルトの名無しさん
2009/05/19(火) 22:11:31でいいんじゃね?
0872デフォルトの名無しさん
2009/05/19(火) 22:18:540873デフォルトの名無しさん
2009/05/19(火) 23:26:01小学生か??ほんとにヘルプ嫁と何度言ったら(ry
Private Sub Form_Load()
On Error GoTo Label1
Err.Raise 8
End
Label1:
MsgBox ("Label1")
End Sub
0874デフォルトの名無しさん
2009/05/19(火) 23:27:140875デフォルトの名無しさん
2009/05/20(水) 09:49:28記載しましたが、コードにErr.Raiseを仕込む事なく行いたかったのです。
試行錯誤した所、イミディエイトでエラーを起こす事で例外を発生の後にErrorラベルへの移行ができました。
以下、Yahoo知恵袋にて見つけた記載を転記。
イミディエイトでErr.Raise
↓
マウスでドロップ ←これを知りたかった
後で同じ質問が出た時のために残しておきます。
0876デフォルトの名無しさん
2009/05/20(水) 12:59:44う・・・うん・・・・
0877デフォルトの名無しさん
2009/05/20(水) 15:31:200878デフォルトの名無しさん
2009/05/21(木) 14:35:04(例えば一般的なHelloWorldでもいいので)
インストールしたばかりで何もしていないwindows2000マシンに入れて動きますか?
ランタイム入ってるんだろうか…
最悪はExecel2000を入れてもOKです。
ちょっと変な質問なのですが・・・情報が少なくって・・・
よろしくお願いします。
うちの会社にWin2000がもうないので・・orz
0879デフォルトの名無しさん
2009/05/21(木) 15:04:02TextBoxやLabel等しか使っていなければ動く
0880デフォルトの名無しさん
2009/05/21(木) 15:10:34古い話だからあまり記憶に無いが
0881デフォルトの名無しさん
2009/05/21(木) 15:17:13サンクスです。
ひとまずランタイムは標準最小構成が入ってるから
ライブラリ使わないなら何とか動く感じですが色々問題がありそうですね。
ありがとうございました。
0882デフォルトの名無しさん
2009/05/21(木) 15:49:55Msvbvm60.dllとVb6jp.dllがあれば、
標準コントロールのみで参照設定使ってないアプリは動く
あとは使用するコントロールやCOMに応じてdllなりocxなりが必要になる
Msvbvm60.dll、Vb6jp.dllや、コントロールのocxはシステムにインストールしなくても
exeと同じディレクトリに入れておけば大抵動くよ
但しVB6のProfessional以上のライセンスを持ってないと、同梱配布は出来ないけどね
COMの場合はレジストリに登録しないとダメだがな
0883デフォルトの名無しさん
2009/05/21(木) 17:31:09ご丁寧な補足説明ありがとうございます。
Professionalなのでそこは問題がなさそうです。
一回は実際に入れる前にどこかで実験しなけりゃいけないなぁ…・
2000は1つくらい残しておいてほしかった
0884デフォルトの名無しさん
2009/05/21(木) 19:09:220885デフォルトの名無しさん
2009/05/21(木) 19:47:46MS UI ゴシックは文字化けして、
なぜか MS ゴシック 9 ポイント にすると、文字化けしないんだよね。
化けるなら全部化けるだろ、と思うんだが、
上記設定だと化けない謎。
0886デフォルトの名無しさん
2009/05/22(金) 18:38:49最小ランタイムで動かすようなものなら他の言語も検討してはどうか
0887デフォルトの名無しさん
2009/05/23(土) 12:03:42俺もそれで悩んだんだけど、各コントロールに明示的にUIゴシックを
設定するとちゃんと表示された
初期状態でUIゴシックになってるのはフォントのプロパティに何も設
定されていなくて、環境依存のデフォルトフォントで表示されるため
らしい。
フォームのソース見ると分かるよ
0888デフォルトの名無しさん
2009/05/23(土) 12:04:59察してやれよ
VB6の人に他の環境使えっていってもムリな話
0889デフォルトの名無しさん
2009/05/23(土) 16:12:54ドロップダウンコンボでリストから何かを選択したら、選択したものを
リストの一番上に移動するというのをやりたくて以下のようなコードを書いたのですが、
何故か選択した後、コンボボックスの内容表示( .Text )が空になってしまいます。
2〜3で入れ替えを行い、2で消えてしまった表示を4で補完するという流れなのですが
ステップ実行してみると、4が実行されたときにちゃんと選択文字列がコンボボックスに
表示されるのですが、End Subが実行されると何故か消えてしまいます。
原因と解決方法を教えてください。
Private Sub Combo1_Click()
Dim buf As String
'1 選択項目の文字列を保持
buf = Combo1.Text
'2 選択項目を削除
Combo1.RemoveItem Combo1.ListIndex 'ここで一端コンボボックスの内容表示は空になる
'3 一番上に追加
Combo1.AddItem buf, 0
'4 選択項目の文字列を表示
Combo1.Text = buf ' ステップ実行ではここでちゃんと表示される
End Sub ' 何故かここで再度表示が消える
Private Sub Form_Load()
Combo1.AddItem "aaa": Combo1.AddItem "bbb": Combo1.AddItem "ccc"
End Sub
0890デフォルトの名無しさん
2009/05/23(土) 21:51:49いま、VB6 をインストールしてないので Excel 2003 で上記のコードを動かしてみた。
ちゃんと動いたよ。もしかして、Combo1_Change() プロシージャのない?
Combo1.RemoveItem を実行したときに Combo1_Change() を実行してしまうのが
原因かもしれない。はずれてたら、ごめん。
0891デフォルトの名無しさん
2009/05/23(土) 21:53:51Combo1_Change() プロシージャのない? → Combo1_Change() プロシージャが存在してない?
対策は、考えてみて。(はずれてたら、ごめん。)
0892デフォルトの名無しさん
2009/05/23(土) 22:02:37可能性としては、Combo1.Text を実行したときに Combo1_Change() が呼ばれている方が
濃厚だね。
解決法は、要求してないイベントを起こさないようにするか、Combo1_Click() から
Combo1_Change() を呼び出したときは、何もしないようにする。(なんか変数を用意する)
はずれてたら、ごめん。
0893デフォルトの名無しさん
2009/05/23(土) 23:15:32保持ってるやつを先頭に入れて他の項目挿入中に保持ってるやつを判定して再挿入を防ぐとか
0894889
2009/05/24(日) 05:21:25Combo1_Changeイベントは有りません。
当初、あるアプリを制作中にこの問題に行き当たり、確認のため新規プロジェクト(標準EXE)の
Form1にCombo1のみを配置して、コードも>>889に書いたForm_LoadとCombo1_Clickのみで
確認した上で問題が再現したので質問させて頂きました。
>>889で書いた他にコードが無い状況で発生しているということを書き忘れていたため、
余計な考察をさせてしまい申し訳有りません。
あと、Excel2003のユーザーフォームで確認しましたが、確かにExcelでは問題が再現しませんでした。
>>893
一度Clearして選択項目を先頭にAddItemしたあと、他の項目をAddItemしていくということですか?
Listを配列変数に保持して、再挿入されないようにAddItemしてみましたが結果は変わらずで、
項目の入れ替えは正常に行われますがコンボボックスの内容表示は空になってしまいます。
もちろん、選択項目をAddItemしたときに.Textも設定して、ステップ実行でその時点では表示されています。
他の項目をAddItemしている間も表示は消えず、End Subで表示が消えてしまいます。
上にも書いたとおり、他にイベントはありませんし、仮に合ってもブレイクポイントではなくステップ実行なら
影響を与えているイベントがあれば、その部分にステップするはずですが。
0895デフォルトの名無しさん
2009/05/24(日) 09:07:53Private blnRecursive As Boolean
Private Sub Combo1_Click()
Dim buf As String
If blnRecursive = True Then
Exit Sub
End If
'1 選択項目の文字列を保持
buf = Combo1.Text
'2 選択項目を削除
Combo1.RemoveItem Combo1.ListIndex 'ここで一端コンボボックスの内容表示は空になる
'3 一番上に追加
Combo1.AddItem buf, 0
'インデックスを指定するようにするので、コメントにした
'4 選択項目の文字列を表示
'Combo1.Text = buf ' ステップ実行ではここでちゃんと表示される
blnRecursive = True '再帰的に呼ばれるのを回避
Combo1.ListIndex = 0 'これをすると、Combo1_Click() が再帰的に呼ばれてしまう
blnRecursive = False
End Sub ' 何故かここで再度表示が消える
0896デフォルトの名無しさん
2009/05/24(日) 09:09:03blnRecursive = False '初期化
Combo1.AddItem "aaa": Combo1.AddItem "bbb": Combo1.AddItem "ccc"
End Sub
とりあえず、動くようにしたよ。
でも、原因はなんだろね。確かに、元プログラムでは、 End Sub するときに消えるね。
時間あったら調べとくよ。
# Excel 2003 では、再現しないんだねぇ。
# ちなみに >>890 でした。
0897890
2009/05/24(日) 21:24:07Private Sub Combo1_Click()
Combo1.Text = "Hello"
End Sub
Private Sub Form_Load()
Combo1.AddItem "aaa": Combo1.AddItem "bbb": Combo1.AddItem "ccc"
End Sub
ってことは、Click イベントではクリックして選んだんだから、選んだもの以外に変更するんじゃーねーよ
って事らしい。
もうすでに解決してるかな?
0898デフォルトの名無しさん
2009/05/25(月) 01:10:55何で消えるのかはCombo2の動きで感じ取れ
Private Sub Combo1_Click()
Static flg As Boolean
If flg Then Exit Sub Else flg = True
If Combo1.ListIndex > 0 Then
Combo1.AddItem Combo1.List(Combo1.ListIndex), 0
Combo1.RemoveItem Combo1.ListIndex
Combo1.ListIndex = 0
End If
flg = False
End Sub
Private Sub Combo2_Click()
Debug.Print "テキスト変更前"
Debug.Print "ListIndex:" & Combo2.ListIndex
Combo2.Text = "ccc"
Debug.Print "テキスト変更後"
Debug.Print "ListIndex:" & Combo2.ListIndex
Debug.Print
End Sub
Private Sub Form_Load()
Combo1.AddItem "aaa": Combo1.AddItem "bbb": Combo1.AddItem "ccc"
Combo2.AddItem "aaa": Combo2.AddItem "bbb": Combo2.AddItem "ccc"
End Sub
0899デフォルトの名無しさん
2009/05/29(金) 00:45:51コマンドプロンプトでの入出力を逐次行いたいと思っています。
以下のようなサンプルを書いてみたのですが、うまくいきませんでした。
ipconfigの結果の最後の行を取得したのち、
もう1行読みに行ってしまいそのまま処理戻り待ちになってしまいます。
この時コマンドプロンプトを手動で閉じると制御が戻り処理が再開されました。
何がいけないのでしょうか?
Dim objWShell As Object
Dim objExec As Object
Set objWShell = CreateObject("WScript.Shell")
Set objExec = objWShell.Exec("%ComSpec%")
objExec.StdIn.WriteLine "ipconfig"
Do Until objExec.StdOut.AtEndOfStream
Debug.Print objExec.StdOut.ReadLine
Loop
objExec.StdIn.WriteLine "Exit"
Set objExec = Nothing
Set objWShell = Nothing
0900デフォルトの名無しさん
2009/05/29(金) 01:36:03手動で閉じたときにエラー発生しなかった?
何でエラーになったか考えればこんな感じにたどり着くと思うよ。
objExec.StdIn.WriteLine "ipconfig" + vbCrLf + "Exit"
0901デフォルトの名無しさん
2009/05/29(金) 01:59:45助言ありがとうございます
その通りでした。
ですが、実のところ途中でExitしたくないのです
コマンドプロンプトを複数回呼び出すたびにウインドウが出てしまうためこれをさせたくないのです
元はといえば自由に操作可能なコマンドプロンプトを非表示で呼び出せれば良いのですが・・・
そのために考えたコードが上記のものでした
0902デフォルトの名無しさん
2009/05/29(金) 07:53:090903デフォルトの名無しさん
2009/05/29(金) 12:24:36パイプのようなものとは記号「>」でファイル出力するという意味でしょうか?
中間に入力などがあり分岐したい場合に対処できないと思ったのと
ファイルへの入出力を伴うのは処理速度がストレージ性能に依存するため避けたのですがどうでしょうか?
0904デフォルトの名無しさん
2009/05/29(金) 12:54:06などでぐぐれば多少は出てくるでしょうに、それすらしないんですか
0905デフォルトの名無しさん
2009/05/29(金) 13:07:49めんどくさいから素直に何がしたいのか書けよ
0906899
2009/05/29(金) 13:16:59ググって来ました
私が言っていたのはリダイレクトだったのですね、失礼しました
> 「標準入出力」というのは、ユーザーが何もしなくてもOSが「標準で」用意してくれる入力先・出力先のことです。
> 「リダイレクト」によって標準入出力をファイルに変更したり、
> 「パイプ」によってあるコンソールアプリの標準出力を別のコンソールアプリの標準入力につなげたり出来ます。
・・・このパイプのようなものを実際どう組み込んだらよいのでしょうか?
>>899ソースでobjExec.StdOut.ReadLineの場所で止まってしまう理由が分かりません
/cをつけて自動終了するようにして使うしかないのでしょうか?
StdInやStdOutをどのように捕らえたら良いのかお教え願えませんでしょうか?
0907デフォルトの名無しさん
2009/05/29(金) 13:24:060908899
2009/05/29(金) 13:34:33シェルの起動時間とはなんでしょうか?
CreateObjectの事でしょうか?
これは一度作成したのちずっと保持する予定なので気にしていません
コマンドプロンプトのExec呼び出しの事でしょうか?
こちらも一度しか呼び出さないようにして再利用する事を考えていて、その結果このような質問に至りました。
>何がしたいのか
いくつかのCUIアプリケーション(コンソールコマンドの結果)のGUI化です
ExecメソッドではStdIn、StdOutというもので制御が可能と知ったので、
これを使ってコマンドプロンプトもどきを作れないかと考えました。
これができればいろんなもののGUI化が出来るだろうと思いテストソースを書きました。
>>907
すいません
0909デフォルトの名無しさん
2009/05/29(金) 13:36:41まだ不満があるのか
0910デフォルトの名無しさん
2009/05/29(金) 13:37:100911デフォルトの名無しさん
2009/05/29(金) 13:40:52お前うぜーよ
URL貼る気ねーならくるな
0912デフォルトの名無しさん
2009/05/29(金) 13:46:280913899
2009/05/29(金) 14:04:21このあたりの事でしょうか?
ttp://msdn.microsoft.com/ja-jp/library/cc364385.aspx
一応MSDNのこのあたりは関連するキーワードのものを含め何度か読み返してはいたのですが、
前述の無反応になる件の答えが見出せず困っています・・・
アホですいません
Do Until objExec.StdOut.AtEndOfStream
の判定ではポインタが最後に到達していないはずなのですが
StdOut.ReadLineメソッドを呼び出すと処理が戻らず(エラーも出ず)待機してしまう理由がどうしてもわかりません
0914デフォルトの名無しさん
2009/05/29(金) 15:33:52ここではほのめかしの回答しかしない屑。
0915デフォルトの名無しさん
2009/05/29(金) 15:46:09Dim objWShell
Dim objExec
Set objWShell = CreateObject("WScript.Shell")
Set objExec = objWShell.Exec("%ComSpec%")
objExec.StdIn.WriteLine "ipconfig"
objExec.StdIn.WriteLine "exit"
Do Until objExec.StdOut.AtEndOfStream
MsgBox objExec.StdOut.ReadLine
Loop
0916デフォルトの名無しさん
2009/05/29(金) 16:07:08Dim objWShell' As Object
Dim objExec' As Object
Set objWShell = CreateObject("WScript.Shell")
Set objExec = objWShell.Exec("%ComSpec%")
objExec.StdIn.WriteLine "ipconfig"
objExec.StdIn.WriteLine "echo [[hoge]]"
Do Until objExec.StdOut.AtEndOfStream
Dim sLine' As String
sLine = objExec.StdOut.ReadLine
If sLine = "[[hoge]]" Then Exit Do
MsgBox sLine
Loop
If Not objExec.StdOut.AtEndOfStream Then objExec.StdIn.WriteLine "exit"
0917デフォルトの名無しさん
2009/05/29(金) 21:10:27ありがとうございます
相手(コマンドプロンプト)が終了しない限り、そのTextStreamは「Endがない」動作をするのですね
私のサンプルで停止していたのは、この「現在まだない次の行」を取得中で待機している、という事でしょうか
Exitを打たずともスマートな解決方法があるのではないかと思っていましたが、
簡単にはいかないようでその理由も大体把握できました
「Exec呼び出し先が動作中の時は、StdOutの最終行がAtEndOfStreamで検出できず、
またStdOut.Read系で現在の最終行を超えて読もうとしてもエラーも出ず新たな行が入るまで待機してしまう」
と言う事ですね。
サンプルまで付けて頂いて、アホでも理解しやすく配慮していただき助かりました
>>916 回避策ありがとうございます
なるほど、未知の最終行を読むこと自体を回避するのですね
番兵を置いているところで目から鱗でした!
これならコマンドプロンプトをExitさせずに逐次StdOutを監視できそうです
0918デフォルトの名無しさん
2009/06/07(日) 13:02:33何年か前の話です、バカでも使える簡単な言語を紹介してくれと知り合いに聞いたところ
「VBが良い、中学生でも扱える言語」といわれ家電量販店でVBを購入。
たしか「N88ベーシックと難易度は変わらない」とも言われました。N88ベーシックがなんなのか
よくわかりませんが似たようなベーシック言語は触ったことがあるのでVBもそんなものだと思って買いました
購入してそのまますっかり忘れて押入れの中に放置していたのですが、今日引っ張り出してきてインストール
しようとしたのです、するとIISとフロントベージと言うものがインストールされていないので
インストールできないとの表示が・・・
IISはアパッチのようなものだとしてフロントページが何なのか良くわかりません、調べてみると
ホームページビルダーのようなものらしいけどこれは買わないといけないのでしょうか?。
そもそも知り合いの説明がずいぶん間違っているようにしか思えないのですが。
昔のベーシックの難易度ってフォートランぐらいだったと思うのですが。
VBとやらはインストールの段階で知らない専門用語だらけです。
これはいったいどういうことなのでしょう?えらい人教えてください。
0919デフォルトの名無しさん
2009/06/07(日) 13:04:28OSのバージョンはWindows2000です
0920デフォルトの名無しさん
2009/06/07(日) 13:04:320921デフォルトの名無しさん
2009/06/07(日) 13:40:47ASP.netをやらないなら入れる必要なし
IISとFrontPage 2000 Server Extensionsを入れるなら
コントロールパネル→プログラムの追加と削除→Windowsコンポーネントの追加と削除
から、インストールが出来る
VB6スレだから、誘導が間違ってたんだろうけど
質問する場合は最初からバージョンは書いておいた方がいいよ
0922デフォルトの名無しさん
2009/06/08(月) 21:50:22てそもそも何のために導入しなきゃいけないんだ?
いまいちよくわからずに入れていたんだが気になってきた
0923デフォルトの名無しさん
2009/06/08(月) 21:59:25コンテンツを更新するのに必要なんじゃなかったかな。
0924デフォルトの名無しさん
2009/07/01(水) 06:15:34別のアプリAのウィンドウをデスクトップに表示
その上にVBのフォームを表示
その上に別のアプリBのウィンドウを表示
ここからアプリBを最小化すると、VBのフォームがアプリAの下に移ってしまいます。
ウィンドウが下に何枚あっても、自分の一つ下のウィンドウの下に移ります。そういう仕様なんでしょうか?
0925デフォルトの名無しさん
2009/07/02(木) 00:35:31ドキュメントに書いていないが 2k でも XP でも vista でも同一挙動ぽいから
仕様かバグ。
この固定ツールウィンドウの上部ウィンドウ最小化時の挙動と、
ピクチャボックス上にラベルがあると、ピクチャボックスクリック時に
直前フォーカスのオブジェクトの Validate が走行しなくなるのは、
バグだと思っている。
そういうものもあるとして、設計するしかない。
つーか、半角カナやめろ。
0926デフォルトの名無しさん
2009/07/02(木) 11:30:300927デフォルトの名無しさん
2009/07/02(木) 13:25:49_, ,_ パパーン
( ‘д‘)
⊂彡☆))Д´))Д´)>>924,926
マッタク モー。
0928デフォルトの名無しさん
2009/07/02(木) 13:48:38これは、「メールで半角カナを使うな」というところから広まった誤解だと思いますが、
「メールで半角カナを使えない」というのは日本語のメールの送受信に使われる
エンコーディングである ISO-2022-JP に JIS X 0201 Kana が含まれていないからです。
0929デフォルトの名無しさん
2009/07/02(木) 13:51:40生半可な知識ひけらかさないでね。
0930デフォルトの名無しさん
2009/07/02(木) 13:55:520931デフォルトの名無しさん
2009/07/02(木) 14:19:29そもそも「WEBで半角カナを使ってはいけない」ということはありませんよ。
完璧な記述と完璧なブラウザの組み合わせならね。
つか>>925はそういう意味ではないだろ。単に見ててキモイんだよw
使い方からして携帯なんだろな相手はと思うと慣例的にこうしちゃうだろうと思うが。
>>929
>だけど使えるよね
ワロタ
君の理屈はダメダメだねぃ・・・
0932デフォルトの名無しさん
2009/07/02(木) 14:30:330933デフォルトの名無しさん
2009/07/02(木) 14:46:06win2000で作成したアプリケーションをxpにインストールして実行したところ、
labelの文字が2段に表示されるようになってしまいました。
(フォントサイズが大きくなったような感じで、それまで1段に収まっていたのが
入りきらなくなってしまいました)
ただ、この現象が起きるのは全てというわけではなく、一部のxpのパソコンです。
(この現象が起きるパソコンは手元にありません)
開発環境はvb6.0(SP6)です。
開発環境と実行環境のOSの違いか、xpのフォントサイズ等の設定によるものなのか
原因がわかりません。
すみませんがよろしくお願いします。(もしかしたらスレ違いかも知れませんが)
0934デフォルトの名無しさん
2009/07/02(木) 14:47:440935デフォルトの名無しさん
2009/07/02(木) 14:53:01日本語版ランタイムちゃんと入れてないとか。
XP用に配布されたメイリオフォントでもインストールしててデフォになってるとか。
つかラベルのほうに直接明示的にフォント指定しとけば変わらないんじゃ?
0936デフォルトの名無しさん
2009/07/02(木) 14:53:480937デフォルトの名無しさん
2009/07/03(金) 00:31:59お前はいつの話してんだ・・・
Win2kからXPになって、フォントの横幅サイズが仕様変更になっただろ。
Microsoft のナレッジあたりで検索してみろ。
つーか、ちょっとやってみようと思って検索したら、
「xp フォント 仕様変更」で一番上に出るじゃねーかksg
http://msdn.microsoft.com/ja-jp/library/cc979401.aspx
まさにggrks
0938デフォルトの名無しさん
2009/07/03(金) 00:42:55って言ってるからその件とは違うと思ってたんだが・・・やっぱそれかもしらんねw
正直、固定ピッチフォントは使ってなかったからわかんねッス。
0939933
2009/07/03(金) 09:31:18ありがとうございました。
xpになってフォントの仕様変更があったことを知らなかったので、
色々検索したのですがわかりませんでした。
>>1を見て質問しましたが皆さんを不愉快にさせてしまったようで、
このスレで質問したのは不適切だったようです。
スレ汚しすみませんでした。
0940デフォルトの名無しさん
2009/07/03(金) 09:57:12いや別に汚れてないから
また今度誰かの質問に答えてあげて下さい
0941デフォルトの名無しさん
2009/07/03(金) 10:14:480942924
2009/07/03(金) 10:20:39細いタイトルバーがほしかっただけなんですが…
ツールウインドウってそもそもどういう目的で指定するものなんでしょう。
タイトルバーの太さとプロパティの初期値が若干変わることのほかに、なにか利点があるんでしょうか?
0943デフォルトの名無しさん
2009/07/03(金) 10:39:25マって? プログラ「マ」の略?w
>>942
俺も>>952を支持します。
目的も何も、ツールウインドウという名が意味そのものじゃないの?
元々単体で使うためじゃなく、メインのウインドウがいて
その横にフロートしたツールアイコンを用意するときに使うような。(例:PhotoShopなどのグラフィックソフト)
でそういう前提で動作してる上にバグで親ウインドウが最小化されたと勘違いして
自分を後ろに持っていったりしてるんじゃないの?
閉じる(終了)するときは自身が消えるんだからそういう処理しなくていいからすんなり消えるだけなんだと思うが。
0944デフォルトの名無しさん
2009/07/03(金) 10:49:24マンコの略でもある
0945デフォルトの名無しさん
2009/07/03(金) 10:52:190946デフォルトの名無しさん
2009/07/03(金) 14:39:320947デフォルトの名無しさん
2009/07/03(金) 17:27:510948924
2009/07/04(土) 06:52:55だとすると、もっとこう、親を明示的に指定して、ドッキング、フロートがプロパティで操作できたりとか、
あるいはそういうコントロールとして用意するとか、なんてしてくれたらいいのになぁと思う次第です…
どっちにしろSDIの設計で使うものではないようですね。
0949デフォルトの名無しさん
2009/07/11(土) 08:49:48ちなみに支援も帯に短したすきに長し。いらんことはするしやって欲しい事はしてくれないし。
なお俺はMDI用だと思ったことはない。どっちでも使うだろ。
0950デフォルトの名無しさん
2009/07/13(月) 12:53:00以下のようにHoge.Fooを宣言し、コード内でHoge.FOOと大文字で入力すると、
「Foo」と自動修正される事を期待しているわけですが、全く変わりません。
それどころか逆に宣言部分のFooがFOOになってしまい、「え?初めから大文字でしたよ?」状態。
狐につままれた様な奇妙な感覚に囚われましたw
宣言部以外に他の場所に書かれた表記もすべてが最後に書かれたものに修正されてしまいます。
うちだけなんでしょーか?
それともこの動作が仕様(という名のバグ)ですか?
Enum Hoge
Foo = 1
Bar = 2
End Enum
Private Sub nyoro()
Debug.Print Hoge.FOO '←大文字で入力
end Sub
↓宣言部のほうまで書き換わる↓
Enum Hoge
FOO = 1
Bar = 2
End Enum
0951デフォルトの名無しさん
2009/07/13(月) 19:00:25正確に言えば、大文字小文字が宣言側に固定され、入力側が追従するものに含まれていないだけの話
Enum Hoge
Foo = 1
の場合、FooはHogeのメンバ扱いだし
0952デフォルトの名無しさん
2009/07/13(月) 21:17:06次スレ立てておいた
話題が少なすぎて落ちそうなので、新スレに何か書き込んでくれ
生存確認でも乙でもいい
ま、本心としてはVB6自体がもういらない子になってもらいたいんだがね
0953デフォルトの名無しさん
2009/07/14(火) 00:11:38でもすいません。
何をおっしゃっているのかさっぱり理解できませんでした。
0954デフォルトの名無しさん
2009/07/14(火) 10:43:17>TypeとEnumが
Typeでは他の変数と同じ扱いのようで、宣言部分の表記が絶対のようです。
関数内などでこれを記述すると大文字は大文字、小文字は小文字に補正されてます。
TypeとEnumでは動作が異なりました。
もう一度考えてみましたが、
>正確に言えば、大文字小文字が宣言側に固定され、入力側が追従するものに含まれていないだけの話
やっぱりどういう意味かわかりません。
「表記が宣言によって固定され、入力側が
0955デフォルトの名無しさん
2009/07/14(火) 10:45:21「表記が宣言によって固定され、入力側は追従しない(宣言のものに修正される)」という意味にしかとれないのですが、
それだと話が分からない・・・。
メンバだし、と言われても「メンバだからできない」という意味でおっしゃってるんしょうか?
0956デフォルトの名無しさん
2009/07/23(木) 17:44:03どっかにないですか?(有償でも可)
Dhtmled.ocx の上部にフォントや色などのツールボックスが並んだ状態がいいです。
機能としてはワードパッド程度があれば十分なんですが。
(フォント名・サイズ・色くらい変更できればいい)
0957デフォルトの名無しさん
2009/07/23(木) 22:00:510958デフォルトの名無しさん
2009/07/24(金) 21:35:56Variant型のValueプロパティが必要なケースってあるかなぁ。
0959デフォルトの名無しさん
2009/07/25(土) 06:59:07名言集 その4
『俺、100人規模の集団サイバーテロの主犯だったこともあるんだぜ』
http://yutori7.2ch.net/test/read.cgi/news4vip/1249830540/ のID:PVAf+dux0 = 自動焼人 ★
> 965 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:02:09.35 ID:PVAf+dux0
> まぁ何だ。
> 俺の過去の経歴に比べたら、割れ厨なんて鼻くそレベルなんだけどなw
> 100人規模の集団サイバーテロの主犯とか、いろいろとな。
----------------------------------------------
この自動焼人 ★メールマガジンの配信停止をご希望される方は
http://qb5.2ch.net/test/read.cgi/sec2chd/1250169591/
にて自動焼人 ★までご連絡ください
0961デフォルトの名無しさん
2009/08/17(月) 20:16:530962デフォルトの名無しさん
2009/08/24(月) 12:45:480963名無し学生
2009/08/25(火) 10:46:07誰かお答えください。本当に助けてください。
1.Visual Basicの関数で数値を文字に直すCStr()とStr()の違いについて
2.戻り値の違いが確認できる方法を考え、戻り値の違いについて実際に確認し、
その確認方法と違いを具体的に述べよ。
注意:実際にやったことと、確認した違いを簡潔かつ具体的に書くこと。
3.下記の計算結果などから、Visual Basicで計算できる数値の桁数について考察をまとめ、
何故そのような制限があるかについて理由を答えよ
1) 48 x 100 - 81
2) 12 ÷ 9.3 x 247
3) 0.2 - 12 ÷ 69
4) -12 ÷ 100 + 100
0964デフォルトの名無しさん
2009/08/25(火) 11:40:20Str 関数は、ピリオド (.) だけを有効な小数点の記号として認識します。
国際対応のアプリケーションなどで、ピリオドと異なる小数点の記号が使われている場合は、
CStr 関数または Format 関数を使用して、数値を文字列に変換してください。
特定の文化圏における数値の文字表現を調べるには、
その数値の ToString(IFormatProvider) メソッドを使用します。
たとえば、Double 型の値を文字列に変換するには、 ToString を使用します。
0965デフォルトの名無しさん
2009/08/25(火) 12:20:310966デフォルトの名無しさん
2009/08/25(火) 17:32:170967デフォルトの名無しさん
2009/08/25(火) 17:43:4048x100-81とか
で、戻り値を見ればいいんじゃ?
そもそも、MSのページで、仕様を見ただけで答えが書いてあるぞ。
こんなもんも見つけられないようじゃ終わっとる
自分の頭で考えろ。いろいろやってみろ。
0968デフォルトの名無しさん
2009/08/25(火) 22:02:13まあがんばれ
0969デフォルトの名無しさん
2009/08/26(水) 10:26:18質問の書き方もレベルもおんなじようになるんかなあ。
毎回おんなじ人がマルチしてんじゃねぇかと錯覚するわ。
0970デフォルトの名無しさん
2009/08/26(水) 18:31:15…いまどき宿題でVB6なのかホントにw
>>964
IFormatProvider はどとねと
0971デフォルトの名無しさん
2009/08/26(水) 20:14:430972デフォルトの名無しさん
2009/08/27(木) 12:44:27> 注意:実際にやったことと、確認した違いを簡潔かつ具体的に書くこと。
仕様を当たり、msvbvm60 の逆汗によって検証した。
// それくらいのネタ回答を上げてくる学生って、いまどきどんくらいいるんだ?
// と煽る俺は、異業種。
0973デフォルトの名無しさん
2009/09/28(月) 20:48:070974デフォルトの名無しさん
2009/09/28(月) 21:07:23↓
フォントサイズの倍率を変えても
0975デフォルトの名無しさん
2009/09/30(水) 16:42:38VB6で、画面に絵を書いていてその上にウインドウがのっかっちゃってて絵がウインドウに隠れて見えない状態で
その画面の絵をピクチャーボックスに表示したいのですが
GetDCやGetWindowDCでその画面のハンドルを渡してBitBltで渡しても
そののっかっちゃってるウインドウがピクチャーボックスに描画されちゃうんです
これってなんとかして画面の絵を描画する方法ってないもんでしょうか?
0976デフォルトの名無しさん
2009/09/30(水) 19:14:16ドロップダウンコンボのリストの値設定についてです。
リストの値はソースコード以外からも設定できるのでしょうか。
オプション画面のような所から設定できるかもと思いましたが、
私が探した範囲ではそのような項目を見つけることが出来ませんでした。
0977デフォルトの名無しさん
2009/10/01(木) 01:51:38source のハンドルは正しいのか?
>>976
プロパティウィンドウ List プロパティ
割れ厨じゃないんだったらとりあえずMSDN読もうぜ
0978デフォルトの名無しさん
2009/10/08(木) 12:59:04いまいちどういう仕組みにしたらいいのか分りません。
「次へ」ボタンを押すと同一フォーム内で画面が切り替わり、情報の入力画面等
が遷移していくものです。
パネルを画面の数だけ作って、「次へ」ボタンで必要なパネルだけ表示して、他
のパネルを隠すといった
感じでいいのでしょうか?
0979デフォルトの名無しさん
2009/10/08(木) 14:37:390980デフォルトの名無しさん
2009/10/08(木) 15:46:53いいよ
0981デフォルトの名無しさん
2009/10/22(木) 18:31:41ACTIVEX DLLについて詳しく知らないので教えてください。
プロジェクトのプロパティにあるバージョンの互換性で3つありますが
なし は互換性は関係ないとして
プロジェクト互換とバイナリ互換は何がどう違うんでしょう?
元になるデータとの互換性と言われても何が何やら・・・
0982デフォルトの名無しさん
2009/10/22(木) 20:46:210983デフォルトの名無しさん
2009/10/22(木) 21:43:20ググルと結構解説してるところが見つかるじゃん・・・
0984デフォルトの名無しさん
2009/10/22(木) 21:44:480985981
2009/10/23(金) 09:04:48質問上げた後で解説見てやった感じ インターフェイスになる部分の変更を行うとバイナリ互換が取れなくなるということでしょうか?
変更も、追加側は良さそうですが削除する側に関しては参照するがわからメソッドやプロパティがなくなるので基本的にはNGということでしょうか?
0986デフォルトの名無しさん
2009/10/23(金) 14:36:44ダブルクリックすると、オートフィットしますが、
これをプログラムから行うにはどうすればいいのでしょうか?
0987デフォルトの名無しさん
2009/10/23(金) 14:58:20HDN_ITEMDBLCLICK
0988デフォルトの名無しさん
2009/10/23(金) 14:58:42http://pc12.2ch.net/test/read.cgi/tech/1247487156/
0989デフォルトの名無しさん
2009/10/23(金) 15:07:14それをどうすれば・・・
>>988
ありがとうございます。移動します。
0990デフォルトの名無しさん
2009/10/23(金) 15:27:000991デフォルトの名無しさん
2009/10/23(金) 15:30:52了解、スレを統合するのね。
埋めついでに続き。
>>985
ActiveXを使ってるプログラムを全部把握してて、
すべて再コンパイルできるなら互換性は考えなくてもいい。
開発途中のバージョンなら当然そうなる。
0992デフォルトの名無しさん
2009/10/23(金) 15:33:00VBプログラマ質問スレ(6.0以前) Part55
http://pc12.2ch.net/test/read.cgi/tech/1247487156/
0993デフォルトの名無しさん
2009/10/23(金) 15:44:240994デフォルトの名無しさん
2009/10/23(金) 15:48:12元になるDLLを指定しないと互換なしと同じ扱いになる。
元のバージョンのDLLは取っておかないといけない。
レス数が950を超えています。1000を超えると書き込みができなくなります。